<?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>215401</bug_id>
          
          <creation_ts>2020-08-11 16:12:18 -0700</creation_ts>
          <short_desc>[resultsdbpy] Move to Tools/Scripts/libraries</short_desc>
          <delta_ts>2020-08-12 09:31:01 -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>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jonathan Bedard">jbedard</reporter>
          <assigned_to name="Jonathan Bedard">jbedard</assigned_to>
          <cc>aakash_jain</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1679627</commentid>
    <comment_count>0</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-08-11 16:12:18 -0700</bug_when>
    <thetext>Since resultsdbpy is a pip package, we should move it to the location of our other Python libraries.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1679628</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-08-11 16:12:49 -0700</bug_when>
    <thetext>&lt;rdar://problem/66868387&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1679630</commentid>
    <comment_count>2</comment_count>
      <attachid>406430</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-08-11 16:14:42 -0700</bug_when>
    <thetext>Created attachment 406430
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1679645</commentid>
    <comment_count>3</comment_count>
      <attachid>406433</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-08-11 16:32:12 -0700</bug_when>
    <thetext>Created attachment 406433
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1679744</commentid>
    <comment_count>4</comment_count>
      <attachid>406433</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-08-12 09:30:53 -0700</bug_when>
    <thetext>Comment on attachment 406433
Patch

Landed: &lt;https://trac.webkit.org/changeset/265551&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>406430</attachid>
            <date>2020-08-11 16:14:42 -0700</date>
            <delta_ts>2020-08-11 16:32:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215401-20200811161440.patch</filename>
            <type>text/plain</type>
            <size>1247469</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI2NTUzMikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE0IEBACisyMDIwLTA4LTExICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBbcmVzdWx0c2RicHldIE1vdmUgdG8gVG9vbHMvU2NyaXB0cy9saWJyYXJp
ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNTQw
MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjY4NjgzODc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRz
ZGJweTogQ29waWVkIGZyb20gVG9vbHMvcmVzdWx0c2RicHkuCisgICAgICAgICogcmVzdWx0c2Ri
cHk6IFJlbW92ZWQuCisKIDIwMjAtMDgtMTEgIEtlaXRoIFJvbGxpbiAgPGtyb2xsaW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIFVwZGF0ZSBmaWx0ZXItYnVpbGQtd2Via2l0IGZvciB1bmtub3duL3Vu
aGFuZGxlZCBtZXNzYWdlcwpJbmRleDogVG9vbHMvcmVzdWx0c2RicHkvTUFOSUZFU1QuaW4KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvcmVzdWx0c2RicHkvTUFOSUZFU1QuaW4JKHJldmlzaW9uIDI2NTUz
MSkKKysrIFRvb2xzL3Jlc3VsdHNkYnB5L01BTklGRVNULmluCShub25leGlzdGVudCkKQEAgLTEg
KzAsMCBAQAotaW5jbHVkZSBSRUFETUUubWQKSW5kZXg6IFRvb2xzL3Jlc3VsdHNkYnB5L1JFQURN
RS5tZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9yZXN1bHRzZGJweS9SRUFETUUubWQJKHJldmlzaW9u
IDI2NTUzMSkKKysrIFRvb2xzL3Jlc3VsdHNkYnB5L1JFQURNRS5tZAkobm9uZXhpc3RlbnQpCkBA
IC0xLDc5ICswLDAgQEAKLSMgcmVzdWx0c2RicHkKLQotTGFyZ2UgcHJvamVjdHMgKGxpa2UgW1dl
YktpdF0oaHR0cHM6Ly93ZWJraXQub3JnKSkgb2Z0ZW4gaGF2ZSAxMCdzIG9mIHRob3VzYW5kcyBv
ZiB0ZXN0cyBydW5uaW5nIG9uIGRvemVucyBvZiBwbGF0Zm9ybXMuIE1ha2luZyBzZW5zZSBvZiBy
ZXN1bHRzIGZyb20gdGhlc2VzIHRlc3RzIGlzIGRpZmZpY3VsdC4gcmVzdWx0c2RicHkgYWltcyB0
byBtYWtlIHZpc3VhbGl6aW5nLCBwcm9jZXNzaW5nIGFuZCBzdG9yaW5nIHRob3NlIHJlc3VsdHMg
ZWFzaWVyLgotCi0jIyBSZXF1aXJlbWVudHMKLQotRm9yIGxvY2FsIHRlc3RpbmcgYW5kIGJhc2lj
IHByb3RvdHlwaW5nLCBub3RoaW5nIGlzIHJlcXVpcmVkLiBBbGwgZGF0YSBjYW4gYmUgbWFuYWdl
ZCBpbi1tZW1vcnkuIE5vdGUsIGhvd2V2ZXIsIHRoYXQgcnVubmluZyB0aGUgZGF0YWJhc2UgaW4g
dGhpcyBtb2RlIHdpbGwgbm90IHNhdmUgcmVzdWx0cyB0byBkaXNrLgotCi1JZiBsZXZlcmFnaW5n
IERvY2tlciwgUmVkaXMgYW5kIENhc3NhbmRyYSB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgaW5zdGFs
bGVkIGFuZCBjYW4gYmUgdXNlZCB0byBtYWtlIHJlc3VsdHMgbW9yZSBwZXJzaXN0ZW50LgotCi1G
b3IgcHJvZHVjdGlvbiBpbnN0YW5jZXMsIHRoZSBDYXNzYW5kcmEgYW5kIFJlZGlzIGluc3RhbmNl
cyBzaG91bGQgYmUgaG9zdGVkIHNlcGVyYXRseSBmcm9tIHRoZSB3ZWItYXBwLgotCi0KLSMjIFVz
YWdlCi0KLXJlc3VsdHNkYnB5IHJlcXVpcmVzIGZhaXJseSBleHRlbnNpdmUgY29uZmlndXJhdGlv
biBiZWZvcmUgYmVpbmcgdXNlZC4gQmVsb3cgaXMgYW4gZXhhbXBsZSBvZiBjb25maWd1cmluZyBy
ZXN1bHRzZGJweSBmb3IgdGVzdGluZyBhbmQgYmFzaWMgcHJvdG90eXBpbmcgZm9yIFdlYmtpdCwg
YWxvbmcgd2l0aCBzb21lIGNvbW1lbnRzIGV4cGxhaW5pbmcgdGhlIGVudmlyb25tZW50IHNldHVw
OgotCi1gYGAKLWltcG9ydCBvcwotCi1mcm9tIGZha2VyZWRpcyBpbXBvcnQgRmFrZVN0cmljdFJl
ZGlzCi1mcm9tIGZsYXNrIGltcG9ydCBGbGFzaywgcmVxdWVzdAotZnJvbSByZXN1bHRzZGJweS5j
b250cm9sbGVyLmFwaV9yb3V0ZXMgaW1wb3J0IEFQSVJvdXRlcwotZnJvbSByZXN1bHRzZGJweS5t
b2RlbC5tb2NrX2Nhc3NhbmRyYV9jb250ZXh0IGltcG9ydCBNb2NrQ2Fzc2FuZHJhQ29udGV4dAot
ZnJvbSByZXN1bHRzZGJweS5tb2RlbC5tb2RlbCBpbXBvcnQgTW9kZWwKLWZyb20gcmVzdWx0c2Ri
cHkubW9kZWwucmVwb3NpdG9yeSBpbXBvcnQgV2ViS2l0UmVwb3NpdG9yeQotZnJvbSByZXN1bHRz
ZGJweS52aWV3LnZpZXdfcm91dGVzIGltcG9ydCBWaWV3Um91dGVzCi0KLSMgQnkgZGVmYXVsdCwg
Q2Fzc2FuZHJhIGZvcmJpZHMgc2NoZW1hIG1hbmFnZW1lbnQKLW9zLmVudmlyb25bJ0NRTEVOR19B
TExPV19TQ0hFTUFfTUFOQUdFTUVOVCddID0gJzEnCi0KLSMgQW4gaW4tbWVtb3J5IENhc3NhbmRy
YSBkYXRhYmFzZSBmb3IgdGVzdGluZwotY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KAot
CW5vZGVzPVsnbG9jYWxob3N0J10sCi0Ja2V5c3BhY2U9J3Rlc3Rpbmcta2VzcGFjZScsCi0JY3Jl
YXRlX2tleXNwYWNlPVRydWUsCi0pCi0KLW1vZGVsID0gTW9kZWwoCi0JcmVkaXM9RmFrZVN0cmlj
dFJlZGlzKCksICAgICAgICAgICAgICAgICAjIEFuIGluLW1lbW9yeSBSZWRpcyBkYXRhYmFzZSBm
b3IgdGVzdGluZwotCWNhc3NhbmRyYT1jYXNzYW5kcmEsCi0JcmVwb3NpdG9yaWVzPVtXZWJLaXRS
ZXBvc2l0b3J5KCldLCAgICAgICAjIFRoaXMgc2hvdWxkIGJlIHJlcGxhY2VkIHdpdGggYSBjbGFz
cyBmb3IgeW91ciBwcm9qZWN0J3MgcmVwb3NpdG9yeQotCWRlZmF1bHRfdHRsX3NlY29uZHM9TW9k
ZWwuVFRMX1dFRUsgKiA0LCAgIyBSZXRhaW4gNCB3ZWVrcyBvZiByZXN1bHRzCi0JYXN5bmNfcHJv
Y2Vzc2luZz1GYWxzZSwgICAgICAgICAgICAgICAgICAjIFByb2Nlc3NpbmcgYXN5bmNocm9ub3Vz
bHkgcmVxdWlyZXMgaW5zdGFudGlhdGluZyB3b3JrZXIgcHJvY2Vzc2VzCi0pCi0KLWFwcCA9IEZs
YXNrKF9fbmFtZV9fKQotYXBpX3JvdXRlcyA9IEFQSVJvdXRlcyhtb2RlbD1tb2RlbCwgaW1wb3J0
X25hbWU9X19uYW1lX18pCi12aWV3X3JvdXRlcyA9IFZpZXdSb3V0ZXMoCi0gICAgdGl0bGU9J1dl
YktpdCBSZXN1bHRzIERhdGFiYXNlJywKLSAgICBtb2RlbD1tb2RlbCwgY29udHJvbGxlcj1hcGlf
cm91dGVzLCBpbXBvcnRfbmFtZT1fX25hbWVfXywKLSkKLQotCi1AYXBwLnJvdXRlKCcvX19oZWFs
dGgnLCBtZXRob2RzPSgnR0VUJywpKQotZGVmIGhlYWx0aCgpOgotICAgIHJldHVybiAnb2snCi0K
LQotQGFwcC5lcnJvcmhhbmRsZXIoNDA0KQotQGFwcC5lcnJvcmhhbmRsZXIoNDA1KQotZGVmIGhh
bmRsZV9lcnJvcnMoZXJyb3IpOgotICAgIGlmIHJlcXVlc3QucGF0aC5zdGFydHN3aXRoKCcvYXBp
LycpOgotICAgICAgICByZXR1cm4gYXBpX3JvdXRlcy5lcnJvcl9yZXNwb25zZShlcnJvcikKLSAg
ICByZXR1cm4gdmlld19yb3V0ZXMuZXJyb3IoZXJyb3I9ZXJyb3IpCi0KLQotYXBwLnJlZ2lzdGVy
X2JsdWVwcmludChhcGlfcm91dGVzKQotYXBwLnJlZ2lzdGVyX2JsdWVwcmludCh2aWV3X3JvdXRl
cykKLQotCi1kZWYgbWFpbigpOgotICAgIGFwcC5ydW4oaG9zdD0nMC4wLjAuMCcsIHBvcnQ9NTAw
MCkKLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIG1haW4oKQotCi1gYGAKSW5k
ZXg6IFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L19faW5pdF9fLnB5Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L19faW5pdF9fLnB5CShyZXZpc2lvbiAy
NjU1MzEpCisrKyBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9fX2luaXRfXy5weQkobm9u
ZXhpc3RlbnQpCkBAIC0xLDIzICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBh
cmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKLSMgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgot
IyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0jIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
Ci0jIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0jIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0KLW5hbWUgPSAncmVzdWx0c2RicHknCkluZGV4OiBUb29scy9yZXN1bHRzZGJweS9y
ZXN1bHRzZGJweS9jb250YWluZXIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvcmVzdWx0c2RicHkvcmVz
dWx0c2RicHkvY29udGFpbmVyCShyZXZpc2lvbiAyNjU1MzEpCisrKyBUb29scy9yZXN1bHRzZGJw
eS9yZXN1bHRzZGJweS9jb250YWluZXIJKG5vbmV4aXN0ZW50KQpAQCAtMSw3MyArMCwwIEBACi0j
IS91c3IvYmluL2VudiBweXRob24zCi0KLSMgQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUg
bWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKLSMgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotIyBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0jIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0j
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksCi0jIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0KLWltcG9ydCBhcmdwYXJzZQotaW1wb3J0IG9zCi1pbXBvcnQgc3lzCi1zeXMuZG9udF93
cml0ZV9ieXRlY29kZSA9IFRydWUKLQotZnJvbSBtb2RlbC5kb2NrZXIgaW1wb3J0IERvY2tlcgot
Ci0KLWRlZiBzdGFydCgpOgotICAgIERvY2tlci5zdGFydCgpCi0gICAgRG9ja2VyLnN0YXJ0X3By
b2plY3QoRG9ja2VyLkRFRkFVTFRfUFJPSkVDVCkKLSAgICByZXR1cm4gMAotCi0KLWRlZiBzdG9w
KCk6Ci0gICAgaWYgbm90IERvY2tlci5pc19ydW5uaW5nKCk6Ci0gICAgICAgIHByaW50KCdEb2Nr
ZXIgaXMgbm90IHJ1bm5pbmcnKQotICAgICAgICByZXR1cm4gMQotICAgIERvY2tlci5zdG9wX3By
b2plY3QoRG9ja2VyLkRFRkFVTFRfUFJPSkVDVCkKLSAgICBEb2NrZXIuc3RvcCgpCi0gICAgcmV0
dXJuIDAKLQotCi1kZWYgcmVzdGFydCgpOgotICAgIGlmIG5vdCBEb2NrZXIuaXNfcnVubmluZygp
OgotICAgICAgICBEb2NrZXIuc3RhcnQoKQotICAgIERvY2tlci5zdG9wX3Byb2plY3QoRG9ja2Vy
LkRFRkFVTFRfUFJPSkVDVCkKLSAgICBEb2NrZXIuc3RhcnRfcHJvamVjdChEb2NrZXIuREVGQVVM
VF9QUk9KRUNUKQotICAgIHJldHVybiAwCi0KLQotZGVmIG1haW4oKToKLSAgICBwYXJzZXIgPSBh
cmdwYXJzZS5Bcmd1bWVudFBhcnNlcihkZXNjcmlwdGlvbj0nTWFuYWdlIHJlc3VsdHNkYnB5IGNv
bnRhaW5lciBpbnN0YW5jZSBpbnNpZGUgRG9ja2VyJykKLSAgICBzdWJwYXJzZXJzID0gcGFyc2Vy
LmFkZF9zdWJwYXJzZXJzKGhlbHA9J3N1Yi1jb21tYW5kIGhlbHAnKQotCi0gICAgc3RhcnRfcGFy
c2VyID0gc3VicGFyc2Vycy5hZGRfcGFyc2VyKCdzdGFydCcsIGhlbHA9J1N0YXJ0IHRoZSBjb250
YWluZXIgaW5zaWRlIERvY2tlcicpCi0gICAgc3RhcnRfcGFyc2VyLnNldF9kZWZhdWx0cyhmdW5j
dGlvbj1zdGFydCkKLQotICAgIHN0YXJ0X3BhcnNlciA9IHN1YnBhcnNlcnMuYWRkX3BhcnNlcign
c3RvcCcsIGhlbHA9J1N0b3AgdGhlIGNvbnRhaW5lciBpbnNpZGUgRG9ja2VyJykKLSAgICBzdGFy
dF9wYXJzZXIuc2V0X2RlZmF1bHRzKGZ1bmN0aW9uPXN0b3ApCi0KLSAgICBzdGFydF9wYXJzZXIg
PSBzdWJwYXJzZXJzLmFkZF9wYXJzZXIoJ3Jlc3RhcnQnLCBoZWxwPSdSZXN0YXJ0IHRoZSBjb250
YWluZXIgaW5zaWRlIERvY2tlcicpCi0gICAgc3RhcnRfcGFyc2VyLnNldF9kZWZhdWx0cyhmdW5j
dGlvbj1yZXN0YXJ0KQotCi0gICAgcmV0dXJuIGdldGF0dHIocGFyc2VyLnBhcnNlX2FyZ3MoKSwg
J2Z1bmN0aW9uJywgbGFtYmRhOiBwYXJzZXIucHJpbnRfaGVscCgpKSgpCi0KLQotaWYgX19uYW1l
X18gPT0gJ19fbWFpbl9fJzoKLSAgICBzeXMuZXhpdChtYWluKCkpCgpQcm9wZXJ0eSBjaGFuZ2Vz
IG9uOiBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9jb250YWluZXIKX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpE
ZWxldGVkOiBzdm46ZXhlY3V0YWJsZQojIyAtMSArMCwwICMjCi0qClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgcHJvcGVydHkKSW5kZXg6IFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRy
b2xsZXIvX19pbml0X18ucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0
c2RicHkvY29udHJvbGxlci9fX2luaXRfXy5weQkocmV2aXNpb24gMjY1NTMxKQorKysgVG9vbHMv
cmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci9fX2luaXRfXy5weQkobm9uZXhpc3Rl
bnQpCkBAIC0xICswLDAgQEAKLSMgRE8gTk9USElORwpJbmRleDogVG9vbHMvcmVzdWx0c2RicHkv
cmVzdWx0c2RicHkvY29udHJvbGxlci9hcGlfcm91dGVzLnB5Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvYXBpX3JvdXRlcy5weQkocmV2aXNp
b24gMjY1NTMxKQorKysgVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci9h
cGlfcm91dGVzLnB5CShub25leGlzdGVudCkKQEAgLTEsOTUgKzAsMCBAQAotIyBDb3B5cmlnaHQg
KEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jCi0jIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SCi0jIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSMg
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIKLSMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSMgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotaW1wb3J0IHRyYWNlYmFjawotCi1mcm9tIGZsYXNr
IGltcG9ydCBhYm9ydCwganNvbmlmeQotZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVyLmFyY2hp
dmVfY29udHJvbGxlciBpbXBvcnQgQXJjaGl2ZUNvbnRyb2xsZXIKLWZyb20gcmVzdWx0c2RicHku
Y29udHJvbGxlci5jb21taXRfY29udHJvbGxlciBpbXBvcnQgQ29tbWl0Q29udHJvbGxlcgotZnJv
bSByZXN1bHRzZGJweS5jb250cm9sbGVyLmNpX2NvbnRyb2xsZXIgaW1wb3J0IENJQ29udHJvbGxl
cgotZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVyLmZhaWx1cmVfY29udHJvbGxlciBpbXBvcnQg
RmFpbHVyZUNvbnRyb2xsZXIKLWZyb20gcmVzdWx0c2RicHkuY29udHJvbGxlci5zdWl0ZV9jb250
cm9sbGVyIGltcG9ydCBTdWl0ZUNvbnRyb2xsZXIKLWZyb20gcmVzdWx0c2RicHkuY29udHJvbGxl
ci50ZXN0X2NvbnRyb2xsZXIgaW1wb3J0IFRlc3RDb250cm9sbGVyCi1mcm9tIHJlc3VsdHNkYnB5
LmNvbnRyb2xsZXIudXBsb2FkX2NvbnRyb2xsZXIgaW1wb3J0IFVwbG9hZENvbnRyb2xsZXIKLWZy
b20gcmVzdWx0c2RicHkuZmxhc2tfc3VwcG9ydC5hdXRoZWRfYmx1ZXByaW50IGltcG9ydCBBdXRo
ZWRCbHVlcHJpbnQKLWZyb20gd2Vya3pldWcuZXhjZXB0aW9ucyBpbXBvcnQgSFRUUEV4Y2VwdGlv
bgotCi0KLWNsYXNzIEFQSVJvdXRlcyhBdXRoZWRCbHVlcHJpbnQpOgotICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBtb2RlbCwgaW1wb3J0X25hbWU9X19uYW1lX18sIGF1dGhfZGVjb3JhdG9yPU5vbmUp
OgotICAgICAgICBzdXBlcihBUElSb3V0ZXMsIHNlbGYpLl9faW5pdF9fKCdjb250cm9sbGVyJywg
aW1wb3J0X25hbWUsIHVybF9wcmVmaXg9Jy9hcGknLCBhdXRoX2RlY29yYXRvcj1hdXRoX2RlY29y
YXRvcikKLQotICAgICAgICBzZWxmLmNvbW1pdF9jb250cm9sbGVyID0gQ29tbWl0Q29udHJvbGxl
cihjb21taXRfY29udGV4dD1tb2RlbC5jb21taXRfY29udGV4dCkKLSAgICAgICAgc2VsZi51cGxv
YWRfY29udHJvbGxlciA9IFVwbG9hZENvbnRyb2xsZXIoY29tbWl0X2NvbnRyb2xsZXI9c2VsZi5j
b21taXRfY29udHJvbGxlciwgdXBsb2FkX2NvbnRleHQ9bW9kZWwudXBsb2FkX2NvbnRleHQpCi0K
LSAgICAgICAgc2VsZi5zdWl0ZV9jb250cm9sbGVyID0gU3VpdGVDb250cm9sbGVyKHN1aXRlX2Nv
bnRleHQ9bW9kZWwuc3VpdGVfY29udGV4dCkKLSAgICAgICAgc2VsZi50ZXN0X2NvbnRyb2xsZXIg
PSBUZXN0Q29udHJvbGxlcih0ZXN0X2NvbnRleHQ9bW9kZWwudGVzdF9jb250ZXh0KQotICAgICAg
ICBzZWxmLmZhaWx1cmVfY29udHJvbGxlciA9IEZhaWx1cmVDb250cm9sbGVyKGZhaWx1cmVfY29u
dGV4dD1tb2RlbC5mYWlsdXJlX2NvbnRleHQpCi0KLSAgICAgICAgc2VsZi5jaV9jb250cm9sbGVy
ID0gQ0lDb250cm9sbGVyKGNpX2NvbnRleHQ9bW9kZWwuY2lfY29udGV4dCwgdXBsb2FkX2NvbnRl
eHQ9bW9kZWwudXBsb2FkX2NvbnRleHQpCi0gICAgICAgIHNlbGYuYXJjaGl2ZV9jb250cm9sbGVy
ID0gQXJjaGl2ZUNvbnRyb2xsZXIoY29tbWl0X2NvbnRyb2xsZXI9c2VsZi5jb21taXRfY29udHJv
bGxlciwgYXJjaGl2ZV9jb250ZXh0PW1vZGVsLmFyY2hpdmVfY29udGV4dCwgdXBsb2FkX2NvbnRl
eHQ9bW9kZWwudXBsb2FkX2NvbnRleHQpCi0KLSAgICAgICAgZm9yIGNvZGUgaW4gWzQwMCwgNDA0
LCA0MDVdOgotICAgICAgICAgICAgc2VsZi5yZWdpc3Rlcl9lcnJvcl9oYW5kbGVyKGNvZGUsIHNl
bGYuZXJyb3JfcmVzcG9uc2UpCi0gICAgICAgIHNlbGYucmVnaXN0ZXJfZXJyb3JfaGFuZGxlcig1
MDAsIHNlbGYucmVzcG9uc2VfNTAwKQotCi0gICAgICAgIHNlbGYuYWRkX3VybF9ydWxlKCcvY29t
bWl0cycsICdjb21taXRfY29udHJvbGxlcicsIHNlbGYuY29tbWl0X2NvbnRyb2xsZXIuZGVmYXVs
dCwgbWV0aG9kcz0oJ0dFVCcsICdQT1NUJykpCi0gICAgICAgIHNlbGYuYWRkX3VybF9ydWxlKCcv
Y29tbWl0cy9maW5kJywgJ2NvbW1pdF9jb250cm9sbGVyX2ZpbmQnLCBzZWxmLmNvbW1pdF9jb250
cm9sbGVyLmZpbmQsIG1ldGhvZHM9KCdHRVQnLCkpCi0gICAgICAgIHNlbGYuYWRkX3VybF9ydWxl
KCcvY29tbWl0cy9yZXBvc2l0b3JpZXMnLCAnY29tbWl0X2NvbnRyb2xsZXJfcmVwb3NpdG9yaWVz
Jywgc2VsZi5jb21taXRfY29udHJvbGxlci5yZXBvc2l0b3JpZXMsIG1ldGhvZHM9KCdHRVQnLCkp
Ci0gICAgICAgIHNlbGYuYWRkX3VybF9ydWxlKCcvY29tbWl0cy9icmFuY2hlcycsICdjb21taXRf
Y29udHJvbGxlcl9icmFuY2hlcycsICBzZWxmLmNvbW1pdF9jb250cm9sbGVyLmJyYW5jaGVzLCBt
ZXRob2RzPSgnR0VUJywpKQotICAgICAgICBzZWxmLmFkZF91cmxfcnVsZSgnL2NvbW1pdHMvc2li
bGluZ3MnLCAnY29tbWl0X2NvbnRyb2xsZXJfc2libGluZ3MnLCBzZWxmLmNvbW1pdF9jb250cm9s
bGVyLnNpYmxpbmdzLCBtZXRob2RzPSgnR0VUJywpKQotICAgICAgICBzZWxmLmFkZF91cmxfcnVs
ZSgnL2NvbW1pdHMvbmV4dCcsICdjb21taXRfY29udHJvbGxlcl9uZXh0Jywgc2VsZi5jb21taXRf
Y29udHJvbGxlci5uZXh0LCBtZXRob2RzPSgnR0VUJywpKQotICAgICAgICBzZWxmLmFkZF91cmxf
cnVsZSgnL2NvbW1pdHMvcHJldmlvdXMnLCAnY29tbWl0X2NvbnRyb2xsZXJfcHJldmlvdXMnLCBz
ZWxmLmNvbW1pdF9jb250cm9sbGVyLnByZXZpb3VzLCBtZXRob2RzPSgnR0VUJywpKQotICAgICAg
ICBzZWxmLmFkZF91cmxfcnVsZSgnL2NvbW1pdHMvcmVnaXN0ZXInLCAnY29tbWl0X2NvbnRyb2xs
ZXJfcmVnaXN0ZXInLCBzZWxmLmNvbW1pdF9jb250cm9sbGVyLnJlZ2lzdGVyLCBtZXRob2RzPSgn
UE9TVCcsKSkKLQotICAgICAgICBzZWxmLmFkZF91cmxfcnVsZSgnL3VwbG9hZCcsICd1cGxvYWQn
LCBzZWxmLnVwbG9hZF9jb250cm9sbGVyLnVwbG9hZCwgbWV0aG9kcz0oJ0dFVCcsICdQT1NUJykp
Ci0gICAgICAgIHNlbGYuYWRkX3VybF9ydWxlKCcvdXBsb2FkL2FyY2hpdmUnLCAndXBsb2FkX2Fy
Y2hpdmUnLCBzZWxmLmFyY2hpdmVfY29udHJvbGxlci5lbmRwb2ludCwgbWV0aG9kcz0oJ0dFVCcs
ICdQT1NUJykpCi0gICAgICAgIHNlbGYuYWRkX3VybF9ydWxlKCcvdXBsb2FkL3Byb2Nlc3MnLCAn
cHJvY2VzcycsIHNlbGYudXBsb2FkX2NvbnRyb2xsZXIucHJvY2VzcywgbWV0aG9kcz0oJ1BPU1Qn
LCkpCi0gICAgICAgIHNlbGYuYWRkX3VybF9ydWxlKCcvc3VpdGVzJywgJ3N1aXRlcycsIHNlbGYu
dXBsb2FkX2NvbnRyb2xsZXIuc3VpdGVzLCBtZXRob2RzPSgnR0VUJywpKQotICAgICAgICBzZWxm
LmFkZF91cmxfcnVsZSgnLzxwYXRoOnN1aXRlPi90ZXN0cycsICd0ZXN0cy1pbi1zdWl0ZScsIHNl
bGYudGVzdF9jb250cm9sbGVyLmxpc3RfdGVzdHMsIG1ldGhvZHM9KCdHRVQnLCkpCi0KLSAgICAg
ICAgc2VsZi5hZGRfdXJsX3J1bGUoJy9yZXN1bHRzLzxwYXRoOnN1aXRlPicsICdzdWl0ZS1yZXN1
bHRzJywgc2VsZi5zdWl0ZV9jb250cm9sbGVyLmZpbmRfcnVuX3Jlc3VsdHMsIG1ldGhvZHM9KCdH
RVQnLCkpCi0gICAgICAgIHNlbGYuYWRkX3VybF9ydWxlKCcvcmVzdWx0cy88cGF0aDpzdWl0ZT4v
PHBhdGg6dGVzdD4nLCAndGVzdC1yZXN1bHRzJywgc2VsZi50ZXN0X2NvbnRyb2xsZXIuZmluZF90
ZXN0X3Jlc3VsdCwgbWV0aG9kcz0oJ0dFVCcsKSkKLQotICAgICAgICBzZWxmLmFkZF91cmxfcnVs
ZSgnL2ZhaWx1cmVzLzxwYXRoOnN1aXRlPicsICdzdWl0ZS1mYWlsdXJlcycsIHNlbGYuZmFpbHVy
ZV9jb250cm9sbGVyLmZhaWx1cmVzLCBtZXRob2RzPSgnR0VUJywpKQotCi0gICAgICAgIHNlbGYu
YWRkX3VybF9ydWxlKCcvdXJscy9xdWV1ZScsICdxdWV1ZS11cmxzJywgc2VsZi5jaV9jb250cm9s
bGVyLnVybHNfZm9yX3F1ZXVlX2VuZHBvaW50LCBtZXRob2RzPSgnR0VUJywpKQotICAgICAgICBz
ZWxmLmFkZF91cmxfcnVsZSgnL3VybHMnLCAnYnVpbGQtdXJscycsIHNlbGYuY2lfY29udHJvbGxl
ci51cmxzX2Zvcl9idWlsZHNfZW5kcG9pbnQsIG1ldGhvZHM9KCdHRVQnLCkpCi0KLSAgICBkZWYg
ZXJyb3JfcmVzcG9uc2Uoc2VsZiwgZXJyb3IpOgotICAgICAgICByZXNwb25zZSA9IGpzb25pZnko
c3RhdHVzPSdlcnJvcicsIGVycm9yPWVycm9yLm5hbWUsIGRlc2NyaXB0aW9uPWVycm9yLmRlc2Ny
aXB0aW9uKQotICAgICAgICByZXNwb25zZS5zdGF0dXMgPSBmJ2Vycm9yLntlcnJvci5uYW1lfScK
LSAgICAgICAgcmVzcG9uc2Uuc3RhdHVzX2NvZGUgPSBlcnJvci5jb2RlCi0gICAgICAgIHJldHVy
biByZXNwb25zZQotCi0gICAgZGVmIHJlc3BvbnNlXzUwMChjbHMsIGVycm9yKToKLSAgICAgICAg
aWYgaXNpbnN0YW5jZShlcnJvciwgSFRUUEV4Y2VwdGlvbik6Ci0gICAgICAgICAgICBwcmludCh0
cmFjZWJhY2suZm9ybWF0X3N0YWNrKCkpCi0gICAgICAgICAgICByZXNwb25zZSA9IGpzb25pZnko
c3RhdHVzPSdlcnJvcicsIGVycm9yPWVycm9yLm5hbWUsIGRlc2NyaXB0aW9uPWVycm9yLmRlc2Ny
aXB0aW9uKQotICAgICAgICAgICAgcmVzcG9uc2Uuc3RhdHVzID0gZidlcnJvci57ZXJyb3IubmFt
ZX0nCi0gICAgICAgICAgICByZXNwb25zZS5zdGF0dXNfY29kZSA9IGVycm9yLmNvZGUKLSAgICAg
ICAgICAgIHJldHVybiByZXNwb25zZQotCi0gICAgICAgIHJlc3BvbnNlID0ganNvbmlmeShzdGF0
dXM9J2Vycm9yJywgZXJyb3I9J0ludGVybmFsIFNlcnZlciBFcnJvcicsIGRlc2NyaXB0aW9uPXN0
cihlcnJvcikpCi0gICAgICAgIHJlc3BvbnNlLnN0YXR1cyA9ICdlcnJvci5JbnRlcm5hbCBTZXJ2
ZXIgRXJyb3InCi0gICAgICAgIHJlc3BvbnNlLnN0YXR1c19jb2RlID0gNTAwCi0gICAgICAgIHJl
dHVybiByZXNwb25zZQpJbmRleDogVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJv
bGxlci9hcmNoaXZlX2NvbnRyb2xsZXIucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvcmVzdWx0c2Ri
cHkvcmVzdWx0c2RicHkvY29udHJvbGxlci9hcmNoaXZlX2NvbnRyb2xsZXIucHkJKHJldmlzaW9u
IDI2NTUzMSkKKysrIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvYXJj
aGl2ZV9jb250cm9sbGVyLnB5CShub25leGlzdGVudCkKQEAgLTEsMTI4ICswLDAgQEAKLSMgQ29w
eXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwot
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgIkFTIElTIiBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQotIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUgotIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SCi0jIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0jIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0jIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLWltcG9ydCBoYXNobGliCi1pbXBvcnQg
aW8KLWltcG9ydCBqc29uCi1pbXBvcnQgdGltZQotCi1mcm9tIGZsYXNrIGltcG9ydCBhYm9ydCwg
anNvbmlmeSwgcmVxdWVzdCwgc2VuZF9maWxlCi1mcm9tIHJlc3VsdHNkYnB5LmNvbnRyb2xsZXIu
Y29tbWl0IGltcG9ydCBDb21taXQKLWZyb20gcmVzdWx0c2RicHkuY29udHJvbGxlci5jb21taXRf
Y29udHJvbGxlciBpbXBvcnQgdXVpZF9yYW5nZV9mb3JfcXVlcnksIEhhc0NvbW1pdENvbnRleHQK
LWZyb20gcmVzdWx0c2RicHkuY29udHJvbGxlci5jb25maWd1cmF0aW9uIGltcG9ydCBDb25maWd1
cmF0aW9uCi1mcm9tIHJlc3VsdHNkYnB5LmNvbnRyb2xsZXIuY29uZmlndXJhdGlvbl9jb250cm9s
bGVyIGltcG9ydCBjb25maWd1cmF0aW9uX2Zvcl9xdWVyeQotZnJvbSByZXN1bHRzZGJweS5jb250
cm9sbGVyLnN1aXRlX2NvbnRyb2xsZXIgaW1wb3J0IHRpbWVfcmFuZ2VfZm9yX3F1ZXJ5Ci1mcm9t
IHJlc3VsdHNkYnB5LmZsYXNrX3N1cHBvcnQudXRpbCBpbXBvcnQgQXNzZXJ0UmVxdWVzdCwgcXVl
cnlfYXNfa3dhcmdzLCBsaW1pdF9mb3JfcXVlcnksIGJvb2xlYW5fcXVlcnkKLQotCi1jbGFzcyBB
cmNoaXZlQ29udHJvbGxlcihIYXNDb21taXRDb250ZXh0KToKLSAgICBkZWYgX19pbml0X18oc2Vs
ZiwgY29tbWl0X2NvbnRyb2xsZXIsIGFyY2hpdmVfY29udGV4dCwgdXBsb2FkX2NvbnRleHQpOgot
ICAgICAgICBzdXBlcihBcmNoaXZlQ29udHJvbGxlciwgc2VsZikuX19pbml0X18oY29tbWl0X2Nv
bnRyb2xsZXIuY29tbWl0X2NvbnRleHQpCi0gICAgICAgIHNlbGYuYXJjaGl2ZV9jb250ZXh0ID0g
YXJjaGl2ZV9jb250ZXh0Ci0gICAgICAgIHNlbGYuY29tbWl0X2NvbnRyb2xsZXIgPSBjb21taXRf
Y29udHJvbGxlcgotICAgICAgICBzZWxmLnVwbG9hZF9jb250ZXh0ID0gdXBsb2FkX2NvbnRleHQK
LQotICAgIGRlZiBlbmRwb2ludChzZWxmKToKLSAgICAgICAgaWYgcmVxdWVzdC5tZXRob2QgPT0g
J1BPU1QnOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYudXBsb2FkKCkKLSAgICAgICAgcmV0dXJu
IHNlbGYuZG93bmxvYWQoKQotCi0gICAgQHF1ZXJ5X2FzX2t3YXJncygpCi0gICAgQHV1aWRfcmFu
Z2VfZm9yX3F1ZXJ5KCkKLSAgICBAY29uZmlndXJhdGlvbl9mb3JfcXVlcnkoKQotICAgIEB0aW1l
X3JhbmdlX2Zvcl9xdWVyeSgpCi0gICAgZGVmIGRvd25sb2FkKAotICAgICAgICBzZWxmLCBzdWl0
ZT1Ob25lLCBjb25maWd1cmF0aW9ucz1Ob25lLCByZWNlbnQ9Tm9uZSwKLSAgICAgICAgYnJhbmNo
PU5vbmUsIGJlZ2luPU5vbmUsIGVuZD1Ob25lLAotICAgICAgICBiZWdpbl9xdWVyeV90aW1lPU5v
bmUsIGVuZF9xdWVyeV90aW1lPU5vbmUsICoqa3dhcmdzCi0gICAgKToKLSAgICAgICAgQXNzZXJ0
UmVxdWVzdC5pc190eXBlKFsnR0VUJ10pCi0gICAgICAgIEFzc2VydFJlcXVlc3QucXVlcnlfa3dh
cmdzX2VtcHR5KCoqa3dhcmdzKQotICAgICAgICByZWNlbnQgPSBib29sZWFuX3F1ZXJ5KCpyZWNl
bnQpWzBdIGlmIHJlY2VudCBlbHNlIFRydWUKLQotICAgICAgICBpZiBub3Qgc3VpdGU6Ci0gICAg
ICAgICAgICBzdWl0ZXMgPSBzZXQoKQotICAgICAgICAgICAgZm9yIGNvbmZpZ19zdWl0ZXMgaW4g
c2VsZi51cGxvYWRfY29udGV4dC5maW5kX3N1aXRlcyhjb25maWd1cmF0aW9ucz1jb25maWd1cmF0
aW9ucywgcmVjZW50PXJlY2VudCkudmFsdWVzKCk6Ci0gICAgICAgICAgICAgICAgW3N1aXRlcy5h
ZGQoc3VpdGUpIGZvciBzdWl0ZSBpbiBjb25maWdfc3VpdGVzXQotICAgICAgICBlbHNlOgotICAg
ICAgICAgICAgc3VpdGVzID0gc2V0KHN1aXRlKQotCi0gICAgICAgIHJlc3VsdCA9IE5vbmUKLSAg
ICAgICAgZmlsZW5hbWUgPSBOb25lCi0gICAgICAgIGRpZ2VzdCA9IE5vbmUKLSAgICAgICAgd2l0
aCBzZWxmLmFyY2hpdmVfY29udGV4dCwgc2VsZi51cGxvYWRfY29udGV4dDoKLSAgICAgICAgICAg
IGZvciBzdWl0ZSBpbiBzdWl0ZXM6Ci0gICAgICAgICAgICAgICAgZm9yIGNvbmZpZ3VyYXRpb24s
IGFyY2hpdmVzIGluIHNlbGYuYXJjaGl2ZV9jb250ZXh0LmZpbmRfYXJjaGl2ZSgKLSAgICAgICAg
ICAgICAgICAgICAgY29uZmlndXJhdGlvbnM9Y29uZmlndXJhdGlvbnMsIHN1aXRlPXN1aXRlLCBi
cmFuY2g9YnJhbmNoWzBdLAotICAgICAgICAgICAgICAgICAgICBiZWdpbj1iZWdpbiwgZW5kPWVu
ZCwgcmVjZW50PXJlY2VudCwgbGltaXQ9MiwKLSAgICAgICAgICAgICAgICAgICAgYmVnaW5fcXVl
cnlfdGltZT1iZWdpbl9xdWVyeV90aW1lLCBlbmRfcXVlcnlfdGltZT1lbmRfcXVlcnlfdGltZSwK
LSAgICAgICAgICAgICAgICApLml0ZW1zKCk6Ci0gICAgICAgICAgICAgICAgICAgIGZvciBhcmNo
aXZlIGluIGFyY2hpdmVzOgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgYXJjaGl2ZS5nZXQo
J2FyY2hpdmUnKSBhbmQgYXJjaGl2ZS5nZXQoJ2RpZ2VzdCcpOgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIGRpZ2VzdCBhbmQgZGlnZXN0ICE9IGFyY2hpdmUuZ2V0KCdkaWdlc3QnKToK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJvcnQoNDAwLCBkZXNjcmlwdGlvbj0n
TXVsdGlwbGUgYXJjaGl2ZXMgbWF0Y2hpbmcgdGhlIHNwZWNpZmllZCBjcml0ZXJpYScpCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gYXJjaGl2ZS5nZXQoJ2FyY2hpdmUnKQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gZid7Y29uZmlndXJhdGlvbn1A
e2FyY2hpdmVbInV1aWQiXX0nLnJlcGxhY2UoJyAnLCAnXycpLnJlcGxhY2UoJy4nLCAnLScpCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlnZXN0ID0gYXJjaGl2ZS5nZXQoJ2RpZ2VzdCcp
Ci0KLSAgICAgICAgaWYgbm90IHJlc3VsdDoKLSAgICAgICAgICAgIGFib3J0KDQwNCwgZGVzY3Jp
cHRpb249J05vIGFyY2hpdmVzIG1hdGNoaW5nIHRoZSBzcGVjaWZpZWQgY3JpdGVyaWEnKQotICAg
ICAgICByZXR1cm4gc2VuZF9maWxlKHJlc3VsdCwgYXR0YWNobWVudF9maWxlbmFtZT1mJ3tmaWxl
bmFtZX0uemlwJywgYXNfYXR0YWNobWVudD1UcnVlKQotCi0gICAgZGVmIHVwbG9hZChzZWxmKToK
LSAgICAgICAgQXNzZXJ0UmVxdWVzdC5pc190eXBlKFsnUE9TVCddKQotICAgICAgICBBc3NlcnRS
ZXF1ZXN0Lm5vX3F1ZXJ5KCkKLQotICAgICAgICB3aXRoIHNlbGYuYXJjaGl2ZV9jb250ZXh0Ogot
ICAgICAgICAgICAgaWYgJ2ZpbGUnIG5vdCBpbiByZXF1ZXN0LmZpbGVzOgotICAgICAgICAgICAg
ICAgIGFib3J0KDQwMCwgZGVzY3JpcHRpb249J05vIGFyY2hpdmUgcHJvdmlkZWQnKQotICAgICAg
ICAgICAgYXJjaGl2ZSA9IGlvLkJ5dGVzSU8ocmVxdWVzdC5maWxlc1snZmlsZSddLnJlYWQoKSkK
LQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGRhdGEgPSByZXF1ZXN0LmZvcm0g
b3IganNvbi5sb2FkcyhyZXF1ZXN0LmdldF9kYXRhKCkpCi0gICAgICAgICAgICBleGNlcHQgVmFs
dWVFcnJvcjoKLSAgICAgICAgICAgICAgICBhYm9ydCg0MDAsIGRlc2NyaXB0aW9uPSdFeHBlY3Rl
ZCBtZXRhLWRhdGEgdG8gYmUganNvbicpCi0KLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAg
ICAgICBjb25maWd1cmF0aW9uID0gQ29uZmlndXJhdGlvbi5mcm9tX2pzb24oZGF0YS5nZXQoJ2Nv
bmZpZ3VyYXRpb24nLCB7fSkpCi0gICAgICAgICAgICBleGNlcHQgKFZhbHVlRXJyb3IsIFR5cGVF
cnJvcikgYXMgZToKLSAgICAgICAgICAgICAgICBhYm9ydCg0MDAsIGRlc2NyaXB0aW9uPWYnSW52
YWxpZCBjb25maWd1cmF0aW9uLCBlcnJvcjoge2V9JykKLQotICAgICAgICAgICAgc3VpdGUgPSBk
YXRhLmdldCgnc3VpdGUnKQotICAgICAgICAgICAgaWYgbm90IHN1aXRlOgotICAgICAgICAgICAg
ICAgIGFib3J0KDQwMCwgZGVzY3JpcHRpb249J05vIHRlc3Qgc3VpdGUgc3BlY2lmaWVkJykKLQot
ICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGNvbW1pdHMgPSBbc2VsZi5jb21taXRf
Y29udHJvbGxlci5yZWdpc3Rlcihjb21taXQ9Y29tbWl0KSBmb3IgY29tbWl0IGluIGpzb24ubG9h
ZHMoZGF0YS5nZXQoJ2NvbW1pdHMnLCAnW10nKSldCi0gICAgICAgICAgICBleGNlcHQgVmFsdWVF
cnJvcjoKLSAgICAgICAgICAgICAgICBhYm9ydCg0MDAsIGRlc2NyaXB0aW9uPSdFeHBlY3RlZCBj
b21taXQgbWV0YS1kYXRhIHRvIGJlIGpzb24nKQotICAgICAgICAgICAgaWYgbm90IGNvbW1pdHM6
Ci0gICAgICAgICAgICAgICAgYWJvcnQoNDAwLCBkZXNjcmlwdGlvbj0nTm8gY29tbWl0cyBwcm92
aWRlZCcpCi0KLSAgICAgICAgICAgIHRpbWVzdGFtcCA9IGRhdGEuZ2V0KCd0aW1lc3RhbXAnLCB0
aW1lLnRpbWUoKSkKLQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHNlbGYuYXJj
aGl2ZV9jb250ZXh0LnJlZ2lzdGVyKGFyY2hpdmUsIGNvbmZpZ3VyYXRpb24sIGNvbW1pdHMsIHN1
aXRlLCB0aW1lc3RhbXApCi0gICAgICAgICAgICBleGNlcHQgKFR5cGVFcnJvciwgVmFsdWVFcnJv
cikgYXMgZXJyb3I6Ci0gICAgICAgICAgICAgICAgYWJvcnQoNDAwLCBkZXNjcmlwdGlvbj1zdHIo
ZXJyb3IpKQotCi0gICAgICAgIHJldHVybiBqc29uaWZ5KGRpY3Qoc3RhdHVzPSdvaycpKQpJbmRl
eDogVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci9hcmNoaXZlX2NvbnRy
b2xsZXJfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0
c2RicHkvY29udHJvbGxlci9hcmNoaXZlX2NvbnRyb2xsZXJfdW5pdHRlc3QucHkJKHJldmlzaW9u
IDI2NTUzMSkKKysrIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvYXJj
aGl2ZV9jb250cm9sbGVyX3VuaXR0ZXN0LnB5CShub25leGlzdGVudCkKQEAgLTEsMTYzICswLDAg
QEAKLSMgQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMg
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQotIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotIyBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SCi0jIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0jIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
Ci0jIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLWltcG9ydCBiYXNlNjQK
LWltcG9ydCBpbwotaW1wb3J0IGpzb24KLWltcG9ydCByZXF1ZXN0cwotCi1mcm9tIGZha2VyZWRp
cyBpbXBvcnQgRmFrZVN0cmljdFJlZGlzCi1mcm9tIHJlZGlzIGltcG9ydCBTdHJpY3RSZWRpcwot
ZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVyLmFwaV9yb3V0ZXMgaW1wb3J0IEFQSVJvdXRlcwot
ZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVyLmNvbW1pdCBpbXBvcnQgQ29tbWl0Ci1mcm9tIHJl
c3VsdHNkYnB5LmNvbnRyb2xsZXIuY29uZmlndXJhdGlvbiBpbXBvcnQgQ29uZmlndXJhdGlvbgot
ZnJvbSByZXN1bHRzZGJweS5mbGFza19zdXBwb3J0LmZsYXNrX3Rlc3RjYXNlIGltcG9ydCBGbGFz
a1Rlc3RDYXNlCi1mcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLmNhc3NhbmRyYV9jb250ZXh0IGltcG9y
dCBDYXNzYW5kcmFDb250ZXh0Ci1mcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLmNvbmZpZ3VyYXRpb25f
Y29udGV4dF91bml0dGVzdCBpbXBvcnQgQ29uZmlndXJhdGlvbkNvbnRleHRUZXN0Ci1mcm9tIHJl
c3VsdHNkYnB5Lm1vZGVsLm1vY2tfY2Fzc2FuZHJhX2NvbnRleHQgaW1wb3J0IE1vY2tDYXNzYW5k
cmFDb250ZXh0Ci1mcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLm1vY2tfbW9kZWxfZmFjdG9yeSBpbXBv
cnQgTW9ja01vZGVsRmFjdG9yeQotZnJvbSByZXN1bHRzZGJweS5tb2RlbC5tb2NrX3JlcG9zaXRv
cnkgaW1wb3J0IE1vY2tTdGFzaFJlcG9zaXRvcnksIE1vY2tTVk5SZXBvc2l0b3J5Ci1mcm9tIHJl
c3VsdHNkYnB5Lm1vZGVsLm1vZGVsIGltcG9ydCBNb2RlbAotZnJvbSByZXN1bHRzZGJweS5tb2Rl
bC53YWl0X2Zvcl9kb2NrZXJfdGVzdF9jYXNlIGltcG9ydCBXYWl0Rm9yRG9ja2VyVGVzdENhc2UK
LQotCi1jbGFzcyBBcmNoaXZlQ29udHJvbGxlclVuaXR0ZXN0KEZsYXNrVGVzdENhc2UsIFdhaXRG
b3JEb2NrZXJUZXN0Q2FzZSk6Ci0gICAgS0VZU1BBQ0UgPSAnYXJjaGl2ZV9jb250cm9sbGVyX3Rl
c3Rfa2V5c3BhY2UnCi0gICAgQVJDSElWRV9BUElfRU5EUE9JTlQgPSAnYXBpL3VwbG9hZC9hcmNo
aXZlJwotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHNldHVwX3dlYnNlcnZlcihjbHMsIGFw
cCwgcmVkaXM9U3RyaWN0UmVkaXMsIGNhc3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0KToKLSAgICAg
ICAgcmVkaXNfaW5zdGFuY2UgPSByZWRpcygpCi0gICAgICAgIHNhZmFyaSA9IE1vY2tTdGFzaFJl
cG9zaXRvcnkuc2FmYXJpKHJlZGlzX2luc3RhbmNlKQotICAgICAgICB3ZWJraXQgPSBNb2NrU1ZO
UmVwb3NpdG9yeS53ZWJraXQocmVkaXNfaW5zdGFuY2UpCi0KLSAgICAgICAgY2Fzc2FuZHJhLmRy
b3Bfa2V5c3BhY2Uoa2V5c3BhY2U9Y2xzLktFWVNQQUNFKQotICAgICAgICBjYXNzYW5kcmFfaW5z
dGFuY2UgPSBjYXNzYW5kcmEoa2V5c3BhY2U9Y2xzLktFWVNQQUNFLCBjcmVhdGVfa2V5c3BhY2U9
VHJ1ZSkKLQotICAgICAgICBhcHAucmVnaXN0ZXJfYmx1ZXByaW50KEFQSVJvdXRlcyhNb2RlbCgK
LSAgICAgICAgICAgIHJlZGlzPXJlZGlzX2luc3RhbmNlLAotICAgICAgICAgICAgY2Fzc2FuZHJh
PWNhc3NhbmRyYV9pbnN0YW5jZSwKLSAgICAgICAgICAgIHJlcG9zaXRvcmllcz1bc2FmYXJpLCB3
ZWJraXRdLAotICAgICAgICAgICAgZGVmYXVsdF90dGxfc2Vjb25kcz1Ob25lLAotICAgICAgICAg
ICAgYXJjaGl2ZV90dGxfc2Vjb25kcz1Ob25lLAotICAgICAgICApKSkKLQotICAgIEBjbGFzc21l
dGhvZAotICAgIGRlZiB1cGxvYWRfZmlsZShjbHMsIGNsaWVudCwgdXJsLCBtZXRhX2RhdGEsIGNv
bnRlbnQpOgotICAgICAgICAjIFVwbG9hZHMgd29yayBkaWZmZXJlbnRseSBpbiB0aGUgZmxhc2sg
Y2xpZW50IHRoYW4gaW4gcmVxdWVzdHMKLSAgICAgICAgaWYgY2xpZW50ID09IHJlcXVlc3RzOgot
ICAgICAgICAgICAgcmV0dXJuIGNsaWVudC5wb3N0KAotICAgICAgICAgICAgICAgIHVybCwKLSAg
ICAgICAgICAgICAgICBkYXRhPW1ldGFfZGF0YSwKLSAgICAgICAgICAgICAgICBmaWxlcz1kaWN0
KGZpbGU9Y29udGVudCksCi0gICAgICAgICAgICApCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAg
ICByZXR1cm4gY2xpZW50LnBvc3QoCi0gICAgICAgICAgICAgICAgdXJsLAotICAgICAgICAgICAg
ICAgIGRhdGE9ZGljdCgKLSAgICAgICAgICAgICAgICAgICAgZmlsZT0oaW8uQnl0ZXNJTyhjb250
ZW50KSwgJ2FyY2hpdmUuemlwJyksCi0gICAgICAgICAgICAgICAgICAgICoqbWV0YV9kYXRhCi0g
ICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgKQotCi0gICAgQFdhaXRGb3JEb2NrZXJUZXN0
Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19j
YXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCi0gICAgQEZsYXNrVGVzdENhc2UucnVuX3dp
dGhfd2Vic2VydmVyKCkKLSAgICBkZWYgdGVzdF9pbnZhbGlkX3VwbG9hZChzZWxmLCBjbGllbnQs
ICoqa3dhcmdzKToKLSAgICAgICAgdXBsb2FkX2NvbnRlbnQgPSAnYmFkIGRhdGEnLmVuY29kZSgn
YXNjaWknKQotICAgICAgICB1cGxvYWRfbWV0YSA9IGRpY3QoCi0gICAgICAgICAgICBjb25maWd1
cmF0aW9uPWpzb24uZHVtcHMoQ29uZmlndXJhdGlvbkNvbnRleHRUZXN0LkNPTkZJR1VSQVRJT05T
WzBdLCBjbHM9Q29uZmlndXJhdGlvbi5FbmNvZGVyKSwKLSAgICAgICAgICAgIHN1aXRlPSdsYXlv
dXQtdGVzdHMnLAotICAgICAgICAgICAgY29tbWl0cz1qc29uLmR1bXBzKFtNb2NrU3Rhc2hSZXBv
c2l0b3J5LnNhZmFyaSgpLmNvbW1pdF9mb3JfaWQoJ2JiNmJkYTVmJyksIE1vY2tTVk5SZXBvc2l0
b3J5LndlYmtpdCgpLmNvbW1pdF9mb3JfaWQoMjM2NTQyKV0sIGNscz1Db21taXQuRW5jb2Rlciks
Ci0gICAgICAgICkKLQotICAgICAgICByZXNwb25zZSA9IHNlbGYudXBsb2FkX2ZpbGUoY2xpZW50
LCBmJ3tzZWxmLlVSTH0ve3NlbGYuQVJDSElWRV9BUElfRU5EUE9JTlR9JywgdXBsb2FkX21ldGEs
IHVwbG9hZF9jb250ZW50KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLnN0YXR1
c19jb2RlLCA0MDApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2UuanNvbigpWydk
ZXNjcmlwdGlvbiddLCAnQXJjaGl2ZSBpcyBub3QgYSB6aXBmaWxlJykKLQotICAgICAgICByZXNw
b25zZSA9IGNsaWVudC5wb3N0KGYne3NlbGYuVVJMfS97c2VsZi5BUkNISVZFX0FQSV9FTkRQT0lO
VH0nLCBkYXRhPXN0cihqc29uLmR1bXBzKHVwbG9hZF9tZXRhKSkpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDQwMCkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChyZXNwb25zZS5qc29uKClbJ2Rlc2NyaXB0aW9uJ10sICdObyBhcmNoaXZlIHByb3ZpZGVk
JykKLQotICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19y
ZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0
KQotICAgIEBGbGFza1Rlc3RDYXNlLnJ1bl93aXRoX3dlYnNlcnZlcigpCi0gICAgZGVmIHRlc3Rf
dXBsb2FkX2FuZF9kb3dubG9hZChzZWxmLCBjbGllbnQsICoqa3dhcmdzKToKLSAgICAgICAgdXBs
b2FkX2NvbnRlbnQgPSBiYXNlNjQuYjY0ZGVjb2RlKE1vY2tNb2RlbEZhY3RvcnkuQVJDSElWRV9a
SVApCi0gICAgICAgIHVwbG9hZF9tZXRhID0gZGljdCgKLSAgICAgICAgICAgIGNvbmZpZ3VyYXRp
b249anNvbi5kdW1wcyhDb25maWd1cmF0aW9uQ29udGV4dFRlc3QuQ09ORklHVVJBVElPTlNbMF0s
IGNscz1Db25maWd1cmF0aW9uLkVuY29kZXIpLAotICAgICAgICAgICAgc3VpdGU9J2xheW91dC10
ZXN0cycsCi0gICAgICAgICAgICBjb21taXRzPWpzb24uZHVtcHMoW01vY2tTdGFzaFJlcG9zaXRv
cnkuc2FmYXJpKCkuY29tbWl0X2Zvcl9pZCgnYmI2YmRhNWYnKSwgTW9ja1NWTlJlcG9zaXRvcnku
d2Via2l0KCkuY29tbWl0X2Zvcl9pZCgyMzY1NDIpXSwgY2xzPUNvbW1pdC5FbmNvZGVyKSwKLSAg
ICAgICAgKQotCi0gICAgICAgIHJlc3BvbnNlID0gc2VsZi51cGxvYWRfZmlsZShjbGllbnQsIGYn
e3NlbGYuVVJMfS97c2VsZi5BUkNISVZFX0FQSV9FTkRQT0lOVH0nLCB1cGxvYWRfbWV0YSwgdXBs
b2FkX2NvbnRlbnQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2Uuc3RhdHVzX2Nv
ZGUsIDIwMCkKLQotICAgICAgICByZXNwb25zZSA9IGNsaWVudC5nZXQoZid7c2VsZi5VUkx9L3tz
ZWxmLkFSQ0hJVkVfQVBJX0VORFBPSU5UfScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVz
cG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25z
ZS5jb250ZW50LCBiYXNlNjQuYjY0ZGVjb2RlKE1vY2tNb2RlbEZhY3RvcnkuQVJDSElWRV9aSVAp
KQotCi0gICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3Jl
ZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQp
Ci0gICAgQEZsYXNrVGVzdENhc2UucnVuX3dpdGhfd2Vic2VydmVyKCkKLSAgICBkZWYgdGVzdF9u
b19hcmNoaXZlX2F2YWlsYWJsZShzZWxmLCBjbGllbnQsICoqa3dhcmdzKToKLSAgICAgICAgcmVz
cG9uc2UgPSBjbGllbnQuZ2V0KGYne3NlbGYuVVJMfS97c2VsZi5BUkNISVZFX0FQSV9FTkRQT0lO
VH0nKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLnN0YXR1c19jb2RlLCA0MDQp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2UuanNvbigpWydkZXNjcmlwdGlvbidd
LCAnTm8gYXJjaGl2ZXMgbWF0Y2hpbmcgdGhlIHNwZWNpZmllZCBjcml0ZXJpYScpCi0KLSAgICBA
V2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0
cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKLSAgICBARmxh
c2tUZXN0Q2FzZS5ydW5fd2l0aF93ZWJzZXJ2ZXIoKQotICAgIGRlZiB0ZXN0X2ludmFsaWRfbWV0
YWRhdGEoc2VsZiwgY2xpZW50LCAqKmt3YXJncyk6Ci0gICAgICAgIHVwbG9hZF9jb250ZW50ID0g
YmFzZTY0LmI2NGRlY29kZShNb2NrTW9kZWxGYWN0b3J5LkFSQ0hJVkVfWklQKQotICAgICAgICBy
ZXNwb25zZSA9IHNlbGYudXBsb2FkX2ZpbGUoY2xpZW50LCBmJ3tzZWxmLlVSTH0ve3NlbGYuQVJD
SElWRV9BUElfRU5EUE9JTlR9JywgZGljdCgKLSAgICAgICAgICAgIGNvbmZpZ3VyYXRpb249anNv
bi5kdW1wcyhDb25maWd1cmF0aW9uQ29udGV4dFRlc3QuQ09ORklHVVJBVElPTlNbMF0sIGNscz1D
b25maWd1cmF0aW9uLkVuY29kZXIpLAotICAgICAgICAgICAgY29tbWl0cz1qc29uLmR1bXBzKFtN
b2NrU3Rhc2hSZXBvc2l0b3J5LnNhZmFyaSgpLmNvbW1pdF9mb3JfaWQoJ2JiNmJkYTVmJyksIE1v
Y2tTVk5SZXBvc2l0b3J5LndlYmtpdCgpLmNvbW1pdF9mb3JfaWQoMjM2NTQyKV0sIGNscz1Db21t
aXQuRW5jb2RlciksCi0gICAgICAgICksIHVwbG9hZF9jb250ZW50KQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHJlc3BvbnNlLnN0YXR1c19jb2RlLCA0MDApCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwocmVzcG9uc2UuanNvbigpWydkZXNjcmlwdGlvbiddLCAnTm8gdGVzdCBzdWl0ZSBzcGVj
aWZpZWQnKQotCi0gICAgICAgIHJlc3BvbnNlID0gc2VsZi51cGxvYWRfZmlsZShjbGllbnQsIGYn
e3NlbGYuVVJMfS97c2VsZi5BUkNISVZFX0FQSV9FTkRQT0lOVH0nLCBkaWN0KAotICAgICAgICAg
ICAgc3VpdGU9J2xheW91dC10ZXN0cycsCi0gICAgICAgICAgICBjb21taXRzPWpzb24uZHVtcHMo
W01vY2tTdGFzaFJlcG9zaXRvcnkuc2FmYXJpKCkuY29tbWl0X2Zvcl9pZCgnYmI2YmRhNWYnKSwg
TW9ja1NWTlJlcG9zaXRvcnkud2Via2l0KCkuY29tbWl0X2Zvcl9pZCgyMzY1NDIpXSwgY2xzPUNv
bW1pdC5FbmNvZGVyKSwKLSAgICAgICAgKSwgdXBsb2FkX2NvbnRlbnQpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDQwMCkKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChyZXNwb25zZS5qc29uKClbJ2Rlc2NyaXB0aW9uJ10sICdDYW5ub3QgcmVnaXN0ZXIg
YSBwYXJ0aWFsIGNvbmZpZ3VyYXRpb24nKQotCi0gICAgICAgIHJlc3BvbnNlID0gc2VsZi51cGxv
YWRfZmlsZShjbGllbnQsIGYne3NlbGYuVVJMfS97c2VsZi5BUkNISVZFX0FQSV9FTkRQT0lOVH0n
LCBkaWN0KAotICAgICAgICAgICAgY29uZmlndXJhdGlvbj1qc29uLmR1bXBzKENvbmZpZ3VyYXRp
b25Db250ZXh0VGVzdC5DT05GSUdVUkFUSU9OU1swXSwgY2xzPUNvbmZpZ3VyYXRpb24uRW5jb2Rl
ciksCi0gICAgICAgICAgICBzdWl0ZT0nbGF5b3V0LXRlc3RzJywKLSAgICAgICAgKSwgdXBsb2Fk
X2NvbnRlbnQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2Uuc3RhdHVzX2NvZGUs
IDQwMCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5qc29uKClbJ2Rlc2NyaXB0
aW9uJ10sICdObyBjb21taXRzIHByb3ZpZGVkJykKLQotICAgICAgICByZXNwb25zZSA9IHNlbGYu
dXBsb2FkX2ZpbGUoY2xpZW50LCBmJ3tzZWxmLlVSTH0ve3NlbGYuQVJDSElWRV9BUElfRU5EUE9J
TlR9JywgZGljdCgKLSAgICAgICAgICAgIGNvbmZpZ3VyYXRpb249J0ludmFsaWQgbWV0YS1kYXRh
JywKLSAgICAgICAgICAgIHN1aXRlPSdsYXlvdXQtdGVzdHMnLAotICAgICAgICAgICAgY29tbWl0
cz1qc29uLmR1bXBzKFtNb2NrU3Rhc2hSZXBvc2l0b3J5LnNhZmFyaSgpLmNvbW1pdF9mb3JfaWQo
J2JiNmJkYTVmJyksIE1vY2tTVk5SZXBvc2l0b3J5LndlYmtpdCgpLmNvbW1pdF9mb3JfaWQoMjM2
NTQyKV0sIGNscz1Db21taXQuRW5jb2RlciksCi0gICAgICAgICksIHVwbG9hZF9jb250ZW50KQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLnN0YXR1c19jb2RlLCA0MDApCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2UuanNvbigpWydkZXNjcmlwdGlvbiddLCAnSW52
YWxpZCBjb25maWd1cmF0aW9uLCBlcnJvcjogRXhwZWN0aW5nIHZhbHVlOiBsaW5lIDEgY29sdW1u
IDEgKGNoYXIgMCknKQotCi0gICAgICAgIHJlc3BvbnNlID0gc2VsZi51cGxvYWRfZmlsZShjbGll
bnQsIGYne3NlbGYuVVJMfS97c2VsZi5BUkNISVZFX0FQSV9FTkRQT0lOVH0nLCBkaWN0KAotICAg
ICAgICAgICAgY29uZmlndXJhdGlvbj1qc29uLmR1bXBzKENvbmZpZ3VyYXRpb25Db250ZXh0VGVz
dC5DT05GSUdVUkFUSU9OU1swXSwgY2xzPUNvbmZpZ3VyYXRpb24uRW5jb2RlciksCi0gICAgICAg
ICAgICBzdWl0ZT0nbGF5b3V0LXRlc3RzJywKLSAgICAgICAgICAgIGNvbW1pdHM9J0ludmFsaWQg
bWV0YS1kYXRhJywKLSAgICAgICAgKSwgdXBsb2FkX2NvbnRlbnQpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDQwMCkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChyZXNwb25zZS5qc29uKClbJ2Rlc2NyaXB0aW9uJ10sICdFeHBlY3RlZCBjb21taXQgbWV0
YS1kYXRhIHRvIGJlIGpzb24nKQpJbmRleDogVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkv
Y29udHJvbGxlci9jaV9jb250cm9sbGVyLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL3Jlc3VsdHNk
YnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvY2lfY29udHJvbGxlci5weQkocmV2aXNpb24gMjY1
NTMxKQorKysgVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci9jaV9jb250
cm9sbGVyLnB5CShub25leGlzdGVudCkKQEAgLTEsMTQwICswLDAgQEAKLSMgQ29weXJpZ2h0IChD
KSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0j
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUgotIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0jIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSCi0jIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0jIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLWZyb20gZmxhc2sgaW1wb3J0IGFib3J0LCBqc29uaWZ5
Ci1mcm9tIHJlc3VsdHNkYnB5LmNvbnRyb2xsZXIuY29tbWl0X2NvbnRyb2xsZXIgaW1wb3J0IHV1
aWRfcmFuZ2VfZm9yX3F1ZXJ5LCBIYXNDb21taXRDb250ZXh0Ci1mcm9tIHJlc3VsdHNkYnB5LmNv
bnRyb2xsZXIuY29uZmlndXJhdGlvbiBpbXBvcnQgQ29uZmlndXJhdGlvbgotZnJvbSByZXN1bHRz
ZGJweS5jb250cm9sbGVyLmNvbmZpZ3VyYXRpb25fY29udHJvbGxlciBpbXBvcnQgY29uZmlndXJh
dGlvbl9mb3JfcXVlcnkKLWZyb20gcmVzdWx0c2RicHkuY29udHJvbGxlci5zdWl0ZV9jb250cm9s
bGVyIGltcG9ydCB0aW1lX3JhbmdlX2Zvcl9xdWVyeQotZnJvbSByZXN1bHRzZGJweS5mbGFza19z
dXBwb3J0LnV0aWwgaW1wb3J0IEFzc2VydFJlcXVlc3QsIHF1ZXJ5X2FzX2t3YXJncywgbGltaXRf
Zm9yX3F1ZXJ5LCBib29sZWFuX3F1ZXJ5Ci0KLQotY2xhc3MgQ0lDb250cm9sbGVyKEhhc0NvbW1p
dENvbnRleHQpOgotICAgIERFRkFVTFRfUVVFUllfTElNSVQgPSAxMDAKLQotICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBjaV9jb250ZXh0LCB1cGxvYWRfY29udGV4dCk6Ci0gICAgICAgIHN1cGVyKENJ
Q29udHJvbGxlciwgc2VsZikuX19pbml0X18oY2lfY29udGV4dC5jb21taXRfY29udGV4dCkKLSAg
ICAgICAgc2VsZi5jaV9jb250ZXh0ID0gY2lfY29udGV4dAotICAgICAgICBzZWxmLnVwbG9hZF9j
b250ZXh0ID0gdXBsb2FkX2NvbnRleHQKLQotICAgIGRlZiBfc3VpdGVzX2Zvcl9xdWVyeV9hcmd1
bWVudHMoc2VsZiwgc3VpdGU9Tm9uZSwgY29uZmlndXJhdGlvbnM9Tm9uZSwgaXNfcmVjZW50PVRy
dWUpOgotICAgICAgICAjIFRoZSB1c2VyIG1heSBoYXZlIHNwZWNpZmllZCBhIHNldCBvZiBzdWl0
ZXMgdG8gc2VhcmNoIGJ5LCBvciB3ZSBuZWVkIHRvIGRldGVybWluZSB0aGUKLSAgICAgICAgIyBz
dWl0ZXMgYmFzZWQgb24gdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbi4KLSAgICAgICAgaWYgc3Vp
dGU6Ci0gICAgICAgICAgICByZXR1cm4gc3VpdGUKLQotICAgICAgICB3aXRoIHNlbGYudXBsb2Fk
X2NvbnRleHQ6Ci0gICAgICAgICAgICBzdWl0ZXMgPSBzZXQoKQotICAgICAgICAgICAgIyBSZXR1
cm5zIGEgZGljdGlvbmFyeSB3aGVyZSB0aGUga2V5cyBhcmUgY29uZmlndXJhdGlvbiBvYmplY3Rz
IGFuZCB0aGUgdmFsdWVzIGFyZSBzdHJpbmdzCi0gICAgICAgICAgICAjIHJlcHJlc2VudGluZyBz
dWl0ZXMgYXNzb2NpYXRlZCB3aXRoIHRoYXQgY29uZmlndXJhdGlvbi4KLSAgICAgICAgICAgIGZv
ciBjYW5kaWRhdGVfc3VpdGVzIGluIHNlbGYudXBsb2FkX2NvbnRleHQuZmluZF9zdWl0ZXMoY29u
ZmlndXJhdGlvbnM9Y29uZmlndXJhdGlvbnMsIHJlY2VudD1pc19yZWNlbnQpLnZhbHVlcygpOgot
ICAgICAgICAgICAgICAgIGZvciBjYW5kaWRhdGUgaW4gY2FuZGlkYXRlX3N1aXRlczoKLSAgICAg
ICAgICAgICAgICAgICAgc3VpdGVzLmFkZChjYW5kaWRhdGUpCi0KLSAgICAgICAgICAgIHJldHVy
biBzb3J0ZWQoc3VpdGVzKQotCi0gICAgQGxpbWl0X2Zvcl9xdWVyeShERUZBVUxUX1FVRVJZX0xJ
TUlUKQotICAgIEBjb25maWd1cmF0aW9uX2Zvcl9xdWVyeSgpCi0gICAgZGVmIHVybHNfZm9yX3F1
ZXVlKHNlbGYsIHN1aXRlPU5vbmUsIGJyYW5jaD1Ob25lLCBjb25maWd1cmF0aW9ucz1Ob25lLCBy
ZWNlbnQ9Tm9uZSwgbGltaXQ9Tm9uZSwgKiprd2FyZ3MpOgotICAgICAgICBBc3NlcnRSZXF1ZXN0
LmlzX3R5cGUoWydHRVQnXSkKLSAgICAgICAgQXNzZXJ0UmVxdWVzdC5xdWVyeV9rd2FyZ3NfZW1w
dHkoKiprd2FyZ3MpCi0KLSAgICAgICAgaXNfcmVjZW50ID0gVHJ1ZQotICAgICAgICBpZiByZWNl
bnQ6Ci0gICAgICAgICAgICBpc19yZWNlbnQgPSBib29sZWFuX3F1ZXJ5KCpyZWNlbnQpWzBdCi0K
LSAgICAgICAgd2l0aCBzZWxmLmNpX2NvbnRleHQsIHNlbGYudXBsb2FkX2NvbnRleHQ6Ci0gICAg
ICAgICAgICBzdWl0ZXMgPSBzZWxmLl9zdWl0ZXNfZm9yX3F1ZXJ5X2FyZ3VtZW50cyhzdWl0ZT1z
dWl0ZSwgY29uZmlndXJhdGlvbnM9Y29uZmlndXJhdGlvbnMsIGlzX3JlY2VudD1pc19yZWNlbnQp
Ci0gICAgICAgICAgICBpZiBub3QgYnJhbmNoOgotICAgICAgICAgICAgICAgIGJyYW5jaCA9IFtO
b25lXQotCi0gICAgICAgICAgICByZXN1bHRzID0gW10KLSAgICAgICAgICAgIGZvciBzdWl0ZSBp
biBzdWl0ZXM6Ci0gICAgICAgICAgICAgICAgZm9yIGNvbmZpZywgdXJsIGluIHNlbGYuY2lfY29u
dGV4dC5maW5kX3VybHNfYnlfcXVldWUoCi0gICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRp
b25zPWNvbmZpZ3VyYXRpb25zLCByZWNlbnQ9aXNfcmVjZW50LAotICAgICAgICAgICAgICAgICAg
ICBicmFuY2g9YnJhbmNoWzBdLCBzdWl0ZT1zdWl0ZSwgbGltaXQ9bGltaXQsCi0gICAgICAgICAg
ICAgICAgKS5pdGVtcygpOgotICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uX2RpY3Qg
PSBDb25maWd1cmF0aW9uLkVuY29kZXIoKS5kZWZhdWx0KGNvbmZpZykKLSAgICAgICAgICAgICAg
ICAgICAgY29uZmlndXJhdGlvbl9kaWN0WydzdWl0ZSddID0gc3VpdGUKLSAgICAgICAgICAgICAg
ICAgICAgcmVzdWx0cy5hcHBlbmQoZGljdChjb25maWd1cmF0aW9uPWNvbmZpZ3VyYXRpb25fZGlj
dCwgdXJsPXVybCkpCi0KLSAgICAgICAgICAgIHJldHVybiByZXN1bHRzCi0KLSAgICBAdXVpZF9y
YW5nZV9mb3JfcXVlcnkoKQotICAgIEBsaW1pdF9mb3JfcXVlcnkoREVGQVVMVF9RVUVSWV9MSU1J
VCkKLSAgICBAY29uZmlndXJhdGlvbl9mb3JfcXVlcnkoKQotICAgIEB0aW1lX3JhbmdlX2Zvcl9x
dWVyeSgpCi0gICAgZGVmIHVybHNfZm9yX2J1aWxkcygKLSAgICAgICAgc2VsZiwgc3VpdGU9Tm9u
ZSwKLSAgICAgICAgY29uZmlndXJhdGlvbnM9Tm9uZSwgcmVjZW50PU5vbmUsCi0gICAgICAgIGJy
YW5jaD1Ob25lLCBiZWdpbj1Ob25lLCBlbmQ9Tm9uZSwKLSAgICAgICAgYmVnaW5fcXVlcnlfdGlt
ZT1Ob25lLCBlbmRfcXVlcnlfdGltZT1Ob25lLAotICAgICAgICBsaW1pdD1Ob25lLCAqKmt3YXJn
cwotICAgICk6Ci0gICAgICAgIEFzc2VydFJlcXVlc3QuaXNfdHlwZShbJ0dFVCddKQotICAgICAg
ICBBc3NlcnRSZXF1ZXN0LnF1ZXJ5X2t3YXJnc19lbXB0eSgqKmt3YXJncykKLQotICAgICAgICBp
c19yZWNlbnQgPSBUcnVlCi0gICAgICAgIGlmIHJlY2VudDoKLSAgICAgICAgICAgIGlzX3JlY2Vu
dCA9IGJvb2xlYW5fcXVlcnkoKnJlY2VudClbMF0KLQotICAgICAgICB3aXRoIHNlbGYuY2lfY29u
dGV4dCwgc2VsZi51cGxvYWRfY29udGV4dDoKLSAgICAgICAgICAgIHN1aXRlcyA9IHNlbGYuX3N1
aXRlc19mb3JfcXVlcnlfYXJndW1lbnRzKHN1aXRlPXN1aXRlLCBjb25maWd1cmF0aW9ucz1jb25m
aWd1cmF0aW9ucywgaXNfcmVjZW50PWlzX3JlY2VudCkKLSAgICAgICAgICAgIGlmIG5vdCBicmFu
Y2g6Ci0gICAgICAgICAgICAgICAgYnJhbmNoID0gW05vbmVdCi0KLSAgICAgICAgICAgIHF1ZXJ5
X2RpY3QgPSBkaWN0KAotICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25zPWNvbmZpZ3VyYXRp
b25zLCByZWNlbnQ9aXNfcmVjZW50LAotICAgICAgICAgICAgICAgIGJyYW5jaD1icmFuY2hbMF0s
IGJlZ2luPWJlZ2luLCBlbmQ9ZW5kLAotICAgICAgICAgICAgICAgIGJlZ2luX3F1ZXJ5X3RpbWU9
YmVnaW5fcXVlcnlfdGltZSwgZW5kX3F1ZXJ5X3RpbWU9ZW5kX3F1ZXJ5X3RpbWUsCi0gICAgICAg
ICAgICAgICAgbGltaXQ9bGltaXQsCi0gICAgICAgICAgICApCi0gICAgICAgICAgICBudW1fdXVp
ZF9xdWVyeV9hcmdzID0gc3VtKFsxIGlmIGVsZW1lbnQgZWxzZSAwIGZvciBlbGVtZW50IGluIFti
ZWdpbiwgZW5kXV0pCi0gICAgICAgICAgICBudW1fdGltZXN0YW1wX3F1ZXJ5X2FyZ3MgPSBzdW0o
WzEgaWYgZWxlbWVudCBlbHNlIDAgZm9yIGVsZW1lbnQgaW4gW2JlZ2luX3F1ZXJ5X3RpbWUsIGVu
ZF9xdWVyeV90aW1lXV0pCi0KLSAgICAgICAgICAgIGlmIG51bV91dWlkX3F1ZXJ5X2FyZ3MgPj0g
bnVtX3RpbWVzdGFtcF9xdWVyeV9hcmdzOgotICAgICAgICAgICAgICAgIGZpbmRfZnVuY3Rpb24g
PSBzZWxmLmNpX2NvbnRleHQuZmluZF91cmxzX2J5X2NvbW1pdAotCi0gICAgICAgICAgICAgICAg
ZGVmIHNvcnRfZnVuY3Rpb24ocmVzdWx0KToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJl
c3VsdFsndXVpZCddCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGZpbmRfZnVu
Y3Rpb24gPSBzZWxmLmNpX2NvbnRleHQuZmluZF91cmxzX2J5X3N0YXJ0X3RpbWUKLQotICAgICAg
ICAgICAgICAgIGRlZiBzb3J0X2Z1bmN0aW9uKHJlc3VsdCk6Ci0gICAgICAgICAgICAgICAgICAg
IHJldHVybiByZXN1bHRbJ3N0YXJ0X3RpbWUnXQotCi0gICAgICAgICAgICByZXN1bHRzID0gW10K
LSAgICAgICAgICAgIGZvciBzdWl0ZSBpbiBzdWl0ZXM6Ci0gICAgICAgICAgICAgICAgZm9yIGNv
bmZpZywgdXJscyBpbiBmaW5kX2Z1bmN0aW9uKHN1aXRlPXN1aXRlLCAqKnF1ZXJ5X2RpY3QpLml0
ZW1zKCk6Ci0gICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25fZGljdCA9IENvbmZpZ3Vy
YXRpb24uRW5jb2RlcigpLmRlZmF1bHQoY29uZmlnKQotICAgICAgICAgICAgICAgICAgICBjb25m
aWd1cmF0aW9uX2RpY3RbJ3N1aXRlJ10gPSBzdWl0ZQotICAgICAgICAgICAgICAgICAgICByZXN1
bHRzLmFwcGVuZChkaWN0KGNvbmZpZ3VyYXRpb249Y29uZmlndXJhdGlvbl9kaWN0LCB1cmxzPXNv
cnRlZCh1cmxzLCBrZXk9c29ydF9mdW5jdGlvbikpKQotCi0gICAgICAgICAgICByZXR1cm4gcmVz
dWx0cwotCi0gICAgQHF1ZXJ5X2FzX2t3YXJncygpCi0gICAgZGVmIHVybHNfZm9yX3F1ZXVlX2Vu
ZHBvaW50KHNlbGYsICoqa3dhcmdzKToKLSAgICAgICAgcmV0dXJuIGpzb25pZnkoc2VsZi51cmxz
X2Zvcl9xdWV1ZSgqKmt3YXJncykpCi0KLSAgICBAcXVlcnlfYXNfa3dhcmdzKCkKLSAgICBkZWYg
dXJsc19mb3JfYnVpbGRzX2VuZHBvaW50KHNlbGYsICoqa3dhcmdzKToKLSAgICAgICAgcmV0dXJu
IGpzb25pZnkoc2VsZi51cmxzX2Zvcl9idWlsZHMoKiprd2FyZ3MpKQpJbmRleDogVG9vbHMvcmVz
dWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci9jaV9jb250cm9sbGVyX3VuaXR0ZXN0LnB5
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIv
Y2lfY29udHJvbGxlcl91bml0dGVzdC5weQkocmV2aXNpb24gMjY1NTMxKQorKysgVG9vbHMvcmVz
dWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci9jaV9jb250cm9sbGVyX3VuaXR0ZXN0LnB5
CShub25leGlzdGVudCkKQEAgLTEsMTMyICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0j
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQK
LSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUgotIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0jIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSCi0jIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0jIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0j
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0KLWltcG9ydCB0aW1lCi0KLWZyb20gZmFrZXJlZGlzIGltcG9ydCBGYWtl
U3RyaWN0UmVkaXMKLWZyb20gcmVkaXMgaW1wb3J0IFN0cmljdFJlZGlzCi1mcm9tIHJlc3VsdHNk
YnB5LmNvbnRyb2xsZXIuYXBpX3JvdXRlcyBpbXBvcnQgQVBJUm91dGVzCi1mcm9tIHJlc3VsdHNk
YnB5LmNvbnRyb2xsZXIuY29uZmlndXJhdGlvbiBpbXBvcnQgQ29uZmlndXJhdGlvbgotZnJvbSBy
ZXN1bHRzZGJweS5mbGFza19zdXBwb3J0LmZsYXNrX3Rlc3RjYXNlIGltcG9ydCBGbGFza1Rlc3RD
YXNlCi1mcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLmNhc3NhbmRyYV9jb250ZXh0IGltcG9ydCBDYXNz
YW5kcmFDb250ZXh0Ci1mcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLmNpX2NvbnRleHQgaW1wb3J0IEJ1
aWxkYm90VVJMRmFjdG9yeQotZnJvbSByZXN1bHRzZGJweS5tb2RlbC5jaV9jb250ZXh0X3VuaXR0
ZXN0IGltcG9ydCBVUkxGYWN0b3J5VGVzdAotZnJvbSByZXN1bHRzZGJweS5tb2RlbC5tb2NrX2Nh
c3NhbmRyYV9jb250ZXh0IGltcG9ydCBNb2NrQ2Fzc2FuZHJhQ29udGV4dAotZnJvbSByZXN1bHRz
ZGJweS5tb2RlbC5tb2NrX21vZGVsX2ZhY3RvcnkgaW1wb3J0IE1vY2tNb2RlbEZhY3RvcnkKLWZy
b20gcmVzdWx0c2RicHkubW9kZWwudGVzdF9jb250ZXh0IGltcG9ydCBFeHBlY3RhdGlvbnMKLWZy
b20gcmVzdWx0c2RicHkubW9kZWwud2FpdF9mb3JfZG9ja2VyX3Rlc3RfY2FzZSBpbXBvcnQgV2Fp
dEZvckRvY2tlclRlc3RDYXNlCi0KLQotY2xhc3MgQ0lDb250cm9sbGVyVGVzdChGbGFza1Rlc3RD
YXNlLCBXYWl0Rm9yRG9ja2VyVGVzdENhc2UpOgotICAgIEtFWVNQQUNFID0gJ2NpX2NvbnRyb2xs
ZXJfdGVzdF9rZXlzcGFjZScKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBzZXR1cF93ZWJz
ZXJ2ZXIoY2xzLCBhcHAsIHJlZGlzPVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29u
dGV4dCk6Ci0gICAgICAgIHdpdGggVVJMRmFjdG9yeVRlc3QubW9jaygpOgotICAgICAgICAgICAg
Y2Fzc2FuZHJhLmRyb3Bfa2V5c3BhY2Uoa2V5c3BhY2U9Y2xzLktFWVNQQUNFKQotICAgICAgICAg
ICAgbW9kZWwgPSBNb2NrTW9kZWxGYWN0b3J5LmNyZWF0ZShyZWRpcz1yZWRpcygpLCBjYXNzYW5k
cmE9Y2Fzc2FuZHJhKGtleXNwYWNlPWNscy5LRVlTUEFDRSwgY3JlYXRlX2tleXNwYWNlPVRydWUp
KQotICAgICAgICAgICAgbW9kZWwuY2lfY29udGV4dC5hZGRfdXJsX2ZhY3RvcnkoQnVpbGRib3RV
UkxGYWN0b3J5KG1hc3Rlcj0nYnVpbGQud2Via2l0Lm9yZycsIHJlZGlzPW1vZGVsLnJlZGlzKSkK
LSAgICAgICAgICAgIGFwcC5yZWdpc3Rlcl9ibHVlcHJpbnQoQVBJUm91dGVzKG1vZGVsKSkKLQot
ICAgICAgICAgICAgd2l0aCBtb2RlbC51cGxvYWRfY29udGV4dDoKLSAgICAgICAgICAgICAgICAj
IE1vY2sgcmVzdWx0cyBhcmUgbW9yZSBjb21wbGljYXRlZCBiZWNhdXNlIHdlIHdhbnQgdG8gYXR0
YWNoIHJlc3VsdHMgdG8gYnVpbGRlcnMKLSAgICAgICAgICAgICAgICBmb3IgY29uZmlndXJhdGlv
biBpbiBbCi0gICAgICAgICAgICAgICAgICAgIENvbmZpZ3VyYXRpb24ocGxhdGZvcm09J01hYycs
IHZlcnNpb25fbmFtZT0nQ2F0YWxpbmEnLCB2ZXJzaW9uPScxMC4xNS4wJywgc2RrPScxOUE1MDAn
LCBpc19zaW11bGF0b3I9RmFsc2UsIGFyY2hpdGVjdHVyZT0neDg2XzY0Jywgc3R5bGU9J1JlbGVh
c2UnLCBmbGF2b3I9J3drMScpLAotICAgICAgICAgICAgICAgICAgICBDb25maWd1cmF0aW9uKHBs
YXRmb3JtPSdNYWMnLCB2ZXJzaW9uX25hbWU9J0NhdGFsaW5hJywgdmVyc2lvbj0nMTAuMTUuMCcs
IHNkaz0nMTlBNTAwJywgaXNfc2ltdWxhdG9yPUZhbHNlLCBhcmNoaXRlY3R1cmU9J3g4Nl82NCcs
IHN0eWxlPSdSZWxlYXNlJywgZmxhdm9yPSd3azInKSwKLSAgICAgICAgICAgICAgICAgICAgQ29u
ZmlndXJhdGlvbihwbGF0Zm9ybT0nTWFjJywgdmVyc2lvbl9uYW1lPSdNb2phdmUnLCB2ZXJzaW9u
PScxMC4xNC4wJywgc2RrPScxOEE1MDAnLCBpc19zaW11bGF0b3I9RmFsc2UsIGFyY2hpdGVjdHVy
ZT0neDg2XzY0Jywgc3R5bGU9J1JlbGVhc2UnLCBmbGF2b3I9J3drMScpLAotICAgICAgICAgICAg
ICAgICAgICBDb25maWd1cmF0aW9uKHBsYXRmb3JtPSdNYWMnLCB2ZXJzaW9uX25hbWU9J01vamF2
ZScsIHZlcnNpb249JzEwLjE0LjAnLCBzZGs9JzE4QTUwMCcsIGlzX3NpbXVsYXRvcj1GYWxzZSwg
YXJjaGl0ZWN0dXJlPSd4ODZfNjQnLCBzdHlsZT0nUmVsZWFzZScsIGZsYXZvcj0nd2syJyksCi0g
ICAgICAgICAgICAgICAgXToKLSAgICAgICAgICAgICAgICAgICAgYnVpbGRfY291bnQgPSBbMV0K
LQotICAgICAgICAgICAgICAgICAgICBkZWYgY2FsbGJhY2soY29tbWl0cywgbW9kZWw9bW9kZWws
IGNvbmZpZ3VyYXRpb249Y29uZmlndXJhdGlvbiwgY291bnQ9YnVpbGRfY291bnQpOgotICAgICAg
ICAgICAgICAgICAgICAgICAgcmVzdWx0cyA9IE1vY2tNb2RlbEZhY3RvcnkubGF5b3V0X3Rlc3Rf
cmVzdWx0cygpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRzWydkZXRhaWxzJ10gPSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2J1aWxkYm90LW1hc3Rlcic6IFVSTEZhY3Rv
cnlUZXN0LkJVSUxEX01BU1RFUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYnVpbGRl
ci1uYW1lJzogZid7Y29uZmlndXJhdGlvbi52ZXJzaW9uX25hbWV9LXtjb25maWd1cmF0aW9uLnN0
eWxlfS17Y29uZmlndXJhdGlvbi5mbGF2b3IudXBwZXIoKX0tVGVzdHMnLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICdidWlsZC1udW1iZXInOiBzdHIoY291bnRbMF0pLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICdidWlsZGJvdC13b3JrZXInOiB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICdNb2phdmUnOiAnYm90MScsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICdDYXRhbGluYSc6ICdib3QyJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9LmdldChjb25maWd1cmF0aW9uLnZlcnNpb25fbmFtZSwgTm9uZSksCi0gICAgICAgICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBtb2RlbC51cGxvYWRfY29udGV4
dC51cGxvYWRfdGVzdF9yZXN1bHRzKGNvbmZpZ3VyYXRpb24sIGNvbW1pdHMsIHN1aXRlPSdsYXlv
dXQtdGVzdHMnLCB0aW1lc3RhbXA9dGltZS50aW1lKCksIHRlc3RfcmVzdWx0cz1yZXN1bHRzKQot
ICAgICAgICAgICAgICAgICAgICAgICAgY291bnRbMF0gKz0gMQotCi0gICAgICAgICAgICAgICAg
ICAgIE1vY2tNb2RlbEZhY3RvcnkuaXRlcmF0ZV9hbGxfY29tbWl0cyhtb2RlbCwgY2FsbGJhY2sp
Ci0gICAgICAgICAgICAgICAgICAgIE1vY2tNb2RlbEZhY3RvcnkucHJvY2Vzc19yZXN1bHRzKG1v
ZGVsLCBjb25maWd1cmF0aW9uKQotCi0gICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lm
X25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9j
a0Nhc3NhbmRyYUNvbnRleHQpCi0gICAgQEZsYXNrVGVzdENhc2UucnVuX3dpdGhfd2Vic2VydmVy
KCkKLSAgICBkZWYgdGVzdF9hbGxfcXVldWVfbGlzdChzZWxmLCBjbGllbnQsICoqa3dhcmdzKToK
LSAgICAgICAgcmVzcG9uc2UgPSBjbGllbnQuZ2V0KHNlbGYuVVJMICsgJy9hcGkvdXJscy9xdWV1
ZScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzcG9uc2UuanNvbigpKSwgNCkKLQotICAg
IEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtl
U3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQotICAgIEBG
bGFza1Rlc3RDYXNlLnJ1bl93aXRoX3dlYnNlcnZlcigpCi0gICAgZGVmIHRlc3Rfc2luZ2xlX3F1
ZXVlX2xpc3Qoc2VsZiwgY2xpZW50LCAqKmt3YXJncyk6Ci0gICAgICAgIHJlc3BvbnNlID0gY2xp
ZW50LmdldChzZWxmLlVSTCArICcvYXBpL3VybHMvcXVldWU/dmVyc2lvbl9uYW1lPUNhdGFsaW5h
JmZsYXZvcj13azInKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLnN0YXR1c19j
b2RlLCAyMDApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2UuanNvbigpLCBbCi0g
ICAgICAgICAgICBkaWN0KAotICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb249ZGljdCgKLSAg
ICAgICAgICAgICAgICAgICAgaXNfc2ltdWxhdG9yPUZhbHNlLCBwbGF0Zm9ybT0nTWFjJywKLSAg
ICAgICAgICAgICAgICAgICAgYXJjaGl0ZWN0dXJlPSd4ODZfNjQnLCBzdHlsZT0nUmVsZWFzZScs
IGZsYXZvcj0nd2syJywKLSAgICAgICAgICAgICAgICAgICAgc2RrPScxOUE1MDAnLCBzdWl0ZT0n
bGF5b3V0LXRlc3RzJywgdmVyc2lvbj0xMDAxNTAwMCwgdmVyc2lvbl9uYW1lPSdDYXRhbGluYScs
Ci0gICAgICAgICAgICAgICAgKSwKLSAgICAgICAgICAgICAgICBsaW5rPSdodHRwczovL2J1aWxk
LndlYmtpdC5vcmcvIy9idWlsZGVycy81JywKLSAgICAgICAgICAgICldKQotCi0gICAgQFdhaXRG
b3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RS
ZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCi0gICAgQEZsYXNrVGVz
dENhc2UucnVuX3dpdGhfd2Vic2VydmVyKCkKLSAgICBkZWYgdGVzdF9hbGxfYnVpbGRzX2xpc3Qo
c2VsZiwgY2xpZW50LCAqKmt3YXJncyk6Ci0gICAgICAgIHJlc3BvbnNlID0gY2xpZW50LmdldChz
ZWxmLlVSTCArICcvYXBpL3VybHMnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNl
LnN0YXR1c19jb2RlLCAyMDApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlc3BvbnNl
Lmpzb24oKSksIDQpCi0gICAgICAgIGZvciBkYXRhIGluIHJlc3BvbnNlLmpzb24oKToKLSAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRhdGFbJ3VybHMnXSksIDUpCi0KLSAgICBAV2Fp
dEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmlj
dFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKLSAgICBARmxhc2tU
ZXN0Q2FzZS5ydW5fd2l0aF93ZWJzZXJ2ZXIoKQotICAgIGRlZiB0ZXN0X3NpbmdsZV9xdWV1ZV9s
aXN0KHNlbGYsIGNsaWVudCwgKiprd2FyZ3MpOgotICAgICAgICByZXNwb25zZSA9IGNsaWVudC5n
ZXQoc2VsZi5VUkwgKyAnL2FwaS91cmxzP3ZlcnNpb25fbmFtZT1DYXRhbGluYSZmbGF2b3I9d2sy
JmlkPTIzNjU0MicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2Uuc3RhdHVzX2Nv
ZGUsIDIwMCkKLSAgICAgICAgcHJpbnQocmVzcG9uc2UuanNvbigpWzBdWyd1cmxzJ10pCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2UuanNvbigpWzBdWyd1cmxzJ11bMF1bJ2J1aWxk
J10sICdodHRwczovL2J1aWxkLndlYmtpdC5vcmcvIy9idWlsZGVycy81L2J1aWxkcy8zJykKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5qc29uKClbMF1bJ3VybHMnXVswXVsncXVl
dWUnXSwgJ2h0dHBzOi8vYnVpbGQud2Via2l0Lm9yZy8jL2J1aWxkZXJzLzUnKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLmpzb24oKVswXVsndXJscyddWzBdWyd3b3JrZXInXSwg
J2h0dHBzOi8vYnVpbGQud2Via2l0Lm9yZy8jL3dvcmtlcnMvNCcpCi0KLSAgICBAV2FpdEZvckRv
Y2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlz
LCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKLSAgICBARmxhc2tUZXN0Q2Fz
ZS5ydW5fd2l0aF93ZWJzZXJ2ZXIoKQotICAgIGRlZiB0ZXN0X2FsbF9idWlsZHNfbGlzdF9ieV90
aW1lKHNlbGYsIGNsaWVudCwgKiprd2FyZ3MpOgotICAgICAgICByZXNwb25zZSA9IGNsaWVudC5n
ZXQoc2VsZi5VUkwgKyBmJy9hcGkvdXJscz9hZnRlcl90aW1lPXt0aW1lLnRpbWUoKSAtIDJ9JykK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZXNwb25zZS5qc29uKCkpLCA0KQotICAgICAgICBm
b3IgZGF0YSBpbiByZXNwb25zZS5qc29uKCk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGxlbihkYXRhWyd1cmxzJ10pLCA1KQotCi0gICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2Nr
X2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9
TW9ja0Nhc3NhbmRyYUNvbnRleHQpCi0gICAgQEZsYXNrVGVzdENhc2UucnVuX3dpdGhfd2Vic2Vy
dmVyKCkKLSAgICBkZWYgdGVzdF9ub19idWlsZHNfbGlzdF9ieV90aW1lKHNlbGYsIGNsaWVudCwg
Kiprd2FyZ3MpOgotICAgICAgICByZXNwb25zZSA9IGNsaWVudC5nZXQoc2VsZi5VUkwgKyBmJy9h
cGkvdXJscz9hZnRlcl90aW1lPXt0aW1lLnRpbWUoKSArIDJ9JykKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChyZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGxlbihyZXNwb25zZS5qc29uKCkpLCAwKQpJbmRleDogVG9vbHMvcmVzdWx0c2RicHkvcmVz
dWx0c2RicHkvY29udHJvbGxlci9jb21taXQucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvcmVzdWx0
c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci9jb21taXQucHkJKHJldmlzaW9uIDI2NTUzMSkK
KysrIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvY29tbWl0LnB5CShu
b25leGlzdGVudCkKQEAgLTEsMTI3ICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
IyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKLSMg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UgotIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0jIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSCi0jIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0jIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0KLWltcG9ydCBjYWxlbmRhcgotaW1wb3J0IGpzb24KLWltcG9ydCByZQotCi1m
cm9tIGRhdGV0aW1lIGltcG9ydCBkYXRldGltZQotZnJvbSByZXN1bHRzZGJweS5mbGFza19zdXBw
b3J0LnV0aWwgaW1wb3J0IEZsYXNrSlNPTkVuY29kZXIKLQotCi1jbGFzcyBDb21taXQob2JqZWN0
KToKLSAgICBUSU1FU1RBTVBfVE9fVVVJRF9NVUxUSVBMSUVSID0gMTAwCi0gICAgTUFYX0tFWV9M
RU5HVEggPSAxMjgKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBmcm9tX2pzb24oY2xzLCBk
YXRhKToKLSAgICAgICAgZGF0YSA9IGRhdGEgaWYgaXNpbnN0YW5jZShkYXRhLCBkaWN0KSBlbHNl
IGpzb24ubG9hZHMoZGF0YSkKLSAgICAgICAgcmV0dXJuIGNscygKLSAgICAgICAgICAgIHJlcG9z
aXRvcnlfaWQ9ZGF0YS5nZXQoJ3JlcG9zaXRvcnlfaWQnKSwKLSAgICAgICAgICAgIGJyYW5jaD1k
YXRhLmdldCgnYnJhbmNoJyksCi0gICAgICAgICAgICBpZD1kYXRhLmdldCgnaWQnKSwKLSAgICAg
ICAgICAgIHRpbWVzdGFtcD1kYXRhLmdldCgndGltZXN0YW1wJyksCi0gICAgICAgICAgICBvcmRl
cj1kYXRhLmdldCgnb3JkZXInKSwKLSAgICAgICAgICAgIGNvbW1pdHRlcj1kYXRhLmdldCgnY29t
bWl0dGVyJyksCi0gICAgICAgICAgICBtZXNzYWdlPWRhdGEuZ2V0KCdtZXNzYWdlJyksCi0gICAg
ICAgICkKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZXBvc2l0b3J5X2lkLCBicmFuY2gsIGlk
LCB0aW1lc3RhbXA9Tm9uZSwgb3JkZXI9Tm9uZSwgY29tbWl0dGVyPU5vbmUsIG1lc3NhZ2U9Tm9u
ZSk6Ci0gICAgICAgIGZvciBhcmd1bWVudCBpbiBbKCdyZXBvc2l0b3J5X2lkJywgcmVwb3NpdG9y
eV9pZCksICgnYnJhbmNoJywgYnJhbmNoKSwgKCdpZCcsIGlkKSwgKCd0aW1lc3RhbXAnLCB0aW1l
c3RhbXApXToKLSAgICAgICAgICAgIGlmIGFyZ3VtZW50WzFdIGlzIE5vbmU6Ci0gICAgICAgICAg
ICAgICAgcmFpc2UgVmFsdWVFcnJvcihmJ3thcmd1bWVudFswXX0gaXMgbm90IGRlZmluZWQgZm9y
IGNvbW1pdCcpCi0KLSAgICAgICAgc2VsZi5yZXBvc2l0b3J5X2lkID0gc3RyKHJlcG9zaXRvcnlf
aWQpCi0gICAgICAgIGlmIG5vdCByZS5tYXRjaChyJ15bYS16QS1aP10rJCcsIHNlbGYucmVwb3Np
dG9yeV9pZCkgb3IgbGVuKHNlbGYucmVwb3NpdG9yeV9pZCkgPiBzZWxmLk1BWF9LRVlfTEVOR1RI
OgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihmIid7c2VsZi5yZXBvc2l0b3J5X2lkfScg
aXMgYW4gaW52YWxpZCByZXBvc2l0b3J5IGlkIikKLQotICAgICAgICBzZWxmLmJyYW5jaCA9IHN0
cihicmFuY2gpCi0gICAgICAgIGlmIG5vdCByZS5tYXRjaChyJ15bYS16QS1aMC05LS4/L10rJCcs
IHNlbGYuYnJhbmNoKSBvciBsZW4oc2VsZi5icmFuY2gpID4gc2VsZi5NQVhfS0VZX0xFTkdUSDoK
LSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoZiIne3NlbGYuYnJhbmNofScgaXMgYW4gaW52
YWxpZCBicmFuY2ggbmFtZSIpCi0KLSAgICAgICAgIyBBbiBpZCBpcyBlaXRoZXIgYSBnaXQgY29t
bWl0IG9yIFNWTiByZXZpc2lvbi4KLSAgICAgICAgc2VsZi5pZCA9IHN0cihpZCkKLSAgICAgICAg
aWYgbm90IHJlLm1hdGNoKHInXlthLWZBLUYwLTk/XSskJywgc2VsZi5pZCkgb3IgbGVuKHNlbGYu
aWQpID4gNDA6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKGYiJ3tzZWxmLmlkfScgaXMg
YW4gaW52YWxpZCBjb21taXQgaWQiKQotCi0gICAgICAgIGlmIGlzaW5zdGFuY2UodGltZXN0YW1w
LCBkYXRldGltZSk6Ci0gICAgICAgICAgICBzZWxmLnRpbWVzdGFtcCA9IHRpbWVzdGFtcAotICAg
ICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi50aW1lc3RhbXAgPSBkYXRldGltZS51dGNmcm9t
dGltZXN0YW1wKGludCh0aW1lc3RhbXApKQotICAgICAgICBzZWxmLm9yZGVyID0gaW50KG9yZGVy
KSBpZiBvcmRlciBlbHNlIDAKLQotICAgICAgICBzZWxmLmNvbW1pdHRlciA9IGNvbW1pdHRlciBp
ZiBjb21taXR0ZXIgZWxzZSBOb25lCi0gICAgICAgIHNlbGYubWVzc2FnZSA9IG1lc3NhZ2UgaWYg
bWVzc2FnZSBlbHNlIE5vbmUKLQotICAgIGRlZiB0aW1lc3RhbXBfYXNfZXBvY2goc2VsZik6Ci0g
ICAgICAgIHJldHVybiBjYWxlbmRhci50aW1lZ20oc2VsZi50aW1lc3RhbXAudGltZXR1cGxlKCkp
Ci0KLSAgICBAcHJvcGVydHkKLSAgICBkZWYgdXVpZChzZWxmKToKLSAgICAgICAgIyBSZWJhc2Ut
YmFzZWQgd29ya2Zsb3dzIGluIGdpdCBjYW4gY2F1c2UgY29tbWl0cyB0byBoYXZlIHRoZSBzYW1l
IGNvbW1pdCB0aW1lc3RhbXAuIFRvIHVuaXF1ZWx5IHJlY29nbml6ZSB0aGVtLAotICAgICAgICAj
IG11bHRpcGx5IGVhY2ggdGltZXN0YW1wIGJ5IHRoZSBgVElNRVNUQU1QX1RPX1VVSURfTVVMVElQ
TElFUmAuCi0gICAgICAgIHJldHVybiBzZWxmLnRpbWVzdGFtcF9hc19lcG9jaCgpICogc2VsZi5U
SU1FU1RBTVBfVE9fVVVJRF9NVUxUSVBMSUVSICsgc2VsZi5vcmRlcgotCi0gICAgZGVmIF9fZXFf
XyhzZWxmLCBvdGhlcik6Ci0gICAgICAgIHJldHVybiAoaXNpbnN0YW5jZShvdGhlciwgdHlwZShz
ZWxmKSkgYW5kIChzZWxmLnJlcG9zaXRvcnlfaWQsIHNlbGYuYnJhbmNoLCBzZWxmLmlkKSA9PSAo
b3RoZXIucmVwb3NpdG9yeV9pZCwgb3RoZXIuYnJhbmNoLCBvdGhlci5pZCkpCi0KLSAgICBkZWYg
X19uZV9fKHNlbGYsIG90aGVyKToKLSAgICAgICAgcmV0dXJuIG5vdCAoc2VsZiA9PSBvdGhlcikK
LQotICAgIGRlZiBfX2x0X18oc2VsZiwgb3RoZXIpOgotICAgICAgICBpZiBzZWxmLnRpbWVzdGFt
cCA8IG90aGVyLnRpbWVzdGFtcDoKLSAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgIGlm
IHNlbGYudGltZXN0YW1wID4gb3RoZXIudGltZXN0YW1wOgotICAgICAgICAgICAgcmV0dXJuIEZh
bHNlCi0gICAgICAgIHJldHVybiBzZWxmLm9yZGVyIDwgb3RoZXIub3JkZXIKLQotICAgIGRlZiBf
X2xlX18oc2VsZiwgb3RoZXIpOgotICAgICAgICByZXR1cm4gc2VsZiA8IG90aGVyIG9yIHNlbGYg
PT0gb3RoZXIKLQotICAgIGRlZiBfX2d0X18oc2VsZiwgb3RoZXIpOgotICAgICAgICBpZiBzZWxm
LnRpbWVzdGFtcCA+IG90aGVyLnRpbWVzdGFtcDoKLSAgICAgICAgICAgIHJldHVybiBUcnVlCi0g
ICAgICAgIGlmIHNlbGYudGltZXN0YW1wIDwgb3RoZXIudGltZXN0YW1wOgotICAgICAgICAgICAg
cmV0dXJuIEZhbHNlCi0gICAgICAgIHJldHVybiBzZWxmLm9yZGVyID4gb3RoZXIub3JkZXIKLQot
ICAgIGRlZiBfX2dlX18oc2VsZiwgb3RoZXIpOgotICAgICAgICByZXR1cm4gc2VsZiA+IG90aGVy
IG9yIHNlbGYgPT0gb3RoZXIKLQotICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKLSAgICAgICAgcmV0
dXJuIGhhc2goc2VsZi5yZXBvc2l0b3J5X2lkKSBeIGhhc2goc2VsZi5icmFuY2gpIF4gaGFzaChz
ZWxmLmlkKQotCi0gICAgZGVmIHRvX2pzb24oc2VsZiwgcHJldHR5X3ByaW50PUZhbHNlKToKLSAg
ICAgICAgcmV0dXJuIGpzb24uZHVtcHMoc2VsZiwgY2xzPXNlbGYuRW5jb2Rlciwgc29ydF9rZXlz
PXByZXR0eV9wcmludCwgaW5kZW50PTQgaWYgcHJldHR5X3ByaW50IGVsc2UgTm9uZSkKLQotICAg
IGNsYXNzIEVuY29kZXIoRmxhc2tKU09ORW5jb2Rlcik6Ci0KLSAgICAgICAgZGVmIGRlZmF1bHQo
c2VsZiwgb2JqKToKLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uob2JqLCBDb21taXQpOgotICAg
ICAgICAgICAgICAgIHJlc3VsdCA9IHt9Ci0gICAgICAgICAgICAgICAgZm9yIGtleSwgdmFsdWUg
aW4gb2JqLl9fZGljdF9fLml0ZW1zKCk6Ci0gICAgICAgICAgICAgICAgICAgIGlmIHZhbHVlIGlz
IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAg
ICAgICByZXN1bHRba2V5XSA9IHZhbHVlCi0gICAgICAgICAgICAgICAgcmVzdWx0Wyd0aW1lc3Rh
bXAnXSA9IG9iai50aW1lc3RhbXBfYXNfZXBvY2goKQotICAgICAgICAgICAgICAgIHJldHVybiBy
ZXN1bHQKLSAgICAgICAgICAgIHJldHVybiBzdXBlcihDb21taXQuRW5jb2Rlciwgc2VsZikuZGVm
YXVsdChvYmopCkluZGV4OiBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9jb250cm9sbGVy
L2NvbW1pdF9jb250cm9sbGVyLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL3Jlc3VsdHNkYnB5L3Jl
c3VsdHNkYnB5L2NvbnRyb2xsZXIvY29tbWl0X2NvbnRyb2xsZXIucHkJKHJldmlzaW9uIDI2NTUz
MSkKKysrIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvY29tbWl0X2Nv
bnRyb2xsZXIucHkJKG5vbmV4aXN0ZW50KQpAQCAtMSwzMDcgKzAsMCBAQAotIyBDb3B5cmlnaHQg
KEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jCi0jIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SCi0jIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSMg
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIKLSMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSMgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotaW1wb3J0IGpzb24KLQotZnJvbSBjb2xsZWN0aW9u
cyBpbXBvcnQgZGVmYXVsdGRpY3QKLWZyb20gZmxhc2sgaW1wb3J0IGFib3J0LCBqc29uaWZ5LCBy
ZXF1ZXN0Ci1mcm9tIHJlc3VsdHNkYnB5LmZsYXNrX3N1cHBvcnQudXRpbCBpbXBvcnQgQXNzZXJ0
UmVxdWVzdCwgcXVlcnlfYXNfa3dhcmdzLCBsaW1pdF9mb3JfcXVlcnkKLWZyb20gcmVzdWx0c2Ri
cHkubW9kZWwucmVwb3NpdG9yeSBpbXBvcnQgU0NNRXhjZXB0aW9uCi1mcm9tIHJlc3VsdHNkYnB5
LmNvbnRyb2xsZXIuY29tbWl0IGltcG9ydCBDb21taXQKLQotCi1kZWYgX2ZpbmRfY29tcGFyaXNv
bihjb21taXRfY29udGV4dCwgcmVwb3NpdG9yeV9pZCwgYnJhbmNoLCBpZCwgdXVpZCwgdGltZXN0
YW1wLCBwcmlvcml0eT1taW4pOgotICAgIGlmIGJvb2woaWQpICsgYm9vbCh1dWlkKSArIGJvb2wo
dGltZXN0YW1wKSA+IDE6Ci0gICAgICAgIGFib3J0KDQwMCwgZGVzY3JpcHRpb249J0NhbiBvbmx5
IHNlYXJjaCBieSBvbmUgb2YgW2NvbW1pdCBpZCwgY29tbWl0IHV1aWQsIHRpbWVzdGFtcF0gaW4g
YSBzaW5nbGUgcmVxdWVzdCcpCi0KLSAgICB0cnk6Ci0gICAgICAgIGlmIHV1aWQ6Ci0gICAgICAg
ICAgICAjIFdlIGRvbid0IG5lZWQgcmVhbCBjb21taXQgdG8gc2VhcmNoIGJ5IHV1aWQgYW5kIENv
bW1pdENvbnRleHRzIGhhdmUgdHJvdWJsZSBkaWZmcmVudGlhdGluZyBiZXR3ZWVuIHV1aWRzIGFu
ZCB0aW1lc3RhbXBzLgotICAgICAgICAgICAgdXVpZCA9IHByaW9yaXR5KFtpbnQoZWxlbWVudCkg
Zm9yIGVsZW1lbnQgaW4gdXVpZF0pCi0gICAgICAgICAgICByZXR1cm4gQ29tbWl0KCc/JywgJz8n
LCAnPycsIHV1aWQgLy8gQ29tbWl0LlRJTUVTVEFNUF9UT19VVUlEX01VTFRJUExJRVIsIHV1aWQg
JSBDb21taXQuVElNRVNUQU1QX1RPX1VVSURfTVVMVElQTElFUikKLSAgICAgICAgaWYgdGltZXN0
YW1wOgotICAgICAgICAgICAgcmV0dXJuIHByaW9yaXR5KFtyb3VuZChmbG9hdChlbGVtZW50KSkg
Zm9yIGVsZW1lbnQgaW4gdGltZXN0YW1wXSkKLSAgICBleGNlcHQgVmFsdWVFcnJvcjoKLSAgICAg
ICAgYWJvcnQoNDAwLCBkZXNjcmlwdGlvbj0nVGltZXN0YW1wIGFuZCB1dWlkIG11c3QgYmUgaW50
ZWdlcnMnKQotCi0gICAgaWYgbm90IHJlcG9zaXRvcnlfaWQgYW5kIG5vdCBpZDoKLSAgICAgICAg
cmV0dXJuIE5vbmUKLSAgICBpZiBub3QgcmVwb3NpdG9yeV9pZDoKLSAgICAgICAgcmVwb3NpdG9y
eV9pZCA9IGNvbW1pdF9jb250ZXh0LnJlcG9zaXRvcmllcy5rZXlzKCkKLSAgICBmb3IgcmVwb3Np
dG9yeSBpbiByZXBvc2l0b3J5X2lkOgotICAgICAgICBpZiByZXBvc2l0b3J5IG5vdCBpbiBjb21t
aXRfY29udGV4dC5yZXBvc2l0b3JpZXMua2V5cygpOgotICAgICAgICAgICAgYWJvcnQoNDA0LCBk
ZXNjcmlwdGlvbj1mIlwne3JlcG9zaXRvcnl9XCcgaXMgbm90IGEgcmVnaXN0ZXJlZCByZXBvc2l0
b3J5IikKLQotICAgIHJlc3VsdCA9IFtdCi0gICAgZm9yIHJlcG9zaXRvcnkgaW4gcmVwb3NpdG9y
eV9pZDoKLSAgICAgICAgZm9yIGIgaW4gYnJhbmNoOgotICAgICAgICAgICAgaWYgaWQ6Ci0gICAg
ICAgICAgICAgICAgZm9yIGVsbSBpbiBpZDoKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9
IGNvbW1pdF9jb250ZXh0LmZpbmRfY29tbWl0c19ieV9pZChyZXBvc2l0b3J5LCBiLCBlbG0pCi0g
ICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJlc3VsdCArPSBjb21taXRfY29udGV4
dC5maW5kX2NvbW1pdHNfaW5fcmFuZ2UocmVwb3NpdG9yeSwgYiwgbGltaXQ9MSkKLQotICAgIGlm
IG5vdCByZXN1bHQ6Ci0gICAgICAgIGFib3J0KDQwNCwgZGVzY3JpcHRpb249J05vIGNvbW1pdHMg
Zm91bmQgbWF0Y2hpbmcgdGhlIHNwZWNpZmllZCBjcml0ZXJpYScpCi0gICAgcmV0dXJuIHByaW9y
aXR5KHJlc3VsdCkKLQotCi1kZWYgdXVpZF9yYW5nZV9mb3JfY29tbWl0X3JhbmdlX3F1ZXJ5KCk6
Ci0gICAgZGVmIGRlY29yYXRvcihtZXRob2QpOgotICAgICAgICBkZWYgcmVhbF9tZXRob2Qob2Jq
LCBicmFuY2g9Tm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGFmdGVyX3JlcG9zaXRvcnlf
aWQ9Tm9uZSwgYWZ0ZXJfYnJhbmNoPU5vbmUsIGFmdGVyX2lkPU5vbmUsIGFmdGVyX3V1aWQ9Tm9u
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGFmdGVyX3RpbWVzdGFtcD1Ob25lLAotICAgICAg
ICAgICAgICAgICAgICAgICAgYmVmb3JlX3JlcG9zaXRvcnlfaWQ9Tm9uZSwgYmVmb3JlX2JyYW5j
aD1Ob25lLCBiZWZvcmVfaWQ9Tm9uZSwgYmVmb3JlX3V1aWQ9Tm9uZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGJlZm9yZV90aW1lc3RhbXA9Tm9uZSwgKiprd2FyZ3MpOgotICAgICAgICAgICAg
IyBXZSdyZSBtYWtpbmcgYW4gYXN1bXB0aW9uIHRoYXQgdGhlIGNsYXNzIHVzaW5nIHRoaXMgZGVj
b3JhdG9yIGFjdHVhbGx5IGhhcyBhIGNvbW1pdF9jb250ZXh0LCBpZiBpdCBkb2VzIG5vdCwKLSAg
ICAgICAgICAgICMgdGhpcyBkZWNvcmF0b3Igd2lsbCBmYWlsIHNwZWN0YWN1bGFybHkKLSAgICAg
ICAgICAgIHdpdGggb2JqLmNvbW1pdF9jb250ZXh0OgotICAgICAgICAgICAgICAgIGlmIG5vdCBi
cmFuY2g6Ci0gICAgICAgICAgICAgICAgICAgIGJyYW5jaCA9IFtOb25lXQotICAgICAgICAgICAg
ICAgIGJlZ2luID0gX2ZpbmRfY29tcGFyaXNvbigKLSAgICAgICAgICAgICAgICAgICAgb2JqLmNv
bW1pdF9jb250ZXh0LCByZXBvc2l0b3J5X2lkPWFmdGVyX3JlcG9zaXRvcnlfaWQsIGJyYW5jaD1h
ZnRlcl9icmFuY2ggb3IgYnJhbmNoLAotICAgICAgICAgICAgICAgICAgICBpZD1hZnRlcl9pZCwg
dXVpZD1hZnRlcl91dWlkLCB0aW1lc3RhbXA9YWZ0ZXJfdGltZXN0YW1wLCBwcmlvcml0eT1taW4s
Ci0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgICAgIGVuZCA9IF9maW5kX2NvbXBhcmlz
b24oCi0gICAgICAgICAgICAgICAgICAgIG9iai5jb21taXRfY29udGV4dCwgcmVwb3NpdG9yeV9p
ZD1iZWZvcmVfcmVwb3NpdG9yeV9pZCwgYnJhbmNoPWJlZm9yZV9icmFuY2ggb3IgYnJhbmNoLAot
ICAgICAgICAgICAgICAgICAgICBpZD1iZWZvcmVfaWQsIHV1aWQ9YmVmb3JlX3V1aWQsIHRpbWVz
dGFtcD1iZWZvcmVfdGltZXN0YW1wLCBwcmlvcml0eT1tYXgsCi0gICAgICAgICAgICAgICAgKQot
ICAgICAgICAgICAgICAgIHJldHVybiBtZXRob2Qob2JqLCBiZWdpbj1iZWdpbiwgZW5kPWVuZCwg
YnJhbmNoPWJyYW5jaCwgKiprd2FyZ3MpCi0KLSAgICAgICAgcmVhbF9tZXRob2QuX19uYW1lX18g
PSBtZXRob2QuX19uYW1lX18KLSAgICAgICAgcmV0dXJuIHJlYWxfbWV0aG9kCi0KLSAgICByZXR1
cm4gZGVjb3JhdG9yCi0KLQotZGVmIHV1aWRfcmFuZ2VfZm9yX3F1ZXJ5KCk6Ci0gICAgZGVmIGRl
Y29yYXRvcihtZXRob2QpOgotICAgICAgICBAdXVpZF9yYW5nZV9mb3JfY29tbWl0X3JhbmdlX3F1
ZXJ5KCkKLSAgICAgICAgZGVmIHJlYWxfbWV0aG9kKG9iaiwgcmVwb3NpdG9yeV9pZD1Ob25lLCBi
cmFuY2g9Tm9uZSwgaWQ9Tm9uZSwgdXVpZD1Ob25lLCB0aW1lc3RhbXA9Tm9uZSwgYmVnaW49Tm9u
ZSwgZW5kPU5vbmUsICoqa3dhcmdzKToKLSAgICAgICAgICAgICMgV2UncmUgbWFraW5nIGFuIGFz
dW1wdGlvbiB0aGF0IHRoZSBjbGFzcyB1c2luZyB0aGlzIGRlY29yYXRvciBhY3R1YWxseSBoYXMg
YSBjb21taXRfY29udGV4dCwgaWYgaXQgZG9lcyBub3QsCi0gICAgICAgICAgICAjIHRoaXMgZGVj
b3JhdG9yIHdpbGwgZmFpbCBzcGVjdGFjdWxhcmx5Ci0gICAgICAgICAgICB3aXRoIG9iai5jb21t
aXRfY29udGV4dDoKLSAgICAgICAgICAgICAgICBpbmRleCA9IF9maW5kX2NvbXBhcmlzb24oCi0g
ICAgICAgICAgICAgICAgICAgIG9iai5jb21taXRfY29udGV4dCwgcmVwb3NpdG9yeV9pZD1yZXBv
c2l0b3J5X2lkLCBicmFuY2g9YnJhbmNoLAotICAgICAgICAgICAgICAgICAgICBpZD1pZCwgdXVp
ZD11dWlkLCB0aW1lc3RhbXA9dGltZXN0YW1wLCBwcmlvcml0eT1tYXgsCi0gICAgICAgICAgICAg
ICAgKQotICAgICAgICAgICAgICAgIGlmIGluZGV4OgotICAgICAgICAgICAgICAgICAgICBpZiBi
ZWdpbiBvciBlbmQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBhYm9ydCg0MDAsIGRlc2NyaXB0
aW9uPSdDYW5ub3QgZGVmaW5lIGNvbW1pdCBhbmQgcmFuZ2Ugd2hlbiBzZWFyY2hpbmcnKQotICAg
ICAgICAgICAgICAgICAgICBiZWdpbiA9IGluZGV4Ci0gICAgICAgICAgICAgICAgICAgIGVuZCA9
IGluZGV4Ci0KLSAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGVuZCwgQ29tbWl0KSBhbmQg
ZW5kLnJlcG9zaXRvcnlfaWQgIT0gJz8nOgotICAgICAgICAgICAgICAgICAgICByZXBvc2l0b3Jp
ZXMgPSBsaXN0KG9iai5jb21taXRfY29udGV4dC5yZXBvc2l0b3JpZXMua2V5cygpKQotICAgICAg
ICAgICAgICAgICAgICByZXBvc2l0b3JpZXMucmVtb3ZlKGVuZC5yZXBvc2l0b3J5X2lkKQotICAg
ICAgICAgICAgICAgICAgICBjb21taXRzID0gW2VuZF0KLSAgICAgICAgICAgICAgICAgICAgW2Nv
bW1pdHMuZXh0ZW5kKHNpYmxpbmdzKSBmb3Igc2libGluZ3MgaW4gb2JqLmNvbW1pdF9jb250ZXh0
LnNpYmxpbmdfY29tbWl0cyhlbmQsIHJlcG9zaXRvcmllcykudmFsdWVzKCldCi0gICAgICAgICAg
ICAgICAgICAgIGVuZCA9IG1heChjb21taXRzKQotCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1l
dGhvZChvYmosIGJyYW5jaD1icmFuY2gsIGJlZ2luPWJlZ2luLCBlbmQ9ZW5kLCAqKmt3YXJncykK
LQotICAgICAgICByZWFsX21ldGhvZC5fX25hbWVfXyA9IG1ldGhvZC5fX25hbWVfXwotICAgICAg
ICByZXR1cm4gcmVhbF9tZXRob2QKLQotICAgIHJldHVybiBkZWNvcmF0b3IKLQotCi1jbGFzcyBI
YXNDb21taXRDb250ZXh0KG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvbW1pdF9j
b250ZXh0KToKLSAgICAgICAgc2VsZi5jb21taXRfY29udGV4dCA9IGNvbW1pdF9jb250ZXh0Ci0K
LQotY2xhc3MgQ29tbWl0Q29udHJvbGxlcihIYXNDb21taXRDb250ZXh0KToKLSAgICBERUZBVUxU
X0xJTUlUID0gMTAwCi0KLSAgICBkZWYgZGVmYXVsdChzZWxmKToKLSAgICAgICAgaWYgcmVxdWVz
dC5tZXRob2QgPT0gJ1BPU1QnOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYucmVnaXN0ZXIoKQot
ICAgICAgICByZXR1cm4gc2VsZi5maW5kKCkKLQotICAgIEB1dWlkX3JhbmdlX2Zvcl9jb21taXRf
cmFuZ2VfcXVlcnkoKQotICAgIEBsaW1pdF9mb3JfcXVlcnkoREVGQVVMVF9MSU1JVCkKLSAgICBk
ZWYgX2ZpbmQoc2VsZiwgcmVwb3NpdG9yeV9pZD1Ob25lLCBicmFuY2g9Tm9uZSwgaWQ9Tm9uZSwg
dXVpZD1Ob25lLCB0aW1lc3RhbXA9Tm9uZSwgbGltaXQ9Tm9uZSwgYmVnaW49Tm9uZSwgZW5kPU5v
bmUsICoqa3dhcmdzKToKLSAgICAgICAgQXNzZXJ0UmVxdWVzdC5xdWVyeV9rd2FyZ3NfZW1wdHko
Kiprd2FyZ3MpCi0KLSAgICAgICAgd2l0aCBzZWxmLmNvbW1pdF9jb250ZXh0OgotICAgICAgICAg
ICAgaWYgbm90IHJlcG9zaXRvcnlfaWQ6Ci0gICAgICAgICAgICAgICAgcmVwb3NpdG9yeV9pZCA9
IHNlbGYuY29tbWl0X2NvbnRleHQucmVwb3NpdG9yaWVzLmtleXMoKQotICAgICAgICAgICAgZm9y
IHJlcG9zaXRvcnkgaW4gcmVwb3NpdG9yeV9pZDoKLSAgICAgICAgICAgICAgICBpZiByZXBvc2l0
b3J5IG5vdCBpbiBzZWxmLmNvbW1pdF9jb250ZXh0LnJlcG9zaXRvcmllcy5rZXlzKCk6Ci0gICAg
ICAgICAgICAgICAgICAgIGFib3J0KDQwNCwgZGVzY3JpcHRpb249ZiJcJ3tyZXBvc2l0b3J5fVwn
IGlzIG5vdCBhIHJlZ2lzdGVyZWQgcmVwb3NpdG9yeSIpCi0gICAgICAgICAgICBpZiBub3QgYnJh
bmNoOgotICAgICAgICAgICAgICAgIGJyYW5jaCA9IFtOb25lXQotCi0gICAgICAgICAgICBpZiBi
b29sKGlkKSArIGJvb2wodXVpZCkgKyBib29sKHRpbWVzdGFtcCkgPiAxOgotICAgICAgICAgICAg
ICAgIGFib3J0KDQwMCwgZGVzY3JpcHRpb249J0NhbiBvbmx5IHNlYXJjaCBieSBvbmUgb2YgW2Nv
bW1pdCBpZCwgY29tbWl0IHV1aWQsIHRpbWVzdGFtcF0gaW4gYSBzaW5nbGUgcmVxdWVzdCcpCi0K
LSAgICAgICAgICAgIHJlc3VsdCA9IFtdCi0gICAgICAgICAgICBmb3IgcmVwb3NpdG9yeSBpbiBy
ZXBvc2l0b3J5X2lkOgotICAgICAgICAgICAgICAgICMgTGltaXQgbWFrZXMgbW9zdCBzZW5zZSBv
biBhIHBlci1yZXBvc2l0b3J5IGJhc2lzCi0gICAgICAgICAgICAgICAgcmVzdWx0c19mb3JfcmVw
byA9IFtdCi0KLSAgICAgICAgICAgICAgICBmb3IgYiBpbiBicmFuY2g6Ci0gICAgICAgICAgICAg
ICAgICAgIGlmIGxlbihyZXN1bHRzX2Zvcl9yZXBvKSA+PSBsaW1pdDoKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgICAgICAgICAgICAgaWYgaWQ6Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBmb3IgZWxtIGluIGlkOgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlc3VsdHNfZm9yX3JlcG8gKz0gc2VsZi5jb21taXRfY29udGV4dC5maW5kX2NvbW1pdHNf
YnlfaWQocmVwb3NpdG9yeSwgYiwgZWxtLCBsaW1pdD1saW1pdCAtIGxlbihyZXN1bHRzX2Zvcl9y
ZXBvKSkKLSAgICAgICAgICAgICAgICAgICAgZWxpZiB1dWlkOgotICAgICAgICAgICAgICAgICAg
ICAgICAgZm9yIGVsbSBpbiB1dWlkOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3Vs
dHNfZm9yX3JlcG8gKz0gc2VsZi5jb21taXRfY29udGV4dC5maW5kX2NvbW1pdHNfYnlfdXVpZChy
ZXBvc2l0b3J5LCBiLCBpbnQoZWxtKSwgbGltaXQ9bGltaXQgLSBsZW4ocmVzdWx0c19mb3JfcmVw
bykpCi0gICAgICAgICAgICAgICAgICAgIGVsaWYgdGltZXN0YW1wOgotICAgICAgICAgICAgICAg
ICAgICAgICAgZm9yIGVsbSBpbiB0aW1lc3RhbXA6Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmVzdWx0c19mb3JfcmVwbyArPSBzZWxmLmNvbW1pdF9jb250ZXh0LmZpbmRfY29tbWl0c19i
eV90aW1lc3RhbXAocmVwb3NpdG9yeSwgYiwgcm91bmQoZmxvYXQoZWxtKSksIGxpbWl0PWxpbWl0
IC0gbGVuKHJlc3VsdHNfZm9yX3JlcG8pKQotICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAg
ICAgICAgICAgICAgICAgICAgICAgcmVzdWx0c19mb3JfcmVwbyArPSBzZWxmLmNvbW1pdF9jb250
ZXh0LmZpbmRfY29tbWl0c19pbl9yYW5nZShyZXBvc2l0b3J5LCBiLCBsaW1pdD1saW1pdCAtIGxl
bihyZXN1bHRzX2Zvcl9yZXBvKSwgYmVnaW49YmVnaW4sIGVuZD1lbmQpCi0gICAgICAgICAgICAg
ICAgcmVzdWx0ICs9IHJlc3VsdHNfZm9yX3JlcG8KLQotICAgICAgICAgICAgcmV0dXJuIHNvcnRl
ZChyZXN1bHQpCi0KLSAgICBkZWYgZmluZChzZWxmKToKLSAgICAgICAgQXNzZXJ0UmVxdWVzdC5p
c190eXBlKCkKLSAgICAgICAgcmVzdWx0ID0gc2VsZi5fZmluZCgqKnJlcXVlc3QuYXJncy50b19k
aWN0KGZsYXQ9RmFsc2UpKQotICAgICAgICBpZiBub3QgcmVzdWx0OgotICAgICAgICAgICAgYWJv
cnQoNDA0LCBkZXNjcmlwdGlvbj0nTm8gY29tbWl0cyBmb3VuZCBtYXRjaGluZyB0aGUgc3BlY2lm
aWVkIGNyaXRlcmlhJykKLSAgICAgICAgcmV0dXJuIGpzb25pZnkoQ29tbWl0LkVuY29kZXIoKS5k
ZWZhdWx0KHJlc3VsdCkpCi0KLSAgICBkZWYgcmVwb3NpdG9yaWVzKHNlbGYpOgotICAgICAgICBB
c3NlcnRSZXF1ZXN0LmlzX3R5cGUoKQotICAgICAgICBBc3NlcnRSZXF1ZXN0Lm5vX3F1ZXJ5KCkK
LSAgICAgICAgcmV0dXJuIGpzb25pZnkoc29ydGVkKHNlbGYuY29tbWl0X2NvbnRleHQucmVwb3Np
dG9yaWVzLmtleXMoKSkpCi0KLSAgICBAcXVlcnlfYXNfa3dhcmdzKCkKLSAgICBAbGltaXRfZm9y
X3F1ZXJ5KERFRkFVTFRfTElNSVQpCi0gICAgZGVmIGJyYW5jaGVzKHNlbGYsIHJlcG9zaXRvcnlf
aWQ9Tm9uZSwgYnJhbmNoPU5vbmUsIGxpbWl0PU5vbmUsICoqa3dhcmdzKToKLSAgICAgICAgQXNz
ZXJ0UmVxdWVzdC5pc190eXBlKCkKLSAgICAgICAgQXNzZXJ0UmVxdWVzdC5xdWVyeV9rd2FyZ3Nf
ZW1wdHkoKiprd2FyZ3MpCi0KLSAgICAgICAgcmVzdWx0ID0gZGVmYXVsdGRpY3QobGlzdCkKLSAg
ICAgICAgd2l0aCBzZWxmLmNvbW1pdF9jb250ZXh0OgotICAgICAgICAgICAgZm9yIHJlcG9zaXRv
cnkgaW4gcmVwb3NpdG9yeV9pZCBvciBzZWxmLmNvbW1pdF9jb250ZXh0LnJlcG9zaXRvcmllcy5r
ZXlzKCk6Ci0gICAgICAgICAgICAgICAgbGltaXRfZm9yX3JlcG8gPSBsaW1pdAotICAgICAgICAg
ICAgICAgIGZvciBiIGluIGJyYW5jaCBvciBbTm9uZV06Ci0gICAgICAgICAgICAgICAgICAgIGlm
IG5vdCBsaW1pdF9mb3JfcmVwbzoKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0g
ICAgICAgICAgICAgICAgICAgIG1hdGNoaW5nX2JyYW5jaGVzID0gc2VsZi5jb21taXRfY29udGV4
dC5icmFuY2hlcyhyZXBvc2l0b3J5LCBicmFuY2g9YiwgbGltaXQ9bGltaXRfZm9yX3JlcG8pCi0g
ICAgICAgICAgICAgICAgICAgIGlmIG5vdCBtYXRjaGluZ19icmFuY2hlczoKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgICAgIGxpbWl0X2Zvcl9yZXBv
IC09IGxlbihtYXRjaGluZ19icmFuY2hlcykKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0W3Jl
cG9zaXRvcnldICs9IG1hdGNoaW5nX2JyYW5jaGVzCi0KLSAgICAgICAgcmV0dXJuIGpzb25pZnko
cmVzdWx0KQotCi0gICAgQHF1ZXJ5X2FzX2t3YXJncygpCi0gICAgZGVmIHNpYmxpbmdzKHNlbGYs
IGxpbWl0PU5vbmUsICoqa3dhcmdzKToKLSAgICAgICAgQXNzZXJ0UmVxdWVzdC5pc190eXBlKCkK
LSAgICAgICAgQXNzZXJ0UmVxdWVzdC5xdWVyeV9rd2FyZ3NfZW1wdHkobGltaXQ9bGltaXQpCi0K
LSAgICAgICAgd2l0aCBzZWxmLmNvbW1pdF9jb250ZXh0OgotICAgICAgICAgICAgY29tbWl0cyA9
IHNlbGYuX2ZpbmQoKiprd2FyZ3MpCi0gICAgICAgICAgICBpZiBub3QgY29tbWl0czoKLSAgICAg
ICAgICAgICAgICBhYm9ydCg0MDQsIGRlc2NyaXB0aW9uPSdObyBjb21taXRzIGZvdW5kIG1hdGNo
aW5nIHRoZSBzcGVjaWZpZWQgY3JpdGVyaWEnKQotICAgICAgICAgICAgaWYgbGVuKGNvbW1pdHMp
ID4gMToKLSAgICAgICAgICAgICAgICBhYm9ydCg0MDQsIGRlc2NyaXB0aW9uPWYne2xlbihjb21t
aXRzKX0gY29tbWl0cyBmb3VuZCBtYXRjaGluZyB0aGUgc3BlY2lmaWVkIGNyaXRlcmlhJykKLQot
ICAgICAgICAgICAgcmVwb3NpdG9yaWVzID0gc29ydGVkKHNlbGYuY29tbWl0X2NvbnRleHQucmVw
b3NpdG9yaWVzLmtleXMoKSkKLSAgICAgICAgICAgIHJlcG9zaXRvcmllcy5yZW1vdmUoY29tbWl0
c1swXS5yZXBvc2l0b3J5X2lkKQotICAgICAgICAgICAgcmV0dXJuIGpzb25pZnkoQ29tbWl0LkVu
Y29kZXIoKS5kZWZhdWx0KHNlbGYuY29tbWl0X2NvbnRleHQuc2libGluZ19jb21taXRzKGNvbW1p
dHNbMF0sIHJlcG9zaXRvcmllcykpKQotCi0gICAgQHF1ZXJ5X2FzX2t3YXJncygpCi0gICAgZGVm
IG5leHQoc2VsZiwgbGltaXQ9Tm9uZSwgKiprd2FyZ3MpOgotICAgICAgICBBc3NlcnRSZXF1ZXN0
LmlzX3R5cGUoKQotICAgICAgICBBc3NlcnRSZXF1ZXN0LnF1ZXJ5X2t3YXJnc19lbXB0eShsaW1p
dD1saW1pdCkKLQotICAgICAgICB3aXRoIHNlbGYuY29tbWl0X2NvbnRleHQ6Ci0gICAgICAgICAg
ICBjb21taXRzID0gc2VsZi5fZmluZCgqKmt3YXJncykKLSAgICAgICAgICAgIGlmIG5vdCBjb21t
aXRzOgotICAgICAgICAgICAgICAgIGFib3J0KDQwNCwgZGVzY3JpcHRpb249J05vIGNvbW1pdHMg
Zm91bmQgbWF0Y2hpbmcgdGhlIHNwZWNpZmllZCBjcml0ZXJpYScpCi0gICAgICAgICAgICBpZiBs
ZW4oY29tbWl0cykgPiAxOgotICAgICAgICAgICAgICAgIGFib3J0KDQwNCwgZGVzY3JpcHRpb249
Zid7bGVuKGNvbW1pdHMpfSBjb21taXRzIGZvdW5kIG1hdGNoaW5nIHRoZSBzcGVjaWZpZWQgY3Jp
dGVyaWEnKQotCi0gICAgICAgICAgICBjb21taXQgPSBzZWxmLmNvbW1pdF9jb250ZXh0Lm5leHRf
Y29tbWl0KGNvbW1pdHNbMF0pCi0gICAgICAgICAgICByZXR1cm4ganNvbmlmeShDb21taXQuRW5j
b2RlcigpLmRlZmF1bHQoW2NvbW1pdF0gaWYgY29tbWl0IGVsc2UgW10pKQotCi0gICAgQHF1ZXJ5
X2FzX2t3YXJncygpCi0gICAgZGVmIHByZXZpb3VzKHNlbGYsIGxpbWl0PU5vbmUsICoqa3dhcmdz
KToKLSAgICAgICAgQXNzZXJ0UmVxdWVzdC5pc190eXBlKCkKLSAgICAgICAgQXNzZXJ0UmVxdWVz
dC5xdWVyeV9rd2FyZ3NfZW1wdHkobGltaXQ9bGltaXQpCi0KLSAgICAgICAgd2l0aCBzZWxmLmNv
bW1pdF9jb250ZXh0OgotICAgICAgICAgICAgY29tbWl0cyA9IHNlbGYuX2ZpbmQoKiprd2FyZ3Mp
Ci0gICAgICAgICAgICBpZiBub3QgY29tbWl0czoKLSAgICAgICAgICAgICAgICBhYm9ydCg0MDQs
IGRlc2NyaXB0aW9uPSdObyBjb21taXRzIGZvdW5kIG1hdGNoaW5nIHRoZSBzcGVjaWZpZWQgY3Jp
dGVyaWEnKQotICAgICAgICAgICAgaWYgbGVuKGNvbW1pdHMpID4gMToKLSAgICAgICAgICAgICAg
ICBhYm9ydCg0MDQsIGRlc2NyaXB0aW9uPWYne2xlbihjb21taXRzKX0gY29tbWl0cyBmb3VuZCBt
YXRjaGluZyB0aGUgc3BlY2lmaWVkIGNyaXRlcmlhJykKLQotICAgICAgICAgICAgY29tbWl0ID0g
c2VsZi5jb21taXRfY29udGV4dC5wcmV2aW91c19jb21taXQoY29tbWl0c1swXSkKLSAgICAgICAg
ICAgIHJldHVybiBqc29uaWZ5KENvbW1pdC5FbmNvZGVyKCkuZGVmYXVsdChbY29tbWl0XSBpZiBj
b21taXQgZWxzZSBbXSkpCi0KLSAgICBkZWYgcmVnaXN0ZXIoc2VsZiwgY29tbWl0PU5vbmUpOgot
ICAgICAgICBpc19lbmRwb2ludCA9IG5vdCBib29sKGNvbW1pdCkKLSAgICAgICAgaWYgaXNfZW5k
cG9pbnQ6Ci0gICAgICAgICAgICBBc3NlcnRSZXF1ZXN0LmlzX3R5cGUoWydQT1NUJ10pCi0gICAg
ICAgICAgICBBc3NlcnRSZXF1ZXN0Lm5vX3F1ZXJ5KCkKLQotICAgICAgICBpZiBpc19lbmRwb2lu
dDoKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBjb21taXQgPSByZXF1ZXN0LmZv
cm0gb3IganNvbi5sb2FkcyhyZXF1ZXN0LmdldF9kYXRhKCkpCi0gICAgICAgICAgICAgICAgaWYg
J2FwaV9rZXknIGluIGNvbW1pdDoKLSAgICAgICAgICAgICAgICAgICAgZGVsIGNvbW1pdFsnYXBp
X2tleSddCi0gICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKLSAgICAgICAgICAgICAgICBh
Ym9ydCg0MDAsIGRlc2NyaXB0aW9uPSdFeHBlY3RlZCB1cGxvYWRlZCBkYXRhIHRvIGJlIGpzb24n
KQotCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuY29tbWl0X2NvbnRleHQucmVnaXN0
ZXJfY29tbWl0KENvbW1pdC5mcm9tX2pzb24oY29tbWl0KSkKLSAgICAgICAgICAgIGlmIGlzX2Vu
ZHBvaW50OgotICAgICAgICAgICAgICAgIHJldHVybiBqc29uaWZ5KHsnc3RhdHVzJzogJ29rJ30p
Ci0gICAgICAgICAgICByZXR1cm4gQ29tbWl0LmZyb21fanNvbihjb21taXQpCi0gICAgICAgIGV4
Y2VwdCBWYWx1ZUVycm9yOgotICAgICAgICAgICAgcGFzcwotCi0gICAgICAgIHJlcXVpcmVkX2Fy
Z3MgPSBbJ3JlcG9zaXRvcnlfaWQnLCAnaWQnXQotICAgICAgICBvcHRpb25hbF9hcmdzID0gWydi
cmFuY2gnXQotICAgICAgICBmb3IgYXJnIGluIHJlcXVpcmVkX2FyZ3M6Ci0gICAgICAgICAgICBp
ZiBhcmcgbm90IGluIGNvbW1pdDoKLSAgICAgICAgICAgICAgICBhYm9ydCg0MDAsIGRlc2NyaXB0
aW9uPWYiJ3thcmd9JyByZXF1aXJlZCB0byBkZWZpbmUgY29tbWl0IikKLQotICAgICAgICBmb3Ig
YXJnIGluIGNvbW1pdC5rZXlzKCk6Ci0gICAgICAgICAgICBpZiBhcmcgaW4gcmVxdWlyZWRfYXJn
cyArIG9wdGlvbmFsX2FyZ3M6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAg
IGlmIGFyZyBpbiBbJ3RpbWVzdGFtcCcsICdvcmRlcicsICdjb21taXR0ZXInLCAnbWVzc2FnZSdd
OgotICAgICAgICAgICAgICAgIGFib3J0KDQwMCwgZGVzY3JpcHRpb249J05vdCBlbm91Z2ggYXJn
dW1lbnRzIHByb3ZpZGVkIHRvIGRlZmluZSBhIGNvbW1pdCwgYnV0IHRvbyBtYW55IHRvIHNlYXJj
aCBmb3IgYSBjb21taXQnKQotICAgICAgICAgICAgYWJvcnQoNDAwLCBkZXNjcmlwdGlvbj1mIid7
YXJnfScgaXMgbm90IHZhbGlkIGZvciBkZWZpbmluZyBjb21taXRzIikKLQotICAgICAgICB0cnk6
Ci0gICAgICAgICAgICBjb21taXQgPSBzZWxmLmNvbW1pdF9jb250ZXh0LnJlZ2lzdGVyX2NvbW1p
dF93aXRoX3JlcG9fYW5kX2lkKAotICAgICAgICAgICAgICAgIHJlcG9zaXRvcnlfaWQ9Y29tbWl0
LmdldCgncmVwb3NpdG9yeV9pZCcpLAotICAgICAgICAgICAgICAgIGJyYW5jaD1jb21taXQuZ2V0
KCdicmFuY2gnKSwKLSAgICAgICAgICAgICAgICBjb21taXRfaWQ9Y29tbWl0LmdldCgnaWQnKSwK
LSAgICAgICAgICAgICkKLSAgICAgICAgZXhjZXB0IChSdW50aW1lRXJyb3IsIFNDTUV4Y2VwdGlv
bikgYXMgZXJyb3I6Ci0gICAgICAgICAgICBhYm9ydCg0MDQsIGRlc2NyaXB0aW9uPXN0cihlcnJv
cikpCi0KLSAgICAgICAgaWYgaXNfZW5kcG9pbnQ6Ci0gICAgICAgICAgICByZXR1cm4ganNvbmlm
eSh7J3N0YXR1cyc6ICdvayd9KQotICAgICAgICByZXR1cm4gY29tbWl0CkluZGV4OiBUb29scy9y
ZXN1bHRzZGJweS9yZXN1bHRzZGJweS9jb250cm9sbGVyL2NvbW1pdF9jb250cm9sbGVyX3VuaXR0
ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRy
b2xsZXIvY29tbWl0X2NvbnRyb2xsZXJfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI2NTUzMSkKKysr
IFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvY29tbWl0X2NvbnRyb2xs
ZXJfdW5pdHRlc3QucHkJKG5vbmV4aXN0ZW50KQpAQCAtMSwyNzUgKzAsMCBAQAotIyBDb3B5cmln
aHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jCi0jIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0j
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SCi0jIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IK
LSMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIKLSMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSMgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotZnJvbSBmYWtlcmVkaXMgaW1wb3J0IEZha2VT
dHJpY3RSZWRpcwotZnJvbSByZWRpcyBpbXBvcnQgU3RyaWN0UmVkaXMKLWZyb20gcmVzdWx0c2Ri
cHkuY29udHJvbGxlci5hcGlfcm91dGVzIGltcG9ydCBBUElSb3V0ZXMKLWZyb20gcmVzdWx0c2Ri
cHkuY29udHJvbGxlci5jb21taXQgaW1wb3J0IENvbW1pdAotZnJvbSByZXN1bHRzZGJweS5mbGFz
a19zdXBwb3J0LmZsYXNrX3Rlc3RjYXNlIGltcG9ydCBGbGFza1Rlc3RDYXNlCi1mcm9tIHJlc3Vs
dHNkYnB5Lm1vZGVsLmNhc3NhbmRyYV9jb250ZXh0IGltcG9ydCBDYXNzYW5kcmFDb250ZXh0Ci1m
cm9tIHJlc3VsdHNkYnB5Lm1vZGVsLm1vY2tfY2Fzc2FuZHJhX2NvbnRleHQgaW1wb3J0IE1vY2tD
YXNzYW5kcmFDb250ZXh0Ci1mcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLm1vY2tfcmVwb3NpdG9yeSBp
bXBvcnQgTW9ja1N0YXNoUmVwb3NpdG9yeSwgTW9ja1NWTlJlcG9zaXRvcnkKLWZyb20gcmVzdWx0
c2RicHkubW9kZWwubW9kZWwgaW1wb3J0IE1vZGVsCi1mcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLndh
aXRfZm9yX2RvY2tlcl90ZXN0X2Nhc2UgaW1wb3J0IFdhaXRGb3JEb2NrZXJUZXN0Q2FzZQotCi0K
LWNsYXNzIENvbW1pdENvbnRyb2xsZXJUZXN0KEZsYXNrVGVzdENhc2UsIFdhaXRGb3JEb2NrZXJU
ZXN0Q2FzZSk6Ci0gICAgS0VZU1BBQ0UgPSAnY29tbWl0X2NvbnRyb2xsZXJfdGVzdF9rZXlzcGFj
ZScKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBzZXR1cF93ZWJzZXJ2ZXIoY2xzLCBhcHAs
IHJlZGlzPVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCk6Ci0gICAgICAg
IHJlZGlzX2luc3RhbmNlID0gcmVkaXMoKQotICAgICAgICBzYWZhcmkgPSBNb2NrU3Rhc2hSZXBv
c2l0b3J5LnNhZmFyaShyZWRpc19pbnN0YW5jZSkKLSAgICAgICAgd2Via2l0ID0gTW9ja1NWTlJl
cG9zaXRvcnkud2Via2l0KHJlZGlzX2luc3RhbmNlKQotCi0gICAgICAgIGNhc3NhbmRyYS5kcm9w
X2tleXNwYWNlKGtleXNwYWNlPWNscy5LRVlTUEFDRSkKLSAgICAgICAgY2Fzc2FuZHJhX2luc3Rh
bmNlID0gY2Fzc2FuZHJhKGtleXNwYWNlPWNscy5LRVlTUEFDRSwgY3JlYXRlX2tleXNwYWNlPVRy
dWUpCi0KLSAgICAgICAgYXBwLnJlZ2lzdGVyX2JsdWVwcmludChBUElSb3V0ZXMoTW9kZWwocmVk
aXM9cmVkaXNfaW5zdGFuY2UsIGNhc3NhbmRyYT1jYXNzYW5kcmFfaW5zdGFuY2UsIHJlcG9zaXRv
cmllcz1bc2FmYXJpLCB3ZWJraXRdKSkpCi0KLSAgICBkZWYgcmVnaXN0ZXJfYWxsX2NvbW1pdHMo
c2VsZiwgY2xpZW50KToKLSAgICAgICAgZm9yIG1vY2tfcmVwb3NpdG9yeSBpbiBbTW9ja1N0YXNo
UmVwb3NpdG9yeS5zYWZhcmkoKSwgTW9ja1NWTlJlcG9zaXRvcnkud2Via2l0KCldOgotICAgICAg
ICAgICAgZm9yIGNvbW1pdF9saXN0IGluIG1vY2tfcmVwb3NpdG9yeS5jb21taXRzLnZhbHVlcygp
OgotICAgICAgICAgICAgICAgIGZvciBjb21taXQgaW4gY29tbWl0X2xpc3Q6Ci0gICAgICAgICAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMjAwLCBjbGllbnQucG9zdChzZWxmLlVSTCArICcv
YXBpL2NvbW1pdHMvcmVnaXN0ZXInLCBkYXRhPUNvbW1pdC5FbmNvZGVyKCkuZGVmYXVsdChjb21t
aXQpKS5zdGF0dXNfY29kZSkKLQotICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9u
b19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tD
YXNzYW5kcmFDb250ZXh0KQotICAgIEBGbGFza1Rlc3RDYXNlLnJ1bl93aXRoX3dlYnNlcnZlcigp
Ci0gICAgZGVmIHRlc3RfcmVwb3NpdG9yaWVzKHNlbGYsIGNsaWVudCwgKiprd2FyZ3MpOgotICAg
ICAgICByZXNwb25zZSA9IGNsaWVudC5nZXQoc2VsZi5VUkwgKyAnL2FwaS9jb21taXRzL3JlcG9z
aXRvcmllcycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2Uuc3RhdHVzX2NvZGUs
IDIwMCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ3NhZmFyaScsICd3ZWJraXQnXSwgc29y
dGVkKHJlc3BvbnNlLmpzb24oKSkpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg0MDAsIGNs
aWVudC5nZXQoc2VsZi5VUkwgKyAnL2FwaS9jb21taXRzL3JlcG9zaXRvcmllcz9yZXBvc2l0b3J5
X2lkPXNhZmFyaScpLnN0YXR1c19jb2RlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDQwNSwg
Y2xpZW50LnBvc3Qoc2VsZi5VUkwgKyAnL2FwaS9jb21taXRzL3JlcG9zaXRvcmllcycpLnN0YXR1
c19jb2RlKQotCi0gICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlciht
b2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNv
bnRleHQpCi0gICAgQEZsYXNrVGVzdENhc2UucnVuX3dpdGhfd2Vic2VydmVyKCkKLSAgICBkZWYg
dGVzdF9icmFuY2hlcyhzZWxmLCBjbGllbnQsICoqa3dhcmdzKToKLSAgICAgICAgc2VsZi5yZWdp
c3Rlcl9hbGxfY29tbWl0cyhjbGllbnQpCi0gICAgICAgIHJlc3BvbnNlID0gY2xpZW50LmdldChz
ZWxmLlVSTCArICcvYXBpL2NvbW1pdHMvYnJhbmNoZXMnKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHJlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
ZGljdCh3ZWJraXQ9WydzYWZhcmktNjA2LWJyYW5jaCcsICd0cnVuayddLCBzYWZhcmk9WydtYXN0
ZXInLCAnc2FmYXJpLTYwNi1icmFuY2gnXSksIHJlc3BvbnNlLmpzb24oKSkKLQotICAgICAgICBy
ZXNwb25zZSA9IGNsaWVudC5nZXQoc2VsZi5VUkwgKyAnL2FwaS9jb21taXRzL2JyYW5jaGVzP2Jy
YW5jaD1zYWZhcmknKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLnN0YXR1c19j
b2RlLCAyMDApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGljdCh3ZWJraXQ9WydzYWZhcmkt
NjA2LWJyYW5jaCddLCBzYWZhcmk9WydzYWZhcmktNjA2LWJyYW5jaCddKSwgcmVzcG9uc2UuanNv
bigpKQotCi0gICAgICAgIHJlc3BvbnNlID0gY2xpZW50LmdldChzZWxmLlVSTCArICcvYXBpL2Nv
bW1pdHMvYnJhbmNoZXM/cmVwb3NpdG9yeV9pZD1zYWZhcmknKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHJlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoZGljdChzYWZhcmk9WydtYXN0ZXInLCAnc2FmYXJpLTYwNi1icmFuY2gnXSksIHJlc3BvbnNl
Lmpzb24oKSkKLQotICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIo
bW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFD
b250ZXh0KQotICAgIEBGbGFza1Rlc3RDYXNlLnJ1bl93aXRoX3dlYnNlcnZlcigpCi0gICAgZGVm
IHRlc3RfcmVnaXN0ZXJfZXJyb3JzKHNlbGYsIGNsaWVudCwgKiprd2FyZ3MpOgotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKDQwMCwgY2xpZW50LnBvc3Qoc2VsZi5VUkwgKyAnL2FwaS9jb21taXRz
L3JlZ2lzdGVyJykuc3RhdHVzX2NvZGUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoNDA1LCBj
bGllbnQuZ2V0KHNlbGYuVVJMICsgJy9hcGkvY29tbWl0cy9yZWdpc3RlcicpLnN0YXR1c19jb2Rl
KQotCi0gICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3Jl
ZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQp
Ci0gICAgQEZsYXNrVGVzdENhc2UucnVuX3dpdGhfd2Vic2VydmVyKCkKLSAgICBkZWYgdGVzdF9y
ZWdpc3Rlcl92aWFfcG9zdChzZWxmLCBjbGllbnQsICoqa3dhcmdzKToKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgyMDAsIGNsaWVudC5wb3N0KHNlbGYuVVJMICsgJy9hcGkvY29tbWl0cycsIGRh
dGE9ZGljdChyZXBvc2l0b3J5X2lkPSdzYWZhcmknLCBpZD0nYmI2YmRhNWY0NGRkMicpKS5zdGF0
dXNfY29kZSkKLSAgICAgICAgcmVzcG9uc2UgPSBjbGllbnQuZ2V0KHNlbGYuVVJMICsgJy9hcGkv
Y29tbWl0cz9yZXBvc2l0b3J5X2lkPXNhZmFyaScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
MjAwLCByZXNwb25zZS5zdGF0dXNfY29kZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAg
ICAgICAgICAgIENvbW1pdC5mcm9tX2pzb24ocmVzcG9uc2UuanNvbigpWzBdKSwKLSAgICAgICAg
ICAgIE1vY2tTdGFzaFJlcG9zaXRvcnkuc2FmYXJpKCkuY29tbWl0X2Zvcl9pZCgnYmI2YmRhNWY0
NGRkMicpLAotICAgICAgICApCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyMDAsIGNsaWVu
dC5wb3N0KHNlbGYuVVJMICsgJy9hcGkvY29tbWl0cycsIGRhdGE9ZGljdChyZXBvc2l0b3J5X2lk
PSd3ZWJraXQnLCBpZD0nMjM2NTQ0JykpLnN0YXR1c19jb2RlKQotICAgICAgICByZXNwb25zZSA9
IGNsaWVudC5nZXQoc2VsZi5VUkwgKyAnL2FwaS9jb21taXRzP3JlcG9zaXRvcnlfaWQ9d2Via2l0
JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyMDAsIHJlc3BvbnNlLnN0YXR1c19jb2RlKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgQ29tbWl0LmZyb21fanNvbihy
ZXNwb25zZS5qc29uKClbMF0pLAotICAgICAgICAgICAgTW9ja1NWTlJlcG9zaXRvcnkud2Via2l0
KCkuY29tbWl0X2Zvcl9pZCgnMjM2NTQ0JyksCi0gICAgICAgICkKLQotICAgIEBXYWl0Rm9yRG9j
a2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMs
IG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQotICAgIEBGbGFza1Rlc3RDYXNl
LnJ1bl93aXRoX3dlYnNlcnZlcigpCi0gICAgZGVmIHRlc3RfcmVnaXN0ZXJfd2l0aF9wYXJ0aWFs
X2NvbW1pdChzZWxmLCBjbGllbnQsICoqa3dhcmdzKToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgyMDAsIGNsaWVudC5wb3N0KHNlbGYuVVJMICsgJy9hcGkvY29tbWl0cycsIGRhdGE9ZGljdChy
ZXBvc2l0b3J5X2lkPSdzYWZhcmknLCBpZD0nYmI2YmRhNWY0NGRkMicpKS5zdGF0dXNfY29kZSkK
LSAgICAgICAgcmVzcG9uc2UgPSBjbGllbnQuZ2V0KHNlbGYuVVJMICsgJy9hcGkvY29tbWl0cz9y
ZXBvc2l0b3J5X2lkPXNhZmFyaScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMjAwLCByZXNw
b25zZS5zdGF0dXNfY29kZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAg
IENvbW1pdC5mcm9tX2pzb24ocmVzcG9uc2UuanNvbigpWzBdKSwKLSAgICAgICAgICAgIE1vY2tT
dGFzaFJlcG9zaXRvcnkuc2FmYXJpKCkuY29tbWl0X2Zvcl9pZCgnYmI2YmRhNWY0NGRkMicpLAot
ICAgICAgICApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoNDA0LCBjbGllbnQucG9zdChzZWxm
LlVSTCArICcvYXBpL2NvbW1pdHMnLCBkYXRhPWRpY3QocmVwb3NpdG9yeV9pZD0nc2FmYXJpJywg
aWQ9J2FhYWFhYWFhYWFhYWEnKSkuc3RhdHVzX2NvZGUpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgyMDAsIGNsaWVudC5wb3N0KHNlbGYuVVJMICsgJy9hcGkvY29tbWl0cycsIGRhdGE9ZGlj
dChyZXBvc2l0b3J5X2lkPSd3ZWJraXQnLCBpZD0nMjM2NTQ0JykpLnN0YXR1c19jb2RlKQotICAg
ICAgICByZXNwb25zZSA9IGNsaWVudC5nZXQoc2VsZi5VUkwgKyAnL2FwaS9jb21taXRzP3JlcG9z
aXRvcnlfaWQ9d2Via2l0JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyMDAsIHJlc3BvbnNl
LnN0YXR1c19jb2RlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgQ29t
bWl0LmZyb21fanNvbihyZXNwb25zZS5qc29uKClbMF0pLAotICAgICAgICAgICAgTW9ja1NWTlJl
cG9zaXRvcnkud2Via2l0KCkuY29tbWl0X2Zvcl9pZCgnMjM2NTQ0JyksCi0gICAgICAgICkKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCg0MDQsIGNsaWVudC5wb3N0KHNlbGYuVVJMICsgJy9hcGkv
Y29tbWl0cycsIGRhdGE9ZGljdChyZXBvc2l0b3J5X2lkPSd3ZWJraXQnLCBpZD0nMCcpKS5zdGF0
dXNfY29kZSkKLQotICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIo
bW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFD
b250ZXh0KQotICAgIEBGbGFza1Rlc3RDYXNlLnJ1bl93aXRoX3dlYnNlcnZlcigpCi0gICAgZGVm
IHRlc3RfcmVnaXN0ZXJfd2l0aF9mdWxsX2NvbW1pdChzZWxmLCBjbGllbnQsICoqa3dhcmdzKToK
LSAgICAgICAgZ2l0X2NvbW1pdCA9IE1vY2tTdGFzaFJlcG9zaXRvcnkuc2FmYXJpKCkuY29tbWl0
X2Zvcl9pZCgnYmI2YmRhNWY0NGRkMicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMjAwLCBj
bGllbnQucG9zdChzZWxmLlVSTCArICcvYXBpL2NvbW1pdHMnLCBkYXRhPUNvbW1pdC5FbmNvZGVy
KCkuZGVmYXVsdChnaXRfY29tbWl0KSkuc3RhdHVzX2NvZGUpCi0gICAgICAgIHJlc3BvbnNlID0g
Y2xpZW50LmdldChzZWxmLlVSTCArICcvYXBpL2NvbW1pdHM/cmVwb3NpdG9yeV9pZD1zYWZhcmkn
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDIwMCwgcmVzcG9uc2Uuc3RhdHVzX2NvZGUpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQ29tbWl0LmZyb21fanNvbihyZXNwb25zZS5qc29uKClb
MF0pLCBnaXRfY29tbWl0KQotCi0gICAgICAgIHN2bl9jb21taXQgPSBNb2NrU1ZOUmVwb3NpdG9y
eS53ZWJraXQoKS5jb21taXRfZm9yX2lkKCcyMzY1NDQnKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKDIwMCwgY2xpZW50LnBvc3Qoc2VsZi5VUkwgKyAnL2FwaS9jb21taXRzJywgZGF0YT1Db21t
aXQuRW5jb2RlcigpLmRlZmF1bHQoc3ZuX2NvbW1pdCkpLnN0YXR1c19jb2RlKQotICAgICAgICBy
ZXNwb25zZSA9IGNsaWVudC5nZXQoc2VsZi5VUkwgKyAnL2FwaS9jb21taXRzP3JlcG9zaXRvcnlf
aWQ9d2Via2l0JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyMDAsIHJlc3BvbnNlLnN0YXR1
c19jb2RlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKENvbW1pdC5mcm9tX2pzb24ocmVzcG9u
c2UuanNvbigpWzBdKSwgc3ZuX2NvbW1pdCkKLQotICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2Uu
bW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2Fu
ZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQotICAgIEBGbGFza1Rlc3RDYXNlLnJ1bl93aXRoX3dl
YnNlcnZlcigpCi0gICAgZGVmIHRlc3RfZmluZF9ub19jb21taXQoc2VsZiwgY2xpZW50LCAqKmt3
YXJncyk6Ci0gICAgICAgIHNlbGYucmVnaXN0ZXJfYWxsX2NvbW1pdHMoY2xpZW50KQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKDQwNCwgY2xpZW50LmdldChzZWxmLlVSTCArICcvYXBpL2NvbW1p
dHM/cmVwb3NpdG9yeV9pZD1zYWZhcmkmaWQ9MCcpLnN0YXR1c19jb2RlKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKDQwNCwgY2xpZW50LmdldChzZWxmLlVSTCArICcvYXBpL2NvbW1pdHM/cmVw
b3NpdG9yeV9pZD13ZWJraXQmaWQ9MCcpLnN0YXR1c19jb2RlKQotCi0gICAgQFdhaXRGb3JEb2Nr
ZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywg
bW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCi0gICAgQEZsYXNrVGVzdENhc2Uu
cnVuX3dpdGhfd2Vic2VydmVyKCkKLSAgICBkZWYgdGVzdF9maW5kX2lkKHNlbGYsIGNsaWVudCwg
Kiprd2FyZ3MpOgotICAgICAgICBzZWxmLnJlZ2lzdGVyX2FsbF9jb21taXRzKGNsaWVudCkKLSAg
ICAgICAgcmVzcG9uc2UgPSBjbGllbnQuZ2V0KHNlbGYuVVJMICsgJy9hcGkvY29tbWl0cz9pZD0z
MzY2MTBhOCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMjAwLCByZXNwb25zZS5zdGF0dXNf
Y29kZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4ocmVzcG9uc2UuanNvbigpKSkK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDb21taXQuZnJvbV9qc29uKHJlc3BvbnNlLmpzb24o
KVswXSksIE1vY2tTdGFzaFJlcG9zaXRvcnkuc2FmYXJpKCkuY29tbWl0X2Zvcl9pZChpZD0nMzM2
NjEwYTgnKSkKLQotICAgICAgICByZXNwb25zZSA9IGNsaWVudC5nZXQoc2VsZi5VUkwgKyAnL2Fw
aS9jb21taXRzP2lkPTIzNjU0MCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMjAwLCByZXNw
b25zZS5zdGF0dXNfY29kZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4ocmVzcG9u
c2UuanNvbigpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDb21taXQuZnJvbV9qc29uKHJl
c3BvbnNlLmpzb24oKVswXSksIE1vY2tTVk5SZXBvc2l0b3J5LndlYmtpdCgpLmNvbW1pdF9mb3Jf
aWQoaWQ9MjM2NTQwKSkKLQotICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19k
b2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNz
YW5kcmFDb250ZXh0KQotICAgIEBGbGFza1Rlc3RDYXNlLnJ1bl93aXRoX3dlYnNlcnZlcigpCi0g
ICAgZGVmIHRlc3RfZmluZF90aW1lc3RhbXAoc2VsZiwgY2xpZW50LCAqKmt3YXJncyk6Ci0gICAg
ICAgIHNlbGYucmVnaXN0ZXJfYWxsX2NvbW1pdHMoY2xpZW50KQotICAgICAgICByZXNwb25zZSA9
IGNsaWVudC5nZXQoc2VsZi5VUkwgKyAnL2FwaS9jb21taXRzP3RpbWVzdGFtcD0xNTM3NTUwNjg1
JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyMDAsIHJlc3BvbnNlLnN0YXR1c19jb2RlKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDIsIGxlbihyZXNwb25zZS5qc29uKCkpKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKFtDb21taXQuZnJvbV9qc29uKGVsZW1lbnQpIGZvciBlbGVtZW50
IGluIHJlc3BvbnNlLmpzb24oKV0sIFsKLSAgICAgICAgICAgIE1vY2tTdGFzaFJlcG9zaXRvcnku
c2FmYXJpKCkuY29tbWl0X2Zvcl9pZChpZD0nZTY0ODEwYTQnKSwKLSAgICAgICAgICAgIE1vY2tT
dGFzaFJlcG9zaXRvcnkuc2FmYXJpKCkuY29tbWl0X2Zvcl9pZChpZD0nN2JlNDA4NDInKSwKLSAg
ICAgICAgXSkKLQotICAgICAgICByZXNwb25zZSA9IGNsaWVudC5nZXQoc2VsZi5VUkwgKyAnL2Fw
aS9jb21taXRzP3RpbWVzdGFtcD0xNTM4MDQxNzkxLjgnKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKDIwMCwgcmVzcG9uc2Uuc3RhdHVzX2NvZGUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
MSwgbGVuKHJlc3BvbnNlLmpzb24oKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQ29tbWl0
LmZyb21fanNvbihyZXNwb25zZS5qc29uKClbMF0pLCBNb2NrU1ZOUmVwb3NpdG9yeS53ZWJraXQo
KS5jb21taXRfZm9yX2lkKGlkPTIzNjU0MSkpCi0KLSAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNl
Lm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3Nh
bmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKLSAgICBARmxhc2tUZXN0Q2FzZS5ydW5fd2l0aF93
ZWJzZXJ2ZXIoKQotICAgIGRlZiB0ZXN0X2ZpbmRfdXVpZChzZWxmLCBjbGllbnQsICoqa3dhcmdz
KToKLSAgICAgICAgc2VsZi5yZWdpc3Rlcl9hbGxfY29tbWl0cyhjbGllbnQpCi0gICAgICAgIHJl
c3BvbnNlID0gY2xpZW50LmdldChzZWxmLlVSTCArICcvYXBpL2NvbW1pdHM/dXVpZD0xNTM3NTUw
Njg1MDEnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDIwMCwgcmVzcG9uc2Uuc3RhdHVzX2Nv
ZGUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKHJlc3BvbnNlLmpzb24oKSkpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQ29tbWl0LmZyb21fanNvbihyZXNwb25zZS5qc29uKClb
MF0pLCBNb2NrU3Rhc2hSZXBvc2l0b3J5LnNhZmFyaSgpLmNvbW1pdF9mb3JfaWQoaWQ9JzdiZTQw
ODQyJykpCi0KLSAgICAgICAgcmVzcG9uc2UgPSBjbGllbnQuZ2V0KHNlbGYuVVJMICsgJy9hcGkv
Y29tbWl0cz91dWlkPTE1MzgwNDE3OTIwMCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMjAw
LCByZXNwb25zZS5zdGF0dXNfY29kZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4o
cmVzcG9uc2UuanNvbigpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDb21taXQuZnJvbV9q
c29uKHJlc3BvbnNlLmpzb24oKVswXSksIE1vY2tTVk5SZXBvc2l0b3J5LndlYmtpdCgpLmNvbW1p
dF9mb3JfaWQoaWQ9MjM2NTQxKSkKLQotICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19p
Zl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1v
Y2tDYXNzYW5kcmFDb250ZXh0KQotICAgIEBGbGFza1Rlc3RDYXNlLnJ1bl93aXRoX3dlYnNlcnZl
cigpCi0gICAgZGVmIHRlc3RfZmluZF9yYW5nZV9pZChzZWxmLCBjbGllbnQsICoqa3dhcmdzKToK
LSAgICAgICAgc2VsZi5yZWdpc3Rlcl9hbGxfY29tbWl0cyhjbGllbnQpCi0gICAgICAgIHJlc3Bv
bnNlID0gY2xpZW50LmdldChzZWxmLlVSTCArICcvYXBpL2NvbW1pdHM/YWZ0ZXJfaWQ9MzM2NjEw
YTgmYmVmb3JlX2lkPTIzNjU0MCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMjAwLCByZXNw
b25zZS5zdGF0dXNfY29kZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbQ29tbWl0LmZyb21f
anNvbihlbGVtZW50KSBmb3IgZWxlbWVudCBpbiByZXNwb25zZS5qc29uKCldLCBbCi0gICAgICAg
ICAgICBNb2NrU3Rhc2hSZXBvc2l0b3J5LnNhZmFyaSgpLmNvbW1pdF9mb3JfaWQoaWQ9JzMzNjYx
MGE4JyksCi0gICAgICAgICAgICBNb2NrU3Rhc2hSZXBvc2l0b3J5LnNhZmFyaSgpLmNvbW1pdF9m
b3JfaWQoaWQ9J2JiNmJkYTVmJyksCi0gICAgICAgICAgICBNb2NrU1ZOUmVwb3NpdG9yeS53ZWJr
aXQoKS5jb21taXRfZm9yX2lkKGlkPTIzNjU0MCksCi0gICAgICAgIF0pCi0KLSAgICBAV2FpdEZv
ckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJl
ZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKLSAgICBARmxhc2tUZXN0
Q2FzZS5ydW5fd2l0aF93ZWJzZXJ2ZXIoKQotICAgIGRlZiB0ZXN0X2ZpbmRfcmFuZ2VfdGltZXN0
YW1wKHNlbGYsIGNsaWVudCwgKiprd2FyZ3MpOgotICAgICAgICBzZWxmLnJlZ2lzdGVyX2FsbF9j
b21taXRzKGNsaWVudCkKLSAgICAgICAgcmVzcG9uc2UgPSBjbGllbnQuZ2V0KHNlbGYuVVJMICsg
Jy9hcGkvY29tbWl0cz9hZnRlcl90aW1lc3RhbXA9MTUzODA0MTc5Mi4zJmJlZm9yZV90aW1lc3Rh
bXA9MTUzODA0OTEwOCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMjAwLCByZXNwb25zZS5z
dGF0dXNfY29kZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIFtDb21t
aXQuZnJvbV9qc29uKGVsZW1lbnQpIGZvciBlbGVtZW50IGluIHJlc3BvbnNlLmpzb24oKV0sCi0g
ICAgICAgICAgICBbTW9ja1NWTlJlcG9zaXRvcnkud2Via2l0KCkuY29tbWl0X2Zvcl9pZChpZD0y
MzY1NDEpLCBNb2NrU1ZOUmVwb3NpdG9yeS53ZWJraXQoKS5jb21taXRfZm9yX2lkKGlkPTIzNjU0
MildLAotICAgICAgICApCi0KLSAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9f
ZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fz
c2FuZHJhQ29udGV4dCkKLSAgICBARmxhc2tUZXN0Q2FzZS5ydW5fd2l0aF93ZWJzZXJ2ZXIoKQot
ICAgIGRlZiB0ZXN0X2ZpbmRfcmFuZ2VfdXVpZChzZWxmLCBjbGllbnQsICoqa3dhcmdzKToKLSAg
ICAgICAgc2VsZi5yZWdpc3Rlcl9hbGxfY29tbWl0cyhjbGllbnQpCi0gICAgICAgIHJlc3BvbnNl
ID0gY2xpZW50LmdldChzZWxmLlVSTCArICcvYXBpL2NvbW1pdHM/YWZ0ZXJfdXVpZD0xNTM3NTUw
Njg1MDEmYmVmb3JlX3V1aWQ9MTUzNzU2NjM4NjAyJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgyMDAsIHJlc3BvbnNlLnN0YXR1c19jb2RlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAot
ICAgICAgICAgICAgW0NvbW1pdC5mcm9tX2pzb24oZWxlbWVudCkgZm9yIGVsZW1lbnQgaW4gcmVz
cG9uc2UuanNvbigpXSwKLSAgICAgICAgICAgIFtNb2NrU3Rhc2hSZXBvc2l0b3J5LnNhZmFyaSgp
LmNvbW1pdF9mb3JfaWQoaWQ9JzdiZTQwODQyJyksIE1vY2tTdGFzaFJlcG9zaXRvcnkuc2FmYXJp
KCkuY29tbWl0X2Zvcl9pZChpZD0nMzM2NjEwYTQnKV0sCi0gICAgICAgICkKLQotICAgIEBXYWl0
Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0
UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQotICAgIEBGbGFza1Rl
c3RDYXNlLnJ1bl93aXRoX3dlYnNlcnZlcigpCi0gICAgZGVmIHRlc3RfbmV4dChzZWxmLCBjbGll
bnQsICoqa3dhcmdzKToKLSAgICAgICAgc2VsZi5yZWdpc3Rlcl9hbGxfY29tbWl0cyhjbGllbnQp
Ci0gICAgICAgIHJlc3BvbnNlID0gY2xpZW50LmdldChzZWxmLlVSTCArICcvYXBpL2NvbW1pdHMv
bmV4dD9pZD0zMzY2MTBhNCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMjAwLCByZXNwb25z
ZS5zdGF0dXNfY29kZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4ocmVzcG9uc2Uu
anNvbigpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChNb2NrU3Rhc2hSZXBvc2l0b3J5LnNh
ZmFyaSgpLmNvbW1pdF9mb3JfaWQoaWQ9JzMzNjYxMGE4JyksIENvbW1pdC5mcm9tX2pzb24ocmVz
cG9uc2UuanNvbigpWzBdKSkKLQotICAgICAgICByZXNwb25zZSA9IGNsaWVudC5nZXQoc2VsZi5V
UkwgKyAnL2FwaS9jb21taXRzL25leHQ/aWQ9MjM2NTQyJykKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgyMDAsIHJlc3BvbnNlLnN0YXR1c19jb2RlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KDEsIGxlbihyZXNwb25zZS5qc29uKCkpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE1vY2tT
Vk5SZXBvc2l0b3J5LndlYmtpdCgpLmNvbW1pdF9mb3JfaWQoaWQ9MjM2NTQzKSwgQ29tbWl0LmZy
b21fanNvbihyZXNwb25zZS5qc29uKClbMF0pKQotCi0gICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2Fz
ZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNz
YW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCi0gICAgQEZsYXNrVGVzdENhc2UucnVuX3dpdGhf
d2Vic2VydmVyKCkKLSAgICBkZWYgdGVzdF9wcmV2aW91cyhzZWxmLCBjbGllbnQsICoqa3dhcmdz
KToKLSAgICAgICAgc2VsZi5yZWdpc3Rlcl9hbGxfY29tbWl0cyhjbGllbnQpCi0gICAgICAgIHJl
c3BvbnNlID0gY2xpZW50LmdldChzZWxmLlVSTCArICcvYXBpL2NvbW1pdHMvcHJldmlvdXM/aWQ9
MzM2NjEwYTQnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDIwMCwgcmVzcG9uc2Uuc3RhdHVz
X2NvZGUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKHJlc3BvbnNlLmpzb24oKSkp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTW9ja1N0YXNoUmVwb3NpdG9yeS5zYWZhcmkoKS5j
b21taXRfZm9yX2lkKGlkPSc3YmU0MDg0MicpLCBDb21taXQuZnJvbV9qc29uKHJlc3BvbnNlLmpz
b24oKVswXSkpCi0KLSAgICAgICAgcmVzcG9uc2UgPSBjbGllbnQuZ2V0KHNlbGYuVVJMICsgJy9h
cGkvY29tbWl0cy9wcmV2aW91cz9pZD0yMzY1NDInKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KDIwMCwgcmVzcG9uc2Uuc3RhdHVzX2NvZGUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwg
bGVuKHJlc3BvbnNlLmpzb24oKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTW9ja1NWTlJl
cG9zaXRvcnkud2Via2l0KCkuY29tbWl0X2Zvcl9pZChpZD0yMzY1NDEpLCBDb21taXQuZnJvbV9q
c29uKHJlc3BvbnNlLmpzb24oKVswXSkpCi0KLSAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1v
Y2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRy
YT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKLSAgICBARmxhc2tUZXN0Q2FzZS5ydW5fd2l0aF93ZWJz
ZXJ2ZXIoKQotICAgIGRlZiB0ZXN0X3NpYmxpbmdzKHNlbGYsIGNsaWVudCwgKiprd2FyZ3MpOgot
ICAgICAgICBzZWxmLnJlZ2lzdGVyX2FsbF9jb21taXRzKGNsaWVudCkKLQotICAgICAgICByZXNw
b25zZSA9IGNsaWVudC5nZXQoc2VsZi5VUkwgKyAnL2FwaS9jb21taXRzL3NpYmxpbmdzP3JlcG9z
aXRvcnlfaWQ9d2Via2l0JmlkPTIzNjU0MicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMjAw
LCByZXNwb25zZS5zdGF0dXNfY29kZSkKLSAgICAgICAgY29tbWl0cyA9IHtrZXk6IFtDb21taXQu
ZnJvbV9qc29uKGVsZW1lbnQpIGZvciBlbGVtZW50IGluIHZhbHVlc10gZm9yIGtleSwgdmFsdWVz
IGluIHJlc3BvbnNlLmpzb24oKS5pdGVtcygpfQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNv
bW1pdHMsIHsnc2FmYXJpJzogW01vY2tTdGFzaFJlcG9zaXRvcnkuc2FmYXJpKCkuY29tbWl0X2Zv
cl9pZChpZD0nYmI2YmRhNWY0NGRkMjQnKV19KQotCi0gICAgICAgIHJlc3BvbnNlID0gY2xpZW50
LmdldChzZWxmLlVSTCArICcvYXBpL2NvbW1pdHMvc2libGluZ3M/cmVwb3NpdG9yeV9pZD1zYWZh
cmkmaWQ9YmI2YmRhNWY0NGRkMjQnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDIwMCwgcmVz
cG9uc2Uuc3RhdHVzX2NvZGUpCi0gICAgICAgIGNvbW1pdHMgPSB7a2V5OiBbQ29tbWl0LmZyb21f
anNvbihlbGVtZW50KSBmb3IgZWxlbWVudCBpbiB2YWx1ZXNdIGZvciBrZXksIHZhbHVlcyBpbiBy
ZXNwb25zZS5qc29uKCkuaXRlbXMoKX0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21taXRz
LCB7J3dlYmtpdCc6IFsKLSAgICAgICAgICAgIE1vY2tTVk5SZXBvc2l0b3J5LndlYmtpdCgpLmNv
bW1pdF9mb3JfaWQoaWQ9MjM2NTQ0KSwKLSAgICAgICAgICAgIE1vY2tTVk5SZXBvc2l0b3J5Lndl
YmtpdCgpLmNvbW1pdF9mb3JfaWQoaWQ9MjM2NTQzKSwKLSAgICAgICAgICAgIE1vY2tTVk5SZXBv
c2l0b3J5LndlYmtpdCgpLmNvbW1pdF9mb3JfaWQoaWQ9MjM2NTQyKSwKLSAgICAgICAgICAgIE1v
Y2tTVk5SZXBvc2l0b3J5LndlYmtpdCgpLmNvbW1pdF9mb3JfaWQoaWQ9MjM2NTQxKSwKLSAgICAg
ICAgICAgIE1vY2tTVk5SZXBvc2l0b3J5LndlYmtpdCgpLmNvbW1pdF9mb3JfaWQoaWQ9MjM2NTQw
KSwKLSAgICAgICAgXX0pCkluZGV4OiBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9jb250
cm9sbGVyL2NvbW1pdF91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9yZXN1bHRzZGJw
eS9yZXN1bHRzZGJweS9jb250cm9sbGVyL2NvbW1pdF91bml0dGVzdC5weQkocmV2aXNpb24gMjY1
NTMxKQorKysgVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci9jb21taXRf
dW5pdHRlc3QucHkJKG5vbmV4aXN0ZW50KQpAQCAtMSwxNTcgKzAsMCBAQAotIyBDb3B5cmlnaHQg
KEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jCi0jIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SCi0jIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSMg
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIKLSMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSMgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotaW1wb3J0IHVuaXR0ZXN0Ci0KLWZyb20gcmVzdWx0
c2RicHkuY29udHJvbGxlci5jb21taXQgaW1wb3J0IENvbW1pdAotCi0KLWNsYXNzIENvbW1pdFVu
aXR0ZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLQotICAgIGRlZiB0ZXN0X2NvbXBhcmUoc2VsZik6
Ci0gICAgICAgIGNvbW1pdDEgPSBDb21taXQoCi0gICAgICAgICAgICByZXBvc2l0b3J5X2lkPSdz
YWZhcmknLCBicmFuY2g9J21hc3RlcicsCi0gICAgICAgICAgICBpZD0nZTY0ODEwYTQwYzNmZWNi
NzI4ODcxZTEyY2EzMTQ4MmNhNzE1YjM4MycsCi0gICAgICAgICAgICB0aW1lc3RhbXA9MTUzNzU1
MDY4NSwKLSAgICAgICAgKQotICAgICAgICBjb21taXQyID0gQ29tbWl0KAotICAgICAgICAgICAg
cmVwb3NpdG9yeV9pZD0nc2FmYXJpJywgYnJhbmNoPSdtYXN0ZXInLAotICAgICAgICAgICAgaWQ9
JzdiZTQwODQyNThhNDUyZThmZTIyZjM2Mjg3YzViMzIxZTljODI0OWInLAotICAgICAgICAgICAg
dGltZXN0YW1wPTE1Mzc1NTA2ODUsIG9yZGVyPTEsCi0gICAgICAgICkKLSAgICAgICAgY29tbWl0
MyA9IENvbW1pdCgKLSAgICAgICAgICAgIHJlcG9zaXRvcnlfaWQ9J3NhZmFyaScsIGJyYW5jaD0n
bWFzdGVyJywKLSAgICAgICAgICAgIGlkPSdiYjZiZGE1ZjQ0ZGQyNGQwYjU0NTM5YjhmZjZlOGMx
N2Y1MTkyNDlhJywKLSAgICAgICAgICAgIHRpbWVzdGFtcD0xNTM3ODEwMjgxLAotICAgICAgICAp
Ci0gICAgICAgIGNvbW1pdDQgPSBDb21taXQoCi0gICAgICAgICAgICByZXBvc2l0b3J5X2lkPSd3
ZWJraXQnLCBicmFuY2g9J21hc3RlcicsCi0gICAgICAgICAgICBpZD0yMzY1MjIsCi0gICAgICAg
ICAgICB0aW1lc3RhbXA9MTUzNzgyNjYxNCwKLSAgICAgICAgKQotCi0gICAgICAgIHNlbGYuYXNz
ZXJ0VHJ1ZShjb21taXQyID4gY29tbWl0MSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNvbW1p
dDIgPj0gY29tbWl0MSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNvbW1pdDEgPj0gY29tbWl0
MSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNvbW1pdDEgPCBjb21taXQyKQotICAgICAgICBz
ZWxmLmFzc2VydFRydWUoY29tbWl0MSA8PSBjb21taXQyKQotICAgICAgICBzZWxmLmFzc2VydFRy
dWUoY29tbWl0MSA8PSBjb21taXQxKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoY29tbWl0MSA9
PSBjb21taXQxKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjb21taXQyIDwgY29tbWl0MykK
LSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNvbW1pdDMgPiBjb21taXQyKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGNvbW1pdDEudGltZXN0YW1wLCBjb21taXQyLnRpbWVzdGFtcCkKLQotICAg
ICAgICBzZWxmLmFzc2VydFRydWUoY29tbWl0NCA+IGNvbW1pdDMpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0Tm90RXF1YWwoY29tbWl0My5yZXBvc2l0b3J5X2lkLCBjb21taXQ0LnJlcG9zaXRvcnlfaWQp
Ci0KLSAgICBkZWYgdGVzdF9lbmNvZGluZyhzZWxmKToKLSAgICAgICAgY29tbWl0c190b190ZXN0
ID0gWwotICAgICAgICAgICAgQ29tbWl0KAotICAgICAgICAgICAgICAgIHJlcG9zaXRvcnlfaWQ9
J3NhZmFyaScsIGJyYW5jaD0nbWFzdGVyJywKLSAgICAgICAgICAgICAgICBpZD0nZTY0ODEwYTQw
YzNmZWNiNzI4ODcxZTEyY2EzMTQ4MmNhNzE1YjM4MycsCi0gICAgICAgICAgICAgICAgdGltZXN0
YW1wPTE1Mzc1NTA2ODUsCi0gICAgICAgICAgICApLCBDb21taXQoCi0gICAgICAgICAgICAgICAg
cmVwb3NpdG9yeV9pZD0nc2FmYXJpJywgYnJhbmNoPSdtYXN0ZXInLAotICAgICAgICAgICAgICAg
IGlkPSc3YmU0MDg0MjU4YTQ1MmU4ZmUyMmYzNjI4N2M1YjMyMWU5YzgyNDliJywKLSAgICAgICAg
ICAgICAgICB0aW1lc3RhbXA9MTUzNzU1MDY4NSwgb3JkZXI9MSwKLSAgICAgICAgICAgICAgICBj
b21taXR0ZXI9J2VtYWlsMUB3ZWJraXQub3JnJywgbWVzc2FnZT0nQ2hhbmdlbG9nJywKLSAgICAg
ICAgICAgICksIENvbW1pdCgKLSAgICAgICAgICAgICAgICByZXBvc2l0b3J5X2lkPSd3ZWJraXQn
LCBicmFuY2g9J21hc3RlcicsCi0gICAgICAgICAgICAgICAgaWQ9MjM2NTIyLAotICAgICAgICAg
ICAgICAgIHRpbWVzdGFtcD0xNTM3ODI2NjE0LAotICAgICAgICAgICAgKSwKLSAgICAgICAgXQot
ICAgICAgICBmb3IgY29tbWl0IGluIGNvbW1pdHNfdG9fdGVzdDoKLSAgICAgICAgICAgIGNvbnZl
cnRlZF9jb21taXQgPSBDb21taXQuZnJvbV9qc29uKGNvbW1pdC50b19qc29uKCkpCi0KLSAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbWl0LCBjb252ZXJ0ZWRfY29tbWl0KQotICAgICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21taXQucmVwb3NpdG9yeV9pZCwgY29udmVydGVkX2Nv
bW1pdC5yZXBvc2l0b3J5X2lkKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21taXQu
aWQsIGNvbnZlcnRlZF9jb21taXQuaWQpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNv
bW1pdC50aW1lc3RhbXAsIGNvbnZlcnRlZF9jb21taXQudGltZXN0YW1wKQotICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChjb21taXQub3JkZXIsIGNvbnZlcnRlZF9jb21taXQub3JkZXIpCi0g
ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1pdC5jb21taXR0ZXIsIGNvbnZlcnRlZF9j
b21taXQuY29tbWl0dGVyKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21taXQubWVz
c2FnZSwgY29udmVydGVkX2NvbW1pdC5tZXNzYWdlKQotCi0gICAgZGVmIHRlc3RfdWRpZChzZWxm
KToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDb21taXQoCi0gICAgICAgICAgICByZXBvc2l0
b3J5X2lkPSdzYWZhcmknLCBicmFuY2g9J21hc3RlcicsCi0gICAgICAgICAgICBpZD0nN2JlNDA4
NDI1OGE0NTJlOGZlMjJmMzYyODdjNWIzMjFlOWM4MjQ5YicsCi0gICAgICAgICAgICB0aW1lc3Rh
bXA9MTUzNzU1MDY4NSwgb3JkZXI9MSwKLSAgICAgICAgKS51dWlkLCAxNTM3NTUwNjg1MDEpCi0K
LSAgICBkZWYgdGVzdF9pbnZhbGlkKHNlbGYpOgotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFp
c2VzKFZhbHVlRXJyb3IpIGFzIGVycm9yOgotICAgICAgICAgICAgQ29tbWl0KAotICAgICAgICAg
ICAgICAgIHJlcG9zaXRvcnlfaWQ9J3NhZmFyaScsIGJyYW5jaD0nbWFzdGVyJywKLSAgICAgICAg
ICAgICAgICBpZD0nN2JlNDA4NDI1OGE0NTJlOGZlMjJmMzYyODdjNWIzMjFlOWM4MjQ5YicsCi0g
ICAgICAgICAgICAgICAgdGltZXN0YW1wPU5vbmUsCi0gICAgICAgICAgICApCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoc3RyKGVycm9yLmV4Y2VwdGlvbiksICd0aW1lc3RhbXAgaXMgbm90IGRl
ZmluZWQgZm9yIGNvbW1pdCcpCi0KLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1
ZUVycm9yKSBhcyBlcnJvcjoKLSAgICAgICAgICAgIENvbW1pdCgKLSAgICAgICAgICAgICAgICBy
ZXBvc2l0b3J5X2lkPSdpbnZhbGlkLXJlcG8nLCBicmFuY2g9J21hc3RlcicsCi0gICAgICAgICAg
ICAgICAgaWQ9JzdiZTQwODQyNThhNDUyZThmZTIyZjM2Mjg3YzViMzIxZTljODI0OWInLAotICAg
ICAgICAgICAgICAgIHRpbWVzdGFtcD0xNTM3NTUwNjg1LAotICAgICAgICAgICAgKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHN0cihlcnJvci5leGNlcHRpb24pLCAiJ2ludmFsaWQtcmVwbycg
aXMgYW4gaW52YWxpZCByZXBvc2l0b3J5IGlkIikKLQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0
UmFpc2VzKFZhbHVlRXJyb3IpIGFzIGVycm9yOgotICAgICAgICAgICAgQ29tbWl0KAotICAgICAg
ICAgICAgICAgIHJlcG9zaXRvcnlfaWQ9J2knICogMTI5LCBicmFuY2g9J21hc3RlcicsCi0gICAg
ICAgICAgICAgICAgaWQ9JzdiZTQwODQyNThhNDUyZThmZTIyZjM2Mjg3YzViMzIxZTljODI0OWIn
LAotICAgICAgICAgICAgICAgIHRpbWVzdGFtcD0xNTM3NTUwNjg1LAotICAgICAgICAgICAgKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihlcnJvci5leGNlcHRpb24pLCBmIid7J2knICog
MTI5fScgaXMgYW4gaW52YWxpZCByZXBvc2l0b3J5IGlkIikKLQotICAgICAgICB3aXRoIHNlbGYu
YXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpIGFzIGVycm9yOgotICAgICAgICAgICAgQ29tbWl0KAot
ICAgICAgICAgICAgICAgIHJlcG9zaXRvcnlfaWQ9J3NhZmFyaScsIGJyYW5jaD0nPGh0bWw+aW52
YWxpZC1icmFuY2g8L2h0bWw+JywKLSAgICAgICAgICAgICAgICBpZD0nN2JlNDA4NDI1OGE0NTJl
OGZlMjJmMzYyODdjNWIzMjFlOWM4MjQ5YicsCi0gICAgICAgICAgICAgICAgdGltZXN0YW1wPTE1
Mzc1NTA2ODUsCi0gICAgICAgICAgICApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGVy
cm9yLmV4Y2VwdGlvbiksICInPGh0bWw+aW52YWxpZC1icmFuY2g8L2h0bWw+JyBpcyBhbiBpbnZh
bGlkIGJyYW5jaCBuYW1lIikKLQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVl
RXJyb3IpIGFzIGVycm9yOgotICAgICAgICAgICAgQ29tbWl0KAotICAgICAgICAgICAgICAgIHJl
cG9zaXRvcnlfaWQ9J3NhZmFyaScsIGJyYW5jaD0naScgKiAxMjksCi0gICAgICAgICAgICAgICAg
aWQ9JzdiZTQwODQyNThhNDUyZThmZTIyZjM2Mjg3YzViMzIxZTljODI0OWInLAotICAgICAgICAg
ICAgICAgIHRpbWVzdGFtcD0xNTM3NTUwNjg1LAotICAgICAgICAgICAgKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHN0cihlcnJvci5leGNlcHRpb24pLCBmIid7J2knICogMTI5fScgaXMgYW4g
aW52YWxpZCBicmFuY2ggbmFtZSIpCi0KLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhW
YWx1ZUVycm9yKSBhcyBlcnJvcjoKLSAgICAgICAgICAgIENvbW1pdCgKLSAgICAgICAgICAgICAg
ICByZXBvc2l0b3J5X2lkPSdzYWZhcmknLCBicmFuY2g9J21hc3RlcicsCi0gICAgICAgICAgICAg
ICAgaWQ9JzxodG1sPjEyMzQ8L2h0bWw+JywKLSAgICAgICAgICAgICAgICB0aW1lc3RhbXA9MTUz
NzU1MDY4NSwKLSAgICAgICAgICAgICkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZXJy
b3IuZXhjZXB0aW9uKSwgIic8aHRtbD4xMjM0PC9odG1sPicgaXMgYW4gaW52YWxpZCBjb21taXQg
aWQiKQotCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcikgYXMgZXJy
b3I6Ci0gICAgICAgICAgICBDb21taXQoCi0gICAgICAgICAgICAgICAgcmVwb3NpdG9yeV9pZD0n
c2FmYXJpJywgYnJhbmNoPSdtYXN0ZXInLAotICAgICAgICAgICAgICAgIGlkPScwJyAqIDQxLAot
ICAgICAgICAgICAgICAgIHRpbWVzdGFtcD0xNTM3NTUwNjg1LAotICAgICAgICAgICAgKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihlcnJvci5leGNlcHRpb24pLCBmIid7JzAnICogNDF9
JyBpcyBhbiBpbnZhbGlkIGNvbW1pdCBpZCIpCkluZGV4OiBUb29scy9yZXN1bHRzZGJweS9yZXN1
bHRzZGJweS9jb250cm9sbGVyL2NvbmZpZ3VyYXRpb24ucHkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
cmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci9jb25maWd1cmF0aW9uLnB5CShyZXZp
c2lvbiAyNjU1MzEpCisrKyBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9jb250cm9sbGVy
L2NvbmZpZ3VyYXRpb24ucHkJKG5vbmV4aXN0ZW50KQpAQCAtMSwyMTQgKzAsMCBAQAotIyBDb3B5
cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
IyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jCi0j
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
Ci0jIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0jIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IKLSMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSMgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotaW1wb3J0IGpzb24KLQotZnJvbSByZXN1
bHRzZGJweS5mbGFza19zdXBwb3J0LnV0aWwgaW1wb3J0IEZsYXNrSlNPTkVuY29kZXIKLQotCi1j
bGFzcyBDb25maWd1cmF0aW9uKG9iamVjdCk6Ci0gICAgIiIiCi0gICAgVGhpcyBjbGFzcyBpcyBk
ZXNpZ25lZCB0byB1c2UgYSBwYXJ0aWFsIGNvbmZpZ3VyYXRpb24gdG8gbWF0Y2ggbW9yZSBjb21w
bGV0ZSBjb25maWd1cmF0aW9ucy4gR2VuZXJhbGx5LCBhbiBpbnN0YW5jZQotICAgIG9mIHRoaXMg
Y2xhc3Mgd2lsbCBtYXRjaCBhbm90aGVyIGluc3RhbmNlIGlmIGFsbCBtZW1iZXJzIG1hdGNoIG9y
IGFyZSBOb25lLiBUaGlzIG1lYW5zIHRoYXQsIGZvciBleGFtcGxlLCBhCi0gICAgQ29uZmlndXJh
dGlvbiBvYmplY3Qgd2l0aCBhIHBsYXRmb3JtIG9mICdNYWMnIGFuZCBhbGwgb3RoZXIgbWVtYmVy
cyBzZXQgdG8gTm9uZSB3aWxsIG1hdGNoIGFueSBDb25maWd1cmF0aW9uIG9iamVjdAotICAgIHdp
dGggYSBwbGF0Zm9ybSBvZiAnTWFjJywgcmVnYXJkbGVzcyBvZiB0aGUgdmFsdWVzIG9mIHRoZSBD
b25maWd1cmF0aW9uJ3Mgb3RoZXIgbWVtYmVycy4KLSAgICAiIiIKLQotICAgIFZFUlNJT05fT0ZG
U0VUX0NPTlNUQU5UID0gMTAwMAotCi0gICAgUkVRVUlSRURfTUVNQkVSUyA9IFsncGxhdGZvcm0n
LCAnaXNfc2ltdWxhdG9yJywgJ3ZlcnNpb24nLCAnYXJjaGl0ZWN0dXJlJ10KLSAgICBPUFRJT05B
TF9NRU1CRVJTID0gWyd2ZXJzaW9uX25hbWUnLCAnbW9kZWwnLCAnc3R5bGUnLCAnZmxhdm9yJ10K
LSAgICBGSUxURVJJTkdfTUVNQkVSUyA9IFsnc2RrJ10KLQotICAgIEBjbGFzc21ldGhvZAotICAg
IGRlZiBmcm9tX2pzb24oY2xzLCBkYXRhKToKLSAgICAgICAgZGF0YSA9IGRhdGEgaWYgaXNpbnN0
YW5jZShkYXRhLCBkaWN0KSBlbHNlIGpzb24ubG9hZHMoZGF0YSkKLSAgICAgICAgcmV0dXJuIENv
bmZpZ3VyYXRpb24oKip7a2V5OiBkYXRhLmdldChrZXkpIGZvciBrZXkgaW4gY2xzLlJFUVVJUkVE
X01FTUJFUlMgKyBjbHMuT1BUSU9OQUxfTUVNQkVSUyArIFsnc2RrJ119KQotCi0gICAgZGVmIF9f
aW5pdF9fKHNlbGYsIHBsYXRmb3JtPU5vbmUsIHZlcnNpb249Tm9uZSwgc2RrPU5vbmUsIHZlcnNp
b25fbmFtZT1Ob25lLCBpc19zaW11bGF0b3I9Tm9uZSwgYXJjaGl0ZWN0dXJlPU5vbmUsIG1vZGVs
PU5vbmUsIHN0eWxlPU5vbmUsIGZsYXZvcj1Ob25lKToKLSAgICAgICAgc2VsZi5wbGF0Zm9ybSA9
IE5vbmUgaWYgcGxhdGZvcm0gaXMgTm9uZSBlbHNlIHN0cihwbGF0Zm9ybSkKLSAgICAgICAgc2Vs
Zi52ZXJzaW9uID0gTm9uZSBpZiB2ZXJzaW9uIGlzIE5vbmUgZWxzZSBzZWxmLnZlcnNpb25fdG9f
aW50ZWdlcih2ZXJzaW9uKQotICAgICAgICBzZWxmLnZlcnNpb25fbmFtZSA9IE5vbmUgaWYgdmVy
c2lvbl9uYW1lIGlzIE5vbmUgZWxzZSBzdHIodmVyc2lvbl9uYW1lKQotICAgICAgICBzZWxmLmlz
X3NpbXVsYXRvciA9IE5vbmUgaWYgaXNfc2ltdWxhdG9yIGlzIE5vbmUgZWxzZSBib29sKGlzX3Np
bXVsYXRvcikKLSAgICAgICAgc2VsZi5hcmNoaXRlY3R1cmUgPSBOb25lIGlmIGFyY2hpdGVjdHVy
ZSBpcyBOb25lIGVsc2Ugc3RyKGFyY2hpdGVjdHVyZSkKLSAgICAgICAgc2VsZi5tb2RlbCA9IE5v
bmUgaWYgbW9kZWwgaXMgTm9uZSBlbHNlIHN0cihtb2RlbCkKLSAgICAgICAgc2VsZi5zdHlsZSA9
IE5vbmUgaWYgc3R5bGUgaXMgTm9uZSBlbHNlIHN0cihzdHlsZSkKLSAgICAgICAgc2VsZi5mbGF2
b3IgPSBOb25lIGlmIGZsYXZvciBpcyBOb25lIGVsc2Ugc3RyKGZsYXZvcikKLQotICAgICAgICAj
IENvbmZpZ3VyYXRpb25zIHdoaWNoIGFyZSBpZGVudGljYWwsIGV4Y2VwdCBmb3IgdGhlaXIgc2Rr
LCBzaG91bGQgYmUgY29uc2lkZXJlZCBpZGVudGljYWwKLSAgICAgICAgc2VsZi5zZGsgPSBOb25l
Ci0gICAgICAgIGlmIHNkayBhbmQgc2RrICE9ICc/JzoKLSAgICAgICAgICAgIHNlbGYuc2RrID0g
c3RyKHNkaykKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiB2ZXJzaW9uX3RvX2ludGVnZXIo
Y2xzLCB2ZXJzaW9uKToKLSAgICAgICAgaWYgaXNpbnN0YW5jZSh2ZXJzaW9uLCBpbnQpOgotICAg
ICAgICAgICAgcmV0dXJuIHZlcnNpb24KLSAgICAgICAgZWxpZiBpc2luc3RhbmNlKHZlcnNpb24s
IHN0cik6Ci0gICAgICAgICAgICB2ZXJzaW9uX2xpc3QgPSB2ZXJzaW9uLnNwbGl0KCcuJykKLSAg
ICAgICAgZWxpZiBpc2luc3RhbmNlKHZlcnNpb24sIGxpc3QpIG9yIGlzaW5zdGFuY2UodmVyc2lv
biwgdHVwbGUpOgotICAgICAgICAgICAgdmVyc2lvbl9saXN0ID0gdmVyc2lvbgotICAgICAgICBl
bHNlOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKGYne3R5cGUodmVyc2lvbil9IGNhbm5v
dCBiZSBjb252ZXJ0ZWQgdG8gYSB2ZXJzaW9uIGludGVnZXInKQotICAgICAgICBpZiBsZW4odmVy
c2lvbl9saXN0KSA8IDEgb3IgbGVuKHZlcnNpb25fbGlzdCkgPiAzOgotICAgICAgICAgICAgcmFp
c2UgVmFsdWVFcnJvcihmJ3t2ZXJzaW9ufSBjYW5ub3QgYmUgY29udmVydGVkIHRvIGEgdmVyc2lv
biBpbnRlZ2VyJykKLQotICAgICAgICBpbmRleCA9IDAKLSAgICAgICAgcmVzdWx0ID0gMAotICAg
ICAgICB3aGlsZSBpbmRleCA8IDM6Ci0gICAgICAgICAgICByZXN1bHQgKj0gY2xzLlZFUlNJT05f
T0ZGU0VUX0NPTlNUQU5UCi0gICAgICAgICAgICBpZiBpbmRleCA8IGxlbih2ZXJzaW9uX2xpc3Qp
OgotICAgICAgICAgICAgICAgIHJlc3VsdCArPSBpbnQodmVyc2lvbl9saXN0W2luZGV4XSkKLSAg
ICAgICAgICAgIGluZGV4ICs9IDEKLQotICAgICAgICByZXR1cm4gcmVzdWx0Ci0KLSAgICBAY2xh
c3NtZXRob2QKLSAgICBkZWYgaW50ZWdlcl90b192ZXJzaW9uKGNscywgdmVyc2lvbik6Ci0gICAg
ICAgIGFzc2VydCBpc2luc3RhbmNlKHZlcnNpb24sIGludCkKLSAgICAgICAgcmVzdWx0ID0gWzAs
IDAsIDBdCi0gICAgICAgIGZvciBpbmRleCBpbiByYW5nZSgzKToKLSAgICAgICAgICAgIHJlc3Vs
dFstKGluZGV4ICsgMSldID0gdmVyc2lvbiAlIGNscy5WRVJTSU9OX09GRlNFVF9DT05TVEFOVAot
ICAgICAgICAgICAgdmVyc2lvbiAvLz0gY2xzLlZFUlNJT05fT0ZGU0VUX0NPTlNUQU5UCi0gICAg
ICAgIHJldHVybiBmJ3tyZXN1bHRbMF19LntyZXN1bHRbMV19LntyZXN1bHRbMl19JwotCi0gICAg
ZGVmIGlzX2NvbXBsZXRlKHNlbGYpOgotICAgICAgICByZXR1cm4gbm90IGFueShbZ2V0YXR0cihz
ZWxmLCBtZW1iZXIpIGlzIE5vbmUgZm9yIG1lbWJlciBpbiBzZWxmLlJFUVVJUkVEX01FTUJFUlNd
KQotCi0gICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6Ci0gICAgICAgIGlmIG5vdCBpc2luc3Rh
bmNlKG90aGVyLCB0eXBlKHNlbGYpKToKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAg
ICBmb3IgbWVtYmVyIGluIHNlbGYuUkVRVUlSRURfTUVNQkVSUyArIHNlbGYuT1BUSU9OQUxfTUVN
QkVSUzoKLSAgICAgICAgICAgIGlmIGdldGF0dHIoc2VsZiwgbWVtYmVyKSBpcyBOb25lIG9yIGdl
dGF0dHIob3RoZXIsIG1lbWJlcikgaXMgTm9uZToKLSAgICAgICAgICAgICAgICBjb250aW51ZQot
ICAgICAgICAgICAgaWYgZ2V0YXR0cihzZWxmLCBtZW1iZXIpID09IGdldGF0dHIob3RoZXIsIG1l
bWJlcik6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIHJldHVybiBGYWxz
ZQotICAgICAgICByZXR1cm4gVHJ1ZQotCi0gICAgZGVmIF9fbmVfXyhzZWxmLCBvdGhlcik6Ci0g
ICAgICAgIHJldHVybiBub3QgKHNlbGYgPT0gb3RoZXIpCi0KLSAgICBkZWYgX19sdF9fKHNlbGYs
IG90aGVyKToKLSAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIHR5cGUoc2VsZikpOgot
ICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKGYnQ2Fubm90IGNvbXBhcmUge3R5cGUob3RoZXIp
fSBhbmQge3R5cGUoc2VsZil9JykKLSAgICAgICAgZm9yIG1lbWJlciBpbiBbJ3ZlcnNpb24nLCAn
cGxhdGZvcm0nLCAndmVyc2lvbl9uYW1lJywgJ2lzX3NpbXVsYXRvcicsICdtb2RlbCcsICdhcmNo
aXRlY3R1cmUnLCAnc3R5bGUnLCAnZmxhdm9yJ106Ci0gICAgICAgICAgICBtaW5lID0gZ2V0YXR0
cihzZWxmLCBtZW1iZXIpCi0gICAgICAgICAgICB0aGVpcnMgPSBnZXRhdHRyKG90aGVyLCBtZW1i
ZXIpCi0gICAgICAgICAgICBpZiBtaW5lIGlzIE5vbmUgYW5kIHRoZWlycyBpcyBOb25lOgotICAg
ICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBpZiBtaW5lIGlzIE5vbmUgYW5kIHRo
ZWlycyBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAgICAg
ICAgaWYgbWluZSBpcyBub3QgTm9uZSBhbmQgdGhlaXJzIGlzIE5vbmU6Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIEZhbHNlCi0gICAgICAgICAgICBpZiBtaW5lIDwgdGhlaXJzOgotICAgICAgICAg
ICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgICAgICBpZiBtaW5lID4gdGhlaXJzOgotICAgICAg
ICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgIGRlZiBf
X2xlX18oc2VsZiwgb3RoZXIpOgotICAgICAgICByZXR1cm4gc2VsZi5fX2x0X18ob3RoZXIpIG9y
IHNlbGYuX19lcV9fKG90aGVyKQotCi0gICAgZGVmIF9fZ3RfXyhzZWxmLCBvdGhlcik6Ci0gICAg
ICAgIGlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCB0eXBlKHNlbGYpKToKLSAgICAgICAgICAgIHJh
aXNlIFR5cGVFcnJvcihmJ0Nhbm5vdCBjb21wYXJlIHt0eXBlKG90aGVyKX0gYW5kIHt0eXBlKHNl
bGYpfScpCi0gICAgICAgIGZvciBtZW1iZXIgaW4gWyd2ZXJzaW9uJywgJ3BsYXRmb3JtJywgJ3Zl
cnNpb25fbmFtZScsICdpc19zaW11bGF0b3InLCAnbW9kZWwnLCAnYXJjaGl0ZWN0dXJlJywgJ3N0
eWxlJywgJ2ZsYXZvciddOgotICAgICAgICAgICAgbWluZSA9IGdldGF0dHIoc2VsZiwgbWVtYmVy
KQotICAgICAgICAgICAgdGhlaXJzID0gZ2V0YXR0cihvdGhlciwgbWVtYmVyKQotICAgICAgICAg
ICAgaWYgbWluZSBpcyBOb25lIGFuZCB0aGVpcnMgaXMgTm9uZToKLSAgICAgICAgICAgICAgICBj
b250aW51ZQotICAgICAgICAgICAgaWYgbWluZSBpcyBOb25lIGFuZCB0aGVpcnMgaXMgbm90IE5v
bmU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgICAgICBpZiBtaW5lIGlz
IG5vdCBOb25lIGFuZCB0aGVpcnMgaXMgTm9uZToKLSAgICAgICAgICAgICAgICByZXR1cm4gVHJ1
ZQotICAgICAgICAgICAgaWYgbWluZSA8IHRoZWlyczoKLSAgICAgICAgICAgICAgICByZXR1cm4g
RmFsc2UKLSAgICAgICAgICAgIGlmIG1pbmUgPiB0aGVpcnM6Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIFRydWUKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICBkZWYgX19nZV9fKHNlbGYsIG90
aGVyKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX19ndF9fKG90aGVyKSBvciBzZWxmLl9fZXFfXyhv
dGhlcikKLQotICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKLSAgICAgICAgcmVzdWx0ID0gMAotICAg
ICAgICBmb3IgbWVtYmVyIGluIHNlbGYuUkVRVUlSRURfTUVNQkVSUyArIHNlbGYuT1BUSU9OQUxf
TUVNQkVSUyArIHNlbGYuRklMVEVSSU5HX01FTUJFUlM6Ci0gICAgICAgICAgICBpZiBtZW1iZXIg
PT0gJ3ZlcnNpb25fbmFtZScgYW5kIGdldGF0dHIoc2VsZiwgJ3ZlcnNpb24nKToKLSAgICAgICAg
ICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgcmVzdWx0IF49IGhhc2goZ2V0YXR0cihzZWxm
LCBtZW1iZXIpKQotICAgICAgICByZXR1cm4gcmVzdWx0Ci0KLSAgICBkZWYgX19yZXByX18oc2Vs
Zik6Ci0gICAgICAgIHJlc3VsdCA9ICcnCi0gICAgICAgIGlmIHNlbGYucGxhdGZvcm0gaXMgbm90
IE5vbmU6Ci0gICAgICAgICAgICByZXN1bHQgKz0gJyAnICsgc2VsZi5wbGF0Zm9ybQotICAgICAg
ICBpZiBzZWxmLnZlcnNpb24gaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICByZXN1bHQgKz0gJyAn
ICsgc2VsZi5pbnRlZ2VyX3RvX3ZlcnNpb24oc2VsZi52ZXJzaW9uKQotICAgICAgICBlbGlmIHNl
bGYudmVyc2lvbl9uYW1lIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgcmVzdWx0ICs9ICcgJyAr
IHNlbGYudmVyc2lvbl9uYW1lCi0gICAgICAgIGlmIHNlbGYuc2RrOgotICAgICAgICAgICAgcmVz
dWx0ICs9IGYnICh7c2VsZi5zZGt9KScKLSAgICAgICAgaWYgc2VsZi5pc19zaW11bGF0b3IgaXMg
bm90IE5vbmUgYW5kIHNlbGYuaXNfc2ltdWxhdG9yOgotICAgICAgICAgICAgcmVzdWx0ICs9ICcg
U2ltdWxhdG9yJwotICAgICAgICBpZiBzZWxmLnN0eWxlIGlzIG5vdCBOb25lOgotICAgICAgICAg
ICAgcmVzdWx0ICs9ICcgJyArIHNlbGYuc3R5bGUKLSAgICAgICAgaWYgc2VsZi5mbGF2b3IgaXMg
bm90IE5vbmU6Ci0gICAgICAgICAgICByZXN1bHQgKz0gJyAnICsgc2VsZi5mbGF2b3IKLSAgICAg
ICAgaWYgc2VsZi5tb2RlbCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHJlc3VsdCArPSAnIHJ1
bm5pbmcgb24gJyArIHNlbGYubW9kZWwKLSAgICAgICAgaWYgc2VsZi5hcmNoaXRlY3R1cmUgaXMg
bm90IE5vbmU6Ci0gICAgICAgICAgICByZXN1bHQgKz0gJyB1c2luZyAnICsgc2VsZi5hcmNoaXRl
Y3R1cmUKLQotICAgICAgICByZXR1cm4gcmVzdWx0WzE6XQotCi0gICAgZGVmIHRvX2pzb24oc2Vs
ZiwgcHJldHR5X3ByaW50PUZhbHNlKToKLSAgICAgICAgcmV0dXJuIGpzb24uZHVtcHMoc2VsZiwg
Y2xzPXNlbGYuRW5jb2Rlciwgc29ydF9rZXlzPXByZXR0eV9wcmludCwgaW5kZW50PTQgaWYgcHJl
dHR5X3ByaW50IGVsc2UgTm9uZSkKLQotICAgIGRlZiB0b19xdWVyeShzZWxmKToKLSAgICAgICAg
cXVlcnkgPSAnJwotICAgICAgICBmb3IgbWVtYmVyIGluIHNlbGYuUkVRVUlSRURfTUVNQkVSUyAr
IHNlbGYuT1BUSU9OQUxfTUVNQkVSUyArIHNlbGYuRklMVEVSSU5HX01FTUJFUlM6Ci0gICAgICAg
ICAgICB2YWx1ZSA9IGdldGF0dHIoc2VsZiwgbWVtYmVyKQotICAgICAgICAgICAgaWYgdmFsdWUg
aXMgTm9uZToKLSAgICAgICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgICAgICBpZiBtZW1i
ZXIgPT0gJ3ZlcnNpb24nOgotICAgICAgICAgICAgICAgIHF1ZXJ5ICs9IGYne21lbWJlcn09e3Nl
bGYuaW50ZWdlcl90b192ZXJzaW9uKHZhbHVlKX0mJwotICAgICAgICAgICAgZWxpZiBtZW1iZXIg
PT0gJ2lzX3NpbXVsYXRvcic6Ci0gICAgICAgICAgICAgICAgcXVlcnkgKz0gZiJ7bWVtYmVyfT17
J1RydWUnIGlmIHZhbHVlIGVsc2UgJ0ZhbHNlJ30mIgotICAgICAgICAgICAgZWxzZToKLSAgICAg
ICAgICAgICAgICBxdWVyeSArPSBmJ3ttZW1iZXJ9PXt2YWx1ZX0mJwotICAgICAgICBpZiBxdWVy
eToKLSAgICAgICAgICAgIHJldHVybiBxdWVyeVs6LTFdCi0gICAgICAgIHJldHVybiAnJwotCi0g
ICAgY2xhc3MgRW5jb2RlcihGbGFza0pTT05FbmNvZGVyKToKLQotICAgICAgICBkZWYgZGVmYXVs
dChzZWxmLCBvYmopOgotICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShvYmosIENvbmZpZ3VyYXRp
b24pOgotICAgICAgICAgICAgICAgIHJlc3VsdCA9IHt9Ci0gICAgICAgICAgICAgICAgZm9yIGtl
eSwgdmFsdWUgaW4gb2JqLl9fZGljdF9fLml0ZW1zKCk6Ci0gICAgICAgICAgICAgICAgICAgIGlm
IHZhbHVlIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAg
ICAgICAgICAgICAgICByZXN1bHRba2V5XSA9IHZhbHVlCi0gICAgICAgICAgICAgICAgcmV0dXJu
IHJlc3VsdAotICAgICAgICAgICAgcmV0dXJuIHN1cGVyKENvbmZpZ3VyYXRpb24uRW5jb2Rlciwg
c2VsZikuZGVmYXVsdChvYmopCkluZGV4OiBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9j
b250cm9sbGVyL2NvbmZpZ3VyYXRpb25fY29udHJvbGxlci5weQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9jb250cm9sbGVyL2NvbmZpZ3VyYXRpb25fY29udHJv
bGxlci5weQkocmV2aXNpb24gMjY1NTMxKQorKysgVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2Ri
cHkvY29udHJvbGxlci9jb25maWd1cmF0aW9uX2NvbnRyb2xsZXIucHkJKG5vbmV4aXN0ZW50KQpA
QCAtMSw1OCArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMg
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
IyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECi0jIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECi0jIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSMgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTAotIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotIyBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLAotIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1m
cm9tIHJlc3VsdHNkYnB5LmZsYXNrX3N1cHBvcnQudXRpbCBpbXBvcnQgYm9vbGVhbl9xdWVyeQot
ZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVyLmNvbmZpZ3VyYXRpb24gaW1wb3J0IENvbmZpZ3Vy
YXRpb24KLQotCi1kZWYgY29uZmlndXJhdGlvbl9mb3JfcXVlcnkoKToKLSAgICBkZWYgZGVjb3Jh
dG9yKG1ldGhvZCk6Ci0gICAgICAgIGRlZiByZWFsX21ldGhvZCgKLSAgICAgICAgICAgICAgICBz
ZWxmPU5vbmUsIHBsYXRmb3JtPU5vbmUsIHZlcnNpb249Tm9uZSwgc2RrPU5vbmUsIHZlcnNpb25f
bmFtZT1Ob25lLCBpc19zaW11bGF0b3I9Tm9uZSwKLSAgICAgICAgICAgICAgICBhcmNoaXRlY3R1
cmU9Tm9uZSwgbW9kZWw9Tm9uZSwgc3R5bGU9Tm9uZSwgZmxhdm9yPU5vbmUsICoqa3dhcmdzKToK
LSAgICAgICAgICAgIGFyZ3MgPSBkaWN0KAotICAgICAgICAgICAgICAgIHBsYXRmb3JtPXBsYXRm
b3JtIG9yIFtdLCB2ZXJzaW9uPXZlcnNpb24gb3IgW10sIHNkaz1zZGsgb3IgW10sIHZlcnNpb25f
bmFtZT12ZXJzaW9uX25hbWUgb3IgW10sCi0gICAgICAgICAgICAgICAgaXNfc2ltdWxhdG9yPWJv
b2xlYW5fcXVlcnkoKihpc19zaW11bGF0b3Igb3IgW10pKSwgYXJjaGl0ZWN0dXJlPWFyY2hpdGVj
dHVyZSBvciBbXSwgbW9kZWw9bW9kZWwgb3IgW10sCi0gICAgICAgICAgICAgICAgc3R5bGU9c3R5
bGUgb3IgW10sIGZsYXZvcj1mbGF2b3Igb3IgW10sCi0gICAgICAgICAgICApCi0KLSAgICAgICAg
ICAgIGRlZiByZWN1cnNpdmVfY2FsbGJhY2soa2V5cywgKiprd2FyZ3MpOgotICAgICAgICAgICAg
ICAgIGlmIG5vdCBrZXlzOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4ge0NvbmZpZ3VyYXRp
b24oKiprd2FyZ3MpfQotCi0gICAgICAgICAgICAgICAgaWYgbm90IGFyZ3Nba2V5c1stMV1dOgot
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVjdXJzaXZlX2NhbGxiYWNrKGtleXNbOi0xXSwg
Kiprd2FyZ3MpCi0gICAgICAgICAgICAgICAgcmVzdWx0ID0gc2V0KCkKLSAgICAgICAgICAgICAg
ICBmb3IgZWxlbWVudCBpbiBhcmdzW2tleXNbLTFdXToKLSAgICAgICAgICAgICAgICAgICAgZm9y
d2FyZGVkX2FyZ3MgPSB7a2V5OiB2YWx1ZSBmb3Iga2V5LCB2YWx1ZSBpbiBrd2FyZ3MuaXRlbXMo
KX0KLSAgICAgICAgICAgICAgICAgICAgZm9yd2FyZGVkX2FyZ3Nba2V5c1stMV1dID0gZWxlbWVu
dAotICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHQudW5pb24ocmVjdXJzaXZlX2Nh
bGxiYWNrKGtleXNbOi0xXSwgKipmb3J3YXJkZWRfYXJncykpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIHJlc3VsdAotCi0gICAgICAgICAgICBpZiBzZWxmIGlzIE5vbmU6Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIG1ldGhvZChjb25maWd1cmF0aW9ucz1saXN0KHJlY3Vyc2l2ZV9jYWxsYmFjayhs
aXN0KGFyZ3Mua2V5cygpKSkpIG9yIFtDb25maWd1cmF0aW9uKCldLCAqKmt3YXJncykKLSAgICAg
ICAgICAgIHJldHVybiBtZXRob2Qoc2VsZiwgY29uZmlndXJhdGlvbnM9bGlzdChyZWN1cnNpdmVf
Y2FsbGJhY2sobGlzdChhcmdzLmtleXMoKSkpKSBvciBbQ29uZmlndXJhdGlvbigpXSwgKiprd2Fy
Z3MpCi0KLSAgICAgICAgcmVhbF9tZXRob2QuX19uYW1lX18gPSBtZXRob2QuX19uYW1lX18KLSAg
ICAgICAgcmV0dXJuIHJlYWxfbWV0aG9kCi0KLSAgICByZXR1cm4gZGVjb3JhdG9yCkluZGV4OiBU
b29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9jb250cm9sbGVyL2NvbmZpZ3VyYXRpb25fY29u
dHJvbGxlcl91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9yZXN1bHRzZGJweS9yZXN1
bHRzZGJweS9jb250cm9sbGVyL2NvbmZpZ3VyYXRpb25fY29udHJvbGxlcl91bml0dGVzdC5weQko
cmV2aXNpb24gMjY1NTMxKQorKysgVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJv
bGxlci9jb25maWd1cmF0aW9uX2NvbnRyb2xsZXJfdW5pdHRlc3QucHkJKG5vbmV4aXN0ZW50KQpA
QCAtMSw5MSArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMg
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
IyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECi0jIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECi0jIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSMgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTAotIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotIyBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLAotIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1p
bXBvcnQgdW5pdHRlc3QKLQotZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVyLmNvbmZpZ3VyYXRp
b24gaW1wb3J0IENvbmZpZ3VyYXRpb24KLWZyb20gcmVzdWx0c2RicHkuY29udHJvbGxlci5jb25m
aWd1cmF0aW9uX2NvbnRyb2xsZXIgaW1wb3J0IGNvbmZpZ3VyYXRpb25fZm9yX3F1ZXJ5Ci0KLQot
Y2xhc3MgQ29uZmlndXJhdGlvbkNvbnRyb2xsZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAg
ICBAY29uZmlndXJhdGlvbl9mb3JfcXVlcnkoKQotICAgIGRlZiBmdW5jKHNlbGYsIGNvbmZpZ3Vy
YXRpb25zPU5vbmUpOgotICAgICAgICByZXR1cm4gY29uZmlndXJhdGlvbnMKLQotICAgIGRlZiB0
ZXN0X2NvbmZpZ3VyYXRpb25fZnJvbV9ub19xdWVyeShzZWxmKToKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChbQ29uZmlndXJhdGlvbigpXSwgc2VsZi5mdW5jKCkpCi0KLSAgICBkZWYgdGVzdF9j
b25maWd1cmF0aW9uc19mcm9tX3F1ZXJ5X2V4cGFuc2lvbihzZWxmKToKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgKLSAgICAgICAgICAgIHNvcnRlZChbQ29uZmlndXJhdGlvbihwbGF0Zm9ybT0n
aU9TJyksIENvbmZpZ3VyYXRpb24ocGxhdGZvcm09J01hYycpXSksCi0gICAgICAgICAgICBzb3J0
ZWQoc2VsZi5mdW5jKHBsYXRmb3JtPVsnaU9TJywgJ01hYyddKSksCi0gICAgICAgICkKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIHNvcnRlZChbCi0gICAgICAgICAgICAg
ICAgQ29uZmlndXJhdGlvbihwbGF0Zm9ybT0naU9TJywgc3R5bGU9J1JlbGVhc2UnKSwKLSAgICAg
ICAgICAgICAgICBDb25maWd1cmF0aW9uKHBsYXRmb3JtPSdNYWMnLCBzdHlsZT0nRGVidWcnKSwK
LSAgICAgICAgICAgICAgICBDb25maWd1cmF0aW9uKHBsYXRmb3JtPSdpT1MnLCBzdHlsZT0nRGVi
dWcnKSwKLSAgICAgICAgICAgICAgICBDb25maWd1cmF0aW9uKHBsYXRmb3JtPSdNYWMnLCBzdHls
ZT0nUmVsZWFzZScpLAotICAgICAgICAgICAgXSksIHNvcnRlZChzZWxmLmZ1bmMocGxhdGZvcm09
WydpT1MnLCAnTWFjJ10sIHN0eWxlPVsnRGVidWcnLCAnUmVsZWFzZSddKSksCi0gICAgICAgICkK
LQotICAgIGRlZiB0ZXN0X2NvbmZpZ3VyYXRpb25zX2Zyb21fcXVlcnlfcGxhdGZvcm0oc2VsZik6
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBbQ29uZmlndXJhdGlvbihw
bGF0Zm9ybT0naU9TJyldLAotICAgICAgICAgICAgc2VsZi5mdW5jKHBsYXRmb3JtPVsnaU9TJ10p
LAotICAgICAgICApCi0KLSAgICBkZWYgdGVzdF9jb25maWd1cmF0aW9uX2Zyb21fcXVlcnlfdmVy
c2lvbihzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIFtDb25m
aWd1cmF0aW9uKHZlcnNpb249JzEuMC4xJyldLAotICAgICAgICAgICAgc2VsZi5mdW5jKHZlcnNp
b249WycxLjAuMSddKSwKLSAgICAgICAgKQotCi0gICAgZGVmIHRlc3RfY29uZmlndXJhdGlvbl9m
cm9tX3F1ZXJ5X3ZlcnNpb25fbmFtZShzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgK
LSAgICAgICAgICAgIFtDb25maWd1cmF0aW9uKHZlcnNpb25fbmFtZT0nSGlnaCBTaWVycmEnKV0s
Ci0gICAgICAgICAgICBzZWxmLmZ1bmModmVyc2lvbl9uYW1lPVsnSGlnaCBTaWVycmEnXSksCi0g
ICAgICAgICkKLQotICAgIGRlZiB0ZXN0X2NvbmZpZ3VyYXRpb25fZnJvbV9xdWVyeV9pc19zaW11
bGF0b3Ioc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBbQ29u
ZmlndXJhdGlvbihpc19zaW11bGF0b3I9VHJ1ZSldLAotICAgICAgICAgICAgc2VsZi5mdW5jKGlz
X3NpbXVsYXRvcj1bJ3RydWUnXSksCi0gICAgICAgICkKLQotICAgIGRlZiB0ZXN0X2NvbmZpZ3Vy
YXRpb25fZnJvbV9xdWVyeV9hcmNoaXRlY3R1cmUoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoCi0gICAgICAgICAgICBbQ29uZmlndXJhdGlvbihhcmNoaXRlY3R1cmU9J2FybTY0Jyld
LAotICAgICAgICAgICAgc2VsZi5mdW5jKGFyY2hpdGVjdHVyZT1bJ2FybTY0J10pLAotICAgICAg
ICApCi0KLSAgICBkZWYgdGVzdF9jb25maWd1cmF0aW9uX2Zyb21fcXVlcnlfdHlwZShzZWxmKToK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIFtDb25maWd1cmF0aW9uKHN0
eWxlPSdEZWJ1ZycpXSwKLSAgICAgICAgICAgIHNlbGYuZnVuYyhzdHlsZT1bJ0RlYnVnJ10pLAot
ICAgICAgICApCi0KLSAgICBkZWYgdGVzdF9jb25maWd1cmF0aW9uX2Zyb21fcXVlcnlfZmxhdm9y
KHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgW0NvbmZpZ3Vy
YXRpb24oZmxhdm9yPSd3azInKV0sCi0gICAgICAgICAgICBzZWxmLmZ1bmMoZmxhdm9yPVsnd2sy
J10pLAotICAgICAgICApCkluZGV4OiBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9jb250
cm9sbGVyL2NvbmZpZ3VyYXRpb25fdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvcmVz
dWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci9jb25maWd1cmF0aW9uX3VuaXR0ZXN0LnB5
CShyZXZpc2lvbiAyNjU1MzEpCisrKyBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9jb250
cm9sbGVyL2NvbmZpZ3VyYXRpb25fdW5pdHRlc3QucHkJKG5vbmV4aXN0ZW50KQpAQCAtMSw5OCAr
MCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0jIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0j
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUgotIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotIyBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLAotIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1pbXBvcnQgdW5p
dHRlc3QKLQotZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVyLmNvbmZpZ3VyYXRpb24gaW1wb3J0
IENvbmZpZ3VyYXRpb24KLQotCi1jbGFzcyBDb25maWd1cmF0aW9uVW5pdHRlc3QodW5pdHRlc3Qu
VGVzdENhc2UpOgotCi0gICAgZGVmIHRlc3RfdmVyc2lvbl9pbnRlZ2VyX2NvbnZlcnNpb24oc2Vs
Zik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMTAwMjAwMywgQ29uZmlndXJhdGlvbi52ZXJz
aW9uX3RvX2ludGVnZXIoWzEsIDIsIDNdKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxMDAw
MDAwLCBDb25maWd1cmF0aW9uLnZlcnNpb25fdG9faW50ZWdlcihbMV0pKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKDEwMDIwMDMsIENvbmZpZ3VyYXRpb24udmVyc2lvbl90b19pbnRlZ2VyKCcx
LjIuMycpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEwMDAwMDAsIENvbmZpZ3VyYXRpb24u
dmVyc2lvbl90b19pbnRlZ2VyKCcxJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgQ29u
ZmlndXJhdGlvbi52ZXJzaW9uX3RvX2ludGVnZXIoMSkpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgnMS4yLjMnLCBDb25maWd1cmF0aW9uLmludGVnZXJfdG9fdmVyc2lvbigxMDAyMDAzKSkK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnMS4yLjAnLCBDb25maWd1cmF0aW9uLmludGVnZXJf
dG9fdmVyc2lvbigxMDAyMDAwKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnMS4wLjAnLCBD
b25maWd1cmF0aW9uLmludGVnZXJfdG9fdmVyc2lvbigxMDAwMDAwKSkKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgnMC4xLjInLCBDb25maWd1cmF0aW9uLmludGVnZXJfdG9fdmVyc2lvbigxMDAy
KSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnMC4wLjEnLCBDb25maWd1cmF0aW9uLmludGVn
ZXJfdG9fdmVyc2lvbigxKSkKLQotICAgIGRlZiB0ZXN0X3dpbGRjYXJkX2NvbXBhcmUoc2VsZik6
Ci0gICAgICAgIHJlZmVyZW5jZSA9IENvbmZpZ3VyYXRpb24ocGxhdGZvcm09J01hYycsIHZlcnNp
b249JzEwLjE0JywgaXNfc2ltdWxhdG9yPUZhbHNlLCBhcmNoaXRlY3R1cmU9J3g4Nl82NCcsIHN0
eWxlPSdEZWJ1ZycsIGZsYXZvcj0nd2syJykKLQotICAgICAgICBzaG91bGRfbWF0Y2ggPSBbCi0g
ICAgICAgICAgICBDb25maWd1cmF0aW9uKHBsYXRmb3JtPSdNYWMnKSwKLSAgICAgICAgICAgIENv
bmZpZ3VyYXRpb24odmVyc2lvbj0nMTAuMTQnKSwKLSAgICAgICAgICAgIENvbmZpZ3VyYXRpb24o
aXNfc2ltdWxhdG9yPUZhbHNlKSwKLSAgICAgICAgICAgIENvbmZpZ3VyYXRpb24oYXJjaGl0ZWN0
dXJlPSd4ODZfNjQnKSwKLSAgICAgICAgICAgIENvbmZpZ3VyYXRpb24oc3R5bGU9J0RlYnVnJyks
Ci0gICAgICAgICAgICBDb25maWd1cmF0aW9uKGZsYXZvcj0nd2syJyksCi0gICAgICAgIF0KLSAg
ICAgICAgZm9yIGVsZW1lbnQgaW4gc2hvdWxkX21hdGNoOgotICAgICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChlbGVtZW50LCByZWZlcmVuY2UpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNl
KGVsZW1lbnQgIT0gcmVmZXJlbmNlKQotCi0gICAgICAgIHNob3VsZG50X21hdGNoID0gWwotICAg
ICAgICAgICAgQ29uZmlndXJhdGlvbihwbGF0Zm9ybT0naU9TJyksCi0gICAgICAgICAgICBDb25m
aWd1cmF0aW9uKHZlcnNpb249JzEwLjEzJyksCi0gICAgICAgICAgICBDb25maWd1cmF0aW9uKGlz
X3NpbXVsYXRvcj1UcnVlKSwKLSAgICAgICAgICAgIENvbmZpZ3VyYXRpb24oYXJjaGl0ZWN0dXJl
PSdhcm02NCcpLAotICAgICAgICAgICAgQ29uZmlndXJhdGlvbihzdHlsZT0nUmVsZWFzZScpLAot
ICAgICAgICAgICAgQ29uZmlndXJhdGlvbihmbGF2b3I9J3drMScpLAotICAgICAgICBdCi0gICAg
ICAgIGZvciBlbGVtZW50IGluIHNob3VsZG50X21hdGNoOgotICAgICAgICAgICAgc2VsZi5hc3Nl
cnROb3RFcXVhbChlbGVtZW50LCByZWZlcmVuY2UpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEZh
bHNlKGVsZW1lbnQgPT0gcmVmZXJlbmNlKQotCi0gICAgZGVmIHRlc3RfanNvbmlmeShzZWxmKToK
LSAgICAgICAgY29uZmlncyA9IFsKLSAgICAgICAgICAgIENvbmZpZ3VyYXRpb24ocGxhdGZvcm09
J01hYycsIHZlcnNpb249JzEwLjE0JywgaXNfc2ltdWxhdG9yPUZhbHNlLCBhcmNoaXRlY3R1cmU9
J3g4Nl82NCcsIHN0eWxlPSdEZWJ1ZycsIGZsYXZvcj0nd2syJyksCi0gICAgICAgICAgICBDb25m
aWd1cmF0aW9uKHBsYXRmb3JtPSdNYWMnLCB2ZXJzaW9uPScxMC4xNCcsIHN0eWxlPSdQcm9kdWN0
aW9uJywgZmxhdm9yPSd3azInKSwKLSAgICAgICAgICAgIENvbmZpZ3VyYXRpb24ocGxhdGZvcm09
J2lPUycsIHZlcnNpb249JzExJywgaXNfc2ltdWxhdG9yPVRydWUsIGFyY2hpdGVjdHVyZT0neDg2
XzY0Jywgc3R5bGU9J0RlYnVnJyksCi0gICAgICAgICAgICBDb25maWd1cmF0aW9uKHBsYXRmb3Jt
PSdpT1MnLCB2ZXJzaW9uPScxMicsIGlzX3NpbXVsYXRvcj1GYWxzZSwgYXJjaGl0ZWN0dXJlPSdh
cm02NCcsIHN0eWxlPSdSZWxlYXNlJyksCi0gICAgICAgIF0KLQotICAgICAgICBmb3IgY29uZmln
IGluIGNvbmZpZ3M6Ci0gICAgICAgICAgICBjb252ZXJ0ZWRfY29uZmlnID0gQ29uZmlndXJhdGlv
bi5mcm9tX2pzb24oY29uZmlnLnRvX2pzb24oKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoY29uZmlnLCBjb252ZXJ0ZWRfY29uZmlnKQotCi0gICAgZGVmIHRlc3RfdG9fcXVlcnkoc2Vs
Zik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBDb25maWd1cmF0aW9u
KHBsYXRmb3JtPSdNYWMnLCB2ZXJzaW9uPScxMC4xNCcsIGlzX3NpbXVsYXRvcj1GYWxzZSwgYXJj
aGl0ZWN0dXJlPSd4ODZfNjQnLCBzdHlsZT0nRGVidWcnLCBmbGF2b3I9J3drMicpLnRvX3F1ZXJ5
KCksCi0gICAgICAgICAgICAncGxhdGZvcm09TWFjJmlzX3NpbXVsYXRvcj1GYWxzZSZ2ZXJzaW9u
PTEwLjE0LjAmYXJjaGl0ZWN0dXJlPXg4Nl82NCZzdHlsZT1EZWJ1ZyZmbGF2b3I9d2syJywKLSAg
ICAgICAgKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgQ29uZmlndXJh
dGlvbihwbGF0Zm9ybT0nTWFjJywgdmVyc2lvbj0nMTAuMTQnLCBzdHlsZT0nUHJvZHVjdGlvbics
IGZsYXZvcj0nd2syJykudG9fcXVlcnkoKSwKLSAgICAgICAgICAgICdwbGF0Zm9ybT1NYWMmdmVy
c2lvbj0xMC4xNC4wJnN0eWxlPVByb2R1Y3Rpb24mZmxhdm9yPXdrMicsCi0gICAgICAgICkKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIENvbmZpZ3VyYXRpb24ocGxhdGZv
cm09J2lPUycsIHZlcnNpb249JzExJywgaXNfc2ltdWxhdG9yPVRydWUsIGFyY2hpdGVjdHVyZT0n
eDg2XzY0Jywgc3R5bGU9J0RlYnVnJykudG9fcXVlcnkoKSwKLSAgICAgICAgICAgICdwbGF0Zm9y
bT1pT1MmaXNfc2ltdWxhdG9yPVRydWUmdmVyc2lvbj0xMS4wLjAmYXJjaGl0ZWN0dXJlPXg4Nl82
NCZzdHlsZT1EZWJ1ZycsCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAg
ICAgICAgICAgIENvbmZpZ3VyYXRpb24ocGxhdGZvcm09J2lPUycsIHZlcnNpb249JzEyJywgaXNf
c2ltdWxhdG9yPUZhbHNlLCBhcmNoaXRlY3R1cmU9J2FybTY0Jywgc3R5bGU9J1JlbGVhc2UnKS50
b19xdWVyeSgpLAotICAgICAgICAgICAgJ3BsYXRmb3JtPWlPUyZpc19zaW11bGF0b3I9RmFsc2Um
dmVyc2lvbj0xMi4wLjAmYXJjaGl0ZWN0dXJlPWFybTY0JnN0eWxlPVJlbGVhc2UnLAotICAgICAg
ICApCkluZGV4OiBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9jb250cm9sbGVyL2ZhaWx1
cmVfY29udHJvbGxlci5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRz
ZGJweS9jb250cm9sbGVyL2ZhaWx1cmVfY29udHJvbGxlci5weQkocmV2aXNpb24gMjY1NTMxKQor
KysgVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci9mYWlsdXJlX2NvbnRy
b2xsZXIucHkJKG5vbmV4aXN0ZW50KQpAQCAtMSw5NyArMCwwIEBACi0jIENvcHlyaWdodCAoQykg
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJ
UyIgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotIyBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUgotIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotIyBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotCi1mcm9tIGZsYXNrIGltcG9ydCBhYm9ydCwganNvbmlmeQot
ZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVyLmNvbW1pdF9jb250cm9sbGVyIGltcG9ydCB1dWlk
X3JhbmdlX2Zvcl9xdWVyeSwgSGFzQ29tbWl0Q29udGV4dAotZnJvbSByZXN1bHRzZGJweS5jb250
cm9sbGVyLmNvbmZpZ3VyYXRpb24gaW1wb3J0IENvbmZpZ3VyYXRpb24KLWZyb20gcmVzdWx0c2Ri
cHkuY29udHJvbGxlci5jb25maWd1cmF0aW9uX2NvbnRyb2xsZXIgaW1wb3J0IGNvbmZpZ3VyYXRp
b25fZm9yX3F1ZXJ5Ci1mcm9tIHJlc3VsdHNkYnB5LmNvbnRyb2xsZXIuc3VpdGVfY29udHJvbGxl
ciBpbXBvcnQgdGltZV9yYW5nZV9mb3JfcXVlcnkKLWZyb20gcmVzdWx0c2RicHkuZmxhc2tfc3Vw
cG9ydC51dGlsIGltcG9ydCBBc3NlcnRSZXF1ZXN0LCBxdWVyeV9hc19rd2FyZ3MsIGxpbWl0X2Zv
cl9xdWVyeSwgYm9vbGVhbl9xdWVyeQotCi0KLWNsYXNzIEZhaWx1cmVDb250cm9sbGVyKEhhc0Nv
bW1pdENvbnRleHQpOgotICAgIERFRkFVTFRfTElNSVQgPSAxMDAwCi0KLSAgICBkZWYgX19pbml0
X18oc2VsZiwgZmFpbHVyZV9jb250ZXh0KToKLSAgICAgICAgc3VwZXIoRmFpbHVyZUNvbnRyb2xs
ZXIsIHNlbGYpLl9faW5pdF9fKGZhaWx1cmVfY29udGV4dC5jb21taXRfY29udGV4dCkKLSAgICAg
ICAgc2VsZi5mYWlsdXJlX2NvbnRleHQgPSBmYWlsdXJlX2NvbnRleHQKLQotICAgIEBxdWVyeV9h
c19rd2FyZ3MoKQotICAgIEB1dWlkX3JhbmdlX2Zvcl9xdWVyeSgpCi0gICAgQGxpbWl0X2Zvcl9x
dWVyeShERUZBVUxUX0xJTUlUKQotICAgIEBjb25maWd1cmF0aW9uX2Zvcl9xdWVyeSgpCi0gICAg
QHRpbWVfcmFuZ2VfZm9yX3F1ZXJ5KCkKLSAgICBkZWYgZmFpbHVyZXMoCi0gICAgICAgIHNlbGYs
IHN1aXRlPU5vbmUsCi0gICAgICAgIGNvbmZpZ3VyYXRpb25zPU5vbmUsIHJlY2VudD1Ob25lLAot
ICAgICAgICBicmFuY2g9Tm9uZSwgYmVnaW49Tm9uZSwgZW5kPU5vbmUsCi0gICAgICAgIGJlZ2lu
X3F1ZXJ5X3RpbWU9Tm9uZSwgZW5kX3F1ZXJ5X3RpbWU9Tm9uZSwKLSAgICAgICAgdW5leHBlY3Rl
ZD1Ob25lLCBjb2xsYXBzZWQ9Tm9uZSwKLSAgICAgICAgbGltaXQ9Tm9uZSwgKiprd2FyZ3MKLSAg
ICApOgotICAgICAgICBBc3NlcnRSZXF1ZXN0LmlzX3R5cGUoWydHRVQnXSkKLSAgICAgICAgQXNz
ZXJ0UmVxdWVzdC5xdWVyeV9rd2FyZ3NfZW1wdHkoKiprd2FyZ3MpCi0KLSAgICAgICAgcmVjZW50
ID0gYm9vbGVhbl9xdWVyeSgqcmVjZW50KVswXSBpZiByZWNlbnQgZWxzZSBUcnVlCi0gICAgICAg
IHVuZXhwZWN0ZWQgPSBib29sZWFuX3F1ZXJ5KCp1bmV4cGVjdGVkKVswXSBpZiB1bmV4cGVjdGVk
IGVsc2UgVHJ1ZQotICAgICAgICBjb2xsYXBzZWQgPSBib29sZWFuX3F1ZXJ5KCpjb2xsYXBzZWQp
WzBdIGlmIGNvbGxhcHNlZCBlbHNlIFRydWUKLQotICAgICAgICBpZiBub3Qgc3VpdGU6Ci0gICAg
ICAgICAgICBhYm9ydCg0MDAsIGRlc2NyaXB0aW9uPSdObyBzdWl0ZSBzcGVjaWZpZWQnKQotCi0g
ICAgICAgIHdpdGggc2VsZi5mYWlsdXJlX2NvbnRleHQ6Ci0gICAgICAgICAgICBxdWVyeV9kaWN0
ID0gZGljdCgKLSAgICAgICAgICAgICAgICBzdWl0ZT1zdWl0ZSwKLSAgICAgICAgICAgICAgICBj
b25maWd1cmF0aW9ucz1jb25maWd1cmF0aW9ucywgcmVjZW50PXJlY2VudCwKLSAgICAgICAgICAg
ICAgICBicmFuY2g9YnJhbmNoWzBdLCBiZWdpbj1iZWdpbiwgZW5kPWVuZCwKLSAgICAgICAgICAg
ICAgICBiZWdpbl9xdWVyeV90aW1lPWJlZ2luX3F1ZXJ5X3RpbWUsIGVuZF9xdWVyeV90aW1lPWVu
ZF9xdWVyeV90aW1lLAotICAgICAgICAgICAgICAgIGxpbWl0PWxpbWl0LCB1bmV4cGVjdGVkPXVu
ZXhwZWN0ZWQsIGNvbGxhcHNlZD1jb2xsYXBzZWQsCi0gICAgICAgICAgICApCi0gICAgICAgICAg
ICBudW1fc3BlY2lmaWVkX2NvbW1pdHMgPSBzdW0oWzEgaWYgZWxlbWVudCBlbHNlIDAgZm9yIGVs
ZW1lbnQgaW4gW2JlZ2luLCBlbmRdXSkKLSAgICAgICAgICAgIG51bV9zcGVjaWZpZWRfdGltZXN0
YW1wcyA9IHN1bShbMSBpZiBlbGVtZW50IGVsc2UgMCBmb3IgZWxlbWVudCBpbiBbYmVnaW5fcXVl
cnlfdGltZSwgZW5kX3F1ZXJ5X3RpbWVdXSkKLQotICAgICAgICAgICAgaWYgbnVtX3NwZWNpZmll
ZF9jb21taXRzID49IG51bV9zcGVjaWZpZWRfdGltZXN0YW1wczoKLSAgICAgICAgICAgICAgICBm
aW5kX2Z1bmN0aW9uID0gc2VsZi5mYWlsdXJlX2NvbnRleHQuZmFpbHVyZXNfYnlfY29tbWl0Ci0K
LSAgICAgICAgICAgICAgICBkZWYgc29ydF9mdW5jdGlvbihyZXN1bHQpOgotICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gcmVzdWx0Wyd1dWlkJ10KLQotICAgICAgICAgICAgZWxzZToKLSAgICAg
ICAgICAgICAgICBmaW5kX2Z1bmN0aW9uID0gc2VsZi5mYWlsdXJlX2NvbnRleHQuZmFpbHVyZXNf
Ynlfc3RhcnRfdGltZQotCi0gICAgICAgICAgICAgICAgZGVmIHNvcnRfZnVuY3Rpb24ocmVzdWx0
KToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdFsnc3RhcnRfdGltZSddCi0KLSAg
ICAgICAgICAgIGZhaWx1cmVzID0gZmluZF9mdW5jdGlvbigqKnF1ZXJ5X2RpY3QpCi0gICAgICAg
ICAgICBpZiBmYWlsdXJlcyBpcyBOb25lOgotICAgICAgICAgICAgICAgIGFib3J0KDQwNCwgZGVz
Y3JpcHRpb249J05vIHRlc3QgcnVucyBmb3VuZCB3aXRoIHRoZSBzcGVjaWZpZWQgY3JpdGVyaWEn
KQotCi0gICAgICAgICAgICBpZiBjb2xsYXBzZWQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGpz
b25pZnkoc29ydGVkKHNldChmYWlsdXJlcykpKQotCi0gICAgICAgICAgICByZXNwb25zZSA9IFtd
Ci0gICAgICAgICAgICBmb3IgY29uZmlnLCByZXN1bHRzIGluIGZhaWx1cmVzLml0ZW1zKCk6Ci0g
ICAgICAgICAgICAgICAgcmVzcG9uc2UuYXBwZW5kKGRpY3QoCi0gICAgICAgICAgICAgICAgICAg
IGNvbmZpZ3VyYXRpb249Q29uZmlndXJhdGlvbi5FbmNvZGVyKCkuZGVmYXVsdChjb25maWcpLAot
ICAgICAgICAgICAgICAgICAgICByZXN1bHRzPXNvcnRlZChyZXN1bHRzLCBrZXk9c29ydF9mdW5j
dGlvbiksCi0gICAgICAgICAgICAgICAgKSkKLSAgICAgICAgICAgIHJldHVybiBqc29uaWZ5KHJl
c3BvbnNlKQpJbmRleDogVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci9m
YWlsdXJlX2NvbnRyb2xsZXJfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvcmVzdWx0
c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci9mYWlsdXJlX2NvbnRyb2xsZXJfdW5pdHRlc3Qu
cHkJKHJldmlzaW9uIDI2NTUzMSkKKysrIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2Nv
bnRyb2xsZXIvZmFpbHVyZV9jb250cm9sbGVyX3VuaXR0ZXN0LnB5CShub25leGlzdGVudCkKQEAg
LTEsMTE4ICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0j
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKLSMgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotIyBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0jIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0jIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksCi0jIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLWlt
cG9ydCB0aW1lCi0KLWZyb20gZmFrZXJlZGlzIGltcG9ydCBGYWtlU3RyaWN0UmVkaXMKLWZyb20g
cmVkaXMgaW1wb3J0IFN0cmljdFJlZGlzCi1mcm9tIHJlc3VsdHNkYnB5LmNvbnRyb2xsZXIuYXBp
X3JvdXRlcyBpbXBvcnQgQVBJUm91dGVzCi1mcm9tIHJlc3VsdHNkYnB5LmZsYXNrX3N1cHBvcnQu
Zmxhc2tfdGVzdGNhc2UgaW1wb3J0IEZsYXNrVGVzdENhc2UKLWZyb20gcmVzdWx0c2RicHkubW9k
ZWwuY2Fzc2FuZHJhX2NvbnRleHQgaW1wb3J0IENhc3NhbmRyYUNvbnRleHQKLWZyb20gcmVzdWx0
c2RicHkubW9kZWwubW9ja19jYXNzYW5kcmFfY29udGV4dCBpbXBvcnQgTW9ja0Nhc3NhbmRyYUNv
bnRleHQKLWZyb20gcmVzdWx0c2RicHkubW9kZWwubW9ja19tb2RlbF9mYWN0b3J5IGltcG9ydCBN
b2NrTW9kZWxGYWN0b3J5Ci1mcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLnRlc3RfY29udGV4dCBpbXBv
cnQgRXhwZWN0YXRpb25zCi1mcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLndhaXRfZm9yX2RvY2tlcl90
ZXN0X2Nhc2UgaW1wb3J0IFdhaXRGb3JEb2NrZXJUZXN0Q2FzZQotCi0KLWNsYXNzIEZhaWx1cmVD
b250cm9sbGVyVGVzdChGbGFza1Rlc3RDYXNlLCBXYWl0Rm9yRG9ja2VyVGVzdENhc2UpOgotICAg
IEtFWVNQQUNFID0gJ2ZhaWx1cmVfY29udHJvbGxlcl90ZXN0X2tleXNwYWNlJwotCi0gICAgQGNs
YXNzbWV0aG9kCi0gICAgZGVmIHNldHVwX3dlYnNlcnZlcihjbHMsIGFwcCwgcmVkaXM9U3RyaWN0
UmVkaXMsIGNhc3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0KToKLSAgICAgICAgY2Fzc2FuZHJhLmRy
b3Bfa2V5c3BhY2Uoa2V5c3BhY2U9Y2xzLktFWVNQQUNFKQotICAgICAgICBtb2RlbCA9IE1vY2tN
b2RlbEZhY3RvcnkuY3JlYXRlKHJlZGlzPXJlZGlzKCksIGNhc3NhbmRyYT1jYXNzYW5kcmEoa2V5
c3BhY2U9Y2xzLktFWVNQQUNFLCBjcmVhdGVfa2V5c3BhY2U9VHJ1ZSkpCi0gICAgICAgIGFwcC5y
ZWdpc3Rlcl9ibHVlcHJpbnQoQVBJUm91dGVzKG1vZGVsKSkKLQotICAgICAgICBNb2NrTW9kZWxG
YWN0b3J5LmFkZF9tb2NrX3Jlc3VsdHMobW9kZWwsIHRlc3RfcmVzdWx0cz1kaWN0KAotICAgICAg
ICAgICAgZGV0YWlscz1kaWN0KGxpbms9J2R1bW15LWxpbmsnKSwKLSAgICAgICAgICAgIHJ1bl9z
dGF0cz1kaWN0KHRlc3RzX3NraXBwZWQ9MCksCi0gICAgICAgICAgICByZXN1bHRzPXsKLSAgICAg
ICAgICAgICAgICAnZmFzdCc6IHsKLSAgICAgICAgICAgICAgICAgICAgJ2VuY29kaW5nJzogewot
ICAgICAgICAgICAgICAgICAgICAgICAgJ2Nzcy1jYWNoZWQtYm9tLmh0bWwnOiBkaWN0KGV4cGVj
dGVkPSdQQVNTJywgYWN0dWFsPSdGQUlMJywgdGltZT0xLjIpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgJ2Nzcy1jaGFyc2V0LWRlZmF1bHQueGh0bWwnOiBkaWN0KGV4cGVjdGVkPSdGQUlMJywg
YWN0dWFsPSdGQUlMJywgdGltZT0xLjIpLAotICAgICAgICAgICAgICAgICAgICAgICAgJ2Nzcy1j
aGFyc2V0Lmh0bWwnOiBkaWN0KGV4cGVjdGVkPSdGQUlMJywgYWN0dWFsPSdQQVNTJywgdGltZT0x
LjIpLAotICAgICAgICAgICAgICAgICAgICAgICAgJ2Nzcy1saW5rLWNoYXJzZXQuaHRtbCc6IGRp
Y3QoZXhwZWN0ZWQ9J1BBU1MnLCBhY3R1YWw9J1BBUycsIHRpbWU9MS4yKSwKLSAgICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0sCi0gICAgICAgICkp
Ci0gICAgICAgIE1vY2tNb2RlbEZhY3RvcnkucHJvY2Vzc19yZXN1bHRzKG1vZGVsKQotCi0gICAg
QFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VT
dHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCi0gICAgQEZs
YXNrVGVzdENhc2UucnVuX3dpdGhfd2Vic2VydmVyKCkKLSAgICBkZWYgdGVzdF9mYWlsdXJlc19j
b2xsYXBzZWQoc2VsZiwgY2xpZW50LCAqKmt3YXJncyk6Ci0gICAgICAgIHJlc3BvbnNlID0gY2xp
ZW50LmdldChzZWxmLlVSTCArICcvYXBpL2ZhaWx1cmVzL2xheW91dC10ZXN0cz9wbGF0Zm9ybT1p
T1Mmc3R5bGU9RGVidWcmdW5leHBlY3RlZD1GYWxzZScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChs
ZW4ocmVzcG9uc2UuanNvbigpKSwgMikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25z
ZS5qc29uKCksIFsnZmFzdC9lbmNvZGluZy9jc3MtY2FjaGVkLWJvbS5odG1sJywgJ2Zhc3QvZW5j
b2RpbmcvY3NzLWNoYXJzZXQtZGVmYXVsdC54aHRtbCddKQotCi0gICAgQFdhaXRGb3JEb2NrZXJU
ZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9j
a19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCi0gICAgQEZsYXNrVGVzdENhc2UucnVu
X3dpdGhfd2Vic2VydmVyKCkKLSAgICBkZWYgdGVzdF91bmV4cGVjdGVkX2ZhaWx1cmVzX2NvbGxh
cHNlZChzZWxmLCBjbGllbnQsICoqa3dhcmdzKToKLSAgICAgICAgcmVzcG9uc2UgPSBjbGllbnQu
Z2V0KHNlbGYuVVJMICsgJy9hcGkvZmFpbHVyZXMvbGF5b3V0LXRlc3RzP3BsYXRmb3JtPWlPUyZz
dHlsZT1EZWJ1ZycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2Uuc3RhdHVzX2Nv
ZGUsIDIwMCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzcG9uc2UuanNvbigpKSwg
MSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5qc29uKCksIFsnZmFzdC9lbmNv
ZGluZy9jc3MtY2FjaGVkLWJvbS5odG1sJ10pCi0KLSAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNl
Lm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3Nh
bmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKLSAgICBARmxhc2tUZXN0Q2FzZS5ydW5fd2l0aF93
ZWJzZXJ2ZXIoKQotICAgIGRlZiB0ZXN0X2ZhaWx1cmVzKHNlbGYsIGNsaWVudCwgKiprd2FyZ3Mp
OgotICAgICAgICByZXNwb25zZSA9IGNsaWVudC5nZXQoc2VsZi5VUkwgKyAnL2FwaS9mYWlsdXJl
cy9sYXlvdXQtdGVzdHM/cGxhdGZvcm09TWFjJnN0eWxlPURlYnVnJnVuZXhwZWN0ZWQ9RmFsc2Um
Y29sbGFwc2VkPUZhbHNlJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5zdGF0
dXNfY29kZSwgMjAwKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZXNwb25zZS5qc29u
KCkpLCAyKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZXNwb25zZS5qc29uKClbMF1b
J3Jlc3VsdHMnXSksIDUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2UuanNvbigp
WzBdWydyZXN1bHRzJ11bMF1bJ2Zhc3QvZW5jb2RpbmcvY3NzLWNhY2hlZC1ib20uaHRtbCddLCAn
RkFJTCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2UuanNvbigpWzBdWydyZXN1
bHRzJ11bMF1bJ2Zhc3QvZW5jb2RpbmcvY3NzLWNoYXJzZXQtZGVmYXVsdC54aHRtbCddLCAnRkFJ
TCcpCi0KLSAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tf
cmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4
dCkKLSAgICBARmxhc2tUZXN0Q2FzZS5ydW5fd2l0aF93ZWJzZXJ2ZXIoKQotICAgIGRlZiB0ZXN0
X3VuZXhwZWN0ZWRfZmFpbHVyZXMoc2VsZiwgY2xpZW50LCAqKmt3YXJncyk6Ci0gICAgICAgIHJl
c3BvbnNlID0gY2xpZW50LmdldChzZWxmLlVSTCArICcvYXBpL2ZhaWx1cmVzL2xheW91dC10ZXN0
cz9wbGF0Zm9ybT1NYWMmc3R5bGU9RGVidWcmY29sbGFwc2VkPUZhbHNlJykKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChyZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGxlbihyZXNwb25zZS5qc29uKCkpLCAyKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGxlbihyZXNwb25zZS5qc29uKClbMF1bJ3Jlc3VsdHMnXSksIDUpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwocmVzcG9uc2UuanNvbigpWzBdWydyZXN1bHRzJ11bMF1bJ2Zhc3QvZW5jb2Rp
bmcvY3NzLWNhY2hlZC1ib20uaHRtbCddLCAnRkFJTCcpCi0KLSAgICBAV2FpdEZvckRvY2tlclRl
c3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2Nr
X2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKLSAgICBARmxhc2tUZXN0Q2FzZS5ydW5f
d2l0aF93ZWJzZXJ2ZXIoKQotICAgIGRlZiB0ZXN0X2ZhaWx1cmVfYnlfdGltZShzZWxmLCBjbGll
bnQsICoqa3dhcmdzKToKLSAgICAgICAgcmVzcG9uc2UgPSBjbGllbnQuZ2V0KGYne3NlbGYuVVJM
fS9hcGkvZmFpbHVyZXMvbGF5b3V0LXRlc3RzP3BsYXRmb3JtPWlPUyZzdHlsZT1EZWJ1ZyZyZWNl
bnQ9RmFsc2UmYWZ0ZXJfdGltZT17dGltZS50aW1lKCkgLSA2MCAqIDYwfSZjb2xsYXBzZWQ9RmFs
c2UnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDAp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlc3BvbnNlLmpzb24oKSksIDIpCi0gICAg
ICAgIGZvciBpIGluIHJhbmdlKDIpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4o
cmVzcG9uc2UuanNvbigpW2ldWydyZXN1bHRzJ10pLCA1KQotICAgICAgICAgICAgbGFzdF9zdGFy
dF90aW1lID0gMAotICAgICAgICAgICAgZm9yIHJlc3VsdCBpbiByZXNwb25zZS5qc29uKClbaV1b
J3Jlc3VsdHMnXToKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChyZXN1
bHRbJ3N0YXJ0X3RpbWUnXSwgbGFzdF9zdGFydF90aW1lKQotICAgICAgICAgICAgICAgIGxhc3Rf
c3RhcnRfdGltZSA9IHJlc3VsdFsnc3RhcnRfdGltZSddCi0KLSAgICBAV2FpdEZvckRvY2tlclRl
c3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2Nr
X2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKLSAgICBARmxhc2tUZXN0Q2FzZS5ydW5f
d2l0aF93ZWJzZXJ2ZXIoKQotICAgIGRlZiB0ZXN0X25vX3J1bnMoc2VsZiwgY2xpZW50LCAqKmt3
YXJncyk6Ci0gICAgICAgIHJlc3BvbnNlID0gY2xpZW50LmdldChmJ3tzZWxmLlVSTH0vYXBpL2Zh
aWx1cmVzL2xheW91dC10ZXN0cz9wbGF0Zm9ybT1pT1Mmc3R5bGU9RGVidWcmcmVjZW50PUZhbHNl
JmJlZm9yZV91dWlkPTAnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLnN0YXR1
c19jb2RlLCA0MDQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2UuanNvbigpLCBk
aWN0KAotICAgICAgICAgICAgc3RhdHVzPSdlcnJvcicsCi0gICAgICAgICAgICBlcnJvcj0nTm90
IEZvdW5kJywKLSAgICAgICAgICAgIGRlc2NyaXB0aW9uPSdObyB0ZXN0IHJ1bnMgZm91bmQgd2l0
aCB0aGUgc3BlY2lmaWVkIGNyaXRlcmlhJywKLSAgICAgICAgKSkKSW5kZXg6IFRvb2xzL3Jlc3Vs
dHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvc3VpdGVfY29udHJvbGxlci5weQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9jb250cm9sbGVyL3N1aXRlX2Nv
bnRyb2xsZXIucHkJKHJldmlzaW9uIDI2NTUzMSkKKysrIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3Vs
dHNkYnB5L2NvbnRyb2xsZXIvc3VpdGVfY29udHJvbGxlci5weQkobm9uZXhpc3RlbnQpCkBAIC0x
LDEwNiArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0jIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECi0jIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TAotIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUgotIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotIyBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLAotIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1mcm9t
IGZsYXNrIGltcG9ydCBhYm9ydCwganNvbmlmeSwgcmVxdWVzdAotZnJvbSByZXN1bHRzZGJweS5j
b250cm9sbGVyLmNvbW1pdF9jb250cm9sbGVyIGltcG9ydCB1dWlkX3JhbmdlX2Zvcl9xdWVyeSwg
SGFzQ29tbWl0Q29udGV4dAotZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVyLmNvbmZpZ3VyYXRp
b24gaW1wb3J0IENvbmZpZ3VyYXRpb24KLWZyb20gcmVzdWx0c2RicHkuY29udHJvbGxlci5jb25m
aWd1cmF0aW9uX2NvbnRyb2xsZXIgaW1wb3J0IGNvbmZpZ3VyYXRpb25fZm9yX3F1ZXJ5Ci1mcm9t
IHJlc3VsdHNkYnB5LmZsYXNrX3N1cHBvcnQudXRpbCBpbXBvcnQgQXNzZXJ0UmVxdWVzdCwgcXVl
cnlfYXNfa3dhcmdzLCBsaW1pdF9mb3JfcXVlcnksIGJvb2xlYW5fcXVlcnkKLQotCi1kZWYgdGlt
ZV9yYW5nZV9mb3JfcXVlcnkoKToKLSAgICBkZWYgZGVjb3JhdG9yKG1ldGhvZCk6Ci0gICAgICAg
IGRlZiByZWFsX21ldGhvZChzZWxmPU5vbmUsIG1ldGhvZD1tZXRob2QsICoqa3dhcmdzKToKLSAg
ICAgICAgICAgIGZvciBxdWVyeV9rZXksIGt3YXJnX2tleSBpbiBbKCdhZnRlcl90aW1lJywgJ2Jl
Z2luX3F1ZXJ5X3RpbWUnKSwgKCdiZWZvcmVfdGltZScsICdlbmRfcXVlcnlfdGltZScpXToKLSAg
ICAgICAgICAgICAgICBpZiBub3Qga3dhcmdzLmdldChxdWVyeV9rZXkpOgotICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAg
ICAga3dhcmdzW2t3YXJnX2tleV0gPSByb3VuZChmbG9hdChrd2FyZ3NbcXVlcnlfa2V5XVstMV0p
KQotICAgICAgICAgICAgICAgICAgICBkZWwga3dhcmdzW3F1ZXJ5X2tleV0KLSAgICAgICAgICAg
ICAgICAgICAgaWYga3dhcmdzW2t3YXJnX2tleV0gPD0gMDoKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHJhaXNlIFZhbHVlRXJyb3IoKQotICAgICAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9y
OgotICAgICAgICAgICAgICAgICAgICBhYm9ydCg0MDAsIGRlc2NyaXB0aW9uPSdTdGFydCB0aW1l
IG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyJykKLSAgICAgICAgICAgIGlmIHNlbGY6Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIG1ldGhvZChzZWxmPXNlbGYsICoqa3dhcmdzKQotICAgICAgICAg
ICAgcmV0dXJuIG1ldGhvZCgqKmt3YXJncykKLQotICAgICAgICByZWFsX21ldGhvZC5fX25hbWVf
XyA9IG1ldGhvZC5fX25hbWVfXwotICAgICAgICByZXR1cm4gcmVhbF9tZXRob2QKLSAgICByZXR1
cm4gZGVjb3JhdG9yCi0KLQotY2xhc3MgU3VpdGVDb250cm9sbGVyKEhhc0NvbW1pdENvbnRleHQp
OgotICAgIERFRkFVTFRfTElNSVQgPSAxMDAwCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgc3Vp
dGVfY29udGV4dCk6Ci0gICAgICAgIHN1cGVyKFN1aXRlQ29udHJvbGxlciwgc2VsZikuX19pbml0
X18oc3VpdGVfY29udGV4dC5jb21taXRfY29udGV4dCkKLSAgICAgICAgc2VsZi5zdWl0ZV9jb250
ZXh0ID0gc3VpdGVfY29udGV4dAotCi0gICAgQHF1ZXJ5X2FzX2t3YXJncygpCi0gICAgQHV1aWRf
cmFuZ2VfZm9yX3F1ZXJ5KCkKLSAgICBAbGltaXRfZm9yX3F1ZXJ5KERFRkFVTFRfTElNSVQpCi0g
ICAgQGNvbmZpZ3VyYXRpb25fZm9yX3F1ZXJ5KCkKLSAgICBAdGltZV9yYW5nZV9mb3JfcXVlcnko
KQotICAgIGRlZiBmaW5kX3J1bl9yZXN1bHRzKAotICAgICAgICBzZWxmLCBzdWl0ZT1Ob25lLCBj
b25maWd1cmF0aW9ucz1Ob25lLCByZWNlbnQ9Tm9uZSwKLSAgICAgICAgYnJhbmNoPU5vbmUsIGJl
Z2luPU5vbmUsIGVuZD1Ob25lLAotICAgICAgICBiZWdpbl9xdWVyeV90aW1lPU5vbmUsIGVuZF9x
dWVyeV90aW1lPU5vbmUsCi0gICAgICAgIGxpbWl0PU5vbmUsICoqa3dhcmdzCi0gICAgKToKLSAg
ICAgICAgQXNzZXJ0UmVxdWVzdC5pc190eXBlKFsnR0VUJ10pCi0gICAgICAgIEFzc2VydFJlcXVl
c3QucXVlcnlfa3dhcmdzX2VtcHR5KCoqa3dhcmdzKQotCi0gICAgICAgIHJlY2VudCA9IGJvb2xl
YW5fcXVlcnkoKnJlY2VudClbMF0gaWYgcmVjZW50IGVsc2UgVHJ1ZQotCi0gICAgICAgIHdpdGgg
c2VsZi5zdWl0ZV9jb250ZXh0OgotICAgICAgICAgICAgaWYgbm90IHN1aXRlOgotICAgICAgICAg
ICAgICAgIGFib3J0KDQwMCwgZGVzY3JpcHRpb249J05vIHN1aXRlIHNwZWNpZmllZCcpCi0KLSAg
ICAgICAgICAgIHF1ZXJ5X2RpY3QgPSBkaWN0KAotICAgICAgICAgICAgICAgIHN1aXRlPXN1aXRl
LCBjb25maWd1cmF0aW9ucz1jb25maWd1cmF0aW9ucywgcmVjZW50PXJlY2VudCwKLSAgICAgICAg
ICAgICAgICBicmFuY2g9YnJhbmNoWzBdLCBiZWdpbj1iZWdpbiwgZW5kPWVuZCwKLSAgICAgICAg
ICAgICAgICBiZWdpbl9xdWVyeV90aW1lPWJlZ2luX3F1ZXJ5X3RpbWUsIGVuZF9xdWVyeV90aW1l
PWVuZF9xdWVyeV90aW1lLAotICAgICAgICAgICAgICAgIGxpbWl0PWxpbWl0LAotICAgICAgICAg
ICAgKQotICAgICAgICAgICAgc3BlY2lmaWVkX2NvbW1pdHMgPSBzdW0oWzEgaWYgZWxlbWVudCBl
bHNlIDAgZm9yIGVsZW1lbnQgaW4gW2JlZ2luLCBlbmRdXSkKLSAgICAgICAgICAgIHNwZWNpZmll
ZF90aW1lc3RhbXBzID0gc3VtKFsxIGlmIGVsZW1lbnQgZWxzZSAwIGZvciBlbGVtZW50IGluIFti
ZWdpbl9xdWVyeV90aW1lLCBlbmRfcXVlcnlfdGltZV1dKQotCi0gICAgICAgICAgICBpZiBzcGVj
aWZpZWRfY29tbWl0cyA+PSBzcGVjaWZpZWRfdGltZXN0YW1wczoKLSAgICAgICAgICAgICAgICBm
aW5kX2Z1bmN0aW9uID0gc2VsZi5zdWl0ZV9jb250ZXh0LmZpbmRfYnlfY29tbWl0Ci0KLSAgICAg
ICAgICAgICAgICBkZWYgc29ydF9mdW5jdGlvbihyZXN1bHQpOgotICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gcmVzdWx0Wyd1dWlkJ10KLQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAg
ICAgICBmaW5kX2Z1bmN0aW9uID0gc2VsZi5zdWl0ZV9jb250ZXh0LmZpbmRfYnlfc3RhcnRfdGlt
ZQotCi0gICAgICAgICAgICAgICAgZGVmIHNvcnRfZnVuY3Rpb24ocmVzdWx0KToKLSAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHJlc3VsdFsnc3RhcnRfdGltZSddCi0KLSAgICAgICAgICAgIHJl
c3BvbnNlID0gW10KLSAgICAgICAgICAgIGZvciBjb25maWcsIHJlc3VsdHMgaW4gZmluZF9mdW5j
dGlvbigqKnF1ZXJ5X2RpY3QpLml0ZW1zKCk6Ci0gICAgICAgICAgICAgICAgcmVzcG9uc2UuYXBw
ZW5kKGRpY3QoCi0gICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb249Q29uZmlndXJhdGlv
bi5FbmNvZGVyKCkuZGVmYXVsdChjb25maWcpLAotICAgICAgICAgICAgICAgICAgICByZXN1bHRz
PXNvcnRlZChyZXN1bHRzLCBrZXk9c29ydF9mdW5jdGlvbiksCi0gICAgICAgICAgICAgICAgKSkK
LSAgICAgICAgICAgIHJldHVybiBqc29uaWZ5KHJlc3BvbnNlKQpJbmRleDogVG9vbHMvcmVzdWx0
c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci9zdWl0ZV9jb250cm9sbGVyX3VuaXR0ZXN0LnB5
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIv
c3VpdGVfY29udHJvbGxlcl91bml0dGVzdC5weQkocmV2aXNpb24gMjY1NTMxKQorKysgVG9vbHMv
cmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci9zdWl0ZV9jb250cm9sbGVyX3VuaXR0
ZXN0LnB5CShub25leGlzdGVudCkKQEAgLTEsMTA0ICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUgotIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0jIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSCi0jIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0jIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0KLWltcG9ydCB0aW1lCi0KLWZyb20gZmFrZXJlZGlzIGltcG9y
dCBGYWtlU3RyaWN0UmVkaXMKLWZyb20gcmVkaXMgaW1wb3J0IFN0cmljdFJlZGlzCi1mcm9tIHJl
c3VsdHNkYnB5LmNvbnRyb2xsZXIuYXBpX3JvdXRlcyBpbXBvcnQgQVBJUm91dGVzCi1mcm9tIHJl
c3VsdHNkYnB5LmZsYXNrX3N1cHBvcnQuZmxhc2tfdGVzdGNhc2UgaW1wb3J0IEZsYXNrVGVzdENh
c2UKLWZyb20gcmVzdWx0c2RicHkubW9kZWwuY2Fzc2FuZHJhX2NvbnRleHQgaW1wb3J0IENhc3Nh
bmRyYUNvbnRleHQKLWZyb20gcmVzdWx0c2RicHkubW9kZWwubW9ja19jYXNzYW5kcmFfY29udGV4
dCBpbXBvcnQgTW9ja0Nhc3NhbmRyYUNvbnRleHQKLWZyb20gcmVzdWx0c2RicHkubW9kZWwubW9j
a19tb2RlbF9mYWN0b3J5IGltcG9ydCBNb2NrTW9kZWxGYWN0b3J5Ci1mcm9tIHJlc3VsdHNkYnB5
Lm1vZGVsLndhaXRfZm9yX2RvY2tlcl90ZXN0X2Nhc2UgaW1wb3J0IFdhaXRGb3JEb2NrZXJUZXN0
Q2FzZQotCi0KLWNsYXNzIFN1aXRlQ29udHJvbGxlclRlc3QoRmxhc2tUZXN0Q2FzZSwgV2FpdEZv
ckRvY2tlclRlc3RDYXNlKToKLSAgICBLRVlTUEFDRSA9ICdzdWl0ZV9jb250cm9sbGVyX3Rlc3Rf
a2V5c3BhY2UnCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgc2V0dXBfd2Vic2VydmVyKGNs
cywgYXBwLCByZWRpcz1TdHJpY3RSZWRpcywgY2Fzc2FuZHJhPUNhc3NhbmRyYUNvbnRleHQpOgot
ICAgICAgICBjYXNzYW5kcmEuZHJvcF9rZXlzcGFjZShrZXlzcGFjZT1jbHMuS0VZU1BBQ0UpCi0g
ICAgICAgIG1vZGVsID0gTW9ja01vZGVsRmFjdG9yeS5jcmVhdGUocmVkaXM9cmVkaXMoKSwgY2Fz
c2FuZHJhPWNhc3NhbmRyYShrZXlzcGFjZT1jbHMuS0VZU1BBQ0UsIGNyZWF0ZV9rZXlzcGFjZT1U
cnVlKSkKLSAgICAgICAgYXBwLnJlZ2lzdGVyX2JsdWVwcmludChBUElSb3V0ZXMobW9kZWwpKQot
Ci0gICAgICAgIE1vY2tNb2RlbEZhY3RvcnkuYWRkX21vY2tfcmVzdWx0cyhtb2RlbCkKLSAgICAg
ICAgTW9ja01vZGVsRmFjdG9yeS5wcm9jZXNzX3Jlc3VsdHMobW9kZWwpCi0KLSAgICBAV2FpdEZv
ckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJl
ZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKLSAgICBARmxhc2tUZXN0
Q2FzZS5ydW5fd2l0aF93ZWJzZXJ2ZXIoKQotICAgIGRlZiB0ZXN0X3Jlc3VsdHNfbm9fc3VpdGUo
c2VsZiwgY2xpZW50LCAqKmt3YXJncyk6Ci0gICAgICAgIHJlc3BvbnNlID0gY2xpZW50LmdldChz
ZWxmLlVSTCArICcvYXBpL3Jlc3VsdHMnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3Bv
bnNlLnN0YXR1c19jb2RlLCA0MDQpCi0KLSAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tf
aWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1N
b2NrQ2Fzc2FuZHJhQ29udGV4dCkKLSAgICBARmxhc2tUZXN0Q2FzZS5ydW5fd2l0aF93ZWJzZXJ2
ZXIoKQotICAgIGRlZiB0ZXN0X3Jlc3VsdHMoc2VsZiwgY2xpZW50LCAqKmt3YXJncyk6Ci0gICAg
ICAgIHJlc3BvbnNlID0gY2xpZW50LmdldChzZWxmLlVSTCArICcvYXBpL3Jlc3VsdHMvbGF5b3V0
LXRlc3RzP3BsYXRmb3JtPWlPUyZzdHlsZT1EZWJ1ZycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChs
ZW4ocmVzcG9uc2UuanNvbigpKSwgMikKLSAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMik6Ci0gICAg
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZXNwb25zZS5qc29uKClbaV1bJ3Jlc3VsdHMn
XSksIDUpCi0KLSAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1v
Y2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29u
dGV4dCkKLSAgICBARmxhc2tUZXN0Q2FzZS5ydW5fd2l0aF93ZWJzZXJ2ZXIoKQotICAgIGRlZiB0
ZXN0X3Jlc3VsdHNfYnlfc2RrKHNlbGYsIGNsaWVudCwgKiprd2FyZ3MpOgotICAgICAgICByZXNw
b25zZSA9IGNsaWVudC5nZXQoc2VsZi5VUkwgKyAnL2FwaS9yZXN1bHRzL2xheW91dC10ZXN0cz9w
bGF0Zm9ybT1pT1Mmc3R5bGU9RGVidWcmaXNfc2ltdWxhdG9yPVRydWUmcmVjZW50PUZhbHNlJykK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZXNwb25zZS5qc29uKCkpLCAyKQotCi0gICAgICAg
IHJlc3BvbnNlID0gY2xpZW50LmdldChzZWxmLlVSTCArICcvYXBpL3Jlc3VsdHMvbGF5b3V0LXRl
c3RzP3BsYXRmb3JtPWlPUyZzdHlsZT1EZWJ1ZyZpc19zaW11bGF0b3I9VHJ1ZSZyZWNlbnQ9RmFs
c2Umc2RrPTE1QTQzMicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2Uuc3RhdHVz
X2NvZGUsIDIwMCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzcG9uc2UuanNvbigp
KSwgMSkKLQotICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9j
a19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250
ZXh0KQotICAgIEBGbGFza1Rlc3RDYXNlLnJ1bl93aXRoX3dlYnNlcnZlcigpCi0gICAgZGVmIHRl
c3RfcmVzdWx0c19ieV9jb21taXQoc2VsZiwgY2xpZW50LCAqKmt3YXJncyk6Ci0gICAgICAgIHJl
c3BvbnNlID0gY2xpZW50LmdldChzZWxmLlVSTCArICcvYXBpL3Jlc3VsdHMvbGF5b3V0LXRlc3Rz
P3BsYXRmb3JtPWlPUyZzdHlsZT1EZWJ1ZyZhZnRlcl9pZD0zMzY2MTBhODQmYmVmb3JlX2lkPTIz
NjU0MicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIw
MCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzcG9uc2UuanNvbigpKSwgMikKLSAg
ICAgICAgZm9yIGkgaW4gcmFuZ2UoMik6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxl
bihyZXNwb25zZS5qc29uKClbaV1bJ3Jlc3VsdHMnXSksIDMpCi0gICAgICAgICAgICBsYXN0X3Vk
aWQgPSAwCi0gICAgICAgICAgICBmb3IgcmVzdWx0IGluIHJlc3BvbnNlLmpzb24oKVtpXVsncmVz
dWx0cyddOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKHJlc3VsdFsn
dXVpZCddLCBsYXN0X3VkaWQpCi0gICAgICAgICAgICAgICAgbGFzdF91ZGlkID0gcmVzdWx0Wyd1
dWlkJ10KLQotICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9j
a19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250
ZXh0KQotICAgIEBGbGFza1Rlc3RDYXNlLnJ1bl93aXRoX3dlYnNlcnZlcigpCi0gICAgZGVmIHRl
c3RfcmVzdWx0c19ieV90aW1lKHNlbGYsIGNsaWVudCwgKiprd2FyZ3MpOgotICAgICAgICByZXNw
b25zZSA9IGNsaWVudC5nZXQoZid7c2VsZi5VUkx9L2FwaS9yZXN1bHRzL2xheW91dC10ZXN0cz9w
bGF0Zm9ybT1pT1Mmc3R5bGU9RGVidWcmcmVjZW50PUZhbHNlJmFmdGVyX3RpbWU9e3RpbWUudGlt
ZSgpIC0gNjAgKiA2MH0nKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLnN0YXR1
c19jb2RlLCAyMDApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlc3BvbnNlLmpzb24o
KSksIDIpCi0gICAgICAgIGZvciBpIGluIHJhbmdlKDIpOgotICAgICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChsZW4ocmVzcG9uc2UuanNvbigpW2ldWydyZXN1bHRzJ10pLCA1KQotICAgICAgICAg
ICAgbGFzdF9zdGFydF90aW1lID0gMAotICAgICAgICAgICAgZm9yIHJlc3VsdCBpbiByZXNwb25z
ZS5qc29uKClbaV1bJ3Jlc3VsdHMnXToKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0
ZXJFcXVhbChyZXN1bHRbJ3N0YXJ0X3RpbWUnXSwgbGFzdF9zdGFydF90aW1lKQotICAgICAgICAg
ICAgICAgIGxhc3Rfc3RhcnRfdGltZSA9IHJlc3VsdFsnc3RhcnRfdGltZSddCi0KLSAgICBAV2Fp
dEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmlj
dFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKLSAgICBARmxhc2tU
ZXN0Q2FzZS5ydW5fd2l0aF93ZWJzZXJ2ZXIoKQotICAgIGRlZiB0ZXN0X25vX3Jlc3VsdHNfYnlf
dGltZShzZWxmLCBjbGllbnQsICoqa3dhcmdzKToKLSAgICAgICAgcmVzcG9uc2UgPSBjbGllbnQu
Z2V0KHNlbGYuVVJMICsgZicvYXBpL3Jlc3VsdHMvbGF5b3V0LXRlc3RzP3BsYXRmb3JtPWlPUyZz
dHlsZT1EZWJ1ZyZyZWNlbnQ9RmFsc2UmYWZ0ZXJfdGltZT17dGltZS50aW1lKCkgKyAxfScpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzcG9uc2UuanNvbigpKSwgMCkKSW5kZXg6IFRvb2xz
L3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvdGVzdF9jb250cm9sbGVyLnB5Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvdGVz
dF9jb250cm9sbGVyLnB5CShyZXZpc2lvbiAyNjU1MzEpCisrKyBUb29scy9yZXN1bHRzZGJweS9y
ZXN1bHRzZGJweS9jb250cm9sbGVyL3Rlc3RfY29udHJvbGxlci5weQkobm9uZXhpc3RlbnQpCkBA
IC0xLDEwNCArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMg
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
IyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECi0jIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECi0jIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSMgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTAotIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotIyBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLAotIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1m
cm9tIGZsYXNrIGltcG9ydCBhYm9ydCwganNvbmlmeQotZnJvbSByZXN1bHRzZGJweS5jb250cm9s
bGVyLmNvbW1pdF9jb250cm9sbGVyIGltcG9ydCB1dWlkX3JhbmdlX2Zvcl9xdWVyeSwgSGFzQ29t
bWl0Q29udGV4dAotZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVyLmNvbmZpZ3VyYXRpb24gaW1w
b3J0IENvbmZpZ3VyYXRpb24KLWZyb20gcmVzdWx0c2RicHkuY29udHJvbGxlci5jb25maWd1cmF0
aW9uX2NvbnRyb2xsZXIgaW1wb3J0IGNvbmZpZ3VyYXRpb25fZm9yX3F1ZXJ5Ci1mcm9tIHJlc3Vs
dHNkYnB5LmNvbnRyb2xsZXIuc3VpdGVfY29udHJvbGxlciBpbXBvcnQgdGltZV9yYW5nZV9mb3Jf
cXVlcnkKLWZyb20gcmVzdWx0c2RicHkuZmxhc2tfc3VwcG9ydC51dGlsIGltcG9ydCBBc3NlcnRS
ZXF1ZXN0LCBxdWVyeV9hc19rd2FyZ3MsIGxpbWl0X2Zvcl9xdWVyeSwgYm9vbGVhbl9xdWVyeQot
Ci0KLWNsYXNzIFRlc3RDb250cm9sbGVyKEhhc0NvbW1pdENvbnRleHQpOgotICAgIERFRkFVTFRf
TElNSVQgPSAxMDAwCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgdGVzdF9jb250ZXh0KToKLSAg
ICAgICAgc3VwZXIoVGVzdENvbnRyb2xsZXIsIHNlbGYpLl9faW5pdF9fKHRlc3RfY29udGV4dC5j
b21taXRfY29udGV4dCkKLSAgICAgICAgc2VsZi50ZXN0X2NvbnRleHQgPSB0ZXN0X2NvbnRleHQK
LQotICAgIEBxdWVyeV9hc19rd2FyZ3MoKQotICAgIEBsaW1pdF9mb3JfcXVlcnkoREVGQVVMVF9M
SU1JVCkKLSAgICBkZWYgbGlzdF90ZXN0cyhzZWxmLCBzdWl0ZT1Ob25lLCB0ZXN0PU5vbmUsIGxp
bWl0PU5vbmUsICoqa3dhcmdzKToKLSAgICAgICAgQXNzZXJ0UmVxdWVzdC5pc190eXBlKFsnR0VU
J10pCi0gICAgICAgIEFzc2VydFJlcXVlc3QucXVlcnlfa3dhcmdzX2VtcHR5KCoqa3dhcmdzKQot
Ci0gICAgICAgIGlmIG5vdCBzdWl0ZToKLSAgICAgICAgICAgIGFib3J0KDQwMCwgZGVzY3JpcHRp
b249J05vIHN1aXRlIHNwZWNpZmllZCcpCi0KLSAgICAgICAgd2l0aCBzZWxmLnRlc3RfY29udGV4
dDoKLSAgICAgICAgICAgIG1hdGNoaW5nX3Rlc3RzID0gc2V0KCkKLSAgICAgICAgICAgIGZvciB0
IGluIHRlc3Qgb3IgW05vbmVdOgotICAgICAgICAgICAgICAgIG1hdGNoaW5nX3Rlc3RzLnVwZGF0
ZShzZWxmLnRlc3RfY29udGV4dC5uYW1lcyhzdWl0ZT1zdWl0ZSwgdGVzdD10LCBsaW1pdD1saW1p
dCAtIGxlbihtYXRjaGluZ190ZXN0cykpKQotICAgICAgICAgICAgcmV0dXJuIGpzb25pZnkoc29y
dGVkKG1hdGNoaW5nX3Rlc3RzKSkKLQotICAgIEBxdWVyeV9hc19rd2FyZ3MoKQotICAgIEB1dWlk
X3JhbmdlX2Zvcl9xdWVyeSgpCi0gICAgQGxpbWl0X2Zvcl9xdWVyeShERUZBVUxUX0xJTUlUKQot
ICAgIEBjb25maWd1cmF0aW9uX2Zvcl9xdWVyeSgpCi0gICAgQHRpbWVfcmFuZ2VfZm9yX3F1ZXJ5
KCkKLSAgICBkZWYgZmluZF90ZXN0X3Jlc3VsdCgKLSAgICAgICAgc2VsZiwgc3VpdGU9Tm9uZSwg
dGVzdD1Ob25lLAotICAgICAgICBjb25maWd1cmF0aW9ucz1Ob25lLCByZWNlbnQ9Tm9uZSwKLSAg
ICAgICAgYnJhbmNoPU5vbmUsIGJlZ2luPU5vbmUsIGVuZD1Ob25lLAotICAgICAgICBiZWdpbl9x
dWVyeV90aW1lPU5vbmUsIGVuZF9xdWVyeV90aW1lPU5vbmUsCi0gICAgICAgIGxpbWl0PU5vbmUs
ICoqa3dhcmdzCi0gICAgKToKLSAgICAgICAgQXNzZXJ0UmVxdWVzdC5pc190eXBlKFsnR0VUJ10p
Ci0gICAgICAgIEFzc2VydFJlcXVlc3QucXVlcnlfa3dhcmdzX2VtcHR5KCoqa3dhcmdzKQotCi0g
ICAgICAgIHJlY2VudCA9IGJvb2xlYW5fcXVlcnkoKnJlY2VudClbMF0gaWYgcmVjZW50IGVsc2Ug
VHJ1ZQotCi0gICAgICAgIGlmIG5vdCBzdWl0ZToKLSAgICAgICAgICAgIGFib3J0KDQwMCwgZGVz
Y3JpcHRpb249J05vIHN1aXRlIHNwZWNpZmllZCcpCi0gICAgICAgIGlmIG5vdCB0ZXN0OgotICAg
ICAgICAgICAgYWJvcnQoNDAwLCBkZXNjcmlwdGlvbj0nTm8gdGVzdCBzcGVjaWZpZWQnKQotCi0g
ICAgICAgIHdpdGggc2VsZi50ZXN0X2NvbnRleHQ6Ci0gICAgICAgICAgICBxdWVyeV9kaWN0ID0g
ZGljdCgKLSAgICAgICAgICAgICAgICBzdWl0ZT1zdWl0ZSwgdGVzdD10ZXN0LAotICAgICAgICAg
ICAgICAgIGNvbmZpZ3VyYXRpb25zPWNvbmZpZ3VyYXRpb25zLCByZWNlbnQ9cmVjZW50LAotICAg
ICAgICAgICAgICAgIGJyYW5jaD1icmFuY2hbMF0sIGJlZ2luPWJlZ2luLCBlbmQ9ZW5kLAotICAg
ICAgICAgICAgICAgIGJlZ2luX3F1ZXJ5X3RpbWU9YmVnaW5fcXVlcnlfdGltZSwgZW5kX3F1ZXJ5
X3RpbWU9ZW5kX3F1ZXJ5X3RpbWUsCi0gICAgICAgICAgICAgICAgbGltaXQ9bGltaXQsCi0gICAg
ICAgICAgICApCi0gICAgICAgICAgICBzcGVjaWZpZWRfY29tbWl0cyA9IHN1bShbMSBpZiBlbGVt
ZW50IGVsc2UgMCBmb3IgZWxlbWVudCBpbiBbYmVnaW4sIGVuZF1dKQotICAgICAgICAgICAgc3Bl
Y2lmaWVkX3RpbWVzdGFtcHMgPSBzdW0oWzEgaWYgZWxlbWVudCBlbHNlIDAgZm9yIGVsZW1lbnQg
aW4gW2JlZ2luX3F1ZXJ5X3RpbWUsIGVuZF9xdWVyeV90aW1lXV0pCi0KLSAgICAgICAgICAgIGlm
IHNwZWNpZmllZF9jb21taXRzID49IHNwZWNpZmllZF90aW1lc3RhbXBzOgotICAgICAgICAgICAg
ICAgIGZpbmRfZnVuY3Rpb24gPSBzZWxmLnRlc3RfY29udGV4dC5maW5kX2J5X2NvbW1pdAotCi0g
ICAgICAgICAgICAgICAgZGVmIHNvcnRfZnVuY3Rpb24ocmVzdWx0KToKLSAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHJlc3VsdFsndXVpZCddCi0KLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAg
ICAgICAgICAgZmluZF9mdW5jdGlvbiA9IHNlbGYudGVzdF9jb250ZXh0LmZpbmRfYnlfc3RhcnRf
dGltZQotCi0gICAgICAgICAgICAgICAgZGVmIHNvcnRfZnVuY3Rpb24ocmVzdWx0KToKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdFsnc3RhcnRfdGltZSddCi0KLSAgICAgICAgICAg
IHJlc3BvbnNlID0gW10KLSAgICAgICAgICAgIGZvciBjb25maWcsIHJlc3VsdHMgaW4gZmluZF9m
dW5jdGlvbigqKnF1ZXJ5X2RpY3QpLml0ZW1zKCk6Ci0gICAgICAgICAgICAgICAgcmVzcG9uc2Uu
YXBwZW5kKGRpY3QoCi0gICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb249Q29uZmlndXJh
dGlvbi5FbmNvZGVyKCkuZGVmYXVsdChjb25maWcpLAotICAgICAgICAgICAgICAgICAgICByZXN1
bHRzPXNvcnRlZChyZXN1bHRzLCBrZXk9c29ydF9mdW5jdGlvbiksCi0gICAgICAgICAgICAgICAg
KSkKLSAgICAgICAgICAgIHJldHVybiBqc29uaWZ5KHJlc3BvbnNlKQpJbmRleDogVG9vbHMvcmVz
dWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci90ZXN0X2NvbnRyb2xsZXJfdW5pdHRlc3Qu
cHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxl
ci90ZXN0X2NvbnRyb2xsZXJfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI2NTUzMSkKKysrIFRvb2xz
L3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvdGVzdF9jb250cm9sbGVyX3VuaXR0
ZXN0LnB5CShub25leGlzdGVudCkKQEAgLTEsMTM3ICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUgotIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0jIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSCi0jIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0jIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0KLWltcG9ydCB0aW1lCi0KLWZyb20gZmFrZXJlZGlzIGltcG9y
dCBGYWtlU3RyaWN0UmVkaXMKLWZyb20gcmVkaXMgaW1wb3J0IFN0cmljdFJlZGlzCi1mcm9tIHJl
c3VsdHNkYnB5LmNvbnRyb2xsZXIuYXBpX3JvdXRlcyBpbXBvcnQgQVBJUm91dGVzCi1mcm9tIHJl
c3VsdHNkYnB5LmZsYXNrX3N1cHBvcnQuZmxhc2tfdGVzdGNhc2UgaW1wb3J0IEZsYXNrVGVzdENh
c2UKLWZyb20gcmVzdWx0c2RicHkubW9kZWwuY2Fzc2FuZHJhX2NvbnRleHQgaW1wb3J0IENhc3Nh
bmRyYUNvbnRleHQKLWZyb20gcmVzdWx0c2RicHkubW9kZWwubW9ja19jYXNzYW5kcmFfY29udGV4
dCBpbXBvcnQgTW9ja0Nhc3NhbmRyYUNvbnRleHQKLWZyb20gcmVzdWx0c2RicHkubW9kZWwubW9j
a19tb2RlbF9mYWN0b3J5IGltcG9ydCBNb2NrTW9kZWxGYWN0b3J5Ci1mcm9tIHJlc3VsdHNkYnB5
Lm1vZGVsLnRlc3RfY29udGV4dCBpbXBvcnQgRXhwZWN0YXRpb25zCi1mcm9tIHJlc3VsdHNkYnB5
Lm1vZGVsLndhaXRfZm9yX2RvY2tlcl90ZXN0X2Nhc2UgaW1wb3J0IFdhaXRGb3JEb2NrZXJUZXN0
Q2FzZQotCi0KLWNsYXNzIFRlc3RDb250cm9sbGVyVGVzdChGbGFza1Rlc3RDYXNlLCBXYWl0Rm9y
RG9ja2VyVGVzdENhc2UpOgotICAgIEtFWVNQQUNFID0gJ3Rlc3RfY29udHJvbGxlcl90ZXN0X2tl
eXNwYWNlJwotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHNldHVwX3dlYnNlcnZlcihjbHMs
IGFwcCwgcmVkaXM9U3RyaWN0UmVkaXMsIGNhc3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0KToKLSAg
ICAgICAgY2Fzc2FuZHJhLmRyb3Bfa2V5c3BhY2Uoa2V5c3BhY2U9Y2xzLktFWVNQQUNFKQotICAg
ICAgICBtb2RlbCA9IE1vY2tNb2RlbEZhY3RvcnkuY3JlYXRlKHJlZGlzPXJlZGlzKCksIGNhc3Nh
bmRyYT1jYXNzYW5kcmEoa2V5c3BhY2U9Y2xzLktFWVNQQUNFLCBjcmVhdGVfa2V5c3BhY2U9VHJ1
ZSkpCi0gICAgICAgIGFwcC5yZWdpc3Rlcl9ibHVlcHJpbnQoQVBJUm91dGVzKG1vZGVsKSkKLQot
ICAgICAgICBNb2NrTW9kZWxGYWN0b3J5LmFkZF9tb2NrX3Jlc3VsdHMobW9kZWwpCi0gICAgICAg
IE1vY2tNb2RlbEZhY3RvcnkucHJvY2Vzc19yZXN1bHRzKG1vZGVsKQotCi0gICAgQFdhaXRGb3JE
b2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRp
cywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCi0gICAgQEZsYXNrVGVzdENh
c2UucnVuX3dpdGhfd2Vic2VydmVyKCkKLSAgICBkZWYgdGVzdF9saXN0X2FsbChzZWxmLCBjbGll
bnQsICoqa3dhcmdzKToKLSAgICAgICAgcmVzcG9uc2UgPSBjbGllbnQuZ2V0KHNlbGYuVVJMICsg
Jy9hcGkvbGF5b3V0LXRlc3RzL3Rlc3RzJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNw
b25zZS5zdGF0dXNfY29kZSwgMjAwKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNl
Lmpzb24oKSwgWwotICAgICAgICAgICAgJ2Zhc3QvZW5jb2RpbmcvY3NzLWNhY2hlZC1ib20uaHRt
bCcsCi0gICAgICAgICAgICAnZmFzdC9lbmNvZGluZy9jc3MtY2hhcnNldC1kZWZhdWx0LnhodG1s
JywKLSAgICAgICAgICAgICdmYXN0L2VuY29kaW5nL2Nzcy1jaGFyc2V0Lmh0bWwnLAotICAgICAg
ICAgICAgJ2Zhc3QvZW5jb2RpbmcvY3NzLWxpbmstY2hhcnNldC5odG1sJywKLSAgICAgICAgXSkK
LQotICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRp
cz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQot
ICAgIEBGbGFza1Rlc3RDYXNlLnJ1bl93aXRoX3dlYnNlcnZlcigpCi0gICAgZGVmIHRlc3RfbGlz
dF9hbGwoc2VsZiwgY2xpZW50LCAqKmt3YXJncyk6Ci0gICAgICAgIHJlc3BvbnNlID0gY2xpZW50
LmdldChzZWxmLlVSTCArICcvYXBpL2xheW91dC10ZXN0cy90ZXN0cz9saW1pdD0yJykKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLmpzb24oKSwgWwotICAgICAgICAgICAgJ2Zhc3QvZW5j
b2RpbmcvY3NzLWNhY2hlZC1ib20uaHRtbCcsCi0gICAgICAgICAgICAnZmFzdC9lbmNvZGluZy9j
c3MtY2hhcnNldC1kZWZhdWx0LnhodG1sJywKLSAgICAgICAgXSkKLQotICAgIEBXYWl0Rm9yRG9j
a2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMs
IG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQotICAgIEBGbGFza1Rlc3RDYXNl
LnJ1bl93aXRoX3dlYnNlcnZlcigpCi0gICAgZGVmIHRlc3RfbGlzdF9wYXJ0aWFsKHNlbGYsIGNs
aWVudCwgKiprd2FyZ3MpOgotICAgICAgICByZXNwb25zZSA9IGNsaWVudC5nZXQoc2VsZi5VUkwg
KyAnL2FwaS9sYXlvdXQtdGVzdHMvdGVzdHM/dGVzdD1mYXN0L2VuY29kaW5nL2Nzcy1jaGFyc2V0
JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLmpzb24oKSwgWwotICAgICAgICAgICAg
J2Zhc3QvZW5jb2RpbmcvY3NzLWNoYXJzZXQtZGVmYXVsdC54aHRtbCcsCi0gICAgICAgICAgICAn
ZmFzdC9lbmNvZGluZy9jc3MtY2hhcnNldC5odG1sJywKLSAgICAgICAgXSkKLQotICAgIEBXYWl0
Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0
UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQotICAgIEBGbGFza1Rl
c3RDYXNlLnJ1bl93aXRoX3dlYnNlcnZlcigpCi0gICAgZGVmIHRlc3RfcmVzdWx0cyhzZWxmLCBj
bGllbnQsICoqa3dhcmdzKToKLSAgICAgICAgcmVzcG9uc2UgPSBjbGllbnQuZ2V0KHNlbGYuVVJM
ICsgJy9hcGkvcmVzdWx0cy9sYXlvdXQtdGVzdHMvZmFzdC9lbmNvZGluZy9jc3MtY2hhcnNldC5o
dG1sP3BsYXRmb3JtPWlPUyZzdHlsZT1EZWJ1ZycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
cmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4o
cmVzcG9uc2UuanNvbigpKSwgMikKLQotICAgICAgICBmb3IgaSBpbiByYW5nZSgyKToKLSAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlc3BvbnNlLmpzb24oKVtpXVsncmVzdWx0cydd
KSwgNSkKLSAgICAgICAgICAgIGZvciByZXN1bHQgaW4gcmVzcG9uc2UuanNvbigpW2ldWydyZXN1
bHRzJ106Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHRbJ2FjdHVhbCdd
LCBFeHBlY3RhdGlvbnMuUEFTUykKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJl
c3VsdFsnZXhwZWN0ZWQnXSwgRXhwZWN0YXRpb25zLlBBU1MpCi0gICAgICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChyZXN1bHRbJ3RpbWUnXSwgMS4yKQotICAgICAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwocmVzdWx0Wydtb2RpZmllcnMnXSwgJycpCi0KLSAgICBAV2FpdEZvckRvY2tl
clRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBt
b2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKLSAgICBARmxhc2tUZXN0Q2FzZS5y
dW5fd2l0aF93ZWJzZXJ2ZXIoKQotICAgIGRlZiB0ZXN0X3Jlc3VsdHNfYnlfc2RrKHNlbGYsIGNs
aWVudCwgKiprd2FyZ3MpOgotICAgICAgICByZXNwb25zZSA9IGNsaWVudC5nZXQoc2VsZi5VUkwg
KyAnL2FwaS9yZXN1bHRzL2xheW91dC10ZXN0cy9mYXN0L2VuY29kaW5nL2Nzcy1jYWNoZWQtYm9t
Lmh0bWw/cGxhdGZvcm09aU9TJnN0eWxlPURlYnVnJmlzX3NpbXVsYXRvcj1UcnVlJnJlY2VudD1G
YWxzZScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIw
MCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzcG9uc2UuanNvbigpKSwgMikKLQot
ICAgICAgICByZXNwb25zZSA9IGNsaWVudC5nZXQoc2VsZi5VUkwgKyAnL2FwaS9yZXN1bHRzL2xh
eW91dC10ZXN0cy9mYXN0L2VuY29kaW5nL2Nzcy1jYWNoZWQtYm9tLmh0bWw/cGxhdGZvcm09aU9T
JnN0eWxlPURlYnVnJmlzX3NpbXVsYXRvcj1UcnVlJnJlY2VudD1GYWxzZSZzZGs9MTVBNDMyJykK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZXNwb25zZS5qc29uKCkpLCAxKQotCi0gICAgQFdh
aXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJp
Y3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCi0gICAgQEZsYXNr
VGVzdENhc2UucnVuX3dpdGhfd2Vic2VydmVyKCkKLSAgICBkZWYgdGVzdF9yZXN1bHRzX2J5X2Nv
bW1pdChzZWxmLCBjbGllbnQsICoqa3dhcmdzKToKLSAgICAgICAgcmVzcG9uc2UgPSBjbGllbnQu
Z2V0KHNlbGYuVVJMICsgJy9hcGkvcmVzdWx0cy9sYXlvdXQtdGVzdHMvZmFzdC9lbmNvZGluZy9j
c3MtbGluay1jaGFyc2V0Lmh0bWw/cGxhdGZvcm09aU9TJnN0eWxlPURlYnVnJmFmdGVyX2lkPTMz
NjYxMGE4NCZiZWZvcmVfaWQ9MjM2NTQyJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNw
b25zZS5zdGF0dXNfY29kZSwgMjAwKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZXNw
b25zZS5qc29uKCkpLCAyKQotICAgICAgICBmb3IgaSBpbiByYW5nZSgyKToKLSAgICAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlc3BvbnNlLmpzb24oKVtpXVsncmVzdWx0cyddKSwgMykK
LSAgICAgICAgICAgIGxhc3RfdWRpZCA9IDAKLSAgICAgICAgICAgIGZvciByZXN1bHQgaW4gcmVz
cG9uc2UuanNvbigpW2ldWydyZXN1bHRzJ106Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRH
cmVhdGVyRXF1YWwocmVzdWx0Wyd1dWlkJ10sIGxhc3RfdWRpZCkKLSAgICAgICAgICAgICAgICBs
YXN0X3VkaWQgPSByZXN1bHRbJ3V1aWQnXQotCi0gICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5t
b2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5k
cmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCi0gICAgQEZsYXNrVGVzdENhc2UucnVuX3dpdGhfd2Vi
c2VydmVyKCkKLSAgICBkZWYgdGVzdF9yZXN1bHRzX2J5X3RpbWUoc2VsZiwgY2xpZW50LCAqKmt3
YXJncyk6Ci0gICAgICAgIHJlc3BvbnNlID0gY2xpZW50LmdldChmJ3tzZWxmLlVSTH0vYXBpL3Jl
c3VsdHMvbGF5b3V0LXRlc3RzL2Zhc3QvZW5jb2RpbmcvY3NzLWxpbmstY2hhcnNldC5odG1sP3Bs
YXRmb3JtPWlPUyZzdHlsZT1EZWJ1ZyZyZWNlbnQ9RmFsc2UmYWZ0ZXJfdGltZT17dGltZS50aW1l
KCkgLSA2MCAqIDYwfScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2Uuc3RhdHVz
X2NvZGUsIDIwMCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzcG9uc2UuanNvbigp
KSwgMikKLSAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMik6Ci0gICAgICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGxlbihyZXNwb25zZS5qc29uKClbaV1bJ3Jlc3VsdHMnXSksIDUpCi0gICAgICAgICAg
ICBsYXN0X3N0YXJ0X3RpbWUgPSAwCi0gICAgICAgICAgICBmb3IgcmVzdWx0IGluIHJlc3BvbnNl
Lmpzb24oKVtpXVsncmVzdWx0cyddOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRl
ckVxdWFsKHJlc3VsdFsnc3RhcnRfdGltZSddLCBsYXN0X3N0YXJ0X3RpbWUpCi0gICAgICAgICAg
ICAgICAgbGFzdF9zdGFydF90aW1lID0gcmVzdWx0WydzdGFydF90aW1lJ10KLQotICAgIEBXYWl0
Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0
UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQotICAgIEBGbGFza1Rl
c3RDYXNlLnJ1bl93aXRoX3dlYnNlcnZlcigpCi0gICAgZGVmIHRlc3Rfbm9fcmVzdWx0c19ieV90
aW1lKHNlbGYsIGNsaWVudCwgKiprd2FyZ3MpOgotICAgICAgICByZXNwb25zZSA9IGNsaWVudC5n
ZXQoc2VsZi5VUkwgKyBmJy9hcGkvcmVzdWx0cy9sYXlvdXQtdGVzdHMvZmFzdC9lbmNvZGluZy9j
c3MtbGluay1jaGFyc2V0Lmh0bWw/cGxhdGZvcm09aU9TJnN0eWxlPURlYnVnJnJlY2VudD1GYWxz
ZSZhZnRlcl90aW1lPXt0aW1lLnRpbWUoKSArIDF9JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChyZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxl
bihyZXNwb25zZS5qc29uKCkpLCAwKQpJbmRleDogVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2Ri
cHkvY29udHJvbGxlci91cGxvYWRfY29udHJvbGxlci5weQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9y
ZXN1bHRzZGJweS9yZXN1bHRzZGJweS9jb250cm9sbGVyL3VwbG9hZF9jb250cm9sbGVyLnB5CShy
ZXZpc2lvbiAyNjU1MzEpCisrKyBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9jb250cm9s
bGVyL3VwbG9hZF9jb250cm9sbGVyLnB5CShub25leGlzdGVudCkKQEAgLTEsMTc5ICswLDAgQEAK
LSMgQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMK
LSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQotIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SCi0jIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0jIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0j
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLWltcG9ydCBqc29uCi1pbXBv
cnQgdGltZQotCi1mcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZWZhdWx0ZGljdAotZnJvbSBmbGFz
ayBpbXBvcnQgYWJvcnQsIGpzb25pZnksIHJlcXVlc3QKLWZyb20gcmVzdWx0c2RicHkuZmxhc2tf
c3VwcG9ydC51dGlsIGltcG9ydCBBc3NlcnRSZXF1ZXN0LCBxdWVyeV9hc19rd2FyZ3MsIGxpbWl0
X2Zvcl9xdWVyeSwgYm9vbGVhbl9xdWVyeQotZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVyLmNv
bW1pdCBpbXBvcnQgQ29tbWl0Ci1mcm9tIHJlc3VsdHNkYnB5LmNvbnRyb2xsZXIuY29tbWl0X2Nv
bnRyb2xsZXIgaW1wb3J0IHV1aWRfcmFuZ2VfZm9yX3F1ZXJ5LCBIYXNDb21taXRDb250ZXh0Ci1m
cm9tIHJlc3VsdHNkYnB5LmNvbnRyb2xsZXIuY29uZmlndXJhdGlvbiBpbXBvcnQgQ29uZmlndXJh
dGlvbgotZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVyLmNvbmZpZ3VyYXRpb25fY29udHJvbGxl
ciBpbXBvcnQgY29uZmlndXJhdGlvbl9mb3JfcXVlcnkKLQotCi1jbGFzcyBVcGxvYWRDb250cm9s
bGVyKEhhc0NvbW1pdENvbnRleHQpOgotICAgIERFRkFVTFRfTElNSVQgPSAxMDAKLQotICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBjb21taXRfY29udHJvbGxlciwgdXBsb2FkX2NvbnRleHQpOgotICAg
ICAgICBzdXBlcihVcGxvYWRDb250cm9sbGVyLCBzZWxmKS5fX2luaXRfXyhjb21taXRfY29udHJv
bGxlci5jb21taXRfY29udGV4dCkKLSAgICAgICAgc2VsZi5jb21taXRfY29udHJvbGxlciA9IGNv
bW1pdF9jb250cm9sbGVyCi0gICAgICAgIHNlbGYudXBsb2FkX2NvbnRleHQgPSB1cGxvYWRfY29u
dGV4dAotCi0gICAgQHF1ZXJ5X2FzX2t3YXJncygpCi0gICAgQHV1aWRfcmFuZ2VfZm9yX3F1ZXJ5
KCkKLSAgICBAbGltaXRfZm9yX3F1ZXJ5KERFRkFVTFRfTElNSVQpCi0gICAgQGNvbmZpZ3VyYXRp
b25fZm9yX3F1ZXJ5KCkKLSAgICBkZWYgX2ZpbmRfdXBsb2Fkc19mb3JfcXVlcnkoc2VsZiwgY29u
ZmlndXJhdGlvbnM9Tm9uZSwgc3VpdGU9Tm9uZSwgYnJhbmNoPU5vbmUsIGJlZ2luPU5vbmUsIGVu
ZD1Ob25lLCByZWNlbnQ9Tm9uZSwgbGltaXQ9Tm9uZSwgKiprd2FyZ3MpOgotICAgICAgICBBc3Nl
cnRSZXF1ZXN0LnF1ZXJ5X2t3YXJnc19lbXB0eSgqKmt3YXJncykKLSAgICAgICAgcmVjZW50ID0g
Ym9vbGVhbl9xdWVyeSgqcmVjZW50KVswXSBpZiByZWNlbnQgZWxzZSBUcnVlCi0KLSAgICAgICAg
d2l0aCBzZWxmLnVwbG9hZF9jb250ZXh0OgotICAgICAgICAgICAgaWYgbm90IHN1aXRlOgotICAg
ICAgICAgICAgICAgIHN1aXRlcyA9IHNldCgpCi0gICAgICAgICAgICAgICAgZm9yIGNvbmZpZ19z
dWl0ZXMgaW4gc2VsZi51cGxvYWRfY29udGV4dC5maW5kX3N1aXRlcyhjb25maWd1cmF0aW9ucz1j
b25maWd1cmF0aW9ucywgcmVjZW50PXJlY2VudCkudmFsdWVzKCk6Ci0gICAgICAgICAgICAgICAg
ICAgIFtzdWl0ZXMuYWRkKHN1aXRlKSBmb3Igc3VpdGUgaW4gY29uZmlnX3N1aXRlc10KLSAgICAg
ICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgc3VpdGVzID0gc2V0KHN1aXRlKQotCi0gICAg
ICAgICAgICBjdXJyZW50X3VwbG9hZHMgPSAwCi0gICAgICAgICAgICByZXN1bHQgPSBkZWZhdWx0
ZGljdChkaWN0KQotICAgICAgICAgICAgZm9yIHN1aXRlIGluIHN1aXRlczoKLSAgICAgICAgICAg
ICAgICBpZiBjdXJyZW50X3VwbG9hZHMgPj0gbGltaXQ6Ci0gICAgICAgICAgICAgICAgICAgIGJy
ZWFrCi0gICAgICAgICAgICAgICAgcmVzdWx0c19kaWN0ID0gc2VsZi51cGxvYWRfY29udGV4dC5m
aW5kX3Rlc3RfcmVzdWx0cygKLSAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbnM9Y29u
ZmlndXJhdGlvbnMsIHN1aXRlPXN1aXRlLCBicmFuY2g9YnJhbmNoWzBdLAotICAgICAgICAgICAg
ICAgICAgICBiZWdpbj1iZWdpbiwgZW5kPWVuZCwgcmVjZW50PXJlY2VudCwgbGltaXQ9KGxpbWl0
IC0gY3VycmVudF91cGxvYWRzKSwKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICAgICAg
Zm9yIGNvbmZpZywgcmVzdWx0cyBpbiByZXN1bHRzX2RpY3QuaXRlbXMoKToKLSAgICAgICAgICAg
ICAgICAgICAgY3VycmVudF91cGxvYWRzICs9IGxlbihyZXN1bHRzKQotICAgICAgICAgICAgICAg
ICAgICByZXN1bHRbY29uZmlnXVtzdWl0ZV0gPSByZXN1bHRzCi0gICAgICAgICAgICByZXR1cm4g
cmVzdWx0Ci0KLSAgICBkZWYgZG93bmxvYWQoc2VsZik6Ci0gICAgICAgIEFzc2VydFJlcXVlc3Qu
aXNfdHlwZShbJ0dFVCddKQotCi0gICAgICAgIHdpdGggc2VsZi51cGxvYWRfY29udGV4dDoKLSAg
ICAgICAgICAgIHVwbG9hZHMgPSBzZWxmLl9maW5kX3VwbG9hZHNfZm9yX3F1ZXJ5KCkKLQotICAg
ICAgICAgICAgcmVzcG9uc2UgPSBbXQotICAgICAgICAgICAgZm9yIGNvbmZpZywgc3VpdGVfcmVz
dWx0cyBpbiB1cGxvYWRzLml0ZW1zKCk6Ci0gICAgICAgICAgICAgICAgZm9yIHN1aXRlLCByZXN1
bHRzIGluIHN1aXRlX3Jlc3VsdHMuaXRlbXMoKToKLSAgICAgICAgICAgICAgICAgICAgZm9yIHJl
c3VsdCBpbiByZXN1bHRzOgotICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnLnNkayA9IHJl
c3VsdC5nZXQoJ3NkaycpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5hcHBlbmQo
ZGljdCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uPUNvbmZpZ3Vy
YXRpb24uRW5jb2RlcigpLmRlZmF1bHQoY29uZmlnKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdWl0ZT1zdWl0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21taXRzPUNv
bW1pdC5FbmNvZGVyKCkuZGVmYXVsdChyZXN1bHRbJ2NvbW1pdHMnXSksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdGltZXN0YW1wPXJlc3VsdFsndGltZXN0YW1wJ10sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdGVzdF9yZXN1bHRzPXJlc3VsdFsndGVzdF9yZXN1bHRzJ10sCi0g
ICAgICAgICAgICAgICAgICAgICAgICApKQotCi0gICAgICAgICAgICByZXR1cm4ganNvbmlmeShy
ZXNwb25zZSkKLQotICAgIGRlZiB1cGxvYWQoc2VsZik6Ci0gICAgICAgIGlmIHJlcXVlc3QubWV0
aG9kID09ICdHRVQnOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuZG93bmxvYWQoKQotCi0gICAg
ICAgIEFzc2VydFJlcXVlc3QuaXNfdHlwZShbJ1BPU1QnXSkKLSAgICAgICAgQXNzZXJ0UmVxdWVz
dC5ub19xdWVyeSgpCi0KLSAgICAgICAgd2l0aCBzZWxmLnVwbG9hZF9jb250ZXh0OgotICAgICAg
ICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGRhdGEgPSByZXF1ZXN0LmZvcm0gb3IganNvbi5s
b2FkcyhyZXF1ZXN0LmdldF9kYXRhKCkpCi0gICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoK
LSAgICAgICAgICAgICAgICBhYm9ydCg0MDAsIGRlc2NyaXB0aW9uPSdFeHBlY3RlZCB1cGxvYWRl
ZCBkYXRhIHRvIGJlIGpzb24nKQotCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAg
Y29uZmlndXJhdGlvbiA9IENvbmZpZ3VyYXRpb24uZnJvbV9qc29uKGRhdGEuZ2V0KCdjb25maWd1
cmF0aW9uJywge30pKQotICAgICAgICAgICAgZXhjZXB0IChWYWx1ZUVycm9yLCBUeXBlRXJyb3Ip
OgotICAgICAgICAgICAgICAgIGFib3J0KDQwMCwgZGVzY3JpcHRpb249J0ludmFsaWQgY29uZmln
dXJhdGlvbicpCi0KLSAgICAgICAgICAgIHN1aXRlID0gZGF0YS5nZXQoJ3N1aXRlJykKLSAgICAg
ICAgICAgIGlmIG5vdCBzdWl0ZToKLSAgICAgICAgICAgICAgICBhYm9ydCg0MDAsIGRlc2NyaXB0
aW9uPSdObyB0ZXN0IHN1aXRlIHNwZWNpZmllZCcpCi0KLSAgICAgICAgICAgIGNvbW1pdHMgPSBb
c2VsZi5jb21taXRfY29udHJvbGxlci5yZWdpc3Rlcihjb21taXQ9Y29tbWl0KSBmb3IgY29tbWl0
IGluIGRhdGEuZ2V0KCdjb21taXRzJywgW10pXQotCi0gICAgICAgICAgICB0ZXN0X3Jlc3VsdHMg
PSBkYXRhLmdldCgndGVzdF9yZXN1bHRzJywge30pCi0gICAgICAgICAgICBpZiBub3QgdGVzdF9y
ZXN1bHRzOgotICAgICAgICAgICAgICAgIGFib3J0KDQwMCwgZGVzY3JpcHRpb249J05vIHRlc3Qg
cmVzdWx0cyBzcGVjaWZpZWQnKQotCi0gICAgICAgICAgICB0aW1lc3RhbXAgPSBkYXRhLmdldCgn
dGltZXN0YW1wJywgdGltZS50aW1lKCkpCi0gICAgICAgICAgICB2ZXJzaW9uID0gZGF0YS5nZXQo
J3ZlcnNpb24nLCAwKQotCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgc2VsZi51
cGxvYWRfY29udGV4dC51cGxvYWRfdGVzdF9yZXN1bHRzKGNvbmZpZ3VyYXRpb24sIGNvbW1pdHMs
IHN1aXRlLCB0ZXN0X3Jlc3VsdHMsIHRpbWVzdGFtcCwgdmVyc2lvbj12ZXJzaW9uKQotICAgICAg
ICAgICAgZXhjZXB0IChUeXBlRXJyb3IsIFZhbHVlRXJyb3IpIGFzIGVycm9yOgotICAgICAgICAg
ICAgICAgIGFib3J0KDQwMCwgZGVzY3JpcHRpb249c3RyKGVycm9yKSkKLQotICAgICAgICAgICAg
cHJvY2Vzc2luZ19yZXN1bHRzID0gc2VsZi51cGxvYWRfY29udGV4dC5wcm9jZXNzX3Rlc3RfcmVz
dWx0cyhjb25maWd1cmF0aW9uLCBjb21taXRzLCBzdWl0ZSwgdGVzdF9yZXN1bHRzLCB0aW1lc3Rh
bXApCi0gICAgICAgICAgICByZXR1cm4ganNvbmlmeShkaWN0KHN0YXR1cz0nb2snLCBwcm9jZXNz
aW5nPXByb2Nlc3NpbmdfcmVzdWx0cykpCi0KLSAgICBkZWYgcHJvY2VzcyhzZWxmKToKLSAgICAg
ICAgQXNzZXJ0UmVxdWVzdC5pc190eXBlKFsnUE9TVCddKQotCi0gICAgICAgIHdpdGggc2VsZi51
cGxvYWRfY29udGV4dDoKLSAgICAgICAgICAgIHVwbG9hZHMgPSBzZWxmLl9maW5kX3VwbG9hZHNf
Zm9yX3F1ZXJ5KCkKLSAgICAgICAgICAgIGlmIG5vdCB1cGxvYWRzOgotICAgICAgICAgICAgICAg
IGFib3J0KDQwNCwgZGVzY3JpcHRpb249J05vIHVwbG9hZHMgbWF0Y2hpbmcgdGhlIHNwZWNpZmll
ZCBjcml0ZXJpYScpCi0KLSAgICAgICAgICAgIHJlc3BvbnNlID0gW10KLSAgICAgICAgICAgIGZv
ciBjb25maWcsIHN1aXRlX3Jlc3VsdHMgaW4gdXBsb2Fkcy5pdGVtcygpOgotICAgICAgICAgICAg
ICAgIGZvciBzdWl0ZSwgcmVzdWx0cyBpbiBzdWl0ZV9yZXN1bHRzLml0ZW1zKCk6Ci0gICAgICAg
ICAgICAgICAgICAgIGZvciByZXN1bHQgaW4gcmVzdWx0czoKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbmZpZy5zZGsgPSByZXN1bHQuZ2V0KCdzZGsnKQotICAgICAgICAgICAgICAgICAgICAg
ICAgcHJvY2Vzc2luZ19yZXN1bHRzID0gc2VsZi51cGxvYWRfY29udGV4dC5wcm9jZXNzX3Rlc3Rf
cmVzdWx0cygKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uPWNvbmZp
ZywgY29tbWl0cz1yZXN1bHRbJ2NvbW1pdHMnXSwgc3VpdGU9c3VpdGUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdGVzdF9yZXN1bHRzPXJlc3VsdFsndGVzdF9yZXN1bHRzJ10sIHRpbWVz
dGFtcD1yZXN1bHRbJ3RpbWVzdGFtcCddLAotICAgICAgICAgICAgICAgICAgICAgICAgKQotICAg
ICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UuYXBwZW5kKGRpY3QoCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbj1Db25maWd1cmF0aW9uLkVuY29kZXIoKS5kZWZh
dWx0KGNvbmZpZyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VpdGU9c3VpdGUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWl0cz1Db21taXQuRW5jb2RlcigpLmRlZmF1
bHQocmVzdWx0Wydjb21taXRzJ10pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVz
dGFtcD1yZXN1bHRbJ3RpbWVzdGFtcCddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBy
b2Nlc3Npbmc9cHJvY2Vzc2luZ19yZXN1bHRzLAotICAgICAgICAgICAgICAgICAgICAgICAgKSkK
LQotICAgICAgICAgICAgcmV0dXJuIGpzb25pZnkocmVzcG9uc2UpCi0KLSAgICBAcXVlcnlfYXNf
a3dhcmdzKCkKLSAgICBAY29uZmlndXJhdGlvbl9mb3JfcXVlcnkoKQotICAgIGRlZiBzdWl0ZXMo
c2VsZiwgY29uZmlndXJhdGlvbnM9Tm9uZSwgcmVjZW50PU5vbmUsIHN1aXRlPU5vbmUsIGJyYW5j
aD1Ob25lLCAqKmt3YXJncyk6Ci0gICAgICAgIEFzc2VydFJlcXVlc3QuaXNfdHlwZShbJ0dFVCdd
KQotICAgICAgICBBc3NlcnRSZXF1ZXN0LnF1ZXJ5X2t3YXJnc19lbXB0eSgqKmt3YXJncykKLQot
ICAgICAgICB3aXRoIHNlbGYudXBsb2FkX2NvbnRleHQ6Ci0gICAgICAgICAgICBzdWl0ZXNfYnlf
Y29uZmlnID0gc2VsZi51cGxvYWRfY29udGV4dC5maW5kX3N1aXRlcygKLSAgICAgICAgICAgICAg
ICBjb25maWd1cmF0aW9ucz1jb25maWd1cmF0aW9ucywKLSAgICAgICAgICAgICAgICByZWNlbnQ9
Ym9vbGVhbl9xdWVyeSgqcmVjZW50KVswXSBpZiByZWNlbnQgZWxzZSBUcnVlLAotICAgICAgICAg
ICAgICAgIGJyYW5jaD1icmFuY2hbMF0gaWYgYnJhbmNoIGVsc2UgTm9uZSwKLSAgICAgICAgICAg
ICkKLSAgICAgICAgICAgIHJlc3VsdCA9IFtdCi0gICAgICAgICAgICBmb3IgY29uZmlnLCBjYW5k
aWRhdGVfc3VpdGVzIGluIHN1aXRlc19ieV9jb25maWcuaXRlbXMoKToKLSAgICAgICAgICAgICAg
ICBzdWl0ZXNfZm9yX2NvbmZpZyA9IFtzIGZvciBzIGluIGNhbmRpZGF0ZV9zdWl0ZXMgaWYgbm90
IHN1aXRlIG9yIHMgaW4gc3VpdGVdCi0gICAgICAgICAgICAgICAgaWYgc3VpdGVzX2Zvcl9jb25m
aWc6Ci0gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoW2NvbmZpZywgc3VpdGVzX2Zv
cl9jb25maWddKQotICAgICAgICAgICAgaWYgbm90IHJlc3VsdDoKLSAgICAgICAgICAgICAgICBh
Ym9ydCg0MDQsIGRlc2NyaXB0aW9uPSdObyBzdWl0ZXMgbWF0Y2hpbmcgdGhlIHNwZWNpZmllZCBj
cml0ZXJpYScpCi0gICAgICAgICAgICByZXR1cm4ganNvbmlmeShDb25maWd1cmF0aW9uLkVuY29k
ZXIoKS5kZWZhdWx0KHJlc3VsdCkpCkluZGV4OiBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJw
eS9jb250cm9sbGVyL3VwbG9hZF9jb250cm9sbGVyX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvdXBsb2FkX2NvbnRyb2xs
ZXJfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI2NTUzMSkKKysrIFRvb2xzL3Jlc3VsdHNkYnB5L3Jl
c3VsdHNkYnB5L2NvbnRyb2xsZXIvdXBsb2FkX2NvbnRyb2xsZXJfdW5pdHRlc3QucHkJKG5vbmV4
aXN0ZW50KQpAQCAtMSwyMDYgKzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFy
ZSBtZXQ6Ci0jIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAotIyBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0j
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSMgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIK
LSMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLQotaW1wb3J0IGpzb24KLWltcG9ydCB0aW1lCi1mcm9tIGZha2VyZWRpcyBpbXBvcnQg
RmFrZVN0cmljdFJlZGlzCi1mcm9tIHJlZGlzIGltcG9ydCBTdHJpY3RSZWRpcwotZnJvbSByZXN1
bHRzZGJweS5jb250cm9sbGVyLmFwaV9yb3V0ZXMgaW1wb3J0IEFQSVJvdXRlcwotZnJvbSByZXN1
bHRzZGJweS5jb250cm9sbGVyLmNvbW1pdCBpbXBvcnQgQ29tbWl0Ci1mcm9tIHJlc3VsdHNkYnB5
LmNvbnRyb2xsZXIuY29uZmlndXJhdGlvbiBpbXBvcnQgQ29uZmlndXJhdGlvbgotZnJvbSByZXN1
bHRzZGJweS5mbGFza19zdXBwb3J0LmZsYXNrX3Rlc3RjYXNlIGltcG9ydCBGbGFza1Rlc3RDYXNl
Ci1mcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLmNhc3NhbmRyYV9jb250ZXh0IGltcG9ydCBDYXNzYW5k
cmFDb250ZXh0Ci1mcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLm1vY2tfY2Fzc2FuZHJhX2NvbnRleHQg
aW1wb3J0IE1vY2tDYXNzYW5kcmFDb250ZXh0Ci1mcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLm1vY2tf
bW9kZWxfZmFjdG9yeSBpbXBvcnQgTW9ja01vZGVsRmFjdG9yeQotZnJvbSByZXN1bHRzZGJweS5t
b2RlbC5tb2NrX3JlcG9zaXRvcnkgaW1wb3J0IE1vY2tTdGFzaFJlcG9zaXRvcnksIE1vY2tTVk5S
ZXBvc2l0b3J5Ci1mcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLndhaXRfZm9yX2RvY2tlcl90ZXN0X2Nh
c2UgaW1wb3J0IFdhaXRGb3JEb2NrZXJUZXN0Q2FzZQotCi0KLWNsYXNzIFVwbG9hZENvbnRyb2xs
ZXJQb3N0VGVzdChGbGFza1Rlc3RDYXNlLCBXYWl0Rm9yRG9ja2VyVGVzdENhc2UpOgotICAgIEtF
WVNQQUNFID0gJ3VwbG9hZF9jb250cm9sbGVyX3Rlc3Rfa2V5c3BhY2UnCi0KLSAgICBAY2xhc3Nt
ZXRob2QKLSAgICBkZWYgc2V0dXBfd2Vic2VydmVyKGNscywgYXBwLCByZWRpcz1TdHJpY3RSZWRp
cywgY2Fzc2FuZHJhPUNhc3NhbmRyYUNvbnRleHQpOgotICAgICAgICBjYXNzYW5kcmEuZHJvcF9r
ZXlzcGFjZShrZXlzcGFjZT1jbHMuS0VZU1BBQ0UpCi0gICAgICAgIG1vZGVsID0gTW9ja01vZGVs
RmFjdG9yeS5jcmVhdGUocmVkaXM9cmVkaXMoKSwgY2Fzc2FuZHJhPWNhc3NhbmRyYShrZXlzcGFj
ZT1jbHMuS0VZU1BBQ0UsIGNyZWF0ZV9rZXlzcGFjZT1UcnVlKSkKLSAgICAgICAgbW9kZWwudXBs
b2FkX2NvbnRleHQucmVnaXN0ZXJfdXBsb2FkX2NhbGxiYWNrKCdweXRob24tdGVzdHMnLCBsYW1i
ZGEgKiprd2FyZ3M6IGRpY3Qoc3RhdHVzPSdvaycpKQotICAgICAgICBhcHAucmVnaXN0ZXJfYmx1
ZXByaW50KEFQSVJvdXRlcyhtb2RlbCkpCi0KLSAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1v
Y2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRy
YT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKLSAgICBARmxhc2tUZXN0Q2FzZS5ydW5fd2l0aF93ZWJz
ZXJ2ZXIoKQotICAgIGRlZiB0ZXN0X3VwbG9hZChzZWxmLCBjbGllbnQsICoqa3dhcmdzKToKLSAg
ICAgICAgdXBsb2FkX2RpY3QgPSBkaWN0KAotICAgICAgICAgICAgc3VpdGU9J2xheW91dC10ZXN0
cycsCi0gICAgICAgICAgICBjb21taXRzPVtNb2NrU3Rhc2hSZXBvc2l0b3J5LnNhZmFyaSgpLmNv
bW1pdF9mb3JfaWQoJ2JiNmJkYTVmJyksIE1vY2tTVk5SZXBvc2l0b3J5LndlYmtpdCgpLmNvbW1p
dF9mb3JfaWQoMjM2NTQyKV0sCi0gICAgICAgICAgICBjb25maWd1cmF0aW9uPUNvbmZpZ3VyYXRp
b24uRW5jb2RlcigpLmRlZmF1bHQoQ29uZmlndXJhdGlvbigKLSAgICAgICAgICAgICAgICBwbGF0
Zm9ybT0nTWFjJywgdmVyc2lvbj0nMTAuMTQuMCcsIHNkaz0nMThBMzkxJywKLSAgICAgICAgICAg
ICAgICBpc19zaW11bGF0b3I9RmFsc2UsIGFyY2hpdGVjdHVyZT0neDg2XzY0JywKLSAgICAgICAg
ICAgICAgICBzdHlsZT0nUmVsZWFzZScsIGZsYXZvcj0nd2syJywKLSAgICAgICAgICAgICkpLAot
ICAgICAgICAgICAgdGVzdF9yZXN1bHRzPU1vY2tNb2RlbEZhY3RvcnkubGF5b3V0X3Rlc3RfcmVz
dWx0cygpLAotICAgICAgICAgICAgdGltZXN0YW1wPWludCh0aW1lLnRpbWUoKSksCi0gICAgICAg
ICkKLSAgICAgICAgcmVzcG9uc2UgPSBjbGllbnQucG9zdChzZWxmLlVSTCArICcvYXBpL3VwbG9h
ZCcsIGRhdGE9c3RyKGpzb24uZHVtcHModXBsb2FkX2RpY3QsIGNscz1Db21taXQuRW5jb2Rlcikp
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2UuanNvbigpWydzdGF0dXMnXSwgJ29rJykK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5qc29uKClbJ3Byb2Nlc3NpbmcnXVsn
cHl0aG9uLXRlc3RzJ10sIGRpY3Qoc3RhdHVzPSdvaycpKQotCi0gICAgICAgIHJlc3BvbnNlID0g
Y2xpZW50LmdldChzZWxmLlVSTCArICcvYXBpL3VwbG9hZCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChyZXNwb25zZS5qc29uKClbMF0sIENvbW1pdC5FbmNvZGVyKCkuZGVmYXVsdCh1cGxvYWRfZGlj
dCkpCi0KLSAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tf
cmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4
dCkKLSAgICBARmxhc2tUZXN0Q2FzZS5ydW5fd2l0aF93ZWJzZXJ2ZXIoKQotICAgIGRlZiB0ZXN0
X3VwbG9hZF9wYXJ0aWFsKHNlbGYsIGNsaWVudCwgKiprd2FyZ3MpOgotICAgICAgICB1cGxvYWRf
ZGljdCA9IGRpY3QoCi0gICAgICAgICAgICBzdWl0ZT0nbGF5b3V0LXRlc3RzJywKLSAgICAgICAg
ICAgIGNvbW1pdHM9W2RpY3QocmVwb3NpdG9yeV9pZD0nc2FmYXJpJywgaWQ9J2JiNmJkYTVmJyks
IGRpY3QocmVwb3NpdG9yeV9pZD0nd2Via2l0JywgaWQ9MjM2NTQyKV0sCi0gICAgICAgICAgICBj
b25maWd1cmF0aW9uPUNvbmZpZ3VyYXRpb24uRW5jb2RlcigpLmRlZmF1bHQoQ29uZmlndXJhdGlv
bigKLSAgICAgICAgICAgICAgICBwbGF0Zm9ybT0naU9TJywgdmVyc2lvbj0nMTIuMC4wJywgc2Rr
PScxNkE0MDQnLAotICAgICAgICAgICAgICAgIGlzX3NpbXVsYXRvcj1UcnVlLCBhcmNoaXRlY3R1
cmU9J3g4Nl82NCcsCi0gICAgICAgICAgICAgICAgc3R5bGU9J1JlbGVhc2UnLCBmbGF2b3I9J3dr
MicsCi0gICAgICAgICAgICApKSwKLSAgICAgICAgICAgIHRlc3RfcmVzdWx0cz1Nb2NrTW9kZWxG
YWN0b3J5LmxheW91dF90ZXN0X3Jlc3VsdHMoKSwKLSAgICAgICAgICAgIHRpbWVzdGFtcD1pbnQo
dGltZS50aW1lKCkpLAotICAgICAgICApCi0gICAgICAgIHJlc3BvbnNlID0gY2xpZW50LnBvc3Qo
c2VsZi5VUkwgKyAnL2FwaS91cGxvYWQnLCBkYXRhPXN0cihqc29uLmR1bXBzKHVwbG9hZF9kaWN0
KSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5qc29uKClbJ3N0YXR1cyddLCAnb2sn
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLmpzb24oKVsncHJvY2Vzc2luZydd
WydweXRob24tdGVzdHMnXSwgZGljdChzdGF0dXM9J29rJykpCi0KLSAgICAgICAgcmVzcG9uc2Ug
PSBjbGllbnQuZ2V0KHNlbGYuVVJMICsgJy9hcGkvdXBsb2FkJykKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChyZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQotICAgICAgICBmb3Iga2V5IGluIFsn
c3VpdGUnLCAnY29uZmlndXJhdGlvbicsICd0ZXN0X3Jlc3VsdHMnLCAndGltZXN0YW1wJ106Ci0g
ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLmpzb24oKVswXVtrZXldLCB1cGxv
YWRfZGljdFtrZXldKQotCi0gICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2Rv
Y2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3Nh
bmRyYUNvbnRleHQpCi0gICAgQEZsYXNrVGVzdENhc2UucnVuX3dpdGhfd2Vic2VydmVyKCkKLSAg
ICBkZWYgdGVzdF9ub19kb3dubG9hZChzZWxmLCBjbGllbnQsICoqa3dhcmdzKToKLSAgICAgICAg
cmVzcG9uc2UgPSBjbGllbnQuZ2V0KHNlbGYuVVJMICsgJy9hcGkvdXBsb2FkJykKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHJlc3BvbnNlLmpzb24oKSwgW10pCi0KLSAgICBAV2FpdEZvckRvY2tlclRl
c3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2Nr
X2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKLSAgICBARmxhc2tUZXN0Q2FzZS5ydW5f
d2l0aF93ZWJzZXJ2ZXIoKQotICAgIGRlZiB0ZXN0X25vX3Byb2Nlc3Moc2VsZiwgY2xpZW50LCAq
Kmt3YXJncyk6Ci0gICAgICAgIHJlc3BvbnNlID0gY2xpZW50LnBvc3Qoc2VsZi5VUkwgKyAnL2Fw
aS9wcm9jZXNzJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5zdGF0dXNfY29k
ZSwgNDA0KQotCi0KLWNsYXNzIFVwbG9hZENvbnRyb2xsZXJUZXN0KEZsYXNrVGVzdENhc2UsIFdh
aXRGb3JEb2NrZXJUZXN0Q2FzZSk6Ci0gICAgS0VZU1BBQ0UgPSAndXBsb2FkX2NvbnRyb2xsZXJf
dGVzdF9rZXlzcGFjZScKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBzZXR1cF93ZWJzZXJ2
ZXIoY2xzLCBhcHAsIHJlZGlzPVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4
dCk6Ci0gICAgICAgIGNhc3NhbmRyYS5kcm9wX2tleXNwYWNlKGtleXNwYWNlPWNscy5LRVlTUEFD
RSkKLSAgICAgICAgbW9kZWwgPSBNb2NrTW9kZWxGYWN0b3J5LmNyZWF0ZShyZWRpcz1yZWRpcygp
LCBjYXNzYW5kcmE9Y2Fzc2FuZHJhKGtleXNwYWNlPWNscy5LRVlTUEFDRSwgY3JlYXRlX2tleXNw
YWNlPVRydWUpKQotICAgICAgICBtb2RlbC51cGxvYWRfY29udGV4dC5yZWdpc3Rlcl91cGxvYWRf
Y2FsbGJhY2soJ3B5dGhvbi10ZXN0cycsIGxhbWJkYSAqKmt3YXJnczogZGljdChzdGF0dXM9J29r
JykpCi0gICAgICAgIE1vY2tNb2RlbEZhY3RvcnkuYWRkX21vY2tfcmVzdWx0cyhtb2RlbCkKLSAg
ICAgICAgYXBwLnJlZ2lzdGVyX2JsdWVwcmludChBUElSb3V0ZXMobW9kZWwpKQotCi0gICAgQFdh
aXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJp
Y3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCi0gICAgQEZsYXNr
VGVzdENhc2UucnVuX3dpdGhfd2Vic2VydmVyKCkKLSAgICBkZWYgdGVzdF9zdWl0ZXMoc2VsZiwg
Y2xpZW50LCAqKmt3YXJncyk6Ci0gICAgICAgIHJlc3BvbnNlID0gY2xpZW50LmdldChzZWxmLlVS
TCArICcvYXBpL3N1aXRlcycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2Uuc3Rh
dHVzX2NvZGUsIDIwMCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxMiwgbGVuKHJlc3BvbnNl
Lmpzb24oKSkpCi0gICAgICAgIGZvciBlbGVtZW50IGluIHJlc3BvbnNlLmpzb24oKToKLSAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGVsZW1lbnRbMV0pKQotICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgnbGF5b3V0LXRlc3RzJywgZWxlbWVudFsxXVswXSkKLQotICAgIEBX
YWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3Ry
aWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQotICAgIEBGbGFz
a1Rlc3RDYXNlLnJ1bl93aXRoX3dlYnNlcnZlcigpCi0gICAgZGVmIHRlc3Rfc3VpdGVzX3dpdGhf
ZmlsdGVyKHNlbGYsIGNsaWVudCwgKiprd2FyZ3MpOgotICAgICAgICByZXNwb25zZSA9IGNsaWVu
dC5nZXQoc2VsZi5VUkwgKyAnL2FwaS9zdWl0ZXM/cGxhdGZvcm09TWFjJnN0eWxlPVJlbGVhc2Um
Zmxhdm9yPXdrMicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2Uuc3RhdHVzX2Nv
ZGUsIDIwMCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4ocmVzcG9uc2UuanNvbigp
KSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4ocmVzcG9uc2UuanNvbigpWzBdWzFd
KSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnbGF5b3V0LXRlc3RzJywgcmVzcG9uc2UuanNv
bigpWzBdWzFdWzBdKQotCi0gICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2Rv
Y2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3Nh
bmRyYUNvbnRleHQpCi0gICAgQEZsYXNrVGVzdENhc2UucnVuX3dpdGhfd2Vic2VydmVyKCkKLSAg
ICBkZWYgdGVzdF9zdWl0ZXNfd2l0aF9zdWl0ZV9maWx0ZXIoc2VsZiwgY2xpZW50LCAqKmt3YXJn
cyk6Ci0gICAgICAgIHJlc3BvbnNlID0gY2xpZW50LmdldChzZWxmLlVSTCArICcvYXBpL3N1aXRl
cz9zdWl0ZT1sYXlvdXQtdGVzdHMnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNl
LnN0YXR1c19jb2RlLCAyMDApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMTIsIGxlbihyZXNw
b25zZS5qc29uKCkpKQotCi0gICAgICAgIHJlc3BvbnNlID0gY2xpZW50LmdldChzZWxmLlVSTCAr
ICcvYXBpL3N1aXRlcz9zdWl0ZT1hcGktdGVzdHMnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHJlc3BvbnNlLnN0YXR1c19jb2RlLCA0MDQpCi0KLSAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNl
Lm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3Nh
bmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKLSAgICBARmxhc2tUZXN0Q2FzZS5ydW5fd2l0aF93
ZWJzZXJ2ZXIoKQotICAgIGRlZiB0ZXN0X2Rvd25sb2FkX3dpdGhfZmlsdGVyKHNlbGYsIGNsaWVu
dCwgKiprd2FyZ3MpOgotICAgICAgICByZXNwb25zZSA9IGNsaWVudC5nZXQoc2VsZi5VUkwgKyAn
L2FwaS91cGxvYWQ/cGxhdGZvcm09TWFjJnN0eWxlPVJlbGVhc2UmZmxhdm9yPXdrMicpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCg1LCBsZW4ocmVzcG9uc2UuanNvbigpKSkKLQotICAgIEBXYWl0Rm9y
RG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVk
aXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQotICAgIEBGbGFza1Rlc3RD
YXNlLnJ1bl93aXRoX3dlYnNlcnZlcigpCi0gICAgZGVmIHRlc3RfZG93bmxvYWRfd2l0aF9kdWVs
X2ZpbHRlcihzZWxmLCBjbGllbnQsICoqa3dhcmdzKToKLSAgICAgICAgcmVzcG9uc2UgPSBjbGll
bnQuZ2V0KHNlbGYuVVJMICsgJy9hcGkvdXBsb2FkP3BsYXRmb3JtPU1hYyZzdHlsZT1SZWxlYXNl
JmZsYXZvcj13azEmZmxhdm9yPXdrMicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9u
c2Uuc3RhdHVzX2NvZGUsIDIwMCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxMCwgbGVuKHJl
c3BvbnNlLmpzb24oKSkpCi0KLSAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9f
ZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fz
c2FuZHJhQ29udGV4dCkKLSAgICBARmxhc2tUZXN0Q2FzZS5ydW5fd2l0aF93ZWJzZXJ2ZXIoKQot
ICAgIGRlZiB0ZXN0X2Rvd25sb2FkX3dpdGhfbGltaXQoc2VsZiwgY2xpZW50LCAqKmt3YXJncyk6
Ci0gICAgICAgIHJlc3BvbnNlID0gY2xpZW50LmdldChzZWxmLlVSTCArICcvYXBpL3VwbG9hZD9w
bGF0Zm9ybT1NYWMmc3R5bGU9UmVsZWFzZSZmbGF2b3I9d2syJmxpbWl0PTInKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoMiwgbGVuKHJlc3BvbnNlLmpzb24oKSkpCi0KLSAgICBAV2FpdEZvckRvY2tl
clRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBt
b2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKLSAgICBARmxhc2tUZXN0Q2FzZS5y
dW5fd2l0aF93ZWJzZXJ2ZXIoKQotICAgIGRlZiB0ZXN0X2Rvd25sb2FkX3dpdGhfcmFuZ2Uoc2Vs
ZiwgY2xpZW50LCAqKmt3YXJncyk6Ci0gICAgICAgIHJlc3BvbnNlID0gY2xpZW50LmdldChzZWxm
LlVSTCArICcvYXBpL3VwbG9hZD9wbGF0Zm9ybT1NYWMmc3R5bGU9UmVsZWFzZSZmbGF2b3I9d2sy
JmFmdGVyX2lkPTIzNjU0MiZiZWZvcmVfaWQ9MjM2NTQ0JykKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChyZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KDMsIGxlbihyZXNwb25zZS5qc29uKCkpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRl
ZChbJzIzNjU0NCcsICcyMzY1NDMnLCAnMjM2NTQyJ10pLCBzb3J0ZWQoW3Jlc3VsdFsnY29tbWl0
cyddWzBdWydpZCddIGZvciByZXN1bHQgaW4gcmVzcG9uc2UuanNvbigpXSkpCi0KLSAgICBAV2Fp
dEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmlj
dFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKLSAgICBARmxhc2tU
ZXN0Q2FzZS5ydW5fd2l0aF93ZWJzZXJ2ZXIoKQotICAgIGRlZiB0ZXN0X2Rvd25sb2FkX2Zvcl9j
b21taXQoc2VsZiwgY2xpZW50LCAqKmt3YXJncyk6Ci0gICAgICAgIHJlc3BvbnNlID0gY2xpZW50
LmdldChzZWxmLlVSTCArICcvYXBpL3VwbG9hZD9wbGF0Zm9ybT1NYWMmc3R5bGU9UmVsZWFzZSZm
bGF2b3I9d2syJmlkPTIzNjU0MicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2Uu
c3RhdHVzX2NvZGUsIDIwMCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4ocmVzcG9u
c2UuanNvbigpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJzIzNjU0MiddLCBbcmVzdWx0
Wydjb21taXRzJ11bMF1bJ2lkJ10gZm9yIHJlc3VsdCBpbiByZXNwb25zZS5qc29uKCldKQotCi0g
ICAgICAgIHJlc3BvbnNlID0gY2xpZW50LmdldChzZWxmLlVSTCArICcvYXBpL3VwbG9hZD9wbGF0
Zm9ybT1NYWMmc3R5bGU9UmVsZWFzZSZmbGF2b3I9d2syJmlkPWJiNmJkYTVmJykKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKDUsIGxlbihyZXNwb25zZS5qc29uKCkpKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKFsnYmI2YmRhNWY0NGRkMjRkMGI1NDUzOWI4ZmY2ZThjMTdmNTE5MjQ5YSddICogNSwg
W3Jlc3VsdFsnY29tbWl0cyddWzFdWydpZCddIGZvciByZXN1bHQgaW4gcmVzcG9uc2UuanNvbigp
XSkKLQotICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19y
ZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0
KQotICAgIEBGbGFza1Rlc3RDYXNlLnJ1bl93aXRoX3dlYnNlcnZlcigpCi0gICAgZGVmIHRlc3Rf
cHJvY2VzcyhzZWxmLCBjbGllbnQsICoqa3dhcmdzKToKLSAgICAgICAgcmVzcG9uc2UgPSBjbGll
bnQucG9zdChzZWxmLlVSTCArICcvYXBpL3VwbG9hZC9wcm9jZXNzP3BsYXRmb3JtPU1hYyZzdHls
ZT1SZWxlYXNlJmZsYXZvcj13azInKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNl
LnN0YXR1c19jb2RlLCAyMDApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoNSwgbGVuKHJlc3Bv
bnNlLmpzb24oKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW2RpY3Qoc3RhdHVzPSdvaycp
XSAqIDUsIFtlbGVtZW50Wydwcm9jZXNzaW5nJ11bJ3B5dGhvbi10ZXN0cyddIGZvciBlbGVtZW50
IGluIHJlc3BvbnNlLmpzb24oKV0pCi0KLSAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tf
aWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1N
b2NrQ2Fzc2FuZHJhQ29udGV4dCkKLSAgICBARmxhc2tUZXN0Q2FzZS5ydW5fd2l0aF93ZWJzZXJ2
ZXIoKQotICAgIGRlZiB0ZXN0X3Byb2Nlc3NfY29tbWl0KHNlbGYsIGNsaWVudCwgKiprd2FyZ3Mp
OgotICAgICAgICByZXNwb25zZSA9IGNsaWVudC5wb3N0KHNlbGYuVVJMICsgJy9hcGkvdXBsb2Fk
L3Byb2Nlc3M/cGxhdGZvcm09TWFjJnN0eWxlPVJlbGVhc2UmZmxhdm9yPXdrMiZpZD0yMzY1NDMn
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKHJlc3BvbnNlLmpzb24oKSkpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoWycyMzY1NDMnXSwgW3Jlc3VsdFsnY29tbWl0cyddWzBdWydpZCdd
IGZvciByZXN1bHQgaW4gcmVzcG9uc2UuanNvbigpXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChbZGljdChzdGF0dXM9J29rJyldLCBbZWxlbWVudFsncHJvY2Vzc2luZyddWydweXRob24tdGVz
dHMnXSBmb3IgZWxlbWVudCBpbiByZXNwb25zZS5qc29uKCldKQpJbmRleDogVG9vbHMvcmVzdWx0
c2RicHkvcmVzdWx0c2RicHkvZXhhbXBsZS9fX2luaXRfXy5weQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9leGFtcGxlL19faW5pdF9fLnB5CShyZXZpc2lvbiAy
NjU1MzEpCisrKyBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9leGFtcGxlL19faW5pdF9f
LnB5CShub25leGlzdGVudCkKQEAgLTEsMjEgKzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0jIGFyZSBtZXQ6Ci0jIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jCi0jIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFO
RAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SCi0jIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSMgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIKLSMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSMgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KSW5kZXg6IFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2V4YW1w
bGUvZW52aXJvbm1lbnQucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0
c2RicHkvZXhhbXBsZS9lbnZpcm9ubWVudC5weQkocmV2aXNpb24gMjY1NTMxKQorKysgVG9vbHMv
cmVzdWx0c2RicHkvcmVzdWx0c2RicHkvZXhhbXBsZS9lbnZpcm9ubWVudC5weQkobm9uZXhpc3Rl
bnQpCkBAIC0xLDE1OSArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1l
dDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECi0jIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSMgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTAotIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotIyBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLAotIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotCi1pbXBvcnQgb3MKLWltcG9ydCBzeXMKLQotZnJvbSBjYXNzYW5kcmEuYXV0aCBpbXBvcnQg
UGxhaW5UZXh0QXV0aFByb3ZpZGVyCi1mcm9tIGZha2VyZWRpcyBpbXBvcnQgRmFrZVN0cmljdFJl
ZGlzCi1mcm9tIHJlZGlzIGltcG9ydCBTdHJpY3RSZWRpcwotCi1zeXMucGF0aC5hcHBlbmQob3Mu
cGF0aC5kaXJuYW1lKG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5hYnNw
YXRoKF9fZmlsZV9fKSkpKSkKLQotZnJvbSByZXN1bHRzZGJweS5tb2RlbC5jYXNzYW5kcmFfY29u
dGV4dCBpbXBvcnQgQ2Fzc2FuZHJhQ29udGV4dAotZnJvbSByZXN1bHRzZGJweS5tb2RlbC5jYXNz
ZXJvbGUgaW1wb3J0IENhc3Nlcm9sZU5vZGVzLCBDYXNzZXJvbGVSZWRpcwotZnJvbSByZXN1bHRz
ZGJweS5tb2RlbC5jaV9jb250ZXh0IGltcG9ydCBCdWlsZGJvdFVSTEZhY3RvcnksIEJ1aWxkYm90
RWlnaHRVUkxGYWN0b3J5Ci1mcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLm1vY2tfY2Fzc2FuZHJhX2Nv
bnRleHQgaW1wb3J0IE1vY2tDYXNzYW5kcmFDb250ZXh0Ci1mcm9tIHJlc3VsdHNkYnB5Lm1vZGVs
Lm1vZGVsIGltcG9ydCBNb2RlbAotZnJvbSByZXN1bHRzZGJweS5tb2RlbC5yZXBvc2l0b3J5IGlt
cG9ydCBXZWJLaXRSZXBvc2l0b3J5Ci1mcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLnBhcnRpdGlvbmVk
X3JlZGlzIGltcG9ydCBQYXJ0aXRpb25lZFJlZGlzCi0KLU1PQ0tfQ0FTU0FORFJBID0gJ21vY2sn
Ci1LRVlTUEFDRSA9ICdyZXN1bHRzX2RhdGFiYXNlX2V4YW1wbGUnCi0KLQotY2xhc3MgRW52aXJv
bm1lbnQob2JqZWN0KToKLSAgICBSRURJU19QT1JUID0gNjM3OQotCi0gICAgZGVmIF9faW5pdF9f
KHNlbGYsIGNxbGVuZ19hbGxvd19zY2hlbWFfbWFuYWdlbWVudD1GYWxzZSk6Ci0gICAgICAgIHNl
bGYucG9ydCA9IGludChvcy5lbnZpcm9uLmdldCgnUE9SVCcsIDUwMDApKQotCi0gICAgICAgICMg
VGhlIGJhc2UgZW52aXJvbm1lbnQgcHJvdmlkZXMgZGVmYXVsdHMgZm9yIGRhdGFiYXNlIGluZm9y
bWF0aW9uLCBhbHRob3VnaCB0aGF0IGNhbiBiZSBleHBsaWNpdGx5IG92ZXJyaWRkZW4KLSAgICAg
ICAgc2VsZi5jYXNzYW5kcmFfc2VydmVyID0gb3MuZW52aXJvbi5nZXQoJ0NBU1NBTkRSQV9TRVJW
RVInLCAnbG9jYWxob3N0JykKLSAgICAgICAgc2VsZi5rZXlzcGFjZSA9IG9zLmVudmlyb24uZ2V0
KCdLRVlTUEFDRScsIEtFWVNQQUNFKQotCi0gICAgICAgIHNlbGYucmVkaXNfaG9zdCA9IG9zLmVu
dmlyb24uZ2V0KCdSRURJU19IT1NUJywgJ2xvY2FsaG9zdCcpCi0gICAgICAgIHNlbGYucmVkaXNf
cG9ydCA9IG9zLmVudmlyb24uZ2V0KCdSRURJU19QT1JUJywgc2VsZi5SRURJU19QT1JUKQotCi0g
ICAgICAgIHNlbGYuZHJvcF9rZXlzcGFjZSA9IGNxbGVuZ19hbGxvd19zY2hlbWFfbWFuYWdlbWVu
dCBhbmQgYm9vbChpbnQob3MuZW52aXJvbi5nZXQoJ0RST1BfS0VZU1BBQ0UnLCAwKSkpCi0gICAg
ICAgIHNlbGYuY3JlYXRlX2tleXNwYWNlID0gY3FsZW5nX2FsbG93X3NjaGVtYV9tYW5hZ2VtZW50
IGFuZCBib29sKGludChvcy5lbnZpcm9uLmdldCgnQ1JFQVRFX0tFWVNQQUNFJywgMSkpKQotICAg
ICAgICBzZWxmLmNxbGVuZ19hbGxvd19zY2hlbWFfbWFuYWdlbWVudCA9IGNxbGVuZ19hbGxvd19z
Y2hlbWFfbWFuYWdlbWVudAotCi0gICAgICAgIG9zLmVudmlyb25bJ0NRTEVOR19BTExPV19TQ0hF
TUFfTUFOQUdFTUVOVCddID0gJzEnIGlmIHNlbGYuY3FsZW5nX2FsbG93X3NjaGVtYV9tYW5hZ2Vt
ZW50IGVsc2UgJzAnCi0KLSAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gc2VsZi5fX2RpY3RfXy5p
dGVtcygpOgotICAgICAgICAgICAgaWYgdmFsdWUgaXMgTm9uZToKLSAgICAgICAgICAgICAgICBy
YWlzZSBFbnZpcm9ubWVudEVycm9yKGYne2tleS51cHBlcigpfSBpcyBub3QgZGVmaW5lZCBpbiB0
aGUgZW52aXJvbm1lbnQnKQotCi0gICAgICAgIHNlbGYucmVkaXNfdXJsID0gb3MuZW52aXJvbi5n
ZXQoJ1JFRElTX1VSTCcsIE5vbmUpCi0gICAgICAgIHNlbGYucmVkaXNfcGFzc3dvcmQgPSBvcy5l
bnZpcm9uLmdldCgnUkVESVNfUEFTU1dPUkQnLCBOb25lKQotCi0gICAgICAgIHNlbGYuY2Fzc2Fu
ZHJhX3VzZXJuYW1lID0gTm9uZQotICAgICAgICBzZWxmLmNhc3NhbmRyYV9wYXNzd29yZCA9IE5v
bmUKLQotICAgICAgICBpZiBub3Qgc2VsZi5jcWxlbmdfYWxsb3dfc2NoZW1hX21hbmFnZW1lbnQ6
Ci0gICAgICAgICAgICBzZWxmLmNhc3NhbmRyYV91c2VybmFtZSA9IG9zLmVudmlyb24uZ2V0KCdD
QVNTQU5EUkFfVVNFUicpCi0gICAgICAgICAgICBzZWxmLmNhc3NhbmRyYV9wYXNzd29yZCA9IG9z
LmVudmlyb24uZ2V0KCdDQVNTQU5EUkFfVVNFUl9QQVNTV09SRCcpCi0KLSAgICAgICAgaWYgbm90
IHNlbGYuY2Fzc2FuZHJhX3VzZXJuYW1lIG9yIG5vdCBzZWxmLmNhc3NhbmRyYV9wYXNzd29yZDoK
LSAgICAgICAgICAgIHNlbGYuY2Fzc2FuZHJhX3VzZXJuYW1lID0gb3MuZW52aXJvbi5nZXQoJ0NB
U1NBTkRSQV9BRE1JTicpCi0gICAgICAgICAgICBzZWxmLmNhc3NhbmRyYV9wYXNzd29yZCA9IG9z
LmVudmlyb24uZ2V0KCdDQVNTQU5EUkFfQURNSU5fUEFTU1dPUkQnKQotCi0gICAgQHN0YXRpY21l
dGhvZAotICAgIGRlZiBvYmZ1c2NhdGVfcGFzc3dvcmQocGFzc3dvcmQpOgotICAgICAgICBpZiBw
YXNzd29yZDoKLSAgICAgICAgICAgIHJldHVybiAnKicgKiBsZW4ocGFzc3dvcmQpCi0gICAgICAg
IHJldHVybiAnLScKLQotICAgIGRlZiBfX3N0cl9fKHNlbGYpOgotICAgICAgICByZXN1bHQgPSAn
JwotICAgICAgICBvcmRlciA9IFsKLSAgICAgICAgICAgICdwb3J0JywKLSAgICAgICAgICAgICdj
YXNzYW5kcmFfc2VydmVyJywgJ2NxbGVuZ19hbGxvd19zY2hlbWFfbWFuYWdlbWVudCcsCi0gICAg
ICAgICAgICAna2V5c3BhY2UnLCAnZHJvcF9rZXlzcGFjZScsICdjcmVhdGVfa2V5c3BhY2UnLAot
ICAgICAgICAgICAgJ2Nhc3NhbmRyYV91c2VybmFtZScsICdjYXNzYW5kcmFfcGFzc3dvcmQnLAot
ICAgICAgICAgICAgJ3JlZGlzX3VybCcsCi0gICAgICAgICAgICAncmVkaXNfaG9zdCcsICdyZWRp
c19wb3J0JywgJ3JlZGlzX3Bhc3N3b3JkJywKLSAgICAgICAgXQotICAgICAgICBmb3Iga2V5IGlu
IHNlbGYuX19kaWN0X18ua2V5cygpOgotICAgICAgICAgICAgaWYga2V5IG5vdCBpbiBvcmRlcjoK
LSAgICAgICAgICAgICAgICBvcmRlci5hcHBlbmQoa2V5KQotICAgICAgICBmb3Iga2V5IGluIG9y
ZGVyOgotICAgICAgICAgICAgdmFsdWUgPSBzZWxmLl9fZGljdF9fLmdldChrZXkpCi0gICAgICAg
ICAgICBpZiB2YWx1ZSBhbmQgKCdwYXNzd29yZCcgaW4ga2V5IG9yICd0b2tlbicgaW4ga2V5IG9y
IGtleS5lbmRzd2l0aCgna2V5JykpOgotICAgICAgICAgICAgICAgIHZhbHVlID0gc2VsZi5vYmZ1
c2NhdGVfcGFzc3dvcmQodmFsdWUpCi0gICAgICAgICAgICByZXN1bHQgKz0gZiIgICAge2tleS51
cHBlcigpfToge3ZhbHVlfVxuIgotICAgICAgICByZXR1cm4gcmVzdWx0WzotMV0KLQotCi1jbGFz
cyBNb2RlbEZyb21FbnZpcm9ubWVudChNb2RlbCk6Ci0gICAgVFRMX1NFQ09ORFMgPSBNb2RlbC5U
VExfWUVBUiAqIDUKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBlbnZpcm9ubWVudCk6Ci0gICAg
ICAgIG5vZGVzID0gWydsb2NhbGhvc3QnXQotICAgICAgICBjYXNzYW5kcmFfY2xhc3MgPSBDYXNz
YW5kcmFDb250ZXh0Ci0gICAgICAgIGlmIGVudmlyb25tZW50LmNhc3NhbmRyYV9zZXJ2ZXIgPT0g
TU9DS19DQVNTQU5EUkE6Ci0gICAgICAgICAgICBjYXNzYW5kcmFfY2xhc3MgPSBNb2NrQ2Fzc2Fu
ZHJhQ29udGV4dAotCi0gICAgICAgIGF1dGhfcHJvdmlkZXIgPSBOb25lCi0gICAgICAgIGlmIGVu
dmlyb25tZW50LmNhc3NhbmRyYV91c2VybmFtZSBhbmQgZW52aXJvbm1lbnQuY2Fzc2FuZHJhX3Bh
c3N3b3JkOgotICAgICAgICAgICAgYXV0aF9wcm92aWRlciA9IFBsYWluVGV4dEF1dGhQcm92aWRl
cihlbnZpcm9ubWVudC5jYXNzYW5kcmFfdXNlcm5hbWUsIGVudmlyb25tZW50LmNhc3NhbmRyYV9w
YXNzd29yZCkKLQotICAgICAgICBpZiBlbnZpcm9ubWVudC5kcm9wX2tleXNwYWNlOgotICAgICAg
ICAgICAgY2Fzc2FuZHJhX2NsYXNzLmRyb3Bfa2V5c3BhY2Uobm9kZXM9bm9kZXMsIGtleXNwYWNl
PWVudmlyb25tZW50LmtleXNwYWNlLCBhdXRoX3Byb3ZpZGVyPWF1dGhfcHJvdmlkZXIpCi0KLSAg
ICAgICAgY2Fzc2FuZHJhID0gY2Fzc2FuZHJhX2NsYXNzKAotICAgICAgICAgICAgbm9kZXM9bm9k
ZXMsCi0gICAgICAgICAgICBrZXlzcGFjZT1lbnZpcm9ubWVudC5rZXlzcGFjZSwKLSAgICAgICAg
ICAgIGF1dGhfcHJvdmlkZXI9YXV0aF9wcm92aWRlciwKLSAgICAgICAgICAgIGNyZWF0ZV9rZXlz
cGFjZT1lbnZpcm9ubWVudC5jcmVhdGVfa2V5c3BhY2UsCi0gICAgICAgICAgICByZXBsaWNhdGlv
bl9tYXA9Tm9uZSwKLSAgICAgICAgKQotICAgICAgICBpZiBlbnZpcm9ubWVudC5yZWRpc19ob3N0
ID09ICdtb2NrJzoKLSAgICAgICAgICAgIHJlZGlzID0gRmFrZVN0cmljdFJlZGlzKCkKLSAgICAg
ICAgZWxpZiBlbnZpcm9ubWVudC5yZWRpc191cmw6Ci0gICAgICAgICAgICByZWRpcyA9IFN0cmlj
dFJlZGlzLmZyb21fdXJsKGVudmlyb25tZW50LnJlZGlzX3VybCkKLSAgICAgICAgZWxzZToKLSAg
ICAgICAgICAgIHJlZGlzID0gU3RyaWN0UmVkaXMoCi0gICAgICAgICAgICAgICAgcG9ydD1lbnZp
cm9ubWVudC5yZWRpc19wb3J0LAotICAgICAgICAgICAgICAgIGhvc3Q9ZW52aXJvbm1lbnQucmVk
aXNfaG9zdCwKLSAgICAgICAgICAgICAgICBwYXNzd29yZD1lbnZpcm9ubWVudC5yZWRpc19wYXNz
d29yZCwKLSAgICAgICAgICAgICkKLSAgICAgICAgcmVkaXMucGluZygpICAjIEZvcmNlIGEgY29u
bmVjdGlvbiB3aXRoIHRoZSByZWRpcyBkYXRhYmFzZQotCi0gICAgICAgIHdlYmtpdCA9IFdlYktp
dFJlcG9zaXRvcnkoKQotICAgICAgICBzdXBlcihNb2RlbEZyb21FbnZpcm9ubWVudCwgc2VsZiku
X19pbml0X18oCi0gICAgICAgICAgICByZWRpcz1yZWRpcywgY2Fzc2FuZHJhPWNhc3NhbmRyYSwK
LSAgICAgICAgICAgIHJlcG9zaXRvcmllcz1bd2Via2l0XSwKLSAgICAgICAgICAgIGRlZmF1bHRf
dHRsX3NlY29uZHM9c2VsZi5UVExfU0VDT05EUywKLSAgICAgICAgICAgIGFzeW5jX3Byb2Nlc3Np
bmc9VHJ1ZSwKLSAgICAgICAgKQotCi0KLWRlZiBtYWluKCk6Ci0gICAgZW52aXJvbm1lbnQgPSBF
bnZpcm9ubWVudChjcWxlbmdfYWxsb3dfc2NoZW1hX21hbmFnZW1lbnQ9VHJ1ZSkKLSAgICBwcmlu
dChmJ0Vudmlyb25tZW50IGZvciBzZXR1cDpcbntlbnZpcm9ubWVudH0nKQotICAgIE1vZGVsRnJv
bUVudmlyb25tZW50KGVudmlyb25tZW50KQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6
Ci0gICAgbWFpbigpCkluZGV4OiBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9leGFtcGxl
L21haW4ucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvZXhh
bXBsZS9tYWluLnB5CShyZXZpc2lvbiAyNjU1MzEpCisrKyBUb29scy9yZXN1bHRzZGJweS9yZXN1
bHRzZGJweS9leGFtcGxlL21haW4ucHkJKG5vbmV4aXN0ZW50KQpAQCAtMSw2NyArMCwwIEBACi0j
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0j
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0jIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTICJBUyBJUyIgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUgotIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotIyBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1pbXBvcnQgaGFzaGxpYgotaW1w
b3J0IGpzb24KLQotZnJvbSBleGFtcGxlLmVudmlyb25tZW50IGltcG9ydCBFbnZpcm9ubWVudCwg
TW9kZWxGcm9tRW52aXJvbm1lbnQKLWZyb20gZmxhc2sgaW1wb3J0IGFib3J0LCBGbGFzaywgcmVx
dWVzdAotZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVyLmFwaV9yb3V0ZXMgaW1wb3J0IEFQSVJv
dXRlcwotZnJvbSByZXN1bHRzZGJweS52aWV3LnZpZXdfcm91dGVzIGltcG9ydCBWaWV3Um91dGVz
Ci0KLQotZW52aXJvbm1lbnQgPSBFbnZpcm9ubWVudCgpCi1wcmludChmJ0Vudmlyb25tZW50IGZv
ciB3ZWItYXBwOlxue2Vudmlyb25tZW50fScpCi0KLW1vZGVsID0gTW9kZWxGcm9tRW52aXJvbm1l
bnQoZW52aXJvbm1lbnQpCi1hcHAgPSBGbGFzayhfX25hbWVfXykKLQotCi1hcGlfcm91dGVzID0g
QVBJUm91dGVzKG1vZGVsPW1vZGVsLCBpbXBvcnRfbmFtZT1fX25hbWVfXykKLXZpZXdfcm91dGVz
ID0gVmlld1JvdXRlcygKLSAgICB0aXRsZT0nRXhhbXBsZSBSZXN1bHRzIERhdGFiYXNlJywKLSAg
ICBtb2RlbD1tb2RlbCwgY29udHJvbGxlcj1hcGlfcm91dGVzLCBpbXBvcnRfbmFtZT1fX25hbWVf
XywKLSkKLQotCi1AYXBwLnJvdXRlKCcvX19oZWFsdGgnLCBtZXRob2RzPSgnR0VUJywpKQotZGVm
IGhlYWx0aCgpOgotICAgIGlmIG5vdCBtb2RlbC5oZWFsdGh5KHdyaXRhYmxlPVRydWUpOgotICAg
ICAgICBhYm9ydCg1MDMsIGRlc2NyaXB0aW9uPSdIZWFsdGggY2hlY2sgZmFpbGVkLCBpbnZhbGlk
IGRhdGFiYXNlIGNvbm5lY3Rpb25zJykKLSAgICByZXR1cm4gJ29rJwotCi0KLUBhcHAuZXJyb3Jo
YW5kbGVyKDQwMSkKLUBhcHAuZXJyb3JoYW5kbGVyKDQwNCkKLUBhcHAuZXJyb3JoYW5kbGVyKDQw
NSkKLWRlZiBoYW5kbGVfZXJyb3JzKGVycm9yKToKLSAgICBpZiByZXF1ZXN0LnBhdGguc3RhcnRz
d2l0aCgnL2FwaS8nKToKLSAgICAgICAgcmV0dXJuIGFwaV9yb3V0ZXMuZXJyb3JfcmVzcG9uc2Uo
ZXJyb3IpCi0gICAgcmV0dXJuIHZpZXdfcm91dGVzLmVycm9yKGVycm9yPWVycm9yKQotCi0KLWFw
cC5yZWdpc3Rlcl9ibHVlcHJpbnQoYXBpX3JvdXRlcykKLWFwcC5yZWdpc3Rlcl9ibHVlcHJpbnQo
dmlld19yb3V0ZXMpCi0KLQotZGVmIG1haW4oKToKLSAgICBhcHAucnVuKGhvc3Q9JzAuMC4wLjAn
LCBwb3J0PWVudmlyb25tZW50LnBvcnQpCkluZGV4OiBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRz
ZGJweS9leGFtcGxlL3dvcmtlci5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9yZXN1bHRzZGJweS9y
ZXN1bHRzZGJweS9leGFtcGxlL3dvcmtlci5weQkocmV2aXNpb24gMjY1NTMxKQorKysgVG9vbHMv
cmVzdWx0c2RicHkvcmVzdWx0c2RicHkvZXhhbXBsZS93b3JrZXIucHkJKG5vbmV4aXN0ZW50KQpA
QCAtMSw0MiArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMg
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
IyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECi0jIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECi0jIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSMgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTAotIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotIyBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLAotIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1p
bXBvcnQgYXJncGFyc2UKLWltcG9ydCByYW5kb20KLWltcG9ydCB0aW1lCi1mcm9tIGV4YW1wbGUu
ZW52aXJvbm1lbnQgaW1wb3J0IEVudmlyb25tZW50LCBNb2RlbEZyb21FbnZpcm9ubWVudAotCi0K
LWRlZiBtYWluKCk6Ci0gICAgZW52aXJvbm1lbnQgPSBFbnZpcm9ubWVudCgpCi0gICAgcHJpbnQo
ZidFbnZpcm9ubWVudCBmb3Igd29ya2VyOlxue2Vudmlyb25tZW50fScpCi0KLSAgICBtb2RlbCA9
IE1vZGVsRnJvbUVudmlyb25tZW50KGVudmlyb25tZW50KQotCi0gICAgcmFuZG9tLnNlZWQoKQot
ICAgIHdoaWxlIFRydWU6Ci0gICAgICAgIG1vZGVsLmRvX3dvcmsoKQotICAgICAgICB0aW1lLnNs
ZWVwKHJhbmRvbS5yYW5kaW50KDE1LCA0NSkpICAjIFN0YWdnZXIgd29ya2Vycy4KLQotCi1pZiBf
X25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIG1haW4oKQpJbmRleDogVG9vbHMvcmVzdWx0c2Ri
cHkvcmVzdWx0c2RicHkvZmxhc2tfc3VwcG9ydC9fX2luaXRfXy5weQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9mbGFza19zdXBwb3J0L19faW5pdF9fLnB5CShy
ZXZpc2lvbiAyNjU1MzEpCisrKyBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9mbGFza19z
dXBwb3J0L19faW5pdF9fLnB5CShub25leGlzdGVudCkKQEAgLTEgKzAsMCBAQAotIyBETyBOT1RI
SU5HCkluZGV4OiBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9mbGFza19zdXBwb3J0L2F1
dGhlZF9ibHVlcHJpbnQucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0
c2RicHkvZmxhc2tfc3VwcG9ydC9hdXRoZWRfYmx1ZXByaW50LnB5CShyZXZpc2lvbiAyNjU1MzEp
CisrKyBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9mbGFza19zdXBwb3J0L2F1dGhlZF9i
bHVlcHJpbnQucHkJKG5vbmV4aXN0ZW50KQpAQCAtMSwzNCArMCwwIEBACi0jIENvcHlyaWdodCAo
QykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJB
UyBJUyIgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotIyBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUgotIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotIyBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1mcm9tIGZsYXNrIGltcG9ydCBCbHVlcHJpbnQKLQot
Ci1jbGFzcyBBdXRoZWRCbHVlcHJpbnQoQmx1ZXByaW50KToKLSAgICBkZWYgX19pbml0X18oc2Vs
ZiwgbmFtZSwgaW1wb3J0X25hbWUsIGF1dGhfZGVjb3JhdG9yPU5vbmUsICoqa3dhcmdzKToKLSAg
ICAgICAgc3VwZXIoQXV0aGVkQmx1ZXByaW50LCBzZWxmKS5fX2luaXRfXyhuYW1lLCBpbXBvcnRf
bmFtZSwgKiprd2FyZ3MpCi0gICAgICAgIHNlbGYuYXV0aF9kZWNvcmF0b3IgPSBhdXRoX2RlY29y
YXRvcgotCi0gICAgZGVmIGFkZF91cmxfcnVsZShzZWxmLCBydWxlLCBlbmRwb2ludD1Ob25lLCB2
aWV3X2Z1bmM9Tm9uZSwgYXV0aGVkPVRydWUsICoqb3B0aW9ucyk6Ci0gICAgICAgIGlmIG5vdCBz
ZWxmLmF1dGhfZGVjb3JhdG9yIG9yIG5vdCBhdXRoZWQ6Ci0gICAgICAgICAgICByZXR1cm4gc3Vw
ZXIoQXV0aGVkQmx1ZXByaW50LCBzZWxmKS5hZGRfdXJsX3J1bGUocnVsZSwgZW5kcG9pbnQ9ZW5k
cG9pbnQsIHZpZXdfZnVuYz12aWV3X2Z1bmMsICoqb3B0aW9ucykKLSAgICAgICAgcmV0dXJuIHN1
cGVyKEF1dGhlZEJsdWVwcmludCwgc2VsZikuYWRkX3VybF9ydWxlKHJ1bGUsIGVuZHBvaW50PWVu
ZHBvaW50LCB2aWV3X2Z1bmM9c2VsZi5hdXRoX2RlY29yYXRvcih2aWV3X2Z1bmMpLCAqKm9wdGlv
bnMpCkluZGV4OiBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9mbGFza19zdXBwb3J0L2Zs
YXNrX3Rlc3RfY29udGV4dC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9yZXN1bHRzZGJweS9yZXN1
bHRzZGJweS9mbGFza19zdXBwb3J0L2ZsYXNrX3Rlc3RfY29udGV4dC5weQkocmV2aXNpb24gMjY1
NTMxKQorKysgVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvZmxhc2tfc3VwcG9ydC9mbGFz
a190ZXN0X2NvbnRleHQucHkJKG5vbmV4aXN0ZW50KQpAQCAtMSw3MiArMCwwIEBACi0jIENvcHly
aWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0j
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMg
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
LSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UgotIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUgotIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotIyBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1pbXBvcnQgcmVxdWVzdHMKLWltcG9ydCB0
aW1lCi0KLWZyb20gZmxhc2sgaW1wb3J0IEZsYXNrCi1mcm9tIG11bHRpcHJvY2Vzc2luZyBpbXBv
cnQgUHJvY2VzcywgU2VtYXBob3JlCi0KLQotY2xhc3MgRmxhc2tUZXN0Q29udGV4dChvYmplY3Qp
OgotICAgIFBPUlQgPSA1MDAxCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgc3RhcnRfd2Vi
c2VydmVyKGNscywgbWV0aG9kLCBzZW1hcGhvcmUpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAg
ICBhcHAgPSBGbGFzaygndGVzdGluZycpCi0gICAgICAgICAgICBtZXRob2QoYXBwKQotICAgICAg
ICAgICAgYXBwLmFkZF91cmxfcnVsZSgnL19faGVhbHRoJywgJ2hlYWx0aCcsIGxhbWJkYTogJ29r
JywgbWV0aG9kcz0oJ0dFVCcsKSkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHNlbWFw
aG9yZS5yZWxlYXNlKCkKLSAgICAgICAgcmV0dXJuIGFwcC5ydW4oaG9zdD0nMC4wLjAuMCcsIHBv
cnQ9Y2xzLlBPUlQpCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgbWV0aG9kKToKLSAgICAgICAg
c2VsZi5tZXRob2QgPSBtZXRob2QKLSAgICAgICAgc2VsZi5wcm9jZXNzID0gTm9uZQotCi0gICAg
ZGVmIF9fZW50ZXJfXyhzZWxmKToKLSAgICAgICAgc2VtYXBob3JlID0gU2VtYXBob3JlKDApCi0g
ICAgICAgIHNlbGYucHJvY2VzcyA9IFByb2Nlc3ModGFyZ2V0PXNlbGYuc3RhcnRfd2Vic2VydmVy
LCBhcmdzPShzZWxmLm1ldGhvZCwgc2VtYXBob3JlKSkKLSAgICAgICAgc2VsZi5wcm9jZXNzLnN0
YXJ0KCkKLQotICAgICAgICB3aXRoIHNlbWFwaG9yZToKLSAgICAgICAgICAgIGZvciBhdHRlbXB0
IGluIHJhbmdlKDMpOgotICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLnByb2Nlc3MuaXNfYWxp
dmUoKToKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdFeGNlcHRpb24g
cmFpc2VkIHdoZW4gc3RhcnRpbmcgd2ViLXNlcnZlcicpCi0KLSAgICAgICAgICAgICAgICB0cnk6
Ci0gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gcmVxdWVzdHMuZ2V0KGYnaHR0cDovL2xv
Y2FsaG9zdDp7c2VsZi5QT1JUfS9fX2hlYWx0aCcpCi0gICAgICAgICAgICAgICAgICAgIGlmIHJl
c3BvbnNlLnRleHQgIT0gJ29rJzoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRp
bWVFcnJvcignSGVhbHRoIGNoZWNrIGZhaWxlZCcpCi0gICAgICAgICAgICAgICAgICAgIHJldHVy
bgotICAgICAgICAgICAgICAgIGV4Y2VwdCByZXF1ZXN0cy5Db25uZWN0aW9uRXJyb3IgYXMgZToK
LSAgICAgICAgICAgICAgICAgICAgdGltZS5zbGVlcCguMDUpCi0KLSAgICAgICAgcmFpc2UgUnVu
dGltZUVycm9yKCdGYWlsZWQgdG8gY29ubmVjdCB0byBzZXJ2ZXIgZm9yIGhlYWx0aCBjaGVjaycp
Ci0KLSAgICBkZWYgX19leGl0X18oc2VsZiwgKmFyZ3MpOgotICAgICAgICBpZiBub3Qgc2VsZi5w
cm9jZXNzOgotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIGlmIG5vdCBzZWxmLnByb2Nlc3Mu
aXNfYWxpdmUoKToKLSAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignV2ViLXNlcnZlciBo
YXMgY3Jhc2hlZCcpCi0gICAgICAgIHNlbGYucHJvY2Vzcy50ZXJtaW5hdGUoKQpJbmRleDogVG9v
bHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvZmxhc2tfc3VwcG9ydC9mbGFza190ZXN0Y2FzZS5w
eQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9mbGFza19zdXBw
b3J0L2ZsYXNrX3Rlc3RjYXNlLnB5CShyZXZpc2lvbiAyNjU1MzEpCisrKyBUb29scy9yZXN1bHRz
ZGJweS9yZXN1bHRzZGJweS9mbGFza19zdXBwb3J0L2ZsYXNrX3Rlc3RjYXNlLnB5CShub25leGlz
dGVudCkKQEAgLTEsMTQ0ICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUg
bWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKLSMgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotIyBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0jIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0j
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksCi0jIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0KLWltcG9ydCBhdGV4aXQKLWltcG9ydCBqc29uCi1pbXBvcnQgb3MKLWltcG9ydCByZXF1
ZXN0cwotaW1wb3J0IHVuaXR0ZXN0Ci0KLWZyb20gZmxhc2sgaW1wb3J0IEZsYXNrCi1mcm9tIGZs
YXNrLndyYXBwZXJzIGltcG9ydCBSZXNwb25zZQotZnJvbSBzZWxlbml1bSBpbXBvcnQgd2ViZHJp
dmVyCi1mcm9tIHNlbGVuaXVtLmNvbW1vbi5leGNlcHRpb25zIGltcG9ydCBXZWJEcml2ZXJFeGNl
cHRpb24KLWZyb20gcmVzdWx0c2RicHkuZmxhc2tfc3VwcG9ydC5mbGFza190ZXN0X2NvbnRleHQg
aW1wb3J0IEZsYXNrVGVzdENvbnRleHQKLQotCi1jbGFzcyBGbGFza1JlcXVlc3RzUmVzcG9uc2Uo
UmVzcG9uc2UpOgotICAgIEBwcm9wZXJ0eQotICAgIGRlZiB0ZXh0KHNlbGYpOgotICAgICAgICBy
ZXR1cm4gc2VsZi5kYXRhLmRlY29kZSgndXRmLTgnKQotCi0gICAgQHByb3BlcnR5Ci0gICAgZGVm
IGNvbnRlbnQoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLmRhdGEKLQotICAgIGRlZiBqc29u
KHNlbGYpOgotICAgICAgICByZXR1cm4ganNvbi5sb2FkcyhzZWxmLnRleHQpCi0KLQotY2xhc3Mg
Rmxhc2tUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgVVJMID0gZidodHRwOi8vbG9j
YWxob3N0OntGbGFza1Rlc3RDb250ZXh0LlBPUlR9JwotCi0gICAgX2RyaXZlciA9IE5vbmUKLSAg
ICBfY2FjaGVkX2RyaXZlciA9IEZhbHNlCi0gICAgX3ByaW50ZWRfd2Vic2VydmVyX3dhcm5pbmcg
PSBGYWxzZQotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIGRyaXZlcihjbHMpOgotICAgICAg
ICBpZiBjbHMuX2NhY2hlZF9kcml2ZXI6Ci0gICAgICAgICAgICByZXR1cm4gY2xzLl9kcml2ZXIK
LQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXN1bHQgPSB3ZWJkcml2ZXIuU2FmYXJpKCkK
LSAgICAgICAgICAgIHJlc3VsdC5nZXQoJ2Fib3V0OmJsYW5rJykKLSAgICAgICAgICAgIGF0ZXhp
dC5yZWdpc3RlcihyZXN1bHQuY2xvc2UpCi0gICAgICAgICAgICBjbHMuX2RyaXZlciA9IHJlc3Vs
dAotICAgICAgICBleGNlcHQgV2ViRHJpdmVyRXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICBw
cmludChlLm1zZykKLQotICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgICAgICBw
cmludCgnU2VsZW5pdW0gaXMgbm90IGluc3RhbGxlZCwgcnVuIFwncGlwIGluc3RhbGwgc2VsZW5p
dW1cJycpCi0KLSAgICAgICAgY2xzLl9jYWNoZWRfZHJpdmVyID0gVHJ1ZQotICAgICAgICByZXR1
cm4gY2xzLl9kcml2ZXIKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBzZXR1cF93ZWJzZXJ2
ZXIoY2xzLCBhcHAsICoqa3dhcmdzKToKLSAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJv
cigpCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgY29tYmluZShjbHMsICphcmdzKToKLSAg
ICAgICAgZGVmIGRlY29yYXRvcihmdW5jKToKLSAgICAgICAgICAgIGZvciBlbG0gaW4gcmV2ZXJz
ZWQoYXJncyk6Ci0gICAgICAgICAgICAgICAgZnVuYyA9IGVsbShmdW5jKQotICAgICAgICAgICAg
cmV0dXJuIGZ1bmMKLQotICAgICAgICByZXR1cm4gZGVjb3JhdG9yCi0KLSAgICBAY2xhc3NtZXRo
b2QKLSAgICBkZWYgcnVuX3dpdGhfcmVhbF93ZWJzZXJ2ZXIoY2xzKToKLSAgICAgICAgZGVmIGRl
Y29yYXRvcihtZXRob2QpOgotICAgICAgICAgICAgZGVmIHJlYWxfbWV0aG9kKHZhbCwgbWV0aG9k
PW1ldGhvZCwgKiprd2FyZ3MpOgotICAgICAgICAgICAgICAgIHdpdGggRmxhc2tUZXN0Q29udGV4
dChsYW1iZGEgYXBwOiB2YWwuc2V0dXBfd2Vic2VydmVyKGFwcCwgKiprd2FyZ3MpKToKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIG1ldGhvZCh2YWwsIGNsaWVudD1yZXF1ZXN0cywgKiprd2Fy
Z3MpCi0gICAgICAgICAgICByZWFsX21ldGhvZC5fX25hbWVfXyA9IG1ldGhvZC5fX25hbWVfXwot
ICAgICAgICAgICAgcmV0dXJuIHJlYWxfbWV0aG9kCi0KLSAgICAgICAgcmV0dXJuIGNscy5jb21i
aW5lKAotICAgICAgICAgICAgdW5pdHRlc3Quc2tpcElmKG5vdCBpbnQob3MuZW52aXJvbi5nZXQo
J3dlYl9zZXJ2ZXInLCAnMCcpKSwgJ1dlYlNlcnZlciB0ZXN0cyBkaXNhYmxlZCcpLAotICAgICAg
ICAgICAgZGVjb3JhdG9yLAotICAgICAgICApCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYg
cnVuX3dpdGhfbW9ja193ZWJzZXJ2ZXIoY2xzKToKLSAgICAgICAgZGVmIGRlY29yYXRvcihtZXRo
b2QpOgotICAgICAgICAgICAgZGVmIHJlYWxfbWV0aG9kKHZhbCwgbWV0aG9kPW1ldGhvZCwgKipr
d2FyZ3MpOgotICAgICAgICAgICAgICAgIGFwcCA9IEZsYXNrKCd0ZXN0aW5nJykKLSAgICAgICAg
ICAgICAgICBhcHAucmVzcG9uc2VfY2xhc3MgPSBGbGFza1JlcXVlc3RzUmVzcG9uc2UKLSAgICAg
ICAgICAgICAgICBhcHAuY29uZmlnWydURVNUSU5HJ10gPSBUcnVlCi0gICAgICAgICAgICAgICAg
dmFsLnNldHVwX3dlYnNlcnZlcihhcHAsICoqa3dhcmdzKQotICAgICAgICAgICAgICAgIGFwcC5h
ZGRfdXJsX3J1bGUoJy9fX2hlYWx0aCcsICdoZWFsdGgnLCBsYW1iZGE6ICdvaycsIG1ldGhvZHM9
KCdHRVQnLCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1ldGhvZCh2YWwsIGNsaWVudD1hcHAu
dGVzdF9jbGllbnQoKSwgKiprd2FyZ3MpCi0KLSAgICAgICAgICAgIHJlYWxfbWV0aG9kLl9fbmFt
ZV9fID0gbWV0aG9kLl9fbmFtZV9fCi0gICAgICAgICAgICByZXR1cm4gcmVhbF9tZXRob2QKLQot
ICAgICAgICByZXR1cm4gZGVjb3JhdG9yCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgcnVu
X3dpdGhfd2Vic2VydmVyKGNscyk6Ci0gICAgICAgIGlmIGludChvcy5lbnZpcm9uLmdldCgnd2Vi
X3NlcnZlcicsICcwJykgYW5kIGludChvcy5lbnZpcm9uLmdldCgnc2xvd190ZXN0cycsICcwJykp
KToKLSAgICAgICAgICAgIGlmIG5vdCBjbHMuX3ByaW50ZWRfd2Vic2VydmVyX3dhcm5pbmc6Ci0g
ICAgICAgICAgICAgICAgcHJpbnQoJ1VzaW5nIHJlYWwgd2ViIHNlcnZlciwgcmVxdWVzdHMgcm91
dGVkIHRocm91Z2ggcmVxdWVzdHMgbGlicmFyeScpCi0gICAgICAgICAgICBjbHMuX3ByaW50ZWRf
d2Vic2VydmVyX3dhcm5pbmcgPSBUcnVlCi0gICAgICAgICAgICByZXR1cm4gY2xzLnJ1bl93aXRo
X3JlYWxfd2Vic2VydmVyKCkKLSAgICAgICAgaWYgbm90IGNscy5fcHJpbnRlZF93ZWJzZXJ2ZXJf
d2FybmluZzoKLSAgICAgICAgICAgIHByaW50KCdVc2luZyBtb2NrIHdlYiBzZXJ2ZXIsIHJlcXVl
c3RzIHJvdXRlZCB0aHJvdWdoIGZsYXNrIHRlc3RpbmcgZnJhbWV3b3JrJykKLSAgICAgICAgY2xz
Ll9wcmludGVkX3dlYnNlcnZlcl93YXJuaW5nID0gVHJ1ZQotICAgICAgICByZXR1cm4gY2xzLnJ1
bl93aXRoX21vY2tfd2Vic2VydmVyKCkKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBydW5f
d2l0aF9zZWxlbml1bShjbHMpOgotCi0gICAgICAgIGRlZiBkZWNvcmF0b3IobWV0aG9kKToKLSAg
ICAgICAgICAgIGRlZiByZWFsX21ldGhvZCh2YWwsIG1ldGhvZD1tZXRob2QsICoqa3dhcmdzKToK
LSAgICAgICAgICAgICAgICByZXR1cm4gbWV0aG9kKHZhbCwgZHJpdmVyPWNscy5kcml2ZXIoKSwg
Kiprd2FyZ3MpCi0gICAgICAgICAgICByZWFsX21ldGhvZC5fX25hbWVfXyA9IG1ldGhvZC5fX25h
bWVfXwotICAgICAgICAgICAgcmV0dXJuIHJlYWxfbWV0aG9kCi0KLSAgICAgICAgcmV0dXJuIGNs
cy5jb21iaW5lKAotICAgICAgICAgICAgY2xzLnJ1bl93aXRoX3JlYWxfd2Vic2VydmVyKCksCi0g
ICAgICAgICAgICB1bml0dGVzdC5za2lwSWYobm90IGludChvcy5lbnZpcm9uLmdldCgnc2VsZW5p
dW0nLCAnMCcpKSwgJ1NlbGVuaXVtIHRlc3RzIGRpc2FibGVkJyksCi0gICAgICAgICAgICB1bml0
dGVzdC5za2lwSWYobm90IGNscy5kcml2ZXIoKSwgJ1NlbGVuaXVtIG5vdCBhdmFpbGFibGUgZm9y
IHRlc3RpbmcnKSwKLSAgICAgICAgICAgIGRlY29yYXRvciwKLSAgICAgICAgKQpJbmRleDogVG9v
bHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvZmxhc2tfc3VwcG9ydC91dGlsLnB5Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2ZsYXNrX3N1cHBvcnQvdXRpbC5w
eQkocmV2aXNpb24gMjY1NTMxKQorKysgVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvZmxh
c2tfc3VwcG9ydC91dGlsLnB5CShub25leGlzdGVudCkKQEAgLTEsMTMxICswLDAgQEAKLSMgQ29w
eXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwot
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYCJBUyBJUyIgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUgotIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotIyBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1pbXBvcnQganNvbgotZnJvbSBmbGFz
ayBpbXBvcnQgYWJvcnQsIHJlcXVlc3QKLQotCi1jbGFzcyBGbGFza0pTT05FbmNvZGVyKGpzb24u
SlNPTkVuY29kZXIpOgotICAgICMgRmxhc2sncyBqc29uaWZ5IG9ubHkgYWNjZXB0cyBhIGRpY3Rp
b25hcnkgYW5kIGRvZXMgbm90IGFjY2VwdCBhIEpTT04gZW5jb2Rlci4gV2hlbiBvdmVycmlkaW5n
IHRoZSBkZWZhdWx0IEpTT04KLSAgICAjIGVuY29kZXIsIGVuY29kZXIuZGVmYXVsdCguLi4pIHdp
bGwgcmV0dXJuIGEgZGljdGlvbmFyeSB0byBiZSBzZXJpYWxpemVkLiBIb3dldmVyLCB0aGUgZGVm
YXVsdCBlbmNvZGVyIHdpbGwgcmFpc2UKLSAgICAjIGFuIGV4Y2VwdGlvbiBpZiBkZWZhdWx0KC4u
LikgaXMgY2FsbGVkIG9uIHByaW1hdGl2ZSBKU09OIHR5cGVzLiBJbXBsZW1lbnQgYSB2ZXJzaW9u
IG9mIHRoZSBkZWZhdWx0IGVuY29kZXIgd2hpY2gKLSAgICAjIHBhc3NlcyBwcmltYXRpdmUgSlNP
TiB0eXBlcyBiYWNrIHRvIHRoZSBjYWxsZXIuCi0gICAgZGVmIGRlZmF1bHQoc2VsZiwgb2JqKToK
LSAgICAgICAgaWYgaXNpbnN0YW5jZShvYmosIGRpY3QpOgotICAgICAgICAgICAgcmV0dXJuIHtr
ZXk6IHNlbGYuZGVmYXVsdCh2YWx1ZSkgZm9yIGtleSwgdmFsdWUgaW4gb2JqLml0ZW1zKCl9Ci0g
ICAgICAgIGlmIGlzaW5zdGFuY2Uob2JqLCBsaXN0KToKLSAgICAgICAgICAgIHJldHVybiBbc2Vs
Zi5kZWZhdWx0KHZhbHVlKSBmb3IgdmFsdWUgaW4gb2JqXQotICAgICAgICByZXR1cm4gb2JqCi0K
LQotY2xhc3MgQXNzZXJ0UmVxdWVzdChvYmplY3QpOgotICAgIEBjbGFzc21ldGhvZAotICAgIGRl
ZiBpc190eXBlKGNscywgc3VwcG9ydGVkX3JlcXVlc3RzPU5vbmUpOgotICAgICAgICBpZiBzdXBw
b3J0ZWRfcmVxdWVzdHMgaXMgTm9uZToKLSAgICAgICAgICAgIHN1cHBvcnRlZF9yZXF1ZXN0cyA9
IFsnR0VUJ10KLSAgICAgICAgaWYgbm90IHN1cHBvcnRlZF9yZXF1ZXN0czoKLSAgICAgICAgICAg
IGFib3J0KDUwMCwgZGVzY3JpcHRpb249J0VuZHBvaW50IGRvZXMgbm90IHN1cHBvcnQgYW55IHJl
cXVlc3RzJykKLSAgICAgICAgaWYgcmVxdWVzdC5tZXRob2Qgbm90IGluIHN1cHBvcnRlZF9yZXF1
ZXN0czoKLSAgICAgICAgICAgIGFib3J0KDQwNSwgZGVzY3JpcHRpb249J0VuZHBvaW50IG9ubHkg
c3VwcG9ydHMge30gcmVxdWVzdHMnLmZvcm1hdCgKLSAgICAgICAgICAgICAgICBzdXBwb3J0ZWRf
cmVxdWVzdHNbMF0gaWYgbGVuKHN1cHBvcnRlZF9yZXF1ZXN0cykgPT0gMSBlbHNlICcsICcuam9p
bihzdXBwb3J0ZWRfcmVxdWVzdHNbOi0xXSkgKyAnIGFuZCAnICsgc3VwcG9ydGVkX3JlcXVlc3Rz
Wy0xXSwKLSAgICAgICAgICAgICkpCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgbm9fcXVl
cnkoY2xzKToKLSAgICAgICAgaWYgcmVxdWVzdC5xdWVyeV9zdHJpbmc6Ci0gICAgICAgICAgICBh
Ym9ydCg0MDAsIGRlc2NyaXB0aW9uPSdRdWVyaWVzIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBlbmRw
b2ludCcpCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgcXVlcnlfa3dhcmdzX2VtcHR5KGNs
cywgKiprd2FyZ3MpOgotICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBrd2FyZ3MuaXRlbXMoKToK
LSAgICAgICAgICAgIGlmIHZhbHVlOgotICAgICAgICAgICAgICAgIGFib3J0KDQwMCwgZGVzY3Jp
cHRpb249ZiIne2tleX0nIG5vdCBzdXBwb3J0ZWQgaW4gcXVlcmllcyBieSB0aGlzIGVuZHBvaW50
IikKLQotCi1kZWYgcXVlcnlfYXNfa3dhcmdzKCk6Ci0gICAgZGVmIGRlY29yYXRvcihtZXRob2Qp
OgotICAgICAgICBkZWYgcmVhbF9tZXRob2QodmFsLCBtZXRob2Q9bWV0aG9kLCAqKmt3YXJncyk6
Ci0gICAgICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiByZXF1ZXN0LmFyZ3MudG9fZGljdChmbGF0
PUZhbHNlKS5pdGVtcygpOgotICAgICAgICAgICAgICAgIGlmIGtleSBpbiBrd2FyZ3M6Ci0gICAg
ICAgICAgICAgICAgICAgIGFib3J0KDQwMCwgZGVzY3JpcHRpb249Zid7a2V5fSBpcyBub3QgYSB2
YWxpZCBxdWVyeSBwYXJhbWV0ZXIgb24gdGhpcyBlbmRwb2ludCcpCi0gICAgICAgICAgICAgICAg
a3dhcmdzW2tleV0gPSB0dXBsZSh2YWx1ZSkKLSAgICAgICAgICAgIHJldHVybiBtZXRob2QodmFs
LCAqKmt3YXJncykKLQotICAgICAgICByZWFsX21ldGhvZC5fX25hbWVfXyA9IG1ldGhvZC5fX25h
bWVfXwotICAgICAgICByZXR1cm4gcmVhbF9tZXRob2QKLSAgICByZXR1cm4gZGVjb3JhdG9yCi0K
LQotZGVmIHF1ZXJ5X2FzX3N0cmluZygpOgotICAgIHF1ZXJ5ID0gJz8nCi0gICAgZm9yIGtleSwg
dmFsdWVzIGluIHJlcXVlc3QuYXJncy50b19kaWN0KGZsYXQ9RmFsc2UpLml0ZW1zKCk6Ci0gICAg
ICAgIGZvciB2YWx1ZSBpbiB2YWx1ZXM6Ci0gICAgICAgICAgICBxdWVyeSArPSBmJ3trZXl9PXt2
YWx1ZX0mJwotICAgIHJldHVybiBxdWVyeVs6LTFdCi0KLQotZGVmIGJvb2xlYW5fcXVlcnkoKmFy
Z3MpOgotCi0gICAgZGVmIGZ1bmMoc3RyaW5nKToKLSAgICAgICAgaWYgc3RyaW5nLmxvd2VyKCkg
aW4gWyd0cnVlJywgJ3llcyddOgotICAgICAgICAgICAgcmV0dXJuIFRydWUKLSAgICAgICAgdHJ5
OgotICAgICAgICAgICAgcmV0dXJuIGJvb2woaW50KHN0cmluZykpCi0gICAgICAgIGV4Y2VwdCBW
YWx1ZUVycm9yOgotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICByZXR1cm4gW2Z1bmMo
YXJnKSBmb3IgYXJnIGluIGFyZ3NdCi0KLQotZGVmIGxpbWl0X2Zvcl9xdWVyeShkZWZhdWx0X2xp
bWl0PTEwMCk6Ci0gICAgZGVmIGRlY29yYXRvcihtZXRob2QpOgotICAgICAgICBkZWYgcmVhbF9t
ZXRob2Qoc2VsZj1Ob25lLCBtZXRob2Q9bWV0aG9kLCBsaW1pdD1Ob25lLCAqKmt3YXJncyk6Ci0g
ICAgICAgICAgICBsaW1pdF90b191c2UgPSBkZWZhdWx0X2xpbWl0Ci0gICAgICAgICAgICBpZiBs
aW1pdDoKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIGxpbWl0X3Rv
X3VzZSA9IGludChsaW1pdFstMV0pCi0gICAgICAgICAgICAgICAgICAgIGlmIGxpbWl0X3RvX3Vz
ZSA8PSAwOgotICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigpCi0gICAg
ICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgIGFib3J0
KDQwMCwgZGVzY3JpcHRpb249J0xpbWl0IG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyJykKLSAg
ICAgICAgICAgIGlmIHNlbGY6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG1ldGhvZChzZWxmPXNl
bGYsIGxpbWl0PWxpbWl0X3RvX3VzZSwgKiprd2FyZ3MpCi0gICAgICAgICAgICByZXR1cm4gbWV0
aG9kKGxpbWl0PWxpbWl0X3RvX3VzZSwgKiprd2FyZ3MpCi0KLSAgICAgICAgcmVhbF9tZXRob2Qu
X19uYW1lX18gPSBtZXRob2QuX19uYW1lX18KLSAgICAgICAgcmV0dXJuIHJlYWxfbWV0aG9kCi0g
ICAgcmV0dXJuIGRlY29yYXRvcgotCi0KLWRlZiBjYWNoZV9mb3IoaG91cnM9MTIpOgotICAgIGRl
ZiBkZWNvcmF0b3IobWV0aG9kKToKLSAgICAgICAgZGVmIHJlYWxfbWV0aG9kKHNlbGY9Tm9uZSwg
bWV0aG9kPW1ldGhvZCwgKiprd2FyZ3MpOgotICAgICAgICAgICAgaWYgc2VsZjoKLSAgICAgICAg
ICAgICAgICByZXNwb25zZSA9IG1ldGhvZChzZWxmPXNlbGYsICoqa3dhcmdzKQotICAgICAgICAg
ICAgZWxzZToKLSAgICAgICAgICAgICAgICByZXNwb25zZSA9IG1ldGhvZCgqKmt3YXJncykKLSAg
ICAgICAgICAgIHJlc3BvbnNlLmhlYWRlcnMuYWRkKCdDYWNoZS1Db250cm9sJywgZidwdWJsaWMs
bWF4LWFnZT17aG91cnMgKiA2MCAqIDYwfScpCi0gICAgICAgICAgICByZXR1cm4gcmVzcG9uc2UK
LQotICAgICAgICByZWFsX21ldGhvZC5fX25hbWVfXyA9IG1ldGhvZC5fX25hbWVfXwotICAgICAg
ICByZXR1cm4gcmVhbF9tZXRob2QKLSAgICByZXR1cm4gZGVjb3JhdG9yCkluZGV4OiBUb29scy9y
ZXN1bHRzZGJweS9yZXN1bHRzZGJweS9mbGFza19zdXBwb3J0L3V0aWxfdW5pdHRlc3QucHkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvZmxhc2tfc3VwcG9ydC91
dGlsX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNjU1MzEpCisrKyBUb29scy9yZXN1bHRzZGJweS9y
ZXN1bHRzZGJweS9mbGFza19zdXBwb3J0L3V0aWxfdW5pdHRlc3QucHkJKG5vbmV4aXN0ZW50KQpA
QCAtMSw1MCArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMg
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
IyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECi0jIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECi0jIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSMgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTAotIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotIyBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLAotIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1p
bXBvcnQgdW5pdHRlc3QKLQotZnJvbSB3ZXJremV1Zy5leGNlcHRpb25zIGltcG9ydCBCYWRSZXF1
ZXN0Ci1mcm9tIHJlc3VsdHNkYnB5LmZsYXNrX3N1cHBvcnQudXRpbCBpbXBvcnQgYm9vbGVhbl9x
dWVyeSwgbGltaXRfZm9yX3F1ZXJ5Ci0KLQotY2xhc3MgVXRpbFRlc3QodW5pdHRlc3QuVGVzdENh
c2UpOgotCi0gICAgZGVmIHRlc3RfYm9vbGVhbl9xdWVyeShzZWxmKToKLSAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKGFsbChib29sZWFuX3F1ZXJ5KCdUcnVlJywgJ3RydWUnKSkpCi0gICAgICAgIHNl
bGYuYXNzZXJ0VHJ1ZShhbGwoYm9vbGVhbl9xdWVyeSgnWWVzJywgJ3llcycpKSkKLSAgICAgICAg
c2VsZi5hc3NlcnRUcnVlKGFsbChib29sZWFuX3F1ZXJ5KCcxJywgJzEwMCcpKSkKLQotICAgICAg
ICBzZWxmLmFzc2VydEZhbHNlKGFueShib29sZWFuX3F1ZXJ5KCdGYWxzZScsICdmYWxzZScpKSkK
LSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShhbnkoYm9vbGVhbl9xdWVyeSgnTm8nLCAnbm8nKSkp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYW55KGJvb2xlYW5fcXVlcnkoJzAnLCAnYW55IHN0
cmluZycpKSkKLQotICAgIGRlZiB0ZXN0X2xpbWl0X2RlY29yYXRvcihzZWxmKToKLSAgICAgICAg
QGxpbWl0X2Zvcl9xdWVyeSgpCi0gICAgICAgIGRlZiBmdW5jKGxpbWl0PU5vbmUpOgotICAgICAg
ICAgICAgcmV0dXJuIGxpbWl0Ci0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmdW5jKCksIDEw
MCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmdW5jKGxpbWl0PVsnMTAnXSksIDEwKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGZ1bmMobGltaXQ9WycxMCcsICcxJ10pLCAxKQotICAgICAg
ICBzZWxmLmFzc2VydFJhaXNlcyhCYWRSZXF1ZXN0LCBmdW5jLCBsaW1pdD1bJ3N0cmluZyddKQot
ICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhCYWRSZXF1ZXN0LCBmdW5jLCBsaW1pdD1bJzAnXSkK
LSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQmFkUmVxdWVzdCwgZnVuYywgbGltaXQ9WyctMSdd
KQpJbmRleDogVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvX19pbml0X18ucHkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQpJbmRleDogVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvYXJj
aGl2ZV9jb250ZXh0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNk
YnB5L21vZGVsL2FyY2hpdmVfY29udGV4dC5weQkocmV2aXNpb24gMjY1NTMxKQorKysgVG9vbHMv
cmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvYXJjaGl2ZV9jb250ZXh0LnB5CShub25leGlz
dGVudCkKQEAgLTEsMjgzICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0j
IGFyZSBtZXQ6Ci0jIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAotIyBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
Ci0jIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSMgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIKLSMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLQotaW1wb3J0IGNhbGVuZGFyCi1pbXBvcnQgaW8KLWltcG9ydCBqc29uCi1pbXBv
cnQgdGltZQotaW1wb3J0IHppcGZpbGUKLQotZnJvbSBjYXNzYW5kcmEuY3FsZW5naW5lIGltcG9y
dCBjb2x1bW5zCi1mcm9tIGNhc3NhbmRyYS5jcWxlbmdpbmUubW9kZWxzIGltcG9ydCBNb2RlbAot
ZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgT3JkZXJlZERpY3QKLWZyb20gZGF0ZXRpbWUgaW1wb3J0
IGRhdGV0aW1lCi1mcm9tIHJlc3VsdHNkYnB5LmNvbnRyb2xsZXIuY29tbWl0IGltcG9ydCBDb21t
aXQKLWZyb20gcmVzdWx0c2RicHkuY29udHJvbGxlci5jb25maWd1cmF0aW9uIGltcG9ydCBDb25m
aWd1cmF0aW9uCi1mcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLmFyY2hpdmVyIGltcG9ydCBBcmNoaXZl
cgotZnJvbSByZXN1bHRzZGJweS5tb2RlbC5jYXNzYW5kcmFfYXJjaGl2ZXIgaW1wb3J0IENhc3Nh
bmRyYUFyY2hpdmVyCi1mcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLmNvbW1pdF9jb250ZXh0IGltcG9y
dCBDb21taXRDb250ZXh0Ci1mcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLmNvbmZpZ3VyYXRpb25fY29u
dGV4dCBpbXBvcnQgQ2x1c3RlcmVkQnlDb25maWd1cmF0aW9uCi1mcm9tIHJlc3VsdHNkYnB5Lm1v
ZGVsLnVwbG9hZF9jb250ZXh0IGltcG9ydCBVcGxvYWRDb250ZXh0Ci0KLQotZGVmIF9nZXRfdGlt
ZShpbnB1dF90aW1lKToKLSAgICBpZiBpc2luc3RhbmNlKGlucHV0X3RpbWUsIGRhdGV0aW1lKToK
LSAgICAgICAgcmV0dXJuIGNhbGVuZGFyLnRpbWVnbShpbnB1dF90aW1lLnRpbWV0dW1wbGUoKSkK
LSAgICBpZiBpbnB1dF90aW1lOgotICAgICAgICByZXR1cm4gaW50KGlucHV0X3RpbWUpCi0gICAg
cmV0dXJuIE5vbmUKLQotCi1jbGFzcyBBcmNoaXZlQ29udGV4dChvYmplY3QpOgotICAgIERFRkFV
TFRfTElNSVQgPSAxMAotICAgIE1FTU9SWV9MSU1JVCA9IDIgKiAxMDI0ICogMTAyNCAqIDEwMjQg
ICMgRG9uJ3QgYWxsb3cgbW9yZSB0aGFuIDIgZ2lncyBvZiBhcmNoaXZlcyBpbiBtZW1vcnkgYXQg
b25lIHRpbWUKLQotICAgIGNsYXNzIEFyY2hpdmVNZXRhRGF0YUJ5Q29tbWl0KENsdXN0ZXJlZEJ5
Q29uZmlndXJhdGlvbik6Ci0gICAgICAgIF9fdGFibGVfbmFtZV9fID0gJ2FyY2hpdmVfbWV0YWRh
dGFfYnlfY29tbWl0XzAyJwotICAgICAgICBzdWl0ZSA9IGNvbHVtbnMuVGV4dChwYXJ0aXRpb25f
a2V5PVRydWUsIHJlcXVpcmVkPVRydWUpCi0gICAgICAgIGJyYW5jaCA9IGNvbHVtbnMuVGV4dChw
YXJ0aXRpb25fa2V5PVRydWUsIHJlcXVpcmVkPVRydWUpCi0gICAgICAgIHV1aWQgPSBjb2x1bW5z
LkJpZ0ludChwcmltYXJ5X2tleT1UcnVlLCByZXF1aXJlZD1UcnVlLCBjbHVzdGVyaW5nX29yZGVy
PSdERVNDJykKLSAgICAgICAgc2RrID0gY29sdW1ucy5UZXh0KHByaW1hcnlfa2V5PVRydWUsIHJl
cXVpcmVkPVRydWUpCi0gICAgICAgIHN0YXJ0X3RpbWUgPSBjb2x1bW5zLkJpZ0ludChwcmltYXJ5
X2tleT1UcnVlLCByZXF1aXJlZD1UcnVlKQotICAgICAgICBkaWdlc3QgPSBjb2x1bW5zLlRleHQo
cmVxdWlyZWQ9VHJ1ZSkKLSAgICAgICAgc2l6ZSA9IGNvbHVtbnMuQmlnSW50KHJlcXVpcmVkPVRy
dWUpCi0KLSAgICAgICAgZGVmIHVucGFjayhzZWxmKToKLSAgICAgICAgICAgIHJldHVybiBkaWN0
KAotICAgICAgICAgICAgICAgIHV1aWQ9c2VsZi51dWlkLAotICAgICAgICAgICAgICAgIHN0YXJ0
X3RpbWU9c2VsZi5zdGFydF90aW1lLAotICAgICAgICAgICAgICAgIGRpZ2VzdD1zZWxmLmRpZ2Vz
dCwKLSAgICAgICAgICAgICAgICBzaXplPXNlbGYuc2l6ZSwKLSAgICAgICAgICAgICkKLQotICAg
IEBjbGFzc21ldGhvZAotICAgIGRlZiBhc3NlcnRfemlwZmlsZShjbHMsIGFyY2hpdmUpOgotICAg
ICAgICBpZiBub3QgaXNpbnN0YW5jZShhcmNoaXZlLCBpby5CeXRlc0lPKToKLSAgICAgICAgICAg
IHJhaXNlIFR5cGVFcnJvcihmJ0FyY2hpdmUgZXhwZWN0ZWQge2lvLkJ5dGVzSU99LCBnb3Qge3R5
cGUoYXJjaGl2ZSl9IGluc3RlYWQnKQotICAgICAgICBpZiBub3QgemlwZmlsZS5pc196aXBmaWxl
KGFyY2hpdmUpOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKGYnQXJjaGl2ZSBpcyBub3Qg
YSB6aXBmaWxlJykKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBvcGVuX3ppcGZpbGUoY2xz
LCBhcmNoaXZlKToKLSAgICAgICAgY2xzLmFzc2VydF96aXBmaWxlKGFyY2hpdmUpCi0gICAgICAg
IHJldHVybiB6aXBmaWxlLlppcEZpbGUoYXJjaGl2ZSwgbW9kZT0ncicpCi0KLSAgICBkZWYgX19p
bml0X18oc2VsZiwgY29uZmlndXJhdGlvbl9jb250ZXh0LCBjb21taXRfY29udGV4dCwgdHRsX3Nl
Y29uZHM9Tm9uZSk6Ci0gICAgICAgIHNlbGYuY29uZmlndXJhdGlvbl9jb250ZXh0ID0gY29uZmln
dXJhdGlvbl9jb250ZXh0Ci0gICAgICAgIHNlbGYuY29tbWl0X2NvbnRleHQgPSBjb21taXRfY29u
dGV4dAotICAgICAgICBzZWxmLmNhc3NhbmRyYSA9IHNlbGYuY29uZmlndXJhdGlvbl9jb250ZXh0
LmNhc3NhbmRyYQotICAgICAgICBzZWxmLmFyY2hpdmVyID0gQ2Fzc2FuZHJhQXJjaGl2ZXIoc2Vs
Zi5jYXNzYW5kcmEpCi0gICAgICAgIHNlbGYudHRsX3NlY29uZHMgPSB0dGxfc2Vjb25kcwotCi0g
ICAgICAgIHdpdGggc2VsZjoKLSAgICAgICAgICAgIHNlbGYuY2Fzc2FuZHJhLmNyZWF0ZV90YWJs
ZShzZWxmLkFyY2hpdmVNZXRhRGF0YUJ5Q29tbWl0KQotICAgICAgICAgICAgc2VsZi5jYXNzYW5k
cmEuY3JlYXRlX3RhYmxlKFVwbG9hZENvbnRleHQuU3VpdGVzQnlDb25maWd1cmF0aW9uKQotCi0g
ICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKLSAgICAgICAgc2VsZi5jb25maWd1cmF0aW9uX2NvbnRl
eHQuX19lbnRlcl9fKCkKLSAgICAgICAgc2VsZi5jb21taXRfY29udGV4dC5fX2VudGVyX18oKQot
ICAgICAgICBzZWxmLmFyY2hpdmVyLl9fZW50ZXJfXygpCi0KLSAgICBkZWYgX19leGl0X18oc2Vs
ZiwgKmFyZ3MsICoqa3dhcmdzKToKLSAgICAgICAgc2VsZi5jb21taXRfY29udGV4dC5fX2V4aXRf
XygqYXJncywgKiprd2FyZ3MpCi0gICAgICAgIHNlbGYuY29uZmlndXJhdGlvbl9jb250ZXh0Ll9f
ZXhpdF9fKCphcmdzLCAqKmt3YXJncykKLSAgICAgICAgc2VsZi5hcmNoaXZlci5fX2V4aXRfXygq
YXJncywgKiprd2FyZ3MpCi0KLSAgICBkZWYgcmVnaXN0ZXIoc2VsZiwgYXJjaGl2ZSwgY29uZmln
dXJhdGlvbiwgY29tbWl0cywgc3VpdGUsIHRpbWVzdGFtcD1Ob25lKToKLSAgICAgICAgc2VsZi5h
c3NlcnRfemlwZmlsZShhcmNoaXZlKQotICAgICAgICB0aW1lc3RhbXAgPSBfZ2V0X3RpbWUodGlt
ZXN0YW1wKSBvciB0aW1lLnRpbWUoKQotCi0gICAgICAgIHdpdGggc2VsZjoKLSAgICAgICAgICAg
IHV1aWQgPSBzZWxmLmNvbW1pdF9jb250ZXh0LnV1aWRfZm9yX2NvbW1pdHMoY29tbWl0cykKLSAg
ICAgICAgICAgIHR0bCA9IGludCgodXVpZCAvLyBDb21taXQuVElNRVNUQU1QX1RPX1VVSURfTVVM
VElQTElFUikgKyBzZWxmLnR0bF9zZWNvbmRzIC0gdGltZS50aW1lKCkpIGlmIHNlbGYudHRsX3Nl
Y29uZHMgZWxzZSBOb25lCi0KLSAgICAgICAgICAgIGZvciBicmFuY2ggaW4gc2VsZi5jb21taXRf
Y29udGV4dC5icmFuY2hfa2V5c19mb3JfY29tbWl0cyhjb21taXRzKToKLSAgICAgICAgICAgICAg
ICBzZWxmLmNvbmZpZ3VyYXRpb25fY29udGV4dC5yZWdpc3Rlcl9jb25maWd1cmF0aW9uKGNvbmZp
Z3VyYXRpb24sIGJyYW5jaD1icmFuY2gsIHRpbWVzdGFtcD10aW1lc3RhbXApCi0KLSAgICAgICAg
ICAgICAgICBzZWxmLmNvbmZpZ3VyYXRpb25fY29udGV4dC5pbnNlcnRfcm93X3dpdGhfY29uZmln
dXJhdGlvbigKLSAgICAgICAgICAgICAgICAgICAgVXBsb2FkQ29udGV4dC5TdWl0ZXNCeUNvbmZp
Z3VyYXRpb24uX190YWJsZV9uYW1lX18sIGNvbmZpZ3VyYXRpb24sIHN1aXRlPXN1aXRlLCBicmFu
Y2g9YnJhbmNoLCB0dGw9dHRsLAotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICAgICBk
aWdlc3QgPSBzZWxmLmFyY2hpdmVyLnNhdmUoYXJjaGl2ZSwgcmV0YWluX2Zvcj10dGwpCi0KLSAg
ICAgICAgICAgICAgICBzZWxmLmNvbmZpZ3VyYXRpb25fY29udGV4dC5pbnNlcnRfcm93X3dpdGhf
Y29uZmlndXJhdGlvbigKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5BcmNoaXZlTWV0YURhdGFC
eUNvbW1pdC5fX3RhYmxlX25hbWVfXywgY29uZmlndXJhdGlvbj1jb25maWd1cmF0aW9uLCBzdWl0
ZT1zdWl0ZSwKLSAgICAgICAgICAgICAgICAgICAgYnJhbmNoPWJyYW5jaCwgdXVpZD11dWlkLCB0
dGw9dHRsLAotICAgICAgICAgICAgICAgICAgICBzZGs9Y29uZmlndXJhdGlvbi5zZGsgb3IgJz8n
LCBzdGFydF90aW1lPXRpbWVzdGFtcCwKLSAgICAgICAgICAgICAgICAgICAgZGlnZXN0PWRpZ2Vz
dCwKLSAgICAgICAgICAgICAgICAgICAgc2l6ZT1BcmNoaXZlci5hcmNoaXZlX3NpemUoYXJjaGl2
ZSksCi0gICAgICAgICAgICAgICAgKQotCi0gICAgZGVmIGZpbmRfYXJjaGl2ZSgKLSAgICAgICAg
ICAgIHNlbGYsIGNvbmZpZ3VyYXRpb25zPU5vbmUsIHN1aXRlPU5vbmUsIHJlY2VudD1UcnVlLAot
ICAgICAgICAgICAgYnJhbmNoPU5vbmUsIGJlZ2luPU5vbmUsIGVuZD1Ob25lLAotICAgICAgICAg
ICAgYmVnaW5fcXVlcnlfdGltZT1Ob25lLCBlbmRfcXVlcnlfdGltZT1Ob25lLAotICAgICAgICAg
ICAgbGltaXQ9REVGQVVMVF9MSU1JVCwKLSAgICApOgotICAgICAgICBpZiBub3QgY29uZmlndXJh
dGlvbnM6Ci0gICAgICAgICAgICBjb25maWd1cmF0aW9ucyA9IFtdCi0gICAgICAgIGlmIG5vdCBp
c2luc3RhbmNlKHN1aXRlLCBzdHIpOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKGYnRXhw
ZWN0ZWQgdHlwZSB7c3RyfSwgZ290IHt0eXBlKHN1aXRlKX0nKQotCi0gICAgICAgIHdpdGggc2Vs
ZjoKLSAgICAgICAgICAgIG1ldGFkYXRhX2J5X2NvbmZpZyA9IHt9Ci0gICAgICAgICAgICBmb3Ig
Y29uZmlndXJhdGlvbiBpbiBjb25maWd1cmF0aW9uczoKLSAgICAgICAgICAgICAgICBtZXRhZGF0
YV9ieV9jb25maWcudXBkYXRlKHtjb25maWc6IFt2YWx1ZS51bnBhY2soKSBmb3IgdmFsdWUgaW4g
dmFsdWVzXSBmb3IgY29uZmlnLCB2YWx1ZXMgaW4gc2VsZi5jb25maWd1cmF0aW9uX2NvbnRleHQu
c2VsZWN0X2Zyb21fdGFibGVfd2l0aF9jb25maWd1cmF0aW9ucygKLSAgICAgICAgICAgICAgICAg
ICAgc2VsZi5BcmNoaXZlTWV0YURhdGFCeUNvbW1pdC5fX3RhYmxlX25hbWVfXywgY29uZmlndXJh
dGlvbnM9W2NvbmZpZ3VyYXRpb25dLCByZWNlbnQ9cmVjZW50LAotICAgICAgICAgICAgICAgICAg
ICBzdWl0ZT1zdWl0ZSwgc2RrPWNvbmZpZ3VyYXRpb24uc2RrLCBicmFuY2g9YnJhbmNoIG9yIHNl
bGYuY29tbWl0X2NvbnRleHQuREVGQVVMVF9CUkFOQ0hfS0VZLAotICAgICAgICAgICAgICAgICAg
ICB1dWlkX19ndGU9Q29tbWl0Q29udGV4dC5jb252ZXJ0X3RvX3V1aWQoYmVnaW4pLAotICAgICAg
ICAgICAgICAgICAgICB1dWlkX19sdGU9Q29tbWl0Q29udGV4dC5jb252ZXJ0X3RvX3V1aWQoZW5k
LCBDb21taXRDb250ZXh0LnRpbWVzdGFtcF90b191dWlkKCkpLAotICAgICAgICAgICAgICAgICAg
ICBzdGFydF90aW1lX19ndGU9X2dldF90aW1lKGJlZ2luX3F1ZXJ5X3RpbWUpLCBzdGFydF90aW1l
X19sdGU9X2dldF90aW1lKGVuZF9xdWVyeV90aW1lKSwKLSAgICAgICAgICAgICAgICAgICAgbGlt
aXQ9bGltaXQsCi0gICAgICAgICAgICAgICAgKS5pdGVtcygpfSkKLQotICAgICAgICAgICAgbWVt
b3J5X3VzZWQgPSAwCi0gICAgICAgICAgICBmb3IgdmFsdWVzIGluIG1ldGFkYXRhX2J5X2NvbmZp
Zy52YWx1ZXMoKToKLSAgICAgICAgICAgICAgICBmb3IgdmFsdWUgaW4gdmFsdWVzOgotICAgICAg
ICAgICAgICAgICAgICBpZiBub3QgdmFsdWUuZ2V0KCdkaWdlc3QnKToKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgICAgICAgICAgICAgbWVtb3J5X3VzZWQgKz0g
dmFsdWUuZ2V0KCdzaXplJywgMCkKLSAgICAgICAgICAgICAgICAgICAgaWYgbWVtb3J5X3VzZWQg
PiBzZWxmLk1FTU9SWV9MSU1JVDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRp
bWVFcnJvcignSGl0IHNvZnQtbWVtb3J5IGNhcCB3aGVuIGZldGNoaW5nIGFyY2hpdmVzLCBhYm9y
dGluZycpCi0KLSAgICAgICAgICAgIGFyY2hpdmVfYnlfZGlnZXN0ID0ge30KLSAgICAgICAgICAg
IHJlc3VsdCA9IHt9Ci0gICAgICAgICAgICBmb3IgY29uZmlnLCB2YWx1ZXMgaW4gbWV0YWRhdGFf
YnlfY29uZmlnLml0ZW1zKCk6Ci0gICAgICAgICAgICAgICAgZm9yIHZhbHVlIGluIHZhbHVlczoK
LSAgICAgICAgICAgICAgICAgICAgaWYgbm90IHZhbHVlLmdldCgnZGlnZXN0Jyk6Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgICAgICAgICAgICAgIGlmIG5vdCBh
cmNoaXZlX2J5X2RpZ2VzdC5nZXQodmFsdWUuZ2V0KCdkaWdlc3QnKSk6Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBhcmNoaXZlID0gc2VsZi5hcmNoaXZlci5yZXRyaWV2ZSh2YWx1ZS5nZXQoJ2Rp
Z2VzdCcpLCB2YWx1ZS5nZXQoJ3NpemUnLCBOb25lKSkKLSAgICAgICAgICAgICAgICAgICAgICAg
IGlmIG5vdCBhcmNoaXZlOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0g
ICAgICAgICAgICAgICAgICAgICAgICBhcmNoaXZlX2J5X2RpZ2VzdFt2YWx1ZS5nZXQoJ2RpZ2Vz
dCcpXSA9IGFyY2hpdmUKLQotICAgICAgICAgICAgICAgICAgICBhcmNoaXZlX2J5X2RpZ2VzdC5n
ZXQodmFsdWUuZ2V0KCdkaWdlc3QnKSkuc2VlaygwKQotICAgICAgICAgICAgICAgICAgICByZXN1
bHQuc2V0ZGVmYXVsdChjb25maWcsIFtdKQotICAgICAgICAgICAgICAgICAgICByZXN1bHRbY29u
ZmlnXS5hcHBlbmQoZGljdCgKLSAgICAgICAgICAgICAgICAgICAgICAgIGFyY2hpdmU9YXJjaGl2
ZV9ieV9kaWdlc3QuZ2V0KHZhbHVlLmdldCgnZGlnZXN0JykpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgZGlnZXN0PXZhbHVlLmdldCgnZGlnZXN0JyksCi0gICAgICAgICAgICAgICAgICAgICAg
ICB1dWlkPXZhbHVlWyd1dWlkJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF90aW1l
PXZhbHVlWydzdGFydF90aW1lJ10sCi0gICAgICAgICAgICAgICAgICAgICkpCi0KLSAgICAgICAg
ICAgIHJldHVybiByZXN1bHQKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBfZmlsZXNfZm9y
X2FyY2hpdmUoY2xzLCBhcmNoaXZlKToKLSAgICAgICAgbWFzdGVyID0gTm9uZQotICAgICAgICBm
aWxlcyA9IHNldCgpCi0KLSAgICAgICAgYXJjaGl2ZV9saXN0ID0gW10KLSAgICAgICAgaXNfbWFz
dGVyZWQgPSBUcnVlCi0gICAgICAgIGZvciBpdGVtIGluIGFyY2hpdmUubmFtZWxpc3QoKToKLSAg
ICAgICAgICAgIGlmIGl0ZW0uc3RhcnRzd2l0aCgnX18nKToKLSAgICAgICAgICAgICAgICBjb250
aW51ZQotCi0gICAgICAgICAgICBpZiBub3QgbWFzdGVyOgotICAgICAgICAgICAgICAgIG1hc3Rl
ciA9IGl0ZW0KLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgaWYgaXNfbWFzdGVy
ZWQgYW5kIG5vdCBpdGVtLnN0YXJ0c3dpdGgobWFzdGVyKToKLSAgICAgICAgICAgICAgICAgICAg
aXNfbWFzdGVyZWQgPSBGYWxzZQotICAgICAgICAgICAgICAgICAgICBhcmNoaXZlX2xpc3QuYXBw
ZW5kKG1hc3RlcikKLSAgICAgICAgICAgICAgICBhcmNoaXZlX2xpc3QuYXBwZW5kKGl0ZW0pCi0K
LSAgICAgICAgaWYgbm90IGlzX21hc3RlcmVkOgotICAgICAgICAgICAgbWFzdGVyID0gTm9uZQot
ICAgICAgICBmb3IgaXRlbSBpbiBhcmNoaXZlX2xpc3Q6Ci0gICAgICAgICAgICBpZiBtYXN0ZXI6
Ci0gICAgICAgICAgICAgICAgaXRlbV90b19hZGQgPSBpdGVtW2xlbihtYXN0ZXIpOl0KLSAgICAg
ICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgaXRlbV90b19hZGQgPSBpdGVtCi0KLSAgICAg
ICAgICAgIGZpbGVzLmFkZChpdGVtX3RvX2FkZCkKLSAgICAgICAgICAgIGJ1aWx0ID0gJycKLSAg
ICAgICAgICAgIGZvciBwYXJ0aWFsIGluIGl0ZW1fdG9fYWRkLnNwbGl0KCcvJylbOi0xXToKLSAg
ICAgICAgICAgICAgICBidWlsdCA9IGYne2J1aWx0fXtwYXJ0aWFsfS8nCi0gICAgICAgICAgICAg
ICAgZmlsZXMuYWRkKGJ1aWx0KQotCi0gICAgICAgIHJldHVybiBtYXN0ZXIsIHNvcnRlZChbKmZp
bGVzXSkKLQotICAgIGRlZiBscyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgotICAgICAgICBjYW5k
aWRhdGVzID0gc2VsZi5maW5kX2FyY2hpdmUoKmFyZ3MsICoqa3dhcmdzKQotICAgICAgICByZXN1
bHQgPSB7fQotICAgICAgICBmb3IgY29uZmlnLCBhcmNoaXZlcyBpbiBjYW5kaWRhdGVzLml0ZW1z
KCk6Ci0gICAgICAgICAgICByZXN1bHRbY29uZmlnXSA9IFtdCi0gICAgICAgICAgICBmb3IgYXJj
aGl2ZSBpbiBhcmNoaXZlczoKLSAgICAgICAgICAgICAgICByZXN1bHRbY29uZmlnXS5hcHBlbmQo
ZGljdCgKLSAgICAgICAgICAgICAgICAgICAgdXVpZD1hcmNoaXZlWyd1dWlkJ10sCi0gICAgICAg
ICAgICAgICAgICAgIHN0YXJ0X3RpbWU9YXJjaGl2ZVsnc3RhcnRfdGltZSddLAotICAgICAgICAg
ICAgICAgICAgICBmaWxlcz1zZXQoKSwKLSAgICAgICAgICAgICAgICApKQotCi0gICAgICAgICAg
ICAgICAgd2l0aCBzZWxmLm9wZW5femlwZmlsZShhcmNoaXZlWydhcmNoaXZlJ10pIGFzIHVucGFj
a2VkOgotICAgICAgICAgICAgICAgICAgICBfLCByZXN1bHRbY29uZmlnXVstMV1bJ2ZpbGVzJ10g
PSBzZWxmLl9maWxlc19mb3JfYXJjaGl2ZSh1bnBhY2tlZCkKLQotICAgICAgICByZXR1cm4gcmVz
dWx0Ci0KLSAgICBkZWYgZmlsZShzZWxmLCBwYXRoPU5vbmUsICoqa3dhcmdzKToKLSAgICAgICAg
Y2FuZGlkYXRlcyA9IHNlbGYuZmluZF9hcmNoaXZlKCoqa3dhcmdzKQotICAgICAgICByZXN1bHQg
PSB7fQotICAgICAgICBmb3IgY29uZmlnLCBhcmNoaXZlcyBpbiBjYW5kaWRhdGVzLml0ZW1zKCk6
Ci0gICAgICAgICAgICByZXN1bHRbY29uZmlnXSA9IFtdCi0gICAgICAgICAgICBmb3IgYXJjaGl2
ZSBpbiBhcmNoaXZlczoKLSAgICAgICAgICAgICAgICBmaWxlID0gTm9uZQotCi0gICAgICAgICAg
ICAgICAgd2l0aCBzZWxmLm9wZW5femlwZmlsZShhcmNoaXZlWydhcmNoaXZlJ10pIGFzIHVucGFj
a2VkOgotICAgICAgICAgICAgICAgICAgICBtYXN0ZXIsIGZpbGVzID0gc2VsZi5fZmlsZXNfZm9y
X2FyY2hpdmUodW5wYWNrZWQpCi0gICAgICAgICAgICAgICAgICAgIGlmIG5vdCBwYXRoOgotICAg
ICAgICAgICAgICAgICAgICAgICAgZmlsZSA9IGZpbGVzCi0gICAgICAgICAgICAgICAgICAgIGVs
aWYgcGF0aFstMV0gPT0gJy8nOgotICAgICAgICAgICAgICAgICAgICAgICAgZmlsZSA9IFtmW2xl
bihwYXRoKTpdIGZvciBmIGluIGZpbGVzIGlmIGYuc3RhcnRzd2l0aChwYXRoKV0KLSAgICAgICAg
ICAgICAgICAgICAgZWxpZiBwYXRoIGluIGZpbGVzOgotICAgICAgICAgICAgICAgICAgICAgICAg
ZmlsZSA9IHVucGFja2VkLm9wZW4oJ3t9e30nLmZvcm1hdChtYXN0ZXIgb3IgJycsIHBhdGgpKS5y
ZWFkKCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5ID0gZic/e2NvbmZpZy50b19xdWVy
eSgpfScKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGxlbihxdWVyeSkgPiAxOgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5ICs9ICcmJwotICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgYXJjaGl2ZVsndXVpZCddOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5
ICs9IGYidXVpZD17YXJjaGl2ZVsndXVpZCddfSYiCi0gICAgICAgICAgICAgICAgICAgICAgICBp
ZiBhcmNoaXZlWydzdGFydF90aW1lJ106Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVl
cnkgKz0gZiJhZnRlcl90aW1lPXthcmNoaXZlWydzdGFydF90aW1lJ119JmJlZm9yZV90aW1lPXth
cmNoaXZlWydzdGFydF90aW1lJ119JiIKLQotICAgICAgICAgICAgICAgICAgICAgICAgcXVlcnkg
PSBxdWVyeVs6LTFdCi0KLSAgICAgICAgICAgICAgICAgICAgICAgICMgSWYgd2UgZmluZCByZWZl
cmVuY2VzIHRvIG90aGVyIGZpbGVzIGluIHRoZSBhcmNoaXZlLCB3ZSBuZWVkIHRvIHJlcGxhY2Ug
dGhvc2UgcmVmZXJlbmNlcwotICAgICAgICAgICAgICAgICAgICAgICAgIyB3aXRoIHJlZmVyZW5j
ZXMgdGhhdCBpbmNsdWRlIHRoZSBxdWVyeQotICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50
X3BhdGggPSAnLycuam9pbihwYXRoLnNwbGl0KCcvJylbOi0xXSkKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGZvciBmIGluIGZpbGVzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGZb
LTFdID09ICcvJyBvciBmID09IHBhdGggb3Igbm90IHF1ZXJ5OgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGYu
c3RhcnRzd2l0aChwYXJlbnRfcGF0aCk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZpbGUgPSBmaWxlLnJlcGxhY2UoZltsZW4ocGFyZW50X3BhdGgpOl0uZW5jb2RlKCd1dGYtOCcp
LCBmJ3tmW2xlbihwYXJlbnRfcGF0aCk6XX17cXVlcnl9Jy5lbmNvZGUoJ3V0Zi04JykpCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZmlsZSA9IGZpbGUucmVwbGFjZShmLmVuY29kZSgndXRmLTgnKSwgZid7Zn17cXVlcnl9
Jy5lbmNvZGUoJ3V0Zi04JykpCi0KLQotICAgICAgICAgICAgICAgIGlmIGZpbGU6Ci0gICAgICAg
ICAgICAgICAgICAgIHJlc3VsdFtjb25maWddLmFwcGVuZChkaWN0KAotICAgICAgICAgICAgICAg
ICAgICAgICAgdXVpZD1hcmNoaXZlWyd1dWlkJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICBz
dGFydF90aW1lPWFyY2hpdmVbJ3N0YXJ0X3RpbWUnXSwKLSAgICAgICAgICAgICAgICAgICAgICAg
IGZpbGU9ZmlsZSwKLSAgICAgICAgICAgICAgICAgICAgKSkKLQotICAgICAgICByZXR1cm4gcmVz
dWx0CkluZGV4OiBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9hcmNoaXZlX2Nv
bnRleHRfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0
c2RicHkvbW9kZWwvYXJjaGl2ZV9jb250ZXh0X3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNjU1MzEp
CisrKyBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9hcmNoaXZlX2NvbnRleHRf
dW5pdHRlc3QucHkJKG5vbmV4aXN0ZW50KQpAQCAtMSwxMjggKzAsMCBAQAotIyBDb3B5cmlnaHQg
KEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jCi0jIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SCi0jIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSMg
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIKLSMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSMgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotaW1wb3J0IGJhc2U2NAotaW1wb3J0IGlvCi1pbXBv
cnQgbW9jawotaW1wb3J0IG9zCi1pbXBvcnQgemlwZmlsZQotCi1mcm9tIGZha2VyZWRpcyBpbXBv
cnQgRmFrZVN0cmljdFJlZGlzCi1mcm9tIHJlZGlzIGltcG9ydCBTdHJpY3RSZWRpcwotZnJvbSBy
ZXN1bHRzZGJweS5jb250cm9sbGVyLmNvbmZpZ3VyYXRpb24gaW1wb3J0IENvbmZpZ3VyYXRpb24K
LWZyb20gcmVzdWx0c2RicHkubW9kZWwuY2Fzc2FuZHJhX2NvbnRleHQgaW1wb3J0IENhc3NhbmRy
YUNvbnRleHQKLWZyb20gcmVzdWx0c2RicHkubW9kZWwubW9ja19jYXNzYW5kcmFfY29udGV4dCBp
bXBvcnQgTW9ja0Nhc3NhbmRyYUNvbnRleHQKLWZyb20gcmVzdWx0c2RicHkubW9kZWwubW9ja19t
b2RlbF9mYWN0b3J5IGltcG9ydCBNb2NrTW9kZWxGYWN0b3J5Ci1mcm9tIHJlc3VsdHNkYnB5Lm1v
ZGVsLm1vY2tfcmVwb3NpdG9yeSBpbXBvcnQgTW9ja1NWTlJlcG9zaXRvcnkKLWZyb20gcmVzdWx0
c2RicHkubW9kZWwud2FpdF9mb3JfZG9ja2VyX3Rlc3RfY2FzZSBpbXBvcnQgV2FpdEZvckRvY2tl
clRlc3RDYXNlCi0KLQotY2xhc3MgQXJjaGl2ZUNvbnRleHRUZXN0KFdhaXRGb3JEb2NrZXJUZXN0
Q2FzZSk6Ci0gICAgS0VZU1BBQ0UgPSAnYXJjaGl2ZV90ZXN0X2tleXNwYWNlJwotCi0gICAgZGVm
IGluaXRfZGF0YWJhc2Uoc2VsZiwgcmVkaXM9U3RyaWN0UmVkaXMsIGNhc3NhbmRyYT1DYXNzYW5k
cmFDb250ZXh0LCBjb25maWd1cmF0aW9uPUNvbmZpZ3VyYXRpb24oKSwgYXJjaGl2ZT1Ob25lKToK
LSAgICAgICAgY2Fzc2FuZHJhLmRyb3Bfa2V5c3BhY2Uoa2V5c3BhY2U9c2VsZi5LRVlTUEFDRSkK
LSAgICAgICAgc2VsZi5tb2RlbCA9IE1vY2tNb2RlbEZhY3RvcnkuY3JlYXRlKHJlZGlzPXJlZGlz
KCksIGNhc3NhbmRyYT1jYXNzYW5kcmEoa2V5c3BhY2U9c2VsZi5LRVlTUEFDRSwgY3JlYXRlX2tl
eXNwYWNlPVRydWUpKQotICAgICAgICBNb2NrTW9kZWxGYWN0b3J5LmFkZF9tb2NrX2FyY2hpdmVz
KHNlbGYubW9kZWwsIGNvbmZpZ3VyYXRpb249Y29uZmlndXJhdGlvbiwgYXJjaGl2ZT1hcmNoaXZl
KQotCi0gICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3Jl
ZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQp
Ci0gICAgZGVmIHRlc3RfZmluZF9hcmNoaXZlKHNlbGYsIHJlZGlzPVN0cmljdFJlZGlzLCBjYXNz
YW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCk6Ci0gICAgICAgIHNlbGYuaW5pdF9kYXRhYmFzZShyZWRp
cz1yZWRpcywgY2Fzc2FuZHJhPWNhc3NhbmRyYSkKLSAgICAgICAgYXJjaGl2ZXMgPSBzZWxmLm1v
ZGVsLmFyY2hpdmVfY29udGV4dC5maW5kX2FyY2hpdmUoCi0gICAgICAgICAgICBjb25maWd1cmF0
aW9ucz1bQ29uZmlndXJhdGlvbihwbGF0Zm9ybT0nTWFjJywgc3R5bGU9J1JlbGVhc2UnLCBmbGF2
b3I9J3drMScpXSwKLSAgICAgICAgICAgIGJlZ2luPU1vY2tTVk5SZXBvc2l0b3J5LndlYmtpdCgp
LmNvbW1pdF9mb3JfaWQoMjM2NTQyKSwgZW5kPU1vY2tTVk5SZXBvc2l0b3J5LndlYmtpdCgpLmNv
bW1pdF9mb3JfaWQoMjM2NTQyKSwKLSAgICAgICAgICAgIHN1aXRlPSdsYXlvdXQtdGVzdHMnLAot
ICAgICAgICApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG5leHQoaXRlcihhcmNoaXZl
cy52YWx1ZXMoKSkpKSwgMSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KGl0ZXIoYXJj
aGl2ZXMudmFsdWVzKCkpKVswXVsndXVpZCddLCAxNTM4MDQ5MTA4MDApCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwobmV4dChpdGVyKGFyY2hpdmVzLnZhbHVlcygpKSlbMF1bJ2FyY2hpdmUnXS5n
ZXR2YWx1ZSgpLCBiYXNlNjQuYjY0ZGVjb2RlKE1vY2tNb2RlbEZhY3RvcnkuQVJDSElWRV9aSVAp
KQotCi0gICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3Jl
ZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQp
Ci0gICAgZGVmIHRlc3RfYXJjaGl2ZV9saXN0KHNlbGYsIHJlZGlzPVN0cmljdFJlZGlzLCBjYXNz
YW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCk6Ci0gICAgICAgIHNlbGYuaW5pdF9kYXRhYmFzZShyZWRp
cz1yZWRpcywgY2Fzc2FuZHJhPWNhc3NhbmRyYSkKLSAgICAgICAgZmlsZXMgPSBzZWxmLm1vZGVs
LmFyY2hpdmVfY29udGV4dC5scygKLSAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25zPVtDb25maWd1
cmF0aW9uKHBsYXRmb3JtPSdNYWMnLCBzdHlsZT0nUmVsZWFzZScsIGZsYXZvcj0nd2sxJyldLAot
ICAgICAgICAgICAgYmVnaW49TW9ja1NWTlJlcG9zaXRvcnkud2Via2l0KCkuY29tbWl0X2Zvcl9p
ZCgyMzY1NDIpLCBlbmQ9TW9ja1NWTlJlcG9zaXRvcnkud2Via2l0KCkuY29tbWl0X2Zvcl9pZCgy
MzY1NDIpLAotICAgICAgICAgICAgc3VpdGU9J2xheW91dC10ZXN0cycsCi0gICAgICAgICkKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obmV4dChpdGVyKGZpbGVzLnZhbHVlcygpKSkpLCAx
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5leHQoaXRlcihmaWxlcy52YWx1ZXMoKSkpWzBd
Wyd1dWlkJ10sIDE1MzgwNDkxMDgwMCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KGl0
ZXIoZmlsZXMudmFsdWVzKCkpKVswXVsnZmlsZXMnXSwgWydmaWxlLnR4dCcsICdpbmRleC5odG1s
J10pCi0KLSAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tf
cmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4
dCkKLSAgICBkZWYgdGVzdF9maWxlX2FjY2VzcyhzZWxmLCByZWRpcz1TdHJpY3RSZWRpcywgY2Fz
c2FuZHJhPUNhc3NhbmRyYUNvbnRleHQpOgotICAgICAgICBzZWxmLmluaXRfZGF0YWJhc2UocmVk
aXM9cmVkaXMsIGNhc3NhbmRyYT1jYXNzYW5kcmEpCi0gICAgICAgIGZpbGVzID0gc2VsZi5tb2Rl
bC5hcmNoaXZlX2NvbnRleHQuZmlsZSgKLSAgICAgICAgICAgIHBhdGg9J2ZpbGUudHh0JywKLSAg
ICAgICAgICAgIGNvbmZpZ3VyYXRpb25zPVtDb25maWd1cmF0aW9uKHBsYXRmb3JtPSdNYWMnLCBz
dHlsZT0nUmVsZWFzZScsIGZsYXZvcj0nd2sxJyldLAotICAgICAgICAgICAgYmVnaW49TW9ja1NW
TlJlcG9zaXRvcnkud2Via2l0KCkuY29tbWl0X2Zvcl9pZCgyMzY1NDIpLCBlbmQ9TW9ja1NWTlJl
cG9zaXRvcnkud2Via2l0KCkuY29tbWl0X2Zvcl9pZCgyMzY1NDIpLAotICAgICAgICAgICAgc3Vp
dGU9J2xheW91dC10ZXN0cycsCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChs
ZW4obmV4dChpdGVyKGZpbGVzLnZhbHVlcygpKSkpLCAxKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKG5leHQoaXRlcihmaWxlcy52YWx1ZXMoKSkpWzBdWyd1dWlkJ10sIDE1MzgwNDkxMDgwMCkK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KGl0ZXIoZmlsZXMudmFsdWVzKCkpKVswXVsn
ZmlsZSddLCAnZGF0YScuZW5jb2RlKCdhc2NpaScpKQotCi0gICAgQFdhaXRGb3JEb2NrZXJUZXN0
Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19j
YXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCi0gICAgZGVmIHRlc3RfZmlsZV9saXN0KHNl
bGYsIHJlZGlzPVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCk6Ci0gICAg
ICAgIHNlbGYuaW5pdF9kYXRhYmFzZShyZWRpcz1yZWRpcywgY2Fzc2FuZHJhPWNhc3NhbmRyYSkK
LSAgICAgICAgZmlsZXMgPSBzZWxmLm1vZGVsLmFyY2hpdmVfY29udGV4dC5maWxlKAotICAgICAg
ICAgICAgY29uZmlndXJhdGlvbnM9W0NvbmZpZ3VyYXRpb24ocGxhdGZvcm09J01hYycsIHN0eWxl
PSdSZWxlYXNlJywgZmxhdm9yPSd3azEnKV0sCi0gICAgICAgICAgICBiZWdpbj1Nb2NrU1ZOUmVw
b3NpdG9yeS53ZWJraXQoKS5jb21taXRfZm9yX2lkKDIzNjU0MiksIGVuZD1Nb2NrU1ZOUmVwb3Np
dG9yeS53ZWJraXQoKS5jb21taXRfZm9yX2lkKDIzNjU0MiksCi0gICAgICAgICAgICBzdWl0ZT0n
bGF5b3V0LXRlc3RzJywKLSAgICAgICAgKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihu
ZXh0KGl0ZXIoZmlsZXMudmFsdWVzKCkpKSksIDEpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
bmV4dChpdGVyKGZpbGVzLnZhbHVlcygpKSlbMF1bJ3V1aWQnXSwgMTUzODA0OTEwODAwKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKG5leHQoaXRlcihmaWxlcy52YWx1ZXMoKSkpWzBdWydmaWxl
J10sIFsnZmlsZS50eHQnLCAnaW5kZXguaHRtbCddKQotCi0gICAgQFdhaXRGb3JEb2NrZXJUZXN0
Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19j
YXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCi0gICAgZGVmIHRlc3RfbGFyZ2VfYXJjaGl2
ZShzZWxmLCByZWRpcz1TdHJpY3RSZWRpcywgY2Fzc2FuZHJhPUNhc3NhbmRyYUNvbnRleHQpOgot
ICAgICAgICBGSUxFX1NJWkUgPSAyNSAqIDEwMjQgKiAxMDI0ICAjIDI1IE1CIGZpbGVzCi0gICAg
ICAgIGJ1ZmYgPSBpby5CeXRlc0lPKCkKLSAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoYnVm
ZiwgJ2EnLCB6aXBmaWxlLlpJUF9ERUZMQVRFRCwgRmFsc2UpIGFzIGFyY2hpdmU6Ci0gICAgICAg
ICAgICBmb3IgZmlsZSwgZGF0YSBpbiBbCi0gICAgICAgICAgICAgICAgKCdmaWxlLTEudHh0Jywg
aW8uQnl0ZXNJTyhvcy51cmFuZG9tKEZJTEVfU0laRSkpKSwKLSAgICAgICAgICAgICAgICAoJ2Zp
bGUtMi50eHQnLCBpby5CeXRlc0lPKG9zLnVyYW5kb20oRklMRV9TSVpFKSkpLAotICAgICAgICAg
ICAgICAgICgnZmlsZS0zLnR4dCcsIGlvLkJ5dGVzSU8ob3MudXJhbmRvbShGSUxFX1NJWkUpKSks
Ci0gICAgICAgICAgICBdOgotICAgICAgICAgICAgICAgIGFyY2hpdmUud3JpdGVzdHIoZmlsZSwg
ZGF0YS5nZXR2YWx1ZSgpKQotCi0gICAgICAgIHNlbGYuaW5pdF9kYXRhYmFzZSgKLSAgICAgICAg
ICAgIHJlZGlzPXJlZGlzLCBjYXNzYW5kcmE9Y2Fzc2FuZHJhLAotICAgICAgICAgICAgY29uZmln
dXJhdGlvbj1Db25maWd1cmF0aW9uKHBsYXRmb3JtPSdNYWMnLCBzdHlsZT0nUmVsZWFzZScsIGZs
YXZvcj0nd2sxJyksCi0gICAgICAgICAgICBhcmNoaXZlPWJ1ZmYsCi0gICAgICAgICkKLQotICAg
ICAgICBmaWxlcyA9IHNlbGYubW9kZWwuYXJjaGl2ZV9jb250ZXh0LmZpbmRfYXJjaGl2ZSgKLSAg
ICAgICAgICAgIGNvbmZpZ3VyYXRpb25zPVtDb25maWd1cmF0aW9uKHBsYXRmb3JtPSdNYWMnLCBz
dHlsZT0nUmVsZWFzZScsIGZsYXZvcj0nd2sxJyldLAotICAgICAgICAgICAgYmVnaW49TW9ja1NW
TlJlcG9zaXRvcnkud2Via2l0KCkuY29tbWl0X2Zvcl9pZCgyMzY1NDIpLCBlbmQ9TW9ja1NWTlJl
cG9zaXRvcnkud2Via2l0KCkuY29tbWl0X2Zvcl9pZCgyMzY1NDIpLAotICAgICAgICAgICAgc3Vp
dGU9J2xheW91dC10ZXN0cycsCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChs
ZW4obmV4dChpdGVyKGZpbGVzLnZhbHVlcygpKSkpLCAxKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKG5leHQoaXRlcihmaWxlcy52YWx1ZXMoKSkpWzBdWyd1dWlkJ10sIDE1MzgwNDkxMDgwMCkK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KGl0ZXIoZmlsZXMudmFsdWVzKCkpKVswXVsn
YXJjaGl2ZSddLmdldHZhbHVlKCksIGJ1ZmYuZ2V0dmFsdWUoKSkKLQotICAgICAgICB3aXRoIG1v
Y2sucGF0Y2goJ3Jlc3VsdHNkYnB5Lm1vZGVsLmFyY2hpdmVfY29udGV4dC5BcmNoaXZlQ29udGV4
dC5NRU1PUllfTElNSVQnLCBuZXc9RklMRV9TSVpFKSwgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGlt
ZUVycm9yKToKLSAgICAgICAgICAgIHNlbGYubW9kZWwuYXJjaGl2ZV9jb250ZXh0LmZpbmRfYXJj
aGl2ZSgKLSAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9ucz1bQ29uZmlndXJhdGlvbihwbGF0
Zm9ybT0nTWFjJywgc3R5bGU9J1JlbGVhc2UnLCBmbGF2b3I9J3drMScpXSwKLSAgICAgICAgICAg
ICAgICBiZWdpbj1Nb2NrU1ZOUmVwb3NpdG9yeS53ZWJraXQoKS5jb21taXRfZm9yX2lkKDIzNjU0
MiksIGVuZD1Nb2NrU1ZOUmVwb3NpdG9yeS53ZWJraXQoKS5jb21taXRfZm9yX2lkKDIzNjU0Miks
Ci0gICAgICAgICAgICAgICAgc3VpdGU9J2xheW91dC10ZXN0cycsCi0gICAgICAgICAgICApCklu
ZGV4OiBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9hcmNoaXZlci5weQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9hcmNoaXZlci5w
eQkocmV2aXNpb24gMjY1NTMxKQorKysgVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9k
ZWwvYXJjaGl2ZXIucHkJKG5vbmV4aXN0ZW50KQpAQCAtMSw0NSArMCwwIEBACi0jIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgot
IyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUgotIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotIyBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1pbXBvcnQgb3MKLWltcG9ydCBoYXNobGliCi0K
LQotY2xhc3MgQXJjaGl2ZXIob2JqZWN0KToKLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgYXJj
aGl2ZV9kaWdlc3QoY2xzLCBhcmNoaXZlKToKLSAgICAgICAgZGlnZXN0ID0gaGFzaGxpYi5tZDUo
YXJjaGl2ZS5nZXR2YWx1ZSgpKS5oZXhkaWdlc3QoKQotICAgICAgICBhcmNoaXZlLnNlZWsoMCkK
LSAgICAgICAgcmV0dXJuIGRpZ2VzdAotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIGFyY2hp
dmVfc2l6ZShjbHMsIGFyY2hpdmUpOgotICAgICAgICBhcmNoaXZlLnNlZWsoMCwgb3MuU0VFS19F
TkQpCi0gICAgICAgIHNpemUgPSBhcmNoaXZlLnRlbGwoKQotICAgICAgICBhcmNoaXZlLnNlZWso
MCkKLSAgICAgICAgcmV0dXJuIHNpemUKLQotICAgIGRlZiBzYXZlKHNlbGYsIGFyY2hpdmUsIHJl
dGFpbl9mb3I9Tm9uZSk6Ci0gICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKLQotICAg
IGRlZiByZXRyaWV2ZShzZWxmLCBkaWdlc3QsIHNpemU9Tm9uZSk6Ci0gICAgICAgIHJhaXNlIE5v
dEltcGxlbWVudGVkRXJyb3IKSW5kZXg6IFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21v
ZGVsL2Nhc3NhbmRyYV9hcmNoaXZlci5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9yZXN1bHRzZGJw
eS9yZXN1bHRzZGJweS9tb2RlbC9jYXNzYW5kcmFfYXJjaGl2ZXIucHkJKHJldmlzaW9uIDI2NTUz
MSkKKysrIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL2Nhc3NhbmRyYV9hcmNo
aXZlci5weQkobm9uZXhpc3RlbnQpCkBAIC0xLDg1ICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUgotIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0jIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSCi0jIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0jIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0KLWltcG9ydCBpbwotCi1mcm9tIGNhc3NhbmRyYS5jcWxlbmdp
bmUgaW1wb3J0IGNvbHVtbnMKLWZyb20gY2Fzc2FuZHJhLmNxbGVuZ2luZS5tb2RlbHMgaW1wb3J0
IE1vZGVsCi1mcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLmFyY2hpdmVyIGltcG9ydCBBcmNoaXZlcgot
Ci0KLWNsYXNzIENhc3NhbmRyYUFyY2hpdmVyKEFyY2hpdmVyKToKLSAgICBNQVhfQVJDSElWRSA9
IDUwMCAqIDEwMjQgKiAxMDI0ICAjIEFyY2hpdmVzIHNob3VsZCBiZSBzbWFsbGVyIHRoYW4gNTAw
IE1CCi0gICAgQ0hVTktfU0laRSA9IDEwICogMTAyNCAqIDEwMjQgICAgIyBDYXNzYW5kcmEgZG9l
c24ndCBkbyB3ZWxsIHdpdGggZGF0YSBibG9icyBvZiBtb3JlIHRoYW4gMTAgTUIKLQotICAgICMg
QWNjb3JkaW5nIHRvIGh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkv
Q0FTU0FORFJBMi9DYXNzYW5kcmFMaW1pdGF0aW9ucywgd2Ugc2hvdWxkIHNoYXJkCi0gICAgIyBs
YXJnZSBkYXRhIGJsb2JzLgotICAgIGNsYXNzIEFyY2hpdmVDaHVua3MoTW9kZWwpOgotICAgICAg
ICBfX3RhYmxlX25hbWVfXyA9ICdhcmNoaXZlX2NodW5rc18wMicKLSAgICAgICAgZGlnZXN0ID0g
Y29sdW1ucy5UZXh0KHBhcnRpdGlvbl9rZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkKLSAgICAgICAg
aW5kZXggPSBjb2x1bW5zLkludGVnZXIocHJpbWFyeV9rZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkK
LSAgICAgICAgY2h1bmsgPSBjb2x1bW5zLkJsb2IocmVxdWlyZWQ9VHJ1ZSkKLQotICAgIGRlZiBf
X2luaXRfXyhzZWxmLCBjYXNzYW5kcmEpOgotICAgICAgICBzZWxmLmNhc3NhbmRyYSA9IGNhc3Nh
bmRyYQotICAgICAgICB3aXRoIHNlbGY6Ci0gICAgICAgICAgICBzZWxmLmNhc3NhbmRyYS5jcmVh
dGVfdGFibGUoc2VsZi5BcmNoaXZlQ2h1bmtzKQotCi0gICAgZGVmIF9fZW50ZXJfXyhzZWxmKToK
LSAgICAgICAgc2VsZi5jYXNzYW5kcmEuX19lbnRlcl9fKCkKLQotICAgIGRlZiBfX2V4aXRfXyhz
ZWxmLCAqYXJncywgKiprd2FyZ3MpOgotICAgICAgICBzZWxmLmNhc3NhbmRyYS5fX2V4aXRfXygq
YXJncywgKiprd2FyZ3MpCi0KLSAgICBkZWYgc2F2ZShzZWxmLCBhcmNoaXZlLCByZXRhaW5fZm9y
PU5vbmUpOgotICAgICAgICBpbmRleCA9IDAKLSAgICAgICAgc2l6ZSA9IHNlbGYuYXJjaGl2ZV9z
aXplKGFyY2hpdmUpCi0gICAgICAgIGlmIHNpemUgPiBzZWxmLk1BWF9BUkNISVZFOgotICAgICAg
ICAgICAgcmFpc2UgVmFsdWVFcnJvcignQXJjaGl2ZSBsYXJnZXIgdGhhbiA1MDAgTUInKQotICAg
ICAgICBkaWdlc3QgPSBzZWxmLmFyY2hpdmVfZGlnZXN0KGFyY2hpdmUpCi0gICAgICAgIHdoaWxl
IHNpemUgPiBpbmRleCAqIHNlbGYuQ0hVTktfU0laRToKLSAgICAgICAgICAgIHNlbGYuY2Fzc2Fu
ZHJhLmluc2VydF9yb3coCi0gICAgICAgICAgICAgICAgc2VsZi5BcmNoaXZlQ2h1bmtzLl9fdGFi
bGVfbmFtZV9fLAotICAgICAgICAgICAgICAgIGRpZ2VzdD1kaWdlc3QsIGluZGV4PWluZGV4LAot
ICAgICAgICAgICAgICAgIGNodW5rPWFyY2hpdmUucmVhZChzZWxmLkNIVU5LX1NJWkUpLAotICAg
ICAgICAgICAgICAgIHR0bD1yZXRhaW5fZm9yLAotICAgICAgICAgICAgKQotICAgICAgICAgICAg
aW5kZXggKz0gMQotICAgICAgICByZXR1cm4gZGlnZXN0Ci0KLSAgICBkZWYgcmV0cmlldmUoc2Vs
ZiwgZGlnZXN0LCBzaXplPU5vbmUpOgotICAgICAgICByb3dzID0gc2VsZi5jYXNzYW5kcmEuc2Vs
ZWN0X2Zyb21fdGFibGUoCi0gICAgICAgICAgICBzZWxmLkFyY2hpdmVDaHVua3MuX190YWJsZV9u
YW1lX18sCi0gICAgICAgICAgICBkaWdlc3Q9ZGlnZXN0LAotICAgICAgICAgICAgbGltaXQ9MSAr
IGludChzaXplIG9yIHNlbGYuTUFYX0FSQ0hJVkUgLyBzZWxmLkNIVU5LX1NJWkUpLAotICAgICAg
ICApCi0gICAgICAgIGlmIGxlbihyb3dzKSA9PSAwOgotICAgICAgICAgICAgcmV0dXJuIE5vbmUK
LQotICAgICAgICBhcmNoaXZlID0gaW8uQnl0ZXNJTygpCi0gICAgICAgIGZvciByb3cgaW4gcm93
czoKLSAgICAgICAgICAgIGFyY2hpdmUud3JpdGUocm93LmNodW5rKQotCi0gICAgICAgIGlmIChz
aXplIGFuZCBzZWxmLmFyY2hpdmVfc2l6ZShhcmNoaXZlKSAhPSBzaXplKSBvciBkaWdlc3QgIT0g
c2VsZi5hcmNoaXZlX2RpZ2VzdChhcmNoaXZlKToKLSAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVF
cnJvcignRmFpbGVkIHRvIHJlY29uc3RydWN0IGFyY2hpdmUgZnJvbSBjaHVua3MnKQotCi0gICAg
ICAgIHJldHVybiBhcmNoaXZlCkluZGV4OiBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9t
b2RlbC9jYXNzYW5kcmFfY29udGV4dC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9yZXN1bHRzZGJw
eS9yZXN1bHRzZGJweS9tb2RlbC9jYXNzYW5kcmFfY29udGV4dC5weQkocmV2aXNpb24gMjY1NTMx
KQorKysgVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvY2Fzc2FuZHJhX2NvbnRl
eHQucHkJKG5vbmV4aXN0ZW50KQpAQCAtMSwzMjQgKzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0jIGFyZSBtZXQ6Ci0jIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jCi0jIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMi
IEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SCi0jIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSMgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIKLSMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSMgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLQotaW1wb3J0IGNvbnRleHRsaWIKLWltcG9ydCBvcwotaW1wb3J0
IHJlCi1pbXBvcnQgdXVpZAotCi1mcm9tIGNhc3NhbmRyYS5jbHVzdGVyIGltcG9ydCBDbHVzdGVy
Ci1mcm9tIGNhc3NhbmRyYS5jcWxlbmdpbmUuY29sdW1ucyBpbXBvcnQgVGV4dAotZnJvbSBjYXNz
YW5kcmEuY3FsZW5naW5lLmNvbm5lY3Rpb24gaW1wb3J0IHJlZ2lzdGVyX2Nvbm5lY3Rpb24sIHVu
cmVnaXN0ZXJfY29ubmVjdGlvbgotZnJvbSBjYXNzYW5kcmEuY3FsZW5naW5lLm1hbmFnZW1lbnQg
aW1wb3J0IENRTEVOR19BTExPV19TQ0hFTUFfTUFOQUdFTUVOVCwgZ2V0X2NsdXN0ZXIsIGNyZWF0
ZV9rZXlzcGFjZV9uZXR3b3JrX3RvcG9sb2d5LCBjcmVhdGVfa2V5c3BhY2Vfc2ltcGxlLCBkcm9w
X2tleXNwYWNlLCBzeW5jX3RhYmxlCi1mcm9tIGNhc3NhbmRyYS5jcWxlbmdpbmUubW9kZWxzIGlt
cG9ydCBNb2RlbAotZnJvbSBjYXNzYW5kcmEuY3FsZW5naW5lLnF1ZXJ5IGltcG9ydCBCYXRjaFF1
ZXJ5Ci0KLQotY2xhc3MgUmVnZXhDbHVzdGVyKFRleHQpOgotCi0gICAgZGVmIF9faW5pdF9fKHNl
bGYsIG1pbl9sZW5ndGg9MSwgbWF4X2xlbmd0aD1Ob25lLCBwcmltYXJ5X2tleT1UcnVlLCBwYXJ0
aXRpb25fa2V5PUZhbHNlLCAqKmt3YXJncyk6Ci0gICAgICAgIGFzc2VydCBwcmltYXJ5X2tleQot
ICAgICAgICBhc3NlcnQgbm90IHBhcnRpdGlvbl9rZXkKLSAgICAgICAgc3VwZXIoUmVnZXhDbHVz
dGVyLCBzZWxmKS5fX2luaXRfXyhtaW5fbGVuZ3RoPW1pbl9sZW5ndGgsIG1heF9sZW5ndGg9bWF4
X2xlbmd0aCwgcHJpbWFyeV9rZXk9cHJpbWFyeV9rZXksIHBhcnRpdGlvbl9rZXk9cGFydGl0aW9u
X2tleSwgKiprd2FyZ3MpCi0KLQotY2xhc3MgQ291bnRlZEJhdGNoUXVlcnkoQmF0Y2hRdWVyeSk6
Ci0gICAgREVGQVVMVF9MSU1JVCA9IDEwMAotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGxpbWl0
PURFRkFVTFRfTElNSVQsICoqa3dhcmdzKToKLSAgICAgICAgc3VwZXIoQ291bnRlZEJhdGNoUXVl
cnksIHNlbGYpLl9faW5pdF9fKCoqa3dhcmdzKQotICAgICAgICBzZWxmLmxpbWl0ID0gbGltaXQK
LQotICAgIGRlZiBhZGRfcXVlcnkoc2VsZiwgcXVlcnkpOgotICAgICAgICBpZiBsZW4oc2VsZi5x
dWVyaWVzKSA+PSBzZWxmLmxpbWl0OgotICAgICAgICAgICAgc2VsZi5leGVjdXRlKCkKLSAgICAg
ICAgICAgIHNlbGYuX2V4ZWN1dGVkID0gRmFsc2UKLSAgICAgICAgcmV0dXJuIHN1cGVyKENvdW50
ZWRCYXRjaFF1ZXJ5LCBzZWxmKS5hZGRfcXVlcnkocXVlcnkpCi0KLQotY2xhc3MgQ2Fzc2FuZHJh
Q29udGV4dChvYmplY3QpOgotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIGNhbl9tb2RpZnlf
c2NoZW1hKGNscyk6Ci0gICAgICAgIHJldHVybiBvcy5nZXRlbnYoQ1FMRU5HX0FMTE9XX1NDSEVN
QV9NQU5BR0VNRU5ULCBGYWxzZSkKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBkcm9wX2tl
eXNwYWNlKGNscywgbm9kZXM9Tm9uZSwga2V5c3BhY2U9J3Jlc3VsdHNfZGF0YWJhc2UnLCBhdXRo
X3Byb3ZpZGVyPU5vbmUpOgotICAgICAgICBub2RlcyA9IG5vZGVzIGlmIG5vZGVzIGVsc2UgWyds
b2NhbGhvc3QnXQotICAgICAgICBjb25uZWN0aW9uX2lkID0gdXVpZC51dWlkNCgpCi0KLSAgICAg
ICAgdHJ5OgotICAgICAgICAgICAgcmVnaXN0ZXJfY29ubmVjdGlvbihuYW1lPXN0cihjb25uZWN0
aW9uX2lkKSwgc2Vzc2lvbj1DbHVzdGVyKG5vZGVzLCBhdXRoX3Byb3ZpZGVyPWF1dGhfcHJvdmlk
ZXIpLmNvbm5lY3QoKSkKLSAgICAgICAgICAgIGRvZXNfa2V5c3BhY2VfZXhpc3QgPSBrZXlzcGFj
ZSBpbiBnZXRfY2x1c3RlcihzdHIoY29ubmVjdGlvbl9pZCkpLm1ldGFkYXRhLmtleXNwYWNlcwot
ICAgICAgICAgICAgaWYgZG9lc19rZXlzcGFjZV9leGlzdDoKLSAgICAgICAgICAgICAgICBkcm9w
X2tleXNwYWNlKGtleXNwYWNlLCBjb25uZWN0aW9ucz1bc3RyKGNvbm5lY3Rpb25faWQpXSkKLSAg
ICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHVucmVnaXN0ZXJfY29ubmVjdGlvbihuYW1lPXN0
cihjb25uZWN0aW9uX2lkKSkKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBub2Rlcz1Ob25lLCBr
ZXlzcGFjZT0ncmVzdWx0c19kYXRhYmFzZScsIGF1dGhfcHJvdmlkZXI9Tm9uZSwgY3JlYXRlX2tl
eXNwYWNlPUZhbHNlLCByZXBsaWNhdGlvbl9tYXA9Tm9uZSk6Ci0gICAgICAgIHNlbGYua2V5c3Bh
Y2UgPSBrZXlzcGFjZQotICAgICAgICBzZWxmLl9kZXB0aCA9IDAKLSAgICAgICAgc2VsZi5fY29u
bmVjdGlvbl9pZCA9IHV1aWQudXVpZDQoKQotICAgICAgICBzZWxmLl9tb2RlbHMgPSB7fQotICAg
ICAgICBzZWxmLl9ub2RlcyA9IG5vZGVzIGlmIG5vZGVzIGVsc2UgWydsb2NhbGhvc3QnXQotICAg
ICAgICBzZWxmLl9hdXRoX3Byb3ZpZGVyID0gYXV0aF9wcm92aWRlcgotICAgICAgICBzZWxmLl9i
YXRjaCA9IFtdCi0KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmVnaXN0ZXJfY29ubmVjdGlv
bihuYW1lPXN0cihzZWxmLl9jb25uZWN0aW9uX2lkKSwgc2Vzc2lvbj1DbHVzdGVyKHNlbGYuX25v
ZGVzLCBhdXRoX3Byb3ZpZGVyPXNlbGYuX2F1dGhfcHJvdmlkZXIpLmNvbm5lY3QoKSkKLSAgICAg
ICAgICAgIGRvZXNfa2V5c3BhY2VfZXhpc3QgPSBzZWxmLmtleXNwYWNlIGluIGdldF9jbHVzdGVy
KHN0cihzZWxmLl9jb25uZWN0aW9uX2lkKSkubWV0YWRhdGEua2V5c3BhY2VzCi0KLSAgICAgICAg
ICAgIGlmIGNyZWF0ZV9rZXlzcGFjZSBhbmQgbm90IGRvZXNfa2V5c3BhY2VfZXhpc3Q6Ci0gICAg
ICAgICAgICAgICAgaWYgbm90IHNlbGYuY2FuX21vZGlmeV9zY2hlbWEoKToKLSAgICAgICAgICAg
ICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdDYW5ub3QgY3JlYXRlIGtleXNwYWNlLCBTY2hlbWEg
bW9kaWZpY2F0aW9uIGlzIGRpc2FibGVkJykKLSAgICAgICAgICAgICAgICBpZiByZXBsaWNhdGlv
bl9tYXAgaXMgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgY3JlYXRlX2tleXNwYWNlX3NpbXBs
ZShzZWxmLmtleXNwYWNlLCByZXBsaWNhdGlvbl9mYWN0b3I9MSwgY29ubmVjdGlvbnM9W3N0cihz
ZWxmLl9jb25uZWN0aW9uX2lkKV0pCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAg
ICAgICAgICAgY3JlYXRlX2tleXNwYWNlX25ldHdvcmtfdG9wb2xvZ3koc2VsZi5rZXlzcGFjZSwg
ZGNfcmVwbGljYXRpb25fbWFwPXJlcGxpY2F0aW9uX21hcCwgY29ubmVjdGlvbnM9W3N0cihzZWxm
Ll9jb25uZWN0aW9uX2lkKV0pCi0gICAgICAgICAgICBlbGlmIG5vdCBkb2VzX2tleXNwYWNlX2V4
aXN0OgotICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbihmJ0tleXNwYWNlIHtzZWxmLmtl
eXNwYWNlfSBkb2VzIG5vdCBleGlzdCBhbmQgd2lsbCBub3QgYmUgY3JlYXRlZCcpCi0gICAgICAg
IGZpbmFsbHk6Ci0gICAgICAgICAgICB1bnJlZ2lzdGVyX2Nvbm5lY3Rpb24obmFtZT1zdHIoc2Vs
Zi5fY29ubmVjdGlvbl9pZCkpCi0KLSAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgotICAgICAgICBp
ZiBzZWxmLl9kZXB0aCA9PSAwOgotICAgICAgICAgICAgcmVnaXN0ZXJfY29ubmVjdGlvbihuYW1l
PXN0cihzZWxmLl9jb25uZWN0aW9uX2lkKSwgc2Vzc2lvbj1DbHVzdGVyKHNlbGYuX25vZGVzLCBh
dXRoX3Byb3ZpZGVyPXNlbGYuX2F1dGhfcHJvdmlkZXIpLmNvbm5lY3Qoa2V5c3BhY2U9c2VsZi5r
ZXlzcGFjZSkpCi0gICAgICAgIHNlbGYuX2RlcHRoICs9IDEKLQotICAgIGRlZiBfX2V4aXRfXyhz
ZWxmLCAqYXJncywgKiprd2FyZ3MpOgotICAgICAgICBzZWxmLl9kZXB0aCAtPSAxCi0gICAgICAg
IGlmIHNlbGYuX2RlcHRoIDw9IDA6Ci0gICAgICAgICAgICB1bnJlZ2lzdGVyX2Nvbm5lY3Rpb24o
bmFtZT1zdHIoc2VsZi5fY29ubmVjdGlvbl9pZCkpCi0KLSAgICBkZWYgYXNzZXJ0X2Nvbm5lY3Rl
ZChzZWxmKToKLSAgICAgICAgaWYgc2VsZi5fZGVwdGggPD0gMDoKLSAgICAgICAgICAgIHJhaXNl
IEFzc2VydGlvbkVycm9yKCdObyBDYXNzYW5kcmEgc2Vzc2lvbiBhdmFpbGFibGUnKQotCi0gICAg
Y2xhc3MgQXNzZXJ0Q29ubmVjdGVkRGVjb3JhdG9yKCk6Ci0KLSAgICAgICAgZGVmIF9fY2FsbF9f
KHNlbGYsIGZ1bmN0aW9uKToKLSAgICAgICAgICAgIGRlZiBkZWNvcmF0b3Iob2JqLCAqYXJncywg
Kiprd2FyZ3MpOgotICAgICAgICAgICAgICAgIG9iai5hc3NlcnRfY29ubmVjdGVkKCkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24ob2JqLCAqYXJncywgKiprd2FyZ3MpCi0gICAgICAg
ICAgICByZXR1cm4gZGVjb3JhdG9yCi0KLSAgICBAcHJvcGVydHkKLSAgICBAQXNzZXJ0Q29ubmVj
dGVkRGVjb3JhdG9yKCkKLSAgICBkZWYgY2x1c3RlcihzZWxmKToKLSAgICAgICAgcmV0dXJuIGdl
dF9jbHVzdGVyKHN0cihzZWxmLl9jb25uZWN0aW9uX2lkKSkKLQotICAgIGRlZiBzY2hlbWFfZm9y
X3RhYmxlKHNlbGYsIHRhYmxlX25hbWUpOgotICAgICAgICBpZiBub3Qgc2VsZi5jbHVzdGVyLm1l
dGFkYXRhOgotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAga2V5c3BhY2VfbWV0YWRh
dGEgPSBzZWxmLmNsdXN0ZXIubWV0YWRhdGEua2V5c3BhY2VzLmdldChzZWxmLmtleXNwYWNlLCBO
b25lKQotICAgICAgICBpZiBub3Qga2V5c3BhY2VfbWV0YWRhdGE6Ci0gICAgICAgICAgICByZXR1
cm4gTm9uZQotICAgICAgICByZXR1cm4ga2V5c3BhY2VfbWV0YWRhdGEudGFibGVzLmdldCh0YWJs
ZV9uYW1lKQotCi0gICAgQEFzc2VydENvbm5lY3RlZERlY29yYXRvcigpCi0gICAgZGVmIGNyZWF0
ZV90YWJsZShzZWxmLCBtb2RlbCk6Ci0gICAgICAgIGRvZXNfc2NoZW1hX21hdGNoID0gc2VsZi5k
b2VzX3RhYmxlX21vZGVsX21hdGNoX3NjaGVtYShtb2RlbCkKLSAgICAgICAgaWYgZG9lc19zY2hl
bWFfbWF0Y2ggaXMgRmFsc2U6Ci0gICAgICAgICAgICByYWlzZSBzZWxmLlNjaGVtYUV4Y2VwdGlv
bignRXhpc3Rpbmcgc2NoZW1hIGRvZXMgbm90IG1hdGNoIHByb3ZpZGVkIG1vZGVsJykKLQotICAg
ICAgICB0YWJsZV9uYW1lID0gbW9kZWwuX3Jhd19jb2x1bW5fZmFtaWx5X25hbWUoKQotICAgICAg
ICBzZWxmLl9tb2RlbHNbdGFibGVfbmFtZV0gPSBtb2RlbAotICAgICAgICBzZWxmLl9tb2RlbHNb
dGFibGVfbmFtZV0uX19jb25uZWN0aW9uX18gPSBzdHIoc2VsZi5fY29ubmVjdGlvbl9pZCkKLSAg
ICAgICAgc2VsZi5fbW9kZWxzW3RhYmxlX25hbWVdLl9fa2V5c3BhY2VfXyA9IHNlbGYua2V5c3Bh
Y2UKLQotICAgICAgICBpZiBkb2VzX3NjaGVtYV9tYXRjaDoKLSAgICAgICAgICAgIHJldHVybgot
Ci0gICAgICAgIGFzc2VydCBzZWxmLmNhbl9tb2RpZnlfc2NoZW1hKCkKLQotICAgICAgICAjIFdl
IGhhdmUgYSBzcGVjaWFsIG1vZGVsIG5hbWVkIFJlZ2V4Q2x1c3RlciB3aGljaCBhbGxvd3MgTElL
RSBvcGVyYXRpb25zIHRvIGJlIHByZWZvcm1lZCBvbiBhIHByaW1hcnkga2V5IHF1aWNrbHkuCi0g
ICAgICAgICMgVGhpcyB3YXMgc3BlY2lmaWNhbGx5IGludGVuZGVkIGZvciBnaXQgY29tbWl0cywg
YWx0aG91Z2ggaGFzIGEgZmV3IG90aGVyIHBvdGVudGlhbCB1c2VzLgotICAgICAgICBzYXNpX2lu
ZGV4X2NvbHVtbiA9IE5vbmUKLSAgICAgICAgZm9yIGF0dHIgaW4gZGlyKG1vZGVsKToKLSAgICAg
ICAgICAgIGlmIGlzaW5zdGFuY2UoZ2V0YXR0cihnZXRhdHRyKG1vZGVsLCBhdHRyLCBOb25lKSwg
J2NvbHVtbicsIE5vbmUpLCBSZWdleENsdXN0ZXIpOgotICAgICAgICAgICAgICAgIGlmIHNhc2lf
aW5kZXhfY29sdW1uOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBzZWxmLlNjaGVtYUV4Y2Vw
dGlvbignT25seSBvbmUgUmVnZXhDbHVzdGVyIGFsbG93ZWQnKQotICAgICAgICAgICAgICAgIHNh
c2lfaW5kZXhfY29sdW1uID0gYXR0cgotCi0gICAgICAgIHN5bmNfdGFibGUobW9kZWwsIGtleXNw
YWNlcz1bc2VsZi5rZXlzcGFjZV0sIGNvbm5lY3Rpb25zPVtzdHIoc2VsZi5fY29ubmVjdGlvbl9p
ZCldKQotICAgICAgICBpZiBzYXNpX2luZGV4X2NvbHVtbjoKLSAgICAgICAgICAgIGZvciBzZXNz
aW9uIGluIHNlbGYuY2x1c3Rlci5zZXNzaW9uczoKLSAgICAgICAgICAgICAgICBpZiBzZXNzaW9u
LmtleXNwYWNlICE9IHNlbGYua2V5c3BhY2U6Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
Ci0gICAgICAgICAgICAgICAgIyBodHRwczovL2RvY3MuZGF0YXN0YXguY29tL2VuL2RzZS81LjEv
Y3FsL2NxbC9jcWxfdXNpbmcvdXNlU0FTSUluZGV4Lmh0bWwKLSAgICAgICAgICAgICAgICBzZXNz
aW9uLmV4ZWN1dGUoZiIiIkNSRUFURSBDVVNUT00gSU5ERVggaW5kZXhfe3RhYmxlX25hbWV9X3tz
YXNpX2luZGV4X2NvbHVtbn0gT04ge3RhYmxlX25hbWV9ICh7c2FzaV9pbmRleF9jb2x1bW59KSBV
U0lORyBcCi0nb3JnLmFwYWNoZS5jYXNzYW5kcmEuaW5kZXguc2FzaS5TQVNJSW5kZXgnIFdJVEgg
T1BUSU9OUyA9IHt7IFwKLSdhbmFseXplcl9jbGFzcyc6ICdvcmcuYXBhY2hlLmNhc3NhbmRyYS5p
bmRleC5zYXNpLmFuYWx5emVyLlN0YW5kYXJkQW5hbHl6ZXInLCBcCi0nY2FzZV9zZW5zaXRpdmUn
OiAndHJ1ZSd9fSIiIikKLSAgICAgICAgICAgICAgICBicmVhawotCi0gICAgQEFzc2VydENvbm5l
Y3RlZERlY29yYXRvcigpCi0gICAgZGVmIGRvZXNfdGFibGVfbW9kZWxfbWF0Y2hfc2NoZW1hKHNl
bGYsIG1vZGVsKToKLSAgICAgICAgaWYgbm90IGlzc3ViY2xhc3MobW9kZWwsIE1vZGVsKToKLSAg
ICAgICAgICAgIHJhaXNlIHNlbGYuU2NoZW1hRXhjZXB0aW9uKCdNb2RlbHMgbXVzdCBiZSBkZXJp
dmVkIGZyb20gYmFzZSBNb2RlbC4nKQotICAgICAgICBpZiBtb2RlbC5fX2Fic3RyYWN0X186Ci0g
ICAgICAgICAgICByYWlzZSBzZWxmLlNjaGVtYUV4Y2VwdGlvbignQ2Fubm90IGNyZWF0ZSB0YWJs
ZSBmcm9tIGFic3RyYWN0IG1vZGVsJykKLQotICAgICAgICBzY2hlbWEgPSBzZWxmLnNjaGVtYV9m
b3JfdGFibGUobW9kZWwuX3Jhd19jb2x1bW5fZmFtaWx5X25hbWUoKSkKLSAgICAgICAgaWYgc2No
ZW1hIGlzIE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgICAgIHByaW1hcnlf
Y29sdW1ucyA9IFtdCi0gICAgICAgIGRhdGFfY29sdW1ucyA9IFtdCi0gICAgICAgIGZvciBrZXkg
aW4gbW9kZWwuX2NvbHVtbnMua2V5cygpOgotICAgICAgICAgICAgaWYgZ2V0YXR0cihtb2RlbCwg
a2V5KS5jb2x1bW4ucGFydGl0aW9uX2tleSBvciBnZXRhdHRyKG1vZGVsLCBrZXkpLmNvbHVtbi5w
cmltYXJ5X2tleToKLSAgICAgICAgICAgICAgICBwcmltYXJ5X2NvbHVtbnMuYXBwZW5kKGtleSkK
LSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZGF0YV9jb2x1bW5zLmFwcGVuZChr
ZXkpCi0KLSAgICAgICAgc2NoZW1hX2NvbHVtbnMgPSBbXQotICAgICAgICBmb3IgY29sdW1uIGlu
IHNjaGVtYS5jb2x1bW5zOgotICAgICAgICAgICAgc2NoZW1hX2NvbHVtbnMuYXBwZW5kKGNvbHVt
bikKLQotICAgICAgICBpZiBsZW4ocHJpbWFyeV9jb2x1bW5zKSArIGxlbihkYXRhX2NvbHVtbnMp
ICE9IGxlbihzY2hlbWFfY29sdW1ucyk6Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLQotICAg
ICAgICBmb3IgaSBpbiByYW5nZShsZW4ocHJpbWFyeV9jb2x1bW5zKSk6Ci0gICAgICAgICAgICBp
ZiBwcmltYXJ5X2NvbHVtbnNbaV0gIT0gc2NoZW1hX2NvbHVtbnNbaV06Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIEZhbHNlCi0gICAgICAgIGZvciBlbGVtZW50IGluIGRhdGFfY29sdW1uczoKLSAg
ICAgICAgICAgIGlmIGVsZW1lbnQgbm90IGluIHNjaGVtYV9jb2x1bW5zOgotICAgICAgICAgICAg
ICAgIHJldHVybiBGYWxzZQotCi0gICAgICAgIHBhcnRpdGlvbl9rZXlzID0gW2NvbHVtbi5uYW1l
IGZvciBjb2x1bW4gaW4gc2NoZW1hLnBhcnRpdGlvbl9rZXldCi0gICAgICAgIHByaW1hcnlfa2V5
cyA9IFtjb2x1bW4ubmFtZSBmb3IgY29sdW1uIGluIHNjaGVtYS5wcmltYXJ5X2tleV0KLQotICAg
ICAgICBmb3IgY29sdW1uIGluIHByaW1hcnlfY29sdW1ucyArIGRhdGFfY29sdW1uczoKLSAgICAg
ICAgICAgIG1vZGVsX2NvbHVtbiA9IGdldGF0dHIobW9kZWwsIGNvbHVtbikuY29sdW1uCi0gICAg
ICAgICAgICBpZiBzY2hlbWEuY29sdW1uc1tjb2x1bW5dLmNxbF90eXBlICE9IG1vZGVsX2NvbHVt
bi5kYl90eXBlOgotICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgICAgICAgICBp
ZiBtb2RlbF9jb2x1bW4ucGFydGl0aW9uX2tleSBhbmQgY29sdW1uIG5vdCBpbiBwYXJ0aXRpb25f
a2V5czoKLSAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgICAgIGlmIG1vZGVs
X2NvbHVtbi5wcmltYXJ5X2tleSBhbmQgY29sdW1uIG5vdCBpbiBwcmltYXJ5X2tleXM6Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICAgICAgICAgIGlmIG1vZGVsX2NvbHVtbi5j
bHVzdGVyaW5nX29yZGVyID09ICdERVNDJyBhbmQgbm90IHNjaGVtYS5jb2x1bW5zW2NvbHVtbl0u
aXNfcmV2ZXJzZWQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgICAgICBp
ZiAobW9kZWxfY29sdW1uLmNsdXN0ZXJpbmdfb3JkZXIgPT0gJ0FTQycgb3IgbW9kZWxfY29sdW1u
LmNsdXN0ZXJpbmdfb3JkZXIgaXMgTm9uZSkgYW5kIHNjaGVtYS5jb2x1bW5zW2NvbHVtbl0uaXNf
cmV2ZXJzZWQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICAgICAgcmV0dXJu
IFRydWUKLQotICAgIEBBc3NlcnRDb25uZWN0ZWREZWNvcmF0b3IoKQotICAgIEBjb250ZXh0bGli
LmNvbnRleHRtYW5hZ2VyCi0gICAgZGVmIGJhdGNoX3F1ZXJ5X2NvbnRleHQoc2VsZiwgbGltaXQ9
Q291bnRlZEJhdGNoUXVlcnkuREVGQVVMVF9MSU1JVCk6Ci0gICAgICAgIHNlbGYuX2JhdGNoLmFw
cGVuZChDb3VudGVkQmF0Y2hRdWVyeShsaW1pdD1saW1pdCwgY29ubmVjdGlvbj1zdHIoc2VsZi5f
Y29ubmVjdGlvbl9pZCkpKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICB3aXRoIHNlbGYuX2Jh
dGNoWy0xXToKLSAgICAgICAgICAgICAgICB5aWVsZAotICAgICAgICBmaW5hbGx5OgotICAgICAg
ICAgICAgZGVsIHNlbGYuX2JhdGNoWy0xXQotCi0gICAgQEFzc2VydENvbm5lY3RlZERlY29yYXRv
cigpCi0gICAgZGVmIGluc2VydF9yb3coc2VsZiwgdGFibGVfbmFtZSwgdHRsPU5vbmUsICoqa3dh
cmdzKToKLSAgICAgICAgaWYgdGFibGVfbmFtZSBub3QgaW4gc2VsZi5fbW9kZWxzOgotICAgICAg
ICAgICAgcmFpc2Ugc2VsZi5TY2hlbWFFeGNlcHRpb24oZid7dGFibGVfbmFtZX0gZG9lcyBub3Qg
ZXhpc3QgaW4gdGhlIGRhdGFiYXNlJykKLQotICAgICAgICAjIElmIHRoZSB0dGwgaGFzIGFscmVh
ZHkgZXhwaXJlZCwgZG9uJ3QgZXZlbiBib3RoZXIgc2VuZGluZyB0aGUgZGF0YS4KLSAgICAgICAg
aWYgdHRsIGFuZCB0dGwgPCAwOgotICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgaWYgbGVu
KHNlbGYuX2JhdGNoKToKLSAgICAgICAgICAgIHNlbGYuX21vZGVsc1t0YWJsZV9uYW1lXS5iYXRj
aChzZWxmLl9iYXRjaFstMV0pLnR0bCh0dGwpLmNyZWF0ZSgqKmt3YXJncykKLSAgICAgICAgZWxz
ZToKLSAgICAgICAgICAgIHNlbGYuX21vZGVsc1t0YWJsZV9uYW1lXS50dGwodHRsKS5jcmVhdGUo
Kiprd2FyZ3MpCi0KLSAgICBAc3RhdGljbWV0aG9kCi0gICAgZGVmIGZpbHRlcl9mb3JfYXJndW1l
bnQoa2V5LCB2YWx1ZSk6Ci0gICAgICAgIGtleV92YWx1ZSA9IGtleS5zcGxpdCgnX18nKVswXQot
ICAgICAgICBvcGVyYXRvciA9IE5vbmUgaWYgbGVuKGtleS5zcGxpdCgnX18nKSkgPT0gMSBlbHNl
IGtleS5zcGxpdCgnX18nKVsxXQotCi0gICAgICAgIGlmIG9wZXJhdG9yID09ICdpbic6Ci0gICAg
ICAgICAgICByZXR1cm4gbGFtYmRhIHYsIGtleV92YWx1ZT1rZXlfdmFsdWUsIHZhbHVlPXZhbHVl
OiBnZXRhdHRyKHYsIGtleV92YWx1ZSkgaW4gdmFsdWUKLSAgICAgICAgZWxpZiBvcGVyYXRvciA9
PSAnZ3QnOgotICAgICAgICAgICAgcmV0dXJuIGxhbWJkYSB2LCBrZXlfdmFsdWU9a2V5X3ZhbHVl
LCB2YWx1ZT12YWx1ZTogZ2V0YXR0cih2LCBrZXlfdmFsdWUpID4gdmFsdWUKLSAgICAgICAgZWxp
ZiBvcGVyYXRvciA9PSAnZ3RlJzoKLSAgICAgICAgICAgIHJldHVybiBsYW1iZGEgdiwga2V5X3Zh
bHVlPWtleV92YWx1ZSwgdmFsdWU9dmFsdWU6IGdldGF0dHIodiwga2V5X3ZhbHVlKSA+PSB2YWx1
ZQotICAgICAgICBlbGlmIG9wZXJhdG9yID09ICdsdCc6Ci0gICAgICAgICAgICByZXR1cm4gbGFt
YmRhIHYsIGtleV92YWx1ZT1rZXlfdmFsdWUsIHZhbHVlPXZhbHVlOiBnZXRhdHRyKHYsIGtleV92
YWx1ZSkgPCB2YWx1ZQotICAgICAgICBlbGlmIG9wZXJhdG9yID09ICdsdGUnOgotICAgICAgICAg
ICAgcmV0dXJuIGxhbWJkYSB2LCBrZXlfdmFsdWU9a2V5X3ZhbHVlLCB2YWx1ZT12YWx1ZTogZ2V0
YXR0cih2LCBrZXlfdmFsdWUpIDw9IHZhbHVlCi0gICAgICAgIGVsaWYgb3BlcmF0b3IgPT0gJ2xp
a2UnOgotCi0gICAgICAgICAgICBkZWYgcmVnZXhfZmlsdGVyKHYsIGtleV92YWx1ZT1rZXlfdmFs
dWUsIHZhbHVlPXZhbHVlKToKLSAgICAgICAgICAgICAgICByZWdleCA9IHJlLmVzY2FwZSh2YWx1
ZSkKLSAgICAgICAgICAgICAgICByZWdleCA9IHJlZ2V4LnJlcGxhY2UocmUuZXNjYXBlKCclJyks
ICcuKicpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGJvb2wocmUubWF0Y2gocidcQScgKyByZWdl
eCArIHInXFonLCBnZXRhdHRyKHYsIGtleV92YWx1ZSkpKQotCi0gICAgICAgICAgICByZXR1cm4g
cmVnZXhfZmlsdGVyCi0KLSAgICAgICAgZWxpZiBvcGVyYXRvciBpcyBOb25lIG9yIG9wZXJhdG9y
IGlzICdpbic6Ci0gICAgICAgICAgICByZXR1cm4gbGFtYmRhIHYsIGtleV92YWx1ZT1rZXlfdmFs
dWUsIHZhbHVlPXZhbHVlOiBnZXRhdHRyKHYsIGtleV92YWx1ZSkgPT0gdmFsdWUKLQotICAgICAg
ICByYWlzZSBzZWxmLlNlbGVjdEV4Y2VwdGlvbignVW5yZWNvZ25pemVkIG9wZXJhdG9yIHt9Jy5m
b3JtYXQob3BlcmF0b3IpKQotCi0gICAgQEFzc2VydENvbm5lY3RlZERlY29yYXRvcigpCi0gICAg
ZGVmIHNlbGVjdF9mcm9tX3RhYmxlKHNlbGYsIHRhYmxlX25hbWUsIGxpbWl0PTEwMDAwLCAqKmt3
YXJncyk6Ci0gICAgICAgIGlmIHRhYmxlX25hbWUgbm90IGluIHNlbGYuX21vZGVsczoKLSAgICAg
ICAgICAgIHJhaXNlIHNlbGYuU2NoZW1hRXhjZXB0aW9uKGYne3RhYmxlX25hbWV9IGRvZXMgbm90
IGV4aXN0IGluIHRoZSBkYXRhYmFzZScpCi0KLSAgICAgICAgY3JlYXRlX2FyZ3MgPSB7fQotICAg
ICAgICBmb3IgbmFtZSwgY29sdW1uIGluIHNlbGYuX21vZGVsc1t0YWJsZV9uYW1lXS5fY29sdW1u
cy5pdGVtcygpOgotICAgICAgICAgICAgaWYgbm90IGNvbHVtbi5wYXJ0aXRpb25fa2V5IGFuZCBu
b3QgY29sdW1uLnByaW1hcnlfa2V5OgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAg
ICAgICBkaWRfZmluZF9jb2x1bW5fbmFtZSA9IEZhbHNlCi0gICAgICAgICAgICB1c2luZ19yYW5n
ZV9xdWVyeSA9IEZhbHNlCi0gICAgICAgICAgICBmb3IgYXJnLCB2YWx1ZSBpbiBrd2FyZ3MuaXRl
bXMoKToKLSAgICAgICAgICAgICAgICAjIGNxbGVuZ2luZSB3aWxsIHVzZSBhcmd1bWVudHMgbGlr
ZSAnPGNvbHVtbl9uYW1lPl9fbGlrZScgdG8gaW5kaWNhdGUgdGhhdCBhbiBhcmd1bWVudCB3aWxs
IGhhdmUgc29tZSBraW5kIG9mCi0gICAgICAgICAgICAgICAgIyBvcGVyYXRpb24gcGVyZm9ybWVk
LiBXZSdyZSBsb29raW5nIGZvciBjb2x1bW4gbmFtZSBoZXJlLgotICAgICAgICAgICAgICAgIGlm
IG5hbWUgPT0gYXJnLnNwbGl0KCdfXycpWzBdIGFuZCB2YWx1ZSBpcyBub3QgTm9uZToKLSAgICAg
ICAgICAgICAgICAgICAgY3JlYXRlX2FyZ3NbYXJnXSA9IHZhbHVlCi0gICAgICAgICAgICAgICAg
ICAgIGRpZF9maW5kX2NvbHVtbl9uYW1lID0gVHJ1ZQotICAgICAgICAgICAgICAgICAgICB1c2lu
Z19yYW5nZV9xdWVyeSA9ICdfXycgaW4gYXJnCi0gICAgICAgICAgICBpZiBub3QgZGlkX2ZpbmRf
Y29sdW1uX25hbWUgb3IgdXNpbmdfcmFuZ2VfcXVlcnk6Ci0gICAgICAgICAgICAgICAgYnJlYWsK
LQotICAgICAgICAjIE5vdCBhbGwgdmVyc2lvbnMgb2YgQ2Fzc2FuZHJhIHN1cHBvcnQgZmlsdGVy
aW5nLiBTaW5jZSBmaWx0ZXJpbmcgaXMgaW5lZmZpY2llbnQgaW4gQ2Fzc2FuZHJhIGFueXdheXMs
IHF1ZXJpZXMgd2hpY2ggcmVseQotICAgICAgICAjIG9uIGZpbHRlcmluZyBzaG91bGQgYmUgYWJs
ZSB0byByZXRyaWV2ZSB0aGUgZGF0YSBmcm9tIHRoZSBkYXRhYmFzZSBhbmQgZmlsdGVyIGl0IHNl
cnZlci1zaWRlLgotICAgICAgICBmaWx0ZXJzID0gW10KLSAgICAgICAgZm9yIGFyZywgdmFsdWUg
aW4ga3dhcmdzLml0ZW1zKCk6Ci0gICAgICAgICAgICBpZiBhcmcgbm90IGluIGNyZWF0ZV9hcmdz
IGFuZCB2YWx1ZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICBmaWx0ZXJzLmFwcGVuZChz
ZWxmLmZpbHRlcl9mb3JfYXJndW1lbnQoYXJnLCB2YWx1ZSkpCi0KLSAgICAgICAgcXVlcnlfdG9f
YmVfcnVuID0gc2VsZi5fbW9kZWxzW3RhYmxlX25hbWVdLm9iamVjdHMoKipjcmVhdGVfYXJncyku
bGltaXQobGltaXQpCi0KLSAgICAgICAgIyBGb3JjZXMgY3FsZW5naW5lIHRvIGRpc3BhdGNoIHRo
ZSBxdWVyeSBiZWZvcmUgZXhpdGluZyB0aGUgZnVuY3Rpb24KLSAgICAgICAgcmVzdWx0ID0gW10K
LSAgICAgICAgZm9yIGVsZW1lbnQgaW4gcXVlcnlfdG9fYmVfcnVuOgotICAgICAgICAgICAgZm9y
IGYgaW4gZmlsdGVyczoKLSAgICAgICAgICAgICAgICBpZiBub3QgZihlbGVtZW50KToKLSAgICAg
ICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAg
cmVzdWx0LmFwcGVuZChlbGVtZW50KQotICAgICAgICByZXR1cm4gcmVzdWx0Ci0KLSAgICBjbGFz
cyBTY2hlbWFFeGNlcHRpb24oUnVudGltZUVycm9yKToKLSAgICAgICAgcGFzcwotCi0gICAgY2xh
c3MgU2VsZWN0RXhjZXB0aW9uKFJ1bnRpbWVFcnJvcik6Ci0gICAgICAgIHBhc3MKSW5kZXg6IFRv
b2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL2Nhc3NhbmRyYV9jb250ZXh0X3VuaXR0
ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVs
L2Nhc3NhbmRyYV9jb250ZXh0X3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNjU1MzEpCisrKyBUb29s
cy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9jYXNzYW5kcmFfY29udGV4dF91bml0dGVz
dC5weQkobm9uZXhpc3RlbnQpCkBAIC0xLDQzOSArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIg
QU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotIyBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUgotIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotIyBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotCi1pbXBvcnQgdGltZQotCi1mcm9tIGNhc3NhbmRyYS5jcWxlbmdp
bmUgaW1wb3J0IGNvbHVtbnMKLWZyb20gY2Fzc2FuZHJhLmNxbGVuZ2luZS5tb2RlbHMgaW1wb3J0
IE1vZGVsCi1mcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLmNhc3NhbmRyYV9jb250ZXh0IGltcG9ydCBD
YXNzYW5kcmFDb250ZXh0LCBSZWdleENsdXN0ZXIKLWZyb20gcmVzdWx0c2RicHkubW9kZWwubW9j
a19jYXNzYW5kcmFfY29udGV4dCBpbXBvcnQgTW9ja0Nhc3NhbmRyYUNvbnRleHQKLWZyb20gcmVz
dWx0c2RicHkubW9kZWwud2FpdF9mb3JfZG9ja2VyX3Rlc3RfY2FzZSBpbXBvcnQgV2FpdEZvckRv
Y2tlclRlc3RDYXNlCi0KLQotY2xhc3MgQ2Fzc2FuZHJhVGVzdChXYWl0Rm9yRG9ja2VyVGVzdENh
c2UpOgotCi0gICAgUkVBTF9DQVNTQU5EUkFfUkVRVUlSRUQgPSAnUmVhbCBDYXNzYW5kcmEgaW5z
dGFuY2UgcmVxdWlyZWQnCi0gICAgS0VZU1BBQ0UgPSAna2V5c3BhY2VfZm9yX3Rlc3RpbmcnCi0g
ICAgVEFCTEUgPSAnZXhhbXBsZV90YWJsZScKLQotICAgIGRlZiBpbml0X2RhdGFiYXNlKHNlbGYs
IGNhc3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0KToKLSAgICAgICAgY2Fzc2FuZHJhLmRyb3Bfa2V5
c3BhY2Uoa2V5c3BhY2U9c2VsZi5LRVlTUEFDRSkKLSAgICAgICAgc2VsZi5kYXRhYmFzZSA9IGNh
c3NhbmRyYShrZXlzcGFjZT1zZWxmLktFWVNQQUNFLCBjcmVhdGVfa2V5c3BhY2U9VHJ1ZSkKLQot
ICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19jYXNzYW5k
cmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCi0gICAgZGVmIHRlc3Rfa2V5c3BhY2VfY3JlYXRpb25f
ZmFpbHVyZShzZWxmLCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCk6Ci0gICAgICAgIHdpdGgg
c2VsZi5hc3NlcnRSYWlzZXMoRXhjZXB0aW9uKToKLSAgICAgICAgICAgIGNhc3NhbmRyYShrZXlz
cGFjZT0nZG9lc19ub3RfZXhpc3QnKQotCi0gICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2Nr
X2lmX25vX2RvY2tlcihtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKLSAgICBk
ZWYgdGVzdF9zZXNzaW9uX2Fzc2VydGlvbihzZWxmLCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4
dCk6Ci0gICAgICAgIHNlbGYuaW5pdF9kYXRhYmFzZShjYXNzYW5kcmE9Y2Fzc2FuZHJhKQotICAg
ICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEFzc2VydGlvbkVycm9yKToKLSAgICAgICAgICAg
IHNlbGYuZGF0YWJhc2UuYXNzZXJ0X2Nvbm5lY3RlZCgpCi0KLSAgICBkZWYgY3JlYXRlX3Rlc3Rp
bmdfdGFibGUoc2VsZik6Ci0gICAgICAgIHdpdGggc2VsZi5kYXRhYmFzZToKLQotICAgICAgICAg
ICAgY2xhc3MgRXhhbXBsZVRhYmxlKE1vZGVsKToKLSAgICAgICAgICAgICAgICBfX3RhYmxlX25h
bWVfXyA9IHNlbGYuVEFCTEUKLSAgICAgICAgICAgICAgICB2YWx1ZTEgPSBjb2x1bW5zLlRleHQo
cGFydGl0aW9uX2tleT1UcnVlKQotICAgICAgICAgICAgICAgIHZhbHVlMiA9IGNvbHVtbnMuSW50
ZWdlcihwcmltYXJ5X2tleT1UcnVlKQotICAgICAgICAgICAgICAgIHZhbHVlMyA9IGNvbHVtbnMu
SW50ZWdlcigpCi0KLSAgICAgICAgICAgIHNlbGYuZGF0YWJhc2UuY3JlYXRlX3RhYmxlKEV4YW1w
bGVUYWJsZSkKLSAgICAgICAgICAgIHJldHVybiBFeGFtcGxlVGFibGUKLQotICAgIEBXYWl0Rm9y
RG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19jYXNzYW5kcmE9TW9ja0Nhc3Nh
bmRyYUNvbnRleHQpCi0gICAgZGVmIHRlc3RfY3JlYXRlX3RhYmxlKHNlbGYsIGNhc3NhbmRyYT1D
YXNzYW5kcmFDb250ZXh0KToKLSAgICAgICAgc2VsZi5pbml0X2RhdGFiYXNlKGNhc3NhbmRyYT1j
YXNzYW5kcmEpCi0gICAgICAgIHdpdGggc2VsZi5kYXRhYmFzZToKLSAgICAgICAgICAgIGV4YW1w
bGVfdGFibGUgPSBzZWxmLmNyZWF0ZV90ZXN0aW5nX3RhYmxlKCkKLSAgICAgICAgICAgIHNlbGYu
YXNzZXJ0VHJ1ZShzZWxmLmRhdGFiYXNlLmRvZXNfdGFibGVfbW9kZWxfbWF0Y2hfc2NoZW1hKGV4
YW1wbGVfdGFibGUpKQotCi0gICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2Rv
Y2tlcihtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKLSAgICBkZWYgdGVzdF9l
eGlzdGluZ190YWJsZV9tb3JlX2NvbHVtbnMoc2VsZiwgY2Fzc2FuZHJhPUNhc3NhbmRyYUNvbnRl
eHQpOgotICAgICAgICBzZWxmLmluaXRfZGF0YWJhc2UoY2Fzc2FuZHJhPWNhc3NhbmRyYSkKLSAg
ICAgICAgd2l0aCBzZWxmLmRhdGFiYXNlOgotICAgICAgICAgICAgc2VsZi5jcmVhdGVfdGVzdGlu
Z190YWJsZSgpCi0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKENhc3NhbmRyYUNv
bnRleHQuU2NoZW1hRXhjZXB0aW9uKToKLQotICAgICAgICAgICAgICAgIGNsYXNzIEV4YW1wbGVU
YWJsZShNb2RlbCk6Ci0gICAgICAgICAgICAgICAgICAgIF9fdGFibGVfbmFtZV9fID0gc2VsZi5U
QUJMRQotICAgICAgICAgICAgICAgICAgICB2YWx1ZTEgPSBjb2x1bW5zLlRleHQocGFydGl0aW9u
X2tleT1UcnVlKQotICAgICAgICAgICAgICAgICAgICB2YWx1ZTIgPSBjb2x1bW5zLkludGVnZXIo
cHJpbWFyeV9rZXk9VHJ1ZSkKLSAgICAgICAgICAgICAgICAgICAgdmFsdWUzID0gY29sdW1ucy5J
bnRlZ2VyKCkKLSAgICAgICAgICAgICAgICAgICAgdmFsdWU0ID0gY29sdW1ucy5UZXh0KCkKLQot
ICAgICAgICAgICAgICAgIHNlbGYuZGF0YWJhc2UuY3JlYXRlX3RhYmxlKEV4YW1wbGVUYWJsZSkK
LQotICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19jYXNz
YW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCi0gICAgZGVmIHRlc3RfZXhpc3RpbmdfdGFibGVf
ZGlmZmVyZW50X2NvbHVtbnMoc2VsZiwgY2Fzc2FuZHJhPUNhc3NhbmRyYUNvbnRleHQpOgotICAg
ICAgICBzZWxmLmluaXRfZGF0YWJhc2UoY2Fzc2FuZHJhPWNhc3NhbmRyYSkKLSAgICAgICAgd2l0
aCBzZWxmLmRhdGFiYXNlOgotICAgICAgICAgICAgc2VsZi5jcmVhdGVfdGVzdGluZ190YWJsZSgp
Ci0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKENhc3NhbmRyYUNvbnRleHQuU2No
ZW1hRXhjZXB0aW9uKToKLQotICAgICAgICAgICAgICAgIGNsYXNzIEV4YW1wbGVUYWJsZShNb2Rl
bCk6Ci0gICAgICAgICAgICAgICAgICAgIF9fdGFibGVfbmFtZV9fID0gc2VsZi5UQUJMRQotICAg
ICAgICAgICAgICAgICAgICB2YWx1ZTEgPSBjb2x1bW5zLlRleHQocGFydGl0aW9uX2tleT1UcnVl
KQotICAgICAgICAgICAgICAgICAgICB2YWx1ZTIgPSBjb2x1bW5zLkludGVnZXIocHJpbWFyeV9r
ZXk9VHJ1ZSkKLSAgICAgICAgICAgICAgICAgICAgdmFsdWUzID0gY29sdW1ucy5UZXh0KCkKLQot
ICAgICAgICAgICAgICAgIHNlbGYuZGF0YWJhc2UuY3JlYXRlX3RhYmxlKEV4YW1wbGVUYWJsZSkK
LQotICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19jYXNz
YW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCi0gICAgZGVmIHRlc3RfZXhpc3RpbmdfdGFibGVf
ZGlmZmVyZW50X3ByaW1hcnlfa2V5KHNlbGYsIGNhc3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0KToK
LSAgICAgICAgc2VsZi5pbml0X2RhdGFiYXNlKGNhc3NhbmRyYT1jYXNzYW5kcmEpCi0gICAgICAg
IHdpdGggc2VsZi5kYXRhYmFzZToKLSAgICAgICAgICAgIHNlbGYuY3JlYXRlX3Rlc3RpbmdfdGFi
bGUoKQotICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhDYXNzYW5kcmFDb250ZXh0
LlNjaGVtYUV4Y2VwdGlvbik6Ci0KLSAgICAgICAgICAgICAgICBjbGFzcyBFeGFtcGxlVGFibGUo
TW9kZWwpOgotICAgICAgICAgICAgICAgICAgICBfX3RhYmxlX25hbWVfXyA9IHNlbGYuVEFCTEUK
LSAgICAgICAgICAgICAgICAgICAgdmFsdWUxID0gY29sdW1ucy5UZXh0KHBhcnRpdGlvbl9rZXk9
VHJ1ZSkKLSAgICAgICAgICAgICAgICAgICAgdmFsdWUyID0gY29sdW1ucy5JbnRlZ2VyKCkKLSAg
ICAgICAgICAgICAgICAgICAgdmFsdWUzID0gY29sdW1ucy5JbnRlZ2VyKHByaW1hcnlfa2V5PVRy
dWUpCi0KLSAgICAgICAgICAgICAgICBzZWxmLmRhdGFiYXNlLmNyZWF0ZV90YWJsZShFeGFtcGxl
VGFibGUpCi0KLSAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1v
Y2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQotICAgIGRlZiB0ZXN0X2V4aXN0aW5n
X3RhYmxlX2RpZmZlcmVudF9jbHVzdGVyaW5nX29yZGVyKHNlbGYsIGNhc3NhbmRyYT1DYXNzYW5k
cmFDb250ZXh0KToKLSAgICAgICAgc2VsZi5pbml0X2RhdGFiYXNlKGNhc3NhbmRyYT1jYXNzYW5k
cmEpCi0gICAgICAgIHdpdGggc2VsZi5kYXRhYmFzZToKLSAgICAgICAgICAgIHNlbGYuY3JlYXRl
X3Rlc3RpbmdfdGFibGUoKQotICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhDYXNz
YW5kcmFDb250ZXh0LlNjaGVtYUV4Y2VwdGlvbik6Ci0KLSAgICAgICAgICAgICAgICBjbGFzcyBF
eGFtcGxlVGFibGUoTW9kZWwpOgotICAgICAgICAgICAgICAgICAgICBfX3RhYmxlX25hbWVfXyA9
IHNlbGYuVEFCTEUKLSAgICAgICAgICAgICAgICAgICAgdmFsdWUxID0gY29sdW1ucy5UZXh0KHBh
cnRpdGlvbl9rZXk9VHJ1ZSkKLSAgICAgICAgICAgICAgICAgICAgdmFsdWUyID0gY29sdW1ucy5J
bnRlZ2VyKHByaW1hcnlfa2V5PVRydWUsIGNsdXN0ZXJpbmdfb3JkZXI9J0RFU0MnKQotICAgICAg
ICAgICAgICAgICAgICB2YWx1ZTMgPSBjb2x1bW5zLkludGVnZXIoKQotCi0gICAgICAgICAgICAg
ICAgc2VsZi5kYXRhYmFzZS5jcmVhdGVfdGFibGUoRXhhbXBsZVRhYmxlKQotCi0gICAgQFdhaXRG
b3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fz
c2FuZHJhQ29udGV4dCkKLSAgICBkZWYgdGVzdF9leGlzdGluZ190YWJsZV9jb2x1bW5fb3JkZXIo
c2VsZiwgY2Fzc2FuZHJhPUNhc3NhbmRyYUNvbnRleHQpOgotICAgICAgICBzZWxmLmluaXRfZGF0
YWJhc2UoY2Fzc2FuZHJhPWNhc3NhbmRyYSkKLSAgICAgICAgd2l0aCBzZWxmLmRhdGFiYXNlOgot
Ci0gICAgICAgICAgICBjbGFzcyBFeGFtcGxlVGFibGUoTW9kZWwpOgotICAgICAgICAgICAgICAg
IF9fdGFibGVfbmFtZV9fID0gc2VsZi5UQUJMRQotICAgICAgICAgICAgICAgIHZhbHVlMSA9IGNv
bHVtbnMuVGV4dChwYXJ0aXRpb25fa2V5PVRydWUpCi0gICAgICAgICAgICAgICAgdmFsdWUyID0g
Y29sdW1ucy5JbnRlZ2VyKHByaW1hcnlfa2V5PVRydWUpCi0gICAgICAgICAgICAgICAgdmFsdWUz
ID0gY29sdW1ucy5UZXh0KHByaW1hcnlfa2V5PVRydWUpCi0gICAgICAgICAgICAgICAgdmFsdWU0
ID0gY29sdW1ucy5JbnRlZ2VyKCkKLQotICAgICAgICAgICAgc2VsZi5kYXRhYmFzZS5jcmVhdGVf
dGFibGUoRXhhbXBsZVRhYmxlKQotCi0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2Vz
KENhc3NhbmRyYUNvbnRleHQuU2NoZW1hRXhjZXB0aW9uKToKLSAgICAgICAgICAgICAgICBjbGFz
cyBFeGFtcGxlVGFibGUoTW9kZWwpOgotICAgICAgICAgICAgICAgICAgICBfX3RhYmxlX25hbWVf
XyA9IHNlbGYuVEFCTEUKLSAgICAgICAgICAgICAgICAgICAgdmFsdWUxID0gY29sdW1ucy5UZXh0
KHBhcnRpdGlvbl9rZXk9VHJ1ZSkKLSAgICAgICAgICAgICAgICAgICAgdmFsdWUzID0gY29sdW1u
cy5UZXh0KHByaW1hcnlfa2V5PVRydWUpCi0gICAgICAgICAgICAgICAgICAgIHZhbHVlMiA9IGNv
bHVtbnMuSW50ZWdlcihwcmltYXJ5X2tleT1UcnVlKQotICAgICAgICAgICAgICAgICAgICB2YWx1
ZTQgPSBjb2x1bW5zLkludGVnZXIoKQotCi0gICAgICAgICAgICAgICAgc2VsZi5kYXRhYmFzZS5j
cmVhdGVfdGFibGUoRXhhbXBsZVRhYmxlKQotCi0gICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5t
b2NrX2lmX25vX2RvY2tlcihtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKLSAg
ICBkZWYgdGVzdF9pbnNlcnRfcm93cyhzZWxmLCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCk6
Ci0gICAgICAgIHNlbGYuaW5pdF9kYXRhYmFzZShjYXNzYW5kcmE9Y2Fzc2FuZHJhKQotICAgICAg
ICB3aXRoIHNlbGYuZGF0YWJhc2U6Ci0KLSAgICAgICAgICAgIGNsYXNzIEV4YW1wbGVUYWJsZShN
b2RlbCk6Ci0gICAgICAgICAgICAgICAgX190YWJsZV9uYW1lX18gPSBzZWxmLlRBQkxFCi0gICAg
ICAgICAgICAgICAgdmFsdWUxID0gY29sdW1ucy5UZXh0KHBhcnRpdGlvbl9rZXk9VHJ1ZSkKLSAg
ICAgICAgICAgICAgICB2YWx1ZTIgPSBjb2x1bW5zLkludGVnZXIocHJpbWFyeV9rZXk9VHJ1ZSkK
LSAgICAgICAgICAgICAgICB2YWx1ZTMgPSBjb2x1bW5zLlRleHQoKQotCi0gICAgICAgICAgICBz
ZWxmLmRhdGFiYXNlLmNyZWF0ZV90YWJsZShFeGFtcGxlVGFibGUpCi0KLSAgICAgICAgICAgIGZv
ciBpIGluIHJhbmdlKDEwKToKLSAgICAgICAgICAgICAgICBmb3IgaiBpbiByYW5nZSgxMCk6Ci0g
ICAgICAgICAgICAgICAgICAgIHNlbGYuZGF0YWJhc2UuaW5zZXJ0X3JvdyhzZWxmLlRBQkxFLCB2
YWx1ZTE9ZidrZXl7aX0nLCB2YWx1ZTI9aiwgdmFsdWUzPWYndmFsdWV7aX0te2p9JykKLQotICAg
ICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMTApOgotICAgICAgICAgICAgICAgIGZvciBqIGluIHJh
bmdlKDEwKToKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gc2VsZi5kYXRhYmFzZS5zZWxl
Y3RfZnJvbV90YWJsZShzZWxmLlRBQkxFLCB2YWx1ZTE9ZidrZXl7aX0nLCB2YWx1ZTI9aikKLSAg
ICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4ocmVzdWx0KSkKLSAgICAg
ICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHRbMF0sIEV4YW1wbGVUYWJsZSh2
YWx1ZTE9ZidrZXl7aX0nLCB2YWx1ZTI9aiwgdmFsdWUzPWYndmFsdWV7aX0te2p9JykpCi0KLSAg
ICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfY2Fzc2FuZHJh
PU1vY2tDYXNzYW5kcmFDb250ZXh0KQotICAgIGRlZiB0ZXN0X2R1cGxpY2F0ZV9yb3coc2VsZiwg
Y2Fzc2FuZHJhPUNhc3NhbmRyYUNvbnRleHQpOgotICAgICAgICBzZWxmLmluaXRfZGF0YWJhc2Uo
Y2Fzc2FuZHJhPWNhc3NhbmRyYSkKLSAgICAgICAgd2l0aCBzZWxmLmRhdGFiYXNlOgotCi0gICAg
ICAgICAgICBjbGFzcyBFeGFtcGxlVGFibGUoTW9kZWwpOgotICAgICAgICAgICAgICAgIF9fdGFi
bGVfbmFtZV9fID0gc2VsZi5UQUJMRQotICAgICAgICAgICAgICAgIHZhbHVlMSA9IGNvbHVtbnMu
VGV4dChwYXJ0aXRpb25fa2V5PVRydWUpCi0gICAgICAgICAgICAgICAgdmFsdWUyID0gY29sdW1u
cy5JbnRlZ2VyKHByaW1hcnlfa2V5PVRydWUpCi0gICAgICAgICAgICAgICAgdmFsdWUzID0gY29s
dW1ucy5UZXh0KCkKLQotICAgICAgICAgICAgc2VsZi5kYXRhYmFzZS5jcmVhdGVfdGFibGUoRXhh
bXBsZVRhYmxlKQotCi0gICAgICAgICAgICBzZWxmLmRhdGFiYXNlLmluc2VydF9yb3coc2VsZi5U
QUJMRSwgdmFsdWUxPSdrZXknLCB2YWx1ZTI9MSwgdmFsdWUzPSdkdXBsaWNhdGUtMScpCi0gICAg
ICAgICAgICBzZWxmLmRhdGFiYXNlLmluc2VydF9yb3coc2VsZi5UQUJMRSwgdmFsdWUxPSdrZXkn
LCB2YWx1ZTI9MSwgdmFsdWUzPSdkdXBsaWNhdGUtMicpCi0KLSAgICAgICAgICAgIHJlc3VsdCA9
IHNlbGYuZGF0YWJhc2Uuc2VsZWN0X2Zyb21fdGFibGUoc2VsZi5UQUJMRSwgdmFsdWUxPSdrZXkn
LCB2YWx1ZTI9MSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKHJlc3VsdCkp
Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdFswXSwgRXhhbXBsZVRhYmxlKHZh
bHVlMT0na2V5JywgdmFsdWUyPTEsIHZhbHVlMz0nZHVwbGljYXRlLTInKSkKLQotICAgIEBXYWl0
Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19jYXNzYW5kcmE9TW9ja0Nh
c3NhbmRyYUNvbnRleHQpCi0gICAgZGVmIHRlc3Rfc2VhcmNoX2J5X290aGVyX3ZhbHVlKHNlbGYs
IGNhc3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0KToKLSAgICAgICAgc2VsZi5pbml0X2RhdGFiYXNl
KGNhc3NhbmRyYT1jYXNzYW5kcmEpCi0gICAgICAgIHdpdGggc2VsZi5kYXRhYmFzZToKLQotICAg
ICAgICAgICAgY2xhc3MgRXhhbXBsZVRhYmxlKE1vZGVsKToKLSAgICAgICAgICAgICAgICBfX3Rh
YmxlX25hbWVfXyA9IHNlbGYuVEFCTEUKLSAgICAgICAgICAgICAgICB2YWx1ZTEgPSBjb2x1bW5z
LlRleHQocGFydGl0aW9uX2tleT1UcnVlKQotICAgICAgICAgICAgICAgIHZhbHVlMiA9IFJlZ2V4
Q2x1c3RlcihwcmltYXJ5X2tleT1UcnVlKQotICAgICAgICAgICAgICAgIHZhbHVlMyA9IGNvbHVt
bnMuSW50ZWdlcigpCi0KLSAgICAgICAgICAgIHNlbGYuZGF0YWJhc2UuY3JlYXRlX3RhYmxlKEV4
YW1wbGVUYWJsZSkKLQotICAgICAgICAgICAgc2VsZi5kYXRhYmFzZS5pbnNlcnRfcm93KHNlbGYu
VEFCTEUsIHZhbHVlMT0na2V5JywgdmFsdWUyPSd2YWx1ZSAxJywgdmFsdWUzPTEpCi0gICAgICAg
ICAgICBzZWxmLmRhdGFiYXNlLmluc2VydF9yb3coc2VsZi5UQUJMRSwgdmFsdWUxPSdrZXknLCB2
YWx1ZTI9J290aGVyIDEnLCB2YWx1ZTM9MikKLSAgICAgICAgICAgIHNlbGYuZGF0YWJhc2UuaW5z
ZXJ0X3JvdyhzZWxmLlRBQkxFLCB2YWx1ZTE9J2tleScsIHZhbHVlMj0nb3RoZXIgMicsIHZhbHVl
Mz0zKQotCi0gICAgICAgICAgICByZXN1bHQgPSBzZWxmLmRhdGFiYXNlLnNlbGVjdF9mcm9tX3Rh
YmxlKHNlbGYuVEFCTEUsIHZhbHVlMl9fbGlrZT0ndmFsdWUlJywgdmFsdWUxPSdrZXknKQotICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4ocmVzdWx0KSkKLSAgICAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwocmVzdWx0WzBdLCBFeGFtcGxlVGFibGUodmFsdWUxPSdrZXknLCB2YWx1
ZTI9J3ZhbHVlIDEnLCB2YWx1ZTM9MSkpCi0KLSAgICAgICAgICAgIHJlc3VsdCA9IHNlbGYuZGF0
YWJhc2Uuc2VsZWN0X2Zyb21fdGFibGUoc2VsZi5UQUJMRSwgdmFsdWUyX19saWtlPSdvdGhlciUn
LCB2YWx1ZTE9J2tleScpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDIsIGxlbihyZXN1
bHQpKQotCi0gICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2Nr
X2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKLSAgICBkZWYgdGVzdF9zZWFyY2hfd2l0
aF9tdWx0aXBsZV9rZXlzKHNlbGYsIGNhc3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0KToKLSAgICAg
ICAgc2VsZi5pbml0X2RhdGFiYXNlKGNhc3NhbmRyYT1jYXNzYW5kcmEpCi0gICAgICAgIHdpdGgg
c2VsZi5kYXRhYmFzZToKLQotICAgICAgICAgICAgY2xhc3MgRXhhbXBsZVRhYmxlKE1vZGVsKToK
LSAgICAgICAgICAgICAgICBfX3RhYmxlX25hbWVfXyA9IHNlbGYuVEFCTEUKLSAgICAgICAgICAg
ICAgICB2YWx1ZTEgPSBjb2x1bW5zLlRleHQocGFydGl0aW9uX2tleT1UcnVlKQotICAgICAgICAg
ICAgICAgIHZhbHVlMiA9IGNvbHVtbnMuVGV4dChwcmltYXJ5X2tleT1UcnVlKQotICAgICAgICAg
ICAgICAgIHZhbHVlMyA9IGNvbHVtbnMuSW50ZWdlcigpCi0KLSAgICAgICAgICAgIHNlbGYuZGF0
YWJhc2UuY3JlYXRlX3RhYmxlKEV4YW1wbGVUYWJsZSkKLQotICAgICAgICAgICAgc2VsZi5kYXRh
YmFzZS5pbnNlcnRfcm93KHNlbGYuVEFCTEUsIHZhbHVlMT0na2V5MScsIHZhbHVlMj0ndmFsdWUx
JywgdmFsdWUzPTEpCi0gICAgICAgICAgICBzZWxmLmRhdGFiYXNlLmluc2VydF9yb3coc2VsZi5U
QUJMRSwgdmFsdWUxPSdrZXkyJywgdmFsdWUyPSd2YWx1ZTEnLCB2YWx1ZTM9MikKLSAgICAgICAg
ICAgIHNlbGYuZGF0YWJhc2UuaW5zZXJ0X3JvdyhzZWxmLlRBQkxFLCB2YWx1ZTE9J2tleTMnLCB2
YWx1ZTI9J3ZhbHVlMScsIHZhbHVlMz0zKQotCi0gICAgICAgICAgICByZXN1bHQgPSBzZWxmLmRh
dGFiYXNlLnNlbGVjdF9mcm9tX3RhYmxlKHNlbGYuVEFCTEUsIHZhbHVlMV9faW49WydrZXkxJywg
J2tleTInXSwgdmFsdWUyPSd2YWx1ZTEnKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgy
LCBsZW4ocmVzdWx0KSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oRXhhbXBsZVRhYmxlKHZh
bHVlMT0na2V5MScsIHZhbHVlMj0ndmFsdWUxJywgdmFsdWUzPTEpLCByZXN1bHQpCi0gICAgICAg
ICAgICBzZWxmLmFzc2VydEluKEV4YW1wbGVUYWJsZSh2YWx1ZTE9J2tleTInLCB2YWx1ZTI9J3Zh
bHVlMScsIHZhbHVlMz0yKSwgcmVzdWx0KQotCi0gICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5t
b2NrX2lmX25vX2RvY2tlcihtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKLSAg
ICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLnJ1bl9pZl9zbG93KCkKLSAgICBkZWYgdGVzdF90aW1l
X3RvX2xpdmUoc2VsZiwgY2Fzc2FuZHJhPUNhc3NhbmRyYUNvbnRleHQpOgotICAgICAgICBzZWxm
LmluaXRfZGF0YWJhc2UoY2Fzc2FuZHJhPWNhc3NhbmRyYSkKLSAgICAgICAgd2l0aCBzZWxmLmRh
dGFiYXNlOgotCi0gICAgICAgICAgICBjbGFzcyBFeGFtcGxlVGFibGUoTW9kZWwpOgotICAgICAg
ICAgICAgICAgIF9fdGFibGVfbmFtZV9fID0gc2VsZi5UQUJMRQotICAgICAgICAgICAgICAgIHZh
bHVlMSA9IGNvbHVtbnMuVGV4dChwYXJ0aXRpb25fa2V5PVRydWUpCi0gICAgICAgICAgICAgICAg
dmFsdWUyID0gY29sdW1ucy5JbnRlZ2VyKHByaW1hcnlfa2V5PVRydWUpCi0gICAgICAgICAgICAg
ICAgdmFsdWUzID0gY29sdW1ucy5UZXh0KCkKLQotICAgICAgICAgICAgc2VsZi5kYXRhYmFzZS5j
cmVhdGVfdGFibGUoRXhhbXBsZVRhYmxlKQotCi0gICAgICAgICAgICBzZWxmLmRhdGFiYXNlLmlu
c2VydF9yb3coc2VsZi5UQUJMRSwgdmFsdWUxPSdrZXknLCB2YWx1ZTI9MSwgdmFsdWUzPSd2YWx1
ZS10by1raWxsJywgdHRsPTEpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihz
ZWxmLmRhdGFiYXNlLnNlbGVjdF9mcm9tX3RhYmxlKHNlbGYuVEFCTEUsIHZhbHVlMT0na2V5Jywg
dmFsdWUyPTEpKSkKLSAgICAgICAgICAgIHRpbWUuc2xlZXAoMSkKLSAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoMCwgbGVuKHNlbGYuZGF0YWJhc2Uuc2VsZWN0X2Zyb21fdGFibGUoc2VsZi5U
QUJMRSwgdmFsdWUxPSdrZXknLCB2YWx1ZTI9MSkpKQotCi0gICAgZGVmIHBvcHVsYXRlX2NvbXBh
cmlzb25fdGFibGUoc2VsZiwgY2x1c3RlcmluZ19vcmRlcj0nQVNDJyk6Ci0gICAgICAgIHdpdGgg
c2VsZi5kYXRhYmFzZToKLQotICAgICAgICAgICAgY2xhc3MgRXhhbXBsZVRhYmxlKE1vZGVsKToK
LSAgICAgICAgICAgICAgICBfX3RhYmxlX25hbWVfXyA9IHNlbGYuVEFCTEUKLSAgICAgICAgICAg
ICAgICB2YWx1ZTEgPSBjb2x1bW5zLlRleHQocGFydGl0aW9uX2tleT1UcnVlKQotICAgICAgICAg
ICAgICAgIHZhbHVlMiA9IGNvbHVtbnMuSW50ZWdlcihwcmltYXJ5X2tleT1UcnVlLCBjbHVzdGVy
aW5nX29yZGVyPWNsdXN0ZXJpbmdfb3JkZXIpCi0gICAgICAgICAgICAgICAgdmFsdWUzID0gY29s
dW1ucy5UZXh0KCkKLQotICAgICAgICAgICAgc2VsZi5kYXRhYmFzZS5jcmVhdGVfdGFibGUoRXhh
bXBsZVRhYmxlKQotICAgICAgICAgICAga2V5cyA9IFsnb25lJywgJ3R3bycsICd0aHJlZScsICdm
b3VyJywgJ2ZpdmUnXQotICAgICAgICAgICAgZm9yIGluZGV4IGluIHJhbmdlKGxlbihrZXlzKSk6
Ci0gICAgICAgICAgICAgICAgZm9yIHZhbHVlIGluIHJhbmdlKGluZGV4ICsgMSk6Ci0gICAgICAg
ICAgICAgICAgICAgIHNlbGYuZGF0YWJhc2UuaW5zZXJ0X3JvdygKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHNlbGYuVEFCTEUsIHZhbHVlMT1rZXlzW2luZGV4XSwgdmFsdWUyPXZhbHVlICsgMSwK
LSAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlMz1mJ3trZXlzW2luZGV4XX0te3ZhbHVlICsg
MX0nLAotICAgICAgICAgICAgICAgICAgICApCi0KLSAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNl
Lm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQot
ICAgIGRlZiB0ZXN0X2xpbWl0KHNlbGYsIGNhc3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0KToKLSAg
ICAgICAgc2VsZi5pbml0X2RhdGFiYXNlKGNhc3NhbmRyYT1jYXNzYW5kcmEpCi0gICAgICAgIHdp
dGggc2VsZi5kYXRhYmFzZToKLSAgICAgICAgICAgIHNlbGYucG9wdWxhdGVfY29tcGFyaXNvbl90
YWJsZSgpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZWxmLmRhdGFiYXNlLnNl
bGVjdF9mcm9tX3RhYmxlKHNlbGYuVEFCTEUsIHZhbHVlMT0nZml2ZScpKSwgNSkKLSAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlbGYuZGF0YWJhc2Uuc2VsZWN0X2Zyb21fdGFibGUo
c2VsZi5UQUJMRSwgdmFsdWUxX19pbj1bJ2ZvdXInLCAnZml2ZSddKSksIDkpCi0gICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZWxmLmRhdGFiYXNlLnNlbGVjdF9mcm9tX3RhYmxlKHNl
bGYuVEFCTEUsIHZhbHVlMT0nZml2ZScsIGxpbWl0PTMpKSwgMykKLQotICAgIEBXYWl0Rm9yRG9j
a2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRy
YUNvbnRleHQpCi0gICAgZGVmIHRlc3Rfb3JkZXIoc2VsZiwgY2Fzc2FuZHJhPUNhc3NhbmRyYUNv
bnRleHQpOgotICAgICAgICBzZWxmLmluaXRfZGF0YWJhc2UoY2Fzc2FuZHJhPWNhc3NhbmRyYSkK
LSAgICAgICAgd2l0aCBzZWxmLmRhdGFiYXNlOgotICAgICAgICAgICAgc2VsZi5wb3B1bGF0ZV9j
b21wYXJpc29uX3RhYmxlKCkKLSAgICAgICAgICAgIHByZXZpb3VzID0gTm9uZQotICAgICAgICAg
ICAgcmVzdWx0cyA9IHNlbGYuZGF0YWJhc2Uuc2VsZWN0X2Zyb21fdGFibGUoc2VsZi5UQUJMRSwg
dmFsdWUxPSdmaXZlJykKLSAgICAgICAgICAgIGZvciByZXN1bHQgaW4gcmVzdWx0czoKLSAgICAg
ICAgICAgICAgICBpZiBwcmV2aW91czoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRM
ZXNzKHByZXZpb3VzLnZhbHVlMiwgcmVzdWx0LnZhbHVlMikKLSAgICAgICAgICAgICAgICBwcmV2
aW91cyA9IHJlc3VsdAotCi0gICAgICAgICAgICBwcmV2aW91cyA9IE5vbmUKLSAgICAgICAgICAg
IHJlc3VsdHMgPSBzZWxmLmRhdGFiYXNlLnNlbGVjdF9mcm9tX3RhYmxlKHNlbGYuVEFCTEUsIHZh
bHVlMT0nZml2ZScsIGxpbWl0PTMpCi0gICAgICAgICAgICBmb3IgcmVzdWx0IGluIHJlc3VsdHM6
Ci0gICAgICAgICAgICAgICAgaWYgcHJldmlvdXM6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYu
YXNzZXJ0TGVzcyhwcmV2aW91cy52YWx1ZTIsIHJlc3VsdC52YWx1ZTIpCi0gICAgICAgICAgICAg
ICAgcHJldmlvdXMgPSByZXN1bHQKLQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1
bHRzWzBdLnZhbHVlMiwgMSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0c1st
MV0udmFsdWUyLCAzKQotCi0gICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2Rv
Y2tlcihtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKLSAgICBkZWYgdGVzdF9y
ZXZlcnNlX29yZGVyKHNlbGYsIGNhc3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0KToKLSAgICAgICAg
c2VsZi5pbml0X2RhdGFiYXNlKGNhc3NhbmRyYT1jYXNzYW5kcmEpCi0gICAgICAgIHdpdGggc2Vs
Zi5kYXRhYmFzZToKLSAgICAgICAgICAgIHNlbGYucG9wdWxhdGVfY29tcGFyaXNvbl90YWJsZShj
bHVzdGVyaW5nX29yZGVyPSdERVNDJykKLSAgICAgICAgICAgIHByZXZpb3VzID0gTm9uZQotICAg
ICAgICAgICAgcmVzdWx0cyA9IHNlbGYuZGF0YWJhc2Uuc2VsZWN0X2Zyb21fdGFibGUoc2VsZi5U
QUJMRSwgdmFsdWUxPSdmaXZlJykKLSAgICAgICAgICAgIGZvciByZXN1bHQgaW4gcmVzdWx0czoK
LSAgICAgICAgICAgICAgICBpZiBwcmV2aW91czoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5h
c3NlcnRHcmVhdGVyKHByZXZpb3VzLnZhbHVlMiwgcmVzdWx0LnZhbHVlMikKLSAgICAgICAgICAg
ICAgICBwcmV2aW91cyA9IHJlc3VsdAotCi0gICAgICAgICAgICBwcmV2aW91cyA9IE5vbmUKLSAg
ICAgICAgICAgIHJlc3VsdHMgPSBzZWxmLmRhdGFiYXNlLnNlbGVjdF9mcm9tX3RhYmxlKHNlbGYu
VEFCTEUsIHZhbHVlMT0nZml2ZScsIGxpbWl0PTMpCi0gICAgICAgICAgICBmb3IgcmVzdWx0IGlu
IHJlc3VsdHM6Ci0gICAgICAgICAgICAgICAgaWYgcHJldmlvdXM6Ci0gICAgICAgICAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihwcmV2aW91cy52YWx1ZTIsIHJlc3VsdC52YWx1ZTIpCi0g
ICAgICAgICAgICAgICAgcHJldmlvdXMgPSByZXN1bHQKLQotICAgICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChyZXN1bHRzWzBdLnZhbHVlMiwgNSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwocmVzdWx0c1stMV0udmFsdWUyLCAzKQotCi0gICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5t
b2NrX2lmX25vX2RvY2tlcihtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKLSAg
ICBkZWYgdGVzdF9ndChzZWxmLCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCk6Ci0gICAgICAg
IHNlbGYuaW5pdF9kYXRhYmFzZShjYXNzYW5kcmE9Y2Fzc2FuZHJhKQotICAgICAgICB3aXRoIHNl
bGYuZGF0YWJhc2U6Ci0gICAgICAgICAgICBzZWxmLnBvcHVsYXRlX2NvbXBhcmlzb25fdGFibGUo
KQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VsZi5kYXRhYmFzZS5zZWxlY3Rf
ZnJvbV90YWJsZShzZWxmLlRBQkxFLCB2YWx1ZTE9J29uZScsIHZhbHVlMl9fZ3Q9MSkpLCAwKQot
ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VsZi5kYXRhYmFzZS5zZWxlY3RfZnJv
bV90YWJsZShzZWxmLlRBQkxFLCB2YWx1ZTE9J3R3bycsIHZhbHVlMl9fZ3Q9MSkpLCAxKQotICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VsZi5kYXRhYmFzZS5zZWxlY3RfZnJvbV90
YWJsZShzZWxmLlRBQkxFLCB2YWx1ZTE9J3RocmVlJywgdmFsdWUyX19ndD0xKSksIDIpCi0KLSAg
ICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfY2Fzc2FuZHJh
PU1vY2tDYXNzYW5kcmFDb250ZXh0KQotICAgIGRlZiB0ZXN0X2x0KHNlbGYsIGNhc3NhbmRyYT1D
YXNzYW5kcmFDb250ZXh0KToKLSAgICAgICAgc2VsZi5pbml0X2RhdGFiYXNlKGNhc3NhbmRyYT1j
YXNzYW5kcmEpCi0gICAgICAgIHdpdGggc2VsZi5kYXRhYmFzZToKLSAgICAgICAgICAgIHNlbGYu
cG9wdWxhdGVfY29tcGFyaXNvbl90YWJsZSgpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGxlbihzZWxmLmRhdGFiYXNlLnNlbGVjdF9mcm9tX3RhYmxlKHNlbGYuVEFCTEUsIHZhbHVlMT0n
b25lJywgdmFsdWUyX19sdD0xKSksIDApCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxl
bihzZWxmLmRhdGFiYXNlLnNlbGVjdF9mcm9tX3RhYmxlKHNlbGYuVEFCTEUsIHZhbHVlMT0ndHdv
JywgdmFsdWUyX19sdD0yKSksIDEpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihz
ZWxmLmRhdGFiYXNlLnNlbGVjdF9mcm9tX3RhYmxlKHNlbGYuVEFCTEUsIHZhbHVlMT0ndGhyZWUn
LCB2YWx1ZTJfX2x0PTMpKSwgMikKLQotICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19p
Zl9ub19kb2NrZXIobW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCi0gICAgZGVm
IHRlc3RfZ3RlKHNlbGYsIGNhc3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0KToKLSAgICAgICAgc2Vs
Zi5pbml0X2RhdGFiYXNlKGNhc3NhbmRyYT1jYXNzYW5kcmEpCi0gICAgICAgIHdpdGggc2VsZi5k
YXRhYmFzZToKLSAgICAgICAgICAgIHNlbGYucG9wdWxhdGVfY29tcGFyaXNvbl90YWJsZSgpCi0g
ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZWxmLmRhdGFiYXNlLnNlbGVjdF9mcm9t
X3RhYmxlKHNlbGYuVEFCTEUsIHZhbHVlMT0nb25lJywgdmFsdWUyX19ndGU9MikpLCAwKQotICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VsZi5kYXRhYmFzZS5zZWxlY3RfZnJvbV90
YWJsZShzZWxmLlRBQkxFLCB2YWx1ZTE9J3R3bycsIHZhbHVlMl9fZ3RlPTIpKSwgMSkKLSAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlbGYuZGF0YWJhc2Uuc2VsZWN0X2Zyb21fdGFi
bGUoc2VsZi5UQUJMRSwgdmFsdWUxPSd0aHJlZScsIHZhbHVlMl9fZ3RlPTIpKSwgMikKLQotICAg
IEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19jYXNzYW5kcmE9
TW9ja0Nhc3NhbmRyYUNvbnRleHQpCi0gICAgZGVmIHRlc3RfbHRlKHNlbGYsIGNhc3NhbmRyYT1D
YXNzYW5kcmFDb250ZXh0KToKLSAgICAgICAgc2VsZi5pbml0X2RhdGFiYXNlKGNhc3NhbmRyYT1j
YXNzYW5kcmEpCi0gICAgICAgIHdpdGggc2VsZi5kYXRhYmFzZToKLSAgICAgICAgICAgIHNlbGYu
cG9wdWxhdGVfY29tcGFyaXNvbl90YWJsZSgpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGxlbihzZWxmLmRhdGFiYXNlLnNlbGVjdF9mcm9tX3RhYmxlKHNlbGYuVEFCTEUsIHZhbHVlMT0n
b25lJywgdmFsdWUyX19sdGU9MCkpLCAwKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChs
ZW4oc2VsZi5kYXRhYmFzZS5zZWxlY3RfZnJvbV90YWJsZShzZWxmLlRBQkxFLCB2YWx1ZTE9J3R3
bycsIHZhbHVlMl9fbHRlPTEpKSwgMSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVu
KHNlbGYuZGF0YWJhc2Uuc2VsZWN0X2Zyb21fdGFibGUoc2VsZi5UQUJMRSwgdmFsdWUxPSd0aHJl
ZScsIHZhbHVlMl9fbHRlPTIpKSwgMikKLQotICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9j
a19pZl9ub19kb2NrZXIobW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCi0gICAg
ZGVmIHRlc3RfYmV0d2VlbihzZWxmLCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCk6Ci0gICAg
ICAgIHNlbGYuaW5pdF9kYXRhYmFzZShjYXNzYW5kcmE9Y2Fzc2FuZHJhKQotICAgICAgICB3aXRo
IHNlbGYuZGF0YWJhc2U6Ci0gICAgICAgICAgICBzZWxmLnBvcHVsYXRlX2NvbXBhcmlzb25fdGFi
bGUoKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VsZi5kYXRhYmFzZS5zZWxl
Y3RfZnJvbV90YWJsZShzZWxmLlRBQkxFLCB2YWx1ZTE9J2ZpdmUnLCB2YWx1ZTJfX2d0PTEsIHZh
bHVlMl9fbHQ9NSkpLCAzKQotCi0gICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25v
X2RvY2tlcihtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKLSAgICBkZWYgdGVz
dF9tdWx0aXBsZV9wcmltYXJ5KHNlbGYsIGNhc3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0KToKLSAg
ICAgICAgc2VsZi5pbml0X2RhdGFiYXNlKGNhc3NhbmRyYT1jYXNzYW5kcmEpCi0gICAgICAgIHdp
dGggc2VsZi5kYXRhYmFzZToKLQotICAgICAgICAgICAgY2xhc3MgRXhhbXBsZVRhYmxlKE1vZGVs
KToKLSAgICAgICAgICAgICAgICBfX3RhYmxlX25hbWVfXyA9IHNlbGYuVEFCTEUKLSAgICAgICAg
ICAgICAgICB2YWx1ZTEgPSBjb2x1bW5zLlRleHQocGFydGl0aW9uX2tleT1UcnVlKQotICAgICAg
ICAgICAgICAgIHZhbHVlMiA9IGNvbHVtbnMuSW50ZWdlcihwcmltYXJ5X2tleT1UcnVlKQotICAg
ICAgICAgICAgICAgIHZhbHVlMyA9IGNvbHVtbnMuSW50ZWdlcihwcmltYXJ5X2tleT1UcnVlKQot
ICAgICAgICAgICAgICAgIHZhbHVlNCA9IGNvbHVtbnMuVGV4dCgpCi0KLSAgICAgICAgICAgIHNl
bGYuZGF0YWJhc2UuY3JlYXRlX3RhYmxlKEV4YW1wbGVUYWJsZSkKLSAgICAgICAgICAgIHNlbGYu
ZGF0YWJhc2UuaW5zZXJ0X3JvdyhzZWxmLlRBQkxFLCB2YWx1ZTE9J2tleScsIHZhbHVlMj0wLCB2
YWx1ZTM9MCwgdmFsdWU0PScwLTAnKQotICAgICAgICAgICAgc2VsZi5kYXRhYmFzZS5pbnNlcnRf
cm93KHNlbGYuVEFCTEUsIHZhbHVlMT0na2V5JywgdmFsdWUyPTAsIHZhbHVlMz0xLCB2YWx1ZTQ9
JzAtMScpCi0gICAgICAgICAgICBzZWxmLmRhdGFiYXNlLmluc2VydF9yb3coc2VsZi5UQUJMRSwg
dmFsdWUxPSdrZXknLCB2YWx1ZTI9MSwgdmFsdWUzPTAsIHZhbHVlND0nMS0wJykKLQotICAgICAg
ICAgICAgcmVzdWx0cyA9IHNlbGYuZGF0YWJhc2Uuc2VsZWN0X2Zyb21fdGFibGUoc2VsZi5UQUJM
RSwgdmFsdWUxPSdrZXknLCB2YWx1ZTI9MCwgdmFsdWUzPTApCi0gICAgICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKDEsIGxlbihyZXN1bHRzKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
JzAtMCcsIHJlc3VsdHNbMF0udmFsdWU0KQotCi0gICAgICAgICAgICByZXN1bHRzID0gc2VsZi5k
YXRhYmFzZS5zZWxlY3RfZnJvbV90YWJsZShzZWxmLlRBQkxFLCB2YWx1ZTE9J2tleScsIHZhbHVl
Mj0wKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyLCBsZW4ocmVzdWx0cykpCi0gICAg
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcwLTAnLCByZXN1bHRzWzBdLnZhbHVlNCkKLSAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJzAtMScsIHJlc3VsdHNbMV0udmFsdWU0KQotCi0gICAg
ICAgICAgICByZXN1bHRzID0gc2VsZi5kYXRhYmFzZS5zZWxlY3RfZnJvbV90YWJsZShzZWxmLlRB
QkxFLCB2YWx1ZTE9J2tleScsIHZhbHVlMz0wKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgyLCBsZW4ocmVzdWx0cykpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcwLTAnLCBy
ZXN1bHRzWzBdLnZhbHVlNCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJzEtMCcsIHJl
c3VsdHNbMV0udmFsdWU0KQotCi0gICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25v
X2RvY2tlcihtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKLSAgICBkZWYgdGVz
dF9xdWVyeV93aXRoX25vbmUoc2VsZiwgY2Fzc2FuZHJhPUNhc3NhbmRyYUNvbnRleHQpOgotICAg
ICAgICBzZWxmLmluaXRfZGF0YWJhc2UoY2Fzc2FuZHJhPWNhc3NhbmRyYSkKLSAgICAgICAgc2Vs
Zi5jcmVhdGVfdGVzdGluZ190YWJsZSgpCi0KLSAgICAgICAgd2l0aCBzZWxmLmRhdGFiYXNlOgot
ICAgICAgICAgICAgc2VsZi5kYXRhYmFzZS5pbnNlcnRfcm93KHNlbGYuVEFCTEUsIHZhbHVlMT0n
a2V5JywgdmFsdWUyPTAsIHZhbHVlMz0wKQotICAgICAgICAgICAgc2VsZi5kYXRhYmFzZS5pbnNl
cnRfcm93KHNlbGYuVEFCTEUsIHZhbHVlMT0na2V5JywgdmFsdWUyPTEsIHZhbHVlMz0xKQotCi0g
ICAgICAgICAgICByZXN1bHRzID0gc2VsZi5kYXRhYmFzZS5zZWxlY3RfZnJvbV90YWJsZShzZWxm
LlRBQkxFLCB2YWx1ZTE9J2tleScsIHZhbHVlMj1Ob25lKQotICAgICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgyLCBsZW4ocmVzdWx0cykpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAs
IHJlc3VsdHNbMF0udmFsdWUzKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCByZXN1
bHRzWzFdLnZhbHVlMykKLQotICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19k
b2NrZXIobW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCi0gICAgZGVmIHRlc3Rf
YmF0Y2hfcXVlcnkoc2VsZiwgY2Fzc2FuZHJhPUNhc3NhbmRyYUNvbnRleHQpOgotICAgICAgICBz
ZWxmLmluaXRfZGF0YWJhc2UoY2Fzc2FuZHJhPWNhc3NhbmRyYSkKLSAgICAgICAgd2l0aCBzZWxm
LmRhdGFiYXNlOgotICAgICAgICAgICAgc2VsZi5jcmVhdGVfdGVzdGluZ190YWJsZSgpCi0KLSAg
ICAgICAgICAgIHdpdGggc2VsZi5kYXRhYmFzZS5iYXRjaF9xdWVyeV9jb250ZXh0KCk6Ci0gICAg
ICAgICAgICAgICAgZm9yIHZhbHVlMSBpbiBbJ2tleTEnLCAna2V5MicsICdrZXkzJ106Ci0gICAg
ICAgICAgICAgICAgICAgIGZvciB2YWx1ZTIgaW4gcmFuZ2UoNDApOgotICAgICAgICAgICAgICAg
ICAgICAgICAgc2VsZi5kYXRhYmFzZS5pbnNlcnRfcm93KHNlbGYuVEFCTEUsIHZhbHVlMT12YWx1
ZTEsIHZhbHVlMj12YWx1ZTIsIHZhbHVlMz12YWx1ZTIpCi0KLSAgICAgICAgICAgIGZvciB2YWx1
ZTEgaW4gWydrZXkxJywgJ2tleTInLCAna2V5MyddOgotICAgICAgICAgICAgICAgIHJlc3VsdHMg
PSBzZWxmLmRhdGFiYXNlLnNlbGVjdF9mcm9tX3RhYmxlKHNlbGYuVEFCTEUsIHZhbHVlMT12YWx1
ZTEpCi0gICAgICAgICAgICAgICAgZm9yIGluZGV4IGluIHJhbmdlKGxlbihyZXN1bHRzKSk6Ci0g
ICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5kZXgsIHJlc3VsdHNbaW5kZXhd
LnZhbHVlMikKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbmRleCwgcmVz
dWx0c1tpbmRleF0udmFsdWUzKQpJbmRleDogVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkv
bW9kZWwvY2Fzc2Vyb2xlLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3Vs
dHNkYnB5L21vZGVsL2Nhc3Nlcm9sZS5weQkocmV2aXNpb24gMjY1NTMxKQorKysgVG9vbHMvcmVz
dWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvY2Fzc2Vyb2xlLnB5CShub25leGlzdGVudCkKQEAg
LTEsMTU2ICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0j
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKLSMgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotIyBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0jIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0jIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksCi0jIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLWlt
cG9ydCByYW5kb20KLWltcG9ydCByZXF1ZXN0cwotaW1wb3J0IHRocmVhZGluZwotaW1wb3J0IHRp
bWUKLQotZnJvbSByZWRpcyBpbXBvcnQgU3RyaWN0UmVkaXMKLQotCi1jbGFzcyBDYXNzZXJvbGVO
b2RlcyhvYmplY3QpOgotICAgIERFRkFVTFRfSU5URVJWQUwgPSAxMjAgICMgUmVmcmVzaCBldmVy
eSAyIG1pbnV0ZXMKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB1cmwsIGludGVydmFsX3NlY29u
ZHM9REVGQVVMVF9JTlRFUlZBTCwgYXN5bmNocm9ub3VzPVRydWUpOgotICAgICAgICBzZWxmLnVy
bCA9IHVybAotICAgICAgICBzZWxmLmludGVydmFsID0gaW50ZXJ2YWxfc2Vjb25kcwotICAgICAg
ICBzZWxmLl9lcG9jaCA9IDAKLSAgICAgICAgc2VsZi5hc3luY2hyb25vdXMgPSBhc3luY2hyb25v
dXMKLSAgICAgICAgc2VsZi5fbm9kZXMgPSBbXQotICAgICAgICBzZWxmLnJldHJpZXZlX25vZGVz
KCkKLSAgICAgICAgaWYgbm90IHNlbGYuX25vZGVzOgotICAgICAgICAgICAgcmFpc2UgUnVudGlt
ZUVycm9yKGYnQ2Fubm90IGNvbW11bmljYXRlIHdpdGggQ2Fzc2Vyb2xlIHVybCB7c2VsZi51cmx9
JykKLQotICAgIGRlZiByZXRyaWV2ZV9ub2RlcyhzZWxmKToKLSAgICAgICAgY2Fzc2Vyb2xlX3Jl
c3BvbnNlID0gcmVxdWVzdHMuZ2V0KHNlbGYudXJsKQotICAgICAgICBpZiBjYXNzZXJvbGVfcmVz
cG9uc2Uuc3RhdHVzX2NvZGUgIT0gMjAwOgotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIHNl
bGYuX2Vwb2NoID0gdGltZS50aW1lKCkKLSAgICAgICAgc2VsZi5fbm9kZXMgPSBjYXNzZXJvbGVf
cmVzcG9uc2UudGV4dC5zcGxpdCgnLCcpCi0KLSAgICBAcHJvcGVydHkKLSAgICBkZWYgbm9kZXMo
c2VsZik6Ci0gICAgICAgIGlmIHNlbGYuX2Vwb2NoICsgc2VsZi5pbnRlcnZhbCA+IHRpbWUudGlt
ZSgpOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX25vZGVzCi0KLSAgICAgICAgaWYgc2VsZi5h
c3luY2hyb25vdXM6Ci0gICAgICAgICAgICByZXF1ZXN0X3RocmVhZCA9IHRocmVhZGluZy5UaHJl
YWQodGFyZ2V0PXNlbGYucmV0cmlldmVfbm9kZXMpCi0gICAgICAgICAgICByZXF1ZXN0X3RocmVh
ZC5kYWVtb24gPSBUcnVlCi0gICAgICAgICAgICByZXF1ZXN0X3RocmVhZC5zdGFydCgpCi0gICAg
ICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLnJldHJpZXZlX25vZGVzKCkKLSAgICAgICAgcmV0
dXJuIHNlbGYuX25vZGVzCi0KLSAgICBkZWYgX19sZW5fXyhzZWxmKToKLSAgICAgICAgcmV0dXJu
IGxlbihzZWxmLm5vZGVzKQotCi0gICAgZGVmIF9faXRlcl9fKHNlbGYpOgotICAgICAgICByZXR1
cm4gaXRlcihzZWxmLm5vZGVzKQotCi0KLWNsYXNzIENhc3Nlcm9sZVJlZGlzKG9iamVjdCk6Ci0g
ICAgREVGQVVMVF9JTlRFUlZBTCA9IDEyMCAgIyBSZWZyZXNoIGV2ZXJ5IDIgbWludXRlcwotCi0g
ICAgZGVmIF9faW5pdF9fKAotICAgICAgICBzZWxmLCB1cmwsIHBvcnQ9NjM3OSwgcGFzc3dvcmQ9
Tm9uZSwgaW50ZXJ2YWxfc2Vjb25kcz1ERUZBVUxUX0lOVEVSVkFMLCBhc3luY2hyb25vdXM9VHJ1
ZSwKLSAgICAgICAgc3NsX2tleWZpbGU9Tm9uZSwgc3NsX2NlcnRmaWxlPU5vbmUsIHNzbF9jZXJ0
X3JlcXM9J3JlcXVpcmVkJywgc3NsX2NhX2NlcnRzPU5vbmUsCi0gICAgKToKLSAgICAgICAgc2Vs
Zi51cmwgPSB1cmwKLSAgICAgICAgc2VsZi5pbnRlcnZhbCA9IGludGVydmFsX3NlY29uZHMKLSAg
ICAgICAgc2VsZi5hc3luY2hyb25vdXMgPSBhc3luY2hyb25vdXMKLQotICAgICAgICBzZWxmLl9y
ZWRpcyA9IE5vbmUKLSAgICAgICAgc2VsZi5fcmVkaXNfdXJsID0gTm9uZQotICAgICAgICBzZWxm
Ll9yZWRpc19rd2FyZ3MgPSBkaWN0KAotICAgICAgICAgICAgcG9ydD1wb3J0LAotICAgICAgICAg
ICAgcGFzc3dvcmQ9cGFzc3dvcmQsCi0gICAgICAgICAgICBzc2xfa2V5ZmlsZT1zc2xfa2V5Zmls
ZSwKLSAgICAgICAgICAgIHNzbF9jZXJ0ZmlsZT1zc2xfY2VydGZpbGUsCi0gICAgICAgICAgICBz
c2xfY2VydF9yZXFzPXNzbF9jZXJ0X3JlcXMsCi0gICAgICAgICAgICBzc2xfY2FfY2VydHM9c3Ns
X2NhX2NlcnRzLAotICAgICAgICApCi0KLSAgICAgICAgc2VsZi5fZXBvY2ggPSB0aW1lLnRpbWUo
KQotICAgICAgICBzZWxmLmNvbm5lY3QoKQotCi0gICAgZGVmIGNvbm5lY3Qoc2VsZik6Ci0gICAg
ICAgIGlmIHNlbGYuX3JlZGlzIGFuZCBzZWxmLl9lcG9jaCArIHNlbGYuaW50ZXJ2YWwgPiB0aW1l
LnRpbWUoKToKLSAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgIGRlZiBkb19jb25uZWN0aW9u
KG9iaj1zZWxmKToKLSAgICAgICAgICAgIGNhc3Nlcm9sZV9yZXNwb25zZSA9IHJlcXVlc3RzLmdl
dChvYmoudXJsKQotICAgICAgICAgICAgaWYgY2Fzc2Vyb2xlX3Jlc3BvbnNlLnN0YXR1c19jb2Rl
ICE9IDIwMDoKLSAgICAgICAgICAgICAgICByZXR1cm4KLQotICAgICAgICAgICAgY2FuZGlkYXRl
cyA9IHt9Ci0gICAgICAgICAgICBmb3IgY2FuZGlkYXRlIGluIGNhc3Nlcm9sZV9yZXNwb25zZS5q
c29uKCk6Ci0gICAgICAgICAgICAgICAgaWYgbm90IGNhbmRpZGF0ZVsnaXNNYXN0ZXInXToKLSAg
ICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICBjYW5kaWRhdGVzW2Nh
bmRpZGF0ZVsnaG9zdCddXSA9IGNhbmRpZGF0ZQotICAgICAgICAgICAgaWYgc2VsZi5fcmVkaXMg
YW5kIHNlbGYuX3JlZGlzX3VybCBpbiBjYW5kaWRhdGVzOgotICAgICAgICAgICAgICAgICMgV2Un
cmUgc3RpbGwgY29ubmVjdGVkLCB3ZSBkb24ndCBuZWVkIHRvIGRvIGFueXRoaW5nCi0gICAgICAg
ICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgICAgIHNlbGYuX3JlZGlzX3VybCA9IHJhbmRvbS5j
aG9pY2UobGlzdChjYW5kaWRhdGVzLmtleXMoKSkpCi0gICAgICAgICAgICBwb3J0ID0gY2FuZGlk
YXRlc1tzZWxmLl9yZWRpc191cmxdLmdldCgnc3NsUG9ydCcpCi0gICAgICAgICAgICBrd2FyZ3Mg
PSBkaWN0KCoqc2VsZi5fcmVkaXNfa3dhcmdzKQotICAgICAgICAgICAga3dhcmdzWydwb3J0J10g
PSBwb3J0IG9yIGt3YXJnc1sncG9ydCddCi0KLSAgICAgICAgICAgIHNlbGYuX3JlZGlzID0gU3Ry
aWN0UmVkaXMoCi0gICAgICAgICAgICAgICAgaG9zdD1zZWxmLl9yZWRpc191cmwsCi0gICAgICAg
ICAgICAgICAgc3NsPVRydWUgaWYgcG9ydCBlbHNlIEZhbHNlLAotICAgICAgICAgICAgICAgICoq
a3dhcmdzCi0gICAgICAgICAgICApCi0KLSAgICAgICAgICAgIG9iai5fZXBvY2ggPSB0aW1lLnRp
bWUoKQotCi0gICAgICAgIGlmIHNlbGYuYXN5bmNocm9ub3VzIGFuZCBzZWxmLl9yZWRpczoKLSAg
ICAgICAgICAgIHJlcXVlc3RfdGhyZWFkID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9ZG9fY29u
bmVjdGlvbikKLSAgICAgICAgICAgIHJlcXVlc3RfdGhyZWFkLmRhZW1vbiA9IFRydWUKLSAgICAg
ICAgICAgIHJlcXVlc3RfdGhyZWFkLnN0YXJ0KCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAg
IGRvX2Nvbm5lY3Rpb24oKQotCi0gICAgZGVmIHBpbmcoc2VsZik6Ci0gICAgICAgIHNlbGYuY29u
bmVjdCgpCi0gICAgICAgIHJldHVybiBzZWxmLl9yZWRpcy5waW5nKCkKLQotICAgIGRlZiBnZXQo
c2VsZiwgbmFtZSk6Ci0gICAgICAgIHNlbGYuY29ubmVjdCgpCi0gICAgICAgIHJldHVybiBzZWxm
Ll9yZWRpcy5nZXQobmFtZSkKLQotICAgIGRlZiBzZXQoc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToK
LSAgICAgICAgc2VsZi5jb25uZWN0KCkKLSAgICAgICAgcmV0dXJuIHNlbGYuX3JlZGlzLnNldCgq
YXJncywgKiprd2FyZ3MpCi0KLSAgICBkZWYgbG9jayhzZWxmLCBuYW1lLCAqKmt3YXJncyk6Ci0g
ICAgICAgIHNlbGYuY29ubmVjdCgpCi0gICAgICAgIHJldHVybiBzZWxmLl9yZWRpcy5sb2NrKG5h
bWUsICoqa3dhcmdzKQotCi0gICAgZGVmIGRlbGV0ZShzZWxmLCAqbmFtZXMpOgotICAgICAgICBz
ZWxmLmNvbm5lY3QoKQotICAgICAgICByZXR1cm4gc2VsZi5fcmVkaXMuZGVsZXRlKCpuYW1lcykK
LQotICAgIGRlZiBzY2FuX2l0ZXIoc2VsZiwgbWF0Y2g9Tm9uZSwgKiprd2FyZ3MpOgotICAgICAg
ICBzZWxmLmNvbm5lY3QoKQotICAgICAgICByZXR1cm4gc2VsZi5fcmVkaXMuc2Nhbl9pdGVyKG1h
dGNoPW1hdGNoLCAqKmt3YXJncykKSW5kZXg6IFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5
L21vZGVsL2Nhc3Nlcm9sZV91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9yZXN1bHRz
ZGJweS9yZXN1bHRzZGJweS9tb2RlbC9jYXNzZXJvbGVfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI2
NTUzMSkKKysrIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL2Nhc3Nlcm9sZV91
bml0dGVzdC5weQkobm9uZXhpc3RlbnQpCkBAIC0xLDcwICswLDAgQEAKLSMgQ29weXJpZ2h0IChD
KSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0j
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUgotIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0jIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSCi0jIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0jIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLWltcG9ydCBtb2NrCi1pbXBvcnQgdGltZQotaW1wb3J0
IHVuaXR0ZXN0Ci0KLWZyb20gcmVzdWx0c2RicHkubW9kZWwuY2Fzc2Vyb2xlIGltcG9ydCBDYXNz
ZXJvbGVOb2RlcwotCi0KLWNsYXNzIE1vY2tSZXF1ZXN0KG9iamVjdCk6Ci0KLSAgICBkZWYgX19p
bml0X18oc2VsZiwgdGV4dD0nJywgc3RhdHVzX2NvZGU9MjAwKToKLSAgICAgICAgdGltZS5zbGVl
cCguMSkgICMgVGhpcyBzcGxpdCBzZWNvbmQgYWN0cyBsaWtlIGFuIGFjdHVhbCByZXF1ZXN0Ci0g
ICAgICAgIHNlbGYudGV4dCA9IHRleHQKLSAgICAgICAgc2VsZi5zdGF0dXNfY29kZSA9IHN0YXR1
c19jb2RlCi0KLQotY2xhc3MgQ2Fzc2Vyb2xlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAg
ZGVmIHRlc3Rfc3luY2hyb25vdXMoc2VsZik6Ci0gICAgICAgIHdpdGggbW9jay5wYXRjaCgncmVx
dWVzdHMuZ2V0JywgbmV3PWxhbWJkYSAqYXJncywgKiprd2FyZ3M6IE1vY2tSZXF1ZXN0KCdzdGFy
dCcpKToKLSAgICAgICAgICAgIG5vZGVzID0gQ2Fzc2Vyb2xlTm9kZXMoJ3NvbWUtdXJsJywgaW50
ZXJ2YWxfc2Vjb25kcz0xMCwgYXN5bmNocm9ub3VzPUZhbHNlKQotICAgICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChbJ3N0YXJ0J10sIG5vZGVzLm5vZGVzKQotCi0gICAgICAgICAgICB3aXRoIG1v
Y2sucGF0Y2goJ3JlcXVlc3RzLmdldCcsIG5ldz1sYW1iZGEgKmFyZ3MsICoqa3dhcmdzOiBNb2Nr
UmVxdWVzdCgndXJsMSx1cmwyJykpOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
WydzdGFydCddLCBub2Rlcy5ub2RlcykKLSAgICAgICAgICAgICAgICBjdXJyZW50X3RpbWUgPSB0
aW1lLnRpbWUoKQotCi0gICAgICAgICAgICAgICAgd2l0aCBtb2NrLnBhdGNoKCd0aW1lLnRpbWUn
LCBuZXc9bGFtYmRhOiBjdXJyZW50X3RpbWUgKyAxNSk6Ci0gICAgICAgICAgICAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoWyd1cmwxJywgJ3VybDInXSwgbm9kZXMubm9kZXMpCi0KLSAgICBkZWYg
dGVzdF9hc3luY2hyb25vdXMoc2VsZik6Ci0gICAgICAgIHdpdGggbW9jay5wYXRjaCgncmVxdWVz
dHMuZ2V0JywgbmV3PWxhbWJkYSAqYXJncywgKiprd2FyZ3M6IE1vY2tSZXF1ZXN0KCdzdGFydCcp
KToKLSAgICAgICAgICAgIG5vZGVzID0gQ2Fzc2Vyb2xlTm9kZXMoJ3NvbWUtdXJsJywgaW50ZXJ2
YWxfc2Vjb25kcz0xMCwgYXN5bmNocm9ub3VzPVRydWUpCi0gICAgICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKFsnc3RhcnQnXSwgbm9kZXMubm9kZXMpCi0KLSAgICAgICAgICAgIHdpdGggbW9jay5w
YXRjaCgncmVxdWVzdHMuZ2V0JywgbmV3PWxhbWJkYSAqYXJncywgKiprd2FyZ3M6IE1vY2tSZXF1
ZXN0KCd1cmwxLHVybDInKSk6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ3N0
YXJ0J10sIG5vZGVzLm5vZGVzKQotICAgICAgICAgICAgICAgIGN1cnJlbnRfdGltZSA9IHRpbWUu
dGltZSgpCi0KLSAgICAgICAgICAgICAgICB3aXRoIG1vY2sucGF0Y2goJ3RpbWUudGltZScsIG5l
dz1sYW1iZGE6IGN1cnJlbnRfdGltZSArIDE1KToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChbJ3N0YXJ0J10sIG5vZGVzLm5vZGVzKQotICAgICAgICAgICAgICAgICAgICB0
aW1lLnNsZWVwKC4xNSkgICMgV2FpdCBmb3IgdGhlIGFzeW5jaHJvbm91cyB0aHJlYWQgdG8gZmlu
aXNoCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWyd1cmwxJywgJ3VybDIn
XSwgbm9kZXMubm9kZXMpCi0KLSAgICBkZWYgdGVzdF9saXN0X2xpa2Uoc2VsZik6Ci0gICAgICAg
IHdpdGggbW9jay5wYXRjaCgncmVxdWVzdHMuZ2V0JywgbmV3PWxhbWJkYSAqYXJncywgKiprd2Fy
Z3M6IE1vY2tSZXF1ZXN0KCd1cmwxLHVybDIsdXJsMycpKToKLSAgICAgICAgICAgIG5vZGVzID0g
Q2Fzc2Vyb2xlTm9kZXMoJ3NvbWUtdXJsJykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
Wyd1cmwxJywgJ3VybDInLCAndXJsMyddLCBbbm9kZSBmb3Igbm9kZSBpbiBub2Rlc10pCi0gICAg
ICAgICAgICBzZWxmLmFzc2VydFRydWUobm9kZXMpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRy
dWUoJ3VybDEnIGluIG5vZGVzKQpJbmRleDogVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkv
bW9kZWwvY2lfY29udGV4dC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9yZXN1bHRzZGJweS9yZXN1
bHRzZGJweS9tb2RlbC9jaV9jb250ZXh0LnB5CShyZXZpc2lvbiAyNjU1MzEpCisrKyBUb29scy9y
ZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9jaV9jb250ZXh0LnB5CShub25leGlzdGVudCkK
QEAgLTEsMjkzICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0Ogot
IyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKLSMgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotIyBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0jIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0jIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksCi0jIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0K
LWltcG9ydCBjYWxlbmRhcgotaW1wb3J0IGpzb24KLWltcG9ydCBsb2dnaW5nCi1pbXBvcnQgcmVx
dWVzdHMKLWltcG9ydCBzeXMKLWltcG9ydCB0aW1lCi1pbXBvcnQgdXJsbGliLnBhcnNlCi0KLWZy
b20gY2Fzc2FuZHJhLmNxbGVuZ2luZSBpbXBvcnQgY29sdW1ucwotZnJvbSBkYXRldGltZSBpbXBv
cnQgZGF0ZXRpbWUKLWZyb20gZmFrZXJlZGlzIGltcG9ydCBGYWtlU3RyaWN0UmVkaXMKLWZyb20g
cmVzdWx0c2RicHkuY29udHJvbGxlci5jb21taXQgaW1wb3J0IENvbW1pdAotZnJvbSByZXN1bHRz
ZGJweS5tb2RlbC5jb21taXRfY29udGV4dCBpbXBvcnQgQ29tbWl0Q29udGV4dAotZnJvbSByZXN1
bHRzZGJweS5tb2RlbC5jb25maWd1cmF0aW9uX2NvbnRleHQgaW1wb3J0IENsdXN0ZXJlZEJ5Q29u
ZmlndXJhdGlvbgotZnJvbSByZXN1bHRzZGJweS5tb2RlbC51cGxvYWRfY29udGV4dCBpbXBvcnQg
VXBsb2FkQ2FsbGJhY2tDb250ZXh0Ci0KLQotY2xhc3MgQ0lDb250ZXh0KFVwbG9hZENhbGxiYWNr
Q29udGV4dCk6Ci0gICAgREVGQVVMVF9DQVNTQU5EUkFfTElNSVQgPSAxMDAKLQotICAgIGNsYXNz
IFVSTHNCYXNlKENsdXN0ZXJlZEJ5Q29uZmlndXJhdGlvbik6Ci0gICAgICAgIHN1aXRlID0gY29s
dW1ucy5UZXh0KHBhcnRpdGlvbl9rZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkKLSAgICAgICAgYnJh
bmNoID0gY29sdW1ucy5UZXh0KHBhcnRpdGlvbl9rZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkKLSAg
ICAgICAgdXJscyA9IGNvbHVtbnMuVGV4dChyZXF1aXJlZD1GYWxzZSkKLQotICAgICAgICBkZWYg
dW5wYWNrKHNlbGYpOgotICAgICAgICAgICAgcmVzdWx0ID0gZGljdCgKLSAgICAgICAgICAgICAg
ICB1dWlkPXNlbGYudXVpZCwKLSAgICAgICAgICAgICAgICBzdGFydF90aW1lPWNhbGVuZGFyLnRp
bWVnbShzZWxmLnN0YXJ0X3RpbWUudGltZXR1cGxlKCkpLAotICAgICAgICAgICAgKQotICAgICAg
ICAgICAgZm9yIGtleSwgdmFsdWUgaW4ganNvbi5sb2FkcyhzZWxmLnVybHMpLml0ZW1zKCk6Ci0g
ICAgICAgICAgICAgICAgaWYgdmFsdWUgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAg
IHJlc3VsdFtrZXldID0gdmFsdWUKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQKLQotICAgIGNs
YXNzIFVSTHNCeUNvbW1pdChVUkxzQmFzZSk6Ci0gICAgICAgIF9fdGFibGVfbmFtZV9fID0gJ2Np
X3VybHNfYnlfY29tbWl0JwotICAgICAgICB1dWlkID0gY29sdW1ucy5CaWdJbnQocHJpbWFyeV9r
ZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSwgY2x1c3RlcmluZ19vcmRlcj0nREVTQycpCi0gICAgICAg
IHNkayA9IGNvbHVtbnMuVGV4dChwcmltYXJ5X2tleT1UcnVlLCByZXF1aXJlZD1UcnVlKQotICAg
ICAgICBzdGFydF90aW1lID0gY29sdW1ucy5EYXRlVGltZShwcmltYXJ5X2tleT1UcnVlLCByZXF1
aXJlZD1UcnVlKQotCi0gICAgY2xhc3MgVVJMc0J5U3RhcnRUaW1lKFVSTHNCYXNlKToKLSAgICAg
ICAgX190YWJsZV9uYW1lX18gPSAnY2lfdXJsc19ieV9zdGFydF90aW1lJwotICAgICAgICBzdGFy
dF90aW1lID0gY29sdW1ucy5EYXRlVGltZShwcmltYXJ5X2tleT1UcnVlLCByZXF1aXJlZD1UcnVl
LCBjbHVzdGVyaW5nX29yZGVyPSdERVNDJykKLSAgICAgICAgc2RrID0gY29sdW1ucy5UZXh0KHBy
aW1hcnlfa2V5PVRydWUsIHJlcXVpcmVkPVRydWUpCi0gICAgICAgIHV1aWQgPSBjb2x1bW5zLkJp
Z0ludChwcmltYXJ5X2tleT1UcnVlLCByZXF1aXJlZD1UcnVlKQotCi0gICAgY2xhc3MgVVJMQnlR
dWV1ZShDbHVzdGVyZWRCeUNvbmZpZ3VyYXRpb24pOgotICAgICAgICBfX3RhYmxlX25hbWVfXyA9
ICdjaV91cmxfYnlfcXVldWUnCi0gICAgICAgIGJyYW5jaCA9IGNvbHVtbnMuVGV4dChwYXJ0aXRp
b25fa2V5PVRydWUsIHJlcXVpcmVkPVRydWUpCi0gICAgICAgIHN1aXRlID0gY29sdW1ucy5UZXh0
KHByaW1hcnlfa2V5PVRydWUsIHJlcXVpcmVkPVRydWUpCi0gICAgICAgIHNkayA9IGNvbHVtbnMu
VGV4dChwcmltYXJ5X2tleT1UcnVlLCByZXF1aXJlZD1UcnVlKQotICAgICAgICB1cmwgPSBjb2x1
bW5zLlRleHQocmVxdWlyZWQ9RmFsc2UpCi0KLSAgICAgICAgZGVmIHVucGFjayhzZWxmKToKLSAg
ICAgICAgICAgIHJldHVybiBzZWxmLnVybAotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvbmZp
Z3VyYXRpb25fY29udGV4dCwgY29tbWl0X2NvbnRleHQsIHR0bF9zZWNvbmRzPU5vbmUsIHVybF9m
YWN0b3JpZXM9Tm9uZSk6Ci0gICAgICAgIHN1cGVyKENJQ29udGV4dCwgc2VsZikuX19pbml0X18o
Ci0gICAgICAgICAgICBuYW1lPSdjaS11cmxzJywKLSAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25f
Y29udGV4dD1jb25maWd1cmF0aW9uX2NvbnRleHQsCi0gICAgICAgICAgICBjb21taXRfY29udGV4
dD1jb21taXRfY29udGV4dCwKLSAgICAgICAgICAgIHR0bF9zZWNvbmRzPXR0bF9zZWNvbmRzLAot
ICAgICAgICApCi0gICAgICAgIHNlbGYuX3VybF9mYWN0b3JpZXMgPSB7fQotICAgICAgICBmb3Ig
ZmFjdG9yeSBpbiB1cmxfZmFjdG9yaWVzIG9yIFtdOgotICAgICAgICAgICAgc2VsZi5hZGRfdXJs
X2ZhY3RvcnkoZmFjdG9yeSkKLQotICAgICAgICB3aXRoIHNlbGY6Ci0gICAgICAgICAgICBzZWxm
LmNhc3NhbmRyYS5jcmVhdGVfdGFibGUoc2VsZi5VUkxzQnlDb21taXQpCi0gICAgICAgICAgICBz
ZWxmLmNhc3NhbmRyYS5jcmVhdGVfdGFibGUoc2VsZi5VUkxzQnlTdGFydFRpbWUpCi0gICAgICAg
ICAgICBzZWxmLmNhc3NhbmRyYS5jcmVhdGVfdGFibGUoc2VsZi5VUkxCeVF1ZXVlKQotCi0gICAg
ZGVmIGFkZF91cmxfZmFjdG9yeShzZWxmLCBmYWN0b3J5KToKLSAgICAgICAgc2VsZi5fdXJsX2Zh
Y3Rvcmllc1tmYWN0b3J5Lm1hc3Rlcl0gPSBmYWN0b3J5Ci0KLSAgICBkZWYgdXJsKHNlbGYsIG1h
c3Rlciwgc2hvdWxkX2ZldGNoPUZhbHNlLCAqKmt3YXJncyk6Ci0gICAgICAgIGZhY3RvcnkgPSBz
ZWxmLl91cmxfZmFjdG9yaWVzLmdldChtYXN0ZXIpCi0gICAgICAgIGlmIG5vdCBmYWN0b3J5Ogot
ICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgcmV0dXJuIGZhY3RvcnkudXJsKGZldGNo
PXNob3VsZF9mZXRjaCwgKiprd2FyZ3MpCi0KLSAgICBkZWYgcmVnaXN0ZXIoc2VsZiwgY29uZmln
dXJhdGlvbiwgY29tbWl0cywgc3VpdGUsIHRlc3RfcmVzdWx0cywgdGltZXN0YW1wPU5vbmUpOgot
ICAgICAgICB0aW1lc3RhbXAgPSB0aW1lc3RhbXAgb3IgdGltZS50aW1lKCkKLSAgICAgICAgaWYg
bm90IGlzaW5zdGFuY2UodGltZXN0YW1wLCBkYXRldGltZSk6Ci0gICAgICAgICAgICB0aW1lc3Rh
bXAgPSBkYXRldGltZS51dGNmcm9tdGltZXN0YW1wKGludCh0aW1lc3RhbXApKQotCi0gICAgICAg
IHRyeToKLSAgICAgICAgICAgIGRldGFpbHMgPSB0ZXN0X3Jlc3VsdHMuZ2V0KCdkZXRhaWxzJywg
e30pCi0gICAgICAgICAgICB1cmxzID0ge30KLQotICAgICAgICAgICAgdXJsX2ZhY3RvcnkgPSBz
ZWxmLl91cmxfZmFjdG9yaWVzLmdldChkZXRhaWxzLmdldCgnYnVpbGRib3QtbWFzdGVyJykpCi0g
ICAgICAgICAgICBpZiB1cmxfZmFjdG9yeToKLSAgICAgICAgICAgICAgICB1cmxzWydxdWV1ZSdd
ID0gdXJsX2ZhY3RvcnkudXJsKGJ1aWxkZXJfbmFtZT1kZXRhaWxzLmdldCgnYnVpbGRlci1uYW1l
JykpCi0gICAgICAgICAgICAgICAgdXJsc1snYnVpbGQnXSA9IHVybF9mYWN0b3J5LnVybCgKLSAg
ICAgICAgICAgICAgICAgICAgYnVpbGRlcl9uYW1lPWRldGFpbHMuZ2V0KCdidWlsZGVyLW5hbWUn
KSwKLSAgICAgICAgICAgICAgICAgICAgYnVpbGRfbnVtYmVyPWRldGFpbHMuZ2V0KCdidWlsZC1u
dW1iZXInKSwKLSAgICAgICAgICAgICAgICAgICAgc2hvdWxkX2ZldGNoPVRydWUsCi0gICAgICAg
ICAgICAgICAgKQotICAgICAgICAgICAgICAgIHVybHNbJ3dvcmtlciddID0gdXJsX2ZhY3Rvcnku
dXJsKAotICAgICAgICAgICAgICAgICAgICB3b3JrZXJfbmFtZT1kZXRhaWxzLmdldCgnYnVpbGRi
b3Qtd29ya2VyJyksCi0gICAgICAgICAgICAgICAgICAgIHNob3VsZF9mZXRjaD1UcnVlLAotICAg
ICAgICAgICAgICAgICkKLSAgICAgICAgICAgIGVsaWYgZGV0YWlscy5nZXQoJ2J1aWxkYm90LW1h
c3RlcicpIGFuZCAnbGluaycgbm90IGluIGRldGFpbHM6Ci0gICAgICAgICAgICAgICAgcmFpc2Ug
VmFsdWVFcnJvcihmIk5vIGxpbmsgZGVmaW5lZCBvciBVUkwgZmFjdG9yeSBmb3Ige2RldGFpbHNb
J2J1aWxkYm90LW1hc3RlciddfSIpCi0KLSAgICAgICAgICAgICMgQ3VzdG9tIGJ1aWxkIGxpbmtz
IG92ZXJyaWRlIGNvbnN0cnVjdGVkIGJ1aWxkYm90IGxpbmtzCi0gICAgICAgICAgICBpZiAnbGlu
aycgaW4gZGV0YWlsczoKLSAgICAgICAgICAgICAgICB1cmxzWydidWlsZCddID0gZGV0YWlsc1sn
bGluayddCi0KLSAgICAgICAgICAgIGZvciBrZXkgaW4gZGV0YWlscy5rZXlzKCk6Ci0gICAgICAg
ICAgICAgICAgaWYgZGV0YWlsc1trZXldIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIGRl
bCBkZXRhaWxzW2tleV0KLQotICAgICAgICAgICAgdXVpZCA9IHNlbGYuY29tbWl0X2NvbnRleHQu
dXVpZF9mb3JfY29tbWl0cyhjb21taXRzKQotICAgICAgICAgICAgdHRsID0gaW50KCh1dWlkIC8g
Q29tbWl0LlRJTUVTVEFNUF9UT19VVUlEX01VTFRJUExJRVIpICsgc2VsZi50dGxfc2Vjb25kcyAt
IHRpbWUudGltZSgpKSBpZiBzZWxmLnR0bF9zZWNvbmRzIGVsc2UgTm9uZQotCi0gICAgICAgICAg
ICB3aXRoIHNlbGYsIHNlbGYuY2Fzc2FuZHJhLmJhdGNoX3F1ZXJ5X2NvbnRleHQoKToKLSAgICAg
ICAgICAgICAgICBmb3IgYnJhbmNoIGluIHNlbGYuY29tbWl0X2NvbnRleHQuYnJhbmNoX2tleXNf
Zm9yX2NvbW1pdHMoY29tbWl0cyk6Ci0gICAgICAgICAgICAgICAgICAgIGlmIHVybHMuZ2V0KCdx
dWV1ZScpOgotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jb25maWd1cmF0aW9uX2NvbnRl
eHQuaW5zZXJ0X3Jvd193aXRoX2NvbmZpZ3VyYXRpb24oCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2VsZi5VUkxCeVF1ZXVlLl9fdGFibGVfbmFtZV9fLCBjb25maWd1cmF0aW9uPWNvbmZp
Z3VyYXRpb24sIHN1aXRlPXN1aXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyYW5j
aD1icmFuY2gsIHNkaz1jb25maWd1cmF0aW9uLnNkayBvciAnPycsIHR0bD10dGwsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdXJsPXVybHNbJ3F1ZXVlJ10sCi0gICAgICAgICAgICAgICAg
ICAgICAgICApCi0KLSAgICAgICAgICAgICAgICAgICAgZm9yIHRhYmxlIGluIFtzZWxmLlVSTHNC
eUNvbW1pdCwgc2VsZi5VUkxzQnlTdGFydFRpbWVdOgotICAgICAgICAgICAgICAgICAgICAgICAg
c2VsZi5jb25maWd1cmF0aW9uX2NvbnRleHQuaW5zZXJ0X3Jvd193aXRoX2NvbmZpZ3VyYXRpb24o
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGUuX190YWJsZV9uYW1lX18sIGNvbmZp
Z3VyYXRpb249Y29uZmlndXJhdGlvbiwgc3VpdGU9c3VpdGUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYnJhbmNoPWJyYW5jaCwgdXVpZD11dWlkLCB0dGw9dHRsLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNkaz1jb25maWd1cmF0aW9uLnNkayBvciAnPycsIHN0YXJ0X3RpbWU9
dGltZXN0YW1wLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybHM9anNvbi5kdW1wcyh1
cmxzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlv
biBhcyBlOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYucGFydGlhbF9zdGF0dXMoZSkKLSAgICAg
ICAgcmV0dXJuIHNlbGYucGFydGlhbF9zdGF0dXMoKQotCi0gICAgZGVmIGZpbmRfdXJsc19ieV9x
dWV1ZShzZWxmLCBjb25maWd1cmF0aW9ucywgc3VpdGUsIHJlY2VudD1UcnVlLCBicmFuY2g9Tm9u
ZSwgbGltaXQ9REVGQVVMVF9DQVNTQU5EUkFfTElNSVQpOgotICAgICAgICBpZiBub3QgaXNpbnN0
YW5jZShzdWl0ZSwgc3RyKToKLSAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcihmJ0V4cGVjdGVk
IHR5cGUge3N0cn0sIGdvdCB7dHlwZShzdWl0ZSl9JykKLQotICAgICAgICB3aXRoIHNlbGY6Ci0g
ICAgICAgICAgICByZXN1bHQgPSB7fQotICAgICAgICAgICAgZm9yIGNvbmZpZ3VyYXRpb24gaW4g
Y29uZmlndXJhdGlvbnM6Ci0gICAgICAgICAgICAgICAgcmVzdWx0LnVwZGF0ZSh7Y29uZmlnOiB2
YWx1ZXNbMF0udW5wYWNrKCkgZm9yIGNvbmZpZywgdmFsdWVzIGluIHNlbGYuY29uZmlndXJhdGlv
bl9jb250ZXh0LnNlbGVjdF9mcm9tX3RhYmxlX3dpdGhfY29uZmlndXJhdGlvbnMoCi0gICAgICAg
ICAgICAgICAgICAgIHNlbGYuVVJMQnlRdWV1ZS5fX3RhYmxlX25hbWVfXywgY29uZmlndXJhdGlv
bnM9W2NvbmZpZ3VyYXRpb25dLCByZWNlbnQ9cmVjZW50LAotICAgICAgICAgICAgICAgICAgICBz
dWl0ZT1zdWl0ZSwgc2RrPWNvbmZpZ3VyYXRpb24uc2RrLCBicmFuY2g9YnJhbmNoIG9yIHNlbGYu
Y29tbWl0X2NvbnRleHQuREVGQVVMVF9CUkFOQ0hfS0VZLAotICAgICAgICAgICAgICAgICAgICBs
aW1pdD1saW1pdCwKLSAgICAgICAgICAgICAgICApLml0ZW1zKCl9KQotICAgICAgICAgICAgcmV0
dXJuIHJlc3VsdAotCi0gICAgZGVmIF9maW5kX3VybHMoCi0gICAgICAgICAgICBzZWxmLCB0YWJs
ZSwgY29uZmlndXJhdGlvbnMsIHN1aXRlLCByZWNlbnQ9VHJ1ZSwKLSAgICAgICAgICAgIGJyYW5j
aD1Ob25lLCBiZWdpbj1Ob25lLCBlbmQ9Tm9uZSwKLSAgICAgICAgICAgIGJlZ2luX3F1ZXJ5X3Rp
bWU9Tm9uZSwgZW5kX3F1ZXJ5X3RpbWU9Tm9uZSwKLSAgICAgICAgICAgIGxpbWl0PURFRkFVTFRf
Q0FTU0FORFJBX0xJTUlULAotICAgICk6Ci0gICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHN1aXRl
LCBzdHIpOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKGYnRXhwZWN0ZWQgdHlwZSB7c3Ry
fSwgZ290IHt0eXBlKHN1aXRlKX0nKQotCi0gICAgICAgIGRlZiBnZXRfdGltZSh0aW1lKToKLSAg
ICAgICAgICAgIGlmIGlzaW5zdGFuY2UodGltZSwgZGF0ZXRpbWUpOgotICAgICAgICAgICAgICAg
IHJldHVybiB0aW1lCi0gICAgICAgICAgICBlbGlmIHRpbWU6Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIGRhdGV0aW1lLnV0Y2Zyb210aW1lc3RhbXAoaW50KHRpbWUpKQotICAgICAgICAgICAgcmV0
dXJuIE5vbmUKLQotICAgICAgICB3aXRoIHNlbGY6Ci0gICAgICAgICAgICByZXN1bHQgPSB7fQot
ICAgICAgICAgICAgZm9yIGNvbmZpZ3VyYXRpb24gaW4gY29uZmlndXJhdGlvbnM6Ci0gICAgICAg
ICAgICAgICAgZGF0YSA9IHNlbGYuY29uZmlndXJhdGlvbl9jb250ZXh0LnNlbGVjdF9mcm9tX3Rh
YmxlX3dpdGhfY29uZmlndXJhdGlvbnMoCi0gICAgICAgICAgICAgICAgICAgIHRhYmxlLl9fdGFi
bGVfbmFtZV9fLCBjb25maWd1cmF0aW9ucz1bY29uZmlndXJhdGlvbl0sIHJlY2VudD1yZWNlbnQs
Ci0gICAgICAgICAgICAgICAgICAgIHN1aXRlPXN1aXRlLCBzZGs9Y29uZmlndXJhdGlvbi5zZGss
IGJyYW5jaD1icmFuY2ggb3Igc2VsZi5jb21taXRfY29udGV4dC5ERUZBVUxUX0JSQU5DSF9LRVks
Ci0gICAgICAgICAgICAgICAgICAgIHV1aWRfX2d0ZT1Db21taXRDb250ZXh0LmNvbnZlcnRfdG9f
dXVpZChiZWdpbiksCi0gICAgICAgICAgICAgICAgICAgIHV1aWRfX2x0ZT1Db21taXRDb250ZXh0
LmNvbnZlcnRfdG9fdXVpZChlbmQsIENvbW1pdENvbnRleHQudGltZXN0YW1wX3RvX3V1aWQoKSks
Ci0gICAgICAgICAgICAgICAgICAgIHN0YXJ0X3RpbWVfX2d0ZT1nZXRfdGltZShiZWdpbl9xdWVy
eV90aW1lKSwgc3RhcnRfdGltZV9fbHRlPWdldF90aW1lKGVuZF9xdWVyeV90aW1lKSwKLSAgICAg
ICAgICAgICAgICAgICAgbGltaXQ9bGltaXQsCi0gICAgICAgICAgICAgICAgKS5pdGVtcygpCi0g
ICAgICAgICAgICAgICAgcmVzdWx0LnVwZGF0ZSh7Y29uZmlnOiBbdmFsdWUudW5wYWNrKCkgZm9y
IHZhbHVlIGluIHZhbHVlc10gZm9yIGNvbmZpZywgdmFsdWVzIGluIGRhdGF9KQotICAgICAgICAg
ICAgcmV0dXJuIHJlc3VsdAotCi0gICAgZGVmIGZpbmRfdXJsc19ieV9jb21taXQoc2VsZiwgKmFy
Z3MsICoqa3dhcmdzKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbmRfdXJscyhzZWxmLlVSTHNC
eUNvbW1pdCwgKmFyZ3MsICoqa3dhcmdzKQotCi0gICAgZGVmIGZpbmRfdXJsc19ieV9zdGFydF90
aW1lKHNlbGYsICphcmdzLCAqKmt3YXJncyk6Ci0gICAgICAgIHJldHVybiBzZWxmLl9maW5kX3Vy
bHMoc2VsZi5VUkxzQnlTdGFydFRpbWUsICphcmdzLCAqKmt3YXJncykKLQotCi1jbGFzcyBCdWls
ZGJvdEVpZ2h0VVJMRmFjdG9yeShvYmplY3QpOgotICAgIFNDSEVNRSA9ICdodHRwczovLycKLQot
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtYXN0ZXIpOgotICAgICAgICBzZWxmLm1hc3RlciA9IG1h
c3RlcgotCi0gICAgZGVmIHVybChzZWxmLCBidWlsZGVyX25hbWU9Tm9uZSwgYnVpbGRfbnVtYmVy
PU5vbmUsIHdvcmtlcl9uYW1lPU5vbmUsIHNob3VsZF9mZXRjaD1GYWxzZSk6Ci0gICAgICAgIGlm
IGJ1aWxkZXJfbmFtZToKLSAgICAgICAgICAgIGlmIGJ1aWxkX251bWJlcjoKLSAgICAgICAgICAg
ICAgICByZXR1cm4gc2VsZi5TQ0hFTUUgKyB1cmxsaWIucGFyc2UucXVvdGUoZid7c2VsZi5tYXN0
ZXJ9L2J1aWxkZXJzL3tidWlsZGVyX25hbWV9L2J1aWxkcy97YnVpbGRfbnVtYmVyfScpCi0gICAg
ICAgICAgICByZXR1cm4gc2VsZi5TQ0hFTUUgKyB1cmxsaWIucGFyc2UucXVvdGUoZid7c2VsZi5t
YXN0ZXJ9L2J1aWxkZXJzL3tidWlsZGVyX25hbWV9JykKLSAgICAgICAgZWxpZiB3b3JrZXJfbmFt
ZToKLSAgICAgICAgICAgIHJldHVybiBmJ3tzZWxmLlNDSEVNRX17c2VsZi5tYXN0ZXJ9L2J1aWxk
c2xhdmVzL3t3b3JrZXJfbmFtZX0nCi0KLSAgICAgICAgcmV0dXJuIE5vbmUKLQotCi1jbGFzcyBC
dWlsZGJvdFVSTEZhY3Rvcnkob2JqZWN0KToKLSAgICBTQ0hFTUUgPSAnaHR0cHM6Ly8nCi0gICAg
QlVJTERFUl9LRVkgPSAnX2J1aWxkZXJfJwotICAgIFdPUktFUl9LRVkgPSAnX3dvcmtlcl8nCi0g
ICAgRkVUQ0hfUkFURSA9IDYwICogNjAgICMgQWxsb3cgYSByZS1mZXRjaCBldmVyeSBob3VyCi0K
LSAgICBkZWYgX19pbml0X18oc2VsZiwgbWFzdGVyLCByZWRpcz1Ob25lKToKLSAgICAgICAgc2Vs
Zi5tYXN0ZXIgPSBtYXN0ZXIKLSAgICAgICAgc2VsZi5yZWRpcyA9IHJlZGlzIG9yIEZha2VTdHJp
Y3RSZWRpcygpCi0KLSAgICBkZWYgZmV0Y2goc2VsZik6Ci0gICAgICAgIHNlbGYucmVkaXMuc2V0
KGYne3NlbGYubWFzdGVyfV9yZWZyZXNoZWQnLCAwLCBleD1zZWxmLkZFVENIX1JBVEUpCi0KLSAg
ICAgICAgcmVzcG9uc2UgPSByZXF1ZXN0cy5nZXQoZid7c2VsZi5TQ0hFTUV9e3NlbGYubWFzdGVy
fS9hcGkvdjIvYnVpbGRlcnMnKQotICAgICAgICBpZiByZXNwb25zZS5zdGF0dXNfY29kZSA9PSAy
MDA6Ci0gICAgICAgICAgICBmb3IgYnVpbGRlciBpbiByZXNwb25zZS5qc29uKClbJ2J1aWxkZXJz
J106Ci0gICAgICAgICAgICAgICAgc2VsZi5yZWRpcy5zZXQoCi0gICAgICAgICAgICAgICAgICAg
IGYie3NlbGYubWFzdGVyfV97c2VsZi5CVUlMREVSX0tFWX1fe2J1aWxkZXJbJ25hbWUnXX0iLAot
ICAgICAgICAgICAgICAgICAgICBzdHIoYnVpbGRlclsnYnVpbGRlcmlkJ10pLAotICAgICAgICAg
ICAgICAgICkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoZidG
YWlsZWQgdG8gcmV0cmlldmUgYnVpbGRlcnMgaW5mb3JtYXRpb24gZnJvbSB7c2VsZi5tYXN0ZXJ9
JykKLQotICAgICAgICByZXNwb25zZSA9IHJlcXVlc3RzLmdldChmJ3tzZWxmLlNDSEVNRX17c2Vs
Zi5tYXN0ZXJ9L2FwaS92Mi93b3JrZXJzJykKLSAgICAgICAgaWYgcmVzcG9uc2Uuc3RhdHVzX2Nv
ZGUgPT0gMjAwOgotICAgICAgICAgICAgZm9yIHdvcmtlciBpbiByZXNwb25zZS5qc29uKClbJ3dv
cmtlcnMnXToKLSAgICAgICAgICAgICAgICBzZWxmLnJlZGlzLnNldCgKLSAgICAgICAgICAgICAg
ICAgICAgZiJ7c2VsZi5tYXN0ZXJ9X3tzZWxmLldPUktFUl9LRVl9X3t3b3JrZXJbJ25hbWUnXX0i
LAotICAgICAgICAgICAgICAgICAgICBzdHIod29ya2VyWyd3b3JrZXJpZCddKSwKLSAgICAgICAg
ICAgICAgICApCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKGYn
RmFpbGVkIHRvIHJldHJpZXZlIHdvcmtlcnMgaW5mb3JtYXRpb24gZnJvbSB7c2VsZi5tYXN0ZXJ9
JykKLQotICAgIGRlZiBfYnVpbGRlcl91cmwoc2VsZiwgYnVpbGRlcl9pZCk6Ci0gICAgICAgIHJl
dHVybiBmJ3tzZWxmLlNDSEVNRX17c2VsZi5tYXN0ZXJ9LyMvYnVpbGRlcnMve2J1aWxkZXJfaWR9
JwotCi0gICAgZGVmIF9idWlsZF91cmwoc2VsZiwgYnVpbGRlcl9pZCwgYnVpbGRfbnVtYmVyKToK
LSAgICAgICAgcmV0dXJuIGYne3NlbGYuX2J1aWxkZXJfdXJsKGJ1aWxkZXJfaWQ9YnVpbGRlcl9p
ZCl9L2J1aWxkcy97YnVpbGRfbnVtYmVyfScKLQotICAgIGRlZiBfd29ya2VyX3VybChzZWxmLCB3
b3JrZXJfaWQpOgotICAgICAgICByZXR1cm4gZid7c2VsZi5TQ0hFTUV9e3NlbGYubWFzdGVyfS8j
L3dvcmtlcnMve3dvcmtlcl9pZH0nCi0KLSAgICBkZWYgdXJsKHNlbGYsIGJ1aWxkZXJfbmFtZT1O
b25lLCBidWlsZF9udW1iZXI9Tm9uZSwgd29ya2VyX25hbWU9Tm9uZSwgc2hvdWxkX2ZldGNoPUZh
bHNlKToKLSAgICAgICAgaWYgc2hvdWxkX2ZldGNoIGFuZCBzZWxmLnJlZGlzLmdldChmJ3tzZWxm
Lm1hc3Rlcn1fcmVmcmVzaGVkJyk6Ci0gICAgICAgICAgICBzaG91bGRfZmV0Y2ggPSBGYWxzZQot
Ci0gICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICBpZiBidWlsZGVyX25hbWU6Ci0gICAg
ICAgICAgICAgICAgYnVpbGRlcl9pZCA9IHNlbGYucmVkaXMuZ2V0KGYne3NlbGYubWFzdGVyfV97
c2VsZi5CVUlMREVSX0tFWX1fe2J1aWxkZXJfbmFtZX0nKQotICAgICAgICAgICAgICAgIGlmIGJ1
aWxkZXJfaWQ6Ci0gICAgICAgICAgICAgICAgICAgIGlmIGJ1aWxkX251bWJlcjoKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9idWlsZF91cmwoYnVpbGRlcl9pZD1idWlsZGVy
X2lkLmRlY29kZSgndXRmLTgnKSwgYnVpbGRfbnVtYmVyPWJ1aWxkX251bWJlcikKLSAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2J1aWxkZXJfdXJsKGJ1aWxkZXJfaWQ9YnVpbGRlcl9p
ZC5kZWNvZGUoJ3V0Zi04JykpCi0KLSAgICAgICAgICAgIGVsaWYgd29ya2VyX25hbWU6Ci0gICAg
ICAgICAgICAgICAgd29ya2VyX2lkID0gc2VsZi5yZWRpcy5nZXQoZid7c2VsZi5tYXN0ZXJ9X3tz
ZWxmLldPUktFUl9LRVl9X3t3b3JrZXJfbmFtZX0nKQotICAgICAgICAgICAgICAgIGlmIHdvcmtl
cl9pZDoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3dvcmtlcl91cmwod29ya2Vy
X2lkPXdvcmtlcl9pZC5kZWNvZGUoJ3V0Zi04JykpCi0KLSAgICAgICAgICAgIGlmIG5vdCBzaG91
bGRfZmV0Y2g6Ci0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIHNlbGYuZmV0Y2go
KQotICAgICAgICAgICAgc2hvdWxkX2ZldGNoID0gRmFsc2UKLQotICAgICAgICBsb2dnaW5nLmVy
cm9yKGYnQ291bGQgbm90IGdlbmVyYXRlIFVSTCBmb3IgQ0kgbGlua3MgZnJvbSB7c2VsZi5tYXN0
ZXJ9JykKLSAgICAgICAgcmV0dXJuIE5vbmUKSW5kZXg6IFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3Vs
dHNkYnB5L21vZGVsL2NpX2NvbnRleHRfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
cmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvY2lfY29udGV4dF91bml0dGVzdC5weQkocmV2
aXNpb24gMjY1NTMxKQorKysgVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvY2lf
Y29udGV4dF91bml0dGVzdC5weQkobm9uZXhpc3RlbnQpCkBAIC0xLDM1NSArMCwwIEBACi0jIENv
cHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0jIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMK
LSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUgotIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotIyBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1pbXBvcnQgY29udGV4dGxpYgotaW1w
b3J0IGpzb24KLWltcG9ydCBtb2NrCi1pbXBvcnQgdGltZQotaW1wb3J0IHVuaXR0ZXN0Ci0KLWZy
b20gZmFrZXJlZGlzIGltcG9ydCBGYWtlU3RyaWN0UmVkaXMKLWZyb20gcmVkaXMgaW1wb3J0IFN0
cmljdFJlZGlzCi1mcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLmNhc3NhbmRyYV9jb250ZXh0IGltcG9y
dCBDYXNzYW5kcmFDb250ZXh0Ci1mcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLmNpX2NvbnRleHQgaW1w
b3J0IEJ1aWxkYm90VVJMRmFjdG9yeSwgQ0lDb250ZXh0LCBCdWlsZGJvdEVpZ2h0VVJMRmFjdG9y
eQotZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVyLmNvbmZpZ3VyYXRpb24gaW1wb3J0IENvbmZp
Z3VyYXRpb24KLWZyb20gcmVzdWx0c2RicHkubW9kZWwubW9ja19jYXNzYW5kcmFfY29udGV4dCBp
bXBvcnQgTW9ja0Nhc3NhbmRyYUNvbnRleHQKLWZyb20gcmVzdWx0c2RicHkubW9kZWwubW9ja19t
b2RlbF9mYWN0b3J5IGltcG9ydCBNb2NrTW9kZWxGYWN0b3J5Ci1mcm9tIHJlc3VsdHNkYnB5Lm1v
ZGVsLm1vY2tfcmVwb3NpdG9yeSBpbXBvcnQgTW9ja1NWTlJlcG9zaXRvcnkKLWZyb20gcmVzdWx0
c2RicHkubW9kZWwud2FpdF9mb3JfZG9ja2VyX3Rlc3RfY2FzZSBpbXBvcnQgV2FpdEZvckRvY2tl
clRlc3RDYXNlCi0KLQotY2xhc3MgVVJMRmFjdG9yeVRlc3QoV2FpdEZvckRvY2tlclRlc3RDYXNl
KToKLQotICAgIGNsYXNzIE1vY2tSZXF1ZXN0KG9iamVjdCk6Ci0KLSAgICAgICAgZGVmIF9faW5p
dF9fKHNlbGYsIHRleHQ9JycsIHN0YXR1c19jb2RlPTIwMCk6Ci0gICAgICAgICAgICBzZWxmLnRl
eHQgPSB0ZXh0Ci0gICAgICAgICAgICBzZWxmLnN0YXR1c19jb2RlID0gc3RhdHVzX2NvZGUKLQot
ICAgICAgICBkZWYganNvbihzZWxmKToKLSAgICAgICAgICAgIHJldHVybiBqc29uLmxvYWRzKHNl
bGYudGV4dCkKLQotICAgIEJVSUxEX01BU1RFUiA9ICdidWlsZC53ZWJraXQub3JnJwotCi0gICAg
QlVJTERFUlMgPSBkaWN0KAotICAgICAgICBidWlsZGVycz1bCi0gICAgICAgICAgICBkaWN0KAot
ICAgICAgICAgICAgICAgIGJ1aWxkZXJpZD0xLAotICAgICAgICAgICAgICAgIG5hbWU9J01vamF2
ZS1SZWxlYXNlLUJ1aWxkZXInLAotICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uPU5vbmUsCi0g
ICAgICAgICAgICAgICAgbWFzdGVyaWRzPVsxXSwKLSAgICAgICAgICAgICAgICB0YWdzPVsKLSAg
ICAgICAgICAgICAgICAgICAgJ01vamF2ZScsCi0gICAgICAgICAgICAgICAgICAgICdSZWxlYXNl
JywKLSAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgKSwKLSAgICAgICAgICAgIGRpY3Qo
Ci0gICAgICAgICAgICAgICAgYnVpbGRlcmlkPTIsCi0gICAgICAgICAgICAgICAgbmFtZT0nTW9q
YXZlLVJlbGVhc2UtV0syLVRlc3RzJywKLSAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbj1Ob25l
LAotICAgICAgICAgICAgICAgIG1hc3Rlcmlkcz1bMV0sCi0gICAgICAgICAgICAgICAgdGFncz1b
Ci0gICAgICAgICAgICAgICAgICAgICdNb2phdmUnLAotICAgICAgICAgICAgICAgICAgICAnUmVs
ZWFzZScsCi0gICAgICAgICAgICAgICAgICAgICdUZXN0cycsCi0gICAgICAgICAgICAgICAgICAg
ICdXSzInLAotICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICApLAotICAgICAgICAgICAg
ZGljdCgKLSAgICAgICAgICAgICAgICBidWlsZGVyaWQ9MywKLSAgICAgICAgICAgICAgICBuYW1l
PSdNb2phdmUtUmVsZWFzZS1XSzEtVGVzdHMnLAotICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9u
PU5vbmUsCi0gICAgICAgICAgICAgICAgbWFzdGVyaWRzPVsxXSwKLSAgICAgICAgICAgICAgICB0
YWdzPVsKLSAgICAgICAgICAgICAgICAgICAgJ01vamF2ZScsCi0gICAgICAgICAgICAgICAgICAg
ICdSZWxlYXNlJywKLSAgICAgICAgICAgICAgICAgICAgJ1Rlc3RzJywKLSAgICAgICAgICAgICAg
ICAgICAgJ1dLMScsCi0gICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICksCi0gICAgICAg
ICAgICBkaWN0KAotICAgICAgICAgICAgICAgIGJ1aWxkZXJpZD00LAotICAgICAgICAgICAgICAg
IG5hbWU9J0NhdGFsaW5hLVJlbGVhc2UtQnVpbGRlcicsCi0gICAgICAgICAgICAgICAgZGVzY3Jp
cHRpb249Tm9uZSwKLSAgICAgICAgICAgICAgICBtYXN0ZXJpZHM9WzFdLAotICAgICAgICAgICAg
ICAgIHRhZ3M9WwotICAgICAgICAgICAgICAgICAgICAnQ2F0YWxpbmEnLAotICAgICAgICAgICAg
ICAgICAgICAnUmVsZWFzZScsCi0gICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICksCi0g
ICAgICAgICAgICBkaWN0KAotICAgICAgICAgICAgICAgIGJ1aWxkZXJpZD01LAotICAgICAgICAg
ICAgICAgIG5hbWU9J0NhdGFsaW5hLVJlbGVhc2UtV0syLVRlc3RzJywKLSAgICAgICAgICAgICAg
ICBkZXNjcmlwdGlvbj1Ob25lLAotICAgICAgICAgICAgICAgIG1hc3Rlcmlkcz1bMV0sCi0gICAg
ICAgICAgICAgICAgdGFncz1bCi0gICAgICAgICAgICAgICAgICAgICdDYXRhbGluYScsCi0gICAg
ICAgICAgICAgICAgICAgICdSZWxlYXNlJywKLSAgICAgICAgICAgICAgICAgICAgJ1Rlc3RzJywK
LSAgICAgICAgICAgICAgICAgICAgJ1dLMicsCi0gICAgICAgICAgICAgICAgXSwKLSAgICAgICAg
ICAgICksCi0gICAgICAgICAgICBkaWN0KAotICAgICAgICAgICAgICAgIGJ1aWxkZXJpZD02LAot
ICAgICAgICAgICAgICAgIG5hbWU9J0NhdGFsaW5hLVJlbGVhc2UtV0sxLVRlc3RzJywKLSAgICAg
ICAgICAgICAgICBkZXNjcmlwdGlvbj1Ob25lLAotICAgICAgICAgICAgICAgIG1hc3Rlcmlkcz1b
MV0sCi0gICAgICAgICAgICAgICAgdGFncz1bCi0gICAgICAgICAgICAgICAgICAgICdDYXRhbGlu
YScsCi0gICAgICAgICAgICAgICAgICAgICdSZWxlYXNlJywKLSAgICAgICAgICAgICAgICAgICAg
J1Rlc3RzJywKLSAgICAgICAgICAgICAgICAgICAgJ1dLMScsCi0gICAgICAgICAgICAgICAgXSwK
LSAgICAgICAgICAgICksCi0gICAgICAgIF0sCi0gICAgICAgIG1ldGE9ZGljdCh0b3RhbD02KSwK
LSAgICApCi0gICAgV09SS0VSUyA9IGRpY3QoCi0gICAgICAgIHdvcmtlcnM9WwotICAgICAgICAg
ICAgZGljdCgKLSAgICAgICAgICAgICAgICB3b3JrZXJpZD0xLAotICAgICAgICAgICAgICAgIG5h
bWU9J2J1aWxkZXIxJywKLSAgICAgICAgICAgICAgICBjb25maWd1cmVkX29uPVsKLSAgICAgICAg
ICAgICAgICAgICAgZGljdCgKLSAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkZXJpZD0xLAot
ICAgICAgICAgICAgICAgICAgICAgICAgbWFzdGVyaWQ9MSwKLSAgICAgICAgICAgICAgICAgICAg
KSwKLSAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgIGNvbm5lY3RlZF90bz1bZGlj
dChtYXN0ZXJpZD0xKV0sCi0gICAgICAgICAgICAgICAgZ3JhY2VmdWw9RmFsc2UsCi0gICAgICAg
ICAgICAgICAgcGF1c2VkPUZhbHNlLAotICAgICAgICAgICAgICAgIHdvcmtlcmluZm89ZGljdCgK
LSAgICAgICAgICAgICAgICAgICAgYWNjZXNzX3VyaT0nc3NoOi8vYnVpbGRib3RAYnVpbGRlcjEn
LAotICAgICAgICAgICAgICAgICAgICBhZG1pbj0nV2ViS2l0IE9wZXJhdGlvbnMgPGVtYWlsQHdl
YmtpdC5vcmc+JywKLSAgICAgICAgICAgICAgICAgICAgaG9zdD0nPycsCi0gICAgICAgICAgICAg
ICAgICAgIHZlcnNpb249JzEuMS4xJwotICAgICAgICAgICAgICAgICksCi0gICAgICAgICAgICAp
LAotICAgICAgICAgICAgZGljdCgKLSAgICAgICAgICAgICAgICB3b3JrZXJpZD0yLAotICAgICAg
ICAgICAgICAgIG5hbWU9J2J1aWxkZXIyJywKLSAgICAgICAgICAgICAgICBjb25maWd1cmVkX29u
PVsKLSAgICAgICAgICAgICAgICAgICAgZGljdCgKLSAgICAgICAgICAgICAgICAgICAgICAgIGJ1
aWxkZXJpZD00LAotICAgICAgICAgICAgICAgICAgICAgICAgbWFzdGVyaWQ9MSwKLSAgICAgICAg
ICAgICAgICAgICAgKSwKLSAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgIGNvbm5l
Y3RlZF90bz1bZGljdChtYXN0ZXJpZD0xKV0sCi0gICAgICAgICAgICAgICAgZ3JhY2VmdWw9RmFs
c2UsCi0gICAgICAgICAgICAgICAgcGF1c2VkPUZhbHNlLAotICAgICAgICAgICAgICAgIHdvcmtl
cmluZm89ZGljdCgKLSAgICAgICAgICAgICAgICAgICAgYWNjZXNzX3VyaT0nc3NoOi8vYnVpbGRi
b3RAYnVpbGRlcjInLAotICAgICAgICAgICAgICAgICAgICBhZG1pbj0nV2ViS2l0IE9wZXJhdGlv
bnMgPGVtYWlsQHdlYmtpdC5vcmc+JywKLSAgICAgICAgICAgICAgICAgICAgaG9zdD0nPycsCi0g
ICAgICAgICAgICAgICAgICAgIHZlcnNpb249JzEuMS4xJwotICAgICAgICAgICAgICAgICksCi0g
ICAgICAgICAgICApLAotICAgICAgICAgICAgZGljdCgKLSAgICAgICAgICAgICAgICB3b3JrZXJp
ZD0zLAotICAgICAgICAgICAgICAgIG5hbWU9J2JvdDEnLAotICAgICAgICAgICAgICAgIGNvbmZp
Z3VyZWRfb249WwotICAgICAgICAgICAgICAgICAgICBkaWN0KAotICAgICAgICAgICAgICAgICAg
ICAgICAgYnVpbGRlcmlkPTIsCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXN0ZXJpZD0xLAot
ICAgICAgICAgICAgICAgICAgICApLAotICAgICAgICAgICAgICAgICAgICBkaWN0KAotICAgICAg
ICAgICAgICAgICAgICAgICAgYnVpbGRlcmlkPTMsCi0gICAgICAgICAgICAgICAgICAgICAgICBt
YXN0ZXJpZD0xLAotICAgICAgICAgICAgICAgICAgICApLAotICAgICAgICAgICAgICAgIF0sCi0g
ICAgICAgICAgICAgICAgY29ubmVjdGVkX3RvPVtkaWN0KG1hc3RlcmlkPTEpXSwKLSAgICAgICAg
ICAgICAgICBncmFjZWZ1bD1GYWxzZSwKLSAgICAgICAgICAgICAgICBwYXVzZWQ9RmFsc2UsCi0g
ICAgICAgICAgICAgICAgd29ya2VyaW5mbz1kaWN0KAotICAgICAgICAgICAgICAgICAgICBhY2Nl
c3NfdXJpPSdzc2g6Ly9idWlsZGJvdEBib3QxJywKLSAgICAgICAgICAgICAgICAgICAgYWRtaW49
J1dlYktpdCBPcGVyYXRpb25zIDxlbWFpbEB3ZWJraXQub3JnPicsCi0gICAgICAgICAgICAgICAg
ICAgIGhvc3Q9Jz8nLAotICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uPScxLjEuMScKLSAgICAg
ICAgICAgICAgICApLAotICAgICAgICAgICAgKSwKLSAgICAgICAgICAgIGRpY3QoCi0gICAgICAg
ICAgICAgICAgd29ya2VyaWQ9NCwKLSAgICAgICAgICAgICAgICBuYW1lPSdib3QyJywKLSAgICAg
ICAgICAgICAgICBjb25maWd1cmVkX29uPVsKLSAgICAgICAgICAgICAgICAgICAgZGljdCgKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkZXJpZD01LAotICAgICAgICAgICAgICAgICAgICAg
ICAgbWFzdGVyaWQ9MSwKLSAgICAgICAgICAgICAgICAgICAgKSwKLSAgICAgICAgICAgICAgICAg
ICAgZGljdCgKLSAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkZXJpZD02LAotICAgICAgICAg
ICAgICAgICAgICAgICAgbWFzdGVyaWQ9MSwKLSAgICAgICAgICAgICAgICAgICAgKSwKLSAgICAg
ICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgIGNvbm5lY3RlZF90bz1bZGljdChtYXN0ZXJp
ZD0xKV0sCi0gICAgICAgICAgICAgICAgZ3JhY2VmdWw9RmFsc2UsCi0gICAgICAgICAgICAgICAg
cGF1c2VkPUZhbHNlLAotICAgICAgICAgICAgICAgIHdvcmtlcmluZm89ZGljdCgKLSAgICAgICAg
ICAgICAgICAgICAgYWNjZXNzX3VyaT0nc3NoOi8vYnVpbGRib3RAYm90MicsCi0gICAgICAgICAg
ICAgICAgICAgIGFkbWluPSdXZWJLaXQgT3BlcmF0aW9ucyA8ZW1haWxAd2Via2l0Lm9yZz4nLAot
ICAgICAgICAgICAgICAgICAgICBob3N0PSc/JywKLSAgICAgICAgICAgICAgICAgICAgdmVyc2lv
bj0nMS4xLjEnCi0gICAgICAgICAgICAgICAgKSwKLSAgICAgICAgICAgICksCi0gICAgICAgIF0s
Ci0gICAgICAgIG1ldGE9ZGljdCh0b3RhbD00KSwKLSAgICApCi0KLSAgICBAY2xhc3NtZXRob2QK
LSAgICBkZWYgZ2V0KGNscywgdXJsLCAqYXJncywgKiprd2FyZ3MpOgotICAgICAgICBpZiB1cmwg
PT0gZidodHRwczovL3tjbHMuQlVJTERfTUFTVEVSfS9hcGkvdjIvYnVpbGRlcnMnOgotICAgICAg
ICAgICAgcmV0dXJuIGNscy5Nb2NrUmVxdWVzdCh0ZXh0PWpzb24uZHVtcHMoY2xzLkJVSUxERVJT
KSkKLSAgICAgICAgaWYgdXJsID09IGYnaHR0cHM6Ly97Y2xzLkJVSUxEX01BU1RFUn0vYXBpL3Yy
L3dvcmtlcnMnOgotICAgICAgICAgICAgcmV0dXJuIGNscy5Nb2NrUmVxdWVzdCh0ZXh0PWpzb24u
ZHVtcHMoY2xzLldPUktFUlMpKQotICAgICAgICByZXR1cm4gY2xzLk1vY2tSZXF1ZXN0KHN0YXR1
c19jb2RlPTUwMCkKLQotICAgIEBjbGFzc21ldGhvZAotICAgIEBjb250ZXh0bGliLmNvbnRleHRt
YW5hZ2VyCi0gICAgZGVmIG1vY2soY2xzKToKLSAgICAgICAgd2l0aCBtb2NrLnBhdGNoKCdyZXF1
ZXN0cy5nZXQnLCBuZXc9Y2xzLmdldCk6Ci0gICAgICAgICAgICB5aWVsZAotCi0gICAgQFdhaXRG
b3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RS
ZWRpcykKLSAgICBkZWYgdGVzdF9idWlsZGVyX3VybChzZWxmLCByZWRpcz1TdHJpY3RSZWRpcyk6
Ci0gICAgICAgIHdpdGggc2VsZi5tb2NrKCk6Ci0gICAgICAgICAgICBmYWN0b3J5ID0gQnVpbGRi
b3RVUkxGYWN0b3J5KG1hc3Rlcj0nYnVpbGQud2Via2l0Lm9yZycsIHJlZGlzPXJlZGlzKCkpCi0g
ICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShmYWN0b3J5LnVybChidWlsZGVyX25hbWU9J01v
amF2ZS1SZWxlYXNlLUJ1aWxkZXInKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2h0
dHBzOi8vYnVpbGQud2Via2l0Lm9yZy8jL2J1aWxkZXJzLzEnLCBmYWN0b3J5LnVybChidWlsZGVy
X25hbWU9J01vamF2ZS1SZWxlYXNlLUJ1aWxkZXInLCBzaG91bGRfZmV0Y2g9VHJ1ZSkpCi0gICAg
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdodHRwczovL2J1aWxkLndlYmtpdC5vcmcvIy9idWls
ZGVycy80JywgZmFjdG9yeS51cmwoYnVpbGRlcl9uYW1lPSdDYXRhbGluYS1SZWxlYXNlLUJ1aWxk
ZXInKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGZhY3RvcnkudXJsKGJ1aWxkZXJf
bmFtZT0nSGlnaFNpZXJyYS1SZWxlYXNlLUJ1aWxkZXInLCBzaG91bGRfZmV0Y2g9VHJ1ZSkpCi0K
LSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2h0dHBzOi8vYnVpbGQud2Via2l0Lm9yZy8j
L2J1aWxkZXJzLzQvYnVpbGRzLzgnLCBmYWN0b3J5LnVybChidWlsZGVyX25hbWU9J0NhdGFsaW5h
LVJlbGVhc2UtQnVpbGRlcicsIGJ1aWxkX251bWJlcj04KSkKLQotICAgIEBXYWl0Rm9yRG9ja2Vy
VGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMpCi0g
ICAgZGVmIHRlc3Rfd29ya2VyX3VybChzZWxmLCByZWRpcz1TdHJpY3RSZWRpcyk6Ci0gICAgICAg
IHdpdGggc2VsZi5tb2NrKCk6Ci0gICAgICAgICAgICBmYWN0b3J5ID0gQnVpbGRib3RVUkxGYWN0
b3J5KG1hc3Rlcj0nYnVpbGQud2Via2l0Lm9yZycsIHJlZGlzPXJlZGlzKCkpCi0gICAgICAgICAg
ICBzZWxmLmFzc2VydElzTm9uZShmYWN0b3J5LnVybCh3b3JrZXJfbmFtZT0nYnVpbGRlcjEnKSkK
LSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2h0dHBzOi8vYnVpbGQud2Via2l0Lm9yZy8j
L3dvcmtlcnMvMScsIGZhY3RvcnkudXJsKHdvcmtlcl9uYW1lPSdidWlsZGVyMScsIHNob3VsZF9m
ZXRjaD1UcnVlKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2h0dHBzOi8vYnVpbGQu
d2Via2l0Lm9yZy8jL3dvcmtlcnMvMycsIGZhY3RvcnkudXJsKHdvcmtlcl9uYW1lPSdib3QxJykp
Ci0gICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShmYWN0b3J5LnVybCh3b3JrZXJfbmFtZT0n
Ym90MycsIHNob3VsZF9mZXRjaD1UcnVlKSkKLQotICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2Uu
bW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMpCi0gICAgZGVmIHRl
c3RfaW52YWxpZF9jb21iaW5hdGlvbnMoc2VsZiwgcmVkaXM9U3RyaWN0UmVkaXMpOgotICAgICAg
ICB3aXRoIHNlbGYubW9jaygpOgotICAgICAgICAgICAgZmFjdG9yeSA9IEJ1aWxkYm90VVJMRmFj
dG9yeShtYXN0ZXI9J2J1aWxkLndlYmtpdC5vcmcnLCByZWRpcz1yZWRpcygpKQotICAgICAgICAg
ICAgc2VsZi5hc3NlcnRJc05vbmUoZmFjdG9yeS51cmwoc2hvdWxkX2ZldGNoPVRydWUpKQotICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnaHR0cHM6Ly9idWlsZC53ZWJraXQub3JnLyMvYnVp
bGRlcnMvMScsIGZhY3RvcnkudXJsKGJ1aWxkZXJfbmFtZT0nTW9qYXZlLVJlbGVhc2UtQnVpbGRl
cicsIHdvcmtlcl9uYW1lPSdidWlsZGVyMScsIHNob3VsZF9mZXRjaD1UcnVlKSkKLSAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2h0dHBzOi8vYnVpbGQud2Via2l0Lm9yZy8jL2J1aWxkZXJz
LzEvYnVpbGRzLzEnLCBmYWN0b3J5LnVybChidWlsZGVyX25hbWU9J01vamF2ZS1SZWxlYXNlLUJ1
aWxkZXInLCBidWlsZF9udW1iZXI9MSwgd29ya2VyX25hbWU9J2J1aWxkZXIxJywgc2hvdWxkX2Zl
dGNoPVRydWUpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnaHR0cHM6Ly9idWlsZC53
ZWJraXQub3JnLyMvd29ya2Vycy8xJywgZmFjdG9yeS51cmwoYnVpbGRfbnVtYmVyPTEsIHdvcmtl
cl9uYW1lPSdidWlsZGVyMScsIHNob3VsZF9mZXRjaD1UcnVlKSkKLQotICAgIGRlZiB0ZXN0X29s
ZF9idWlsZGVyX3VybChzZWxmKToKLSAgICAgICAgZmFjdG9yeSA9IEJ1aWxkYm90RWlnaHRVUkxG
YWN0b3J5KG1hc3Rlcj0nYnVpbGQud2Via2l0Lm9yZycpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXNO
b25lKGZhY3RvcnkudXJsKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2h0dHBzOi8vYnVp
bGQud2Via2l0Lm9yZy9idWlsZGVycy9BcHBsZSUyME1vamF2ZSUyMFJlbGVhc2UlMjBXSzIlMjAl
MjhUZXN0cyUyOScsIGZhY3RvcnkudXJsKGJ1aWxkZXJfbmFtZT0nQXBwbGUgTW9qYXZlIFJlbGVh
c2UgV0syIChUZXN0cyknKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnaHR0cHM6Ly9idWls
ZC53ZWJraXQub3JnL2J1aWxkZXJzL0FwcGxlJTIwTW9qYXZlJTIwUmVsZWFzZSUyMCUyOEJ1aWxk
JTI5JywgZmFjdG9yeS51cmwoYnVpbGRlcl9uYW1lPSdBcHBsZSBNb2phdmUgUmVsZWFzZSAoQnVp
bGQpJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2h0dHBzOi8vYnVpbGQud2Via2l0Lm9y
Zy9idWlsZGVycy9BcHBsZSUyME1vamF2ZSUyMFJlbGVhc2UlMjAlMjhCdWlsZCUyOS9idWlsZHMv
NzE3MCcsIGZhY3RvcnkudXJsKGJ1aWxkZXJfbmFtZT0nQXBwbGUgTW9qYXZlIFJlbGVhc2UgKEJ1
aWxkKScsIGJ1aWxkX251bWJlcj03MTcwKSkKLQotICAgIGRlZiB0ZXN0X29sZF93b3JrZXJfdXJs
KHNlbGYpOgotICAgICAgICBmYWN0b3J5ID0gQnVpbGRib3RFaWdodFVSTEZhY3RvcnkobWFzdGVy
PSdidWlsZC53ZWJraXQub3JnJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnaHR0cHM6Ly9i
dWlsZC53ZWJraXQub3JnL2J1aWxkc2xhdmVzL2JvdDYxMCcsIGZhY3RvcnkudXJsKHdvcmtlcl9u
YW1lPSdib3Q2MTAnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnaHR0cHM6Ly9idWlsZC53
ZWJraXQub3JnL2J1aWxkc2xhdmVzL2JvdDYxMScsIGZhY3RvcnkudXJsKHdvcmtlcl9uYW1lPSdi
b3Q2MTEnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnaHR0cHM6Ly9idWlsZC53ZWJraXQu
b3JnL2J1aWxkZXJzL0FwcGxlJTIwTW9qYXZlJTIwUmVsZWFzZSUyMFdLMiUyMCUyOFRlc3RzJTI5
JywgZmFjdG9yeS51cmwoYnVpbGRlcl9uYW1lPSdBcHBsZSBNb2phdmUgUmVsZWFzZSBXSzIgKFRl
c3RzKScsIHdvcmtlcl9uYW1lPSdib3Q2MTAnKSkKLQotCi1jbGFzcyBDSUNvbnRleHRUZXN0KFdh
aXRGb3JEb2NrZXJUZXN0Q2FzZSk6Ci0gICAgS0VZU1BBQ0UgPSAnc3VpdGVfY29udGV4dF90ZXN0
X2tleXNwYWNlJwotCi0gICAgZGVmIGluaXRfZGF0YWJhc2Uoc2VsZiwgcmVkaXM9U3RyaWN0UmVk
aXMsIGNhc3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0KToKLSAgICAgICAgd2l0aCBVUkxGYWN0b3J5
VGVzdC5tb2NrKCk6Ci0gICAgICAgICAgICBjYXNzYW5kcmEuZHJvcF9rZXlzcGFjZShrZXlzcGFj
ZT1zZWxmLktFWVNQQUNFKQotICAgICAgICAgICAgc2VsZi5tb2RlbCA9IE1vY2tNb2RlbEZhY3Rv
cnkuY3JlYXRlKHJlZGlzPXJlZGlzKCksIGNhc3NhbmRyYT1jYXNzYW5kcmEoa2V5c3BhY2U9c2Vs
Zi5LRVlTUEFDRSwgY3JlYXRlX2tleXNwYWNlPVRydWUpKQotICAgICAgICAgICAgc2VsZi5tb2Rl
bC5jaV9jb250ZXh0LmFkZF91cmxfZmFjdG9yeShCdWlsZGJvdFVSTEZhY3RvcnkobWFzdGVyPSdi
dWlsZC53ZWJraXQub3JnJywgcmVkaXM9c2VsZi5tb2RlbC5yZWRpcykpCi0KLSAgICAgICAgICAg
IHdpdGggc2VsZi5tb2RlbC51cGxvYWRfY29udGV4dDoKLSAgICAgICAgICAgICAgICAjIE1vY2sg
cmVzdWx0cyBhcmUgbW9yZSBjb21wbGljYXRlZCBiZWNhdXNlIHdlIHdhbnQgdG8gYXR0YWNoIHJl
c3VsdHMgdG8gYnVpbGRlcnMKLSAgICAgICAgICAgICAgICBmb3IgY29uZmlndXJhdGlvbiBpbiBb
Ci0gICAgICAgICAgICAgICAgICAgIENvbmZpZ3VyYXRpb24ocGxhdGZvcm09J01hYycsIHZlcnNp
b25fbmFtZT0nQ2F0YWxpbmEnLCB2ZXJzaW9uPScxMC4xNS4wJywgc2RrPScxOUE1MDAnLCBpc19z
aW11bGF0b3I9RmFsc2UsIGFyY2hpdGVjdHVyZT0neDg2XzY0Jywgc3R5bGU9J1JlbGVhc2UnLCBm
bGF2b3I9J3drMScpLAotICAgICAgICAgICAgICAgICAgICBDb25maWd1cmF0aW9uKHBsYXRmb3Jt
PSdNYWMnLCB2ZXJzaW9uX25hbWU9J0NhdGFsaW5hJywgdmVyc2lvbj0nMTAuMTUuMCcsIHNkaz0n
MTlBNTAwJywgaXNfc2ltdWxhdG9yPUZhbHNlLCBhcmNoaXRlY3R1cmU9J3g4Nl82NCcsIHN0eWxl
PSdSZWxlYXNlJywgZmxhdm9yPSd3azInKSwKLSAgICAgICAgICAgICAgICAgICAgQ29uZmlndXJh
dGlvbihwbGF0Zm9ybT0nTWFjJywgdmVyc2lvbl9uYW1lPSdNb2phdmUnLCB2ZXJzaW9uPScxMC4x
NC4wJywgc2RrPScxOEE1MDAnLCBpc19zaW11bGF0b3I9RmFsc2UsIGFyY2hpdGVjdHVyZT0neDg2
XzY0Jywgc3R5bGU9J1JlbGVhc2UnLCBmbGF2b3I9J3drMScpLAotICAgICAgICAgICAgICAgICAg
ICBDb25maWd1cmF0aW9uKHBsYXRmb3JtPSdNYWMnLCB2ZXJzaW9uX25hbWU9J01vamF2ZScsIHZl
cnNpb249JzEwLjE0LjAnLCBzZGs9JzE4QTUwMCcsIGlzX3NpbXVsYXRvcj1GYWxzZSwgYXJjaGl0
ZWN0dXJlPSd4ODZfNjQnLCBzdHlsZT0nUmVsZWFzZScsIGZsYXZvcj0nd2syJyksCi0gICAgICAg
ICAgICAgICAgXToKLSAgICAgICAgICAgICAgICAgICAgYnVpbGRfY291bnQgPSBbMV0KLQotICAg
ICAgICAgICAgICAgICAgICBkZWYgY2FsbGJhY2soY29tbWl0cywgbW9kZWw9c2VsZi5tb2RlbCwg
Y29uZmlndXJhdGlvbj1jb25maWd1cmF0aW9uLCBjb3VudD1idWlsZF9jb3VudCk6Ci0gICAgICAg
ICAgICAgICAgICAgICAgICByZXN1bHRzID0gTW9ja01vZGVsRmFjdG9yeS5sYXlvdXRfdGVzdF9y
ZXN1bHRzKCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHNbJ2RldGFpbHMnXSA9IHsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYnVpbGRib3QtbWFzdGVyJzogVVJMRmFjdG9y
eVRlc3QuQlVJTERfTUFTVEVSLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdidWlsZGVy
LW5hbWUnOiBmJ3tjb25maWd1cmF0aW9uLnZlcnNpb25fbmFtZX0te2NvbmZpZ3VyYXRpb24uc3R5
bGV9LXtjb25maWd1cmF0aW9uLmZsYXZvci51cHBlcigpfS1UZXN0cycsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJ2J1aWxkLW51bWJlcic6IHN0cihjb3VudFswXSksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ2J1aWxkYm90LXdvcmtlcic6IHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJ01vamF2ZSc6ICdib3QxJywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ0NhdGFsaW5hJzogJ2JvdDInLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0uZ2V0KGNvbmZpZ3VyYXRpb24udmVyc2lvbl9uYW1lLCBOb25lKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIG1vZGVsLnVwbG9hZF9jb250ZXh0
LnVwbG9hZF90ZXN0X3Jlc3VsdHMoY29uZmlndXJhdGlvbiwgY29tbWl0cywgc3VpdGU9J2xheW91
dC10ZXN0cycsIHRpbWVzdGFtcD10aW1lLnRpbWUoKSwgdGVzdF9yZXN1bHRzPXJlc3VsdHMpCi0g
ICAgICAgICAgICAgICAgICAgICAgICBjb3VudFswXSArPSAxCi0KLSAgICAgICAgICAgICAgICAg
ICAgTW9ja01vZGVsRmFjdG9yeS5pdGVyYXRlX2FsbF9jb21taXRzKHNlbGYubW9kZWwsIGNhbGxi
YWNrKQotICAgICAgICAgICAgICAgICAgICBNb2NrTW9kZWxGYWN0b3J5LnByb2Nlc3NfcmVzdWx0
cyhzZWxmLm1vZGVsLCBjb25maWd1cmF0aW9uKQotCi0gICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2Fz
ZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNz
YW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCi0gICAgZGVmIHRlc3RfYnVpbGRlcl9mb3Jfc2lu
Z2xlX2NvbmZpZ3VyYXRpb24oc2VsZiwgcmVkaXM9U3RyaWN0UmVkaXMsIGNhc3NhbmRyYT1DYXNz
YW5kcmFDb250ZXh0KToKLSAgICAgICAgc2VsZi5pbml0X2RhdGFiYXNlKHJlZGlzPXJlZGlzLCBj
YXNzYW5kcmE9Y2Fzc2FuZHJhKQotICAgICAgICB1cmxzID0gc2VsZi5tb2RlbC5jaV9jb250ZXh0
LmZpbmRfdXJsc19ieV9xdWV1ZShjb25maWd1cmF0aW9ucz1bQ29uZmlndXJhdGlvbih2ZXJzaW9u
X25hbWU9J01vamF2ZScsIGZsYXZvcj0nd2syJyldLCBzdWl0ZT0nbGF5b3V0LXRlc3RzJykKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWQodXJscy52YWx1ZXMoKSksIFsnaHR0cHM6Ly9i
dWlsZC53ZWJraXQub3JnLyMvYnVpbGRlcnMvMiddKQotCi0gICAgQFdhaXRGb3JEb2NrZXJUZXN0
Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19j
YXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCi0gICAgZGVmIHRlc3RfYnVpbGRlcl9mb3Jf
bXVsdGlwbGVfY29uZmlndXJhdGlvbihzZWxmLCByZWRpcz1TdHJpY3RSZWRpcywgY2Fzc2FuZHJh
PUNhc3NhbmRyYUNvbnRleHQpOgotICAgICAgICBzZWxmLmluaXRfZGF0YWJhc2UocmVkaXM9cmVk
aXMsIGNhc3NhbmRyYT1jYXNzYW5kcmEpCi0gICAgICAgIHVybHMgPSBzZWxmLm1vZGVsLmNpX2Nv
bnRleHQuZmluZF91cmxzX2J5X3F1ZXVlKGNvbmZpZ3VyYXRpb25zPVtDb25maWd1cmF0aW9uKHZl
cnNpb25fbmFtZT0nQ2F0YWxpbmEnKV0sIHN1aXRlPSdsYXlvdXQtdGVzdHMnKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHNvcnRlZCh1cmxzLnZhbHVlcygpKSwgWydodHRwczovL2J1aWxkLndl
YmtpdC5vcmcvIy9idWlsZGVycy81JywgJ2h0dHBzOi8vYnVpbGQud2Via2l0Lm9yZy8jL2J1aWxk
ZXJzLzYnXSkKLQotICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIo
bW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFD
b250ZXh0KQotICAgIGRlZiB0ZXN0X3VybF9mb3JfY29tbWl0KHNlbGYsIHJlZGlzPVN0cmljdFJl
ZGlzLCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCk6Ci0gICAgICAgIHNlbGYuaW5pdF9kYXRh
YmFzZShyZWRpcz1yZWRpcywgY2Fzc2FuZHJhPWNhc3NhbmRyYSkKLSAgICAgICAgdXJscyA9IHNl
bGYubW9kZWwuY2lfY29udGV4dC5maW5kX3VybHNfYnlfY29tbWl0KAotICAgICAgICAgICAgY29u
ZmlndXJhdGlvbnM9W0NvbmZpZ3VyYXRpb24odmVyc2lvbl9uYW1lPSdNb2phdmUnLCBmbGF2b3I9
J3drMicpXSwKLSAgICAgICAgICAgIHN1aXRlPSdsYXlvdXQtdGVzdHMnLAotICAgICAgICAgICAg
YmVnaW49TW9ja1NWTlJlcG9zaXRvcnkud2Via2l0KCkuY29tbWl0X2Zvcl9pZCgyMzY1NDIpLAot
ICAgICAgICAgICAgZW5kPU1vY2tTVk5SZXBvc2l0b3J5LndlYmtpdCgpLmNvbW1pdF9mb3JfaWQo
MjM2NTQyKSwKLSAgICAgICAgKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV4dChpdGVy
KHVybHMudmFsdWVzKCkpKVswXVsncXVldWUnXSwgJ2h0dHBzOi8vYnVpbGQud2Via2l0Lm9yZy8j
L2J1aWxkZXJzLzInKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5leHQoaXRlcih1cmxzLnZh
bHVlcygpKSlbMF1bJ2J1aWxkJ10sICdodHRwczovL2J1aWxkLndlYmtpdC5vcmcvIy9idWlsZGVy
cy8yL2J1aWxkcy8zJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KGl0ZXIodXJscy52
YWx1ZXMoKSkpWzBdWyd3b3JrZXInXSwgJ2h0dHBzOi8vYnVpbGQud2Via2l0Lm9yZy8jL3dvcmtl
cnMvMycpCi0KLSAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1v
Y2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29u
dGV4dCkKLSAgICBkZWYgdGVzdF9maW5kX2J5X3RpbWUoc2VsZiwgcmVkaXM9U3RyaWN0UmVkaXMs
IGNhc3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0KToKLSAgICAgICAgc2VsZi5pbml0X2RhdGFiYXNl
KHJlZGlzPXJlZGlzLCBjYXNzYW5kcmE9Y2Fzc2FuZHJhKQotICAgICAgICB1cmxzID0gc2VsZi5t
b2RlbC5jaV9jb250ZXh0LmZpbmRfdXJsc19ieV9jb21taXQoCi0gICAgICAgICAgICBjb25maWd1
cmF0aW9ucz1bQ29uZmlndXJhdGlvbih2ZXJzaW9uX25hbWU9J0NhdGFsaW5hJyldLAotICAgICAg
ICAgICAgc3VpdGU9J2xheW91dC10ZXN0cycsCi0gICAgICAgICAgICBiZWdpbl9xdWVyeV90aW1l
PSh0aW1lLnRpbWUoKSAtIDYwICogNjApLAotICAgICAgICApCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwobGVuKHVybHMpLCAyKQotICAgICAgICBmb3IgdXJsc19mb3JfY29uZmlnIGluIHVybHMu
dmFsdWVzKCk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbih1cmxzX2Zvcl9jb25m
aWcpLCA1KQotCi0gICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlciht
b2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNv
bnRleHQpCi0gICAgZGVmIHRlc3RfZmluZF9ub190ZXN0c19ieV90aW1lKHNlbGYsIHJlZGlzPVN0
cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCk6Ci0gICAgICAgIHNlbGYuaW5p
dF9kYXRhYmFzZShyZWRpcz1yZWRpcywgY2Fzc2FuZHJhPWNhc3NhbmRyYSkKLSAgICAgICAgdXJs
cyA9IHNlbGYubW9kZWwuY2lfY29udGV4dC5maW5kX3VybHNfYnlfY29tbWl0KAotICAgICAgICAg
ICAgY29uZmlndXJhdGlvbnM9W0NvbmZpZ3VyYXRpb24odmVyc2lvbl9uYW1lPSdNb2phdmUnKV0s
Ci0gICAgICAgICAgICBzdWl0ZT0nbGF5b3V0LXRlc3RzJywKLSAgICAgICAgICAgIGVuZF9xdWVy
eV90aW1lPSh0aW1lLnRpbWUoKSAtIDYwICogNjApLAotICAgICAgICApCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwobGVuKHVybHMpLCAwKQpJbmRleDogVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0
c2RicHkvbW9kZWwvY29tbWl0X2NvbnRleHQucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvcmVzdWx0
c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvY29tbWl0X2NvbnRleHQucHkJKHJldmlzaW9uIDI2NTUz
MSkKKysrIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL2NvbW1pdF9jb250ZXh0
LnB5CShub25leGlzdGVudCkKQEAgLTEsMzQyICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUgotIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0jIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSCi0jIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0jIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0KLWltcG9ydCBjYWxlbmRhcgotaW1wb3J0IGpzb24KLWltcG9ydCB0
aW1lCi0KLWZyb20gY2Fzc2FuZHJhLmNxbGVuZ2luZSBpbXBvcnQgY29sdW1ucwotZnJvbSBjYXNz
YW5kcmEuY3FsZW5naW5lLm1vZGVscyBpbXBvcnQgTW9kZWwKLWZyb20gZGF0ZXRpbWUgaW1wb3J0
IGRhdGV0aW1lCi1mcm9tIHJlc3VsdHNkYnB5LmNvbnRyb2xsZXIuY29tbWl0IGltcG9ydCBDb21t
aXQKLWZyb20gcmVzdWx0c2RicHkubW9kZWwucmVwb3NpdG9yeSBpbXBvcnQgUmVwb3NpdG9yeSwg
U0NNRXhjZXB0aW9uCi0KLQotY2xhc3MgQ29tbWl0Q29udGV4dChvYmplY3QpOgotCi0gICAgY2xh
c3MgQ29tbWl0TW9kZWwoTW9kZWwpOgotICAgICAgICByZXBvc2l0b3J5X2lkID0gY29sdW1ucy5U
ZXh0KHBhcnRpdGlvbl9rZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkKLSAgICAgICAgYnJhbmNoID0g
Y29sdW1ucy5UZXh0KHBhcnRpdGlvbl9rZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkKLSAgICAgICAg
Y29tbWl0dGVyID0gY29sdW1ucy5UZXh0KCkKLSAgICAgICAgbWVzc2FnZSA9IGNvbHVtbnMuVGV4
dCgpCi0KLSAgICAgICAgZGVmIHRvX2NvbW1pdChzZWxmKToKLSAgICAgICAgICAgIHJldHVybiBD
b21taXQoCi0gICAgICAgICAgICAgICAgcmVwb3NpdG9yeV9pZD1zZWxmLnJlcG9zaXRvcnlfaWQs
IGJyYW5jaD1zZWxmLmJyYW5jaCwKLSAgICAgICAgICAgICAgICBpZD1zZWxmLmNvbW1pdF9pZCwK
LSAgICAgICAgICAgICAgICB0aW1lc3RhbXA9c2VsZi51dWlkIC8vIENvbW1pdC5USU1FU1RBTVBf
VE9fVVVJRF9NVUxUSVBMSUVSLAotICAgICAgICAgICAgICAgIG9yZGVyPXNlbGYudXVpZCAlIENv
bW1pdC5USU1FU1RBTVBfVE9fVVVJRF9NVUxUSVBMSUVSLAotICAgICAgICAgICAgICAgIGNvbW1p
dHRlcj1zZWxmLmNvbW1pdHRlciwgbWVzc2FnZT1zZWxmLm1lc3NhZ2UsCi0gICAgICAgICAgICAp
Ci0KLSAgICBjbGFzcyBDb21taXRCeUlEKENvbW1pdE1vZGVsKToKLSAgICAgICAgX190YWJsZV9u
YW1lX18gPSAnY29tbWl0c19pZF90b190aW1lc3RhbXBfdXVpZCcKLSAgICAgICAgY29tbWl0X2lk
ID0gY29sdW1ucy5UZXh0KHByaW1hcnlfa2V5PVRydWUsIHJlcXVpcmVkPVRydWUpCi0gICAgICAg
IHV1aWQgPSBjb2x1bW5zLkJpZ0ludChyZXF1aXJlZD1UcnVlKQotCi0gICAgY2xhc3MgQ29tbWl0
QnlVdWlkQXNjZW5kaW5nKENvbW1pdE1vZGVsKToKLSAgICAgICAgX190YWJsZV9uYW1lX18gPSAn
Y29tbWl0c190aW1lc3RhbXBfdXVpZF90b19pZF9hc2NlbmRpbmcnCi0gICAgICAgIHV1aWQgPSBj
b2x1bW5zLkJpZ0ludChwcmltYXJ5X2tleT1UcnVlLCByZXF1aXJlZD1UcnVlLCBjbHVzdGVyaW5n
X29yZGVyPSdBU0MnKQotICAgICAgICBjb21taXRfaWQgPSBjb2x1bW5zLlRleHQocmVxdWlyZWQ9
VHJ1ZSkKLQotICAgIGNsYXNzIENvbW1pdEJ5VXVpZERlc2NlbmRpbmcoQ29tbWl0TW9kZWwpOgot
ICAgICAgICBfX3RhYmxlX25hbWVfXyA9ICdjb21taXRzX3RpbWVzdGFtcF91dWlkX3RvX2lkX2Rl
c2NlbmRpbmcnCi0gICAgICAgIHV1aWQgPSBjb2x1bW5zLkJpZ0ludChwcmltYXJ5X2tleT1UcnVl
LCByZXF1aXJlZD1UcnVlLCBjbHVzdGVyaW5nX29yZGVyPSdERVNDJykKLSAgICAgICAgY29tbWl0
X2lkID0gY29sdW1ucy5UZXh0KHJlcXVpcmVkPVRydWUpCi0KLSAgICBjbGFzcyBCcmFuY2hlcyhN
b2RlbCk6Ci0gICAgICAgIF9fdGFibGVfbmFtZV9fID0gJ2NvbW1pdF9icmFuY2hlcycKLSAgICAg
ICAgcmVwb3NpdG9yeV9pZCA9IGNvbHVtbnMuVGV4dChwYXJ0aXRpb25fa2V5PVRydWUsIHJlcXVp
cmVkPVRydWUpCi0gICAgICAgIGJyYW5jaCA9IGNvbHVtbnMuVGV4dChwcmltYXJ5X2tleT1UcnVl
LCByZXF1aXJlZD1UcnVlKQotCi0gICAgREVGQVVMVF9CUkFOQ0hfS0VZID0gJ2RlZmF1bHQnCi0K
LSAgICBkZWYgX19pbml0X18oc2VsZiwgcmVkaXMsIGNhc3NhbmRyYSwgY2FjaGVfdGltZW91dD02
MCAqIDYwICogMjQgKiAyKToKLSAgICAgICAgYXNzZXJ0IHJlZGlzCi0gICAgICAgIGFzc2VydCBj
YXNzYW5kcmEKLQotICAgICAgICBzZWxmLnJlZGlzID0gcmVkaXMKLSAgICAgICAgc2VsZi5jYXNz
YW5kcmEgPSBjYXNzYW5kcmEKLSAgICAgICAgc2VsZi5yZXBvc2l0b3JpZXMgPSB7fQotICAgICAg
ICBzZWxmLmNhY2hlX3RpbWVvdXQgPSBjYWNoZV90aW1lb3V0Ci0KLSAgICAgICAgd2l0aCBzZWxm
OgotICAgICAgICAgICAgc2VsZi5jYXNzYW5kcmEuY3JlYXRlX3RhYmxlKHNlbGYuQ29tbWl0QnlJ
RCkKLSAgICAgICAgICAgIHNlbGYuY2Fzc2FuZHJhLmNyZWF0ZV90YWJsZShzZWxmLkNvbW1pdEJ5
VXVpZEFzY2VuZGluZykKLSAgICAgICAgICAgIHNlbGYuY2Fzc2FuZHJhLmNyZWF0ZV90YWJsZShz
ZWxmLkNvbW1pdEJ5VXVpZERlc2NlbmRpbmcpCi0gICAgICAgICAgICBzZWxmLmNhc3NhbmRyYS5j
cmVhdGVfdGFibGUoc2VsZi5CcmFuY2hlcykKLQotICAgIGRlZiBfX2VudGVyX18oc2VsZik6Ci0g
ICAgICAgIHNlbGYuY2Fzc2FuZHJhLl9fZW50ZXJfXygpCi0KLSAgICBkZWYgX19leGl0X18oc2Vs
ZiwgKmFyZ3MsICoqa3dhcmdzKToKLSAgICAgICAgc2VsZi5jYXNzYW5kcmEuX19leGl0X18oKmFy
Z3MsICoqa3dhcmdzKQotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHRpbWVzdGFtcF90b191
dWlkKGNscywgdGltZXN0YW1wPU5vbmUpOgotICAgICAgICBpZiB0aW1lc3RhbXAgaXMgTm9uZToK
LSAgICAgICAgICAgIHJldHVybiBpbnQodGltZS50aW1lKCkpICogQ29tbWl0LlRJTUVTVEFNUF9U
T19VVUlEX01VTFRJUExJRVIKLSAgICAgICAgZWxpZiBpc2luc3RhbmNlKHRpbWVzdGFtcCwgZGF0
ZXRpbWUpOgotICAgICAgICAgICAgcmV0dXJuIGNhbGVuZGFyLnRpbWVnbSh0aW1lc3RhbXAudGlt
ZXR1cGxlKCkpICogQ29tbWl0LlRJTUVTVEFNUF9UT19VVUlEX01VTFRJUExJRVIKLSAgICAgICAg
cmV0dXJuIGludCh0aW1lc3RhbXApICogQ29tbWl0LlRJTUVTVEFNUF9UT19VVUlEX01VTFRJUExJ
RVIKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBjb252ZXJ0X3RvX3V1aWQoY2xzLCB2YWx1
ZSwgZGVmYXVsdD0wKToKLSAgICAgICAgaWYgdmFsdWUgaXMgTm9uZToKLSAgICAgICAgICAgIHJl
dHVybiBkZWZhdWx0Ci0gICAgICAgIGVsaWYgaXNpbnN0YW5jZSh2YWx1ZSwgQ29tbWl0KToKLSAg
ICAgICAgICAgIHJldHVybiB2YWx1ZS51dWlkCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBy
ZXR1cm4gY2xzLnRpbWVzdGFtcF90b191dWlkKHZhbHVlKQotCi0gICAgQGNsYXNzbWV0aG9kCi0g
ICAgZGVmIHV1aWRfZm9yX2NvbW1pdHMoY2xzLCBjb21taXRzKToKLSAgICAgICAgcmV0dXJuIG1h
eChbY29tbWl0LnV1aWQgZm9yIGNvbW1pdCBpbiBjb21taXRzXSkKLQotICAgIGRlZiBicmFuY2hf
a2V5c19mb3JfY29tbWl0cyhzZWxmLCBjb21taXRzKToKLSAgICAgICAgYnJhbmNoZXMgPSBzZXQo
KQotCi0gICAgICAgICMgVGhpcyBjb3ZlcnMgYSBtb3N0bHkgdGhlb3JldGljYWwgZWRnZSBjYXNl
IHdoZXJlIGEgbXVsdGlwbGUgY29tbWl0cyBhcmUgcHJvdmlkZWQgb24gZGlmZmVyZW50IGJyYW5j
aGVzLiBJbgotICAgICAgICAjIHRoaXMgY2FzZSwgdHJhY2sgYnJhbmNoZXMgd2hpY2ggYXJlIG5v
dCB0aGUgZGVmYXVsdCBicmFuY2ggaW5kZXBlbmRlbnRseS4KLSAgICAgICAgZm9yIGNvbW1pdCBp
biBjb21taXRzOgotICAgICAgICAgICAgcmVwbyA9IHNlbGYucmVwb3NpdG9yaWVzLmdldChjb21t
aXQucmVwb3NpdG9yeV9pZCwgUmVwb3NpdG9yeShrZXk9Y29tbWl0LnJlcG9zaXRvcnlfaWQpKQot
ICAgICAgICAgICAgaWYgY29tbWl0LmJyYW5jaCAhPSByZXBvLkRFRkFVTFRfQlJBTkNIOgotICAg
ICAgICAgICAgICAgIGJyYW5jaGVzLmFkZChjb21taXQuYnJhbmNoKQotICAgICAgICBpZiBsZW4o
YnJhbmNoZXMpID09IDA6Ci0gICAgICAgICAgICBicmFuY2hlcy5hZGQoc2VsZi5ERUZBVUxUX0JS
QU5DSF9LRVkpCi0gICAgICAgIHJldHVybiBsaXN0KGJyYW5jaGVzKQotCi0gICAgZGVmIHJ1bl9m
dW5jdGlvbl90aHJvdWdoX3JlZGlzX2NhY2hlKHNlbGYsIGtleSwgZnVuY3Rpb24pOgotICAgICAg
ICByZXN1bHQgPSBzZWxmLnJlZGlzLmdldCgnY29tbWl0X21hcHBpbmc6JyArIGtleSkKLSAgICAg
ICAgaWYgcmVzdWx0OgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHJlc3VsdCA9
IFtDb21taXQuZnJvbV9qc29uKGVsZW1lbnQpIGZvciBlbGVtZW50IGluIGpzb24ubG9hZHMocmVz
dWx0KV0KLSAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgotICAgICAgICAgICAgICAgIHJl
c3VsdCA9IE5vbmUKLSAgICAgICAgaWYgcmVzdWx0IGlzIE5vbmU6Ci0gICAgICAgICAgICByZXN1
bHQgPSBmdW5jdGlvbigpCi0gICAgICAgIGlmIHJlc3VsdDoKLSAgICAgICAgICAgIHNlbGYucmVk
aXMuc2V0KCdjb21taXRfbWFwcGluZzonICsga2V5LCBqc29uLmR1bXBzKHJlc3VsdCwgY2xzPUNv
bW1pdC5FbmNvZGVyKSwgZXg9c2VsZi5jYWNoZV90aW1lb3V0KQotICAgICAgICByZXR1cm4gcmVz
dWx0Ci0KLSAgICBkZWYgcmVnaXN0ZXJfcmVwb3NpdG9yeShzZWxmLCByZXBvc2l0b3J5KToKLSAg
ICAgICAgaWYgbm90IGlzaW5zdGFuY2UocmVwb3NpdG9yeSwgUmVwb3NpdG9yeSk6Ci0gICAgICAg
ICAgICByYWlzZSBUeXBlRXJyb3IoZidFeHBlY3RlZCB0eXBlIHtSZXBvc2l0b3J5fSwgZ290IHt0
eXBlKHJlcG9zaXRvcnkpfScpCi0gICAgICAgIHNlbGYucmVwb3NpdG9yaWVzW3JlcG9zaXRvcnku
a2V5XSA9IHJlcG9zaXRvcnkKLQotICAgIGRlZiBmaW5kX2NvbW1pdHNfYnlfaWQoc2VsZiwgcmVw
b3NpdG9yeV9pZCwgYnJhbmNoLCBjb21taXRfaWQsIGxpbWl0PTEwMCk6Ci0gICAgICAgIGlmIGJy
YW5jaCBpcyBOb25lOgotICAgICAgICAgICAgYnJhbmNoID0gc2VsZi5yZXBvc2l0b3JpZXNbcmVw
b3NpdG9yeV9pZF0uREVGQVVMVF9CUkFOQ0gKLQotICAgICAgICBkZWYgY2FsbGJhY2soY29tbWl0
X2lkPWNvbW1pdF9pZCk6Ci0gICAgICAgICAgICB3aXRoIHNlbGY6Ci0gICAgICAgICAgICAgICAg
aWYgaXNpbnN0YW5jZShjb21taXRfaWQsIGludCkgb3IgY29tbWl0X2lkLmlzZGlnaXQoKToKLSAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIFttb2RlbC50b19jb21taXQoKSBmb3IgbW9kZWwgaW4g
c2VsZi5jYXNzYW5kcmEuc2VsZWN0X2Zyb21fdGFibGUoCi0gICAgICAgICAgICAgICAgICAgICAg
ICBzZWxmLkNvbW1pdEJ5SUQuX190YWJsZV9uYW1lX18sIGxpbWl0PWxpbWl0LAotICAgICAgICAg
ICAgICAgICAgICAgICAgcmVwb3NpdG9yeV9pZD1yZXBvc2l0b3J5X2lkLCBicmFuY2g9YnJhbmNo
LCBjb21taXRfaWQ9c3RyKGNvbW1pdF9pZCksCi0gICAgICAgICAgICAgICAgICAgICldCi0KLSAg
ICAgICAgICAgICAgICAjIEZJWE1FOiBTQVNJIGluZGVjaWVzIGFyZSB0aGUgY2Fub2ljYWwgd2F5
IHRvIHNvbHZlIHRoaXMgcHJvYmxlbSwgYnV0IHJlcXVpcmUgQ2Fzc2FuZHJhIDMuNCB3aGljaAot
ICAgICAgICAgICAgICAgICMgaGFzbid0IGJlZW4gZGVwbG95ZWQgdG8gb3VyIGRhdGFjZW50ZXJz
IHlldC4gVGhpcyB3b3JrcyBmb3IgY29tbWl0cywgYnV0IGlzIGxlc3MgdHJhbnNwYXJlbnQuCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIFttb2RlbC50b19jb21taXQoKSBmb3IgbW9kZWwgaW4gc2Vs
Zi5jYXNzYW5kcmEuc2VsZWN0X2Zyb21fdGFibGUoCi0gICAgICAgICAgICAgICAgICAgIHNlbGYu
Q29tbWl0QnlJRC5fX3RhYmxlX25hbWVfXywgbGltaXQ9bGltaXQsCi0gICAgICAgICAgICAgICAg
ICAgIHJlcG9zaXRvcnlfaWQ9cmVwb3NpdG9yeV9pZCwgYnJhbmNoPWJyYW5jaCwgY29tbWl0X2lk
X19ndGU9Y29tbWl0X2lkLmxvd2VyKCksIGNvbW1pdF9pZF9fbHRlPShjb21taXRfaWQubG93ZXIo
KSArICdnJyksCi0gICAgICAgICAgICAgICAgKV0KLQotICAgICAgICByZXR1cm4gc2VsZi5ydW5f
ZnVuY3Rpb25fdGhyb3VnaF9yZWRpc19jYWNoZSgKLSAgICAgICAgICAgIGYncmVwb3NpdG9yeV9p
ZD17cmVwb3NpdG9yeV9pZH06YnJhbmNoPXticmFuY2h9OmNvbW1pdF9pZD17c3RyKGNvbW1pdF9p
ZCkubG93ZXIoKX0nLAotICAgICAgICAgICAgY2FsbGJhY2ssCi0gICAgICAgICkKLQotICAgIGRl
ZiBmaW5kX2NvbW1pdHNfYnlfdXVpZChzZWxmLCByZXBvc2l0b3J5X2lkLCBicmFuY2gsIHV1aWQs
IGxpbWl0PTEwMCk6Ci0gICAgICAgIGlmIGJyYW5jaCBpcyBOb25lOgotICAgICAgICAgICAgYnJh
bmNoID0gc2VsZi5yZXBvc2l0b3JpZXNbcmVwb3NpdG9yeV9pZF0uREVGQVVMVF9CUkFOQ0gKLQot
ICAgICAgICBkZWYgY2FsbGJhY2soKToKLSAgICAgICAgICAgIHdpdGggc2VsZjoKLSAgICAgICAg
ICAgICAgICByZXR1cm4gW21vZGVsLnRvX2NvbW1pdCgpIGZvciBtb2RlbCBpbiBzZWxmLmNhc3Nh
bmRyYS5zZWxlY3RfZnJvbV90YWJsZSgKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5Db21taXRC
eVV1aWREZXNjZW5kaW5nLl9fdGFibGVfbmFtZV9fLCBsaW1pdD1saW1pdCwKLSAgICAgICAgICAg
ICAgICAgICAgcmVwb3NpdG9yeV9pZD1yZXBvc2l0b3J5X2lkLCBicmFuY2g9YnJhbmNoLCB1dWlk
PXV1aWQsCi0gICAgICAgICAgICAgICAgKV0KLQotICAgICAgICByZXR1cm4gc2VsZi5ydW5fZnVu
Y3Rpb25fdGhyb3VnaF9yZWRpc19jYWNoZSgKLSAgICAgICAgICAgIGYncmVwb3NpdG9yeV9pZD17
cmVwb3NpdG9yeV9pZH06YnJhbmNoPXticmFuY2h9OnV1aWQ9e3V1aWR9JywKLSAgICAgICAgICAg
IGNhbGxiYWNrLAotICAgICAgICApCi0KLSAgICBkZWYgZmluZF9jb21taXRzX2J5X3RpbWVzdGFt
cChzZWxmLCByZXBvc2l0b3J5X2lkLCBicmFuY2gsIHRpbWVzdGFtcCwgbGltaXQ9MTAwKToKLSAg
ICAgICAgaWYgYnJhbmNoIGlzIE5vbmU6Ci0gICAgICAgICAgICBicmFuY2ggPSBzZWxmLnJlcG9z
aXRvcmllc1tyZXBvc2l0b3J5X2lkXS5ERUZBVUxUX0JSQU5DSAotCi0gICAgICAgIGlmIGlzaW5z
dGFuY2UodGltZXN0YW1wLCBkYXRldGltZSk6Ci0gICAgICAgICAgICB0aW1lc3RhbXAgPSBjYWxl
bmRhci50aW1lZ20odGltZXN0YW1wLnRpbWV0dXBsZSgpKQotICAgICAgICBlbHNlOgotICAgICAg
ICAgICAgdGltZXN0YW1wID0gaW50KHRpbWVzdGFtcCkKLQotICAgICAgICBkZWYgY2FsbGJhY2so
KToKLSAgICAgICAgICAgIHdpdGggc2VsZi5jYXNzYW5kcmE6Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIFttb2RlbC50b19jb21taXQoKSBmb3IgbW9kZWwgaW4gc2VsZi5jYXNzYW5kcmEuc2VsZWN0
X2Zyb21fdGFibGUoCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuQ29tbWl0QnlVdWlkRGVzY2Vu
ZGluZy5fX3RhYmxlX25hbWVfXywgbGltaXQ9bGltaXQsCi0gICAgICAgICAgICAgICAgICAgIHJl
cG9zaXRvcnlfaWQ9cmVwb3NpdG9yeV9pZCwgYnJhbmNoPWJyYW5jaCwKLSAgICAgICAgICAgICAg
ICAgICAgdXVpZF9fZ3RlPXNlbGYudGltZXN0YW1wX3RvX3V1aWQodGltZXN0YW1wKSwKLSAgICAg
ICAgICAgICAgICAgICAgdXVpZF9fbHQ9c2VsZi50aW1lc3RhbXBfdG9fdXVpZCh0aW1lc3RhbXAg
KyAxKSwKLSAgICAgICAgICAgICAgICApXQotCi0gICAgICAgIHJldHVybiBzZWxmLnJ1bl9mdW5j
dGlvbl90aHJvdWdoX3JlZGlzX2NhY2hlKAotICAgICAgICAgICAgZidyZXBvc2l0b3J5X2lkPXty
ZXBvc2l0b3J5X2lkfTpicmFuY2g9e2JyYW5jaH06dGltZXN0YW1wPXt0aW1lc3RhbXB9JywKLSAg
ICAgICAgICAgIGNhbGxiYWNrLAotICAgICAgICApCi0KLSAgICBkZWYgZmluZF9jb21taXRzX2lu
X3JhbmdlKHNlbGYsIHJlcG9zaXRvcnlfaWQsIGJyYW5jaD1Ob25lLCBiZWdpbj1Ob25lLCBlbmQ9
Tm9uZSwgbGltaXQ9MTAwKToKLSAgICAgICAgaWYgYnJhbmNoIGlzIE5vbmU6Ci0gICAgICAgICAg
ICBicmFuY2ggPSBzZWxmLnJlcG9zaXRvcmllc1tyZXBvc2l0b3J5X2lkXS5ERUZBVUxUX0JSQU5D
SAotCi0gICAgICAgIGJlZ2luID0gc2VsZi5jb252ZXJ0X3RvX3V1aWQoYmVnaW4pCi0gICAgICAg
IGVuZCA9IHNlbGYuY29udmVydF90b191dWlkKGVuZCwgc2VsZi50aW1lc3RhbXBfdG9fdXVpZCgp
KQotCi0gICAgICAgIHdpdGggc2VsZjoKLSAgICAgICAgICAgIHJldHVybiBbbW9kZWwudG9fY29t
bWl0KCkgZm9yIG1vZGVsIGluIHNlbGYuY2Fzc2FuZHJhLnNlbGVjdF9mcm9tX3RhYmxlKAotICAg
ICAgICAgICAgICAgIHNlbGYuQ29tbWl0QnlVdWlkRGVzY2VuZGluZy5fX3RhYmxlX25hbWVfXywg
bGltaXQ9bGltaXQsCi0gICAgICAgICAgICAgICAgcmVwb3NpdG9yeV9pZD1yZXBvc2l0b3J5X2lk
LCBicmFuY2g9YnJhbmNoLAotICAgICAgICAgICAgICAgIHV1aWRfX2d0ZT1iZWdpbiwKLSAgICAg
ICAgICAgICAgICB1dWlkX19sdGU9ZW5kLAotICAgICAgICAgICAgKV0KLQotICAgIGRlZiBfYWRq
YWNlbnRfY29tbWl0KHNlbGYsIGNvbW1pdCwgYXNjZW5kaW5nPVRydWUpOgotICAgICAgICBpZiBu
b3QgaXNpbnN0YW5jZShjb21taXQsIENvbW1pdCk6Ci0gICAgICAgICAgICByYWlzZSBUeXBlRXJy
b3IoZidFeHBlY3RlZCB0eXBlIHtDb21taXR9LCBnb3Qge3R5cGUoY29tbWl0KX0nKQotCi0gICAg
ICAgIHRhYmxlID0gc2VsZi5Db21taXRCeVV1aWRBc2NlbmRpbmcuX190YWJsZV9uYW1lX18gaWYg
YXNjZW5kaW5nIGVsc2Ugc2VsZi5Db21taXRCeVV1aWREZXNjZW5kaW5nLl9fdGFibGVfbmFtZV9f
Ci0KLSAgICAgICAgd2l0aCBzZWxmLmNhc3NhbmRyYToKLSAgICAgICAgICAgIGFkamFjZW50X2Nv
bW1pdHMgPSBbbW9kZWwudG9fY29tbWl0KCkgZm9yIG1vZGVsIGluIHNlbGYuY2Fzc2FuZHJhLnNl
bGVjdF9mcm9tX3RhYmxlKAotICAgICAgICAgICAgICAgIHRhYmxlLCBsaW1pdD0xLAotICAgICAg
ICAgICAgICAgIHJlcG9zaXRvcnlfaWQ9Y29tbWl0LnJlcG9zaXRvcnlfaWQsIGJyYW5jaD1jb21t
aXQuYnJhbmNoLAotICAgICAgICAgICAgICAgIHV1aWRfX2x0PXNlbGYudGltZXN0YW1wX3RvX3V1
aWQoKSBpZiBhc2NlbmRpbmcgZWxzZSBjb21taXQudXVpZCwKLSAgICAgICAgICAgICAgICB1dWlk
X19ndD1jb21taXQudXVpZCBpZiBhc2NlbmRpbmcgZWxzZSAwLAotICAgICAgICAgICAgKV0KLSAg
ICAgICAgICAgIGlmIGxlbihhZGphY2VudF9jb21taXRzKSA9PSAwOgotICAgICAgICAgICAgICAg
IHJldHVybiBOb25lCi0gICAgICAgICAgICByZXR1cm4gYWRqYWNlbnRfY29tbWl0c1swXQotCi0g
ICAgZGVmIG5leHRfY29tbWl0KHNlbGYsIGNvbW1pdCk6Ci0gICAgICAgIHJldHVybiBzZWxmLl9h
ZGphY2VudF9jb21taXQoY29tbWl0LCBhc2NlbmRpbmc9VHJ1ZSkKLQotICAgIGRlZiBwcmV2aW91
c19jb21taXQoc2VsZiwgY29tbWl0KToKLSAgICAgICAgcmV0dXJuIHNlbGYuX2FkamFjZW50X2Nv
bW1pdChjb21taXQsIGFzY2VuZGluZz1GYWxzZSkKLQotICAgIGRlZiBzaWJsaW5nX2NvbW1pdHMo
c2VsZiwgY29tbWl0LCByZXBvc2l0b3J5X2lkcyk6Ci0gICAgICAgIGlmIG5vdCBpc2luc3RhbmNl
KGNvbW1pdCwgQ29tbWl0KToKLSAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcihmJ0V4cGVjdGVk
IHR5cGUge0NvbW1pdH0sIGdvdCB7dHlwZShjb21taXQpfScpCi0KLSAgICAgICAgYmVnaW5fdGlt
ZXN0YW1wX3V1aWQgPSBzZWxmLnRpbWVzdGFtcF90b191dWlkKGNvbW1pdC50aW1lc3RhbXApCi0g
ICAgICAgIGVuZF90aW1lc3RhbXBfdXVpZCA9IHNlbGYudGltZXN0YW1wX3RvX3V1aWQoKQotCi0g
ICAgICAgIHdpdGggc2VsZi5jYXNzYW5kcmE6Ci0gICAgICAgICAgICBuZXh0X2NvbW1pdCA9IHNl
bGYubmV4dF9jb21taXQoY29tbWl0KQotICAgICAgICAgICAgaWYgbmV4dF9jb21taXQ6Ci0gICAg
ICAgICAgICAgICAgZW5kX3RpbWVzdGFtcF91dWlkID0gc2VsZi50aW1lc3RhbXBfdG9fdXVpZChu
ZXh0X2NvbW1pdC50aW1lc3RhbXApCi0KLSAgICAgICAgICAgIHNpYmxpbmdzID0ge30KLSAgICAg
ICAgICAgIGZvciBpZCBpbiByZXBvc2l0b3J5X2lkczoKLSAgICAgICAgICAgICAgICBzaWJsaW5n
c1tpZF0gPSBbXQotICAgICAgICAgICAgICAgIGlmIGlkIG5vdCBpbiBzZWxmLnJlcG9zaXRvcmll
czoKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICAgICAgICAgIGlmIGNv
bW1pdC5icmFuY2ggPT0gc2VsZi5yZXBvc2l0b3JpZXNbY29tbWl0LnJlcG9zaXRvcnlfaWRdLkRF
RkFVTFRfQlJBTkNIIG9yIG5vdCBzZWxmLmJyYW5jaGVzKGlkLCBjb21taXQuYnJhbmNoKToKLSAg
ICAgICAgICAgICAgICAgICAgYnJhbmNoID0gc2VsZi5yZXBvc2l0b3JpZXNbaWRdLkRFRkFVTFRf
QlJBTkNICi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgYnJhbmNo
ID0gY29tbWl0LmJyYW5jaAotCi0gICAgICAgICAgICAgICAgc2libGluZ3NbaWRdID0gW21vZGVs
LnRvX2NvbW1pdCgpIGZvciBtb2RlbCBpbiBzZWxmLmNhc3NhbmRyYS5zZWxlY3RfZnJvbV90YWJs
ZSgKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5Db21taXRCeVV1aWREZXNjZW5kaW5nLl9fdGFi
bGVfbmFtZV9fLAotICAgICAgICAgICAgICAgICAgICByZXBvc2l0b3J5X2lkPWlkLCBicmFuY2g9
YnJhbmNoLAotICAgICAgICAgICAgICAgICAgICB1dWlkX19ndD1iZWdpbl90aW1lc3RhbXBfdXVp
ZCwKLSAgICAgICAgICAgICAgICAgICAgdXVpZF9fbHQ9ZW5kX3RpbWVzdGFtcF91dWlkLAotICAg
ICAgICAgICAgICAgICldCi0gICAgICAgICAgICAgICAgcHJldmlvdXMgPSBbbW9kZWwudG9fY29t
bWl0KCkgZm9yIG1vZGVsIGluIHNlbGYuY2Fzc2FuZHJhLnNlbGVjdF9mcm9tX3RhYmxlKAotICAg
ICAgICAgICAgICAgICAgICBzZWxmLkNvbW1pdEJ5VXVpZERlc2NlbmRpbmcuX190YWJsZV9uYW1l
X18sIGxpbWl0PTEsCi0gICAgICAgICAgICAgICAgICAgIHJlcG9zaXRvcnlfaWQ9aWQsIGJyYW5j
aD1icmFuY2gsCi0gICAgICAgICAgICAgICAgICAgIHV1aWRfX2x0ZT1iZWdpbl90aW1lc3RhbXBf
dXVpZCwKLSAgICAgICAgICAgICAgICApXQotICAgICAgICAgICAgICAgIGlmIHByZXZpb3VzOgot
ICAgICAgICAgICAgICAgICAgICBzaWJsaW5nc1tpZF0uYXBwZW5kKHByZXZpb3VzWzBdKQotICAg
ICAgICAgICAgcmV0dXJuIHNpYmxpbmdzCi0KLSAgICBkZWYgYnJhbmNoZXMoc2VsZiwgcmVwb3Np
dG9yeV9pZCwgYnJhbmNoPU5vbmUsIGxpbWl0PTEwMCk6Ci0gICAgICAgIHdpdGggc2VsZjoKLSAg
ICAgICAgICAgIGlmIGJyYW5jaDoKLSAgICAgICAgICAgICAgICAjIEZJWE1FOiBTQVNJIGluZGVj
aWVzIGFyZSB0aGUgY2Fub2ljYWwgd2F5IHRvIHNvbHZlIHRoaXMgcHJvYmxlbSwgYnV0IHJlcXVp
cmUgQ2Fzc2FuZHJhIDMuNCB3aGljaAotICAgICAgICAgICAgICAgICMgaGFzbid0IGJlZW4gZGVw
bG95ZWQgdG8gb3VyIGRhdGFjZW50ZXJzIHlldC4gVGhpcyB3b3JrcyBmb3IgYnJhbmNoZXMsIGJ1
dCBpcyBsZXNzIHRyYW5zcGFyZW50LgotICAgICAgICAgICAgICAgIHJldHVybiBbbW9kZWwuYnJh
bmNoIGZvciBtb2RlbCBpbiBzZWxmLmNhc3NhbmRyYS5zZWxlY3RfZnJvbV90YWJsZSgKLSAgICAg
ICAgICAgICAgICAgICAgc2VsZi5CcmFuY2hlcy5fX3RhYmxlX25hbWVfXywgbGltaXQ9bGltaXQs
Ci0gICAgICAgICAgICAgICAgICAgIHJlcG9zaXRvcnlfaWQ9cmVwb3NpdG9yeV9pZCwgYnJhbmNo
X19ndGU9YnJhbmNoLCBicmFuY2hfX2x0ZT0oYnJhbmNoICsgJ34nKSwKLSAgICAgICAgICAgICAg
ICApXQotCi0gICAgICAgICAgICByZXR1cm4gW21vZGVsLmJyYW5jaCBmb3IgbW9kZWwgaW4gc2Vs
Zi5jYXNzYW5kcmEuc2VsZWN0X2Zyb21fdGFibGUoCi0gICAgICAgICAgICAgICAgc2VsZi5CcmFu
Y2hlcy5fX3RhYmxlX25hbWVfXywgbGltaXQ9bGltaXQsIHJlcG9zaXRvcnlfaWQ9cmVwb3NpdG9y
eV9pZCwKLSAgICAgICAgICAgICldCi0KLSAgICBkZWYgcmVnaXN0ZXJfY29tbWl0KHNlbGYsIGNv
bW1pdCk6Ci0gICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGNvbW1pdCwgQ29tbWl0KToKLSAgICAg
ICAgICAgIHJhaXNlIFR5cGVFcnJvcihmJ0V4cGVjdGVkIHR5cGUge0NvbW1pdH0sIGdvdCB7dHlw
ZShjb21taXQpfScpCi0KLSAgICAgICAgd2l0aCBzZWxmOgotICAgICAgICAgICAgaWYgY29tbWl0
LnJlcG9zaXRvcnlfaWQgbm90IGluIHNlbGYucmVwb3NpdG9yaWVzOgotICAgICAgICAgICAgICAg
IHNlbGYucmVwb3NpdG9yaWVzW2NvbW1pdC5yZXBvc2l0b3J5X2lkXSA9IFJlcG9zaXRvcnkoa2V5
PWNvbW1pdC5yZXBvc2l0b3J5X2lkKQotCi0gICAgICAgICAgICBmb3IgdGFibGUgaW4gW3NlbGYu
Q29tbWl0QnlJRCwgc2VsZi5Db21taXRCeVV1aWRBc2NlbmRpbmcsIHNlbGYuQ29tbWl0QnlVdWlk
RGVzY2VuZGluZ106Ci0gICAgICAgICAgICAgICAgc2VsZi5jYXNzYW5kcmEuaW5zZXJ0X3JvdygK
LSAgICAgICAgICAgICAgICAgICAgdGFibGUuX190YWJsZV9uYW1lX18sCi0gICAgICAgICAgICAg
ICAgICAgIHJlcG9zaXRvcnlfaWQ9Y29tbWl0LnJlcG9zaXRvcnlfaWQsIGJyYW5jaD1jb21taXQu
YnJhbmNoLAotICAgICAgICAgICAgICAgICAgICBjb21taXRfaWQ9c3RyKGNvbW1pdC5pZCkubG93
ZXIoKSwgdXVpZD1jb21taXQudXVpZCwKLSAgICAgICAgICAgICAgICAgICAgY29tbWl0dGVyPWNv
bW1pdC5jb21taXR0ZXIsIG1lc3NhZ2U9Y29tbWl0Lm1lc3NhZ2UsCi0gICAgICAgICAgICAgICAg
KQotICAgICAgICAgICAgc2VsZi5jYXNzYW5kcmEuaW5zZXJ0X3JvdygKLSAgICAgICAgICAgICAg
ICBzZWxmLkJyYW5jaGVzLl9fdGFibGVfbmFtZV9fLAotICAgICAgICAgICAgICAgIHJlcG9zaXRv
cnlfaWQ9Y29tbWl0LnJlcG9zaXRvcnlfaWQsIGJyYW5jaD1jb21taXQuYnJhbmNoLAotICAgICAg
ICAgICAgKQotICAgICAgICAgICAgcmV0dXJuIGNvbW1pdAotCi0gICAgZGVmIHJlZ2lzdGVyX2Nv
bW1pdF93aXRoX3JlcG9fYW5kX2lkKHNlbGYsIHJlcG9zaXRvcnlfaWQsIGJyYW5jaCwgY29tbWl0
X2lkKToKLSAgICAgICAgaWYgYnJhbmNoIGlzIE5vbmU6Ci0gICAgICAgICAgICBicmFuY2ggPSBz
ZWxmLnJlcG9zaXRvcmllc1tyZXBvc2l0b3J5X2lkXS5ERUZBVUxUX0JSQU5DSAotICAgICAgICBp
ZiByZXBvc2l0b3J5X2lkIG5vdCBpbiBzZWxmLnJlcG9zaXRvcmllczoKLSAgICAgICAgICAgIHJh
aXNlIFJ1bnRpbWVFcnJvcigne30gaXMgbm90IGEgcmVjb2duaXplZCByZXBvc2l0b3J5JykKLQot
ICAgICAgICB3aXRoIHNlbGY6Ci0gICAgICAgICAgICBjb21taXRzID0gc2VsZi5maW5kX2NvbW1p
dHNfYnlfaWQocmVwb3NpdG9yeV9pZD1yZXBvc2l0b3J5X2lkLCBicmFuY2g9YnJhbmNoLCBjb21t
aXRfaWQ9Y29tbWl0X2lkKQotICAgICAgICAgICAgaWYgbGVuKGNvbW1pdHMpID4gMToKLSAgICAg
ICAgICAgICAgICByYWlzZSBTQ01FeGNlcHRpb24oZidNdWx0aXBsZSBjb21taXRzIHdpdGggdGhl
IGlkIHtjb21taXRfaWR9IGV4aXN0IGluIHtyZXBvc2l0b3J5X2lkfSBvbiB7YnJhbmNofScpCi0g
ICAgICAgICAgICBpZiBjb21taXRzOgotICAgICAgICAgICAgICAgIHJldHVybiBjb21taXRzWzBd
Ci0gICAgICAgICAgICBjb21taXQgPSBzZWxmLnJlcG9zaXRvcmllc1tyZXBvc2l0b3J5X2lkXS5j
b21taXRfZm9yX2lkKGNvbW1pdF9pZCwgYnJhbmNoKQotICAgICAgICAgICAgcmV0dXJuIHNlbGYu
cmVnaXN0ZXJfY29tbWl0KGNvbW1pdCkKLQotICAgIGRlZiB1cmwoc2VsZiwgY29tbWl0KToKLSAg
ICAgICAgaWYgbm90IGlzaW5zdGFuY2UoY29tbWl0LCBDb21taXQpOgotICAgICAgICAgICAgcmFp
c2UgVHlwZUVycm9yKGYnRXhwZWN0ZWQgdHlwZSB7Q29tbWl0fSwgZ290IHt0eXBlKGNvbW1pdCl9
JykKLQotICAgICAgICByZXBvID0gc2VsZi5yZXBvc2l0b3JpZXMuZ2V0KGNvbW1pdC5yZXBvc2l0
b3J5X2lkKQotICAgICAgICBpZiByZXBvOgotICAgICAgICAgICAgcmV0dXJuIHJlcG8udXJsX2Zv
cl9jb21taXQoY29tbWl0LmlkKQotICAgICAgICByZXR1cm4gTm9uZQpJbmRleDogVG9vbHMvcmVz
dWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvY29tbWl0X2NvbnRleHRfdW5pdHRlc3QucHkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvY29tbWl0X2Nv
bnRleHRfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI2NTUzMSkKKysrIFRvb2xzL3Jlc3VsdHNkYnB5
L3Jlc3VsdHNkYnB5L21vZGVsL2NvbW1pdF9jb250ZXh0X3VuaXR0ZXN0LnB5CShub25leGlzdGVu
dCkKQEAgLTEsMjgyICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0
OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKLSMgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotIyBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0jIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0jIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksCi0jIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0KLWZyb20gcmVkaXMgaW1wb3J0IFN0cmljdFJlZGlzCi1mcm9tIGZha2VyZWRpcyBpbXBvcnQg
RmFrZVN0cmljdFJlZGlzCi1mcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLmNhc3NhbmRyYV9jb250ZXh0
IGltcG9ydCBDYXNzYW5kcmFDb250ZXh0Ci1mcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLmNvbW1pdF9j
b250ZXh0IGltcG9ydCBDb21taXRDb250ZXh0Ci1mcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLm1vY2tf
Y2Fzc2FuZHJhX2NvbnRleHQgaW1wb3J0IE1vY2tDYXNzYW5kcmFDb250ZXh0Ci1mcm9tIHJlc3Vs
dHNkYnB5Lm1vZGVsLm1vY2tfcmVwb3NpdG9yeSBpbXBvcnQgTW9ja1N0YXNoUmVwb3NpdG9yeSwg
TW9ja1NWTlJlcG9zaXRvcnkKLWZyb20gcmVzdWx0c2RicHkubW9kZWwud2FpdF9mb3JfZG9ja2Vy
X3Rlc3RfY2FzZSBpbXBvcnQgV2FpdEZvckRvY2tlclRlc3RDYXNlCi0KLQotY2xhc3MgQ29tbWl0
Q29udGV4dFRlc3QoV2FpdEZvckRvY2tlclRlc3RDYXNlKToKLSAgICBLRVlTUEFDRSA9ICdjb21t
aXRfbWFwcGluZ190ZXN0X2tleXNwYWNlJwotCi0gICAgZGVmIGluaXRfZGF0YWJhc2Uoc2VsZiwg
cmVkaXM9U3RyaWN0UmVkaXMsIGNhc3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0KToKLSAgICAgICAg
cmVkaXNfaW5zdGFuY2UgPSByZWRpcygpCi0KLSAgICAgICAgc2VsZi5zdGFzaF9yZXBvc2l0b3J5
ID0gTW9ja1N0YXNoUmVwb3NpdG9yeS5zYWZhcmkocmVkaXNfaW5zdGFuY2UpCi0gICAgICAgIHNl
bGYuc3ZuX3JlcG9zaXRvcnkgPSBNb2NrU1ZOUmVwb3NpdG9yeS53ZWJraXQocmVkaXNfaW5zdGFu
Y2UpCi0KLSAgICAgICAgY2Fzc2FuZHJhLmRyb3Bfa2V5c3BhY2Uoa2V5c3BhY2U9c2VsZi5LRVlT
UEFDRSkKLSAgICAgICAgc2VsZi5kYXRhYmFzZSA9IENvbW1pdENvbnRleHQoCi0gICAgICAgICAg
ICByZWRpcz1yZWRpc19pbnN0YW5jZSwKLSAgICAgICAgICAgIGNhc3NhbmRyYT1jYXNzYW5kcmEo
a2V5c3BhY2U9c2VsZi5LRVlTUEFDRSwgY3JlYXRlX2tleXNwYWNlPVRydWUpLAotICAgICAgICAp
Ci0gICAgICAgIHNlbGYuZGF0YWJhc2UucmVnaXN0ZXJfcmVwb3NpdG9yeShzZWxmLnN0YXNoX3Jl
cG9zaXRvcnkpCi0gICAgICAgIHNlbGYuZGF0YWJhc2UucmVnaXN0ZXJfcmVwb3NpdG9yeShzZWxm
LnN2bl9yZXBvc2l0b3J5KQotCi0gICAgZGVmIGFkZF9hbGxfY29tbWl0c190b19kYXRhYmFzZShz
ZWxmKToKLSAgICAgICAgZm9yIG1vY2tfcmVwb3NpdG9yeSBpbiBbc2VsZi5zdGFzaF9yZXBvc2l0
b3J5LCBzZWxmLnN2bl9yZXBvc2l0b3J5XToKLSAgICAgICAgICAgIGZvciBjb21taXRfbGlzdCBp
biBtb2NrX3JlcG9zaXRvcnkuY29tbWl0cy52YWx1ZXMoKToKLSAgICAgICAgICAgICAgICBmb3Ig
Y29tbWl0IGluIGNvbW1pdF9saXN0OgotICAgICAgICAgICAgICAgICAgICBzZWxmLmRhdGFiYXNl
LnJlZ2lzdGVyX2NvbW1pdChjb21taXQpCi0KLSAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1v
Y2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRy
YT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKLSAgICBkZWYgdGVzdF92ZXJpZnlfdGFibGUoc2VsZiwg
cmVkaXM9U3RyaWN0UmVkaXMsIGNhc3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0KToKLSAgICAgICAg
c2VsZi5pbml0X2RhdGFiYXNlKHJlZGlzPXJlZGlzLCBjYXNzYW5kcmE9Y2Fzc2FuZHJhKQotICAg
ICAgICBDb21taXRDb250ZXh0KHJlZGlzPXJlZGlzKCksIGNhc3NhbmRyYT1jYXNzYW5kcmEoa2V5
c3BhY2U9c2VsZi5LRVlTUEFDRSkpCi0KLSAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tf
aWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1N
b2NrQ2Fzc2FuZHJhQ29udGV4dCkKLSAgICBkZWYgdGVzdF9jb21taXRfYnlfaWQoc2VsZiwgcmVk
aXM9U3RyaWN0UmVkaXMsIGNhc3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0KToKLSAgICAgICAgc2Vs
Zi5pbml0X2RhdGFiYXNlKHJlZGlzPXJlZGlzLCBjYXNzYW5kcmE9Y2Fzc2FuZHJhKQotICAgICAg
ICBzZWxmLmFkZF9hbGxfY29tbWl0c190b19kYXRhYmFzZSgpCi0KLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgKLSAgICAgICAgICAgIFtzZWxmLnN0YXNoX3JlcG9zaXRvcnkuY29tbWl0X2Zvcl9p
ZChpZD0nYmI2YmRhNWY0NCcsIGJyYW5jaD0nbWFzdGVyJyldLAotICAgICAgICAgICAgc2VsZi5k
YXRhYmFzZS5maW5kX2NvbW1pdHNfYnlfaWQocmVwb3NpdG9yeV9pZD0nc2FmYXJpJywgYnJhbmNo
PSdtYXN0ZXInLCBjb21taXRfaWQ9J2JiNmJkYTVmNDQnKSwKLSAgICAgICAgKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKDIsIGxlbihzZWxmLmRhdGFiYXNlLmZpbmRfY29tbWl0c19ieV9pZChy
ZXBvc2l0b3J5X2lkPSdzYWZhcmknLCBicmFuY2g9J21hc3RlcicsIGNvbW1pdF9pZD0nMzM2NjEw
YScpKSkKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgW3NlbGYuc3Zu
X3JlcG9zaXRvcnkuY29tbWl0X2Zvcl9pZChpZD0yMzY1NDQsIGJyYW5jaD0ndHJ1bmsnKV0sCi0g
ICAgICAgICAgICBzZWxmLmRhdGFiYXNlLmZpbmRfY29tbWl0c19ieV9pZChyZXBvc2l0b3J5X2lk
PSd3ZWJraXQnLCBicmFuY2g9J3RydW5rJywgY29tbWl0X2lkPTIzNjU0NCksCi0gICAgICAgICkK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBsZW4oc2VsZi5kYXRhYmFzZS5maW5kX2NvbW1p
dHNfYnlfaWQocmVwb3NpdG9yeV9pZD0nd2Via2l0JywgYnJhbmNoPSd0cnVuaycsIGNvbW1pdF9p
ZD0nMjM2NTQnKSkpCi0KLSAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9j
a2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2Fu
ZHJhQ29udGV4dCkKLSAgICBkZWYgdGVzdF9jb21taXRfYnlfdXVpZChzZWxmLCByZWRpcz1TdHJp
Y3RSZWRpcywgY2Fzc2FuZHJhPUNhc3NhbmRyYUNvbnRleHQpOgotICAgICAgICBzZWxmLmluaXRf
ZGF0YWJhc2UocmVkaXM9cmVkaXMsIGNhc3NhbmRyYT1jYXNzYW5kcmEpCi0gICAgICAgIHNlbGYu
YWRkX2FsbF9jb21taXRzX3RvX2RhdGFiYXNlKCkKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KAotICAgICAgICAgICAgW3NlbGYuc3Rhc2hfcmVwb3NpdG9yeS5jb21taXRfZm9yX2lkKGlkPSc3
YmU0MDg0MjU4JywgYnJhbmNoPSdtYXN0ZXInKV0sCi0gICAgICAgICAgICBzZWxmLmRhdGFiYXNl
LmZpbmRfY29tbWl0c19ieV91dWlkKHJlcG9zaXRvcnlfaWQ9J3NhZmFyaScsIGJyYW5jaD0nbWFz
dGVyJywgdXVpZD0xNTM3NTUwNjg1MDEpLAotICAgICAgICApCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoCi0gICAgICAgICAgICBbc2VsZi5zdm5fcmVwb3NpdG9yeS5jb21taXRfZm9yX2lkKGlk
PTIzNjU0MCwgYnJhbmNoPSd0cnVuaycpXSwKLSAgICAgICAgICAgIHNlbGYuZGF0YWJhc2UuZmlu
ZF9jb21taXRzX2J5X3V1aWQocmVwb3NpdG9yeV9pZD0nd2Via2l0JywgYnJhbmNoPSd0cnVuaycs
IHV1aWQ9MTUzODAyOTQ3OTAwKSwKLSAgICAgICAgKQotCi0gICAgQFdhaXRGb3JEb2NrZXJUZXN0
Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19j
YXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCi0gICAgZGVmIHRlc3RfY29tbWl0X2J5X3Rp
bWVzdGFtcChzZWxmLCByZWRpcz1TdHJpY3RSZWRpcywgY2Fzc2FuZHJhPUNhc3NhbmRyYUNvbnRl
eHQpOgotICAgICAgICBzZWxmLmluaXRfZGF0YWJhc2UocmVkaXM9cmVkaXMsIGNhc3NhbmRyYT1j
YXNzYW5kcmEpCi0gICAgICAgIHNlbGYuYWRkX2FsbF9jb21taXRzX3RvX2RhdGFiYXNlKCkKLQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgW3NlbGYuc3Rhc2hfcmVwb3Np
dG9yeS5jb21taXRfZm9yX2lkKGlkPSczMzY2MTBhODRmJywgYnJhbmNoPSdtYXN0ZXInKV0sCi0g
ICAgICAgICAgICBzZWxmLmRhdGFiYXNlLmZpbmRfY29tbWl0c19ieV90aW1lc3RhbXAocmVwb3Np
dG9yeV9pZD0nc2FmYXJpJywgYnJhbmNoPSdtYXN0ZXInLCB0aW1lc3RhbXA9MTUzNzgwOTgxOCks
Ci0gICAgICAgICkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIFtzZWxm
LnN2bl9yZXBvc2l0b3J5LmNvbW1pdF9mb3JfaWQoaWQ9MjM2NTQwLCBicmFuY2g9J3RydW5rJyld
LAotICAgICAgICAgICAgc2VsZi5kYXRhYmFzZS5maW5kX2NvbW1pdHNfYnlfdGltZXN0YW1wKHJl
cG9zaXRvcnlfaWQ9J3dlYmtpdCcsIGJyYW5jaD0ndHJ1bmsnLCB0aW1lc3RhbXA9MTUzODAyOTQ3
OSksCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyLCBsZW4oc2VsZi5kYXRh
YmFzZS5maW5kX2NvbW1pdHNfYnlfdGltZXN0YW1wKHJlcG9zaXRvcnlfaWQ9J3NhZmFyaScsIGJy
YW5jaD0nbWFzdGVyJywgdGltZXN0YW1wPTE1Mzc1NTA2ODUpKSkKLQotICAgIEBXYWl0Rm9yRG9j
a2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMs
IG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQotICAgIGRlZiB0ZXN0X2FsbF9j
b21taXRzX3N0YXNoKHNlbGYsIHJlZGlzPVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fzc2FuZHJh
Q29udGV4dCk6Ci0gICAgICAgIHNlbGYuaW5pdF9kYXRhYmFzZShyZWRpcz1yZWRpcywgY2Fzc2Fu
ZHJhPWNhc3NhbmRyYSkKLSAgICAgICAgc2VsZi5hZGRfYWxsX2NvbW1pdHNfdG9fZGF0YWJhc2Uo
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDUsIGxlbihzZWxmLmRhdGFiYXNlLmZpbmRfY29t
bWl0c19pbl9yYW5nZShyZXBvc2l0b3J5X2lkPSdzYWZhcmknLCBicmFuY2g9J21hc3RlcicpKSkK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIFtzZWxmLnN0YXNoX3JlcG9z
aXRvcnkuY29tbWl0X2Zvcl9pZChpZD0nYmI2YmRhNWY0NCcsIGJyYW5jaD0nbWFzdGVyJyksIHNl
bGYuc3Rhc2hfcmVwb3NpdG9yeS5jb21taXRfZm9yX2lkKGlkPSczMzY2MTBhODRmJywgYnJhbmNo
PSdtYXN0ZXInKV0sCi0gICAgICAgICAgICBzZWxmLmRhdGFiYXNlLmZpbmRfY29tbWl0c19pbl9y
YW5nZShyZXBvc2l0b3J5X2lkPSdzYWZhcmknLCBicmFuY2g9J21hc3RlcicsIGxpbWl0PTIpLAot
ICAgICAgICApCi0KLSAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2Vy
KG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJh
Q29udGV4dCkKLSAgICBkZWYgdGVzdF9hbGxfY29tbWl0c19zdm4oc2VsZiwgcmVkaXM9U3RyaWN0
UmVkaXMsIGNhc3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0KToKLSAgICAgICAgc2VsZi5pbml0X2Rh
dGFiYXNlKHJlZGlzPXJlZGlzLCBjYXNzYW5kcmE9Y2Fzc2FuZHJhKQotICAgICAgICBzZWxmLmFk
ZF9hbGxfY29tbWl0c190b19kYXRhYmFzZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoNSwg
bGVuKHNlbGYuZGF0YWJhc2UuZmluZF9jb21taXRzX2luX3JhbmdlKHJlcG9zaXRvcnlfaWQ9J3dl
YmtpdCcsIGJyYW5jaD0ndHJ1bmsnKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAg
ICAgICAgICBbc2VsZi5zdm5fcmVwb3NpdG9yeS5jb21taXRfZm9yX2lkKGlkPTIzNjU0NCwgYnJh
bmNoPSd0cnVuaycpLCBzZWxmLnN2bl9yZXBvc2l0b3J5LmNvbW1pdF9mb3JfaWQoaWQ9MjM2NTQz
LCBicmFuY2g9J3RydW5rJyldLAotICAgICAgICAgICAgc2VsZi5kYXRhYmFzZS5maW5kX2NvbW1p
dHNfaW5fcmFuZ2UocmVwb3NpdG9yeV9pZD0nd2Via2l0JywgYnJhbmNoPSd0cnVuaycsIGxpbWl0
PTIpLAotICAgICAgICApCi0KLSAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9f
ZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fz
c2FuZHJhQ29udGV4dCkKLSAgICBkZWYgdGVzdF9zdGFzaF9jb21taXRzX2luX3JhbmdlKHNlbGYs
IHJlZGlzPVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCk6Ci0gICAgICAg
IHNlbGYuaW5pdF9kYXRhYmFzZShyZWRpcz1yZWRpcywgY2Fzc2FuZHJhPWNhc3NhbmRyYSkKLSAg
ICAgICAgc2VsZi5hZGRfYWxsX2NvbW1pdHNfdG9fZGF0YWJhc2UoKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKAotICAgICAgICAgICAgW3NlbGYuc3Rhc2hfcmVwb3NpdG9yeS5jb21taXRfZm9y
X2lkKGlkPSdiYjZiZGE1ZjQ0JywgYnJhbmNoPSdtYXN0ZXInKSwgc2VsZi5zdGFzaF9yZXBvc2l0
b3J5LmNvbW1pdF9mb3JfaWQoaWQ9JzMzNjYxMGE4NGYnLCBicmFuY2g9J21hc3RlcicpXSwKLSAg
ICAgICAgICAgIHNlbGYuZGF0YWJhc2UuZmluZF9jb21taXRzX2luX3JhbmdlKHJlcG9zaXRvcnlf
aWQ9J3NhZmFyaScsIGJyYW5jaD0nbWFzdGVyJywgYmVnaW49MTUzNzgwOTgxOCwgZW5kPTE1Mzc4
MTAyODEpLAotICAgICAgICApCi0KLSAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZf
bm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2Nr
Q2Fzc2FuZHJhQ29udGV4dCkKLSAgICBkZWYgdGVzdF9zdm5fY29tbWl0c19pbl9yYW5nZShzZWxm
LCByZWRpcz1TdHJpY3RSZWRpcywgY2Fzc2FuZHJhPUNhc3NhbmRyYUNvbnRleHQpOgotICAgICAg
ICBzZWxmLmluaXRfZGF0YWJhc2UocmVkaXM9cmVkaXMsIGNhc3NhbmRyYT1jYXNzYW5kcmEpCi0g
ICAgICAgIHNlbGYuYWRkX2FsbF9jb21taXRzX3RvX2RhdGFiYXNlKCkKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgKLSAgICAgICAgICAgIFtzZWxmLnN2bl9yZXBvc2l0b3J5LmNvbW1pdF9mb3Jf
aWQoaWQ9MjM2NTQ0LCBicmFuY2g9J3RydW5rJyksIHNlbGYuc3ZuX3JlcG9zaXRvcnkuY29tbWl0
X2Zvcl9pZChpZD0yMzY1NDMsIGJyYW5jaD0ndHJ1bmsnKV0sCi0gICAgICAgICAgICBzZWxmLmRh
dGFiYXNlLmZpbmRfY29tbWl0c19pbl9yYW5nZShyZXBvc2l0b3J5X2lkPSd3ZWJraXQnLCBicmFu
Y2g9J3RydW5rJywgYmVnaW49MTUzODA1MDQ1OCwgZW5kPTE1MzgwNTI0MDgpLAotICAgICAgICAp
Ci0KLSAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVk
aXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkK
LSAgICBkZWYgdGVzdF9zdGFzaF9jb21taXRzX2JldHdlZW4oc2VsZiwgcmVkaXM9U3RyaWN0UmVk
aXMsIGNhc3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0KToKLSAgICAgICAgc2VsZi5pbml0X2RhdGFi
YXNlKHJlZGlzPXJlZGlzLCBjYXNzYW5kcmE9Y2Fzc2FuZHJhKQotICAgICAgICBzZWxmLmFkZF9h
bGxfY29tbWl0c190b19kYXRhYmFzZSgpCi0KLSAgICAgICAgY29tbWl0cyA9IFsKLSAgICAgICAg
ICAgIHNlbGYuc3Rhc2hfcmVwb3NpdG9yeS5jb21taXRfZm9yX2lkKGlkPSdiYjZiZGE1ZicsIGJy
YW5jaD0nbWFzdGVyJyksCi0gICAgICAgICAgICBzZWxmLnN0YXNoX3JlcG9zaXRvcnkuY29tbWl0
X2Zvcl9pZChpZD0nMzM2NjEwYTgnLCBicmFuY2g9J21hc3RlcicpLAotICAgICAgICAgICAgc2Vs
Zi5zdGFzaF9yZXBvc2l0b3J5LmNvbW1pdF9mb3JfaWQoaWQ9JzMzNjYxMGE0JywgYnJhbmNoPSdt
YXN0ZXInKSwKLSAgICAgICAgXQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1pdHMsIHNl
bGYuZGF0YWJhc2UuZmluZF9jb21taXRzX2luX3JhbmdlKHJlcG9zaXRvcnlfaWQ9J3NhZmFyaScs
IGJyYW5jaD0nbWFzdGVyJywgIGJlZ2luPWNvbW1pdHNbLTFdLCBlbmQ9Y29tbWl0c1swXSkpCi0K
LSAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9
RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKLSAg
ICBkZWYgdGVzdF9zdm5fY29tbWl0c19iZXR3ZWVuKHNlbGYsIHJlZGlzPVN0cmljdFJlZGlzLCBj
YXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCk6Ci0gICAgICAgIHNlbGYuaW5pdF9kYXRhYmFzZShy
ZWRpcz1yZWRpcywgY2Fzc2FuZHJhPWNhc3NhbmRyYSkKLSAgICAgICAgc2VsZi5hZGRfYWxsX2Nv
bW1pdHNfdG9fZGF0YWJhc2UoKQotCi0gICAgICAgIGNvbW1pdHMgPSBbCi0gICAgICAgICAgICBz
ZWxmLnN2bl9yZXBvc2l0b3J5LmNvbW1pdF9mb3JfaWQoaWQ9MjM2NTQ0LCBicmFuY2g9J3RydW5r
JyksCi0gICAgICAgICAgICBzZWxmLnN2bl9yZXBvc2l0b3J5LmNvbW1pdF9mb3JfaWQoaWQ9MjM2
NTQzLCBicmFuY2g9J3RydW5rJyksCi0gICAgICAgICAgICBzZWxmLnN2bl9yZXBvc2l0b3J5LmNv
bW1pdF9mb3JfaWQoaWQ9MjM2NTQyLCBicmFuY2g9J3RydW5rJyksCi0gICAgICAgIF0KLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChjb21taXRzLCBzZWxmLmRhdGFiYXNlLmZpbmRfY29tbWl0c19p
bl9yYW5nZShyZXBvc2l0b3J5X2lkPSd3ZWJraXQnLCBicmFuY2g9J3RydW5rJywgYmVnaW49Y29t
bWl0c1stMV0sIGVuZD1jb21taXRzWzBdKSkKLQotICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2Uu
bW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2Fu
ZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQotICAgIGRlZiB0ZXN0X2NvbW1pdF9mcm9tX3N0YXNo
X3JlcG8oc2VsZiwgcmVkaXM9U3RyaWN0UmVkaXMsIGNhc3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0
KToKLSAgICAgICAgc2VsZi5pbml0X2RhdGFiYXNlKHJlZGlzPXJlZGlzLCBjYXNzYW5kcmE9Y2Fz
c2FuZHJhKQotICAgICAgICBzZWxmLmRhdGFiYXNlLnJlZ2lzdGVyX2NvbW1pdF93aXRoX3JlcG9f
YW5kX2lkKCdzYWZhcmknLCAnbWFzdGVyJywgJ2JiNmJkYTVmNDQnKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKAotICAgICAgICAgICAgW3NlbGYuc3Rhc2hfcmVwb3NpdG9yeS5jb21taXRfZm9y
X2lkKGlkPSdiYjZiZGE1ZjQ0JywgYnJhbmNoPSdtYXN0ZXInKV0sCi0gICAgICAgICAgICBzZWxm
LmRhdGFiYXNlLmZpbmRfY29tbWl0c19ieV9pZChyZXBvc2l0b3J5X2lkPSdzYWZhcmknLCBicmFu
Y2g9J21hc3RlcicsIGNvbW1pdF9pZD0nYmI2YmRhNWY0NCcpLAotICAgICAgICApCi0KLSAgICBA
V2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0
cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKLSAgICBkZWYg
dGVzdF9jb21taXRfZnJvbV9zdm5fcmVwbyhzZWxmLCByZWRpcz1TdHJpY3RSZWRpcywgY2Fzc2Fu
ZHJhPUNhc3NhbmRyYUNvbnRleHQpOgotICAgICAgICBzZWxmLmluaXRfZGF0YWJhc2UocmVkaXM9
cmVkaXMsIGNhc3NhbmRyYT1jYXNzYW5kcmEpCi0gICAgICAgIHNlbGYuZGF0YWJhc2UucmVnaXN0
ZXJfY29tbWl0X3dpdGhfcmVwb19hbmRfaWQoJ3dlYmtpdCcsICd0cnVuaycsIDIzNjU0NCkKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIFtzZWxmLnN2bl9yZXBvc2l0b3J5
LmNvbW1pdF9mb3JfaWQoaWQ9MjM2NTQ0LCBicmFuY2g9J3RydW5rJyldLAotICAgICAgICAgICAg
c2VsZi5kYXRhYmFzZS5maW5kX2NvbW1pdHNfYnlfaWQocmVwb3NpdG9yeV9pZD0nd2Via2l0Jywg
YnJhbmNoPSd0cnVuaycsIGNvbW1pdF9pZD0yMzY1NDQpLAotICAgICAgICApCi0KLSAgICBAV2Fp
dEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmlj
dFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKLSAgICBkZWYgdGVz
dF9icmFuY2hlcyhzZWxmLCByZWRpcz1TdHJpY3RSZWRpcywgY2Fzc2FuZHJhPUNhc3NhbmRyYUNv
bnRleHQpOgotICAgICAgICBzZWxmLmluaXRfZGF0YWJhc2UocmVkaXM9cmVkaXMsIGNhc3NhbmRy
YT1jYXNzYW5kcmEpCi0gICAgICAgIHNlbGYuYWRkX2FsbF9jb21taXRzX3RvX2RhdGFiYXNlKCkK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ21hc3RlcicsICdzYWZhcmktNjA2LWJyYW5jaCdd
LCBzZWxmLmRhdGFiYXNlLmJyYW5jaGVzKHJlcG9zaXRvcnlfaWQ9J3NhZmFyaScpKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKFsnc2FmYXJpLTYwNi1icmFuY2gnLCAndHJ1bmsnXSwgc2VsZi5k
YXRhYmFzZS5icmFuY2hlcyhyZXBvc2l0b3J5X2lkPSd3ZWJraXQnKSkKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChbJ3NhZmFyaS02MDYtYnJhbmNoJ10sIHNlbGYuZGF0YWJhc2UuYnJhbmNoZXMo
cmVwb3NpdG9yeV9pZD0nc2FmYXJpJywgYnJhbmNoPSdzYWZhcmknKSkKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChbJ3NhZmFyaS02MDYtYnJhbmNoJ10sIHNlbGYuZGF0YWJhc2UuYnJhbmNoZXMo
cmVwb3NpdG9yeV9pZD0nd2Via2l0JywgYnJhbmNoPSdzYWZhcmktNjA2LWJyYW5jaCcpKQotCi0g
ICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZh
a2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCi0gICAg
ZGVmIHRlc3RfbmV4dF9jb21taXQoc2VsZiwgcmVkaXM9U3RyaWN0UmVkaXMsIGNhc3NhbmRyYT1D
YXNzYW5kcmFDb250ZXh0KToKLSAgICAgICAgc2VsZi5pbml0X2RhdGFiYXNlKHJlZGlzPXJlZGlz
LCBjYXNzYW5kcmE9Y2Fzc2FuZHJhKQotICAgICAgICBzZWxmLmFkZF9hbGxfY29tbWl0c190b19k
YXRhYmFzZSgpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIHNlbGYu
ZGF0YWJhc2UubmV4dF9jb21taXQoc2VsZi5zdm5fcmVwb3NpdG9yeS5jb21taXRfZm9yX2lkKGlk
PTIzNjU0MikpLAotICAgICAgICAgICAgc2VsZi5zdm5fcmVwb3NpdG9yeS5jb21taXRfZm9yX2lk
KGlkPTIzNjU0MyksCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAg
ICAgICAgIHNlbGYuZGF0YWJhc2UubmV4dF9jb21taXQoc2VsZi5zdGFzaF9yZXBvc2l0b3J5LmNv
bW1pdF9mb3JfaWQoaWQ9JzMzNjYxMGE0MGMzZmVjYjcyODg3MWUxMmNhMzE0ODJjYTcxNWIzODMn
KSksCi0gICAgICAgICAgICBzZWxmLnN0YXNoX3JlcG9zaXRvcnkuY29tbWl0X2Zvcl9pZChpZD0n
MzM2NjEwYTg0ZmRjZjE0ZGRjZjFkYjY1MDc1YWY5NTQ4MDUxNmZkYScpLAotICAgICAgICApCi0K
LSAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9
RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKLSAg
ICBkZWYgdGVzdF9wcmV2aW91c19jb21taXQoc2VsZiwgcmVkaXM9U3RyaWN0UmVkaXMsIGNhc3Nh
bmRyYT1DYXNzYW5kcmFDb250ZXh0KToKLSAgICAgICAgc2VsZi5pbml0X2RhdGFiYXNlKHJlZGlz
PXJlZGlzLCBjYXNzYW5kcmE9Y2Fzc2FuZHJhKQotICAgICAgICBzZWxmLmFkZF9hbGxfY29tbWl0
c190b19kYXRhYmFzZSgpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAg
IHNlbGYuc3ZuX3JlcG9zaXRvcnkuY29tbWl0X2Zvcl9pZChpZD0yMzY1NDIpLAotICAgICAgICAg
ICAgc2VsZi5kYXRhYmFzZS5wcmV2aW91c19jb21taXQoc2VsZi5zdm5fcmVwb3NpdG9yeS5jb21t
aXRfZm9yX2lkKGlkPTIzNjU0MykpLAotICAgICAgICApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoCi0gICAgICAgICAgICBzZWxmLnN0YXNoX3JlcG9zaXRvcnkuY29tbWl0X2Zvcl9pZChpZD0n
MzM2NjEwYTQwYzNmZWNiNzI4ODcxZTEyY2EzMTQ4MmNhNzE1YjM4MycpLAotICAgICAgICAgICAg
c2VsZi5kYXRhYmFzZS5wcmV2aW91c19jb21taXQoc2VsZi5zdGFzaF9yZXBvc2l0b3J5LmNvbW1p
dF9mb3JfaWQoaWQ9JzMzNjYxMGE4NGZkY2YxNGRkY2YxZGI2NTA3NWFmOTU0ODA1MTZmZGEnKSks
Ci0gICAgICAgICkKLQotICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2Nr
ZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5k
cmFDb250ZXh0KQotICAgIGRlZiB0ZXN0X3NpYmxpbmdfY29tbWl0cyhzZWxmLCByZWRpcz1TdHJp
Y3RSZWRpcywgY2Fzc2FuZHJhPUNhc3NhbmRyYUNvbnRleHQpOgotICAgICAgICBzZWxmLmluaXRf
ZGF0YWJhc2UocmVkaXM9cmVkaXMsIGNhc3NhbmRyYT1jYXNzYW5kcmEpCi0gICAgICAgIHNlbGYu
YWRkX2FsbF9jb21taXRzX3RvX2RhdGFiYXNlKCkKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KAotICAgICAgICAgICAgc2VsZi5kYXRhYmFzZS5zaWJsaW5nX2NvbW1pdHMoc2VsZi5zdm5fcmVw
b3NpdG9yeS5jb21taXRfZm9yX2lkKGlkPTIzNjU0MiksIFsnc2FmYXJpJ10pLAotICAgICAgICAg
ICAgeydzYWZhcmknOiBbc2VsZi5zdGFzaF9yZXBvc2l0b3J5LmNvbW1pdF9mb3JfaWQoaWQ9J2Ji
NmJkYTVmNDRkZDI0ZDBiNTQ1MzliOGZmNmU4YzE3ZjUxOTI0OWEnKV19LAotICAgICAgICApCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBzZWxmLmRhdGFiYXNlLnNpYmxp
bmdfY29tbWl0cyhzZWxmLnN0YXNoX3JlcG9zaXRvcnkuY29tbWl0X2Zvcl9pZChpZD0nYmI2YmRh
NWY0NGRkMjRkMGI1NDUzOWI4ZmY2ZThjMTdmNTE5MjQ5YScpLCBbJ3dlYmtpdCddKSwKLSAgICAg
ICAgICAgIHsnd2Via2l0JzogWwotICAgICAgICAgICAgICAgIHNlbGYuc3ZuX3JlcG9zaXRvcnku
Y29tbWl0X2Zvcl9pZChpZD0yMzY1NDQpLAotICAgICAgICAgICAgICAgIHNlbGYuc3ZuX3JlcG9z
aXRvcnkuY29tbWl0X2Zvcl9pZChpZD0yMzY1NDMpLAotICAgICAgICAgICAgICAgIHNlbGYuc3Zu
X3JlcG9zaXRvcnkuY29tbWl0X2Zvcl9pZChpZD0yMzY1NDIpLAotICAgICAgICAgICAgICAgIHNl
bGYuc3ZuX3JlcG9zaXRvcnkuY29tbWl0X2Zvcl9pZChpZD0yMzY1NDEpLAotICAgICAgICAgICAg
ICAgIHNlbGYuc3ZuX3JlcG9zaXRvcnkuY29tbWl0X2Zvcl9pZChpZD0yMzY1NDApLAotICAgICAg
ICAgICAgXX0sCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAg
ICAgIHNlbGYuZGF0YWJhc2Uuc2libGluZ19jb21taXRzKHNlbGYuc3Rhc2hfcmVwb3NpdG9yeS5j
b21taXRfZm9yX2lkKGlkPSczMzY2MTBhODRmZGNmMTRkZGNmMWRiNjUwNzVhZjk1NDgwNTE2ZmRh
JyksIFsnd2Via2l0J10pLAotICAgICAgICAgICAgeyd3ZWJraXQnOiBbXX0sCi0gICAgICAgICkK
LQotICAgIGRlZiB0ZXN0X3V1aWRfZm9yX2NvbW1pdHMoc2VsZik6Ci0gICAgICAgIHV1aWQgPSBD
b21taXRDb250ZXh0LnV1aWRfZm9yX2NvbW1pdHMoW01vY2tTdGFzaFJlcG9zaXRvcnkuc2FmYXJp
KCkuY29tbWl0X2Zvcl9pZChpZD0nYmI2YmRhNWYnKSwgTW9ja1NWTlJlcG9zaXRvcnkud2Via2l0
KCkuY29tbWl0X2Zvcl9pZChpZD0yMzY1NDQpXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1
dWlkLCAxNTM4MDUyNDA4MDApCi0KLSAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZf
bm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2Nr
Q2Fzc2FuZHJhQ29udGV4dCkKLSAgICBkZWYgdGVzdF9icmFuY2hfa2V5c19mb3JfY29tbWl0cyhz
ZWxmLCByZWRpcz1TdHJpY3RSZWRpcywgY2Fzc2FuZHJhPUNhc3NhbmRyYUNvbnRleHQpOgotICAg
ICAgICBzZWxmLmluaXRfZGF0YWJhc2UocmVkaXM9cmVkaXMsIGNhc3NhbmRyYT1jYXNzYW5kcmEp
Ci0gICAgICAgIGJyYW5jaGVzID0gc2VsZi5kYXRhYmFzZS5icmFuY2hfa2V5c19mb3JfY29tbWl0
cyhbCi0gICAgICAgICAgICBNb2NrU3Rhc2hSZXBvc2l0b3J5LnNhZmFyaSgpLmNvbW1pdF9mb3Jf
aWQoaWQ9J2JiNmJkYTVmJyksCi0gICAgICAgICAgICBNb2NrU1ZOUmVwb3NpdG9yeS53ZWJraXQo
KS5jb21taXRfZm9yX2lkKGlkPTIzNjU0NCksCi0gICAgICAgIF0pCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoYnJhbmNoZXMsIFsnZGVmYXVsdCddKQotCi0gICAgICAgIGJyYW5jaGVzID0gc2Vs
Zi5kYXRhYmFzZS5icmFuY2hfa2V5c19mb3JfY29tbWl0cyhbCi0gICAgICAgICAgICBNb2NrU3Rh
c2hSZXBvc2l0b3J5LnNhZmFyaSgpLmNvbW1pdF9mb3JfaWQoaWQ9Jzc5MjU2YzMyJywgYnJhbmNo
PSdzYWZhcmktNjA2LWJyYW5jaCcpLAotICAgICAgICAgICAgTW9ja1NWTlJlcG9zaXRvcnkud2Vi
a2l0KCkuY29tbWl0X2Zvcl9pZChpZD0yMzY1NDQpLAotICAgICAgICBdKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGJyYW5jaGVzLCBbJ3NhZmFyaS02MDYtYnJhbmNoJ10pCi0KLSAgICAgICAg
YnJhbmNoZXMgPSBzZWxmLmRhdGFiYXNlLmJyYW5jaF9rZXlzX2Zvcl9jb21taXRzKFsKLSAgICAg
ICAgICAgIE1vY2tTdGFzaFJlcG9zaXRvcnkuc2FmYXJpKCkuY29tbWl0X2Zvcl9pZChpZD0nNzky
NTZjMzInLCBicmFuY2g9J3NhZmFyaS02MDYtYnJhbmNoJyksCi0gICAgICAgICAgICBNb2NrU1ZO
UmVwb3NpdG9yeS53ZWJraXQoKS5jb21taXRfZm9yX2lkKGlkPTIzNjMzNSwgYnJhbmNoPSdzYWZh
cmktNjA2LWJyYW5jaCcpLAotICAgICAgICBdKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJy
YW5jaGVzLCBbJ3NhZmFyaS02MDYtYnJhbmNoJ10pCi0KLSAgICBAV2FpdEZvckRvY2tlclRlc3RD
YXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nh
c3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKLSAgICBkZWYgdGVzdF9jb21taXRfdXJsKHNl
bGYsIHJlZGlzPVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCk6Ci0gICAg
ICAgIHNlbGYuaW5pdF9kYXRhYmFzZShyZWRpcz1yZWRpcywgY2Fzc2FuZHJhPWNhc3NhbmRyYSkK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgICdodHRwczovL2Zha2Utc3Rh
c2gtaW5zdGFuY2UuYXBwbGUuY29tL3Byb2plY3RzL0JST1dTRVIvcmVwb3Mvc2FmYXJpL2NvbW1p
dHMvYmI2YmRhNWY0NGRkMjRkMGI1NDUzOWI4ZmY2ZThjMTdmNTE5MjQ5YScsCi0gICAgICAgICAg
ICBzZWxmLmRhdGFiYXNlLnVybChNb2NrU3Rhc2hSZXBvc2l0b3J5LnNhZmFyaSgpLmNvbW1pdF9m
b3JfaWQoaWQ9J2JiNmJkYTVmJykpLAotICAgICAgICApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoCi0gICAgICAgICAgICAnaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzIzNjU0
NC93ZWJraXQnLAotICAgICAgICAgICAgc2VsZi5kYXRhYmFzZS51cmwoTW9ja1NWTlJlcG9zaXRv
cnkud2Via2l0KCkuY29tbWl0X2Zvcl9pZChpZD0yMzY1NDQpKSwKLSAgICAgICAgKQpJbmRleDog
VG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvY29uZmlndXJhdGlvbl9jb250ZXh0
LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL2Nv
bmZpZ3VyYXRpb25fY29udGV4dC5weQkocmV2aXNpb24gMjY1NTMxKQorKysgVG9vbHMvcmVzdWx0
c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvY29uZmlndXJhdGlvbl9jb250ZXh0LnB5CShub25leGlz
dGVudCkKQEAgLTEsMjk4ICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUg
bWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKLSMgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotIyBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0jIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0j
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksCi0jIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0KLWltcG9ydCBjYWxlbmRhcgotaW1wb3J0IGpzb24KLWltcG9ydCB0aW1lCi0KLWZyb20g
Y2Fzc2FuZHJhLmNxbGVuZ2luZSBpbXBvcnQgY29sdW1ucwotZnJvbSBjYXNzYW5kcmEuY3FsZW5n
aW5lLm1vZGVscyBpbXBvcnQgTW9kZWwKLWZyb20gY29sbGVjdGlvbnMgaW1wb3J0IEl0ZXJhYmxl
LCBPcmRlcmVkRGljdAotZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUKLWZyb20gcmVzdWx0
c2RicHkuY29udHJvbGxlci5jb25maWd1cmF0aW9uIGltcG9ydCBDb25maWd1cmF0aW9uCi1mcm9t
IHJlc3VsdHNkYnB5Lm1vZGVsLmNvbW1pdF9jb250ZXh0IGltcG9ydCBDb21taXRDb250ZXh0Ci0K
LQotY2xhc3MgQ2x1c3RlcmVkQnlDb25maWd1cmF0aW9uKE1vZGVsKToKLSAgICBwbGF0Zm9ybSA9
IGNvbHVtbnMuVGV4dChwYXJ0aXRpb25fa2V5PVRydWUsIHJlcXVpcmVkPVRydWUpCi0gICAgdmVy
c2lvbiA9IGNvbHVtbnMuSW50ZWdlcihwYXJ0aXRpb25fa2V5PVRydWUsIHJlcXVpcmVkPVRydWUp
Ci0gICAgaXNfc2ltdWxhdG9yID0gY29sdW1ucy5Cb29sZWFuKHBhcnRpdGlvbl9rZXk9VHJ1ZSwg
cmVxdWlyZWQ9VHJ1ZSkKLSAgICBhcmNoaXRlY3R1cmUgPSBjb2x1bW5zLlRleHQocGFydGl0aW9u
X2tleT1UcnVlLCByZXF1aXJlZD1UcnVlKQotICAgIGF0dHJpYnV0ZXMgPSBjb2x1bW5zLlRleHQo
cGFydGl0aW9uX2tleT1UcnVlLCByZXF1aXJlZD1UcnVlKQotCi0gICAgZGVmIHRvX2NvbmZpZ3Vy
YXRpb24oc2VsZik6Ci0gICAgICAgIHJldHVybiBDb25maWd1cmF0aW9uKAotICAgICAgICAgICAg
cGxhdGZvcm09c2VsZi5wbGF0Zm9ybSwKLSAgICAgICAgICAgIHZlcnNpb249c2VsZi52ZXJzaW9u
LAotICAgICAgICAgICAgaXNfc2ltdWxhdG9yPXNlbGYuaXNfc2ltdWxhdG9yLAotICAgICAgICAg
ICAgYXJjaGl0ZWN0dXJlPXNlbGYuYXJjaGl0ZWN0dXJlLAotICAgICAgICAgICAgc2RrPWdldGF0
dHIoc2VsZiwgJ3NkaycsIE5vbmUpIG9yIE5vbmUsCi0gICAgICAgICAgICAqKmpzb24ubG9hZHMo
c2VsZi5hdHRyaWJ1dGVzKQotICAgICAgICApCi0KLQotY2xhc3MgQ29uZmlndXJhdGlvbkNvbnRl
eHQob2JqZWN0KToKLQotICAgIGNsYXNzIENvbmZpZ3VyYXRpb25Nb2RlbChvYmplY3QpOgotCi0g
ICAgICAgIGRlZiB0b19jb25maWd1cmF0aW9uKHNlbGYpOgotICAgICAgICAgICAgcmV0dXJuIENv
bmZpZ3VyYXRpb24oCi0gICAgICAgICAgICAgICAgcGxhdGZvcm09c2VsZi5wbGF0Zm9ybSwKLSAg
ICAgICAgICAgICAgICB2ZXJzaW9uPXNlbGYudmVyc2lvbiwgdmVyc2lvbl9uYW1lPXNlbGYudmVy
c2lvbl9uYW1lIG9yIE5vbmUsCi0gICAgICAgICAgICAgICAgc2RrPWdldGF0dHIoc2VsZiwgJ3Nk
aycsIE5vbmUpIG9yIE5vbmUsCi0gICAgICAgICAgICAgICAgaXNfc2ltdWxhdG9yPXNlbGYuaXNf
c2ltdWxhdG9yLAotICAgICAgICAgICAgICAgIGFyY2hpdGVjdHVyZT1zZWxmLmFyY2hpdGVjdHVy
ZSwgbW9kZWw9c2VsZi5tb2RlbCBvciBOb25lLAotICAgICAgICAgICAgICAgIHN0eWxlPXNlbGYu
c3R5bGUgb3IgTm9uZSwgZmxhdm9yPXNlbGYuZmxhdm9yIG9yIE5vbmUsCi0gICAgICAgICAgICAp
Ci0KLSAgICBjbGFzcyBCeVBsYXRmb3JtKE1vZGVsLCBDb25maWd1cmF0aW9uTW9kZWwpOgotICAg
ICAgICBfX3RhYmxlX25hbWVfXyA9ICdjb25maWdzX2J5X3BsYXRmb3JtX3dpdGhfYnJhbmNoJwot
ICAgICAgICBwbGF0Zm9ybSA9IGNvbHVtbnMuVGV4dChwYXJ0aXRpb25fa2V5PVRydWUsIHJlcXVp
cmVkPVRydWUpCi0gICAgICAgIHN0eWxlID0gY29sdW1ucy5UZXh0KHByaW1hcnlfa2V5PVRydWUs
IHJlcXVpcmVkPUZhbHNlKQotICAgICAgICBmbGF2b3IgPSBjb2x1bW5zLlRleHQocHJpbWFyeV9r
ZXk9VHJ1ZSwgcmVxdWlyZWQ9RmFsc2UpCi0gICAgICAgIGFyY2hpdGVjdHVyZSA9IGNvbHVtbnMu
VGV4dChwcmltYXJ5X2tleT1UcnVlLCByZXF1aXJlZD1UcnVlKQotICAgICAgICBtb2RlbCA9IGNv
bHVtbnMuVGV4dChwcmltYXJ5X2tleT1UcnVlLCByZXF1aXJlZD1GYWxzZSkKLSAgICAgICAgaXNf
c2ltdWxhdG9yID0gY29sdW1ucy5Cb29sZWFuKHByaW1hcnlfa2V5PVRydWUsIHJlcXVpcmVkPVRy
dWUpCi0gICAgICAgIHZlcnNpb24gPSBjb2x1bW5zLkludGVnZXIocHJpbWFyeV9rZXk9VHJ1ZSwg
cmVxdWlyZWQ9VHJ1ZSkKLSAgICAgICAgYnJhbmNoID0gY29sdW1ucy5UZXh0KHByaW1hcnlfa2V5
PVRydWUsIHJlcXVpcmVkPVRydWUpCi0gICAgICAgIHZlcnNpb25fbmFtZSA9IGNvbHVtbnMuVGV4
dChwcmltYXJ5X2tleT1UcnVlLCByZXF1aXJlZD1GYWxzZSkKLSAgICAgICAgbGFzdF9ydW4gPSBj
b2x1bW5zLkRhdGVUaW1lKHJlcXVpcmVkPVRydWUpCi0KLSAgICBjbGFzcyBCeVBsYXRmb3JtQW5k
VmVyc2lvbihNb2RlbCwgQ29uZmlndXJhdGlvbk1vZGVsKToKLSAgICAgICAgX190YWJsZV9uYW1l
X18gPSAnY29uZmlnc19ieV9wbGF0Zm9ybV9hbmRfdmVyc2lvbl93aXRoX2JyYW5jaCcKLSAgICAg
ICAgcGxhdGZvcm0gPSBjb2x1bW5zLlRleHQocGFydGl0aW9uX2tleT1UcnVlLCByZXF1aXJlZD1U
cnVlKQotICAgICAgICB2ZXJzaW9uID0gY29sdW1ucy5JbnRlZ2VyKHBhcnRpdGlvbl9rZXk9VHJ1
ZSwgcmVxdWlyZWQ9VHJ1ZSkKLSAgICAgICAgc3R5bGUgPSBjb2x1bW5zLlRleHQocHJpbWFyeV9r
ZXk9VHJ1ZSwgcmVxdWlyZWQ9RmFsc2UpCi0gICAgICAgIGZsYXZvciA9IGNvbHVtbnMuVGV4dChw
cmltYXJ5X2tleT1UcnVlLCByZXF1aXJlZD1GYWxzZSkKLSAgICAgICAgYXJjaGl0ZWN0dXJlID0g
Y29sdW1ucy5UZXh0KHByaW1hcnlfa2V5PVRydWUsIHJlcXVpcmVkPVRydWUpCi0gICAgICAgIG1v
ZGVsID0gY29sdW1ucy5UZXh0KHByaW1hcnlfa2V5PVRydWUsIHJlcXVpcmVkPUZhbHNlKQotICAg
ICAgICBpc19zaW11bGF0b3IgPSBjb2x1bW5zLkJvb2xlYW4ocHJpbWFyeV9rZXk9VHJ1ZSwgcmVx
dWlyZWQ9VHJ1ZSkKLSAgICAgICAgYnJhbmNoID0gY29sdW1ucy5UZXh0KHByaW1hcnlfa2V5PVRy
dWUsIHJlcXVpcmVkPVRydWUpCi0gICAgICAgIHZlcnNpb25fbmFtZSA9IGNvbHVtbnMuVGV4dChw
cmltYXJ5X2tleT1UcnVlLCByZXF1aXJlZD1GYWxzZSkKLSAgICAgICAgbGFzdF9ydW4gPSBjb2x1
bW5zLkRhdGVUaW1lKHJlcXVpcmVkPVRydWUpCi0KLSAgICBjbGFzcyBCeUFyY2hpdGVjdHVyZShN
b2RlbCwgQ29uZmlndXJhdGlvbk1vZGVsKToKLSAgICAgICAgX190YWJsZV9uYW1lX18gPSAnY29u
Zmlnc19ieV9hcmNoaXRlY3R1cmVfd2l0aF9icmFuY2gnCi0gICAgICAgIGFyY2hpdGVjdHVyZSA9
IGNvbHVtbnMuVGV4dChwYXJ0aXRpb25fa2V5PVRydWUsIHJlcXVpcmVkPVRydWUpCi0gICAgICAg
IHN0eWxlID0gY29sdW1ucy5UZXh0KHByaW1hcnlfa2V5PVRydWUsIHJlcXVpcmVkPUZhbHNlKQot
ICAgICAgICBwbGF0Zm9ybSA9IGNvbHVtbnMuVGV4dChwcmltYXJ5X2tleT1UcnVlLCByZXF1aXJl
ZD1UcnVlKQotICAgICAgICB2ZXJzaW9uID0gY29sdW1ucy5JbnRlZ2VyKHByaW1hcnlfa2V5PVRy
dWUsIHJlcXVpcmVkPVRydWUpCi0gICAgICAgIG1vZGVsID0gY29sdW1ucy5UZXh0KHByaW1hcnlf
a2V5PVRydWUsIHJlcXVpcmVkPUZhbHNlKQotICAgICAgICBmbGF2b3IgPSBjb2x1bW5zLlRleHQo
cHJpbWFyeV9rZXk9VHJ1ZSwgcmVxdWlyZWQ9RmFsc2UpCi0gICAgICAgIGlzX3NpbXVsYXRvciA9
IGNvbHVtbnMuQm9vbGVhbihwcmltYXJ5X2tleT1UcnVlLCByZXF1aXJlZD1UcnVlKQotICAgICAg
ICBicmFuY2ggPSBjb2x1bW5zLlRleHQocHJpbWFyeV9rZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkK
LSAgICAgICAgdmVyc2lvbl9uYW1lID0gY29sdW1ucy5UZXh0KHByaW1hcnlfa2V5PVRydWUsIHJl
cXVpcmVkPUZhbHNlKQotICAgICAgICBsYXN0X3J1biA9IGNvbHVtbnMuRGF0ZVRpbWUocmVxdWly
ZWQ9VHJ1ZSkKLQotICAgIGNsYXNzIEJ5TW9kZWwoTW9kZWwsIENvbmZpZ3VyYXRpb25Nb2RlbCk6
Ci0gICAgICAgIF9fdGFibGVfbmFtZV9fID0gJ2NvbmZpZ3NfYnlfbW9kZWxfd2l0aF9icmFuY2gn
Ci0gICAgICAgIG1vZGVsID0gY29sdW1ucy5UZXh0KHBhcnRpdGlvbl9rZXk9VHJ1ZSwgcmVxdWly
ZWQ9VHJ1ZSkKLSAgICAgICAgdmVyc2lvbiA9IGNvbHVtbnMuSW50ZWdlcihwcmltYXJ5X2tleT1U
cnVlLCByZXF1aXJlZD1UcnVlKQotICAgICAgICBzdHlsZSA9IGNvbHVtbnMuVGV4dChwcmltYXJ5
X2tleT1UcnVlLCByZXF1aXJlZD1GYWxzZSkKLSAgICAgICAgcGxhdGZvcm0gPSBjb2x1bW5zLlRl
eHQocHJpbWFyeV9rZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkKLSAgICAgICAgZmxhdm9yID0gY29s
dW1ucy5UZXh0KHByaW1hcnlfa2V5PVRydWUsIHJlcXVpcmVkPUZhbHNlKQotICAgICAgICBhcmNo
aXRlY3R1cmUgPSBjb2x1bW5zLlRleHQocHJpbWFyeV9rZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkK
LSAgICAgICAgaXNfc2ltdWxhdG9yID0gY29sdW1ucy5Cb29sZWFuKHByaW1hcnlfa2V5PVRydWUs
IHJlcXVpcmVkPVRydWUpCi0gICAgICAgIGJyYW5jaCA9IGNvbHVtbnMuVGV4dChwcmltYXJ5X2tl
eT1UcnVlLCByZXF1aXJlZD1UcnVlKQotICAgICAgICB2ZXJzaW9uX25hbWUgPSBjb2x1bW5zLlRl
eHQocHJpbWFyeV9rZXk9VHJ1ZSwgcmVxdWlyZWQ9RmFsc2UpCi0gICAgICAgIGxhc3RfcnVuID0g
Y29sdW1ucy5EYXRlVGltZShyZXF1aXJlZD1UcnVlKQotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYs
IHJlZGlzLCBjYXNzYW5kcmEsIGNhY2hlX3RpbWVvdXQ9NjAgKiA2MCAqIDI0ICogMTQpOgotICAg
ICAgICBhc3NlcnQgcmVkaXMKLSAgICAgICAgYXNzZXJ0IGNhc3NhbmRyYQotCi0gICAgICAgIHNl
bGYucmVkaXMgPSByZWRpcwotICAgICAgICBzZWxmLmNhc3NhbmRyYSA9IGNhc3NhbmRyYQotICAg
ICAgICBzZWxmLmNhY2hlX3RpbWVvdXQgPSBjYWNoZV90aW1lb3V0Ci0KLSAgICAgICAgd2l0aCBz
ZWxmOgotICAgICAgICAgICAgc2VsZi5jYXNzYW5kcmEuY3JlYXRlX3RhYmxlKHNlbGYuQnlQbGF0
Zm9ybSkKLSAgICAgICAgICAgIHNlbGYuY2Fzc2FuZHJhLmNyZWF0ZV90YWJsZShzZWxmLkJ5UGxh
dGZvcm1BbmRWZXJzaW9uKQotICAgICAgICAgICAgc2VsZi5jYXNzYW5kcmEuY3JlYXRlX3RhYmxl
KHNlbGYuQnlBcmNoaXRlY3R1cmUpCi0gICAgICAgICAgICBzZWxmLmNhc3NhbmRyYS5jcmVhdGVf
dGFibGUoc2VsZi5CeU1vZGVsKQotCi0gICAgICAgICAgICBmb3IgY29uZmlndXJhdGlvbiBpbiBz
ZWxmLmNhc3NhbmRyYS5zZWxlY3RfZnJvbV90YWJsZShzZWxmLkJ5UGxhdGZvcm0uX190YWJsZV9u
YW1lX18pOgotICAgICAgICAgICAgICAgIGlmIGNvbmZpZ3VyYXRpb24ubGFzdF9ydW4gPj0gZGF0
ZXRpbWUudXRjZnJvbXRpbWVzdGFtcChpbnQodGltZS50aW1lKCkgLSBjYWNoZV90aW1lb3V0KSk6
Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuX3JlZ2lzdGVyX2luX3JlZGlzKGNvbmZpZ3VyYXRp
b24udG9fY29uZmlndXJhdGlvbigpLCBjb25maWd1cmF0aW9uLmJyYW5jaCwgY29uZmlndXJhdGlv
bi5sYXN0X3J1bikKLQotICAgIGRlZiBfX2VudGVyX18oc2VsZik6Ci0gICAgICAgIHNlbGYuY2Fz
c2FuZHJhLl9fZW50ZXJfXygpCi0KLSAgICBkZWYgX19leGl0X18oc2VsZiwgKmFyZ3MsICoqa3dh
cmdzKToKLSAgICAgICAgc2VsZi5jYXNzYW5kcmEuX19leGl0X18oKmFyZ3MsICoqa3dhcmdzKQot
Ci0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIF9jb252ZXJ0X3RvX3JlZGlzX2tleShjbHMsIGNv
bmZpZ3VyYXRpb24sIGJyYW5jaCk6Ci0gICAgICAgIHJldHVybiAnY29uZmlnc193aXRoX2JyYW5j
aDp7fTp7fTp7fTp7fTp7fTp7fTp7fTp7fTp7fScuZm9ybWF0KAotICAgICAgICAgICAgY29uZmln
dXJhdGlvbi5wbGF0Zm9ybSBvciAnKicsICcqJyBpZiBjb25maWd1cmF0aW9uLmlzX3NpbXVsYXRv
ciBpcyBOb25lIGVsc2UgKDEgaWYgY29uZmlndXJhdGlvbi5pc19zaW11bGF0b3IgZWxzZSAwKSwK
LSAgICAgICAgICAgICcqJyBpZiBjb25maWd1cmF0aW9uLnZlcnNpb24gaXMgTm9uZSBlbHNlIENv
bmZpZ3VyYXRpb24uaW50ZWdlcl90b192ZXJzaW9uKGNvbmZpZ3VyYXRpb24udmVyc2lvbiksCi0g
ICAgICAgICAgICBjb25maWd1cmF0aW9uLnZlcnNpb25fbmFtZSBvciAnKicsCi0gICAgICAgICAg
ICBjb25maWd1cmF0aW9uLmFyY2hpdGVjdHVyZSBvciAnKicsIGNvbmZpZ3VyYXRpb24ubW9kZWwg
b3IgJyonLAotICAgICAgICAgICAgY29uZmlndXJhdGlvbi5zdHlsZSBvciAnKicsIGNvbmZpZ3Vy
YXRpb24uZmxhdm9yIG9yICcqJywKLSAgICAgICAgICAgIGJyYW5jaCwKLSAgICAgICAgKQotCi0g
ICAgZGVmIF9yZWdpc3Rlcl9pbl9yZWRpcyhzZWxmLCBjb25maWd1cmF0aW9uLCBicmFuY2gsIHRp
bWVzdGFtcCk6Ci0gICAgICAgIGlmIGlzaW5zdGFuY2UodGltZXN0YW1wLCBkYXRldGltZSk6Ci0g
ICAgICAgICAgICB0aW1lc3RhbXAgPSBjYWxlbmRhci50aW1lZ20odGltZXN0YW1wLnRpbWV0dXBs
ZSgpKQotICAgICAgICBleHBpcmF0aW9uID0gaW50KHNlbGYuY2FjaGVfdGltZW91dCAtICh0aW1l
LnRpbWUoKSAtIGludCh0aW1lc3RhbXApKSkKLSAgICAgICAgaWYgZXhwaXJhdGlvbiA+IDA6Ci0g
ICAgICAgICAgICBzZGsgPSBjb25maWd1cmF0aW9uLnNkawotICAgICAgICAgICAgdHJ5OgotICAg
ICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24uc2RrID0gTm9uZQotICAgICAgICAgICAgICAgIHNl
bGYucmVkaXMuc2V0KHNlbGYuX2NvbnZlcnRfdG9fcmVkaXNfa2V5KGNvbmZpZ3VyYXRpb24sIGJy
YW5jaCksIGNvbmZpZ3VyYXRpb24udG9fanNvbigpLCBleD1leHBpcmF0aW9uKQotICAgICAgICAg
ICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uLnNkayA9IHNkawotCi0g
ICAgZGVmIHJlZ2lzdGVyX2NvbmZpZ3VyYXRpb24oc2VsZiwgY29uZmlndXJhdGlvbiwgYnJhbmNo
PU5vbmUsIHRpbWVzdGFtcD10aW1lLnRpbWUoKSk6Ci0gICAgICAgIGlmIG5vdCBpc2luc3RhbmNl
KGNvbmZpZ3VyYXRpb24sIENvbmZpZ3VyYXRpb24pOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVy
cm9yKGYnRXhwZWN0ZWQgdHlwZSB7Q29uZmlndXJhdGlvbn0sIGdvdCB7dHlwZShjb25maWd1cmF0
aW9uKX0nKQotICAgICAgICBpZiBub3QgY29uZmlndXJhdGlvbi5pc19jb21wbGV0ZSgpOgotICAg
ICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdDYW5ub3QgcmVnaXN0ZXIgYSBwYXJ0aWFsIGNvbmZp
Z3VyYXRpb24nKQotICAgICAgICBpZiBub3QgaXNpbnN0YW5jZSh0aW1lc3RhbXAsIGRhdGV0aW1l
KToKLSAgICAgICAgICAgIHRpbWVzdGFtcCA9IGRhdGV0aW1lLnV0Y2Zyb210aW1lc3RhbXAoaW50
KHRpbWVzdGFtcCkpCi0KLSAgICAgICAgYnJhbmNoID0gYnJhbmNoIG9yIENvbW1pdENvbnRleHQu
REVGQVVMVF9CUkFOQ0hfS0VZCi0KLSAgICAgICAgd2l0aCBzZWxmOgotICAgICAgICAgICAgdGFi
bGVzX3RvX2luc2VydF90byA9IFtzZWxmLkJ5UGxhdGZvcm0uX190YWJsZV9uYW1lX18sIHNlbGYu
QnlQbGF0Zm9ybUFuZFZlcnNpb24uX190YWJsZV9uYW1lX18sIHNlbGYuQnlBcmNoaXRlY3R1cmUu
X190YWJsZV9uYW1lX19dCi0gICAgICAgICAgICBpZiBjb25maWd1cmF0aW9uLm1vZGVsIGlzIG5v
dCBOb25lOgotICAgICAgICAgICAgICAgIHRhYmxlc190b19pbnNlcnRfdG8uYXBwZW5kKHNlbGYu
QnlNb2RlbC5fX3RhYmxlX25hbWVfXykKLSAgICAgICAgICAgIGZvciB0YWJsZSBpbiB0YWJsZXNf
dG9faW5zZXJ0X3RvOgotICAgICAgICAgICAgICAgIHNlbGYuY2Fzc2FuZHJhLmluc2VydF9yb3co
Ci0gICAgICAgICAgICAgICAgICAgIHRhYmxlLCBicmFuY2g9YnJhbmNoLAotICAgICAgICAgICAg
ICAgICAgICBwbGF0Zm9ybT1jb25maWd1cmF0aW9uLnBsYXRmb3JtLCBpc19zaW11bGF0b3I9Y29u
ZmlndXJhdGlvbi5pc19zaW11bGF0b3IsCi0gICAgICAgICAgICAgICAgICAgIHZlcnNpb249Y29u
ZmlndXJhdGlvbi52ZXJzaW9uLCB2ZXJzaW9uX25hbWU9Y29uZmlndXJhdGlvbi52ZXJzaW9uX25h
bWUgb3IgJycsCi0gICAgICAgICAgICAgICAgICAgIGFyY2hpdGVjdHVyZT1jb25maWd1cmF0aW9u
LmFyY2hpdGVjdHVyZSwgbW9kZWw9Y29uZmlndXJhdGlvbi5tb2RlbCBvciAnJywKLSAgICAgICAg
ICAgICAgICAgICAgc3R5bGU9Y29uZmlndXJhdGlvbi5zdHlsZSBvciAnJywgZmxhdm9yPWNvbmZp
Z3VyYXRpb24uZmxhdm9yIG9yICcnLAotICAgICAgICAgICAgICAgICAgICBsYXN0X3J1bj10aW1l
c3RhbXAsCi0gICAgICAgICAgICAgICAgKQotCi0gICAgICAgIHNlbGYuX3JlZ2lzdGVyX2luX3Jl
ZGlzKGNvbmZpZ3VyYXRpb24sIGJyYW5jaCwgdGltZXN0YW1wKQotCi0gICAgZGVmIHNlYXJjaF9m
b3JfY29uZmlndXJhdGlvbihzZWxmLCBjb25maWd1cmF0aW9uPUNvbmZpZ3VyYXRpb24oKSwgYnJh
bmNoPU5vbmUpOgotICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShjb25maWd1cmF0aW9uLCBDb25m
aWd1cmF0aW9uKToKLSAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcihmJ0V4cGVjdGVkIHR5cGUg
e0NvbmZpZ3VyYXRpb259LCBnb3Qge3R5cGUoY29uZmlndXJhdGlvbil9JykKLQotICAgICAgICBr
d2FyZ3MgPSBkaWN0KGJyYW5jaD1icmFuY2ggb3IgQ29tbWl0Q29udGV4dC5ERUZBVUxUX0JSQU5D
SF9LRVkpCi0gICAgICAgIGZvciBtZW1iZXIgaW4gQ29uZmlndXJhdGlvbi5SRVFVSVJFRF9NRU1C
RVJTICsgQ29uZmlndXJhdGlvbi5PUFRJT05BTF9NRU1CRVJTOgotICAgICAgICAgICAgaWYgZ2V0
YXR0cihjb25maWd1cmF0aW9uLCBtZW1iZXIpOgotICAgICAgICAgICAgICAgIGt3YXJnc1ttZW1i
ZXJdID0gZ2V0YXR0cihjb25maWd1cmF0aW9uLCBtZW1iZXIpCi0KLSAgICAgICAgaWYgJ3BsYXRm
b3JtJyBpbiBrd2FyZ3MgYW5kICd2ZXJzaW9uJyBpbiBrd2FyZ3M6Ci0gICAgICAgICAgICB0YWJs
ZSA9IHNlbGYuQnlQbGF0Zm9ybUFuZFZlcnNpb24KLSAgICAgICAgZWxpZiAncGxhdGZvcm0nIGlu
IGt3YXJnczoKLSAgICAgICAgICAgIHRhYmxlID0gc2VsZi5CeVBsYXRmb3JtCi0gICAgICAgIGVs
aWYgJ2FyY2hpdGVjdHVyZScgaW4ga3dhcmdzOgotICAgICAgICAgICAgdGFibGUgPSBzZWxmLkJ5
QXJjaGl0ZWN0dXJlCi0gICAgICAgIGVsaWYgJ21vZGVsJyBpbiBrd2FyZ3M6Ci0gICAgICAgICAg
ICB0YWJsZSA9IHNlbGYuQnlNb2RlbAotICAgICAgICBlbHNlOgotICAgICAgICAgICAgIyBQbGF0
Zm9ybXMgcmFyZWx5IGV4cGlyZSwgc28gd2UgY2FuIGRvIGEgZGVjZW50IGpvYiBvZiB3aWxkY2Fy
ZCBtYXRjaGluZyBleHBpcmVkIGNvbmZpZ3VyYXRpb25zCi0gICAgICAgICAgICAjIGlmIHdlIHRy
eSBhbGwgcGxhdGZvcm1zIGluIHRoZSBjYWNoZS4KLSAgICAgICAgICAgIHBsYXRmb3JtcyA9IHNl
dChbY29uZmlnLnBsYXRmb3JtIGZvciBjb25maWcgaW4gc2VsZi5zZWFyY2hfZm9yX3JlY2VudF9j
b25maWd1cmF0aW9uKGJyYW5jaD1icmFuY2gpXSkKLSAgICAgICAgICAgIHdpdGggc2VsZjoKLSAg
ICAgICAgICAgICAgICByZXN1bHQgPSBbXQotICAgICAgICAgICAgICAgIGZvciBwbGF0Zm9ybSBp
biBwbGF0Zm9ybXM6Ci0gICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24ucGxhdGZvcm0g
PSBwbGF0Zm9ybQotICAgICAgICAgICAgICAgICAgICByZXN1bHQuZXh0ZW5kKHNlbGYuc2VhcmNo
X2Zvcl9jb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24sIGJyYW5jaCkpCi0gICAgICAgICAgICAg
ICAgY29uZmlndXJhdGlvbi5wbGF0Zm9ybSA9IE5vbmUKLSAgICAgICAgICAgICAgICByZXR1cm4g
cmVzdWx0Ci0KLSAgICAgICAgd2l0aCBzZWxmOgotICAgICAgICAgICAgcmV0dXJuIFttb2RlbC50
b19jb25maWd1cmF0aW9uKCkgZm9yIG1vZGVsIGluIHNlbGYuY2Fzc2FuZHJhLnNlbGVjdF9mcm9t
X3RhYmxlKHRhYmxlLl9fdGFibGVfbmFtZV9fLCAqKmt3YXJncyldCi0KLSAgICBkZWYgc2VhcmNo
X2Zvcl9yZWNlbnRfY29uZmlndXJhdGlvbihzZWxmLCBjb25maWd1cmF0aW9uPUNvbmZpZ3VyYXRp
b24oKSwgYnJhbmNoPU5vbmUpOgotICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShjb25maWd1cmF0
aW9uLCBDb25maWd1cmF0aW9uKToKLSAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcihmJ0V4cGVj
dGVkIHR5cGUge0NvbmZpZ3VyYXRpb259LCBnb3Qge3R5cGUoY29uZmlndXJhdGlvbil9JykKLQot
ICAgICAgICBjb25maWd1cmF0aW9ucyA9IFtdCi0gICAgICAgIGZvciBrZXkgaW4gc2VsZi5yZWRp
cy5zY2FuX2l0ZXIoc2VsZi5fY29udmVydF90b19yZWRpc19rZXkoY29uZmlndXJhdGlvbiwgYnJh
bmNoIG9yIENvbW1pdENvbnRleHQuREVGQVVMVF9CUkFOQ0hfS0VZKSk6Ci0gICAgICAgICAgICBj
YW5kaWRhdGUgPSBDb25maWd1cmF0aW9uLmZyb21fanNvbihzZWxmLnJlZGlzLmdldChrZXkuZGVj
b2RlKCd1dGYtOCcpKS5kZWNvZGUoJ3V0Zi04JykpCi0gICAgICAgICAgICBpZiBjYW5kaWRhdGUg
PT0gY29uZmlndXJhdGlvbjoKLSAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9ucy5hcHBlbmQo
Y2FuZGlkYXRlKQotICAgICAgICByZXR1cm4gY29uZmlndXJhdGlvbnMKLQotICAgIGRlZiBpbnNl
cnRfcm93X3dpdGhfY29uZmlndXJhdGlvbihzZWxmLCB0YWJsZV9uYW1lLCBjb25maWd1cmF0aW9u
LCAqKmt3YXJncyk6Ci0gICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGNvbmZpZ3VyYXRpb24sIENv
bmZpZ3VyYXRpb24pOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKGYnRXhwZWN0ZWQgdHlw
ZSB7Q29uZmlndXJhdGlvbn0sIGdvdCB7dHlwZShjb25maWd1cmF0aW9uKX0nKQotICAgICAgICBp
ZiBub3QgY29uZmlndXJhdGlvbi5pc19jb21wbGV0ZSgpOgotICAgICAgICAgICAgcmFpc2UgVHlw
ZUVycm9yKGYnQ2Fubm90IGluc2VydCB0byB7dGFibGVfbmFtZX0gd2l0aCBhIHBhcnRpYWwgY29u
ZmlndXJhdGlvbicpCi0KLSAgICAgICAgd2l0aCBzZWxmOgotICAgICAgICAgICAgYXR0cmlidXRl
c19kaWN0ID0gT3JkZXJlZERpY3QoKQotICAgICAgICAgICAgZm9yIG1lbWJlciBpbiBDb25maWd1
cmF0aW9uLk9QVElPTkFMX01FTUJFUlM6Ci0gICAgICAgICAgICAgICAgaWYgZ2V0YXR0cihjb25m
aWd1cmF0aW9uLCBtZW1iZXIpIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgICAgICBhdHRy
aWJ1dGVzX2RpY3RbbWVtYmVyXSA9IGdldGF0dHIoY29uZmlndXJhdGlvbiwgbWVtYmVyKQotCi0g
ICAgICAgICAgICByZXR1cm4gc2VsZi5jYXNzYW5kcmEuaW5zZXJ0X3JvdygKLSAgICAgICAgICAg
ICAgICB0YWJsZV9uYW1lLAotICAgICAgICAgICAgICAgIHBsYXRmb3JtPWNvbmZpZ3VyYXRpb24u
cGxhdGZvcm0sIGlzX3NpbXVsYXRvcj1jb25maWd1cmF0aW9uLmlzX3NpbXVsYXRvciwKLSAgICAg
ICAgICAgICAgICB2ZXJzaW9uPWNvbmZpZ3VyYXRpb24udmVyc2lvbiwKLSAgICAgICAgICAgICAg
ICBhcmNoaXRlY3R1cmU9Y29uZmlndXJhdGlvbi5hcmNoaXRlY3R1cmUsCi0gICAgICAgICAgICAg
ICAgYXR0cmlidXRlcz1qc29uLmR1bXBzKGF0dHJpYnV0ZXNfZGljdCksCi0gICAgICAgICAgICAg
ICAgKiprd2FyZ3MpCi0KLSAgICBkZWYgc2VsZWN0X2Zyb21fdGFibGVfd2l0aF9jb25maWd1cmF0
aW9ucyhzZWxmLCB0YWJsZV9uYW1lLCBjb25maWd1cmF0aW9ucz1Ob25lLCBicmFuY2g9Tm9uZSwg
cmVjZW50PVRydWUsIGxpbWl0PTEwMCwgKiprd2FyZ3MpOgotICAgICAgICBpZiBub3QgaXNpbnN0
YW5jZShjb25maWd1cmF0aW9ucywgSXRlcmFibGUpOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVy
cm9yKCdFeHBlY3RlZCBjb25maWd1cmF0aW9ucyB0byBiZSBpdGVyYWJsZScpCi0gICAgICAgIGlm
IG5vdCBjb25maWd1cmF0aW9uczoKLSAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25zLmFwcGVuZChD
b25maWd1cmF0aW9uKCkpCi0KLSAgICAgICAgd2l0aCBzZWxmOgotICAgICAgICAgICAgY29tcGxl
dGVfY29uZmlndXJhdGlvbnMgPSBzZXQoKQotICAgICAgICAgICAgZm9yIGNvbmZpZyBpbiBjb25m
aWd1cmF0aW9uczoKLSAgICAgICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShjb25maWcsIENv
bmZpZ3VyYXRpb24pOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoZidFeHBl
Y3RlZCB0eXBlIHtDb25maWd1cmF0aW9ufSwgZ290IHt0eXBlKGNvbmZpZyl9JykKLSAgICAgICAg
ICAgICAgICBpZiBjb25maWcuaXNfY29tcGxldGUoKToKLSAgICAgICAgICAgICAgICAgICAgY29t
cGxldGVfY29uZmlndXJhdGlvbnMuYWRkKGNvbmZpZykKLSAgICAgICAgICAgICAgICBlbGlmIHJl
Y2VudDoKLSAgICAgICAgICAgICAgICAgICAgW2NvbXBsZXRlX2NvbmZpZ3VyYXRpb25zLmFkZChl
bGVtZW50KSBmb3IgZWxlbWVudCBpbiBzZWxmLnNlYXJjaF9mb3JfcmVjZW50X2NvbmZpZ3VyYXRp
b24oY29uZmlnLCBicmFuY2g9YnJhbmNoKV0KLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAg
ICAgICAgICAgICAgICBbY29tcGxldGVfY29uZmlndXJhdGlvbnMuYWRkKGVsZW1lbnQpIGZvciBl
bGVtZW50IGluIHNlbGYuc2VhcmNoX2Zvcl9jb25maWd1cmF0aW9uKGNvbmZpZywgYnJhbmNoPWJy
YW5jaCldCi0KLSAgICAgICAgICAgIHJlc3VsdHMgPSB7fQotICAgICAgICAgICAgZm9yIGNvbmZp
Z3VyYXRpb24gaW4gY29tcGxldGVfY29uZmlndXJhdGlvbnM6Ci0gICAgICAgICAgICAgICAgYXR0
cmlidXRlc19kaWN0ID0gT3JkZXJlZERpY3QoKQotICAgICAgICAgICAgICAgIGZvciBtZW1iZXIg
aW4gQ29uZmlndXJhdGlvbi5PUFRJT05BTF9NRU1CRVJTOgotICAgICAgICAgICAgICAgICAgICBp
ZiBnZXRhdHRyKGNvbmZpZ3VyYXRpb24sIG1lbWJlcikgaXMgbm90IE5vbmU6Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBhdHRyaWJ1dGVzX2RpY3RbbWVtYmVyXSA9IGdldGF0dHIoY29uZmlndXJh
dGlvbiwgbWVtYmVyKQotCi0gICAgICAgICAgICAgICAgcm93cyA9IHNlbGYuY2Fzc2FuZHJhLnNl
bGVjdF9mcm9tX3RhYmxlKAotICAgICAgICAgICAgICAgICAgICB0YWJsZV9uYW1lLAotICAgICAg
ICAgICAgICAgICAgICBwbGF0Zm9ybT1jb25maWd1cmF0aW9uLnBsYXRmb3JtLCBpc19zaW11bGF0
b3I9Y29uZmlndXJhdGlvbi5pc19zaW11bGF0b3IsCi0gICAgICAgICAgICAgICAgICAgIHZlcnNp
b249Y29uZmlndXJhdGlvbi52ZXJzaW9uLAotICAgICAgICAgICAgICAgICAgICBhcmNoaXRlY3R1
cmU9Y29uZmlndXJhdGlvbi5hcmNoaXRlY3R1cmUsCi0gICAgICAgICAgICAgICAgICAgIGF0dHJp
YnV0ZXM9anNvbi5kdW1wcyhhdHRyaWJ1dGVzX2RpY3QpLAotICAgICAgICAgICAgICAgICAgICBs
aW1pdD1saW1pdCwKLSAgICAgICAgICAgICAgICAgICAgYnJhbmNoPWJyYW5jaCBvciBDb21taXRD
b250ZXh0LkRFRkFVTFRfQlJBTkNIX0tFWSwKLSAgICAgICAgICAgICAgICAgICAgKiprd2FyZ3Mp
Ci0gICAgICAgICAgICAgICAgaWYgbGVuKHJvd3MpID09IDA6Ci0gICAgICAgICAgICAgICAgICAg
IGNvbnRpbnVlCi0KLSAgICAgICAgICAgICAgICBmb3Igcm93IGluIHJvd3M6Ci0gICAgICAgICAg
ICAgICAgICAgIGZ1bGxfY29uZmlnID0gcm93LnRvX2NvbmZpZ3VyYXRpb24oKQotICAgICAgICAg
ICAgICAgICAgICBpZiBub3QgcmVzdWx0cy5nZXQoZnVsbF9jb25maWcpOgotICAgICAgICAgICAg
ICAgICAgICAgICAgcmVzdWx0c1tmdWxsX2NvbmZpZ10gPSBbXQotICAgICAgICAgICAgICAgICAg
ICByZXN1bHRzW2Z1bGxfY29uZmlnXS5hcHBlbmQocm93KQotCi0gICAgICAgICAgICByZXR1cm4g
cmVzdWx0cwpJbmRleDogVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvY29uZmln
dXJhdGlvbl9jb250ZXh0X3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL3Jlc3VsdHNk
YnB5L3Jlc3VsdHNkYnB5L21vZGVsL2NvbmZpZ3VyYXRpb25fY29udGV4dF91bml0dGVzdC5weQko
cmV2aXNpb24gMjY1NTMxKQorKysgVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwv
Y29uZmlndXJhdGlvbl9jb250ZXh0X3VuaXR0ZXN0LnB5CShub25leGlzdGVudCkKQEAgLTEsMjQ1
ICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
LSMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQotIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotIyBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0j
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SCi0jIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0jIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksCi0jIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLWltcG9ydCB0
aW1lCi0KLWZyb20gY2Fzc2FuZHJhLmNxbGVuZ2luZSBpbXBvcnQgY29sdW1ucwotZnJvbSByZXN1
bHRzZGJweS5jb250cm9sbGVyLmNvbmZpZ3VyYXRpb24gaW1wb3J0IENvbmZpZ3VyYXRpb24KLWZy
b20gZmFrZXJlZGlzIGltcG9ydCBGYWtlU3RyaWN0UmVkaXMKLWZyb20gcmVkaXMgaW1wb3J0IFN0
cmljdFJlZGlzCi1mcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLmNhc3NhbmRyYV9jb250ZXh0IGltcG9y
dCBDYXNzYW5kcmFDb250ZXh0Ci1mcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLmNvbW1pdF9jb250ZXh0
IGltcG9ydCBDb21taXRDb250ZXh0Ci1mcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLmNvbmZpZ3VyYXRp
b25fY29udGV4dCBpbXBvcnQgQ29uZmlndXJhdGlvbkNvbnRleHQsIENsdXN0ZXJlZEJ5Q29uZmln
dXJhdGlvbgotZnJvbSByZXN1bHRzZGJweS5tb2RlbC5tb2NrX2Nhc3NhbmRyYV9jb250ZXh0IGlt
cG9ydCBNb2NrQ2Fzc2FuZHJhQ29udGV4dAotZnJvbSByZXN1bHRzZGJweS5tb2RlbC53YWl0X2Zv
cl9kb2NrZXJfdGVzdF9jYXNlIGltcG9ydCBXYWl0Rm9yRG9ja2VyVGVzdENhc2UKLQotCi1jbGFz
cyBDb25maWd1cmF0aW9uQ29udGV4dFRlc3QoV2FpdEZvckRvY2tlclRlc3RDYXNlKToKLSAgICBL
RVlTUEFDRSA9ICdjb25maWd1cmF0aW9uX2NvbnRleHRfdGVzdF9rZXlzcGFjZScKLSAgICBDT05G
SUdVUkFUSU9OUyA9IFsKLSAgICAgICAgQ29uZmlndXJhdGlvbihwbGF0Zm9ybT0nTWFjJywgdmVy
c2lvbj0nMTAuMTMuMCcsIHNkaz0nMTdBNDA1JywgaXNfc2ltdWxhdG9yPUZhbHNlLCBhcmNoaXRl
Y3R1cmU9J3g4Nl82NCcsIHN0eWxlPSdEZWJ1ZycsIGZsYXZvcj0nd2sxJyksCi0gICAgICAgIENv
bmZpZ3VyYXRpb24ocGxhdGZvcm09J01hYycsIHZlcnNpb249JzEwLjEzLjAnLCBzZGs9JzE3QTQw
NScsIGlzX3NpbXVsYXRvcj1GYWxzZSwgYXJjaGl0ZWN0dXJlPSd4ODZfNjQnLCBzdHlsZT0nRGVi
dWcnLCBmbGF2b3I9J3drMicpLAotICAgICAgICBDb25maWd1cmF0aW9uKHBsYXRmb3JtPSdNYWMn
LCB2ZXJzaW9uPScxMC4xMy4wJywgc2RrPScxN0E0MDUnLCBpc19zaW11bGF0b3I9RmFsc2UsIGFy
Y2hpdGVjdHVyZT0neDg2XzY0Jywgc3R5bGU9J1JlbGVhc2UnLCBmbGF2b3I9J3drMScpLAotICAg
ICAgICBDb25maWd1cmF0aW9uKHBsYXRmb3JtPSdNYWMnLCB2ZXJzaW9uPScxMC4xMy4wJywgc2Rr
PScxN0E0MDUnLCBpc19zaW11bGF0b3I9RmFsc2UsIGFyY2hpdGVjdHVyZT0neDg2XzY0Jywgc3R5
bGU9J1JlbGVhc2UnLCBmbGF2b3I9J3drMicpLAotICAgICAgICBDb25maWd1cmF0aW9uKHBsYXRm
b3JtPSdNYWMnLCB2ZXJzaW9uPScxMC4xMy4wJywgc2RrPScxN0E0MDUnLCBpc19zaW11bGF0b3I9
RmFsc2UsIGFyY2hpdGVjdHVyZT0neDg2XzY0Jywgc3R5bGU9J0FzYW4nLCBmbGF2b3I9J3drMScp
LAotICAgICAgICBDb25maWd1cmF0aW9uKHBsYXRmb3JtPSdNYWMnLCB2ZXJzaW9uPScxMC4xMy4w
Jywgc2RrPScxN0E0MDUnLCBpc19zaW11bGF0b3I9RmFsc2UsIGFyY2hpdGVjdHVyZT0neDg2XzY0
Jywgc3R5bGU9J0FzYW4nLCBmbGF2b3I9J3drMicpLAotICAgICAgICBDb25maWd1cmF0aW9uKHBs
YXRmb3JtPSdNYWMnLCB2ZXJzaW9uPScxMC4xNC4wJywgc2RrPScxOEEzOTEnLCBpc19zaW11bGF0
b3I9RmFsc2UsIGFyY2hpdGVjdHVyZT0neDg2XzY0Jywgc3R5bGU9J0RlYnVnJywgZmxhdm9yPSd3
azEnKSwKLSAgICAgICAgQ29uZmlndXJhdGlvbihwbGF0Zm9ybT0nTWFjJywgdmVyc2lvbj0nMTAu
MTQuMCcsIHNkaz0nMThBMzkxJywgaXNfc2ltdWxhdG9yPUZhbHNlLCBhcmNoaXRlY3R1cmU9J3g4
Nl82NCcsIHN0eWxlPSdEZWJ1ZycsIGZsYXZvcj0nd2syJyksCi0gICAgICAgIENvbmZpZ3VyYXRp
b24ocGxhdGZvcm09J01hYycsIHZlcnNpb249JzEwLjE0LjAnLCBzZGs9JzE4QTM5MScsIGlzX3Np
bXVsYXRvcj1GYWxzZSwgYXJjaGl0ZWN0dXJlPSd4ODZfNjQnLCBzdHlsZT0nUmVsZWFzZScsIGZs
YXZvcj0nd2sxJyksCi0gICAgICAgIENvbmZpZ3VyYXRpb24ocGxhdGZvcm09J01hYycsIHZlcnNp
b249JzEwLjE0LjAnLCBzZGs9JzE4QTM5MScsIGlzX3NpbXVsYXRvcj1GYWxzZSwgYXJjaGl0ZWN0
dXJlPSd4ODZfNjQnLCBzdHlsZT0nUmVsZWFzZScsIGZsYXZvcj0nd2syJyksCi0gICAgICAgIENv
bmZpZ3VyYXRpb24ocGxhdGZvcm09J01hYycsIHZlcnNpb249JzEwLjE0LjAnLCBzZGs9JzE4QTM5
MScsIGlzX3NpbXVsYXRvcj1GYWxzZSwgYXJjaGl0ZWN0dXJlPSd4ODZfNjQnLCBzdHlsZT0nQXNh
bicsIGZsYXZvcj0nd2sxJyksCi0gICAgICAgIENvbmZpZ3VyYXRpb24ocGxhdGZvcm09J01hYycs
IHZlcnNpb249JzEwLjE0LjAnLCBzZGs9JzE4QTM5MScsIGlzX3NpbXVsYXRvcj1GYWxzZSwgYXJj
aGl0ZWN0dXJlPSd4ODZfNjQnLCBzdHlsZT0nQXNhbicsIGZsYXZvcj0nd2syJyksCi0gICAgICAg
IENvbmZpZ3VyYXRpb24ocGxhdGZvcm09J2lPUycsIHZlcnNpb249JzExLjAuMCcsIHNkaz0nMTVB
NDMyJywgaXNfc2ltdWxhdG9yPVRydWUsIGFyY2hpdGVjdHVyZT0neDg2XzY0Jywgc3R5bGU9J0Rl
YnVnJyksCi0gICAgICAgIENvbmZpZ3VyYXRpb24ocGxhdGZvcm09J2lPUycsIHZlcnNpb249JzEx
LjAuMCcsIHNkaz0nMTVBNDMyJywgaXNfc2ltdWxhdG9yPVRydWUsIGFyY2hpdGVjdHVyZT0neDg2
XzY0Jywgc3R5bGU9J1JlbGVhc2UnKSwKLSAgICAgICAgQ29uZmlndXJhdGlvbihwbGF0Zm9ybT0n
aU9TJywgdmVyc2lvbj0nMTEuMC4wJywgc2RrPScxNUE0MzInLCBpc19zaW11bGF0b3I9VHJ1ZSwg
YXJjaGl0ZWN0dXJlPSd4ODZfNjQnLCBzdHlsZT0nQXNhbicpLAotICAgICAgICBDb25maWd1cmF0
aW9uKHBsYXRmb3JtPSdpT1MnLCB2ZXJzaW9uPScxMS4wLjAnLCBzZGs9JzE1QTQzMicsIGlzX3Np
bXVsYXRvcj1GYWxzZSwgYXJjaGl0ZWN0dXJlPSdhcm02NCcsIG1vZGVsPSdpUGhvbmUgOCcsIHN0
eWxlPSdEZWJ1ZycpLAotICAgICAgICBDb25maWd1cmF0aW9uKHBsYXRmb3JtPSdpT1MnLCB2ZXJz
aW9uPScxMS4wLjAnLCBzZGs9JzE1QTQzMicsIGlzX3NpbXVsYXRvcj1GYWxzZSwgYXJjaGl0ZWN0
dXJlPSdhcm02NCcsIG1vZGVsPSdpUGhvbmUgOCcsIHN0eWxlPSdSZWxlYXNlJyksCi0gICAgICAg
IENvbmZpZ3VyYXRpb24ocGxhdGZvcm09J2lPUycsIHZlcnNpb249JzExLjAuMCcsIHNkaz0nMTVB
NDMyJywgaXNfc2ltdWxhdG9yPUZhbHNlLCBhcmNoaXRlY3R1cmU9J2FybTY0JywgbW9kZWw9J2lQ
aG9uZSA4Jywgc3R5bGU9J0FzYW4nKSwKLSAgICAgICAgQ29uZmlndXJhdGlvbihwbGF0Zm9ybT0n
aU9TJywgdmVyc2lvbj0nMTIuMC4wJywgc2RrPScxNkE0MDQnLCBpc19zaW11bGF0b3I9VHJ1ZSwg
YXJjaGl0ZWN0dXJlPSd4ODZfNjQnLCBzdHlsZT0nRGVidWcnKSwKLSAgICAgICAgQ29uZmlndXJh
dGlvbihwbGF0Zm9ybT0naU9TJywgdmVyc2lvbj0nMTIuMC4wJywgc2RrPScxNkE0MDQnLCBpc19z
aW11bGF0b3I9VHJ1ZSwgYXJjaGl0ZWN0dXJlPSd4ODZfNjQnLCBzdHlsZT0nUmVsZWFzZScpLAot
ICAgICAgICBDb25maWd1cmF0aW9uKHBsYXRmb3JtPSdpT1MnLCB2ZXJzaW9uPScxMi4wLjAnLCBz
ZGs9JzE2QTQwNCcsIGlzX3NpbXVsYXRvcj1UcnVlLCBhcmNoaXRlY3R1cmU9J3g4Nl82NCcsIHN0
eWxlPSdBc2FuJyksCi0gICAgICAgIENvbmZpZ3VyYXRpb24ocGxhdGZvcm09J2lPUycsIHZlcnNp
b249JzEyLjAuMCcsIHNkaz0nMTZBNDA0JywgaXNfc2ltdWxhdG9yPUZhbHNlLCBhcmNoaXRlY3R1
cmU9J2FybTY0JywgbW9kZWw9J2lQaG9uZSBYcycsIHN0eWxlPSdEZWJ1ZycpLAotICAgICAgICBD
b25maWd1cmF0aW9uKHBsYXRmb3JtPSdpT1MnLCB2ZXJzaW9uPScxMi4wLjAnLCBzZGs9JzE2QTQw
NCcsIGlzX3NpbXVsYXRvcj1GYWxzZSwgYXJjaGl0ZWN0dXJlPSdhcm02NCcsIG1vZGVsPSdpUGhv
bmUgOCcsIHN0eWxlPSdSZWxlYXNlJyksCi0gICAgICAgIENvbmZpZ3VyYXRpb24ocGxhdGZvcm09
J2lPUycsIHZlcnNpb249JzEyLjAuMCcsIHNkaz0nMTZBNDA0JywgaXNfc2ltdWxhdG9yPUZhbHNl
LCBhcmNoaXRlY3R1cmU9J2FybTY0JywgbW9kZWw9J2lQaG9uZSBYcycsIHN0eWxlPSdBc2FuJyks
Ci0gICAgXQotCi0gICAgZGVmIGluaXRfZGF0YWJhc2Uoc2VsZiwgcmVkaXM9U3RyaWN0UmVkaXMs
IGNhc3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0KToKLSAgICAgICAgY2Fzc2FuZHJhLmRyb3Bfa2V5
c3BhY2Uoa2V5c3BhY2U9c2VsZi5LRVlTUEFDRSkKLSAgICAgICAgc2VsZi5kYXRhYmFzZSA9IENv
bmZpZ3VyYXRpb25Db250ZXh0KAotICAgICAgICAgICAgcmVkaXM9cmVkaXMoKSwKLSAgICAgICAg
ICAgIGNhc3NhbmRyYT1jYXNzYW5kcmEoa2V5c3BhY2U9c2VsZi5LRVlTUEFDRSwgY3JlYXRlX2tl
eXNwYWNlPVRydWUpLAotICAgICAgICApCi0KLSAgICBkZWYgcmVnaXN0ZXJfY29uZmlndXJhdGlv
bnMoc2VsZik6Ci0gICAgICAgIGN1cnJlbnQgPSB0aW1lLnRpbWUoKQotICAgICAgICBvbGQgPSBj
dXJyZW50IC0gNjAgKiA2MCAqIDI0ICogMjEKLQotICAgICAgICBmb3IgY29uZmlndXJhdGlvbiBp
biBzZWxmLkNPTkZJR1VSQVRJT05TOgotICAgICAgICAgICAgaWYgKGNvbmZpZ3VyYXRpb24ucGxh
dGZvcm0gPT0gJ01hYycgYW5kIGNvbmZpZ3VyYXRpb24udmVyc2lvbiA8PSBDb25maWd1cmF0aW9u
LnZlcnNpb25fdG9faW50ZWdlcignMTAuMTMnKSkgXAotICAgICAgICAgICAgICAgb3IgKGNvbmZp
Z3VyYXRpb24ucGxhdGZvcm0gPT0gJ2lPUycgYW5kIGNvbmZpZ3VyYXRpb24udmVyc2lvbiA8PSBD
b25maWd1cmF0aW9uLnZlcnNpb25fdG9faW50ZWdlcignMTEnKSk6Ci0gICAgICAgICAgICAgICAg
c2VsZi5kYXRhYmFzZS5yZWdpc3Rlcl9jb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24sIGJyYW5j
aD1Ob25lLCB0aW1lc3RhbXA9b2xkKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAg
ICBzZWxmLmRhdGFiYXNlLnJlZ2lzdGVyX2NvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbiwgYnJh
bmNoPU5vbmUsIHRpbWVzdGFtcD1jdXJyZW50KQotCi0gICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2Fz
ZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNz
YW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCi0gICAgZGVmIHRlc3RfaW52YWxpZF9jb25maWd1
cmF0aW9uKHNlbGYsIHJlZGlzPVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4
dCk6Ci0gICAgICAgIHNlbGYuaW5pdF9kYXRhYmFzZShyZWRpcz1yZWRpcywgY2Fzc2FuZHJhPWNh
c3NhbmRyYSkKLQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6Ci0g
ICAgICAgICAgICBzZWxmLmRhdGFiYXNlLnJlZ2lzdGVyX2NvbmZpZ3VyYXRpb24oJ2ludmFsaWQg
b2JqZWN0JykKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgotICAg
ICAgICAgICAgc2VsZi5kYXRhYmFzZS5yZWdpc3Rlcl9jb25maWd1cmF0aW9uKENvbmZpZ3VyYXRp
b24ocGxhdGZvcm09J2lPUycpKQotCi0gICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lm
X25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9j
a0Nhc3NhbmRyYUNvbnRleHQpCi0gICAgZGVmIHRlc3Rfbm9fc3R5bGVfY29uZmlndXJhdGlvbihz
ZWxmLCByZWRpcz1TdHJpY3RSZWRpcywgY2Fzc2FuZHJhPUNhc3NhbmRyYUNvbnRleHQpOgotICAg
ICAgICBzZWxmLmluaXRfZGF0YWJhc2UocmVkaXM9cmVkaXMsIGNhc3NhbmRyYT1jYXNzYW5kcmEp
Ci0KLSAgICAgICAgc2VsZi5kYXRhYmFzZS5yZWdpc3Rlcl9jb25maWd1cmF0aW9uKENvbmZpZ3Vy
YXRpb24oCi0gICAgICAgICAgICBwbGF0Zm9ybT0nTWFjJywgdmVyc2lvbj0nMTAuMTMuMCcsIHNk
az0nMTdBNDA1JywgaXNfc2ltdWxhdG9yPUZhbHNlLCBhcmNoaXRlY3R1cmU9J3g4Nl82NCcsCi0g
ICAgICAgICkpCi0KLSAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2Vy
KG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJh
Q29udGV4dCkKLSAgICBkZWYgdGVzdF9jb25maWd1cmF0aW9uX2J5X3BsYXRmb3JtKHNlbGYsIHJl
ZGlzPVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCk6Ci0gICAgICAgIHNl
bGYuaW5pdF9kYXRhYmFzZShyZWRpcz1yZWRpcywgY2Fzc2FuZHJhPWNhc3NhbmRyYSkKLSAgICAg
ICAgc2VsZi5yZWdpc3Rlcl9jb25maWd1cmF0aW9ucygpCi0KLSAgICAgICAgY29uZmlndXJhdGlv
bl90b19zZWFyY2hfZm9yID0gQ29uZmlndXJhdGlvbihwbGF0Zm9ybT0nTWFjJywgc3R5bGU9J0Rl
YnVnJykKLSAgICAgICAgbWF0Y2hpbmdfY29uZmlndXJhdGlvbnMgPSBzZWxmLmRhdGFiYXNlLnNl
YXJjaF9mb3JfY29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uX3RvX3NlYXJjaF9mb3IpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoNCwgbGVuKG1hdGNoaW5nX2NvbmZpZ3VyYXRpb25zKSkKLSAg
ICAgICAgZm9yIGNvbmZpZyBpbiBtYXRjaGluZ19jb25maWd1cmF0aW9uczoKLSAgICAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoY29uZmlndXJhdGlvbl90b19zZWFyY2hfZm9yLCBjb25maWcpCi0K
LSAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9
RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKLSAg
ICBkZWYgdGVzdF9jb25maWd1cmF0aW9uX2J5X3BsYXRmb3JtX3dpdGhfZmxhdm9yKHNlbGYsIHJl
ZGlzPVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCk6Ci0gICAgICAgIHNl
bGYuaW5pdF9kYXRhYmFzZShyZWRpcz1yZWRpcywgY2Fzc2FuZHJhPWNhc3NhbmRyYSkKLSAgICAg
ICAgc2VsZi5yZWdpc3Rlcl9jb25maWd1cmF0aW9ucygpCi0KLSAgICAgICAgY29uZmlndXJhdGlv
bl90b19zZWFyY2hfZm9yID0gQ29uZmlndXJhdGlvbihwbGF0Zm9ybT0nTWFjJywgc3R5bGU9J0Rl
YnVnJywgZmxhdm9yPSd3azEnKQotICAgICAgICBtYXRjaGluZ19jb25maWd1cmF0aW9ucyA9IHNl
bGYuZGF0YWJhc2Uuc2VhcmNoX2Zvcl9jb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb25fdG9fc2Vh
cmNoX2ZvcikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyLCBsZW4obWF0Y2hpbmdfY29uZmln
dXJhdGlvbnMpKQotICAgICAgICBmb3IgY29uZmlnIGluIG1hdGNoaW5nX2NvbmZpZ3VyYXRpb25z
OgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb25maWd1cmF0aW9uX3RvX3NlYXJjaF9m
b3IsIGNvbmZpZykKLQotICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2Nr
ZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5k
cmFDb250ZXh0KQotICAgIGRlZiB0ZXN0X2NvbmZpZ3VyYXRpb25fYnlfcGxhdGZvcm1fYW5kX3Zl
cnNpb24oc2VsZiwgcmVkaXM9U3RyaWN0UmVkaXMsIGNhc3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0
KToKLSAgICAgICAgc2VsZi5pbml0X2RhdGFiYXNlKHJlZGlzPXJlZGlzLCBjYXNzYW5kcmE9Y2Fz
c2FuZHJhKQotICAgICAgICBzZWxmLnJlZ2lzdGVyX2NvbmZpZ3VyYXRpb25zKCkKLQotICAgICAg
ICBjb25maWd1cmF0aW9uX3RvX3NlYXJjaF9mb3IgPSBDb25maWd1cmF0aW9uKHBsYXRmb3JtPSdN
YWMnLCB2ZXJzaW9uPScxMC4xMycsIHN0eWxlPSdSZWxlYXNlJykKLSAgICAgICAgbWF0Y2hpbmdf
Y29uZmlndXJhdGlvbnMgPSBzZWxmLmRhdGFiYXNlLnNlYXJjaF9mb3JfY29uZmlndXJhdGlvbihj
b25maWd1cmF0aW9uX3RvX3NlYXJjaF9mb3IpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMiwg
bGVuKG1hdGNoaW5nX2NvbmZpZ3VyYXRpb25zKSkKLSAgICAgICAgZm9yIGNvbmZpZyBpbiBtYXRj
aGluZ19jb25maWd1cmF0aW9uczoKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29uZmln
dXJhdGlvbl90b19zZWFyY2hfZm9yLCBjb25maWcpCi0KLSAgICBAV2FpdEZvckRvY2tlclRlc3RD
YXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nh
c3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKLSAgICBkZWYgdGVzdF9jb25maWd1cmF0aW9u
X2J5X21vZGVsKHNlbGYsIHJlZGlzPVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29u
dGV4dCk6Ci0gICAgICAgIHNlbGYuaW5pdF9kYXRhYmFzZShyZWRpcz1yZWRpcywgY2Fzc2FuZHJh
PWNhc3NhbmRyYSkKLSAgICAgICAgc2VsZi5yZWdpc3Rlcl9jb25maWd1cmF0aW9ucygpCi0gICAg
ICAgIGNvbmZpZ3VyYXRpb25fdG9fc2VhcmNoX2ZvciA9IENvbmZpZ3VyYXRpb24obW9kZWw9J2lQ
aG9uZSA4JykKLSAgICAgICAgbWF0Y2hpbmdfY29uZmlndXJhdGlvbnMgPSBzZWxmLmRhdGFiYXNl
LnNlYXJjaF9mb3JfY29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uX3RvX3NlYXJjaF9mb3IpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoNCwgbGVuKG1hdGNoaW5nX2NvbmZpZ3VyYXRpb25zKSkK
LSAgICAgICAgZm9yIGNvbmZpZyBpbiBtYXRjaGluZ19jb25maWd1cmF0aW9uczoKLSAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29uZmlndXJhdGlvbl90b19zZWFyY2hfZm9yLCBjb25maWcp
Ci0KLSAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVk
aXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkK
LSAgICBkZWYgdGVzdF9jb25maWd1cmF0aW9uX2J5X2FyY2hpdGVjdHVyZShzZWxmLCByZWRpcz1T
dHJpY3RSZWRpcywgY2Fzc2FuZHJhPUNhc3NhbmRyYUNvbnRleHQpOgotICAgICAgICBzZWxmLmlu
aXRfZGF0YWJhc2UocmVkaXM9cmVkaXMsIGNhc3NhbmRyYT1jYXNzYW5kcmEpCi0gICAgICAgIHNl
bGYucmVnaXN0ZXJfY29uZmlndXJhdGlvbnMoKQotCi0gICAgICAgIGNvbmZpZ3VyYXRpb25fdG9f
c2VhcmNoX2ZvciA9IENvbmZpZ3VyYXRpb24oYXJjaGl0ZWN0dXJlPSd4ODZfNjQnLCBzdHlsZT0n
UmVsZWFzZScpCi0gICAgICAgIG1hdGNoaW5nX2NvbmZpZ3VyYXRpb25zID0gc2VsZi5kYXRhYmFz
ZS5zZWFyY2hfZm9yX2NvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbl90b19zZWFyY2hfZm9yKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDYsIGxlbihtYXRjaGluZ19jb25maWd1cmF0aW9ucykp
Ci0gICAgICAgIGZvciBjb25maWcgaW4gbWF0Y2hpbmdfY29uZmlndXJhdGlvbnM6Ci0gICAgICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbmZpZ3VyYXRpb25fdG9fc2VhcmNoX2ZvciwgY29uZmln
KQotCi0gICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3Jl
ZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQp
Ci0gICAgZGVmIHRlc3RfcmVjZW50X2NvbmZpZ3VyYXRpb25zKHNlbGYsIHJlZGlzPVN0cmljdFJl
ZGlzLCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCk6Ci0gICAgICAgIHNlbGYuaW5pdF9kYXRh
YmFzZShyZWRpcz1yZWRpcywgY2Fzc2FuZHJhPWNhc3NhbmRyYSkKLSAgICAgICAgc2VsZi5yZWdp
c3Rlcl9jb25maWd1cmF0aW9ucygpCi0KLSAgICAgICAgcmVjZW50X2NvbmZpZ3VyYXRpb25zID0g
c2VsZi5kYXRhYmFzZS5zZWFyY2hfZm9yX3JlY2VudF9jb25maWd1cmF0aW9uKCkKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgxMiwgbGVuKHJlY2VudF9jb25maWd1cmF0aW9ucykpCi0KLSAgICBA
V2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0
cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKLSAgICBkZWYg
dGVzdF9leHBpcmVkX2NvbmZpZ3VyYXRpb25zKHNlbGYsIHJlZGlzPVN0cmljdFJlZGlzLCBjYXNz
YW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCk6Ci0gICAgICAgIHNlbGYuaW5pdF9kYXRhYmFzZShyZWRp
cz1yZWRpcywgY2Fzc2FuZHJhPWNhc3NhbmRyYSkKLSAgICAgICAgc2VsZi5yZWdpc3Rlcl9jb25m
aWd1cmF0aW9ucygpCi0KLSAgICAgICAgcmVjZW50X2NvbmZpZ3VyYXRpb25zID0gc2VsZi5kYXRh
YmFzZS5zZWFyY2hfZm9yX2NvbmZpZ3VyYXRpb24oKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KDI0LCBsZW4ocmVjZW50X2NvbmZpZ3VyYXRpb25zKSkKLQotICAgIEBXYWl0Rm9yRG9ja2VyVGVz
dENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tf
Y2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQotICAgIGRlZiB0ZXN0X3JlY2VudF9jb25m
aWd1cmF0aW9uc19jb25zdHJhaW5lZChzZWxmLCByZWRpcz1TdHJpY3RSZWRpcywgY2Fzc2FuZHJh
PUNhc3NhbmRyYUNvbnRleHQpOgotICAgICAgICBzZWxmLmluaXRfZGF0YWJhc2UocmVkaXM9cmVk
aXMsIGNhc3NhbmRyYT1jYXNzYW5kcmEpCi0gICAgICAgIHNlbGYucmVnaXN0ZXJfY29uZmlndXJh
dGlvbnMoKQotCi0gICAgICAgIGNvbmZpZ3VyYXRpb25fdG9fc2VhcmNoX2ZvciA9IENvbmZpZ3Vy
YXRpb24oYXJjaGl0ZWN0dXJlPSdhcm02NCcsIHN0eWxlPSdSZWxlYXNlJykKLSAgICAgICAgbWF0
Y2hpbmdfY29uZmlndXJhdGlvbnMgPSBzZWxmLmRhdGFiYXNlLnNlYXJjaF9mb3JfcmVjZW50X2Nv
bmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbl90b19zZWFyY2hfZm9yKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKDEsIGxlbihtYXRjaGluZ19jb25maWd1cmF0aW9ucykpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwobWF0Y2hpbmdfY29uZmlndXJhdGlvbnNbMF0sIGNvbmZpZ3VyYXRpb25fdG9f
c2VhcmNoX2ZvcikKLQotICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2Nr
ZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5k
cmFDb250ZXh0KQotICAgIGRlZiB0ZXN0X3JlY2VudF9jb25maWd1cmF0aW9uc19jb25zdHJhaW5l
ZF9ieV92ZXJzaW9uKHNlbGYsIHJlZGlzPVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fzc2FuZHJh
Q29udGV4dCk6Ci0gICAgICAgIHNlbGYuaW5pdF9kYXRhYmFzZShyZWRpcz1yZWRpcywgY2Fzc2Fu
ZHJhPWNhc3NhbmRyYSkKLSAgICAgICAgc2VsZi5yZWdpc3Rlcl9jb25maWd1cmF0aW9ucygpCi0K
LSAgICAgICAgY29uZmlndXJhdGlvbl90b19zZWFyY2hfZm9yID0gQ29uZmlndXJhdGlvbih2ZXJz
aW9uPScxMicsIGlzX3NpbXVsYXRvcj1UcnVlKQotICAgICAgICBtYXRjaGluZ19jb25maWd1cmF0
aW9ucyA9IHNlbGYuZGF0YWJhc2Uuc2VhcmNoX2Zvcl9yZWNlbnRfY29uZmlndXJhdGlvbihjb25m
aWd1cmF0aW9uX3RvX3NlYXJjaF9mb3IpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMywgbGVu
KG1hdGNoaW5nX2NvbmZpZ3VyYXRpb25zKSkKLSAgICAgICAgZm9yIGNvbmZpZyBpbiBtYXRjaGlu
Z19jb25maWd1cmF0aW9uczoKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29uZmlndXJh
dGlvbl90b19zZWFyY2hfZm9yLCBjb25maWcpCi0KLSAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNl
Lm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3Nh
bmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKLSAgICBkZWYgdGVzdF9yZXBvcHVsYXRlX3JlY2Vu
dChzZWxmLCByZWRpcz1TdHJpY3RSZWRpcywgY2Fzc2FuZHJhPUNhc3NhbmRyYUNvbnRleHQpOgot
ICAgICAgICBzZWxmLmluaXRfZGF0YWJhc2UocmVkaXM9cmVkaXMsIGNhc3NhbmRyYT1jYXNzYW5k
cmEpCi0gICAgICAgIHNlbGYucmVnaXN0ZXJfY29uZmlndXJhdGlvbnMoKQotCi0gICAgICAgIHNl
bGYuZGF0YWJhc2UucmVkaXMuZmx1c2hkYigpCi0KLSAgICAgICAgZGF0YWJhc2UgPSBDb25maWd1
cmF0aW9uQ29udGV4dChyZWRpcz1zZWxmLmRhdGFiYXNlLnJlZGlzLCBjYXNzYW5kcmE9c2VsZi5k
YXRhYmFzZS5jYXNzYW5kcmEpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMTIsIGxlbihkYXRh
YmFzZS5zZWFyY2hfZm9yX3JlY2VudF9jb25maWd1cmF0aW9uKCkpKQotCi0gICAgQFdhaXRGb3JE
b2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRp
cywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCi0gICAgZGVmIHRlc3RfcGFy
dGl0aW9uX2J5X2NvbmZpZ3VyYXRpb24oc2VsZiwgcmVkaXM9U3RyaWN0UmVkaXMsIGNhc3NhbmRy
YT1DYXNzYW5kcmFDb250ZXh0KToKLSAgICAgICAgc2VsZi5pbml0X2RhdGFiYXNlKHJlZGlzPXJl
ZGlzLCBjYXNzYW5kcmE9Y2Fzc2FuZHJhKQotICAgICAgICBzZWxmLnJlZ2lzdGVyX2NvbmZpZ3Vy
YXRpb25zKCkKLQotICAgICAgICBjbGFzcyBFeGFtcGxlTW9kZWwoQ2x1c3RlcmVkQnlDb25maWd1
cmF0aW9uKToKLSAgICAgICAgICAgIF9fdGFibGVfbmFtZV9fID0gJ2V4YW1wbGVfdGFibGUnCi0g
ICAgICAgICAgICBicmFuY2ggPSBjb2x1bW5zLlRleHQocGFydGl0aW9uX2tleT1UcnVlLCByZXF1
aXJlZD1UcnVlKQotICAgICAgICAgICAgaW5kZXggPSBjb2x1bW5zLkludGVnZXIocHJpbWFyeV9r
ZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkKLSAgICAgICAgICAgIHNkayA9IGNvbHVtbnMuVGV4dChw
cmltYXJ5X2tleT1UcnVlLCByZXF1aXJlZD1UcnVlKQotICAgICAgICAgICAganNvbiA9IGNvbHVt
bnMuVGV4dCgpCi0KLSAgICAgICAgd2l0aCBzZWxmLmRhdGFiYXNlOgotICAgICAgICAgICAgc2Vs
Zi5kYXRhYmFzZS5jYXNzYW5kcmEuY3JlYXRlX3RhYmxlKEV4YW1wbGVNb2RlbCkKLSAgICAgICAg
ICAgIGZvciBjb25maWd1cmF0aW9uIGluIHNlbGYuQ09ORklHVVJBVElPTlM6Ci0gICAgICAgICAg
ICAgICAgZm9yIGkgaW4gcmFuZ2UoNSk6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuZGF0YWJh
c2UuaW5zZXJ0X3Jvd193aXRoX2NvbmZpZ3VyYXRpb24oRXhhbXBsZU1vZGVsLl9fdGFibGVfbmFt
ZV9fLCBjb25maWd1cmF0aW9uLCBicmFuY2g9Q29tbWl0Q29udGV4dC5ERUZBVUxUX0JSQU5DSF9L
RVksIGluZGV4PWksIHNkaz1jb25maWd1cmF0aW9uLnNkaywganNvbj1jb25maWd1cmF0aW9uLnRv
X2pzb24oKSkKLQotICAgICAgICAgICAgZm9yIGNvbmZpZ3VyYXRpb24gaW4gc2VsZi5DT05GSUdV
UkFUSU9OUzoKLSAgICAgICAgICAgICAgICByZXN1bHQgPSBzZWxmLmRhdGFiYXNlLnNlbGVjdF9m
cm9tX3RhYmxlX3dpdGhfY29uZmlndXJhdGlvbnMoRXhhbXBsZU1vZGVsLl9fdGFibGVfbmFtZV9f
LCBbY29uZmlndXJhdGlvbl0sIGluZGV4PTIpLmdldChjb25maWd1cmF0aW9uLCBbXSkKLSAgICAg
ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihyZXN1bHQpLCBmJ1NlYXJjaGluZyBi
eSB7Y29uZmlndXJhdGlvbn0gZmFpbGVkLCBmb3VuZCB7bGVuKHJlc3VsdCl9IGVsZW1lbnRzIGFu
ZCBleHBlY3RlZCAxJykKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdFsw
XS5qc29uLCBjb25maWd1cmF0aW9uLnRvX2pzb24oKSkKLQotICAgIEBXYWl0Rm9yRG9ja2VyVGVz
dENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tf
Y2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQotICAgIGRlZiB0ZXN0X3BhcnRpdGlvbl9i
eV9wYXJ0aWFsX2NvbmZpZ3VyYXRpb24oc2VsZiwgcmVkaXM9U3RyaWN0UmVkaXMsIGNhc3NhbmRy
YT1DYXNzYW5kcmFDb250ZXh0KToKLSAgICAgICAgc2VsZi5pbml0X2RhdGFiYXNlKHJlZGlzPXJl
ZGlzLCBjYXNzYW5kcmE9Y2Fzc2FuZHJhKQotICAgICAgICBzZWxmLnJlZ2lzdGVyX2NvbmZpZ3Vy
YXRpb25zKCkKLQotICAgICAgICBjbGFzcyBFeGFtcGxlTW9kZWwoQ2x1c3RlcmVkQnlDb25maWd1
cmF0aW9uKToKLSAgICAgICAgICAgIF9fdGFibGVfbmFtZV9fID0gJ2V4YW1wbGVfdGFibGUnCi0g
ICAgICAgICAgICBicmFuY2ggPSBjb2x1bW5zLlRleHQocGFydGl0aW9uX2tleT1UcnVlLCByZXF1
aXJlZD1UcnVlKQotICAgICAgICAgICAgaW5kZXggPSBjb2x1bW5zLkludGVnZXIocHJpbWFyeV9r
ZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkKLSAgICAgICAgICAgIGpzb24gPSBjb2x1bW5zLlRleHQo
KQotCi0gICAgICAgIHdpdGggc2VsZi5kYXRhYmFzZToKLSAgICAgICAgICAgIHNlbGYuZGF0YWJh
c2UuY2Fzc2FuZHJhLmNyZWF0ZV90YWJsZShFeGFtcGxlTW9kZWwpCi0gICAgICAgICAgICBmb3Ig
Y29uZmlndXJhdGlvbiBpbiBzZWxmLkNPTkZJR1VSQVRJT05TOgotICAgICAgICAgICAgICAgIGZv
ciBpIGluIHJhbmdlKDUpOgotICAgICAgICAgICAgICAgICAgICBzZWxmLmRhdGFiYXNlLmluc2Vy
dF9yb3dfd2l0aF9jb25maWd1cmF0aW9uKEV4YW1wbGVNb2RlbC5fX3RhYmxlX25hbWVfXywgY29u
ZmlndXJhdGlvbiwgYnJhbmNoPUNvbW1pdENvbnRleHQuREVGQVVMVF9CUkFOQ0hfS0VZLCBpbmRl
eD1pLCBqc29uPWNvbmZpZ3VyYXRpb24udG9fanNvbigpKQotCi0gICAgICAgICAgICBjb25maWd1
cmF0aW9uX3RvX3NlYXJjaF9mb3IgPSBDb25maWd1cmF0aW9uKG1vZGVsPSdpUGhvbmUgWHMnKQot
ICAgICAgICAgICAgcmVzdWx0cyA9IHNlbGYuZGF0YWJhc2Uuc2VsZWN0X2Zyb21fdGFibGVfd2l0
aF9jb25maWd1cmF0aW9ucyhFeGFtcGxlTW9kZWwuX190YWJsZV9uYW1lX18sIFtjb25maWd1cmF0
aW9uX3RvX3NlYXJjaF9mb3JdLCBpbmRleD00KQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgyLCBsZW4ocmVzdWx0cyksIGYnU2VhcmNoaW5nIGJ5IHtjb25maWd1cmF0aW9uX3RvX3NlYXJj
aF9mb3J9IGZhaWxlZCwgZm91bmQge2xlbihyZXN1bHRzKX0gZWxlbWVudHMgYW5kIGV4cGVjdGVk
IDInKQotICAgICAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gcmVzdWx0cy5pdGVtcygpOgotICAg
ICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQ29uZmlndXJhdGlvbi5mcm9tX2pzb24odmFs
dWVbMF0uanNvbiksIENvbmZpZ3VyYXRpb24uZnJvbV9qc29uKGtleS50b19qc29uKCkpKQpJbmRl
eDogVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvZG9ja2VyLWNvbXBvc2UueW1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL2RvY2tl
ci1jb21wb3NlLnltbAkocmV2aXNpb24gMjY1NTMxKQorKysgVG9vbHMvcmVzdWx0c2RicHkvcmVz
dWx0c2RicHkvbW9kZWwvZG9ja2VyLWNvbXBvc2UueW1sCShub25leGlzdGVudCkKQEAgLTEsNDIg
KzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAot
IyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0jIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IKLSMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSMgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwKLSMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotdmVyc2lvbjog
IjMiCi1zZXJ2aWNlczoKLQotICBjYXNzYW5kcmE6Ci0gICAgaW1hZ2U6IGNhc3NhbmRyYQotICAg
IGNvbnRhaW5lcl9uYW1lOiByZXN1bHRzZGJweS1jYXNzYW5kcmEKLSAgICBwb3J0czoKLSAgICAg
IC0gIjkwNDI6OTA0MiIKLSAgICAgIC0gIjcxOTk6NzE5OSIKLSAgICB2b2x1bWVzOgotICAgICAg
LSBjYXNzYW5kcmFkYXRhOi9kYXRhL2Nhc3NhbmRyYQotCi0gIHJlZGlzOgotICAgIGltYWdlOiBy
ZWRpcwotICAgIGNvbnRhaW5lcl9uYW1lOiByZXN1bHRzZGJweS1yZWRpcwotICAgIHBvcnRzOgot
ICAgICAgLSAiNjM3OTo2Mzc5IgotCi12b2x1bWVzOgotICBjYXNzYW5kcmFkYXRhOgpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5
L21vZGVsL2RvY2tlci5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRz
ZGJweS9tb2RlbC9kb2NrZXIucHkJKHJldmlzaW9uIDI2NTUzMSkKKysrIFRvb2xzL3Jlc3VsdHNk
YnB5L3Jlc3VsdHNkYnB5L21vZGVsL2RvY2tlci5weQkobm9uZXhpc3RlbnQpCkBAIC0xLDIxMCAr
MCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0jIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0j
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUgotIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotIyBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLAotIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1pbXBvcnQgYXRl
eGl0Ci1pbXBvcnQgb3MKLWltcG9ydCByZQotaW1wb3J0IHNvY2tldAotaW1wb3J0IHN1YnByb2Nl
c3MKLWltcG9ydCB0aW1lCi0KLWZyb20gY2Fzc2FuZHJhLmNsdXN0ZXIgaW1wb3J0IENsdXN0ZXIs
IE5vSG9zdEF2YWlsYWJsZQotCi0KLWNsYXNzIERvY2tlcihvYmplY3QpOgotCi0gICAgRE9DS0VS
X0JJTiA9ICcvdXNyL2xvY2FsL2Jpbi9kb2NrZXInCi0gICAgRE9DS0VSX0NPTVBPU0UgPSAnL3Vz
ci9sb2NhbC9iaW4vZG9ja2VyLWNvbXBvc2UnCi0gICAgREVGQVVMVF9QUk9KRUNUID0gb3MucGF0
aC5qb2luKG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmFic3BhdGgoX19maWxlX18pKSwgJ2RvY2tl
ci1jb21wb3NlLnltbCcpCi0gICAgUFNfUE9SVCA9IHJlLmNvbXBpbGUocicwLjAuMC4wOig/UDxw
b3J0PlxkKylcLVw+XGQrL3RjcCcpCi0KLSAgICBfaGFzX2RvY2tlciA9IE5vbmUKLSAgICBfZG9j
a2VyX3N0YWNrID0gMAotICAgIF9wcm9qZWN0X3N0YWNrID0ge30KLSAgICBfaW5zdGFuY2VfZm9y
X3Byb2plY3QgPSB7fQotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIGluc3RhbGxlZChjbHMp
OgotICAgICAgICBpZiBjbHMuX2hhc19kb2NrZXIgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBy
ZXR1cm4gY2xzLl9oYXNfZG9ja2VyCi0KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgd2l0aCBv
cGVuKG9zLmRldm51bGwsICd3JykgYXMgZGV2bnVsbDoKLSAgICAgICAgICAgICAgICBzdWJwcm9j
ZXNzLmNoZWNrX2NhbGwoW2Nscy5ET0NLRVJfQklOLCAnLXYnXSwgc3Rkb3V0PWRldm51bGwsIHN0
ZGVycj1kZXZudWxsKQotICAgICAgICAgICAgY2xzLl9oYXNfZG9ja2VyID0gVHJ1ZQotICAgICAg
ICBleGNlcHQgKE9TRXJyb3IsIHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yKToKLSAgICAg
ICAgICAgIHByaW50KCdEb2NrZXIgbm90IGluc3RhbGxlZCwgcmVxdWlyZWQgcmVzb3VyY2VzIHdp
bGwgYmUgbW9ja2VkLiBEb3dubG9hZCBpdCBhdCBodHRwczovL2Rvd25sb2FkLmRvY2tlci5jb20v
bWFjL3N0YWJsZS9Eb2NrZXIuZG1nJykKLSAgICAgICAgICAgIGNscy5faGFzX2RvY2tlciA9IEZh
bHNlCi0gICAgICAgIHJldHVybiBjbHMuX2hhc19kb2NrZXIKLQotICAgIEBjbGFzc21ldGhvZAot
ICAgIGRlZiBpc19ydW5uaW5nKGNscyk6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHdpdGgg
b3Blbihvcy5kZXZudWxsLCAndycpIGFzIGRldm51bGw6Ci0gICAgICAgICAgICAgICAgc3VicHJv
Y2Vzcy5jaGVja19jYWxsKFtjbHMuRE9DS0VSX0JJTiwgJ2NvbnRhaW5lcicsICdscycsICctYSdd
LCBzdGRvdXQ9ZGV2bnVsbCwgc3RkZXJyPWRldm51bGwpCi0gICAgICAgICAgICByZXR1cm4gVHJ1
ZQotICAgICAgICBleGNlcHQgKE9TRXJyb3IsIHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9y
KToKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVm
IHN0YXJ0KGNscywgdGltZW91dD02MCk6Ci0gICAgICAgIGlmIGNscy5pc19ydW5uaW5nKCk6Ci0g
ICAgICAgICAgICByZXR1cm4KLQotICAgICAgICBpZiBub3QgY2xzLmluc3RhbGxlZCgpOgotICAg
ICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdEb2NrZXIgbm90IGluc3RhbGxlZCcpCi0KLSAg
ICAgICAgd2l0aCBvcGVuKG9zLmRldm51bGwsICd3JykgYXMgZGV2bnVsbDoKLSAgICAgICAgICAg
IHN1YnByb2Nlc3MuY2hlY2tfY2FsbChbJy91c3IvYmluL29wZW4nLCAnLS1iYWNrZ3JvdW5kJywg
Jy1hJywgJ0RvY2tlciddLCBzdGRvdXQ9ZGV2bnVsbCwgc3RkZXJyPWRldm51bGwpCi0KLSAgICAg
ICAgZGVhZGxpbmUgPSBOb25lIGlmIHRpbWVvdXQgaXMgTm9uZSBlbHNlICh0aW1lLnRpbWUoKSAr
IHRpbWVvdXQpCi0gICAgICAgIHdoaWxlIGRlYWRsaW5lIGlzIE5vbmUgb3IgdGltZS50aW1lKCkg
PCBkZWFkbGluZToKLSAgICAgICAgICAgIGlmIGNscy5pc19ydW5uaW5nKCk6Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuCi0gICAgICAgICAgICB0aW1lLnNsZWVwKDMpCi0gICAgICAgIHJhaXNlIFJ1
bnRpbWVFcnJvcignRG9ja2VyIGZhaWxlZCB0byBzdGFydCcpCi0KLSAgICBAY2xhc3NtZXRob2QK
LSAgICBkZWYgc3RvcChjbHMpOgotICAgICAgICBpZiBub3QgY2xzLmlzX3J1bm5pbmcoKToKLSAg
ICAgICAgICAgIHJldHVybgotICAgICAgICB3aXRoIG9wZW4ob3MuZGV2bnVsbCwgJ3cnKSBhcyBk
ZXZudWxsOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHN1YnByb2Nlc3MuY2hl
Y2tfY2FsbChbJy91c3IvYmluL2tpbGxhbGwnLCAnRG9ja2VyJ10sIHN0ZG91dD1kZXZudWxsLCBz
dGRlcnI9ZGV2bnVsbCkKLSAgICAgICAgICAgIGV4Y2VwdCBzdWJwcm9jZXNzLkNhbGxlZFByb2Nl
c3NFcnJvcjoKLSAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ0ZhaWxlZCB0byBz
aHV0ZG93biBEb2NrZXIsIG1heWJlIGl0IHdhcyBpbiB0aGUgcHJvY2VzcyBvZiBxdWl0aW5nPycp
Ci0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgc3RhcnRfcHJvamVjdChjbHMsIHByb2plY3Qp
OgotICAgICAgICBwcm9qZWN0ID0gb3MucGF0aC5hYnNwYXRoKHByb2plY3QpCi0gICAgICAgIGlm
IG5vdCBvcy5wYXRoLmlzZmlsZShwcm9qZWN0KToKLSAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVF
cnJvcihmJ0Nhbm5vdCBmaW5kIERvY2tlciBwcm9qZWN0OiB7cHJvamVjdH0nKQotICAgICAgICBp
ZiBub3QgY2xzLmlzX3J1bm5pbmcoKToKLSAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcign
Q2Fubm90IHN0YXJ0IHByb2plY3QgaWYgRG9ja2VyIGlzIG5vdCBydW5uaW5nJykKLQotICAgICAg
ICB3aXRoIG9wZW4ob3MuZGV2bnVsbCwgJ3cnKSBhcyBkZXZudWxsOgotICAgICAgICAgICAgc3Vi
cHJvY2Vzcy5jaGVja19jYWxsKFtjbHMuRE9DS0VSX0NPTVBPU0UsICctZicsIHByb2plY3QsICd1
cCcsICctZCcsICctLXF1aWV0LXB1bGwnLCAnLS1uby1jb2xvciddLCBzdGRvdXQ9ZGV2bnVsbCwg
c3RkZXJyPWRldm51bGwpCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgd2FpdF9mb3JfcHJv
amVjdChjbHMsIHByb2plY3QpOgotICAgICAgICBwcm9qZWN0ID0gb3MucGF0aC5hYnNwYXRoKHBy
b2plY3QpCi0gICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzZmlsZShwcm9qZWN0KToKLSAgICAgICAg
ICAgIHJhaXNlIFJ1bnRpbWVFcnJvcihmJ0Nhbm5vdCBmaW5kIERvY2tlciBwcm9qZWN0OiB7cHJv
amVjdH0nKQotICAgICAgICBpZiBub3QgY2xzLmlzX3J1bm5pbmcoKToKLSAgICAgICAgICAgIHJh
aXNlIFJ1bnRpbWVFcnJvcihmJ0RvY2tlciBpcyBub3QgcnVubmluZywgY2Fubm90IHdhaXQgZm9y
IHtwcm9qZWN0fScpCi0KLSAgICAgICAgaGFzX2Nhc3NhbmRyYSA9IEZhbHNlCi0gICAgICAgIHBv
cnRzID0gW10KLSAgICAgICAgd2l0aCBvcGVuKG9zLmRldm51bGwsICd3JykgYXMgZGV2bnVsbDoK
LSAgICAgICAgICAgIG91dHB1dCA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KFtjbHMuRE9DS0VS
X0NPTVBPU0UsICctZicsIHByb2plY3QsICdwcyddLCBzdGRlcnI9ZGV2bnVsbCkuZGVjb2RlKCd1
dGYtOCcpCi0gICAgICAgICAgICBpZiBsZW4ob3V0cHV0LnNwbGl0bGluZXMoKSkgPD0gMjoKLSAg
ICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoZid7cHJvamVjdH0gaGFzIG5vdCBiZWVu
IHN0YXJ0ZWQsIGNhbm5vdCB3YWl0IGZvciBpdCcpCi0gICAgICAgICAgICBmb3IgbGluZSBpbiBv
dXRwdXQuc3BsaXRsaW5lcygpWzI6XToKLSAgICAgICAgICAgICAgICBpZiAnY2Fzc2FuZHJhJyBp
biBsaW5lOgotICAgICAgICAgICAgICAgICAgICBoYXNfY2Fzc2FuZHJhID0gVHJ1ZQotICAgICAg
ICAgICAgICAgIGZvciBtYXRjaCBpbiBjbHMuUFNfUE9SVC5maW5kYWxsKGxpbmUpOgotICAgICAg
ICAgICAgICAgICAgICBwb3J0cy5hcHBlbmQoaW50KG1hdGNoKSkKLQotICAgICAgICB3aGlsZSBU
cnVlOgotICAgICAgICAgICAgYWxsX3BvcnRzX29wZW4gPSBUcnVlCi0gICAgICAgICAgICBmb3Ig
cG9ydCBpbiBwb3J0czoKLSAgICAgICAgICAgICAgICBzb2MgPSBzb2NrZXQuc29ja2V0KHNvY2tl
dC5BRl9JTkVULCBzb2NrZXQuU09DS19TVFJFQU0pCi0gICAgICAgICAgICAgICAgdHJ5OgotICAg
ICAgICAgICAgICAgICAgICBzb2MuY29ubmVjdCgoJ2xvY2FsaG9zdCcsIHBvcnQpKQotICAgICAg
ICAgICAgICAgICAgICBzb2Muc2h1dGRvd24oMikKLSAgICAgICAgICAgICAgICAgICAgY29udGlu
dWUKLSAgICAgICAgICAgICAgICBleGNlcHQgQmFzZUV4Y2VwdGlvbjoKLSAgICAgICAgICAgICAg
ICAgICAgYWxsX3BvcnRzX29wZW4gPSBGYWxzZQotICAgICAgICAgICAgICAgICAgICBicmVhawot
ICAgICAgICAgICAgaWYgYWxsX3BvcnRzX29wZW46Ci0gICAgICAgICAgICAgICAgdHJ5OgotICAg
ICAgICAgICAgICAgICAgICBpZiBoYXNfY2Fzc2FuZHJhOgotICAgICAgICAgICAgICAgICAgICAg
ICAgY29ubmVjdGlvbiA9IENsdXN0ZXIoWydsb2NhbGhvc3QnXSkuY29ubmVjdCgpCi0gICAgICAg
ICAgICAgICAgICAgICAgICBjb25uZWN0aW9uLmNsdXN0ZXIuc2h1dGRvd24oKQotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgICAgICBleGNlcHQgTm9Ib3N0QXZhaWxhYmxl
OgotICAgICAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICB0aW1lLnNsZWVwKDMpCi0K
LSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgaXNfcHJvamVjdF9ydW5uaW5nKGNscywgcHJvamVj
dCk6Ci0gICAgICAgIHByb2plY3QgPSBvcy5wYXRoLmFic3BhdGgocHJvamVjdCkKLSAgICAgICAg
aWYgbm90IG9zLnBhdGguaXNmaWxlKHByb2plY3QpOgotICAgICAgICAgICAgcmFpc2UgUnVudGlt
ZUVycm9yKGYnQ2Fubm90IGZpbmQgRG9ja2VyIHByb2plY3Q6IHtwcm9qZWN0fScpCi0KLSAgICAg
ICAgaWYgbm90IGNscy5pc19ydW5uaW5nKCk6Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAg
ICAgICAgd2l0aCBvcGVuKG9zLmRldm51bGwsICd3JykgYXMgZGV2bnVsbDoKLSAgICAgICAgICAg
IG91dHB1dCA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KFtjbHMuRE9DS0VSX0NPTVBPU0UsICct
ZicsIHByb2plY3QsICdwcyddLCBzdGRlcnI9ZGV2bnVsbCkKLSAgICAgICAgICAgIHJldHVybiBs
ZW4ob3V0cHV0LnNwbGl0bGluZXMoKSkgPiAyCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYg
c3RvcF9wcm9qZWN0KGNscywgcHJvamVjdCk6Ci0gICAgICAgIHByb2plY3QgPSBvcy5wYXRoLmFi
c3BhdGgocHJvamVjdCkKLSAgICAgICAgaWYgbm90IG9zLnBhdGguaXNmaWxlKHByb2plY3QpOgot
ICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKGYnQ2Fubm90IGZpbmQgRG9ja2VyIHByb2pl
Y3Q6IHtwcm9qZWN0fScpCi0gICAgICAgIGlmIG5vdCBjbHMuaXNfcnVubmluZygpOgotICAgICAg
ICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdDYW5ub3Qgc3RvcCBwcm9qZWN0IGlmIERvY2tlciBp
cyBub3QgcnVubmluZycpCi0KLSAgICAgICAgd2l0aCBvcGVuKG9zLmRldm51bGwsICd3JykgYXMg
ZGV2bnVsbDoKLSAgICAgICAgICAgIHN1YnByb2Nlc3MuY2hlY2tfY2FsbChbY2xzLkRPQ0tFUl9D
T01QT1NFLCAnLWYnLCBwcm9qZWN0LCAnZG93biddLCBzdGRvdXQ9ZGV2bnVsbCwgc3RkZXJyPWRl
dm51bGwpCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgaW5zdGFuY2UoY2xzLCBwcm9qZWN0
PURFRkFVTFRfUFJPSkVDVCk6Ci0gICAgICAgIHByb2plY3QgPSBvcy5wYXRoLmFic3BhdGgocHJv
amVjdCkKLSAgICAgICAgaWYgcHJvamVjdCBub3QgaW4gY2xzLl9pbnN0YW5jZV9mb3JfcHJvamVj
dDoKLSAgICAgICAgICAgIGNscy5faW5zdGFuY2VfZm9yX3Byb2plY3RbcHJvamVjdF0gPSBjbHMo
cHJvamVjdCkKLSAgICAgICAgICAgIGNscy5faW5zdGFuY2VfZm9yX3Byb2plY3RbcHJvamVjdF0u
X19lbnRlcl9fKCkKLSAgICAgICAgICAgIGF0ZXhpdC5yZWdpc3RlcihjbHMuX2luc3RhbmNlX2Zv
cl9wcm9qZWN0W3Byb2plY3RdLl9fZXhpdF9fKQotICAgICAgICByZXR1cm4gY2xzLl9pbnN0YW5j
ZV9mb3JfcHJvamVjdFtwcm9qZWN0XQotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHByb2plY3Q9
REVGQVVMVF9QUk9KRUNUKToKLSAgICAgICAgaWYgbm90IHNlbGYuaW5zdGFsbGVkKCk6Ci0gICAg
ICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ0Nhbm5vdCBtYW5hZ2UgYSBEb2NrZXIgaW5zdGFu
Y2UgaWYgRG9ja2VyIGlzIG5vdCBpbnN0YWxsZWQnKQotICAgICAgICBzZWxmLnByb2plY3QgPSBv
cy5wYXRoLmFic3BhdGgocHJvamVjdCkKLSAgICAgICAgaWYgbm90IG9zLnBhdGguaXNmaWxlKHNl
bGYucHJvamVjdCk6Ci0gICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoZidDYW5ub3QgZmlu
ZCBEb2NrZXIgcHJvamVjdDoge3NlbGYucHJvamVjdH0nKQotCi0gICAgZGVmIF9fZW50ZXJfXyhz
ZWxmKToKLSAgICAgICAgaWYgRG9ja2VyLl9kb2NrZXJfc3RhY2sgPT0gMDoKLSAgICAgICAgICAg
IGlmIERvY2tlci5pc19ydW5uaW5nKCk6Ci0gICAgICAgICAgICAgICAgRG9ja2VyLl9kb2NrZXJf
c3RhY2sgKz0gMQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBEb2NrZXIuc3Rh
cnQoKQotICAgICAgICBEb2NrZXIuX2RvY2tlcl9zdGFjayArPSAxCi0KLSAgICAgICAgaWYgRG9j
a2VyLl9wcm9qZWN0X3N0YWNrLmdldChzZWxmLnByb2plY3QsIDApID09IDA6Ci0gICAgICAgICAg
ICBpZiBEb2NrZXIuaXNfcHJvamVjdF9ydW5uaW5nKHNlbGYucHJvamVjdCk6Ci0gICAgICAgICAg
ICAgICAgRG9ja2VyLl9wcm9qZWN0X3N0YWNrW3NlbGYucHJvamVjdF0gPSBEb2NrZXIuX3Byb2pl
Y3Rfc3RhY2suZ2V0KHNlbGYucHJvamVjdCwgMCkgKyAxCi0gICAgICAgICAgICBlbHNlOgotICAg
ICAgICAgICAgICAgIERvY2tlci5zdGFydF9wcm9qZWN0KHNlbGYucHJvamVjdCkKLSAgICAgICAg
ICAgIERvY2tlci53YWl0X2Zvcl9wcm9qZWN0KHNlbGYucHJvamVjdCkKLSAgICAgICAgRG9ja2Vy
Ll9wcm9qZWN0X3N0YWNrW3NlbGYucHJvamVjdF0gPSBEb2NrZXIuX3Byb2plY3Rfc3RhY2suZ2V0
KHNlbGYucHJvamVjdCwgMCkgKyAxCi0KLSAgICBkZWYgX19leGl0X18oc2VsZiwgKmFyZ3MpOgot
ICAgICAgICBEb2NrZXIuX3Byb2plY3Rfc3RhY2tbc2VsZi5wcm9qZWN0XSA9IERvY2tlci5fcHJv
amVjdF9zdGFjay5nZXQoc2VsZi5wcm9qZWN0LCAwKSAtIDEKLSAgICAgICAgaWYgRG9ja2VyLl9w
cm9qZWN0X3N0YWNrW3NlbGYucHJvamVjdF0gPD0gMDoKLSAgICAgICAgICAgIERvY2tlci5zdG9w
X3Byb2plY3Qoc2VsZi5wcm9qZWN0KQotCi0gICAgICAgIERvY2tlci5fZG9ja2VyX3N0YWNrIC09
IDEKLSAgICAgICAgaWYgRG9ja2VyLl9kb2NrZXJfc3RhY2sgPD0gMDoKLSAgICAgICAgICAgIERv
Y2tlci5zdG9wKCkKSW5kZXg6IFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL2Rv
Y2tlcl91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRz
ZGJweS9tb2RlbC9kb2NrZXJfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI2NTUzMSkKKysrIFRvb2xz
L3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL2RvY2tlcl91bml0dGVzdC5weQkobm9uZXhp
c3RlbnQpCkBAIC0xLDUwICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUg
bWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKLSMgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotIyBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0jIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0j
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksCi0jIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0KLWltcG9ydCBtb2NrCi0KLWZyb20gcmVzdWx0c2RicHkubW9kZWwuZG9ja2VyIGltcG9y
dCBEb2NrZXIKLWZyb20gcmVzdWx0c2RicHkubW9kZWwud2FpdF9mb3JfZG9ja2VyX3Rlc3RfY2Fz
ZSBpbXBvcnQgV2FpdEZvckRvY2tlclRlc3RDYXNlCi0KLQotY2xhc3MgRG9ja2VyVW5pdHRlc3Qo
V2FpdEZvckRvY2tlclRlc3RDYXNlKToKLQotICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UucnVu
X2lmX2hhc19kb2NrZXIoKQotICAgIGRlZiB0ZXN0X3N0YXJ0KHNlbGYpOgotICAgICAgICB3aXRo
IERvY2tlci5pbnN0YW5jZSgpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKERvY2tlci5p
c19ydW5uaW5nKCkpCi0KLSAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLnJ1bl9pZl9oYXNfZG9j
a2VyKCkKLSAgICBkZWYgdGVzdF9zdGFjayhzZWxmKToKLSAgICAgICAgd2l0aCBEb2NrZXIuaW5z
dGFuY2UoKToKLSAgICAgICAgICAgIGRlZiBzdWJwcm9jZXNzX2NhbGxiYWNrKCphcmdzLCAqKmt3
YXJncyk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZmFpbCgnRG9ja2VyIGluc3RhbmNl
cyBub3QgY29ycmVjdGx5IHN0YWNraW5nJykKLQotICAgICAgICAgICAgIyBUaGUgdGVzdCBoZXJl
IGlzIHRoYXQgRG9ja2VyIGlzIGNvcnJlY3RseSBzdGFja2luZyBhbmQgbm8gc3VicHJvY2VzcyBj
YWxscyBhcmUgYmVpbmcgbWFkZSBhZnRlciBEb2NrZXIgaXMgYWxyZWFkeSBydW5uaW5nLgotICAg
ICAgICAgICAgd2l0aCBtb2NrLnBhdGNoKCdzdWJwcm9jZXNzLmNoZWNrX2NhbGwnLCBuZXc9c3Vi
cHJvY2Vzc19jYWxsYmFjayksIG1vY2sucGF0Y2goJ3N1YnByb2Nlc3MuY2hlY2tfb3V0cHV0Jywg
bmV3PXN1YnByb2Nlc3NfY2FsbGJhY2spOgotICAgICAgICAgICAgICAgIHdpdGggRG9ja2VyLmlu
c3RhbmNlKCk6Ci0gICAgICAgICAgICAgICAgICAgIHBhc3MKLQotICAgIEBXYWl0Rm9yRG9ja2Vy
VGVzdENhc2UucnVuX2lmX2hhc19kb2NrZXIoKQotICAgIGRlZiB0ZXN0X3Byb2plY3RfcnVubmlu
ZyhzZWxmKToKLSAgICAgICAgd2l0aCBEb2NrZXIuaW5zdGFuY2UoKToKLSAgICAgICAgICAgIHNl
bGYuYXNzZXJ0VHJ1ZShEb2NrZXIuaXNfcHJvamVjdF9ydW5uaW5nKERvY2tlci5ERUZBVUxUX1BS
T0pFQ1QpKQpJbmRleDogVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvZmFpbHVy
ZV9jb250ZXh0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5
L21vZGVsL2ZhaWx1cmVfY29udGV4dC5weQkocmV2aXNpb24gMjY1NTMxKQorKysgVG9vbHMvcmVz
dWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvZmFpbHVyZV9jb250ZXh0LnB5CShub25leGlzdGVu
dCkKQEAgLTEsMjA2ICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0
OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKLSMgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotIyBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0jIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0jIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksCi0jIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0KLWltcG9ydCBjYWxlbmRhcgotaW1wb3J0IGNvbGxlY3Rpb25zCi1pbXBvcnQganNvbgotaW1w
b3J0IHRpbWUKLQotZnJvbSBjYXNzYW5kcmEuY3FsZW5naW5lIGltcG9ydCBjb2x1bW5zCi1mcm9t
IGNhc3NhbmRyYS5jcWxlbmdpbmUubW9kZWxzIGltcG9ydCBNb2RlbAotZnJvbSBkYXRldGltZSBp
bXBvcnQgZGF0ZXRpbWUKLWZyb20gcmVzdWx0c2RicHkuY29udHJvbGxlci5jb21taXQgaW1wb3J0
IENvbW1pdAotZnJvbSByZXN1bHRzZGJweS5tb2RlbC5jb21taXRfY29udGV4dCBpbXBvcnQgQ29t
bWl0Q29udGV4dAotZnJvbSByZXN1bHRzZGJweS5tb2RlbC5jb25maWd1cmF0aW9uX2NvbnRleHQg
aW1wb3J0IENsdXN0ZXJlZEJ5Q29uZmlndXJhdGlvbgotZnJvbSByZXN1bHRzZGJweS5tb2RlbC51
cGxvYWRfY29udGV4dCBpbXBvcnQgVXBsb2FkQ2FsbGJhY2tDb250ZXh0Ci1mcm9tIHJlc3VsdHNk
YnB5Lm1vZGVsLnRlc3RfY29udGV4dCBpbXBvcnQgRXhwZWN0YXRpb25zCi0KLQotY2xhc3MgRmFp
bHVyZUNvbnRleHQoVXBsb2FkQ2FsbGJhY2tDb250ZXh0KToKLSAgICBERUZBVUxUX0xJTUlUID0g
MTAwCi0KLSAgICBjbGFzcyBUZXN0RmFpbHVyZXNCYXNlKENsdXN0ZXJlZEJ5Q29uZmlndXJhdGlv
bik6Ci0gICAgICAgIHN1aXRlID0gY29sdW1ucy5UZXh0KHBhcnRpdGlvbl9rZXk9VHJ1ZSwgcmVx
dWlyZWQ9VHJ1ZSkKLSAgICAgICAgYnJhbmNoID0gY29sdW1ucy5UZXh0KHBhcnRpdGlvbl9rZXk9
VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkKLSAgICAgICAgdGVzdHMgPSBjb2x1bW5zLlRleHQocmVxdWly
ZWQ9VHJ1ZSkKLQotICAgICAgICBkZWYgdW5wYWNrKHNlbGYpOgotICAgICAgICAgICAgcmVzdWx0
cyA9IGpzb24ubG9hZHMoc2VsZi50ZXN0cykgaWYgc2VsZi50ZXN0cyBlbHNlIHt9Ci0gICAgICAg
ICAgICBmb3IgdGVzdCBpbiByZXN1bHRzLmtleXMoKToKLSAgICAgICAgICAgICAgICByZXN1bHRz
W3Rlc3RdID0gRXhwZWN0YXRpb25zLnN0YXRlX2lkc190b19zdHJpbmcoW3Jlc3VsdHNbdGVzdF1d
KQotICAgICAgICAgICAgcmVzdWx0c1sndXVpZCddID0gc2VsZi51dWlkCi0gICAgICAgICAgICBy
ZXN1bHRzWydzdGFydF90aW1lJ10gPSBjYWxlbmRhci50aW1lZ20oc2VsZi5zdGFydF90aW1lLnRp
bWV0dXBsZSgpKQotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdHMKLQotICAgIGNsYXNzIFRlc3RG
YWlsdXJlc0J5Q29tbWl0KFRlc3RGYWlsdXJlc0Jhc2UpOgotICAgICAgICBfX3RhYmxlX25hbWVf
XyA9ICd0ZXN0X2ZhaWx1cmVzX2J5X2NvbW1pdCcKLSAgICAgICAgdXVpZCA9IGNvbHVtbnMuQmln
SW50KHByaW1hcnlfa2V5PVRydWUsIHJlcXVpcmVkPVRydWUsIGNsdXN0ZXJpbmdfb3JkZXI9J0RF
U0MnKQotICAgICAgICBzZGsgPSBjb2x1bW5zLlRleHQocHJpbWFyeV9rZXk9VHJ1ZSwgcmVxdWly
ZWQ9VHJ1ZSkKLSAgICAgICAgc3RhcnRfdGltZSA9IGNvbHVtbnMuRGF0ZVRpbWUocHJpbWFyeV9r
ZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkKLQotICAgIGNsYXNzIFRlc3RGYWlsdXJlc0J5U3RhcnRU
aW1lKFRlc3RGYWlsdXJlc0Jhc2UpOgotICAgICAgICBfX3RhYmxlX25hbWVfXyA9ICd0ZXN0X2Zh
aWx1cmVzX2J5X3N0YXJ0X3RpbWUnCi0gICAgICAgIHN0YXJ0X3RpbWUgPSBjb2x1bW5zLkRhdGVU
aW1lKHByaW1hcnlfa2V5PVRydWUsIHJlcXVpcmVkPVRydWUsIGNsdXN0ZXJpbmdfb3JkZXI9J0RF
U0MnKQotICAgICAgICBzZGsgPSBjb2x1bW5zLlRleHQocHJpbWFyeV9rZXk9VHJ1ZSwgcmVxdWly
ZWQ9VHJ1ZSkKLSAgICAgICAgdXVpZCA9IGNvbHVtbnMuQmlnSW50KHByaW1hcnlfa2V5PVRydWUs
IHJlcXVpcmVkPVRydWUpCi0KLSAgICBjbGFzcyBVbmV4cGVjdGVkVGVzdEZhaWx1cmVzQnlDb21t
aXQoVGVzdEZhaWx1cmVzQmFzZSk6Ci0gICAgICAgIF9fdGFibGVfbmFtZV9fID0gJ3VuZXhwZWN0
ZWRfdGVzdF9mYWlsdXJlc19ieV9jb21taXQnCi0gICAgICAgIHV1aWQgPSBjb2x1bW5zLkJpZ0lu
dChwcmltYXJ5X2tleT1UcnVlLCByZXF1aXJlZD1UcnVlLCBjbHVzdGVyaW5nX29yZGVyPSdERVND
JykKLSAgICAgICAgc2RrID0gY29sdW1ucy5UZXh0KHByaW1hcnlfa2V5PVRydWUsIHJlcXVpcmVk
PVRydWUpCi0gICAgICAgIHN0YXJ0X3RpbWUgPSBjb2x1bW5zLkRhdGVUaW1lKHByaW1hcnlfa2V5
PVRydWUsIHJlcXVpcmVkPVRydWUpCi0KLSAgICBjbGFzcyBVbmV4cGVjdGVkVGVzdEZhaWx1cmVz
QnlTdGFydFRpbWUoVGVzdEZhaWx1cmVzQmFzZSk6Ci0gICAgICAgIF9fdGFibGVfbmFtZV9fID0g
J3VuZXhwZWN0ZWRfdGVzdF9mYWlsdXJlc19ieV9zdGFydF90aW1lJwotICAgICAgICBzdGFydF90
aW1lID0gY29sdW1ucy5EYXRlVGltZShwcmltYXJ5X2tleT1UcnVlLCByZXF1aXJlZD1UcnVlLCBj
bHVzdGVyaW5nX29yZGVyPSdERVNDJykKLSAgICAgICAgc2RrID0gY29sdW1ucy5UZXh0KHByaW1h
cnlfa2V5PVRydWUsIHJlcXVpcmVkPVRydWUpCi0gICAgICAgIHV1aWQgPSBjb2x1bW5zLkJpZ0lu
dChwcmltYXJ5X2tleT1UcnVlLCByZXF1aXJlZD1UcnVlKQotCi0gICAgZGVmIF9faW5pdF9fKHNl
bGYsICphcmdzLCAqKmt3YXJncyk6Ci0gICAgICAgIHN1cGVyKEZhaWx1cmVDb250ZXh0LCBzZWxm
KS5fX2luaXRfXygndGVzdC1mYWlsdXJlcycsICphcmdzLCAqKmt3YXJncykKLQotICAgICAgICB3
aXRoIHNlbGY6Ci0gICAgICAgICAgICBzZWxmLmNhc3NhbmRyYS5jcmVhdGVfdGFibGUoc2VsZi5U
ZXN0RmFpbHVyZXNCeUNvbW1pdCkKLSAgICAgICAgICAgIHNlbGYuY2Fzc2FuZHJhLmNyZWF0ZV90
YWJsZShzZWxmLlRlc3RGYWlsdXJlc0J5U3RhcnRUaW1lKQotICAgICAgICAgICAgc2VsZi5jYXNz
YW5kcmEuY3JlYXRlX3RhYmxlKHNlbGYuVW5leHBlY3RlZFRlc3RGYWlsdXJlc0J5Q29tbWl0KQot
ICAgICAgICAgICAgc2VsZi5jYXNzYW5kcmEuY3JlYXRlX3RhYmxlKHNlbGYuVW5leHBlY3RlZFRl
c3RGYWlsdXJlc0J5U3RhcnRUaW1lKQotCi0gICAgZGVmIHJlZ2lzdGVyKHNlbGYsIGNvbmZpZ3Vy
YXRpb24sIGNvbW1pdHMsIHN1aXRlLCB0ZXN0X3Jlc3VsdHMsIHRpbWVzdGFtcD1Ob25lKToKLSAg
ICAgICAgdHJ5OgotICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uoc3VpdGUsIHN0cik6Ci0g
ICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKGYnRXhwZWN0ZWQgdHlwZSB7c3RyfSwgZ290
IHt0eXBlKHN1aXRlKX0nKQotCi0gICAgICAgICAgICB0aW1lc3RhbXAgPSB0aW1lc3RhbXAgb3Ig
dGltZS50aW1lKCkKLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UodGltZXN0YW1wLCBkYXRldGlt
ZSk6Ci0gICAgICAgICAgICAgICAgdGltZXN0YW1wID0gY2FsZW5kYXIudGltZWdtKHRpbWVzdGFt
cC50aW1ldHVwbGUoKSkKLQotICAgICAgICAgICAgd2l0aCBzZWxmOgotICAgICAgICAgICAgICAg
IHV1aWQgPSBzZWxmLmNvbW1pdF9jb250ZXh0LnV1aWRfZm9yX2NvbW1pdHMoY29tbWl0cykKLSAg
ICAgICAgICAgICAgICB0dGwgPSBpbnQoKHV1aWQgLy8gQ29tbWl0LlRJTUVTVEFNUF9UT19VVUlE
X01VTFRJUExJRVIpICsgc2VsZi50dGxfc2Vjb25kcyAtIHRpbWUudGltZSgpKSBpZiBzZWxmLnR0
bF9zZWNvbmRzIGVsc2UgTm9uZQotCi0gICAgICAgICAgICAgICAgZGVmIGNhbGxiYWNrKHRlc3Qs
IHJlc3VsdCwgZmFpbHVyZXMsIHVuZXhwZWN0ZWQpOgotICAgICAgICAgICAgICAgICAgICBmYWls
ZWRfcmVzdWx0ID0gRXhwZWN0YXRpb25zLnN0cmluZ190b19zdGF0ZV9pZHMocmVzdWx0LmdldCgn
YWN0dWFsJywgJycpKQotICAgICAgICAgICAgICAgICAgICBleHBlY3RlZCA9IHNldChFeHBlY3Rh
dGlvbnMuc3RyaW5nX3RvX3N0YXRlX2lkcyhyZXN1bHQuZ2V0KCdleHBlY3RlZCcsICcnKSkpCi0g
ICAgICAgICAgICAgICAgICAgIGlmIEV4cGVjdGF0aW9ucy5TVFJJTkdfVE9fU1RBVEVfSURbRXhw
ZWN0YXRpb25zLkZBSUxdIGluIGV4cGVjdGVkOgotICAgICAgICAgICAgICAgICAgICAgICAgZXhw
ZWN0ZWQuYWRkKEV4cGVjdGF0aW9ucy5TVFJJTkdfVE9fU1RBVEVfSURbRXhwZWN0YXRpb25zLlRF
WFRdKQotICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQuYWRkKEV4cGVjdGF0aW9ucy5T
VFJJTkdfVE9fU1RBVEVfSURbRXhwZWN0YXRpb25zLkFVRElPXSkKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGV4cGVjdGVkLmFkZChFeHBlY3RhdGlvbnMuU1RSSU5HX1RPX1NUQVRFX0lEW0V4cGVj
dGF0aW9ucy5JTUFHRV0pCi0KLSAgICAgICAgICAgICAgICAgICAgdW5leHBlY3RlZF9yZXN1bHQg
PSBzZXQoZmFpbGVkX3Jlc3VsdCkgLSBleHBlY3RlZAotICAgICAgICAgICAgICAgICAgICBpZiBm
YWlsZWRfcmVzdWx0OgotICAgICAgICAgICAgICAgICAgICAgICAgd29yc3QgPSBtaW4oZmFpbGVk
X3Jlc3VsdCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIHdvcnN0IDwgRXhwZWN0YXRpb25z
LlNUUklOR19UT19TVEFURV9JRFtFeHBlY3RhdGlvbnMuV0FSTklOR106Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZmFpbHVyZXNbdGVzdF0gPSBtaW4od29yc3QsIGZhaWx1cmVzLmdldCh0
ZXN0LCBFeHBlY3RhdGlvbnMuU1RSSU5HX1RPX1NUQVRFX0lEW0V4cGVjdGF0aW9ucy5QQVNTXSkp
Ci0KLSAgICAgICAgICAgICAgICAgICAgaWYgdW5leHBlY3RlZF9yZXN1bHQ6Ci0gICAgICAgICAg
ICAgICAgICAgICAgICB3b3JzdCA9IG1pbih1bmV4cGVjdGVkX3Jlc3VsdCkKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIHdvcnN0IDwgRXhwZWN0YXRpb25zLlNUUklOR19UT19TVEFURV9JRFtF
eHBlY3RhdGlvbnMuV0FSTklOR106Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5leHBl
Y3RlZFt0ZXN0XSA9IG1pbih3b3JzdCwgdW5leHBlY3RlZC5nZXQodGVzdCwgRXhwZWN0YXRpb25z
LlNUUklOR19UT19TVEFURV9JRFtFeHBlY3RhdGlvbnMuUEFTU10pKQotCi0gICAgICAgICAgICAg
ICAgd2l0aCBzZWxmLmNhc3NhbmRyYS5iYXRjaF9xdWVyeV9jb250ZXh0KCk6Ci0gICAgICAgICAg
ICAgICAgICAgIGZvciBicmFuY2ggaW4gc2VsZi5jb21taXRfY29udGV4dC5icmFuY2hfa2V5c19m
b3JfY29tbWl0cyhjb21taXRzKToKLSAgICAgICAgICAgICAgICAgICAgICAgIGZhaWx1cmVzID0g
e30KLSAgICAgICAgICAgICAgICAgICAgICAgIHVuZXhwZWN0ZWQgPSB7fQotCi0gICAgICAgICAg
ICAgICAgICAgICAgICBFeHBlY3RhdGlvbnMuaXRlcmF0ZV90aHJvdWdoX25lc3RlZF9yZXN1bHRz
KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfcmVzdWx0cy5nZXQoJ3Jlc3VsdHMn
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW1iZGEgdGVzdCwgcmVzdWx0OiBjYWxs
YmFjayh0ZXN0LCByZXN1bHQsIGZhaWx1cmVzPWZhaWx1cmVzLCB1bmV4cGVjdGVkPXVuZXhwZWN0
ZWQpLAotICAgICAgICAgICAgICAgICAgICAgICAgKQotCi0gICAgICAgICAgICAgICAgICAgICAg
ICBmb3IgdGFibGUgaW4gW3NlbGYuVGVzdEZhaWx1cmVzQnlDb21taXQsIHNlbGYuVGVzdEZhaWx1
cmVzQnlTdGFydFRpbWVdOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY29uZmln
dXJhdGlvbl9jb250ZXh0Lmluc2VydF9yb3dfd2l0aF9jb25maWd1cmF0aW9uKAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0YWJsZS5fX3RhYmxlX25hbWVfXywgY29uZmlndXJhdGlv
bj1jb25maWd1cmF0aW9uLCBzdWl0ZT1zdWl0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYnJhbmNoPWJyYW5jaCwgdXVpZD11dWlkLCB0dGw9dHRsLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzZGs9Y29uZmlndXJhdGlvbi5zZGsgb3IgJz8nLCBzdGFydF90aW1l
PXRpbWVzdGFtcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdHM9anNvbi5k
dW1wcyhmYWlsdXJlcyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKQotCi0gICAgICAg
ICAgICAgICAgICAgICAgICBmb3IgdGFibGUgaW4gW3NlbGYuVW5leHBlY3RlZFRlc3RGYWlsdXJl
c0J5Q29tbWl0LCBzZWxmLlVuZXhwZWN0ZWRUZXN0RmFpbHVyZXNCeVN0YXJ0VGltZV06Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jb25maWd1cmF0aW9uX2NvbnRleHQuaW5zZXJ0
X3Jvd193aXRoX2NvbmZpZ3VyYXRpb24oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRhYmxlLl9fdGFibGVfbmFtZV9fLCBjb25maWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24sIHN1aXRl
PXN1aXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmFuY2g9YnJhbmNoLCB1
dWlkPXV1aWQsIHR0bD10dGwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNkaz1j
b25maWd1cmF0aW9uLnNkayBvciAnPycsIHN0YXJ0X3RpbWU9dGltZXN0YW1wLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0ZXN0cz1qc29uLmR1bXBzKHVuZXhwZWN0ZWQpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICkKLQotICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFz
IGU6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5wYXJ0aWFsX3N0YXR1cyhlKQotICAgICAgICBy
ZXR1cm4gc2VsZi5wYXJ0aWFsX3N0YXR1cygpCi0KLSAgICBkZWYgX2ZhaWx1cmVzKAotICAgICAg
ICAgICAgc2VsZiwgYWxsX3RhYmxlLCB1bmV4cGVjdGVkX3RhYmxlLCBjb25maWd1cmF0aW9ucywg
c3VpdGUsIHJlY2VudD1UcnVlLAotICAgICAgICAgICAgYnJhbmNoPU5vbmUsIGJlZ2luPU5vbmUs
IGVuZD1Ob25lLAotICAgICAgICAgICAgYmVnaW5fcXVlcnlfdGltZT1Ob25lLCBlbmRfcXVlcnlf
dGltZT1Ob25lLAotICAgICAgICAgICAgdW5leHBlY3RlZD1UcnVlLCBjb2xsYXBzZWQ9VHJ1ZSwg
bGltaXQ9REVGQVVMVF9MSU1JVCwKLSAgICApOgotICAgICAgICB0YWJsZSA9IHVuZXhwZWN0ZWRf
dGFibGUgaWYgdW5leHBlY3RlZCBlbHNlIGFsbF90YWJsZQotICAgICAgICBpZiBub3QgaXNpbnN0
YW5jZShzdWl0ZSwgc3RyKToKLSAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcihmJ0V4cGVjdGVk
IHR5cGUge3N0cn0gZm9yIHN1aXRlLCBnb3Qge3R5cGUoc3VpdGUpfScpCi0KLSAgICAgICAgZGVm
IGdldF90aW1lKHRpbWUpOgotICAgICAgICAgICAgaWYgaXNpbnN0YW5jZSh0aW1lLCBkYXRldGlt
ZSk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRpbWUKLSAgICAgICAgICAgIGVsaWYgdGltZToK
LSAgICAgICAgICAgICAgICByZXR1cm4gZGF0ZXRpbWUudXRjZnJvbXRpbWVzdGFtcChpbnQodGlt
ZSkpCi0gICAgICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgICAgIHdpdGggc2VsZjoKLSAgICAg
ICAgICAgIGhhc190ZXN0X3J1bnMgPSBGYWxzZQotICAgICAgICAgICAgaWYgY29sbGFwc2VkOgot
ICAgICAgICAgICAgICAgIHJlc3VsdCA9IHNldCgpCi0gICAgICAgICAgICBlbHNlOgotICAgICAg
ICAgICAgICAgIHJlc3VsdCA9IHt9Ci0KLSAgICAgICAgICAgIGZvciBjb25maWd1cmF0aW9uIGlu
IGNvbmZpZ3VyYXRpb25zOgotICAgICAgICAgICAgICAgIGZvciBjb25maWcsIHZhbHVlcyBpbiBz
ZWxmLmNvbmZpZ3VyYXRpb25fY29udGV4dC5zZWxlY3RfZnJvbV90YWJsZV93aXRoX2NvbmZpZ3Vy
YXRpb25zKAotICAgICAgICAgICAgICAgICAgICB0YWJsZS5fX3RhYmxlX25hbWVfXywgY29uZmln
dXJhdGlvbnM9W2NvbmZpZ3VyYXRpb25dLCByZWNlbnQ9cmVjZW50LAotICAgICAgICAgICAgICAg
ICAgICBzdWl0ZT1zdWl0ZSwgc2RrPWNvbmZpZ3VyYXRpb24uc2RrLCBicmFuY2g9YnJhbmNoIG9y
IHNlbGYuY29tbWl0X2NvbnRleHQuREVGQVVMVF9CUkFOQ0hfS0VZLAotICAgICAgICAgICAgICAg
ICAgICB1dWlkX19ndGU9Q29tbWl0Q29udGV4dC5jb252ZXJ0X3RvX3V1aWQoYmVnaW4pLAotICAg
ICAgICAgICAgICAgICAgICB1dWlkX19sdGU9Q29tbWl0Q29udGV4dC5jb252ZXJ0X3RvX3V1aWQo
ZW5kLCBDb21taXRDb250ZXh0LnRpbWVzdGFtcF90b191dWlkKCkpLAotICAgICAgICAgICAgICAg
ICAgICBzdGFydF90aW1lX19ndGU9Z2V0X3RpbWUoYmVnaW5fcXVlcnlfdGltZSksIHN0YXJ0X3Rp
bWVfX2x0ZT1nZXRfdGltZShlbmRfcXVlcnlfdGltZSksCi0gICAgICAgICAgICAgICAgICAgIGxp
bWl0PWxpbWl0LAotICAgICAgICAgICAgICAgICkuaXRlbXMoKToKLSAgICAgICAgICAgICAgICAg
ICAgaWYgY29sbGFwc2VkOgotICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHZhbHVlIGluIHZh
bHVlczoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNfdGVzdF9ydW5zID0gVHJ1ZQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciB0ZXN0IGluIHZhbHVlLnVucGFjaygpOgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IG5vdCBpbiBbJ3V1aWQnLCAn
c3RhcnRfdGltZSddOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0
LmFkZCh0ZXN0KQotICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAg
ICAgICAgcnVucyA9IFtdCi0gICAgICAgICAgICAgICAgICAgICAgICBmb3IgdmFsdWUgaW4gdmFs
dWVzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc190ZXN0X3J1bnMgPSBUcnVlCi0K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHV1aWQgYW5kIHN0YXJ0X3RpbWUgYXJlIG5v
dCBpbiB0aGUgdW5wYWNrZWQgdmFsdWVzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5w
YWNrZWQgPSB2YWx1ZS51bnBhY2soKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGxl
bih1bnBhY2tlZCkgPiAyOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydW5zLmFw
cGVuZCh1bnBhY2tlZCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIHJ1bnM6Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnVwZGF0ZSh7Y29uZmlnOiBydW5zfSkKLQotICAg
ICAgICAgICAgcmV0dXJuIHJlc3VsdCBpZiBoYXNfdGVzdF9ydW5zIGVsc2UgTm9uZQotCi0gICAg
ZGVmIGZhaWx1cmVzX2J5X2NvbW1pdChzZWxmLCAqYXJncywgKiprd2FyZ3MpOgotICAgICAgICBy
ZXR1cm4gc2VsZi5fZmFpbHVyZXMoc2VsZi5UZXN0RmFpbHVyZXNCeUNvbW1pdCwgc2VsZi5VbmV4
cGVjdGVkVGVzdEZhaWx1cmVzQnlDb21taXQsICphcmdzLCAqKmt3YXJncykKLQotICAgIGRlZiBm
YWlsdXJlc19ieV9zdGFydF90aW1lKHNlbGYsICphcmdzLCAqKmt3YXJncyk6Ci0gICAgICAgIHJl
dHVybiBzZWxmLl9mYWlsdXJlcyhzZWxmLlRlc3RGYWlsdXJlc0J5U3RhcnRUaW1lLCBzZWxmLlVu
ZXhwZWN0ZWRUZXN0RmFpbHVyZXNCeVN0YXJ0VGltZSwgKmFyZ3MsICoqa3dhcmdzKQpJbmRleDog
VG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvZmFpbHVyZV9jb250ZXh0X3VuaXR0
ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVs
L2ZhaWx1cmVfY29udGV4dF91bml0dGVzdC5weQkocmV2aXNpb24gMjY1NTMxKQorKysgVG9vbHMv
cmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvZmFpbHVyZV9jb250ZXh0X3VuaXR0ZXN0LnB5
CShub25leGlzdGVudCkKQEAgLTEsMTMyICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0j
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQK
LSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUgotIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0jIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSCi0jIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0jIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0j
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0KLWltcG9ydCB0aW1lCi0KLWZyb20gZmFrZXJlZGlzIGltcG9ydCBGYWtl
U3RyaWN0UmVkaXMKLWZyb20gcmVkaXMgaW1wb3J0IFN0cmljdFJlZGlzCi1mcm9tIHJlc3VsdHNk
YnB5LmNvbnRyb2xsZXIuY29uZmlndXJhdGlvbiBpbXBvcnQgQ29uZmlndXJhdGlvbgotZnJvbSBy
ZXN1bHRzZGJweS5tb2RlbC5jYXNzYW5kcmFfY29udGV4dCBpbXBvcnQgQ2Fzc2FuZHJhQ29udGV4
dAotZnJvbSByZXN1bHRzZGJweS5tb2RlbC5tb2NrX2Nhc3NhbmRyYV9jb250ZXh0IGltcG9ydCBN
b2NrQ2Fzc2FuZHJhQ29udGV4dAotZnJvbSByZXN1bHRzZGJweS5tb2RlbC5tb2NrX21vZGVsX2Zh
Y3RvcnkgaW1wb3J0IE1vY2tNb2RlbEZhY3RvcnkKLWZyb20gcmVzdWx0c2RicHkubW9kZWwubW9j
a19yZXBvc2l0b3J5IGltcG9ydCBNb2NrU1ZOUmVwb3NpdG9yeQotZnJvbSByZXN1bHRzZGJweS5t
b2RlbC50ZXN0X2NvbnRleHQgaW1wb3J0IEV4cGVjdGF0aW9ucwotZnJvbSByZXN1bHRzZGJweS5t
b2RlbC53YWl0X2Zvcl9kb2NrZXJfdGVzdF9jYXNlIGltcG9ydCBXYWl0Rm9yRG9ja2VyVGVzdENh
c2UKLQotCi1jbGFzcyBGYWlsdXJlQ29udGV4dFRlc3QoV2FpdEZvckRvY2tlclRlc3RDYXNlKToK
LSAgICBLRVlTUEFDRSA9ICdmYWlsdXJlX2NvbnRleHRfdGVzdF9rZXlzcGFjZScKLQotICAgIGRl
ZiBpbml0X2RhdGFiYXNlKHNlbGYsIHJlZGlzPVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fzc2Fu
ZHJhQ29udGV4dCk6Ci0gICAgICAgIGNhc3NhbmRyYS5kcm9wX2tleXNwYWNlKGtleXNwYWNlPXNl
bGYuS0VZU1BBQ0UpCi0gICAgICAgIHNlbGYubW9kZWwgPSBNb2NrTW9kZWxGYWN0b3J5LmNyZWF0
ZShyZWRpcz1yZWRpcygpLCBjYXNzYW5kcmE9Y2Fzc2FuZHJhKGtleXNwYWNlPXNlbGYuS0VZU1BB
Q0UsIGNyZWF0ZV9rZXlzcGFjZT1UcnVlKSkKLSAgICAgICAgTW9ja01vZGVsRmFjdG9yeS5hZGRf
bW9ja19yZXN1bHRzKHNlbGYubW9kZWwsIHRlc3RfcmVzdWx0cz1kaWN0KAotICAgICAgICAgICAg
ZGV0YWlscz1kaWN0KGxpbms9J2R1bW15LWxpbmsnKSwKLSAgICAgICAgICAgIHJ1bl9zdGF0cz1k
aWN0KHRlc3RzX3NraXBwZWQ9MCksCi0gICAgICAgICAgICByZXN1bHRzPXsKLSAgICAgICAgICAg
ICAgICAnZmFzdCc6IHsKLSAgICAgICAgICAgICAgICAgICAgJ2VuY29kaW5nJzogewotICAgICAg
ICAgICAgICAgICAgICAgICAgJ2Nzcy1jYWNoZWQtYm9tLmh0bWwnOiBkaWN0KGV4cGVjdGVkPSdQ
QVNTJywgYWN0dWFsPSdGQUlMJywgdGltZT0xLjIpLAotICAgICAgICAgICAgICAgICAgICAgICAg
J2Nzcy1jaGFyc2V0LWRlZmF1bHQueGh0bWwnOiBkaWN0KGV4cGVjdGVkPSdGQUlMJywgYWN0dWFs
PSdGQUlMJywgdGltZT0xLjIpLAotICAgICAgICAgICAgICAgICAgICAgICAgJ2Nzcy1jaGFyc2V0
Lmh0bWwnOiBkaWN0KGV4cGVjdGVkPSdGQUlMJywgYWN0dWFsPSdQQVNTJywgdGltZT0xLjIpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgJ2Nzcy1saW5rLWNoYXJzZXQuaHRtbCc6IGRpY3QoZXhw
ZWN0ZWQ9J1BBU1MnLCBhY3R1YWw9J1BBU1MnLCB0aW1lPTEuMiksCi0gICAgICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9LAotICAgICAgICApKQotICAg
ICAgICBNb2NrTW9kZWxGYWN0b3J5LnByb2Nlc3NfcmVzdWx0cyhzZWxmLm1vZGVsKQotCi0gICAg
QFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VT
dHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCi0gICAgZGVm
IHRlc3RfZmFpbHVyZXNfY29sbGFwc2VkKHNlbGYsIHJlZGlzPVN0cmljdFJlZGlzLCBjYXNzYW5k
cmE9Q2Fzc2FuZHJhQ29udGV4dCk6Ci0gICAgICAgIHNlbGYuaW5pdF9kYXRhYmFzZShyZWRpcz1y
ZWRpcywgY2Fzc2FuZHJhPWNhc3NhbmRyYSkKLSAgICAgICAgcmVzdWx0cyA9IHNlbGYubW9kZWwu
ZmFpbHVyZV9jb250ZXh0LmZhaWx1cmVzX2J5X2NvbW1pdCgKLSAgICAgICAgICAgIGNvbmZpZ3Vy
YXRpb25zPVtDb25maWd1cmF0aW9uKHBsYXRmb3JtPSdNYWMnLCBzdHlsZT0nUmVsZWFzZScsIGZs
YXZvcj0nd2sxJyldLAotICAgICAgICAgICAgc3VpdGU9J2xheW91dC10ZXN0cycsIHJlY2VudD1U
cnVlLCB1bmV4cGVjdGVkPUZhbHNlLAotICAgICAgICApCi0KLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChsZW4ocmVzdWx0cyksIDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0cywg
c2V0KFsnZmFzdC9lbmNvZGluZy9jc3MtY2FjaGVkLWJvbS5odG1sJywgJ2Zhc3QvZW5jb2Rpbmcv
Y3NzLWNoYXJzZXQtZGVmYXVsdC54aHRtbCddKSkKLQotICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENh
c2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fz
c2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQotICAgIGRlZiB0ZXN0X3VuZXhwZWN0ZWRfZmFp
bHVyZXNfY29sbGFwc2VkKHNlbGYsIHJlZGlzPVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fzc2Fu
ZHJhQ29udGV4dCk6Ci0gICAgICAgIHNlbGYuaW5pdF9kYXRhYmFzZShyZWRpcz1yZWRpcywgY2Fz
c2FuZHJhPWNhc3NhbmRyYSkKLSAgICAgICAgcmVzdWx0cyA9IHNlbGYubW9kZWwuZmFpbHVyZV9j
b250ZXh0LmZhaWx1cmVzX2J5X2NvbW1pdCgKLSAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25zPVtD
b25maWd1cmF0aW9uKHBsYXRmb3JtPSdNYWMnLCBzdHlsZT0nUmVsZWFzZScsIGZsYXZvcj0nd2sx
JyldLAotICAgICAgICAgICAgc3VpdGU9J2xheW91dC10ZXN0cycsIHJlY2VudD1UcnVlLAotICAg
ICAgICApCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzdWx0cyksIDEpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0cywgc2V0KFsnZmFzdC9lbmNvZGluZy9jc3MtY2Fj
aGVkLWJvbS5odG1sJ10pKQotCi0gICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25v
X2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nh
c3NhbmRyYUNvbnRleHQpCi0gICAgZGVmIHRlc3RfZmFpbHVyZXMoc2VsZiwgcmVkaXM9U3RyaWN0
UmVkaXMsIGNhc3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0KToKLSAgICAgICAgc2VsZi5pbml0X2Rh
dGFiYXNlKHJlZGlzPXJlZGlzLCBjYXNzYW5kcmE9Y2Fzc2FuZHJhKQotICAgICAgICByZXN1bHRz
ID0gc2VsZi5tb2RlbC5mYWlsdXJlX2NvbnRleHQuZmFpbHVyZXNfYnlfY29tbWl0KAotICAgICAg
ICAgICAgY29uZmlndXJhdGlvbnM9W0NvbmZpZ3VyYXRpb24ocGxhdGZvcm09J01hYycsIHN0eWxl
PSdSZWxlYXNlJywgZmxhdm9yPSd3azEnKV0sCi0gICAgICAgICAgICBzdWl0ZT0nbGF5b3V0LXRl
c3RzJywgcmVjZW50PVRydWUsIGNvbGxhcHNlZD1GYWxzZSwgdW5leHBlY3RlZD1GYWxzZSwKLSAg
ICAgICAgKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlc3VsdHMpLCAxKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihsaXN0KHJlc3VsdHMudmFsdWVzKCkpWzBdKSwgNSkK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWQobGlzdChyZXN1bHRzLnZhbHVlcygpKVsw
XSwga2V5PWxhbWJkYSB2YWx1ZTogdmFsdWVbJ3V1aWQnXSlbMF0sIHsKLSAgICAgICAgICAgICdm
YXN0L2VuY29kaW5nL2Nzcy1jYWNoZWQtYm9tLmh0bWwnOiAnRkFJTCcsCi0gICAgICAgICAgICAn
ZmFzdC9lbmNvZGluZy9jc3MtY2hhcnNldC1kZWZhdWx0LnhodG1sJzogJ0ZBSUwnLAotICAgICAg
ICAgICAgJ3N0YXJ0X3RpbWUnOiBsaXN0KHJlc3VsdHMudmFsdWVzKCkpWzBdWzBdWydzdGFydF90
aW1lJ10sCi0gICAgICAgICAgICAndXVpZCc6IDE1MzgwMjk0NzkwMAotICAgICAgICB9KQotCi0g
ICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZh
a2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCi0gICAg
ZGVmIHRlc3RfdW5leHBlY3RlZF9mYWlsdXJlcyhzZWxmLCByZWRpcz1TdHJpY3RSZWRpcywgY2Fz
c2FuZHJhPUNhc3NhbmRyYUNvbnRleHQpOgotICAgICAgICBzZWxmLmluaXRfZGF0YWJhc2UocmVk
aXM9cmVkaXMsIGNhc3NhbmRyYT1jYXNzYW5kcmEpCi0gICAgICAgIHJlc3VsdHMgPSBzZWxmLm1v
ZGVsLmZhaWx1cmVfY29udGV4dC5mYWlsdXJlc19ieV9jb21taXQoCi0gICAgICAgICAgICBjb25m
aWd1cmF0aW9ucz1bQ29uZmlndXJhdGlvbihwbGF0Zm9ybT0nTWFjJywgc3R5bGU9J1JlbGVhc2Un
LCBmbGF2b3I9J3drMScpXSwKLSAgICAgICAgICAgIHN1aXRlPSdsYXlvdXQtdGVzdHMnLCByZWNl
bnQ9VHJ1ZSwgY29sbGFwc2VkPUZhbHNlCi0gICAgICAgICkKLQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGxlbihyZXN1bHRzKSwgMSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obGlz
dChyZXN1bHRzLnZhbHVlcygpKVswXSksIDUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29y
dGVkKGxpc3QocmVzdWx0cy52YWx1ZXMoKSlbMF0sIGtleT1sYW1iZGEgdmFsdWU6IHZhbHVlWyd1
dWlkJ10pWzBdLCB7Ci0gICAgICAgICAgICAnZmFzdC9lbmNvZGluZy9jc3MtY2FjaGVkLWJvbS5o
dG1sJzogJ0ZBSUwnLAotICAgICAgICAgICAgJ3N0YXJ0X3RpbWUnOiBsaXN0KHJlc3VsdHMudmFs
dWVzKCkpWzBdWzBdWydzdGFydF90aW1lJ10sCi0gICAgICAgICAgICAndXVpZCc6IDE1MzgwMjk0
NzkwMAotICAgICAgICB9KQotCi0gICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25v
X2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nh
c3NhbmRyYUNvbnRleHQpCi0gICAgZGVmIHRlc3Rfbm9fZmFpbHVyZXMoc2VsZiwgcmVkaXM9U3Ry
aWN0UmVkaXMsIGNhc3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0KToKLSAgICAgICAgY2Fzc2FuZHJh
LmRyb3Bfa2V5c3BhY2Uoa2V5c3BhY2U9c2VsZi5LRVlTUEFDRSkKLSAgICAgICAgc2VsZi5tb2Rl
bCA9IE1vY2tNb2RlbEZhY3RvcnkuY3JlYXRlKHJlZGlzPXJlZGlzKCksIGNhc3NhbmRyYT1jYXNz
YW5kcmEoa2V5c3BhY2U9c2VsZi5LRVlTUEFDRSwgY3JlYXRlX2tleXNwYWNlPVRydWUpKQotICAg
ICAgICBNb2NrTW9kZWxGYWN0b3J5LmFkZF9tb2NrX3Jlc3VsdHMoc2VsZi5tb2RlbCkKLSAgICAg
ICAgTW9ja01vZGVsRmFjdG9yeS5wcm9jZXNzX3Jlc3VsdHMoc2VsZi5tb2RlbCkKLSAgICAgICAg
cmVzdWx0cyA9IHNlbGYubW9kZWwuZmFpbHVyZV9jb250ZXh0LmZhaWx1cmVzX2J5X2NvbW1pdCgK
LSAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25zPVtDb25maWd1cmF0aW9uKHBsYXRmb3JtPSdNYWMn
LCBzdHlsZT0nUmVsZWFzZScsIGZsYXZvcj0nd2sxJyldLAotICAgICAgICAgICAgc3VpdGU9J2xh
eW91dC10ZXN0cycsIHJlY2VudD1UcnVlLCBjb2xsYXBzZWQ9RmFsc2UsIHVuZXhwZWN0ZWQ9RmFs
c2UsCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzdWx0cyksIDAp
Ci0KLSAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVk
aXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkK
LSAgICBkZWYgdGVzdF9ub190ZXN0X3J1bnMoc2VsZiwgcmVkaXM9U3RyaWN0UmVkaXMsIGNhc3Nh
bmRyYT1DYXNzYW5kcmFDb250ZXh0KToKLSAgICAgICAgc2VsZi5pbml0X2RhdGFiYXNlKHJlZGlz
PXJlZGlzLCBjYXNzYW5kcmE9Y2Fzc2FuZHJhKQotICAgICAgICByZXN1bHRzID0gc2VsZi5tb2Rl
bC5mYWlsdXJlX2NvbnRleHQuZmFpbHVyZXNfYnlfY29tbWl0KAotICAgICAgICAgICAgY29uZmln
dXJhdGlvbnM9W0NvbmZpZ3VyYXRpb24ocGxhdGZvcm09J01hYycsIHN0eWxlPSdSZWxlYXNlJywg
Zmxhdm9yPSd3azEnKV0sCi0gICAgICAgICAgICBzdWl0ZT0nbGF5b3V0LXRlc3RzJywgcmVjZW50
PVRydWUsIGVuZD0wLAotICAgICAgICApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0
cywgTm9uZSkKSW5kZXg6IFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL21vY2tf
Y2Fzc2FuZHJhX2NvbnRleHQucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvcmVzdWx0c2RicHkvcmVz
dWx0c2RicHkvbW9kZWwvbW9ja19jYXNzYW5kcmFfY29udGV4dC5weQkocmV2aXNpb24gMjY1NTMx
KQorKysgVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvbW9ja19jYXNzYW5kcmFf
Y29udGV4dC5weQkobm9uZXhpc3RlbnQpCkBAIC0xLDI3NiArMCwwIEBACi0jIENvcHlyaWdodCAo
QykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJB
UyBJUyIgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotIyBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUgotIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotIyBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1pbXBvcnQgbW9jawotaW1wb3J0IHJlCi1pbXBvcnQg
dGltZQotCi1mcm9tIGNhc3NhbmRyYS5tZXRhZGF0YSBpbXBvcnQgQ29sdW1uTWV0YWRhdGEsIEtl
eXNwYWNlTWV0YWRhdGEsIE1ldGFkYXRhLCBUYWJsZU1ldGFkYXRhVjMKLWZyb20gY2Fzc2FuZHJh
LnV0aWwgaW1wb3J0IE9yZGVyZWREaWN0Ci1mcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZWZhdWx0
ZGljdAotZnJvbSByZXN1bHRzZGJweS5tb2RlbC5jYXNzYW5kcmFfY29udGV4dCBpbXBvcnQgQ2Fz
c2FuZHJhQ29udGV4dAotCi0KLWNsYXNzIE1vY2tDbHVzdGVyKG9iamVjdCk6Ci0KLSAgICBtZXRh
ZGF0YSA9IE1ldGFkYXRhKCkKLSAgICBkYXRhYmFzZSA9IHt9Ci0KLSAgICBkZWYgX19pbml0X18o
c2VsZiwgY29udGFjdF9wb2ludHM9WyIxMjcuMC4wLjEiXSwgcG9ydD05MDQyLCBhdXRoX3Byb3Zp
ZGVyPU5vbmUpOgotICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShjb250YWN0X3BvaW50cywgbGlz
dCkKLSAgICAgICAgc2VsZi5jb250YWN0X3BvaW50cyA9IGNvbnRhY3RfcG9pbnRzCi0gICAgICAg
IHNlbGYucG9ydCA9IHBvcnQKLSAgICAgICAgc2VsZi5zZXNzaW9ucyA9IFtdCi0KLSAgICBkZWYg
Y29ubmVjdChzZWxmLCBrZXlzcGFjZT1Ob25lKToKLSAgICAgICAgcmVzdWx0ID0gTW9ja1Nlc3Np
b24oc2VsZiwga2V5c3BhY2UpCi0gICAgICAgIHNlbGYuc2Vzc2lvbnMuYXBwZW5kKHJlc3VsdCkK
LSAgICAgICAgcmV0dXJuIHJlc3VsdAotCi0gICAgZGVmIHNodXRkb3duKHNlbGYpOgotICAgICAg
ICBzZWxmLnNlc3Npb25zID0gW10KLQotCi1jbGFzcyBNb2NrU2Vzc2lvbihvYmplY3QpOgotCi0g
ICAgZGVmIF9faW5pdF9fKHNlbGYsIGNsdXN0ZXIsIGtleXNwYWNlPU5vbmUpOgotICAgICAgICBz
ZWxmLmNsdXN0ZXIgPSBjbHVzdGVyCi0gICAgICAgIHNlbGYua2V5c3BhY2UgPSBrZXlzcGFjZQot
Ci0gICAgZGVmIGV4ZWN1dGUoc2VsZiwgKmFyZ3MpOgotICAgICAgICBwYXNzCi0KLQotY2xhc3Mg
TW9ja0NRTEVuZ2luZUNvbnRleHQoKToKLQotICAgIGNvbm5lY3Rpb25zID0ge30KLQotICAgIGRl
ZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgc2VsZi5fZGVwdGggPSAwCi0gICAgICAgIHNlbGYu
cGF0Y2hlcyA9IFsKLSAgICAgICAgICAgIG1vY2sucGF0Y2goJ3Jlc3VsdHNkYnB5Lm1vZGVsLmNh
c3NhbmRyYV9jb250ZXh0LkNsdXN0ZXInLCBuZXc9TW9ja0NsdXN0ZXIpLAotICAgICAgICAgICAg
bW9jay5wYXRjaCgncmVzdWx0c2RicHkubW9kZWwuY2Fzc2FuZHJhX2NvbnRleHQucmVnaXN0ZXJf
Y29ubmVjdGlvbicsIG5ldz1zZWxmLnJlZ2lzdGVyX2Nvbm5lY3Rpb24pLAotICAgICAgICAgICAg
bW9jay5wYXRjaCgncmVzdWx0c2RicHkubW9kZWwuY2Fzc2FuZHJhX2NvbnRleHQudW5yZWdpc3Rl
cl9jb25uZWN0aW9uJywgbmV3PXNlbGYudW5yZWdpc3Rlcl9jb25uZWN0aW9uKSwKLSAgICAgICAg
ICAgIG1vY2sucGF0Y2goJ3Jlc3VsdHNkYnB5Lm1vZGVsLmNhc3NhbmRyYV9jb250ZXh0LmdldF9j
bHVzdGVyJywgbmV3PXNlbGYuZ2V0X2NsdXN0ZXIpLAotICAgICAgICAgICAgbW9jay5wYXRjaCgn
cmVzdWx0c2RicHkubW9kZWwuY2Fzc2FuZHJhX2NvbnRleHQuY3JlYXRlX2tleXNwYWNlX3NpbXBs
ZScsIG5ldz1zZWxmLmNyZWF0ZV9rZXlzcGFjZV9zaW1wbGUpLAotICAgICAgICAgICAgbW9jay5w
YXRjaCgncmVzdWx0c2RicHkubW9kZWwuY2Fzc2FuZHJhX2NvbnRleHQuY3JlYXRlX2tleXNwYWNl
X25ldHdvcmtfdG9wb2xvZ3knLCBuZXc9c2VsZi5jcmVhdGVfa2V5c3BhY2VfbmV0d29ya190b3Bv
bG9neSksCi0gICAgICAgICAgICBtb2NrLnBhdGNoKCdyZXN1bHRzZGJweS5tb2RlbC5jYXNzYW5k
cmFfY29udGV4dC5kcm9wX2tleXNwYWNlJywgbmV3PXNlbGYuZHJvcF9rZXlzcGFjZSksCi0gICAg
ICAgICAgICBtb2NrLnBhdGNoKCdyZXN1bHRzZGJweS5tb2RlbC5jYXNzYW5kcmFfY29udGV4dC5z
eW5jX3RhYmxlJywgbmV3PXNlbGYuc3luY190YWJsZSksCi0gICAgICAgIF0KLQotICAgIGRlZiBf
X2VudGVyX18oc2VsZik6Ci0gICAgICAgIGlmIHNlbGYuX2RlcHRoID09IDA6Ci0gICAgICAgICAg
ICBmb3IgcGF0Y2ggaW4gc2VsZi5wYXRjaGVzOgotICAgICAgICAgICAgICAgIHBhdGNoLl9fZW50
ZXJfXygpCi0gICAgICAgIHNlbGYuX2RlcHRoICs9IDEKLQotICAgIGRlZiBfX2V4aXRfXyhzZWxm
LCAqYXJncywgKiprd2FyZ3MpOgotICAgICAgICBzZWxmLl9kZXB0aCAtPSAxCi0gICAgICAgIGlm
IHNlbGYuX2RlcHRoIDw9IDA6Ci0gICAgICAgICAgICBmb3IgcGF0Y2ggaW4gc2VsZi5wYXRjaGVz
OgotICAgICAgICAgICAgICAgIHBhdGNoLl9fZXhpdF9fKCphcmdzLCAqKmt3YXJncykKLQotICAg
IEBjbGFzc21ldGhvZAotICAgIGRlZiByZWdpc3Rlcl9jb25uZWN0aW9uKGNscywgbmFtZSwgc2Vz
c2lvbiwgKiprd2FyZ3MpOgotICAgICAgICBpZiBzZXNzaW9uIGlzIE5vbmU6Ci0gICAgICAgICAg
ICBzZXNzaW9uID0gTW9ja0NsdXN0ZXIoKS5jb25uZWN0KCkKLSAgICAgICAgY2xzLmNvbm5lY3Rp
b25zW25hbWVdID0gKHNlc3Npb24uY2x1c3Rlciwgc2Vzc2lvbikKLQotICAgIEBjbGFzc21ldGhv
ZAotICAgIGRlZiB1bnJlZ2lzdGVyX2Nvbm5lY3Rpb24oY2xzLCBuYW1lKToKLSAgICAgICAgaWYg
bmFtZSBpbiBjbHMuY29ubmVjdGlvbnM6Ci0gICAgICAgICAgICBkZWwgY2xzLmNvbm5lY3Rpb25z
W25hbWVdCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgZ2V0X2NsdXN0ZXIoY2xzLCBjb25u
ZWN0aW9uKToKLSAgICAgICAgcmV0dXJuIGNscy5jb25uZWN0aW9ucy5nZXQoY29ubmVjdGlvbiwg
W05vbmVdKVswXQotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIGNyZWF0ZV9rZXlzcGFjZV9z
aW1wbGUoY2xzLCBuYW1lLCByZXBsaWNhdGlvbl9mYWN0b3I9MSwgZHVyYWJsZV93cml0ZXM9VHJ1
ZSwgY29ubmVjdGlvbnM9W10pOgotICAgICAgICBmb3IgY29ubmVjdGlvbiBpbiBjb25uZWN0aW9u
czoKLSAgICAgICAgICAgIGFzc2VydCBjb25uZWN0aW9uIGluIGNscy5jb25uZWN0aW9ucwotICAg
ICAgICAgICAgaWYgbmFtZSBub3QgaW4gY2xzLmdldF9jbHVzdGVyKGNvbm5lY3Rpb24pLm1ldGFk
YXRhLmtleXNwYWNlczoKLSAgICAgICAgICAgICAgICBjbHMuZ2V0X2NsdXN0ZXIoY29ubmVjdGlv
bikubWV0YWRhdGEua2V5c3BhY2VzW25hbWVdID0gS2V5c3BhY2VNZXRhZGF0YShuYW1lLCBkdXJh
YmxlX3dyaXRlcywgTm9uZSwgTm9uZSkKLSAgICAgICAgICAgICAgICBNb2NrQ2x1c3Rlci5kYXRh
YmFzZVtuYW1lXSA9IHt9Ci0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgY3JlYXRlX2tleXNw
YWNlX25ldHdvcmtfdG9wb2xvZ3koY2xzLCBuYW1lLCBkY19yZXBsaWNhdGlvbl9tYXA9e30sIGR1
cmFibGVfd3JpdGVzPVRydWUsIGNvbm5lY3Rpb25zPVtdKToKLSAgICAgICAgcmV0dXJuIGNscy5j
cmVhdGVfa2V5c3BhY2Vfc2ltcGxlKG5hbWUsIGR1cmFibGVfd3JpdGVzPWR1cmFibGVfd3JpdGVz
LCBjb25uZWN0aW9ucz1jb25uZWN0aW9ucykKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBk
cm9wX2tleXNwYWNlKGNscywgbmFtZSwgY29ubmVjdGlvbnM9W10pOgotICAgICAgICBmb3IgY29u
bmVjdGlvbiBpbiBjb25uZWN0aW9uczoKLSAgICAgICAgICAgIGFzc2VydCBjb25uZWN0aW9uIGlu
IGNscy5jb25uZWN0aW9ucwotICAgICAgICAgICAgaWYgbmFtZSBpbiBjbHMuZ2V0X2NsdXN0ZXIo
Y29ubmVjdGlvbikubWV0YWRhdGEua2V5c3BhY2VzOgotICAgICAgICAgICAgICAgIGRlbCBjbHMu
Z2V0X2NsdXN0ZXIoY29ubmVjdGlvbikubWV0YWRhdGEua2V5c3BhY2VzW25hbWVdCi0gICAgICAg
ICAgICAgICAgZGVsIE1vY2tDbHVzdGVyLmRhdGFiYXNlW25hbWVdCi0KLSAgICBAY2xhc3NtZXRo
b2QKLSAgICBkZWYgc3luY190YWJsZShjbHMsIG1vZGVsLCBrZXlzcGFjZXM9W10sIGNvbm5lY3Rp
b25zPVtdKToKLSAgICAgICAgZm9yIGNvbm5lY3Rpb24gaW4gY29ubmVjdGlvbnM6Ci0gICAgICAg
ICAgICBhc3NlcnQgY29ubmVjdGlvbiBpbiBjbHMuY29ubmVjdGlvbnMKLQotICAgICAgICAgICAg
Zm9yIGtleXNwYWNlIGluIGtleXNwYWNlczoKLSAgICAgICAgICAgICAgICBrZXlzcGFjZV9tZXRh
ZGF0YSA9IE1vY2tDUUxFbmdpbmVDb250ZXh0LmdldF9jbHVzdGVyKGNvbm5lY3Rpb24pLm1ldGFk
YXRhLmtleXNwYWNlcy5nZXQoa2V5c3BhY2UpCi0gICAgICAgICAgICAgICAgYXNzZXJ0IGtleXNw
YWNlX21ldGFkYXRhIGlzIG5vdCBOb25lCi0KLSAgICAgICAgICAgICAgICBwcmltYXJ5X2tleXMg
PSBbXQotICAgICAgICAgICAgICAgIGNvbHVtbl9rZXlzID0gW10KLSAgICAgICAgICAgICAgICBm
b3Iga2V5LCB2YWx1ZSBpbiBtb2RlbC5fY29sdW1ucy5pdGVtcygpOgotICAgICAgICAgICAgICAg
ICAgICBpZiB2YWx1ZS5wYXJ0aXRpb25fa2V5IG9yIHZhbHVlLnByaW1hcnlfa2V5OgotICAgICAg
ICAgICAgICAgICAgICAgICAgcHJpbWFyeV9rZXlzLmFwcGVuZChrZXkpCi0gICAgICAgICAgICAg
ICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5fa2V5cy5hcHBlbmQo
a2V5KQotCi0gICAgICAgICAgICAgICAgY29sdW1ucyA9IE9yZGVyZWREaWN0KCkKLSAgICAgICAg
ICAgICAgICBwYXJ0aXRpb25fa2V5cyA9IFtdCi0gICAgICAgICAgICAgICAgY2x1c3RlcmluZ19r
ZXlzID0gW10KLSAgICAgICAgICAgICAgICBmb3Iga2V5IGluIHByaW1hcnlfa2V5cyArIGNvbHVt
bl9rZXlzOgotICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IG1vZGVsLl9jb2x1bW5zW2tleV0K
LSAgICAgICAgICAgICAgICAgICAgbWV0YV9kYXRhID0gQ29sdW1uTWV0YWRhdGEoTm9uZSwga2V5
LCB2YWx1ZS5kYl90eXBlLCBpc19yZXZlcnNlZD0odmFsdWUuY2x1c3RlcmluZ19vcmRlciA9PSAn
REVTQycpKQotICAgICAgICAgICAgICAgICAgICBjb2x1bW5zW2tleV0gPSBtZXRhX2RhdGEKLQot
ICAgICAgICAgICAgICAgICAgICBpZiB2YWx1ZS5wYXJ0aXRpb25fa2V5OgotICAgICAgICAgICAg
ICAgICAgICAgICAgcGFydGl0aW9uX2tleXMuYXBwZW5kKG1ldGFfZGF0YSkKLSAgICAgICAgICAg
ICAgICAgICAgaWYgdmFsdWUucHJpbWFyeV9rZXk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBj
bHVzdGVyaW5nX2tleXMuYXBwZW5kKG1ldGFfZGF0YSkKLQotICAgICAgICAgICAgICAgIE1vY2tD
bHVzdGVyLmRhdGFiYXNlW2tleXNwYWNlXVttb2RlbC5fcmF3X2NvbHVtbl9mYW1pbHlfbmFtZSgp
XSA9IGRlZmF1bHRkaWN0KGxhbWJkYToge30pCi0gICAgICAgICAgICAgICAga2V5c3BhY2VfbWV0
YWRhdGEudGFibGVzW21vZGVsLl9yYXdfY29sdW1uX2ZhbWlseV9uYW1lKCldID0gVGFibGVNZXRh
ZGF0YVYzKAotICAgICAgICAgICAgICAgICAgICBrZXlzcGFjZSwgbW9kZWwuX3Jhd19jb2x1bW5f
ZmFtaWx5X25hbWUoKSwKLSAgICAgICAgICAgICAgICAgICAgY29sdW1ucz1jb2x1bW5zLCBwYXJ0
aXRpb25fa2V5PXBhcnRpdGlvbl9rZXlzLCBjbHVzdGVyaW5nX2tleT1jbHVzdGVyaW5nX2tleXMs
Ci0gICAgICAgICAgICAgICAgKQotCi0KLWNsYXNzIE1vY2tDYXNzYW5kcmFDb250ZXh0KENhc3Nh
bmRyYUNvbnRleHQpOgotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIGRyb3Bfa2V5c3BhY2Uo
Y2xzLCAqYXJncywgKiprd2FyZ3MpOgotICAgICAgICB3aXRoIE1vY2tDUUxFbmdpbmVDb250ZXh0
KCk6Ci0gICAgICAgICAgICBDYXNzYW5kcmFDb250ZXh0LmRyb3Bfa2V5c3BhY2UoKmFyZ3MsICoq
a3dhcmdzKQotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncyk6Ci0gICAg
ICAgIHNlbGYuX21vY2tfY3FsX2VuZ2luZSA9IE1vY2tDUUxFbmdpbmVDb250ZXh0KCkKLSAgICAg
ICAgd2l0aCBzZWxmLl9tb2NrX2NxbF9lbmdpbmU6Ci0gICAgICAgICAgICBzdXBlcihNb2NrQ2Fz
c2FuZHJhQ29udGV4dCwgc2VsZikuX19pbml0X18oKmFyZ3MsICoqa3dhcmdzKQotCi0gICAgZGVm
IF9fZW50ZXJfXyhzZWxmKToKLSAgICAgICAgc2VsZi5fbW9ja19jcWxfZW5naW5lLl9fZW50ZXJf
XygpCi0gICAgICAgIHN1cGVyKE1vY2tDYXNzYW5kcmFDb250ZXh0LCBzZWxmKS5fX2VudGVyX18o
KQotCi0gICAgZGVmIF9fZXhpdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncyk6Ci0gICAgICAgIHN1
cGVyKE1vY2tDYXNzYW5kcmFDb250ZXh0LCBzZWxmKS5fX2V4aXRfXygqYXJncywgKiprd2FyZ3Mp
Ci0gICAgICAgIHNlbGYuX21vY2tfY3FsX2VuZ2luZS5fX2V4aXRfXygqYXJncywgKiprd2FyZ3Mp
Ci0KLSAgICBAQ2Fzc2FuZHJhQ29udGV4dC5Bc3NlcnRDb25uZWN0ZWREZWNvcmF0b3IoKQotICAg
IGRlZiBpbnNlcnRfcm93KHNlbGYsIHRhYmxlX25hbWUsIHR0bD1Ob25lLCAqKmt3YXJncyk6Ci0g
ICAgICAgIGlmIHRhYmxlX25hbWUgbm90IGluIHNlbGYuX21vZGVsczoKLSAgICAgICAgICAgIHJh
aXNlIHNlbGYuU2NoZW1hRXhjZXB0aW9uKGYne3RhYmxlX25hbWV9IGRvZXMgbm90IGV4aXN0IGlu
IHRoZSBkYXRhYmFzZScpCi0KLSAgICAgICAgaXRlbSA9IHNlbGYuX21vZGVsc1t0YWJsZV9uYW1l
XSgqKmt3YXJncykKLSAgICAgICAgc2NoZW1hID0gc2VsZi5zY2hlbWFfZm9yX3RhYmxlKHRhYmxl
X25hbWUpCi0KLSAgICAgICAgcGFydGl0aW9uID0gW10KLSAgICAgICAgZm9yIGNvbHVtbiBpbiBz
Y2hlbWEucGFydGl0aW9uX2tleToKLSAgICAgICAgICAgIHBhcnRpdGlvbi5hcHBlbmQoZ2V0YXR0
cihpdGVtLCBjb2x1bW4ubmFtZSkpCi0gICAgICAgIGNsdXN0ZXIgPSBbXQotICAgICAgICBmb3Ig
Y29sdW1uIGluIHNjaGVtYS5wcmltYXJ5X2tleToKLSAgICAgICAgICAgIGlmIGdldGF0dHIoaXRl
bSwgY29sdW1uLm5hbWUpIG5vdCBpbiBwYXJ0aXRpb246Ci0gICAgICAgICAgICAgICAgY2x1c3Rl
ci5hcHBlbmQoZ2V0YXR0cihpdGVtLCBjb2x1bW4ubmFtZSkpCi0KLSAgICAgICAgc2VsZi5jbHVz
dGVyLmRhdGFiYXNlW3NlbGYua2V5c3BhY2VdW3RhYmxlX25hbWVdW3R1cGxlKHBhcnRpdGlvbild
W3R1cGxlKGNsdXN0ZXIpXSA9IChOb25lIGlmIHR0bCBpcyBOb25lIGVsc2UgdGltZS50aW1lKCkg
KyB0dGwsIGl0ZW0pCi0KLSAgICBAQ2Fzc2FuZHJhQ29udGV4dC5Bc3NlcnRDb25uZWN0ZWREZWNv
cmF0b3IoKQotICAgIGRlZiBzZWxlY3RfZnJvbV90YWJsZShzZWxmLCB0YWJsZV9uYW1lLCBsaW1p
dD0xMDAwMCwgKiprd2FyZ3MpOgotICAgICAgICByZXN1bHQgPSBbXQotICAgICAgICBzY2hlbWEg
PSBzZWxmLnNjaGVtYV9mb3JfdGFibGUodGFibGVfbmFtZSkKLQotICAgICAgICBwYXJ0aXRpb25f
bmFtZXMgPSBbXQotICAgICAgICBmb3IgY29sdW1uIGluIHNjaGVtYS5wYXJ0aXRpb25fa2V5Ogot
ICAgICAgICAgICAgcGFydGl0aW9uX25hbWVzLmFwcGVuZChjb2x1bW4ubmFtZSkKLQotICAgICAg
ICAjIFNvcnQga3dhcmdzIHNvIHRoZXkgYXJlIGluIHRoZSBzYW1lIG9yZGVyIGFzIHRoZSBjb2x1
bW5zLgotICAgICAgICBvcmRlcmVkX2t3YXJncyA9IE9yZGVyZWREaWN0KCkKLSAgICAgICAgZm9y
IG5hbWUgaW4gc2VsZi5fbW9kZWxzW3RhYmxlX25hbWVdLl9jb2x1bW5zLmtleXMoKToKLSAgICAg
ICAgICAgIGZvciBrZXksIHZhbHVlIGluIGt3YXJncy5pdGVtcygpOgotICAgICAgICAgICAgICAg
IGlmIGtleS5zcGxpdCgnX18nKVswXSA9PSBuYW1lIGFuZCB2YWx1ZSBpcyBub3QgTm9uZToKLSAg
ICAgICAgICAgICAgICAgICAgb3JkZXJlZF9rd2FyZ3Nba2V5XSA9IHZhbHVlCi0KLSAgICAgICAg
IyBDb252ZXJ0IGFyZ3VtZW50cyB0byBmaWx0ZXJzCi0gICAgICAgIHBhcnRpdGlvbnMgPSBbW11d
Ci0gICAgICAgIGZpbHRlcnMgPSBbXQotICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBvcmRlcmVk
X2t3YXJncy5pdGVtcygpOgotICAgICAgICAgICAga2V5X3ZhbHVlID0ga2V5LnNwbGl0KCdfXycp
WzBdCi0gICAgICAgICAgICBvcGVyYXRvciA9IE5vbmUgaWYgbGVuKGtleS5zcGxpdCgnX18nKSkg
PT0gMSBlbHNlIGtleS5zcGxpdCgnX18nKVsxXQotCi0gICAgICAgICAgICBpZiBrZXlfdmFsdWUg
aW4gcGFydGl0aW9uX25hbWVzOgotICAgICAgICAgICAgICAgIGlmIG9wZXJhdG9yID09ICdpbic6
Ci0gICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsX3BhcnRpdGlvbnMgPSBsaXN0KHBhcnRpdGlv
bnMpCi0gICAgICAgICAgICAgICAgICAgIHBhcnRpdGlvbnMgPSBbXQotICAgICAgICAgICAgICAg
ICAgICBmb3IgXyBpbiByYW5nZShsZW4odmFsdWUpKToKLSAgICAgICAgICAgICAgICAgICAgICAg
IGZvciBlbGVtZW50IGluIG9yaWdpbmFsX3BhcnRpdGlvbnM6Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcGFydGl0aW9ucy5hcHBlbmQobGlzdChlbGVtZW50KSkKLSAgICAgICAgICAgICAg
ICAgICAgZm9yIG11bHRpcGxpZXIgaW4gcmFuZ2UobGVuKHZhbHVlKSk6Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBmb3IgaW5kZXggaW4gcmFuZ2UobGVuKG9yaWdpbmFsX3BhcnRpdGlvbnMpKToK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0aXRpb25zW211bHRpcGxpZXIgKiBsZW4o
b3JpZ2luYWxfcGFydGl0aW9ucykgKyBpbmRleF0uYXBwZW5kKHZhbHVlW211bHRpcGxpZXJdKQot
ICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGZvciBwYXJ0aXRpb24g
aW4gcGFydGl0aW9uczoKLSAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRpdGlvbi5hcHBlbmQo
dmFsdWUpCi0KLSAgICAgICAgICAgIGZpbHRlcnMuYXBwZW5kKHNlbGYuZmlsdGVyX2Zvcl9hcmd1
bWVudChrZXksIHZhbHVlKSkKLQotICAgICAgICBpZiBsZW4ocGFydGl0aW9uc1swXSkgPT0gMDoK
LSAgICAgICAgICAgIHBhcnRpdGlvbnMgPSBzZWxmLmNsdXN0ZXIuZGF0YWJhc2Vbc2VsZi5rZXlz
cGFjZV1bdGFibGVfbmFtZV0ua2V5cygpCi0KLSAgICAgICAgY2FuZGlkYXRlX2VsZW1lbnRzID0g
W10KLSAgICAgICAgZm9yIHBhcnRpdGlvbiBpbiBwYXJ0aXRpb25zOgotICAgICAgICAgICAgZm9y
IGtleSwgcm93IGluIHNlbGYuY2x1c3Rlci5kYXRhYmFzZVtzZWxmLmtleXNwYWNlXVt0YWJsZV9u
YW1lXVt0dXBsZShwYXJ0aXRpb24pXS5pdGVtcygpOgotICAgICAgICAgICAgICAgIGRvZXNfbWF0
Y2ggPSBUcnVlCi0gICAgICAgICAgICAgICAgZm9yIGZpbHRlciBpbiBmaWx0ZXJzOgotICAgICAg
ICAgICAgICAgICAgICBpZiBub3QgZmlsdGVyKHJvd1sxXSk6Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBkb2VzX21hdGNoID0gRmFsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0g
ICAgICAgICAgICAgICAgaWYgbm90IGRvZXNfbWF0Y2g6Ci0gICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlCi0gICAgICAgICAgICAgICAgY2FuZGlkYXRlX2VsZW1lbnRzLmFwcGVuZCgocGFydGl0
aW9uLCBrZXkpKQotCi0gICAgICAgICMgVG8gcmV2ZXJzZSwgdGhleSBhbGwgbmVlZCB0byBhZ3Jl
ZS4gVGhpcyBtaWdodCBub3Qgd29yayB3aXRoIGNvbXBvdW5kIGNsdXN0ZXJpbmcga2V5cywgYnV0
IHdlIHJlYWxseQotICAgICAgICAjIHNob3VsZG4ndCB1c2UgdGhvc2UgYW55d2F5cwotICAgICAg
ICBpc19yZXZlcnNlZCA9IFRydWUKLSAgICAgICAgZm9yIGNvbHVtbiBpbiBzY2hlbWEucHJpbWFy
eV9rZXk6Ci0gICAgICAgICAgICBpZiBjb2x1bW4gaW4gc2NoZW1hLnBhcnRpdGlvbl9rZXk6Ci0g
ICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIGlmIG5vdCBjb2x1bW4uaXNfcmV2
ZXJzZWQ6Ci0gICAgICAgICAgICAgICAgaXNfcmV2ZXJzZWQgPSBGYWxzZQotICAgICAgICBjYW5k
aWRhdGVfZWxlbWVudHMuc29ydChyZXZlcnNlPWlzX3JldmVyc2VkKQotCi0gICAgICAgIGZvciBj
YW5kaWRhdGUgaW4gY2FuZGlkYXRlX2VsZW1lbnRzOgotICAgICAgICAgICAgZWxlbWVudCA9IHNl
bGYuY2x1c3Rlci5kYXRhYmFzZVtzZWxmLmtleXNwYWNlXVt0YWJsZV9uYW1lXVt0dXBsZShjYW5k
aWRhdGVbMF0pXVtjYW5kaWRhdGVbMV1dCi0gICAgICAgICAgICBkZWFkbGluZSA9IGVsZW1lbnRb
MF0KLSAgICAgICAgICAgIGlmIGRlYWRsaW5lIGlzIE5vbmUgb3IgZGVhZGxpbmUgPiB0aW1lLnRp
bWUoKToKLSAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGVsZW1lbnRbMV0pCi0gICAgICAg
ICAgICAgICAgbGltaXQgLT0gMQotICAgICAgICAgICAgICAgIGlmIGxpbWl0IDw9IDA6Ci0gICAg
ICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAg
ICAgICAgICAgZGVsIHNlbGYuY2x1c3Rlci5kYXRhYmFzZVtzZWxmLmtleXNwYWNlXVt0YWJsZV9u
YW1lXVt0dXBsZShjYW5kaWRhdGVbMF0pXVtjYW5kaWRhdGVbMV1dCi0gICAgICAgIHJldHVybiBy
ZXN1bHQKSW5kZXg6IFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL21vY2tfbW9k
ZWxfZmFjdG9yeS5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJw
eS9tb2RlbC9tb2NrX21vZGVsX2ZhY3RvcnkucHkJKHJldmlzaW9uIDI2NTUzMSkKKysrIFRvb2xz
L3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL21vY2tfbW9kZWxfZmFjdG9yeS5weQkobm9u
ZXhpc3RlbnQpCkBAIC0xLDE5NyArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMg
YXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECi0jIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IK
LSMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotIyBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UgotIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotCi1pbXBvcnQgYmFzZTY0Ci1pbXBvcnQgaW8KLWltcG9ydCB0aW1lCi0KLWltcG9y
dCBjYWxlbmRhcgotZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVyLmNvbmZpZ3VyYXRpb24gaW1w
b3J0IENvbmZpZ3VyYXRpb24KLWZyb20gcmVzdWx0c2RicHkubW9kZWwuY29uZmlndXJhdGlvbl9j
b250ZXh0X3VuaXR0ZXN0IGltcG9ydCBDb25maWd1cmF0aW9uQ29udGV4dFRlc3QKLWZyb20gcmVz
dWx0c2RicHkubW9kZWwubW9ja19yZXBvc2l0b3J5IGltcG9ydCBNb2NrU3Rhc2hSZXBvc2l0b3J5
LCBNb2NrU1ZOUmVwb3NpdG9yeQotZnJvbSByZXN1bHRzZGJweS5tb2RlbC5tb2RlbCBpbXBvcnQg
TW9kZWwKLQotCi1jbGFzcyBNb2NrTW9kZWxGYWN0b3J5KG9iamVjdCk6Ci0gICAgQVJDSElWRV9a
SVAgPSAiIiJVRXNEQkFvQUFBQUFBQXRTQlU4QUFBQUFBQUFBQUFBQUFBQUlBQkFBWVhKamFHbDJa
UzlWV0F3QVoyUklYV1prU0YzMUFSUUFVRXNEQkJRQUNBQUlBQTlTQlU4QUFBQUFBQUFBQUFBQUFB
QVFBQkFBWVhKamFHbDJaUzltYVd4bExuUjRkRlZZREFCb3ZVMWQKLSAgICBibVJJWGZVQkZBQkxT
U3hKQkFCUVN3Y0lZL1B6clFZQUFBQUVBQUFBVUVzREJBb0FBQUFBQUJSZENVOEFBQUFBQUFBQUFB
QUFBQUFKQUJBQVgxOU5RVU5QVTFndlZWZ01BQ2krVFYwb3ZrMWQ5UUVVQUZCTEF3UUtBQUFBQUFB
VVhRbFBBQUFBQUFBQQotICAgIEFBQUFBQUFBRVFBUUFGOWZUVUZEVDFOWUwyRnlZMmhwZG1VdlZW
Z01BQ2krVFYwb3ZrMWQ5UUVVQUZCTEF3UVVBQWdBQ0FBUFVnVlBBQUFBQUFBQUFBQUFBQUFBR3dB
UUFGOWZUVUZEVDFOWUwyRnlZMmhwZG1VdkxsOW1hV3hsTG5SNGRGVllEQUJvCi0gICAgdlUxZGJt
UklYZlVCRkFCallCVmpaMkJpWVBCTlRGYndEMWFJVUlBQ2tCZ0RKeEFiTVRBd2VnRnBJSit4aG9F
bzRCZ1NFZ1JoZ1hYY0FlSUZhRXFZb2VJQ0RBeFN5Zm01ZW9rRkJUbXBlam1KeFNXbHhha3BLWWts
cWNvQndWQzFiNERZZzRHQkg2RXUKLSAgICBOekU1QjJLK0NVUk9GQ0ZYV0pwWWxKaFhrcG1YeXBD
ZDRoRUxVc1VhS0s0QVZzMHc5NUg5bDM1MngrMzczNzV5Vm1nNG4wK2NmOUJCb2I2QmdZV3h0V21L
U1VwU2lwR3h0V05SY2tabVdXcE1oWkZCYUVsbVRtWkpwYldCczZHemtiT3pwYTZGcGFtRgotICAg
IHJvbVJtNld1azdtRmk2NkZxWnV4aWFtTGhhdXJpU3NEQUZCTEJ3akVFM2RyNEFBQUFId0JBQUJR
U3dNRUZBQUlBQWdBekZ3SlR3QUFBQUFBQUFBQUFBQUFBQklBRUFCaGNtTm9hWFpsTDJsdVpHVjRM
bWgwYld4VldBd0FvcjFOWGFDOVRWMzFBUlFBCi0gICAgdFZOZGIrSXdFSHozcjlqMnFaVUN2ZmJ0
N2hDU1NReFlDbkhPZHNyeG1CSzN0UlJpbEpqMit1OXZiYWpLZmVqZURnbGlNcnV6TTdQSjVHSTBJ
cEM2L1Z0dm41NDlYS1hYY1BmcDlqUFEvYjQxd0x2dEdHamJRa1FINk0xZytoZlRqQWtCYVJvNytO
NCsKLSAgICBITHgxSGRSZEE0ZkJnTzFnY0lkK2ErS2RCOXZWL1JzOHVuNDNKUEJxL1RPNFBsN2R3
UlBZdWNZKzJtMGRHQktvZXdONzArK3M5NmFCZmU5ZWJJTUgvMXg3L0RISTByYnUxWFpQc0hWZFkw
UFRRR0xYenZndkJHN0h2NGthd0QyK3E5bTZCdXNPZzBjVAotICAgIHZrYVZnYkYrY0M4Qk90a25n
Si9PZWJzMUNlSjJnQmJaQXNuSHdHanJWelU0Y3R2V2RtZjZNWUc3UDBYZ3NMTWMza1dndithQXd2
NkhEamo2aXp5TjJ4NTJwdlAxKzVwdWNBTU8wUjUydFRlOXJkdmhJK3k0b2tCN2JpR3NXeSs1QWlY
bWVrMGxBenlYCi0gICAgVXR6empHVXcyd0F0eXh4dkZ1a1lMcWxDOUJKb2tlRjNRNEI5THlWVENv
UUV2aXB6amgxSUlXbWhPVk5KYU1xcmpCZUxCR2FWaGtKb3lQbUtheXpUSXNHeGpQeWxEOFFjVmt5
bVMveExaenpuZWhNbnpya3V3ckE1VHFOUVVxbDVXdVZVRWlncldRckYKLSAgICBJS2pQdUVwenls
Y3NHd01Ld0tIQTdsbWhRUzFwbnArN0VkaVppa0pManVLRVZEQmpLSS9PRUk4amlnMlNTWmJxWU9U
amxHSXdLQ3hQUUpVczVYZ0lPVEMwUWVVbUNWRWdxV0xmS3F4Q0ZESzZvZ3QwZGZYdk5FZ0lQYTBr
V3dXeEdJR3Faa3B6WFdrRwotICAgIEN5R3lHTEppOHA2blRIMkZYS2dZVktWWWdpTTBUYUlmNU1D
WUVNZmlXYVY0REl3WG1rbFpsWnFMNGhxV1lvMkJvRXFLdlZsTVZoVFJMZTVEU053cTBvWWNZdklK
ckpjTUFSbXlqR25SRUlQQzFGSjlYb1lETVVSTnpueEN3Ulk1WDdBaVpRRVdnV2JOCi0gICAgRmJ2
R1JYRVZDdmh4OEpwdVFGVFJOZFlFVCtSNFBuc3NrN2hHNEhPZzJUMFB5ay9WdUhuRlQ0OUpqQzFk
bmpJZms5Rm9Tc2prMmUvYUtWNU0zWmgrT3ZIV3QyWnF1OGI4R0Fkb2NuTzhNN2s1VlpESmcydmVw
dkVOV3hwOEErSFY5VzF6UVNZM1J3QXIKLSAgICBBK1ZQVUVzSENQYmRNTXZpQWdBQVlRVUFBRkJM
QXdRVUFBZ0FDQURNWEFsUEFBQUFBQUFBQUFBQUFBQUFIUUFRQUY5ZlRVRkRUMU5ZTDJGeVkyaHBk
bVV2TGw5cGJtUmxlQzVvZEcxc1ZWZ01BS0s5VFYyZ3ZVMWQ5UUVVQUdOZ0ZXTm5ZR0pnOEUxTQot
ICAgIFZ2QVBWb2hRZ0FLUUdBTW5FQnN4TURCNkFXa2duN0dHZ1NqZ0dCSVNCR0dCZGR3QjRnVm9T
cGloNGdJTURGTEorYmw2aVFVRk9hbDZPWW5GSmFYRnFTa3BpU1dweWdIQlVMVnZnTmlEZ1lFZm9T
NDNNVGtIWXI0SlJFNFVJVmRZbWxpVW1GZVNtWmZLCi0gICAgVUwvWE54YWs2cUxmRWlHd2FvYTVq
K3kvOUxNN2J0Ly85cFd6UXNQNWZPTDhndzRLOVEwTUxJeXRUVk5NVXBKU2pJeXRIWXVTTXpMTFVt
TXFqQXhDU3pKek1rc3FyUTJjRFoyTm5KMHRkUzBzVFMxMFRZemNMSFdkekMxY2RDMU0zWXhOVEYw
c1hGMU4KLSAgICBYQmtBVUVzSENMUkJHd3JnQUFBQWZBRUFBRkJMQXdRVUFBZ0FDQUFMVWdWUEFB
QUFBQUFBQUFBQUFBQUFFZ0FRQUY5ZlRVRkRUMU5ZTHk1ZllYSmphR2wyWlZWWURBQm5aRWhkWm1S
SVhmVUJGQUJqWUJWaloyQmlZUEJOVEZid0QxYUlVSUFDa0JnRAotICAgIEp4QWJNVEF3Q2dGcElK
L1JoWUVvNEJnU0VnUmhnWFZzQWVJSmFFcVlvT0llREF6OHlmbTVlb2tGQlRtcGVybUp5VGtRK1Q4
UU9WR0VYR0ZwWWxGaVhrbG1YaW9ESTBOdHllM2ZpZk1jSEtaOGZYVEVaYXVMTFNQRDNFZjJYL3Ja
SGJmdmYvdktXYUhoCi0gICAgZkQ0eDdpelVOekN3TUxZMmdBSnJ4Nkxrak15eTFKZ0tJNFBRa3N5
Y3pKSkthd05uUTJjaloyZExYUXRMVXd0ZEV5TTNTMTBuY3dzWFhRdFROMk1UVXhjTFYxY1RWd1lB
VUVzSENBQW9sVGJIQUFBQVJBRUFBRkJMQVFJVkF3b0FBQUFBQUF0U0JVOEEKLSAgICBBQUFBQUFB
QUFBQUFBQUFJQUF3QUFBQUFBQUFBQUVEdFFRQUFBQUJoY21Ob2FYWmxMMVZZQ0FCblpFaGRabVJJ
WFZCTEFRSVZBeFFBQ0FBSUFBOVNCVTlqOC9PdEJnQUFBQVFBQUFBUUFBd0FBQUFBQUFBQUFFQ2tn
VFlBQUFCaGNtTm9hWFpsTDJacAotICAgIGJHVXVkSGgwVlZnSUFHaTlUVjF1WkVoZFVFc0JBaFVE
Q2dBQUFBQUFGRjBKVHdBQUFBQUFBQUFBQUFBQUFBa0FEQUFBQUFBQUFBQUFRUDFCaWdBQUFGOWZU
VUZEVDFOWUwxVllDQUFvdmsxZEtMNU5YVkJMQVFJVkF3b0FBQUFBQUJSZENVOEFBQUFBCi0gICAg
QUFBQUFBQUFBQUFSQUF3QUFBQUFBQUFBQUVEOVFjRUFBQUJmWDAxQlEwOVRXQzloY21Ob2FYWmxM
MVZZQ0FBb3ZrMWRLTDVOWFZCTEFRSVZBeFFBQ0FBSUFBOVNCVS9FRTNkcjRBQUFBSHdCQUFBYkFB
d0FBQUFBQUFBQUFFQ2tnUUFCQUFCZlgwMUIKLSAgICBRMDlUV0M5aGNtTm9hWFpsTHk1ZlptbHNa
UzUwZUhSVldBZ0FhTDFOWFc1a1NGMVFTd0VDRlFNVUFBZ0FDQURNWEFsUDl0MHd5K0lDQUFCaEJR
QUFFZ0FNQUFBQUFBQUFBQUJBcElFNUFnQUFZWEpqYUdsMlpTOXBibVJsZUM1b2RHMXNWVmdJQUtL
OQotICAgIFRWMmd2VTFkVUVzQkFoVURGQUFJQUFnQXpGd0pUN1JCR3dyZ0FBQUFmQUVBQUIwQURB
QUFBQUFBQUFBQVFLU0Jhd1VBQUY5ZlRVRkRUMU5ZTDJGeVkyaHBkbVV2TGw5cGJtUmxlQzVvZEcx
c1ZWZ0lBS0s5VFYyZ3ZVMWRVRXNCQWhVREZBQUlBQWdBCi0gICAgQzFJRlR3QW9sVGJIQUFBQVJB
RUFBQklBREFBQUFBQUFBQUFBUUtTQnBnWUFBRjlmVFVGRFQxTllMeTVmWVhKamFHbDJaVlZZQ0FC
blpFaGRabVJJWFZCTEJRWUFBQUFBQ0FBSUFGNENBQUM5QndBQUFBQT0iIiIKLSAgICBUSFJFRV9X
RUVLUyA9IDYwICogNjAgKiAyNCAqIDIxCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgY3Jl
YXRlKGNscywgcmVkaXMsIGNhc3NhbmRyYSwgYXN5bmNfcHJvY2Vzc2luZz1GYWxzZSk6Ci0gICAg
ICAgIG9sZGVzdF9jb21taXQgPSB0aW1lLnRpbWUoKQotICAgICAgICBmb3IgcmVwbyBpbiBbTW9j
a1N0YXNoUmVwb3NpdG9yeS5zYWZhcmkoKSwgTW9ja1NWTlJlcG9zaXRvcnkud2Via2l0KCldOgot
ICAgICAgICAgICAgZm9yIGNvbW1pdHMgaW4gcmVwby5jb21taXRzLnZhbHVlcygpOgotICAgICAg
ICAgICAgICAgIGZvciBjb21taXQgaW4gY29tbWl0czoKLSAgICAgICAgICAgICAgICAgICAgb2xk
ZXN0X2NvbW1pdCA9IG1pbihvbGRlc3RfY29tbWl0LCBjYWxlbmRhci50aW1lZ20oY29tbWl0LnRp
bWVzdGFtcC50aW1ldHVwbGUoKSkpCi0KLSAgICAgICAgbW9kZWwgPSBNb2RlbCgKLSAgICAgICAg
ICAgIHJlZGlzPXJlZGlzLAotICAgICAgICAgICAgY2Fzc2FuZHJhPWNhc3NhbmRyYSwKLSAgICAg
ICAgICAgIHJlcG9zaXRvcmllcz1bCi0gICAgICAgICAgICAgICAgTW9ja1N0YXNoUmVwb3NpdG9y
eS5zYWZhcmkocmVkaXM9cmVkaXMpLAotICAgICAgICAgICAgICAgIE1vY2tTVk5SZXBvc2l0b3J5
LndlYmtpdChyZWRpcz1yZWRpcyksCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgZGVmYXVs
dF90dGxfc2Vjb25kcz10aW1lLnRpbWUoKSAtIG9sZGVzdF9jb21taXQgKyBNb2RlbC5UVExfV0VF
SywKLSAgICAgICAgICAgIGFyY2hpdmVfdHRsX3NlY29uZHM9dGltZS50aW1lKCkgLSBvbGRlc3Rf
Y29tbWl0ICsgTW9kZWwuVFRMX1dFRUssCi0gICAgICAgICAgICBhc3luY19wcm9jZXNzaW5nPWFz
eW5jX3Byb2Nlc3NpbmcsCi0gICAgICAgICkKLSAgICAgICAgd2l0aCBtb2RlbC5jb21taXRfY29u
dGV4dCwgbW9kZWwuY29tbWl0X2NvbnRleHQuY2Fzc2FuZHJhLmJhdGNoX3F1ZXJ5X2NvbnRleHQo
KToKLSAgICAgICAgICAgIGZvciByZXBvc2l0b3J5IGluIG1vZGVsLmNvbW1pdF9jb250ZXh0LnJl
cG9zaXRvcmllcy52YWx1ZXMoKToKLSAgICAgICAgICAgICAgICBmb3IgYnJhbmNoX2NvbW1pdHMg
aW4gcmVwb3NpdG9yeS5jb21taXRzLnZhbHVlcygpOgotICAgICAgICAgICAgICAgICAgICBmb3Ig
Y29tbWl0IGluIGJyYW5jaF9jb21taXRzOgotICAgICAgICAgICAgICAgICAgICAgICAgbW9kZWwu
Y29tbWl0X2NvbnRleHQucmVnaXN0ZXJfY29tbWl0KGNvbW1pdCkKLSAgICAgICAgcmV0dXJuIG1v
ZGVsCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgbGF5b3V0X3Rlc3RfcmVzdWx0cyhjbHMp
OgotICAgICAgICBkZWZhdWx0X3Jlc3VsdCA9IHsnZXhwZWN0ZWQnOiAnUEFTUycsICdtb2RpZmll
cnMnOiAnJywgJ2FjdHVhbCc6ICdQQVNTJywgJ3RpbWUnOiAxLjJ9Ci0gICAgICAgIHJldHVybiBk
aWN0KAotICAgICAgICAgICAgZGV0YWlscz1kaWN0KGxpbms9J2R1bW15LWxpbmsnKSwKLSAgICAg
ICAgICAgIHJ1bl9zdGF0cz1kaWN0KHRlc3RzX3NraXBwZWQ9MCksCi0gICAgICAgICAgICByZXN1
bHRzPXsKLSAgICAgICAgICAgICAgICAnZmFzdCc6IHsKLSAgICAgICAgICAgICAgICAgICAgJ2Vu
Y29kaW5nJzogewotICAgICAgICAgICAgICAgICAgICAgICAgJ2Nzcy1jYWNoZWQtYm9tLmh0bWwn
OiBkZWZhdWx0X3Jlc3VsdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICdjc3MtY2hhcnNldC1k
ZWZhdWx0LnhodG1sJzogZGVmYXVsdF9yZXN1bHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAn
Y3NzLWNoYXJzZXQuaHRtbCc6IGRlZmF1bHRfcmVzdWx0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgJ2Nzcy1saW5rLWNoYXJzZXQuaHRtbCc6IGRlZmF1bHRfcmVzdWx0LAotICAgICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSwKLSAgICAgICAgKQot
Ci0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIGl0ZXJhdGVfYWxsX2NvbW1pdHMoY2xzLCBtb2Rl
bCwgY2FsbGJhY2spOgotICAgICAgICByZXBvcyA9ICgnd2Via2l0JywgJ3NhZmFyaScpCi0gICAg
ICAgIGJyYW5jaGVzID0gKE5vbmUsICdzYWZhcmktNjA2LWJyYW5jaCcpCi0gICAgICAgIGZvciBi
cmFuY2ggaW4gYnJhbmNoZXM6Ci0gICAgICAgICAgICBjb21taXRfaW5kZXggPSB7cmVwbzogMCBm
b3IgcmVwbyBpbiByZXBvc30KLSAgICAgICAgICAgIGNvbW1pdHNfZm9yX3JlcG8gPSB7cmVwbzog
c29ydGVkKG1vZGVsLmNvbW1pdF9jb250ZXh0LmZpbmRfY29tbWl0c19pbl9yYW5nZShyZXBvLCBi
cmFuY2gpKSBmb3IgcmVwbyBpbiByZXBvc30KLQotICAgICAgICAgICAgZm9yIHJlcG8gaW4gcmVw
b3M6Ci0gICAgICAgICAgICAgICAgd2hpbGUgbWF4KFtjb21taXRzX2Zvcl9yZXBvW3JdW2NvbW1p
dF9pbmRleFtyXV0gZm9yIHIgaW4gcmVwb3NdKSA+IGNvbW1pdHNfZm9yX3JlcG9bcmVwb11bY29t
bWl0X2luZGV4W3JlcG9dXToKLSAgICAgICAgICAgICAgICAgICAgaWYgY29tbWl0X2luZGV4W3Jl
cG9dICsgMSA+PSBsZW4oY29tbWl0c19mb3JfcmVwb1tyZXBvXSk6Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBicmVhawotICAgICAgICAgICAgICAgICAgICBjb21taXRfaW5kZXhbcmVwb10gKz0g
MQotCi0gICAgICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgICAgIGNvbW1pdHMgPSBb
XQotICAgICAgICAgICAgICAgIGZvciByZXBvIGluIHJlcG9zOgotICAgICAgICAgICAgICAgICAg
ICBjb21taXRzLmFwcGVuZChjb21taXRzX2Zvcl9yZXBvW3JlcG9dW2NvbW1pdF9pbmRleFtyZXBv
XV0pCi0gICAgICAgICAgICAgICAgY2FsbGJhY2soY29tbWl0cykKLQotICAgICAgICAgICAgICAg
IHlvdW5nZXN0X25leHRfcmVwbyA9IE5vbmUKLSAgICAgICAgICAgICAgICBmb3IgcmVwbyBpbiBy
ZXBvczoKLSAgICAgICAgICAgICAgICAgICAgaWYgY29tbWl0X2luZGV4W3JlcG9dICsgMSA+PSBs
ZW4oY29tbWl0c19mb3JfcmVwb1tyZXBvXSk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb250
aW51ZQotICAgICAgICAgICAgICAgICAgICBpZiBub3QgeW91bmdlc3RfbmV4dF9yZXBvOgotICAg
ICAgICAgICAgICAgICAgICAgICAgeW91bmdlc3RfbmV4dF9yZXBvID0gcmVwbwotICAgICAgICAg
ICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICAgICAgaWYgY29tbWl0c19m
b3JfcmVwb1t5b3VuZ2VzdF9uZXh0X3JlcG9dW2NvbW1pdF9pbmRleFt5b3VuZ2VzdF9uZXh0X3Jl
cG9dICsgMV0gPiBjb21taXRzX2Zvcl9yZXBvW3JlcG9dW2NvbW1pdF9pbmRleFtyZXBvXSArIDFd
OgotICAgICAgICAgICAgICAgICAgICAgICAgeW91bmdlc3RfbmV4dF9yZXBvID0gcmVwbwotICAg
ICAgICAgICAgICAgIGlmIG5vdCB5b3VuZ2VzdF9uZXh0X3JlcG86Ci0gICAgICAgICAgICAgICAg
ICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgY29tbWl0X2luZGV4W3lvdW5nZXN0X25leHRfcmVw
b10gKz0gMQotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIGFkZF9tb2NrX3Jlc3VsdHMoY2xz
LCBtb2RlbCwgY29uZmlndXJhdGlvbj1Db25maWd1cmF0aW9uKCksIHN1aXRlPSdsYXlvdXQtdGVz
dHMnLCB0ZXN0X3Jlc3VsdHM9Tm9uZSk6Ci0gICAgICAgIGlmIHRlc3RfcmVzdWx0cyBpcyBOb25l
OgotICAgICAgICAgICAgdGVzdF9yZXN1bHRzID0gY2xzLmxheW91dF90ZXN0X3Jlc3VsdHMoKQot
Ci0gICAgICAgIGNvbmZpZ3VyYXRpb25zID0gW2NvbmZpZ3VyYXRpb25dIGlmIGNvbmZpZ3VyYXRp
b24uaXNfY29tcGxldGUoKSBlbHNlIENvbmZpZ3VyYXRpb25Db250ZXh0VGVzdC5DT05GSUdVUkFU
SU9OUwotCi0gICAgICAgIHdpdGggbW9kZWwudXBsb2FkX2NvbnRleHQ6Ci0gICAgICAgICAgICBj
dXJyZW50ID0gdGltZS50aW1lKCkKLSAgICAgICAgICAgIG9sZCA9IGN1cnJlbnQgLSBjbHMuVEhS
RUVfV0VFS1MKLSAgICAgICAgICAgIGZvciBjb21wbGV0ZV9jb25maWd1cmF0aW9uIGluIGNvbmZp
Z3VyYXRpb25zOgotICAgICAgICAgICAgICAgIGlmIGNvbXBsZXRlX2NvbmZpZ3VyYXRpb24gIT0g
Y29uZmlndXJhdGlvbjoKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICAg
ICAgICAgIHRpbWVzdGFtcF90b191c2UgPSBjdXJyZW50Ci0gICAgICAgICAgICAgICAgaWYgKGNv
bXBsZXRlX2NvbmZpZ3VyYXRpb24ucGxhdGZvcm0gPT0gJ01hYycgYW5kIGNvbXBsZXRlX2NvbmZp
Z3VyYXRpb24udmVyc2lvbiA8PSBDb25maWd1cmF0aW9uLnZlcnNpb25fdG9faW50ZWdlcignMTAu
MTMnKSkgXAotICAgICAgICAgICAgICAgICAgIG9yIChjb21wbGV0ZV9jb25maWd1cmF0aW9uLnBs
YXRmb3JtID09ICdpT1MnIGFuZCBjb21wbGV0ZV9jb25maWd1cmF0aW9uLnZlcnNpb24gPD0gQ29u
ZmlndXJhdGlvbi52ZXJzaW9uX3RvX2ludGVnZXIoJzExJykpOgotICAgICAgICAgICAgICAgICAg
ICB0aW1lc3RhbXBfdG9fdXNlID0gb2xkCi0KLSAgICAgICAgICAgICAgICBjbHMuaXRlcmF0ZV9h
bGxfY29tbWl0cyhtb2RlbCwgbGFtYmRhIGNvbW1pdHM6IG1vZGVsLnVwbG9hZF9jb250ZXh0LnVw
bG9hZF90ZXN0X3Jlc3VsdHMoY29tcGxldGVfY29uZmlndXJhdGlvbiwgY29tbWl0cywgc3VpdGU9
c3VpdGUsIHRlc3RfcmVzdWx0cz10ZXN0X3Jlc3VsdHMsIHRpbWVzdGFtcD10aW1lc3RhbXBfdG9f
dXNlKSkKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBwcm9jZXNzX3Jlc3VsdHMoY2xzLCBt
b2RlbCwgY29uZmlndXJhdGlvbj1Db25maWd1cmF0aW9uKCksIHN1aXRlPSdsYXlvdXQtdGVzdHMn
KToKLSAgICAgICAgY29uZmlndXJhdGlvbnMgPSBbY29uZmlndXJhdGlvbl0gaWYgY29uZmlndXJh
dGlvbi5pc19jb21wbGV0ZSgpIGVsc2UgQ29uZmlndXJhdGlvbkNvbnRleHRUZXN0LkNPTkZJR1VS
QVRJT05TCi0KLSAgICAgICAgd2l0aCBtb2RlbC51cGxvYWRfY29udGV4dDoKLSAgICAgICAgICAg
IGZvciBjb21wbGV0ZV9jb25maWd1cmF0aW9uIGluIGNvbmZpZ3VyYXRpb25zOgotICAgICAgICAg
ICAgICAgIGlmIGNvbXBsZXRlX2NvbmZpZ3VyYXRpb24gIT0gY29uZmlndXJhdGlvbjoKLSAgICAg
ICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICBmb3IgYnJhbmNoIGluIChO
b25lLCAnc2FmYXJpLTYwNi1icmFuY2gnKToKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0c19k
aWN0ID0gbW9kZWwudXBsb2FkX2NvbnRleHQuZmluZF90ZXN0X3Jlc3VsdHMoCi0gICAgICAgICAg
ICAgICAgICAgICAgICBjb25maWd1cmF0aW9ucz1bY29tcGxldGVfY29uZmlndXJhdGlvbl0sIHN1
aXRlPXN1aXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgYnJhbmNoPWJyYW5jaCwgcmVjZW50
PUZhbHNlLAotICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICAgICAgICAgIGZvciBj
b25maWcsIHJlc3VsdHMgaW4gcmVzdWx0c19kaWN0Lml0ZW1zKCk6Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBmb3IgcmVzdWx0IGluIHJlc3VsdHM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbW9kZWwudXBsb2FkX2NvbnRleHQucHJvY2Vzc190ZXN0X3Jlc3VsdHMoCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb249Y29uZmlnLCBjb21taXRzPXJlc3Vs
dFsnY29tbWl0cyddLCBzdWl0ZT1zdWl0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdGVzdF9yZXN1bHRzPXJlc3VsdFsndGVzdF9yZXN1bHRzJ10sIHRpbWVzdGFtcD1yZXN1bHRb
J3RpbWVzdGFtcCddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKLQotICAgIEBjbGFz
c21ldGhvZAotICAgIGRlZiBhZGRfbW9ja19hcmNoaXZlcyhjbHMsIG1vZGVsLCBjb25maWd1cmF0
aW9uPUNvbmZpZ3VyYXRpb24oKSwgc3VpdGU9J2xheW91dC10ZXN0cycsIGFyY2hpdmU9Tm9uZSk6
Ci0gICAgICAgIGFyY2hpdmUgPSBhcmNoaXZlIG9yIGlvLkJ5dGVzSU8oYmFzZTY0LmI2NGRlY29k
ZShjbHMuQVJDSElWRV9aSVApKQotICAgICAgICBjb25maWd1cmF0aW9ucyA9IFtjb25maWd1cmF0
aW9uXSBpZiBjb25maWd1cmF0aW9uLmlzX2NvbXBsZXRlKCkgZWxzZSBDb25maWd1cmF0aW9uQ29u
dGV4dFRlc3QuQ09ORklHVVJBVElPTlMKLQotICAgICAgICB3aXRoIG1vZGVsLnVwbG9hZF9jb250
ZXh0OgotICAgICAgICAgICAgY3VycmVudCA9IHRpbWUudGltZSgpCi0gICAgICAgICAgICBvbGQg
PSBjdXJyZW50IC0gY2xzLlRIUkVFX1dFRUtTCi0gICAgICAgICAgICBmb3IgY29tcGxldGVfY29u
ZmlndXJhdGlvbiBpbiBjb25maWd1cmF0aW9uczoKLSAgICAgICAgICAgICAgICBpZiBjb21wbGV0
ZV9jb25maWd1cmF0aW9uICE9IGNvbmZpZ3VyYXRpb246Ci0gICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlCi0KLSAgICAgICAgICAgICAgICB0aW1lc3RhbXBfdG9fdXNlID0gY3VycmVudAotICAg
ICAgICAgICAgICAgIGlmIChjb21wbGV0ZV9jb25maWd1cmF0aW9uLnBsYXRmb3JtID09ICdNYWMn
IGFuZCBjb21wbGV0ZV9jb25maWd1cmF0aW9uLnZlcnNpb24gPD0gQ29uZmlndXJhdGlvbi52ZXJz
aW9uX3RvX2ludGVnZXIoJzEwLjEzJykpIFwKLSAgICAgICAgICAgICAgICAgICBvciAoY29tcGxl
dGVfY29uZmlndXJhdGlvbi5wbGF0Zm9ybSA9PSAnaU9TJyBhbmQgY29tcGxldGVfY29uZmlndXJh
dGlvbi52ZXJzaW9uIDw9IENvbmZpZ3VyYXRpb24udmVyc2lvbl90b19pbnRlZ2VyKCcxMScpKToK
LSAgICAgICAgICAgICAgICAgICAgdGltZXN0YW1wX3RvX3VzZSA9IG9sZAotCi0gICAgICAgICAg
ICAgICAgY2xzLml0ZXJhdGVfYWxsX2NvbW1pdHMobW9kZWwsIGxhbWJkYSBjb21taXRzOiBtb2Rl
bC5hcmNoaXZlX2NvbnRleHQucmVnaXN0ZXIoYXJjaGl2ZSwgY29tcGxldGVfY29uZmlndXJhdGlv
biwgY29tbWl0cywgc3VpdGU9c3VpdGUsIHRpbWVzdGFtcD10aW1lc3RhbXBfdG9fdXNlKSkKSW5k
ZXg6IFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL21vY2tfcmVwb3NpdG9yeS5w
eQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9tb2Nr
X3JlcG9zaXRvcnkucHkJKHJldmlzaW9uIDI2NTUzMSkKKysrIFRvb2xzL3Jlc3VsdHNkYnB5L3Jl
c3VsdHNkYnB5L21vZGVsL21vY2tfcmVwb3NpdG9yeS5weQkobm9uZXhpc3RlbnQpCkBAIC0xLDMz
MCArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0jIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
Ci0jIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAot
IyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUgotIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotIyBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLAotIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1pbXBvcnQg
Y29udGV4dGxpYgotaW1wb3J0IGpzb24KLWltcG9ydCByZQotaW1wb3J0IHVybGxpYgotaW1wb3J0
IHhtbHRvZGljdAotCi1mcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZWZhdWx0ZGljdAotZnJvbSBy
ZXN1bHRzZGJweS5jb250cm9sbGVyLmNvbW1pdCBpbXBvcnQgQ29tbWl0Ci1mcm9tIHJlc3VsdHNk
YnB5Lm1vZGVsLnJlcG9zaXRvcnkgaW1wb3J0IFN0YXNoUmVwb3NpdG9yeSwgU1ZOUmVwb3NpdG9y
eSwgV2ViS2l0UmVwb3NpdG9yeQotCi0KLWNsYXNzIE1vY2tSZXF1ZXN0KG9iamVjdCk6Ci0KLSAg
ICBkZWYgX19pbml0X18oc2VsZiwgdGV4dD0nJywgc3RhdHVzX2NvZGU9MjAwKToKLSAgICAgICAg
c2VsZi50ZXh0ID0gdGV4dAotICAgICAgICBzZWxmLnN0YXR1c19jb2RlID0gc3RhdHVzX2NvZGUK
LQotCi1jbGFzcyBNb2NrU3Rhc2hSZXBvc2l0b3J5KFN0YXNoUmVwb3NpdG9yeSk6Ci0KLSAgICBD
T01NSVRfUkUgPSByZS5jb21waWxlKHInY29tbWl0cy8oP1A8aGFzaD5bMC05YS1mXSspJykKLSAg
ICBDT01NSVRfRk9SX0JSQU5DSF9SRSA9IHJlLmNvbXBpbGUocidjb21taXRzXD9zaW5jZVw9KD9Q
PGhhc2g+WzAtOWEtZl0rKVwmdW50aWxcPSg/UDxicmFuY2g+W14mXSspXCZsaW1pdFw9MScpCi0g
ICAgQ09NTUlUX0FUX0hFQURfUkUgPSByZS5jb21waWxlKHInY29tbWl0c1w/dW50aWxcPSg/UDxi
cmFuY2g+W14mXSspXCZsaW1pdFw9XGQrJykKLSAgICBET0VTX05PVF9FWElTVF9SRVNVTFQgPSB7
J2Vycm9ycyc6IFt7Ci0gICAgICAgICdjb250ZXh0JzogTm9uZSwKLSAgICAgICAgJ21lc3NhZ2Un
OiAnQ29tbWl0IFwnP1wnIGRvZXMgbm90IGV4aXN0IGluIHJlcG9zaXRvcnkuJywKLSAgICAgICAg
J2V4Y2VwdGlvbk5hbWUnOiAnY29tLmF0bGFzc2lhbi5iaXRidWNrZXQuY29tbWl0Lk5vU3VjaENv
bW1pdEV4Y2VwdGlvbicsCi0gICAgfV19Ci0KLSAgICBAc3RhdGljbWV0aG9kCi0gICAgZGVmIHNh
ZmFyaShyZWRpcz1Ob25lKToKLSAgICAgICAgcmVzdWx0ID0gTW9ja1N0YXNoUmVwb3NpdG9yeSgn
aHR0cHM6Ly9mYWtlLXN0YXNoLWluc3RhbmNlLmFwcGxlLmNvbS9wcm9qZWN0cy9CUk9XU0VSL3Jl
cG9zL3NhZmFyaScsIG5hbWU9J3NhZmFyaScsIHJlZGlzPXJlZGlzKQotICAgICAgICByZXN1bHQu
YWRkX2NvbW1pdChDb21taXQoCi0gICAgICAgICAgICByZXBvc2l0b3J5X2lkPXJlc3VsdC5uYW1l
LCBicmFuY2g9J21hc3RlcicsIGlkPSdiYjZiZGE1ZjQ0ZGQyNGQwYjU0NTM5YjhmZjZlOGMxN2Y1
MTkyNDlhJywKLSAgICAgICAgICAgIHRpbWVzdGFtcD0xNTM3ODEwMjgxLCBvcmRlcj0wLAotICAg
ICAgICAgICAgY29tbWl0dGVyPSdwZXJzb24xQGFwcGxlLmNvbScsCi0gICAgICAgICAgICBtZXNz
YWdlPSdDaGFuZ2UgMSBkZXNjcmlwdGlvbi4nLAotICAgICAgICApKQotICAgICAgICByZXN1bHQu
YWRkX2NvbW1pdChDb21taXQoCi0gICAgICAgICAgICByZXBvc2l0b3J5X2lkPXJlc3VsdC5uYW1l
LCBicmFuY2g9J21hc3RlcicsIGlkPSczMzY2MTBhODRmZGNmMTRkZGNmMWRiNjUwNzVhZjk1NDgw
NTE2ZmRhJywKLSAgICAgICAgICAgIHRpbWVzdGFtcD0xNTM3ODA5ODE4LCBvcmRlcj0wLAotICAg
ICAgICAgICAgY29tbWl0dGVyPSdwZXJzb24yQGFwcGxlLmNvbScsCi0gICAgICAgICAgICBtZXNz
YWdlPSdDaGFuZ2UgMiBkZXNjcmlwdGlvbi4nLAotICAgICAgICApKQotICAgICAgICByZXN1bHQu
YWRkX2NvbW1pdChDb21taXQoCi0gICAgICAgICAgICByZXBvc2l0b3J5X2lkPXJlc3VsdC5uYW1l
LCBicmFuY2g9J21hc3RlcicsIGlkPSczMzY2MTBhNDBjM2ZlY2I3Mjg4NzFlMTJjYTMxNDgyY2E3
MTViMzgzJywKLSAgICAgICAgICAgIHRpbWVzdGFtcD0xNTM3NTY2Mzg2LCBvcmRlcj0wLAotICAg
ICAgICAgICAgY29tbWl0dGVyPSdwZXJzb24zQGFwcGxlLmNvbScsCi0gICAgICAgICAgICBtZXNz
YWdlPSc8cmRhcjovL3Byb2JsZW0vOTk5OTk5OTk+IENoYW5nZSAzIGRlc2NyaXB0aW9uLicsCi0g
ICAgICAgICkpCi0gICAgICAgIHJlc3VsdC5hZGRfY29tbWl0KENvbW1pdCgKLSAgICAgICAgICAg
IHJlcG9zaXRvcnlfaWQ9cmVzdWx0Lm5hbWUsIGJyYW5jaD0nbWFzdGVyJywgaWQ9J2U2NDgxMGE0
MGMzZmVjYjcyODg3MWUxMmNhMzE0ODJjYTcxNWIzODMnLAotICAgICAgICAgICAgdGltZXN0YW1w
PTE1Mzc1NTA2ODUsIG9yZGVyPTAsCi0gICAgICAgICAgICBjb21taXR0ZXI9J3BlcnNvbjRAYXBw
bGUuY29tJywKLSAgICAgICAgICAgIG1lc3NhZ2U9dSdDaGFuZ2UgNCBcdTIwMTQgKFBhcnQgMSkg
ZGVzY3JpcHRpb24uJywKLSAgICAgICAgKSkKLSAgICAgICAgcmVzdWx0LmFkZF9jb21taXQoQ29t
bWl0KAotICAgICAgICAgICAgcmVwb3NpdG9yeV9pZD1yZXN1bHQubmFtZSwgYnJhbmNoPSdtYXN0
ZXInLCBpZD0nN2JlNDA4NDI1OGE0NTJlOGZlMjJmMzYyODdjNWIzMjFlOWM4MjQ5YicsCi0gICAg
ICAgICAgICB0aW1lc3RhbXA9MTUzNzU1MDY4NSwgb3JkZXI9MSwKLSAgICAgICAgICAgIGNvbW1p
dHRlcj0ncGVyc29uNEBhcHBsZS5jb20nLAotICAgICAgICAgICAgbWVzc2FnZT11J0NoYW5nZSA0
IFx1MjAxNCAoUGFydCAyKSBkZXNjcmlwdGlvbi5cblJldmlld2VkIGJ5IHBlcnNvbi4nLAotICAg
ICAgICApKQotCi0gICAgICAgIHJlc3VsdC5hZGRfY29tbWl0KENvbW1pdCgKLSAgICAgICAgICAg
IHJlcG9zaXRvcnlfaWQ9cmVzdWx0Lm5hbWUsIGJyYW5jaD0nc2FmYXJpLTYwNi1icmFuY2gnLCBp
ZD0nNzkyNTZjMzJhODU1YWM4NjEyMTEyMjc5MDA4MzM0ZDkwZTkwMWM1NScsCi0gICAgICAgICAg
ICB0aW1lc3RhbXA9MTUzNzg5NzM2Nywgb3JkZXI9MCwKLSAgICAgICAgICAgIGNvbW1pdHRlcj0n
cGVyc29uNUBhcHBsZS5jb20nLAotICAgICAgICAgICAgbWVzc2FnZT0nQ2hhbmdlIDUgZGVzY3Jp
cHRpb24uJywKLSAgICAgICAgKSkKLSAgICAgICAgcmVzdWx0LmFkZF9jb21taXQoQ29tbWl0KAot
ICAgICAgICAgICAgcmVwb3NpdG9yeV9pZD1yZXN1bHQubmFtZSwgYnJhbmNoPSdzYWZhcmktNjA2
LWJyYW5jaCcsIGlkPSdkODUyMjJkOTQwN2ZkYmJmNDc0MDY1MDk0MDBhOWNlY2I3M2FjNmRlJywK
LSAgICAgICAgICAgIHRpbWVzdGFtcD0xNTM3NTYzMzgzLCBvcmRlcj0wLAotICAgICAgICAgICAg
Y29tbWl0dGVyPSdwZXJzb242QGFwcGxlLmNvbScsCi0gICAgICAgICAgICBtZXNzYWdlPSdDaGFu
Z2UgNiBkZXNjcmlwdGlvbi4nLAotICAgICAgICApKQotICAgICAgICByZXR1cm4gcmVzdWx0Ci0K
LSAgICBkZWYgX19pbml0X18oc2VsZiwgdXJsLCBuYW1lLCAqKmt3YXJncyk6Ci0gICAgICAgIHNl
bGYubmFtZSA9IG5hbWUKLSAgICAgICAgc2VsZi5jb21taXRzID0gZGVmYXVsdGRpY3QobGlzdCkK
LQotICAgICAgICBzdXBlcihNb2NrU3Rhc2hSZXBvc2l0b3J5LCBzZWxmKS5fX2luaXRfXyh1cmws
ICoqa3dhcmdzKQotCi0gICAgQGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIKLSAgICBkZWYgc2Vz
c2lvbihzZWxmKToKLSAgICAgICAgc2VsZi5fc2Vzc2lvbl9kZXB0aCArPSAxCi0gICAgICAgIHlp
ZWxkCi0gICAgICAgIHNlbGYuX3Nlc3Npb25fZGVwdGggLT0gMQotCi0gICAgZGVmIGFkZF9jb21t
aXQoc2VsZiwgY29tbWl0KToKLSAgICAgICAgY29waWVkX2NvbW1pdCA9IENvbW1pdC5mcm9tX2pz
b24oY29tbWl0LnRvX2pzb24oKSkKLSAgICAgICAgY29waWVkX2NvbW1pdC5yZXBvc2l0b3J5X2lk
ID0gc2VsZi5uYW1lCi0gICAgICAgIHNlbGYuY29tbWl0c1tjb3BpZWRfY29tbWl0LmJyYW5jaF0u
YXBwZW5kKGNvcGllZF9jb21taXQpCi0gICAgICAgIHNlbGYuY29tbWl0c1tjb3BpZWRfY29tbWl0
LmJyYW5jaF0gPSBzb3J0ZWQoc2VsZi5jb21taXRzW2NvcGllZF9jb21taXQuYnJhbmNoXSkKLQot
ICAgIGRlZiByZXF1ZXN0KHNlbGYsIHVybCwgbWV0aG9kPSdHRVQnLCAqKmt3YXJncyk6Ci0gICAg
ICAgIGlmIG5vdCB1cmwuc3RhcnRzd2l0aChzZWxmLnVybCkgb3IgbWV0aG9kICE9ICdHRVQnOgot
ICAgICAgICAgICAgcmV0dXJuIE1vY2tSZXF1ZXN0KHN0YXR1c19jb2RlPTQwNCkKLQotICAgICAg
ICBwYXRoID0gdXJsW2xlbihzZWxmLnVybCkgKyAxOl0KLSAgICAgICAgaWYgbm90IHBhdGg6Ci0g
ICAgICAgICAgICByZXR1cm4gTW9ja1JlcXVlc3QoanNvbi5kdW1wcyh7J3NsdWcnOiBzZWxmLm5h
bWV9KSkKLQotICAgICAgICBtYXRjaCA9IHNlbGYuQ09NTUlUX1JFLm1hdGNoKHBhdGgpCi0gICAg
ICAgIGlmIG1hdGNoOgotICAgICAgICAgICAgaW5kZXggPSAtMQotICAgICAgICAgICAgYnJhbmNo
ID0gTm9uZQotICAgICAgICAgICAgZm9yIGtleSwgY29tbWl0cyBpbiBzZWxmLmNvbW1pdHMuaXRl
bXMoKToKLSAgICAgICAgICAgICAgICBmb3IgaSBpbiByYW5nZShsZW4oY29tbWl0cykpOgotICAg
ICAgICAgICAgICAgICAgICBpZiBjb21taXRzW2ldLmlkLnN0YXJ0c3dpdGgobWF0Y2guZ3JvdXAo
J2hhc2gnKSk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiBpbmRleCAhPSAtMToKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTW9ja1JlcXVlc3QoanNvbi5kdW1wcyhzZWxm
LkRPRVNfTk9UX0VYSVNUX1JFU1VMVCksIHN0YXR1c19jb2RlPTQwMSkKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGluZGV4ID0gaQotICAgICAgICAgICAgICAgICAgICAgICAgYnJhbmNoID0ga2V5
Ci0gICAgICAgICAgICBpZiBpbmRleCA9PSAtMSBvciBub3QgYnJhbmNoOgotICAgICAgICAgICAg
ICAgIHJldHVybiBNb2NrUmVxdWVzdChqc29uLmR1bXBzKHNlbGYuRE9FU19OT1RfRVhJU1RfUkVT
VUxUKSwgc3RhdHVzX2NvZGU9NDAxKQotICAgICAgICAgICAgcmV0dXJuIE1vY2tSZXF1ZXN0KGpz
b24uZHVtcHMoewotICAgICAgICAgICAgICAgICdpZCc6IHNlbGYuY29tbWl0c1ticmFuY2hdW2lu
ZGV4XS5pZCwKLSAgICAgICAgICAgICAgICAnY29tbWl0dGVyJzogeydlbWFpbEFkZHJlc3MnOiBz
ZWxmLmNvbW1pdHNbYnJhbmNoXVtpbmRleF0uY29tbWl0dGVyfSwKLSAgICAgICAgICAgICAgICAn
Y29tbWl0dGVyVGltZXN0YW1wJzogc2VsZi5jb21taXRzW2JyYW5jaF1baW5kZXhdLnRpbWVzdGFt
cF9hc19lcG9jaCgpICogc2VsZi5DT01NSVRfVElNRVNUQU1QX0NPTlZFUlNJT04sCi0gICAgICAg
ICAgICAgICAgJ21lc3NhZ2UnOiBzZWxmLmNvbW1pdHNbYnJhbmNoXVtpbmRleF0ubWVzc2FnZSwK
LSAgICAgICAgICAgICAgICAncGFyZW50cyc6IFtdIGlmIGluZGV4ID09IDAgZWxzZSBbewotICAg
ICAgICAgICAgICAgICAgICAnaWQnOiBzZWxmLmNvbW1pdHNbYnJhbmNoXVtpbmRleCAtIDFdLmlk
LAotICAgICAgICAgICAgICAgICAgICAnY29tbWl0dGVyVGltZXN0YW1wJzogc2VsZi5jb21taXRz
W2JyYW5jaF1baW5kZXggLSAxXS50aW1lc3RhbXBfYXNfZXBvY2goKSAqIHNlbGYuQ09NTUlUX1RJ
TUVTVEFNUF9DT05WRVJTSU9OLAotICAgICAgICAgICAgICAgIH1dLAotICAgICAgICAgICAgfSkp
Ci0KLSAgICAgICAgbWF0Y2ggPSBzZWxmLkNPTU1JVF9GT1JfQlJBTkNIX1JFLm1hdGNoKHBhdGgp
Ci0gICAgICAgIGlmIG1hdGNoOgotICAgICAgICAgICAgYnJhbmNoID0gdXJsbGliLnBhcnNlLnVu
cXVvdGUobWF0Y2guZ3JvdXAoJ2JyYW5jaCcpKVtsZW4oJ3JlZnMvaGVhZHMnKSArIDE6XQotICAg
ICAgICAgICAgaGFzX2ZvdW5kID0gRmFsc2UKLSAgICAgICAgICAgIGlmIHNlbGYuY29tbWl0cy5n
ZXQoYnJhbmNoKToKLSAgICAgICAgICAgICAgICBmb3IgY29tbWl0IGluIHNlbGYuY29tbWl0c1ti
cmFuY2hdWzotMV06Ci0gICAgICAgICAgICAgICAgICAgIGlmIGNvbW1pdC5pZC5zdGFydHN3aXRo
KG1hdGNoLmdyb3VwKCdoYXNoJykpOgotICAgICAgICAgICAgICAgICAgICAgICAgaGFzX2ZvdW5k
ID0gVHJ1ZQotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIHJldHVy
biBNb2NrUmVxdWVzdChqc29uLmR1bXBzKHsnc2l6ZSc6IDEgaWYgaGFzX2ZvdW5kIGVsc2UgMCwg
J2lzTGFzdFBhZ2UnOiBUcnVlfSkpCi0KLSAgICAgICAgbWF0Y2ggPSBzZWxmLkNPTU1JVF9BVF9I
RUFEX1JFLm1hdGNoKHBhdGgpCi0gICAgICAgIGlmIG1hdGNoOgotICAgICAgICAgICAgYnJhbmNo
ID0gbWF0Y2guZ3JvdXAoJ2JyYW5jaCcpLnJlcGxhY2UoJyUyRicsICcvJylbbGVuKCdyZWZzL2hl
YWRzJykgKyAxOl0KLSAgICAgICAgICAgIGlmIG5vdCBzZWxmLmNvbW1pdHMuZ2V0KGJyYW5jaCwg
W10pOgotICAgICAgICAgICAgICAgIHJldHVybiBNb2NrUmVxdWVzdChqc29uLmR1bXBzKHNlbGYu
RE9FU19OT1RfRVhJU1RfUkVTVUxUKSwgc3RhdHVzX2NvZGU9NDAxKQotICAgICAgICAgICAgcmV0
dXJuIE1vY2tSZXF1ZXN0KGpzb24uZHVtcHMoeyd2YWx1ZXMnOiBbeydpZCc6IHNlbGYuY29tbWl0
c1ticmFuY2hdWy0xXS5pZH1dLCAnc2l6ZSc6IDEsICdpc0xhc3RQYWdlJzogVHJ1ZX0pKQotCi0g
ICAgICAgIHJldHVybiBNb2NrUmVxdWVzdChzdGF0dXNfY29kZT00MDQpCi0KLQotIyBVc2VzIG11
bHRpcGxlIGluaGVyaXRhbmNlIGluc3RlYWQgb2YgZHVwbGljYXRpbmcgdGhlIGZ1bmN0aW9ucyBp
biB0aGlzIGNsYXNzLgotY2xhc3MgX1NWTk1vY2sob2JqZWN0KToKLSAgICBTVk5fVVJMX1JFID0g
cmUuY29tcGlsZShyJ1whc3ZuL3J2ci8oP1A8cmV2aXNpb24+WzAtOV0rKS8oP1A8YnJhbmNoPi4q
KScpCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSwgdXJsPU5vbmUpOgotICAgICAgICBz
ZWxmLmNvbW1pdHMgPSBkZWZhdWx0ZGljdChsaXN0KQotICAgICAgICBzZWxmLm5hbWUgPSBuYW1l
Ci0KLSAgICAgICAgIyBTaG91bGQgYmUgb3ZlcnJpZGVuIGJ5IHRoZSBTVk5SZXBvc2l0b3J5IGNs
YXNzCi0gICAgICAgIHNlbGYudXJsID0gdXJsIGlmIHVybCBlbHNlICcnCi0gICAgICAgIHNlbGYu
X3Nlc3Npb25fZGVwdGggPSAwCi0KLSAgICBAY29udGV4dGxpYi5jb250ZXh0bWFuYWdlcgotICAg
IGRlZiBzZXNzaW9uKHNlbGYpOgotICAgICAgICBzZWxmLl9zZXNzaW9uX2RlcHRoICs9IDEKLSAg
ICAgICAgeWllbGQKLSAgICAgICAgc2VsZi5fc2Vzc2lvbl9kZXB0aCAtPSAxCi0KLSAgICBkZWYg
YWRkX2NvbW1pdChzZWxmLCBjb21taXQpOgotICAgICAgICBjb3BpZWRfY29tbWl0ID0gQ29tbWl0
LmZyb21fanNvbihjb21taXQudG9fanNvbigpKQotICAgICAgICBjb3BpZWRfY29tbWl0LnJlcG9z
aXRvcnlfaWQgPSBzZWxmLm5hbWUKLSAgICAgICAgc2VsZi5jb21taXRzW2NvcGllZF9jb21taXQu
YnJhbmNoXS5hcHBlbmQoY29waWVkX2NvbW1pdCkKLSAgICAgICAgc2VsZi5jb21taXRzW2NvcGll
ZF9jb21taXQuYnJhbmNoXSA9IHNvcnRlZChzZWxmLmNvbW1pdHNbY29waWVkX2NvbW1pdC5icmFu
Y2hdKQotCi0gICAgZGVmIHJlcXVlc3Qoc2VsZiwgdXJsLCBtZXRob2Q9J0dFVCcsICoqa3dhcmdz
KToKLSAgICAgICAgaWYgbm90IHVybC5zdGFydHN3aXRoKHNlbGYudXJsKToKLSAgICAgICAgICAg
IHJldHVybiBNb2NrUmVxdWVzdChzdGF0dXNfY29kZT00MDQpCi0KLSAgICAgICAgaWYgbWV0aG9k
ID09ICdHRVQnIGFuZCB1cmwgPT0gc2VsZi51cmw6Ci0gICAgICAgICAgICByZXR1cm4gTW9ja1Jl
cXVlc3QodGV4dD14bWx0b2RpY3QudW5wYXJzZSh7J3N2bic6IHsnaW5kZXgnOiB7J0BiYXNlJzog
c2VsZi5uYW1lfX19KSwgc3RhdHVzX2NvZGU9MjAwKQotICAgICAgICBpZiBtZXRob2QgIT0gJ1BS
T1BGSU5EJzoKLSAgICAgICAgICAgIHJldHVybiBNb2NrUmVxdWVzdChzdGF0dXNfY29kZT00MDQp
Ci0KLSAgICAgICAgcGF0aCA9IHVybFtsZW4oc2VsZi51cmwpOl0KLSAgICAgICAgbWF0Y2ggPSBz
ZWxmLlNWTl9VUkxfUkUubWF0Y2gocGF0aCkKLSAgICAgICAgaWYgbm90IG1hdGNoOgotICAgICAg
ICAgICAgcmV0dXJuIE1vY2tSZXF1ZXN0KHN0YXR1c19jb2RlPTQwNCkKLSAgICAgICAgcmV2aXNp
b24gPSBtYXRjaC5ncm91cCgncmV2aXNpb24nKQotICAgICAgICBicmFuY2ggPSBtYXRjaC5ncm91
cCgnYnJhbmNoJykKLSAgICAgICAgaWYgYnJhbmNoICE9ICd0cnVuayc6Ci0gICAgICAgICAgICBi
cmFuY2ggPSBicmFuY2hbbGVuKCdicmFuY2hlcy8nKTpdCi0KLSAgICAgICAgaWYgYnJhbmNoIG5v
dCBpbiBzZWxmLmNvbW1pdHM6Ci0gICAgICAgICAgICByZXR1cm4gTW9ja1JlcXVlc3Qoc3RhdHVz
X2NvZGU9NDA0KQotCi0gICAgICAgIGZvciBjb21taXQgaW4gc2VsZi5jb21taXRzW2JyYW5jaF06
Ci0gICAgICAgICAgICBpZiBjb21taXQuaWQgPT0gcmV2aXNpb246Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIE1vY2tSZXF1ZXN0KAotICAgICAgICAgICAgICAgICAgICB0ZXh0PXhtbHRvZGljdC51
bnBhcnNlKHsKLSAgICAgICAgICAgICAgICAgICAgICAgICdEOm11bHRpc3RhdHVzJzogeydEOnJl
c3BvbnNlJzogeydEOnByb3BzdGF0JzogWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsn
RDpwcm9wJzogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbHAxOnZlcnNpb24t
bmFtZSc6IGNvbW1pdC5pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2xwMTpj
cmVhdGlvbmRhdGUnOiBjb21taXQudGltZXN0YW1wLnN0cmZ0aW1lKCclWS0lbS0lZFQlSDolTTol
Uy4lZlonKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2xwMTpjcmVhdG9yLWRp
c3BsYXluYW1lJzogY29tbWl0LmNvbW1pdHRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9fSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB7J0Q6c3RhdHVzJzogJ0hUVFAvMS4x
IDIwMCBPSyd9LAotICAgICAgICAgICAgICAgICAgICAgICAgXX19LAotICAgICAgICAgICAgICAg
ICAgICB9KSwKLSAgICAgICAgICAgICAgICAgICAgc3RhdHVzX2NvZGU9MjA3LAotICAgICAgICAg
ICAgICAgICkKLSAgICAgICAgcmV0dXJuIE1vY2tSZXF1ZXN0KHN0YXR1c19jb2RlPTQwNCkKLQot
Ci1jbGFzcyBNb2NrU1ZOUmVwb3NpdG9yeShfU1ZOTW9jaywgU1ZOUmVwb3NpdG9yeSk6Ci0KLSAg
ICBAc3RhdGljbWV0aG9kCi0gICAgZGVmIHdlYmtpdChyZWRpcz1Ob25lKToKLSAgICAgICAgcmVz
dWx0ID0gTW9ja1dlYktpdFJlcG9zaXRvcnkocmVkaXM9cmVkaXMpCi0gICAgICAgIHJlc3VsdC5h
ZGRfY29tbWl0KENvbW1pdCgKLSAgICAgICAgICAgIHJlcG9zaXRvcnlfaWQ9cmVzdWx0Lm5hbWUs
IGJyYW5jaD0ndHJ1bmsnLCBpZD0yMzY1NDQsCi0gICAgICAgICAgICB0aW1lc3RhbXA9MTUzODA1
MjQwOCwgb3JkZXI9MCwKLSAgICAgICAgICAgIGNvbW1pdHRlcj0ncGVyc29uMUB3ZWJraXQub3Jn
JywKLSAgICAgICAgICAgIG1lc3NhZ2U9J0NoYW5nZSAxIGRlc2NyaXB0aW9uLicsCi0gICAgICAg
ICkpCi0gICAgICAgIHJlc3VsdC5hZGRfY29tbWl0KENvbW1pdCgKLSAgICAgICAgICAgIHJlcG9z
aXRvcnlfaWQ9cmVzdWx0Lm5hbWUsIGJyYW5jaD0ndHJ1bmsnLCBpZD0yMzY1NDMsCi0gICAgICAg
ICAgICB0aW1lc3RhbXA9MTUzODA1MDQ1OCwgb3JkZXI9MCwKLSAgICAgICAgICAgIGNvbW1pdHRl
cj0ncGVyc29uMkB3ZWJraXQub3JnJywKLSAgICAgICAgICAgIG1lc3NhZ2U9J0NoYW5nZSAyIGRl
c2NyaXB0aW9uLicsCi0gICAgICAgICkpCi0gICAgICAgIHJlc3VsdC5hZGRfY29tbWl0KENvbW1p
dCgKLSAgICAgICAgICAgIHJlcG9zaXRvcnlfaWQ9cmVzdWx0Lm5hbWUsIGJyYW5jaD0ndHJ1bmsn
LCBpZD0yMzY1NDIsCi0gICAgICAgICAgICB0aW1lc3RhbXA9MTUzODA0OTEwOCwgb3JkZXI9MCwK
LSAgICAgICAgICAgIGNvbW1pdHRlcj0ncGVyc29uM0B3ZWJraXQub3JnJywKLSAgICAgICAgICAg
IG1lc3NhZ2U9J0NoYW5nZSAzIGRlc2NyaXB0aW9uLicsCi0gICAgICAgICkpCi0gICAgICAgIHJl
c3VsdC5hZGRfY29tbWl0KENvbW1pdCgKLSAgICAgICAgICAgIHJlcG9zaXRvcnlfaWQ9cmVzdWx0
Lm5hbWUsIGJyYW5jaD0ndHJ1bmsnLCBpZD0yMzY1NDEsCi0gICAgICAgICAgICB0aW1lc3RhbXA9
MTUzODA0MTc5Miwgb3JkZXI9MCwKLSAgICAgICAgICAgIGNvbW1pdHRlcj0ncGVyc29uNEB3ZWJr
aXQub3JnJywKLSAgICAgICAgICAgIG1lc3NhZ2U9J0NoYW5nZSA0IChQYXJ0IDIpIGRlc2NyaXB0
aW9uLicsCi0gICAgICAgICkpCi0gICAgICAgIHJlc3VsdC5hZGRfY29tbWl0KENvbW1pdCgKLSAg
ICAgICAgICAgIHJlcG9zaXRvcnlfaWQ9cmVzdWx0Lm5hbWUsIGJyYW5jaD0ndHJ1bmsnLCBpZD0y
MzY1NDAsCi0gICAgICAgICAgICB0aW1lc3RhbXA9MTUzODAyOTQ3OSwgb3JkZXI9MCwKLSAgICAg
ICAgICAgIGNvbW1pdHRlcj0ncGVyc29uNEB3ZWJraXQub3JnJywKLSAgICAgICAgICAgIG1lc3Nh
Z2U9J0NoYW5nZSA0IChQYXJ0IDEpIGRlc2NyaXB0aW9uLicsCi0gICAgICAgICkpCi0KLSAgICAg
ICAgcmVzdWx0LmFkZF9jb21taXQoQ29tbWl0KAotICAgICAgICAgICAgcmVwb3NpdG9yeV9pZD1y
ZXN1bHQubmFtZSwgYnJhbmNoPSdzYWZhcmktNjA2LWJyYW5jaCcsIGlkPTIzNjMzNSwKLSAgICAg
ICAgICAgIHRpbWVzdGFtcD0xNTM4MDI5NDgwLCBvcmRlcj0wLAotICAgICAgICAgICAgY29tbWl0
dGVyPSdpbnRlZ3JhdG9yQHdlYmtpdC5vcmcnLAotICAgICAgICAgICAgbWVzc2FnZT0nSW50ZWdy
YXRpb24gMS4nLAotICAgICAgICApKQotICAgICAgICByZXN1bHQuYWRkX2NvbW1pdChDb21taXQo
Ci0gICAgICAgICAgICByZXBvc2l0b3J5X2lkPXJlc3VsdC5uYW1lLCBicmFuY2g9J3NhZmFyaS02
MDYtYnJhbmNoJywgaWQ9MjM2MzM0LAotICAgICAgICAgICAgdGltZXN0YW1wPTE1MzgwMjk0Nzks
IG9yZGVyPTAsCi0gICAgICAgICAgICBjb21taXR0ZXI9J2ludGVncmF0b3JAd2Via2l0Lm9yZycs
Ci0gICAgICAgICAgICBtZXNzYWdlPSdJbnRlZ3JhdGlvbiAyLicsCi0gICAgICAgICkpCi0gICAg
ICAgIHJldHVybiByZXN1bHQKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB1cmwsIG5hbWUsICoq
a3dhcmdzKToKLSAgICAgICAgX1NWTk1vY2suX19pbml0X18oc2VsZiwgbmFtZT1uYW1lLCB1cmw9
dXJsKQotICAgICAgICBTVk5SZXBvc2l0b3J5Ll9faW5pdF9fKHNlbGYsIHVybD11cmwsICoqa3dh
cmdzKQotCi0KLWNsYXNzIE1vY2tXZWJLaXRSZXBvc2l0b3J5KF9TVk5Nb2NrLCBXZWJLaXRSZXBv
c2l0b3J5KToKLQotICAgIENIQU5HRUxPR19VUkxfUkUgPSByZS5jb21waWxlKHInKD9QPGJyYW5j
aD50cnVua3xicmFuY2hlc1wvLispXC8oP1A8cGF0aD4uKylcL1w/cD0oP1A8cmV2aXNpb24+WzAt
OV0rKScpCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgKiprd2FyZ3MpOgotICAgICAgICBfU1ZO
TW9jay5fX2luaXRfXyhzZWxmLCBuYW1lPSd3ZWJraXQnKQotICAgICAgICBXZWJLaXRSZXBvc2l0
b3J5Ll9faW5pdF9fKHNlbGYsICoqa3dhcmdzKQotCi0gICAgZGVmIHJlcXVlc3Qoc2VsZiwgdXJs
LCBtZXRob2Q9J0dFVCcsICoqa3dhcmdzKToKLSAgICAgICAgaWYgbm90IHVybC5zdGFydHN3aXRo
KHNlbGYudXJsKToKLSAgICAgICAgICAgIHJldHVybiBNb2NrUmVxdWVzdChzdGF0dXNfY29kZT00
MDQpCi0KLSAgICAgICAgIyBUaGUgZGVmYXVsdCBiZWhhdmlvciBpcyB0byBmYWxsYmFjayB0byBf
U1ZOTW9jawotICAgICAgICBpZiBtZXRob2QgIT0gJ0dFVCc6Ci0gICAgICAgICAgICByZXR1cm4g
X1NWTk1vY2sucmVxdWVzdChzZWxmLCB1cmwsIG1ldGhvZD1tZXRob2QsICoqa3dhcmdzKQotCi0g
ICAgICAgIHBhdGggPSB1cmxbbGVuKHNlbGYudXJsKTpdCi0gICAgICAgIG1hdGNoID0gc2VsZi5D
SEFOR0VMT0dfVVJMX1JFLm1hdGNoKHBhdGgpCi0gICAgICAgIGlmIG5vdCBtYXRjaDoKLSAgICAg
ICAgICAgIHJldHVybiBfU1ZOTW9jay5yZXF1ZXN0KHNlbGYsIHVybCwgbWV0aG9kPW1ldGhvZCwg
Kiprd2FyZ3MpCi0KLSAgICAgICAgaWYgbWF0Y2guZ3JvdXAoJ3BhdGgnKSBub3QgaW4gV2ViS2l0
UmVwb3NpdG9yeS5DSEFOR0VMT0dTOgotICAgICAgICAgICAgcmV0dXJuIE1vY2tSZXF1ZXN0KHN0
YXR1c19jb2RlPTQwNCkKLSAgICAgICAgaWYgbWF0Y2guZ3JvdXAoJ3BhdGgnKSBub3QgaW4gKCdD
aGFuZ2VMb2cnLCAnVG9vbHMvQ2hhbmdlTG9nJyk6Ci0gICAgICAgICAgICByZXR1cm4gTW9ja1Jl
cXVlc3Qoc3RhdHVzX2NvZGU9MjAwKQotCi0gICAgICAgIHJldmlzaW9uID0gbWF0Y2guZ3JvdXAo
J3JldmlzaW9uJykKLSAgICAgICAgYnJhbmNoID0gbWF0Y2guZ3JvdXAoJ2JyYW5jaCcpCi0gICAg
ICAgIGlmIGJyYW5jaCAhPSAndHJ1bmsnOgotICAgICAgICAgICAgYnJhbmNoID0gYnJhbmNoW2xl
bignYnJhbmNoZXMvJyk6XQotCi0gICAgICAgIGNoYW5nZWxvZ19mb3JfY29tbWl0ID0gJycKLSAg
ICAgICAgZm9yIGNvbW1pdCBpbiBzZWxmLmNvbW1pdHNbYnJhbmNoXToKLSAgICAgICAgICAgIGNo
YW5nZWxvZ19mb3JfY29tbWl0ID0gZiIiIntjb21taXQudGltZXN0YW1wLnN0cmZ0aW1lKCclWS0l
bS0lZCcpfSAgSm9uIENvbW1pdHRlciAgPHtjb21taXQuY29tbWl0dGVyfT4KLQotICAgICAgICB7
Y29tbWl0Lm1lc3NhZ2V9Ci0iIiIgKyBjaGFuZ2Vsb2dfZm9yX2NvbW1pdAotCi0gICAgICAgICAg
ICBpZiBjb21taXQuaWQgPT0gcmV2aXNpb246Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE1vY2tS
ZXF1ZXN0KHRleHQ9Y2hhbmdlbG9nX2Zvcl9jb21taXQsIHN0YXR1c19jb2RlPTIwMCkKLQotICAg
ICAgICByZXR1cm4gTW9ja1JlcXVlc3Qoc3RhdHVzX2NvZGU9NDA0KQpJbmRleDogVG9vbHMvcmVz
dWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvbW9kZWwucHkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
cmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvbW9kZWwucHkJKHJldmlzaW9uIDI2NTUzMSkK
KysrIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL21vZGVsLnB5CShub25leGlz
dGVudCkKQEAgLTEsMTM2ICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE5LCAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
IyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKLSMg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UgotIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0jIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSCi0jIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0jIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0KLWltcG9ydCB0cmFjZWJhY2sKLWltcG9ydCBzeXMKLQotZnJvbSBjYXNzYW5k
cmEuY3FsZW5naW5lIGltcG9ydCBjb2x1bW5zCi1mcm9tIGNhc3NhbmRyYS5jcWxlbmdpbmUubW9k
ZWxzIGltcG9ydCBNb2RlbCBhcyBDYXNzYW5kcmFNb2RlbAotZnJvbSByZXN1bHRzZGJweS5tb2Rl
bC5hcmNoaXZlX2NvbnRleHQgaW1wb3J0IEFyY2hpdmVDb250ZXh0Ci1mcm9tIHJlc3VsdHNkYnB5
Lm1vZGVsLmNpX2NvbnRleHQgaW1wb3J0IENJQ29udGV4dAotZnJvbSByZXN1bHRzZGJweS5tb2Rl
bC5jb21taXRfY29udGV4dCBpbXBvcnQgQ29tbWl0Q29udGV4dAotZnJvbSByZXN1bHRzZGJweS5t
b2RlbC5jb25maWd1cmF0aW9uX2NvbnRleHQgaW1wb3J0IENvbmZpZ3VyYXRpb25Db250ZXh0Ci1m
cm9tIHJlc3VsdHNkYnB5Lm1vZGVsLnVwbG9hZF9jb250ZXh0IGltcG9ydCBVcGxvYWRDb250ZXh0
Ci1mcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLnN1aXRlX2NvbnRleHQgaW1wb3J0IFN1aXRlQ29udGV4
dAotZnJvbSByZXN1bHRzZGJweS5tb2RlbC50ZXN0X2NvbnRleHQgaW1wb3J0IFRlc3RDb250ZXh0
Ci1mcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLmZhaWx1cmVfY29udGV4dCBpbXBvcnQgRmFpbHVyZUNv
bnRleHQKLQotCi1jbGFzcyBNb2RlbChvYmplY3QpOgotICAgIFRUTF9EQVkgPSA2MCAqIDYwICog
MjQKLSAgICBUVExfV0VFSyA9IDcgKiBUVExfREFZCi0gICAgVFRMX1lFQVIgPSAzNjUgKiBUVExf
REFZCi0KLSAgICBjbGFzcyBIZWFsdGhUYWJsZShDYXNzYW5kcmFNb2RlbCk6Ci0gICAgICAgIF9f
dGFibGVfbmFtZV9fID0gJ2hlYWx0aCcKLSAgICAgICAga2V5ID0gY29sdW1ucy5UZXh0KHBhcnRp
dGlvbl9rZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkKLSAgICAgICAgdmFsdWUgPSBjb2x1bW5zLlRl
eHQocmVxdWlyZWQ9VHJ1ZSkKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZWRpcywgY2Fzc2Fu
ZHJhLCByZXBvc2l0b3JpZXM9W10sIGRlZmF1bHRfdHRsX3NlY29uZHM9VFRMX1lFQVIgKiA1LCBh
cmNoaXZlX3R0bF9zZWNvbmRzPVRUTF9XRUVLICogOCwgYXN5bmNfcHJvY2Vzc2luZz1GYWxzZSk6
Ci0gICAgICAgIGlmIGRlZmF1bHRfdHRsX3NlY29uZHMgaXMgbm90IE5vbmUgYW5kIGRlZmF1bHRf
dHRsX3NlY29uZHMgPCA0ICogc2VsZi5UVExfV0VFSzoKLSAgICAgICAgICAgIHJhaXNlIFZhbHVl
RXJyb3IoJ1RUTCBtdXN0IGJlIGF0IGxlYXN0IDQgd2Vla3MnKQotICAgICAgICBpZiBhcmNoaXZl
X3R0bF9zZWNvbmRzIGlzIG5vdCBOb25lIGFuZCBhcmNoaXZlX3R0bF9zZWNvbmRzIDwgMiAqIHNl
bGYuVFRMX1dFRUs6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdBcmNoaXZlIFRUTCBt
dXN0IGJlIGF0IGxlYXN0IDIgd2Vla3MnKQotICAgICAgICBzZWxmLmRlZmF1bHRfdHRsX3NlY29u
ZHMgPSBkZWZhdWx0X3R0bF9zZWNvbmRzCi0gICAgICAgIHNlbGYuYXJjaGl2ZV90dGxfc2Vjb25k
cyA9IGFyY2hpdmVfdHRsX3NlY29uZHMgb3IgZGVmYXVsdF90dGxfc2Vjb25kcwotICAgICAgICBz
ZWxmLl9hc3luY19wcm9jZXNzaW5nID0gYXN5bmNfcHJvY2Vzc2luZwotCi0gICAgICAgIHNlbGYu
cmVkaXMgPSByZWRpcwotICAgICAgICBzZWxmLmNhc3NhbmRyYSA9IGNhc3NhbmRyYQotCi0gICAg
ICAgIHdpdGggc2VsZi5jYXNzYW5kcmE6Ci0gICAgICAgICAgICBzZWxmLmNhc3NhbmRyYS5jcmVh
dGVfdGFibGUoc2VsZi5IZWFsdGhUYWJsZSkKLQotICAgICAgICBzZWxmLmNvbW1pdF9jb250ZXh0
ID0gQ29tbWl0Q29udGV4dChyZWRpcywgY2Fzc2FuZHJhKQotICAgICAgICBmb3IgcmVwb3NpdG9y
eSBpbiByZXBvc2l0b3JpZXM6Ci0gICAgICAgICAgICBzZWxmLmNvbW1pdF9jb250ZXh0LnJlZ2lz
dGVyX3JlcG9zaXRvcnkocmVwb3NpdG9yeSkKLSAgICAgICAgc2VsZi5jb25maWd1cmF0aW9uX2Nv
bnRleHQgPSBDb25maWd1cmF0aW9uQ29udGV4dChyZWRpcywgY2Fzc2FuZHJhKQotICAgICAgICBz
ZWxmLnVwbG9hZF9jb250ZXh0ID0gVXBsb2FkQ29udGV4dCgKLSAgICAgICAgICAgIGNvbmZpZ3Vy
YXRpb25fY29udGV4dD1zZWxmLmNvbmZpZ3VyYXRpb25fY29udGV4dCwKLSAgICAgICAgICAgIGNv
bW1pdF9jb250ZXh0PXNlbGYuY29tbWl0X2NvbnRleHQsCi0gICAgICAgICAgICB0dGxfc2Vjb25k
cz1zZWxmLmRlZmF1bHRfdHRsX3NlY29uZHMsCi0gICAgICAgICAgICBhc3luY19wcm9jZXNzaW5n
PWFzeW5jX3Byb2Nlc3NpbmcsCi0gICAgICAgICkKLQotICAgICAgICBzZWxmLnN1aXRlX2NvbnRl
eHQgPSBTdWl0ZUNvbnRleHQoCi0gICAgICAgICAgICBjb25maWd1cmF0aW9uX2NvbnRleHQ9c2Vs
Zi5jb25maWd1cmF0aW9uX2NvbnRleHQsCi0gICAgICAgICAgICBjb21taXRfY29udGV4dD1zZWxm
LmNvbW1pdF9jb250ZXh0LAotICAgICAgICAgICAgdHRsX3NlY29uZHM9c2VsZi5kZWZhdWx0X3R0
bF9zZWNvbmRzLAotICAgICAgICApCi0gICAgICAgIHNlbGYudGVzdF9jb250ZXh0ID0gVGVzdENv
bnRleHQoCi0gICAgICAgICAgICBjb25maWd1cmF0aW9uX2NvbnRleHQ9c2VsZi5jb25maWd1cmF0
aW9uX2NvbnRleHQsCi0gICAgICAgICAgICBjb21taXRfY29udGV4dD1zZWxmLmNvbW1pdF9jb250
ZXh0LAotICAgICAgICAgICAgdHRsX3NlY29uZHM9c2VsZi5kZWZhdWx0X3R0bF9zZWNvbmRzLAot
ICAgICAgICApCi0gICAgICAgIHNlbGYuZmFpbHVyZV9jb250ZXh0ID0gRmFpbHVyZUNvbnRleHQo
Ci0gICAgICAgICAgICBjb25maWd1cmF0aW9uX2NvbnRleHQ9c2VsZi5jb25maWd1cmF0aW9uX2Nv
bnRleHQsCi0gICAgICAgICAgICBjb21taXRfY29udGV4dD1zZWxmLmNvbW1pdF9jb250ZXh0LAot
ICAgICAgICAgICAgdHRsX3NlY29uZHM9c2VsZi5kZWZhdWx0X3R0bF9zZWNvbmRzLAotICAgICAg
ICApCi0gICAgICAgIHNlbGYuY2lfY29udGV4dCA9IENJQ29udGV4dCgKLSAgICAgICAgICAgIGNv
bmZpZ3VyYXRpb25fY29udGV4dD1zZWxmLmNvbmZpZ3VyYXRpb25fY29udGV4dCwKLSAgICAgICAg
ICAgIGNvbW1pdF9jb250ZXh0PXNlbGYuY29tbWl0X2NvbnRleHQsCi0gICAgICAgICAgICB0dGxf
c2Vjb25kcz1zZWxmLmRlZmF1bHRfdHRsX3NlY29uZHMsCi0gICAgICAgICkKLQotICAgICAgICBm
b3IgY29udGV4dCBpbiBbc2VsZi5jaV9jb250ZXh0LCBzZWxmLmZhaWx1cmVfY29udGV4dCwgc2Vs
Zi5zdWl0ZV9jb250ZXh0LCBzZWxmLnRlc3RfY29udGV4dF06Ci0gICAgICAgICAgICBzZWxmLnVw
bG9hZF9jb250ZXh0LnJlZ2lzdGVyX3VwbG9hZF9jYWxsYmFjayhjb250ZXh0Lm5hbWUsIGNvbnRl
eHQucmVnaXN0ZXIpCi0KLSAgICAgICAgc2VsZi5hcmNoaXZlX2NvbnRleHQgPSBBcmNoaXZlQ29u
dGV4dCgKLSAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25fY29udGV4dD1zZWxmLmNvbmZpZ3VyYXRp
b25fY29udGV4dCwKLSAgICAgICAgICAgIGNvbW1pdF9jb250ZXh0PXNlbGYuY29tbWl0X2NvbnRl
eHQsCi0gICAgICAgICAgICB0dGxfc2Vjb25kcz1zZWxmLmFyY2hpdmVfdHRsX3NlY29uZHMsCi0g
ICAgICAgICkKLQotICAgIGRlZiBoZWFsdGh5KHNlbGYsIHdyaXRhYmxlPVRydWUpOgotICAgICAg
ICBpZiB3cml0YWJsZToKLSAgICAgICAgICAgIHNlbGYucmVkaXMuc2V0KCdoZWFsdGgtY2hlY2sn
LCBiJ2hlYWx0aHknLCBleD01ICogNjApCi0gICAgICAgIHZhbHVlID0gc2VsZi5yZWRpcy5nZXQo
J2hlYWx0aC1jaGVjaycpCi0gICAgICAgIGlmIHZhbHVlIGlzIG5vdCBOb25lIGFuZCB2YWx1ZSAh
PSBiJ2hlYWx0aHknOgotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICAgICAgd2l0aCBz
ZWxmLmNhc3NhbmRyYToKLSAgICAgICAgICAgIGlmIHdyaXRhYmxlOgotICAgICAgICAgICAgICAg
IHNlbGYuY2Fzc2FuZHJhLmluc2VydF9yb3coCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuSGVh
bHRoVGFibGUuX190YWJsZV9uYW1lX18sCi0gICAgICAgICAgICAgICAgICAgIGtleT0naGVhbHRo
LWNoZWNrJywgdmFsdWU9J2hlYWx0aHknLAotICAgICAgICAgICAgICAgICAgICB0dGw9NSAqIDYw
LAotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgIHZhbHVlcyA9IFtlbGVtZW50LnZhbHVl
IGZvciBlbGVtZW50IGluIHNlbGYuY2Fzc2FuZHJhLnNlbGVjdF9mcm9tX3RhYmxlKAotICAgICAg
ICAgICAgICAgIHNlbGYuSGVhbHRoVGFibGUuX190YWJsZV9uYW1lX18sIGxpbWl0PTEwMCwga2V5
PSdoZWFsdGgtY2hlY2snLAotICAgICAgICAgICAgKV0KLSAgICAgICAgICAgIGlmIHZhbHVlcyBh
bmQgdmFsdWVzICE9IFsnaGVhbHRoeSddOgotICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQot
Ci0gICAgICAgIHJldHVybiBUcnVlCi0KLSAgICBkZWYgZG9fd29yayhzZWxmKToKLSAgICAgICAg
aWYgbm90IHNlbGYuX2FzeW5jX3Byb2Nlc3Npbmc6Ci0gICAgICAgICAgICByYWlzZSBSdW50aW1l
RXJyb3IoJ05vIHdvcmsgdG8gYmUgZG9uZSwgYXN5bmNocm9ub3VzIHByb2Nlc3NpbmcgZGlzYWJs
ZWQnKQotCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLnVwbG9hZF9jb250
ZXh0LmRvX3Byb2Nlc3Npbmdfd29yaygpCi0gICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToK
LSAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoZid7dHJhY2ViYWNrLmZvcm1hdF9leGMoKX1c
bicpCi0gICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKGYne2V9XG4nKQotCi0gICAgICAgIHJl
dHVybiBGYWxzZQpJbmRleDogVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvbW9k
ZWxfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2Ri
cHkvbW9kZWwvbW9kZWxfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI2NTUzMSkKKysrIFRvb2xzL3Jl
c3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL21vZGVsX3VuaXR0ZXN0LnB5CShub25leGlzdGVu
dCkKQEAgLTEsNTAgKzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6
Ci0jIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAotIyBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0jIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSMgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwKLSMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LQotZnJvbSBmYWtlcmVkaXMgaW1wb3J0IEZha2VTdHJpY3RSZWRpcwotZnJvbSByZWRpcyBpbXBv
cnQgU3RyaWN0UmVkaXMKLWZyb20gcmVzdWx0c2RicHkubW9kZWwuY2Fzc2FuZHJhX2NvbnRleHQg
aW1wb3J0IENhc3NhbmRyYUNvbnRleHQKLWZyb20gcmVzdWx0c2RicHkubW9kZWwubW9ja19jYXNz
YW5kcmFfY29udGV4dCBpbXBvcnQgTW9ja0Nhc3NhbmRyYUNvbnRleHQKLWZyb20gcmVzdWx0c2Ri
cHkubW9kZWwubW9ja19tb2RlbF9mYWN0b3J5IGltcG9ydCBNb2NrTW9kZWxGYWN0b3J5Ci1mcm9t
IHJlc3VsdHNkYnB5Lm1vZGVsLndhaXRfZm9yX2RvY2tlcl90ZXN0X2Nhc2UgaW1wb3J0IFdhaXRG
b3JEb2NrZXJUZXN0Q2FzZQotCi0KLWNsYXNzIE1vZGVsVGVzdChXYWl0Rm9yRG9ja2VyVGVzdENh
c2UpOgotICAgIEtFWVNQQUNFID0gJ21vZGVsX3Rlc3Rfa2V5c3BhY2UnCi0KLSAgICBkZWYgaW5p
dF9kYXRhYmFzZShzZWxmLCByZWRpcz1TdHJpY3RSZWRpcywgY2Fzc2FuZHJhPUNhc3NhbmRyYUNv
bnRleHQsIGFzeW5jX3Byb2Nlc3Npbmc9RmFsc2UpOgotICAgICAgICBjYXNzYW5kcmEuZHJvcF9r
ZXlzcGFjZShrZXlzcGFjZT1zZWxmLktFWVNQQUNFKQotICAgICAgICBzZWxmLm1vZGVsID0gTW9j
a01vZGVsRmFjdG9yeS5jcmVhdGUoCi0gICAgICAgICAgICByZWRpcz1yZWRpcygpLCBjYXNzYW5k
cmE9Y2Fzc2FuZHJhKGtleXNwYWNlPXNlbGYuS0VZU1BBQ0UsIGNyZWF0ZV9rZXlzcGFjZT1UcnVl
KSwKLSAgICAgICAgICAgIGFzeW5jX3Byb2Nlc3Npbmc9YXN5bmNfcHJvY2Vzc2luZywKLSAgICAg
ICAgKQotCi0gICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2Nr
X3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRl
eHQpCi0gICAgZGVmIHRlc3RfaGVhbHRoKHNlbGYsIHJlZGlzPVN0cmljdFJlZGlzLCBjYXNzYW5k
cmE9Q2Fzc2FuZHJhQ29udGV4dCk6Ci0gICAgICAgIHNlbGYuaW5pdF9kYXRhYmFzZShyZWRpcz1y
ZWRpcywgY2Fzc2FuZHJhPWNhc3NhbmRyYSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYu
bW9kZWwuaGVhbHRoeSgpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5tb2RlbC5oZWFs
dGh5KHdyaXRhYmxlPUZhbHNlKSkKLQotICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19p
Zl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1v
Y2tDYXNzYW5kcmFDb250ZXh0KQotICAgIGRlZiB0ZXN0X25vX3dvcmsoc2VsZiwgcmVkaXM9U3Ry
aWN0UmVkaXMsIGNhc3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0KToKLSAgICAgICAgc2VsZi5pbml0
X2RhdGFiYXNlKHJlZGlzPXJlZGlzLCBjYXNzYW5kcmE9Y2Fzc2FuZHJhLCBhc3luY19wcm9jZXNz
aW5nPVRydWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5tb2RlbC5kb193b3JrKCkp
CkluZGV4OiBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9wYXJ0aXRpb25lZF9y
ZWRpcy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2Rl
bC9wYXJ0aXRpb25lZF9yZWRpcy5weQkocmV2aXNpb24gMjY1NTMxKQorKysgVG9vbHMvcmVzdWx0
c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvcGFydGl0aW9uZWRfcmVkaXMucHkJKG5vbmV4aXN0ZW50
KQpAQCAtMSw1MSArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoK
LSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECi0jIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECi0jIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSMgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTAotIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotIyBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLAotIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
Ci0KLSMgVGhpcyBpc24ndCBhIHBlcmZlY3QgaW1wbGVtZW50YXRpb24sIGJ1dCBpdCBjb3ZlcnMg
dGhlIGNhc2VzIG5lZWRlZCBieSByZXN1bHRzIGRhdGFiYXNlcwotY2xhc3MgUGFydGl0aW9uZWRS
ZWRpcyhvYmplY3QpOgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlZGlzLCBwYXJ0aXRpb24p
OgotICAgICAgICBzZWxmLl9yZWRpcyA9IHJlZGlzCi0gICAgICAgIHNlbGYuX3BhcnRpdGlvbiA9
IHBhcnRpdGlvbgotICAgICAgICBpZiBub3Qgc2VsZi5fcGFydGl0aW9uOgotICAgICAgICAgICAg
cmFpc2UgVmFsdWVFcnJvcignS2V5ZWRSZWRpcyBvYmplY3QgcmVxdWlyZXMgYSBkZWZpbmVkIHBh
cnRpdGlvbiBrZXknKQotCi0gICAgZGVmIHBpbmcoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxm
Ll9yZWRpcy5waW5nKCkKLQotICAgIGRlZiBnZXQoc2VsZiwgbmFtZSk6Ci0gICAgICAgIHJldHVy
biBzZWxmLl9yZWRpcy5nZXQoc2VsZi5fcGFydGl0aW9uICsgJzonICsgbmFtZSkKLQotICAgIGRl
ZiBzZXQoc2VsZiwgbmFtZSwgdmFsdWUsICoqa3dhcmdzKToKLSAgICAgICAgcmV0dXJuIHNlbGYu
X3JlZGlzLnNldChzZWxmLl9wYXJ0aXRpb24gKyAnOicgKyBuYW1lLCB2YWx1ZSwgKiprd2FyZ3Mp
Ci0KLSAgICBkZWYgbG9jayhzZWxmLCBuYW1lLCAqKmt3YXJncyk6Ci0gICAgICAgIHJldHVybiBz
ZWxmLl9yZWRpcy5sb2NrKHNlbGYuX3BhcnRpdGlvbiArICc6JyArIG5hbWUsICoqa3dhcmdzKQot
Ci0gICAgZGVmIGRlbGV0ZShzZWxmLCAqbmFtZXMpOgotICAgICAgICBuYW1lc190b19kZWxldGUg
PSBbc2VsZi5fcGFydGl0aW9uICsgJzonICsgbmFtZSBmb3IgbmFtZSBpbiBuYW1lc10KLSAgICAg
ICAgcmV0dXJuIHNlbGYuX3JlZGlzLmRlbGV0ZSgqbmFtZXNfdG9fZGVsZXRlKQotCi0gICAgZGVm
IHNjYW5faXRlcihzZWxmLCBtYXRjaD1Ob25lLCAqKmt3YXJncyk6Ci0gICAgICAgIGZvciBrZXkg
aW4gc2VsZi5fcmVkaXMuc2Nhbl9pdGVyKG1hdGNoPXNlbGYuX3BhcnRpdGlvbiArICc6JyArIG1h
dGNoLCAqKmt3YXJncyk6Ci0gICAgICAgICAgICB5aWVsZCBrZXlbbGVuKHNlbGYuX3BhcnRpdGlv
bikgKyAxOl0KSW5kZXg6IFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL3BhcnRp
dGlvbmVkX3JlZGlzX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL3Jlc3VsdHNkYnB5
L3Jlc3VsdHNkYnB5L21vZGVsL3BhcnRpdGlvbmVkX3JlZGlzX3VuaXR0ZXN0LnB5CShyZXZpc2lv
biAyNjU1MzEpCisrKyBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9wYXJ0aXRp
b25lZF9yZWRpc191bml0dGVzdC5weQkobm9uZXhpc3RlbnQpCkBAIC0xLDgyICswLDAgQEAKLSMg
Q29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
IwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQotIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SCi0jIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0jIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0jIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLWZyb20gZmFrZXJlZGlzIGltcG9y
dCBGYWtlU3RyaWN0UmVkaXMKLWZyb20gcmVkaXMgaW1wb3J0IFN0cmljdFJlZGlzCi1mcm9tIHJl
c3VsdHNkYnB5Lm1vZGVsLnBhcnRpdGlvbmVkX3JlZGlzIGltcG9ydCBQYXJ0aXRpb25lZFJlZGlz
Ci1mcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLndhaXRfZm9yX2RvY2tlcl90ZXN0X2Nhc2UgaW1wb3J0
IFdhaXRGb3JEb2NrZXJUZXN0Q2FzZQotCi0KLWNsYXNzIFBhcnRpdGlvbmVkUmVkaXNVbml0dGVz
dChXYWl0Rm9yRG9ja2VyVGVzdENhc2UpOgotICAgIFBBUlRJVElPTl8xID0gJ3BhcnRpdGlvbl8x
JwotICAgIFBBUlRJVElPTl8yID0gJ3BhcnRpdGlvbl8yJwotCi0gICAgQFdhaXRGb3JEb2NrZXJU
ZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcykKLSAg
ICBkZWYgdGVzdF9nZXQoc2VsZiwgcmVkaXM9U3RyaWN0UmVkaXMpOgotICAgICAgICByZWRpc18x
ID0gUGFydGl0aW9uZWRSZWRpcyhyZWRpcygpLCBzZWxmLlBBUlRJVElPTl8xKQotICAgICAgICBy
ZWRpc18yID0gUGFydGl0aW9uZWRSZWRpcyhyZWRpcygpLCBzZWxmLlBBUlRJVElPTl8yKQotICAg
ICAgICByZWRpc18xLnNldCgna2V5JywgJ3ZhbHVlJykKLSAgICAgICAgcmVkaXNfMi5zZXQoJ2tl
eScsICdvdGhlcicpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWRpc18xLmdldCgna2V5
JykuZGVjb2RlKCd1dGYtOCcpLCAndmFsdWUnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJl
ZGlzXzIuZ2V0KCdrZXknKS5kZWNvZGUoJ3V0Zi04JyksICdvdGhlcicpCi0KLSAgICBAV2FpdEZv
ckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJl
ZGlzKQotICAgIGRlZiB0ZXN0X2RlbGV0ZShzZWxmLCByZWRpcz1TdHJpY3RSZWRpcyk6Ci0gICAg
ICAgIHJlZGlzXzEgPSBQYXJ0aXRpb25lZFJlZGlzKHJlZGlzKCksIHNlbGYuUEFSVElUSU9OXzEp
Ci0gICAgICAgIHJlZGlzXzIgPSBQYXJ0aXRpb25lZFJlZGlzKHJlZGlzKCksIHNlbGYuUEFSVElU
SU9OXzIpCi0gICAgICAgIHJlZGlzXzEuc2V0KCdrZXktYScsICd2YWx1ZS1hJykKLSAgICAgICAg
cmVkaXNfMS5zZXQoJ2tleS1iJywgJ3ZhbHVlLWInKQotICAgICAgICByZWRpc18yLnNldCgna2V5
LWEnLCAnb3RoZXItYScpCi0gICAgICAgIHJlZGlzXzIuc2V0KCdrZXktYicsICdvdGhlci1iJykK
LQotICAgICAgICByZWRpc18xLmRlbGV0ZSgna2V5LWEnLCAna2V5LWInKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHJlZGlzXzEuZ2V0KCdrZXktYScpLCBOb25lKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHJlZGlzXzEuZ2V0KCdrZXktYicpLCBOb25lKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHJlZGlzXzIuZ2V0KCdrZXktYScpLmRlY29kZSgndXRmLTgnKSwgJ290aGVyLWEnKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlZGlzXzIuZ2V0KCdrZXktYicpLmRlY29kZSgndXRm
LTgnKSwgJ290aGVyLWInKQotCi0gICAgICAgIHJlZGlzXzIuZGVsZXRlKCdrZXktYScpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVkaXNfMi5nZXQoJ2tleS1hJyksIE5vbmUpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwocmVkaXNfMi5nZXQoJ2tleS1iJykuZGVjb2RlKCd1dGYtOCcpLCAn
b3RoZXItYicpCi0KLSAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2Vy
KG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzKQotICAgIGRlZiB0ZXN0X2xvY2soc2VsZiwgcmVk
aXM9U3RyaWN0UmVkaXMpOgotICAgICAgICByZWRpc18xID0gUGFydGl0aW9uZWRSZWRpcyhyZWRp
cygpLCBzZWxmLlBBUlRJVElPTl8xKQotICAgICAgICByZWRpc18yID0gUGFydGl0aW9uZWRSZWRp
cyhyZWRpcygpLCBzZWxmLlBBUlRJVElPTl8yKQotICAgICAgICB3aXRoIHJlZGlzXzEubG9jayhu
YW1lPSdsb2NrJywgYmxvY2tpbmdfdGltZW91dD0uNSk6Ci0gICAgICAgICAgICB3aXRoIHJlZGlz
XzIubG9jayhuYW1lPSdsb2NrJywgYmxvY2tpbmdfdGltZW91dD0uNSk6Ci0gICAgICAgICAgICAg
ICAgcGFzcwotCi0gICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlciht
b2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcykKLSAgICBkZWYgdGVzdF9zY2FuKHNlbGYsIHJlZGlz
PVN0cmljdFJlZGlzKToKLSAgICAgICAgcmVkaXNfMSA9IFBhcnRpdGlvbmVkUmVkaXMocmVkaXMo
KSwgc2VsZi5QQVJUSVRJT05fMSkKLSAgICAgICAgcmVkaXNfMiA9IFBhcnRpdGlvbmVkUmVkaXMo
cmVkaXMoKSwgc2VsZi5QQVJUSVRJT05fMikKLSAgICAgICAgcmVkaXNfMS5zZXQoJ2l0ZXItYScs
ICd2YWx1ZS1hJykKLSAgICAgICAgcmVkaXNfMS5zZXQoJ2l0ZXItYicsICd2YWx1ZS1iJykKLSAg
ICAgICAgcmVkaXNfMi5zZXQoJ2l0ZXItYycsICd2YWx1ZS1jJykKLSAgICAgICAgcmVkaXNfMi5z
ZXQoJ2l0ZXItZCcsICd2YWx1ZS1kJykKLQotICAgICAgICBmb3Iga2V5IGluIHJlZGlzXzEuc2Nh
bl9pdGVyKCdpdGVyKicpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihrZXkuZGVjb2RlKCd1
dGYtOCcpLCBbJ2l0ZXItYScsICdpdGVyLWInXSkKLSAgICAgICAgZm9yIGtleSBpbiByZWRpc18y
LnNjYW5faXRlcignaXRlcionKToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oa2V5LmRlY29k
ZSgndXRmLTgnKSwgWydpdGVyLWMnLCAnaXRlci1kJ10pCkluZGV4OiBUb29scy9yZXN1bHRzZGJw
eS9yZXN1bHRzZGJweS9tb2RlbC9yZWRpc191bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9yZWRpc191bml0dGVzdC5weQkocmV2aXNp
b24gMjY1NTMxKQorKysgVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvcmVkaXNf
dW5pdHRlc3QucHkJKG5vbmV4aXN0ZW50KQpAQCAtMSw0NiArMCwwIEBACi0jIENvcHlyaWdodCAo
QykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJB
UyBJUyIgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotIyBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUgotIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotIyBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1pbXBvcnQgdGltZQotZnJvbSByZWRpcyBpbXBvcnQg
U3RyaWN0UmVkaXMKLWZyb20gZmFrZXJlZGlzIGltcG9ydCBGYWtlU3RyaWN0UmVkaXMKLWZyb20g
cmVzdWx0c2RicHkubW9kZWwud2FpdF9mb3JfZG9ja2VyX3Rlc3RfY2FzZSBpbXBvcnQgV2FpdEZv
ckRvY2tlclRlc3RDYXNlCi0KLQotY2xhc3MgUmVkaXNVbml0dGVzdChXYWl0Rm9yRG9ja2VyVGVz
dENhc2UpOgotCi0gICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlciht
b2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcykKLSAgICBkZWYgdGVzdF9iYXNpYyhzZWxmLCByZWRp
cz1TdHJpY3RSZWRpcyk6Ci0gICAgICAgIGRiID0gcmVkaXMoKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGRiLnNldCgnZXhhbXBsZV9rZXknLCAndmFsdWUnKSwgVHJ1ZSkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChkYi5nZXQoJ2V4YW1wbGVfa2V5JykuZGVjb2RlKCd1dGYtOCcpLCAndmFs
dWUnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRiLmRlbGV0ZSgnZXhhbXBsZV9rZXknKSwg
VHJ1ZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYi5nZXQoJ2V4YW1wbGVfa2V5JyksIE5v
bmUpCi0KLSAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tf
cmVkaXM9RmFrZVN0cmljdFJlZGlzKQotICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UucnVuX2lm
X3Nsb3coKQotICAgIGRlZiB0ZXN0X3RpbWVvdXQoc2VsZiwgcmVkaXM9U3RyaWN0UmVkaXMpOgot
ICAgICAgICBkYiA9IHJlZGlzKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYi5zZXQoJ2V4
YW1wbGVfa2V5JywgJ3ZhbHVlJywgZXg9MSksIFRydWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoZGIuZ2V0KCdleGFtcGxlX2tleScpLmRlY29kZSgndXRmLTgnKSwgJ3ZhbHVlJykKLSAgICAg
ICAgdGltZS5zbGVlcCgyKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRiLmdldCgnZXhhbXBs
ZV9rZXknKSwgTm9uZSkKSW5kZXg6IFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVs
L3JlcG9zaXRvcnkucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2Ri
cHkvbW9kZWwvcmVwb3NpdG9yeS5weQkocmV2aXNpb24gMjY1NTMxKQorKysgVG9vbHMvcmVzdWx0
c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvcmVwb3NpdG9yeS5weQkobm9uZXhpc3RlbnQpCkBAIC0x
LDM4OSArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0jIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECi0jIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TAotIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUgotIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotIyBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLAotIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1pbXBv
cnQgZGF0ZXRpbWUKLWltcG9ydCBjb250ZXh0bGliCi1pbXBvcnQganNvbgotaW1wb3J0IHJlCi1p
bXBvcnQgcmVxdWVzdHMKLWltcG9ydCB0aHJlYWRpbmcKLWltcG9ydCB1cmxsaWIKLWltcG9ydCB4
bWx0b2RpY3QKLQotZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVyLmNvbW1pdCBpbXBvcnQgQ29t
bWl0Ci1mcm9tIHhtbC5wYXJzZXJzLmV4cGF0IGltcG9ydCBFeHBhdEVycm9yCi0KLQotY2xhc3Mg
U0NNRXhjZXB0aW9uKFJ1bnRpbWVFcnJvcik6Ci0gICAgcGFzcwotCi0KLWNsYXNzIFJlcG9zaXRv
cnkob2JqZWN0KToKLSAgICBERUZBVUxUX0JSQU5DSCA9ICdtYXN0ZXInCi0KLSAgICBkZWYgX19p
bml0X18oc2VsZiwga2V5KToKLSAgICAgICAgc2VsZi5rZXkgPSBrZXkKLQotICAgIGRlZiBjb21t
aXRfZm9yX2lkKHNlbGYsIGlkLCBicmFuY2g9Tm9uZSk6Ci0gICAgICAgIHJhaXNlIE5vdEltcGxl
bWVudGVkRXJyb3IoKQotCi0gICAgZGVmIHVybF9mb3JfY29tbWl0KHNlbGYsIGNvbW1pdCk6Ci0g
ICAgICAgIHJldHVybiBOb25lCi0KLQotY2xhc3MgSFRUUFJlcG9zaXRvcnkoUmVwb3NpdG9yeSk6
Ci0KLSAgICBkZWYgX19pbml0X18oc2VsZiwga2V5LCB1cmwsIHJlZGlzPU5vbmUsIHVzZXJuYW1l
PU5vbmUsIHBhc3N3b3JkPU5vbmUpOgotICAgICAgICBzdXBlcihIVFRQUmVwb3NpdG9yeSwgc2Vs
ZikuX19pbml0X18oa2V5KQotICAgICAgICBzZWxmLnVybCA9IHVybAotICAgICAgICBzZWxmLl91
c2VybmFtZSA9IHVzZXJuYW1lCi0gICAgICAgIHNlbGYuX3Bhc3N3b3JkID0gcGFzc3dvcmQKLSAg
ICAgICAgc2VsZi5fc2Vzc2lvbiA9IE5vbmUKLSAgICAgICAgc2VsZi5fc2Vzc2lvbl9kZXB0aCA9
IDAKLSAgICAgICAgc2VsZi5yZWRpcyA9IHJlZGlzICAjIEluIG1hbnkgY2FzZXMsIHdlIGNhbiBn
cmVhdGx5IHJlZHVjZSB0aGUgbnVtYmVyIG9mIHJlcXVlc3RzIG1hZGUgYnkgY2FjaGluZyByZXF1
ZXN0cyBpbiBSZWRpcy4KLQotICAgIEBjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCi0gICAgZGVm
IHNlc3Npb24oc2VsZik6Ci0gICAgICAgIGlmIG5vdCBzZWxmLl9zZXNzaW9uOgotICAgICAgICAg
ICAgc2VsZi5fc2Vzc2lvbiA9IHJlcXVlc3RzLlNlc3Npb24oKQotICAgICAgICAgICAgaWYgc2Vs
Zi5fdXNlcm5hbWUgYW5kIHNlbGYuX3Bhc3N3b3JkOgotICAgICAgICAgICAgICAgIHNlbGYuX3Nl
c3Npb24uYXV0aCA9IChzZWxmLl91c2VybmFtZSwgc2VsZi5fcGFzc3dvcmQpCi0gICAgICAgICAg
ICBzZWxmLl9zZXNzaW9uLm1vdW50KHNlbGYudXJsLCByZXF1ZXN0cy5hZGFwdGVycy5IVFRQQWRh
cHRlcihtYXhfcmV0cmllcz01KSkKLSAgICAgICAgc2VsZi5fc2Vzc2lvbl9kZXB0aCArPSAxCi0K
LSAgICAgICAgeWllbGQKLQotICAgICAgICBzZWxmLl9zZXNzaW9uX2RlcHRoIC09IDEKLSAgICAg
ICAgaWYgc2VsZi5fc2Vzc2lvbl9kZXB0aCA8PSAwOgotICAgICAgICAgICAgc2VsZi5fc2Vzc2lv
bi5jbG9zZSgpCi0gICAgICAgICAgICBzZWxmLl9zZXNzaW9uID0gTm9uZQotCi0gICAgZGVmIHJl
cXVlc3Qoc2VsZiwgdXJsLCBtZXRob2Q9J0dFVCcsICoqa3dhcmdzKToKLSAgICAgICAgd2l0aCBz
ZWxmLnNlc3Npb24oKToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9zZXNzaW9uLnJlcXVlc3Qo
bWV0aG9kPW1ldGhvZCwgdXJsPXVybCwgKiprd2FyZ3MpCi0KLSAgICBkZWYgY2FjaGVfcmVzdWx0
KHNlbGYsIGtleSwgZnVuY3Rpb24sIGV4PTYwICogNjAgKiAyNCAqIDIpOgotICAgICAgICByZXN1
bHQgPSBOb25lCi0gICAgICAgIGlmIHNlbGYucmVkaXM6Ci0gICAgICAgICAgICByZXN1bHQgPSBz
ZWxmLnJlZGlzLmdldChrZXkpCi0gICAgICAgIGlmIHJlc3VsdCBpcyBOb25lOgotICAgICAgICAg
ICAgcmVzdWx0ID0gZnVuY3Rpb24oKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmVzdWx0
ID0gcmVzdWx0LmRlY29kZSgndXRmLTgnKQotICAgICAgICBpZiByZXN1bHQgYW5kIHNlbGYucmVk
aXM6Ci0gICAgICAgICAgICBzZWxmLnJlZGlzLnNldChrZXksIHJlc3VsdCwgZXg9ZXgpCi0gICAg
ICAgIHJldHVybiByZXN1bHQKLQotCi1jbGFzcyBTdGFzaFJlcG9zaXRvcnkoSFRUUFJlcG9zaXRv
cnkpOgotCi0gICAgIyBTdGFzaCdzIHRpbWVzdGFtcHMgYXJlIGFjY3VyYXRlIHRvIHRoZSBtaWxs
aXNlY29uZC4KLSAgICBDT01NSVRfVElNRVNUQU1QX0NPTlZFUlNJT04gPSAxMDAwCi0KLSAgICBk
ZWYgX19pbml0X18oc2VsZiwgdXJsLCAqKmt3YXJncyk6Ci0gICAgICAgIFBST0pFQ1RTID0gJy9w
cm9qZWN0cycKLSAgICAgICAgaWYgbGVuKHVybC5zcGxpdChQUk9KRUNUUykpICE9IDI6Ci0gICAg
ICAgICAgICByYWlzZSBFeGNlcHRpb24oZid7dXJsfSBpcyBub3QgYSBTdGFzaCBVUkwnKQotICAg
ICAgICBzZWxmLmJhc2VfdXJsID0gdXJsCi0gICAgICAgIHN1cGVyKFN0YXNoUmVwb3NpdG9yeSwg
c2VsZikuX19pbml0X18oTm9uZSwgKCcvcmVzdC9hcGkvMS4wJyArIFBST0pFQ1RTKS5qb2luKHVy
bC5zcGxpdChQUk9KRUNUUykpLCAqKmt3YXJncykKLQotICAgICAgICB3aXRoIHNlbGYuc2Vzc2lv
bigpOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHN0YXNoX2RhdGEgPSBzZWxm
LmdldCgpCi0gICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKLSAgICAgICAgICAgICAgICBz
dGFzaF9kYXRhID0ge30KLSAgICAgICAgICAgIHNlbGYua2V5ID0gc3Rhc2hfZGF0YS5nZXQoJ3Ns
dWcnLCBOb25lKQotICAgICAgICAgICAgaWYgbm90IHNlbGYua2V5OgotICAgICAgICAgICAgICAg
IHJhaXNlIEV4Y2VwdGlvbihmJ3tzZWxmLnVybH0gaXMgbm90IGFuIFN0YXNoIHJlcG9zaXRvcnkn
KQotCi0gICAgZGVmIGdldChzZWxmLCBhcmdzPU5vbmUsIGNhY2hlPVRydWUpOgotICAgICAgICB1
cmwgPSBzZWxmLnVybCArICgnJyBpZiBub3QgYXJncyBlbHNlIGYnL3thcmdzfScpCi0KLSAgICAg
ICAgZGVmIGNhbGxiYWNrKHVybD11cmwsIG9iaj1zZWxmKToKLSAgICAgICAgICAgIHJlc3BvbnNl
ID0gb2JqLnJlcXVlc3QodXJsKQotICAgICAgICAgICAgaWYgcmVzcG9uc2Uuc3RhdHVzX2NvZGUg
PT0gMjAwOgotICAgICAgICAgICAgICAgIHJldHVybiByZXNwb25zZS50ZXh0Ci0gICAgICAgICAg
ICByZXR1cm4gTm9uZQotCi0gICAgICAgIHJlc3VsdCA9IHNlbGYuY2FjaGVfcmVzdWx0KAotICAg
ICAgICAgICAgZidyZXBvc2l0b3J5Ont1cmx9JywKLSAgICAgICAgICAgIGNhbGxiYWNrLAotICAg
ICAgICApIGlmIGNhY2hlIGVsc2UgY2FsbGJhY2sodXJsKQotICAgICAgICBpZiByZXN1bHQ6Ci0g
ICAgICAgICAgICByZXR1cm4ganNvbi5sb2FkcyhyZXN1bHQpCi0gICAgICAgIHJldHVybiB7fQot
Ci0gICAgZGVmIGNvbW1pdF9mb3JfaWQoc2VsZiwgaWQsIGJyYW5jaD1SZXBvc2l0b3J5LkRFRkFV
TFRfQlJBTkNIKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgd2l0aCBzZWxmLnNlc3Npb24o
KToKLSAgICAgICAgICAgICAgICBjb21taXRfZGF0YSA9IHNlbGYuZ2V0KGYnY29tbWl0cy97aWR9
JykKLSAgICAgICAgICAgICAgICBpZiBub3QgY29tbWl0X2RhdGE6Ci0gICAgICAgICAgICAgICAg
ICAgIHJhaXNlIFNDTUV4Y2VwdGlvbihmJ0NvbW1pdCB7aWR9IGRvZXMgbm90IGV4aXN0IG9uIGJy
YW5jaCB7YnJhbmNofScpCi0gICAgICAgICAgICAgICAgdGltZXN0YW1wID0gaW50KGNvbW1pdF9k
YXRhWydjb21taXR0ZXJUaW1lc3RhbXAnXSkgLy8gc2VsZi5DT01NSVRfVElNRVNUQU1QX0NPTlZF
UlNJT04KLQotICAgICAgICAgICAgICAgIGJyYW5jaF9maWx0ZXIgPSB1cmxsaWIucGFyc2UucXVv
dGUoZidyZWZzL2hlYWRzL3ticmFuY2h9JykKLSAgICAgICAgICAgICAgICBjb21taXRzX2JldHdl
ZW5fY29tbWl0X2FuZF9icmFuY2hfaGVhZCA9IHNlbGYuZ2V0KGYiY29tbWl0cz9zaW5jZT17Y29t
bWl0X2RhdGFbJ2lkJ119JnVudGlsPXticmFuY2hfZmlsdGVyfSZsaW1pdD0xIiwgY2FjaGU9RmFs
c2UpCi0gICAgICAgICAgICAgICAgaWYgY29tbWl0c19iZXR3ZWVuX2NvbW1pdF9hbmRfYnJhbmNo
X2hlYWRbJ2lzTGFzdFBhZ2UnXSBhbmQgY29tbWl0c19iZXR3ZWVuX2NvbW1pdF9hbmRfYnJhbmNo
X2hlYWRbJ3NpemUnXSA9PSAwOgotICAgICAgICAgICAgICAgICAgICAjIFdlIG1heSBoYXZlIG1p
c3NlZCB0aGUgY2FzZSB0aGUgY29tbWl0IGluIHF1ZXN0aW9uIGlzIHRoZSBIRUFEIG9mIHRoZSBi
cmFuY2gKLSAgICAgICAgICAgICAgICAgICAgY29tbWl0c19hdF9icmFuY2hfaGVhZCA9IHNlbGYu
Z2V0KGYnY29tbWl0cz91bnRpbD17YnJhbmNoX2ZpbHRlcn0mbGltaXQ9MjAnLCBjYWNoZT1GYWxz
ZSkKLSAgICAgICAgICAgICAgICAgICAgaWYgYWxsKFtjb21taXRbJ2lkJ10gIT0gY29tbWl0X2Rh
dGFbJ2lkJ10gZm9yIGNvbW1pdCBpbiBjb21taXRzX2F0X2JyYW5jaF9oZWFkWyd2YWx1ZXMnXV0p
OgotICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgU0NNRXhjZXB0aW9uKGYne2lkfSBleGlz
dHMsIGJ1dCBub3Qgb24ge2JyYW5jaH0nKQotCi0gICAgICAgICAgICAgICAgIyBPcmRlcmluZyBj
b21taXRzIGJ5IHRpbWVzdGFtcCBpbiBnaXQgaXMgYSBiaXQgcHJvYmxlbWF0aWMgYmVjYXVzZSBt
dWx0aXBsZSBjb21taXRzIGNhbiBzaGFyZSBhIHRpbWVzdGFtcC4KLSAgICAgICAgICAgICAgICAj
IEdlbmVyYWxseSwgaWYgeW91ciBwYXJlbnQgc2hhcmVzIHlvdXIgdGltZXN0YW1wLCB5b3VyIG9y
ZGVyIG5lZWRzIHRvIGJlIGluY3JlbWVudGVkLgotICAgICAgICAgICAgICAgIG9yZGVyID0gMAot
ICAgICAgICAgICAgICAgIGxvb3BfZGF0YSA9IGNvbW1pdF9kYXRhCi0gICAgICAgICAgICAgICAg
d2hpbGUgbGVuKGxvb3BfZGF0YVsncGFyZW50cyddKSA9PSAxIGFuZCBpbnQobG9vcF9kYXRhWydw
YXJlbnRzJ11bMF1bJ2NvbW1pdHRlclRpbWVzdGFtcCddKSAvLyBzZWxmLkNPTU1JVF9USU1FU1RB
TVBfQ09OVkVSU0lPTiA9PSB0aW1lc3RhbXA6Ci0gICAgICAgICAgICAgICAgICAgIG9yZGVyICs9
IDEKLSAgICAgICAgICAgICAgICAgICAgbG9vcF9kYXRhID0gc2VsZi5nZXQoZiJjb21taXRzL3ts
b29wX2RhdGFbJ3BhcmVudHMnXVswXVsnaWQnXX0iKQotCi0gICAgICAgICAgICAgICAgcmV0dXJu
IENvbW1pdCgKLSAgICAgICAgICAgICAgICAgICAgcmVwb3NpdG9yeV9pZD1zZWxmLmtleSwKLSAg
ICAgICAgICAgICAgICAgICAgaWQ9Y29tbWl0X2RhdGFbJ2lkJ10sCi0gICAgICAgICAgICAgICAg
ICAgIGJyYW5jaD1icmFuY2gsCi0gICAgICAgICAgICAgICAgICAgIHRpbWVzdGFtcD10aW1lc3Rh
bXAsCi0gICAgICAgICAgICAgICAgICAgIG9yZGVyPW9yZGVyLAotICAgICAgICAgICAgICAgICAg
ICBjb21taXR0ZXI9Y29tbWl0X2RhdGFbJ2NvbW1pdHRlciddWydlbWFpbEFkZHJlc3MnXSwKLSAg
ICAgICAgICAgICAgICAgICAgbWVzc2FnZT1jb21taXRfZGF0YVsnbWVzc2FnZSddLAotICAgICAg
ICAgICAgICAgICkKLSAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6Ci0gICAgICAgICAgICByYWlz
ZSBTQ01FeGNlcHRpb24oZidGYWlsZWQgdG8gY29ubmVjdCB0byB7c2VsZi51cmx9JykKLQotICAg
IGRlZiB1cmxfZm9yX2NvbW1pdChzZWxmLCBjb21taXQpOgotICAgICAgICByZXR1cm4gZid7c2Vs
Zi5iYXNlX3VybH0vY29tbWl0cy97Y29tbWl0fScKLQotCi1jbGFzcyBTVk5SZXBvc2l0b3J5KEhU
VFBSZXBvc2l0b3J5KToKLQotICAgIERFRkFVTFRfQlJBTkNIID0gJ3RydW5rJwotICAgIERBVl9Y
TUwgPSAiIiI8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgotPHByb3BmaW5k
IHhtbG5zPSJEQVY6Ij4KLTxwcm9wPgotPHJlc291cmNldHlwZSB4bWxucz0iREFWOiIvPgotPGdl
dGNvbnRlbnRsZW5ndGggeG1sbnM9IkRBVjoiLz4KLTxkZWFkcHJvcC1jb3VudCB4bWxucz0iaHR0
cDovL3N1YnZlcnNpb24udGlncmlzLm9yZy94bWxucy9kYXYvIi8+Ci08dmVyc2lvbi1uYW1lIHht
bG5zPSJEQVY6Ii8+Ci08Y3JlYXRpb25kYXRlIHhtbG5zPSJEQVY6Ii8+Ci08Y3JlYXRvci1kaXNw
bGF5bmFtZSB4bWxucz0iREFWOiIvPgotPC9wcm9wPjwvcHJvcGZpbmQ+IiIiCi0KLSAgICBkZWYg
Z2V0KHNlbGYsIGJyYW5jaD1ERUZBVUxUX0JSQU5DSCwgcmV2aXNpb249Tm9uZSk6Ci0gICAgICAg
IHVybCA9IHNlbGYudXJsCi0gICAgICAgIGlmIHJldmlzaW9uOgotICAgICAgICAgICAgdXJsID0g
dXJsICsgZiIhc3ZuL3J2ci97cmV2aXNpb259L3ticmFuY2ggaWYgYnJhbmNoID09IHNlbGYuREVG
QVVMVF9CUkFOQ0ggZWxzZSAnYnJhbmNoZXMvJyArIGJyYW5jaH0iCi0KLSAgICAgICAgZGVmIGNh
bGxiYWNrKHVybD11cmwsIG9iaj1zZWxmLCB3aXRoX3JldmlzaW9uPVRydWUgaWYgcmV2aXNpb24g
ZWxzZSBGYWxzZSk6Ci0gICAgICAgICAgICBpZiB3aXRoX3JldmlzaW9uOgotICAgICAgICAgICAg
ICAgICMgQ29uc3RydWN0ZWQgdGhpcyBmcm9tIFdpcmVTaGFyayBhbmQgYW4gc3ZuIGluZm8gY29t
bWFuZCwgbW9kaWZ5IHdpdGggY2F1dGlvbiEKLSAgICAgICAgICAgICAgICByZXNwb25zZSA9IHNl
bGYucmVxdWVzdCgKLSAgICAgICAgICAgICAgICAgICAgbWV0aG9kPSdQUk9QRklORCcsCi0gICAg
ICAgICAgICAgICAgICAgIHVybD11cmwsCi0gICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9ewot
ICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICd0ZXh0L3htbCcsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAnQWNjZXB0LUVuY29kaW5nJzogJ2d6aXAnLAotICAgICAgICAg
ICAgICAgICAgICAgICAgJ0RlcHRoJzogJzAnLAotICAgICAgICAgICAgICAgICAgICB9LAotICAg
ICAgICAgICAgICAgICAgICBkYXRhPW9iai5EQVZfWE1MKQotICAgICAgICAgICAgZWxzZToKLSAg
ICAgICAgICAgICAgICByZXNwb25zZSA9IHNlbGYucmVxdWVzdChzZWxmLnVybCkKLQotICAgICAg
ICAgICAgaWYgcmVzcG9uc2Uuc3RhdHVzX2NvZGUgaW4gWzIwMCwgMjA3XToKLSAgICAgICAgICAg
ICAgICByZXR1cm4gcmVzcG9uc2UudGV4dAotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLQotICAg
ICAgICByZXN1bHQgPSBzZWxmLmNhY2hlX3Jlc3VsdCgKLSAgICAgICAgICAgIGYncmVwb3NpdG9y
eTp7dXJsfScsCi0gICAgICAgICAgICBjYWxsYmFjaywKLSAgICAgICAgKQotICAgICAgICBpZiBy
ZXN1bHQ6Ci0gICAgICAgICAgICByZXR1cm4geG1sdG9kaWN0LnBhcnNlKHJlc3VsdCkKLSAgICAg
ICAgcmV0dXJuIHt9Ci0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgdXJsLCB0cmFjX3VybD1Ob25l
LCAqKmt3YXJncyk6Ci0gICAgICAgIHN1cGVyKFNWTlJlcG9zaXRvcnksIHNlbGYpLl9faW5pdF9f
KE5vbmUsIHVybCwgKiprd2FyZ3MpCi0gICAgICAgIHNlbGYudHJhY191cmwgPSB0cmFjX3VybAot
ICAgICAgICB3aXRoIHNlbGYuc2Vzc2lvbigpOgotICAgICAgICAgICAgc2VsZi5rZXkgPSBzZWxm
LmdldCgpLmdldCgnc3ZuJywge30pLmdldCgnaW5kZXgnKS5nZXQoJ0BiYXNlJykKLSAgICAgICAg
ICAgIGlmIG5vdCBzZWxmLmtleToKLSAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oZid7
c2VsZi51cmx9IGlzIG5vdCBhbiBTVk4gcmVwb3NpdG9yeScpCi0KLSAgICBkZWYgY29tbWl0X2Zv
cl9pZChzZWxmLCBpZCwgYnJhbmNoPURFRkFVTFRfQlJBTkNIKToKLSAgICAgICAgd2l0aCBzZWxm
LnNlc3Npb24oKToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBjb21taXRfZGF0
YSA9IHNlbGYuZ2V0KGJyYW5jaD1icmFuY2gsIHJldmlzaW9uPWlkKVsnRDptdWx0aXN0YXR1cydd
WydEOnJlc3BvbnNlJ11bJ0Q6cHJvcHN0YXQnXVswXVsnRDpwcm9wJ10KLSAgICAgICAgICAgICAg
ICBpZiBjb21taXRfZGF0YVsnbHAxOnZlcnNpb24tbmFtZSddICE9IHN0cihpZCk6Ci0gICAgICAg
ICAgICAgICAgICAgIHJhaXNlIFNDTUV4Y2VwdGlvbihmJ1JldmlzaW9uIHtpZH0gZG9lcyBub3Qg
ZXhpc3Qgb24gYnJhbmNoIHticmFuY2h9JykKLQotICAgICAgICAgICAgICAgICMgT2YgdGhlIGZv
cm0gJzIwMTgtMDktMjRUMjI6MDM6MzQuNDM2MjE3WicKLSAgICAgICAgICAgICAgICB0aW1lc3Rh
bXAgPSBkYXRldGltZS5kYXRldGltZS5zdHJwdGltZShjb21taXRfZGF0YVsnbHAxOmNyZWF0aW9u
ZGF0ZSddLCAnJVktJW0tJWRUJUg6JU06JVMuJWZaJykKLQotICAgICAgICAgICAgICAgIHJldHVy
biBDb21taXQoCi0gICAgICAgICAgICAgICAgICAgIHJlcG9zaXRvcnlfaWQ9c2VsZi5rZXksCi0g
ICAgICAgICAgICAgICAgICAgIGlkPXN0cihpZCksCi0gICAgICAgICAgICAgICAgICAgIGJyYW5j
aD1icmFuY2gsCi0gICAgICAgICAgICAgICAgICAgIHRpbWVzdGFtcD10aW1lc3RhbXAsCi0gICAg
ICAgICAgICAgICAgICAgIG9yZGVyPTAsCi0gICAgICAgICAgICAgICAgICAgIGNvbW1pdHRlcj1j
b21taXRfZGF0YVsnbHAxOmNyZWF0b3ItZGlzcGxheW5hbWUnXSwKLSAgICAgICAgICAgICAgICAp
Ci0gICAgICAgICAgICBleGNlcHQgRXhwYXRFcnJvcjoKLSAgICAgICAgICAgICAgICByYWlzZSBT
Q01FeGNlcHRpb24oZidGYWlsZWQgdG8gY29ubmVjdCB0byB7c2VsZi51cmx9JykKLSAgICAgICAg
ICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgICAgICByYWlzZSBTQ01FeGNlcHRpb24o
ZidSZXZpc2lvbiB7aWR9IGRvZXMgbm90IGV4aXN0IG9uIGJyYW5jaCB7YnJhbmNofScpCi0KLSAg
ICBkZWYgdXJsX2Zvcl9jb21taXQoc2VsZiwgY29tbWl0KToKLSAgICAgICAgcmV0dXJuIGYne3Nl
bGYudXJsfS8hc3ZuL2JjL3tjb21taXR9LycKLQotCi1jbGFzcyBXZWJLaXRSZXBvc2l0b3J5KFNW
TlJlcG9zaXRvcnkpOgotICAgIENIQU5HRUxPR1MgPSAoCi0gICAgICAgICdDaGFuZ2VMb2cnLAot
ICAgICAgICAnU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9nJywKLSAgICAgICAgJ1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DaGFuZ2VMb2cnLAotICAgICAgICAnU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
Q2hhbmdlTG9nJywKLSAgICAgICAgJ1NvdXJjZS9UaGlyZFBhcnR5L0NoYW5nZUxvZycsCi0gICAg
ICAgICdTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nJywKLSAgICAgICAgJ1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZycsCi0gICAgICAgICdTb3VyY2UvV2ViQ29yZS9QQUwvQ2hh
bmdlTG9nJywKLSAgICAgICAgJ1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9wby9DaGFuZ2VM
b2cnLAotICAgICAgICAnU291cmNlL1dlYkRyaXZlci9DaGFuZ2VMb2cnLAotICAgICAgICAnU291
cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZycsCi0gICAgICAgICdTb3VyY2UvV2ViS2l0L0No
YW5nZUxvZycsCi0gICAgICAgICdTb3VyY2UvV2ViS2l0TGVnYWN5L2NmL0NoYW5nZUxvZycsCi0g
ICAgICAgICdTb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZycsCi0gICAgICAgICdTb3VyY2Uv
V2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cnLAotICAgICAgICAnU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvQ2hhbmdlTG9nJywKLSAgICAgICAgJ1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5n
ZUxvZycsCi0gICAgICAgICdTb3VyY2UvV1RGL0NoYW5nZUxvZycsCi0gICAgICAgICdUb29scy9D
aGFuZ2VMb2cnLAotICAgICAgICAnRXhhbXBsZXMvQ2hhbmdlTG9nJywKLSAgICAgICAgJ0pTVGVz
dHMvQ2hhbmdlTG9nJywKLSAgICAgICAgJ0xheW91dFRlc3RzL0NoYW5nZUxvZycsCi0gICAgICAg
ICdMYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL0NoYW5nZUxvZycsCi0gICAgICAgICdMYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nJywKLSAgICAgICAgJ1BlcmZvcm1hbmNlVGVz
dHMvQ2hhbmdlTG9nJywKLSAgICAgICAgJ1BlcmZvcm1hbmNlVGVzdHMvU3VuU3BpZGVyL0NoYW5n
ZUxvZycsCi0gICAgICAgICdXZWJEcml2ZXJUZXN0cy9DaGFuZ2VMb2cnLAotICAgICAgICAnV2Vi
S2l0TGlicmFyaWVzL0NoYW5nZUxvZycsCi0gICAgICAgICdXZWJzaXRlcy9icm93c2VyYmVuY2gu
b3JnL0NoYW5nZUxvZycsCi0gICAgICAgICdXZWJzaXRlcy9idWdzLndlYmtpdC5vcmcvQ2hhbmdl
TG9nJywKLSAgICAgICAgJ1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFuZ2VMb2cnLAotICAg
ICAgICAnV2Vic2l0ZXMvcGxhbmV0LndlYmtpdC5vcmcvQ2hhbmdlTG9nJywKLSAgICAgICAgJ1dl
YnNpdGVzL3dlYmtpdC5vcmcvQ2hhbmdlTG9nJywKLSAgICAgICAgJ1dlYnNpdGVzL3dlYmtpdC5v
cmcvc3BlY3MvQ1NTVmlzdWFsRWZmZWN0cy9DaGFuZ2VMb2cnLAotICAgICkKLSAgICBDSEFOR0Vf
TE9HX1RIUkVBRFMgPSA2Ci0gICAgRklSU1RfTElORV9SRUdFWCA9IHJlLmNvbXBpbGUocicoP1A8
ZGF0ZT5cZCstXGQrLVxkKylccysoP1A8bmFtZT5cUy4rXFMpXHMrPCg/UDxlbWFpbD5cUyspPicp
Ci0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgKiprd2FyZ3MpOgotICAgICAgICBzdXBlcihXZWJL
aXRSZXBvc2l0b3J5LCBzZWxmKS5fX2luaXRfXygnaHR0cHM6Ly9zdm4ud2Via2l0Lm9yZy9yZXBv
c2l0b3J5L3dlYmtpdC8nLCAqKmt3YXJncykKLQotICAgIGRlZiBjb21taXRfZm9yX2lkKHNlbGYs
IGlkLCBicmFuY2g9U1ZOUmVwb3NpdG9yeS5ERUZBVUxUX0JSQU5DSCk6Ci0gICAgICAgIHdpdGgg
c2VsZi5zZXNzaW9uKCk6Ci0gICAgICAgICAgICByZXN1bHQgPSBzdXBlcihXZWJLaXRSZXBvc2l0
b3J5LCBzZWxmKS5jb21taXRfZm9yX2lkKGlkLCBicmFuY2g9YnJhbmNoKQotCi0gICAgICAgICAg
ICAjIEZpbmQgdGhlIGxhc3QgY29tbWl0IG9uIHRoZSBnaXZlbiBicmFuY2ggc28gd2UgY2FuIGRp
ZmYgdGhlIGNoYW5nZWxvZ3MKLSAgICAgICAgICAgIHByZXZpb3VzX2lkID0gc2VsZi5nZXQoYnJh
bmNoPWJyYW5jaCwgcmV2aXNpb249aW50KGlkKSAtIDEpLmdldCgKLSAgICAgICAgICAgICAgICAn
RDptdWx0aXN0YXR1cycsIHt9KS5nZXQoJ0Q6cmVzcG9uc2UnLCB7fSkuZ2V0KCdEOnByb3BzdGF0
JywgW3t9XSlbMF0uZ2V0KCdEOnByb3AnLCB7fSkuZ2V0KCdscDE6dmVyc2lvbi1uYW1lJywgTm9u
ZSkKLSAgICAgICAgICAgIGJyYW5jaF91cmwgPSBmIntzZWxmLnVybH17YnJhbmNoIGlmIGJyYW5j
aCA9PSBzZWxmLkRFRkFVTFRfQlJBTkNIIGVsc2UgJ2JyYW5jaGVzLycgKyBicmFuY2h9IgotCi0g
ICAgICAgICAgICBjaGFuZ2Vsb2dzID0ge30KLSAgICAgICAgICAgIHJlcXVlc3RfdGhyZWFkcyA9
IFtdCi0KLSAgICAgICAgICAgICMgQ29tcGFyZSBjaGFuZ2Vsb2cgZnJvbSBwcmV2aW91cyBjb21t
aXQgdG8gdGhlIGNoYW5nZWxvZyBmcm9tIHRoaXMgY29tbWl0Ci0gICAgICAgICAgICBkZWYgZGlm
Zl9jaGFuZ2Vsb2dzKGNoYW5nZWxvZ19saXN0KToKLSAgICAgICAgICAgICAgICBmb3IgY2hhbmdl
bG9nIGluIGNoYW5nZWxvZ19saXN0OgotICAgICAgICAgICAgICAgICAgICBjdXJyZW50X3VybCA9
IGYne2JyYW5jaF91cmx9L3tjaGFuZ2Vsb2d9Lz9wPXtpZH0nCi0gICAgICAgICAgICAgICAgICAg
IHByZXZpb3VzX3VybCA9IGYne2JyYW5jaF91cmx9L3tjaGFuZ2Vsb2d9Lz9wPXtwcmV2aW91c19p
ZH0nIGlmIHByZXZpb3VzX2lkIGVsc2UgTm9uZQotCi0gICAgICAgICAgICAgICAgICAgIGN1cnJl
bnRfcmVzcG9uc2UgPSBzZWxmLnJlcXVlc3QoY3VycmVudF91cmwpCi0gICAgICAgICAgICAgICAg
ICAgIGlmIGN1cnJlbnRfcmVzcG9uc2Uuc3RhdHVzX2NvZGUgIT0gMjAwOgotICAgICAgICAgICAg
ICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNfcmVzcG9u
c2UgPSBzZWxmLnJlcXVlc3QocHJldmlvdXNfdXJsKSBpZiBwcmV2aW91c191cmwgZWxzZSBOb25l
Ci0gICAgICAgICAgICAgICAgICAgIGlmIHByZXZpb3VzX3Jlc3BvbnNlIGFuZCBwcmV2aW91c19y
ZXNwb25zZS5zdGF0dXNfY29kZSAhPSAyMDA6Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb250
aW51ZQotCi0gICAgICAgICAgICAgICAgICAgIHByZXZpb3VzX3Jlc3BvbnNlX2xlbmd0aCA9IDAK
LSAgICAgICAgICAgICAgICAgICAgaWYgcHJldmlvdXNfcmVzcG9uc2U6Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBwcmV2aW91c19yZXNwb25zZV9sZW5ndGggPSBsZW4ocHJldmlvdXNfcmVzcG9u
c2UudGV4dCkKLSAgICAgICAgICAgICAgICAgICAgaWYgbGVuKGN1cnJlbnRfcmVzcG9uc2UudGV4
dCkgPT0gcHJldmlvdXNfcmVzcG9uc2VfbGVuZ3RoOgotICAgICAgICAgICAgICAgICAgICAgICAg
Y29udGludWUKLSAgICAgICAgICAgICAgICAgICAgaWYgbm90IHByZXZpb3VzX3Jlc3BvbnNlX2xl
bmd0aCBvciBsZW4oY3VycmVudF9yZXNwb25zZS50ZXh0KSA8IHByZXZpb3VzX3Jlc3BvbnNlX2xl
bmd0aDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWxvZ3NbY2hhbmdlbG9nXSA9IGN1
cnJlbnRfcmVzcG9uc2UudGV4dAotICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAg
ICAgICAgICAgICAgICAgY2hhbmdlbG9nc1tjaGFuZ2Vsb2ddID0gY3VycmVudF9yZXNwb25zZS50
ZXh0WzA6LWxlbihwcmV2aW91c19yZXNwb25zZS50ZXh0KV0KLQotICAgICAgICAgICAgIyBCZWNh
dXNlIHdlJ3JlIG1vc3RseSBibG9ja2VkIG9uIG5ldHdvcmsgSS9PLCB0aHJlYWRzIGNhbiBzcGVl
ZCB0aGlzIHVwIH40eAotICAgICAgICAgICAgc2hhcmRzID0gW1tdIGZvciBfIGluIHJhbmdlKHNl
bGYuQ0hBTkdFX0xPR19USFJFQURTKV0KLSAgICAgICAgICAgIGluZGV4ID0gMAotICAgICAgICAg
ICAgZm9yIGNoYW5nZWxvZyBpbiBzZWxmLkNIQU5HRUxPR1M6Ci0gICAgICAgICAgICAgICAgc2hh
cmRzW2luZGV4XS5hcHBlbmQoY2hhbmdlbG9nKQotICAgICAgICAgICAgICAgIGluZGV4ICs9IDEK
LSAgICAgICAgICAgICAgICBpZiBpbmRleCA+PSBsZW4oc2hhcmRzKToKLSAgICAgICAgICAgICAg
ICAgICAgaW5kZXggPSAwCi0gICAgICAgICAgICBmb3Igc2hhcmQgaW4gc2hhcmRzOgotICAgICAg
ICAgICAgICAgIHJlcXVlc3RfdGhyZWFkcy5hcHBlbmQodGhyZWFkaW5nLlRocmVhZCgKLSAgICAg
ICAgICAgICAgICAgICAgdGFyZ2V0PWRpZmZfY2hhbmdlbG9ncywKLSAgICAgICAgICAgICAgICAg
ICAga3dhcmdzPWRpY3QoY2hhbmdlbG9nX2xpc3Q9c2hhcmQpLAotICAgICAgICAgICAgICAgICkp
Ci0gICAgICAgICAgICAgICAgcmVxdWVzdF90aHJlYWRzWy0xXS5zdGFydCgpCi0gICAgICAgICAg
ICBmb3IgdGhyZWFkIGluIHJlcXVlc3RfdGhyZWFkczoKLSAgICAgICAgICAgICAgICB0aHJlYWQu
am9pbigpCi0KLSAgICAgICAgICAgIGNvbW1pdF9tZXNzYWdlID0gW10KLSAgICAgICAgICAgIGZv
ciBjaGFuZ2Vsb2cgaW4gc2VsZi5DSEFOR0VMT0dTOgotICAgICAgICAgICAgICAgIHBhcnRpYWxf
bWVzc2FnZSA9IGNoYW5nZWxvZ3MuZ2V0KGNoYW5nZWxvZywgTm9uZSkKLSAgICAgICAgICAgICAg
ICBpZiBub3QgcGFydGlhbF9tZXNzYWdlOgotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQot
ICAgICAgICAgICAgICAgIGxpbmVzX2luX21lc3NhZ2UgPSBwYXJ0aWFsX21lc3NhZ2Uuc3BsaXQo
J1xuJykKLQotICAgICAgICAgICAgICAgICMgVGhlIGZpcnN0IGxpbmUgb2YgdGhlIGNvbW1pdCBt
ZXNzYWdlIG1pZ2h0IGNvbnRhaW4gdGhlIHJlYWwgY29tbWl0dGVyLCBpbiB0aGUgY2FzZQotICAg
ICAgICAgICAgICAgICMgY29tbWl0IHF1ZXVlIGNvbW1pdHRlZCBhIGNoYW5nZSBvbiB0aGUgYmVo
YWxmIG9mIHNvbWVvbmUKLSAgICAgICAgICAgICAgICBzdGFydF9vZl9tZXNzYWdlX3NoYXJkID0g
MAotICAgICAgICAgICAgICAgIG1hdGNoID0gc2VsZi5GSVJTVF9MSU5FX1JFR0VYLm1hdGNoKGxp
bmVzX2luX21lc3NhZ2VbMF0pCi0gICAgICAgICAgICAgICAgaWYgbWF0Y2g6Ci0gICAgICAgICAg
ICAgICAgICAgIGlmIG1hdGNoLmdyb3VwKCdlbWFpbCcpICE9IHJlc3VsdC5jb21taXR0ZXI6Ci0g
ICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuY29tbWl0dGVyID0gbWF0Y2guZ3JvdXAoJ2Vt
YWlsJykKLSAgICAgICAgICAgICAgICAgICAgc3RhcnRfb2ZfbWVzc2FnZV9zaGFyZCArPSAxCi0g
ICAgICAgICAgICAgICAgICAgIHdoaWxlIG5vdCBsaW5lc19pbl9tZXNzYWdlW3N0YXJ0X29mX21l
c3NhZ2Vfc2hhcmRdOgotICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfb2ZfbWVzc2FnZV9z
aGFyZCArPSAxCi0KLSAgICAgICAgICAgICAgICAjIFdlYktpdCBjb21taXQgbWVzc2FnZXMgYXJl
IG9mdGVuIHNwbGl0IGFjcm9zcyBtdWx0aXBsZSBjaGFuZ2Vsb2dzIHdpdGggdGhlIGZpcnN0IGZl
dyBsaW5lcyBkdXBsaWNhdGVkLgotICAgICAgICAgICAgICAgIHN0YXJ0X29mX2Z1bGxfbWVzc2Fn
ZSA9IDAKLSAgICAgICAgICAgICAgICB3aGlsZSBzdGFydF9vZl9tZXNzYWdlX3NoYXJkIDwgbGVu
KGxpbmVzX2luX21lc3NhZ2UpIGFuZCBzdGFydF9vZl9mdWxsX21lc3NhZ2UgPCBsZW4oY29tbWl0
X21lc3NhZ2UpOgotICAgICAgICAgICAgICAgICAgICBpZiBsaW5lc19pbl9tZXNzYWdlW3N0YXJ0
X29mX21lc3NhZ2Vfc2hhcmRdLnN0YXJ0c3dpdGgoJyAnICogOCk6Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBsaW5lID0gbGluZXNfaW5fbWVzc2FnZVtzdGFydF9vZl9tZXNzYWdlX3NoYXJkXVs4
Ol0KLSAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGxp
bmUgPSBsaW5lc19pbl9tZXNzYWdlW3N0YXJ0X29mX21lc3NhZ2Vfc2hhcmRdCi0gICAgICAgICAg
ICAgICAgICAgIGlmIGxpbmUgIT0gY29tbWl0X21lc3NhZ2Vbc3RhcnRfb2ZfZnVsbF9tZXNzYWdl
XToKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgICAgIHN0
YXJ0X29mX21lc3NhZ2Vfc2hhcmQgKz0gMQotICAgICAgICAgICAgICAgICAgICBzdGFydF9vZl9m
dWxsX21lc3NhZ2UgKz0gMQotCi0gICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gbGluZXNfaW5f
bWVzc2FnZVtzdGFydF9vZl9tZXNzYWdlX3NoYXJkOl06Ci0gICAgICAgICAgICAgICAgICAgIGNv
bW1pdF9tZXNzYWdlLmFwcGVuZChsaW5lWzg6XSBpZiBsaW5lLnN0YXJ0c3dpdGgoJyAnICogOCkg
ZWxzZSBsaW5lKQotCi0gICAgICAgICAgICByZXN1bHQubWVzc2FnZSA9IHN0cignXG4nLmpvaW4o
Y29tbWl0X21lc3NhZ2UpKSBpZiBjb21taXRfbWVzc2FnZSBlbHNlIE5vbmUKLQotICAgICAgICAg
ICAgcmV0dXJuIHJlc3VsdAotCi0gICAgZGVmIHVybF9mb3JfY29tbWl0KHNlbGYsIGNvbW1pdCk6
Ci0gICAgICAgIHJldHVybiBmJ2h0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC97Y29t
bWl0fS97c2VsZi5rZXl9JwpJbmRleDogVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9k
ZWwvcmVwb3NpdG9yeV91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9yZXN1bHRzZGJw
eS9yZXN1bHRzZGJweS9tb2RlbC9yZXBvc2l0b3J5X3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNjU1
MzEpCisrKyBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9yZXBvc2l0b3J5X3Vu
aXR0ZXN0LnB5CShub25leGlzdGVudCkKQEAgLTEsMTAzICswLDAgQEAKLSMgQ29weXJpZ2h0IChD
KSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0j
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUgotIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0jIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSCi0jIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0jIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLWltcG9ydCBqc29uCi0KLWZyb20gZmFrZXJlZGlzIGlt
cG9ydCBGYWtlU3RyaWN0UmVkaXMKLWZyb20gcmVkaXMgaW1wb3J0IFN0cmljdFJlZGlzCi1mcm9t
IHJlc3VsdHNkYnB5LmNvbnRyb2xsZXIuY29tbWl0IGltcG9ydCBDb21taXQKLWZyb20gcmVzdWx0
c2RicHkubW9kZWwubW9ja19yZXBvc2l0b3J5IGltcG9ydCBNb2NrU3Rhc2hSZXBvc2l0b3J5LCBN
b2NrU1ZOUmVwb3NpdG9yeQotZnJvbSByZXN1bHRzZGJweS5tb2RlbC5yZXBvc2l0b3J5IGltcG9y
dCBTQ01FeGNlcHRpb24KLWZyb20gcmVzdWx0c2RicHkubW9kZWwud2FpdF9mb3JfZG9ja2VyX3Rl
c3RfY2FzZSBpbXBvcnQgV2FpdEZvckRvY2tlclRlc3RDYXNlCi0KLQotY2xhc3MgUmVwb3NpdG9y
eVRlc3QoV2FpdEZvckRvY2tlclRlc3RDYXNlKToKLQotICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENh
c2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMpCi0gICAgZGVm
IHRlc3Rfc3ZuKHNlbGYsIHJlZGlzPVN0cmljdFJlZGlzKToKLSAgICAgICAgc3ZuX3JlcG8gPSBN
b2NrU1ZOUmVwb3NpdG9yeS53ZWJraXQocmVkaXM9cmVkaXMoKSkKLSAgICAgICAgc2VsZi5hc3Nl
cnRUcnVlKCd3ZWJraXQnLCBzdm5fcmVwby5rZXkpCi0gICAgICAgIGNvbW1pdCA9IHN2bl9yZXBv
LmNvbW1pdF9mb3JfaWQoMjM2NTQ0LCBicmFuY2g9J3RydW5rJykKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChjb21taXQudXVpZCwgMTUzODA1MjQwODAwKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGNvbW1pdC5tZXNzYWdlLCAnQ2hhbmdlIDEgZGVzY3JpcHRpb24uXG4nKQotCi0gICAgQFdh
aXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJp
Y3RSZWRpcykKLSAgICBkZWYgdGVzdF9icmFuY2hfc3ZuKHNlbGYsIHJlZGlzPVN0cmljdFJlZGlz
KToKLSAgICAgICAgc3ZuX3JlcG8gPSBNb2NrU1ZOUmVwb3NpdG9yeS53ZWJraXQocmVkaXM9cmVk
aXMoKSkKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTQ01FeGNlcHRpb24pOgotICAg
ICAgICAgICAgc3ZuX3JlcG8uY29tbWl0X2Zvcl9pZCgyMzYzMzUsIGJyYW5jaD0ndHJ1bmsnKQot
ICAgICAgICBjb21taXQgPSBzdm5fcmVwby5jb21taXRfZm9yX2lkKDIzNjMzNSwgYnJhbmNoPSdz
YWZhcmktNjA2LWJyYW5jaCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbWl0LnV1aWQs
IDE1MzgwMjk0ODAwMCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21taXQubWVzc2FnZSwg
J0ludGVncmF0aW9uIDEuXG4nKQotCi0gICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lm
X25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcykKLSAgICBkZWYgdGVzdF9iYXNp
Y19zdm4oc2VsZiwgcmVkaXM9U3RyaWN0UmVkaXMpOgotICAgICAgICBzdm5fcmVwbyA9IE1vY2tT
Vk5SZXBvc2l0b3J5KHVybD0nc3ZuLndlYmtpdC5vcmcvcmVwb3NpdG9yeS93ZWJraXQvJywgbmFt
ZT0nd2Via2l0JywgcmVkaXM9cmVkaXMoKSkKLSAgICAgICAgc3ZuX3JlcG8uYWRkX2NvbW1pdChD
b21taXQoCi0gICAgICAgICAgICByZXBvc2l0b3J5X2lkPXN2bl9yZXBvLm5hbWUsIGJyYW5jaD0n
dHJ1bmsnLCBpZD0yMzY1NDQsCi0gICAgICAgICAgICB0aW1lc3RhbXA9MTUzODA1MjQwOCwgb3Jk
ZXI9MCwKLSAgICAgICAgICAgIGNvbW1pdHRlcj0ncGVyc29uMUB3ZWJraXQub3JnJywKLSAgICAg
ICAgICAgIG1lc3NhZ2U9J0NoYW5nZSAxIGRlc2NyaXB0aW9uLicsCi0gICAgICAgICkpCi0gICAg
ICAgIGNvbW1pdCA9IHN2bl9yZXBvLmNvbW1pdF9mb3JfaWQoMjM2NTQ0LCBicmFuY2g9J3RydW5r
JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21taXQudXVpZCwgMTUzODA1MjQwODAwKQot
ICAgICAgICBzZWxmLmFzc2VydElzTm9uZShjb21taXQubWVzc2FnZSwgTm9uZSkKLQotICAgIEBX
YWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3Ry
aWN0UmVkaXMpCi0gICAgZGVmIHRlc3Rfc3Rhc2goc2VsZiwgcmVkaXM9U3RyaWN0UmVkaXMpOgot
ICAgICAgICBnaXRfcmVwbyA9IE1vY2tTdGFzaFJlcG9zaXRvcnkuc2FmYXJpKHJlZGlzPXJlZGlz
KCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3NhZmFyaScsIGdpdF9yZXBvLmtleSkKLSAg
ICAgICAgY29tbWl0ID0gZ2l0X3JlcG8uY29tbWl0X2Zvcl9pZCgnYmI2YmRhNWY0NGRkMjRkJywg
YnJhbmNoPSdtYXN0ZXInKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1pdC51dWlkLCAx
NTM3ODEwMjgxMDApCi0KLSAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9j
a2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzKQotICAgIGRlZiB0ZXN0X2NvbGxpZGluZ190
aW1lc3RhbXBzX3N0YXNoKHNlbGYsIHJlZGlzPVN0cmljdFJlZGlzKToKLSAgICAgICAgZ2l0X3Jl
cG8gPSBNb2NrU3Rhc2hSZXBvc2l0b3J5LnNhZmFyaShyZWRpcz1yZWRpcygpKQotICAgICAgICBj
b21taXQxID0gZ2l0X3JlcG8uY29tbWl0X2Zvcl9pZCgnZTY0ODEwYTQwJywgYnJhbmNoPSdtYXN0
ZXInKQotICAgICAgICBjb21taXQyID0gZ2l0X3JlcG8uY29tbWl0X2Zvcl9pZCgnN2JlNDA4NDI1
JywgYnJhbmNoPSdtYXN0ZXInKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbWl0MS50
aW1lc3RhbXAsIGNvbW1pdDIudGltZXN0YW1wKQotICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFs
KGNvbW1pdDEudXVpZCwgY29tbWl0Mi51dWlkKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoY29t
bWl0MSA8IGNvbW1pdDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbWl0MS5vcmRlciwg
MCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21taXQyLm9yZGVyLCAxKQotCi0gICAgQFdh
aXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJp
Y3RSZWRpcykKLSAgICBkZWYgdGVzdF9icmFuY2hfc3Rhc2goc2VsZiwgcmVkaXM9U3RyaWN0UmVk
aXMpOgotICAgICAgICBnaXRfcmVwbyA9IE1vY2tTdGFzaFJlcG9zaXRvcnkuc2FmYXJpKHJlZGlz
PXJlZGlzKCkpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU0NNRXhjZXB0aW9uKToK
LSAgICAgICAgICAgIGdpdF9yZXBvLmNvbW1pdF9mb3JfaWQoJ2Q4NTIyMmQ5NDA3ZmQnLCBicmFu
Y2g9J21hc3RlcicpCi0gICAgICAgIGNvbW1pdCA9IGdpdF9yZXBvLmNvbW1pdF9mb3JfaWQoJ2Q4
NTIyMmQ5NDA3ZmQnLCBicmFuY2g9J3NhZmFyaS02MDYtYnJhbmNoJykKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChjb21taXQudXVpZCwgMTUzNzU2MzM4MzAwKQotCi0gICAgQFdhaXRGb3JEb2Nr
ZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcykK
LSAgICBkZWYgdGVzdF9zdGFzaF9hbHJlYWR5X2NhY2hlZChzZWxmLCByZWRpcz1TdHJpY3RSZWRp
cyk6Ci0gICAgICAgIHJlZGlzX2luc3RhbmNlID0gcmVkaXMoKQotICAgICAgICBnaXRfcmVwbyA9
IE1vY2tTdGFzaFJlcG9zaXRvcnkuc2FmYXJpKHJlZGlzPXJlZGlzX2luc3RhbmNlKQotICAgICAg
ICByZWRpc19pbnN0YW5jZS5zZXQoCi0gICAgICAgICAgICAncmVwb3NpdG9yeTonICsgZ2l0X3Jl
cG8udXJsICsgJy9jb21taXRzP3NpbmNlPTMzNjYxMGE0MGMzZmVjYjcyODg3MWUxMmNhMzE0ODJj
YTcxNWIzODMmdW50aWw9cmVmcyUyRmhlYWRzJTJGbWFzdGVyJmxpbWl0PTEnLAotICAgICAgICAg
ICAganNvbi5kdW1wcyhkaWN0KHZhbHVlcz1bXSwgc2l6ZT0wLCBpc0xhc3RQYWdlPVRydWUpKSwK
LSAgICAgICAgKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3NhZmFyaScsIGdpdF9yZXBv
LmtleSkKLSAgICAgICAgY29tbWl0ID0gZ2l0X3JlcG8uY29tbWl0X2Zvcl9pZCgnMzM2NjEwYTQn
LCBicmFuY2g9J21hc3RlcicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbWl0LnV1aWQs
IDE1Mzc1NjYzODYwMCkKSW5kZXg6IFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVs
L3N1aXRlX2NvbnRleHQucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0
c2RicHkvbW9kZWwvc3VpdGVfY29udGV4dC5weQkocmV2aXNpb24gMjY1NTMxKQorKysgVG9vbHMv
cmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvc3VpdGVfY29udGV4dC5weQkobm9uZXhpc3Rl
bnQpCkBAIC0xLDE2OCArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1l
dDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECi0jIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSMgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTAotIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotIyBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLAotIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotCi1pbXBvcnQgY2FsZW5kYXIKLWltcG9ydCBqc29uCi1pbXBvcnQgdGltZQotCi1mcm9tIGNh
c3NhbmRyYS5jcWxlbmdpbmUgaW1wb3J0IGNvbHVtbnMKLWZyb20gZGF0ZXRpbWUgaW1wb3J0IGRh
dGV0aW1lCi1mcm9tIHJlc3VsdHNkYnB5LmNvbnRyb2xsZXIuY29tbWl0IGltcG9ydCBDb21taXQK
LWZyb20gcmVzdWx0c2RicHkubW9kZWwuY29tbWl0X2NvbnRleHQgaW1wb3J0IENvbW1pdENvbnRl
eHQKLWZyb20gcmVzdWx0c2RicHkubW9kZWwuY29uZmlndXJhdGlvbl9jb250ZXh0IGltcG9ydCBD
bHVzdGVyZWRCeUNvbmZpZ3VyYXRpb24KLWZyb20gcmVzdWx0c2RicHkubW9kZWwudGVzdF9jb250
ZXh0IGltcG9ydCBFeHBlY3RhdGlvbnMKLWZyb20gcmVzdWx0c2RicHkubW9kZWwudXBsb2FkX2Nv
bnRleHQgaW1wb3J0IFVwbG9hZENhbGxiYWNrQ29udGV4dAotCi0KLWNsYXNzIFN1aXRlQ29udGV4
dChVcGxvYWRDYWxsYmFja0NvbnRleHQpOgotICAgIERFRkFVTFRfTElNSVQgPSAxMDAKLQotICAg
IGNsYXNzIFN1aXRlUmVzdWx0c0Jhc2UoQ2x1c3RlcmVkQnlDb25maWd1cmF0aW9uKToKLSAgICAg
ICAgc3VpdGUgPSBjb2x1bW5zLlRleHQocGFydGl0aW9uX2tleT1UcnVlLCByZXF1aXJlZD1UcnVl
KQotICAgICAgICBicmFuY2ggPSBjb2x1bW5zLlRleHQocGFydGl0aW9uX2tleT1UcnVlLCByZXF1
aXJlZD1UcnVlKQotICAgICAgICBkZXRhaWxzID0gY29sdW1ucy5UZXh0KHJlcXVpcmVkPUZhbHNl
KQotICAgICAgICBzdGF0cyA9IGNvbHVtbnMuVGV4dChyZXF1aXJlZD1GYWxzZSkKLQotICAgICAg
ICBkZWYgdW5wYWNrKHNlbGYpOgotICAgICAgICAgICAgcmV0dXJuIGRpY3QoCi0gICAgICAgICAg
ICAgICAgdXVpZD1zZWxmLnV1aWQsCi0gICAgICAgICAgICAgICAgc3RhcnRfdGltZT1jYWxlbmRh
ci50aW1lZ20oc2VsZi5zdGFydF90aW1lLnRpbWV0dXBsZSgpKSwKLSAgICAgICAgICAgICAgICBk
ZXRhaWxzPWpzb24ubG9hZHMoc2VsZi5kZXRhaWxzKSBpZiBzZWxmLmRldGFpbHMgZWxzZSB7fSwK
LSAgICAgICAgICAgICAgICBzdGF0cz1qc29uLmxvYWRzKHNlbGYuc3RhdHMpIGlmIHNlbGYuc3Rh
dHMgZWxzZSB7fSwKLSAgICAgICAgICAgICkKLQotICAgIGNsYXNzIFN1aXRlUmVzdWx0c0J5Q29t
bWl0KFN1aXRlUmVzdWx0c0Jhc2UpOgotICAgICAgICBfX3RhYmxlX25hbWVfXyA9ICdzdWl0ZV9y
ZXN1bHRzX2J5X2NvbW1pdCcKLSAgICAgICAgdXVpZCA9IGNvbHVtbnMuQmlnSW50KHByaW1hcnlf
a2V5PVRydWUsIHJlcXVpcmVkPVRydWUsIGNsdXN0ZXJpbmdfb3JkZXI9J0RFU0MnKQotICAgICAg
ICBzZGsgPSBjb2x1bW5zLlRleHQocHJpbWFyeV9rZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkKLSAg
ICAgICAgc3RhcnRfdGltZSA9IGNvbHVtbnMuRGF0ZVRpbWUocHJpbWFyeV9rZXk9VHJ1ZSwgcmVx
dWlyZWQ9VHJ1ZSkKLQotICAgIGNsYXNzIFN1aXRlUmVzdWx0c0J5U3RhcnRUaW1lKFN1aXRlUmVz
dWx0c0Jhc2UpOgotICAgICAgICBfX3RhYmxlX25hbWVfXyA9ICdzdWl0ZV9yZXN1bHRzX2J5X3N0
YXJ0X3RpbWUnCi0gICAgICAgIHN0YXJ0X3RpbWUgPSBjb2x1bW5zLkRhdGVUaW1lKHByaW1hcnlf
a2V5PVRydWUsIHJlcXVpcmVkPVRydWUsIGNsdXN0ZXJpbmdfb3JkZXI9J0RFU0MnKQotICAgICAg
ICBzZGsgPSBjb2x1bW5zLlRleHQocHJpbWFyeV9rZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkKLSAg
ICAgICAgdXVpZCA9IGNvbHVtbnMuQmlnSW50KHByaW1hcnlfa2V5PVRydWUsIHJlcXVpcmVkPVRy
dWUpCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKLSAgICAgICAg
c3VwZXIoU3VpdGVDb250ZXh0LCBzZWxmKS5fX2luaXRfXygnc3VpdGUtcmVzdWx0cycsICphcmdz
LCAqKmt3YXJncykKLQotICAgICAgICB3aXRoIHNlbGY6Ci0gICAgICAgICAgICBzZWxmLmNhc3Nh
bmRyYS5jcmVhdGVfdGFibGUoc2VsZi5TdWl0ZVJlc3VsdHNCeUNvbW1pdCkKLSAgICAgICAgICAg
IHNlbGYuY2Fzc2FuZHJhLmNyZWF0ZV90YWJsZShzZWxmLlN1aXRlUmVzdWx0c0J5U3RhcnRUaW1l
KQotCi0gICAgZGVmIHJlZ2lzdGVyKHNlbGYsIGNvbmZpZ3VyYXRpb24sIGNvbW1pdHMsIHN1aXRl
LCB0ZXN0X3Jlc3VsdHMsIHRpbWVzdGFtcD1Ob25lKToKLSAgICAgICAgdGltZXN0YW1wID0gdGlt
ZXN0YW1wIG9yIHRpbWUudGltZSgpCi0gICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHRpbWVzdGFt
cCwgZGF0ZXRpbWUpOgotICAgICAgICAgICAgdGltZXN0YW1wID0gZGF0ZXRpbWUudXRjZnJvbXRp
bWVzdGFtcChpbnQodGltZXN0YW1wKSkKLQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBpZiBu
b3QgaXNpbnN0YW5jZShzdWl0ZSwgc3RyKToKLSAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJy
b3IoZidFeHBlY3RlZCB0eXBlIHtzdHJ9LCBnb3Qge3R5cGUoc3VpdGUpfScpCi0KLSAgICAgICAg
ICAgIGlmIGlzaW5zdGFuY2UodGltZXN0YW1wLCBkYXRldGltZSk6Ci0gICAgICAgICAgICAgICAg
dGltZXN0YW1wID0gY2FsZW5kYXIudGltZWdtKHRpbWVzdGFtcC50aW1ldHVwbGUoKSkKLQotICAg
ICAgICAgICAgcnVuX3N0YXRzID0gdGVzdF9yZXN1bHRzLmdldCgncnVuX3N0YXRzJywge30pCi0g
ICAgICAgICAgICBmYWlsdXJlX3RyaWdnZXJfcG9pbnRzID0gZGljdCgKLSAgICAgICAgICAgICAg
ICBmYWlsZWQ9RXhwZWN0YXRpb25zLlNUUklOR19UT19TVEFURV9JRFtFeHBlY3RhdGlvbnMuRVJS
T1JdLAotICAgICAgICAgICAgICAgIHRpbWVkb3V0PUV4cGVjdGF0aW9ucy5TVFJJTkdfVE9fU1RB
VEVfSURbRXhwZWN0YXRpb25zLlRJTUVPVVRdLAotICAgICAgICAgICAgICAgIGNyYXNoZWQ9RXhw
ZWN0YXRpb25zLlNUUklOR19UT19TVEFURV9JRFtFeHBlY3RhdGlvbnMuQ1JBU0hdLAotICAgICAg
ICAgICAgKQotICAgICAgICAgICAgcnVuX3N0YXRzWyd0ZXN0c19ydW4nXSA9IDAKLSAgICAgICAg
ICAgIGZvciBrZXkgaW4gZmFpbHVyZV90cmlnZ2VyX3BvaW50cy5rZXlzKCk6Ci0gICAgICAgICAg
ICAgICAgcnVuX3N0YXRzW2YndGVzdHNfe2tleX0nXSA9IDAKLSAgICAgICAgICAgICAgICBydW5f
c3RhdHNbZid0ZXN0c191bmV4cGVjdGVkX3trZXl9J10gPSAwCi0KLSAgICAgICAgICAgIGRlZiBj
YWxsYmFjayh0ZXN0LCByZXN1bHQpOgotICAgICAgICAgICAgICAgIHJ1bl9zdGF0c1sndGVzdHNf
cnVuJ10gKz0gMQotICAgICAgICAgICAgICAgIGFjdHVhbF9yZXN1bHRzID0gRXhwZWN0YXRpb25z
LnN0cmluZ190b19zdGF0ZV9pZHMocmVzdWx0LmdldCgnYWN0dWFsJywgJycpKQotICAgICAgICAg
ICAgICAgIGV4cGVjdGVkX3Jlc3VsdHMgPSBzZXQoRXhwZWN0YXRpb25zLnN0cmluZ190b19zdGF0
ZV9pZHMocmVzdWx0LmdldCgnZXhwZWN0ZWQnLCAnJykpKQotCi0gICAgICAgICAgICAgICAgIyBG
QUlMIGlzIGEgc3BlY2lhbCBjYXNlLCB3ZSB3YW50IHRvIHRyZWF0IHRlc3RzIHdpdGggVEVYVCwg
QVVESU8gYW5kIElNQUdFIGRpZmZzIGFzIGZhaWx1cmVzCi0gICAgICAgICAgICAgICAgaWYgRXhw
ZWN0YXRpb25zLlNUUklOR19UT19TVEFURV9JRFtFeHBlY3RhdGlvbnMuRkFJTF0gaW4gZXhwZWN0
ZWRfcmVzdWx0czoKLSAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfcmVzdWx0cy5hZGQoRXhw
ZWN0YXRpb25zLlNUUklOR19UT19TVEFURV9JRFtFeHBlY3RhdGlvbnMuVEVYVF0pCi0gICAgICAg
ICAgICAgICAgICAgIGV4cGVjdGVkX3Jlc3VsdHMuYWRkKEV4cGVjdGF0aW9ucy5TVFJJTkdfVE9f
U1RBVEVfSURbRXhwZWN0YXRpb25zLkFVRElPXSkKLSAgICAgICAgICAgICAgICAgICAgZXhwZWN0
ZWRfcmVzdWx0cy5hZGQoRXhwZWN0YXRpb25zLlNUUklOR19UT19TVEFURV9JRFtFeHBlY3RhdGlv
bnMuSU1BR0VdKQotCi0gICAgICAgICAgICAgICAgd29yc3RfcmVzdWx0ID0gbWluKGFjdHVhbF9y
ZXN1bHRzKQotICAgICAgICAgICAgICAgIHVuZXhwZWN0ZWRfcmVzdWx0cyA9IHNldChhY3R1YWxf
cmVzdWx0cykgLSBleHBlY3RlZF9yZXN1bHRzCi0gICAgICAgICAgICAgICAgd29yc3RfdW5leHBl
Y3RlZF9yZXN1bHQgPSBtaW4odW5leHBlY3RlZF9yZXN1bHRzIG9yIFtFeHBlY3RhdGlvbnMuU1RS
SU5HX1RPX1NUQVRFX0lEW0V4cGVjdGF0aW9ucy5QQVNTXV0pCi0KLSAgICAgICAgICAgICAgICBm
b3Iga2V5LCBwb2ludCBpbiBmYWlsdXJlX3RyaWdnZXJfcG9pbnRzLml0ZW1zKCk6Ci0gICAgICAg
ICAgICAgICAgICAgIGlmIHdvcnN0X3Jlc3VsdCA8PSBwb2ludDoKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHJ1bl9zdGF0c1tmJ3Rlc3RzX3trZXl9J10gKz0gMQotICAgICAgICAgICAgICAgICAg
ICBpZiB3b3JzdF91bmV4cGVjdGVkX3Jlc3VsdCA8PSBwb2ludDoKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHJ1bl9zdGF0c1tmJ3Rlc3RzX3VuZXhwZWN0ZWRfe2tleX0nXSArPSAxCi0KLSAgICAg
ICAgICAgIEV4cGVjdGF0aW9ucy5pdGVyYXRlX3Rocm91Z2hfbmVzdGVkX3Jlc3VsdHModGVzdF9y
ZXN1bHRzLmdldCgncmVzdWx0cycpLCBjYWxsYmFjaykKLQotICAgICAgICAgICAgdXVpZCA9IHNl
bGYuY29tbWl0X2NvbnRleHQudXVpZF9mb3JfY29tbWl0cyhjb21taXRzKQotICAgICAgICAgICAg
dHRsID0gaW50KCh1dWlkIC8vIENvbW1pdC5USU1FU1RBTVBfVE9fVVVJRF9NVUxUSVBMSUVSKSAr
IHNlbGYudHRsX3NlY29uZHMgLSB0aW1lLnRpbWUoKSkgaWYgc2VsZi50dGxfc2Vjb25kcyBlbHNl
IE5vbmUKLQotICAgICAgICAgICAgd2l0aCBzZWxmLCBzZWxmLmNhc3NhbmRyYS5iYXRjaF9xdWVy
eV9jb250ZXh0KCk6Ci0gICAgICAgICAgICAgICAgZm9yIGJyYW5jaCBpbiBzZWxmLmNvbW1pdF9j
b250ZXh0LmJyYW5jaF9rZXlzX2Zvcl9jb21taXRzKGNvbW1pdHMpOgotICAgICAgICAgICAgICAg
ICAgICBmb3IgdGFibGUgaW4gW3NlbGYuU3VpdGVSZXN1bHRzQnlDb21taXQsIHNlbGYuU3VpdGVS
ZXN1bHRzQnlTdGFydFRpbWVdOgotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jb25maWd1
cmF0aW9uX2NvbnRleHQuaW5zZXJ0X3Jvd193aXRoX2NvbmZpZ3VyYXRpb24oCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdGFibGUuX190YWJsZV9uYW1lX18sIGNvbmZpZ3VyYXRpb249Y29u
ZmlndXJhdGlvbiwgc3VpdGU9c3VpdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJh
bmNoPWJyYW5jaCwgdXVpZD11dWlkLCB0dGw9dHRsLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNkaz1jb25maWd1cmF0aW9uLnNkayBvciAnPycsIHN0YXJ0X3RpbWU9dGltZXN0YW1wLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbHM9anNvbi5kdW1wcyh0ZXN0X3Jlc3Vs
dHMuZ2V0KCdkZXRhaWxzJywge30pKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0
cz1qc29uLmR1bXBzKHJ1bl9zdGF0cyksCi0gICAgICAgICAgICAgICAgICAgICAgICApCi0gICAg
ICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLnBhcnRp
YWxfc3RhdHVzKGUpCi0gICAgICAgIHJldHVybiBzZWxmLnBhcnRpYWxfc3RhdHVzKCkKLQotICAg
IGRlZiBfZmluZF9yZXN1bHRzKAotICAgICAgICAgICAgc2VsZiwgdGFibGUsIGNvbmZpZ3VyYXRp
b25zLCBzdWl0ZSwgcmVjZW50PVRydWUsCi0gICAgICAgICAgICBicmFuY2g9Tm9uZSwgYmVnaW49
Tm9uZSwgZW5kPU5vbmUsCi0gICAgICAgICAgICBiZWdpbl9xdWVyeV90aW1lPU5vbmUsIGVuZF9x
dWVyeV90aW1lPU5vbmUsCi0gICAgICAgICAgICBsaW1pdD1ERUZBVUxUX0xJTUlULAotICAgICk6
Ci0gICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHN1aXRlLCBzdHIpOgotICAgICAgICAgICAgcmFp
c2UgVHlwZUVycm9yKGYnRXhwZWN0ZWQgdHlwZSB7c3RyfSwgZ290IHt0eXBlKHN1aXRlKX0nKQot
Ci0gICAgICAgIGRlZiBnZXRfdGltZSh0aW1lKToKLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uo
dGltZSwgZGF0ZXRpbWUpOgotICAgICAgICAgICAgICAgIHJldHVybiB0aW1lCi0gICAgICAgICAg
ICBlbGlmIHRpbWU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGRhdGV0aW1lLnV0Y2Zyb210aW1l
c3RhbXAoaW50KHRpbWUpKQotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgICAgICB3aXRo
IHNlbGY6Ci0gICAgICAgICAgICByZXN1bHQgPSB7fQotICAgICAgICAgICAgZm9yIGNvbmZpZ3Vy
YXRpb24gaW4gY29uZmlndXJhdGlvbnM6Ci0gICAgICAgICAgICAgICAgcmVzdWx0LnVwZGF0ZSh7
Y29uZmlnOiBbdmFsdWUudW5wYWNrKCkgZm9yIHZhbHVlIGluIHZhbHVlc10gZm9yIGNvbmZpZywg
dmFsdWVzIGluIHNlbGYuY29uZmlndXJhdGlvbl9jb250ZXh0LnNlbGVjdF9mcm9tX3RhYmxlX3dp
dGhfY29uZmlndXJhdGlvbnMoCi0gICAgICAgICAgICAgICAgICAgIHRhYmxlLl9fdGFibGVfbmFt
ZV9fLCBjb25maWd1cmF0aW9ucz1bY29uZmlndXJhdGlvbl0sIHJlY2VudD1yZWNlbnQsCi0gICAg
ICAgICAgICAgICAgICAgIHN1aXRlPXN1aXRlLCBzZGs9Y29uZmlndXJhdGlvbi5zZGssIGJyYW5j
aD1icmFuY2ggb3Igc2VsZi5jb21taXRfY29udGV4dC5ERUZBVUxUX0JSQU5DSF9LRVksCi0gICAg
ICAgICAgICAgICAgICAgIHV1aWRfX2d0ZT1Db21taXRDb250ZXh0LmNvbnZlcnRfdG9fdXVpZChi
ZWdpbiksCi0gICAgICAgICAgICAgICAgICAgIHV1aWRfX2x0ZT1Db21taXRDb250ZXh0LmNvbnZl
cnRfdG9fdXVpZChlbmQsIENvbW1pdENvbnRleHQudGltZXN0YW1wX3RvX3V1aWQoKSksCi0gICAg
ICAgICAgICAgICAgICAgIHN0YXJ0X3RpbWVfX2d0ZT1nZXRfdGltZShiZWdpbl9xdWVyeV90aW1l
KSwgc3RhcnRfdGltZV9fbHRlPWdldF90aW1lKGVuZF9xdWVyeV90aW1lKSwKLSAgICAgICAgICAg
ICAgICAgICAgbGltaXQ9bGltaXQsCi0gICAgICAgICAgICAgICAgKS5pdGVtcygpfSkKLSAgICAg
ICAgICAgIHJldHVybiByZXN1bHQKLQotICAgIGRlZiBmaW5kX2J5X2NvbW1pdChzZWxmLCAqYXJn
cywgKiprd2FyZ3MpOgotICAgICAgICByZXR1cm4gc2VsZi5fZmluZF9yZXN1bHRzKHNlbGYuU3Vp
dGVSZXN1bHRzQnlDb21taXQsICphcmdzLCAqKmt3YXJncykKLQotICAgIGRlZiBmaW5kX2J5X3N0
YXJ0X3RpbWUoc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX2Zp
bmRfcmVzdWx0cyhzZWxmLlN1aXRlUmVzdWx0c0J5U3RhcnRUaW1lLCAqYXJncywgKiprd2FyZ3Mp
CkluZGV4OiBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9zdWl0ZV9jb250ZXh0
X3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5
L21vZGVsL3N1aXRlX2NvbnRleHRfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI2NTUzMSkKKysrIFRv
b2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL3N1aXRlX2NvbnRleHRfdW5pdHRlc3Qu
cHkJKG5vbmV4aXN0ZW50KQpAQCAtMSwxNzUgKzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0jIGFyZSBtZXQ6Ci0jIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jCi0jIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFO
RAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SCi0jIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSMgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIKLSMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSMgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLQotaW1wb3J0IHRpbWUKLQotZnJvbSBmYWtlcmVkaXMgaW1wb3J0IEZh
a2VTdHJpY3RSZWRpcwotZnJvbSByZWRpcyBpbXBvcnQgU3RyaWN0UmVkaXMKLWZyb20gcmVzdWx0
c2RicHkuY29udHJvbGxlci5jb25maWd1cmF0aW9uIGltcG9ydCBDb25maWd1cmF0aW9uCi1mcm9t
IHJlc3VsdHNkYnB5Lm1vZGVsLmNhc3NhbmRyYV9jb250ZXh0IGltcG9ydCBDYXNzYW5kcmFDb250
ZXh0Ci1mcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLm1vY2tfY2Fzc2FuZHJhX2NvbnRleHQgaW1wb3J0
IE1vY2tDYXNzYW5kcmFDb250ZXh0Ci1mcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLm1vY2tfbW9kZWxf
ZmFjdG9yeSBpbXBvcnQgTW9ja01vZGVsRmFjdG9yeQotZnJvbSByZXN1bHRzZGJweS5tb2RlbC5t
b2NrX3JlcG9zaXRvcnkgaW1wb3J0IE1vY2tTVk5SZXBvc2l0b3J5Ci1mcm9tIHJlc3VsdHNkYnB5
Lm1vZGVsLnRlc3RfY29udGV4dCBpbXBvcnQgRXhwZWN0YXRpb25zCi1mcm9tIHJlc3VsdHNkYnB5
Lm1vZGVsLndhaXRfZm9yX2RvY2tlcl90ZXN0X2Nhc2UgaW1wb3J0IFdhaXRGb3JEb2NrZXJUZXN0
Q2FzZQotCi0KLWNsYXNzIFN1aXRlQ29udGV4dFRlc3QoV2FpdEZvckRvY2tlclRlc3RDYXNlKToK
LSAgICBLRVlTUEFDRSA9ICdzdWl0ZV9jb250ZXh0X3Rlc3Rfa2V5c3BhY2UnCi0KLSAgICBkZWYg
aW5pdF9kYXRhYmFzZShzZWxmLCByZWRpcz1TdHJpY3RSZWRpcywgY2Fzc2FuZHJhPUNhc3NhbmRy
YUNvbnRleHQsIHRlc3RfcmVzdWx0cz1Ob25lKToKLSAgICAgICAgY2Fzc2FuZHJhLmRyb3Bfa2V5
c3BhY2Uoa2V5c3BhY2U9c2VsZi5LRVlTUEFDRSkKLSAgICAgICAgc2VsZi5tb2RlbCA9IE1vY2tN
b2RlbEZhY3RvcnkuY3JlYXRlKHJlZGlzPXJlZGlzKCksIGNhc3NhbmRyYT1jYXNzYW5kcmEoa2V5
c3BhY2U9c2VsZi5LRVlTUEFDRSwgY3JlYXRlX2tleXNwYWNlPVRydWUpKQotICAgICAgICBNb2Nr
TW9kZWxGYWN0b3J5LmFkZF9tb2NrX3Jlc3VsdHMoc2VsZi5tb2RlbCwgdGVzdF9yZXN1bHRzPXRl
c3RfcmVzdWx0cykKLSAgICAgICAgTW9ja01vZGVsRmFjdG9yeS5wcm9jZXNzX3Jlc3VsdHMoc2Vs
Zi5tb2RlbCkKLQotICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIo
bW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFD
b250ZXh0KQotICAgIGRlZiB0ZXN0X2ZpbmRfYWxsKHNlbGYsIHJlZGlzPVN0cmljdFJlZGlzLCBj
YXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCk6Ci0gICAgICAgIHNlbGYuaW5pdF9kYXRhYmFzZShy
ZWRpcz1yZWRpcywgY2Fzc2FuZHJhPWNhc3NhbmRyYSkKLQotICAgICAgICByZXN1bHRzID0gc2Vs
Zi5tb2RlbC5zdWl0ZV9jb250ZXh0LmZpbmRfYnlfY29tbWl0KAotICAgICAgICAgICAgY29uZmln
dXJhdGlvbnM9W0NvbmZpZ3VyYXRpb24ocGxhdGZvcm09J01hYycsIHN0eWxlPSdSZWxlYXNlJywg
Zmxhdm9yPSd3azEnKV0sCi0gICAgICAgICAgICBzdWl0ZT0nbGF5b3V0LXRlc3RzJywgcmVjZW50
PVRydWUsCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzdWx0cyks
IDEpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG5leHQoaXRlcihyZXN1bHRzLnZhbHVl
cygpKSkpLCA1KQotCi0gICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tl
cihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRy
YUNvbnRleHQpCi0gICAgZGVmIHRlc3RfZmluZF9ieV9jb21taXQoc2VsZiwgcmVkaXM9U3RyaWN0
UmVkaXMsIGNhc3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0KToKLSAgICAgICAgc2VsZi5pbml0X2Rh
dGFiYXNlKHJlZGlzPXJlZGlzLCBjYXNzYW5kcmE9Y2Fzc2FuZHJhKQotCi0gICAgICAgIHJlc3Vs
dHMgPSBzZWxmLm1vZGVsLnN1aXRlX2NvbnRleHQuZmluZF9ieV9jb21taXQoCi0gICAgICAgICAg
ICBjb25maWd1cmF0aW9ucz1bQ29uZmlndXJhdGlvbihwbGF0Zm9ybT0nTWFjJywgc3R5bGU9J1Jl
bGVhc2UnLCBmbGF2b3I9J3drMScpXSwKLSAgICAgICAgICAgIHN1aXRlPSdsYXlvdXQtdGVzdHMn
LCByZWNlbnQ9RmFsc2UsCi0gICAgICAgICAgICBiZWdpbj1Nb2NrU1ZOUmVwb3NpdG9yeS53ZWJr
aXQoKS5jb21taXRfZm9yX2lkKDIzNjU0MiksIGVuZD1Nb2NrU1ZOUmVwb3NpdG9yeS53ZWJraXQo
KS5jb21taXRfZm9yX2lkKDIzNjU0MyksCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChsZW4ocmVzdWx0cyksIDIpCi0gICAgICAgIGZvciByZXN1bHRzX2Zvcl9jb25maWcgaW4g
cmVzdWx0cy52YWx1ZXMoKToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlc3Vs
dHNfZm9yX2NvbmZpZyksIDIpCi0KLSAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZf
bm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2Nr
Q2Fzc2FuZHJhQ29udGV4dCkKLSAgICBkZWYgdGVzdF9maW5kX2J5X3RpbWUoc2VsZiwgcmVkaXM9
U3RyaWN0UmVkaXMsIGNhc3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0KToKLSAgICAgICAgc2VsZi5p
bml0X2RhdGFiYXNlKHJlZGlzPXJlZGlzLCBjYXNzYW5kcmE9Y2Fzc2FuZHJhKQotCi0gICAgICAg
IHJlc3VsdHMgPSBzZWxmLm1vZGVsLnN1aXRlX2NvbnRleHQuZmluZF9ieV9zdGFydF90aW1lKAot
ICAgICAgICAgICAgY29uZmlndXJhdGlvbnM9W0NvbmZpZ3VyYXRpb24ocGxhdGZvcm09J01hYycs
IHN0eWxlPSdSZWxlYXNlJywgZmxhdm9yPSd3azEnKV0sCi0gICAgICAgICAgICBzdWl0ZT0nbGF5
b3V0LXRlc3RzJywgcmVjZW50PUZhbHNlLAotICAgICAgICAgICAgYmVnaW5fcXVlcnlfdGltZT0o
dGltZS50aW1lKCkgLSA2MCAqIDYwKSwKLSAgICAgICAgKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwobGVuKHJlc3VsdHMpLCAxKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihuZXh0
KGl0ZXIocmVzdWx0cy52YWx1ZXMoKSkpKSwgNSkKLQotICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENh
c2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fz
c2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQotICAgIGRlZiB0ZXN0X2FsbF9zdWNjZXNzZnVs
KHNlbGYsIHJlZGlzPVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCk6Ci0g
ICAgICAgIHNlbGYuaW5pdF9kYXRhYmFzZShyZWRpcz1yZWRpcywgY2Fzc2FuZHJhPWNhc3NhbmRy
YSkKLQotICAgICAgICByZXN1bHRzID0gc2VsZi5tb2RlbC5zdWl0ZV9jb250ZXh0LmZpbmRfYnlf
c3RhcnRfdGltZSgKLSAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25zPVtDb25maWd1cmF0aW9uKHBs
YXRmb3JtPSdNYWMnLCBzdHlsZT0nUmVsZWFzZScsIGZsYXZvcj0nd2sxJyldLAotICAgICAgICAg
ICAgc3VpdGU9J2xheW91dC10ZXN0cycsCi0gICAgICAgICAgICBiZWdpbj1Nb2NrU1ZOUmVwb3Np
dG9yeS53ZWJraXQoKS5jb21taXRfZm9yX2lkKDIzNjU0MiksIGVuZD1Nb2NrU1ZOUmVwb3NpdG9y
eS53ZWJraXQoKS5jb21taXRfZm9yX2lkKDIzNjU0MiksCi0gICAgICAgICkKLQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgbmV4dChpdGVyKHJlc3VsdHMudmFsdWVzKCkp
KVswXVsnc3RhdHMnXSwKLSAgICAgICAgICAgIGRpY3QoCi0gICAgICAgICAgICAgICAgdGVzdHNf
cnVuPTQsCi0gICAgICAgICAgICAgICAgdGVzdHNfc2tpcHBlZD0wLAotICAgICAgICAgICAgICAg
IHRlc3RzX2ZhaWxlZD0wLAotICAgICAgICAgICAgICAgIHRlc3RzX3RpbWVkb3V0PTAsCi0gICAg
ICAgICAgICAgICAgdGVzdHNfY3Jhc2hlZD0wLAotICAgICAgICAgICAgICAgIHRlc3RzX3VuZXhw
ZWN0ZWRfZmFpbGVkPTAsCi0gICAgICAgICAgICAgICAgdGVzdHNfdW5leHBlY3RlZF90aW1lZG91
dD0wLAotICAgICAgICAgICAgICAgIHRlc3RzX3VuZXhwZWN0ZWRfY3Jhc2hlZD0wLAotICAgICAg
ICAgICAgKSwKLSAgICAgICAgKQotCi0gICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lm
X25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9j
a0Nhc3NhbmRyYUNvbnRleHQpCi0gICAgZGVmIHRlc3RfZmFpbHVyZV9leHBlY3RhdGlvbnMoc2Vs
ZiwgcmVkaXM9U3RyaWN0UmVkaXMsIGNhc3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0KToKLSAgICAg
ICAgdGVzdF9yZXN1bHRzID0gTW9ja01vZGVsRmFjdG9yeS5sYXlvdXRfdGVzdF9yZXN1bHRzKCkK
LSAgICAgICAgdGVzdF9yZXN1bHRzWydyZXN1bHRzJ11bJ2Zhc3QnXVsnZW5jb2RpbmcnXVsnY3Nz
LWNhY2hlZC1ib20uaHRtbCddID0gZGljdCgKLSAgICAgICAgICAgIGFjdHVhbD1FeHBlY3RhdGlv
bnMuRkFJTCwKLSAgICAgICAgICAgIHRpbWU9MS4yLAotICAgICAgICApCi0gICAgICAgIHRlc3Rf
cmVzdWx0c1sncmVzdWx0cyddWydmYXN0J11bJ2VuY29kaW5nJ11bJ2Nzcy1jaGFyc2V0LWRlZmF1
bHQueGh0bWwnXSA9IGRpY3QoCi0gICAgICAgICAgICBhY3R1YWw9RXhwZWN0YXRpb25zLlRJTUVP
VVQsCi0gICAgICAgICAgICBleHBlY3RlZD1FeHBlY3RhdGlvbnMuVElNRU9VVCwKLSAgICAgICAg
ICAgIHRpbWU9MS4yLAotICAgICAgICApCi0gICAgICAgIHNlbGYuaW5pdF9kYXRhYmFzZShyZWRp
cz1yZWRpcywgY2Fzc2FuZHJhPWNhc3NhbmRyYSwgdGVzdF9yZXN1bHRzPXRlc3RfcmVzdWx0cykK
LQotICAgICAgICByZXN1bHRzID0gc2VsZi5tb2RlbC5zdWl0ZV9jb250ZXh0LmZpbmRfYnlfc3Rh
cnRfdGltZSgKLSAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25zPVtDb25maWd1cmF0aW9uKHBsYXRm
b3JtPSdNYWMnLCBzdHlsZT0nUmVsZWFzZScsIGZsYXZvcj0nd2sxJyldLAotICAgICAgICAgICAg
c3VpdGU9J2xheW91dC10ZXN0cycsCi0gICAgICAgICAgICBiZWdpbj1Nb2NrU1ZOUmVwb3NpdG9y
eS53ZWJraXQoKS5jb21taXRfZm9yX2lkKDIzNjU0MiksCi0gICAgICAgICAgICBlbmQ9TW9ja1NW
TlJlcG9zaXRvcnkud2Via2l0KCkuY29tbWl0X2Zvcl9pZCgyMzY1NDIpLAotICAgICAgICApCi0K
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIG5leHQoaXRlcihyZXN1bHRz
LnZhbHVlcygpKSlbMF1bJ3N0YXRzJ10sCi0gICAgICAgICAgICBkaWN0KAotICAgICAgICAgICAg
ICAgIHRlc3RzX3J1bj00LAotICAgICAgICAgICAgICAgIHRlc3RzX3NraXBwZWQ9MCwKLSAgICAg
ICAgICAgICAgICB0ZXN0c19mYWlsZWQ9MiwKLSAgICAgICAgICAgICAgICB0ZXN0c190aW1lZG91
dD0xLAotICAgICAgICAgICAgICAgIHRlc3RzX2NyYXNoZWQ9MCwKLSAgICAgICAgICAgICAgICB0
ZXN0c191bmV4cGVjdGVkX2ZhaWxlZD0xLAotICAgICAgICAgICAgICAgIHRlc3RzX3VuZXhwZWN0
ZWRfdGltZWRvdXQ9MCwKLSAgICAgICAgICAgICAgICB0ZXN0c191bmV4cGVjdGVkX2NyYXNoZWQ9
MCwKLSAgICAgICAgICAgICksCi0gICAgICAgICkKLQotICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENh
c2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fz
c2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQotICAgIGRlZiB0ZXN0X2ltYWdlX2RpZmZfYXNf
ZmFpbHVyZV9leHBlY3RhdGlvbnMoc2VsZiwgcmVkaXM9U3RyaWN0UmVkaXMsIGNhc3NhbmRyYT1D
YXNzYW5kcmFDb250ZXh0KToKLSAgICAgICAgdGVzdF9yZXN1bHRzID0gTW9ja01vZGVsRmFjdG9y
eS5sYXlvdXRfdGVzdF9yZXN1bHRzKCkKLSAgICAgICAgdGVzdF9yZXN1bHRzWydyZXN1bHRzJ11b
J2Zhc3QnXVsnZW5jb2RpbmcnXVsnY3NzLWNhY2hlZC1ib20uaHRtbCddID0gZGljdCgKLSAgICAg
ICAgICAgIGFjdHVhbD1FeHBlY3RhdGlvbnMuVElNRU9VVCwKLSAgICAgICAgICAgIGV4cGVjdGVk
PUV4cGVjdGF0aW9ucy5GQUlMLAotICAgICAgICAgICAgdGltZT0xLjIsCi0gICAgICAgICkKLSAg
ICAgICAgdGVzdF9yZXN1bHRzWydyZXN1bHRzJ11bJ2Zhc3QnXVsnZW5jb2RpbmcnXVsnY3NzLWNo
YXJzZXQtZGVmYXVsdC54aHRtbCddID0gZGljdCgKLSAgICAgICAgICAgIGFjdHVhbD1FeHBlY3Rh
dGlvbnMuSU1BR0UsCi0gICAgICAgICAgICBleHBlY3RlZD1FeHBlY3RhdGlvbnMuRkFJTCwKLSAg
ICAgICAgICAgIHRpbWU9MS4yLAotICAgICAgICApCi0gICAgICAgIHNlbGYuaW5pdF9kYXRhYmFz
ZShyZWRpcz1yZWRpcywgY2Fzc2FuZHJhPWNhc3NhbmRyYSwgdGVzdF9yZXN1bHRzPXRlc3RfcmVz
dWx0cykKLQotICAgICAgICByZXN1bHRzID0gc2VsZi5tb2RlbC5zdWl0ZV9jb250ZXh0LmZpbmRf
Ynlfc3RhcnRfdGltZSgKLSAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25zPVtDb25maWd1cmF0aW9u
KHBsYXRmb3JtPSdNYWMnLCBzdHlsZT0nUmVsZWFzZScsIGZsYXZvcj0nd2sxJyldLAotICAgICAg
ICAgICAgc3VpdGU9J2xheW91dC10ZXN0cycsCi0gICAgICAgICAgICBiZWdpbj1Nb2NrU1ZOUmVw
b3NpdG9yeS53ZWJraXQoKS5jb21taXRfZm9yX2lkKDIzNjU0MiksCi0gICAgICAgICAgICBlbmQ9
TW9ja1NWTlJlcG9zaXRvcnkud2Via2l0KCkuY29tbWl0X2Zvcl9pZCgyMzY1NDIpLAotICAgICAg
ICApCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIG5leHQoaXRlcihy
ZXN1bHRzLnZhbHVlcygpKSlbMF1bJ3N0YXRzJ10sCi0gICAgICAgICAgICBkaWN0KAotICAgICAg
ICAgICAgICAgIHRlc3RzX3J1bj00LAotICAgICAgICAgICAgICAgIHRlc3RzX3NraXBwZWQ9MCwK
LSAgICAgICAgICAgICAgICB0ZXN0c19mYWlsZWQ9MiwKLSAgICAgICAgICAgICAgICB0ZXN0c190
aW1lZG91dD0xLAotICAgICAgICAgICAgICAgIHRlc3RzX2NyYXNoZWQ9MCwKLSAgICAgICAgICAg
ICAgICB0ZXN0c191bmV4cGVjdGVkX2ZhaWxlZD0xLAotICAgICAgICAgICAgICAgIHRlc3RzX3Vu
ZXhwZWN0ZWRfdGltZWRvdXQ9MSwKLSAgICAgICAgICAgICAgICB0ZXN0c191bmV4cGVjdGVkX2Ny
YXNoZWQ9MCwKLSAgICAgICAgICAgICksCi0gICAgICAgICkKSW5kZXg6IFRvb2xzL3Jlc3VsdHNk
YnB5L3Jlc3VsdHNkYnB5L21vZGVsL3Rlc3RfY29udGV4dC5weQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC90ZXN0X2NvbnRleHQucHkJKHJldmlzaW9u
IDI2NTUzMSkKKysrIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL3Rlc3RfY29u
dGV4dC5weQkobm9uZXhpc3RlbnQpCkBAIC0xLDIyNSArMCwwIEBACi0jIENvcHlyaWdodCAoQykg
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJ
UyIgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotIyBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUgotIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotIyBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotCi1pbXBvcnQgY2FsZW5kYXIKLWltcG9ydCBjb2xsZWN0aW9u
cwotaW1wb3J0IGpzb24KLWltcG9ydCB0aW1lCi0KLWZyb20gY2Fzc2FuZHJhLmNxbGVuZ2luZSBp
bXBvcnQgY29sdW1ucwotZnJvbSBjYXNzYW5kcmEuY3FsZW5naW5lLm1vZGVscyBpbXBvcnQgTW9k
ZWwKLWZyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1lCi1mcm9tIHJlc3VsdHNkYnB5LmNvbnRy
b2xsZXIuY29tbWl0IGltcG9ydCBDb21taXQKLWZyb20gcmVzdWx0c2RicHkubW9kZWwuY29tbWl0
X2NvbnRleHQgaW1wb3J0IENvbW1pdENvbnRleHQKLWZyb20gcmVzdWx0c2RicHkubW9kZWwuY29u
ZmlndXJhdGlvbl9jb250ZXh0IGltcG9ydCBDbHVzdGVyZWRCeUNvbmZpZ3VyYXRpb24KLWZyb20g
cmVzdWx0c2RicHkubW9kZWwudXBsb2FkX2NvbnRleHQgaW1wb3J0IFVwbG9hZENhbGxiYWNrQ29u
dGV4dAotCi0KLWNsYXNzIEV4cGVjdGF0aW9uczoKLSAgICAjIFRoZXNlIGFyZSBvcmRlcmVkIGJ5
IHByaW9yaXR5LCBtZWFuaW5nIHRoYXQgYSB0ZXN0IHdoaWNoIGJvdGggY3Jhc2hlcyBhbmQgaGFz
Ci0gICAgIyBhIHdhcm5pbmcgc2hvdWxkIGJlIGNvbnNpZGVyZWQgdG8gaGF2ZSBjcmFzaGVkLgot
ICAgIFNUQVRFX0lEX1RPX1NUUklORyA9IGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0KCkKLSAgICBT
VEFURV9JRF9UT19TVFJJTkdbMHgwMF0gPSAnQ1JBU0gnCi0gICAgU1RBVEVfSURfVE9fU1RSSU5H
WzB4MDhdID0gJ1RJTUVPVVQnCi0gICAgU1RBVEVfSURfVE9fU1RSSU5HWzB4MTBdID0gJ0lNQUdF
JwotICAgIFNUQVRFX0lEX1RPX1NUUklOR1sweDE4XSA9ICdBVURJTycKLSAgICBTVEFURV9JRF9U
T19TVFJJTkdbMHgyMF0gPSAnVEVYVCcKLSAgICBTVEFURV9JRF9UT19TVFJJTkdbMHgyOF0gPSAn
RkFJTCcKLSAgICBTVEFURV9JRF9UT19TVFJJTkdbMHgzMF0gPSAnRVJST1InCi0gICAgU1RBVEVf
SURfVE9fU1RSSU5HWzB4MzhdID0gJ1dBUk5JTkcnCi0gICAgU1RBVEVfSURfVE9fU1RSSU5HWzB4
NDBdID0gJ1BBU1MnCi0KLSAgICBTVFJJTkdfVE9fU1RBVEVfSUQgPSB7c3RyaW5nOiBpZCBmb3Ig
aWQsIHN0cmluZyBpbiBTVEFURV9JRF9UT19TVFJJTkcuaXRlbXMoKX0KLQotICAgIENSQVNILCBU
SU1FT1VULCBJTUFHRSwgQVVESU8sIFRFWFQsIEZBSUwsIEVSUk9SLCBXQVJOSU5HLCBQQVNTID0g
U1RBVEVfSURfVE9fU1RSSU5HLnZhbHVlcygpCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYg
c3RyaW5nX3RvX3N0YXRlX2lkcyhjbHMsIHN0cmluZyk6Ci0gICAgICAgIHJlc3VsdCA9IHNldChb
ZWxtIGZvciBlbG0gaW4gW2Nscy5TVFJJTkdfVE9fU1RBVEVfSUQuZ2V0KHN0cikgZm9yIHN0ciBp
biBzdHJpbmcuc3BsaXQoJyAnKV0gaWYgZWxtIGlzIG5vdCBOb25lXSkKLSAgICAgICAgcmV0dXJu
IHNvcnRlZChyZXN1bHQpIG9yIFtjbHMuU1RSSU5HX1RPX1NUQVRFX0lEW2Nscy5QQVNTXV0KLQot
ICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBzdGF0ZV9pZHNfdG9fc3RyaW5nKGNscywgc3RhdGVf
aWRzKToKLSAgICAgICAgaWYgaXNpbnN0YW5jZShzdGF0ZV9pZHMsIHN0cik6Ci0gICAgICAgICAg
ICByZXR1cm4gJyAnLmpvaW4oW2Nscy5TVEFURV9JRF9UT19TVFJJTkdbb3JkKHN0YXRlKV0gZm9y
IHN0YXRlIGluIHNvcnRlZChzdGF0ZV9pZHMpXSkKLSAgICAgICAgcmV0dXJuICcgJy5qb2luKFtj
bHMuU1RBVEVfSURfVE9fU1RSSU5HW2ludChzdGF0ZSldIGZvciBzdGF0ZSBpbiBzb3J0ZWQoc3Rh
dGVfaWRzKV0pCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgaXRlcmF0ZV90aHJvdWdoX25l
c3RlZF9yZXN1bHRzKGNscywgcmVzdWx0cywgY2FsbGJhY2s9bGFtYmRhIHRlc3QsIHJlc3VsdHM6
IE5vbmUpOgotICAgICAgICBkZWYgcmVjdXJzZShwYXJ0aWFsX3Rlc3QsIHJlc3VsdHMpOgotICAg
ICAgICAgICAgcG90ZW50aWFsX2Jhc2VfY2FzZSA9IFRydWUKLSAgICAgICAgICAgIGZvciBrZXks
IHZhbHVlIGluIHJlc3VsdHMuaXRlbXMoKToKLSAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNl
KHZhbHVlLCBkaWN0KToKLSAgICAgICAgICAgICAgICAgICAgcG90ZW50aWFsX2Jhc2VfY2FzZSA9
IEZhbHNlCi0gICAgICAgICAgICAgICAgICAgIHJlY3Vyc2UocGFydGlhbF90ZXN0ICsgJy8nICsg
a2V5LCB2YWx1ZSkKLSAgICAgICAgICAgICAgICBlbGlmIG5vdCBwb3RlbnRpYWxfYmFzZV9jYXNl
OgotICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdJbmNvcnJlY3RseSBmb3Jt
YXR0ZWQgbmVzdGVkIHJlc3VsdHMgZGljdGlvbmFyeScpCi0KLSAgICAgICAgICAgIGlmIHBvdGVu
dGlhbF9iYXNlX2Nhc2U6Ci0gICAgICAgICAgICAgICAgIyBJZiB3ZSBkb24ndCBoYXZlIGEgZGlj
dGlvbmFyeSBvZiBkaWN0aW9uYXJpZXMsIHRoYXQgbWVhbnMgdGhpcyBpcyBhIGxlYWYgbm9kZQot
ICAgICAgICAgICAgICAgIGNhbGxiYWNrKHBhcnRpYWxfdGVzdCwgcmVzdWx0cykKLQotICAgICAg
ICBmb3Iga2V5LCB2YWx1ZSBpbiByZXN1bHRzLml0ZW1zKCk6Ci0gICAgICAgICAgICByZWN1cnNl
KGtleSwgdmFsdWUpCi0KLQotY2xhc3MgVGVzdENvbnRleHQoVXBsb2FkQ2FsbGJhY2tDb250ZXh0
KToKLSAgICBERUZBVUxUX0xJTUlUID0gMTAwCi0KLSAgICBjbGFzcyBUZXN0UmVzdWx0c0Jhc2Uo
Q2x1c3RlcmVkQnlDb25maWd1cmF0aW9uKToKLSAgICAgICAgc3VpdGUgPSBjb2x1bW5zLlRleHQo
cGFydGl0aW9uX2tleT1UcnVlLCByZXF1aXJlZD1UcnVlKQotICAgICAgICBicmFuY2ggPSBjb2x1
bW5zLlRleHQocGFydGl0aW9uX2tleT1UcnVlLCByZXF1aXJlZD1UcnVlKQotICAgICAgICB0ZXN0
ID0gY29sdW1ucy5UZXh0KHBhcnRpdGlvbl9rZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkKLSAgICAg
ICAgZXhwZWN0ZWQgPSBjb2x1bW5zLkJsb2IocmVxdWlyZWQ9VHJ1ZSkKLSAgICAgICAgYWN0dWFs
ID0gY29sdW1ucy5CbG9iKHJlcXVpcmVkPVRydWUpCi0gICAgICAgIGRldGFpbHMgPSBjb2x1bW5z
LlRleHQocmVxdWlyZWQ9RmFsc2UpCi0KLSAgICAgICAgZGVmIHVucGFjayhzZWxmKToKLSAgICAg
ICAgICAgIHJlc3VsdCA9IGRpY3QoCi0gICAgICAgICAgICAgICAgdXVpZD1zZWxmLnV1aWQsCi0g
ICAgICAgICAgICAgICAgc3RhcnRfdGltZT1jYWxlbmRhci50aW1lZ20oc2VsZi5zdGFydF90aW1l
LnRpbWV0dXBsZSgpKSwKLSAgICAgICAgICAgICAgICBleHBlY3RlZD1FeHBlY3RhdGlvbnMuc3Rh
dGVfaWRzX3RvX3N0cmluZyhzZWxmLmV4cGVjdGVkKSwKLSAgICAgICAgICAgICAgICBhY3R1YWw9
RXhwZWN0YXRpb25zLnN0YXRlX2lkc190b19zdHJpbmcoc2VsZi5hY3R1YWwpLAotICAgICAgICAg
ICAgKQotICAgICAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gKGpzb24ubG9hZHMoc2VsZi5kZXRh
aWxzKSBpZiBzZWxmLmRldGFpbHMgZWxzZSB7fSkuaXRlbXMoKToKLSAgICAgICAgICAgICAgICBp
ZiBrZXkgaW4gcmVzdWx0OgotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAg
ICAgICAgIHJlc3VsdFtrZXldID0gdmFsdWUKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQKLQot
ICAgIGNsYXNzIFRlc3RSZXN1bHRzQnlDb21taXQoVGVzdFJlc3VsdHNCYXNlKToKLSAgICAgICAg
X190YWJsZV9uYW1lX18gPSAndGVzdF9yZXN1bHRzX2J5X2NvbW1pdCcKLSAgICAgICAgdXVpZCA9
IGNvbHVtbnMuQmlnSW50KHByaW1hcnlfa2V5PVRydWUsIHJlcXVpcmVkPVRydWUsIGNsdXN0ZXJp
bmdfb3JkZXI9J0RFU0MnKQotICAgICAgICBzZGsgPSBjb2x1bW5zLlRleHQocHJpbWFyeV9rZXk9
VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkKLSAgICAgICAgc3RhcnRfdGltZSA9IGNvbHVtbnMuRGF0ZVRp
bWUocHJpbWFyeV9rZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkKLQotICAgIGNsYXNzIFRlc3RSZXN1
bHRzQnlTdGFydFRpbWUoVGVzdFJlc3VsdHNCYXNlKToKLSAgICAgICAgX190YWJsZV9uYW1lX18g
PSAndGVzdF9yZXN1bHRzX2J5X3N0YXJ0X3RpbWUnCi0gICAgICAgIHN0YXJ0X3RpbWUgPSBjb2x1
bW5zLkRhdGVUaW1lKHByaW1hcnlfa2V5PVRydWUsIHJlcXVpcmVkPVRydWUsIGNsdXN0ZXJpbmdf
b3JkZXI9J0RFU0MnKQotICAgICAgICBzZGsgPSBjb2x1bW5zLlRleHQocHJpbWFyeV9rZXk9VHJ1
ZSwgcmVxdWlyZWQ9VHJ1ZSkKLSAgICAgICAgdXVpZCA9IGNvbHVtbnMuQmlnSW50KHByaW1hcnlf
a2V5PVRydWUsIHJlcXVpcmVkPVRydWUpCi0KLSAgICBjbGFzcyBUZXN0TmFtZUJ5U3VpdGUoTW9k
ZWwpOgotICAgICAgICBfX3RhYmxlX25hbWVfXyA9ICd0ZXN0X25hbWVzX2J5X3N1aXRlJwotICAg
ICAgICBzdWl0ZSA9IGNvbHVtbnMuVGV4dChwYXJ0aXRpb25fa2V5PVRydWUsIHJlcXVpcmVkPVRy
dWUpCi0gICAgICAgIHRlc3QgPSBjb2x1bW5zLlRleHQocHJpbWFyeV9rZXk9VHJ1ZSwgcmVxdWly
ZWQ9VHJ1ZSkKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgotICAg
ICAgICBzdXBlcihUZXN0Q29udGV4dCwgc2VsZikuX19pbml0X18oJ3Rlc3QtcmVzdWx0cycsICph
cmdzLCAqKmt3YXJncykKLQotICAgICAgICB3aXRoIHNlbGY6Ci0gICAgICAgICAgICBzZWxmLmNh
c3NhbmRyYS5jcmVhdGVfdGFibGUoc2VsZi5UZXN0UmVzdWx0c0J5Q29tbWl0KQotICAgICAgICAg
ICAgc2VsZi5jYXNzYW5kcmEuY3JlYXRlX3RhYmxlKHNlbGYuVGVzdFJlc3VsdHNCeVN0YXJ0VGlt
ZSkKLSAgICAgICAgICAgIHNlbGYuY2Fzc2FuZHJhLmNyZWF0ZV90YWJsZShzZWxmLlRlc3ROYW1l
QnlTdWl0ZSkKLQotICAgIGRlZiBuYW1lcyhzZWxmLCBzdWl0ZSwgdGVzdD1Ob25lLCBsaW1pdD1E
RUZBVUxUX0xJTUlUKToKLSAgICAgICAgd2l0aCBzZWxmOgotICAgICAgICAgICAgaWYgdGVzdDoK
LSAgICAgICAgICAgICAgICAjIEZJWE1FOiBTQVNJIGluZGVjaWVzIGFyZSB0aGUgY2Fubm9pY2Fs
IHdheSB0byBzb2x2ZSB0aGlzIHByb2JsZW0sIGJ1dCByZXF1aXJlIENhc3NhbmRyYSAzLjQgd2hp
Y2gKLSAgICAgICAgICAgICAgICAjIGhhc24ndCBiZWVuIGRlcGxveWVkIHRvIG91ciBkYXRhY2Vu
dGVycyB5ZXQuIFRoaXMgd29ya3MgZm9yIGNvbW1pdHMsIGJ1dCBpcyBsZXNzIHRyYW5zcGFyZW50
LgotICAgICAgICAgICAgICAgIHJldHVybiBbbW9kZWwudGVzdCBmb3IgbW9kZWwgaW4gc2VsZi5j
YXNzYW5kcmEuc2VsZWN0X2Zyb21fdGFibGUoCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuVGVz
dE5hbWVCeVN1aXRlLl9fdGFibGVfbmFtZV9fLCBsaW1pdD1saW1pdCwgc3VpdGU9c3VpdGUsCi0g
ICAgICAgICAgICAgICAgICAgIHRlc3RfX2d0ZT10ZXN0LCB0ZXN0X19sdGU9KHRlc3QgKyAnficp
LAotICAgICAgICAgICAgICAgICldCi0KLSAgICAgICAgICAgIHJldHVybiBbbW9kZWwudGVzdCBm
b3IgbW9kZWwgaW4gc2VsZi5jYXNzYW5kcmEuc2VsZWN0X2Zyb21fdGFibGUoCi0gICAgICAgICAg
ICAgICAgc2VsZi5UZXN0TmFtZUJ5U3VpdGUuX190YWJsZV9uYW1lX18sIGxpbWl0PWxpbWl0LCBz
dWl0ZT1zdWl0ZSwKLSAgICAgICAgICAgICldCi0KLSAgICBkZWYgcmVnaXN0ZXIoc2VsZiwgY29u
ZmlndXJhdGlvbiwgY29tbWl0cywgc3VpdGUsIHRlc3RfcmVzdWx0cywgdGltZXN0YW1wPU5vbmUp
OgotICAgICAgICB0aW1lc3RhbXAgPSB0aW1lc3RhbXAgb3IgdGltZS50aW1lKCkKLSAgICAgICAg
aWYgbm90IGlzaW5zdGFuY2UodGltZXN0YW1wLCBkYXRldGltZSk6Ci0gICAgICAgICAgICB0aW1l
c3RhbXAgPSBkYXRldGltZS51dGNmcm9tdGltZXN0YW1wKGludCh0aW1lc3RhbXApKQotCi0gICAg
ICAgIHRyeToKLSAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHN1aXRlLCBzdHIpOgotICAg
ICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcihmJ0V4cGVjdGVkIHR5cGUge3N0cn0sIGdvdCB7
dHlwZShzdWl0ZSl9JykKLQotICAgICAgICAgICAgaWYgaXNpbnN0YW5jZSh0aW1lc3RhbXAsIGRh
dGV0aW1lKToKLSAgICAgICAgICAgICAgICB0aW1lc3RhbXAgPSBjYWxlbmRhci50aW1lZ20odGlt
ZXN0YW1wLnRpbWV0dXBsZSgpKQotCi0gICAgICAgICAgICB3aXRoIHNlbGY6Ci0gICAgICAgICAg
ICAgICAgdXVpZCA9IHNlbGYuY29tbWl0X2NvbnRleHQudXVpZF9mb3JfY29tbWl0cyhjb21taXRz
KQotICAgICAgICAgICAgICAgIHR0bCA9IGludCgodXVpZCAvLyBDb21taXQuVElNRVNUQU1QX1RP
X1VVSURfTVVMVElQTElFUikgKyBzZWxmLnR0bF9zZWNvbmRzIC0gdGltZS50aW1lKCkpIGlmIHNl
bGYudHRsX3NlY29uZHMgZWxzZSBOb25lCi0KLSAgICAgICAgICAgICAgICBkZWYgY2FsbGJhY2so
dGVzdCwgcmVzdWx0LCBicmFuY2gpOgotICAgICAgICAgICAgICAgICAgICBzZWxmLmNhc3NhbmRy
YS5pbnNlcnRfcm93KHNlbGYuVGVzdE5hbWVCeVN1aXRlLl9fdGFibGVfbmFtZV9fLCBzdWl0ZT1z
dWl0ZSwgdGVzdD10ZXN0LCB0dGw9dHRsKQotCi0gICAgICAgICAgICAgICAgICAgIGFyZ3NfdG9f
d3JpdGUgPSBkaWN0KAotICAgICAgICAgICAgICAgICAgICAgICAgYWN0dWFsPWJ5dGVhcnJheShF
eHBlY3RhdGlvbnMuc3RyaW5nX3RvX3N0YXRlX2lkcyhyZXN1bHQuZ2V0KCdhY3R1YWwnLCAnJykp
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkPWJ5dGVhcnJheShFeHBlY3RhdGlv
bnMuc3RyaW5nX3RvX3N0YXRlX2lkcyhyZXN1bHQuZ2V0KCdleHBlY3RlZCcsICcnKSkpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgZGV0YWlscz1qc29uLmR1bXBzKHtrZXk6IHZhbHVlIGZvciBr
ZXksIHZhbHVlIGluIHJlc3VsdC5pdGVtcygpIGlmIGtleSBub3QgaW4gWydhY3R1YWwnLCAnZXhw
ZWN0ZWQnXX0pLAotICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICAgICAgICAgIGZv
ciB0YWJsZSBpbiBbc2VsZi5UZXN0UmVzdWx0c0J5Q29tbWl0LCBzZWxmLlRlc3RSZXN1bHRzQnlT
dGFydFRpbWVdOgotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jb25maWd1cmF0aW9uX2Nv
bnRleHQuaW5zZXJ0X3Jvd193aXRoX2NvbmZpZ3VyYXRpb24oCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdGFibGUuX190YWJsZV9uYW1lX18sIGNvbmZpZ3VyYXRpb249Y29uZmlndXJhdGlv
biwgc3VpdGU9c3VpdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJhbmNoPWJyYW5j
aCwgdXVpZD11dWlkLCB0dGw9dHRsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Q9
dGVzdCwgc2RrPWNvbmZpZ3VyYXRpb24uc2RrIG9yICc/Jywgc3RhcnRfdGltZT10aW1lc3RhbXAs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKiphcmdzX3RvX3dyaXRlKQotCi0gICAgICAg
ICAgICAgICAgd2l0aCBzZWxmLmNhc3NhbmRyYS5iYXRjaF9xdWVyeV9jb250ZXh0KCk6Ci0gICAg
ICAgICAgICAgICAgICAgIGZvciBicmFuY2ggaW4gc2VsZi5jb21taXRfY29udGV4dC5icmFuY2hf
a2V5c19mb3JfY29tbWl0cyhjb21taXRzKToKLSAgICAgICAgICAgICAgICAgICAgICAgIEV4cGVj
dGF0aW9ucy5pdGVyYXRlX3Rocm91Z2hfbmVzdGVkX3Jlc3VsdHMoCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdGVzdF9yZXN1bHRzLmdldCgncmVzdWx0cycpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGxhbWJkYSB0ZXN0LCByZXN1bHQ6IGNhbGxiYWNrKHRlc3QsIHJlc3VsdCwg
YnJhbmNoPWJyYW5jaCksCi0gICAgICAgICAgICAgICAgICAgICAgICApCi0KLSAgICAgICAgZXhj
ZXB0IEV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYucGFydGlhbF9zdGF0
dXMoZSkKLSAgICAgICAgcmV0dXJuIHNlbGYucGFydGlhbF9zdGF0dXMoKQotCi0gICAgZGVmIF9m
aW5kX3Jlc3VsdHMoCi0gICAgICAgICAgICBzZWxmLCB0YWJsZSwgY29uZmlndXJhdGlvbnMsIHN1
aXRlLCB0ZXN0LCByZWNlbnQ9VHJ1ZSwKLSAgICAgICAgICAgIGJyYW5jaD1Ob25lLCBiZWdpbj1O
b25lLCBlbmQ9Tm9uZSwKLSAgICAgICAgICAgIGJlZ2luX3F1ZXJ5X3RpbWU9Tm9uZSwgZW5kX3F1
ZXJ5X3RpbWU9Tm9uZSwKLSAgICAgICAgICAgIGxpbWl0PURFRkFVTFRfTElNSVQsCi0gICAgKToK
LSAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uoc3VpdGUsIHN0cik6Ci0gICAgICAgICAgICByYWlz
ZSBUeXBlRXJyb3IoZidFeHBlY3RlZCB0eXBlIHtzdHJ9LCBnb3Qge3R5cGUoc3VpdGUpfScpCi0g
ICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHRlc3QsIHN0cik6Ci0gICAgICAgICAgICByYWlzZSBU
eXBlRXJyb3IoZidFeHBlY3RlZCB0eXBlIHtzdHJ9LCBnb3Qge3R5cGUoc3VpdGUpfScpCi0KLSAg
ICAgICAgZGVmIGdldF90aW1lKHRpbWUpOgotICAgICAgICAgICAgaWYgaXNpbnN0YW5jZSh0aW1l
LCBkYXRldGltZSk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRpbWUKLSAgICAgICAgICAgIGVs
aWYgdGltZToKLSAgICAgICAgICAgICAgICByZXR1cm4gZGF0ZXRpbWUudXRjZnJvbXRpbWVzdGFt
cChpbnQodGltZSkpCi0gICAgICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgICAgIHdpdGggc2Vs
ZjoKLSAgICAgICAgICAgIHJlc3VsdCA9IHt9Ci0gICAgICAgICAgICBmb3IgY29uZmlndXJhdGlv
biBpbiBjb25maWd1cmF0aW9uczoKLSAgICAgICAgICAgICAgICByZXN1bHQudXBkYXRlKHtjb25m
aWc6IFt2YWx1ZS51bnBhY2soKSBmb3IgdmFsdWUgaW4gdmFsdWVzXSBmb3IgY29uZmlnLCB2YWx1
ZXMgaW4gc2VsZi5jb25maWd1cmF0aW9uX2NvbnRleHQuc2VsZWN0X2Zyb21fdGFibGVfd2l0aF9j
b25maWd1cmF0aW9ucygKLSAgICAgICAgICAgICAgICAgICAgdGFibGUuX190YWJsZV9uYW1lX18s
IGNvbmZpZ3VyYXRpb25zPVtjb25maWd1cmF0aW9uXSwgcmVjZW50PXJlY2VudCwKLSAgICAgICAg
ICAgICAgICAgICAgc3VpdGU9c3VpdGUsIHRlc3Q9dGVzdCwgc2RrPWNvbmZpZ3VyYXRpb24uc2Rr
LCBicmFuY2g9YnJhbmNoIG9yIHNlbGYuY29tbWl0X2NvbnRleHQuREVGQVVMVF9CUkFOQ0hfS0VZ
LAotICAgICAgICAgICAgICAgICAgICB1dWlkX19ndGU9Q29tbWl0Q29udGV4dC5jb252ZXJ0X3Rv
X3V1aWQoYmVnaW4pLAotICAgICAgICAgICAgICAgICAgICB1dWlkX19sdGU9Q29tbWl0Q29udGV4
dC5jb252ZXJ0X3RvX3V1aWQoZW5kLCBDb21taXRDb250ZXh0LnRpbWVzdGFtcF90b191dWlkKCkp
LAotICAgICAgICAgICAgICAgICAgICBzdGFydF90aW1lX19ndGU9Z2V0X3RpbWUoYmVnaW5fcXVl
cnlfdGltZSksIHN0YXJ0X3RpbWVfX2x0ZT1nZXRfdGltZShlbmRfcXVlcnlfdGltZSksCi0gICAg
ICAgICAgICAgICAgICAgIGxpbWl0PWxpbWl0LAotICAgICAgICAgICAgICAgICkuaXRlbXMoKX0p
Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0Ci0KLSAgICBkZWYgZmluZF9ieV9jb21taXQoc2Vs
ZiwgKmFyZ3MsICoqa3dhcmdzKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbmRfcmVzdWx0cyhz
ZWxmLlRlc3RSZXN1bHRzQnlDb21taXQsICphcmdzLCAqKmt3YXJncykKLQotICAgIGRlZiBmaW5k
X2J5X3N0YXJ0X3RpbWUoc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKLSAgICAgICAgcmV0dXJuIHNl
bGYuX2ZpbmRfcmVzdWx0cyhzZWxmLlRlc3RSZXN1bHRzQnlTdGFydFRpbWUsICphcmdzLCAqKmt3
YXJncykKSW5kZXg6IFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL3Rlc3RfY29u
dGV4dF91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRz
ZGJweS9tb2RlbC90ZXN0X2NvbnRleHRfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI2NTUzMSkKKysr
IFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL3Rlc3RfY29udGV4dF91bml0dGVz
dC5weQkobm9uZXhpc3RlbnQpCkBAIC0xLDEwNCArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIg
QU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotIyBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUgotIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotIyBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotCi1pbXBvcnQgdGltZQotCi1mcm9tIGZha2VyZWRpcyBpbXBvcnQg
RmFrZVN0cmljdFJlZGlzCi1mcm9tIHJlZGlzIGltcG9ydCBTdHJpY3RSZWRpcwotZnJvbSByZXN1
bHRzZGJweS5jb250cm9sbGVyLmNvbmZpZ3VyYXRpb24gaW1wb3J0IENvbmZpZ3VyYXRpb24KLWZy
b20gcmVzdWx0c2RicHkubW9kZWwuY2Fzc2FuZHJhX2NvbnRleHQgaW1wb3J0IENhc3NhbmRyYUNv
bnRleHQKLWZyb20gcmVzdWx0c2RicHkubW9kZWwubW9ja19jYXNzYW5kcmFfY29udGV4dCBpbXBv
cnQgTW9ja0Nhc3NhbmRyYUNvbnRleHQKLWZyb20gcmVzdWx0c2RicHkubW9kZWwubW9ja19tb2Rl
bF9mYWN0b3J5IGltcG9ydCBNb2NrTW9kZWxGYWN0b3J5Ci1mcm9tIHJlc3VsdHNkYnB5Lm1vZGVs
Lm1vY2tfcmVwb3NpdG9yeSBpbXBvcnQgTW9ja1NWTlJlcG9zaXRvcnkKLWZyb20gcmVzdWx0c2Ri
cHkubW9kZWwudGVzdF9jb250ZXh0IGltcG9ydCBFeHBlY3RhdGlvbnMKLWZyb20gcmVzdWx0c2Ri
cHkubW9kZWwud2FpdF9mb3JfZG9ja2VyX3Rlc3RfY2FzZSBpbXBvcnQgV2FpdEZvckRvY2tlclRl
c3RDYXNlCi0KLQotY2xhc3MgVGVzdENvbnRleHRUZXN0KFdhaXRGb3JEb2NrZXJUZXN0Q2FzZSk6
Ci0gICAgS0VZU1BBQ0UgPSAndGVzdF9jb250ZXh0X3Rlc3Rfa2V5c3BhY2UnCi0KLSAgICBkZWYg
aW5pdF9kYXRhYmFzZShzZWxmLCByZWRpcz1TdHJpY3RSZWRpcywgY2Fzc2FuZHJhPUNhc3NhbmRy
YUNvbnRleHQpOgotICAgICAgICBjYXNzYW5kcmEuZHJvcF9rZXlzcGFjZShrZXlzcGFjZT1zZWxm
LktFWVNQQUNFKQotICAgICAgICBzZWxmLm1vZGVsID0gTW9ja01vZGVsRmFjdG9yeS5jcmVhdGUo
cmVkaXM9cmVkaXMoKSwgY2Fzc2FuZHJhPWNhc3NhbmRyYShrZXlzcGFjZT1zZWxmLktFWVNQQUNF
LCBjcmVhdGVfa2V5c3BhY2U9VHJ1ZSkpCi0gICAgICAgIE1vY2tNb2RlbEZhY3RvcnkuYWRkX21v
Y2tfcmVzdWx0cyhzZWxmLm1vZGVsKQotICAgICAgICBNb2NrTW9kZWxGYWN0b3J5LnByb2Nlc3Nf
cmVzdWx0cyhzZWxmLm1vZGVsKQotCi0gICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lm
X25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9j
a0Nhc3NhbmRyYUNvbnRleHQpCi0gICAgZGVmIHRlc3RfbGlzdF9hbGwoc2VsZiwgcmVkaXM9U3Ry
aWN0UmVkaXMsIGNhc3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0KToKLSAgICAgICAgc2VsZi5pbml0
X2RhdGFiYXNlKHJlZGlzPXJlZGlzLCBjYXNzYW5kcmE9Y2Fzc2FuZHJhKQotICAgICAgICByZXN1
bHRzID0gc2VsZi5tb2RlbC50ZXN0X2NvbnRleHQubmFtZXMoc3VpdGU9J2xheW91dC10ZXN0cycp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0cywgWwotICAgICAgICAgICAgJ2Zhc3Qv
ZW5jb2RpbmcvY3NzLWNhY2hlZC1ib20uaHRtbCcsCi0gICAgICAgICAgICAnZmFzdC9lbmNvZGlu
Zy9jc3MtY2hhcnNldC1kZWZhdWx0LnhodG1sJywKLSAgICAgICAgICAgICdmYXN0L2VuY29kaW5n
L2Nzcy1jaGFyc2V0Lmh0bWwnLAotICAgICAgICAgICAgJ2Zhc3QvZW5jb2RpbmcvY3NzLWxpbmst
Y2hhcnNldC5odG1sJywKLSAgICAgICAgXSkKLQotICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2Uu
bW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2Fu
ZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQotICAgIGRlZiB0ZXN0X2xpc3RfcGFydGlhbChzZWxm
LCByZWRpcz1TdHJpY3RSZWRpcywgY2Fzc2FuZHJhPUNhc3NhbmRyYUNvbnRleHQpOgotICAgICAg
ICBzZWxmLmluaXRfZGF0YWJhc2UocmVkaXM9cmVkaXMsIGNhc3NhbmRyYT1jYXNzYW5kcmEpCi0g
ICAgICAgIHJlc3VsdHMgPSBzZWxmLm1vZGVsLnRlc3RfY29udGV4dC5uYW1lcyhzdWl0ZT0nbGF5
b3V0LXRlc3RzJywgdGVzdD0nZmFzdC9lbmNvZGluZy9jc3MtY2hhcnNldCcpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwocmVzdWx0cywgWwotICAgICAgICAgICAgJ2Zhc3QvZW5jb2RpbmcvY3Nz
LWNoYXJzZXQtZGVmYXVsdC54aHRtbCcsCi0gICAgICAgICAgICAnZmFzdC9lbmNvZGluZy9jc3Mt
Y2hhcnNldC5odG1sJywKLSAgICAgICAgXSkKLQotICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2Uu
bW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2Fu
ZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQotICAgIGRlZiB0ZXN0X2ZpbmRfYWxsKHNlbGYsIHJl
ZGlzPVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCk6Ci0gICAgICAgIHNl
bGYuaW5pdF9kYXRhYmFzZShyZWRpcz1yZWRpcywgY2Fzc2FuZHJhPWNhc3NhbmRyYSkKLSAgICAg
ICAgcmVzdWx0cyA9IHNlbGYubW9kZWwudGVzdF9jb250ZXh0LmZpbmRfYnlfY29tbWl0KAotICAg
ICAgICAgICAgY29uZmlndXJhdGlvbnM9W0NvbmZpZ3VyYXRpb24ocGxhdGZvcm09J01hYycsIHN0
eWxlPSdSZWxlYXNlJywgZmxhdm9yPSd3azEnKV0sCi0gICAgICAgICAgICBzdWl0ZT0nbGF5b3V0
LXRlc3RzJywgdGVzdD0nZmFzdC9lbmNvZGluZy9jc3MtbGluay1jaGFyc2V0Lmh0bWwnLCByZWNl
bnQ9VHJ1ZSwKLSAgICAgICAgKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlc3Vs
dHMpLCAxKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihuZXh0KGl0ZXIocmVzdWx0cy52
YWx1ZXMoKSkpKSwgNSkKLSAgICAgICAgZm9yIHJlc3VsdCBpbiBuZXh0KGl0ZXIocmVzdWx0cy52
YWx1ZXMoKSkpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHRbJ2FjdHVhbCdd
LCBFeHBlY3RhdGlvbnMuUEFTUykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0
WydleHBlY3RlZCddLCBFeHBlY3RhdGlvbnMuUEFTUykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwocmVzdWx0Wyd0aW1lJ10sIDEuMikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
cmVzdWx0Wydtb2RpZmllcnMnXSwgJycpCi0KLSAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1v
Y2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRy
YT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKLSAgICBkZWYgdGVzdF9maW5kX2J5X2NvbW1pdChzZWxm
LCByZWRpcz1TdHJpY3RSZWRpcywgY2Fzc2FuZHJhPUNhc3NhbmRyYUNvbnRleHQpOgotICAgICAg
ICBzZWxmLmluaXRfZGF0YWJhc2UocmVkaXM9cmVkaXMsIGNhc3NhbmRyYT1jYXNzYW5kcmEpCi0g
ICAgICAgIHJlc3VsdHMgPSBzZWxmLm1vZGVsLnRlc3RfY29udGV4dC5maW5kX2J5X2NvbW1pdCgK
LSAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25zPVtDb25maWd1cmF0aW9uKHBsYXRmb3JtPSdNYWMn
LCBzdHlsZT0nUmVsZWFzZScsIGZsYXZvcj0nd2sxJyldLAotICAgICAgICAgICAgc3VpdGU9J2xh
eW91dC10ZXN0cycsIHRlc3Q9J2Zhc3QvZW5jb2RpbmcvY3NzLWNhY2hlZC1ib20uaHRtbCcsIHJl
Y2VudD1GYWxzZSwKLSAgICAgICAgICAgIGJlZ2luPU1vY2tTVk5SZXBvc2l0b3J5LndlYmtpdCgp
LmNvbW1pdF9mb3JfaWQoMjM2NTQyKSwKLSAgICAgICAgICAgIGVuZD1Nb2NrU1ZOUmVwb3NpdG9y
eS53ZWJraXQoKS5jb21taXRfZm9yX2lkKDIzNjU0MyksCi0gICAgICAgICkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChsZW4ocmVzdWx0cyksIDIpCi0gICAgICAgIGZvciByZXN1bHRzX2Zvcl9j
b25maWcgaW4gcmVzdWx0cy52YWx1ZXMoKToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
bGVuKHJlc3VsdHNfZm9yX2NvbmZpZyksIDIpCi0KLSAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNl
Lm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3Nh
bmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKLSAgICBkZWYgdGVzdF9maW5kX2J5X3RpbWUoc2Vs
ZiwgcmVkaXM9U3RyaWN0UmVkaXMsIGNhc3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0KToKLSAgICAg
ICAgc2VsZi5pbml0X2RhdGFiYXNlKHJlZGlzPXJlZGlzLCBjYXNzYW5kcmE9Y2Fzc2FuZHJhKQot
ICAgICAgICByZXN1bHRzID0gc2VsZi5tb2RlbC50ZXN0X2NvbnRleHQuZmluZF9ieV9zdGFydF90
aW1lKAotICAgICAgICAgICAgY29uZmlndXJhdGlvbnM9W0NvbmZpZ3VyYXRpb24ocGxhdGZvcm09
J01hYycsIHN0eWxlPSdSZWxlYXNlJywgZmxhdm9yPSd3azEnKV0sCi0gICAgICAgICAgICBzdWl0
ZT0nbGF5b3V0LXRlc3RzJywgdGVzdD0nZmFzdC9lbmNvZGluZy9jc3MtY2hhcnNldC5odG1sJywg
cmVjZW50PUZhbHNlLAotICAgICAgICAgICAgYmVnaW5fcXVlcnlfdGltZT0odGltZS50aW1lKCkg
LSA2MCAqIDYwKSwKLSAgICAgICAgKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJl
c3VsdHMpLCAxKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihuZXh0KGl0ZXIocmVzdWx0
cy52YWx1ZXMoKSkpKSwgNSkKSW5kZXg6IFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21v
ZGVsL3VwbG9hZF9jb250ZXh0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL3Jlc3VsdHNkYnB5L3Jl
c3VsdHNkYnB5L21vZGVsL3VwbG9hZF9jb250ZXh0LnB5CShyZXZpc2lvbiAyNjU1MzEpCisrKyBU
b29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC91cGxvYWRfY29udGV4dC5weQkobm9u
ZXhpc3RlbnQpCkBAIC0xLDMzMyArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMg
YXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECi0jIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IK
LSMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotIyBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UgotIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotCi1pbXBvcnQgY2FsZW5kYXIKLWltcG9ydCBpbwotaW1wb3J0IGpzb24KLWltcG9y
dCB0aW1lCi1pbXBvcnQgemlwZmlsZQotCi1mcm9tIGNhc3NhbmRyYS5jcWxlbmdpbmUgaW1wb3J0
IGNvbHVtbnMKLWZyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlZmF1bHRkaWN0Ci1mcm9tIGRhdGV0
aW1lIGltcG9ydCBkYXRldGltZQotZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVyLmNvbW1pdCBp
bXBvcnQgQ29tbWl0Ci1mcm9tIHJlc3VsdHNkYnB5LmNvbnRyb2xsZXIuY29uZmlndXJhdGlvbiBp
bXBvcnQgQ29uZmlndXJhdGlvbgotZnJvbSByZXN1bHRzZGJweS5tb2RlbC5jb21taXRfY29udGV4
dCBpbXBvcnQgQ29tbWl0Q29udGV4dAotZnJvbSByZXN1bHRzZGJweS5tb2RlbC5jb25maWd1cmF0
aW9uX2NvbnRleHQgaW1wb3J0IENsdXN0ZXJlZEJ5Q29uZmlndXJhdGlvbgotCi0KLWNsYXNzIFVw
bG9hZENvbnRleHQob2JqZWN0KToKLSAgICBRVUVVRV9OQU1FID0gJ3VwbG9hZF9xdWV1ZScKLSAg
ICBQUk9DRVNTX1RJTUVPVVQgPSA3ICogMjQgKiA2MCAqIDYwCi0gICAgTUFYX0FUVEVNUFRTID0g
NQotICAgIFJFVFJZX1RJTUUgPSAxMCAqIDYwICAjIEFmdGVyIDEwIG1pbnV0ZXMsIHJlLXRyeSBh
IHRhc2sgZXZlbiBpZiBpdCdzIGluLWZsaWdodAotICAgIE1BWF9UQVNLU19JTl9TQ0FOID0gNDAK
LQotICAgIGNsYXNzIFN1aXRlc0J5Q29uZmlndXJhdGlvbihDbHVzdGVyZWRCeUNvbmZpZ3VyYXRp
b24pOgotICAgICAgICBfX3RhYmxlX25hbWVfXyA9ICdzdWl0ZXNfYnlfY29uZmlndXJhdGlvbl9h
bmRfYnJhbmNoJwotICAgICAgICBzdWl0ZSA9IGNvbHVtbnMuVGV4dChwcmltYXJ5X2tleT1UcnVl
LCByZXF1aXJlZD1UcnVlKQotICAgICAgICBicmFuY2ggPSBjb2x1bW5zLlRleHQocHJpbWFyeV9r
ZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkKLQotICAgICMgRklYTUU6IFJlbW92ZSB0aGUgVXBsb2Fk
c0J5Q29uZmlndXJhdGlvbkxlZ2FjeSBvbmNlIHJlc3VsdHMgaW4gaXQgYXJlIHN1ZmZpY2VudGx5
IG9sZCBpbiBTcHJpbmcgMjAyMQotICAgIGNsYXNzIFVwbG9hZHNCeUNvbmZpZ3VyYXRpb25MZWdh
Y3koQ2x1c3RlcmVkQnlDb25maWd1cmF0aW9uKToKLSAgICAgICAgX190YWJsZV9uYW1lX18gPSAn
dXBsb2Fkc19ieV9jb25maWd1cmF0aW9uXzAxJwotICAgICAgICBzdWl0ZSA9IGNvbHVtbnMuVGV4
dChwYXJ0aXRpb25fa2V5PVRydWUsIHJlcXVpcmVkPVRydWUpCi0gICAgICAgIGJyYW5jaCA9IGNv
bHVtbnMuVGV4dChwYXJ0aXRpb25fa2V5PVRydWUsIHJlcXVpcmVkPVRydWUpCi0gICAgICAgIHV1
aWQgPSBjb2x1bW5zLkJpZ0ludChwcmltYXJ5X2tleT1UcnVlLCByZXF1aXJlZD1UcnVlLCBjbHVz
dGVyaW5nX29yZGVyPSdERVNDJykKLSAgICAgICAgc2RrID0gY29sdW1ucy5UZXh0KHByaW1hcnlf
a2V5PVRydWUsIHJlcXVpcmVkPVRydWUpCi0gICAgICAgIGNvbW1pdHMgPSBjb2x1bW5zLkJsb2Io
cmVxdWlyZWQ9VHJ1ZSkKLSAgICAgICAgdGVzdF9yZXN1bHRzID0gY29sdW1ucy5CbG9iKHJlcXVp
cmVkPVRydWUpCi0gICAgICAgIHRpbWVfdXBsb2FkZWQgPSBjb2x1bW5zLkRhdGVUaW1lKHJlcXVp
cmVkPVRydWUpCi0gICAgICAgIHVwbG9hZF92ZXJzaW9uID0gY29sdW1ucy5JbnRlZ2VyKHJlcXVp
cmVkPVRydWUpCi0KLSAgICAgICAgZGVmIHVucGFjayhzZWxmKToKLSAgICAgICAgICAgIHJldHVy
biBkaWN0KAotICAgICAgICAgICAgICAgIGNvbW1pdHM9W0NvbW1pdC5mcm9tX2pzb24oZWxlbWVu
dCkgZm9yIGVsZW1lbnQgaW4ganNvbi5sb2FkcyhVcGxvYWRDb250ZXh0LmZyb21femlwKGJ5dGVh
cnJheShzZWxmLmNvbW1pdHMpKSldLAotICAgICAgICAgICAgICAgIHNkaz1Ob25lIGlmIHNlbGYu
c2RrID09ICc/JyBlbHNlIHNlbGYuc2RrLAotICAgICAgICAgICAgICAgIHRlc3RfcmVzdWx0cz1q
c29uLmxvYWRzKFVwbG9hZENvbnRleHQuZnJvbV96aXAoYnl0ZWFycmF5KHNlbGYudGVzdF9yZXN1
bHRzKSkpLAotICAgICAgICAgICAgICAgIHRpbWVzdGFtcD1jYWxlbmRhci50aW1lZ20oc2VsZi50
aW1lX3VwbG9hZGVkLnRpbWV0dXBsZSgpKSwKLSAgICAgICAgICAgICAgICB2ZXJzaW9uPXNlbGYu
dXBsb2FkX3ZlcnNpb24sCi0gICAgICAgICAgICApCi0KLSAgICBjbGFzcyBVcGxvYWRzQnlDb25m
aWd1cmF0aW9uKENsdXN0ZXJlZEJ5Q29uZmlndXJhdGlvbik6Ci0gICAgICAgIF9fdGFibGVfbmFt
ZV9fID0gJ3VwbG9hZHNfYnlfY29uZmlndXJhdGlvbl8wMicKLSAgICAgICAgc3VpdGUgPSBjb2x1
bW5zLlRleHQocGFydGl0aW9uX2tleT1UcnVlLCByZXF1aXJlZD1UcnVlKQotICAgICAgICBicmFu
Y2ggPSBjb2x1bW5zLlRleHQocGFydGl0aW9uX2tleT1UcnVlLCByZXF1aXJlZD1UcnVlKQotICAg
ICAgICB1dWlkID0gY29sdW1ucy5CaWdJbnQocHJpbWFyeV9rZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1
ZSwgY2x1c3RlcmluZ19vcmRlcj0nREVTQycpCi0gICAgICAgIHRpbWVfdXBsb2FkZWQgPSBjb2x1
bW5zLkRhdGVUaW1lKHByaW1hcnlfa2V5PVRydWUsIHJlcXVpcmVkPVRydWUpCi0gICAgICAgIHNk
ayA9IGNvbHVtbnMuVGV4dChwcmltYXJ5X2tleT1UcnVlLCByZXF1aXJlZD1UcnVlKQotICAgICAg
ICBjb21taXRzID0gY29sdW1ucy5CbG9iKHJlcXVpcmVkPVRydWUpCi0gICAgICAgIHRlc3RfcmVz
dWx0cyA9IGNvbHVtbnMuQmxvYihyZXF1aXJlZD1UcnVlKQotICAgICAgICB1cGxvYWRfdmVyc2lv
biA9IGNvbHVtbnMuSW50ZWdlcihyZXF1aXJlZD1UcnVlKQotCi0gICAgICAgIGRlZiB1bnBhY2so
c2VsZik6Ci0gICAgICAgICAgICByZXR1cm4gZGljdCgKLSAgICAgICAgICAgICAgICBjb21taXRz
PVtDb21taXQuZnJvbV9qc29uKGVsZW1lbnQpIGZvciBlbGVtZW50IGluIGpzb24ubG9hZHMoVXBs
b2FkQ29udGV4dC5mcm9tX3ppcChieXRlYXJyYXkoc2VsZi5jb21taXRzKSkpXSwKLSAgICAgICAg
ICAgICAgICBzZGs9Tm9uZSBpZiBzZWxmLnNkayA9PSAnPycgZWxzZSBzZWxmLnNkaywKLSAgICAg
ICAgICAgICAgICB0ZXN0X3Jlc3VsdHM9anNvbi5sb2FkcyhVcGxvYWRDb250ZXh0LmZyb21femlw
KGJ5dGVhcnJheShzZWxmLnRlc3RfcmVzdWx0cykpKSwKLSAgICAgICAgICAgICAgICB0aW1lc3Rh
bXA9Y2FsZW5kYXIudGltZWdtKHNlbGYudGltZV91cGxvYWRlZC50aW1ldHVwbGUoKSksCi0gICAg
ICAgICAgICAgICAgdmVyc2lvbj1zZWxmLnVwbG9hZF92ZXJzaW9uLAotICAgICAgICAgICAgKQot
Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvbmZpZ3VyYXRpb25fY29udGV4dCwgY29tbWl0X2Nv
bnRleHQsIHR0bF9zZWNvbmRzPU5vbmUsIGFzeW5jX3Byb2Nlc3Npbmc9RmFsc2UpOgotICAgICAg
ICBzZWxmLnR0bF9zZWNvbmRzID0gdHRsX3NlY29uZHMKLSAgICAgICAgc2VsZi5jb25maWd1cmF0
aW9uX2NvbnRleHQgPSBjb25maWd1cmF0aW9uX2NvbnRleHQKLSAgICAgICAgc2VsZi5jb21taXRf
Y29udGV4dCA9IGNvbW1pdF9jb250ZXh0Ci0gICAgICAgIHNlbGYuY2Fzc2FuZHJhID0gc2VsZi5j
b25maWd1cmF0aW9uX2NvbnRleHQuY2Fzc2FuZHJhCi0gICAgICAgIHNlbGYuX3Byb2Nlc3NfdXBs
b2FkX2NhbGxiYWNrcyA9IGRlZmF1bHRkaWN0KGRpY3QpCi0gICAgICAgIHdpdGggc2VsZjoKLSAg
ICAgICAgICAgIHNlbGYuY2Fzc2FuZHJhLmNyZWF0ZV90YWJsZShzZWxmLlN1aXRlc0J5Q29uZmln
dXJhdGlvbikKLSAgICAgICAgICAgIHNlbGYuY2Fzc2FuZHJhLmNyZWF0ZV90YWJsZShzZWxmLlVw
bG9hZHNCeUNvbmZpZ3VyYXRpb25MZWdhY3kpCi0gICAgICAgICAgICBzZWxmLmNhc3NhbmRyYS5j
cmVhdGVfdGFibGUoc2VsZi5VcGxvYWRzQnlDb25maWd1cmF0aW9uKQotCi0gICAgICAgIHNlbGYu
X2FzeW5jX3Byb2Nlc3NpbmcgPSBhc3luY19wcm9jZXNzaW5nCi0gICAgICAgIHNlbGYucmVkaXMg
PSBzZWxmLmNvbmZpZ3VyYXRpb25fY29udGV4dC5yZWRpcwotCi0gICAgZGVmIF9fZW50ZXJfXyhz
ZWxmKToKLSAgICAgICAgc2VsZi5jb25maWd1cmF0aW9uX2NvbnRleHQuX19lbnRlcl9fKCkKLSAg
ICAgICAgc2VsZi5jb21taXRfY29udGV4dC5fX2VudGVyX18oKQotCi0gICAgZGVmIF9fZXhpdF9f
KHNlbGYsICphcmdzLCAqKmt3YXJncyk6Ci0gICAgICAgIHNlbGYuY29tbWl0X2NvbnRleHQuX19l
eGl0X18oKmFyZ3MsICoqa3dhcmdzKQotICAgICAgICBzZWxmLmNvbmZpZ3VyYXRpb25fY29udGV4
dC5fX2V4aXRfXygqYXJncywgKiprd2FyZ3MpCi0KLSAgICBkZWYgcmVnaXN0ZXJfdXBsb2FkX2Nh
bGxiYWNrKHNlbGYsIG5hbWUsIGNhbGxiYWNrLCBzdWl0ZT1Ob25lKToKLSAgICAgICAgIyBJZiBu
byBzdWl0ZSBpcyBzcGVjaWZpZWQsIGFsbCB1cGxvYWRzIGZyb20gYWxsIHN1aXRlcyB3aWxsIHRy
aWdnZXIgdGhlIGNhbGxiYWNrCi0gICAgICAgIHNlbGYuX3Byb2Nlc3NfdXBsb2FkX2NhbGxiYWNr
c1tzdWl0ZV1bbmFtZV0gPSBjYWxsYmFjawotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHRv
X3ppcChjbHMsIHZhbHVlLCBhcmNoaXZlX25hbWU9J2FyY2hpdmUnKToKLSAgICAgICAgaWYgbm90
IGlzaW5zdGFuY2UodmFsdWUsIHN0cik6Ci0gICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoZidF
eHBlY3RlZCB0eXBlIHtzdHJ9LCBnb3Qge3R5cGUodmFsdWUpfScpCi0KLSAgICAgICAgY29tcHJl
c3NlZF9maWxlID0gaW8uQnl0ZXNJTygpCi0gICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKGNv
bXByZXNzZWRfZmlsZSwgbW9kZT0ndycsIGNvbXByZXNzaW9uPXppcGZpbGUuWklQX0RFRkxBVEVE
KSBhcyB6aXBfZmlsZToKLSAgICAgICAgICAgIHppcF9maWxlLndyaXRlc3RyKGFyY2hpdmVfbmFt
ZSwgdmFsdWUpCi0gICAgICAgIHJldHVybiBieXRlYXJyYXkoY29tcHJlc3NlZF9maWxlLmdldHZh
bHVlKCkpCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgZnJvbV96aXAoY2xzLCB2YWx1ZSwg
YXJjaGl2ZV9uYW1lPSdhcmNoaXZlJyk6Ci0gICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHZhbHVl
LCBieXRlYXJyYXkpOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKGYnRXhwZWN0ZWQgdHlw
ZSB7Ynl0ZWFycmF5fSwgZ290IHt0eXBlKHZhbHVlKX0nKQotCi0gICAgICAgIGNvbXByZXNzZWRf
ZmlsZSA9IGlvLkJ5dGVzSU8oKQotICAgICAgICBjb21wcmVzc2VkX2ZpbGUud3JpdGUodmFsdWUp
Ci0gICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKGNvbXByZXNzZWRfZmlsZSwgbW9kZT0ncicp
IGFzIHppcF9maWxlOgotICAgICAgICAgICAgcmV0dXJuIHppcF9maWxlLnJlYWQoYXJjaGl2ZV9u
YW1lKS5kZWNvZGUoJ3V0Zi04JykKLQotICAgIGRlZiBzeW5jaHJvbm91c2x5X3Byb2Nlc3NfdGVz
dF9yZXN1bHRzKHNlbGYsIGNvbmZpZ3VyYXRpb24sIGNvbW1pdHMsIHN1aXRlLCB0ZXN0X3Jlc3Vs
dHMsIHRpbWVzdGFtcD1Ob25lKToKLSAgICAgICAgdGltZXN0YW1wID0gdGltZXN0YW1wIG9yIHRp
bWUudGltZSgpCi0KLSAgICAgICAgIyBBbGxvd3MgcGFydGlhbCBlcnJvcnMgdG8gYmUgZm9yd2Fy
ZGVkIGJhY2sgdG8gdGhlIGNhbGxlcgotICAgICAgICByZXN1bHQgPSB7fQotICAgICAgICBmb3Ig
bmFtZSwgY2FsbGJhY2sgaW4gc2VsZi5fcHJvY2Vzc191cGxvYWRfY2FsbGJhY2tzW3N1aXRlXS5p
dGVtcygpOgotICAgICAgICAgICAgcmVzdWx0W25hbWVdID0gY2FsbGJhY2soY29uZmlndXJhdGlv
bj1jb25maWd1cmF0aW9uLCBjb21taXRzPWNvbW1pdHMsIHN1aXRlPXN1aXRlLCB0ZXN0X3Jlc3Vs
dHM9dGVzdF9yZXN1bHRzLCB0aW1lc3RhbXA9dGltZXN0YW1wKQotICAgICAgICBmb3IgbmFtZSwg
Y2FsbGJhY2sgaW4gc2VsZi5fcHJvY2Vzc191cGxvYWRfY2FsbGJhY2tzW05vbmVdLml0ZW1zKCk6
Ci0gICAgICAgICAgICByZXN1bHRbbmFtZV0gPSBjYWxsYmFjayhjb25maWd1cmF0aW9uPWNvbmZp
Z3VyYXRpb24sIGNvbW1pdHM9Y29tbWl0cywgc3VpdGU9c3VpdGUsIHRlc3RfcmVzdWx0cz10ZXN0
X3Jlc3VsdHMsIHRpbWVzdGFtcD10aW1lc3RhbXApCi0gICAgICAgIHJldHVybiByZXN1bHQKLQot
ICAgIGRlZiBfZmluZF9qb2Jfd2l0aF9hdHRlbXB0cyhzZWxmKToKLSAgICAgICAgbm93ID0gaW50
KHRpbWUudGltZSgpKQotICAgICAgICBhcmVfam9ic19sZWZ0ID0gRmFsc2UKLSAgICAgICAgd2ls
bF9hdHRlbXB0ID0gMAotCi0gICAgICAgIHdpdGggc2VsZi5yZWRpcy5sb2NrKG5hbWU9Zidsb2Nr
X3tzZWxmLlFVRVVFX05BTUV9JywgdGltZW91dD02MCk6Ci0gICAgICAgICAgICBmb3Iga2V5IGlu
IHNlbGYucmVkaXMuc2Nhbl9pdGVyKG1hdGNoPWYne3NlbGYuUVVFVUVfTkFNRX0qJywgY291bnQ9
c2VsZi5NQVhfVEFTS1NfSU5fU0NBTik6Ci0gICAgICAgICAgICAgICAgYXJlX2pvYnNfbGVmdCA9
IFRydWUKLSAgICAgICAgICAgICAgICBrZXkgPSBrZXkuZGVjb2RlKCd1dGYtOCcpCi0gICAgICAg
ICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGpzb24ubG9hZHMoc2Vs
Zi5yZWRpcy5nZXQoa2V5KSkKLSAgICAgICAgICAgICAgICAgICAgaWYgbm93ID4gdmFsdWUuZ2V0
KCdzdGFydGVkX3Byb2Nlc3NpbmcnLCAwKSArIHNlbGYuUkVUUllfVElNRToKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHdpbGxfYXR0ZW1wdCA9IHZhbHVlLmdldCgnYXR0ZW1wdHMnLCAwKSArIDEK
LSAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgotICAgICAgICAgICAgICAgICAgICB3
aWxsX2F0dGVtcHQgPSAxCi0KLSAgICAgICAgICAgICAgICBpZiB3aWxsX2F0dGVtcHQ6Ci0gICAg
ICAgICAgICAgICAgICAgIHNlbGYucmVkaXMuc2V0KAotICAgICAgICAgICAgICAgICAgICAgICAg
a2V5LAotICAgICAgICAgICAgICAgICAgICAgICAganNvbi5kdW1wcyhkaWN0KHN0YXJ0ZWRfcHJv
Y2Vzc2luZz1ub3csIGF0dGVtcHRzPXdpbGxfYXR0ZW1wdCkpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgZXg9c2VsZi5QUk9DRVNTX1RJTUVPVVQsCi0gICAgICAgICAgICAgICAgICAgICkKLSAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGFyZV9qb2JzX2xlZnQsIGtleSwgd2lsbF9hdHRlbXB0
Ci0KLSAgICAgICAgcmV0dXJuIGFyZV9qb2JzX2xlZnQsIE5vbmUsIE5vbmUKLQotICAgIGRlZiBf
ZG9fam9iX2Zvcl9rZXkoc2VsZiwga2V5LCBhdHRlbXB0cz0xKToKLSAgICAgICAgam9iX2NvbXBs
ZXRlID0gRmFsc2UKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmF3X2RhdGEgPSBzZWxmLnJl
ZGlzLmdldChmJ2RhdGFfZm9yX3trZXl9JykKLSAgICAgICAgICAgIGlmIHJhd19kYXRhOgotICAg
ICAgICAgICAgICAgIGRhdGEgPSBqc29uLmxvYWRzKHJhd19kYXRhKQotICAgICAgICAgICAgICAg
IHNlbGYuc3luY2hyb25vdXNseV9wcm9jZXNzX3Rlc3RfcmVzdWx0cygKLSAgICAgICAgICAgICAg
ICAgICAgY29uZmlndXJhdGlvbj1Db25maWd1cmF0aW9uLmZyb21fanNvbihkYXRhWydjb25maWd1
cmF0aW9uJ10pLAotICAgICAgICAgICAgICAgICAgICBjb21taXRzPVtDb21taXQuZnJvbV9qc29u
KGNvbW1pdF9qc29uKSBmb3IgY29tbWl0X2pzb24gaW4gZGF0YVsnY29tbWl0cyddXSwKLSAgICAg
ICAgICAgICAgICAgICAgc3VpdGU9ZGF0YVsnc3VpdGUnXSwKLSAgICAgICAgICAgICAgICAgICAg
dGltZXN0YW1wPWRhdGFbJ3RpbWVzdGFtcCddLAotICAgICAgICAgICAgICAgICAgICB0ZXN0X3Jl
c3VsdHM9ZGF0YVsndGVzdF9yZXN1bHRzJ10sCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAg
ICAgam9iX2NvbXBsZXRlID0gVHJ1ZQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgaWYg
am9iX2NvbXBsZXRlIG9yIGF0dGVtcHRzID49IHNlbGYuTUFYX0FUVEVNUFRTOgotICAgICAgICAg
ICAgICAgIHNlbGYucmVkaXMuZGVsZXRlKGtleSkKLSAgICAgICAgICAgICAgICBzZWxmLnJlZGlz
LmRlbGV0ZShmJ2RhdGFfZm9yX3trZXl9JykKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAg
ICAgICAgc2VsZi5yZWRpcy5zZXQoCi0gICAgICAgICAgICAgICAgICAgIGtleSwKLSAgICAgICAg
ICAgICAgICAgICAganNvbi5kdW1wcyhkaWN0KHN0YXJ0ZWRfcHJvY2Vzc2luZz0wLCBhdHRlbXB0
cz1hdHRlbXB0cykpLAotICAgICAgICAgICAgICAgICAgICBleD1zZWxmLlBST0NFU1NfVElNRU9V
VCwKLSAgICAgICAgICAgICAgICApCi0gICAgICAgIHJldHVybiBqb2JfY29tcGxldGUKLQotICAg
IGRlZiBkb19wcm9jZXNzaW5nX3dvcmsoc2VsZik6Ci0gICAgICAgIGpvYnNfbGVmdCA9IFRydWUK
LSAgICAgICAgZGlkX2NvbXBsZXRlID0gRmFsc2UKLQotICAgICAgICB3aGlsZSBqb2JzX2xlZnQ6
Ci0gICAgICAgICAgICBqb2JzX2xlZnQsIGtleSwgYXR0ZW1wdHMgPSBzZWxmLl9maW5kX2pvYl93
aXRoX2F0dGVtcHRzKCkKLQotICAgICAgICAgICAgaWYga2V5OgotICAgICAgICAgICAgICAgIGRp
ZF9jb21wbGV0ZSB8PSBzZWxmLl9kb19qb2JfZm9yX2tleShrZXksIGF0dGVtcHRzPWF0dGVtcHRz
KQotICAgICAgICAgICAgZWxpZiBqb2JzX2xlZnQ6Ci0gICAgICAgICAgICAgICAgdGltZS5zbGVl
cCgxMCkgICMgVGhlcmUgYXJlIGpvYnMsIGJ1dCBvdGhlciB3b3JrZXJzIGFyZSBwcm9jZXNzaW5n
IHRoZW0uCi0KLSAgICAgICAgcmV0dXJuIGRpZF9jb21wbGV0ZQotCi0gICAgZGVmIHByb2Nlc3Nf
dGVzdF9yZXN1bHRzKHNlbGYsIGNvbmZpZ3VyYXRpb24sIGNvbW1pdHMsIHN1aXRlLCB0ZXN0X3Jl
c3VsdHMsIHRpbWVzdGFtcD1Ob25lKToKLSAgICAgICAgdGltZXN0YW1wID0gdGltZXN0YW1wIG9y
IHRpbWUudGltZSgpCi0KLSAgICAgICAgaWYgbm90IHNlbGYuX2FzeW5jX3Byb2Nlc3Npbmc6Ci0g
ICAgICAgICAgICByZXR1cm4gc2VsZi5zeW5jaHJvbm91c2x5X3Byb2Nlc3NfdGVzdF9yZXN1bHRz
KGNvbmZpZ3VyYXRpb24sIGNvbW1pdHMsIHN1aXRlLCB0ZXN0X3Jlc3VsdHM9dGVzdF9yZXN1bHRz
LCB0aW1lc3RhbXA9dGltZXN0YW1wKQotCi0gICAgICAgIGZvciBicmFuY2ggaW4gc2VsZi5jb21t
aXRfY29udGV4dC5icmFuY2hfa2V5c19mb3JfY29tbWl0cyhjb21taXRzKToKLSAgICAgICAgICAg
IGhhc2hfa2V5ID0gaGFzaChjb25maWd1cmF0aW9uKSBeIGhhc2goYnJhbmNoKSBeIGhhc2goc2Vs
Zi5jb21taXRfY29udGV4dC51dWlkX2Zvcl9jb21taXRzKGNvbW1pdHMpKSBeIGhhc2goc3VpdGUp
IF4gaGFzaCh0aW1lc3RhbXApCi0gICAgICAgICAgICBzZWxmLnJlZGlzLnNldCgKLSAgICAgICAg
ICAgICAgICBmJ3tzZWxmLlFVRVVFX05BTUV9OntoYXNoX2tleX0nLAotICAgICAgICAgICAgICAg
IGpzb24uZHVtcHMoZGljdChzdGFydGVkX3Byb2Nlc3Npbmc9MCwgYXR0ZW1wdHM9MCkpLAotICAg
ICAgICAgICAgICAgIGV4PXNlbGYuUFJPQ0VTU19USU1FT1VULAotICAgICAgICAgICAgKQotICAg
ICAgICAgICAgc2VsZi5yZWRpcy5zZXQoCi0gICAgICAgICAgICAgICAgZidkYXRhX2Zvcl97c2Vs
Zi5RVUVVRV9OQU1FfTp7aGFzaF9rZXl9JywKLSAgICAgICAgICAgICAgICBqc29uLmR1bXBzKGRp
Y3QoCi0gICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb249Q29uZmlndXJhdGlvbi5FbmNv
ZGVyKCkuZGVmYXVsdChjb25maWd1cmF0aW9uKSwKLSAgICAgICAgICAgICAgICAgICAgc3VpdGU9
c3VpdGUsCi0gICAgICAgICAgICAgICAgICAgIGNvbW1pdHM9Q29tbWl0LkVuY29kZXIoKS5kZWZh
dWx0KGNvbW1pdHMpLAotICAgICAgICAgICAgICAgICAgICB0aW1lc3RhbXA9dGltZXN0YW1wLAot
ICAgICAgICAgICAgICAgICAgICB0ZXN0X3Jlc3VsdHM9dGVzdF9yZXN1bHRzLAotICAgICAgICAg
ICAgICAgICkpLAotICAgICAgICAgICAgICAgIGV4PXNlbGYuUFJPQ0VTU19USU1FT1VULAotICAg
ICAgICAgICAgKQotICAgICAgICByZXR1cm4ge2tleTogZGljdChzdGF0dXM9J1F1ZXVlZCcpIGZv
ciBrZXkgaW4gbGlzdChzZWxmLl9wcm9jZXNzX3VwbG9hZF9jYWxsYmFja3Nbc3VpdGVdLmtleXMo
KSkgKyBsaXN0KHNlbGYuX3Byb2Nlc3NfdXBsb2FkX2NhbGxiYWNrc1tOb25lXS5rZXlzKCkpfQot
Ci0gICAgZGVmIHVwbG9hZF90ZXN0X3Jlc3VsdHMoc2VsZiwgY29uZmlndXJhdGlvbiwgY29tbWl0
cywgc3VpdGUsIHRlc3RfcmVzdWx0cywgdGltZXN0YW1wPU5vbmUsIHZlcnNpb249MCk6Ci0gICAg
ICAgIGlmIG5vdCBpc2luc3RhbmNlKHN1aXRlLCBzdHIpOgotICAgICAgICAgICAgcmFpc2UgVHlw
ZUVycm9yKGYnRXhwZWN0ZWQgdHlwZSB7c3RyfSwgZ290IHt0eXBlKHN1aXRlKX0nKQotICAgICAg
ICBmb3IgY29tbWl0IGluIGNvbW1pdHM6Ci0gICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShj
b21taXQsIENvbW1pdCk6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKGYnRXhwZWN0
ZWQgdHlwZSB7Q29tbWl0fSwgZ290IHt0eXBlKGNvbW1pdCl9JykKLSAgICAgICAgaWYgbGVuKGNv
bW1pdHMpIDwgMToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0VhY2ggdGVzdCByZXN1
bHQgbXVzdCBoYXZlIGF0IGxlYXN0IDEgYXNzb2NpYXRlZCBjb21taXQnKQotICAgICAgICBpZiBu
b3QgaXNpbnN0YW5jZSh0ZXN0X3Jlc3VsdHMsIGRpY3QpOgotICAgICAgICAgICAgcmFpc2UgVHlw
ZUVycm9yKGYnRXhwZWN0ZWQgdHlwZSB7ZGljdH0sIGdvdCB7dHlwZSh0ZXN0X3Jlc3VsdHMpfScp
Ci0gICAgICAgIHRpbWVzdGFtcCA9IHRpbWVzdGFtcCBvciB0aW1lLnRpbWUoKQotICAgICAgICBp
ZiBub3QgaXNpbnN0YW5jZSh0aW1lc3RhbXAsIGRhdGV0aW1lKToKLSAgICAgICAgICAgIHRpbWVz
dGFtcCA9IGRhdGV0aW1lLnV0Y2Zyb210aW1lc3RhbXAoaW50KHRpbWVzdGFtcCkpCi0KLSAgICAg
ICAgdXVpZCA9IHNlbGYuY29tbWl0X2NvbnRleHQudXVpZF9mb3JfY29tbWl0cyhjb21taXRzKQot
ICAgICAgICBicmFuY2hlcyA9IHNlbGYuY29tbWl0X2NvbnRleHQuYnJhbmNoX2tleXNfZm9yX2Nv
bW1pdHMoY29tbWl0cykKLQotICAgICAgICB3aXRoIHNlbGY6Ci0gICAgICAgICAgICBmb3IgYnJh
bmNoIGluIGJyYW5jaGVzOgotICAgICAgICAgICAgICAgIHNlbGYuY29uZmlndXJhdGlvbl9jb250
ZXh0LnJlZ2lzdGVyX2NvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbiwgYnJhbmNoPWJyYW5jaCwg
dGltZXN0YW1wPXRpbWVzdGFtcCkKLQotICAgICAgICAgICAgICAgIHNlbGYuY29uZmlndXJhdGlv
bl9jb250ZXh0Lmluc2VydF9yb3dfd2l0aF9jb25maWd1cmF0aW9uKAotICAgICAgICAgICAgICAg
ICAgICBzZWxmLlN1aXRlc0J5Q29uZmlndXJhdGlvbi5fX3RhYmxlX25hbWVfXywgY29uZmlndXJh
dGlvbiwgc3VpdGU9c3VpdGUsIGJyYW5jaD1icmFuY2gsCi0gICAgICAgICAgICAgICAgICAgIHR0
bD1pbnQoKHV1aWQgLy8gQ29tbWl0LlRJTUVTVEFNUF9UT19VVUlEX01VTFRJUExJRVIpICsgc2Vs
Zi50dGxfc2Vjb25kcyAtIHRpbWUudGltZSgpKSBpZiBzZWxmLnR0bF9zZWNvbmRzIGVsc2UgTm9u
ZSwKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICAgICAgc2VsZi5jb25maWd1cmF0aW9u
X2NvbnRleHQuaW5zZXJ0X3Jvd193aXRoX2NvbmZpZ3VyYXRpb24oCi0gICAgICAgICAgICAgICAg
ICAgIHNlbGYuVXBsb2Fkc0J5Q29uZmlndXJhdGlvbi5fX3RhYmxlX25hbWVfXywgY29uZmlndXJh
dGlvbj1jb25maWd1cmF0aW9uLAotICAgICAgICAgICAgICAgICAgICBzdWl0ZT1zdWl0ZSwgYnJh
bmNoPWJyYW5jaCwgdXVpZD11dWlkLCBzZGs9Y29uZmlndXJhdGlvbi5zZGsgb3IgJz8nLCB0aW1l
X3VwbG9hZGVkPXRpbWVzdGFtcCwKLSAgICAgICAgICAgICAgICAgICAgY29tbWl0cz1zZWxmLnRv
X3ppcChqc29uLmR1bXBzKGNvbW1pdHMsIGNscz1Db21taXQuRW5jb2RlcikpLAotICAgICAgICAg
ICAgICAgICAgICB0ZXN0X3Jlc3VsdHM9c2VsZi50b196aXAoanNvbi5kdW1wcyh0ZXN0X3Jlc3Vs
dHMpKSwKLSAgICAgICAgICAgICAgICAgICAgdXBsb2FkX3ZlcnNpb249dmVyc2lvbiwKLSAgICAg
ICAgICAgICAgICAgICAgdHRsPWludCgodXVpZCAvLyBDb21taXQuVElNRVNUQU1QX1RPX1VVSURf
TVVMVElQTElFUikgKyBzZWxmLnR0bF9zZWNvbmRzIC0gdGltZS50aW1lKCkpIGlmIHNlbGYudHRs
X3NlY29uZHMgZWxzZSBOb25lLAotICAgICAgICAgICAgICAgICkKLQotICAgIGRlZiBmaW5kX3Rl
c3RfcmVzdWx0cyhzZWxmLCBjb25maWd1cmF0aW9ucywgc3VpdGUsIGJyYW5jaD1Ob25lLCBiZWdp
bj1Ob25lLCBlbmQ9Tm9uZSwgcmVjZW50PVRydWUsIGxpbWl0PTEwMCk6Ci0gICAgICAgIGlmIG5v
dCBpc2luc3RhbmNlKHN1aXRlLCBzdHIpOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKGYn
RXhwZWN0ZWQgdHlwZSB7c3RyfSwgZ290IHt0eXBlKHN1aXRlKX0nKQotCi0gICAgICAgIHdpdGgg
c2VsZjoKLSAgICAgICAgICAgIHJlc3VsdCA9IHt9Ci0gICAgICAgICAgICBmb3IgY29uZmlndXJh
dGlvbiBpbiBjb25maWd1cmF0aW9uczoKLSAgICAgICAgICAgICAgICAjIEZJWE1FOiBSZW1vdmUg
dGhlIFVwbG9hZHNCeUNvbmZpZ3VyYXRpb25MZWdhY3kgb25jZSByZXN1bHRzIGluIGl0IGFyZSBz
dWZmaWNlbnRseSBvbGQgaW4gU3ByaW5nIDIwMjEKLSAgICAgICAgICAgICAgICAjIFdlIGRvbid0
IG5lZWQgdG8gaWdub3JlIGR1cGxpY2F0ZXMgYmVjYXVzZSB3ZSBuZXZlciByZXBvcnRlZCB0byBi
b3RoIGRhdGFiYXNlcwotICAgICAgICAgICAgICAgIHJlc3VsdC51cGRhdGUoe2NvbmZpZzogW3Zh
bHVlLnVucGFjaygpIGZvciB2YWx1ZSBpbiB2YWx1ZXNdIGZvciBjb25maWcsIHZhbHVlcyBpbiBz
ZWxmLmNvbmZpZ3VyYXRpb25fY29udGV4dC5zZWxlY3RfZnJvbV90YWJsZV93aXRoX2NvbmZpZ3Vy
YXRpb25zKAotICAgICAgICAgICAgICAgICAgICBzZWxmLlVwbG9hZHNCeUNvbmZpZ3VyYXRpb25M
ZWdhY3kuX190YWJsZV9uYW1lX18sIGNvbmZpZ3VyYXRpb25zPVtjb25maWd1cmF0aW9uXSwgcmVj
ZW50PXJlY2VudCwKLSAgICAgICAgICAgICAgICAgICAgc3VpdGU9c3VpdGUsIHNkaz1jb25maWd1
cmF0aW9uLnNkaywgYnJhbmNoPWJyYW5jaCBvciBzZWxmLmNvbW1pdF9jb250ZXh0LkRFRkFVTFRf
QlJBTkNIX0tFWSwKLSAgICAgICAgICAgICAgICAgICAgdXVpZF9fZ3RlPUNvbW1pdENvbnRleHQu
Y29udmVydF90b191dWlkKGJlZ2luKSwKLSAgICAgICAgICAgICAgICAgICAgdXVpZF9fbHRlPUNv
bW1pdENvbnRleHQuY29udmVydF90b191dWlkKGVuZCwgQ29tbWl0Q29udGV4dC50aW1lc3RhbXBf
dG9fdXVpZCgpKSwgbGltaXQ9bGltaXQsCi0gICAgICAgICAgICAgICAgKS5pdGVtcygpfSkKLQot
ICAgICAgICAgICAgICAgIHJlc3VsdC51cGRhdGUoe2NvbmZpZzogW3ZhbHVlLnVucGFjaygpIGZv
ciB2YWx1ZSBpbiB2YWx1ZXNdIGZvciBjb25maWcsIHZhbHVlcyBpbiBzZWxmLmNvbmZpZ3VyYXRp
b25fY29udGV4dC5zZWxlY3RfZnJvbV90YWJsZV93aXRoX2NvbmZpZ3VyYXRpb25zKAotICAgICAg
ICAgICAgICAgICAgICBzZWxmLlVwbG9hZHNCeUNvbmZpZ3VyYXRpb24uX190YWJsZV9uYW1lX18s
IGNvbmZpZ3VyYXRpb25zPVtjb25maWd1cmF0aW9uXSwgcmVjZW50PXJlY2VudCwKLSAgICAgICAg
ICAgICAgICAgICAgc3VpdGU9c3VpdGUsIHNkaz1jb25maWd1cmF0aW9uLnNkaywgYnJhbmNoPWJy
YW5jaCBvciBzZWxmLmNvbW1pdF9jb250ZXh0LkRFRkFVTFRfQlJBTkNIX0tFWSwKLSAgICAgICAg
ICAgICAgICAgICAgdXVpZF9fZ3RlPUNvbW1pdENvbnRleHQuY29udmVydF90b191dWlkKGJlZ2lu
KSwKLSAgICAgICAgICAgICAgICAgICAgdXVpZF9fbHRlPUNvbW1pdENvbnRleHQuY29udmVydF90
b191dWlkKGVuZCwgQ29tbWl0Q29udGV4dC50aW1lc3RhbXBfdG9fdXVpZCgpKSwgbGltaXQ9bGlt
aXQsCi0gICAgICAgICAgICAgICAgKS5pdGVtcygpfSkKLSAgICAgICAgICAgIHJldHVybiByZXN1
bHQKLQotICAgIGRlZiBmaW5kX3N1aXRlcyhzZWxmLCBjb25maWd1cmF0aW9ucywgYnJhbmNoPU5v
bmUsIHJlY2VudD1UcnVlLCBsaW1pdD0xMDApOgotICAgICAgICB3aXRoIHNlbGY6Ci0gICAgICAg
ICAgICByZXR1cm4gewotICAgICAgICAgICAgICAgIGNvbmZpZzogW3Jvdy5zdWl0ZSBmb3Igcm93
IGluIHJvd3NdIGZvciBjb25maWcsIHJvd3MgaW4gc2VsZi5jb25maWd1cmF0aW9uX2NvbnRleHQu
c2VsZWN0X2Zyb21fdGFibGVfd2l0aF9jb25maWd1cmF0aW9ucygKLSAgICAgICAgICAgICAgICAg
ICAgc2VsZi5TdWl0ZXNCeUNvbmZpZ3VyYXRpb24uX190YWJsZV9uYW1lX18sIGNvbmZpZ3VyYXRp
b25zPWNvbmZpZ3VyYXRpb25zLCBicmFuY2g9YnJhbmNoLCByZWNlbnQ9cmVjZW50LCBsaW1pdD1s
aW1pdCwKLSAgICAgICAgICAgICAgICApLml0ZW1zKCkKLSAgICAgICAgICAgIH0KLQotCi1jbGFz
cyBVcGxvYWRDYWxsYmFja0NvbnRleHQob2JqZWN0KToKLSAgICBAY2xhc3NtZXRob2QKLSAgICBk
ZWYgcGFydGlhbF9zdGF0dXMoY2xzLCBleGNlcHRpb249Tm9uZSk6Ci0gICAgICAgIGlmIGV4Y2Vw
dGlvbjoKLSAgICAgICAgICAgIHJldHVybiBkaWN0KAotICAgICAgICAgICAgICAgIHN0YXR1cz0n
ZXJyb3InLAotICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uPXN0cihleGNlcHRpb24pLAotICAg
ICAgICAgICAgKQotICAgICAgICByZXR1cm4gZGljdChzdGF0dXM9J29rJykKLQotICAgIGRlZiBf
X2luaXRfXyhzZWxmLCBuYW1lLCBjb25maWd1cmF0aW9uX2NvbnRleHQsIGNvbW1pdF9jb250ZXh0
LCB0dGxfc2Vjb25kcz1Ob25lKToKLSAgICAgICAgc2VsZi5uYW1lID0gbmFtZQotICAgICAgICBz
ZWxmLmNvbmZpZ3VyYXRpb25fY29udGV4dCA9IGNvbmZpZ3VyYXRpb25fY29udGV4dAotICAgICAg
ICBzZWxmLmNvbW1pdF9jb250ZXh0ID0gY29tbWl0X2NvbnRleHQKLSAgICAgICAgc2VsZi5jYXNz
YW5kcmEgPSBzZWxmLmNvbmZpZ3VyYXRpb25fY29udGV4dC5jYXNzYW5kcmEKLSAgICAgICAgc2Vs
Zi50dGxfc2Vjb25kcyA9IHR0bF9zZWNvbmRzCi0KLSAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgot
ICAgICAgICBzZWxmLmNvbmZpZ3VyYXRpb25fY29udGV4dC5fX2VudGVyX18oKQotICAgICAgICBz
ZWxmLmNvbW1pdF9jb250ZXh0Ll9fZW50ZXJfXygpCi0KLSAgICBkZWYgX19leGl0X18oc2VsZiwg
KmFyZ3MsICoqa3dhcmdzKToKLSAgICAgICAgc2VsZi5jb21taXRfY29udGV4dC5fX2V4aXRfXygq
YXJncywgKiprd2FyZ3MpCi0gICAgICAgIHNlbGYuY29uZmlndXJhdGlvbl9jb250ZXh0Ll9fZXhp
dF9fKCphcmdzLCAqKmt3YXJncykKLQotICAgIGRlZiByZWdpc3RlcihzZWxmLCAqYXJncywgKipr
d2FyZ3MpOgotICAgICAgICByZXR1cm4gZGljdChzdGF0dXM9J2Vycm9yJywgZGVzY3JpcHRpb249
ZidObyByZWdpc3RlciBpbXBsZW1lbnRlZCBmb3Ige3NlbGYubmFtZX0nKQpJbmRleDogVG9vbHMv
cmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvdXBsb2FkX2NvbnRleHRfdW5pdHRlc3QucHkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvdXBsb2Fk
X2NvbnRleHRfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI2NTUzMSkKKysrIFRvb2xzL3Jlc3VsdHNk
YnB5L3Jlc3VsdHNkYnB5L21vZGVsL3VwbG9hZF9jb250ZXh0X3VuaXR0ZXN0LnB5CShub25leGlz
dGVudCkKQEAgLTEsMTY4ICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUg
bWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKLSMgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotIyBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0jIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0j
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksCi0jIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0KLWZyb20gZmFrZXJlZGlzIGltcG9ydCBGYWtlU3RyaWN0UmVkaXMKLWZyb20gcmVkaXMg
aW1wb3J0IFN0cmljdFJlZGlzCi1mcm9tIHJlc3VsdHNkYnB5LmNvbnRyb2xsZXIuY29uZmlndXJh
dGlvbiBpbXBvcnQgQ29uZmlndXJhdGlvbgotZnJvbSByZXN1bHRzZGJweS5tb2RlbC5jYXNzYW5k
cmFfY29udGV4dCBpbXBvcnQgQ2Fzc2FuZHJhQ29udGV4dAotZnJvbSByZXN1bHRzZGJweS5tb2Rl
bC5tb2NrX2Nhc3NhbmRyYV9jb250ZXh0IGltcG9ydCBNb2NrQ2Fzc2FuZHJhQ29udGV4dAotZnJv
bSByZXN1bHRzZGJweS5tb2RlbC5tb2NrX21vZGVsX2ZhY3RvcnkgaW1wb3J0IE1vY2tNb2RlbEZh
Y3RvcnkKLWZyb20gcmVzdWx0c2RicHkubW9kZWwudXBsb2FkX2NvbnRleHQgaW1wb3J0IFVwbG9h
ZENvbnRleHQKLWZyb20gcmVzdWx0c2RicHkubW9kZWwud2FpdF9mb3JfZG9ja2VyX3Rlc3RfY2Fz
ZSBpbXBvcnQgV2FpdEZvckRvY2tlclRlc3RDYXNlCi0KLQotY2xhc3MgVXBsb2FkQ29udGV4dFRl
c3QoV2FpdEZvckRvY2tlclRlc3RDYXNlKToKLSAgICBLRVlTUEFDRSA9ICd1cGxvYWRfY29udGV4
dF90ZXN0X2tleXNwYWNlJwotCi0gICAgZGVmIGluaXRfZGF0YWJhc2Uoc2VsZiwgcmVkaXM9U3Ry
aWN0UmVkaXMsIGNhc3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0LCBhc3luY19wcm9jZXNzaW5nPUZh
bHNlKToKLSAgICAgICAgY2Fzc2FuZHJhLmRyb3Bfa2V5c3BhY2Uoa2V5c3BhY2U9c2VsZi5LRVlT
UEFDRSkKLSAgICAgICAgc2VsZi5tb2RlbCA9IE1vY2tNb2RlbEZhY3RvcnkuY3JlYXRlKAotICAg
ICAgICAgICAgcmVkaXM9cmVkaXMoKSwgY2Fzc2FuZHJhPWNhc3NhbmRyYShrZXlzcGFjZT1zZWxm
LktFWVNQQUNFLCBjcmVhdGVfa2V5c3BhY2U9VHJ1ZSksCi0gICAgICAgICAgICBhc3luY19wcm9j
ZXNzaW5nPWFzeW5jX3Byb2Nlc3NpbmcsCi0gICAgICAgICkKLQotICAgIGRlZiB0ZXN0X3ppcHBp
bmcoc2VsZik6Ci0gICAgICAgIHppcHBlZF9ieXRlcyA9IFVwbG9hZENvbnRleHQudG9femlwKCdz
b21lc3RyaW5nJyAqIDEwMCkKLSAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh6aXBwZWRfYnl0
ZXMsICdzb21lc3RyaW5nJyAqIDEwMCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChVcGxvYWRD
b250ZXh0LmZyb21femlwKHppcHBlZF9ieXRlcyksICdzb21lc3RyaW5nJyAqIDEwMCkKLQotICAg
IEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtl
U3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQotICAgIGRl
ZiB0ZXN0X3N1aXRlX2xpc3Qoc2VsZiwgcmVkaXM9U3RyaWN0UmVkaXMsIGNhc3NhbmRyYT1DYXNz
YW5kcmFDb250ZXh0KToKLSAgICAgICAgc2VsZi5pbml0X2RhdGFiYXNlKHJlZGlzPXJlZGlzLCBj
YXNzYW5kcmE9Y2Fzc2FuZHJhKQotCi0gICAgICAgIE1vY2tNb2RlbEZhY3RvcnkuYWRkX21vY2tf
cmVzdWx0cyhzZWxmLm1vZGVsKQotICAgICAgICBmb3Igc3VpdGVzIGluIHNlbGYubW9kZWwudXBs
b2FkX2NvbnRleHQuZmluZF9zdWl0ZXMoY29uZmlndXJhdGlvbnM9W0NvbmZpZ3VyYXRpb24oKV0s
IHJlY2VudD1UcnVlKS52YWx1ZXMoKToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Vp
dGVzLCBbJ2xheW91dC10ZXN0cyddKQotCi0gICAgICAgIE1vY2tNb2RlbEZhY3RvcnkuYWRkX21v
Y2tfcmVzdWx0cyhzZWxmLm1vZGVsLCBzdWl0ZT0nYXBpX3Rlc3RzJykKLSAgICAgICAgZm9yIHN1
aXRlcyBpbiBzZWxmLm1vZGVsLnVwbG9hZF9jb250ZXh0LmZpbmRfc3VpdGVzKGNvbmZpZ3VyYXRp
b25zPVtDb25maWd1cmF0aW9uKCldLCByZWNlbnQ9VHJ1ZSkudmFsdWVzKCk6Ci0gICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHN1aXRlcywgWydhcGlfdGVzdHMnLCAnbGF5b3V0LXRlc3RzJ10p
Ci0KLSAgICAgICAgTW9ja01vZGVsRmFjdG9yeS5hZGRfbW9ja19yZXN1bHRzKHNlbGYubW9kZWws
IGNvbmZpZ3VyYXRpb249Q29uZmlndXJhdGlvbihpc19zaW11bGF0b3I9VHJ1ZSksIHN1aXRlPSd3
ZWJraXRweScpCi0gICAgICAgIGZvciBzdWl0ZXMgaW4gc2VsZi5tb2RlbC51cGxvYWRfY29udGV4
dC5maW5kX3N1aXRlcyhjb25maWd1cmF0aW9ucz1bQ29uZmlndXJhdGlvbihpc19zaW11bGF0b3I9
VHJ1ZSldLCByZWNlbnQ9VHJ1ZSkudmFsdWVzKCk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHN1aXRlcywgWydhcGlfdGVzdHMnLCAnbGF5b3V0LXRlc3RzJywgJ3dlYmtpdHB5J10pCi0g
ICAgICAgIGZvciBzdWl0ZXMgaW4gc2VsZi5tb2RlbC51cGxvYWRfY29udGV4dC5maW5kX3N1aXRl
cyhjb25maWd1cmF0aW9ucz1bQ29uZmlndXJhdGlvbihpc19zaW11bGF0b3I9RmFsc2UpXSwgcmVj
ZW50PVRydWUpLnZhbHVlcygpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdWl0ZXMs
IFsnYXBpX3Rlc3RzJywgJ2xheW91dC10ZXN0cyddKQotCi0gICAgQFdhaXRGb3JEb2NrZXJUZXN0
Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19j
YXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCi0gICAgZGVmIHRlc3RfcmVzdWx0X3JldHJp
ZXZhbChzZWxmLCByZWRpcz1TdHJpY3RSZWRpcywgY2Fzc2FuZHJhPUNhc3NhbmRyYUNvbnRleHQp
OgotICAgICAgICBzZWxmLmluaXRfZGF0YWJhc2UocmVkaXM9cmVkaXMsIGNhc3NhbmRyYT1jYXNz
YW5kcmEpCi0gICAgICAgIE1vY2tNb2RlbEZhY3RvcnkuYWRkX21vY2tfcmVzdWx0cyhzZWxmLm1v
ZGVsKQotCi0gICAgICAgIHJlc3VsdHMgPSBzZWxmLm1vZGVsLnVwbG9hZF9jb250ZXh0LmZpbmRf
dGVzdF9yZXN1bHRzKGNvbmZpZ3VyYXRpb25zPVtDb25maWd1cmF0aW9uKHBsYXRmb3JtPSdNYWMn
KV0sIHN1aXRlPSdsYXlvdXQtdGVzdHMnLCByZWNlbnQ9VHJ1ZSkKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCg2LCBsZW4ocmVzdWx0cykpCi0gICAgICAgIGZvciBjb25maWcsIHZhbHVlcyBpbiBy
ZXN1bHRzLml0ZW1zKCk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbmZpZywgQ29u
ZmlndXJhdGlvbihwbGF0Zm9ybT0nTWFjJykpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KDUsIGxlbih2YWx1ZXMpKQotICAgICAgICAgICAgZm9yIHZhbHVlIGluIHZhbHVlczoKLSAgICAg
ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhbHVlWyd0ZXN0X3Jlc3VsdHMnXSwgTW9ja01v
ZGVsRmFjdG9yeS5sYXlvdXRfdGVzdF9yZXN1bHRzKCkpCi0KLSAgICBAV2FpdEZvckRvY2tlclRl
c3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2Nr
X2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKLSAgICBkZWYgdGVzdF9yZXN1bHRfcmV0
cmlldmFsX2xpbWl0KHNlbGYsIHJlZGlzPVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fzc2FuZHJh
Q29udGV4dCk6Ci0gICAgICAgIHNlbGYuaW5pdF9kYXRhYmFzZShyZWRpcz1yZWRpcywgY2Fzc2Fu
ZHJhPWNhc3NhbmRyYSkKLSAgICAgICAgTW9ja01vZGVsRmFjdG9yeS5hZGRfbW9ja19yZXN1bHRz
KHNlbGYubW9kZWwpCi0KLSAgICAgICAgcmVzdWx0cyA9IHNlbGYubW9kZWwudXBsb2FkX2NvbnRl
eHQuZmluZF90ZXN0X3Jlc3VsdHMoY29uZmlndXJhdGlvbnM9W0NvbmZpZ3VyYXRpb24ocGxhdGZv
cm09J01hYycpXSwgc3VpdGU9J2xheW91dC10ZXN0cycsIGxpbWl0PTIsIHJlY2VudD1UcnVlKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1bShbbGVuKHZhbHVlKSBmb3IgdmFsdWUgaW4gcmVz
dWx0cy52YWx1ZXMoKV0pLCAxMikKLQotICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19p
Zl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1v
Y2tDYXNzYW5kcmFDb250ZXh0KQotICAgIGRlZiB0ZXN0X3Jlc3VsdF9yZXRyaWV2YWxfYnJhbmNo
KHNlbGYsIHJlZGlzPVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCk6Ci0g
ICAgICAgIHNlbGYuaW5pdF9kYXRhYmFzZShyZWRpcz1yZWRpcywgY2Fzc2FuZHJhPWNhc3NhbmRy
YSkKLSAgICAgICAgTW9ja01vZGVsRmFjdG9yeS5hZGRfbW9ja19yZXN1bHRzKHNlbGYubW9kZWwp
Ci0KLSAgICAgICAgcmVzdWx0cyA9IHNlbGYubW9kZWwudXBsb2FkX2NvbnRleHQuZmluZF90ZXN0
X3Jlc3VsdHMoY29uZmlndXJhdGlvbnM9W0NvbmZpZ3VyYXRpb24ocGxhdGZvcm09J2lPUycsIGlz
X3NpbXVsYXRvcj1UcnVlKV0sIHN1aXRlPSdsYXlvdXQtdGVzdHMnLCBicmFuY2g9J3NhZmFyaS02
MDYtYnJhbmNoJywgcmVjZW50PVRydWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMywgbGVu
KHJlc3VsdHMpKQotICAgICAgICBmb3IgY29uZmlnLCB2YWx1ZXMgaW4gcmVzdWx0cy5pdGVtcygp
OgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb25maWcsIENvbmZpZ3VyYXRpb24ocGxh
dGZvcm09J2lPUycsIGlzX3NpbXVsYXRvcj1UcnVlKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoMiwgbGVuKHZhbHVlcykpCi0gICAgICAgICAgICBmb3IgdmFsdWUgaW4gdmFsdWVzOgot
ICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsdWVbJ3Rlc3RfcmVzdWx0cyddLCBN
b2NrTW9kZWxGYWN0b3J5LmxheW91dF90ZXN0X3Jlc3VsdHMoKSkKLQotICAgIEBXYWl0Rm9yRG9j
a2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMs
IG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQotICAgIGRlZiB0ZXN0X3Jlc3Vs
dF9yZXRyaWV2YWxfYnlfc2RrKHNlbGYsIHJlZGlzPVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fz
c2FuZHJhQ29udGV4dCk6Ci0gICAgICAgIHNlbGYuaW5pdF9kYXRhYmFzZShyZWRpcz1yZWRpcywg
Y2Fzc2FuZHJhPWNhc3NhbmRyYSkKLSAgICAgICAgTW9ja01vZGVsRmFjdG9yeS5hZGRfbW9ja19y
ZXN1bHRzKHNlbGYubW9kZWwpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBsZW4oc2Vs
Zi5tb2RlbC51cGxvYWRfY29udGV4dC5maW5kX3Rlc3RfcmVzdWx0cyhjb25maWd1cmF0aW9ucz1b
Q29uZmlndXJhdGlvbihwbGF0Zm9ybT0naU9TJywgc2RrPScxNUE0MzInKV0sIHN1aXRlPSdsYXlv
dXQtdGVzdHMnLCByZWNlbnQ9VHJ1ZSkpKQotICAgICAgICByZXN1bHRzID0gc2VsZi5tb2RlbC51
cGxvYWRfY29udGV4dC5maW5kX3Rlc3RfcmVzdWx0cyhjb25maWd1cmF0aW9ucz1bQ29uZmlndXJh
dGlvbihwbGF0Zm9ybT0naU9TJywgc2RrPScxNUE0MzInKV0sIHN1aXRlPSdsYXlvdXQtdGVzdHMn
LCByZWNlbnQ9RmFsc2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoNiwgbGVuKHJlc3VsdHMp
KQotICAgICAgICBmb3IgY29uZmlnLCB2YWx1ZXMgaW4gcmVzdWx0cy5pdGVtcygpOgotICAgICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb25maWcudmVyc2lvbiwgMTEwMDAwMDApCi0gICAgICAg
ICAgICBmb3IgdmFsdWUgaW4gdmFsdWVzOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwodmFsdWVbJ3NkayddLCAnMTVBNDMyJykKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHZhbHVlWyd0ZXN0X3Jlc3VsdHMnXSwgTW9ja01vZGVsRmFjdG9yeS5sYXlvdXRfdGVzdF9y
ZXN1bHRzKCkpCi0KLSAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2Vy
KG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJh
Q29udGV4dCkKLSAgICBkZWYgdGVzdF9zZGtfZGlmZmVyZW50aWF0aW9uKHNlbGYsIHJlZGlzPVN0
cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCk6Ci0gICAgICAgIHNlbGYuaW5p
dF9kYXRhYmFzZShyZWRpcz1yZWRpcywgY2Fzc2FuZHJhPWNhc3NhbmRyYSkKLSAgICAgICAgTW9j
a01vZGVsRmFjdG9yeS5hZGRfbW9ja19yZXN1bHRzKHNlbGYubW9kZWwpCi0KLSAgICAgICAgY29u
ZmlndXJhdGlvbl90b19zZWFyY2ggPSBDb25maWd1cmF0aW9uKHBsYXRmb3JtPSdpT1MnLCB2ZXJz
aW9uPScxMi4wLjAnLCBpc19zaW11bGF0b3I9VHJ1ZSwgc3R5bGU9J0FzYW4nKQotICAgICAgICBy
ZXN1bHRzID0gc2VsZi5tb2RlbC51cGxvYWRfY29udGV4dC5maW5kX3Rlc3RfcmVzdWx0cyhjb25m
aWd1cmF0aW9ucz1bY29uZmlndXJhdGlvbl90b19zZWFyY2hdLCBzdWl0ZT0nbGF5b3V0LXRlc3Rz
JywgcmVjZW50PUZhbHNlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihyZXN1bHRz
KSkKLQotICAgICAgICBNb2NrTW9kZWxGYWN0b3J5LmFkZF9tb2NrX3Jlc3VsdHMoc2VsZi5tb2Rl
bCwgY29uZmlndXJhdGlvbj1Db25maWd1cmF0aW9uKAotICAgICAgICAgICAgcGxhdGZvcm09J2lP
UycsIHZlcnNpb249JzEyLjAuMCcsIHNkaz0nMTZBNDA1JywgaXNfc2ltdWxhdG9yPVRydWUsIGFy
Y2hpdGVjdHVyZT0neDg2XzY0Jywgc3R5bGU9J0FzYW4nLAotICAgICAgICApKQotCi0gICAgICAg
IHJlc3VsdHMgPSBzZWxmLm1vZGVsLnVwbG9hZF9jb250ZXh0LmZpbmRfdGVzdF9yZXN1bHRzKGNv
bmZpZ3VyYXRpb25zPVtjb25maWd1cmF0aW9uX3RvX3NlYXJjaF0sIHN1aXRlPSdsYXlvdXQtdGVz
dHMnLCByZWNlbnQ9RmFsc2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMiwgbGVuKHJlc3Vs
dHMpKQotICAgICAgICByZXN1bHRzID0gc2VsZi5tb2RlbC51cGxvYWRfY29udGV4dC5maW5kX3Rl
c3RfcmVzdWx0cyhjb25maWd1cmF0aW9ucz1bQ29uZmlndXJhdGlvbihwbGF0Zm9ybT0naU9TJywg
c2RrPScxNkE0MDUnKV0sIHN1aXRlPSdsYXlvdXQtdGVzdHMnLCByZWNlbnQ9RmFsc2UpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKHJlc3VsdHMpKQotCi0gICAgQFdhaXRGb3JEb2Nr
ZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywg
bW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCi0gICAgZGVmIHRlc3RfY2FsbGJh
Y2soc2VsZiwgcmVkaXM9U3RyaWN0UmVkaXMsIGNhc3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0KToK
LSAgICAgICAgc2VsZi5pbml0X2RhdGFiYXNlKHJlZGlzPXJlZGlzLCBjYXNzYW5kcmE9Y2Fzc2Fu
ZHJhKQotICAgICAgICBNb2NrTW9kZWxGYWN0b3J5LmFkZF9tb2NrX3Jlc3VsdHMoc2VsZi5tb2Rl
bCkKLQotICAgICAgICBjb25maWd1cmF0aW9uX3RvX3NlYXJjaCA9IENvbmZpZ3VyYXRpb24ocGxh
dGZvcm09J2lPUycsIHZlcnNpb249JzEyLjAuMCcsIGlzX3NpbXVsYXRvcj1UcnVlLCBzdHlsZT0n
QXNhbicpCi0gICAgICAgIGNvbmZpZ3VyYXRpb24sIHVwbG9hZHMgPSBuZXh0KGl0ZXIoc2VsZi5t
b2RlbC51cGxvYWRfY29udGV4dC5maW5kX3Rlc3RfcmVzdWx0cyhjb25maWd1cmF0aW9ucz1bY29u
ZmlndXJhdGlvbl90b19zZWFyY2hdLCBzdWl0ZT0nbGF5b3V0LXRlc3RzJywgcmVjZW50PUZhbHNl
KS5pdGVtcygpKSkKLSAgICAgICAgc2VsZi5tb2RlbC51cGxvYWRfY29udGV4dC5wcm9jZXNzX3Rl
c3RfcmVzdWx0cygKLSAgICAgICAgICAgIGNvbmZpZ3VyYXRpb249Y29uZmlndXJhdGlvbiwKLSAg
ICAgICAgICAgIGNvbW1pdHM9dXBsb2Fkc1swXVsnY29tbWl0cyddLAotICAgICAgICAgICAgc3Vp
dGU9J2xheW91dC10ZXN0cycsCi0gICAgICAgICAgICB0ZXN0X3Jlc3VsdHM9dXBsb2Fkc1swXVsn
dGVzdF9yZXN1bHRzJ10sCi0gICAgICAgICAgICB0aW1lc3RhbXA9dXBsb2Fkc1swXVsndGltZXN0
YW1wJ10sCi0gICAgICAgICkKLQotICAgICAgICAjIFVzaW5nIHN1aXRlIHJlc3VsdHMgYXMgYSBw
cm94eSB0byB0ZWxsIGlmIGNhbGxiYWNrcyB3ZXJlIHRyaWdnZXJlZAotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKDEsIGxlbihzZWxmLm1vZGVsLnN1aXRlX2NvbnRleHQuZmluZF9ieV9jb21taXQo
Y29uZmlndXJhdGlvbnM9W0NvbmZpZ3VyYXRpb24oKV0sIHN1aXRlPSdsYXlvdXQtdGVzdHMnKSkp
Ci0KLSAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVk
aXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkK
LSAgICBkZWYgdGVzdF9hc3luY19jYWxsYmFjayhzZWxmLCByZWRpcz1TdHJpY3RSZWRpcywgY2Fz
c2FuZHJhPUNhc3NhbmRyYUNvbnRleHQpOgotICAgICAgICBzZWxmLmluaXRfZGF0YWJhc2UocmVk
aXM9cmVkaXMsIGNhc3NhbmRyYT1jYXNzYW5kcmEsIGFzeW5jX3Byb2Nlc3Npbmc9VHJ1ZSkKLSAg
ICAgICAgTW9ja01vZGVsRmFjdG9yeS5hZGRfbW9ja19yZXN1bHRzKHNlbGYubW9kZWwpCi0KLSAg
ICAgICAgY29uZmlndXJhdGlvbl90b19zZWFyY2ggPSBDb25maWd1cmF0aW9uKHBsYXRmb3JtPSdp
T1MnLCB2ZXJzaW9uPScxMi4wLjAnLCBpc19zaW11bGF0b3I9VHJ1ZSwgc3R5bGU9J0FzYW4nKQot
ICAgICAgICBjb25maWd1cmF0aW9uLCB1cGxvYWRzID0gbmV4dChpdGVyKHNlbGYubW9kZWwudXBs
b2FkX2NvbnRleHQuZmluZF90ZXN0X3Jlc3VsdHMoY29uZmlndXJhdGlvbnM9W2NvbmZpZ3VyYXRp
b25fdG9fc2VhcmNoXSwgc3VpdGU9J2xheW91dC10ZXN0cycsIHJlY2VudD1GYWxzZSkuaXRlbXMo
KSkpCi0gICAgICAgIHNlbGYubW9kZWwudXBsb2FkX2NvbnRleHQucHJvY2Vzc190ZXN0X3Jlc3Vs
dHMoCi0gICAgICAgICAgICBjb25maWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24sCi0gICAgICAgICAg
ICBjb21taXRzPXVwbG9hZHNbMF1bJ2NvbW1pdHMnXSwKLSAgICAgICAgICAgIHN1aXRlPSdsYXlv
dXQtdGVzdHMnLAotICAgICAgICAgICAgdGVzdF9yZXN1bHRzPXVwbG9hZHNbMF1bJ3Rlc3RfcmVz
dWx0cyddLAotICAgICAgICAgICAgdGltZXN0YW1wPXVwbG9hZHNbMF1bJ3RpbWVzdGFtcCddLAot
ICAgICAgICApCi0KLSAgICAgICAgIyBVc2luZyBzdWl0ZSByZXN1bHRzIGFzIGEgcHJveHkgdG8g
dGVsbCBpZiBjYWxsYmFja3Mgd2VyZSB0cmlnZ2VyZWQKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgwLCBsZW4oc2VsZi5tb2RlbC5zdWl0ZV9jb250ZXh0LmZpbmRfYnlfY29tbWl0KGNvbmZpZ3Vy
YXRpb25zPVtDb25maWd1cmF0aW9uKCldLCBzdWl0ZT0nbGF5b3V0LXRlc3RzJykpKQotICAgICAg
ICBzZWxmLmFzc2VydFRydWUoc2VsZi5tb2RlbC51cGxvYWRfY29udGV4dC5kb19wcm9jZXNzaW5n
X3dvcmsoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oc2VsZi5tb2RlbC5zdWl0
ZV9jb250ZXh0LmZpbmRfYnlfY29tbWl0KGNvbmZpZ3VyYXRpb25zPVtDb25maWd1cmF0aW9uKCld
LCBzdWl0ZT0nbGF5b3V0LXRlc3RzJykpKQpJbmRleDogVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0
c2RicHkvbW9kZWwvd2FpdF9mb3JfZG9ja2VyX3Rlc3RfY2FzZS5weQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC93YWl0X2Zvcl9kb2NrZXJfdGVzdF9j
YXNlLnB5CShyZXZpc2lvbiAyNjU1MzEpCisrKyBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJw
eS9tb2RlbC93YWl0X2Zvcl9kb2NrZXJfdGVzdF9jYXNlLnB5CShub25leGlzdGVudCkKQEAgLTEs
NzUgKzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAotIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0jIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwK
LSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IKLSMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSMgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwKLSMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotaW1wb3J0
IG9zCi1pbXBvcnQgc3lzCi1pbXBvcnQgdW5pdHRlc3QKLQotZnJvbSBmYWtlcmVkaXMgaW1wb3J0
IEZha2VTdHJpY3RSZWRpcwotZnJvbSByZWRpcyBpbXBvcnQgU3RyaWN0UmVkaXMKLWZyb20gcmVz
dWx0c2RicHkubW9kZWwuZG9ja2VyIGltcG9ydCBEb2NrZXIKLQotCi1jbGFzcyBXYWl0Rm9yRG9j
a2VyVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgotCi0gICAgZGVmIHNldFVwKHNlbGYpOgot
ICAgICAgICBpZiBEb2NrZXIuaXNfcnVubmluZygpIGFuZCBpbnQob3MuZW52aXJvbi5nZXQoJ3Ns
b3dfdGVzdHMnLCAnMCcpKToKLSAgICAgICAgICAgIHdpdGggRG9ja2VyLmluc3RhbmNlKCk6Ci0g
ICAgICAgICAgICAgICAgU3RyaWN0UmVkaXMoKS5mbHVzaGRiKCkKLSAgICAgICAgRmFrZVN0cmlj
dFJlZGlzKCkuZmx1c2hkYigpCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgY29tYmluZShj
bHMsICphcmdzKToKLSAgICAgICAgZGVmIGRlY29yYXRvcihmdW5jKToKLSAgICAgICAgICAgIGZv
ciBlbG0gaW4gcmV2ZXJzZWQoYXJncyk6Ci0gICAgICAgICAgICAgICAgZnVuYyA9IGVsbShmdW5j
KQotICAgICAgICAgICAgcmV0dXJuIGZ1bmMKLQotICAgICAgICByZXR1cm4gZGVjb3JhdG9yCi0K
LSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgcnVuX2lmX3Nsb3coY2xzKToKLSAgICAgICAgcmV0
dXJuIHVuaXR0ZXN0LnNraXBJZihub3QgaW50KG9zLmVudmlyb24uZ2V0KCdzbG93X3Rlc3RzJywg
JzAnKSksICdTbG93IHRlc3RzIGRpc2FibGVkJykKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRl
ZiBydW5faWZfaGFzX2RvY2tlcihjbHMpOgotICAgICAgICByZXR1cm4gY2xzLmNvbWJpbmUoY2xz
LnJ1bl9pZl9zbG93KCksIHVuaXR0ZXN0LnNraXBJZihub3QgRG9ja2VyLmluc3RhbGxlZCgpLCAn
RG9ja2VyIG5vdCBpbnN0YWxsZWQnKSkKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBtb2Nr
X2lmX25vX2RvY2tlcihjbHMsICoqa3dhcmdzKToKLSAgICAgICAgbW9ja19hcmdzID0ge30KLSAg
ICAgICAgZm9yIGtleSwgdmFsdWUgaW4ga3dhcmdzLml0ZW1zKCk6Ci0gICAgICAgICAgICBpZiBu
b3Qga2V5LnN0YXJ0c3dpdGgoJ21vY2tfJyk6Ci0gICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0
aW9uKCd7fSBkb2VzIG5vdCBzdGFydCB3aXRoIFwnbW9ja19cJyBhbmQgaXMgYW4gaW52YWxpZCBh
cmd1bWVudCcpCi0gICAgICAgICAgICBtb2NrX2FyZ3Nba2V5W2xlbignbW9ja18nKTpdXSA9IHZh
bHVlCi0KLSAgICAgICAgZGVmIGRlY29yYXRvcihtZXRob2QsIG1vY2tfYXJncz1tb2NrX2FyZ3Mp
OgotICAgICAgICAgICAgIyBVc2UgZnJhbWUgaW50cm9zcGVjdGlvbiB0byBjcmVhdGUgYSBtZXRo
b2QgaW4gdGhlIGNvbnRhaW5pbmcgZnJhbWUuCi0gICAgICAgICAgICBmcmFtZSA9IHN5cy5fZ2V0
ZnJhbWUoMSkgICMgcHlsaW50OiBkaXNhYmxlLW1zZz1XMDIxMgotICAgICAgICAgICAgZnJhbWUu
Zl9sb2NhbHNbbWV0aG9kLl9fbmFtZV9fICsgJ19tb2NrJ10gPSBsYW1iZGEgdmFsOiBtZXRob2Qo
dmFsLCAqKm1vY2tfYXJncykKLQotICAgICAgICAgICAgZGVmIHJlYWxfbWV0aG9kKHZhbCwgbWV0
aG9kPW1ldGhvZCk6Ci0gICAgICAgICAgICAgICAgd2l0aCBEb2NrZXIuaW5zdGFuY2UoKToKLSAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIG1ldGhvZCh2YWwpCi0gICAgICAgICAgICByZXR1cm4g
Y2xzLnJ1bl9pZl9oYXNfZG9ja2VyKCkocmVhbF9tZXRob2QpCi0KLSAgICAgICAgcmV0dXJuIGRl
Y29yYXRvcgpJbmRleDogVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvcnVuCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3J1bgkocmV2aXNpb24gMjY1NTMx
KQorKysgVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvcnVuCShub25leGlzdGVudCkKQEAg
LTEsMTczICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbjMKLQotIyBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jCi0jIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SCi0jIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSMgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIKLSMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSMgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLQotaW1wb3J0IGFyZ3BhcnNlCi1pbXBvcnQgb3MKLWltcG9y
dCBzdWJwcm9jZXNzCi1pbXBvcnQgc3lzCi1pbXBvcnQgdGltZQotaW1wb3J0IHRocmVhZGluZwot
Ci1zeXMuZG9udF93cml0ZV9ieXRlY29kZSA9IFRydWUKLQotZnJvbSBtb2RlbC5kb2NrZXIgaW1w
b3J0IERvY2tlcgotZnJvbSBtdWx0aXByb2Nlc3NpbmcgaW1wb3J0IFByb2Nlc3MKLWZyb20gcmVk
aXMgaW1wb3J0IFN0cmljdFJlZGlzCi0KLQotY2xhc3MgRG9ja2VySWZOZWVkZWRDb250ZXh0KG9i
amVjdCk6Ci0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgYXJncyk6Ci0gICAgICAgIHNlbGYuZG9j
a2VyID0gRG9ja2VyLmluc3RhbmNlKCkgaWYgJ2xvY2FsaG9zdCcgaW4gW2FyZ3MuY2Fzc2FuZHJh
X3NlcnZlciwgYXJncy5yZWRpc19zZXJ2ZXJdIGVsc2UgTm9uZQotCi0gICAgZGVmIF9fZW50ZXJf
XyhzZWxmKToKLSAgICAgICAgaWYgc2VsZi5kb2NrZXI6Ci0gICAgICAgICAgICBzZWxmLmRvY2tl
ci5fX2VudGVyX18oKQotCi0gICAgZGVmIF9fZXhpdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncyk6
Ci0gICAgICAgIGlmIHNlbGYuZG9ja2VyOgotICAgICAgICAgICAgc2VsZi5kb2NrZXIuX19leGl0
X18oKmFyZ3MsICoqa3dhcmdzKQotCi0KLWRlZiBoYXNfZ3VuaWNvcm4oKToKLSAgICByZXR1cm4g
bm90IHN1YnByb2Nlc3MucnVuKFsncHl0aG9uMycsICcvdXNyL2xvY2FsL2Jpbi9ndW5pY29ybnMn
LCAnLS12ZXJzaW9uJ10sIGNhcHR1cmVfb3V0cHV0PVRydWUpLnJldHVybmNvZGUKLQotCi1kZWYg
cGFyc2VfYXJndW1lbnRzKCk6Ci0gICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIo
ZGVzY3JpcHRpb249J1J1biBhIHNpbXBsZSBpbnN0YW5jZSBvZiB0aGUgcmVzdWx0cyBkYXRhYmFz
ZSBmb3IgbG9jYWwgZGV2ZWxvcG1lbnQnKQotICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCi0gICAg
ICAgICctLWxvY2FsLWNhc3NhbmRyYScsIGhlbHA9J1VzZSBhIGxvY2FsIENhc3NhbmRyYSBpbnN0
YW5jZScsCi0gICAgICAgIGRlc3Q9J2Nhc3NhbmRyYV9zZXJ2ZXInLCBhY3Rpb249J3N0b3JlX2Nv
bnN0JywgY29uc3Q9J2xvY2FsaG9zdCcsCi0gICAgKQotICAgIHBhcnNlci5hZGRfYXJndW1lbnQo
Ci0gICAgICAgICctLW1vY2stY2Fzc2FuZHJhJywgaGVscD0nVXNlIGEgbW9jayBDYXNzYW5kcmEg
aW5zdGFuY2UnLAotICAgICAgICBkZXN0PSdjYXNzYW5kcmFfc2VydmVyJywgYWN0aW9uPSdzdG9y
ZV9jb25zdCcsIGNvbnN0PSdtb2NrJywKLSAgICApCi0gICAgcGFyc2VyLnNldF9kZWZhdWx0cyhj
YXNzYW5kcmFfc2VydmVyPSdsb2NhbGhvc3QnIGlmIERvY2tlci5pbnN0YWxsZWQoKSBlbHNlICdt
b2NrJykKLQotICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCi0gICAgICAgICctLWxvY2FsLXJlZGlz
JywgaGVscD0nVXNlIGEgbG9jYWwgUmVkaXMgaW5zdGFuY2UnLAotICAgICAgICBkZXN0PSdyZWRp
c19zZXJ2ZXInLCBhY3Rpb249J3N0b3JlX2NvbnN0JywgY29uc3Q9J2xvY2FsaG9zdCcsCi0gICAg
KQotICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCi0gICAgICAgICctLW1vY2stcmVkaXMnLCBoZWxw
PSdVc2UgYSBtb2NrIFJlZGlzIGluc3RhbmNlJywKLSAgICAgICAgZGVzdD0ncmVkaXNfc2VydmVy
JywgYWN0aW9uPSdzdG9yZV9jb25zdCcsIGNvbnN0PSdtb2NrJywKLSAgICApCi0gICAgcGFyc2Vy
LnNldF9kZWZhdWx0cyhyZWRpc19zZXJ2ZXI9J2xvY2FsaG9zdCcgaWYgRG9ja2VyLmluc3RhbGxl
ZCgpIGVsc2UgJ21vY2snKQotCi0gICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKLSAgICAgICAgJy0t
ZHJvcC1rZXlzcGFjZScsIGhlbHA9J0Ryb3AgdGhlIGV4aXN0aW5nIGtleXNwYWNlIGJlZm9yZSBy
dW5uaW5nIHRoZSBwcm9ncmFtJywKLSAgICAgICAgZGVzdD0nZHJvcF9rZXlzcGFjZScsIGFjdGlv
bj0nc3RvcmVfdHJ1ZScsCi0gICAgKQotICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCi0gICAgICAg
ICctLW5vLWRyb3Ata2V5c3BhY2UnLCBoZWxwPSdEbyBOT1QgZHJvcCB0aGUgZXhpc3Rpbmcga2V5
c3BhY2UgYmVmb3JlIHJ1bm5pbmcgdGhlIHByb2dyYW0nLAotICAgICAgICBkZXN0PSdkcm9wX2tl
eXNwYWNlJywgYWN0aW9uPSdzdG9yZV9mYWxzZScsCi0gICAgKQotICAgIHBhcnNlci5zZXRfZGVm
YXVsdHMoZHJvcF9rZXlzcGFjZT1GYWxzZSkKLQotICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCi0g
ICAgICAgICctLWNsZWFyLXJlZGlzJywgaGVscD0nQ2xlYXIgcmVkaXMgYmVmb3JlIHJ1bm5pbmcg
dGhlIGFwcGxpY2F0aW9uJywKLSAgICAgICAgZGVzdD0nY2xlYXJfcmVkaXMnLCBhY3Rpb249J3N0
b3JlX3RydWUnLAotICAgICkKLSAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAotICAgICAgICAnLS1u
by1jbGVhci1yZWRpcycsCi0gICAgICAgIGhlbHA9J0RvIG5vdCBjbGVhciByZWRpcyBiZWZvcmUg
cnVubmluZyB0aGUgYXBwbGljYXRpb24nLAotICAgICAgICBkZXN0PSdjbGVhcl9yZWRpcycsIGFj
dGlvbj0nc3RvcmVfZmFsc2UnLAotICAgICkKLSAgICBwYXJzZXIuc2V0X2RlZmF1bHRzKGNsZWFy
X3JlZGlzPVRydWUpCi0KLSAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAotICAgICAgICAnLS1ndW5p
Y29ybicsIGhlbHA9J1VzZSB0aGUgZ3VuaWNvcm4gd2Vic2VydmVyJywKLSAgICAgICAgZGVzdD0n
Z3VuaWNvcm4nLCBhY3Rpb249J3N0b3JlX3RydWUnLAotICAgICkKLSAgICBwYXJzZXIuYWRkX2Fy
Z3VtZW50KAotICAgICAgICAnLS1uby1ndW5pY29ybicsCi0gICAgICAgIGhlbHA9J0RvIG5vdCB1
c2UgdGhlIGd1bmljb3JuIHdlYnNlcnZlcicsCi0gICAgICAgIGRlc3Q9J2d1bmljb3JuJywgYWN0
aW9uPSdzdG9yZV9mYWxzZScsCi0gICAgKQotICAgIHBhcnNlci5zZXRfZGVmYXVsdHMoZ3VuaWNv
cm49aGFzX2d1bmljb3JuKCkpCi0KLSAgICByZXR1cm4gcGFyc2VyLnBhcnNlX2FyZ3MoKQotCi0K
LWRlZiBkb193b3JrKCk6Ci0gICAgZnJvbSBleGFtcGxlLndvcmtlciBpbXBvcnQgbWFpbgotICAg
IG1haW4oKQotCi0KLWRlZiB3ZWJfYXBwKCk6Ci0gICAgZnJvbSBleGFtcGxlLm1haW4gaW1wb3J0
IG1haW4KLSAgICByZXR1cm4gbWFpbigpCi0KLQotZGVmIGd1bmljb3JuKCk6Ci0gICAgaWYgbm90
IGhhc19ndW5pY29ybigpOgotICAgICAgICBwcmludCgnZ3VuaWNvcm4gaXMgbm90IGluc3RhbGxl
ZCwgcGxlYXNlIHJ1biBgcGlwMyBpbnN0YWxsIGd1bmljb3JuYCcpCi0gICAgICAgIHJldHVybiAx
Ci0KLSAgICAjIFNsaWdodCBkZWxheSBzbyB0aGF0IHRoZSB3b3JrZXIgaXMgc3RhcnRlZCBiZWZv
cmUgdGhlIHdlYnNlcnZlcgotICAgIHRpbWUuc2xlZXAoMikKLSAgICByZXR1cm4gc3VicHJvY2Vz
cy5ydW4oWwotICAgICAgICAncHl0aG9uMycsICcvdXNyL2xvY2FsL2Jpbi9ndW5pY29ybicsCi0g
ICAgICAgICdleGFtcGxlLm1haW46YXBwJywKLSAgICAgICAgJy0tbG9nLWZpbGU9LScsICctLXJl
bG9hZCcsCi0gICAgXSkucmV0dXJuY29kZQotCi0KLWRlZiBtYWluKCk6Ci0gICAgYXJncyA9IHBh
cnNlX2FyZ3VtZW50cygpCi0gICAgd2l0aCBEb2NrZXJJZk5lZWRlZENvbnRleHQoYXJncyk6Ci0g
ICAgICAgIG9zLmVudmlyb25bJ0NBU1NBTkRSQV9TRVJWRVInXSA9IGFyZ3MuY2Fzc2FuZHJhX3Nl
cnZlcgotICAgICAgICBvcy5lbnZpcm9uWydSRURJU19IT1NUJ10gPSBhcmdzLnJlZGlzX3NlcnZl
cgotICAgICAgICBvcy5lbnZpcm9uWydEUk9QX0tFWVNQQUNFJ10gPSAnMScgaWYgYXJncy5kcm9w
X2tleXNwYWNlIGVsc2UgJzAnCi0gICAgICAgIG9zLmVudmlyb25bJ0NSRUFURV9LRVlTUEFDRSdd
ID0gJzEnICAjIFVuY29uZGl0aW9uYWxseSBjcmVhdGUga2V5c3BhY2UgZm9yIHRlc3RpbmcKLQot
ICAgICAgICBpZiBhcmdzLmNsZWFyX3JlZGlzIGFuZCBhcmdzLnJlZGlzX3NlcnZlciAhPSAnbW9j
ayc6Ci0gICAgICAgICAgICBTdHJpY3RSZWRpcyhob3N0PWFyZ3MucmVkaXNfc2VydmVyKS5mbHVz
aGRiKCkKLQotICAgICAgICBpZiBhcmdzLmd1bmljb3JuOgotICAgICAgICAgICAgaWYgJ21vY2sn
IGluIFthcmdzLnJlZGlzX3NlcnZlciwgYXJncy5jYXNzYW5kcmFfc2VydmVyXToKLSAgICAgICAg
ICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ0Nhbm5vdCBydW4gd2l0aCBndW5pY29ybiBhbmQg
bW9jayBkYXRhYmFzZXMsIGFzeW5jaHJvbm91cyB3b3JrZXJzIHJlbHkgb24gdGhlIHJlYWwgZGF0
YWJhc2VzJykKLQotICAgICAgICBmcm9tIGV4YW1wbGUuZW52aXJvbm1lbnQgaW1wb3J0IG1haW4g
YXMgZW52aXJvbm1lbnRfbWFpbgotICAgICAgICBlbnZpcm9ubWVudF9tYWluKCkKLQotICAgICAg
ICBpZiBub3QgYXJncy5ndW5pY29ybjoKLSAgICAgICAgICAgIHdvcmtlciA9IHRocmVhZGluZy5U
aHJlYWQodGFyZ2V0PWRvX3dvcmspCi0gICAgICAgICAgICB3b3JrZXIuZGFlbW9uID0gVHJ1ZQot
ICAgICAgICAgICAgd29ya2VyLnN0YXJ0KCkKLQotICAgICAgICAgICAgcmV0dXJuIHdlYl9hcHAo
KQotCi0gICAgICAgIHdvcmtlciA9IFByb2Nlc3ModGFyZ2V0PWRvX3dvcmspCi0gICAgICAgIHdv
cmtlci5zdGFydCgpCi0KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmV0dXJuIGd1bmljb3Ju
KCkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHdvcmtlci50ZXJtaW5hdGUoKQotICAg
ICAgICAgICAgd29ya2VyLmpvaW4oKQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAg
IHN5cy5leGl0KG1haW4oKSkKClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL3Jlc3VsdHNkYnB5
L3Jlc3VsdHNkYnB5L3J1bgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjpleGVjdXRhYmxlCiMjIC0x
ICswLDAgIyMKLSoKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogVG9vbHMv
cmVzdWx0c2RicHkvcmVzdWx0c2RicHkvcnVuLXRlc3RzCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL3Jl
c3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3J1bi10ZXN0cwkocmV2aXNpb24gMjY1NTMxKQorKysgVG9v
bHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvcnVuLXRlc3RzCShub25leGlzdGVudCkKQEAgLTEs
NzcgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMwotCi0jIENvcHlyaWdodCAoQykgMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIg
QU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotIyBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUgotIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotIyBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotCi1pbXBvcnQgc3lzCi1zeXMuZG9udF93cml0ZV9ieXRlY29kZSA9
IFRydWUKLQotaW1wb3J0IGFyZ3BhcnNlCi1pbXBvcnQgb3MKLWltcG9ydCBzeXMKLWltcG9ydCB1
bml0dGVzdAotCi1mcm9tIGNhc3NhbmRyYS5jcWxlbmdpbmUubWFuYWdlbWVudCBpbXBvcnQgQ1FM
RU5HX0FMTE9XX1NDSEVNQV9NQU5BR0VNRU5UCi0KLWRlZiBtYWluKCk6Ci0gICAgcGFyc2VyID0g
YXJncGFyc2UuQXJndW1lbnRQYXJzZXIoZGVzY3JpcHRpb249J1J1biB1bml0IHRlc3RzIGZvciBy
ZXN1bHRzZGJweScpCi0gICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLXYnLCAnLS12ZXJib3NlJywK
LSAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PUZhbHNlLCBhY3Rpb249J3N0b3JlX3RydWUn
LAotICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J1ZlcmJvc2Ugb3V0cHV0JykKLSAgICBwYXJz
ZXIuYWRkX2FyZ3VtZW50KCctLXN0b3Atb24tZmFpbCcsCi0gICAgICAgICAgICAgICAgICAgICAg
ZGVmYXVsdD1GYWxzZSwgYWN0aW9uPSdzdG9yZV90cnVlJywKLSAgICAgICAgICAgICAgICAgICAg
ICBoZWxwPSdTdG9wIG9uIGZpcnN0IGZhaWwgb3IgZXJyb3InKQotICAgIHBhcnNlci5hZGRfYXJn
dW1lbnQoJ21vZHVsZXNfdG9fdGVzdCcsIG5hcmdzPScqJywKLSAgICAgICAgICAgICAgICAgICAg
ICBoZWxwPSdNb2R1bGVzIHRvIGJlIHRlc3RlZC4gQnkgZGVmYXVsdCwgdGhpcyBpcyB0aGUgZGF0
YWJhc2UsIGZsYXNrX3N1cHBvcnQsIG1vZGVsIGFuZCB2aWV3IG1vZHVsZXMnLAotICAgICAgICAg
ICAgICAgICAgICAgIGRlZmF1bHQ9Wydjb250cm9sbGVyJywgJ2ZsYXNrX3N1cHBvcnQnLCAnbW9k
ZWwnLCAndmlldyddKQotICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1mJywgJy0tZmFzdC10ZXN0
cycsCi0gICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1GYWxzZSwgYWN0aW9uPSdzdG9yZV90
cnVlJywKLSAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdTb21lIHRlc3RzIHJlcXVpcmUgYSBk
b2NrZXIgaW5zdGFuY2UgYW5kIGFyZSBzbG93LCBvcHRpb25hbGx5IHNraXAgdGhlc2UnKQotICAg
IHBhcnNlci5hZGRfYXJndW1lbnQoJy0tbm8td2ViLXNlcnZlcicsCi0gICAgICAgICAgICAgICAg
ICAgICAgICBkZXN0PSd3ZWJfc2VydmVyJywgZGVmYXVsdD1UcnVlLCBhY3Rpb249J3N0b3JlX2Zh
bHNlJywKLSAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J1NvbWUgdGVzdHMgdXNlIGEgRmxh
c2sgd2Vic2VydmVyLCBvcHRpb25hbGx5IHNraXAgdGhlc2UnKQotICAgIHBhcnNlci5hZGRfYXJn
dW1lbnQoJy0tbm8tc2VsZW5pdW0nLAotICAgICAgICAgICAgICAgICAgICAgICAgZGVzdD0nc2Vs
ZW5pdW0nLCBkZWZhdWx0PVRydWUsIGFjdGlvbj0nc3RvcmVfZmFsc2UnLAotICAgICAgICAgICAg
ICAgICAgICAgICAgaGVscD0nU29tZSB0ZXN0cyB1c2UgU2VsZW5pdW0gdG8gdGVzdCB0aGUgVUkg
b2YgdGhlIHNpdGUsIG9wdGlvbmFsbHkgc2tpcCB0aGVzZScpCi0gICAgb3B0aW9ucyA9IHBhcnNl
ci5wYXJzZV9hcmdzKCkKLQotICAgIG9zLmVudmlyb25bJ3Nsb3dfdGVzdHMnXSA9ICcwJyBpZiBv
cHRpb25zLmZhc3RfdGVzdHMgZWxzZSAnMScKLSAgICBvcy5lbnZpcm9uWyd3ZWJfc2VydmVyJ10g
PSAnMScgaWYgb3B0aW9ucy53ZWJfc2VydmVyIGVsc2UgJzAnCi0gICAgb3MuZW52aXJvblsnc2Vs
ZW5pdW0nXSA9ICcxJyBpZiBvcHRpb25zLnNlbGVuaXVtIGVsc2UgJzAnCi0gICAgb3MuZW52aXJv
bltDUUxFTkdfQUxMT1dfU0NIRU1BX01BTkFHRU1FTlRdID0gJzEnCi0KLSAgICByb290ID0gb3Mu
cGF0aC5kaXJuYW1lKG9zLnBhdGguYWJzcGF0aChfX2ZpbGVfXykpCi0KLSAgICBzdWl0ZSA9IHVu
aXR0ZXN0LlRlc3RTdWl0ZSgpCi0gICAgZm9yIG1vZHVsZV9uYW1lIGluIG9wdGlvbnMubW9kdWxl
c190b190ZXN0OgotICAgICAgICBtb2R1bGVfc3VpdGUgPSB1bml0dGVzdC5kZWZhdWx0VGVzdExv
YWRlci5kaXNjb3Zlcihvcy5wYXRoLmpvaW4ocm9vdCwgbW9kdWxlX25hbWUucmVwbGFjZSgnLics
ICcvJykpLCBwYXR0ZXJuPScqdW5pdHRlc3QucHknLCB0b3BfbGV2ZWxfZGlyPW9zLnBhdGguam9p
bihyb290LCAnLi4nKSkKLSAgICAgICAgZm9yIHRzdCBpbiBtb2R1bGVfc3VpdGUgaWYgbW9kdWxl
X3N1aXRlIGVsc2UgW106Ci0gICAgICAgICAgICBzdWl0ZS5hZGRUZXN0KHRzdCkKLQotICAgIGlm
IHN1aXRlLmNvdW50VGVzdENhc2VzKCkgPT0gMDoKLSAgICAgICAgcmFpc2UgUnVudGltZUVycm9y
KCdObyB0ZXN0cyBtYXRjaGluZy4uLicpCi0KLSAgICByZXN1bHQgPSB1bml0dGVzdC5UZXh0VGVz
dFJ1bm5lcih2ZXJib3NpdHk9MiBpZiBvcHRpb25zLnZlcmJvc2UgZWxzZSAxLCBmYWlsZmFzdD1v
cHRpb25zLnN0b3Bfb25fZmFpbCwgYnVmZmVyPW5vdCBvcHRpb25zLnZlcmJvc2UpLnJ1bihzdWl0
ZSkKLSAgICByZXR1cm4gbGVuKHJlc3VsdC5lcnJvcnMpCi0KLWlmIF9fbmFtZV9fID09ICdfX21h
aW5fXyc6Ci0gICAgc3lzLmV4aXQobWFpbigpKQoKUHJvcGVydHkgY2hhbmdlcyBvbjogVG9vbHMv
cmVzdWx0c2RicHkvcmVzdWx0c2RicHkvcnVuLXRlc3RzCl9fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3Zu
OmV4ZWN1dGFibGUKIyMgLTEgKzAsMCAjIwotKgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3Bl
cnR5CkluZGV4OiBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS92aWV3L19faW5pdF9fLnB5
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvX19pbml0
X18ucHkJKHJldmlzaW9uIDI2NTUzMSkKKysrIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5
L3ZpZXcvX19pbml0X18ucHkJKG5vbmV4aXN0ZW50KQpAQCAtMSArMCwwIEBACi0jIERPIE5PVEhJ
TkcKSW5kZXg6IFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvYXJjaGl2ZV92aWV3
LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvYXJj
aGl2ZV92aWV3LnB5CShyZXZpc2lvbiAyNjU1MzEpCisrKyBUb29scy9yZXN1bHRzZGJweS9yZXN1
bHRzZGJweS92aWV3L2FyY2hpdmVfdmlldy5weQkobm9uZXhpc3RlbnQpCkBAIC0xLDEzNyArMCww
IEBACi0jIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0j
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0jIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUgotIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotIyBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LAotIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1pbXBvcnQganNvbgot
Ci1mcm9tIGZsYXNrIGltcG9ydCBhYm9ydCwganNvbmlmeSwgcmVxdWVzdCwgUmVzcG9uc2UKLWZy
b20gcmVzdWx0c2RicHkuY29udHJvbGxlci5jb21taXRfY29udHJvbGxlciBpbXBvcnQgdXVpZF9y
YW5nZV9mb3JfcXVlcnksIEhhc0NvbW1pdENvbnRleHQKLWZyb20gcmVzdWx0c2RicHkuY29udHJv
bGxlci5jb25maWd1cmF0aW9uX2NvbnRyb2xsZXIgaW1wb3J0IGNvbmZpZ3VyYXRpb25fZm9yX3F1
ZXJ5Ci1mcm9tIHJlc3VsdHNkYnB5LmNvbnRyb2xsZXIuc3VpdGVfY29udHJvbGxlciBpbXBvcnQg
dGltZV9yYW5nZV9mb3JfcXVlcnkKLWZyb20gcmVzdWx0c2RicHkuZmxhc2tfc3VwcG9ydC51dGls
IGltcG9ydCBBc3NlcnRSZXF1ZXN0LCBib29sZWFuX3F1ZXJ5LCBjYWNoZV9mb3IsIGxpbWl0X2Zv
cl9xdWVyeSwgcXVlcnlfYXNfa3dhcmdzLCBxdWVyeV9hc19zdHJpbmcKLWZyb20gcmVzdWx0c2Ri
cHkudmlldy5zaXRlX21lbnUgaW1wb3J0IFNpdGVNZW51Ci0KLQotY2xhc3MgQXJjaGl2ZVZpZXco
SGFzQ29tbWl0Q29udGV4dCk6Ci0gICAgREVGQVVMVF9MSU1JVCA9IDEwCi0gICAgRk9STUFUID0g
ZGljdCgKLSAgICAgICAganNvbj0nYXBwbGljYXRpb24vanNvbicsCi0gICAgICAgIGNzcz0ndGV4
dC9jc3MnLAotICAgICAgICBodG1sPSd0ZXh0L2h0bWwnLAotICAgICAgICB0eHQ9J3RleHQvcGxh
aW4nLAotICAgICAgICBwbmc9J2ltYWdlL3BuZycsCi0gICAgICAgIGpwZWc9J2ltYWdlL2pwZWcn
LAotICAgICkKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBlbnZpcm9ubWVudCwgYXJjaGl2ZV9j
b250cm9sbGVyLCBzaXRlX21lbnU9Tm9uZSk6Ci0gICAgICAgIHN1cGVyKEFyY2hpdmVWaWV3LCBz
ZWxmKS5fX2luaXRfXyhhcmNoaXZlX2NvbnRyb2xsZXIuY29tbWl0X2NvbnRleHQpCi0gICAgICAg
IHNlbGYuZW52aXJvbm1lbnQgPSBlbnZpcm9ubWVudAotCi0gICAgICAgIHNlbGYuYXJjaGl2ZV9j
b250ZXh0ID0gYXJjaGl2ZV9jb250cm9sbGVyLmFyY2hpdmVfY29udGV4dAotICAgICAgICBzZWxm
LnVwbG9hZF9jb250ZXh0ID0gYXJjaGl2ZV9jb250cm9sbGVyLnVwbG9hZF9jb250ZXh0Ci0gICAg
ICAgIHNlbGYuc2l0ZV9tZW51ID0gc2l0ZV9tZW51Ci0KLSAgICBAU2l0ZU1lbnUucmVuZGVyX3dp
dGhfc2l0ZV9tZW51KCkKLSAgICBkZWYgbGlzdChzZWxmLCBwYXRoLCB2YWx1ZXMsICoqa3dhcmdz
KToKLSAgICAgICAgcmV0dXJuIHNlbGYuZW52aXJvbm1lbnQuZ2V0X3RlbXBsYXRlKCdhcmNoaXZl
X2xpc3QuaHRtbCcpLnJlbmRlcigKLSAgICAgICAgICAgIHRpdGxlPWYne3NlbGYuc2l0ZV9tZW51
LnRpdGxlfTogYXJjaGl2ZS9me3BhdGggb3IgIiJ9JywKLSAgICAgICAgICAgIHBhdGg9cGF0aCBv
ciAnJywgdmFsdWVzPXZhbHVlcywKLSAgICAgICAgICAgIHF1ZXJ5PXF1ZXJ5X2FzX3N0cmluZygp
LAotICAgICAgICAgICAgKiprd2FyZ3MpCi0KLSAgICBAcXVlcnlfYXNfa3dhcmdzKCkKLSAgICBA
dXVpZF9yYW5nZV9mb3JfcXVlcnkoKQotICAgIEBsaW1pdF9mb3JfcXVlcnkoREVGQVVMVF9MSU1J
VCkKLSAgICBAY29uZmlndXJhdGlvbl9mb3JfcXVlcnkoKQotICAgIEB0aW1lX3JhbmdlX2Zvcl9x
dWVyeSgpCi0gICAgQGNhY2hlX2Zvcihob3Vycz0xMikKLSAgICBkZWYgZXh0cmFjdCgKLSAgICAg
ICAgc2VsZiwgcGF0aD1Ob25lLCBmb3JtYXQ9Tm9uZSwKLSAgICAgICAgc3VpdGU9Tm9uZSwgY29u
ZmlndXJhdGlvbnM9Tm9uZSwgcmVjZW50PU5vbmUsCi0gICAgICAgIGJyYW5jaD1Ob25lLCBiZWdp
bj1Ob25lLCBlbmQ9Tm9uZSwKLSAgICAgICAgYmVnaW5fcXVlcnlfdGltZT1Ob25lLCBlbmRfcXVl
cnlfdGltZT1Ob25lLAotICAgICAgICBsaW1pdD1Ob25lLCAqKmt3YXJncwotICAgICk6Ci0gICAg
ICAgIEFzc2VydFJlcXVlc3QuaXNfdHlwZShbJ0dFVCddKQotICAgICAgICBBc3NlcnRSZXF1ZXN0
LnF1ZXJ5X2t3YXJnc19lbXB0eSgqKmt3YXJncykKLSAgICAgICAgcmVjZW50ID0gYm9vbGVhbl9x
dWVyeSgqcmVjZW50KVswXSBpZiByZWNlbnQgZWxzZSBUcnVlCi0KLSAgICAgICAgaWYgbm90IHN1
aXRlOgotICAgICAgICAgICAgc3VpdGVzID0gc2V0KCkKLSAgICAgICAgICAgIGZvciBjb25maWdf
c3VpdGVzIGluIHNlbGYudXBsb2FkX2NvbnRleHQuZmluZF9zdWl0ZXMoY29uZmlndXJhdGlvbnM9
Y29uZmlndXJhdGlvbnMsIHJlY2VudD1yZWNlbnQpLnZhbHVlcygpOgotICAgICAgICAgICAgICAg
IFtzdWl0ZXMuYWRkKHN1aXRlKSBmb3Igc3VpdGUgaW4gY29uZmlnX3N1aXRlc10KLSAgICAgICAg
ZWxzZToKLSAgICAgICAgICAgIHN1aXRlcyA9IHNldChzdWl0ZSkKLQotICAgICAgICByZXN1bHQg
PSBOb25lCi0gICAgICAgIHdpdGggc2VsZi5hcmNoaXZlX2NvbnRleHQsIHNlbGYudXBsb2FkX2Nv
bnRleHQ6Ci0gICAgICAgICAgICBmb3Igc3VpdGUgaW4gc3VpdGVzOgotICAgICAgICAgICAgICAg
IGZvciBmaWxlcyBpbiBzZWxmLmFyY2hpdmVfY29udGV4dC5maWxlKAotICAgICAgICAgICAgICAg
ICAgICBwYXRoPXBhdGgsCi0gICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25zPWNvbmZp
Z3VyYXRpb25zLCBzdWl0ZT1zdWl0ZSwgYnJhbmNoPWJyYW5jaFswXSwKLSAgICAgICAgICAgICAg
ICAgICAgYmVnaW49YmVnaW4sIGVuZD1lbmQsIHJlY2VudD1yZWNlbnQsIGxpbWl0PTIsCi0gICAg
ICAgICAgICAgICAgICAgIGJlZ2luX3F1ZXJ5X3RpbWU9YmVnaW5fcXVlcnlfdGltZSwgZW5kX3F1
ZXJ5X3RpbWU9ZW5kX3F1ZXJ5X3RpbWUsCi0gICAgICAgICAgICAgICAgKS52YWx1ZXMoKToKLSAg
ICAgICAgICAgICAgICAgICAgZm9yIGZpbGUgaW4gZmlsZXM6Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBjYW5kaWRhdGUgPSBmaWxlLmdldCgnZmlsZScpCi0gICAgICAgICAgICAgICAgICAgICAg
ICBpZiBub3QgY2FuZGlkYXRlOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgcmVzdWx0OgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoY2FuZGlkYXRlLCBsaXN0KToKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gc2V0KGNhbmRpZGF0ZSkKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXN1bHQgPSBjYW5kaWRhdGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQot
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShjYW5kaWRhdGUsIGxpc3QpIGFu
ZCBpc2luc3RhbmNlKHJlc3VsdCwgc2V0KToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXN1bHQgfD0gc2V0KGNhbmRpZGF0ZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250
aW51ZQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgcmVzdWx0ID09IGNhbmRpZGF0ZToKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgICAgICAg
ICAgYWJvcnQoNDAzLCAnTXVsdGlwbGUgYXJjaGl2ZXMgbWF0Y2ggd2l0aCBkaWZmZXJlbnQgY29u
dGVudCcpCi0KLSAgICAgICAgaWYgbm90IHJlc3VsdDoKLSAgICAgICAgICAgIGFib3J0KDQwNCwg
ZiJObyBhcmNoaXZlIGNvbnRlbnR7JyBhdCAnICsgcGF0aCBpZiBwYXRoIGVsc2UgJyd9IikKLQot
ICAgICAgICBpZiBpc2luc3RhbmNlKHJlc3VsdCwgc2V0KToKLSAgICAgICAgICAgIHJldHVybiBz
ZWxmLmxpc3QocGF0aD1wYXRoLCB2YWx1ZXM9c29ydGVkKHJlc3VsdCkpCi0KLSAgICAgICAgbWlt
ZXR5cGUgPSBzZWxmLkZPUk1BVC5nZXQoZm9ybWF0KQotICAgICAgICBpZiBub3QgbWltZXR5cGUg
YW5kICcuJyBpbiBwYXRoOgotICAgICAgICAgICAgbWltZXR5cGUgPSBzZWxmLkZPUk1BVC5nZXQo
cGF0aC5zcGxpdCgnLicpWy0xXSkKLSAgICAgICAgbWltZXR5cGUgPSBtaW1ldHlwZSBvciAndGV4
dC9wbGFpbicKLQotICAgICAgICAjIEEgYml0IG9mIGEgaGFjayB0byBhZGQgdGhlIHJpZ2h0IHF1
ZXJ5IGFyZ3VtZW50cyBpbnRvIHJlc3VsdHMuaHRtbAotICAgICAgICAjIElkZWFsbHksIHRoaXMg
c2hvdWxkIGJlIGRvbmUgd2l0aCBjaGFuZ2VzIHRvIHJlc3VsdHMuaHRtbCwgYnV0IHdlCi0gICAg
ICAgICMgaGF2ZSBsZWdhY3kgcmVzdWx0cyB0byBoYW5kbGUuCi0gICAgICAgIGlmIG1pbWV0eXBl
ID09ICd0ZXh0L2h0bWwnOgotICAgICAgICAgICAgcXVlcnkgPSBxdWVyeV9hc19zdHJpbmcoKQot
ICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnJlcGxhY2UoCi0gICAgICAgICAgICAgICAgImhy
ZWY9XCInICsgdGVzdFByZWZpeCArIHN1ZmZpeCArICdcIiIuZW5jb2RlKCd1dGYtOCcpLAotICAg
ICAgICAgICAgICAgIGYiaHJlZj1cIicgKyB0ZXN0UHJlZml4ICsgc3VmZml4ICsgJ3txdWVyeX0n
ICsgJ1wiIi5lbmNvZGUoJ3V0Zi04JyksCi0gICAgICAgICAgICApCi0KLSAgICAgICAgICAgIGZv
ciBpbmNsdWRlX3RvX3N0cmlwIGluIFsnanMvc3RhdHVzLWJ1YmJsZS5qcycsICdjb2RlLXJldmll
dy5qcz92ZXJzaW9uPTQ4J106Ci0gICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnJlcGxh
Y2UoZic8c2NyaXB0IHNyYz0ie2luY2x1ZGVfdG9fc3RyaXB9Ij48L3NjcmlwdD4nLmVuY29kZSgn
dXRmLTgnKSwgJycuZW5jb2RlKCd1dGYtOCcpKQotCi0gICAgICAgICAgICBpZiAocXVlcnkpOgot
ICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC5yZXBsYWNlKCJzcmMgKz0gJz9mb3JtYXQ9
dHh0JyIuZW5jb2RlKCd1dGYtOCcpLCAic3JjICs9ICcmZm9ybWF0PXR4dCciLmVuY29kZSgndXRm
LTgnKSkKLQotICAgICAgICByZXR1cm4gUmVzcG9uc2UocmVzdWx0LCBtaW1ldHlwZT1taW1ldHlw
ZSBvciAndGV4dC9wbGFpbicpCkluZGV4OiBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS92
aWV3L2FyY2hpdmVfdmlld191bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9yZXN1bHRz
ZGJweS9yZXN1bHRzZGJweS92aWV3L2FyY2hpdmVfdmlld191bml0dGVzdC5weQkocmV2aXNpb24g
MjY1NTMxKQorKysgVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9hcmNoaXZlX3Zp
ZXdfdW5pdHRlc3QucHkJKG5vbmV4aXN0ZW50KQpAQCAtMSw3NiArMCwwIEBACi0jIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgot
IyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUgotIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotIyBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1pbXBvcnQgYmFzZTY0Ci1pbXBvcnQganNvbgot
aW1wb3J0IHRpbWUKLQotZnJvbSBmYWtlcmVkaXMgaW1wb3J0IEZha2VTdHJpY3RSZWRpcwotZnJv
bSByZXN1bHRzZGJweS5jb250cm9sbGVyLmNvbW1pdCBpbXBvcnQgQ29tbWl0Ci1mcm9tIHJlc3Vs
dHNkYnB5LmNvbnRyb2xsZXIuY29uZmlndXJhdGlvbiBpbXBvcnQgQ29uZmlndXJhdGlvbgotZnJv
bSByZXN1bHRzZGJweS5tb2RlbC5jb25maWd1cmF0aW9uX2NvbnRleHRfdW5pdHRlc3QgaW1wb3J0
IENvbmZpZ3VyYXRpb25Db250ZXh0VGVzdAotZnJvbSByZXN1bHRzZGJweS5tb2RlbC5tb2NrX2Nh
c3NhbmRyYV9jb250ZXh0IGltcG9ydCBNb2NrQ2Fzc2FuZHJhQ29udGV4dAotZnJvbSByZXN1bHRz
ZGJweS5tb2RlbC5tb2NrX21vZGVsX2ZhY3RvcnkgaW1wb3J0IE1vY2tNb2RlbEZhY3RvcnkKLWZy
b20gcmVzdWx0c2RicHkubW9kZWwubW9ja19yZXBvc2l0b3J5IGltcG9ydCBNb2NrU3Rhc2hSZXBv
c2l0b3J5LCBNb2NrU1ZOUmVwb3NpdG9yeQotZnJvbSByZXN1bHRzZGJweS5tb2RlbC53YWl0X2Zv
cl9kb2NrZXJfdGVzdF9jYXNlIGltcG9ydCBXYWl0Rm9yRG9ja2VyVGVzdENhc2UKLWZyb20gcmVz
dWx0c2RicHkudmlldy52aWV3X3JvdXRlc191bml0dGVzdCBpbXBvcnQgV2ViU2l0ZVRlc3RDYXNl
Ci1mcm9tIHNlbGVuaXVtLndlYmRyaXZlci5zdXBwb3J0LnNlbGVjdCBpbXBvcnQgU2VsZWN0Ci0K
LQotY2xhc3MgQXJjaGl2ZVZpZXdVbml0dGVzdChXZWJTaXRlVGVzdENhc2UpOgotICAgIGRlZiBy
ZWdpc3Rlcl9hcmNoaXZlKHNlbGYsIGNsaWVudCk6Ci0gICAgICAgIHJlc3BvbnNlID0gY2xpZW50
LnBvc3QoCi0gICAgICAgICAgICBzZWxmLlVSTCArICcvYXBpL3VwbG9hZC9hcmNoaXZlJywKLSAg
ICAgICAgICAgIGRhdGE9ZGljdCgKLSAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uPWpzb24u
ZHVtcHMoQ29uZmlndXJhdGlvbkNvbnRleHRUZXN0LkNPTkZJR1VSQVRJT05TWzBdLCBjbHM9Q29u
ZmlndXJhdGlvbi5FbmNvZGVyKSwKLSAgICAgICAgICAgICAgICBzdWl0ZT0nbGF5b3V0LXRlc3Rz
JywKLSAgICAgICAgICAgICAgICBjb21taXRzPWpzb24uZHVtcHMoW01vY2tTdGFzaFJlcG9zaXRv
cnkuc2FmYXJpKCkuY29tbWl0X2Zvcl9pZCgnYmI2YmRhNWYnKSwgTW9ja1NWTlJlcG9zaXRvcnku
d2Via2l0KCkuY29tbWl0X2Zvcl9pZCgyMzY1NDIpXSwgY2xzPUNvbW1pdC5FbmNvZGVyKSwKLSAg
ICAgICAgICAgICksCi0gICAgICAgICAgICBmaWxlcz1kaWN0KGZpbGU9YmFzZTY0LmI2NGRlY29k
ZShNb2NrTW9kZWxGYWN0b3J5LkFSQ0hJVkVfWklQKSksCi0gICAgICAgICkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChyZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQotCi0gICAgQFdhaXRGb3JE
b2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRp
cywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCi0gICAgQFdlYlNpdGVUZXN0
Q2FzZS5kZWNvcmF0b3IoKQotICAgIGRlZiB0ZXN0X2RpcmVjdG9yeShzZWxmLCBkcml2ZXIsIGNs
aWVudCwgKiprd2FyZ3MpOgotICAgICAgICBzZWxmLnJlZ2lzdGVyX2FyY2hpdmUoY2xpZW50KQot
ICAgICAgICBkcml2ZXIuZ2V0KHNlbGYuVVJMICsgJy9hcmNoaXZlJykKLQotICAgICAgICB0aXRs
ZXMgPSBkcml2ZXIuZmluZF9lbGVtZW50c19ieV9jbGFzc19uYW1lKCd0aXRsZScpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwobGVuKHRpdGxlcyksIDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwodGl0bGVzWzFdLnRleHQuc3RyaXAoKSwgJy8nKQotCi0gICAgICAgIHBhdGhfbGlzdCA9IGRy
aXZlci5maW5kX2VsZW1lbnRfYnlfaWQoJ3BhdGhzJykKLSAgICAgICAgc2VsZi5hc3NlcnRJc05v
dE5vbmUocGF0aF9saXN0KQotICAgICAgICBmaWxlcyA9IHBhdGhfbGlzdC5maW5kX2VsZW1lbnRz
X2J5X2NsYXNzX25hbWUoJ2l0ZW0nKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihmaWxl
cyksIDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsZXNbMF0udGV4dC5zdHJpcCgpLCAn
ZmlsZS50eHQnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVzWzFdLnRleHQuc3RyaXAo
KSwgJ2luZGV4Lmh0bWwnKQotCi0gICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25v
X2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nh
c3NhbmRyYUNvbnRleHQpCi0gICAgQFdlYlNpdGVUZXN0Q2FzZS5kZWNvcmF0b3IoKQotICAgIGRl
ZiB0ZXN0X2ZpbGUoc2VsZiwgZHJpdmVyLCBjbGllbnQsICoqa3dhcmdzKToKLSAgICAgICAgc2Vs
Zi5yZWdpc3Rlcl9hcmNoaXZlKGNsaWVudCkKLSAgICAgICAgcmVzcG9uc2UgPSBjbGllbnQuZ2V0
KHNlbGYuVVJMICsgJy9hcmNoaXZlL2ZpbGUudHh0JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChyZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJl
c3BvbnNlLnRleHQsICdkYXRhJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5o
ZWFkZXJzLmdldCgnQ2FjaGUtQ29udHJvbCcpLCAncHVibGljLG1heC1hZ2U9NDMyMDAnKQpJbmRl
eDogVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9jaV92aWV3LnB5Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvY2lfdmlldy5weQkocmV2
aXNpb24gMjY1NTMxKQorKysgVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9jaV92
aWV3LnB5CShub25leGlzdGVudCkKQEAgLTEsMTAxICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUgotIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0jIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSCi0jIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0jIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0KLWZyb20gZmxhc2sgaW1wb3J0IGFib3J0LCByZWRpcmVjdCwg
cmVxdWVzdAotZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVyLmNvbW1pdCBpbXBvcnQgQ29tbWl0
Ci1mcm9tIHJlc3VsdHNkYnB5LmZsYXNrX3N1cHBvcnQudXRpbCBpbXBvcnQgQXNzZXJ0UmVxdWVz
dCwgcXVlcnlfYXNfa3dhcmdzCi1mcm9tIHJlc3VsdHNkYnB5LnZpZXcuc2l0ZV9tZW51IGltcG9y
dCBTaXRlTWVudQotCi0KLWNsYXNzIENJVmlldyhvYmplY3QpOgotICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCBlbnZpcm9ubWVudCwgY2lfY29udHJvbGxlciwgc2l0ZV9tZW51PU5vbmUpOgotICAgICAg
ICBzZWxmLmVudmlyb25tZW50ID0gZW52aXJvbm1lbnQKLSAgICAgICAgc2VsZi5jaV9jb250cm9s
bGVyID0gY2lfY29udHJvbGxlcgotICAgICAgICBzZWxmLnNpdGVfbWVudSA9IHNpdGVfbWVudQot
Ci0gICAgQHF1ZXJ5X2FzX2t3YXJncygpCi0gICAgZGVmIHF1ZXVlKHNlbGYsICoqa3dhcmdzKToK
LSAgICAgICAgcXVldWVfdXJscyA9IHNlbGYuY2lfY29udHJvbGxlci51cmxzX2Zvcl9xdWV1ZSgq
Kmt3YXJncykKLQotICAgICAgICBjYW5kaWRhdGUgPSBOb25lCi0gICAgICAgIGZvciBlbGVtZW50
IGluIHF1ZXVlX3VybHM6Ci0gICAgICAgICAgICBpZiBub3QgY2FuZGlkYXRlOgotICAgICAgICAg
ICAgICAgIGNhbmRpZGF0ZSA9IGVsZW1lbnRbJ3VybCddCi0gICAgICAgICAgICBlbGlmIGNhbmRp
ZGF0ZSAhPSBlbGVtZW50Wyd1cmwnXToKLSAgICAgICAgICAgICAgICBhYm9ydCg0MDQsIGRlc2Ny
aXB0aW9uPSdUb28gbWFueSBlbGlnaWJsZSBxdWV1ZXMnKQotCi0gICAgICAgIGlmIG5vdCBjYW5k
aWRhdGU6Ci0gICAgICAgICAgICBhYm9ydCg0MDQsIGRlc2NyaXB0aW9uPSdObyBxdWV1ZSBVUkxz
IGZvciBwcm92aWRlZCBhcmd1bWVudHMnKQotICAgICAgICByZXR1cm4gcmVkaXJlY3QoY2FuZGlk
YXRlKQotCi0gICAgQHF1ZXJ5X2FzX2t3YXJncygpCi0gICAgZGVmIHdvcmtlcihzZWxmLCAqKmt3
YXJncyk6Ci0gICAgICAgIGFsbF91cmxzID0gc2VsZi5jaV9jb250cm9sbGVyLnVybHNfZm9yX2J1
aWxkcygqKmt3YXJncykKLSAgICAgICAgd29ya2VyX3VybHMgPSBbXQotICAgICAgICBmb3IgcGFp
ciBpbiBhbGxfdXJsczoKLSAgICAgICAgICAgIHVybHNfZm9yX2NvbmZpZyA9IFtdCi0gICAgICAg
ICAgICBmb3IgdXJscyBpbiBwYWlyWyd1cmxzJ106Ci0gICAgICAgICAgICAgICAgaWYgbm90IHVy
bHMuZ2V0KCd3b3JrZXInLCBOb25lKToKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAg
ICAgICAgICAgICAgICB1cmxzX2Zvcl9jb25maWcuYXBwZW5kKGRpY3QoCi0gICAgICAgICAgICAg
ICAgICAgIHdvcmtlcj11cmxzWyd3b3JrZXInXSwKLSAgICAgICAgICAgICAgICAgICAgdXVpZD11
cmxzWyd1dWlkJ10sCi0gICAgICAgICAgICAgICAgICAgIHN0YXJ0X3RpbWU9dXJsc1snc3RhcnRf
dGltZSddLAotICAgICAgICAgICAgICAgICkpCi0gICAgICAgICAgICBpZiB1cmxzX2Zvcl9jb25m
aWc6Ci0gICAgICAgICAgICAgICAgd29ya2VyX3VybHMuYXBwZW5kKGRpY3QoY29uZmlndXJhdGlv
bj1kaWN0KHBhaXJbJ2NvbmZpZ3VyYXRpb24nXSksIHVybHM9dXJsc19mb3JfY29uZmlnKSkKLQot
ICAgICAgICBpZiBsZW4od29ya2VyX3VybHMpID09IDA6Ci0gICAgICAgICAgICBhYm9ydCg0MDQs
IGRlc2NyaXB0aW9uPSdObyB3b3JrZXIgVVJMcyBmb3IgcHJvdmlkZWQgYXJndW1lbnRzJykKLSAg
ICAgICAgaWYgbGVuKHdvcmtlcl91cmxzKSA9PSAxIGFuZCBsZW4od29ya2VyX3VybHNbMF1bJ3Vy
bHMnXSkgPT0gMToKLSAgICAgICAgICAgIHJldHVybiByZWRpcmVjdCh3b3JrZXJfdXJsc1swXVsn
dXJscyddWzBdWyd3b3JrZXInXSkKLQotICAgICAgICBhYm9ydCg0MDQsIGRlc2NyaXB0aW9uPSdU
b28gbWFueSBlbGlnaWJsZSB3b3JrZXJzJykKLQotICAgIEBxdWVyeV9hc19rd2FyZ3MoKQotICAg
IGRlZiBidWlsZChzZWxmLCAqKmt3YXJncyk6Ci0gICAgICAgIGFsbF91cmxzID0gc2VsZi5jaV9j
b250cm9sbGVyLnVybHNfZm9yX2J1aWxkcygqKmt3YXJncykKLSAgICAgICAgd29ya2VyX3VybHMg
PSBbXQotICAgICAgICBmb3IgcGFpciBpbiBhbGxfdXJsczoKLSAgICAgICAgICAgIHVybHNfZm9y
X2NvbmZpZyA9IFtdCi0gICAgICAgICAgICBmb3IgdXJscyBpbiBwYWlyWyd1cmxzJ106Ci0gICAg
ICAgICAgICAgICAgaWYgbm90IHVybHMuZ2V0KCdidWlsZCcsIE5vbmUpOgotICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgIHVybHNfZm9yX2NvbmZpZy5hcHBlbmQo
ZGljdCgKLSAgICAgICAgICAgICAgICAgICAgYnVpbGQ9dXJsc1snYnVpbGQnXSwKLSAgICAgICAg
ICAgICAgICAgICAgdXVpZD11cmxzWyd1dWlkJ10sCi0gICAgICAgICAgICAgICAgICAgIHN0YXJ0
X3RpbWU9dXJsc1snc3RhcnRfdGltZSddLAotICAgICAgICAgICAgICAgICkpCi0gICAgICAgICAg
ICBpZiB1cmxzX2Zvcl9jb25maWc6Ci0gICAgICAgICAgICAgICAgd29ya2VyX3VybHMuYXBwZW5k
KGRpY3QoY29uZmlndXJhdGlvbj1kaWN0KHBhaXJbJ2NvbmZpZ3VyYXRpb24nXSksIHVybHM9dXJs
c19mb3JfY29uZmlnKSkKLQotICAgICAgICBjYW5kaWRhdGUgPSBOb25lCi0gICAgICAgIGZvciBl
bGVtZW50IGluIHdvcmtlcl91cmxzOgotICAgICAgICAgICAgZm9yIGJ1aWxkIGluIGVsZW1lbnRb
J3VybHMnXToKLSAgICAgICAgICAgICAgICBpZiBub3QgY2FuZGlkYXRlOgotICAgICAgICAgICAg
ICAgICAgICBjYW5kaWRhdGUgPSBidWlsZFsnYnVpbGQnXQotICAgICAgICAgICAgICAgIGVsaWYg
Y2FuZGlkYXRlICE9IGJ1aWxkWydidWlsZCddOgotICAgICAgICAgICAgICAgICAgICBhYm9ydCg0
MDQsIGRlc2NyaXB0aW9uPSdUb28gbWFueSBlbGlnaWJsZSBidWlsZHMnKQotCi0gICAgICAgIGlm
IG5vdCBjYW5kaWRhdGU6Ci0gICAgICAgICAgICBhYm9ydCg0MDQsIGRlc2NyaXB0aW9uPSdObyBx
dWV1ZSBVUkxzIGZvciBwcm92aWRlZCBhcmd1bWVudHMnKQotICAgICAgICByZXR1cm4gcmVkaXJl
Y3QoY2FuZGlkYXRlKQpJbmRleDogVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9j
b21taXRfdmlldy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJw
eS92aWV3L2NvbW1pdF92aWV3LnB5CShyZXZpc2lvbiAyNjU1MzEpCisrKyBUb29scy9yZXN1bHRz
ZGJweS9yZXN1bHRzZGJweS92aWV3L2NvbW1pdF92aWV3LnB5CShub25leGlzdGVudCkKQEAgLTEs
OTQgKzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAotIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0jIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwK
LSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IKLSMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSMgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwKLSMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotZnJvbSBm
bGFzayBpbXBvcnQgYWJvcnQsIHJlZGlyZWN0LCByZXF1ZXN0Ci1mcm9tIHJlc3VsdHNkYnB5LmNv
bnRyb2xsZXIuY29tbWl0IGltcG9ydCBDb21taXQKLWZyb20gcmVzdWx0c2RicHkuZmxhc2tfc3Vw
cG9ydC51dGlsIGltcG9ydCBBc3NlcnRSZXF1ZXN0LCBxdWVyeV9hc19rd2FyZ3MKLWZyb20gcmVz
dWx0c2RicHkudmlldy5zaXRlX21lbnUgaW1wb3J0IFNpdGVNZW51Ci0KLQotY2xhc3MgQ29tbWl0
VmlldyhvYmplY3QpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBlbnZpcm9ubWVudCwgY29tbWl0
X2NvbnRyb2xsZXIsIHNpdGVfbWVudT1Ob25lKToKLSAgICAgICAgc2VsZi5lbnZpcm9ubWVudCA9
IGVudmlyb25tZW50Ci0gICAgICAgIHNlbGYuY29tbWl0X2NvbnRleHQgPSBjb21taXRfY29udHJv
bGxlci5jb21taXRfY29udGV4dAotICAgICAgICBzZWxmLmNvbW1pdF9jb250cm9sbGVyID0gY29t
bWl0X2NvbnRyb2xsZXIKLSAgICAgICAgc2VsZi5zaXRlX21lbnUgPSBzaXRlX21lbnUKLQotICAg
IEBxdWVyeV9hc19rd2FyZ3MoKQotICAgIGRlZiBfc2luZ2xlX2NvbW1pdChzZWxmLCBsaW1pdD1O
b25lLCAqKmt3YXJncyk6Ci0gICAgICAgIEFzc2VydFJlcXVlc3QuaXNfdHlwZSgpCi0gICAgICAg
IEFzc2VydFJlcXVlc3QucXVlcnlfa3dhcmdzX2VtcHR5KGxpbWl0PWxpbWl0KQotCi0gICAgICAg
IHdpdGggc2VsZi5jb21taXRfY29udGV4dDoKLSAgICAgICAgICAgIGNvbW1pdHMgPSBzZWxmLmNv
bW1pdF9jb250cm9sbGVyLl9maW5kKCoqa3dhcmdzKQotICAgICAgICAgICAgaWYgbm90IGNvbW1p
dHM6Ci0gICAgICAgICAgICAgICAgYWJvcnQoNDA0LCBkZXNjcmlwdGlvbj0nTm8gY29tbWl0cyBm
b3VuZCBtYXRjaGluZyB0aGUgc3BlY2lmaWVkIGNyaXRlcmlhJykKLSAgICAgICAgICAgIGlmIGxl
bihjb21taXRzKSA+IDE6Ci0gICAgICAgICAgICAgICAgYWJvcnQoNDA0LCBkZXNjcmlwdGlvbj1m
J3tsZW4oY29tbWl0cyl9IGNvbW1pdHMgZm91bmQgbWF0Y2hpbmcgdGhlIHNwZWNpZmllZCBjcml0
ZXJpYScpCi0gICAgICAgICAgICByZXR1cm4gY29tbWl0c1swXQotCi0gICAgQFNpdGVNZW51LnJl
bmRlcl93aXRoX3NpdGVfbWVudSgpCi0gICAgZGVmIGNvbW1pdChzZWxmLCAqKmt3YXJncyk6Ci0g
ICAgICAgIHdpdGggc2VsZi5jb21taXRfY29udGV4dDoKLSAgICAgICAgICAgIGNvbW1pdCA9IHNl
bGYuX3NpbmdsZV9jb21taXQoKQotICAgICAgICAgICAgcmVwb3NpdG9yaWVzID0gbGlzdChzZWxm
LmNvbW1pdF9jb250ZXh0LnJlcG9zaXRvcmllcy5rZXlzKCkpCi0gICAgICAgICAgICByZXBvc2l0
b3JpZXMucmVtb3ZlKGNvbW1pdC5yZXBvc2l0b3J5X2lkKQotICAgICAgICAgICAgc2libGluZ3Mg
PSBzZWxmLmNvbW1pdF9jb250ZXh0LnNpYmxpbmdfY29tbWl0cyhjb21taXQsIHJlcG9zaXRvcmll
cykKLSAgICAgICAgcmVwb3NpdG9yaWVzID0gW2NvbW1pdC5yZXBvc2l0b3J5X2lkXSArIHNvcnRl
ZChbc3RyKGtleSkgZm9yIGtleSwgbHN0IGluIHNpYmxpbmdzLml0ZW1zKCkgaWYgbHN0XSkKLQot
ICAgICAgICByZXR1cm4gc2VsZi5lbnZpcm9ubWVudC5nZXRfdGVtcGxhdGUoJ2NvbW1pdC5odG1s
JykucmVuZGVyKAotICAgICAgICAgICAgdGl0bGU9c2VsZi5zaXRlX21lbnUudGl0bGUgKyAnOiAn
ICsgc3RyKGNvbW1pdC5pZCksCi0gICAgICAgICAgICBjb21taXQ9Y29tbWl0LAotICAgICAgICAg
ICAgcmVwb3NpdG9yeV9pZHM9cmVwb3NpdG9yaWVzLAotICAgICAgICAgICAgY29tbWl0cz1Db21t
aXQuRW5jb2RlcigpLmRlZmF1bHQoW2NvbW1pdF0gKyBbaXRlbSBmb3IgbHN0IGluIHNpYmxpbmdz
LnZhbHVlcygpIGZvciBpdGVtIGluIGxzdF0pLAotICAgICAgICAgICAgKiprd2FyZ3MpCi0KLSAg
ICBkZWYgaW5mbyhzZWxmKToKLSAgICAgICAgY29tbWl0ID0gc2VsZi5fc2luZ2xlX2NvbW1pdCgp
Ci0gICAgICAgIGluZm9fdXJsID0gc2VsZi5jb21taXRfY29udGV4dC5yZXBvc2l0b3JpZXNbY29t
bWl0LnJlcG9zaXRvcnlfaWRdLnVybF9mb3JfY29tbWl0KGNvbW1pdC5pZCkKLSAgICAgICAgaWYg
bm90IGluZm9fdXJsOgotICAgICAgICAgICAgYWJvcnQoNDEwLCBkZXNjcmlwdGlvbj1mJ0ZvdW5k
IGNvbW1pdCB7bGVuKGNvbW1pdC5pZCl9LCBidXQgbm8gaW5mbyB1cmwgZm91bmQnKQotICAgICAg
ICByZXR1cm4gcmVkaXJlY3QoaW5mb191cmwpCi0KLSAgICBkZWYgcHJldmlvdXMoc2VsZik6Ci0g
ICAgICAgIHdpdGggc2VsZi5jb21taXRfY29udGV4dDoKLSAgICAgICAgICAgIG9yaWdpbmFsX2Nv
bW1pdCA9IHNlbGYuX3NpbmdsZV9jb21taXQoKQotICAgICAgICAgICAgY29tbWl0ID0gc2VsZi5j
b21taXRfY29udGV4dC5wcmV2aW91c19jb21taXQob3JpZ2luYWxfY29tbWl0KQotICAgICAgICAg
ICAgaWYgbm90IGNvbW1pdDoKLSAgICAgICAgICAgICAgICBhYm9ydCg0MDQsIGRlc2NyaXB0aW9u
PWYne29yaWdpbmFsX2NvbW1pdC5pZH0gaGFzIG5vIHJlZ2lzdGVyZWQgcHJldmlvdXMgY29tbWl0
JykKLSAgICAgICAgcmV0dXJuIHJlZGlyZWN0KGYnL2NvbW1pdD9yZXBvc2l0b3J5X2lkPXtjb21t
aXQucmVwb3NpdG9yeV9pZH0maWQ9e2NvbW1pdC5pZH0nKQotCi0gICAgZGVmIG5leHQoc2VsZik6
Ci0gICAgICAgIHdpdGggc2VsZi5jb21taXRfY29udGV4dDoKLSAgICAgICAgICAgIG9yaWdpbmFs
X2NvbW1pdCA9IHNlbGYuX3NpbmdsZV9jb21taXQoKQotICAgICAgICAgICAgY29tbWl0ID0gc2Vs
Zi5jb21taXRfY29udGV4dC5uZXh0X2NvbW1pdChvcmlnaW5hbF9jb21taXQpCi0gICAgICAgICAg
ICBpZiBub3QgY29tbWl0OgotICAgICAgICAgICAgICAgIGFib3J0KDQwNCwgZGVzY3JpcHRpb249
Zid7b3JpZ2luYWxfY29tbWl0LmlkfSBoYXMgbm8gcmVnaXN0ZXJlZCBzdWJzZXF1ZW50IGNvbW1p
dCcpCi0gICAgICAgICAgICByZXR1cm4gcmVkaXJlY3QoZicvY29tbWl0P3JlcG9zaXRvcnlfaWQ9
e2NvbW1pdC5yZXBvc2l0b3J5X2lkfSZpZD17Y29tbWl0LmlkfScpCi0KLSAgICBAU2l0ZU1lbnUu
cmVuZGVyX3dpdGhfc2l0ZV9tZW51KCkKLSAgICBkZWYgY29tbWl0cyhzZWxmLCAqKmt3YXJncyk6
Ci0KLSAgICAgICAgcmV0dXJuIHNlbGYuZW52aXJvbm1lbnQuZ2V0X3RlbXBsYXRlKCdjb21taXRz
Lmh0bWwnKS5yZW5kZXIoCi0gICAgICAgICAgICB0aXRsZT1zZWxmLnNpdGVfbWVudS50aXRsZSAr
ICc6IENvbW1pdHMnLAotICAgICAgICAgICAgcXVlcnk9cmVxdWVzdC5xdWVyeV9zdHJpbmcsCi0g
ICAgICAgICAgICAqKmt3YXJncykKSW5kZXg6IFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5
L3ZpZXcvY29tbWl0X3ZpZXdfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvcmVzdWx0
c2RicHkvcmVzdWx0c2RicHkvdmlldy9jb21taXRfdmlld191bml0dGVzdC5weQkocmV2aXNpb24g
MjY1NTMxKQorKysgVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9jb21taXRfdmll
d191bml0dGVzdC5weQkobm9uZXhpc3RlbnQpCkBAIC0xLDI1MCArMCwwIEBACi0jIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgot
IyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUgotIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotIyBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1pbXBvcnQgdGltZQotCi1mcm9tIGZha2VyZWRp
cyBpbXBvcnQgRmFrZVN0cmljdFJlZGlzCi1mcm9tIHJlc3VsdHNkYnB5LmNvbnRyb2xsZXIuY29t
bWl0IGltcG9ydCBDb21taXQKLWZyb20gcmVzdWx0c2RicHkubW9kZWwubW9ja19jYXNzYW5kcmFf
Y29udGV4dCBpbXBvcnQgTW9ja0Nhc3NhbmRyYUNvbnRleHQKLWZyb20gcmVzdWx0c2RicHkubW9k
ZWwubW9ja19yZXBvc2l0b3J5IGltcG9ydCBNb2NrU3Rhc2hSZXBvc2l0b3J5LCBNb2NrU1ZOUmVw
b3NpdG9yeQotZnJvbSByZXN1bHRzZGJweS5tb2RlbC53YWl0X2Zvcl9kb2NrZXJfdGVzdF9jYXNl
IGltcG9ydCBXYWl0Rm9yRG9ja2VyVGVzdENhc2UKLWZyb20gcmVzdWx0c2RicHkudmlldy52aWV3
X3JvdXRlc191bml0dGVzdCBpbXBvcnQgV2ViU2l0ZVRlc3RDYXNlCi1mcm9tIHNlbGVuaXVtLndl
YmRyaXZlci5zdXBwb3J0LnNlbGVjdCBpbXBvcnQgU2VsZWN0Ci0KLQotY2xhc3MgQ29tbWl0Vmll
d1VuaXR0ZXN0KFdlYlNpdGVUZXN0Q2FzZSk6Ci0gICAgZGVmIHJlZ2lzdGVyX2FsbF9jb21taXRz
KHNlbGYsIGNsaWVudCk6Ci0gICAgICAgIGZvciByZXBvIGluIFtNb2NrU3Rhc2hSZXBvc2l0b3J5
LnNhZmFyaSgpLCBNb2NrU1ZOUmVwb3NpdG9yeS53ZWJraXQoKV06Ci0gICAgICAgICAgICBmb3Ig
Y29tbWl0cyBpbiByZXBvLmNvbW1pdHMudmFsdWVzKCk6Ci0gICAgICAgICAgICAgICAgZm9yIGNv
bW1pdCBpbiBjb21taXRzOgotICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDIw
MCwgY2xpZW50LnBvc3Qoc2VsZi5VUkwgKyAnL2FwaS9jb21taXRzL3JlZ2lzdGVyJywgZGF0YT1D
b21taXQuRW5jb2RlcigpLmRlZmF1bHQoY29tbWl0KSkuc3RhdHVzX2NvZGUpCi0KLSAgICBkZWYg
dW5wYWNrX2NvbW1pdF90YWJsZShzZWxmLCBjb21taXRfdGFibGUpOgotICAgICAgICBoZWFkZXJz
ID0gY29tbWl0X3RhYmxlLmZpbmRfZWxlbWVudHNfYnlfdGFnX25hbWUoJ3RoJykKLSAgICAgICAg
cmVwb3MgPSBbaGVhZGVyLnRleHQgZm9yIGhlYWRlciBpbiBoZWFkZXJzIGlmIGhlYWRlci50ZXh0
XQotICAgICAgICBpbmRlY2llcyA9IFsxIGZvciBfIGluIHJhbmdlKGxlbihoZWFkZXJzKSldCi0g
ICAgICAgIGNvbW1pdHMgPSB7cmVwbzogW10gZm9yIHJlcG8gaW4gcmVwb3N9Ci0KLSAgICAgICAg
cm93cyA9IGNvbW1pdF90YWJsZS5maW5kX2VsZW1lbnRfYnlfdGFnX25hbWUoJ3Rib2R5JykuZmlu
ZF9lbGVtZW50c19ieV90YWdfbmFtZSgndHInKQotICAgICAgICBmb3Igcm93IGluIHJvd3M6Ci0g
ICAgICAgICAgICBpbmRlY2llcyA9IFtpIC0gMSBmb3IgaSBpbiBpbmRlY2llc10KLSAgICAgICAg
ICAgIGNlbGxzID0gcm93LmZpbmRfZWxlbWVudHNfYnlfdGFnX25hbWUoJ3RkJykKLSAgICAgICAg
ICAgIGkgPSAwCi0gICAgICAgICAgICBmb3IgY2VsbCBpbiBjZWxsczoKLSAgICAgICAgICAgICAg
ICB3aGlsZSBpIDwgbGVuKGluZGVjaWVzKSBhbmQgaW5kZWNpZXNbaV0gIT0gMDoKLSAgICAgICAg
ICAgICAgICAgICAgaSArPSAxCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNzKGksIGxl
bihpbmRlY2llcykpCi0gICAgICAgICAgICAgICAgaW5kZWNpZXNbaV0gPSBpbnQoY2VsbC5nZXRf
YXR0cmlidXRlKCdyb3dzcGFuJykgb3IgMSkKLSAgICAgICAgICAgICAgICBpZiBpID09IDAgb3Ig
bm90IGNlbGwudGV4dDoKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAg
ICAgICBjb21taXRzW3JlcG9zW2kgLSAxXV0uYXBwZW5kKGNlbGwpCi0gICAgICAgIHJldHVybiBj
b21taXRzCi0KLSAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1v
Y2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29u
dGV4dCkKLSAgICBAV2ViU2l0ZVRlc3RDYXNlLmRlY29yYXRvcigpCi0gICAgZGVmIHRlc3RfZHJh
d2VyKHNlbGYsIGRyaXZlciwgKiprd2FyZ3MpOgotICAgICAgICBkcml2ZXIuZ2V0KHNlbGYuVVJM
ICsgJy9jb21taXRzJykKLSAgICAgICAgdGltZS5zbGVlcCguMikKLSAgICAgICAgc2VsZi5hc3Nl
cnROb3RJbignaGlkZGVuJywgZHJpdmVyLmZpbmRfZWxlbWVudF9ieV9jbGFzc19uYW1lKCdzaWRl
YmFyJykuZ2V0X2F0dHJpYnV0ZSgnY2xhc3MnKSkKLQotICAgICAgICBzZWxmLnRvZ2dsZV9kcmF3
ZXIoZHJpdmVyLCBhc3NlcnRfZGlzcGxheWVkPUZhbHNlKQotICAgICAgICBzZWxmLnRvZ2dsZV9k
cmF3ZXIoZHJpdmVyLCBhc3NlcnRfZGlzcGxheWVkPVRydWUpCi0KLSAgICBAV2FpdEZvckRvY2tl
clRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBt
b2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKLSAgICBAV2ViU2l0ZVRlc3RDYXNl
LmRlY29yYXRvcigpCi0gICAgZGVmIHRlc3RfY29tbWl0X3RhYmxlKHNlbGYsIGRyaXZlciwgY2xp
ZW50LCAqKmt3YXJncyk6Ci0gICAgICAgIHNlbGYucmVnaXN0ZXJfYWxsX2NvbW1pdHMoY2xpZW50
KQotICAgICAgICBkcml2ZXIuZ2V0KHNlbGYuVVJMICsgJy9jb21taXRzJykKLQotICAgICAgICB3
aGlsZSBub3QgZHJpdmVyLmZpbmRfZWxlbWVudHNfYnlfY2xhc3NfbmFtZSgnY29tbWl0LXRhYmxl
Jyk6Ci0gICAgICAgICAgICB0aW1lLnNsZWVwKC4xKQotICAgICAgICBjb21taXRfdGFibGUgPSBk
cml2ZXIuZmluZF9lbGVtZW50X2J5X2NsYXNzX25hbWUoJ2NvbW1pdC10YWJsZScpCi0KLSAgICAg
ICAgY29tbWl0cyA9IHNlbGYudW5wYWNrX2NvbW1pdF90YWJsZShjb21taXRfdGFibGUpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoMiwgbGVuKGNvbW1pdHMua2V5cygpKSkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRJbignc2FmYXJpJywgY29tbWl0cykKLSAgICAgICAgc2VsZi5hc3NlcnRJbignd2Vi
a2l0JywgY29tbWl0cykKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDUsIGxlbihjb21taXRz
WydzYWZhcmknXSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoNSwgbGVuKGNvbW1pdHNbJ3dl
YmtpdCddKSkKLQotICAgICAgICByb3dzID0gY29tbWl0X3RhYmxlLmZpbmRfZWxlbWVudF9ieV90
YWdfbmFtZSgndGJvZHknKS5maW5kX2VsZW1lbnRzX2J5X3RhZ19uYW1lKCd0cicpCi0gICAgICAg
IHNlbGYuYXNzZXJ0Tm90RXF1YWwoCi0gICAgICAgICAgICByb3dzWzFdLmZpbmRfZWxlbWVudHNf
YnlfdGFnX25hbWUoJ3RkJylbMF0udGV4dCwKLSAgICAgICAgICAgIHJvd3NbMl0uZmluZF9lbGVt
ZW50c19ieV90YWdfbmFtZSgndGQnKVswXS50ZXh0LAotICAgICAgICApCi0KLSAgICBAV2FpdEZv
ckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJl
ZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKLSAgICBAV2ViU2l0ZVRl
c3RDYXNlLmRlY29yYXRvcigpCi0gICAgZGVmIHRlc3RfY29tbWl0KHNlbGYsIGRyaXZlciwgY2xp
ZW50LCAqKmt3YXJncyk6Ci0gICAgICAgIHNlbGYucmVnaXN0ZXJfYWxsX2NvbW1pdHMoY2xpZW50
KQotICAgICAgICBkcml2ZXIuZ2V0KHNlbGYuVVJMICsgJy9jb21taXRzJykKLQotICAgICAgICB3
aGlsZSBub3QgZHJpdmVyLmZpbmRfZWxlbWVudHNfYnlfY2xhc3NfbmFtZSgnY29tbWl0LXRhYmxl
Jyk6Ci0gICAgICAgICAgICB0aW1lLnNsZWVwKC4xKQotICAgICAgICBjb21taXRfdGFibGUgPSBk
cml2ZXIuZmluZF9lbGVtZW50X2J5X2NsYXNzX25hbWUoJ2NvbW1pdC10YWJsZScpCi0KLSAgICAg
ICAgY29tbWl0cyA9IHNlbGYudW5wYWNrX2NvbW1pdF90YWJsZShjb21taXRfdGFibGUpCi0gICAg
ICAgIGxpbmtzID0gY29tbWl0c1snc2FmYXJpJ11bMF0uZmluZF9lbGVtZW50c19ieV90YWdfbmFt
ZSgnYScpCi0gICAgICAgIGZvciBsaW5rIGluIGxpbmtzOgotICAgICAgICAgICAgaWYgbGluay50
ZXh0ICE9ICdNb3JlIEluZm8nOgotICAgICAgICAgICAgICAgIGxpbmsuY2xpY2soKQotICAgICAg
ICAgICAgICAgIGJyZWFrCi0KLSAgICAgICAgdGltZS5zbGVlcCguNSkKLQotICAgICAgICB3aGls
ZSBub3QgZHJpdmVyLmZpbmRfZWxlbWVudHNfYnlfY2xhc3NfbmFtZSgnY29tbWl0LXRhYmxlJyk6
Ci0gICAgICAgICAgICB0aW1lLnNsZWVwKC4xKQotICAgICAgICBjb21taXRfdGFibGUgPSBkcml2
ZXIuZmluZF9lbGVtZW50X2J5X2NsYXNzX25hbWUoJ2NvbW1pdC10YWJsZScpCi0KLSAgICAgICAg
Y29tbWl0cyA9IHNlbGYudW5wYWNrX2NvbW1pdF90YWJsZShjb21taXRfdGFibGUpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoMiwgbGVuKGNvbW1pdHMua2V5cygpKSkKLSAgICAgICAgc2VsZi5h
c3NlcnRJbignc2FmYXJpJywgY29tbWl0cykKLSAgICAgICAgc2VsZi5hc3NlcnRJbignd2Via2l0
JywgY29tbWl0cykKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihjb21taXRzWydz
YWZhcmknXSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoNSwgbGVuKGNvbW1pdHNbJ3dlYmtp
dCddKSkKLQotICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9j
a19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250
ZXh0KQotICAgIEBXZWJTaXRlVGVzdENhc2UuZGVjb3JhdG9yKCkKLSAgICBkZWYgdGVzdF9yYWRh
cl9zdHJpbmdzKHNlbGYsIGRyaXZlciwgY2xpZW50LCAqKmt3YXJncyk6Ci0gICAgICAgIHNlbGYu
cmVnaXN0ZXJfYWxsX2NvbW1pdHMoY2xpZW50KQotICAgICAgICBkcml2ZXIuZ2V0KHNlbGYuVVJM
ICsgJy9jb21taXRzP2lkPTMzNjYxMGE0JykKLQotICAgICAgICB3aGlsZSBub3QgZHJpdmVyLmZp
bmRfZWxlbWVudHNfYnlfY2xhc3NfbmFtZSgnY29tbWl0LXRhYmxlJyk6Ci0gICAgICAgICAgICB0
aW1lLnNsZWVwKC4xKQotICAgICAgICBjb21taXRfdGFibGUgPSBkcml2ZXIuZmluZF9lbGVtZW50
X2J5X2NsYXNzX25hbWUoJ2NvbW1pdC10YWJsZScpCi0KLSAgICAgICAgY29tbWl0cyA9IHNlbGYu
dW5wYWNrX2NvbW1pdF90YWJsZShjb21taXRfdGFibGUpCi0gICAgICAgIGNoYW5nZWxvZyA9IGNv
bW1pdHNbJ3NhZmFyaSddWzBdLmZpbmRfZWxlbWVudF9ieV90YWdfbmFtZSgnZGl2JykKLQotICAg
ICAgICByYWRhciA9ICc8cmRhcjovL3Byb2JsZW0vOTk5OTk5OTk+JwotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGNoYW5nZWxvZy50ZXh0WzpsZW4ocmFkYXIpXSwgcmFkYXIpCi0KLSAgICBAV2Fp
dEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmlj
dFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKLSAgICBAV2ViU2l0
ZVRlc3RDYXNlLmRlY29yYXRvcigpCi0gICAgZGVmIHRlc3RfcmFuZ2Vfc2xpZGVyKHNlbGYsIGRy
aXZlciwgY2xpZW50LCAqKmt3YXJncyk6Ci0gICAgICAgIHNlbGYucmVnaXN0ZXJfYWxsX2NvbW1p
dHMoY2xpZW50KQotICAgICAgICBkcml2ZXIuZ2V0KHNlbGYuVVJMICsgJy9jb21taXRzJykKLQot
ICAgICAgICB3aGlsZSBub3QgZHJpdmVyLmZpbmRfZWxlbWVudHNfYnlfY2xhc3NfbmFtZSgnY29t
bWl0LXRhYmxlJyk6Ci0gICAgICAgICAgICB0aW1lLnNsZWVwKC4xKQotICAgICAgICBjb21taXRf
dGFibGUgPSBkcml2ZXIuZmluZF9lbGVtZW50X2J5X2NsYXNzX25hbWUoJ2NvbW1pdC10YWJsZScp
Ci0KLSAgICAgICAgY29tbWl0cyA9IHNlbGYudW5wYWNrX2NvbW1pdF90YWJsZShjb21taXRfdGFi
bGUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMiwgbGVuKGNvbW1pdHMua2V5cygpKSkKLSAg
ICAgICAgc2VsZi5hc3NlcnRJbignc2FmYXJpJywgY29tbWl0cykKLSAgICAgICAgc2VsZi5hc3Nl
cnRJbignd2Via2l0JywgY29tbWl0cykKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDUsIGxl
bihjb21taXRzWydzYWZhcmknXSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoNSwgbGVuKGNv
bW1pdHNbJ3dlYmtpdCddKSkKLQotICAgICAgICBjb250cm9scyA9IHNlbGYuZmluZF9pbnB1dF93
aXRoX25hbWUoZHJpdmVyLCAnTGltaXQ6JykuZmluZF9lbGVtZW50c19ieV90YWdfbmFtZSgnaW5w
dXQnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDMsIGxlbihjb250cm9scykpCi0gICAgICAg
IGlucHV0ID0gW2NvbnRyb2wgZm9yIGNvbnRyb2wgaW4gY29udHJvbHMgaWYgY29udHJvbC5nZXRf
YXR0cmlidXRlKCd0eXBlJykgPT0gJ251bWJlciddWzBdCi0gICAgICAgIHNlbGYuYXNzZXJ0SXNO
b3ROb25lKGlucHV0KQotCi0gICAgICAgIGlucHV0LmNsZWFyKCkKLSAgICAgICAgaW5wdXQuc2Vu
ZF9rZXlzKCczJykKLQotICAgICAgICBzZWxmLnRvZ2dsZV9kcmF3ZXIoZHJpdmVyLCBhc3NlcnRf
ZGlzcGxheWVkPUZhbHNlKQotCi0gICAgICAgIHdoaWxlIG5vdCBkcml2ZXIuZmluZF9lbGVtZW50
c19ieV9jbGFzc19uYW1lKCdjb21taXQtdGFibGUnKToKLSAgICAgICAgICAgIHRpbWUuc2xlZXAo
LjEpCi0gICAgICAgIGNvbW1pdF90YWJsZSA9IGRyaXZlci5maW5kX2VsZW1lbnRfYnlfY2xhc3Nf
bmFtZSgnY29tbWl0LXRhYmxlJykKLQotICAgICAgICBjb21taXRzID0gc2VsZi51bnBhY2tfY29t
bWl0X3RhYmxlKGNvbW1pdF90YWJsZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyLCBsZW4o
Y29tbWl0cy5rZXlzKCkpKQotICAgICAgICBzZWxmLmFzc2VydEluKCdzYWZhcmknLCBjb21taXRz
KQotICAgICAgICBzZWxmLmFzc2VydEluKCd3ZWJraXQnLCBjb21taXRzKQotCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoMywgbGVuKGNvbW1pdHNbJ3NhZmFyaSddKSkKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgzLCBsZW4oY29tbWl0c1snd2Via2l0J10pKQotCi0gICAgQFdhaXRGb3JEb2Nr
ZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywg
bW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCi0gICAgQFdlYlNpdGVUZXN0Q2Fz
ZS5kZWNvcmF0b3IoKQotICAgIGRlZiB0ZXN0X29uZV9saW5lX3N3aXRjaChzZWxmLCBkcml2ZXIs
IGNsaWVudCwgKiprd2FyZ3MpOgotICAgICAgICBzZWxmLnJlZ2lzdGVyX2FsbF9jb21taXRzKGNs
aWVudCkKLSAgICAgICAgZHJpdmVyLmdldChzZWxmLlVSTCArICcvY29tbWl0cz9pZD03YmU0MDg0
MicpCi0KLSAgICAgICAgd2hpbGUgbm90IGRyaXZlci5maW5kX2VsZW1lbnRzX2J5X2NsYXNzX25h
bWUoJ2NvbW1pdC10YWJsZScpOgotICAgICAgICAgICAgdGltZS5zbGVlcCguMSkKLSAgICAgICAg
Y29tbWl0X3RhYmxlID0gZHJpdmVyLmZpbmRfZWxlbWVudF9ieV9jbGFzc19uYW1lKCdjb21taXQt
dGFibGUnKQotCi0gICAgICAgIGxpbmVfMSA9IHUnQ2hhbmdlIDQgXHUyMDE0IChQYXJ0IDIpIGRl
c2NyaXB0aW9uLicKLSAgICAgICAgbGluZV8yID0gJ1Jldmlld2VkIGJ5IHBlcnNvbi4nCi0KLSAg
ICAgICAgY29tbWl0cyA9IHNlbGYudW5wYWNrX2NvbW1pdF90YWJsZShjb21taXRfdGFibGUpCi0g
ICAgICAgIGNoYW5nZWxvZyA9IGNvbW1pdHNbJ3NhZmFyaSddWzBdLmZpbmRfZWxlbWVudF9ieV90
YWdfbmFtZSgnZGl2JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaW5lXzEsIGNoYW5nZWxv
Zy50ZXh0KQotCi0gICAgICAgIGNvbnRyb2xzID0gc2VsZi5maW5kX2lucHV0X3dpdGhfbmFtZShk
cml2ZXIsICdPbmUtbGluZTonKS5maW5kX2VsZW1lbnRzX2J5X3RhZ19uYW1lKCdzcGFuJykKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oY29udHJvbHMpKQotICAgICAgICBpbnB1dCA9
IFtjb250cm9sIGZvciBjb250cm9sIGluIGNvbnRyb2xzIGlmIGNvbnRyb2wuZ2V0X2F0dHJpYnV0
ZSgnY2xhc3MnKSA9PSAnc2xpZGVyJ11bMF0KLSAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUo
aW5wdXQpCi0gICAgICAgIGlucHV0LmNsaWNrKCkKLQotICAgICAgICBzZWxmLnRvZ2dsZV9kcmF3
ZXIoZHJpdmVyLCBhc3NlcnRfZGlzcGxheWVkPUZhbHNlKQotCi0gICAgICAgIHdoaWxlIG5vdCBk
cml2ZXIuZmluZF9lbGVtZW50c19ieV9jbGFzc19uYW1lKCdjb21taXQtdGFibGUnKToKLSAgICAg
ICAgICAgIHRpbWUuc2xlZXAoLjEpCi0gICAgICAgIGNvbW1pdF90YWJsZSA9IGRyaXZlci5maW5k
X2VsZW1lbnRfYnlfY2xhc3NfbmFtZSgnY29tbWl0LXRhYmxlJykKLQotICAgICAgICBjb21taXRz
ID0gc2VsZi51bnBhY2tfY29tbWl0X3RhYmxlKGNvbW1pdF90YWJsZSkKLSAgICAgICAgY2hhbmdl
bG9nID0gY29tbWl0c1snc2FmYXJpJ11bMF0uZmluZF9lbGVtZW50X2J5X3RhZ19uYW1lKCdkaXYn
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpbmVfMSArIGxpbmVfMiwgY2hhbmdlbG9nLnRl
eHQpCi0KLSAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tf
cmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4
dCkKLSAgICBAV2ViU2l0ZVRlc3RDYXNlLmRlY29yYXRvcigpCi0gICAgZGVmIHRlc3RfYnJhbmNo
X3NlbGVjdGlvbihzZWxmLCBkcml2ZXIsIGNsaWVudCwgKiprd2FyZ3MpOgotICAgICAgICBzZWxm
LnJlZ2lzdGVyX2FsbF9jb21taXRzKGNsaWVudCkKLSAgICAgICAgZHJpdmVyLmdldChzZWxmLlVS
TCArICcvY29tbWl0cycpCi0KLSAgICAgICAgd2hpbGUgbm90IGRyaXZlci5maW5kX2VsZW1lbnRz
X2J5X2NsYXNzX25hbWUoJ2NvbW1pdC10YWJsZScpOgotICAgICAgICAgICAgdGltZS5zbGVlcCgu
MSkKLSAgICAgICAgY29tbWl0X3RhYmxlID0gZHJpdmVyLmZpbmRfZWxlbWVudF9ieV9jbGFzc19u
YW1lKCdjb21taXQtdGFibGUnKQotCi0gICAgICAgIGNvbW1pdHMgPSBzZWxmLnVucGFja19jb21t
aXRfdGFibGUoY29tbWl0X3RhYmxlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDIsIGxlbihj
b21taXRzLmtleXMoKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3NhZmFyaScsIGNvbW1pdHMp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3dlYmtpdCcsIGNvbW1pdHMpCi0KLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCg1LCBsZW4oY29tbWl0c1snc2FmYXJpJ10pKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKDUsIGxlbihjb21taXRzWyd3ZWJraXQnXSkpCi0KLSAgICAgICAgY29udHJvbHMg
PSBzZWxmLmZpbmRfaW5wdXRfd2l0aF9uYW1lKGRyaXZlciwgJ0JyYW5jaCcpLmZpbmRfZWxlbWVu
dHNfYnlfdGFnX25hbWUoJ3NlbGVjdCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVu
KGNvbnRyb2xzKSkKLSAgICAgICAgU2VsZWN0KGNvbnRyb2xzWzBdKS5zZWxlY3RfYnlfdmlzaWJs
ZV90ZXh0KCdzYWZhcmktNjA2LWJyYW5jaCcpCi0KLSAgICAgICAgc2VsZi50b2dnbGVfZHJhd2Vy
KGRyaXZlciwgYXNzZXJ0X2Rpc3BsYXllZD1GYWxzZSkKLQotICAgICAgICB3aGlsZSBub3QgZHJp
dmVyLmZpbmRfZWxlbWVudHNfYnlfY2xhc3NfbmFtZSgnY29tbWl0LXRhYmxlJyk6Ci0gICAgICAg
ICAgICB0aW1lLnNsZWVwKC4xKQotICAgICAgICBjb21taXRfdGFibGUgPSBkcml2ZXIuZmluZF9l
bGVtZW50X2J5X2NsYXNzX25hbWUoJ2NvbW1pdC10YWJsZScpCi0KLSAgICAgICAgY29tbWl0cyA9
IHNlbGYudW5wYWNrX2NvbW1pdF90YWJsZShjb21taXRfdGFibGUpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoMiwgbGVuKGNvbW1pdHMua2V5cygpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRJbign
c2FmYXJpJywgY29tbWl0cykKLSAgICAgICAgc2VsZi5hc3NlcnRJbignd2Via2l0JywgY29tbWl0
cykKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDIsIGxlbihjb21taXRzWydzYWZhcmknXSkp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMiwgbGVuKGNvbW1pdHNbJ3dlYmtpdCddKSkKSW5k
ZXg6IFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvc2l0ZV9tZW51LnB5Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvc2l0ZV9tZW51LnB5
CShyZXZpc2lvbiAyNjU1MzEpCisrKyBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS92aWV3
L3NpdGVfbWVudS5weQkobm9uZXhpc3RlbnQpCkBAIC0xLDU0ICswLDAgQEAKLSMgQ29weXJpZ2h0
IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
IkFTIElTIiBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUgotIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0j
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSCi0jIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0jIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLWZyb20gY29sbGVjdGlvbnMgaW1wb3J0IE9yZGVy
ZWREaWN0Ci1mcm9tIGZsYXNrIGltcG9ydCByZXF1ZXN0LCB1cmxfZm9yCi0KLQotY2xhc3MgU2l0
ZU1lbnUob2JqZWN0KToKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0aXRsZSk6Ci0gICAgICAg
IHNlbGYudGl0bGUgPSB0aXRsZQotICAgICAgICBzZWxmLl9uYW1lX2xpbmtfbWFwcGluZyA9IE9y
ZGVyZWREaWN0KCkKLQotICAgIGRlZiBhZGRfbGluayhzZWxmLCBuYW1lLCB1cmwpOgotICAgICAg
ICBzZWxmLl9uYW1lX2xpbmtfbWFwcGluZ1tuYW1lXSA9IGxhbWJkYTogdXJsCi0KLSAgICBkZWYg
YWRkX2VuZHBvaW50KHNlbGYsIG5hbWUsIGVuZHBvaW50LCBwYXJhbWV0ZXJzPU5vbmUpOgotICAg
ICAgICBzZWxmLl9uYW1lX2xpbmtfbWFwcGluZ1tuYW1lXSA9IGRpY3QoCi0gICAgICAgICAgICB1
cmw9bGFtYmRhOiB1cmxfZm9yKGVuZHBvaW50KSwKLSAgICAgICAgICAgIHBhcmFtZXRlcnM9cGFy
YW1ldGVycyBvciBbXSwKLSAgICAgICAgKQotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHJl
bmRlcl93aXRoX3NpdGVfbWVudShjbHMpOgotICAgICAgICBkZWYgZGVjb3JhdG9yKG1ldGhvZCk6
Ci0gICAgICAgICAgICBkZWYgcmVhbF9tZXRob2Qob2JqLCAqKmt3YXJncyk6Ci0gICAgICAgICAg
ICAgICAgc2l0ZV9tZW51ID0gZ2V0YXR0cihvYmosICdzaXRlX21lbnUnLCBOb25lKQotICAgICAg
ICAgICAgICAgIGlmIG5vdCBzaXRlX21lbnU6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBt
ZXRob2Qob2JqLCBzaXRlX3RpdGxlPSc/Jywgc2l0ZV9tZW51PXt9LCAqKmt3YXJncykKLSAgICAg
ICAgICAgICAgICByZXR1cm4gbWV0aG9kKG9iaiwgc2l0ZV90aXRsZT1zaXRlX21lbnUudGl0bGUs
IHNpdGVfbWVudT1zaXRlX21lbnUuX25hbWVfbGlua19tYXBwaW5nLCByZXF1ZXN0PXJlcXVlc3Qs
ICoqa3dhcmdzKQotCi0gICAgICAgICAgICByZWFsX21ldGhvZC5fX25hbWVfXyA9IG1ldGhvZC5f
X25hbWVfXwotICAgICAgICAgICAgcmV0dXJuIHJlYWxfbWV0aG9kCi0KLSAgICAgICAgcmV0dXJu
IGRlY29yYXRvcgpJbmRleDogVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9zdGF0
aWMvY3NzL2NvbW1pdC5jc3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0
c2RicHkvdmlldy9zdGF0aWMvY3NzL2NvbW1pdC5jc3MJKHJldmlzaW9uIDI2NTUzMSkKKysrIFRv
b2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvc3RhdGljL2Nzcy9jb21taXQuY3NzCShu
b25leGlzdGVudCkKQEAgLTEsMzcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotIAotLmNvbW1pdC10YWJsZT50aGVhZD50cj50aCB7Ci0gICAgYm9yZGVy
LWNvbG9yOiB2YXIoLS1ib3JkZXJDb2xvckhhcmQpOwotfQotCi0uY29tbWl0LXRhYmxlPnRib2R5
PnRyPnRkIHsKLSAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQ7Ci0gICAgYm9yZGVyLWNvbG9y
OiB2YXIoLS1ib3JkZXJDb2xvclNlY3Rpb24pOwotICAgIGxpbmUtaGVpZ2h0OiAxOwotICAgIG1h
eC13aWR0aDogNTUwcHg7Ci0gICAgbWluLXdpZHRoOiAyMDBweDsKLSAgICB3b3JkLXdyYXA6IGJy
ZWFrLXdvcmQ7Ci19CkluZGV4OiBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS92aWV3L3N0
YXRpYy9jc3Mvc2VhcmNoLmNzcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9yZXN1bHRzZGJweS9yZXN1
bHRzZGJweS92aWV3L3N0YXRpYy9jc3Mvc2VhcmNoLmNzcwkocmV2aXNpb24gMjY1NTMxKQorKysg
VG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9zdGF0aWMvY3NzL3NlYXJjaC5jc3MJ
KG5vbmV4aXN0ZW50KQpAQCAtMSw0OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0gCi0uc2VhcmNoLWNhbmRpZGF0ZXMgewotICAgIHotaW5kZXg6IDUw
OwotICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICAtd2Via2l0LWJhY2tkcm9wLWZpbHRlcjog
Ymx1cig1cHgpIGJyaWdodG5lc3MoODglKTsKLSAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoNXB4
KSBicmlnaHRuZXNzKDg4JSk7Ci0gICAgY29sb3I6IHZhcigtLWludmVyc2VDb2xvcik7Ci0gICAg
Ym9yZGVyOiAxcHggc29saWQgI2NjYzsKLSAgICBib3JkZXItcmFkaXVzOiA1cHg7Ci0gICAgbWFy
Z2luOiA1cHggMCAwIDA7Ci0gICAgcGFkZGluZzogNXB4OwotICAgIGZvbnQtc2l6ZTogdmFyKC0t
c21hbGxTaXplKTsKLSAgICBsaXN0LXN0eWxlOiBub25lOwotfQotCi0uc2VhcmNoLWNhbmRpZGF0
ZXMgZW0gewotICAgIGJhY2tncm91bmQtY29sb3I6ICNjY2M7Ci0gICAgZm9udC1zdHlsZTogbm9y
bWFsOwotfQotCi0uc2VhcmNoLWNhbmRpZGF0ZXMgLnNlbGVjdGVkIHsKLSAgICBiYWNrZ3JvdW5k
LWNvbG9yOiB2YXIoLS1ibHVlKTsKLSAgICBjb2xvcjogd2hpdGU7Ci19ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpJbmRleDogVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9z
dGF0aWMvY3NzL3RpbWVsaW5lLmNzcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9yZXN1bHRzZGJweS9y
ZXN1bHRzZGJweS92aWV3L3N0YXRpYy9jc3MvdGltZWxpbmUuY3NzCShyZXZpc2lvbiAyNjU1MzEp
CisrKyBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS92aWV3L3N0YXRpYy9jc3MvdGltZWxp
bmUuY3NzCShub25leGlzdGVudCkKQEAgLTEsMzYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuICJBUyBJUyIgQU5EIEFOWQot
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0uZG90Lndhcm5pbmcgewotICAgIGJhY2tncm91bmQt
Y29sb3I6IHZhcigtLW9yYW5nZURhcmspOwotfQotCi0uZG90LnRpbWVkb3V0IHsKLSAgICBiYWNr
Z3JvdW5kLWNvbG9yOiB2YXIoLS1vcmFuZ2VMaWdodCk7Ci19Ci0KLS5kb3QuY3Jhc2hlZCB7Ci0g
ICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcHVycGxlTGlnaHQpOwotfQpJbmRleDogVG9vbHMv
cmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9zdGF0aWMvY3NzL3Rvb2x0aXAuY3NzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvc3RhdGljL2Nzcy90
b29sdGlwLmNzcwkocmV2aXNpb24gMjY1NTMxKQorKysgVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0
c2RicHkvdmlldy9zdGF0aWMvY3NzL3Rvb2x0aXAuY3NzCShub25leGlzdGVudCkKQEAgLTEsNjYg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
LSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotIAotLnRv
b2x0aXAgewotICAgIHotaW5kZXg6IHZhcigtLXRvcFpJbmRleCk7Ci0gICAgcG9zaXRpb246IGFi
c29sdXRlOwotICAgIG9wYWNpdHk6IDgwJTsKLSAgICB3aWR0aDogMDsKLSAgICBoZWlnaHQ6IDA7
Ci0gICAgYm9yZGVyLXN0eWxlOiBzb2xpZDsKLSAgICBib3JkZXItd2lkdGg6IDE1cHg7Ci0gICAg
LXdlYmtpdC1iYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94OwotICAgIGJhY2tncm91bmQtY2xp
cDogcGFkZGluZy1ib3g7Ci19Ci0KLS50b29sdGlwLmFycm93LXVwIHsKLSAgICAgYm9yZGVyLWNv
bG9yOiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCAjY2NjZCB0cmFuc3BhcmVudDsKLX0KLQotLnRv
b2x0aXAuYXJyb3ctZG93biB7Ci0gICAgYm9yZGVyLWNvbG9yOiAjY2NjZCB0cmFuc3BhcmVudCB0
cmFuc3BhcmVudCB0cmFuc3BhcmVudDsKLX0KLQotLnRvb2x0aXAuYXJyb3ctbGVmdCB7Ci0gICAg
Ym9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCAjY2NjZDsK
LX0KLS50b29sdGlwLmFycm93LXJpZ2h0IHsKLSAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVu
dCAjY2NjZCB0cmFuc3BhcmVudCAgdHJhbnNwYXJlbnQ7Ci19Ci0KLS50b29sdGlwLWNvbnRlbnQg
ewotICAgIHotaW5kZXg6IHZhcigtLW1pZGRsZVpJbmRleCk7Ci0gICAgcG9zaXRpb246IGFic29s
dXRlOwotICAgIC13ZWJraXQtYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEwcHgpIGJyaWdodG5lc3Mo
ODglKTsKLSAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMTBweCkgYnJpZ2h0bmVzcyg4OCUpOwot
ICAgIGNvbG9yOiB2YXIoLS1pbnZlcnNlQ29sb3IpOwotICAgIGJvcmRlci1yYWRpdXM6IDVweDsK
LSAgICBwYWRkaW5nOiA1cHg7Ci0gICAgZm9udC1zaXplOiB2YXIoLS1zbWFsbFNpemUpOwotICAg
IGxpc3Qtc3R5bGU6IG5vbmU7Ci0gICAgbWF4LXdpZHRoOiA2MDBweDsKLSAgICBtaW4td2lkdGg6
IDMwcHg7Ci0gICAgbWluLWhlaWdodDogMzBweDsKLX0KSW5kZXg6IFRvb2xzL3Jlc3VsdHNkYnB5
L3Jlc3VsdHNkYnB5L3ZpZXcvc3RhdGljL2pzL2FyY2hpdmVSb3V0ZXIuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9zdGF0aWMvanMvYXJjaGl2ZVJv
dXRlci5qcwkocmV2aXNpb24gMjY1NTMxKQorKysgVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2Ri
cHkvdmlldy9zdGF0aWMvanMvYXJjaGl2ZVJvdXRlci5qcwkobm9uZXhpc3RlbnQpCkBAIC0xLDgw
ICswLDAgQEAKLS8vIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLS8vIGFyZSBtZXQ6Ci0vLyAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotLy8gMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLS8v
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIKLS8vIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotLy8g
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotLy8gUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0vLyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0vLyBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotLy8gU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0vLyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotLy8gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLS8vIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLS8vIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLQotY2xhc3MgX0FyY2hpdmVSb3V0ZXIgewotICAgIGNvbnN0cnVjdG9yKCkgewot
ICAgICAgICB0aGlzLnJvdXRlcyA9IHt9OwotICAgICAgICBmZXRjaCgnYXJjaGl2ZS1yb3V0ZXMn
KS50aGVuKHJlc3BvbnNlID0+IHsKLSAgICAgICAgICAgIGxldCBzZWxmID0gdGhpczsKLSAgICAg
ICAgICAgIHJlc3BvbnNlLmpzb24oKS50aGVuKGpzb24gPT4gewotICAgICAgICAgICAgICAgIGlm
IChBcnJheS5pc0FycmF5KGpzb24pKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJy
b3IoSlNPTi5zdHJpbmdpZnkoanNvbiwgbnVsbCwgNCkpOwotICAgICAgICAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHRoaXMucm91dGVzID0g
anNvbjsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9KS5jYXRjaChlcnJvciA9PiB7Ci0gICAg
ICAgICAgICBjb25zb2xlLmVycm9yKEpTT04uc3RyaW5naWZ5KGVycm9yLCBudWxsLCA0KSk7Ci0g
ICAgICAgIH0pOwotICAgIH0KLSAgICBfZGV0ZXJtaW5lQXJndW1lbnRGcm9tQW5jZXN0cnkoYXJn
dW1lbnQsIGRlZmF1bHRWYWx1ZSwgc3VpdGU9bnVsbCwgbW9kZT1udWxsKSB7Ci0gICAgICAgIGxl
dCByZXN1bHQgPSBkZWZhdWx0VmFsdWU7Ci0gICAgICAgIGxldCByb3V0ZXMgPSB0aGlzLnJvdXRl
czsKLQotICAgICAgICBpZiAoYXJndW1lbnQgaW4gcm91dGVzKQotICAgICAgICAgICAgcmVzdWx0
ID0gcm91dGVzW2FyZ3VtZW50XTsKLQotICAgICAgICBbc3VpdGUsIG1vZGVdLmZvckVhY2goYW5j
ZXN0cnkgPT4gewotICAgICAgICAgICAgaWYgKCFhbmNlc3RyeSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgICAgICBpZiAoIShhbmNlc3RyeSBpbiByb3V0ZXMpKQotICAgICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIHJvdXRlcyA9IHJvdXRlc1thbmNlc3RyeV07Ci0g
ICAgICAgICAgICBpZiAoYXJndW1lbnQgaW4gcm91dGVzKQotICAgICAgICAgICAgICAgIHJlc3Vs
dCA9IHJvdXRlc1thcmd1bWVudF07Ci0gICAgICAgIH0pOwotICAgICAgICByZXR1cm4gcmVzdWx0
OwotICAgIH0KLSAgICBoYXNBcmNoaXZlKHN1aXRlPW51bGwsIG1vZGU9bnVsbCkgewotICAgICAg
ICByZXR1cm4gdGhpcy5fZGV0ZXJtaW5lQXJndW1lbnRGcm9tQW5jZXN0cnkoJ2VuYWJsZWQnLCBm
YWxzZSwgc3VpdGUsIG1vZGUpOwotICAgIH0KLSAgICBwYXRoRm9yKHN1aXRlPW51bGwsIG1vZGU9
bnVsbCwgdGVzdD1udWxsKSB7Ci0gICAgICAgIGlmICghdGhpcy5oYXNBcmNoaXZlKHN1aXRlKSkK
LSAgICAgICAgICAgIHJldHVybiBudWxsOwotCi0gICAgICAgIGxldCBjYW5kaWRhdGUgPSB0aGlz
Ll9kZXRlcm1pbmVBcmd1bWVudEZyb21BbmNlc3RyeSgncGF0aCcsICcnLCBzdWl0ZSwgbW9kZSk7
Ci0gICAgICAgIGlmICghdGVzdCB8fCAhY2FuZGlkYXRlLnN0YXJ0c1dpdGgoJyonKSkKLSAgICAg
ICAgICAgIHJldHVybiBjYW5kaWRhdGU7Ci0gICAgICAgIHJldHVybiB0ZXN0LnN1YnN0cmluZygw
LCB0ZXN0Lmxhc3RJbmRleE9mKCcuJykpICsgY2FuZGlkYXRlLnN1YnN0cmluZygxKTsKLSAgICB9
Ci0gICAgbGFiZWxGb3Ioc3VpdGU9bnVsbCwgbW9kZT1udWxsKSB7Ci0gICAgICAgIGlmICghdGhp
cy5oYXNBcmNoaXZlKHN1aXRlKSkKLSAgICAgICAgICAgIHJldHVybiBudWxsOwotCi0gICAgICAg
IHJldHVybiB0aGlzLl9kZXRlcm1pbmVBcmd1bWVudEZyb21BbmNlc3RyeSgnbGFiZWwnLCAnUmVz
dWx0IGFyY2hpdmUnLCBzdWl0ZSwgbW9kZSk7Ci0gICAgfQotfTsKLQotY29uc3QgQXJjaGl2ZVJv
dXRlciA9IG5ldyBfQXJjaGl2ZVJvdXRlcigpOwotCi1leHBvcnQge0FyY2hpdmVSb3V0ZXJ9OwpJ
bmRleDogVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9zdGF0aWMvanMvY29tbWl0
LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvc3Rh
dGljL2pzL2NvbW1pdC5qcwkocmV2aXNpb24gMjY1NTMxKQorKysgVG9vbHMvcmVzdWx0c2RicHkv
cmVzdWx0c2RicHkvdmlldy9zdGF0aWMvanMvY29tbWl0LmpzCShub25leGlzdGVudCkKQEAgLTEs
NDQ3ICswLDAgQEAKLS8vIENvcHlyaWdodCAoQykgMjAxOSwgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLS8vIGFyZSBt
ZXQ6Ci0vLyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLS8vICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIKLS8vIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotLy8gVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotLy8gUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0vLyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0vLyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotLy8gU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0vLyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotLy8gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLS8vIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLS8vIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLQotaW1wb3J0IHtFcnJvckRpc3BsYXksIGVzY2FwZUhUTUwsIHBh
cmFtc1RvUXVlcnksIHF1ZXJ5VG9QYXJhbXN9IGZyb20gJy9hc3NldHMvanMvY29tbW9uLmpzJzsK
LQotY29uc3QgVElNRVNUQU1QX1RPX1VVSURfTVVMVElQTElFUiA9IDEwMDsKLQotZnVuY3Rpb24g
Q29tbWl0VGFibGUoY29tbWl0cywgcmVwb3NpdG9yeUlkcyA9IFtdLCBvbmVMaW5lID0gZmFsc2Up
IHsKLSAgICB2YXIgcm93cyA9IFtdCi0gICAgaWYgKCFjb21taXRzIHx8ICFjb21taXRzLmxlbmd0
aCkKLSAgICAgICAgcmV0dXJuIEVycm9yRGlzcGxheSh7ZXJyb3I6ICdObyBDb21taXRzIEZvdW5k
JywgZGVzY3JpcHRpb246ICdDYW5ub3QgZGlzcGxheSB0aGUgY29tbWl0IHRhYmxlLCBubyBjb21t
aXRzIGZvdW5kLid9KTsKLSAgICB2YXIgc29ydGVkX2NvbW1pdHMgPSBjb21taXRzLnNvcnQoKGEs
IGIpID0+IHsKLSAgICAgICAgcmV0dXJuIChiLnRpbWVzdGFtcCAqIFRJTUVTVEFNUF9UT19VVUlE
X01VTFRJUExJRVIgKyBiLm9yZGVyKSAtIChhLnRpbWVzdGFtcCAqIFRJTUVTVEFNUF9UT19VVUlE
X01VTFRJUExJRVIgKyBhLm9yZGVyKTsKLSAgICB9KTsKLQotICAgIHZhciByZXBvc2l0b3JpZXNf
d2l0aF9jb21taXRzID0gW10KLSAgICBpZiAoIXJlcG9zaXRvcnlJZHMgfHwgIXJlcG9zaXRvcnlJ
ZHMubGVuZ3RoKSB7Ci0gICAgICAgIHJlcG9zaXRvcnlJZHMgPSBbXTsKLSAgICAgICAgY29tbWl0
cy5mb3JFYWNoKChjb21taXQpID0+IHsKLSAgICAgICAgICAgIGlmIChyZXBvc2l0b3J5SWRzLmlu
ZGV4T2YoY29tbWl0LnJlcG9zaXRvcnlfaWQpIDwgMCkKLSAgICAgICAgICAgICAgICByZXBvc2l0
b3J5SWRzLnB1c2goY29tbWl0LnJlcG9zaXRvcnlfaWQpOwotICAgICAgICB9KTsKLSAgICAgICAg
cmVwb3NpdG9yeUlkcy5zb3J0KCk7Ci0gICAgfQotCi0gICAgdmFyIGxhc3RWYWxpZENlbGxGb3JJ
bmRleCA9IFswXTsKLSAgICB2YXIgcm93cyA9IFtbe3Jvd3NwYW46IDEsIHRpbWVzdGFtcDogc29y
dGVkX2NvbW1pdHNbMF0udGltZXN0YW1wfV1dOwotCi0gICAgZm9yIChjb25zdCByZXBvc2l0b3J5
IG9mIHJlcG9zaXRvcnlJZHMpIHsKLSAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8
IHNvcnRlZF9jb21taXRzLmxlbmd0aDsgKytpbmRleCkgewotICAgICAgICAgICAgaWYgKHNvcnRl
ZF9jb21taXRzW2luZGV4XS5yZXBvc2l0b3J5X2lkID09PSByZXBvc2l0b3J5KSB7Ci0gICAgICAg
ICAgICAgICAgcmVwb3NpdG9yaWVzX3dpdGhfY29tbWl0cy5wdXNoKHJlcG9zaXRvcnkpOwotCi0g
ICAgICAgICAgICAgICAgbGFzdFZhbGlkQ2VsbEZvckluZGV4LnB1c2goMCk7Ci0gICAgICAgICAg
ICAgICAgcm93c1swXS5wdXNoKHtyb3dzcGFuOiAxLCBjb21taXQ6IHNvcnRlZF9jb21taXRzW2lu
ZGV4XX0pOwotICAgICAgICAgICAgICAgIHNvcnRlZF9jb21taXRzLnNwbGljZShpbmRleCwgMSk7
Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9
Ci0KLSAgICBmb3IgKGNvbnN0IGNvbW1pdCBvZiBzb3J0ZWRfY29tbWl0cykgewotICAgICAgICBs
ZXQgcmVwb19pbmRleCA9IHJlcG9zaXRvcmllc193aXRoX2NvbW1pdHMuaW5kZXhPZihjb21taXQu
cmVwb3NpdG9yeV9pZCk7Ci0gICAgICAgIGlmIChyZXBvX2luZGV4IDwgMCkKLSAgICAgICAgICAg
IGNvbnRpbnVlOwotICAgICAgICBpZiAoIXJvd3Nbcm93cy5sZW5ndGggLSAxXVtyZXBvX2luZGV4
ICsgMV0gJiYgY29tbWl0LnRpbWVzdGFtcCA9PT0gcm93c1tsYXN0VmFsaWRDZWxsRm9ySW5kZXhb
MF1dWzBdLnRpbWVzdGFtcCkgewotICAgICAgICAgICAgcm93c1tsYXN0VmFsaWRDZWxsRm9ySW5k
ZXhbcmVwb19pbmRleCArIDFdXVtyZXBvX2luZGV4ICsgMV0ucm93c3BhbiAtPSAxOwotICAgICAg
ICAgICAgcm93c1tyb3dzLmxlbmd0aCAtIDFdW3JlcG9faW5kZXggKyAxXSA9IHtyb3dzcGFuOiAx
LCBjb21taXQ6IGNvbW1pdH07Ci0gICAgICAgICAgICBsYXN0VmFsaWRDZWxsRm9ySW5kZXhbcmVw
b19pbmRleCArIDFdID0gcm93cy5sZW5ndGggLSAxOwotICAgICAgICAgICAgY29udGludWU7Ci0g
ICAgICAgIH0KLQotICAgICAgICByb3dzLnB1c2gobmV3IEFycmF5KHJlcG9zaXRvcmllc193aXRo
X2NvbW1pdHMubGVuZ3RoICsgMSkuZmlsbChudWxsKSk7Ci0gICAgICAgIGlmIChjb21taXQudGlt
ZXN0YW1wID09PSByb3dzW2xhc3RWYWxpZENlbGxGb3JJbmRleFswXV1bMF0udGltZXN0YW1wKQot
ICAgICAgICAgICAgcm93c1tsYXN0VmFsaWRDZWxsRm9ySW5kZXhbMF1dWzBdLnJvd3NwYW4gKz0g
MQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHJvd3Nbcm93cy5sZW5ndGggLSAxXVswXSA9
IHtyb3dzcGFuOiAxLCB0aW1lc3RhbXA6IGNvbW1pdC50aW1lc3RhbXB9OwotICAgICAgICAgICAg
bGFzdFZhbGlkQ2VsbEZvckluZGV4WzBdID0gcm93cy5sZW5ndGggLSAxOwotICAgICAgICB9Ci0g
ICAgICAgIHJvd3Nbcm93cy5sZW5ndGggLSAxXVtyZXBvX2luZGV4ICsgMV0gPSB7cm93c3Bhbjog
MSwgY29tbWl0OiBjb21taXR9OwotICAgICAgICBsYXN0VmFsaWRDZWxsRm9ySW5kZXhbcmVwb19p
bmRleCArIDFdID0gcm93cy5sZW5ndGggLSAxOwotICAgICAgICBmb3IgKGxldCBpbmRleCA9IDA7
IGluZGV4IDwgcmVwb3NpdG9yaWVzX3dpdGhfY29tbWl0cy5sZW5ndGg7ICsraW5kZXgpIHsKLSAg
ICAgICAgICAgIGlmIChpbmRleCAhPSByZXBvX2luZGV4KQotICAgICAgICAgICAgICAgIHJvd3Nb
bGFzdFZhbGlkQ2VsbEZvckluZGV4W2luZGV4ICsgMV1dW2luZGV4ICsgMV0ucm93c3BhbiArPSAx
OwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIGA8dGFibGUgY2xhc3M9InRhYmxlIGZ1
bGwtd2lkdGggY29tbWl0LXRhYmxlIj4KLSAgICAgICAgPHRoZWFkPgotICAgICAgICAgICAgPHRo
PjwvdGg+Ci0gICAgICAgICAgICAke3JlcG9zaXRvcmllc193aXRoX2NvbW1pdHMubWFwKGlkID0+
IGA8dGg+JHtpZH08L3RoPmApLmpvaW4oJycpfQotICAgICAgICA8L3RoZWFkPgotICAgICAgICA8
dGJvZHk+Ci0gICAgICAgICAgICAke3Jvd3MubWFwKHJvdyA9PmA8dHI+Ci0gICAgICAgICAgICAg
ICAgJHtyb3cubWFwKGZ1bmN0aW9uKGNlbGwpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFj
ZWxsKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICcnOwotICAgICAgICAgICAgICAg
ICAgICBpZiAoY2VsbC50aW1lc3RhbXApCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
YDx0ZCByb3dzcGFuPSIke2NlbGwucm93c3Bhbn0iPiR7bmV3IERhdGUoY2VsbC50aW1lc3RhbXAg
KiAxMDAwKS50b0xvY2FsZVN0cmluZygpfTwvdGQ+YDsKLQotICAgICAgICAgICAgICAgICAgICBs
ZXQgY29tbWl0QXJncyA9IHBhcmFtc1RvUXVlcnkoewotICAgICAgICAgICAgICAgICAgICAgICAg
cmVwb3NpdG9yeV9pZDogW2NlbGwuY29tbWl0LnJlcG9zaXRvcnlfaWRdLAotICAgICAgICAgICAg
ICAgICAgICAgICAgYnJhbmNoOiBbY2VsbC5jb21taXQuYnJhbmNoXSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGlkOiBbY2VsbC5jb21taXQuaWRdLAotICAgICAgICAgICAgICAgICAgICB9KTsK
LSAgICAgICAgICAgICAgICAgICAgbGV0IGludmVzdGlnYXRlQXJncyA9IHtpZDogW2NlbGwuY29t
bWl0LmlkXX07Ci0gICAgICAgICAgICAgICAgICAgIGlmICghWydtYXN0ZXInLCAndHJ1bmsnXS5p
bmNsdWRlcyhjZWxsLmNvbW1pdC5icmFuY2gpKQotICAgICAgICAgICAgICAgICAgICAgICAgaW52
ZXN0aWdhdGVBcmdzLmJyYW5jaCA9IFtjZWxsLmNvbW1pdC5icmFuY2hdOwotCi0gICAgICAgICAg
ICAgICAgICAgIHJldHVybiBgPHRkIHJvd3NwYW49IiR7Y2VsbC5yb3dzcGFufSI+Ci0gICAgICAg
ICAgICAgICAgICAgICAgICA8YSBocmVmPSIvY29tbWl0PyR7Y29tbWl0QXJnc30iPiR7Y2VsbC5j
b21taXQuaWR9PC9hPiA8YnI+Ci0gICAgICAgICAgICAgICAgICAgICAgICBCcmFuY2g6ICR7Y2Vs
bC5jb21taXQuYnJhbmNofSA8YnI+Ci0gICAgICAgICAgICAgICAgICAgICAgICBDb21taXR0ZXI6
ICR7ZXNjYXBlSFRNTChjZWxsLmNvbW1pdC5jb21taXR0ZXIpfSA8YnI+Ci0gICAgICAgICAgICAg
ICAgICAgICAgICA8YSBocmVmPSIvY29tbWl0L2luZm8/JHtjb21taXRBcmdzfSI+TW9yZSBJbmZv
PC9hPjxicj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii9pbnZlc3RpZ2F0ZT8k
e3BhcmFtc1RvUXVlcnkoaW52ZXN0aWdhdGVBcmdzKX0iPlRlc3QgcmVzdWx0cyBmb3IgY29tbWl0
PC9hPgotICAgICAgICAgICAgICAgICAgICAgICAgJHtmdW5jdGlvbigpIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoIWNlbGwuY29tbWl0Lm1lc3NhZ2UpCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiAnJzsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAob25lTGluZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGA8
YnI+PGRpdj4ke2VzY2FwZUhUTUwoY2VsbC5jb21taXQubWVzc2FnZS5zcGxpdCgnXG4nKVswXSl9
PC9kaXY+YDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYDxicj48ZGl2PiR7
ZXNjYXBlSFRNTChjZWxsLmNvbW1pdC5tZXNzYWdlKX08L2Rpdj5gOwotICAgICAgICAgICAgICAg
ICAgICAgICAgfSgpfQotICAgICAgICAgICAgICAgICAgICA8L3RkPmA7Ci0gICAgICAgICAgICAg
ICAgfSkuam9pbignJyl9Ci0gICAgICAgICAgICA8L3RyPmApLmpvaW4oJycpfQotICAgICAgICA8
L3Rib2R5PgotICAgIDwvdGFibGU+YDsKLX0KLQotY2xhc3MgQ29tbWl0IHsKLSAgICBjb25zdHJ1
Y3Rvcihqc29uKSB7Ci0gICAgICAgIHRoaXMuYnJhbmNoID0ganNvbi5icmFuY2g7Ci0gICAgICAg
IHRoaXMuY29tbWl0dGVyID0ganNvbi5jb21taXR0ZXI7Ci0gICAgICAgIHRoaXMuaWQgPSBqc29u
LmlkOwotICAgICAgICB0aGlzLm1lc3NhZ2UgPSBqc29uLm1lc3NhZ2U7Ci0gICAgICAgIHRoaXMu
b3JkZXIgPSBqc29uLm9yZGVyOwotICAgICAgICB0aGlzLnJlcG9zaXRvcnlfaWQgPSBqc29uLnJl
cG9zaXRvcnlfaWQ7Ci0gICAgICAgIHRoaXMudGltZXN0YW1wID0ganNvbi50aW1lc3RhbXA7Ci0g
ICAgICAgIHRoaXMudXVpZCA9IHRoaXMudGltZXN0YW1wICogVElNRVNUQU1QX1RPX1VVSURfTVVM
VElQTElFUiArIHRoaXMub3JkZXI7Ci0gICAgfQotICAgIGNvbXBhcmUoY29tbWl0KSB7Ci0gICAg
ICAgIHJldHVybiB0aGlzLnV1aWQgLSBjb21taXQudXVpZDsKLSAgICB9Ci19OwotCi1jbGFzcyBf
Q29tbWl0QmFuayB7Ci0gICAgY29uc3RydWN0b3IoKSB7Ci0gICAgICAgIHRoaXMuY29tbWl0cyA9
IFtdOwotCi0gICAgICAgIGNvbnN0IHBhcmFtcyA9IHF1ZXJ5VG9QYXJhbXMoZG9jdW1lbnQuVVJM
LnNwbGl0KCc/JylbMV0pOwotCi0gICAgICAgIHRoaXMuX2JyYW5jaGVzID0gbmV3IFNldChwYXJh
bXMuYnJhbmNoKTsKLSAgICAgICAgdGhpcy5fcmVwb3NpdG9yaWVzID0gbmV3IFNldChwYXJhbXMu
cmVwb3NpdG9yeV9pZCk7Ci0gICAgICAgIHRoaXMuX2JlZ2luVXVpZCA9IG51bGw7Ci0gICAgICAg
IHRoaXMuX2VuZFV1aWQgPSBudWxsOwotICAgICAgICB0aGlzLmNhbGxiYWNrcyA9IFtdOwotCi0g
ICAgfQotICAgIGxhdGVzdChwYXJhbXMpIHsKLSAgICAgICAgdGhpcy5fYnJhbmNoZXMgPSBuZXcg
U2V0KHBhcmFtcy5icmFuY2gpOwotICAgICAgICB0aGlzLl9yZXBvc2l0b3JpZXMgPSBuZXcgU2V0
KHBhcmFtcy5yZXBvc2l0b3J5X2lkKTsKLSAgICAgICAgdGhpcy5fYmVnaW5VdWlkID0gbnVsbDsK
LSAgICAgICAgdGhpcy5fZW5kVXVpZCA9IG51bGw7Ci0KLSAgICAgICAgLy8gT25seSBwcm92aWRl
IHRoZSBsYXRlc3QgY29tbWl0cwotICAgICAgICBjb25zdCBzZWxmID0gdGhpczsKLSAgICAgICAg
cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkgewotICAgICAgICAg
ICAgZmV0Y2goT2JqZWN0LmtleXMocGFyYW1zKS5sZW5ndGggPyBgYXBpL2NvbW1pdHM/JHtwYXJh
bXNUb1F1ZXJ5KHBhcmFtcyl9YCA6ICdhcGkvY29tbWl0cycpLnRoZW4ocmVzcG9uc2UgPT4gewot
ICAgICAgICAgICAgICAgIHJlc3BvbnNlLmpzb24oKS50aGVuKGpzb24gPT4gewotICAgICAgICAg
ICAgICAgICAgICBzZWxmLl9iZWdpblV1aWQgPSBNYXRoLmZsb29yKERhdGUubm93KCkgLyAxMDAw
KTsKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fZW5kVXVpZCA9IDA7Ci0KLSAgICAgICAgICAg
ICAgICAgICAgY29uc3Qgb2xkZXN0SWRGb3JSZXBvID0ge307Ci0gICAgICAgICAgICAgICAgICAg
IGNvbnN0IGNhbmRpZGF0ZXMgPSBbXTsKLSAgICAgICAgICAgICAgICAgICAganNvbi5mb3JFYWNo
KGRhdHVtID0+ewotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY29tbWl0ID0gbmV3IENv
bW1pdChkYXR1bSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjYW5kaWRhdGVzLnB1c2goY29t
bWl0KTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9sZGVzdElkRm9yUmVwb1tjb21t
aXQucmVwb3NpdG9yeV9pZF0pCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb2xkZXN0SWRG
b3JSZXBvW2NvbW1pdC5yZXBvc2l0b3J5X2lkXSA9IE1hdGgubWluKGNvbW1pdC51dWlkLCBvbGRl
c3RJZEZvclJlcG9bY29tbWl0LnJlcG9zaXRvcnlfaWRdKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbGRlc3RJZEZvclJlcG9bY29t
bWl0LnJlcG9zaXRvcnlfaWRdID0gY29tbWl0LnV1aWQ7Ci0gICAgICAgICAgICAgICAgICAgIH0p
OwotCi0gICAgICAgICAgICAgICAgICAgIGxldCBvbGRlc3RWYWxpZFV1aWQgPSAwOwotICAgICAg
ICAgICAgICAgICAgICBPYmplY3Qua2V5cyhvbGRlc3RJZEZvclJlcG8pLmZvckVhY2goaWQgPT4g
ewotICAgICAgICAgICAgICAgICAgICAgICAgb2xkZXN0VmFsaWRVdWlkID0gTWF0aC5tYXgob2xk
ZXN0VmFsaWRVdWlkLCBpZCk7Ci0gICAgICAgICAgICAgICAgICAgIH0pOwotCi0gICAgICAgICAg
ICAgICAgICAgIGNhbmRpZGF0ZXMuZm9yRWFjaChjb21taXQgPT4gewotICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKGNvbW1pdC51dWlkIDw9IG9sZGVzdFZhbGlkVXVpZCkKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNv
bW1pdHMucHVzaChjb21taXQpOwotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fYmVnaW5V
dWlkID0gTWF0aC5taW4oY29tbWl0LnV1aWQsIHNlbGYuX2JlZ2luVXVpZCk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBzZWxmLl9lbmRVdWlkID0gTWF0aC5tYXgoY29tbWl0LnV1aWQsIHNlbGYu
X2VuZFV1aWQpOwotICAgICAgICAgICAgICAgICAgICB9KTsKLQotICAgICAgICAgICAgICAgICAg
ICBpZiAoc2VsZi5fYmVnaW5VdWlkID4gc2VsZi5fZW5kVXVpZCkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgc2VsZi5fYmVnaW5VdWlkID0gbnVsbDsKLSAgICAgICAgICAgICAgICAgICAgICAg
IHNlbGYuX2VuZFV1aWQgPSBudWxsOwotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAg
ICAgICAgICAgICAgcmVzb2x2ZSh0aGlzKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAg
ICAgIH0pLmNhdGNoKGVycm9yID0+IHsKLSAgICAgICAgICAgICAgICAvLyBJZiB0aGUgbG9hZCBm
YWlscywgbG9nIHRoZSBlcnJvciBhbmQgY29udGludWUKLSAgICAgICAgICAgICAgICBjb25zb2xl
LmVycm9yKEpTT04uc3RyaW5naWZ5KGVycm9yLCBudWxsLCA0KSk7Ci0gICAgICAgICAgICAgICAg
cmVqZWN0KGVycm9yKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9KTsKLSAgICB9Ci0gICAg
Y29tbWl0QnlVdWlkKHV1aWQpIHsKLSAgICAgICAgbGV0IGJlZ2luID0gMDsKLSAgICAgICAgbGV0
IGVuZCA9IHRoaXMuY29tbWl0cy5sZW5ndGggLSAxOwotICAgICAgICB3aGlsZSAoYmVnaW4gPD0g
ZW5kKSB7Ci0gICAgICAgICAgICBjb25zdCBtaWQgPSBNYXRoLmNlaWwoKGJlZ2luICsgZW5kKSAv
IDIpOwotICAgICAgICAgICAgY29uc3QgY2FuZGlkYXRlID0gdGhpcy5jb21taXRzW21pZF07Ci0g
ICAgICAgICAgICBpZiAoY2FuZGlkYXRlLnV1aWQgPT09IHV1aWQpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIGNhbmRpZGF0ZTsKLSAgICAgICAgICAgIGlmIChjYW5kaWRhdGUudXVpZCA8IHV1aWQp
Ci0gICAgICAgICAgICAgICAgYmVnaW4gPSBtaWQgKyAxOwotICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgIGVuZCA9IG1pZCAtIDE7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIG51
bGw7Ci0gICAgfQotICAgIGNvbW1pdHNEdXJpbmcobWluVXVpZCwgbWF4VXVpZCA9IDApIHsKLSAg
ICAgICAgbGV0IGNvbW1pdHMgPSBbXTsKLSAgICAgICAgbGV0IGJlZ2luID0gMDsKLSAgICAgICAg
bGV0IGVuZCA9IHRoaXMuY29tbWl0cy5sZW5ndGggLSAxOwotICAgICAgICBsZXQgY291bnRlciA9
IDA7Ci0gICAgICAgIGxldCBpbmRleCA9IHRoaXMuY29tbWl0cy5sZW5ndGggLSAxOwotCi0gICAg
ICAgIGlmIChtYXhVdWlkID09IDApCi0gICAgICAgICAgICBtYXhVdWlkID0gbWluVXVpZDsKLSAg
ICAgICAgaWYgKG1heFV1aWQgPCBtaW5VdWlkKSB7Ci0gICAgICAgICAgICBjb25zb2xlLmVycm9y
KCdJbnZhbGlkIHV1aWQgcmFuZ2UnKTsKLSAgICAgICAgICAgIHJldHVybiBjb21taXRzOwotICAg
ICAgICB9Ci0KLSAgICAgICAgd2hpbGUgKGJlZ2luIDw9IGVuZCkgewotICAgICAgICAgICAgY291
bnRlciA9IE1hdGguY2VpbCgoYmVnaW4gKyBlbmQpIC8gMik7Ci0gICAgICAgICAgICBjb25zdCBj
YW5kaWRhdGUgPSB0aGlzLmNvbW1pdHNbY291bnRlcl07Ci0gICAgICAgICAgICBpZiAobWluVXVp
ZCA8PSBjYW5kaWRhdGUudXVpZCAmJiBjYW5kaWRhdGUudXVpZCA8PSBtYXhVdWlkKSB7Ci0gICAg
ICAgICAgICAgICAgaW5kZXggPSBjb3VudGVyIC0gMTsKLSAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZS51dWlkIDwgbWluVXVp
ZCkKLSAgICAgICAgICAgICAgICBiZWdpbiA9IGNvdW50ZXIgKyAxOwotICAgICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgICAgIGVuZCA9IGNvdW50ZXIgLSAxOwotICAgICAgICB9Ci0gICAgICAg
IHdoaWxlIChjb3VudGVyIDwgdGhpcy5jb21taXRzLmxlbmd0aCkgewotICAgICAgICAgICAgY29u
c3QgY2FuZGlkYXRlID0gdGhpcy5jb21taXRzW2NvdW50ZXJdOwotICAgICAgICAgICAgaWYgKG1p
blV1aWQgPiBjYW5kaWRhdGUudXVpZCB8fCBjYW5kaWRhdGUudXVpZCA+IG1heFV1aWQpCi0gICAg
ICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGNvbW1pdHMucHVzaChjYW5kaWRhdGUpOwot
ICAgICAgICAgICAgKytjb3VudGVyOwotICAgICAgICB9Ci0KLSAgICAgICAgbGV0IHJlcG9zaXRv
cmllcyA9IG5ldyBTZXQoKTsKLSAgICAgICAgaWYgKGNvbW1pdHMubGVuZ3RoKQotICAgICAgICAg
ICAgcmVwb3NpdG9yaWVzLmFkZChjb21taXRzWzBdLnJlcG9zaXRvcnlfaWQpOwotCi0gICAgICAg
IHdoaWxlIChpbmRleCA+PSAwKSB7Ci0gICAgICAgICAgICBpZiAocmVwb3NpdG9yaWVzLmhhcyh0
aGlzLmNvbW1pdHNbaW5kZXhdLnJlcG9zaXRvcnlfaWQpKSB7Ci0gICAgICAgICAgICAgICAgLS1p
bmRleDsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIGlmICh0aGlzLl9yZXBvc2l0b3JpZXMubGVuZ3RoICYmICF0aGlzLl9yZXBvc2l0b3JpZXMu
aGFzKHRoaXMuY29tbWl0c1tpbmRleF0ucmVwb3NpdG9yeV9pZCkpIHsKLSAgICAgICAgICAgICAg
ICAtLWluZGV4OwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICBjb21taXRzLnVuc2hpZnQodGhpcy5jb21taXRzW2luZGV4XSk7Ci0gICAgICAg
ICAgICByZXBvc2l0b3JpZXMuYWRkKHRoaXMuY29tbWl0c1tpbmRleF0ucmVwb3NpdG9yeV9pZCk7
Ci0gICAgICAgICAgICBpZiAocmVwb3NpdG9yaWVzLmxlbmd0aCA9PSB0aGlzLl9yZXBvc2l0b3Jp
ZXMubGVuZ3RoKQotICAgICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgICAtLWluZGV4
OwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBjb21taXRzOwotICAgIH0KLSAgICBfbG9hZFNp
YmxpbmdzKGNvbW1pdCkgewotICAgICAgICBjb25zdCBxdWVyeSA9IHBhcmFtc1RvUXVlcnkoewot
ICAgICAgICAgICAgYnJhbmNoOiBbY29tbWl0LmJyYW5jaF0sCi0gICAgICAgICAgICByZXBvc2l0
b3J5X2lkOiBbY29tbWl0LnJlcG9zaXRvcnlfaWRdLAotICAgICAgICAgICAgaWQ6IFtjb21taXQu
aWRdLAotICAgICAgICB9KTsKLSAgICAgICAgcmV0dXJuIGZldGNoKCdhcGkvY29tbWl0cy9zaWJs
aW5ncz8nICsgcXVlcnkpLnRoZW4ocmVzcG9uc2UgPT4gewotICAgICAgICAgICAgbGV0IHNlbGYg
PSB0aGlzOwotICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxMZW5ndGggPSBzZWxmLmNvbW1pdHMu
bGVuZ3RoOwotICAgICAgICAgICAgcmVzcG9uc2UuanNvbigpLnRoZW4oanNvbiA9PiB7Ci0gICAg
ICAgICAgICAgICAgT2JqZWN0LmtleXMoanNvbikuZm9yRWFjaChrZXkgPT4gewotICAgICAgICAg
ICAgICAgICAgICBpZiAodGhpcy5fcmVwb3NpdG9yaWVzLnNpemUgPiAwICYmICF0aGlzLl9yZXBv
c2l0b3JpZXMuaGFzKGtleSkpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAg
ICAgICAgICAgICAgICAgICAgLy8gV2UgZ2V0IHNpYmlsaW5nIGNvbW1pdHMgYmFja3dhcmRzCi0g
ICAgICAgICAgICAgICAgICAgIGxldCBpbmRleCA9IHNlbGYuY29tbWl0cy5sZW5ndGggLSAxOwot
ICAgICAgICAgICAgICAgICAgICBqc29uW2tleV0uZm9yRWFjaChjb21taXRKc29uID0+IHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbW1pdCA9IG5ldyBDb21taXQoY29tbWl0SnNv
bik7Ci0gICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoaW5kZXggPj0gMCkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChzZWxmLmNvbW1pdHNbaW5kZXhdLnV1aWQgPCBjb21t
aXQudXVpZCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNvbW1pdHMu
c3BsaWNlKGluZGV4LCAwLCBjb21taXQpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAtLWluZGV4OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KHNlbGYuY29tbWl0c1tpbmRleF0udXVpZCA9PT0gY29tbWl0LnV1aWQpCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0t
aW5kZXg7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoaW5kZXggPCAwKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY29tbWl0
cy5zcGxpY2UoMCwgMCwgY29tbWl0KTsKLSAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAg
ICAgICAgICAgfSk7Ci0KLSAgICAgICAgICAgICAgICBpZiAob3JpZ2luYWxMZW5ndGggIT0gc2Vs
Zi5jb21taXRzLmxlbmd0aCkKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5jYWxsYmFja3MuZm9y
RWFjaChjYWxsYmFjayA9PiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjaygpOwot
ICAgICAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9KTsKLSAg
ICB9Ci0gICAgX2xvYWQoYmVnaW5VdWlkLCBlbmRVdWlkKSB7Ci0gICAgICAgIGlmIChlbmRVdWlk
IDwgYmVnaW5VdWlkKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGNvbnN0IGxpbWl0
ID0gMjUwMDsKLSAgICAgICAgY29uc3QgcXVlcnkgPSBwYXJhbXNUb1F1ZXJ5KHsKLSAgICAgICAg
ICAgIGJyYW5jaDogWy4uLnRoaXMuX2JyYW5jaGVzXSwKLSAgICAgICAgICAgIGxpbWl0OiBbbGlt
aXRdLAotICAgICAgICAgICAgcmVwb3NpdG9yeV9pZDogWy4uLnRoaXMuX3JlcG9zaXRvcmllc10s
Ci0gICAgICAgICAgICBhZnRlcl91dWlkOiBbYmVnaW5VdWlkXSwKLSAgICAgICAgICAgIGJlZm9y
ZV91dWlkOiBbZW5kVXVpZF0KLSAgICAgICAgfSk7Ci0KLSAgICAgICAgcmV0dXJuIGZldGNoKHF1
ZXJ5ID8gJ2FwaS9jb21taXRzPycgKyBxdWVyeSA6ICdhcGkvY29tbWl0cycpLnRoZW4ocmVzcG9u
c2UgPT4gewotICAgICAgICAgICAgbGV0IHNlbGYgPSB0aGlzOwotICAgICAgICAgICAgcmVzcG9u
c2UuanNvbigpLnRoZW4oanNvbiA9PiB7Ci0gICAgICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIGhh
dmUgZ290dGVuIGEgbGlzdCBvZiBjb21taXRzLCBpZiBub3QsIGxvZyB0aGUgcmVzdWx0IGFuZCBj
b250aW51ZS4KLSAgICAgICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoanNvbikpIHsKLSAg
ICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihKU09OLnN0cmluZ2lmeShqc29uLCBudWxs
LCA0KSk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICB9Ci0K
LSAgICAgICAgICAgICAgICBsZXQgb3JpZ2luYWxMZW5ndGggPSBzZWxmLmNvbW1pdHMubGVuZ3Ro
OwotICAgICAgICAgICAgICAgIGxldCBjb21taXRzSW5kZXggPSAwOwotICAgICAgICAgICAgICAg
IGxldCBjb3VudEZvclJlcG9zaXRvcnkgPSBuZXcgTWFwKCk7Ci0gICAgICAgICAgICAgICAgbGV0
IGZpcnN0SW5kZXhGb3JSZXBvc2l0b3J5ID0gbmV3IE1hcCgpOwotICAgICAgICAgICAgICAgIGZv
ciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBqc29uLmxlbmd0aDsgKytpbmRleCkgewotICAgICAg
ICAgICAgICAgICAgICBjb25zdCBjb21taXQgPSBuZXcgQ29tbWl0KGpzb25baW5kZXhdKTsKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKCFmaXJzdEluZGV4Rm9yUmVwb3NpdG9yeS5oYXMoY29tbWl0
LnJlcG9zaXRvcnlfaWQpKQotICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3RJbmRleEZvclJl
cG9zaXRvcnkuc2V0KGNvbW1pdC5yZXBvc2l0b3J5X2lkLCBpbmRleCk7Ci0gICAgICAgICAgICAg
ICAgICAgIGlmICghY291bnRGb3JSZXBvc2l0b3J5Lmhhcyhjb21taXQucmVwb3NpdG9yeV9pZCkp
Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb3VudEZvclJlcG9zaXRvcnkuc2V0KGNvbW1pdC5y
ZXBvc2l0b3J5X2lkLCAxKTsKLSAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgICAgICAgICAgY291bnRGb3JSZXBvc2l0b3J5LnNldChjb21taXQucmVwb3NpdG9yeV9pZCwg
Y291bnRGb3JSZXBvc2l0b3J5LmdldChjb21taXQucmVwb3NpdG9yeV9pZCkgKyAxKTsKLQotICAg
ICAgICAgICAgICAgICAgICB3aGlsZSAoY29tbWl0c0luZGV4IDwgc2VsZi5jb21taXRzLmxlbmd0
aCkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGYuY29tbWl0c1tjb21taXRzSW5k
ZXhdLnV1aWQgPiBjb21taXQudXVpZCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
bGYuY29tbWl0cy5zcGxpY2UoY29tbWl0c0luZGV4LCAwLCBjb21taXQpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICsrY29tbWl0c0luZGV4OwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKHNlbGYuY29tbWl0c1tjb21taXRzSW5kZXhdLnV1aWQgPT09IGNvbW1pdC51dWlk
KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAg
ICAgICAgKytjb21taXRzSW5kZXg7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICAgICAgaWYgKGNvbW1pdHNJbmRleCA9PT0gc2VsZi5jb21taXRzLmxlbmd0aCkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgc2VsZi5jb21taXRzLnB1c2goY29tbWl0KTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICsrY29tbWl0c0luZGV4OwotICAgICAgICAgICAgICAgICAgICAgICAg
Y29udGludWU7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgICAgICBsZXQgbWluRm91bmQgPSBiZWdpblV1aWQ7Ci0gICAgICAgICAgICAgICAg
Y291bnRGb3JSZXBvc2l0b3J5LmZvckVhY2goKGNvdW50LCByZXBvKSA9PiB7Ci0gICAgICAgICAg
ICAgICAgICAgIGlmIChjb3VudCA9PT0gbGltaXQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGxldCBjb21taXQgPSBuZXcgQ29tbWl0KGpzb25bZmlyc3RJbmRleEZvclJlcG9zaXRvcnkuZ2V0
KHJlcG8pXSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtaW5Gb3VuZCA9IE1hdGgubWF4KG1p
bkZvdW5kLCBjb21taXQudXVpZCk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICB9KTsKLSAgICAgICAgICAgICAgICBpZiAobWluRm91bmQgIT0gYmVnaW5VdWlkKQotICAg
ICAgICAgICAgICAgICAgICBzZWxmLl9sb2FkKGJlZ2luVXVpZCwgbWluRm91bmQpOwotICAgICAg
ICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fbG9hZFNpYmxpbmdzKG5l
dyBDb21taXQoanNvblswXSkpOwotCi0gICAgICAgICAgICAgICAgaWYgKG9yaWdpbmFsTGVuZ3Ro
ICE9IHNlbGYuY29tbWl0cy5sZW5ndGgpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuY2FsbGJh
Y2tzLmZvckVhY2goY2FsbGJhY2sgPT4gewotICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJh
Y2soKTsKLSAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAg
fSkuY2F0Y2goZXJyb3IgPT4gewotICAgICAgICAgICAgLy8gSWYgdGhlIGxvYWQgZmFpbHMsIGxv
ZyB0aGUgZXJyb3IgYW5kIGNvbnRpbnVlCi0gICAgICAgICAgICBjb25zb2xlLmVycm9yKEpTT04u
c3RyaW5naWZ5KGVycm9yLCBudWxsLCA0KSk7Ci0gICAgICAgIH0pOwotICAgIH0KLSAgICBhZGQo
YmVnaW5VdWlkLCBlbmRVdWlkKSB7Ci0gICAgICAgIGlmICghdGhpcy5fYmVnaW5VdWlkICYmICF0
aGlzLl9lbmRVdWlkKSB7Ci0gICAgICAgICAgICB0aGlzLl9iZWdpblV1aWQgPSBiZWdpblV1aWQ7
Ci0gICAgICAgICAgICB0aGlzLl9lbmRVdWlkID0gZW5kVXVpZDsKLSAgICAgICAgICAgIHJldHVy
biB0aGlzLl9sb2FkKGJlZ2luVXVpZCwgZW5kVXVpZCk7Ci0gICAgICAgIH0KLQotICAgICAgICBs
ZXQgcHJvbWlzZXMgPSBbXTsKLSAgICAgICAgaWYgKHRoaXMuX2JlZ2luVXVpZCAmJiBiZWdpblV1
aWQgPCB0aGlzLl9iZWdpblV1aWQpCi0gICAgICAgICAgICBwcm9taXNlcy5wdXNoKHRoaXMuX2xv
YWQoYmVnaW5VdWlkLCB0aGlzLl9iZWdpblV1aWQpKTsKLSAgICAgICAgaWYgKHRoaXMuX2VuZFV1
aWQgJiYgZW5kVXVpZCA+IHRoaXMuX2VuZFV1aWQpCi0gICAgICAgICAgICBwcm9taXNlcy5wdXNo
KHRoaXMuX2xvYWQodGhpcy5fZW5kVXVpZCwgZW5kVXVpZCkpOwotICAgICAgICByZXR1cm4gUHJv
bWlzZS5hbGwocHJvbWlzZXMpOwotICAgIH0KLSAgICByZWxvYWQoKSB7Ci0gICAgICAgIGxldCBu
ZWVkUmVsb2FkID0gZmFsc2U7Ci0gICAgICAgIGNvbnN0IHBhcmFtcyA9IHF1ZXJ5VG9QYXJhbXMo
ZG9jdW1lbnQuVVJMLnNwbGl0KCc/JylbMV0pOwotCi0gICAgICAgIGZ1bmN0aW9uIGVxdWFsKGEs
IGIpIHsKLSAgICAgICAgICAgIGlmIChhLnNpemUgIT09IGIuc2l6ZSkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBmb3IgKGxldCBlbG0gb2YgYSkgewotICAgICAg
ICAgICAgICAgIGlmICghYi5oYXMoZWxtKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0K
LQotICAgICAgICBjb25zdCBicmFuY2hTZXQgPSBuZXcgU2V0KHBhcmFtcy5icmFuY2gpOwotICAg
ICAgICBpZiAoIWVxdWFsKGJyYW5jaFNldCwgdGhpcy5fYnJhbmNoZXMpKSB7Ci0gICAgICAgICAg
ICB0aGlzLl9icmFuY2hlcyA9IGJyYW5jaFNldDsKLSAgICAgICAgICAgIG5lZWRSZWxvYWQgPSB0
cnVlOwotICAgICAgICB9Ci0gICAgICAgIGNvbnN0IHJlcG9TZXQgPSBuZXcgU2V0KHBhcmFtcy5y
ZXBvc2l0b3J5X2lkKTsKLSAgICAgICAgaWYgKCFlcXVhbChyZXBvU2V0LCB0aGlzLl9yZXBvc2l0
b3JpZXMpKSB7Ci0gICAgICAgICAgICB0aGlzLl9yZXBvc2l0b3JpZXMgPSByZXBvU2V0OwotICAg
ICAgICAgICAgbmVlZFJlbG9hZCA9IHRydWU7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAobmVl
ZFJlbG9hZCkgewotICAgICAgICAgICAgdGhpcy5jb21taXRzID0gW107Ci0gICAgICAgICAgICBy
ZXR1cm4gdGhpcy5fbG9hZCh0aGlzLl9iZWdpblV1aWQsIHRoaXMuX2VuZFV1aWQpOwotICAgICAg
ICB9Ci0gICAgfQotfQotCi1jb25zdCBDb21taXRCYW5rID0gbmV3IF9Db21taXRCYW5rKCk7Ci0K
LWV4cG9ydCB7Q29tbWl0LCBDb21taXRCYW5rLCBDb21taXRUYWJsZSwgVElNRVNUQU1QX1RPX1VV
SURfTVVMVElQTElFUn07CkluZGV4OiBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS92aWV3
L3N0YXRpYy9qcy9jb21tb24uanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvcmVzdWx0c2RicHkvcmVz
dWx0c2RicHkvdmlldy9zdGF0aWMvanMvY29tbW9uLmpzCShyZXZpc2lvbiAyNjU1MzEpCisrKyBU
b29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS92aWV3L3N0YXRpYy9qcy9jb21tb24uanMJKG5v
bmV4aXN0ZW50KQpAQCAtMSwxOTIgKzAsMCBAQAotLy8gQ29weXJpZ2h0IChDKSAyMDE5LCAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotLy8gYXJlIG1ldDoKLS8vIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotLy8gICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLS8vCi0vLyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIgotLy8gQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0vLyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0vLyBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLS8vIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLS8vIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0vLyBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LS8vIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0vLyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotLy8gQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
Ly8gVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1mdW5jdGlvbiBFcnJvckRpc3Bs
YXkoanNvbikgewotICAgIHJldHVybiBgPGRpdiBjbGFzcz0iY29udGVudCI+Ci0gICAgICAgIDxo
Mj4ke2pzb25bJ2Vycm9yJ119PFxoMj4KLSAgICAgICAgPGRpdiBjbGFzcz0idGV4dCI+JHtqc29u
WydkZXNjcmlwdGlvbiddfTwvZGl2PgotICAgIDwvZGl2PmA7Ci19Ci0KLWZ1bmN0aW9uIHF1ZXJ5
VG9QYXJhbXMocXVlcnkpIHsKLSAgICBpZiAoIXF1ZXJ5KQotICAgICAgICByZXR1cm4ge307Ci0K
LSAgICB2YXIgcmVzdWx0ID0ge307Ci0gICAgcXVlcnkuc3BsaXQoJyYnKS5mb3JFYWNoKChlbGVt
ZW50KSA9PiB7Ci0gICAgICAgIHZhciBzcGxpdFF1ZXJ5ID0gZWxlbWVudC5zcGxpdCgnPScpOwot
ICAgICAgICBpZiAoc3BsaXRRdWVyeS5sZW5ndGggIT0gMikgewotICAgICAgICAgICAgaWYgKCFy
ZXN1bHRbc3BsaXRRdWVyeVswXV0pCi0gICAgICAgICAgICAgICAgcmVzdWx0W3NwbGl0UXVlcnlb
MF1dID0gbnVsbDsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBpZiAo
IXJlc3VsdFtzcGxpdFF1ZXJ5WzBdXSkKLSAgICAgICAgICAgIHJlc3VsdFtzcGxpdFF1ZXJ5WzBd
XSA9IFtdOwotICAgICAgICByZXN1bHRbZGVjb2RlVVJJQ29tcG9uZW50KHNwbGl0UXVlcnlbMF0p
XS5wdXNoKGRlY29kZVVSSUNvbXBvbmVudChzcGxpdFF1ZXJ5WzFdKSk7Ci0gICAgfSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLQotZnVuY3Rpb24gcGFyYW1zVG9RdWVyeShqc29uKSB7Ci0gICAg
dmFyIHJlc3VsdCA9ICcnOwotICAgIGZvciAodmFyIHBhcmFtZXRlciBpbiBqc29uKSB7Ci0gICAg
ICAgIGlmICghanNvbltwYXJhbWV0ZXJdKSB7Ci0gICAgICAgICAgICByZXN1bHQgKz0gKHJlc3Vs
dCA/ICcmJyA6ICcnKSArIGVuY29kZVVSSUNvbXBvbmVudChwYXJhbWV0ZXIpOwotICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgIH0KLSAgICAgICAganNvbltwYXJhbWV0ZXJdLmZvckVhY2go
KHZhbHVlKSA9PiB7Ci0gICAgICAgICAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09
IHVuZGVmaW5lZCkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICByZXN1bHQg
Kz0gKHJlc3VsdCA/ICcmJyA6ICcnKSArIGVuY29kZVVSSUNvbXBvbmVudChwYXJhbWV0ZXIpICsg
Jz0nICsgZW5jb2RlVVJJQ29tcG9uZW50KHZhbHVlKTsKLSAgICAgICAgfSk7Ci0gICAgfQotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci0KLWNsYXNzIFF1ZXJ5TW9kaWZpZXIgewotICAgIGNvbnN0cnVj
dG9yKGFyZ3VtZW50KSB7Ci0gICAgICAgIHRoaXMuYXJndW1lbnQgPSBhcmd1bWVudDsKLSAgICB9
Ci0KLSAgICBjdXJyZW50KCkgewotICAgICAgICB2YXIgcGFyYW1zID0gcXVlcnlUb1BhcmFtcyhk
b2N1bWVudC5VUkwuc3BsaXQoJz8nKVsxXSk7Ci0gICAgICAgIGlmICghcGFyYW1zW3RoaXMuYXJn
dW1lbnRdKQotICAgICAgICAgICAgcmV0dXJuIFtdOwotICAgICAgICByZXR1cm4gcGFyYW1zW3Ro
aXMuYXJndW1lbnRdOwotICAgIH0KLQotICAgIGFwcGVuZCh2YWx1ZSkgewotICAgICAgICBjb25z
dCBzcGxpdFVSTCA9IGRvY3VtZW50LlVSTC5zcGxpdCgnPycpOwotICAgICAgICB2YXIgcGFyYW1z
ID0gcXVlcnlUb1BhcmFtcyhzcGxpdFVSTFsxXSk7Ci0gICAgICAgIGlmICghcGFyYW1zW3RoaXMu
YXJndW1lbnRdKQotICAgICAgICAgICAgcGFyYW1zW3RoaXMuYXJndW1lbnRdID0gW107Ci0gICAg
ICAgIGlmIChwYXJhbXNbdGhpcy5hcmd1bWVudF0uaW5kZXhPZih2YWx1ZSkgPj0gMCkKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgcGFyYW1zW3RoaXMuYXJndW1lbnRdLnB1c2godmFsdWUp
OwotCi0gICAgICAgIGNvbnN0IHF1ZXJ5U3RyaW5nID0gcGFyYW1zVG9RdWVyeShwYXJhbXMpOwot
ICAgICAgICB3aW5kb3cuaGlzdG9yeS5wdXNoU3RhdGUocXVlcnlTdHJpbmcsICcnLCBzcGxpdFVS
TFswXSArICc/JyArIHF1ZXJ5U3RyaW5nKTsKLSAgICB9Ci0KLSAgICByZW1vdmUodmFsdWUgPSBu
dWxsKSB7Ci0gICAgICAgIGNvbnN0IHNwbGl0VVJMID0gZG9jdW1lbnQuVVJMLnNwbGl0KCc/Jyk7
Ci0gICAgICAgIHZhciBwYXJhbXMgPSBxdWVyeVRvUGFyYW1zKHNwbGl0VVJMWzFdKTsKLSAgICAg
ICAgaWYgKCFwYXJhbXNbdGhpcy5hcmd1bWVudF0pCi0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIGlmICh2YWx1ZSA9PT0gbnVsbCkKLSAgICAgICAgICAgIGRlbGV0ZSBwYXJhbXNbdGhpcy5h
cmd1bWVudF07Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgY29uc3QgaW5kZXggPSBwYXJh
bXNbdGhpcy5hcmd1bWVudF0uaW5kZXhPZih2YWx1ZSk7Ci0gICAgICAgICAgICBpZiAoaW5kZXgg
PCAwKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIHBhcmFtc1t0aGlzLmFy
Z3VtZW50XS5zcGxpY2UoaW5kZXgsIDEpOwotICAgICAgICB9Ci0KLSAgICAgICAgY29uc3QgcXVl
cnlTdHJpbmcgPSBwYXJhbXNUb1F1ZXJ5KHBhcmFtcyk7Ci0gICAgICAgIGNvbnN0IHVybCA9IHNw
bGl0VVJMWzBdICsgKHF1ZXJ5U3RyaW5nID8gJz8nICsgcXVlcnlTdHJpbmcgOiAnJyk7Ci0gICAg
ICAgIHdpbmRvdy5oaXN0b3J5LnB1c2hTdGF0ZShxdWVyeVN0cmluZywgJycsIHVybCk7Ci0gICAg
fQotCi0gICAgcmVwbGFjZSh2YWx1ZSkgewotICAgICAgICBjb25zdCBzcGxpdFVSTCA9IGRvY3Vt
ZW50LlVSTC5zcGxpdCgnPycpOwotICAgICAgICB2YXIgcGFyYW1zID0gcXVlcnlUb1BhcmFtcyhz
cGxpdFVSTFsxXSk7Ci0gICAgICAgIHBhcmFtc1t0aGlzLmFyZ3VtZW50XSA9IFt2YWx1ZV07Ci0K
LSAgICAgICAgY29uc3QgcXVlcnlTdHJpbmcgPSBwYXJhbXNUb1F1ZXJ5KHBhcmFtcyk7Ci0gICAg
ICAgIHdpbmRvdy5oaXN0b3J5LnB1c2hTdGF0ZShxdWVyeVN0cmluZywgJycsIHNwbGl0VVJMWzBd
ICsgJz8nICsgcXVlcnlTdHJpbmcpOwotICAgICB9Ci19Ci0KLS8vIEJhc2VkIG9uIDxodHRwczov
L3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy82MjM0NzczL2Nhbi1pLWVzY2FwZS1odG1sLXNw
ZWNpYWwtY2hhcnMtaW4tamF2YXNjcmlwdD4KLWZ1bmN0aW9uIGVzY2FwZUhUTUwodGV4dCkgewot
ICAgIHJldHVybiB0ZXh0LnJlcGxhY2UoL1smPCInXG5dL2csIGZ1bmN0aW9uKGNoYXJhY3Rlcikg
ewotICAgICAgICBzd2l0Y2ggKGNoYXJhY3RlcikgewotICAgICAgICAgICAgY2FzZSAnJic6Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuICcmYW1wOyc7Ci0gICAgICAgICAgICBjYXNlICc8JzoKLSAg
ICAgICAgICAgICAgICByZXR1cm4gJyZsdDsnOwotICAgICAgICAgICAgY2FzZSAnIic6Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuICcmcXVvdDsnOwotICAgICAgICAgICAgY2FzZSAnXG4nOgotICAg
ICAgICAgICAgICAgIHJldHVybiAnPGJyPic7Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAg
ICAgICAgICAgIHJldHVybiAnJiMwMzk7JzsKLSAgICAgICAgfQotICB9KTsKLX0KLQotZnVuY3Rp
b24gZGVlcENvbXBhcmUoYSwgYikgewotICAgIGlmIChhID09PSBiKQotICAgICAgICByZXR1cm4g
dHJ1ZTsKLQotICAgIGlmIChBcnJheS5pc0FycmF5KGEpICYmIEFycmF5LmlzQXJyYXkoYikpIHsK
LSAgICAgICAgaWYgKGEubGVuZ3RoICE9IGIubGVuZ3RoKQotICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGEubGVuZ3RoOyArK2kpIHsKLSAgICAg
ICAgICAgIGlmICghZGVlcENvbXBhcmUoYVtpXSwgYltpXSkpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAg
IGlmICghKGEgaW5zdGFuY2VvZiBPYmplY3QpIHx8ICEoYiBpbnN0YW5jZW9mIE9iamVjdCkpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGZvciAobGV0IGtleSBpbiBhKSB7Ci0gICAgICAg
IGlmICghKGtleSBpbiBiKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgaWYg
KCFkZWVwQ29tcGFyZShhW2tleV0sIGJba2V5XSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgfQotICAgIGZvciAobGV0IGtleSBpbiBiICkgewotICAgICAgICBpZiAoIShrZXkgaW4g
YSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwot
fQotCi1mdW5jdGlvbiBwZXJjZW50YWdlKHZhbHVlLCBtYXgpCi17Ci0gICAgaWYgKHZhbHVlID09
PSBtYXgpCi0gICAgICAgIHJldHVybiAnMTAwICUnOwotICAgIGlmICghdmFsdWUpCi0gICAgICAg
IHJldHVybiAnMCAlJzsKLSAgICBjb25zdCByZXN1bHQgPSBNYXRoLnJvdW5kKHZhbHVlIC8gbWF4
ICogMTAwKTsKLSAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgcmV0dXJuICc8MSAlJzsKLSAgICBp
ZiAocmVzdWx0ID09PSAxMDApCi0gICAgICAgIHJldHVybiAnOTkgJSc7Ci0gICAgcmV0dXJuIGAk
e3Jlc3VsdH0gJWAKLX0KLQotZnVuY3Rpb24gZWxhcHNlZFRpbWUoc3RhcnRUaW1lc3RhbXAsIGVu
ZFRpbWVzdGFtcCkKLXsKLSAgICBjb25zdCB0aW1lID0gbmV3IERhdGUoKGVuZFRpbWVzdGFtcCAt
IHN0YXJ0VGltZXN0YW1wKSAqIDEwMDApOwotICAgIGxldCByZXN1bHQgPSAnJzsKLSAgICBpZiAo
dGltZS5nZXRNaW51dGVzKCkpCi0gICAgICAgIHJlc3VsdCArPSBgJHt0aW1lLmdldE1pbnV0ZXMo
KX0gbWludXRlJHt0aW1lLmdldE1pbnV0ZXMoKSA9PSAxID8gJycgOiAncyd9IGFuZCBgOwotICAg
IHJlc3VsdCArPSBgJHt0aW1lLmdldFNlY29uZHMoKX0gc2Vjb25kJHt0aW1lLmdldFNlY29uZHMo
KSA9PSAxID8gJycgOiAncyd9IHRvIHJ1bmA7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotZXhw
b3J0IHtkZWVwQ29tcGFyZSwgRXJyb3JEaXNwbGF5LCBxdWVyeVRvUGFyYW1zLCBwYXJhbXNUb1F1
ZXJ5LCBRdWVyeU1vZGlmaWVyLCBlc2NhcGVIVE1MLCBwZXJjZW50YWdlLCBlbGFwc2VkVGltZX07
CkluZGV4OiBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS92aWV3L3N0YXRpYy9qcy9jb25m
aWd1cmF0aW9uLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5
L3ZpZXcvc3RhdGljL2pzL2NvbmZpZ3VyYXRpb24uanMJKHJldmlzaW9uIDI2NTUzMSkKKysrIFRv
b2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvc3RhdGljL2pzL2NvbmZpZ3VyYXRpb24u
anMJKG5vbmV4aXN0ZW50KQpAQCAtMSwyNzAgKzAsMCBAQAotLy8gQ29weXJpZ2h0IChDKSAyMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotLy8gYXJlIG1ldDoKLS8vIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotLy8gICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLS8vCi0vLyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIgotLy8gQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0vLyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0vLyBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLS8vIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLS8vIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0vLyBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LS8vIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0vLyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotLy8gQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
Ly8gVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1pbXBvcnQge3F1ZXJ5VG9QYXJh
bXN9IGZyb20gJy9hc3NldHMvanMvY29tbW9uLmpzJzsKLQotLy8gVGhlc2UgYXJlIGZsaXBwZWQg
ZGVsaWJyYXRlbHksIGl0IG1ha2VzIHRoZSBmcm9tUXVlcnkgZnVuY3Rpb24gcmV0dXJuIGNvbmZp
Z3VyYXRpb25zIGluIGFuCi0vLyBpbnR1aXRpdmUgb3JkZXIuCi1jb25zdCBSRVFVSVJFRF9NRU1C
RVJTID0gWydhcmNoaXRlY3R1cmUnLCAndmVyc2lvbicsICdpc19zaW11bGF0b3InLCAncGxhdGZv
cm0nXTsKLWNvbnN0IE9QVElPTkFMX01FTUJFUlMgPSBbJ2ZsYXZvcicsICdzdHlsZScsICdtb2Rl
bCcsICd2ZXJzaW9uX25hbWUnXTsKLWNvbnN0IEZJTFRFUklOR19NRU1CRVJTID0gWydzZGsnXTsK
LWNvbnN0IFZFUlNJT05fT0ZGU0VUX0NPTlNUQU5UID0gMTAwMDsKLWNvbnN0IFNES19SRUdFWCA9
IC8oXGQrKShbQS1aXSkoXGQrKSguKikvOwotCi0vLyBUaGlzIGNsYXNzIGlzIHZlcnkgc2ltaWxh
ciB0byB0aGUgUHl0aG9uIENvbmZpZ3VyYXRpb24gY2xhc3MKLWNsYXNzIENvbmZpZ3VyYXRpb24g
ewotICAgIHN0YXRpYyBtZW1iZXJzKCkgewotICAgICAgICByZXR1cm4gWy4uLkZJTFRFUklOR19N
RU1CRVJTLCAuLi5PUFRJT05BTF9NRU1CRVJTLCAuLi5SRVFVSVJFRF9NRU1CRVJTXTsKLSAgICB9
Ci0gICAgc3RhdGljIGZyb21RdWVyeSgpIHsKLSAgICAgICAgY29uc3QgcGFyYW1zID0gcXVlcnlU
b1BhcmFtcyhkb2N1bWVudC5VUkwuc3BsaXQoJz8nKVsxXSk7Ci0gICAgICAgIGxldCBjb25maWdz
ID0gW25ldyBDb25maWd1cmF0aW9uKCldOwotCi0gICAgICAgIENvbmZpZ3VyYXRpb24ubWVtYmVy
cygpLmZvckVhY2gobWVtYmVyID0+IHsKLSAgICAgICAgICAgIGNvbnN0IGFyZ3VtZW50c0Zvck1l
bWJlciA9IHBhcmFtc1ttZW1iZXJdOwotICAgICAgICAgICAgaWYgKCFhcmd1bWVudHNGb3JNZW1i
ZXIgfHwgYXJndW1lbnRzRm9yTWVtYmVyLmxlbmd0aCA9PT0gMCkKLSAgICAgICAgICAgICAgICBy
ZXR1cm47Ci0KLSAgICAgICAgICAgIGxldCBvcmlnaW5hbENvbmZpZ3MgPSBjb25maWdzOwotICAg
ICAgICAgICAgY29uZmlncyA9IFtdOwotICAgICAgICAgICAgYXJndW1lbnRzRm9yTWVtYmVyLmZv
ckVhY2goYXJndW1lbnQgPT4gewotICAgICAgICAgICAgICAgIG9yaWdpbmFsQ29uZmlncy5mb3JF
YWNoKGNvbmZpZyA9PiB7Ci0gICAgICAgICAgICAgICAgICAgIGxldCBuZXdDb25maWcgPSBuZXcg
Q29uZmlndXJhdGlvbihjb25maWcpOwotICAgICAgICAgICAgICAgICAgICBuZXdDb25maWdbbWVt
YmVyXSA9IGFyZ3VtZW50OwotICAgICAgICAgICAgICAgICAgICBjb25maWdzLnB1c2gobmV3IENv
bmZpZ3VyYXRpb24obmV3Q29uZmlnKSk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAg
ICB9KTsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgcmV0dXJuIGNvbmZpZ3M7Ci0gICAgfQotICAg
IHN0YXRpYyB2ZXJzaW9uVG9JbnRlZ2VyKHZlcnNpb24pIHsKLSAgICAgICAgaWYgKHR5cGVvZiB2
ZXJzaW9uID09PSAnbnVtYmVyJykKLSAgICAgICAgICAgIHJldHVybiB2ZXJzaW9uOwotICAgICAg
ICBsZXQgdmVyc2lvbkxpc3QgPSBudWxsOwotICAgICAgICBpZiAodHlwZW9mIHZlcnNpb24gPT09
ICdzdHJpbmcnKQotICAgICAgICAgICAgdmVyc2lvbkxpc3QgPSB2ZXJzaW9uLnNwbGl0KCcuJyk7
Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHZlcnNpb24p
KQotICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwotICAgICAgICAgICAgdmVyc2lvbkxpc3Qg
PSB2ZXJzaW9uOwotICAgICAgICB9Ci0gICAgICAgIGlmICh2ZXJzaW9uTGlzdC5sZW5ndGggPCAx
IHx8IHZlcnNpb25MaXN0Lmxlbmd0aCA+IDMpCi0gICAgICAgICAgICByZXR1cm4gbnVsbDsKLQot
ICAgICAgICBsZXQgcmVzdWx0ID0gMDsKLSAgICAgICAgbGV0IGluZGV4ID0gMDsKLSAgICAgICAg
d2hpbGUgKGluZGV4IDwgMykgewotICAgICAgICAgICAgcmVzdWx0ICo9IFZFUlNJT05fT0ZGU0VU
X0NPTlNUQU5UOwotICAgICAgICAgICAgaWYgKGluZGV4IDwgdmVyc2lvbkxpc3QubGVuZ3RoKQot
ICAgICAgICAgICAgICAgIHJlc3VsdCArPSBwYXJzZUludCh2ZXJzaW9uTGlzdFtpbmRleF0pOwot
ICAgICAgICAgICAgKytpbmRleDsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gcmVzdWx0Owot
ICAgIH0KLSAgICBzdGF0aWMgaW50ZWdlclRvVmVyc2lvbih2ZXJzaW9uKSB7Ci0gICAgICAgIGxl
dCByZXN1bHQgPSBbMCwgMCwgMF07Ci0gICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXgg
PCByZXN1bHQubGVuZ3RoOyArK2luZGV4KSB7Ci0gICAgICAgICAgICByZXN1bHRbcmVzdWx0Lmxl
bmd0aCAtIChpbmRleCArIDEpXSA9IHZlcnNpb24gJSBWRVJTSU9OX09GRlNFVF9DT05TVEFOVDsK
LSAgICAgICAgICAgIHZlcnNpb24gPSBNYXRoLmZsb29yKHZlcnNpb24gLyBWRVJTSU9OX09GRlNF
VF9DT05TVEFOVCk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHJlc3VsdC5qb2luKCcuJyk7
Ci0gICAgfQotCi0gICAgc3RhdGljIGNvbWJpbmUoKQotICAgIHsKLSAgICAgICAgaWYgKCFhcmd1
bWVudHMubGVuZ3RoKQotICAgICAgICAgICAgcmV0dXJuIG5ldyBDb25maWd1cmF0aW9uKCk7Ci0g
ICAgICAgIGNvbnN0IGNvbWJpbmVkID0gbmV3IENvbmZpZ3VyYXRpb24oYXJndW1lbnRzWzBdKTsK
LSAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyArK2kpIHsKLSAg
ICAgICAgICAgIENvbmZpZ3VyYXRpb24ubWVtYmVycygpLmZvckVhY2gobWVtYmVyID0+IHsKLSAg
ICAgICAgICAgICAgICBpZiAoYXJndW1lbnRzW2ldW21lbWJlcl0gIT09IGNvbWJpbmVkW21lbWJl
cl0pCi0gICAgICAgICAgICAgICAgICAgIGNvbWJpbmVkW21lbWJlcl0gPSBudWxsOwotICAgICAg
ICAgICAgfSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGNvbWJpbmVkOwotICAgIH0KLQot
ICAgIGNvbnN0cnVjdG9yKGpzb24gPSB7fSkgewotICAgICAgICB0aGlzLnBsYXRmb3JtID0ganNv
bi5wbGF0Zm9ybSA/IGpzb24ucGxhdGZvcm0gOiBudWxsOwotICAgICAgICB0aGlzLnZlcnNpb24g
PSBqc29uLnZlcnNpb24gPyBDb25maWd1cmF0aW9uLnZlcnNpb25Ub0ludGVnZXIoanNvbi52ZXJz
aW9uKSA6IG51bGw7Ci0gICAgICAgIHRoaXMudmVyc2lvbl9uYW1lID0ganNvbi52ZXJzaW9uX25h
bWUgPyBqc29uLnZlcnNpb25fbmFtZSA6IG51bGw7Ci0gICAgICAgIHRoaXMuc2RrID0ganNvbi5z
ZGsgPyBqc29uLnNkayA6IG51bGw7Ci0gICAgICAgIGlmICh0eXBlb2YganNvbi5pc19zaW11bGF0
b3IgPT09ICdzdHJpbmcnKQotICAgICAgICAgICAgdGhpcy5pc19zaW11bGF0b3IgPSBqc29uLmlz
X3NpbXVsYXRvci50b0xvd2VyQ2FzZSgpID09PSAndHJ1ZScgPyB0cnVlIDogZmFsc2U7Ci0gICAg
ICAgIGVsc2UgaWYgKHR5cGVvZiBqc29uLmlzX3NpbXVsYXRvciA9PT0gJ2Jvb2xlYW4nKQotICAg
ICAgICAgICAgdGhpcy5pc19zaW11bGF0b3IgPSBqc29uLmlzX3NpbXVsYXRvcjsKLSAgICAgICAg
ZWxzZQotICAgICAgICAgICAgdGhpcy5pc19zaW11bGF0b3IgPSBudWxsOwotICAgICAgICB0aGlz
LnN0eWxlID0ganNvbi5zdHlsZSA/IGpzb24uc3R5bGUgOiBudWxsOwotICAgICAgICB0aGlzLmZs
YXZvciA9IGpzb24uZmxhdm9yID8ganNvbi5mbGF2b3IgOiBudWxsOwotICAgICAgICB0aGlzLm1v
ZGVsID0ganNvbi5tb2RlbCA/IGpzb24ubW9kZWwgOiBudWxsOwotICAgICAgICB0aGlzLmFyY2hp
dGVjdHVyZSA9IGpzb24uYXJjaGl0ZWN0dXJlID8ganNvbi5hcmNoaXRlY3R1cmUgOiBudWxsOwot
Ci0gICAgICAgIC8vIE1pZC15ZWFyIHJlbGVhc2VzIHJlYWxseSBuZWVkIHRvIGJlIHRyZWF0ZWQg
d2l0aCBhbiBlbnRpcmVseSBkaWZmZXJlbnQgdmVyc2lvbl9uYW1lLiBUaGUgb25seSB3YXkgdG8g
cmVsaWFibHkKLSAgICAgICAgLy8gaWRlbnRpZnkgc3VjaCBhIHJlbGVhc2UgaXMgd2l0aCB0aGUg
U0RLICh2ZXJzaW9uIG51bWJlcnMgaGF2ZSBoaXN0b3JpY2FsbHkgcmFuZ2VkIGJldHdlZW4gLjIg
YW5kIC40KQotICAgICAgICAvLyBXaGlsZSBhcHBlbmRpbmcgRSB0byBhbGwgcmVhbGVzZSB3aXRo
IGFuIFNESyBhZnRlciBhIG1pZC15ZWFyIHJlbGVhc2UgaXNuJ3QgZW50aXJlbHkgY29ycmVjdCwg
aXQncyBjbG9zZSBlbm91Z2gKLSAgICAgICAgLy8gdGhhdCB0aGUgdXNlciBjYW4gcXVpY2tseSBk
aWNlcm4gdGhlIGRpZmZlcmVuY2VzIGJ5IGluc3BlY3RpbmcgdGhlIHNwZWNpZmljIFNESyBkaWZm
ZXJlbmNlcwotICAgICAgICBpZiAodGhpcy5zZGsgJiYgdGhpcy52ZXJzaW9uX25hbWUgJiYgIShq
c29uIGluc3RhbmNlb2YgQ29uZmlndXJhdGlvbikpIHsKLSAgICAgICAgICAgIGNvbnN0IG1hdGNo
ID0gdGhpcy5zZGsubWF0Y2goU0RLX1JFR0VYKTsKLSAgICAgICAgICAgIGNvbnN0IGVuZGluZyA9
IHRoaXMudmVyc2lvbl9uYW1lLnN1YnN0cmluZyh0aGlzLnZlcnNpb25fbmFtZS5sZW5ndGggLSAy
KQotICAgICAgICAgICAgaWYgKG1hdGNoICYmIGVuZGluZyAhPT0gJyBFJyAmJiBtYXRjaFsyXS5s
b2NhbGVDb21wYXJlKCdFJykgPj0gMCkKLSAgICAgICAgICAgICAgICB0aGlzLnZlcnNpb25fbmFt
ZSA9IGAke3RoaXMudmVyc2lvbl9uYW1lfSBFYDsKLSAgICAgICAgICAgIGVsc2UgaWYgKCFtYXRj
aCkKLSAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGAnJHt0aGlzLnNka30nIGRvZXMgbm90
IG1hdGNoIHRoZSBTREsgcmVndWxhciBleHByZXNzaW9uYCk7Ci0gICAgICAgIH0KLSAgICB9Ci0g
ICAgdG9LZXkoKSB7Ci0gICAgICAgIGxldCByZXN1bHQgPSAnJwotICAgICAgICBpZiAodGhpcy5w
bGF0Zm9ybSAhPSBudWxsKQotICAgICAgICAgICAgcmVzdWx0ICs9ICcgJyArIHRoaXMucGxhdGZv
cm0KLSAgICAgICAgaWYgKHRoaXMudmVyc2lvbl9uYW1lICE9IG51bGwpCi0gICAgICAgICAgICBy
ZXN1bHQgKz0gJyAnICsgdGhpcy52ZXJzaW9uX25hbWU7Ci0gICAgICAgIGVsc2UgaWYgKHRoaXMu
dmVyc2lvbiAhPSBudWxsKQotICAgICAgICAgICAgcmVzdWx0ICs9ICcgJyArIENvbmZpZ3VyYXRp
b24uaW50ZWdlclRvVmVyc2lvbih0aGlzLnZlcnNpb24pOwotICAgICAgICBpZiAodGhpcy5zZGsg
IT0gbnVsbCkKLSAgICAgICAgICAgIHJlc3VsdCArPSAnICgnICsgdGhpcy5zZGsgKyAnKSc7Ci0g
ICAgICAgIGlmICh0aGlzLmlzX3NpbXVsYXRvciAhPSBudWxsICYmIHRoaXMuaXNfc2ltdWxhdG9y
KQotICAgICAgICAgICAgcmVzdWx0ICs9ICcgU2ltdWxhdG9yJzsKLSAgICAgICAgaWYgKHRoaXMu
c3R5bGUgIT0gbnVsbCkKLSAgICAgICAgICAgIHJlc3VsdCArPSAnICcgKyB0aGlzLnN0eWxlOwot
ICAgICAgICBpZiAodGhpcy5mbGF2b3IgIT0gbnVsbCkKLSAgICAgICAgICAgIHJlc3VsdCArPSAn
ICcgKyB0aGlzLmZsYXZvcjsKLSAgICAgICAgaWYgKHRoaXMubW9kZWwgIT0gbnVsbCkKLSAgICAg
ICAgICAgIHJlc3VsdCArPSAnIG9uICcgKyB0aGlzLm1vZGVsOwotICAgICAgICBpZiAodGhpcy5h
cmNoaXRlY3R1cmUgIT0gbnVsbCkKLSAgICAgICAgICAgIHJlc3VsdCArPSAnIHVzaW5nICcgKyB0
aGlzLmFyY2hpdGVjdHVyZTsKLQotICAgICAgICBpZiAocmVzdWx0KQotICAgICAgICAgICAgcmV0
dXJuIHJlc3VsdC5zdWJzdHIoMSk7Ci0gICAgICAgIHJldHVybiAnQWxsJzsKLSAgICB9Ci0gICAg
dG9TdHJpbmcoKSB7Ci0gICAgICAgIGxldCByZXN1bHQgPSAnJzsKLQotICAgICAgICAvLyBWZXJz
aW9uIG5hbWUgaW1wbGllcyBwbGF0Zm9ybSBhbmQgdmVyc2lvbgotICAgICAgICBpZiAodGhpcy52
ZXJzaW9uX25hbWUgIT0gbnVsbCkKLSAgICAgICAgICAgIHJlc3VsdCArPSAnICcgKyB0aGlzLnZl
cnNpb25fbmFtZTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBpZiAodGhpcy5wbGF0Zm9y
bSAhPSBudWxsKQotICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnICcgKyB0aGlzLnBsYXRmb3Jt
Ci0gICAgICAgICAgICBpZiAodGhpcy52ZXJzaW9uICE9IG51bGwpCi0gICAgICAgICAgICAgICAg
cmVzdWx0ICs9ICcgJyArIENvbmZpZ3VyYXRpb24uaW50ZWdlclRvVmVyc2lvbih0aGlzLnZlcnNp
b24pOwotICAgICAgICB9Ci0gICAgICAgIGlmICh0aGlzLmlzX3NpbXVsYXRvciAhPSBudWxsICYm
IHRoaXMuaXNfc2ltdWxhdG9yKQotICAgICAgICAgICAgcmVzdWx0ICs9ICcgU2ltdWxhdG9yJzsK
LSAgICAgICAgaWYgKHRoaXMuZmxhdm9yICE9IG51bGwpCi0gICAgICAgICAgICByZXN1bHQgKz0g
JyAnICsgdGhpcy5mbGF2b3I7Ci0gICAgICAgIGlmICh0aGlzLnN0eWxlICE9IG51bGwpIHsKLSAg
ICAgICAgICAgIHJlc3VsdCArPSAnICcgKyB0aGlzLnN0eWxlLnNwbGl0KCctJykubWFwKHdvcmQg
PT4gd29yZC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHdvcmQuc2xpY2UoMSkpLmpvaW4oJy0n
KTsKLSAgICAgICAgfSBpZiAodGhpcy5tb2RlbCAhPSBudWxsKQotICAgICAgICAgICAgcmVzdWx0
ICs9ICcgb24gJyArIHRoaXMubW9kZWw7Ci0gICAgICAgIGlmICh0aGlzLmFyY2hpdGVjdHVyZSAh
PSBudWxsKQotICAgICAgICAgICAgcmVzdWx0ICs9ICcgd2l0aCAnICsgdGhpcy5hcmNoaXRlY3R1
cmU7Ci0KLSAgICAgICAgaWYgKHRoaXMuc2RrICE9IG51bGwpCi0gICAgICAgICAgICByZXN1bHQg
Kz0gJyAoJyArIHRoaXMuc2RrICsgJyknOwotCi0gICAgICAgIGlmIChyZXN1bHQpCi0gICAgICAg
ICAgICByZXR1cm4gcmVzdWx0LnN1YnN0cigxKTsKLSAgICAgICAgcmV0dXJuICdBbGwnOwotICAg
IH0KLSAgICBjb21wYXJlKGNvbmZpZ3VyYXRpb24pIHsKLSAgICAgICAgaWYgKGNvbmZpZ3VyYXRp
b24gPT09IG51bGwpCi0gICAgICAgICAgICByZXR1cm4gMTsKLQotICAgICAgICBjb25zdCBsc3Qg
PSBbWydwbGF0Zm9ybSddLCBbJ2lzX3NpbXVsYXRvciddLCBbJ3ZlcnNpb25fbmFtZScsICd2ZXJz
aW9uJ10sIFsnZmxhdm9yJ10sIFsnc3R5bGUnXSwgWydhcmNoaXRlY3R1cmUnXSwgWydtb2RlbCdd
XTsKLSAgICAgICAgbGV0IHJlc3VsdCA9IDA7Ci0gICAgICAgIGxzdC5mb3JFYWNoKGtleUZhbWls
eSA9PiB7Ci0gICAgICAgICAgICAvLyBHcm91cGluZyBrZXlzIGludG8gZmFtaWxpZXMgYWxsb3dz
IGtleXMgdG8gYmUgaWdub3JlZCBpZiBhbm90aGVyIGlzIGRlZmluZWQuCi0gICAgICAgICAgICAv
LyBGb3IgZXhhbXBsZSwgaWYgdHdvIGNvbmZpZ3VyYXRpb25zIGRlY2xhcmUgdGhlIHNhbWUgdmVy
c2lvbiBuYW1lLCBkZXNwaXRlIGhhdmluZyBhIGRpZmZlcmVudAotICAgICAgICAgICAgLy8gdmVy
c2lvbiBudW1iZXIsIHRoZXkgd2lsbCBiZSB0cmVhdGVkIGFzIGlkZW50aWNhbAotICAgICAgICAg
ICAgbGV0IHdhc0tleUZhbWlseURlZmluZWQgPSBmYWxzZTsKLQotICAgICAgICAgICAga2V5RmFt
aWx5LmZvckVhY2goa2V5ID0+IHsKLSAgICAgICAgICAgICAgICBpZiAocmVzdWx0IHx8IHdhc0tl
eUZhbWlseURlZmluZWQpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAg
ICAgICAgIGlmICh0aGlzW2tleV0gIT09IG51bGwgJiYgY29uZmlndXJhdGlvbltrZXldICE9PSBu
dWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdGhpc1trZXldID09PSAnc3Ry
aW5nJykgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGtleSA9PT0gJ3ZlcnNpb25fbmFt
ZScgJiYgdGhpc1trZXldLnN0YXJ0c1dpdGgoY29uZmlndXJhdGlvbltrZXldKSkKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAwOwotICAgICAgICAgICAgICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRoaXNba2V5XS5sb2Nh
bGVDb21wYXJlKGNvbmZpZ3VyYXRpb25ba2V5XSk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodHlwZW9mIHRoaXNba2V5XSA9PT0gJ251bWJlcicg
fHwgdHlwZW9mIHRoaXNba2V5XSA9PT0gJ2Jvb2xlYW4nKQotICAgICAgICAgICAgICAgICAgICAg
ICAgcmVzdWx0ID0gdGhpc1trZXldIC0gY29uZmlndXJhdGlvbltrZXldOwotICAgICAgICAgICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKHR5cGVv
ZiB0aGlzW2tleV0gKyAnIGlzIG5vdCBhIHJlY29nbml6ZWQgY29uZmlndXJhdGlvbiB0eXBlJykK
LSAgICAgICAgICAgICAgICAgICAgd2FzS2V5RmFtaWx5RGVmaW5lZCA9IHRydWU7Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0pOwotICAgICAgICByZXR1cm4g
cmVzdWx0OwotICAgIH0KLSAgICBjb21wYXJlU0RLcyhjb25maWd1cmF0aW9uKSB7Ci0gICAgICAg
IGlmICh0aGlzLnNkayA9PT0gbnVsbCB8fCBjb25maWd1cmF0aW9uLnNkayA9PT0gbnVsbCkKLSAg
ICAgICAgICAgIHJldHVybiAwOwotCi0gICAgICAgIGNvbnN0IHRoaXNNYXRjaCA9IHRoaXMuc2Rr
Lm1hdGNoKFNES19SRUdFWCk7Ci0gICAgICAgIGNvbnN0IGNvbmZpZ3VyYXRpb25NYXRjaCA9IGNv
bmZpZ3VyYXRpb24uc2RrLm1hdGNoKFNES19SRUdFWCk7Ci0KLSAgICAgICAgaWYgKCF0aGlzTWF0
Y2ggJiYgIWNvbmZpZ3VyYXRpb25NYXRjaCkgewotICAgICAgICAgICAgY29uc29sZS5lcnJvcihg
JyR7dGhpcy5zZGt9JyBhbmQgJyR7Y29uZmlndXJhdGlvbi5zZGt9JyBkbyBub3QgbWF0Y2ggdGhl
IFNESyByZWd1bGFyIGV4cHJlc3Npb25gKTsKLSAgICAgICAgICAgIHJldHVybiB0aGlzLnNkay5s
b2NhbGVDb21wYXJlKGNvbmZpZ3VyYXRpb24uc2RrKTsKLSAgICAgICAgfQotICAgICAgICBpZiAo
IXRoaXNNYXRjaCAmJiBjb25maWd1cmF0aW9uTWF0Y2gpCi0gICAgICAgICAgICByZXR1cm4gLTE7
Ci0gICAgICAgIGlmICh0aGlzTWF0Y2ggJiYgIWNvbmZpZ3VyYXRpb25NYXRjaCkKLSAgICAgICAg
ICAgIHJldHVybiAxOwotCi0gICAgICAgIGNvbnN0IG1ham9yRGlmZiA9IHBhcnNlSW50KHRoaXNN
YXRjaFsxXSkgLSBwYXJzZUludChjb25maWd1cmF0aW9uTWF0Y2hbMV0pOwotICAgICAgICBpZiAo
bWFqb3JEaWZmKQotICAgICAgICAgICAgcmV0dXJuIG1ham9yRGlmZjsKLSAgICAgICAgY29uc3Qg
bWlub3JEaWZmID0gdGhpc01hdGNoWzJdLmxvY2FsZUNvbXBhcmUoY29uZmlndXJhdGlvbk1hdGNo
WzJdKTsKLSAgICAgICAgaWYgKG1pbm9yRGlmZikKLSAgICAgICAgICAgIHJldHVybiBtaW5vckRp
ZmY7Ci0gICAgICAgIGNvbnN0IGJ1aWxkRGlmZiA9IHBhcnNlSW50KHRoaXNNYXRjaFszXSkgLSBw
YXJzZUludChjb25maWd1cmF0aW9uTWF0Y2hbM10pOwotICAgICAgICBpZiAoYnVpbGREaWZmKQot
ICAgICAgICAgICAgcmV0dXJuIGJ1aWxkRGlmZjsKLSAgICAgICAgcmV0dXJuIHRoaXNNYXRjaFs0
XS5sb2NhbGVDb21wYXJlKGNvbmZpZ3VyYXRpb25NYXRjaFs0XSk7Ci0gICAgfQotICAgIHRvUGFy
YW1zKCkgewotICAgICAgICBsZXQgdmVyc2lvbl9uYW1lID0gdGhpcy52ZXJzaW9uX25hbWU7Ci0g
ICAgICAgIGNvbnN0IGVuZGluZyA9IHRoaXMudmVyc2lvbl9uYW1lID8gdGhpcy52ZXJzaW9uX25h
bWUuc3Vic3RyaW5nKHRoaXMudmVyc2lvbl9uYW1lLmxlbmd0aCAtIDIpIDogbnVsbDsKLSAgICAg
ICAgaWYgKGVuZGluZyA9PT0gJyBFJykKLSAgICAgICAgICAgIHZlcnNpb25fbmFtZSA9IHRoaXMu
dmVyc2lvbl9uYW1lLnN1YnN0cmluZygwLCB0aGlzLnZlcnNpb25fbmFtZS5sZW5ndGggLSAyKQot
ICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgcGxhdGZvcm06IFt0aGlzLnBsYXRmb3JtXSwK
LSAgICAgICAgICAgIHZlcnNpb246W3RoaXMudmVyc2lvbiAmJiAhdGhpcy52ZXJzaW9uX25hbWUg
PyBDb25maWd1cmF0aW9uLmludGVnZXJUb1ZlcnNpb24odGhpcy52ZXJzaW9uKSA6IG51bGxdLAot
ICAgICAgICAgICAgdmVyc2lvbl9uYW1lOiBbdmVyc2lvbl9uYW1lXSwKLSAgICAgICAgICAgIGlz
X3NpbXVsYXRvcjogW3RoaXMuaXNfc2ltdWxhdG9yID09PSBudWxsID8gbnVsbCA6ICh0aGlzLmlz
X3NpbXVsYXRvciA/ICdUcnVlJyA6ICdGYWxzZScpXSwKLSAgICAgICAgICAgIHN0eWxlOiBbdGhp
cy5zdHlsZV0sCi0gICAgICAgICAgICBmbGF2b3I6IFt0aGlzLmZsYXZvcl0sCi0gICAgICAgICAg
ICBtb2RlbDogW3RoaXMubW9kZWxdLAotICAgICAgICAgICAgYXJjaGl0ZWN0dXJlOiBbdGhpcy5h
cmNoaXRlY3R1cmVdLAotICAgICAgICB9OwotICAgIH0KLX0KLQotZXhwb3J0IHtDb25maWd1cmF0
aW9ufTsKSW5kZXg6IFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvc3RhdGljL2pz
L2RyYXdlci5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS92
aWV3L3N0YXRpYy9qcy9kcmF3ZXIuanMJKHJldmlzaW9uIDI2NTUzMSkKKysrIFRvb2xzL3Jlc3Vs
dHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvc3RhdGljL2pzL2RyYXdlci5qcwkobm9uZXhpc3RlbnQp
CkBAIC0xLDMzNCArMCwwIEBACi0vLyBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0vLyBhcmUg
bWV0OgotLy8gMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLS8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0vLyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiCi0vLyBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLS8vIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLS8vIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotLy8gQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotLy8gQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLS8vIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotLy8gSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLS8vIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0vLyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0vLyBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0KLWltcG9ydCB7RE9NLCBSRUZ9IGZyb20gJy9saWJyYXJ5L2pz
L1JlZi5qcyc7Ci1pbXBvcnQge3F1ZXJ5VG9QYXJhbXMsIHBhcmFtc1RvUXVlcnksIFF1ZXJ5TW9k
aWZpZXIsIH0gZnJvbSAnL2Fzc2V0cy9qcy9jb21tb24uanMnOwotaW1wb3J0IHtDb25maWd1cmF0
aW9ufSBmcm9tICcvYXNzZXRzL2pzL2NvbmZpZ3VyYXRpb24uanMnCi0KLWZ1bmN0aW9uIHNldEVu
YWJsZVJlY3Vyc2l2ZShlbGVtZW50LCBzdGF0ZSkgewotICAgIGVsZW1lbnQuZGlzYWJsZWQgPSAh
c3RhdGU7Ci0gICAgaWYgKCFzdGF0ZSkKLSAgICAgICAgZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJk
aXNhYmxlZCIpOwotICAgIGVsc2UKLSAgICAgICAgZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJk
aXNhYmxlZCIpOwotCi0gICAgZm9yIChsZXQgbm9kZSBvZiBlbGVtZW50LmNoaWxkcmVuKQotICAg
ICAgICBzZXRFbmFibGVSZWN1cnNpdmUobm9kZSwgc3RhdGUpOwotfQotCi1mdW5jdGlvbiBEcmF3
ZXIoY29udHJvbHMgPSBbXSwgb25Db2xsYXBzZUNoYW5nZSkgewotICAgIGNvbnN0IEhJRERFTiA9
IGZhbHNlOwotICAgIGNvbnN0IFZJU0lCTEUgPSB0cnVlOwotICAgIGxldCBkcmF3ZXJTdGF0ZSA9
IFZJU0lCTEU7Ci0gICAgbGV0IG1haW5zID0gW107Ci0KLSAgICBjb25zdCBzaWRlYmFyQ29udHJv
bCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ21vYmlsZS1zaWRlYmFyLWNvbnRy
b2wnKVswXTsKLSAgICBzaWRlYmFyQ29udHJvbC5jbGFzc0xpc3QuYWRkKCdkaXNwbGF5Jyk7Ci0K
LSAgICBjb25zdCBkcmF3ZXJSZWYgPSBSRUYuY3JlYXRlUmVmKHsKLSAgICAgICAgc3RhdGU6IGRy
YXdlclN0YXRlLAotICAgICAgICBvblN0YXRlVXBkYXRlOiAoZWxlbWVudCwgc3RhdGUpID0+IHsK
LSAgICAgICAgICAgIGlmIChzdGF0ZSkgewotICAgICAgICAgICAgICAgIGVsZW1lbnQuY2xhc3NM
aXN0LnJlbW92ZSgiaGlkZGVuIik7Ci0gICAgICAgICAgICAgICAgbWFpbnMuZm9yRWFjaChtYWlu
ID0+IG1haW4uY2xhc3NMaXN0LnJlbW92ZSgiaGlkZGVuIikpOwotICAgICAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgICAgICBlbGVtZW50LmNsYXNzTGlzdC5hZGQoImhpZGRlbiIpOwotICAg
ICAgICAgICAgICAgIG1haW5zLmZvckVhY2gobWFpbiA9PiBtYWluLmNsYXNzTGlzdC5hZGQoImhp
ZGRlbiIpKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgZm9yIChsZXQgbm9kZSBvZiBl
bGVtZW50LmNoaWxkcmVuKSB7Ci0gICAgICAgICAgICAgICAgaWYgKG5vZGUuY2xhc3NMaXN0LmNv
bnRhaW5zKCJsaXN0IikpCi0gICAgICAgICAgICAgICAgICAgIHNldEVuYWJsZVJlY3Vyc2l2ZShu
b2RlLCBzdGF0ZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlm
IChvbkNvbGxhcHNlQ2hhbmdlKQotICAgICAgICAgICAgICAgIG9uQ29sbGFwc2VDaGFuZ2UoKTsK
LSAgICAgICAgfSwKLSAgICAgICAgb25FbGVtZW50TW91bnQ6IChlbGVtZW50KSA9PiB7Ci0gICAg
ICAgICAgICBsZXQgY2FuZGlkYXRlcyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUo
Im1haW4iKTsKLSAgICAgICAgICAgIG1haW5zID0gW107Ci0gICAgICAgICAgICBmb3IgKGxldCBj
b3VudCA9IDA7IGNvdW50IDwgY2FuZGlkYXRlcy5sZW5ndGg7ICsrY291bnQpCi0gICAgICAgICAg
ICAgICAgbWFpbnMucHVzaChjYW5kaWRhdGVzW2NvdW50XSk7Ci0KLSAgICAgICAgICAgIHNpZGVi
YXJDb250cm9sLm9uY2xpY2sgPSAoKSA9PiB7Ci0gICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQu
c3R5bGUuZGlzcGxheSkKLSAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5zdHlsZS5kaXNwbGF5
ID0gbnVsbDsKLSAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgZm9y
IChsZXQgbm9kZSBvZiBlbGVtZW50LmNoaWxkcmVuKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBpZiAobm9kZS5jbGFzc0xpc3QuY29udGFpbnMoImxpc3QiKSkKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZXRFbmFibGVSZWN1cnNpdmUobm9kZSwgdHJ1ZSk7Ci0gICAgICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gJ2Js
b2NrJzsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9
KTsKLQotICAgIGNvbnN0IGRyYXdlckNvbnRyb2xsZXJSZWYgPSBSRUYuY3JlYXRlUmVmKHsKLSAg
ICAgICAgc3RhdGU6IGRyYXdlclN0YXRlLAotICAgICAgICBvblN0YXRlVXBkYXRlOiAoZWxlbWVu
dCwgc3RhdGUpID0+IHsKLSAgICAgICAgICAgIGlmIChzdGF0ZSkgewotICAgICAgICAgICAgICAg
IGVsZW1lbnQuaW5uZXJIVE1MID0gJ0NvbGxhcHNlICZndCc7Ci0gICAgICAgICAgICAgICAgZWxl
bWVudC5zdHlsZS50ZXh0QWxpZ24gPSAnY2VudGVyJzsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIGVsc2V7Ci0gICAgICAgICAgICAgICAgZWxlbWVudC5pbm5lckhUTUwgPSAnJmx0JzsKLSAg
ICAgICAgICAgICAgICBlbGVtZW50LnN0eWxlLnRleHRBbGlnbiA9ICdsZWZ0JzsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgb25FbGVtZW50TW91bnQ6IChlbGVtZW50KSA9PiB7
Ci0gICAgICAgICAgICBlbGVtZW50Lm9uY2xpY2sgPSAoKSA9PiB7Ci0gICAgICAgICAgICAgICAg
ZHJhd2VyU3RhdGUgPSAhZHJhd2VyU3RhdGU7Ci0gICAgICAgICAgICAgICAgZHJhd2VyUmVmLnNl
dFN0YXRlKGRyYXdlclN0YXRlKTsKLSAgICAgICAgICAgICAgICBkcmF3ZXJDb250cm9sbGVyUmVm
LnNldFN0YXRlKGRyYXdlclN0YXRlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0p
OwotCi0gICAgcmV0dXJuIGA8ZGl2IGNsYXNzPSJzaWRlYmFyIHJpZ2h0IHVuZGVyLXRvcGJhci13
aXRoLWFjdGlvbnMgdW5zZWxlY3RhYmxlIiByZWY9IiR7ZHJhd2VyUmVmfSI+Ci0gICAgICAgICAg
ICA8YnV0dG9uIGNsYXNzPSJidXR0b24gZGVza3RvcC1jb250cm9sIiByZWY9IiR7ZHJhd2VyQ29u
dHJvbGxlclJlZn0iIHN0eWxlPSJjdXJzb3I6IHBvaW50ZXI7IHdpZHRoOjk2JTsgbWFyZ2luOiAx
MHB4IDIlIDEwcHggMiU7Ij48L2J1dHRvbj4KLSAgICAgICAgICAgICR7Y29udHJvbHMubWFwKGNv
bnRyb2wgPT4gewotICAgICAgICAgICAgICAgIHJldHVybiBgPGRpdiBjbGFzcz0ibGlzdCI+Ci0g
ICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpdGVtIj4ke2NvbnRyb2x9PC9kaXY+
Ci0gICAgICAgICAgICAgICAgICAgIDwvZGl2PmA7Ci0gICAgICAgICAgICAgICAgfSkuam9pbign
Jyl9Ci0gICAgICAgIDwvZGl2PmA7Ci19Ci0KLWxldCBjb25maWd1cmF0aW9ucyA9IFtdCi1sZXQg
Y29uZmlndXJhdGlvbnNEZWZpbmVkQ2FsbGJhY2tzID0gW107Ci1mdW5jdGlvbiByZWZyZXNoQ29u
ZmlndXJhdGlvbnMoKSB7Ci0gICAgbGV0IHBhcmFtcyA9IHF1ZXJ5VG9QYXJhbXMoZG9jdW1lbnQu
VVJMLnNwbGl0KCc/JylbMV0pOwotICAgIGxldCBxdWVyeVBhcmFtcyA9IHt9OwotICAgIGlmIChw
YXJhbXMuYnJhbmNoKQotICAgICAgICBxdWVyeVBhcmFtcy5icmFuY2ggPSBwYXJhbXMuYnJhbmNo
OwotCi0gICAgY29uc3QgcXVlcnkgPSBwYXJhbXNUb1F1ZXJ5KHF1ZXJ5UGFyYW1zKTsKLSAgICBm
ZXRjaChxdWVyeSA/ICdhcGkvc3VpdGVzPycgKyBxdWVyeTogJ2FwaS9zdWl0ZXMnKS50aGVuKHJl
c3BvbnNlID0+IHsKLSAgICAgICAgcmVzcG9uc2UuanNvbigpLnRoZW4oanNvbiA9PiB7Ci0gICAg
ICAgICAgICBjb25maWd1cmF0aW9ucyA9IGpzb24ubWFwKHBhaXIgPT4gbmV3IENvbmZpZ3VyYXRp
b24ocGFpclswXSkpOwotICAgICAgICAgICAgY29uZmlndXJhdGlvbnNEZWZpbmVkQ2FsbGJhY2tz
LmZvckVhY2goY2FsbGJhY2sgPT4gY2FsbGJhY2soKSk7Ci0gICAgICAgIH0pOwotICAgIH0pLmNh
dGNoKGVycm9yID0+IHsKLSAgICAgICAgLy8gSWYgdGhlIGxvYWQgZmFpbHMsIGxvZyB0aGUgZXJy
b3IgYW5kIGNvbnRpbnVlCi0gICAgICAgIGNvbnNvbGUuZXJyb3IoSlNPTi5zdHJpbmdpZnkoZXJy
b3IsIG51bGwsIDQpKTsKLSAgICB9KTsKLX0KLQotZnVuY3Rpb24gQnJhbmNoU2VsZWN0b3IoY2Fs
bGJhY2spIHsKLSAgICBjb25zdCBkZWZhdWx0QnJhbmNoZXMgPSBuZXcgU2V0KFsndHJ1bmsnLCAn
bWFzdGVyJ10pOwotICAgIGNvbnN0IGRlZmF1bHRCcmFuY2hLZXkgPSBbLi4uZGVmYXVsdEJyYW5j
aGVzXS5zb3J0KCkuam9pbignLycpOwotICAgIGNvbnN0IGJyYW5jaE1vZGlmaWVyID0gbmV3IFF1
ZXJ5TW9kaWZpZXIoJ2JyYW5jaCcpOwotCi0gICAgbGV0IHJlZiA9IFJFRi5jcmVhdGVSZWYoewot
ICAgICAgICBzdGF0ZTogW2RlZmF1bHRCcmFuY2hLZXldLAotICAgICAgICBvbkVsZW1lbnRNb3Vu
dDogKGVsZW1lbnQpID0+IHsKLSAgICAgICAgICAgIGVsZW1lbnQub25jaGFuZ2UgPSAoKSA9PiB7
Ci0gICAgICAgICAgICAgICAgbGV0IGJyYW5jaCA9IGVsZW1lbnQudmFsdWU7Ci0gICAgICAgICAg
ICAgICAgaWYgKGJyYW5jaCA9PT0gZGVmYXVsdEJyYW5jaEtleSkKLSAgICAgICAgICAgICAgICAg
ICAgYnJhbmNoTW9kaWZpZXIucmVtb3ZlKCk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgICAgICAgICBicmFuY2hNb2RpZmllci5yZXBsYWNlKGJyYW5jaCk7Ci0gICAgICAgICAg
ICAgICAgcmVmcmVzaENvbmZpZ3VyYXRpb25zKCk7Ci0gICAgICAgICAgICAgICAgY2FsbGJhY2so
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgb25TdGF0ZVVwZGF0ZTogKGVs
ZW1lbnQsIHN0YXRlKSA9PiB7Ci0gICAgICAgICAgICBjb25zdCBicmFuY2hRdWVyeSA9IGJyYW5j
aE1vZGlmaWVyLmN1cnJlbnQoKS5sZW5ndGggPyBicmFuY2hNb2RpZmllci5jdXJyZW50KClbYnJh
bmNoTW9kaWZpZXIuY3VycmVudCgpLmxlbmd0aCAtMV06bnVsbDsKLSAgICAgICAgICAgIGVsZW1l
bnQuaW5uZXJIVE1MID0gc3RhdGUubWFwKGJyYW5jaCA9PiB7Ci0gICAgICAgICAgICAgICAgaWYg
KCFicmFuY2gpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiAnJzsKLSAgICAgICAgICAgICAg
ICBpZiAoYnJhbmNoID09PSBicmFuY2hRdWVyeSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGA8b3B0aW9uIHNlbGVjdGVkIHZhbHVlPSIke2JyYW5jaH0iPiR7YnJhbmNofTwvb3B0aW9uPmA7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGA8b3B0aW9uIHZhbHVlPSIke2JyYW5jaH0iPiR7YnJh
bmNofTwvb3B0aW9uPmA7Ci0gICAgICAgICAgICB9KS5qb2luKCcnKTsKLSAgICAgICAgICAgIGVs
ZW1lbnQucGFyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQuc3R5bGUuZGlz
cGxheSA9IHN0YXRlLmxlbmd0aCA+IDEgPyBudWxsIDogJ25vbmUnOwotICAgICAgICB9LAotICAg
IH0pOwotCi0gICAgZmV0Y2goJ2FwaS9jb21taXRzL2JyYW5jaGVzJykudGhlbihyZXNwb25zZSA9
PiB7Ci0gICAgICAgIHJlc3BvbnNlLmpzb24oKS50aGVuKGpzb24gPT4gewotICAgICAgICAgICAg
bGV0IGJyYW5jaE5hbWVzID0gbmV3IFNldCgpOwotICAgICAgICAgICAgT2JqZWN0LmtleXMoanNv
bikuZm9yRWFjaChyZXBvID0+IHsKLSAgICAgICAgICAgICAgICBqc29uW3JlcG9dLmZvckVhY2go
YnJhbmNoID0+IHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFkZWZhdWx0QnJhbmNoZXMuaGFz
KGJyYW5jaCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBicmFuY2hOYW1lcy5hZGQoYnJhbmNo
KTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgYnJh
bmNoTmFtZXMgPSBbLi4uYnJhbmNoTmFtZXNdOwotICAgICAgICAgICAgYnJhbmNoTmFtZXMuc29y
dCgpOwotICAgICAgICAgICAgYnJhbmNoTmFtZXMuc3BsaWNlKDAsIDAsIGRlZmF1bHRCcmFuY2hL
ZXkpOwotICAgICAgICAgICAgcmVmLnNldFN0YXRlKGJyYW5jaE5hbWVzKTsKLSAgICAgICAgfSk7
Ci0gICAgfSkuY2F0Y2goZXJyb3IgPT4gewotICAgICAgICAvLyBJZiB0aGUgbG9hZCBmYWlscywg
bG9nIHRoZSBlcnJvciBhbmQgY29udGludWUKLSAgICAgICAgY29uc29sZS5lcnJvcihKU09OLnN0
cmluZ2lmeShlcnJvciwgbnVsbCwgNCkpOwotICAgIH0pOwotCi0gICAgcmV0dXJuIGA8ZGl2IGNs
YXNzPSJpbnB1dCI+Ci0gICAgICAgICAgICA8c2VsZWN0IHJlcXVpcmVkIHJlZj0iJHtyZWZ9Ij48
L3NlbGVjdD4KLSAgICAgICAgICAgIDxsYWJlbD5CcmFuY2g8L2xhYmVsPgotICAgICAgICA8L2Rp
dj5gOwotfQotCi1mdW5jdGlvbiBMaW1pdFNsaWRlcihjYWxsYmFjaywgbWF4ID0gNTAwMDAsIGRl
ZmF1bHRWYWx1ZSA9IDUwMDApIHsKLSAgICBjb25zdCBsaW1pdE1vZGlmaWVyID0gbmV3IFF1ZXJ5
TW9kaWZpZXIoJ2xpbWl0Jyk7Ci0gICAgY29uc3Qgc3RhcnRpbmdWYWx1ZSA9IGxpbWl0TW9kaWZp
ZXIuY3VycmVudCgpLmxlbmd0aCA/IGxpbWl0TW9kaWZpZXIuY3VycmVudCgpW2xpbWl0TW9kaWZp
ZXIuY3VycmVudCgpLmxlbmd0aCAtMV06ZGVmYXVsdFZhbHVlOwotCi0gICAgdmFyIG51bWJlclJl
ZiA9IG51bGw7Ci0gICAgdmFyIHNsaWRlclJlZiA9IG51bGw7Ci0KLSAgICBudW1iZXJSZWYgPSBS
RUYuY3JlYXRlUmVmKHsKLSAgICAgICAgc3RhdGU6IHN0YXJ0aW5nVmFsdWUsCi0gICAgICAgIG9u
RWxlbWVudE1vdW50OiAoZWxlbWVudCkgPT4gewotICAgICAgICAgICAgZWxlbWVudC5vbmNoYW5n
ZSA9ICgpID0+IHsKLSAgICAgICAgICAgICAgICBsaW1pdE1vZGlmaWVyLnJlcGxhY2UoZWxlbWVu
dC52YWx1ZSk7Ci0gICAgICAgICAgICAgICAgc2xpZGVyUmVmLnNldFN0YXRlKHBhcnNlSW50KGVs
ZW1lbnQudmFsdWUsIDEwKSk7Ci0gICAgICAgICAgICAgICAgY2FsbGJhY2soKTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgb25TdGF0ZVVwZGF0ZTogKGVsZW1lbnQsIHN0YXRl
KSA9PiB7ZWxlbWVudC52YWx1ZSA9IHN0YXRlO30KLSAgICB9KTsKLSAgICBzbGlkZXJSZWYgPSBS
RUYuY3JlYXRlUmVmKHsKLSAgICAgICAgc3RhdGU6IHN0YXJ0aW5nVmFsdWUsCi0gICAgICAgIG9u
RWxlbWVudE1vdW50OiAoZWxlbWVudCkgPT4gewotICAgICAgICAgICAgZWxlbWVudC5vbmlucHV0
ID0gKCkgPT4gewotICAgICAgICAgICAgICAgIGNvbnN0IG5ld0xpbWl0ID0gTWF0aC5jZWlsKGVs
ZW1lbnQudmFsdWUpOwotICAgICAgICAgICAgICAgIGxpbWl0TW9kaWZpZXIucmVwbGFjZShuZXdM
aW1pdCk7Ci0gICAgICAgICAgICAgICAgbnVtYmVyUmVmLnNldFN0YXRlKG5ld0xpbWl0KTsKLSAg
ICAgICAgICAgICAgICBjYWxsYmFjaygpOwotICAgICAgICAgICAgfQotICAgICAgICB9LAotICAg
ICAgICBvblN0YXRlVXBkYXRlOiAoZWxlbWVudCwgc3RhdGUpID0+IHtlbGVtZW50LnZhbHVlID0g
c3RhdGU7fQotICAgIH0pOwotICAgIHJldHVybiBgPGRpdiBjbGFzcz0iaW5wdXQiPgotICAgICAg
ICAgICAgPGxhYmVsPkxpbWl0OjwvbGFiZWw+Ci0gICAgICAgICAgICA8aW5wdXQgdHlwZT0icmFu
Z2UiIG1pbj0iMCIgbWF4PSIke21heH0iIHJlZj0iJHtzbGlkZXJSZWZ9IiBzdHlsZT0iYmFja2dy
b3VuZDp2YXIoLS1pbnZlcnNlQ29sb3IpIj48L2lucHV0PgotICAgICAgICAgICAgPGlucHV0IHR5
cGU9Im51bWJlciIgbWluPSIxIiByZWY9IiR7bnVtYmVyUmVmfSIgcGF0dGVybj0iXlswLTldIj48
L2lucHV0PgotICAgICAgICA8L2Rpdj5gCi19Ci0KLWZ1bmN0aW9uIENvbmZpZ3VyYXRpb25TZWxl
Y3RvcnMoY2FsbGJhY2spIHsKLSAgICByZWZyZXNoQ29uZmlndXJhdGlvbnMoKTsKLSAgICBjb25z
dCBlbGVtZW50cyA9IFsKLSAgICAgICAgeydxdWVyeSc6ICdwbGF0Zm9ybScsICduYW1lJzogJ1Bs
YXRmb3JtJ30sCi0gICAgICAgIHsncXVlcnknOiAndmVyc2lvbl9uYW1lJywgJ25hbWUnOiAnVmVy
c2lvbiBOYW1lJ30sCi0gICAgICAgIHsncXVlcnknOiAnc3R5bGUnLCAnbmFtZSc6ICdTdHlsZSd9
LAotICAgICAgICB7J3F1ZXJ5JzogJ21vZGVsJywgJ25hbWUnOiAnTW9kZWwnfSwKLSAgICAgICAg
eydxdWVyeSc6ICdhcmNoaXRlY3R1cmUnLCAnbmFtZSc6ICdBcmNoaXRlY3R1cmUnfSwKLSAgICAg
ICAgeydxdWVyeSc6ICdmbGF2b3InLCAnbmFtZSc6ICdGbGF2b3InfSwKLSAgICBdOwotICAgIHJl
dHVybiBlbGVtZW50cy5tYXAoZGV0YWlscyA9PiB7Ci0gICAgICAgIGNvbnN0IG1vZGlmaWVyID0g
bmV3IFF1ZXJ5TW9kaWZpZXIoZGV0YWlscy5xdWVyeSk7Ci0KLSAgICAgICAgbGV0IHJlZiA9IFJF
Ri5jcmVhdGVSZWYoewotICAgICAgICAgICAgc3RhdGU6IGNvbmZpZ3VyYXRpb25zLAotICAgICAg
ICAgICAgb25TdGF0ZVVwZGF0ZTogKGVsZW1lbnQsIHN0YXRlKSA9PiB7Ci0gICAgICAgICAgICAg
ICAgbGV0IGNhbmRpZGF0ZXMgPSBuZXcgU2V0KCk7Ci0gICAgICAgICAgICAgICAgc3RhdGUuZm9y
RWFjaChjb25maWd1cmF0aW9uID0+IHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGNvbmZpZ3Vy
YXRpb25bZGV0YWlscy5xdWVyeV0gPT0gbnVsbCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgICAgICAgICAgICAgY2FuZGlkYXRlcy5hZGQoY29uZmlndXJhdGlvbltk
ZXRhaWxzLnF1ZXJ5XSk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgbW9k
aWZpZXIuY3VycmVudCgpLmZvckVhY2gocGFyYW0gPT4gewotICAgICAgICAgICAgICAgICAgICBp
ZiAocGFyYW0gPT09ICdBbGwnKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICAgICAgICAgICAgICBjYW5kaWRhdGVzLmFkZChwYXJhbSk7Ci0gICAgICAgICAgICAgICAg
fSk7Ci0KLSAgICAgICAgICAgICAgICBsZXQgb3B0aW9ucyA9IFsuLi5jYW5kaWRhdGVzXTsKLSAg
ICAgICAgICAgICAgICBvcHRpb25zLnNvcnQoKTsKLSAgICAgICAgICAgICAgICBvcHRpb25zLnVu
c2hpZnQoJ0FsbCcpOwotCi0gICAgICAgICAgICAgICAgbGV0IHN3aXRjaGVzID0ge307Ci0KLSAg
ICAgICAgICAgICAgICBsZXQgaXNFeHBhbmRlZCA9IGZhbHNlOwotICAgICAgICAgICAgICAgIGxl
dCBleHBhbmRlciA9IFJFRi5jcmVhdGVSZWYoewotICAgICAgICAgICAgICAgICAgICBvbkVsZW1l
bnRNb3VudDogKGVsZW1lbnQpID0+IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQu
b25jbGljayA9ICgpID0+IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0V4cGFuZGVk
ID0gIWlzRXhwYW5kZWQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5pbm5l
ckhUTUwgPSBpc0V4cGFuZGVkID8gJy0nIDogJysnOwotCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQXJyYXkuZnJvbShlbGVtZW50LnBhcmVudE5vZGUuY2hpbGRyZW4pLmZvckVhY2goY2hp
bGQgPT4gewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBj
aGlsZCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGQuc3R5bGUuZGlzcGxheSA9IGlzRXhwYW5k
ZWQgPyAnYmxvY2snIDogJ25vbmUnOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwot
ICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgfSk7Ci0KLSAgICAgICAgICAgICAgICBET00uaW5qZWN0KGVsZW1lbnQsIGA8YSBj
bGFzcz0ibGluay1idXR0b24gdGV4dCBtZWRpdW0iIHJlZj0iJHtleHBhbmRlcn0iPis8L2E+Ci0g
ICAgICAgICAgICAgICAgICAgICR7ZGV0YWlscy5uYW1lfSA8YnI+Ci0gICAgICAgICAgICAgICAg
ICAgICR7b3B0aW9ucy5tYXAob3B0aW9uID0+IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxl
dCBpc0NoZWNrZWQgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvcHRpb24g
PT09ICdBbGwnICYmIG1vZGlmaWVyLmN1cnJlbnQoKS5sZW5ndGggPT09IDApCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaXNDaGVja2VkID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGVsc2UgaWYgKG9wdGlvbiAhPT0gJ0FsbCcgJiYgbW9kaWZpZXIuY3VycmVudCgpLmluZGV4
T2Yob3B0aW9uKSA+PSAwKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzQ2hlY2tlZCA9
IHRydWU7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzd3RjaCA9IFJFRi5jcmVhdGVS
ZWYoewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRWxlbWVudE1vdW50OiAoZWxlbWVu
dCkgPT4gewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2hlc1tvcHRpb25d
ID0gZWxlbWVudDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5vbmNo
YW5nZSA9ICgpID0+IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChv
cHRpb24gPT09ICdBbGwnKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKCFlbGVtZW50LmNoZWNrZWQpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBPYmplY3Qua2V5cyhzd2l0Y2hlcykuZm9yRWFjaChrZXkgPT4gewotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoa2V5ID09PSAnQWxsJykKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoZXNba2V5XS5jaGVj
a2VkID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXIucmVtb3Zl
KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGVsZW1l
bnQuY2hlY2tlZCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3
aXRjaGVzWydBbGwnXS5jaGVja2VkID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbW9kaWZpZXIuYXBwZW5kKG9wdGlvbik7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1vZGlmaWVyLnJlbW92ZShvcHRpb24pOwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChtb2RpZmllci5jdXJyZW50KCkubGVuZ3RoID09PSAw
KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2hlc1sn
QWxsJ10uY2hlY2tlZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjaygpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICB9KTsKLQotICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGA8ZGl2IGNsYXNzPSJpbnB1dCIgJHtpc0V4cGFuZGVkID8gJycgOiBgc3R5
bGU9ImRpc3BsYXk6IG5vbmU7ImB9PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8
bGFiZWw+JHtvcHRpb259PC9sYWJlbD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PGxhYmVsIGNsYXNzPSJzd2l0Y2giPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPGlucHV0IHR5cGU9ImNoZWNrYm94IiR7aXNDaGVja2VkID8gJyBjaGVja2VkJzogJyd9IHJl
Zj0iJHtzd3RjaH0iPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4g
Y2xhc3M9InNsaWRlciI+PC9zcGFuPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8
L2xhYmVsPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PmA7Ci0gICAgICAgICAg
ICAgICAgICAgIH0pLmpvaW4oJycpfWApOwotICAgICAgICAgICAgfSwKLSAgICAgICAgfSk7Ci0g
ICAgICAgIGNvbmZpZ3VyYXRpb25zRGVmaW5lZENhbGxiYWNrcy5wdXNoKCgpID0+IHsKLSAgICAg
ICAgICAgIHJlZi5zZXRTdGF0ZShjb25maWd1cmF0aW9ucyk7Ci0gICAgICAgIH0pOwotCi0gICAg
ICAgIHJldHVybiBgPGRpdiBzdHlsZT0iZm9udC1zaXplOiB2YXIoLS1zbWFsbFNpemUpOyIgcmVm
PSIke3JlZn0iPjwvZGl2PmA7Ci0gICAgfSkuam9pbignJykKLX0KLQotZXhwb3J0IHtEcmF3ZXIs
IEJyYW5jaFNlbGVjdG9yLCBDb25maWd1cmF0aW9uU2VsZWN0b3JzLCBMaW1pdFNsaWRlcn07Cklu
ZGV4OiBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS92aWV3L3N0YXRpYy9qcy9leHBlY3Rh
dGlvbnMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmll
dy9zdGF0aWMvanMvZXhwZWN0YXRpb25zLmpzCShyZXZpc2lvbiAyNjU1MzEpCisrKyBUb29scy9y
ZXN1bHRzZGJweS9yZXN1bHRzZGJweS92aWV3L3N0YXRpYy9qcy9leHBlY3RhdGlvbnMuanMJKG5v
bmV4aXN0ZW50KQpAQCAtMSwxMTEgKzAsMCBAQAotLy8gQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotLy8gYXJlIG1ldDoKLS8vIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
Ly8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotLy8gICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIgot
Ly8gQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0vLyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0vLyBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLS8v
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLS8vIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0vLyBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLS8vIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0vLyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotLy8gQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotLy8gVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1jbGFzcyBFeHBlY3RhdGlvbnMKLXsKLSAg
ICBzdGF0aWMgY29sb3JNYXAoKSB7Ci0gICAgICAgIGNvbnN0IGNvbXB1dGVkU3R5bGUgPSBnZXRD
b21wdXRlZFN0eWxlKGRvY3VtZW50LmJvZHkpOwotICAgICAgICByZXR1cm4gewotICAgICAgICAg
ICAgc3VjY2VzczogY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWdyZWVuTGlnaHQn
KS50cmltKCksCi0gICAgICAgICAgICB3YXJuaW5nOiBjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5
VmFsdWUoJy0tb3JhbmdlRGFyaycpLnRyaW0oKSwKLSAgICAgICAgICAgIGZhaWxlZDogY29tcHV0
ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLXJlZExpZ2h0JykudHJpbSgpLAotICAgICAgICAg
ICAgdGltZWRvdXQ6IGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1vcmFuZ2VMaWdo
dCcpLnRyaW0oKSwKLSAgICAgICAgICAgIGNyYXNoZWQ6IGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVy
dHlWYWx1ZSgnLS1wdXJwbGVMaWdodCcpLnRyaW0oKSwKLSAgICAgICAgfTsKLSAgICB9Ci0KLSAg
ICBzdGF0aWMgc3RyaW5nVG9TdGF0ZUlkKHN0cmluZykgewotICAgICAgICByZXR1cm4gRXhwZWN0
YXRpb25zLnN0YXRlVG9JZE1hcFtzdHJpbmddOwotICAgIH0KLSAgICBzdGF0aWMgdHlwZUZvcklk
KHN0cmluZykgewotICAgICAgICBjb25zdCBpZCA9IEV4cGVjdGF0aW9ucy5zdHJpbmdUb1N0YXRl
SWQoc3RyaW5nKTsKLSAgICAgICAgbGV0IHJlc3VsdCA9ICdzdWNjZXNzJzsKLSAgICAgICAgRXhw
ZWN0YXRpb25zLmZhaWx1cmVUeXBlcy5mb3JFYWNoKHR5cGUgPT4gewotICAgICAgICAgICAgY29u
c3QgaWRGb3JUeXBlID0gRXhwZWN0YXRpb25zLnN0cmluZ1RvU3RhdGVJZChFeHBlY3RhdGlvbnMu
ZmFpbHVyZVR5cGVNYXBbdHlwZV0pOwotICAgICAgICAgICAgaWYgKGlkIDw9IGlkRm9yVHlwZSkK
LSAgICAgICAgICAgICAgICByZXN1bHQgPSB0eXBlOwotICAgICAgICB9KTsKLSAgICAgICAgcmV0
dXJuIHJlc3VsdDsKLSAgICB9Ci0gICAgc3RhdGljIHN5bWJvbEZvcklkKHN0cmluZykgewotICAg
ICAgICByZXR1cm4gRXhwZWN0YXRpb25zLnN5bWJvbE1hcFtFeHBlY3RhdGlvbnMudHlwZUZvcklk
KHN0cmluZyldOwotICAgIH0KLSAgICBzdGF0aWMgY29sb3JGb3JJZChzdHJpbmcpIHsKLSAgICAg
ICAgcmV0dXJuIEV4cGVjdGF0aW9ucy5jb2xvck1hcCgpW0V4cGVjdGF0aW9ucy50eXBlRm9ySWQo
c3RyaW5nKV07Ci0gICAgfQotCi0gICAgc3RhdGljIHVuZXhwZWN0ZWRSZXN1bHRzKHJlc3VsdHMs
IGV4cGVjdGF0aW9ucykKLSAgICB7Ci0gICAgICAgIGxldCByID0gcmVzdWx0cy5zcGxpdCgnLicp
OwotICAgICAgICBleHBlY3RhdGlvbnMuc3BsaXQoJyAnKS5mb3JFYWNoKGV4cGVjdGF0aW9uID0+
IHsKLSAgICAgICAgICAgIGNvbnN0IGkgPSByLmluZGV4T2YoZXhwZWN0YXRpb24pOwotICAgICAg
ICAgICAgaWYgKGkgPiAtMSkKLSAgICAgICAgICAgICAgICByLnNwbGljZShpLCAxKTsKLSAgICAg
ICAgICAgIGlmIChleHBlY3RhdGlvbiA9PT0gJ0ZBSUwnKQotICAgICAgICAgICAgICAgIFsnVEVY
VCcsICdBVURJTycsICdJTUFHRSddLmZvckVhY2goZXhwZWN0YXRpb24gPT4gewotICAgICAgICAg
ICAgICAgICAgICBjb25zdCBpID0gci5pbmRleE9mKGV4cGVjdGF0aW9uKTsKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKGkgPiAtMSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHIuc3BsaWNlKGks
IDEpOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICB9KTsKLSAgICAgICAgbGV0IHJlc3Vs
dCA9ICdQQVNTJzsKLSAgICAgICAgci5mb3JFYWNoKGNhbmRpZGF0ZSA9PiB7Ci0gICAgICAgICAg
ICBpZiAoRXhwZWN0YXRpb25zLnN0cmluZ1RvU3RhdGVJZChjYW5kaWRhdGUpIDwgRXhwZWN0YXRp
b25zLnN0cmluZ1RvU3RhdGVJZChyZXN1bHQpKQotICAgICAgICAgICAgICAgIHJlc3VsdCA9IGNh
bmRpZGF0ZTsKLSAgICAgICAgfSk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotfQot
Ci1FeHBlY3RhdGlvbnMuc3RhdGVUb0lkTWFwID0gewotICAgIENSQVNIOiAweDAwLAotICAgIFRJ
TUVPVVQ6IDB4MDgsCi0gICAgSU1BR0U6IDB4MTAsCi0gICAgQVVESU86IDB4MTgsCi0gICAgVEVY
VDogMHgyMCwKLSAgICBGQUlMOiAweDI4LAotICAgIEVSUk9SOiAweDMwLAotICAgIFdBUk5JTkc6
IDB4MzgsCi0gICAgUEFTUzogMHg0MCwKLX07Ci1FeHBlY3RhdGlvbnMuZmFpbHVyZVR5cGVzID0g
Wyd3YXJuaW5nJywgJ2ZhaWxlZCcsICd0aW1lZG91dCcsICdjcmFzaGVkJ107Ci1FeHBlY3RhdGlv
bnMuZmFpbHVyZVR5cGVNYXAgPSB7Ci0gICAgd2FybmluZzogJ1dBUk5JTkcnLAotICAgIGZhaWxl
ZDogJ0VSUk9SJywKLSAgICB0aW1lZG91dDogJ1RJTUVPVVQnLAotICAgIGNyYXNoZWQ6ICdDUkFT
SCcsCi19Ci1jb25zdCB0aW1lb3V0SW1hZ2UgPSBuZXcgSW1hZ2UoKTsKLXRpbWVvdXRJbWFnZS5z
cmMgPSAnL2xpYnJhcnkvaWNvbnMvY2xvY2suc3ZnJzsKLXRpbWVvdXRJbWFnZS50b1N0cmluZyA9
IGZ1bmN0aW9uICgpIHsKLSAgICByZXR1cm4gdGhpcy5vdXRlckhUTUw7Ci19Ci1FeHBlY3RhdGlv
bnMuc3ltYm9sTWFwID0gewotICAgIHN1Y2Nlc3M6ICfinJMnLAotICAgIHdhcm5pbmc6ICc/JywK
LSAgICBmYWlsZWQ6ICfwnZa3JywKLSAgICB0aW1lZG91dDogdGltZW91dEltYWdlLAotICAgIGNy
YXNoZWQ6ICchJywKLX0KLQotZXhwb3J0IHtFeHBlY3RhdGlvbnN9OwpJbmRleDogVG9vbHMvcmVz
dWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9zdGF0aWMvanMvZmFpbHVyZXMuanMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9zdGF0aWMvanMvZmFpbHVy
ZXMuanMJKHJldmlzaW9uIDI2NTUzMSkKKysrIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5
L3ZpZXcvc3RhdGljL2pzL2ZhaWx1cmVzLmpzCShub25leGlzdGVudCkKQEAgLTEsMTU5ICswLDAg
QEAKLS8vIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLS8vIGFyZSBtZXQ6Ci0vLyAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotLy8gMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLS8vICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIKLS8vIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotLy8gVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotLy8gUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0vLyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0vLyBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotLy8gU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0vLyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotLy8gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLS8vIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLS8vIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLQotaW1wb3J0IHtUSU1FU1RBTVBfVE9fVVVJRF9NVUxUSVBMSUVSfSBmcm9tICcvYXNzZXRz
L2pzL2NvbW1pdC5qcyc7Ci1pbXBvcnQge3F1ZXJ5VG9QYXJhbXMsIHBhcmFtc1RvUXVlcnksIFF1
ZXJ5TW9kaWZpZXJ9IGZyb20gJy9hc3NldHMvanMvY29tbW9uLmpzJzsKLWltcG9ydCB7RXhwZWN0
YXRpb25zfSBmcm9tICcvYXNzZXRzL2pzL2V4cGVjdGF0aW9ucy5qcyc7Ci1pbXBvcnQge0NvbmZp
Z3VyYXRpb259IGZyb20gJy9hc3NldHMvanMvY29uZmlndXJhdGlvbi5qcyc7Ci0KLWNsYXNzIEZh
aWx1cmVzIHsKLSAgICBzdGF0aWMgZnJvbUVuZHBvaW50KHN1aXRlLCBjb25maWd1cmF0aW9uPW51
bGwsIHBhcmFtcz17fSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlv
bihyZXNvbHZlLCByZWplY3QpIHsKLSAgICAgICAgICAgIGNvbnN0IHBhcmFtc1RvRGlzcGF0Y2gg
PSBPYmplY3QuYXNzaWduKGNvbmZpZ3VyYXRpb24gPyBjb25maWd1cmF0aW9uLnRvUGFyYW1zKCkg
OiB7fSwgcGFyYW1zKTsKLSAgICAgICAgICAgIHBhcmFtc1RvRGlzcGF0Y2guY29sbGFwc2VkID0g
W2ZhbHNlXTsKLSAgICAgICAgICAgIGlmIChwYXJhbXNUb0Rpc3BhdGNoLnVuZXhwZWN0ZWQgPT09
IHVuZGVmaW5lZCkKLSAgICAgICAgICAgICAgICBwYXJhbXNUb0Rpc3BhdGNoLnVuZXhwZWN0ZWQg
PSBbZmFsc2VdOwotCi0gICAgICAgICAgICBmZXRjaChgYXBpL2ZhaWx1cmVzLyR7c3VpdGV9PyR7
cGFyYW1zVG9RdWVyeShwYXJhbXNUb0Rpc3BhdGNoKX1gKS50aGVuKHJlc3BvbnNlID0+IHsKLSAg
ICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gW107Ci0gICAgICAgICAgICAgICAgcmVzcG9uc2Uu
anNvbigpLnRoZW4oanNvbiA9PiB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghQXJyYXkuaXNB
cnJheShqc29uKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbXTsKLSAgICAgICAg
ICAgICAgICAgICAganNvbi5mb3JFYWNoKChwYWlycykgPT4gewotICAgICAgICAgICAgICAgICAg
ICAgICAgcGFpcnMucmVzdWx0cy5mb3JFYWNoKChydW4pID0+IHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXN1bHQucHVzaChuZXcgRmFpbHVyZXMoc3VpdGUsIG5ldyBDb25maWd1cmF0
aW9uKHBhaXJzLmNvbmZpZ3VyYXRpb24pLCBydW4pKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IH0pOwotICAgICAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICAgICAgcmVzb2x2
ZShyZXN1bHQpOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgfSkuY2F0Y2goZXJy
b3IgPT4gewotICAgICAgICAgICAgICAgIC8vIElmIHRoZSBsb2FkIGZhaWxzLCBsb2cgdGhlIGVy
cm9yIGFuZCBjb250aW51ZQotICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoSlNPTi5zdHJp
bmdpZnkoZXJyb3IsIG51bGwsIDQpKTsKLSAgICAgICAgICAgICAgICByZWplY3QoZXJyb3IpOwot
ICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0pOwotICAgIH0KLQotICAgIHN0YXRpYyBjb21iaW5l
KCkKLSAgICB7Ci0gICAgICAgIGlmICghYXJndW1lbnRzLmxlbmd0aCkKLSAgICAgICAgICAgIHJl
dHVybiBudWxsOwotCi0gICAgICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBGYWlsdXJlcyhhcmd1bWVu
dHNbMF0uc3VpdGUpOwotICAgICAgICBjb25zdCBjb25maWd1cmF0aW9ucyA9IFtdOwotCi0gICAg
ICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAg
ICAgICBjb25maWd1cmF0aW9ucy5wdXNoKGFyZ3VtZW50c1tpXS5jb25maWd1cmF0aW9uKTsKLSAg
ICAgICAgICAgIHJlc3VsdC5hZ2dyZWdhdGluZyArPSBhcmd1bWVudHNbaV0uYWdncmVnYXRpbmc7
Ci0gICAgICAgICAgICByZXN1bHQuc3RhcnRfdGltZV9yYW5nZSA9IFsKLSAgICAgICAgICAgICAg
ICBNYXRoLm1pbihyZXN1bHQuc3RhcnRfdGltZV9yYW5nZVswXSwgYXJndW1lbnRzW2ldLnN0YXJ0
X3RpbWVfcmFuZ2VbMF0pLAotICAgICAgICAgICAgICAgIE1hdGgubWF4KHJlc3VsdC5zdGFydF90
aW1lX3JhbmdlWzFdLCBhcmd1bWVudHNbaV0uc3RhcnRfdGltZV9yYW5nZVsxXSksCi0gICAgICAg
ICAgICBdOwotICAgICAgICAgICAgcmVzdWx0LnV1aWRfcmFuZ2UgPSBbCi0gICAgICAgICAgICAg
ICAgTWF0aC5taW4ocmVzdWx0LnV1aWRfcmFuZ2VbMF0sIGFyZ3VtZW50c1tpXS51dWlkX3Jhbmdl
WzBdKSwKLSAgICAgICAgICAgICAgICBNYXRoLm1heChyZXN1bHQudXVpZF9yYW5nZVsxXSwgYXJn
dW1lbnRzW2ldLnV1aWRfcmFuZ2VbMV0pLAotICAgICAgICAgICAgXTsKLQotICAgICAgICAgICAg
Ly8gQ29tYmluZQotICAgICAgICAgICAgRXhwZWN0YXRpb25zLmZhaWx1cmVUeXBlcy5mb3JFYWNo
KHR5cGUgPT4gewotICAgICAgICAgICAgICAgIGZvciAobGV0IHRlc3QgaW4gYXJndW1lbnRzW2ld
W3R5cGVdKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHRbdHlwZV1bdGVzdF0gPT09
IHVuZGVmaW5lZCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFt0eXBlXVt0ZXN0XSA9
IGFyZ3VtZW50c1tpXVt0eXBlXVt0ZXN0XTsKLSAgICAgICAgICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgICAgICAgICAgcmVzdWx0W3R5cGVdW3Rlc3RdICs9IGFyZ3VtZW50c1tpXVt0
eXBlXVt0ZXN0XTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9KTsKLQotICAgICAg
ICAgICAgLy8gUHJpb3JpdGl6ZSBmYWlsdXJlcwotICAgICAgICAgICAgY29uc3QgcmVtYWluaW5n
VHlwZXMgPSBbLi4uRXhwZWN0YXRpb25zLmZhaWx1cmVUeXBlc107Ci0gICAgICAgICAgICB3aGls
ZSAocmVtYWluaW5nVHlwZXMubGVuZ3RoID4gMSkgewotICAgICAgICAgICAgICAgIGNvbnN0IHRv
UmVtb3ZlID0gW107Ci0gICAgICAgICAgICAgICAgY29uc3QgY3VycmVudFR5cGUgPSByZW1haW5p
bmdUeXBlc1swXTsKLSAgICAgICAgICAgICAgICByZW1haW5pbmdUeXBlcy5zaGlmdCgpOwotCi0g
ICAgICAgICAgICAgICAgZm9yIChsZXQgdGVzdCBpbiByZXN1bHRbY3VycmVudFR5cGVdKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGxldCB3b3JzdFR5cGUgPSBjdXJyZW50VHlwZTsKLSAgICAgICAg
ICAgICAgICAgICAgcmVtYWluaW5nVHlwZXMuZm9yRWFjaCh0eXBlID0+IHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChyZXN1bHRbdHlwZV1bdGVzdF0gIT09IHVuZGVmaW5lZCkKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB3b3JzdFR5cGUgPSB0eXBlOwotICAgICAgICAgICAgICAg
ICAgICB9KTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHdvcnN0VHlwZSA9PSBjdXJyZW50VHlw
ZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgICAg
ICByZXN1bHRbd29yc3RUeXBlXVt0ZXN0XSArPSByZXN1bHRbY3VycmVudFR5cGVdW3Rlc3RdOwot
ICAgICAgICAgICAgICAgICAgICB0b1JlbW92ZS5wdXNoKHRlc3QpOwotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICB0b1JlbW92ZS5mb3JFYWNoKHRlc3QgPT4gewotICAgICAgICAg
ICAgICAgICAgICBkZWxldGUgcmVzdWx0W2N1cnJlbnRUeXBlXVt0ZXN0XTsKLSAgICAgICAgICAg
ICAgICB9KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICByZXN1bHQuY29uZmln
dXJhdGlvbiA9IENvbmZpZ3VyYXRpb24uY29tYmluZSguLi5jb25maWd1cmF0aW9ucyk7Ci0gICAg
ICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotCi0gICAgY29uc3RydWN0b3Ioc3VpdGUsIGNvbmZp
Z3VyYXRpb24gPSBudWxsLCBqc29uID0gbnVsbCkgewotICAgICAgICB0aGlzLnN1aXRlID0gc3Vp
dGU7Ci0gICAgICAgIHRoaXMuY29uZmlndXJhdGlvbiA9IGNvbmZpZ3VyYXRpb24gPyBuZXcgQ29u
ZmlndXJhdGlvbihjb25maWd1cmF0aW9uKSA6IG5ldyBDb25maWd1cmF0aW9uKCk7Ci0KLSAgICAg
ICAgRXhwZWN0YXRpb25zLmZhaWx1cmVUeXBlcy5mb3JFYWNoKHR5cGUgPT4gewotICAgICAgICAg
ICAgdGhpc1t0eXBlXSA9IHt9OwotICAgICAgICB9KTsKLSAgICAgICAgaWYgKGpzb24gPT09IG51
bGwpIHsKLSAgICAgICAgICAgIHRoaXMuYWdncmVnYXRpbmcgPSAwOwotICAgICAgICAgICAgY29u
c3QgY3VycmVudFRpbWUgPSBNYXRoLmZsb29yKERhdGUubm93KCkgLyAxMDAwKTsKLSAgICAgICAg
ICAgIHRoaXMuc3RhcnRfdGltZV9yYW5nZSA9IFtjdXJyZW50VGltZSwgMF07Ci0gICAgICAgICAg
ICB0aGlzLnV1aWRfcmFuZ2UgPSBbY3VycmVudFRpbWUgKiBUSU1FU1RBTVBfVE9fVVVJRF9NVUxU
SVBMSUVSLCAwXTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIHRo
aXMuYWdncmVnYXRpbmcgPSAxOwotICAgICAgICB0aGlzLnN0YXJ0X3RpbWVfcmFuZ2UgPSBbanNv
bi5zdGFydF90aW1lLCBqc29uLnN0YXJ0X3RpbWVdOwotICAgICAgICB0aGlzLnV1aWRfcmFuZ2Ug
PSBbanNvbi51dWlkLCBqc29uLnV1aWRdOwotICAgICAgICBmb3IgKHZhciBwYXJhbWV0ZXIgaW4g
anNvbikgewotICAgICAgICAgICAgaWYgKHBhcmFtZXRlciA9PT0gJ3V1aWQnIHx8IHBhcmFtZXRl
ciA9PT0gJ3N0YXJ0X3RpbWUnKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAg
ICAgY29uc3QgdHlwZSA9IEV4cGVjdGF0aW9ucy50eXBlRm9ySWQoanNvbltwYXJhbWV0ZXJdKTsK
LSAgICAgICAgICAgIHRoaXNbdHlwZV1bcGFyYW1ldGVyXSA9IDE7Ci0gICAgICAgIH0KLSAgICB9
Ci0gICAgdG9QYXJhbXMoKSB7Ci0gICAgICAgIGNvbnN0IHBhcmFtcyA9IHRoaXMuY29uZmlndXJh
dGlvbi50b1BhcmFtcygpOwotICAgICAgICBwYXJhbXMuc3VpdGUgPSBbdGhpcy5zdWl0ZV07Ci0g
ICAgICAgIGlmICh0aGlzLnV1aWRfcmFuZ2VbMF0gPD0gdGhpcy51dWlkX3JhbmdlWzFdKSB7Ci0g
ICAgICAgICAgICBpZiAodGhpcy51dWlkX3JhbmdlWzBdID09PSB0aGlzLnV1aWRfcmFuZ2VbMV0p
Ci0gICAgICAgICAgICAgICAgcGFyYW1zLnV1aWQgPSBbdGhpcy51dWlkX3JhbmdlWzBdXTsKLSAg
ICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIHBhcmFtcy5hZnRlcl91dWlkID0gW3Ro
aXMudXVpZF9yYW5nZVswXV07Ci0gICAgICAgICAgICAgICAgcGFyYW1zLmJlZm9yZV91dWlkID0g
W3RoaXMudXVpZF9yYW5nZVsxXV07Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAg
aWYgKHRoaXMuc3RhcnRfdGltZV9yYW5nZVswXSA8PSB0aGlzLnN0YXJ0X3RpbWVfcmFuZ2VbMV0p
IHsKLSAgICAgICAgICAgIHBhcmFtcy5hZnRlcl90aW1lID0gW3RoaXMuc3RhcnRfdGltZV9yYW5n
ZVswXV07Ci0gICAgICAgICAgICBwYXJhbXMuYmVmb3JlX3RpbWUgPSBbdGhpcy5zdGFydF90aW1l
X3JhbmdlWzFdXTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gcGFyYW1zOwotICAgIH0KLX07
Ci0KLWV4cG9ydCB7RmFpbHVyZXN9OwpJbmRleDogVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2Ri
cHkvdmlldy9zdGF0aWMvanMvaW52ZXN0aWdhdGUuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvcmVz
dWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9zdGF0aWMvanMvaW52ZXN0aWdhdGUuanMJKHJldmlz
aW9uIDI2NTUzMSkKKysrIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvc3RhdGlj
L2pzL2ludmVzdGlnYXRlLmpzCShub25leGlzdGVudCkKQEAgLTEsNDI2ICswLDAgQEAKLS8vIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8g
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLS8vIGFyZSBtZXQ6Ci0vLyAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotLy8gMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLS8vICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIKLS8vIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotLy8gVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
Ly8gUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0vLyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0vLyBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotLy8g
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0vLyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotLy8gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLS8v
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLS8vIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotaW1w
b3J0IHtBcmNoaXZlUm91dGVyfSBmcm9tICcvYXNzZXRzL2pzL2FyY2hpdmVSb3V0ZXIuanMnOwot
aW1wb3J0IHtET00sIFJFRn0gZnJvbSAnL2xpYnJhcnkvanMvUmVmLmpzJzsKLWltcG9ydCB7Q29t
bWl0QmFua30gZnJvbSAnL2Fzc2V0cy9qcy9jb21taXQuanMnOwotaW1wb3J0IHtxdWVyeVRvUGFy
YW1zLCBwYXJhbXNUb1F1ZXJ5LCBRdWVyeU1vZGlmaWVyLCBwZXJjZW50YWdlLCBlbGFwc2VkVGlt
ZX0gZnJvbSAnL2Fzc2V0cy9qcy9jb21tb24uanMnOwotaW1wb3J0IHtDb25maWd1cmF0aW9ufSBm
cm9tICcvYXNzZXRzL2pzL2NvbmZpZ3VyYXRpb24uanMnCi1pbXBvcnQge0V4cGVjdGF0aW9uc30g
ZnJvbSAnL2Fzc2V0cy9qcy9leHBlY3RhdGlvbnMuanMnOwotaW1wb3J0IHtGYWlsdXJlc30gZnJv
bSAnL2Fzc2V0cy9qcy9mYWlsdXJlcy5qcyc7Ci0KLWZ1bmN0aW9uIGNvbW1pdHNGb3JVdWlkKHV1
aWQpIHsKLSAgICByZXR1cm4gYENvbW1pdHM6ICR7Q29tbWl0QmFuay5jb21taXRzRHVyaW5nKHV1
aWQpLm1hcCgoY29tbWl0KSA9PiB7Ci0gICAgICAgICAgICBjb25zdCBwYXJhbXMgPSB7Ci0gICAg
ICAgICAgICAgICAgYnJhbmNoOiBjb21taXQuYnJhbmNoID8gW2NvbW1pdC5icmFuY2hdIDogYnJh
bmNoLAotICAgICAgICAgICAgICAgIHV1aWQ6IFtjb21taXQudXVpZF0sCi0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICBpZiAoIXBhcmFtcy5icmFuY2gpCi0gICAgICAgICAgICAgICAgZGVsZXRl
IHBhcmFtcy5icmFuY2g7Ci0gICAgICAgICAgICBjb25zdCBxdWVyeSA9IHBhcmFtc1RvUXVlcnko
cGFyYW1zKTsKLSAgICAgICAgICAgIHJldHVybiBgPGEgaHJlZj0iL2NvbW1pdC9pbmZvPyR7cXVl
cnl9IiB0YXJnZXQ9Il9ibGFuayI+JHtjb21taXQuaWQuc3Vic3RyaW5nKDAsMTIpfTwvYT5gOwot
ICAgICAgICB9KS5qb2luKCcsICcpfWAKLX0KLQotZnVuY3Rpb24gcGFyYW1ldGVyc0Zvckluc3Rh
bmNlKHN1aXRlLCBkYXRhKQotewotICAgIGNvbnN0IGJyYW5jaCA9IHF1ZXJ5VG9QYXJhbXMoZG9j
dW1lbnQuVVJMLnNwbGl0KCc/JylbMV0pLmJyYW5jaDsKLSAgICBjb25zdCBidWlsZFBhcmFtcyA9
IGRhdGEuY29uZmlndXJhdGlvbi50b1BhcmFtcygpOwotICAgIGJ1aWxkUGFyYW1zWydzdWl0ZSdd
ID0gW3N1aXRlXTsKLSAgICBidWlsZFBhcmFtc1sndXVpZCddID0gW2RhdGEudXVpZF07Ci0gICAg
YnVpbGRQYXJhbXNbJ2FmdGVyX3RpbWUnXSA9IFtkYXRhLnN0YXJ0X3RpbWVdOwotICAgIGJ1aWxk
UGFyYW1zWydiZWZvcmVfdGltZSddID0gW2RhdGEuc3RhcnRfdGltZV07Ci0gICAgaWYgKGJyYW5j
aCkKLSAgICAgICAgYnVpbGRQYXJhbXNbJ2JyYW5jaCddID0gYnJhbmNoOwotICAgIHJldHVybiBw
YXJhbXNUb1F1ZXJ5KGJ1aWxkUGFyYW1zKTsKLX0KLQotZnVuY3Rpb24gdGVzdFJ1bkxpbmsoc3Vp
dGUsIGRhdGEpCi17Ci0gICAgaWYgKCFkYXRhLnN0YXJ0X3RpbWUpCi0gICAgICAgIHJldHVybiAn
JzsKLSAgICByZXR1cm4gYDxhIGhyZWY9Ii91cmxzL2J1aWxkPyR7cGFyYW1ldGVyc0Zvckluc3Rh
bmNlKHN1aXRlLCBkYXRhKX0iIHRhcmdldD0iX2JsYW5rIj5UZXN0IHJ1bjwvYT4gQCAke25ldyBE
YXRlKGRhdGEuc3RhcnRfdGltZSAqIDEwMDApLnRvTG9jYWxlU3RyaW5nKCl9YDsKLX0KLQotZnVu
Y3Rpb24gYXJjaGl2ZUxpbmsoc3VpdGUsIGRhdGEpCi17Ci0gICAgaWYgKCFkYXRhLnN0YXJ0X3Rp
bWUgfHwgIUFyY2hpdmVSb3V0ZXIuaGFzQXJjaGl2ZShzdWl0ZSkpCi0gICAgICAgIHJldHVybiAn
JzsKLSAgICByZXR1cm4gYDxhIGhyZWY9Ii9hcmNoaXZlLyR7QXJjaGl2ZVJvdXRlci5wYXRoRm9y
KHN1aXRlKX0/JHtwYXJhbWV0ZXJzRm9ySW5zdGFuY2Uoc3VpdGUsIGRhdGEpfSIgdGFyZ2V0PSJf
YmxhbmsiPiR7QXJjaGl2ZVJvdXRlci5sYWJlbEZvcihzdWl0ZSl9PC9hPmA7Ci19Ci0KLWZ1bmN0
aW9uIGVsYXBzZWQoZGF0YSkKLXsKLSAgICBpZiAoZGF0YS50aW1lKQotICAgICAgICByZXR1cm4g
YFRvb2sgJHtkYXRhLnRpbWUgLyAxMDAwfSBzZWNvbmRzYDsKLSAgICBpZiAoZGF0YS5zdGF0cyAm
JiBkYXRhLnN0YXRzLnN0YXJ0X3RpbWUgJiYgZGF0YS5zdGF0cy5lbmRfdGltZSkKLSAgICAgICAg
cmV0dXJuIGBTdWl0ZSB0b29rICR7ZWxhcHNlZFRpbWUoZGF0YS5zdGF0cy5zdGFydF90aW1lLCBk
YXRhLnN0YXRzLmVuZF90aW1lKX1gOwotICAgIHJldHVybiAnJzsKLX0KLQotZnVuY3Rpb24gcHJp
b3JpdGl6ZWRGYWlsdXJlcyhmYWlsdXJlcywgbWF4ID0gMCwgd2lsbEZpbHRlckV4cGVjdGVkID0g
ZmFsc2UpCi17Ci0gICAgaWYgKGZhaWx1cmVzID09PSB1bmRlZmluZWQpCi0gICAgICAgIHJldHVy
biAnJzsKLQotICAgIGlmIChmYWlsdXJlcyA9PT0gbnVsbCkKLSAgICAgICAgcmV0dXJuIGA8ZGl2
IGNsYXNzPSJsb2FkZXIiPgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNwaW5uZXIiPjwv
ZGl2PgotICAgICAgICAgICAgPC9kaXY+YDsKLSAgICBsZXQgZmFpbHVyZXNUb0Rpc3BsYXkgPSBb
XTsKLSAgICBFeHBlY3RhdGlvbnMuZmFpbHVyZVR5cGVzLmZvckVhY2godHlwZSA9PiB7Ci0gICAg
ICAgIGZvciAobGV0IHRlc3ROYW1lIGluIGZhaWx1cmVzW3R5cGVdKSB7Ci0gICAgICAgICAgICBm
YWlsdXJlc1RvRGlzcGxheS5wdXNoKHsKLSAgICAgICAgICAgICAgICBmYWlsdXJlOiB0eXBlLAot
ICAgICAgICAgICAgICAgIHRlc3Q6IHRlc3ROYW1lLAotICAgICAgICAgICAgICAgIGNvdW50OiBm
YWlsdXJlcy5hZ2dyZWdhdGluZywKLSAgICAgICAgICAgICAgICBmYWlsdXJlQ291bnQ6IGZhaWx1
cmVzW3R5cGVdW3Rlc3ROYW1lXSwKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9Ci0gICAgfSk7
Ci0gICAgZmFpbHVyZXNUb0Rpc3BsYXkuc29ydChmdW5jdGlvbihhLCBiKSB7Ci0gICAgICAgIGNv
bnN0IHR5cGVDb21wYXJlID0gRXhwZWN0YXRpb25zLnN0cmluZ1RvU3RhdGVJZChFeHBlY3RhdGlv
bnMuZmFpbHVyZVR5cGVNYXBbYS5mYWlsdXJlXSkgLSBFeHBlY3RhdGlvbnMuc3RyaW5nVG9TdGF0
ZUlkKEV4cGVjdGF0aW9ucy5mYWlsdXJlVHlwZU1hcFtiLmZhaWx1cmVdKTsKLSAgICAgICAgaWYg
KHR5cGVDb21wYXJlKQotICAgICAgICAgICAgcmV0dXJuIHR5cGVDb21wYXJlOwotICAgICAgICBp
ZiAoYS5mYWlsdXJlQ291bnQgLSBiLmZhaWx1cmVDb3VudCkKLSAgICAgICAgICAgIHJldHVybiBh
LmZhaWx1cmVDb3VudCAtIGIuZmFpbHVyZUNvdW50OwotICAgICAgICByZXR1cm4gKGEudGVzdCku
bG9jYWxlQ29tcGFyZShiLnRlc3QpOwotICAgIH0pOwotCi0gICAgaWYgKG1heCAmJiBmYWlsdXJl
c1RvRGlzcGxheS5sZW5ndGggPiBtYXgpIHsKLSAgICAgICAgZmFpbHVyZXNUb0Rpc3BsYXkgPSBm
YWlsdXJlc1RvRGlzcGxheS5zcGxpY2UoMCwgbWF4KTsKLSAgICAgICAgZmFpbHVyZXNUb0Rpc3Bs
YXlbbWF4IC0gMV0gPSBudWxsOwotICAgIH0KLQotCi0KLSAgICByZXR1cm4gYDxkaXY+JHtmYWls
dXJlc1RvRGlzcGxheS5tYXAoZmFpbHVyZSA9PiB7Ci0gICAgICAgIGlmIChmYWlsdXJlID09PSBu
dWxsKSB7Ci0gICAgICAgICAgICBjb25zdCBwYXJhbXMgPSBmYWlsdXJlcy50b1BhcmFtcygpOwot
ICAgICAgICAgICAgcGFyYW1zLnVuZXhwZWN0ZWQgPSBbd2lsbEZpbHRlckV4cGVjdGVkXTsKLSAg
ICAgICAgICAgIHJldHVybiBgPGEgc3R5bGU9Im1hcmdpbi1sZWZ0OiBjYWxjKHZhcigtLW1lZGl1
bVNpemUpICsgMTZweCkiIHRhcmdldD0iX2JsYW5rIiBocmVmPSIvaW52ZXN0aWdhdGU/JHtwYXJh
bXNUb1F1ZXJ5KHBhcmFtcyl9Ij5Nb3JlLi4uPC9hPmA7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0
dXJuIGA8ZGl2PgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCAke2ZhaWx1cmUuZmFp
bHVyZX0gc21hbGwiPgotICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aW55IHRleHQi
IHN0eWxlPSJmb250LXdlaWdodDogbm9ybWFsO21hcmdpbi10b3A6IDBweCI+JHtFeHBlY3RhdGlv
bnMuc3ltYm9sTWFwW2ZhaWx1cmUuZmFpbHVyZV19PC9kaXY+Ci0gICAgICAgICAgICAgICAgPC9k
aXY+Ci0gICAgICAgICAgICAgICAgPGEgY2xhc3M9InRleHQgYmxvY2siIHN0eWxlPSJ3aWR0aDog
Y2FsYygxMDAlIC0gdmFyKC0tbWVkaXVtU2l6ZSkgLSAxNnB4KTsgb3ZlcmZsb3c6IGhpZGRlbjsg
d2hpdGUtc3BhY2U6IG5vd3JhcDsgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7IiBocmVmPSIvP3N1
aXRlPSR7ZmFpbHVyZXMuc3VpdGV9JnRlc3Q9JHtmYWlsdXJlLnRlc3R9Ij4ke2ZhaWx1cmUudGVz
dH08L2E+Ci0gICAgICAgICAgICA8L2Rpdj5gOwotICAgIH0pLmpvaW4oJycpfTwvZGl2PmA7Ci19
Ci0KLWZ1bmN0aW9uIHJlc3VsdHNGb3JEYXRhKGRhdGEsIHdpbGxGaWx0ZXJFeHBlY3RlZCA9IGZh
bHNlKQotewotICAgIGNvbnN0IHJlc3VsdCA9IFtdOwotICAgIGxldCB0ZXN0c1JhbiA9IDE7Ci0g
ICAgbGV0IHRvdGFsVGVzdHMgPSAxOwotICAgIGlmIChkYXRhLnN0YXRzICYmIGRhdGEuc3RhdHMu
dGVzdHNfcnVuKSB7Ci0gICAgICAgIHRlc3RzUmFuID0gZGF0YS5zdGF0cy50ZXN0c19ydW47Ci0g
ICAgICAgIHRvdGFsVGVzdHMgPSBkYXRhLnN0YXRzLnRlc3RzX3J1biArIChkYXRhLnN0YXRzLnRl
c3RzX3NraXBwZWQgPyBkYXRhLnN0YXRzLnRlc3RzX3NraXBwZWQgOiAwKTsKLSAgICB9Ci0gICAg
bGV0IGRvdHNEaXNwbGF5ZWQgPSAwOwotICAgIHJlc3VsdC5wdXNoKGA8ZGl2PlJhbiAke3Rlc3Rz
UmFuLnRvTG9jYWxlU3RyaW5nKCl9IG9mICR7dG90YWxUZXN0cy50b0xvY2FsZVN0cmluZygpfSB0
ZXN0c2ApOwotICAgIGlmIChkYXRhLmFjdHVhbCkgewotICAgICAgICBjb25zdCB0eXBlID0gRXhw
ZWN0YXRpb25zLnR5cGVGb3JJZChkYXRhLmFjdHVhbCk7Ci0gICAgICAgICsrZG90c0Rpc3BsYXll
ZDsKLSAgICAgICAgcmVzdWx0LnB1c2goYEFjdHVhbDogJHtkYXRhLmFjdHVhbH0KLSAgICAgICAg
ICAgIDxkaXYgY2xhc3M9ImRvdCAke3R5cGV9IHNtYWxsIj4KLSAgICAgICAgICAgICAgICA8ZGl2
IGNsYXNzPSJ0aW55IHRleHQiIHN0eWxlPSJmb250LXdlaWdodDogbm9ybWFsO21hcmdpbi10b3A6
IDBweCI+JHtFeHBlY3RhdGlvbnMuc3ltYm9sTWFwW3R5cGVdfTwvZGl2PgotICAgICAgICAgICAg
PC9kaXY+YCk7Ci0gICAgfQotICAgIGlmIChkYXRhLmV4cGVjdGVkKSB7Ci0gICAgICAgIGNvbnN0
IHR5cGUgPSBFeHBlY3RhdGlvbnMudHlwZUZvcklkKGRhdGEuZXhwZWN0ZWQpOwotICAgICAgICAr
K2RvdHNEaXNwbGF5ZWQ7Ci0gICAgICAgIHJlc3VsdC5wdXNoKGBFeHBlY3RlZDogJHtkYXRhLmV4
cGVjdGVkfQotICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90ICR7dHlwZX0gc21hbGwiPgotICAg
ICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRpbnkgdGV4dCIgc3R5bGU9ImZvbnQtd2VpZ2h0OiBu
b3JtYWw7bWFyZ2luLXRvcDogMHB4Ij4ke0V4cGVjdGF0aW9ucy5zeW1ib2xNYXBbdHlwZV19PC9k
aXY+Ci0gICAgICAgICAgICA8L2Rpdj5gKTsKLSAgICB9Ci0gICAgaWYgKGRhdGEuc3RhdHMgJiYg
ZGF0YS5zdGF0cy50ZXN0c19ydW4pIHsKLSAgICAgICAgY29uc3Qgc3VjY2VlZGVkID0gZGF0YS5z
dGF0cy50ZXN0c19ydW4gLSBkYXRhLnN0YXRzW2B0ZXN0cyR7d2lsbEZpbHRlckV4cGVjdGVkID8g
J191bmV4cGVjdGVkXycgOiAnXyd9ZmFpbGVkYF07Ci0gICAgICAgIGlmIChzdWNjZWVkZWQpIHsK
LSAgICAgICAgICAgICsrZG90c0Rpc3BsYXllZDsKLSAgICAgICAgICAgIHJlc3VsdC5wdXNoKGA8
ZGl2IGNsYXNzPSJkb3Qgc3VjY2VzcyBzbWFsbCI+Ci0gICAgICAgICAgICAgICAgICAgIDxkaXYg
Y2xhc3M9InRpbnkgdGV4dCIgc3R5bGU9ImZvbnQtd2VpZ2h0OiBub3JtYWw7bWFyZ2luLXRvcDog
MHB4Ij4ke0V4cGVjdGF0aW9ucy5zeW1ib2xNYXAuc3VjY2Vzc308L2Rpdj4KLSAgICAgICAgICAg
ICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAke2RhdGEuc3RhcnRfdGltZSA/IHN1Y2NlZWRl
ZC50b0xvY2FsZVN0cmluZygpIDogcGVyY2VudGFnZShzdWNjZWVkZWQsIGRhdGEuc3RhdHMudGVz
dHNfcnVuKX0gcGFzc2VkYCk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZm9yIChsZXQgaSA9IDA7
IGkgPCBFeHBlY3RhdGlvbnMuZmFpbHVyZVR5cGVzLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgIGlm
ICghZGF0YS5zdGF0cykKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBjb25zdCB0eXBl
ID0gRXhwZWN0YXRpb25zLmZhaWx1cmVUeXBlc1tpXTsKLSAgICAgICAgbGV0IHZhbHVlID0gZGF0
YS5zdGF0c1tgdGVzdHMke3dpbGxGaWx0ZXJFeHBlY3RlZCA/ICdfdW5leHBlY3RlZF8nIDogJ18n
fSR7dHlwZX1gXTsKLSAgICAgICAgaWYgKGkgPCBFeHBlY3RhdGlvbnMuZmFpbHVyZVR5cGVzLmxl
bmd0aCAtIDEpCi0gICAgICAgICAgICB2YWx1ZSAtPSBkYXRhLnN0YXRzW2B0ZXN0cyR7d2lsbEZp
bHRlckV4cGVjdGVkID8gJ191bmV4cGVjdGVkXycgOiAnXyd9JHtFeHBlY3RhdGlvbnMuZmFpbHVy
ZVR5cGVzW2kgKyAxXX1gXTsKLSAgICAgICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgICAgIGNvbnRp
bnVlOwotICAgICAgICArK2RvdHNEaXNwbGF5ZWQ7Ci0gICAgICAgIHJlc3VsdC5wdXNoKGA8ZGl2
IGNsYXNzPSJkb3QgJHt0eXBlfSBzbWFsbCI+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0i
dGlueSB0ZXh0IiBzdHlsZT0iZm9udC13ZWlnaHQ6IG5vcm1hbDttYXJnaW4tdG9wOiAwcHgiPiR7
RXhwZWN0YXRpb25zLnN5bWJvbE1hcFt0eXBlXX08L2Rpdj4KLSAgICAgICAgICAgIDwvZGl2Pgot
ICAgICAgICAgICAgJHtkYXRhLnN0YXJ0X3RpbWUgPyB2YWx1ZS50b0xvY2FsZVN0cmluZygpIDog
cGVyY2VudGFnZSh2YWx1ZSwgZGF0YS5zdGF0cy50ZXN0c19ydW4pfSAke3R5cGV9YCk7Ci0gICAg
fQotICAgIHJlc3VsdC5wdXNoKCc8L2Rpdj4nKTsKLSAgICByZXN1bHQucHVzaChwcmlvcml0aXpl
ZEZhaWx1cmVzKGRhdGEuZmFpbHVyZXMsIE1hdGgubWF4KDYgLSBkb3RzRGlzcGxheWVkLCAxKSwg
d2lsbEZpbHRlckV4cGVjdGVkKSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotZnVuY3Rpb24g
cmVuZGVySW52ZXN0aWdhdGVEcmF3ZXIoYXJyYXlzKQotewotICAgIHJldHVybiBgPGRpdiBjbGFz
cz0icm93Ij4KLSAgICAgICAgICAgICR7YXJyYXlzLm1hcChhcnJheSA9PiB7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIGA8ZGl2IGNsYXNzPSJjb2wtcy02IGxpc3QiPgotICAgICAgICAgICAgICAg
ICAgICAgICAgJHthcnJheS5tYXAoZWxlbWVudCA9PiB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGA8ZGl2IGNsYXNzPSJpdGVtIj4ke2VsZW1lbnR9PC9kaXY+YDsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIH0pLmpvaW4oJycpfQotICAgICAgICAgICAgICAgICAgICA8L2Rp
dj5gOwotICAgICAgICAgICAgfSkuam9pbignPGRpdiBjbGFzcz0iZGl2aWRlciBtb2JpbGUtY29u
dHJvbCI+PC9kaXY+Jyl9Ci0gICAgICAgIDwvZGl2PmAKLX0KLQotZnVuY3Rpb24gY29udGVudEZv
ckFncmVnYXRlRGF0YShzdWl0ZSwgYWdyZWdhdGVEYXRhLCBkYXRhLCB3aWxsRmlsdGVyRXhwZWN0
ZWQgPSBmYWxzZSkKLXsKLSAgICBjb25zdCBtZXRhRGF0YSA9IFsKLSAgICAgICAgYCR7ZGF0YS5s
ZW5ndGh9IHJlcG9ydHMgZm9yICR7YWdyZWdhdGVEYXRhLmNvbmZpZ3VyYXRpb259YCwKLSAgICAg
ICAgY29tbWl0c0ZvclV1aWQoYWdyZWdhdGVEYXRhLnV1aWQpLAotICAgIF07Ci0gICAgbGV0IGNv
dW50ID0gMDsKLSAgICBkYXRhLmZvckVhY2gobm9kZSA9PiB7Ci0gICAgICAgIGNvbnN0IG15Q291
bnQgPSBjb3VudDsKLSAgICAgICAgbGV0IGRvdFR5cGUgPSAnc3VjY2Vzcyc7Ci0gICAgICAgIGlm
IChub2RlLnN0YXRzKSB7Ci0gICAgICAgICAgICBFeHBlY3RhdGlvbnMuZmFpbHVyZVR5cGVzLmZv
ckVhY2godHlwZSA9PiB7Ci0gICAgICAgICAgICAgICAgaWYgKG5vZGUuc3RhdHNbYHRlc3RzJHt3
aWxsRmlsdGVyRXhwZWN0ZWQgPyAnX3VuZXhwZWN0ZWRfJyA6ICdfJ30ke3R5cGV9YF0gPiAwKQot
ICAgICAgICAgICAgICAgICAgICBkb3RUeXBlID0gdHlwZTsKLSAgICAgICAgICAgIH0pOwotICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgbGV0IHJlc3VsdElkID0gRXhwZWN0YXRpb25zLnN0
cmluZ1RvU3RhdGVJZChub2RlLmFjdHVhbCk7Ci0gICAgICAgICAgICBpZiAod2lsbEZpbHRlckV4
cGVjdGVkKQotICAgICAgICAgICAgICAgIHJlc3VsdElkID0gRXhwZWN0YXRpb25zLnN0cmluZ1Rv
U3RhdGVJZChFeHBlY3RhdGlvbnMudW5leHBlY3RlZFJlc3VsdHMobm9kZS5hY3R1YWwsIG5vZGUu
ZXhwZWN0ZWQpKTsKLSAgICAgICAgICAgIEV4cGVjdGF0aW9ucy5mYWlsdXJlVHlwZXMuZm9yRWFj
aCh0eXBlID0+IHsKLSAgICAgICAgICAgICAgICBpZiAoRXhwZWN0YXRpb25zLnN0cmluZ1RvU3Rh
dGVJZChFeHBlY3RhdGlvbnMuZmFpbHVyZVR5cGVNYXBbdHlwZV0pID49IHJlc3VsdElkKQotICAg
ICAgICAgICAgICAgICAgICBkb3RUeXBlID0gdHlwZTsKLSAgICAgICAgICAgIH0pOwotICAgICAg
ICB9Ci0gICAgICAgIG1ldGFEYXRhLnB1c2goYDxkaXY+Ci0gICAgICAgICAgICAgICAgPGRpdiBj
bGFzcz0iZG90ICR7ZG90VHlwZX0gc21hbGwiPgotICAgICAgICAgICAgICAgICAgICA8ZGl2IGNs
YXNzPSJ0aW55IHRleHQiIHN0eWxlPSJmb250LXdlaWdodDogbm9ybWFsO21hcmdpbi10b3A6IDBw
eCI+JHtFeHBlY3RhdGlvbnMuc3ltYm9sTWFwW2RvdFR5cGVdfTwvZGl2PgotICAgICAgICAgICAg
ICAgIDwvZGl2PgotICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJsaW5rLWJ1dHRvbiIgcmVmPSIk
e1JFRi5jcmVhdGVSZWYoewotICAgICAgICAgICAgICAgICAgICBvbkVsZW1lbnRNb3VudDogKGVs
ZW1lbnQpID0+IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQub25jbGljayA9ICgp
ID0+IEludmVzdGlnYXRlRHJhd2VyLnNlbGVjdChteUNvdW50ICsgMSk7Ci0gICAgICAgICAgICAg
ICAgICAgIH0sCi0gICAgICAgICAgICAgICAgfSl9Ij4KLSAgICAgICAgICAgICAgICAgICAgJHtu
b2RlLmNvbmZpZ3VyYXRpb259Ci0gICAgICAgICAgICAgICAgPC9hPgotICAgICAgICAgICAgPC9k
aXY+YCk7Ci0gICAgICAgICsrY291bnQ7Ci0gICAgfSk7Ci0gICAgcmV0dXJuIHJlbmRlckludmVz
dGlnYXRlRHJhd2VyKFttZXRhRGF0YSwgcmVzdWx0c0ZvckRhdGEoYWdyZWdhdGVEYXRhLCB3aWxs
RmlsdGVyRXhwZWN0ZWQpXSk7Ci19Ci0KLWZ1bmN0aW9uIGNvbnRlbnRGb3JEYXRhKHN1aXRlLCBk
YXRhLCB3aWxsRmlsdGVyRXhwZWN0ZWQgPSBmYWxzZSkKLXsKLSAgICBjb25zdCBtZXRhRGF0YSA9
IFsKLSAgICAgICAgZGF0YS5jb25maWd1cmF0aW9uLAotICAgICAgICBjb21taXRzRm9yVXVpZChk
YXRhLnV1aWQpLAotICAgICAgICB0ZXN0UnVuTGluayhzdWl0ZSwgZGF0YSksCi0gICAgICAgIGFy
Y2hpdmVMaW5rKHN1aXRlLCBkYXRhKSwKLSAgICAgICAgZWxhcHNlZChkYXRhKSwKLSAgICBdOwot
Ci0gICAgcmV0dXJuIHJlbmRlckludmVzdGlnYXRlRHJhd2VyKFttZXRhRGF0YSwgcmVzdWx0c0Zv
ckRhdGEoZGF0YSwgd2lsbEZpbHRlckV4cGVjdGVkKV0pOwotfQotCi1jbGFzcyBfSW52ZXN0aWdh
dGVEcmF3ZXIgewotICAgIGNvbnN0cnVjdG9yKCkgewotICAgICAgICB0aGlzLnJlZiA9IG51bGw7
Ci0gICAgICAgIHRoaXMuY29udGVudCA9IG51bGw7Ci0gICAgICAgIHRoaXMuY2xvc2UgPSBudWxs
OwotICAgICAgICB0aGlzLnByZXZpb3VzID0gbnVsbDsKLSAgICAgICAgdGhpcy5uZXh0ID0gbnVs
bDsKLQotICAgICAgICB0aGlzLnNlbGVjdGVkID0gMDsKLSAgICAgICAgdGhpcy5zdWl0ZSA9IG51
bGw7Ci0gICAgICAgIHRoaXMuYWdyZWdhdGUgPSBudWxsOwotICAgICAgICB0aGlzLmRhdGEgPSBb
XTsKLQotICAgICAgICB0aGlzLndpbGxGaWx0ZXJFeHBlY3RlZCA9IGZhbHNlOwotICAgIH0KLSAg
ICBpc1JlbmRlcmVkKCkgewotICAgICAgICBsZXQgcmVzdWx0ID0gdHJ1ZTsKLSAgICAgICAgWydy
ZWYnLCAnY29udGVudCcsICdjbG9zZScsICdwcmV2aW91cycsICduZXh0J10uZm9yRWFjaChlbGVt
ZW50ID0+IHsKLSAgICAgICAgICAgIGlmICghcmVzdWx0KQotICAgICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgICAgIHJlc3VsdCA9IHRoaXNbZWxlbWVudF0gJiYgdGhpc1tlbGVtZW50XS5l
bGVtZW50OwotICAgICAgICB9KTsKLSAgICAgICAgaWYgKCFyZXN1bHQpCi0gICAgICAgICAgICBj
b25zb2xlLmVycm9yKCdJbnZlc3RpZ2F0aW9uIGRyYXdlciBub3QgcmVuZGVyZWQnKTsKLSAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0gICAgdG9TdHJpbmcoKSB7Ci0gICAgICAgIGNvbnN0
IHNlbGYgPSB0aGlzOwotICAgICAgICB0aGlzLnJlZiA9IFJFRi5jcmVhdGVSZWYoKTsKLSAgICAg
ICAgdGhpcy5jb250ZW50ID0gUkVGLmNyZWF0ZVJlZih7Ci0gICAgICAgICAgICBzdGF0ZTogJycs
Ci0gICAgICAgICAgICBvblN0YXRlVXBkYXRlOiAoZWxlbWVudCwgc3RhdGUpID0+IHsKLSAgICAg
ICAgICAgICAgICBET00uaW5qZWN0KGVsZW1lbnQsIHN0YXRlKTsKLSAgICAgICAgICAgIH0sCi0g
ICAgICAgIH0pOwotICAgICAgICB0aGlzLmNsb3NlID0gUkVGLmNyZWF0ZVJlZih7Ci0gICAgICAg
ICAgICBvbkVsZW1lbnRNb3VudDogKGVsZW1lbnQpID0+IHsKLSAgICAgICAgICAgICAgICBlbGVt
ZW50Lm9uY2xpY2sgPSAoKSA9PiBzZWxmLmNvbGxhcHNlKCk7Ci0gICAgICAgICAgICB9LAotICAg
ICAgICB9KTsKLQotICAgICAgICB0aGlzLnByZXZpb3VzID0gUkVGLmNyZWF0ZVJlZih7Ci0gICAg
ICAgICAgICBvbkVsZW1lbnRNb3VudDogKGVsZW1lbnQpID0+IHsKLSAgICAgICAgICAgICAgICBl
bGVtZW50Lm9uY2xpY2sgPSAoKSA9PiBzZWxmLnNlbGVjdChzZWxmLnNlbGVjdGVkIC0gMSk7Ci0g
ICAgICAgICAgICB9LAotICAgICAgICB9KTsKLSAgICAgICAgdGhpcy5uZXh0ID0gUkVGLmNyZWF0
ZVJlZih7Ci0gICAgICAgICAgICBvbkVsZW1lbnRNb3VudDogKGVsZW1lbnQpID0+IHsKLSAgICAg
ICAgICAgICAgICBlbGVtZW50Lm9uY2xpY2sgPSAoKSA9PiBzZWxmLnNlbGVjdChzZWxmLnNlbGVj
dGVkICsgMSk7Ci0gICAgICAgICAgICB9LAotICAgICAgICB9KTsKLQotICAgICAgICByZXR1cm4g
YDxkaXYgY2xhc3M9ImRyYXdlciBtYWluIHJpZ2h0LXNpZGViYXIiIHJlZj0iJHt0aGlzLnJlZn0i
IHN0eWxlPSJ6LWluZGV4OiAyMCI+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGVu
dCB1bnNlbGVjdGFibGUiIHN0eWxlPSJkaXNwbGF5OiBmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6IHNw
YWNlLWJldHdlZW47IGZsZXgtZGlyZWN0aW9uOiByb3c7IHBhZGRpbmc6IDEwcHg7Ij4KLSAgICAg
ICAgICAgICAgICAgICAgPGRpdiBzdHlsZT0id2lkdGg6IDE1MHB4OyB0ZXh0LWFsaWduOiBsZWZ0
Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJidXR0b24iIHN0eWxlPSJjdXJz
b3I6IHBvaW50ZXIiIHJlZj0iJHt0aGlzLnByZXZpb3VzfSI+4peAIFByZXZpb3VzPC9hPgotICAg
ICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgPGRpdj4KLSAgICAg
ICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJidXR0b24iIHN0eWxlPSJjdXJzb3I6IHBvaW50
ZXIiIHJlZj0iJHt0aGlzLmNsb3NlfSI+Q2xvc2U8L2E+Ci0gICAgICAgICAgICAgICAgICAgIDwv
ZGl2PgotICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSJ3aWR0aDogMTUwcHg7IHRleHQt
YWxpZ246IHJpZ2h0Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJidXR0b24i
IHN0eWxlPSJjdXJzb3I6IHBvaW50ZXIiIHJlZj0iJHt0aGlzLm5leHR9Ij5OZXh0IOKWtjwvYT4K
LSAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAg
ICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudCIgcmVmPSIke3RoaXMuY29udGVudH0iPgot
ICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPC9kaXY+YDsKLSAgICB9Ci0gICAg
ZXhwYW5kKHN1aXRlLCBhZ3JlZ2F0ZURhdGEsIGFsbERhdGEpIHsKLSAgICAgICAgaWYgKCF0aGlz
LmlzUmVuZGVyZWQoKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgdGhpcy5yZWYuZWxl
bWVudC5jbGFzc0xpc3QuYWRkKCdkaXNwbGF5Jyk7Ci0gICAgICAgIHRoaXMuc3VpdGUgPSBzdWl0
ZTsKLSAgICAgICAgdGhpcy5hZ3JlZ2F0ZSA9IGFncmVnYXRlRGF0YTsKLSAgICAgICAgdGhpcy5k
YXRhID0gYWxsRGF0YTsKLSAgICAgICAgdGhpcy5kaXNwYXRjaCgpOwotICAgICAgICB0aGlzLnNl
bGVjdCgwKTsKLSAgICB9Ci0gICAgZGlzcGF0Y2goKSB7Ci0gICAgICAgIGlmICghdGhpcy5kYXRh
Lmxlbmd0aCkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkg
PCB0aGlzLmRhdGEubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgIGlmICghdGhpcy5kYXRhW2ld
LnN0YXRzKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIHRo
aXMuZGF0YS5mb3JFYWNoKGRhdHVtID0+IHsKLSAgICAgICAgICAgIGRhdHVtLmZhaWx1cmVzID0g
bnVsbDsKLSAgICAgICAgfSk7Ci0gICAgICAgIHRoaXMuYWdyZWdhdGUuZmFpbHVyZXMgPSBudWxs
OwotCi0gICAgICAgIGNvbnN0IGJyYW5jaCA9IHF1ZXJ5VG9QYXJhbXMoZG9jdW1lbnQuVVJMLnNw
bGl0KCc/JylbMV0pLmJyYW5jaDsKLSAgICAgICAgY29uc3QgcGFyYW1zID0gewotICAgICAgICAg
ICAgdW5leHBlY3RlZDogW3RoaXMud2lsbEZpbHRlckV4cGVjdGVkXSwKLSAgICAgICAgICAgIHV1
aWQ6IFt0aGlzLmFncmVnYXRlLnV1aWRdLAotICAgICAgICB9Ci0gICAgICAgIGlmICh0aGlzLmFn
cmVnYXRlLnN0YXJ0X3RpbWUpIHsKLSAgICAgICAgICAgIHBhcmFtcy5iZWZvcmVfdGltZSA9IFt0
aGlzLmFncmVnYXRlLnN0YXJ0X3RpbWVdOwotICAgICAgICAgICAgcGFyYW1zLmFmdGVyX3RpbWUg
PSBbdGhpcy5hZ3JlZ2F0ZS5zdGFydF90aW1lXTsKLSAgICAgICAgfQotICAgICAgICBpZiAoYnJh
bmNoKQotICAgICAgICAgICAgcGFyYW1zLmJyYW5jaCA9IFticmFuY2hdOwotCi0gICAgICAgIEZh
aWx1cmVzLmZyb21FbmRwb2ludCgKLSAgICAgICAgICAgIHRoaXMuc3VpdGUsCi0gICAgICAgICAg
ICB0aGlzLmFncmVnYXRlLmNvbmZpZ3VyYXRpb24sCi0gICAgICAgICAgICBwYXJhbXMsCi0gICAg
ICAgICkudGhlbihmYWlsdXJlcyA9PiB7Ci0gICAgICAgICAgICB0aGlzLmFncmVnYXRlLmZhaWx1
cmVzID0gRmFpbHVyZXMuY29tYmluZSguLi5mYWlsdXJlcyk7Ci0gICAgICAgICAgICB0aGlzLmRh
dGEuZm9yRWFjaChkYXR1bSA9PiB7Ci0gICAgICAgICAgICAgICAgZGF0dW0uZmFpbHVyZXMgPSBu
ZXcgRmFpbHVyZXModGhpcy5zdWl0ZSwgZGF0dW0uY29uZmlndXJhdGlvbik7Ci0gICAgICAgICAg
ICAgICAgZmFpbHVyZXMuZm9yRWFjaChmYWlsdXJlID0+IHsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKGRhdHVtLmNvbmZpZ3VyYXRpb24uY29tcGFyZShmYWlsdXJlLmNvbmZpZ3VyYXRpb24pID09
PSAwKQotICAgICAgICAgICAgICAgICAgICAgICAgZGF0dW0uZmFpbHVyZXMgPSBGYWlsdXJlcy5j
b21iaW5lKGRhdHVtLmZhaWx1cmVzLCBmYWlsdXJlKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAg
ICAgICAgICAgIH0pOwotICAgICAgICAgICAgdGhpcy5zZWxlY3QodGhpcy5zZWxlY3RlZCk7Ci0g
ICAgICAgIH0pOwotICAgIH0KLSAgICBjb2xsYXBzZSgpIHsKLSAgICAgICAgaWYgKCF0aGlzLmlz
UmVuZGVyZWQoKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgdGhpcy5yZWYuZWxlbWVu
dC5jbGFzc0xpc3QucmVtb3ZlKCdkaXNwbGF5Jyk7Ci0KLSAgICAgICAgdGhpcy5hZ3JlZ2F0ZSA9
IG51bGw7Ci0gICAgICAgIHRoaXMuZGF0YSA9IFtdOwotICAgICAgICB0aGlzLnNlbGVjdCgwKTsK
LSAgICB9Ci0gICAgc2VsZWN0KGluZGV4KSB7Ci0gICAgICAgIGlmICghdGhpcy5yZWYpCi0gICAg
ICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgbGV0IGNhbmRpZGF0ZXMgPSB0aGlzLmRhdGEubGVu
Z3RoOwotICAgICAgICBpZiAodGhpcy5hZ3JlZ2F0ZSAmJiB0aGlzLmRhdGEubGVuZ3RoID4gMSkK
LSAgICAgICAgICAgIGNhbmRpZGF0ZXMgKz0gMTsKLSAgICAgICAgaWYgKCFjYW5kaWRhdGVzKSB7
Ci0gICAgICAgICAgICB0aGlzLnJlZi5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJ2Rpc3BsYXkn
KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIEZvcmNlIHNl
bGVjdGlvbiBpbiBib3VuZHMKLSAgICAgICAgaWYgKGluZGV4IDwgMCkKLSAgICAgICAgICAgIGlu
ZGV4ID0gMDsKLSAgICAgICAgaWYgKGluZGV4ID49IGNhbmRpZGF0ZXMpCi0gICAgICAgICAgICBp
bmRleCA9IGNhbmRpZGF0ZXMgLSAxOwotICAgICAgICB0aGlzLnNlbGVjdGVkID0gaW5kZXg7Ci0K
LSAgICAgICAgLy8gRGlzcGxheSBuZXh0L3ByZXZpb3VzIGJ1dHRvbnMKLSAgICAgICAgaWYgKGlu
ZGV4KQotICAgICAgICAgICAgdGhpcy5wcmV2aW91cy5lbGVtZW50LnN0eWxlLmRpc3BsYXkgPSBu
dWxsOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0aGlzLnByZXZpb3VzLmVsZW1lbnQuc3R5
bGUuZGlzcGxheSA9ICdub25lJzsKLSAgICAgICAgaWYgKGluZGV4ID09PSBjYW5kaWRhdGVzIC0g
MSkKLSAgICAgICAgICAgIHRoaXMubmV4dC5lbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7
Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRoaXMubmV4dC5lbGVtZW50LnN0eWxlLmRpc3Bs
YXkgPSBudWxsOwotCi0gICAgICAgIGlmICh0aGlzLmFncmVnYXRlICYmIHRoaXMuZGF0YS5sZW5n
dGggPiAxICYmICF0aGlzLnNlbGVjdGVkKQotICAgICAgICAgICAgdGhpcy5jb250ZW50LnNldFN0
YXRlKGNvbnRlbnRGb3JBZ3JlZ2F0ZURhdGEodGhpcy5zdWl0ZSwgdGhpcy5hZ3JlZ2F0ZSwgdGhp
cy5kYXRhLCB0aGlzLndpbGxGaWx0ZXJFeHBlY3RlZCkpOwotICAgICAgICBlbHNlCi0gICAgICAg
ICAgICB0aGlzLmNvbnRlbnQuc2V0U3RhdGUoY29udGVudEZvckRhdGEoCi0gICAgICAgICAgICAg
ICAgdGhpcy5zdWl0ZSwKLSAgICAgICAgICAgICAgICB0aGlzLmRhdGFbdGhpcy5hZ3JlZ2F0ZSAm
JiB0aGlzLmRhdGEubGVuZ3RoID4gMSA/IHRoaXMuc2VsZWN0ZWQgLSAxIDogdGhpcy5zZWxlY3Rl
ZF0sCi0gICAgICAgICAgICAgICAgdGhpcy53aWxsRmlsdGVyRXhwZWN0ZWQsCi0gICAgICAgICAg
ICApKTsKLSAgICB9Ci19Ci0KLWNvbnN0IEludmVzdGlnYXRlRHJhd2VyID0gbmV3IF9JbnZlc3Rp
Z2F0ZURyYXdlcigpOwotCi1leHBvcnQge0ludmVzdGlnYXRlRHJhd2VyfTsKSW5kZXg6IFRvb2xz
L3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvc3RhdGljL2pzL3NlYXJjaC5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS92aWV3L3N0YXRpYy9qcy9zZWFy
Y2guanMJKHJldmlzaW9uIDI2NTUzMSkKKysrIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5
L3ZpZXcvc3RhdGljL2pzL3NlYXJjaC5qcwkobm9uZXhpc3RlbnQpCkBAIC0xLDI2MiArMCwwIEBA
Ci0vLyBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
Ly8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0vLyBhcmUgbWV0OgotLy8gMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LS8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLS8vIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0vLyAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiCi0vLyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLS8vIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLS8vIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotLy8gQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotLy8gQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLS8vIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotLy8gSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLS8vIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0vLyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0vLyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0KLWltcG9ydCB7RE9NLCBSRUZ9IGZyb20gJy9saWJyYXJ5L2pzL1JlZi5qcyc7Ci1pbXBvcnQg
e1F1ZXJ5TW9kaWZpZXIsIHBhcmFtc1RvUXVlcnl9IGZyb20gJy9hc3NldHMvanMvY29tbW9uLmpz
JzsKLQotY29uc3QgTElNSVQgPSAxMDsKLQotZnVuY3Rpb24gU2VhcmNoQmFyKGNhbGxiYWNrLCBz
dWl0ZXMpIHsKLSAgICBsZXQgbW91c2VDb3VudCA9IDA7Ci0gICAgbGV0IGNsb3NlU2VhcmNoID0g
KCkgPT4ge307Ci0gICAgbGV0IGluRmxpZ2h0ID0gMDsKLQotICAgIGNvbnN0IGNhbmRpZGF0ZXNS
ZWYgPSBSRUYuY3JlYXRlUmVmKHsKLSAgICAgICAgc3RhdGU6IHtjYW5kaWRhdGVzOiB7fSwgc2Vs
ZWN0ZWQ6IG51bGwsIGRpc3BsYXllZDogZmFsc2V9LAotICAgICAgICBvblN0YXRlVXBkYXRlOiAo
ZWxlbWVudCwgc3RhdGVEaWZmLCBzdGF0ZSkgPT4gewotICAgICAgICAgICAgY29uc3Qgc2VsZWN0
ZWQgPSBzdGF0ZURpZmYuc2VsZWN0ZWQgPyBzdGF0ZURpZmYuc2VsZWN0ZWQgOiBzdGF0ZSA/IHN0
YXRlLnNlbGVjdGVkIDogbnVsbDsKLSAgICAgICAgICAgIGNvbnN0IGNhbmRpZGF0ZXMgPSBzdGF0
ZURpZmYuY2FuZGlkYXRlcyA/IHN0YXRlRGlmZi5jYW5kaWRhdGVzIDogc3RhdGUgPyBzdGF0ZS5j
YW5kaWRhdGVzIDogW107Ci0gICAgICAgICAgICBpZiAoc3RhdGVEaWZmLmNhbmRpZGF0ZXMpIHsK
LSAgICAgICAgICAgICAgICBsZXQgY291bnQgPSAwOwotICAgICAgICAgICAgICAgIERPTS5pbmpl
Y3QoZWxlbWVudCwgT2JqZWN0LmtleXMoY2FuZGlkYXRlcykubWFwKGtleSA9PiB7Ci0gICAgICAg
ICAgICAgICAgICAgIHJldHVybiBjYW5kaWRhdGVzW2tleV0ubWFwKHRlc3QgPT4gewotICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgY2FuZGlkYXRlUmVmID0gUkVGLmNyZWF0ZVJlZih7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgb25FbGVtZW50TW91bnQ6IGVsZW1lbnQgPT4gewot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50Lm9ubW91c2VvdmVyID0gKCkg
PT4gewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyttb3VzZUNvdW50Owot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FuZGlkYXRlc1JlZi5zZXRTdGF0
ZSh7c2VsZWN0ZWQ6IHtzdWl0ZToga2V5LCB0ZXN0OiB0ZXN0fX0pOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVt
ZW50Lm9ubW91c2VvdXQgPSAoKSA9PiB7bW91c2VDb3VudCA9IG1vdXNlQ291bnQgPiAwID8gbW91
c2VDb3VudCAtIDEgOiAwfTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVu
dC5vbmNsaWNrID0gKCkgPT4gewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y2FsbGJhY2soe3N1aXRlOiBrZXksIHRlc3Q6IHRlc3R9KTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
ICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICsrY291bnQ7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gYDxsaSByZWY9IiR7Y2FuZGlkYXRlUmVmfSIgc3R5bGU9ImN1
cnNvcjogcG9pbnRlcjsiPiR7dGVzdH0gKCR7a2V5fSk8L2xpPmA7Ci0gICAgICAgICAgICAgICAg
ICAgIH0pLmpvaW4oJycpOwotICAgICAgICAgICAgICAgIH0pLmpvaW4oJycpICsgYDxkaXYgY2xh
c3M9InNwaW5uZXIgdGlueSIgJHtpbkZsaWdodCA+IDAgPyAnJyA6ICdzdHlsZT0iZGlzcGxheTog
bm9uZTsiJ30+PC9kaXY+YCk7Ci0KLSAgICAgICAgICAgICAgICBpZiAoY291bnQpCi0gICAgICAg
ICAgICAgICAgICAgIGVsZW1lbnQuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7Ci0gICAgICAgICAg
ICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuc3R5bGUuZGlzcGxheSA9
ICdub25lJzsKLSAgICAgICAgICAgICAgICAgICAgbW91c2VDb3VudCA9IDA7Ci0gICAgICAgICAg
ICAgICAgICAgIHN0YXRlRGlmZi5zZWxlY3RlZCA9IG51bGw7Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgbGV0IGluZGV4ID0gMDsKLSAgICAgICAgICAgIE9i
amVjdC5rZXlzKGNhbmRpZGF0ZXMpLmZvckVhY2goa2V5ID0+IHsKLSAgICAgICAgICAgICAgICBj
YW5kaWRhdGVzW2tleV0uZm9yRWFjaCh0ZXN0ID0+IHsKLSAgICAgICAgICAgICAgICAgICAgaWYg
KHNlbGVjdGVkICYmIGtleSA9PT0gc2VsZWN0ZWQuc3VpdGUgJiYgdGVzdCA9PT0gc2VsZWN0ZWQu
dGVzdCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuY2hpbGRyZW5baW5kZXhdLmNs
YXNzTGlzdC5hZGQoJ3NlbGVjdGVkJyk7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuY2hpbGRyZW5baW5kZXhdLmNsYXNzTGlzdC5yZW1v
dmUoJ3NlbGVjdGVkJyk7Ci0gICAgICAgICAgICAgICAgICAgICsraW5kZXg7Ci0gICAgICAgICAg
ICAgICAgfSk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIGVsZW1lbnQuY2hpbGRyZW5b
aW5kZXhdLnN0eWxlLmRpc3BsYXkgPSBpbkZsaWdodCA+IDAgPyAnYmxvY2snIDogJ25vbmUnOwot
ICAgICAgICB9Ci0gICAgfSk7Ci0KLSAgICBsZXQgY2FuZGlkYXRlcyA9IHt9OwotICAgIGxldCBj
dXJyZW50RGlzcGF0Y2ggPSBEYXRlLm5vdygpOwotCi0gICAgY29uc3QgbmV4dFNlbGVjdGVkID0g
KG1vdmVVcCA9IGZhbHNlKSA9PiB7Ci0gICAgICAgIGNvbnN0IGZvckluZGV4SW4gPSBtb3ZlVXAg
PyAobGlzdCwgY2FsbGJhY2spID0+IHsKLSAgICAgICAgICAgIGZvciAobGV0IGluZGV4ID0gbGlz
dC5sZW5ndGggLSAxOyBpbmRleCA+PSAwOyAtLWluZGV4KSB7Ci0gICAgICAgICAgICAgICAgaWYg
KCFjYWxsYmFjayhpbmRleCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9IDogKGxpc3Qs
IGNhbGxiYWNrKSA9PiB7Ci0gICAgICAgICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwg
bGlzdC5sZW5ndGg7ICsraW5kZXgpIHsKLSAgICAgICAgICAgICAgICBpZiAoIWNhbGxiYWNrKGlu
ZGV4KSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgbGV0IGRpZEZpbmQg
PSBmYWxzZTsKLSAgICAgICAgbGV0IGJvdW5kcnkgPSBudWxsOwotCi0gICAgICAgIGNvbnN0IHN1
aXRlcyA9IE9iamVjdC5rZXlzKGNhbmRpZGF0ZXMpOwotICAgICAgICBmb3JJbmRleEluKHN1aXRl
cywgc3VpdGVJbmRleCA9PiB7Ci0gICAgICAgICAgICBjb25zdCB0ZXN0cyA9IGNhbmRpZGF0ZXNb
c3VpdGVzW3N1aXRlSW5kZXhdXTsKLSAgICAgICAgICAgIHJldHVybiBmb3JJbmRleEluKHRlc3Rz
LCB0ZXN0SW5kZXggPT4gewotICAgICAgICAgICAgICAgIGlmICghYm91bmRyeSkKLSAgICAgICAg
ICAgICAgICAgICAgYm91bmRyeSA9IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN1aXRlOiBz
dWl0ZXNbc3VpdGVJbmRleF0sCi0gICAgICAgICAgICAgICAgICAgICAgICB0ZXN0OiB0ZXN0c1t0
ZXN0SW5kZXhdLAotICAgICAgICAgICAgICAgICAgICB9OwotICAgICAgICAgICAgICAgIGlmICgh
Y2FuZGlkYXRlc1JlZi5zdGF0ZS5zZWxlY3RlZCkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICAgICAgICAgIGlmIChkaWRGaW5kKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGNhbmRpZGF0ZXNSZWYuc2V0U3RhdGUoewotICAgICAgICAgICAgICAgICAgICAgICAgc2Vs
ZWN0ZWQ6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWl0ZTogc3VpdGVzW3N1aXRl
SW5kZXhdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Q6IHRlc3RzW3Rlc3RJbmRl
eF0sCi0gICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICB9KTsK
LSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICBpZiAoY2FuZGlkYXRlc1JlZi5zdGF0ZS5zZWxlY3RlZC5zdWl0ZSA9PSBz
dWl0ZXNbc3VpdGVJbmRleF0gJiYgY2FuZGlkYXRlc1JlZi5zdGF0ZS5zZWxlY3RlZC50ZXN0ID09
IHRlc3RzW3Rlc3RJbmRleF0pCi0gICAgICAgICAgICAgICAgICAgIGRpZEZpbmQgPSB0cnVlOwot
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0p
OwotICAgICAgICBpZiAoIWRpZEZpbmQpCi0gICAgICAgICAgICBjYW5kaWRhdGVzUmVmLnNldFN0
YXRlKHtzZWxlY3RlZDogYm91bmRyeX0pOwotICAgIH07Ci0KLSAgICBjb25zdCBpbnB1dFJlZiA9
IFJFRi5jcmVhdGVSZWYoewotICAgICAgICBvbkVsZW1lbnRNb3VudDogZWxlbWVudCA9PiB7Ci0g
ICAgICAgICAgICBjbG9zZVNlYXJjaCA9ICgpID0+IHsKLSAgICAgICAgICAgICAgICBjdXJyZW50
RGlzcGF0Y2ggPSBEYXRlLm5vdygpOwotICAgICAgICAgICAgICAgIGVsZW1lbnQudmFsdWUgPSAn
JzsKLSAgICAgICAgICAgICAgICBjYW5kaWRhdGVzID0ge307Ci0gICAgICAgICAgICAgICAgY2Fu
ZGlkYXRlc1JlZi5zZXRTdGF0ZSh7Y2FuZGlkYXRlczoge30sIHNlbGVjdGVkOiBudWxsfSk7Ci0g
ICAgICAgICAgICAgICAgbW91c2VDb3VudCA9IDA7Ci0gICAgICAgICAgICAgICAgZWxlbWVudC5i
bHVyKCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0
ZW5lcignZm9jdXMnLCAoKSA9PiB7Y2FuZGlkYXRlc1JlZi5zZXRTdGF0ZSh7Y2FuZGlkYXRlczog
Y2FuZGlkYXRlc30pO30pOwotICAgICAgICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdi
bHVyJywgKCkgPT4gewotICAgICAgICAgICAgICAgIGlmICghbW91c2VDb3VudCkKLSAgICAgICAg
ICAgICAgICAgICAgY2FuZGlkYXRlc1JlZi5zZXRTdGF0ZSh7Y2FuZGlkYXRlczoge319KTsKLSAg
ICAgICAgICAgIH0pOwotICAgICAgICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXl1
cCcsIGV2ZW50ID0+IHsKLSAgICAgICAgICAgICAgICBpZiAoZXZlbnQua2V5Q29kZSA9PSAweDI4
IC8qIERPTV9WS19ET1dOICovIHx8IGV2ZW50LmtleUNvZGUgPT0gMHgyNiAvKiBET01fVktfVVAg
Ki8pCi0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgICAgIGNvbnN0
IGlucHV0VmFsdWUgPSBlbGVtZW50LnZhbHVlLnRyaW1TdGFydCgpLnRyaW1FbmQoKTsKLSAgICAg
ICAgICAgICAgICBpZiAoIWlucHV0VmFsdWUpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgICAgICAgICBsZXQgbXlEaXNwYXRjaCA9IERhdGUubm93KCk7Ci0gICAgICAgICAg
ICAgICAgY2FuZGlkYXRlcyA9IHt9OwotICAgICAgICAgICAgICAgIHN1aXRlcy5mb3JFYWNoKHN1
aXRlID0+IHsKLSAgICAgICAgICAgICAgICAgICAgaW5GbGlnaHQgKz0gMTsKLSAgICAgICAgICAg
ICAgICAgICAgZmV0Y2goYGFwaS8ke3N1aXRlfS90ZXN0cz9saW1pdD0ke0xJTUlUfSZ0ZXN0PSR7
aW5wdXRWYWx1ZX1gKS50aGVuKHJlc3BvbnNlID0+IHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGluRmxpZ2h0IC09IDE7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAobXlEaXNwYXRjaCA8
IGN1cnJlbnREaXNwYXRjaCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbmRpZGF0
ZXNSZWYuc2V0U3RhdGUoe30pOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJl
bnREaXNwYXRjaCA9IE1hdGgubWF4KGN1cnJlbnREaXNwYXRjaCwgbXlEaXNwYXRjaCk7Ci0KLSAg
ICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLmpzb24oKS50aGVuKGpzb24gPT4gewotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNhbmRpZGF0ZXNbc3VpdGVdID0ganNvbjsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoanNvbi5sZW5ndGgpCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNhbmRpZGF0ZXNSZWYuc2V0U3RhdGUoe2NhbmRpZGF0ZXM6IGNhbmRp
ZGF0ZXN9KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNhbmRpZGF0ZXNSZWYuc2V0U3RhdGUoe30pOwotICAgICAgICAg
ICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgICAgIH0pLmNhdGNoKGVycm9yID0+
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBsb2FkIGZhaWxzLCBsb2cgdGhl
IGVycm9yIGFuZCBjb250aW51ZQotICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJv
cihKU09OLnN0cmluZ2lmeShlcnJvciwgbnVsbCwgNCkpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgY2FuZGlkYXRlc1JlZi5zZXRTdGF0ZSh7fSk7Ci0gICAgICAgICAgICAgICAgICAgIH0pOwot
ICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICBlbGVtZW50
LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBldmVudCA9PiB7Ci0gICAgICAgICAgICAgICAg
aWYgKGV2ZW50LmtleUNvZGUgPT0gMHgyOCAvKiBET01fVktfRE9XTiAqLykgewotICAgICAgICAg
ICAgICAgICAgICBuZXh0U2VsZWN0ZWQoZmFsc2UpOwotCi0gICAgICAgICAgICAgICAgfSBlbHNl
IGlmIChldmVudC5rZXlDb2RlID09IDB4MjYgLyogRE9NX1ZLX1VQICovKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIG5leHRTZWxlY3RlZCh0cnVlKTsKLQotICAgICAgICAgICAgICAgIH0gZWxzZSBp
ZiAoZXZlbnQua2V5Q29kZSA9PSAweDBEIC8qIFZLX1JFVFVSTiAqLykgewotICAgICAgICAgICAg
ICAgICAgICBpZiAoY2FuZGlkYXRlc1JlZi5zdGF0ZS5zZWxlY3RlZCkKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGNhbGxiYWNrKGNhbmRpZGF0ZXNSZWYuc3RhdGUuc2VsZWN0ZWQpOwotICAgICAg
ICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxldCBwYWlycyA9
IFtdOwotICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXMoY2FuZGlkYXRlcykuZm9y
RWFjaChzdWl0ZSA9PiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FuZGlkYXRlc1tz
dWl0ZV0uZm9yRWFjaCh0ZXN0ID0+IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cGFpcnMucHVzaCh7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWl0ZTog
c3VpdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0OiB0ZXN0LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKCFwYWlycy5sZW5ndGgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soLi4ucGFpcnMpOwotICAg
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKCk7Ci0g
ICAgICAgICAgICAgICAgfSBlbHNlIGlmIChldmVudC5rZXlDb2RlID09IDB4MUIgLyogRE9NX1ZL
X0VTQ0FQRSAqLykKLSAgICAgICAgICAgICAgICAgICAgY2FuZGlkYXRlc1JlZi5zZXRTdGF0ZSh7
Y2FuZGlkYXRlczoge319KTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgZWxlbWVudC5v
bnBhc3RlID0gKGV2ZW50KSA9PiB7Ci0gICAgICAgICAgICAgICAgbGV0IGlnbm9yaW5nID0gZmFs
c2U7Ci0gICAgICAgICAgICAgICAgbGV0IHRlc3RzID0gbmV3IFNldCgpOwotICAgICAgICAgICAg
ICAgIGV2ZW50LmNsaXBib2FyZERhdGEuZ2V0RGF0YSgndGV4dCcpLnNwbGl0KC9ccysvZykuZm9y
RWFjaChzdHIgPT4gewotICAgICAgICAgICAgICAgICAgICBpZiAoc3RyID09PSAnWycpCi0gICAg
ICAgICAgICAgICAgICAgICAgICBpZ25vcmluZyA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAg
IGlmIChpZ25vcmluZykgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0ciA9PT0gJ10n
KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yaW5nID0gZmFsc2U7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICAgICAgaWYgKHN0cikKLSAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RzLmFkZChz
dHIpOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIHRlc3RzID0gWy4uLnRl
c3RzXTsKLSAgICAgICAgICAgICAgICBpZiAodGVzdHMubGVuZ3RoIDw9IDEpCi0gICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgICAgIGxldCBwYWlycyA9IFtdOwotICAg
ICAgICAgICAgICAgIGxldCBvdXRzdGFuZGluZyA9IHN1aXRlcy5sZW5ndGg7Ci0gICAgICAgICAg
ICAgICAgY29uc3QgcXVlcnkgPSBwYXJhbXNUb1F1ZXJ5KHt0ZXN0OiB0ZXN0c30pOwotICAgICAg
ICAgICAgICAgIHN1aXRlcy5mb3JFYWNoKHN1aXRlID0+IHsKLSAgICAgICAgICAgICAgICAgICAg
ZmV0Y2goYGFwaS8ke3N1aXRlfS90ZXN0cz8ke3F1ZXJ5fWApLnRoZW4ocmVzcG9uc2UgPT4gewot
ICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UuanNvbigpLnRoZW4oanNvbiA9PiB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAganNvbi5mb3JFYWNoKHRlc3QgPT4gewotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwYWlycy5wdXNoKHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN1aXRlOiBzdWl0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRlc3Q6IHRlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0pOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG91dHN0YW5kaW5nIC09IDE7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKG91dHN0YW5kaW5nIDw9IDApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y2FsbGJhY2soLi4ucGFpcnMpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9z
ZVNlYXJjaCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgICAgICB9KS5jYXRjaChlcnJvciA9PiB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgbG9hZCBmYWlscywgbG9nIHRoZSBlcnJv
ciBhbmQgY29udGludWUKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoSlNP
Ti5zdHJpbmdpZnkoZXJyb3IsIG51bGwsIDQpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNh
bmRpZGF0ZXNSZWYuc2V0U3RhdGUoe30pOwotICAgICAgICAgICAgICAgICAgICB9KTsKLSAgICAg
ICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0pOwotCi0gICAg
cmV0dXJuIGA8ZGl2IGNsYXNzPSJpbnB1dCI+Ci0gICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4
dCIgcmVmPSIke2lucHV0UmVmfSIgYXV0b2NvbXBsZXRlPSJvZmYiIGF1dG9jYXBpdGFsaXplPSJu
b25lIiByZXF1aXJlZC8+Ci0gICAgICAgICAgICA8bGFiZWw+U2VhcmNoIHRlc3Q8L2xhYmVsPgot
ICAgICAgICA8L2Rpdj4KLSAgICAgICAgPHVsIGNsYXNzPSJzZWFyY2gtY2FuZGlkYXRlcyIgcmVm
PSIke2NhbmRpZGF0ZXNSZWZ9IiBzdHlsZT0iZGlzcGxheTogbm9uZTsiPjwvdWw+YDsKLX0KLQot
ZXhwb3J0IHtTZWFyY2hCYXJ9OwpJbmRleDogVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkv
dmlldy9zdGF0aWMvanMvdGltZWxpbmUuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvcmVzdWx0c2Ri
cHkvcmVzdWx0c2RicHkvdmlldy9zdGF0aWMvanMvdGltZWxpbmUuanMJKHJldmlzaW9uIDI2NTUz
MSkKKysrIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvc3RhdGljL2pzL3RpbWVs
aW5lLmpzCShub25leGlzdGVudCkKQEAgLTEsOTM1ICswLDAgQEAKLS8vIENvcHlyaWdodCAoQykg
MjAxOSwgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLS8vIGFyZSBtZXQ6Ci0vLyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
Ly8gMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLS8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLS8vICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0vLwot
Ly8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIKLS8vIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotLy8gVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotLy8gUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0vLyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0vLyBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotLy8gU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0vLyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotLy8gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLS8vIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLS8vIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotaW1wb3J0IHtB
cmNoaXZlUm91dGVyfSBmcm9tICcvYXNzZXRzL2pzL2FyY2hpdmVSb3V0ZXIuanMnOwotaW1wb3J0
IHtDb21taXRCYW5rfSBmcm9tICcvYXNzZXRzL2pzL2NvbW1pdC5qcyc7Ci1pbXBvcnQge0NvbmZp
Z3VyYXRpb259IGZyb20gJy9hc3NldHMvanMvY29uZmlndXJhdGlvbi5qcyc7Ci1pbXBvcnQge2Rl
ZXBDb21wYXJlLCBFcnJvckRpc3BsYXksIGVzY2FwZUhUTUwsIHBhcmFtc1RvUXVlcnksIHF1ZXJ5
VG9QYXJhbXN9IGZyb20gJy9hc3NldHMvanMvY29tbW9uLmpzJzsKLWltcG9ydCB7RXhwZWN0YXRp
b25zfSBmcm9tICcvYXNzZXRzL2pzL2V4cGVjdGF0aW9ucy5qcyc7Ci1pbXBvcnQge0ludmVzdGln
YXRlRHJhd2VyfSBmcm9tICcvYXNzZXRzL2pzL2ludmVzdGlnYXRlLmpzJzsKLWltcG9ydCB7VG9v
bFRpcH0gZnJvbSAnL2Fzc2V0cy9qcy90b29sdGlwLmpzJzsKLWltcG9ydCB7VGltZWxpbmV9IGZy
b20gJy9saWJyYXJ5L2pzL2NvbXBvbmVudHMvVGltZWxpbmVDb21wb25lbnRzLmpzJzsKLWltcG9y
dCB7RE9NLCBFdmVudFN0cmVhbSwgUkVGLCBGUH0gZnJvbSAnL2xpYnJhcnkvanMvUmVmLmpzJzsK
LQotCi1jb25zdCBERUZBVUxUX0xJTUlUID0gMTAwOwotCi1sZXQgd2lsbEZpbHRlckV4cGVjdGVk
ID0gZmFsc2U7Ci1sZXQgc2hvd1Rlc3RUaW1lcyA9IGZhbHNlOwotCi1mdW5jdGlvbiBtaW5pbXVt
VXVpZEZvclJlc3VsdHMocmVzdWx0cywgbGltaXQpIHsKLSAgICBjb25zdCBub3cgPSBNYXRoLmZs
b29yKERhdGUubm93KCkgLyAxMCk7Ci0gICAgbGV0IG1pbkRpc3BsYXllZFV1aWQgPSBub3c7Ci0g
ICAgbGV0IG1heExpbWl0ZWRVdWlkID0gMDsKLQotICAgIE9iamVjdC5rZXlzKHJlc3VsdHMpLmZv
ckVhY2goKGtleSkgPT4gewotICAgICAgICByZXN1bHRzW2tleV0uZm9yRWFjaChwYWlyID0+IHsK
LSAgICAgICAgICAgIGlmICghcGFpci5yZXN1bHRzLmxlbmd0aCkKLSAgICAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgICAgICBpZiAobGltaXQgIT09IDEgJiYgbGltaXQgPT09IHBhaXIucmVz
dWx0cy5sZW5ndGgpCi0gICAgICAgICAgICAgICAgbWF4TGltaXRlZFV1aWQgPSBNYXRoLm1heChw
YWlyLnJlc3VsdHNbMF0udXVpZCwgbWF4TGltaXRlZFV1aWQpOwotICAgICAgICAgICAgZWxzZSBp
ZiAobGltaXQgPT09IDEpCi0gICAgICAgICAgICAgICAgbWluRGlzcGxheWVkVXVpZCA9IE1hdGgu
bWluKHBhaXIucmVzdWx0c1twYWlyLnJlc3VsdHMubGVuZ3RoIC0gMV0udXVpZCwgbWluRGlzcGxh
eWVkVXVpZCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgbWluRGlzcGxheWVk
VXVpZCA9IE1hdGgubWluKHBhaXIucmVzdWx0c1swXS51dWlkLCBtaW5EaXNwbGF5ZWRVdWlkKTsK
LSAgICAgICAgfSk7Ci0gICAgfSk7Ci0KLSAgICBpZiAobWluRGlzcGxheWVkVXVpZCA9PT0gbm93
KQotICAgICAgICByZXR1cm4gbWF4TGltaXRlZFV1aWQ7Ci0gICAgcmV0dXJuIE1hdGgubWF4KG1p
bkRpc3BsYXllZFV1aWQsIG1heExpbWl0ZWRVdWlkKTsKLX0KLQotZnVuY3Rpb24gY29tbWl0c0Zv
clJlc3VsdHMocmVzdWx0cywgbGltaXQsIGFsbENvbW1pdHMgPSB0cnVlKSB7Ci0gICAgY29uc3Qg
bWluRGlzcGxheWVkVXVpZCA9IG1pbmltdW1VdWlkRm9yUmVzdWx0cyhsaW1pdCk7Ci0gICAgbGV0
IGNvbW1pdHMgPSBbXTsKLSAgICBsZXQgcmVwb3NpdG9yaWVzID0gbmV3IFNldCgpOwotICAgIGxl
dCBjdXJyZW50Q29tbWl0SW5kZXggPSBDb21taXRCYW5rLmNvbW1pdHMubGVuZ3RoIC0gMTsKLSAg
ICBPYmplY3Qua2V5cyhyZXN1bHRzKS5mb3JFYWNoKChrZXkpID0+IHsKLSAgICAgICAgcmVzdWx0
c1trZXldLmZvckVhY2gocGFpciA9PiB7Ci0gICAgICAgICAgICBwYWlyLnJlc3VsdHMuZm9yRWFj
aChyZXN1bHQgPT4gewotICAgICAgICAgICAgICAgIGlmIChyZXN1bHQudXVpZCA8IG1pbkRpc3Bs
YXllZFV1aWQpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICBs
ZXQgY2FuZGlkYXRlQ29tbWl0cyA9IFtdOwotCi0gICAgICAgICAgICAgICAgaWYgKCFhbGxDb21t
aXRzKQotICAgICAgICAgICAgICAgICAgICBjdXJyZW50Q29tbWl0SW5kZXggPSBDb21taXRCYW5r
LmNvbW1pdHMubGVuZ3RoIC0gMTsKLSAgICAgICAgICAgICAgICB3aGlsZSAoY3VycmVudENvbW1p
dEluZGV4ID49IDApIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKENvbW1pdEJhbmsuY29tbWl0
c1tjdXJyZW50Q29tbWl0SW5kZXhdLnV1aWQgPCByZXN1bHQudXVpZCkKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBpZiAoYWxsQ29tbWl0cyB8fCBD
b21taXRCYW5rLmNvbW1pdHNbY3VycmVudENvbW1pdEluZGV4XS51dWlkID09PSByZXN1bHQudXVp
ZCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhbmRpZGF0ZUNvbW1pdHMucHVzaChDb21taXRC
YW5rLmNvbW1pdHNbY3VycmVudENvbW1pdEluZGV4XSk7Ci0gICAgICAgICAgICAgICAgICAgIC0t
Y3VycmVudENvbW1pdEluZGV4OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBp
ZiAoY2FuZGlkYXRlQ29tbWl0cy5sZW5ndGggPT09IDAgfHwgY2FuZGlkYXRlQ29tbWl0c1tjYW5k
aWRhdGVDb21taXRzLmxlbmd0aCAtIDFdLnV1aWQgIT09IHJlc3VsdC51dWlkKQotICAgICAgICAg
ICAgICAgICAgICBjYW5kaWRhdGVDb21taXRzLnB1c2goewotICAgICAgICAgICAgICAgICAgICAg
ICAgaWQ6ICc/JywKLSAgICAgICAgICAgICAgICAgICAgICAgIHV1aWQ6IHJlc3VsdC51dWlkLAot
ICAgICAgICAgICAgICAgICAgICB9KTsKLQotICAgICAgICAgICAgICAgIGxldCBpbmRleCA9IDA7
Ci0gICAgICAgICAgICAgICAgY2FuZGlkYXRlQ29tbWl0cy5mb3JFYWNoKGNvbW1pdCA9PiB7Ci0g
ICAgICAgICAgICAgICAgICAgIGlmIChjb21taXQucmVwb3NpdG9yeV9pZCkKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHJlcG9zaXRvcmllcy5hZGQoY29tbWl0LnJlcG9zaXRvcnlfaWQpOwotICAg
ICAgICAgICAgICAgICAgICB3aGlsZSAoaW5kZXggPCBjb21taXRzLmxlbmd0aCkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKGNvbW1pdC51dWlkID09PSBjb21taXRzW2luZGV4XS51dWlk
KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChjb21taXQudXVpZCA+IGNvbW1pdHNbaW5kZXhdLnV1aWQpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb21taXRzLnNwbGljZShpbmRleCwgMCwgY29tbWl0KTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICArK2luZGV4OwotICAgICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgICAgIGNvbW1pdHMucHVzaChjb21taXQpOwotICAgICAgICAg
ICAgICAgIH0pOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0pOwotICAgIH0pOwotICAgIGlm
IChjdXJyZW50Q29tbWl0SW5kZXggPj0gMCAmJiBjb21taXRzLmxlbmd0aCkgewotICAgICAgICBs
ZXQgdHJhaWxpbmdSZXBvc2l0b3JpZXMgPSBuZXcgU2V0KHJlcG9zaXRvcmllcyk7Ci0gICAgICAg
IHRyYWlsaW5nUmVwb3NpdG9yaWVzLmRlbGV0ZShjb21taXRzW2NvbW1pdHMubGVuZ3RoIC0gMV0u
cmVwb3NpdG9yeV9pZCk7Ci0gICAgICAgIHdoaWxlIChjdXJyZW50Q29tbWl0SW5kZXggPj0gMCAm
JiB0cmFpbGluZ1JlcG9zaXRvcmllcy5zaXplKSB7Ci0gICAgICAgICAgICBjb25zdCBjb21taXQg
PSBDb21taXRCYW5rLmNvbW1pdHNbY3VycmVudENvbW1pdEluZGV4XTsKLSAgICAgICAgICAgIGlm
ICh0cmFpbGluZ1JlcG9zaXRvcmllcy5oYXMoY29tbWl0LnJlcG9zaXRvcnlfaWQpKSB7Ci0gICAg
ICAgICAgICAgICAgY29tbWl0cy5wdXNoKGNvbW1pdCk7Ci0gICAgICAgICAgICAgICAgdHJhaWxp
bmdSZXBvc2l0b3JpZXMuZGVsZXRlKGNvbW1pdC5yZXBvc2l0b3J5X2lkKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIC0tY3VycmVudENvbW1pdEluZGV4OwotICAgICAgICB9Ci0gICAgfQot
Ci0gICAgcmVwb3NpdG9yaWVzID0gWy4uLnJlcG9zaXRvcmllc107Ci0gICAgcmVwb3NpdG9yaWVz
LnNvcnQoKTsKLSAgICByZXR1cm4gY29tbWl0czsKLX0KLQotZnVuY3Rpb24gc2NhbGVGb3JDb21t
aXRzKGNvbW1pdHMpIHsKLSAgICBsZXQgc2NhbGUgPSBbXTsKLSAgICBmb3IgKGxldCBpID0gY29t
bWl0cy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkgewotICAgICAgICBjb25zdCByZXBvc2l0b3J5
X2lkID0gY29tbWl0c1tpXS5yZXBvc2l0b3J5X2lkID8gY29tbWl0c1tpXS5yZXBvc2l0b3J5X2lk
IDogJz8nOwotICAgICAgICBzY2FsZS51bnNoaWZ0KHt9KTsKLSAgICAgICAgc2NhbGVbMF1bcmVw
b3NpdG9yeV9pZF0gPSBjb21taXRzW2ldOwotICAgICAgICBpZiAoc2NhbGUubGVuZ3RoIDwgMikK
LSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBPYmplY3Qua2V5cyhzY2FsZVsxXSkuZm9y
RWFjaCgoa2V5KSA9PiB7Ci0gICAgICAgICAgICBpZiAoa2V5ID09PSByZXBvc2l0b3J5X2lkIHx8
IGtleSA9PT0gJz8nIHx8IGtleSA9PT0gJ3V1aWQnKQotICAgICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgICAgIHNjYWxlWzBdW2tleV0gPSBzY2FsZVsxXVtrZXldOwotICAgICAgICB9KTsK
LSAgICAgICAgc2NhbGVbMF0udXVpZCA9IE1hdGgubWF4KC4uLk9iamVjdC5rZXlzKHNjYWxlWzBd
KS5tYXAoKGtleSkgPT4gewotICAgICAgICAgICAgcmV0dXJuIHNjYWxlWzBdW2tleV0udXVpZDsK
LSAgICAgICAgfSkpOwotICAgIH0KLSAgICByZXR1cm4gc2NhbGU7Ci19Ci0KLWZ1bmN0aW9uIHJl
cG9zaXRvcmllc0ZvckNvbW1pdHMoY29tbWl0cykgewotICAgIGxldCByZXBvc2l0b3JpZXMgPSBu
ZXcgU2V0KCk7Ci0gICAgY29tbWl0cy5mb3JFYWNoKChjb21taXQpID0+IHsKLSAgICAgICAgaWYg
KGNvbW1pdC5yZXBvc2l0b3J5X2lkKQotICAgICAgICAgICAgcmVwb3NpdG9yaWVzLmFkZChjb21t
aXQucmVwb3NpdG9yeV9pZCk7Ci0gICAgfSk7Ci0gICAgcmVwb3NpdG9yaWVzID0gWy4uLnJlcG9z
aXRvcmllc107Ci0gICAgaWYgKCFyZXBvc2l0b3JpZXMubGVuZ3RoKQotICAgICAgICByZXBvc2l0
b3JpZXMgPSBbJz8nXTsKLSAgICByZXBvc2l0b3JpZXMuc29ydCgpOwotICAgIHJldHVybiByZXBv
c2l0b3JpZXM7Ci19Ci0KLWZ1bmN0aW9uIHhBeGlzRnJvbVNjYWxlKHNjYWxlLCByZXBvc2l0b3J5
LCB1cGRhdGVzQXJyYXksIGlzVG9wPWZhbHNlLCB2aWV3cG9ydD1udWxsKQotewotICAgIGZ1bmN0
aW9uIHNjYWxlRm9yUmVwb3NpdG9yeShzY2FsZSkgewotICAgICAgICByZXR1cm4gc2NhbGUubWFw
KG5vZGUgPT4gewotICAgICAgICAgICAgbGV0IGNvbW1pdCA9IG5vZGVbcmVwb3NpdG9yeV07Ci0g
ICAgICAgICAgICBpZiAoIWNvbW1pdCkKLSAgICAgICAgICAgICAgICBjb21taXQgPSBub2RlWyc/
J107Ci0gICAgICAgICAgICBpZiAoIWNvbW1pdCkKLSAgICAgICAgICAgICAgICByZXR1cm4ge2lk
OiAnJywgdXVpZDogbnVsbH07Ci0gICAgICAgICAgICByZXR1cm4gY29tbWl0OwotICAgICAgICB9
KTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBvblNjYWxlQ2xpY2sobm9kZSkgewotICAgICAgICBp
ZiAoIW5vZGUubGFiZWwuaWQpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGxldCBwYXJh
bXMgPSB7Ci0gICAgICAgICAgICBicmFuY2g6IG5vZGUubGFiZWwuYnJhbmNoID8gW25vZGUubGFi
ZWwuYnJhbmNoXSA6IHF1ZXJ5VG9QYXJhbXMoZG9jdW1lbnQuVVJMLnNwbGl0KCc/JylbMV0pLmJy
YW5jaCwKLSAgICAgICAgICAgIHV1aWQ6IFtub2RlLmxhYmVsLnV1aWRdLAotICAgICAgICB9Ci0g
ICAgICAgIGlmICghcGFyYW1zLmJyYW5jaCkKLSAgICAgICAgICAgIGRlbGV0ZSBwYXJhbXMuYnJh
bmNoOwotICAgICAgICBjb25zdCBxdWVyeSA9IHBhcmFtc1RvUXVlcnkocGFyYW1zKTsKLSAgICAg
ICAgd2luZG93Lm9wZW4oYC9jb21taXQ/JHtxdWVyeX1gLCAnX2JsYW5rJyk7Ci0gICAgfQotCi0g
ICAgcmV0dXJuIFRpbWVsaW5lLkNhbnZhc1hBeGlzQ29tcG9uZW50KHNjYWxlRm9yUmVwb3NpdG9y
eShzY2FsZSksIHsKLSAgICAgICAgaXNUb3A6IGlzVG9wLAotICAgICAgICBoZWlnaHQ6IDEzMCwK
LSAgICAgICAgb25TY2FsZUNsaWNrOiBvblNjYWxlQ2xpY2ssCi0gICAgICAgIG9uU2NhbGVFbnRl
cjogKG5vZGUsIGV2ZW50LCBjYW52YXMpID0+IHsKLSAgICAgICAgICAgIGNvbnN0IHNjcm9sbERl
bHRhID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcCB8fCBkb2N1bWVudC5ib2R5
LnNjcm9sbFRvcDsKLSAgICAgICAgICAgIFRvb2xUaXAuc2V0KAotICAgICAgICAgICAgICAgIGA8
ZGl2IGNsYXNzPSJjb250ZW50Ij4KLSAgICAgICAgICAgICAgICAgICAgVGltZTogJHtuZXcgRGF0
ZShub2RlLmxhYmVsLnRpbWVzdGFtcCAqIDEwMDApLnRvTG9jYWxlU3RyaW5nKCl9PGJyPgotICAg
ICAgICAgICAgICAgICAgICBDb21taXR0ZXI6ICR7bm9kZS5sYWJlbC5jb21taXR0ZXJ9Ci0gICAg
ICAgICAgICAgICAgICAgICR7bm9kZS5sYWJlbC5tZXNzYWdlID8gYDxicj48ZGl2PiR7ZXNjYXBl
SFRNTChub2RlLmxhYmVsLm1lc3NhZ2Uuc3BsaXQoJ1xuJylbMF0pfTwvZGl2PmAgOiAnJ30KLSAg
ICAgICAgICAgICAgICA8L2Rpdj5gLAotICAgICAgICAgICAgICAgIG5vZGUudGlwUG9pbnRzLm1h
cCgocG9pbnQpID0+IHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHt4OiBjYW52YXMueCAr
IHBvaW50LngsIHk6IGNhbnZhcy55ICsgc2Nyb2xsRGVsdGEgKyBwb2ludC55fTsKLSAgICAgICAg
ICAgICAgICB9KSwKLSAgICAgICAgICAgICAgICAoZXZlbnQpID0+IHtyZXR1cm4gb25TY2FsZUNs
aWNrKG5vZGUpO30sCi0gICAgICAgICAgICAgICAgdmlld3BvcnQsCi0gICAgICAgICAgICApOwot
ICAgICAgICB9LAotICAgICAgICBvblNjYWxlTGVhdmU6IChldmVudCwgY2FudmFzKSA9PiB7Ci0g
ICAgICAgICAgICBjb25zdCBzY3JvbGxEZWx0YSA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5z
Y3JvbGxUb3AgfHwgZG9jdW1lbnQuYm9keS5zY3JvbGxUb3A7Ci0gICAgICAgICAgICBpZiAoIVRv
b2xUaXAuaXNJbih7eDogZXZlbnQueCwgeTogZXZlbnQueSAtIHNjcm9sbERlbHRhfSkpCi0gICAg
ICAgICAgICAgICAgVG9vbFRpcC51bnNldCgpOwotICAgICAgICB9LAotICAgICAgICAvLyBQZXIg
dGhlIGJpcnRoZGF5IHBhcmFkb3gsIDEwJSBjaGFuZ2Ugb2YgY29sbGlzaW9uIHdpdGggNy43IG1p
bGxpb24gY29tbWl0cyB3aXRoIDEyIGNoYXJhY3RlciBjb21taXRzCi0gICAgICAgIGdldExhYmVs
RnVuYzogKGNvbW1pdCkgPT4ge3JldHVybiBjb21taXQgPyBjb21taXQuaWQuc3Vic3RyaW5nKDAs
MTIpIDogJz8nO30sCi0gICAgICAgIGdldFNjYWxlRnVuYzogKGNvbW1pdCkgPT4gY29tbWl0LnV1
aWQsCi0gICAgICAgIGV4cG9ydGVyOiAodXBkYXRlRnVuY3Rpb24pID0+IHsKLSAgICAgICAgICAg
IHVwZGF0ZXNBcnJheS5wdXNoKChzY2FsZSkgPT4ge3VwZGF0ZUZ1bmN0aW9uKHNjYWxlRm9yUmVw
b3NpdG9yeShzY2FsZSkpO30pOwotICAgICAgICB9LAotICAgIH0pOwotfQotCi1jb25zdCB0ZXN0
c1JlZ2V4ID0gL3Rlc3RzXyhbYS16XSkrLzsKLWNvbnN0IHdvcnN0UmVnZXggPSAvd29yc3RfKFth
LXpdKSsvOwotCi1mdW5jdGlvbiBpblBsYWNlQ29tYmluZShvdXQsIG9iaikKLXsKLSAgICBpZiAo
IW9iaikKLSAgICAgICAgcmV0dXJuIG91dDsKLQotICAgIGlmICghb3V0KSB7Ci0gICAgICAgIG91
dCA9IHt9OwotICAgICAgICBPYmplY3Qua2V5cyhvYmopLmZvckVhY2goa2V5ID0+IHsKLSAgICAg
ICAgICAgIGlmIChrZXlbMF0gPT09ICdfJykKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgICAgICBpZiAob2JqW2tleV0gaW5zdGFuY2VvZiBPYmplY3QpCi0gICAgICAgICAgICAgICAg
b3V0W2tleV0gPSBpblBsYWNlQ29tYmluZShvdXRba2V5XSwgb2JqW2tleV0pOwotICAgICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgICAgIG91dFtrZXldID0gb2JqW2tleV07Ci0gICAgICAgIH0p
OwotICAgIH0gZWxzZSB7Ci0gICAgICAgIE9iamVjdC5rZXlzKG91dCkuZm9yRWFjaChrZXkgPT4g
ewotICAgICAgICAgICAgaWYgKGtleVswXSA9PT0gJ18nKQotICAgICAgICAgICAgICAgIHJldHVy
bjsKLQotICAgICAgICAgICAgaWYgKG91dFtrZXldIGluc3RhbmNlb2YgT2JqZWN0KSB7Ci0gICAg
ICAgICAgICAgICAgb3V0W2tleV0gPSBpblBsYWNlQ29tYmluZShvdXRba2V5XSwgb2JqW2tleV0p
OwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
Ly8gU2V0IG9mIHNwZWNpYWwgY2FzZSBrZXlzIHdoaWNoIG5lZWQgdG8gYmUgYWRkZWQgdG9nZXRo
ZXIKLSAgICAgICAgICAgIGlmIChrZXkubWF0Y2god29yc3RSZWdleCkpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAgICAgaWYgKGtleS5tYXRjaCh0ZXN0c1JlZ2V4KSkgewotICAg
ICAgICAgICAgICAgIGNvbnN0IHdvcnN0S2V5ID0gYHdvcnN0XyR7a2V5fWA7Ci0gICAgICAgICAg
ICAgICAgb3V0W3dvcnN0S2V5XSA9IE1hdGgubWF4KAotICAgICAgICAgICAgICAgICAgICBvdXRb
d29yc3RLZXldID8gb3V0W3dvcnN0S2V5XSA6IG91dFtrZXldLAotICAgICAgICAgICAgICAgICAg
ICBvYmpbd29yc3RLZXldID8gb2JqW3dvcnN0S2V5XSA6IG9ialtrZXldLAotICAgICAgICAgICAg
ICAgICk7Ci0gICAgICAgICAgICAgICAgb3V0W2tleV0gKz0gb2JqW2tleV07Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBTb21lIHNwZWNp
YWwgY29tYmluYXRpb24gbG9naWMKLSAgICAgICAgICAgIGlmIChrZXkgPT09ICd0aW1lJykgewot
ICAgICAgICAgICAgICAgIG91dFtrZXldID0gTWF0aC5tYXgoCi0gICAgICAgICAgICAgICAgICAg
IG91dFtrZXldID8gb3V0W2tleV0gOiAwLAotICAgICAgICAgICAgICAgICAgICBvYmpba2V5XSA/
IG9ialtrZXldIDogMCwKLSAgICAgICAgICAgICAgICApOwotICAgICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gSWYgdGhlIGtleSBleGlzdHMsIGJ1
dCBkb2Vzbid0IG1hdGNoLCBkZWxldGUgaXQKLSAgICAgICAgICAgIGlmICghKGtleSBpbiBvYmop
IHx8IG91dFtrZXldICE9PSBvYmpba2V5XSkgewotICAgICAgICAgICAgICAgIGRlbGV0ZSBvdXRb
a2V5XTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0p
OwotICAgICAgICBPYmplY3Qua2V5cyhvYmopLmZvckVhY2goa2V5ID0+IHsKLSAgICAgICAgICAg
IGlmICgha2V5Lm1hdGNoKHRlc3RzUmVnZXgpKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgICAgIGNvbnN0IHdvcnN0S2V5ID0gYHdvcnN0XyR7a2V5fWA7Ci0gICAgICAgICAgICBp
ZiAoIShrZXkgaW4gb3V0KSkgewotICAgICAgICAgICAgICAgIG91dFtrZXldID0gb2JqW2tleV07
Ci0gICAgICAgICAgICAgICAgb3V0W3dvcnN0S2V5XSA9IG9ialtrZXldOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgb3V0W3dvcnN0S2V5XSA9IE1hdGgubWF4KG91dFt3b3JzdEtleV0sIG9i
alt3b3JzdEtleV0gPyBvYmpbd29yc3RLZXldIDogb2JqW2tleV0pOwotICAgICAgICB9KTsKLSAg
ICB9Ci0gICAgcmV0dXJuIG91dDsKLX0KLQotZnVuY3Rpb24gc3RhdHNGb3JTaW5nbGVSZXN1bHQo
cmVzdWx0KSB7Ci0gICAgY29uc3QgYWN0dWFsSWQgPSBFeHBlY3RhdGlvbnMuc3RyaW5nVG9TdGF0
ZUlkKHJlc3VsdC5hY3R1YWwpOwotICAgIGNvbnN0IHVuZXhwZWN0ZWRJZCA9IEV4cGVjdGF0aW9u
cy5zdHJpbmdUb1N0YXRlSWQoRXhwZWN0YXRpb25zLnVuZXhwZWN0ZWRSZXN1bHRzKHJlc3VsdC5h
Y3R1YWwsIHJlc3VsdC5leHBlY3RlZCkpOwotICAgIGxldCBzdGF0cyA9IHsKLSAgICAgICAgdGVz
dHNfcnVuOiAxLAotICAgICAgICB0ZXN0c19za2lwcGVkOiAwLAotICAgIH0KLSAgICBFeHBlY3Rh
dGlvbnMuZmFpbHVyZVR5cGVzLmZvckVhY2godHlwZSA9PiB7Ci0gICAgICAgIGNvbnN0IGlkRm9y
VHlwZSA9IEV4cGVjdGF0aW9ucy5zdHJpbmdUb1N0YXRlSWQoRXhwZWN0YXRpb25zLmZhaWx1cmVU
eXBlTWFwW3R5cGVdKTsKLSAgICAgICAgc3RhdHNbYHRlc3RzXyR7dHlwZX1gXSA9IGFjdHVhbElk
ID4gaWRGb3JUeXBlICA/IDAgOiAxOwotICAgICAgICBzdGF0c1tgdGVzdHNfdW5leHBlY3RlZF8k
e3R5cGV9YF0gPSB1bmV4cGVjdGVkSWQgPiBpZEZvclR5cGUgID8gMCA6IDE7Ci0gICAgfSk7Ci0g
ICAgcmV0dXJuIHN0YXRzOwotfQotCi1mdW5jdGlvbiBjb21iaW5lUmVzdWx0cygpIHsKLSAgICBs
ZXQgY291bnRzID0gbmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGgpLmZpbGwoMCk7Ci0gICAgbGV0
IGRhdGEgPSBbXTsKLQotICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgIC8vIEZpbmQgY2FuZGlk
YXRlIHV1aWQKLSAgICAgICAgbGV0IHV1aWQgPSAwOwotICAgICAgICBmb3IgKGxldCBpID0gMDsg
aSA8IGNvdW50cy5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgbGV0IGNhbmRpZGF0ZVV1aWQg
PSBudWxsOwotICAgICAgICAgICAgd2hpbGUgKGFyZ3VtZW50c1tpXSAmJiBhcmd1bWVudHNbaV0u
bGVuZ3RoID4gY291bnRzW2ldKSB7Ci0gICAgICAgICAgICAgICAgY2FuZGlkYXRlVXVpZCA9IGFy
Z3VtZW50c1tpXVtjb3VudHNbaV1dLnV1aWQ7Ci0gICAgICAgICAgICAgICAgaWYgKGNhbmRpZGF0
ZVV1aWQpCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICsrY291
bnRzW2ldOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZVV1aWQpCi0g
ICAgICAgICAgICAgICAgdXVpZCA9IE1hdGgubWF4KHV1aWQsIGNhbmRpZGF0ZVV1aWQpOwotICAg
ICAgICB9Ci0KLSAgICAgICAgaWYgKCF1dWlkKQotICAgICAgICAgICAgcmV0dXJuIGRhdGE7Ci0K
LSAgICAgICAgLy8gQ29tYmluZSByZWxldmFudCByZXN1bHRzCi0gICAgICAgIGxldCBkYXRhTm9k
ZSA9IG51bGw7Ci0gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY291bnRzLmxlbmd0aDsgKytp
KSB7Ci0gICAgICAgICAgICB3aGlsZSAoY291bnRzW2ldIDwgYXJndW1lbnRzW2ldLmxlbmd0aCAm
JiBhcmd1bWVudHNbaV1bY291bnRzW2ldXSAmJiBhcmd1bWVudHNbaV1bY291bnRzW2ldXS51dWlk
ID09PSB1dWlkKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGRhdGFOb2RlICYmICFkYXRhTm9kZS5z
dGF0cykKLSAgICAgICAgICAgICAgICAgICAgZGF0YU5vZGUuc3RhdHMgPSBzdGF0c0ZvclNpbmds
ZVJlc3VsdChkYXRhTm9kZSk7Ci0KLSAgICAgICAgICAgICAgICBkYXRhTm9kZSA9IGluUGxhY2VD
b21iaW5lKGRhdGFOb2RlLCBhcmd1bWVudHNbaV1bY291bnRzW2ldXSk7Ci0KLSAgICAgICAgICAg
ICAgICBpZiAoZGF0YU5vZGUuc3RhdHMgJiYgIWFyZ3VtZW50c1tpXVtjb3VudHNbaV1dLnN0YXRz
KQotICAgICAgICAgICAgICAgICAgICBkYXRhTm9kZS5zdGF0cyA9IGluUGxhY2VDb21iaW5lKGRh
dGFOb2RlLnN0YXRzLCBzdGF0c0ZvclNpbmdsZVJlc3VsdChhcmd1bWVudHNbaV1bY291bnRzW2ld
XSkpOwotCi0gICAgICAgICAgICAgICAgKytjb3VudHNbaV07Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0KLSAgICAgICAgaWYgKGRhdGFOb2RlKQotICAgICAgICAgICAgZGF0YS5wdXNoKGRhdGFO
b2RlKTsKLSAgICB9Ci0gICAgcmV0dXJuIGRhdGE7Ci19Ci0KLWNsYXNzIFRpbWVsaW5lRnJvbUVu
ZHBvaW50IHsKLSAgICBjb25zdHJ1Y3RvcihlbmRwb2ludCwgc3VpdGUgPSBudWxsLCB0ZXN0ID0g
bnVsbCwgdmlld3BvcnQgPSBudWxsKSB7Ci0gICAgICAgIHRoaXMuZW5kcG9pbnQgPSBlbmRwb2lu
dDsKLSAgICAgICAgdGhpcy5kaXNwbGF5QWxsQ29tbWl0cyA9IHRydWU7Ci0KLSAgICAgICAgdGhp
cy5jb25maWd1cmF0aW9ucyA9IENvbmZpZ3VyYXRpb24uZnJvbVF1ZXJ5KCk7Ci0gICAgICAgIHRo
aXMucmVzdWx0cyA9IHt9OwotCi0gICAgICAgIC8vIFN1aXRlIGFuZCB0ZXN0IGNhbiBvZnRlbiBi
ZSBpbXBsaWVkIGJ5IHRoZSBlbmRwb2ludCwgYnV0IGRvaW5nIHNvIGlzIG1vcmUgY29uZnVzaW5n
IHRoZW4gaGVscGZ1bAotICAgICAgICB0aGlzLnN1aXRlID0gc3VpdGU7Ci0gICAgICAgIHRoaXMu
dGVzdCA9IHRlc3Q7Ci0KLSAgICAgICAgdGhpcy51cGRhdGVzID0gW107Ci0gICAgICAgIHRoaXMu
eGF4aXNVcGRhdGVzID0gW107Ci0gICAgICAgIHRoaXMudGltZWxpbmVVcGRhdGUgPSBudWxsOwot
ICAgICAgICB0aGlzLm5vdGlmeVJlcmVuZGVyID0gKCkgPT4ge307Ci0gICAgICAgIHRoaXMucmVw
b3NpdG9yaWVzID0gW107Ci0gICAgICAgIHRoaXMudmlld3BvcnQgPSB2aWV3cG9ydDsKLQotICAg
ICAgICBjb25zdCBzZWxmID0gdGhpczsKLQotICAgICAgICB0aGlzLmxhdGVzdERpc3BhdGNoID0g
RGF0ZS5ub3coKTsKLSAgICAgICAgdGhpcy5yZWYgPSBSRUYuY3JlYXRlUmVmKHsKLSAgICAgICAg
ICAgIHN0YXRlOiB7fSwKLSAgICAgICAgICAgIG9uU3RhdGVVcGRhdGU6IChlbGVtZW50LCBzdGF0
ZSkgPT4gewotICAgICAgICAgICAgICAgIGlmIChzdGF0ZS5lcnJvcikKLSAgICAgICAgICAgICAg
ICAgICAgZWxlbWVudC5pbm5lckhUTUwgPSBFcnJvckRpc3BsYXkoc3RhdGUpOwotICAgICAgICAg
ICAgICAgIGVsc2UgaWYgKHN0YXRlID4gMCkKLSAgICAgICAgICAgICAgICAgICAgRE9NLmluamVj
dChlbGVtZW50LCB0aGlzLnJlbmRlcihzdGF0ZSkpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICAgICAgZWxlbWVudC5pbm5lckhUTUwgPSB0aGlzLnBsYWNlaG9sZGVyKCk7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0pOwotCi0gICAgICAgIHRoaXMuY29tbWl0X2NhbGxi
YWNrID0gKCkgPT4gewotICAgICAgICAgICAgc2VsZi51cGRhdGUoKTsKLSAgICAgICAgfTsKLSAg
ICAgICAgQ29tbWl0QmFuay5jYWxsYmFja3MucHVzaCh0aGlzLmNvbW1pdF9jYWxsYmFjayk7Ci0K
LSAgICAgICAgdGhpcy5yZWxvYWQoKTsKLSAgICB9Ci0gICAgdGVhcmRvd24oKSB7Ci0gICAgICAg
IENvbW1pdEJhbmsuY2FsbGJhY2tzID0gQ29tbWl0QmFuay5jYWxsYmFja3MuZmlsdGVyKCh2YWx1
ZSwgaW5kZXgsIGFycikgPT4gewotICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29tbWl0X2NhbGxi
YWNrID09PSB2YWx1ZTsKLSAgICAgICAgfSk7Ci0gICAgfQotICAgIHVwZGF0ZSgpIHsKLSAgICAg
ICAgY29uc3QgcGFyYW1zID0gcXVlcnlUb1BhcmFtcyhkb2N1bWVudC5VUkwuc3BsaXQoJz8nKVsx
XSk7Ci0gICAgICAgIGNvbnN0IGNvbW1pdHMgPSBjb21taXRzRm9yUmVzdWx0cyh0aGlzLnJlc3Vs
dHMsIHBhcmFtcy5saW1pdCA/IHBhcnNlSW50KHBhcmFtcy5saW1pdFtwYXJhbXMubGltaXQubGVu
Z3RoIC0gMV0pIDogREVGQVVMVF9MSU1JVCwgdGhpcy5hbGxDb21taXRzKTsKLSAgICAgICAgY29u
c3Qgc2NhbGUgPSBzY2FsZUZvckNvbW1pdHMoY29tbWl0cyk7Ci0KLSAgICAgICAgY29uc3QgbmV3
UmVwb3NpdG9yaWVzID0gcmVwb3NpdG9yaWVzRm9yQ29tbWl0cyhjb21taXRzKTsKLSAgICAgICAg
bGV0IGhhdmVOZXdSZXBvcyA9IHRoaXMucmVwb3NpdG9yaWVzLmxlbmd0aCAhPT0gbmV3UmVwb3Np
dG9yaWVzLmxlbmd0aDsKLSAgICAgICAgZm9yIChsZXQgaSA9IDA7ICFoYXZlTmV3UmVwb3MgJiYg
aSA8IHRoaXMucmVwb3NpdG9yaWVzLmxlbmd0aCAmJiBpIDwgbmV3UmVwb3NpdG9yaWVzLmxlbmd0
aDsgKytpKQotICAgICAgICAgICAgaGF2ZU5ld1JlcG9zID0gdGhpcy5yZXBvc2l0b3JpZXNbaV0g
IT09IG5ld1JlcG9zaXRvcmllc1tpXTsKLSAgICAgICAgaWYgKGhhdmVOZXdSZXBvcyAmJiB0aGlz
LnRpbWVsaW5lVXBkYXRlKSB7Ci0gICAgICAgICAgICB0aGlzLnhheGlzVXBkYXRlcyA9IFtdOwot
ICAgICAgICAgICAgbGV0IHRvcCA9IHRydWU7Ci0gICAgICAgICAgICBsZXQgY29tcG9uZW50cyA9
IFtdOwotCi0gICAgICAgICAgICBuZXdSZXBvc2l0b3JpZXMuZm9yRWFjaChyZXBvc2l0b3J5ID0+
IHsKLSAgICAgICAgICAgICAgICBjb21wb25lbnRzLnB1c2goeEF4aXNGcm9tU2NhbGUoc2NhbGUs
IHJlcG9zaXRvcnksIHRoaXMueGF4aXNVcGRhdGVzLCB0b3AsIHRoaXMudmlld3BvcnQpKTsKLSAg
ICAgICAgICAgICAgICB0b3AgPSBmYWxzZTsKLSAgICAgICAgICAgIH0pOwotCi0gICAgICAgICAg
ICB0aGlzLnRpbWVsaW5lVXBkYXRlKGNvbXBvbmVudHMpOwotICAgICAgICAgICAgdGhpcy5yZXBv
c2l0b3JpZXMgPSBuZXdSZXBvc2l0b3JpZXM7Ci0gICAgICAgIH0KLQotICAgICAgICB0aGlzLnVw
ZGF0ZXMuZm9yRWFjaChmdW5jID0+IHtmdW5jKHNjYWxlKTt9KQotICAgICAgICB0aGlzLnhheGlz
VXBkYXRlcy5mb3JFYWNoKGZ1bmMgPT4ge2Z1bmMoc2NhbGUpO30pOwotICAgIH0KLSAgICByZXJl
bmRlcigpIHsKLSAgICAgICAgY29uc3QgcGFyYW1zID0gcXVlcnlUb1BhcmFtcyhkb2N1bWVudC5V
Ukwuc3BsaXQoJz8nKVsxXSk7Ci0gICAgICAgIHRoaXMucmVmLnNldFN0YXRlKHBhcmFtcy5saW1p
dCA/IHBhcnNlSW50KHBhcmFtcy5saW1pdFtwYXJhbXMubGltaXQubGVuZ3RoIC0gMV0pIDogREVG
QVVMVF9MSU1JVCk7Ci0gICAgfQotICAgIHJlbG9hZCgpIHsKLSAgICAgICAgbGV0IG15RGlzcGF0
Y2ggPSBEYXRlLm5vdygpOwotICAgICAgICB0aGlzLmxhdGVzdERpc3BhdGNoID0gTWF0aC5tYXgo
dGhpcy5sYXRlc3REaXNwYXRjaCwgbXlEaXNwYXRjaCk7Ci0gICAgICAgIHRoaXMucmVmLnNldFN0
YXRlKC0xKTsKLQotICAgICAgICBjb25zdCBzZWxmID0gdGhpczsKLSAgICAgICAgbGV0IHNoYXJl
ZFBhcmFtcyA9IHF1ZXJ5VG9QYXJhbXMoZG9jdW1lbnQuVVJMLnNwbGl0KCc/JylbMV0pOwotICAg
ICAgICBDb25maWd1cmF0aW9uLm1lbWJlcnMoKS5mb3JFYWNoKG1lbWJlciA9PiB7Ci0gICAgICAg
ICAgICBkZWxldGUgc2hhcmVkUGFyYW1zW21lbWJlcl07Ci0gICAgICAgIH0pOwotICAgICAgICBk
ZWxldGUgc2hhcmVkUGFyYW1zLnN1aXRlOwotICAgICAgICBkZWxldGUgc2hhcmVkUGFyYW1zLnRl
c3Q7Ci0gICAgICAgIGRlbGV0ZSBzaGFyZWRQYXJhbXMucmVwb3NpdG9yeV9pZDsKLQotICAgICAg
ICBsZXQgbmV3Q29uZmlncyA9IENvbmZpZ3VyYXRpb24uZnJvbVF1ZXJ5KCk7Ci0gICAgICAgIGlm
ICghZGVlcENvbXBhcmUobmV3Q29uZmlncywgdGhpcy5jb25maWd1cmF0aW9ucykpIHsKLSAgICAg
ICAgICAgIHRoaXMuY29uZmlndXJhdGlvbnMgPSBuZXdDb25maWdzOwotICAgICAgICAgICAgdGhp
cy5yZXN1bHRzID0ge307Ci0gICAgICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb25zLmZvckVhY2go
Y29uZmlndXJhdGlvbiA9PiB7Ci0gICAgICAgICAgICAgICAgdGhpcy5yZXN1bHRzW2NvbmZpZ3Vy
YXRpb24udG9LZXkoKV0gPSBbXTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9Ci0KLSAgICAg
ICAgdGhpcy5jb25maWd1cmF0aW9ucy5mb3JFYWNoKGNvbmZpZ3VyYXRpb24gPT4gewotICAgICAg
ICAgICAgbGV0IHBhcmFtcyA9IGNvbmZpZ3VyYXRpb24udG9QYXJhbXMoKTsKLSAgICAgICAgICAg
IGZvciAobGV0IGtleSBpbiBzaGFyZWRQYXJhbXMpCi0gICAgICAgICAgICAgICAgcGFyYW1zW2tl
eV0gPSBzaGFyZWRQYXJhbXNba2V5XTsKLSAgICAgICAgICAgIGNvbnN0IHF1ZXJ5ID0gcGFyYW1z
VG9RdWVyeShwYXJhbXMpOwotCi0gICAgICAgICAgICBmZXRjaChxdWVyeSA/IHRoaXMuZW5kcG9p
bnQgKyAnPycgKyBxdWVyeSA6IHRoaXMuZW5kcG9pbnQpLnRoZW4ocmVzcG9uc2UgPT4gewotICAg
ICAgICAgICAgICAgIHJlc3BvbnNlLmpzb24oKS50aGVuKGpzb24gPT4gewotICAgICAgICAgICAg
ICAgICAgICBpZiAobXlEaXNwYXRjaCAhPT0gdGhpcy5sYXRlc3REaXNwYXRjaCkKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgICAgICAgICBsZXQgb2xkZXN0
VXVpZCA9IERhdGUubm93KCkgLyAxMDsKLSAgICAgICAgICAgICAgICAgICAgbGV0IG5ld2VzdFV1
aWQgPSAwOwotICAgICAgICAgICAgICAgICAgICBzZWxmLnJlc3VsdHNbY29uZmlndXJhdGlvbi50
b0tleSgpXSA9IGpzb247Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYucmVzdWx0c1tjb25maWd1
cmF0aW9uLnRvS2V5KCldLnNvcnQoKGEsIGIpID0+IHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGFDb25maWcgPSBuZXcgQ29uZmlndXJhdGlvbihhLmNvbmZpZ3VyYXRpb24pOwotICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgYkNvbmZpZyA9IG5ldyBDb25maWd1cmF0aW9uKGIu
Y29uZmlndXJhdGlvbik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsZXQgY29uZmlnQ29tcGFy
ZSA9IGFDb25maWcuY29tcGFyZShiQ29uZmlnKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChjb25maWdDb21wYXJlID09PSAwKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZp
Z0NvbXBhcmUgPSBhQ29uZmlnLmNvbXBhcmVTREtzKGJDb25maWcpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGNvbmZpZ0NvbXBhcmU7Ci0gICAgICAgICAgICAgICAgICAgIH0pOwot
ICAgICAgICAgICAgICAgICAgICBzZWxmLnJlc3VsdHNbY29uZmlndXJhdGlvbi50b0tleSgpXS5m
b3JFYWNoKGtleVZhbHVlID0+IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGtleVZhbHVlLnJl
c3VsdHMuZm9yRWFjaChyZXN1bHQgPT4gewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9s
ZGVzdFV1aWQgPSBNYXRoLm1pbihvbGRlc3RVdWlkLCByZXN1bHQudXVpZCk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbmV3ZXN0VXVpZCA9IE1hdGgubWF4KG5ld2VzdFV1aWQsIHJlc3Vs
dC51dWlkKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgICAg
ICB9KTsKLQotICAgICAgICAgICAgICAgICAgICBpZiAob2xkZXN0VXVpZCA8IG5ld2VzdFV1aWQp
Ci0gICAgICAgICAgICAgICAgICAgICAgICBDb21taXRCYW5rLmFkZChvbGRlc3RVdWlkLCBuZXdl
c3RVdWlkKTsKLQotICAgICAgICAgICAgICAgICAgICBzZWxmLnJlZi5zZXRTdGF0ZShwYXJhbXMu
bGltaXQgPyBwYXJzZUludChwYXJhbXMubGltaXRbcGFyYW1zLmxpbWl0Lmxlbmd0aCAtIDFdKSA6
IERFRkFVTFRfTElNSVQpOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgfSkuY2F0
Y2goZXJyb3IgPT4gewotICAgICAgICAgICAgICAgIGlmIChteURpc3BhdGNoID09PSB0aGlzLmxh
dGVzdERpc3BhdGNoKQotICAgICAgICAgICAgICAgICAgICB0aGlzLnJlZi5zZXRTdGF0ZSh7ZXJy
b3I6ICJDb25uZWN0aW9uIEVycm9yIiwgZGVzY3JpcHRpb246IGVycm9yfSk7Ci0gICAgICAgICAg
ICB9KTsKLSAgICAgICAgfSk7Ci0gICAgfQotICAgIHBsYWNlaG9sZGVyKCkgewotICAgICAgICBy
ZXR1cm4gYDxkaXYgY2xhc3M9ImxvYWRlciI+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0i
c3Bpbm5lciI+PC9kaXY+Ci0gICAgICAgICAgICA8L2Rpdj5gOwotICAgIH0KLSAgICB0b1N0cmlu
ZygpIHsKLSAgICAgICAgdGhpcy5yZWYgPSBSRUYuY3JlYXRlUmVmKHsKLSAgICAgICAgICAgIHN0
YXRlOiB0aGlzLnJlZi5zdGF0ZSwKLSAgICAgICAgICAgIG9uU3RhdGVVcGRhdGU6IChlbGVtZW50
LCBzdGF0ZSkgPT4gewotICAgICAgICAgICAgICAgIGlmIChzdGF0ZS5lcnJvcikKLSAgICAgICAg
ICAgICAgICAgICAgRE9NLmluamVjdChlbGVtZW50LCBFcnJvckRpc3BsYXkoc3RhdGUpKTsKLSAg
ICAgICAgICAgICAgICBlbHNlIGlmIChzdGF0ZSA+IDApCi0gICAgICAgICAgICAgICAgICAgIERP
TS5pbmplY3QoZWxlbWVudCwgdGhpcy5yZW5kZXIoc3RhdGUpKTsKLSAgICAgICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICAgICAgICAgIERPTS5pbmplY3QoZWxlbWVudCwgdGhpcy5wbGFjZWhv
bGRlcigpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSk7Ci0KLSAgICAgICAgcmV0dXJuIGA8
ZGl2IGNsYXNzPSJjb250ZW50IiByZWY9IiR7dGhpcy5yZWZ9Ij48L2Rpdj5gOwotICAgIH0KLQot
ICAgIHJlbmRlcihsaW1pdCkgewotICAgICAgICBjb25zdCBicmFuY2ggPSBxdWVyeVRvUGFyYW1z
KGRvY3VtZW50LlVSTC5zcGxpdCgnPycpWzFdKS5icmFuY2g7Ci0gICAgICAgIGNvbnN0IHNlbGYg
PSB0aGlzOwotICAgICAgICBjb25zdCBjb21taXRzID0gY29tbWl0c0ZvclJlc3VsdHModGhpcy5y
ZXN1bHRzLCBsaW1pdCwgdGhpcy5hbGxDb21taXRzKTsKLSAgICAgICAgY29uc3Qgc2NhbGUgPSBz
Y2FsZUZvckNvbW1pdHMoY29tbWl0cyk7Ci0KLSAgICAgICAgY29uc3QgY29sb3JNYXAgPSBFeHBl
Y3RhdGlvbnMuY29sb3JNYXAoKTsKLSAgICAgICAgdGhpcy51cGRhdGVzID0gW107Ci0gICAgICAg
IGNvbnN0IG9wdGlvbnMgPSB7Ci0gICAgICAgICAgICBnZXRTY2FsZUZ1bmM6ICh2YWx1ZSkgPT4g
ewotICAgICAgICAgICAgICAgIGlmICh2YWx1ZSAmJiB2YWx1ZS51dWlkKQotICAgICAgICAgICAg
ICAgICAgICByZXR1cm4ge3V1aWQ6IHZhbHVlLnV1aWR9OwotICAgICAgICAgICAgICAgIHJldHVy
biB7fTsKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBjb21wYXJlRnVuYzogKGEsIGIpID0+
IHtyZXR1cm4gYi51dWlkIC0gYS51dWlkO30sCi0gICAgICAgICAgICByZW5kZXJGYWN0b3J5OiAo
ZHJhd0RvdCkgPT4gKGRhdGEsIGNvbnRleHQsIHgsIHkpID0+IHsKLSAgICAgICAgICAgICAgICBp
ZiAoIWRhdGEpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBkcmF3RG90KGNvbnRleHQsIHgs
IHksIHRydWUpOwotCi0gICAgICAgICAgICAgICAgbGV0IHRhZyA9IG51bGw7Ci0gICAgICAgICAg
ICAgICAgbGV0IGNvbG9yID0gY29sb3JNYXAuc3VjY2VzczsKLSAgICAgICAgICAgICAgICBsZXQg
c3ltYm9sID0gRXhwZWN0YXRpb25zLnN5bWJvbE1hcC5zdWNjZXNzOwotICAgICAgICAgICAgICAg
IGlmIChkYXRhLnN0YXRzKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLnN0YXJ0X3Rp
bWUpCi0gICAgICAgICAgICAgICAgICAgICAgICB0YWcgPSBkYXRhLnN0YXRzW2B0ZXN0cyR7d2ls
bEZpbHRlckV4cGVjdGVkID8gJ191bmV4cGVjdGVkXycgOiAnXyd9ZmFpbGVkYF07Ci0gICAgICAg
ICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIHRhZyA9IGRhdGEuc3Rh
dHNbYHdvcnN0X3Rlc3RzJHt3aWxsRmlsdGVyRXhwZWN0ZWQgPyAnX3VuZXhwZWN0ZWRfJyA6ICdf
J31mYWlsZWRgXTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEuc3RhdHMud29yc3RfdGVz
dHNfcnVuIDw9IDEpCi0gICAgICAgICAgICAgICAgICAgICAgICB0YWcgPSBudWxsOwotCi0gICAg
ICAgICAgICAgICAgICAgIEV4cGVjdGF0aW9ucy5mYWlsdXJlVHlwZXMuZm9yRWFjaCh0eXBlID0+
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLnN0YXRzW2B0ZXN0cyR7d2lsbEZp
bHRlckV4cGVjdGVkID8gJ191bmV4cGVjdGVkXycgOiAnXyd9JHt0eXBlfWBdID4gMCkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yID0gY29sb3JNYXBbdHlwZV07Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3ltYm9sID0gRXhwZWN0YXRpb25zLnN5bWJvbE1hcFt0eXBl
XTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfSk7Ci0g
ICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgbGV0IHJlc3VsdElk
ID0gRXhwZWN0YXRpb25zLnN0cmluZ1RvU3RhdGVJZChkYXRhLmFjdHVhbCk7Ci0gICAgICAgICAg
ICAgICAgICAgIGlmICh3aWxsRmlsdGVyRXhwZWN0ZWQpCi0gICAgICAgICAgICAgICAgICAgICAg
ICByZXN1bHRJZCA9IEV4cGVjdGF0aW9ucy5zdHJpbmdUb1N0YXRlSWQoRXhwZWN0YXRpb25zLnVu
ZXhwZWN0ZWRSZXN1bHRzKGRhdGEuYWN0dWFsLCBkYXRhLmV4cGVjdGVkKSk7Ci0gICAgICAgICAg
ICAgICAgICAgIEV4cGVjdGF0aW9ucy5mYWlsdXJlVHlwZXMuZm9yRWFjaCh0eXBlID0+IHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChFeHBlY3RhdGlvbnMuc3RyaW5nVG9TdGF0ZUlkKEV4
cGVjdGF0aW9ucy5mYWlsdXJlVHlwZU1hcFt0eXBlXSkgPj0gcmVzdWx0SWQpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb2xvciA9IGNvbG9yTWFwW3R5cGVdOwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN5bWJvbCA9IEV4cGVjdGF0aW9ucy5zeW1ib2xNYXBbdHlwZV07Ci0g
ICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBjb25zdCB0aW1lID0gZGF0YS50aW1lID8gTWF0
aC5yb3VuZChkYXRhLnRpbWUgLyAxMDAwKSA6IDA7Ci0gICAgICAgICAgICAgICAgaWYgKHRpbWUg
JiYgc2hvd1Rlc3RUaW1lcykKLSAgICAgICAgICAgICAgICAgICAgdGFnID0gdGltZTsKLQotICAg
ICAgICAgICAgICAgIHJldHVybiBkcmF3RG90KGNvbnRleHQsIHgsIHksIGZhbHNlLCB0YWcgPyB0
YWcgOiBudWxsLCBzeW1ib2wsIGZhbHNlLCBjb2xvcik7Ci0gICAgICAgICAgICB9LAotICAgICAg
ICB9OwotCi0gICAgICAgIGZ1bmN0aW9uIG9uRG90Q2xpY2tGYWN0b3J5KGNvbmZpZ3VyYXRpb24p
IHsKLSAgICAgICAgICAgIHJldHVybiAoZGF0YSkgPT4gewotICAgICAgICAgICAgICAgIGxldCBh
bGxEYXRhID0gW107Ci0gICAgICAgICAgICAgICAgbGV0IHBhcnRpYWxDb25maWd1cmF0aW9uID0g
e307Ci0gICAgICAgICAgICAgICAgc2VsZi5jb25maWd1cmF0aW9ucy5mb3JFYWNoKGNvbmZpZ3Vy
YXRpb25LZXkgPT4gewotICAgICAgICAgICAgICAgICAgICBpZiAoY29uZmlndXJhdGlvbktleS5j
b21wYXJlKGNvbmZpZ3VyYXRpb24pIHx8IGNvbmZpZ3VyYXRpb25LZXkuY29tcGFyZVNES3MoY29u
ZmlndXJhdGlvbikpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAg
ICAgICAgICAgIHNlbGYucmVzdWx0c1tjb25maWd1cmF0aW9uS2V5LnRvS2V5KCldLmZvckVhY2go
cGFpciA9PiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjb21wdXRlZENvbmZpZ3Vy
YXRpb24gPSBuZXcgQ29uZmlndXJhdGlvbihwYWlyLmNvbmZpZ3VyYXRpb24pOwotICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKGNvbXB1dGVkQ29uZmlndXJhdGlvbi5jb21wYXJlKGNvbmZpZ3Vy
YXRpb24pIHx8IGNvbXB1dGVkQ29uZmlndXJhdGlvbi5jb21wYXJlU0RLcyhjb25maWd1cmF0aW9u
KSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBsZXQgZG9lc01hdGNoID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgICAgICBw
YWlyLnJlc3VsdHMuZm9yRWFjaChub2RlID0+IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAobm9kZS51dWlkICE9PSBkYXRhLnV1aWQpCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2VzTWF0Y2ggPSB0
cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBkYXRhTm9kZSA9IHt9OwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKG5vZGUpLmZvckVhY2goa2V5ID0+
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YU5vZGVba2V5XSA9IG5vZGVb
a2V5XTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkYXRhTm9kZVsnY29uZmlndXJhdGlvbiddID0gY29tcHV0ZWRDb25maWd1cmF0
aW9uOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbERhdGEucHVzaChkYXRhTm9kZSk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChkb2VzTWF0Y2gpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25maWd1cmF0aW9u
Lm1lbWJlcnMoKS5mb3JFYWNoKG1lbWJlciA9PiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChtZW1iZXIgaW4gcGFydGlhbENvbmZpZ3VyYXRpb24pIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJ0aWFsQ29uZmlndXJhdGlvblttZW1iZXJd
ICE9PSBudWxsICYmIHBhcnRpYWxDb25maWd1cmF0aW9uW21lbWJlcl0gIT09IGNvbXB1dGVkQ29u
ZmlndXJhdGlvblttZW1iZXJdKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHBhcnRpYWxDb25maWd1cmF0aW9uW21lbWJlcl0gPSBudWxsOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNvbXB1dGVkQ29uZmlndXJhdGlvblttZW1iZXJd
ICE9PSBudWxsKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFydGlhbENv
bmZpZ3VyYXRpb25bbWVtYmVyXSA9IGNvbXB1dGVkQ29uZmlndXJhdGlvblttZW1iZXJdOwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAg
ICAgICBsZXQgYWdyZWdhdGVEYXRhID0ge307Ci0gICAgICAgICAgICAgICAgT2JqZWN0LmtleXMo
ZGF0YSkuZm9yRWFjaChrZXkgPT4gewotICAgICAgICAgICAgICAgICAgICBhZ3JlZ2F0ZURhdGFb
a2V5XSA9IGRhdGFba2V5XTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICBh
Z3JlZ2F0ZURhdGFbJ2NvbmZpZ3VyYXRpb24nXSA9IG5ldyBDb25maWd1cmF0aW9uKHBhcnRpYWxD
b25maWd1cmF0aW9uKTsKLSAgICAgICAgICAgICAgICBUb29sVGlwLnVuc2V0KCk7Ci0gICAgICAg
ICAgICAgICAgSW52ZXN0aWdhdGVEcmF3ZXIuZXhwYW5kKHNlbGYuc3VpdGUsIGFncmVnYXRlRGF0
YSwgYWxsRGF0YSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlv
biBvbkRvdEVudGVyRmFjdG9yeShjb25maWd1cmF0aW9uKSB7Ci0gICAgICAgICAgICByZXR1cm4g
KGRhdGEsIGV2ZW50LCBjYW52YXMpID0+IHsKLSAgICAgICAgICAgICAgICBsZXQgcGFydGlhbENv
bmZpZ3VyYXRpb24gPSB7fTsKLSAgICAgICAgICAgICAgICBzZWxmLmNvbmZpZ3VyYXRpb25zLmZv
ckVhY2goY29uZmlndXJhdGlvbktleSA9PiB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChjb25m
aWd1cmF0aW9uS2V5LmNvbXBhcmUoY29uZmlndXJhdGlvbikgfHwgY29uZmlndXJhdGlvbktleS5j
b21wYXJlU0RLcyhjb25maWd1cmF0aW9uKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5yZXN1bHRzW2NvbmZpZ3VyYXRpb25LZXkudG9L
ZXkoKV0uZm9yRWFjaChwYWlyID0+IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNv
bXB1dGVkQ29uZmlndXJhdGlvbiA9IG5ldyBDb25maWd1cmF0aW9uKHBhaXIuY29uZmlndXJhdGlv
bik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29tcHV0ZWRDb25maWd1cmF0aW9uLmNv
bXBhcmUoY29uZmlndXJhdGlvbikgfHwgY29tcHV0ZWRDb25maWd1cmF0aW9uLmNvbXBhcmVTREtz
KGNvbmZpZ3VyYXRpb24pKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGxldCBkb2VzTWF0Y2ggPSBmYWxzZTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHBhaXIucmVzdWx0cy5mb3JFYWNoKG5vZGUgPT4gewotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChkb2VzTWF0Y2gpCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS51dWlk
ID09IGRhdGEudXVpZCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9lc01hdGNo
ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKGRvZXNNYXRjaCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbmZp
Z3VyYXRpb24ubWVtYmVycygpLmZvckVhY2gobWVtYmVyID0+IHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKG1lbWJlciBpbiBwYXJ0aWFsQ29uZmlndXJhdGlvbikgewotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcnRpYWxDb25maWd1cmF0aW9u
W21lbWJlcl0gIT09IG51bGwgJiYgcGFydGlhbENvbmZpZ3VyYXRpb25bbWVtYmVyXSAhPT0gY29t
cHV0ZWRDb25maWd1cmF0aW9uW21lbWJlcl0pCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcGFydGlhbENvbmZpZ3VyYXRpb25bbWVtYmVyXSA9IG51bGw7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY29tcHV0ZWRDb25maWd1cmF0aW9u
W21lbWJlcl0gIT09IG51bGwpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
YXJ0aWFsQ29uZmlndXJhdGlvblttZW1iZXJdID0gY29tcHV0ZWRDb25maWd1cmF0aW9uW21lbWJl
cl07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIH0pOwotICAg
ICAgICAgICAgICAgIHBhcnRpYWxDb25maWd1cmF0aW9uID0gbmV3IENvbmZpZ3VyYXRpb24ocGFy
dGlhbENvbmZpZ3VyYXRpb24pOwotICAgICAgICAgICAgICAgIGNvbnN0IHNjcm9sbERlbHRhID0g
ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcCB8fCBkb2N1bWVudC5ib2R5LnNjcm9s
bFRvcDsKLQotICAgICAgICAgICAgICAgIGNvbnN0IGJ1aWxkUGFyYW1zID0gY29uZmlndXJhdGlv
bi50b1BhcmFtcygpOwotICAgICAgICAgICAgICAgIGJ1aWxkUGFyYW1zWydzdWl0ZSddID0gW3Nl
bGYuc3VpdGVdOwotICAgICAgICAgICAgICAgIGJ1aWxkUGFyYW1zWyd1dWlkJ10gPSBbZGF0YS51
dWlkXTsKLSAgICAgICAgICAgICAgICBidWlsZFBhcmFtc1snYWZ0ZXJfdGltZSddID0gW2RhdGEu
c3RhcnRfdGltZV07Ci0gICAgICAgICAgICAgICAgYnVpbGRQYXJhbXNbJ2JlZm9yZV90aW1lJ10g
PSBbZGF0YS5zdGFydF90aW1lXTsKLSAgICAgICAgICAgICAgICBpZiAoYnJhbmNoKQotICAgICAg
ICAgICAgICAgICAgICBidWlsZFBhcmFtc1snYnJhbmNoJ10gPSBicmFuY2g7Ci0KLSAgICAgICAg
ICAgICAgICBUb29sVGlwLnNldCgKLSAgICAgICAgICAgICAgICAgICAgYDxkaXYgY2xhc3M9ImNv
bnRlbnQiPgotICAgICAgICAgICAgICAgICAgICAgICAgJHtkYXRhLnN0YXJ0X3RpbWUgPyBgPGEg
aHJlZj0iL3VybHMvYnVpbGQ/JHtwYXJhbXNUb1F1ZXJ5KGJ1aWxkUGFyYW1zKX0iIHRhcmdldD0i
X2JsYW5rIj5UZXN0IHJ1bjwvYT4gQCAke25ldyBEYXRlKGRhdGEuc3RhcnRfdGltZSAqIDEwMDAp
LnRvTG9jYWxlU3RyaW5nKCl9PGJyPmAgOiAnJ30KLSAgICAgICAgICAgICAgICAgICAgICAgICR7
ZGF0YS5zdGFydF90aW1lICYmIEFyY2hpdmVSb3V0ZXIuaGFzQXJjaGl2ZShzZWxmLnN1aXRlLCBk
YXRhLmFjdHVhbCkgPyBgPGEgaHJlZj0iL2FyY2hpdmUvJHtBcmNoaXZlUm91dGVyLnBhdGhGb3Io
c2VsZi5zdWl0ZSwgZGF0YS5hY3R1YWwsIHNlbGYudGVzdCl9PyR7cGFyYW1zVG9RdWVyeShidWls
ZFBhcmFtcyl9IiB0YXJnZXQ9Il9ibGFuayI+JHtBcmNoaXZlUm91dGVyLmxhYmVsRm9yKHNlbGYu
c3VpdGUsIGRhdGEuYWN0dWFsKX08L2E+PGJyPmAgOiAnJ30KLSAgICAgICAgICAgICAgICAgICAg
ICAgIENvbW1pdHM6ICR7Q29tbWl0QmFuay5jb21taXRzRHVyaW5nKGRhdGEudXVpZCkubWFwKChj
b21taXQpID0+IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcGFyYW1zID0gewot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmFuY2g6IGNvbW1pdC5icmFuY2ggPyBb
Y29tbWl0LmJyYW5jaF0gOiBicmFuY2gsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHV1aWQ6IFtjb21taXQudXVpZF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcGFyYW1zLmJyYW5jaCkKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHBhcmFtcy5icmFuY2g7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgcXVlcnkgPSBwYXJhbXNUb1F1ZXJ5KHBhcmFtcyk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGA8YSBocmVmPSIvY29tbWl0L2luZm8/JHtx
dWVyeX0iIHRhcmdldD0iX2JsYW5rIj4ke2NvbW1pdC5pZC5zdWJzdHJpbmcoMCwxMil9PC9hPmA7
Ci0gICAgICAgICAgICAgICAgICAgICAgICB9KS5qb2luKCcsICcpfQotICAgICAgICAgICAgICAg
ICAgICAgICAgPGJyPgotICAgICAgICAgICAgICAgICAgICAgICAgJHtwYXJ0aWFsQ29uZmlndXJh
dGlvbn0KLSAgICAgICAgICAgICAgICAgICAgICAgIDxicj4KLSAgICAgICAgICAgICAgICAgICAg
ICAgICR7ZGF0YS5zdGF0cyA/IGA8YSBocmVmPSIvaW52ZXN0aWdhdGU/JHtwYXJhbXNUb1F1ZXJ5
KGJ1aWxkUGFyYW1zKX0iIHRhcmdldD0iX2JsYW5rIj5JbnZlc3RpZ2F0ZSBmYWlsdXJlczwvYT48
YnI+YCA6ICcnfQotICAgICAgICAgICAgICAgICAgICAgICAgJHtkYXRhLmV4cGVjdGVkID8gYEV4
cGVjdGVkOiAke2RhdGEuZXhwZWN0ZWR9PGJyPmAgOiAnJ30KLSAgICAgICAgICAgICAgICAgICAg
ICAgICR7ZGF0YS5hY3R1YWwgPyBgQWN0dWFsOiAke2RhdGEuYWN0dWFsfTxicj5gIDogJyd9Ci0g
ICAgICAgICAgICAgICAgICAgIDwvZGl2PmAsCi0gICAgICAgICAgICAgICAgICAgIGRhdGEudGlw
UG9pbnRzLm1hcCgocG9pbnQpID0+IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7
eDogY2FudmFzLnggKyBwb2ludC54LCB5OiBjYW52YXMueSArIHNjcm9sbERlbHRhICsgcG9pbnQu
eX07Ci0gICAgICAgICAgICAgICAgICAgIH0pLAotICAgICAgICAgICAgICAgICAgICAoZXZlbnQp
ID0+IHtvbkRvdENsaWNrRmFjdG9yeShjb25maWd1cmF0aW9uKShkYXRhKTt9LAotICAgICAgICAg
ICAgICAgICAgICBzZWxmLnZpZXdwb3J0LAotICAgICAgICAgICAgICAgICk7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBvbkRvdExlYXZlKGV2ZW50LCBjYW52
YXMpIHsKLSAgICAgICAgICAgIGNvbnN0IHNjcm9sbERlbHRhID0gZG9jdW1lbnQuZG9jdW1lbnRF
bGVtZW50LnNjcm9sbFRvcCB8fCBkb2N1bWVudC5ib2R5LnNjcm9sbFRvcDsKLSAgICAgICAgICAg
IGlmICghVG9vbFRpcC5pc0luKHt4OiBldmVudC5wYWdlWCwgeTogZXZlbnQucGFnZVkgLSBzY3Jv
bGxEZWx0YX0pKQotICAgICAgICAgICAgICAgIFRvb2xUaXAudW5zZXQoKTsKLSAgICAgICAgfQot
Ci0gICAgICAgIGZ1bmN0aW9uIGV4cG9ydGVyRmFjdG9yeShkYXRhKSB7Ci0gICAgICAgICAgICBy
ZXR1cm4gKHVwZGF0ZUZ1bmN0aW9uKSA9PiB7Ci0gICAgICAgICAgICAgICAgc2VsZi51cGRhdGVz
LnB1c2goKHNjYWxlKSA9PiB7dXBkYXRlRnVuY3Rpb24oZGF0YSwgc2NhbGUpO30pOwotICAgICAg
ICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgbGV0IGNoaWxkcmVuID0gW107Ci0gICAgICAg
IHRoaXMuY29uZmlndXJhdGlvbnMuZm9yRWFjaChjb25maWd1cmF0aW9uID0+IHsKLSAgICAgICAg
ICAgIGlmICghdGhpcy5yZXN1bHRzW2NvbmZpZ3VyYXRpb24udG9LZXkoKV0gfHwgT2JqZWN0Lmtl
eXModGhpcy5yZXN1bHRzW2NvbmZpZ3VyYXRpb24udG9LZXkoKV0pLmxlbmd0aCA9PT0gMCkKLSAg
ICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgIC8vIENyZWF0ZSBhIGxpc3Qgb2Yg
Y29uZmlndXJhdGlvbnMgdG8gZGlzcGxheSB3aXRoIFNES3Mgc3RyaXBwZWQKLSAgICAgICAgICAg
IGxldCBtYXBwZWRDaGlsZHJlbkNvbmZpZ3MgPSB7fTsKLSAgICAgICAgICAgIGxldCBjaGlsZHJl
bkNvbmZpZ3NCeVNESyA9IHt9Ci0gICAgICAgICAgICBsZXQgcmVzdWx0c0J5S2V5ID0ge307Ci0g
ICAgICAgICAgICB0aGlzLnJlc3VsdHNbY29uZmlndXJhdGlvbi50b0tleSgpXS5mb3JFYWNoKHBh
aXIgPT4gewotICAgICAgICAgICAgICAgIGNvbnN0IHN0cmlwcGVkQ29uZmlnID0gbmV3IENvbmZp
Z3VyYXRpb24ocGFpci5jb25maWd1cmF0aW9uKTsKLSAgICAgICAgICAgICAgICByZXN1bHRzQnlL
ZXlbc3RyaXBwZWRDb25maWcudG9LZXkoKV0gPSBjb21iaW5lUmVzdWx0cyhbXSwgWy4uLnBhaXIu
cmVzdWx0c10uc29ydChmdW5jdGlvbihhLCBiKSB7cmV0dXJuIGIudXVpZCAtIGEudXVpZDt9KSk7
Ci0gICAgICAgICAgICAgICAgc3RyaXBwZWRDb25maWcuc2RrID0gbnVsbDsKLSAgICAgICAgICAg
ICAgICBtYXBwZWRDaGlsZHJlbkNvbmZpZ3Nbc3RyaXBwZWRDb25maWcudG9LZXkoKV0gPSBzdHJp
cHBlZENvbmZpZzsKLSAgICAgICAgICAgICAgICBpZiAoIWNoaWxkcmVuQ29uZmlnc0J5U0RLW3N0
cmlwcGVkQ29uZmlnLnRvS2V5KCldKQotICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbkNvbmZp
Z3NCeVNES1tzdHJpcHBlZENvbmZpZy50b0tleSgpXSA9IFtdOwotICAgICAgICAgICAgICAgIGNo
aWxkcmVuQ29uZmlnc0J5U0RLW3N0cmlwcGVkQ29uZmlnLnRvS2V5KCldLnB1c2gobmV3IENvbmZp
Z3VyYXRpb24ocGFpci5jb25maWd1cmF0aW9uKSk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAg
ICAgIGxldCBjaGlsZHJlbkNvbmZpZ3MgPSBbXTsKLSAgICAgICAgICAgIE9iamVjdC5rZXlzKG1h
cHBlZENoaWxkcmVuQ29uZmlncykuZm9yRWFjaChrZXkgPT4gewotICAgICAgICAgICAgICAgIGNo
aWxkcmVuQ29uZmlncy5wdXNoKG1hcHBlZENoaWxkcmVuQ29uZmlnc1trZXldKTsKLSAgICAgICAg
ICAgIH0pOwotICAgICAgICAgICAgY2hpbGRyZW5Db25maWdzLnNvcnQoZnVuY3Rpb24oYSwgYikg
e3JldHVybiBhLmNvbXBhcmUoYik7fSk7Ci0KLSAgICAgICAgICAgIC8vIENyZWF0ZSB0aGUgY29s
bGFwc2VkIHRpbWVsaW5lcywgY29iaW5lIHJlc3VsdHMKLSAgICAgICAgICAgIGxldCBhbGxSZXN1
bHRzID0gW107Ci0gICAgICAgICAgICBsZXQgY29sbGFwc2VkVGltZWxpbmVzID0gW107Ci0gICAg
ICAgICAgICBjaGlsZHJlbkNvbmZpZ3MuZm9yRWFjaChjb25maWcgPT4gewotICAgICAgICAgICAg
ICAgIGNoaWxkcmVuQ29uZmlnc0J5U0RLW2NvbmZpZy50b0tleSgpXS5zb3J0KGZ1bmN0aW9uKGEs
IGIpIHtyZXR1cm4gYS5jb21wYXJlU0RLcyhiKTt9KTsKLQotICAgICAgICAgICAgICAgIGxldCBy
ZXN1bHRzRm9yQ29uZmlnID0gW107Ci0gICAgICAgICAgICAgICAgY2hpbGRyZW5Db25maWdzQnlT
REtbY29uZmlnLnRvS2V5KCldLmZvckVhY2goc2RrQ29uZmlnID0+IHsKLSAgICAgICAgICAgICAg
ICAgICAgcmVzdWx0c0ZvckNvbmZpZyA9IGNvbWJpbmVSZXN1bHRzKHJlc3VsdHNGb3JDb25maWcs
IHJlc3VsdHNCeUtleVtzZGtDb25maWcudG9LZXkoKV0pOwotICAgICAgICAgICAgICAgIH0pOwot
ICAgICAgICAgICAgICAgIGFsbFJlc3VsdHMgPSBjb21iaW5lUmVzdWx0cyhhbGxSZXN1bHRzLCBy
ZXN1bHRzRm9yQ29uZmlnKTsKLQotICAgICAgICAgICAgICAgIGxldCBxdWV1ZVBhcmFtcyA9IGNv
bmZpZy50b1BhcmFtcygpOwotICAgICAgICAgICAgICAgIHF1ZXVlUGFyYW1zWydzdWl0ZSddID0g
W3RoaXMuc3VpdGVdOwotICAgICAgICAgICAgICAgIGlmIChicmFuY2gpCi0gICAgICAgICAgICAg
ICAgICAgIHF1ZXVlUGFyYW1zWydicmFuY2gnXTsKLSAgICAgICAgICAgICAgICBsZXQgbXlUaW1l
bGluZSA9IFRpbWVsaW5lLlNlcmllc1dpdGhIZWFkZXJDb21wb25lbnQoCi0gICAgICAgICAgICAg
ICAgICAgIGAke2NoaWxkcmVuQ29uZmlnc0J5U0RLW2NvbmZpZy50b0tleSgpXS5sZW5ndGggPiAx
ID8gJyB8ICcgOiAnJ308YSBocmVmPSIvdXJscy9xdWV1ZT8ke3BhcmFtc1RvUXVlcnkocXVldWVQ
YXJhbXMpfSIgdGFyZ2V0PSJfYmxhbmsiPiR7Y29uZmlnfTwvYT5gLAotICAgICAgICAgICAgICAg
ICAgICBUaW1lbGluZS5DYW52YXNTZXJpZXNDb21wb25lbnQocmVzdWx0c0ZvckNvbmZpZywgc2Nh
bGUsIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGdldFNjYWxlRnVuYzogb3B0aW9ucy5nZXRT
Y2FsZUZ1bmMsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb21wYXJlRnVuYzogb3B0aW9ucy5j
b21wYXJlRnVuYywKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlckZhY3Rvcnk6IG9wdGlv
bnMucmVuZGVyRmFjdG9yeSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4cG9ydGVyOiBvcHRp
b25zLmV4cG9ydGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgb25Eb3RDbGljazogb25Eb3RD
bGlja0ZhY3RvcnkoY29uZmlnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIG9uRG90RW50ZXI6
IG9uRG90RW50ZXJGYWN0b3J5KGNvbmZpZyksCi0gICAgICAgICAgICAgICAgICAgICAgICBvbkRv
dExlYXZlOiBvbkRvdExlYXZlLAotICAgICAgICAgICAgICAgICAgICAgICAgZXhwb3J0ZXI6IGV4
cG9ydGVyRmFjdG9yeShyZXN1bHRzRm9yQ29uZmlnKSwKLSAgICAgICAgICAgICAgICAgICAgfSkp
OwotCi0gICAgICAgICAgICAgICAgaWYgKGNoaWxkcmVuQ29uZmlnc0J5U0RLW2NvbmZpZy50b0tl
eSgpXS5sZW5ndGggPiAxKSB7Ci0gICAgICAgICAgICAgICAgICAgIGxldCB0aW1lbGluZXNCeVNE
SyA9IFtdOwotICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbkNvbmZpZ3NCeVNES1tjb25maWcu
dG9LZXkoKV0uZm9yRWFjaChzZGtDb25maWcgPT4gewotICAgICAgICAgICAgICAgICAgICAgICAg
dGltZWxpbmVzQnlTREsucHVzaCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaW1lbGlu
ZS5TZXJpZXNXaXRoSGVhZGVyQ29tcG9uZW50KGAke0NvbmZpZ3VyYXRpb24uaW50ZWdlclRvVmVy
c2lvbihzZGtDb25maWcudmVyc2lvbil9ICgke3Nka0NvbmZpZy5zZGt9KWAsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFRpbWVsaW5lLkNhbnZhc1Nlcmllc0NvbXBvbmVudChyZXN1
bHRzQnlLZXlbc2RrQ29uZmlnLnRvS2V5KCldLCBzY2FsZSwgewotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ2V0U2NhbGVGdW5jOiBvcHRpb25zLmdldFNjYWxlRnVuYywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBhcmVGdW5jOiBvcHRpb25zLmNv
bXBhcmVGdW5jLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyRmFj
dG9yeTogb3B0aW9ucy5yZW5kZXJGYWN0b3J5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZXhwb3J0ZXI6IG9wdGlvbnMuZXhwb3J0ZXIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBvbkRvdENsaWNrOiBvbkRvdENsaWNrRmFjdG9yeShzZGtDb25maWcp
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Eb3RFbnRlcjogb25Eb3RF
bnRlckZhY3Rvcnkoc2RrQ29uZmlnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG9uRG90TGVhdmU6IG9uRG90TGVhdmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBleHBvcnRlcjogZXhwb3J0ZXJGYWN0b3J5KHJlc3VsdHNCeUtleVtzZGtDb25maWcu
dG9LZXkoKV0pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkpOwotICAgICAg
ICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICAgICAgbXlUaW1lbGluZSA9IFRpbWVs
aW5lLkV4cGFuZGFibGVTZXJpZXNXaXRoSGVhZGVyRXhwYW5kZXJDb21wb25lbnQobXlUaW1lbGlu
ZSwge30sIC4uLnRpbWVsaW5lc0J5U0RLKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgY29sbGFwc2VkVGltZWxpbmVzLnB1c2gobXlUaW1lbGluZSk7Ci0gICAgICAgICAgICB9
KTsKLQotICAgICAgICAgICAgaWYgKGNvbGxhcHNlZFRpbWVsaW5lcy5sZW5ndGggPT09IDApCi0g
ICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgaWYgKGNvbGxhcHNlZFRpbWVsaW5l
cy5sZW5ndGggPT09IDEpIHsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbGxhcHNlZFRpbWVsaW5l
c1swXS5oZWFkZXIuaW5jbHVkZXMoJ2NsYXNzPSJzZXJpZXMiJykpCi0gICAgICAgICAgICAgICAg
ICAgIGNvbGxhcHNlZFRpbWVsaW5lc1swXS5oZWFkZXIgPSBUaW1lbGluZS5IZWFkZXJDb21wb25l
bnQoY29sbGFwc2VkVGltZWxpbmVzWzBdLmhlYWRlcik7Ci0gICAgICAgICAgICAgICAgY2hpbGRy
ZW4ucHVzaChjb2xsYXBzZWRUaW1lbGluZXNbMF0pOwotICAgICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgY2hpbGRyZW4ucHVzaCgKLSAgICAgICAgICAg
ICAgICBUaW1lbGluZS5FeHBhbmRhYmxlU2VyaWVzV2l0aEhlYWRlckV4cGFuZGVyQ29tcG9uZW50
KAotICAgICAgICAgICAgICAgIFRpbWVsaW5lLlNlcmllc1dpdGhIZWFkZXJDb21wb25lbnQoYCAk
e2NvbmZpZ3VyYXRpb259YCwKLSAgICAgICAgICAgICAgICAgICAgVGltZWxpbmUuQ2FudmFzU2Vy
aWVzQ29tcG9uZW50KGFsbFJlc3VsdHMsIHNjYWxlLCB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBnZXRTY2FsZUZ1bmM6IG9wdGlvbnMuZ2V0U2NhbGVGdW5jLAotICAgICAgICAgICAgICAgICAg
ICAgICAgY29tcGFyZUZ1bmM6IG9wdGlvbnMuY29tcGFyZUZ1bmMsCi0gICAgICAgICAgICAgICAg
ICAgICAgICByZW5kZXJGYWN0b3J5OiBvcHRpb25zLnJlbmRlckZhY3RvcnksCi0gICAgICAgICAg
ICAgICAgICAgICAgICBvbkRvdENsaWNrOiBvbkRvdENsaWNrRmFjdG9yeShjb25maWd1cmF0aW9u
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIG9uRG90RW50ZXI6IG9uRG90RW50ZXJGYWN0b3J5
KGNvbmZpZ3VyYXRpb24pLAotICAgICAgICAgICAgICAgICAgICAgICAgb25Eb3RMZWF2ZTogb25E
b3RMZWF2ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4cG9ydGVyOiBleHBvcnRlckZhY3Rv
cnkoYWxsUmVzdWx0cyksCi0gICAgICAgICAgICAgICAgICAgIH0pKSwKLSAgICAgICAgICAgICAg
ICB7ZXhwYW5kZWQ6IHRoaXMuY29uZmlndXJhdGlvbnMubGVuZ3RoIDw9IDF9LAotICAgICAgICAg
ICAgICAgIC4uLmNvbGxhcHNlZFRpbWVsaW5lcwotICAgICAgICAgICAgKSk7Ci0gICAgICAgIH0p
OwotCi0gICAgICAgIGxldCB0b3AgPSB0cnVlOwotICAgICAgICBzZWxmLnhheGlzVXBkYXRlcyA9
IFtdOwotICAgICAgICB0aGlzLnJlcG9zaXRvcmllcyA9IHJlcG9zaXRvcmllc0ZvckNvbW1pdHMo
Y29tbWl0cyk7Ci0gICAgICAgIHRoaXMucmVwb3NpdG9yaWVzLmZvckVhY2gocmVwb3NpdG9yeSA9
PiB7Ci0gICAgICAgICAgICBjb25zdCB4QXhpc0NvbXBvbmVudCA9IHhBeGlzRnJvbVNjYWxlKHNj
YWxlLCByZXBvc2l0b3J5LCBzZWxmLnhheGlzVXBkYXRlcywgdG9wLCBzZWxmLnZpZXdwb3J0KTsK
LSAgICAgICAgICAgIGlmICh0b3ApCi0gICAgICAgICAgICAgICAgY2hpbGRyZW4udW5zaGlmdCh4
QXhpc0NvbXBvbmVudCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgY2hpbGRy
ZW4ucHVzaCh4QXhpc0NvbXBvbmVudCk7Ci0gICAgICAgICAgICB0b3AgPSBmYWxzZTsKLSAgICAg
ICAgfSk7Ci0KLSAgICAgICAgY29uc3QgY29tcG9zZXIgPSBGUC5jb21wb3NlcihGUC5jdXJyeWlu
ZygodXBkYXRlVGltZWxpbmUsIG5vdGlmeVJlcmVuZGVyKSA9PiB7Ci0gICAgICAgICAgICBzZWxm
LnRpbWVsaW5lVXBkYXRlID0gKHhBeGlzZXMpID0+IHsKLSAgICAgICAgICAgICAgICBjaGlsZHJl
bi5zcGxpY2UoMCwgMSk7Ci0gICAgICAgICAgICAgICAgaWYgKHNlbGYucmVwb3NpdG9yaWVzLmxl
bmd0aCA+IDEpCi0gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuLnNwbGljZShjaGlsZHJlbi5s
ZW5ndGggLSBzZWxmLnJlcG9zaXRvcmllcy5sZW5ndGgsIHNlbGYucmVwb3NpdG9yaWVzLmxlbmd0
aCk7Ci0KLSAgICAgICAgICAgICAgICBsZXQgdG9wID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB4
QXhpc2VzLmZvckVhY2goY29tcG9uZW50ID0+IHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHRv
cCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuLnVuc2hpZnQoY29tcG9uZW50KTsK
LSAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRy
ZW4ucHVzaChjb21wb25lbnQpOwotICAgICAgICAgICAgICAgICAgICB0b3AgPSBmYWxzZTsKLSAg
ICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICB1cGRhdGVUaW1lbGluZShjaGlsZHJl
bik7Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgc2VsZi5ub3RpZnlSZXJlbmRlciA9IG5v
dGlmeVJlcmVuZGVyOwotICAgICAgICB9KSk7Ci0gICAgICAgIHJldHVybiBUaW1lbGluZS5DYW52
YXNDb250YWluZXIoY29tcG9zZXIsIC4uLmNoaWxkcmVuKTsKLSAgICB9Ci19Ci0KLQotZnVuY3Rp
b24gTGVnZW5kTGFiZWwoZXZlbnRTdHJlYW0sIGZpbHRlckV4cGVjdGVkVGV4dCwgZmlsdGVyVW5l
eHBlY3RlZFRleHQpIHsKLSAgICBsZXQgcmVmID0gUkVGLmNyZWF0ZVJlZih7Ci0gICAgICAgIHN0
YXRlOiB3aWxsRmlsdGVyRXhwZWN0ZWQsCi0gICAgICAgIG9uU3RhdGVVcGRhdGU6IChlbGVtZW50
LCBzdGF0ZSkgPT4gewotICAgICAgICAgICAgaWYgKHN0YXRlKSBlbGVtZW50LmlubmVyVGV4dCA9
IGZpbHRlckV4cGVjdGVkVGV4dDsKLSAgICAgICAgICAgIGVsc2UgZWxlbWVudC5pbm5lclRleHQg
PSBmaWx0ZXJVbmV4cGVjdGVkVGV4dDsKLSAgICAgICAgfQotICAgIH0pOwotICAgIGV2ZW50U3Ry
ZWFtLmFjdGlvbigod2lsbEZpbHRlckV4cGVjdGVkKSA9PiByZWYuc2V0U3RhdGUod2lsbEZpbHRl
ckV4cGVjdGVkKSk7Ci0gICAgcmV0dXJuIGA8ZGl2IGNsYXNzPSJsYWJlbCIgc3R5bGU9ImZvbnQt
c2l6ZTogdmFyKC0tc21hbGxTaXplKSIgcmVmPSIke3JlZn0iPjwvZGl2PmA7Ci19IAotCi1mdW5j
dGlvbiBMZWdlbmQoY2FsbGJhY2s9bnVsbCwgcGx1cmFsPWZhbHNlLCBkZWZhdWx0V2lsbEZpbHRl
ckV4cGVjdGVkPWZhbHNlKSB7Ci0gICAgd2lsbEZpbHRlckV4cGVjdGVkID0gZGVmYXVsdFdpbGxG
aWx0ZXJFeHBlY3RlZDsKLSAgICBJbnZlc3RpZ2F0ZURyYXdlci53aWxsRmlsdGVyRXhwZWN0ZWQg
PSB3aWxsRmlsdGVyRXhwZWN0ZWQ7Ci0gICAgbGV0IHVwZGF0ZUxhYmVsRXZlbnRzID0gbmV3IEV2
ZW50U3RyZWFtKCk7Ci0gICAgY29uc3QgbGVnZW5kRGV0YWlscyA9IHsKLSAgICAgICAgc3VjY2Vz
czogewotICAgICAgICAgICAgZXhwZWN0ZWQ6IHBsdXJhbCA/ICdObyB1bmV4cGVjdGVkIHJlc3Vs
dHMnIDogJ1Jlc3VsdCBleHBlY3RlZCcsCi0gICAgICAgICAgICB1bmV4cGVjdGVkOiBwbHVyYWwg
PyAnQWxsIHRlc3RzIHBhc3NlZCcgOiAnVGVzdCBwYXNzZWQnLAotICAgICAgICB9LAotICAgICAg
ICB3YXJuaW5nOiB7Ci0gICAgICAgICAgICBleHBlY3RlZDogcGx1cmFsID8gJ1NvbWUgdGVzdHMg
dW5leHBlY3RlZGx5IHJlcG9ydGVkIHdhcm5pbmdzJyA6ICdVbmV4cGVjdGVkIHdhcm5pbmcnLAot
ICAgICAgICAgICAgdW5leHBlY3RlZDogcGx1cmFsID8gJ1NvbWUgdGVzdHMgcmVwb3J0ZWQgd2Fy
bmluZ3MnIDogJ1Rlc3Qgd2FybmluZycsCi0gICAgICAgIH0sCi0gICAgICAgIGZhaWxlZDogewot
ICAgICAgICAgICAgZXhwZWN0ZWQ6IHBsdXJhbCA/ICdTb21lIHRlc3RzIHVuZXhwZWN0ZWRseSBm
YWlsZWQnIDogJ1VuZXhwZWN0ZWRseSBmYWlsZWQnLAotICAgICAgICAgICAgdW5leHBlY3RlZDog
cGx1cmFsID8gJ1NvbWUgdGVzdHMgZmFpbGVkJyA6ICdUZXN0IGZhaWxlZCcsCi0gICAgICAgIH0s
Ci0gICAgICAgIHRpbWVkb3V0OiB7Ci0gICAgICAgICAgICBleHBlY3RlZDogcGx1cmFsID8gJ1Nv
bWUgdGVzdHMgdW5leHBlY3RlZGx5IHRpbWVkIG91dCcgOiAnVW5leHBlY3RlZGx5IHRpbWVkIG91
dCcsCi0gICAgICAgICAgICB1bmV4cGVjdGVkOiBwbHVyYWwgPyAnU29tZSB0ZXN0cyB0aW1lZCBv
dXQnIDogJ1Rlc3QgdGltZWQgb3V0JywKLSAgICAgICAgfSwKLSAgICAgICAgY3Jhc2hlZDogewot
ICAgICAgICAgICAgZXhwZWN0ZWQ6IHBsdXJhbCA/ICdTb21lIHRlc3RzIHVuZXhwZWN0ZWRseSBj
cmFzaGVkJyA6ICdVbmV4cGVjdGVkbHkgY3Jhc2hlZCcsCi0gICAgICAgICAgICB1bmV4cGVjdGVk
OiBwbHVyYWwgPyAnU29tZSB0ZXN0cyBjcmFzaGVkJyA6ICdUZXN0IGNyYXNoZWQnLAotICAgICAg
ICB9LAotICAgIH07Ci0gICAgbGV0IHJlc3VsdCA9IGA8ZGl2IGNsYXNzPSJsZW5nZW5kIGhvcml6
b250YWwiPgotICAgICAgICAgICAgJHtPYmplY3Qua2V5cyhsZWdlbmREZXRhaWxzKS5tYXAoKGtl
eSkgPT4gewotICAgICAgICAgICAgICAgIGNvbnN0IGRvdCA9IFJFRi5jcmVhdGVSZWYoewotICAg
ICAgICAgICAgICAgICAgICBvbkVsZW1lbnRNb3VudDogKGVsZW1lbnQpID0+IHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VsZWF2ZScsIChl
dmVudCkgPT4gewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghVG9vbFRpcC5pc0lu
KHt4OiBldmVudC54LCB5OiBldmVudC55fSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFRvb2xUaXAudW5zZXQoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAg
ICAgICAgICAgICAgICAgICAgZWxlbWVudC5vbm1vdXNlb3ZlciA9IChldmVudCkgPT4gewotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMo
J2Rpc2FibGVkJykpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBUb29sVGlwLnNldEJ5RWxlbWVudCgKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYDxkaXYgY2xhc3M9ImNvbnRlbnQiPgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJHt3aWxsRmlsdGVyRXhwZWN0ZWQgPyBsZWdlbmRE
ZXRhaWxzW2tleV0uZXhwZWN0ZWQgOiBsZWdlbmREZXRhaWxzW2tleV0udW5leHBlY3RlZH0KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+YCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZWxlbWVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
e29yaWVudGF0aW9uOiBUb29sVGlwLkhPUklaT05UQUx9LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9OwotICAgICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGA8ZGl2IGNs
YXNzPSJpdGVtIj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCAke2tl
eX0iIHJlZj0iJHtkb3R9Ij48ZGl2IGNsYXNzPSJ0ZXh0Ij4ke0V4cGVjdGF0aW9ucy5zeW1ib2xN
YXBba2V5XX08L2Rpdj48L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICR7TGVnZW5kTGFi
ZWwodXBkYXRlTGFiZWxFdmVudHMsIGxlZ2VuZERldGFpbHNba2V5XS5leHBlY3RlZCwgbGVnZW5k
RGV0YWlsc1trZXldLnVuZXhwZWN0ZWQpfQotICAgICAgICAgICAgICAgICAgICA8L2Rpdj5gCi0g
ICAgICAgICAgICB9KS5qb2luKCcnKX0KLSAgICAgICAgPC9kaXY+YDsKLQotICAgIGlmIChjYWxs
YmFjaykgewotICAgICAgICBjb25zdCBmaWx0ZXJTd2l0Y2ggPSBSRUYuY3JlYXRlUmVmKHsKLSAg
ICAgICAgICAgIG9uRWxlbWVudE1vdW50OiAoZWxlbWVudCkgPT4gewotICAgICAgICAgICAgICAg
IGVsZW1lbnQub25jaGFuZ2UgPSAoKSA9PiB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChlbGVt
ZW50LmNoZWNrZWQpCi0gICAgICAgICAgICAgICAgICAgICAgICB3aWxsRmlsdGVyRXhwZWN0ZWQg
PSB0cnVlOwotICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAg
ICB3aWxsRmlsdGVyRXhwZWN0ZWQgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgdXBkYXRl
TGFiZWxFdmVudHMuYWRkKHdpbGxGaWx0ZXJFeHBlY3RlZCk7Ci0gICAgICAgICAgICAgICAgICAg
IEludmVzdGlnYXRlRHJhd2VyLndpbGxGaWx0ZXJFeHBlY3RlZCA9IHdpbGxGaWx0ZXJFeHBlY3Rl
ZDsKLSAgICAgICAgICAgICAgICAgICAgSW52ZXN0aWdhdGVEcmF3ZXIuZGlzcGF0Y2goKTsKLSAg
ICAgICAgICAgICAgICAgICAgSW52ZXN0aWdhdGVEcmF3ZXIuc2VsZWN0KEludmVzdGlnYXRlRHJh
d2VyLnNlbGVjdGVkKTsKLSAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2sod2lsbEZpbHRlckV4
cGVjdGVkKTsKLSAgICAgICAgICAgICAgICB9OwotICAgICAgICAgICAgfSwKLSAgICAgICAgfSk7
Ci0gICAgICAgIGNvbnN0IHNob3dUaW1lc1N3aXRjaCA9IFJFRi5jcmVhdGVSZWYoewotICAgICAg
ICAgICAgb25FbGVtZW50TW91bnQ6IChlbGVtZW50KSA9PiB7Ci0gICAgICAgICAgICAgICAgZWxl
bWVudC5vbmNoYW5nZSA9ICgpID0+IHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQu
Y2hlY2tlZCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHNob3dUZXN0VGltZXMgPSB0cnVlOwot
ICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICBzaG93VGVz
dFRpbWVzID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7Ci0gICAgICAg
ICAgICAgICAgfTsKLSAgICAgICAgICAgIH0sCi0gICAgICAgIH0pOwotCi0gICAgICAgIHJlc3Vs
dCArPSBgPGRpdiBjbGFzcz0iaW5wdXQiPgotICAgICAgICAgICAgPGxhYmVsPkZpbHRlciBleHBl
Y3RlZCByZXN1bHRzPC9sYWJlbD4KLSAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0ic3dpdGNoIj4K
LSAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iY2hlY2tib3giJHt3aWxsRmlsdGVyRXhwZWN0
ZWQgPyAnIGNoZWNrZWQnOiAnJ30gcmVmPSIke2ZpbHRlclN3aXRjaH0iPgotICAgICAgICAgICAg
ICAgIDxzcGFuIGNsYXNzPSJzbGlkZXIiPjwvc3Bhbj4KLSAgICAgICAgICAgIDwvbGFiZWw+Ci0g
ICAgICAgIDwvZGl2PmAKLSAgICAgICAgaWYgKCFwbHVyYWwpCi0gICAgICAgICAgICByZXN1bHQg
Kz0gYDxkaXYgY2xhc3M9ImlucHV0Ij4KLSAgICAgICAgICAgICAgICA8bGFiZWw+U2hvdyB0ZXN0
IHRpbWVzPC9sYWJlbD4KLSAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9InN3aXRjaCI+Ci0g
ICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJjaGVja2JveCIke3Nob3dUZXN0VGltZXMg
PyAnIGNoZWNrZWQnOiAnJ30gcmVmPSIke3Nob3dUaW1lc1N3aXRjaH0iPgotICAgICAgICAgICAg
ICAgICAgICA8c3BhbiBjbGFzcz0ic2xpZGVyIj48L3NwYW4+Ci0gICAgICAgICAgICAgICAgPC9s
YWJlbD4KLSAgICAgICAgICAgIDwvZGl2PmA7Ci0gICAgfQotCi0gICAgcmV0dXJuIGAke3Jlc3Vs
dH1gOwotfQotCi1leHBvcnQge0xlZ2VuZCwgVGltZWxpbmVGcm9tRW5kcG9pbnQsIEV4cGVjdGF0
aW9uc307CkluZGV4OiBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS92aWV3L3N0YXRpYy9q
cy90b29sdGlwLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5
L3ZpZXcvc3RhdGljL2pzL3Rvb2x0aXAuanMJKHJldmlzaW9uIDI2NTUzMSkKKysrIFRvb2xzL3Jl
c3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvc3RhdGljL2pzL3Rvb2x0aXAuanMJKG5vbmV4aXN0
ZW50KQpAQCAtMSwyMzUgKzAsMCBAQAotLy8gQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotLy8g
YXJlIG1ldDoKLS8vIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotLy8gICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIgotLy8gQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0vLyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0vLyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLS8vIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLS8vIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0vLyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLS8vIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0vLyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotLy8gQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotLy8gVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1pbXBvcnQge0RPTSwgUkVGfSBmcm9tICcvbGlicmFy
eS9qcy9SZWYuanMnOwotCi1mdW5jdGlvbiBpc1BvaW50SW5FbGVtZW50KGVsZW1lbnQsIHBvaW50
KQotewotICAgIGlmICghZWxlbWVudCB8fCBlbGVtZW50LnN0eWxlLmRpc3BsYXkgPT0gJ25vbmUn
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgY29uc3QgYm91bmRzID0gZWxlbWVudC5nZXRC
b3VuZGluZ0NsaWVudFJlY3QoKTsKLSAgICByZXR1cm4gcG9pbnQueCA+PSBib3VuZHMubGVmdCAt
IDEgJiYgcG9pbnQueCA8PSBib3VuZHMucmlnaHQgKyAxICYmIHBvaW50LnkgPj0gYm91bmRzLnRv
cCAtIDEgJiYgcG9pbnQueSA8PSBib3VuZHMuYm90dG9tICsgMTsKLX0KLQotY2xhc3MgX1Rvb2xU
aXAgewotICAgIGNvbnN0cnVjdG9yKCkgewotICAgICAgICB0aGlzLnJlZiA9IG51bGw7Ci0gICAg
ICAgIHRoaXMuYXJyb3cgPSBudWxsOwotICAgICAgICB0aGlzLm9uQXJyb3dDbGljayA9IG51bGw7
Ci0KLSAgICAgICAgdGhpcy5WRVJUSUNBTCA9IDA7Ci0gICAgICAgIHRoaXMuSE9SSVpPTlRBTCA9
IDE7Ci0gICAgfQotICAgIHRvU3RyaW5nKCkgewotICAgICAgICBjb25zdCBzZWxmID0gdGhpczsK
LSAgICAgICAgdGhpcy5yZWYgPSBSRUYuY3JlYXRlUmVmKHsKLSAgICAgICAgICAgIHN0YXRlOiB7
Y29udGVudDogbnVsbCwgcG9pbnRzOiBudWxsLCB2aWV3cG9ydDogbnVsbH0sCi0gICAgICAgICAg
ICBvbkVsZW1lbnRNb3VudDogKGVsZW1lbnQpID0+IHsKLSAgICAgICAgICAgICAgICBlbGVtZW50
LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbGVhdmUnLCAoZXZlbnQpID0+IHsKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKGVsZW1lbnQuc3R5bGUuZGlzcGxheSA9PT0gJ25vbmUnKQotICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgICAgICBpZiAoIWlzUG9pbnRJ
bkVsZW1lbnQoc2VsZi5hcnJvdy5lbGVtZW50LCBldmVudCkpCi0gICAgICAgICAgICAgICAgICAg
ICAgICB0aGlzLnVuc2V0KCkKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIH0sCi0g
ICAgICAgICAgICBvblN0YXRlVXBkYXRlOiAoZWxlbWVudCwgc3RhdGVEaWZmLCBzdGF0ZSkgPT4g
ewotICAgICAgICAgICAgICAgIGlmIChzdGF0ZURpZmYuY29udGVudCkgewotICAgICAgICAgICAg
ICAgICAgICBET00uaW5qZWN0KGVsZW1lbnQsIHN0YXRlRGlmZi5jb250ZW50KTsKLSAgICAgICAg
ICAgICAgICAgICAgZWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gbnVsbDsKLSAgICAgICAgICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAn
bm9uZSc7Ci0gICAgICAgICAgICAgICAgICAgIERPTS5pbmplY3QoZWxlbWVudCwgJycpOwotICAg
ICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGlmIChzdGF0ZURpZmYucG9pbnRzIHx8
IHN0YXRlRGlmZi52aWV3cG9ydCkgewotICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnN0eWxl
LmxlZnQgPSAnMHB4JzsKLSAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5zdHlsZS50b3AgPSAn
MHB4JzsKLQotICAgICAgICAgICAgICAgICAgICBjb25zdCB1cHBlclBvaW50ID0gc3RhdGVEaWZm
LnBvaW50cy5sZW5ndGggPiAxICYmIHN0YXRlRGlmZi5wb2ludHNbMF0ueSA+IHN0YXRlRGlmZi5w
b2ludHNbMV0ueSA/IHN0YXRlRGlmZi5wb2ludHNbMV0gOiBzdGF0ZURpZmYucG9pbnRzWzBdOwot
ICAgICAgICAgICAgICAgICAgICBjb25zdCBsb3dlclBvaW50ID0gc3RhdGVEaWZmLnBvaW50cy5s
ZW5ndGggPiAxICYmIHN0YXRlRGlmZi5wb2ludHNbMV0ueSA+IHN0YXRlRGlmZi5wb2ludHNbMF0u
eSA/IHN0YXRlRGlmZi5wb2ludHNbMV0gOiBzdGF0ZURpZmYucG9pbnRzWzBdOwotICAgICAgICAg
ICAgICAgICAgICBjb25zdCBzY3JvbGxEZWx0YSA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5z
Y3JvbGxUb3AgfHwgZG9jdW1lbnQuYm9keS5zY3JvbGxUb3A7Ci0gICAgICAgICAgICAgICAgICAg
IGNvbnN0IGJvdW5kcyA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7Ci0KLSAgICAg
ICAgICAgICAgICAgICAgbGV0IGRpcmVjdGlvbiA9ICdkb3duJzsKLSAgICAgICAgICAgICAgICAg
ICAgbGV0IHBvaW50ID0gdXBwZXJQb2ludDsKLQotICAgICAgICAgICAgICAgICAgICBpZiAodXBw
ZXJQb2ludC55ID09IGxvd2VyUG9pbnQueSkgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8g
SG9yaXpvbnRhbCB0b29sdGlwCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsZWZ0UG9p
bnQgPSBzdGF0ZURpZmYucG9pbnRzLmxlbmd0aCA+IDEgJiYgc3RhdGVEaWZmLnBvaW50c1swXS54
ID4gc3RhdGVEaWZmLnBvaW50c1sxXS54ID8gc3RhdGVEaWZmLnBvaW50c1sxXSA6IHN0YXRlRGlm
Zi5wb2ludHNbMF07Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByaWdodFBvaW50ID0g
c3RhdGVEaWZmLnBvaW50cy5sZW5ndGggPiAxICYmIHN0YXRlRGlmZi5wb2ludHNbMV0ueCA+IHN0
YXRlRGlmZi5wb2ludHNbMF0ueCA/IHN0YXRlRGlmZi5wb2ludHNbMV0gOiBzdGF0ZURpZmYucG9p
bnRzWzBdOwotCi0gICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3Rpb24gPSAnbGVmdCc7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBsZXQgdGlwWCA9IGxlZnRQb2ludC54IC0gMTIgLSBib3Vu
ZHMud2lkdGg7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwb2ludCA9IHJpZ2h0UG9pbnQ7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBpZiAodGlwWCA8IDAgfHwgdGlwWCArIGJvdW5kcy53aWR0
aCArIChyaWdodFBvaW50LnggLSBsZWZ0UG9pbnQueCkgLyAyIDwgc3RhdGVEaWZmLnZpZXdwb3J0
LnggKyBzdGF0ZURpZmYudmlld3BvcnQud2lkdGggLyAyKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZGlyZWN0aW9uID0gJ3JpZ2h0JzsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0aXBYID0gcmlnaHRQb2ludC54ICsgMTY7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
cG9pbnQgPSByaWdodFBvaW50OwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgICAgICAgICAgZWxlbWVudC5zdHlsZS5sZWZ0ID0gYCR7dGlwWH1weGA7Ci0KLSAgICAg
ICAgICAgICAgICAgICAgICAgIGxldCB0aXBZID0gcG9pbnQueSAtIGJvdW5kcy5oZWlnaHQgLyAy
OwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRpcFkgKyBib3VuZHMuaGVpZ2h0ID4gc2Ny
b2xsRGVsdGEgKyBzdGF0ZURpZmYudmlld3BvcnQueSArIHN0YXRlRGlmZi52aWV3cG9ydC5oZWln
aHQpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlwWSA9IHNjcm9sbERlbHRhICsgc3Rh
dGVEaWZmLnZpZXdwb3J0LnkgKyBzdGF0ZURpZmYudmlld3BvcnQuaGVpZ2h0IC0gYm91bmRzLmhl
aWdodDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aXBZIDwgMCkKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0aXBZID0gMDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1l
bnQuc3R5bGUudG9wID0gYCR7dGlwWX1weGA7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBNYWtlIGFuIGVmZm9ydCB0byBwbGFjZSB0aGUg
dG9vbHRpcCBpbiB0aGUgY2VudGVyIG9mIHRoZSB2aWV3cG9ydC4KLSAgICAgICAgICAgICAgICAg
ICAgICAgIGxldCB0aXBZID0gdXBwZXJQb2ludC55IC0gOCAtIGJvdW5kcy5oZWlnaHQ7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBwb2ludCA9IHVwcGVyUG9pbnQ7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBpZiAodGlwWSA8IHNjcm9sbERlbHRhIHx8IHRpcFkgKyBib3VuZHMuaGVpZ2h0ICsg
KGxvd2VyUG9pbnQueSAtIHVwcGVyUG9pbnQueSkgLyAyIDwgc2Nyb2xsRGVsdGEgKyBzdGF0ZURp
ZmYudmlld3BvcnQueSArIHN0YXRlRGlmZi52aWV3cG9ydC5oZWlnaHQgLyAyKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGlyZWN0aW9uID0gJ3VwJzsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0aXBZID0gbG93ZXJQb2ludC55ICsgMTY7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcG9pbnQgPSBsb3dlclBvaW50OwotICAgICAgICAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5zdHlsZS50b3AgPSBgJHt0aXBZfXB4YDsK
LQotICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHRpcFggPSBwb2ludC54IC0gYm91bmRzLndp
ZHRoIC8gMjsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aXBYICsgYm91bmRzLndpZHRo
ID4gc3RhdGVEaWZmLnZpZXdwb3J0LnggKyBzdGF0ZURpZmYudmlld3BvcnQud2lkdGgpCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdGlwWCA9IHN0YXRlRGlmZi52aWV3cG9ydC54ICsgc3Rh
dGVEaWZmLnZpZXdwb3J0LndpZHRoIC0gYm91bmRzLndpZHRoOwotICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKHRpcFggPCAwKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpcFggPSAw
OwotICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5zdHlsZS5sZWZ0ID0gYCR7dGlwWH1w
eGA7Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICBzZWxmLmFy
cm93LnNldFN0YXRlKHtkaXJlY3Rpb246IGRpcmVjdGlvbiwgbG9jYXRpb246IHBvaW50fSk7Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSwKLSAgICAgICAgfSk7Ci0gICAgICAgIHRo
aXMuYXJyb3cgPSBSRUYuY3JlYXRlUmVmKHsKLSAgICAgICAgICAgIHN0YXRlOiB7ZGlyZWN0aW9u
OiBudWxsLCBsb2NhdGlvbjogbnVsbH0sCi0gICAgICAgICAgICBvbkVsZW1lbnRNb3VudDogKGVs
ZW1lbnQpID0+IHsKLSAgICAgICAgICAgICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21v
dXNlbGVhdmUnLCAoZXZlbnQpID0+IHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQu
c3R5bGUuZGlzcGxheSA9PT0gJ25vbmUnKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICAgICAgICAgICAgICBpZiAoIWlzUG9pbnRJbkVsZW1lbnQoc2VsZi5yZWYuZWxl
bWVudCwgZXZlbnQpICYmICFpc1BvaW50SW5FbGVtZW50KGVsZW1lbnQsIGV2ZW50KSkKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHRoaXMudW5zZXQoKQotICAgICAgICAgICAgICAgIH0pOwotICAg
ICAgICAgICAgfSwKLSAgICAgICAgICAgIG9uU3RhdGVVcGRhdGU6IChlbGVtZW50LCBzdGF0ZURp
ZmYpID0+IHsKLSAgICAgICAgICAgICAgICBpZiAoIXN0YXRlRGlmZi5kaXJlY3Rpb24gfHwgIXN0
YXRlRGlmZi5sb2NhdGlvbikgewotICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnN0eWxlLmRp
c3BsYXkgPSAnbm9uZSc7Ci0gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQub25jbGljayA9IG51
bGw7Ci0gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuc3R5bGUuY3Vyc29yID0gbnVsbDsKLSAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgICAgIGlmIChzZWxmLm9uQXJyb3dDbGljaykgewotICAgICAgICAgICAgICAgICAgICBlbGVt
ZW50Lm9uY2xpY2sgPSBzZWxmLm9uQXJyb3dDbGljazsKLSAgICAgICAgICAgICAgICAgICAgZWxl
bWVudC5zdHlsZS5jdXJzb3IgPSAncG9pbnRlcic7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5vbmNsaWNrID0gbnVsbDsKLSAgICAgICAgICAg
ICAgICAgICAgZWxlbWVudC5zdHlsZS5jdXJzb3IgPSBudWxsOwotICAgICAgICAgICAgICAgIH0K
LQotICAgICAgICAgICAgICAgIGVsZW1lbnQuY2xhc3NMaXN0ID0gW2B0b29sdGlwIGFycm93LSR7
c3RhdGVEaWZmLmRpcmVjdGlvbn1gXTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAg
ICBpZiAoc3RhdGVEaWZmLmRpcmVjdGlvbiA9PSAnZG93bicpIHsKLSAgICAgICAgICAgICAgICAg
ICAgZWxlbWVudC5zdHlsZS5sZWZ0ID0gYCR7c3RhdGVEaWZmLmxvY2F0aW9uLnggLSAxNX1weGA7
Ci0gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuc3R5bGUudG9wID0gYCR7c3RhdGVEaWZmLmxv
Y2F0aW9uLnkgLSA4fXB4YDsKLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHN0YXRlRGlmZi5k
aXJlY3Rpb24gPT0gJ2xlZnQnKSB7Ci0gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuc3R5bGUu
bGVmdCA9IGAke3N0YXRlRGlmZi5sb2NhdGlvbi54IC0gMzB9cHhgOwotICAgICAgICAgICAgICAg
ICAgICBlbGVtZW50LnN0eWxlLnRvcCA9IGAke3N0YXRlRGlmZi5sb2NhdGlvbi55IC0gMTV9cHhg
OwotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoc3RhdGVEaWZmLmRpcmVjdGlvbiA9PSAncmln
aHQnKSB7Ci0gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuc3R5bGUubGVmdCA9IGAke3N0YXRl
RGlmZi5sb2NhdGlvbi54IC0gMTN9cHhgOwotICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnN0
eWxlLnRvcCA9IGAke3N0YXRlRGlmZi5sb2NhdGlvbi55IC0gMTV9cHhgOwotICAgICAgICAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuc3R5bGUubGVmdCA9IGAk
e3N0YXRlRGlmZi5sb2NhdGlvbi54IC0gMTV9cHhgOwotICAgICAgICAgICAgICAgICAgICBlbGVt
ZW50LnN0eWxlLnRvcCA9IGAke3N0YXRlRGlmZi5sb2NhdGlvbi55IC0gMTN9cHhgOwotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbGVtZW50LnN0eWxlLmRpc3BsYXkgPSBudWxs
OwotICAgICAgICAgICAgfSwKLQotICAgICAgICB9KTsKLSAgICAgICAgcmV0dXJuIGA8ZGl2IGNs
YXNzPSJ0b29sdGlwIGFycm93LXVwIiByZWY9IiR7dGhpcy5hcnJvd30iPjwvZGl2PgotICAgICAg
ICAgICAgPGRpdiBjbGFzcz0idG9vbHRpcC1jb250ZW50IiByZWY9IiR7dGhpcy5yZWZ9Ij4KLSAg
ICAgICAgICAgIDwvZGl2PmA7Ci0gICAgfQotICAgIHNldChjb250ZW50LCBwb2ludHMsIG9uQXJy
b3dDbGljayA9IG51bGwsIHZpZXdwb3J0ID0gbnVsbCkgewotICAgICAgICBpZiAoIXRoaXMucmVm
KSB7Ci0gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdDYW5ub3Qgc2V0IFRvb2xUaXAgY29udGVu
dCwgbm8gdG9vbHRpcCBvbiB0aGUgcGFnZScpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB9Ci0gICAgICAgIGlmICghcG9pbnRzIHx8IHBvaW50cy5sZW5ndGggPT0gMCkgewotICAgICAg
ICAgICAgY29uc29sZS5lcnJvcignVG9vbCB0aXBzIHJlcXVpcmUgYSBsb2NhdGlvbicpOwotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIHRoaXMub25BcnJvd0NsaWNrID0g
b25BcnJvd0NsaWNrOwotCi0gICAgICAgIGNvbnN0IHdpbmRvd1dpZHRoID0gTWF0aC5tYXgoZG9j
dW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoLCB3aW5kb3cuaW5uZXJXaWR0aCB8fCAw
KTsKLSAgICAgICAgY29uc3Qgd2luZG93SGVpZ2h0ID0gTWF0aC5tYXgoZG9jdW1lbnQuZG9jdW1l
bnRFbGVtZW50LmNsaWVudEhlaWdodCwgd2luZG93LmlubmVySGVpZ2h0IHx8IDApOwotICAgICAg
ICBpZiAoIXZpZXdwb3J0KQotICAgICAgICAgICAgdmlld3BvcnQgPSB7Ci0gICAgICAgICAgICAg
ICAgeDogMCwKLSAgICAgICAgICAgICAgICB5OiAwLAotICAgICAgICAgICAgICAgIHdpZHRoOiB3
aW5kb3dXaWR0aCwKLSAgICAgICAgICAgICAgICBoZWlnaHQ6IHdpbmRvd0hlaWdodCwKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBsZXQgcmVjdCA9IHZpZXdwb3J0
LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwotICAgICAgICAgICAgdmlld3BvcnQgPSB7Ci0gICAg
ICAgICAgICAgICAgeDogMCwKLSAgICAgICAgICAgICAgICB5OiAwLAotICAgICAgICAgICAgICAg
IHdpZHRoOiBNYXRoLm1pbih3aW5kb3dXaWR0aCwgcmVjdC53aWR0aCksCi0gICAgICAgICAgICAg
ICAgaGVpZ2h0OiBNYXRoLm1pbih3aW5kb3dIZWlnaHQsIHJlY3QuaGVpZ2h0KSwKLSAgICAgICAg
ICAgIH07Ci0gICAgICAgIH0KLSAgICAgICAgdGhpcy5yZWYuc2V0U3RhdGUoe2NvbnRlbnQ6IGNv
bnRlbnQsIHBvaW50czogcG9pbnRzLCB2aWV3cG9ydDogdmlld3BvcnR9KTsKLSAgICB9Ci0gICAg
c2V0QnlFbGVtZW50KGNvbnRlbnQsIGVsZW1lbnQsIG9wdGlvbnMsIHZpZXdwb3J0ID0gbnVsbCkg
ewotICAgICAgICBjb25zdCBib3VuZCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7
Ci0gICAgICAgIGNvbnN0IG9yaWVudGF0aW9uID0gb3B0aW9ucy5vcmllbnRhdGlvbiA/IG9wdGlv
bnMub3JpZW50YXRpb24gOiB0aGlzLlZFUlRJQ0FMOwotICAgICAgICBjb25zdCBvbkFycm93Q2xp
Y2sgPSBvcHRpb25zLm9uQXJyb3dDbGljayA/IG9wdGlvbnMub25BcnJvd0NsaWNrIDogbnVsbDsK
LQotICAgICAgICAvLyBNYW5hZ2UgdGhlIHNjcm9sbCBkZWx0YQotICAgICAgICBsZXQgc2Nyb2xs
RGVsdGEgPSAwOwotICAgICAgICBpZiAod2luZG93LmdldENvbXB1dGVkU3R5bGUoZWxlbWVudC5v
ZmZzZXRQYXJlbnQpLmdldFByb3BlcnR5VmFsdWUoJ3Bvc2l0aW9uJykgPT0gJ2ZpeGVkJykKLSAg
ICAgICAgICAgIHNjcm9sbERlbHRhID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRv
cCB8fCBkb2N1bWVudC5ib2R5LnNjcm9sbFRvcDsKLQotICAgICAgICBpZiAob3B0aW9ucy5vcmll
bnRhdGlvbikgewotICAgICAgICAgICAgdGhpcy5zZXQoY29udGVudCwgWwotICAgICAgICAgICAg
ICAgIHt4OiBib3VuZC5yaWdodCwgeTogKGJvdW5kLnRvcCArIGJvdW5kLmJvdHRvbSkgLyAyICsg
c2Nyb2xsRGVsdGF9LAotICAgICAgICAgICAgICAgIHt4OiBib3VuZC5sZWZ0LCB5OiAoYm91bmQu
dG9wICsgYm91bmQuYm90dG9tKSAvIDIgKyBzY3JvbGxEZWx0YX0sCi0gICAgICAgICAgICBdLCBv
bkFycm93Q2xpY2ssIHZpZXdwb3J0KTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHRo
aXMuc2V0KGNvbnRlbnQsIFsKLSAgICAgICAgICAgICAgICB7eDogKGJvdW5kLnJpZ2h0ICsgYm91
bmQubGVmdCkgLyAyLCB5OiBib3VuZC50b3AgKyBzY3JvbGxEZWx0YX0sCi0gICAgICAgICAgICAg
ICAge3g6IChib3VuZC5yaWdodCArIGJvdW5kLmxlZnQpIC8gMiwgeTogYm91bmQuYm90dG9tICsg
c2Nyb2xsRGVsdGF9LAotICAgICAgICAgICAgXSwgb25BcnJvd0NsaWNrLCB2aWV3cG9ydCk7Ci0g
ICAgICAgIH0KLSAgICB9Ci0gICAgdW5zZXQoKSB7Ci0gICAgICAgIGlmICh0aGlzLnJlZikKLSAg
ICAgICAgICAgIHRoaXMucmVmLnNldFN0YXRlKHtjb250ZW50OiBudWxsLCBwb2ludHM6IG51bGx9
KTsKLSAgICAgICAgaWYgKHRoaXMuYXJyb3cpCi0gICAgICAgICAgICB0aGlzLmFycm93LnNldFN0
YXRlKHtkaXJlY3Rpb246IG51bGwsIHBvaW50czogbnVsbH0pOwotICAgIH0KLSAgICBpc0luKHBv
aW50KSB7Ci0gICAgICAgIHJldHVybiBpc1BvaW50SW5FbGVtZW50KHRoaXMucmVmLmVsZW1lbnQs
IHBvaW50KSB8fCBpc1BvaW50SW5FbGVtZW50KHRoaXMuYXJyb3cuZWxlbWVudCwgcG9pbnQpOwot
ICAgIH0KLX0KLQotY29uc3QgVG9vbFRpcCA9IG5ldyBfVG9vbFRpcCgpOwotCi1leHBvcnQge1Rv
b2xUaXB9OwpJbmRleDogVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9zdGF0aWMv
bGlicmFyeS9jc3MvZG9jcy55YW1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL3Jlc3VsdHNkYnB5L3Jl
c3VsdHNkYnB5L3ZpZXcvc3RhdGljL2xpYnJhcnkvY3NzL2RvY3MueWFtbAkocmV2aXNpb24gMjY1
NTMxKQorKysgVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9zdGF0aWMvbGlicmFy
eS9jc3MvZG9jcy55YW1sCShub25leGlzdGVudCkKQEAgLTEsMTUxMiArMCwwIEBACi0jIENvcHly
aWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0j
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMg
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
LSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UgotIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUgotIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotIyBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0jIEZvcm1hdDoKLSMgLQotIyAgICAgdGl0
bGU6IG1haW5fbGV2ZWxfdGl0bGUKLSMgICAgIHN1YnM6Ci0jICAgICAgICAgLQotIyAgICAgICAg
ICAgICB0aXRsZTogMm5kX2xldmVsX3RpdGxlCi0jICAgICAgICAgICAgIGV4YW1wbGVzOgotIyAg
ICAgICAgICAgICAgICAgLQotIyAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBleGFt
cGxlX2Rlc2NpcHRpb24KLSMgICAgICAgICAgICAgICAgICAgICBodG1sOiBleGFtcGxlX2h0bWwK
LS0KLSAgICB0aXRsZTogVHlwb2dyYXBoeQotICAgIHN1YnM6Ci0gICAgICAgIC0KLSAgICAgICAg
ICAgIHRpdGxlOiBIZWFkaW5ncwotICAgICAgICAgICAgZXhhbXBsZXM6Ci0gICAgICAgICAgICAg
ICAgLQotICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogfgotICAgICAgICAgICAgICAg
ICAgICBodG1sOiB8LQotICAgICAgICAgICAgICAgICAgICAgICAgPGgxPlRoaXMgaXMgSDE8L2gx
PgotICAgICAgICAgICAgICAgICAgICAgICAgPGgyPlRoaXMgaXMgSDI8L2gyPgotICAgICAgICAg
ICAgICAgICAgICAgICAgPGgzPlRoaXMgaXMgSDM8L2gzPgotICAgICAgICAgICAgICAgICAgICAg
ICAgPGg0PlRoaXMgaXMgSDQ8L2g0PgotICAgICAgICAtCi0gICAgICAgICAgICB0aXRsZTogVGV4
dAotICAgICAgICAgICAgZXhhbXBsZXM6Ci0gICAgICAgICAgICAgICAgLQotICAgICAgICAgICAg
ICAgICAgICBkZXNjcmlwdGlvbjogfC0KLSAgICAgICAgICAgICAgICAgICAgICAgIFVzZSBjbGFz
cyAidGV4dCIgYWxvbmcgd2l0aCBkaWZmZXJlbnQgc2l6ZSBjbGFzcyB0byBjb250cm9sIHRoZSBm
b250IHNpemUuCi0gICAgICAgICAgICAgICAgICAgIGh0bWw6IHwtCi0gICAgICAgICAgICAgICAg
ICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0Ij5EZWZhdWx0PC9kaXY+Ci0gICAgICAgICAgICAgICAg
ICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0IGh1Z2UiPlRoaXMgaXMgSHVnZTwvZGl2PgotICAgICAg
ICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dCBsYXJnZSI+VGhpcyBpcyBMYXJnZTwv
ZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dCBtZWRpdW0iPlRo
aXMgaXMgbWVkaXVtPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0
ZXh0IHNtYWxsIj5UaGlzIGlzIHNtYWxsPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8
ZGl2IGNsYXNzPSJ0ZXh0IHRpbnkiPlRoaXMgaXMgdGlueTwvZGl2PgotICAgICAgICAtCi0gICAg
ICAgICAgICB0aXRsZTogIlRleHQgYmxvY2siCi0gICAgICAgICAgICBleGFtcGxlczoKLSAgICAg
ICAgICAgICAgICAtCi0gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB8LQotICAgICAg
ICAgICAgICAgICAgICAgICAgVXNlIGNsYXNzICJ0ZXh0IiBhbG9uZyB3aXRoICJibG9jayIgdG8g
bWFrZSBpbmxpbmUtYmxvY2sgdGV4dCBibG9ja3MuCi0gICAgICAgICAgICAgICAgICAgIGh0bWw6
IHwtCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0IGJsb2NrIj4KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0IHRpbnkiPmlNYWMgMjci
IChMYXRlIDIwMTIpPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFz
cz0idGV4dCBzbWFsbCI+aU1hYyAxMywyPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8
L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQgYmxvY2siPgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQgdGlueSI+aU1hYyAy
NyIgKExhdGUgMjAxMyk8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNs
YXNzPSJ0ZXh0IHNtYWxsIj5pTWFjIDE0LDI8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAg
IDwvZGl2PgotICAgICAgICAtCi0gICAgICAgICAgICB0aXRsZTogUXVvdGUKLSAgICAgICAgICAg
IGV4YW1wbGVzOgotICAgICAgICAgICAgICAgIC0KLSAgICAgICAgICAgICAgICAgICAgZGVzY3Jp
cHRpb246IH4KLSAgICAgICAgICAgICAgICAgICAgaHRtbDogfC0KLSAgICAgICAgICAgICAgICAg
ICAgICAgIDxwcmU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgSSBhbSBhIHF1b3RlCi0g
ICAgICAgICAgICAgICAgICAgICAgICA8L3ByZT4KLS0KLSAgICB0aXRsZTogTGF5b3V0Ci0gICAg
c3ViczoKLSAgICAgICAgLQotICAgICAgICAgICAgdGl0bGU6IH4KLSAgICAgICAgICAgIGV4YW1w
bGVzOgotICAgICAgICAgICAgICAgIC0KLSAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246
IH4KLSAgICAgICAgICAgICAgICAgICAgaHRtbDogfC0KLSAgICAgICAgICAgICAgICAgICAgICAg
IDxkaXYgY2xhc3M9InJvdyI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFz
cz0iY29sLTEyIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0i
cGxhY2Vob2xkZXIgZGltbWVyIHRpbnkiPjxwIGNsYXNzPSJsb2FkZXIiPmNvbC0xMjwvcD48L2Rp
dj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAg
ICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93Ij4K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtNiI+Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBsYWNlaG9sZGVyIGRpbW1lciB0
aW55Ij48cCBjbGFzcz0ibG9hZGVyIj5jb2wtNjwvcD48L2Rpdj4KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNz
PSJjb2wtNiI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBs
YWNlaG9sZGVyIGRpbW1lciB0aW55Ij48cCBjbGFzcz0ibG9hZGVyIj5jb2wtNjwvcD48L2Rpdj4K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAg
ICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93Ij4KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtNCI+Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBsYWNlaG9sZGVyIGRpbW1lciB0aW55
Ij48cCBjbGFzcz0ibG9hZGVyIj5jb2wtNDwvcD48L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJj
b2wtOCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBsYWNl
aG9sZGVyIGRpbW1lciB0aW55Ij48cCBjbGFzcz0ibG9hZGVyIj5jb2wtODwvcD48L2Rpdj4KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAg
IDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93Ij4KLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtMiI+Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBsYWNlaG9sZGVyIGRpbW1lciB0aW55Ij48
cCBjbGFzcz0ibG9hZGVyIj5jb2wtMjwvcD48L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wt
MiI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBsYWNlaG9s
ZGVyIGRpbW1lciB0aW55Ij48cCBjbGFzcz0ibG9hZGVyIj5jb2wtMjwvcD48L2Rpdj4KLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA8ZGl2IGNsYXNzPSJjb2wtOCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxk
aXYgY2xhc3M9InBsYWNlaG9sZGVyIGRpbW1lciB0aW55Ij48cCBjbGFzcz0ibG9hZGVyIj5jb2wt
ODwvcD48L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAg
ICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFz
cz0icm93Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtMSI+
PGRpdiBjbGFzcz0icGxhY2Vob2xkZXIgZGltbWVyIHRpbnkiPjxwIGNsYXNzPSJsb2FkZXIiPmNv
bC0xPC9wPjwvZGl2PjwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xh
c3M9ImNvbC0xIj48ZGl2IGNsYXNzPSJwbGFjZWhvbGRlciBkaW1tZXIgdGlueSI+PHAgY2xhc3M9
ImxvYWRlciI+Y29sLTE8L3A+PC9kaXY+PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPGRpdiBjbGFzcz0iY29sLTEiPjxkaXYgY2xhc3M9InBsYWNlaG9sZGVyIGRpbW1lciB0aW55
Ij48cCBjbGFzcz0ibG9hZGVyIj5jb2wtMTwvcD48L2Rpdj48L2Rpdj4KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtMSI+PGRpdiBjbGFzcz0icGxhY2Vob2xkZXIg
ZGltbWVyIHRpbnkiPjxwIGNsYXNzPSJsb2FkZXIiPmNvbC0xPC9wPjwvZGl2PjwvZGl2PgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC0xIj48ZGl2IGNsYXNzPSJw
bGFjZWhvbGRlciBkaW1tZXIgdGlueSI+PHAgY2xhc3M9ImxvYWRlciI+Y29sLTE8L3A+PC9kaXY+
PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLTEiPjxk
aXYgY2xhc3M9InBsYWNlaG9sZGVyIGRpbW1lciB0aW55Ij48cCBjbGFzcz0ibG9hZGVyIj5jb2wt
MTwvcD48L2Rpdj48L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNz
PSJjb2wtMSI+PGRpdiBjbGFzcz0icGxhY2Vob2xkZXIgZGltbWVyIHRpbnkiPjxwIGNsYXNzPSJs
b2FkZXIiPmNvbC0xPC9wPjwvZGl2PjwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDxkaXYgY2xhc3M9ImNvbC0xIj48ZGl2IGNsYXNzPSJwbGFjZWhvbGRlciBkaW1tZXIgdGlueSI+
PHAgY2xhc3M9ImxvYWRlciI+Y29sLTE8L3A+PC9kaXY+PC9kaXY+Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLTEiPjxkaXYgY2xhc3M9InBsYWNlaG9sZGVyIGRp
bW1lciB0aW55Ij48cCBjbGFzcz0ibG9hZGVyIj5jb2wtMTwvcD48L2Rpdj48L2Rpdj4KLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtMSI+PGRpdiBjbGFzcz0icGxh
Y2Vob2xkZXIgZGltbWVyIHRpbnkiPjxwIGNsYXNzPSJsb2FkZXIiPmNvbC0xPC9wPjwvZGl2Pjwv
ZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC0xIj48ZGl2
IGNsYXNzPSJwbGFjZWhvbGRlciBkaW1tZXIgdGlueSI+PHAgY2xhc3M9ImxvYWRlciI+Y29sLTE8
L3A+PC9kaXY+PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0i
Y29sLTEiPjxkaXYgY2xhc3M9InBsYWNlaG9sZGVyIGRpbW1lciB0aW55Ij48cCBjbGFzcz0ibG9h
ZGVyIj5jb2wtMTwvcD48L2Rpdj48L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2
PgotCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ciPgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1zLTEyIj4KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icGxhY2Vob2xkZXIgZGltbWVyIHRpbnkiPjxw
IGNsYXNzPSJsb2FkZXIiPmNvbC1zLTEyPC9wPjwvZGl2PgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAg
ICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ciPgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDxkaXYgY2xhc3M9ImNvbC1zLTYiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA8ZGl2IGNsYXNzPSJwbGFjZWhvbGRlciBkaW1tZXIgdGlueSI+PHAgY2xhc3M9ImxvYWRlciI+
Y29sLXMtNjwvcD48L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtcy02Ij4KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icGxhY2Vob2xkZXIgZGltbWVyIHRp
bnkiPjxwIGNsYXNzPSJsb2FkZXIiPmNvbC1zLTY8L3A+PC9kaXY+Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAg
ICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdyI+Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPGRpdiBjbGFzcz0iY29sLXMtNCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDxkaXYgY2xhc3M9InBsYWNlaG9sZGVyIGRpbW1lciB0aW55Ij48cCBjbGFzcz0ibG9h
ZGVyIj5jb2wtcy00PC9wPjwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2
PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1zLTgiPgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwbGFjZWhvbGRlciBkaW1t
ZXIgdGlueSI+PHAgY2xhc3M9ImxvYWRlciI+Y29sLXMtODwvcD48L2Rpdj4KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pgot
ICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93Ij4KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtcy0yIj4KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPGRpdiBjbGFzcz0icGxhY2Vob2xkZXIgZGltbWVyIHRpbnkiPjxwIGNsYXNz
PSJsb2FkZXIiPmNvbC1zLTI8L3A+PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLXMtMiI+
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBsYWNlaG9sZGVy
IGRpbW1lciB0aW55Ij48cCBjbGFzcz0ibG9hZGVyIj5jb2wtcy0yPC9wPjwvZGl2PgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDxkaXYgY2xhc3M9ImNvbC1zLTgiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8
ZGl2IGNsYXNzPSJwbGFjZWhvbGRlciBkaW1tZXIgdGlueSI+PHAgY2xhc3M9ImxvYWRlciI+Y29s
LXMtODwvcD48L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAg
ICAgICAgICAgICAgICAgICAgIDwvZGl2PgotLQotICAgIHRpdGxlOiBFbGVtZW50cwotICAgIHN1
YnM6Ci0gICAgICAgIC0KLSAgICAgICAgICAgIHRpdGxlOiBUb3BiYXIKLSAgICAgICAgICAgIGV4
YW1wbGVzOgotICAgICAgICAgICAgICAgIC0KLSAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRp
b246IH4KLSAgICAgICAgICAgICAgICAgICAgaHRtbDogfC0KLSAgICAgICAgICAgICAgICAgICAg
ICAgIDxkaXYgY2xhc3M9InRvcGJhciI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRp
diBjbGFzcz0idGl0bGUiPk15IEFwcDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDxkaXYgY2xhc3M9ImFjdGlvbnMiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8
ZGl2IGNsYXNzPSJsaXN0Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxk
aXYgY2xhc3M9Iml0ZW0iPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDxhPmxpbmsgMTwvYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2
PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaXRlbSI+
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE+bGluayAyPC9hPgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpdGVtIj4KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA8YT5saW5rIDM8L2E+Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAg
ICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgLQotICAgICAgICAgICAgdGl0bGU6IFNlY3Rp
b24KLSAgICAgICAgICAgIGV4YW1wbGVzOgotICAgICAgICAgICAgICAgIC0KLSAgICAgICAgICAg
ICAgICAgICAgZGVzY3JpcHRpb246IH4KLSAgICAgICAgICAgICAgICAgICAgaHRtbDogfC0KLSAg
ICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiPgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24iPgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkZXIiPgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGUiPgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFRpdGxlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xh
c3M9ImFjdGlvbnMiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxk
aXYgY2xhc3M9Imxpc3QiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA8ZGl2IGNsYXNzPSJpdGVtIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGFjdGlvbiAxCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA8ZGl2IGNsYXNzPSJpdGVtIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGFjdGlvbiAyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDxwPkxvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0
ZXR1ciBhZGlwaXNjaW5nIGVsaXQsIHNlZCBkbyBlaXVzbW9kIHRlbXBvciBpbmNpZGlkdW50IHV0
IGxhYm9yZSBldCBkb2xvcmUgbWFnbmEgYWxpcXVhLiBVdCBlbmltIGFkIG1pbmltIHZlbmlhbSwg
cXVpcyBub3N0cnVkIGV4ZXJjaXRhdGlvbiB1bGxhbWNvIGxhYm9yaXMgbmlzaSB1dCBhbGlxdWlw
IGV4IGVhIGNvbW1vZG8gY29uc2VxdWF0LiBEdWlzIGF1dGUgaXJ1cmUgZG9sb3IgaW4gcmVwcmVo
ZW5kZXJpdCBpbiB2b2x1cHRhdGUgdmVsaXQgZXNzZSBjaWxsdW0gZG9sb3JlIGV1IGZ1Z2lhdCBu
dWxsYSBwYXJpYXR1ci4gRXhjZXB0ZXVyIHNpbnQgb2NjYWVjYXQgY3VwaWRhdGF0IG5vbiBwcm9p
ZGVudCwgc3VudCBpbiBjdWxwYSBxdWkgb2ZmaWNpYSBkZXNlcnVudCBtb2xsaXQgYW5pbSBpZCBl
c3QgbGFib3J1bS48L3A+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY3Rpb25zIj4KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImJ1dHRvbiI+
QnV0dG9uIDE8L2J1dHRvbj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxi
dXR0b24gY2xhc3M9ImJ1dHRvbiI+QnV0dG9uIDI8L2J1dHRvbj4KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+
Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAtCi0gICAg
ICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB8LQotICAgICAgICAgICAgICAgICAgICAgICAg
VXNlICJhcnRpY2xlIiBtb2RpZmllciB0byBnZXQgcmlkIG9mIHRoZSBib3JkZXI6Ci0gICAgICAg
ICAgICAgICAgICAgIGh0bWw6IHwtCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNz
PSJjb250ZW50Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0
aW9uIGFydGljbGUiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNz
PSJoZWFkZXIiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFz
cz0idGl0bGUiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxl
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbnMiPgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Imxpc3QiPgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpdGVtIj4K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbiAx
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpdGVt
Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlv
biAyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNs
YXNzPSJjb250ZW50Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPkxv
cmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBhZGlwaXNjaW5nIGVsaXQsIHNl
ZCBkbyBlaXVzbW9kIHRlbXBvciBpbmNpZGlkdW50IHV0IGxhYm9yZSBldCBkb2xvcmUgbWFnbmEg
YWxpcXVhLiBVdCBlbmltIGFkIG1pbmltIHZlbmlhbSwgcXVpcyBub3N0cnVkIGV4ZXJjaXRhdGlv
biB1bGxhbWNvIGxhYm9yaXMgbmlzaSB1dCBhbGlxdWlwIGV4IGVhIGNvbW1vZG8gY29uc2VxdWF0
LiBEdWlzIGF1dGUgaXJ1cmUgZG9sb3IgaW4gcmVwcmVoZW5kZXJpdCBpbiB2b2x1cHRhdGUgdmVs
aXQgZXNzZSBjaWxsdW0gZG9sb3JlIGV1IGZ1Z2lhdCBudWxsYSBwYXJpYXR1ci4gRXhjZXB0ZXVy
IHNpbnQgb2NjYWVjYXQgY3VwaWRhdGF0IG5vbiBwcm9pZGVudCwgc3VudCBpbiBjdWxwYSBxdWkg
b2ZmaWNpYSBkZXNlcnVudCBtb2xsaXQgYW5pbSBpZCBlc3QgbGFib3J1bS48L3A+Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA8ZGl2IGNsYXNzPSJhY3Rpb25zIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDxidXR0b24gY2xhc3M9ImJ1dHRvbiI+QnV0dG9uIDE8L2J1dHRvbj4KLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImJ1dHRvbiI+QnV0
dG9uIDI8L2J1dHRvbj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAg
ICA8L2Rpdj4KLSAgICAgICAgLQotICAgICAgICAgICAgdGl0bGU6IFBsYWNlaG9sZGVyCi0gICAg
ICAgICAgICBleGFtcGxlczoKLSAgICAgICAgICAgICAgICAtCi0gICAgICAgICAgICAgICAgICAg
IGRlc2NyaXB0aW9uOiB+Ci0gICAgICAgICAgICAgICAgICAgIGh0bWw6IHwtCi0gICAgICAgICAg
ICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwbGFjZWhvbGRlciI+IDxwIGNsYXNzPSJsb2FkZXIi
PnBsYWNlaG9sZGVyPC9wPiA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xh
c3M9InBsYWNlaG9sZGVyIHNtYWxsIj48cCBjbGFzcz0ibG9hZGVyIj5wbGFjZWhvbGRlciBzbWFs
bDwvcD4gPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwbGFjZWhv
bGRlciB0aW55Ij48cCBjbGFzcz0ibG9hZGVyIj5wbGFjZWhvbGRlciB0aW55PC9wPjwvZGl2Pgot
ICAgICAgICAgICAgICAgIC0KLSAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHwtCi0g
ICAgICAgICAgICAgICAgICAgICAgICBVc2UgImRpbW1lciIgbW9kaWZpZXIgdG8gbWFrZSB0aGUg
cGxhY2Vob2xkZXIgZGFyawotICAgICAgICAgICAgICAgICAgICBodG1sOiB8LQotICAgICAgICAg
ICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icGxhY2Vob2xkZXIgZGltbWVyIj4gPHAgY2xhc3M9
ImxvYWRlciI+cGxhY2Vob2xkZXI8L3A+IDwvZGl2PgotICAgICAgICAtCi0gICAgICAgICAgICB0
aXRsZTogTG9hZGVyCi0gICAgICAgICAgICBleGFtcGxlczoKLSAgICAgICAgICAgICAgICAtCi0g
ICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBTaXplCi0gICAgICAgICAgICAgICAgICAg
IGh0bWw6IHwtCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsb2FkZXIiPgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNwaW5uZXIgaHVnZSI+Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPGRpdiBjbGFzcz0ic3Bpbm5lciBsYXJnZSI+Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3Bp
bm5lciI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3Bpbm5lciBzbWFsbCI+Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBj
bGFzcz0ic3Bpbm5lciB0aW55Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4K
LSAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgIC0KLSAgICAg
ICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IENvbG9yCi0gICAgICAgICAgICAgICAgICAgIGh0
bWw6IHwtCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsb2FkZXIiPgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNwaW5uZXIiPgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxk
aXYgY2xhc3M9InNwaW5uZXIgYmx1ZSI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9k
aXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3Bpbm5lciBwdXJw
bGUiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNwaW5uZXIgZ3JlZW4iPgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xh
c3M9InNwaW5uZXIgb3JhbmdlIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzcGlubmVyIHJlZCI+Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAg
ICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAtCi0gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0
aW9uOgotICAgICAgICAgICAgICAgICAgICAgICAgV2l0aCBQbGFjZWhvbGRlcgotICAgICAgICAg
ICAgICAgICAgICBodG1sOiB8LQotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0i
cGxhY2Vob2xkZXIgZGltbWVyIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNs
YXNzPSJsb2FkZXIiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNz
PSJzcGlubmVyIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8
L2Rpdj4KLSAgICAgICAgLQotICAgICAgICAgICAgdGl0bGU6IFByb2dyZXNzIGJhcgotICAgICAg
ICAgICAgZXhhbXBsZXM6Ci0gICAgICAgICAgICAgICAgLQotICAgICAgICAgICAgICAgICAgICBk
ZXNjcmlwdGlvbjogRGlmZmVyZW50IGNvbG9ycyB3aXRoIG1peGluCi0gICAgICAgICAgICAgICAg
ICAgIGh0bWw6IHwtCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByb2dyZXNzLWJhci1jb250YWluZXIiPgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcm9ncmVzcy1iYXIiIHN0
eWxlPSJ3aWR0aDoyNSUiPjI1JTwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwv
ZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAg
ICAgICA8aHI+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByb2dyZXNzLWJhci1jb250YWluZXIiPgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcm9ncmVzcy1iYXIgc3VjY2Vz
cyIgc3R5bGU9IndpZHRoOjUwJSI+NTAlPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAg
ICAgICAgICAgIDxocj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJvZ3Jlc3MtYmFyLWNvbnRhaW5lciI+Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByb2dyZXNzLWJhciBm
YWlsZWQiIHN0eWxlPSJ3aWR0aDo3NSUiPjc1JTwvZGl2PgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAg
ICAgICAgICAgICAgICA8aHI+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByb2dyZXNzLWJhci1jb250YWluZXIi
PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcm9ncmVzcy1i
YXIgZXJyb3IiIHN0eWxlPSJ3aWR0aDoxMDAlIj4xMDAlPC9kaXY+Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAg
ICAgICAgICAgICAtCi0gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBNdWxpdCBiYXIK
LSAgICAgICAgICAgICAgICAgICAgaHRtbDogfC0KLSAgICAgICAgICAgICAgICAgICAgICAgIDxk
aXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByb2dyZXNz
LWJhci1jb250YWluZXIiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRp
diBjbGFzcz0icHJvZ3Jlc3MtYmFyIiBzdHlsZT0id2lkdGg6MjUlIj4yNSU8L2Rpdj4KLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByb2dyZXNzLWJhciBl
cnJvciIgc3R5bGU9IndpZHRoOjc1JSI+NzUlPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAg
IC0KLSAgICAgICAgICAgIHRpdGxlOiBMaXN0Ci0gICAgICAgICAgICBleGFtcGxlczoKLSAgICAg
ICAgICAgICAgICAtCi0gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB+Ci0gICAgICAg
ICAgICAgICAgICAgIGh0bWw6IHwtCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNz
PSJsaXN0Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpdGVtIj5p
dGVtIDE8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpdGVt
Ij5pdGVtIDI8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJk
aXZpZGVyIj48L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJp
dGVtIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGlzdCI+
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpdGVtIj5p
dGVtIDEgbHYyPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2
IGNsYXNzPSJpdGVtIj5pdGVtIDIgbHYyPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA8ZGl2IGNsYXNzPSJkaXZpZGVyIj48L2Rpdj4KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Iml0ZW0iPgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Imxpc3QiPgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpdGVtIj5pdGVtIDEgbHYz
PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYg
Y2xhc3M9Iml0ZW0iPml0ZW0gMiBsdjM8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2
PgotICAgICAgICAtCi0gICAgICAgICAgICB0aXRsZTogU2lkZWJhcgotICAgICAgICAgICAgZXhh
bXBsZXM6Ci0gICAgICAgICAgICAgICAgLQotICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlv
bjogfgotICAgICAgICAgICAgICAgICAgICBodG1sOiB8LQotICAgICAgICAgICAgICAgICAgICAg
ICAgPGRpdiBjbGFzcz0ic2lkZWJhciI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRp
diBjbGFzcz0iaGVhZGVyIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBj
bGFzcz0idGl0bGUiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAg
ICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1haW4iPgotICAgICAgICAgICAgICAgICAg
ICAgICAgPC9kaXY+Ci0gICAgICAgIC0KLSAgICAgICAgICAgIHRpdGxlOiBEcmF3ZXIKLSAgICAg
ICAgICAgIGV4YW1wbGVzOgotICAgICAgICAgICAgICAgIC0KLSAgICAgICAgICAgICAgICAgICAg
ZGVzY3JpcHRpb246IH4KLSAgICAgICAgICAgICAgICAgICAgaHRtbDogfC0KLSAgICAgICAgICAg
ICAgICAgICAgICAgIDxkaXYgaWQ9ImJvdHRvbS1kcmF3ZXIiIGNsYXNzPSJkcmF3ZXIiPgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImhlYWRlciI+Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbnMiPgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iamF2YXNjcmlwdDp2b2lkKDApIiBvbmNs
aWNrPSJjbG9zZURyYXdlckZhY3RvcnkoJ2JvdHRvbS1kcmF3ZXInKSgpIj5DbG9zZTwvYT4KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAg
ICAgICAgICAgICAgICAgIDxkaXYgaWQ9ImxlZnQtZHJhd2VyIiBjbGFzcz0iZHJhd2VyIGxlZnQi
PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImhlYWRlciI+Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbnMiPgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iamF2YXNjcmlwdDp2b2lkKDAp
IiBvbmNsaWNrPSJjbG9zZURyYXdlckZhY3RvcnkoJ2xlZnQtZHJhd2VyJykoKSI+Q2xvc2U8L2E+
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAg
ICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJyaWdodC1kcmF3ZXIiIGNsYXNzPSJkcmF3ZXIg
cmlnaHQiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImhlYWRlciI+
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbnMiPgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iamF2YXNjcmlwdDp2
b2lkKDApIiBvbmNsaWNrPSJjbG9zZURyYXdlckZhY3RvcnkoJ3JpZ2h0LWRyYXdlcicpKCkiPkNs
b3NlPC9hPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2
PgotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0ibGVmdC1kcmF3ZXItdW5kZXItdG9v
bGJhciIgY2xhc3M9ImRyYXdlciBsZWZ0IHVuZGVyLXRvcGJhci13aXRoLWFjdGlvbnMiPgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImhlYWRlciI+Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbnMiPgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iamF2YXNjcmlwdDp2b2lkKDApIiBvbmNs
aWNrPSJjbG9zZURyYXdlckZhY3RvcnkoJ2xlZnQtZHJhd2VyLXVuZGVyLXRvb2xiYXInKSgpO2Ns
b3NlVG9wYmFyKCkiPkNsb3NlPC9hPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8
L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAg
ICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJidXR0b24iIG9uY2xpY2s9Im9wZW5E
cmF3ZXJGYWN0b3J5KCdib3R0b20tZHJhd2VyJykoKSI+T3BlbiBib3R0b208L2J1dHRvbj4KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJidXR0b24iIG9uY2xpY2s9
Im9wZW5EcmF3ZXJGYWN0b3J5KCdsZWZ0LWRyYXdlcicpKCkiPk9wZW4gbGVmdDwvYnV0dG9uPgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImJ1dHRvbiIgb25jbGlj
az0ib3BlbkRyYXdlckZhY3RvcnkoJ3JpZ2h0LWRyYXdlcicpKCkiPk9wZW4gcmlnaHQ8L2J1dHRv
bj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJidXR0b24iIG9u
Y2xpY2s9Im9wZW5EcmF3ZXJGYWN0b3J5KCdsZWZ0LWRyYXdlci11bmRlci10b29sYmFyJykoKTtv
cGVuVG9wYmFyKCkiPk9wZW4gbGVmdCB1bmRlciB0b3BiYXI8L2J1dHRvbj4KLSAgICAgICAgICAg
ICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgPHNjcmlwdD4KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjbG9zZURyYXdlckZhY3RvcnkgPSAoaWQp
ID0+IChlKSA9PiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCkuY2xhc3NMaXN0LnJlbW92ZSgi
ZGlzcGxheSIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9wZW5EcmF3ZXJG
YWN0b3J5ID0gKGlkKSA9PiAoZSkgPT4gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpLmNsYXNz
TGlzdC5hZGQoImRpc3BsYXkiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBj
bG9zZVRvcGJhciA9ICgpID0+IHsgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRvcGJhciIpLnN0
eWxlLmRpc3BsYXkgPSAibm9uZSIgfTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBvcGVuVG9wYmFyID0gKCkgPT4gewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgidG9wYmFyIikuc3R5bGUuZGlzcGxheSA9ICJmbGV4IjsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwotICAgICAgICAgICAgICAgICAgICAgICAg
PC9zY3JpcHQ+Ci0gICAgICAgIC0KLSAgICAgICAgICAgIHRpdGxlOiBUYWJsZQotICAgICAgICAg
ICAgZXhhbXBsZXM6Ci0gICAgICAgICAgICAgICAgLQotICAgICAgICAgICAgICAgICAgICBkZXNj
cmlwdGlvbjogfgotICAgICAgICAgICAgICAgICAgICBodG1sOiB8LQotICAgICAgICAgICAgICAg
ICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPHRoZWFkPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+dGl0bGUgMTwvdGg+Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+dGl0bGUgMjwvdGg+Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8dGg+dGl0bGUgMzwvdGg+Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA8dGg+dGl0bGUgNDwvdGg+Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDwvdHI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aGVhZD4K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHk+Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDx0cj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0
ZD5jb2wgMTwvdGQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+Y29s
IDI8L3RkPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPmNvbCAzPC90
ZD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5jb2wgNDwvdGQ+Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDx0cj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0
ZD5jb2wgMTwvdGQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+Y29s
IDI8L3RkPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPmNvbCAzPC90
ZD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5jb2wgNDwvdGQ+Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDx0cj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0
ZD5jb2wgMTwvdGQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+Y29s
IDI8L3RkPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPmNvbCAzPC90
ZD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5jb2wgNDwvdGQ+Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDx0cj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0
ZD5jb2wgMTwvdGQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+Y29s
IDI8L3RkPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPmNvbCAzPC90
ZD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5jb2wgNDwvdGQ+Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPC90Ym9keT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+Ci0gICAg
ICAgICAgICAgICAgLQotICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogZnVsbC13aWR0
aAotICAgICAgICAgICAgICAgICAgICBodG1sOiB8LQotICAgICAgICAgICAgICAgICAgICAgICAg
PHRhYmxlIGNsYXNzPSJ0YWJsZSBmdWxsLXdpZHRoIj4KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA8dGhlYWQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD50aXRsZSAxPC90aD4KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD50aXRsZSAyPC90aD4KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD50aXRsZSAzPC90aD4KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDx0aD50aXRsZSA0PC90aD4KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPC90cj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoZWFk
PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT4KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPHRyPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PHRkPmNvbCAxPC90ZD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5j
b2wgMjwvdGQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+Y29sIDM8
L3RkPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPmNvbCA0PC90ZD4K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPHRyPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PHRkPmNvbCAxPC90ZD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5j
b2wgMjwvdGQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+Y29sIDM8
L3RkPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPmNvbCA0PC90ZD4K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPHRyPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PHRkPmNvbCAxPC90ZD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5j
b2wgMjwvdGQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+Y29sIDM8
L3RkPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPmNvbCA0PC90ZD4K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPHRyPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PHRkPmNvbCAxPC90ZD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5j
b2wgMjwvdGQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+Y29sIDM8
L3RkPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPmNvbCA0PC90ZD4K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA8L3Rib2R5PgotICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KLSAg
ICAgICAgICAgICAgICAtCi0gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBTdHJpcHBl
ZAotICAgICAgICAgICAgICAgICAgICBodG1sOiB8LQotICAgICAgICAgICAgICAgICAgICAgICAg
PHRhYmxlIGNsYXNzPSJ0YWJsZSBmdWxsLXdpZHRoIHN0cmlwcGVkIj4KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA8dGhlYWQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0
cj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD50aXRsZSAxPC90aD4K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD50aXRsZSAyPC90aD4KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD50aXRsZSAzPC90aD4KLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD50aXRsZSA0PC90aD4KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA8L3RoZWFkPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT4KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPHRkPmNvbCAxPC90ZD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDx0ZD5jb2wgMjwvdGQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8
dGQ+Y29sIDM8L3RkPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPmNv
bCA0PC90ZD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPHRkPmNvbCAxPC90ZD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDx0ZD5jb2wgMjwvdGQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8
dGQ+Y29sIDM8L3RkPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPmNv
bCA0PC90ZD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPHRkPmNvbCAxPC90ZD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDx0ZD5jb2wgMjwvdGQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8
dGQ+Y29sIDM8L3RkPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPmNv
bCA0PC90ZD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPHRkPmNvbCAxPC90ZD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDx0ZD5jb2wgMjwvdGQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8
dGQ+Y29sIDM8L3RkPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPmNv
bCA0PC90ZD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PgotICAgICAgICAgICAgICAgICAgICAgICAgPC90
YWJsZT4KLSAgICAgICAgLQotICAgICAgICAgICAgdGl0bGU6IElucHV0cwotICAgICAgICAgICAg
ZXhhbXBsZXM6Ci0gICAgICAgICAgICAgICAgLQotICAgICAgICAgICAgICAgICAgICBkZXNjcmlw
dGlvbjogSW5wdXQKLSAgICAgICAgICAgICAgICAgICAgaHRtbDogfC0KLSAgICAgICAgICAgICAg
ICAgICAgICAgIDxkaXYgY2xhc3M9ImlucHV0Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA8aW5wdXQgdHlwZT0idGV4dCIgcmVxdWlyZWQvPgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDxsYWJlbD5UZXh0IGZpZWxkMTwvbGFiZWw+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8
L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdyI+Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLTYiPgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbnB1dCI+Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgcmVxdWlyZWQvPgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlRleHQgZmllbGQyPC9sYWJlbD4KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0i
Y29sLTYiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbnB1
dCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcmVm
aXgiPjxwPisxPC9wPjwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PGlucHV0IHR5cGU9InRleHQiIHJlcXVpcmVkLz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDxsYWJlbD5UZXh0IGZpZWxkMzwvbGFiZWw+Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pgot
ICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgLQotICAgICAg
ICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogU2xpZGVycwotICAgICAgICAgICAgICAgICAgICBo
dG1sOiB8LQotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93Ij4KLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtNiI+Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImlucHV0Ij4KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDxsYWJlbD5SYW5nZSBzbGlkZXI8L2xhYmVsPgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InJhbmdlIiBtaW49IjAiIG1h
eD0iMTAwIiB2YWx1ZT0iMCIvPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PGlucHV0IHR5cGU9Im51bWJlciIgbWluPSIwIiBtYXg9IjEwMCIgdmFsdWU9IjAiLz4KLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29s
LTYiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbnB1dCI+
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0icmFuZ2Ui
IG1pbj0iMCIgbWF4PSIxMDAiICAgIHZhbHVlPSI4MCIvPgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9Im51bWJlciIgbWluPSIwIiBtYXg9IjEwMCIgdmFs
dWU9IjgwIi8+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgPC9k
aXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbnB1dCI+Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPkRvdWJsZSByYW5nZSBpbnB1dDwvbGFiZWw+Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG91YmxlLXJhbmdlIj4KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9Im51bWJlciIgbWluPSIw
IiBtYXg9IjEwMCIgICAgdmFsdWU9IjIwIi8+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDxkaXYgY2xhc3M9InJhbmdlIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDxpbnB1dCB0eXBlPSJyYW5nZSIgbWluPSIwIiBtYXg9IjEwMCIgICAgdmFsdWU9IjIwIi8+
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0icmFuZ2Ui
IG1pbj0iMCIgbWF4PSIxMDAiICAgIHZhbHVlPSI3MCIvPgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0
IHR5cGU9Im51bWJlciIgbWluPSIwIiBtYXg9IjEwMCIgICAgdmFsdWU9IjcwIi8+Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rp
dj4KLQotICAgICAgICAgICAgICAgIC0KLSAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246
IE51bWJlcgotICAgICAgICAgICAgICAgICAgICBodG1sOiB8LQotICAgICAgICAgICAgICAgICAg
ICAgICAgPGRpdiBjbGFzcz0iaW5wdXQiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxp
bnB1dCB0eXBlPSJudW1iZXIiIHJlcXVpcmVkIG1pbj0iMCIgbWF4PSIxMDAiLz4KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA8bGFiZWw+TnVtYmVyPC9sYWJlbD4KLSAgICAgICAgICAgICAg
ICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaW5w
dXQiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJudW1iZXIiIHJl
cXVpcmVkIG1pbj0iMCIgbWF4PSIxMCIgdmFsdWU9IjExIi8+Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPGxhYmVsPk51bWJlciBvdXQgb2YgcmFuZ2U8L2xhYmVsPgotICAgICAgICAgICAg
ICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgLQotICAgICAgICAgICAgICAgICAg
ICBkZXNjcmlwdGlvbjogU2VsZWN0Ci0gICAgICAgICAgICAgICAgICAgIGh0bWw6IHwtCi0gICAg
ICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbnB1dCI+Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPHNlbGVjdCByZXF1aXJlZD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPG9wdGlvbj48L29wdGlvbj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PG9wdGlvbj5vcHRpb24gMTwvb3B0aW9uPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA8b3B0aW9uPm9wdGlvbiAyPC9vcHRpb24+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDxvcHRpb24+b3B0aW9uIDM8L29wdGlvbj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA8L3NlbGVjdD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+U2VsZWN0PC9s
YWJlbD4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgIC0K
LSAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IFN3aXRjaAotICAgICAgICAgICAgICAg
ICAgICBodG1sOiB8LQotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaW5wdXQi
PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5Td2l0Y2gxPC9sYWJlbD4KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9InN3aXRjaCI+Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJjaGVja2JveCI+Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzbGlkZXIiPjwvc3Bhbj4KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPgotICAgICAgICAgICAgICAgICAgICAg
ICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbnB1dCI+Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlN3aXRjaDI8L2xhYmVsPgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0ic3dpdGNoIj4KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImNoZWNrYm94Ij4KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNsaWRlciI+PC9zcGFuPgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8
L2Rpdj4KLQotICAgICAgICAgICAgICAgIC0KLSAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRp
b246IE1peGluCi0gICAgICAgICAgICAgICAgICAgIGh0bWw6IHwtCi0gICAgICAgICAgICAgICAg
ICAgICAgICA8ZGl2IGNsYXNzPSJpbnB1dCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
PGlucHV0IHR5cGU9InRleHQiIHJlcXVpcmVkIGRpc2FibGVkLz4KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA8bGFiZWw+RGlzYWJsZWQ8L2xhYmVsPgotICAgICAgICAgICAgICAgICAgICAg
ICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbnB1dCI+Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIHJlcXVpcmVkIGRp
c2FibGVkIHZhbHVlPSJJIGFtIGRpc2FibGVkIi8+Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPGxhYmVsPkRpc2FibGVkIHdpdGggZXhpc3RpbmcgdmFsdWU8L2xhYmVsPgotICAgICAgICAg
ICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNz
PSJpbnB1dCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPSJpbnZh
bGlkIiB0eXBlPSJ0ZXh0IiByZXF1aXJlZCB2YWx1ZT0idXNlIGludmFsaWQgbWl4aW4gdG8gZm9y
Y2UgaW52YWxpZCBzdHlsZSIvPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5J
bnZhbGlkPC9sYWJlbD4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAg
ICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaW5wdXQiPgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDxsYWJlbD5JbnZhbGlkIFJhbmdlIHNsaWRlcjwvbGFiZWw+Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPSJpbnZhbGlkIiB0eXBlPSJyYW5nZSIgbWluPSIw
IiBtYXg9IjEwMCIgdmFsdWU9IjEwMSIvPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxp
bnB1dCB0eXBlPSJudW1iZXIiIG1pbj0iMCIgbWF4PSIxMDAiIHZhbHVlPSIxMDEiLz4KLSAgICAg
ICAgICAgICAgICAgICAgICAgIDwvZGl2PgotCi0gICAgICAgIC0KLSAgICAgICAgICAgIHRpdGxl
OiBCdXR0b24KLSAgICAgICAgICAgIGV4YW1wbGVzOgotICAgICAgICAgICAgICAgIC0KLSAgICAg
ICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IH4KLSAgICAgICAgICAgICAgICAgICAgaHRtbDog
fC0KLSAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImJ1dHRvbiI+RGVmYXVs
dDwvYnV0dG9uPgotICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnV0dG9u
IHByaW1hcnkiPlByaW1hcnk8L2J1dHRvbj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0
b24gY2xhc3M9ImJ1dHRvbiBkYW5nZXIiPkRhbmdlcjwvYnV0dG9uPgotICAgICAgICAgICAgICAg
IC0KLSAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IFNpemUKLSAgICAgICAgICAgICAg
ICAgICAgaHRtbDogfC0KLSAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImJ1
dHRvbiBodWdlIj5odWdlPC9idXR0b24+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9u
IGNsYXNzPSJidXR0b24gbGFyZ2UiPmxhcmdlPC9idXR0b24+Ci0gICAgICAgICAgICAgICAgICAg
ICAgICA8YnV0dG9uIGNsYXNzPSJidXR0b24gbWVkaXVtIj5tZWRpdW08L2J1dHRvbj4KLSAgICAg
ICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImJ1dHRvbiI+c21hbGw8L2J1dHRvbj4K
LSAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImJ1dHRvbiB0aW55Ij50aW55
PC9idXR0b24+Ci0gICAgICAgICAgICAgICAgLQotICAgICAgICAgICAgICAgICAgICBkZXNjcmlw
dGlvbjogRGlzYWJsZWQKLSAgICAgICAgICAgICAgICAgICAgaHRtbDogfC0KLSAgICAgICAgICAg
ICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImJ1dHRvbiIgZGlzYWJsZWQ+RGVmYXVsdDwvYnV0
dG9uPgotICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnV0dG9uIHByaW1h
cnkiIGRpc2FibGVkPlByaW1hcnk8L2J1dHRvbj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxi
dXR0b24gY2xhc3M9ImJ1dHRvbiBkYW5nZXIiIGRpc2FibGVkPkRhbmdlcjwvYnV0dG9uPgotICAg
ICAgICAtCi0gICAgICAgICAgICB0aXRsZTogU3dpdGNoCi0gICAgICAgICAgICBleGFtcGxlczoK
LSAgICAgICAgICAgICAgICAtCi0gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB+Ci0g
ICAgICAgICAgICAgICAgICAgIGh0bWw6IHwtCi0gICAgICAgICAgICAgICAgICAgICAgICA8bGFi
ZWwgY2xhc3M9InN3aXRjaCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5
cGU9ImNoZWNrYm94Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0i
c2xpZGVyIj48L3NwYW4+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPgotICAgICAg
ICAtCi0gICAgICAgICAgICB0aXRsZTogQmFkZ2UKLSAgICAgICAgICAgIGV4YW1wbGVzOgotICAg
ICAgICAgICAgICAgIC0KLSAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IH4KLSAgICAg
ICAgICAgICAgICAgICAgaHRtbDogfC0KLSAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xh
c3M9ImJhZGdlIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0
IGJsb2NrIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4
dCB0aW55Ij5pTWFjIDI3IiAoTGF0ZSAyMDEyKTwvZGl2PgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0IHNtYWxsIj5pTWFjIDEzLDI8L2Rpdj4KLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwv
ZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYmFkZ2Ugb3V0bGluZSI+
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dCBibG9jayI+Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQgdGlueSI+aU1h
YyAyNyIgKExhdGUgMjAxMyk8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PGRpdiBjbGFzcz0idGV4dCBzbWFsbCI+aU1hYyAxNCwyPC9kaXY+Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAg
ICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJhZGdlIGFjdGl2ZSI+Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dCBibG9jayI+Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQgdGlueSI+aU1hYyAyNyIgKExhdGUg
MjAxMyk8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0i
dGV4dCBzbWFsbCI+aU1hYyAxNCwyPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgLQotICAgICAg
ICAgICAgdGl0bGU6IERvdAotICAgICAgICAgICAgZXhhbXBsZXM6Ci0gICAgICAgICAgICAgICAg
LQotICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogfgotICAgICAgICAgICAgICAgICAg
ICBodG1sOiB8LQotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90Ij48L2Rp
dj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCBzdWNjZXNzIj48L2Rp
dj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCBmYWlsZWQiPjwvZGl2
PgotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90IGVycm9yIj48L2Rpdj4K
LSAgICAgICAgICAgICAgICAtCi0gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBTaXpl
Ci0gICAgICAgICAgICAgICAgICAgIGh0bWw6IHwtCi0gICAgICAgICAgICAgICAgICAgICAgICA8
ZGl2IGNsYXNzPSJkb3Qgc21hbGwiPjwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgPGRp
diBjbGFzcz0iZG90IG1lZGl1bSI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2
IGNsYXNzPSJkb3QgbGFyZ2UiPjwvZGl2PgotICAgICAgICAgICAgICAgIC0KLSAgICAgICAgICAg
ICAgICAgICAgZGVzY3JpcHRpb246Ci0gICAgICAgICAgICAgICAgICAgICAgICBXaXRoIHN0cmlu
ZyBpbnNpZGUKLSAgICAgICAgICAgICAgICAgICAgaHRtbDogfC0KLSAgICAgICAgICAgICAgICAg
ICAgICAgIDxkaXYgY2xhc3M9ImRvdCBzdWNjZXNzIj4KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA8ZGl2IGNsYXNzPSJ0ZXh0Ij4mIzEwMDAzPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAg
ICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCBmYWls
ZWQiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQiPiYjMTIw
MjQ3PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAg
ICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCBlcnJvciI+Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPGRpdiBjbGFzcz0idGV4dCI+ITwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAg
PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qgc3VjY2VzcyBs
YXJnZSI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dCI+JiMx
MDAwMzwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAg
ICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3QgZmFpbGVkIGxhcmdlIj4KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0Ij4mIzEyMDI0NzwvZGl2PgotICAgICAgICAg
ICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNz
PSJkb3QgZXJyb3IgbGFyZ2UiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xh
c3M9InRleHQiPiE8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAg
ICAgICAgICAgIC0KLSAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IFdpdGggaW1hZ2Ug
aW5zaWRlCi0gICAgICAgICAgICAgICAgICAgIGh0bWw6IHwtCi0gICAgICAgICAgICAgICAgICAg
ICAgICA8ZGl2IGNsYXNzPSJkb3QgZXJyb3IiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDxpbWcgc3JjPSIuLi9pY29ucy9jbG9jay5zdmciPgotICAgICAgICAgICAgICAgICAgICAgICAg
PC9kaXY+Ci0gICAgICAgICAgICAgICAgLQotICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlv
bjogQmxpbmsKLSAgICAgICAgICAgICAgICAgICAgaHRtbDogfC0KLSAgICAgICAgICAgICAgICAg
ICAgICAgIDxkaXYgY2xhc3M9ImRvdCBibGluayI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAg
ICAgICA8ZGl2IGNsYXNzPSJkb3Qgc3VjY2VzcyBibGluayI+PC9kaXY+Ci0gICAgICAgICAgICAg
ICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3QgZmFpbGVkIGJsaW5rIj48L2Rpdj4KLSAgICAgICAg
ICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCBlcnJvciBibGluayI+PC9kaXY+Ci0gICAg
ICAgICAgICAgICAgLQotICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjoKLSAgICAgICAg
ICAgICAgICAgICAgICAgIERvdCBzZWxlY3RvcgotICAgICAgICAgICAgICAgICAgICBodG1sOiB8
LQotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90IHNlbGVjdG9yIj4KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDxpbnB1dCB0eXBlPSJyYWRpbyIgbmFtZT0ic2VsZWN0b3IiPgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qgc3VjY2VzcyI+PC9kaXY+Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD4KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA8bGFiZWw+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0
eXBlPSJyYWRpbyIgbmFtZT0ic2VsZWN0b3IiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA8ZGl2IGNsYXNzPSJkb3QgZmFpbGVkIj48L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA8L2xhYmVsPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD4KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSJz
ZWxlY3RvciI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRv
dCBlcnJvciI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD4KLSAg
ICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAtCi0gICAgICAgICAgICB0aXRs
ZTogY2hpcAotICAgICAgICAgICAgZXhhbXBsZXM6Ci0gICAgICAgICAgICAgICAgLQotICAgICAg
ICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogfgotICAgICAgICAgICAgICAgICAgICBodG1sOiB8
LQotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2hpcCI+Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90IHNtYWxsIGJsaW5rIj48L2Rpdj4KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0IGJsb2NrIj4KLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+aVBvbmU8L3A+Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAg
ICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNoaXAiPgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCBzbWFsbCBibGluayBmYWlsZWQiPjwvZGl2PgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQgYmxvY2siPgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5pUGFkPC9wPgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAg
ICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjaGlwIj4KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qgc21hbGwgc3VjY2VzcyI+PC9kaXY+Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dCBibG9jayI+Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDxwPk1hYzwvcD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAg
ICAgICAgICAgPGRpdiBjbGFzcz0iY2hpcCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
PGRpdiBjbGFzcz0idGV4dCBibG9jayI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDxwPm1hY09TPC9wPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQgYmxvY2siPgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8YT5YPC9hPgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAg
ICAgICAgICAgICA8ZGl2IGNsYXNzPSJjaGlwIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA8ZGl2IGNsYXNzPSJ0ZXh0IGJsb2NrIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPHA+aU9TPC9wPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQgYmxvY2siPgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8YT5YPC9hPgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAg
ICAgICAgICAgICA8ZGl2IGNsYXNzPSJjaGlwIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA8ZGl2IGNsYXNzPSJ0ZXh0IGJsb2NrIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPHA+d2F0Y2hPUzwvcD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0IGJsb2NrIj4KLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE+WDwvYT4KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAt
Ci0gICAgICAgICAgICB0aXRsZTogVGFicwotICAgICAgICAgICAgZXhhbXBsZXM6Ci0gICAgICAg
ICAgICAgICAgLQotICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogfgotICAgICAgICAg
ICAgICAgICAgICBodG1sOiB8LQotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0i
dGFicyI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGUiPgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9
InRhYiBhY3RpdmUiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0i
bGluayI+VGFiIDE8L2E+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGFiIj4KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImxpbmsiPlRhYiAyPC9hPgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0g
ICAgICAgIC0KLSAgICAgICAgICAgIHRpdGxlOiBUaW1lbGluZQotICAgICAgICAgICAgZXhhbXBs
ZXM6Ci0gICAgICAgICAgICAgICAgLQotICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjog
fgotICAgICAgICAgICAgICAgICAgICBodG1sOiB8LQotICAgICAgICAgICAgICAgICAgICAgICAg
PGRpdiBjbGFzcz0idGltZWxpbmUiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYg
Y2xhc3M9ImhlYWRlciI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xh
c3M9InNlcmllcyI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lIGxp
bmUgMQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2VyaWVzIj4KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRpbWUgbGluZSAyCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiPgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzZXJpZXMiPgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90Ij4KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0YWciPjEyMzE8L2Rpdj4KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3MiPgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRhZyI+NDU2PC9kaXY+
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCI+PC9kaXY+Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3QiPjwvZGl2PgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90IGVycm9yIj4K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0YWci
PjEyMzwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3QgZW1wdHki
PjwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0i
ZG90Ij48L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xh
c3M9ImRvdCI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2
IGNsYXNzPSJkb3QiPjwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PGRpdiBjbGFzcz0iZG90Ij48L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDxkaXYgY2xhc3M9ImRvdCI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA8ZGl2IGNsYXNzPSJkb3QiPjwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90Ij48L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCI+PC9kaXY+Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3QiPjwvZGl2PgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90Ij48L2Rpdj4KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCI+PC9kaXY+Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3QiPjwvZGl2Pgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90Ij48L2Rp
dj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNlcmllcyI+Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3QgZW1wdHkiPjwvZGl2PgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90IGVtcHR5Ij48L2Rp
dj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCI+
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGFn
Ij4zNTMzPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCI+Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGFnIj4z
NTMyPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCI+Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGFnIj4zNTI8
L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90Ij4KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0YWciPjM1MTwvZGl2
PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3QiPgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRhZyI+MTwvZGl2PgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3QiPgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRhZyI+NDU2PC9kaXY+Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCI+PC9kaXY+Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3QiPjwvZGl2PgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90Ij48L2Rpdj4KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCI+PC9kaXY+Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3QiPjwvZGl2Pgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90Ij48L2Rp
dj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCI+
PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJk
b3QiPjwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFz
cz0iZG90Ij48L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYg
Y2xhc3M9ImRvdCI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8
ZGl2IGNsYXNzPSJkb3QiPjwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8
L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ieC1heGlz
Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNjYWxl
Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJs
aW5lIj48L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2
IGNsYXNzPSJ0ZXh0Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcjEyMzQ1NjcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rp
dj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2NhbGUiPgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxpbmUiPjwvZGl2Pgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQi
PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByMTIzNDU2Nwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzY2FsZSI+Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGluZSI+PC9kaXY+Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dCI+Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIxMjM0NTY3Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDxkaXYgY2xhc3M9InNjYWxlIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA8ZGl2IGNsYXNzPSJsaW5lIj48L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0Ij4KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcjEyMzQ1NjcKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0i
c2NhbGUiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xh
c3M9ImxpbmUiPjwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDxkaXYgY2xhc3M9InRleHQiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByMTIzNDU2NwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzY2FsZSI+Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGluZSI+PC9k
aXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0i
dGV4dCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEkgYW0g
YSB0YWcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2NhbGUiPgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxpbmUiPjwvZGl2PgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQiPgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJIGFtIGEgdGFnCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDxkaXYgY2xhc3M9InNjYWxlIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsaW5lIj48L2Rpdj4KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0Ij4KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSSBhbSBhIHRhZwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8
ZGl2IGNsYXNzPSJzY2FsZSI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPGRpdiBjbGFzcz0ibGluZSI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEkgYW0gYSB0YWcKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0i
c2NhbGUiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xh
c3M9ImxpbmUiPjwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDxkaXYgY2xhc3M9InRleHQiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBJIGFtIGEgdGFnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNjYWxlIj4KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsaW5lIj48
L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNz
PSJ0ZXh0Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSSBh
bSBhIHRhZwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzY2FsZSI+Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGluZSI+PC9kaXY+Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dCI+Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEkgYW0gYSB0YWcKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2NhbGUiPgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxpbmUiPjwvZGl2PgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQiPgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJIGFtIGEgdGFnCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDxkaXYgY2xhc3M9InNjYWxlIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA8ZGl2IGNsYXNzPSJsaW5lIj48L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0Ij4KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgSSBhbSBhIHRhZwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNz
PSJzY2FsZSI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBj
bGFzcz0ibGluZSI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPGRpdiBjbGFzcz0idGV4dCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEkgYW0gYSB0YWcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2NhbGUiPgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxpbmUi
PjwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xh
c3M9InRleHQiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJ
IGFtIGEgdGFnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNjYWxlIj4KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsaW5lIj48L2Rpdj4KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0Ij4K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSSBhbSBhIHRhZwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzY2FsZSI+Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGluZSI+PC9kaXY+Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dCI+Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEkgYW0gYSB0YWcKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPGRpdiBjbGFzcz0ic2NhbGUiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDxkaXYgY2xhc3M9ImxpbmUiPjwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQiPgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBJIGFtIGEgdGFnCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IngtYXhpcyI+Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzY2FsZSBncm91cC00Ij4K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJib3Jk
ZXItbGluZS1sZWZ0Ij48L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA8ZGl2IGNsYXNzPSJsaW5lIj48L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0Ij4KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgSSBhbSBhIHRhZwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDxkaXYgY2xhc3M9ImJvcmRlci1saW5lLXJpZ2h0Ij48L2Rpdj4KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2NhbGUgZ3JvdXAtMyI+Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYm9yZGVyLWxpbmUtbGVmdCI+PC9k
aXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0i
bGluZSI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRp
diBjbGFzcz0idGV4dCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEkgYW0gYSB0YWcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8
L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNz
PSJib3JkZXItbGluZS1yaWdodCI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYg
Y2xhc3M9InNjYWxlIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8
ZGl2IGNsYXNzPSJsaW5lIj48L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgSSBhbSBhIHRhZwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9k
aXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzY2Fs
ZSI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0i
bGluZSI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRp
diBjbGFzcz0idGV4dCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEkgYW0gYSB0YWcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8
L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2NhbGUgZ3JvdXAtMTAi
PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJv
cmRlci1saW5lLWxlZnQiPjwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDxkaXYgY2xhc3M9ImxpbmUiPjwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQiPgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBJIGFtIGEgdGFnCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPGRpdiBjbGFzcz0iYm9yZGVyLWxpbmUtcmlnaHQiPjwvZGl2PgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAg
ICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgLQotICAgICAgICAg
ICAgICAgICAgICBkZXNjcmlwdGlvbjogY28tcmV2aXNpb24gdGltZWxpbmUgdG9wIHgtYXhpcwot
ICAgICAgICAgICAgICAgICAgICBodG1sOiB8LQotICAgICAgICAgICAgICAgICAgICAgICAgPGRp
diBjbGFzcz0idGltZWxpbmUiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xh
c3M9ImhlYWRlciB3aXRoLXRvcC14LWF4aXMiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA8ZGl2IGNsYXNzPSJzZXJpZXMiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRGVidWcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNlcmllcyI+Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWxlYXNlCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiPgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ4LWF4aXMgdG9wIj4KLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNjYWxlIj4KLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsaW5lIj48L2Rp
dj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0
ZXh0Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcjI0NDUx
MAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzY2FsZSI+Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGluZSI+PC9kaXY+Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dCI+Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIyNDQ1MDkKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPGRpdiBjbGFzcz0ic2NhbGUgZ3JvdXAtNCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYm9yZGVyLWxpbmUtbGVmdCI+PC9kaXY+Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGluZSI+PC9k
aXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0i
dGV4dCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIyNDQ1
MDgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJib3JkZXItbGlu
ZS1yaWdodCI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rp
dj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNjYWxl
Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJs
aW5lIj48L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2
IGNsYXNzPSJ0ZXh0Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcjI0NDUwNwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2
PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzY2FsZSI+Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGluZSI+PC9kaXY+Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dCI+
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIyNDQ1MDYKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2NhbGUiPgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxpbmUiPjwvZGl2PgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQiPgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByMjQ0NTA1Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxk
aXYgY2xhc3M9InNjYWxlIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA8ZGl2IGNsYXNzPSJsaW5lIj48L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcjI0NDUwNAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9k
aXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNlcmllcyI+Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qgc3VjY2VzcyI+PC9kaXY+Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qgc3VjY2Vz
cyI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNz
PSJkb3Qgc3VjY2VzcyI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA8ZGl2IGNsYXNzPSJkb3Qgc3VjY2VzcyI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qgc3VjY2VzcyI+PC9kaXY+Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qgc3VjY2VzcyI+PC9kaXY+
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qgc3Vj
Y2VzcyI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNs
YXNzPSJkb3Qgc3VjY2VzcyI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA8ZGl2IGNsYXNzPSJkb3Qgc3VjY2VzcyI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qgc3VjY2VzcyI+PC9kaXY+Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA8ZGl2IGNsYXNzPSJzZXJpZXMiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3MiPjwvZGl2PgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3MiPjwvZGl2PgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3Mi
PjwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0i
ZG90IHN1Y2Nlc3MiPjwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3MiPjwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3MiPjwvZGl2PgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3MiPjwvZGl2Pgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90IHN1Y2Nl
c3MiPjwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFz
cz0iZG90IHN1Y2Nlc3MiPjwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3MiPjwvZGl2PgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBj
bGFzcz0ieC1heGlzIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYg
Y2xhc3M9InNjYWxlIGdyb3VwLTMiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDxkaXYgY2xhc3M9ImJvcmRlci1saW5lLWxlZnQiPjwvZGl2PgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxpbmUiPjwvZGl2PgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQiPgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYzgyNmEzOAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJvcmRlci1saW5lLXJpZ2h0
Ij48L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2NhbGUiPgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxpbmUiPjwv
ZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9
InRleHQiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMzU1
OGQ1MAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzY2FsZSI+Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGluZSI+PC9kaXY+Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dCI+Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDA4NjM3NDIzCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDxkaXYgY2xhc3M9InNjYWxlIGdyb3VwLTUiPgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJvcmRlci1saW5lLWxlZnQiPjwvZGl2Pgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxpbmUi
PjwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xh
c3M9InRleHQiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
OTRmZWI2MwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJvcmRl
ci1saW5lLXJpZ2h0Ij48L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2
PgotCi0gICAgICAgICAgICAgICAgLQotICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjog
T25seSBHcm91cCBTY2FsZQotICAgICAgICAgICAgICAgICAgICBodG1sOiB8LQotICAgICAgICAg
ICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGltZWxpbmUiPgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDxkaXYgY2xhc3M9ImhlYWRlciB3aXRoLXRvcC14LWF4aXMiPgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzZXJpZXMiPgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRGVidWcKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9
InNlcmllcyI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWxlYXNlCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9
ImNvbnRlbnQiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ4
LWF4aXMgdG9wIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xh
c3M9InNjYWxlIGdyb3VwLTQiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDxkaXYgY2xhc3M9ImJvcmRlci1saW5lLWxlZnQiPjwvZGl2PgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxpbmUiPjwvZGl2PgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQiPgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByMjQ0NTA4Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYm9yZGVyLWxpbmUtcmlnaHQiPjwv
ZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzY2FsZSBncm91cC00Ij4K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJib3Jk
ZXItbGluZS1sZWZ0Ij48L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA8ZGl2IGNsYXNzPSJsaW5lIj48L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0Ij4KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcjI0NDUxMAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDxkaXYgY2xhc3M9ImJvcmRlci1saW5lLXJpZ2h0Ij48L2Rpdj4KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0i
c2VyaWVzIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9
ImRvdCBzdWNjZXNzIj48L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDxkaXYgY2xhc3M9ImRvdCBzdWNjZXNzIj48L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCBzdWNjZXNzIj48L2Rpdj4KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCBzdWNjZXNzIj48L2Rpdj4K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCBzdWNj
ZXNzIj48L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xh
c3M9ImRvdCBzdWNjZXNzIj48L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDxkaXYgY2xhc3M9ImRvdCBzdWNjZXNzIj48L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCBzdWNjZXNzIj48L2Rpdj4KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDxkaXYgY2xhc3M9InNlcmllcyI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qgc3VjY2VzcyI+PC9kaXY+Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qgc3VjY2VzcyI+PC9kaXY+Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qgc3VjY2VzcyI+
PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJk
b3Qgc3VjY2VzcyI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8
ZGl2IGNsYXNzPSJkb3Qgc3VjY2VzcyI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qgc3VjY2VzcyI+PC9kaXY+Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qgc3VjY2VzcyI+PC9kaXY+Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qgc3VjY2Vz
cyI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ4LWF4aXMiPgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2NhbGUgZ3JvdXAtMyI+Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYm9yZGVy
LWxpbmUtbGVmdCI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPGRpdiBjbGFzcz0ibGluZSI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGFjODI2YTM4Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPGRpdiBjbGFzcz0iYm9yZGVyLWxpbmUtcmlnaHQiPjwvZGl2PgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA8ZGl2IGNsYXNzPSJzY2FsZSBncm91cC01Ij4KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJib3JkZXItbGluZS1sZWZ0Ij48L2Rpdj4K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsaW5l
Ij48L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNs
YXNzPSJ0ZXh0Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Yzk0ZmViNjMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJib3Jk
ZXItbGluZS1yaWdodCI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rp
dj4KLSAgICAgICAgICAgICAgICAtCi0gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBM
YXJnZSBTZXJpZXMgTGFiZWwKLSAgICAgICAgICAgICAgICAgICAgaHRtbDogfC0KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aW1lbGluZSI+Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImhlYWRlciB3aXRoLXRvcC14LWF4aXMiPgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2VyaWVzIj4K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJIGFtIGEgdmVyeSBsb25n
IGFuZCBiaWcgc2VyaWVzIDEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwv
ZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2Vy
aWVzIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJIGFtIGEgdmVy
eSBsb25nIGFuZCBiaWcgc2VyaWVzIDIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudCI+Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ4LWF4aXMgdG9wIj4KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzY2FsZSI+
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9
ImxpbmUiPjwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA8ZGl2IGNsYXNzPSJ0ZXh0Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHIyNDQ1MTAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFz
cz0ic2NhbGUiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8
ZGl2IGNsYXNzPSJsaW5lIj48L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByMjQ0NTA5Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDxkaXYgY2xhc3M9InNjYWxlIGdyb3VwLTQiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJib3JkZXItbGluZS1sZWZ0Ij48L2Rpdj4KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGlu
ZSI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxk
aXYgY2xhc3M9InRleHQiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcjI0NDUwOAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PGRpdiBjbGFzcz0iYm9yZGVyLWxpbmUtcmlnaHQiPjwvZGl2PgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNjYWxlIj4KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGluZSI+PC9kaXY+Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQiPgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcjI0NDUwNwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzY2FsZSI+Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxpbmUiPjwvZGl2Pgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0
ZXh0Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIy
NDQ1MDYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2NhbGUiPgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsaW5l
Ij48L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRp
diBjbGFzcz0idGV4dCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByMjQ0NTA1Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2
PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNj
YWxlIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBj
bGFzcz0ibGluZSI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDxkaXYgY2xhc3M9InRleHQiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcjI0NDUwNAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pgot
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzZXJpZXMi
PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRv
dCBzdWNjZXNzIj48L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA8ZGl2IGNsYXNzPSJkb3Qgc3VjY2VzcyI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3MiPjwvZGl2PgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCBzdWNjZXNz
Ij48L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNs
YXNzPSJkb3Qgc3VjY2VzcyI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3MiPjwvZGl2PgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCBzdWNjZXNzIj48L2Rpdj4K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qg
c3VjY2VzcyI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3MiPjwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCBzdWNjZXNzIj48L2Rpdj4KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2VyaWVzIj4KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qgc3VjY2VzcyI+PC9kaXY+Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90IHN1Y2Nl
c3MiPjwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYg
Y2xhc3M9ImRvdCBzdWNjZXNzIj48L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qgc3VjY2VzcyI+PC9kaXY+Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3MiPjwvZGl2
PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRv
dCBzdWNjZXNzIj48L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA8ZGl2IGNsYXNzPSJkb3Qgc3VjY2VzcyI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3MiPjwvZGl2PgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCBzdWNjZXNz
Ij48L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNs
YXNzPSJkb3Qgc3VjY2VzcyI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xh
c3M9IngtYXhpcyI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRp
diBjbGFzcz0ic2NhbGUgZ3JvdXAtMyI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJvcmRlci1saW5lLWxlZnQiPjwvZGl2PgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsaW5lIj48
L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBj
bGFzcz0idGV4dCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBhYzgyNmEzOAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRp
diBjbGFzcz0iYm9yZGVyLWxpbmUtcmlnaHQiPjwvZGl2PgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDxkaXYgY2xhc3M9InNjYWxlIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGluZSI+PC9kaXY+Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQiPgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzM1NThkNTAKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2NhbGUiPgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsaW5lIj48L2Rpdj4KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4
dCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwODYz
NzQyMwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzY2FsZSBncm91cC01
Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFz
cz0iYm9yZGVyLWxpbmUtbGVmdCI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxpbmUiPjwvZGl2PgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0Ij4KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGM5NGZlYjYzCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJib3JkZXItbGluZS1y
aWdodCI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9k
aXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPC9kaXY+Ci0gICAgICAgIC0KLSAgICAgICAgICAgIHRpdGxlOiBMZW5nZW5kCi0gICAgICAg
ICAgICBleGFtcGxlczoKLSAgICAgICAgICAgICAgICAtCi0gICAgICAgICAgICAgICAgICAgIGRl
c2NyaXB0aW9uOiB+Ci0gICAgICAgICAgICAgICAgICAgIGh0bWw6IHwtCi0gICAgICAgICAgICAg
ICAgICAgICAgICA8ZGl2IGNsYXNzPSJsZW5nZW5kIj4KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA8ZGl2IGNsYXNzPSJpdGVtIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3MiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPGRpdiBjbGFzcz0idGV4dCI+4pyTPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNs
YXNzPSJsYWJlbCI+VGVzdHMgUGFzczwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Iml0ZW0iPgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3QgZmFpbGVkIj48
L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGFiZWwi
PlRlc3RzIEZhaWxlZDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Iml0ZW0iPgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3QgZXJyb3IiPjxpbWcgc3JjPSIu
Li9pY29ucy9jbG9jay5zdmciPjwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA8ZGl2IGNsYXNzPSJsYWJlbCI+VGVzdHMgaGF2ZSBlcnJvcjwvZGl2PgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0g
ICAgICAgICAgICAgICAgLQotICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogV2l0aCBo
b3Jpem9udGFsIG1peGluCi0gICAgICAgICAgICAgICAgICAgIGh0bWw6IHwtCi0gICAgICAgICAg
ICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsZW5nZW5kIGhvcml6b250YWwiPgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Iml0ZW0iPgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qgc3VjY2VzcyI+Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0Ij7inJM8L2Rpdj4KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDxkaXYgY2xhc3M9ImxhYmVsIj5UZXN0cyBQYXNzPC9kaXY+Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBj
bGFzcz0iaXRlbSI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9
ImRvdCBmYWlsZWQiPjwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2
IGNsYXNzPSJsYWJlbCI+VGVzdHMgRmFpbGVkPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaXRl
bSI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCBlcnJv
ciI+PGltZyBzcmM9Ii4uL2ljb25zL2Nsb2NrLnN2ZyI+PC9kaXY+Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxhYmVsIj5UZXN0cyBoYXZlIGVycm9yPC9kaXY+
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAg
ICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAtCi0gICAgICAgICAgICAgICAgICAgIGRlc2Ny
aXB0aW9uOiBXaXRoIHRpbWVsaW5lIG1peGluCi0gICAgICAgICAgICAgICAgICAgIGh0bWw6IHwt
Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsZW5nZW5kIHRpbWVsaW5lIj4K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpdGVtIj4KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3MiPgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dCI+4pyTPC9kaXY+
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsYWJlbCI+VGVzdHMgUGFzczwvZGl2PgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDxkaXYgY2xhc3M9Iml0ZW0iPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8
ZGl2IGNsYXNzPSJkb3QgZmFpbGVkIj48L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPGRpdiBjbGFzcz0ibGFiZWwiPlRlc3RzIEZhaWxlZDwvZGl2PgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYg
Y2xhc3M9Iml0ZW0iPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNz
PSJkb3QgZXJyb3IiPjxpbWcgc3JjPSIuLi9pY29ucy9jbG9jay5zdmciPjwvZGl2PgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsYWJlbCI+VGVzdHMgaGF2ZSBl
cnJvcjwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAg
ICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgIC0KLSAgICAgICAgICAgIHRpdGxlOiBQb3Bv
dmVyCi0gICAgICAgICAgICBleGFtcGxlczoKLSAgICAgICAgICAgICAgICAtCi0gICAgICAgICAg
ICAgICAgICAgIGRlc2NyaXB0aW9uOiB+Ci0gICAgICAgICAgICAgICAgICAgIGh0bWw6IHwtCi0g
ICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwb3BvdmVyIGRpc3BsYXkiPgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFycm93IHBvaW50LXRvcCIgc3R5
bGU9ImxlZnQ6IDEwNnB4OyI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudCIgc3R5bGU9Indp
ZHRoOjIwMHB4Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBpcyBwb3Bv
dmVyOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAg
ICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250
ZW50Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb3JlbSBpcHN1bSBkb2xvciBzaXQg
YW1ldCwgY29uc2VjdGV0dXIgYWRpcGlzY2luZyBlbGl0LCBzZWQgZG8gZWl1c21vZCB0ZW1wb3Ig
aW5jaWRpZHVudCB1dCBsYWJvcmUgZXQgZG9sb3JlIG1hZ25hIGFsaXF1YS4gVXQgZW5pbSBhZCBt
aW5pbSB2ZW5pYW0sIHF1aXMgbm9zdHJ1ZCBleGVyY2l0YXRpb24gdWxsYW1jbyBsYWJvcmlzIG5p
c2kgdXQgYWxpcXVpcCBleCBlYSBjb21tb2RvIGNvbnNlcXVhdC4gRHVpcyBhdXRlIGlydXJlIGRv
bG9yIGluIHJlcHJlaGVuZGVyaXQgaW4gdm9sdXB0YXRlIHZlbGl0IGVzc2UgY2lsbHVtIGRvbG9y
ZSBldSBmdWdpYXQgbnVsbGEgcGFyaWF0dXIuIEV4Y2VwdGV1ciBzaW50IG9jY2FlY2F0IGN1cGlk
YXRhdCBub24gcHJvaWRlbnQsIHN1bnQgaW4gY3VscGEgcXVpIG9mZmljaWEgZGVzZXJ1bnQgbW9s
bGl0IGFuaW0gaWQgZXN0IGxhYm9ydW0uCi0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4K
LSAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gWW91IGNhbiBjb250cm9sIHRoZSBhcnJvdyBw
b3MgYnkgc2V0aW5nIHRoZSBsZWZ0IG9yIHRvcCAtLT4KLSAgICAgICAgICAgICAgICAgICAgICAg
IDxkaXYgY2xhc3M9InBvcG92ZXIgZGlzcGxheSI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPGRpdiBjbGFzcz0iYXJyb3cgcG9pbnQtYm90dG9tIiBzdHlsZT0ibGVmdDogMTA2cHg7Ij4K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50IiBzdHlsZT0id2lkdGg6MjAwcHgiPgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGlzIGEgcG9wb3ZlcgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0g
ICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBMb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0dXIg
YWRpcGlzY2luZyBlbGl0LCBzZWQgZG8gZWl1c21vZCB0ZW1wb3IgaW5jaWRpZHVudCB1dCBsYWJv
cmUgZXQgZG9sb3JlIG1hZ25hIGFsaXF1YS4gVXQgZW5pbSBhZCBtaW5pbSB2ZW5pYW0sIHF1aXMg
bm9zdHJ1ZCBleGVyY2l0YXRpb24gdWxsYW1jbyBsYWJvcmlzIG5pc2kgdXQgYWxpcXVpcCBleCBl
YSBjb21tb2RvIGNvbnNlcXVhdC4gRHVpcyBhdXRlIGlydXJlIGRvbG9yIGluIHJlcHJlaGVuZGVy
aXQgaW4gdm9sdXB0YXRlIHZlbGl0IGVzc2UgY2lsbHVtIGRvbG9yZSBldSBmdWdpYXQgbnVsbGEg
cGFyaWF0dXIuIEV4Y2VwdGV1ciBzaW50IG9jY2FlY2F0IGN1cGlkYXRhdCBub24gcHJvaWRlbnQs
IHN1bnQgaW4gY3VscGEgcXVpIG9mZmljaWEgZGVzZXJ1bnQgbW9sbGl0IGFuaW0gaWQgZXN0IGxh
Ym9ydW0uCi0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAg
ICAgICAgIDxkaXYgY2xhc3M9InBvcG92ZXIgZGlzcGxheSI+Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPGRpdiBjbGFzcz0iYXJyb3cgcG9pbnQtbGVmdCIgc3R5bGU9InRvcDogMzFweDsi
PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiIHN0eWxlPSJoZWlnaHQ6NTBweCI+Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgaXMgYSBwb3BvdmVyCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4K
LSAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiPgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIExvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1
ciBhZGlwaXNjaW5nIGVsaXQsIHNlZCBkbyBlaXVzbW9kIHRlbXBvciBpbmNpZGlkdW50IHV0IGxh
Ym9yZSBldCBkb2xvcmUgbWFnbmEgYWxpcXVhLiBVdCBlbmltIGFkIG1pbmltIHZlbmlhbSwgcXVp
cyBub3N0cnVkIGV4ZXJjaXRhdGlvbiB1bGxhbWNvIGxhYm9yaXMgbmlzaSB1dCBhbGlxdWlwIGV4
IGVhIGNvbW1vZG8gY29uc2VxdWF0LiBEdWlzIGF1dGUgaXJ1cmUgZG9sb3IgaW4gcmVwcmVoZW5k
ZXJpdCBpbiB2b2x1cHRhdGUgdmVsaXQgZXNzZSBjaWxsdW0gZG9sb3JlIGV1IGZ1Z2lhdCBudWxs
YSBwYXJpYXR1ci4gRXhjZXB0ZXVyIHNpbnQgb2NjYWVjYXQgY3VwaWRhdGF0IG5vbiBwcm9pZGVu
dCwgc3VudCBpbiBjdWxwYSBxdWkgb2ZmaWNpYSBkZXNlcnVudCBtb2xsaXQgYW5pbSBpZCBlc3Qg
bGFib3J1bS4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAg
ICAgICAgICAgPGRpdiBjbGFzcz0icG9wb3ZlciBkaXNwbGF5Ij4KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA8ZGl2IGNsYXNzPSJhcnJvdyBwb2ludC1yaWdodCIgc3R5bGU9InRvcDogMzFw
eDsiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiIHN0eWxlPSJoZWlnaHQ6NTBweCI+Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgaXMgYSBwb3BvdmVyCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rp
dj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiPgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIExvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0
ZXR1ciBhZGlwaXNjaW5nIGVsaXQsIHNlZCBkbyBlaXVzbW9kIHRlbXBvciBpbmNpZGlkdW50IHV0
IGxhYm9yZSBldCBkb2xvcmUgbWFnbmEgYWxpcXVhLiBVdCBlbmltIGFkIG1pbmltIHZlbmlhbSwg
cXVpcyBub3N0cnVkIGV4ZXJjaXRhdGlvbiB1bGxhbWNvIGxhYm9yaXMgbmlzaSB1dCBhbGlxdWlw
IGV4IGVhIGNvbW1vZG8gY29uc2VxdWF0LiBEdWlzIGF1dGUgaXJ1cmUgZG9sb3IgaW4gcmVwcmVo
ZW5kZXJpdCBpbiB2b2x1cHRhdGUgdmVsaXQgZXNzZSBjaWxsdW0gZG9sb3JlIGV1IGZ1Z2lhdCBu
dWxsYSBwYXJpYXR1ci4gRXhjZXB0ZXVyIHNpbnQgb2NjYWVjYXQgY3VwaWRhdGF0IG5vbiBwcm9p
ZGVudCwgc3VudCBpbiBjdWxwYSBxdWkgb2ZmaWNpYSBkZXNlcnVudCBtb2xsaXQgYW5pbSBpZCBl
c3QgbGFib3J1bS4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgpJbmRleDogVG9vbHMv
cmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9zdGF0aWMvbGlicmFyeS9jc3MvZ2VuZXJhdGUt
d2Via2l0LWNzcy1kb2NzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNk
YnB5L3ZpZXcvc3RhdGljL2xpYnJhcnkvY3NzL2dlbmVyYXRlLXdlYmtpdC1jc3MtZG9jcwkocmV2
aXNpb24gMjY1NTMxKQorKysgVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9zdGF0
aWMvbGlicmFyeS9jc3MvZ2VuZXJhdGUtd2Via2l0LWNzcy1kb2NzCShub25leGlzdGVudCkKQEAg
LTEsMTQ1ICswLDAgQEAKLSMhL3Vzci9iaW4vcHl0aG9uCi0jIENvcHlyaWdodCAoQykgMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
IyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5E
Ci0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IKLSMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotIyBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUgotIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotIyBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
IyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotCi1mcm9tIGFyZ3BhcnNlIGltcG9ydCBBcmd1bWVudFBhcnNlcgotaW1w
b3J0IGppbmphMgotaW1wb3J0IHlhbWwKLWltcG9ydCBzeXMKLWltcG9ydCBjb2RlY3MKLQotaHRt
bF90ZW1wbGF0ZSA9IGppbmphMi5UZW1wbGF0ZSgiIiIKLTwhLS0gVGhpcyBmaWxlIGlzIGF1dG8g
Z2VuZXJhdGVkLCBwbGVhc2UgZG8gbm90IG1vZGlmeSBpdCBkaXJlY3RseSAtLT4KLTwhRE9DVFlQ
RSBodG1sPgotPGh0bWw+Ci0gICAgPGhlYWQ+Ci0gICAgICAgIDx0aXRsZT5BIFNoYXJlZCBDU1Mg
bGlicmFyeSBmb3Igd2Via2l0IHNlcnZpY2VzPC90aXRsZT4KLSAgICAgICAgPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSJ3ZWJraXQuY3NzIj48L2xpbms+Ci0gICAgICAgIDxsaW5rIHJlbD0i
c2hvcnRjdXQgaWNvbiIgc2l6ZXM9IjMyeDMyIiB0eXBlPSJpbWFnZS94LWljb24iIGhyZWY9Imh0
dHBzOi8vd2Via2l0Lm9yZy9mYXZpY29uLmljbyI+Ci0gICAgICAgIDxtZXRhIGNvbnRlbnQ9Indp
ZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLCB2aWV3cG9ydC1maXQ9Y292ZXIiIG5h
bWU9InZpZXdwb3J0Ij4KLSAgICAgICAgPG1ldGEgY2hhcnNldD0iVVRGLTgiPgotICAgIDwvaGVh
ZD4KLSAgICA8Ym9keT4KLSAgICA8IS0tIGV4YW1wbGUgdG9wYmFyIC0tPgotICAgIDxkaXYgaWQ9
InRvcGJhciIgY2xhc3M9InRvcGJhciBmaXhlZCIgc3R5bGU9ImRpc3BsYXk6bm9uZSI+Ci0gICAg
ICAgIDxkaXYgY2xhc3M9InRpdGxlIj4KLSAgICAgICAgICAgIFRvcGJhcgotICAgICAgICA8L2Rp
dj4KLSAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9ucyI+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNz
PSJsaXN0Ij4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpdGVtIj4KLSAgICAgICAgICAg
ICAgICAgICAgPGE+aXRlbSAxPC9hPgotICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAg
ICAgICAgIDxkaXYgY2xhc3M9Iml0ZW0iPgotICAgICAgICAgICAgICAgICAgICA8YT5pdGVtIDI8
L2E+Ci0gICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0i
aXRlbSI+Ci0gICAgICAgICAgICAgICAgICAgIDxhPml0ZW0gMzwvYT4KLSAgICAgICAgICAgICAg
ICA8L2Rpdj4KLSAgICAgICAgICAgIDwvZGl2PgotICAgICAgICA8L2Rpdj4KLSAgICA8L2Rpdj4K
LSAgICA8IS0tIGVuZCBvZiBleGFtcGxlIHRvcGJhciAtLT4KLQotICAgIDwhLS0gU2lkZWJhciAt
LT4KLSAgICA8ZGl2IGNsYXNzPSJzaWRlYmFyIj4KLSAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGVy
Ij4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlIj4KLSAgICAgICAgICAgICAgICA8aDI+
V2Via2l0LmNzczwvaDI+Ci0gICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgPC9kaXY+Ci0gICAg
ICAgIDxkaXYgY2xhc3M9Imxpc3QiPgotICAgICAgICB7JSBmb3Igc2VjdGlvbiBpbiBzZWN0aW9u
cyAlfQotICAgICAgICAgICAgPGRpdiBjbGFzcz0iaXRlbSI+Ci0gICAgICAgICAgICAgICAgPGgz
PjxhIGhyZWY9IiN7eyBzZWN0aW9uLnRpdGxlIH19Ij57eyBzZWN0aW9uLnRpdGxlIH19PC9hPjwv
aDM+Ci0gICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9Iml0ZW0iPgot
ICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Imxpc3QiPgotICAgICAgICAgICAgICAgIHslIGZv
ciBzdWIgaW4gc2VjdGlvbi5zdWJzICV9Ci0gICAgICAgICAgICAgICAgICAgIHslIGlmIHN1Yi50
aXRsZSAlfQotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaXRlbSBzdWIiPgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiN7eyBzZWN0aW9uLnRpdGxlIH19
LXt7IHN1Yi50aXRsZSB9fSI+e3sgc3ViLnRpdGxlIH19PC9hPgotICAgICAgICAgICAgICAgICAg
ICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgIHslIGVuZGlmICV9Ci0gICAgICAgICAg
ICAgICAgeyUgZW5kZm9yICV9Ci0gICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICA8
L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRpdmlkZXIiPjwvZGl2PgotICAgICAgICB7
JSBlbmRmb3IgJX0KLSAgICAgICAgPC9kaXY+Ci0gICAgPC9kaXY+Ci0gICAgPCEtLSBFbmQgb2Yg
c2lkZWJhciAtLT4KLQotICAgIDwhLS0gY29udGVudCAtLT4KLSAgICA8ZGl2IGNsYXNzPSJtYWlu
Ij4KLSAgICAgICAgeyUgZm9yIHNlY3Rpb24gaW4gc2VjdGlvbnMgJX0KLSAgICAgICAgICAgIDxk
aXYgaWQ9Int7IHNlY3Rpb24udGl0bGUgfCByZXBsYWNlKCIgIiwiLSIpIH19IiBjbGFzcz0ic2Vj
dGlvbiBhcnRpY2xlIj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkZXIiPgotICAg
ICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZSI+Ci0gICAgICAgICAgICAgICAgICAg
ICAgICA8aDE+e3sgc2VjdGlvbi50aXRsZSB9fTwvaDE+Ci0gICAgICAgICAgICAgICAgICAgIDwv
ZGl2PgotICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgIHslIGZvciBzdWIg
aW4gc2VjdGlvbi5zdWJzICV9Ci0gICAgICAgICAgICAgICAgICAgIHslIGlmIHN1Yi50aXRsZSAl
fQotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGVyIiBpZD0ie3sgc2Vj
dGlvbi50aXRsZSB8IHJlcGxhY2UoIiAiLCItIikgfX0te3sgc3ViLnRpdGxlIHwgcmVwbGFjZSgi
ICIsIi0iKSB9fSI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGl0
bGUiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgyPnt7IHN1Yi50aXRsZSB9fTwv
aDI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAg
ICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgeyUgZW5kaWYgJX0KLSAgICAgICAg
ICAgICAgICAgICAgeyUgZm9yIGV4YW1wbGUgaW4gc3ViLmV4YW1wbGVzICV9Ci0gICAgICAgICAg
ICAgICAgICAgICAgICB7JSBpZiBleGFtcGxlLmRlc2NyaXB0aW9uICV9Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudCI+Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHt7IGV4YW1wbGUuZGVzY3JpcHRpb24gfX0KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgIHslIGVuZGlmICV9Ci0g
ICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA8cHJlPjx4bXA+e3sgZXhhbXBsZS5odG1sIH19PC94bXA+PC9wcmU+
Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAg
IDxkaXYgY2xhc3M9ImNvbnRlbnQiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGV4
YW1wbGUuaHRtbCB9fQotICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAg
ICAgICAgICAgIHslIGVuZGZvciAlfQotICAgICAgICAgICAgICAgIHslIGVuZGZvciAlfQotICAg
ICAgICAgICAgPC9kaXY+Ci0gICAgICAgIHslIGVuZGZvciV9Ci0gICAgICAgIDxkaXYgY2xhc3M9
InBsYWNlaG9sZGVyIj48L2Rpdj4KLSAgICA8L2Rpdj4KLSAgICA8IS0tIGVuZCBvZiBjb250ZW50
LS0+Ci0gIDwvYm9keT4KLTwvaHRtbD4KLSIiIikKLQotZGVmIG1haW4oKToKLSAgICBwYXJzZXIg
PSBBcmd1bWVudFBhcnNlcihkZXNjcmlwdGlvbj0iR2VuZXJhdGUgd2Via2l0LmNzcyBkb2N1bWVu
dGF0aW9uIikKLSAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItLXlhbWwiLCBkZWZhdWx0PSJkb2Nz
LnlhbWwiKQotICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi0tb3V0cHV0IiwgZGVmYXVsdD0iaW5k
ZXguaHRtbCIpCi0gICAgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKLQotICAgIHdpdGggb3Bl
bihhcmdzLnlhbWwpIGFzIGlucHV0X2Y6Ci0gICAgICAgIGRvY3NfY2ZnID0geWFtbC5sb2FkKGlu
cHV0X2YpCi0gICAgICAgIHdpdGggY29kZWNzLm9wZW4oYXJncy5vdXRwdXQsICd3JywgInV0Zi04
IikgYXMgb3V0cHV0X2Y6Ci0gICAgICAgICAgICBvdXRwdXRfZi53cml0ZShodG1sX3RlbXBsYXRl
LnJlbmRlcihzZWN0aW9ucz1kb2NzX2NmZykpOwotICAgICAgICAgICAgcHJpbnQoIk91dHB1dCB0
byB7fSIuZm9ybWF0KGFyZ3Mub3V0cHV0KSkKLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoK
LSAgICBzeXMuZXhpdChtYWluKCkpCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBUb29scy9yZXN1bHRz
ZGJweS9yZXN1bHRzZGJweS92aWV3L3N0YXRpYy9saWJyYXJ5L2Nzcy9nZW5lcmF0ZS13ZWJraXQt
Y3NzLWRvY3MKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46ZXhlY3V0YWJsZQojIyAtMSArMCwwICMj
Ci0qClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFRvb2xzL3Jlc3VsdHNk
YnB5L3Jlc3VsdHNkYnB5L3ZpZXcvc3RhdGljL2xpYnJhcnkvY3NzL2luZGV4Lmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9zdGF0aWMvbGlicmFy
eS9jc3MvaW5kZXguaHRtbAkocmV2aXNpb24gMjY1NTMxKQorKysgVG9vbHMvcmVzdWx0c2RicHkv
cmVzdWx0c2RicHkvdmlldy9zdGF0aWMvbGlicmFyeS9jc3MvaW5kZXguaHRtbAkobm9uZXhpc3Rl
bnQpCkBAIC0xLDMzNTMgKzAsMCBAQAotCi08IS0tIFRoaXMgZmlsZSBpcyBhdXRvIGdlbmVyYXRl
ZCwgcGxlYXNlIGRvIG5vdCBtb2RpZnkgaXQgZGlyZWN0bHkgLS0+Ci08IURPQ1RZUEUgaHRtbD4K
LTxodG1sPgotICAgIDxoZWFkPgotICAgICAgICA8dGl0bGU+QSBTaGFyZWQgQ1NTIGxpYnJhcnkg
Zm9yIHdlYmtpdCBzZXJ2aWNlczwvdGl0bGU+Ci0gICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0id2Via2l0LmNzcyI+PC9saW5rPgotICAgICAgICA8bGluayByZWw9InNob3J0Y3V0
IGljb24iIHNpemVzPSIzMngzMiIgdHlwZT0iaW1hZ2UveC1pY29uIiBocmVmPSJodHRwczovL3dl
YmtpdC5vcmcvZmF2aWNvbi5pY28iPgotICAgICAgICA8bWV0YSBjb250ZW50PSJ3aWR0aD1kZXZp
Y2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSwgdmlld3BvcnQtZml0PWNvdmVyIiBuYW1lPSJ2aWV3
cG9ydCI+Ci0gICAgICAgIDxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KLSAgICA8L2hlYWQ+Ci0gICAg
PGJvZHk+Ci0gICAgPCEtLSBleGFtcGxlIHRvcGJhciAtLT4KLSAgICA8ZGl2IGlkPSJ0b3BiYXIi
IGNsYXNzPSJ0b3BiYXIgZml4ZWQiIHN0eWxlPSJkaXNwbGF5Om5vbmUiPgotICAgICAgICA8ZGl2
IGNsYXNzPSJ0aXRsZSI+Ci0gICAgICAgICAgICBUb3BiYXIKLSAgICAgICAgPC9kaXY+Ci0gICAg
ICAgIDxkaXYgY2xhc3M9ImFjdGlvbnMiPgotICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGlzdCI+
Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaXRlbSI+Ci0gICAgICAgICAgICAgICAgICAg
IDxhPml0ZW0gMTwvYT4KLSAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICA8
ZGl2IGNsYXNzPSJpdGVtIj4KLSAgICAgICAgICAgICAgICAgICAgPGE+aXRlbSAyPC9hPgotICAg
ICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Iml0ZW0iPgot
ICAgICAgICAgICAgICAgICAgICA8YT5pdGVtIDM8L2E+Ci0gICAgICAgICAgICAgICAgPC9kaXY+
Ci0gICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgPC9kaXY+Ci0gICAgPC9kaXY+Ci0gICAgPCEt
LSBlbmQgb2YgZXhhbXBsZSB0b3BiYXIgLS0+Ci0KLSAgICA8IS0tIFNpZGViYXIgLS0+Ci0gICAg
PGRpdiBjbGFzcz0ic2lkZWJhciI+Ci0gICAgICAgIDxkaXYgY2xhc3M9ImhlYWRlciI+Ci0gICAg
ICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZSI+Ci0gICAgICAgICAgICAgICAgPGgyPldlYmtpdC5j
c3M8L2gyPgotICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgIDwvZGl2PgotICAgICAgICA8ZGl2
IGNsYXNzPSJsaXN0Ij4KLSAgICAgICAgCi0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJpdGVtIj4K
LSAgICAgICAgICAgICAgICA8aDM+PGEgaHJlZj0iI1R5cG9ncmFwaHkiPlR5cG9ncmFwaHk8L2E+
PC9oMz4KLSAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0iaXRlbSI+
Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGlzdCI+Ci0gICAgICAgICAgICAgICAgCi0g
ICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0i
aXRlbSBzdWIiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNUeXBvZ3Jh
cGh5LUhlYWRpbmdzIj5IZWFkaW5nczwvYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2
PgotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAg
ICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpdGVtIHN1YiI+Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI1R5cG9ncmFwaHktVGV4dCI+VGV4
dDwvYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAg
ICAKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAg
ICAgICAgICAgICA8ZGl2IGNsYXNzPSJpdGVtIHN1YiI+Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPGEgaHJlZj0iI1R5cG9ncmFwaHktVGV4dCBibG9jayI+VGV4dCBibG9jazwvYT4KLSAg
ICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAKLSAgICAg
ICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAg
ICA8ZGl2IGNsYXNzPSJpdGVtIHN1YiI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEg
aHJlZj0iI1R5cG9ncmFwaHktUXVvdGUiPlF1b3RlPC9hPgotICAgICAgICAgICAgICAgICAgICAg
ICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIAotICAgICAg
ICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNs
YXNzPSJkaXZpZGVyIj48L2Rpdj4KLSAgICAgICAgCi0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJp
dGVtIj4KLSAgICAgICAgICAgICAgICA8aDM+PGEgaHJlZj0iI0xheW91dCI+TGF5b3V0PC9hPjwv
aDM+Ci0gICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9Iml0ZW0iPgot
ICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Imxpc3QiPgotICAgICAgICAgICAgICAgIAotICAg
ICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICA8L2Rp
dj4KLSAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0iZGl2aWRlciI+
PC9kaXY+Ci0gICAgICAgIAotICAgICAgICAgICAgPGRpdiBjbGFzcz0iaXRlbSI+Ci0gICAgICAg
ICAgICAgICAgPGgzPjxhIGhyZWY9IiNFbGVtZW50cyI+RWxlbWVudHM8L2E+PC9oMz4KLSAgICAg
ICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0iaXRlbSI+Ci0gICAgICAgICAg
ICAgICAgPGRpdiBjbGFzcz0ibGlzdCI+Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAg
ICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaXRlbSBzdWIiPgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNFbGVtZW50cy1Ub3BiYXIiPlRv
cGJhcjwvYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAg
ICAgICAKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAg
ICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpdGVtIHN1YiI+Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPGEgaHJlZj0iI0VsZW1lbnRzLVNlY3Rpb24iPlNlY3Rpb248L2E+Ci0gICAgICAg
ICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAg
ICAgICAgCi0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgPGRp
diBjbGFzcz0iaXRlbSBzdWIiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9
IiNFbGVtZW50cy1QbGFjZWhvbGRlciI+UGxhY2Vob2xkZXI8L2E+Ci0gICAgICAgICAgICAgICAg
ICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgCi0g
ICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0i
aXRlbSBzdWIiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNFbGVtZW50
cy1Mb2FkZXIiPkxvYWRlcjwvYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAg
ICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAg
Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpdGVtIHN1YiI+Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI0VsZW1lbnRzLVByb2dyZXNzIGJhciI+UHJv
Z3Jlc3MgYmFyPC9hPgotICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAg
ICAgICAgICAgIAotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAKLSAgICAg
ICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Iml0ZW0gc3ViIj4KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA8YSBocmVmPSIjRWxlbWVudHMtTGlzdCI+TGlzdDwvYT4KLSAgICAgICAg
ICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAg
ICAgICAKLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2
IGNsYXNzPSJpdGVtIHN1YiI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0i
I0VsZW1lbnRzLVNpZGViYXIiPlNpZGViYXI8L2E+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8
L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgCi0gICAgICAgICAg
ICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaXRlbSBzdWIi
PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNFbGVtZW50cy1EcmF3ZXIi
PkRyYXdlcjwvYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAg
ICAgICAgICAKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAg
ICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpdGVtIHN1YiI+Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPGEgaHJlZj0iI0VsZW1lbnRzLVRhYmxlIj5UYWJsZTwvYT4KLSAgICAgICAg
ICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAg
ICAgICAKLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2
IGNsYXNzPSJpdGVtIHN1YiI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0i
I0VsZW1lbnRzLUlucHV0cyI+SW5wdXRzPC9hPgotICAgICAgICAgICAgICAgICAgICAgICAgPC9k
aXY+Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAg
ICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Iml0ZW0gc3ViIj4K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjRWxlbWVudHMtQnV0dG9uIj5C
dXR0b248L2E+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAg
ICAgICAgCi0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAg
ICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaXRlbSBzdWIiPgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDxhIGhyZWY9IiNFbGVtZW50cy1Td2l0Y2giPlN3aXRjaDwvYT4KLSAgICAgICAg
ICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAg
ICAgICAKLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2
IGNsYXNzPSJpdGVtIHN1YiI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0i
I0VsZW1lbnRzLUJhZGdlIj5CYWRnZTwvYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2
PgotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAg
ICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpdGVtIHN1YiI+Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI0VsZW1lbnRzLURvdCI+RG90PC9h
PgotICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgIAot
ICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAg
ICAgICAgIDxkaXYgY2xhc3M9Iml0ZW0gc3ViIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA8YSBocmVmPSIjRWxlbWVudHMtY2hpcCI+Y2hpcDwvYT4KLSAgICAgICAgICAgICAgICAgICAg
ICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAKLSAgICAg
ICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpdGVt
IHN1YiI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI0VsZW1lbnRzLVRh
YnMiPlRhYnM8L2E+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAg
ICAgICAgICAgCi0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIAotICAgICAg
ICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaXRlbSBzdWIiPgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDxhIGhyZWY9IiNFbGVtZW50cy1UaW1lbGluZSI+VGltZWxpbmU8L2E+Ci0g
ICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgCi0gICAg
ICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAg
ICAgPGRpdiBjbGFzcz0iaXRlbSBzdWIiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxh
IGhyZWY9IiNFbGVtZW50cy1MZW5nZW5kIj5MZW5nZW5kPC9hPgotICAgICAgICAgICAgICAgICAg
ICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIAotICAg
ICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Iml0
ZW0gc3ViIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjRWxlbWVudHMt
UG9wb3ZlciI+UG9wb3ZlcjwvYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAg
ICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICA8L2Rp
dj4KLSAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0iZGl2aWRlciI+
PC9kaXY+Ci0gICAgICAgIAotICAgICAgICA8L2Rpdj4KLSAgICA8L2Rpdj4KLSAgICA8IS0tIEVu
ZCBvZiBzaWRlYmFyIC0tPgotCi0gICAgPCEtLSBjb250ZW50IC0tPgotICAgIDxkaXYgY2xhc3M9
Im1haW4iPgotICAgICAgICAKLSAgICAgICAgICAgIDxkaXYgaWQ9IlR5cG9ncmFwaHkiIGNsYXNz
PSJzZWN0aW9uIGFydGljbGUiPgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImhlYWRlciI+
Ci0gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlIj4KLSAgICAgICAgICAgICAg
ICAgICAgICAgIDxoMT5UeXBvZ3JhcGh5PC9oMT4KLSAgICAgICAgICAgICAgICAgICAgPC9kaXY+
Ci0gICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAg
ICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGVyIiBpZD0i
VHlwb2dyYXBoeS1IZWFkaW5ncyI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBj
bGFzcz0idGl0bGUiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgyPkhlYWRpbmdz
PC9oMj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAg
ICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAg
ICAgCi0gICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgIDxk
aXYgY2xhc3M9ImNvbnRlbnQiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcmU+PHht
cD48aDE+VGhpcyBpcyBIMTwvaDE+Ci08aDI+VGhpcyBpcyBIMjwvaDI+Ci08aDM+VGhpcyBpcyBI
MzwvaDM+Ci08aDQ+VGhpcyBpcyBINDwvaDQ+PC94bXA+PC9wcmU+Ci0gICAgICAgICAgICAgICAg
ICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRl
bnQiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMT5UaGlzIGlzIEgxPC9oMT4KLTxo
Mj5UaGlzIGlzIEgyPC9oMj4KLTxoMz5UaGlzIGlzIEgzPC9oMz4KLTxoND5UaGlzIGlzIEg0PC9o
ND4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAK
LSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAg
ICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkZXIiIGlkPSJUeXBvZ3JhcGh5LVRleHQiPgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlIj4KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDxoMj5UZXh0PC9oMj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAg
ICAgICAKLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICAKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVXNlIGNsYXNzICJ0ZXh0IiBhbG9uZyB3aXRoIGRpZmZl
cmVudCBzaXplIGNsYXNzIHRvIGNvbnRyb2wgdGhlIGZvbnQgc2l6ZS4KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAg
ICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudCI+Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPHByZT48eG1wPjxkaXYgY2xhc3M9InRleHQiPkRlZmF1bHQ8L2Rpdj4KLTxkaXYg
Y2xhc3M9InRleHQgaHVnZSI+VGhpcyBpcyBIdWdlPC9kaXY+Ci08ZGl2IGNsYXNzPSJ0ZXh0IGxh
cmdlIj5UaGlzIGlzIExhcmdlPC9kaXY+Ci08ZGl2IGNsYXNzPSJ0ZXh0IG1lZGl1bSI+VGhpcyBp
cyBtZWRpdW08L2Rpdj4KLTxkaXYgY2xhc3M9InRleHQgc21hbGwiPlRoaXMgaXMgc21hbGw8L2Rp
dj4KLTxkaXYgY2xhc3M9InRleHQgdGlueSI+VGhpcyBpcyB0aW55PC9kaXY+PC94bXA+PC9wcmU+
Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAg
IDxkaXYgY2xhc3M9ImNvbnRlbnQiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYg
Y2xhc3M9InRleHQiPkRlZmF1bHQ8L2Rpdj4KLTxkaXYgY2xhc3M9InRleHQgaHVnZSI+VGhpcyBp
cyBIdWdlPC9kaXY+Ci08ZGl2IGNsYXNzPSJ0ZXh0IGxhcmdlIj5UaGlzIGlzIExhcmdlPC9kaXY+
Ci08ZGl2IGNsYXNzPSJ0ZXh0IG1lZGl1bSI+VGhpcyBpcyBtZWRpdW08L2Rpdj4KLTxkaXYgY2xh
c3M9InRleHQgc21hbGwiPlRoaXMgaXMgc21hbGw8L2Rpdj4KLTxkaXYgY2xhc3M9InRleHQgdGlu
eSI+VGhpcyBpcyB0aW55PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAg
ICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAg
IAotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGVyIiBpZD0iVHlwb2dy
YXBoeS1UZXh0LWJsb2NrIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNz
PSJ0aXRsZSI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDI+VGV4dCBibG9jazwv
aDI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAg
ICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAg
IAotICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
PGRpdiBjbGFzcz0iY29udGVudCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVz
ZSBjbGFzcyAidGV4dCIgYWxvbmcgd2l0aCAiYmxvY2siIHRvIG1ha2UgaW5saW5lLWJsb2NrIHRl
eHQgYmxvY2tzLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAg
ICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250
ZW50Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJlPjx4bXA+PGRpdiBjbGFzcz0i
dGV4dCBibG9jayI+Ci0gICAgPGRpdiBjbGFzcz0idGV4dCB0aW55Ij5pTWFjIDI3IiAoTGF0ZSAy
MDEyKTwvZGl2PgotICAgIDxkaXYgY2xhc3M9InRleHQgc21hbGwiPmlNYWMgMTMsMjwvZGl2Pgot
PC9kaXY+Ci08ZGl2IGNsYXNzPSJ0ZXh0IGJsb2NrIj4KLSAgICA8ZGl2IGNsYXNzPSJ0ZXh0IHRp
bnkiPmlNYWMgMjciIChMYXRlIDIwMTMpPC9kaXY+Ci0gICAgPGRpdiBjbGFzcz0idGV4dCBzbWFs
bCI+aU1hYyAxNCwyPC9kaXY+Ci08L2Rpdj48L3htcD48L3ByZT4KLSAgICAgICAgICAgICAgICAg
ICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGVu
dCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dCBibG9jayI+
Ci0gICAgPGRpdiBjbGFzcz0idGV4dCB0aW55Ij5pTWFjIDI3IiAoTGF0ZSAyMDEyKTwvZGl2Pgot
ICAgIDxkaXYgY2xhc3M9InRleHQgc21hbGwiPmlNYWMgMTMsMjwvZGl2PgotPC9kaXY+Ci08ZGl2
IGNsYXNzPSJ0ZXh0IGJsb2NrIj4KLSAgICA8ZGl2IGNsYXNzPSJ0ZXh0IHRpbnkiPmlNYWMgMjci
IChMYXRlIDIwMTMpPC9kaXY+Ci0gICAgPGRpdiBjbGFzcz0idGV4dCBzbWFsbCI+aU1hYyAxNCwy
PC9kaXY+Ci08L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAg
ICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgCi0gICAg
ICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkZXIiIGlkPSJUeXBvZ3JhcGh5LVF1
b3RlIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZSI+Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDI+UXVvdGU8L2gyPgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0g
ICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAg
ICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudCI+
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByZT48eG1wPjxwcmU+Ci0gICAgSSBhbSBh
IHF1b3RlCi08L3ByZT48L3htcD48L3ByZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2
PgotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudCI+Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPHByZT4KLSAgICBJIGFtIGEgcXVvdGUKLTwvcHJlPgotICAg
ICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAg
ICAgICAgICAgIAotICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgIAotICAgICAgICAgICAgPGRp
diBpZD0iTGF5b3V0IiBjbGFzcz0ic2VjdGlvbiBhcnRpY2xlIj4KLSAgICAgICAgICAgICAgICA8
ZGl2IGNsYXNzPSJoZWFkZXIiPgotICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRs
ZSI+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8aDE+TGF5b3V0PC9oMT4KLSAgICAgICAgICAg
ICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAg
Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAg
ICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGVu
dCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByZT48eG1wPjxkaXYgY2xhc3M9InJv
dyI+Ci0gICAgPGRpdiBjbGFzcz0iY29sLTEyIj4KLSAgICAgICAgPGRpdiBjbGFzcz0icGxhY2Vo
b2xkZXIgZGltbWVyIHRpbnkiPjxwIGNsYXNzPSJsb2FkZXIiPmNvbC0xMjwvcD48L2Rpdj4KLSAg
ICA8L2Rpdj4KLTwvZGl2PgotPGRpdiBjbGFzcz0icm93Ij4KLSAgICA8ZGl2IGNsYXNzPSJjb2wt
NiI+Ci0gICAgICAgIDxkaXYgY2xhc3M9InBsYWNlaG9sZGVyIGRpbW1lciB0aW55Ij48cCBjbGFz
cz0ibG9hZGVyIj5jb2wtNjwvcD48L2Rpdj4KLSAgICA8L2Rpdj4KLSAgICA8ZGl2IGNsYXNzPSJj
b2wtNiI+Ci0gICAgICAgIDxkaXYgY2xhc3M9InBsYWNlaG9sZGVyIGRpbW1lciB0aW55Ij48cCBj
bGFzcz0ibG9hZGVyIj5jb2wtNjwvcD48L2Rpdj4KLSAgICA8L2Rpdj4KLTwvZGl2PgotPGRpdiBj
bGFzcz0icm93Ij4KLSAgICA8ZGl2IGNsYXNzPSJjb2wtNCI+Ci0gICAgICAgIDxkaXYgY2xhc3M9
InBsYWNlaG9sZGVyIGRpbW1lciB0aW55Ij48cCBjbGFzcz0ibG9hZGVyIj5jb2wtNDwvcD48L2Rp
dj4KLSAgICA8L2Rpdj4KLSAgICA8ZGl2IGNsYXNzPSJjb2wtOCI+Ci0gICAgICAgIDxkaXYgY2xh
c3M9InBsYWNlaG9sZGVyIGRpbW1lciB0aW55Ij48cCBjbGFzcz0ibG9hZGVyIj5jb2wtODwvcD48
L2Rpdj4KLSAgICA8L2Rpdj4KLTwvZGl2PgotPGRpdiBjbGFzcz0icm93Ij4KLSAgICA8ZGl2IGNs
YXNzPSJjb2wtMiI+Ci0gICAgICAgIDxkaXYgY2xhc3M9InBsYWNlaG9sZGVyIGRpbW1lciB0aW55
Ij48cCBjbGFzcz0ibG9hZGVyIj5jb2wtMjwvcD48L2Rpdj4KLSAgICA8L2Rpdj4KLSAgICA8ZGl2
IGNsYXNzPSJjb2wtMiI+Ci0gICAgICAgIDxkaXYgY2xhc3M9InBsYWNlaG9sZGVyIGRpbW1lciB0
aW55Ij48cCBjbGFzcz0ibG9hZGVyIj5jb2wtMjwvcD48L2Rpdj4KLSAgICA8L2Rpdj4KLSAgICA8
ZGl2IGNsYXNzPSJjb2wtOCI+Ci0gICAgICAgIDxkaXYgY2xhc3M9InBsYWNlaG9sZGVyIGRpbW1l
ciB0aW55Ij48cCBjbGFzcz0ibG9hZGVyIj5jb2wtODwvcD48L2Rpdj4KLSAgICA8L2Rpdj4KLTwv
ZGl2PgotPGRpdiBjbGFzcz0icm93Ij4KLSAgICA8ZGl2IGNsYXNzPSJjb2wtMSI+PGRpdiBjbGFz
cz0icGxhY2Vob2xkZXIgZGltbWVyIHRpbnkiPjxwIGNsYXNzPSJsb2FkZXIiPmNvbC0xPC9wPjwv
ZGl2PjwvZGl2PgotICAgIDxkaXYgY2xhc3M9ImNvbC0xIj48ZGl2IGNsYXNzPSJwbGFjZWhvbGRl
ciBkaW1tZXIgdGlueSI+PHAgY2xhc3M9ImxvYWRlciI+Y29sLTE8L3A+PC9kaXY+PC9kaXY+Ci0g
ICAgPGRpdiBjbGFzcz0iY29sLTEiPjxkaXYgY2xhc3M9InBsYWNlaG9sZGVyIGRpbW1lciB0aW55
Ij48cCBjbGFzcz0ibG9hZGVyIj5jb2wtMTwvcD48L2Rpdj48L2Rpdj4KLSAgICA8ZGl2IGNsYXNz
PSJjb2wtMSI+PGRpdiBjbGFzcz0icGxhY2Vob2xkZXIgZGltbWVyIHRpbnkiPjxwIGNsYXNzPSJs
b2FkZXIiPmNvbC0xPC9wPjwvZGl2PjwvZGl2PgotICAgIDxkaXYgY2xhc3M9ImNvbC0xIj48ZGl2
IGNsYXNzPSJwbGFjZWhvbGRlciBkaW1tZXIgdGlueSI+PHAgY2xhc3M9ImxvYWRlciI+Y29sLTE8
L3A+PC9kaXY+PC9kaXY+Ci0gICAgPGRpdiBjbGFzcz0iY29sLTEiPjxkaXYgY2xhc3M9InBsYWNl
aG9sZGVyIGRpbW1lciB0aW55Ij48cCBjbGFzcz0ibG9hZGVyIj5jb2wtMTwvcD48L2Rpdj48L2Rp
dj4KLSAgICA8ZGl2IGNsYXNzPSJjb2wtMSI+PGRpdiBjbGFzcz0icGxhY2Vob2xkZXIgZGltbWVy
IHRpbnkiPjxwIGNsYXNzPSJsb2FkZXIiPmNvbC0xPC9wPjwvZGl2PjwvZGl2PgotICAgIDxkaXYg
Y2xhc3M9ImNvbC0xIj48ZGl2IGNsYXNzPSJwbGFjZWhvbGRlciBkaW1tZXIgdGlueSI+PHAgY2xh
c3M9ImxvYWRlciI+Y29sLTE8L3A+PC9kaXY+PC9kaXY+Ci0gICAgPGRpdiBjbGFzcz0iY29sLTEi
PjxkaXYgY2xhc3M9InBsYWNlaG9sZGVyIGRpbW1lciB0aW55Ij48cCBjbGFzcz0ibG9hZGVyIj5j
b2wtMTwvcD48L2Rpdj48L2Rpdj4KLSAgICA8ZGl2IGNsYXNzPSJjb2wtMSI+PGRpdiBjbGFzcz0i
cGxhY2Vob2xkZXIgZGltbWVyIHRpbnkiPjxwIGNsYXNzPSJsb2FkZXIiPmNvbC0xPC9wPjwvZGl2
PjwvZGl2PgotICAgIDxkaXYgY2xhc3M9ImNvbC0xIj48ZGl2IGNsYXNzPSJwbGFjZWhvbGRlciBk
aW1tZXIgdGlueSI+PHAgY2xhc3M9ImxvYWRlciI+Y29sLTE8L3A+PC9kaXY+PC9kaXY+Ci0gICAg
PGRpdiBjbGFzcz0iY29sLTEiPjxkaXYgY2xhc3M9InBsYWNlaG9sZGVyIGRpbW1lciB0aW55Ij48
cCBjbGFzcz0ibG9hZGVyIj5jb2wtMTwvcD48L2Rpdj48L2Rpdj4KLTwvZGl2PgotCi08ZGl2IGNs
YXNzPSJyb3ciPgotICAgIDxkaXYgY2xhc3M9ImNvbC1zLTEyIj4KLSAgICAgICAgPGRpdiBjbGFz
cz0icGxhY2Vob2xkZXIgZGltbWVyIHRpbnkiPjxwIGNsYXNzPSJsb2FkZXIiPmNvbC1zLTEyPC9w
PjwvZGl2PgotICAgIDwvZGl2PgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJyb3ciPgotICAgIDxkaXYg
Y2xhc3M9ImNvbC1zLTYiPgotICAgICAgICA8ZGl2IGNsYXNzPSJwbGFjZWhvbGRlciBkaW1tZXIg
dGlueSI+PHAgY2xhc3M9ImxvYWRlciI+Y29sLXMtNjwvcD48L2Rpdj4KLSAgICA8L2Rpdj4KLSAg
ICA8ZGl2IGNsYXNzPSJjb2wtcy02Ij4KLSAgICAgICAgPGRpdiBjbGFzcz0icGxhY2Vob2xkZXIg
ZGltbWVyIHRpbnkiPjxwIGNsYXNzPSJsb2FkZXIiPmNvbC1zLTY8L3A+PC9kaXY+Ci0gICAgPC9k
aXY+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9InJvdyI+Ci0gICAgPGRpdiBjbGFzcz0iY29sLXMtNCI+
Ci0gICAgICAgIDxkaXYgY2xhc3M9InBsYWNlaG9sZGVyIGRpbW1lciB0aW55Ij48cCBjbGFzcz0i
bG9hZGVyIj5jb2wtcy00PC9wPjwvZGl2PgotICAgIDwvZGl2PgotICAgIDxkaXYgY2xhc3M9ImNv
bC1zLTgiPgotICAgICAgICA8ZGl2IGNsYXNzPSJwbGFjZWhvbGRlciBkaW1tZXIgdGlueSI+PHAg
Y2xhc3M9ImxvYWRlciI+Y29sLXMtODwvcD48L2Rpdj4KLSAgICA8L2Rpdj4KLTwvZGl2PgotPGRp
diBjbGFzcz0icm93Ij4KLSAgICA8ZGl2IGNsYXNzPSJjb2wtcy0yIj4KLSAgICAgICAgPGRpdiBj
bGFzcz0icGxhY2Vob2xkZXIgZGltbWVyIHRpbnkiPjxwIGNsYXNzPSJsb2FkZXIiPmNvbC1zLTI8
L3A+PC9kaXY+Ci0gICAgPC9kaXY+Ci0gICAgPGRpdiBjbGFzcz0iY29sLXMtMiI+Ci0gICAgICAg
IDxkaXYgY2xhc3M9InBsYWNlaG9sZGVyIGRpbW1lciB0aW55Ij48cCBjbGFzcz0ibG9hZGVyIj5j
b2wtcy0yPC9wPjwvZGl2PgotICAgIDwvZGl2PgotICAgIDxkaXYgY2xhc3M9ImNvbC1zLTgiPgot
ICAgICAgICA8ZGl2IGNsYXNzPSJwbGFjZWhvbGRlciBkaW1tZXIgdGlueSI+PHAgY2xhc3M9Imxv
YWRlciI+Y29sLXMtODwvcD48L2Rpdj4KLSAgICA8L2Rpdj4KLTwvZGl2PjwveG1wPjwvcHJlPgot
ICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8
ZGl2IGNsYXNzPSJjb250ZW50Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNs
YXNzPSJyb3ciPgotICAgIDxkaXYgY2xhc3M9ImNvbC0xMiI+Ci0gICAgICAgIDxkaXYgY2xhc3M9
InBsYWNlaG9sZGVyIGRpbW1lciB0aW55Ij48cCBjbGFzcz0ibG9hZGVyIj5jb2wtMTI8L3A+PC9k
aXY+Ci0gICAgPC9kaXY+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9InJvdyI+Ci0gICAgPGRpdiBjbGFz
cz0iY29sLTYiPgotICAgICAgICA8ZGl2IGNsYXNzPSJwbGFjZWhvbGRlciBkaW1tZXIgdGlueSI+
PHAgY2xhc3M9ImxvYWRlciI+Y29sLTY8L3A+PC9kaXY+Ci0gICAgPC9kaXY+Ci0gICAgPGRpdiBj
bGFzcz0iY29sLTYiPgotICAgICAgICA8ZGl2IGNsYXNzPSJwbGFjZWhvbGRlciBkaW1tZXIgdGlu
eSI+PHAgY2xhc3M9ImxvYWRlciI+Y29sLTY8L3A+PC9kaXY+Ci0gICAgPC9kaXY+Ci08L2Rpdj4K
LTxkaXYgY2xhc3M9InJvdyI+Ci0gICAgPGRpdiBjbGFzcz0iY29sLTQiPgotICAgICAgICA8ZGl2
IGNsYXNzPSJwbGFjZWhvbGRlciBkaW1tZXIgdGlueSI+PHAgY2xhc3M9ImxvYWRlciI+Y29sLTQ8
L3A+PC9kaXY+Ci0gICAgPC9kaXY+Ci0gICAgPGRpdiBjbGFzcz0iY29sLTgiPgotICAgICAgICA8
ZGl2IGNsYXNzPSJwbGFjZWhvbGRlciBkaW1tZXIgdGlueSI+PHAgY2xhc3M9ImxvYWRlciI+Y29s
LTg8L3A+PC9kaXY+Ci0gICAgPC9kaXY+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9InJvdyI+Ci0gICAg
PGRpdiBjbGFzcz0iY29sLTIiPgotICAgICAgICA8ZGl2IGNsYXNzPSJwbGFjZWhvbGRlciBkaW1t
ZXIgdGlueSI+PHAgY2xhc3M9ImxvYWRlciI+Y29sLTI8L3A+PC9kaXY+Ci0gICAgPC9kaXY+Ci0g
ICAgPGRpdiBjbGFzcz0iY29sLTIiPgotICAgICAgICA8ZGl2IGNsYXNzPSJwbGFjZWhvbGRlciBk
aW1tZXIgdGlueSI+PHAgY2xhc3M9ImxvYWRlciI+Y29sLTI8L3A+PC9kaXY+Ci0gICAgPC9kaXY+
Ci0gICAgPGRpdiBjbGFzcz0iY29sLTgiPgotICAgICAgICA8ZGl2IGNsYXNzPSJwbGFjZWhvbGRl
ciBkaW1tZXIgdGlueSI+PHAgY2xhc3M9ImxvYWRlciI+Y29sLTg8L3A+PC9kaXY+Ci0gICAgPC9k
aXY+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9InJvdyI+Ci0gICAgPGRpdiBjbGFzcz0iY29sLTEiPjxk
aXYgY2xhc3M9InBsYWNlaG9sZGVyIGRpbW1lciB0aW55Ij48cCBjbGFzcz0ibG9hZGVyIj5jb2wt
MTwvcD48L2Rpdj48L2Rpdj4KLSAgICA8ZGl2IGNsYXNzPSJjb2wtMSI+PGRpdiBjbGFzcz0icGxh
Y2Vob2xkZXIgZGltbWVyIHRpbnkiPjxwIGNsYXNzPSJsb2FkZXIiPmNvbC0xPC9wPjwvZGl2Pjwv
ZGl2PgotICAgIDxkaXYgY2xhc3M9ImNvbC0xIj48ZGl2IGNsYXNzPSJwbGFjZWhvbGRlciBkaW1t
ZXIgdGlueSI+PHAgY2xhc3M9ImxvYWRlciI+Y29sLTE8L3A+PC9kaXY+PC9kaXY+Ci0gICAgPGRp
diBjbGFzcz0iY29sLTEiPjxkaXYgY2xhc3M9InBsYWNlaG9sZGVyIGRpbW1lciB0aW55Ij48cCBj
bGFzcz0ibG9hZGVyIj5jb2wtMTwvcD48L2Rpdj48L2Rpdj4KLSAgICA8ZGl2IGNsYXNzPSJjb2wt
MSI+PGRpdiBjbGFzcz0icGxhY2Vob2xkZXIgZGltbWVyIHRpbnkiPjxwIGNsYXNzPSJsb2FkZXIi
PmNvbC0xPC9wPjwvZGl2PjwvZGl2PgotICAgIDxkaXYgY2xhc3M9ImNvbC0xIj48ZGl2IGNsYXNz
PSJwbGFjZWhvbGRlciBkaW1tZXIgdGlueSI+PHAgY2xhc3M9ImxvYWRlciI+Y29sLTE8L3A+PC9k
aXY+PC9kaXY+Ci0gICAgPGRpdiBjbGFzcz0iY29sLTEiPjxkaXYgY2xhc3M9InBsYWNlaG9sZGVy
IGRpbW1lciB0aW55Ij48cCBjbGFzcz0ibG9hZGVyIj5jb2wtMTwvcD48L2Rpdj48L2Rpdj4KLSAg
ICA8ZGl2IGNsYXNzPSJjb2wtMSI+PGRpdiBjbGFzcz0icGxhY2Vob2xkZXIgZGltbWVyIHRpbnki
PjxwIGNsYXNzPSJsb2FkZXIiPmNvbC0xPC9wPjwvZGl2PjwvZGl2PgotICAgIDxkaXYgY2xhc3M9
ImNvbC0xIj48ZGl2IGNsYXNzPSJwbGFjZWhvbGRlciBkaW1tZXIgdGlueSI+PHAgY2xhc3M9Imxv
YWRlciI+Y29sLTE8L3A+PC9kaXY+PC9kaXY+Ci0gICAgPGRpdiBjbGFzcz0iY29sLTEiPjxkaXYg
Y2xhc3M9InBsYWNlaG9sZGVyIGRpbW1lciB0aW55Ij48cCBjbGFzcz0ibG9hZGVyIj5jb2wtMTwv
cD48L2Rpdj48L2Rpdj4KLSAgICA8ZGl2IGNsYXNzPSJjb2wtMSI+PGRpdiBjbGFzcz0icGxhY2Vo
b2xkZXIgZGltbWVyIHRpbnkiPjxwIGNsYXNzPSJsb2FkZXIiPmNvbC0xPC9wPjwvZGl2PjwvZGl2
PgotICAgIDxkaXYgY2xhc3M9ImNvbC0xIj48ZGl2IGNsYXNzPSJwbGFjZWhvbGRlciBkaW1tZXIg
dGlueSI+PHAgY2xhc3M9ImxvYWRlciI+Y29sLTE8L3A+PC9kaXY+PC9kaXY+Ci08L2Rpdj4KLQot
PGRpdiBjbGFzcz0icm93Ij4KLSAgICA8ZGl2IGNsYXNzPSJjb2wtcy0xMiI+Ci0gICAgICAgIDxk
aXYgY2xhc3M9InBsYWNlaG9sZGVyIGRpbW1lciB0aW55Ij48cCBjbGFzcz0ibG9hZGVyIj5jb2wt
cy0xMjwvcD48L2Rpdj4KLSAgICA8L2Rpdj4KLTwvZGl2PgotPGRpdiBjbGFzcz0icm93Ij4KLSAg
ICA8ZGl2IGNsYXNzPSJjb2wtcy02Ij4KLSAgICAgICAgPGRpdiBjbGFzcz0icGxhY2Vob2xkZXIg
ZGltbWVyIHRpbnkiPjxwIGNsYXNzPSJsb2FkZXIiPmNvbC1zLTY8L3A+PC9kaXY+Ci0gICAgPC9k
aXY+Ci0gICAgPGRpdiBjbGFzcz0iY29sLXMtNiI+Ci0gICAgICAgIDxkaXYgY2xhc3M9InBsYWNl
aG9sZGVyIGRpbW1lciB0aW55Ij48cCBjbGFzcz0ibG9hZGVyIj5jb2wtcy02PC9wPjwvZGl2Pgot
ICAgIDwvZGl2PgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJyb3ciPgotICAgIDxkaXYgY2xhc3M9ImNv
bC1zLTQiPgotICAgICAgICA8ZGl2IGNsYXNzPSJwbGFjZWhvbGRlciBkaW1tZXIgdGlueSI+PHAg
Y2xhc3M9ImxvYWRlciI+Y29sLXMtNDwvcD48L2Rpdj4KLSAgICA8L2Rpdj4KLSAgICA8ZGl2IGNs
YXNzPSJjb2wtcy04Ij4KLSAgICAgICAgPGRpdiBjbGFzcz0icGxhY2Vob2xkZXIgZGltbWVyIHRp
bnkiPjxwIGNsYXNzPSJsb2FkZXIiPmNvbC1zLTg8L3A+PC9kaXY+Ci0gICAgPC9kaXY+Ci08L2Rp
dj4KLTxkaXYgY2xhc3M9InJvdyI+Ci0gICAgPGRpdiBjbGFzcz0iY29sLXMtMiI+Ci0gICAgICAg
IDxkaXYgY2xhc3M9InBsYWNlaG9sZGVyIGRpbW1lciB0aW55Ij48cCBjbGFzcz0ibG9hZGVyIj5j
b2wtcy0yPC9wPjwvZGl2PgotICAgIDwvZGl2PgotICAgIDxkaXYgY2xhc3M9ImNvbC1zLTIiPgot
ICAgICAgICA8ZGl2IGNsYXNzPSJwbGFjZWhvbGRlciBkaW1tZXIgdGlueSI+PHAgY2xhc3M9Imxv
YWRlciI+Y29sLXMtMjwvcD48L2Rpdj4KLSAgICA8L2Rpdj4KLSAgICA8ZGl2IGNsYXNzPSJjb2wt
cy04Ij4KLSAgICAgICAgPGRpdiBjbGFzcz0icGxhY2Vob2xkZXIgZGltbWVyIHRpbnkiPjxwIGNs
YXNzPSJsb2FkZXIiPmNvbC1zLTg8L3A+PC9kaXY+Ci0gICAgPC9kaXY+Ci08L2Rpdj4KLSAgICAg
ICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAg
ICAgICAgICAKLSAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAKLSAgICAgICAgICAgIDxkaXYg
aWQ9IkVsZW1lbnRzIiBjbGFzcz0ic2VjdGlvbiBhcnRpY2xlIj4KLSAgICAgICAgICAgICAgICA8
ZGl2IGNsYXNzPSJoZWFkZXIiPgotICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRs
ZSI+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8aDE+RWxlbWVudHM8L2gxPgotICAgICAgICAg
ICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAg
ICAKLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNs
YXNzPSJoZWFkZXIiIGlkPSJFbGVtZW50cy1Ub3BiYXIiPgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDxkaXYgY2xhc3M9InRpdGxlIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDxoMj5Ub3BiYXI8L2gyPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAg
ICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAg
ICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAg
ICAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPHByZT48eG1wPjxkaXYgY2xhc3M9InRvcGJhciI+Ci0gICAgPGRpdiBjbGFzcz0idGl0bGUi
Pk15IEFwcDwvZGl2PgotICAgIDxkaXYgY2xhc3M9ImFjdGlvbnMiPgotICAgICAgICA8ZGl2IGNs
YXNzPSJsaXN0Ij4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9Iml0ZW0iPgotICAgICAgICAgICAg
ICAgIDxhPmxpbmsgMTwvYT4KLSAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPGRpdiBj
bGFzcz0iaXRlbSI+Ci0gICAgICAgICAgICAgICAgPGE+bGluayAyPC9hPgotICAgICAgICAgICAg
PC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJpdGVtIj4KLSAgICAgICAgICAgICAgICA8
YT5saW5rIDM8L2E+Ci0gICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgPC9kaXY+Ci0gICAgPC9k
aXY+Ci08L2Rpdj48L3htcD48L3ByZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pgot
ICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudCI+Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idG9wYmFyIj4KLSAgICA8ZGl2IGNsYXNzPSJ0
aXRsZSI+TXkgQXBwPC9kaXY+Ci0gICAgPGRpdiBjbGFzcz0iYWN0aW9ucyI+Ci0gICAgICAgIDxk
aXYgY2xhc3M9Imxpc3QiPgotICAgICAgICAgICAgPGRpdiBjbGFzcz0iaXRlbSI+Ci0gICAgICAg
ICAgICAgICAgPGE+bGluayAxPC9hPgotICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICA8
ZGl2IGNsYXNzPSJpdGVtIj4KLSAgICAgICAgICAgICAgICA8YT5saW5rIDI8L2E+Ci0gICAgICAg
ICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9Iml0ZW0iPgotICAgICAgICAgICAg
ICAgIDxhPmxpbmsgMzwvYT4KLSAgICAgICAgICAgIDwvZGl2PgotICAgICAgICA8L2Rpdj4KLSAg
ICA8L2Rpdj4KLTwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAg
ICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAKLSAg
ICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImhlYWRlciIgaWQ9IkVsZW1lbnRzLVNl
Y3Rpb24iPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlIj4K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMj5TZWN0aW9uPC9oMj4KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2
PgotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAg
ICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRl
bnQiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcmU+PHhtcD48ZGl2IGNsYXNzPSJj
b250ZW50Ij4KLSAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uIj4KLSAgICAgICAgPGRpdiBjbGFzcz0i
aGVhZGVyIj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlIj4KLSAgICAgICAgICAgICAg
ICBUaXRsZQotICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY3Rp
b25zIj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsaXN0Ij4KLSAgICAgICAgICAgICAg
ICAgICAgPGRpdiBjbGFzcz0iaXRlbSI+Ci0gICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb24g
MQotICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgPGRpdiBj
bGFzcz0iaXRlbSI+Ci0gICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb24gMgotICAgICAgICAg
ICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDwv
ZGl2PgotICAgICAgICA8L2Rpdj4KLSAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudCI+Ci0gICAg
ICAgICAgICA8cD5Mb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0dXIgYWRpcGlz
Y2luZyBlbGl0LCBzZWQgZG8gZWl1c21vZCB0ZW1wb3IgaW5jaWRpZHVudCB1dCBsYWJvcmUgZXQg
ZG9sb3JlIG1hZ25hIGFsaXF1YS4gVXQgZW5pbSBhZCBtaW5pbSB2ZW5pYW0sIHF1aXMgbm9zdHJ1
ZCBleGVyY2l0YXRpb24gdWxsYW1jbyBsYWJvcmlzIG5pc2kgdXQgYWxpcXVpcCBleCBlYSBjb21t
b2RvIGNvbnNlcXVhdC4gRHVpcyBhdXRlIGlydXJlIGRvbG9yIGluIHJlcHJlaGVuZGVyaXQgaW4g
dm9sdXB0YXRlIHZlbGl0IGVzc2UgY2lsbHVtIGRvbG9yZSBldSBmdWdpYXQgbnVsbGEgcGFyaWF0
dXIuIEV4Y2VwdGV1ciBzaW50IG9jY2FlY2F0IGN1cGlkYXRhdCBub24gcHJvaWRlbnQsIHN1bnQg
aW4gY3VscGEgcXVpIG9mZmljaWEgZGVzZXJ1bnQgbW9sbGl0IGFuaW0gaWQgZXN0IGxhYm9ydW0u
PC9wPgotICAgICAgICA8L2Rpdj4KLSAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9ucyI+Ci0gICAg
ICAgICAgICA8YnV0dG9uIGNsYXNzPSJidXR0b24iPkJ1dHRvbiAxPC9idXR0b24+Ci0gICAgICAg
ICAgICA8YnV0dG9uIGNsYXNzPSJidXR0b24iPkJ1dHRvbiAyPC9idXR0b24+Ci0gICAgICAgIDwv
ZGl2PgotICAgIDwvZGl2PgotPC9kaXY+PC94bXA+PC9wcmU+Ci0gICAgICAgICAgICAgICAgICAg
ICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQi
PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiPgotICAg
IDxkaXYgY2xhc3M9InNlY3Rpb24iPgotICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkZXIiPgotICAg
ICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGUiPgotICAgICAgICAgICAgICAgIFRpdGxlCi0gICAg
ICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbnMiPgotICAgICAg
ICAgICAgICAgIDxkaXYgY2xhc3M9Imxpc3QiPgotICAgICAgICAgICAgICAgICAgICA8ZGl2IGNs
YXNzPSJpdGVtIj4KLSAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbiAxCi0gICAgICAgICAg
ICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpdGVtIj4K
LSAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbiAyCi0gICAgICAgICAgICAgICAgICAgIDwv
ZGl2PgotICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAg
IDwvZGl2PgotICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4KLSAgICAgICAgICAgIDxwPkxv
cmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBhZGlwaXNjaW5nIGVsaXQsIHNl
ZCBkbyBlaXVzbW9kIHRlbXBvciBpbmNpZGlkdW50IHV0IGxhYm9yZSBldCBkb2xvcmUgbWFnbmEg
YWxpcXVhLiBVdCBlbmltIGFkIG1pbmltIHZlbmlhbSwgcXVpcyBub3N0cnVkIGV4ZXJjaXRhdGlv
biB1bGxhbWNvIGxhYm9yaXMgbmlzaSB1dCBhbGlxdWlwIGV4IGVhIGNvbW1vZG8gY29uc2VxdWF0
LiBEdWlzIGF1dGUgaXJ1cmUgZG9sb3IgaW4gcmVwcmVoZW5kZXJpdCBpbiB2b2x1cHRhdGUgdmVs
aXQgZXNzZSBjaWxsdW0gZG9sb3JlIGV1IGZ1Z2lhdCBudWxsYSBwYXJpYXR1ci4gRXhjZXB0ZXVy
IHNpbnQgb2NjYWVjYXQgY3VwaWRhdGF0IG5vbiBwcm9pZGVudCwgc3VudCBpbiBjdWxwYSBxdWkg
b2ZmaWNpYSBkZXNlcnVudCBtb2xsaXQgYW5pbSBpZCBlc3QgbGFib3J1bS48L3A+Ci0gICAgICAg
IDwvZGl2PgotICAgICAgICA8ZGl2IGNsYXNzPSJhY3Rpb25zIj4KLSAgICAgICAgICAgIDxidXR0
b24gY2xhc3M9ImJ1dHRvbiI+QnV0dG9uIDE8L2J1dHRvbj4KLSAgICAgICAgICAgIDxidXR0b24g
Y2xhc3M9ImJ1dHRvbiI+QnV0dG9uIDI8L2J1dHRvbj4KLSAgICAgICAgPC9kaXY+Ci0gICAgPC9k
aXY+Ci08L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAg
ICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBVc2UgImFydGljbGUiIG1vZGlmaWVyIHRvIGdldCByaWQgb2YgdGhlIGJvcmRlcjoKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAg
IAotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudCI+Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPHByZT48eG1wPjxkaXYgY2xhc3M9ImNvbnRlbnQiPgotICAg
IDxkaXYgY2xhc3M9InNlY3Rpb24gYXJ0aWNsZSI+Ci0gICAgICAgIDxkaXYgY2xhc3M9ImhlYWRl
ciI+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZSI+Ci0gICAgICAgICAgICAgICAgVGl0
bGUKLSAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9ucyI+
Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGlzdCI+Ci0gICAgICAgICAgICAgICAgICAg
IDxkaXYgY2xhc3M9Iml0ZW0iPgotICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uIDEKLSAg
ICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9
Iml0ZW0iPgotICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uIDIKLSAgICAgICAgICAgICAg
ICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICA8L2Rpdj4K
LSAgICAgICAgPC9kaXY+Ci0gICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiPgotICAgICAgICAg
ICAgPHA+TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2Npbmcg
ZWxpdCwgc2VkIGRvIGVpdXNtb2QgdGVtcG9yIGluY2lkaWR1bnQgdXQgbGFib3JlIGV0IGRvbG9y
ZSBtYWduYSBhbGlxdWEuIFV0IGVuaW0gYWQgbWluaW0gdmVuaWFtLCBxdWlzIG5vc3RydWQgZXhl
cmNpdGF0aW9uIHVsbGFtY28gbGFib3JpcyBuaXNpIHV0IGFsaXF1aXAgZXggZWEgY29tbW9kbyBj
b25zZXF1YXQuIER1aXMgYXV0ZSBpcnVyZSBkb2xvciBpbiByZXByZWhlbmRlcml0IGluIHZvbHVw
dGF0ZSB2ZWxpdCBlc3NlIGNpbGx1bSBkb2xvcmUgZXUgZnVnaWF0IG51bGxhIHBhcmlhdHVyLiBF
eGNlcHRldXIgc2ludCBvY2NhZWNhdCBjdXBpZGF0YXQgbm9uIHByb2lkZW50LCBzdW50IGluIGN1
bHBhIHF1aSBvZmZpY2lhIGRlc2VydW50IG1vbGxpdCBhbmltIGlkIGVzdCBsYWJvcnVtLjwvcD4K
LSAgICAgICAgPC9kaXY+Ci0gICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbnMiPgotICAgICAgICAg
ICAgPGJ1dHRvbiBjbGFzcz0iYnV0dG9uIj5CdXR0b24gMTwvYnV0dG9uPgotICAgICAgICAgICAg
PGJ1dHRvbiBjbGFzcz0iYnV0dG9uIj5CdXR0b24gMjwvYnV0dG9uPgotICAgICAgICA8L2Rpdj4K
LSAgICA8L2Rpdj4KLTwvZGl2PjwveG1wPjwvcHJlPgotICAgICAgICAgICAgICAgICAgICAgICAg
PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4KLSAgICA8ZGl2
IGNsYXNzPSJzZWN0aW9uIGFydGljbGUiPgotICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkZXIiPgot
ICAgICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGUiPgotICAgICAgICAgICAgICAgIFRpdGxlCi0g
ICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbnMiPgotICAg
ICAgICAgICAgICAgIDxkaXYgY2xhc3M9Imxpc3QiPgotICAgICAgICAgICAgICAgICAgICA8ZGl2
IGNsYXNzPSJpdGVtIj4KLSAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbiAxCi0gICAgICAg
ICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpdGVt
Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbiAyCi0gICAgICAgICAgICAgICAgICAg
IDwvZGl2PgotICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPC9kaXY+Ci0gICAg
ICAgIDwvZGl2PgotICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4KLSAgICAgICAgICAgIDxw
PkxvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBhZGlwaXNjaW5nIGVsaXQs
IHNlZCBkbyBlaXVzbW9kIHRlbXBvciBpbmNpZGlkdW50IHV0IGxhYm9yZSBldCBkb2xvcmUgbWFn
bmEgYWxpcXVhLiBVdCBlbmltIGFkIG1pbmltIHZlbmlhbSwgcXVpcyBub3N0cnVkIGV4ZXJjaXRh
dGlvbiB1bGxhbWNvIGxhYm9yaXMgbmlzaSB1dCBhbGlxdWlwIGV4IGVhIGNvbW1vZG8gY29uc2Vx
dWF0LiBEdWlzIGF1dGUgaXJ1cmUgZG9sb3IgaW4gcmVwcmVoZW5kZXJpdCBpbiB2b2x1cHRhdGUg
dmVsaXQgZXNzZSBjaWxsdW0gZG9sb3JlIGV1IGZ1Z2lhdCBudWxsYSBwYXJpYXR1ci4gRXhjZXB0
ZXVyIHNpbnQgb2NjYWVjYXQgY3VwaWRhdGF0IG5vbiBwcm9pZGVudCwgc3VudCBpbiBjdWxwYSBx
dWkgb2ZmaWNpYSBkZXNlcnVudCBtb2xsaXQgYW5pbSBpZCBlc3QgbGFib3J1bS48L3A+Ci0gICAg
ICAgIDwvZGl2PgotICAgICAgICA8ZGl2IGNsYXNzPSJhY3Rpb25zIj4KLSAgICAgICAgICAgIDxi
dXR0b24gY2xhc3M9ImJ1dHRvbiI+QnV0dG9uIDE8L2J1dHRvbj4KLSAgICAgICAgICAgIDxidXR0
b24gY2xhc3M9ImJ1dHRvbiI+QnV0dG9uIDI8L2J1dHRvbj4KLSAgICAgICAgPC9kaXY+Ci0gICAg
PC9kaXY+Ci08L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAg
ICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgCi0gICAg
ICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkZXIiIGlkPSJFbGVtZW50cy1QbGFj
ZWhvbGRlciI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGUi
PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgyPlBsYWNlaG9sZGVyPC9oMj4KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAg
IDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgCi0gICAg
ICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9
ImNvbnRlbnQiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcmU+PHhtcD48ZGl2IGNs
YXNzPSJwbGFjZWhvbGRlciI+IDxwIGNsYXNzPSJsb2FkZXIiPnBsYWNlaG9sZGVyPC9wPiA8L2Rp
dj4KLTxkaXYgY2xhc3M9InBsYWNlaG9sZGVyIHNtYWxsIj48cCBjbGFzcz0ibG9hZGVyIj5wbGFj
ZWhvbGRlciBzbWFsbDwvcD4gPC9kaXY+Ci08ZGl2IGNsYXNzPSJwbGFjZWhvbGRlciB0aW55Ij48
cCBjbGFzcz0ibG9hZGVyIj5wbGFjZWhvbGRlciB0aW55PC9wPjwvZGl2PjwveG1wPjwvcHJlPgot
ICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8
ZGl2IGNsYXNzPSJjb250ZW50Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNs
YXNzPSJwbGFjZWhvbGRlciI+IDxwIGNsYXNzPSJsb2FkZXIiPnBsYWNlaG9sZGVyPC9wPiA8L2Rp
dj4KLTxkaXYgY2xhc3M9InBsYWNlaG9sZGVyIHNtYWxsIj48cCBjbGFzcz0ibG9hZGVyIj5wbGFj
ZWhvbGRlciBzbWFsbDwvcD4gPC9kaXY+Ci08ZGl2IGNsYXNzPSJwbGFjZWhvbGRlciB0aW55Ij48
cCBjbGFzcz0ibG9hZGVyIj5wbGFjZWhvbGRlciB0aW55PC9wPjwvZGl2PgotICAgICAgICAgICAg
ICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAg
ICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGVu
dCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZSAiZGltbWVyIiBtb2RpZmll
ciB0byBtYWtlIHRoZSBwbGFjZWhvbGRlciBkYXJrCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAg
ICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxw
cmU+PHhtcD48ZGl2IGNsYXNzPSJwbGFjZWhvbGRlciBkaW1tZXIiPiA8cCBjbGFzcz0ibG9hZGVy
Ij5wbGFjZWhvbGRlcjwvcD4gPC9kaXY+PC94bXA+PC9wcmU+Ci0gICAgICAgICAgICAgICAgICAg
ICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQi
PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBsYWNlaG9sZGVyIGRp
bW1lciI+IDxwIGNsYXNzPSJsb2FkZXIiPnBsYWNlaG9sZGVyPC9wPiA8L2Rpdj4KLSAgICAgICAg
ICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAg
ICAgICAKLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2
IGNsYXNzPSJoZWFkZXIiIGlkPSJFbGVtZW50cy1Mb2FkZXIiPgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDxoMj5Mb2FkZXI8L2gyPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pgot
ICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgIAotICAg
ICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiPgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBTaXplCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xh
c3M9ImNvbnRlbnQiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcmU+PHhtcD48ZGl2
IGNsYXNzPSJsb2FkZXIiPgotICAgIDxkaXYgY2xhc3M9InNwaW5uZXIgaHVnZSI+Ci0gICAgPC9k
aXY+Ci0gICAgPGRpdiBjbGFzcz0ic3Bpbm5lciBsYXJnZSI+Ci0gICAgPC9kaXY+Ci0gICAgPGRp
diBjbGFzcz0ic3Bpbm5lciI+Ci0gICAgPC9kaXY+Ci0gICAgPGRpdiBjbGFzcz0ic3Bpbm5lciBz
bWFsbCI+Ci0gICAgPC9kaXY+Ci0gICAgPGRpdiBjbGFzcz0ic3Bpbm5lciB0aW55Ij4KLSAgICA8
L2Rpdj4KLTwvZGl2PjwveG1wPjwvcHJlPgotICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+
Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsb2FkZXIiPgotICAgIDxkaXYgY2xhc3M9
InNwaW5uZXIgaHVnZSI+Ci0gICAgPC9kaXY+Ci0gICAgPGRpdiBjbGFzcz0ic3Bpbm5lciBsYXJn
ZSI+Ci0gICAgPC9kaXY+Ci0gICAgPGRpdiBjbGFzcz0ic3Bpbm5lciI+Ci0gICAgPC9kaXY+Ci0g
ICAgPGRpdiBjbGFzcz0ic3Bpbm5lciBzbWFsbCI+Ci0gICAgPC9kaXY+Ci0gICAgPGRpdiBjbGFz
cz0ic3Bpbm5lciB0aW55Ij4KLSAgICA8L2Rpdj4KLTwvZGl2PgotICAgICAgICAgICAgICAgICAg
ICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAg
ICAgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudCI+Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbG9yCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAg
ICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiPgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDxwcmU+PHhtcD48ZGl2IGNsYXNzPSJsb2FkZXIiPgotICAgIDxkaXYgY2xhc3M9InNwaW5u
ZXIiPgotICAgIDwvZGl2PgotICAgIDxkaXYgY2xhc3M9InNwaW5uZXIgYmx1ZSI+Ci0gICAgPC9k
aXY+Ci0gICAgPGRpdiBjbGFzcz0ic3Bpbm5lciBwdXJwbGUiPgotICAgIDwvZGl2PgotICAgIDxk
aXYgY2xhc3M9InNwaW5uZXIgZ3JlZW4iPgotICAgIDwvZGl2PgotICAgIDxkaXYgY2xhc3M9InNw
aW5uZXIgb3JhbmdlIj4KLSAgICA8L2Rpdj4KLSAgICA8ZGl2IGNsYXNzPSJzcGlubmVyIHJlZCI+
Ci0gICAgPC9kaXY+Ci08L2Rpdj48L3htcD48L3ByZT4KLSAgICAgICAgICAgICAgICAgICAgICAg
IDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudCI+Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibG9hZGVyIj4KLSAgICA8ZGl2
IGNsYXNzPSJzcGlubmVyIj4KLSAgICA8L2Rpdj4KLSAgICA8ZGl2IGNsYXNzPSJzcGlubmVyIGJs
dWUiPgotICAgIDwvZGl2PgotICAgIDxkaXYgY2xhc3M9InNwaW5uZXIgcHVycGxlIj4KLSAgICA8
L2Rpdj4KLSAgICA8ZGl2IGNsYXNzPSJzcGlubmVyIGdyZWVuIj4KLSAgICA8L2Rpdj4KLSAgICA8
ZGl2IGNsYXNzPSJzcGlubmVyIG9yYW5nZSI+Ci0gICAgPC9kaXY+Ci0gICAgPGRpdiBjbGFzcz0i
c3Bpbm5lciByZWQiPgotICAgIDwvZGl2PgotPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAg
ICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICAK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4KLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgV2l0aCBQbGFjZWhvbGRlcgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAg
ICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA8cHJlPjx4bXA+PGRpdiBjbGFzcz0icGxhY2Vob2xkZXIgZGltbWVyIj4KLSAg
ICA8ZGl2IGNsYXNzPSJsb2FkZXIiPgotICAgICAgICA8ZGl2IGNsYXNzPSJzcGlubmVyIj4KLSAg
ICAgICAgPC9kaXY+Ci0gICAgPC9kaXY+Ci08L2Rpdj48L3htcD48L3ByZT4KLSAgICAgICAgICAg
ICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0i
Y29udGVudCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icGxhY2Vo
b2xkZXIgZGltbWVyIj4KLSAgICA8ZGl2IGNsYXNzPSJsb2FkZXIiPgotICAgICAgICA8ZGl2IGNs
YXNzPSJzcGlubmVyIj4KLSAgICAgICAgPC9kaXY+Ci0gICAgPC9kaXY+Ci08L2Rpdj4KLSAgICAg
ICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAg
ICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICA8
ZGl2IGNsYXNzPSJoZWFkZXIiIGlkPSJFbGVtZW50cy1Qcm9ncmVzcy1iYXIiPgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlIj4KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDxoMj5Qcm9ncmVzcyBiYXI8L2gyPgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAg
ICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAg
IAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiPgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEaWZmZXJlbnQgY29sb3JzIHdpdGggbWl4aW4K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAg
ICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudCI+Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPHByZT48eG1wPjxkaXY+Ci0gICAgPGRpdiBjbGFzcz0i
cHJvZ3Jlc3MtYmFyLWNvbnRhaW5lciI+Ci0gICAgICAgIDxkaXYgY2xhc3M9InByb2dyZXNzLWJh
ciIgc3R5bGU9IndpZHRoOjI1JSI+MjUlPC9kaXY+Ci0gICAgPC9kaXY+Ci08L2Rpdj4KLTxocj4K
LTxkaXY+Ci0gICAgPGRpdiBjbGFzcz0icHJvZ3Jlc3MtYmFyLWNvbnRhaW5lciI+Ci0gICAgICAg
IDxkaXYgY2xhc3M9InByb2dyZXNzLWJhciBzdWNjZXNzIiBzdHlsZT0id2lkdGg6NTAlIj41MCU8
L2Rpdj4KLSAgICA8L2Rpdj4KLTwvZGl2PgotPGhyPgotPGRpdj4KLSAgICA8ZGl2IGNsYXNzPSJw
cm9ncmVzcy1iYXItY29udGFpbmVyIj4KLSAgICAgICAgPGRpdiBjbGFzcz0icHJvZ3Jlc3MtYmFy
IGZhaWxlZCIgc3R5bGU9IndpZHRoOjc1JSI+NzUlPC9kaXY+Ci0gICAgPC9kaXY+Ci08L2Rpdj4K
LTxocj4KLTxkaXY+Ci0gICAgPGRpdiBjbGFzcz0icHJvZ3Jlc3MtYmFyLWNvbnRhaW5lciI+Ci0g
ICAgICAgIDxkaXYgY2xhc3M9InByb2dyZXNzLWJhciBlcnJvciIgc3R5bGU9IndpZHRoOjEwMCUi
PjEwMCU8L2Rpdj4KLSAgICA8L2Rpdj4KLTwvZGl2PjwveG1wPjwvcHJlPgotICAgICAgICAgICAg
ICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJj
b250ZW50Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PgotICAgIDxkaXYgY2xh
c3M9InByb2dyZXNzLWJhci1jb250YWluZXIiPgotICAgICAgICA8ZGl2IGNsYXNzPSJwcm9ncmVz
cy1iYXIiIHN0eWxlPSJ3aWR0aDoyNSUiPjI1JTwvZGl2PgotICAgIDwvZGl2PgotPC9kaXY+Ci08
aHI+Ci08ZGl2PgotICAgIDxkaXYgY2xhc3M9InByb2dyZXNzLWJhci1jb250YWluZXIiPgotICAg
ICAgICA8ZGl2IGNsYXNzPSJwcm9ncmVzcy1iYXIgc3VjY2VzcyIgc3R5bGU9IndpZHRoOjUwJSI+
NTAlPC9kaXY+Ci0gICAgPC9kaXY+Ci08L2Rpdj4KLTxocj4KLTxkaXY+Ci0gICAgPGRpdiBjbGFz
cz0icHJvZ3Jlc3MtYmFyLWNvbnRhaW5lciI+Ci0gICAgICAgIDxkaXYgY2xhc3M9InByb2dyZXNz
LWJhciBmYWlsZWQiIHN0eWxlPSJ3aWR0aDo3NSUiPjc1JTwvZGl2PgotICAgIDwvZGl2PgotPC9k
aXY+Ci08aHI+Ci08ZGl2PgotICAgIDxkaXYgY2xhc3M9InByb2dyZXNzLWJhci1jb250YWluZXIi
PgotICAgICAgICA8ZGl2IGNsYXNzPSJwcm9ncmVzcy1iYXIgZXJyb3IiIHN0eWxlPSJ3aWR0aDox
MDAlIj4xMDAlPC9kaXY+Ci0gICAgPC9kaXY+Ci08L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAg
ICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAg
IAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiPgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNdWxpdCBiYXIKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAg
ICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudCI+Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPHByZT48eG1wPjxkaXY+Ci0gICAgICAgIDxkaXYgY2xhc3M9InByb2dyZXNzLWJhci1j
b250YWluZXIiPgotICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJvZ3Jlc3MtYmFyIiBzdHlsZT0i
d2lkdGg6MjUlIj4yNSU8L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9InByb2dyZXNzLWJh
ciBlcnJvciIgc3R5bGU9IndpZHRoOjc1JSI+NzUlPC9kaXY+Ci0gICAgICAgIDwvZGl2PgotPC9k
aXY+PC94bXA+PC9wcmU+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAg
ICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiPgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDxkaXY+Ci0gICAgICAgIDxkaXYgY2xhc3M9InByb2dyZXNzLWJhci1jb250YWlu
ZXIiPgotICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJvZ3Jlc3MtYmFyIiBzdHlsZT0id2lkdGg6
MjUlIj4yNSU8L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9InByb2dyZXNzLWJhciBlcnJv
ciIgc3R5bGU9IndpZHRoOjc1JSI+NzUlPC9kaXY+Ci0gICAgICAgIDwvZGl2PgotPC9kaXY+Ci0g
ICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgCi0gICAg
ICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAg
ICAgPGRpdiBjbGFzcz0iaGVhZGVyIiBpZD0iRWxlbWVudHMtTGlzdCI+Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGUiPgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPGgyPkxpc3Q8L2gyPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2
PgotICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgIAot
ICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAg
ICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudCI+Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPHByZT48eG1wPjxkaXYgY2xhc3M9Imxpc3QiPgotICAgIDxkaXYgY2xhc3M9Iml0
ZW0iPml0ZW0gMTwvZGl2PgotICAgIDxkaXYgY2xhc3M9Iml0ZW0iPml0ZW0gMjwvZGl2PgotICAg
IDxkaXYgY2xhc3M9ImRpdmlkZXIiPjwvZGl2PgotICAgIDxkaXYgY2xhc3M9Iml0ZW0iPgotICAg
ICAgICA8ZGl2IGNsYXNzPSJsaXN0Ij4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9Iml0ZW0iPml0
ZW0gMSBsdjI8L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9Iml0ZW0iPml0ZW0gMiBsdjI8
L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRpdmlkZXIiPjwvZGl2PgotICAgICAgICAg
ICAgPGRpdiBjbGFzcz0iaXRlbSI+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGlzdCI+
Ci0gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Iml0ZW0iPml0ZW0gMSBsdjM8L2Rpdj4K
LSAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaXRlbSI+aXRlbSAyIGx2MzwvZGl2Pgot
ICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgIDwvZGl2
PgotICAgIDwvZGl2PgotPC9kaXY+PC94bXA+PC9wcmU+Ci0gICAgICAgICAgICAgICAgICAgICAg
ICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiPgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Imxpc3QiPgotICAgIDxkaXYg
Y2xhc3M9Iml0ZW0iPml0ZW0gMTwvZGl2PgotICAgIDxkaXYgY2xhc3M9Iml0ZW0iPml0ZW0gMjwv
ZGl2PgotICAgIDxkaXYgY2xhc3M9ImRpdmlkZXIiPjwvZGl2PgotICAgIDxkaXYgY2xhc3M9Iml0
ZW0iPgotICAgICAgICA8ZGl2IGNsYXNzPSJsaXN0Ij4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9
Iml0ZW0iPml0ZW0gMSBsdjI8L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9Iml0ZW0iPml0
ZW0gMiBsdjI8L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRpdmlkZXIiPjwvZGl2Pgot
ICAgICAgICAgICAgPGRpdiBjbGFzcz0iaXRlbSI+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFz
cz0ibGlzdCI+Ci0gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Iml0ZW0iPml0ZW0gMSBs
djM8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaXRlbSI+aXRlbSAyIGx2
MzwvZGl2PgotICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPC9kaXY+Ci0gICAg
ICAgIDwvZGl2PgotICAgIDwvZGl2PgotPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8
L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgCi0gICAgICAgICAg
ICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGVyIiBp
ZD0iRWxlbWVudHMtU2lkZWJhciI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBj
bGFzcz0idGl0bGUiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgyPlNpZGViYXI8
L2gyPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAg
ICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAg
ICAKLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgPGRp
diBjbGFzcz0iY29udGVudCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByZT48eG1w
PjxkaXYgY2xhc3M9InNpZGViYXIiPgotICAgIDxkaXYgY2xhc3M9ImhlYWRlciI+Ci0gICAgICAg
IDxkaXYgY2xhc3M9InRpdGxlIj4KLSAgICAgICAgICAgIFRpdGxlCi0gICAgICAgIDwvZGl2Pgot
ICAgIDwvZGl2PgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJtYWluIj4KLTwvZGl2PjwveG1wPjwvcHJl
PgotICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAg
ICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2
IGNsYXNzPSJzaWRlYmFyIj4KLSAgICA8ZGl2IGNsYXNzPSJoZWFkZXIiPgotICAgICAgICA8ZGl2
IGNsYXNzPSJ0aXRsZSI+Ci0gICAgICAgICAgICBUaXRsZQotICAgICAgICA8L2Rpdj4KLSAgICA8
L2Rpdj4KLTwvZGl2PgotPGRpdiBjbGFzcz0ibWFpbiI+Ci08L2Rpdj4KLSAgICAgICAgICAgICAg
ICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAK
LSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNz
PSJoZWFkZXIiIGlkPSJFbGVtZW50cy1EcmF3ZXIiPgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDxkaXYgY2xhc3M9InRpdGxlIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxo
Mj5EcmF3ZXI8L2gyPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAg
ICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAg
ICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAg
ICAgICAgPGRpdiBjbGFzcz0iY29udGVudCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
PHByZT48eG1wPjxkaXYgaWQ9ImJvdHRvbS1kcmF3ZXIiIGNsYXNzPSJkcmF3ZXIiPgotICAgIDxk
aXYgY2xhc3M9ImhlYWRlciI+Ci0gICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbnMiPgotICAgICAg
ICAgICAgPGEgaHJlZj0iamF2YXNjcmlwdDp2b2lkKDApIiBvbmNsaWNrPSJjbG9zZURyYXdlckZh
Y3RvcnkoJ2JvdHRvbS1kcmF3ZXInKSgpIj5DbG9zZTwvYT4KLSAgICAgICAgPC9kaXY+Ci0gICAg
PC9kaXY+Ci08L2Rpdj4KLTxkaXYgaWQ9ImxlZnQtZHJhd2VyIiBjbGFzcz0iZHJhd2VyIGxlZnQi
PgotICAgIDxkaXYgY2xhc3M9ImhlYWRlciI+Ci0gICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbnMi
PgotICAgICAgICAgICAgPGEgaHJlZj0iamF2YXNjcmlwdDp2b2lkKDApIiBvbmNsaWNrPSJjbG9z
ZURyYXdlckZhY3RvcnkoJ2xlZnQtZHJhd2VyJykoKSI+Q2xvc2U8L2E+Ci0gICAgICAgIDwvZGl2
PgotICAgIDwvZGl2PgotPC9kaXY+Ci08ZGl2IGlkPSJyaWdodC1kcmF3ZXIiIGNsYXNzPSJkcmF3
ZXIgcmlnaHQiPgotICAgIDxkaXYgY2xhc3M9ImhlYWRlciI+Ci0gICAgICAgIDxkaXYgY2xhc3M9
ImFjdGlvbnMiPgotICAgICAgICAgICAgPGEgaHJlZj0iamF2YXNjcmlwdDp2b2lkKDApIiBvbmNs
aWNrPSJjbG9zZURyYXdlckZhY3RvcnkoJ3JpZ2h0LWRyYXdlcicpKCkiPkNsb3NlPC9hPgotICAg
ICAgICA8L2Rpdj4KLSAgICA8L2Rpdj4KLTwvZGl2PgotPGRpdiBpZD0ibGVmdC1kcmF3ZXItdW5k
ZXItdG9vbGJhciIgY2xhc3M9ImRyYXdlciBsZWZ0IHVuZGVyLXRvcGJhci13aXRoLWFjdGlvbnMi
PgotICAgIDxkaXYgY2xhc3M9ImhlYWRlciI+Ci0gICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbnMi
PgotICAgICAgICAgICAgPGEgaHJlZj0iamF2YXNjcmlwdDp2b2lkKDApIiBvbmNsaWNrPSJjbG9z
ZURyYXdlckZhY3RvcnkoJ2xlZnQtZHJhd2VyLXVuZGVyLXRvb2xiYXInKSgpO2Nsb3NlVG9wYmFy
KCkiPkNsb3NlPC9hPgotICAgICAgICA8L2Rpdj4KLSAgICA8L2Rpdj4KLTwvZGl2PgotPGRpdj4K
LSAgICA8YnV0dG9uIGNsYXNzPSJidXR0b24iIG9uY2xpY2s9Im9wZW5EcmF3ZXJGYWN0b3J5KCdi
b3R0b20tZHJhd2VyJykoKSI+T3BlbiBib3R0b208L2J1dHRvbj4KLSAgICA8YnV0dG9uIGNsYXNz
PSJidXR0b24iIG9uY2xpY2s9Im9wZW5EcmF3ZXJGYWN0b3J5KCdsZWZ0LWRyYXdlcicpKCkiPk9w
ZW4gbGVmdDwvYnV0dG9uPgotICAgIDxidXR0b24gY2xhc3M9ImJ1dHRvbiIgb25jbGljaz0ib3Bl
bkRyYXdlckZhY3RvcnkoJ3JpZ2h0LWRyYXdlcicpKCkiPk9wZW4gcmlnaHQ8L2J1dHRvbj4KLSAg
ICA8YnV0dG9uIGNsYXNzPSJidXR0b24iIG9uY2xpY2s9Im9wZW5EcmF3ZXJGYWN0b3J5KCdsZWZ0
LWRyYXdlci11bmRlci10b29sYmFyJykoKTtvcGVuVG9wYmFyKCkiPk9wZW4gbGVmdCB1bmRlciB0
b3BiYXI8L2J1dHRvbj4KLTwvZGl2PgotPHNjcmlwdD4KLSAgICBjb25zdCBjbG9zZURyYXdlckZh
Y3RvcnkgPSAoaWQpID0+IChlKSA9PiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCkuY2xhc3NM
aXN0LnJlbW92ZSgiZGlzcGxheSIpOwotICAgIGNvbnN0IG9wZW5EcmF3ZXJGYWN0b3J5ID0gKGlk
KSA9PiAoZSkgPT4gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpLmNsYXNzTGlzdC5hZGQoImRp
c3BsYXkiKTsKLSAgICBjb25zdCBjbG9zZVRvcGJhciA9ICgpID0+IHsgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInRvcGJhciIpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSIgfTsKLSAgICBjb25zdCBv
cGVuVG9wYmFyID0gKCkgPT4gewotICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidG9w
YmFyIikuc3R5bGUuZGlzcGxheSA9ICJmbGV4IjsKLSAgICB9OwotPC9zY3JpcHQ+PC94bXA+PC9w
cmU+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAg
ICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxk
aXYgaWQ9ImJvdHRvbS1kcmF3ZXIiIGNsYXNzPSJkcmF3ZXIiPgotICAgIDxkaXYgY2xhc3M9Imhl
YWRlciI+Ci0gICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbnMiPgotICAgICAgICAgICAgPGEgaHJl
Zj0iamF2YXNjcmlwdDp2b2lkKDApIiBvbmNsaWNrPSJjbG9zZURyYXdlckZhY3RvcnkoJ2JvdHRv
bS1kcmF3ZXInKSgpIj5DbG9zZTwvYT4KLSAgICAgICAgPC9kaXY+Ci0gICAgPC9kaXY+Ci08L2Rp
dj4KLTxkaXYgaWQ9ImxlZnQtZHJhd2VyIiBjbGFzcz0iZHJhd2VyIGxlZnQiPgotICAgIDxkaXYg
Y2xhc3M9ImhlYWRlciI+Ci0gICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbnMiPgotICAgICAgICAg
ICAgPGEgaHJlZj0iamF2YXNjcmlwdDp2b2lkKDApIiBvbmNsaWNrPSJjbG9zZURyYXdlckZhY3Rv
cnkoJ2xlZnQtZHJhd2VyJykoKSI+Q2xvc2U8L2E+Ci0gICAgICAgIDwvZGl2PgotICAgIDwvZGl2
PgotPC9kaXY+Ci08ZGl2IGlkPSJyaWdodC1kcmF3ZXIiIGNsYXNzPSJkcmF3ZXIgcmlnaHQiPgot
ICAgIDxkaXYgY2xhc3M9ImhlYWRlciI+Ci0gICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbnMiPgot
ICAgICAgICAgICAgPGEgaHJlZj0iamF2YXNjcmlwdDp2b2lkKDApIiBvbmNsaWNrPSJjbG9zZURy
YXdlckZhY3RvcnkoJ3JpZ2h0LWRyYXdlcicpKCkiPkNsb3NlPC9hPgotICAgICAgICA8L2Rpdj4K
LSAgICA8L2Rpdj4KLTwvZGl2PgotPGRpdiBpZD0ibGVmdC1kcmF3ZXItdW5kZXItdG9vbGJhciIg
Y2xhc3M9ImRyYXdlciBsZWZ0IHVuZGVyLXRvcGJhci13aXRoLWFjdGlvbnMiPgotICAgIDxkaXYg
Y2xhc3M9ImhlYWRlciI+Ci0gICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbnMiPgotICAgICAgICAg
ICAgPGEgaHJlZj0iamF2YXNjcmlwdDp2b2lkKDApIiBvbmNsaWNrPSJjbG9zZURyYXdlckZhY3Rv
cnkoJ2xlZnQtZHJhd2VyLXVuZGVyLXRvb2xiYXInKSgpO2Nsb3NlVG9wYmFyKCkiPkNsb3NlPC9h
PgotICAgICAgICA8L2Rpdj4KLSAgICA8L2Rpdj4KLTwvZGl2PgotPGRpdj4KLSAgICA8YnV0dG9u
IGNsYXNzPSJidXR0b24iIG9uY2xpY2s9Im9wZW5EcmF3ZXJGYWN0b3J5KCdib3R0b20tZHJhd2Vy
JykoKSI+T3BlbiBib3R0b208L2J1dHRvbj4KLSAgICA8YnV0dG9uIGNsYXNzPSJidXR0b24iIG9u
Y2xpY2s9Im9wZW5EcmF3ZXJGYWN0b3J5KCdsZWZ0LWRyYXdlcicpKCkiPk9wZW4gbGVmdDwvYnV0
dG9uPgotICAgIDxidXR0b24gY2xhc3M9ImJ1dHRvbiIgb25jbGljaz0ib3BlbkRyYXdlckZhY3Rv
cnkoJ3JpZ2h0LWRyYXdlcicpKCkiPk9wZW4gcmlnaHQ8L2J1dHRvbj4KLSAgICA8YnV0dG9uIGNs
YXNzPSJidXR0b24iIG9uY2xpY2s9Im9wZW5EcmF3ZXJGYWN0b3J5KCdsZWZ0LWRyYXdlci11bmRl
ci10b29sYmFyJykoKTtvcGVuVG9wYmFyKCkiPk9wZW4gbGVmdCB1bmRlciB0b3BiYXI8L2J1dHRv
bj4KLTwvZGl2PgotPHNjcmlwdD4KLSAgICBjb25zdCBjbG9zZURyYXdlckZhY3RvcnkgPSAoaWQp
ID0+IChlKSA9PiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCkuY2xhc3NMaXN0LnJlbW92ZSgi
ZGlzcGxheSIpOwotICAgIGNvbnN0IG9wZW5EcmF3ZXJGYWN0b3J5ID0gKGlkKSA9PiAoZSkgPT4g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpLmNsYXNzTGlzdC5hZGQoImRpc3BsYXkiKTsKLSAg
ICBjb25zdCBjbG9zZVRvcGJhciA9ICgpID0+IHsgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRv
cGJhciIpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSIgfTsKLSAgICBjb25zdCBvcGVuVG9wYmFyID0g
KCkgPT4gewotICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidG9wYmFyIikuc3R5bGUu
ZGlzcGxheSA9ICJmbGV4IjsKLSAgICB9OwotPC9zY3JpcHQ+Ci0gICAgICAgICAgICAgICAgICAg
ICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgCi0gICAg
ICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaGVh
ZGVyIiBpZD0iRWxlbWVudHMtVGFibGUiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxk
aXYgY2xhc3M9InRpdGxlIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMj5UYWJs
ZTwvaDI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAg
ICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAg
ICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICA8
ZGl2IGNsYXNzPSJjb250ZW50Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJlPjx4
bXA+PHRhYmxlIGNsYXNzPSJ0YWJsZSI+Ci0gICAgPHRoZWFkPgotICAgICAgICA8dHI+Ci0gICAg
ICAgICAgICA8dGg+dGl0bGUgMTwvdGg+Ci0gICAgICAgICAgICA8dGg+dGl0bGUgMjwvdGg+Ci0g
ICAgICAgICAgICA8dGg+dGl0bGUgMzwvdGg+Ci0gICAgICAgICAgICA8dGg+dGl0bGUgNDwvdGg+
Ci0gICAgICAgIDwvdHI+Ci0gICAgPC90aGVhZD4KLSAgICA8dGJvZHk+Ci0gICAgICAgIDx0cj4K
LSAgICAgICAgICAgIDx0ZD5jb2wgMTwvdGQ+Ci0gICAgICAgICAgICA8dGQ+Y29sIDI8L3RkPgot
ICAgICAgICAgICAgPHRkPmNvbCAzPC90ZD4KLSAgICAgICAgICAgIDx0ZD5jb2wgNDwvdGQ+Ci0g
ICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICAgIDx0ZD5jb2wgMTwvdGQ+Ci0g
ICAgICAgICAgICA8dGQ+Y29sIDI8L3RkPgotICAgICAgICAgICAgPHRkPmNvbCAzPC90ZD4KLSAg
ICAgICAgICAgIDx0ZD5jb2wgNDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAg
ICAgICAgICAgIDx0ZD5jb2wgMTwvdGQ+Ci0gICAgICAgICAgICA8dGQ+Y29sIDI8L3RkPgotICAg
ICAgICAgICAgPHRkPmNvbCAzPC90ZD4KLSAgICAgICAgICAgIDx0ZD5jb2wgNDwvdGQ+Ci0gICAg
ICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICAgIDx0ZD5jb2wgMTwvdGQ+Ci0gICAg
ICAgICAgICA8dGQ+Y29sIDI8L3RkPgotICAgICAgICAgICAgPHRkPmNvbCAzPC90ZD4KLSAgICAg
ICAgICAgIDx0ZD5jb2wgNDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgPC90Ym9keT4KLTwvdGFi
bGU+PC94bXA+PC9wcmU+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAg
ICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiPgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUiPgotICAgIDx0aGVhZD4KLSAgICAgICAgPHRy
PgotICAgICAgICAgICAgPHRoPnRpdGxlIDE8L3RoPgotICAgICAgICAgICAgPHRoPnRpdGxlIDI8
L3RoPgotICAgICAgICAgICAgPHRoPnRpdGxlIDM8L3RoPgotICAgICAgICAgICAgPHRoPnRpdGxl
IDQ8L3RoPgotICAgICAgICA8L3RyPgotICAgIDwvdGhlYWQ+Ci0gICAgPHRib2R5PgotICAgICAg
ICA8dHI+Ci0gICAgICAgICAgICA8dGQ+Y29sIDE8L3RkPgotICAgICAgICAgICAgPHRkPmNvbCAy
PC90ZD4KLSAgICAgICAgICAgIDx0ZD5jb2wgMzwvdGQ+Ci0gICAgICAgICAgICA8dGQ+Y29sIDQ8
L3RkPgotICAgICAgICA8L3RyPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgICA8dGQ+Y29sIDE8
L3RkPgotICAgICAgICAgICAgPHRkPmNvbCAyPC90ZD4KLSAgICAgICAgICAgIDx0ZD5jb2wgMzwv
dGQ+Ci0gICAgICAgICAgICA8dGQ+Y29sIDQ8L3RkPgotICAgICAgICA8L3RyPgotICAgICAgICA8
dHI+Ci0gICAgICAgICAgICA8dGQ+Y29sIDE8L3RkPgotICAgICAgICAgICAgPHRkPmNvbCAyPC90
ZD4KLSAgICAgICAgICAgIDx0ZD5jb2wgMzwvdGQ+Ci0gICAgICAgICAgICA8dGQ+Y29sIDQ8L3Rk
PgotICAgICAgICA8L3RyPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgICA8dGQ+Y29sIDE8L3Rk
PgotICAgICAgICAgICAgPHRkPmNvbCAyPC90ZD4KLSAgICAgICAgICAgIDx0ZD5jb2wgMzwvdGQ+
Ci0gICAgICAgICAgICA8dGQ+Y29sIDQ8L3RkPgotICAgICAgICA8L3RyPgotICAgIDwvdGJvZHk+
Ci08L3RhYmxlPgotICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAg
ICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPGRpdiBjbGFzcz0iY29udGVudCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGZ1bGwtd2lkdGgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAg
ICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0i
Y29udGVudCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByZT48eG1wPjx0YWJsZSBj
bGFzcz0idGFibGUgZnVsbC13aWR0aCI+Ci0gICAgPHRoZWFkPgotICAgICAgICA8dHI+Ci0gICAg
ICAgICAgICA8dGg+dGl0bGUgMTwvdGg+Ci0gICAgICAgICAgICA8dGg+dGl0bGUgMjwvdGg+Ci0g
ICAgICAgICAgICA8dGg+dGl0bGUgMzwvdGg+Ci0gICAgICAgICAgICA8dGg+dGl0bGUgNDwvdGg+
Ci0gICAgICAgIDwvdHI+Ci0gICAgPC90aGVhZD4KLSAgICA8dGJvZHk+Ci0gICAgICAgIDx0cj4K
LSAgICAgICAgICAgIDx0ZD5jb2wgMTwvdGQ+Ci0gICAgICAgICAgICA8dGQ+Y29sIDI8L3RkPgot
ICAgICAgICAgICAgPHRkPmNvbCAzPC90ZD4KLSAgICAgICAgICAgIDx0ZD5jb2wgNDwvdGQ+Ci0g
ICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICAgIDx0ZD5jb2wgMTwvdGQ+Ci0g
ICAgICAgICAgICA8dGQ+Y29sIDI8L3RkPgotICAgICAgICAgICAgPHRkPmNvbCAzPC90ZD4KLSAg
ICAgICAgICAgIDx0ZD5jb2wgNDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAg
ICAgICAgICAgIDx0ZD5jb2wgMTwvdGQ+Ci0gICAgICAgICAgICA8dGQ+Y29sIDI8L3RkPgotICAg
ICAgICAgICAgPHRkPmNvbCAzPC90ZD4KLSAgICAgICAgICAgIDx0ZD5jb2wgNDwvdGQ+Ci0gICAg
ICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICAgIDx0ZD5jb2wgMTwvdGQ+Ci0gICAg
ICAgICAgICA8dGQ+Y29sIDI8L3RkPgotICAgICAgICAgICAgPHRkPmNvbCAzPC90ZD4KLSAgICAg
ICAgICAgIDx0ZD5jb2wgNDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgPC90Ym9keT4KLTwvdGFi
bGU+PC94bXA+PC9wcmU+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAg
ICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiPgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgZnVsbC13aWR0aCI+Ci0gICAgPHRoZWFkPgot
ICAgICAgICA8dHI+Ci0gICAgICAgICAgICA8dGg+dGl0bGUgMTwvdGg+Ci0gICAgICAgICAgICA8
dGg+dGl0bGUgMjwvdGg+Ci0gICAgICAgICAgICA8dGg+dGl0bGUgMzwvdGg+Ci0gICAgICAgICAg
ICA8dGg+dGl0bGUgNDwvdGg+Ci0gICAgICAgIDwvdHI+Ci0gICAgPC90aGVhZD4KLSAgICA8dGJv
ZHk+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICAgIDx0ZD5jb2wgMTwvdGQ+Ci0gICAgICAgICAg
ICA8dGQ+Y29sIDI8L3RkPgotICAgICAgICAgICAgPHRkPmNvbCAzPC90ZD4KLSAgICAgICAgICAg
IDx0ZD5jb2wgNDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICAg
IDx0ZD5jb2wgMTwvdGQ+Ci0gICAgICAgICAgICA8dGQ+Y29sIDI8L3RkPgotICAgICAgICAgICAg
PHRkPmNvbCAzPC90ZD4KLSAgICAgICAgICAgIDx0ZD5jb2wgNDwvdGQ+Ci0gICAgICAgIDwvdHI+
Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICAgIDx0ZD5jb2wgMTwvdGQ+Ci0gICAgICAgICAgICA8
dGQ+Y29sIDI8L3RkPgotICAgICAgICAgICAgPHRkPmNvbCAzPC90ZD4KLSAgICAgICAgICAgIDx0
ZD5jb2wgNDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICAgIDx0
ZD5jb2wgMTwvdGQ+Ci0gICAgICAgICAgICA8dGQ+Y29sIDI8L3RkPgotICAgICAgICAgICAgPHRk
PmNvbCAzPC90ZD4KLSAgICAgICAgICAgIDx0ZD5jb2wgNDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0g
ICAgPC90Ym9keT4KLTwvdGFibGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAg
ICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgU3RyaXBwZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rp
dj4KLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgPGRp
diBjbGFzcz0iY29udGVudCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByZT48eG1w
Pjx0YWJsZSBjbGFzcz0idGFibGUgZnVsbC13aWR0aCBzdHJpcHBlZCI+Ci0gICAgPHRoZWFkPgot
ICAgICAgICA8dHI+Ci0gICAgICAgICAgICA8dGg+dGl0bGUgMTwvdGg+Ci0gICAgICAgICAgICA8
dGg+dGl0bGUgMjwvdGg+Ci0gICAgICAgICAgICA8dGg+dGl0bGUgMzwvdGg+Ci0gICAgICAgICAg
ICA8dGg+dGl0bGUgNDwvdGg+Ci0gICAgICAgIDwvdHI+Ci0gICAgPC90aGVhZD4KLSAgICA8dGJv
ZHk+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICAgIDx0ZD5jb2wgMTwvdGQ+Ci0gICAgICAgICAg
ICA8dGQ+Y29sIDI8L3RkPgotICAgICAgICAgICAgPHRkPmNvbCAzPC90ZD4KLSAgICAgICAgICAg
IDx0ZD5jb2wgNDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICAg
IDx0ZD5jb2wgMTwvdGQ+Ci0gICAgICAgICAgICA8dGQ+Y29sIDI8L3RkPgotICAgICAgICAgICAg
PHRkPmNvbCAzPC90ZD4KLSAgICAgICAgICAgIDx0ZD5jb2wgNDwvdGQ+Ci0gICAgICAgIDwvdHI+
Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICAgIDx0ZD5jb2wgMTwvdGQ+Ci0gICAgICAgICAgICA8
dGQ+Y29sIDI8L3RkPgotICAgICAgICAgICAgPHRkPmNvbCAzPC90ZD4KLSAgICAgICAgICAgIDx0
ZD5jb2wgNDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICAgIDx0
ZD5jb2wgMTwvdGQ+Ci0gICAgICAgICAgICA8dGQ+Y29sIDI8L3RkPgotICAgICAgICAgICAgPHRk
PmNvbCAzPC90ZD4KLSAgICAgICAgICAgIDx0ZD5jb2wgNDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0g
ICAgPC90Ym9keT4KLTwvdGFibGU+PC94bXA+PC9wcmU+Ci0gICAgICAgICAgICAgICAgICAgICAg
ICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiPgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgZnVsbC13aWR0
aCBzdHJpcHBlZCI+Ci0gICAgPHRoZWFkPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgICA8dGg+
dGl0bGUgMTwvdGg+Ci0gICAgICAgICAgICA8dGg+dGl0bGUgMjwvdGg+Ci0gICAgICAgICAgICA8
dGg+dGl0bGUgMzwvdGg+Ci0gICAgICAgICAgICA8dGg+dGl0bGUgNDwvdGg+Ci0gICAgICAgIDwv
dHI+Ci0gICAgPC90aGVhZD4KLSAgICA8dGJvZHk+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICAg
IDx0ZD5jb2wgMTwvdGQ+Ci0gICAgICAgICAgICA8dGQ+Y29sIDI8L3RkPgotICAgICAgICAgICAg
PHRkPmNvbCAzPC90ZD4KLSAgICAgICAgICAgIDx0ZD5jb2wgNDwvdGQ+Ci0gICAgICAgIDwvdHI+
Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICAgIDx0ZD5jb2wgMTwvdGQ+Ci0gICAgICAgICAgICA8
dGQ+Y29sIDI8L3RkPgotICAgICAgICAgICAgPHRkPmNvbCAzPC90ZD4KLSAgICAgICAgICAgIDx0
ZD5jb2wgNDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICAgIDx0
ZD5jb2wgMTwvdGQ+Ci0gICAgICAgICAgICA8dGQ+Y29sIDI8L3RkPgotICAgICAgICAgICAgPHRk
PmNvbCAzPC90ZD4KLSAgICAgICAgICAgIDx0ZD5jb2wgNDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0g
ICAgICAgIDx0cj4KLSAgICAgICAgICAgIDx0ZD5jb2wgMTwvdGQ+Ci0gICAgICAgICAgICA8dGQ+
Y29sIDI8L3RkPgotICAgICAgICAgICAgPHRkPmNvbCAzPC90ZD4KLSAgICAgICAgICAgIDx0ZD5j
b2wgNDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgPC90Ym9keT4KLTwvdGFibGU+Ci0gICAgICAg
ICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAg
ICAgICAgCi0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgPGRp
diBjbGFzcz0iaGVhZGVyIiBpZD0iRWxlbWVudHMtSW5wdXRzIj4KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZSI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA8aDI+SW5wdXRzPC9oMj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4K
LSAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAKLSAg
ICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgSW5wdXQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4K
LSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBj
bGFzcz0iY29udGVudCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByZT48eG1wPjxk
aXYgY2xhc3M9ImlucHV0Ij4KLSAgICA8aW5wdXQgdHlwZT0idGV4dCIgcmVxdWlyZWQvPgotICAg
IDxsYWJlbD5UZXh0IGZpZWxkMTwvbGFiZWw+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9InJvdyI+Ci0g
ICAgPGRpdiBjbGFzcz0iY29sLTYiPgotICAgICAgICA8ZGl2IGNsYXNzPSJpbnB1dCI+Ci0gICAg
ICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgcmVxdWlyZWQvPgotICAgICAgICAgICAgPGxhYmVs
PlRleHQgZmllbGQyPC9sYWJlbD4KLSAgICAgICAgPC9kaXY+Ci0gICAgPC9kaXY+Ci0gICAgPGRp
diBjbGFzcz0iY29sLTYiPgotICAgICAgICA8ZGl2IGNsYXNzPSJpbnB1dCI+Ci0gICAgICAgICAg
ICA8ZGl2IGNsYXNzPSJwcmVmaXgiPjxwPisxPC9wPjwvZGl2PgotICAgICAgICAgICAgPGlucHV0
IHR5cGU9InRleHQiIHJlcXVpcmVkLz4KLSAgICAgICAgICAgIDxsYWJlbD5UZXh0IGZpZWxkMzwv
bGFiZWw+Ci0gICAgICAgIDwvZGl2PgotICAgIDwvZGl2PgotPC9kaXY+PC94bXA+PC9wcmU+Ci0g
ICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxk
aXYgY2xhc3M9ImNvbnRlbnQiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xh
c3M9ImlucHV0Ij4KLSAgICA8aW5wdXQgdHlwZT0idGV4dCIgcmVxdWlyZWQvPgotICAgIDxsYWJl
bD5UZXh0IGZpZWxkMTwvbGFiZWw+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9InJvdyI+Ci0gICAgPGRp
diBjbGFzcz0iY29sLTYiPgotICAgICAgICA8ZGl2IGNsYXNzPSJpbnB1dCI+Ci0gICAgICAgICAg
ICA8aW5wdXQgdHlwZT0idGV4dCIgcmVxdWlyZWQvPgotICAgICAgICAgICAgPGxhYmVsPlRleHQg
ZmllbGQyPC9sYWJlbD4KLSAgICAgICAgPC9kaXY+Ci0gICAgPC9kaXY+Ci0gICAgPGRpdiBjbGFz
cz0iY29sLTYiPgotICAgICAgICA8ZGl2IGNsYXNzPSJpbnB1dCI+Ci0gICAgICAgICAgICA8ZGl2
IGNsYXNzPSJwcmVmaXgiPjxwPisxPC9wPjwvZGl2PgotICAgICAgICAgICAgPGlucHV0IHR5cGU9
InRleHQiIHJlcXVpcmVkLz4KLSAgICAgICAgICAgIDxsYWJlbD5UZXh0IGZpZWxkMzwvbGFiZWw+
Ci0gICAgICAgIDwvZGl2PgotICAgIDwvZGl2PgotPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAg
ICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAg
ICAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2xpZGVycwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAg
ICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA8cHJlPjx4bXA+PGRpdiBjbGFzcz0icm93Ij4KLSAgICA8ZGl2IGNsYXNzPSJjb2wtNiI+
Ci0gICAgICAgIDxkaXYgY2xhc3M9ImlucHV0Ij4KLSAgICAgICAgICAgIDxsYWJlbD5SYW5nZSBz
bGlkZXI8L2xhYmVsPgotICAgICAgICAgICAgPGlucHV0IHR5cGU9InJhbmdlIiBtaW49IjAiIG1h
eD0iMTAwIiB2YWx1ZT0iMCIvPgotICAgICAgICAgICAgPGlucHV0IHR5cGU9Im51bWJlciIgbWlu
PSIwIiBtYXg9IjEwMCIgdmFsdWU9IjAiLz4KLSAgICAgICAgPC9kaXY+Ci0gICAgPC9kaXY+Ci0g
ICAgPGRpdiBjbGFzcz0iY29sLTYiPgotICAgICAgICA8ZGl2IGNsYXNzPSJpbnB1dCI+Ci0gICAg
ICAgICAgICA8aW5wdXQgdHlwZT0icmFuZ2UiIG1pbj0iMCIgbWF4PSIxMDAiICAgIHZhbHVlPSI4
MCIvPgotICAgICAgICAgICAgPGlucHV0IHR5cGU9Im51bWJlciIgbWluPSIwIiBtYXg9IjEwMCIg
dmFsdWU9IjgwIi8+Ci0gICAgICAgIDwvZGl2PgotICAgIDwvZGl2PgotPC9kaXY+Ci08ZGl2IGNs
YXNzPSJpbnB1dCI+Ci0gICAgPGxhYmVsPkRvdWJsZSByYW5nZSBpbnB1dDwvbGFiZWw+Ci0gICAg
PGRpdiBjbGFzcz0iZG91YmxlLXJhbmdlIj4KLSAgICAgICAgPGlucHV0IHR5cGU9Im51bWJlciIg
bWluPSIwIiBtYXg9IjEwMCIgICAgdmFsdWU9IjIwIi8+Ci0gICAgICAgIDxkaXYgY2xhc3M9InJh
bmdlIj4KLSAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJyYW5nZSIgbWluPSIwIiBtYXg9IjEwMCIg
ICAgdmFsdWU9IjIwIi8+Ci0gICAgICAgICAgICA8aW5wdXQgdHlwZT0icmFuZ2UiIG1pbj0iMCIg
bWF4PSIxMDAiICAgIHZhbHVlPSI3MCIvPgotICAgICAgICA8L2Rpdj4KLSAgICAgICAgPGlucHV0
IHR5cGU9Im51bWJlciIgbWluPSIwIiBtYXg9IjEwMCIgICAgdmFsdWU9IjcwIi8+Ci0gICAgPC9k
aXY+Ci08L2Rpdj48L3htcD48L3ByZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pgot
ICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudCI+Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93Ij4KLSAgICA8ZGl2IGNsYXNzPSJjb2wt
NiI+Ci0gICAgICAgIDxkaXYgY2xhc3M9ImlucHV0Ij4KLSAgICAgICAgICAgIDxsYWJlbD5SYW5n
ZSBzbGlkZXI8L2xhYmVsPgotICAgICAgICAgICAgPGlucHV0IHR5cGU9InJhbmdlIiBtaW49IjAi
IG1heD0iMTAwIiB2YWx1ZT0iMCIvPgotICAgICAgICAgICAgPGlucHV0IHR5cGU9Im51bWJlciIg
bWluPSIwIiBtYXg9IjEwMCIgdmFsdWU9IjAiLz4KLSAgICAgICAgPC9kaXY+Ci0gICAgPC9kaXY+
Ci0gICAgPGRpdiBjbGFzcz0iY29sLTYiPgotICAgICAgICA8ZGl2IGNsYXNzPSJpbnB1dCI+Ci0g
ICAgICAgICAgICA8aW5wdXQgdHlwZT0icmFuZ2UiIG1pbj0iMCIgbWF4PSIxMDAiICAgIHZhbHVl
PSI4MCIvPgotICAgICAgICAgICAgPGlucHV0IHR5cGU9Im51bWJlciIgbWluPSIwIiBtYXg9IjEw
MCIgdmFsdWU9IjgwIi8+Ci0gICAgICAgIDwvZGl2PgotICAgIDwvZGl2PgotPC9kaXY+Ci08ZGl2
IGNsYXNzPSJpbnB1dCI+Ci0gICAgPGxhYmVsPkRvdWJsZSByYW5nZSBpbnB1dDwvbGFiZWw+Ci0g
ICAgPGRpdiBjbGFzcz0iZG91YmxlLXJhbmdlIj4KLSAgICAgICAgPGlucHV0IHR5cGU9Im51bWJl
ciIgbWluPSIwIiBtYXg9IjEwMCIgICAgdmFsdWU9IjIwIi8+Ci0gICAgICAgIDxkaXYgY2xhc3M9
InJhbmdlIj4KLSAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJyYW5nZSIgbWluPSIwIiBtYXg9IjEw
MCIgICAgdmFsdWU9IjIwIi8+Ci0gICAgICAgICAgICA8aW5wdXQgdHlwZT0icmFuZ2UiIG1pbj0i
MCIgbWF4PSIxMDAiICAgIHZhbHVlPSI3MCIvPgotICAgICAgICA8L2Rpdj4KLSAgICAgICAgPGlu
cHV0IHR5cGU9Im51bWJlciIgbWluPSIwIiBtYXg9IjEwMCIgICAgdmFsdWU9IjcwIi8+Ci0gICAg
PC9kaXY+Ci08L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAg
ICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiPgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBOdW1iZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAg
ICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0i
Y29udGVudCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByZT48eG1wPjxkaXYgY2xh
c3M9ImlucHV0Ij4KLSAgICA8aW5wdXQgdHlwZT0ibnVtYmVyIiByZXF1aXJlZCBtaW49IjAiIG1h
eD0iMTAwIi8+Ci0gICAgPGxhYmVsPk51bWJlcjwvbGFiZWw+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9
ImlucHV0Ij4KLSAgICA8aW5wdXQgdHlwZT0ibnVtYmVyIiByZXF1aXJlZCBtaW49IjAiIG1heD0i
MTAiIHZhbHVlPSIxMSIvPgotICAgIDxsYWJlbD5OdW1iZXIgb3V0IG9mIHJhbmdlPC9sYWJlbD4K
LTwvZGl2PjwveG1wPjwvcHJlPgotICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAg
ICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbnB1dCI+Ci0gICAgPGlucHV0IHR5cGU9Im51bWJl
ciIgcmVxdWlyZWQgbWluPSIwIiBtYXg9IjEwMCIvPgotICAgIDxsYWJlbD5OdW1iZXI8L2xhYmVs
PgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJpbnB1dCI+Ci0gICAgPGlucHV0IHR5cGU9Im51bWJlciIg
cmVxdWlyZWQgbWluPSIwIiBtYXg9IjEwIiB2YWx1ZT0iMTEiLz4KLSAgICA8bGFiZWw+TnVtYmVy
IG91dCBvZiByYW5nZTwvbGFiZWw+Ci08L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwv
ZGl2PgotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiPgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAg
ICAgPGRpdiBjbGFzcz0iY29udGVudCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBy
ZT48eG1wPjxkaXYgY2xhc3M9ImlucHV0Ij4KLSAgICA8c2VsZWN0IHJlcXVpcmVkPgotICAgICAg
ICA8b3B0aW9uPjwvb3B0aW9uPgotICAgICAgICA8b3B0aW9uPm9wdGlvbiAxPC9vcHRpb24+Ci0g
ICAgICAgIDxvcHRpb24+b3B0aW9uIDI8L29wdGlvbj4KLSAgICAgICAgPG9wdGlvbj5vcHRpb24g
Mzwvb3B0aW9uPgotICAgIDwvc2VsZWN0PgotICAgIDxsYWJlbD5TZWxlY3Q8L2xhYmVsPgotPC9k
aXY+PC94bXA+PC9wcmU+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAg
ICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiPgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDxkaXYgY2xhc3M9ImlucHV0Ij4KLSAgICA8c2VsZWN0IHJlcXVpcmVkPgotICAg
ICAgICA8b3B0aW9uPjwvb3B0aW9uPgotICAgICAgICA8b3B0aW9uPm9wdGlvbiAxPC9vcHRpb24+
Ci0gICAgICAgIDxvcHRpb24+b3B0aW9uIDI8L29wdGlvbj4KLSAgICAgICAgPG9wdGlvbj5vcHRp
b24gMzwvb3B0aW9uPgotICAgIDwvc2VsZWN0PgotICAgIDxsYWJlbD5TZWxlY3Q8L2xhYmVsPgot
PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAg
ICAgCi0gICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
U3dpdGNoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQi
PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcmU+PHhtcD48ZGl2IGNsYXNzPSJpbnB1
dCI+Ci0gICAgPGxhYmVsPlN3aXRjaDE8L2xhYmVsPgotICAgIDxsYWJlbCBjbGFzcz0ic3dpdGNo
Ij4KLSAgICAgICAgPGlucHV0IHR5cGU9ImNoZWNrYm94Ij4KLSAgICAgICAgPHNwYW4gY2xhc3M9
InNsaWRlciI+PC9zcGFuPgotICAgIDwvbGFiZWw+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9ImlucHV0
Ij4KLSAgICA8bGFiZWw+U3dpdGNoMjwvbGFiZWw+Ci0gICAgPGxhYmVsIGNsYXNzPSJzd2l0Y2gi
PgotICAgICAgICA8aW5wdXQgdHlwZT0iY2hlY2tib3giPgotICAgICAgICA8c3BhbiBjbGFzcz0i
c2xpZGVyIj48L3NwYW4+Ci0gICAgPC9sYWJlbD4KLTwvZGl2PjwveG1wPjwvcHJlPgotICAgICAg
ICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNs
YXNzPSJjb250ZW50Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJp
bnB1dCI+Ci0gICAgPGxhYmVsPlN3aXRjaDE8L2xhYmVsPgotICAgIDxsYWJlbCBjbGFzcz0ic3dp
dGNoIj4KLSAgICAgICAgPGlucHV0IHR5cGU9ImNoZWNrYm94Ij4KLSAgICAgICAgPHNwYW4gY2xh
c3M9InNsaWRlciI+PC9zcGFuPgotICAgIDwvbGFiZWw+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9Imlu
cHV0Ij4KLSAgICA8bGFiZWw+U3dpdGNoMjwvbGFiZWw+Ci0gICAgPGxhYmVsIGNsYXNzPSJzd2l0
Y2giPgotICAgICAgICA8aW5wdXQgdHlwZT0iY2hlY2tib3giPgotICAgICAgICA8c3BhbiBjbGFz
cz0ic2xpZGVyIj48L3NwYW4+Ci0gICAgPC9sYWJlbD4KLTwvZGl2PgotICAgICAgICAgICAgICAg
ICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAg
ICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudCI+
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1peGluCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAg
ICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiPgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDxwcmU+PHhtcD48ZGl2IGNsYXNzPSJpbnB1dCI+Ci0gICAgPGlucHV0IHR5cGU9InRl
eHQiIHJlcXVpcmVkIGRpc2FibGVkLz4KLSAgICA8bGFiZWw+RGlzYWJsZWQ8L2xhYmVsPgotPC9k
aXY+Ci08ZGl2IGNsYXNzPSJpbnB1dCI+Ci0gICAgPGlucHV0IHR5cGU9InRleHQiIHJlcXVpcmVk
IGRpc2FibGVkIHZhbHVlPSJJIGFtIGRpc2FibGVkIi8+Ci0gICAgPGxhYmVsPkRpc2FibGVkIHdp
dGggZXhpc3RpbmcgdmFsdWU8L2xhYmVsPgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJpbnB1dCI+Ci0g
ICAgPGlucHV0IGNsYXNzPSJpbnZhbGlkIiB0eXBlPSJ0ZXh0IiByZXF1aXJlZCB2YWx1ZT0idXNl
IGludmFsaWQgbWl4aW4gdG8gZm9yY2UgaW52YWxpZCBzdHlsZSIvPgotICAgIDxsYWJlbD5JbnZh
bGlkPC9sYWJlbD4KLTwvZGl2PgotPGRpdiBjbGFzcz0iaW5wdXQiPgotICAgIDxsYWJlbD5JbnZh
bGlkIFJhbmdlIHNsaWRlcjwvbGFiZWw+Ci0gICAgPGlucHV0IGNsYXNzPSJpbnZhbGlkIiB0eXBl
PSJyYW5nZSIgbWluPSIwIiBtYXg9IjEwMCIgdmFsdWU9IjEwMSIvPgotICAgIDxpbnB1dCB0eXBl
PSJudW1iZXIiIG1pbj0iMCIgbWF4PSIxMDAiIHZhbHVlPSIxMDEiLz4KLTwvZGl2PjwveG1wPjwv
cHJlPgotICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAg
ICAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8
ZGl2IGNsYXNzPSJpbnB1dCI+Ci0gICAgPGlucHV0IHR5cGU9InRleHQiIHJlcXVpcmVkIGRpc2Fi
bGVkLz4KLSAgICA8bGFiZWw+RGlzYWJsZWQ8L2xhYmVsPgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJp
bnB1dCI+Ci0gICAgPGlucHV0IHR5cGU9InRleHQiIHJlcXVpcmVkIGRpc2FibGVkIHZhbHVlPSJJ
IGFtIGRpc2FibGVkIi8+Ci0gICAgPGxhYmVsPkRpc2FibGVkIHdpdGggZXhpc3RpbmcgdmFsdWU8
L2xhYmVsPgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJpbnB1dCI+Ci0gICAgPGlucHV0IGNsYXNzPSJp
bnZhbGlkIiB0eXBlPSJ0ZXh0IiByZXF1aXJlZCB2YWx1ZT0idXNlIGludmFsaWQgbWl4aW4gdG8g
Zm9yY2UgaW52YWxpZCBzdHlsZSIvPgotICAgIDxsYWJlbD5JbnZhbGlkPC9sYWJlbD4KLTwvZGl2
PgotPGRpdiBjbGFzcz0iaW5wdXQiPgotICAgIDxsYWJlbD5JbnZhbGlkIFJhbmdlIHNsaWRlcjwv
bGFiZWw+Ci0gICAgPGlucHV0IGNsYXNzPSJpbnZhbGlkIiB0eXBlPSJyYW5nZSIgbWluPSIwIiBt
YXg9IjEwMCIgdmFsdWU9IjEwMSIvPgotICAgIDxpbnB1dCB0eXBlPSJudW1iZXIiIG1pbj0iMCIg
bWF4PSIxMDAiIHZhbHVlPSIxMDEiLz4KLTwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAg
PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIAotICAgICAgICAg
ICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImhlYWRlciIg
aWQ9IkVsZW1lbnRzLUJ1dHRvbiI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBj
bGFzcz0idGl0bGUiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgyPkJ1dHRvbjwv
aDI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAg
ICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAg
IAotICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2
IGNsYXNzPSJjb250ZW50Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJlPjx4bXA+
PGJ1dHRvbiBjbGFzcz0iYnV0dG9uIj5EZWZhdWx0PC9idXR0b24+Ci08YnV0dG9uIGNsYXNzPSJi
dXR0b24gcHJpbWFyeSI+UHJpbWFyeTwvYnV0dG9uPgotPGJ1dHRvbiBjbGFzcz0iYnV0dG9uIGRh
bmdlciI+RGFuZ2VyPC9idXR0b24+PC94bXA+PC9wcmU+Ci0gICAgICAgICAgICAgICAgICAgICAg
ICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiPgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImJ1dHRvbiI+RGVmYXVs
dDwvYnV0dG9uPgotPGJ1dHRvbiBjbGFzcz0iYnV0dG9uIHByaW1hcnkiPlByaW1hcnk8L2J1dHRv
bj4KLTxidXR0b24gY2xhc3M9ImJ1dHRvbiBkYW5nZXIiPkRhbmdlcjwvYnV0dG9uPgotICAgICAg
ICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAg
ICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0i
Y29udGVudCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpemUKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAg
ICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudCI+Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPHByZT48eG1wPjxidXR0b24gY2xhc3M9ImJ1dHRvbiBodWdlIj5odWdl
PC9idXR0b24+Ci08YnV0dG9uIGNsYXNzPSJidXR0b24gbGFyZ2UiPmxhcmdlPC9idXR0b24+Ci08
YnV0dG9uIGNsYXNzPSJidXR0b24gbWVkaXVtIj5tZWRpdW08L2J1dHRvbj4KLTxidXR0b24gY2xh
c3M9ImJ1dHRvbiI+c21hbGw8L2J1dHRvbj4KLTxidXR0b24gY2xhc3M9ImJ1dHRvbiB0aW55Ij50
aW55PC9idXR0b24+PC94bXA+PC9wcmU+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4K
LSAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiPgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImJ1dHRvbiBodWdlIj5odWdlPC9idXR0
b24+Ci08YnV0dG9uIGNsYXNzPSJidXR0b24gbGFyZ2UiPmxhcmdlPC9idXR0b24+Ci08YnV0dG9u
IGNsYXNzPSJidXR0b24gbWVkaXVtIj5tZWRpdW08L2J1dHRvbj4KLTxidXR0b24gY2xhc3M9ImJ1
dHRvbiI+c21hbGw8L2J1dHRvbj4KLTxidXR0b24gY2xhc3M9ImJ1dHRvbiB0aW55Ij50aW55PC9i
dXR0b24+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAg
ICAgCi0gICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RGlzYWJsZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAg
ICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGVu
dCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByZT48eG1wPjxidXR0b24gY2xhc3M9
ImJ1dHRvbiIgZGlzYWJsZWQ+RGVmYXVsdDwvYnV0dG9uPgotPGJ1dHRvbiBjbGFzcz0iYnV0dG9u
IHByaW1hcnkiIGRpc2FibGVkPlByaW1hcnk8L2J1dHRvbj4KLTxidXR0b24gY2xhc3M9ImJ1dHRv
biBkYW5nZXIiIGRpc2FibGVkPkRhbmdlcjwvYnV0dG9uPjwveG1wPjwvcHJlPgotICAgICAgICAg
ICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNz
PSJjb250ZW50Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJi
dXR0b24iIGRpc2FibGVkPkRlZmF1bHQ8L2J1dHRvbj4KLTxidXR0b24gY2xhc3M9ImJ1dHRvbiBw
cmltYXJ5IiBkaXNhYmxlZD5QcmltYXJ5PC9idXR0b24+Ci08YnV0dG9uIGNsYXNzPSJidXR0b24g
ZGFuZ2VyIiBkaXNhYmxlZD5EYW5nZXI8L2J1dHRvbj4KLSAgICAgICAgICAgICAgICAgICAgICAg
IDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAKLSAgICAgICAg
ICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkZXIi
IGlkPSJFbGVtZW50cy1Td2l0Y2giPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYg
Y2xhc3M9InRpdGxlIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMj5Td2l0Y2g8
L2gyPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAg
ICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAg
ICAKLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgPGRp
diBjbGFzcz0iY29udGVudCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByZT48eG1w
PjxsYWJlbCBjbGFzcz0ic3dpdGNoIj4KLSAgICA8aW5wdXQgdHlwZT0iY2hlY2tib3giPgotICAg
IDxzcGFuIGNsYXNzPSJzbGlkZXIiPjwvc3Bhbj4KLTwvbGFiZWw+PC94bXA+PC9wcmU+Ci0gICAg
ICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYg
Y2xhc3M9ImNvbnRlbnQiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFz
cz0ic3dpdGNoIj4KLSAgICA8aW5wdXQgdHlwZT0iY2hlY2tib3giPgotICAgIDxzcGFuIGNsYXNz
PSJzbGlkZXIiPjwvc3Bhbj4KLTwvbGFiZWw+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rp
dj4KLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAg
ICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGVyIiBpZD0i
RWxlbWVudHMtQmFkZ2UiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9
InRpdGxlIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMj5CYWRnZTwvaDI+Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAg
ICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIAotICAg
ICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNz
PSJjb250ZW50Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJlPjx4bXA+PGRpdiBj
bGFzcz0iYmFkZ2UiPgotICAgIDxkaXYgY2xhc3M9InRleHQgYmxvY2siPgotICAgICAgICA8ZGl2
IGNsYXNzPSJ0ZXh0IHRpbnkiPmlNYWMgMjciIChMYXRlIDIwMTIpPC9kaXY+Ci0gICAgICAgIDxk
aXYgY2xhc3M9InRleHQgc21hbGwiPmlNYWMgMTMsMjwvZGl2PgotICAgIDwvZGl2PgotPC9kaXY+
Ci08ZGl2IGNsYXNzPSJiYWRnZSBvdXRsaW5lIj4KLSAgICA8ZGl2IGNsYXNzPSJ0ZXh0IGJsb2Nr
Ij4KLSAgICAgICAgPGRpdiBjbGFzcz0idGV4dCB0aW55Ij5pTWFjIDI3IiAoTGF0ZSAyMDEzKTwv
ZGl2PgotICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0IHNtYWxsIj5pTWFjIDE0LDI8L2Rpdj4KLSAg
ICA8L2Rpdj4KLTwvZGl2PgotPGRpdiBjbGFzcz0iYmFkZ2UgYWN0aXZlIj4KLSAgICA8ZGl2IGNs
YXNzPSJ0ZXh0IGJsb2NrIj4KLSAgICAgICAgPGRpdiBjbGFzcz0idGV4dCB0aW55Ij5pTWFjIDI3
IiAoTGF0ZSAyMDEzKTwvZGl2PgotICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0IHNtYWxsIj5pTWFj
IDE0LDI8L2Rpdj4KLSAgICA8L2Rpdj4KLTwvZGl2PjwveG1wPjwvcHJlPgotICAgICAgICAgICAg
ICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJj
b250ZW50Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJiYWRnZSI+
Ci0gICAgPGRpdiBjbGFzcz0idGV4dCBibG9jayI+Ci0gICAgICAgIDxkaXYgY2xhc3M9InRleHQg
dGlueSI+aU1hYyAyNyIgKExhdGUgMjAxMik8L2Rpdj4KLSAgICAgICAgPGRpdiBjbGFzcz0idGV4
dCBzbWFsbCI+aU1hYyAxMywyPC9kaXY+Ci0gICAgPC9kaXY+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9
ImJhZGdlIG91dGxpbmUiPgotICAgIDxkaXYgY2xhc3M9InRleHQgYmxvY2siPgotICAgICAgICA8
ZGl2IGNsYXNzPSJ0ZXh0IHRpbnkiPmlNYWMgMjciIChMYXRlIDIwMTMpPC9kaXY+Ci0gICAgICAg
IDxkaXYgY2xhc3M9InRleHQgc21hbGwiPmlNYWMgMTQsMjwvZGl2PgotICAgIDwvZGl2PgotPC9k
aXY+Ci08ZGl2IGNsYXNzPSJiYWRnZSBhY3RpdmUiPgotICAgIDxkaXYgY2xhc3M9InRleHQgYmxv
Y2siPgotICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0IHRpbnkiPmlNYWMgMjciIChMYXRlIDIwMTMp
PC9kaXY+Ci0gICAgICAgIDxkaXYgY2xhc3M9InRleHQgc21hbGwiPmlNYWMgMTQsMjwvZGl2Pgot
ICAgIDwvZGl2PgotPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAg
ICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIAot
ICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGVyIiBpZD0iRWxlbWVudHMt
RG90Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZSI+Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDI+RG90PC9oMj4KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAg
ICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAg
ICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiPgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcmU+PHhtcD48ZGl2IGNsYXNzPSJkb3QiPjwv
ZGl2PgotPGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3MiPjwvZGl2PgotPGRpdiBjbGFzcz0iZG90IGZh
aWxlZCI+PC9kaXY+Ci08ZGl2IGNsYXNzPSJkb3QgZXJyb3IiPjwvZGl2PjwveG1wPjwvcHJlPgot
ICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8
ZGl2IGNsYXNzPSJjb250ZW50Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNs
YXNzPSJkb3QiPjwvZGl2PgotPGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3MiPjwvZGl2PgotPGRpdiBj
bGFzcz0iZG90IGZhaWxlZCI+PC9kaXY+Ci08ZGl2IGNsYXNzPSJkb3QgZXJyb3IiPjwvZGl2Pgot
ICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgIAotICAg
ICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBj
bGFzcz0iY29udGVudCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpemUKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAg
IAotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudCI+Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPHByZT48eG1wPjxkaXYgY2xhc3M9ImRvdCBzbWFsbCI+PC9k
aXY+Ci08ZGl2IGNsYXNzPSJkb3QgbWVkaXVtIj48L2Rpdj4KLTxkaXYgY2xhc3M9ImRvdCBsYXJn
ZSI+PC9kaXY+PC94bXA+PC9wcmU+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAg
ICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiPgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCBzbWFsbCI+PC9kaXY+Ci08ZGl2IGNsYXNz
PSJkb3QgbWVkaXVtIj48L2Rpdj4KLTxkaXYgY2xhc3M9ImRvdCBsYXJnZSI+PC9kaXY+Ci0gICAg
ICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAg
ICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNz
PSJjb250ZW50Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2l0aCBzdHJpbmcg
aW5zaWRlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQi
PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcmU+PHhtcD48ZGl2IGNsYXNzPSJkb3Qg
c3VjY2VzcyI+Ci0gICAgPGRpdiBjbGFzcz0idGV4dCI+JiMxMDAwMzwvZGl2PgotPC9kaXY+Ci08
ZGl2IGNsYXNzPSJkb3QgZmFpbGVkIj4KLSAgICA8ZGl2IGNsYXNzPSJ0ZXh0Ij4mIzEyMDI0Nzwv
ZGl2PgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJkb3QgZXJyb3IiPgotICAgIDxkaXYgY2xhc3M9InRl
eHQiPiE8L2Rpdj4KLTwvZGl2PgotPGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3MgbGFyZ2UiPgotICAg
IDxkaXYgY2xhc3M9InRleHQiPiYjMTAwMDM8L2Rpdj4KLTwvZGl2PgotPGRpdiBjbGFzcz0iZG90
IGZhaWxlZCBsYXJnZSI+Ci0gICAgPGRpdiBjbGFzcz0idGV4dCI+JiMxMjAyNDc8L2Rpdj4KLTwv
ZGl2PgotPGRpdiBjbGFzcz0iZG90IGVycm9yIGxhcmdlIj4KLSAgICA8ZGl2IGNsYXNzPSJ0ZXh0
Ij4hPC9kaXY+Ci08L2Rpdj48L3htcD48L3ByZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwv
ZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudCI+Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3MiPgotICAgIDxk
aXYgY2xhc3M9InRleHQiPiYjMTAwMDM8L2Rpdj4KLTwvZGl2PgotPGRpdiBjbGFzcz0iZG90IGZh
aWxlZCI+Ci0gICAgPGRpdiBjbGFzcz0idGV4dCI+JiMxMjAyNDc8L2Rpdj4KLTwvZGl2PgotPGRp
diBjbGFzcz0iZG90IGVycm9yIj4KLSAgICA8ZGl2IGNsYXNzPSJ0ZXh0Ij4hPC9kaXY+Ci08L2Rp
dj4KLTxkaXYgY2xhc3M9ImRvdCBzdWNjZXNzIGxhcmdlIj4KLSAgICA8ZGl2IGNsYXNzPSJ0ZXh0
Ij4mIzEwMDAzPC9kaXY+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9ImRvdCBmYWlsZWQgbGFyZ2UiPgot
ICAgIDxkaXYgY2xhc3M9InRleHQiPiYjMTIwMjQ3PC9kaXY+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9
ImRvdCBlcnJvciBsYXJnZSI+Ci0gICAgPGRpdiBjbGFzcz0idGV4dCI+ITwvZGl2PgotPC9kaXY+
Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgCi0g
ICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2
IGNsYXNzPSJjb250ZW50Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2l0aCBp
bWFnZSBpbnNpZGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAg
ICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29u
dGVudCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByZT48eG1wPjxkaXYgY2xhc3M9
ImRvdCBlcnJvciI+Ci0gICAgPGltZyBzcmM9Ii4uL2ljb25zL2Nsb2NrLnN2ZyI+Ci08L2Rpdj48
L3htcD48L3ByZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAg
ICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudCI+Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPGRpdiBjbGFzcz0iZG90IGVycm9yIj4KLSAgICA8aW1nIHNyYz0iLi4vaWNvbnMvY2xv
Y2suc3ZnIj4KLTwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAg
ICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudCI+Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEJsaW5rCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9
ImNvbnRlbnQiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcmU+PHhtcD48ZGl2IGNs
YXNzPSJkb3QgYmxpbmsiPjwvZGl2PgotPGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3MgYmxpbmsiPjwv
ZGl2PgotPGRpdiBjbGFzcz0iZG90IGZhaWxlZCBibGluayI+PC9kaXY+Ci08ZGl2IGNsYXNzPSJk
b3QgZXJyb3IgYmxpbmsiPjwvZGl2PjwveG1wPjwvcHJlPgotICAgICAgICAgICAgICAgICAgICAg
ICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3QgYmxpbmsiPjwvZGl2
PgotPGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3MgYmxpbmsiPjwvZGl2PgotPGRpdiBjbGFzcz0iZG90
IGZhaWxlZCBibGluayI+PC9kaXY+Ci08ZGl2IGNsYXNzPSJkb3QgZXJyb3IgYmxpbmsiPjwvZGl2
PgotICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgIAot
ICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRp
diBjbGFzcz0iY29udGVudCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERvdCBz
ZWxlY3RvcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAg
ICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50
Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJlPjx4bXA+PGRpdiBjbGFzcz0iZG90
IHNlbGVjdG9yIj4KLSAgICA8bGFiZWw+Ci0gICAgICAgIDxpbnB1dCB0eXBlPSJyYWRpbyIgbmFt
ZT0ic2VsZWN0b3IiPgotICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qgc3VjY2VzcyI+PC9kaXY+Ci0g
ICAgPC9sYWJlbD4KLSAgICA8bGFiZWw+Ci0gICAgICAgIDxpbnB1dCB0eXBlPSJyYWRpbyIgbmFt
ZT0ic2VsZWN0b3IiPgotICAgICAgICA8ZGl2IGNsYXNzPSJkb3QgZmFpbGVkIj48L2Rpdj4KLSAg
ICA8L2xhYmVsPgotICAgIDxsYWJlbD4KLSAgICAgICAgPGlucHV0IHR5cGU9InJhZGlvIiBuYW1l
PSJzZWxlY3RvciI+Ci0gICAgICAgIDxkaXYgY2xhc3M9ImRvdCBlcnJvciI+PC9kaXY+Ci0gICAg
PC9sYWJlbD4KLTwvZGl2PjwveG1wPjwvcHJlPgotICAgICAgICAgICAgICAgICAgICAgICAgPC9k
aXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4KLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qgc2VsZWN0b3IiPgotICAgIDxs
YWJlbD4KLSAgICAgICAgPGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSJzZWxlY3RvciI+Ci0gICAg
ICAgIDxkaXYgY2xhc3M9ImRvdCBzdWNjZXNzIj48L2Rpdj4KLSAgICA8L2xhYmVsPgotICAgIDxs
YWJlbD4KLSAgICAgICAgPGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSJzZWxlY3RvciI+Ci0gICAg
ICAgIDxkaXYgY2xhc3M9ImRvdCBmYWlsZWQiPjwvZGl2PgotICAgIDwvbGFiZWw+Ci0gICAgPGxh
YmVsPgotICAgICAgICA8aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9InNlbGVjdG9yIj4KLSAgICAg
ICAgPGRpdiBjbGFzcz0iZG90IGVycm9yIj48L2Rpdj4KLSAgICA8L2xhYmVsPgotPC9kaXY+Ci0g
ICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgCi0gICAg
ICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAg
ICAgPGRpdiBjbGFzcz0iaGVhZGVyIiBpZD0iRWxlbWVudHMtY2hpcCI+Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGUiPgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPGgyPmNoaXA8L2gyPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2
PgotICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgIAot
ICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAg
ICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudCI+Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPHByZT48eG1wPjxkaXYgY2xhc3M9ImNoaXAiPgotICAgIDxkaXYgY2xhc3M9ImRv
dCBzbWFsbCBibGluayI+PC9kaXY+Ci0gICAgPGRpdiBjbGFzcz0idGV4dCBibG9jayI+Ci0gICAg
ICAgIDxwPmlQb25lPC9wPgotICAgIDwvZGl2PgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJjaGlwIj4K
LSAgICA8ZGl2IGNsYXNzPSJkb3Qgc21hbGwgYmxpbmsgZmFpbGVkIj48L2Rpdj4KLSAgICA8ZGl2
IGNsYXNzPSJ0ZXh0IGJsb2NrIj4KLSAgICAgICAgPHA+aVBhZDwvcD4KLSAgICA8L2Rpdj4KLTwv
ZGl2PgotPGRpdiBjbGFzcz0iY2hpcCI+Ci0gICAgPGRpdiBjbGFzcz0iZG90IHNtYWxsIHN1Y2Nl
c3MiPjwvZGl2PgotICAgIDxkaXYgY2xhc3M9InRleHQgYmxvY2siPgotICAgICAgICA8cD5NYWM8
L3A+Ci0gICAgPC9kaXY+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9ImNoaXAiPgotICAgIDxkaXYgY2xh
c3M9InRleHQgYmxvY2siPgotICAgICAgICA8cD5tYWNPUzwvcD4KLSAgICA8L2Rpdj4KLSAgICA8
ZGl2IGNsYXNzPSJ0ZXh0IGJsb2NrIj4KLSAgICAgICAgPGE+WDwvYT4KLSAgICA8L2Rpdj4KLTwv
ZGl2PgotPGRpdiBjbGFzcz0iY2hpcCI+Ci0gICAgPGRpdiBjbGFzcz0idGV4dCBibG9jayI+Ci0g
ICAgICAgIDxwPmlPUzwvcD4KLSAgICA8L2Rpdj4KLSAgICA8ZGl2IGNsYXNzPSJ0ZXh0IGJsb2Nr
Ij4KLSAgICAgICAgPGE+WDwvYT4KLSAgICA8L2Rpdj4KLTwvZGl2PgotPGRpdiBjbGFzcz0iY2hp
cCI+Ci0gICAgPGRpdiBjbGFzcz0idGV4dCBibG9jayI+Ci0gICAgICAgIDxwPndhdGNoT1M8L3A+
Ci0gICAgPC9kaXY+Ci0gICAgPGRpdiBjbGFzcz0idGV4dCBibG9jayI+Ci0gICAgICAgIDxhPlg8
L2E+Ci0gICAgPC9kaXY+Ci08L2Rpdj48L3htcD48L3ByZT4KLSAgICAgICAgICAgICAgICAgICAg
ICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudCI+
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2hpcCI+Ci0gICAgPGRp
diBjbGFzcz0iZG90IHNtYWxsIGJsaW5rIj48L2Rpdj4KLSAgICA8ZGl2IGNsYXNzPSJ0ZXh0IGJs
b2NrIj4KLSAgICAgICAgPHA+aVBvbmU8L3A+Ci0gICAgPC9kaXY+Ci08L2Rpdj4KLTxkaXYgY2xh
c3M9ImNoaXAiPgotICAgIDxkaXYgY2xhc3M9ImRvdCBzbWFsbCBibGluayBmYWlsZWQiPjwvZGl2
PgotICAgIDxkaXYgY2xhc3M9InRleHQgYmxvY2siPgotICAgICAgICA8cD5pUGFkPC9wPgotICAg
IDwvZGl2PgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJjaGlwIj4KLSAgICA8ZGl2IGNsYXNzPSJkb3Qg
c21hbGwgc3VjY2VzcyI+PC9kaXY+Ci0gICAgPGRpdiBjbGFzcz0idGV4dCBibG9jayI+Ci0gICAg
ICAgIDxwPk1hYzwvcD4KLSAgICA8L2Rpdj4KLTwvZGl2PgotPGRpdiBjbGFzcz0iY2hpcCI+Ci0g
ICAgPGRpdiBjbGFzcz0idGV4dCBibG9jayI+Ci0gICAgICAgIDxwPm1hY09TPC9wPgotICAgIDwv
ZGl2PgotICAgIDxkaXYgY2xhc3M9InRleHQgYmxvY2siPgotICAgICAgICA8YT5YPC9hPgotICAg
IDwvZGl2PgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJjaGlwIj4KLSAgICA8ZGl2IGNsYXNzPSJ0ZXh0
IGJsb2NrIj4KLSAgICAgICAgPHA+aU9TPC9wPgotICAgIDwvZGl2PgotICAgIDxkaXYgY2xhc3M9
InRleHQgYmxvY2siPgotICAgICAgICA8YT5YPC9hPgotICAgIDwvZGl2PgotPC9kaXY+Ci08ZGl2
IGNsYXNzPSJjaGlwIj4KLSAgICA8ZGl2IGNsYXNzPSJ0ZXh0IGJsb2NrIj4KLSAgICAgICAgPHA+
d2F0Y2hPUzwvcD4KLSAgICA8L2Rpdj4KLSAgICA8ZGl2IGNsYXNzPSJ0ZXh0IGJsb2NrIj4KLSAg
ICAgICAgPGE+WDwvYT4KLSAgICA8L2Rpdj4KLTwvZGl2PgotICAgICAgICAgICAgICAgICAgICAg
ICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIAotICAgICAg
ICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImhlYWRl
ciIgaWQ9IkVsZW1lbnRzLVRhYnMiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYg
Y2xhc3M9InRpdGxlIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMj5UYWJzPC9o
Mj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAg
ICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAg
Ci0gICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYg
Y2xhc3M9ImNvbnRlbnQiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcmU+PHhtcD48
ZGl2IGNsYXNzPSJ0YWJzIj4KLSAgICA8ZGl2IGNsYXNzPSJ0aXRsZSI+Ci0gICAgICAgIFRpdGxl
Ci0gICAgPC9kaXY+Ci0gICAgPGRpdiBjbGFzcz0idGFiIGFjdGl2ZSI+Ci0gICAgICAgIDxhIGNs
YXNzPSJsaW5rIj5UYWIgMTwvYT4KLSAgICA8L2Rpdj4KLSAgICA8ZGl2IGNsYXNzPSJ0YWIiPgot
ICAgICAgICA8YSBjbGFzcz0ibGluayI+VGFiIDI8L2E+Ci0gICAgPC9kaXY+Ci08L2Rpdj48L3ht
cD48L3ByZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAg
ICAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPGRpdiBjbGFzcz0idGFicyI+Ci0gICAgPGRpdiBjbGFzcz0idGl0bGUiPgotICAgICAgICBU
aXRsZQotICAgIDwvZGl2PgotICAgIDxkaXYgY2xhc3M9InRhYiBhY3RpdmUiPgotICAgICAgICA8
YSBjbGFzcz0ibGluayI+VGFiIDE8L2E+Ci0gICAgPC9kaXY+Ci0gICAgPGRpdiBjbGFzcz0idGFi
Ij4KLSAgICAgICAgPGEgY2xhc3M9ImxpbmsiPlRhYiAyPC9hPgotICAgIDwvZGl2PgotPC9kaXY+
Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgCi0g
ICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAg
ICAgICAgPGRpdiBjbGFzcz0iaGVhZGVyIiBpZD0iRWxlbWVudHMtVGltZWxpbmUiPgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlIj4KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDxoMj5UaW1lbGluZTwvaDI+Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAg
ICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAg
Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA8cHJlPjx4bXA+PGRpdiBjbGFzcz0idGltZWxpbmUiPgotICAg
IDxkaXYgY2xhc3M9ImhlYWRlciI+Ci0gICAgICAgIDxkaXYgY2xhc3M9InNlcmllcyI+Ci0gICAg
ICAgICAgICB0aW1lIGxpbmUgMQotICAgICAgICA8L2Rpdj4KLSAgICAgICAgPGRpdiBjbGFzcz0i
c2VyaWVzIj4KLSAgICAgICAgICAgIHRpbWUgbGluZSAyCi0gICAgICAgIDwvZGl2PgotICAgIDwv
ZGl2PgotICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiPgotICAgICAgICA8ZGl2IGNsYXNzPSJzZXJp
ZXMiPgotICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90Ij4KLSAgICAgICAgICAgICAgICA8ZGl2
IGNsYXNzPSJ0YWciPjEyMzE8L2Rpdj4KLSAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAg
PGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3MiPgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRh
ZyI+NDU2PC9kaXY+Ci0gICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9
ImRvdCI+PC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3QiPjwvZGl2PgotICAgICAg
ICAgICAgPGRpdiBjbGFzcz0iZG90IGVycm9yIj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNz
PSJ0YWciPjEyMzwvZGl2PgotICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNs
YXNzPSJkb3QgZW1wdHkiPjwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90Ij48L2Rp
dj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCI+PC9kaXY+Ci0gICAgICAgICAgICA8ZGl2
IGNsYXNzPSJkb3QiPjwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90Ij48L2Rpdj4K
LSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCI+PC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNs
YXNzPSJkb3QiPjwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90Ij48L2Rpdj4KLSAg
ICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCI+PC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNz
PSJkb3QiPjwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90Ij48L2Rpdj4KLSAgICAg
ICAgICAgIDxkaXYgY2xhc3M9ImRvdCI+PC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJk
b3QiPjwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90Ij48L2Rpdj4KLSAgICAgICAg
PC9kaXY+Ci0gICAgICAgIDxkaXYgY2xhc3M9InNlcmllcyI+Ci0gICAgICAgICAgICA8ZGl2IGNs
YXNzPSJkb3QgZW1wdHkiPjwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90IGVtcHR5
Ij48L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCI+Ci0gICAgICAgICAgICAgICAg
PGRpdiBjbGFzcz0idGFnIj4zNTMzPC9kaXY+Ci0gICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAg
ICAgIDxkaXYgY2xhc3M9ImRvdCI+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGFnIj4z
NTMyPC9kaXY+Ci0gICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRv
dCI+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGFnIj4zNTI8L2Rpdj4KLSAgICAgICAg
ICAgIDwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90Ij4KLSAgICAgICAgICAgICAg
ICA8ZGl2IGNsYXNzPSJ0YWciPjM1MTwvZGl2PgotICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAg
ICAgICA8ZGl2IGNsYXNzPSJkb3QiPgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRhZyI+
MTwvZGl2PgotICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qi
PgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRhZyI+NDU2PC9kaXY+Ci0gICAgICAgICAg
ICA8L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCI+PC9kaXY+Ci0gICAgICAgICAg
ICA8ZGl2IGNsYXNzPSJkb3QiPjwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90Ij48
L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCI+PC9kaXY+Ci0gICAgICAgICAgICA8
ZGl2IGNsYXNzPSJkb3QiPjwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90Ij48L2Rp
dj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCI+PC9kaXY+Ci0gICAgICAgICAgICA8ZGl2
IGNsYXNzPSJkb3QiPjwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90Ij48L2Rpdj4K
LSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCI+PC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNs
YXNzPSJkb3QiPjwvZGl2PgotICAgICAgICA8L2Rpdj4KLSAgICAgICAgPGRpdiBjbGFzcz0ieC1h
eGlzIj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9InNjYWxlIj4KLSAgICAgICAgICAgICAgICA8
ZGl2IGNsYXNzPSJsaW5lIj48L2Rpdj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0
Ij4KLSAgICAgICAgICAgICAgICAgICAgcjEyMzQ1NjcKLSAgICAgICAgICAgICAgICA8L2Rpdj4K
LSAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2NhbGUiPgotICAg
ICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxpbmUiPjwvZGl2PgotICAgICAgICAgICAgICAgIDxk
aXYgY2xhc3M9InRleHQiPgotICAgICAgICAgICAgICAgICAgICByMTIzNDU2NwotICAgICAgICAg
ICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNz
PSJzY2FsZSI+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGluZSI+PC9kaXY+Ci0gICAg
ICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dCI+Ci0gICAgICAgICAgICAgICAgICAgIHIxMjM0
NTY3Ci0gICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAg
ICAgIDxkaXYgY2xhc3M9InNjYWxlIj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsaW5l
Ij48L2Rpdj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0Ij4KLSAgICAgICAgICAg
ICAgICAgICAgcjEyMzQ1NjcKLSAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDwv
ZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2NhbGUiPgotICAgICAgICAgICAgICAgIDxk
aXYgY2xhc3M9ImxpbmUiPjwvZGl2PgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQi
PgotICAgICAgICAgICAgICAgICAgICByMTIzNDU2NwotICAgICAgICAgICAgICAgIDwvZGl2Pgot
ICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJzY2FsZSI+Ci0gICAg
ICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGluZSI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgPGRp
diBjbGFzcz0idGV4dCI+Ci0gICAgICAgICAgICAgICAgICAgIEkgYW0gYSB0YWcKLSAgICAgICAg
ICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFz
cz0ic2NhbGUiPgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxpbmUiPjwvZGl2PgotICAg
ICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQiPgotICAgICAgICAgICAgICAgICAgICBJIGFt
IGEgdGFnCi0gICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICA8L2Rpdj4KLSAgICAg
ICAgICAgIDxkaXYgY2xhc3M9InNjYWxlIj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJs
aW5lIj48L2Rpdj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0Ij4KLSAgICAgICAg
ICAgICAgICAgICAgSSBhbSBhIHRhZwotICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAg
ICAgPC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJzY2FsZSI+Ci0gICAgICAgICAgICAg
ICAgPGRpdiBjbGFzcz0ibGluZSI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0i
dGV4dCI+Ci0gICAgICAgICAgICAgICAgICAgIEkgYW0gYSB0YWcKLSAgICAgICAgICAgICAgICA8
L2Rpdj4KLSAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2NhbGUi
PgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxpbmUiPjwvZGl2PgotICAgICAgICAgICAg
ICAgIDxkaXYgY2xhc3M9InRleHQiPgotICAgICAgICAgICAgICAgICAgICBJIGFtIGEgdGFnCi0g
ICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDxk
aXYgY2xhc3M9InNjYWxlIj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsaW5lIj48L2Rp
dj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0Ij4KLSAgICAgICAgICAgICAgICAg
ICAgSSBhbSBhIHRhZwotICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPC9kaXY+
Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJzY2FsZSI+Ci0gICAgICAgICAgICAgICAgPGRpdiBj
bGFzcz0ibGluZSI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dCI+Ci0g
ICAgICAgICAgICAgICAgICAgIEkgYW0gYSB0YWcKLSAgICAgICAgICAgICAgICA8L2Rpdj4KLSAg
ICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2NhbGUiPgotICAgICAg
ICAgICAgICAgIDxkaXYgY2xhc3M9ImxpbmUiPjwvZGl2PgotICAgICAgICAgICAgICAgIDxkaXYg
Y2xhc3M9InRleHQiPgotICAgICAgICAgICAgICAgICAgICBJIGFtIGEgdGFnCi0gICAgICAgICAg
ICAgICAgPC9kaXY+Ci0gICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9
InNjYWxlIj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsaW5lIj48L2Rpdj4KLSAgICAg
ICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0Ij4KLSAgICAgICAgICAgICAgICAgICAgSSBhbSBh
IHRhZwotICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAg
ICAgICA8ZGl2IGNsYXNzPSJzY2FsZSI+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGlu
ZSI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dCI+Ci0gICAgICAgICAg
ICAgICAgICAgIEkgYW0gYSB0YWcKLSAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAg
IDwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2NhbGUiPgotICAgICAgICAgICAgICAg
IDxkaXYgY2xhc3M9ImxpbmUiPjwvZGl2PgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRl
eHQiPgotICAgICAgICAgICAgICAgICAgICBJIGFtIGEgdGFnCi0gICAgICAgICAgICAgICAgPC9k
aXY+Ci0gICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9InNjYWxlIj4K
LSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsaW5lIj48L2Rpdj4KLSAgICAgICAgICAgICAg
ICA8ZGl2IGNsYXNzPSJ0ZXh0Ij4KLSAgICAgICAgICAgICAgICAgICAgSSBhbSBhIHRhZwotICAg
ICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICA8ZGl2
IGNsYXNzPSJzY2FsZSI+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGluZSI+PC9kaXY+
Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dCI+Ci0gICAgICAgICAgICAgICAgICAg
IEkgYW0gYSB0YWcKLSAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDwvZGl2Pgot
ICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2NhbGUiPgotICAgICAgICAgICAgICAgIDxkaXYgY2xh
c3M9ImxpbmUiPjwvZGl2PgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQiPgotICAg
ICAgICAgICAgICAgICAgICBJIGFtIGEgdGFnCi0gICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAg
ICAgICAgICA8L2Rpdj4KLSAgICAgICAgPC9kaXY+Ci0gICAgICAgIDxkaXYgY2xhc3M9IngtYXhp
cyI+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJzY2FsZSBncm91cC00Ij4KLSAgICAgICAgICAg
ICAgICA8ZGl2IGNsYXNzPSJib3JkZXItbGluZS1sZWZ0Ij48L2Rpdj4KLSAgICAgICAgICAgICAg
ICA8ZGl2IGNsYXNzPSJsaW5lIj48L2Rpdj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0
ZXh0Ij4KLSAgICAgICAgICAgICAgICAgICAgSSBhbSBhIHRhZwotICAgICAgICAgICAgICAgIDwv
ZGl2PgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJvcmRlci1saW5lLXJpZ2h0Ij48L2Rp
dj4KLSAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2NhbGUgZ3Jv
dXAtMyI+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYm9yZGVyLWxpbmUtbGVmdCI+PC9k
aXY+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGluZSI+PC9kaXY+Ci0gICAgICAgICAg
ICAgICAgPGRpdiBjbGFzcz0idGV4dCI+Ci0gICAgICAgICAgICAgICAgICAgIEkgYW0gYSB0YWcK
LSAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJib3Jk
ZXItbGluZS1yaWdodCI+PC9kaXY+Ci0gICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDxk
aXYgY2xhc3M9InNjYWxlIj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsaW5lIj48L2Rp
dj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0Ij4KLSAgICAgICAgICAgICAgICAg
ICAgSSBhbSBhIHRhZwotICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPC9kaXY+
Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJzY2FsZSI+Ci0gICAgICAgICAgICAgICAgPGRpdiBj
bGFzcz0ibGluZSI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dCI+Ci0g
ICAgICAgICAgICAgICAgICAgIEkgYW0gYSB0YWcKLSAgICAgICAgICAgICAgICA8L2Rpdj4KLSAg
ICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2NhbGUgZ3JvdXAtMTAi
PgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJvcmRlci1saW5lLWxlZnQiPjwvZGl2Pgot
ICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxpbmUiPjwvZGl2PgotICAgICAgICAgICAgICAg
IDxkaXYgY2xhc3M9InRleHQiPgotICAgICAgICAgICAgICAgICAgICBJIGFtIGEgdGFnCi0gICAg
ICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYm9yZGVyLWxp
bmUtcmlnaHQiPjwvZGl2PgotICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgIDwvZGl2PgotICAg
IDwvZGl2PgotPC9kaXY+PC94bXA+PC9wcmU+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rp
dj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiPgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRpbWVsaW5lIj4KLSAgICA8ZGl2IGNs
YXNzPSJoZWFkZXIiPgotICAgICAgICA8ZGl2IGNsYXNzPSJzZXJpZXMiPgotICAgICAgICAgICAg
dGltZSBsaW5lIDEKLSAgICAgICAgPC9kaXY+Ci0gICAgICAgIDxkaXYgY2xhc3M9InNlcmllcyI+
Ci0gICAgICAgICAgICB0aW1lIGxpbmUgMgotICAgICAgICA8L2Rpdj4KLSAgICA8L2Rpdj4KLSAg
ICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4KLSAgICAgICAgPGRpdiBjbGFzcz0ic2VyaWVzIj4KLSAg
ICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCI+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0i
dGFnIj4xMjMxPC9kaXY+Ci0gICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xh
c3M9ImRvdCBzdWNjZXNzIj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0YWciPjQ1Njwv
ZGl2PgotICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3QiPjwv
ZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90Ij48L2Rpdj4KLSAgICAgICAgICAgIDxk
aXYgY2xhc3M9ImRvdCBlcnJvciI+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGFnIj4x
MjM8L2Rpdj4KLSAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90
IGVtcHR5Ij48L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCI+PC9kaXY+Ci0gICAg
ICAgICAgICA8ZGl2IGNsYXNzPSJkb3QiPjwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0i
ZG90Ij48L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCI+PC9kaXY+Ci0gICAgICAg
ICAgICA8ZGl2IGNsYXNzPSJkb3QiPjwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90
Ij48L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCI+PC9kaXY+Ci0gICAgICAgICAg
ICA8ZGl2IGNsYXNzPSJkb3QiPjwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90Ij48
L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCI+PC9kaXY+Ci0gICAgICAgICAgICA8
ZGl2IGNsYXNzPSJkb3QiPjwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90Ij48L2Rp
dj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCI+PC9kaXY+Ci0gICAgICAgIDwvZGl2Pgot
ICAgICAgICA8ZGl2IGNsYXNzPSJzZXJpZXMiPgotICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90
IGVtcHR5Ij48L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCBlbXB0eSI+PC9kaXY+
Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3QiPgotICAgICAgICAgICAgICAgIDxkaXYgY2xh
c3M9InRhZyI+MzUzMzwvZGl2PgotICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICA8ZGl2
IGNsYXNzPSJkb3QiPgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRhZyI+MzUzMjwvZGl2
PgotICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3QiPgotICAg
ICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRhZyI+MzUyPC9kaXY+Ci0gICAgICAgICAgICA8L2Rp
dj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCI+Ci0gICAgICAgICAgICAgICAgPGRpdiBj
bGFzcz0idGFnIj4zNTE8L2Rpdj4KLSAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPGRp
diBjbGFzcz0iZG90Ij4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0YWciPjE8L2Rpdj4K
LSAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90Ij4KLSAgICAg
ICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0YWciPjQ1NjwvZGl2PgotICAgICAgICAgICAgPC9kaXY+
Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3QiPjwvZGl2PgotICAgICAgICAgICAgPGRpdiBj
bGFzcz0iZG90Ij48L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCI+PC9kaXY+Ci0g
ICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3QiPjwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFz
cz0iZG90Ij48L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCI+PC9kaXY+Ci0gICAg
ICAgICAgICA8ZGl2IGNsYXNzPSJkb3QiPjwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0i
ZG90Ij48L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCI+PC9kaXY+Ci0gICAgICAg
ICAgICA8ZGl2IGNsYXNzPSJkb3QiPjwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90
Ij48L2Rpdj4KLSAgICAgICAgPC9kaXY+Ci0gICAgICAgIDxkaXYgY2xhc3M9IngtYXhpcyI+Ci0g
ICAgICAgICAgICA8ZGl2IGNsYXNzPSJzY2FsZSI+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFz
cz0ibGluZSI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dCI+Ci0gICAg
ICAgICAgICAgICAgICAgIHIxMjM0NTY3Ci0gICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAg
ICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9InNjYWxlIj4KLSAgICAgICAgICAg
ICAgICA8ZGl2IGNsYXNzPSJsaW5lIj48L2Rpdj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNz
PSJ0ZXh0Ij4KLSAgICAgICAgICAgICAgICAgICAgcjEyMzQ1NjcKLSAgICAgICAgICAgICAgICA8
L2Rpdj4KLSAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2NhbGUi
PgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxpbmUiPjwvZGl2PgotICAgICAgICAgICAg
ICAgIDxkaXYgY2xhc3M9InRleHQiPgotICAgICAgICAgICAgICAgICAgICByMTIzNDU2NwotICAg
ICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICA8ZGl2
IGNsYXNzPSJzY2FsZSI+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGluZSI+PC9kaXY+
Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dCI+Ci0gICAgICAgICAgICAgICAgICAg
IHIxMjM0NTY3Ci0gICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICA8L2Rpdj4KLSAg
ICAgICAgICAgIDxkaXYgY2xhc3M9InNjYWxlIj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNz
PSJsaW5lIj48L2Rpdj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0Ij4KLSAgICAg
ICAgICAgICAgICAgICAgcjEyMzQ1NjcKLSAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAg
ICAgIDwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2NhbGUiPgotICAgICAgICAgICAg
ICAgIDxkaXYgY2xhc3M9ImxpbmUiPjwvZGl2PgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9
InRleHQiPgotICAgICAgICAgICAgICAgICAgICBJIGFtIGEgdGFnCi0gICAgICAgICAgICAgICAg
PC9kaXY+Ci0gICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9InNjYWxl
Ij4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsaW5lIj48L2Rpdj4KLSAgICAgICAgICAg
ICAgICA8ZGl2IGNsYXNzPSJ0ZXh0Ij4KLSAgICAgICAgICAgICAgICAgICAgSSBhbSBhIHRhZwot
ICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICA8
ZGl2IGNsYXNzPSJzY2FsZSI+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGluZSI+PC9k
aXY+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dCI+Ci0gICAgICAgICAgICAgICAg
ICAgIEkgYW0gYSB0YWcKLSAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDwvZGl2
PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2NhbGUiPgotICAgICAgICAgICAgICAgIDxkaXYg
Y2xhc3M9ImxpbmUiPjwvZGl2PgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQiPgot
ICAgICAgICAgICAgICAgICAgICBJIGFtIGEgdGFnCi0gICAgICAgICAgICAgICAgPC9kaXY+Ci0g
ICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9InNjYWxlIj4KLSAgICAg
ICAgICAgICAgICA8ZGl2IGNsYXNzPSJsaW5lIj48L2Rpdj4KLSAgICAgICAgICAgICAgICA8ZGl2
IGNsYXNzPSJ0ZXh0Ij4KLSAgICAgICAgICAgICAgICAgICAgSSBhbSBhIHRhZwotICAgICAgICAg
ICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNz
PSJzY2FsZSI+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGluZSI+PC9kaXY+Ci0gICAg
ICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dCI+Ci0gICAgICAgICAgICAgICAgICAgIEkgYW0g
YSB0YWcKLSAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDwvZGl2PgotICAgICAg
ICAgICAgPGRpdiBjbGFzcz0ic2NhbGUiPgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Imxp
bmUiPjwvZGl2PgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQiPgotICAgICAgICAg
ICAgICAgICAgICBJIGFtIGEgdGFnCi0gICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAg
ICA8L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9InNjYWxlIj4KLSAgICAgICAgICAgICAg
ICA8ZGl2IGNsYXNzPSJsaW5lIj48L2Rpdj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0
ZXh0Ij4KLSAgICAgICAgICAgICAgICAgICAgSSBhbSBhIHRhZwotICAgICAgICAgICAgICAgIDwv
ZGl2PgotICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJzY2FsZSI+
Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGluZSI+PC9kaXY+Ci0gICAgICAgICAgICAg
ICAgPGRpdiBjbGFzcz0idGV4dCI+Ci0gICAgICAgICAgICAgICAgICAgIEkgYW0gYSB0YWcKLSAg
ICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPGRp
diBjbGFzcz0ic2NhbGUiPgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxpbmUiPjwvZGl2
PgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQiPgotICAgICAgICAgICAgICAgICAg
ICBJIGFtIGEgdGFnCi0gICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICA8L2Rpdj4K
LSAgICAgICAgICAgIDxkaXYgY2xhc3M9InNjYWxlIj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNs
YXNzPSJsaW5lIj48L2Rpdj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0Ij4KLSAg
ICAgICAgICAgICAgICAgICAgSSBhbSBhIHRhZwotICAgICAgICAgICAgICAgIDwvZGl2PgotICAg
ICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJzY2FsZSI+Ci0gICAgICAg
ICAgICAgICAgPGRpdiBjbGFzcz0ibGluZSI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgPGRpdiBj
bGFzcz0idGV4dCI+Ci0gICAgICAgICAgICAgICAgICAgIEkgYW0gYSB0YWcKLSAgICAgICAgICAg
ICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0i
c2NhbGUiPgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxpbmUiPjwvZGl2PgotICAgICAg
ICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQiPgotICAgICAgICAgICAgICAgICAgICBJIGFtIGEg
dGFnCi0gICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAg
ICAgIDxkaXYgY2xhc3M9InNjYWxlIj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsaW5l
Ij48L2Rpdj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0Ij4KLSAgICAgICAgICAg
ICAgICAgICAgSSBhbSBhIHRhZwotICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAg
PC9kaXY+Ci0gICAgICAgIDwvZGl2PgotICAgICAgICA8ZGl2IGNsYXNzPSJ4LWF4aXMiPgotICAg
ICAgICAgICAgPGRpdiBjbGFzcz0ic2NhbGUgZ3JvdXAtNCI+Ci0gICAgICAgICAgICAgICAgPGRp
diBjbGFzcz0iYm9yZGVyLWxpbmUtbGVmdCI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgPGRpdiBj
bGFzcz0ibGluZSI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dCI+Ci0g
ICAgICAgICAgICAgICAgICAgIEkgYW0gYSB0YWcKLSAgICAgICAgICAgICAgICA8L2Rpdj4KLSAg
ICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJib3JkZXItbGluZS1yaWdodCI+PC9kaXY+Ci0gICAg
ICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9InNjYWxlIGdyb3VwLTMiPgot
ICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJvcmRlci1saW5lLWxlZnQiPjwvZGl2PgotICAg
ICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxpbmUiPjwvZGl2PgotICAgICAgICAgICAgICAgIDxk
aXYgY2xhc3M9InRleHQiPgotICAgICAgICAgICAgICAgICAgICBJIGFtIGEgdGFnCi0gICAgICAg
ICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYm9yZGVyLWxpbmUt
cmlnaHQiPjwvZGl2PgotICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNz
PSJzY2FsZSI+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGluZSI+PC9kaXY+Ci0gICAg
ICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dCI+Ci0gICAgICAgICAgICAgICAgICAgIEkgYW0g
YSB0YWcKLSAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDwvZGl2PgotICAgICAg
ICAgICAgPGRpdiBjbGFzcz0ic2NhbGUiPgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Imxp
bmUiPjwvZGl2PgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQiPgotICAgICAgICAg
ICAgICAgICAgICBJIGFtIGEgdGFnCi0gICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAg
ICA8L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9InNjYWxlIGdyb3VwLTEwIj4KLSAgICAg
ICAgICAgICAgICA8ZGl2IGNsYXNzPSJib3JkZXItbGluZS1sZWZ0Ij48L2Rpdj4KLSAgICAgICAg
ICAgICAgICA8ZGl2IGNsYXNzPSJsaW5lIj48L2Rpdj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNs
YXNzPSJ0ZXh0Ij4KLSAgICAgICAgICAgICAgICAgICAgSSBhbSBhIHRhZwotICAgICAgICAgICAg
ICAgIDwvZGl2PgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJvcmRlci1saW5lLXJpZ2h0
Ij48L2Rpdj4KLSAgICAgICAgICAgIDwvZGl2PgotICAgICAgICA8L2Rpdj4KLSAgICA8L2Rpdj4K
LTwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAg
ICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPGRpdiBjbGFzcz0iY29udGVudCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvLXJldmlzaW9uIHRpbWVsaW5lIHRvcCB4LWF4aXMKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAg
ICAgICAgPGRpdiBjbGFzcz0iY29udGVudCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
PHByZT48eG1wPjxkaXYgY2xhc3M9InRpbWVsaW5lIj4KLSAgICA8ZGl2IGNsYXNzPSJoZWFkZXIg
d2l0aC10b3AteC1heGlzIj4KLSAgICAgICAgPGRpdiBjbGFzcz0ic2VyaWVzIj4KLSAgICAgICAg
ICAgIERlYnVnCi0gICAgICAgIDwvZGl2PgotICAgICAgICA8ZGl2IGNsYXNzPSJzZXJpZXMiPgot
ICAgICAgICAgICAgUmVsZWFzZQotICAgICAgICA8L2Rpdj4KLSAgICA8L2Rpdj4KLSAgICA8ZGl2
IGNsYXNzPSJjb250ZW50Ij4KLSAgICAgICAgPGRpdiBjbGFzcz0ieC1heGlzIHRvcCI+Ci0gICAg
ICAgICAgICA8ZGl2IGNsYXNzPSJzY2FsZSI+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0i
bGluZSI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dCI+Ci0gICAgICAg
ICAgICAgICAgICAgIHIyNDQ1MTAKLSAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAg
IDwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2NhbGUiPgotICAgICAgICAgICAgICAg
IDxkaXYgY2xhc3M9ImxpbmUiPjwvZGl2PgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRl
eHQiPgotICAgICAgICAgICAgICAgICAgICByMjQ0NTA5Ci0gICAgICAgICAgICAgICAgPC9kaXY+
Ci0gICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9InNjYWxlIGdyb3Vw
LTQiPgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJvcmRlci1saW5lLWxlZnQiPjwvZGl2
PgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxpbmUiPjwvZGl2PgotICAgICAgICAgICAg
ICAgIDxkaXYgY2xhc3M9InRleHQiPgotICAgICAgICAgICAgICAgICAgICByMjQ0NTA4Ci0gICAg
ICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYm9yZGVyLWxp
bmUtcmlnaHQiPjwvZGl2PgotICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNs
YXNzPSJzY2FsZSI+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGluZSI+PC9kaXY+Ci0g
ICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dCI+Ci0gICAgICAgICAgICAgICAgICAgIHIy
NDQ1MDcKLSAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDwvZGl2PgotICAgICAg
ICAgICAgPGRpdiBjbGFzcz0ic2NhbGUiPgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Imxp
bmUiPjwvZGl2PgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQiPgotICAgICAgICAg
ICAgICAgICAgICByMjQ0NTA2Ci0gICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICA8
L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9InNjYWxlIj4KLSAgICAgICAgICAgICAgICA8
ZGl2IGNsYXNzPSJsaW5lIj48L2Rpdj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0
Ij4KLSAgICAgICAgICAgICAgICAgICAgcjI0NDUwNQotICAgICAgICAgICAgICAgIDwvZGl2Pgot
ICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJzY2FsZSI+Ci0gICAg
ICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGluZSI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgPGRp
diBjbGFzcz0idGV4dCI+Ci0gICAgICAgICAgICAgICAgICAgIHIyNDQ1MDQKLSAgICAgICAgICAg
ICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDwvZGl2PgotICAgICAgICA8L2Rpdj4KLQotICAgICAg
ICA8ZGl2IGNsYXNzPSJzZXJpZXMiPgotICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90IHN1Y2Nl
c3MiPjwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3MiPjwvZGl2Pgot
ICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3MiPjwvZGl2PgotICAgICAgICAgICAg
PGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3MiPjwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0i
ZG90IHN1Y2Nlc3MiPjwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3Mi
PjwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3MiPjwvZGl2PgotICAg
ICAgICAgICAgPGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3MiPjwvZGl2PgotICAgICAgICAgICAgPGRp
diBjbGFzcz0iZG90IHN1Y2Nlc3MiPjwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90
IHN1Y2Nlc3MiPjwvZGl2PgotICAgICAgICA8L2Rpdj4KLSAgICAgICAgPGRpdiBjbGFzcz0ic2Vy
aWVzIj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCBzdWNjZXNzIj48L2Rpdj4KLSAgICAg
ICAgICAgIDxkaXYgY2xhc3M9ImRvdCBzdWNjZXNzIj48L2Rpdj4KLSAgICAgICAgICAgIDxkaXYg
Y2xhc3M9ImRvdCBzdWNjZXNzIj48L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCBz
dWNjZXNzIj48L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCBzdWNjZXNzIj48L2Rp
dj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCBzdWNjZXNzIj48L2Rpdj4KLSAgICAgICAg
ICAgIDxkaXYgY2xhc3M9ImRvdCBzdWNjZXNzIj48L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xh
c3M9ImRvdCBzdWNjZXNzIj48L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCBzdWNj
ZXNzIj48L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCBzdWNjZXNzIj48L2Rpdj4K
LSAgICAgICAgPC9kaXY+Ci0gICAgICAgIDxkaXYgY2xhc3M9IngtYXhpcyI+Ci0gICAgICAgICAg
ICA8ZGl2IGNsYXNzPSJzY2FsZSBncm91cC0zIj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNz
PSJib3JkZXItbGluZS1sZWZ0Ij48L2Rpdj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJs
aW5lIj48L2Rpdj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0Ij4KLSAgICAgICAg
ICAgICAgICAgICAgYWM4MjZhMzgKLSAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAg
ICAgICA8ZGl2IGNsYXNzPSJib3JkZXItbGluZS1yaWdodCI+PC9kaXY+Ci0gICAgICAgICAgICA8
L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9InNjYWxlIj4KLSAgICAgICAgICAgICAgICA8
ZGl2IGNsYXNzPSJsaW5lIj48L2Rpdj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0
Ij4KLSAgICAgICAgICAgICAgICAgICAgYzM1NThkNTAKLSAgICAgICAgICAgICAgICA8L2Rpdj4K
LSAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2NhbGUiPgotICAg
ICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxpbmUiPjwvZGl2PgotICAgICAgICAgICAgICAgIDxk
aXYgY2xhc3M9InRleHQiPgotICAgICAgICAgICAgICAgICAgICAwODYzNzQyMwotICAgICAgICAg
ICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNz
PSJzY2FsZSBncm91cC01Ij4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJib3JkZXItbGlu
ZS1sZWZ0Ij48L2Rpdj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsaW5lIj48L2Rpdj4K
LSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0Ij4KLSAgICAgICAgICAgICAgICAgICAg
Yzk0ZmViNjMKLSAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNs
YXNzPSJib3JkZXItbGluZS1yaWdodCI+PC9kaXY+Ci0gICAgICAgICAgICA8L2Rpdj4KLSAgICAg
ICAgPC9kaXY+Ci0gICAgPC9kaXY+Ci08L2Rpdj48L3htcD48L3ByZT4KLSAgICAgICAgICAgICAg
ICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29u
dGVudCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGltZWxpbmUi
PgotICAgIDxkaXYgY2xhc3M9ImhlYWRlciB3aXRoLXRvcC14LWF4aXMiPgotICAgICAgICA8ZGl2
IGNsYXNzPSJzZXJpZXMiPgotICAgICAgICAgICAgRGVidWcKLSAgICAgICAgPC9kaXY+Ci0gICAg
ICAgIDxkaXYgY2xhc3M9InNlcmllcyI+Ci0gICAgICAgICAgICBSZWxlYXNlCi0gICAgICAgIDwv
ZGl2PgotICAgIDwvZGl2PgotICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiPgotICAgICAgICA8ZGl2
IGNsYXNzPSJ4LWF4aXMgdG9wIj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9InNjYWxlIj4KLSAg
ICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsaW5lIj48L2Rpdj4KLSAgICAgICAgICAgICAgICA8
ZGl2IGNsYXNzPSJ0ZXh0Ij4KLSAgICAgICAgICAgICAgICAgICAgcjI0NDUxMAotICAgICAgICAg
ICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNz
PSJzY2FsZSI+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGluZSI+PC9kaXY+Ci0gICAg
ICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dCI+Ci0gICAgICAgICAgICAgICAgICAgIHIyNDQ1
MDkKLSAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAg
ICAgPGRpdiBjbGFzcz0ic2NhbGUgZ3JvdXAtNCI+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFz
cz0iYm9yZGVyLWxpbmUtbGVmdCI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0i
bGluZSI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dCI+Ci0gICAgICAg
ICAgICAgICAgICAgIHIyNDQ1MDgKLSAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAg
ICAgICA8ZGl2IGNsYXNzPSJib3JkZXItbGluZS1yaWdodCI+PC9kaXY+Ci0gICAgICAgICAgICA8
L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9InNjYWxlIj4KLSAgICAgICAgICAgICAgICA8
ZGl2IGNsYXNzPSJsaW5lIj48L2Rpdj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0
Ij4KLSAgICAgICAgICAgICAgICAgICAgcjI0NDUwNwotICAgICAgICAgICAgICAgIDwvZGl2Pgot
ICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJzY2FsZSI+Ci0gICAg
ICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGluZSI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgPGRp
diBjbGFzcz0idGV4dCI+Ci0gICAgICAgICAgICAgICAgICAgIHIyNDQ1MDYKLSAgICAgICAgICAg
ICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0i
c2NhbGUiPgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxpbmUiPjwvZGl2PgotICAgICAg
ICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQiPgotICAgICAgICAgICAgICAgICAgICByMjQ0NTA1
Ci0gICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAg
IDxkaXYgY2xhc3M9InNjYWxlIj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsaW5lIj48
L2Rpdj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0Ij4KLSAgICAgICAgICAgICAg
ICAgICAgcjI0NDUwNAotICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPC9kaXY+
Ci0gICAgICAgIDwvZGl2PgotCi0gICAgICAgIDxkaXYgY2xhc3M9InNlcmllcyI+Ci0gICAgICAg
ICAgICA8ZGl2IGNsYXNzPSJkb3Qgc3VjY2VzcyI+PC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNs
YXNzPSJkb3Qgc3VjY2VzcyI+PC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qgc3Vj
Y2VzcyI+PC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qgc3VjY2VzcyI+PC9kaXY+
Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qgc3VjY2VzcyI+PC9kaXY+Ci0gICAgICAgICAg
ICA8ZGl2IGNsYXNzPSJkb3Qgc3VjY2VzcyI+PC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNz
PSJkb3Qgc3VjY2VzcyI+PC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qgc3VjY2Vz
cyI+PC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qgc3VjY2VzcyI+PC9kaXY+Ci0g
ICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qgc3VjY2VzcyI+PC9kaXY+Ci0gICAgICAgIDwvZGl2
PgotICAgICAgICA8ZGl2IGNsYXNzPSJzZXJpZXMiPgotICAgICAgICAgICAgPGRpdiBjbGFzcz0i
ZG90IHN1Y2Nlc3MiPjwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3Mi
PjwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3MiPjwvZGl2PgotICAg
ICAgICAgICAgPGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3MiPjwvZGl2PgotICAgICAgICAgICAgPGRp
diBjbGFzcz0iZG90IHN1Y2Nlc3MiPjwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90
IHN1Y2Nlc3MiPjwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3MiPjwv
ZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3MiPjwvZGl2PgotICAgICAg
ICAgICAgPGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3MiPjwvZGl2PgotICAgICAgICAgICAgPGRpdiBj
bGFzcz0iZG90IHN1Y2Nlc3MiPjwvZGl2PgotICAgICAgICA8L2Rpdj4KLSAgICAgICAgPGRpdiBj
bGFzcz0ieC1heGlzIj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9InNjYWxlIGdyb3VwLTMiPgot
ICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJvcmRlci1saW5lLWxlZnQiPjwvZGl2PgotICAg
ICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxpbmUiPjwvZGl2PgotICAgICAgICAgICAgICAgIDxk
aXYgY2xhc3M9InRleHQiPgotICAgICAgICAgICAgICAgICAgICBhYzgyNmEzOAotICAgICAgICAg
ICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJvcmRlci1saW5lLXJp
Z2h0Ij48L2Rpdj4KLSAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0i
c2NhbGUiPgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxpbmUiPjwvZGl2PgotICAgICAg
ICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQiPgotICAgICAgICAgICAgICAgICAgICBjMzU1OGQ1
MAotICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAg
ICA8ZGl2IGNsYXNzPSJzY2FsZSI+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGluZSI+
PC9kaXY+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dCI+Ci0gICAgICAgICAgICAg
ICAgICAgIDA4NjM3NDIzCi0gICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICA8L2Rp
dj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9InNjYWxlIGdyb3VwLTUiPgotICAgICAgICAgICAg
ICAgIDxkaXYgY2xhc3M9ImJvcmRlci1saW5lLWxlZnQiPjwvZGl2PgotICAgICAgICAgICAgICAg
IDxkaXYgY2xhc3M9ImxpbmUiPjwvZGl2PgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRl
eHQiPgotICAgICAgICAgICAgICAgICAgICBjOTRmZWI2MwotICAgICAgICAgICAgICAgIDwvZGl2
PgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJvcmRlci1saW5lLXJpZ2h0Ij48L2Rpdj4K
LSAgICAgICAgICAgIDwvZGl2PgotICAgICAgICA8L2Rpdj4KLSAgICA8L2Rpdj4KLTwvZGl2Pgot
ICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgIAotICAg
ICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBj
bGFzcz0iY29udGVudCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9ubHkgR3Jv
dXAgU2NhbGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAg
ICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGVu
dCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByZT48eG1wPjxkaXYgY2xhc3M9InRp
bWVsaW5lIj4KLSAgICA8ZGl2IGNsYXNzPSJoZWFkZXIgd2l0aC10b3AteC1heGlzIj4KLSAgICAg
ICAgPGRpdiBjbGFzcz0ic2VyaWVzIj4KLSAgICAgICAgICAgIERlYnVnCi0gICAgICAgIDwvZGl2
PgotICAgICAgICA8ZGl2IGNsYXNzPSJzZXJpZXMiPgotICAgICAgICAgICAgUmVsZWFzZQotICAg
ICAgICA8L2Rpdj4KLSAgICA8L2Rpdj4KLSAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4KLSAgICAg
ICAgPGRpdiBjbGFzcz0ieC1heGlzIHRvcCI+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJzY2Fs
ZSBncm91cC00Ij4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJib3JkZXItbGluZS1sZWZ0
Ij48L2Rpdj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsaW5lIj48L2Rpdj4KLSAgICAg
ICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0Ij4KLSAgICAgICAgICAgICAgICAgICAgcjI0NDUw
OAotICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJv
cmRlci1saW5lLXJpZ2h0Ij48L2Rpdj4KLSAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAg
PGRpdiBjbGFzcz0ic2NhbGUgZ3JvdXAtNCI+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0i
Ym9yZGVyLWxpbmUtbGVmdCI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGlu
ZSI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dCI+Ci0gICAgICAgICAg
ICAgICAgICAgIHIyNDQ1MTAKLSAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAg
ICA8ZGl2IGNsYXNzPSJib3JkZXItbGluZS1yaWdodCI+PC9kaXY+Ci0gICAgICAgICAgICA8L2Rp
dj4KLSAgICAgICAgPC9kaXY+Ci0gICAgICAgIDxkaXYgY2xhc3M9InNlcmllcyI+Ci0gICAgICAg
ICAgICA8ZGl2IGNsYXNzPSJkb3Qgc3VjY2VzcyI+PC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNs
YXNzPSJkb3Qgc3VjY2VzcyI+PC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qgc3Vj
Y2VzcyI+PC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qgc3VjY2VzcyI+PC9kaXY+
Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qgc3VjY2VzcyI+PC9kaXY+Ci0gICAgICAgICAg
ICA8ZGl2IGNsYXNzPSJkb3Qgc3VjY2VzcyI+PC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNz
PSJkb3Qgc3VjY2VzcyI+PC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qgc3VjY2Vz
cyI+PC9kaXY+Ci0gICAgICAgIDwvZGl2PgotICAgICAgICA8ZGl2IGNsYXNzPSJzZXJpZXMiPgot
ICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3MiPjwvZGl2PgotICAgICAgICAgICAg
PGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3MiPjwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0i
ZG90IHN1Y2Nlc3MiPjwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3Mi
PjwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3MiPjwvZGl2PgotICAg
ICAgICAgICAgPGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3MiPjwvZGl2PgotICAgICAgICAgICAgPGRp
diBjbGFzcz0iZG90IHN1Y2Nlc3MiPjwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90
IHN1Y2Nlc3MiPjwvZGl2PgotICAgICAgICA8L2Rpdj4KLSAgICAgICAgPGRpdiBjbGFzcz0ieC1h
eGlzIj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9InNjYWxlIGdyb3VwLTMiPgotICAgICAgICAg
ICAgICAgIDxkaXYgY2xhc3M9ImJvcmRlci1saW5lLWxlZnQiPjwvZGl2PgotICAgICAgICAgICAg
ICAgIDxkaXYgY2xhc3M9ImxpbmUiPjwvZGl2PgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9
InRleHQiPgotICAgICAgICAgICAgICAgICAgICBhYzgyNmEzOAotICAgICAgICAgICAgICAgIDwv
ZGl2PgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJvcmRlci1saW5lLXJpZ2h0Ij48L2Rp
dj4KLSAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2NhbGUgZ3Jv
dXAtNSI+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYm9yZGVyLWxpbmUtbGVmdCI+PC9k
aXY+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGluZSI+PC9kaXY+Ci0gICAgICAgICAg
ICAgICAgPGRpdiBjbGFzcz0idGV4dCI+Ci0gICAgICAgICAgICAgICAgICAgIGM5NGZlYjYzCi0g
ICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYm9yZGVy
LWxpbmUtcmlnaHQiPjwvZGl2PgotICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgIDwvZGl2Pgot
ICAgIDwvZGl2PgotPC9kaXY+PC94bXA+PC9wcmU+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8
L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiPgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRpbWVsaW5lIj4KLSAgICA8ZGl2
IGNsYXNzPSJoZWFkZXIgd2l0aC10b3AteC1heGlzIj4KLSAgICAgICAgPGRpdiBjbGFzcz0ic2Vy
aWVzIj4KLSAgICAgICAgICAgIERlYnVnCi0gICAgICAgIDwvZGl2PgotICAgICAgICA8ZGl2IGNs
YXNzPSJzZXJpZXMiPgotICAgICAgICAgICAgUmVsZWFzZQotICAgICAgICA8L2Rpdj4KLSAgICA8
L2Rpdj4KLSAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4KLSAgICAgICAgPGRpdiBjbGFzcz0ieC1h
eGlzIHRvcCI+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJzY2FsZSBncm91cC00Ij4KLSAgICAg
ICAgICAgICAgICA8ZGl2IGNsYXNzPSJib3JkZXItbGluZS1sZWZ0Ij48L2Rpdj4KLSAgICAgICAg
ICAgICAgICA8ZGl2IGNsYXNzPSJsaW5lIj48L2Rpdj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNs
YXNzPSJ0ZXh0Ij4KLSAgICAgICAgICAgICAgICAgICAgcjI0NDUwOAotICAgICAgICAgICAgICAg
IDwvZGl2PgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJvcmRlci1saW5lLXJpZ2h0Ij48
L2Rpdj4KLSAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2NhbGUg
Z3JvdXAtNCI+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYm9yZGVyLWxpbmUtbGVmdCI+
PC9kaXY+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGluZSI+PC9kaXY+Ci0gICAgICAg
ICAgICAgICAgPGRpdiBjbGFzcz0idGV4dCI+Ci0gICAgICAgICAgICAgICAgICAgIHIyNDQ1MTAK
LSAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJib3Jk
ZXItbGluZS1yaWdodCI+PC9kaXY+Ci0gICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgPC9kaXY+
Ci0gICAgICAgIDxkaXYgY2xhc3M9InNlcmllcyI+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJk
b3Qgc3VjY2VzcyI+PC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qgc3VjY2VzcyI+
PC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qgc3VjY2VzcyI+PC9kaXY+Ci0gICAg
ICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qgc3VjY2VzcyI+PC9kaXY+Ci0gICAgICAgICAgICA8ZGl2
IGNsYXNzPSJkb3Qgc3VjY2VzcyI+PC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qg
c3VjY2VzcyI+PC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qgc3VjY2VzcyI+PC9k
aXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qgc3VjY2VzcyI+PC9kaXY+Ci0gICAgICAg
IDwvZGl2PgotICAgICAgICA8ZGl2IGNsYXNzPSJzZXJpZXMiPgotICAgICAgICAgICAgPGRpdiBj
bGFzcz0iZG90IHN1Y2Nlc3MiPjwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90IHN1
Y2Nlc3MiPjwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3MiPjwvZGl2
PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3MiPjwvZGl2PgotICAgICAgICAg
ICAgPGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3MiPjwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFz
cz0iZG90IHN1Y2Nlc3MiPjwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90IHN1Y2Nl
c3MiPjwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3MiPjwvZGl2Pgot
ICAgICAgICA8L2Rpdj4KLSAgICAgICAgPGRpdiBjbGFzcz0ieC1heGlzIj4KLSAgICAgICAgICAg
IDxkaXYgY2xhc3M9InNjYWxlIGdyb3VwLTMiPgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9
ImJvcmRlci1saW5lLWxlZnQiPjwvZGl2PgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Imxp
bmUiPjwvZGl2PgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQiPgotICAgICAgICAg
ICAgICAgICAgICBhYzgyNmEzOAotICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAg
ICAgIDxkaXYgY2xhc3M9ImJvcmRlci1saW5lLXJpZ2h0Ij48L2Rpdj4KLSAgICAgICAgICAgIDwv
ZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2NhbGUgZ3JvdXAtNSI+Ci0gICAgICAgICAg
ICAgICAgPGRpdiBjbGFzcz0iYm9yZGVyLWxpbmUtbGVmdCI+PC9kaXY+Ci0gICAgICAgICAgICAg
ICAgPGRpdiBjbGFzcz0ibGluZSI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0i
dGV4dCI+Ci0gICAgICAgICAgICAgICAgICAgIGM5NGZlYjYzCi0gICAgICAgICAgICAgICAgPC9k
aXY+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYm9yZGVyLWxpbmUtcmlnaHQiPjwvZGl2
PgotICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgIDwvZGl2PgotICAgIDwvZGl2PgotPC9kaXY+
Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgCi0g
ICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2
IGNsYXNzPSJjb250ZW50Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFyZ2Ug
U2VyaWVzIExhYmVsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNv
bnRlbnQiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcmU+PHhtcD48ZGl2IGNsYXNz
PSJ0aW1lbGluZSI+Ci0gICAgPGRpdiBjbGFzcz0iaGVhZGVyIHdpdGgtdG9wLXgtYXhpcyI+Ci0g
ICAgICAgIDxkaXYgY2xhc3M9InNlcmllcyI+Ci0gICAgICAgICAgICBJIGFtIGEgdmVyeSBsb25n
IGFuZCBiaWcgc2VyaWVzIDEKLSAgICAgICAgPC9kaXY+Ci0gICAgICAgIDxkaXYgY2xhc3M9InNl
cmllcyI+Ci0gICAgICAgICAgICBJIGFtIGEgdmVyeSBsb25nIGFuZCBiaWcgc2VyaWVzIDIKLSAg
ICAgICAgPC9kaXY+Ci0gICAgPC9kaXY+Ci0gICAgPGRpdiBjbGFzcz0iY29udGVudCI+Ci0gICAg
ICAgIDxkaXYgY2xhc3M9IngtYXhpcyB0b3AiPgotICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2Nh
bGUiPgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxpbmUiPjwvZGl2PgotICAgICAgICAg
ICAgICAgIDxkaXYgY2xhc3M9InRleHQiPgotICAgICAgICAgICAgICAgICAgICByMjQ0NTEwCi0g
ICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDxk
aXYgY2xhc3M9InNjYWxlIj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsaW5lIj48L2Rp
dj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0Ij4KLSAgICAgICAgICAgICAgICAg
ICAgcjI0NDUwOQotICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPC9kaXY+Ci0g
ICAgICAgICAgICA8ZGl2IGNsYXNzPSJzY2FsZSBncm91cC00Ij4KLSAgICAgICAgICAgICAgICA8
ZGl2IGNsYXNzPSJib3JkZXItbGluZS1sZWZ0Ij48L2Rpdj4KLSAgICAgICAgICAgICAgICA8ZGl2
IGNsYXNzPSJsaW5lIj48L2Rpdj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0Ij4K
LSAgICAgICAgICAgICAgICAgICAgcjI0NDUwOAotICAgICAgICAgICAgICAgIDwvZGl2PgotICAg
ICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJvcmRlci1saW5lLXJpZ2h0Ij48L2Rpdj4KLSAgICAg
ICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2NhbGUiPgotICAgICAgICAg
ICAgICAgIDxkaXYgY2xhc3M9ImxpbmUiPjwvZGl2PgotICAgICAgICAgICAgICAgIDxkaXYgY2xh
c3M9InRleHQiPgotICAgICAgICAgICAgICAgICAgICByMjQ0NTA3Ci0gICAgICAgICAgICAgICAg
PC9kaXY+Ci0gICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9InNjYWxl
Ij4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsaW5lIj48L2Rpdj4KLSAgICAgICAgICAg
ICAgICA8ZGl2IGNsYXNzPSJ0ZXh0Ij4KLSAgICAgICAgICAgICAgICAgICAgcjI0NDUwNgotICAg
ICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICA8ZGl2
IGNsYXNzPSJzY2FsZSI+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGluZSI+PC9kaXY+
Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dCI+Ci0gICAgICAgICAgICAgICAgICAg
IHIyNDQ1MDUKLSAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDwvZGl2PgotICAg
ICAgICAgICAgPGRpdiBjbGFzcz0ic2NhbGUiPgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9
ImxpbmUiPjwvZGl2PgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQiPgotICAgICAg
ICAgICAgICAgICAgICByMjQ0NTA0Ci0gICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAg
ICA8L2Rpdj4KLSAgICAgICAgPC9kaXY+Ci0KLSAgICAgICAgPGRpdiBjbGFzcz0ic2VyaWVzIj4K
LSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCBzdWNjZXNzIj48L2Rpdj4KLSAgICAgICAgICAg
IDxkaXYgY2xhc3M9ImRvdCBzdWNjZXNzIj48L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9
ImRvdCBzdWNjZXNzIj48L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCBzdWNjZXNz
Ij48L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCBzdWNjZXNzIj48L2Rpdj4KLSAg
ICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCBzdWNjZXNzIj48L2Rpdj4KLSAgICAgICAgICAgIDxk
aXYgY2xhc3M9ImRvdCBzdWNjZXNzIj48L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRv
dCBzdWNjZXNzIj48L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCBzdWNjZXNzIj48
L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCBzdWNjZXNzIj48L2Rpdj4KLSAgICAg
ICAgPC9kaXY+Ci0gICAgICAgIDxkaXYgY2xhc3M9InNlcmllcyI+Ci0gICAgICAgICAgICA8ZGl2
IGNsYXNzPSJkb3Qgc3VjY2VzcyI+PC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qg
c3VjY2VzcyI+PC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qgc3VjY2VzcyI+PC9k
aXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qgc3VjY2VzcyI+PC9kaXY+Ci0gICAgICAg
ICAgICA8ZGl2IGNsYXNzPSJkb3Qgc3VjY2VzcyI+PC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNs
YXNzPSJkb3Qgc3VjY2VzcyI+PC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qgc3Vj
Y2VzcyI+PC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qgc3VjY2VzcyI+PC9kaXY+
Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qgc3VjY2VzcyI+PC9kaXY+Ci0gICAgICAgICAg
ICA8ZGl2IGNsYXNzPSJkb3Qgc3VjY2VzcyI+PC9kaXY+Ci0gICAgICAgIDwvZGl2PgotICAgICAg
ICA8ZGl2IGNsYXNzPSJ4LWF4aXMiPgotICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2NhbGUgZ3Jv
dXAtMyI+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYm9yZGVyLWxpbmUtbGVmdCI+PC9k
aXY+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGluZSI+PC9kaXY+Ci0gICAgICAgICAg
ICAgICAgPGRpdiBjbGFzcz0idGV4dCI+Ci0gICAgICAgICAgICAgICAgICAgIGFjODI2YTM4Ci0g
ICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYm9yZGVy
LWxpbmUtcmlnaHQiPjwvZGl2PgotICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICA8ZGl2
IGNsYXNzPSJzY2FsZSI+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGluZSI+PC9kaXY+
Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dCI+Ci0gICAgICAgICAgICAgICAgICAg
IGMzNTU4ZDUwCi0gICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICA8L2Rpdj4KLSAg
ICAgICAgICAgIDxkaXYgY2xhc3M9InNjYWxlIj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNz
PSJsaW5lIj48L2Rpdj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0Ij4KLSAgICAg
ICAgICAgICAgICAgICAgMDg2Mzc0MjMKLSAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAg
ICAgIDwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2NhbGUgZ3JvdXAtNSI+Ci0gICAg
ICAgICAgICAgICAgPGRpdiBjbGFzcz0iYm9yZGVyLWxpbmUtbGVmdCI+PC9kaXY+Ci0gICAgICAg
ICAgICAgICAgPGRpdiBjbGFzcz0ibGluZSI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgPGRpdiBj
bGFzcz0idGV4dCI+Ci0gICAgICAgICAgICAgICAgICAgIGM5NGZlYjYzCi0gICAgICAgICAgICAg
ICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYm9yZGVyLWxpbmUtcmlnaHQi
PjwvZGl2PgotICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgIDwvZGl2PgotICAgIDwvZGl2Pgot
PC9kaXY+PC94bXA+PC9wcmU+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAg
ICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiPgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRpbWVsaW5lIj4KLSAgICA8ZGl2IGNsYXNzPSJoZWFk
ZXIgd2l0aC10b3AteC1heGlzIj4KLSAgICAgICAgPGRpdiBjbGFzcz0ic2VyaWVzIj4KLSAgICAg
ICAgICAgIEkgYW0gYSB2ZXJ5IGxvbmcgYW5kIGJpZyBzZXJpZXMgMQotICAgICAgICA8L2Rpdj4K
LSAgICAgICAgPGRpdiBjbGFzcz0ic2VyaWVzIj4KLSAgICAgICAgICAgIEkgYW0gYSB2ZXJ5IGxv
bmcgYW5kIGJpZyBzZXJpZXMgMgotICAgICAgICA8L2Rpdj4KLSAgICA8L2Rpdj4KLSAgICA8ZGl2
IGNsYXNzPSJjb250ZW50Ij4KLSAgICAgICAgPGRpdiBjbGFzcz0ieC1heGlzIHRvcCI+Ci0gICAg
ICAgICAgICA8ZGl2IGNsYXNzPSJzY2FsZSI+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0i
bGluZSI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dCI+Ci0gICAgICAg
ICAgICAgICAgICAgIHIyNDQ1MTAKLSAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAg
IDwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2NhbGUiPgotICAgICAgICAgICAgICAg
IDxkaXYgY2xhc3M9ImxpbmUiPjwvZGl2PgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRl
eHQiPgotICAgICAgICAgICAgICAgICAgICByMjQ0NTA5Ci0gICAgICAgICAgICAgICAgPC9kaXY+
Ci0gICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9InNjYWxlIGdyb3Vw
LTQiPgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJvcmRlci1saW5lLWxlZnQiPjwvZGl2
PgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxpbmUiPjwvZGl2PgotICAgICAgICAgICAg
ICAgIDxkaXYgY2xhc3M9InRleHQiPgotICAgICAgICAgICAgICAgICAgICByMjQ0NTA4Ci0gICAg
ICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYm9yZGVyLWxp
bmUtcmlnaHQiPjwvZGl2PgotICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNs
YXNzPSJzY2FsZSI+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGluZSI+PC9kaXY+Ci0g
ICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dCI+Ci0gICAgICAgICAgICAgICAgICAgIHIy
NDQ1MDcKLSAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDwvZGl2PgotICAgICAg
ICAgICAgPGRpdiBjbGFzcz0ic2NhbGUiPgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Imxp
bmUiPjwvZGl2PgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQiPgotICAgICAgICAg
ICAgICAgICAgICByMjQ0NTA2Ci0gICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICA8
L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9InNjYWxlIj4KLSAgICAgICAgICAgICAgICA8
ZGl2IGNsYXNzPSJsaW5lIj48L2Rpdj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0
Ij4KLSAgICAgICAgICAgICAgICAgICAgcjI0NDUwNQotICAgICAgICAgICAgICAgIDwvZGl2Pgot
ICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJzY2FsZSI+Ci0gICAg
ICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGluZSI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgPGRp
diBjbGFzcz0idGV4dCI+Ci0gICAgICAgICAgICAgICAgICAgIHIyNDQ1MDQKLSAgICAgICAgICAg
ICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDwvZGl2PgotICAgICAgICA8L2Rpdj4KLQotICAgICAg
ICA8ZGl2IGNsYXNzPSJzZXJpZXMiPgotICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90IHN1Y2Nl
c3MiPjwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3MiPjwvZGl2Pgot
ICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3MiPjwvZGl2PgotICAgICAgICAgICAg
PGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3MiPjwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0i
ZG90IHN1Y2Nlc3MiPjwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3Mi
PjwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3MiPjwvZGl2PgotICAg
ICAgICAgICAgPGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3MiPjwvZGl2PgotICAgICAgICAgICAgPGRp
diBjbGFzcz0iZG90IHN1Y2Nlc3MiPjwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90
IHN1Y2Nlc3MiPjwvZGl2PgotICAgICAgICA8L2Rpdj4KLSAgICAgICAgPGRpdiBjbGFzcz0ic2Vy
aWVzIj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCBzdWNjZXNzIj48L2Rpdj4KLSAgICAg
ICAgICAgIDxkaXYgY2xhc3M9ImRvdCBzdWNjZXNzIj48L2Rpdj4KLSAgICAgICAgICAgIDxkaXYg
Y2xhc3M9ImRvdCBzdWNjZXNzIj48L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCBz
dWNjZXNzIj48L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCBzdWNjZXNzIj48L2Rp
dj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCBzdWNjZXNzIj48L2Rpdj4KLSAgICAgICAg
ICAgIDxkaXYgY2xhc3M9ImRvdCBzdWNjZXNzIj48L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xh
c3M9ImRvdCBzdWNjZXNzIj48L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCBzdWNj
ZXNzIj48L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCBzdWNjZXNzIj48L2Rpdj4K
LSAgICAgICAgPC9kaXY+Ci0gICAgICAgIDxkaXYgY2xhc3M9IngtYXhpcyI+Ci0gICAgICAgICAg
ICA8ZGl2IGNsYXNzPSJzY2FsZSBncm91cC0zIj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNz
PSJib3JkZXItbGluZS1sZWZ0Ij48L2Rpdj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJs
aW5lIj48L2Rpdj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0Ij4KLSAgICAgICAg
ICAgICAgICAgICAgYWM4MjZhMzgKLSAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAg
ICAgICA8ZGl2IGNsYXNzPSJib3JkZXItbGluZS1yaWdodCI+PC9kaXY+Ci0gICAgICAgICAgICA8
L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9InNjYWxlIj4KLSAgICAgICAgICAgICAgICA8
ZGl2IGNsYXNzPSJsaW5lIj48L2Rpdj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0
Ij4KLSAgICAgICAgICAgICAgICAgICAgYzM1NThkNTAKLSAgICAgICAgICAgICAgICA8L2Rpdj4K
LSAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2NhbGUiPgotICAg
ICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxpbmUiPjwvZGl2PgotICAgICAgICAgICAgICAgIDxk
aXYgY2xhc3M9InRleHQiPgotICAgICAgICAgICAgICAgICAgICAwODYzNzQyMwotICAgICAgICAg
ICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNz
PSJzY2FsZSBncm91cC01Ij4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJib3JkZXItbGlu
ZS1sZWZ0Ij48L2Rpdj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsaW5lIj48L2Rpdj4K
LSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0Ij4KLSAgICAgICAgICAgICAgICAgICAg
Yzk0ZmViNjMKLSAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNs
YXNzPSJib3JkZXItbGluZS1yaWdodCI+PC9kaXY+Ci0gICAgICAgICAgICA8L2Rpdj4KLSAgICAg
ICAgPC9kaXY+Ci0gICAgPC9kaXY+Ci08L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwv
ZGl2PgotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAg
ICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkZXIiIGlk
PSJFbGVtZW50cy1MZW5nZW5kIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNs
YXNzPSJ0aXRsZSI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDI+TGVuZ2VuZDwv
aDI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAg
ICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAg
IAotICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2
IGNsYXNzPSJjb250ZW50Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJlPjx4bXA+
PGRpdiBjbGFzcz0ibGVuZ2VuZCI+Ci0gICAgPGRpdiBjbGFzcz0iaXRlbSI+Ci0gICAgICAgIDxk
aXYgY2xhc3M9ImRvdCBzdWNjZXNzIj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQiPuKc
kzwvZGl2PgotICAgICAgICA8L2Rpdj4KLSAgICAgICAgPGRpdiBjbGFzcz0ibGFiZWwiPlRlc3Rz
IFBhc3M8L2Rpdj4KLSAgICA8L2Rpdj4KLSAgICA8ZGl2IGNsYXNzPSJpdGVtIj4KLSAgICAgICAg
PGRpdiBjbGFzcz0iZG90IGZhaWxlZCI+PC9kaXY+Ci0gICAgICAgIDxkaXYgY2xhc3M9ImxhYmVs
Ij5UZXN0cyBGYWlsZWQ8L2Rpdj4KLSAgICA8L2Rpdj4KLSAgICA8ZGl2IGNsYXNzPSJpdGVtIj4K
LSAgICAgICAgPGRpdiBjbGFzcz0iZG90IGVycm9yIj48aW1nIHNyYz0iLi4vaWNvbnMvY2xvY2su
c3ZnIj48L2Rpdj4KLSAgICAgICAgPGRpdiBjbGFzcz0ibGFiZWwiPlRlc3RzIGhhdmUgZXJyb3I8
L2Rpdj4KLSAgICA8L2Rpdj4KLTwvZGl2PjwveG1wPjwvcHJlPgotICAgICAgICAgICAgICAgICAg
ICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50
Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsZW5nZW5kIj4KLSAg
ICA8ZGl2IGNsYXNzPSJpdGVtIj4KLSAgICAgICAgPGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3MiPgot
ICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dCI+4pyTPC9kaXY+Ci0gICAgICAgIDwvZGl2Pgot
ICAgICAgICA8ZGl2IGNsYXNzPSJsYWJlbCI+VGVzdHMgUGFzczwvZGl2PgotICAgIDwvZGl2Pgot
ICAgIDxkaXYgY2xhc3M9Iml0ZW0iPgotICAgICAgICA8ZGl2IGNsYXNzPSJkb3QgZmFpbGVkIj48
L2Rpdj4KLSAgICAgICAgPGRpdiBjbGFzcz0ibGFiZWwiPlRlc3RzIEZhaWxlZDwvZGl2PgotICAg
IDwvZGl2PgotICAgIDxkaXYgY2xhc3M9Iml0ZW0iPgotICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qg
ZXJyb3IiPjxpbWcgc3JjPSIuLi9pY29ucy9jbG9jay5zdmciPjwvZGl2PgotICAgICAgICA8ZGl2
IGNsYXNzPSJsYWJlbCI+VGVzdHMgaGF2ZSBlcnJvcjwvZGl2PgotICAgIDwvZGl2PgotPC9kaXY+
Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgCi0g
ICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2
IGNsYXNzPSJjb250ZW50Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2l0aCBo
b3Jpem9udGFsIG1peGluCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9
ImNvbnRlbnQiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcmU+PHhtcD48ZGl2IGNs
YXNzPSJsZW5nZW5kIGhvcml6b250YWwiPgotICAgIDxkaXYgY2xhc3M9Iml0ZW0iPgotICAgICAg
ICA8ZGl2IGNsYXNzPSJkb3Qgc3VjY2VzcyI+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0
Ij7inJM8L2Rpdj4KLSAgICAgICAgPC9kaXY+Ci0gICAgICAgIDxkaXYgY2xhc3M9ImxhYmVsIj5U
ZXN0cyBQYXNzPC9kaXY+Ci0gICAgPC9kaXY+Ci0gICAgPGRpdiBjbGFzcz0iaXRlbSI+Ci0gICAg
ICAgIDxkaXYgY2xhc3M9ImRvdCBmYWlsZWQiPjwvZGl2PgotICAgICAgICA8ZGl2IGNsYXNzPSJs
YWJlbCI+VGVzdHMgRmFpbGVkPC9kaXY+Ci0gICAgPC9kaXY+Ci0gICAgPGRpdiBjbGFzcz0iaXRl
bSI+Ci0gICAgICAgIDxkaXYgY2xhc3M9ImRvdCBlcnJvciI+PGltZyBzcmM9Ii4uL2ljb25zL2Ns
b2NrLnN2ZyI+PC9kaXY+Ci0gICAgICAgIDxkaXYgY2xhc3M9ImxhYmVsIj5UZXN0cyBoYXZlIGVy
cm9yPC9kaXY+Ci0gICAgPC9kaXY+Ci08L2Rpdj48L3htcD48L3ByZT4KLSAgICAgICAgICAgICAg
ICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29u
dGVudCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGVuZ2VuZCBo
b3Jpem9udGFsIj4KLSAgICA8ZGl2IGNsYXNzPSJpdGVtIj4KLSAgICAgICAgPGRpdiBjbGFzcz0i
ZG90IHN1Y2Nlc3MiPgotICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dCI+4pyTPC9kaXY+Ci0g
ICAgICAgIDwvZGl2PgotICAgICAgICA8ZGl2IGNsYXNzPSJsYWJlbCI+VGVzdHMgUGFzczwvZGl2
PgotICAgIDwvZGl2PgotICAgIDxkaXYgY2xhc3M9Iml0ZW0iPgotICAgICAgICA8ZGl2IGNsYXNz
PSJkb3QgZmFpbGVkIj48L2Rpdj4KLSAgICAgICAgPGRpdiBjbGFzcz0ibGFiZWwiPlRlc3RzIEZh
aWxlZDwvZGl2PgotICAgIDwvZGl2PgotICAgIDxkaXYgY2xhc3M9Iml0ZW0iPgotICAgICAgICA8
ZGl2IGNsYXNzPSJkb3QgZXJyb3IiPjxpbWcgc3JjPSIuLi9pY29ucy9jbG9jay5zdmciPjwvZGl2
PgotICAgICAgICA8ZGl2IGNsYXNzPSJsYWJlbCI+VGVzdHMgaGF2ZSBlcnJvcjwvZGl2PgotICAg
IDwvZGl2PgotPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAg
ICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgV2l0aCB0aW1lbGluZSBtaXhpbgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAg
ICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJl
Pjx4bXA+PGRpdiBjbGFzcz0ibGVuZ2VuZCB0aW1lbGluZSI+Ci0gICAgPGRpdiBjbGFzcz0iaXRl
bSI+Ci0gICAgICAgIDxkaXYgY2xhc3M9ImRvdCBzdWNjZXNzIj4KLSAgICAgICAgICAgIDxkaXYg
Y2xhc3M9InRleHQiPuKckzwvZGl2PgotICAgICAgICA8L2Rpdj4KLSAgICAgICAgPGRpdiBjbGFz
cz0ibGFiZWwiPlRlc3RzIFBhc3M8L2Rpdj4KLSAgICA8L2Rpdj4KLSAgICA8ZGl2IGNsYXNzPSJp
dGVtIj4KLSAgICAgICAgPGRpdiBjbGFzcz0iZG90IGZhaWxlZCI+PC9kaXY+Ci0gICAgICAgIDxk
aXYgY2xhc3M9ImxhYmVsIj5UZXN0cyBGYWlsZWQ8L2Rpdj4KLSAgICA8L2Rpdj4KLSAgICA8ZGl2
IGNsYXNzPSJpdGVtIj4KLSAgICAgICAgPGRpdiBjbGFzcz0iZG90IGVycm9yIj48aW1nIHNyYz0i
Li4vaWNvbnMvY2xvY2suc3ZnIj48L2Rpdj4KLSAgICAgICAgPGRpdiBjbGFzcz0ibGFiZWwiPlRl
c3RzIGhhdmUgZXJyb3I8L2Rpdj4KLSAgICA8L2Rpdj4KLTwvZGl2PjwveG1wPjwvcHJlPgotICAg
ICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2
IGNsYXNzPSJjb250ZW50Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNz
PSJsZW5nZW5kIHRpbWVsaW5lIj4KLSAgICA8ZGl2IGNsYXNzPSJpdGVtIj4KLSAgICAgICAgPGRp
diBjbGFzcz0iZG90IHN1Y2Nlc3MiPgotICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dCI+4pyT
PC9kaXY+Ci0gICAgICAgIDwvZGl2PgotICAgICAgICA8ZGl2IGNsYXNzPSJsYWJlbCI+VGVzdHMg
UGFzczwvZGl2PgotICAgIDwvZGl2PgotICAgIDxkaXYgY2xhc3M9Iml0ZW0iPgotICAgICAgICA8
ZGl2IGNsYXNzPSJkb3QgZmFpbGVkIj48L2Rpdj4KLSAgICAgICAgPGRpdiBjbGFzcz0ibGFiZWwi
PlRlc3RzIEZhaWxlZDwvZGl2PgotICAgIDwvZGl2PgotICAgIDxkaXYgY2xhc3M9Iml0ZW0iPgot
ICAgICAgICA8ZGl2IGNsYXNzPSJkb3QgZXJyb3IiPjxpbWcgc3JjPSIuLi9pY29ucy9jbG9jay5z
dmciPjwvZGl2PgotICAgICAgICA8ZGl2IGNsYXNzPSJsYWJlbCI+VGVzdHMgaGF2ZSBlcnJvcjwv
ZGl2PgotICAgIDwvZGl2PgotPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4K
LSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAg
ICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGVyIiBpZD0iRWxl
bWVudHMtUG9wb3ZlciI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0i
dGl0bGUiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgyPlBvcG92ZXI8L2gyPgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAg
ICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAKLSAg
ICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFz
cz0iY29udGVudCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByZT48eG1wPjxkaXYg
Y2xhc3M9InBvcG92ZXIgZGlzcGxheSI+Ci0gICAgPGRpdiBjbGFzcz0iYXJyb3cgcG9pbnQtdG9w
IiBzdHlsZT0ibGVmdDogMTA2cHg7Ij4KLSAgICA8L2Rpdj4KLSAgICA8ZGl2IGNsYXNzPSJjb250
ZW50IiBzdHlsZT0id2lkdGg6MjAwcHgiPgotICAgICAgICBUaGlzIGlzIHBvcG92ZXI7Ci0gICAg
PC9kaXY+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9ImNvbnRlbnQiPgotICAgIExvcmVtIGlwc3VtIGRv
bG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBhZGlwaXNjaW5nIGVsaXQsIHNlZCBkbyBlaXVzbW9k
IHRlbXBvciBpbmNpZGlkdW50IHV0IGxhYm9yZSBldCBkb2xvcmUgbWFnbmEgYWxpcXVhLiBVdCBl
bmltIGFkIG1pbmltIHZlbmlhbSwgcXVpcyBub3N0cnVkIGV4ZXJjaXRhdGlvbiB1bGxhbWNvIGxh
Ym9yaXMgbmlzaSB1dCBhbGlxdWlwIGV4IGVhIGNvbW1vZG8gY29uc2VxdWF0LiBEdWlzIGF1dGUg
aXJ1cmUgZG9sb3IgaW4gcmVwcmVoZW5kZXJpdCBpbiB2b2x1cHRhdGUgdmVsaXQgZXNzZSBjaWxs
dW0gZG9sb3JlIGV1IGZ1Z2lhdCBudWxsYSBwYXJpYXR1ci4gRXhjZXB0ZXVyIHNpbnQgb2NjYWVj
YXQgY3VwaWRhdGF0IG5vbiBwcm9pZGVudCwgc3VudCBpbiBjdWxwYSBxdWkgb2ZmaWNpYSBkZXNl
cnVudCBtb2xsaXQgYW5pbSBpZCBlc3QgbGFib3J1bS4KLTwvZGl2PgotPCEtLSBZb3UgY2FuIGNv
bnRyb2wgdGhlIGFycm93IHBvcyBieSBzZXRpbmcgdGhlIGxlZnQgb3IgdG9wIC0tPgotPGRpdiBj
bGFzcz0icG9wb3ZlciBkaXNwbGF5Ij4KLSAgICA8ZGl2IGNsYXNzPSJhcnJvdyBwb2ludC1ib3R0
b20iIHN0eWxlPSJsZWZ0OiAxMDZweDsiPgotICAgIDwvZGl2PgotICAgIDxkaXYgY2xhc3M9ImNv
bnRlbnQiIHN0eWxlPSJ3aWR0aDoyMDBweCI+Ci0gICAgICAgIFRoaXMgaXMgYSBwb3BvdmVyCi0g
ICAgPC9kaXY+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9ImNvbnRlbnQiPgotICAgIExvcmVtIGlwc3Vt
IGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBhZGlwaXNjaW5nIGVsaXQsIHNlZCBkbyBlaXVz
bW9kIHRlbXBvciBpbmNpZGlkdW50IHV0IGxhYm9yZSBldCBkb2xvcmUgbWFnbmEgYWxpcXVhLiBV
dCBlbmltIGFkIG1pbmltIHZlbmlhbSwgcXVpcyBub3N0cnVkIGV4ZXJjaXRhdGlvbiB1bGxhbWNv
IGxhYm9yaXMgbmlzaSB1dCBhbGlxdWlwIGV4IGVhIGNvbW1vZG8gY29uc2VxdWF0LiBEdWlzIGF1
dGUgaXJ1cmUgZG9sb3IgaW4gcmVwcmVoZW5kZXJpdCBpbiB2b2x1cHRhdGUgdmVsaXQgZXNzZSBj
aWxsdW0gZG9sb3JlIGV1IGZ1Z2lhdCBudWxsYSBwYXJpYXR1ci4gRXhjZXB0ZXVyIHNpbnQgb2Nj
YWVjYXQgY3VwaWRhdGF0IG5vbiBwcm9pZGVudCwgc3VudCBpbiBjdWxwYSBxdWkgb2ZmaWNpYSBk
ZXNlcnVudCBtb2xsaXQgYW5pbSBpZCBlc3QgbGFib3J1bS4KLTwvZGl2PgotPGRpdiBjbGFzcz0i
cG9wb3ZlciBkaXNwbGF5Ij4KLSAgICA8ZGl2IGNsYXNzPSJhcnJvdyBwb2ludC1sZWZ0IiBzdHls
ZT0idG9wOiAzMXB4OyI+Ci0gICAgPC9kaXY+Ci0gICAgPGRpdiBjbGFzcz0iY29udGVudCIgc3R5
bGU9ImhlaWdodDo1MHB4Ij4KLSAgICAgICAgVGhpcyBpcyBhIHBvcG92ZXIKLSAgICA8L2Rpdj4K
LTwvZGl2PgotPGRpdiBjbGFzcz0iY29udGVudCI+Ci0gICAgTG9yZW0gaXBzdW0gZG9sb3Igc2l0
IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdCwgc2VkIGRvIGVpdXNtb2QgdGVtcG9y
IGluY2lkaWR1bnQgdXQgbGFib3JlIGV0IGRvbG9yZSBtYWduYSBhbGlxdWEuIFV0IGVuaW0gYWQg
bWluaW0gdmVuaWFtLCBxdWlzIG5vc3RydWQgZXhlcmNpdGF0aW9uIHVsbGFtY28gbGFib3JpcyBu
aXNpIHV0IGFsaXF1aXAgZXggZWEgY29tbW9kbyBjb25zZXF1YXQuIER1aXMgYXV0ZSBpcnVyZSBk
b2xvciBpbiByZXByZWhlbmRlcml0IGluIHZvbHVwdGF0ZSB2ZWxpdCBlc3NlIGNpbGx1bSBkb2xv
cmUgZXUgZnVnaWF0IG51bGxhIHBhcmlhdHVyLiBFeGNlcHRldXIgc2ludCBvY2NhZWNhdCBjdXBp
ZGF0YXQgbm9uIHByb2lkZW50LCBzdW50IGluIGN1bHBhIHF1aSBvZmZpY2lhIGRlc2VydW50IG1v
bGxpdCBhbmltIGlkIGVzdCBsYWJvcnVtLgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJwb3BvdmVyIGRp
c3BsYXkiPgotICAgIDxkaXYgY2xhc3M9ImFycm93IHBvaW50LXJpZ2h0IiBzdHlsZT0idG9wOiAz
MXB4OyI+Ci0gICAgPC9kaXY+Ci0gICAgPGRpdiBjbGFzcz0iY29udGVudCIgc3R5bGU9ImhlaWdo
dDo1MHB4Ij4KLSAgICAgICAgVGhpcyBpcyBhIHBvcG92ZXIKLSAgICA8L2Rpdj4KLTwvZGl2Pgot
PGRpdiBjbGFzcz0iY29udGVudCI+Ci0gICAgTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNv
bnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdCwgc2VkIGRvIGVpdXNtb2QgdGVtcG9yIGluY2lkaWR1
bnQgdXQgbGFib3JlIGV0IGRvbG9yZSBtYWduYSBhbGlxdWEuIFV0IGVuaW0gYWQgbWluaW0gdmVu
aWFtLCBxdWlzIG5vc3RydWQgZXhlcmNpdGF0aW9uIHVsbGFtY28gbGFib3JpcyBuaXNpIHV0IGFs
aXF1aXAgZXggZWEgY29tbW9kbyBjb25zZXF1YXQuIER1aXMgYXV0ZSBpcnVyZSBkb2xvciBpbiBy
ZXByZWhlbmRlcml0IGluIHZvbHVwdGF0ZSB2ZWxpdCBlc3NlIGNpbGx1bSBkb2xvcmUgZXUgZnVn
aWF0IG51bGxhIHBhcmlhdHVyLiBFeGNlcHRldXIgc2ludCBvY2NhZWNhdCBjdXBpZGF0YXQgbm9u
IHByb2lkZW50LCBzdW50IGluIGN1bHBhIHF1aSBvZmZpY2lhIGRlc2VydW50IG1vbGxpdCBhbmlt
IGlkIGVzdCBsYWJvcnVtLgotPC9kaXY+PC94bXA+PC9wcmU+Ci0gICAgICAgICAgICAgICAgICAg
ICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQi
PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBvcG92ZXIgZGlzcGxh
eSI+Ci0gICAgPGRpdiBjbGFzcz0iYXJyb3cgcG9pbnQtdG9wIiBzdHlsZT0ibGVmdDogMTA2cHg7
Ij4KLSAgICA8L2Rpdj4KLSAgICA8ZGl2IGNsYXNzPSJjb250ZW50IiBzdHlsZT0id2lkdGg6MjAw
cHgiPgotICAgICAgICBUaGlzIGlzIHBvcG92ZXI7Ci0gICAgPC9kaXY+Ci08L2Rpdj4KLTxkaXYg
Y2xhc3M9ImNvbnRlbnQiPgotICAgIExvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0
ZXR1ciBhZGlwaXNjaW5nIGVsaXQsIHNlZCBkbyBlaXVzbW9kIHRlbXBvciBpbmNpZGlkdW50IHV0
IGxhYm9yZSBldCBkb2xvcmUgbWFnbmEgYWxpcXVhLiBVdCBlbmltIGFkIG1pbmltIHZlbmlhbSwg
cXVpcyBub3N0cnVkIGV4ZXJjaXRhdGlvbiB1bGxhbWNvIGxhYm9yaXMgbmlzaSB1dCBhbGlxdWlw
IGV4IGVhIGNvbW1vZG8gY29uc2VxdWF0LiBEdWlzIGF1dGUgaXJ1cmUgZG9sb3IgaW4gcmVwcmVo
ZW5kZXJpdCBpbiB2b2x1cHRhdGUgdmVsaXQgZXNzZSBjaWxsdW0gZG9sb3JlIGV1IGZ1Z2lhdCBu
dWxsYSBwYXJpYXR1ci4gRXhjZXB0ZXVyIHNpbnQgb2NjYWVjYXQgY3VwaWRhdGF0IG5vbiBwcm9p
ZGVudCwgc3VudCBpbiBjdWxwYSBxdWkgb2ZmaWNpYSBkZXNlcnVudCBtb2xsaXQgYW5pbSBpZCBl
c3QgbGFib3J1bS4KLTwvZGl2PgotPCEtLSBZb3UgY2FuIGNvbnRyb2wgdGhlIGFycm93IHBvcyBi
eSBzZXRpbmcgdGhlIGxlZnQgb3IgdG9wIC0tPgotPGRpdiBjbGFzcz0icG9wb3ZlciBkaXNwbGF5
Ij4KLSAgICA8ZGl2IGNsYXNzPSJhcnJvdyBwb2ludC1ib3R0b20iIHN0eWxlPSJsZWZ0OiAxMDZw
eDsiPgotICAgIDwvZGl2PgotICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiIHN0eWxlPSJ3aWR0aDoy
MDBweCI+Ci0gICAgICAgIFRoaXMgaXMgYSBwb3BvdmVyCi0gICAgPC9kaXY+Ci08L2Rpdj4KLTxk
aXYgY2xhc3M9ImNvbnRlbnQiPgotICAgIExvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25z
ZWN0ZXR1ciBhZGlwaXNjaW5nIGVsaXQsIHNlZCBkbyBlaXVzbW9kIHRlbXBvciBpbmNpZGlkdW50
IHV0IGxhYm9yZSBldCBkb2xvcmUgbWFnbmEgYWxpcXVhLiBVdCBlbmltIGFkIG1pbmltIHZlbmlh
bSwgcXVpcyBub3N0cnVkIGV4ZXJjaXRhdGlvbiB1bGxhbWNvIGxhYm9yaXMgbmlzaSB1dCBhbGlx
dWlwIGV4IGVhIGNvbW1vZG8gY29uc2VxdWF0LiBEdWlzIGF1dGUgaXJ1cmUgZG9sb3IgaW4gcmVw
cmVoZW5kZXJpdCBpbiB2b2x1cHRhdGUgdmVsaXQgZXNzZSBjaWxsdW0gZG9sb3JlIGV1IGZ1Z2lh
dCBudWxsYSBwYXJpYXR1ci4gRXhjZXB0ZXVyIHNpbnQgb2NjYWVjYXQgY3VwaWRhdGF0IG5vbiBw
cm9pZGVudCwgc3VudCBpbiBjdWxwYSBxdWkgb2ZmaWNpYSBkZXNlcnVudCBtb2xsaXQgYW5pbSBp
ZCBlc3QgbGFib3J1bS4KLTwvZGl2PgotPGRpdiBjbGFzcz0icG9wb3ZlciBkaXNwbGF5Ij4KLSAg
ICA8ZGl2IGNsYXNzPSJhcnJvdyBwb2ludC1sZWZ0IiBzdHlsZT0idG9wOiAzMXB4OyI+Ci0gICAg
PC9kaXY+Ci0gICAgPGRpdiBjbGFzcz0iY29udGVudCIgc3R5bGU9ImhlaWdodDo1MHB4Ij4KLSAg
ICAgICAgVGhpcyBpcyBhIHBvcG92ZXIKLSAgICA8L2Rpdj4KLTwvZGl2PgotPGRpdiBjbGFzcz0i
Y29udGVudCI+Ci0gICAgTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFk
aXBpc2NpbmcgZWxpdCwgc2VkIGRvIGVpdXNtb2QgdGVtcG9yIGluY2lkaWR1bnQgdXQgbGFib3Jl
IGV0IGRvbG9yZSBtYWduYSBhbGlxdWEuIFV0IGVuaW0gYWQgbWluaW0gdmVuaWFtLCBxdWlzIG5v
c3RydWQgZXhlcmNpdGF0aW9uIHVsbGFtY28gbGFib3JpcyBuaXNpIHV0IGFsaXF1aXAgZXggZWEg
Y29tbW9kbyBjb25zZXF1YXQuIER1aXMgYXV0ZSBpcnVyZSBkb2xvciBpbiByZXByZWhlbmRlcml0
IGluIHZvbHVwdGF0ZSB2ZWxpdCBlc3NlIGNpbGx1bSBkb2xvcmUgZXUgZnVnaWF0IG51bGxhIHBh
cmlhdHVyLiBFeGNlcHRldXIgc2ludCBvY2NhZWNhdCBjdXBpZGF0YXQgbm9uIHByb2lkZW50LCBz
dW50IGluIGN1bHBhIHF1aSBvZmZpY2lhIGRlc2VydW50IG1vbGxpdCBhbmltIGlkIGVzdCBsYWJv
cnVtLgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJwb3BvdmVyIGRpc3BsYXkiPgotICAgIDxkaXYgY2xh
c3M9ImFycm93IHBvaW50LXJpZ2h0IiBzdHlsZT0idG9wOiAzMXB4OyI+Ci0gICAgPC9kaXY+Ci0g
ICAgPGRpdiBjbGFzcz0iY29udGVudCIgc3R5bGU9ImhlaWdodDo1MHB4Ij4KLSAgICAgICAgVGhp
cyBpcyBhIHBvcG92ZXIKLSAgICA8L2Rpdj4KLTwvZGl2PgotPGRpdiBjbGFzcz0iY29udGVudCI+
Ci0gICAgTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2Npbmcg
ZWxpdCwgc2VkIGRvIGVpdXNtb2QgdGVtcG9yIGluY2lkaWR1bnQgdXQgbGFib3JlIGV0IGRvbG9y
ZSBtYWduYSBhbGlxdWEuIFV0IGVuaW0gYWQgbWluaW0gdmVuaWFtLCBxdWlzIG5vc3RydWQgZXhl
cmNpdGF0aW9uIHVsbGFtY28gbGFib3JpcyBuaXNpIHV0IGFsaXF1aXAgZXggZWEgY29tbW9kbyBj
b25zZXF1YXQuIER1aXMgYXV0ZSBpcnVyZSBkb2xvciBpbiByZXByZWhlbmRlcml0IGluIHZvbHVw
dGF0ZSB2ZWxpdCBlc3NlIGNpbGx1bSBkb2xvcmUgZXUgZnVnaWF0IG51bGxhIHBhcmlhdHVyLiBF
eGNlcHRldXIgc2ludCBvY2NhZWNhdCBjdXBpZGF0YXQgbm9uIHByb2lkZW50LCBzdW50IGluIGN1
bHBhIHF1aSBvZmZpY2lhIGRlc2VydW50IG1vbGxpdCBhbmltIGlkIGVzdCBsYWJvcnVtLgotPC9k
aXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAg
Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgCi0gICAgICAg
IDxkaXYgY2xhc3M9InBsYWNlaG9sZGVyIj48L2Rpdj4KLSAgICA8L2Rpdj4KLSAgICA8IS0tIGVu
ZCBvZiBjb250ZW50LS0+Ci0gIDwvYm9keT4KLTwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCkluZGV4OiBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS92aWV3L3N0YXRpYy9s
aWJyYXJ5L2Nzcy93ZWJraXQuY3NzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL3Jlc3VsdHNkYnB5L3Jl
c3VsdHNkYnB5L3ZpZXcvc3RhdGljL2xpYnJhcnkvY3NzL3dlYmtpdC5jc3MJKHJldmlzaW9uIDI2
NTUzMSkKKysrIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvc3RhdGljL2xpYnJh
cnkvY3NzL3dlYmtpdC5jc3MJKG5vbmV4aXN0ZW50KQpAQCAtMSwyNjc5ICswLDAgQEAKLS8qCi1D
b3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotCi0gUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gYXJlIG1ldDoKLSAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0KLSBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQKLSBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUgotIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSCi0gQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotLyogY29sb3JzICovCi06cm9vdCB7Ci0gIC0td2hpdGU6ICNm
ZmY7Ci0gIC0tYmx1ZURhcmtlcjogIzAyNjJjYTsKLSAgLS1ibHVlRGFyazogIzA2NmVlMDsKLSAg
LS1ibHVlOiAjMDA3MGM5OwotICAtLWJsdWVMaWdodDogIzNiOTlmYzsKLSAgLS1ibHVlTGlnaHRl
cjogIzlkY2NmZTsKLSAgLS1ibHVlTGlnaHRlc3Q6ICNmNWY5ZmU7Ci0gIC0tZ3JlZW5EYXJrZXI6
ICM0M2MzNTk7Ci0gIC0tZ3JlZW5EYXJrOiAjM2RjZTU2OwotICAtLWdyZWVuOiAjNGNkOTY0Owot
ICAtLWdyZWVuTGlnaHQ6ICM3OWRmOGY7Ci0gIC0tZ3JlZW5MaWdodGVyOiAjYmNlZmM3OwotICAt
LWdyZWVuTGlnaHRlc3Q6ICNmOGZkZjk7Ci0gIC0tb3JhbmdlRGFya2VyOiAjZDc3OTAwOwotICAt
LW9yYW5nZURhcms6ICNlNjgyMDA7Ci0gIC0tb3JhbmdlOiAjZmY5NTAwOwotICAtLW9yYW5nZUxp
Z2h0OiAjZjdhZDQ1OwotICAtLW9yYW5nZUxpZ2h0ZXI6ICNmYmQ2YTI7Ci0gIC0tb3JhbmdlTGln
aHRlc3Q6ICNmZWZhZjU7Ci0gIC0tcmVkRGFya2VyOiAjZGMzMjI5OwotICAtLXJlZERhcms6ICNm
MzJkMjI7Ci0gIC0tcmVkOiAjZmYzYjMwOwotICAtLXJlZExpZ2h0OiAjZmM2ZTYxOwotICAtLXJl
ZExpZ2h0ZXI6ICNmZGI2YjA7Ci0gIC0tcmVkTGlnaHRlc3Q6ICNmZWY3Zjc7Ci0gIC0tcHVycGxl
RGFya2VyOiAjODg0YWM1OwotICAtLXB1cnBsZURhcms6ICM5NzQ4ZTQ7Ci0gIC0tcHVycGxlOiAj
YTQ1YWVjOwotICAtLXB1cnBsZUxpZ2h0OiAjYjM3NWViOwotICAtLXB1cnBsZUxpZ2h0ZXI6ICNk
OWJhZjU7Ci0gIC0tcHVycGxlTGlnaHRlc3Q6ICNmYmY4ZmU7Ci0gIC0tZ3JleURhcmtlcjogIzZk
NzI3YzsKLSAgLS1ncmV5RGFyazogI2E0YWFhZDsKLSAgLS1ncmV5OiAjYzFjNGM2OwotICAtLWdy
ZXlMaWdodDogI2Q0ZDdkOTsKLSAgLS1ncmV5TGlnaHRlcjogI2YwZjFmMTsKLSAgLS1ncmV5TGln
aHRlc3Q6ICNmOWZhZmE7Ci0gIC0tYmxhY2tEYXJrZXI6ICMyMzIzMjM7Ci0gIC0tYmxhY2tEYXJr
OiAjMzYzNjM2OwotICAtLWJsYWNrOiAjNDg0ODQ4OwotICAtLW1haW5Cb2R5VHlwZTogdmFyKC0t
YmxhY2spOwotICAtLWhlYWRlclR5cGU6IHZhcigtLWdyZXkpOwotICAtLWxhYmVsVHlwZTogdmFy
KC0tYmxhY2spOwotICAtLW1lc3NhZ2VGYWlsdXJlVHlwZTogI2I0MjUxZTsKLSAgLS1tZXNzYWdl
SW5mb1R5cGU6ICM2ZTM1YTc7Ci0gIC0tbWVzc2FnZVN1Y2Nlc3NUeXBlOiAjMzNhMDQ2OwotICAt
LW1lc3NhZ2VXYXJuaW5nVHlwZTogI2E0NWMwMDsKLSAgLS1ibHVyQmFja2dyb3VuZENvbG9yOiBy
Z2JhKDI1NSwyNTUsMjU1LDAuNzQ5MDIpOwotICAtLWJsdXJCYWNrZ3JvdW5kQ29sb3JHcmV5OiBy
Z2JhKDI0NSwyNDUsMjQ1LDAuNzQ5MDIpOwotICAtLWJsdXJCYWNrZ3JvdW5kQ29sb3JEYXJrOiBy
Z2JhKDIyLDIyLDIyLCAwLjc0OTAyKTsKLSAgLS1saW5rQ29sb3I6IHZhcigtLWJsdWUpOwotICAt
LWxpbmtDb2xvckRhcmtlcjogIzAwNjJjYzsKLSAgLS1ib3JkZXJDb2xvclN1YnRsZTogdmFyKC0t
Z3JleUxpZ2h0ZXN0KTsKLSAgLS1ib3JkZXJDb2xvcklubGluZUVsZW1lbnQ6IHZhcigtLWdyZXlM
aWdodGVyKTsKLSAgLS1ib3JkZXJDb2xvclNlY3Rpb246IHZhcigtLWdyZXlMaWdodCk7Ci0gIC0t
Ym9yZGVyQ29sb3JIYXJkOiB2YXIoLS1ncmV5KTsKLSAgLS10aW55U2l6ZTogMTBweDsKLSAgLS1z
bWFsbFNpemU6IDE4cHg7Ci0gIC0tbWVkaXVtU2l6ZTogMjRweDsKLSAgLS1sYXJnZVNpemU6IDI4
cHg7Ci0gIC0taHVnZVNpemU6IDM2cHg7Ci0gIC0tZm9udFdlaWdodDogMjAwOwotICAtLWNvbnRl
bnRQYWRkaW5nU2l6ZTogNHB4OwotICAtLWNvbFBhZGRpbmdTaXplOiA0cHg7Ci0gIC0tc2VjdGlv
blBhZGRpbmdTaXplOiAxMnB4IDI0cHg7Ci0gIC0tZm9ybUxhYmVsUGFkZGluZzogMTRweDsKLSAg
LS1taWRkbGVaSW5kZXg6IDUwOwotICAtLXRvcFpJbmRleDogMTAwOwotICAtLWludmVyc2VDb2xv
cjogdmFyKC0tYmxhY2spOwotfQotCi1AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2MDBw
eCkgewotICA6cm9vdCB7Ci0gICAgLS10aW55U2l6ZTogMTFweDsKLSAgICAtLWZvbnRXZWlnaHQ6
IDIwMDsKLSAgICAtLWNvbnRlbnRQYWRkaW5nU2l6ZTogMjBweDsKLSAgICAtLWNvbFBhZGRpbmdT
aXplOiA2cHg7Ci0gICAgLS1zZWN0aW9uUGFkZGluZ1NpemU6IDE2cHggMzJweDsKLSAgfQotfQot
Ci1AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA3NjhweCkgewotICA6cm9vdCB7Ci0gICAg
LS10aW55U2l6ZTogMTJweDsKLSAgICAtLWZvbnRXZWlnaHQ6IDEwMDsKLSAgICAtLWNvbnRlbnRQ
YWRkaW5nU2l6ZTogNDBweDsKLSAgICAtLWNvbFBhZGRpbmdTaXplOiA4cHg7Ci0gICAgLS1zZWN0
aW9uUGFkZGluZ1NpemU6IDE5cHggMzhweDsKLSAgfQotfQotCi1AbWVkaWEgKHByZWZlcnMtY29s
b3Itc2NoZW1lOiBkYXJrKSB7Ci0gIDpyb290IHsKLSAgICAtLW1haW5Cb2R5VHlwZTogdmFyKC0t
YmxhY2spOwotICAgIC0taGVhZGVyVHlwZTogdmFyKC0tYmxhY2tEYXJrZXIpOwotICAgIC0tbGlu
a0NvbG9yOiB2YXIoLS1ibHVlTGlnaHRlcik7Ci0gICAgLS1ib3JkZXJDb2xvclN1YnRsZTogdmFy
KC0tYmxhY2spOwotICAgIC0tYm9yZGVyQ29sb3JJbmxpbmVFbGVtZW50OiB2YXIoLS1ncmV5RGFy
a2VyKTsKLSAgICAtLWJvcmRlckNvbG9yU2VjdGlvbjogdmFyKC0tYmxhY2tEYXJrKTsKLSAgICAt
LWJvcmRlckNvbG9ySGFyZDogdmFyKC0tYmxhY2tEYXJrZXIpOwotICAgIC0taW52ZXJzZUNvbG9y
OiB2YXIoLS13aGl0ZSk7Ci0gIH0KLX0KLQotCi0vKiBhbmltYXRpb25zICovCi0KLUBrZXlmcmFt
ZXMgYmxpbmstYmFja2dyb3VuZCB7Ci0gIDAlIHsKLSAgICBvcGFjaXR5OiAxLjA7Ci0gIH0KLQot
ICA1MCUgewotICAgIG9wYWNpdHk6IDAuNTsKLSAgfQotCi0gIDEwMCUgewotICAgIG9wYWNpdHk6
IDEuMDsKLSAgfQotfQotCi1Aa2V5ZnJhbWVzIHNwaW4gewotICAwJSB7Ci0gICAgdHJhbnNmb3Jt
OiByb3RhdGUoMGRlZyk7Ci0gIH0KLQotICAxMDAlIHsKLSAgICB0cmFuc2Zvcm06IHJvdGF0ZSgz
NjBkZWcpOwotICB9Ci19Ci0KLQotLyogYmFzaWNzICovCi1ib2R5IHsKLSAgbWFyZ2luOiAwOwot
ICBwYWRkaW5nOiAwOwotICB0ZXh0LWFsaWduOiBzdGFydDsKLSAgdGV4dC1yZW5kZXJpbmc6IG9w
dGltaXplTGVnaWJpbGl0eTsKLSAgdGV4dC1zaGFkb3c6IG5vbmU7Ci0gIHRleHQtdHJhbnNmb3Jt
OiBub25lOwotICB3aGl0ZS1zcGFjZTogbm9ybWFsOwotICBsZXR0ZXItc3BhY2luZzogbm9ybWFs
OwotICBsaW5lLWJyZWFrOiBhdXRvOwotICBmb250LXdlaWdodDogdmFyKC0tZm9udFdlaWdodCk7
Ci0gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWdyZXlMaWdodGVzdCk7Ci19Ci0KLUBtZWRpYSAo
cHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIHsKLSAgYm9keSB7Ci0gICAgYmFja2dyb3VuZDog
dmFyKC0tYmxhY2tEYXJrZXIpOwotICAgIGNvbG9yOiB2YXIoLS1ncmV5TGlnaHRlc3QpOwotICB9
Ci19Ci0KLWgxLCBoMiwgaDMsIGg0LCBoNSwgaDYsIHAsIHNwYW4sIHByZSB7Ci0gIG1hcmdpbi1i
bG9jay1zdGFydDogMDsKLSAgbWFyZ2luLWJsb2NrLWVuZDogMDsKLSAgbWFyZ2luOiAwOwotICBm
b250LXdlaWdodDogdmFyKC0tZm9udFdlaWdodCk7Ci19Ci0KLWEgewotICBjb2xvcjogdmFyKC0t
bGlua0NvbG9yKTsKLX0KLQotYTpsaW5rLCBhOnZpc2l0ZWQgewotICB0ZXh0LWRlY29yYXRpb246
IG5vbmU7Ci19Ci0KLWE6aG92ZXIgewotICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKLX0K
LQotLmxpbmstYnV0dG9uOmhvdmVyIHsKLSAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwotICBjdXJz
b3I6IHBvaW50ZXI7Ci19Ci0KLS5kaXZpZGVyLCBociB7Ci0gIG1hcmdpbi1ibG9jay1zdGFydDog
MC41ZW07Ci0gIG1hcmdpbi1ibG9jay1lbmQ6IDAuNWVtOwotICBtYXJnaW4taW5saW5lLXN0YXJ0
OiBhdXRvOwotICBtYXJnaW4taW5saW5lLWVuZDogYXV0bzsKLSAgYm9yZGVyLXRvcC1zdHlsZTog
c29saWQ7Ci0gIGJvcmRlci10b3Atd2lkdGg6IDFweDsKLSAgYm9yZGVyLWNvbG9yOiB2YXIoLS1i
b3JkZXJDb2xvclNlY3Rpb24pOwotICBjb2xvcjogdmFyKC0tYm9yZGVyQ29sb3JTZWN0aW9uKTsK
LSAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYm9yZGVyQ29sb3JTZWN0aW9uKTsKLSAgd2lkdGg6
IDEwMCU7Ci19Ci0KLS5oZWFkZXIsIC50b3BiYXIgewotICBtYXJnaW46IDA7Ci0gIG1hcmdpbi1i
b3R0b206IDE4cHg7Ci0gIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWhlYWRlclR5cGUpOwotICBk
aXNwbGF5OiBmbGV4OwotICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwotfQotCi0uaGVhZGVyPi50
aXRsZSwgLnRvcGJhcj4udGl0bGUgewotICBwYWRkaW5nOiAxMnB4OwotICBwYWRkaW5nLWxlZnQ6
IHZhcigtLWNvbnRlbnRQYWRkaW5nU2l6ZSk7Ci0gIGZvbnQtc2l6ZTogdmFyKC0tbGFyZ2VTaXpl
KTsKLSAgZm9udC13ZWlnaHQ6IDQwMDsKLSAgZmxleDogYXV0bzsKLSAgb3ZlcmZsb3c6IGhpZGRl
bjsKLX0KLQotLmhlYWRlcj4udGl0bGU+LmxvZ28sIC50b3BiYXI+LnRpdGxlPi5sb2dvIHsKLSAg
ZGlzcGxheTogaW5saW5lLWJsb2NrOwotICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwotICBtYXJn
aW4tcmlnaHQ6IDEwcHg7Ci19Ci0KLS5oZWFkZXI+LnRpdGxlPi5sb2dvPmltZywgLnRvcGJhcj4u
dGl0bGU+LmxvZ28+aW1nIHsKLSAgcGFkZGluZzogMDsKLSAgbWFyZ2luOiAwOwotICBoZWlnaHQ6
IHZhcigtLWh1Z2VTaXplKTsKLSAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKLX0KLQotLmhlYWRl
cj4uYWN0aW9ucywgLnRvcGJhcj4uYWN0aW9ucyB7Ci0gIGZsZXg6IGluaXRpYWw7Ci0gIHZlcnRp
Y2FsLWFsaWduOiBiYXNlbGluZTsKLSAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICB2YXIoLS1ib3Jk
ZXJDb2xvclNlY3Rpb24pOwotICBwYWRkaW5nOiAxMnB4OwotICBwYWRkaW5nLWxlZnQ6IDI5cHg7
Ci0gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7Ci19Ci0KLS5oZWFkZXI+LmFjdGlvbnM+Lmxpc3Qs
IC50b3BiYXI+LmFjdGlvbnM+Lmxpc3QgewotICBkaXNwbGF5OiBmbGV4OwotICBmbGV4LWRpcmVj
dGlvbjogcm93OwotICBib3JkZXI6IG5vbmU7Ci0gIGhlaWdodDogMTAwJTsKLSAgYWxpZ24taXRl
bXM6IGNlbnRlcjsKLX0KLQotLmhlYWRlcj4uYWN0aW9ucz4ubGlzdD4uaXRlbSwgLnRvcGJhcj4u
YWN0aW9ucz4ubGlzdD4uaXRlbSB7Ci0gIGJvcmRlcjogbm9uZTsKLSAgZGlzcGxheTogZmxleDsK
LSAgcGFkZGluZzogMCB2YXIoLS1jb2xQYWRkaW5nU2l6ZSk7Ci0gIGFsaWduLXNlbGY6IGNlbnRl
cjsKLX0KLQotLmhlYWRlcj4uYWN0aW9ucz4ubGlzdD4uaXRlbSAqLCAudG9wYmFyPi5hY3Rpb25z
Pi5saXN0Pi5pdGVtICogewotICBhbGlnbi1zZWxmOiBjZW50ZXI7Ci19Ci0KLS5oZWFkZXIuZml4
ZWQsLnRvcGJhci5maXhlZCB7Ci0gIHBvc2l0aW9uOiBmaXhlZDsKLSAgdG9wOiAwOwotICB3aWR0
aDogMTAwJTsKLSAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYmx1ckJhY2tncm91bmRDb2xvcik7
Ci0gIG1hcmdpbi1ib3R0b206IDBweDsKLSAgei1pbmRleDogMTIzNDU7Ci0gIC13ZWJraXQtYmFj
a2Ryb3AtZmlsdGVyOiBibHVyKDNweCk7Ci0gIG1pbi1oZWlnaHQ6IGNhbGModmFyKC0tbGFyZ2VT
aXplKSAqIDEuMyArIDEycHggKiAyKTsKLX0KLQotLmhlYWRlci5maXhlZD4uYWN0aW9ucywgLnRv
cGJhci5maXhlZD4uYWN0aW9ucyB7Ci0gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJsdXJCYWNr
Z3JvdW5kQ29sb3IpOwotICAtd2Via2l0LWJhY2tkcm9wLWZpbHRlcjogYmx1cigzcHgpOwotfQot
Ci0uaGVhZGVyLmZpeGVkKy5jb250ZW50LCAudG9wYmFyLmZpeGVkKy5jb250ZW50IHsKLSAgbWFy
Z2luLXRvcDogMTMwcHg7Ci19Ci0KLUBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmsp
IHsKLSAgLmhlYWRlci5maXhlZCwgLnRvcGJhci5maXhlZCB7Ci0gICAgYmFja2dyb3VuZC1jb2xv
cjogdmFyKC0tYmx1ckJhY2tncm91bmRDb2xvckRhcmspOwotICAgIC13ZWJraXQtYmFja2Ryb3At
ZmlsdGVyOiBibHVyKDNweCkgYnJpZ2h0bmVzcygxNTAlKTsKLSAgfQotCi0gIC5oZWFkZXIuZml4
ZWQ+LmFjdGlvbnMsIC50b3BiYXIuZml4ZWQ+LmFjdGlvbnMgewotICAgIGJhY2tncm91bmQ6IG5v
bmU7Ci0gIH0KLX0KLQotQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjAwcHgpIHsKLSAg
LmhlYWRlciwgLnRvcGJhciB7Ci0gICAgZmxleC1kaXJlY3Rpb246IHJvdzsKLSAgfQotCi0gIC5o
ZWFkZXI+LmFjdGlvbnMsIC50b3BiYXI+LmFjdGlvbnMgewotICAgIGJvcmRlci10b3A6IG5vbmU7
Ci0gIH0KLQotICAuaGVhZGVyLmZpeGVkKy5jb250ZW50LCAudG9wYmFyLmZpeGVkKy5jb250ZW50
IHsKLSAgICBtYXJnaW4tdG9wOiA4MHB4OwotICB9Ci0KLSAgLmhlYWRlci5maXhlZD4uYWN0aW9u
cywgLnRvcGJhci5maXhlZD4uYWN0aW9ucyB7Ci0gICAgYmFja2dyb3VuZDogbm9uZTsKLSAgfQot
fQotCi0uY29udGVudCB7Ci0gIHBhZGRpbmc6IDAgdmFyKC0tY29udGVudFBhZGRpbmdTaXplKTsK
LX0KLQotLnJvdyB7Ci0gIGRpc3BsYXk6IGZsZXg7Ci0gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47
Ci19Ci0vKiBzaXplIHhzICovCi1bY2xhc3MqPSJjb2wtIl0gewotICB3aWR0aDogMTAwJTsKLSAg
cGFkZGluZzogdmFyKC0tY29sUGFkZGluZ1NpemUpIDA7Ci19Ci0KLS8qIHNpemUgcyAqLwotQG1l
ZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjAwcHgpIHsKLSAgLnJvdyB7Ci0gICAgZGlzcGxh
eTogZmxleDsKLSAgICBmbGV4LWRpcmVjdGlvbjogcm93OwotICB9Ci0KLSAgLmNvbC1zLTEgewot
ICAgIHdpZHRoOiA4LjMzJTsKLSAgfQotCi0gIC5jb2wtcy0yIHsKLSAgICB3aWR0aDogMTYuNjYl
OwotICB9Ci0KLSAgLmNvbC1zLTMgewotICAgIHdpZHRoOiAyNSU7Ci0gIH0KLQotICAuY29sLXMt
NCB7Ci0gICAgd2lkdGg6IDMzLjMzJTsKLSAgfQotCi0gIC5jb2wtcy01IHsKLSAgICB3aWR0aDog
NDEuNjYlOwotICB9Ci0KLSAgLmNvbC1zLTYgewotICAgIHdpZHRoOiA1MCU7Ci0gIH0KLQotICAu
Y29sLXMtNyB7Ci0gICAgd2lkdGg6IDU4LjMzJTsKLSAgfQotCi0gIC5jb2wtcy04IHsKLSAgICB3
aWR0aDogNjYuNjYlOwotICB9Ci0KLSAgLmNvbC1zLTkgewotICAgIHdpZHRoOiA3NSU7Ci0gIH0K
LQotICAuY29sLXMtMTAgewotICAgIHdpZHRoOiA4My4zMyU7Ci0gIH0KLQotICAuY29sLXMtMTEg
ewotICAgIHdpZHRoOiA5MS42NiU7Ci0gIH0KLQotICAuY29sLXMtMTIgewotICAgIHdpZHRoOiAx
MDAlOwotICB9Ci19Ci0KLS8qIHNpemUgbSAqLwotQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0
aDogNzY4cHgpIHsKLSAgLnJvdyB7Ci0gICAgZGlzcGxheTogZmxleDsKLSAgICBmbGV4LWRpcmVj
dGlvbjogcm93OwotICB9Ci0KLSAgLmNvbC0xIHsKLSAgICB3aWR0aDogOC4zMyU7Ci0gIH0KLQot
ICAuY29sLTIgewotICAgIHdpZHRoOiAxNi42NiU7Ci0gIH0KLQotICAuY29sLTMgewotICAgIHdp
ZHRoOiAyNSU7Ci0gIH0KLQotICAuY29sLTQgewotICAgIHdpZHRoOiAzMy4zMyU7Ci0gIH0KLQot
ICAuY29sLTUgewotICAgIHdpZHRoOiA0MS42NiU7Ci0gIH0KLQotICAuY29sLTYgewotICAgIHdp
ZHRoOiA1MCU7Ci0gIH0KLQotICAuY29sLTcgewotICAgIHdpZHRoOiA1OC4zMyU7Ci0gIH0KLQot
ICAuY29sLTggewotICAgIHdpZHRoOiA2Ni42NiU7Ci0gIH0KLQotICAuY29sLTkgewotICAgIHdp
ZHRoOiA3NSU7Ci0gIH0KLQotICAuY29sLTEwIHsKLSAgICB3aWR0aDogODMuMzMlOwotICB9Ci0K
LSAgLmNvbC0xMSB7Ci0gICAgd2lkdGg6IDkxLjY2JTsKLSAgfQotCi0gIC5jb2wtMTIgewotICAg
IHdpZHRoOiAxMDAlOwotICB9Ci19Ci0KLS5oaWRlLWZvci14cyB7Ci0gIGRpc3BsYXk6IG5vbmU7
Ci19Ci0KLS5oaWRlLWZvci1zIHsKLSAgZGlzcGxheTogbm9uZTsKLX0KLQotQG1lZGlhIHNjcmVl
biBhbmQgKG1pbi13aWR0aDogNjAwcHgpIHsKLSAgLmhpZGUtZm9yLXhzIHsKLSAgICBkaXNwbGF5
OiBibG9jazsKLSAgfQotCi0gIC5oaWRlLWZvci1zIHsKLSAgICBkaXNwbGF5OiBub25lOwotICB9
Ci19Ci0KLS8qIHRleHQgKi8KLS50ZXh0LCBib2R5LCBkaXYsIHAsIHNwYW4sIGxpLCBhLCBoNCB7
Ci0gIGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBzeXN0ZW0sIEhlbHZldGljYU5ldWUsIEx1
Y2lkYUdyYW5kZTsKLSAgZm9udC1zaXplOiB2YXIoLS1zbWFsbFNpemUpOwotICBmb250LXdlaWdo
dDogdmFyKC0tZm9udFdlaWdodCk7Ci0gIGZvbnQtc3RyZXRjaDogbm9ybWFsOwotICBmb250LXN0
eWxlOiBub3JtYWw7Ci0gIGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7Ci0gIGxpbmUtaGVpZ2h0
OiAxLjM7Ci19Ci0KLXhtcCB7Ci0gIG1hcmdpbjogMDsKLSAgcGFkZGluZzogMDsKLSAgZm9udC1m
YW1pbHk6IE1lbmxvLCBNb25hY28sIENvbnNvbGFzLCAiQ291cmllciBOZXciLCBtb25vc3BhY2U7
Ci19Ci0KLXByZSB7Ci0gIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRlckNvbG9ySW5saW5l
RWxlbWVudCk7Ci0gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWdyZXlMaWdodGVzdCk7Ci0gIGZv
bnQtc2l6ZTogY2FsYyh2YXIoLS10aW55U2l6ZSkgKyAxcHgpOwotICBmb250LWZhbWlseTogTWVu
bG8sIE1vbmFjbywgQ29uc29sYXMsICJDb3VyaWVyIE5ldyIsIG1vbm9zcGFjZTsKLSAgcGFkZGlu
ZzogMTBweDsKLSAgbWFyZ2luOiAwOwotICBjb2xvcjogdmFyKC0tZ3JleURhcmtlcik7Ci0gIG92
ZXJmbG93OiBhdXRvOwotfQotCi1AbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSB7
Ci0gIHByZSB7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYmxhY2spOwotICAgIGNvbG9y
OiB2YXIoLS1ncmV5RGFyayk7Ci0gIH0KLX0KLQotLnRleHQudGlueSwgaDUsIC50ZXh0LnRpbnkg
ICogewotICBmb250LXNpemU6IHZhcigtLXRpbnlTaXplKTsKLX0KLQotLnRleHQubWVkaXVtLCBo
MywgLnRleHQubWVkaXVtICAqIHsKLSAgZm9udC1zaXplOiB2YXIoLS1tZWRpdW1TaXplKTsKLX0K
LQotLnRleHQubGFyZ2UsIGgyLCAudGV4dC5sYXJnZSAgKiB7Ci0gIGZvbnQtc2l6ZTogdmFyKC0t
bGFyZ2VTaXplKTsKLX0KLQotLnRleHQuaHVnZSwgaDEsIC50ZXh0Lmh1Z2UgICogewotICBmb250
LXNpemU6IHZhcigtLWh1Z2VTaXplKTsKLX0KLQotLnRleHQuYmxvY2sgewotICBkaXNwbGF5OiBp
bmxpbmUtYmxvY2s7Ci0gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7Ci0gIGxpbmUtaGVpZ2h0OiAx
LjE7Ci19Ci0KLS50ZXh0LnN1Y2Nlc3MsIC50ZXh0LnN1Y2Nlc3MgKiB7Ci0gIGNvbG9yOiB2YXIo
LS1ncmVlbkRhcmtlcik7Ci19Ci0KLS50ZXh0LmZhaWxlZCwgLnRleHQuZmFpbGVkICogewotICBj
b2xvcjogdmFyKC0tcmVkRGFya2VyKTsKLX0KLQotLnRleHQuZXJyb3IsIC50ZXh0LmVycm9yICog
ewotICBjb2xvcjogdmFyKC0tb3JhbmdlRGFya2VyKTsKLX0KLQotCi0vKiB0YWJsZSAqLwotLnRh
YmxlIHsKLSAgcGFkZGluZzogMDsKLSAgLXdlYmtpdC1ib3JkZXItaG9yaXpvbnRhbC1zcGFjaW5n
OiAwcHg7Ci0gIC13ZWJraXQtYm9yZGVyLXZlcnRpY2FsLXNwYWNpbmc6IDBweDsKLSAgbWFyZ2lu
OiAxMnB4IDA7Ci19Ci0KLS50YWJsZS5mdWxsLXdpZHRoIHsKLSAgd2lkdGg6IDEwMCU7Ci0gIG92
ZXJmbG93OiBhdXRvOwotfQotCi0udGFibGUuc3RyaXBwZWQ+dGJvZHk+dHI6bnRoLWNoaWxkKG9k
ZCkgewotICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1ncmV5TGlnaHRlc3QpOwotfQotCi1AbWVk
aWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSB7Ci0gIC50YWJsZS5zdHJpcHBlZD50Ym9k
eT50cjpudGgtY2hpbGQob2RkKSB7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYmxhY2sp
OwotICB9Ci19Ci0KLS50YWJsZT50aGVhZD50ciB7Ci0gIHBhZGRpbmc6IDA7Ci19Ci0KLS50YWJs
ZT50aGVhZD50cj50aCB7Ci0gIHBhZGRpbmc6IDEycHg7Ci0gIGJvcmRlci1ib3R0b206IDFweCBz
b2xpZDsKLSAgYm9yZGVyLWNvbG9yOiB2YXIoLS1ib3JkZXJDb2xvcklubGluZUVsZW1lbnQpOwot
ICBsaW5lLWhlaWdodDogMTsKLSAgZm9udC13ZWlnaHQ6IDEwMDsKLSAgdGV4dC1hbGlnbjogbGVm
dDsKLX0KLQotLnRhYmxlPnRib2R5PnRyPnRkIHsKLSAgbGluZS1oZWlnaHQ6IDE7Ci19Ci0KLS50
YWJsZT50Ym9keT50cj50ZCB7Ci0gIHBhZGRpbmc6IDEycHg7Ci19Ci0KLS8qIERvdCAqLwotLmRv
dCB7Ci0gIGRpc3BsYXk6IGlubGluZS1ibG9jazsKLSAgZm9udC1zaXplOiB2YXIoLS10aW55U2l6
ZSk7Ci0gIHdpZHRoOiB2YXIoLS1tZWRpdW1TaXplKTsKLSAgaGVpZ2h0OiB2YXIoLS1tZWRpdW1T
aXplKTsKLSAgYm9yZGVyLXJhZGl1czogdmFyKC0tbWVkaXVtU2l6ZSk7Ci0gIHZlcnRpY2FsLWFs
aWduOiBtaWRkbGU7Ci0gIHRleHQtYWxpZ246IGNlbnRlcjsKLSAgcGFkZGluZzogMDsKLSAgbWFy
Z2luOiAwIDhweDsKLSAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZ3JleURhcmspOwotICBwb3Np
dGlvbjogcmVsYXRpdmU7Ci19Ci0KLS5kb3QuYmxpbmsgewotICAtd2Via2l0LWFuaW1hdGlvbjog
YmxpbmstYmFja2dyb3VuZCAxcyBpbmZpbml0ZTsKLSAgLyogU2FmYXJpIDQrICovCi0gIC1tb3ot
YW5pbWF0aW9uOiBibGluay1iYWNrZ3JvdW5kIDFzIGluZmluaXRlOwotICAvKiBGeCA1KyAqLwot
ICAtby1hbmltYXRpb246IGJsaW5rLWJhY2tncm91bmQgMXMgaW5maW5pdGU7Ci0gIC8qIE9wZXJh
IDEyKyAqLwotICBhbmltYXRpb246IGJsaW5rLWJhY2tncm91bmQgMXMgaW5maW5pdGU7Ci0gIC8q
IElFIDEwKywgRnggMjkrICovOwotfQotCi0uZG90ICogewotICBjb2xvcjogdmFyKC0tZ3JleUxp
Z2h0ZXN0KTsKLSAgbGluZS1oZWlnaHQ6IDE7Ci19Ci0KLS5kb3QgaW1nLCAuZG90IC50ZXh0IHsK
LSAgdXNlci1zZWxlY3Q6IG5vbmU7Ci0gIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7Ci0gIC13
ZWJraXQtdG91Y2gtY2FsbG91dDogbm9uZTsKLSAgY3Vyc29yOiBkZWZhdWx0OwotICBwYWRkaW5n
OiAwOwotICBtYXJnaW46IDA7Ci0gIHRleHQtYWxpZ246IGNlbnRlcjsKLSAgdmVydGljYWwtYWxp
Z246IG1pZGRsZTsKLSAgZm9udC13ZWlnaHQ6IDQwMDsKLSAgd2lkdGg6IHZhcigtLXNtYWxsU2l6
ZSk7Ci0gIGhlaWdodDogdmFyKC0tc21hbGxTaXplKTsKLSAgZm9udC1zaXplOiB2YXIoLS1zbWFs
bFNpemUpOwotICBkaXNwbGF5OiBibG9jazsKLX0KLQotLmRvdD5pbWcsIC5kb3Q+LnRleHR7Ci0g
IHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgdG9wOiBjYWxjKCh2YXIoLS1tZWRpdW1TaXplKSAtIHZh
cigtLXNtYWxsU2l6ZSkpIC8gMik7Ci0gIGxlZnQ6IGNhbGMoKHZhcigtLW1lZGl1bVNpemUpIC0g
dmFyKC0tc21hbGxTaXplKSkgLyAyKTsKLX0KLQotLmRvdC50aW55IHsKLSAgZm9udC1zaXplOiBj
YWxjKHZhcigtLXRpbnlTaXplKSAtIDJweCk7Ci0gIHdpZHRoOiB2YXIoLS10aW55U2l6ZSk7Ci0g
IGhlaWdodDogdmFyKC0tdGlueVNpemUpOwotICBib3JkZXItcmFkaXVzOiB2YXIoLS10aW55U2l6
ZSk7Ci19Ci0KLS5kb3Quc21hbGwgewotICBmb250LXNpemU6IHZhcigtLXRpbnlTaXplKTsKLSAg
d2lkdGg6IHZhcigtLXNtYWxsU2l6ZSk7Ci0gIGhlaWdodDogdmFyKC0tc21hbGxTaXplKTsKLSAg
Ym9yZGVyLXJhZGl1czogdmFyKC0tc21hbGxTaXplKTsKLX0KLQotLmRvdC5zbWFsbCBpbWcsIC5k
b3Quc21hbGwgLnRleHQgewotICB3aWR0aDogdmFyKC0tdGlueVNpemUpOwotICBoZWlnaHQ6IHZh
cigtLXRpbnlTaXplKTsKLSAgZm9udC1zaXplOiB2YXIoLS10aW55U2l6ZSk7Ci19IAotCi0gLmRv
dC5zbWFsbD5pbWcsIC5kb3Quc21hbGw+LnRleHQgewotICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0g
IHRvcDogY2FsYygodmFyKC0tc21hbGxTaXplKSAtIHZhcigtLXRpbnlTaXplKSkgLyAyKTsKLSAg
bGVmdDogY2FsYygodmFyKC0tc21hbGxTaXplKSAtIHZhcigtLXRpbnlTaXplKSkgLyAyKTsKLX0K
LQotLmRvdC5tZWRpdW0gewotICBmb250LXNpemU6IHZhcigtLXNtYWxsU2l6ZSkKLSAgd2lkdGg6
IHZhcigtLW1lZGl1bVNpemUpOwotICBoZWlnaHQ6IHZhcigtLW1lZGl1bVNpemUpOwotICBib3Jk
ZXItcmFkaXVzOiB2YXIoLS1tZWRpdW1TaXplKTsKLX0KLQotLmRvdC5tZWRpdW0gaW1nLCAuZG90
Lm1lZGl1bSAudGV4dHsKLSAgd2lkdGg6IHZhcigtLXNtYWxsU2l6ZSk7Ci0gIGhlaWdodDogdmFy
KC0tc21hbGxTaXplKTsKLSAgZm9udC1zaXplOiB2YXIoLS1zbWFsbFNpemUpCi19Ci0KLS5kb3Qu
bWVkaXVtPmltZywgLmRvdC5tZWRpdW0+LnRleHR7Ci0gIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAg
dG9wOiBjYWxjKCh2YXIoLS1tZWRpdW1TaXplKSAtIHZhcigtLXNtYWxsU2l6ZSkpIC8gMik7Ci0g
IGxlZnQ6IGNhbGMoKHZhcigtLW1lZGl1bVNpemUpIC0gdmFyKC0tc21hbGxTaXplKSkgLyAyKTsK
LX0KLQotLmRvdC5sYXJnZSB7Ci0gIGZvbnQtc2l6ZTogdmFyKC0tbWVkaXVtU2l6ZSk7Ci0gIHdp
ZHRoOiB2YXIoLS1sYXJnZVNpemUpOwotICBoZWlnaHQ6IHZhcigtLWxhcmdlU2l6ZSk7Ci0gIGJv
cmRlci1yYWRpdXM6IHZhcigtLWxhcmdlU2l6ZSk7Ci19Ci0KLS5kb3QubGFyZ2UgaW1nLCAuZG90
LmxhcmdlIC50ZXh0ewotICB3aWR0aDogdmFyKC0tbWVkaXVtU2l6ZSk7Ci0gIGhlaWdodDogdmFy
KC0tbWVkaXVtU2l6ZSk7Ci0gIGZvbnQtc2l6ZTogdmFyKC0tbWVkaXVtU2l6ZSk7Ci19Ci0KLS5k
b3QubGFyZ2U+aW1nLCAuZG90LmxhcmdlPi50ZXh0ewotICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0g
IHRvcDogY2FsYygodmFyKC0tbGFyZ2VTaXplKSAtIHZhcigtLW1lZGl1bVNpemUpKSAvIDIpOwot
ICBsZWZ0OiBjYWxjKCh2YXIoLS1sYXJnZVNpemUpIC0gdmFyKC0tbWVkaXVtU2l6ZSkpIC8gMik7
Ci19Ci0KLS5kb3Quc3VjY2VzcyB7Ci0gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWdyZWVuTGln
aHQpOwotfQotCi0uZG90LmZhaWxlZCB7Ci0gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXJlZExp
Z2h0KTsKLX0KLQotLmRvdC5lcnJvciB7Ci0gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW9yYW5n
ZUxpZ2h0KTsKLX0KLQotLmRvdC5jbGlja2FibGUgewotICBjdXJzb3I6IHBvaW50ZXI7Ci0gIGJv
cmRlcjogMXB4IHNvbGlkIHZhcigtLWdyZXlEYXJrKTsKLX0KLQotLmRvdC5jbGlja2FibGU6aG92
ZXIgewotICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ncmV5RGFya2VyKTsKLX0KLQotLmRvdC5j
bGlja2FibGU6Zm9jdXMtd2l0aGluIHsKLSAgYm9yZGVyOiBub25lOwotICBiYWNrZ3JvdW5kLWNv
bG9yOiB2YXIoLS1ncmV5RGFya2VyKTsKLX0KLQotLmRvdC5jbGlja2FibGUuc3VjY2VzcyB7Ci0g
IGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWdyZWVuTGlnaHQpOwotfQotCi0uZG90LmNsaWNrYWJs
ZS5zdWNjZXNzOmhvdmVyIHsKLSAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tZ3JlZW5EYXJrKTsK
LX0KLQotLmRvdC5jbGlja2FibGUuc3VjY2Vzczpmb2N1cy13aXRoaW4gewotICBib3JkZXI6IG5v
bmU7Ci0gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWdyZWVuRGFyayk7Ci19Ci0KLS5kb3QuY2xp
Y2thYmxlLmVycm9yIHsKLSAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tb3JhbmdlTGlnaHQpOwot
fQotCi0uZG90LmNsaWNrYWJsZS5lcnJvcjpob3ZlciB7Ci0gIGJvcmRlcjogMXB4IHNvbGlkIHZh
cigtLW9yYW5nZURhcmspOwotfQotCi0uZG90LmNsaWNrYWJsZS5lcnJvcjpmb2N1cy13aXRoaW4g
ewotICBib3JkZXI6IG5vbmU7Ci0gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW9yYW5nZURhcmsp
OwotfQotCi0uZG90LmNsaWNrYWJsZS5mYWlsZWQgewotICBib3JkZXI6IDFweCBzb2xpZCB2YXIo
LS1yZWRMaWdodCk7Ci19Ci0KLS5kb3QuY2xpY2thYmxlLmZhaWxlZDpob3ZlciB7Ci0gIGJvcmRl
cjogMXB4IHNvbGlkIHZhcigtLXJlZERhcmspOwotfQotCi0uZG90LmNsaWNrYWJsZS5mYWlsZWQ6
Zm9jdXMtd2l0aGluIHsKLSAgYm9yZGVyOiBub25lOwotICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIo
LS1yZWREYXJrKTsKLX0KLQotLmRvdC5zZWxlY3RvciB7Ci0gIGRpc3BsYXk6IGZsZXg7Ci0gIGZs
ZXgtZGlyZWN0aW9uOiBjb2x1bW47Ci0gIGJvcmRlci1yYWRpdXM6IDA7Ci0gIGJhY2tncm91bmQ6
IG5vbmU7Ci0gIGJvcmRlcjogbm9uZTsKLSAgd2lkdGg6IGF1dG87Ci0gIGhlaWdodDogYXV0bzsK
LSAgbWFyZ2luOiBhdXRvOwotfQotCi0uZG90LnNlbGVjdG9yIGlucHV0IHsKLSAgb3BhY2l0eTog
MDsKLSAgd2lkdGg6IDA7Ci0gIGhlaWdodDogMDsKLSAgbWFyZ2luOiAwOwotICBwYWRkaW5nOiAw
OwotICBib3JkZXI6IG5vbmU7Ci19Ci0KLS5kb3Quc2VsZWN0b3IgbGFiZWwgewotICBtYXJnaW46
IDBweDsKLSAgcGFkZGluZzogMnB4OwotICBkaXNwbGF5OiBmbGV4OwotfQotCi0uZG90LnNlbGVj
dG9yIC5kb3QgewotICBtYXJnaW46IDBweDsKLSAgcGFkZGluZzogMHB4OwotfQotCi0uZG90LnNl
bGVjdG9yIGlucHV0OmNoZWNrZWQgKyAuZG90IHsKLSAgYm94LXNoYWRvdzogMHB4IDBweCA1cHgg
MXB4IHZhcigtLWdyZXkpOwotfQotCi0uZG90LnNlbGVjdG9yIGlucHV0OmNoZWNrZWQgKyAuZG90
LnN1Y2Nlc3MgewotICBib3gtc2hhZG93OiAwcHggMHB4IDVweCAxcHggdmFyKC0tZ3JlZW5MaWdo
dCk7Ci19Ci0KLS5kb3Quc2VsZWN0b3IgaW5wdXQ6Y2hlY2tlZCArIC5kb3QuZmFpbGVkIHsKLSAg
Ym94LXNoYWRvdzogMHB4IDBweCA1cHggMXB4IHZhcigtLXJlZExpZ2h0KTsKLX0KLQotLmRvdC5z
ZWxlY3RvciBpbnB1dDpjaGVja2VkICsgLmRvdC5lcnJvciB7Ci0gIGJveC1zaGFkb3c6IDBweCAw
cHggNXB4IDFweCB2YXIoLS1vcmFuZ2VMaWdodCk7Ci19Ci0KLS8qIGljb24gKi8KLS5pY29uIHsK
LSAgZGlzcGxheTogaW5saW5lLWJsb2NrOwotICB3aWR0aDogdmFyKC0tbWVkaXVtU2l6ZSk7Ci0g
IGhlaWdodDogdmFyKC0tbWVkaXVtU2l6ZSk7Ci0gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7Ci19
Ci0KLS5pY29uLnRpbnkgewotICB3aWR0aDogdmFyKC0tdGlueVNpemUpOwotICBoZWlnaHQ6IHZh
cigtLXRpbnlTaXplKTsKLX0KLQotLmljb24uc21hbGwgewotICB3aWR0aDogdmFyKC0tc21hbGxT
aXplKTsKLSAgaGVpZ2h0OiB2YXIoLS1zbWFsbFNpemUpOwotfQotCi0uaWNvbi5sYXJnZSB7Ci0g
IHdpZHRoOiB2YXIoLS1sYXJnZVNpemUpOwotICBoZWlnaHQ6IHZhcigtLWxhcmdlU2l6ZSk7Ci19
Ci0KLS5pY29uLmh1Z2UgewotICB3aWR0aDogdmFyKC0taHVnZVNpemUpOwotICBoZWlnaHQ6IHZh
cigtLWh1Z2VTaXplKTsKLX0KLQotLyogc2VjdGlvbiAqLwotLnNlY3Rpb24gewotICBkaXNwbGF5
OiBibG9jazsKLSAgYm9yZGVyOiAxcHg7Ci0gIGJvcmRlci1zdHlsZTogc29saWQ7Ci0gIGJvcmRl
ci1jb2xvcjogdmFyKC0tYm9yZGVyQ29sb3JTZWN0aW9uKTsKLSAgYm9yZGVyLXJhZGl1czogMTFw
eDsKLSAgbWFyZ2luLWJvdHRvbTogMTVweDsKLSAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0td2hp
dGUpOwotfQotCi1AbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSB7Ci0gIC5zZWN0
aW9uIC5zZWN0aW9uIHsKLSAgICBib3JkZXItY29sb3I6IHZhcigtLWdyZXlEYXJrZXIpOwotICB9
Ci19Ci0KLUBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIHsKLSAgLnNlY3Rpb24g
ewotICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJsYWNrRGFyayk7Ci0gIH0KLX0KLQotLnNl
Y3Rpb24uYXJ0aWNsZSB7Ci0gIGJvcmRlcjogbm9uZTsKLSAgbWFyZ2luLWJvdHRvbTogMDsKLX0K
LQotLnNlY3Rpb24+LmhlYWRlciB7Ci0gIGRpc3BsYXk6IGZsZXg7Ci0gIGZsZXgtZGlyZWN0aW9u
OiBjb2x1bW47Ci0gIGJvcmRlcjogbm9uZTsKLSAgbWFyZ2luLWJvdHRvbTogMHB4OwotfQotCi0u
c2VjdGlvbj4uaGVhZGVyPi50aXRsZSB7Ci0gIHBhZGRpbmc6IHZhcigtLXNlY3Rpb25QYWRkaW5n
U2l6ZSk7Ci0gIGZvbnQtc2l6ZTogdmFyKC0tbWVkaXVtU2l6ZSk7Ci0gIGZsZXg6IGF1dG87Ci0g
IHBhZGRpbmctYm90dG9tOiAwOwotfQotCi0uc2VjdGlvbj4uaGVhZGVyPi50aXRsZS5zbWFsbCB7
Ci0gIGZvbnQtc2l6ZTogdmFyKC0tc21hbGxTaXplKTsKLX0KLQotLnNlY3Rpb24+LmNvbnRlbnQg
ewotICBwYWRkaW5nOiB2YXIoLS1zZWN0aW9uUGFkZGluZ1NpemUpOwotfQotCi0uc2VjdGlvbj4u
Y29udGVudD4ubGlzdCB7Ci0gIHdpZHRoOiAxMDAlOwotfQotCi0uc2VjdGlvbj4uYWN0aW9ucyB7
Ci0gIHBhZGRpbmc6IHZhcigtLXNlY3Rpb25QYWRkaW5nU2l6ZSk7Ci0gIHBhZGRpbmctdG9wOiAw
OwotICB3aWR0aDogMTAwJTsKLX0KLQotQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjAw
cHgpIHsKLSAgLnNlY3Rpb24+LmhlYWRlciB7Ci0gICAgZmxleC1kaXJlY3Rpb246IHJvdzsKLSAg
fQotfQotCi0vKiBsaXN0ICovCi0ubGlzdCB7Ci0gIC8qYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZh
cigtLWJvcmRlckNvbG9yU2VjdGlvbik7Ki87Ci19Ci0KLS5saXN0Pi5pdGVtIHsKLSAgLypib3Jk
ZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tYm9yZGVyQ29sb3JTZWN0aW9uKTsqLwotICBwYWRk
aW5nOiB2YXIoLS1jb2xQYWRkaW5nU2l6ZSk7Ci19Ci0KLS5saXN0Pi5pdGVtLnN1YiB7Ci0gIGNv
bG9yOiB2YXIoLS1ncmV5RGFya2VyKTsKLSAgZm9udC1zaXplOiBjYWxjKHZhcigtLXNtYWxsU2l6
ZSkgLSAycHgpOwotfQotCi0ubGlzdD4uaXRlbT4ubGlzdCB7Ci0gIHBhZGRpbmctbGVmdDogdmFy
KC0tY29sUGFkZGluZ1NpemUpOwotfQotCi0vKiBzaWRlYmFyICovCi0uc2lkZWJhciB7Ci0gIGRp
c3BsYXk6IG5vbmU7Ci0gIGhlaWdodDogMTAwJTsKLSAgbWFyZ2luOiAwOwotICBwYWRkaW5nOiAw
OwotICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1ibHVyQmFja2dyb3VuZENvbG9yKTsKLSAgcG9z
aXRpb246IGZpeGVkOwotICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXJDb2xv
clNlY3Rpb24pOwotICBvdmVyZmxvdy15OiBhdXRvOwotICBtaW4td2lkdGg6IDI1MHB4OwotICBi
YWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1ibHVyQmFja2dyb3VuZENvbG9yKTsKLSAgLXdlYmtpdC1i
YWNrZHJvcC1maWx0ZXI6IGJsdXIoNXB4KSBicmlnaHRuZXNzKDg4JSk7Ci0gIGJhY2tkcm9wLWZp
bHRlcjogYmx1cig1cHgpIGJyaWdodG5lc3MoODglKTsKLSAgei1pbmRleDogdmFyKC0tbWlkZGxl
WkluZGV4KTsKLSAgcmlnaHQ6IDA7Ci19Ci0uc2lkZWJhci5oaWRkZW4gewotICBkaXNwbGF5OiBu
b25lOwotfQotCi0uc2lkZWJhcj4uaGVhZGVyIHsKLSAgbWFyZ2luLWJvdHRvbTogMDsKLSAgYmFj
a2dyb3VuZC1jb2xvcjogdmFyKC0td2hpdGUpOwotICBib3JkZXI6IG5vbmU7Ci0gIGJvcmRlci1i
b3R0b206IDFweCBzb2xpZCB2YXIoLS1ib3JkZXJDb2xvclNlY3Rpb24pOwotfQotCi0uc2lkZWJh
cj4uaGVhZGVyPi50aXRsZSB7Ci0gIHBhZGRpbmctbGVmdDogdmFyKC0tY29sUGFkZGluZ1NpemUp
OwotfQotCi1AbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSB7Ci0gIC5zaWRlYmFy
IHsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1ibHVyQmFja2dyb3VuZENvbG9yRGFyayk7
Ci0gIH0KLQotICAuc2lkZWJhcj4uaGVhZGVyIHsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIo
LS1ibGFjayk7Ci0gIH0KLX0KLQotLnNpZGViYXIudW5kZXItdG9wYmFyIHsKLSAgaGVpZ2h0OiBj
YWxjKDEwMCUgLSAxMnB4ICogMiAgLSB2YXIoLS1sYXJnZVNpemUpICogMS4zKTsKLX0KLQotLnNp
ZGViYXIudW5kZXItdG9wYmFyLXdpdGgtYWN0aW9ucyB7Ci0gIGhlaWdodDogY2FsYygxMDAlIC0g
MTJweCAqIDIgIC0gdmFyKC0tbGFyZ2VTaXplKSAqIDEuMyAtIHZhcigtLXNtYWxsU2l6ZSkgKiAx
LjMgLSAxMnB4ICogMiApOwotICBib3R0b206IDA7Ci19Ci0KLS5tYWluIHsKLSAgbWFyZ2luOiBh
dXRvOwotICBoZWlnaHQ6IDEwMCU7Ci0gIG92ZXJmbG93OiBhdXRvOwotfQotCi0ubWFpbi51bmRl
ci10b3BiYXItd2l0aC1hY3Rpb25zIHsKLSAgbWFyZ2luLXRvcDogY2FsYygxMnB4ICogMiAgKyB2
YXIoLS1sYXJnZVNpemUpICogMS4zICsgdmFyKC0tc21hbGxTaXplKSAqIDEuMyArIDEycHggKiAy
KTsKLX0KLQotLnNpZGViYXIucmlnaHQgewotICBsZWZ0OiB1bnNldDsKLSAgcmlnaHQ6IDA7Ci19
Ci0KLS5zaWRlYmFyPi5saXN0IHsKLSAgd2lkdGg6IDEwMCU7Ci19Ci0KLS5zaWRlYmFyLmNvbnRl
bnQgewotICB3aWR0aDogMTAwJTsKLX0KLQotLnNpZGViYXIudG9nZ2xlIHsKLSAgZGlzcGxheTog
YmxvY2s7Ci19Ci0KLS5zaWRlYmFyPi5ib3R0b20tbmF2IHsKLSAgcG9zaXRpb246IGFic29sdXRl
OwotfQotCi0vKiBib3R0b20gbmF2Ki8KLS5ib3R0b20tbmF2IHsKLSAgZGlzcGxheTogZmxleDsK
LSAgZmxleC1kaXJlY3Rpb246IHJvdzsKLSAgYmFja2dyb3VuZDogdmFyKC0tZ3JleUxpZ2h0KTsK
LX0KLQotLmJvdHRvbS1uYXY+Lml0ZW0gewotICBhbGlnbi1zZWxmOiBjZW50ZXI7Ci19Ci0KLS8q
Y2hpcCovCi0uY2hpcCB7Ci0gIGRpc3BsYXk6IGlubGluZS1ibG9jazsKLSAgcGFkZGluZzogNHB4
IDEycHg7Ci0gIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRlckNvbG9ySW5saW5lRWxlbWVu
dCk7Ci0gIGJvcmRlci1yYWRpdXM6IDUwcHg7Ci0gIG1hcmdpbjogNXB4OwotICBmb250LXNpemU6
IHZhcigtLXRpbnlTaXplKTsKLX0KLQotLmNoaXAgLmRvdCB7Ci0gIG1hcmdpbi1sZWZ0OiAwOwot
fQotCi0uY2hpcCAgKiB7Ci0gIGZvbnQtc2l6ZTogdmFyKC0tdGlueVNpemUpOwotfQotCi0uY2hp
cC5vdXRsaW5lIHsKLSAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYm9yZGVyQ29sb3JIYXJkKTsK
LX0KLQotLmNoaXAubmFycm93IHsKLSAgcGFkZGluZzogMXB4IDhweDsKLSAgbWFyZ2luOiAxcHg7
Ci19Ci0KLS5jaGlwLm5hcnJvdyAqIHsKLSAgZm9udC1zaXplOiBjYWxjKHZhcigtLXRpbnlTaXpl
KSAtIDRweCk7Ci19Ci0KLS5jaGlwLnN1Y2Nlc3MsIC5jaGlwLnN1Y2Nlc3MgKiB7Ci0gIGNvbG9y
OiB2YXIoLS1ncmVlbkRhcmtlcik7Ci0gIGJvcmRlci1jb2xvcjogdmFyKC0tZ3JlZW5EYXJrZXIp
OwotfQotCi0uY2hpcC5mYWlsZWQsIC5jaGlwLmZhaWxlZCAqIHsKLSAgY29sb3I6IHZhcigtLXJl
ZERhcmtlcik7Ci0gIGJvcmRlci1jb2xvcjogdmFyKC0tcmVkRGFya2VyKTsKLX0KLQotLmNoaXAu
ZXJyb3IsIC5jaGlwLmVycm9yICogewotICBjb2xvcjogdmFyKC0tb3JhbmdlRGFya2VyKTsKLSAg
Ym9yZGVyLWNvbG9yOiB2YXIoLS1vcmFuZ2VEYXJrZXIpOwotfQotCi0vKmJhZGdlKi8KLS5iYWRn
ZSB7Ci0gIGRpc3BsYXk6IGlubGluZS1ibG9jazsKLSAgcGFkZGluZzogNHB4IDEycHg7Ci0gIGJv
cmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRlckNvbG9ySW5saW5lRWxlbWVudCk7Ci0gIG1hcmdp
bjogNXB4OwotfQotCi0uYmFkZ2Uub3V0bGluZSB7Ci0gIGJvcmRlci1jb2xvcjogdmFyKC0tYm9y
ZGVyQ29sb3JIYXJkKTsKLX0KLQotLmJhZGdlLmFjdGl2ZSB7Ci0gIGJvcmRlci1jb2xvcjogdmFy
KC0tYmx1ZSk7Ci19Ci0KLS5iYWRnZS5vdXRsaW5lLmFjdGl2ZSB7Ci0gIGJvcmRlci1jb2xvcjog
dmFyKC0tYmx1ZURhcmtlcik7Ci19Ci0KLS5iYWRnZVtvbmNsaWNrXSB7Ci0gIGN1cnNvcjogcG9p
bnRlcjsKLX0KLQotLmJhZGdlLmNsaWNrYWJsZSB7Ci0gIGN1cnNvcjogcG9pbnRlcjsKLX0KLQot
LmJhZGdlLmNsaWNrYWJsZTpob3ZlciB7Ci0gIGJvcmRlci1jb2xvcjogdmFyKC0tYmx1ZUxpZ2h0
ZXIpOwotfQotCi0KLS8qcGxhY2Vob2xkZXIqLwotLnBsYWNlaG9sZGVyIHsKLSAgd2lkdGg6IDEw
MCU7Ci0gIG1pbi1oZWlnaHQ6IDIwMHB4OwotICB0ZXh0LWFsaWduOiBjZW50ZXI7Ci0gIGRpc3Bs
YXk6IGZsZXg7Ci19Ci0KLS5wbGFjZWhvbGRlciAubG9hZGVyIHsKLSAgYWxpZ24tc2VsZjogY2Vu
dGVyOwotICBtYXJnaW46IGF1dG87Ci19Ci0KLS5wbGFjZWhvbGRlci5kaW1tZXIgewotICBiYWNr
Z3JvdW5kOiB2YXIoLS1ncmV5TGlnaHRlcik7Ci19Ci0KLUBtZWRpYSAocHJlZmVycy1jb2xvci1z
Y2hlbWU6IGRhcmspIHsKLSAgLnBsYWNlaG9sZGVyLmRpbW1lciB7Ci0gICAgYmFja2dyb3VuZC1j
b2xvcjogdmFyKC0tYmxhY2tEYXJrZXIpOwotICB9Ci19Ci0KLS5wbGFjZWhvbGRlci5zbWFsbCB7
Ci0gIG1pbi1oZWlnaHQ6IDEwMHB4OwotfQotCi0ucGxhY2Vob2xkZXIudGlueSB7Ci0gIG1pbi1o
ZWlnaHQ6IDUwcHg7Ci19Ci0KLS8qbG9hZGVyKi8KLS5sb2FkZXIgewotICB0ZXh0LWFsaWduOiBj
ZW50ZXI7Ci19Ci0KLS5sb2FkZXI+LnRleHQgewotICB0ZXh0LWFsaWduOiBjZW50ZXI7Ci19Ci0K
LS5zcGlubmVyIHsKLSAgd2lkdGg6IHZhcigtLW1lZGl1bVNpemUpOwotICBoZWlnaHQ6IHZhcigt
LW1lZGl1bVNpemUpOwotICBib3JkZXI6IDRweCBzb2xpZCB2YXIoLS1ncmV5TGlnaHQpOwotICBi
b3JkZXItdG9wOiA0cHggc29saWQgdmFyKC0tYmxhY2spOwotICBib3JkZXItcmFkaXVzOiA1MCU7
Ci0gIGFuaW1hdGlvbjogc3BpbiAuNXMgbGluZWFyIGluZmluaXRlOwotICBkaXNwbGF5OiBpbmxp
bmUtYmxvY2s7Ci19Ci0KLS5zcGlubmVyLnRpbnkgewotICB3aWR0aDogdmFyKC0tdGlueVNpemUp
OwotICBoZWlnaHQ6IHZhcigtLXRpbnlTaXplKTsKLX0KLQotLnNwaW5uZXIuc21hbGwgewotICB3
aWR0aDogdmFyKC0tc21hbGxTaXplKTsKLSAgaGVpZ2h0OiB2YXIoLS1zbWFsbFNpemUpOwotfQot
Ci0uc3Bpbm5lci5sYXJnZSB7Ci0gIHdpZHRoOiB2YXIoLS1sYXJnZVNpemUpOwotICBoZWlnaHQ6
IHZhcigtLWxhcmdlU2l6ZSk7Ci19Ci0KLS5zcGlubmVyLmh1Z2UgewotICB3aWR0aDogdmFyKC0t
aHVnZVNpemUpOwotICBoZWlnaHQ6IHZhcigtLWh1Z2VTaXplKTsKLX0KLQotLnNwaW5uZXIuYmx1
ZSB7Ci0gIGJvcmRlcjogNHB4IHNvbGlkIHZhcigtLWJsdWVMaWdodGVzdCk7Ci0gIGJvcmRlci10
b3A6IDRweCBzb2xpZCB2YXIoLS1ibHVlKTsKLX0KLQotLnNwaW5uZXIuZ3JlZW4gewotICBib3Jk
ZXI6IDRweCBzb2xpZCB2YXIoLS1ncmVlbkxpZ2h0ZXN0KTsKLSAgYm9yZGVyLXRvcDogNHB4IHNv
bGlkIHZhcigtLWdyZWVuKTsKLX0KLQotLnNwaW5uZXIucmVkIHsKLSAgYm9yZGVyOiA0cHggc29s
aWQgdmFyKC0tcmVkTGlnaHRlc3QpOwotICBib3JkZXItdG9wOiA0cHggc29saWQgdmFyKC0tcmVk
KTsKLX0KLQotLnNwaW5uZXIub3JhbmdlIHsKLSAgYm9yZGVyOiA0cHggc29saWQgdmFyKC0tb3Jh
bmdlTGlnaHRlc3QpOwotICBib3JkZXItdG9wOiA0cHggc29saWQgdmFyKC0tb3JhbmdlKTsKLX0K
LQotLnNwaW5uZXIucHVycGxlIHsKLSAgYm9yZGVyOiA0cHggc29saWQgdmFyKC0tcHVycGxlTGln
aHRlc3QpOwotICBib3JkZXItdG9wOiA0cHggc29saWQgdmFyKC0tcHVycGxlKTsKLX0KLQotCi0v
KmJ1dHRvbiovCi0uYnV0dG9uIHsKLSAgZGlzcGxheTogaW5saW5lLWJsb2NrOwotICBib3JkZXI6
IDFweCBzb2xpZCB2YXIoLS1ncmV5TGlnaHQpOwotICBmb250LXNpemU6IGNhbGModmFyKC0tc21h
bGxTaXplKSAtIDJweCk7Ci0gIGJhY2tncm91bmQ6IG5vbmU7Ci0gIHBhZGRpbmc6IDRweCB2YXIo
LS1mb3JtTGFiZWxQYWRkaW5nKTsKLSAgYm9yZGVyLXJhZGl1czogNHB4OwotICBmb250LXdlaWdo
dDogdmFyKC0tZm9udFdlaWdodCk7Ci0gIHZlcnRpY2FsLWFsaWduOiBib3R0b207Ci19Ci0KLS5i
dXR0b25bZGlzYWJsZWRdIHsKLSAgYm9yZGVyLWNvbG9yOiB2YXIoLS1ncmV5TGlnaHRlc3QpOwot
ICBiYWNrZ3JvdW5kOiB2YXIoLS13aGl0ZSk7Ci0gIGNvbG9yOiB2YXIoLS1ncmV5TGlnaHQpOwot
fQotCi0uYnV0dG9uOmhvdmVyIHsKLSAgYm9yZGVyLWNvbG9yOiB2YXIoLS1ncmV5RGFya2VyKTsK
LX0KLQotLmJ1dHRvbltkaXNhYmxlZF06aG92ZXIgewotICBib3JkZXItY29sb3I6IHZhcigtLWdy
ZXlMaWdodGVzdCk7Ci0gIGJhY2tncm91bmQ6IHZhcigtLXdoaXRlKTsKLSAgY29sb3I6IHZhcigt
LWdyZXlMaWdodCk7Ci19Ci0KLS5idXR0b246YWN0aXZlIHsKLSAgYm9yZGVyLWNvbG9yOiB2YXIo
LS1ncmV5RGFyayk7Ci0gIGJhY2tncm91bmQ6IHZhcigtLWdyZXlMaWdodGVzdCk7Ci0gIGNvbG9y
OiB2YXIoLS1ncmV5RGFyayk7Ci19Ci0KLS5idXR0b25bZGlzYWJsZWRdOmFjdGl2ZSB7Ci0gIGJv
cmRlci1jb2xvcjogdmFyKC0tZ3JleUxpZ2h0ZXN0KTsKLSAgYmFja2dyb3VuZDogdmFyKC0td2hp
dGUpOwotICBjb2xvcjogdmFyKC0tZ3JleUxpZ2h0KTsKLX0KLQotLmJ1dHRvbi5wcmltYXJ5IHsK
LSAgYm9yZGVyLWNvbG9yOiB2YXIoLS1ibHVlRGFyayk7Ci0gIGJhY2tncm91bmQtY29sb3I6IHZh
cigtLWJsdWUpOwotICBjb2xvcjogdmFyKC0td2hpdGUpOwotfQotCi0uYnV0dG9uW2Rpc2FibGVk
XS5wcmltYXJ5IHsKLSAgYm9yZGVyLWNvbG9yOiB2YXIoLS1ibHVlTGlnaHRlc3QpOwotICBiYWNr
Z3JvdW5kLWNvbG9yOiB2YXIoLS1ibHVlTGlnaHRlcik7Ci0gIGNvbG9yOiB2YXIoLS13aGl0ZSk7
Ci19Ci0KLS5idXR0b24ucHJpbWFyeTpob3ZlciB7Ci0gIGJvcmRlci1jb2xvcjogdmFyKC0tYmx1
ZURhcmtlcik7Ci0gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJsdWVMaWdodCk7Ci19Ci0KLS5i
dXR0b25bZGlzYWJsZWRdLnByaW1hcnk6aG92ZXIgewotICBib3JkZXItY29sb3I6IHZhcigtLWJs
dWVMaWdodGVzdCk7Ci0gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJsdWVMaWdodGVyKTsKLSAg
Y29sb3I6IHZhcigtLXdoaXRlKTsKLX0KLQotLmJ1dHRvbi5wcmltYXJ5OmFjdGl2ZSB7Ci0gIGJv
cmRlci1jb2xvcjogdmFyKC0tYmx1ZURhcmtlcik7Ci0gIGJhY2tncm91bmQtY29sb3I6IHZhcigt
LWJsdWVEYXJrKTsKLX0KLQotLmJ1dHRvbltkaXNhYmxlZF0ucHJpbWFyeTphY3RpdmUgewotICBi
b3JkZXItY29sb3I6IHZhcigtLWJsdWVMaWdodGVzdCk7Ci0gIGJhY2tncm91bmQtY29sb3I6IHZh
cigtLWJsdWVMaWdodGVyKTsKLSAgY29sb3I6IHZhcigtLXdoaXRlKTsKLX0KLQotLmJ1dHRvbi5k
YW5nZXIgewotICBib3JkZXItY29sb3I6IHZhcigtLXJlZERhcmspOwotICBiYWNrZ3JvdW5kLWNv
bG9yOiB2YXIoLS1yZWQpOwotICBjb2xvcjogdmFyKC0td2hpdGUpOwotfQotCi0uYnV0dG9uW2Rp
c2FibGVkXS5kYW5nZXIgewotICBib3JkZXItY29sb3I6IHZhcigtLXJlZExpZ2h0ZXN0KTsKLSAg
YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcmVkTGlnaHRlcik7Ci0gIGNvbG9yOiB2YXIoLS13aGl0
ZSk7Ci19Ci0KLS5idXR0b24uZGFuZ2VyOmhvdmVyIHsKLSAgYm9yZGVyLWNvbG9yOiB2YXIoLS1y
ZWREYXJrZXIpOwotICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1yZWRMaWdodCk7Ci19Ci0KLS5i
dXR0b25bZGlzYWJsZWRdLmRhbmdlcjpob3ZlciB7Ci0gIGJvcmRlci1jb2xvcjogdmFyKC0tcmVk
TGlnaHRlc3QpOwotICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1yZWRMaWdodGVyKTsKLSAgY29s
b3I6IHZhcigtLXdoaXRlKTsKLX0KLQotLmJ1dHRvbi5kYW5nZXI6YWN0aXZlIHsKLSAgYm9yZGVy
LWNvbG9yOiB2YXIoLS1yZWREYXJrZXIpOwotICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1yZWRE
YXJrKTsKLX0KLQotLmJ1dHRvbltkaXNhYmxlZF0uZGFuZ2VyOmFjdGl2ZSB7Ci0gIGJvcmRlci1j
b2xvcjogdmFyKC0tcmVkTGlnaHRlc3QpOwotICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1yZWRM
aWdodGVyKTsKLSAgY29sb3I6IHZhcigtLXdoaXRlKTsKLX0KLQotLmJ1dHRvbi50aW55IHsKLSAg
Zm9udC1zaXplOiB2YXIoLS10aW55U2l6ZSk7Ci0gIHBhZGRpbmc6IDNweCA4cHg7Ci19Ci0KLS5i
dXR0b24ubWVkaXVtIHsKLSAgZm9udC1zaXplOiBjYWxjKHZhcigtLW1lZGl1bVNpemUpIC0gMnB4
KTsKLSAgcGFkZGluZzogNXB4IDE3cHg7Ci19Ci0KLS5idXR0b24ubGFyZ2UgewotICBmb250LXNp
emU6IGNhbGModmFyKC0tbGFyZ2VTaXplKSAtIDJweCk7Ci0gIHBhZGRpbmc6IDdweCAxOXB4Owot
fQotCi0uYnV0dG9uLmh1Z2UgewotICBmb250LXNpemU6IGNhbGModmFyKC0taHVnZVNpemUpIC0g
MnB4KTsKLSAgcGFkZGluZzogOXB4IDIxcHg7Ci19Ci0KLUBtZWRpYSAocHJlZmVycy1jb2xvci1z
Y2hlbWU6IGRhcmspIHsKLSAgLmJ1dHRvbiB7Ci0gICAgY29sb3I6IHZhcigtLWdyZXkpOwotICB9
Ci0KLSAgLmJ1dHRvbltkaXNhYmxlZF0gewotICAgIGNvbG9yOiB2YXIoLS1ncmV5RGFya2VyKTsK
LSAgICBib3JkZXItY29sb3I6IHZhcigtLWdyZXlEYXJrZXIpOwotICAgIGJhY2tncm91bmQ6IG5v
bmU7Ci0gIH0KLQotICAuYnV0dG9uW2Rpc2FibGVkXTpob3ZlciB7Ci0gICAgY29sb3I6IHZhcigt
LWdyZXlEYXJrZXIpOwotICAgIGJvcmRlci1jb2xvcjogdmFyKC0tZ3JleURhcmtlcik7Ci0gICAg
YmFja2dyb3VuZDogbm9uZTsKLSAgfQotCi0gIC5idXR0b25bZGlzYWJsZWRdLnByaW1hcnkgewot
ICAgIGJvcmRlci1jb2xvcjogdmFyKC0tYmx1ZURhcmtlcik7Ci0gICAgYmFja2dyb3VuZC1jb2xv
cjogdmFyKC0tYmx1ZURhcmtlcik7Ci0gICAgY29sb3I6IHZhcigtLWdyZXlEYXJrZXIpOwotICAg
IG9wYWNpdHk6IDAuNzsKLSAgfQotCi0gIC5idXR0b25bZGlzYWJsZWRdLnByaW1hcnk6aG92ZXIg
ewotICAgIGJvcmRlci1jb2xvcjogdmFyKC0tYmx1ZURhcmtlcik7Ci0gICAgYmFja2dyb3VuZC1j
b2xvcjogdmFyKC0tYmx1ZURhcmtlcik7Ci0gICAgY29sb3I6IHZhcigtLWdyZXlEYXJrZXIpOwot
ICAgIG9wYWNpdHk6IDAuNzsKLSAgfQotCi0gIC5idXR0b25bZGlzYWJsZWRdLmRhbmdlciB7Ci0g
ICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1yZWREYXJrZXIpOwotICAgIGNvbG9yOiB2YXIoLS1ncmV5
RGFya2VyKTsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1yZWREYXJrZXIpOwotICAgIG9w
YWNpdHk6IDAuNzsKLSAgfQotCi0gIC5idXR0b25bZGlzYWJsZWRdLmRhbmdlcjpob3ZlciB7Ci0g
ICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1yZWREYXJrZXIpOwotICAgIGNvbG9yOiB2YXIoLS1ncmV5
RGFya2VyKTsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1yZWREYXJrZXIpOwotICAgIG9w
YWNpdHk6IDAuNzsKLSAgfQotfQotCi0vKnN3aXRjaCovCi0uc3dpdGNoIHsKLSAgcG9zaXRpb246
IHJlbGF0aXZlOwotICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Ci0gIHdpZHRoOiBjYWxjKHZhcigt
LXNtYWxsU2l6ZSkgKiAyKTsKLSAgaGVpZ2h0OiBjYWxjKHZhcigtLXNtYWxsU2l6ZSkgKyA0cHgp
OwotICBmbGV4OiBub25lOwotfQotCi0uc3dpdGNoIGlucHV0IHsKLSAgb3BhY2l0eTogMDsKLSAg
d2lkdGg6IDA7Ci0gIGhlaWdodDogMDsKLX0KLQotLnNsaWRlciB7Ci0gIHBvc2l0aW9uOiBhYnNv
bHV0ZTsKLSAgY3Vyc29yOiBwb2ludGVyOwotICB0b3A6IDA7Ci0gIGxlZnQ6IDA7Ci0gIHJpZ2h0
OiAwOwotICBib3R0b206IDA7Ci0gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXdoaXRlKTsKLSAg
LXdlYmtpdC10cmFuc2l0aW9uOiAuNHM7Ci0gIHRyYW5zaXRpb246IC40czsKLSAgYm9yZGVyLXJh
ZGl1czogMzRweDsKLSAgYm9yZGVyOiAxLjVweCBzb2xpZCB2YXIoLS1ncmV5TGlnaHQpOwotICBw
YWRkaW5nOiAwOwotICBtYXJnaW46IDA7Ci19Ci0KLS5zbGlkZXI6OmJlZm9yZSB7Ci0gIHBvc2l0
aW9uOiBhYnNvbHV0ZTsKLSAgY29udGVudDogIiI7Ci0gIGhlaWdodDogY2FsYyh2YXIoLS1zbWFs
bFNpemUpICsgMXB4KTsKLSAgd2lkdGg6IGNhbGModmFyKC0tc21hbGxTaXplKSArIDFweCk7Ci0g
IGxlZnQ6IC0xcHg7Ci0gIGJvdHRvbTogLTAuMjVweDsKLSAgYmFja2dyb3VuZC1jb2xvcjogdmFy
KC0td2hpdGUpOwotICAtd2Via2l0LXRyYW5zaXRpb246IC40czsKLSAgdHJhbnNpdGlvbjogLjRz
OwotICBib3JkZXItcmFkaXVzOiA1MCU7Ci0gIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWdyZXlM
aWdodCk7Ci0gIGJveC1zaGFkb3c6IDAuNXB4IDJweCA1cHggMHB4IHZhcigtLWdyZXkpOwotfQot
Ci1AbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSB7Ci0gIC5zbGlkZXIgewotICAg
IGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJsYWNrKTsKLSAgICBib3JkZXI6IDEuNXB4IHNvbGlk
IHZhcigtLWJsYWNrRGFyayk7Ci0gIH0KLQotICAuc2xpZGVyOjpiZWZvcmUgewotICAgIGJhY2tn
cm91bmQtY29sb3I6IHZhcigtLWJsYWNrKTsKLSAgICBib3JkZXI6IDEuNXB4IHNvbGlkIHZhcigt
LWJsYWNrRGFyayk7Ci0gICAgYm94LXNoYWRvdzogMC41cHggMnB4IDVweCAwcHggdmFyKC0tYmxh
Y2tEYXJrZXIpOwotICB9Ci19Ci0KLS5zd2l0Y2ggaW5wdXQ6Y2hlY2tlZCArIC5zbGlkZXIgewot
ICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1ncmVlbik7Ci0gIGJvcmRlcjogMXB4IHNvbGlkIHZh
cigtLWdyZWVuKTsKLX0KLQotLnN3aXRjaCAgaW5wdXQ6Zm9jdXMgKyAuc2xpZGVyIHsKLSAgYm9y
ZGVyOiAxcHggc29saWQgdmFyKC0tZ3JlZW4pOwotfQotCi0uc3dpdGNoICBpbnB1dDpjaGVja2Vk
ICsgLnNsaWRlcjpiZWZvcmUgewotICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoY2FsYyh2YXIoLS1z
bWFsbFNpemUpIC0gNHB4KSk7Ci0gIGJvdHRvbTogLTAuNXB4OwotfQotCi0KLS8qcG9wb3Zlciov
Ci0ucG9wb3ZlciB7Ci0gIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgZGlzcGxheTogbm9uZTsKLX0K
LQotLnBvcG92ZXI+LmNvbnRlbnR7Ci0gIG1heC13aWR0aDogMjAwcHg7Ci0gIHBhZGRpbmc6IHZh
cigtLXRpbnlTaXplKTsgCi0gIGZvbnQtc2l6ZTogdmFyKC0tdGlueVNpemUpOwotICBiYWNrZ3Jv
dW5kLWNvbG9yOiB2YXIoLS1ibHVyQmFja2dyb3VuZENvbG9yKTsKLSAgLXdlYmtpdC1iYWNrZHJv
cC1maWx0ZXI6IGJsdXIoNXB4KSBicmlnaHRuZXNzKDEwMCUpOwotICBiYWNrZHJvcC1maWx0ZXI6
IGJsdXIoNXB4KSBicmlnaHRuZXNzKDEwMCUpOwotfQotCi0ucG9wb3Zlci5kaXNwbGF5IHsKLSAg
Ym94LXNoYWRvdzogMHB4IDBweCA1cHggMXB4IHZhcigtLWdyZXkpOwotICBkaXNwbGF5OiBibG9j
azsKLX0KLQotLnBvcG92ZXIgLmFycm93IHsKLSAgcG9zaXRpb246IGFic29sdXRlOwotICB3aWR0
aDogdmFyKC0tdGlueVNpemUpOyAKLSAgaGVpZ2h0OiB2YXIoLS10aW55U2l6ZSk7Ci0gIGNvbnRl
bnQ6ICcnOwotICBib3gtc2hhZG93OiAwcHggMHB4IDVweCAxcHggdmFyKC0tYmxhY2spOwotICB0
cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7Ci0gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJsdXJC
YWNrZ3JvdW5kQ29sb3IpOwotICAtd2Via2l0LWJhY2tkcm9wLWZpbHRlcjogYmx1cig1cHgpIGJy
aWdodG5lc3MoMTAwJSk7Ci0gIGJhY2tkcm9wLWZpbHRlcjogYmx1cig1cHgpIGJyaWdodG5lc3Mo
MTAwJSk7Ci19Ci0KLQotLnBvcG92ZXIgLmFycm93LnBvaW50LXRvcCB7Ci0gIHRvcDogY2FsYygw
cHggLSB2YXIoLS10aW55U2l6ZSkgLyAyKTsKLX0KLQotLnBvcG92ZXIgLmFycm93LnBvaW50LWJv
dHRvbSB7Ci0gIGJvdHRvbTogY2FsYygwcHggLSB2YXIoLS10aW55U2l6ZSkgLyAyKTsKLX0KLQot
LnBvcG92ZXIgLmFycm93LnBvaW50LWxlZnQgewotICBsZWZ0OiBjYWxjKDBweCAtIHZhcigtLXRp
bnlTaXplKSAvIDIpOwotfQotCi0ucG9wb3ZlciAuYXJyb3cucG9pbnQtcmlnaHQgewotICByaWdo
dDogY2FsYygwcHggLSB2YXIoLS10aW55U2l6ZSkgLyAyKTsKLX0KLQotCi1AbWVkaWEgKHByZWZl
cnMtY29sb3Itc2NoZW1lOiBkYXJrKSB7Ci0gIC5wb3BvdmVyPi5jb250ZW50IHsKLSAgICBiYWNr
Z3JvdW5kLWNvbG9yOiB2YXIoLS1ibHVyQmFja2dyb3VuZENvbG9yRGFyayk7Ci0gIH0KLQotICAu
cG9wb3Zlci5kaXNwbGF5IHsKLSAgICBib3gtc2hhZG93OiAwcHggMHB4IDVweCAxcHggdmFyKC0t
YmxhY2spOwotICB9Ci0KLSAgLnBvcG92ZXIgLmFycm93IHsKLSAgICBiYWNrZ3JvdW5kLWNvbG9y
OiB2YXIoLS1ibHVyQmFja2dyb3VuZENvbG9yRGFyayk7Ci0gIH0KLX0KLQotCi0vKiBkcmF3ZXIg
Ki8KLS5kcmF3ZXIgewotICBwb3NpdGlvbjogZml4ZWQ7Ci0gIGJvdHRvbTogMDsKLSAgbGVmdDog
MDsKLSAgdHJhbnNpdGlvbjogaGVpZ2h0IC41czsKLSAgd2lkdGg6IDEwMCU7Ci0gIGhlaWdodDog
MCU7Ci0gIG92ZXJmbG93OiBhdXRvOwotICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tYmx1
ckJhY2tncm91bmRDb2xvcik7Ci0gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJsdXJCYWNrZ3Jv
dW5kQ29sb3IpOwotICAtd2Via2l0LWJhY2tkcm9wLWZpbHRlcjogYmx1cig1cHgpIGJyaWdodG5l
c3MoODglKTsKLSAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDVweCkgYnJpZ2h0bmVzcyg4OCUpOwot
ICBib3gtc2l6aW5nOiBib3JkZXItYm94OwotICB6LWluZGV4OiB2YXIoLS10b3BaSW5kZXgpOwot
fQotCi0uZHJhd2VyLmRpc3BsYXkgewotICBtaW4taGVpZ2h0OiAyNTBweDsKLSAgaGVpZ2h0OiAz
MCU7Ci0gIGJveC1zaGFkb3c6IDBweCAwcHggNXB4IDFweCB2YXIoLS1ncmV5KTsKLX0KLQotQG1l
ZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgewotICAuZHJhd2VyIHsKLSAgICBiYWNr
Z3JvdW5kLWNvbG9yOiB2YXIoLS1ibHVyQmFja2dyb3VuZENvbG9yRGFyayk7Ci0gICAgYm9yZGVy
LWNvbG9yOiB2YXIoLS1ibHVyQmFja2dyb3VuZENvbG9yRGFyayk7Ci0gICAgLXdlYmtpdC1iYWNr
ZHJvcC1maWx0ZXI6IGJsdXIoNXB4KSBicmlnaHRuZXNzKDE1MCUpOwotICAgIGJhY2tkcm9wLWZp
bHRlcjogYmx1cig1cHgpIGJyaWdodG5lc3MoMTUwJSk7Ci0gIH0KLQotICAuZHJhd2VyLmRpc3Bs
YXkgewotICAgIGJveC1zaGFkb3c6IDBweCAwcHggNXB4IDFweCB2YXIoLS1ibGFjayk7Ci0gIH0K
LX0KLQotLmRyYXdlci5sZWZ0IHsKLSAgbGVmdDogMDsKLSAgd2lkdGg6IDAlOwotICBoZWlnaHQ6
IDEwMCU7Ci0gIHRyYW5zaXRpb246IHdpZHRoIC41czsKLSAgYm9yZGVyOiBub25lOwotICBib3Jk
ZXItcmlnaHQ6IDFweCBzb2xpZCB2YXIoLS1ibHVyQmFja2dyb3VuZENvbG9yKTsKLX0KLQotQG1l
ZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgewotICAuZHJhd2VyLmxlZnQgewotICAg
IGJvcmRlci1yaWdodDogMXB4IHNvbGlkIHZhcigtLWJsdXJCYWNrZ3JvdW5kQ29sb3JEYXJrKTsK
LSAgfQotfQotCi0uZHJhd2VyLmxlZnQuZGlzcGxheSB7Ci0gIHdpZHRoOiA0NSU7Ci19Ci0KLS5k
cmF3ZXIucmlnaHQgewotICByaWdodDogMDsKLSAgYm90dG9tOiAwOwotICBsZWZ0OiBhdXRvOwot
ICB3aWR0aDogMCU7Ci0gIGhlaWdodDogMTAwJTsKLSAgdHJhbnNpdGlvbjogd2lkdGggLjVzOwot
ICBib3JkZXI6IG5vbmU7Ci0gIGJvcmRlci1sZWZ0OiAxcHggc29saWQgdmFyKC0tYmx1ckJhY2tn
cm91bmRDb2xvcik7Ci19Ci0KLUBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIHsK
LSAgLmRyYXdlci5yaWdodCB7Ci0gICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCB2YXIoLS1ibHVy
QmFja2dyb3VuZENvbG9yRGFyayk7Ci0gIH0KLX0KLQotLmRyYXdlci5yaWdodC5kaXNwbGF5IHsK
LSAgd2lkdGg6IDQ1JTsKLX0KLQotLmRyYXdlci5sZWZ0LnVuZGVyLXRvcGJhciwgLmRyYXdlci5y
aWdodC51bmRlci10b3BiYXIgewotICBoZWlnaHQ6IGNhbGMoMTAwJSAtIDEycHggKiAyICAtIHZh
cigtLWxhcmdlU2l6ZSkgKiAxLjMpOwotfQotCi0uZHJhd2VyLmxlZnQudW5kZXItdG9wYmFyLXdp
dGgtYWN0aW9ucywgLmRyYXdlci5yaWdodC51bmRlci10b3BiYXItd2l0aC1hY3Rpb25zIHsKLSAg
aGVpZ2h0OiBjYWxjKDEwMCUgLSAxMnB4ICogMiAgLSB2YXIoLS1sYXJnZVNpemUpICogMS4zIC0g
dmFyKC0tc21hbGxTaXplKSAqIDEuMyAtIDEycHggKiAyICk7Ci19Ci0KLUBtZWRpYSBzY3JlZW4g
YW5kIChtaW4td2lkdGg6IDYwMHB4KSB7Ci0gIC5kcmF3ZXIubGVmdC5kaXNwbGF5LCAuZHJhd2Vy
LnJpZ2h0LmRpc3BsYXkgewotICAgIHdpZHRoOiAyMCU7Ci0gIH0KLQotICAuZHJhd2VyLmxlZnQu
dW5kZXItdG9wYmFyLXdpdGgtYWN0aW9ucywgLmRyYXdlci5yaWdodC51bmRlci10b3BiYXItd2l0
aC1hY3Rpb25zIHsKLSAgICBoZWlnaHQ6IGNhbGMoMTAwJSAtIDEycHggKiAyICAtIHZhcigtLWxh
cmdlU2l6ZSkgKiAxLjMpOwotICB9Ci19Ci0KLS5kcmF3ZXIgLmhlYWRlciB7Ci0gIGJvcmRlcjog
bm9uZTsKLSAgbWFyZ2luLWJvdHRvbTogNXB4OwotfQotCi0uZHJhd2VyIC5oZWFkZXI+LnRpdGxl
LnNtYWxsIHsKLSAgZm9udC1zaXplOiB2YXIoLS1zbWFsbFNpemUpOwotICBwYWRkaW5nLWxlZnQ6
IDA7Ci19Ci0KLS5kcmF3ZXIgLmJhZGdlIHsKLSAgYm9yZGVyLWNvbG9yOiB2YXIoLS1ncmV5TGln
aHQpOwotICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1ibHVyQmFja2dyb3VuZENvbG9yKTsKLSAg
LXdlYmtpdC1iYWNrZHJvcC1maWx0ZXI6IGJsdXIoMC41cHgpOwotfQotCi0uZHJhd2VyIC5jaGlw
IHsKLSAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYmx1ckJhY2tncm91bmRDb2xvcik7Ci0gIC13
ZWJraXQtYmFja2Ryb3AtZmlsdGVyOiBibHVyKDAuNXB4KTsKLX0KLQotLmRyYXdlciBwcmUgewot
ICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1ibHVyQmFja2dyb3VuZENvbG9yKTsKLSAgLXdlYmtp
dC1iYWNrZHJvcC1maWx0ZXI6IGJsdXIoMC41cHgpOwotfQotCi0uZHJhd2VyIC5iYWRnZS5hY3Rp
dmUgewotICBib3JkZXItY29sb3I6IHZhcigtLWJsdWVMaWdodCk7Ci19Ci0KLUBtZWRpYSAocHJl
ZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIHsKLSAgLmRyYXdlciAuYmFkZ2UgewotICAgIGJhY2tn
cm91bmQtY29sb3I6IHZhcigtLWJsdXJCYWNrZ3JvdW5kQ29sb3JEYXJrKTsKLSAgICAtd2Via2l0
LWJhY2tkcm9wLWZpbHRlcjogYmx1cig1cHgpIGJyaWdodG5lc3MoMTUwJSk7Ci0gICAgYmFja2Ry
b3AtZmlsdGVyOiBibHVyKDVweCkgYnJpZ2h0bmVzcygxNTAlKTsKLSAgfQotCi0gIC5kcmF3ZXIg
LmNoaXAgewotICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJsdXJCYWNrZ3JvdW5kQ29sb3JE
YXJrKTsKLSAgICAtd2Via2l0LWJhY2tkcm9wLWZpbHRlcjogYmx1cig1cHgpIGJyaWdodG5lc3Mo
MTUwJSk7Ci0gICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDVweCkgYnJpZ2h0bmVzcygxNTAlKTsK
LSAgfQotCi0gIC5kcmF3ZXIgcHJlIHsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1ibHVy
QmFja2dyb3VuZENvbG9yRGFyayk7Ci0gICAgLXdlYmtpdC1iYWNrZHJvcC1maWx0ZXI6IGJsdXIo
NXB4KSBicmlnaHRuZXNzKDE1MCUpOwotICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cig1cHgpIGJy
aWdodG5lc3MoMTUwJSk7Ci0gIH0KLX0KLQotLmRyYXdlcj4uY2xvc2UtaGVhZGVyIHsKLSAgd2lk
dGg6IDEwMCU7Ci0gIGRpc3BsYXk6IGZsZXg7Ci0gIHBvc2l0aW9uOiBmaXhlZDsKLSAgdGV4dC1h
bGlnbjogY2VudGVyOwotfQotCi0uZHJhd2VyPi5jbG9zZS1oZWFkZXI+Lmxpc3QgewotICB3aWR0
aDogMTAwJTsKLSAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKLSAgaGVpZ2h0OiAyMHB4OwotICBw
YWRkaW5nOiAwOwotICBtYXJnaW46IDA7Ci19Ci0KLS5kcmF3ZXI+LmNsb3NlLWhlYWRlcj4ubGlz
dD4uaXRlbSB7Ci0gIHBhZGRpbmc6IDA7Ci0gIG1hcmdpbjogMDsKLSAgdmVydGljYWwtYWxpZ246
IGNlbnRlcjsKLX0KLQotLmRyYXdlcj4uY2xvc2UtaGVhZGVyKy5jb250ZW50IHsKLSAgbWFyZ2lu
LXRvcDogMjBweDsKLSAgaGVpZ2h0OiBjYWxjKDEwMCUgLSAyMHB4KTsKLX0KLQotLyogVGFiICov
Ci0udGFicyB7Ci0gIHRleHQtYWxpZ246IGNlbnRlcjsKLSAgZGlzcGxheTogZmxleDsKLSAgd2lk
dGg6IDEwMCU7Ci0gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1ncmV5TGlnaHQpOwot
ICBtYXJnaW4tYm90dG9tOiAxNXB4OwotfQotCi0udGFicyAudGFiOmZpcnN0LWNoaWxkIHsKLSAg
cGFkZGluZy1sZWZ0OiAwcHg7Ci19Ci0KLS50YWJzIC50aXRsZSB7Ci0gIGNvbG9yOiB2YXIoLS1n
cmV5RGFya2VyKTsKLSAgZm9udC1zaXplOiBjYWxjKHZhcigtLXNtYWxsU2l6ZSkgKyAycHgpOwot
fQotCi0udGFicyAudGFiIHsKLSAgcGFkZGluZy1sZWZ0OiA2MHB4OwotfQotCi0udGFicyAudGFi
LmFjdGl2ZSAubGluayB7Ci0gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1ncmV5RGFy
a2VyKTsKLX0KLQotLnRhYnMgLnRhYiAubGluayB7Ci0gIHBhZGRpbmctdG9wOiAycHg7Ci0gIHBh
ZGRpbmctYm90dG9tOiA0cHg7Ci0gIGRpc3BsYXk6IGJsb2NrOwotICBmb250LXNpemU6IGNhbGMo
dmFyKC0tc21hbGxTaXplKSAtIDJweCk7Ci19Ci0KLS50YWJzIC50YWIgYS5saW5rIHsKLSAgY29s
b3I6IHZhcigtLWdyZXlEYXJrZXIpOwotICBjdXJzb3I6IHBvaW50ZXI7Ci19Ci0KLS50YWJzIC50
YWIgYS5saW5rOmhvdmVyIHsKLSAgY29sb3I6IHZhcigtLWxpbmtDb2xvcik7Ci0gIHRleHQtZGVj
b3JhdGlvbjogbm9uZTsKLX0KLQotQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykg
ewotICAudGFicyAudGl0bGUgewotICAgIGNvbG9yOiB2YXIoLS1ncmV5KTsKLSAgICBmb250LXNp
emU6IGNhbGModmFyKC0tc21hbGxTaXplKSArIDJweCk7Ci0gIH0KLQotICAudGFicyAudGFiLmFj
dGl2ZSAubGluayB7Ci0gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLWdyZXkpOwot
ICB9Ci0KLSAgLnRhYnMgLnRhYiBhLmxpbmsgewotICAgIGNvbG9yOiB2YXIoLS1ncmV5KTsKLSAg
fQotfQotCi1hLmRpc2FibGVkIHsKLSAgY29sb3I6IHZhcigtLWdyZXkpOwotICBwb2ludGVyLWV2
ZW50czogbm9uZTsgCi19Ci0KLUBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDYwMHB4KSB7
Ci0gIC5zaWRlYmFyIHsKLSAgICBkaXNwbGF5OiBibG9jazsKLSAgICB3aWR0aDogMjk5cHg7Ci0g
ICAgbGVmdDogMDsKLSAgICByaWdodDogdW5zZXQ7Ci0gIH0KLSAgLnNpZGViYXIubGVmdC5oaWRk
ZW4gewotICAgIGRpc3BsYXk6IGJsb2NrOwotICAgIGxlZnQ6IC0yNDlweDsKLSAgfQotICAuc2lk
ZWJhci5yaWdodC5oaWRkZW4gewotICAgIGRpc3BsYXk6IGJsb2NrOwotICAgIHJpZ2h0OiAtMjQ5
cHg7Ci0gIH0KLSAgLnNpZGViYXIudW5kZXItdG9wYmFyLXdpdGgtYWN0aW9ucyB7Ci0gICAgaGVp
Z2h0OiBjYWxjKDEwMCUgLSAxMnB4ICogMiAgLSB2YXIoLS1sYXJnZVNpemUpICogMS4zKTsKLSAg
ICBib3R0b206IDA7Ci0gIH0KLQotICAubWFpbiB7Ci0gICAgbWFyZ2luLWxlZnQ6IDI5OXB4Owot
ICAgIHdpZHRoOiBjYWxjKDEwMCUgLSAyOTlweCk7Ci0gIH0KLQotICAubWFpbi5yaWdodC1zaWRl
YmFyIHsKLSAgICBtYXJnaW4tbGVmdDogMHB4OwotICAgIG1hcmdpbi1yaWdodDogMjk5cHg7Ci0g
IH0KLSAgLm1haW4ubGVmdC1zaWRlYmFyLmhpZGRlbiB7Ci0gICAgbWFyZ2luLWxlZnQ6IDUwcHg7
Ci0gICAgd2lkdGg6IGNhbGMoMTAwJSAtIDUwcHgpOwotICB9Ci0gIC5tYWluLnJpZ2h0LXNpZGVi
YXIuaGlkZGVuIHsKLSAgICBtYXJnaW4tbGVmdDogMDsKLSAgICBtYXJnaW4tcmlnaHQ6IDUwcHg7
Ci0gICAgd2lkdGg6IGNhbGMoMTAwJSAtIDUwcHgpOwotICB9Ci0KLSAgLm1haW4udW5kZXItdG9w
YmFyLXdpdGgtYWN0aW9ucyB7Ci0gICAgbWFyZ2luLXRvcDogY2FsYygxMnB4ICogMiAgKyB2YXIo
LS1sYXJnZVNpemUpICogMS4zKTsKLSAgfQotfQotCi1AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdp
ZHRoOiA3NjhweCkgewotICAuc2lkZWJhciB7Ci0gICAgZGlzcGxheTogYmxvY2s7Ci0gICAgd2lk
dGg6IDMxMHB4OwotICAgIGxlZnQ6IDA7Ci0gICAgcmlnaHQ6IHVuc2V0OwotICB9Ci0gIC5zaWRl
YmFyLmxlZnQuaGlkZGVuIHsKLSAgICBkaXNwbGF5OiBibG9jazsKLSAgICBsZWZ0OiAtMjYwcHg7
Ci0gIH0KLSAgLnNpZGViYXIucmlnaHQuaGlkZGVuIHsKLSAgICBkaXNwbGF5OiBibG9jazsKLSAg
ICByaWdodDogLTI2MHB4OwotICB9Ci0gIC5zaWRlYmFyLnVuZGVyLXRvcGJhci13aXRoLWFjdGlv
bnMgewotICAgIGhlaWdodDogY2FsYygxMDAlIC0gMTJweCAqIDIgIC0gdmFyKC0tbGFyZ2VTaXpl
KSAqIDEuMyk7Ci0gICAgYm90dG9tOiAwOwotICB9Ci0KLSAgLm1vYmlsZS1zaWRlYmFyLWNvbnRy
b2wuZGlzcGxheSB7Ci0gICAgZGlzcGxheTogbm9uZTsKLSAgfQotCi0gIC5tYWluIHsKLSAgICBt
YXJnaW4tbGVmdDogMzEwcHg7Ci0gICAgd2lkdGg6IGNhbGMoMTAwJSAtIDMxMHB4KTsKLSAgfQot
Ci0gIC5tYWluLnJpZ2h0LXNpZGViYXIgewotICAgIG1hcmdpbi1sZWZ0OiAwcHg7Ci0gICAgbWFy
Z2luLXJpZ2h0OiAzMTBweDsKLSAgfQotfQotCi0vKiB0aW1lbGluZSAqLwotLnRpbWVsaW5lIHsK
LSAgZGlzcGxheTogZmxleDsKLSAgZmxleC1kaXJlY3Rpb246IHJvdzsKLSAgcGFkZGluZzogMDsK
LSAgbWFyZ2luOiAycHggMDsKLX0KLQotLnRpbWVsaW5lLm5vLWJvcmRlciB7Ci0gIGJvcmRlcjog
bm9uZTsKLX0KLQotLnRpbWVsaW5lPi5jb250ZW50IHsKLSAgb3ZlcmZsb3cteDogYXV0bzsKLSAg
b3ZlcmZsb3cteTogaGlkZGVuOwotICBwYWRkaW5nOiAwOwotICBtYXJnaW46IDA7Ci0gIHZlcnRp
Y2FsLWFsaWduOiBtaWRkbGU7Ci0gIGZsZXg6IGF1dG87Ci19Ci0KLS50aW1lbGluZT4uaGVhZGVy
IHsKLSAgbWFyZ2luOiAwOwotICB0ZXh0LWFsaWduOiByaWdodDsKLSAgYm9yZGVyOiBub25lOwot
ICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwotICBkaXNwbGF5OiBibG9jazsKLSAgcGFkZGluZy1y
aWdodDogMTBweDsKLSAgb3ZlcmZsb3c6IGF1dG87Ci0gIHBvc2l0aW9uOiByZWxhdGl2ZTsKLSAg
Ym9yZGVyLWxlZnQ6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXJDb2xvcklubGluZUVsZW1lbnQpOwot
ICBmbGV4OiBub25lOwotfQotCi0udGltZWxpbmU+LmhlYWRlciAuc2VyaWVzIHsKLSAgbWFyZ2lu
OiA4cHggMDsKLSAgbWFyZ2luLWxlZnQ6IDVweDsKLSAgZGlzcGxheTogYmxvY2s7Ci0gIHZlcnRp
Y2FsLWFsaWduOiBtaWRkbGU7Ci0gIGZvbnQtc2l6ZTogdmFyKC0tdGlueVNpemUpOwotICBsaW5l
LWhlaWdodDogdmFyKC0tbWVkaXVtU2l6ZSk7Ci0gIHdoaXRlLXNwYWNlOiBub3dyYXA7Ci19Ci0u
dGltZWxpbmU+LmhlYWRlciAuc2VyaWVzICogewotICBsaW5lLWhlaWdodDogdmFyKC0tbWVkaXVt
U2l6ZSk7Ci0gIGZvbnQtc2l6ZTogdmFyKC0tdGlueVNpemUpOwotfQotLnRpbWVsaW5lPi5oZWFk
ZXIgLnNlcmllcyBhIHsKLSAgbGluZS1oZWlnaHQ6IHZhcigtLW1lZGl1bVNpemUpOwotfQotCi0u
dGltZWxpbmU+LmNvbnRlbnQgLnNlcmllcyB7Ci0gIGRpc3BsYXk6IGZsZXg7Ci0gIHdoaXRlLXNw
YWNlOiBub3dyYXA7Ci0gIG1hcmdpbjogOHB4IDA7Ci0gIGhlaWdodDogdmFyKC0tbWVkaXVtU2l6
ZSk7Ci0gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7Ci19Ci0KLS50aW1lbGluZT4uY29udGVudCAu
ZG90IHsKLSAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKLSAgbWFyZ2luOiAwIGNhbGModmFyKC0t
dGlueVNpemUpIC8gMiApOwotICB3aWR0aDogdmFyKC0tc21hbGxTaXplKTsKLSAgaGVpZ2h0OiB2
YXIoLS1zbWFsbFNpemUpOwotICBib3JkZXItcmFkaXVzOiB2YXIoLS1zbWFsbFNpemUpOwotICBk
aXNwbGF5OiBmbGV4OwotICBhbGlnbi1pdGVtczogY2VudGVyOwotICBwb3NpdGlvbjogcmVsYXRp
dmU7Ci19Ci0KLS50aW1lbGluZT4uY29udGVudCAuZG90LmNsaWNrYWJsZSB7Ci0gIGJvcmRlcjog
bm9uZTsKLX0KLQotLnRpbWVsaW5lPi5jb250ZW50IC5kb3QuY2xpY2thYmxlOmhvdmVyIHsKLSAg
Ym9yZGVyOiBub25lOwotfQotCi0udGltZWxpbmU+LmNvbnRlbnQgLmRvdC5jbGlja2FibGU6YWN0
aXZlIHsKLSAgYm9yZGVyOiBub25lOwotfQotCi0udGltZWxpbmU+LmNvbnRlbnQgLmRvdCAudGFn
IHsKLSAgZm9udC1zaXplOiBjYWxjKHZhcigtLXRpbnlTaXplKSAqIDAuOCk7Ci0gIHBvc2l0aW9u
OiBhYnNvbHV0ZTsKLSAgbGVmdDogY2FsYygwcHggLSB2YXIoLS10aW55U2l6ZSkgLyAyKTsKLSAg
dG9wOiBjYWxjKHZhcigtLXNtYWxsU2l6ZSkpOwotICBoZWlnaHQ6IHZhcigtLXRpbnlTaXplKTsK
LSAgbGluZS1oZWlnaHQ6IDE7Ci0gIHRleHQtYWxpZ246IGNlbnRlcjsKLSAgd2lkdGg6IGNhbGMo
dmFyKC0tc21hbGxTaXplKSArIHZhcigtLXRpbnlTaXplKSk7Ci0gIHBhZGRpbmctdG9wOiAycHg7
Ci19Ci0KLS50aW1lbGluZT4uY29udGVudCAuZG90OjpiZWZvcmUsIC50aW1lbGluZT4uY29udGVu
dCAuZG90OjphZnRlciB7Ci0gIGNvbnRlbnQ6ICIiOwotICBoZWlnaHQ6IDFweDsKLSAgYmFja2dy
b3VuZDogdmFyKC0tYm9yZGVyQ29sb3JJbmxpbmVFbGVtZW50KTsKLSAgd2lkdGg6IGNhbGModmFy
KC0tdGlueVNpemUpIC8gMiApOwotICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Ci0gIGZsZXg6IG5v
bmU7Ci19Ci0KLS50aW1lbGluZT4uY29udGVudCAuZG90OjpiZWZvcmUgewotICBtYXJnaW4tbGVm
dDogY2FsYygwcHggLSB2YXIoLS10aW55U2l6ZSkgLyAyKTsKLX0KLQotLnRpbWVsaW5lPi5jb250
ZW50IC5kb3Q6OmFmdGVyIHsKLSAgbWFyZ2luLWxlZnQ6IGNhbGModmFyKC0tc21hbGxTaXplKSk7
Ci19Ci0KLS50aW1lbGluZT4uY29udGVudCAuZG90LmJsaW5rOjpiZWZvcmUgewotICBhbmltYXRp
b246IG5vbmU7Ci19Ci0KLS50aW1lbGluZT4uY29udGVudCAuZG90LmJsaW5rOjphZnRlciB7Ci0g
IGFuaW1hdGlvbjogbm9uZTsKLX0KLQotLnRpbWVsaW5lPi5jb250ZW50IC5kb3QuZW1wdHkgewot
ICBoZWlnaHQ6IDFweDsKLSAgbWFyZ2luLXRvcDogY2FsYygodmFyKC0tc21hbGxTaXplKSAtIDFw
eCkgLyAyKTsKLSAgYmFja2dyb3VuZDogdmFyKC0tZ3JleSk7Ci19Ci0KLS50aW1lbGluZT4uY29u
dGVudCAuZG90LmVtcHR5OjpiZWZvcmUgewotICB2ZXJ0aWNhbC1hbGlnbjogdG9wOwotfQotCi0u
dGltZWxpbmU+LmNvbnRlbnQgLmRvdC5lbXB0eTo6YWZ0ZXIgewotICB2ZXJ0aWNhbC1hbGlnbjog
dG9wOwotfQotCi0udGltZWxpbmU+LmNvbnRlbnQgLngtYXhpcyB7Ci0gIGRpc3BsYXk6IGZsZXg7
Ci0gIG1hcmdpbjogOHB4IDA7Ci0gIG1pbi1oZWlnaHQ6IGNhbGModmFyKC0tc21hbGxTaXplKSAq
IDQpOwotfQotCi0udGltZWxpbmU+LmNvbnRlbnQ+LngtYXhpcyAuc2NhbGUgewotICBmb250LXNp
emU6IHZhcigtLXNtYWxsU2l6ZSk7Ci0gIHdpZHRoOiBjYWxjKHZhcigtLXNtYWxsU2l6ZSkgKyB2
YXIoLS10aW55U2l6ZSkpOwotICB0ZXh0LWFsaWduOiBjZW50ZXI7Ci0gIGJvcmRlci10b3A6IDFw
eCBzb2xpZCB2YXIoLS1ib3JkZXJDb2xvcklubGluZUVsZW1lbnQpOwotICBmbGV4OiBub25lOwot
ICBwb3NpdGlvbjogcmVsYXRpdmU7Ci19Ci0KLS50aW1lbGluZT4uY29udGVudD4ueC1heGlzIC5z
Y2FsZS5ncm91cC0yIHsKLSAgd2lkdGg6IGNhbGMoKHZhcigtLXNtYWxsU2l6ZSkgKyB2YXIoLS10
aW55U2l6ZSkpICogMik7Ci19Ci0KLS50aW1lbGluZT4uY29udGVudD4ueC1heGlzIC5zY2FsZS5n
cm91cC0zIHsKLSAgd2lkdGg6IGNhbGMoKHZhcigtLXNtYWxsU2l6ZSkgKyB2YXIoLS10aW55U2l6
ZSkpICogMyk7Ci19Ci0KLS50aW1lbGluZT4uY29udGVudD4ueC1heGlzIC5zY2FsZS5ncm91cC00
IHsKLSAgd2lkdGg6IGNhbGMoKHZhcigtLXNtYWxsU2l6ZSkgKyB2YXIoLS10aW55U2l6ZSkpICog
NCk7Ci19Ci0KLS50aW1lbGluZT4uY29udGVudD4ueC1heGlzIC5zY2FsZS5ncm91cC01IHsKLSAg
d2lkdGg6IGNhbGMoKHZhcigtLXNtYWxsU2l6ZSkgKyB2YXIoLS10aW55U2l6ZSkpICogNSk7Ci19
Ci0KLS50aW1lbGluZT4uY29udGVudD4ueC1heGlzIC5zY2FsZS5ncm91cC02IHsKLSAgd2lkdGg6
IGNhbGMoKHZhcigtLXNtYWxsU2l6ZSkgKyB2YXIoLS10aW55U2l6ZSkpICogNik7Ci19Ci0KLS50
aW1lbGluZT4uY29udGVudD4ueC1heGlzIC5zY2FsZS5ncm91cC03IHsKLSAgd2lkdGg6IGNhbGMo
KHZhcigtLXNtYWxsU2l6ZSkgKyB2YXIoLS10aW55U2l6ZSkpICogNyk7Ci19Ci0KLS50aW1lbGlu
ZT4uY29udGVudD4ueC1heGlzIC5zY2FsZS5ncm91cC04IHsKLSAgd2lkdGg6IGNhbGMoKHZhcigt
LXNtYWxsU2l6ZSkgKyB2YXIoLS10aW55U2l6ZSkpICogOCk7Ci19Ci0KLS50aW1lbGluZT4uY29u
dGVudD4ueC1heGlzIC5zY2FsZS5ncm91cC05IHsKLSAgd2lkdGg6IGNhbGMoKHZhcigtLXNtYWxs
U2l6ZSkgKyB2YXIoLS10aW55U2l6ZSkpICogOSk7Ci19Ci0KLS50aW1lbGluZT4uY29udGVudD4u
eC1heGlzIC5zY2FsZS5ncm91cC0xMCB7Ci0gIHdpZHRoOiBjYWxjKCh2YXIoLS1zbWFsbFNpemUp
ICsgdmFyKC0tdGlueVNpemUpKSAqIDEwKTsKLX0KLQotLnRpbWVsaW5lPi5jb250ZW50Pi54LWF4
aXMgLnNjYWxlLmdyb3VwLTExIHsKLSAgd2lkdGg6IGNhbGMoKHZhcigtLXNtYWxsU2l6ZSkgKyB2
YXIoLS10aW55U2l6ZSkpICogMTEpOwotfQotCi0udGltZWxpbmU+LmNvbnRlbnQ+LngtYXhpcyAu
c2NhbGUuZ3JvdXAtMTIgewotICB3aWR0aDogY2FsYygodmFyKC0tc21hbGxTaXplKSArIHZhcigt
LXRpbnlTaXplKSkgKiAxMik7Ci19Ci0KLS50aW1lbGluZT4uY29udGVudD4ueC1heGlzIC5zY2Fs
ZS5ncm91cC0xMyB7Ci0gIHdpZHRoOiBjYWxjKCh2YXIoLS1zbWFsbFNpemUpICsgdmFyKC0tdGlu
eVNpemUpKSAqIDEzKTsKLX0KLQotLnRpbWVsaW5lPi5jb250ZW50Pi54LWF4aXMgLnNjYWxlLmdy
b3VwLTE0IHsKLSAgd2lkdGg6IGNhbGMoKHZhcigtLXNtYWxsU2l6ZSkgKyB2YXIoLS10aW55U2l6
ZSkpICogMTQpOwotfQotCi0udGltZWxpbmU+LmNvbnRlbnQ+LngtYXhpcyAuc2NhbGUuZ3JvdXAt
MTUgewotICB3aWR0aDogY2FsYygodmFyKC0tc21hbGxTaXplKSArIHZhcigtLXRpbnlTaXplKSkg
KiAxNSk7Ci19Ci0KLS50aW1lbGluZT4uY29udGVudD4ueC1heGlzIC5zY2FsZS5ncm91cC0xNiB7
Ci0gIHdpZHRoOiBjYWxjKCh2YXIoLS1zbWFsbFNpemUpICsgdmFyKC0tdGlueVNpemUpKSAqIDE2
KTsKLX0KLQotLnRpbWVsaW5lPi5jb250ZW50Pi54LWF4aXMgLnNjYWxlLmdyb3VwLTE3IHsKLSAg
d2lkdGg6IGNhbGMoKHZhcigtLXNtYWxsU2l6ZSkgKyB2YXIoLS10aW55U2l6ZSkpICogMTcpOwot
fQotCi0udGltZWxpbmU+LmNvbnRlbnQ+LngtYXhpcyAuc2NhbGUuZ3JvdXAtMTggewotICB3aWR0
aDogY2FsYygodmFyKC0tc21hbGxTaXplKSArIHZhcigtLXRpbnlTaXplKSkgKiAxOCk7Ci19Ci0K
LS50aW1lbGluZT4uY29udGVudD4ueC1heGlzIC5zY2FsZS5ncm91cC0xOSB7Ci0gIHdpZHRoOiBj
YWxjKCh2YXIoLS1zbWFsbFNpemUpICsgdmFyKC0tdGlueVNpemUpKSAqIDE5KTsKLX0KLQotLnRp
bWVsaW5lPi5jb250ZW50Pi54LWF4aXMgLnNjYWxlLmdyb3VwLTIwIHsKLSAgd2lkdGg6IGNhbGMo
KHZhcigtLXNtYWxsU2l6ZSkgKyB2YXIoLS10aW55U2l6ZSkpICogMjApOwotfQotCi0udGltZWxp
bmU+LmNvbnRlbnQ+LngtYXhpcyAuc2NhbGVbY2xhc3MqPSJncm91cC0iXSB7Ci0gIGJvcmRlci1j
b2xvcjogdmFyKC0tYmxhY2spOwotfQotCi0udGltZWxpbmU+LmNvbnRlbnQ+LngtYXhpcyAuc2Nh
bGUgLmxpbmUgewotICB3aWR0aDogMnB4OwotICBoZWlnaHQ6IHZhcigtLXRpbnlTaXplKTsKLSAg
bWFyZ2luOiBhdXRvOwotICBkaXNwbGF5OiBibG9jazsKLSAgYmFja2dyb3VuZDogdmFyKC0tZ3Jl
eSk7Ci19Ci0KLS50aW1lbGluZT4uY29udGVudD4ueC1heGlzIC5zY2FsZSAudGV4dCB7Ci0gIHBv
c2l0aW9uOiByZWxhdGl2ZTsKLSAgbGVmdDogY2FsYyh2YXIoLS10aW55U2l6ZSkgLyAyKTsKLSAg
Zm9udC1zaXplOiB2YXIoLS10aW55U2l6ZSk7Ci0gIG1pbi1oZWlnaHQ6IGNhbGModmFyKC0tc21h
bGxTaXplKSAqIDQpOwotICBkaXNwbGF5OiBibG9jazsKLSAgLXdlYmtpdC10cmFuc2Zvcm0tb3Jp
Z2luOiAxMCUgMjUlOwotICAtbW96LXRyYW5zZm9ybS1vcmlnaW46IDEwJSAyNSU7Ci0gIC1tcy10
cmFuc2Zvcm0tb3JpZ2luOiAxMCUgMjUlOwotICAtby10cmFuc2Zvcm0tb3JpZ2luOiAxMCUgMjUl
OwotICB0cmFuc2Zvcm0tb3JpZ2luOiAxMCUgMjUlOwotICAtd2Via2l0LXRyYW5zZm9ybTogcm90
YXRlKDYwZGVnKTsKLSAgLW1vei10cmFuc2Zvcm06IHJvdGF0ZSg2MGRlZyk7Ci0gIC1vLXRyYW5z
Zm9ybTogcm90YXRlKDYwZGVnKTsKLSAgLW1zLXRyYW5zZm9ybTogcm90YXRlKDYwZGVnKTsKLSAg
dHJhbnNmb3JtOiByb3RhdGUoNjBkZWcpOwotICB3aGl0ZS1zcGFjZTogbm93cmFwOwotfQotCi0u
dGltZWxpbmU+LmNvbnRlbnQ+LngtYXhpcy5zY2FsZS05MGRlZyAuc2NhbGUgLnRleHQgewotICAt
d2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IDAlIDI1JTsKLSAgLW1vei10cmFuc2Zvcm0tb3JpZ2lu
OiAwJSAyNSU7Ci0gIC1tcy10cmFuc2Zvcm0tb3JpZ2luOiAwJSAyNSU7Ci0gIC1vLXRyYW5zZm9y
bS1vcmlnaW46IDAlIDI1JTsKLSAgdHJhbnNmb3JtLW9yaWdpbjogMCUgMjUlOwotICB0b3A6IC0x
MnB4OwotICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTsKLSAgLW1vei10cmFuc2Zv
cm06IHJvdGF0ZSg5MGRlZyk7Ci0gIC1vLXRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTsKLSAgLW1z
LXRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTsKLSAgdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpOwot
fQotCi0udGltZWxpbmU+LmNvbnRlbnQ+LngtYXhpcyAuc2NhbGVbY2xhc3MqPSJncm91cC0iXSAu
Ym9yZGVyLWxpbmUtbGVmdCB7Ci0gIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgdG9wOiBjYWxjKDBw
eCAtIHZhcigtLXRpbnlTaXplKSAvIDIpOwotICBsZWZ0OiAwOwotICBoZWlnaHQ6IGNhbGModmFy
KC0tdGlueVNpemUpIC8gMik7Ci0gIHdpZHRoOiAycHg7Ci0gIGJhY2tncm91bmQ6IHZhcigtLWJs
YWNrKTsKLX0KLQotLnRpbWVsaW5lPi5jb250ZW50Pi54LWF4aXMgLnNjYWxlW2NsYXNzKj0iZ3Jv
dXAtIl0gLmJvcmRlci1saW5lLXJpZ2h0IHsKLSAgcG9zaXRpb246IGFic29sdXRlOwotICB0b3A6
IGNhbGMoMHB4IC0gdmFyKC0tdGlueVNpemUpIC8gMik7Ci0gIHJpZ2h0OiAwOwotICBoZWlnaHQ6
IGNhbGModmFyKC0tdGlueVNpemUpIC8gMik7Ci0gIHdpZHRoOiAycHg7Ci0gIGJhY2tncm91bmQ6
IHZhcigtLWJsYWNrKTsKLX0KLQotLnRpbWVsaW5lPi5jb250ZW50Pi54LWF4aXMgLnNjYWxlW2Ns
YXNzKj0iZ3JvdXAtIl0gLmxpbmUgewotICBiYWNrZ3JvdW5kOiB2YXIoLS1ibGFjayk7Ci19Ci0K
LS50aW1lbGluZT4uY29udGVudD4ueC1heGlzIC5zY2FsZVtjbGFzcyo9Imdyb3VwLSJdIC50ZXh0
IHsKLSAgbWluLWhlaWdodDogY2FsYyh2YXIoLS1zbWFsbFNpemUpKTsKLSAgcG9zaXRpb246IGFi
c29sdXRlOwotICBsZWZ0OiA1MCU7Ci0gIHRvcDogY2FsYyg4cHggKyB2YXIoLS10aW55U2l6ZSkp
OwotfQotCi0udGltZWxpbmU+LmNvbnRlbnQ+LngtYXhpcy5zY2FsZS05MGRlZyAuc2NhbGVbY2xh
c3MqPSJncm91cC0iXSAudGV4dCB7Ci0gIHRvcDogY2FsYyg0cHggKyB2YXIoLS10aW55U2l6ZSkp
OwotfQotCi0udGltZWxpbmU+LmNvbnRlbnQ+LngtYXhpcy50b3AgLnNjYWxlIHsKLSAgYm9yZGVy
OiBub25lOwotICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tYm9yZGVyQ29sb3JJbmxp
bmVFbGVtZW50KTsKLX0KLQotLnRpbWVsaW5lPi5jb250ZW50Pi54LWF4aXMudG9wIC5zY2FsZVtj
bGFzcyo9Imdyb3VwLSJdewotICBib3JkZXItY29sb3I6IHZhcigtLWJsYWNrKTsKLX0KLQotLnRp
bWVsaW5lPi5jb250ZW50Pi54LWF4aXMudG9wIC5zY2FsZSAubGluZSB7Ci0gIHdpZHRoOiAycHg7
Ci0gIGhlaWdodDogdmFyKC0tdGlueVNpemUpOwotICBsZWZ0OiA1MCU7Ci0gIGJvdHRvbTogMDsK
LSAgZGlzcGxheTogYmxvY2s7Ci0gIGJhY2tncm91bmQ6IHZhcigtLWdyZXkpOwotICBwb3NpdGlv
bjogYWJzb2x1dGU7Ci19Ci0KLS50aW1lbGluZT4uY29udGVudD4ueC1heGlzLnRvcCAuc2NhbGVb
Y2xhc3MqPSJncm91cC0iXSAubGluZSB7Ci0gIGJhY2tncm91bmQ6IHZhcigtLWJsYWNrKTsKLX0K
LQotLnRpbWVsaW5lPi5jb250ZW50Pi54LWF4aXMudG9wIC5zY2FsZSAudGV4dCB7Ci0gIGxlZnQ6
IGNhbGModmFyKC0tdGlueVNpemUpICogMik7Ci0gIG1pbi1oZWlnaHQ6IGNhbGModmFyKC0tc21h
bGxTaXplKSAqIDQpOwotICB0b3A6IGNhbGModmFyKC0tc21hbGxTaXplKSAqIDIpOwotICAtd2Vi
a2l0LXRyYW5zZm9ybTogcm90YXRlKDMwMGRlZyk7Ci0gIC1tb3otdHJhbnNmb3JtOiByb3RhdGUo
MzAwZGVnKTsKLSAgLW8tdHJhbnNmb3JtOiByb3RhdGUoMzAwZGVnKTsKLSAgLW1zLXRyYW5zZm9y
bTogcm90YXRlKDMwMGRlZyk7Ci0gIHRyYW5zZm9ybTogcm90YXRlKDMwMGRlZyk7Ci0gIHdoaXRl
LXNwYWNlOiBub3dyYXA7Ci19Ci0KLS50aW1lbGluZT4uY29udGVudD4ueC1heGlzLnRvcCAuc2Nh
bGVbY2xhc3MqPSJncm91cC0iXSAuYm9yZGVyLWxpbmUtbGVmdCB7Ci0gIHRvcDogYXV0bzsKLSAg
Ym90dG9tOiBjYWxjKDBweCAtIHZhcigtLXRpbnlTaXplKSAvIDIpOwotfQotCi0udGltZWxpbmU+
LmNvbnRlbnQ+LngtYXhpcy50b3AgLnNjYWxlW2NsYXNzKj0iZ3JvdXAtIl0gLmJvcmRlci1saW5l
LXJpZ2h0IHsKLSAgdG9wOiBhdXRvOwotICBib3R0b206IGNhbGMoMHB4IC0gdmFyKC0tdGlueVNp
emUpIC8gMik7Ci19Ci0KLS50aW1lbGluZT4uY29udGVudD4ueC1heGlzLnRvcCAuc2NhbGVbY2xh
c3MqPSJncm91cC0iXSAudGV4dCB7Ci0gIGxlZnQ6IDU0JTsKLX0KLQotLnRpbWVsaW5lPi5oZWFk
ZXIud2l0aC10b3AteC1heGlzIHsKLSAgcGFkZGluZy10b3A6IGNhbGModmFyKC0tc21hbGxTaXpl
KSAqIDQuNSk7Ci19Ci0KLS50aW1lbGluZT4uY29udGVudD4ueC1heGlzIC5zY2FsZSAudGV4dCBh
IHsKLSAgZm9udC1zaXplOiB2YXIoLS10aW55U2l6ZSk7Ci19Ci0KLS5sZW5nZW5kLCAudGltZWxp
bmU+LmNvbnRlbnQgLmxlbmdlbmR7Ci0gIGRpc3BsYXk6IGZsZXg7Ci0gIGZsZXgtZGlyZWN0aW9u
OiByb3c7Ci19Ci0KLS5sZW5nZW5kLmhvcml6b250YWwsIC50aW1lbGluZT4uaGVhZGVyIC5sZW5n
ZW5kIHsKLSAgZGlzcGxheTogZmxleDsKLSAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKLX0KLQot
LmxlbmdlbmQ+Lml0ZW0gewotICBmb250LXNpemU6IHZhcigtLXRpbnlTaXplKTsKLSAgdGV4dC1h
bGlnbjogbGVmdDsKLSAgbWFyZ2luOiA0cHg7Ci0gIGRpc3BsYXk6IGZsZXg7Ci0gIHZlcnRpY2Fs
LWFsaWduOiBtaWRkbGU7Ci0gIGFsaWduLWl0ZW1zOiBjZW50ZXI7Ci19Ci0KLS5sZW5nZW5kPi5p
dGVtIC5kb3R7Ci0gIHdpZHRoOiB2YXIoLS1zbWFsbFNpemUpOwotICBoZWlnaHQ6IHZhcigtLXNt
YWxsU2l6ZSk7Ci0gIGJvcmRlci1yYWRpdXM6IHZhcigtLXNtYWxsU2l6ZSk7Ci0gIGZvbnQtc2l6
ZTogY2FsYyh2YXIoLS10aW55U2l6ZSkpOwotICB0ZXh0LWFsaWduOiBjZW50ZXI7Ci0gIGZsZXg6
IG5vbmU7Ci0gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7Ci0gIGFsaWduLWl0ZW1zOiBjZW50ZXI7
Ci0gIGRpc3BsYXk6IGZsZXg7Ci0gIG1hcmdpbjogMCB2YXIoLS10aW55U2l6ZSk7Ci0gIHBvc2l0
aW9uOiByZWxhdGl2ZTsKLX0KLS5sZW5nZW5kPi5pdGVtIC5kb3QgaW1nLCAubGVuZ2VuZD4uaXRl
bSAuZG90IC50ZXh0IHsKLSAgd2lkdGg6IHZhcigtLXRpbnlTaXplKTsKLSAgaGVpZ2h0OiB2YXIo
LS10aW55U2l6ZSk7Ci0gIGZvbnQtc2l6ZTogdmFyKC0tdGlueVNpemUpOwotfSAKLS5sZW5nZW5k
Pi5pdGVtIC5kb3Q+aW1nLCAubGVuZ2VuZD4uaXRlbSAuZG90Pi50ZXh0IHsKLSAgcG9zaXRpb246
IGFic29sdXRlOwotICB0b3A6IGNhbGMoKHZhcigtLXNtYWxsU2l6ZSkgLSB2YXIoLS10aW55U2l6
ZSkpIC8gMik7Ci0gIGxlZnQ6IGNhbGMoKHZhcigtLXNtYWxsU2l6ZSkgLSB2YXIoLS10aW55U2l6
ZSkpIC8gMik7Ci19Ci0udGltZWxpbmUubGVuZ2VuZD4uaXRlbSAuZG90OjpiZWZvcmV7Ci0gIGxl
ZnQ6IGNhbGMoMHB4IC0gdmFyKC0tdGlueVNpemUpKTsKLSAgd2lkdGg6IHZhcigtLXRpbnlTaXpl
KTsKLSAgY29udGVudDogIiI7Ci0gIGhlaWdodDogMXB4OwotICBiYWNrZ3JvdW5kOiB2YXIoLS1i
b3JkZXJDb2xvcklubGluZUVsZW1lbnQpOwotICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Ci0gIGZs
ZXg6IG5vbmU7Ci0gIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLX0KLS50aW1lbGluZS5sZW5nZW5kPi5p
dGVtIC5kb3Q6OmFmdGVyewotICByaWdodDogY2FsYygwcHggLSB2YXIoLS10aW55U2l6ZSkpOwot
ICB3aWR0aDogdmFyKC0tdGlueVNpemUpOwotICBjb250ZW50OiAiIjsKLSAgaGVpZ2h0OiAxcHg7
Ci0gIGJhY2tncm91bmQ6IHZhcigtLWJvcmRlckNvbG9ySW5saW5lRWxlbWVudCk7Ci0gIGRpc3Bs
YXk6IGlubGluZS1ibG9jazsKLSAgZmxleDogbm9uZTsKLSAgcG9zaXRpb246IGFic29sdXRlOwot
fQotLmxlbmdlbmQ+Lml0ZW0gLmxhYmVsewotICBmb250LXNpemU6IHZhcigtLXRpbnlTaXplKTsK
LSAgcGFkZGluZzogMCA0cHg7Ci19Ci0KLUBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRh
cmspIHsKLQotICAudGltZWxpbmU+LmNvbnRlbnQ+LngtYXhpcyAuc2NhbGVbY2xhc3MqPSJncm91
cC0iXSB7Ci0gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS13aGl0ZSk7Ci0gIH0KLQotICAudGltZWxp
bmU+LmNvbnRlbnQ+LngtYXhpcyAuc2NhbGVbY2xhc3MqPSJncm91cC0iXSAuYm9yZGVyLWxpbmUt
bGVmdCB7Ci0gICAgYmFja2dyb3VuZDogdmFyKC0td2hpdGUpOwotICB9Ci0KLSAgLnRpbWVsaW5l
Pi5jb250ZW50Pi54LWF4aXMgLnNjYWxlW2NsYXNzKj0iZ3JvdXAtIl0gLmJvcmRlci1saW5lLXJp
Z2h0IHsKLSAgICBiYWNrZ3JvdW5kOiB2YXIoLS13aGl0ZSk7Ci0gIH0KLQotICAudGltZWxpbmU+
LmNvbnRlbnQ+LngtYXhpcyAuc2NhbGVbY2xhc3MqPSJncm91cC0iXSAubGluZSB7Ci0gICAgYmFj
a2dyb3VuZDogdmFyKC0td2hpdGUpOwotICB9Ci0KLSAgLnRpbWVsaW5lPi5jb250ZW50Pi54LWF4
aXMudG9wIC5zY2FsZVtjbGFzcyo9Imdyb3VwLSJdIC5saW5lIHsKLSAgICBiYWNrZ3JvdW5kOiB2
YXIoLS13aGl0ZSk7Ci0gIH0KLQotICAudGltZWxpbmU+LmNvbnRlbnQ+LngtYXhpcy50b3AgLnNj
YWxlW2NsYXNzKj0iZ3JvdXAtIl17Ci0gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS13aGl0ZSk7Ci0g
IH0KLX0KLQotLyogZm9ybSBhbmQgaW5wdXQqLwotLmlucHV0IHsKLSAgbWFyZ2luOiB2YXIoLS1j
b2xQYWRkaW5nU2l6ZSk7Ci0gIG1hcmdpbi1sZWZ0OiAwOwotICBwb3NpdGlvbjogcmVsYXRpdmU7
Ci0gIGRpc3BsYXk6IGZsZXg7Ci0gIGFsaWduLWl0ZW1zOiBjZW50ZXI7Ci19Ci0KLXNlbGVjdCwg
aW5wdXQgewotICBmb250LXdlaWdodDogY2FsYygyLjUgKiB2YXIoLS1mb250V2VpZ2h0KSk7Ci19
Ci0KLS5yb3cgLmlucHV0IHsKLSAgbWFyZ2luOiAwOwotICBtYXJnaW4tcmlnaHQ6IHZhcigtLWNv
bFBhZGRpbmdTaXplKTsKLX0KLQotLmlucHV0PmxhYmVsIHsKLSAgbWFyZ2luOiAwOwotICBtYXJn
aW4tbGVmdDogdmFyKC0tZm9ybUxhYmVsUGFkZGluZyk7Ci0gIGZvbnQtY29sb3I6IHZhcigtLWlu
dmVyc2VDb2xvcik7Ci19Ci0KLS5pbnB1dD5sYWJlbC5zd2l0Y2ggewotICBmbGV4OiBub25lOwot
ICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gIHJpZ2h0OiAwOwotfQotCi0uaW5wdXQ+aW5wdXQsIC5p
bnB1dD5zZWxlY3QgewotICB3aWR0aDogMTAwJTsKLSAgbWFyZ2luOiAwOwotfQotCi0uaW5wdXQ+
LnByZWZpeCB7Ci0gIHdpZHRoOiBjYWxjKHZhcigtLW1lZGl1bVNpemUpICogMyk7Ci0gIGJhY2tn
cm91bmQ6IHZhcigtLWdyZXlMaWdodGVzdCk7Ci0gIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgbGVm
dDogMDsKLSAgaGVpZ2h0OiAxMDAlOwotICBib3JkZXItcmFkaXVzOiA0cHggMCAwIDRweDsKLSAg
ZGlzcGxheTogZmxleDsKLSAgYWxpZ24taXRlbXM6IGNlbnRlcjsKLSAgYm9yZGVyOiAxcHggc29s
aWQgdmFyKC0tZ3JleSk7Ci0gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7Ci19Ci0KLS5pbnB1dD4u
cHJlZml4ICogewotICB0ZXh0LWFsaWduOiBjZW50ZXI7Ci0gIHdpZHRoOiAxMDAlOwotfQotCi0u
aW5wdXQ+LnByZWZpeH5sYWJlbCB7Ci0gIG1hcmdpbi1sZWZ0OiBjYWxjKHZhcigtLWZvcm1MYWJl
bFBhZGRpbmcpICsgdmFyKC0tbWVkaXVtU2l6ZSkgKiAzKTsKLX0KLQotLmlucHV0Pi5wcmVmaXgu
aW52YWxpZCB7Ci0gIGJvcmRlci1jb2xvcjogdmFyKC0tcmVkKTsKLX0KLQotLmlucHV0PmlucHV0
W3R5cGU9InRleHQiXVtyZXF1aXJlZF0sIC5pbnB1dD5pbnB1dFt0eXBlPSJudW1iZXIiXVtyZXF1
aXJlZF0sCi0uaW5wdXQ+aW5wdXRbdHlwZT0icGFzc3dvcmQiXVtyZXF1aXJlZF0sIC5pbnB1dD5p
bnB1dFt0eXBlPSJlbWFpbCJdW3JlcXVpcmVkXSwgLmlucHV0PnNlbGVjdCB7Ci0gIC13ZWJraXQt
YXBwZWFyYW5jZTogbm9uZTsKLSAgLW1vei1hcHBlYXJhbmNlOiBub25lOwotICBhcHBlYXJhbmNl
OiBub25lOwotICBmb250LXNpemU6IHZhcigtLXNtYWxsU2l6ZSk7Ci0gIGJveC1zaXppbmc6IGJv
cmRlci1ib3g7Ci0gIHBhZGRpbmctdG9wOiBjYWxjKHZhcigtLXRpbnlTaXplKSArIDRweCk7Ci0g
IHBhZGRpbmctbGVmdDogdmFyKC0tZm9ybUxhYmVsUGFkZGluZyk7Ci0gIHBhZGRpbmctcmlnaHQ6
IHZhcigtLWZvcm1MYWJlbFBhZGRpbmcpOwotICB0ZXh0LWFsaWduOiBsZWZ0OwotICBib3JkZXIt
cmFkaXVzOiA0cHg7Ci0gIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWdyZXlEYXJrZXIpOwotICBi
YWNrZ3JvdW5kOiBub25lOwotICB2ZXJ0aWNhbC1hbGlnbjogdG9wOwotfQotCi0uaW5wdXQ+aW5w
dXRbdHlwZT0idGV4dCJdW3JlcXVpcmVkXVtkaXNhYmxlZF0sIC5pbnB1dD5pbnB1dFt0eXBlPSJu
dW1iZXIiXVtyZXF1aXJlZF1bZGlzYWJsZWRdLAotLmlucHV0PmlucHV0W3R5cGU9InBhc3N3b3Jk
Il1bcmVxdWlyZWRdW2Rpc2FibGVkXSwgLmlucHV0PmlucHV0W3R5cGU9ImVtYWlsIl1bcmVxdWly
ZWRdW2Rpc2FibGVkXSwgLmlucHV0PnNlbGVjdFtkaXNhYmxlZF0gewotICBib3JkZXI6IDFweCBz
b2xpZCB2YXIoLS1ncmV5TGlnaHRlcik7Ci19Ci0KLS5pbnB1dD4ucHJlZml4K2lucHV0W3R5cGU9
InRleHQiXVtyZXF1aXJlZF0sIC5pbnB1dD4ucHJlZml4K2lucHV0W3R5cGU9Im51bWJlciJdW3Jl
cXVpcmVkXSwKLS5pbnB1dD4ucHJlZml4K2lucHV0W3R5cGU9InBhc3N3b3JkIl1bcmVxdWlyZWRd
LCAuaW5wdXQ+LnByZWZpeCtpbnB1dFt0eXBlPSJlbWFpbCJdW3JlcXVpcmVkXSwgLmlucHV0Pi5w
cmVmaXgrc2VsZWN0IHsKLSAgcGFkZGluZy1sZWZ0OiBjYWxjKHZhcigtLWZvcm1MYWJlbFBhZGRp
bmcpICsgdmFyKC0tbWVkaXVtU2l6ZSkgKiAzKTsKLX0KLQotLmlucHV0PmlucHV0W3R5cGU9InRl
eHQiXVtyZXF1aXJlZF1+bGFiZWwsIC5pbnB1dD5pbnB1dFt0eXBlPSJudW1iZXIiXVtyZXF1aXJl
ZF1+bGFiZWwsCi0uaW5wdXQ+aW5wdXRbdHlwZT0icGFzc3dvcmQiXVtyZXF1aXJlZF1+bGFiZWws
IC5pbnB1dD5pbnB1dFt0eXBlPSJlbWFpbCJdW3JlcXVpcmVkXX5sYWJlbCwgLmlucHV0PnNlbGVj
dH5sYWJlbCB7Ci0gIHBvaW50ZXItZXZlbnRzOiBub25lOwotICBkaXNwbGF5OiBibG9jazsKLSAg
cG9zaXRpb246IGFic29sdXRlOwotICB0b3A6IGNhbGMoKHZhcigtLXRpbnlTaXplKSArIDRweCkg
LyAyKTsKLSAgY29sb3I6IHZhcigtLWludmVyc2VDb2xvcik7Ci0gIHRyYW5zaXRpb24tdGltaW5n
LWZ1bmN0aW9uOiBlYXNlLWluOwotICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAuMTI1czsKLSAgZm9u
dC1zaXplOiB2YXIoLS1zbWFsbFNpemUpOwotICBoZWlnaHQ6IHZhcigtLXNtYWxsU2l6ZSk7Ci0g
IHotaW5kZXg6IDE7Ci19Ci0KLS5pbnB1dD5pbnB1dFt0eXBlPSJ0ZXh0Il1bcmVxdWlyZWRdW2Rp
c2FibGVkXSwgLmlucHV0PmlucHV0W3R5cGU9Im51bWJlciJdW3JlcXVpcmVkXVtkaXNhYmxlZF0s
Ci0uaW5wdXQ+aW5wdXRbdHlwZT0icGFzc3dvcmQiXVtyZXF1aXJlZF1bZGlzYWJsZWRdLCAuaW5w
dXQ+aW5wdXRbdHlwZT0iZW1haWwiXVtyZXF1aXJlZF1bZGlzYWJsZWRdLCAuaW5wdXQ+c2VsZWN0
W2Rpc2FibGVkXSB7Ci0gIGNvbG9yOiB2YXIoLS1ncmV5RGFya2VyKTsKLX0KLQotLmlucHV0Pmlu
cHV0W3R5cGU9InRleHQiXVtyZXF1aXJlZF1bZGlzYWJsZWRdfmxhYmVsLCAuaW5wdXQ+aW5wdXRb
dHlwZT0ibnVtYmVyIl1bcmVxdWlyZWRdW2Rpc2FibGVkXX5sYWJlbCwKLS5pbnB1dD5pbnB1dFt0
eXBlPSJwYXNzd29yZCJdW3JlcXVpcmVkXVtkaXNhYmxlZF1+bGFiZWwsIC5pbnB1dD5pbnB1dFt0
eXBlPSJlbWFpbCJdW3JlcXVpcmVkXVtkaXNhYmxlZF1+bGFiZWwsIC5pbnB1dD5zZWxlY3RbZGlz
YWJsZWRdfmxhYmVsIHsKLSAgY29sb3I6IHZhcigtLWdyZXkpOwotICBmb250LXNpemU6IHZhcigt
LXRpbnlTaXplKTsKLSAgdG9wOiA0cHg7Ci19Ci0KLQotLmlucHV0PmlucHV0W3R5cGU9InRleHQi
XVtyZXF1aXJlZF06Zm9jdXMsIC5pbnB1dD5pbnB1dFt0eXBlPSJudW1iZXIiXVtyZXF1aXJlZF06
Zm9jdXMsCi0uaW5wdXQ+aW5wdXRbdHlwZT0icGFzc3dvcmQiXVtyZXF1aXJlZF06Zm9jdXMsIC5p
bnB1dD5pbnB1dFt0eXBlPSJlbWFpbCJdW3JlcXVpcmVkXTpmb2N1cywgLmlucHV0PnNlbGVjdDpm
b2N1cyB7Ci0gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsKLSAgLW1vei1hcHBlYXJhbmNlOiBu
b25lOwotICBhcHBlYXJhbmNlOiBub25lOwotICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ibHVl
KTsKLSAgYm9yZGVyLXJhZGl1czogNHB4OwotICBib3gtc2hhZG93OiBub25lOwotfQotCi0uaW5w
dXQ+aW5wdXRbdHlwZT0idGV4dCJdW3JlcXVpcmVkXTpmb2N1c35sYWJlbCwgLmlucHV0PmlucHV0
W3R5cGU9Im51bWJlciJdW3JlcXVpcmVkXTpmb2N1c35sYWJlbCwKLS5pbnB1dD5pbnB1dFt0eXBl
PSJwYXNzd29yZCJdW3JlcXVpcmVkXTpmb2N1c35sYWJlbCwgLmlucHV0PmlucHV0W3R5cGU9ImVt
YWlsIl1bcmVxdWlyZWRdOmZvY3VzfmxhYmVsIHsKLSAgZm9udC1zaXplOiB2YXIoLS10aW55U2l6
ZSk7Ci0gIHRvcDogNHB4OwotfQotCi0uaW5wdXQ+aW5wdXRbdHlwZT0idGV4dCJdW3JlcXVpcmVk
XTp2YWxpZH5sYWJlbCwgLmlucHV0PmlucHV0W3R5cGU9Im51bWJlciJdW3JlcXVpcmVkXTp2YWxp
ZH5sYWJlbCwKLS5pbnB1dD5pbnB1dFt0eXBlPSJwYXNzd29yZCJdW3JlcXVpcmVkXTp2YWxpZH5s
YWJlbCwgLmlucHV0PmlucHV0W3R5cGU9ImVtYWlsIl1bcmVxdWlyZWRdOnZhbGlkfmxhYmVsLCAu
aW5wdXQ+c2VsZWN0OnZhbGlkfmxhYmVsIHsKLSAgZm9udC1zaXplOiB2YXIoLS10aW55U2l6ZSk7
Ci0gIHRvcDogNHB4OwotfQotCi1AbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSB7
Ci0gIC5pbnB1dD4ucHJlZml4IHsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1ibGFjayk7
Ci0gIH0KLQotICAuaW5wdXQ+aW5wdXRbdHlwZT0idGV4dCJdW3JlcXVpcmVkXSwgLmlucHV0Pmlu
cHV0W3R5cGU9Im51bWJlciJdW3JlcXVpcmVkXSwKLSAgLmlucHV0PmlucHV0W3R5cGU9InBhc3N3
b3JkIl1bcmVxdWlyZWRdLCAuaW5wdXQ+aW5wdXRbdHlwZT0iZW1haWwiXVtyZXF1aXJlZF0sIC5p
bnB1dD5zZWxlY3QgewotICAgIGNvbG9yOiB2YXIoLS13aGl0ZSk7Ci0gIH0KLQotICAuaW5wdXQ+
aW5wdXRbdHlwZT0idGV4dCJdW3JlcXVpcmVkXX5sYWJlbCwgLmlucHV0PmlucHV0W3R5cGU9Im51
bWJlciJdW3JlcXVpcmVkXX5sYWJlbCwKLSAgLmlucHV0PmlucHV0W3R5cGU9InBhc3N3b3JkIl1b
cmVxdWlyZWRdfmxhYmVsLCAuaW5wdXQ+aW5wdXRbdHlwZT0iZW1haWwiXVtyZXF1aXJlZF1+bGFi
ZWwsIC5pbnB1dD5zZWxlY3R+bGFiZWwgewotICAgIGNvbG9yOiB2YXIoLS1ncmV5KTsKLSAgfQot
Ci0gIC5pbnB1dD5pbnB1dFt0eXBlPSJ0ZXh0Il1bcmVxdWlyZWRdW2Rpc2FibGVkXSwgLmlucHV0
PmlucHV0W3R5cGU9Im51bWJlciJdW3JlcXVpcmVkXVtkaXNhYmxlZF0sCi0gIC5pbnB1dD5pbnB1
dFt0eXBlPSJwYXNzd29yZCJdW3JlcXVpcmVkXVtkaXNhYmxlZF0sIC5pbnB1dD5pbnB1dFt0eXBl
PSJlbWFpbCJdW3JlcXVpcmVkXVtkaXNhYmxlZF0sIC5pbnB1dD5zZWxlY3RbZGlzYWJsZWRdIHsK
LSAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ncmV5RGFya2VyKTsKLSAgICBjb2xvcjogdmFy
KC0tYmxhY2tEYXJrKTsKLSAgfQotCi0gIC5pbnB1dD5pbnB1dFt0eXBlPSJ0ZXh0Il1bcmVxdWly
ZWRdW2Rpc2FibGVkXX5sYWJlbCwgLmlucHV0PmlucHV0W3R5cGU9Im51bWJlciJdW3JlcXVpcmVk
XVtkaXNhYmxlZF1+bGFiZWwsCi0gIC5pbnB1dD5pbnB1dFt0eXBlPSJwYXNzd29yZCJdW3JlcXVp
cmVkXVtkaXNhYmxlZF1+bGFiZWwsIC5pbnB1dD5pbnB1dFt0eXBlPSJlbWFpbCJdW3JlcXVpcmVk
XVtkaXNhYmxlZF1+bGFiZWwsIC5pbnB1dD5zZWxlY3RbZGlzYWJsZWRdfmxhYmVsIHsKLSAgICBj
b2xvcjogdmFyKC0tZ3JleURhcmtlcik7Ci0gIH0KLQotICAuaW5wdXQ+aW5wdXRbdHlwZT0idGV4
dCJdW3JlcXVpcmVkXTpmb2N1cywgLmlucHV0PmlucHV0W3R5cGU9Im51bWJlciJdW3JlcXVpcmVk
XTpmb2N1cywKLSAgLmlucHV0PmlucHV0W3R5cGU9InBhc3N3b3JkIl1bcmVxdWlyZWRdOmZvY3Vz
LCAuaW5wdXQ+aW5wdXRbdHlwZT0iZW1haWwiXVtyZXF1aXJlZF06Zm9jdXMsIC5pbnB1dD5zZWxl
Y3Q6Zm9jdXMgewotICAgIGNvbG9yOiB2YXIoLS13aGl0ZSk7Ci0gIH0KLX0KLQotLmlucHV0Pmlu
cHV0W3R5cGU9Im51bWJlciJdOm91dC1vZi1yYW5nZSwgLmlucHV0PmlucHV0W3R5cGU9InRleHQi
XVtyZXF1aXJlZF0uaW52YWxpZCwgLmlucHV0PmlucHV0W3R5cGU9Im51bWJlciJdW3JlcXVpcmVk
XS5pbnZhbGlkLAotLmlucHV0PmlucHV0W3R5cGU9InBhc3N3b3JkIl1bcmVxdWlyZWRdLmludmFs
aWQsIC5pbnB1dD5pbnB1dFt0eXBlPSJlbWFpbCJdW3JlcXVpcmVkXS5pbnZhbGlkLCAuaW5wdXQ+
c2VsZWN0LmludmFsaWQgewotICBib3JkZXItY29sb3I6IHZhcigtLXJlZCk7Ci0gIGNvbG9yOiB2
YXIoLS1yZWQpOwotfQotCi0uaW5wdXQ+aW5wdXRbdHlwZT0ibnVtYmVyIl06b3V0LW9mLXJhbmdl
fmxhYmVsLCAuaW5wdXQ+aW5wdXRbdHlwZT0idGV4dCJdW3JlcXVpcmVkXS5pbnZhbGlkfmxhYmVs
LCAuaW5wdXQ+aW5wdXRbdHlwZT0ibnVtYmVyIl1bcmVxdWlyZWRdLmludmFsaWR+bGFiZWwsCi0u
aW5wdXQ+aW5wdXRbdHlwZT0icGFzc3dvcmQiXVtyZXF1aXJlZF0uaW52YWxpZH5sYWJlbCwgLmlu
cHV0PmlucHV0W3R5cGU9ImVtYWlsIl1bcmVxdWlyZWRdLmludmFsaWR+bGFiZWwsIC5pbnB1dD5z
ZWxlY3QuaW52YWxpZH5sYWJlbCB7Ci0gIGNvbG9yOiB2YXIoLS1yZWQpOwotICBmb250LXNpemU6
IHZhcigtLXRpbnlTaXplKTsKLSAgdG9wOiA0cHg7Ci19Ci0KLS5pbnB1dD5pbnB1dFt0eXBlPSJu
dW1iZXIiXTo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbiB7Ci0gIC13ZWJraXQtYXBwZWFyYW5j
ZTogbm9uZTsKLSAgYXBwZWFyYW5jZTogbm9uZTsKLX0KLQotLmlucHV0PmlucHV0W3R5cGU9InJh
bmdlIl0gewotICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7Ci0gIC1tb3otYXBwZWFyYW5jZTog
bm9uZTsKLSAgYXBwZWFyYW5jZTogbm9uZTsKLSAgb3BhY2l0eTogMC44OwotICBiYWNrZ3JvdW5k
OiB2YXIoLS1ncmV5KTsKLSAgb3V0bGluZTogbm9uZTsKLSAgdHJhbnNpdGlvbi1kdXJhdGlvbjog
LjEyNXM7Ci0gIGhlaWdodDogMnB4OwotICB3aWR0aDogYXV0bzsKLSAgbWFyZ2luOiAwIHZhcigt
LWZvcm1MYWJlbFBhZGRpbmcpOwotICBmbGV4OiBhdXRvOwotfQotCi0uaW5wdXQ+aW5wdXRbdHlw
ZT0icmFuZ2UiXTpob3ZlciB7Ci0gIG9wYWNpdHk6IDE7Ci19Ci0KLS5pbnB1dD5pbnB1dFt0eXBl
PSJyYW5nZSJdOjotd2Via2l0LXNsaWRlci10aHVtYiB7Ci0gIC13ZWJraXQtYXBwZWFyYW5jZTog
bm9uZTsKLSAgYXBwZWFyYW5jZTogbm9uZTsKLSAgd2lkdGg6IHZhcigtLXRpbnlTaXplKTsKLSAg
aGVpZ2h0OiB2YXIoLS10aW55U2l6ZSk7Ci0gIGJhY2tncm91bmQ6IHZhcigtLWdyZXkpOwotICBi
b3JkZXItcmFkaXVzOiB2YXIoLS10aW55U2l6ZSk7Ci0gIGN1cnNvcjogcG9pbnRlcjsKLX0KLQot
LmlucHV0PmlucHV0W3R5cGU9InJhbmdlIl06Oi13ZWJraXQtc2xpZGVyLXRodW1iOmhvdmVyIHsK
LSAgYmFja2dyb3VuZDogdmFyKC0tZ3JleURhcmtlcik7Ci19Ci0KLS5pbnB1dD5pbnB1dFt0eXBl
PSJyYW5nZSJdLmludmFsaWQ6Oi13ZWJraXQtc2xpZGVyLXRodW1iIHsKLSAgYmFja2dyb3VuZDog
dmFyKC0tcmVkKTsKLX0KLQotLmlucHV0PmlucHV0W3R5cGU9InJhbmdlIl0uaW52YWxpZDo6LXdl
YmtpdC1zbGlkZXItdGh1bWI6aG92ZXIgewotICBiYWNrZ3JvdW5kOiB2YXIoLS1yZWQpOwotfQot
Ci0uaW5wdXQ+aW5wdXRbdHlwZT0icmFuZ2UiXTpvdXQtb2YtcmFuZ2UsIC5pbnB1dD5pbnB1dFt0
eXBlPSJyYW5nZSJdLmludmFsaWQgewotICBiYWNrZ3JvdW5kOiB2YXIoLS1yZWQpOwotfQotCi0u
aW5wdXQ+aW5wdXRbdHlwZT0icmFuZ2UiXTpvdXQtb2YtcmFuZ2U6Oi13ZWJraXQtc2xpZGVyLXRo
dW1iLCAuaW5wdXQ+aW5wdXRbdHlwZT0icmFuZ2UiXS5pbnZhbGlkOjotd2Via2l0LXNsaWRlci10
aHVtYiB7Ci0gIGNvbG9yOiB2YXIoLS1yZWQpOwotfQotCi0uaW5wdXQ+aW5wdXRbdHlwZT0icmFu
Z2UiXStpbnB1dFt0eXBlPSJudW1iZXIiXSB7Ci0gIGJhY2tncm91bmQ6IG5vbmU7Ci0gIHdpZHRo
OiBhdXRvOwotICBtaW4td2lkdGg6IGNhbGModmFyKC0tbWVkaXVtU2l6ZSkgKiAyKTsKLSAgYm9y
ZGVyOiAxcHggc29saWQgdmFyKC0tZ3JleSk7Ci0gIHRleHQtYWxpZ246IHJpZ2h0OwotICBwYWRk
aW5nOiAzcHg7Ci19Ci0KLS5pbnB1dD5pbnB1dFt0eXBlPSJyYW5nZSJdK2lucHV0W3R5cGU9Im51
bWJlciJdOm91dC1vZi1yYW5nZSB7Ci0gIGJvcmRlci1jb2xvcjogdmFyKC0tcmVkKTsKLSAgY29s
b3I6IHZhcigtLXJlZCk7Ci19Ci0KLUBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmsp
IHsKLSAgLmlucHV0PmlucHV0W3R5cGU9InJhbmdlIl0raW5wdXRbdHlwZT0ibnVtYmVyIl0gewot
ICAgIGNvbG9yOiB2YXIoLS13aGl0ZSk7Ci0gIH0KLX0KLQotLmlucHV0PmlucHV0W3R5cGU9InJh
bmdlIl0raW5wdXRbdHlwZT0ibnVtYmVyIl06Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24gewot
ICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7Ci0gIGFwcGVhcmFuY2U6IG5vbmU7Ci19Ci0KLS5p
bnB1dD4uZG91YmxlLXJhbmdlIHsKLSAgZmxleDogYXV0bzsKLX0KLQotLmlucHV0PmxhYmVsICsg
LmRvdWJsZS1yYW5nZSB7Ci0gIG1hcmdpbi1sZWZ0OiB2YXIoLS1mb3JtTGFiZWxQYWRkaW5nKTsK
LX0KLQotLmRvdWJsZS1yYW5nZSB7Ci0gIGRpc3BsYXk6IGZsZXg7Ci0gIGFsaWduLWl0ZW1zOiBj
ZW50ZXI7Ci19Ci0KLS5kb3VibGUtcmFuZ2U+LnJhbmdlIHsKLSAgZmxleDogYXV0bzsKLSAgcG9z
aXRpb246IHJlbGF0aXZlOwotICBtYXJnaW46IDAgdmFyKC0tZm9ybUxhYmVsUGFkZGluZyk7Ci0g
IGhlaWdodDogdmFyKC0tdGlueVNpemUpOwotfQotCi0uZG91YmxlLXJhbmdlPmlucHV0W3R5cGU9
Im51bWJlciJdIHsKLSAgYmFja2dyb3VuZDogbm9uZTsKLSAgbWluLXdpZHRoOiBjYWxjKHZhcigt
LW1lZGl1bVNpemUpICogMik7Ci0gIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWdyZXkpOwotICB0
ZXh0LWFsaWduOiByaWdodDsKLSAgcGFkZGluZzogM3B4OwotfQotCi0uZG91YmxlLXJhbmdlPmlu
cHV0W3R5cGU9Im51bWJlciJdOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uIHsKLSAgLXdlYmtp
dC1hcHBlYXJhbmNlOiBub25lOwotICBhcHBlYXJhbmNlOiBub25lOwotfQotCi0uZG91YmxlLXJh
bmdlPi5yYW5nZT5pbnB1dFt0eXBlPSJyYW5nZSJdIHsKLSAgd2lkdGg6IDEwMCU7Ci0gIC13ZWJr
aXQtYXBwZWFyYW5jZTogbm9uZTsKLSAgLW1vei1hcHBlYXJhbmNlOiBub25lOwotICBhcHBlYXJh
bmNlOiBub25lOwotICBvcGFjaXR5OiAxOwotICBiYWNrZ3JvdW5kOiB2YXIoLS1ncmV5KTsKLSAg
b3V0bGluZTogbm9uZTsKLSAgdHJhbnNpdGlvbi1kdXJhdGlvbjogLjEyNXM7Ci0gIGhlaWdodDog
MnB4OwotICBwb2ludGVyLWV2ZW50czogbm9uZTsKLSAgcG9zaXRpb246IGFic29sdXRlOwotICBs
ZWZ0OiAwOwotICB0b3A6IGNhbGModmFyKC0tdGlueVNpemUpIC8gMiAtIDJweCk7Ci19Ci0KLUBt
ZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIHsKLSAgLmRvdWJsZS1yYW5nZT4ucmFu
Z2U+aW5wdXRbdHlwZT0icmFuZ2UiXSB7Ci0gICAgYmFja2dyb3VuZDogdmFyKC0tZ3JleURhcmsp
OwotICB9Ci0KLSAgLmRvdWJsZS1yYW5nZT5pbnB1dFt0eXBlPSJudW1iZXIiXSB7Ci0gICAgY29s
b3I6IHZhcigtLXdoaXRlKTsKLSAgfQotfQotCi0uZG91YmxlLXJhbmdlPi5yYW5nZT5pbnB1dFt0
eXBlPSJyYW5nZSJdOmZpcnN0Ojotd2Via2l0LXNsaWRlci10aHVtYiB7Ci0gIGJhY2tncm91bmQ6
IHZhcigtLWdyZXkpOwotfQotCi0uZG91YmxlLXJhbmdlPi5yYW5nZT5pbnB1dFt0eXBlPSJyYW5n
ZSJdOmxhc3QtY2hpbGQ6Oi13ZWJraXQtc2xpZGVyLXRodW1iIHsKLSAgYmFja2dyb3VuZDogdmFy
KC0tZ3JleURhcmtlcik7Ci19Ci0KLS5kb3VibGUtcmFuZ2U+LnJhbmdlPmlucHV0W3R5cGU9InJh
bmdlIl06Oi13ZWJraXQtc2xpZGVyLXRodW1iIHsKLSAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25l
OwotICAtbW96LWFwcGVhcmFuY2U6IG5vbmU7Ci0gIGFwcGVhcmFuY2U6IG5vbmU7Ci0gIHBvaW50
ZXItZXZlbnRzOiBhbGw7Ci0gIHBvc2l0aW9uOiByZWxhdGl2ZTsKLSAgd2lkdGg6IHZhcigtLXRp
bnlTaXplKTsKLSAgaGVpZ2h0OiB2YXIoLS10aW55U2l6ZSk7Ci0gIGJhY2tncm91bmQ6IHZhcigt
LWdyZXkpOwotICBvdXRsaW5lOiBub25lOwotICBvcGFjaXR5OiAxOwotICB6LWluZGV4OiAxOwot
fQotCi0vKiBwcm9ncmVzcyBiYXIgKi8KLS5wcm9ncmVzcy1iYXItY29udGFpbmVyIHsKLSAgZGlz
cGxheTogZmxleDsKLSAgd2lkdGg6IDEwMCU7Ci0gIGJhY2tncm91bmQ6IHZhcigtLWdyZXlMaWdo
dGVzdCk7Ci19Ci0KLUBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIHsKLSAgLnBy
b2dyZXNzLWJhci1jb250YWluZXIgewotICAgIGJhY2tncm91bmQ6IHZhcigtLWJsYWNrKTsKLSAg
fQotfQotCi0ucHJvZ3Jlc3MtYmFyLWNvbnRhaW5lciAucHJvZ3Jlc3MtYmFyIHsKLSAgYmFja2dy
b3VuZDogdmFyKC0tYmx1ZSk7Ci0gIGNvbG9yOiB2YXIoLS13aGl0ZSk7Ci0gIG1pbi13aWR0aDog
MCU7Ci0gIHRleHQtYWxpZ246IGNlbnRlcjsKLSAgb3ZlcmZsb3c6IGhpZGRlbjsKLSAgaGVpZ2h0
OiB2YXIoLS1tZWRpdW1TaXplKTsKLSAgZm9udC1zaXplOiB2YXIoLS10aW55U2l6ZSk7Ci0gIGxp
bmUtaGVpZ2h0OiB2YXIoLS1tZWRpdW1TaXplKTsKLX0KLQotLnByb2dyZXNzLWJhci1jb250YWlu
ZXIgLnByb2dyZXNzLWJhci5zdWNjZXNzIHsKLSAgYmFja2dyb3VuZDogdmFyKC0tZ3JlZW4pOwot
fQotCi0ucHJvZ3Jlc3MtYmFyLWNvbnRhaW5lciAucHJvZ3Jlc3MtYmFyLmZhaWxlZCB7Ci0gIGJh
Y2tncm91bmQ6IHZhcigtLXJlZCk7Ci19Ci0KLS5wcm9ncmVzcy1iYXItY29udGFpbmVyIC5wcm9n
cmVzcy1iYXIuZXJyb3IgewotICBiYWNrZ3JvdW5kOiB2YXIoLS1vcmFuZ2UpOwotfQotCi0udW5z
ZWxlY3RhYmxlIHsKLSAgLXdlYmtpdC10b3VjaC1jYWxsb3V0OiBub25lOwotICAtd2Via2l0LXVz
ZXItc2VsZWN0OiBub25lOwotICB1c2VyLXNlbGVjdDogbm9uZTsKLX0KLQotLmRlc2t0b3AtY29u
dHJvbCB7Ci0gIGRpc3BsYXk6IG5vbmU7Ci19Ci0ubW9iaWxlLWNvbnRyb2wgewotICBkaXNwbGF5
OiBibG9jazsKLX0KLQotLm1vYmlsZS1zaWRlYmFyLWNvbnRyb2wgewotICBkaXNwbGF5OiBub25l
OwotICBmbG9hdDogcmlnaHQ7Ci19Ci0ubW9iaWxlLXNpZGViYXItY29udHJvbC5kaXNwbGF5IHsK
LSAgZGlzcGxheTogYmxvY2s7Ci19Ci0KLUBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDYw
MHB4KSB7Ci0gIC5kZXNrdG9wLWNvbnRyb2wgewotICAgIGRpc3BsYXk6IGJsb2NrOwotICB9Ci0g
IC5tb2JpbGUtY29udHJvbCB7Ci0gICAgZGlzcGxheTogbm9uZTsKLSAgfQotICAubW9iaWxlLXNp
ZGViYXItY29udHJvbC5kaXNwbGF5IHsKLSAgICBkaXNwbGF5OiBub25lOwotICB9Ci19CkluZGV4
OiBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS92aWV3L3N0YXRpYy9saWJyYXJ5L2ljb25z
L2Nsb2NrLnN2Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS92
aWV3L3N0YXRpYy9saWJyYXJ5L2ljb25zL2Nsb2NrLnN2ZwkocmV2aXNpb24gMjY1NTMxKQorKysg
VG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9zdGF0aWMvbGlicmFyeS9pY29ucy9j
bG9jay5zdmcJKG5vbmV4aXN0ZW50KQpAQCAtMSwxMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIx
LjAiIGVuY29kaW5nPSJVVEYtOCIgc3RhbmRhbG9uZT0ibm8iPz4KLTwhRE9DVFlQRSBzdmcgUFVC
TElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNz
L1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+Ci08c3ZnIHZlcnNpb249IjEuMSIgeG1sbnM6eGw9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIiB2aWV3Qm94
PSItMTE0NyAtNjYzIDIyOCAyMjgiIHdpZHRoPSIyMjgiIGhlaWdodD0iMjI4Ij4KLSAgICA8ZyBm
aWxsPSJub25lIiBzdHJva2U9Im5vbmUiIHN0cm9rZS1kYXNoYXJyYXk9Im5vbmUiIHN0cm9rZS1v
cGFjaXR5PSIxIiBmaWxsLW9wYWNpdHk9IjEiPgotICAgICAgICA8ZyBpZD0iY2xvY2tfYmFzZSI+
Ci0gICAgICAgICAgICA8Y2lyY2xlIGN4PSItMTAzMy4yNSIgY3k9Ii01NDkuMjUiIHI9Ijk4Ljc1
MDE1Nzc5MjgxMjIiIHN0cm9rZT0id2hpdGUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tl
LWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIzMCIvPgotICAgICAgICA8L2c+Ci0gICAg
ICAgIDxnIGlkPSJjbG9ja19oYW5kIj4KLSAgICAgICAgICAgIDxsaW5lIHgxPSItMTAzMy4yNSIg
eTE9Ii01NDkuMjUiIHgyPSItMTAzMy41IiB5Mj0iLTYxMiIgc3Ryb2tlPSJ3aGl0ZSIgc3Ryb2tl
LWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2Utd2lkdGg9IjIx
Ii8+Ci0gICAgICAgICAgICA8bGluZSB4MT0iLTEwMzMuMjUiIHkxPSItNTQ5LjI1IiB4Mj0iLTEw
NjEuNSIgeTI9Ii01MTciIHN0cm9rZT0id2hpdGUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ry
b2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIyMSIvPgotICAgICAgICA8L2c+Ci0g
ICAgPC9nPgotPC9zdmc+CkluZGV4OiBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS92aWV3
L3N0YXRpYy9saWJyYXJ5L2pzL1JlZi5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9yZXN1bHRzZGJw
eS9yZXN1bHRzZGJweS92aWV3L3N0YXRpYy9saWJyYXJ5L2pzL1JlZi5qcwkocmV2aXNpb24gMjY1
NTMxKQorKysgVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9zdGF0aWMvbGlicmFy
eS9qcy9SZWYuanMJKG5vbmV4aXN0ZW50KQpAQCAtMSw0NjAgKzAsMCBAQAotLy8gQ29weXJpZ2h0
IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotLy8gYXJlIG1ldDoKLS8vIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LS8vIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotLy8gICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLS8vICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
Ly8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyAiQVMgSVMiIEFORAotLy8gQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLS8vIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKLS8vIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0vLyBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0vLyBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUgotLy8gU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLS8vIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksCi0vLyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotZnVuY3Rpb24g
dXVpZHY0KCkgewotICAgIHJldHVybiAoWzFlN10rLTFlMystNGUzKy04ZTMrLTFlMTEpLnJlcGxh
Y2UoL1swMThdL2csIGMgPT4KLSAgICAgICAgKGMgXiBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKG5l
dyBVaW50OEFycmF5KDEpKVswXSAmIDE1ID4+IGMgLyA0KS50b1N0cmluZygxNikKLSAgICApCi19
Ci0KLWNvbnN0IFRSQUNFX1NUQVRFID0gZmFsc2U7Ci0KLWNsYXNzIFNpZ25hbCB7Ci0gICAgY29u
c3RydWN0b3IoaGFuZGxlcnMpIHsKLSAgICAgICAgdGhpcy5oYW5kbGVycyA9IGhhbmRsZXJzID8g
aGFuZGxlcnMgOiBbXTsKLSAgICAgICAgdGhpcy5tYXhpbnVtUnVuVGltZSA9IDEgLyAzMCAqIDEw
MDA7Ci0gICAgfQotICAgIGFkZExpc3RlbmVyKGZuKSB7Ci0gICAgICAgIGlmICghZm4pIHJldHVy
biB0aGlzOwotICAgICAgICB0aGlzLmhhbmRsZXJzLnB1c2goZm4pOwotICAgICAgICByZXR1cm4g
dGhpczsKLSAgICB9Ci0gICAgcmVtb3ZlTGlzdGVuZXIoZm4pIHsKLSAgICAgICAgbGV0IHJlbW92
ZUluZGV4ID0gMDsKLSAgICAgICAgdGhpcy5oYW5kbGVycy5mb3JFYWNoKChoYW5kbGVyLCBpbmRl
eCkgPT4gewotICAgICAgICAgICAgaWYgKGhhbmRsZXIgPT09IGZuKQotICAgICAgICAgICAgICAg
IHJlbW92ZUluZGV4ID0gaW5kZXg7Ci0gICAgICAgIH0pOwotICAgICAgICB0aGlzLmhhbmRsZXJz
LnNwbGljZShyZW1vdmVJbmRleCwgMSk7Ci0gICAgICAgIHJldHVybiB0aGlzOwotICAgIH0KLSAg
ICByZW1vdmVBbGxMaXN0ZW5lcigpIHsKLSAgICAgICAgdGhpcy5oYW5kbGVycyA9IFtdOwotICAg
ICAgICByZXR1cm4gdGhpczsKLSAgICB9Ci0gICAgZW1pdCguLi5hcmdzKSB7Ci0gICAgICAgIGlm
ICh0aGlzLmhhbmRsZXJzKSB7Ci0gICAgICAgICAgICB0aGlzLnJlcXVlc3RFbWl0KDAsIC4uLmFy
Z3MpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aGlzOwotICAgIH0KLSAgICByZXF1ZXN0
RW1pdChmcm9tLCAuLi5hcmdzKSB7Ci0gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZl
ID0+IHsKLSAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gewotICAgICAgICAgICAgICAgIGNv
bnN0IHN0YXJ0ZWRUaW1lID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7Ci0gICAgICAgICAgICAgICAg
Ly8gUnVuIGFzIG1hbnkgaGFuZGxlcnMgYXMgcG9zaWJsZQotICAgICAgICAgICAgICAgIGxldCBp
ID0gZnJvbTsKLSAgICAgICAgICAgICAgICBmb3IgKDsgaSA8IHRoaXMuaGFuZGxlcnMubGVuZ3Ro
OyBpKyspIHsKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVyc1tpXSguLi5hcmdzKTsK
LSAgICAgICAgICAgICAgICAgICAgY29uc3QgZW5kVGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgp
OwotICAgICAgICAgICAgICAgICAgICBpZiAoZW5kVGltZSAtIHN0YXJ0ZWRUaW1lID49IHRoaXMu
bWF4aW51bVJ1blRpbWUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVxdWVzdEVt
aXQoaSsxLCAuLi5hcmdzKS50aGVuKCgpID0+IHJlc29sdmUoKSk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICBpZiAoaSA9PT0gdGhpcy5oYW5kbGVycy5sZW5ndGgpIHsKLSAgICAg
ICAgICAgICAgICAgICAgcmVzb2x2ZSgpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IH0pOwotICAgICAgICB9KTsKLSAgICB9Ci19Ci0KLWNsYXNzIEV2ZW50U3RyZWFtIHsKLSAgICBj
b25zdHJ1Y3RvcihzaWduYWwpIHsKLSAgICAgICAgdGhpcy5zaWduYWwgPSBzaWduYWwgPyBzaWdu
YWwgOiBuZXcgU2lnbmFsKCk7Ci0gICAgICAgIHRoaXMuZXJyb3JTaWduYWwgPSBuZXcgU2lnbmFs
KCk7Ci0gICAgICAgIHRoaXMuc3RvcFNpZ25hbCA9IG5ldyBTaWduYWwoKTsKLSAgICAgICAgdGhp
cy5sYXN0VmFsdWUgPSBudWxsOwotICAgIH0KLSAgICBhY3Rpb24oZm4pIHsKLSAgICAgICAgdGhp
cy5zaWduYWwuYWRkTGlzdGVuZXIoZm4pOwotICAgICAgICByZXR1cm4gdGhpczsKLSAgICB9Ci0g
ICAgc3RvcEFjdGlvbihmbikgewotICAgICAgICB0aGlzLnNpZ25hbC5yZW1vdmVMaXN0ZW5lcihm
bik7Ci0gICAgICAgIHJldHVybiB0aGlzOwotICAgIH0KLSAgICBlcnJvcihmbikgewotICAgICAg
ICB0aGlzLmVycm9yU2lnbmFsLmFkZExpc3RlbmVyKGZuKTsKLSAgICAgICAgcmV0dXJuIHRoaXM7
Ci0gICAgfQotICAgIHN0b3AoKSB7Ci0gICAgICAgIHRoaXMuc2lnbmFsLnJlbW92ZUFsbExpc3Rl
bmVyKCk7Ci0gICAgICAgIHRoaXMuZXJyb3JTaWduYWwucmVtb3ZlQWxsTGlzdGVuZXIoKTsKLSAg
ICAgICAgdGhpcy5zdG9wU2lnbmFsLmVtaXQoKTsKLSAgICAgICAgcmV0dXJuIHRoaXM7Ci0gICAg
fQotICAgIG9uU3RvcChmbikgewotICAgICAgICB0aGlzLnN0b3BTaWduYWwuYWRkTGlzdGVuZXIo
Zm4pOwotICAgICAgICByZXR1cm4gdGhpczsKLSAgICB9Ci0gICAgYWRkKC4uLmFyZ3MpIHsKLSAg
ICAgICAgdGhpcy5sYXN0VmFsdWUgPSBhcmdzOwotICAgICAgICB0aGlzLnNpZ25hbC5lbWl0KC4u
LmFyZ3MpOwotICAgICAgICByZXR1cm4gdGhpczsKLSAgICB9Ci0gICAgZ2V0TGFzdFZhbHVlKCkg
ewotICAgICAgICByZXR1cm4gdGhpcy5sYXN0VmFsdWU7Ci0gICAgfQotICAgIHJlcGxheUxhc3Qo
KSB7Ci0gICAgICAgIGNvbnN0IGxhc3RWYWx1ZSA9IHRoaXMuZ2V0TGFzdFZhbHVlKCk7Ci0gICAg
ICAgIGlmIChsYXN0VmFsdWUpCi0gICAgICAgICAgICB0aGlzLmFkZCguLi5sYXN0VmFsdWUpOwot
ICAgIH0KLSAgICBhZGRQcm9taXNlKHApIHsKLSAgICAgICAgbGV0IHRoYXQgPSB0aGlzOwotICAg
ICAgICBwLnRoZW4oKC4uLmFyZ3MpID0+IHsKLSAgICAgICAgICAgIHRoYXQuYWRkKC4uLmFyZ3Mp
OwotICAgICAgICB9KS5jYXRjaCgoLi4uYXJncykgPT4gewotICAgICAgICAgICAgdGhhdC5hZGRF
cnJvciguLi5hcmdzKTsKLSAgICAgICAgfSk7Ci0gICAgfQotICAgIGFkZEVycm9yKC4uLmFyZ3Mp
IHsKLSAgICAgICAgdGhpcy5lcnJvclNpZ25hbC5lbWl0KC4uLmFyZ3MpOwotICAgIH0KLSAgICBh
ZGRXaXRoRGVsYXkoZGVsYXksIC4uLmFyZ3MpIHsKLSAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7
Ci0gICAgICAgICAgICB0aGlzLmFkZCguLi5hcmdzKTsKLSAgICAgICAgfSwgZGVsYXkpOwotICAg
ICAgICByZXR1cm4gdGhpczsKLSAgICB9Ci0gICAgZmlsdGVyKGZpbHRlckZuKSB7Ci0gICAgICAg
IGNvbnN0IHJlcyA9IG5ldyBFdmVudFN0cmVhbSgpOwotICAgICAgICB0aGlzLmFjdGlvbigoLi4u
YXJncykgPT4gewotICAgICAgICAgICAgaWYgKGZpbHRlckZuKC4uLmFyZ3MpKQotICAgICAgICAg
ICAgICAgIHJlcy5hZGQoLi4uYXJncyk7Ci0gICAgICAgIH0pOwotICAgICAgICByZXR1cm4gcmVz
OwotICAgIH0KLSAgICByZW1haW5zKGZpbHRlckZuKSB7Ci0gICAgICAgIGNvbnN0IHJlcyA9IG5l
dyBFdmVudFN0cmVhbSgpOwotICAgICAgICB0aGlzLmFjdGlvbigoLi4uYXJncykgPT4gewotICAg
ICAgICAgICAgaWYgKCFmaWx0ZXJGbiguLi5hcmdzKSkKLSAgICAgICAgICAgICAgICByZXMuYWRk
KC4uLmFyZ3MpOwotICAgICAgICB9KTsKLSAgICAgICAgcmV0dXJuIHJlczsKLSAgICB9Ci0gICAg
bWFwKGZuKSB7Ci0gICAgICAgIGNvbnN0IHJlcyA9IG5ldyBFdmVudFN0cmVhbSgpOwotICAgICAg
ICB0aGlzLmFjdGlvbigoLi4uYXJncykgPT4gewotICAgICAgICAgICAgcmVzLmFkZChmbiguLi5h
cmdzKSk7Ci0gICAgICAgIH0pOwotICAgICAgICByZXR1cm4gcmVzOwotICAgIH0KLSAgICBzY2Fu
KGZuKSB7Ci0gICAgICAgIGNvbnN0IHJlcyA9IG5ldyBFdmVudFN0cmVhbSgpOwotICAgICAgICBs
ZXQgYWNjdW11bGF0b3IgPSBudWxsOwotICAgICAgICB0aGlzLmFjdGlvbigoLi4uYXJncykgPT4g
ewotICAgICAgICAgICAgYWNjdW11bGF0b3IgPSBmbihhY2N1bXVsYXRvciwgLi4uYXJncyk7Ci0g
ICAgICAgICAgICByZXMuYWRkKGFjY3VtdWxhdG9yKTsKLSAgICAgICAgfSk7Ci0gICAgICAgIHJl
dHVybiByZXM7Ci0gICAgfQotICAgIGZsYXRNYXAoZm4pIHsKLSAgICAgICAgY29uc3QgcmVzID0g
bmV3IEV2ZW50U3RyZWFtKCk7Ci0gICAgICAgIHRoaXMuYWN0aW9uKCguLi5hcmdzKSA9PiB7Ci0g
ICAgICAgICAgICBmbihyZXMpKC4uLmFyZ3MpOwotICAgICAgICB9KTsKLSAgICAgICAgcmV0dXJu
IHJlczsKLSAgICB9Ci0gICAgaW5qZWN0KGVzLCAuLi5hcmdzKSB7Ci0gICAgICAgIHJldHVybiB0
aGlzLmFjdGlvbigoKSA9PiB7Ci0gICAgICAgICAgICBlcy5hZGQoLi4uYXJncyk7Ci0gICAgICAg
IH0pOwotICAgIH0KLSAgICBzdGF0aWMgbWVyZ2UoLi4uYXJncykgewotICAgICAgICBjb25zdCBy
ZXMgPSBuZXcgRXZlbnRTdHJlYW0oKTsKLSAgICAgICAgQXJyYXkucHJvdG90eXBlLmZvckVhY2gu
Y2FsbChhcmdzLCAoKHN0cmVhbSkgPT4gewotICAgICAgICAgICAgc3RyZWFtLmFjdGlvbigoKSA9
PiB7Ci0gICAgICAgICAgICAgICAgcmVzLmFkZCguLi5hcmdzKTsKLSAgICAgICAgICAgIH0pOwot
ICAgICAgICB9KSk7Ci0gICAgICAgIHJldHVybiByZXM7Ci0gICAgfQotICAgIHN0YXRpYyBmcm9t
TW9uaXRvcihmbiwgaW50ZXJ2YWwsIGluaXRpYWwpIHsKLSAgICAgICAgY29uc3QgcmVzID0gbmV3
IEV2ZW50U3RyZWFtKCk7Ci0gICAgICAgIGxldCBoYW5kbGVyID0gbnVsbDsKLSAgICAgICAgbGV0
IHJlc3VsdCA9IGluaXRpYWw7Ci0gICAgICAgIHJlcy5vblN0b3AoKCkgPT4gewotICAgICAgICAg
ICAgY2xlYXJUaW1lb3V0KGhhbmRsZXIpOwotICAgICAgICB9KTsKLSAgICAgICAgY29uc3QgcG9s
bCA9ICgpID0+IHsKLSAgICAgICAgICAgIHJlc3VsdCA9IGZuKHJlc3VsdCk7Ci0gICAgICAgICAg
ICBpZiAocmVzdWx0IGluc3RhbmNlb2YgUHJvbWlzZSkKLSAgICAgICAgICAgICAgICByZXMuYWRk
UHJvbWlzZShyZXN1bHQpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJlcy5h
ZGQocmVzdWx0KTsKLSAgICAgICAgICAgIGhhbmRsZXIgPSBzZXRUaW1lb3V0KHBvbGwsIGludGVy
dmFsKTsKLSAgICAgICAgfQotICAgICAgICBwb2xsKCk7Ci0gICAgICAgIHJldHVybiByZXM7Ci0g
ICAgfQotfQotCi1mdW5jdGlvbiBpc01lcmdlYWJsZVN0YXRlKHN0YXRlKSB7Ci0gICAgcmV0dXJu
IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChzdGF0ZSkgPT09ICJbb2JqZWN0IE9iamVj
dF0iOwotfQotCi1mdW5jdGlvbiBhcHBseVN0YXRlRGlmZihzdGF0ZSwgZGlmZikgewotICAgIGlm
IChkaWZmID09PSB1bmRlZmluZWQpCi0gICAgICAgIHJldHVybiBzdGF0ZTsKLSAgICBpZiAoIWlz
TWVyZ2VhYmxlU3RhdGUoZGlmZikpCi0gICAgICAgIHJldHVybiBkaWZmOwotICAgIGNvbnN0IHJl
cyA9IHt9OwotICAgIGlmIChzdGF0ZSkgewotICAgICAgICBPYmplY3Qua2V5cyhzdGF0ZSkuZm9y
RWFjaCgoa2V5KSA9PiB7Ci0gICAgICAgICAgICByZXNba2V5XSA9IHN0YXRlW2tleV07Ci0gICAg
ICAgIH0pOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHJldHVybiBzdGF0ZTsKLSAgICB9Ci0gICAg
aWYgKGRpZmYpIHsKLSAgICAgICAgT2JqZWN0LmtleXMoZGlmZikuZm9yRWFjaCgoa2V5KSA9PiB7
Ci0gICAgICAgICAgICByZXNba2V5XSA9IGRpZmZba2V5XTsKLSAgICAgICAgfSk7Ci0gICAgfQot
ICAgIHJldHVybiByZXM7Ci19Ci0KLWNsYXNzIFJlZiB7Ci0gICAgY29uc3RydWN0b3IoY29uZmln
KSB7Ci0gICAgICAgIHRoaXMua2V5ID0gdXVpZHY0KCk7Ci0gICAgICAgIHRoaXMuZWxlbWVudCA9
IG51bGw7Ci0gICAgICAgIHRoaXMubGFzdFN0YXRlRGlmZiA9IG51bGw7Ci0gICAgICAgIGNvbmZp
ZyA9IGNvbmZpZyA/IGNvbmZpZyA6IHt9OwotICAgICAgICB0aGlzLnN0YXRlVHJhY2VyID0gY29u
ZmlnLnN0YXRlICE9PSB1bmRlZmluZWQgPyBbY29uZmlnLnN0YXRlXSA6IFtdOwotICAgICAgICB0
aGlzLnN0YXRlID0gY29uZmlnLnN0YXRlICE9PSB1bmRlZmluZWQgPyBjb25maWcuc3RhdGUgOiB7
fTsKLSAgICAgICAgdGhpcy5vblN0YXRlVXBkYXRlID0gbmV3IFNpZ25hbCgpLmFkZExpc3RlbmVy
KGNvbmZpZy5vblN0YXRlVXBkYXRlKTsKLSAgICAgICAgdGhpcy5vbkVsZW1lbnRNb3VudCA9IG5l
dyBTaWduYWwoKS5hZGRMaXN0ZW5lcihjb25maWcub25FbGVtZW50TW91bnQpOwotICAgICAgICB0
aGlzLm9uRWxlbWVudFVubW91bnQgPSBuZXcgU2lnbmFsKCkuYWRkTGlzdGVuZXIoY29uZmlnLm9u
RWxlbWVudFVubW91bnQpOwotICAgIH0KLSAgICBiaW5kKGVsZW1lbnQpIHsKLSAgICAgICAgdGhp
cy5hcHBseShlbGVtZW50LnF1ZXJ5U2VsZWN0b3IoYFtyZWY9IiR7dGhpcy5rZXl9Il1gKSk7Ci0g
ICAgfQotCi0gICAgYXBwbHkoZWxlbWVudCkgewotICAgICAgICBpZiAoIWVsZW1lbnQpCi0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIGlmICh0aGlzLmVsZW1lbnQgPT09IGVsZW1lbnQpCi0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGlmICh0aGlzLmVsZW1lbnQgJiYgdGhpcy5lbGVt
ZW50ICE9PSBlbGVtZW50KQotICAgICAgICAgICAgdGhpcy5vbkVsZW1lbnRVbm1vdW50LmVtaXQo
dGhpcy5lbGVtZW50KTsKLSAgICAgICAgdGhpcy5lbGVtZW50ID0gZWxlbWVudDsKLSAgICAgICAg
Ly9Jbml0aWFsIHN0YXRlCi0gICAgICAgIGlmICh0aGlzLnN0YXRlICE9PSB1bmRlZmluZWQgJiYg
dGhpcy5zdGF0ZSAhPT0gbnVsbCkKLSAgICAgICAgICAgIHRoaXMub25TdGF0ZVVwZGF0ZS5lbWl0
KHRoaXMuZWxlbWVudCwgdGhpcy5zdGF0ZSwgdGhpcy5zdGF0ZSk7Ci0gICAgICAgIHRoaXMub25F
bGVtZW50TW91bnQuZW1pdCh0aGlzLmVsZW1lbnQpOwotICAgIH0KLSAgICBkZXN0b3J5KGVsZW1l
bnQpIHsKLSAgICAgICAgaWYgKCFlbGVtZW50IHx8IGVsZW1lbnQgIT09IHRoaXMuZWxlbWVudCkK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgdGhpcy5vbkVsZW1lbnRVbm1vdW50LmVtaXQo
dGhpcy5lbGVtZW50KTsKLSAgICB9Ci0gICAgdG9TdHJpbmcoKSB7Ci0gICAgICAgIHJldHVybiB0
aGlzLmtleTsKLSAgICB9Ci0gICAgc2V0U3RhdGUoc3RhdGVEaWZmKSB7Ci0gICAgICAgIGlmIChz
dGF0ZURpZmYgPT09IHVuZGVmaW5lZCkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgaWYg
KFRSQUNFX1NUQVRFKQotICAgICAgICAgICAgdGhpcy5zdGF0ZVRyYWNlci5wdXNoKHN0YXRlRGlm
Zik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRoaXMuc3RhdGVUcmFjZXIgPSBbc3RhdGVE
aWZmXTsKLSAgICAgICAgdGhpcy5sYXN0U3RhdGVEaWZmID0gc3RhdGVEaWZmOwotICAgICAgICAv
L0lmIGVsZW1lbnQgaGF2ZW4ndCBiZWVuIG1vdW50LCB3ZSBqdXN0IHVwZGF0ZSB0aGUgc3RhdGUs
IHNvIHRoYXQgd2Ugd2lsbCBvbmx5IHJlbmRlciB0aGUgZmluaWFsIHN0YXQgd2hlbiBlbGVtZW50
IG1vdW50Ci0gICAgICAgIGlmICh0aGlzLmVsZW1lbnQpCi0gICAgICAgICAgICB0aGlzLm9uU3Rh
dGVVcGRhdGUuZW1pdCh0aGlzLmVsZW1lbnQsIHN0YXRlRGlmZiwgdGhpcy5zdGF0ZSk7Ci0gICAg
ICAgIHRoaXMuc3RhdGUgPSBhcHBseVN0YXRlRGlmZih0aGlzLnN0YXRlLCBzdGF0ZURpZmYpOwot
ICAgIH0KLSAgICBmcm9tRXZlbnQoZXZlbnQsIC4uLmFyZ3MpIHsKLSAgICAgICAgY29uc3QgcmVz
ID0gbmV3IEV2ZW50U3RyZWFtKCk7Ci0gICAgICAgIHRoaXMub25FbGVtZW50TW91bnQuYWRkTGlz
dGVuZXIoKGVsZW1lbnQpID0+IGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihldmVudCwgKGUpID0+
IHsKLSAgICAgICAgICAgIHJlcy5hZGQoZSwgLi4uYXJncyk7Ci0gICAgICAgIH0pKTsKLSAgICAg
ICAgcmV0dXJuIHJlczsKLSAgICB9Ci19Ci0KLWNsYXNzIFJlZk1hbmdlciB7Ci0gICAgY29uc3Ry
dWN0b3IoKSB7Ci0gICAgICAgIHRoaXMucmVmcyA9IHt9OwotICAgIH0KLSAgICBjcmVhdGVSZWYo
Y29uZmlnKSB7Ci0gICAgICAgIGNvbnN0IHJlZiA9IG5ldyBSZWYoY29uZmlnKTsKLSAgICAgICAg
dGhpcy5yZWZzW3JlZi5rZXldID0gcmVmOwotICAgICAgICByZXR1cm4gcmVmOwotICAgIH0KLSAg
ICBiaW5kQWxsKGRvbSkgewotICAgICAgICBjb25zdCBub2RlSXRlcmF0b3IgPSBkb2N1bWVudC5j
cmVhdGVOb2RlSXRlcmF0b3IoCi0gICAgICAgICAgICBkb20sCi0gICAgICAgICAgICBOb2RlRmls
dGVyLlNIT1dfRUxFTUVOVCwKLSAgICAgICAgICAgIChub2RlKSA9PiB7Ci0gICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHJlZktleSA9IG5vZGUuZ2V0QXR0cmlidXRlKCdyZWYnKTsKLSAgICAgICAg
ICAgICAgICAgICAgY29uc3QgcmVmID0gdGhpcy5yZWZzW3JlZktleV07Ci0gICAgICAgICAgICAg
ICAgICAgIGlmIChyZWYpCi0gICAgICAgICAgICAgICAgICAgICAgICByZWYuYXBwbHkuY2FsbChy
ZWYsbm9kZSk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiByZWYgPyBOb2RlRmlsdGVyLkZJ
TFRFUl9BQ0NFUFQgOiBOb2RlRmlsdGVyLkZJTFRFUl9SRUpFQ1Q7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICk7Ci0gICAgICAgIGxldCBjdXJyZW50Tm9kZSA9IG51bGw7Ci0gICAgICAgIHdoaWxl
IChjdXJyZW50Tm9kZSA9IG5vZGVJdGVyYXRvci5uZXh0Tm9kZSgpKTsKLSAgICB9Ci0gICAgdW5i
aW5kQWxsKGRvbSkgewotICAgICAgICBjb25zdCBub2RlSXRlcmF0b3IgPSBkb2N1bWVudC5jcmVh
dGVOb2RlSXRlcmF0b3IoCi0gICAgICAgICAgICBkb20sCi0gICAgICAgICAgICBOb2RlRmlsdGVy
LlNIT1dfRUxFTUVOVCwKLSAgICAgICAgICAgIChub2RlKSA9PiB7Ci0gICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHJlZktleSA9IG5vZGUuZ2V0QXR0cmlidXRlKCdyZWYnKTsKLSAgICAgICAgICAg
ICAgICAgICAgY29uc3QgcmVmID0gdGhpcy5yZWZzW3JlZktleV07Ci0gICAgICAgICAgICAgICAg
ICAgIGlmIChyZWYpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlZi5kZXN0b3J5LmNhbGwo
cmVmLG5vZGUpOwotICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHRoaXMucmVmc1tyZWZL
ZXldOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBy
ZWYgPyBOb2RlRmlsdGVyLkZJTFRFUl9BQ0NFUFQgOiBOb2RlRmlsdGVyLkZJTFRFUl9SRUpFQ1Q7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICk7Ci0gICAgICAgIGxldCBjdXJyZW50Tm9kZSA9IG51
bGw7Ci0gICAgICAgIHdoaWxlIChjdXJyZW50Tm9kZSA9IG5vZGVJdGVyYXRvci5uZXh0Tm9kZSgp
KTsKLSAgICB9Ci19Ci0KLWNvbnN0IFJFRiA9IG5ldyBSZWZNYW5nZXIoKTsKLQotZnVuY3Rpb24g
Y3JlYXRlRG9tRWxlbWVudHNGcm9tU3RyKHN0cmluZykgewotICAgIGNvbnN0IGZha2VFbGVtZW50
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Ci0gICAgZmFrZUVsZW1lbnQuaW5uZXJI
VE1MID0gc3RyaW5nOwotICAgIGNvbnN0IGVsZW1lbnRzID0gW107Ci0gICAgQXJyYXkucHJvdG90
eXBlLmZvckVhY2guY2FsbChmYWtlRWxlbWVudC5jaGlsZHJlbiwgKGVsZW1lbnQpID0+IHsKLSAg
ICAgICAgZWxlbWVudC5yZW1vdmUoKTsKLSAgICAgICAgZWxlbWVudHMucHVzaChlbGVtZW50KTsK
LSAgICB9KTsKLSAgICByZXR1cm4gZWxlbWVudHM7Ci19Ci0KLWNvbnN0IERPTSA9IHsKLSAgICBp
bmplY3Q6IChlbGVtZW50LCBzdHJpbmcpID0+IHsKLSAgICAgICAgUkVGLnVuYmluZEFsbChlbGVt
ZW50KTsKLSAgICAgICAgZWxlbWVudC5pbm5lckhUTUwgPSBzdHJpbmc7Ci0gICAgICAgIFJFRi5i
aW5kQWxsKGVsZW1lbnQpOwotICAgIH0sCi0gICAgcHJlcGVuZDogKGVsZW1lbnQsIHN0cmluZykg
PT4gewotICAgICAgICBpZiAoZWxlbWVudC5jaGlsZHJlbi5sZW5ndGggPT09IDApIHsKLSAgICAg
ICAgICAgIERPTS5pbmplY3QoZWxlbWVudCwgc3RyaW5nKTsKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgfQotICAgICAgICBET00uYmVmb3JlKGVsZW1lbnQuZmlyc3RFbGVtZW50Q2hpbGQs
IHN0cmluZyk7Ci0gICAgfSwKLSAgICBhcHBlbmQ6IChlbGVtZW50LCBzdHJpbmcpID0+IHsKLSAg
ICAgICAgaWYgKGVsZW1lbnQuY2hpbGRyZW4ubGVuZ3RoID09PSAwKSB7Ci0gICAgICAgICAgICBE
T00uaW5qZWN0KGVsZW1lbnQsIHN0cmluZyk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0KLSAgICAgICAgRE9NLmFmdGVyKGVsZW1lbnQubGFzdEVsZW1lbnRDaGlsZCwgc3RyaW5nKTsK
LSAgICB9LAotICAgIGJlZm9yZTogKGVsZW1lbnQsIHN0cmluZykgPT4gewotICAgICAgICBjb25z
dCBlbGVtZW50cyA9IGNyZWF0ZURvbUVsZW1lbnRzRnJvbVN0cihzdHJpbmcpOwotICAgICAgICBl
bGVtZW50LmJlZm9yZSguLi5lbGVtZW50cyk7Ci0gICAgICAgIGVsZW1lbnRzLmZvckVhY2goKGVs
bSkgPT4gewotICAgICAgICAgICAgUkVGLmJpbmRBbGwoZWxtKTsKLSAgICAgICAgfSk7Ci0gICAg
fSwKLSAgICBhZnRlcjogKGVsZW1lbnQsIHN0cmluZykgPT4gewotICAgICAgICBjb25zdCBlbGVt
ZW50cyA9IGNyZWF0ZURvbUVsZW1lbnRzRnJvbVN0cihzdHJpbmcpOwotICAgICAgICBlbGVtZW50
LmFmdGVyKC4uLmVsZW1lbnRzKTsKLSAgICAgICAgZWxlbWVudHMuZm9yRWFjaCgoZWxtKSA9PiB7
Ci0gICAgICAgICAgICBSRUYuYmluZEFsbChlbG0pOwotICAgICAgICB9KTsKLSAgICB9LAotICAg
IHJlcGxhY2U6IChlbGVtZW50LCBzdHJpbmcpID0+IHsKLSAgICAgICAgRE9NLmJlZm9yZShlbGVt
ZW50LCBzdHJpbmcpOwotICAgICAgICBSRUYudW5iaW5kQWxsKGVsZW1lbnQpOwotICAgICAgICBl
bGVtZW50LnJlbW92ZSgpOwotICAgIH0sCi0gICAgcmVtb3ZlOiAoZWxlbWVudCkgPT4gewotICAg
ICAgICBSRUYudW5iaW5kQWxsKGVsZW1lbnQpOwotICAgICAgICBlbGVtZW50LnJlbW92ZSgpOwot
ICAgIH0sCi19OwotZnVuY3Rpb24gZGlmZihvbGRWYWx1ZSwgbmV3VmFsdWUsIHJlbW92ZUNhbGxi
YWNrLCBhZGRDYWxsYmFjaywgZ2V0S2V5ID0gaXRlbSA9PiBpdGVtLnRvU3RyaW5nKCkpIHsKLSAg
ICBpZiAoIW5ld1ZhbHVlKSByZXR1cm47Ci0gICAgaWYgKG9sZFZhbHVlID09PSBuZXdWYWx1ZSkg
cmV0dXJuOwotICAgIGlmIChBcnJheS5pc0FycmF5KG9sZFZhbHVlKSAmJiBBcnJheS5pc0FycmF5
KG5ld1ZhbHVlKSkgewotICAgICAgICBjb25zdCBuZXdBcnJheU1hcCA9IG5ldyBNYXAoKTsKLSAg
ICAgICAgbmV3VmFsdWUuZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHsKLSAgICAgICAgICAgICBu
ZXdBcnJheU1hcC5zZXQoZ2V0S2V5KGl0ZW0pLCB7Ci0gICAgICAgICAgICAgICAgIGl0ZW06IGl0
ZW0sCi0gICAgICAgICAgICAgICAgIGluZGV4OiBpbmRleCwKLSAgICAgICAgICAgICAgICAgb2xk
SW5kZXg6IC0xCi0gICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0pOwotICAgICAgICBvbGRWYWx1
ZS5mb3JFYWNoKChvbGRJdGVtLCBpbmRleCkgPT4gewotICAgICAgICAgICAgY29uc3Qgb2xkSXRl
bUtleSA9IGdldEtleShvbGRJdGVtKTsKLSAgICAgICAgICAgIGlmICghbmV3QXJyYXlNYXAuaGFz
KG9sZEl0ZW1LZXkpKQotICAgICAgICAgICAgICAgIHJlbW92ZUNhbGxiYWNrKG9sZEl0ZW0sIGlu
ZGV4KTsKLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIGNvbnN0IG5ld0VudHJ5
ID0gbmV3QXJyYXlNYXAuZ2V0KG9sZEl0ZW1LZXkpOwotICAgICAgICAgICAgICAgIGlmIChuZXdF
bnRyeSkgewotICAgICAgICAgICAgICAgICAgICBuZXdFbnRyeS5vbGRJbmRleCA9IGluZGV4Owot
ICAgICAgICAgICAgICAgICAgICBuZXdFbnRyeS5pdGVtID0gb2xkSXRlbTsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0pOwotICAgICAgICBmb3IgKGxldCBlbnRy
eSBvZiBuZXdBcnJheU1hcC5lbnRyaWVzKCkpIHsKLSAgICAgICAgICAgIGFkZENhbGxiYWNrKGVu
dHJ5WzFdLml0ZW0sIGVudHJ5WzFdLmluZGV4LCBlbnRyeVsxXS5vbGRJbmRleCk7Ci0gICAgICAg
IH0KLSAgICB9Ci19Ci0KLWNvbnN0IEZQID0gewotICAgIGNvbXBvc2VyOiAoZm4pID0+IHsKLSAg
ICAgICAgLy8gSW5wdXQgZnVuY3Rpb24gbXVzdCBiZSBhIGN1cnJ5aW5nIGZ1bmN0aW9uCi0gICAg
ICAgIC8vIENvbXBvc2VyIHdpbGwgY29tcG9zZSB0aGF0IGN1cnJ5aW5nIGZ1bmN0aW9uIGNhbGwK
LSAgICAgICAgLy8gTWFraW5nIGEgY3VycnlpbmcgZnVuY3Rpb24gZm4gPSAoYSkgPT4gKGIpID0+
IHsuLi4ufSBjYW4gYmUgY2FsbGVkCi0gICAgICAgIC8vIGNvbXBvc2VyID0gRlAuY29tcG9zZXIo
Zm4pOwotICAgICAgICAvLyBjb21wb3NlcihhKTsgY29tcG9zZXIoYik7Ci0gICAgICAgIC8vIGlu
c3RlYWQgb2YgY2FsbGluZyBpdCBmbihhKShiKTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQodHlw
ZW9mIGZuID09PSAiZnVuY3Rpb24iICYmIGZuLmxlbmd0aCA9PT0gMSk7Ci0gICAgICAgIGxldCBy
ZXN1bHQgPSBmbjsKLSAgICAgICAgcmV0dXJuICguLi5hcmdzKSA9PiB7Ci0gICAgICAgICAgICBh
cmdzLmZvckVhY2goYXJnID0+IHsKLSAgICAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHQoYXJn
KTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9Ci0gICAgfSwKLSAgICBjdXJyeWluZzogKGZu
KSA9PiB7Ci0gICAgICAgIC8vIEN1cnJ5aW5nIGlucHV0IGZ1bmN0aW9uCi0gICAgICAgIC8vIChh
LCBiKSA9PiB7Li4ufQotICAgICAgICAvLyB0bwotICAgICAgICAvLyAoYSkgPT4gKGIpID0+IHsu
Li59Ci0gICAgICAgIGNvbnN0IGFyZ3MgPSBbXTsKLSAgICAgICAgY29uc3QgcmV0dXJuRm4gPSAo
eCkgPT4gewotICAgICAgICAgICAgYXJncy5wdXNoKHgpOwotICAgICAgICAgICAgaWYgKGFyZ3Mu
bGVuZ3RoID09PSBmbi5sZW5ndGgpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZuKC4uLmFyZ3Mp
OwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJldHVybiByZXR1cm5GbjsKLSAg
ICAgICAgfQotICAgICAgICByZXR1cm4gcmV0dXJuRm47Ci0gICAgfQotfQotZXhwb3J0IHtSRUYs
IERPTSwgZGlmZiwgRlAsIEV2ZW50U3RyZWFtLCB1dWlkdjR9OwpJbmRleDogVG9vbHMvcmVzdWx0
c2RicHkvcmVzdWx0c2RicHkvdmlldy9zdGF0aWMvbGlicmFyeS9qcy9UZXN0LmpzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvc3RhdGljL2xpYnJhcnkv
anMvVGVzdC5qcwkocmV2aXNpb24gMjY1NTMxKQorKysgVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0
c2RicHkvdmlldy9zdGF0aWMvbGlicmFyeS9qcy9UZXN0LmpzCShub25leGlzdGVudCkKQEAgLTEs
MjQxICswLDAgQEAKLWltcG9ydCB7RXZlbnRTdHJlYW19IGZyb20gJy4vUmVmLmpzJzsKLQotY2xh
c3MgQXNzZXJ0RmFpbGVkRXJyb3IgZXh0ZW5kcyBFcnJvciB7Ci0gICAgY29uc3RydWN0b3IobXNn
KSB7Ci0gICAgICAgIHN1cGVyKG1zZykKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHN0cmlwUmVmKGh0
bWwpIHsKLSAgICByZXR1cm4gaHRtbC5yZXBsYWNlKC9yZWY9Iltcd1xkXC1dKyIvZywgIiIpCi19
Ci0KLWNsYXNzIEV4cGVjdCB7Ci0gICAgY29uc3RydWN0b3IodmFsdWVBKSB7Ci0gICAgICAgIHRo
aXMudmFsdWVBID0gdmFsdWVBOwotICAgICAgICB0aGlzLnZhbHVlQiA9IG51bGw7Ci0gICAgICAg
IHJldHVybiB0aGlzOwotICAgIH0KLQotICAgIGlzVHlwZSh0eXBlKSB7Ci0gICAgICAgIGlmICh0
eXBlID09PSBudWxsKSB7Ci0gICAgICAgICAgICBpZiAodGhpcy52YWx1ZUEgIT09IG51bGwpCi0g
ICAgICAgICAgICAgICAgdGhyb3cgbmV3IEFzc2VydEZhaWxlZEVycm9yKGAke3RoaXMudmFsdWVB
fSBzaG91bGQgYmUgbnVsbGApOwotICAgICAgICB9IGVsc2UgaWYgKE51bWJlci5pc05hTih0eXBl
KSB8fCB0eXBlID09PSAiTmFOIikgewotICAgICAgICAgICAgaWYgKCFOdW1iZXIuaXNOYU4odGhp
cy52YWx1ZUEpKQotICAgICAgICAgICAgICAgIHRocm93IG5ldyBBc3NlcnRGYWlsZWRFcnJvcihg
JHt0aGlzLnZhbHVlQX0gc2hvdWxkIGJlIE5hTmApOyAgICAKLSAgICAgICAgfSBlbHNlIGlmICh0
eXBlID09PSAiQXJyYXkiIHx8IHR5cGUgPT09ICJhcnJheSIgfHwgdHlwZSA9PT0gQXJyYXkpIHsK
LSAgICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheSh0aGlzLnZhbHVlQSkpCi0gICAgICAgICAg
ICAgICAgdGhyb3cgbmV3IEFzc2VydEZhaWxlZEVycm9yKGAke3RoaXMudmFsdWVBfSBzaG91bGQg
YmUgYW4gQXJyYXlgKTsKLSAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdGhpcy52YWx1ZUEgIT09
IHR5cGUgJiYgZmFsc2UgPT09IHRoaXMudmFsdWVBIGluc3RhbmNlb2YgdHlwZSkKLSAgICAgICAg
ICAgIHRocm93IG5ldyBBc3NlcnRGYWlsZWRFcnJvcihgJHt0aGlzLnZhbHVlQX0gc2hvdWxkIGJl
IHR5cGUgJHt0eXBlfWApOwotICAgICAgICByZXR1cm4gdGhpczsKLSAgICB9Ci0KLSAgICBlcXVh
bFRvVmFsdWUodmFsdWVCKSB7Ci0gICAgICAgIGlmICh0aGlzLnZhbHVlQSAhPT0gdmFsdWVCKQot
ICAgICAgICAgICAgdGhyb3cgbmV3IEFzc2VydEZhaWxlZEVycm9yKGAke3RoaXMudmFsdWVBfSBz
aG91bGQgZXF1YWwgdG8gJHt2YWx1ZUJ9YCk7Ci0gICAgfQotCi0gICAgZXF1YWxUb0h0bWxXaXRo
b3V0UmVmKGh0bWwpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuZXF1YWxUb1ZhbHVlKHN0cmlwUmVm
KHRoaXMudmFsdWVBKSwgc3RyaXBSZWYoaHRtbCkpOwotICAgIH0KLQotICAgIGVxdWFsVG9BcnJh
eShhcnJheSwgY29tcGFyZSA9ICh4LCB5KSA9PiBleHBlY3QoeCkuZXF1YWxUb1ZhbHVlKHkpKSB7
Ci0gICAgICAgIGV4cGVjdCh0aGlzLnZhbHVlQSkuaXNUeXBlKCJBcnJheSIpOwotICAgICAgICBl
eHBlY3QoYXJyYXkpLmlzVHlwZSgiQXJyYXkiKTsKLSAgICAgICAgZXhwZWN0KHRoaXMudmFsdWVB
Lmxlbmd0aCkuZXF1YWxUb1ZhbHVlKGFycmF5Lmxlbmd0aCk7Ci0gICAgICAgIGZvciAobGV0IGkg
PSAwOyBpIDwgdGhpcy52YWx1ZUEubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgIGNvbXBhcmUo
dGhpcy52YWx1ZUFbaV0sIGFycmF5W2ldKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIG5vdEVx
dWFsVG9WYWx1ZSh2YWx1ZUIpIHsKLSAgICAgICAgaWYgKHRoaXMudmFsdWVBID09PSB2YWx1ZUIp
Ci0gICAgICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0RmFpbGVkRXJyb3IoYCR7dGhpcy52YWx1ZUF9
IHNob3VsZCBub3QgZXF1YWwgdG8gJHt2YWx1ZUJ9YCk7Ci0gICAgfQotCi0gICAgZ3JlYXRlclRo
YW4odmFsdWVCKSB7Ci0gICAgICAgIGlmICh0aGlzLnZhbHVlQSA8PSB2YWx1ZUIpCi0gICAgICAg
ICAgICB0aHJvdyBuZXcgQXNzZXJ0RmFpbGVkRXJyb3IoYCR7dGhpcy52YWx1ZUF9IHNob3VsZCBn
cmVhdGVyIHRoYW4gJHt2YWx1ZUJ9YCk7Ci0gICAgfQotCi0gICAgZ3JlYXRlclRoYW5PckVxdWFs
VG8odmFsdWVCKSB7Ci0gICAgICAgIGlmICh0aGlzLnZhbHVlQSA8IHZhbHVlQikKLSAgICAgICAg
ICAgIHRocm93IG5ldyBBc3NlcnRGYWlsZWRFcnJvcihgJHt0aGlzLnZhbHVlQX0gc2hvdWxkIGdy
ZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAke3ZhbHVlQn1gKTsKLSAgICB9Ci0KLSAgICBsZXNzVGhh
bih2YWx1ZUIpIHsKLSAgICAgICAgaWYgKHRoaXMudmFsdWVBID49IHZhbHVlQikKLSAgICAgICAg
ICAgIHRocm93IG5ldyBBc3NlcnRGYWlsZWRFcnJvcihgJHt0aGlzLnZhbHVlQX0gc2hvdWxkIGxl
c3MgdGhhbiAke3ZhbHVlQn1gKTsKLSAgICB9Ci0KLSAgICBsZXNzVGhhbk9yRXF1YWxUbyh2YWx1
ZUIpIHsKLSAgICAgICAgaWYgKHRoaXMudmFsdWVBID4gdmFsdWVCKQotICAgICAgICAgICAgdGhy
b3cgbmV3IEFzc2VydEZhaWxlZEVycm9yKGAke3RoaXMudmFsdWVBfSBzaG91bGQgbGVzcyB0aGFu
IG9yIGVxdWFsIHRvICR7dmFsdWVCfWApOwotICAgIH0KLX0KLQotZnVuY3Rpb24gZXhwZWN0KHZh
bHVlKSB7Ci0gICAgcmV0dXJuIG5ldyBFeHBlY3QodmFsdWUpOwotfQotCi1jbGFzcyBUZXN0U3Vp
dGUgewotICAgIGV4cGVjdCh2YWx1ZSkgewotICAgICAgICByZXR1cm4gZXhwZWN0KHZhbHVlKTsK
LSAgICB9Ci0KLSAgICBzbGVlcChtaWxsaXNlY29uZHMpIHsKLSAgICAgICAgcmV0dXJuIG5ldyBQ
cm9taXNlKChyZXNvbHZlKSA9PiB7Ci0gICAgICAgICAgICBzZXRUaW1lb3V0KHJlc29sdmUsIG1p
bGxpc2Vjb25kcyk7Ci0gICAgICAgIH0pOwotICAgIH0KLQotICAgIHdhaXRGb3JTaWduYWwoc2lu
Z2FsLCBuYW1lLCB0aW1lb3V0PTEwMDApIHsKLSAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChy
ZXNvbHZlLCByZWplY3QpID0+IHsKLSAgICAgICAgICAgIGNvbnN0IGhhbmRsZXIgPSAoKSA9PiB7
Ci0gICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRIYW5kbGVyKTsKLSAgICAgICAg
ICAgICAgICByZXNvbHZlKCk7Ci0gICAgICAgICAgICAgICAgc2luZ2FsLnJlbW92ZUxpc3RlbmVy
KGhhbmRsZXIpOwotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIGNvbnN0IHRpbWVvdXRIYW5k
bGVyID0gc2V0VGltZW91dCgoKSA9PiB7Ci0gICAgICAgICAgICAgICAgc2luZ2FsLnJlbW92ZUxp
c3RlbmVyKGhhbmRsZXIpOwotICAgICAgICAgICAgICAgIHJlamVjdChuZXcgQXNzZXJ0RmFpbGVk
RXJyb3IoYENhbm5vdCBnZXQgdGhlICR7bmFtZX0gc2lnbmFsIGFmdGVyICR7dGltZW91dH0gbXNg
KSk7Ci0gICAgICAgICAgICB9LCB0aW1lb3V0KTsKLSAgICAgICAgICAgIHNpbmdhbC5hZGRMaXN0
ZW5lcihoYW5kbGVyKTsKLSAgICAgICAgfSk7Ci0gICAgfQotCi0gICAgd2FpdEZvclJlZk1vdW50
ZWQocmVmLCB0aW1lb3V0PTEwMDApIHsKLSAgICAgICAgcmV0dXJuIHRoaXMud2FpdEZvclNpZ25h
bChyZWYub25FbGVtZW50TW91bnQsICJtb3VudCIsIHRpbWVvdXQpOwotICAgIH0KLQotICAgIHdh
aXRGb3JSZWZVbm1vdW50ZWQocmVmLCB0aW1lb3V0PTEwMDApIHsKLSAgICAgICAgcmV0dXJuIHRo
aXMud2FpdEZvclNpZ25hbChyZWYub25FbGVtZW50VW5tb3VudCwgInVubW91bnQiLCB0aW1lb3V0
KTsKLSAgICB9Ci0KLSAgICB3YWl0Rm9yU3RhdGVVcGRhdGVkKHJlZiwgdGltZW91dD0xMDAwKSB7
Ci0gICAgICAgIHJldHVybiB0aGlzLndhaXRGb3JTaWduYWwocmVmLm9uU3RhdGVVcGRhdGUsICJz
dGF0ZSB1cGRhdGUiLCB0aW1lb3V0KTsKLSAgICB9Ci0KLSAgICBhc3luYyBzZXR1cCgpIHt9Ci0g
ICAgYXN5bmMgY2xlYXJVcCgpIHt9Ci19Ci0KLQotZnVuY3Rpb24gZ2V0VGVzdEZ1Y250aW9uTmFt
ZXModGVzdE9iaikgewotICAgIGNvbnN0IGZpeGVkTWV0aG9kcyA9IG5ldyBTZXQoT2JqZWN0Lmdl
dE93blByb3BlcnR5TmFtZXMoVGVzdFN1aXRlLnByb3RvdHlwZSkpOwotICAgIGNvbnN0IHRlc3RP
YmpNZXRob2RzID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGVzdE9iai5jb25zdHJ1Y3Rv
ci5wcm90b3R5cGUpOwotICAgIGNvbnN0IHRlc3RNZXRob2RzID0gW107Ci0gICAgZm9yIChsZXQg
bWV0aG9kIG9mIHRlc3RPYmpNZXRob2RzKSB7Ci0gICAgICAgIGlmICghZml4ZWRNZXRob2RzLmhh
cyhtZXRob2QpKQotICAgICAgICAgICAgdGVzdE1ldGhvZHMucHVzaChtZXRob2QpOwotICAgIH0K
LSAgICByZXR1cm4gdGVzdE1ldGhvZHM7Ci19Ci0KLWNvbnN0IFRFU1RfUkVTVUxUX1RZUEUgPSBP
YmplY3QuZnJlZXplKHsKLSAgICBTdWNjZXNzOiBTeW1ib2woIlN1Y2Nlc3MiKSwKLSAgICBFcnJv
cjogU3ltYm9sKCJFcnJvciIpLAotICAgIEZhaWxlZDogU3ltYm9sKCJGYWlsZWQiKSwKLX0pOwot
Ci1jbGFzcyBUZXN0UmVzdWx0IHsKLSAgICBjb25zdHJ1Y3RvcihjbGFzc05hbWUsIGZuTmFtZSkg
ewotICAgICAgICB0aGlzLmNsYXNzTmFtZSA9IGNsYXNzTmFtZTsKLSAgICAgICAgdGhpcy5mbk5h
bWUgPSBmbk5hbWU7Ci0gICAgICAgIHRoaXMuZXhjZXB0aW9uID0gbnVsbDsKLSAgICAgICAgdGhp
cy50eXBlID0gVEVTVF9SRVNVTFRfVFlQRS5TdWNjZXNzOwotICAgIH0KLSAgICAKLSAgICBjYXRj
aEV4Y2VwdGlvbihlKSB7Ci0gICAgICAgIHRoaXMuZXhjZXB0aW9uID0gZTsKLSAgICAgICAgY29u
c29sZS5lcnJvcihlKTsKLSAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBBc3NlcnRGYWlsZWRFcnJv
cikKLSAgICAgICAgICAgIHRoaXMudHlwZSA9IFRFU1RfUkVTVUxUX1RZUEUuRmFpbGVkOwotICAg
ICAgICBlbHNlCi0gICAgICAgICAgICB0aGlzLnR5cGUgPSBURVNUX1JFU1VMVF9UWVBFLkVycm9y
OwotICAgIH0KLX0KLQotYXN5bmMgZnVuY3Rpb24gZ2V0VGVzdFJlc3VsdChvYmosIGZuTmFtZSwg
YXJncyA9IFtdKSB7Ci0gICAgY29uc3QgcmVzdWx0ID0gbmV3IFRlc3RSZXN1bHQob2JqLmNvbnN0
cnVjdG9yLm5hbWUsIGZuTmFtZSk7Ci0gICAgdHJ5IHsKLSAgICAgICAgYXdhaXQgb2JqW2ZuTmFt
ZV0oLi4uYXJncyk7Ci0gICAgfSBjYXRjaCAoZSkgewotICAgICAgICByZXN1bHQuY2F0Y2hFeGNl
cHRpb24oZSk7Ci0gICAgfQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLWNsYXNzIFRlc3RDb250
cm9sbGVyIHsKLSAgICBjb25zdHJ1Y3RvcihzZXR1cEFyZ3MpIHsKLSAgICAgICAgdGhpcy5hbGxU
ZXN0cyA9IHt9Ci0gICAgICAgIHRoaXMucmVzdWx0c0VzID0gbmV3IEV2ZW50U3RyZWFtKCk7Ci0g
ICAgICAgIHRoaXMuc2V0dXBBcmdzID0gQXJyYXkuaXNBcnJheShzZXR1cEFyZ3MpID8gc2V0dXBB
cmdzIDogW107Ci0gICAgfQotICAgIAotICAgIGFkZFJlc3VsdEhhbmRsZXIoaGFuZGxlcikgewot
ICAgICAgICB0aGlzLnJlc3VsdHNFcy5hY3Rpb24oaGFuZGxlcik7Ci0gICAgfQotICAgIAotICAg
IGFkZFNldHVwQXJncyhhcmdzKSB7Ci0gICAgICAgIHRoaXMuc2V0dXBBcmdzID0gdGhpcy5zZXR1
cEFyZ3MuY29uY2F0KGFyZ3MpOwotICAgIH0KLQotICAgIGNvbGxlY3QodGVzdFN1aXRlQ2xhc3Mp
IHsKLSAgICAgICAgY29uc3QgdGVzdEluc3RhbmNlID0gbmV3IHRlc3RTdWl0ZUNsYXNzKCk7Ci0g
ICAgICAgIGNvbnN0IHRlc3ROYW1lID0gdGVzdEluc3RhbmNlLmNvbnN0cnVjdG9yLm5hbWU7Ci0g
ICAgICAgIGlmICh0ZXN0TmFtZSBpbiB0aGlzLmFsbFRlc3RzKSB7Ci0gICAgICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoYCR7dGVzdE5hbWV9IGhhcyBhbHJlYWR5IGJlZW4gY29sbGVjdGVkYCk7Ci0g
ICAgICAgIH0KLSAgICAgICAgdGhpcy5hbGxUZXN0c1t0ZXN0TmFtZV0gPSB0ZXN0SW5zdGFuY2U7
Ci0gICAgfQotICAgIAotICAgIGFzeW5jIGNvbGxlY3RGaWxlKGZpbGVQYXRoKSB7Ci0gICAgICAg
IGNvbnN0IHRlc3RNb2R1bGUgPSBhd2FpdCBpbXBvcnQoZmlsZVBhdGgpOwotICAgICAgICBPYmpl
Y3Qua2V5cyh0ZXN0TW9kdWxlKS5mb3JFYWNoKGNsYXNzTmFtZSA9PiB0aGlzLmNvbGxlY3QodGVz
dE1vZHVsZVtjbGFzc05hbWVdKSk7Ci0gICAgfQotCi0gICAgYXN5bmMgcnVuVGVzdCh0ZXN0TmFt
ZSwgZm5OYW1lKSB7Ci0gICAgICAgIGxldCBoYXZlRXJyb3IgPSBmYWxzZTsKLSAgICAgICAgY29u
c3QgdGVzdEluc3RhbmNlID0gdGhpcy5hbGxUZXN0c1t0ZXN0TmFtZV07Ci0gICAgICAgIGNvbnN0
IHRlc3RNZXRob2RzID0gZ2V0VGVzdEZ1Y250aW9uTmFtZXModGVzdEluc3RhbmNlKTsKLSAgICAg
ICAgbGV0IHJlc3VsdCA9IGF3YWl0IGdldFRlc3RSZXN1bHQodGVzdEluc3RhbmNlLCAic2V0dXAi
LCB0aGlzLnNldHVwQXJncyk7Ci0gICAgICAgIHRoaXMucmVzdWx0c0VzLmFkZChyZXN1bHQpOwot
ICAgICAgICBpZiAocmVzdWx0LnR5cGUgPT09IFRFU1RfUkVTVUxUX1RZUEUuU3VjY2Vzcykgewot
ICAgICAgICAgICAgZm9yIChsZXQgdGVzdE1ldGhvZE5hbWUgb2YgdGVzdE1ldGhvZHMpIHsKLSAg
ICAgICAgICAgICAgICBpZiAoZm5OYW1lICYmIGZuTmFtZSAhPT0gdGVzdE1ldGhvZE5hbWUpIAot
ICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgcmVzdWx0ID0gYXdh
aXQgZ2V0VGVzdFJlc3VsdCh0ZXN0SW5zdGFuY2UsIHRlc3RNZXRob2ROYW1lKTsKLSAgICAgICAg
ICAgICAgICB0aGlzLnJlc3VsdHNFcy5hZGQocmVzdWx0KTsKLSAgICAgICAgICAgICAgICBpZiAo
cmVzdWx0LnR5cGUgIT09IFRFU1RfUkVTVUxUX1RZUEUuU3VjY2VzcykKLSAgICAgICAgICAgICAg
ICAgICAgaGF2ZUVycm9yID0gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIAot
ICAgICAgICAgICAgaGF2ZUVycm9yID0gdHJ1ZTsKLSAgICAgICAgcmVzdWx0ID0gYXdhaXQgZ2V0
VGVzdFJlc3VsdCh0ZXN0SW5zdGFuY2UsICJjbGVhclVwIik7Ci0gICAgICAgIHRoaXMucmVzdWx0
c0VzLmFkZChyZXN1bHQpOwotICAgICAgICBpZiAocmVzdWx0LnR5cGUgIT09IFRFU1RfUkVTVUxU
X1RZUEUuU3VjY2VzcykKLSAgICAgICAgICAgIGhhdmVFcnJvciA9IHRydWU7Ci0gICAgICAgIHJl
dHVybiBoYXZlRXJyb3I7Ci0gICAgfQotCi0gICAgYXN5bmMgcnVuKHRlc3RTdWl0ZUNsYXNzTmFt
ZSwgdGVzdEZuTmFtZSkgewotICAgICAgICBsZXQgaGF2ZUVycm9yID0gZmFsc2U7Ci0gICAgICAg
IGlmICh0ZXN0U3VpdGVDbGFzc05hbWUpCi0gICAgICAgICAgICBoYXZlRXJyb3IgPSBhd2FpdCB0
aGlzLnJ1blRlc3QodGVzdFN1aXRlQ2xhc3NOYW1lLCB0ZXN0Rm5OYW1lKTsKLSAgICAgICAgZWxz
ZSB7Ci0gICAgICAgICAgICBmb3IobGV0IHRlc3RTdWl0ZUNsYXNzTmFtZSBvZiBPYmplY3Qua2V5
cyh0aGlzLmFsbFRlc3RzKSkKLSAgICAgICAgICAgICAgICBoYXZlRXJyb3IgfD0gYXdhaXQgdGhp
cy5ydW5UZXN0KHRlc3RTdWl0ZUNsYXNzTmFtZSk7Ci0gICAgICAgIH0KLSAgICAgICAgY29uc3Qg
ZmluYWxSZXN1bHQgPSBuZXcgVGVzdFJlc3VsdCgiIiwgIiIpOwotICAgICAgICBpZiAoIWhhdmVF
cnJvcikKLSAgICAgICAgICAgIGZpbmFsUmVzdWx0LnR5cGUgPSBURVNUX1JFU1VMVF9UWVBFLlN1
Y2Nlc3M7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGZpbmFsUmVzdWx0LnR5cGUgPSBURVNU
X1JFU1VMVF9UWVBFLkZhaWxlZDsKLSAgICAgICAgdGhpcy5yZXN1bHRzRXMuYWRkKGZpbmFsUmVz
dWx0KTsKLSAgICB9Ci19Ci0KLWV4cG9ydCB7VGVzdFN1aXRlLCBUZXN0Q29udHJvbGxlciwgVEVT
VF9SRVNVTFRfVFlQRX0KSW5kZXg6IFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcv
c3RhdGljL2xpYnJhcnkvanMvVXRpbHMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvcmVzdWx0c2Ri
cHkvcmVzdWx0c2RicHkvdmlldy9zdGF0aWMvbGlicmFyeS9qcy9VdGlscy5qcwkocmV2aXNpb24g
MjY1NTMxKQorKysgVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9zdGF0aWMvbGli
cmFyeS9qcy9VdGlscy5qcwkobm9uZXhpc3RlbnQpCkBAIC0xLDk3ICswLDAgQEAKLS8vIENvcHly
aWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLS8vIGFyZSBtZXQ6Ci0vLyAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0vLyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0vLyAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKLS8vIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0vLyBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCi0vLyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotLy8gQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotLy8g
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IKLS8vIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0vLyBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLAotLy8gT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLWZ1bmN0
aW9uIHRpbWVEaWZmZXJlbmNlKGRhdGVTdHJpbmcpIHsKLSAgICBjb25zdCBkYXRlRGlmZiA9IG5l
dyBEYXRlKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC0gbmV3IERhdGUoZGF0ZVN0cmluZykuZ2V0VGlt
ZSgpKTsKLSAgICBjb25zdCBob3VyID0gZGF0ZURpZmYuZ2V0VVRDSG91cnMoKTsKLSAgICBjb25z
dCBkYXkgPSBkYXRlRGlmZi5nZXRVVENEYXRlKCkgLSAxOwotICAgIGNvbnN0IG1vbnRoID0gZGF0
ZURpZmYuZ2V0VVRDTW9udGgoKTsKLSAgICBjb25zdCB5ZWFyID0gZGF0ZURpZmYuZ2V0VVRDRnVs
bFllYXIoKSAtIDE5NzA7Ci0gICAgaWYgKGhvdXIgPT09IDAgJiYgZGF5ID09PSAwICYmIG1vbnRo
ID09PSAwICYmIHllYXIgPT09MCkKLSAgICAgICAgcmV0dXJuICJsZXNzIHRoYW4gMSBob3VyIGFn
byI7Ci0gICAgaWYgKGRheSA9PT0gMCAmJiBtb250aCA9PT0gMCAmJiB5ZWFyID09PSAwKQotICAg
ICAgICByZXR1cm4gYCR7aG91cn0gaG91cnMgYWdvYDsKLSAgICBpZiAobW9udGggPT09IDAgJiYg
eWVhciA9PT0gMCkKLSAgICAgICAgcmV0dXJuIGAke2RheX0gZGF5cyAke2hvdXJ9IGhvdXJzIGFn
b2A7Ci0gICAgaWYgKHllYXIgPT09IDApCi0gICAgICAgIHJldHVybiBgJHttb250aH0gbW9udGhl
cyAke2RheX0gZGF5cyBhZ29gOwotICAgIHJldHVybiBgJHt5ZWFyfSB5ZWFycyAke21vbnRofSBt
b250aGVzIGFnb2A7Ci19Ci0KLWNsYXNzIENvb2tpZSB7Ci0gICAgc3RhdGljIGdldENvb2tpZShu
YW1lKSB7Ci0gICAgICAgIGNvbnN0IGNvb2tpZSA9IGRvY3VtZW50LmNvb2tpZS5tYXRjaChgJHtu
YW1lfT1bXHdcV10rO2ApOwotICAgICAgICBpZiAoY29va2llKSB7Ci0gICAgICAgICAgICBjb25z
dCByYXcgPSBjb29raWVbMF0uc3BsaXQoJz0nKVsxXTsKLSAgICAgICAgICAgIC8vZXNjYXBlICc7
JwotICAgICAgICAgICAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChyYXcuc3Vic3RyKDAsIHJh
dy5sZW5ndGggLSAxKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgfQot
ICAgIHN0YXRpYyBjcmVhdGVDb29raWUobmFtZSwgdmFsdWUsIGV4cGlyZWREYXlzPTEsIHBhdGg9
Jy8nKSB7Ci0gICAgICAgIGxldCBleHBpcmVkVGltZSA9IG5ldyBEYXRlKCk7Ci0gICAgICAgIGV4
cGlyZWRUaW1lLnNldFRpbWUoZXhwaXJlZFRpbWUuZ2V0VGltZSgpICsgZXhwaXJlRGF5cyAqIDI0
ICogMzYwMCAqIDEwMDApOwotICAgICAgICBkb2N1bWVudC5jb29raWUgPSBgJHtuYW1lfT0ke2Vu
Y29kZVVSSUNvbXBvbmVudCh2YWx1ZSl9OyBleHBpcmVzPSR7ZXhwaXJlZFRpbWUudG9VVENTdHJp
bmcoKX07IHBhdGg9JHtwYXRofWA7Ci0gICAgfQotICAgIHN0YXRpYyBlcmFzZUNvb2tpZShuYW1l
KSB7Ci0gICAgICAgIGlmIChnZXRDb29raWUobmFtZSkpCi0gICAgICAgICAgICBkb2N1bWVudC5j
b29raWUgPSBgJHtuYW1lfT07IE1heC1BZ2U9LTk5OTk5OTk5O2AKLSAgICB9Ci19Ci0KLWZ1bmN0
aW9uIGlzRGFya01vZGUgKCkgewotICAgIGlmICghd2luZG93Lm1hdGNoTWVkaWEpIHsKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICBjb25zdCBtYXRjaCA9IHdpbmRvdy5tYXRjaE1l
ZGlhKCcocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspJyk7Ci0gICAgcmV0dXJuIG1hdGNoLm1h
dGNoZXM7Ci19Ci0KLS8vIFVzZXMgaW50ZXJzZWN0aW9uIG9ic2VydmVyOiA8aHR0cHM6Ly9kZXZl
bG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0ludGVyc2VjdGlvbl9PYnNlcnZl
cl9BUEk+Ci1mdW5jdGlvbiBjcmVhdGVJbnNlcnRpb25PYnNlcnZlcnMoZWxlbWVudCwgY2FsbGJh
Y2s9KCk9Pnt9LCBzdGFydFRocmVzaG9sZD0wLjAsIGVuZFRyZXNob2xkPTEuMCwgc3RlcD0wLjEs
IG9wdGlvbj17fSkgewotICAgIGNvbnN0IHVzZU9wdGlvbiA9IHt9OwotICAgIHVzZU9wdGlvbi5y
b290ID0gb3B0aW9uLnJvb3QgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCA/IG9wdGlvbi5yb290IDog
bnVsbDsKLSAgICB1c2VPcHRpb24ucm9vdE1hcmdpbiA9IG9wdGlvbi5yb290TWFyZ2luID8gb3B0
aW9uLnJvb3RNYXJnaW4gOiAiMCUiOwotICAgIGNvbnN0IHRocmVzaG9sZEFycmF5ID0gW107Ci0g
ICAgZm9yIChsZXQgaSA9IHN0YXJ0VGhyZXNob2xkOyBpIDw9IGVuZFRyZXNob2xkOyBpKz0gc3Rl
cCkgewotICAgICAgICB0aHJlc2hvbGRBcnJheS5wdXNoKGkpOwotICAgIH0KLSAgICB0aHJlc2hv
bGRBcnJheS5mb3JFYWNoKHRocmVzaG9sZCA9PiB7Ci0gICAgICAgIHVzZU9wdGlvbi50aHJlc2hv
bGQgPSB0aHJlc2hvbGQ7Ci0gICAgICAgIGNvbnN0IG9ic2VydmVyID0gbmV3IEludGVyc2VjdGlv
bk9ic2VydmVyKGNhbGxiYWNrLCB1c2VPcHRpb24pOwotICAgICAgICBvYnNlcnZlci5vYnNlcnZl
KGVsZW1lbnQpOwotICAgIH0pOwotfQotCi1mdW5jdGlvbiBkaXNhYmxlQmFja0dlc3R1cmUoKSB7
Ci0gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNld2hlZWwnLCBlID0+IHsKLSAgICAg
ICAgY29uc3QgdGFyZ2V0ID0gZS50YXJnZXQ7Ci0gICAgICAgIGZvciAobGV0IHBhcmVudCA9IHRh
cmdldC5wYXJlbnRFbGVtZW50OyBwYXJlbnQ7IHBhcmVudCA9IHBhcmVudC5wYXJlbnRFbGVtZW50
ICkgewotICAgICAgICAgICAgaWYgKHBhcmVudC5zY3JvbGxMZWZ0ICE9PSAwICYmIGUuZGVsdGFY
IDwgMCkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGUu
ZGVsdGFYIDwgMCkKLSAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKLSAgICB9KTsKLX0K
LQotZXhwb3J0IHt0aW1lRGlmZmVyZW5jZSwgaXNEYXJrTW9kZSwgQ29va2llLCBjcmVhdGVJbnNl
cnRpb25PYnNlcnZlcnMsIGRpc2FibGVCYWNrR2VzdHVyZX07CkluZGV4OiBUb29scy9yZXN1bHRz
ZGJweS9yZXN1bHRzZGJweS92aWV3L3N0YXRpYy9saWJyYXJ5L2pzL2NvbXBvbmVudHMvQmFzZUNv
bXBvbmVudHMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkv
dmlldy9zdGF0aWMvbGlicmFyeS9qcy9jb21wb25lbnRzL0Jhc2VDb21wb25lbnRzLmpzCShyZXZp
c2lvbiAyNjU1MzEpCisrKyBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS92aWV3L3N0YXRp
Yy9saWJyYXJ5L2pzL2NvbXBvbmVudHMvQmFzZUNvbXBvbmVudHMuanMJKG5vbmV4aXN0ZW50KQpA
QCAtMSwxMDkgKzAsMCBAQAotLy8gQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotLy8gYXJlIG1l
dDoKLS8vIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotLy8gICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLS8vICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAotLy8g
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKLS8vIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLS8vIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SCi0vLyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMCi0vLyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotLy8gU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIKLS8vIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0vLyBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLQotaW1wb3J0IHsKLSAgICBET00sIFJFRiwgZGlmZiwgRXZlbnRT
dHJlYW0sIHV1aWR2NAotfQotZnJvbSAnLi4vUmVmLmpzJzsKLQotZnVuY3Rpb24gQXBwbHlOZXdD
aGlsZHJlbihlbGVtZW50LCBvbGRBcnJheSwgbmV3QXJyYXksIGNoaWxkVG9LZXlGdW5jLCBpdGVt
UHJvY2Vzc29yKSB7Ci0gICAgY29uc3QgbmV3Q2hpbGRyZW4gPSBbXTsKLSAgICBjb25zdCBuZWVk
VG9SZW1vdmVDaGlsZHJlbiA9IFtdOwotICAgIGRpZmYob2xkQXJyYXksIG5ld0FycmF5LCAoaXRl
bSwgaW5kZXgpID0+IHsKLSAgICAgICAgICAgIGNvbnN0IGNoaWxkID0gZWxlbWVudC5jaGlsZHJl
bltpbmRleF07Ci0gICAgICAgICAgICBuZWVkVG9SZW1vdmVDaGlsZHJlbi5wdXNoKGNoaWxkKTsK
LSAgICAgICAgfSwKLSAgICAgICAgKGl0ZW0sIG5ld0luZGV4LCBvbGRJbmRleCkgPT4gewotICAg
ICAgICAgICAgaWYgKG9sZEluZGV4ICE9PSAtMSkgewotICAgICAgICAgICAgICAgIGNvbnN0IGV4
aXNpdGluZ0NoaWxkID0gZWxlbWVudC5jaGlsZHJlbltvbGRJbmRleF07Ci0gICAgICAgICAgICAg
ICAgbmV3Q2hpbGRyZW4ucHVzaChleGlzaXRpbmdDaGlsZCk7Ci0gICAgICAgICAgICB9IGVsc2UK
LSAgICAgICAgICAgICAgICBuZXdDaGlsZHJlbi5wdXNoKGl0ZW0pOwotICAgICAgICB9LCBjaGls
ZFRvS2V5RnVuYyk7Ci0gICAgbmV3Q2hpbGRyZW4uZm9yRWFjaCgoY2hpbGQsIGluZGV4KSA9PiB7
Ci0gICAgICAgIGlmIChpbmRleCA8IGVsZW1lbnQuY2hpbGRyZW4ubGVuZ3RoKSB7Ci0gICAgICAg
ICAgICBpZiAoY2hpbGQgIT09IGVsZW1lbnQuY2hpbGRyZW5baW5kZXhdKSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKGNoaWxkIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpIHsKLSAgICAgICAgICAgICAg
ICAgICAgZWxlbWVudC5jaGlsZHJlbltpbmRleF0uYmVmb3JlKGNoaWxkKTsKLSAgICAgICAgICAg
ICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgRE9NLmJlZm9yZShlbGVtZW50LmNoaWxk
cmVuW2luZGV4XSwgdHlwZW9mIGl0ZW1Qcm9jZXNzb3IgPT09ICJmdW5jdGlvbiIgPyBpdGVtUHJv
Y2Vzc29yKGNoaWxkKSA6IGNoaWxkKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgIGlmIChjaGlsZCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KQotICAgICAgICAg
ICAgICAgIGVsZW1lbnQuYXBwZW5kKGNoaWxkKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgICAgICBET00uYXBwZW5kKGVsZW1lbnQsIHR5cGVvZiBpdGVtUHJvY2Vzc29yID09PSAiZnVu
Y3Rpb24iID8gaXRlbVByb2Nlc3NvcihjaGlsZCkgOiBjaGlsZCk7Ci0gICAgICAgIH0KLSAgICB9
KTsKLSAgICBuZWVkVG9SZW1vdmVDaGlsZHJlbi5mb3JFYWNoKChjaGlsZCkgPT4gewotICAgICAg
ICAvLyBDbGVhciB0aGUgcmVmIGluIHRoZSByZW1vdmVkIGNoaWxkLCB0cmlnZ2VyIHVubW91bnQg
ZXZlbnQKLSAgICAgICAgRE9NLnJlbW92ZShjaGlsZCk7Ci0gICAgfSk7Ci19Ci0KLWZ1bmN0aW9u
IExpc3RQcm92aWRlcihleHBvcnRlciwgcHJvdmlkZWRJbnRlcmZhY2VzLCAuLi5jaGlsZHJlbkZ1
bmN0aW9ucykgewotICAgIGNvbnN0IHJlZiA9IFJFRi5jcmVhdGVSZWYoewotICAgICAgICBzdGF0
ZToge2NoaWxkcmVuRnVuY3Rpb25zOiBjaGlsZHJlbkZ1bmN0aW9ucy5tYXAoaSA9PiBpKX0sCi0g
ICAgICAgIG9uU3RhdGVVcGRhdGU6IChlbGVtZW50LCBzdGF0ZURpZmYsIHN0YXRlKSA9PiB7Ci0g
ICAgICAgICAgICBpZiAoc3RhdGVEaWZmLmNoaWxkcmVuRnVuY3Rpb25zKSB7Ci0gICAgICAgICAg
ICAgICAgQXBwbHlOZXdDaGlsZHJlbihlbGVtZW50LAotICAgICAgICAgICAgICAgICAgICBzdGF0
ZS5jaGlsZHJlbkZ1bmN0aW9ucywgc3RhdGVEaWZmLmNoaWxkcmVuRnVuY3Rpb25zLAotICAgICAg
ICAgICAgICAgICAgICAoY2hpbGQpID0+IGNoaWxkLnRvU3RyaW5nKCksCi0gICAgICAgICAgICAg
ICAgICAgIChjaGlsZCkgPT4gY2hpbGQoLi4ucHJvdmlkZWRJbnRlcmZhY2VzKSk7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0KLSAgICB9KTsKLSAgICBpZiAoZXhwb3J0ZXIpCi0gICAgICAgIGV4
cG9ydGVyKGNoaWxkcmVuRnVuY3Rpb25zID0+IHsKLSAgICAgICAgICAgIC8vIE1ha2UgYSBjb3B5
IG9mIGl0LCBzbyB0aGF0IERJRkYuYXJyYXkgd29ya3MKLSAgICAgICAgICAgIHJlZi5zZXRTdGF0
ZSh7Y2hpbGRyZW5GdW5jdGlvbnM6IGNoaWxkcmVuRnVuY3Rpb25zLm1hcChpID0+IGkpfSk7Ci0g
ICAgICAgIH0pOwotICAgIHJldHVybiBgPGRpdiByZWY9IiR7cmVmfSI+JHtjaGlsZHJlbkZ1bmN0
aW9ucy5tYXAoY2hpbGRyZW5GdW5jdGlvbiA9PiBjaGlsZHJlbkZ1bmN0aW9uKC4uLnByb3ZpZGVk
SW50ZXJmYWNlcykpLmpvaW4oIiIpfTwvZGl2PmA7Ci19Ci0KLWZ1bmN0aW9uIExpc3RQcm92aWRl
clJlY2VpdmVyKGNvbnRlbnRGdW5jdGlvbikgewotICAgIGNvbnN0IGtleSA9IHV1aWR2NCgpOwot
ICAgIGNvbnN0IHJlcyA9ICguLi5wcm92aWRlZEludGVyZmFjZXMpID0+IGNvbnRlbnRGdW5jdGlv
biguLi5wcm92aWRlZEludGVyZmFjZXMpOwotICAgIC8vIENyZWF0ZSB1bmlxdWUga2V5IGZvciBl
YWNoIExpc3QgSXRlbQotICAgIHJlcy50b1N0cmluZyA9ICgpID0+IGtleTsKLSAgICByZXR1cm4g
cmVzOwotfQotCi0vLyBDaGlsZHJlbiBjb21wb2VudCB3aWxsIHJldHJ1biBzdHJpbmcKLWZ1bmN0
aW9uIExpc3RDb21wb25lbnQoZXhwb3J0ZXIsIC4uLmNoaWxkcmVuKSB7Ci0gICAgY29uc3QgcmVm
ID0gUkVGLmNyZWF0ZVJlZih7Ci0gICAgICAgIHN0YXRlOiB7Y2hpbGRyZW46IGNoaWxkcmVufSwK
LSAgICAgICAgb25TdGF0ZVVwZGF0ZTogKGVsZW1lbnQsIHN0YXRlRGlmZiwgc3RhdGUpID0+IHsK
LSAgICAgICAgICAgIGlmIChzdGF0ZURpZmYuY2hpbGRyZW4pCi0gICAgICAgICAgICAgICAgQXBw
bHlOZXdDaGlsZHJlbihlbGVtZW50LCBzdGF0ZS5jaGlsZHJlbiwgc3RhdGVEaWZmLmNoaWxkcmVu
LCBhID0+IGEpOwotICAgICAgICB9LAotICAgIH0pOwotCi0gICAgaWYgKGV4cG9ydGVyKQotICAg
ICAgICBleHBvcnRlcihjaGlsZHJlbiA9PiB7Ci0gICAgICAgICAgICAvLyBNYWtlIGEgY29weSBv
ZiBpdCwgc28gdGhhdCBESUZGLmFycmF5IHdvcmtzCi0gICAgICAgICAgICByZWYuc2V0U3RhdGUo
e2NoaWxkcmVuOiBjaGlsZHJlbi5tYXAoaSA9PiBpKX0pOwotICAgICAgICB9KTsKLSAgICByZXR1
cm4gYDxkaXYgcmVmPSIke3JlZn0iPiR7Y2hpbGRyZW4uam9pbigiIil9PC9kaXY+YDsKLX0KLQot
ZXhwb3J0IHtMaXN0UHJvdmlkZXIsIExpc3RQcm92aWRlclJlY2VpdmVyLCBMaXN0Q29tcG9uZW50
fTsKSW5kZXg6IFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvc3RhdGljL2xpYnJh
cnkvanMvY29tcG9uZW50cy9UZXN0Q29tcG9uZW50cy5qcwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9y
ZXN1bHRzZGJweS9yZXN1bHRzZGJweS92aWV3L3N0YXRpYy9saWJyYXJ5L2pzL2NvbXBvbmVudHMv
VGVzdENvbXBvbmVudHMuanMJKHJldmlzaW9uIDI2NTUzMSkKKysrIFRvb2xzL3Jlc3VsdHNkYnB5
L3Jlc3VsdHNkYnB5L3ZpZXcvc3RhdGljL2xpYnJhcnkvanMvY29tcG9uZW50cy9UZXN0Q29tcG9u
ZW50cy5qcwkobm9uZXhpc3RlbnQpCkBAIC0xLDg1ICswLDAgQEAKLWltcG9ydCB7RE9NLCBSRUZ9
IGZyb20gIi4uL1JlZi5qcyIKLWltcG9ydCB7VGVzdENvbnRyb2xsZXIsIFRFU1RfUkVTVUxUX1RZ
UEV9IGZyb20gIi4uL1Rlc3QuanMiCi0KLWZ1bmN0aW9uIFRlc3RBcHAodGVzdENvbnRyb2xsZXIp
IHsKLSAgICByZXR1cm4gKAotICAgICAgICBgPGRpdiBjbGFzcz0icm93IGNvbnRlbnQiPgotICAg
ICAgICAgICAgPGRpdiBjbGFzcz0iY29sLTYiPgotICAgICAgICAgICAgICAgICR7VGVzdFJlc3Vs
dENvbnNvbGUodGVzdENvbnRyb2xsZXIpfQotICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAg
ICA8ZGl2IGNsYXNzPSJjb2wtNiI+Ci0gICAgICAgICAgICAgICAgJHtUZXN0UmVuZGVyQXJlYSh0
ZXN0Q29udHJvbGxlcil9Ci0gICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgPC9kaXY+YAotICAg
ICk7Ci19Ci0KLWZ1bmN0aW9uIFRlc3RSZXN1bHQodGVzdFJlc3VsdCkgewotICAgIGxldCBzdGF0
dXNDbGFzcyA9ICJzdWNjZXNzIjsKLSAgICBsZXQgZGVzY3JpcHRpb24gPSB0ZXN0UmVzdWx0LmNs
YXNzTmFtZSA/ICJQQVNTIiA6ICJBTEwgUEFTUyI7Ci0gICAgc3dpdGNoICh0ZXN0UmVzdWx0LnR5
cGUpIHsKLSAgICAgICAgY2FzZSBURVNUX1JFU1VMVF9UWVBFLkZhaWxlZDoKLSAgICAgICAgICAg
IHN0YXR1c0NsYXNzID0gImZhaWxlZCI7Ci0gICAgICAgICAgICBkZXNjcmlwdGlvbiA9ICJmYWls
ZWQiCi0gICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFRFU1RfUkVTVUxUX1RZUEUuRXJyb3I6
Ci0gICAgICAgICAgICBzdGF0dXNDbGFzcyA9ICJlcnJvciI7Ci0gICAgICAgICAgICBkZXNjcmlw
dGlvbiA9ICJyYWlzZSBhbiBlcnJvciI7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICByZXR1
cm4gKAotICAgICAgICBgPGRpdiBjbGFzcz0idGV4dCI+Ci0gICAgICAgICAke3Rlc3RSZXN1bHQu
Y2xhc3NOYW1lID8gIiIgOiAiPGhyPiJ9Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0IGJs
b2NrIj4KLSAgICAgICAgICAgICAgICA8YSBocmVmPSI/Y2xhc3NOYW1lPSR7dGVzdFJlc3VsdC5j
bGFzc05hbWV9Ij4ke3Rlc3RSZXN1bHQuY2xhc3NOYW1lfTwvYT4KLSAgICAgICAgICAgIDwvZGl2
PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dCBibG9jayI+Ci0gICAgICAgICAgICAgICAg
PGEgaHJlZj0iP2NsYXNzTmFtZT0ke3Rlc3RSZXN1bHQuY2xhc3NOYW1lfSZmbk5hbWU9JHt0ZXN0
UmVzdWx0LmZuTmFtZX0iPiR7dGVzdFJlc3VsdC5mbk5hbWV9PC9hPgotICAgICAgICAgICAgPC9k
aXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0IGJsb2NrICR7c3RhdHVzQ2xhc3N9Ij4K
LSAgICAgICAgICAgICAgICAke2Rlc2NyaXB0aW9ufQotICAgICAgICAgICAgPC9kaXY+Ci0gICAg
ICAgICAgICAke3Rlc3RSZXN1bHQuZXhjZXB0aW9uID8gYAotICAgICAgICAgICAgICAgIDxkaXYg
Y2xhc3M9InRleHQgJHtzdGF0dXNDbGFzc30iPgotICAgICAgICAgICAgICAgICAgICA8cHJlPiR7
dGVzdFJlc3VsdC5leGNlcHRpb24ubWVzc2FnZX1cbiR7dGVzdFJlc3VsdC5leGNlcHRpb24uc3Rh
Y2t9PC9wcmU+Ci0gICAgICAgICAgICAgICAgPC9kaXY+YCA6ICIifQotICAgICAgICA8L2Rpdj5g
Ci0gICAgKTsKLX0KLQotZnVuY3Rpb24gVGVzdFJlc3VsdENvbnNvbGUodGVzdENvbnRyb2xsZXIp
IHsKLSAgICBjb25zdCByZWYgPSBSRUYuY3JlYXRlUmVmKHsKLSAgICAgICAgb25TdGF0ZVVwZGF0
ZTogKGVsZW1lbnQsIHN0YXRlRGlmZikgPT4gewotICAgICAgICAgICAgaWYgKHN0YXRlRGlmZi5h
ZGRUZXN0UmVzdWx0KSB7Ci0gICAgICAgICAgICAgICAgRE9NLmFwcGVuZChlbGVtZW50LCBUZXN0
UmVzdWx0KHN0YXRlRGlmZi5hZGRUZXN0UmVzdWx0KSk7Ci0gICAgICAgICAgICAgICAgaWYgKCFz
dGF0ZURpZmYuYWRkVGVzdFJlc3VsdC5jbGFzc05hbWUpIHsKLSAgICAgICAgICAgICAgICAgICAg
bGV0IGZpbmFsX3JlcyA9ICJBTEwgUEFTUyI7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChzdGF0
ZURpZmYuYWRkVGVzdFJlc3VsdC50eXBlICE9PSBURVNUX1JFU1VMVF9UWVBFLlN1Y2Nlc3MpCi0g
ICAgICAgICAgICAgICAgICAgICAgICBmaW5hbF9yZXMgPSAiRkFJTEVEIjsKLSAgICAgICAgICAg
ICAgICAgICAgZG9jdW1lbnQudGl0bGUgPSBgJHtmaW5hbF9yZXN9YDsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9KTsKLSAgICB0ZXN0Q29udHJvbGxl
ci5hZGRSZXN1bHRIYW5kbGVyKHRlc3RSZXN1bHQgPT4gcmVmLnNldFN0YXRlKHthZGRUZXN0UmVz
dWx0OiB0ZXN0UmVzdWx0fSkpOwotICAgIHJldHVybiBgPGRpdiByZWY9IiR7cmVmfSI+PC9kaXY+
YDsKLX0KLQotCi1mdW5jdGlvbiBUZXN0UmVuZGVyQXJlYSh0ZXN0Q29udHJvbGxlcikgewotICAg
IGNvbnN0IHJlZiA9IFJFRi5jcmVhdGVSZWYoewotICAgICAgICBvbkVsZW1lbnRNb3VudDogKGVs
ZW1lbnQpID0+IHsKLSAgICAgICAgICAgIHRlc3RDb250cm9sbGVyLmFkZFNldHVwQXJncyhbZWxl
bWVudF0pOwotICAgICAgICAgICAgY29uc3QgdXJsID0gbmV3IFVSTCh3aW5kb3cubG9jYXRpb24p
OwotICAgICAgICAgICAgY29uc3Qgc2VhcmNoUGFyYW0gPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHVy
bC5zZWFyY2gpOwotICAgICAgICAgICAgY29uc3QgY2xhc3NOYW1lID0gc2VhcmNoUGFyYW0uZ2V0
KCJjbGFzc05hbWUiKTsKLSAgICAgICAgICAgIGlmIChjbGFzc05hbWUpCi0gICAgICAgICAgICAg
ICAgZG9jdW1lbnQudGl0bGUgPSBjbGFzc05hbWU7Ci0gICAgICAgICAgICBjb25zdCBmbk5hbWUg
PSBzZWFyY2hQYXJhbS5nZXQoImZuTmFtZSIpOwotICAgICAgICAgICAgdGVzdENvbnRyb2xsZXIu
cnVuKGNsYXNzTmFtZSwgZm5OYW1lKQotICAgICAgICB9IAotICAgIH0pOwotICAgIHJldHVybiBg
PGRpdiByZWY9IiR7cmVmfSI+PC9kaXY+YDsKLX0KLQotZXhwb3J0IHtUZXN0QXBwfTsKSW5kZXg6
IFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvc3RhdGljL2xpYnJhcnkvanMvY29t
cG9uZW50cy9UaW1lbGluZUNvbXBvbmVudHMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvcmVzdWx0
c2RicHkvcmVzdWx0c2RicHkvdmlldy9zdGF0aWMvbGlicmFyeS9qcy9jb21wb25lbnRzL1RpbWVs
aW5lQ29tcG9uZW50cy5qcwkocmV2aXNpb24gMjY1NTMxKQorKysgVG9vbHMvcmVzdWx0c2RicHkv
cmVzdWx0c2RicHkvdmlldy9zdGF0aWMvbGlicmFyeS9qcy9jb21wb25lbnRzL1RpbWVsaW5lQ29t
cG9uZW50cy5qcwkobm9uZXhpc3RlbnQpCkBAIC0xLDkzOSArMCwwIEBACi0vLyBDb3B5cmlnaHQg
KEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0vLyBhcmUgbWV0OgotLy8gMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
Ly8gMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0vLyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotLy8gICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0v
LwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTICJBUyBJUyIgQU5ECi0vLyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotLy8gV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQotLy8gRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLS8vIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLS8vIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SCi0vLyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotLy8gQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwKLS8vIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1pbXBvcnQgewot
ICAgIERPTSwgUkVGLCBGUCwgRXZlbnRTdHJlYW0KLX0KLWZyb20gJy4uL1JlZi5qcyc7Ci0KLWlt
cG9ydCB7aXNEYXJrTW9kZSwgY3JlYXRlSW5zZXJ0aW9uT2JzZXJ2ZXJzfSBmcm9tICcuLi9VdGls
cy5qcyc7Ci1pbXBvcnQge0xpc3RDb21wb25lbnQsIExpc3RQcm92aWRlciwgTGlzdFByb3ZpZGVy
UmVjZWl2ZXJ9IGZyb20gJy4vQmFzZUNvbXBvbmVudHMuanMnCi0KLWZ1bmN0aW9uIHBvaW50Q2ly
Y2xlQ29sbGlzaW9uRGV0YWN0KHBvaW50LCBjaXJjbGUpIHsKLSAgICByZXR1cm4gTWF0aC5wb3co
cG9pbnQueCAtIGNpcmNsZS54LCAyKSArIE1hdGgucG93KHBvaW50LnkgLSBjaXJjbGUueSwgMikg
PD0gY2lyY2xlLnJhZGl1cyAqIGNpcmNsZS5yYWRpdXM7Ci19Ci0KLWZ1bmN0aW9uIHBvaW50UmVj
dENvbGxpc2lvbkRldGVjdChwb2ludCwgcmVjdCkgewotICAgIGNvbnN0IGRpZmZYID0gcG9pbnQu
eCAtIHJlY3QudG9wTGVmdFg7Ci0gICAgY29uc3QgZGlmZlkgPSBwb2ludC55IC0gcmVjdC50b3BM
ZWZ0WTsKLSAgICByZXR1cm4gZGlmZlggPD0gcmVjdC53aWR0aCAmJiBkaWZmWSA8PSByZWN0Lmhl
aWdodCAmJiBkaWZmWCA+PSAwICYmIGRpZmZZID49IDA7Ci19Ci0KLWZ1bmN0aW9uIHBvaW50UG9s
eWdvbkNvbGxpc2lvbkRldGVjdChwb2ludCwgcG9seWdvbikgewotICAgIGxldCByZXMgPSBmYWxz
ZTsKLSAgICBmb3IgKGxldCBpID0gMCwgaiA9IDE7IGkgPCBwb2x5Z29uLmxlbmd0aDsgaSsrLCBq
ID0gaSArIDEpIHsKLSAgICAgICAgaWYgKGogPT09IHBvbHlnb24ubGVuZ3RoICkKLSAgICAgICAg
ICAgIGogPSAwOwotICAgICAgICBpZiAocG9pbnRSaWdodFJheUxpbmVTZWdtZW50Q29sbGlzaW9u
RGV0ZWN0KHBvaW50LCBwb2x5Z29uW2ldLCBwb2x5Z29uW2pdKSkKLSAgICAgICAgICAgIHJlcyA9
ICFyZXM7Ci0gICAgfQotICAgIHJldHVybiByZXM7Ci19Ci0KLS8qCi0qIERldGFjdCBpZiBwb2lu
dCByaWdodCByYXkgaGF2ZSBhIGNvbGxpc2lvbiB3aXRoIGEgbGluZSBzZWdtZW50Ci0qICAgICAg
ICAgICAgICAgICoKLSogICAgICAgICAgICAgICAvCi0qICAgICAgICAqLS0tPiAvCi0qICAgICAg
ICAgICAgIC8KLSogICAgICAgICAgICAqCi0qLwotZnVuY3Rpb24gcG9pbnRSaWdodFJheUxpbmVT
ZWdtZW50Q29sbGlzaW9uRGV0ZWN0KHBvaW50LCBsaW5lU3RhcnQsIGxpbmVFbmQpIHsKLSAgICBj
b25zdCBtYXhYID0gTWF0aC5tYXgobGluZVN0YXJ0LngsIGxpbmVFbmQueCk7Ci0gICAgY29uc3Qg
bWluWCA9IE1hdGgubWluKGxpbmVTdGFydC54LCBsaW5lRW5kLngpOwotICAgIGNvbnN0IG1heFkg
PSBNYXRoLm1heChsaW5lU3RhcnQueSwgbGluZUVuZC55KTsKLSAgICBjb25zdCBtaW5ZID0gTWF0
aC5taW4obGluZVN0YXJ0LnksIGxpbmVFbmQueSk7Ci0gICAgaWYgKChwb2ludC54IDw9IG1heFgg
JiYgcG9pbnQueCA+PSBtaW5YIHx8IHBvaW50LnggPCBtaW5YKSAmJgotICAgICAgICBwb2ludC55
IDwgbWF4WSAmJiBwb2ludC55ID4gbWluWSAmJgotICAgICAgICBsaW5lU3RhcnQueSAhPT0gbGlu
ZUVuZC55KSB7Ci0gICAgICAgIGNvbnN0IHRhblRvcEFuZ2xlID0gKGxpbmVFbmQueCAtIGxpbmVT
dGFydC54KSAvIChsaW5lRW5kLnkgLSBsaW5lU3RhcnQueSk7Ci0gICAgICAgIHJldHVybiBwb2lu
dC54IDwgbGluZUVuZC54IC0gdGFuVG9wQW5nbGUgKiAobGluZUVuZC55IC0gcG9pbnQueSk7Ci0g
ICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotZnVuY3Rpb24gZ2V0TW91c2VQb3NJbkNhbnZh
cyhldmVudCwgY2FudmFzKSB7Ci0gICAgY29uc3QgcmVjdCA9IGNhbnZhcy5nZXRCb3VuZGluZ0Ns
aWVudFJlY3QoKTsKLSAgICByZXR1cm4gewotICAgICAgICB4OiBldmVudC5jbGllbnRYIC0gcmVj
dC5sZWZ0LAotICAgICAgICB5OiBldmVudC5jbGllbnRZIC0gcmVjdC50b3AsCi0gICAgfQotfQot
Ci1mdW5jdGlvbiBnZXREZXZpY2VQaXhlbFJhdGlvKCkgewotICAgIHJldHVybiB3aW5kb3cuZGV2
aWNlUGl4ZWxSYXRpbzsKLX0KLQotZnVuY3Rpb24gc2V0dXBDYW52YXNXaWR0aFdpdGhEcHIoY2Fu
dmFzLCB3aWR0aCkgewotICAgIGNvbnN0IGRwciA9IGdldERldmljZVBpeGVsUmF0aW8oKTsKLSAg
ICBjYW52YXMuc3R5bGUud2lkdGggPSBgJHt3aWR0aH1weGA7Ci0gICAgY2FudmFzLndpZHRoID0g
d2lkdGggKiBkcHI7Ci0gICAgY2FudmFzLmxvZ2ljV2lkdGggPSB3aWR0aDsKLX0KLQotZnVuY3Rp
b24gc2V0dXBDYW52YXNIZWlnaHRXaXRoRHByKGNhbnZhcywgaGVpZ2h0KSB7Ci0gICAgY29uc3Qg
ZHByID0gZ2V0RGV2aWNlUGl4ZWxSYXRpbygpOwotICAgIGNhbnZhcy5zdHlsZS5oZWlnaHQgPSBg
JHtoZWlnaHR9cHhgOwotICAgIGNhbnZhcy5oZWlnaHQgPSBoZWlnaHQgKiBkcHI7Ci0gICAgY2Fu
dmFzLmxvZ2ljSGVpZ2h0ID0gaGVpZ2h0OwotfQotCi1mdW5jdGlvbiBzZXR1cENhbnZhc0NvbnRl
eHRTY2FsZShjYW52YXMpIHsKLSAgICBjb25zdCBkcHIgPSBnZXREZXZpY2VQaXhlbFJhdGlvKCk7
Ci0gICAgY29uc3QgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpOwotICAgIGNvbnRl
eHQuc2NhbGUoZHByLCBkcHIpOwotfQotCi1mdW5jdGlvbiBYU2Nyb2xsYWJsZUNhbnZhc1Byb3Zp
ZGVyKGV4cG9ydGVyLCAuLi5jaGlsZHJlbkZ1bmN0aW9ucykgewotICAgIGNvbnN0IGNvbnRhaW5l
clJlZiA9IFJFRi5jcmVhdGVSZWYoewotICAgICAgICBzdGF0ZToge3dpZHRoOiAwfSwKLSAgICAg
ICAgb25TdGF0ZVVwZGF0ZTogKGVsZW1lbnQsIHN0YXRlRGlmZiwgc3RhdGUpID0+IHsKLSAgICAg
ICAgICAgIGlmIChzdGF0ZURpZmYud2lkdGgpCi0gICAgICAgICAgICAgICAgZWxlbWVudC5zdHls
ZS53aWR0aCA9IGAke3N0YXRlRGlmZi53aWR0aH1weGA7Ci0gICAgICAgIH0sCi0gICAgfSk7Ci0g
ICAgY29uc3Qgc2Nyb2xsUmVmID0gUkVGLmNyZWF0ZVJlZih7fSk7Ci0gICAgY29uc3Qgc2Nyb2xs
RXZlbnRTdHJlYW0gPSBzY3JvbGxSZWYuZnJvbUV2ZW50KCdzY3JvbGwnKTsKLSAgICBjb25zdCBy
ZXNpemVFdmVudFN0cmVhbSA9IG5ldyBFdmVudFN0cmVhbSgpOwotICAgIHdpbmRvdy5hZGRFdmVu
dExpc3RlbmVyKCdyZXNpemUnLCAoKSA9PiB7Ci0gICAgICAgIHByZXNlbnRlclJlZi5zZXRTdGF0
ZSh7cmVzaXplOnRydWV9KTsKLSAgICB9KTsKLSAgICBjb25zdCByZXNpemVDb250YWluZXJXaWR0
aCA9IHdpZHRoID0+IHtjb250YWluZXJSZWYuc2V0U3RhdGUoe3dpZHRoOiB3aWR0aH0pfTsKLSAg
ICBjb25zdCBnZXRTY3JvbGxhYmxlQm91bmRpbmdDbGllbnRSZWN0ID0gKCkgPT4gc2Nyb2xsUmVm
LmVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7Ci0gICAgY29uc3QgcHJlc2VudGVyUmVm
ID0gUkVGLmNyZWF0ZVJlZih7Ci0gICAgICAgIHN0YXRlOiB7c2Nyb2xsTGVmdDogMH0sCi0gICAg
ICAgIG9uRWxlbWVudE1vdW50OiAoZWxlbWVudCkgPT4gewotICAgICAgICAgICAgY29uc3Qgc2Ny
b2xsYWJsZVdpZHRoID0gIGdldFNjcm9sbGFibGVCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aDsK
LSAgICAgICAgICAgIGVsZW1lbnQuc3R5bGUud2lkdGggPSBgJHtzY3JvbGxhYmxlV2lkdGh9cHhg
OwotICAgICAgICAgICAgcmVzaXplRXZlbnRTdHJlYW0uYWRkKHNjcm9sbGFibGVXaWR0aCk7Ci0g
ICAgICAgIH0sCi0gICAgICAgIG9uU3RhdGVVcGRhdGU6IChlbGVtZW50LCBzdGF0ZURpZmYsIHN0
YXRlKSA9PiB7Ci0gICAgICAgICAgICBpZiAoc3RhdGVEaWZmLnJlc2l6ZSkgewotICAgICAgICAg
ICAgICAgIGNvbnN0IHNjcm9sbGFibGVXaWR0aCA9ICBnZXRTY3JvbGxhYmxlQm91bmRpbmdDbGll
bnRSZWN0KCkud2lkdGg7Ci0gICAgICAgICAgICAgICAgZWxlbWVudC5zdHlsZS53aWR0aCA9IGAk
e3Njcm9sbGFibGVXaWR0aH1weGA7Ci0gICAgICAgICAgICAgICAgcmVzaXplRXZlbnRTdHJlYW0u
YWRkKHNjcm9sbGFibGVXaWR0aCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9KTsK
LSAgICBjb25zdCBsYXlvdXRTaXplTWF5Q2hhbmdlID0gbmV3IEV2ZW50U3RyZWFtKCk7Ci0gICAg
bGF5b3V0U2l6ZU1heUNoYW5nZS5hY3Rpb24oKCkgPT4gewotICAgICAgICBwcmVzZW50ZXJSZWYu
c2V0U3RhdGUoe3Jlc2l6ZTp0cnVlfSk7Ci0gICAgfSk7Ci0gICAgLy8gUHJvdmlkZSBwYXJlbnQg
ZnVuY3Rpb25zL2V2ZW50IHRvIGNoaWxkcmVuIHRvIHVzZQotCi0gICAgcmV0dXJuIGA8ZGl2IGNs
YXNzPSJjb250ZW50IiByZWY9IiR7c2Nyb2xsUmVmfSI+Ci0gICAgICAgIDxkaXYgcmVmPSIke2Nv
bnRhaW5lclJlZn0iIHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmUiPgotICAgICAgICAgICAgPGRp
diByZWY9IiR7cHJlc2VudGVyUmVmfSIgc3R5bGU9InBvc2l0aW9uOiAtd2Via2l0LXN0aWNreTsg
cG9zaXRpb246c3RpY2t5OyB0b3A6MDsgbGVmdDogMCI+JHsKLSAgICAgICAgICAgICAgICBMaXN0
UHJvdmlkZXIoKHVwZGF0ZUNoaWxkcmVuRnVuY3Rpb25zKSA9PiB7Ci0gICAgICAgICAgICAgICAg
ICAgIGlmIChleHBvcnRlcikgewotICAgICAgICAgICAgICAgICAgICAgICAgZXhwb3J0ZXIoCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyoqCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKiBVcGRhdGUgQ2hpbGRyZW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIEBwYXJh
bSBjaGlsZHJlbiB7QXJyYXl9IHIgQW4gYXJyYXkgb2YgdGhlIGNoaWxkcmVuCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKi8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hpbGRy
ZW4pID0+IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlQ2hpbGRyZW5G
dW5jdGlvbnMoY2hpbGRyZW4pOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBQ
cm9waWdhdGUgdGhlIGN1cnJlbnQgc3RhdGUgdG8gbmV3IGNoaWxkcmVuCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlc2l6ZUV2ZW50U3RyZWFtLnJlcGxheUxhc3QoKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsRXZlbnRTdHJlYW0ucmVwbGF5TGFzdCgp
OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLyoqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBOb3RpZnkgUmUtcmVuZGVy
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBAcGFyYW0gd2lkdGgge251bWJlcn0gciBp
ZiB1bmRlZmluZWQsIGl0IHdpbGwgYXV0byBkZXRhY3QgdGhlIHdpZHRoIGNoYW5nZQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICovCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHdp
ZHRoKSA9PiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygd2lk
dGggPT09ICJudW1iZXIiICYmIHdpZHRoID49IDApCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXNpemVFdmVudFN0cmVhbS5hZGQod2lkdGgpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBsYXlvdXRTaXplTWF5Q2hhbmdlLmFkZCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICAgICAgICAgICk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICB9LCBbcmVzaXplQ29udGFpbmVyV2lkdGgsIHNjcm9sbEV2ZW50U3RyZWFt
LCByZXNpemVFdmVudFN0cmVhbSwgbGF5b3V0U2l6ZU1heUNoYW5nZV0sIC4uLmNoaWxkcmVuRnVu
Y3Rpb25zKQotICAgICAgICAgICAgfTwvZGl2PgotICAgICAgICA8L2Rpdj4KLSAgICA8L2Rpdj5g
OwotfQotCi1jbGFzcyBDb2xvckJhdGNoUmVuZGVyIHsKLSAgICBjb25zdHJ1Y3RvcigpIHsKLSAg
ICAgICAgdGhpcy5jb2xvclNlcXNNYXAgPSB7fTsKLSAgICB9Ci0KLSAgICBsYXp5Q3JlYXRlQ29s
b3JTZXFzKGNvbG9yLCBzdGFydEFjdGlvbiwgZmluYWxBY3Rpb24pIHsKLSAgICAgICAgaWYgKGZh
bHNlID09PSBjb2xvciBpbiB0aGlzLmNvbG9yU2Vxc01hcCkKLSAgICAgICAgICAgIHRoaXMuY29s
b3JTZXFzTWFwW2NvbG9yXSA9IFtzdGFydEFjdGlvbiwgZmluYWxBY3Rpb25dOwotICAgIH0KLQot
ICAgIGFkZFNlcShjb2xvciwgc2VxQWN0aW9uKSB7Ci0gICAgICAgIHRoaXMuY29sb3JTZXFzTWFw
W2NvbG9yXS5wdXNoKHNlcUFjdGlvbik7Ci0gICAgfQotCi0gICAgYmF0Y2hSZW5kZXIoY29udGV4
dCkgewotICAgICAgICBmb3IgKGxldCBjb2xvciBvZiBPYmplY3Qua2V5cyh0aGlzLmNvbG9yU2Vx
c01hcCkpIHsKLSAgICAgICAgICAgIGNvbnN0IHNlcXMgPSB0aGlzLmNvbG9yU2Vxc01hcFtjb2xv
cl07Ci0gICAgICAgICAgICBzZXFzWzBdKGNvbnRleHQsIGNvbG9yKTsKLSAgICAgICAgICAgIGZv
cihsZXQgaSA9IDI7IGkgPCBzZXFzLmxlbmd0aDsgaSsrKQotICAgICAgICAgICAgICAgIHNlcXNb
aV0oY29udGV4dCwgY29sb3IpOwotICAgICAgICAgICAgc2Vxc1sxXShjb250ZXh0LCBjb2xvcik7
Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgY2xlYXIoKSB7Ci0gICAgICAgIHRoaXMuY29sb3JTZXFz
TWFwID0gbmV3IE1hcCgpOwotICAgIH0KLX0KLQotZnVuY3Rpb24geFNjcm9sbFN0cmVhbVJlbmRl
ckZhY3RvcnkoaGVpZ2h0KSB7Ci0gICAgcmV0dXJuIChyZWRyYXcsIGVsZW1lbnQsIHN0YXRlRGlm
Ziwgc3RhdGUpID0+IHsKLSAgICAgICAgY29uc3Qgd2lkdGggPSB0eXBlb2Ygc3RhdGVEaWZmLndp
ZHRoID09PSAnbnVtYmVyJyA/IHN0YXRlRGlmZi53aWR0aCA6IHN0YXRlLndpZHRoOwotICAgICAg
ICBpZiAod2lkdGggPD0gMCkKLSAgICAgICAgICAgIC8vIE5vdGhpbmcgdG8gcmVuZGVyCi0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIGxldCBzdGFydFggPSAwOwotICAgICAgICBsZXQgcmVu
ZGVyV2lkdGggPSB3aWR0aDsKLSAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHsK
LSAgICAgICAgICAgIGlmIChlbGVtZW50LmxvZ2ljV2lkdGggIT09IHdpZHRoKSB7Ci0gICAgICAg
ICAgICAgICAgc2V0dXBDYW52YXNXaWR0aFdpdGhEcHIoZWxlbWVudCwgd2lkdGgpOwotICAgICAg
ICAgICAgICAgIHNldHVwQ2FudmFzQ29udGV4dFNjYWxlKGVsZW1lbnQpOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgaWYgKGVsZW1lbnQubG9naWNIZWlnaHQgIT09IGhlaWdodCkgewotICAg
ICAgICAgICAgICAgIHNldHVwQ2FudmFzSGVpZ2h0V2l0aERwcihlbGVtZW50LCBoZWlnaHQpOwot
ICAgICAgICAgICAgICAgIHNldHVwQ2FudmFzQ29udGV4dFNjYWxlKGVsZW1lbnQpOwotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgZWxlbWVudC5nZXRDb250ZXh0KCIyZCIsIHthbHBoYTogZmFs
c2V9KS5jbGVhclJlY3Qoc3RhcnRYLCAwLCByZW5kZXJXaWR0aCwgZWxlbWVudC5sb2dpY0hlaWdo
dCk7Ci0gICAgICAgICAgICByZWRyYXcoc3RhcnRYLCByZW5kZXJXaWR0aCwgZWxlbWVudCwgc3Rh
dGVEaWZmLCBzdGF0ZSk7Ci0gICAgICAgIH0pOwotICAgIH0KLX0KLQotLy8gbmFtZXNwYWNlIFRp
bWVsaW5lCi1jb25zdCBUaW1lbGluZSA9IHt9OwotCi1UaW1lbGluZS5DYW52YXNTZXJpZXNDb21w
b25lbnQgPSAoZG90cywgc2NhbGVzLCBvcHRpb24gPSB7fSkgPT4gewotICAgIGNvbnNvbGUuYXNz
ZXJ0KGRvdHMubGVuZ3RoIDw9IHNjYWxlcy5sZW5ndGgpOwotCi0gICAgLy8gR2V0IHRoZSBjc3Mg
dmFsdWUsIHRoaXMgY29tcG9uZW50IGFzc3VtZSB0byB1c2Ugd2l0aCB3ZWJraXQuY3NzCi0gICAg
Y29uc3QgY29tcHV0ZWRTdHlsZSA9IGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuYm9keSk7Ci0g
ICAgbGV0IHJhZGl1cyA9IHBhcnNlSW50KGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgn
LS1zbWFsbFNpemUnKSkgLyAyOwotICAgIGxldCBkb3RNYXJnaW4gPSBwYXJzZUludChjb21wdXRl
ZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tdGlueVNpemUnKSkgLyAyOwotICAgIGxldCBmb250
RmFtaWx5ID0gY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCdmb250LWZhbWlseScpOwot
ICAgIGxldCBkZWZhdWx0RG90Q29sb3IgPSBjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUo
Jy0tZ3JlZW5MaWdodCcpLnRyaW0oKTsKLSAgICBsZXQgZGVmYXVsdEVtcHR5TGluZUNvbG9yID0g
Y29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWdyZXknKS50cmltKCk7Ci0gICAgbGV0
IGRlZmF1bHRJbm5lckxhYmxlQ29sb3IgPSBjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUo
Jy0td2hpdGUnKS50cmltKCk7Ci0gICAgbGV0IGRlZmF1bHRGb250U2l6ZSA9IDEwOwotCi0gICAg
Ly8gR2V0IGNvbmZpZ3VyYXRpb24KLSAgICAvLyBEZWZhdWx0IG9yZGVyIGlzIGxlZnQgaXMgYmln
Z2VzdAotICAgIGNvbnN0IHJldmVyc2VkID0gdHlwZW9mIG9wdGlvbi5yZXZlcnNlZCA9PT0gImJv
b2xlYW4iID8gb3B0aW9uLnJldmVyc2VkIDogZmFsc2U7Ci0gICAgY29uc3QgZ2V0U2NhbGUgPSB0
eXBlb2Ygb3B0aW9uLmdldFNjYWxlRnVuYyA9PT0gImZ1bmN0aW9uIiA/IG9wdGlvbi5nZXRTY2Fs
ZUZ1bmMgOiAoYSkgPT4gYTsKLSAgICBjb25zdCBjb21wID0gdHlwZW9mIG9wdGlvbi5jb21wYXJl
RnVuYyA9PT0gImZ1bmN0aW9uIiA/IG9wdGlvbi5jb21wYXJlRnVuYyA6IChhLCBiKSA9PiBhIC0g
YjsKLSAgICBjb25zdCBvbkRvdENsaWNrID0gdHlwZW9mIG9wdGlvbi5vbkRvdENsaWNrID09PSAi
ZnVuY3Rpb24iID8gb3B0aW9uLm9uRG90Q2xpY2sgOiBudWxsOwotICAgIGNvbnN0IG9uRG90RW50
ZXIgPSB0eXBlb2Ygb3B0aW9uLm9uRG90RW50ZXIgPT09ICJmdW5jdGlvbiIgPyBvcHRpb24ub25E
b3RFbnRlciA6IG51bGw7Ci0gICAgY29uc3Qgb25Eb3RMZWF2ZSA9IHR5cGVvZiBvcHRpb24ub25E
b3RMZWF2ZSA9PT0gImZ1bmN0aW9uIiA/IG9wdGlvbi5vbkRvdExlYXZlIDogbnVsbDsKLSAgICBj
b25zdCB0YWdIZWlnaHQgPSBkZWZhdWx0Rm9udFNpemU7Ci0gICAgY29uc3QgaGVpZ2h0ID0gb3B0
aW9uLmhlaWdodCA/IG9wdGlvbi5oZWlnaHQgOiAyICogcmFkaXVzICsgdGFnSGVpZ2h0OwotICAg
IGNvbnN0IGNvbG9yQmF0Y2hSZW5kZXIgPSBuZXcgQ29sb3JCYXRjaFJlbmRlcigpOwotICAgIGxl
dCBkcmF3TGFiZWxzU2VxcyA9IFtdOwotCi0gICAgLy8gRHJhdyBkb3QgYXBpIGNhbiBiZSB1c2Vk
IGluIHVzZXIgZGVmaW5lZCByZW5kZXIgZnVuY3Rpb24KLSAgICBjb25zdCBkcmF3RG90ID0gKGNv
bnRleHQsIHgsIHksIGlzRW1wdHksIHRhZyA9IG51bGwsIGlubmVyTGFiZWwsIHVzZVJhZGl1cywg
Y29sb3IsIGlubmVyTGFiZWxDb2xvciwgZW1wdHlsaW5lQ29sb3IpID0+IHsKLSAgICAgICAgdXNl
UmFkaXVzID0gdXNlUmFkaXVzID8gdXNlUmFkaXVzIDogcmFkaXVzOwotICAgICAgICBjb2xvciA9
IGNvbG9yID8gY29sb3IgOiBkZWZhdWx0RG90Q29sb3I7Ci0gICAgICAgIGVtcHR5bGluZUNvbG9y
ID0gZW1wdHlsaW5lQ29sb3IgPyBlbXB0eWxpbmVDb2xvciA6IGRlZmF1bHRFbXB0eUxpbmVDb2xv
cjsKLSAgICAgICAgaW5uZXJMYWJlbENvbG9yID0gaW5uZXJMYWJlbENvbG9yID8gaW5uZXJMYWJl
bENvbG9yIDogZGVmYXVsdElubmVyTGFibGVDb2xvcjsKLSAgICAgICAgY29uc3QgZm9udFNpemUg
PSB1c2VSYWRpdXMgKiAxLjU7Ci0gICAgICAgIGNvbnN0IGJhc2VsaW5lWSA9IHkgKyB1c2VSYWRp
dXM7Ci0gICAgICAgIGlmICghaXNFbXB0eSkgewotICAgICAgICAgICAgLy8gRHJhdyB0aGUgZG90
Ci0gICAgICAgICAgICBjb2xvckJhdGNoUmVuZGVyLmxhenlDcmVhdGVDb2xvclNlcXMoY29sb3Is
IChjb250ZXh0KSA9PiB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC5iZWdpblBhdGgoKTsKLSAg
ICAgICAgICAgICAgICBkcmF3TGFiZWxzU2VxcyA9IFtdOwotICAgICAgICAgICAgfSwgKGNvbnRl
eHQsIGNvbG9yKSA9PiB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC5maWxsU3R5bGUgPSBjb2xv
cjsKLSAgICAgICAgICAgICAgICBjb250ZXh0LmZpbGwoKTsKLSAgICAgICAgICAgICAgICBjb250
ZXh0LmZvbnQgPSBgJHtmb250U2l6ZX1weCAke2ZvbnRGYW1pbHl9YDsKLSAgICAgICAgICAgICAg
ICBjb250ZXh0LnRleHRCYXNlbGluZSA9ICJ0b3AiOwotICAgICAgICAgICAgICAgIGNvbnRleHQu
dGV4dEFsaWduID0gImNlbnRlciI7Ci0gICAgICAgICAgICAgICAgY29udGV4dC5mb250V2VpZ2h0
ID0gNDAwOwotICAgICAgICAgICAgICAgIGNvbnRleHQuZmlsbFN0eWxlID0gaW5uZXJMYWJlbENv
bG9yOwotICAgICAgICAgICAgICAgIGRyYXdMYWJlbHNTZXFzLmZvckVhY2goc2VxID0+IHNlcSgp
KTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgY29sb3JCYXRjaFJlbmRlci5hZGRTZXEo
Y29sb3IsIChjb250ZXh0LCBjb2xvcikgPT4gewotICAgICAgICAgICAgICAgIGNvbnRleHQuYXJj
KHggKyBkb3RNYXJnaW4gKyB1c2VSYWRpdXMsIGJhc2VsaW5lWSwgdXNlUmFkaXVzLCAwLCAyICog
TWF0aC5QSSk7Ci0gICAgICAgICAgICAgICAgaWYgKGlubmVyTGFiZWwgaW5zdGFuY2VvZiBJbWFn
ZSB8fCB0eXBlb2YgaW5uZXJMYWJlbCA9PT0gInN0cmluZyIgJiYgKGlubmVyTGFiZWwuZW5kc1dp
dGgoJy5zdmcnKSB8fCBpbm5lckxhYmVsLmVuZHNXaXRoKCcucG5nJykgfHwgaW5uZXJMYWJlbC5l
bmRzV2l0aCgnLmpwZycpIHx8IGlubmVyTGFiZWwuZW5kc1dpdGgoJy5qcGVnJykpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGxldCBpbWFnZSA9IGlubmVyTGFiZWw7Ci0gICAgICAgICAgICAgICAg
ICAgIGlmICh0eXBlb2YgaW5uZXJMYWJlbCA9PT0gInN0cmluZyIpIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGltYWdlID0gbmV3IEltYWdlKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBp
bWFnZS5zcmMgPSBpbm5lckxhYmVsOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGltYWdlX3BhZGRpbmcgPSB1c2VSYWRpdXMgLSBmb250U2l6ZSAvIDI7
Ci0gICAgICAgICAgICAgICAgICAgIGRyYXdMYWJlbHNTZXFzLnB1c2goKCkgPT4gewotICAgICAg
ICAgICAgICAgICAgICAgICAgY29udGV4dC5kcmF3SW1hZ2UoaW1hZ2UsIHggKyBkb3RNYXJnaW4g
KyBpbWFnZV9wYWRkaW5nLCB5ICsgaW1hZ2VfcGFkZGluZywgZm9udFNpemUsIGZvbnRTaXplKTsK
LSAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBl
b2YgaW5uZXJMYWJlbCA9PT0gIm51bWJlciIgfHwgdHlwZW9mIGlubmVyTGFiZWwgPT09ICJzdHJp
bmciKSB7Ci0gICAgICAgICAgICAgICAgICAgIGRyYXdMYWJlbHNTZXFzLnB1c2goKCkgPT4gewot
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gRHJhdyB0aGUgaW5uZXIgbGFiZWwKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGlubmVyTGFiZWxTaXplID0gY29udGV4dC5tZWFzdXJlVGV4
dChpbm5lckxhYmVsKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZvbnRIZWlnaHQg
PSBpbm5lckxhYmVsU2l6ZS5mb250Qm91bmRpbmdCb3hBc2NlbnQgKyBpbm5lckxhYmVsU2l6ZS5m
b250Qm91bmRpbmdCb3hEZXNjZW50OwotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYWN0
dWFsSGVpZ2h0ID0gaW5uZXJMYWJlbFNpemUuYWN0dWFsQm91bmRpbmdCb3hBc2NlbnQgKyBpbm5l
ckxhYmVsU2l6ZS5hY3R1YWxCb3VuZGluZ0JveERlc2NlbnQ7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCByZWFsU3RhcnRHYXAgPSBpbm5lckxhYmVsU2l6ZS5mb250Qm91bmRpbmdCb3hB
c2NlbnQgLSBpbm5lckxhYmVsU2l6ZS5hY3R1YWxCb3VuZGluZ0JveEFzY2VudDsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnRleHQuZmlsbFRleHQoaW5uZXJMYWJlbCwgeCArIGRvdE1hcmdp
biArIHVzZVJhZGl1cywgeSAtIHJlYWxTdGFydEdhcCArIHVzZVJhZGl1cyAtIChhY3R1YWxIZWln
aHQgPCBmb250SGVpZ2h0ID8gIGFjdHVhbEhlaWdodCA6IGZvbnRIZWlnaHQpIC8gMik7Ci0gICAg
ICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0pOwot
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLy8gRHJhdyB0aGUgZW1wdHkKLSAgICAgICAg
ICAgIGNvbG9yQmF0Y2hSZW5kZXIubGF6eUNyZWF0ZUNvbG9yU2VxcyhlbXB0eWxpbmVDb2xvciwg
KGNvbnRleHQpID0+IHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LmJlZ2luUGF0aCgpOwotICAg
ICAgICAgICAgfSwgKGNvbnRleHQsIGNvbG9yKSA9PiB7Ci0gICAgICAgICAgICAgICAgY29udGV4
dC5zdHJva2VTdHlsZSA9IGNvbG9yOwotICAgICAgICAgICAgICAgIGNvbnRleHQuc3Ryb2tlKCk7
Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIGNvbG9yQmF0Y2hSZW5kZXIuYWRkU2VxKGVt
cHR5bGluZUNvbG9yLCAoY29udGV4dCkgPT4gewotICAgICAgICAgICAgICAgIGNvbnRleHQubW92
ZVRvKHggKyBkb3RNYXJnaW4sIGJhc2VsaW5lWSk7Ci0gICAgICAgICAgICAgICAgY29udGV4dC5s
aW5lVG8oeCArIGRvdE1hcmdpbiArIDIgKiB1c2VSYWRpdXMsIGJhc2VsaW5lWSk7Ci0gICAgICAg
ICAgICAgICAgY29udGV4dC5saW5lV2lkdGggPSAxOwotICAgICAgICAgICAgfSk7Ci0gICAgICAg
IH0KLQotICAgICAgICAvLyBEcmF3IHRoZSB0YWcKLSAgICAgICAgaWYgKHR5cGVvZiB0YWcgPT09
ICJudW1iZXIiIHx8IHR5cGVvZiB0YWcgPT09ICJzdHJpbmciKSB7Ci0gICAgICAgICAgICBjb250
ZXh0LmZvbnQgPSBgJHtkZWZhdWx0Rm9udFNpemV9cHggJHtmb250RmFtaWx5fWA7Ci0gICAgICAg
ICAgICBjb250ZXh0LmZpbGxTdHlsZSA9IGNvbG9yOwotICAgICAgICAgICAgY29udGV4dC50ZXh0
QWxpZ24gPSAiY2VudGVyIjsKLSAgICAgICAgICAgIGNvbnRleHQudGV4dEJhc2VsaW5lID0gInRv
cCI7Ci0gICAgICAgICAgICBjb250ZXh0LmZpbGxUZXh0KHRhZywgeCArIGRvdE1hcmdpbiArIHJh
ZGl1cywgYmFzZWxpbmVZICsgdXNlUmFkaXVzKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICB9
OwotICAgIGNvbnN0IHJlbmRlciA9IHR5cGVvZiBvcHRpb24ucmVuZGVyRmFjdG9yeSA9PT0gImZ1
bmN0aW9uIiA/IG9wdGlvbi5yZW5kZXJGYWN0b3J5KGRyYXdEb3QpIDogKGRvdCwgY29udGV4dCwg
eCwgeSkgPT4gZHJhd0RvdChjb250ZXh0LCB4LCB5LCAhZG90KTsKLSAgICBjb25zdCBzb3J0RGF0
YSA9IG9wdGlvbi5zb3J0RGF0YSA9PT0gdHJ1ZSA/IG9wdGlvbi5zb3J0RGF0YSA6IGZhbHNlOwot
Ci0gICAgLy8gSW5pdGlhbGl6ZQotICAgIGNvbnN0IGluaXREb3RzID0gZG90cy5tYXAoKGRvdCkg
PT4gZG90KTsKLSAgICBjb25zdCBpbml0U2NhbGVzID0gc2NhbGVzLm1hcCgoc2NhbGUpID0+IHNj
YWxlKTsKLSAgICBpZiAoc29ydERhdGEpIHsKLSAgICAgICAgaW5pdERvdHMuc29ydCgoYSwgYikg
PT4gY29tcChnZXRTY2FsZShhKSwgZ2V0U2NhbGUoYikpKTsKLSAgICAgICAgaW5pdFNjYWxlcy5z
b3J0KGNvbXApOwotICAgIH0KLSAgICBjb25zdCBmaWx0ZXJEb3RzID0gKGRvdHMpID0+IGRvdHMu
ZmlsdGVyKGRvdCA9PiB0eXBlb2YgZG90Ll94ID09PSAnbnVtYmVyJyk7Ci0gICAgbGV0IGluQ2Fj
aGVEb3RzID0gW107Ci0gICAgY29uc3QgZ2V0TW91c2VFdmVudFRpcmdnZXJEb3RzID0gKGUsIHNj
cm9sbExlZnQsIGVsZW1lbnQpID0+IHsKLSAgICAgICAgY29uc3Qge3gsIHl9ID0gZ2V0TW91c2VQ
b3NJbkNhbnZhcyhlLCBlbGVtZW50KTsKLSAgICAgICAgcmV0dXJuIGluQ2FjaGVEb3RzLmZpbHRl
cihkb3QgPT4gcG9pbnRDaXJjbGVDb2xsaXNpb25EZXRhY3Qoe3gsIHl9LAotICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIHg6IGRvdC5fZG90Q2VudGVyLnggLSAoc2Nyb2xsTGVmdCAtIGRv
dC5fY2FjaGVkU2Nyb2xsTGVmdCksCi0gICAgICAgICAgICAgICAgeTogZG90Ll9kb3RDZW50ZXIu
eSwKLSAgICAgICAgICAgICAgICByYWRpdXM6IHJhZGl1cwotICAgICAgICAgICAgfSkpOwotICAg
IH0KLQotICAgIGNvbnN0IGRvdFdpZHRoID0gMiAqIChyYWRpdXMgKyBkb3RNYXJnaW4pOwotICAg
IGNvbnN0IHBhZGRpbmcgPSAxMDAgKiBkb3RXaWR0aCAvIGdldERldmljZVBpeGVsUmF0aW8oKTsK
LSAgICBjb25zdCB4U2Nyb2xsU3RyZWFtUmVuZGVyID0geFNjcm9sbFN0cmVhbVJlbmRlckZhY3Rv
cnkoaGVpZ2h0KTsKLQotICAgIGNvbnN0IHJlZHJhdyA9IChzdGFydFgsIHJlbmRlcldpZHRoLCBl
bGVtZW50LCBzdGF0ZURpZmYsIHN0YXRlKSA9PiB7Ci0gICAgICAgIGNvbnN0IHNjcm9sbExlZnQg
PSB0eXBlb2Ygc3RhdGVEaWZmLnNjcm9sbExlZnQgPT09ICdudW1iZXInID8gc3RhdGVEaWZmLnNj
cm9sbExlZnQgOiBzdGF0ZS5zY3JvbGxMZWZ0OwotICAgICAgICBjb25zdCBzY2FsZXMgPSBzdGF0
ZURpZmYuc2NhbGVzID8gc3RhdGVEaWZmLnNjYWxlcyA6IHN0YXRlLnNjYWxlczsKLSAgICAgICAg
Y29uc3QgZG90cyA9IHN0YXRlRGlmZi5kb3RzID8gc3RhdGVEaWZmLmRvdHMgOiBzdGF0ZS5kb3Rz
OwotICAgICAgICAvLyBUaGlzIGNvbG9yIG1heWJlIGNoYW5nZSB3aGVuIHN3aXRjaCBkYXJrL2xp
Z2h0IG1vZGUKLSAgICAgICAgY29uc3QgZGVmYXVsdExpbmVDb2xvciA9IGdldENvbXB1dGVkU3R5
bGUoZG9jdW1lbnQuYm9keSkuZ2V0UHJvcGVydHlWYWx1ZSgnLS1ib3JkZXJDb2xvcklubGluZUVs
ZW1lbnQnKTsKLQotICAgICAgICBjb25zdCBjb250ZXh0ID0gZWxlbWVudC5nZXRDb250ZXh0KCIy
ZCIsIHsgYWxwaGE6IGZhbHNlIH0pOwotICAgICAgICAvLyBDbGVhciBwZXJ2aW91cyBiYXRjaFJl
bmRlcgotICAgICAgICBjb2xvckJhdGNoUmVuZGVyLmNsZWFyKCk7Ci0gICAgICAgIC8vIERyYXcg
dGhlIHRpbWUgbGluZQotICAgICAgICBjb2xvckJhdGNoUmVuZGVyLmxhenlDcmVhdGVDb2xvclNl
cXMoZGVmYXVsdExpbmVDb2xvciwgKGNvbnRleHQpID0+IHsKLSAgICAgICAgICAgIGNvbnRleHQu
YmVnaW5QYXRoKCk7Ci0gICAgICAgIH0sIChjb250ZXh0LCBjb2xvcikgPT4gewotICAgICAgICAg
ICAgY29udGV4dC5saW5lV2lkdGggPSAxOwotICAgICAgICAgICAgY29udGV4dC5zdHJva2VTdHls
ZSA9IGNvbG9yOwotICAgICAgICAgICAgY29udGV4dC5zdHJva2UoKTsKLSAgICAgICAgfSk7Ci0g
ICAgICAgIGNvbG9yQmF0Y2hSZW5kZXIuYWRkU2VxKGRlZmF1bHRMaW5lQ29sb3IsIChjb250ZXh0
KSA9PiB7Ci0gICAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhzdGFydFgsIHJhZGl1cyk7Ci0gICAg
ICAgICAgICBjb250ZXh0LmxpbmVUbyhzdGFydFggKyByZW5kZXJXaWR0aCwgcmFkaXVzKTsKLSAg
ICAgICAgfSk7Ci0gICAgICAgIGlmICghc2NhbGVzIHx8ICFkb3RzIHx8ICFzY2FsZXMubGVuZ3Ro
IHx8ICFkb3RzLmxlbmd0aCkgewotICAgICAgICAgICAgY29sb3JCYXRjaFJlbmRlci5iYXRjaFJl
bmRlcihjb250ZXh0KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICAv
LyBEcmF3IHRoZSBkb3RzCi0gICAgICAgIC8vIEZpcnN0LCBDYWxjdWxhdGUgdGhlIHJlbmRlciBy
YW5nZToKLSAgICAgICAgbGV0IHN0YXJ0U2NhbGVzSW5kZXggPSBNYXRoLmZsb29yKChzY3JvbGxM
ZWZ0ICsgc3RhcnRYKSAvIGRvdFdpZHRoKTsKLSAgICAgICAgaWYgKHN0YXJ0U2NhbGVzSW5kZXgg
PCAwKQotICAgICAgICAgICAgc3RhcnRTY2FsZXNJbmRleCA9IDA7Ci0gICAgICAgIGxldCBlbmRT
Y2FsZXNJbmRleCA9IHN0YXJ0U2NhbGVzSW5kZXggKyBNYXRoLmNlaWwoKHJlbmRlcldpZHRoKSAv
IGRvdFdpZHRoKTsKLSAgICAgICAgaWYgKGVuZFNjYWxlc0luZGV4ID49IHNjYWxlcy5sZW5ndGgp
Ci0gICAgICAgICAgICBlbmRTY2FsZXNJbmRleCA9IHNjYWxlcy5sZW5ndGggLSAxOwotICAgICAg
ICBsZXQgY3VycmVudERvdEluZGV4ID0gMDsKLSAgICAgICAgZm9yIChsZXQgaSA9IGN1cnJlbnRE
b3RJbmRleDsgaSA8PSBzdGFydFNjYWxlc0luZGV4ICYmIGN1cnJlbnREb3RJbmRleCA8IGRvdHMu
bGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgIGNvbnN0IGNvbXBSZXN1bHQgPSBjb21wKHNjYWxl
c1tzdGFydFNjYWxlc0luZGV4XSwgZ2V0U2NhbGUoZG90c1tjdXJyZW50RG90SW5kZXhdKSk7Ci0g
ICAgICAgICAgICBpZiAoIXJldmVyc2VkKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGNvbXBSZXN1
bHQgPiAwKQotICAgICAgICAgICAgICAgICAgICBjdXJyZW50RG90SW5kZXggKys7Ci0gICAgICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYgKGNvbXBSZXN1bHQgPCAwKQotICAgICAgICAgICAg
ICAgICAgICBjdXJyZW50RG90SW5kZXggKys7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAg
IC8vIFVzZSB0aGlzIHRvIGRlY3JlYXNlIGNvbGlzaW9uIHNlYXJjaCBzY29wZQotICAgICAgICBp
bkNhY2hlRG90cyA9IFtdOwotICAgICAgICBmb3IgKGxldCBpID0gc3RhcnRTY2FsZXNJbmRleDsg
aSA8PSBlbmRTY2FsZXNJbmRleDsgaSsrKSB7Ci0gICAgICAgICAgICBsZXQgeCA9IGkgKiBkb3RX
aWR0aCAtIHNjcm9sbExlZnQ7Ci0gICAgICAgICAgICBpZiAoY3VycmVudERvdEluZGV4IDwgZG90
cy5sZW5ndGggJiYgY29tcChzY2FsZXNbaV0sIGdldFNjYWxlKGRvdHNbY3VycmVudERvdEluZGV4
XSkpID09PSAwKSB7Ci0gICAgICAgICAgICAgICAgcmVuZGVyKGRvdHNbY3VycmVudERvdEluZGV4
XSwgY29udGV4dCwgeCwgMCk7Ci0gICAgICAgICAgICAgICAgZG90c1tjdXJyZW50RG90SW5kZXhd
Ll9kb3RDZW50ZXIgPSB7eDogeCArIGRvdE1hcmdpbiArIHJhZGl1cywgeTogcmFkaXVzfTsKLSAg
ICAgICAgICAgICAgICBkb3RzW2N1cnJlbnREb3RJbmRleF0uX2NhY2hlZFNjcm9sbExlZnQgPSBz
Y3JvbGxMZWZ0OwotICAgICAgICAgICAgICAgIGluQ2FjaGVEb3RzLnB1c2goZG90c1tjdXJyZW50
RG90SW5kZXhdKTsKLSAgICAgICAgICAgICAgICBjdXJyZW50RG90SW5kZXggKz0gMTsKLSAgICAg
ICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHJlbmRlcihudWxsLCBjb250ZXh0LCB4LCAw
KTsKLSAgICAgICAgfQotICAgICAgICBjb2xvckJhdGNoUmVuZGVyLmJhdGNoUmVuZGVyKGNvbnRl
eHQpOwotICAgIH07Ci0KLSAgICByZXR1cm4gTGlzdFByb3ZpZGVyUmVjZWl2ZXIoKHVwZGF0ZUNv
bnRhaW5lcldpZHRoLCBvbkNvbnRhaW5lclNjcm9sbCwgb25SZXNpemUpID0+IHsKLSAgICAgICAg
Y29uc3QgbW91c2VNb3ZlID0gKGUpID0+IHsKLSAgICAgICAgICAgIGxldCBkb3RzID0gZ2V0TW91
c2VFdmVudFRpcmdnZXJEb3RzKGUsIGNhbnZhc1JlZi5zdGF0ZS5zY3JvbGxMZWZ0LCBjYW52YXNS
ZWYuZWxlbWVudCk7Ci0gICAgICAgICAgICBpZiAoZG90cy5sZW5ndGgpIHsKLSAgICAgICAgICAg
ICAgICBpZiAob25Eb3RFbnRlcikgewotICAgICAgICAgICAgICAgICAgICBkb3RzWzBdLnRpcFBv
aW50cyA9IFsKLSAgICAgICAgICAgICAgICAgICAgICAgIHt4OiBkb3RzWzBdLl9kb3RDZW50ZXIu
eCwgeTogZG90c1swXS5fZG90Q2VudGVyLnkgLSAzICogcmFkaXVzIC8gMn0sCi0gICAgICAgICAg
ICAgICAgICAgICAgICB7eDogZG90c1swXS5fZG90Q2VudGVyLngsIHk6IGRvdHNbMF0uX2RvdENl
bnRlci55ICsgcmFkaXVzIC8gMn0sCi0gICAgICAgICAgICAgICAgICAgIF07Ci0gICAgICAgICAg
ICAgICAgICAgIG9uRG90RW50ZXIoZG90c1swXSwgZSwgY2FudmFzUmVmLmVsZW1lbnQuZ2V0Qm91
bmRpbmdDbGllbnRSZWN0KCkpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBj
YW52YXNSZWYuZWxlbWVudC5zdHlsZS5jdXJzb3IgPSAicG9pbnRlciI7Ci0gICAgICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgICAgIGlmIChvbkRvdExlYXZlKQotICAgICAgICAgICAgICAg
ICAgICBvbkRvdExlYXZlKGUsIGNhbnZhc1JlZi5lbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVj
dCgpKTsKLSAgICAgICAgICAgICAgICBjYW52YXNSZWYuZWxlbWVudC5zdHlsZS5jdXJzb3IgPSAi
ZGVmYXVsdCI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgY29uc3Qgb25TY3Jv
bGxBY3Rpb24gPSAoZSkgPT4gewotICAgICAgICAgICAgY2FudmFzUmVmLnNldFN0YXRlKHtzY3Jv
bGxMZWZ0OiBlLnRhcmdldC5zY3JvbGxMZWZ0IC8gZ2V0RGV2aWNlUGl4ZWxSYXRpbygpfSk7Ci0g
ICAgICAgICAgICBtb3VzZU1vdmUoZSk7Ci0gICAgICAgIH07Ci0gICAgICAgIGNvbnN0IG9uUmVz
aXplQWN0aW9uID0gKHdpZHRoKSA9PiB7Ci0gICAgICAgICAgICBjYW52YXNSZWYuc2V0U3RhdGUo
e3dpZHRoOiB3aWR0aH0pOwotICAgICAgICB9OwotCi0gICAgICAgIGNvbnN0IGNhbnZhc1JlZiA9
IFJFRi5jcmVhdGVSZWYoewotICAgICAgICAgICAgc3RhdGU6IHsKLSAgICAgICAgICAgICAgICBk
b3RzOiBpbml0RG90cywKLSAgICAgICAgICAgICAgICBzY2FsZXM6IGluaXRTY2FsZXMsCi0gICAg
ICAgICAgICAgICAgc2Nyb2xsTGVmdDogMCwKLSAgICAgICAgICAgICAgICB3aWR0aDogMCwKLSAg
ICAgICAgICAgICAgICBvblNjcmVlbjogZmFsc2UsCi0gICAgICAgICAgICB9LAotICAgICAgICAg
ICAgb25FbGVtZW50TW91bnQ6IChlbGVtZW50KSA9PiB7Ci0gICAgICAgICAgICAgICAgc2V0dXBD
YW52YXNIZWlnaHRXaXRoRHByKGVsZW1lbnQsIGhlaWdodCk7Ci0gICAgICAgICAgICAgICAgc2V0
dXBDYW52YXNDb250ZXh0U2NhbGUoZWxlbWVudCk7Ci0gICAgICAgICAgICAgICAgaWYgKG9uRG90
Q2xpY2spIHsKLSAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdj
bGljaycsIChlKSA9PiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsZXQgZG90cyA9IGdldE1v
dXNlRXZlbnRUaXJnZ2VyRG90cyhlLCBjYW52YXNSZWYuc3RhdGUuc2Nyb2xsTGVmdCwgZWxlbWVu
dCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZG90cy5sZW5ndGgpCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgb25Eb3RDbGljayhkb3RzWzBdLCBlKTsKLSAgICAgICAgICAgICAg
ICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgaWYgKG9uRG90
Q2xpY2sgfHwgb25Eb3RFbnRlciB8fCBvbkRvdExlYXZlKQotICAgICAgICAgICAgICAgICAgICBl
bGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIG1vdXNlTW92ZSk7Ci0gICAgICAg
ICAgICAgICAgaWYgKG9uRG90TGVhdmUpCi0gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuYWRk
RXZlbnRMaXN0ZW5lcignbW91c2VsZWF2ZScsIChlKSA9PiBvbkRvdExlYXZlKGUsIGVsZW1lbnQu
Z2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpKTsKLQotICAgICAgICAgICAgICAgIGNyZWF0ZUluc2Vy
dGlvbk9ic2VydmVycyhlbGVtZW50LCAoZW50cmllcykgPT4gewotICAgICAgICAgICAgICAgICAg
ICBjYW52YXNSZWYuc2V0U3RhdGUoe29uU2NyZWVuOiBlbnRyaWVzWzBdLmlzSW50ZXJzZWN0aW5n
fSk7Ci0gICAgICAgICAgICAgICAgfSwgMCwgMC4wMSwgMC4wMSk7Ci0gICAgICAgICAgICB9LAot
ICAgICAgICAgICAgb25FbGVtZW50VW5tb3VudDogKGVsZW1lbnQpID0+IHsKLSAgICAgICAgICAg
ICAgICBvbkNvbnRhaW5lclNjcm9sbC5zdG9wQWN0aW9uKG9uU2Nyb2xsQWN0aW9uKTsKLSAgICAg
ICAgICAgICAgICBvblJlc2l6ZS5zdG9wQWN0aW9uKG9uUmVzaXplQWN0aW9uKTsKLSAgICAgICAg
ICAgICAgICAvLyBDbGVhbiB0aGUgY2FudmFzLCBmcmVlIGl0cyBtZW1vcnkKLSAgICAgICAgICAg
ICAgICBlbGVtZW50LndpZHRoID0gMDsKLSAgICAgICAgICAgICAgICBlbGVtZW50LmhlaWdodCA9
IDA7Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAgb25TdGF0ZVVwZGF0ZTogKGVsZW1lbnQs
IHN0YXRlRGlmZiwgc3RhdGUpID0+IHsKLSAgICAgICAgICAgICAgICBpZiAoIXN0YXRlLm9uU2Ny
ZWVuICYmICFzdGF0ZURpZmYub25TY3JlZW4pCi0gICAgICAgICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgICAgICAgICBpZiAoc3RhdGVEaWZmLnNjYWxlcyB8fCBzdGF0ZURpZmYuZG90cyB8
fCB0eXBlb2Ygc3RhdGVEaWZmLnNjcm9sbExlZnQgPT09ICdudW1iZXInIHx8IHR5cGVvZiBzdGF0
ZURpZmYud2lkdGggPT09ICdudW1iZXInIHx8IHN0YXRlRGlmZi5vblNjcmVlbikgewotICAgICAg
ICAgICAgICAgICAgICBpZiAoc3RhdGVEaWZmLnNjYWxlcykKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHN0YXRlRGlmZi5zY2FsZXMgPSBzdGF0ZURpZmYuc2NhbGVzLm1hcCh4ID0+IHgpOwotICAg
ICAgICAgICAgICAgICAgICBpZiAoc3RhdGVEaWZmLmRvdHMpCi0gICAgICAgICAgICAgICAgICAg
ICAgICBzdGF0ZURpZmYuZG90cyA9IHN0YXRlRGlmZi5kb3RzLm1hcCh4ID0+IHgpOwotICAgICAg
ICAgICAgICAgICAgICB4U2Nyb2xsU3RyZWFtUmVuZGVyKHJlZHJhdywgZWxlbWVudCwgc3RhdGVE
aWZmLCBzdGF0ZSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9
KTsKLQotICAgICAgICB1cGRhdGVDb250YWluZXJXaWR0aChzY2FsZXMubGVuZ3RoICogZG90V2lk
dGggKiBnZXREZXZpY2VQaXhlbFJhdGlvKCkpOwotICAgICAgICBjb25zdCB1cGRhdGVEYXRhID0g
KGRvdHMsIHNjYWxlcykgPT4gewotICAgICAgICAgICAgdXBkYXRlQ29udGFpbmVyV2lkdGgoc2Nh
bGVzLmxlbmd0aCAqIGRvdFdpZHRoICogZ2V0RGV2aWNlUGl4ZWxSYXRpbygpKTsKLSAgICAgICAg
ICAgIGNhbnZhc1JlZi5zZXRTdGF0ZSh7Ci0gICAgICAgICAgICAgICAgZG90czogZG90cywKLSAg
ICAgICAgICAgICAgICBzY2FsZXM6IHNjYWxlcywKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9
OwotICAgICAgICBpZiAodHlwZW9mIG9wdGlvbi5leHBvcnRlciA9PT0gImZ1bmN0aW9uIikKLSAg
ICAgICAgICAgIG9wdGlvbi5leHBvcnRlcih1cGRhdGVEYXRhKTsKLSAgICAgICAgb25Db250YWlu
ZXJTY3JvbGwuYWN0aW9uKG9uU2Nyb2xsQWN0aW9uKTsKLSAgICAgICAgb25SZXNpemUuYWN0aW9u
KG9uUmVzaXplQWN0aW9uKTsKLSAgICAgICAgcmV0dXJuIGA8ZGl2IGNsYXNzPSJzZXJpZXMiPgot
ICAgICAgICAgICAgPGNhbnZhcyByZWY9IiR7Y2FudmFzUmVmfSIgd2lkdGg9IjAiIGhlaWdodD0i
MCI+Ci0gICAgICAgIDwvZGl2PmA7Ci0gICAgfSk7Ci19Ci0KLVRpbWVsaW5lLkV4cGFuZGFibGVT
ZXJpZXNDb21wb25lbnQgPSAobWFpblNlcmllcywgb3B0aW9ucywgc3ViU2VyaWVzZXMsIGV4cG9y
dGVyKSA9PiB7Ci0gICAgbGV0IGxheW91dFNpemVNYXlDaGFuZ2VFdmVudCA9IG51bGw7Ci0gICAg
Y29uc3QgcmVmID0gUkVGLmNyZWF0ZVJlZih7Ci0gICAgICAgIHN0YXRlOiB7ZXhwYW5kZWQ6IG9w
dGlvbnMuZXhwYW5kZWQgPyBvcHRpb25zLmV4cGFuZGVkIDogZmFsc2V9LAotICAgICAgICBvblN0
YXRlVXBkYXRlOiAoZWxlbWVudCwgc3RhdGVEaWZmKSA9PiB7Ci0gICAgICAgICAgICBpZiAoc3Rh
dGVEaWZmLmV4cGFuZGVkID09PSBmYWxzZSkgewotICAgICAgICAgICAgICAgIGVsZW1lbnQuY2hp
bGRyZW5bMF0uc3R5bGUuZGlzcGxheSA9ICdub25lJzsKLSAgICAgICAgICAgICAgICBlbGVtZW50
LmNoaWxkcmVuWzFdLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snOwotICAgICAgICAgICAgICAgIGVs
ZW1lbnQuY2hpbGRyZW5bMl0uc3R5bGUuZGlzcGxheSA9ICdub25lJzsKLSAgICAgICAgICAgIH0g
ZWxzZSBpZiAoc3RhdGVEaWZmLmV4cGFuZGVkID09PSB0cnVlKSB7Ci0gICAgICAgICAgICAgICAg
ZWxlbWVudC5jaGlsZHJlblswXS5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzsKLSAgICAgICAgICAg
ICAgICBlbGVtZW50LmNoaWxkcmVuWzFdLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7Ci0gICAgICAg
ICAgICAgICAgZWxlbWVudC5jaGlsZHJlblsyXS5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIC8vIE5vdGlmeSBpbnNpZGUgb2YgdGhlIHByb3ZpZGVy
IHRoYXQgd2UgbWF5IGNoYW5nZWQgdGhlIGxheW91dCBzaXplIGJlY2F1c2Ugb2YgZXhwYW5kZWQg
LyB1bmV4cGFuZGVkLgotICAgICAgICAgICAgbGF5b3V0U2l6ZU1heUNoYW5nZUV2ZW50LmFkZCgp
OwotICAgICAgICB9Ci0gICAgfSk7Ci0gICAgaWYgKGV4cG9ydGVyKQotICAgICAgICBleHBvcnRl
cigoZXhwYW5kZWQpID0+IHJlZi5zZXRTdGF0ZSh7ZXhwYW5kZWQ6IGV4cGFuZGVkfSkpOwotICAg
IHJldHVybiBMaXN0UHJvdmlkZXJSZWNlaXZlcigodXBkYXRlQ29udGFpbmVyV2lkdGgsIG9uQ29u
dGFpbmVyU2Nyb2xsLCBvblJlc2l6ZSwgbGF5b3V0U2l6ZU1heUNoYW5nZSkgPT4gewotICAgICAg
ICBsYXlvdXRTaXplTWF5Q2hhbmdlRXZlbnQgPSBsYXlvdXRTaXplTWF5Q2hhbmdlOwotICAgICAg
ICByZXR1cm4gYDxkaXYgY2xhc3M9Imdyb3VwU2VyaWVzIiByZWY9IiR7cmVmfSI+Ci0gICAgICAg
ICAgICA8ZGl2IGNsYXNzPSJzZXJpZXMiIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij48L2Rpdj4KLSAg
ICAgICAgICAgIDxkaXY+JHttYWluU2VyaWVzKHVwZGF0ZUNvbnRhaW5lcldpZHRoLCBvbkNvbnRh
aW5lclNjcm9sbCwgb25SZXNpemUsIGxheW91dFNpemVNYXlDaGFuZ2UpfTwvZGl2PgotICAgICAg
ICAgICAgPGRpdiBzdHlsZT0iZGlzcGxheTpub25lIj4ke3N1YlNlcmllc2VzLm1hcCgoc3ViU2Vy
aWVzKSA9PiBzdWJTZXJpZXModXBkYXRlQ29udGFpbmVyV2lkdGgsIG9uQ29udGFpbmVyU2Nyb2xs
LCBvblJlc2l6ZSwgbGF5b3V0U2l6ZU1heUNoYW5nZSkpLmpvaW4oIiIpfTwvZGl2PgotICAgICAg
ICA8L2Rpdj5gOwotICAgIH0pOwotfQotCi1UaW1lbGluZS5IZWFkZXJDb21wb25lbnQgPSAobGFi
ZWwpID0+IHsKLSAgICByZXR1cm4gYDxkaXYgY2xhc3M9InNlcmllcyI+JHtsYWJlbH08L2Rpdj5g
OwotfQotCi1UaW1lbGluZS5FeHBhbmRhYmxlSGVhZGVyQ29tcG9uZW50ID0gKG1haW5MYWJlbCwg
b3B0aW9ucywgc3ViTGFiZWxzLCBleHBvcnRlcikgPT4gewotICAgIGNvbnN0IHJlZiA9IFJFRi5j
cmVhdGVSZWYoewotICAgICAgICBzdGF0ZToge2V4cGFuZGVkOiBvcHRpb25zLmV4cGFuZGVkID8g
b3B0aW9ucy5leHBhbmRlZCA6IGZhbHNlfSwKLSAgICAgICAgb25TdGF0ZVVwZGF0ZTogKGVsZW1l
bnQsIHN0YXRlRGlmZikgPT4gewotICAgICAgICAgICAgaWYgKHN0YXRlRGlmZi5leHBhbmRlZCA9
PT0gZmFsc2UpCi0gICAgICAgICAgICAgICAgZWxlbWVudC5jaGlsZHJlblsxXS5zdHlsZS5kaXNw
bGF5ID0gIm5vbmUiOwotICAgICAgICAgICAgZWxzZSBpZiAoc3RhdGVEaWZmLmV4cGFuZGVkID09
PSB0cnVlKQotICAgICAgICAgICAgICAgIGVsZW1lbnQuY2hpbGRyZW5bMV0uc3R5bGUuZGlzcGxh
eSA9ICJibG9jayI7Ci0gICAgICAgIH0KLSAgICB9KTsKLSAgICBpZiAoZXhwb3J0ZXIpCi0gICAg
ICAgIGV4cG9ydGVyKChleHBhbmRlZCkgPT4gcmVmLnNldFN0YXRlKHtleHBhbmRlZDogZXhwYW5k
ZWR9KSk7Ci0gICAgcmV0dXJuIGA8ZGl2IHJlZj0iJHtyZWZ9Ij4KLSAgICAgICAgPGRpdiBjbGFz
cz0ic2VyaWVzIj4KLSAgICAgICAgICAgICR7bWFpbkxhYmVsfQotICAgICAgICA8L2Rpdj4KLSAg
ICAgICAgPGRpdiBzdHlsZT0iZGlzcGxheTpub25lIj4KLSAgICAgICAgICAgICR7c3ViTGFiZWxz
Lm1hcChsYWJlbCA9PiBgPGRpdiBjbGFzcz0ic2VyaWVzIj4ke2xhYmVsfTwvZGl2PmApLmpvaW4o
IiIpfQotICAgICAgICA8L2Rpdj4KLSAgICA8L2Rpdj5gOwotfQotCi1UaW1lbGluZS5TZXJpZXNX
aXRoSGVhZGVyQ29tcG9uZW50ID0gKGhlYWRlciwgc2VyaWVzKSA9PiB7Ci0gICAgcmV0dXJuIHto
ZWFkZXIsIHNlcmllc307Ci19Ci0KLVRpbWVsaW5lLkV4cGFuZGFibGVTZXJpZXNXaXRoSGVhZGVy
RXhwYW5kZXJDb21wb25lbnQgPSAobWFpblNlcmllc1dpdGhMYWJsZSwgb3B0aW9ucywgLi4uc3Vi
U2VyaWVzV2l0aExhYmxlKSA9PiB7Ci0gICAgY29uc3QgcmVmID0gUkVGLmNyZWF0ZVJlZih7Ci0g
ICAgICAgIHN0YXRlOiB7ZXhwYW5kZWQ6IG9wdGlvbnMuZXhwYW5kZWQgPyBvcHRpb25zLmV4cGFu
ZGVkIDogZmFsc2V9LAotICAgICAgICBvblN0YXRlVXBkYXRlOiAoZWxlbWVudCwgc3RhdGVEaWZm
KSA9PiB7Ci0gICAgICAgICAgICBpZiAoc3RhdGVEaWZmLmV4cGFuZGVkID09PSBmYWxzZSkKLSAg
ICAgICAgICAgICAgICBlbGVtZW50LmlubmVyVGV4dCA9ICIrIjsKLSAgICAgICAgICAgIGVsc2Ug
aWYgKHN0YXRlRGlmZi5leHBhbmRlZCA9PT0gdHJ1ZSkKLSAgICAgICAgICAgICAgICBlbGVtZW50
LmlubmVyVGV4dCA9ICItIjsKLSAgICAgICAgfQotICAgIH0pOwotICAgIGNvbnN0IG1haW5MYWJl
bCA9IG1haW5TZXJpZXNXaXRoTGFibGUuaGVhZGVyOwotICAgIGNvbnN0IHN1YkxhYmVscyA9IHN1
YlNlcmllc1dpdGhMYWJsZS5tYXAoaXRlbSA9PiBpdGVtLmhlYWRlcik7Ci0gICAgY29uc3QgbWFp
blNlcmllcyA9IG1haW5TZXJpZXNXaXRoTGFibGUuc2VyaWVzOwotICAgIGNvbnN0IHN1YlNlcmll
c2VzID0gc3ViU2VyaWVzV2l0aExhYmxlLm1hcChpdGVtID0+IGl0ZW0uc2VyaWVzKTsKLSAgICBj
b25zdCBleHBhbmRlZEV2ZW50ID0gbmV3IEV2ZW50U3RyZWFtKCk7Ci0gICAgY29uc3QgY2xpY2tF
dmVudCA9IHJlZi5mcm9tRXZlbnQoJ2NsaWNrJykuYWN0aW9uKCgpID0+IHsKLSAgICAgICAgbGV0
IGV4cGFuZGVkID0gcmVmLnN0YXRlLmV4cGFuZGVkOwotICAgICAgICBleHBhbmRlZEV2ZW50LmFk
ZCghZXhwYW5kZWQpOwotICAgICAgICByZWYuc2V0U3RhdGUoe2V4cGFuZGVkOiAhZXhwYW5kZWR9
KTsKLSAgICB9KTsKLSAgICBjb25zdCBjb21wb3NlciA9IEZQLmNvbXBvc2VyKEZQLmN1cnJ5aW5n
KChzZXRIZWFkZXJFeHBhbmQsIHNldFNlcmllc0V4cGFuZCkgPT4gewotICAgICAgICBleHBhbmRl
ZEV2ZW50LmFjdGlvbigoZXhwYW5kZWQpID0+IHsKLSAgICAgICAgICAgIHNldEhlYWRlckV4cGFu
ZChleHBhbmRlZCk7Ci0gICAgICAgICAgICBzZXRTZXJpZXNFeHBhbmQoZXhwYW5kZWQpOwotICAg
ICAgICB9KQotICAgIH0pKTsKLSAgICByZXR1cm4gewotICAgICAgICBoZWFkZXI6IFRpbWVsaW5l
LkV4cGFuZGFibGVIZWFkZXJDb21wb25lbnQoYDxhIGNsYXNzPSJsaW5rLWJ1dHRvbiIgaHJlZj0i
amF2YXNjcmlwdDp2b2lkKDApIiByZWY9IiR7cmVmfSI+KzwvYT5gICsgbWFpbkxhYmVsLCBvcHRp
b25zLCBzdWJMYWJlbHMsIGNvbXBvc2VyKSwKLSAgICAgICAgc2VyaWVzOiBUaW1lbGluZS5FeHBh
bmRhYmxlU2VyaWVzQ29tcG9uZW50KG1haW5TZXJpZXMsIG9wdGlvbnMsIHN1YlNlcmllc2VzLCBj
b21wb3NlciksCi0gICAgfQotfQotCi1UaW1lbGluZS5DYW52YXNYQXhpc0NvbXBvbmVudCA9IChz
Y2FsZXMsIG9wdGlvbiA9IHt9KSA9PiB7Ci0gICAgLy8gR2V0IGNvbmZpZ3VyYXRpb24KLSAgICBj
b25zdCBnZXRTY2FsZUtleSA9IHR5cGVvZiBvcHRpb24uZ2V0U2NhbGVGdW5jID09PSAiZnVuY3Rp
b24iID8gb3B0aW9uLmdldFNjYWxlRnVuYyA6IChhKSA9PiBhOwotICAgIGNvbnN0IGNvbXAgPSB0
eXBlb2Ygb3B0aW9uLmNvbXBhcmVGdW5jID09PSAiZnVuY3Rpb24iID8gb3B0aW9uLmNvbXBhcmVG
dW5jIDogKGEsIGIpID0+IGIgLSBhOwotICAgIGNvbnN0IG9uU2NhbGVDbGljayA9IHR5cGVvZiBv
cHRpb24ub25TY2FsZUNsaWNrID09PSAiZnVuY3Rpb24iID8gb3B0aW9uLm9uU2NhbGVDbGljayA6
IG51bGw7Ci0gICAgY29uc3Qgb25TY2FsZUVudGVyID0gdHlwZW9mIG9wdGlvbi5vblNjYWxlRW50
ZXIgPT09ICJmdW5jdGlvbiIgPyBvcHRpb24ub25TY2FsZUVudGVyIDogbnVsbDsKLSAgICBjb25z
dCBvblNjYWxlTGVhdmUgPSB0eXBlb2Ygb3B0aW9uLm9uU2NhbGVMZWF2ZSA9PT0gImZ1bmN0aW9u
IiA/IG9wdGlvbi5vblNjYWxlTGVhdmUgOiBudWxsOwotICAgIGNvbnN0IHNvcnREYXRhID0gb3B0
aW9uLnNvcnREYXRhID09PSB0cnVlID8gb3B0aW9uLnNvcnREYXRhIDogZmFsc2U7Ci0gICAgY29u
c3QgZ2V0TGFiZWwgPSB0eXBlb2Ygb3B0aW9uLmdldExhYmVsRnVuYyA9PT0gImZ1bmN0aW9uIiA/
IG9wdGlvbi5nZXRMYWJlbEZ1bmMgOiAoYSkgPT4gYCR7YX1gOwotICAgIGNvbnN0IGlzVG9wID0g
dHlwZW9mIG9wdGlvbi5pc1RvcCA9PT0gImJvb2xlYW4iID8gb3B0aW9uLmlzVG9wIDogZmFsc2U7
Ci0KLSAgICAvLyBHZXQgdGhlIGNzcyB2YWx1ZSwgdGhpcyBjb21wb25lbnQgYXNzdW1lIHRvIHVz
ZSB3aXRoIHdlYmtpdC5jc3MKLSAgICBjb25zdCBjb21wdXRlZFN0eWxlID0gZ2V0Q29tcHV0ZWRT
dHlsZShkb2N1bWVudC5ib2R5KTsKLSAgICBjb25zdCBmb250RmFtaWx5ID0gY29tcHV0ZWRTdHls
ZS5nZXRQcm9wZXJ0eVZhbHVlKCdmb250LWZhbWlseScpOwotICAgIGNvbnN0IGZvbnRTaXplID0g
Y29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLXRpbnlTaXplJyk7Ci0gICAgY29uc3Qg
Zm9udFNpemVOdW1iZXIgPSBwYXJzZUludChmb250U2l6ZSk7Ci0gICAgY29uc3QgZm9udENvbG9y
ID0gb25TY2FsZUNsaWNrID8gY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWxpbmtD
b2xvcicpIDogY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCdjb2xvcicpOwotICAgIGNv
bnN0IGZvbnRSb3RhdGUgPSA2MCAqIE1hdGguUEkgLyAxODA7Ci0gICAgY29uc3QgZm9udFRvcFJv
dGF0ZSA9IDMwMCAqIE1hdGguUEkgLyAxODA7Ci0gICAgY29uc3QgbGlua0NvbG9yID0gY29tcHV0
ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWxpbmtDb2xvcicpOwotICAgIGNvbnN0IHNjYWxl
V2lkdGggPSBwYXJzZUludChjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tc21hbGxT
aXplJykpICsgcGFyc2VJbnQoY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLXRpbnlT
aXplJykpOwotICAgIGNvbnN0IHNjYWxlVGFnTGluZUhlaWdodCA9IHBhcnNlSW50KGNvbXB1dGVk
U3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1zbWFsbFNpemUnKSk7Ci0gICAgY29uc3Qgc2NhbGVU
YWdMaW5lUGFkZGluZyA9IDEwOwotICAgIGNvbnN0IHNjYWxlR3JvdXBUYWdMaW5lUGFkZGluZyA9
IDM7Ci0gICAgY29uc3Qgc2NhbGVHcm91cE1hcmdpbiA9IGZvbnRTaXplTnVtYmVyIC8gMjsKLSAg
ICBjb25zdCBzY2FsZUJyb2FkTGluZUhlaWdodCA9IHBhcnNlSW50KGNvbXB1dGVkU3R5bGUuZ2V0
UHJvcGVydHlWYWx1ZSgnLS10aW55U2l6ZScpKSAvIDI7Ci0gICAgY29uc3QgbWF4aW51bVRleHRI
ZWlnaHQgPSBzY2FsZVdpZHRoICogNC41OwotICAgIGNvbnN0IGNhbnZhc0hlaWdodCA9IHR5cGVv
ZiBvcHRpb24uaGVpZ2h0ID09PSAibnVtYmVyIiA/IG9wdGlvbi5oZWlnaHQgOiBwYXJzZUludChj
b21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tc21hbGxTaXplJykpICogNTsKLSAgICBj
b25zdCBzcXJ0MyA9IE1hdGguc3FydCgzKTsKLSAgICBjb25zdCBjb2xvckJhdGNoUmVuZGVyID0g
bmV3IENvbG9yQmF0Y2hSZW5kZXIoKTsKLQotICAgIGNvbnN0IGRyYXdTY2FsZSA9IChzY2FsZUxh
YmVsLCBncm91cCwgY29udGV4dCwgeCwgeSwgaXNIb3ZlcmFibGUsIGxpbmVDb2xvciwgZ3JvdXBD
b2xvcikgPT4gewotICAgICAgICBjb25zdCBjb21wdXRlZFN0eWxlID0gZ2V0Q29tcHV0ZWRTdHls
ZShkb2N1bWVudC5ib2R5KTsKLSAgICAgICAgY29uc3QgdXNlZExpbmVDb2xvciA9IGxpbmVDb2xv
ciA/IGxpbmVDb2xvciA6IGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1ib3JkZXJD
b2xvcklubGluZUVsZW1lbnQnKTsKLSAgICAgICAgY29uc3QgdXNlZEdyb3VwQ29sb3IgPSBncm91
cENvbG9yID8gZ3JvdXBDb2xvciA6IGlzRGFya01vZGUoKSA/IGNvbXB1dGVkU3R5bGUuZ2V0UHJv
cGVydHlWYWx1ZSgnLS13aGl0ZScpIDogY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCct
LWJsYWNrJyk7Ci0gICAgICAgIGNvbnN0IHRvdGFsV2lkdGggPSBncm91cCAqIHNjYWxlV2lkdGg7
Ci0gICAgICAgIGNvbnN0IGJhc2VMaW5lWSA9IGlzVG9wID8geSArIGNhbnZhc0hlaWdodCAtIHNj
YWxlQnJvYWRMaW5lSGVpZ2h0IDogeSArIHNjYWxlQnJvYWRMaW5lSGVpZ2h0OwotICAgICAgICBj
b25zdCBtaWRkbGVQb2ludFggPSB4ICsgdG90YWxXaWR0aCAvIDI7Ci0gICAgICAgIGlmIChncm91
cCA+IDEpIHsKLSAgICAgICAgICAgIGNvbnN0IGdyb3VwQmFzZWxpbmVZID0gaXNUb3AgPyBiYXNl
TGluZVkgLSBzY2FsZUJyb2FkTGluZUhlaWdodCA6IGJhc2VMaW5lWSArIHNjYWxlQnJvYWRMaW5l
SGVpZ2h0OwotICAgICAgICAgICAgY29sb3JCYXRjaFJlbmRlci5sYXp5Q3JlYXRlQ29sb3JTZXFz
KHVzZWRHcm91cENvbG9yLCAoY29udGV4dCkgPT4gewotICAgICAgICAgICAgICAgIGNvbnRleHQu
YmVnaW5QYXRoKCk7Ci0gICAgICAgICAgICB9LCAoY29udGV4dCwgY29sb3IpID0+IHsKLSAgICAg
ICAgICAgICAgICBjb250ZXh0LmxpbmVXaWR0aCA9IDE7Ci0gICAgICAgICAgICAgICAgY29udGV4
dC5zdHJva2VTdHlsZSA9IGNvbG9yOwotICAgICAgICAgICAgICAgIGNvbnRleHQuc3Ryb2tlKCk7
Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIGNvbG9yQmF0Y2hSZW5kZXIuYWRkU2VxKHVz
ZWRHcm91cENvbG9yLCAoY29udGV4dCkgPT4gewotICAgICAgICAgICAgICAgIGNvbnRleHQubW92
ZVRvKHggKyBzY2FsZUdyb3VwTWFyZ2luLCBncm91cEJhc2VsaW5lWSk7Ci0gICAgICAgICAgICAg
ICAgY29udGV4dC5saW5lVG8oeCArIHNjYWxlR3JvdXBNYXJnaW4sIGJhc2VMaW5lWSk7Ci0gICAg
ICAgICAgICAgICAgY29udGV4dC5tb3ZlVG8oeCArIHNjYWxlR3JvdXBNYXJnaW4sIGdyb3VwQmFz
ZWxpbmVZKTsKLSAgICAgICAgICAgICAgICBjb250ZXh0LmxpbmVUbyh4ICsgdG90YWxXaWR0aCAt
IHNjYWxlR3JvdXBNYXJnaW4sIGdyb3VwQmFzZWxpbmVZKTsKLSAgICAgICAgICAgICAgICBjb250
ZXh0Lm1vdmVUbyh4ICsgdG90YWxXaWR0aCAtIHNjYWxlR3JvdXBNYXJnaW4sIGdyb3VwQmFzZWxp
bmVZKTsKLSAgICAgICAgICAgICAgICBjb250ZXh0LmxpbmVUbyh4ICsgdG90YWxXaWR0aCAtIHNj
YWxlR3JvdXBNYXJnaW4sIGJhc2VMaW5lWSk7Ci0gICAgICAgICAgICAgICAgY29udGV4dC5tb3Zl
VG8obWlkZGxlUG9pbnRYLCBncm91cEJhc2VsaW5lWSk7Ci0gICAgICAgICAgICAgICAgaWYgKCFp
c1RvcCkKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC5saW5lVG8obWlkZGxlUG9pbnRYLCBn
cm91cEJhc2VsaW5lWSArIHNjYWxlVGFnTGluZUhlaWdodCAtIHNjYWxlVGFnTGluZVBhZGRpbmcg
LSBzY2FsZUdyb3VwVGFnTGluZVBhZGRpbmcpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICAgICAgY29udGV4dC5saW5lVG8obWlkZGxlUG9pbnRYLCBncm91cEJhc2VsaW5l
WSAtIHNjYWxlVGFnTGluZUhlaWdodCArIHNjYWxlVGFnTGluZVBhZGRpbmcgKyBzY2FsZUdyb3Vw
VGFnTGluZVBhZGRpbmcpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICBjb2xvckJhdGNoUmVuZGVyLmxhenlDcmVhdGVDb2xvclNlcXModXNlZEdyb3VwQ29s
b3IsIChjb250ZXh0KSA9PiB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC5iZWdpblBhdGgoKTsK
LSAgICAgICAgICAgIH0sIChjb250ZXh0LCBjb2xvcikgPT4gewotICAgICAgICAgICAgICAgIGNv
bnRleHQubGluZVdpZHRoID0gMTsKLSAgICAgICAgICAgICAgICBjb250ZXh0LnN0cm9rZVN0eWxl
ID0gY29sb3I7Ci0gICAgICAgICAgICAgICAgY29udGV4dC5zdHJva2UoKTsKLSAgICAgICAgICAg
IH0pOwotICAgICAgICAgICAgY29sb3JCYXRjaFJlbmRlci5hZGRTZXEodXNlZEdyb3VwQ29sb3Is
IChjb250ZXh0KSA9PiB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC5tb3ZlVG8obWlkZGxlUG9p
bnRYLCBiYXNlTGluZVkpOwotICAgICAgICAgICAgICAgIGlmICghaXNUb3ApCi0gICAgICAgICAg
ICAgICAgICAgIGNvbnRleHQubGluZVRvKG1pZGRsZVBvaW50WCwgYmFzZUxpbmVZICsgc2NhbGVU
YWdMaW5lSGVpZ2h0IC0gc2NhbGVUYWdMaW5lUGFkZGluZyk7Ci0gICAgICAgICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmxpbmVUbyhtaWRkbGVQb2ludFgsIGJhc2VM
aW5lWSAtIHNjYWxlVGFnTGluZUhlaWdodCArIHNjYWxlVGFnTGluZVBhZGRpbmcpOwotICAgICAg
ICAgICAgfSk7Ci0gICAgICAgIH0KLSAgICAgICAgLy8gRHJhdyBUYWcKLSAgICAgICAgY29udGV4
dC5mb250ID0gYCR7Zm9udFNpemV9ICR7Zm9udEZhbWlseX1gOwotICAgICAgICBjb250ZXh0LmZp
bGxTdHlsZSA9IGZvbnRDb2xvcjsKLSAgICAgICAgY29udGV4dC5zYXZlKCk7Ci0gICAgICAgIGlm
ICghaXNUb3ApIHsKLSAgICAgICAgICAgIGNvbnRleHQudHJhbnNsYXRlKG1pZGRsZVBvaW50WCwg
YmFzZUxpbmVZICsgc2NhbGVUYWdMaW5lSGVpZ2h0KTsKLSAgICAgICAgICAgIGNvbnRleHQucm90
YXRlKGZvbnRSb3RhdGUpOwotICAgICAgICAgICAgY29udGV4dC50cmFuc2xhdGUoMCAtIG1pZGRs
ZVBvaW50WCwgMCAtIGJhc2VMaW5lWSAtIHNjYWxlVGFnTGluZUhlaWdodCk7Ci0gICAgICAgICAg
ICBjb250ZXh0LmZpbGxUZXh0KGdldExhYmVsKHNjYWxlTGFiZWwpLCBtaWRkbGVQb2ludFgsIGJh
c2VMaW5lWSArIHNjYWxlVGFnTGluZUhlaWdodCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICBjb250ZXh0LnRyYW5zbGF0ZShtaWRkbGVQb2ludFgsIGJhc2VMaW5lWSAtIHNjYWxlVGFn
TGluZUhlaWdodCk7Ci0gICAgICAgICAgICBjb250ZXh0LnJvdGF0ZShmb250VG9wUm90YXRlKTsK
LSAgICAgICAgICAgIGNvbnRleHQudHJhbnNsYXRlKDAgLSBtaWRkbGVQb2ludFgsIDAgLSBiYXNl
TGluZVkgKyBzY2FsZVRhZ0xpbmVIZWlnaHQpOwotICAgICAgICAgICAgY29udGV4dC5maWxsVGV4
dChnZXRMYWJlbChzY2FsZUxhYmVsKSwgbWlkZGxlUG9pbnRYLCBiYXNlTGluZVkgLSBzY2FsZVRh
Z0xpbmVIZWlnaHQpOwotICAgICAgICB9Ci0gICAgICAgIGNvbnRleHQucmVzdG9yZSgpOwotICAg
IH07Ci0gICAgY29uc3QgcmVuZGVyID0gdHlwZW9mIG9wdGlvbi5yZW5kZXJGYWN0b3J5ID09PSAi
ZnVuY3Rpb24iID8gb3B0aW9uLnJlbmRlckZhY3RvcnkoZHJhd1NjYWxlKSA6IChzY2FsZUxhYmVs
LCBzY2FsZUdyb3VwLCBjb250ZXh0LCB4LCB5KSA9PiBkcmF3U2NhbGUoc2NhbGVMYWJlbCwgc2Nh
bGVHcm91cCwgY29udGV4dCwgeCwgeSk7Ci0KLSAgICBjb25zdCBwYWRkaW5nID0gMTAwICogc2Nh
bGVXaWR0aCAvIGdldERldmljZVBpeGVsUmF0aW8oKTsKLSAgICBjb25zdCB4U2Nyb2xsU3RyZWFt
UmVuZGVyID0geFNjcm9sbFN0cmVhbVJlbmRlckZhY3RvcnkoY2FudmFzSGVpZ2h0KTsKLSAgICBs
ZXQgb25TY3JlZW5TY2FsZXMgPSBbXTsKLQotICAgIGNvbnN0IGdldE1vdXNlRXZlbnRUaXJnZ2Vy
U2NhbGVzID0gKGUsIHNjcm9sbExlZnQsIGVsZW1lbnQpID0+IHsKLSAgICAgICAgY29uc3Qge3gs
IHl9ID0gZ2V0TW91c2VQb3NJbkNhbnZhcyhlLCBlbGVtZW50KTsKLSAgICAgICAgcmV0dXJuIG9u
U2NyZWVuU2NhbGVzLmZpbHRlcihzY2FsZSA9PiB7Ci0gICAgICAgICAgICBjb25zdCBsYWJlbExl
bmd0aCA9IGdldExhYmVsKHNjYWxlLmxhYmVsKS5sZW5ndGg7Ci0gICAgICAgICAgICBjb25zdCB3
aWR0aCA9IGxhYmVsTGVuZ3RoICogZm9udFNpemVOdW1iZXIgLyAyOwotICAgICAgICAgICAgY29u
c3QgaGVpZ2h0ID0gbGFiZWxMZW5ndGggKiBmb250U2l6ZU51bWJlciAvIDIgKiBzcXJ0MzsKLSAg
ICAgICAgICAgIGNvbnN0IHBvaW50MSA9IHsKLSAgICAgICAgICAgICAgICB4OiBzY2FsZS5fdGFn
VG9wLnggLSBzY3JvbGxMZWZ0IC0gKGlzVG9wID8gZm9udFNpemVOdW1iZXIgLyAyICogc3FydDMg
OiAwKSwKLSAgICAgICAgICAgICAgICB5OiBzY2FsZS5fdGFnVG9wLnkgKyAoZm9udFNpemVOdW1i
ZXIgLyAyICsgc2NhbGVUYWdMaW5lSGVpZ2h0KSAqIChpc1RvcCA/IC0xIDogMSksCi0gICAgICAg
ICAgICB9OwotICAgICAgICAgICAgY29uc3QgcG9pbnQyID0gewotICAgICAgICAgICAgICAgIHg6
IHBvaW50MS54ICsgZm9udFNpemVOdW1iZXIgLyAyICogc3FydDMsCi0gICAgICAgICAgICAgICAg
eTogc2NhbGUuX3RhZ1RvcC55ICsgc2NhbGVUYWdMaW5lSGVpZ2h0ICAqIChpc1RvcCA/IC0xIDog
MSkKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICBjb25zdCBwb2ludDMgPSB7Ci0gICAgICAg
ICAgICAgICAgeDogcG9pbnQyLnggKyB3aWR0aCwKLSAgICAgICAgICAgICAgICB5OiBwb2ludDIu
eSArIGhlaWdodCAqIChpc1RvcCA/IC0xIDogMSksCi0gICAgICAgICAgICB9OwotICAgICAgICAg
ICAgY29uc3QgcG9pbnQ0ID0gewotICAgICAgICAgICAgICAgIHg6IHBvaW50MS54ICsgd2lkdGgs
Ci0gICAgICAgICAgICAgICAgeTogcG9pbnQxLnkgKyBoZWlnaHQgKiAoaXNUb3AgPyAtMSA6IDEp
LAotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHJldHVybiBwb2ludFBvbHlnb25Db2xsaXNp
b25EZXRlY3Qoe3gsIHl9LCBbcG9pbnQxLCBwb2ludDIsIHBvaW50MywgcG9pbnQ0XSk7Ci0gICAg
ICAgIH0pOwotICAgIH07Ci0gICAgY29uc3QgcmVkcmF3ID0gKHN0YXJ0WCwgcmVuZGVyV2lkdGgs
IGVsZW1lbnQsIHN0YXRlRGlmZiwgc3RhdGUpID0+IHsKLSAgICAgICAgY29uc3Qgc2Nyb2xsTGVm
dCA9IHR5cGVvZiBzdGF0ZURpZmYuc2Nyb2xsTGVmdCA9PT0gJ251bWJlcicgPyBzdGF0ZURpZmYu
c2Nyb2xsTGVmdCA6IHN0YXRlLnNjcm9sbExlZnQ7Ci0gICAgICAgIGNvbnN0IHNjYWxlcyA9IHN0
YXRlRGlmZi5zY2FsZXMgPyBzdGF0ZURpZmYuc2NhbGVzIDogc3RhdGUuc2NhbGVzOwotICAgICAg
ICBjb25zdCBzY2FsZXNNYXBMaW5rTGlzdCA9IHN0YXRlRGlmZi5zY2FsZXNNYXBMaW5rTGlzdCA/
IHN0YXRlRGlmZi5zY2FsZXNNYXBMaW5rTGlzdCA6IHN0YXRlLnNjYWxlc01hcExpbmtMaXN0Owot
ICAgICAgICBjb25zdCB3aWR0aCA9IHR5cGVvZiBzdGF0ZURpZmYud2lkdGggPT09ICdudW1iZXIn
ID8gc3RhdGVEaWZmLndpZHRoIDogc3RhdGUud2lkdGg7Ci0gICAgICAgIGNvbnN0IHVzZWRMaW5l
Q29sb3IgPSBjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYm9yZGVyQ29sb3JJbmxp
bmVFbGVtZW50Jyk7Ci0gICAgICAgIGNvbnN0IGJhc2VMaW5lWSA9IGlzVG9wID8gY2FudmFzSGVp
Z2h0IC0gc2NhbGVCcm9hZExpbmVIZWlnaHQgOiBzY2FsZUJyb2FkTGluZUhlaWdodDsKLSAgICAg
ICAgY29uc3QgY29udGV4dCA9IGVsZW1lbnQuZ2V0Q29udGV4dCgiMmQiLCB7IGFscGhhOiBmYWxz
ZSB9KTsKLSAgICAgICAgLy8gQ2xlYXIgcGVydmlvdXMgYmF0Y2ggcmVuZGVyCi0gICAgICAgIGNv
bG9yQmF0Y2hSZW5kZXIuY2xlYXIoKTsKLSAgICAgICAgY29sb3JCYXRjaFJlbmRlci5sYXp5Q3Jl
YXRlQ29sb3JTZXFzKHVzZWRMaW5lQ29sb3IsIChjb250ZXh0KSA9PiB7Ci0gICAgICAgICAgICBj
b250ZXh0LmJlZ2luUGF0aCgpOwotICAgICAgICB9LCAoY29udGV4dCwgY29sb3IpID0+IHsKLSAg
ICAgICAgICAgIGNvbnRleHQubGluZVdpZHRoID0gMTsKLSAgICAgICAgICAgIGNvbnRleHQuc3Ry
b2tlU3R5bGUgPSBjb2xvcjsKLSAgICAgICAgICAgIGNvbnRleHQuc3Ryb2tlKCk7Ci0gICAgICAg
IH0pOwotICAgICAgICBjb2xvckJhdGNoUmVuZGVyLmFkZFNlcSh1c2VkTGluZUNvbG9yLCAoY29u
dGV4dCkgPT4gewotICAgICAgICAgICAgY29udGV4dC5tb3ZlVG8oMCwgYmFzZUxpbmVZKTsKLSAg
ICAgICAgICAgIGNvbnRleHQubGluZVRvKGVsZW1lbnQubG9naWNXaWR0aCwgYmFzZUxpbmVZKTsK
LSAgICAgICAgfSk7Ci0gICAgICAgIGlmICghc2NhbGVzIHx8ICFzY2FsZXMubGVuZ3RoKSB7Ci0g
ICAgICAgICAgICBjb2xvckJhdGNoUmVuZGVyLmJhdGNoUmVuZGVyKGNvbnRleHQpOwotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGxldCBjdXJyZW50U3RhcnRTY2FsZUlu
ZGV4ID0gTWF0aC5mbG9vcihzY3JvbGxMZWZ0IC8gc2NhbGVXaWR0aCk7Ci0gICAgICAgIGlmIChj
dXJyZW50U3RhcnRTY2FsZUluZGV4IDwgMCkKLSAgICAgICAgICAgIGN1cnJlbnRTdGFydFNjYWxl
SW5kZXggPSAwOwotICAgICAgICBjb25zdCBjdXJyZW50U3RhcnRTY2FsZUtleSA9IGdldFNjYWxl
S2V5KHNjYWxlc1tjdXJyZW50U3RhcnRTY2FsZUluZGV4XSk7Ci0gICAgICAgIGxldCBjdXJyZW50
RW5kU2NhbGVJbmRleCA9IE1hdGguY2VpbCgoc2Nyb2xsTGVmdCArIHJlbmRlcldpZHRoKSAvIHNj
YWxlV2lkdGgpOwotICAgICAgICBjdXJyZW50RW5kU2NhbGVJbmRleCA9IGN1cnJlbnRFbmRTY2Fs
ZUluZGV4ID49IHNjYWxlcy5sZW5ndGggPyBzY2FsZXMubGVuZ3RoIC0gMSA6IGN1cnJlbnRFbmRT
Y2FsZUluZGV4OwotICAgICAgICBjb25zdCBjdXJyZW50RW5kU2NhbGVLZXkgPSBnZXRTY2FsZUtl
eShzY2FsZXNbY3VycmVudEVuZFNjYWxlSW5kZXhdKTsKLSAgICAgICAgY29uc3QgY3VycmVudFN0
YXJ0Tm9kZSA9IHNjYWxlc01hcExpbmtMaXN0Lm1hcC5nZXQoY3VycmVudFN0YXJ0U2NhbGVLZXkp
OwotICAgICAgICBjb25zdCBjdXJyZW50RW5kTm9kZSA9IHNjYWxlc01hcExpbmtMaXN0Lm1hcC5n
ZXQoY3VycmVudEVuZFNjYWxlS2V5KTsKLSAgICAgICAgaWYgKCFjdXJyZW50RW5kTm9kZSkgewot
ICAgICAgICAgICAgY29uc29sZS5lcnJvcihjdXJyZW50RW5kU2NhbGVLZXkpOwotICAgICAgICB9
Ci0gICAgICAgIGxldCBub3cgPSBjdXJyZW50U3RhcnROb2RlOwotICAgICAgICAKLQotICAgICAg
ICBvblNjcmVlblNjYWxlcyA9IFtdOwotICAgICAgICB3aGlsZSAobm93ICE9IGN1cnJlbnRFbmRO
b2RlLm5leHQpIHsKLSAgICAgICAgICAgIGNvbnN0IGxhYmVsID0gbm93LmxhYmVsOwotICAgICAg
ICAgICAgY29uc3QgZ3JvdXAgPSBub3cuZ3JvdXA7Ci0gICAgICAgICAgICByZW5kZXIobGFiZWws
IGdyb3VwLCBjb250ZXh0LCBub3cueCAtIHNjcm9sbExlZnQsIDApOwotICAgICAgICAgICAgbm93
Ll90YWdUb3AgPSB7eDogbm93LnggKyBncm91cCAqIHNjYWxlV2lkdGggLyAyLCB5OiBpc1RvcCA/
IGNhbnZhc0hlaWdodCAtIHNjYWxlQnJvYWRMaW5lSGVpZ2h0IDogc2NhbGVCcm9hZExpbmVIZWln
aHR9OwotICAgICAgICAgICAgb25TY3JlZW5TY2FsZXMucHVzaChub3cpOwotICAgICAgICAgICAg
bm93ID0gbm93Lm5leHQ7Ci0gICAgICAgIH0KLSAgICAgICAgY29sb3JCYXRjaFJlbmRlci5iYXRj
aFJlbmRlcihjb250ZXh0KTsKLSAgICB9OwotCi0gICAgLy8gSW5pdGlhbGl6ZQotICAgIC8vIERv
IGEgY29weSwgc29ydGluZyB3aWxsIG5vdCBoYXZlIHNpZGUgZWZmZWN0Ci0gICAgY29uc3QgaW5p
dFNjYWxlcyA9IHNjYWxlcy5tYXAoKGl0ZW0pID0+IGl0ZW0pOwotICAgIGlmIChzb3J0RGF0YSkK
LSAgICAgICAgaW5pdFNjYWxlcy5zb3J0KGNvbXApOwotCi0gICAgY29uc3QgZ2V0U2NhbGVzTWFw
TGlua0xpc3QgPSAoc2NhbGVzKSA9PiB7Ci0gICAgICAgIGNvbnN0IHJlcyA9IHsKLSAgICAgICAg
ICAgIG1hcDogbmV3IE1hcCgpLAotICAgICAgICAgICAgbGlua0xpc3RIZWFkOiB7bmV4dDogbnVs
bCwgZ3JvdXA6IG51bGx9Ci0gICAgICAgIH07Ci0gICAgICAgIGxldCBub3cgPSByZXMubGlua0xp
c3RIZWFkOwotICAgICAgICBsZXQgY3VycmVudFggPSAwOwotICAgICAgICBzY2FsZXMuZm9yRWFj
aCgoc2NhbGUpID0+IHsKLSAgICAgICAgICAgIGxldCBrZXkgPSBnZXRTY2FsZUtleShzY2FsZSk7
Ci0gICAgICAgICAgICBpZiAocmVzLm1hcC5oYXMoa2V5KSkKLSAgICAgICAgICAgICAgICByZXMu
bWFwLmdldChrZXkpLmdyb3VwICs9IDE7Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAg
ICAgICBub3cubmV4dCA9IHtuZXh0OiBudWxsLCBncm91cDogMSwgbGFiZWw6IHNjYWxlLCB4OiBj
dXJyZW50WH07Ci0gICAgICAgICAgICAgICAgbm93ID0gbm93Lm5leHQ7Ci0gICAgICAgICAgICAg
ICAgcmVzLm1hcC5zZXQoa2V5LCBub3cpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgY3Vy
cmVudFggKz0gc2NhbGVXaWR0aDsKLSAgICAgICAgfSk7Ci0gICAgICAgIHJldHVybiByZXM7Ci0g
ICAgfTsKLSAgICBjb25zdCBpbml0U2NhbGVHcm91cE1hcExpbmtMaXN0ID0gZ2V0U2NhbGVzTWFw
TGlua0xpc3QoaW5pdFNjYWxlcyk7Ci0KLQotICAgIHJldHVybiB7Ci0gICAgICAgIHNlcmllczog
TGlzdFByb3ZpZGVyUmVjZWl2ZXIoKHVwZGF0ZUNvbnRhaW5lcldpZHRoLCBvbkNvbnRhaW5lclNj
cm9sbCwgb25SZXNpemUpID0+IHsKLSAgICAgICAgICAgIGNvbnN0IG1vdXNlTW92ZSA9IChlKSA9
PiB7Ci0gICAgICAgICAgICAgICAgbGV0IHNjYWxlcyA9IGdldE1vdXNlRXZlbnRUaXJnZ2VyU2Nh
bGVzKGUsIGNhbnZhc1JlZi5zdGF0ZS5zY3JvbGxMZWZ0LCBjYW52YXNSZWYuZWxlbWVudCk7Ci0g
ICAgICAgICAgICAgICAgaWYgKHNjYWxlcy5sZW5ndGgpIHsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKG9uU2NhbGVFbnRlcikgewotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGFiZWxM
ZW5ndGggPSBnZXRMYWJlbChzY2FsZXNbMF0ubGFiZWwpLmxlbmd0aDsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHNjYWxlc1swXS50aXBQb2ludHMgPSBbewotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHg6IHNjYWxlc1swXS5fdGFnVG9wLnggLSBjYW52YXNSZWYuc3RhdGUuc2Nyb2xsTGVm
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB5OiBzY2FsZXNbMF0uX3RhZ1RvcC55ICsg
c2NhbGVUYWdMaW5lSGVpZ2h0ICogKGlzVG9wID8gLTEgOiAwKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgIH0sIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiBzY2FsZXNbMF0uX3Rh
Z1RvcC54IC0gY2FudmFzUmVmLnN0YXRlLnNjcm9sbExlZnQgKyBsYWJlbExlbmd0aCAqIGZvbnRT
aXplTnVtYmVyIC8gMyAtIHNjYWxlVGFnTGluZUhlaWdodCAqIChpc1RvcCA/IDEgOiAuMjUpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHk6IHNjYWxlc1swXS5fdGFnVG9wLnkgKyAobGFi
ZWxMZW5ndGggKiBmb250U2l6ZU51bWJlciAvIDIgKiBzcXJ0MykgKiAoaXNUb3AgPyAtMSA6IDEp
ICsgc2NhbGVUYWdMaW5lSGVpZ2h0ICogKGlzVG9wID8gMSA6IDApLAotICAgICAgICAgICAgICAg
ICAgICAgICAgfV07Ci0gICAgICAgICAgICAgICAgICAgICAgICBvblNjYWxlRW50ZXIoc2NhbGVz
WzBdLCBlLCBjYW52YXNSZWYuZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSk7Ci0gICAg
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgY2FudmFzUmVmLmVsZW1lbnQu
c3R5bGUuY3Vyc29yID0gInBvaW50ZXIiOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmIChvblNjYWxlRW50ZXIpCi0gICAgICAgICAgICAgICAgICAgICAg
ICBvblNjYWxlTGVhdmUoZSwgY2FudmFzUmVmLmVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0
KCkpOwotICAgICAgICAgICAgICAgICAgICBjYW52YXNSZWYuZWxlbWVudC5zdHlsZS5jdXJzb3Ig
PSAiZGVmYXVsdCI7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgY29uc3Qgb25TY3JvbGxBY3Rpb24gPSAoZSkgPT4gewotICAgICAgICAgICAgICAgIGNhbnZh
c1JlZi5zZXRTdGF0ZSh7c2Nyb2xsTGVmdDogZS50YXJnZXQuc2Nyb2xsTGVmdCAvIGdldERldmlj
ZVBpeGVsUmF0aW8oKX0pOwotICAgICAgICAgICAgICAgIG1vdXNlTW92ZShlKTsKLSAgICAgICAg
ICAgIH07Ci0gICAgICAgICAgICBjb25zdCBvblJlc2l6ZUFjdGlvbiA9ICh3aWR0aCkgPT4gewot
ICAgICAgICAgICAgICAgIGNhbnZhc1JlZi5zZXRTdGF0ZSh7d2lkdGg6IHdpZHRofSk7Ci0gICAg
ICAgICAgICB9OwotCi0gICAgICAgICAgICBjb25zdCBjYW52YXNSZWYgPSBSRUYuY3JlYXRlUmVm
KHsKLSAgICAgICAgICAgICAgICBzdGF0ZTogewotICAgICAgICAgICAgICAgICAgICBzY3JvbGxM
ZWZ0OiAwLAotICAgICAgICAgICAgICAgICAgICB3aWR0aDogMCwKLSAgICAgICAgICAgICAgICAg
ICAgc2NhbGVzOiBpbml0U2NhbGVzLAotICAgICAgICAgICAgICAgICAgICBzY2FsZXNNYXBMaW5r
TGlzdDogaW5pdFNjYWxlR3JvdXBNYXBMaW5rTGlzdAotICAgICAgICAgICAgICAgIH0sCi0gICAg
ICAgICAgICAgICAgb25FbGVtZW50TW91bnQ6IChlbGVtZW50KSA9PiB7Ci0gICAgICAgICAgICAg
ICAgICAgIHNldHVwQ2FudmFzSGVpZ2h0V2l0aERwcihlbGVtZW50LCBjYW52YXNIZWlnaHQpOwot
ICAgICAgICAgICAgICAgICAgICBzZXR1cENhbnZhc0NvbnRleHRTY2FsZShlbGVtZW50KTsKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKG9uU2NhbGVDbGljaykgewotICAgICAgICAgICAgICAgICAg
ICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIChlKSA9PiB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbGV0IHNjYWxlcyA9IGdldE1vdXNlRXZlbnRUaXJnZ2VyU2Nh
bGVzKGUsIGNhbnZhc1JlZi5zdGF0ZS5zY3JvbGxMZWZ0LCBlbGVtZW50KTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoc2NhbGVzLmxlbmd0aCkKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgb25TY2FsZUNsaWNrKHNjYWxlc1swXSwgZSk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAg
IGlmIChvblNjYWxlQ2xpY2sgfHwgb25TY2FsZUVudGVyIHx8IG9uU2NhbGVMZWF2ZSkKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywg
bW91c2VNb3ZlKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKG9uU2NhbGVMZWF2ZSkKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VsZWF2ZScs
IChlKSA9PiBvblNjYWxlTGVhdmUoZSwgZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSkp
OwotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgb25FbGVtZW50VW5tb3VudDog
KGVsZW1lbnQpID0+IHsKLSAgICAgICAgICAgICAgICAgICAgb25Db250YWluZXJTY3JvbGwuc3Rv
cEFjdGlvbihvblNjcm9sbEFjdGlvbik7Ci0gICAgICAgICAgICAgICAgICAgIG9uUmVzaXplLnN0
b3BBY3Rpb24ob25SZXNpemVBY3Rpb24pOwotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAg
ICAgICAgb25TdGF0ZVVwZGF0ZTogKGVsZW1lbnQsIHN0YXRlRGlmZiwgc3RhdGUpID0+IHsKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKHN0YXRlRGlmZi5zY2FsZXMgfHwgdHlwZW9mIHN0YXRlRGlm
Zi5zY3JvbGxMZWZ0ID09PSAnbnVtYmVyJyB8fCB0eXBlb2Ygc3RhdGVEaWZmLndpZHRoID09PSAn
bnVtYmVyJykgewotICAgICAgICAgICAgICAgICAgICAgICAgeFNjcm9sbFN0cmVhbVJlbmRlcihy
ZWRyYXcsIGVsZW1lbnQsIHN0YXRlRGlmZiwgc3RhdGUpOwotICAgICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSk7Ci0KLSAgICAgICAgICAgIHVwZGF0
ZUNvbnRhaW5lcldpZHRoKHNjYWxlcy5sZW5ndGggKiBzY2FsZVdpZHRoICogZ2V0RGV2aWNlUGl4
ZWxSYXRpbygpKTsKLSAgICAgICAgICAgIGNvbnN0IHVwZGF0ZURhdGEgPSAoc2NhbGVzKSA9PiB7
Ci0gICAgICAgICAgICAgICAgLy8gSW4gY2FzZSBvZiBtb2RpZmljYXRpb24gd2hpbGUgcmVuZGVy
aW5nCi0gICAgICAgICAgICAgICAgY29uc3Qgc2NhbGVzQ29weSA9IHNjYWxlcy5tYXAoeCA9PiB4
KTsKLSAgICAgICAgICAgICAgICB1cGRhdGVDb250YWluZXJXaWR0aChzY2FsZXNDb3B5Lmxlbmd0
aCAqIHNjYWxlV2lkdGggKiBnZXREZXZpY2VQaXhlbFJhdGlvKCkpOwotICAgICAgICAgICAgICAg
IGNhbnZhc1JlZi5zZXRTdGF0ZSh7Ci0gICAgICAgICAgICAgICAgICAgIHNjYWxlczogc2NhbGVz
Q29weSwKLSAgICAgICAgICAgICAgICAgICAgc2NhbGVzTWFwTGlua0xpc3Q6IGdldFNjYWxlc01h
cExpbmtMaXN0KHNjYWxlc0NvcHkpCi0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICBpZiAodHlwZW9mIG9wdGlvbi5leHBvcnRlciA9PT0gImZ1bmN0aW9uIikK
LSAgICAgICAgICAgICAgICBvcHRpb24uZXhwb3J0ZXIodXBkYXRlRGF0YSk7Ci0gICAgICAgICAg
ICBvbkNvbnRhaW5lclNjcm9sbC5hY3Rpb24ob25TY3JvbGxBY3Rpb24pOwotICAgICAgICAgICAg
b25SZXNpemUuYWN0aW9uKG9uUmVzaXplQWN0aW9uKTsKLSAgICAgICAgICAgIHJldHVybiBgPGRp
diBjbGFzcz0ieC1heGlzIj4KLSAgICAgICAgICAgICAgICA8Y2FudmFzIHJlZj0iJHtjYW52YXNS
ZWZ9Ij4KLSAgICAgICAgICAgIDwvZGl2PmA7Ci0gICAgICAgIH0pLAotICAgICAgICBpc0F4aXM6
IHRydWUsIC8vIE1hcmsgc2VsZiBhcyBhbiBheGlzLAotICAgICAgICBoZWlnaHQ6IGNhbnZhc0hl
aWdodCwgLy8gRXhwb3NlIEhlaWdodCB0byBwYXJlbnQKLSAgICB9OwotfQotCi1UaW1lbGluZS5D
YW52YXNDb250YWluZXIgPSAoZXhwb3J0ZXIsIC4uLmNoaWxkcmVuKSA9PiB7Ci0gICAgbGV0IGhl
YWRlckF4aXNQbGFjZUhvbGRlckhlaWdodCA9IDA7Ci0gICAgbGV0IHRvcEF4aXMgPSB0cnVlOwot
ICAgIGNvbnN0IHVwYWNrQ2hpbGRyZW4gPSAoY2hpbGRyZW4pID0+IHsKLSAgICAgICAgY29uc3Qg
aGVhZGVycyA9IFtdOwotICAgICAgICBjb25zdCBzZXJpZXNlcyA9IFtdOwotICAgICAgICBjaGls
ZHJlbi5mb3JFYWNoKGNoaWxkID0+IHsKLSAgICAgICAgICAgIGlmIChmYWxzZSA9PT0gInNlcmll
cyIgaW4gY2hpbGQpIHsKLSAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCJQbGVhc2UgdXNl
IFRpbWVsaW5lLlNlcmllc1dpdGhIZWFkZXJDb21wb25lbnQgb3IgVGltZWxpbmUuRXhwYW5kYWJs
ZVNlcmllc1dpdGhIZWFkZXJFeHBhbmRlckNvbXBvbmVudCBvciBUaW1lbGluZS5DYW52YXNYQXhp
c0NvbXBvbmVudCBhcyBjaGlsZHJlbiIpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIGlmIChjaGlsZC5oZWFkZXIpCi0gICAgICAgICAgICAgICAg
aGVhZGVycy5wdXNoKGNoaWxkLmhlYWRlcik7Ci0gICAgICAgICAgICBzZXJpZXNlcy5wdXNoKGNo
aWxkLnNlcmllcyk7Ci0gICAgICAgICAgICBpZiAoY2hpbGQuaXNBeGlzICYmIHRvcEF4aXMpCi0g
ICAgICAgICAgICAgICAgaGVhZGVyQXhpc1BsYWNlSG9sZGVySGVpZ2h0ICs9IGNoaWxkLmhlaWdo
dDsKLSAgICAgICAgICAgIGVsc2UgaWYgKHRvcEF4aXMpCi0gICAgICAgICAgICAgICAgdG9wQXhp
cyA9IGZhbHNlOwotICAgICAgICB9KTsKLSAgICAgICAgcmV0dXJuIHtoZWFkZXJzLCBzZXJpZXNl
c307Ci0gICAgfTsKLSAgICBjb25zdCB7aGVhZGVycywgc2VyaWVzZXN9ID0gdXBhY2tDaGlsZHJl
bihjaGlsZHJlbik7Ci0gICAgbGV0IGNvbXBvc2VyID0gRlAuY29tcG9zZXIoRlAuY3Vycnlpbmco
KHVwZGF0ZUhlYWRlcnMsIHVwZGF0ZVNlcmllc2VzLCBub3RpZnlSZXJlbmRlcikgPT4gewotICAg
ICAgICBpZiAoZXhwb3J0ZXIpCi0gICAgICAgICAgICBleHBvcnRlcigobmV3Q2hpbGRyZW4pID0+
IHsKLSAgICAgICAgICAgICAgICBjb25zdCB7aGVhZGVycywgc2VyaWVzZXN9ID0gdXBhY2tDaGls
ZHJlbihuZXdDaGlsZHJlbik7Ci0gICAgICAgICAgICAgICAgdXBkYXRlSGVhZGVycyhoZWFkZXJz
KTsKLSAgICAgICAgICAgICAgICB1cGRhdGVTZXJpZXNlcyhzZXJpZXNlcyk7Ci0gICAgICAgICAg
ICB9LCBub3RpZnlSZXJlbmRlcik7Ci0gICAgfSkpOwotICAgIHJldHVybiAoCi0gICAgICAgIGA8
ZGl2IGNsYXNzPSJ0aW1lbGluZSI+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkZXIiIHN0
eWxlPSJwYWRkaW5nLXRvcDoke2hlYWRlckF4aXNQbGFjZUhvbGRlckhlaWdodH1weCI+Ci0gICAg
ICAgICAgICAgICAgJHtMaXN0Q29tcG9uZW50KGNvbXBvc2VyLCAuLi5oZWFkZXJzKX0KLSAgICAg
ICAgICAgIDwvZGl2PgotICAgICAgICAgICAgJHtYU2Nyb2xsYWJsZUNhbnZhc1Byb3ZpZGVyKGNv
bXBvc2VyLCAuLi5zZXJpZXNlcyl9Ci0gICAgICAgIDwvZGl2PmAKLSAgICApOwotfQotCi1leHBv
cnQgewotICAgIFRpbWVsaW5lCi19OwpJbmRleDogVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2Ri
cHkvdmlldy9zdGF0aWMvbGlicmFyeS9qcy90ZXN0L1JlZlRlc3QuanMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9zdGF0aWMvbGlicmFyeS9qcy90ZXN0
L1JlZlRlc3QuanMJKHJldmlzaW9uIDI2NTUzMSkKKysrIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3Vs
dHNkYnB5L3ZpZXcvc3RhdGljL2xpYnJhcnkvanMvdGVzdC9SZWZUZXN0LmpzCShub25leGlzdGVu
dCkKQEAgLTEsMzAyICswLDAgQEAKLWltcG9ydCB7VGVzdFN1aXRlfSBmcm9tICcuLi9UZXN0Lmpz
JzsKLWltcG9ydCB7UkVGLCBET00sIGRpZmYsIEZQLCBFdmVudFN0cmVhbX0gZnJvbSAnLi4vUmVm
LmpzJzsKLQotY2xhc3MgRGlmZlRlc3QgZXh0ZW5kcyBUZXN0U3VpdGUgewotICAgIHRlc3RBcnJh
eURpZmYoKSB7Ci0gICAgICAgIGxldCByZW1vdmVkID0gW107Ci0gICAgICAgIGxldCBuZXdBcnJh
eSA9IFtdOwotICAgICAgICBkaWZmKFsxLCAyLCAzXSwgWzQsIDUsIDZdLCBpdGVtID0+IHJlbW92
ZWQucHVzaChpdGVtKSwgaXRlbSA9PiBuZXdBcnJheS5wdXNoKGl0ZW0pKTsKLSAgICAgICAgdGhp
cy5leHBlY3QocmVtb3ZlZCkuZXF1YWxUb0FycmF5KFsxLCAyLCAzXSk7Ci0gICAgICAgIHRoaXMu
ZXhwZWN0KG5ld0FycmF5KS5lcXVhbFRvQXJyYXkoWzQsIDUsIDZdKTsKLQotICAgICAgICByZW1v
dmVkID0gW107Ci0gICAgICAgIG5ld0FycmF5ID0gW107Ci0gICAgICAgIGRpZmYoWzEsIDIsIDNd
LCBbMiwgMywgNF0sIGl0ZW0gPT4gcmVtb3ZlZC5wdXNoKGl0ZW0pLCBpdGVtID0+IG5ld0FycmF5
LnB1c2goaXRlbSkpOwotICAgICAgICB0aGlzLmV4cGVjdChyZW1vdmVkKS5lcXVhbFRvQXJyYXko
WzFdKTsKLSAgICAgICAgdGhpcy5leHBlY3QobmV3QXJyYXkpLmVxdWFsVG9BcnJheShbMiwgMywg
NF0pOwotCi0gICAgICAgIHJlbW92ZWQgPSBbXTsKLSAgICAgICAgbmV3QXJyYXkgPSBbXTsKLSAg
ICAgICAgZGlmZihbMl0sIFsyLCAzLCA0XSwgaXRlbSA9PiByZW1vdmVkLnB1c2goaXRlbSksIGl0
ZW0gPT4gbmV3QXJyYXkucHVzaChpdGVtKSk7Ci0gICAgICAgIHRoaXMuZXhwZWN0KHJlbW92ZWQp
LmVxdWFsVG9BcnJheShbXSk7Ci0gICAgICAgIHRoaXMuZXhwZWN0KG5ld0FycmF5KS5lcXVhbFRv
QXJyYXkoWzIsIDMsIDRdKTsKLQotICAgICAgICByZW1vdmVkID0gW107Ci0gICAgICAgIG5ld0Fy
cmF5ID0gW107Ci0gICAgICAgIGRpZmYoW10sIFsyLCAzLCA0XSwgaXRlbSA9PiByZW1vdmVkLnB1
c2goaXRlbSksIGl0ZW0gPT4gbmV3QXJyYXkucHVzaChpdGVtKSk7Ci0gICAgICAgIHRoaXMuZXhw
ZWN0KHJlbW92ZWQpLmVxdWFsVG9BcnJheShbXSk7Ci0gICAgICAgIHRoaXMuZXhwZWN0KG5ld0Fy
cmF5KS5lcXVhbFRvQXJyYXkoWzIsIDMsIDRdKTsKLSAgICAgICAgCi0gICAgICAgIHJlbW92ZWQg
PSBbXTsKLSAgICAgICAgbmV3QXJyYXkgPSBbXTsKLSAgICAgICAgZGlmZihbNCwgMywgMl0sIFsy
LCAzLCA0XSwgaXRlbSA9PiByZW1vdmVkLnB1c2goaXRlbSksIGl0ZW0gPT4gbmV3QXJyYXkucHVz
aChpdGVtKSk7Ci0gICAgICAgIHRoaXMuZXhwZWN0KHJlbW92ZWQpLmVxdWFsVG9BcnJheShbXSk7
Ci0gICAgICAgIHRoaXMuZXhwZWN0KG5ld0FycmF5KS5lcXVhbFRvQXJyYXkoWzIsIDMsIDRdKTsK
LSAgICAgICAgCi0gICAgICAgIHJlbW92ZWQgPSBbXTsKLSAgICAgICAgbmV3QXJyYXkgPSBbXTsK
LSAgICAgICAgZGlmZihbNCwgMywgMiwgNSwgNl0sIFsyLCAzLCA0XSwgaXRlbSA9PiByZW1vdmVk
LnB1c2goaXRlbSksIGl0ZW0gPT4gbmV3QXJyYXkucHVzaChpdGVtKSk7Ci0gICAgICAgIHRoaXMu
ZXhwZWN0KHJlbW92ZWQpLmVxdWFsVG9BcnJheShbNSwgNl0pOwotICAgICAgICB0aGlzLmV4cGVj
dChuZXdBcnJheSkuZXF1YWxUb0FycmF5KFsyLCAzLCA0XSk7Ci0gICAgICAgIAotICAgICAgICBy
ZW1vdmVkID0gW107Ci0gICAgICAgIG5ld0FycmF5ID0gW107Ci0gICAgICAgIGRpZmYoW10sIFtd
LCBpdGVtID0+IHJlbW92ZWQucHVzaChpdGVtKSwgaXRlbSA9PiBuZXdBcnJheS5wdXNoKGl0ZW0p
KTsKLSAgICAgICAgdGhpcy5leHBlY3QocmVtb3ZlZCkuZXF1YWxUb0FycmF5KFtdKTsKLSAgICAg
ICAgdGhpcy5leHBlY3QobmV3QXJyYXkpLmVxdWFsVG9BcnJheShbXSk7Ci0gICAgfQotfQotCi1j
bGFzcyBEb21UZXN0IGV4dGVuZHMgVGVzdFN1aXRlIHsKLSAgICBzZXR1cChyb290RWxlbWVudCkg
ewotICAgICAgICB0aGlzLnJvb3RFbGVtZW50ID0gcm9vdEVsZW1lbnQ7Ci0gICAgfQotCi0gICAg
dGVzdEluamVjdCgpIHsKLSAgICAgICAgdGhpcy5yb290RWxlbWVudC5pbm5lckhUTUwgPSAiIjsK
LSAgICAgICAgY29uc3QgaW5qZWN0b3IgPSBgPGRpdiBpZD0iJHtNYXRoLnJhbmRvbSgpfSI+PC9k
aXY+YDsKLSAgICAgICAgRE9NLmluamVjdCh0aGlzLnJvb3RFbGVtZW50LCBpbmplY3Rvcik7Ci0g
ICAgICAgIHRoaXMuZXhwZWN0KHRoaXMucm9vdEVsZW1lbnQuaW5uZXJIVE1MKS5lcXVhbFRvVmFs
dWUoaW5qZWN0b3IpOwotICAgICAgICB0aGlzLnJvb3RFbGVtZW50LmlubmVySFRNTCA9ICIiOwot
ICAgIH0KLQotICAgIHRlc3RCZWZvcmUoKSB7Ci0gICAgICAgIGxldCBpbml0aWFsID0gJzxkaXYg
aWQ9IjEiPjwvZGl2PjxkaXYgaWQ9IjIiPjwvZGl2PjxkaXYgaWQ9IjMiPjwvZGl2Pic7IAotICAg
ICAgICB0aGlzLnJvb3RFbGVtZW50LmlubmVySFRNTCA9IGluaXRpYWw7Ci0gICAgICAgIGxldCBp
bmplY3RvciA9IGA8ZGl2IGlkPSIke01hdGgucmFuZG9tKCl9Ij48L2Rpdj5gOwotICAgICAgICBE
T00uYmVmb3JlKHRoaXMucm9vdEVsZW1lbnQuY2hpbGRyZW5bMF0sIGluamVjdG9yKTsKLSAgICAg
ICAgdGhpcy5leHBlY3QodGhpcy5yb290RWxlbWVudC5pbm5lckhUTUwpLmVxdWFsVG9WYWx1ZShg
JHtpbmplY3Rvcn0ke2luaXRpYWx9YCk7Ci0gICAgICAgIHRoaXMucm9vdEVsZW1lbnQuaW5uZXJI
VE1MID0gaW5pdGlhbDsKLSAgICAgICAgRE9NLmJlZm9yZSh0aGlzLnJvb3RFbGVtZW50LmNoaWxk
cmVuWzFdLCBpbmplY3Rvcik7Ci0gICAgICAgIHRoaXMuZXhwZWN0KHRoaXMucm9vdEVsZW1lbnQu
aW5uZXJIVE1MKS5lcXVhbFRvVmFsdWUoYDxkaXYgaWQ9IjEiPjwvZGl2PiR7aW5qZWN0b3J9PGRp
diBpZD0iMiI+PC9kaXY+PGRpdiBpZD0iMyI+PC9kaXY+YCk7Ci0gICAgICAgIHRoaXMucm9vdEVs
ZW1lbnQuaW5uZXJIVE1MID0gaW5pdGlhbDsKLSAgICAgICAgRE9NLmJlZm9yZSh0aGlzLnJvb3RF
bGVtZW50LmNoaWxkcmVuWzJdLCBpbmplY3Rvcik7Ci0gICAgICAgIHRoaXMuZXhwZWN0KHRoaXMu
cm9vdEVsZW1lbnQuaW5uZXJIVE1MKS5lcXVhbFRvVmFsdWUoYDxkaXYgaWQ9IjEiPjwvZGl2Pjxk
aXYgaWQ9IjIiPjwvZGl2PiR7aW5qZWN0b3J9PGRpdiBpZD0iMyI+PC9kaXY+YCk7Ci0gICAgfQot
Ci0gICAgdGVzdEFmdGVyKCkgewotICAgICAgICBsZXQgaW5pdGlhbCA9ICc8ZGl2IGlkPSIxIj48
L2Rpdj48ZGl2IGlkPSIyIj48L2Rpdj48ZGl2IGlkPSIzIj48L2Rpdj4nOyAKLSAgICAgICAgdGhp
cy5yb290RWxlbWVudC5pbm5lckhUTUwgPSBpbml0aWFsOwotICAgICAgICBsZXQgaW5qZWN0b3Ig
PSBgPGRpdiBpZD0iJHtNYXRoLnJhbmRvbSgpfSI+PC9kaXY+YDsKLSAgICAgICAgRE9NLmFmdGVy
KHRoaXMucm9vdEVsZW1lbnQuY2hpbGRyZW5bMF0sIGluamVjdG9yKTsKLSAgICAgICAgdGhpcy5l
eHBlY3QodGhpcy5yb290RWxlbWVudC5pbm5lckhUTUwpLmVxdWFsVG9WYWx1ZShgPGRpdiBpZD0i
MSI+PC9kaXY+JHtpbmplY3Rvcn08ZGl2IGlkPSIyIj48L2Rpdj48ZGl2IGlkPSIzIj48L2Rpdj5g
KTsKLSAgICAgICAgdGhpcy5yb290RWxlbWVudC5pbm5lckhUTUwgPSBpbml0aWFsOwotICAgICAg
ICBET00uYWZ0ZXIodGhpcy5yb290RWxlbWVudC5jaGlsZHJlblsxXSwgaW5qZWN0b3IpOwotICAg
ICAgICB0aGlzLmV4cGVjdCh0aGlzLnJvb3RFbGVtZW50LmlubmVySFRNTCkuZXF1YWxUb1ZhbHVl
KGA8ZGl2IGlkPSIxIj48L2Rpdj48ZGl2IGlkPSIyIj48L2Rpdj4ke2luamVjdG9yfTxkaXYgaWQ9
IjMiPjwvZGl2PmApOwotICAgICAgICB0aGlzLnJvb3RFbGVtZW50LmlubmVySFRNTCA9IGluaXRp
YWw7Ci0gICAgICAgIERPTS5hZnRlcih0aGlzLnJvb3RFbGVtZW50LmNoaWxkcmVuWzJdLCBpbmpl
Y3Rvcik7Ci0gICAgICAgIHRoaXMuZXhwZWN0KHRoaXMucm9vdEVsZW1lbnQuaW5uZXJIVE1MKS5l
cXVhbFRvVmFsdWUoYCR7aW5pdGlhbH0ke2luamVjdG9yfWApOwotICAgIH0KLQotICAgIHRlc3RQ
cmVwZW5kKCkgewotICAgICAgICBsZXQgaW5pdGlhbCA9ICc8ZGl2IGlkPSIxIj48L2Rpdj48ZGl2
IGlkPSIyIj48L2Rpdj48ZGl2IGlkPSIzIj48L2Rpdj4nOyAKLSAgICAgICAgdGhpcy5yb290RWxl
bWVudC5pbm5lckhUTUwgPSBpbml0aWFsOwotICAgICAgICBsZXQgaW5qZWN0b3IgPSBgPGRpdiBp
ZD0iJHtNYXRoLnJhbmRvbSgpfSI+PC9kaXY+YDsKLSAgICAgICAgRE9NLnByZXBlbmQodGhpcy5y
b290RWxlbWVudCwgaW5qZWN0b3IpOwotICAgICAgICB0aGlzLmV4cGVjdCh0aGlzLnJvb3RFbGVt
ZW50LmlubmVySFRNTCkuZXF1YWxUb1ZhbHVlKGAke2luamVjdG9yfSR7aW5pdGlhbH1gKTsKLSAg
ICB9Ci0KLSAgICB0ZXN0QXBwZW5kKCkgewotICAgICAgICBsZXQgaW5pdGlhbCA9ICc8ZGl2IGlk
PSIxIj48L2Rpdj48ZGl2IGlkPSIyIj48L2Rpdj48ZGl2IGlkPSIzIj48L2Rpdj4nOyAKLSAgICAg
ICAgdGhpcy5yb290RWxlbWVudC5pbm5lckhUTUwgPSBpbml0aWFsOwotICAgICAgICBsZXQgaW5q
ZWN0b3IgPSBgPGRpdiBpZD0iJHtNYXRoLnJhbmRvbSgpfSI+PC9kaXY+YDsKLSAgICAgICAgRE9N
LmFwcGVuZCh0aGlzLnJvb3RFbGVtZW50LCBpbmplY3Rvcik7Ci0gICAgICAgIHRoaXMuZXhwZWN0
KHRoaXMucm9vdEVsZW1lbnQuaW5uZXJIVE1MKS5lcXVhbFRvVmFsdWUoYCR7aW5pdGlhbH0ke2lu
amVjdG9yfWApOwotICAgIH0KLSAgICAKLSAgICB0ZXN0UmVwbGFjZSgpIHsKLSAgICAgICAgbGV0
IGluaXRpYWwgPSAnPGRpdiBpZD0iMSI+PC9kaXY+PGRpdiBpZD0iMiI+PC9kaXY+PGRpdiBpZD0i
MyI+PC9kaXY+JzsgCi0gICAgICAgIHRoaXMucm9vdEVsZW1lbnQuaW5uZXJIVE1MID0gaW5pdGlh
bDsKLSAgICAgICAgbGV0IGluamVjdG9yID0gYDxkaXYgaWQ9IiR7TWF0aC5yYW5kb20oKX0iPjwv
ZGl2PmA7Ci0gICAgICAgIERPTS5yZXBsYWNlKHRoaXMucm9vdEVsZW1lbnQuY2hpbGRyZW5bMF0s
IGluamVjdG9yKTsKLSAgICAgICAgdGhpcy5leHBlY3QodGhpcy5yb290RWxlbWVudC5pbm5lckhU
TUwpLmVxdWFsVG9WYWx1ZShgJHtpbmplY3Rvcn08ZGl2IGlkPSIyIj48L2Rpdj48ZGl2IGlkPSIz
Ij48L2Rpdj5gKTsKLSAgICB9Ci0gICAgCi0gICAgdGVzdFJlbW92ZSgpIHsKLSAgICAgICAgbGV0
IGluaXRpYWwgPSAnPGRpdiBpZD0iMSI+PC9kaXY+PGRpdiBpZD0iMiI+PC9kaXY+PGRpdiBpZD0i
MyI+PC9kaXY+JzsgCi0gICAgICAgIHRoaXMucm9vdEVsZW1lbnQuaW5uZXJIVE1MID0gaW5pdGlh
bDsKLSAgICAgICAgRE9NLnJlbW92ZSh0aGlzLnJvb3RFbGVtZW50LmNoaWxkcmVuWzBdKTsKLSAg
ICAgICAgdGhpcy5leHBlY3QodGhpcy5yb290RWxlbWVudC5pbm5lckhUTUwpLmVxdWFsVG9WYWx1
ZShgPGRpdiBpZD0iMiI+PC9kaXY+PGRpdiBpZD0iMyI+PC9kaXY+YCk7Ci0gICAgfQotfQotCi1j
bGFzcyBSZWZUZXN0IGV4dGVuZHMgVGVzdFN1aXRlIHsKLSAgICBzZXR1cChyb290RWxlbWVudCkg
ewotICAgICAgICB0aGlzLnJvb3RFbGVtZW50ID0gcm9vdEVsZW1lbnQ7Ci0gICAgfQotCi0gICAg
YXN5bmMgdGVzdE9uRWxlbWVudE1vdW50KCkgewotICAgICAgICBsZXQgdHJpZ2dlcmVkID0gZmFs
c2U7Ci0gICAgICAgIGxldCBjdXJyZW50UmVmID0gbnVsbDsKLSAgICAgICAgY29uc3QgY3JlYXRB
Q29tcG9uZW50ID0gKCkgPT4gewotICAgICAgICAgICAgbGV0IHJlZiA9IFJFRi5jcmVhdGVSZWYo
ewotICAgICAgICAgICAgICAgIG9uRWxlbWVudE1vdW50OiAoZWxlbWVudCkgPT4gewotICAgICAg
ICAgICAgICAgICAgICB0cmlnZ2VyZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIH0pOwotICAgICAgICAgICAgY3VycmVudFJlZiA9IHJlZjsKLSAgICAgICAgICAgIHJl
dHVybiBgPGRpdiByZWY9IiR7cmVmfSI+PC9kaXY+YDsKLSAgICAgICAgfTsKLSAgICAgICAgICAg
IAotICAgICAgICBjb25zdCBmaXJzdENvbXAgPSBjcmVhdEFDb21wb25lbnQoKTsKLSAgICAgICAg
RE9NLmluamVjdCh0aGlzLnJvb3RFbGVtZW50LCBmaXJzdENvbXApOwotICAgICAgICBhd2FpdCB0
aGlzLndhaXRGb3JSZWZNb3VudGVkKGN1cnJlbnRSZWYpOwotICAgICAgICB0aGlzLmV4cGVjdCh0
cmlnZ2VyZWQpLmVxdWFsVG9WYWx1ZSh0cnVlKTsKLSAgICAgICAgdGhpcy5leHBlY3QoY3VycmVu
dFJlZi5lbGVtZW50Lm91dGVySFRNTCkuZXF1YWxUb1ZhbHVlKGZpcnN0Q29tcCk7Ci0KLSAgICAg
ICAgdHJpZ2dlcmVkID0gZmFsc2U7Ci0gICAgICAgIGNvbnN0IHNlY29uZENvbXAgPSBjcmVhdEFD
b21wb25lbnQoKTsKLSAgICAgICAgRE9NLnJlcGxhY2UodGhpcy5yb290RWxlbWVudC5jaGlsZHJl
blswXSwgc2Vjb25kQ29tcCk7Ci0gICAgICAgIGF3YWl0IHRoaXMud2FpdEZvclJlZk1vdW50ZWQo
Y3VycmVudFJlZik7Ci0gICAgICAgIHRoaXMuZXhwZWN0KHRyaWdnZXJlZCkuZXF1YWxUb1ZhbHVl
KHRydWUpOwotICAgICAgICB0aGlzLmV4cGVjdChjdXJyZW50UmVmLmVsZW1lbnQub3V0ZXJIVE1M
KS5lcXVhbFRvVmFsdWUoc2Vjb25kQ29tcCk7Ci0gICAgfQotCi0gICAgYXN5bmMgdGVzdE9uRWxl
bWVudFVubW91bnQoKSB7Ci0gICAgICAgIGxldCB0cmlnZ2VyZWQgPSBmYWxzZTsKLSAgICAgICAg
bGV0IGN1cnJlbnRSZWYgPSBudWxsOwotICAgICAgICBjb25zdCBjcmVhdEFDb21wb25lbnQgPSAo
KSA9PiB7Ci0gICAgICAgICAgICBsZXQgcmVmID0gUkVGLmNyZWF0ZVJlZih7Ci0gICAgICAgICAg
ICAgICAgb25FbGVtZW50VW5tb3VudDogKGVsZW1lbnQpID0+IHsKLSAgICAgICAgICAgICAgICAg
ICAgdHJpZ2dlcmVkID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9KTsK
LSAgICAgICAgICAgIGN1cnJlbnRSZWYgPSByZWY7Ci0gICAgICAgICAgICByZXR1cm4gYDxkaXYg
cmVmPSIke3JlZn0iPjwvZGl2PmA7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgY29uc3QgZmlyc3RD
b21wID0gY3JlYXRBQ29tcG9uZW50KCk7Ci0gICAgICAgIERPTS5pbmplY3QodGhpcy5yb290RWxl
bWVudCwgZmlyc3RDb21wKTsKLSAgICAgICAgRE9NLnJlcGxhY2UodGhpcy5yb290RWxlbWVudC5j
aGlsZHJlblswXSwgIjxkaXY+PC9kaXY+Iik7Ci0gICAgICAgIGF3YWl0IHRoaXMud2FpdEZvclJl
ZlVubW91bnRlZChjdXJyZW50UmVmKTsKLSAgICAgICAgdGhpcy5leHBlY3QodHJpZ2dlcmVkKS5l
cXVhbFRvVmFsdWUodHJ1ZSk7Ci0gICAgICAgIHRoaXMuZXhwZWN0KGN1cnJlbnRSZWYuZWxlbWVu
dC5wYXJlbnRFbGVtZW50KS5lcXVhbFRvVmFsdWUobnVsbCk7Ci0KLSAgICAgICAgdHJpZ2dlcmVk
ID0gZmFsc2U7Ci0gICAgICAgIERPTS5pbmplY3QodGhpcy5yb290RWxlbWVudCwgZmlyc3RDb21w
KTsKLSAgICAgICAgRE9NLnJlbW92ZSh0aGlzLnJvb3RFbGVtZW50LmNoaWxkcmVuWzBdKTsKLSAg
ICAgICAgbGV0IGV4cGVjdGVkRSA9IG51bGw7Ci0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBh
d2FpdCB0aGlzLndhaXRGb3JSZWZVbm1vdW50ZWQoY3VycmVudFJlZik7Ci0gICAgICAgIH0gY2F0
Y2ggKGUpIHsKLSAgICAgICAgICAgIC8vIGRlc3RvcmllZCByZWYgd29uJ3QgYmUgdHJpZ2dlcmVk
Ci0gICAgICAgICAgICB0aGlzLmV4cGVjdCh0cmlnZ2VyZWQpLmVxdWFsVG9WYWx1ZShmYWxzZSk7
Ci0gICAgICAgICAgICBleHBlY3RlZEUgPSBlOwotICAgICAgICB9Ci0gICAgICAgIHRoaXMuZXhw
ZWN0KGV4cGVjdGVkRSkubm90RXF1YWxUb1ZhbHVlKG51bGwpOwotICAgICAgICAKLSAgICAgICAg
dHJpZ2dlcmVkID0gZmFsc2U7Ci0gICAgICAgIGNvbnN0IHNlY29uZENvbXAgPSBjcmVhdEFDb21w
b25lbnQoKTsKLSAgICAgICAgRE9NLmluamVjdCh0aGlzLnJvb3RFbGVtZW50LCBzZWNvbmRDb21w
KTsKLSAgICAgICAgRE9NLnJlbW92ZSh0aGlzLnJvb3RFbGVtZW50LmNoaWxkcmVuWzBdKTsKLSAg
ICAgICAgYXdhaXQgdGhpcy53YWl0Rm9yUmVmVW5tb3VudGVkKGN1cnJlbnRSZWYpOwotICAgICAg
ICB0aGlzLmV4cGVjdCh0cmlnZ2VyZWQpLmVxdWFsVG9WYWx1ZSh0cnVlKTsKLSAgICAgICAgdGhp
cy5leHBlY3QoY3VycmVudFJlZi5lbGVtZW50LnBhcmVudEVsZW1lbnQpLmVxdWFsVG9WYWx1ZShu
dWxsKTsKLSAgICB9Ci0gICAgCi0gICAgYXN5bmMgdGVzdE9uQ29tcGxleFN0YXRlVXBkYXRlKCkg
ewotICAgICAgICBsZXQgdmVyaWZpZXIgPSBudWxsOwotICAgICAgICBsZXQgdHJpZ2dlcmVkID0g
ZmFsc2U7Ci0gICAgICAgIGxldCBleHBlY3RlZEUgPSBudWxsOwotICAgICAgICBsZXQgaW5pdGlh
bFN0YXRlID0gewotICAgICAgICAgICAgaW5pdGlhbFN0YXRlOiBNYXRoLnJhbmRvbSgpCi0gICAg
ICAgIH07Ci0gICAgICAgIGxldCByZWYgPSBSRUYuY3JlYXRlUmVmKHsKLSAgICAgICAgICAgIG9u
U3RhdGVVcGRhdGU6KGVsZW1lbnQsIHN0YXRlRGlmZiwgc3RhdGUpID0+IHsKLSAgICAgICAgICAg
ICAgICBpZiAodmVyaWZpZXIpIHZlcmlmaWVyKGVsZW1lbnQsIHN0YXRlRGlmZiwgc3RhdGUpOwot
ICAgICAgICAgICAgfQotICAgICAgICB9KTsKLSAgICAgICAgcmVmLnNldFN0YXRlKGluaXRpYWxT
dGF0ZSk7Ci0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBhd2FpdCB0aGlzLndhaXRGb3JTdGF0
ZVVwZGF0ZWQocmVmKTsKLSAgICAgICAgfSBjYXRjaCAoZSkgewotICAgICAgICAgICAgZXhwZWN0
ZWRFID0gZTsKLSAgICAgICAgfQotICAgICAgICAvLyBiZWZvcmUgZWxlbWVudCBtb3VudCwgd2Ug
ZG9uJ3QgdHJpZ2dlciBzdGF0ZSB1cGRhdGUgY2FsbGJhY2ssIHdlIGp1c3Qgc2F2ZSB0aGUgc3Rh
dGUKLSAgICAgICAgdGhpcy5leHBlY3QodHJpZ2dlcmVkKS5lcXVhbFRvVmFsdWUoZmFsc2UpOwot
ICAgICAgICB0aGlzLmV4cGVjdChleHBlY3RlZEUpLm5vdEVxdWFsVG9WYWx1ZShudWxsKTsKLSAg
ICAgICAgdGhpcy5leHBlY3QocmVmLnN0YXRlLmluaXRpYWxTdGF0ZSkuZXF1YWxUb1ZhbHVlKGlu
aXRpYWxTdGF0ZS5pbml0aWFsU3RhdGUpOwotICAgICAgICAvLyBFYWNoIHRpbWUgaXQgd2lsbCBj
cmVhdGUgYSBuZXcgc3RhdGUgb2JqZWN0Ci0gICAgICAgIHRoaXMuZXhwZWN0KHJlZi5zdGF0ZSku
bm90RXF1YWxUb1ZhbHVlKGluaXRpYWxTdGF0ZSk7Ci0gICAgICAgIAotICAgICAgICBET00uaW5q
ZWN0KHRoaXMucm9vdEVsZW1lbnQsIGA8ZGl2IHJlZj0iJHtyZWZ9Ij48L2Rpdj5gKTsKLSAgICAg
ICAgdmVyaWZpZXIgPSAoZWxlbWVudCwgc3RhdGVEaWZmLCBzdGF0ZSkgPT4gewotICAgICAgICAg
ICAgdHJpZ2dlcmVkID0gdHJ1ZTsKLSAgICAgICAgICAgIHRoaXMuZXhwZWN0KHN0YXRlRGlmZi5p
bml0aWFsU3RhdGUpLmVxdWFsVG9WYWx1ZShpbml0aWFsU3RhdGUuaW5pdGlhbFN0YXRlKTsKLSAg
ICAgICAgICAgIHRoaXMuZXhwZWN0KHN0YXRlLmZha2VTdGF0ZSkuZXF1YWxUb1ZhbHVlKHVuZGVm
aW5lZCk7Ci0gICAgICAgIH07Ci0gICAgICAgIGF3YWl0IHRoaXMud2FpdEZvclN0YXRlVXBkYXRl
ZChyZWYpOwotICAgICAgICB0aGlzLmV4cGVjdCh0cmlnZ2VyZWQpLmVxdWFsVG9WYWx1ZSh0cnVl
KTsKLSAgICAgICAgCi0gICAgICAgIHRyaWdnZXJlZCA9IGZhbHNlOwotICAgICAgICBsZXQgZmFr
ZVN0YXRlID0gewotICAgICAgICAgICAgZmFrZVN0YXRlOiBNYXRoLnJhbmRvbSgpCi0gICAgICAg
IH07Ci0gICAgICAgIHZlcmlmaWVyID0gKGVsZW1lbnQsIHN0YXRlRGlmZiwgc3RhdGUpID0+IHsK
LSAgICAgICAgICAgIHRyaWdnZXJlZCA9IHRydWU7Ci0gICAgICAgICAgICB0aGlzLmV4cGVjdChz
dGF0ZURpZmYuZmFrZVN0YXRlKS5lcXVhbFRvVmFsdWUoZmFrZVN0YXRlLmZha2VTdGF0ZSk7Ci0g
ICAgICAgICAgICB0aGlzLmV4cGVjdChzdGF0ZS5mYWtlU3RhdGUpLmVxdWFsVG9WYWx1ZSh1bmRl
ZmluZWQpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICB0aGlzLmV4cGVjdChzdGF0ZS5pbml0
aWFsU3RhdGUpLmVxdWFsVG9WYWx1ZShpbml0aWFsU3RhdGUuaW5pdGlhbFN0YXRlKTsKLSAgICAg
ICAgICAgIHRoaXMuZXhwZWN0KHN0YXRlRGlmZi5pbml0aWFsU3RhdGUpLmVxdWFsVG9WYWx1ZSh1
bmRlZmluZWQpOwotICAgICAgICB9OwotICAgICAgICByZWYuc2V0U3RhdGUoZmFrZVN0YXRlKTsK
LSAgICAgICAgYXdhaXQgdGhpcy53YWl0Rm9yU3RhdGVVcGRhdGVkKHJlZik7Ci0gICAgICAgIHRo
aXMuZXhwZWN0KHJlZi5zdGF0ZS5mYWtlU3RhdGUpLmVxdWFsVG9WYWx1ZShmYWtlU3RhdGUuZmFr
ZVN0YXRlKTsKLSAgICAgICAgdGhpcy5leHBlY3QocmVmLnN0YXRlLmluaXRpYWxTdGF0ZSkuZXF1
YWxUb1ZhbHVlKGluaXRpYWxTdGF0ZS5pbml0aWFsU3RhdGUpOwotICAgICAgICB0aGlzLmV4cGVj
dCh0cmlnZ2VyZWQpLmVxdWFsVG9WYWx1ZSh0cnVlKTsKLSAgICB9Ci0gICAgCi0gICAgYXN5bmMg
dGVzdE9uVmFsdWVTdGF0ZVVwZGF0ZSgpIHsKLSAgICAgICAgbGV0IHRyaWdnZXJlZCA9IGZhbHNl
OwotICAgICAgICBsZXQgdmVyaWZpZXIgPSBudWxsOwotICAgICAgICBjb25zdCBpbml0aWFsU3Rh
dGUgPSBNYXRoLnJhbmRvbSgpOwotICAgICAgICBjb25zdCByZWYgPSBSRUYuY3JlYXRlUmVmKHsK
LSAgICAgICAgICAgIHN0YXRlOiBpbml0aWFsU3RhdGUsCi0gICAgICAgICAgICBvblN0YXRlVXBk
YXRlOihlbGVtZW50LCBzdGF0ZURpZmYsIHN0YXRlKSA9PiB7Ci0gICAgICAgICAgICAgICAgaWYg
KHZlcmlmaWVyKSB2ZXJpZmllcihlbGVtZW50LCBzdGF0ZURpZmYsIHN0YXRlKTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfSk7Ci0gICAgICAgIHZlcmlmaWVyID0gKGVsZW1lbnQsIHN0YXRlRGlm
Ziwgc3RhdGUpID0+IHsKLSAgICAgICAgICAgIHRyaWdnZXJlZCA9IHRydWU7Ci0gICAgICAgICAg
ICB0aGlzLmV4cGVjdChlbGVtZW50KS5ub3RFcXVhbFRvVmFsdWUobnVsbCk7Ci0gICAgICAgICAg
ICB0aGlzLmV4cGVjdChzdGF0ZURpZmYpLmVxdWFsVG9WYWx1ZShpbml0aWFsU3RhdGUpOwotICAg
ICAgICB9Ci0gICAgICAgIERPTS5pbmplY3QodGhpcy5yb290RWxlbWVudCwgYDxkaXYgcmVmPSIk
e3JlZn0iPjwvZGl2PmApOwotICAgICAgICBhd2FpdCB0aGlzLndhaXRGb3JTdGF0ZVVwZGF0ZWQo
cmVmKTsKLSAgICAgICAgdGhpcy5leHBlY3QodHJpZ2dlcmVkKS5lcXVhbFRvVmFsdWUodHJ1ZSk7
Ci0KLSAgICAgICAgY29uc3QgbmV3U3RhdGUgPSBudWxsOwotICAgICAgICB0cmlnZ2VyZWQgPSBm
YWxzZTsKLSAgICAgICAgdmVyaWZpZXIgPSAoZWxlbWVudCwgc3RhdGVEaWZmLCBzdGF0ZSkgPT4g
ewotICAgICAgICAgICAgdHJpZ2dlcmVkID0gdHJ1ZTsKLSAgICAgICAgICAgIHRoaXMuZXhwZWN0
KHN0YXRlRGlmZikuZXF1YWxUb1ZhbHVlKG5ld1N0YXRlKTsKLSAgICAgICAgICAgIHRoaXMuZXhw
ZWN0KHN0YXRlKS5lcXVhbFRvVmFsdWUoaW5pdGlhbFN0YXRlKTsKLSAgICAgICAgfQotICAgICAg
ICByZWYuc2V0U3RhdGUobmV3U3RhdGUpOwotICAgICAgICBhd2FpdCB0aGlzLndhaXRGb3JTdGF0
ZVVwZGF0ZWQocmVmKTsKLSAgICAgICAgdGhpcy5leHBlY3QodHJpZ2dlcmVkKS5lcXVhbFRvVmFs
dWUodHJ1ZSk7Ci0gICAgICAgIAotICAgICAgICBjb25zdCBuZXdTdGF0ZTEgPSAwOwotICAgICAg
ICB0cmlnZ2VyZWQgPSBmYWxzZTsKLSAgICAgICAgdmVyaWZpZXIgPSAoZWxlbWVudCwgc3RhdGVE
aWZmLCBzdGF0ZSkgPT4gewotICAgICAgICAgICAgdHJpZ2dlcmVkID0gdHJ1ZTsKLSAgICAgICAg
ICAgIHRoaXMuZXhwZWN0KHN0YXRlRGlmZikuZXF1YWxUb1ZhbHVlKG5ld1N0YXRlMSk7Ci0gICAg
ICAgICAgICB0aGlzLmV4cGVjdChzdGF0ZSkuZXF1YWxUb1ZhbHVlKG5ld1N0YXRlKTsKLSAgICAg
ICAgfQotICAgICAgICByZWYuc2V0U3RhdGUobmV3U3RhdGUxKTsKLSAgICAgICAgYXdhaXQgdGhp
cy53YWl0Rm9yU3RhdGVVcGRhdGVkKHJlZik7Ci0gICAgICAgIHRoaXMuZXhwZWN0KHRyaWdnZXJl
ZCkuZXF1YWxUb1ZhbHVlKHRydWUpOwotICAgICAgICAKLSAgICAgICAgY29uc3QgbmV3U3RhdGUy
ID0gdW5kZWZpbmVkOwotICAgICAgICBsZXQgZXhwZWN0ZWRFID0gbnVsbDsKLSAgICAgICAgcmVm
LnNldFN0YXRlKG5ld1N0YXRlMSk7Ci0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBhd2FpdCB0
aGlzLndhaXRGb3JTdGF0ZVVwZGF0ZWQocmVmKTsKLSAgICAgICAgfSBjYXRjaChlKSB7Ci0gICAg
ICAgICAgICBleHBlY3RlZEUgPSBlOwotICAgICAgICB9Ci0gICAgICAgIHRoaXMuZXhwZWN0KGV4
cGVjdGVkRSkubm90RXF1YWxUb1ZhbHVlKG51bGwpOwotICAgIH0KLX0KLWV4cG9ydCB7RGlmZlRl
c3QsIERvbVRlc3QsIFJlZlRlc3R9OwpJbmRleDogVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2Ri
cHkvdmlldy9zdGF0aWMvbGlicmFyeS9qcy90ZXN0L2luZGV4Lmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9zdGF0aWMvbGlicmFyeS9qcy90ZXN0
L2luZGV4Lmh0bWwJKHJldmlzaW9uIDI2NTUzMSkKKysrIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3Vs
dHNkYnB5L3ZpZXcvc3RhdGljL2xpYnJhcnkvanMvdGVzdC9pbmRleC5odG1sCShub25leGlzdGVu
dCkKQEAgLTEsMjUgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLSAgICA8aGVhZD4K
LSAgICAgICAgPHRpdGxlPlRlc3Q8L3RpdGxlPgotICAgICAgICA8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9Ii4uLy4uL2Nzcy93ZWJraXQuY3NzIj48L2xpbms+Ci0gICAgICAgIDxsaW5rIHJl
bD0ic2hvcnRjdXQgaWNvbiIgc2l6ZXM9IjMyeDMyIiB0eXBlPSJpbWFnZS94LWljb24iIGhyZWY9
Imh0dHBzOi8vd2Via2l0Lm9yZy9mYXZpY29uLmljbyI+Ci0gICAgICAgIDxtZXRhIGNvbnRlbnQ9
IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLCB2aWV3cG9ydC1maXQ9Y292ZXIi
IG5hbWU9InZpZXdwb3J0Ij4KLSAgICAgICAgPG1ldGEgY2hhcnNldD0iVVRGLTgiPgotICAgIDwv
aGVhZD4KLSAgICA8Ym9keT4KLSAgICAgICAgPGRpdiBpZD0iYXBwIj48L2Rpdj4KLSAgICAgICAg
PHNjcmlwdCB0eXBlPSJtb2R1bGUiPgotICAgICAgICAgICAgaW1wb3J0IHtET019IGZyb20gIi4u
L1JlZi5qcyI7Ci0gICAgICAgICAgICBpbXBvcnQge1Rlc3RDb250cm9sbGVyfSBmcm9tICIuLi9U
ZXN0LmpzIjsKLSAgICAgICAgICAgIGltcG9ydCB7VGVzdEFwcH0gZnJvbSAiLi4vY29tcG9uZW50
cy9UZXN0Q29tcG9uZW50cy5qcyI7Ci0gICAgICAgICAgICBjb25zdCB0ZXN0Q29udHJvbGxlciA9
IG5ldyBUZXN0Q29udHJvbGxlcigpOwotICAgICAgICAgICAgYXN5bmMgZnVuY3Rpb24gbWFpbigp
IHsKLSAgICAgICAgICAgICAgICAvLyBUZXN0IGZpbGUgbGlzdDogUm9vdCBQYXRoIHdpbGwgYmUg
VGVzdC5qcydzIGZvbGRlcgotICAgICAgICAgICAgICAgIGF3YWl0IHRlc3RDb250cm9sbGVyLmNv
bGxlY3RGaWxlKCIuL3Rlc3QvUmVmVGVzdC5qcyIpOwotICAgICAgICAgICAgICAgIERPTS5pbmpl
Y3QoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImFwcCIpLCBUZXN0QXBwKHRlc3RDb250cm9sbGVy
KSk7Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgbWFpbigpOwotICAgICAgICA8L3Njcmlw
dD4KLSAgICA8L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRz
ZGJweS92aWV3L3N1aXRlX3ZpZXcucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvcmVzdWx0c2RicHkv
cmVzdWx0c2RicHkvdmlldy9zdWl0ZV92aWV3LnB5CShyZXZpc2lvbiAyNjU1MzEpCisrKyBUb29s
cy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS92aWV3L3N1aXRlX3ZpZXcucHkJKG5vbmV4aXN0ZW50
KQpAQCAtMSwxMzUgKzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTksIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFy
ZSBtZXQ6Ci0jIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAotIyBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0j
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSMgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIK
LSMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLQotaW1wb3J0IGpzb24KLQotZnJvbSBmbGFzayBpbXBvcnQgYWJvcnQKLWZyb20gcmVz
dWx0c2RicHkuY29udHJvbGxlci5jb21taXRfY29udHJvbGxlciBpbXBvcnQgdXVpZF9yYW5nZV9m
b3JfcXVlcnksIEhhc0NvbW1pdENvbnRleHQKLWZyb20gcmVzdWx0c2RicHkuY29udHJvbGxlci5j
b25maWd1cmF0aW9uX2NvbnRyb2xsZXIgaW1wb3J0IGNvbmZpZ3VyYXRpb25fZm9yX3F1ZXJ5Ci1m
cm9tIHJlc3VsdHNkYnB5LmNvbnRyb2xsZXIuc3VpdGVfY29udHJvbGxlciBpbXBvcnQgdGltZV9y
YW5nZV9mb3JfcXVlcnkKLWZyb20gcmVzdWx0c2RicHkuZmxhc2tfc3VwcG9ydC51dGlsIGltcG9y
dCBBc3NlcnRSZXF1ZXN0LCBxdWVyeV9hc19rd2FyZ3MsIGxpbWl0X2Zvcl9xdWVyeSwgYm9vbGVh
bl9xdWVyeQotZnJvbSByZXN1bHRzZGJweS52aWV3LnNpdGVfbWVudSBpbXBvcnQgU2l0ZU1lbnUK
LQotCi1jbGFzcyBTdWl0ZVZpZXcoSGFzQ29tbWl0Q29udGV4dCk6Ci0gICAgREVGQVVMVF9MSU1J
VCA9IDEwMAotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGVudmlyb25tZW50LCB1cGxvYWRfY29u
dHJvbGxlciwgc3VpdGVfY29udHJvbGxlciwgc2l0ZV9tZW51PU5vbmUpOgotICAgICAgICBzdXBl
cihTdWl0ZVZpZXcsIHNlbGYpLl9faW5pdF9fKHN1aXRlX2NvbnRyb2xsZXIuY29tbWl0X2NvbnRl
eHQpCi0gICAgICAgIHNlbGYuZW52aXJvbm1lbnQgPSBlbnZpcm9ubWVudAotCi0gICAgICAgIHNl
bGYudXBsb2FkX2NvbnRyb2xsZXIgPSB1cGxvYWRfY29udHJvbGxlcgotICAgICAgICBzZWxmLnN1
aXRlX2NvbnRyb2xsZXIgPSBzdWl0ZV9jb250cm9sbGVyCi0gICAgICAgIHNlbGYuc2l0ZV9tZW51
ID0gc2l0ZV9tZW51Ci0KLSAgICAjIEl0J3Mgbm90IHRoYXQgd2UgYWN0dWFsbHkgbmVlZCB0aGUg
dmFsdWUgb2YgYWxsIHRoZSBxdWVyeSBhcmd1bWVudHMgaGVyZSwgYnV0IHdlIHdhbnQgZXJyb3Jz
IGZvciB0aGUgd3JvbmcKLSAgICAjIHF1ZXJ5IGFyZ3VtZW50cyB0byBiZSBkZWFsdCB3aXRoIGlu
IGEgdXNlci1yZWFkYWJsZSB3YXkKLSAgICBAcXVlcnlfYXNfa3dhcmdzKCkKLSAgICBAdXVpZF9y
YW5nZV9mb3JfcXVlcnkoKQotICAgIEBsaW1pdF9mb3JfcXVlcnkoREVGQVVMVF9MSU1JVCkKLSAg
ICBAY29uZmlndXJhdGlvbl9mb3JfcXVlcnkoKQotICAgIEB0aW1lX3JhbmdlX2Zvcl9xdWVyeSgp
Ci0gICAgZGVmIF9zdWl0ZXNfZm9yX2NvbmZpZ3VyYXRpb24oCi0gICAgICAgIHNlbGYsIHN1aXRl
PU5vbmUsIGNvbmZpZ3VyYXRpb25zPU5vbmUsIHJlY2VudD1Ob25lLAotICAgICAgICBicmFuY2g9
Tm9uZSwgYmVnaW49Tm9uZSwgZW5kPU5vbmUsCi0gICAgICAgIGJlZ2luX3F1ZXJ5X3RpbWU9Tm9u
ZSwgZW5kX3F1ZXJ5X3RpbWU9Tm9uZSwKLSAgICAgICAgbGltaXQ9Tm9uZSwgKiprd2FyZ3MKLSAg
ICApOgotICAgICAgICBBc3NlcnRSZXF1ZXN0LmlzX3R5cGUoWydHRVQnXSkKLSAgICAgICAgQXNz
ZXJ0UmVxdWVzdC5xdWVyeV9rd2FyZ3NfZW1wdHkoKiprd2FyZ3MpCi0KLSAgICAgICAgd2l0aCBz
ZWxmLnVwbG9hZF9jb250cm9sbGVyLnVwbG9hZF9jb250ZXh0OgotICAgICAgICAgICAgc3VpdGVz
X2J5X2NvbmZpZ3VyYXRpb24gPSBzZWxmLnVwbG9hZF9jb250cm9sbGVyLnVwbG9hZF9jb250ZXh0
LmZpbmRfc3VpdGVzKGNvbmZpZ3VyYXRpb25zPWNvbmZpZ3VyYXRpb25zLCByZWNlbnQ9Ym9vbGVh
bl9xdWVyeSgqcmVjZW50KVswXSBpZiByZWNlbnQgZWxzZSBUcnVlKQotICAgICAgICAgICAgY2Fu
ZGlkYXRlX3N1aXRlcyA9IHNldCgpCi0gICAgICAgICAgICBmb3Igc3VpdGVzX2Zvcl9jb25maWcg
aW4gc3VpdGVzX2J5X2NvbmZpZ3VyYXRpb24udmFsdWVzKCk6Ci0gICAgICAgICAgICAgICAgZm9y
IHMgaW4gc3VpdGVzX2Zvcl9jb25maWc6Ci0gICAgICAgICAgICAgICAgICAgIGNhbmRpZGF0ZV9z
dWl0ZXMuYWRkKHMpCi0gICAgICAgICAgICByZXR1cm4gc29ydGVkKFtzIGZvciBzIGluIGNhbmRp
ZGF0ZV9zdWl0ZXMgaWYgbm90IHN1aXRlIG9yIHMgaW4gc3VpdGVdKQotCi0gICAgQFNpdGVNZW51
LnJlbmRlcl93aXRoX3NpdGVfbWVudSgpCi0gICAgZGVmIHJlc3VsdHMoc2VsZiwgKiprd2FyZ3Mp
OgotICAgICAgICByZXR1cm4gc2VsZi5lbnZpcm9ubWVudC5nZXRfdGVtcGxhdGUoJ3N1aXRlX3Jl
c3VsdHMuaHRtbCcpLnJlbmRlcigKLSAgICAgICAgICAgIHRpdGxlPXNlbGYuc2l0ZV9tZW51LnRp
dGxlLAotICAgICAgICAgICAgc3VpdGVzPWpzb24uZHVtcHMoc2VsZi5fc3VpdGVzX2Zvcl9jb25m
aWd1cmF0aW9uKCkpLAotICAgICAgICAgICAgKiprd2FyZ3MpCi0KLSAgICBAcXVlcnlfYXNfa3dh
cmdzKCkKLSAgICBAdXVpZF9yYW5nZV9mb3JfcXVlcnkoKQotICAgIEBsaW1pdF9mb3JfcXVlcnko
REVGQVVMVF9MSU1JVCkKLSAgICBAY29uZmlndXJhdGlvbl9mb3JfcXVlcnkoKQotICAgIEB0aW1l
X3JhbmdlX2Zvcl9xdWVyeSgpCi0gICAgZGVmIF9zdWl0ZXNfZm9yX2ludmVzdGlnYXRpb24oCi0g
ICAgICAgIHNlbGYsIHN1aXRlPU5vbmUsIGNvbmZpZ3VyYXRpb25zPU5vbmUsIHJlY2VudD1Ob25l
LAotICAgICAgICBicmFuY2g9Tm9uZSwgYmVnaW49Tm9uZSwgZW5kPU5vbmUsCi0gICAgICAgIGJl
Z2luX3F1ZXJ5X3RpbWU9Tm9uZSwgZW5kX3F1ZXJ5X3RpbWU9Tm9uZSwKLSAgICAgICAgdW5leHBl
Y3RlZD1Ob25lLAotICAgICAgICBsaW1pdD1Ob25lLCAqKmt3YXJncwotICAgICk6Ci0gICAgICAg
IEFzc2VydFJlcXVlc3QuaXNfdHlwZShbJ0dFVCddKQotICAgICAgICBBc3NlcnRSZXF1ZXN0LnF1
ZXJ5X2t3YXJnc19lbXB0eSgqKmt3YXJncykKLQotICAgICAgICB3aXRoIHNlbGYudXBsb2FkX2Nv
bnRyb2xsZXIudXBsb2FkX2NvbnRleHQ6Ci0gICAgICAgICAgICBzdWl0ZXNfYnlfY29uZmlndXJh
dGlvbiA9IHNlbGYudXBsb2FkX2NvbnRyb2xsZXIudXBsb2FkX2NvbnRleHQuZmluZF9zdWl0ZXMo
Y29uZmlndXJhdGlvbnM9Y29uZmlndXJhdGlvbnMsIHJlY2VudD1ib29sZWFuX3F1ZXJ5KCpyZWNl
bnQpWzBdIGlmIHJlY2VudCBlbHNlIFRydWUpCi0gICAgICAgICAgICBjYW5kaWRhdGVfc3VpdGVz
ID0gc2V0KCkKLSAgICAgICAgICAgIGZvciBzdWl0ZXNfZm9yX2NvbmZpZyBpbiBzdWl0ZXNfYnlf
Y29uZmlndXJhdGlvbi52YWx1ZXMoKToKLSAgICAgICAgICAgICAgICBmb3IgcyBpbiBzdWl0ZXNf
Zm9yX2NvbmZpZzoKLSAgICAgICAgICAgICAgICAgICAgY2FuZGlkYXRlX3N1aXRlcy5hZGQocykK
LSAgICAgICAgICAgIHJldHVybiBzb3J0ZWQoW3MgZm9yIHMgaW4gY2FuZGlkYXRlX3N1aXRlcyBp
ZiBub3Qgc3VpdGUgb3IgcyBpbiBzdWl0ZV0pCi0KLSAgICBAU2l0ZU1lbnUucmVuZGVyX3dpdGhf
c2l0ZV9tZW51KCkKLSAgICBkZWYgaW52ZXN0aWdhdGUoc2VsZiwgKiprd2FyZ3MpOgotICAgICAg
ICByZXR1cm4gc2VsZi5lbnZpcm9ubWVudC5nZXRfdGVtcGxhdGUoJ2ludmVzdGlnYXRlLmh0bWwn
KS5yZW5kZXIoCi0gICAgICAgICAgICB0aXRsZT1zZWxmLnNpdGVfbWVudS50aXRsZSwKLSAgICAg
ICAgICAgIHN1aXRlcz1qc29uLmR1bXBzKHNlbGYuX3N1aXRlc19mb3JfaW52ZXN0aWdhdGlvbigp
KSwKLSAgICAgICAgICAgICoqa3dhcmdzKQotCi0gICAgQHF1ZXJ5X2FzX2t3YXJncygpCi0gICAg
QHV1aWRfcmFuZ2VfZm9yX3F1ZXJ5KCkKLSAgICBAbGltaXRfZm9yX3F1ZXJ5KERFRkFVTFRfTElN
SVQpCi0gICAgQGNvbmZpZ3VyYXRpb25fZm9yX3F1ZXJ5KCkKLSAgICBAdGltZV9yYW5nZV9mb3Jf
cXVlcnkoKQotICAgIGRlZiBfc3VpdGVzX2Zvcl9zZWFyY2goCi0gICAgICAgIHNlbGYsIHN1aXRl
PU5vbmUsIGNvbmZpZ3VyYXRpb25zPU5vbmUsIHJlY2VudD1Ob25lLAotICAgICAgICBicmFuY2g9
Tm9uZSwgYmVnaW49Tm9uZSwgZW5kPU5vbmUsCi0gICAgICAgIGJlZ2luX3F1ZXJ5X3RpbWU9Tm9u
ZSwgZW5kX3F1ZXJ5X3RpbWU9Tm9uZSwKLSAgICAgICAgdGVzdD1Ob25lLCBsaW1pdD1Ob25lLCAq
Kmt3YXJncwotICAgICk6Ci0gICAgICAgIEFzc2VydFJlcXVlc3QuaXNfdHlwZShbJ0dFVCddKQot
ICAgICAgICBBc3NlcnRSZXF1ZXN0LnF1ZXJ5X2t3YXJnc19lbXB0eSgqKmt3YXJncykKLQotICAg
ICAgICBpZiB0ZXN0IGFuZCAobm90IHN1aXRlIG9yIGxlbihzdWl0ZSkgIT0gbGVuKHRlc3QpKToK
LSAgICAgICAgICAgIGFib3J0KDQwMCwgZGVzY3JpcHRpb249J0VhY2ggdGVzdCBtdXN0IGJlIHBh
aXJlZCB3aXRoIGEgc3VpdGUnKQotCi0gICAgICAgIHdpdGggc2VsZi51cGxvYWRfY29udHJvbGxl
ci51cGxvYWRfY29udGV4dDoKLSAgICAgICAgICAgIHN1aXRlc19ieV9jb25maWd1cmF0aW9uID0g
c2VsZi51cGxvYWRfY29udHJvbGxlci51cGxvYWRfY29udGV4dC5maW5kX3N1aXRlcyhjb25maWd1
cmF0aW9ucz1jb25maWd1cmF0aW9ucywgcmVjZW50PWJvb2xlYW5fcXVlcnkoKnJlY2VudClbMF0g
aWYgcmVjZW50IGVsc2UgVHJ1ZSkKLSAgICAgICAgICAgIGNhbmRpZGF0ZV9zdWl0ZXMgPSBzZXQo
KQotICAgICAgICAgICAgZm9yIHN1aXRlc19mb3JfY29uZmlnIGluIHN1aXRlc19ieV9jb25maWd1
cmF0aW9uLnZhbHVlcygpOgotICAgICAgICAgICAgICAgIGZvciBzIGluIHN1aXRlc19mb3JfY29u
ZmlnOgotICAgICAgICAgICAgICAgICAgICBjYW5kaWRhdGVfc3VpdGVzLmFkZChzKQotICAgICAg
ICAgICAgcmV0dXJuIHNvcnRlZChbcyBmb3IgcyBpbiBjYW5kaWRhdGVfc3VpdGVzIGlmIHRlc3Qg
b3Igbm90IHN1aXRlIG9yIHMgaW4gc3VpdGVdKQotCi0gICAgQFNpdGVNZW51LnJlbmRlcl93aXRo
X3NpdGVfbWVudSgpCi0gICAgZGVmIHNlYXJjaChzZWxmLCAqKmt3YXJncyk6Ci0gICAgICAgIHJl
dHVybiBzZWxmLmVudmlyb25tZW50LmdldF90ZW1wbGF0ZSgnc2VhcmNoLmh0bWwnKS5yZW5kZXIo
Ci0gICAgICAgICAgICB0aXRsZT1zZWxmLnNpdGVfbWVudS50aXRsZSwKLSAgICAgICAgICAgIHN1
aXRlcz1qc29uLmR1bXBzKHNlbGYuX3N1aXRlc19mb3Jfc2VhcmNoKCkpLAotICAgICAgICAgICAg
Kiprd2FyZ3MpCkluZGV4OiBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS92aWV3L3RlbXBs
YXRlcy9hcmNoaXZlX2xpc3QuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9yZXN1bHRzZGJweS9y
ZXN1bHRzZGJweS92aWV3L3RlbXBsYXRlcy9hcmNoaXZlX2xpc3QuaHRtbAkocmV2aXNpb24gMjY1
NTMxKQorKysgVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy90ZW1wbGF0ZXMvYXJj
aGl2ZV9saXN0Lmh0bWwJKG5vbmV4aXN0ZW50KQpAQCAtMSwxMTIgKzAsMCBAQAotPCEtLQotIENv
cHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0KLSBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSBhcmUgbWV0OgotIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0KLSBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gIkFTIElTIiBBTkQgQU5ZCi0gRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgotIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCi0gT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0tLT4KLQoteyUgZXh0
ZW5kcyAiYmFzZS5odG1sIiAlfQoteyUgYmxvY2sgaGVhZCAlfQotPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iYXNzZXRzL2Nzcy9jb21taXQuY3NzIj4KLQotPHNj
cmlwdCB0eXBlPSJtb2R1bGUiPgotaW1wb3J0IHtSRUYsIERPTX0gZnJvbSAnL2xpYnJhcnkvanMv
UmVmLmpzJzsKLQotZnVuY3Rpb24gY29sbGFwc2FibGVMaXN0Rm9yUGF0aHMocm9vdCwgZGlyZWN0
b3J5LCBwYXRocykKLXsKLSAgICBsZXQgaXNFeHBhbmRlZCA9IGZhbHNlOwotICAgIGxldCBsaXN0
ID0gbnVsbDsKLSAgICBjb25zdCBleHBhbmRlciA9IFJFRi5jcmVhdGVSZWYoewotICAgICAgICBv
bkVsZW1lbnRNb3VudDogKGVsZW1lbnQpID0+IHsKLSAgICAgICAgICAgIGVsZW1lbnQub25jbGlj
ayA9ICgpID0+IHsKLSAgICAgICAgICAgICAgICBpc0V4cGFuZGVkID0gIWlzRXhwYW5kZWQ7Ci0g
ICAgICAgICAgICAgICAgZWxlbWVudC5pbm5lckhUTUwgPSBpc0V4cGFuZGVkID8gJy0nIDogJysn
OwotICAgICAgICAgICAgICAgIGlmIChsaXN0KQotICAgICAgICAgICAgICAgICAgICBsaXN0LnN0
eWxlLmRpc3BsYXkgPSBpc0V4cGFuZGVkID8gJ2Jsb2NrJyA6ICdub25lJzsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotICAgIH0pOwotICAgIGNvbnN0IGxpc3RSZWYgPSBSRUYuY3JlYXRlUmVm
KHsKLSAgICAgICAgb25FbGVtZW50TW91bnQ6IChlbGVtZW50KSA9PiB7Ci0gICAgICAgICAgICBs
aXN0ID0gZWxlbWVudDsKLSAgICAgICAgfSwKLSAgICB9KTsKLQotICAgIGNvbnN0IHBhcmFtcyA9
IGRvY3VtZW50LlVSTC5zcGxpdCgnPycpWzFdOwotICAgIHJldHVybiBgPGRpdiBjbGFzcz0iaXRl
bSI+Ci0gICAgICAgICAgICA8YSBzdHlsZT0iY3Vyc29yOiBwb2ludGVyOyIgY2xhc3M9InRleHQg
bWVkaXVtIiByZWY9IiR7ZXhwYW5kZXJ9Ij4rPC9hPiB8IAotICAgICAgICAgICAgPGEgaHJlZj0i
L2FyY2hpdmUve3sgcGF0aCB9fSR7ZGlyZWN0b3J5fSR7cGFyYW1zID8gJz8nICsgcGFyYW1zIDog
Jyd9Ij4ke2RpcmVjdG9yeS5zbGljZShyb290Lmxlbmd0aCl9PC9hPgotICAgICAgICAgICAgPGRp
diBjbGFzcz0ibGlzdCIgcmVmPSIke2xpc3RSZWZ9IiBzdHlsZT0iZGlzcGxheTogbm9uZTsiPgot
ICAgICAgICAgICAgICAgICR7bGlzdENvbnRlbnRGb3JQYXRocyhkaXJlY3RvcnksIHBhdGhzKX0K
LSAgICAgICAgICAgIDwvZGl2PgotICAgICAgICA8L2Rpdj5gOwotfQotCi1mdW5jdGlvbiBsaXN0
Q29udGVudEZvclBhdGhzKHJvb3QsIHBhdGhzKSB7Ci0gICAgbGV0IGRpcmVjdG9yeSA9IG51bGw7
Ci0gICAgbGV0IGZpbGVzSW5EaXJlY3RvcnkgPSBbXTsKLSAgICBsZXQgcmVzdWx0ID0gcGF0aHMu
bWFwKChwYXRoKSA9PiB7Ci0gICAgICAgIGlmIChkaXJlY3RvcnkgJiYgcGF0aC5zdGFydHNXaXRo
KGRpcmVjdG9yeSkpIHsKLSAgICAgICAgICAgIGZpbGVzSW5EaXJlY3RvcnkucHVzaChwYXRoKTsK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBsZXQgcHJldmlvdXMgPSAn
JzsKLSAgICAgICAgaWYgKGRpcmVjdG9yeSkKLSAgICAgICAgICAgIHByZXZpb3VzID0gY29sbGFw
c2FibGVMaXN0Rm9yUGF0aHMocm9vdCwgZGlyZWN0b3J5LCBmaWxlc0luRGlyZWN0b3J5KTsKLQot
ICAgICAgICBkaXJlY3RvcnkgPSBudWxsOwotICAgICAgICBmaWxlc0luRGlyZWN0b3J5ID0gW107
Ci0gICAgICAgIGlmIChwYXRoW3BhdGgubGVuZ3RoIC0gMV0gPT0gJy8nKSB7Ci0gICAgICAgICAg
ICBkaXJlY3RvcnkgPSBwYXRoOwotICAgICAgICAgICAgcmV0dXJuIHByZXZpb3VzOwotICAgICAg
ICB9Ci0gICAgICAgIGNvbnN0IHBhcmFtcyA9IGRvY3VtZW50LlVSTC5zcGxpdCgnPycpWzFdOwot
ICAgICAgICByZXR1cm4gYCR7cHJldmlvdXN9Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJpdGVt
Ij4KLSAgICAgICAgICAgICAgICA8YSBocmVmPSIvYXJjaGl2ZS97eyBwYXRoIH19JHtwYXRofSR7
cGFyYW1zID8gJz8nICsgcGFyYW1zIDogJyd9Ij4ke3BhdGguc2xpY2Uocm9vdC5sZW5ndGgpfTwv
YT4KLSAgICAgICAgICAgIDwvZGl2PmA7Ci0gICAgfSkuam9pbignJyk7Ci0KLSAgICBpZiAoZGly
ZWN0b3J5KQotICAgICAgICByZXR1cm4gcmVzdWx0ICsgY29sbGFwc2FibGVMaXN0Rm9yUGF0aHMo
cm9vdCwgZGlyZWN0b3J5LCBmaWxlc0luRGlyZWN0b3J5KTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotCi1jb25zdCBwYXRocyA9IFt7JSBmb3IgdmFsIGluIHZhbHVlcyAlfSd7eyB2YWwgfX0nLCB7
JSBlbmRmb3IgJX1dOwotRE9NLmluamVjdChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGF0aHMn
KSwgbGlzdENvbnRlbnRGb3JQYXRocygnJywgcGF0aHMpKTsKLQotPC9zY3JpcHQ+Ci0KLXslIGVu
ZGJsb2NrICV9Ci17JSBibG9jayBjb250ZW50ICV9Ci08ZGl2IGNsYXNzPSJjb250ZW50Ij4KLSAg
ICA8ZGl2IGNsYXNzPSJ0aXRsZSI+Ci0gICAgICAgIHslIGlmIHBhdGggIT0gJycgYW5kIHBhdGgu
c3BsaXQoJy8nKVs6LTJdJX0KLSAgICAgICAgICAgICA8YSBocmVmPSIvYXJjaGl2ZS97eyAnLycu
am9pbihwYXRoLnNwbGl0KCcvJylbOi0yXSkgfX0ve3sgcXVlcnkgfX0iPiZsdDwvYT4gCi0gICAg
ICAgIHslIGVsaWYgcGF0aCAhPSAnJyAlfQotICAgICAgICAgICAgPGEgaHJlZj0iL2FyY2hpdmV7
eyBxdWVyeSB9fSI+Jmx0PC9hPgotICAgICAgICB7JSBlbmRpZiAlfQotICAgICAgICAve3sgcGF0
aCB9fQotICAgIDwvZGl2PgotICAgIDxkaXYgY2xhc3M9Imxpc3QiIGlkPSJwYXRocyI+Ci0gICAg
PC9kaXY+Ci08L2Rpdj4KLXslIGVuZGJsb2NrICV9CkluZGV4OiBUb29scy9yZXN1bHRzZGJweS9y
ZXN1bHRzZGJweS92aWV3L3RlbXBsYXRlcy9iYXNlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
cmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy90ZW1wbGF0ZXMvYmFzZS5odG1sCShyZXZpc2lv
biAyNjU1MzEpCisrKyBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS92aWV3L3RlbXBsYXRl
cy9iYXNlLmh0bWwJKG5vbmV4aXN0ZW50KQpAQCAtMSw4MiArMCwwIEBACi08IS0tCi0gQ29weXJp
Z2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLQotIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotIGFyZSBtZXQ6Ci0gMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLQotIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiAiQVMgSVMiIEFORCBBTlkKLSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCi0gQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKLSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLS0+Ci0KLTwhRE9DVFlQRSBo
dG1sPgotPGh0bWw+Ci08aGVhZD4KLTx0aXRsZT57e3RpdGxlfX08L3RpdGxlPgotPG1ldGEgY29u
dGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEsIHZpZXdwb3J0LWZpdD1j
b3ZlciIgbmFtZT0idmlld3BvcnQiPgotPG1ldGEgY2hhcnNldD0iVVRGLTgiPgotPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iL2xpYnJhcnkvY3NzL3dlYmtpdC5j
c3MiPgoteyUgYmxvY2sgaGVhZCAlfXslIGVuZGJsb2NrICV9Ci08L2hlYWQ+Ci08Ym9keT4KLTxk
aXYgY2xhc3M9ImhlYWRlciBmaXhlZCI+Ci0gICAgPGRpdiBjbGFzcz0idGl0bGUiPgotICAgICAg
ICA8ZGl2IGNsYXNzPSJ0ZXh0IGxhcmdlIGJsb2NrIiBzdHlsZT0id2lkdGg6IGNhbGMoMTAwJSAt
IDQ0cHgpOyBvdmVyZmxvdzogaGlkZGVuOyB3aGl0ZS1zcGFjZTogbm93cmFwOyB0ZXh0LW92ZXJm
bG93OiBlbGxpcHNpczsiPgotICAgICAgICAgICAge3tzaXRlX3RpdGxlfX0KLSAgICAgICAgPC9k
aXY+Ci0gICAgICAgIDxidXR0b24gc3R5bGU9IndpZHRoOiA0NHB4IiBjbGFzcz0iYnV0dG9uIG1v
YmlsZS1zaWRlYmFyLWNvbnRyb2wiPuKYsDwvYnV0dG9uPgotICAgIDwvZGl2PgotICAgIDxkaXYg
Y2xhc3M9ImFjdGlvbnMiPgotICAgICAgICA8ZGl2IGNsYXNzPSJsaXN0IiBpZD0ic2l0ZS1tZW51
Ij48L2Rpdj4KLSAgICA8L2Rpdj4KLTwvZGl2PgoteyUgYmxvY2sgY29udGVudCAlfXslIGVuZGJs
b2NrICV9Ci08c2NyaXB0IHR5cGU9Im1vZHVsZSI+Ci0gICAgaW1wb3J0IHtxdWVyeVRvUGFyYW1z
LCBwYXJhbXNUb1F1ZXJ5fSBmcm9tICcvYXNzZXRzL2pzL2NvbW1vbi5qcyc7Ci0gICAgaW1wb3J0
IHtET00sIFJFRn0gZnJvbSAnL2xpYnJhcnkvanMvUmVmLmpzJzsKLSAgICBpbXBvcnQge2Rpc2Fi
bGVCYWNrR2VzdHVyZX0gZnJvbSAnL2xpYnJhcnkvanMvVXRpbHMuanMnOwotCi0gICAgZGlzYWJs
ZUJhY2tHZXN0dXJlKCk7Ci0KLSAgICBET00uaW5qZWN0KAotICAgICAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnc2l0ZS1tZW51JyksCi0gICAgICAgIGB7JSBmb3IgbmFtZSwgdXJsX2luZm8g
aW4gc2l0ZV9tZW51Lml0ZW1zKCkgJX0KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9Iml0ZW0iPgot
ICAgICAgICAgICAgICAgIDxhIHN0eWxlPSJjdXJzb3I6IHBvaW50ZXIiIHJlZj0iJHtSRUYuY3Jl
YXRlUmVmKHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG9uRWxlbWVudE1vdW50OiBlbGVtZW50
ID0+IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50Lm9uY2xpY2sgPSAoKSA9
PiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRQYXJhbXMg
PSBxdWVyeVRvUGFyYW1zKGRvY3VtZW50LlVSTC5zcGxpdCgnPycpWzFdKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbGV0IHJldGFpbmVkUGFyYW1zID0ge307Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHt7IHVybF9pbmZvWydwYXJhbWV0ZXJzJ118c2FmZSB9fS5m
b3JFYWNoKChwYXJhbWV0ZXIpID0+IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChjdXJyZW50UGFyYW1zLmhhc093blByb3BlcnR5KHBhcmFtZXRlcikpCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0YWluZWRQYXJhbXNbcGFyYW1ldGVy
XSA9IGN1cnJlbnRQYXJhbXNbcGFyYW1ldGVyXTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBkZXN0aW5hdGlv
biA9ICJ7eyB1cmxfaW5mb1sndXJsJ10oKSB9fSI7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChPYmplY3Qua2V5cyhyZXRhaW5lZFBhcmFtcykubGVuZ3RoKQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdGluYXRpb24gPSBgJHtkZXN0aW5hdGlvbn0/
JHtwYXJhbXNUb1F1ZXJ5KHJldGFpbmVkUGFyYW1zKX1gOwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uYXNzaWduKGRlc3RpbmF0aW9uKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9OwotICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAg
ICAgICAgICAgICAgICAgfSl9Ij4KLSAgICAgICAgICAgICAgICAgICAge3sgbmFtZSB9fQotICAg
ICAgICAgICAgICAgIDwvYT4KLSAgICAgICAgICAgIDwvZGl2PgotICAgICAgICB7JSBlbmRmb3Ig
JX1gLAotICAgICk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IFRvb2xzL3Jl
c3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvdGVtcGxhdGVzL2NvbW1pdC5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvdGVtcGxhdGVzL2NvbW1p
dC5odG1sCShyZXZpc2lvbiAyNjU1MzEpCisrKyBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJw
eS92aWV3L3RlbXBsYXRlcy9jb21taXQuaHRtbAkobm9uZXhpc3RlbnQpCkBAIC0xLDg0ICswLDAg
QEAKLTwhLS0KLSBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotCi0gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gYXJlIG1ldDoKLSAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotCi0g
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuICJBUyBJUyIgQU5EIEFOWQot
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCi0gSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCi0gUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQotIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAot
LS0+Ci0KLXslIGV4dGVuZHMgImJhc2UuaHRtbCIgJX0KLXslIGJsb2NrIGhlYWQgJX0KLTxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImFzc2V0cy9jc3MvY29tbWl0
LmNzcyI+Ci17JSBlbmRibG9jayAlfQoteyUgYmxvY2sgY29udGVudCAlfQotPGRpdiBjbGFzcz0i
Y29udGVudCByb3ciPgotICAgIDxkaXYgY2xhc3M9ImNvbC0xMiI+Ci0gICAgICAgIDxkaXYgY2xh
c3M9InJvdyI+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtNCIgc3R5bGU9InRleHQtYWxp
Z246bGVmdCI+Ci0gICAgICAgICAgICAgICAgPGEgY2xhc3M9ImJ1dHRvbiIgaHJlZj0iL2NvbW1p
dC9wcmV2aW91cz9yZXBvc2l0b3J5X2lkPXt7IGNvbW1pdC5yZXBvc2l0b3J5X2lkIH19JmJyYW5j
aD17eyBjb21taXQuYnJhbmNoIH19JmlkPXt7IGNvbW1pdC5pZCB9fSI+4peAIFByZXZpb3VzPC9h
PgotICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtNCIgc3R5
bGU9InRleHQtYWxpZ246Y2VudGVyIj4KLSAgICAgICAgICAgICAgICA8YSBjbGFzcz0iYnV0dG9u
IiBocmVmPSIvY29tbWl0L2luZm8/cmVwb3NpdG9yeV9pZD17eyBjb21taXQucmVwb3NpdG9yeV9p
ZCB9fSZicmFuY2g9e3sgY29tbWl0LmJyYW5jaCB9fSZpZD17eyBjb21taXQuaWQgfX0iPnt7IGNv
bW1pdC5pZCB9fTwvYT4KLSAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFz
cz0iY29sLTQiIHN0eWxlPSJ0ZXh0LWFsaWduOnJpZ2h0Ij4KLSAgICAgICAgICAgICAgICA8YSBj
bGFzcz0iYnV0dG9uIiBocmVmPSIvY29tbWl0L25leHQ/cmVwb3NpdG9yeV9pZD17eyBjb21taXQu
cmVwb3NpdG9yeV9pZCB9fSZicmFuY2g9e3sgY29tbWl0LmJyYW5jaCB9fSZpZD17eyBjb21taXQu
aWQgfX0iPk5leHQg4pa2PC9hPgotICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgIDwvZGl2Pgot
ICAgICAgICA8ZGl2IGlkPSJjb21taXRUYWJsZSI+PC9kaXY+Ci0gICAgPC9kaXY+Ci08L2Rpdj4K
LQotPHNjcmlwdCB0eXBlPSJtb2R1bGUiPgotaW1wb3J0IHtDb21taXRUYWJsZX0gZnJvbSAnL2Fz
c2V0cy9qcy9jb21taXQuanMnOwotCi1mdW5jdGlvbiB1bmVzY2FwZUppbmphVGV4dCh0ZXh0KSB7
Ci0gICAgcmV0dXJuIHRleHQucmVwbGFjZSgvJihbXjtdKyk7L2csIGZ1bmN0aW9uKG1hdGNoLCBl
bmNvZGVkKSB7Ci0gICAgICAgIHN3aXRjaCAoZW5jb2RlZCkgewotICAgICAgICBjYXNlICdhbXAn
OgotICAgICAgICAgICAgcmV0dXJuICcmJzsKLSAgICAgICAgY2FzZSAnZ3QnOgotICAgICAgICAg
ICAgcmV0dXJuICc+JzsKLSAgICAgICAgY2FzZSAnbHQnOgotICAgICAgICAgICAgcmV0dXJuICc8
JzsKLSAgICAgICAgY2FzZSAncXVvdCc6Ci0gICAgICAgICAgICByZXR1cm4gJyInOwotICAgICAg
ICBkZWZhdWx0OgotICAgICAgICAgICAgaWYgKGVuY29kZWRbMF0gIT0gJyMnKQotICAgICAgICAg
ICAgICAgIHJldHVybiBlbmNvZGVkOwotICAgICAgICAgICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hh
ckNvZGUoZW5jb2RlZC5zdWJzdHIoMSkpOwotICAgICAgICB9Ci0gICAgfSk7Ci19Ci0KLWxldCBj
b21taXRzID0gWwoteyUgZm9yIGNvbW1pdCBpbiBjb21taXRzICV9ICAgIHsKLSAgICB7JSBmb3Ig
a2V5LCB2YWx1ZSBpbiBjb21taXQuaXRlbXMoKSAlfQotICAgICAgICB7eyBrZXkgfX06Ci0gICAg
ICAgIHslIGlmICdzdHInIGluIHZhbHVlLl9fY2xhc3NfXy5fX25hbWVfXyAlfQotICAgICAgICAg
ICAgdW5lc2NhcGVKaW5qYVRleHQoJ3t7IHZhbHVlIHwgcmVwbGFjZSgiXFwiLCAiXFxcXCIpIHwg
cmVwbGFjZSgiXG4iLCAiXFxuIikgfX0nKQotICAgICAgICB7JSBlbHNlICV9Ci0gICAgICAgICAg
ICB7eyB2YWx1ZSB9fQotICAgICAgICB7JSBlbmRpZiAlfSwKLSAgICB7JSBlbmRmb3IgJX19LAot
eyUgZW5kZm9yICV9XTsKLQotZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbW1pdFRhYmxlJyku
aW5uZXJIVE1MID0gQ29tbWl0VGFibGUoY29tbWl0cywge3sgcmVwb3NpdG9yeXxzYWZlIH19KTsK
LTwvc2NyaXB0PgoteyUgZW5kYmxvY2sgJX0KSW5kZXg6IFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3Vs
dHNkYnB5L3ZpZXcvdGVtcGxhdGVzL2NvbW1pdHMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9y
ZXN1bHRzZGJweS9yZXN1bHRzZGJweS92aWV3L3RlbXBsYXRlcy9jb21taXRzLmh0bWwJKHJldmlz
aW9uIDI2NTUzMSkKKysrIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvdGVtcGxh
dGVzL2NvbW1pdHMuaHRtbAkobm9uZXhpc3RlbnQpCkBAIC0xLDEyMCArMCwwIEBACi08IS0tCi0g
Q29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLQotIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotIGFyZSBtZXQ6Ci0gMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLQotIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiAiQVMgSVMiIEFORCBBTlkKLSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQot
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCi0gQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKLSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLS0tPgotCi17JSBl
eHRlbmRzICJiYXNlLmh0bWwiICV9Ci17JSBibG9jayBoZWFkICV9Ci08bGluayByZWw9InN0eWxl
c2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJhc3NldHMvY3NzL2NvbW1pdC5jc3MiPgotCi08
c2NyaXB0IHR5cGU9Im1vZHVsZSI+Ci1pbXBvcnQge1JFRiwgRE9NfSBmcm9tICcvbGlicmFyeS9q
cy9SZWYuanMnOwotaW1wb3J0IHtFcnJvckRpc3BsYXl9IGZyb20gJy9hc3NldHMvanMvY29tbW9u
LmpzJzsKLWltcG9ydCB7Q29tbWl0VGFibGV9IGZyb20gJy9hc3NldHMvanMvY29tbWl0LmpzJzsK
LWltcG9ydCB7RHJhd2VyLCBCcmFuY2hTZWxlY3RvciwgTGltaXRTbGlkZXJ9IGZyb20gJy9hc3Nl
dHMvanMvZHJhd2VyLmpzJzsKLQotdmFyIG9uZUxpbmUgPSB0cnVlOwotCi1jbGFzcyBUYWJsZSB7
Ci0gICAgY29uc3RydWN0b3IoKSB7Ci0gICAgICAgIHRoaXMucmVmID0gUkVGLmNyZWF0ZVJlZih7
Ci0gICAgICAgICAgICBzdGF0ZTogbnVsbCwKLSAgICAgICAgICAgIG9uU3RhdGVVcGRhdGU6IChl
bGVtZW50LCBzdGF0ZSkgPT4gewotICAgICAgICAgICAgICAgIGlmICghc3RhdGUpCi0gICAgICAg
ICAgICAgICAgICAgIGVsZW1lbnQuaW5uZXJIVE1MID0gdGhpcy5wbGFjZWhvbGRlcigpOwotICAg
ICAgICAgICAgICAgIGVsc2UgaWYgKHN0YXRlLmVycm9yKQotICAgICAgICAgICAgICAgICAgICBl
bGVtZW50LmlubmVySFRNTCA9IEVycm9yRGlzcGxheShzdGF0ZSk7Ci0gICAgICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmlubmVySFRNTCA9IENvbW1pdFRhYmxl
KHN0YXRlLCBbXSwgb25lTGluZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0pOwotICAgICAg
ICB0aGlzLmxhdGVzdERpc3BhdGNoID0gMDsKLQotICAgICAgICB0aGlzLnJlbG9hZCgpOwotICAg
IH0KLSAgICBwbGFjZWhvbGRlcigpIHsKLSAgICAgICAgcmV0dXJuIGA8ZGl2IGNsYXNzPSJwbGFj
ZWhvbGRlciBkaW1tZXIiPgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxvYWRlciI+Ci0g
ICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNwaW5uZXIiPjwvZGl2PgotICAgICAgICAg
ICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPC9kaXY+YDsKLSAgICB9Ci0gICAgdG9TdHJpbmco
KSB7Ci0gICAgICAgIHJldHVybiBgPGRpdiByZWY9IiR7dGhpcy5yZWZ9Ij48L2Rpdj5gOwotICAg
IH0KLSAgICByZWxvYWQoKSB7Ci0gICAgICAgIHZhciBxdWVyeSA9IGRvY3VtZW50LlVSTC5zcGxp
dCgnPycpWzFdCi0gICAgICAgIHZhciBteURpc3BhdGNoID0gRGF0ZS5ub3coKTsKLSAgICAgICAg
dGhpcy5sYXRlc3REaXNwYXRjaCA9IE1hdGgubWF4KHRoaXMubGF0ZXN0RGlzcGF0Y2gsIG15RGlz
cGF0Y2gpOwotICAgICAgICB0aGlzLnJlZi5zZXRTdGF0ZShudWxsKTsKLQotICAgICAgICBmZXRj
aChxdWVyeSA/ICdhcGkvY29tbWl0cz8nICsgcXVlcnkgOiAnYXBpL2NvbW1pdHMnKS50aGVuKHJl
c3BvbnNlID0+IHsKLSAgICAgICAgICAgIHJlc3BvbnNlLmpzb24oKS50aGVuKGpzb24gPT4gewot
ICAgICAgICAgICAgICAgIGlmIChteURpc3BhdGNoID09IHRoaXMubGF0ZXN0RGlzcGF0Y2gpCi0g
ICAgICAgICAgICAgICAgICAgIHRoaXMucmVmLnNldFN0YXRlKGpzb24pOwotICAgICAgICAgICAg
fSk7Ci0gICAgICAgIH0pLmNhdGNoKGVycm9yID0+IHsKLSAgICAgICAgICAgIGlmIChteURpc3Bh
dGNoID09IHRoaXMubGF0ZXN0RGlzcGF0Y2gpCi0gICAgICAgICAgICAgICAgdGhpcy5yZWYuc2V0
U3RhdGUoe2Vycm9yOiAiQ29ubmVjdGlvbiBFcnJvciIsIGRlc2NyaXB0aW9uOiBlcnJvcn0pOwot
ICAgICAgICB9KTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIE9uZUxpbmVTd2l0Y2goKSB7Ci0gICAg
Y29uc3Qgc3dpdGNoUmVmID0gUkVGLmNyZWF0ZVJlZih7Ci0gICAgICAgIG9uRWxlbWVudE1vdW50
OiAoZWxlbWVudCkgPT4gewotICAgICAgICAgICAgZWxlbWVudC5vbmNoYW5nZSA9ICgpID0+IHsK
LSAgICAgICAgICAgICAgICBvbmVMaW5lID0gZWxlbWVudC5jaGVja2VkOwotICAgICAgICAgICAg
ICAgIHRhYmxlLnJlbG9hZCgpOwotICAgICAgICAgICAgfQotICAgICAgICB9LAotICAgIH0pOwot
ICAgIHJldHVybiBgPGRpdiBjbGFzcz0iaW5wdXQiPgotICAgICAgICAgICAgPGxhYmVsIHN0eWxl
PSJjb2xvcjp2YXIoLS1pbnZlcnNlQ29sb3IpIj5PbmUtbGluZTo8L2xhYmVsPgotICAgICAgICAg
ICAgPGxhYmVsIGNsYXNzPSJzd2l0Y2giPgotICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJj
aGVja2JveCIgcmVmPSIke3N3aXRjaFJlZn0iIGNoZWNrZWQ9JHtvbmVMaW5lfT4KLSAgICAgICAg
ICAgICAgICA8c3BhbiBjbGFzcz0ic2xpZGVyIj48L3NwYW4+Ci0gICAgICAgICAgICA8L2xhYmVs
PgotICAgICAgICA8L2Rpdj5gOwotfQotCi12YXIgdGFibGUgPSBuZXcgVGFibGUoKTsKLURPTS5p
bmplY3QoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FwcCcpLCBgJHtEcmF3ZXIoWwotICAgIExp
bWl0U2xpZGVyKCgpID0+IHt0YWJsZS5yZWxvYWQoKX0sIDEwMDAwLCAxMDAwKSwKLSAgICBPbmVM
aW5lU3dpdGNoKCksCi0gICAgQnJhbmNoU2VsZWN0b3IoKCkgPT4ge3RhYmxlLnJlbG9hZCgpfSks
Ci1dKX0KLTxkaXYgY2xhc3M9Im1haW4gcmlnaHQtc2lkZWJhciB1bmRlci10b3BiYXItd2l0aC1h
Y3Rpb25zIj4KLSAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4ke3RhYmxlfTwvZGl2PgotPC9kaXY+
YCk7Ci0KLTwvc2NyaXB0PgotCi17JSBlbmRibG9jayAlfQoteyUgYmxvY2sgY29udGVudCAlfQot
Ci08ZGl2IGlkPSJhcHAiPgotPC9kaXY+Ci0KLQoteyUgZW5kYmxvY2sgJX0KSW5kZXg6IFRvb2xz
L3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvdGVtcGxhdGVzL2RvY3VtZW50YXRpb24uaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS92aWV3L3RlbXBs
YXRlcy9kb2N1bWVudGF0aW9uLmh0bWwJKHJldmlzaW9uIDI2NTUzMSkKKysrIFRvb2xzL3Jlc3Vs
dHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvdGVtcGxhdGVzL2RvY3VtZW50YXRpb24uaHRtbAkobm9u
ZXhpc3RlbnQpCkBAIC0xLDYwMyArMCwwIEBACi08IS0tCi0gQ29weXJpZ2h0IChDKSAyMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLQotIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
IGFyZSBtZXQ6Ci0gMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLQotIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiAiQVMgSVMiIEFORCBBTlkKLSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCi0gRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLS0tPgoteyUgZXh0ZW5kcyAiYmFzZS5odG1sIiAlfQot
eyUgYmxvY2sgaGVhZCAlfQotCi08c2NyaXB0IHR5cGU9Im1vZHVsZSI+Ci0KLWltcG9ydCB7RE9N
LCBSRUZ9IGZyb20gJy9saWJyYXJ5L2pzL1JlZi5qcyc7Ci1pbXBvcnQge0V4cGVjdGF0aW9uc30g
ZnJvbSAnL2Fzc2V0cy9qcy90aW1lbGluZS5qcyc7Ci0KLWZ1bmN0aW9uIGp1bXBJZFVuZGVySGVh
ZGVyKGlkKSB7Ci0gICAgcmV0dXJuIGA8ZGl2IHN0eWxlPSJwb3NpdGlvbjpyZWxhdGl2ZSI+Ci0g
ICAgICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOi02MHB4OyB3aWR0
aDowcHg7IiBpZD0iJHtpZC5yZXBsYWNlKC9ccy9nLCAnLScpfSI+PC9kaXY+Ci0gICAgICAgIDwv
ZGl2PmA7Ci19Ci1mdW5jdGlvbiBjb2RlQmxvY2soc3RyaW5nKSB7cmV0dXJuIGA8cHJlPjxjb2Rl
PiR7c3RyaW5nLnJlcGxhY2UoLzwvZywgIiZsdDsiKS5yZXBsYWNlKC8+L2csICImZ3Q7Iil9PC9j
b2RlPjwvcHJlPmA7fQotZnVuY3Rpb24gbG9jYWxMaW5rKGxpbmtQYXJ0cywgdmFsdWUpIHtyZXR1
cm4gYDxhIGhyZWY9IiMke2xpbmtQYXJ0cy5qb2luKCctJykucmVwbGFjZSgvXHMvZywgJy0nKX0i
PiR7dmFsdWV9PC9hPmA7fQotZnVuY3Rpb24gZXh0ZXJuYWxMaW5rKGxpbmssIHZhbHVlKSB7cmV0
dXJuIGA8YSBocmVmPSIke2xpbmt9IiB0YXJnZXQ9Il9ibGFuayI+JHt2YWx1ZX08L2E+YDt9Ci1m
dW5jdGlvbiBkb2N1bWVudEVuZHBvaW50KGVuZHBvaW50LCBhY3Rpb25zLCBxdWVyaWVzLCBkb2N1
bWVudGF0aW9uKSB7Ci0gICAgcmV0dXJuIGA8ZGl2IGNsYXNzPSJzZWN0aW9uIj4KLSAgICAgICAg
ICAgICR7anVtcElkVW5kZXJIZWFkZXIoYEFQSS0ke2VuZHBvaW50fWApfQotICAgICAgICAgICAg
PGRpdiBjbGFzcz0iaGVhZGVyIj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZSI+
JHtlbmRwb2ludH08L2Rpdj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY3Rpb25zIj4K
LSAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGlzdCI+Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAke2FjdGlvbnMubWFwKChhY3Rpb24pID0+IHtyZXR1cm4gYDxkaXYgY2xhc3M9Iml0
ZW0iPiR7YWN0aW9ufTwvZGl2PmA7fSkuam9pbignJyl9Ci0gICAgICAgICAgICAgICAgICAgIDwv
ZGl2PgotICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAg
ICAgICAke2RvY3VtZW50YXRpb24ubWFwKChpdGVtKSA9PiB7cmV0dXJuIGA8ZGl2IGNsYXNzPSJj
b250ZW50Ij4ke2l0ZW19PC9kaXY+YDt9KS5qb2luKCcnKX0KLSAgICAgICAgICAgIDxkaXYgY2xh
c3M9ImNvbnRlbnQiPgotICAgICAgICAgICAgICAgIFN1cHBvcnRlZCBQYXJhbWV0ZXJzCi0gICAg
ICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9ucyI+Ci0gICAgICAgICAgICAgICAgICAgICR7
cXVlcmllcy5tYXAoKHF1ZXJ5KSA9PiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
YDxkaXYgY2xhc3M9ImJhZGdlIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRp
diBjbGFzcz0idGV4dCBibG9jayI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA8YSBjbGFzcz0idGV4dCB0aW55IiBocmVmPSIjUXVlcnktUGFyYW1ldGVycy0ke3F1ZXJ5fSI+
JHtxdWVyeX08L2E+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PmA7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAvL3JldHVybiBgPGJ1dHRvbiBjbGFzcz0iYnV0dG9uIiBvbmNsaWNrPSJ3aW5kb3cubG9jYXRp
b24uaHJlZiA9ICcvZG9jdW1lbnRhdGlvbiNRdWVyeS1QYXJhbWV0ZXJzLSR7cXVlcnl9JzsiPiR7
cXVlcnl9PC9idXR0b24+YAotICAgICAgICAgICAgICAgICAgICB9KS5qb2luKCcnKX0KLSAgICAg
ICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDwvZGl2PgotICAgICAgICA8L2Rpdj5gOwot
fQotCi1jb25zdCBkb2N1bWVudGF0aW9uID0gewotICAgICdBUEknOiB7Ci0gICAgICAgICdDb21t
aXRzJzogWwotICAgICAgICAgICAgYENvbW1pdCBlbmRwb2ludHMgYWxsb3cgY29tbWl0cywgZnJv
bSBtdWx0aXBsZSByZXBvc2l0b3JpZXMsIHRvIGJlIHF1ZXJpZWQuIFRoZXNlIGNvbW1pdHMgYXJl
IHNvcnRlZCBieSAke2xvY2FsTGluayhbJ1F1ZXJ5IFBhcmFtZXRlcnMnLCAnVVVJRCddLCAnVVVJ
RCcpfSwgd2hpY2ggaXMgYSBjb21iaW5hdGlvbiBvZiB0aGUgY29tbWl0IHRpbWVzdGFtcCBhbmQg
dGhlIGNvbW1pdCBvcmRlci4gQ29tbWl0IG9yZGVyIGlzIGRlZmluZWQgYXMgYSBjb21taXQncyBv
cmRpbmcgd2l0aGluIGEgc3BlY2lmaWMgdGltZXN0YW1wLiBNb3N0IGNvbW1pdHMgaGF2ZSBhbiBv
cmRlciBvZiAnMCcsIHVubGVzcyB0aGV5IGFyZSBwYXJ0IG9mIGEgcGF0Y2ggc2VyaWVzIHdoaWNo
IHdhcyBsYW5kZWQgYXQgZXhhY3RseSB0aGUgc2FtZSB0aW1lc3RhbXAuICR7bG9jYWxMaW5rKFsn
UXVlcnkgUGFyYW1ldGVycycsICdVVUlEJ10sICdVVUlEJyl9J3MgYWxsb3cgY29tbWl0cyB0byBi
ZSB0cmFuc3BhcmVudGx5IHNvcnRlZCBldmVuIGlmIHRoZXkgYXJlIGluIGRpZmZlcmVudCByZXBv
c2l0b3JpZXMuIENvbW1pdHMgYXJlIHJlcHJlc2VudGVkIGFzIG9iamVjdHMgd2l0aGluIHRoZSBy
ZXN1bHRzIGRhdGFiYXNlLCBhbmQgYWxsIGVuZHBvaW50cyB3aGljaCByZXR1cm4gY29tbWl0cyB3
aWxsIHJlcHJlc2VudCBjb21taXRzIGxpa2UgdGhpczpgLAotICAgICAgICAgICAgY29kZUJsb2Nr
KCd7XG4nICsgCi0gICAgICAgICAgICAgICAgJyAgICAicmVwb3NpdG9yeV9pZCI6IDxzdHJpbmcg
cmVwcmVzZW50aW5nIHJlcG9zaXRvcnkgaWRlbnRpZmllcj4sXG4nICsKLSAgICAgICAgICAgICAg
ICAnICAgICJicmFuY2giOiA8YnJhbmNoIGNvbW1pdCBpcyByZWdpc3RlcmVkIG9uPixcbicgKwot
ICAgICAgICAgICAgICAgICcgICAgImlkIjogPGdpdCBoYXNoIG9yIHN2biByZXZpc2lvbj4sXG4n
ICsKLSAgICAgICAgICAgICAgICAnICAgICJ0aW1lc3RhbXAiOiA8aW50ZWdlciBVVEMgdGltZXN0
YW1wIHdoZW4gY29tbWl0IHdhcyBjb21taXR0ZWQ+LFxuJyArCi0gICAgICAgICAgICAgICAgJyAg
ICAib3JkZXIiOiA8b3JkZXIgb2YgY29tbWl0IHdpdGhpbiBwYXRjaCBzZXJpZXM+LFxuJyArCi0g
ICAgICAgICAgICAgICAgJyAgICAiY29tbWl0dGVyIjogPHBlcnNvbiB3aG8gY29tbWl0dGVkIHRo
ZSBjaGFuZ2U+LFxuJyArCi0gICAgICAgICAgICAgICAgJyAgICAibWVzc2FnZSI6IDxjb21taXQg
bWVzc2FnZSBvciBjaGFuZ2Vsb2cgYXNzb2NpYXRlZCB3aXRoIGNvbW1pdD5cbicgKwotICAgICAg
ICAgICAgICAgICd9JyksCi0gICAgICAgICAgICBkb2N1bWVudEVuZHBvaW50KAotICAgICAgICAg
ICAgICAgICcvYXBpL2NvbW1pdHMnLAotICAgICAgICAgICAgICAgIFsnR0VUJywgJ1BPU1QnXSwK
LSAgICAgICAgICAgICAgICBbJ0JyYW5jaCcsICdMaW1pdCcsICdSZXBvc2l0b3J5JywgJ1VVSUQn
XSwKLSAgICAgICAgICAgICAgICBbYEVuZHBvaW50IGZvciBmaW5kaW5nIGFuZCByZWdpc3Rlcmlu
ZyBjb21taXRzLiBUaGUgR0VUIGJlaGF2aW9yIGlzIGlkZW50aWNhbCB0byAke2xvY2FsTGluayhb
J0FQSScsICcvYXBpL2NvbW1pdHMvZmluZCddLCAnL2FwaS9jb21taXRzL2ZpbmQnKX0uIFRoZSBQ
T1NUIGJlaGF2aW9yIGlzIGlkZW50aWNhbCB0byAke2xvY2FsTGluayhbJ0FQSScsICcvY29tbWl0
cy9yZWdpc3RlciddLCAnL2NvbW1pdHMvcmVnaXN0ZXInKX0uYF0sCi0gICAgICAgICAgICApLAot
ICAgICAgICAgICAgZG9jdW1lbnRFbmRwb2ludCgKLSAgICAgICAgICAgICAgICAnL2FwaS9jb21t
aXRzL2ZpbmQnLAotICAgICAgICAgICAgICAgIFsnR0VUJ10sCi0gICAgICAgICAgICAgICAgWydC
cmFuY2gnLCAnTGltaXQnLCAnUmVwb3NpdG9yeScsICdVVUlEJ10sCi0gICAgICAgICAgICAgICAg
W2BSZXR1cm4gYSBsaXN0IG9mICR7bG9jYWxMaW5rKFsnQVBJJywgJ0NvbW1pdHMnXSwgJ2NvbW1p
dCBvYmplY3RzJyl9IHNhdGlzZnlpbmcgdGhlIHF1ZXJ5LiBUaGlzIGxpc3Qgd2lsbCBiZSBvcmRl
cmVkLCB3aXRoIHRoZSBvbGRlc3QgY29tbWl0IGZpcnN0IGFuZCB0aGUgbmV3ZXN0IGxhc3QuYF0s
Ci0gICAgICAgICAgICApLAotICAgICAgICAgICAgZG9jdW1lbnRFbmRwb2ludCgKLSAgICAgICAg
ICAgICAgICAnL2FwaS9jb21taXRzL3JlcG9zaXRvcmllcycsCi0gICAgICAgICAgICAgICAgWydH
RVQnXSwKLSAgICAgICAgICAgICAgICBbXSwKLSAgICAgICAgICAgICAgICBbCi0gICAgICAgICAg
ICAgICAgICAgIGBSZXR1cm4gYSBsaXN0IG9mIHJlcG9zaXRvcmllcyB0cmFja2VkIGJ5IHRoaXMg
aW5zdGFuY2UgdG8gdGhlIHJlc3VsdHMgZGF0YWJhc2UuIFRoZSBvdXRwdXQgaXMgb2YgdGhlIGZv
cm06YCwKLSAgICAgICAgICAgICAgICAgICAgY29kZUJsb2NrKCdbXG4nICsKLSAgICAgICAgICAg
ICAgICAgICAgJyAgICA8cmVwb3NpdG9yeS1pZCAoYSk+LFxuJyArCi0gICAgICAgICAgICAgICAg
ICAgICcgICAgPHJlcG9zaXRvcnktaWQgKGIpPlxuJyArCi0gICAgICAgICAgICAgICAgICAgICdd
JyksCi0gICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICksCi0gICAgICAgICAgICBkb2N1
bWVudEVuZHBvaW50KAotICAgICAgICAgICAgICAgICcvYXBpL2NvbW1pdHMvYnJhbmNoZXMnLAot
ICAgICAgICAgICAgICAgIFsnR0VUJ10sCi0gICAgICAgICAgICAgICAgWydMaW1pdCcsICdSZXBv
c2l0b3J5J10sCi0gICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICAgICBgUmV0dXJu
cyBhIGRpY3Rpb25hcnkgb2YgbGlzdHMgb2YgYnJhbmNoZXMgYXNzb2NpYXRlZCB3aXRoIGVhY2gg
cmVwb3NpdG9yeS4gVGhlIG91dHB1dCBpcyBvZiB0aGUgZm9ybTpgLAotICAgICAgICAgICAgICAg
ICAgICBjb2RlQmxvY2soJ3tcbicgKwotICAgICAgICAgICAgICAgICAgICAnICAgIDxyZXBvc2l0
b3J5LWlkIChhKT46IFsibWFzdGVyIiwgImJyYW5jaC1hIiwgImJyYW5jaC1iIl0sXG4nICsKLSAg
ICAgICAgICAgICAgICAgICAgJyAgICA8cmVwb3NpdG9yeS1pZCAoYik+OiBbInRydW5rIiwgImJy
YW5jaC1hIiwgImJyYW5jaC1jIl1cbicgKwotICAgICAgICAgICAgICAgICAgICAnfScpLAotICAg
ICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICApLAotICAgICAgICAgICAgZG9jdW1lbnRFbmRw
b2ludCgKLSAgICAgICAgICAgICAgICAnL2FwaS9jb21taXRzL3NpYmxpbmdzJywKLSAgICAgICAg
ICAgICAgICBbJ0dFVCddLAotICAgICAgICAgICAgICAgIFsnQnJhbmNoJywgJ1JlcG9zaXRvcnkn
LCAnVVVJRCddLAotICAgICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAgICAgYFdpdGgg
bXVsdGlwbGUgcmVwb3NpdG9yaWVzLCBldmVyeSBjb21taXQgaGFzIGEgbGVhc3QgMSBvdGhlciBj
b21taXQgd2hpY2ggd2FzIHRoZSB0aXAgb2YgdGhlIHRyZWUgb24gdGhlIG90aGVyIHJlcG9zaXRv
cnkgKG9yIHJlcG9zaXRvcmllcykgd2hpbGUgdGhlIHByaW1hcnkgY29tbWl0IHdhcyB0aGUgdGlw
IG9mIGl0J3MgcmVwb3NpdG9yeS4gV2UgcmVmZXIgdG8gdGhlc2UgY29tbWl0cyBhcyB0aGUgJ3Np
YmxpbmcnIGNvbW1pdHMuIEdpdmVuIGEgcXVlcnkgd2hpY2ggcmVmZXJzIHRvIGEgc2luZ2xlIGNv
bW1pdCwgdGhpcyBlbmRwb2ludCB3aWxsIHJldHVybiBhbGwgc2libGluZyBjb21taXRzIGFzc29j
aWF0ZWQgd2l0aCB0aGF0IGNvbW1pdC4gVGhlIHJlc3VsdCB3aWxsIGJlIGEgZGljdGlvbmFyeSBv
ZiBsaXN0cyBmb3JtYXRlZCBsaWtlIHRoaXM6YCwKLSAgICAgICAgICAgICAgICAgICAgY29kZUJs
b2NrKCd7XG4nICsgCi0gICAgICAgICAgICAgICAgICAgICcgICAgPHJlcG9zaXRvcnktaWQgKGEp
PjogWzxjb21taXQtYTI+LCA8Y29tbWl0LWExPl0sXG4nICsKLSAgICAgICAgICAgICAgICAgICAg
JyAgICA8cmVwb3NpdG9yeS1pZCAoYik+OiBbPGNvbW1pdC1iMj4sIDxjb21taXQtYjE+XVxuJyAr
Ci0gICAgICAgICAgICAgICAgICAgICd9JyksCi0gICAgICAgICAgICAgICAgICAgIGBXaGVyZSAm
bHRjb21taXQtKiZndCBhcmUgJHtsb2NhbExpbmsoWydBUEknLCAnQ29tbWl0cyddLCAnY29tbWl0
IG9iamVjdHMnKX0uIFRoZXNlIGxpc3RzIGFyZSBzb3J0ZWQsIHdpdGggdGhlIGZpcnN0IGNvbW1p
dCBpbiB0aGUgbGlzdCBiZWluZyB0aGUgbGF0ZXN0IGFuZCB0aGUgbGFzdCBjb21taXQgaW4gdGhl
IGxpc3QgYmVpbmcgdGhlIG9sZGVzdC4gTm90ZSB0aGF0IHdoaWxlIHRoZSBzaWJsaW5nIGVuZHBv
aW50IGFjY2VwdHMgdGhlIHN0YW5kYXJkICR7bG9jYWxMaW5rKFsnUXVlcnkgUGFyYW1ldGVycycs
ICdVVUlEJ10sICdVVUlEJyl9IHF1ZXJ5IHBhcmFtZXRlcnMsIHRoaXMgZW5kcG9pbnQgd2lsbCBy
ZXR1cm4gYW4gZXJyb3IgaWYgdGhlIHF1ZXJ5IHBhcmFtZXRlcnMgcmVmZXIgdG8gbXVsdGlwbGUg
Y29tbWl0c2AsCi0gICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICksCi0gICAgICAgICAg
ICBkb2N1bWVudEVuZHBvaW50KAotICAgICAgICAgICAgICAgICcvYXBpL2NvbW1pdHMvbmV4dCcs
Ci0gICAgICAgICAgICAgICAgWydHRVQnXSwKLSAgICAgICAgICAgICAgICBbJ0JyYW5jaCcsICdS
ZXBvc2l0b3J5JywgJ1VVSUQnXSwKLSAgICAgICAgICAgICAgICBbYFJldHVybiBhIGxpc3QgY29u
dGFpbmluZyBhIHNpbmdsZSAke2xvY2FsTGluayhbJ0FQSScsICdDb21taXRzJ10sICdjb21taXQg
b2JqZWN0cycpfSB3aGljaCBvY2N1cnJlZCBpbWllZGlhdGVseSBhZnRlciB0aGUgY29tbWl0IHNw
ZWNpZmllZCBieSB0aGUgcHJvdmlkZWQgcXVlcnkuIE5vdGUgdGhhdCB3aGlsZSB0aGUgbmV4dCBl
bmRwb2ludCBhY2NlcHRzIHRoZSBzdGFuZGFyZCAke2xvY2FsTGluayhbJ1F1ZXJ5IFBhcmFtZXRl
cnMnLCAnVVVJRCddLCAnVVVJRCcpfSBxdWVyeSBwYXJhbWV0ZXJzLCB0aGlzIGVuZHBvaW50IHdp
bGwgcmV0dXJuIGFuIGVycm9yIGlmIHRoZSBxdWVyeSBwYXJhbWV0ZXJzIHJlZmVyIHRvIG11bHRp
cGxlIGNvbW1pdHNgXSwKLSAgICAgICAgICAgICksCi0gICAgICAgICAgICBkb2N1bWVudEVuZHBv
aW50KAotICAgICAgICAgICAgICAgICcvYXBpL2NvbW1pdHMvcHJldmlvdXMnLAotICAgICAgICAg
ICAgICAgIFsnR0VUJ10sCi0gICAgICAgICAgICAgICAgWydCcmFuY2gnLCAnUmVwb3NpdG9yeScs
ICdVVUlEJ10sCi0gICAgICAgICAgICAgICAgW2BSZXR1cm4gYSBsaXN0IGNvbnRhaW5pbmcgYSBz
aW5nbGUgJHtsb2NhbExpbmsoWydBUEknLCAnQ29tbWl0cyddLCAnY29tbWl0IG9iamVjdHMnKX0g
d2hpY2ggb2NjdXJyZWQgaW1pZWRpYXRlbHkgYmVmb3JlIHRoZSBjb21taXQgc3BlY2lmaWVkIGJ5
IHRoZSBwcm92aWRlZCBxdWVyeS4gTm90ZSB0aGF0IHdoaWxlIHRoZSBwcmV2aW91cyBlbmRwb2lu
dCBhY2NlcHRzIHRoZSBzdGFuZGFyZCAke2xvY2FsTGluayhbJ1F1ZXJ5IFBhcmFtZXRlcnMnLCAn
VVVJRCddLCAnVVVJRCcpfSBxdWVyeSBwYXJhbWV0ZXJzLCB0aGlzIGVuZHBvaW50IHdpbGwgcmV0
dXJuIGFuIGVycm9yIGlmIHRoZSBxdWVyeSBwYXJhbWV0ZXJzIHJlZmVyIHRvIG11bHRpcGxlIGNv
bW1pdHNgXSwKLSAgICAgICAgICAgICksCi0gICAgICAgICAgICBkb2N1bWVudEVuZHBvaW50KAot
ICAgICAgICAgICAgICAgICcvYXBpL2NvbW1pdHMvcmVnaXN0ZXInLAotICAgICAgICAgICAgICAg
IFsnUE9TVCddLAotICAgICAgICAgICAgICAgIFsnQnJhbmNoJywgJ1JlcG9zaXRvcnknXSwKLSAg
ICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAgIGBSZWdpc3RlciBhIHNpbmdsZSBj
b21taXQgaW4gdGhlIHJlc3VsdHMgZGF0YWJhc2UuIFRoaXMgY29tbWl0IG11c3QgYmUgYXNzb2Np
YXRlZCB3aXRoIGEgcmVwb3NpdG9yeSBhbHJlYWR5IGtub3duIGJ5IHRoZSByZXN1bHRzIGRhdGFi
YXNlLiBXaGlsZSBhICR7bG9jYWxMaW5rKFsnQVBJJywgJ0NvbW1pdHMnXSwgJ2NvbW1pdCBvYmpl
Y3RzJyl9IGNhbiBiZSB1cGxvYWRlZCB0byB0aGlzIGVuZHBvaW50LCBpdCBpcyByZWNvbW1lbmRl
ZCB0aGF0IHRoZSByZWdpc3RyYXRpb24gb2YgY29tbWl0cyBvdXRzaWRlIG9mIGF1dG9tYXRpb24g
YWxsb3cgdGhlIHJlc3VsdHMgZGF0YWJhc2UgdG8gbGV2ZXJhZ2UgeW91ciBzb3VyY2UgY29udHJv
bCdzIEFQSS4gU3VjaCBhIHJlcXVlc3QgbG9va3MgbGlrZSB0aGlzYCwKLSAgICAgICAgICAgICAg
ICAgICAgY29kZUJsb2NrKCcvYXBpL2NvbW1pdHMvcmVnaXN0ZXI/cmVwb3NpdG9yeV9pZD13ZWJr
aXQmYnJhbmNoPXRydW5rJmlkPTI0NzM1NScpLAotICAgICAgICAgICAgICAgICAgICBgTW9yZSBn
ZW5lcmFsbHksIGFueSBkZWZpbml0aW9uIG9mIGEgY29tbWl0IHdoaWNoIGRlZmluZXMgdGhlIHJl
cG9zaXRvcnlfaWQsIGlkIGFuZCBicmFuY2ggcHJvdmlkZXMgZW5vdWdoIGluZm9ybWF0aW9uIGZv
ciB0aGUgcmVzdWx0cyBkYXRhYmFzZSB0byBxdWVyeSB5b3VyIHNvdXJjZSBjb250cm9sJ3MgQVBJ
IGFuZCByZXRyZWl2ZSBjb21taXQgaW5mb3JtYXRpb24uYCwKLSAgICAgICAgICAgICAgICBdLAot
ICAgICAgICAgICAgKSwKLSAgICAgICAgICAgIGRvY3VtZW50RW5kcG9pbnQoCi0gICAgICAgICAg
ICAgICAgJy9jb21taXRzL2luZm8nLAotICAgICAgICAgICAgICAgIFsnR0VUJ10sCi0gICAgICAg
ICAgICAgICAgWydCcmFuY2gnLCAnUmVwb3NpdG9yeScsICdVVUlEJ10sCi0gICAgICAgICAgICAg
ICAgW2BSZWRpcmVjdCB0byB0aGUgc291cmNlLWNvbnRyb2wgVVJMIHdpdGggbW9yZSBpbmZvcm1h
dGlvbiBhYm91dCB0aGUgc3BlY2lmaWVkIGNvbW1pdC4gTm90ZSB0aGF0IHdoaWxlIHRoZSBpbmZv
IGVuZHBvaW50IGFjY2VwdHMgdGhlIHN0YW5kYXJkICR7bG9jYWxMaW5rKFsnUXVlcnkgUGFyYW1l
dGVycycsICdVVUlEJ10sICdVVUlEJyl9IHF1ZXJ5IHBhcmFtZXRlcnMsIHRoaXMgZW5kcG9pbnQg
d2lsbCByZXR1cm4gYW4gZXJyb3IgaWYgdGhlIHF1ZXJ5IHBhcmFtZXRlcnMgcmVmZXIgdG8gbXVs
dGlwbGUgY29tbWl0c2BdLAotICAgICAgICAgICAgKSwKLSAgICAgICAgXSwgJ1VwbG9hZHMnOiBb
Ci0gICAgICAgICAgICBgVXBsb2FkcyBhcmUgdGhlIGlucHV0IHRvIHRoZSByZXN1bHRzIGRhdGFi
YXNlLiBVcGxvYWRzIGFyZSBzb3J0ZWQgYnkgJHtsb2NhbExpbmsoWydRdWVyeSBQYXJhbWV0ZXJz
JywgJ0NvbmZpZ3VyYXRpb24nXSwgJ2NvbmZpZ3VyYXRpb24nKX0gYW5kICR7bG9jYWxMaW5rKFsn
UXVlcnkgUGFyYW1ldGVycycsICdVVUlEJ10sICdVVUlEJyl9LiBVcGxvYWRzIGFyZSBqc29uIGRp
Y3Rpb25hcmllcyBvcmdhbml6ZWQgaW4gYSAke2V4dGVybmFsTGluaygnaHR0cHM6Ly9lbi53aWtp
cGVkaWEub3JnL3dpa2kvVHJpZScsICd0cmllJyl9LCB3aGljaCBsb29rcyBsaWtlIHRoaXM6YCwK
LSAgICAgICAgICAgIGNvZGVCbG9jaygne1xuJyArCi0gICAgICAgICAgICAgICAgICAgICcgICAg
ImNvbW1pdHMiOiBbPGNvbW1pdC1hPiwgPGNvbW1pdC1iPl0sXG4nICsKLSAgICAgICAgICAgICAg
ICAgICAgJyAgICAiY29uZmlndXJhdGlvbiI6IDxjb25maWd1cmF0aW9uLW9iamVjdD4sXG4nICsK
LSAgICAgICAgICAgICAgICAgICAgJyAgICAic3VpdGUiOiA8c3VpdGU+LFxuJyArCi0gICAgICAg
ICAgICAgICAgICAgICcgICAgInRpbWVzdGFtcCI6IDxVVEMgdGltZXN0YW1wIG9mIHRlc3QgcnVu
PixcbicgKwotICAgICAgICAgICAgICAgICAgICAnICAgICJ0ZXN0X3Jlc3VsdHMiOiB7XG4nICsK
LSAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgImRldGFpbHMiOiB7XG4nICsKLSAgICAgICAg
ICAgICAgICAgICAgJyAgICAgICAgICAgICJidWlsZC1udW1iZXIiOiAiNTI4NSIsXG4nICsKLSAg
ICAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgICJidWlsZGJvdC1tYXN0ZXIiOiAiYnVpbGQu
d2Via2l0Lm9yZyIsXG4nICsKLSAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgICJidWls
ZGJvdC13b3JrZXIiOiAiYm90MTk4IixcbicgKwotICAgICAgICAgICAgICAgICAgICAnICAgICAg
ICAgICAgImJ1aWxkZXItbmFtZSI6ICJBcHBsZS1Nb2phdmUtUmVsZWFzZS1XSzIiXG4nICsKLSAg
ICAgICAgICAgICAgICAgICAgJyAgICAgICAgfSxcbicgKwotICAgICAgICAgICAgICAgICAgICAn
ICAgICAgICAicnVuX3N0YXRzIjoge1xuJyArCi0gICAgICAgICAgICAgICAgICAgICcgICAgICAg
ICAgICAic3RhcnRfdGltZSI6IDxVVEMgdGltZXN0YW1wIHRlc3QgcnVuIHN0YXJ0ZWQ+LFxuJyAr
Ci0gICAgICAgICAgICAgICAgICAgICcgICAgICAgICAgICAiZW5kX3RpbWUiOiA8VVRDIHRpbWVz
dGFtcCB0ZXN0IHJ1biBlbmRlZD4sXG4nICsKLSAgICAgICAgICAgICAgICAgICAgJyAgICAgICAg
ICAgICJ0ZXN0c19za2lwcGVkIjogPE51bWJlciBvZiB0ZXN0cyBub3QgcnVuPlxuJyArCi0gICAg
ICAgICAgICAgICAgICAgICcgICAgICAgIH0sXG4nICsKLSAgICAgICAgICAgICAgICAgICAgJyAg
ICAgICAgInJlc3VsdHMiOiB7XG4nICsKLSAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgICAg
ICJkaXItYSI6IHtcbicgKwotICAgICAgICAgICAgICAgICAgICAnICAgICAgICAgICAgICAgICJk
aXItYiI6IHtcbicgKwotICAgICAgICAgICAgICAgICAgICAnICAgICAgICAgICAgICAgICAgICAi
dGVzdC0xIjogeyJhY3R1YWwiOiAiRkFJTCJ9LFxuJyArCi0gICAgICAgICAgICAgICAgICAgICcg
ICAgICAgICAgICAgICAgICAgICJ0ZXN0LTIiOiB7fVxuJyArCi0gICAgICAgICAgICAgICAgICAg
ICcgICAgICAgICAgICAgICAgfSxcbicgKwotICAgICAgICAgICAgICAgICAgICAnICAgICAgICAg
ICAgICAgICJ0ZXN0LTMiOiB7ImFjdHVhbCI6ICJUSU1FT1VUIiwgImV4cGVjdGVkIjogIlRJTUVP
VVQifVxuJyArCi0gICAgICAgICAgICAgICAgICAgICcgICAgICAgICAgICB9LFxuJyArCi0gICAg
ICAgICAgICAgICAgICAgICcgICAgICAgICAgICAiZGlyLWMiOiB7XG4nICsKLSAgICAgICAgICAg
ICAgICAgICAgJyAgICAgICAgICAgICAgICAidGVzdC00IjogeyJhY3R1YWwiOiAiQ1JBU0giLCAi
ZXhwZWN0ZWQiOiAiRkFJTCJ9XG4nICsKLSAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgICAg
IH1cbicgKwotICAgICAgICAgICAgICAgICAgICAnICAgICAgICB9XG4nICsKLSAgICAgICAgICAg
ICAgICAgICAgJyAgICB9XG4nICsKLSAgICAgICAgICAgICAgICAgICAgJ30nKSwKLSAgICAgICAg
ICAgIGB3aGVyZSAmbHRjb21taXQtYSZndCBhbmQgJmx0Y29tbWl0LWImZ3QgYXJlIGJvdGggJHts
b2NhbExpbmsoWydBUEknLCAnQ29tbWl0J10sICdjb21taXQgb2JqZWN0cycpfSBhbmQgJmx0Y29u
ZmlndXJhdGlvbi1vYmplY3QmZ3QgaXMgYSAke2xvY2FsTGluayhbJ1F1ZXJ5IFBhcmFtZXRlcnMn
LCAnQ29uZmlndXJhdGlvbiddLCAnY29uZmlndXJhdGlvbiBvYmplY3QnKX0uIFRoZSAnZGV0YWls
cycgZGljdGlvbmFyeSBjb250YWlucyBpbmZvcm1hdGlvbiBuZWVkZWQgdG8gbGluayBhIHNwZWNp
ZmljIHVwbG9hZCB0byBhIHJ1biBpbnNpZGUgYSAke2xvY2FsTGluayhbJ0FQSScsICdDSSBMaW5r
cyddLCAnY29udGludW91cyBpbnRlZ3JhdGlvbicpfSBzeXN0ZW0uIEFsbCB0ZXN0IHJlc3VsdCBp
bmZvcm1hdGlvbiBpcyBkZXJpdmVkIGRpcmVjdGx5IGZyb20gdXBsb2Fkcy5gLAotICAgICAgICAg
ICAgZG9jdW1lbnRFbmRwb2ludCgKLSAgICAgICAgICAgICAgICAnL2FwaS91cGxvYWQnLAotICAg
ICAgICAgICAgICAgIFsnR0VUJywgJ1BPU1QnXSwKLSAgICAgICAgICAgICAgICBbJ0JyYW5jaCcs
ICdDb25maWd1cmF0aW9uJywgJ0xpbWl0JywgJ1JlcG9zaXRvcnknLCAnU3VpdGUnLCAnVVVJRCdd
LAotICAgICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAgICAgYEdFVCByZXF1ZXN0cyBh
Z2FpbnN0IHRoZSB1cGxvYWQgZW5kcG9pbnQgd2lsbCByZXR1cm4gYSBsaXN0IG9mICR7bG9jYWxM
aW5rKFsnQVBJJywgJ1VwbG9hZHMnXSwgJ3VwbG9hZCBvYmplY3RzJyl9LiBUaGlzIGVuZHBvaW50
IGNhbiBiZSB1c2VkIHRvIHRyYW5zZmVyIHJlc3VsdHMgZnJvbSBvbmUgcmVzdWx0cyBkYXRhYmFz
ZSB0byBhbm90aGVyLCB3aGljaCBpcyBlc3BlY2lhbGx5IHVzZWZ1bCBmb3IgdGVzdGluZ2AsCi0g
ICAgICAgICAgICAgICAgICAgIGBQT1NUIHJlcXVlc3RzIGFnYWluc3QgdGhlIHVwbG9hZCBlbmRw
b2ludCB3aWxsIHRha2UgdGhlIHVwbG9hZGVkIGZpbGUsIGFuZCBwYXJzZSBpdCBhcyBqc29uLCBl
eHBlY3RpbmcgYW4gJHtsb2NhbExpbmsoWydBUEknLCAnVXBsb2FkcyddLCAndXBsb2FkIG9iamVj
dCcpfS4gVXBsb2FkaW5nIHJlc3VsdHMgd2lsbCByZWdpc3RlciB0aGUgY29tbWl0cyBhc3NvY2lh
dGVkIHdpdGggdGhvc2UgcmVzdWx0cyBhbmQgJHtsb2NhbExpbmsoWydBUEknLCAnL2FwaS91cGxv
YWQvcHJvY2VzcyddLCAncHJvY2VzcyB0aGUgcmVzdWx0Jyl9LiBOb3RlIHRoYXQgdGhlIFBPU1Qg
ZW5kcG9pbnQgZG9lcyBub3QgYWNjZXB0IGFueSBxdWVyeSBwYXJhbXRlcnMuYCwKLSAgICAgICAg
ICAgICAgICBdLAotICAgICAgICAgICAgKSwKLSAgICAgICAgICAgIGRvY3VtZW50RW5kcG9pbnQo
Ci0gICAgICAgICAgICAgICAgJy9hcGkvdXBsb2FkL3Byb2Nlc3MnLAotICAgICAgICAgICAgICAg
IFsnUE9TVCddLAotICAgICAgICAgICAgICAgIFsnQnJhbmNoJywgJ0NvbmZpZ3VyYXRpb24nLCAn
TGltaXQnLCAnUmVwb3NpdG9yeScsICdTdWl0ZScsICdVVUlEJ10sCi0gICAgICAgICAgICAgICAg
WwotICAgICAgICAgICAgICAgICAgICBgRXZlcnkgdXBsb2FkIG11c3QgYmUgcHJvY2Vzc2VkLCB0
byBjcmVhdGUgaW5kaXZpZHVhbCBkYXRhYmFzZSBlbnRyaWVzIGZvciBlYWNoIHRlc3QgcmVzdWx0
LiBUaGUgcmVzdWx0cyBkYXRhYmFzZSBjb25jZXB0dWFsbHkgc2VwZXJhdGVzIHRoaXMgcHJvY2Vz
c2luZyBzbyB0aGF0IHVwbG9hZHMgY2FuIGJlIHJlcHJvY2Vzc2VkIGJ5IGEgUE9TVCByZXF1ZXN0
IHRvIHRoaXMgZW5kcG9pbnQuIFRoZSBwYXJhbWV0ZXJzIHRvIHRoaXMgZW5kcG9pbnQgc2hvdWxk
IGJlIHRoZSBzYW1lIHBhcmFtZXRlcnMgeW91IHdvdWxkIHNlbmQgdG8gdGhlICR7bG9jYWxMaW5r
KFsnQVBJJywgJy9hcGkvdXBsb2FkJ10sICcvYXBpL3VwbG9hZCcpfSBlbmRwb2ludC5gLAotICAg
ICAgICAgICAgICAgICAgICBgVGhpcyBlbmRwb2ludCB3aWxsIHF1ZXVlIHRoZSBwcm9jZXNzaW5n
IGFuZCByZXR1cm4gYmVmb3JlIHRoZSBwcm9jZXNzaW5nIGhhcyBiZWVuIGNvbXBsZXRlZCBhbmQg
d2lsbCByZXR1cm4gYSBsaXN0IG9mIGRpY3Rpb25hcmllcyBsb29raW5nIGxpa2UgdGhpczpgLAot
ICAgICAgICAgICAgICAgICAgICBjb2RlQmxvY2soJ3tcbicgKwotICAgICAgICAgICAgICAgICAg
ICAnICAgICJjb21taXRzIjogWzxjb21taXQtYT4sIDxjb21taXQtYj5dLFxuJyArCi0gICAgICAg
ICAgICAgICAgICAgICcgICAgImNvbmZpZ3VyYXRpb24iOiA8Y29uZmlndXJhdGlvbi1vYmplY3Q+
LFxuJyArCi0gICAgICAgICAgICAgICAgICAgICcgICAgInN1aXRlIjogPHN1aXRlPixcbicgKwot
ICAgICAgICAgICAgICAgICAgICAnICAgICJ0aW1lc3RhbXAiOiA8VVRDIHRpbWVzdGFtcCBvZiB0
ZXN0IHJ1bj4sXG4nICsKLSAgICAgICAgICAgICAgICAgICAgJyAgICAicHJvY2Vzc2luZyI6IHtc
bicgKwotICAgICAgICAgICAgICAgICAgICAnICAgICAgICAiY2ktdXJscyI6IHsic3RhdHVzIjog
IlF1ZXVlZCJ9LFxuJyArCi0gICAgICAgICAgICAgICAgICAgICcgICAgICAgICJzdWl0ZS1yZXN1
bHRzIjogeyJzdGF0dXMiOiAiUXVldWVkIn0sXG4nICsKLSAgICAgICAgICAgICAgICAgICAgJyAg
ICAgICAgInRlc3QtcmVzdWx0IjogeyJzdGF0dXMiOiAiUXVldWVkIn1cbicgKwotICAgICAgICAg
ICAgICAgICAgICAnICAgIH1cbicgKwotICAgICAgICAgICAgICAgICAgICAnfScpLAotICAgICAg
ICAgICAgICAgICAgICBgd2hlcmUgJmx0Y29tbWl0LWEmZ3QgYW5kICZsdGNvbW1pdC1iJmd0IGFy
ZSBib3RoICR7bG9jYWxMaW5rKFsnQVBJJywgJ0NvbW1pdCddLCAnY29tbWl0IG9iamVjdHMnKX0g
YW5kICZsdGNvbmZpZ3VyYXRpb24tb2JqZWN0Jmd0IGlzIGEgJHtsb2NhbExpbmsoWydRdWVyeSBQ
YXJhbWV0ZXJzJywgJ0NvbmZpZ3VyYXRpb24nXSwgJ2NvbmZpZ3VyYXRpb24gb2JqZWN0Jyl9LiBU
aGUgZGF0YSBpbnNpZGUgdGhlICdwcm9jZXNzaW5nJyBkaWN0aW9uYXJ5IGluZGljYXRlcyBhbnkg
ZmFpbHVyZXMgd2hpY2ggb2NjdXJyZWQgd2hlbiBhdHRlbXB0aW5nIHRvIHByb2Nlc3MgdGhlIHVw
bG9hZC5gCi0gICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICksCi0gICAgICAgIF0sICdU
ZXN0IExpc3RzJzogWwotICAgICAgICAgICAgYE1vc3QgZW5wb2ludHMgb24gdGhlIHJlc3VsdHMg
ZGF0YWJhc2UgcmVxdWlyZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc3VpdGUsIHRlc3Qgb3IgY29u
ZmlndXJhdGlvbiByZXN1bHRzIGFyZSBhc3NvY2lhdGVkIHdpdGguIEJlY2F1c2UgdGhlc2UgY29u
ZmlndXJhdGlvbnMsIHN1aXRlcyBvciB0ZXN0cyBtYXkgY2hhbmdlIG92ZXIgdGltZSwgdGhlIHJl
c3VsdHMgZGF0YWJhc2UgZXhwb3NlcyBzb21lIGVuZHBvaW50cyBhbGxvd2luZyB0aGlzIGRhdGEg
dG8gYmUgcmV0cmVpdmVkIGluIGFuIGF1dG9tYXRlZCB3YXkuYCwKLSAgICAgICAgICAgIGRvY3Vt
ZW50RW5kcG9pbnQoCi0gICAgICAgICAgICAgICAgJy9hcGkvc3VpdGVzJywKLSAgICAgICAgICAg
ICAgICBbJ0dFVCddLAotICAgICAgICAgICAgICAgIFsnQnJhbmNoJywgJ0NvbmZpZ3VyYXRpb24n
LCAnUmVwb3NpdG9yeScsICdTdWl0ZScsICdVVUlEJ10sCi0gICAgICAgICAgICAgICAgWwotICAg
ICAgICAgICAgICAgICAgICBgVGhpcyBlbnBvaW50IHJldHVybnMgYSBsaXN0IG9mIGNvbmZpZ3Vy
YXRpb24vc3VpdGUgcGFpcnMgbWF0Y2hpbmcgdGhlIHByb3ZpZGVkIHBhcmFtZXRlcnMuIFRoZSAv
YXBpL3N1aXRlcyBlbmRwb2ludCBpcyBhbHNvIHVzZWQgdG8gZ2VuZXJhdGUgYSBsaXN0IG9mIHZh
bGlkIGNvbmZpZ3VyYXRpb25zLCBhbmQgd2lsbCByZXR1cm4gYSBsaXN0IHdoaWNoIGlzIG9mIHRo
ZSBmb3JtOmAsCi0gICAgICAgICAgICAgICAgICAgIGNvZGVCbG9jaygnW1xuJyArCi0gICAgICAg
ICAgICAgICAgICAgICcgICAgW1xuJyArCi0gICAgICAgICAgICAgICAgICAgICcgICAgICAgIDxj
b25maWd1cmF0aW9uLW9iamVjdC1hPixcbicgKwotICAgICAgICAgICAgICAgICAgICAnICAgICAg
ICBbInRlc3Qtc3VpdGUtYSIsICJ0ZXN0LXN1aXRlLWIiXVxuJyArCi0gICAgICAgICAgICAgICAg
ICAgICcgICAgXSwgW1xuJyArCi0gICAgICAgICAgICAgICAgICAgICcgICAgICAgIDxjb25maWd1
cmF0aW9uLW9iamVjdC1iPixcbicgKwotICAgICAgICAgICAgICAgICAgICAnICAgICAgICBbInRl
c3Qtc3VpdGUtYSJdXG4nICsKLSAgICAgICAgICAgICAgICAgICAgJyAgICBdXG4nICsKLSAgICAg
ICAgICAgICAgICAgICAgJ10nKSwKLSAgICAgICAgICAgICAgICAgICAgYHdoZXJlICZsdGNvbmZp
Z3VyYXRpb24tb2JqZWN0LWEmZ3QgYW5kICZsdGNvbmZpZ3VyYXRpb24tb2JqZWN0LWImZ3QgYXJl
IGJvdGggJHtsb2NhbExpbmsoWydRdWVyeSBQYXJhbWV0ZXJzJywgJ0NvbmZpZ3VyYXRpb24nXSwg
J2NvbmZpZ3VyYXRpb24gb2JqZWN0cycpfS5gLAotICAgICAgICAgICAgICAgIF0sCi0gICAgICAg
ICAgICApLAotICAgICAgICAgICAgZG9jdW1lbnRFbmRwb2ludCgKLSAgICAgICAgICAgICAgICAn
L2FwaS8mbHRzdWl0ZSZndC90ZXN0cycsCi0gICAgICAgICAgICAgICAgWydHRVQnXSwKLSAgICAg
ICAgICAgICAgICBbJ0xpbWl0JywgJ1Rlc3QnXSwKLSAgICAgICAgICAgICAgICBbYFJldHVybnMg
YSBsaXN0IG9mIHRlc3RzIGFzc29jaWF0ZWQgd2l0aCBhIHNwZWNpZmljIHN1aXRlLiBUaGlzIGxp
c3QgaXMgdXNlZnVsIGZvciBtYXBwaW5nIGEgcGFydGlhbCBzdHJpbmcgdG8gYSB0ZXN0IG5hbWUu
YF0sCi0gICAgICAgICAgICApLAotICAgICAgICBdLCAnVGVzdCBSZXN1bHRzJzogWwotICAgICAg
ICAgICAgYFRoZSByZXN1bHRzLWRhdGFiYXNlIHByZWZvcm1zIHBvc3QtcHJvY2Vzc2luZyBvbiBl
dmVyeSB1cGxvYWQgdG8gc29ydCB0ZXN0IHJlc3VsdHMuIEVhY2ggdGVzdCBoYXMgaXQncyByZXN1
bHRzIHNhdmVkIGluZGVwZW5kZW50bHkgYW5kIGhpZ2gtbGV2ZWwgcmVzdWx0cyBmb3IgYSB0ZXN0
IHN1aXRlIGFyZSBhbHNvIHN0b3JlZC4gVGhlIHJlc3VsdHMgZGF0YWJhc2UgY2xhc3NpZmllcyBl
dmVyeSB0ZXN0IGZhaWx1cmUgd2l0aCB0aGUgZm9sbG93aW5nIG1hcHBpbmc6YCwKLSAgICAgICAg
ICAgIGNvZGVCbG9jaygne1xuJyArIFsnQ1JBU0gnLCAnVElNRU9VVCcsICdJTUFHRScsICdBVURJ
TycsICdURVhUJywgJ0ZBSUwnLCAnRVJST1InLCAnV0FSTklORycsICdQQVNTJ10ubWFwKChrZXkp
ID0+IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gYCAgICAiJHtrZXl9IjogJHtFeHBlY3RhdGlv
bnMuc3RyaW5nVG9TdGF0ZUlkKGtleSl9YDsKLSAgICAgICAgICAgIH0pLmpvaW4oJyxcbicpICsg
J1xufScpLAotICAgICAgICAgICAgYFJlc3VsdHMgd2hpY2ggaGF2ZSBsb3dlciBudW1iZXJzIHdp
bGwgdGFrZSBwcmVjZWRlbmNlIG92ZXIgdGhvc2Ugd2l0aCBzbWFsbGVyIG9uZXMuIEZvciBleGFt
cGxlLCBpZiBhIHRlc3QgaGFzIGEgcmVzdWx0IHdoaWNoIGlzIHNpbXVsdGFuaW91c2x5IGEgVElN
RU9VVCBhbmQgYSBGQUlMVVJFLCB0aGUgcmVzdWx0cyBkYXRhYmFzZSB3b3VsZCB0cmVhdCB0aGF0
IHRlc3QgYXMgYSBUSU1FT1VULmAsCi0gICAgICAgICAgICBgVGVzdHMgbWF5IGFsc28gZGVmaW5l
IGFuICdleHBlY3RlZCcgcmVzdWx0LiBCeSBkZWZhdWx0LCBhbGwgdGVzdHMgYXJlIGV4cGVjdGVk
IHRvIHBhc3MuIElmIGEgdGVzdCBkZWZpbmVzIGEgcmVzdWx0IHRoYXQgaXMgbm90IFBBU1MsIG1v
c3QgZmFjaWxpdGllcyB3aXRoaW4gdGhlIHJlc3VsdHMgZGF0YWJhc2Ugd2lsbCB0cmVhdCB0aGF0
IHRlc3QgYXMgcGFzc2luZyBzbyBsb25nIGFzIGl0J3MgcmVzdWx0IG1hdGNoZXMgdGhlIGV4cGVj
dGVkIHJlc3VsdC4gVGhpcyBsZWFkcyB0byBhbiBpZGVhIG9mIGV4cGVjdGVkIHJlc3VsdHMgdmVy
c2UgYWN0dWFsIHJlc3VsdHMuIEVuZHBvaW50cyB3aGljaCBjb2xhcHNlIHJlc3VsdHMgZnJvbSBt
dWx0aXBsZSB0ZXN0cyBoYW5kbGUgdGhpcyBpZGVhIGxpa2Ugc286YCwKLSAgICAgICAgICAgIGNv
ZGVCbG9jaygne1xuJyArCi0gICAgICAgICAgICAgICAgJyAgICAidGVzdHNfY3Jhc2hlZCI6IDxu
dW1iZXIgb2YgdGVzdHMgd2hpY2ggY3Jhc2hlZCBvciB3b3JzZT4sXG4nICsKLSAgICAgICAgICAg
ICAgICAnICAgICJ0ZXN0c190aW1lZG91dCI6IDxudW1iZXIgb2YgdGVzdHMgd2hpY2ggdGltZWQt
b3V0IG9yIHdvcnNlPixcbicgKwotICAgICAgICAgICAgICAgICcgICAgInRlc3RzX2ZhaWxlZCI6
IDxudW1iZXIgb2YgdGVzdHMgd2hpY2ggZmFpbGVkIG9yIHdvcnNlPixcbicgKwotICAgICAgICAg
ICAgICAgICcgICAgInRlc3RzX3VuZXhwZWN0ZWRfY3Jhc2hlZCI6IDxudW1iZXIgb2YgdGVzdHMg
d2hpY2ggdW5leHBlY3RhZGx5IGNyYXNoZWQgb3Igd29yc2U+LFxuJyArCi0gICAgICAgICAgICAg
ICAgJyAgICAidGVzdHNfdW5leHBlY3RlZF90aW1lZG91dCI6IDxudW1iZXIgb2YgdGVzdHMgd2hp
Y2ggdW5leHBlY3RhZGx5IHRpbWVkLW91dCBvciB3b3JzZT4sXG4nICsKLSAgICAgICAgICAgICAg
ICAnICAgICJ0ZXN0c191bmV4cGVjdGVkX2ZhaWxlZCI6IDxudW1iZXIgb2YgdGVzdHMgd2hpY2gg
dW5leHBlY3RhZGx5IGZhaWxlZCBvciB3b3JzZT4sXG4nICsKLSAgICAgICAgICAgICAgICAnICAg
ICJ0ZXN0c19za2lwcGVkIjogPG51bWJlciBvZiB0ZXN0cyB3aGljaCB3ZXJlIHNraXBwZWQ+LFxu
JyArCi0gICAgICAgICAgICAgICAgJyAgICAidGVzdHNfcnVuIjogPG51bWJlciBvZiB0ZXN0cyBy
dW4+XG4nICsKLSAgICAgICAgICAgICAgICAnfScpLAotICAgICAgICAgICAgYEl0J3MgaW1wb3J0
YW50IHRvIG5vdGUgdGhhdCB3aGVuIGFnZ3JlZ2F0aW5nIHRlc3QgcmVzdWx0cywgdGhlIGFnZ3Jl
Z2F0aW9uIG9mIHRpbWVvdXRzIHdpbGwgYWxzbyBpbmNsdWRlIHJlc3VsdHMgd29yc2UgdGhhbiB0
aW1lb3V0cyAobmFtZWx5LCBjcmFzaGVzKSBhbmQgdGhlIGFnZ3JlZ2F0aW9uIG9mIGZhaWx1cmVz
IHdpbGwgYWxzbyBpbmNsdWRlIHJlc3VsdHMgd29yc2UgdGhhbiBmYWlsdXJlcyAoc28gY3Jhc2hl
cyBhbmQgdGltZW91dHMpLmAsCi0gICAgICAgICAgICBkb2N1bWVudEVuZHBvaW50KAotICAgICAg
ICAgICAgICAgICcvYXBpL3Jlc3VsdHMvJmx0c3VpdGUmZ3QnLAotICAgICAgICAgICAgICAgIFsn
R0VUJ10sCi0gICAgICAgICAgICAgICAgWydCcmFuY2gnLCAnQ29uZmlndXJhdGlvbicsICdMaW1p
dCcsICdSZXBvc2l0b3J5JywgJ1RpbWUnLCAnVVVJRCddLAotICAgICAgICAgICAgICAgIFsKLSAg
ICAgICAgICAgICAgICAgICAgYEVuZHBvaW50IHdoaWNoIHJldHVybnMgcmVzdWx0cyBmb3IgYSBz
cGVjaWZpYyB0ZXN0IHJ1bi4gT24gdGhpcyBlbmRwb2ludCwgcmVzdWx0cyBhcmUgYWdncmVnYXRl
ZCByZXN1bHRzIGluIGEgZGljdGlvbmFyeSBmb3JtYXRlZCBsaWtlIHRoaXM6YCwKLSAgICAgICAg
ICAgICAgICAgICAgY29kZUJsb2NrKCd7XG4nICsKLSAgICAgICAgICAgICAgICAgICAgICAgICcg
ICAgInN0YXJ0X3RpbWUiOiA8VVRDIHRpbWUgdGVzdCBydW4gc3RhcnRlZD4sXG4nICsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICcgICAgInV1aWQiOiA8VVVJRCBmb3IgdGVzdCBydW4+LFxuJyAr
Ci0gICAgICAgICAgICAgICAgICAgICAgICAnICAgICJkZXRhaWxzIjoge1xuJyArCi0gICAgICAg
ICAgICAgICAgICAgICAgICAnICAgICAgICAiYnVpbGQtbnVtYmVyIjogIjUyODUiLFxuJyArCi0g
ICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICAiYnVpbGRib3QtbWFzdGVyIjogImJ1aWxk
LndlYmtpdC5vcmciLFxuJyArCi0gICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICAiYnVp
bGRib3Qtd29ya2VyIjogImJvdDE5OCIsXG4nICsKLSAgICAgICAgICAgICAgICAgICAgICAgICcg
ICAgICAgICJidWlsZGVyLW5hbWUiOiAiQXBwbGUtTW9qYXZlLVJlbGVhc2UtV0syIlxuJyArCi0g
ICAgICAgICAgICAgICAgICAgICAgICAnICAgIH0sXG4nICsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICcgICAgc3RhdHM6IHtcbicgKwotICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAg
InN0YXJ0X3RpbWUiOiA8VVRDIHRpbWUgYnVpbGQgc3RhcnRlZD4sXG4nICsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICcgICAgICAgICJlbmRfdGltZSI6IDxVVEMgdGltZSBidWlsZCBlbmRlZD4s
XG4nICsKLSAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgICJ0ZXN0c19jcmFzaGVkIjog
PG51bWJlciBvZiB0ZXN0cyB3aGljaCBjcmFzaGVkIG9yIHdvcnNlPixcbicgKwotICAgICAgICAg
ICAgICAgICAgICAgICAgJyAgICAgICAgInRlc3RzX3RpbWVkb3V0IjogPG51bWJlciBvZiB0ZXN0
cyB3aGljaCB0aW1lZC1vdXQgb3Igd29yc2U+LFxuJyArCi0gICAgICAgICAgICAgICAgICAgICAg
ICAnICAgICAgICAidGVzdHNfZmFpbGVkIjogPG51bWJlciBvZiB0ZXN0cyB3aGljaCBmYWlsZWQg
b3Igd29yc2U+LFxuJyArCi0gICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICAidGVzdHNf
dW5leHBlY3RlZF9jcmFzaGVkIjogPG51bWJlciBvZiB0ZXN0cyB3aGljaCB1bmV4cGVjdGFkbHkg
Y3Jhc2hlZCBvciB3b3JzZT4sXG4nICsKLSAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAg
ICJ0ZXN0c191bmV4cGVjdGVkX3RpbWVkb3V0IjogPG51bWJlciBvZiB0ZXN0cyB3aGljaCB1bmV4
cGVjdGFkbHkgdGltZWQtb3V0IG9yIHdvcnNlPixcbicgKwotICAgICAgICAgICAgICAgICAgICAg
ICAgJyAgICAgICAgInRlc3RzX3VuZXhwZWN0ZWRfZmFpbGVkIjogPG51bWJlciBvZiB0ZXN0cyB3
aGljaCB1bmV4cGVjdGFkbHkgZmFpbGVkIG9yIHdvcnNlPixcbicgKwotICAgICAgICAgICAgICAg
ICAgICAgICAgJyAgICAgICAgInRlc3RzX3NraXBwZWQiOiA8bnVtYmVyIG9mIHRlc3RzIHdoaWNo
IHdlcmUgc2tpcHBlZD4sXG4nICsKLSAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgICJ0
ZXN0c19ydW4iOiA8bnVtYmVyIG9mIHRlc3RzIHJ1bj5cbicgKwotICAgICAgICAgICAgICAgICAg
ICAgICAgJyAgICB9XG4nICsKLSAgICAgICAgICAgICAgICAgICAgICAgICd9JyksCi0gICAgICAg
ICAgICAgICAgICAgIGBUaGVzZSByZXN1bHRzIGFyZSBvcmdhbml6ZWQgaW4gYSBsaXN0IG9mIGRp
Y3Rpb25hcmllcyBvcmdhbml6ZWQgbGlrZSBzbzpgLAotICAgICAgICAgICAgICAgICAgICBjb2Rl
QmxvY2soJ1tcbicgKwotICAgICAgICAgICAgICAgICAgICAnICAgIHtcbicgKwotICAgICAgICAg
ICAgICAgICAgICAnICAgICAgICAiY29uZmlndXJhdGlvbiI6IDxjb25maWd1cmF0aW9uLW9iamVj
dC1hPixcbicgKwotICAgICAgICAgICAgICAgICAgICAnICAgICAgICAicmVzdWx0cyI6IFtcbicg
KwotICAgICAgICAgICAgICAgICAgICAnICAgICAgICAgICAgPHJ1bi1hMT4sXG4nICsKLSAgICAg
ICAgICAgICAgICAgICAgJyAgICAgICAgICAgIDxydW4tYTI+XG4nICsKLSAgICAgICAgICAgICAg
ICAgICAgJyAgICAgICAgXVxuJyArCi0gICAgICAgICAgICAgICAgICAgICcgICAgfSwge1xuJyAr
Ci0gICAgICAgICAgICAgICAgICAgICcgICAgICAgICJjb25maWd1cmF0aW9uIjogPGNvbmZpZ3Vy
YXRpb24tb2JqZWN0LWI+LFxuJyArCi0gICAgICAgICAgICAgICAgICAgICcgICAgICAgICJyZXN1
bHRzIjogW1xuJyArCi0gICAgICAgICAgICAgICAgICAgICcgICAgICAgICAgICA8cnVuLWIxPixc
bicgKwotICAgICAgICAgICAgICAgICAgICAnICAgICAgICAgICAgPHJ1bi1iMj5cbicgKwotICAg
ICAgICAgICAgICAgICAgICAnICAgICAgICBdXG4nICsKLSAgICAgICAgICAgICAgICAgICAgJyAg
ICB9XG4nICsKLSAgICAgICAgICAgICAgICAgICAgJ10nKSwKLSAgICAgICAgICAgICAgICAgICAg
YHdoZXJlICZsdGNvbmZpZ3VyYXRpb24tb2JqZWN0LWEmZ3QgYW5kICZsdGNvbmZpZ3VyYXRpb24t
b2JqZWN0LWImZ3QgYXJlIGJvdGggJHtsb2NhbExpbmsoWydRdWVyeSBQYXJhbWV0ZXJzJywgJ0Nv
bmZpZ3VyYXRpb24nXSwgJ2NvbmZpZ3VyYXRpb24gb2JqZWN0cycpfScgYW5kICZsdHJ1bi1hMSZn
dCwgJmx0cnVuLWEyJmd0LCAmbHRydW4tYjEmZ3QgYW5kICZsdHJ1bi1iMiZndCBhcmUgYWxsIHRo
ZSBhZmZvcm1lbnRpb25lZCBhZ2dyZWdhdGVkIHJlc3VsdCBkaWN0aW9uYXJpZXMuYCwKLSAgICAg
ICAgICAgICAgICBdLAotICAgICAgICAgICAgKSwKLSAgICAgICAgICAgIGRvY3VtZW50RW5kcG9p
bnQoCi0gICAgICAgICAgICAgICAgJy9hcGkvcmVzdWx0cy8mbHRzdWl0ZSZndC8mbHR0ZXN0Jmd0
JywKLSAgICAgICAgICAgICAgICBbJ0dFVCddLAotICAgICAgICAgICAgICAgIFsnQnJhbmNoJywg
J0NvbmZpZ3VyYXRpb24nLCAnTGltaXQnLCAnUmVwb3NpdG9yeScsICdUaW1lJywgJ1VVSUQnXSwK
LSAgICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAgIGBBY2Nlc3MgcmVzdWx0cyBm
b3IgYSBzcGVjaWZpYyB0ZXN0IG9uIGEgc3BlY2lmaWMgY29tbWl0IHdpdGggYSBzcGVjaWZpYyBj
b25maWd1cmF0aW9uLiBUaGlzIGVuZHBvaW50IG9ubHkgcmV0dXJucyByZXN1bHRzIGZvciBhIHNp
bmdsZSB0ZXN0LiBFYWNoIHJlc3VsdCBpcyBzdG9yZWQgaW4gZGljdGlvbmFyeSBmb3JtYXR0ZWQg
bGlrZSB0aGlzOmAsCi0gICAgICAgICAgICAgICAgICAgIGNvZGVCbG9jaygne1xuJyArCi0gICAg
ICAgICAgICAgICAgICAgICcgICAgInN0YXJ0X3RpbWUiOiA8VVRDIHRpbWUgdGVzdCBydW4gc3Rh
cnRlZD4sXG4nICsKLSAgICAgICAgICAgICAgICAgICAgJyAgICAidXVpZCI6IDxVVUlEIGZvciB0
ZXN0IHJ1bj4sXG4nICsKLSAgICAgICAgICAgICAgICAgICAgJyAgICAiYWN0dWFsIjogPHJlc3Vs
dCBvZiBydW4+LFxuJyArCi0gICAgICAgICAgICAgICAgICAgICcgICAgImV4cGVjdGVkIjogPGV4
cGVjdGVkIHJlc3VsdCBvZiBydW4+LFxuJyArCi0gICAgICAgICAgICAgICAgICAgICcgICAgInRp
bWUiOiA8bWlsaXNlY29uZHMgaXQgdG9vayB0ZXN0IHRvIHJ1bj5cbicgKwotICAgICAgICAgICAg
ICAgICAgICAnfScpLAotICAgICAgICAgICAgICAgICAgICBgVGhlICd0aW1lJyBlbGVtZW50IG9w
dGlvbmFsLiBJZiAnYWN0dWFsJyBvciAnZXhwZWN0ZWQnIGFyZSB1bmRlZmluZWQsIHRoZXkgYXJl
IGFzc3VtZWQgdG8gYmUgUEFTUy4gVGhlc2UgcmVzdWx0cyBhcmUgb3JnYW5pemVkIGluIGEgbGlz
dCBvZiBkaWN0aW9uYXJpZXMgb3JnYW5pemVkIGxpa2Ugc286YCwKLSAgICAgICAgICAgICAgICAg
ICAgY29kZUJsb2NrKCdbXG4nICsKLSAgICAgICAgICAgICAgICAgICAgJyAgICB7XG4nICsKLSAg
ICAgICAgICAgICAgICAgICAgJyAgICAgICAgImNvbmZpZ3VyYXRpb24iOiA8Y29uZmlndXJhdGlv
bi1vYmplY3QtYT4sXG4nICsKLSAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgInJlc3VsdHMi
OiBbXG4nICsKLSAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgIDxydW4tYTE+LFxuJyAr
Ci0gICAgICAgICAgICAgICAgICAgICcgICAgICAgICAgICA8cnVuLWEyPlxuJyArCi0gICAgICAg
ICAgICAgICAgICAgICcgICAgICAgIF0sXG4nICsKLSAgICAgICAgICAgICAgICAgICAgJyAgICB9
LCB7XG4nICsKLSAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgImNvbmZpZ3VyYXRpb24iOiA8
Y29uZmlndXJhdGlvbi1vYmplY3QtYj4sXG4nICsKLSAgICAgICAgICAgICAgICAgICAgJyAgICAg
ICAgInJlc3VsdHMiOiBbXG4nICsKLSAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgIDxy
dW4tYjE+LFxuJyArCi0gICAgICAgICAgICAgICAgICAgICcgICAgICAgICAgICA8cnVuLWIyPlxu
JyArCi0gICAgICAgICAgICAgICAgICAgICcgICAgICAgIF1cbicgKwotICAgICAgICAgICAgICAg
ICAgICAnICAgIH1cbicgKwotICAgICAgICAgICAgICAgICAgICAnXScpLAotICAgICAgICAgICAg
ICAgICAgICBgd2hlcmUgJmx0Y29uZmlndXJhdGlvbi1vYmplY3QtYSZndCBhbmQgJmx0Y29uZmln
dXJhdGlvbi1vYmplY3QtYiZndCBhcmUgYm90aCAke2xvY2FsTGluayhbJ1F1ZXJ5IFBhcmFtZXRl
cnMnLCAnQ29uZmlndXJhdGlvbiddLCAnY29uZmlndXJhdGlvbiBvYmplY3RzJyl9JyBhbmQgJmx0
cnVuLWExJmd0LCAmbHRydW4tYTImZ3QsICZsdHJ1bi1iMSZndCBhbmQgJmx0cnVuLWIyJmd0IGFy
ZSBhbGwgdGhlIGFmZm9ybWVudGlvbmVkIHNpbmdsZSB0ZXN0IHJlc3VsdCBkaWN0aW9uYXJ5LmAs
Ci0gICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICksCi0gICAgICAgIF0sICdGYWlsdXJl
IEFuYWx5c2lzJzogWwotICAgICAgICAgICAgYFJlc3VsdHMgZGF0YWJhc2VzIHByb3ZpZGUgYSBm
ZXcgQVBJcyB0byBhc3Npc3QgaW4gdGhlIGludmVzdGlnYXRpb24gb2YgdGVzdCBmYWlsdXJlcy4g
VGhlc2UgYW5hbHlzaXMgZW5kcG9pbnRzIGFnZ3JlZ2F0ZSBkYXRhIGZyb20gbXVsdGlwbGUgdGVz
dCBydW5zIGZvciBjb25zdW1wdGlvbiBieSBib3RoIGh1bWFucyBhbmQgYXV0b21hdGVkIHN5c3Rl
bXMuYCwKLSAgICAgICAgICAgIGRvY3VtZW50RW5kcG9pbnQoCi0gICAgICAgICAgICAgICAgJy9h
cGkvZmFpbHVyZXMvJmx0c3VpdGUmZ3QnLAotICAgICAgICAgICAgICAgIFsnR0VUJ10sCi0gICAg
ICAgICAgICAgICAgWydBZ2dyZWdhdGlvbicsICdCcmFuY2gnLCAnQ29uZmlndXJhdGlvbicsICdM
aW1pdCcsICdSZXBvc2l0b3J5JywgJ1RpbWUnLCAnVVVJRCddLAotICAgICAgICAgICAgICAgIFsK
LSAgICAgICAgICAgICAgICAgICAgYFJldHVybnMgYSBsaXN0IG9mIHRlc3RzIHdoaWNoIGZhaWxl
ZCBkdXJpbmcgdGVzdCBydW5zIG1hdGNoaW5nIHRoZSBzcGVjaWZpZWQgY3JpdGVyaWEuIFdoZW4g
Y29sbGFwc2VkLCB0aGVzZSByZXN1bHRzIHdpbGwgYmUgYSBzb3J0ZWQgbGlzdCBsb29raW5nIGxp
a2UgdGhpczpgLAotICAgICAgICAgICAgICAgICAgICBjb2RlQmxvY2soJ1tcbicgKwotICAgICAg
ICAgICAgICAgICAgICAnICAgICJzdWl0ZS5zdWItMS50ZXN0LTEiLFxuJyArCi0gICAgICAgICAg
ICAgICAgICAgICcgICAgInN1aXRlLnN1Yi0xLnRlc3QtMiIsXG4nICsKLSAgICAgICAgICAgICAg
ICAgICAgJyAgICAic3VpdGUuc3ViLTIudGVzdC0xIlxuJyArCi0gICAgICAgICAgICAgICAgICAg
ICddJyksCi0gICAgICAgICAgICAgICAgICAgIGBXaGVuIHVuY29sbGFwc2VkLCB0aGVzZSByZXN1
bHRzIHdpbGwgYmUgc2VwYXJhdGVkIGJ5IHRoZSB1cGxvYWQgdGhhdCBnZW5lcmF0ZWQgdGhlbS4g
VGhlc2UgcmVzdWx0cyBhcmUgbGFpZCBvdXQgbXVjaCBsaWtlIHRoZSAke2xvY2FsTGluayhbJ0FQ
SScsICcvYXBpL3Jlc3VsdHMvJmx0c3VpdGUmZ3QnXSwgJy9hcGkvcmVzdWx0cy8mbHRzdWl0ZSZn
dCcpfSBhbmQgJHtsb2NhbExpbmsoWydBUEknLCAnL2FwaS9yZXN1bHRzLyZsdHN1aXRlJmd0LyZs
dHRlc3QmZ3QnXSwgJy9hcGkvcmVzdWx0cy8mbHRzdWl0ZSZndC8mbHR0ZXN0Jmd0Jyl9IGVuZHBv
aW50cy5gLAotICAgICAgICAgICAgICAgICAgICBjb2RlQmxvY2soJ1tcbicgKwotICAgICAgICAg
ICAgICAgICAgICAnICAgIHtcbicgKwotICAgICAgICAgICAgICAgICAgICAnICAgICAgICAiY29u
ZmlndXJhdGlvbiI6IDxjb25maWd1cmF0aW9uLW9iamVjdC1hPixcbicgKwotICAgICAgICAgICAg
ICAgICAgICAnICAgICAgICAicmVzdWx0cyI6IFtcbicgKwotICAgICAgICAgICAgICAgICAgICAn
ICAgICAgICAgICAge1xuJyArCi0gICAgICAgICAgICAgICAgICAgICcgICAgICAgICAgICAgICAg
InN0YXJ0X3RpbWUiOiA8VVRDIHRpbWUgdGVzdCBydW4gc3RhcnRlZD4sXG4nICsKLSAgICAgICAg
ICAgICAgICAgICAgJyAgICAgICAgICAgICAgICAidXVpZCI6IDxVVUlEIGZvciB0ZXN0IHJ1bj4s
XG4nICsKLSAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgICAgICAic3VpdGUuc3ViLTEu
dGVzdC0xIjogIkZBSUwiLFxuJyArCi0gICAgICAgICAgICAgICAgICAgICcgICAgICAgICAgICAg
ICAgInN1aXRlLnN1Yi0xLnRlc3QtMiI6ICJGQUlMIixcbicgKwotICAgICAgICAgICAgICAgICAg
ICAnICAgICAgICAgICAgfVxuJyArCi0gICAgICAgICAgICAgICAgICAgICcgICAgICAgIF1cbicg
KwotICAgICAgICAgICAgICAgICAgICAnICAgIH0sIHtcbicgKwotICAgICAgICAgICAgICAgICAg
ICAnICAgICAgICAiY29uZmlndXJhdGlvbiI6IDxjb25maWd1cmF0aW9uLW9iamVjdC1iPixcbicg
KwotICAgICAgICAgICAgICAgICAgICAnICAgICAgICAicmVzdWx0cyI6IFtcbicgKwotICAgICAg
ICAgICAgICAgICAgICAnICAgICAgICAgICAge1xuJyArCi0gICAgICAgICAgICAgICAgICAgICcg
ICAgICAgICAgICAgICAgInN0YXJ0X3RpbWUiOiA8VVRDIHRpbWUgdGVzdCBydW4gc3RhcnRlZD4s
XG4nICsKLSAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgICAgICAidXVpZCI6IDxVVUlE
IGZvciB0ZXN0IHJ1bj4sXG4nICsKLSAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgICAg
ICAic3VpdGUuc3ViLTEudGVzdC0xIjogIkZBSUwiLFxuJyArCi0gICAgICAgICAgICAgICAgICAg
ICcgICAgICAgICAgICAgICAgInN1aXRlLnN1Yi0xLnRlc3QtMiI6ICJDUkFTSCIsXG4nICsKLSAg
ICAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgIH1cbicgKwotICAgICAgICAgICAgICAgICAg
ICAnICAgICAgICBdXG4nICsKLSAgICAgICAgICAgICAgICAgICAgJyAgICB9XG4nICsKLSAgICAg
ICAgICAgICAgICAgICAgJ10nKSwKLSAgICAgICAgICAgICAgICAgICAgYHdoZXJlICZsdGNvbmZp
Z3VyYXRpb24tb2JqZWN0LWEmZ3QgYW5kICZsdGNvbmZpZ3VyYXRpb24tb2JqZWN0LWImZ3QgYXJl
IGJvdGggJHtsb2NhbExpbmsoWydRdWVyeSBQYXJhbWV0ZXJzJywgJ0NvbmZpZ3VyYXRpb24nXSwg
J2NvbmZpZ3VyYXRpb24gb2JqZWN0cycpfS5gLAotICAgICAgICAgICAgICAgIF0sCi0gICAgICAg
ICAgICApLAotICAgICAgICBdLCdDSSBMaW5rcyc6IFsKLSAgICAgICAgICAgIGBSZXN1bHRzIGRh
dGFiYXNlIGluc3RhbmNlcyBhcmUgdXN1YWxseSBzdG9yaW5nIHRlc3QgcmVzdWx0cyBmcm9tIHNv
bWUgc29ydCBvZiBjb250aW51b3VzIGludGVncmF0aW9uIHN5c3RlbS4gV2hpbGUgdGhlIHJlc3Vs
dHMgZGF0YWJhc2UgZG9lc24ndCBhc3N1bWUgYW55IHBhcnRpY3VsYXIgY29udGludW91cyBpbnRl
Z3JhdGlvbiBzeXN0ZW0sIGl0IGRvZXMgbWFrZSBzb21lIGJhc2ljIGFzc3VtcHRpb25zLiBUaGUg
cmVzdWx0cyBkYXRhYmFzZSBhc3N1bWVzIHRoYXQgZXZlcnkgdXBsb2FkIGhhcyBhIFVSTCBhc3Nv
Y2lhdGVkIHdpdGggaXQgYW5kIHRoYXQgZXZlcnkgdXBsb2FkIHdhcyBydW4gb24gYSBzcGVjaWZp
YyBtYWNoaW5lLiBBZGRpdGlvbmFsbHksIHRoZSByZXN1bHRzIGRhdGFiYXNlIGFzc3VtZXMgdGhh
dCBmb3IgYSBnaXZlbiBjb25maWd1cmF0aW9uLCB0aGVyZSBpcyBhIGNvcnJlc3BvbmRpbmcgJ3F1
ZXVlJyB0aGF0IGFsbCBjb250aW51b3VzIGludGVncmF0aW9uIHJ1bnMgd2l0aCB0aGF0IHNwZWNp
ZmljIGNvbmZpZ3VyYXRpb24gYXJlIGFzc29jaWF0ZWQgd2l0aGAsCi0gICAgICAgICAgICBgSWYg
dGhlc2UgYXNzdW1wdGlvbnMgYXJlbid0IHRydWUgZm9yIGEgcGFydGljdWxhciBpbnN0YW5jZSBv
ZiB0aGUgcmVzdWx0cyBkYXRhYmFzZSwgb3IgaWYgVVJMcyBhcmUgbm90IGluY2x1ZGVkIGluIHVw
bG9hZCBkYXRhLCB0aGUgY29udGludW91cyBpbnRlZ3JhdGlvbiBlbmRwb2ludHMgbWF5IGJlIGRl
YWQgbGlua3MuIFRoYXQgc2hvdWxkIG5vdCBlZmZlY3QgdGhlIG9wZXJhdGlvbiBvciB1c2FnZSBv
ZiB0aGUgcmVzdWx0cyBkYXRhYmFzZS5gLAotICAgICAgICAgICAgZG9jdW1lbnRFbmRwb2ludCgK
LSAgICAgICAgICAgICAgICAnL2FwaS91cmwvcXVldWUnLAotICAgICAgICAgICAgICAgIFsnR0VU
J10sCi0gICAgICAgICAgICAgICAgWydDb25maWd1cmF0aW9uJywgJ0xpbWl0J10sCi0gICAgICAg
ICAgICAgICAgWwotICAgICAgICAgICAgICAgICAgICBgUmV0dXJucyBhIGxpc3Qgb2YgZGljdGlv
bmFyaWVzIHdoaWNoIGFzc29jaWF0ZSAke2xvY2FsTGluayhbJ1F1ZXJ5IFBhcmFtZXRlcnMnLCAn
Q29uZmlndXJhdGlvbiddLCAnY29uZmlndXJhdGlvbiBvYmplY3RzJyl9IHRvIGxpbmtzIHRvIHF1
ZXVlcy4gVGhpcyBsaXN0IGlzIG9yZ2FuaXplZCBsaWtlIHNvOmAsCi0gICAgICAgICAgICAgICAg
ICAgIGNvZGVCbG9jaygnW1xuJyArCi0gICAgICAgICAgICAgICAgICAgICcgICAge1xuJyArCi0g
ICAgICAgICAgICAgICAgICAgICcgICAgICAgICJjb25maWd1cmF0aW9uIjogPGNvbmZpZ3VyYXRp
b24tb2JqZWN0LWE+LFxuJyArCi0gICAgICAgICAgICAgICAgICAgICcgICAgICAgICJ1cmw6IDx1
cmwgdG8gcXVldWUgYT5cbicgKwotICAgICAgICAgICAgICAgICAgICAnICAgIH0sIHtcbicgKwot
ICAgICAgICAgICAgICAgICAgICAnICAgICAgICAiY29uZmlndXJhdGlvbiI6IDxjb25maWd1cmF0
aW9uLW9iamVjdC1iPixcbicgKwotICAgICAgICAgICAgICAgICAgICAnICAgICAgICAidXJsIjog
PHVybCB0byBxdWV1ZSBhPlxuJyArCi0gICAgICAgICAgICAgICAgICAgICcgICAgfVxuJyArCi0g
ICAgICAgICAgICAgICAgICAgICddJyksCi0gICAgICAgICAgICAgICAgICAgIGB3aGVyZSAmbHRj
b25maWd1cmF0aW9uLW9iamVjdC1hJmd0IGFuZCAmbHRjb25maWd1cmF0aW9uLW9iamVjdC1iJmd0
IGFyZSBib3RoICR7bG9jYWxMaW5rKFsnUXVlcnkgUGFyYW1ldGVycycsICdDb25maWd1cmF0aW9u
J10sICdjb25maWd1cmF0aW9uIG9iamVjdHMnKX0uYCwKLSAgICAgICAgICAgICAgICBdLAotICAg
ICAgICAgICAgKSwKLSAgICAgICAgICAgIGRvY3VtZW50RW5kcG9pbnQoCi0gICAgICAgICAgICAg
ICAgJy9hcGkvdXJscycsCi0gICAgICAgICAgICAgICAgWydHRVQnXSwKLSAgICAgICAgICAgICAg
ICBbJ0JyYW5jaCcsICdDb25maWd1cmF0aW9uJywgJ0xpbWl0JywgJ1JlcG9zaXRvcnknLCAnVGlt
ZScsICdVVUlEJ10sCi0gICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICAgICBgUmV0
dXJucyBhIGxpc3Qgb2YgZGljdGlvbmFyaWVzIHdoaWNoIGFzc29jaWF0ZSAke2xvY2FsTGluayhb
J1F1ZXJ5IFBhcmFtZXRlcnMnLCAnQ29uZmlndXJhdGlvbiddLCAnY29uZmlndXJhdGlvbiBvYmpl
Y3RzJyl9IGFuZCAke2xvY2FsTGluayhbJ1F1ZXJ5IFBhcmFtZXRlcnMnLCAnVVVJRCddLCAnVVVJ
RHMnKX0gd2l0aCBzcGVjaWZpYyBxdWV1ZSwgd29ya2VyIGFuZCBidWlsZCBsaW5rcy4gVGhlIGxp
c3QgaXMgb3JnYW5pemVkIGxpa2UgdGhpczpgLAotICAgICAgICAgICAgICAgICAgICBjb2RlQmxv
Y2soJ1tcbicgKwotICAgICAgICAgICAgICAgICAgICAnICAgIHtcbicgKwotICAgICAgICAgICAg
ICAgICAgICAnICAgICAgICAiY29uZmlndXJhdGlvbiI6IDxjb25maWd1cmF0aW9uLW9iamVjdC1h
PixcbicgKwotICAgICAgICAgICAgICAgICAgICAnICAgICAgICAidXJscyI6IFtcbicgKwotICAg
ICAgICAgICAgICAgICAgICAnICAgICAgICAgICAge1xuJyArCi0gICAgICAgICAgICAgICAgICAg
ICcgICAgICAgICAgICAgICAgInN0YXJ0X3RpbWUiOiA8VVRDIHRpbWUgYnVpbGQgc3RhcnRlZD4s
XG4nICsKLSAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgICAgICAiZW5kX3RpbWUiOiA8
VVRDIHRpbWUgYnVpbGQgZW5kZWQ+LFxuJyArCi0gICAgICAgICAgICAgICAgICAgICcgICAgICAg
ICAgICAgICAgInF1ZXVlIjogPHVybCB0byBxdWV1ZSBhPixcbicgKwotICAgICAgICAgICAgICAg
ICAgICAnICAgICAgICAgICAgICAgICJ3b3JrZXIiOiA8dXJsIHRvIHdvcmtlciBhPixcbicgKwot
ICAgICAgICAgICAgICAgICAgICAnICAgICAgICAgICAgICAgICJidWlsZCI6IDx1cmwgdG8gYnVp
bGQgYT5cbicgKwotICAgICAgICAgICAgICAgICAgICAnICAgICAgICAgICAgfVxuJyArCi0gICAg
ICAgICAgICAgICAgICAgICcgICAgICAgIF1cbicgKwotICAgICAgICAgICAgICAgICAgICAnICAg
IH0sIHtcbicgKwotICAgICAgICAgICAgICAgICAgICAnICAgICAgICAiY29uZmlndXJhdGlvbiI6
IDxjb25maWd1cmF0aW9uLW9iamVjdC1iPixcbicgKwotICAgICAgICAgICAgICAgICAgICAnICAg
ICAgICAidXJscyI6IFtcbicgKwotICAgICAgICAgICAgICAgICAgICAnICAgICAgICAgICAge1xu
JyArCi0gICAgICAgICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgInN0YXJ0X3RpbWUiOiA8
VVRDIHRpbWUgYnVpbGQgc3RhcnRlZD4sXG4nICsKLSAgICAgICAgICAgICAgICAgICAgJyAgICAg
ICAgICAgICAgICAiZW5kX3RpbWUiOiA8VVRDIHRpbWUgYnVpbGQgZW5kZWQ+LFxuJyArCi0gICAg
ICAgICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgInF1ZXVlIjogPHVybCB0byBxdWV1ZSBh
PixcbicgKwotICAgICAgICAgICAgICAgICAgICAnICAgICAgICAgICAgICAgICJ3b3JrZXIiOiA8
dXJsIHRvIHdvcmtlciBhPixcbicgKwotICAgICAgICAgICAgICAgICAgICAnICAgICAgICAgICAg
ICAgICJidWlsZCI6IDx1cmwgdG8gYnVpbGQgYT5cbicgKwotICAgICAgICAgICAgICAgICAgICAn
ICAgICAgICAgICAgfVxuJyArCi0gICAgICAgICAgICAgICAgICAgICcgICAgICAgIF1cbicgKwot
ICAgICAgICAgICAgICAgICAgICAnICAgIH1cbicgKwotICAgICAgICAgICAgICAgICAgICAnXScp
LAotICAgICAgICAgICAgICAgICAgICBgd2hlcmUgJmx0Y29uZmlndXJhdGlvbi1vYmplY3QtYSZn
dCBhbmQgJmx0Y29uZmlndXJhdGlvbi1vYmplY3QtYiZndCBhcmUgYm90aCAke2xvY2FsTGluayhb
J1F1ZXJ5IFBhcmFtZXRlcnMnLCAnQ29uZmlndXJhdGlvbiddLCAnY29uZmlndXJhdGlvbiBvYmpl
Y3RzJyl9LmAsCi0gICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICksCi0gICAgICAgICAg
ICBkb2N1bWVudEVuZHBvaW50KAotICAgICAgICAgICAgICAgICcvdXJscy9xdWV1ZScsCi0gICAg
ICAgICAgICAgICAgWydHRVQnXSwKLSAgICAgICAgICAgICAgICBbJ0NvbmZpZ3VyYXRpb24nLCAn
TGltaXQnXSwKLSAgICAgICAgICAgICAgICBbYFJlZGlyZWN0IHRvIHRoZSBjb250aW51b3VzIGlu
dGVncmF0aW9uIFVSTCBmb3IgYSBzcGVjaWZpYyBxdWV1ZSBhc3NvY2lhdGVkIHdpdGggdGhlIHBy
b3ZpZGVkIHBhcmFtZXRlcnMuIE5vdGUgdGhhdCB3aGlsZSB0aGlzIGVuZHBvaW50IGFjY2VwdHMg
dGhlIHN0YW5kYXJkICR7bG9jYWxMaW5rKFsnUXVlcnkgUGFyYW1ldGVycycsICdDb25maWd1cmF0
aW9uJ10sICdjb25maWd1cmF0aW9uJyl9IHF1ZXJ5IHBhcmFtZXRlcnMsIHRoaXMgZW5kcG9pbnQg
d2lsbCByZXR1cm4gYW4gZXJyb3IgaWYgdGhlIHF1ZXJ5IHBhcmFtZXRlcnMgcmVmZXIgdG8gbXVs
dGlwbGUgcXVldWVzLmBdLAotICAgICAgICAgICAgKSwKLSAgICAgICAgICAgIGRvY3VtZW50RW5k
cG9pbnQoCi0gICAgICAgICAgICAgICAgJy91cmxzL3dvcmtlcicsCi0gICAgICAgICAgICAgICAg
WydHRVQnXSwKLSAgICAgICAgICAgICAgICBbJ0JyYW5jaCcsICdDb25maWd1cmF0aW9uJywgJ0xp
bWl0JywgJ1JlcG9zaXRvcnknLCAnVGltZScsICdVVUlEJ10sCi0gICAgICAgICAgICAgICAgW2BS
ZWRpcmVjdCB0byB0aGUgY29udGludW91cyBpbnRlZ3JhdGlvbiBVUkwgZm9yIGEgc3BlY2lmaWMg
d29ya2VyIGFzc29jaWF0ZWQgd2l0aCB0aGUgcHJvdmlkZWQgcGFyYW1ldGVycy4gTm90ZSB0aGF0
IHdoaWxlIHRoaXMgZW5kcG9pbnQgYWNjZXB0cyB0aGUgc3RhbmRhcmQgJHtsb2NhbExpbmsoWydR
dWVyeSBQYXJhbWV0ZXJzJywgJ0NvbmZpZ3VyYXRpb24nXSwgJ2NvbmZpZ3VyYXRpb24nKX0gYW5k
ICR7bG9jYWxMaW5rKFsnUXVlcnkgUGFyYW1ldGVycycsICdVVUlEJ10sICdVVUlEJyl9IHF1ZXJ5
IHBhcmFtZXRlcnMsIHRoaXMgZW5kcG9pbnQgd2lsbCByZXR1cm4gYW4gZXJyb3IgaWYgdGhlIHF1
ZXJ5IHBhcmFtZXRlcnMgcmVmZXIgdG8gbXVsdGlwbGUgd29ya2Vycy5gXSwKLSAgICAgICAgICAg
ICksCi0gICAgICAgICAgICBkb2N1bWVudEVuZHBvaW50KAotICAgICAgICAgICAgICAgICcvdXJs
cy9idWlsZCcsCi0gICAgICAgICAgICAgICAgWydHRVQnXSwKLSAgICAgICAgICAgICAgICBbJ0Jy
YW5jaCcsICdDb25maWd1cmF0aW9uJywgJ0xpbWl0JywgJ1JlcG9zaXRvcnknLCAnVGltZScsICdV
VUlEJ10sCi0gICAgICAgICAgICAgICAgW2BSZWRpcmVjdCB0byB0aGUgY29udGludW91cyBpbnRl
Z3JhdGlvbiBVUkwgZm9yIGEgc3BlY2lmaWMgYnVpbGQgYXNzb2NpYXRlZCB3aXRoIHRoZSBwcm92
aWRlZCBwYXJhbWV0ZXJzLiBOb3RlIHRoYXQgd2hpbGUgdGhpcyBlbmRwb2ludCBhY2NlcHRzIHRo
ZSBzdGFuZGFyZCAke2xvY2FsTGluayhbJ1F1ZXJ5IFBhcmFtZXRlcnMnLCAnQ29uZmlndXJhdGlv
biddLCAnY29uZmlndXJhdGlvbicpfSBhbmQgJHtsb2NhbExpbmsoWydRdWVyeSBQYXJhbWV0ZXJz
JywgJ1VVSUQnXSwgJ1VVSUQnKX0gcXVlcnkgcGFyYW1ldGVycywgdGhpcyBlbmRwb2ludCB3aWxs
IHJldHVybiBhbiBlcnJvciBpZiB0aGUgcXVlcnkgcGFyYW1ldGVycyByZWZlciB0byBtdWx0aXBs
ZSBidWlsZHMuYF0sCi0gICAgICAgICAgICApLAotICAgICAgICBdLAotICAgIH0sICdRdWVyeSBQ
YXJhbWV0ZXJzJzogewotICAgICAgICAnQWdncmVnYXRpb24nOiBbCi0gICAgICAgICAgICBgU29t
ZSBlbmRwb2ludHMgaW4gdGhlIHJlc3VsdHMgZGF0YWJhc2UgYWdncmVnYXRlIGRhdGEgZnJvbSBt
dWx0aXBsZSB0ZXN0IHJ1bnMuIFN1Y2ggZW5kcG9pbnRzIGFjY2VwdCBxdWVyeSBwYXJhbWV0ZXJz
IHRoYXQgY29udHJvbCBob3cgdGhpcyBhZ2dyZWdhdGlvbiBpcyBwcmVmb3JtZWQuIFRoZSBmaXJz
dCBvZiB0aGVzZSBpcyB0aGUgY29sbGFwc2VkIHBhcmFtZXRlciwgd2hpY2ggaXMgc2V0IHRvIFRy
dWUgYnkgZGVmYXVsdCBpbiBhZ2dyZWdhdGlvbiBlbmRwb2ludHM6YCwKLSAgICAgICAgICAgIGNv
ZGVCbG9jaygnY29sbGFwc2VkPUZhbHNlJyksCi0gICAgICAgICAgICBgVGhlIGNvbGxhcHNlZCBw
YXJhbWV0ZXIgaW5kaWNhdGVzIHRoYXQgYSBzaW5nbGUgcmVzdWx0IHdpbGwgYmUgcmV0dXJuZWQg
Zm9yIGFsbCB1cGxvYWRzIHdoaWNoIG1hdGNoIHRoZSBzcGVjaWZpZWQgY3JpdGVyaWEuIElmIGZh
bHNlLCBhZ2dyZWdhdGlvbiBlbmRwb2ludHMgd2lsbCByZXR1cm4gdGhlIHJlc3VsdHMgd2hpY2gg
d291bGQgaGF2ZSBvdGhlcndpc2UgYmVlbiBhZ2dyZWdhdGVkLmAsCi0gICAgICAgICAgICBgQmVj
YXVzZSB0aGUgcmVzdWx0cyBkYXRhYmFzZSBkaXN0aW5ndWlzaGVzIGJldHdlZW4gZXhwZWN0ZWQg
YW5kIHVuZXhwZWN0ZWQgZmFpbHVyZXMsIGVuZHBvaW50cyBwZXJmb3JtaW5nIGFnZ3JlZ2F0aW9u
IHdpbGwgb2Z0ZW4gZmlsdGVyIG91dCBleHBlY3RlZCBmYWlsdXJlcywgYW5kIGZsYWcgdW5leHBl
Y3RlZCBwYXNzZXMuIFRvIG1vZGlmeSB0aGUgYmVoYXZpb3Igb2YgdGhlc2UgYWxnb3JpdGhtcywg
dGhlc2UgZW5kcG9pbnRzIHdpbGwgc3VwcG9ydCB0aGUgdW5leHBlY3RlZCBmbGFnOmAsCi0gICAg
ICAgICAgICBjb2RlQmxvY2soJ3VuZXhwZWN0ZWQ9RmFsc2UnKSwKLSAgICAgICAgICAgIGBCeSBk
ZWZhdWx0LCB0aGlzIGZsYWcgaXMgJ1RydWUnIGFuZCBlbmRwb2ludHMgd2lsbCBpZ25vcmUgdGVz
dHMgd2hpY2ggbWF0Y2hlZCB0aGVpciBleHBlY3RlZCBiZWhhdmlvci4gSWYgc2V0IHRvICdGYWxz
ZScsIGVuZHBvaW50cyB3aWxsIHJldHVybiByZXN1bHRzIGZvciBhbGwgZmFpbGluZyB0ZXN0cywg
cmVnYXJkbGVzcyBvZiB3aGF0IHRoZWlyIGV4cGVjdGF0aW9uIGlzLmAsCi0gICAgICAgIF0sCi0g
ICAgICAgICdCcmFuY2gnOiBbCi0gICAgICAgICAgICBgTW9zdCBkYXRhIGluIHRoZSByZXN1bHRz
IGRhdGFiYXNlIGlzIHBhcnRpdGlvbmVkIGJ5IGJyYW5jaCwgYW5kIGl0IGlzIGdlbmVyYWxseSBl
eHBlY3RlZCB0aGF0IHJlc3VsdHMgb24gc2VwZXJhdGUgYnJhbmNoZXMgYXJlIGluZGVwZW5kZW50
IG9mIG9uZSBhbm90aGVyLiBCeSBkZWZhdWx0LCBlbmRwb2ludHMgdGhhdCBzdXBwb3J0IHRoZSBi
cmFuY2ggcXVlcnkgd2lsbCBhc3N1bWUgdGhhdCB0aGUgYnJhbmNoIGlzIG1hc3RlciBmb3IgZ2l0
IHJlcG9zaXRvcmllcyBhbmQgdHJ1bmsgZm9yIFNWTiByZXBvc2l0b3JpZXMgaWYgbm8gdmFsdWUg
aXMgc3BlY2lmaWVkLiBJZiBtdWx0aXBsZSB2YWx1ZXMgZm9yIGJyYW5jaCBhcmUgc3BlY2lmaWVk
LCBvbmx5IHRoZSBmaXJzdCB3aWxsIGJlIHJlc3BlY3RlZC4gQSByZXF1ZXN0IHdoaWNoIGludGVu
ZGVkIHRvIHNlYXJjaCBmb3IgcmVzdWx0cyBvbiBvbmx5IHJlc3VsdHMgb24gdGhlIHNhZmFyaS02
MDcgYnJhbmNoIHdvdWxkIHVzZSBhIHF1ZXJ5IGxpa2UgdGhpczpgLAotICAgICAgICAgICAgY29k
ZUJsb2NrKCdicmFuY2g9c2FmYXJpLTYwNycpLAotICAgICAgICBdLAotICAgICAgICAnQ29uZmln
dXJhdGlvbic6IFsKLSAgICAgICAgICAgIGBDb25maWd1cmF0aW9ucyBhcmUgdGhlIGtleSB3aGlj
aCBkZWZpbmVzIGEgc3BlY2lmaWMgcm93IHdpdGhpbiB0aGUgcmVzdWx0cyBkYXRhYmFzZS4gVXBs
b2FkcyB3aGljaCBzaGFyZSBhIGNvbmZpZ3VyYXRpb24sIGJ1dCBub3QgYSBVVUlELCB3aWxsIGFw
cGVhciBpbiB0aGUgc2FtZSByb3cgb24gYSB0aW1lbGluZS4gQ29uZmlndXJhdGlvbnMgYXJlIHJl
cHJlc2VudGVkIHdpdGhpbiB0aGUgcmVzdWx0cyBkYXRhYmFzZSBhcyBhbiBvYmplY3Q6YCwKLSAg
ICAgICAgICAgIGNvZGVCbG9jaygne1xuJyArCi0gICAgICAgICAgICAgICAgJyAgICAiYXJjaGl0
ZWN0dXJlIjogPHN0cmluZyByZXByZXNlbnRpbmcgYXJjaGl0ZWN0dXJlLCBlLmcuIHg4Nl82NCwg
YXJtNjQ+LFxuJyArCi0gICAgICAgICAgICAgICAgJyAgICAicGxhdGZvcm0iOiA8c3RyaW5nIHJl
cHJlc2VudGluZyBwbGF0Zm9ybSBmYW1pbHksIGUuZy4gbWFjLCBpb3M+LFxuJyArCi0gICAgICAg
ICAgICAgICAgJyAgICAiaXNfc2ltdWxhdG9yIjogPGJvb2xlYW4gd2hpY2ggaXMgdHJ1ZSBpZiB0
aGUgY29uZmlndXJhdGlvbiB3YXMgc2ltdWxhdGluZyBhbiBlbWJlZGRlZCBkZXZpY2U+LFxuJyAr
Ci0gICAgICAgICAgICAgICAgJyAgICAidmVyc2lvbiI6IDxzdHJpbmcgb2YgdGhlIGZvcm0geC54
LnggcmVwcmVzZW50aW5nIHRoZSBPUyB2ZXJzaW9uPixcbicgKwotICAgICAgICAgICAgICAgICcg
ICAgImZsYXZvciI6IDx3aWxkLWNhcmQgc3RyaW5nIGFsbG93aW5nIGZvciBjdXN0b20gY29uZmln
dXJhdGlvbnM+LFxuJyArCi0gICAgICAgICAgICAgICAgJyAgICAic3R5bGUiOiA8ZGVidWcsIHJl
bGVhc2UsIGd1YXJkLW1hbGxvYywgZWN0Lj4sXG4nICsKLSAgICAgICAgICAgICAgICAnICAgICJt
b2RlbCI6IDxpUGhvbmUgNywgTWFjbWluaTYsMiwgZWN0Lj4sXG4nICsKLSAgICAgICAgICAgICAg
ICAnICAgICJ2ZXJzaW9uX25hbWUiOiA8TW9qYXZlLCBDYXRhbGluYSwgaU9TIDEzLCBlY3QuPixc
bicgKwotICAgICAgICAgICAgICAgICcgICAgInNkayI6IDwxOEEzOTEsIDE1QTQzMiwgZWN0Lj5c
bicgKwotICAgICAgICAgICAgICAgICd9JyksCi0gICAgICAgICAgICBgQW55IG9mIHRoZSB2YXJp
YWJsZXMgd2hpY2ggbWFrZSB1cCBhIGNvbmZpZ3VyYXRpb24gYXJlIHZhbGlkIHF1ZXJ5IHBhcmFt
ZXRlcnMgdG8gYW4gZW5kcG9pbnQgd2hpY2ggc3VwcG9ydHMgY29uZmlndXJhdGlvbiBxdWVyaWVz
LiBGb3IgZXhhbXBsZSwgYSBxdWVyeSBjb250YWluaW5nOmAsCi0gICAgICAgICAgICBjb2RlQmxv
Y2soJ3BsYXRmb3JtPW1hYyZmbGF2b3I9cmVsZWFzZScpLAotICAgICAgICAgICAgYHdpbGwgb25s
eSByZXR1cm4gZGF0YSBhc3NvY2lhdGVkIHdpdGggTWFjJ3MgcnVubmluZyByZWxlYXNlIGJpbmFy
aWVzLiBJZiB0aGUgc2FtZSB2YXJpYWJsZSBpcyBwcm92aWRlZCBtdWx0aXBsZSB0aW1lcyBpbiBh
IHNpbmdsZSBxdWVyeSwgbGlrZSB0aGlzOmAsCi0gICAgICAgICAgICBjb2RlQmxvY2soJ21vZGVs
PWlQaG9uZSUyMFNFJm1vZGVsPWlQaG9uZSUyMDcnKSwKLSAgICAgICAgICAgIGB0aGUgcmVzdWx0
aW5nIHF1ZXJ5IHdpbGwgcmV0dXJuIGRhdGEgYXNzb2NpYXRlZCB3aXRoIGlQaG9uZSBTRSBvciBp
UGhvbmUgNy5gLAotICAgICAgICAgICAgYEVuZHBvaW50cyB3aGljaCBzdXBwb3J0IHF1ZXJ5aW5n
IGJ5IGNvbmZpZ3VyYXRpb25zIGFyZSBvcHRpbWl6ZWQgdG8gb25seSBzZWFyY2ggdGhlIGxhc3Qg
MiB3ZWVrcyBvZiBjb25maWd1cmF0aW9ucy4gVGhpcyBtZWFucyB0aGF0IGlmIGEgY29uZmlndXJh
dGlvbiBoYXMgbm90IHJlcG9ydGVkIHJlc3VsdHMgaW4gbW9yZSB0aGFuIDIgd2Vla3MsIGl0J3Mg
ZGF0YSB3aWxsIG5vdCBiZSBhY2Nlc3NhYmxlIGJ5IGRlZmF1bHQuIFRvIHNlYXJjaCBhbGwgaGlz
dG9yaWMgY29uZmlndXJhdGlvbnMsIGFkZCB0aGlzOmAsCi0gICAgICAgICAgICBjb2RlQmxvY2so
J3JlY2VudD1GYWxzZScpLAotICAgICAgICAgICAgYHRvIHlvdXIgcXVlcnkuIFRoZSBkb3duc2lk
ZSBvZiBzZWFyY2hpbmcgYWxsIGNvbmZpZ3VyYXRpb25zIGlzIHRoYXQgdGhlIGRlZmF1bHQgYmVo
YXZpb3Igb2Ygc2VhcmNoaW5nIGFsbCByZWNlbnQgY29uZmlndXJhdGlvbnMgaWYgbm8gcXVlcnkg
cGFyYW1ldGVycyBhcmUgcHJvdmlkZWQgaXMgZGlzYWJsZWQgYmVjYXVzZSB0aGUgcmVzdWx0cyBk
YXRhYmFzZSBjYW5ub3Qgc2VhcmNoIGJ5IGFuIHVuYm91bmRlZCBudW1iZXIgb2YgY29uZmlndXJh
dGlvbnMuYCwKLSAgICAgICAgXSwKLSAgICAgICAgJ0xpbWl0JzogWwotICAgICAgICAgICAgYFRo
ZSB1bmRlcmx5aW5nIGFyY2hpdGVjdHVyZSBvZiB0aGUgcmVzdWx0cyBkYXRhYmFzZSBkb2VzIG5v
dCBhbGxvdyB1bmxpbWl0ZWQgcXVlcnkgc2l6ZXMuIE1vc3QgZW5kcG9pbnRzIGFjY2VwdCBhIGxp
bWl0IHF1ZXJ5IHdoaWNoIGxvb2tzIGxpa2UgdGhpczpgLAotICAgICAgICAgICAgY29kZUJsb2Nr
KCdsaW1pdD0xNTAnKSwKLSAgICAgICAgICAgIGBCeSBkZWZhdWx0LCB0aGUgbGltaXQgb2YgbW9z
dCBxdWVyaWVzIGlzIDEwMC4gQmVjYXVzZSBvZiB0aGUgYXJjaGl0ZWN0dXJlIG9mIHRoZSByZXN1
bHRzIGRhdGFiYXNlJ3MgYmFja2VuZCwgdGhlIGxpbWl0IHdpbGwgYWN0dWFsbHkgb3BlcmF0ZSBv
biBlYWNoIHBhcnRpdGlvbmluZyBrZXkgc2VwZXJhdGVseS4gRm9yIHRoZSAke2xvY2FsTGluayhb
J0FQSScsICcvYXBpL2NvbW1pdHMvZmluZCddLCAnL2FwaS9jb21taXRzL2ZpbmQnKX0gZW5kcG9p
bnQsIGZvciBleGFtcGxlLCB0aGUgbGltaXQgd2lsbCBvcGVyYXRlIG9uIGVhY2ggcmVwb3NpdG9y
eSBzZXBlcmF0ZWx5LiBTbyBhIHJlcXVlc3QgbGlrZSB0aGlzOmAsCi0gICAgICAgICAgICBjb2Rl
QmxvY2soJy9hcGkvY29tbWl0cy9maW5kP2xpbWl0PTE1MCcpLAotICAgICAgICAgICAgYG9uIGEg
cmVzdWx0cyBkYXRhYmFzZSBpbnN0YW5jZSB0cmFja2luZyAyIHJlcG9zaXRvcmllcyBjb3VsZCBw
b3RlbnRpYWxseSByZXR1cm4gMzAwIGNvbW1pdHMsIGluc3RlYWQgb2YgdGhlIDE1MCB0aGF0IHlv
dSBtaWdodCBleHBlY3QuYCwKLSAgICAgICAgXSwKLSAgICAgICAgJ1JlcG9zaXRvcnknOiBbCi0g
ICAgICAgICAgICBgVGhlICdyZXBvc2l0b3J5X2lkJyBxdWVyeSBhcmd1ZW1lbnQgYWxsb3dzIGEg
cmVxdWVzdCB0byBiZSBsaW1pdGVkIHRvIGEgc3BlY2lmaWMgcmVwb3NpdG9yeS4gQnkgZGVmYXVs
dCwgZW5kcG9pbnRzIHdoaWNoIHN1cHBvcnQgdGhlIHJlcG9zaXRvcnlfaWQgcXVlcnkgYXJndW1l
bnQgd2lsbCBzZWFyY2ggYWxsIHJlcG9zaXRvcmllcyBpZiBubyByZXBvc2l0b3J5X2lkIGlzIHBy
b3ZpZGVkLiBBIHJlcXVlc3Qgd2hpY2ggb25seSBzZWFyY2hlcyBmb3IgY29tbWl0cyBpbiB0aGUg
V2ViS2l0IHJlcG9zaXRvcnkgd291bGQgaGF2ZSBhIHF1ZXJ5IGFyZ3VtZW50IGxpa2UgdGhpczpg
LAotICAgICAgICAgICAgY29kZUJsb2NrKCdyZXBvc2l0b3J5X2lkPXdlYmtpdCcpLAotICAgICAg
ICBdLAotICAgICAgICAnU3VpdGUnOiBbCi0gICAgICAgICAgICBgSW4gbW9zdCBjYXNlcywgdGhl
IHN1aXRlIGlzIGRlZmluZWQgYnkgdGhlIHBhdGggb2YgYW4gZW5kcG9pbnQsIG5vdCB0aGUgcGFy
YW1ldGVycy4gSW4gc29tZSBjYXNlcywgaG93ZXZlciwgc3VpdGUgaXMgZGVmaW5lZCBieSB0aGUg
cGFyYW1ldGVycy4gSW4gdGhlc2UgY2FzZXMsIHRoZSBxdWVyeSBwYXJhbWV0ZXJzIHdpbGwgbG9v
ayBsaWtlIHRoaXM6YCwKLSAgICAgICAgICAgIGNvZGVCbG9jaygnc3VpdGU9bGF5b3V0LXRlc3Rz
JyksCi0gICAgICAgICAgICBgSXQgaXMgYWxzbyB2YWxpZCB0byBkZWZpbmUgbXVsdGlwbGUgc3Vp
dGVzIGluIGEgc2luZ2xlIHF1ZXJ5IG9uIGVuZHBvaW50cyB0aGF0IHN1cHBvcnQgc3VpdGUgcXVl
cmllcywgbGlrZSB0aGlzOmAsCi0gICAgICAgICAgICBjb2RlQmxvY2soJ3N1aXRlPWxheW91dC10
ZXN0cyZzdWl0ZT13ZWJraXRweS10ZXN0cycpLAotICAgICAgICAgICAgYEEgcXVlcnkgbGlrZSB0
aGlzIHdpbGwgcmV0dXJuIGRhdGEgYXNzb2NpYXRlZCB3aXRoIHRoZSBsYXlvdXQtdGVzdHMgc3Vp
dGUgYW5kIHRoZSB3ZWJraXRweS10ZXN0cyBzdWl0ZS4gSWYgbm90IHN1aXRlIGlzIHByb3ZpZGVk
LCBkYXRhIGZvciBhbGwgYXZhaWxhYmxlIHN1aXRlcyB3aWxsIGJlIHJldHVybmVkLmAsCi0gICAg
ICAgIF0sCi0gICAgICAgICdUaW1lJyA6IFsKLSAgICAgICAgICAgIGBUaGUgdGltZSBxdWVyeSBp
cyBzZXBlcmF0ZSBmcm9tIHRoZSAke2xvY2FsTGluayhbJ1F1ZXJ5IFBhcmFtZXRlcnMnLCAnVVVJ
RCddLCAnVVVJRCcpfSBxdWVyeS4gVGhlIHRpbWUgcXVlcnkgYWxsb3dzIGRhdGEgdG8gYmUgc29y
dGVkIGFuZCByZXRyZWl2ZWQgYnkgdGhlIFVUQyB0aW1lc3RhbXAgb2YgdGhlIHNwZWNpZmljIHJ1
biB0aGF0IGRhdGEgaXMgYXNzb2NpYXRlZCB3aXRoLiBGb3IgZXhhbXBsZSwgYSByZXF1ZXN0IHBy
b3ZpZGVkIHdpdGggdGhpcyBxdWVyeTpgLAotICAgICAgICAgICAgY29kZUJsb2NrKCdhZnRlcl90
aW1lPTE1NjI5NTI0NzMmYmVmb3JlX3RpbWU9MTU2Mjk2MTAwNicpLAotICAgICAgICAgICAgYHdp
bGwgb25seSByZXR1cm4gZGF0YSBhc3NvY2lhdGVkIHdpdGggcnVucyB0aGF0IG9jY3VycmVkIGFm
dGVyICR7bmV3IERhdGUoMTU2Mjk1MjQ3MyAqIDEwMDApLnRvTG9jYWxlU3RyaW5nKCl9IGJ1dCBi
ZWZvcmUgJHtuZXcgRGF0ZSgxNTYyOTYxMDA2ICogMTAwMCkudG9Mb2NhbGVTdHJpbmcoKX0uYCwK
LSAgICAgICAgXSwKLSAgICAgICAgJ1Rlc3QnOiBbCi0gICAgICAgICAgICBgSW4gbW9zdCBjYXNl
cywgdGhlIHRlc3QgaXMgZGVmaW5lZCBieSB0aGUgcGF0aCBvZiBhbiBlbmRwb2ludCwgbm90IHRo
ZSBwYXJhbWV0ZXJzLiBJbiBzb21lIGNhc2VzLCBob3dldmVyLCB0ZXN0IGlzIGRlZmluZWQgYnkg
dGhlIHBhcmFtZXRlcnMuIEluIHRoZXNlIGNhc2VzLCB0aGUgcXVlcnkgcGFyYW1ldGVycyB3aWxs
IGxvb2sgbGlrZSB0aGlzOmAsCi0gICAgICAgICAgICBjb2RlQmxvY2soJ3Rlc3Q9dGVzdC5uYW1l
JyksCi0gICAgICAgICAgICBgSXQgaXMgYWxzbyB2YWxpZCB0byBkZWZpbmUgbXVsdGlwbGUgdGVz
dHMgaW4gYSBzaW5nbGUgcXVlcnkgb24gZW5kcG9pbnRzIHRlc3Qgc3VwcG9ydCB0ZXN0IHF1ZXJp
ZXMsIGxpa2UgdGhpczpgLAotICAgICAgICAgICAgY29kZUJsb2NrKCd0ZXN0PXRlc3QubmFtZSZ0
ZXN0PW90aGVyLm5hbWUnKSwKLSAgICAgICAgICAgIGBBIHF1ZXJ5IGxpa2UgdGhpcyB3aWxsIHJl
dHVybiB0ZXN0IG5hbWVzIHRoYXQgc3RhcnQgd2l0aCBlaXRoZXIgJ3Rlc3QubmFtZScgb3IgJ290
aGVyLm5hbWUnLmAsCi0gICAgICAgIF0sCi0gICAgICAgICdVVUlEJzogWwotICAgICAgICAgICAg
YFVsdGltYXRlbHksIG1vc3QgZGF0YSBpbiB0aGUgcmVzdWx0cyBkYXRhYmFzZSBpcyBzb3J0ZWQg
YnkgVVVJRC4gQXMgbWVudGlvbmVkIGluIHRoZSAke2xvY2FsTGluayhbJ0FQSScsICdDb21taXRz
J10sICdjb21taXRzIHNlY3Rpb24nKX0sIFVVSURzIGFyZSBkZWZpbmVkIGJ5IHRoZSB0aW1lc3Rh
bXAgb2YgYSBjb21taXQgYW5kIHRoZSBjb21taXQgb3JkZXIsIHdoZXJlIHRoZSBjb21taXQgb3Jk
ZXIgaXMgdGhlIG9yZGVyIGEgY29tbWl0IGFwcGVhcnMgaW4gaXQncyBwYXRjaCBzZXJpZXMuIFNp
bmNlIG1vc3QgY29tbWl0cyBhcmUgbm90IGluIGEgcGF0Y2ggc2VyaWVzLCBtb3N0IGNvbW1pdHMg
aGF2ZSBhbiBvcmRlciBvZiAwLiBDb21taXQgVVVJRHMgYXJlIGNhbGN1bGF0ZWQgd2l0aCB0aGUg
Zm9sbG93aW5nIGVxdWF0aW9uOmAsCi0gICAgICAgICAgICBjb2RlQmxvY2soJ2NvbW1pdC51dWlk
ID0gY29tbWl0LnRpbWVzdGFtcCAqIDEwMCArIGNvbW1pdC5vcmRlcicpLAotICAgICAgICAgICAg
YEFsbCBlbmRwb2ludHMgd2hpY2ggYWNjZXB0IHRpbWUgcXVlcmllcyBhbGxvdyBkYXRhIHRvIGJl
IHJldHJpZXZlZCBieSBhIFVVSUQgd2l0aCBhIHF1ZXJ5IGxpa2UgdGhpczpgLAotICAgICAgICAg
ICAgY29kZUJsb2NrKCd1dWlkPTE1NjI5NTI0NzMwMCcpLAotICAgICAgICAgICAgYFNpbmNlIFVV
SURzIGFyZSBpbnRlZ2VycywgZW5kcG9pbnRzIHdoaWNoIGFjY2VwdCB0aW1lIHF1ZXJpZXMgYWxz
byBhY2NlcHQgVVVJRCByYW5nZXMuIEEgcXVlcnkgbG9va2luZyBmb3IgZGF0YSBiZXR3ZWVuIFVV
SURzIDE1NjI5NTE0OTEwMCBhbmQgMTU2Mjk1MjQ3MzAwIHdvdWxkIGJlIGZvcm1hdGVkIGxpa2Ug
dGhpczpgLAotICAgICAgICAgICAgY29kZUJsb2NrKCdhZnRlcl91dWlkPTE1NjI5NTE0OTEwMCZi
ZWZvcmVfdXVpZD0xNTYyOTUyNDczMDAnKSwKLSAgICAgICAgICAgIGBXZSBhbHNvIGtub3cgdGhh
dCB0aW1lc3RhbXBzIGNhbiBiZSBlYXNpbHkgY29udmVydGVkIHRvIFVVSURzLiBFbmRwb2ludHMg
d2hpY2ggc3VwcG9ydCBxdWVyeWluZyBieSBVVUlEIGFsc28gc3VwcG9ydCBxdWVyeWluZyBieSBV
VEMgdGltZXN0YW1wLiBPdXIgcHJldmlvdXMgcXVlcnkgY291bGQgYmUgaW5zdGVhZCB3cml0dGVu
IGxpa2UgdGhpczpgLAotICAgICAgICAgICAgY29kZUJsb2NrKCdhZnRlcl90aW1lc3RhbXA9MTU2
Mjk1MTQ5MSZiZWZvcmVfdGltZXN0YW1wPTE1NjI5NTI0NzMnKSwKLSAgICAgICAgICAgIGBDb21t
aXRzIGNhbiBhbHNvIGJlIHRyYW5zbGF0ZWQgdG8gdGltZXN0YW1wLCBhbHRob3VnaCB3aXRoIGEg
Yml0IG1vcmUgd29yayByZXF1aXJlZCBmcm9tIHRoZSBiYWNrLWVuZC4gRW5kcG9pbnRzIHdoaWNo
IHN1cHBvcnQgcXVlcnlpbmcgYnkgVVVJRCBhbHNvIHN1cHBvcnQgcXVlcnlpbmcgYnkgY29tbWl0
IGluZm9ybWF0aW9uLiBJbiB0aGUgZmlyc3QgZXhhbXBsZSBpbiB0aGlzIHNlY3Rpb24sIHdlIHF1
ZXJpZWQgYnkgVVVJRCAxNTYyOTUyNDczMDAuIFRoaXMgY29ycmVzcG9uZHMgdG8gJHtleHRlcm5h
bExpbmsoJ2h0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yNDczOTEvd2Via2l0Jywg
J3IyNDczOTEnKX0uIFdlIGNvdWxkIGluc3RlYWQgcXVlcnkgYnkgdGhlIGNvbW1pdCBpbmZvcm1h
dGlvbjpgLAotICAgICAgICAgICAgY29kZUJsb2NrKCdpZD0yNDczOTEmcmVwb3NpdG9yeV9pZD13
ZWJraXQmYnJhbmNoPXRydW5rJyksCi0gICAgICAgICAgICBgQnV0LCBhcyBvdXRsaW5lZCBpbiB0
aGUgb3ZlcnZpZXdzIGFib3V0ICR7bG9jYWxMaW5rKFsnUXVlcnkgUGFyYW1ldGVycycsICdCcmFu
Y2gnXSwgJ2JyYW5jaGVzJyl9IGFuZCAke2xvY2FsTGluayhbJ1F1ZXJ5IFBhcmFtZXRlcnMnLCAn
UmVwb3NpdG9yeSddLCAncmVwb3NpdG9yaWVzJyl9LCBlbmRwb2ludHMgd2hpY2ggc3VwcG9ydCB0
aG9zZSBxdWVyaWVzIGhhdmUgZGVmYXVsdHMgd2hpY2ggY292ZXIgbWFueSBjYXNlcywgc28gdGhl
IHByZXZpb3VzIHF1ZXJ5IGNvdWxkIGJlIHNpbXBsaWZpZWQgdG86YCwKLSAgICAgICAgICAgIGNv
ZGVCbG9jaygnaWQ9MjQ3MzkxJyksCi0gICAgICAgICAgICBgQmVjYXVzZSBlbmRwb2ludHMgc3Vw
cG9ydGluZyB0aW1lIGFyZSBjb252ZXJ0IGV2ZXJ5dGhpbmcgdG8gVVVJRCBvbiB0aGUgYmFja2Vu
ZCwgdGhlIHF1ZXJpZXMgdG8gdGhlc2UgZW5kcG9pbnRzIGFyZSBxdWl0ZSBmbGV4aWJsZS4gVGhl
IGZvbGxvd2luZyBhcmUgYWxsIGV4YW1wbGVzIG9mIHZhbGlkIHRpbWUgcXVlcmllczpgLAotICAg
ICAgICAgICAgY29kZUJsb2NrKCdhZnRlcl9pZD0yNDczOTEmcmVwb3NpdG9yeV9pZD13ZWJraXQn
KSwKLSAgICAgICAgICAgIGNvZGVCbG9jaygnYWZ0ZXJfaWQ9MjQ3MzkwJmJlZm9yZV90aW1lc3Rh
bXA9MTU2Mjk1MjQ3MycpLAotICAgICAgICAgICAgY29kZUJsb2NrKCdiZWZvcmVfaWQ9MjQ3Mzkx
JmFmdGVyX3V1aWQ9MTU2Mjk1MTQ5MTAwJmJlZm9yZV9icmFuY2g9dHJ1bmsnKSwKLSAgICAgICAg
XSwKLSAgICB9Ci19Ci0KLWNvbnN0IHNpZGViYXJDb250cm9sID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeUNsYXNzTmFtZSgnbW9iaWxlLXNpZGViYXItY29udHJvbCcpWzBdOwotc2lkZWJhckNvbnRy
b2wuY2xhc3NMaXN0LmFkZCgnZGlzcGxheScpOwotCi1jb25zdCBzaWRlYmFyUmVmID0gUkVGLmNy
ZWF0ZVJlZih7Ci0gICAgb25FbGVtZW50TW91bnQ6IChlbGVtZW50KSA9PiB7Ci0gICAgICAgIHNp
ZGViYXJDb250cm9sLm9uY2xpY2sgPSAoKSA9PiB7Ci0gICAgICAgICAgICBpZiAoZWxlbWVudC5z
dHlsZS5kaXNwbGF5KQotICAgICAgICAgICAgICAgIGVsZW1lbnQuc3R5bGUuZGlzcGxheSA9IG51
bGw7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgZWxlbWVudC5zdHlsZS5kaXNw
bGF5ID0gJ2Jsb2NrJzsKLSAgICAgICAgfQotICAgIH0KLX0pOwotCi1ET00uaW5qZWN0KAotICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhcHAnKSwKLSAgICBgPGRpdiBjbGFzcz0ic2lkZWJh
ciB1bmRlci10b3BiYXItd2l0aC1hY3Rpb25zIiByZWY9IiR7c2lkZWJhclJlZn0iPgotICAgICAg
ICA8ZGl2IGNsYXNzPSJsaXN0Ij4KLSAgICAgICAgJHtPYmplY3Qua2V5cyhkb2N1bWVudGF0aW9u
KS5tYXAoKHByaW1hcnkpID0+IHsKLSAgICAgICAgICAgIHJldHVybiBgPGRpdiBjbGFzcz0iaXRl
bSI+Ci0gICAgICAgICAgICAgICAgICAgIDxoMz48YSBocmVmPSIjJHtwcmltYXJ5LnJlcGxhY2Uo
L1xzL2csICctJyl9Ij4ke3ByaW1hcnl9PC9hPjwvaDM+Ci0gICAgICAgICAgICAgICAgPC9kaXY+
Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaXRlbSI+Ci0gICAgICAgICAgICAgICAgICAg
IDxkaXYgY2xhc3M9Imxpc3QiPgotICAgICAgICAgICAgICAgICAgICAgICAgJHtPYmplY3Qua2V5
cyhkb2N1bWVudGF0aW9uW3ByaW1hcnldKS5tYXAoKHNlY29uZGFyeSkgPT4gewotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBgPGRpdiBjbGFzcz0iaXRlbSBzdWIiPjxhIGhyZWY9
IiMkeyhwcmltYXJ5ICsgJy0nICsgc2Vjb25kYXJ5KS5yZXBsYWNlKC9ccy9nLCAnLScpfSI+JHtz
ZWNvbmRhcnl9PC9hPjwvZGl2PmAKLSAgICAgICAgICAgICAgICAgICAgICAgIH0pLmpvaW4oJycp
fQotICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICA8L2Rpdj5gOwot
ICAgICAgICB9KS5qb2luKCcnKX0KLSAgICAgICAgPC9kaXY+Ci0gICAgPC9kaXY+Ci0gICAgPGRp
diBjbGFzcz0ibWFpbiB1bmRlci10b3BiYXItd2l0aC1hY3Rpb25zIj4KLSAgICAgICAgJHtPYmpl
Y3Qua2V5cyhkb2N1bWVudGF0aW9uKS5tYXAoKHByaW1hcnkpID0+IHsKLSAgICAgICAgICAgIHJl
dHVybiBgPGRpdiBjbGFzcz0iYXJ0aWNsZSBjb250ZW50IHNlY3Rpb24iPgotICAgICAgICAgICAg
ICAgICAgICAke2p1bXBJZFVuZGVySGVhZGVyKHByaW1hcnkpfQotICAgICAgICAgICAgICAgICAg
ICA8ZGl2IGNsYXNzPSJoZWFkZXIiPjxoMT4ke3ByaW1hcnl9PC9oMT48L2Rpdj4KLSAgICAgICAg
ICAgICAgICAgICAgJHtPYmplY3Qua2V5cyhkb2N1bWVudGF0aW9uW3ByaW1hcnldKS5tYXAoKHNl
Y29uZGFyeSkgPT4gewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGA8ZGl2IGNsYXNz
PSJoZWFkZXIiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2p1bXBJZFVuZGVy
SGVhZGVyKGAke3ByaW1hcnl9LSR7c2Vjb25kYXJ5fWApfQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZSI+PGgyPiR7c2Vjb25kYXJ5fTwvaDI+PC9kaXY+
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJHtkb2N1bWVudGF0aW9uW3ByaW1hcnldW3NlY29uZGFyeV0ubWFwKChkYXRhKSA9
PiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBgPGRpdiBjbGFzcz0i
Y29udGVudCI+JHtkYXRhfTwvZGl2PmA7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSku
am9pbignJyl9YDsKLSAgICAgICAgICAgICAgICAgICAgfSkuam9pbignJyl9Ci0gICAgICAgICAg
ICAgICAgPC9kaXY+YDsKLSAgICAgICAgfSkuam9pbignJyl9Ci0gICAgPC9kaXY+YCwKLSkKLQot
PC9zY3JpcHQ+Ci0KLXslIGVuZGJsb2NrICV9Ci0KLXslIGJsb2NrIGNvbnRlbnQgJX0KLTxkaXYg
aWQ9ImFwcCI+PC9kaXY+Ci17JSBlbmRibG9jayAlfQpJbmRleDogVG9vbHMvcmVzdWx0c2RicHkv
cmVzdWx0c2RicHkvdmlldy90ZW1wbGF0ZXMvZXJyb3IuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS92aWV3L3RlbXBsYXRlcy9lcnJvci5odG1sCShyZXZp
c2lvbiAyNjU1MzEpCisrKyBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS92aWV3L3RlbXBs
YXRlcy9lcnJvci5odG1sCShub25leGlzdGVudCkKQEAgLTEsMzQgKzAsMCBAQAotPCEtLQotIENv
cHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0KLSBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSBhcmUgbWV0OgotIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0KLSBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gIkFTIElTIiBBTkQgQU5ZCi0gRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgotIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCi0gT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0tLT4KLQoteyUgZXh0
ZW5kcyAiYmFzZS5odG1sIiAlfQoteyUgYmxvY2sgaGVhZCAlfQoteyUgZW5kYmxvY2sgJX0KLXsl
IGJsb2NrIGNvbnRlbnQgJX0KLTxkaXYgY2xhc3M9ImNvbnRlbnQiPgotICAgIDxoMj57eyBuYW1l
IH19PC9oMj4KLSAgICA8ZGl2IGNsYXNzPSJ0ZXh0Ij57eyBkZXNjcmlwdGlvbiB9fTwvZGl2Pgot
PC9kaXY+Ci17JSBlbmRibG9jayAlfQpJbmRleDogVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2Ri
cHkvdmlldy90ZW1wbGF0ZXMvaW52ZXN0aWdhdGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9y
ZXN1bHRzZGJweS9yZXN1bHRzZGJweS92aWV3L3RlbXBsYXRlcy9pbnZlc3RpZ2F0ZS5odG1sCShy
ZXZpc2lvbiAyNjU1MzEpCisrKyBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS92aWV3L3Rl
bXBsYXRlcy9pbnZlc3RpZ2F0ZS5odG1sCShub25leGlzdGVudCkKQEAgLTEsNTA4ICswLDAgQEAK
LTwhLS0KLSBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotCi0gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gYXJlIG1ldDoKLSAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotCi0gVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuICJBUyBJUyIgQU5EIEFOWQotIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCi0gSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKLSBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCi0gUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQotIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotLS0+
Ci0KLXslIGV4dGVuZHMgImJhc2UuaHRtbCIgJX0KLXslIGJsb2NrIGhlYWQgJX0KLTxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImFzc2V0cy9jc3MvdGltZWxpbmUu
Y3NzIj4KLQotPHNjcmlwdCB0eXBlPSJtb2R1bGUiPgotaW1wb3J0IHtBcmNoaXZlUm91dGVyfSBm
cm9tICcvYXNzZXRzL2pzL2FyY2hpdmVSb3V0ZXIuanMnOwotaW1wb3J0IHtDb21taXRCYW5rfSBm
cm9tICcvYXNzZXRzL2pzL2NvbW1pdC5qcyc7Ci1pbXBvcnQge0Vycm9yRGlzcGxheSwgUXVlcnlN
b2RpZmllciwgcGFyYW1zVG9RdWVyeSwgcXVlcnlUb1BhcmFtcywgcGVyY2VudGFnZSwgZWxhcHNl
ZFRpbWV9IGZyb20gJy9hc3NldHMvanMvY29tbW9uLmpzJzsKLWltcG9ydCB7Q29uZmlndXJhdGlv
bn0gZnJvbSAnL2Fzc2V0cy9qcy9jb25maWd1cmF0aW9uLmpzJzsKLWltcG9ydCB7RXhwZWN0YXRp
b25zfSBmcm9tICcvYXNzZXRzL2pzL2V4cGVjdGF0aW9ucy5qcyc7Ci1pbXBvcnQge0RyYXdlciwg
QnJhbmNoU2VsZWN0b3IsIENvbmZpZ3VyYXRpb25TZWxlY3RvcnN9IGZyb20gJy9hc3NldHMvanMv
ZHJhd2VyLmpzJzsKLWltcG9ydCB7TGVnZW5kfSBmcm9tICcvYXNzZXRzL2pzL3RpbWVsaW5lLmpz
JzsKLWltcG9ydCB7VG9vbFRpcH0gZnJvbSAnL2Fzc2V0cy9qcy90b29sdGlwLmpzJzsKLWltcG9y
dCB7RmFpbHVyZXN9IGZyb20gJy9hc3NldHMvanMvZmFpbHVyZXMuanMnOwotaW1wb3J0IHtET00s
IFJFRiwgRXZlbnRTdHJlYW19IGZyb20gJy9saWJyYXJ5L2pzL1JlZi5qcyc7Ci0KLWNvbnN0IERF
RkFVTFRfTElNSVQgPSAxMDA7Ci1jb25zdCBTVUlURVMgPSBKU09OLnBhcnNlKCd7eyBzdWl0ZXN8
c2FmZSB9fScpOwotCi1jb25zdCB2aWV3cyA9IFtdOwotbGV0IGFncmVnYXRlQ29ubmZpZ3VyYXRp
b24gPSBDb25maWd1cmF0aW9uLmZyb21RdWVyeSgpOwotbGV0IHJhbmdlUGFyYW1zID0ge307Ci0K
LWNvbnN0IHVuZXhwZWN0ZWRRdWVyeSA9IG5ldyBRdWVyeU1vZGlmaWVyKCd1bmV4cGVjdGVkJyk7
Ci1mdW5jdGlvbiB3aWxsRmlsdGVyRXhwZWN0ZWQoKSB7Ci0gICAgY29uc3QgY3VycmVudCA9IHVu
ZXhwZWN0ZWRRdWVyeS5jdXJyZW50KCk7Ci0gICAgaWYgKCFjdXJyZW50Lmxlbmd0aCkKLSAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKFsndHJ1ZScsICdUUlVFJywgJ3llcycsICdZRVMnLCAn
MSddLmluY2x1ZGVzKGN1cnJlbnRbY3VycmVudC5sZW5ndGggLSAxXSkpCi0gICAgICAgIHJldHVy
biB0cnVlOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotCi1jbGFzcyBTdWl0ZUZhaWx1cmVzVmll
dyB7Ci0gICAgY29uc3RydWN0b3Ioc3VpdGUpIHsKLSAgICAgICAgdGhpcy5zdWl0ZSA9IHN1aXRl
OwotICAgICAgICB0aGlzLmRhdGFGb3JDb25maWcgPSB7fTsKLQotICAgICAgICB0aGlzLnJlZiA9
IFJFRi5jcmVhdGVSZWYoewotICAgICAgICAgICAgc3RhdGU6IHtkaXNwbGF5ZWQ6IHRydWV9LAot
ICAgICAgICAgICAgb25TdGF0ZVVwZGF0ZTogKGVsZW1lbnQsIGRpZmYsIHN0YXRlKSA9PiB7Ci0g
ICAgICAgICAgICAgICAgZWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gZGlmZi5kaXNwbGF5ZWQgPyBu
dWxsIDogJ25vbmUnOwotICAgICAgICAgICAgfQotICAgICAgICB9KTsKLSAgICAgICAgdGhpcy5z
ZWxlY3RDb25maWd1cmF0aW9ucyA9IFJFRi5jcmVhdGVSZWYoewotICAgICAgICAgICAgb25FbGVt
ZW50TW91bnQ6IChlbGVtZW50KSA9PiB7Ci0gICAgICAgICAgICAgICAgZWxlbWVudC5wYXJlbnRF
bGVtZW50LnBhcmVudEVsZW1lbnQuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKLSAgICAgICAgICAg
ICAgICBlbGVtZW50Lm9uY2hhbmdlID0gKCkgPT4gewotICAgICAgICAgICAgICAgICAgICB0aGlz
LnNlbGVjdGVkID0gcGFyc2VJbnQoZWxlbWVudC52YWx1ZSk7Ci0gICAgICAgICAgICAgICAgICAg
IHRoaXMuc2VsZWN0KHRoaXMuc2VsZWN0ZWQpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIH0sCi0gICAgICAgICAgICBvblN0YXRlVXBkYXRlOiAoZWxlbWVudCwgc3RhdGUpID0+IHsK
LSAgICAgICAgICAgICAgICBpZiAoIXN0YXRlIHx8IHN0YXRlLmxlbmd0aCA8PSAxKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGVsZW1lbnQucGFyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50LnN0eWxl
LmRpc3BsYXkgPSAnbm9uZSc7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
ICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBlbGVtZW50LnBhcmVudEVsZW1lbnQucGFyZW50
RWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gbnVsbDsKLSAgICAgICAgICAgICAgICBjb25zdCBjb25m
aWd1cmF0aW9ucyA9IFsuLi5zdGF0ZV07Ci0gICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbnMu
c29ydCgoYSwgYikgPT4gewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gYS50b0tleSgpLmxv
Y2FsZUNvbXBhcmUoYi50b0tleSgpKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAg
ICAgICBjb25maWd1cmF0aW9ucy51bnNoaWZ0KENvbmZpZ3VyYXRpb24uY29tYmluZSguLi5zdGF0
ZSkpOwotCi0gICAgICAgICAgICAgICAgbGV0IGluZGV4ID0gMDsKLSAgICAgICAgICAgICAgICBl
bGVtZW50LmlubmVySFRNTCA9IGNvbmZpZ3VyYXRpb25zLm1hcChjb25maWd1cmF0aW9uID0+IHsK
LSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGA8b3B0aW9uIHZhbHVlPSIke2luZGV4fSIke2lu
ZGV4ID09IHRoaXMuc2VsZWN0ZWQgPyAnIHNlbGVjdGVkJyA6ICcnfT4ke2NvbmZpZ3VyYXRpb259
JHtpbmRleCsrID8gJycgOiAnIChBZ3JlZ2F0ZWQpJ308L29wdGlvbj5gOwotICAgICAgICAgICAg
ICAgIH0pLmpvaW4oJycpOwotICAgICAgICAgICAgfSwKLSAgICAgICAgfSk7Ci0KLSAgICAgICAg
dGhpcy5yZXN1bHRWaWV3ID0gUkVGLmNyZWF0ZVJlZih7Ci0gICAgICAgICAgICBzdGF0ZToge2Nv
bmZpZ3VyYXRpb246IG51bGwsIHJlc3VsdHM6IFtdLCBmYWlsdXJlczogW119LAotICAgICAgICAg
ICAgb25TdGF0ZVVwZGF0ZTogKGVsZW1lbnQsIGRpZmYsIHN0YXRlKSA9PiB7Ci0gICAgICAgICAg
ICAgICAgaWYgKCFkaWZmLmNvbmZpZ3VyYXRpb24gfHwgIWRpZmYucmVzdWx0cyB8fCAhZGlmZi5m
YWlsdXJlcykgewotICAgICAgICAgICAgICAgICAgICBET00uaW5qZWN0KGVsZW1lbnQsICc8ZGl2
IGNsYXNzPSJsb2FkZXIiPjxkaXYgY2xhc3M9InNwaW5uZXIiPjwvZGl2PjwvZGl2PicpOwotICAg
ICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAg
ICAgICAgY29uc3QgYWdyZWdhdGVkU3RhdHMgPSB7Ci0gICAgICAgICAgICAgICAgICAgIHRlc3Rz
X3J1bjogZGlmZi5yZXN1bHRzLm1hcChyZXN1bHQgPT4gcmVzdWx0LnN0YXRzLnRlc3RzX3J1biku
cmVkdWNlKChhLCBiKSA9PiBhICsgYiwgMCksCi0gICAgICAgICAgICAgICAgICAgIHRlc3RzX3Nr
aXBwZWQ6IGRpZmYucmVzdWx0cy5tYXAocmVzdWx0ID0+IHJlc3VsdC5zdGF0cy50ZXN0c19za2lw
cGVkKS5yZWR1Y2UoKGEsIGIpID0+IGEgKyBiLCAwKSwKLSAgICAgICAgICAgICAgICB9OwotCi0g
ICAgICAgICAgICAgICAgbGV0IGxhc3RWYWx1ZSA9IDA7Ci0gICAgICAgICAgICAgICAgY29uc3Qg
d2lsbEZpbHRlckV4cGVjdGVkVmFsdWUgPSB3aWxsRmlsdGVyRXhwZWN0ZWQoKTsKLSAgICAgICAg
ICAgICAgICBmb3IgKGxldCBpID0gRXhwZWN0YXRpb25zLmZhaWx1cmVUeXBlcy5sZW5ndGggLSAx
OyBpID4gMDsgLS1pKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IHdpbGxGaWx0
ZXJFeHBlY3RlZFZhbHVlID8gYHRlc3RzX3VuZXhwZWN0ZWRfJHtFeHBlY3RhdGlvbnMuZmFpbHVy
ZVR5cGVzW2ldfWAgOiBgdGVzdHNfJHtFeHBlY3RhdGlvbnMuZmFpbHVyZVR5cGVzW2ldfWA7Ci0g
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbWJpbmVkID0gZGlmZi5yZXN1bHRzLm1hcChyZXN1
bHQgPT4gcmVzdWx0LnN0YXRzW2tleV0gPyByZXN1bHQuc3RhdHNba2V5XSA6IDApLnJlZHVjZSgo
YSwgYikgPT4gYSArIGIsIDApOwotICAgICAgICAgICAgICAgICAgICBhZ3JlZ2F0ZWRTdGF0c1tg
dGVzdHNfJHtFeHBlY3RhdGlvbnMuZmFpbHVyZVR5cGVzW2ldfWBdID0gTWF0aC5tYXgoY29tYmlu
ZWQgLSBsYXN0VmFsdWUsIDApOwotICAgICAgICAgICAgICAgICAgICBsYXN0VmFsdWUgPSBjb21i
aW5lZDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYWdyZWdhdGVkU3RhdHMu
dGVzdHNfc3VjY2VzcyA9IE1hdGgubWF4KGFncmVnYXRlZFN0YXRzLnRlc3RzX3J1biAtIGxhc3RW
YWx1ZSwgMCk7Ci0KLSAgICAgICAgICAgICAgICBET00uaW5qZWN0KGVsZW1lbnQsIGA8ZGl2IGNs
YXNzPSJyb3ciPgotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLXMtJHtk
aWZmLnJlc3VsdHMubGVuZ3RoID09PSAxID8gJzEyJyA6ICc2J30gbGlzdCI+Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaXRlbSI+Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDxiPkNvbmZpZ3VyYXRpb248L2I+Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQgYmxvY2siIHN0eWxlPSJ3aWR0aDogMTAwJTsgb3Zl
cmZsb3c6IGhpZGRlbjsgd2hpdGUtc3BhY2U6IG5vd3JhcDsgdGV4dC1vdmVyZmxvdzogZWxsaXBz
aXM7Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7ZGlmZi5jb25maWd1
cmF0aW9ufQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8
ZGl2IGNsYXNzPSJpdGVtIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGI+Q29t
cG9zaXRpb248L2I+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21wcmlzZWQgb2YgJHtkaWZmLnJlc3Vs
dHMubGVuZ3RofSBydW4ke2RpZmYucmVzdWx0cy5sZW5ndGggPT09IDEgPyAnJyA6ICdzJ30gdXNp
bmcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7KCgpID0+IHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbWluVXVpZCA9IE1hdGgucm91
bmQobmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbGV0IG1heFV1aWQgPSAwOwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRpZmYucmVzdWx0cy5mb3JFYWNoKHJlc3VsdCA9PiB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pblV1aWQgPSBNYXRoLm1pbiht
aW5VdWlkLCByZXN1bHQudXVpZCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1heFV1aWQgPSBNYXRoLm1heChtYXhVdWlkLCByZXN1bHQudXVpZCk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1pblV1aWQgPiBtYXhVdWlkKQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2ludmFsaWQgY29tbWl0
IHJhbmdlJzsKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGNvbW1pdHMgPSBDb21taXRCYW5rLmNvbW1pdHNEdXJpbmcobWluVXVpZCwgbWF4VXVpZCk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjb21taXRzLmxlbmd0
aCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd1
bmtub3duIGNvbW1pdHMnOwotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgYnJhbmNoZXMgPSBuZXcgU2V0KGNvbW1pdHMubWFwKGNvbW1pdCA9PiBjb21taXQu
YnJhbmNoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJhbmNo
ZXMuZGVsZXRlKCd0cnVuaycpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJyYW5jaGVzLmRlbGV0ZSgnbWFzdGVyJyk7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCByZXBvc2l0b3JpZXMgPSBuZXcgU2V0KGNvbW1pdHMubWFw
KGNvbW1pdCA9PiBjb21taXQucmVwb3NpdG9yeV9pZCkpOwotCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgY29tbWl0UGFyYW1zID0ge307Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJyYW5jaGVzLnNpemUpCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1pdFBhcmFtc1snYnJhbmNo
J10gPSBbLi4uYnJhbmNoZXNdOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbW1pdFBhcmFtcy5hZnRlcl91dWlkID0gW21pblV1aWRdOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1pdFBhcmFtcy5iZWZvcmVfdXVpZCA9IFttYXhV
dWlkXTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBg
PGEgaHJlZj0iL2NvbW1pdHM/JHtwYXJhbXNUb1F1ZXJ5KGNvbW1pdFBhcmFtcyl9Ij4kewotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21taXRzLmxlbmd0aCA9
PSByZXBvc2l0b3JpZXMuc2l6ZSA/Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb21taXRzLnJldmVyc2UoKS5tYXAoY29tbWl0ID0+IGNvbW1pdC5pZC5z
dWJzdHJpbmcoMCwxMikpLmpvaW4oJywgJykgOgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYCR7Y29tbWl0cy5sZW5ndGh9IGNvbW1pdHNgCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTwvYT5gOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfSkoKX0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaXRlbSI+Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDxiPlJlc3VsdHM8L2I+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDxkaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSYW4gJHthZ3Jl
Z2F0ZWRTdGF0cy50ZXN0c19ydW59IG9mICR7YWdyZWdhdGVkU3RhdHMudGVzdHNfc2tpcHBlZCAr
IGFncmVnYXRlZFN0YXRzLnRlc3RzX3J1bn0gdGVzdHMKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICgke3BlcmNlbnRhZ2UoYWdyZWdhdGVkU3RhdHMudGVzdHNfcnVuLCBhZ3Jl
Z2F0ZWRTdGF0cy50ZXN0c19za2lwcGVkICsgYWdyZWdhdGVkU3RhdHMudGVzdHNfcnVuKX0pCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnI+Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAke09iamVjdC5rZXlzKEV4cGVjdGF0aW9ucy5jb2xvck1hcCgp
KS5tYXAodHlwZSA9PiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKCFhZ3JlZ2F0ZWRTdGF0c1tgdGVzdHNfJHt0eXBlfWBdKQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJyc7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGA8ZGl2IGNsYXNzPSJkb3QgJHt0eXBlfSBzbWFs
bCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2
IGNsYXNzPSJ0aW55IHRleHQiIHN0eWxlPSJmb250LXdlaWdodDogbm9ybWFsO21hcmdpbi10b3A6
IDBweCI+JHtFeHBlY3RhdGlvbnMuc3ltYm9sTWFwW3R5cGVdfTwvZGl2PgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gJHtkaWZmLnJlc3VsdHMubGVu
Z3RoID09PSAxID8gYWdyZWdhdGVkU3RhdHNbYHRlc3RzXyR7dHlwZX1gXSA6IHBlcmNlbnRhZ2Uo
YWdyZWdhdGVkU3RhdHNbYHRlc3RzXyR7dHlwZX1gXSwgYWdyZWdhdGVkU3RhdHMudGVzdHNfcnVu
KX0gJHt0eXBlID09PSAnc3VjY2VzcycgPyAncGFzc2VkJyA6IHR5cGV9PGJyPmA7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KS5qb2luKCcnKX0KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9k
aXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtkaWZmLnJlc3VsdHMubGVuZ3RoID09
PSAxID8gYDxkaXYgY2xhc3M9Iml0ZW0iPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA8Yj5UZXN0IFJ1bjwvYj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7ZGlmZi5yZXN1bHRzWzBdLnN0
YXJ0X3RpbWUgPyAoKCkgPT4gewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGJyYW5jaCA9IHF1ZXJ5VG9QYXJhbXMoZG9jdW1lbnQuVVJMLnNwbGl0KCc/Jylb
MV0pLmJyYW5jaDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBidWlsZFBhcmFtcyA9IGRpZmYuY29uZmlndXJhdGlvbi50b1BhcmFtcygpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkUGFyYW1zWydzdWl0ZSddID0gW3Ro
aXMuc3VpdGVdOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxk
UGFyYW1zWyd1dWlkJ10gPSBbZGlmZi5yZXN1bHRzWzBdLnV1aWRdOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkUGFyYW1zWydhZnRlcl90aW1lJ10gPSBbZGlm
Zi5yZXN1bHRzWzBdLnN0YXJ0X3RpbWVdOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJ1aWxkUGFyYW1zWydiZWZvcmVfdGltZSddID0gW2RpZmYucmVzdWx0c1swXS5z
dGFydF90aW1lXTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
YnJhbmNoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWls
ZFBhcmFtc1snYnJhbmNoJ10gPSBicmFuY2g7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgcXVlcnkgPSBwYXJhbXNUb1F1ZXJ5KGJ1aWxkUGFyYW1zKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gYDxhIGhy
ZWY9Ii91cmxzL2J1aWxkPyR7cXVlcnl9IiB0YXJnZXQ9Il9ibGFuayI+VGVzdCBydW48L2E+IEAg
JHtuZXcgRGF0ZShkaWZmLnJlc3VsdHNbMF0uc3RhcnRfdGltZSAqIDEwMDApLnRvTG9jYWxlU3Ry
aW5nKCl9PGJyPmA7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KCFBcmNoaXZlUm91dGVyLmhhc0FyY2hpdmUoc3VpdGUpKQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSBgPGEgaHJlZj0iL2FyY2hpdmUvJHtBcmNo
aXZlUm91dGVyLnBhdGhGb3Ioc3VpdGUpfT8ke3F1ZXJ5fSIgdGFyZ2V0PSJfYmxhbmsiPiR7QXJj
aGl2ZVJvdXRlci5sYWJlbEZvcihzdWl0ZSl9PC9hPjxicj5gOwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9KSgpIDogJyd9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAke2RpZmYucmVzdWx0c1swXS5zdGF0cy5zdGFydF90aW1lICYmIGRpZmYucmVzdWx0
c1swXS5zdGF0cy5lbmRfdGltZSA/Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYFN1aXRlIHRvb2sgJHtlbGFwc2VkVGltZShkaWZmLnJlc3VsdHNbMF0uc3RhdHMuc3Rh
cnRfdGltZSwgZGlmZi5yZXN1bHRzWzBdLnN0YXRzLmVuZF90aW1lKX1gIDogJyd9Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDwvZGl2PmAgOiAnJ30KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAg
ICAgICAgICAgICAgICAgICAgJHtkaWZmLnJlc3VsdHMubGVuZ3RoID09PSAxIHx8ICFkaWZmLmZh
aWx1cmVzLmxlbmd0aCA/ICcnIDogYDxkaXYgY2xhc3M9ImRpdmlkZXIgbW9iaWxlLWNvbnRyb2wi
PjwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1zLTYg
bGlzdCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiPlRlc3QgUnVuczwvYj4K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtkaWZmLmZhaWx1cmVzLnNsaWNlKDAs
IDgpLm1hcChmYWlsdXJlID0+IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGxldCB3b3JzdCA9ICdzdWNjZXNzJzsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEV4cGVjdGF0aW9ucy5mYWlsdXJlVHlwZXMuZm9yRWFjaCh0eXBlID0+IHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoT2JqZWN0LmtleXMoZmFpbHVyZVt0
eXBlXSkubGVuZ3RoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB3b3JzdCA9IHR5cGU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsK
LQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY29tbWl0cyA9IENv
bW1pdEJhbmsuY29tbWl0c0R1cmluZyhmYWlsdXJlLnV1aWRfcmFuZ2VbMF0sIGZhaWx1cmUudXVp
ZF9yYW5nZVsxXSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
YDxkaXYgY2xhc3M9Iml0ZW0iPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA8ZGl2IGNsYXNzPSJkb3QgJHt3b3JzdH0gc21hbGwiPgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGlueSB0ZXh0IiBz
dHlsZT0iZm9udC13ZWlnaHQ6IG5vcm1hbDttYXJnaW4tdG9wOiAwcHgiPiR7RXhwZWN0YXRpb25z
LnN5bWJvbE1hcFt3b3JzdF19PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA8YSBjbGFzcz0idGV4dCBibG9jayIgc3R5bGU9IndpZHRoOiBjYWxjKDEwMCUgLSB2
YXIoLS1tZWRpdW1TaXplKSAtIDE2cHgpOyBvdmVyZmxvdzogaGlkZGVuOyB3aGl0ZS1zcGFjZTog
bm93cmFwOyB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsgImhyZWY9Ii9pbnZlc3RpZ2F0ZT8ke3Bh
cmFtc1RvUXVlcnkoZmFpbHVyZS50b1BhcmFtcygpKX0iPgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtjb21taXRzLmxlbmd0aCA/Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYCR7Y29tbWl0c1swXS5p
ZC5zdWJzdHJpbmcoMCwxMil9ICR7Y29tbWl0cy5sZW5ndGggPiAxID8gY29tbWl0c1tjb21taXRz
Lmxlbmd0aCAtIDFdLmlkLnN1YnN0cmluZygwLDEyKSA6ICcnfWAgOgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc/J30gb24gJHtmYWlsdXJlLmNv
bmZpZ3VyYXRpb259Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDwvYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5gOwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KS5qb2luKCcnKX0KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJHtkaWZmLnJlc3VsdHMubGVuZ3RoID4gOCA/ICc8ZGl2IGNs
YXNzPSJpdGVtIGNvbnRlbnQiPlRvbyBtYW55IHJ1bnMgdG8gZGlzcGxheS4uLjxkaXY+JyA6ICcn
fQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAg
ICAgICAgPC9kaXY+YH0KLSAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAg
ICAgPC9kaXY+YCk7Ci0gICAgICAgICAgICB9LAotICAgICAgICB9KTsKLSAgICAgICAgdGhpcy5m
YWlsdXJlVmlldyA9IFJFRi5jcmVhdGVSZWYoewotICAgICAgICAgICAgc3RhdGU6IHtjb25maWd1
cmF0aW9uOiBudWxsLCByZXN1bHRzOiBbXSwgZmFpbHVyZXM6IFtdfSwKLSAgICAgICAgICAgIG9u
U3RhdGVVcGRhdGU6IChlbGVtZW50LCBkaWZmLCBzdGF0ZSkgPT4gewotICAgICAgICAgICAgICAg
IGlmICghZGlmZi5jb25maWd1cmF0aW9uIHx8ICFkaWZmLnJlc3VsdHMgfHwgIWRpZmYuZmFpbHVy
ZXMpIHsKLSAgICAgICAgICAgICAgICAgICAgRE9NLmluamVjdChlbGVtZW50LCAnPGRpdiBjbGFz
cz0ibG9hZGVyIj48ZGl2IGNsYXNzPSJzcGlubmVyIj48L2Rpdj48L2Rpdj4nKTsKLSAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBp
ZiAoIWRpZmYuZmFpbHVyZXMubGVuZ3RoKSB7Ci0gICAgICAgICAgICAgICAgICAgIERPTS5pbmpl
Y3QoZWxlbWVudCwgJzxkaXYgY2xhc3M9ImNvbnRlbnQiIHN0eWxlPSJtYXJnaW4tYm90dG9tOiB2
YXIoLS1zbWFsbFNpemUpOyI+Tm8gZmFpbHVyZXM8L2Rpdj4nKTsKLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBjb25zdCBmYWls
dXJlcyA9IEZhaWx1cmVzLmNvbWJpbmUoLi4uZGlmZi5mYWlsdXJlcyk7Ci0gICAgICAgICAgICAg
ICAgY29uc3QgcmV2ZXJzZWRUeXBlcyA9IFsuLi5FeHBlY3RhdGlvbnMuZmFpbHVyZVR5cGVzXS5y
ZXZlcnNlKCk7Ci0KLSAgICAgICAgICAgICAgICBET00uaW5qZWN0KGVsZW1lbnQsIGA8Yj5GYWls
dXJlczwvYj4KLSAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGlzdCI+Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAke3JldmVyc2VkVHlwZXMubWFwKHR5cGUgPT4gewotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBPYmplY3Qua2V5cyhmYWlsdXJlc1t0eXBlXSkuc29y
dCgoYSwgYikgPT4gewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBudW1i
ZXJEaWZmZXJlbmNlID0gZmFpbHVyZXNbdHlwZV1bYV0gLSBmYWlsdXJlc1t0eXBlXVtiXTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bWJlckRpZmZlcmVuY2UpCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyRGlmZmVyZW5jZTsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEubG9jYWxlQ29tcGFyZShi
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KS5tYXAodGVzdCA9PiB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBgPGRpdiBjbGFzcz0iaXRlbSI+Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3QgJHt0eXBlfSBz
bWFsbCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFz
cz0idGlueSB0ZXh0IiBzdHlsZT0iZm9udC13ZWlnaHQ6IG5vcm1hbDttYXJnaW4tdG9wOiAwcHgi
PiR7RXhwZWN0YXRpb25zLnN5bWJvbE1hcFt0eXBlXX08L2Rpdj4KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPGEgY2xhc3M9InRleHQgYmxvY2siIHN0eWxlPSJ3aWR0aDogY2FsYygxMDAlIC0gdmFy
KC0tbWVkaXVtU2l6ZSkgLSAxNnB4KTsgb3ZlcmZsb3c6IGhpZGRlbjsgd2hpdGUtc3BhY2U6IG5v
d3JhcDsgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7IiBocmVmPSIvP3N1aXRlPSR7dGhpcy5zdWl0
ZX0mdGVzdD0ke3Rlc3R9IiB0YXJnZXQ9Il9ibGFuayI+Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJHt0ZXN0fQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPC9hPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5gOwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0pLmpvaW4oJycpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgfSkuam9pbignJyl9Ci0gICAgICAgICAgICAgICAgICAgIDwvZGl2PmApOwotICAgICAg
ICAgICAgfSwKLSAgICAgICAgfSk7Ci0gICAgICAgIENvbW1pdEJhbmsuY2FsbGJhY2tzLnB1c2go
KCkgPT4ge3RoaXMuc2VsZWN0KHRoaXMuc2VsZWN0ZWQpfSk7Ci0gICAgICAgIHRoaXMucmVsb2Fk
KCk7Ci0gICAgfQotICAgIHJlbG9hZCgpIHsKLSAgICAgICAgaWYgKCFPYmplY3Qua2V5cyhyYW5n
ZVBhcmFtcykubGVuZ3RoKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHRoaXMuZGF0
YUZvckNvbmZpZyA9IHt9OwotICAgICAgICB0aGlzLnNlbGVjdCgwKTsKLQotICAgICAgICBsZXQg
cmVzdWx0c0Rpc3BhdGNoZWQgPSBhZ3JlZ2F0ZUNvbm5maWd1cmF0aW9uLmxlbmd0aDsKLSAgICAg
ICAgdGhpcy5yZXN1bHRWaWV3LnNldFN0YXRlKHtjb25maWd1cmF0aW9uOiBudWxsLCByZXN1bHRz
OiBbXSwgZmFpbHVyZXM6IFtdfSk7Ci0KLSAgICAgICAgbGV0IGZhaWx1cmVzRGlzcGF0Y2hlZCA9
IGFncmVnYXRlQ29ubmZpZ3VyYXRpb24ubGVuZ3RoOwotICAgICAgICB0aGlzLmZhaWx1cmVWaWV3
LnNldFN0YXRlKHtjb25maWd1cmF0aW9uOiBudWxsLCByZXN1bHRzOiBbXSwgZmFpbHVyZXM6IFtd
fSk7Ci0KLSAgICAgICAgYWdyZWdhdGVDb25uZmlndXJhdGlvbi5mb3JFYWNoKGNvbmZpZ1RvU2Vh
cmNoID0+IHsKLSAgICAgICAgICAgIGNvbnN0IHJlc3VsdFBhcmFtcyA9IE9iamVjdC5hc3NpZ24o
Y29uZmlnVG9TZWFyY2gudG9QYXJhbXMoKSwgcmFuZ2VQYXJhbXMpOwotICAgICAgICAgICAgZmV0
Y2goYC9hcGkvcmVzdWx0cy8ke3RoaXMuc3VpdGV9PyR7cGFyYW1zVG9RdWVyeShyZXN1bHRQYXJh
bXMpfWApLnRoZW4ocmVzcG9uc2UgPT4gewotICAgICAgICAgICAgICAgIHJlc3BvbnNlLmpzb24o
KS50aGVuKGpzb24gPT4gewotICAgICAgICAgICAgICAgICAgICBsZXQgbWluVXVpZCA9IE1hdGgu
cm91bmQobmV3IERhdGUoKS5nZXRUaW1lKCkvMTApOwotICAgICAgICAgICAgICAgICAgICBsZXQg
bWF4VXVpZCA9IDA7Ci0KLSAgICAgICAgICAgICAgICAgICAganNvbi5mb3JFYWNoKHJlc3VsdCA9
PiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjb21wbGV0ZUNvbmZpZyA9IG5ldyBD
b25maWd1cmF0aW9uKHJlc3VsdC5jb25maWd1cmF0aW9uKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICghdGhpcy5kYXRhRm9yQ29uZmlnW2NvbXBsZXRlQ29uZmlnLnRvS2V5KCldKQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YUZvckNvbmZpZ1tjb21wbGV0ZUNvbmZp
Zy50b0tleSgpXSA9IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJh
dGlvbjogY29tcGxldGVDb25maWcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
c3VsdHM6IFtdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWlsdXJlczogW10s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGFGb3JDb25maWdbY29t
cGxldGVDb25maWcudG9LZXkoKV0uY29uZmlndXJhdGlvbiA9IENvbmZpZ3VyYXRpb24uY29tYmlu
ZSh0aGlzLmRhdGFGb3JDb25maWdbY29tcGxldGVDb25maWcudG9LZXkoKV0uY29uZmlndXJhdGlv
biwgY29tcGxldGVDb25maWcpOwotICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhRm9y
Q29uZmlnW2NvbXBsZXRlQ29uZmlnLnRvS2V5KCldLnJlc3VsdHMgPSB0aGlzLmRhdGFGb3JDb25m
aWdbY29tcGxldGVDb25maWcudG9LZXkoKV0ucmVzdWx0cy5jb25jYXQocmVzdWx0LnJlc3VsdHMp
OwotCi0gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucmVzdWx0cy5mb3JFYWNoKHJlc3Vs
dCA9PiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluVXVpZCA9IE1hdGgubWluKG1p
blV1aWQsIHJlc3VsdC51dWlkKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhVdWlk
ID0gTWF0aC5tYXgobWF4VXVpZCwgcmVzdWx0LnV1aWQpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgfSk7Ci0gICAgICAgICAgICAgICAgICAgIH0pOwotCi0gICAgICAgICAgICAgICAgICAgIGlm
IChtYXhVdWlkID0+IG1pblV1aWQpCi0gICAgICAgICAgICAgICAgICAgICAgICBDb21taXRCYW5r
LmFkZChtaW5VdWlkLCBtYXhVdWlkKTsKLQotICAgICAgICAgICAgICAgICAgICAtLXJlc3VsdHNE
aXNwYXRjaGVkOwotICAgICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdHNEaXNwYXRjaGVkKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlZi5zZXRTdGF0ZSh7ZGlzcGxheWVkOiBP
YmplY3Qua2V5cyh0aGlzLmRhdGFGb3JDb25maWcpLmxlbmd0aH0pOwotICAgICAgICAgICAgICAg
ICAgICAgICAgdGhpcy5zZWxlY3RDb25maWd1cmF0aW9ucy5zZXRTdGF0ZShPYmplY3QudmFsdWVz
KHRoaXMuZGF0YUZvckNvbmZpZykubWFwKGRhdGEgPT4gZGF0YS5jb25maWd1cmF0aW9uKSk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdCh0aGlzLnNlbGVjdGVkKTsKLSAgICAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgfSkuY2F0
Y2goZXJyb3IgPT4gewotICAgICAgICAgICAgICAgIC8vIElmIHRoZSBsb2FkIGZhaWxzLCBsb2cg
dGhlIGVycm9yIGFuZCBjb250aW51ZQotICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoSlNP
Ti5zdHJpbmdpZnkoZXJyb3IsIG51bGwsIDQpKTsKLSAgICAgICAgICAgIH0pOwotCi0gICAgICAg
ICAgICBGYWlsdXJlcy5mcm9tRW5kcG9pbnQodGhpcy5zdWl0ZSwgY29uZmlnVG9TZWFyY2gsIE9i
amVjdC5hc3NpZ24oe3VuZXhwZWN0ZWQ6IFt3aWxsRmlsdGVyRXhwZWN0ZWQoKV19LCByYW5nZVBh
cmFtcykpLnRoZW4oZmFpbHVyZXMgPT4gewotICAgICAgICAgICAgICAgIGxldCBtaW5VdWlkID0g
TWF0aC5yb3VuZChuZXcgRGF0ZSgpLmdldFRpbWUoKS8xMCk7Ci0gICAgICAgICAgICAgICAgbGV0
IG1heFV1aWQgPSAwOwotCi0gICAgICAgICAgICAgICAgZmFpbHVyZXMuZm9yRWFjaChmYWlsdXJl
ID0+IHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmRhdGFGb3JDb25maWdbZmFpbHVy
ZS5jb25maWd1cmF0aW9uLnRvS2V5KCldKQotICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5k
YXRhRm9yQ29uZmlnW2ZhaWx1cmUuY29uZmlndXJhdGlvbi50b0tleSgpXSA9IHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uOiBmYWlsdXJlLmNvbmZpZ3VyYXRpb24s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0czogW10sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZmFpbHVyZXM6IFtdLAotICAgICAgICAgICAgICAgICAgICAgICAgfTsK
LSAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5k
YXRhRm9yQ29uZmlnW2ZhaWx1cmUuY29uZmlndXJhdGlvbi50b0tleSgpXS5jb25maWd1cmF0aW9u
ID0gQ29uZmlndXJhdGlvbi5jb21iaW5lKHRoaXMuZGF0YUZvckNvbmZpZ1tmYWlsdXJlLmNvbmZp
Z3VyYXRpb24udG9LZXkoKV0uY29uZmlndXJhdGlvbiwgZmFpbHVyZS5jb25maWd1cmF0aW9uKTsK
LSAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhRm9yQ29uZmlnW2ZhaWx1cmUuY29uZmlndXJh
dGlvbi50b0tleSgpXS5mYWlsdXJlcy5wdXNoKGZhaWx1cmUpOwotICAgICAgICAgICAgICAgICAg
ICBtaW5VdWlkID0gTWF0aC5taW4obWluVXVpZCwgZmFpbHVyZS51dWlkX3JhbmdlWzBdKTsKLSAg
ICAgICAgICAgICAgICAgICAgbWF4VXVpZCA9IE1hdGgubWF4KG1heFV1aWQsIGZhaWx1cmUudXVp
ZF9yYW5nZVsxXSk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0KLSAgICAgICAgICAgICAgICBpZiAo
bWF4VXVpZCA9PiBtaW5VdWlkKQotICAgICAgICAgICAgICAgICAgICBDb21taXRCYW5rLmFkZCht
aW5VdWlkLCBtYXhVdWlkKTsKLQotICAgICAgICAgICAgICAgIC0tZmFpbHVyZXNEaXNwYXRjaGVk
OwotICAgICAgICAgICAgICAgIGlmICghZmFpbHVyZXNEaXNwYXRjaGVkKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIHRoaXMuc2VsZWN0Q29uZmlndXJhdGlvbnMuc2V0U3RhdGUoT2JqZWN0LnZhbHVl
cyh0aGlzLmRhdGFGb3JDb25maWcpLm1hcChkYXRhID0+IGRhdGEuY29uZmlndXJhdGlvbikpOwot
ICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdCh0aGlzLnNlbGVjdGVkKTsKLSAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICB9KS5jYXRjaChlcnJvciA9PiB7Ci0gICAgICAgICAgICAg
ICAgLy8gQSBsb2FkIGZhaWx1cmUgcHJvYmFibHkganVzdCBtZWFucyBubyBmYWlsdXJlcyBmb3Vu
ZCwgaW4gdGhhdCBjYXNlLCBpZ25vcmUgdGhlIGVycm9yCi0gICAgICAgICAgICAgICAgaWYgKCFP
YmplY3Qua2V5cyhlcnJvcikpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
ICAgICAgICBjb25zb2xlLmVycm9yKEpTT04uc3RyaW5naWZ5KGVycm9yLCBudWxsLCA0KSk7Ci0g
ICAgICAgICAgICB9KTsKLSAgICAgICAgfSk7Ci0gICAgfQotICAgIHNlbGVjdChzZWxlY3RlZCkg
ewotICAgICAgICBjb25zdCBjb25maWd1cmF0aW9uS2V5cyA9IE9iamVjdC5rZXlzKHRoaXMuZGF0
YUZvckNvbmZpZyk7Ci0gICAgICAgIGNvbmZpZ3VyYXRpb25LZXlzLnNvcnQoKTsKLSAgICAgICAg
dGhpcy5zZWxlY3RlZCA9IE1hdGgubWluKHNlbGVjdGVkLCBjb25maWd1cmF0aW9uS2V5cy5sZW5n
dGgpOwotCi0gICAgICAgIGlmICghY29uZmlndXJhdGlvbktleXMubGVuZ3RoKSB7Ci0gICAgICAg
ICAgICB0aGlzLnJlc3VsdFZpZXcuc2V0U3RhdGUoe2NvbmZpZ3VyYXRpb246IG51bGwsIHJlc3Vs
dHM6IFtdLCBmYWlsdXJlczogW119KTsKLSAgICAgICAgICAgIHRoaXMuZmFpbHVyZVZpZXcuc2V0
U3RhdGUoe2NvbmZpZ3VyYXRpb246IG51bGwsIHJlc3VsdHM6IFtdLCBmYWlsdXJlczogW119KTsK
LSAgICAgICAgfSBlbHNlIGlmIChjb25maWd1cmF0aW9uS2V5cy5sZW5ndGggPT0gMSkgewotICAg
ICAgICAgICAgdGhpcy5yZXN1bHRWaWV3LnNldFN0YXRlKHRoaXMuZGF0YUZvckNvbmZpZ1tjb25m
aWd1cmF0aW9uS2V5c1swXV0pOwotICAgICAgICAgICAgdGhpcy5mYWlsdXJlVmlldy5zZXRTdGF0
ZSh0aGlzLmRhdGFGb3JDb25maWdbY29uZmlndXJhdGlvbktleXNbMF1dKTsKLSAgICAgICAgfSBl
bHNlIGlmICh0aGlzLnNlbGVjdGVkID09IDApIHsKLSAgICAgICAgICAgIGNvbnN0IGNvbWJpbmVk
ID0gewotICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb246IENvbmZpZ3VyYXRpb24uY29tYmlu
ZSguLi5jb25maWd1cmF0aW9uS2V5cy5tYXAoa2V5ID0+IHRoaXMuZGF0YUZvckNvbmZpZ1trZXld
LmNvbmZpZ3VyYXRpb24pKSwKLSAgICAgICAgICAgICAgICByZXN1bHRzOiBbXSwKLSAgICAgICAg
ICAgICAgICBmYWlsdXJlczogW10sCi0gICAgICAgICAgICB9OwotICAgICAgICAgICAgY29uZmln
dXJhdGlvbktleXMuZm9yRWFjaChrZXkgPT4gewotICAgICAgICAgICAgICAgIGNvbWJpbmVkLnJl
c3VsdHMgPSBjb21iaW5lZC5yZXN1bHRzLmNvbmNhdCh0aGlzLmRhdGFGb3JDb25maWdba2V5XS5y
ZXN1bHRzKTsKLSAgICAgICAgICAgICAgICBjb21iaW5lZC5mYWlsdXJlcyA9IGNvbWJpbmVkLmZh
aWx1cmVzLmNvbmNhdCh0aGlzLmRhdGFGb3JDb25maWdba2V5XS5mYWlsdXJlcyk7Ci0gICAgICAg
ICAgICB9KTsKLQotICAgICAgICAgICAgdGhpcy5yZXN1bHRWaWV3LnNldFN0YXRlKGNvbWJpbmVk
KTsKLSAgICAgICAgICAgIHRoaXMuZmFpbHVyZVZpZXcuc2V0U3RhdGUoY29tYmluZWQpOwotICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgdGhpcy5yZXN1bHRWaWV3LnNldFN0YXRlKHRoaXMu
ZGF0YUZvckNvbmZpZ1tjb25maWd1cmF0aW9uS2V5c1t0aGlzLnNlbGVjdGVkIC0gMV1dKTsKLSAg
ICAgICAgICAgIHRoaXMuZmFpbHVyZVZpZXcuc2V0U3RhdGUodGhpcy5kYXRhRm9yQ29uZmlnW2Nv
bmZpZ3VyYXRpb25LZXlzW3RoaXMuc2VsZWN0ZWQgLSAxXV0pOwotICAgICAgICB9Ci0gICAgfQot
ICAgIHRvU3RyaW5nKCkgewotICAgICAgICByZXR1cm4gYDxkaXYgY2xhc3M9InNlY3Rpb24iIHJl
Zj0iJHt0aGlzLnJlZn0iPgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImhlYWRlciByb3ci
PgotICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtcy00IHRpdGxlIj4ke3RoaXMu
c3VpdGV9PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1zLTgiPgot
ICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaW5wdXQiPgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDxzZWxlY3QgcmVxdWlyZWQgcmVmPSIke3RoaXMuc2VsZWN0Q29uZmln
dXJhdGlvbnN9Ij48L3NlbGVjdD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+
Q29uZmlndXJhdGlvbjwvbGFiZWw+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAg
ICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAg
ICAgICAgICAgPGRpdj4KLSAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudCIg
cmVmPSIke3RoaXMucmVzdWx0Vmlld30iPjwvZGl2PgotICAgICAgICAgICAgICAgICAgICA8ZGl2
IGNsYXNzPSJkaXZpZGVyIj48L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0i
Y29udGVudCIgcmVmPSIke3RoaXMuZmFpbHVyZVZpZXd9Ij48L2Rpdj4KLSAgICAgICAgICAgICAg
ICA8L2Rpdj4KLSAgICAgICAgICAgIDwvZGl2Pjxicj5gOwotICAgIH0KLX0KLQotCi1mdW5jdGlv
biBwb3B1bGF0ZVJhbmdlcygpCi17Ci0gICAgbGV0IGRlZmluZWRSYW5nZSA9IGZhbHNlOwotICAg
IGxldCBjb21taXRQYXJhbXMgPSB7fTsKLSAgICBsZXQgdGltZVBhcmFtcyA9IHt9OwotCi0gICAg
WydpZCcsICd1dWlkJywgJ3RpbWVzdGFtcCcsICdicmFuY2gnLCAncmVwb3NpdG9yeV9pZCddLmZv
ckVhY2gocGFyYW0gPT4gewotICAgICAgICBbJycsICdiZWZvcmVfJywgJ2FmdGVyXyddLmZvckVh
Y2gocGFydGlhbCA9PiB7Ci0gICAgICAgICAgICBjb25zdCB2YWx1ZXMgPSAobmV3IFF1ZXJ5TW9k
aWZpZXIoYCR7cGFydGlhbH0ke3BhcmFtfWApKS5jdXJyZW50KCk7Ci0gICAgICAgICAgICBpZiAo
IXZhbHVlcy5sZW5ndGgpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgaWYg
KFsnaWQnLCAndXVpZCcsICd0aW1lc3RhbXAnXS5pbmRleE9mKHBhcmFtKSA+PSAwKQotICAgICAg
ICAgICAgICAgIGRlZmluZWRSYW5nZSA9IHRydWU7Ci0gICAgICAgICAgICBjb21taXRQYXJhbXNb
YCR7cGFydGlhbH0ke3BhcmFtfWBdID0gdmFsdWVzOwotICAgICAgICB9KTsKLSAgICB9KTsKLQot
ICAgIFsndGltZScsICdiZWZvcmVfdGltZScsICdhZnRlcl90aW1lJ10uZm9yRWFjaChwYXJhbSA9
PiB7Ci0gICAgICAgIGNvbnN0IHZhbHVlcyA9IChuZXcgUXVlcnlNb2RpZmllcihwYXJhbSkpLmN1
cnJlbnQoKTsKLSAgICAgICAgaWYgKCF2YWx1ZXMubGVuZ3RoKQotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICBkZWZpbmVkUmFuZ2UgPSB0cnVlOwotICAgICAgICB0aW1lUGFyYW1zW3BhcmFt
XSA9IHZhbHVlczsKLSAgICB9KTsKLQotICAgIHJhbmdlUGFyYW1zID0gT2JqZWN0LmFzc2lnbihj
b21taXRQYXJhbXMsIHRpbWVQYXJhbXMpOwotICAgIGNvbnN0IGJyYW5jaCA9IHF1ZXJ5VG9QYXJh
bXMoZG9jdW1lbnQuVVJMLnNwbGl0KCc/JylbMV0pLmJyYW5jaDsKLSAgICBpZiAoYnJhbmNoKQot
ICAgICAgICByYW5nZVBhcmFtcy5icmFuY2ggPSBbYnJhbmNoXTsKLQotICAgIGlmICghT2JqZWN0
LmtleXMocmFuZ2VQYXJhbXMpLmxlbmd0aCAmJiAhZGVmaW5lZFJhbmdlKSB7Ci0gICAgICAgIHJh
bmdlUGFyYW1zID0ge307Ci0gICAgICAgIGNvbnN0IHBhcmFtcyA9IE9iamVjdC5hc3NpZ24oe30s
IGNvbW1pdFBhcmFtcyk7Ci0gICAgICAgIGlmICghZGVmaW5lZFJhbmdlKQotICAgICAgICAgICAg
cGFyYW1zLmxpbWl0ID0gWzFdOwotICAgICAgICBDb21taXRCYW5rLmxhdGVzdChwYXJhbXMpLnRo
ZW4oKCkgPT4gewotICAgICAgICAgICAgcmFuZ2VQYXJhbXMgPSBPYmplY3QuYXNzaWduKGNvbW1p
dFBhcmFtcywgdGltZVBhcmFtcyk7Ci0gICAgICAgICAgICByYW5nZVBhcmFtcy5hZnRlcl91dWlk
ID0gW0NvbW1pdEJhbmsuY29tbWl0c1swXS51dWlkXTsKLSAgICAgICAgICAgIHJhbmdlUGFyYW1z
LmJlZm9yZV91dWlkID0gW0NvbW1pdEJhbmsuY29tbWl0c1tDb21taXRCYW5rLmNvbW1pdHMubGVu
Z3RoIC0gMV0udXVpZF07Ci0gICAgICAgICAgICB2aWV3cy5mb3JFYWNoKHZpZXcgPT4gdmlldy5y
ZWxvYWQoKSk7Ci0gICAgICAgIH0pOwotICAgIH0gICAKLX0KLQotCi1mdW5jdGlvbiByZWxvYWQo
KQotewotICAgIGFncmVnYXRlQ29ubmZpZ3VyYXRpb24gPSBDb25maWd1cmF0aW9uLmZyb21RdWVy
eSgpOwotICAgIHBvcHVsYXRlUmFuZ2VzKCk7Ci0gICAgdmlld3MuZm9yRWFjaCh2aWV3ID0+IHZp
ZXcucmVsb2FkKCkpOwotfQotCi0KLXBvcHVsYXRlUmFuZ2VzKCk7Ci1TVUlURVMuZm9yRWFjaChz
dWl0ZSA9PiB7Ci0gICAgdmlld3MucHVzaChuZXcgU3VpdGVGYWlsdXJlc1ZpZXcoc3VpdGUpKTsK
LX0pCi0KLXdpbmRvdy5vbnBvcHN0YXRlID0gZXZlbnQgPT4gewotICAgIHJlbG9hZCgpOwotfTsK
LXdpbmRvdy5vbnB1c2hzdGF0ZSA9IGV2ZW50ID0+IHsKLSAgICByZWxvYWQoKTsKLX07Ci0KLWxl
dCB2aWV3cG9ydCA9IG51bGw7Ci1ET00uaW5qZWN0KAotICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdhcHAnKSwKLSAgICBgJHtEcmF3ZXIoWwotICAgICAgICBMZWdlbmQoKGZpbHRlckZsYWcp
ID0+IHsKLSAgICAgICAgICAgIGlmIChmaWx0ZXJGbGFnKQotICAgICAgICAgICAgICAgIHVuZXhw
ZWN0ZWRRdWVyeS5yZW1vdmUoKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB1
bmV4cGVjdGVkUXVlcnkucmVwbGFjZShmYWxzZSk7Ci0gICAgICAgICAgICByZWxvYWQoKTsKLSAg
ICAgICAgfSwgdHJ1ZSwgd2lsbEZpbHRlckV4cGVjdGVkKCkpLAotICAgICAgICBCcmFuY2hTZWxl
Y3RvcihyZWxvYWQpLAotICAgICAgICBDb25maWd1cmF0aW9uU2VsZWN0b3JzKHJlbG9hZCksCi0g
ICAgXSl9Ci0KLSAgICA8ZGl2IGNsYXNzPSJtYWluIHJpZ2h0LXNpZGViYXIgdW5kZXItdG9wYmFy
LXdpdGgtYWN0aW9ucyI+Ci0gICAgICAgIDxicj4KLSAgICAgICAgPGRpdiBjbGFzcz0iY29udGVu
dCI+Ci0gICAgICAgICAgICAke3ZpZXdzLmpvaW4oJycpfQotICAgICAgICA8L2Rpdj4KLSAgICA8
L2Rpdj5gCi0pOwotCi08L3NjcmlwdD4KLQoteyUgZW5kYmxvY2sgJX0KLXslIGJsb2NrIGNvbnRl
bnQgJX0KLQotPGRpdiBpZD0iYXBwIj4KLTwvZGl2PgotCi17JSBlbmRibG9jayAlfQpJbmRleDog
VG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy90ZW1wbGF0ZXMvc2VhcmNoLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy90ZW1wbGF0
ZXMvc2VhcmNoLmh0bWwJKHJldmlzaW9uIDI2NTUzMSkKKysrIFRvb2xzL3Jlc3VsdHNkYnB5L3Jl
c3VsdHNkYnB5L3ZpZXcvdGVtcGxhdGVzL3NlYXJjaC5odG1sCShub25leGlzdGVudCkKQEAgLTEs
MjkyICswLDAgQEAKLTwhLS0KLSBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotCi0gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gYXJlIG1ldDoKLSAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotCi0gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuICJBUyBJUyIg
QU5EIEFOWQotIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCi0gSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCi0gUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAotLS0+Ci0KLXslIGV4dGVuZHMgImJhc2UuaHRtbCIgJX0KLXslIGJsb2NrIGhlYWQg
JX0KLTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImFzc2V0cy9j
c3Mvc2VhcmNoLmNzcyI+Ci08bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBo
cmVmPSJhc3NldHMvY3NzL3RpbWVsaW5lLmNzcyI+Ci08bGluayByZWw9InN0eWxlc2hlZXQiIHR5
cGU9InRleHQvY3NzIiBocmVmPSJhc3NldHMvY3NzL3Rvb2x0aXAuY3NzIj4KLQotPHNjcmlwdCB0
eXBlPSJtb2R1bGUiPgotaW1wb3J0IHtDb21taXRCYW5rfSBmcm9tICcvYXNzZXRzL2pzL2NvbW1p
dC5qcyc7Ci1pbXBvcnQge2RlZXBDb21wYXJlLCBFcnJvckRpc3BsYXksIHF1ZXJ5VG9QYXJhbXMs
IHBhcmFtc1RvUXVlcnl9IGZyb20gJy9hc3NldHMvanMvY29tbW9uLmpzJzsKLWltcG9ydCB7Q29u
ZmlndXJhdGlvbn0gZnJvbSAnL2Fzc2V0cy9qcy9jb25maWd1cmF0aW9uLmpzJzsKLWltcG9ydCB7
RHJhd2VyLCBCcmFuY2hTZWxlY3RvciwgQ29uZmlndXJhdGlvblNlbGVjdG9ycywgTGltaXRTbGlk
ZXJ9IGZyb20gJy9hc3NldHMvanMvZHJhd2VyLmpzJzsKLWltcG9ydCB7SW52ZXN0aWdhdGVEcmF3
ZXJ9IGZyb20gJy9hc3NldHMvanMvaW52ZXN0aWdhdGUuanMnOwotaW1wb3J0IHtTZWFyY2hCYXJ9
IGZyb20gJy9hc3NldHMvanMvc2VhcmNoLmpzJzsKLWltcG9ydCB7TGVnZW5kLCBUaW1lbGluZUZy
b21FbmRwb2ludH0gZnJvbSAnL2Fzc2V0cy9qcy90aW1lbGluZS5qcyc7Ci1pbXBvcnQge1Rvb2xU
aXB9IGZyb20gJy9hc3NldHMvanMvdG9vbHRpcC5qcyc7Ci1pbXBvcnQge0RPTSwgUkVGLCBFdmVu
dFN0cmVhbX0gZnJvbSAnL2xpYnJhcnkvanMvUmVmLmpzJzsKLQotY29uc3QgREVGQVVMVF9MSU1J
VCA9IDEwMDsKLWNvbnN0IFNVSVRFUyA9IEpTT04ucGFyc2UoJ3t7IHN1aXRlc3xzYWZlIH19Jyk7
Ci0KLWNsYXNzIFNlYXJjaFZpZXcgewotICAgIGNvbnN0cnVjdG9yKCkgeyAgICAKLSAgICAgICAg
dGhpcy5jdXJyZW50UGFyYW1zID0gcXVlcnlUb1BhcmFtcyhkb2N1bWVudC5VUkwuc3BsaXQoJz8n
KVsxXSk7Ci0gICAgICAgIHRoaXMuY3VycmVudExpbWl0ID0gdGhpcy5jdXJyZW50UGFyYW1zLmxp
bWl0ID8gcGFyc2VJbnQodGhpcy5jdXJyZW50UGFyYW1zLmxpbWl0W3RoaXMuY3VycmVudFBhcmFt
cy5saW1pdC5sZW5ndGggLSAxXSkgOiBERUZBVUxUX0xJTUlUOwotICAgICAgICBkZWxldGUgdGhp
cy5jdXJyZW50UGFyYW1zLmxpbWl0OwotCi0gICAgICAgIGxldCBzdGF0ZSA9IHtjaGlsZHJlbjog
W10sIHByZXBlbmRpbmc6IFtdfTsKLSAgICAgICAgaWYgKHRoaXMuY3VycmVudFBhcmFtcy50ZXN0
ICYmICghdGhpcy5jdXJyZW50UGFyYW1zLnN1aXRlIHx8IHRoaXMuY3VycmVudFBhcmFtcy50ZXN0
Lmxlbmd0aCAhPSB0aGlzLmN1cnJlbnRQYXJhbXMuc3VpdGUubGVuZ3RoKSkKLSAgICAgICAgICAg
IHN0YXRlID0ge2Vycm9yOiAiUXVlcnkgRXJyb3IiLCBkZXNjcmlwdGlvbjogJ011c3QgaGF2ZSB0
aGUgc2FtZSBudW1iZXIgb2Ygc3VpdGVzIGFuZCB0ZXN0cyBpbiBxdWVyeSd9OwotICAgICAgICBl
bHNlIGlmICh0aGlzLmN1cnJlbnRQYXJhbXMudGVzdCkgewotICAgICAgICAgICAgZm9yIChsZXQg
aSA9IDA7IGkgPCB0aGlzLmN1cnJlbnRQYXJhbXMudGVzdC5sZW5ndGg7ICsraSkgewotICAgICAg
ICAgICAgICAgIHN0YXRlLmNoaWxkcmVuLnB1c2goewotICAgICAgICAgICAgICAgICAgICBzdWl0
ZTogdGhpcy5jdXJyZW50UGFyYW1zLnN1aXRlW2ldLAotICAgICAgICAgICAgICAgICAgICB0ZXN0
OiB0aGlzLmN1cnJlbnRQYXJhbXMudGVzdFtpXSwKLSAgICAgICAgICAgICAgICAgICAgdGltZWxp
bmU6IG5ldyBUaW1lbGluZUZyb21FbmRwb2ludChgYXBpL3Jlc3VsdHMvJHt0aGlzLmN1cnJlbnRQ
YXJhbXMuc3VpdGVbaV19LyR7dGhpcy5jdXJyZW50UGFyYW1zLnRlc3RbaV19YCwgdGhpcy5jdXJy
ZW50UGFyYW1zLnN1aXRlW2ldLCB0aGlzLmN1cnJlbnRQYXJhbXMudGVzdFtpXSksCi0gICAgICAg
ICAgICAgICAgfSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBkZWxldGUg
dGhpcy5jdXJyZW50UGFyYW1zLnN1aXRlOwotICAgICAgICBkZWxldGUgdGhpcy5jdXJyZW50UGFy
YW1zLnRlc3Q7Ci0KLSAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7Ci0gICAgICAgIHRoaXMucmVm
ID0gUkVGLmNyZWF0ZVJlZih7Ci0gICAgICAgICAgICBzdGF0ZTogc3RhdGUsCi0gICAgICAgICAg
ICBvblN0YXRlVXBkYXRlOiAoZWxlbWVudCwgZGlmZiwgc3RhdGUpID0+IHsKLSAgICAgICAgICAg
ICAgICBpZiAoZGlmZi5lcnJvcikgewotICAgICAgICAgICAgICAgICAgICBET00uaW5qZWN0KGVs
ZW1lbnQsIEVycm9yRGlzcGxheShkaWZmKSk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBmdW5jdGlvbiByZW5kZXJDaGls
ZChjaGlsZCkgewotICAgICAgICAgICAgICAgICAgICBsZXQgZXhpdFJlZiA9IFJFRi5jcmVhdGVS
ZWYoewotICAgICAgICAgICAgICAgICAgICAgICAgb25FbGVtZW50TW91bnQ6IGVsZW1lbnQgPT4g
ewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQub25jbGljayA9ICgpID0+IHsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzZWxm
LnJlZi5zdGF0ZS5jaGlsZHJlbi5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKGNoaWxkLnRlc3QgIT09IHNlbGYucmVmLnN0YXRlLmNoaWxkcmVu
W2ldLnRlc3QgJiYgY2hpbGQuc3VpdGUgIT09IHNlbGYucmVmLnN0YXRlLmNoaWxkcmVuW2ldLnN1
aXRlKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5yZWYuc3RhdGUuY2hpbGRy
ZW4uc3BsaWNlKGksIDEpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBzcGxpdFVSTCA9IGRvY3VtZW50LlVSTC5zcGxpdCgnPycp
OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcGFyYW1zID0gcXVlcnlUb1Bh
cmFtcyhzcGxpdFVSTFsxXSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgh
cGFyYW1zLnN1aXRlKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1z
LnN1aXRlID0gW107Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcGFyYW1z
LnRlc3QpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMudGVzdCA9
IFtdOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8
IHBhcmFtcy5zdWl0ZS5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gVGhpcyBzaG91bGRuJ3QgYmUgcG9zc2libGUsIGp1c3Qga2VlcCB0aGUgY3Vy
cmVudCBwYXJhbXMgaWYgaXQgaGFwcGVucy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChpID49IHBhcmFtcy50ZXN0Lmxlbmd0aCkKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChwYXJhbXMuc3VpdGVbaV0gIT09IGNoaWxkLnN1aXRlICYmIHBhcmFtcy50ZXN0
W2ldICE9PSBjaGlsZC50ZXN0KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1z
LnN1aXRlLnNwbGljZShpLCAxKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHBhcmFtcy50ZXN0LnNwbGljZShpLCAxKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJhbXMuc3VpdGUubGVuZ3RoID09PSAwKQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHBhcmFtcy5zdWl0ZTsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmFtcy50ZXN0Lmxlbmd0aCA9
PT0gMCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBwYXJhbXMu
dGVzdDsKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBxdWVyeVN0cmlu
ZyA9IHBhcmFtc1RvUXVlcnkocGFyYW1zKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgd2luZG93Lmhpc3RvcnkucHVzaFN0YXRlKHF1ZXJ5U3RyaW5nLCAnJywgc3BsaXRVUkxbMF0g
KyAnPycgKyBxdWVyeVN0cmluZyk7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3Qgc2VjdGlvbiA9IGVsZW1lbnQucGFyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50LnBhcmVu
dEVsZW1lbnQucGFyZW50RWxlbWVudDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2VjdGlvbi5wYXJlbnRFbGVtZW50LnJlbW92ZUNoaWxkKHNlY3Rpb24pOwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH07Ci0gICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAg
ICAgICAgICAgICB9KTsKLQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gYDxkaXYgY2xhc3M9
InNlY3Rpb24iPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImhlYWRl
ciI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlIiBz
dHlsZT0iZm9udC1zaXplOnZhcigtLXNtYWxsU2l6ZSk7d29yZC1icmVhazpicmVhay13b3JkOyI+
JHtjaGlsZC50ZXN0fSAoJHtjaGlsZC5zdWl0ZX0pPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbnMiPgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA8ZGl2IGNsYXNzPSJsaXN0Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDxhIGNsYXNzPSJpdGVtIGxpbmstYnV0dG9uIiByZWY9IiR7ZXhpdFJlZn0iPlg8
L2E+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8
L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2NoaWxkLnRpbWVsaW5lfQotICAg
ICAgICAgICAgICAgICAgICAgICAgPC9kaXY+YDsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgICAgICBpZiAoZGlmZi5jaGlsZHJlbikKLSAgICAgICAgICAgICAgICAgICAgRE9NLmlu
amVjdChlbGVtZW50LCBkaWZmLmNoaWxkcmVuLm1hcChyZW5kZXJDaGlsZCkuam9pbignJykpOwot
ICAgICAgICAgICAgICAgIGlmIChkaWZmLnByZXBlbmRpbmcpIHsKLSAgICAgICAgICAgICAgICAg
ICAgZGlmZi5wcmVwZW5kaW5nLmZvckVhY2goY2hpbGQgPT4gewotICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKGVsZW1lbnQuZmlyc3RFbGVtZW50Q2hpbGQpCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRE9NLmFmdGVyKGVsZW1lbnQuZmlyc3RFbGVtZW50Q2hpbGQsIHJlbmRlckNoaWxk
KGNoaWxkKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRE9NLmluamVjdChlbGVtZW50LCByZW5kZXJDaGlsZChjaGlsZCkpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWYuc3RhdGUuY2hpbGRyZW4udW5zaGlmdChjaGls
ZCk7Ci0gICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIH0gCi0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0pOwotICAgIH0KLSAgICByZWxvYWQoKSB7Ci0gICAgICAgIGxldCBw
YXJhbXMgPSBxdWVyeVRvUGFyYW1zKGRvY3VtZW50LlVSTC5zcGxpdCgnPycpWzFdKTsKLSAgICAg
ICAgbGV0IGxpbWl0ID0gcGFyYW1zLmxpbWl0ID8gcGFyc2VJbnQocGFyYW1zLmxpbWl0W3BhcmFt
cy5saW1pdC5sZW5ndGggLSAxXSkgOiBERUZBVUxUX0xJTUlUOwotCi0gICAgICAgIC8vIFRyeSBh
bmQgZGV0ZXJtaW5lIGlmIHRoZSB0ZXN0cyB3ZSdyZSBkaXNwbGF5aW5nIGhhdmUgY2hhbmdlZC4K
LSAgICAgICAgaWYgKHBhcmFtcy50ZXN0ICYmICghcGFyYW1zLnN1aXRlIHx8IHBhcmFtcy50ZXN0
Lmxlbmd0aCAhPSBwYXJhbXMuc3VpdGUubGVuZ3RoKSkKLSAgICAgICAgICAgIHRoaXMucmVmLnNl
dFN0YXRlKHtlcnJvcjogIlF1ZXJ5IEVycm9yIiwgZGVzY3JpcHRpb246ICdNdXN0IGhhdmUgdGhl
IHNhbWUgbnVtYmVyIG9mIHN1aXRlcyBhbmQgdGVzdHMgaW4gcXVlcnknfSk7Ci0gICAgICAgIGVs
c2UgaWYgKHBhcmFtcy50ZXN0KSB7Ci0gICAgICAgICAgICBsZXQgbmVlZFJlUmVuZGVyID0gcGFy
YW1zLnRlc3QubGVuZ3RoICE9IHRoaXMucmVmLnN0YXRlLmNoaWxkcmVuLmxlbmd0aDsKLSAgICAg
ICAgICAgIGxldCBuZXdDaGlsZHJlbiA9IFtdOwotCi0gICAgICAgICAgICBmb3IgKGxldCBpID0g
MDsgaSA8IHBhcmFtcy50ZXN0Lmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICAgICAgbGV0IGRp
ZEZpbmQgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICBmb3IgKGxldCBzZWFyY2ggPSAwOyBzZWFy
Y2ggPCB0aGlzLnJlZi5zdGF0ZS5jaGlsZHJlbi5sZW5ndGg7ICsrc2VhcmNoKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGlmICh0aGlzLnJlZi5zdGF0ZS5jaGlsZHJlbltzZWFyY2hdLnN1aXRlID09
PSBwYXJhbXMuc3VpdGVbaV0gJiYgdGhpcy5yZWYuc3RhdGUuY2hpbGRyZW5bc2VhcmNoXS50ZXN0
ID09PSBwYXJhbXMudGVzdFtpXSkgewotICAgICAgICAgICAgICAgICAgICAgICAgbmV3Q2hpbGRy
ZW4ucHVzaCh0aGlzLnJlZi5zdGF0ZS5jaGlsZHJlbltzZWFyY2hdKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGRpZEZpbmQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5y
ZWYuc3RhdGUuY2hpbGRyZW4uc3BsaWNlKHNlYXJjaCwgMSk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAg
ICAgICAgICB0aGlzLnJlZi5zdGF0ZS5jaGlsZHJlbltzZWFyY2hdLnRpbWVsaW5lLnRlYXJkb3du
KCk7Ci0gICAgICAgICAgICAgICAgICAgIG5lZWRSZVJlbmRlciA9IHRydWU7Ci0gICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgIGlmICghZGlkRmluZCkgewotICAgICAgICAgICAgICAg
ICAgICBuZWVkUmVSZW5kZXIgPSB0cnVlOwotCi0gICAgICAgICAgICAgICAgICAgIG5ld0NoaWxk
cmVuLnB1c2goewotICAgICAgICAgICAgICAgICAgICAgICAgc3VpdGU6IHBhcmFtcy5zdWl0ZVtp
XSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Q6IHBhcmFtcy50ZXN0W2ldLAotICAgICAg
ICAgICAgICAgICAgICAgICAgdGltZWxpbmU6IG5ldyBUaW1lbGluZUZyb21FbmRwb2ludChgYXBp
L3Jlc3VsdHMvJHtwYXJhbXMuc3VpdGVbaV19LyR7cGFyYW1zLnRlc3RbaV19YCwgcGFyYW1zLnN1
aXRlW2ldLCBwYXJhbXMudGVzdFtpXSksCi0gICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKG5lZWRSZVJlbmRl
cikKLSAgICAgICAgICAgICAgICB0aGlzLnJlZi5zZXRTdGF0ZSh7Y2hpbGRyZW46IG5ld0NoaWxk
cmVufSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgdGhpcy5yZWYuc3RhdGUu
Y2hpbGRyZW4gPSBuZXdDaGlsZHJlbjsKLSAgICAgICAgfQotCi0gICAgICAgIGRlbGV0ZSBwYXJh
bXMubGltaXQ7Ci0gICAgICAgIGRlbGV0ZSBwYXJhbXMuc3VpdGU7Ci0gICAgICAgIGRlbGV0ZSBw
YXJhbXMudGVzdDsKLQotICAgICAgICBpZiAoZGVlcENvbXBhcmUocGFyYW1zLCB0aGlzLmN1cnJl
bnRQYXJhbXMpKSB7Ci0gICAgICAgICAgICBpZiAobGltaXQgPT09IHRoaXMuY3VycmVudExpbWl0
KQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIGlmIChsaW1pdCA8IHRoaXMu
Y3VycmVudExpbWl0KSB7Ci0gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50TGltaXQgPSBsaW1p
dDsKLSAgICAgICAgICAgICAgICB0aGlzLnJlZi5zdGF0ZS5jaGlsZHJlbi5mb3JFYWNoKGNoaWxk
ID0+IHsKLSAgICAgICAgICAgICAgICAgICAgY2hpbGQudGltZWxpbmUucmVyZW5kZXIoKTsKLSAg
ICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICB0aGlzLmN1cnJlbnRMaW1pdCA9IGxpbWl0OwotICAgICAgICB9Ci0KLSAg
ICAgICAgdGhpcy5yZWYuc3RhdGUuY2hpbGRyZW4uZm9yRWFjaChjaGlsZCA9PiB7Ci0gICAgICAg
ICAgICBjaGlsZC50aW1lbGluZS5yZWxvYWQoKTsKLSAgICAgICAgfSk7Ci0gICAgICAgIHRoaXMu
Y3VycmVudFBhcmFtcyA9IHBhcmFtczsKLSAgICB9Ci0gICAgdG9TdHJpbmcoKSB7Ci0gICAgICAg
IHJldHVybiBgPGRpdiByZWY9IiR7dGhpcy5yZWZ9Ij48L2Rpdj5gOwotICAgIH0KLSAgICBub3Rp
ZnlUaW1lbGluZXNSZW5kZXIoKSB7Ci0gICAgICAgIHRoaXMucmVmLnN0YXRlLmNoaWxkcmVuLmZv
ckVhY2goY2hpbGQgPT4gewotICAgICAgICAgICAgY2hpbGQudGltZWxpbmUubm90aWZ5UmVyZW5k
ZXIoKTsKLSAgICAgICAgfSk7Ci0gICAgfQotfQotCi1sZXQgdmlldyA9IG5ldyBTZWFyY2hWaWV3
KCk7Ci1jb25zdCBvbkxheW91dENoYW5nZSA9IG5ldyBFdmVudFN0cmVhbSgpOwotb25MYXlvdXRD
aGFuZ2UuYWN0aW9uKCgpID0+IHsKLSAgICB2aWV3Lm5vdGlmeVRpbWVsaW5lc1JlbmRlcigpOwot
fSk7Ci13aW5kb3cub25wb3BzdGF0ZSA9IGV2ZW50ID0+IHt2aWV3LnJlbG9hZCgpO307Ci13aW5k
b3cub25wdXNoc3RhdGUgPSBldmVudCA9PiB7dmlldy5yZWxvYWQoKTt9OwotCi1sZXQgdmlld3Bv
cnQgPSBudWxsOwotRE9NLmluamVjdCgKLSAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYXBw
JyksCi0gICAgYCR7VG9vbFRpcH0KLSAgICAke0ludmVzdGlnYXRlRHJhd2VyfQotICAgICR7RHJh
d2VyKFsKLSAgICAgICAgTGVnZW5kKCgpID0+IHsKLSAgICAgICAgICAgIHZpZXcucmVmLnN0YXRl
LmNoaWxkcmVuLmZvckVhY2goKGNoaWxkKSA9PiB7Ci0gICAgICAgICAgICAgICAgY2hpbGQudGlt
ZWxpbmUudXBkYXRlKCk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfSwgZmFsc2UpLAotICAg
ICAgICBMaW1pdFNsaWRlcigoKSA9PiB7dmlldy5yZWxvYWQoKX0pLAotICAgICAgICBCcmFuY2hT
ZWxlY3RvcigoKSA9PiB7Ci0gICAgICAgICAgICBDb21taXRCYW5rLnJlbG9hZCgpOwotICAgICAg
ICAgICAgdmlldy5yZWxvYWQoKTsKLSAgICAgICAgfSksCi0gICAgICAgIENvbmZpZ3VyYXRpb25T
ZWxlY3RvcnMoKCkgPT4ge3ZpZXcucmVsb2FkKCl9KSwKLSAgICBdLCAoKSA9PiBvbkxheW91dENo
YW5nZS5hZGQoKSl9Ci0KLSAgICA8ZGl2IGNsYXNzPSJtYWluIHJpZ2h0LXNpZGViYXIgdW5kZXIt
dG9wYmFyLXdpdGgtYWN0aW9ucyI+Ci0gICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiIHJlZj0k
e1JFRi5jcmVhdGVSZWYoewotICAgICAgICAgICAgICAgIG9uRWxlbWVudE1vdW50OiAoZWxlbWVu
dCkgPT4gewotICAgICAgICAgICAgICAgICAgICB2aWV3LnJlZi5zdGF0ZS5jaGlsZHJlbi5mb3JF
YWNoKChjaGlsZCkgPT4gewotICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGQudGltZWxpbmUu
dmlld3BvcnQgPSBlbGVtZW50OwotICAgICAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAg
ICAgICAgICAgdmlld3BvcnQgPSBlbGVtZW50OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIH0pfT4KLSAgICAgICAgICAgICR7U2VhcmNoQmFyKGZ1bmN0aW9uICgpIHsKLSAgICAgICAg
ICAgICAgICBjb25zdCBzcGxpdFVSTCA9IGRvY3VtZW50LlVSTC5zcGxpdCgnPycpOwotICAgICAg
ICAgICAgICAgIGxldCBwYXJhbXMgPSBxdWVyeVRvUGFyYW1zKHNwbGl0VVJMWzFdKTsKLSAgICAg
ICAgICAgICAgICBpZiAoIXBhcmFtcy5zdWl0ZSkKLSAgICAgICAgICAgICAgICAgICAgcGFyYW1z
LnN1aXRlID0gW107Ci0gICAgICAgICAgICAgICAgaWYgKCFwYXJhbXMudGVzdCkKLSAgICAgICAg
ICAgICAgICAgICAgcGFyYW1zLnRlc3QgPSBbXTsKLQotICAgICAgICAgICAgICAgIGZvciAobGV0
IGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGxldCBuZWVkVG9BZGQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICBpZiAoIW5lZWRUb0Fk
ZCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICAgICAg
ICAgIGxldCBjaGlsZCA9IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN1aXRlOiBhcmd1bWVu
dHNbaV0uc3VpdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICB0ZXN0OiBhcmd1bWVudHNbaV0u
dGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVsaW5lOiBuZXcgVGltZWxpbmVGcm9t
RW5kcG9pbnQoYGFwaS9yZXN1bHRzLyR7YXJndW1lbnRzW2ldLnN1aXRlfS8ke2FyZ3VtZW50c1tp
XS50ZXN0fWAsIGFyZ3VtZW50c1tpXS5zdWl0ZSwgYXJndW1lbnRzW2ldLnRlc3QsIHZpZXdwb3J0
KSwKLSAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgIHZpZXcucmVm
LnNldFN0YXRlKHtwcmVwZW5kaW5nOiBbY2hpbGRdfSk7Ci0gICAgICAgICAgICAgICAgICAgIHBh
cmFtcy5zdWl0ZS5wdXNoKGNoaWxkLnN1aXRlKTsKLSAgICAgICAgICAgICAgICAgICAgcGFyYW1z
LnRlc3QucHVzaChjaGlsZC50ZXN0KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgY29uc3QgcXVlcnlTdHJpbmcgPSBwYXJhbXNUb1F1ZXJ5KHBhcmFtcyk7Ci0gICAgICAgICAg
ICAgICAgd2luZG93Lmhpc3RvcnkucHVzaFN0YXRlKHF1ZXJ5U3RyaW5nLCAnJywgc3BsaXRVUkxb
MF0gKyAnPycgKyBxdWVyeVN0cmluZyk7Ci0gICAgICAgICAgICB9LCBTVUlURVMpfQotICAgICAg
ICAgICAgJHt2aWV3fQotICAgICAgICA8L2Rpdj4KLSAgICA8L2Rpdj5gCi0pOwotCi08L3Njcmlw
dD4KLQoteyUgZW5kYmxvY2sgJX0KLXslIGJsb2NrIGNvbnRlbnQgJX0KLQotPGRpdiBpZD0iYXBw
Ij4KLTwvZGl2PgotCi17JSBlbmRibG9jayAlfQpJbmRleDogVG9vbHMvcmVzdWx0c2RicHkvcmVz
dWx0c2RicHkvdmlldy90ZW1wbGF0ZXMvc3VpdGVfcmVzdWx0cy5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvdGVtcGxhdGVzL3N1aXRlX3Jlc3Vs
dHMuaHRtbAkocmV2aXNpb24gMjY1NTMxKQorKysgVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2Ri
cHkvdmlldy90ZW1wbGF0ZXMvc3VpdGVfcmVzdWx0cy5odG1sCShub25leGlzdGVudCkKQEAgLTEs
MjA3ICswLDAgQEAKLTwhLS0KLSBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotCi0gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gYXJlIG1ldDoKLSAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotCi0gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuICJBUyBJUyIg
QU5EIEFOWQotIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCi0gSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCi0gUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAotLS0+Ci0KLXslIGV4dGVuZHMgImJhc2UuaHRtbCIgJX0KLXslIGJsb2NrIGhlYWQg
JX0KLTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImFzc2V0cy9j
c3Mvc2VhcmNoLmNzcyI+Ci08bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBo
cmVmPSJhc3NldHMvY3NzL3RpbWVsaW5lLmNzcyI+Ci08bGluayByZWw9InN0eWxlc2hlZXQiIHR5
cGU9InRleHQvY3NzIiBocmVmPSJhc3NldHMvY3NzL3Rvb2x0aXAuY3NzIj4KLQotPHNjcmlwdCB0
eXBlPSJtb2R1bGUiPgotaW1wb3J0IHtDb21taXRCYW5rfSBmcm9tICcvYXNzZXRzL2pzL2NvbW1p
dC5qcyc7Ci1pbXBvcnQge2RlZXBDb21wYXJlLCBFcnJvckRpc3BsYXksIHF1ZXJ5VG9QYXJhbXMs
IHBhcmFtc1RvUXVlcnl9IGZyb20gJy9hc3NldHMvanMvY29tbW9uLmpzJzsKLWltcG9ydCB7Q29u
ZmlndXJhdGlvbn0gZnJvbSAnL2Fzc2V0cy9qcy9jb25maWd1cmF0aW9uLmpzJzsKLWltcG9ydCB7
RHJhd2VyLCBCcmFuY2hTZWxlY3RvciwgQ29uZmlndXJhdGlvblNlbGVjdG9ycywgTGltaXRTbGlk
ZXJ9IGZyb20gJy9hc3NldHMvanMvZHJhd2VyLmpzJzsKLWltcG9ydCB7SW52ZXN0aWdhdGVEcmF3
ZXJ9IGZyb20gJy9hc3NldHMvanMvaW52ZXN0aWdhdGUuanMnOwotaW1wb3J0IHtMZWdlbmQsIFRp
bWVsaW5lRnJvbUVuZHBvaW50fSBmcm9tICcvYXNzZXRzL2pzL3RpbWVsaW5lLmpzJzsKLWltcG9y
dCB7VG9vbFRpcH0gZnJvbSAnL2Fzc2V0cy9qcy90b29sdGlwLmpzJzsKLWltcG9ydCB7RE9NLCBS
RUYsIEV2ZW50U3RyZWFtfSBmcm9tICcvbGlicmFyeS9qcy9SZWYuanMnOwotCi1jb25zdCBERUZB
VUxUX0xJTUlUID0gMTAwOwotY29uc3QgU1VJVEVTID0gSlNPTi5wYXJzZSgne3sgc3VpdGVzfHNh
ZmUgfX0nKTsKLQotY2xhc3MgTWFpblZpZXcgewotICAgIGNvbnN0cnVjdG9yKCkgeyAgICAKLSAg
ICAgICAgdGhpcy5jdXJyZW50UGFyYW1zID0gcXVlcnlUb1BhcmFtcyhkb2N1bWVudC5VUkwuc3Bs
aXQoJz8nKVsxXSk7Ci0gICAgICAgIHRoaXMuY3VycmVudExpbWl0ID0gdGhpcy5jdXJyZW50UGFy
YW1zLmxpbWl0ID8gcGFyc2VJbnQodGhpcy5jdXJyZW50UGFyYW1zLmxpbWl0W3RoaXMuY3VycmVu
dFBhcmFtcy5saW1pdC5sZW5ndGggLSAxXSkgOiBERUZBVUxUX0xJTUlUOwotICAgICAgICBkZWxl
dGUgdGhpcy5jdXJyZW50UGFyYW1zLmxpbWl0OwotCi0gICAgICAgIHRoaXMucmVmID0gUkVGLmNy
ZWF0ZVJlZih7Ci0gICAgICAgICAgICBzdGF0ZTogU1VJVEVTLAotICAgICAgICAgICAgb25TdGF0
ZVVwZGF0ZTogKGVsZW1lbnQsIHN0YXRlKSA9PiB7Ci0gICAgICAgICAgICAgICAgaWYgKCFzdGF0
ZSkKLSAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5pbm5lckhUTUwgPSB0aGlzLnBsYWNlaG9s
ZGVyKCk7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoc3RhdGUuZXJyb3IpCi0gICAgICAgICAg
ICAgICAgICAgIGVsZW1lbnQuaW5uZXJIVE1MID0gRXJyb3JEaXNwbGF5KHN0YXRlKTsKLSAgICAg
ICAgICAgICAgICBlbHNlIGlmIChzdGF0ZS5sZW5ndGggPT09IDApCi0gICAgICAgICAgICAgICAg
ICAgIGVsZW1lbnQuaW5uZXJIVE1MID0gRXJyb3JEaXNwbGF5KHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGVycm9yOiAnTm90IEZvdW5kJywKLSAgICAgICAgICAgICAgICAgICAgICAgIGRlc2Ny
aXB0aW9uOiAnTm8gc3VpdGVzIG1hdGNoaW5nIHRoZSBzcGVjaWZpZWQgY3JpdGVyaWEnLAotICAg
ICAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgICAgIERPTS5pbmplY3QoZWxlbWVudCwgdGhpcy5yZW5kZXIoc3RhdGUpKTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfSk7Ci0gICAgICAgIHRoaXMubGF0ZXN0RGlzcGF0Y2ggPSBEYXRlLm5v
dygpOwotICAgICAgICB0aGlzLmNoaWxkcmVuID0ge307Ci0KLSAgICAgICAgU1VJVEVTLmZvckVh
Y2goKHN1aXRlKSA9PiB7Ci0gICAgICAgICAgICB0aGlzLmNoaWxkcmVuW3N1aXRlXSA9IG5ldyBU
aW1lbGluZUZyb21FbmRwb2ludCgnYXBpL3Jlc3VsdHMvJyArIHN1aXRlLCBzdWl0ZSk7Ci0gICAg
ICAgIH0pOwotICAgIH0KLSAgICB1bnBhY2tTdWl0ZXMoc3VpdGVzSnNvbikgewotICAgICAgICBp
ZiAoc3VpdGVzSnNvbi5lcnJvcikKLSAgICAgICAgICAgIHJldHVybiBzdWl0ZXNKc29uOwotCi0g
ICAgICAgIGxldCBzdWl0ZXMgPSBuZXcgU2V0KCk7Ci0gICAgICAgIHN1aXRlc0pzb24uZm9yRWFj
aCgocGFpcikgPT4gewotICAgICAgICAgICAgcGFpclsxXS5mb3JFYWNoKChzdWl0ZSkgPT4gewot
ICAgICAgICAgICAgICAgIHN1aXRlcy5hZGQoc3VpdGUpOwotICAgICAgICAgICAgfSk7Ci0gICAg
ICAgIH0pOwotCi0gICAgICAgIGxldCBzb3J0ZWRTdWl0ZXMgPSBbLi4uc3VpdGVzXS5zb3J0KCk7
Ci0gICAgICAgIE9iamVjdC5rZXlzKHRoaXMuY2hpbGRyZW4pLmZvckVhY2goa2V5ID0+IHt0aGlz
LmNoaWxkcmVuW2tleV0udGVhcmRvd24oKTt9KTsKLSAgICAgICAgdGhpcy5jaGlsZHJlbiA9IHt9
OwotICAgICAgICBzb3J0ZWRTdWl0ZXMuZm9yRWFjaCgoc3VpdGUpID0+IHsKLSAgICAgICAgICAg
IHRoaXMuY2hpbGRyZW5bc3VpdGVdID0gbmV3IFRpbWVsaW5lRnJvbUVuZHBvaW50KCdhcGkvcmVz
dWx0cy8nICsgc3VpdGUsIHN1aXRlKTsKLSAgICAgICAgfSk7Ci0gICAgICAgIHJldHVybiBzb3J0
ZWRTdWl0ZXM7Ci0gICAgfQotICAgIHJlbG9hZCgpIHsKLSAgICAgICAgbGV0IHBhcmFtcyA9IHF1
ZXJ5VG9QYXJhbXMoZG9jdW1lbnQuVVJMLnNwbGl0KCc/JylbMV0pOwotICAgICAgICBsZXQgbGlt
aXQgPSBwYXJhbXMubGltaXQgPyBwYXJzZUludChwYXJhbXMubGltaXRbcGFyYW1zLmxpbWl0Lmxl
bmd0aCAtIDFdKSA6IERFRkFVTFRfTElNSVQ7Ci0gICAgICAgIGRlbGV0ZSBwYXJhbXMubGltaXQ7
Ci0KLSAgICAgICAgaWYgKGRlZXBDb21wYXJlKHBhcmFtcywgdGhpcy5jdXJyZW50UGFyYW1zKSkg
ewotICAgICAgICAgICAgaWYgKGxpbWl0ID09PSB0aGlzLmN1cnJlbnRMaW1pdCkKLSAgICAgICAg
ICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgIGZvciAobGV0IHN1aXRlIGluIHRoaXMuY2hp
bGRyZW4pIHsKLSAgICAgICAgICAgICAgICBpZiAobGltaXQgPiB0aGlzLmN1cnJlbnRMaW1pdCkK
LSAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGlsZHJlbltzdWl0ZV0ucmVsb2FkKCk7Ci0gICAg
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICB0aGlzLmNoaWxkcmVuW3N1aXRl
XS5yZXJlbmRlcigpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdGhpcy5jdXJyZW50TGlt
aXQgPSBsaW1pdDsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGxl
dCBteURpc3BhdGNoID0gRGF0ZS5ub3coKTsKLSAgICAgICAgdGhpcy5jdXJyZW50UGFyYW1zID0g
cGFyYW1zOwotICAgICAgICB0aGlzLmN1cnJlbnRMaW1pdCA9IGxpbWl0OwotICAgICAgICB0aGlz
LmxhdGVzdERpc3BhdGNoID0gTWF0aC5tYXgodGhpcy5sYXRlc3REaXNwYXRjaCwgbXlEaXNwYXRj
aCk7Ci0gICAgICAgIHRoaXMucmVmLnNldFN0YXRlKG51bGwpOwotCi0gICAgICAgIGxldCBzZWxm
ID0gdGhpczsKLSAgICAgICAgbGV0IHN1aXRlUGFyYW1zID0ge307Ci0gICAgICAgIENvbmZpZ3Vy
YXRpb24ubWVtYmVycygpLmZvckVhY2gobWVtYmVyID0+IHsKLSAgICAgICAgICAgIGlmIChwYXJh
bXNbbWVtYmVyXSkKLSAgICAgICAgICAgICAgICBzdWl0ZVBhcmFtc1ttZW1iZXJdID0gcGFyYW1z
W21lbWJlcl07Ci0gICAgICAgIH0pOwotICAgICAgICBpZiAocGFyYW1zLmJyYW5jaCkKLSAgICAg
ICAgICAgIHN1aXRlUGFyYW1zLmJyYW5jaCA9IHBhcmFtcy5icmFuY2g7Ci0gICAgICAgIGxldCBx
dWVyeSA9IHBhcmFtc1RvUXVlcnkoc3VpdGVQYXJhbXMpOwotICAgICAgICBmZXRjaChxdWVyeSA/
ICdhcGkvc3VpdGVzPycgKyBxdWVyeTogJ2FwaS9zdWl0ZXMnKS50aGVuKHJlc3BvbnNlID0+IHsK
LSAgICAgICAgICAgIHJlc3BvbnNlLmpzb24oKS50aGVuKGpzb24gPT4gewotICAgICAgICAgICAg
ICAgIGlmIChteURpc3BhdGNoID09PSB0aGlzLmxhdGVzdERpc3BhdGNoKQotICAgICAgICAgICAg
ICAgICAgICBzZWxmLnJlZi5zZXRTdGF0ZSh0aGlzLnVucGFja1N1aXRlcyhqc29uKSk7Ci0gICAg
ICAgICAgICB9KTsKLSAgICAgICAgfSkuY2F0Y2goZXJyb3IgPT4gewotICAgICAgICAgICAgaWYg
KG15RGlzcGF0Y2ggPT09IHNlbGYubGF0ZXN0RGlzcGF0Y2gpCi0gICAgICAgICAgICAgICAgc2Vs
Zi5yZWYuc2V0U3RhdGUoe2Vycm9yOiAiQ29ubmVjdGlvbiBFcnJvciIsIGRlc2NyaXB0aW9uOiBl
cnJvcn0pOwotICAgICAgICB9KTsKLSAgICB9Ci0gICAgcGxhY2Vob2xkZXIoKSB7Ci0gICAgICAg
IHJldHVybiBgPGRpdiBjbGFzcz0icGxhY2Vob2xkZXIgZGltbWVyIj4KLSAgICAgICAgICAgICAg
ICA8ZGl2IGNsYXNzPSJsb2FkZXIiPgotICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJz
cGlubmVyIj48L2Rpdj4KLSAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDwvZGl2
PmA7Ci0gICAgfQotICAgIHRvU3RyaW5nKCkgewotICAgICAgICByZXR1cm4gYDxkaXYgcmVmPSIk
e3RoaXMucmVmfSI+PC9kaXY+YDsKLSAgICB9Ci0gICAgcmVuZGVyKHN1aXRlcykgewotICAgICAg
ICBsZXQgY2hpbGRyZW4gPSB0aGlzLmNoaWxkcmVuOwotICAgICAgICByZXR1cm4gc3VpdGVzLm1h
cChzdWl0ZSA9PiB7Ci0gICAgICAgICAgICByZXR1cm4gYDxkaXYgY2xhc3M9InNlY3Rpb24iPgot
ICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkZXIiPgotICAgICAgICAgICAgICAg
ICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGUiPiR7c3VpdGV9PC9kaXY+Ci0gICAgICAgICAgICAg
ICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAke2NoaWxkcmVuW3N1aXRlXX0KLSAg
ICAgICAgICAgICAgICA8L2Rpdj48YnI+YDsKLSAgICAgICAgfSkuam9pbignJyk7Ci0gICAgfQot
ICAgIG5vdGlmeVRpbWVsaW5lc1JlbmRlcigpIHsKLSAgICAgICAgZm9yIChsZXQgc3VpdGUgaW4g
dGhpcy5jaGlsZHJlbikgewotICAgICAgICAgICAgdGhpcy5jaGlsZHJlbltzdWl0ZV0ubm90aWZ5
UmVyZW5kZXIoKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotbGV0IHZpZXcgPSBuZXcgTWFpblZp
ZXcoKTsKLWNvbnN0IG9uTGF5b3V0Q2hhbmdlID0gbmV3IEV2ZW50U3RyZWFtKCk7Ci1vbkxheW91
dENoYW5nZS5hY3Rpb24oKCkgPT4gewotICAgIHZpZXcubm90aWZ5VGltZWxpbmVzUmVuZGVyKCk7
Ci19KTsKLQotRE9NLmluamVjdChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYXBwJyksIGAke1Rv
b2xUaXB9Ci0ke0ludmVzdGlnYXRlRHJhd2VyfQotJHtEcmF3ZXIoWwotICAgIExlZ2VuZCgoKSA9
PiB7Ci0gICAgICAgIGZvciAobGV0IHN1aXRlIGluIHZpZXcuY2hpbGRyZW4pIHsKLSAgICAgICAg
ICAgIHZpZXcuY2hpbGRyZW5bc3VpdGVdLnVwZGF0ZSgpOwotICAgICAgICB9Ci0gICAgfSwgdHJ1
ZSwgdHJ1ZSksCi0gICAgTGltaXRTbGlkZXIoKCkgPT4ge3ZpZXcucmVsb2FkKCl9KSwKLSAgICBC
cmFuY2hTZWxlY3RvcigoKSA9PiB7Ci0gICAgICAgIENvbW1pdEJhbmsucmVsb2FkKCk7Ci0gICAg
ICAgIHZpZXcucmVsb2FkKCk7Ci0gICAgfSksCi0gICAgQ29uZmlndXJhdGlvblNlbGVjdG9ycygo
KSA9PiB7dmlldy5yZWxvYWQoKX0pLAotXSwgKCkgPT4gb25MYXlvdXRDaGFuZ2UuYWRkKCkpfQot
PGRpdiBjbGFzcz0ibWFpbiByaWdodC1zaWRlYmFyIHVuZGVyLXRvcGJhci13aXRoLWFjdGlvbnMi
PgotICAgIDxicj4KLSAgICA8ZGl2IGNsYXNzPSJjb250ZW50IiByZWY9JHtSRUYuY3JlYXRlUmVm
KHsKLSAgICAgICAgICAgIG9uRWxlbWVudE1vdW50OiAoZWxlbWVudCkgPT4gewotICAgICAgICAg
ICAgICAgIGZvciAobGV0IHN1aXRlIGluIHZpZXcuY2hpbGRyZW4pIHsKLSAgICAgICAgICAgICAg
ICAgICAgdmlldy5jaGlsZHJlbltzdWl0ZV0udmlld3BvcnQgPSBlbGVtZW50OwotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfSl9PgotICAgICAgICAke3ZpZXd9Ci0g
ICAgPC9kaXY+Ci08L2Rpdj5gKTsKLQotPC9zY3JpcHQ+Ci0KLXslIGVuZGJsb2NrICV9Ci17JSBi
bG9jayBjb250ZW50ICV9Ci0KLTxkaXYgaWQ9ImFwcCI+Ci08L2Rpdj4KLQoteyUgZW5kYmxvY2sg
JX0KSW5kZXg6IFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvdmlld19yb3V0ZXMu
cHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy92aWV3
X3JvdXRlcy5weQkocmV2aXNpb24gMjY1NTMxKQorKysgVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0
c2RicHkvdmlldy92aWV3X3JvdXRlcy5weQkobm9uZXhpc3RlbnQpCkBAIC0xLDE1OCArMCwwIEBA
Ci0jIENvcHlyaWdodCAoQykgMjAxOSwgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0jIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0j
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUgotIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotIyBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLAotIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1pbXBvcnQgb3MK
LWltcG9ydCByZXF1ZXN0cwotaW1wb3J0IHRpbWUKLQotZnJvbSBmbGFzayBpbXBvcnQgYWJvcnQs
IGpzb25pZnksIHNlbmRfZnJvbV9kaXJlY3RvcnksIHJlZGlyZWN0LCBSZXNwb25zZQotZnJvbSBq
aW5qYTIgaW1wb3J0IEVudmlyb25tZW50LCBQYWNrYWdlTG9hZGVyLCBzZWxlY3RfYXV0b2VzY2Fw
ZQotZnJvbSByZXN1bHRzZGJweS5mbGFza19zdXBwb3J0LnV0aWwgaW1wb3J0IEFzc2VydFJlcXVl
c3QsIGNhY2hlX2ZvcgotZnJvbSByZXN1bHRzZGJweS5mbGFza19zdXBwb3J0LmF1dGhlZF9ibHVl
cHJpbnQgaW1wb3J0IEF1dGhlZEJsdWVwcmludAotZnJvbSByZXN1bHRzZGJweS52aWV3LmFyY2hp
dmVfdmlldyBpbXBvcnQgQXJjaGl2ZVZpZXcKLWZyb20gcmVzdWx0c2RicHkudmlldy5jaV92aWV3
IGltcG9ydCBDSVZpZXcKLWZyb20gcmVzdWx0c2RicHkudmlldy5jb21taXRfdmlldyBpbXBvcnQg
Q29tbWl0VmlldwotZnJvbSByZXN1bHRzZGJweS52aWV3LnNpdGVfbWVudSBpbXBvcnQgU2l0ZU1l
bnUKLWZyb20gcmVzdWx0c2RicHkudmlldy5zdWl0ZV92aWV3IGltcG9ydCBTdWl0ZVZpZXcKLWZy
b20gd2Vya3pldWcuZXhjZXB0aW9ucyBpbXBvcnQgSFRUUEV4Y2VwdGlvbiwgSW50ZXJuYWxTZXJ2
ZXJFcnJvcgotCi0KLWNsYXNzIFZpZXdSb3V0ZXMoQXV0aGVkQmx1ZXByaW50KToKLSAgICBkZWYg
X19pbml0X18oc2VsZiwgbW9kZWwsIGNvbnRyb2xsZXIsIGltcG9ydF9uYW1lPV9fbmFtZV9fLCB0
aXRsZT0nUmVzdWx0cyBEYXRhYmFzZScsIGF1dGhfZGVjb3JhdG9yPU5vbmUsIGFyY2hpdmVfcm91
dGVzPU5vbmUpOgotICAgICAgICBzdXBlcihWaWV3Um91dGVzLCBzZWxmKS5fX2luaXRfXygndmll
dycsIGltcG9ydF9uYW1lLCB1cmxfcHJlZml4PU5vbmUsIGF1dGhfZGVjb3JhdG9yPWF1dGhfZGVj
b3JhdG9yKQotICAgICAgICBzZWxmLl9jYWNoZSA9IHt9Ci0KLSAgICAgICAgc2VsZi50aXRsZSA9
IHRpdGxlCi0gICAgICAgIHNlbGYuZW52aXJvbm1lbnQgPSBFbnZpcm9ubWVudCgKLSAgICAgICAg
ICAgIGxvYWRlcj1QYWNrYWdlTG9hZGVyKHBhY2thZ2VfbmFtZT0ncmVzdWx0c2RicHkudmlldycs
IHBhY2thZ2VfcGF0aD0ndGVtcGxhdGVzJyksCi0gICAgICAgICAgICBhdXRvZXNjYXBlPXNlbGVj
dF9hdXRvZXNjYXBlKFsnaHRtbCcsICd4bWwnXSksCi0gICAgICAgICkKLQotICAgICAgICAjIFBy
b3RlY3RpbmcganMgYW5kIGNzcyB3aXRoIGF1dGggZG9lc24ndCBtYWtlIHNlbnNlCi0gICAgICAg
IHNlbGYuYWRkX3VybF9ydWxlKCcvbGlicmFyeS88cGF0aDpwYXRoPicsICdsaWJyYXJ5Jywgc2Vs
Zi5saWJyYXJ5LCBhdXRoZWQ9RmFsc2UsIG1ldGhvZHM9KCdHRVQnLCkpCi0gICAgICAgIHNlbGYu
YWRkX3VybF9ydWxlKCcvYXNzZXRzLzxwYXRoOnBhdGg+JywgJ2Fzc2V0cycsIHNlbGYuYXNzZXRz
LCBhdXRoZWQ9RmFsc2UsIG1ldGhvZHM9KCdHRVQnLCkpCi0KLSAgICAgICAgc2VsZi5zaXRlX21l
bnUgPSBTaXRlTWVudSh0aXRsZT1zZWxmLnRpdGxlKQotCi0gICAgICAgIHNlbGYuY29tbWl0cyA9
IENvbW1pdFZpZXcoCi0gICAgICAgICAgICBlbnZpcm9ubWVudD1zZWxmLmVudmlyb25tZW50LAot
ICAgICAgICAgICAgY29tbWl0X2NvbnRyb2xsZXI9Y29udHJvbGxlci5jb21taXRfY29udHJvbGxl
ciwKLSAgICAgICAgICAgIHNpdGVfbWVudT1zZWxmLnNpdGVfbWVudSwKLSAgICAgICAgKQotICAg
ICAgICBzZWxmLnN1aXRlcyA9IFN1aXRlVmlldygKLSAgICAgICAgICAgIGVudmlyb25tZW50PXNl
bGYuZW52aXJvbm1lbnQsCi0gICAgICAgICAgICB1cGxvYWRfY29udHJvbGxlcj1jb250cm9sbGVy
LnVwbG9hZF9jb250cm9sbGVyLAotICAgICAgICAgICAgc3VpdGVfY29udHJvbGxlcj1jb250cm9s
bGVyLnN1aXRlX2NvbnRyb2xsZXIsCi0gICAgICAgICAgICBzaXRlX21lbnU9c2VsZi5zaXRlX21l
bnUsCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5jaSA9IENJVmlldygKLSAgICAgICAgICAgIGVu
dmlyb25tZW50PXNlbGYuZW52aXJvbm1lbnQsCi0gICAgICAgICAgICBjaV9jb250cm9sbGVyPWNv
bnRyb2xsZXIuY2lfY29udHJvbGxlciwKLSAgICAgICAgICAgIHNpdGVfbWVudT1zZWxmLnNpdGVf
bWVudSwKLSAgICAgICAgKQotICAgICAgICBzZWxmLmFyY2hpdmUgPSBBcmNoaXZlVmlldygKLSAg
ICAgICAgICAgIGVudmlyb25tZW50PXNlbGYuZW52aXJvbm1lbnQsCi0gICAgICAgICAgICBhcmNo
aXZlX2NvbnRyb2xsZXI9Y29udHJvbGxlci5hcmNoaXZlX2NvbnRyb2xsZXIsCi0gICAgICAgICAg
ICBzaXRlX21lbnU9c2VsZi5zaXRlX21lbnUsCi0gICAgICAgICkKLQotICAgICAgICBzZWxmLmFk
ZF91cmxfcnVsZSgnLycsICdtYWluJywgc2VsZi5zdWl0ZXMuc2VhcmNoLCBtZXRob2RzPSgnR0VU
JywpKQotICAgICAgICBzZWxmLmFkZF91cmxfcnVsZSgnL3NlYXJjaCcsICdzZWFyY2gnLCBzZWxm
LnN1aXRlcy5zZWFyY2gsIG1ldGhvZHM9KCdHRVQnLCkpCi0KLSAgICAgICAgc2VsZi5hZGRfdXJs
X3J1bGUoJy9kb2N1bWVudGF0aW9uJywgJ2RvY3VtZW50YXRpb24nLCBzZWxmLmRvY3VtZW50YXRp
b24sIG1ldGhvZHM9KCdHRVQnLCkpCi0KLSAgICAgICAgc2VsZi5hZGRfdXJsX3J1bGUoJy9jb21t
aXQnLCAnY29tbWl0Jywgc2VsZi5jb21taXRzLmNvbW1pdCwgbWV0aG9kcz0oJ0dFVCcsKSkKLSAg
ICAgICAgc2VsZi5hZGRfdXJsX3J1bGUoJy9jb21taXQvaW5mbycsICdjb21taXRfaW5mbycsIHNl
bGYuY29tbWl0cy5pbmZvLCBtZXRob2RzPSgnR0VUJywpKQotICAgICAgICBzZWxmLmFkZF91cmxf
cnVsZSgnL2NvbW1pdC9wcmV2aW91cycsICdjb21taXRfcHJldmlvdXMnLCBzZWxmLmNvbW1pdHMu
cHJldmlvdXMsIG1ldGhvZHM9KCdHRVQnLCkpCi0gICAgICAgIHNlbGYuYWRkX3VybF9ydWxlKCcv
Y29tbWl0L25leHQnLCAnY29tbWl0X25leHQnLCBzZWxmLmNvbW1pdHMubmV4dCwgbWV0aG9kcz0o
J0dFVCcsKSkKLSAgICAgICAgc2VsZi5hZGRfdXJsX3J1bGUoJy9jb21taXRzJywgJ2NvbW1pdHMn
LCBzZWxmLmNvbW1pdHMuY29tbWl0cywgbWV0aG9kcz0oJ0dFVCcsKSkKLQotICAgICAgICBzZWxm
LmFkZF91cmxfcnVsZSgnL3N1aXRlcycsICdzdWl0ZXMnLCBzZWxmLnN1aXRlcy5yZXN1bHRzLCBt
ZXRob2RzPSgnR0VUJywpKQotICAgICAgICBzZWxmLmFkZF91cmxfcnVsZSgnL2ludmVzdGlnYXRl
JywgJ2ludmVzdGlnYXRlJywgc2VsZi5zdWl0ZXMuaW52ZXN0aWdhdGUsIG1ldGhvZHM9KCdHRVQn
LCkpCi0KLSAgICAgICAgc2VsZi5hZGRfdXJsX3J1bGUoJy91cmxzL3F1ZXVlJywgJ3VybHMtcXVl
dWUnLCBzZWxmLmNpLnF1ZXVlLCBtZXRob2RzPSgnR0VUJywpKQotICAgICAgICBzZWxmLmFkZF91
cmxfcnVsZSgnL3VybHMvd29ya2VyJywgJ3VybHMtd29ya2VyJywgc2VsZi5jaS53b3JrZXIsIG1l
dGhvZHM9KCdHRVQnLCkpCi0gICAgICAgIHNlbGYuYWRkX3VybF9ydWxlKCcvdXJscy9idWlsZCcs
ICd1cmxzLWJ1aWxkJywgc2VsZi5jaS5idWlsZCwgbWV0aG9kcz0oJ0dFVCcsKSkKLQotICAgICAg
ICBzZWxmLmFkZF91cmxfcnVsZSgnL2FyY2hpdmUnLCAnYXJjaGl2ZS1saXN0Jywgc2VsZi5hcmNo
aXZlLmV4dHJhY3QsIG1ldGhvZHM9KCdHRVQnLCkpCi0gICAgICAgIHNlbGYuYWRkX3VybF9ydWxl
KCcvYXJjaGl2ZS88cGF0aDpwYXRoPicsICdhcmNoaXZlJywgc2VsZi5hcmNoaXZlLmV4dHJhY3Qs
IG1ldGhvZHM9KCdHRVQnLCkpCi0gICAgICAgICMgQXJjaGl2ZSByb3V0ZXMgY29udHJvbCB3aGlj
aCBzdWl0ZXMgZ2V0IGxpbmtlZCB0byByZXN1bHQgYXJjaGl2ZXMgYW5kIGhvdyB0aG9zZSBsaW5r
cyBhcHBlYXIgaW4gdGhlIFVJLgotICAgICAgICAjIFRoaXMgZGljdGlvbmFyeSB3aWxsIGJlIHBy
b2Nlc3NlZCBieSBhcmNoaXZlUm91dGVyLmpzLCB0aGVyZSBhcmUgMyBhY3RpdmUgcGFyYW1ldGVy
cyByZXNwZWN0ZWQ6Ci0gICAgICAgICMgICAgIGVuYWJsZWQ6IElmIGZhbHNlLCBubyBhcmNoaXZl
IGxpbmsgd2lsbCBiZSBnZW5lcmF0ZWQgZm9yIHRoaXMgc3VpdGUKLSAgICAgICAgIyAgICAgcGF0
aDogVGhlIGZpbGUgaW4gdGhlIGFyY2hpdmUgdG8gbGluayB0bwotICAgICAgICAjICAgICBsYWJl
bDogRGVmaW5lcyB0aGUgdXNlci12aXNpYmxlIG5hbWUgb2YgdGhlIGFyY2hpdmUgbGluawotICAg
ICAgICAjIERpY3Rpb25hcmllcyBoYXZlIGEgZGVmaW5lZCBhbmNlc3RyeSwgYW5kIHdpbGwgdXNl
IHRoZSBtb3N0IHNwZWNpZmljIHBhcmFtZXRlcnMgcG9zc2libGUuIFRoZSBhbmNlc3RyeQotICAg
ICAgICAjIGFyZ3VtZW50cyBhcmU6Ci0gICAgICAgICMgICAgIDxzdWl0ZT46IE5hbWUgb2YgYSBz
dWl0ZSAobGlrZSBsYXlvdXQtdGVzdHMpCi0gICAgICAgICMgICAgIDxyZXN1bHQ+OiBPbmUgb2Yg
dGhlIGV4cGVjdGVkIHJlc3VsdHMsIGxpa2UgRkFJTCwgVEVYVCBvciBJTUFHRQotICAgICAgICBz
ZWxmLmFyY2hpdmVfcm91dGVzID0gYXJjaGl2ZV9yb3V0ZXMgb3IgZGljdCgpCi0gICAgICAgIHNl
bGYuYWRkX3VybF9ydWxlKCcvYXJjaGl2ZS1yb3V0ZXMnLCAnYXJjaGl2ZS1yb3V0ZXMnLCBjYWNo
ZV9mb3IoaG91cnM9MjQgKiA3KShsYW1iZGE6IGpzb25pZnkoc2VsZi5hcmNoaXZlX3JvdXRlcykp
LCBtZXRob2RzPSgnR0VUJywpKQotCi0gICAgICAgIHNlbGYuc2l0ZV9tZW51LmFkZF9lbmRwb2lu
dCgnTWFpbicsIHNlbGYubmFtZSArICcubWFpbicsIHBhcmFtZXRlcnM9WydicmFuY2gnXSkKLSAg
ICAgICAgc2VsZi5zaXRlX21lbnUuYWRkX2VuZHBvaW50KCdTdWl0ZXMnLCBzZWxmLm5hbWUgKyAn
LnN1aXRlcycsIHBhcmFtZXRlcnM9WydicmFuY2gnXSkKLSAgICAgICAgc2VsZi5zaXRlX21lbnUu
YWRkX2VuZHBvaW50KCdJbnZlc3RpZ2F0ZScsIHNlbGYubmFtZSArICcuaW52ZXN0aWdhdGUnLCBw
YXJhbWV0ZXJzPVsnYnJhbmNoJ10pCi0gICAgICAgIHNlbGYuc2l0ZV9tZW51LmFkZF9lbmRwb2lu
dCgnRG9jdW1lbnRhdGlvbicsIHNlbGYubmFtZSArICcuZG9jdW1lbnRhdGlvbicpCi0gICAgICAg
IHNlbGYuc2l0ZV9tZW51LmFkZF9lbmRwb2ludCgnQ29tbWl0cycsIHNlbGYubmFtZSArICcuY29t
bWl0cycsIHBhcmFtZXRlcnM9WydicmFuY2gnXSkKLQotICAgICAgICBzZWxmLnJlZ2lzdGVyX2Vy
cm9yX2hhbmRsZXIoNTAwLCBzZWxmLnJlc3BvbnNlXzUwMCkKLQotICAgIGRlZiBhc3NldHMoc2Vs
ZiwgcGF0aCk6Ci0gICAgICAgIEFzc2VydFJlcXVlc3Qubm9fcXVlcnkoKQotICAgICAgICBBc3Nl
cnRSZXF1ZXN0LmlzX3R5cGUoKQotICAgICAgICBwYXRoX3NwbGl0ID0gb3MucGF0aC5zcGxpdChw
YXRoKQotICAgICAgICByZXR1cm4gc2VuZF9mcm9tX2RpcmVjdG9yeShvcy5wYXRoLmpvaW4ob3Mu
cGF0aC5hYnNwYXRoKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykpLCAnc3RhdGljJywgKnBhdGhf
c3BsaXRbOi0xXSksIHBhdGhfc3BsaXRbLTFdKQotCi0gICAgZGVmIGNhY2hlX3Jlc291cmNlKHNl
bGYsIHVybCk6Ci0gICAgICAgICMgVGhpcyBhdm9pZHMgaGVhZGFjaGVzIHdpdGggY3Jvc3Mtb3Jp
Z2luIHNjcmlwdHMKLSAgICAgICAgY2FjaGVkX3Jlc3VsdCA9IHNlbGYuX2NhY2hlLmdldCh1cmws
IE5vbmUpCi0gICAgICAgIGlmIGNhY2hlZF9yZXN1bHQgYW5kIGNhY2hlZF9yZXN1bHRbMF0gKyA2
MCAqIDYwICogMjQgPiB0aW1lLnRpbWUoKToKLSAgICAgICAgICAgIHJldHVybiBjYWNoZWRfcmVz
dWx0WzFdCi0gICAgICAgIHJlc3VsdCA9IHJlcXVlc3RzLmdldCh1cmwpCi0gICAgICAgIGlmIHJl
c3VsdC5zdGF0dXNfY29kZSAhPSAyMDA6Ci0gICAgICAgICAgICBhYm9ydCg0MDQsIGRlc2NyaXB0
aW9uPWYnRmFpbGVkIHRvIGNhY2hlIHJlc291cmNlIGF0IHt1cmx9JykKLSAgICAgICAgc2VsZi5f
Y2FjaGVbdXJsXSA9ICh0aW1lLnRpbWUoKSwgUmVzcG9uc2UocmVzdWx0LnRleHQsIG1pbWV0eXBl
PXJlc3VsdC5oZWFkZXJzWydjb250ZW50LXR5cGUnXSkpCi0gICAgICAgIHJldHVybiBzZWxmLl9j
YWNoZVt1cmxdWzFdCi0KLSAgICBkZWYgbGlicmFyeShzZWxmLCBwYXRoKToKLSAgICAgICAgQXNz
ZXJ0UmVxdWVzdC5ub19xdWVyeSgpCi0gICAgICAgIEFzc2VydFJlcXVlc3QuaXNfdHlwZSgpCi0g
ICAgICAgIHBhdGhfc3BsaXQgPSBvcy5wYXRoLnNwbGl0KHBhdGgpCi0gICAgICAgIHJldHVybiBz
ZW5kX2Zyb21fZGlyZWN0b3J5KG9zLnBhdGguam9pbihvcy5wYXRoLmFic3BhdGgob3MucGF0aC5k
aXJuYW1lKF9fZmlsZV9fKSksICdzdGF0aWMvbGlicmFyeScsICpwYXRoX3NwbGl0WzotMV0pLCBw
YXRoX3NwbGl0Wy0xXSkKLQotICAgIGRlZiByZXNwb25zZV81MDAoc2VsZiwgZXJyb3I9SW50ZXJu
YWxTZXJ2ZXJFcnJvcigpKToKLSAgICAgICAgaWYgaXNpbnN0YW5jZShlcnJvciwgSFRUUEV4Y2Vw
dGlvbik6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5lcnJvcihlcnJvcj1lcnJvcikKLSAgICAg
ICAgcmV0dXJuIHNlbGYuZXJyb3IoZXJyb3I9SW50ZXJuYWxTZXJ2ZXJFcnJvcigpKQotCi0gICAg
QFNpdGVNZW51LnJlbmRlcl93aXRoX3NpdGVfbWVudSgpCi0gICAgZGVmIGVycm9yKHNlbGYsIGVy
cm9yPUludGVybmFsU2VydmVyRXJyb3IoKSwgKiprd2FyZ3MpOgotICAgICAgICByZXNwb25zZSA9
IHNlbGYuZW52aXJvbm1lbnQuZ2V0X3RlbXBsYXRlKCdlcnJvci5odG1sJykucmVuZGVyKAotICAg
ICAgICAgICAgdGl0bGU9Zid7c2VsZi50aXRsZX06IHtlcnJvci5jb2RlfScsCi0gICAgICAgICAg
ICBuYW1lPWVycm9yLm5hbWUsIGRlc2NyaXB0aW9uPWVycm9yLmRlc2NyaXB0aW9uLAotICAgICAg
ICAgICAgKiprd2FyZ3MpCi0gICAgICAgIHJldHVybiByZXNwb25zZSwgZXJyb3IuY29kZQotCi0g
ICAgQFNpdGVNZW51LnJlbmRlcl93aXRoX3NpdGVfbWVudSgpCi0gICAgZGVmIGRvY3VtZW50YXRp
b24oc2VsZiwgKiprd2FyZ3MpOgotICAgICAgICByZXR1cm4gc2VsZi5lbnZpcm9ubWVudC5nZXRf
dGVtcGxhdGUoJ2RvY3VtZW50YXRpb24uaHRtbCcpLnJlbmRlcigKLSAgICAgICAgICAgIHRpdGxl
PWYne3NlbGYudGl0bGV9OiBEb2N1bWVudGF0aW9uJywKLSAgICAgICAgICAgICoqa3dhcmdzKQpJ
bmRleDogVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy92aWV3X3JvdXRlc191bml0
dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS92aWV3
L3ZpZXdfcm91dGVzX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNjU1MzEpCisrKyBUb29scy9yZXN1
bHRzZGJweS9yZXN1bHRzZGJweS92aWV3L3ZpZXdfcm91dGVzX3VuaXR0ZXN0LnB5CShub25leGlz
dGVudCkKQEAgLTEsMTMxICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUg
bWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKLSMgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotIyBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0jIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0j
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksCi0jIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0KLWltcG9ydCBtb2NrCi1pbXBvcnQgb3MKLWltcG9ydCByZXF1ZXN0cwotaW1wb3J0IHRp
bWUKLQotZnJvbSBjb250cm9sbGVyLmFwaV9yb3V0ZXMgaW1wb3J0IEFQSVJvdXRlcwotZnJvbSBm
YWtlcmVkaXMgaW1wb3J0IEZha2VTdHJpY3RSZWRpcwotZnJvbSByZWRpcyBpbXBvcnQgU3RyaWN0
UmVkaXMKLWZyb20gcmVzdWx0c2RicHkuZmxhc2tfc3VwcG9ydC5mbGFza190ZXN0Y2FzZSBpbXBv
cnQgRmxhc2tUZXN0Q2FzZQotZnJvbSByZXN1bHRzZGJweS5tb2RlbC5jYXNzYW5kcmFfY29udGV4
dCBpbXBvcnQgQ2Fzc2FuZHJhQ29udGV4dAotZnJvbSByZXN1bHRzZGJweS5tb2RlbC5tb2NrX2Nh
c3NhbmRyYV9jb250ZXh0IGltcG9ydCBNb2NrQ2Fzc2FuZHJhQ29udGV4dAotZnJvbSByZXN1bHRz
ZGJweS5tb2RlbC5tb2RlbCBpbXBvcnQgTW9kZWwKLWZyb20gcmVzdWx0c2RicHkubW9kZWwubW9j
a19yZXBvc2l0b3J5IGltcG9ydCBNb2NrU3Rhc2hSZXBvc2l0b3J5LCBNb2NrU1ZOUmVwb3NpdG9y
eQotZnJvbSByZXN1bHRzZGJweS5tb2RlbC53YWl0X2Zvcl9kb2NrZXJfdGVzdF9jYXNlIGltcG9y
dCBXYWl0Rm9yRG9ja2VyVGVzdENhc2UKLWZyb20gcmVzdWx0c2RicHkudmlldy52aWV3X3JvdXRl
cyBpbXBvcnQgVmlld1JvdXRlcwotCi0KLWNsYXNzIFdlYlNpdGVUZXN0Q2FzZShGbGFza1Rlc3RD
YXNlLCBXYWl0Rm9yRG9ja2VyVGVzdENhc2UpOgotICAgIEtFWVNQQUNFID0gJ3dlYl9zaXRlX3Rl
c3RjYXNlX2tleXNwYWNlJwotCi0gICAgZGVmIHRvZ2dsZV9kcmF3ZXIoc2VsZiwgZHJpdmVyLCBh
c3NlcnRfZGlzcGxheWVkPU5vbmUpOgotICAgICAgICBzaWRlYmFyID0gZHJpdmVyLmZpbmRfZWxl
bWVudF9ieV9jbGFzc19uYW1lKCdzaWRlYmFyJykKLSAgICAgICAgc2lkZWJhci5maW5kX2VsZW1l
bnRzX2J5X3RhZ19uYW1lKCdidXR0b24nKVswXS5jbGljaygpCi0gICAgICAgIHRpbWUuc2xlZXAo
LjUpCi0gICAgICAgIGlmIGFzc2VydF9kaXNwbGF5ZWQ6Ci0gICAgICAgICAgICBzZWxmLmFzc2Vy
dE5vdEluKCdoaWRkZW4nLCBzaWRlYmFyLmdldF9hdHRyaWJ1dGUoJ2NsYXNzJykpCi0gICAgICAg
IGVsaWYgYXNzZXJ0X2Rpc3BsYXllZCBpcyBGYWxzZToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0
SW4oJ2hpZGRlbicsIHNpZGViYXIuZ2V0X2F0dHJpYnV0ZSgnY2xhc3MnKSkKLQotICAgIGRlZiBm
aW5kX2lucHV0X3dpdGhfbmFtZShzZWxmLCBkcml2ZXIsIG5hbWUpOgotICAgICAgICBjb250cm9s
ID0gW2xhYmVsLnBhcmVudCBmb3IgbGFiZWwgaW4gZHJpdmVyLmZpbmRfZWxlbWVudF9ieV9jbGFz
c19uYW1lKCdzaWRlYmFyJykuZmluZF9lbGVtZW50c19ieV90YWdfbmFtZSgnZGl2JykgaWYgbGFi
ZWwuZmluZF9lbGVtZW50X2J5X3RhZ19uYW1lKCdsYWJlbCcpLnRleHQgPT0gbmFtZV1bMF0KLSAg
ICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUoY29udHJvbCkKLSAgICAgICAgcmV0dXJuIGNvbnRy
b2wKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBzZXR1cF93ZWJzZXJ2ZXIoY2xzLCBhcHAs
IHJlZGlzPVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCk6Ci0gICAgICAg
IGNhc3NhbmRyYS5kcm9wX2tleXNwYWNlKGtleXNwYWNlPWNscy5LRVlTUEFDRSkKLSAgICAgICAg
cmVkaXNfaW5zdGFuY2UgPSByZWRpcygpCi0KLSAgICAgICAgbW9kZWwgPSBNb2RlbCgKLSAgICAg
ICAgICAgIHJlZGlzPXJlZGlzX2luc3RhbmNlLCBjYXNzYW5kcmE9Y2Fzc2FuZHJhKGtleXNwYWNl
PWNscy5LRVlTUEFDRSwgY3JlYXRlX2tleXNwYWNlPVRydWUpLAotICAgICAgICAgICAgcmVwb3Np
dG9yaWVzPVtNb2NrU1ZOUmVwb3NpdG9yeS53ZWJraXQocmVkaXM9cmVkaXNfaW5zdGFuY2UpLCBN
b2NrU3Rhc2hSZXBvc2l0b3J5LnNhZmFyaShyZWRpcz1yZWRpc19pbnN0YW5jZSldLAotICAgICAg
ICApCi0gICAgICAgIGFwaV9yb3V0ZXMgPSBBUElSb3V0ZXMobW9kZWw9bW9kZWwsIGltcG9ydF9u
YW1lPV9fbmFtZV9fKQotICAgICAgICB2aWV3X3JvdXRlcyA9IFZpZXdSb3V0ZXMobW9kZWw9bW9k
ZWwsIGNvbnRyb2xsZXI9YXBpX3JvdXRlcywgaW1wb3J0X25hbWU9X19uYW1lX18pCi0KLSAgICAg
ICAgYXBwLnJlZ2lzdGVyX2JsdWVwcmludChhcGlfcm91dGVzKQotICAgICAgICBhcHAucmVnaXN0
ZXJfYmx1ZXByaW50KHZpZXdfcm91dGVzKQotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIGRl
Y29yYXRvcihjbHMpOgotICAgICAgICBjbGFzcyBNb2NrUmVxdWVzdChvYmplY3QpOgotICAgICAg
ICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRleHQ9JycsIHN0YXR1c19jb2RlPTIwMCwgaGVhZGVy
cz17J2NvbnRlbnQtdHlwZSc6ICd0ZXh0L2h0bWwnfSk6Ci0gICAgICAgICAgICAgICAgc2VsZi50
ZXh0ID0gdGV4dAotICAgICAgICAgICAgICAgIHNlbGYuc3RhdHVzX2NvZGUgPSBzdGF0dXNfY29k
ZQotICAgICAgICAgICAgICAgIHNlbGYuaGVhZGVycyA9IGhlYWRlcnMKLQotICAgICAgICBvcmln
aW5hbF9nZXQgPSByZXF1ZXN0cy5nZXQKLQotICAgICAgICBkZWYgbW9ja19nZXQodXJsLCBvcmln
aW5hbF9nZXQ9b3JpZ2luYWxfZ2V0LCAqKmt3YXJncyk6Ci0gICAgICAgICAgICAjIEZJWE1FOiBM
b25nIHRlcm0sIHRoZSByZXN1bHRzIGRhdGFiYXNlIG1pZ2h0IGFjdHVhbGx5IGJlIHRoZSBiZXR0
ZXIgcGxhY2UgZm9yIFJlZi5qcyBhbmQgd2Via2l0LmNzcyB0byBsaXZlCi0gICAgICAgICAgICBi
YXNlX3BhdGggPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5hYnNwYXRoKG9zLnBhdGguZGlybmFtZShv
cy5wYXRoLmRpcm5hbWUob3MucGF0aC5kaXJuYW1lKG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmRp
cm5hbWUob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSkpKSkpKSwgJ0ludGVybmFsJywgJ1Rvb2xz
JywgJ0J1aWxkQXV0b21hdGlvbicsICdidWlsZC1zYWZhcmknLCAncHVibGljX2h0bWwnLCAnZGFz
aGJvYXJkJykKLSAgICAgICAgICAgIGlmIHVybCA9PSAnaHR0cHM6Ly9idWlsZC53ZWJraXQub3Jn
L2Rhc2hib2FyZC9kZXZpY2VzL1NjcmlwdHMvUmVmLmpzJzoKLSAgICAgICAgICAgICAgICB3aXRo
IG9wZW4ob3MucGF0aC5qb2luKGJhc2VfcGF0aCwgJ2RldmljZXMnLCAnU2NyaXB0cycsICdSZWYu
anMnKSwgJ3InKSBhcyBmOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTW9ja1JlcXVlc3Qo
Zi5yZWFkKCksIGhlYWRlcnM9eydjb250ZW50LXR5cGUnOiAndGV4dC9qYXZhc2NyaXB0J30pCi0g
ICAgICAgICAgICBlbGlmIHVybCA9PSAnaHR0cHM6Ly9idWlsZC53ZWJraXQub3JnL2Rhc2hib2Fy
ZC9TdHlsZXMvd2Via2l0LmNzcyc6Ci0gICAgICAgICAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGgu
am9pbihiYXNlX3BhdGgsICdTdHlsZXMnLCAnd2Via2l0LmNzcycpLCAncicpIGFzIGY6Ci0gICAg
ICAgICAgICAgICAgICAgIHJldHVybiBNb2NrUmVxdWVzdChmLnJlYWQoKSwgaGVhZGVycz17J2Nv
bnRlbnQtdHlwZSc6ICd0ZXh0L2Nzcyd9KQotICAgICAgICAgICAgcmV0dXJuIG9yaWdpbmFsX2dl
dCh1cmwsICoqa3dhcmdzKQotCi0gICAgICAgIHJldHVybiBGbGFza1Rlc3RDYXNlLmNvbWJpbmUo
Ci0gICAgICAgICAgICBtb2NrLnBhdGNoKCdyZXF1ZXN0cy5nZXQnLCBuZXc9bW9ja19nZXQpLAot
ICAgICAgICAgICAgRmxhc2tUZXN0Q2FzZS5ydW5fd2l0aF9zZWxlbml1bSgpLAotICAgICAgICAp
Ci0KLQotY2xhc3MgV2ViU2l0ZVVuaXR0ZXN0KFdlYlNpdGVUZXN0Q2FzZSk6Ci0gICAgQFdhaXRG
b3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RS
ZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCi0gICAgQFdlYlNpdGVU
ZXN0Q2FzZS5kZWNvcmF0b3IoKQotICAgIGRlZiB0ZXN0X3RpdGxlKHNlbGYsIGRyaXZlciwgKipr
d2FyZ3MpOgotICAgICAgICBkcml2ZXIuZ2V0KHNlbGYuVVJMKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGRyaXZlci50aXRsZSwgJ1Jlc3VsdHMgRGF0YWJhc2UnKQotICAgICAgICB0aXRsZSA9
IGRyaXZlci5maW5kX2VsZW1lbnRfYnlfY2xhc3NfbmFtZSgndGl0bGUnKS5maW5kX2VsZW1lbnRf
YnlfdGFnX25hbWUoJ2RpdicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGl0bGUudGV4dC5s
c3RyaXAoKS5yc3RyaXAoKSwgJ1Jlc3VsdHMgRGF0YWJhc2UnKQotCi0gICAgQFdhaXRGb3JEb2Nr
ZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywg
bW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCi0gICAgQFdlYlNpdGVUZXN0Q2Fz
ZS5kZWNvcmF0b3IoKQotICAgIGRlZiB0ZXN0X21haW4oc2VsZiwgZHJpdmVyLCAqKmt3YXJncyk6
Ci0gICAgICAgIGRyaXZlci5nZXQoc2VsZi5VUkwpCi0gICAgICAgIGNvbnRlbnQgPSBkcml2ZXIu
ZmluZF9lbGVtZW50X2J5X2lkKCdhcHAnKS5maW5kX2VsZW1lbnRfYnlfY2xhc3NfbmFtZSgnY29u
dGVudCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKGNvbnRlbnQpCi0KLSAgICBAV2Fp
dEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmlj
dFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKLSAgICBAV2ViU2l0
ZVRlc3RDYXNlLmRlY29yYXRvcigpCi0gICAgZGVmIHRlc3RfY29tbWl0X2xpbmsoc2VsZiwgZHJp
dmVyLCAqKmt3YXJncyk6Ci0gICAgICAgIGRyaXZlci5nZXQoc2VsZi5VUkwpCi0gICAgICAgIGFj
dGlvbnMgPSBkcml2ZXIuZmluZF9lbGVtZW50X2J5X2NsYXNzX25hbWUoJ2FjdGlvbnMnKQotICAg
ICAgICBsaW5rcyA9IGFjdGlvbnMuZmluZF9lbGVtZW50c19ieV90YWdfbmFtZSgnYScpCi0KLSAg
ICAgICAgY29tbWl0X2xpbmsgPSBOb25lCi0gICAgICAgIGZvciBsaW5rIGluIGxpbmtzOgotICAg
ICAgICAgICAgaWYgJ0NvbW1pdHMnIGluIGxpbmsudGV4dDoKLSAgICAgICAgICAgICAgICBjb21t
aXRfbGluayA9IGxpbmsKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICBzZWxmLmFzc2Vy
dElzTm90Tm9uZShjb21taXRfbGluaykKLQotICAgICAgICBjb21taXRfbGluay5jbGljaygpCi0g
ICAgICAgIHRpbWUuc2xlZXAoLjEpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHJpdmVyLnRp
dGxlLCAnUmVzdWx0cyBEYXRhYmFzZTogQ29tbWl0cycpCkluZGV4OiBUb29scy9yZXN1bHRzZGJw
eS9zZXR1cC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9yZXN1bHRzZGJweS9zZXR1cC5weQkocmV2
aXNpb24gMjY1NTMxKQorKysgVG9vbHMvcmVzdWx0c2RicHkvc2V0dXAucHkJKG5vbmV4aXN0ZW50
KQpAQCAtMSw2OSArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoK
LSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECi0jIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECi0jIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSMgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTAotIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotIyBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLAotIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
Ci1mcm9tIHNldHVwdG9vbHMgaW1wb3J0IHNldHVwCi0KLQotZGVmIHJlYWRtZSgpOgotICAgIHdp
dGggb3BlbignUkVBRE1FLm1kJykgYXMgZjoKLSAgICAgICAgcmV0dXJuIGYucmVhZCgpCi0KLQot
c2V0dXAoCi0gICAgbmFtZT0ncmVzdWx0c2RicHknLAotICAgIHZlcnNpb249JzAuOS4wJywKLSAg
ICBkZXNjcmlwdGlvbj0nTGlicmFyeSBmb3IgdmlzdWFsaXppbmcsIHByb2Nlc3NpbmcgYW5kIHN0
b3JpbmcgdGVzdCByZXN1bHRzLicsCi0gICAgbG9uZ19kZXNjcmlwdGlvbj1yZWFkbWUoKSwKLSAg
ICBjbGFzc2lmaWVycz1bCi0gICAgICAgICdEZXZlbG9wbWVudCBTdGF0dXMgOjogNCAtIEJldGEn
LAotICAgICAgICAnRnJhbWV3b3JrIDo6IEZsYXNrJywKLSAgICAgICAgJ0ludGVuZGVkIEF1ZGll
bmNlIDo6IERldmVsb3BlcnMnLAotICAgICAgICAnTGljZW5zZSA6OiBPU0kgQXBwcm92ZWQgOjog
QlNEIExpY2Vuc2UnLAotICAgICAgICAnT3BlcmF0aW5nIFN5c3RlbSA6OiBNYWNPUycsCi0gICAg
ICAgICdOYXR1cmFsIExhbmd1YWdlIDo6IEVuZ2xpc2gnLAotICAgICAgICAnUHJvZ3JhbW1pbmcg
TGFuZ3VhZ2UgOjogUHl0aG9uIDo6IDMgOjogT25seScsCi0gICAgICAgICdUb3BpYyA6OiBTb2Z0
d2FyZSBEZXZlbG9wbWVudCA6OiBMaWJyYXJpZXMgOjogUHl0aG9uIE1vZHVsZXMnLAotICAgICAg
ICAnVG9waWMgOjogU29mdHdhcmUgRGV2ZWxvcG1lbnQgOjogVGVzdGluZycsCi0gICAgXSwKLSAg
ICBrZXl3b3Jkcz0nZGF0YWJhc2UgaGlzdG9yeSByZXN1bHRzIHRlc3Rpbmcgd2Via2l0JywKLSAg
ICB1cmw9J2h0dHBzOi8vc3ZuLndlYmtpdC5vcmcvcmVwb3NpdG9yeS93ZWJraXQvdHJ1bmsvVG9v
bHMvcmVzdWx0c2RicHknLAotICAgIGF1dGhvcj0nSm9uYXRoYW4gQmVkYXJkJywKLSAgICBhdXRo
b3JfZW1haWw9J2piZWRhcmRAYXBwbGUuY29tJywKLSAgICBsaWNlbnNlPSdNb2RpZmllZCBCU0Qn
LAotICAgIHBhY2thZ2VzPVsncmVzdWx0c2RicHknXSwKLSAgICBpbnN0YWxsX3JlcXVpcmVzPVsK
LSAgICAgICAgJ2Nhc3NhbmRyYS1kcml2ZXInLAotICAgICAgICAnZmFrZXJlZGlzJywKLSAgICAg
ICAgJ0ZsYXNrJywKLSAgICAgICAgJ0ZsYXNrLUNvcnMnLAotICAgICAgICAnZ3VuaWNvcm4nLAot
ICAgICAgICAnbHVwYScsCi0gICAgICAgICdtb2NrJywKLSAgICAgICAgJ3JlZGlzJywKLSAgICAg
ICAgJ3htbHRvZGljdCcsCi0gICAgICAgICdyZXF1ZXN0cycsCi0gICAgICAgICdzZWxlbml1bScs
Ci0gICAgICAgICdzaXgnLAotICAgIF0sCi0gICAgaW5jbHVkZV9wYWNrYWdlX2RhdGE9VHJ1ZSwK
LSAgICB6aXBfc2FmZT1GYWxzZSwKLSkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>406433</attachid>
            <date>2020-08-11 16:32:12 -0700</date>
            <delta_ts>2020-08-12 09:30:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215401-20200811163211.patch</filename>
            <type>text/plain</type>
            <size>1250083</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI2NTUzNCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDIwIEBACisyMDIwLTA4LTExICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBbcmVzdWx0c2RicHldIE1vdmUgdG8gVG9vbHMvU2NyaXB0cy9saWJyYXJp
ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNTQw
MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjY4NjgzODc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9ld3MtYnVp
bGQvc3RlcHMucHk6CisgICAgICAgIChDaGVja1BhdGNoUmVsZXZhbmNlKTogQ2hhbmdlZCByZXN1
bHRzZGJweSBsb2NhdGlvbi4KKyAgICAgICAgKFJ1blJlc3VsdHNkYnB5VGVzdHMpOiBEaXR0by4K
KyAgICAgICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9ld3MtYnVpbGQvc3RlcHNfdW5pdHRlc3QucHk6
CisgICAgICAgIChUZXN0UnVuUmVzdWx0c2RicHlUZXN0cy50ZXN0X3N1Y2Nlc3MpOgorICAgICAg
ICAoVGVzdFJ1blJlc3VsdHNkYnB5VGVzdHMudGVzdF9mYWlsdXJlKToKKyAgICAgICAgKiBTY3Jp
cHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweTogQ29waWVkIGZyb20gVG9vbHMvcmVzdWx0c2RicHku
CisgICAgICAgICogcmVzdWx0c2RicHk6IFJlbW92ZWQuCisKIDIwMjAtMDgtMTEgIEtlaXRoIFJv
bGxpbiAgPGtyb2xsaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFVwZGF0ZSBmaWx0ZXItYnVpbGQt
d2Via2l0IGZvciB1bmtub3duL3VuaGFuZGxlZCBtZXNzYWdlcwpJbmRleDogVG9vbHMvcmVzdWx0
c2RicHkvTUFOSUZFU1QuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvcmVzdWx0c2RicHkvTUFOSUZF
U1QuaW4JKHJldmlzaW9uIDI2NTUzMSkKKysrIFRvb2xzL3Jlc3VsdHNkYnB5L01BTklGRVNULmlu
CShub25leGlzdGVudCkKQEAgLTEgKzAsMCBAQAotaW5jbHVkZSBSRUFETUUubWQKSW5kZXg6IFRv
b2xzL3Jlc3VsdHNkYnB5L1JFQURNRS5tZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9yZXN1bHRzZGJw
eS9SRUFETUUubWQJKHJldmlzaW9uIDI2NTUzMSkKKysrIFRvb2xzL3Jlc3VsdHNkYnB5L1JFQURN
RS5tZAkobm9uZXhpc3RlbnQpCkBAIC0xLDc5ICswLDAgQEAKLSMgcmVzdWx0c2RicHkKLQotTGFy
Z2UgcHJvamVjdHMgKGxpa2UgW1dlYktpdF0oaHR0cHM6Ly93ZWJraXQub3JnKSkgb2Z0ZW4gaGF2
ZSAxMCdzIG9mIHRob3VzYW5kcyBvZiB0ZXN0cyBydW5uaW5nIG9uIGRvemVucyBvZiBwbGF0Zm9y
bXMuIE1ha2luZyBzZW5zZSBvZiByZXN1bHRzIGZyb20gdGhlc2VzIHRlc3RzIGlzIGRpZmZpY3Vs
dC4gcmVzdWx0c2RicHkgYWltcyB0byBtYWtlIHZpc3VhbGl6aW5nLCBwcm9jZXNzaW5nIGFuZCBz
dG9yaW5nIHRob3NlIHJlc3VsdHMgZWFzaWVyLgotCi0jIyBSZXF1aXJlbWVudHMKLQotRm9yIGxv
Y2FsIHRlc3RpbmcgYW5kIGJhc2ljIHByb3RvdHlwaW5nLCBub3RoaW5nIGlzIHJlcXVpcmVkLiBB
bGwgZGF0YSBjYW4gYmUgbWFuYWdlZCBpbi1tZW1vcnkuIE5vdGUsIGhvd2V2ZXIsIHRoYXQgcnVu
bmluZyB0aGUgZGF0YWJhc2UgaW4gdGhpcyBtb2RlIHdpbGwgbm90IHNhdmUgcmVzdWx0cyB0byBk
aXNrLgotCi1JZiBsZXZlcmFnaW5nIERvY2tlciwgUmVkaXMgYW5kIENhc3NhbmRyYSB3aWxsIGJl
IGF1dG9tYXRpY2FsbHkgaW5zdGFsbGVkIGFuZCBjYW4gYmUgdXNlZCB0byBtYWtlIHJlc3VsdHMg
bW9yZSBwZXJzaXN0ZW50LgotCi1Gb3IgcHJvZHVjdGlvbiBpbnN0YW5jZXMsIHRoZSBDYXNzYW5k
cmEgYW5kIFJlZGlzIGluc3RhbmNlcyBzaG91bGQgYmUgaG9zdGVkIHNlcGVyYXRseSBmcm9tIHRo
ZSB3ZWItYXBwLgotCi0KLSMjIFVzYWdlCi0KLXJlc3VsdHNkYnB5IHJlcXVpcmVzIGZhaXJseSBl
eHRlbnNpdmUgY29uZmlndXJhdGlvbiBiZWZvcmUgYmVpbmcgdXNlZC4gQmVsb3cgaXMgYW4gZXhh
bXBsZSBvZiBjb25maWd1cmluZyByZXN1bHRzZGJweSBmb3IgdGVzdGluZyBhbmQgYmFzaWMgcHJv
dG90eXBpbmcgZm9yIFdlYmtpdCwgYWxvbmcgd2l0aCBzb21lIGNvbW1lbnRzIGV4cGxhaW5pbmcg
dGhlIGVudmlyb25tZW50IHNldHVwOgotCi1gYGAKLWltcG9ydCBvcwotCi1mcm9tIGZha2VyZWRp
cyBpbXBvcnQgRmFrZVN0cmljdFJlZGlzCi1mcm9tIGZsYXNrIGltcG9ydCBGbGFzaywgcmVxdWVz
dAotZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVyLmFwaV9yb3V0ZXMgaW1wb3J0IEFQSVJvdXRl
cwotZnJvbSByZXN1bHRzZGJweS5tb2RlbC5tb2NrX2Nhc3NhbmRyYV9jb250ZXh0IGltcG9ydCBN
b2NrQ2Fzc2FuZHJhQ29udGV4dAotZnJvbSByZXN1bHRzZGJweS5tb2RlbC5tb2RlbCBpbXBvcnQg
TW9kZWwKLWZyb20gcmVzdWx0c2RicHkubW9kZWwucmVwb3NpdG9yeSBpbXBvcnQgV2ViS2l0UmVw
b3NpdG9yeQotZnJvbSByZXN1bHRzZGJweS52aWV3LnZpZXdfcm91dGVzIGltcG9ydCBWaWV3Um91
dGVzCi0KLSMgQnkgZGVmYXVsdCwgQ2Fzc2FuZHJhIGZvcmJpZHMgc2NoZW1hIG1hbmFnZW1lbnQK
LW9zLmVudmlyb25bJ0NRTEVOR19BTExPV19TQ0hFTUFfTUFOQUdFTUVOVCddID0gJzEnCi0KLSMg
QW4gaW4tbWVtb3J5IENhc3NhbmRyYSBkYXRhYmFzZSBmb3IgdGVzdGluZwotY2Fzc2FuZHJhPU1v
Y2tDYXNzYW5kcmFDb250ZXh0KAotCW5vZGVzPVsnbG9jYWxob3N0J10sCi0Ja2V5c3BhY2U9J3Rl
c3Rpbmcta2VzcGFjZScsCi0JY3JlYXRlX2tleXNwYWNlPVRydWUsCi0pCi0KLW1vZGVsID0gTW9k
ZWwoCi0JcmVkaXM9RmFrZVN0cmljdFJlZGlzKCksICAgICAgICAgICAgICAgICAjIEFuIGluLW1l
bW9yeSBSZWRpcyBkYXRhYmFzZSBmb3IgdGVzdGluZwotCWNhc3NhbmRyYT1jYXNzYW5kcmEsCi0J
cmVwb3NpdG9yaWVzPVtXZWJLaXRSZXBvc2l0b3J5KCldLCAgICAgICAjIFRoaXMgc2hvdWxkIGJl
IHJlcGxhY2VkIHdpdGggYSBjbGFzcyBmb3IgeW91ciBwcm9qZWN0J3MgcmVwb3NpdG9yeQotCWRl
ZmF1bHRfdHRsX3NlY29uZHM9TW9kZWwuVFRMX1dFRUsgKiA0LCAgIyBSZXRhaW4gNCB3ZWVrcyBv
ZiByZXN1bHRzCi0JYXN5bmNfcHJvY2Vzc2luZz1GYWxzZSwgICAgICAgICAgICAgICAgICAjIFBy
b2Nlc3NpbmcgYXN5bmNocm9ub3VzbHkgcmVxdWlyZXMgaW5zdGFudGlhdGluZyB3b3JrZXIgcHJv
Y2Vzc2VzCi0pCi0KLWFwcCA9IEZsYXNrKF9fbmFtZV9fKQotYXBpX3JvdXRlcyA9IEFQSVJvdXRl
cyhtb2RlbD1tb2RlbCwgaW1wb3J0X25hbWU9X19uYW1lX18pCi12aWV3X3JvdXRlcyA9IFZpZXdS
b3V0ZXMoCi0gICAgdGl0bGU9J1dlYktpdCBSZXN1bHRzIERhdGFiYXNlJywKLSAgICBtb2RlbD1t
b2RlbCwgY29udHJvbGxlcj1hcGlfcm91dGVzLCBpbXBvcnRfbmFtZT1fX25hbWVfXywKLSkKLQot
Ci1AYXBwLnJvdXRlKCcvX19oZWFsdGgnLCBtZXRob2RzPSgnR0VUJywpKQotZGVmIGhlYWx0aCgp
OgotICAgIHJldHVybiAnb2snCi0KLQotQGFwcC5lcnJvcmhhbmRsZXIoNDA0KQotQGFwcC5lcnJv
cmhhbmRsZXIoNDA1KQotZGVmIGhhbmRsZV9lcnJvcnMoZXJyb3IpOgotICAgIGlmIHJlcXVlc3Qu
cGF0aC5zdGFydHN3aXRoKCcvYXBpLycpOgotICAgICAgICByZXR1cm4gYXBpX3JvdXRlcy5lcnJv
cl9yZXNwb25zZShlcnJvcikKLSAgICByZXR1cm4gdmlld19yb3V0ZXMuZXJyb3IoZXJyb3I9ZXJy
b3IpCi0KLQotYXBwLnJlZ2lzdGVyX2JsdWVwcmludChhcGlfcm91dGVzKQotYXBwLnJlZ2lzdGVy
X2JsdWVwcmludCh2aWV3X3JvdXRlcykKLQotCi1kZWYgbWFpbigpOgotICAgIGFwcC5ydW4oaG9z
dD0nMC4wLjAuMCcsIHBvcnQ9NTAwMCkKLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgot
ICAgIG1haW4oKQotCi1gYGAKSW5kZXg6IFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L19f
aW5pdF9fLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L19f
aW5pdF9fLnB5CShyZXZpc2lvbiAyNjU1MzEpCisrKyBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRz
ZGJweS9fX2luaXRfXy5weQkobm9uZXhpc3RlbnQpCkBAIC0xLDIzICswLDAgQEAKLSMgQ29weXJp
Z2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMg
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQot
IyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUgotIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
Ci0jIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSCi0jIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0jIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLW5hbWUgPSAncmVzdWx0c2RicHknCkluZGV4
OiBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9jb250YWluZXIKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udGFpbmVyCShyZXZpc2lvbiAyNjU1MzEp
CisrKyBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9jb250YWluZXIJKG5vbmV4aXN0ZW50
KQpAQCAtMSw3MyArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24zCi0KLSMgQ29weXJpZ2h0
IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
IkFTIElTIiBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUgotIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0j
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSCi0jIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0jIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLWltcG9ydCBhcmdwYXJzZQotaW1wb3J0IG9zCi1p
bXBvcnQgc3lzCi1zeXMuZG9udF93cml0ZV9ieXRlY29kZSA9IFRydWUKLQotZnJvbSBtb2RlbC5k
b2NrZXIgaW1wb3J0IERvY2tlcgotCi0KLWRlZiBzdGFydCgpOgotICAgIERvY2tlci5zdGFydCgp
Ci0gICAgRG9ja2VyLnN0YXJ0X3Byb2plY3QoRG9ja2VyLkRFRkFVTFRfUFJPSkVDVCkKLSAgICBy
ZXR1cm4gMAotCi0KLWRlZiBzdG9wKCk6Ci0gICAgaWYgbm90IERvY2tlci5pc19ydW5uaW5nKCk6
Ci0gICAgICAgIHByaW50KCdEb2NrZXIgaXMgbm90IHJ1bm5pbmcnKQotICAgICAgICByZXR1cm4g
MQotICAgIERvY2tlci5zdG9wX3Byb2plY3QoRG9ja2VyLkRFRkFVTFRfUFJPSkVDVCkKLSAgICBE
b2NrZXIuc3RvcCgpCi0gICAgcmV0dXJuIDAKLQotCi1kZWYgcmVzdGFydCgpOgotICAgIGlmIG5v
dCBEb2NrZXIuaXNfcnVubmluZygpOgotICAgICAgICBEb2NrZXIuc3RhcnQoKQotICAgIERvY2tl
ci5zdG9wX3Byb2plY3QoRG9ja2VyLkRFRkFVTFRfUFJPSkVDVCkKLSAgICBEb2NrZXIuc3RhcnRf
cHJvamVjdChEb2NrZXIuREVGQVVMVF9QUk9KRUNUKQotICAgIHJldHVybiAwCi0KLQotZGVmIG1h
aW4oKToKLSAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcihkZXNjcmlwdGlvbj0n
TWFuYWdlIHJlc3VsdHNkYnB5IGNvbnRhaW5lciBpbnN0YW5jZSBpbnNpZGUgRG9ja2VyJykKLSAg
ICBzdWJwYXJzZXJzID0gcGFyc2VyLmFkZF9zdWJwYXJzZXJzKGhlbHA9J3N1Yi1jb21tYW5kIGhl
bHAnKQotCi0gICAgc3RhcnRfcGFyc2VyID0gc3VicGFyc2Vycy5hZGRfcGFyc2VyKCdzdGFydCcs
IGhlbHA9J1N0YXJ0IHRoZSBjb250YWluZXIgaW5zaWRlIERvY2tlcicpCi0gICAgc3RhcnRfcGFy
c2VyLnNldF9kZWZhdWx0cyhmdW5jdGlvbj1zdGFydCkKLQotICAgIHN0YXJ0X3BhcnNlciA9IHN1
YnBhcnNlcnMuYWRkX3BhcnNlcignc3RvcCcsIGhlbHA9J1N0b3AgdGhlIGNvbnRhaW5lciBpbnNp
ZGUgRG9ja2VyJykKLSAgICBzdGFydF9wYXJzZXIuc2V0X2RlZmF1bHRzKGZ1bmN0aW9uPXN0b3Ap
Ci0KLSAgICBzdGFydF9wYXJzZXIgPSBzdWJwYXJzZXJzLmFkZF9wYXJzZXIoJ3Jlc3RhcnQnLCBo
ZWxwPSdSZXN0YXJ0IHRoZSBjb250YWluZXIgaW5zaWRlIERvY2tlcicpCi0gICAgc3RhcnRfcGFy
c2VyLnNldF9kZWZhdWx0cyhmdW5jdGlvbj1yZXN0YXJ0KQotCi0gICAgcmV0dXJuIGdldGF0dHIo
cGFyc2VyLnBhcnNlX2FyZ3MoKSwgJ2Z1bmN0aW9uJywgbGFtYmRhOiBwYXJzZXIucHJpbnRfaGVs
cCgpKSgpCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICBzeXMuZXhpdChtYWlu
KCkpCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9j
b250YWluZXIKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46ZXhlY3V0YWJsZQojIyAtMSArMCwwICMj
Ci0qClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFRvb2xzL3Jlc3VsdHNk
YnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvX19pbml0X18ucHkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci9fX2luaXRfXy5weQkocmV2aXNp
b24gMjY1NTMxKQorKysgVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci9f
X2luaXRfXy5weQkobm9uZXhpc3RlbnQpCkBAIC0xICswLDAgQEAKLSMgRE8gTk9USElORwpJbmRl
eDogVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci9hcGlfcm91dGVzLnB5
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIv
YXBpX3JvdXRlcy5weQkocmV2aXNpb24gMjY1NTMxKQorKysgVG9vbHMvcmVzdWx0c2RicHkvcmVz
dWx0c2RicHkvY29udHJvbGxlci9hcGlfcm91dGVzLnB5CShub25leGlzdGVudCkKQEAgLTEsOTUg
KzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAot
IyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0jIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IKLSMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSMgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwKLSMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotaW1wb3J0IHRy
YWNlYmFjawotCi1mcm9tIGZsYXNrIGltcG9ydCBhYm9ydCwganNvbmlmeQotZnJvbSByZXN1bHRz
ZGJweS5jb250cm9sbGVyLmFyY2hpdmVfY29udHJvbGxlciBpbXBvcnQgQXJjaGl2ZUNvbnRyb2xs
ZXIKLWZyb20gcmVzdWx0c2RicHkuY29udHJvbGxlci5jb21taXRfY29udHJvbGxlciBpbXBvcnQg
Q29tbWl0Q29udHJvbGxlcgotZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVyLmNpX2NvbnRyb2xs
ZXIgaW1wb3J0IENJQ29udHJvbGxlcgotZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVyLmZhaWx1
cmVfY29udHJvbGxlciBpbXBvcnQgRmFpbHVyZUNvbnRyb2xsZXIKLWZyb20gcmVzdWx0c2RicHku
Y29udHJvbGxlci5zdWl0ZV9jb250cm9sbGVyIGltcG9ydCBTdWl0ZUNvbnRyb2xsZXIKLWZyb20g
cmVzdWx0c2RicHkuY29udHJvbGxlci50ZXN0X2NvbnRyb2xsZXIgaW1wb3J0IFRlc3RDb250cm9s
bGVyCi1mcm9tIHJlc3VsdHNkYnB5LmNvbnRyb2xsZXIudXBsb2FkX2NvbnRyb2xsZXIgaW1wb3J0
IFVwbG9hZENvbnRyb2xsZXIKLWZyb20gcmVzdWx0c2RicHkuZmxhc2tfc3VwcG9ydC5hdXRoZWRf
Ymx1ZXByaW50IGltcG9ydCBBdXRoZWRCbHVlcHJpbnQKLWZyb20gd2Vya3pldWcuZXhjZXB0aW9u
cyBpbXBvcnQgSFRUUEV4Y2VwdGlvbgotCi0KLWNsYXNzIEFQSVJvdXRlcyhBdXRoZWRCbHVlcHJp
bnQpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtb2RlbCwgaW1wb3J0X25hbWU9X19uYW1lX18s
IGF1dGhfZGVjb3JhdG9yPU5vbmUpOgotICAgICAgICBzdXBlcihBUElSb3V0ZXMsIHNlbGYpLl9f
aW5pdF9fKCdjb250cm9sbGVyJywgaW1wb3J0X25hbWUsIHVybF9wcmVmaXg9Jy9hcGknLCBhdXRo
X2RlY29yYXRvcj1hdXRoX2RlY29yYXRvcikKLQotICAgICAgICBzZWxmLmNvbW1pdF9jb250cm9s
bGVyID0gQ29tbWl0Q29udHJvbGxlcihjb21taXRfY29udGV4dD1tb2RlbC5jb21taXRfY29udGV4
dCkKLSAgICAgICAgc2VsZi51cGxvYWRfY29udHJvbGxlciA9IFVwbG9hZENvbnRyb2xsZXIoY29t
bWl0X2NvbnRyb2xsZXI9c2VsZi5jb21taXRfY29udHJvbGxlciwgdXBsb2FkX2NvbnRleHQ9bW9k
ZWwudXBsb2FkX2NvbnRleHQpCi0KLSAgICAgICAgc2VsZi5zdWl0ZV9jb250cm9sbGVyID0gU3Vp
dGVDb250cm9sbGVyKHN1aXRlX2NvbnRleHQ9bW9kZWwuc3VpdGVfY29udGV4dCkKLSAgICAgICAg
c2VsZi50ZXN0X2NvbnRyb2xsZXIgPSBUZXN0Q29udHJvbGxlcih0ZXN0X2NvbnRleHQ9bW9kZWwu
dGVzdF9jb250ZXh0KQotICAgICAgICBzZWxmLmZhaWx1cmVfY29udHJvbGxlciA9IEZhaWx1cmVD
b250cm9sbGVyKGZhaWx1cmVfY29udGV4dD1tb2RlbC5mYWlsdXJlX2NvbnRleHQpCi0KLSAgICAg
ICAgc2VsZi5jaV9jb250cm9sbGVyID0gQ0lDb250cm9sbGVyKGNpX2NvbnRleHQ9bW9kZWwuY2lf
Y29udGV4dCwgdXBsb2FkX2NvbnRleHQ9bW9kZWwudXBsb2FkX2NvbnRleHQpCi0gICAgICAgIHNl
bGYuYXJjaGl2ZV9jb250cm9sbGVyID0gQXJjaGl2ZUNvbnRyb2xsZXIoY29tbWl0X2NvbnRyb2xs
ZXI9c2VsZi5jb21taXRfY29udHJvbGxlciwgYXJjaGl2ZV9jb250ZXh0PW1vZGVsLmFyY2hpdmVf
Y29udGV4dCwgdXBsb2FkX2NvbnRleHQ9bW9kZWwudXBsb2FkX2NvbnRleHQpCi0KLSAgICAgICAg
Zm9yIGNvZGUgaW4gWzQwMCwgNDA0LCA0MDVdOgotICAgICAgICAgICAgc2VsZi5yZWdpc3Rlcl9l
cnJvcl9oYW5kbGVyKGNvZGUsIHNlbGYuZXJyb3JfcmVzcG9uc2UpCi0gICAgICAgIHNlbGYucmVn
aXN0ZXJfZXJyb3JfaGFuZGxlcig1MDAsIHNlbGYucmVzcG9uc2VfNTAwKQotCi0gICAgICAgIHNl
bGYuYWRkX3VybF9ydWxlKCcvY29tbWl0cycsICdjb21taXRfY29udHJvbGxlcicsIHNlbGYuY29t
bWl0X2NvbnRyb2xsZXIuZGVmYXVsdCwgbWV0aG9kcz0oJ0dFVCcsICdQT1NUJykpCi0gICAgICAg
IHNlbGYuYWRkX3VybF9ydWxlKCcvY29tbWl0cy9maW5kJywgJ2NvbW1pdF9jb250cm9sbGVyX2Zp
bmQnLCBzZWxmLmNvbW1pdF9jb250cm9sbGVyLmZpbmQsIG1ldGhvZHM9KCdHRVQnLCkpCi0gICAg
ICAgIHNlbGYuYWRkX3VybF9ydWxlKCcvY29tbWl0cy9yZXBvc2l0b3JpZXMnLCAnY29tbWl0X2Nv
bnRyb2xsZXJfcmVwb3NpdG9yaWVzJywgc2VsZi5jb21taXRfY29udHJvbGxlci5yZXBvc2l0b3Jp
ZXMsIG1ldGhvZHM9KCdHRVQnLCkpCi0gICAgICAgIHNlbGYuYWRkX3VybF9ydWxlKCcvY29tbWl0
cy9icmFuY2hlcycsICdjb21taXRfY29udHJvbGxlcl9icmFuY2hlcycsICBzZWxmLmNvbW1pdF9j
b250cm9sbGVyLmJyYW5jaGVzLCBtZXRob2RzPSgnR0VUJywpKQotICAgICAgICBzZWxmLmFkZF91
cmxfcnVsZSgnL2NvbW1pdHMvc2libGluZ3MnLCAnY29tbWl0X2NvbnRyb2xsZXJfc2libGluZ3Mn
LCBzZWxmLmNvbW1pdF9jb250cm9sbGVyLnNpYmxpbmdzLCBtZXRob2RzPSgnR0VUJywpKQotICAg
ICAgICBzZWxmLmFkZF91cmxfcnVsZSgnL2NvbW1pdHMvbmV4dCcsICdjb21taXRfY29udHJvbGxl
cl9uZXh0Jywgc2VsZi5jb21taXRfY29udHJvbGxlci5uZXh0LCBtZXRob2RzPSgnR0VUJywpKQot
ICAgICAgICBzZWxmLmFkZF91cmxfcnVsZSgnL2NvbW1pdHMvcHJldmlvdXMnLCAnY29tbWl0X2Nv
bnRyb2xsZXJfcHJldmlvdXMnLCBzZWxmLmNvbW1pdF9jb250cm9sbGVyLnByZXZpb3VzLCBtZXRo
b2RzPSgnR0VUJywpKQotICAgICAgICBzZWxmLmFkZF91cmxfcnVsZSgnL2NvbW1pdHMvcmVnaXN0
ZXInLCAnY29tbWl0X2NvbnRyb2xsZXJfcmVnaXN0ZXInLCBzZWxmLmNvbW1pdF9jb250cm9sbGVy
LnJlZ2lzdGVyLCBtZXRob2RzPSgnUE9TVCcsKSkKLQotICAgICAgICBzZWxmLmFkZF91cmxfcnVs
ZSgnL3VwbG9hZCcsICd1cGxvYWQnLCBzZWxmLnVwbG9hZF9jb250cm9sbGVyLnVwbG9hZCwgbWV0
aG9kcz0oJ0dFVCcsICdQT1NUJykpCi0gICAgICAgIHNlbGYuYWRkX3VybF9ydWxlKCcvdXBsb2Fk
L2FyY2hpdmUnLCAndXBsb2FkX2FyY2hpdmUnLCBzZWxmLmFyY2hpdmVfY29udHJvbGxlci5lbmRw
b2ludCwgbWV0aG9kcz0oJ0dFVCcsICdQT1NUJykpCi0gICAgICAgIHNlbGYuYWRkX3VybF9ydWxl
KCcvdXBsb2FkL3Byb2Nlc3MnLCAncHJvY2VzcycsIHNlbGYudXBsb2FkX2NvbnRyb2xsZXIucHJv
Y2VzcywgbWV0aG9kcz0oJ1BPU1QnLCkpCi0gICAgICAgIHNlbGYuYWRkX3VybF9ydWxlKCcvc3Vp
dGVzJywgJ3N1aXRlcycsIHNlbGYudXBsb2FkX2NvbnRyb2xsZXIuc3VpdGVzLCBtZXRob2RzPSgn
R0VUJywpKQotICAgICAgICBzZWxmLmFkZF91cmxfcnVsZSgnLzxwYXRoOnN1aXRlPi90ZXN0cycs
ICd0ZXN0cy1pbi1zdWl0ZScsIHNlbGYudGVzdF9jb250cm9sbGVyLmxpc3RfdGVzdHMsIG1ldGhv
ZHM9KCdHRVQnLCkpCi0KLSAgICAgICAgc2VsZi5hZGRfdXJsX3J1bGUoJy9yZXN1bHRzLzxwYXRo
OnN1aXRlPicsICdzdWl0ZS1yZXN1bHRzJywgc2VsZi5zdWl0ZV9jb250cm9sbGVyLmZpbmRfcnVu
X3Jlc3VsdHMsIG1ldGhvZHM9KCdHRVQnLCkpCi0gICAgICAgIHNlbGYuYWRkX3VybF9ydWxlKCcv
cmVzdWx0cy88cGF0aDpzdWl0ZT4vPHBhdGg6dGVzdD4nLCAndGVzdC1yZXN1bHRzJywgc2VsZi50
ZXN0X2NvbnRyb2xsZXIuZmluZF90ZXN0X3Jlc3VsdCwgbWV0aG9kcz0oJ0dFVCcsKSkKLQotICAg
ICAgICBzZWxmLmFkZF91cmxfcnVsZSgnL2ZhaWx1cmVzLzxwYXRoOnN1aXRlPicsICdzdWl0ZS1m
YWlsdXJlcycsIHNlbGYuZmFpbHVyZV9jb250cm9sbGVyLmZhaWx1cmVzLCBtZXRob2RzPSgnR0VU
JywpKQotCi0gICAgICAgIHNlbGYuYWRkX3VybF9ydWxlKCcvdXJscy9xdWV1ZScsICdxdWV1ZS11
cmxzJywgc2VsZi5jaV9jb250cm9sbGVyLnVybHNfZm9yX3F1ZXVlX2VuZHBvaW50LCBtZXRob2Rz
PSgnR0VUJywpKQotICAgICAgICBzZWxmLmFkZF91cmxfcnVsZSgnL3VybHMnLCAnYnVpbGQtdXJs
cycsIHNlbGYuY2lfY29udHJvbGxlci51cmxzX2Zvcl9idWlsZHNfZW5kcG9pbnQsIG1ldGhvZHM9
KCdHRVQnLCkpCi0KLSAgICBkZWYgZXJyb3JfcmVzcG9uc2Uoc2VsZiwgZXJyb3IpOgotICAgICAg
ICByZXNwb25zZSA9IGpzb25pZnkoc3RhdHVzPSdlcnJvcicsIGVycm9yPWVycm9yLm5hbWUsIGRl
c2NyaXB0aW9uPWVycm9yLmRlc2NyaXB0aW9uKQotICAgICAgICByZXNwb25zZS5zdGF0dXMgPSBm
J2Vycm9yLntlcnJvci5uYW1lfScKLSAgICAgICAgcmVzcG9uc2Uuc3RhdHVzX2NvZGUgPSBlcnJv
ci5jb2RlCi0gICAgICAgIHJldHVybiByZXNwb25zZQotCi0gICAgZGVmIHJlc3BvbnNlXzUwMChj
bHMsIGVycm9yKToKLSAgICAgICAgaWYgaXNpbnN0YW5jZShlcnJvciwgSFRUUEV4Y2VwdGlvbik6
Ci0gICAgICAgICAgICBwcmludCh0cmFjZWJhY2suZm9ybWF0X3N0YWNrKCkpCi0gICAgICAgICAg
ICByZXNwb25zZSA9IGpzb25pZnkoc3RhdHVzPSdlcnJvcicsIGVycm9yPWVycm9yLm5hbWUsIGRl
c2NyaXB0aW9uPWVycm9yLmRlc2NyaXB0aW9uKQotICAgICAgICAgICAgcmVzcG9uc2Uuc3RhdHVz
ID0gZidlcnJvci57ZXJyb3IubmFtZX0nCi0gICAgICAgICAgICByZXNwb25zZS5zdGF0dXNfY29k
ZSA9IGVycm9yLmNvZGUKLSAgICAgICAgICAgIHJldHVybiByZXNwb25zZQotCi0gICAgICAgIHJl
c3BvbnNlID0ganNvbmlmeShzdGF0dXM9J2Vycm9yJywgZXJyb3I9J0ludGVybmFsIFNlcnZlciBF
cnJvcicsIGRlc2NyaXB0aW9uPXN0cihlcnJvcikpCi0gICAgICAgIHJlc3BvbnNlLnN0YXR1cyA9
ICdlcnJvci5JbnRlcm5hbCBTZXJ2ZXIgRXJyb3InCi0gICAgICAgIHJlc3BvbnNlLnN0YXR1c19j
b2RlID0gNTAwCi0gICAgICAgIHJldHVybiByZXNwb25zZQpJbmRleDogVG9vbHMvcmVzdWx0c2Ri
cHkvcmVzdWx0c2RicHkvY29udHJvbGxlci9hcmNoaXZlX2NvbnRyb2xsZXIucHkKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci9hcmNoaXZlX2Nv
bnRyb2xsZXIucHkJKHJldmlzaW9uIDI2NTUzMSkKKysrIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3Vs
dHNkYnB5L2NvbnRyb2xsZXIvYXJjaGl2ZV9jb250cm9sbGVyLnB5CShub25leGlzdGVudCkKQEAg
LTEsMTI4ICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0j
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKLSMgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotIyBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0jIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0jIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksCi0jIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLWlt
cG9ydCBoYXNobGliCi1pbXBvcnQgaW8KLWltcG9ydCBqc29uCi1pbXBvcnQgdGltZQotCi1mcm9t
IGZsYXNrIGltcG9ydCBhYm9ydCwganNvbmlmeSwgcmVxdWVzdCwgc2VuZF9maWxlCi1mcm9tIHJl
c3VsdHNkYnB5LmNvbnRyb2xsZXIuY29tbWl0IGltcG9ydCBDb21taXQKLWZyb20gcmVzdWx0c2Ri
cHkuY29udHJvbGxlci5jb21taXRfY29udHJvbGxlciBpbXBvcnQgdXVpZF9yYW5nZV9mb3JfcXVl
cnksIEhhc0NvbW1pdENvbnRleHQKLWZyb20gcmVzdWx0c2RicHkuY29udHJvbGxlci5jb25maWd1
cmF0aW9uIGltcG9ydCBDb25maWd1cmF0aW9uCi1mcm9tIHJlc3VsdHNkYnB5LmNvbnRyb2xsZXIu
Y29uZmlndXJhdGlvbl9jb250cm9sbGVyIGltcG9ydCBjb25maWd1cmF0aW9uX2Zvcl9xdWVyeQot
ZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVyLnN1aXRlX2NvbnRyb2xsZXIgaW1wb3J0IHRpbWVf
cmFuZ2VfZm9yX3F1ZXJ5Ci1mcm9tIHJlc3VsdHNkYnB5LmZsYXNrX3N1cHBvcnQudXRpbCBpbXBv
cnQgQXNzZXJ0UmVxdWVzdCwgcXVlcnlfYXNfa3dhcmdzLCBsaW1pdF9mb3JfcXVlcnksIGJvb2xl
YW5fcXVlcnkKLQotCi1jbGFzcyBBcmNoaXZlQ29udHJvbGxlcihIYXNDb21taXRDb250ZXh0KToK
LSAgICBkZWYgX19pbml0X18oc2VsZiwgY29tbWl0X2NvbnRyb2xsZXIsIGFyY2hpdmVfY29udGV4
dCwgdXBsb2FkX2NvbnRleHQpOgotICAgICAgICBzdXBlcihBcmNoaXZlQ29udHJvbGxlciwgc2Vs
ZikuX19pbml0X18oY29tbWl0X2NvbnRyb2xsZXIuY29tbWl0X2NvbnRleHQpCi0gICAgICAgIHNl
bGYuYXJjaGl2ZV9jb250ZXh0ID0gYXJjaGl2ZV9jb250ZXh0Ci0gICAgICAgIHNlbGYuY29tbWl0
X2NvbnRyb2xsZXIgPSBjb21taXRfY29udHJvbGxlcgotICAgICAgICBzZWxmLnVwbG9hZF9jb250
ZXh0ID0gdXBsb2FkX2NvbnRleHQKLQotICAgIGRlZiBlbmRwb2ludChzZWxmKToKLSAgICAgICAg
aWYgcmVxdWVzdC5tZXRob2QgPT0gJ1BPU1QnOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYudXBs
b2FkKCkKLSAgICAgICAgcmV0dXJuIHNlbGYuZG93bmxvYWQoKQotCi0gICAgQHF1ZXJ5X2FzX2t3
YXJncygpCi0gICAgQHV1aWRfcmFuZ2VfZm9yX3F1ZXJ5KCkKLSAgICBAY29uZmlndXJhdGlvbl9m
b3JfcXVlcnkoKQotICAgIEB0aW1lX3JhbmdlX2Zvcl9xdWVyeSgpCi0gICAgZGVmIGRvd25sb2Fk
KAotICAgICAgICBzZWxmLCBzdWl0ZT1Ob25lLCBjb25maWd1cmF0aW9ucz1Ob25lLCByZWNlbnQ9
Tm9uZSwKLSAgICAgICAgYnJhbmNoPU5vbmUsIGJlZ2luPU5vbmUsIGVuZD1Ob25lLAotICAgICAg
ICBiZWdpbl9xdWVyeV90aW1lPU5vbmUsIGVuZF9xdWVyeV90aW1lPU5vbmUsICoqa3dhcmdzCi0g
ICAgKToKLSAgICAgICAgQXNzZXJ0UmVxdWVzdC5pc190eXBlKFsnR0VUJ10pCi0gICAgICAgIEFz
c2VydFJlcXVlc3QucXVlcnlfa3dhcmdzX2VtcHR5KCoqa3dhcmdzKQotICAgICAgICByZWNlbnQg
PSBib29sZWFuX3F1ZXJ5KCpyZWNlbnQpWzBdIGlmIHJlY2VudCBlbHNlIFRydWUKLQotICAgICAg
ICBpZiBub3Qgc3VpdGU6Ci0gICAgICAgICAgICBzdWl0ZXMgPSBzZXQoKQotICAgICAgICAgICAg
Zm9yIGNvbmZpZ19zdWl0ZXMgaW4gc2VsZi51cGxvYWRfY29udGV4dC5maW5kX3N1aXRlcyhjb25m
aWd1cmF0aW9ucz1jb25maWd1cmF0aW9ucywgcmVjZW50PXJlY2VudCkudmFsdWVzKCk6Ci0gICAg
ICAgICAgICAgICAgW3N1aXRlcy5hZGQoc3VpdGUpIGZvciBzdWl0ZSBpbiBjb25maWdfc3VpdGVz
XQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc3VpdGVzID0gc2V0KHN1aXRlKQotCi0gICAg
ICAgIHJlc3VsdCA9IE5vbmUKLSAgICAgICAgZmlsZW5hbWUgPSBOb25lCi0gICAgICAgIGRpZ2Vz
dCA9IE5vbmUKLSAgICAgICAgd2l0aCBzZWxmLmFyY2hpdmVfY29udGV4dCwgc2VsZi51cGxvYWRf
Y29udGV4dDoKLSAgICAgICAgICAgIGZvciBzdWl0ZSBpbiBzdWl0ZXM6Ci0gICAgICAgICAgICAg
ICAgZm9yIGNvbmZpZ3VyYXRpb24sIGFyY2hpdmVzIGluIHNlbGYuYXJjaGl2ZV9jb250ZXh0LmZp
bmRfYXJjaGl2ZSgKLSAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbnM9Y29uZmlndXJh
dGlvbnMsIHN1aXRlPXN1aXRlLCBicmFuY2g9YnJhbmNoWzBdLAotICAgICAgICAgICAgICAgICAg
ICBiZWdpbj1iZWdpbiwgZW5kPWVuZCwgcmVjZW50PXJlY2VudCwgbGltaXQ9MiwKLSAgICAgICAg
ICAgICAgICAgICAgYmVnaW5fcXVlcnlfdGltZT1iZWdpbl9xdWVyeV90aW1lLCBlbmRfcXVlcnlf
dGltZT1lbmRfcXVlcnlfdGltZSwKLSAgICAgICAgICAgICAgICApLml0ZW1zKCk6Ci0gICAgICAg
ICAgICAgICAgICAgIGZvciBhcmNoaXZlIGluIGFyY2hpdmVzOgotICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgYXJjaGl2ZS5nZXQoJ2FyY2hpdmUnKSBhbmQgYXJjaGl2ZS5nZXQoJ2RpZ2VzdCcp
OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRpZ2VzdCBhbmQgZGlnZXN0ICE9IGFy
Y2hpdmUuZ2V0KCdkaWdlc3QnKToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJv
cnQoNDAwLCBkZXNjcmlwdGlvbj0nTXVsdGlwbGUgYXJjaGl2ZXMgbWF0Y2hpbmcgdGhlIHNwZWNp
ZmllZCBjcml0ZXJpYScpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gYXJj
aGl2ZS5nZXQoJ2FyY2hpdmUnKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1l
ID0gZid7Y29uZmlndXJhdGlvbn1Ae2FyY2hpdmVbInV1aWQiXX0nLnJlcGxhY2UoJyAnLCAnXycp
LnJlcGxhY2UoJy4nLCAnLScpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlnZXN0ID0g
YXJjaGl2ZS5nZXQoJ2RpZ2VzdCcpCi0KLSAgICAgICAgaWYgbm90IHJlc3VsdDoKLSAgICAgICAg
ICAgIGFib3J0KDQwNCwgZGVzY3JpcHRpb249J05vIGFyY2hpdmVzIG1hdGNoaW5nIHRoZSBzcGVj
aWZpZWQgY3JpdGVyaWEnKQotICAgICAgICByZXR1cm4gc2VuZF9maWxlKHJlc3VsdCwgYXR0YWNo
bWVudF9maWxlbmFtZT1mJ3tmaWxlbmFtZX0uemlwJywgYXNfYXR0YWNobWVudD1UcnVlKQotCi0g
ICAgZGVmIHVwbG9hZChzZWxmKToKLSAgICAgICAgQXNzZXJ0UmVxdWVzdC5pc190eXBlKFsnUE9T
VCddKQotICAgICAgICBBc3NlcnRSZXF1ZXN0Lm5vX3F1ZXJ5KCkKLQotICAgICAgICB3aXRoIHNl
bGYuYXJjaGl2ZV9jb250ZXh0OgotICAgICAgICAgICAgaWYgJ2ZpbGUnIG5vdCBpbiByZXF1ZXN0
LmZpbGVzOgotICAgICAgICAgICAgICAgIGFib3J0KDQwMCwgZGVzY3JpcHRpb249J05vIGFyY2hp
dmUgcHJvdmlkZWQnKQotICAgICAgICAgICAgYXJjaGl2ZSA9IGlvLkJ5dGVzSU8ocmVxdWVzdC5m
aWxlc1snZmlsZSddLnJlYWQoKSkKLQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAg
IGRhdGEgPSByZXF1ZXN0LmZvcm0gb3IganNvbi5sb2FkcyhyZXF1ZXN0LmdldF9kYXRhKCkpCi0g
ICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKLSAgICAgICAgICAgICAgICBhYm9ydCg0MDAs
IGRlc2NyaXB0aW9uPSdFeHBlY3RlZCBtZXRhLWRhdGEgdG8gYmUganNvbicpCi0KLSAgICAgICAg
ICAgIHRyeToKLSAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uID0gQ29uZmlndXJhdGlvbi5m
cm9tX2pzb24oZGF0YS5nZXQoJ2NvbmZpZ3VyYXRpb24nLCB7fSkpCi0gICAgICAgICAgICBleGNl
cHQgKFZhbHVlRXJyb3IsIFR5cGVFcnJvcikgYXMgZToKLSAgICAgICAgICAgICAgICBhYm9ydCg0
MDAsIGRlc2NyaXB0aW9uPWYnSW52YWxpZCBjb25maWd1cmF0aW9uLCBlcnJvcjoge2V9JykKLQot
ICAgICAgICAgICAgc3VpdGUgPSBkYXRhLmdldCgnc3VpdGUnKQotICAgICAgICAgICAgaWYgbm90
IHN1aXRlOgotICAgICAgICAgICAgICAgIGFib3J0KDQwMCwgZGVzY3JpcHRpb249J05vIHRlc3Qg
c3VpdGUgc3BlY2lmaWVkJykKLQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGNv
bW1pdHMgPSBbc2VsZi5jb21taXRfY29udHJvbGxlci5yZWdpc3Rlcihjb21taXQ9Y29tbWl0KSBm
b3IgY29tbWl0IGluIGpzb24ubG9hZHMoZGF0YS5nZXQoJ2NvbW1pdHMnLCAnW10nKSldCi0gICAg
ICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKLSAgICAgICAgICAgICAgICBhYm9ydCg0MDAsIGRl
c2NyaXB0aW9uPSdFeHBlY3RlZCBjb21taXQgbWV0YS1kYXRhIHRvIGJlIGpzb24nKQotICAgICAg
ICAgICAgaWYgbm90IGNvbW1pdHM6Ci0gICAgICAgICAgICAgICAgYWJvcnQoNDAwLCBkZXNjcmlw
dGlvbj0nTm8gY29tbWl0cyBwcm92aWRlZCcpCi0KLSAgICAgICAgICAgIHRpbWVzdGFtcCA9IGRh
dGEuZ2V0KCd0aW1lc3RhbXAnLCB0aW1lLnRpbWUoKSkKLQotICAgICAgICAgICAgdHJ5OgotICAg
ICAgICAgICAgICAgIHNlbGYuYXJjaGl2ZV9jb250ZXh0LnJlZ2lzdGVyKGFyY2hpdmUsIGNvbmZp
Z3VyYXRpb24sIGNvbW1pdHMsIHN1aXRlLCB0aW1lc3RhbXApCi0gICAgICAgICAgICBleGNlcHQg
KFR5cGVFcnJvciwgVmFsdWVFcnJvcikgYXMgZXJyb3I6Ci0gICAgICAgICAgICAgICAgYWJvcnQo
NDAwLCBkZXNjcmlwdGlvbj1zdHIoZXJyb3IpKQotCi0gICAgICAgIHJldHVybiBqc29uaWZ5KGRp
Y3Qoc3RhdHVzPSdvaycpKQpJbmRleDogVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29u
dHJvbGxlci9hcmNoaXZlX2NvbnRyb2xsZXJfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci9hcmNoaXZlX2NvbnRyb2xsZXJf
dW5pdHRlc3QucHkJKHJldmlzaW9uIDI2NTUzMSkKKysrIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3Vs
dHNkYnB5L2NvbnRyb2xsZXIvYXJjaGl2ZV9jb250cm9sbGVyX3VuaXR0ZXN0LnB5CShub25leGlz
dGVudCkKQEAgLTEsMTYzICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUg
bWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKLSMgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotIyBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0jIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0j
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksCi0jIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0KLWltcG9ydCBiYXNlNjQKLWltcG9ydCBpbwotaW1wb3J0IGpzb24KLWltcG9ydCByZXF1
ZXN0cwotCi1mcm9tIGZha2VyZWRpcyBpbXBvcnQgRmFrZVN0cmljdFJlZGlzCi1mcm9tIHJlZGlz
IGltcG9ydCBTdHJpY3RSZWRpcwotZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVyLmFwaV9yb3V0
ZXMgaW1wb3J0IEFQSVJvdXRlcwotZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVyLmNvbW1pdCBp
bXBvcnQgQ29tbWl0Ci1mcm9tIHJlc3VsdHNkYnB5LmNvbnRyb2xsZXIuY29uZmlndXJhdGlvbiBp
bXBvcnQgQ29uZmlndXJhdGlvbgotZnJvbSByZXN1bHRzZGJweS5mbGFza19zdXBwb3J0LmZsYXNr
X3Rlc3RjYXNlIGltcG9ydCBGbGFza1Rlc3RDYXNlCi1mcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLmNh
c3NhbmRyYV9jb250ZXh0IGltcG9ydCBDYXNzYW5kcmFDb250ZXh0Ci1mcm9tIHJlc3VsdHNkYnB5
Lm1vZGVsLmNvbmZpZ3VyYXRpb25fY29udGV4dF91bml0dGVzdCBpbXBvcnQgQ29uZmlndXJhdGlv
bkNvbnRleHRUZXN0Ci1mcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLm1vY2tfY2Fzc2FuZHJhX2NvbnRl
eHQgaW1wb3J0IE1vY2tDYXNzYW5kcmFDb250ZXh0Ci1mcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLm1v
Y2tfbW9kZWxfZmFjdG9yeSBpbXBvcnQgTW9ja01vZGVsRmFjdG9yeQotZnJvbSByZXN1bHRzZGJw
eS5tb2RlbC5tb2NrX3JlcG9zaXRvcnkgaW1wb3J0IE1vY2tTdGFzaFJlcG9zaXRvcnksIE1vY2tT
Vk5SZXBvc2l0b3J5Ci1mcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLm1vZGVsIGltcG9ydCBNb2RlbAot
ZnJvbSByZXN1bHRzZGJweS5tb2RlbC53YWl0X2Zvcl9kb2NrZXJfdGVzdF9jYXNlIGltcG9ydCBX
YWl0Rm9yRG9ja2VyVGVzdENhc2UKLQotCi1jbGFzcyBBcmNoaXZlQ29udHJvbGxlclVuaXR0ZXN0
KEZsYXNrVGVzdENhc2UsIFdhaXRGb3JEb2NrZXJUZXN0Q2FzZSk6Ci0gICAgS0VZU1BBQ0UgPSAn
YXJjaGl2ZV9jb250cm9sbGVyX3Rlc3Rfa2V5c3BhY2UnCi0gICAgQVJDSElWRV9BUElfRU5EUE9J
TlQgPSAnYXBpL3VwbG9hZC9hcmNoaXZlJwotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHNl
dHVwX3dlYnNlcnZlcihjbHMsIGFwcCwgcmVkaXM9U3RyaWN0UmVkaXMsIGNhc3NhbmRyYT1DYXNz
YW5kcmFDb250ZXh0KToKLSAgICAgICAgcmVkaXNfaW5zdGFuY2UgPSByZWRpcygpCi0gICAgICAg
IHNhZmFyaSA9IE1vY2tTdGFzaFJlcG9zaXRvcnkuc2FmYXJpKHJlZGlzX2luc3RhbmNlKQotICAg
ICAgICB3ZWJraXQgPSBNb2NrU1ZOUmVwb3NpdG9yeS53ZWJraXQocmVkaXNfaW5zdGFuY2UpCi0K
LSAgICAgICAgY2Fzc2FuZHJhLmRyb3Bfa2V5c3BhY2Uoa2V5c3BhY2U9Y2xzLktFWVNQQUNFKQot
ICAgICAgICBjYXNzYW5kcmFfaW5zdGFuY2UgPSBjYXNzYW5kcmEoa2V5c3BhY2U9Y2xzLktFWVNQ
QUNFLCBjcmVhdGVfa2V5c3BhY2U9VHJ1ZSkKLQotICAgICAgICBhcHAucmVnaXN0ZXJfYmx1ZXBy
aW50KEFQSVJvdXRlcyhNb2RlbCgKLSAgICAgICAgICAgIHJlZGlzPXJlZGlzX2luc3RhbmNlLAot
ICAgICAgICAgICAgY2Fzc2FuZHJhPWNhc3NhbmRyYV9pbnN0YW5jZSwKLSAgICAgICAgICAgIHJl
cG9zaXRvcmllcz1bc2FmYXJpLCB3ZWJraXRdLAotICAgICAgICAgICAgZGVmYXVsdF90dGxfc2Vj
b25kcz1Ob25lLAotICAgICAgICAgICAgYXJjaGl2ZV90dGxfc2Vjb25kcz1Ob25lLAotICAgICAg
ICApKSkKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiB1cGxvYWRfZmlsZShjbHMsIGNsaWVu
dCwgdXJsLCBtZXRhX2RhdGEsIGNvbnRlbnQpOgotICAgICAgICAjIFVwbG9hZHMgd29yayBkaWZm
ZXJlbnRseSBpbiB0aGUgZmxhc2sgY2xpZW50IHRoYW4gaW4gcmVxdWVzdHMKLSAgICAgICAgaWYg
Y2xpZW50ID09IHJlcXVlc3RzOgotICAgICAgICAgICAgcmV0dXJuIGNsaWVudC5wb3N0KAotICAg
ICAgICAgICAgICAgIHVybCwKLSAgICAgICAgICAgICAgICBkYXRhPW1ldGFfZGF0YSwKLSAgICAg
ICAgICAgICAgICBmaWxlcz1kaWN0KGZpbGU9Y29udGVudCksCi0gICAgICAgICAgICApCi0gICAg
ICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gY2xpZW50LnBvc3QoCi0gICAgICAgICAgICAg
ICAgdXJsLAotICAgICAgICAgICAgICAgIGRhdGE9ZGljdCgKLSAgICAgICAgICAgICAgICAgICAg
ZmlsZT0oaW8uQnl0ZXNJTyhjb250ZW50KSwgJ2FyY2hpdmUuemlwJyksCi0gICAgICAgICAgICAg
ICAgICAgICoqbWV0YV9kYXRhCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgKQotCi0g
ICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZh
a2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCi0gICAg
QEZsYXNrVGVzdENhc2UucnVuX3dpdGhfd2Vic2VydmVyKCkKLSAgICBkZWYgdGVzdF9pbnZhbGlk
X3VwbG9hZChzZWxmLCBjbGllbnQsICoqa3dhcmdzKToKLSAgICAgICAgdXBsb2FkX2NvbnRlbnQg
PSAnYmFkIGRhdGEnLmVuY29kZSgnYXNjaWknKQotICAgICAgICB1cGxvYWRfbWV0YSA9IGRpY3Qo
Ci0gICAgICAgICAgICBjb25maWd1cmF0aW9uPWpzb24uZHVtcHMoQ29uZmlndXJhdGlvbkNvbnRl
eHRUZXN0LkNPTkZJR1VSQVRJT05TWzBdLCBjbHM9Q29uZmlndXJhdGlvbi5FbmNvZGVyKSwKLSAg
ICAgICAgICAgIHN1aXRlPSdsYXlvdXQtdGVzdHMnLAotICAgICAgICAgICAgY29tbWl0cz1qc29u
LmR1bXBzKFtNb2NrU3Rhc2hSZXBvc2l0b3J5LnNhZmFyaSgpLmNvbW1pdF9mb3JfaWQoJ2JiNmJk
YTVmJyksIE1vY2tTVk5SZXBvc2l0b3J5LndlYmtpdCgpLmNvbW1pdF9mb3JfaWQoMjM2NTQyKV0s
IGNscz1Db21taXQuRW5jb2RlciksCi0gICAgICAgICkKLQotICAgICAgICByZXNwb25zZSA9IHNl
bGYudXBsb2FkX2ZpbGUoY2xpZW50LCBmJ3tzZWxmLlVSTH0ve3NlbGYuQVJDSElWRV9BUElfRU5E
UE9JTlR9JywgdXBsb2FkX21ldGEsIHVwbG9hZF9jb250ZW50KQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHJlc3BvbnNlLnN0YXR1c19jb2RlLCA0MDApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwocmVzcG9uc2UuanNvbigpWydkZXNjcmlwdGlvbiddLCAnQXJjaGl2ZSBpcyBub3QgYSB6aXBm
aWxlJykKLQotICAgICAgICByZXNwb25zZSA9IGNsaWVudC5wb3N0KGYne3NlbGYuVVJMfS97c2Vs
Zi5BUkNISVZFX0FQSV9FTkRQT0lOVH0nLCBkYXRhPXN0cihqc29uLmR1bXBzKHVwbG9hZF9tZXRh
KSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDQwMCkK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5qc29uKClbJ2Rlc2NyaXB0aW9uJ10s
ICdObyBhcmNoaXZlIHByb3ZpZGVkJykKLQotICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9j
a19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJh
PU1vY2tDYXNzYW5kcmFDb250ZXh0KQotICAgIEBGbGFza1Rlc3RDYXNlLnJ1bl93aXRoX3dlYnNl
cnZlcigpCi0gICAgZGVmIHRlc3RfdXBsb2FkX2FuZF9kb3dubG9hZChzZWxmLCBjbGllbnQsICoq
a3dhcmdzKToKLSAgICAgICAgdXBsb2FkX2NvbnRlbnQgPSBiYXNlNjQuYjY0ZGVjb2RlKE1vY2tN
b2RlbEZhY3RvcnkuQVJDSElWRV9aSVApCi0gICAgICAgIHVwbG9hZF9tZXRhID0gZGljdCgKLSAg
ICAgICAgICAgIGNvbmZpZ3VyYXRpb249anNvbi5kdW1wcyhDb25maWd1cmF0aW9uQ29udGV4dFRl
c3QuQ09ORklHVVJBVElPTlNbMF0sIGNscz1Db25maWd1cmF0aW9uLkVuY29kZXIpLAotICAgICAg
ICAgICAgc3VpdGU9J2xheW91dC10ZXN0cycsCi0gICAgICAgICAgICBjb21taXRzPWpzb24uZHVt
cHMoW01vY2tTdGFzaFJlcG9zaXRvcnkuc2FmYXJpKCkuY29tbWl0X2Zvcl9pZCgnYmI2YmRhNWYn
KSwgTW9ja1NWTlJlcG9zaXRvcnkud2Via2l0KCkuY29tbWl0X2Zvcl9pZCgyMzY1NDIpXSwgY2xz
PUNvbW1pdC5FbmNvZGVyKSwKLSAgICAgICAgKQotCi0gICAgICAgIHJlc3BvbnNlID0gc2VsZi51
cGxvYWRfZmlsZShjbGllbnQsIGYne3NlbGYuVVJMfS97c2VsZi5BUkNISVZFX0FQSV9FTkRQT0lO
VH0nLCB1cGxvYWRfbWV0YSwgdXBsb2FkX2NvbnRlbnQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkKLQotICAgICAgICByZXNwb25zZSA9IGNsaWVu
dC5nZXQoZid7c2VsZi5VUkx9L3tzZWxmLkFSQ0hJVkVfQVBJX0VORFBPSU5UfScpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChyZXNwb25zZS5jb250ZW50LCBiYXNlNjQuYjY0ZGVjb2RlKE1vY2tNb2Rl
bEZhY3RvcnkuQVJDSElWRV9aSVApKQotCi0gICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2Nr
X2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9
TW9ja0Nhc3NhbmRyYUNvbnRleHQpCi0gICAgQEZsYXNrVGVzdENhc2UucnVuX3dpdGhfd2Vic2Vy
dmVyKCkKLSAgICBkZWYgdGVzdF9ub19hcmNoaXZlX2F2YWlsYWJsZShzZWxmLCBjbGllbnQsICoq
a3dhcmdzKToKLSAgICAgICAgcmVzcG9uc2UgPSBjbGllbnQuZ2V0KGYne3NlbGYuVVJMfS97c2Vs
Zi5BUkNISVZFX0FQSV9FTkRQT0lOVH0nKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3Bv
bnNlLnN0YXR1c19jb2RlLCA0MDQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2Uu
anNvbigpWydkZXNjcmlwdGlvbiddLCAnTm8gYXJjaGl2ZXMgbWF0Y2hpbmcgdGhlIHNwZWNpZmll
ZCBjcml0ZXJpYScpCi0KLSAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9j
a2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2Fu
ZHJhQ29udGV4dCkKLSAgICBARmxhc2tUZXN0Q2FzZS5ydW5fd2l0aF93ZWJzZXJ2ZXIoKQotICAg
IGRlZiB0ZXN0X2ludmFsaWRfbWV0YWRhdGEoc2VsZiwgY2xpZW50LCAqKmt3YXJncyk6Ci0gICAg
ICAgIHVwbG9hZF9jb250ZW50ID0gYmFzZTY0LmI2NGRlY29kZShNb2NrTW9kZWxGYWN0b3J5LkFS
Q0hJVkVfWklQKQotICAgICAgICByZXNwb25zZSA9IHNlbGYudXBsb2FkX2ZpbGUoY2xpZW50LCBm
J3tzZWxmLlVSTH0ve3NlbGYuQVJDSElWRV9BUElfRU5EUE9JTlR9JywgZGljdCgKLSAgICAgICAg
ICAgIGNvbmZpZ3VyYXRpb249anNvbi5kdW1wcyhDb25maWd1cmF0aW9uQ29udGV4dFRlc3QuQ09O
RklHVVJBVElPTlNbMF0sIGNscz1Db25maWd1cmF0aW9uLkVuY29kZXIpLAotICAgICAgICAgICAg
Y29tbWl0cz1qc29uLmR1bXBzKFtNb2NrU3Rhc2hSZXBvc2l0b3J5LnNhZmFyaSgpLmNvbW1pdF9m
b3JfaWQoJ2JiNmJkYTVmJyksIE1vY2tTVk5SZXBvc2l0b3J5LndlYmtpdCgpLmNvbW1pdF9mb3Jf
aWQoMjM2NTQyKV0sIGNscz1Db21taXQuRW5jb2RlciksCi0gICAgICAgICksIHVwbG9hZF9jb250
ZW50KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLnN0YXR1c19jb2RlLCA0MDAp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2UuanNvbigpWydkZXNjcmlwdGlvbidd
LCAnTm8gdGVzdCBzdWl0ZSBzcGVjaWZpZWQnKQotCi0gICAgICAgIHJlc3BvbnNlID0gc2VsZi51
cGxvYWRfZmlsZShjbGllbnQsIGYne3NlbGYuVVJMfS97c2VsZi5BUkNISVZFX0FQSV9FTkRQT0lO
VH0nLCBkaWN0KAotICAgICAgICAgICAgc3VpdGU9J2xheW91dC10ZXN0cycsCi0gICAgICAgICAg
ICBjb21taXRzPWpzb24uZHVtcHMoW01vY2tTdGFzaFJlcG9zaXRvcnkuc2FmYXJpKCkuY29tbWl0
X2Zvcl9pZCgnYmI2YmRhNWYnKSwgTW9ja1NWTlJlcG9zaXRvcnkud2Via2l0KCkuY29tbWl0X2Zv
cl9pZCgyMzY1NDIpXSwgY2xzPUNvbW1pdC5FbmNvZGVyKSwKLSAgICAgICAgKSwgdXBsb2FkX2Nv
bnRlbnQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDQw
MCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5qc29uKClbJ2Rlc2NyaXB0aW9u
J10sICdDYW5ub3QgcmVnaXN0ZXIgYSBwYXJ0aWFsIGNvbmZpZ3VyYXRpb24nKQotCi0gICAgICAg
IHJlc3BvbnNlID0gc2VsZi51cGxvYWRfZmlsZShjbGllbnQsIGYne3NlbGYuVVJMfS97c2VsZi5B
UkNISVZFX0FQSV9FTkRQT0lOVH0nLCBkaWN0KAotICAgICAgICAgICAgY29uZmlndXJhdGlvbj1q
c29uLmR1bXBzKENvbmZpZ3VyYXRpb25Db250ZXh0VGVzdC5DT05GSUdVUkFUSU9OU1swXSwgY2xz
PUNvbmZpZ3VyYXRpb24uRW5jb2RlciksCi0gICAgICAgICAgICBzdWl0ZT0nbGF5b3V0LXRlc3Rz
JywKLSAgICAgICAgKSwgdXBsb2FkX2NvbnRlbnQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
cmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDQwMCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNw
b25zZS5qc29uKClbJ2Rlc2NyaXB0aW9uJ10sICdObyBjb21taXRzIHByb3ZpZGVkJykKLQotICAg
ICAgICByZXNwb25zZSA9IHNlbGYudXBsb2FkX2ZpbGUoY2xpZW50LCBmJ3tzZWxmLlVSTH0ve3Nl
bGYuQVJDSElWRV9BUElfRU5EUE9JTlR9JywgZGljdCgKLSAgICAgICAgICAgIGNvbmZpZ3VyYXRp
b249J0ludmFsaWQgbWV0YS1kYXRhJywKLSAgICAgICAgICAgIHN1aXRlPSdsYXlvdXQtdGVzdHMn
LAotICAgICAgICAgICAgY29tbWl0cz1qc29uLmR1bXBzKFtNb2NrU3Rhc2hSZXBvc2l0b3J5LnNh
ZmFyaSgpLmNvbW1pdF9mb3JfaWQoJ2JiNmJkYTVmJyksIE1vY2tTVk5SZXBvc2l0b3J5LndlYmtp
dCgpLmNvbW1pdF9mb3JfaWQoMjM2NTQyKV0sIGNscz1Db21taXQuRW5jb2RlciksCi0gICAgICAg
ICksIHVwbG9hZF9jb250ZW50KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLnN0
YXR1c19jb2RlLCA0MDApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2UuanNvbigp
WydkZXNjcmlwdGlvbiddLCAnSW52YWxpZCBjb25maWd1cmF0aW9uLCBlcnJvcjogRXhwZWN0aW5n
IHZhbHVlOiBsaW5lIDEgY29sdW1uIDEgKGNoYXIgMCknKQotCi0gICAgICAgIHJlc3BvbnNlID0g
c2VsZi51cGxvYWRfZmlsZShjbGllbnQsIGYne3NlbGYuVVJMfS97c2VsZi5BUkNISVZFX0FQSV9F
TkRQT0lOVH0nLCBkaWN0KAotICAgICAgICAgICAgY29uZmlndXJhdGlvbj1qc29uLmR1bXBzKENv
bmZpZ3VyYXRpb25Db250ZXh0VGVzdC5DT05GSUdVUkFUSU9OU1swXSwgY2xzPUNvbmZpZ3VyYXRp
b24uRW5jb2RlciksCi0gICAgICAgICAgICBzdWl0ZT0nbGF5b3V0LXRlc3RzJywKLSAgICAgICAg
ICAgIGNvbW1pdHM9J0ludmFsaWQgbWV0YS1kYXRhJywKLSAgICAgICAgKSwgdXBsb2FkX2NvbnRl
bnQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDQwMCkK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5qc29uKClbJ2Rlc2NyaXB0aW9uJ10s
ICdFeHBlY3RlZCBjb21taXQgbWV0YS1kYXRhIHRvIGJlIGpzb24nKQpJbmRleDogVG9vbHMvcmVz
dWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci9jaV9jb250cm9sbGVyLnB5Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvY2lfY29udHJv
bGxlci5weQkocmV2aXNpb24gMjY1NTMxKQorKysgVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2Ri
cHkvY29udHJvbGxlci9jaV9jb250cm9sbGVyLnB5CShub25leGlzdGVudCkKQEAgLTEsMTQwICsw
LDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQotIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotIyBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SCi0jIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0jIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksCi0jIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLWZyb20gZmxhc2sg
aW1wb3J0IGFib3J0LCBqc29uaWZ5Ci1mcm9tIHJlc3VsdHNkYnB5LmNvbnRyb2xsZXIuY29tbWl0
X2NvbnRyb2xsZXIgaW1wb3J0IHV1aWRfcmFuZ2VfZm9yX3F1ZXJ5LCBIYXNDb21taXRDb250ZXh0
Ci1mcm9tIHJlc3VsdHNkYnB5LmNvbnRyb2xsZXIuY29uZmlndXJhdGlvbiBpbXBvcnQgQ29uZmln
dXJhdGlvbgotZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVyLmNvbmZpZ3VyYXRpb25fY29udHJv
bGxlciBpbXBvcnQgY29uZmlndXJhdGlvbl9mb3JfcXVlcnkKLWZyb20gcmVzdWx0c2RicHkuY29u
dHJvbGxlci5zdWl0ZV9jb250cm9sbGVyIGltcG9ydCB0aW1lX3JhbmdlX2Zvcl9xdWVyeQotZnJv
bSByZXN1bHRzZGJweS5mbGFza19zdXBwb3J0LnV0aWwgaW1wb3J0IEFzc2VydFJlcXVlc3QsIHF1
ZXJ5X2FzX2t3YXJncywgbGltaXRfZm9yX3F1ZXJ5LCBib29sZWFuX3F1ZXJ5Ci0KLQotY2xhc3Mg
Q0lDb250cm9sbGVyKEhhc0NvbW1pdENvbnRleHQpOgotICAgIERFRkFVTFRfUVVFUllfTElNSVQg
PSAxMDAKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjaV9jb250ZXh0LCB1cGxvYWRfY29udGV4
dCk6Ci0gICAgICAgIHN1cGVyKENJQ29udHJvbGxlciwgc2VsZikuX19pbml0X18oY2lfY29udGV4
dC5jb21taXRfY29udGV4dCkKLSAgICAgICAgc2VsZi5jaV9jb250ZXh0ID0gY2lfY29udGV4dAot
ICAgICAgICBzZWxmLnVwbG9hZF9jb250ZXh0ID0gdXBsb2FkX2NvbnRleHQKLQotICAgIGRlZiBf
c3VpdGVzX2Zvcl9xdWVyeV9hcmd1bWVudHMoc2VsZiwgc3VpdGU9Tm9uZSwgY29uZmlndXJhdGlv
bnM9Tm9uZSwgaXNfcmVjZW50PVRydWUpOgotICAgICAgICAjIFRoZSB1c2VyIG1heSBoYXZlIHNw
ZWNpZmllZCBhIHNldCBvZiBzdWl0ZXMgdG8gc2VhcmNoIGJ5LCBvciB3ZSBuZWVkIHRvIGRldGVy
bWluZSB0aGUKLSAgICAgICAgIyBzdWl0ZXMgYmFzZWQgb24gdGhlIGN1cnJlbnQgY29uZmlndXJh
dGlvbi4KLSAgICAgICAgaWYgc3VpdGU6Ci0gICAgICAgICAgICByZXR1cm4gc3VpdGUKLQotICAg
ICAgICB3aXRoIHNlbGYudXBsb2FkX2NvbnRleHQ6Ci0gICAgICAgICAgICBzdWl0ZXMgPSBzZXQo
KQotICAgICAgICAgICAgIyBSZXR1cm5zIGEgZGljdGlvbmFyeSB3aGVyZSB0aGUga2V5cyBhcmUg
Y29uZmlndXJhdGlvbiBvYmplY3RzIGFuZCB0aGUgdmFsdWVzIGFyZSBzdHJpbmdzCi0gICAgICAg
ICAgICAjIHJlcHJlc2VudGluZyBzdWl0ZXMgYXNzb2NpYXRlZCB3aXRoIHRoYXQgY29uZmlndXJh
dGlvbi4KLSAgICAgICAgICAgIGZvciBjYW5kaWRhdGVfc3VpdGVzIGluIHNlbGYudXBsb2FkX2Nv
bnRleHQuZmluZF9zdWl0ZXMoY29uZmlndXJhdGlvbnM9Y29uZmlndXJhdGlvbnMsIHJlY2VudD1p
c19yZWNlbnQpLnZhbHVlcygpOgotICAgICAgICAgICAgICAgIGZvciBjYW5kaWRhdGUgaW4gY2Fu
ZGlkYXRlX3N1aXRlczoKLSAgICAgICAgICAgICAgICAgICAgc3VpdGVzLmFkZChjYW5kaWRhdGUp
Ci0KLSAgICAgICAgICAgIHJldHVybiBzb3J0ZWQoc3VpdGVzKQotCi0gICAgQGxpbWl0X2Zvcl9x
dWVyeShERUZBVUxUX1FVRVJZX0xJTUlUKQotICAgIEBjb25maWd1cmF0aW9uX2Zvcl9xdWVyeSgp
Ci0gICAgZGVmIHVybHNfZm9yX3F1ZXVlKHNlbGYsIHN1aXRlPU5vbmUsIGJyYW5jaD1Ob25lLCBj
b25maWd1cmF0aW9ucz1Ob25lLCByZWNlbnQ9Tm9uZSwgbGltaXQ9Tm9uZSwgKiprd2FyZ3MpOgot
ICAgICAgICBBc3NlcnRSZXF1ZXN0LmlzX3R5cGUoWydHRVQnXSkKLSAgICAgICAgQXNzZXJ0UmVx
dWVzdC5xdWVyeV9rd2FyZ3NfZW1wdHkoKiprd2FyZ3MpCi0KLSAgICAgICAgaXNfcmVjZW50ID0g
VHJ1ZQotICAgICAgICBpZiByZWNlbnQ6Ci0gICAgICAgICAgICBpc19yZWNlbnQgPSBib29sZWFu
X3F1ZXJ5KCpyZWNlbnQpWzBdCi0KLSAgICAgICAgd2l0aCBzZWxmLmNpX2NvbnRleHQsIHNlbGYu
dXBsb2FkX2NvbnRleHQ6Ci0gICAgICAgICAgICBzdWl0ZXMgPSBzZWxmLl9zdWl0ZXNfZm9yX3F1
ZXJ5X2FyZ3VtZW50cyhzdWl0ZT1zdWl0ZSwgY29uZmlndXJhdGlvbnM9Y29uZmlndXJhdGlvbnMs
IGlzX3JlY2VudD1pc19yZWNlbnQpCi0gICAgICAgICAgICBpZiBub3QgYnJhbmNoOgotICAgICAg
ICAgICAgICAgIGJyYW5jaCA9IFtOb25lXQotCi0gICAgICAgICAgICByZXN1bHRzID0gW10KLSAg
ICAgICAgICAgIGZvciBzdWl0ZSBpbiBzdWl0ZXM6Ci0gICAgICAgICAgICAgICAgZm9yIGNvbmZp
ZywgdXJsIGluIHNlbGYuY2lfY29udGV4dC5maW5kX3VybHNfYnlfcXVldWUoCi0gICAgICAgICAg
ICAgICAgICAgIGNvbmZpZ3VyYXRpb25zPWNvbmZpZ3VyYXRpb25zLCByZWNlbnQ9aXNfcmVjZW50
LAotICAgICAgICAgICAgICAgICAgICBicmFuY2g9YnJhbmNoWzBdLCBzdWl0ZT1zdWl0ZSwgbGlt
aXQ9bGltaXQsCi0gICAgICAgICAgICAgICAgKS5pdGVtcygpOgotICAgICAgICAgICAgICAgICAg
ICBjb25maWd1cmF0aW9uX2RpY3QgPSBDb25maWd1cmF0aW9uLkVuY29kZXIoKS5kZWZhdWx0KGNv
bmZpZykKLSAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbl9kaWN0WydzdWl0ZSddID0g
c3VpdGUKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQoZGljdChjb25maWd1cmF0
aW9uPWNvbmZpZ3VyYXRpb25fZGljdCwgdXJsPXVybCkpCi0KLSAgICAgICAgICAgIHJldHVybiBy
ZXN1bHRzCi0KLSAgICBAdXVpZF9yYW5nZV9mb3JfcXVlcnkoKQotICAgIEBsaW1pdF9mb3JfcXVl
cnkoREVGQVVMVF9RVUVSWV9MSU1JVCkKLSAgICBAY29uZmlndXJhdGlvbl9mb3JfcXVlcnkoKQot
ICAgIEB0aW1lX3JhbmdlX2Zvcl9xdWVyeSgpCi0gICAgZGVmIHVybHNfZm9yX2J1aWxkcygKLSAg
ICAgICAgc2VsZiwgc3VpdGU9Tm9uZSwKLSAgICAgICAgY29uZmlndXJhdGlvbnM9Tm9uZSwgcmVj
ZW50PU5vbmUsCi0gICAgICAgIGJyYW5jaD1Ob25lLCBiZWdpbj1Ob25lLCBlbmQ9Tm9uZSwKLSAg
ICAgICAgYmVnaW5fcXVlcnlfdGltZT1Ob25lLCBlbmRfcXVlcnlfdGltZT1Ob25lLAotICAgICAg
ICBsaW1pdD1Ob25lLCAqKmt3YXJncwotICAgICk6Ci0gICAgICAgIEFzc2VydFJlcXVlc3QuaXNf
dHlwZShbJ0dFVCddKQotICAgICAgICBBc3NlcnRSZXF1ZXN0LnF1ZXJ5X2t3YXJnc19lbXB0eSgq
Kmt3YXJncykKLQotICAgICAgICBpc19yZWNlbnQgPSBUcnVlCi0gICAgICAgIGlmIHJlY2VudDoK
LSAgICAgICAgICAgIGlzX3JlY2VudCA9IGJvb2xlYW5fcXVlcnkoKnJlY2VudClbMF0KLQotICAg
ICAgICB3aXRoIHNlbGYuY2lfY29udGV4dCwgc2VsZi51cGxvYWRfY29udGV4dDoKLSAgICAgICAg
ICAgIHN1aXRlcyA9IHNlbGYuX3N1aXRlc19mb3JfcXVlcnlfYXJndW1lbnRzKHN1aXRlPXN1aXRl
LCBjb25maWd1cmF0aW9ucz1jb25maWd1cmF0aW9ucywgaXNfcmVjZW50PWlzX3JlY2VudCkKLSAg
ICAgICAgICAgIGlmIG5vdCBicmFuY2g6Ci0gICAgICAgICAgICAgICAgYnJhbmNoID0gW05vbmVd
Ci0KLSAgICAgICAgICAgIHF1ZXJ5X2RpY3QgPSBkaWN0KAotICAgICAgICAgICAgICAgIGNvbmZp
Z3VyYXRpb25zPWNvbmZpZ3VyYXRpb25zLCByZWNlbnQ9aXNfcmVjZW50LAotICAgICAgICAgICAg
ICAgIGJyYW5jaD1icmFuY2hbMF0sIGJlZ2luPWJlZ2luLCBlbmQ9ZW5kLAotICAgICAgICAgICAg
ICAgIGJlZ2luX3F1ZXJ5X3RpbWU9YmVnaW5fcXVlcnlfdGltZSwgZW5kX3F1ZXJ5X3RpbWU9ZW5k
X3F1ZXJ5X3RpbWUsCi0gICAgICAgICAgICAgICAgbGltaXQ9bGltaXQsCi0gICAgICAgICAgICAp
Ci0gICAgICAgICAgICBudW1fdXVpZF9xdWVyeV9hcmdzID0gc3VtKFsxIGlmIGVsZW1lbnQgZWxz
ZSAwIGZvciBlbGVtZW50IGluIFtiZWdpbiwgZW5kXV0pCi0gICAgICAgICAgICBudW1fdGltZXN0
YW1wX3F1ZXJ5X2FyZ3MgPSBzdW0oWzEgaWYgZWxlbWVudCBlbHNlIDAgZm9yIGVsZW1lbnQgaW4g
W2JlZ2luX3F1ZXJ5X3RpbWUsIGVuZF9xdWVyeV90aW1lXV0pCi0KLSAgICAgICAgICAgIGlmIG51
bV91dWlkX3F1ZXJ5X2FyZ3MgPj0gbnVtX3RpbWVzdGFtcF9xdWVyeV9hcmdzOgotICAgICAgICAg
ICAgICAgIGZpbmRfZnVuY3Rpb24gPSBzZWxmLmNpX2NvbnRleHQuZmluZF91cmxzX2J5X2NvbW1p
dAotCi0gICAgICAgICAgICAgICAgZGVmIHNvcnRfZnVuY3Rpb24ocmVzdWx0KToKLSAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHJlc3VsdFsndXVpZCddCi0gICAgICAgICAgICBlbHNlOgotICAg
ICAgICAgICAgICAgIGZpbmRfZnVuY3Rpb24gPSBzZWxmLmNpX2NvbnRleHQuZmluZF91cmxzX2J5
X3N0YXJ0X3RpbWUKLQotICAgICAgICAgICAgICAgIGRlZiBzb3J0X2Z1bmN0aW9uKHJlc3VsdCk6
Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHRbJ3N0YXJ0X3RpbWUnXQotCi0gICAg
ICAgICAgICByZXN1bHRzID0gW10KLSAgICAgICAgICAgIGZvciBzdWl0ZSBpbiBzdWl0ZXM6Ci0g
ICAgICAgICAgICAgICAgZm9yIGNvbmZpZywgdXJscyBpbiBmaW5kX2Z1bmN0aW9uKHN1aXRlPXN1
aXRlLCAqKnF1ZXJ5X2RpY3QpLml0ZW1zKCk6Ci0gICAgICAgICAgICAgICAgICAgIGNvbmZpZ3Vy
YXRpb25fZGljdCA9IENvbmZpZ3VyYXRpb24uRW5jb2RlcigpLmRlZmF1bHQoY29uZmlnKQotICAg
ICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uX2RpY3RbJ3N1aXRlJ10gPSBzdWl0ZQotICAg
ICAgICAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChkaWN0KGNvbmZpZ3VyYXRpb249Y29uZmln
dXJhdGlvbl9kaWN0LCB1cmxzPXNvcnRlZCh1cmxzLCBrZXk9c29ydF9mdW5jdGlvbikpKQotCi0g
ICAgICAgICAgICByZXR1cm4gcmVzdWx0cwotCi0gICAgQHF1ZXJ5X2FzX2t3YXJncygpCi0gICAg
ZGVmIHVybHNfZm9yX3F1ZXVlX2VuZHBvaW50KHNlbGYsICoqa3dhcmdzKToKLSAgICAgICAgcmV0
dXJuIGpzb25pZnkoc2VsZi51cmxzX2Zvcl9xdWV1ZSgqKmt3YXJncykpCi0KLSAgICBAcXVlcnlf
YXNfa3dhcmdzKCkKLSAgICBkZWYgdXJsc19mb3JfYnVpbGRzX2VuZHBvaW50KHNlbGYsICoqa3dh
cmdzKToKLSAgICAgICAgcmV0dXJuIGpzb25pZnkoc2VsZi51cmxzX2Zvcl9idWlsZHMoKiprd2Fy
Z3MpKQpJbmRleDogVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci9jaV9j
b250cm9sbGVyX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL3Jlc3VsdHNkYnB5L3Jl
c3VsdHNkYnB5L2NvbnRyb2xsZXIvY2lfY29udHJvbGxlcl91bml0dGVzdC5weQkocmV2aXNpb24g
MjY1NTMxKQorKysgVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci9jaV9j
b250cm9sbGVyX3VuaXR0ZXN0LnB5CShub25leGlzdGVudCkKQEAgLTEsMTMyICswLDAgQEAKLSMg
Q29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
IwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQotIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SCi0jIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0jIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0jIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLWltcG9ydCB0aW1lCi0KLWZyb20g
ZmFrZXJlZGlzIGltcG9ydCBGYWtlU3RyaWN0UmVkaXMKLWZyb20gcmVkaXMgaW1wb3J0IFN0cmlj
dFJlZGlzCi1mcm9tIHJlc3VsdHNkYnB5LmNvbnRyb2xsZXIuYXBpX3JvdXRlcyBpbXBvcnQgQVBJ
Um91dGVzCi1mcm9tIHJlc3VsdHNkYnB5LmNvbnRyb2xsZXIuY29uZmlndXJhdGlvbiBpbXBvcnQg
Q29uZmlndXJhdGlvbgotZnJvbSByZXN1bHRzZGJweS5mbGFza19zdXBwb3J0LmZsYXNrX3Rlc3Rj
YXNlIGltcG9ydCBGbGFza1Rlc3RDYXNlCi1mcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLmNhc3NhbmRy
YV9jb250ZXh0IGltcG9ydCBDYXNzYW5kcmFDb250ZXh0Ci1mcm9tIHJlc3VsdHNkYnB5Lm1vZGVs
LmNpX2NvbnRleHQgaW1wb3J0IEJ1aWxkYm90VVJMRmFjdG9yeQotZnJvbSByZXN1bHRzZGJweS5t
b2RlbC5jaV9jb250ZXh0X3VuaXR0ZXN0IGltcG9ydCBVUkxGYWN0b3J5VGVzdAotZnJvbSByZXN1
bHRzZGJweS5tb2RlbC5tb2NrX2Nhc3NhbmRyYV9jb250ZXh0IGltcG9ydCBNb2NrQ2Fzc2FuZHJh
Q29udGV4dAotZnJvbSByZXN1bHRzZGJweS5tb2RlbC5tb2NrX21vZGVsX2ZhY3RvcnkgaW1wb3J0
IE1vY2tNb2RlbEZhY3RvcnkKLWZyb20gcmVzdWx0c2RicHkubW9kZWwudGVzdF9jb250ZXh0IGlt
cG9ydCBFeHBlY3RhdGlvbnMKLWZyb20gcmVzdWx0c2RicHkubW9kZWwud2FpdF9mb3JfZG9ja2Vy
X3Rlc3RfY2FzZSBpbXBvcnQgV2FpdEZvckRvY2tlclRlc3RDYXNlCi0KLQotY2xhc3MgQ0lDb250
cm9sbGVyVGVzdChGbGFza1Rlc3RDYXNlLCBXYWl0Rm9yRG9ja2VyVGVzdENhc2UpOgotICAgIEtF
WVNQQUNFID0gJ2NpX2NvbnRyb2xsZXJfdGVzdF9rZXlzcGFjZScKLQotICAgIEBjbGFzc21ldGhv
ZAotICAgIGRlZiBzZXR1cF93ZWJzZXJ2ZXIoY2xzLCBhcHAsIHJlZGlzPVN0cmljdFJlZGlzLCBj
YXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCk6Ci0gICAgICAgIHdpdGggVVJMRmFjdG9yeVRlc3Qu
bW9jaygpOgotICAgICAgICAgICAgY2Fzc2FuZHJhLmRyb3Bfa2V5c3BhY2Uoa2V5c3BhY2U9Y2xz
LktFWVNQQUNFKQotICAgICAgICAgICAgbW9kZWwgPSBNb2NrTW9kZWxGYWN0b3J5LmNyZWF0ZShy
ZWRpcz1yZWRpcygpLCBjYXNzYW5kcmE9Y2Fzc2FuZHJhKGtleXNwYWNlPWNscy5LRVlTUEFDRSwg
Y3JlYXRlX2tleXNwYWNlPVRydWUpKQotICAgICAgICAgICAgbW9kZWwuY2lfY29udGV4dC5hZGRf
dXJsX2ZhY3RvcnkoQnVpbGRib3RVUkxGYWN0b3J5KG1hc3Rlcj0nYnVpbGQud2Via2l0Lm9yZycs
IHJlZGlzPW1vZGVsLnJlZGlzKSkKLSAgICAgICAgICAgIGFwcC5yZWdpc3Rlcl9ibHVlcHJpbnQo
QVBJUm91dGVzKG1vZGVsKSkKLQotICAgICAgICAgICAgd2l0aCBtb2RlbC51cGxvYWRfY29udGV4
dDoKLSAgICAgICAgICAgICAgICAjIE1vY2sgcmVzdWx0cyBhcmUgbW9yZSBjb21wbGljYXRlZCBi
ZWNhdXNlIHdlIHdhbnQgdG8gYXR0YWNoIHJlc3VsdHMgdG8gYnVpbGRlcnMKLSAgICAgICAgICAg
ICAgICBmb3IgY29uZmlndXJhdGlvbiBpbiBbCi0gICAgICAgICAgICAgICAgICAgIENvbmZpZ3Vy
YXRpb24ocGxhdGZvcm09J01hYycsIHZlcnNpb25fbmFtZT0nQ2F0YWxpbmEnLCB2ZXJzaW9uPScx
MC4xNS4wJywgc2RrPScxOUE1MDAnLCBpc19zaW11bGF0b3I9RmFsc2UsIGFyY2hpdGVjdHVyZT0n
eDg2XzY0Jywgc3R5bGU9J1JlbGVhc2UnLCBmbGF2b3I9J3drMScpLAotICAgICAgICAgICAgICAg
ICAgICBDb25maWd1cmF0aW9uKHBsYXRmb3JtPSdNYWMnLCB2ZXJzaW9uX25hbWU9J0NhdGFsaW5h
JywgdmVyc2lvbj0nMTAuMTUuMCcsIHNkaz0nMTlBNTAwJywgaXNfc2ltdWxhdG9yPUZhbHNlLCBh
cmNoaXRlY3R1cmU9J3g4Nl82NCcsIHN0eWxlPSdSZWxlYXNlJywgZmxhdm9yPSd3azInKSwKLSAg
ICAgICAgICAgICAgICAgICAgQ29uZmlndXJhdGlvbihwbGF0Zm9ybT0nTWFjJywgdmVyc2lvbl9u
YW1lPSdNb2phdmUnLCB2ZXJzaW9uPScxMC4xNC4wJywgc2RrPScxOEE1MDAnLCBpc19zaW11bGF0
b3I9RmFsc2UsIGFyY2hpdGVjdHVyZT0neDg2XzY0Jywgc3R5bGU9J1JlbGVhc2UnLCBmbGF2b3I9
J3drMScpLAotICAgICAgICAgICAgICAgICAgICBDb25maWd1cmF0aW9uKHBsYXRmb3JtPSdNYWMn
LCB2ZXJzaW9uX25hbWU9J01vamF2ZScsIHZlcnNpb249JzEwLjE0LjAnLCBzZGs9JzE4QTUwMCcs
IGlzX3NpbXVsYXRvcj1GYWxzZSwgYXJjaGl0ZWN0dXJlPSd4ODZfNjQnLCBzdHlsZT0nUmVsZWFz
ZScsIGZsYXZvcj0nd2syJyksCi0gICAgICAgICAgICAgICAgXToKLSAgICAgICAgICAgICAgICAg
ICAgYnVpbGRfY291bnQgPSBbMV0KLQotICAgICAgICAgICAgICAgICAgICBkZWYgY2FsbGJhY2so
Y29tbWl0cywgbW9kZWw9bW9kZWwsIGNvbmZpZ3VyYXRpb249Y29uZmlndXJhdGlvbiwgY291bnQ9
YnVpbGRfY291bnQpOgotICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0cyA9IE1vY2tNb2Rl
bEZhY3RvcnkubGF5b3V0X3Rlc3RfcmVzdWx0cygpCi0gICAgICAgICAgICAgICAgICAgICAgICBy
ZXN1bHRzWydkZXRhaWxzJ10gPSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2J1aWxk
Ym90LW1hc3Rlcic6IFVSTEZhY3RvcnlUZXN0LkJVSUxEX01BU1RFUiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnYnVpbGRlci1uYW1lJzogZid7Y29uZmlndXJhdGlvbi52ZXJzaW9uX25h
bWV9LXtjb25maWd1cmF0aW9uLnN0eWxlfS17Y29uZmlndXJhdGlvbi5mbGF2b3IudXBwZXIoKX0t
VGVzdHMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdidWlsZC1udW1iZXInOiBzdHIo
Y291bnRbMF0pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdidWlsZGJvdC13b3JrZXIn
OiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdNb2phdmUnOiAnYm90MScsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDYXRhbGluYSc6ICdib3QyJywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9LmdldChjb25maWd1cmF0aW9uLnZlcnNpb25fbmFtZSwg
Tm9uZSksCi0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBtb2RlbC51cGxvYWRfY29udGV4dC51cGxvYWRfdGVzdF9yZXN1bHRzKGNvbmZpZ3VyYXRpb24s
IGNvbW1pdHMsIHN1aXRlPSdsYXlvdXQtdGVzdHMnLCB0aW1lc3RhbXA9dGltZS50aW1lKCksIHRl
c3RfcmVzdWx0cz1yZXN1bHRzKQotICAgICAgICAgICAgICAgICAgICAgICAgY291bnRbMF0gKz0g
MQotCi0gICAgICAgICAgICAgICAgICAgIE1vY2tNb2RlbEZhY3RvcnkuaXRlcmF0ZV9hbGxfY29t
bWl0cyhtb2RlbCwgY2FsbGJhY2spCi0gICAgICAgICAgICAgICAgICAgIE1vY2tNb2RlbEZhY3Rv
cnkucHJvY2Vzc19yZXN1bHRzKG1vZGVsLCBjb25maWd1cmF0aW9uKQotCi0gICAgQFdhaXRGb3JE
b2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRp
cywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCi0gICAgQEZsYXNrVGVzdENh
c2UucnVuX3dpdGhfd2Vic2VydmVyKCkKLSAgICBkZWYgdGVzdF9hbGxfcXVldWVfbGlzdChzZWxm
LCBjbGllbnQsICoqa3dhcmdzKToKLSAgICAgICAgcmVzcG9uc2UgPSBjbGllbnQuZ2V0KHNlbGYu
VVJMICsgJy9hcGkvdXJscy9xdWV1ZScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9u
c2Uuc3RhdHVzX2NvZGUsIDIwMCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzcG9u
c2UuanNvbigpKSwgNCkKLQotICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19k
b2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNz
YW5kcmFDb250ZXh0KQotICAgIEBGbGFza1Rlc3RDYXNlLnJ1bl93aXRoX3dlYnNlcnZlcigpCi0g
ICAgZGVmIHRlc3Rfc2luZ2xlX3F1ZXVlX2xpc3Qoc2VsZiwgY2xpZW50LCAqKmt3YXJncyk6Ci0g
ICAgICAgIHJlc3BvbnNlID0gY2xpZW50LmdldChzZWxmLlVSTCArICcvYXBpL3VybHMvcXVldWU/
dmVyc2lvbl9uYW1lPUNhdGFsaW5hJmZsYXZvcj13azInKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHJlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
cmVzcG9uc2UuanNvbigpLCBbCi0gICAgICAgICAgICBkaWN0KAotICAgICAgICAgICAgICAgIGNv
bmZpZ3VyYXRpb249ZGljdCgKLSAgICAgICAgICAgICAgICAgICAgaXNfc2ltdWxhdG9yPUZhbHNl
LCBwbGF0Zm9ybT0nTWFjJywKLSAgICAgICAgICAgICAgICAgICAgYXJjaGl0ZWN0dXJlPSd4ODZf
NjQnLCBzdHlsZT0nUmVsZWFzZScsIGZsYXZvcj0nd2syJywKLSAgICAgICAgICAgICAgICAgICAg
c2RrPScxOUE1MDAnLCBzdWl0ZT0nbGF5b3V0LXRlc3RzJywgdmVyc2lvbj0xMDAxNTAwMCwgdmVy
c2lvbl9uYW1lPSdDYXRhbGluYScsCi0gICAgICAgICAgICAgICAgKSwKLSAgICAgICAgICAgICAg
ICBsaW5rPSdodHRwczovL2J1aWxkLndlYmtpdC5vcmcvIy9idWlsZGVycy81JywKLSAgICAgICAg
ICAgICldKQotCi0gICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlciht
b2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNv
bnRleHQpCi0gICAgQEZsYXNrVGVzdENhc2UucnVuX3dpdGhfd2Vic2VydmVyKCkKLSAgICBkZWYg
dGVzdF9hbGxfYnVpbGRzX2xpc3Qoc2VsZiwgY2xpZW50LCAqKmt3YXJncyk6Ci0gICAgICAgIHJl
c3BvbnNlID0gY2xpZW50LmdldChzZWxmLlVSTCArICcvYXBpL3VybHMnKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHJlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwobGVuKHJlc3BvbnNlLmpzb24oKSksIDQpCi0gICAgICAgIGZvciBkYXRhIGluIHJl
c3BvbnNlLmpzb24oKToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRhdGFbJ3Vy
bHMnXSksIDUpCi0KLSAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2Vy
KG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJh
Q29udGV4dCkKLSAgICBARmxhc2tUZXN0Q2FzZS5ydW5fd2l0aF93ZWJzZXJ2ZXIoKQotICAgIGRl
ZiB0ZXN0X3NpbmdsZV9xdWV1ZV9saXN0KHNlbGYsIGNsaWVudCwgKiprd2FyZ3MpOgotICAgICAg
ICByZXNwb25zZSA9IGNsaWVudC5nZXQoc2VsZi5VUkwgKyAnL2FwaS91cmxzP3ZlcnNpb25fbmFt
ZT1DYXRhbGluYSZmbGF2b3I9d2syJmlkPTIzNjU0MicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkKLSAgICAgICAgcHJpbnQocmVzcG9uc2UuanNv
bigpWzBdWyd1cmxzJ10pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2UuanNvbigp
WzBdWyd1cmxzJ11bMF1bJ2J1aWxkJ10sICdodHRwczovL2J1aWxkLndlYmtpdC5vcmcvIy9idWls
ZGVycy81L2J1aWxkcy8zJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5qc29u
KClbMF1bJ3VybHMnXVswXVsncXVldWUnXSwgJ2h0dHBzOi8vYnVpbGQud2Via2l0Lm9yZy8jL2J1
aWxkZXJzLzUnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLmpzb24oKVswXVsn
dXJscyddWzBdWyd3b3JrZXInXSwgJ2h0dHBzOi8vYnVpbGQud2Via2l0Lm9yZy8jL3dvcmtlcnMv
NCcpCi0KLSAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tf
cmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4
dCkKLSAgICBARmxhc2tUZXN0Q2FzZS5ydW5fd2l0aF93ZWJzZXJ2ZXIoKQotICAgIGRlZiB0ZXN0
X2FsbF9idWlsZHNfbGlzdF9ieV90aW1lKHNlbGYsIGNsaWVudCwgKiprd2FyZ3MpOgotICAgICAg
ICByZXNwb25zZSA9IGNsaWVudC5nZXQoc2VsZi5VUkwgKyBmJy9hcGkvdXJscz9hZnRlcl90aW1l
PXt0aW1lLnRpbWUoKSAtIDJ9JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5z
dGF0dXNfY29kZSwgMjAwKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZXNwb25zZS5q
c29uKCkpLCA0KQotICAgICAgICBmb3IgZGF0YSBpbiByZXNwb25zZS5qc29uKCk6Ci0gICAgICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhWyd1cmxzJ10pLCA1KQotCi0gICAgQFdhaXRG
b3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RS
ZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCi0gICAgQEZsYXNrVGVz
dENhc2UucnVuX3dpdGhfd2Vic2VydmVyKCkKLSAgICBkZWYgdGVzdF9ub19idWlsZHNfbGlzdF9i
eV90aW1lKHNlbGYsIGNsaWVudCwgKiprd2FyZ3MpOgotICAgICAgICByZXNwb25zZSA9IGNsaWVu
dC5nZXQoc2VsZi5VUkwgKyBmJy9hcGkvdXJscz9hZnRlcl90aW1lPXt0aW1lLnRpbWUoKSArIDJ9
JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZXNwb25zZS5qc29uKCkpLCAwKQpJbmRleDog
VG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci9jb21taXQucHkKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci9jb21taXQu
cHkJKHJldmlzaW9uIDI2NTUzMSkKKysrIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2Nv
bnRyb2xsZXIvY29tbWl0LnB5CShub25leGlzdGVudCkKQEAgLTEsMTI3ICswLDAgQEAKLSMgQ29w
eXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwot
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgIkFTIElTIiBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQotIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUgotIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SCi0jIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0jIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0jIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLWltcG9ydCBjYWxlbmRhcgotaW1wb3J0
IGpzb24KLWltcG9ydCByZQotCi1mcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRldGltZQotZnJvbSBy
ZXN1bHRzZGJweS5mbGFza19zdXBwb3J0LnV0aWwgaW1wb3J0IEZsYXNrSlNPTkVuY29kZXIKLQot
Ci1jbGFzcyBDb21taXQob2JqZWN0KToKLSAgICBUSU1FU1RBTVBfVE9fVVVJRF9NVUxUSVBMSUVS
ID0gMTAwCi0gICAgTUFYX0tFWV9MRU5HVEggPSAxMjgKLQotICAgIEBjbGFzc21ldGhvZAotICAg
IGRlZiBmcm9tX2pzb24oY2xzLCBkYXRhKToKLSAgICAgICAgZGF0YSA9IGRhdGEgaWYgaXNpbnN0
YW5jZShkYXRhLCBkaWN0KSBlbHNlIGpzb24ubG9hZHMoZGF0YSkKLSAgICAgICAgcmV0dXJuIGNs
cygKLSAgICAgICAgICAgIHJlcG9zaXRvcnlfaWQ9ZGF0YS5nZXQoJ3JlcG9zaXRvcnlfaWQnKSwK
LSAgICAgICAgICAgIGJyYW5jaD1kYXRhLmdldCgnYnJhbmNoJyksCi0gICAgICAgICAgICBpZD1k
YXRhLmdldCgnaWQnKSwKLSAgICAgICAgICAgIHRpbWVzdGFtcD1kYXRhLmdldCgndGltZXN0YW1w
JyksCi0gICAgICAgICAgICBvcmRlcj1kYXRhLmdldCgnb3JkZXInKSwKLSAgICAgICAgICAgIGNv
bW1pdHRlcj1kYXRhLmdldCgnY29tbWl0dGVyJyksCi0gICAgICAgICAgICBtZXNzYWdlPWRhdGEu
Z2V0KCdtZXNzYWdlJyksCi0gICAgICAgICkKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZXBv
c2l0b3J5X2lkLCBicmFuY2gsIGlkLCB0aW1lc3RhbXA9Tm9uZSwgb3JkZXI9Tm9uZSwgY29tbWl0
dGVyPU5vbmUsIG1lc3NhZ2U9Tm9uZSk6Ci0gICAgICAgIGZvciBhcmd1bWVudCBpbiBbKCdyZXBv
c2l0b3J5X2lkJywgcmVwb3NpdG9yeV9pZCksICgnYnJhbmNoJywgYnJhbmNoKSwgKCdpZCcsIGlk
KSwgKCd0aW1lc3RhbXAnLCB0aW1lc3RhbXApXToKLSAgICAgICAgICAgIGlmIGFyZ3VtZW50WzFd
IGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihmJ3thcmd1bWVudFsw
XX0gaXMgbm90IGRlZmluZWQgZm9yIGNvbW1pdCcpCi0KLSAgICAgICAgc2VsZi5yZXBvc2l0b3J5
X2lkID0gc3RyKHJlcG9zaXRvcnlfaWQpCi0gICAgICAgIGlmIG5vdCByZS5tYXRjaChyJ15bYS16
QS1aP10rJCcsIHNlbGYucmVwb3NpdG9yeV9pZCkgb3IgbGVuKHNlbGYucmVwb3NpdG9yeV9pZCkg
PiBzZWxmLk1BWF9LRVlfTEVOR1RIOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihmIid7
c2VsZi5yZXBvc2l0b3J5X2lkfScgaXMgYW4gaW52YWxpZCByZXBvc2l0b3J5IGlkIikKLQotICAg
ICAgICBzZWxmLmJyYW5jaCA9IHN0cihicmFuY2gpCi0gICAgICAgIGlmIG5vdCByZS5tYXRjaChy
J15bYS16QS1aMC05LS4/L10rJCcsIHNlbGYuYnJhbmNoKSBvciBsZW4oc2VsZi5icmFuY2gpID4g
c2VsZi5NQVhfS0VZX0xFTkdUSDoKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoZiIne3Nl
bGYuYnJhbmNofScgaXMgYW4gaW52YWxpZCBicmFuY2ggbmFtZSIpCi0KLSAgICAgICAgIyBBbiBp
ZCBpcyBlaXRoZXIgYSBnaXQgY29tbWl0IG9yIFNWTiByZXZpc2lvbi4KLSAgICAgICAgc2VsZi5p
ZCA9IHN0cihpZCkKLSAgICAgICAgaWYgbm90IHJlLm1hdGNoKHInXlthLWZBLUYwLTk/XSskJywg
c2VsZi5pZCkgb3IgbGVuKHNlbGYuaWQpID4gNDA6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVy
cm9yKGYiJ3tzZWxmLmlkfScgaXMgYW4gaW52YWxpZCBjb21taXQgaWQiKQotCi0gICAgICAgIGlm
IGlzaW5zdGFuY2UodGltZXN0YW1wLCBkYXRldGltZSk6Ci0gICAgICAgICAgICBzZWxmLnRpbWVz
dGFtcCA9IHRpbWVzdGFtcAotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi50aW1lc3Rh
bXAgPSBkYXRldGltZS51dGNmcm9tdGltZXN0YW1wKGludCh0aW1lc3RhbXApKQotICAgICAgICBz
ZWxmLm9yZGVyID0gaW50KG9yZGVyKSBpZiBvcmRlciBlbHNlIDAKLQotICAgICAgICBzZWxmLmNv
bW1pdHRlciA9IGNvbW1pdHRlciBpZiBjb21taXR0ZXIgZWxzZSBOb25lCi0gICAgICAgIHNlbGYu
bWVzc2FnZSA9IG1lc3NhZ2UgaWYgbWVzc2FnZSBlbHNlIE5vbmUKLQotICAgIGRlZiB0aW1lc3Rh
bXBfYXNfZXBvY2goc2VsZik6Ci0gICAgICAgIHJldHVybiBjYWxlbmRhci50aW1lZ20oc2VsZi50
aW1lc3RhbXAudGltZXR1cGxlKCkpCi0KLSAgICBAcHJvcGVydHkKLSAgICBkZWYgdXVpZChzZWxm
KToKLSAgICAgICAgIyBSZWJhc2UtYmFzZWQgd29ya2Zsb3dzIGluIGdpdCBjYW4gY2F1c2UgY29t
bWl0cyB0byBoYXZlIHRoZSBzYW1lIGNvbW1pdCB0aW1lc3RhbXAuIFRvIHVuaXF1ZWx5IHJlY29n
bml6ZSB0aGVtLAotICAgICAgICAjIG11bHRpcGx5IGVhY2ggdGltZXN0YW1wIGJ5IHRoZSBgVElN
RVNUQU1QX1RPX1VVSURfTVVMVElQTElFUmAuCi0gICAgICAgIHJldHVybiBzZWxmLnRpbWVzdGFt
cF9hc19lcG9jaCgpICogc2VsZi5USU1FU1RBTVBfVE9fVVVJRF9NVUxUSVBMSUVSICsgc2VsZi5v
cmRlcgotCi0gICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6Ci0gICAgICAgIHJldHVybiAoaXNp
bnN0YW5jZShvdGhlciwgdHlwZShzZWxmKSkgYW5kIChzZWxmLnJlcG9zaXRvcnlfaWQsIHNlbGYu
YnJhbmNoLCBzZWxmLmlkKSA9PSAob3RoZXIucmVwb3NpdG9yeV9pZCwgb3RoZXIuYnJhbmNoLCBv
dGhlci5pZCkpCi0KLSAgICBkZWYgX19uZV9fKHNlbGYsIG90aGVyKToKLSAgICAgICAgcmV0dXJu
IG5vdCAoc2VsZiA9PSBvdGhlcikKLQotICAgIGRlZiBfX2x0X18oc2VsZiwgb3RoZXIpOgotICAg
ICAgICBpZiBzZWxmLnRpbWVzdGFtcCA8IG90aGVyLnRpbWVzdGFtcDoKLSAgICAgICAgICAgIHJl
dHVybiBUcnVlCi0gICAgICAgIGlmIHNlbGYudGltZXN0YW1wID4gb3RoZXIudGltZXN0YW1wOgot
ICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgIHJldHVybiBzZWxmLm9yZGVyIDwgb3Ro
ZXIub3JkZXIKLQotICAgIGRlZiBfX2xlX18oc2VsZiwgb3RoZXIpOgotICAgICAgICByZXR1cm4g
c2VsZiA8IG90aGVyIG9yIHNlbGYgPT0gb3RoZXIKLQotICAgIGRlZiBfX2d0X18oc2VsZiwgb3Ro
ZXIpOgotICAgICAgICBpZiBzZWxmLnRpbWVzdGFtcCA+IG90aGVyLnRpbWVzdGFtcDoKLSAgICAg
ICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgIGlmIHNlbGYudGltZXN0YW1wIDwgb3RoZXIudGlt
ZXN0YW1wOgotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgIHJldHVybiBzZWxmLm9y
ZGVyID4gb3RoZXIub3JkZXIKLQotICAgIGRlZiBfX2dlX18oc2VsZiwgb3RoZXIpOgotICAgICAg
ICByZXR1cm4gc2VsZiA+IG90aGVyIG9yIHNlbGYgPT0gb3RoZXIKLQotICAgIGRlZiBfX2hhc2hf
XyhzZWxmKToKLSAgICAgICAgcmV0dXJuIGhhc2goc2VsZi5yZXBvc2l0b3J5X2lkKSBeIGhhc2go
c2VsZi5icmFuY2gpIF4gaGFzaChzZWxmLmlkKQotCi0gICAgZGVmIHRvX2pzb24oc2VsZiwgcHJl
dHR5X3ByaW50PUZhbHNlKToKLSAgICAgICAgcmV0dXJuIGpzb24uZHVtcHMoc2VsZiwgY2xzPXNl
bGYuRW5jb2Rlciwgc29ydF9rZXlzPXByZXR0eV9wcmludCwgaW5kZW50PTQgaWYgcHJldHR5X3By
aW50IGVsc2UgTm9uZSkKLQotICAgIGNsYXNzIEVuY29kZXIoRmxhc2tKU09ORW5jb2Rlcik6Ci0K
LSAgICAgICAgZGVmIGRlZmF1bHQoc2VsZiwgb2JqKToKLSAgICAgICAgICAgIGlmIGlzaW5zdGFu
Y2Uob2JqLCBDb21taXQpOgotICAgICAgICAgICAgICAgIHJlc3VsdCA9IHt9Ci0gICAgICAgICAg
ICAgICAgZm9yIGtleSwgdmFsdWUgaW4gb2JqLl9fZGljdF9fLml0ZW1zKCk6Ci0gICAgICAgICAg
ICAgICAgICAgIGlmIHZhbHVlIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb250
aW51ZQotICAgICAgICAgICAgICAgICAgICByZXN1bHRba2V5XSA9IHZhbHVlCi0gICAgICAgICAg
ICAgICAgcmVzdWx0Wyd0aW1lc3RhbXAnXSA9IG9iai50aW1lc3RhbXBfYXNfZXBvY2goKQotICAg
ICAgICAgICAgICAgIHJldHVybiByZXN1bHQKLSAgICAgICAgICAgIHJldHVybiBzdXBlcihDb21t
aXQuRW5jb2Rlciwgc2VsZikuZGVmYXVsdChvYmopCkluZGV4OiBUb29scy9yZXN1bHRzZGJweS9y
ZXN1bHRzZGJweS9jb250cm9sbGVyL2NvbW1pdF9jb250cm9sbGVyLnB5Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvY29tbWl0X2NvbnRyb2xs
ZXIucHkJKHJldmlzaW9uIDI2NTUzMSkKKysrIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5
L2NvbnRyb2xsZXIvY29tbWl0X2NvbnRyb2xsZXIucHkJKG5vbmV4aXN0ZW50KQpAQCAtMSwzMDcg
KzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAot
IyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0jIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IKLSMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSMgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwKLSMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotaW1wb3J0IGpz
b24KLQotZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVmYXVsdGRpY3QKLWZyb20gZmxhc2sgaW1w
b3J0IGFib3J0LCBqc29uaWZ5LCByZXF1ZXN0Ci1mcm9tIHJlc3VsdHNkYnB5LmZsYXNrX3N1cHBv
cnQudXRpbCBpbXBvcnQgQXNzZXJ0UmVxdWVzdCwgcXVlcnlfYXNfa3dhcmdzLCBsaW1pdF9mb3Jf
cXVlcnkKLWZyb20gcmVzdWx0c2RicHkubW9kZWwucmVwb3NpdG9yeSBpbXBvcnQgU0NNRXhjZXB0
aW9uCi1mcm9tIHJlc3VsdHNkYnB5LmNvbnRyb2xsZXIuY29tbWl0IGltcG9ydCBDb21taXQKLQot
Ci1kZWYgX2ZpbmRfY29tcGFyaXNvbihjb21taXRfY29udGV4dCwgcmVwb3NpdG9yeV9pZCwgYnJh
bmNoLCBpZCwgdXVpZCwgdGltZXN0YW1wLCBwcmlvcml0eT1taW4pOgotICAgIGlmIGJvb2woaWQp
ICsgYm9vbCh1dWlkKSArIGJvb2wodGltZXN0YW1wKSA+IDE6Ci0gICAgICAgIGFib3J0KDQwMCwg
ZGVzY3JpcHRpb249J0NhbiBvbmx5IHNlYXJjaCBieSBvbmUgb2YgW2NvbW1pdCBpZCwgY29tbWl0
IHV1aWQsIHRpbWVzdGFtcF0gaW4gYSBzaW5nbGUgcmVxdWVzdCcpCi0KLSAgICB0cnk6Ci0gICAg
ICAgIGlmIHV1aWQ6Ci0gICAgICAgICAgICAjIFdlIGRvbid0IG5lZWQgcmVhbCBjb21taXQgdG8g
c2VhcmNoIGJ5IHV1aWQgYW5kIENvbW1pdENvbnRleHRzIGhhdmUgdHJvdWJsZSBkaWZmcmVudGlh
dGluZyBiZXR3ZWVuIHV1aWRzIGFuZCB0aW1lc3RhbXBzLgotICAgICAgICAgICAgdXVpZCA9IHBy
aW9yaXR5KFtpbnQoZWxlbWVudCkgZm9yIGVsZW1lbnQgaW4gdXVpZF0pCi0gICAgICAgICAgICBy
ZXR1cm4gQ29tbWl0KCc/JywgJz8nLCAnPycsIHV1aWQgLy8gQ29tbWl0LlRJTUVTVEFNUF9UT19V
VUlEX01VTFRJUExJRVIsIHV1aWQgJSBDb21taXQuVElNRVNUQU1QX1RPX1VVSURfTVVMVElQTElF
UikKLSAgICAgICAgaWYgdGltZXN0YW1wOgotICAgICAgICAgICAgcmV0dXJuIHByaW9yaXR5KFty
b3VuZChmbG9hdChlbGVtZW50KSkgZm9yIGVsZW1lbnQgaW4gdGltZXN0YW1wXSkKLSAgICBleGNl
cHQgVmFsdWVFcnJvcjoKLSAgICAgICAgYWJvcnQoNDAwLCBkZXNjcmlwdGlvbj0nVGltZXN0YW1w
IGFuZCB1dWlkIG11c3QgYmUgaW50ZWdlcnMnKQotCi0gICAgaWYgbm90IHJlcG9zaXRvcnlfaWQg
YW5kIG5vdCBpZDoKLSAgICAgICAgcmV0dXJuIE5vbmUKLSAgICBpZiBub3QgcmVwb3NpdG9yeV9p
ZDoKLSAgICAgICAgcmVwb3NpdG9yeV9pZCA9IGNvbW1pdF9jb250ZXh0LnJlcG9zaXRvcmllcy5r
ZXlzKCkKLSAgICBmb3IgcmVwb3NpdG9yeSBpbiByZXBvc2l0b3J5X2lkOgotICAgICAgICBpZiBy
ZXBvc2l0b3J5IG5vdCBpbiBjb21taXRfY29udGV4dC5yZXBvc2l0b3JpZXMua2V5cygpOgotICAg
ICAgICAgICAgYWJvcnQoNDA0LCBkZXNjcmlwdGlvbj1mIlwne3JlcG9zaXRvcnl9XCcgaXMgbm90
IGEgcmVnaXN0ZXJlZCByZXBvc2l0b3J5IikKLQotICAgIHJlc3VsdCA9IFtdCi0gICAgZm9yIHJl
cG9zaXRvcnkgaW4gcmVwb3NpdG9yeV9pZDoKLSAgICAgICAgZm9yIGIgaW4gYnJhbmNoOgotICAg
ICAgICAgICAgaWYgaWQ6Ci0gICAgICAgICAgICAgICAgZm9yIGVsbSBpbiBpZDoKLSAgICAgICAg
ICAgICAgICAgICAgcmVzdWx0ICs9IGNvbW1pdF9jb250ZXh0LmZpbmRfY29tbWl0c19ieV9pZChy
ZXBvc2l0b3J5LCBiLCBlbG0pCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJl
c3VsdCArPSBjb21taXRfY29udGV4dC5maW5kX2NvbW1pdHNfaW5fcmFuZ2UocmVwb3NpdG9yeSwg
YiwgbGltaXQ9MSkKLQotICAgIGlmIG5vdCByZXN1bHQ6Ci0gICAgICAgIGFib3J0KDQwNCwgZGVz
Y3JpcHRpb249J05vIGNvbW1pdHMgZm91bmQgbWF0Y2hpbmcgdGhlIHNwZWNpZmllZCBjcml0ZXJp
YScpCi0gICAgcmV0dXJuIHByaW9yaXR5KHJlc3VsdCkKLQotCi1kZWYgdXVpZF9yYW5nZV9mb3Jf
Y29tbWl0X3JhbmdlX3F1ZXJ5KCk6Ci0gICAgZGVmIGRlY29yYXRvcihtZXRob2QpOgotICAgICAg
ICBkZWYgcmVhbF9tZXRob2Qob2JqLCBicmFuY2g9Tm9uZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGFmdGVyX3JlcG9zaXRvcnlfaWQ9Tm9uZSwgYWZ0ZXJfYnJhbmNoPU5vbmUsIGFmdGVyX2lk
PU5vbmUsIGFmdGVyX3V1aWQ9Tm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGFmdGVyX3Rp
bWVzdGFtcD1Ob25lLAotICAgICAgICAgICAgICAgICAgICAgICAgYmVmb3JlX3JlcG9zaXRvcnlf
aWQ9Tm9uZSwgYmVmb3JlX2JyYW5jaD1Ob25lLCBiZWZvcmVfaWQ9Tm9uZSwgYmVmb3JlX3V1aWQ9
Tm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGJlZm9yZV90aW1lc3RhbXA9Tm9uZSwgKipr
d2FyZ3MpOgotICAgICAgICAgICAgIyBXZSdyZSBtYWtpbmcgYW4gYXN1bXB0aW9uIHRoYXQgdGhl
IGNsYXNzIHVzaW5nIHRoaXMgZGVjb3JhdG9yIGFjdHVhbGx5IGhhcyBhIGNvbW1pdF9jb250ZXh0
LCBpZiBpdCBkb2VzIG5vdCwKLSAgICAgICAgICAgICMgdGhpcyBkZWNvcmF0b3Igd2lsbCBmYWls
IHNwZWN0YWN1bGFybHkKLSAgICAgICAgICAgIHdpdGggb2JqLmNvbW1pdF9jb250ZXh0OgotICAg
ICAgICAgICAgICAgIGlmIG5vdCBicmFuY2g6Ci0gICAgICAgICAgICAgICAgICAgIGJyYW5jaCA9
IFtOb25lXQotICAgICAgICAgICAgICAgIGJlZ2luID0gX2ZpbmRfY29tcGFyaXNvbigKLSAgICAg
ICAgICAgICAgICAgICAgb2JqLmNvbW1pdF9jb250ZXh0LCByZXBvc2l0b3J5X2lkPWFmdGVyX3Jl
cG9zaXRvcnlfaWQsIGJyYW5jaD1hZnRlcl9icmFuY2ggb3IgYnJhbmNoLAotICAgICAgICAgICAg
ICAgICAgICBpZD1hZnRlcl9pZCwgdXVpZD1hZnRlcl91dWlkLCB0aW1lc3RhbXA9YWZ0ZXJfdGlt
ZXN0YW1wLCBwcmlvcml0eT1taW4sCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgICAg
IGVuZCA9IF9maW5kX2NvbXBhcmlzb24oCi0gICAgICAgICAgICAgICAgICAgIG9iai5jb21taXRf
Y29udGV4dCwgcmVwb3NpdG9yeV9pZD1iZWZvcmVfcmVwb3NpdG9yeV9pZCwgYnJhbmNoPWJlZm9y
ZV9icmFuY2ggb3IgYnJhbmNoLAotICAgICAgICAgICAgICAgICAgICBpZD1iZWZvcmVfaWQsIHV1
aWQ9YmVmb3JlX3V1aWQsIHRpbWVzdGFtcD1iZWZvcmVfdGltZXN0YW1wLCBwcmlvcml0eT1tYXgs
Ci0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgICAgIHJldHVybiBtZXRob2Qob2JqLCBi
ZWdpbj1iZWdpbiwgZW5kPWVuZCwgYnJhbmNoPWJyYW5jaCwgKiprd2FyZ3MpCi0KLSAgICAgICAg
cmVhbF9tZXRob2QuX19uYW1lX18gPSBtZXRob2QuX19uYW1lX18KLSAgICAgICAgcmV0dXJuIHJl
YWxfbWV0aG9kCi0KLSAgICByZXR1cm4gZGVjb3JhdG9yCi0KLQotZGVmIHV1aWRfcmFuZ2VfZm9y
X3F1ZXJ5KCk6Ci0gICAgZGVmIGRlY29yYXRvcihtZXRob2QpOgotICAgICAgICBAdXVpZF9yYW5n
ZV9mb3JfY29tbWl0X3JhbmdlX3F1ZXJ5KCkKLSAgICAgICAgZGVmIHJlYWxfbWV0aG9kKG9iaiwg
cmVwb3NpdG9yeV9pZD1Ob25lLCBicmFuY2g9Tm9uZSwgaWQ9Tm9uZSwgdXVpZD1Ob25lLCB0aW1l
c3RhbXA9Tm9uZSwgYmVnaW49Tm9uZSwgZW5kPU5vbmUsICoqa3dhcmdzKToKLSAgICAgICAgICAg
ICMgV2UncmUgbWFraW5nIGFuIGFzdW1wdGlvbiB0aGF0IHRoZSBjbGFzcyB1c2luZyB0aGlzIGRl
Y29yYXRvciBhY3R1YWxseSBoYXMgYSBjb21taXRfY29udGV4dCwgaWYgaXQgZG9lcyBub3QsCi0g
ICAgICAgICAgICAjIHRoaXMgZGVjb3JhdG9yIHdpbGwgZmFpbCBzcGVjdGFjdWxhcmx5Ci0gICAg
ICAgICAgICB3aXRoIG9iai5jb21taXRfY29udGV4dDoKLSAgICAgICAgICAgICAgICBpbmRleCA9
IF9maW5kX2NvbXBhcmlzb24oCi0gICAgICAgICAgICAgICAgICAgIG9iai5jb21taXRfY29udGV4
dCwgcmVwb3NpdG9yeV9pZD1yZXBvc2l0b3J5X2lkLCBicmFuY2g9YnJhbmNoLAotICAgICAgICAg
ICAgICAgICAgICBpZD1pZCwgdXVpZD11dWlkLCB0aW1lc3RhbXA9dGltZXN0YW1wLCBwcmlvcml0
eT1tYXgsCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgICAgIGlmIGluZGV4OgotICAg
ICAgICAgICAgICAgICAgICBpZiBiZWdpbiBvciBlbmQ6Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBhYm9ydCg0MDAsIGRlc2NyaXB0aW9uPSdDYW5ub3QgZGVmaW5lIGNvbW1pdCBhbmQgcmFuZ2Ug
d2hlbiBzZWFyY2hpbmcnKQotICAgICAgICAgICAgICAgICAgICBiZWdpbiA9IGluZGV4Ci0gICAg
ICAgICAgICAgICAgICAgIGVuZCA9IGluZGV4Ci0KLSAgICAgICAgICAgICAgICBpZiBpc2luc3Rh
bmNlKGVuZCwgQ29tbWl0KSBhbmQgZW5kLnJlcG9zaXRvcnlfaWQgIT0gJz8nOgotICAgICAgICAg
ICAgICAgICAgICByZXBvc2l0b3JpZXMgPSBsaXN0KG9iai5jb21taXRfY29udGV4dC5yZXBvc2l0
b3JpZXMua2V5cygpKQotICAgICAgICAgICAgICAgICAgICByZXBvc2l0b3JpZXMucmVtb3ZlKGVu
ZC5yZXBvc2l0b3J5X2lkKQotICAgICAgICAgICAgICAgICAgICBjb21taXRzID0gW2VuZF0KLSAg
ICAgICAgICAgICAgICAgICAgW2NvbW1pdHMuZXh0ZW5kKHNpYmxpbmdzKSBmb3Igc2libGluZ3Mg
aW4gb2JqLmNvbW1pdF9jb250ZXh0LnNpYmxpbmdfY29tbWl0cyhlbmQsIHJlcG9zaXRvcmllcyku
dmFsdWVzKCldCi0gICAgICAgICAgICAgICAgICAgIGVuZCA9IG1heChjb21taXRzKQotCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIG1ldGhvZChvYmosIGJyYW5jaD1icmFuY2gsIGJlZ2luPWJlZ2lu
LCBlbmQ9ZW5kLCAqKmt3YXJncykKLQotICAgICAgICByZWFsX21ldGhvZC5fX25hbWVfXyA9IG1l
dGhvZC5fX25hbWVfXwotICAgICAgICByZXR1cm4gcmVhbF9tZXRob2QKLQotICAgIHJldHVybiBk
ZWNvcmF0b3IKLQotCi1jbGFzcyBIYXNDb21taXRDb250ZXh0KG9iamVjdCk6Ci0gICAgZGVmIF9f
aW5pdF9fKHNlbGYsIGNvbW1pdF9jb250ZXh0KToKLSAgICAgICAgc2VsZi5jb21taXRfY29udGV4
dCA9IGNvbW1pdF9jb250ZXh0Ci0KLQotY2xhc3MgQ29tbWl0Q29udHJvbGxlcihIYXNDb21taXRD
b250ZXh0KToKLSAgICBERUZBVUxUX0xJTUlUID0gMTAwCi0KLSAgICBkZWYgZGVmYXVsdChzZWxm
KToKLSAgICAgICAgaWYgcmVxdWVzdC5tZXRob2QgPT0gJ1BPU1QnOgotICAgICAgICAgICAgcmV0
dXJuIHNlbGYucmVnaXN0ZXIoKQotICAgICAgICByZXR1cm4gc2VsZi5maW5kKCkKLQotICAgIEB1
dWlkX3JhbmdlX2Zvcl9jb21taXRfcmFuZ2VfcXVlcnkoKQotICAgIEBsaW1pdF9mb3JfcXVlcnko
REVGQVVMVF9MSU1JVCkKLSAgICBkZWYgX2ZpbmQoc2VsZiwgcmVwb3NpdG9yeV9pZD1Ob25lLCBi
cmFuY2g9Tm9uZSwgaWQ9Tm9uZSwgdXVpZD1Ob25lLCB0aW1lc3RhbXA9Tm9uZSwgbGltaXQ9Tm9u
ZSwgYmVnaW49Tm9uZSwgZW5kPU5vbmUsICoqa3dhcmdzKToKLSAgICAgICAgQXNzZXJ0UmVxdWVz
dC5xdWVyeV9rd2FyZ3NfZW1wdHkoKiprd2FyZ3MpCi0KLSAgICAgICAgd2l0aCBzZWxmLmNvbW1p
dF9jb250ZXh0OgotICAgICAgICAgICAgaWYgbm90IHJlcG9zaXRvcnlfaWQ6Ci0gICAgICAgICAg
ICAgICAgcmVwb3NpdG9yeV9pZCA9IHNlbGYuY29tbWl0X2NvbnRleHQucmVwb3NpdG9yaWVzLmtl
eXMoKQotICAgICAgICAgICAgZm9yIHJlcG9zaXRvcnkgaW4gcmVwb3NpdG9yeV9pZDoKLSAgICAg
ICAgICAgICAgICBpZiByZXBvc2l0b3J5IG5vdCBpbiBzZWxmLmNvbW1pdF9jb250ZXh0LnJlcG9z
aXRvcmllcy5rZXlzKCk6Ci0gICAgICAgICAgICAgICAgICAgIGFib3J0KDQwNCwgZGVzY3JpcHRp
b249ZiJcJ3tyZXBvc2l0b3J5fVwnIGlzIG5vdCBhIHJlZ2lzdGVyZWQgcmVwb3NpdG9yeSIpCi0g
ICAgICAgICAgICBpZiBub3QgYnJhbmNoOgotICAgICAgICAgICAgICAgIGJyYW5jaCA9IFtOb25l
XQotCi0gICAgICAgICAgICBpZiBib29sKGlkKSArIGJvb2wodXVpZCkgKyBib29sKHRpbWVzdGFt
cCkgPiAxOgotICAgICAgICAgICAgICAgIGFib3J0KDQwMCwgZGVzY3JpcHRpb249J0NhbiBvbmx5
IHNlYXJjaCBieSBvbmUgb2YgW2NvbW1pdCBpZCwgY29tbWl0IHV1aWQsIHRpbWVzdGFtcF0gaW4g
YSBzaW5nbGUgcmVxdWVzdCcpCi0KLSAgICAgICAgICAgIHJlc3VsdCA9IFtdCi0gICAgICAgICAg
ICBmb3IgcmVwb3NpdG9yeSBpbiByZXBvc2l0b3J5X2lkOgotICAgICAgICAgICAgICAgICMgTGlt
aXQgbWFrZXMgbW9zdCBzZW5zZSBvbiBhIHBlci1yZXBvc2l0b3J5IGJhc2lzCi0gICAgICAgICAg
ICAgICAgcmVzdWx0c19mb3JfcmVwbyA9IFtdCi0KLSAgICAgICAgICAgICAgICBmb3IgYiBpbiBi
cmFuY2g6Ci0gICAgICAgICAgICAgICAgICAgIGlmIGxlbihyZXN1bHRzX2Zvcl9yZXBvKSA+PSBs
aW1pdDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgICAgICAg
ICAgICAgaWYgaWQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBmb3IgZWxtIGluIGlkOgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHNfZm9yX3JlcG8gKz0gc2VsZi5jb21taXRf
Y29udGV4dC5maW5kX2NvbW1pdHNfYnlfaWQocmVwb3NpdG9yeSwgYiwgZWxtLCBsaW1pdD1saW1p
dCAtIGxlbihyZXN1bHRzX2Zvcl9yZXBvKSkKLSAgICAgICAgICAgICAgICAgICAgZWxpZiB1dWlk
OgotICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGVsbSBpbiB1dWlkOgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJlc3VsdHNfZm9yX3JlcG8gKz0gc2VsZi5jb21taXRfY29udGV4dC5m
aW5kX2NvbW1pdHNfYnlfdXVpZChyZXBvc2l0b3J5LCBiLCBpbnQoZWxtKSwgbGltaXQ9bGltaXQg
LSBsZW4ocmVzdWx0c19mb3JfcmVwbykpCi0gICAgICAgICAgICAgICAgICAgIGVsaWYgdGltZXN0
YW1wOgotICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGVsbSBpbiB0aW1lc3RhbXA6Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0c19mb3JfcmVwbyArPSBzZWxmLmNvbW1pdF9j
b250ZXh0LmZpbmRfY29tbWl0c19ieV90aW1lc3RhbXAocmVwb3NpdG9yeSwgYiwgcm91bmQoZmxv
YXQoZWxtKSksIGxpbWl0PWxpbWl0IC0gbGVuKHJlc3VsdHNfZm9yX3JlcG8pKQotICAgICAgICAg
ICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0c19mb3JfcmVw
byArPSBzZWxmLmNvbW1pdF9jb250ZXh0LmZpbmRfY29tbWl0c19pbl9yYW5nZShyZXBvc2l0b3J5
LCBiLCBsaW1pdD1saW1pdCAtIGxlbihyZXN1bHRzX2Zvcl9yZXBvKSwgYmVnaW49YmVnaW4sIGVu
ZD1lbmQpCi0gICAgICAgICAgICAgICAgcmVzdWx0ICs9IHJlc3VsdHNfZm9yX3JlcG8KLQotICAg
ICAgICAgICAgcmV0dXJuIHNvcnRlZChyZXN1bHQpCi0KLSAgICBkZWYgZmluZChzZWxmKToKLSAg
ICAgICAgQXNzZXJ0UmVxdWVzdC5pc190eXBlKCkKLSAgICAgICAgcmVzdWx0ID0gc2VsZi5fZmlu
ZCgqKnJlcXVlc3QuYXJncy50b19kaWN0KGZsYXQ9RmFsc2UpKQotICAgICAgICBpZiBub3QgcmVz
dWx0OgotICAgICAgICAgICAgYWJvcnQoNDA0LCBkZXNjcmlwdGlvbj0nTm8gY29tbWl0cyBmb3Vu
ZCBtYXRjaGluZyB0aGUgc3BlY2lmaWVkIGNyaXRlcmlhJykKLSAgICAgICAgcmV0dXJuIGpzb25p
ZnkoQ29tbWl0LkVuY29kZXIoKS5kZWZhdWx0KHJlc3VsdCkpCi0KLSAgICBkZWYgcmVwb3NpdG9y
aWVzKHNlbGYpOgotICAgICAgICBBc3NlcnRSZXF1ZXN0LmlzX3R5cGUoKQotICAgICAgICBBc3Nl
cnRSZXF1ZXN0Lm5vX3F1ZXJ5KCkKLSAgICAgICAgcmV0dXJuIGpzb25pZnkoc29ydGVkKHNlbGYu
Y29tbWl0X2NvbnRleHQucmVwb3NpdG9yaWVzLmtleXMoKSkpCi0KLSAgICBAcXVlcnlfYXNfa3dh
cmdzKCkKLSAgICBAbGltaXRfZm9yX3F1ZXJ5KERFRkFVTFRfTElNSVQpCi0gICAgZGVmIGJyYW5j
aGVzKHNlbGYsIHJlcG9zaXRvcnlfaWQ9Tm9uZSwgYnJhbmNoPU5vbmUsIGxpbWl0PU5vbmUsICoq
a3dhcmdzKToKLSAgICAgICAgQXNzZXJ0UmVxdWVzdC5pc190eXBlKCkKLSAgICAgICAgQXNzZXJ0
UmVxdWVzdC5xdWVyeV9rd2FyZ3NfZW1wdHkoKiprd2FyZ3MpCi0KLSAgICAgICAgcmVzdWx0ID0g
ZGVmYXVsdGRpY3QobGlzdCkKLSAgICAgICAgd2l0aCBzZWxmLmNvbW1pdF9jb250ZXh0OgotICAg
ICAgICAgICAgZm9yIHJlcG9zaXRvcnkgaW4gcmVwb3NpdG9yeV9pZCBvciBzZWxmLmNvbW1pdF9j
b250ZXh0LnJlcG9zaXRvcmllcy5rZXlzKCk6Ci0gICAgICAgICAgICAgICAgbGltaXRfZm9yX3Jl
cG8gPSBsaW1pdAotICAgICAgICAgICAgICAgIGZvciBiIGluIGJyYW5jaCBvciBbTm9uZV06Ci0g
ICAgICAgICAgICAgICAgICAgIGlmIG5vdCBsaW1pdF9mb3JfcmVwbzoKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgICAgIG1hdGNoaW5nX2JyYW5jaGVz
ID0gc2VsZi5jb21taXRfY29udGV4dC5icmFuY2hlcyhyZXBvc2l0b3J5LCBicmFuY2g9YiwgbGlt
aXQ9bGltaXRfZm9yX3JlcG8pCi0gICAgICAgICAgICAgICAgICAgIGlmIG5vdCBtYXRjaGluZ19i
cmFuY2hlczoKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAg
ICAgICAgIGxpbWl0X2Zvcl9yZXBvIC09IGxlbihtYXRjaGluZ19icmFuY2hlcykKLSAgICAgICAg
ICAgICAgICAgICAgcmVzdWx0W3JlcG9zaXRvcnldICs9IG1hdGNoaW5nX2JyYW5jaGVzCi0KLSAg
ICAgICAgcmV0dXJuIGpzb25pZnkocmVzdWx0KQotCi0gICAgQHF1ZXJ5X2FzX2t3YXJncygpCi0g
ICAgZGVmIHNpYmxpbmdzKHNlbGYsIGxpbWl0PU5vbmUsICoqa3dhcmdzKToKLSAgICAgICAgQXNz
ZXJ0UmVxdWVzdC5pc190eXBlKCkKLSAgICAgICAgQXNzZXJ0UmVxdWVzdC5xdWVyeV9rd2FyZ3Nf
ZW1wdHkobGltaXQ9bGltaXQpCi0KLSAgICAgICAgd2l0aCBzZWxmLmNvbW1pdF9jb250ZXh0Ogot
ICAgICAgICAgICAgY29tbWl0cyA9IHNlbGYuX2ZpbmQoKiprd2FyZ3MpCi0gICAgICAgICAgICBp
ZiBub3QgY29tbWl0czoKLSAgICAgICAgICAgICAgICBhYm9ydCg0MDQsIGRlc2NyaXB0aW9uPSdO
byBjb21taXRzIGZvdW5kIG1hdGNoaW5nIHRoZSBzcGVjaWZpZWQgY3JpdGVyaWEnKQotICAgICAg
ICAgICAgaWYgbGVuKGNvbW1pdHMpID4gMToKLSAgICAgICAgICAgICAgICBhYm9ydCg0MDQsIGRl
c2NyaXB0aW9uPWYne2xlbihjb21taXRzKX0gY29tbWl0cyBmb3VuZCBtYXRjaGluZyB0aGUgc3Bl
Y2lmaWVkIGNyaXRlcmlhJykKLQotICAgICAgICAgICAgcmVwb3NpdG9yaWVzID0gc29ydGVkKHNl
bGYuY29tbWl0X2NvbnRleHQucmVwb3NpdG9yaWVzLmtleXMoKSkKLSAgICAgICAgICAgIHJlcG9z
aXRvcmllcy5yZW1vdmUoY29tbWl0c1swXS5yZXBvc2l0b3J5X2lkKQotICAgICAgICAgICAgcmV0
dXJuIGpzb25pZnkoQ29tbWl0LkVuY29kZXIoKS5kZWZhdWx0KHNlbGYuY29tbWl0X2NvbnRleHQu
c2libGluZ19jb21taXRzKGNvbW1pdHNbMF0sIHJlcG9zaXRvcmllcykpKQotCi0gICAgQHF1ZXJ5
X2FzX2t3YXJncygpCi0gICAgZGVmIG5leHQoc2VsZiwgbGltaXQ9Tm9uZSwgKiprd2FyZ3MpOgot
ICAgICAgICBBc3NlcnRSZXF1ZXN0LmlzX3R5cGUoKQotICAgICAgICBBc3NlcnRSZXF1ZXN0LnF1
ZXJ5X2t3YXJnc19lbXB0eShsaW1pdD1saW1pdCkKLQotICAgICAgICB3aXRoIHNlbGYuY29tbWl0
X2NvbnRleHQ6Ci0gICAgICAgICAgICBjb21taXRzID0gc2VsZi5fZmluZCgqKmt3YXJncykKLSAg
ICAgICAgICAgIGlmIG5vdCBjb21taXRzOgotICAgICAgICAgICAgICAgIGFib3J0KDQwNCwgZGVz
Y3JpcHRpb249J05vIGNvbW1pdHMgZm91bmQgbWF0Y2hpbmcgdGhlIHNwZWNpZmllZCBjcml0ZXJp
YScpCi0gICAgICAgICAgICBpZiBsZW4oY29tbWl0cykgPiAxOgotICAgICAgICAgICAgICAgIGFi
b3J0KDQwNCwgZGVzY3JpcHRpb249Zid7bGVuKGNvbW1pdHMpfSBjb21taXRzIGZvdW5kIG1hdGNo
aW5nIHRoZSBzcGVjaWZpZWQgY3JpdGVyaWEnKQotCi0gICAgICAgICAgICBjb21taXQgPSBzZWxm
LmNvbW1pdF9jb250ZXh0Lm5leHRfY29tbWl0KGNvbW1pdHNbMF0pCi0gICAgICAgICAgICByZXR1
cm4ganNvbmlmeShDb21taXQuRW5jb2RlcigpLmRlZmF1bHQoW2NvbW1pdF0gaWYgY29tbWl0IGVs
c2UgW10pKQotCi0gICAgQHF1ZXJ5X2FzX2t3YXJncygpCi0gICAgZGVmIHByZXZpb3VzKHNlbGYs
IGxpbWl0PU5vbmUsICoqa3dhcmdzKToKLSAgICAgICAgQXNzZXJ0UmVxdWVzdC5pc190eXBlKCkK
LSAgICAgICAgQXNzZXJ0UmVxdWVzdC5xdWVyeV9rd2FyZ3NfZW1wdHkobGltaXQ9bGltaXQpCi0K
LSAgICAgICAgd2l0aCBzZWxmLmNvbW1pdF9jb250ZXh0OgotICAgICAgICAgICAgY29tbWl0cyA9
IHNlbGYuX2ZpbmQoKiprd2FyZ3MpCi0gICAgICAgICAgICBpZiBub3QgY29tbWl0czoKLSAgICAg
ICAgICAgICAgICBhYm9ydCg0MDQsIGRlc2NyaXB0aW9uPSdObyBjb21taXRzIGZvdW5kIG1hdGNo
aW5nIHRoZSBzcGVjaWZpZWQgY3JpdGVyaWEnKQotICAgICAgICAgICAgaWYgbGVuKGNvbW1pdHMp
ID4gMToKLSAgICAgICAgICAgICAgICBhYm9ydCg0MDQsIGRlc2NyaXB0aW9uPWYne2xlbihjb21t
aXRzKX0gY29tbWl0cyBmb3VuZCBtYXRjaGluZyB0aGUgc3BlY2lmaWVkIGNyaXRlcmlhJykKLQot
ICAgICAgICAgICAgY29tbWl0ID0gc2VsZi5jb21taXRfY29udGV4dC5wcmV2aW91c19jb21taXQo
Y29tbWl0c1swXSkKLSAgICAgICAgICAgIHJldHVybiBqc29uaWZ5KENvbW1pdC5FbmNvZGVyKCku
ZGVmYXVsdChbY29tbWl0XSBpZiBjb21taXQgZWxzZSBbXSkpCi0KLSAgICBkZWYgcmVnaXN0ZXIo
c2VsZiwgY29tbWl0PU5vbmUpOgotICAgICAgICBpc19lbmRwb2ludCA9IG5vdCBib29sKGNvbW1p
dCkKLSAgICAgICAgaWYgaXNfZW5kcG9pbnQ6Ci0gICAgICAgICAgICBBc3NlcnRSZXF1ZXN0Lmlz
X3R5cGUoWydQT1NUJ10pCi0gICAgICAgICAgICBBc3NlcnRSZXF1ZXN0Lm5vX3F1ZXJ5KCkKLQot
ICAgICAgICBpZiBpc19lbmRwb2ludDoKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAg
ICBjb21taXQgPSByZXF1ZXN0LmZvcm0gb3IganNvbi5sb2FkcyhyZXF1ZXN0LmdldF9kYXRhKCkp
Ci0gICAgICAgICAgICAgICAgaWYgJ2FwaV9rZXknIGluIGNvbW1pdDoKLSAgICAgICAgICAgICAg
ICAgICAgZGVsIGNvbW1pdFsnYXBpX2tleSddCi0gICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJv
cjoKLSAgICAgICAgICAgICAgICBhYm9ydCg0MDAsIGRlc2NyaXB0aW9uPSdFeHBlY3RlZCB1cGxv
YWRlZCBkYXRhIHRvIGJlIGpzb24nKQotCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYu
Y29tbWl0X2NvbnRleHQucmVnaXN0ZXJfY29tbWl0KENvbW1pdC5mcm9tX2pzb24oY29tbWl0KSkK
LSAgICAgICAgICAgIGlmIGlzX2VuZHBvaW50OgotICAgICAgICAgICAgICAgIHJldHVybiBqc29u
aWZ5KHsnc3RhdHVzJzogJ29rJ30pCi0gICAgICAgICAgICByZXR1cm4gQ29tbWl0LmZyb21fanNv
bihjb21taXQpCi0gICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgotICAgICAgICAgICAgcGFzcwot
Ci0gICAgICAgIHJlcXVpcmVkX2FyZ3MgPSBbJ3JlcG9zaXRvcnlfaWQnLCAnaWQnXQotICAgICAg
ICBvcHRpb25hbF9hcmdzID0gWydicmFuY2gnXQotICAgICAgICBmb3IgYXJnIGluIHJlcXVpcmVk
X2FyZ3M6Ci0gICAgICAgICAgICBpZiBhcmcgbm90IGluIGNvbW1pdDoKLSAgICAgICAgICAgICAg
ICBhYm9ydCg0MDAsIGRlc2NyaXB0aW9uPWYiJ3thcmd9JyByZXF1aXJlZCB0byBkZWZpbmUgY29t
bWl0IikKLQotICAgICAgICBmb3IgYXJnIGluIGNvbW1pdC5rZXlzKCk6Ci0gICAgICAgICAgICBp
ZiBhcmcgaW4gcmVxdWlyZWRfYXJncyArIG9wdGlvbmFsX2FyZ3M6Ci0gICAgICAgICAgICAgICAg
Y29udGludWUKLSAgICAgICAgICAgIGlmIGFyZyBpbiBbJ3RpbWVzdGFtcCcsICdvcmRlcicsICdj
b21taXR0ZXInLCAnbWVzc2FnZSddOgotICAgICAgICAgICAgICAgIGFib3J0KDQwMCwgZGVzY3Jp
cHRpb249J05vdCBlbm91Z2ggYXJndW1lbnRzIHByb3ZpZGVkIHRvIGRlZmluZSBhIGNvbW1pdCwg
YnV0IHRvbyBtYW55IHRvIHNlYXJjaCBmb3IgYSBjb21taXQnKQotICAgICAgICAgICAgYWJvcnQo
NDAwLCBkZXNjcmlwdGlvbj1mIid7YXJnfScgaXMgbm90IHZhbGlkIGZvciBkZWZpbmluZyBjb21t
aXRzIikKLQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBjb21taXQgPSBzZWxmLmNvbW1pdF9j
b250ZXh0LnJlZ2lzdGVyX2NvbW1pdF93aXRoX3JlcG9fYW5kX2lkKAotICAgICAgICAgICAgICAg
IHJlcG9zaXRvcnlfaWQ9Y29tbWl0LmdldCgncmVwb3NpdG9yeV9pZCcpLAotICAgICAgICAgICAg
ICAgIGJyYW5jaD1jb21taXQuZ2V0KCdicmFuY2gnKSwKLSAgICAgICAgICAgICAgICBjb21taXRf
aWQ9Y29tbWl0LmdldCgnaWQnKSwKLSAgICAgICAgICAgICkKLSAgICAgICAgZXhjZXB0IChSdW50
aW1lRXJyb3IsIFNDTUV4Y2VwdGlvbikgYXMgZXJyb3I6Ci0gICAgICAgICAgICBhYm9ydCg0MDQs
IGRlc2NyaXB0aW9uPXN0cihlcnJvcikpCi0KLSAgICAgICAgaWYgaXNfZW5kcG9pbnQ6Ci0gICAg
ICAgICAgICByZXR1cm4ganNvbmlmeSh7J3N0YXR1cyc6ICdvayd9KQotICAgICAgICByZXR1cm4g
Y29tbWl0CkluZGV4OiBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9jb250cm9sbGVyL2Nv
bW1pdF9jb250cm9sbGVyX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL3Jlc3VsdHNk
YnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvY29tbWl0X2NvbnRyb2xsZXJfdW5pdHRlc3QucHkJ
KHJldmlzaW9uIDI2NTUzMSkKKysrIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRy
b2xsZXIvY29tbWl0X2NvbnRyb2xsZXJfdW5pdHRlc3QucHkJKG5vbmV4aXN0ZW50KQpAQCAtMSwy
NzUgKzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAotIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0jIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwK
LSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IKLSMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSMgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwKLSMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotZnJvbSBm
YWtlcmVkaXMgaW1wb3J0IEZha2VTdHJpY3RSZWRpcwotZnJvbSByZWRpcyBpbXBvcnQgU3RyaWN0
UmVkaXMKLWZyb20gcmVzdWx0c2RicHkuY29udHJvbGxlci5hcGlfcm91dGVzIGltcG9ydCBBUElS
b3V0ZXMKLWZyb20gcmVzdWx0c2RicHkuY29udHJvbGxlci5jb21taXQgaW1wb3J0IENvbW1pdAot
ZnJvbSByZXN1bHRzZGJweS5mbGFza19zdXBwb3J0LmZsYXNrX3Rlc3RjYXNlIGltcG9ydCBGbGFz
a1Rlc3RDYXNlCi1mcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLmNhc3NhbmRyYV9jb250ZXh0IGltcG9y
dCBDYXNzYW5kcmFDb250ZXh0Ci1mcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLm1vY2tfY2Fzc2FuZHJh
X2NvbnRleHQgaW1wb3J0IE1vY2tDYXNzYW5kcmFDb250ZXh0Ci1mcm9tIHJlc3VsdHNkYnB5Lm1v
ZGVsLm1vY2tfcmVwb3NpdG9yeSBpbXBvcnQgTW9ja1N0YXNoUmVwb3NpdG9yeSwgTW9ja1NWTlJl
cG9zaXRvcnkKLWZyb20gcmVzdWx0c2RicHkubW9kZWwubW9kZWwgaW1wb3J0IE1vZGVsCi1mcm9t
IHJlc3VsdHNkYnB5Lm1vZGVsLndhaXRfZm9yX2RvY2tlcl90ZXN0X2Nhc2UgaW1wb3J0IFdhaXRG
b3JEb2NrZXJUZXN0Q2FzZQotCi0KLWNsYXNzIENvbW1pdENvbnRyb2xsZXJUZXN0KEZsYXNrVGVz
dENhc2UsIFdhaXRGb3JEb2NrZXJUZXN0Q2FzZSk6Ci0gICAgS0VZU1BBQ0UgPSAnY29tbWl0X2Nv
bnRyb2xsZXJfdGVzdF9rZXlzcGFjZScKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBzZXR1
cF93ZWJzZXJ2ZXIoY2xzLCBhcHAsIHJlZGlzPVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fzc2Fu
ZHJhQ29udGV4dCk6Ci0gICAgICAgIHJlZGlzX2luc3RhbmNlID0gcmVkaXMoKQotICAgICAgICBz
YWZhcmkgPSBNb2NrU3Rhc2hSZXBvc2l0b3J5LnNhZmFyaShyZWRpc19pbnN0YW5jZSkKLSAgICAg
ICAgd2Via2l0ID0gTW9ja1NWTlJlcG9zaXRvcnkud2Via2l0KHJlZGlzX2luc3RhbmNlKQotCi0g
ICAgICAgIGNhc3NhbmRyYS5kcm9wX2tleXNwYWNlKGtleXNwYWNlPWNscy5LRVlTUEFDRSkKLSAg
ICAgICAgY2Fzc2FuZHJhX2luc3RhbmNlID0gY2Fzc2FuZHJhKGtleXNwYWNlPWNscy5LRVlTUEFD
RSwgY3JlYXRlX2tleXNwYWNlPVRydWUpCi0KLSAgICAgICAgYXBwLnJlZ2lzdGVyX2JsdWVwcmlu
dChBUElSb3V0ZXMoTW9kZWwocmVkaXM9cmVkaXNfaW5zdGFuY2UsIGNhc3NhbmRyYT1jYXNzYW5k
cmFfaW5zdGFuY2UsIHJlcG9zaXRvcmllcz1bc2FmYXJpLCB3ZWJraXRdKSkpCi0KLSAgICBkZWYg
cmVnaXN0ZXJfYWxsX2NvbW1pdHMoc2VsZiwgY2xpZW50KToKLSAgICAgICAgZm9yIG1vY2tfcmVw
b3NpdG9yeSBpbiBbTW9ja1N0YXNoUmVwb3NpdG9yeS5zYWZhcmkoKSwgTW9ja1NWTlJlcG9zaXRv
cnkud2Via2l0KCldOgotICAgICAgICAgICAgZm9yIGNvbW1pdF9saXN0IGluIG1vY2tfcmVwb3Np
dG9yeS5jb21taXRzLnZhbHVlcygpOgotICAgICAgICAgICAgICAgIGZvciBjb21taXQgaW4gY29t
bWl0X2xpc3Q6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMjAwLCBjbGll
bnQucG9zdChzZWxmLlVSTCArICcvYXBpL2NvbW1pdHMvcmVnaXN0ZXInLCBkYXRhPUNvbW1pdC5F
bmNvZGVyKCkuZGVmYXVsdChjb21taXQpKS5zdGF0dXNfY29kZSkKLQotICAgIEBXYWl0Rm9yRG9j
a2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMs
IG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQotICAgIEBGbGFza1Rlc3RDYXNl
LnJ1bl93aXRoX3dlYnNlcnZlcigpCi0gICAgZGVmIHRlc3RfcmVwb3NpdG9yaWVzKHNlbGYsIGNs
aWVudCwgKiprd2FyZ3MpOgotICAgICAgICByZXNwb25zZSA9IGNsaWVudC5nZXQoc2VsZi5VUkwg
KyAnL2FwaS9jb21taXRzL3JlcG9zaXRvcmllcycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
cmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ3Nh
ZmFyaScsICd3ZWJraXQnXSwgc29ydGVkKHJlc3BvbnNlLmpzb24oKSkpCi0KLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCg0MDAsIGNsaWVudC5nZXQoc2VsZi5VUkwgKyAnL2FwaS9jb21taXRzL3Jl
cG9zaXRvcmllcz9yZXBvc2l0b3J5X2lkPXNhZmFyaScpLnN0YXR1c19jb2RlKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKDQwNSwgY2xpZW50LnBvc3Qoc2VsZi5VUkwgKyAnL2FwaS9jb21taXRz
L3JlcG9zaXRvcmllcycpLnN0YXR1c19jb2RlKQotCi0gICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2Fz
ZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNz
YW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCi0gICAgQEZsYXNrVGVzdENhc2UucnVuX3dpdGhf
d2Vic2VydmVyKCkKLSAgICBkZWYgdGVzdF9icmFuY2hlcyhzZWxmLCBjbGllbnQsICoqa3dhcmdz
KToKLSAgICAgICAgc2VsZi5yZWdpc3Rlcl9hbGxfY29tbWl0cyhjbGllbnQpCi0gICAgICAgIHJl
c3BvbnNlID0gY2xpZW50LmdldChzZWxmLlVSTCArICcvYXBpL2NvbW1pdHMvYnJhbmNoZXMnKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGljdCh3ZWJraXQ9WydzYWZhcmktNjA2LWJyYW5jaCcsICd0
cnVuayddLCBzYWZhcmk9WydtYXN0ZXInLCAnc2FmYXJpLTYwNi1icmFuY2gnXSksIHJlc3BvbnNl
Lmpzb24oKSkKLQotICAgICAgICByZXNwb25zZSA9IGNsaWVudC5nZXQoc2VsZi5VUkwgKyAnL2Fw
aS9jb21taXRzL2JyYW5jaGVzP2JyYW5jaD1zYWZhcmknKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHJlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
ZGljdCh3ZWJraXQ9WydzYWZhcmktNjA2LWJyYW5jaCddLCBzYWZhcmk9WydzYWZhcmktNjA2LWJy
YW5jaCddKSwgcmVzcG9uc2UuanNvbigpKQotCi0gICAgICAgIHJlc3BvbnNlID0gY2xpZW50Lmdl
dChzZWxmLlVSTCArICcvYXBpL2NvbW1pdHMvYnJhbmNoZXM/cmVwb3NpdG9yeV9pZD1zYWZhcmkn
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGljdChzYWZhcmk9WydtYXN0ZXInLCAnc2FmYXJpLTYw
Ni1icmFuY2gnXSksIHJlc3BvbnNlLmpzb24oKSkKLQotICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENh
c2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fz
c2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQotICAgIEBGbGFza1Rlc3RDYXNlLnJ1bl93aXRo
X3dlYnNlcnZlcigpCi0gICAgZGVmIHRlc3RfcmVnaXN0ZXJfZXJyb3JzKHNlbGYsIGNsaWVudCwg
Kiprd2FyZ3MpOgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDQwMCwgY2xpZW50LnBvc3Qoc2Vs
Zi5VUkwgKyAnL2FwaS9jb21taXRzL3JlZ2lzdGVyJykuc3RhdHVzX2NvZGUpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoNDA1LCBjbGllbnQuZ2V0KHNlbGYuVVJMICsgJy9hcGkvY29tbWl0cy9y
ZWdpc3RlcicpLnN0YXR1c19jb2RlKQotCi0gICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2Nr
X2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9
TW9ja0Nhc3NhbmRyYUNvbnRleHQpCi0gICAgQEZsYXNrVGVzdENhc2UucnVuX3dpdGhfd2Vic2Vy
dmVyKCkKLSAgICBkZWYgdGVzdF9yZWdpc3Rlcl92aWFfcG9zdChzZWxmLCBjbGllbnQsICoqa3dh
cmdzKToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyMDAsIGNsaWVudC5wb3N0KHNlbGYuVVJM
ICsgJy9hcGkvY29tbWl0cycsIGRhdGE9ZGljdChyZXBvc2l0b3J5X2lkPSdzYWZhcmknLCBpZD0n
YmI2YmRhNWY0NGRkMicpKS5zdGF0dXNfY29kZSkKLSAgICAgICAgcmVzcG9uc2UgPSBjbGllbnQu
Z2V0KHNlbGYuVVJMICsgJy9hcGkvY29tbWl0cz9yZXBvc2l0b3J5X2lkPXNhZmFyaScpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoMjAwLCByZXNwb25zZS5zdGF0dXNfY29kZSkKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIENvbW1pdC5mcm9tX2pzb24ocmVzcG9uc2Uu
anNvbigpWzBdKSwKLSAgICAgICAgICAgIE1vY2tTdGFzaFJlcG9zaXRvcnkuc2FmYXJpKCkuY29t
bWl0X2Zvcl9pZCgnYmI2YmRhNWY0NGRkMicpLAotICAgICAgICApCi0KLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgyMDAsIGNsaWVudC5wb3N0KHNlbGYuVVJMICsgJy9hcGkvY29tbWl0cycsIGRh
dGE9ZGljdChyZXBvc2l0b3J5X2lkPSd3ZWJraXQnLCBpZD0nMjM2NTQ0JykpLnN0YXR1c19jb2Rl
KQotICAgICAgICByZXNwb25zZSA9IGNsaWVudC5nZXQoc2VsZi5VUkwgKyAnL2FwaS9jb21taXRz
P3JlcG9zaXRvcnlfaWQ9d2Via2l0JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyMDAsIHJl
c3BvbnNlLnN0YXR1c19jb2RlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAg
ICAgQ29tbWl0LmZyb21fanNvbihyZXNwb25zZS5qc29uKClbMF0pLAotICAgICAgICAgICAgTW9j
a1NWTlJlcG9zaXRvcnkud2Via2l0KCkuY29tbWl0X2Zvcl9pZCgnMjM2NTQ0JyksCi0gICAgICAg
ICkKLQotICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19y
ZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0
KQotICAgIEBGbGFza1Rlc3RDYXNlLnJ1bl93aXRoX3dlYnNlcnZlcigpCi0gICAgZGVmIHRlc3Rf
cmVnaXN0ZXJfd2l0aF9wYXJ0aWFsX2NvbW1pdChzZWxmLCBjbGllbnQsICoqa3dhcmdzKToKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyMDAsIGNsaWVudC5wb3N0KHNlbGYuVVJMICsgJy9hcGkv
Y29tbWl0cycsIGRhdGE9ZGljdChyZXBvc2l0b3J5X2lkPSdzYWZhcmknLCBpZD0nYmI2YmRhNWY0
NGRkMicpKS5zdGF0dXNfY29kZSkKLSAgICAgICAgcmVzcG9uc2UgPSBjbGllbnQuZ2V0KHNlbGYu
VVJMICsgJy9hcGkvY29tbWl0cz9yZXBvc2l0b3J5X2lkPXNhZmFyaScpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoMjAwLCByZXNwb25zZS5zdGF0dXNfY29kZSkKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgKLSAgICAgICAgICAgIENvbW1pdC5mcm9tX2pzb24ocmVzcG9uc2UuanNvbigpWzBd
KSwKLSAgICAgICAgICAgIE1vY2tTdGFzaFJlcG9zaXRvcnkuc2FmYXJpKCkuY29tbWl0X2Zvcl9p
ZCgnYmI2YmRhNWY0NGRkMicpLAotICAgICAgICApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
NDA0LCBjbGllbnQucG9zdChzZWxmLlVSTCArICcvYXBpL2NvbW1pdHMnLCBkYXRhPWRpY3QocmVw
b3NpdG9yeV9pZD0nc2FmYXJpJywgaWQ9J2FhYWFhYWFhYWFhYWEnKSkuc3RhdHVzX2NvZGUpCi0K
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyMDAsIGNsaWVudC5wb3N0KHNlbGYuVVJMICsgJy9h
cGkvY29tbWl0cycsIGRhdGE9ZGljdChyZXBvc2l0b3J5X2lkPSd3ZWJraXQnLCBpZD0nMjM2NTQ0
JykpLnN0YXR1c19jb2RlKQotICAgICAgICByZXNwb25zZSA9IGNsaWVudC5nZXQoc2VsZi5VUkwg
KyAnL2FwaS9jb21taXRzP3JlcG9zaXRvcnlfaWQ9d2Via2l0JykKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgyMDAsIHJlc3BvbnNlLnN0YXR1c19jb2RlKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKAotICAgICAgICAgICAgQ29tbWl0LmZyb21fanNvbihyZXNwb25zZS5qc29uKClbMF0pLAot
ICAgICAgICAgICAgTW9ja1NWTlJlcG9zaXRvcnkud2Via2l0KCkuY29tbWl0X2Zvcl9pZCgnMjM2
NTQ0JyksCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg0MDQsIGNsaWVudC5w
b3N0KHNlbGYuVVJMICsgJy9hcGkvY29tbWl0cycsIGRhdGE9ZGljdChyZXBvc2l0b3J5X2lkPSd3
ZWJraXQnLCBpZD0nMCcpKS5zdGF0dXNfY29kZSkKLQotICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENh
c2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fz
c2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQotICAgIEBGbGFza1Rlc3RDYXNlLnJ1bl93aXRo
X3dlYnNlcnZlcigpCi0gICAgZGVmIHRlc3RfcmVnaXN0ZXJfd2l0aF9mdWxsX2NvbW1pdChzZWxm
LCBjbGllbnQsICoqa3dhcmdzKToKLSAgICAgICAgZ2l0X2NvbW1pdCA9IE1vY2tTdGFzaFJlcG9z
aXRvcnkuc2FmYXJpKCkuY29tbWl0X2Zvcl9pZCgnYmI2YmRhNWY0NGRkMicpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoMjAwLCBjbGllbnQucG9zdChzZWxmLlVSTCArICcvYXBpL2NvbW1pdHMn
LCBkYXRhPUNvbW1pdC5FbmNvZGVyKCkuZGVmYXVsdChnaXRfY29tbWl0KSkuc3RhdHVzX2NvZGUp
Ci0gICAgICAgIHJlc3BvbnNlID0gY2xpZW50LmdldChzZWxmLlVSTCArICcvYXBpL2NvbW1pdHM/
cmVwb3NpdG9yeV9pZD1zYWZhcmknKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDIwMCwgcmVz
cG9uc2Uuc3RhdHVzX2NvZGUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQ29tbWl0LmZyb21f
anNvbihyZXNwb25zZS5qc29uKClbMF0pLCBnaXRfY29tbWl0KQotCi0gICAgICAgIHN2bl9jb21t
aXQgPSBNb2NrU1ZOUmVwb3NpdG9yeS53ZWJraXQoKS5jb21taXRfZm9yX2lkKCcyMzY1NDQnKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDIwMCwgY2xpZW50LnBvc3Qoc2VsZi5VUkwgKyAnL2Fw
aS9jb21taXRzJywgZGF0YT1Db21taXQuRW5jb2RlcigpLmRlZmF1bHQoc3ZuX2NvbW1pdCkpLnN0
YXR1c19jb2RlKQotICAgICAgICByZXNwb25zZSA9IGNsaWVudC5nZXQoc2VsZi5VUkwgKyAnL2Fw
aS9jb21taXRzP3JlcG9zaXRvcnlfaWQ9d2Via2l0JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgyMDAsIHJlc3BvbnNlLnN0YXR1c19jb2RlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKENv
bW1pdC5mcm9tX2pzb24ocmVzcG9uc2UuanNvbigpWzBdKSwgc3ZuX2NvbW1pdCkKLQotICAgIEBX
YWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3Ry
aWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQotICAgIEBGbGFz
a1Rlc3RDYXNlLnJ1bl93aXRoX3dlYnNlcnZlcigpCi0gICAgZGVmIHRlc3RfZmluZF9ub19jb21t
aXQoc2VsZiwgY2xpZW50LCAqKmt3YXJncyk6Ci0gICAgICAgIHNlbGYucmVnaXN0ZXJfYWxsX2Nv
bW1pdHMoY2xpZW50KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDQwNCwgY2xpZW50LmdldChz
ZWxmLlVSTCArICcvYXBpL2NvbW1pdHM/cmVwb3NpdG9yeV9pZD1zYWZhcmkmaWQ9MCcpLnN0YXR1
c19jb2RlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDQwNCwgY2xpZW50LmdldChzZWxmLlVS
TCArICcvYXBpL2NvbW1pdHM/cmVwb3NpdG9yeV9pZD13ZWJraXQmaWQ9MCcpLnN0YXR1c19jb2Rl
KQotCi0gICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3Jl
ZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQp
Ci0gICAgQEZsYXNrVGVzdENhc2UucnVuX3dpdGhfd2Vic2VydmVyKCkKLSAgICBkZWYgdGVzdF9m
aW5kX2lkKHNlbGYsIGNsaWVudCwgKiprd2FyZ3MpOgotICAgICAgICBzZWxmLnJlZ2lzdGVyX2Fs
bF9jb21taXRzKGNsaWVudCkKLSAgICAgICAgcmVzcG9uc2UgPSBjbGllbnQuZ2V0KHNlbGYuVVJM
ICsgJy9hcGkvY29tbWl0cz9pZD0zMzY2MTBhOCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
MjAwLCByZXNwb25zZS5zdGF0dXNfY29kZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBs
ZW4ocmVzcG9uc2UuanNvbigpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDb21taXQuZnJv
bV9qc29uKHJlc3BvbnNlLmpzb24oKVswXSksIE1vY2tTdGFzaFJlcG9zaXRvcnkuc2FmYXJpKCku
Y29tbWl0X2Zvcl9pZChpZD0nMzM2NjEwYTgnKSkKLQotICAgICAgICByZXNwb25zZSA9IGNsaWVu
dC5nZXQoc2VsZi5VUkwgKyAnL2FwaS9jb21taXRzP2lkPTIzNjU0MCcpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoMjAwLCByZXNwb25zZS5zdGF0dXNfY29kZSkKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgxLCBsZW4ocmVzcG9uc2UuanNvbigpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChDb21taXQuZnJvbV9qc29uKHJlc3BvbnNlLmpzb24oKVswXSksIE1vY2tTVk5SZXBvc2l0b3J5
LndlYmtpdCgpLmNvbW1pdF9mb3JfaWQoaWQ9MjM2NTQwKSkKLQotICAgIEBXYWl0Rm9yRG9ja2Vy
VGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1v
Y2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQotICAgIEBGbGFza1Rlc3RDYXNlLnJ1
bl93aXRoX3dlYnNlcnZlcigpCi0gICAgZGVmIHRlc3RfZmluZF90aW1lc3RhbXAoc2VsZiwgY2xp
ZW50LCAqKmt3YXJncyk6Ci0gICAgICAgIHNlbGYucmVnaXN0ZXJfYWxsX2NvbW1pdHMoY2xpZW50
KQotICAgICAgICByZXNwb25zZSA9IGNsaWVudC5nZXQoc2VsZi5VUkwgKyAnL2FwaS9jb21taXRz
P3RpbWVzdGFtcD0xNTM3NTUwNjg1JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyMDAsIHJl
c3BvbnNlLnN0YXR1c19jb2RlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDIsIGxlbihyZXNw
b25zZS5qc29uKCkpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFtDb21taXQuZnJvbV9qc29u
KGVsZW1lbnQpIGZvciBlbGVtZW50IGluIHJlc3BvbnNlLmpzb24oKV0sIFsKLSAgICAgICAgICAg
IE1vY2tTdGFzaFJlcG9zaXRvcnkuc2FmYXJpKCkuY29tbWl0X2Zvcl9pZChpZD0nZTY0ODEwYTQn
KSwKLSAgICAgICAgICAgIE1vY2tTdGFzaFJlcG9zaXRvcnkuc2FmYXJpKCkuY29tbWl0X2Zvcl9p
ZChpZD0nN2JlNDA4NDInKSwKLSAgICAgICAgXSkKLQotICAgICAgICByZXNwb25zZSA9IGNsaWVu
dC5nZXQoc2VsZi5VUkwgKyAnL2FwaS9jb21taXRzP3RpbWVzdGFtcD0xNTM4MDQxNzkxLjgnKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDIwMCwgcmVzcG9uc2Uuc3RhdHVzX2NvZGUpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKHJlc3BvbnNlLmpzb24oKSkpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoQ29tbWl0LmZyb21fanNvbihyZXNwb25zZS5qc29uKClbMF0pLCBNb2Nr
U1ZOUmVwb3NpdG9yeS53ZWJraXQoKS5jb21taXRfZm9yX2lkKGlkPTIzNjU0MSkpCi0KLSAgICBA
V2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0
cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKLSAgICBARmxh
c2tUZXN0Q2FzZS5ydW5fd2l0aF93ZWJzZXJ2ZXIoKQotICAgIGRlZiB0ZXN0X2ZpbmRfdXVpZChz
ZWxmLCBjbGllbnQsICoqa3dhcmdzKToKLSAgICAgICAgc2VsZi5yZWdpc3Rlcl9hbGxfY29tbWl0
cyhjbGllbnQpCi0gICAgICAgIHJlc3BvbnNlID0gY2xpZW50LmdldChzZWxmLlVSTCArICcvYXBp
L2NvbW1pdHM/dXVpZD0xNTM3NTUwNjg1MDEnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDIw
MCwgcmVzcG9uc2Uuc3RhdHVzX2NvZGUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVu
KHJlc3BvbnNlLmpzb24oKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQ29tbWl0LmZyb21f
anNvbihyZXNwb25zZS5qc29uKClbMF0pLCBNb2NrU3Rhc2hSZXBvc2l0b3J5LnNhZmFyaSgpLmNv
bW1pdF9mb3JfaWQoaWQ9JzdiZTQwODQyJykpCi0KLSAgICAgICAgcmVzcG9uc2UgPSBjbGllbnQu
Z2V0KHNlbGYuVVJMICsgJy9hcGkvY29tbWl0cz91dWlkPTE1MzgwNDE3OTIwMCcpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoMjAwLCByZXNwb25zZS5zdGF0dXNfY29kZSkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgxLCBsZW4ocmVzcG9uc2UuanNvbigpKSkKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChDb21taXQuZnJvbV9qc29uKHJlc3BvbnNlLmpzb24oKVswXSksIE1vY2tTVk5SZXBv
c2l0b3J5LndlYmtpdCgpLmNvbW1pdF9mb3JfaWQoaWQ9MjM2NTQxKSkKLQotICAgIEBXYWl0Rm9y
RG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVk
aXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQotICAgIEBGbGFza1Rlc3RD
YXNlLnJ1bl93aXRoX3dlYnNlcnZlcigpCi0gICAgZGVmIHRlc3RfZmluZF9yYW5nZV9pZChzZWxm
LCBjbGllbnQsICoqa3dhcmdzKToKLSAgICAgICAgc2VsZi5yZWdpc3Rlcl9hbGxfY29tbWl0cyhj
bGllbnQpCi0gICAgICAgIHJlc3BvbnNlID0gY2xpZW50LmdldChzZWxmLlVSTCArICcvYXBpL2Nv
bW1pdHM/YWZ0ZXJfaWQ9MzM2NjEwYTgmYmVmb3JlX2lkPTIzNjU0MCcpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoMjAwLCByZXNwb25zZS5zdGF0dXNfY29kZSkKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChbQ29tbWl0LmZyb21fanNvbihlbGVtZW50KSBmb3IgZWxlbWVudCBpbiByZXNwb25z
ZS5qc29uKCldLCBbCi0gICAgICAgICAgICBNb2NrU3Rhc2hSZXBvc2l0b3J5LnNhZmFyaSgpLmNv
bW1pdF9mb3JfaWQoaWQ9JzMzNjYxMGE4JyksCi0gICAgICAgICAgICBNb2NrU3Rhc2hSZXBvc2l0
b3J5LnNhZmFyaSgpLmNvbW1pdF9mb3JfaWQoaWQ9J2JiNmJkYTVmJyksCi0gICAgICAgICAgICBN
b2NrU1ZOUmVwb3NpdG9yeS53ZWJraXQoKS5jb21taXRfZm9yX2lkKGlkPTIzNjU0MCksCi0gICAg
ICAgIF0pCi0KLSAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1v
Y2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29u
dGV4dCkKLSAgICBARmxhc2tUZXN0Q2FzZS5ydW5fd2l0aF93ZWJzZXJ2ZXIoKQotICAgIGRlZiB0
ZXN0X2ZpbmRfcmFuZ2VfdGltZXN0YW1wKHNlbGYsIGNsaWVudCwgKiprd2FyZ3MpOgotICAgICAg
ICBzZWxmLnJlZ2lzdGVyX2FsbF9jb21taXRzKGNsaWVudCkKLSAgICAgICAgcmVzcG9uc2UgPSBj
bGllbnQuZ2V0KHNlbGYuVVJMICsgJy9hcGkvY29tbWl0cz9hZnRlcl90aW1lc3RhbXA9MTUzODA0
MTc5Mi4zJmJlZm9yZV90aW1lc3RhbXA9MTUzODA0OTEwOCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoMjAwLCByZXNwb25zZS5zdGF0dXNfY29kZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgKLSAgICAgICAgICAgIFtDb21taXQuZnJvbV9qc29uKGVsZW1lbnQpIGZvciBlbGVtZW50IGlu
IHJlc3BvbnNlLmpzb24oKV0sCi0gICAgICAgICAgICBbTW9ja1NWTlJlcG9zaXRvcnkud2Via2l0
KCkuY29tbWl0X2Zvcl9pZChpZD0yMzY1NDEpLCBNb2NrU1ZOUmVwb3NpdG9yeS53ZWJraXQoKS5j
b21taXRfZm9yX2lkKGlkPTIzNjU0MildLAotICAgICAgICApCi0KLSAgICBAV2FpdEZvckRvY2tl
clRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBt
b2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKLSAgICBARmxhc2tUZXN0Q2FzZS5y
dW5fd2l0aF93ZWJzZXJ2ZXIoKQotICAgIGRlZiB0ZXN0X2ZpbmRfcmFuZ2VfdXVpZChzZWxmLCBj
bGllbnQsICoqa3dhcmdzKToKLSAgICAgICAgc2VsZi5yZWdpc3Rlcl9hbGxfY29tbWl0cyhjbGll
bnQpCi0gICAgICAgIHJlc3BvbnNlID0gY2xpZW50LmdldChzZWxmLlVSTCArICcvYXBpL2NvbW1p
dHM/YWZ0ZXJfdXVpZD0xNTM3NTUwNjg1MDEmYmVmb3JlX3V1aWQ9MTUzNzU2NjM4NjAyJykKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyMDAsIHJlc3BvbnNlLnN0YXR1c19jb2RlKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgW0NvbW1pdC5mcm9tX2pzb24oZWxlbWVu
dCkgZm9yIGVsZW1lbnQgaW4gcmVzcG9uc2UuanNvbigpXSwKLSAgICAgICAgICAgIFtNb2NrU3Rh
c2hSZXBvc2l0b3J5LnNhZmFyaSgpLmNvbW1pdF9mb3JfaWQoaWQ9JzdiZTQwODQyJyksIE1vY2tT
dGFzaFJlcG9zaXRvcnkuc2FmYXJpKCkuY29tbWl0X2Zvcl9pZChpZD0nMzM2NjEwYTQnKV0sCi0g
ICAgICAgICkKLQotICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIo
bW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFD
b250ZXh0KQotICAgIEBGbGFza1Rlc3RDYXNlLnJ1bl93aXRoX3dlYnNlcnZlcigpCi0gICAgZGVm
IHRlc3RfbmV4dChzZWxmLCBjbGllbnQsICoqa3dhcmdzKToKLSAgICAgICAgc2VsZi5yZWdpc3Rl
cl9hbGxfY29tbWl0cyhjbGllbnQpCi0gICAgICAgIHJlc3BvbnNlID0gY2xpZW50LmdldChzZWxm
LlVSTCArICcvYXBpL2NvbW1pdHMvbmV4dD9pZD0zMzY2MTBhNCcpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoMjAwLCByZXNwb25zZS5zdGF0dXNfY29kZSkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgxLCBsZW4ocmVzcG9uc2UuanNvbigpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChN
b2NrU3Rhc2hSZXBvc2l0b3J5LnNhZmFyaSgpLmNvbW1pdF9mb3JfaWQoaWQ9JzMzNjYxMGE4Jyks
IENvbW1pdC5mcm9tX2pzb24ocmVzcG9uc2UuanNvbigpWzBdKSkKLQotICAgICAgICByZXNwb25z
ZSA9IGNsaWVudC5nZXQoc2VsZi5VUkwgKyAnL2FwaS9jb21taXRzL25leHQ/aWQ9MjM2NTQyJykK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyMDAsIHJlc3BvbnNlLnN0YXR1c19jb2RlKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihyZXNwb25zZS5qc29uKCkpKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKE1vY2tTVk5SZXBvc2l0b3J5LndlYmtpdCgpLmNvbW1pdF9mb3JfaWQo
aWQ9MjM2NTQzKSwgQ29tbWl0LmZyb21fanNvbihyZXNwb25zZS5qc29uKClbMF0pKQotCi0gICAg
QFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VT
dHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCi0gICAgQEZs
YXNrVGVzdENhc2UucnVuX3dpdGhfd2Vic2VydmVyKCkKLSAgICBkZWYgdGVzdF9wcmV2aW91cyhz
ZWxmLCBjbGllbnQsICoqa3dhcmdzKToKLSAgICAgICAgc2VsZi5yZWdpc3Rlcl9hbGxfY29tbWl0
cyhjbGllbnQpCi0gICAgICAgIHJlc3BvbnNlID0gY2xpZW50LmdldChzZWxmLlVSTCArICcvYXBp
L2NvbW1pdHMvcHJldmlvdXM/aWQ9MzM2NjEwYTQnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KDIwMCwgcmVzcG9uc2Uuc3RhdHVzX2NvZGUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwg
bGVuKHJlc3BvbnNlLmpzb24oKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTW9ja1N0YXNo
UmVwb3NpdG9yeS5zYWZhcmkoKS5jb21taXRfZm9yX2lkKGlkPSc3YmU0MDg0MicpLCBDb21taXQu
ZnJvbV9qc29uKHJlc3BvbnNlLmpzb24oKVswXSkpCi0KLSAgICAgICAgcmVzcG9uc2UgPSBjbGll
bnQuZ2V0KHNlbGYuVVJMICsgJy9hcGkvY29tbWl0cy9wcmV2aW91cz9pZD0yMzY1NDInKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKDIwMCwgcmVzcG9uc2Uuc3RhdHVzX2NvZGUpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKHJlc3BvbnNlLmpzb24oKSkpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoTW9ja1NWTlJlcG9zaXRvcnkud2Via2l0KCkuY29tbWl0X2Zvcl9pZChpZD0y
MzY1NDEpLCBDb21taXQuZnJvbV9qc29uKHJlc3BvbnNlLmpzb24oKVswXSkpCi0KLSAgICBAV2Fp
dEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmlj
dFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKLSAgICBARmxhc2tU
ZXN0Q2FzZS5ydW5fd2l0aF93ZWJzZXJ2ZXIoKQotICAgIGRlZiB0ZXN0X3NpYmxpbmdzKHNlbGYs
IGNsaWVudCwgKiprd2FyZ3MpOgotICAgICAgICBzZWxmLnJlZ2lzdGVyX2FsbF9jb21taXRzKGNs
aWVudCkKLQotICAgICAgICByZXNwb25zZSA9IGNsaWVudC5nZXQoc2VsZi5VUkwgKyAnL2FwaS9j
b21taXRzL3NpYmxpbmdzP3JlcG9zaXRvcnlfaWQ9d2Via2l0JmlkPTIzNjU0MicpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoMjAwLCByZXNwb25zZS5zdGF0dXNfY29kZSkKLSAgICAgICAgY29t
bWl0cyA9IHtrZXk6IFtDb21taXQuZnJvbV9qc29uKGVsZW1lbnQpIGZvciBlbGVtZW50IGluIHZh
bHVlc10gZm9yIGtleSwgdmFsdWVzIGluIHJlc3BvbnNlLmpzb24oKS5pdGVtcygpfQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGNvbW1pdHMsIHsnc2FmYXJpJzogW01vY2tTdGFzaFJlcG9zaXRv
cnkuc2FmYXJpKCkuY29tbWl0X2Zvcl9pZChpZD0nYmI2YmRhNWY0NGRkMjQnKV19KQotCi0gICAg
ICAgIHJlc3BvbnNlID0gY2xpZW50LmdldChzZWxmLlVSTCArICcvYXBpL2NvbW1pdHMvc2libGlu
Z3M/cmVwb3NpdG9yeV9pZD1zYWZhcmkmaWQ9YmI2YmRhNWY0NGRkMjQnKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKDIwMCwgcmVzcG9uc2Uuc3RhdHVzX2NvZGUpCi0gICAgICAgIGNvbW1pdHMg
PSB7a2V5OiBbQ29tbWl0LmZyb21fanNvbihlbGVtZW50KSBmb3IgZWxlbWVudCBpbiB2YWx1ZXNd
IGZvciBrZXksIHZhbHVlcyBpbiByZXNwb25zZS5qc29uKCkuaXRlbXMoKX0KLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChjb21taXRzLCB7J3dlYmtpdCc6IFsKLSAgICAgICAgICAgIE1vY2tTVk5S
ZXBvc2l0b3J5LndlYmtpdCgpLmNvbW1pdF9mb3JfaWQoaWQ9MjM2NTQ0KSwKLSAgICAgICAgICAg
IE1vY2tTVk5SZXBvc2l0b3J5LndlYmtpdCgpLmNvbW1pdF9mb3JfaWQoaWQ9MjM2NTQzKSwKLSAg
ICAgICAgICAgIE1vY2tTVk5SZXBvc2l0b3J5LndlYmtpdCgpLmNvbW1pdF9mb3JfaWQoaWQ9MjM2
NTQyKSwKLSAgICAgICAgICAgIE1vY2tTVk5SZXBvc2l0b3J5LndlYmtpdCgpLmNvbW1pdF9mb3Jf
aWQoaWQ9MjM2NTQxKSwKLSAgICAgICAgICAgIE1vY2tTVk5SZXBvc2l0b3J5LndlYmtpdCgpLmNv
bW1pdF9mb3JfaWQoaWQ9MjM2NTQwKSwKLSAgICAgICAgXX0pCkluZGV4OiBUb29scy9yZXN1bHRz
ZGJweS9yZXN1bHRzZGJweS9jb250cm9sbGVyL2NvbW1pdF91bml0dGVzdC5weQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9jb250cm9sbGVyL2NvbW1pdF91bml0
dGVzdC5weQkocmV2aXNpb24gMjY1NTMxKQorKysgVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2Ri
cHkvY29udHJvbGxlci9jb21taXRfdW5pdHRlc3QucHkJKG5vbmV4aXN0ZW50KQpAQCAtMSwxNTcg
KzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAot
IyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0jIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IKLSMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSMgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwKLSMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotaW1wb3J0IHVu
aXR0ZXN0Ci0KLWZyb20gcmVzdWx0c2RicHkuY29udHJvbGxlci5jb21taXQgaW1wb3J0IENvbW1p
dAotCi0KLWNsYXNzIENvbW1pdFVuaXR0ZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLQotICAgIGRl
ZiB0ZXN0X2NvbXBhcmUoc2VsZik6Ci0gICAgICAgIGNvbW1pdDEgPSBDb21taXQoCi0gICAgICAg
ICAgICByZXBvc2l0b3J5X2lkPSdzYWZhcmknLCBicmFuY2g9J21hc3RlcicsCi0gICAgICAgICAg
ICBpZD0nZTY0ODEwYTQwYzNmZWNiNzI4ODcxZTEyY2EzMTQ4MmNhNzE1YjM4MycsCi0gICAgICAg
ICAgICB0aW1lc3RhbXA9MTUzNzU1MDY4NSwKLSAgICAgICAgKQotICAgICAgICBjb21taXQyID0g
Q29tbWl0KAotICAgICAgICAgICAgcmVwb3NpdG9yeV9pZD0nc2FmYXJpJywgYnJhbmNoPSdtYXN0
ZXInLAotICAgICAgICAgICAgaWQ9JzdiZTQwODQyNThhNDUyZThmZTIyZjM2Mjg3YzViMzIxZTlj
ODI0OWInLAotICAgICAgICAgICAgdGltZXN0YW1wPTE1Mzc1NTA2ODUsIG9yZGVyPTEsCi0gICAg
ICAgICkKLSAgICAgICAgY29tbWl0MyA9IENvbW1pdCgKLSAgICAgICAgICAgIHJlcG9zaXRvcnlf
aWQ9J3NhZmFyaScsIGJyYW5jaD0nbWFzdGVyJywKLSAgICAgICAgICAgIGlkPSdiYjZiZGE1ZjQ0
ZGQyNGQwYjU0NTM5YjhmZjZlOGMxN2Y1MTkyNDlhJywKLSAgICAgICAgICAgIHRpbWVzdGFtcD0x
NTM3ODEwMjgxLAotICAgICAgICApCi0gICAgICAgIGNvbW1pdDQgPSBDb21taXQoCi0gICAgICAg
ICAgICByZXBvc2l0b3J5X2lkPSd3ZWJraXQnLCBicmFuY2g9J21hc3RlcicsCi0gICAgICAgICAg
ICBpZD0yMzY1MjIsCi0gICAgICAgICAgICB0aW1lc3RhbXA9MTUzNzgyNjYxNCwKLSAgICAgICAg
KQotCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjb21taXQyID4gY29tbWl0MSkKLSAgICAgICAg
c2VsZi5hc3NlcnRUcnVlKGNvbW1pdDIgPj0gY29tbWl0MSkKLSAgICAgICAgc2VsZi5hc3NlcnRU
cnVlKGNvbW1pdDEgPj0gY29tbWl0MSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNvbW1pdDEg
PCBjb21taXQyKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoY29tbWl0MSA8PSBjb21taXQyKQot
ICAgICAgICBzZWxmLmFzc2VydFRydWUoY29tbWl0MSA8PSBjb21taXQxKQotICAgICAgICBzZWxm
LmFzc2VydFRydWUoY29tbWl0MSA9PSBjb21taXQxKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1
ZShjb21taXQyIDwgY29tbWl0MykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNvbW1pdDMgPiBj
b21taXQyKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1pdDEudGltZXN0YW1wLCBjb21t
aXQyLnRpbWVzdGFtcCkKLQotICAgICAgICBzZWxmLmFzc2VydFRydWUoY29tbWl0NCA+IGNvbW1p
dDMpCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoY29tbWl0My5yZXBvc2l0b3J5X2lkLCBj
b21taXQ0LnJlcG9zaXRvcnlfaWQpCi0KLSAgICBkZWYgdGVzdF9lbmNvZGluZyhzZWxmKToKLSAg
ICAgICAgY29tbWl0c190b190ZXN0ID0gWwotICAgICAgICAgICAgQ29tbWl0KAotICAgICAgICAg
ICAgICAgIHJlcG9zaXRvcnlfaWQ9J3NhZmFyaScsIGJyYW5jaD0nbWFzdGVyJywKLSAgICAgICAg
ICAgICAgICBpZD0nZTY0ODEwYTQwYzNmZWNiNzI4ODcxZTEyY2EzMTQ4MmNhNzE1YjM4MycsCi0g
ICAgICAgICAgICAgICAgdGltZXN0YW1wPTE1Mzc1NTA2ODUsCi0gICAgICAgICAgICApLCBDb21t
aXQoCi0gICAgICAgICAgICAgICAgcmVwb3NpdG9yeV9pZD0nc2FmYXJpJywgYnJhbmNoPSdtYXN0
ZXInLAotICAgICAgICAgICAgICAgIGlkPSc3YmU0MDg0MjU4YTQ1MmU4ZmUyMmYzNjI4N2M1YjMy
MWU5YzgyNDliJywKLSAgICAgICAgICAgICAgICB0aW1lc3RhbXA9MTUzNzU1MDY4NSwgb3JkZXI9
MSwKLSAgICAgICAgICAgICAgICBjb21taXR0ZXI9J2VtYWlsMUB3ZWJraXQub3JnJywgbWVzc2Fn
ZT0nQ2hhbmdlbG9nJywKLSAgICAgICAgICAgICksIENvbW1pdCgKLSAgICAgICAgICAgICAgICBy
ZXBvc2l0b3J5X2lkPSd3ZWJraXQnLCBicmFuY2g9J21hc3RlcicsCi0gICAgICAgICAgICAgICAg
aWQ9MjM2NTIyLAotICAgICAgICAgICAgICAgIHRpbWVzdGFtcD0xNTM3ODI2NjE0LAotICAgICAg
ICAgICAgKSwKLSAgICAgICAgXQotICAgICAgICBmb3IgY29tbWl0IGluIGNvbW1pdHNfdG9fdGVz
dDoKLSAgICAgICAgICAgIGNvbnZlcnRlZF9jb21taXQgPSBDb21taXQuZnJvbV9qc29uKGNvbW1p
dC50b19qc29uKCkpCi0KLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbWl0LCBjb252
ZXJ0ZWRfY29tbWl0KQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21taXQucmVwb3Np
dG9yeV9pZCwgY29udmVydGVkX2NvbW1pdC5yZXBvc2l0b3J5X2lkKQotICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChjb21taXQuaWQsIGNvbnZlcnRlZF9jb21taXQuaWQpCi0gICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGNvbW1pdC50aW1lc3RhbXAsIGNvbnZlcnRlZF9jb21taXQudGlt
ZXN0YW1wKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21taXQub3JkZXIsIGNvbnZl
cnRlZF9jb21taXQub3JkZXIpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1pdC5j
b21taXR0ZXIsIGNvbnZlcnRlZF9jb21taXQuY29tbWl0dGVyKQotICAgICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChjb21taXQubWVzc2FnZSwgY29udmVydGVkX2NvbW1pdC5tZXNzYWdlKQotCi0g
ICAgZGVmIHRlc3RfdWRpZChzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDb21taXQo
Ci0gICAgICAgICAgICByZXBvc2l0b3J5X2lkPSdzYWZhcmknLCBicmFuY2g9J21hc3RlcicsCi0g
ICAgICAgICAgICBpZD0nN2JlNDA4NDI1OGE0NTJlOGZlMjJmMzYyODdjNWIzMjFlOWM4MjQ5Yics
Ci0gICAgICAgICAgICB0aW1lc3RhbXA9MTUzNzU1MDY4NSwgb3JkZXI9MSwKLSAgICAgICAgKS51
dWlkLCAxNTM3NTUwNjg1MDEpCi0KLSAgICBkZWYgdGVzdF9pbnZhbGlkKHNlbGYpOgotICAgICAg
ICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpIGFzIGVycm9yOgotICAgICAgICAg
ICAgQ29tbWl0KAotICAgICAgICAgICAgICAgIHJlcG9zaXRvcnlfaWQ9J3NhZmFyaScsIGJyYW5j
aD0nbWFzdGVyJywKLSAgICAgICAgICAgICAgICBpZD0nN2JlNDA4NDI1OGE0NTJlOGZlMjJmMzYy
ODdjNWIzMjFlOWM4MjQ5YicsCi0gICAgICAgICAgICAgICAgdGltZXN0YW1wPU5vbmUsCi0gICAg
ICAgICAgICApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGVycm9yLmV4Y2VwdGlvbiks
ICd0aW1lc3RhbXAgaXMgbm90IGRlZmluZWQgZm9yIGNvbW1pdCcpCi0KLSAgICAgICAgd2l0aCBz
ZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKSBhcyBlcnJvcjoKLSAgICAgICAgICAgIENvbW1p
dCgKLSAgICAgICAgICAgICAgICByZXBvc2l0b3J5X2lkPSdpbnZhbGlkLXJlcG8nLCBicmFuY2g9
J21hc3RlcicsCi0gICAgICAgICAgICAgICAgaWQ9JzdiZTQwODQyNThhNDUyZThmZTIyZjM2Mjg3
YzViMzIxZTljODI0OWInLAotICAgICAgICAgICAgICAgIHRpbWVzdGFtcD0xNTM3NTUwNjg1LAot
ICAgICAgICAgICAgKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihlcnJvci5leGNlcHRp
b24pLCAiJ2ludmFsaWQtcmVwbycgaXMgYW4gaW52YWxpZCByZXBvc2l0b3J5IGlkIikKLQotICAg
ICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpIGFzIGVycm9yOgotICAgICAg
ICAgICAgQ29tbWl0KAotICAgICAgICAgICAgICAgIHJlcG9zaXRvcnlfaWQ9J2knICogMTI5LCBi
cmFuY2g9J21hc3RlcicsCi0gICAgICAgICAgICAgICAgaWQ9JzdiZTQwODQyNThhNDUyZThmZTIy
ZjM2Mjg3YzViMzIxZTljODI0OWInLAotICAgICAgICAgICAgICAgIHRpbWVzdGFtcD0xNTM3NTUw
Njg1LAotICAgICAgICAgICAgKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihlcnJvci5l
eGNlcHRpb24pLCBmIid7J2knICogMTI5fScgaXMgYW4gaW52YWxpZCByZXBvc2l0b3J5IGlkIikK
LQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpIGFzIGVycm9yOgot
ICAgICAgICAgICAgQ29tbWl0KAotICAgICAgICAgICAgICAgIHJlcG9zaXRvcnlfaWQ9J3NhZmFy
aScsIGJyYW5jaD0nPGh0bWw+aW52YWxpZC1icmFuY2g8L2h0bWw+JywKLSAgICAgICAgICAgICAg
ICBpZD0nN2JlNDA4NDI1OGE0NTJlOGZlMjJmMzYyODdjNWIzMjFlOWM4MjQ5YicsCi0gICAgICAg
ICAgICAgICAgdGltZXN0YW1wPTE1Mzc1NTA2ODUsCi0gICAgICAgICAgICApCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoc3RyKGVycm9yLmV4Y2VwdGlvbiksICInPGh0bWw+aW52YWxpZC1icmFu
Y2g8L2h0bWw+JyBpcyBhbiBpbnZhbGlkIGJyYW5jaCBuYW1lIikKLQotICAgICAgICB3aXRoIHNl
bGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpIGFzIGVycm9yOgotICAgICAgICAgICAgQ29tbWl0
KAotICAgICAgICAgICAgICAgIHJlcG9zaXRvcnlfaWQ9J3NhZmFyaScsIGJyYW5jaD0naScgKiAx
MjksCi0gICAgICAgICAgICAgICAgaWQ9JzdiZTQwODQyNThhNDUyZThmZTIyZjM2Mjg3YzViMzIx
ZTljODI0OWInLAotICAgICAgICAgICAgICAgIHRpbWVzdGFtcD0xNTM3NTUwNjg1LAotICAgICAg
ICAgICAgKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihlcnJvci5leGNlcHRpb24pLCBm
Iid7J2knICogMTI5fScgaXMgYW4gaW52YWxpZCBicmFuY2ggbmFtZSIpCi0KLSAgICAgICAgd2l0
aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKSBhcyBlcnJvcjoKLSAgICAgICAgICAgIENv
bW1pdCgKLSAgICAgICAgICAgICAgICByZXBvc2l0b3J5X2lkPSdzYWZhcmknLCBicmFuY2g9J21h
c3RlcicsCi0gICAgICAgICAgICAgICAgaWQ9JzxodG1sPjEyMzQ8L2h0bWw+JywKLSAgICAgICAg
ICAgICAgICB0aW1lc3RhbXA9MTUzNzU1MDY4NSwKLSAgICAgICAgICAgICkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChzdHIoZXJyb3IuZXhjZXB0aW9uKSwgIic8aHRtbD4xMjM0PC9odG1sPicg
aXMgYW4gaW52YWxpZCBjb21taXQgaWQiKQotCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlz
ZXMoVmFsdWVFcnJvcikgYXMgZXJyb3I6Ci0gICAgICAgICAgICBDb21taXQoCi0gICAgICAgICAg
ICAgICAgcmVwb3NpdG9yeV9pZD0nc2FmYXJpJywgYnJhbmNoPSdtYXN0ZXInLAotICAgICAgICAg
ICAgICAgIGlkPScwJyAqIDQxLAotICAgICAgICAgICAgICAgIHRpbWVzdGFtcD0xNTM3NTUwNjg1
LAotICAgICAgICAgICAgKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihlcnJvci5leGNl
cHRpb24pLCBmIid7JzAnICogNDF9JyBpcyBhbiBpbnZhbGlkIGNvbW1pdCBpZCIpCkluZGV4OiBU
b29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9jb250cm9sbGVyL2NvbmZpZ3VyYXRpb24ucHkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci9j
b25maWd1cmF0aW9uLnB5CShyZXZpc2lvbiAyNjU1MzEpCisrKyBUb29scy9yZXN1bHRzZGJweS9y
ZXN1bHRzZGJweS9jb250cm9sbGVyL2NvbmZpZ3VyYXRpb24ucHkJKG5vbmV4aXN0ZW50KQpAQCAt
MSwyMTQgKzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMg
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAotIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0jIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSMgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwKLSMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotaW1w
b3J0IGpzb24KLQotZnJvbSByZXN1bHRzZGJweS5mbGFza19zdXBwb3J0LnV0aWwgaW1wb3J0IEZs
YXNrSlNPTkVuY29kZXIKLQotCi1jbGFzcyBDb25maWd1cmF0aW9uKG9iamVjdCk6Ci0gICAgIiIi
Ci0gICAgVGhpcyBjbGFzcyBpcyBkZXNpZ25lZCB0byB1c2UgYSBwYXJ0aWFsIGNvbmZpZ3VyYXRp
b24gdG8gbWF0Y2ggbW9yZSBjb21wbGV0ZSBjb25maWd1cmF0aW9ucy4gR2VuZXJhbGx5LCBhbiBp
bnN0YW5jZQotICAgIG9mIHRoaXMgY2xhc3Mgd2lsbCBtYXRjaCBhbm90aGVyIGluc3RhbmNlIGlm
IGFsbCBtZW1iZXJzIG1hdGNoIG9yIGFyZSBOb25lLiBUaGlzIG1lYW5zIHRoYXQsIGZvciBleGFt
cGxlLCBhCi0gICAgQ29uZmlndXJhdGlvbiBvYmplY3Qgd2l0aCBhIHBsYXRmb3JtIG9mICdNYWMn
IGFuZCBhbGwgb3RoZXIgbWVtYmVycyBzZXQgdG8gTm9uZSB3aWxsIG1hdGNoIGFueSBDb25maWd1
cmF0aW9uIG9iamVjdAotICAgIHdpdGggYSBwbGF0Zm9ybSBvZiAnTWFjJywgcmVnYXJkbGVzcyBv
ZiB0aGUgdmFsdWVzIG9mIHRoZSBDb25maWd1cmF0aW9uJ3Mgb3RoZXIgbWVtYmVycy4KLSAgICAi
IiIKLQotICAgIFZFUlNJT05fT0ZGU0VUX0NPTlNUQU5UID0gMTAwMAotCi0gICAgUkVRVUlSRURf
TUVNQkVSUyA9IFsncGxhdGZvcm0nLCAnaXNfc2ltdWxhdG9yJywgJ3ZlcnNpb24nLCAnYXJjaGl0
ZWN0dXJlJ10KLSAgICBPUFRJT05BTF9NRU1CRVJTID0gWyd2ZXJzaW9uX25hbWUnLCAnbW9kZWwn
LCAnc3R5bGUnLCAnZmxhdm9yJ10KLSAgICBGSUxURVJJTkdfTUVNQkVSUyA9IFsnc2RrJ10KLQot
ICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBmcm9tX2pzb24oY2xzLCBkYXRhKToKLSAgICAgICAg
ZGF0YSA9IGRhdGEgaWYgaXNpbnN0YW5jZShkYXRhLCBkaWN0KSBlbHNlIGpzb24ubG9hZHMoZGF0
YSkKLSAgICAgICAgcmV0dXJuIENvbmZpZ3VyYXRpb24oKip7a2V5OiBkYXRhLmdldChrZXkpIGZv
ciBrZXkgaW4gY2xzLlJFUVVJUkVEX01FTUJFUlMgKyBjbHMuT1BUSU9OQUxfTUVNQkVSUyArIFsn
c2RrJ119KQotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHBsYXRmb3JtPU5vbmUsIHZlcnNpb249
Tm9uZSwgc2RrPU5vbmUsIHZlcnNpb25fbmFtZT1Ob25lLCBpc19zaW11bGF0b3I9Tm9uZSwgYXJj
aGl0ZWN0dXJlPU5vbmUsIG1vZGVsPU5vbmUsIHN0eWxlPU5vbmUsIGZsYXZvcj1Ob25lKToKLSAg
ICAgICAgc2VsZi5wbGF0Zm9ybSA9IE5vbmUgaWYgcGxhdGZvcm0gaXMgTm9uZSBlbHNlIHN0cihw
bGF0Zm9ybSkKLSAgICAgICAgc2VsZi52ZXJzaW9uID0gTm9uZSBpZiB2ZXJzaW9uIGlzIE5vbmUg
ZWxzZSBzZWxmLnZlcnNpb25fdG9faW50ZWdlcih2ZXJzaW9uKQotICAgICAgICBzZWxmLnZlcnNp
b25fbmFtZSA9IE5vbmUgaWYgdmVyc2lvbl9uYW1lIGlzIE5vbmUgZWxzZSBzdHIodmVyc2lvbl9u
YW1lKQotICAgICAgICBzZWxmLmlzX3NpbXVsYXRvciA9IE5vbmUgaWYgaXNfc2ltdWxhdG9yIGlz
IE5vbmUgZWxzZSBib29sKGlzX3NpbXVsYXRvcikKLSAgICAgICAgc2VsZi5hcmNoaXRlY3R1cmUg
PSBOb25lIGlmIGFyY2hpdGVjdHVyZSBpcyBOb25lIGVsc2Ugc3RyKGFyY2hpdGVjdHVyZSkKLSAg
ICAgICAgc2VsZi5tb2RlbCA9IE5vbmUgaWYgbW9kZWwgaXMgTm9uZSBlbHNlIHN0cihtb2RlbCkK
LSAgICAgICAgc2VsZi5zdHlsZSA9IE5vbmUgaWYgc3R5bGUgaXMgTm9uZSBlbHNlIHN0cihzdHls
ZSkKLSAgICAgICAgc2VsZi5mbGF2b3IgPSBOb25lIGlmIGZsYXZvciBpcyBOb25lIGVsc2Ugc3Ry
KGZsYXZvcikKLQotICAgICAgICAjIENvbmZpZ3VyYXRpb25zIHdoaWNoIGFyZSBpZGVudGljYWws
IGV4Y2VwdCBmb3IgdGhlaXIgc2RrLCBzaG91bGQgYmUgY29uc2lkZXJlZCBpZGVudGljYWwKLSAg
ICAgICAgc2VsZi5zZGsgPSBOb25lCi0gICAgICAgIGlmIHNkayBhbmQgc2RrICE9ICc/JzoKLSAg
ICAgICAgICAgIHNlbGYuc2RrID0gc3RyKHNkaykKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRl
ZiB2ZXJzaW9uX3RvX2ludGVnZXIoY2xzLCB2ZXJzaW9uKToKLSAgICAgICAgaWYgaXNpbnN0YW5j
ZSh2ZXJzaW9uLCBpbnQpOgotICAgICAgICAgICAgcmV0dXJuIHZlcnNpb24KLSAgICAgICAgZWxp
ZiBpc2luc3RhbmNlKHZlcnNpb24sIHN0cik6Ci0gICAgICAgICAgICB2ZXJzaW9uX2xpc3QgPSB2
ZXJzaW9uLnNwbGl0KCcuJykKLSAgICAgICAgZWxpZiBpc2luc3RhbmNlKHZlcnNpb24sIGxpc3Qp
IG9yIGlzaW5zdGFuY2UodmVyc2lvbiwgdHVwbGUpOgotICAgICAgICAgICAgdmVyc2lvbl9saXN0
ID0gdmVyc2lvbgotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKGYn
e3R5cGUodmVyc2lvbil9IGNhbm5vdCBiZSBjb252ZXJ0ZWQgdG8gYSB2ZXJzaW9uIGludGVnZXIn
KQotICAgICAgICBpZiBsZW4odmVyc2lvbl9saXN0KSA8IDEgb3IgbGVuKHZlcnNpb25fbGlzdCkg
PiAzOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihmJ3t2ZXJzaW9ufSBjYW5ub3QgYmUg
Y29udmVydGVkIHRvIGEgdmVyc2lvbiBpbnRlZ2VyJykKLQotICAgICAgICBpbmRleCA9IDAKLSAg
ICAgICAgcmVzdWx0ID0gMAotICAgICAgICB3aGlsZSBpbmRleCA8IDM6Ci0gICAgICAgICAgICBy
ZXN1bHQgKj0gY2xzLlZFUlNJT05fT0ZGU0VUX0NPTlNUQU5UCi0gICAgICAgICAgICBpZiBpbmRl
eCA8IGxlbih2ZXJzaW9uX2xpc3QpOgotICAgICAgICAgICAgICAgIHJlc3VsdCArPSBpbnQodmVy
c2lvbl9saXN0W2luZGV4XSkKLSAgICAgICAgICAgIGluZGV4ICs9IDEKLQotICAgICAgICByZXR1
cm4gcmVzdWx0Ci0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgaW50ZWdlcl90b192ZXJzaW9u
KGNscywgdmVyc2lvbik6Ci0gICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHZlcnNpb24sIGludCkK
LSAgICAgICAgcmVzdWx0ID0gWzAsIDAsIDBdCi0gICAgICAgIGZvciBpbmRleCBpbiByYW5nZSgz
KToKLSAgICAgICAgICAgIHJlc3VsdFstKGluZGV4ICsgMSldID0gdmVyc2lvbiAlIGNscy5WRVJT
SU9OX09GRlNFVF9DT05TVEFOVAotICAgICAgICAgICAgdmVyc2lvbiAvLz0gY2xzLlZFUlNJT05f
T0ZGU0VUX0NPTlNUQU5UCi0gICAgICAgIHJldHVybiBmJ3tyZXN1bHRbMF19LntyZXN1bHRbMV19
LntyZXN1bHRbMl19JwotCi0gICAgZGVmIGlzX2NvbXBsZXRlKHNlbGYpOgotICAgICAgICByZXR1
cm4gbm90IGFueShbZ2V0YXR0cihzZWxmLCBtZW1iZXIpIGlzIE5vbmUgZm9yIG1lbWJlciBpbiBz
ZWxmLlJFUVVJUkVEX01FTUJFUlNdKQotCi0gICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6Ci0g
ICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCB0eXBlKHNlbGYpKToKLSAgICAgICAgICAg
IHJldHVybiBGYWxzZQotICAgICAgICBmb3IgbWVtYmVyIGluIHNlbGYuUkVRVUlSRURfTUVNQkVS
UyArIHNlbGYuT1BUSU9OQUxfTUVNQkVSUzoKLSAgICAgICAgICAgIGlmIGdldGF0dHIoc2VsZiwg
bWVtYmVyKSBpcyBOb25lIG9yIGdldGF0dHIob3RoZXIsIG1lbWJlcikgaXMgTm9uZToKLSAgICAg
ICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgaWYgZ2V0YXR0cihzZWxmLCBtZW1iZXIp
ID09IGdldGF0dHIob3RoZXIsIG1lbWJlcik6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAg
ICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICByZXR1cm4gVHJ1ZQotCi0gICAgZGVmIF9f
bmVfXyhzZWxmLCBvdGhlcik6Ci0gICAgICAgIHJldHVybiBub3QgKHNlbGYgPT0gb3RoZXIpCi0K
LSAgICBkZWYgX19sdF9fKHNlbGYsIG90aGVyKToKLSAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uo
b3RoZXIsIHR5cGUoc2VsZikpOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKGYnQ2Fubm90
IGNvbXBhcmUge3R5cGUob3RoZXIpfSBhbmQge3R5cGUoc2VsZil9JykKLSAgICAgICAgZm9yIG1l
bWJlciBpbiBbJ3ZlcnNpb24nLCAncGxhdGZvcm0nLCAndmVyc2lvbl9uYW1lJywgJ2lzX3NpbXVs
YXRvcicsICdtb2RlbCcsICdhcmNoaXRlY3R1cmUnLCAnc3R5bGUnLCAnZmxhdm9yJ106Ci0gICAg
ICAgICAgICBtaW5lID0gZ2V0YXR0cihzZWxmLCBtZW1iZXIpCi0gICAgICAgICAgICB0aGVpcnMg
PSBnZXRhdHRyKG90aGVyLCBtZW1iZXIpCi0gICAgICAgICAgICBpZiBtaW5lIGlzIE5vbmUgYW5k
IHRoZWlycyBpcyBOb25lOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBp
ZiBtaW5lIGlzIE5vbmUgYW5kIHRoZWlycyBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gVHJ1ZQotICAgICAgICAgICAgaWYgbWluZSBpcyBub3QgTm9uZSBhbmQgdGhlaXJzIGlz
IE5vbmU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgICAgICBpZiBtaW5l
IDwgdGhlaXJzOgotICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgICAgICBpZiBt
aW5lID4gdGhlaXJzOgotICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICByZXR1
cm4gRmFsc2UKLQotICAgIGRlZiBfX2xlX18oc2VsZiwgb3RoZXIpOgotICAgICAgICByZXR1cm4g
c2VsZi5fX2x0X18ob3RoZXIpIG9yIHNlbGYuX19lcV9fKG90aGVyKQotCi0gICAgZGVmIF9fZ3Rf
XyhzZWxmLCBvdGhlcik6Ci0gICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCB0eXBlKHNl
bGYpKToKLSAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcihmJ0Nhbm5vdCBjb21wYXJlIHt0eXBl
KG90aGVyKX0gYW5kIHt0eXBlKHNlbGYpfScpCi0gICAgICAgIGZvciBtZW1iZXIgaW4gWyd2ZXJz
aW9uJywgJ3BsYXRmb3JtJywgJ3ZlcnNpb25fbmFtZScsICdpc19zaW11bGF0b3InLCAnbW9kZWwn
LCAnYXJjaGl0ZWN0dXJlJywgJ3N0eWxlJywgJ2ZsYXZvciddOgotICAgICAgICAgICAgbWluZSA9
IGdldGF0dHIoc2VsZiwgbWVtYmVyKQotICAgICAgICAgICAgdGhlaXJzID0gZ2V0YXR0cihvdGhl
ciwgbWVtYmVyKQotICAgICAgICAgICAgaWYgbWluZSBpcyBOb25lIGFuZCB0aGVpcnMgaXMgTm9u
ZToKLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgaWYgbWluZSBpcyBOb25l
IGFuZCB0aGVpcnMgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0g
ICAgICAgICAgICBpZiBtaW5lIGlzIG5vdCBOb25lIGFuZCB0aGVpcnMgaXMgTm9uZToKLSAgICAg
ICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAgICAgICAgaWYgbWluZSA8IHRoZWlyczoKLSAg
ICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgICAgIGlmIG1pbmUgPiB0aGVpcnM6
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAg
ICBkZWYgX19nZV9fKHNlbGYsIG90aGVyKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX19ndF9fKG90
aGVyKSBvciBzZWxmLl9fZXFfXyhvdGhlcikKLQotICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKLSAg
ICAgICAgcmVzdWx0ID0gMAotICAgICAgICBmb3IgbWVtYmVyIGluIHNlbGYuUkVRVUlSRURfTUVN
QkVSUyArIHNlbGYuT1BUSU9OQUxfTUVNQkVSUyArIHNlbGYuRklMVEVSSU5HX01FTUJFUlM6Ci0g
ICAgICAgICAgICBpZiBtZW1iZXIgPT0gJ3ZlcnNpb25fbmFtZScgYW5kIGdldGF0dHIoc2VsZiwg
J3ZlcnNpb24nKToKLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgcmVzdWx0
IF49IGhhc2goZ2V0YXR0cihzZWxmLCBtZW1iZXIpKQotICAgICAgICByZXR1cm4gcmVzdWx0Ci0K
LSAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgIHJlc3VsdCA9ICcnCi0gICAgICAgIGlm
IHNlbGYucGxhdGZvcm0gaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICByZXN1bHQgKz0gJyAnICsg
c2VsZi5wbGF0Zm9ybQotICAgICAgICBpZiBzZWxmLnZlcnNpb24gaXMgbm90IE5vbmU6Ci0gICAg
ICAgICAgICByZXN1bHQgKz0gJyAnICsgc2VsZi5pbnRlZ2VyX3RvX3ZlcnNpb24oc2VsZi52ZXJz
aW9uKQotICAgICAgICBlbGlmIHNlbGYudmVyc2lvbl9uYW1lIGlzIG5vdCBOb25lOgotICAgICAg
ICAgICAgcmVzdWx0ICs9ICcgJyArIHNlbGYudmVyc2lvbl9uYW1lCi0gICAgICAgIGlmIHNlbGYu
c2RrOgotICAgICAgICAgICAgcmVzdWx0ICs9IGYnICh7c2VsZi5zZGt9KScKLSAgICAgICAgaWYg
c2VsZi5pc19zaW11bGF0b3IgaXMgbm90IE5vbmUgYW5kIHNlbGYuaXNfc2ltdWxhdG9yOgotICAg
ICAgICAgICAgcmVzdWx0ICs9ICcgU2ltdWxhdG9yJwotICAgICAgICBpZiBzZWxmLnN0eWxlIGlz
IG5vdCBOb25lOgotICAgICAgICAgICAgcmVzdWx0ICs9ICcgJyArIHNlbGYuc3R5bGUKLSAgICAg
ICAgaWYgc2VsZi5mbGF2b3IgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICByZXN1bHQgKz0gJyAn
ICsgc2VsZi5mbGF2b3IKLSAgICAgICAgaWYgc2VsZi5tb2RlbCBpcyBub3QgTm9uZToKLSAgICAg
ICAgICAgIHJlc3VsdCArPSAnIHJ1bm5pbmcgb24gJyArIHNlbGYubW9kZWwKLSAgICAgICAgaWYg
c2VsZi5hcmNoaXRlY3R1cmUgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICByZXN1bHQgKz0gJyB1
c2luZyAnICsgc2VsZi5hcmNoaXRlY3R1cmUKLQotICAgICAgICByZXR1cm4gcmVzdWx0WzE6XQot
Ci0gICAgZGVmIHRvX2pzb24oc2VsZiwgcHJldHR5X3ByaW50PUZhbHNlKToKLSAgICAgICAgcmV0
dXJuIGpzb24uZHVtcHMoc2VsZiwgY2xzPXNlbGYuRW5jb2Rlciwgc29ydF9rZXlzPXByZXR0eV9w
cmludCwgaW5kZW50PTQgaWYgcHJldHR5X3ByaW50IGVsc2UgTm9uZSkKLQotICAgIGRlZiB0b19x
dWVyeShzZWxmKToKLSAgICAgICAgcXVlcnkgPSAnJwotICAgICAgICBmb3IgbWVtYmVyIGluIHNl
bGYuUkVRVUlSRURfTUVNQkVSUyArIHNlbGYuT1BUSU9OQUxfTUVNQkVSUyArIHNlbGYuRklMVEVS
SU5HX01FTUJFUlM6Ci0gICAgICAgICAgICB2YWx1ZSA9IGdldGF0dHIoc2VsZiwgbWVtYmVyKQot
ICAgICAgICAgICAgaWYgdmFsdWUgaXMgTm9uZToKLSAgICAgICAgICAgICAgICBjb250aW51ZQot
Ci0gICAgICAgICAgICBpZiBtZW1iZXIgPT0gJ3ZlcnNpb24nOgotICAgICAgICAgICAgICAgIHF1
ZXJ5ICs9IGYne21lbWJlcn09e3NlbGYuaW50ZWdlcl90b192ZXJzaW9uKHZhbHVlKX0mJwotICAg
ICAgICAgICAgZWxpZiBtZW1iZXIgPT0gJ2lzX3NpbXVsYXRvcic6Ci0gICAgICAgICAgICAgICAg
cXVlcnkgKz0gZiJ7bWVtYmVyfT17J1RydWUnIGlmIHZhbHVlIGVsc2UgJ0ZhbHNlJ30mIgotICAg
ICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBxdWVyeSArPSBmJ3ttZW1iZXJ9PXt2YWx1
ZX0mJwotICAgICAgICBpZiBxdWVyeToKLSAgICAgICAgICAgIHJldHVybiBxdWVyeVs6LTFdCi0g
ICAgICAgIHJldHVybiAnJwotCi0gICAgY2xhc3MgRW5jb2RlcihGbGFza0pTT05FbmNvZGVyKToK
LQotICAgICAgICBkZWYgZGVmYXVsdChzZWxmLCBvYmopOgotICAgICAgICAgICAgaWYgaXNpbnN0
YW5jZShvYmosIENvbmZpZ3VyYXRpb24pOgotICAgICAgICAgICAgICAgIHJlc3VsdCA9IHt9Ci0g
ICAgICAgICAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gb2JqLl9fZGljdF9fLml0ZW1zKCk6Ci0g
ICAgICAgICAgICAgICAgICAgIGlmIHZhbHVlIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgICAgICByZXN1bHRba2V5XSA9IHZhbHVlCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAotICAgICAgICAgICAgcmV0dXJuIHN1cGVyKENv
bmZpZ3VyYXRpb24uRW5jb2Rlciwgc2VsZikuZGVmYXVsdChvYmopCkluZGV4OiBUb29scy9yZXN1
bHRzZGJweS9yZXN1bHRzZGJweS9jb250cm9sbGVyL2NvbmZpZ3VyYXRpb25fY29udHJvbGxlci5w
eQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9jb250cm9sbGVy
L2NvbmZpZ3VyYXRpb25fY29udHJvbGxlci5weQkocmV2aXNpb24gMjY1NTMxKQorKysgVG9vbHMv
cmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci9jb25maWd1cmF0aW9uX2NvbnRyb2xs
ZXIucHkJKG5vbmV4aXN0ZW50KQpAQCAtMSw1OCArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIg
QU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotIyBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUgotIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotIyBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotCi1mcm9tIHJlc3VsdHNkYnB5LmZsYXNrX3N1cHBvcnQudXRpbCBp
bXBvcnQgYm9vbGVhbl9xdWVyeQotZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVyLmNvbmZpZ3Vy
YXRpb24gaW1wb3J0IENvbmZpZ3VyYXRpb24KLQotCi1kZWYgY29uZmlndXJhdGlvbl9mb3JfcXVl
cnkoKToKLSAgICBkZWYgZGVjb3JhdG9yKG1ldGhvZCk6Ci0gICAgICAgIGRlZiByZWFsX21ldGhv
ZCgKLSAgICAgICAgICAgICAgICBzZWxmPU5vbmUsIHBsYXRmb3JtPU5vbmUsIHZlcnNpb249Tm9u
ZSwgc2RrPU5vbmUsIHZlcnNpb25fbmFtZT1Ob25lLCBpc19zaW11bGF0b3I9Tm9uZSwKLSAgICAg
ICAgICAgICAgICBhcmNoaXRlY3R1cmU9Tm9uZSwgbW9kZWw9Tm9uZSwgc3R5bGU9Tm9uZSwgZmxh
dm9yPU5vbmUsICoqa3dhcmdzKToKLSAgICAgICAgICAgIGFyZ3MgPSBkaWN0KAotICAgICAgICAg
ICAgICAgIHBsYXRmb3JtPXBsYXRmb3JtIG9yIFtdLCB2ZXJzaW9uPXZlcnNpb24gb3IgW10sIHNk
az1zZGsgb3IgW10sIHZlcnNpb25fbmFtZT12ZXJzaW9uX25hbWUgb3IgW10sCi0gICAgICAgICAg
ICAgICAgaXNfc2ltdWxhdG9yPWJvb2xlYW5fcXVlcnkoKihpc19zaW11bGF0b3Igb3IgW10pKSwg
YXJjaGl0ZWN0dXJlPWFyY2hpdGVjdHVyZSBvciBbXSwgbW9kZWw9bW9kZWwgb3IgW10sCi0gICAg
ICAgICAgICAgICAgc3R5bGU9c3R5bGUgb3IgW10sIGZsYXZvcj1mbGF2b3Igb3IgW10sCi0gICAg
ICAgICAgICApCi0KLSAgICAgICAgICAgIGRlZiByZWN1cnNpdmVfY2FsbGJhY2soa2V5cywgKipr
d2FyZ3MpOgotICAgICAgICAgICAgICAgIGlmIG5vdCBrZXlzOgotICAgICAgICAgICAgICAgICAg
ICByZXR1cm4ge0NvbmZpZ3VyYXRpb24oKiprd2FyZ3MpfQotCi0gICAgICAgICAgICAgICAgaWYg
bm90IGFyZ3Nba2V5c1stMV1dOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVjdXJzaXZl
X2NhbGxiYWNrKGtleXNbOi0xXSwgKiprd2FyZ3MpCi0gICAgICAgICAgICAgICAgcmVzdWx0ID0g
c2V0KCkKLSAgICAgICAgICAgICAgICBmb3IgZWxlbWVudCBpbiBhcmdzW2tleXNbLTFdXToKLSAg
ICAgICAgICAgICAgICAgICAgZm9yd2FyZGVkX2FyZ3MgPSB7a2V5OiB2YWx1ZSBmb3Iga2V5LCB2
YWx1ZSBpbiBrd2FyZ3MuaXRlbXMoKX0KLSAgICAgICAgICAgICAgICAgICAgZm9yd2FyZGVkX2Fy
Z3Nba2V5c1stMV1dID0gZWxlbWVudAotICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSByZXN1
bHQudW5pb24ocmVjdXJzaXZlX2NhbGxiYWNrKGtleXNbOi0xXSwgKipmb3J3YXJkZWRfYXJncykp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAotCi0gICAgICAgICAgICBpZiBzZWxmIGlz
IE5vbmU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG1ldGhvZChjb25maWd1cmF0aW9ucz1saXN0
KHJlY3Vyc2l2ZV9jYWxsYmFjayhsaXN0KGFyZ3Mua2V5cygpKSkpIG9yIFtDb25maWd1cmF0aW9u
KCldLCAqKmt3YXJncykKLSAgICAgICAgICAgIHJldHVybiBtZXRob2Qoc2VsZiwgY29uZmlndXJh
dGlvbnM9bGlzdChyZWN1cnNpdmVfY2FsbGJhY2sobGlzdChhcmdzLmtleXMoKSkpKSBvciBbQ29u
ZmlndXJhdGlvbigpXSwgKiprd2FyZ3MpCi0KLSAgICAgICAgcmVhbF9tZXRob2QuX19uYW1lX18g
PSBtZXRob2QuX19uYW1lX18KLSAgICAgICAgcmV0dXJuIHJlYWxfbWV0aG9kCi0KLSAgICByZXR1
cm4gZGVjb3JhdG9yCkluZGV4OiBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9jb250cm9s
bGVyL2NvbmZpZ3VyYXRpb25fY29udHJvbGxlcl91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9jb250cm9sbGVyL2NvbmZpZ3VyYXRpb25fY29u
dHJvbGxlcl91bml0dGVzdC5weQkocmV2aXNpb24gMjY1NTMxKQorKysgVG9vbHMvcmVzdWx0c2Ri
cHkvcmVzdWx0c2RicHkvY29udHJvbGxlci9jb25maWd1cmF0aW9uX2NvbnRyb2xsZXJfdW5pdHRl
c3QucHkJKG5vbmV4aXN0ZW50KQpAQCAtMSw5MSArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIg
QU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotIyBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUgotIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotIyBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotCi1pbXBvcnQgdW5pdHRlc3QKLQotZnJvbSByZXN1bHRzZGJweS5j
b250cm9sbGVyLmNvbmZpZ3VyYXRpb24gaW1wb3J0IENvbmZpZ3VyYXRpb24KLWZyb20gcmVzdWx0
c2RicHkuY29udHJvbGxlci5jb25maWd1cmF0aW9uX2NvbnRyb2xsZXIgaW1wb3J0IGNvbmZpZ3Vy
YXRpb25fZm9yX3F1ZXJ5Ci0KLQotY2xhc3MgQ29uZmlndXJhdGlvbkNvbnRyb2xsZXJUZXN0KHVu
aXR0ZXN0LlRlc3RDYXNlKToKLSAgICBAY29uZmlndXJhdGlvbl9mb3JfcXVlcnkoKQotICAgIGRl
ZiBmdW5jKHNlbGYsIGNvbmZpZ3VyYXRpb25zPU5vbmUpOgotICAgICAgICByZXR1cm4gY29uZmln
dXJhdGlvbnMKLQotICAgIGRlZiB0ZXN0X2NvbmZpZ3VyYXRpb25fZnJvbV9ub19xdWVyeShzZWxm
KToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbQ29uZmlndXJhdGlvbigpXSwgc2VsZi5mdW5j
KCkpCi0KLSAgICBkZWYgdGVzdF9jb25maWd1cmF0aW9uc19mcm9tX3F1ZXJ5X2V4cGFuc2lvbihz
ZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIHNvcnRlZChbQ29u
ZmlndXJhdGlvbihwbGF0Zm9ybT0naU9TJyksIENvbmZpZ3VyYXRpb24ocGxhdGZvcm09J01hYycp
XSksCi0gICAgICAgICAgICBzb3J0ZWQoc2VsZi5mdW5jKHBsYXRmb3JtPVsnaU9TJywgJ01hYydd
KSksCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIHNv
cnRlZChbCi0gICAgICAgICAgICAgICAgQ29uZmlndXJhdGlvbihwbGF0Zm9ybT0naU9TJywgc3R5
bGU9J1JlbGVhc2UnKSwKLSAgICAgICAgICAgICAgICBDb25maWd1cmF0aW9uKHBsYXRmb3JtPSdN
YWMnLCBzdHlsZT0nRGVidWcnKSwKLSAgICAgICAgICAgICAgICBDb25maWd1cmF0aW9uKHBsYXRm
b3JtPSdpT1MnLCBzdHlsZT0nRGVidWcnKSwKLSAgICAgICAgICAgICAgICBDb25maWd1cmF0aW9u
KHBsYXRmb3JtPSdNYWMnLCBzdHlsZT0nUmVsZWFzZScpLAotICAgICAgICAgICAgXSksIHNvcnRl
ZChzZWxmLmZ1bmMocGxhdGZvcm09WydpT1MnLCAnTWFjJ10sIHN0eWxlPVsnRGVidWcnLCAnUmVs
ZWFzZSddKSksCi0gICAgICAgICkKLQotICAgIGRlZiB0ZXN0X2NvbmZpZ3VyYXRpb25zX2Zyb21f
cXVlcnlfcGxhdGZvcm0oc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAg
ICAgICBbQ29uZmlndXJhdGlvbihwbGF0Zm9ybT0naU9TJyldLAotICAgICAgICAgICAgc2VsZi5m
dW5jKHBsYXRmb3JtPVsnaU9TJ10pLAotICAgICAgICApCi0KLSAgICBkZWYgdGVzdF9jb25maWd1
cmF0aW9uX2Zyb21fcXVlcnlfdmVyc2lvbihzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgKLSAgICAgICAgICAgIFtDb25maWd1cmF0aW9uKHZlcnNpb249JzEuMC4xJyldLAotICAgICAg
ICAgICAgc2VsZi5mdW5jKHZlcnNpb249WycxLjAuMSddKSwKLSAgICAgICAgKQotCi0gICAgZGVm
IHRlc3RfY29uZmlndXJhdGlvbl9mcm9tX3F1ZXJ5X3ZlcnNpb25fbmFtZShzZWxmKToKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIFtDb25maWd1cmF0aW9uKHZlcnNpb25f
bmFtZT0nSGlnaCBTaWVycmEnKV0sCi0gICAgICAgICAgICBzZWxmLmZ1bmModmVyc2lvbl9uYW1l
PVsnSGlnaCBTaWVycmEnXSksCi0gICAgICAgICkKLQotICAgIGRlZiB0ZXN0X2NvbmZpZ3VyYXRp
b25fZnJvbV9xdWVyeV9pc19zaW11bGF0b3Ioc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoCi0gICAgICAgICAgICBbQ29uZmlndXJhdGlvbihpc19zaW11bGF0b3I9VHJ1ZSldLAotICAg
ICAgICAgICAgc2VsZi5mdW5jKGlzX3NpbXVsYXRvcj1bJ3RydWUnXSksCi0gICAgICAgICkKLQot
ICAgIGRlZiB0ZXN0X2NvbmZpZ3VyYXRpb25fZnJvbV9xdWVyeV9hcmNoaXRlY3R1cmUoc2VsZik6
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBbQ29uZmlndXJhdGlvbihh
cmNoaXRlY3R1cmU9J2FybTY0JyldLAotICAgICAgICAgICAgc2VsZi5mdW5jKGFyY2hpdGVjdHVy
ZT1bJ2FybTY0J10pLAotICAgICAgICApCi0KLSAgICBkZWYgdGVzdF9jb25maWd1cmF0aW9uX2Zy
b21fcXVlcnlfdHlwZShzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAg
ICAgIFtDb25maWd1cmF0aW9uKHN0eWxlPSdEZWJ1ZycpXSwKLSAgICAgICAgICAgIHNlbGYuZnVu
YyhzdHlsZT1bJ0RlYnVnJ10pLAotICAgICAgICApCi0KLSAgICBkZWYgdGVzdF9jb25maWd1cmF0
aW9uX2Zyb21fcXVlcnlfZmxhdm9yKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAot
ICAgICAgICAgICAgW0NvbmZpZ3VyYXRpb24oZmxhdm9yPSd3azInKV0sCi0gICAgICAgICAgICBz
ZWxmLmZ1bmMoZmxhdm9yPVsnd2syJ10pLAotICAgICAgICApCkluZGV4OiBUb29scy9yZXN1bHRz
ZGJweS9yZXN1bHRzZGJweS9jb250cm9sbGVyL2NvbmZpZ3VyYXRpb25fdW5pdHRlc3QucHkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci9jb25m
aWd1cmF0aW9uX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNjU1MzEpCisrKyBUb29scy9yZXN1bHRz
ZGJweS9yZXN1bHRzZGJweS9jb250cm9sbGVyL2NvbmZpZ3VyYXRpb25fdW5pdHRlc3QucHkJKG5v
bmV4aXN0ZW50KQpAQCAtMSw5OCArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMg
YXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECi0jIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IK
LSMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotIyBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UgotIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotCi1pbXBvcnQgdW5pdHRlc3QKLQotZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVy
LmNvbmZpZ3VyYXRpb24gaW1wb3J0IENvbmZpZ3VyYXRpb24KLQotCi1jbGFzcyBDb25maWd1cmF0
aW9uVW5pdHRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotCi0gICAgZGVmIHRlc3RfdmVyc2lvbl9p
bnRlZ2VyX2NvbnZlcnNpb24oc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMTAwMjAw
MywgQ29uZmlndXJhdGlvbi52ZXJzaW9uX3RvX2ludGVnZXIoWzEsIDIsIDNdKSkKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgxMDAwMDAwLCBDb25maWd1cmF0aW9uLnZlcnNpb25fdG9faW50ZWdl
cihbMV0pKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEwMDIwMDMsIENvbmZpZ3VyYXRpb24u
dmVyc2lvbl90b19pbnRlZ2VyKCcxLjIuMycpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEw
MDAwMDAsIENvbmZpZ3VyYXRpb24udmVyc2lvbl90b19pbnRlZ2VyKCcxJykpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoMSwgQ29uZmlndXJhdGlvbi52ZXJzaW9uX3RvX2ludGVnZXIoMSkpCi0K
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnMS4yLjMnLCBDb25maWd1cmF0aW9uLmludGVnZXJf
dG9fdmVyc2lvbigxMDAyMDAzKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnMS4yLjAnLCBD
b25maWd1cmF0aW9uLmludGVnZXJfdG9fdmVyc2lvbigxMDAyMDAwKSkKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgnMS4wLjAnLCBDb25maWd1cmF0aW9uLmludGVnZXJfdG9fdmVyc2lvbigxMDAw
MDAwKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnMC4xLjInLCBDb25maWd1cmF0aW9uLmlu
dGVnZXJfdG9fdmVyc2lvbigxMDAyKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnMC4wLjEn
LCBDb25maWd1cmF0aW9uLmludGVnZXJfdG9fdmVyc2lvbigxKSkKLQotICAgIGRlZiB0ZXN0X3dp
bGRjYXJkX2NvbXBhcmUoc2VsZik6Ci0gICAgICAgIHJlZmVyZW5jZSA9IENvbmZpZ3VyYXRpb24o
cGxhdGZvcm09J01hYycsIHZlcnNpb249JzEwLjE0JywgaXNfc2ltdWxhdG9yPUZhbHNlLCBhcmNo
aXRlY3R1cmU9J3g4Nl82NCcsIHN0eWxlPSdEZWJ1ZycsIGZsYXZvcj0nd2syJykKLQotICAgICAg
ICBzaG91bGRfbWF0Y2ggPSBbCi0gICAgICAgICAgICBDb25maWd1cmF0aW9uKHBsYXRmb3JtPSdN
YWMnKSwKLSAgICAgICAgICAgIENvbmZpZ3VyYXRpb24odmVyc2lvbj0nMTAuMTQnKSwKLSAgICAg
ICAgICAgIENvbmZpZ3VyYXRpb24oaXNfc2ltdWxhdG9yPUZhbHNlKSwKLSAgICAgICAgICAgIENv
bmZpZ3VyYXRpb24oYXJjaGl0ZWN0dXJlPSd4ODZfNjQnKSwKLSAgICAgICAgICAgIENvbmZpZ3Vy
YXRpb24oc3R5bGU9J0RlYnVnJyksCi0gICAgICAgICAgICBDb25maWd1cmF0aW9uKGZsYXZvcj0n
d2syJyksCi0gICAgICAgIF0KLSAgICAgICAgZm9yIGVsZW1lbnQgaW4gc2hvdWxkX21hdGNoOgot
ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlbGVtZW50LCByZWZlcmVuY2UpCi0gICAgICAg
ICAgICBzZWxmLmFzc2VydEZhbHNlKGVsZW1lbnQgIT0gcmVmZXJlbmNlKQotCi0gICAgICAgIHNo
b3VsZG50X21hdGNoID0gWwotICAgICAgICAgICAgQ29uZmlndXJhdGlvbihwbGF0Zm9ybT0naU9T
JyksCi0gICAgICAgICAgICBDb25maWd1cmF0aW9uKHZlcnNpb249JzEwLjEzJyksCi0gICAgICAg
ICAgICBDb25maWd1cmF0aW9uKGlzX3NpbXVsYXRvcj1UcnVlKSwKLSAgICAgICAgICAgIENvbmZp
Z3VyYXRpb24oYXJjaGl0ZWN0dXJlPSdhcm02NCcpLAotICAgICAgICAgICAgQ29uZmlndXJhdGlv
bihzdHlsZT0nUmVsZWFzZScpLAotICAgICAgICAgICAgQ29uZmlndXJhdGlvbihmbGF2b3I9J3dr
MScpLAotICAgICAgICBdCi0gICAgICAgIGZvciBlbGVtZW50IGluIHNob3VsZG50X21hdGNoOgot
ICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChlbGVtZW50LCByZWZlcmVuY2UpCi0gICAg
ICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGVsZW1lbnQgPT0gcmVmZXJlbmNlKQotCi0gICAgZGVm
IHRlc3RfanNvbmlmeShzZWxmKToKLSAgICAgICAgY29uZmlncyA9IFsKLSAgICAgICAgICAgIENv
bmZpZ3VyYXRpb24ocGxhdGZvcm09J01hYycsIHZlcnNpb249JzEwLjE0JywgaXNfc2ltdWxhdG9y
PUZhbHNlLCBhcmNoaXRlY3R1cmU9J3g4Nl82NCcsIHN0eWxlPSdEZWJ1ZycsIGZsYXZvcj0nd2sy
JyksCi0gICAgICAgICAgICBDb25maWd1cmF0aW9uKHBsYXRmb3JtPSdNYWMnLCB2ZXJzaW9uPScx
MC4xNCcsIHN0eWxlPSdQcm9kdWN0aW9uJywgZmxhdm9yPSd3azInKSwKLSAgICAgICAgICAgIENv
bmZpZ3VyYXRpb24ocGxhdGZvcm09J2lPUycsIHZlcnNpb249JzExJywgaXNfc2ltdWxhdG9yPVRy
dWUsIGFyY2hpdGVjdHVyZT0neDg2XzY0Jywgc3R5bGU9J0RlYnVnJyksCi0gICAgICAgICAgICBD
b25maWd1cmF0aW9uKHBsYXRmb3JtPSdpT1MnLCB2ZXJzaW9uPScxMicsIGlzX3NpbXVsYXRvcj1G
YWxzZSwgYXJjaGl0ZWN0dXJlPSdhcm02NCcsIHN0eWxlPSdSZWxlYXNlJyksCi0gICAgICAgIF0K
LQotICAgICAgICBmb3IgY29uZmlnIGluIGNvbmZpZ3M6Ci0gICAgICAgICAgICBjb252ZXJ0ZWRf
Y29uZmlnID0gQ29uZmlndXJhdGlvbi5mcm9tX2pzb24oY29uZmlnLnRvX2pzb24oKSkKLSAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29uZmlnLCBjb252ZXJ0ZWRfY29uZmlnKQotCi0gICAg
ZGVmIHRlc3RfdG9fcXVlcnkoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAg
ICAgICAgICBDb25maWd1cmF0aW9uKHBsYXRmb3JtPSdNYWMnLCB2ZXJzaW9uPScxMC4xNCcsIGlz
X3NpbXVsYXRvcj1GYWxzZSwgYXJjaGl0ZWN0dXJlPSd4ODZfNjQnLCBzdHlsZT0nRGVidWcnLCBm
bGF2b3I9J3drMicpLnRvX3F1ZXJ5KCksCi0gICAgICAgICAgICAncGxhdGZvcm09TWFjJmlzX3Np
bXVsYXRvcj1GYWxzZSZ2ZXJzaW9uPTEwLjE0LjAmYXJjaGl0ZWN0dXJlPXg4Nl82NCZzdHlsZT1E
ZWJ1ZyZmbGF2b3I9d2syJywKLSAgICAgICAgKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAot
ICAgICAgICAgICAgQ29uZmlndXJhdGlvbihwbGF0Zm9ybT0nTWFjJywgdmVyc2lvbj0nMTAuMTQn
LCBzdHlsZT0nUHJvZHVjdGlvbicsIGZsYXZvcj0nd2syJykudG9fcXVlcnkoKSwKLSAgICAgICAg
ICAgICdwbGF0Zm9ybT1NYWMmdmVyc2lvbj0xMC4xNC4wJnN0eWxlPVByb2R1Y3Rpb24mZmxhdm9y
PXdrMicsCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAg
IENvbmZpZ3VyYXRpb24ocGxhdGZvcm09J2lPUycsIHZlcnNpb249JzExJywgaXNfc2ltdWxhdG9y
PVRydWUsIGFyY2hpdGVjdHVyZT0neDg2XzY0Jywgc3R5bGU9J0RlYnVnJykudG9fcXVlcnkoKSwK
LSAgICAgICAgICAgICdwbGF0Zm9ybT1pT1MmaXNfc2ltdWxhdG9yPVRydWUmdmVyc2lvbj0xMS4w
LjAmYXJjaGl0ZWN0dXJlPXg4Nl82NCZzdHlsZT1EZWJ1ZycsCi0gICAgICAgICkKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIENvbmZpZ3VyYXRpb24ocGxhdGZvcm09J2lP
UycsIHZlcnNpb249JzEyJywgaXNfc2ltdWxhdG9yPUZhbHNlLCBhcmNoaXRlY3R1cmU9J2FybTY0
Jywgc3R5bGU9J1JlbGVhc2UnKS50b19xdWVyeSgpLAotICAgICAgICAgICAgJ3BsYXRmb3JtPWlP
UyZpc19zaW11bGF0b3I9RmFsc2UmdmVyc2lvbj0xMi4wLjAmYXJjaGl0ZWN0dXJlPWFybTY0JnN0
eWxlPVJlbGVhc2UnLAotICAgICAgICApCkluZGV4OiBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRz
ZGJweS9jb250cm9sbGVyL2ZhaWx1cmVfY29udHJvbGxlci5weQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9jb250cm9sbGVyL2ZhaWx1cmVfY29udHJvbGxlci5w
eQkocmV2aXNpb24gMjY1NTMxKQorKysgVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29u
dHJvbGxlci9mYWlsdXJlX2NvbnRyb2xsZXIucHkJKG5vbmV4aXN0ZW50KQpAQCAtMSw5NyArMCww
IEBACi0jIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0j
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0jIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUgotIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotIyBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LAotIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1mcm9tIGZsYXNrIGlt
cG9ydCBhYm9ydCwganNvbmlmeQotZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVyLmNvbW1pdF9j
b250cm9sbGVyIGltcG9ydCB1dWlkX3JhbmdlX2Zvcl9xdWVyeSwgSGFzQ29tbWl0Q29udGV4dAot
ZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVyLmNvbmZpZ3VyYXRpb24gaW1wb3J0IENvbmZpZ3Vy
YXRpb24KLWZyb20gcmVzdWx0c2RicHkuY29udHJvbGxlci5jb25maWd1cmF0aW9uX2NvbnRyb2xs
ZXIgaW1wb3J0IGNvbmZpZ3VyYXRpb25fZm9yX3F1ZXJ5Ci1mcm9tIHJlc3VsdHNkYnB5LmNvbnRy
b2xsZXIuc3VpdGVfY29udHJvbGxlciBpbXBvcnQgdGltZV9yYW5nZV9mb3JfcXVlcnkKLWZyb20g
cmVzdWx0c2RicHkuZmxhc2tfc3VwcG9ydC51dGlsIGltcG9ydCBBc3NlcnRSZXF1ZXN0LCBxdWVy
eV9hc19rd2FyZ3MsIGxpbWl0X2Zvcl9xdWVyeSwgYm9vbGVhbl9xdWVyeQotCi0KLWNsYXNzIEZh
aWx1cmVDb250cm9sbGVyKEhhc0NvbW1pdENvbnRleHQpOgotICAgIERFRkFVTFRfTElNSVQgPSAx
MDAwCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgZmFpbHVyZV9jb250ZXh0KToKLSAgICAgICAg
c3VwZXIoRmFpbHVyZUNvbnRyb2xsZXIsIHNlbGYpLl9faW5pdF9fKGZhaWx1cmVfY29udGV4dC5j
b21taXRfY29udGV4dCkKLSAgICAgICAgc2VsZi5mYWlsdXJlX2NvbnRleHQgPSBmYWlsdXJlX2Nv
bnRleHQKLQotICAgIEBxdWVyeV9hc19rd2FyZ3MoKQotICAgIEB1dWlkX3JhbmdlX2Zvcl9xdWVy
eSgpCi0gICAgQGxpbWl0X2Zvcl9xdWVyeShERUZBVUxUX0xJTUlUKQotICAgIEBjb25maWd1cmF0
aW9uX2Zvcl9xdWVyeSgpCi0gICAgQHRpbWVfcmFuZ2VfZm9yX3F1ZXJ5KCkKLSAgICBkZWYgZmFp
bHVyZXMoCi0gICAgICAgIHNlbGYsIHN1aXRlPU5vbmUsCi0gICAgICAgIGNvbmZpZ3VyYXRpb25z
PU5vbmUsIHJlY2VudD1Ob25lLAotICAgICAgICBicmFuY2g9Tm9uZSwgYmVnaW49Tm9uZSwgZW5k
PU5vbmUsCi0gICAgICAgIGJlZ2luX3F1ZXJ5X3RpbWU9Tm9uZSwgZW5kX3F1ZXJ5X3RpbWU9Tm9u
ZSwKLSAgICAgICAgdW5leHBlY3RlZD1Ob25lLCBjb2xsYXBzZWQ9Tm9uZSwKLSAgICAgICAgbGlt
aXQ9Tm9uZSwgKiprd2FyZ3MKLSAgICApOgotICAgICAgICBBc3NlcnRSZXF1ZXN0LmlzX3R5cGUo
WydHRVQnXSkKLSAgICAgICAgQXNzZXJ0UmVxdWVzdC5xdWVyeV9rd2FyZ3NfZW1wdHkoKiprd2Fy
Z3MpCi0KLSAgICAgICAgcmVjZW50ID0gYm9vbGVhbl9xdWVyeSgqcmVjZW50KVswXSBpZiByZWNl
bnQgZWxzZSBUcnVlCi0gICAgICAgIHVuZXhwZWN0ZWQgPSBib29sZWFuX3F1ZXJ5KCp1bmV4cGVj
dGVkKVswXSBpZiB1bmV4cGVjdGVkIGVsc2UgVHJ1ZQotICAgICAgICBjb2xsYXBzZWQgPSBib29s
ZWFuX3F1ZXJ5KCpjb2xsYXBzZWQpWzBdIGlmIGNvbGxhcHNlZCBlbHNlIFRydWUKLQotICAgICAg
ICBpZiBub3Qgc3VpdGU6Ci0gICAgICAgICAgICBhYm9ydCg0MDAsIGRlc2NyaXB0aW9uPSdObyBz
dWl0ZSBzcGVjaWZpZWQnKQotCi0gICAgICAgIHdpdGggc2VsZi5mYWlsdXJlX2NvbnRleHQ6Ci0g
ICAgICAgICAgICBxdWVyeV9kaWN0ID0gZGljdCgKLSAgICAgICAgICAgICAgICBzdWl0ZT1zdWl0
ZSwKLSAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9ucz1jb25maWd1cmF0aW9ucywgcmVjZW50
PXJlY2VudCwKLSAgICAgICAgICAgICAgICBicmFuY2g9YnJhbmNoWzBdLCBiZWdpbj1iZWdpbiwg
ZW5kPWVuZCwKLSAgICAgICAgICAgICAgICBiZWdpbl9xdWVyeV90aW1lPWJlZ2luX3F1ZXJ5X3Rp
bWUsIGVuZF9xdWVyeV90aW1lPWVuZF9xdWVyeV90aW1lLAotICAgICAgICAgICAgICAgIGxpbWl0
PWxpbWl0LCB1bmV4cGVjdGVkPXVuZXhwZWN0ZWQsIGNvbGxhcHNlZD1jb2xsYXBzZWQsCi0gICAg
ICAgICAgICApCi0gICAgICAgICAgICBudW1fc3BlY2lmaWVkX2NvbW1pdHMgPSBzdW0oWzEgaWYg
ZWxlbWVudCBlbHNlIDAgZm9yIGVsZW1lbnQgaW4gW2JlZ2luLCBlbmRdXSkKLSAgICAgICAgICAg
IG51bV9zcGVjaWZpZWRfdGltZXN0YW1wcyA9IHN1bShbMSBpZiBlbGVtZW50IGVsc2UgMCBmb3Ig
ZWxlbWVudCBpbiBbYmVnaW5fcXVlcnlfdGltZSwgZW5kX3F1ZXJ5X3RpbWVdXSkKLQotICAgICAg
ICAgICAgaWYgbnVtX3NwZWNpZmllZF9jb21taXRzID49IG51bV9zcGVjaWZpZWRfdGltZXN0YW1w
czoKLSAgICAgICAgICAgICAgICBmaW5kX2Z1bmN0aW9uID0gc2VsZi5mYWlsdXJlX2NvbnRleHQu
ZmFpbHVyZXNfYnlfY29tbWl0Ci0KLSAgICAgICAgICAgICAgICBkZWYgc29ydF9mdW5jdGlvbihy
ZXN1bHQpOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0Wyd1dWlkJ10KLQotICAg
ICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBmaW5kX2Z1bmN0aW9uID0gc2VsZi5mYWls
dXJlX2NvbnRleHQuZmFpbHVyZXNfYnlfc3RhcnRfdGltZQotCi0gICAgICAgICAgICAgICAgZGVm
IHNvcnRfZnVuY3Rpb24ocmVzdWx0KToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3Vs
dFsnc3RhcnRfdGltZSddCi0KLSAgICAgICAgICAgIGZhaWx1cmVzID0gZmluZF9mdW5jdGlvbigq
KnF1ZXJ5X2RpY3QpCi0gICAgICAgICAgICBpZiBmYWlsdXJlcyBpcyBOb25lOgotICAgICAgICAg
ICAgICAgIGFib3J0KDQwNCwgZGVzY3JpcHRpb249J05vIHRlc3QgcnVucyBmb3VuZCB3aXRoIHRo
ZSBzcGVjaWZpZWQgY3JpdGVyaWEnKQotCi0gICAgICAgICAgICBpZiBjb2xsYXBzZWQ6Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIGpzb25pZnkoc29ydGVkKHNldChmYWlsdXJlcykpKQotCi0gICAg
ICAgICAgICByZXNwb25zZSA9IFtdCi0gICAgICAgICAgICBmb3IgY29uZmlnLCByZXN1bHRzIGlu
IGZhaWx1cmVzLml0ZW1zKCk6Ci0gICAgICAgICAgICAgICAgcmVzcG9uc2UuYXBwZW5kKGRpY3Qo
Ci0gICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb249Q29uZmlndXJhdGlvbi5FbmNvZGVy
KCkuZGVmYXVsdChjb25maWcpLAotICAgICAgICAgICAgICAgICAgICByZXN1bHRzPXNvcnRlZChy
ZXN1bHRzLCBrZXk9c29ydF9mdW5jdGlvbiksCi0gICAgICAgICAgICAgICAgKSkKLSAgICAgICAg
ICAgIHJldHVybiBqc29uaWZ5KHJlc3BvbnNlKQpJbmRleDogVG9vbHMvcmVzdWx0c2RicHkvcmVz
dWx0c2RicHkvY29udHJvbGxlci9mYWlsdXJlX2NvbnRyb2xsZXJfdW5pdHRlc3QucHkKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci9mYWlsdXJl
X2NvbnRyb2xsZXJfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI2NTUzMSkKKysrIFRvb2xzL3Jlc3Vs
dHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvZmFpbHVyZV9jb250cm9sbGVyX3VuaXR0ZXN0
LnB5CShub25leGlzdGVudCkKQEAgLTEsMTE4ICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUgotIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0jIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSCi0jIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0jIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0KLWltcG9ydCB0aW1lCi0KLWZyb20gZmFrZXJlZGlzIGltcG9ydCBG
YWtlU3RyaWN0UmVkaXMKLWZyb20gcmVkaXMgaW1wb3J0IFN0cmljdFJlZGlzCi1mcm9tIHJlc3Vs
dHNkYnB5LmNvbnRyb2xsZXIuYXBpX3JvdXRlcyBpbXBvcnQgQVBJUm91dGVzCi1mcm9tIHJlc3Vs
dHNkYnB5LmZsYXNrX3N1cHBvcnQuZmxhc2tfdGVzdGNhc2UgaW1wb3J0IEZsYXNrVGVzdENhc2UK
LWZyb20gcmVzdWx0c2RicHkubW9kZWwuY2Fzc2FuZHJhX2NvbnRleHQgaW1wb3J0IENhc3NhbmRy
YUNvbnRleHQKLWZyb20gcmVzdWx0c2RicHkubW9kZWwubW9ja19jYXNzYW5kcmFfY29udGV4dCBp
bXBvcnQgTW9ja0Nhc3NhbmRyYUNvbnRleHQKLWZyb20gcmVzdWx0c2RicHkubW9kZWwubW9ja19t
b2RlbF9mYWN0b3J5IGltcG9ydCBNb2NrTW9kZWxGYWN0b3J5Ci1mcm9tIHJlc3VsdHNkYnB5Lm1v
ZGVsLnRlc3RfY29udGV4dCBpbXBvcnQgRXhwZWN0YXRpb25zCi1mcm9tIHJlc3VsdHNkYnB5Lm1v
ZGVsLndhaXRfZm9yX2RvY2tlcl90ZXN0X2Nhc2UgaW1wb3J0IFdhaXRGb3JEb2NrZXJUZXN0Q2Fz
ZQotCi0KLWNsYXNzIEZhaWx1cmVDb250cm9sbGVyVGVzdChGbGFza1Rlc3RDYXNlLCBXYWl0Rm9y
RG9ja2VyVGVzdENhc2UpOgotICAgIEtFWVNQQUNFID0gJ2ZhaWx1cmVfY29udHJvbGxlcl90ZXN0
X2tleXNwYWNlJwotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHNldHVwX3dlYnNlcnZlcihj
bHMsIGFwcCwgcmVkaXM9U3RyaWN0UmVkaXMsIGNhc3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0KToK
LSAgICAgICAgY2Fzc2FuZHJhLmRyb3Bfa2V5c3BhY2Uoa2V5c3BhY2U9Y2xzLktFWVNQQUNFKQot
ICAgICAgICBtb2RlbCA9IE1vY2tNb2RlbEZhY3RvcnkuY3JlYXRlKHJlZGlzPXJlZGlzKCksIGNh
c3NhbmRyYT1jYXNzYW5kcmEoa2V5c3BhY2U9Y2xzLktFWVNQQUNFLCBjcmVhdGVfa2V5c3BhY2U9
VHJ1ZSkpCi0gICAgICAgIGFwcC5yZWdpc3Rlcl9ibHVlcHJpbnQoQVBJUm91dGVzKG1vZGVsKSkK
LQotICAgICAgICBNb2NrTW9kZWxGYWN0b3J5LmFkZF9tb2NrX3Jlc3VsdHMobW9kZWwsIHRlc3Rf
cmVzdWx0cz1kaWN0KAotICAgICAgICAgICAgZGV0YWlscz1kaWN0KGxpbms9J2R1bW15LWxpbmsn
KSwKLSAgICAgICAgICAgIHJ1bl9zdGF0cz1kaWN0KHRlc3RzX3NraXBwZWQ9MCksCi0gICAgICAg
ICAgICByZXN1bHRzPXsKLSAgICAgICAgICAgICAgICAnZmFzdCc6IHsKLSAgICAgICAgICAgICAg
ICAgICAgJ2VuY29kaW5nJzogewotICAgICAgICAgICAgICAgICAgICAgICAgJ2Nzcy1jYWNoZWQt
Ym9tLmh0bWwnOiBkaWN0KGV4cGVjdGVkPSdQQVNTJywgYWN0dWFsPSdGQUlMJywgdGltZT0xLjIp
LAotICAgICAgICAgICAgICAgICAgICAgICAgJ2Nzcy1jaGFyc2V0LWRlZmF1bHQueGh0bWwnOiBk
aWN0KGV4cGVjdGVkPSdGQUlMJywgYWN0dWFsPSdGQUlMJywgdGltZT0xLjIpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgJ2Nzcy1jaGFyc2V0Lmh0bWwnOiBkaWN0KGV4cGVjdGVkPSdGQUlMJywg
YWN0dWFsPSdQQVNTJywgdGltZT0xLjIpLAotICAgICAgICAgICAgICAgICAgICAgICAgJ2Nzcy1s
aW5rLWNoYXJzZXQuaHRtbCc6IGRpY3QoZXhwZWN0ZWQ9J1BBU1MnLCBhY3R1YWw9J1BBUycsIHRp
bWU9MS4yKSwKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIH0sCi0gICAgICAgICkpCi0gICAgICAgIE1vY2tNb2RlbEZhY3RvcnkucHJvY2Vzc19y
ZXN1bHRzKG1vZGVsKQotCi0gICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2Rv
Y2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3Nh
bmRyYUNvbnRleHQpCi0gICAgQEZsYXNrVGVzdENhc2UucnVuX3dpdGhfd2Vic2VydmVyKCkKLSAg
ICBkZWYgdGVzdF9mYWlsdXJlc19jb2xsYXBzZWQoc2VsZiwgY2xpZW50LCAqKmt3YXJncyk6Ci0g
ICAgICAgIHJlc3BvbnNlID0gY2xpZW50LmdldChzZWxmLlVSTCArICcvYXBpL2ZhaWx1cmVzL2xh
eW91dC10ZXN0cz9wbGF0Zm9ybT1pT1Mmc3R5bGU9RGVidWcmdW5leHBlY3RlZD1GYWxzZScpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzcG9uc2UuanNvbigpKSwgMikKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChyZXNwb25zZS5qc29uKCksIFsnZmFzdC9lbmNvZGluZy9jc3MtY2FjaGVk
LWJvbS5odG1sJywgJ2Zhc3QvZW5jb2RpbmcvY3NzLWNoYXJzZXQtZGVmYXVsdC54aHRtbCddKQot
Ci0gICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlz
PUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCi0g
ICAgQEZsYXNrVGVzdENhc2UucnVuX3dpdGhfd2Vic2VydmVyKCkKLSAgICBkZWYgdGVzdF91bmV4
cGVjdGVkX2ZhaWx1cmVzX2NvbGxhcHNlZChzZWxmLCBjbGllbnQsICoqa3dhcmdzKToKLSAgICAg
ICAgcmVzcG9uc2UgPSBjbGllbnQuZ2V0KHNlbGYuVVJMICsgJy9hcGkvZmFpbHVyZXMvbGF5b3V0
LXRlc3RzP3BsYXRmb3JtPWlPUyZzdHlsZT1EZWJ1ZycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChs
ZW4ocmVzcG9uc2UuanNvbigpKSwgMSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25z
ZS5qc29uKCksIFsnZmFzdC9lbmNvZGluZy9jc3MtY2FjaGVkLWJvbS5odG1sJ10pCi0KLSAgICBA
V2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0
cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKLSAgICBARmxh
c2tUZXN0Q2FzZS5ydW5fd2l0aF93ZWJzZXJ2ZXIoKQotICAgIGRlZiB0ZXN0X2ZhaWx1cmVzKHNl
bGYsIGNsaWVudCwgKiprd2FyZ3MpOgotICAgICAgICByZXNwb25zZSA9IGNsaWVudC5nZXQoc2Vs
Zi5VUkwgKyAnL2FwaS9mYWlsdXJlcy9sYXlvdXQtdGVzdHM/cGxhdGZvcm09TWFjJnN0eWxlPURl
YnVnJnVuZXhwZWN0ZWQ9RmFsc2UmY29sbGFwc2VkPUZhbHNlJykKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChyZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGxlbihyZXNwb25zZS5qc29uKCkpLCAyKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxl
bihyZXNwb25zZS5qc29uKClbMF1bJ3Jlc3VsdHMnXSksIDUpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwocmVzcG9uc2UuanNvbigpWzBdWydyZXN1bHRzJ11bMF1bJ2Zhc3QvZW5jb2RpbmcvY3Nz
LWNhY2hlZC1ib20uaHRtbCddLCAnRkFJTCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVz
cG9uc2UuanNvbigpWzBdWydyZXN1bHRzJ11bMF1bJ2Zhc3QvZW5jb2RpbmcvY3NzLWNoYXJzZXQt
ZGVmYXVsdC54aHRtbCddLCAnRkFJTCcpCi0KLSAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1v
Y2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRy
YT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKLSAgICBARmxhc2tUZXN0Q2FzZS5ydW5fd2l0aF93ZWJz
ZXJ2ZXIoKQotICAgIGRlZiB0ZXN0X3VuZXhwZWN0ZWRfZmFpbHVyZXMoc2VsZiwgY2xpZW50LCAq
Kmt3YXJncyk6Ci0gICAgICAgIHJlc3BvbnNlID0gY2xpZW50LmdldChzZWxmLlVSTCArICcvYXBp
L2ZhaWx1cmVzL2xheW91dC10ZXN0cz9wbGF0Zm9ybT1NYWMmc3R5bGU9RGVidWcmY29sbGFwc2Vk
PUZhbHNlJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5zdGF0dXNfY29kZSwg
MjAwKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZXNwb25zZS5qc29uKCkpLCAyKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZXNwb25zZS5qc29uKClbMF1bJ3Jlc3VsdHMn
XSksIDUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2UuanNvbigpWzBdWydyZXN1
bHRzJ11bMF1bJ2Zhc3QvZW5jb2RpbmcvY3NzLWNhY2hlZC1ib20uaHRtbCddLCAnRkFJTCcpCi0K
LSAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9
RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKLSAg
ICBARmxhc2tUZXN0Q2FzZS5ydW5fd2l0aF93ZWJzZXJ2ZXIoKQotICAgIGRlZiB0ZXN0X2ZhaWx1
cmVfYnlfdGltZShzZWxmLCBjbGllbnQsICoqa3dhcmdzKToKLSAgICAgICAgcmVzcG9uc2UgPSBj
bGllbnQuZ2V0KGYne3NlbGYuVVJMfS9hcGkvZmFpbHVyZXMvbGF5b3V0LXRlc3RzP3BsYXRmb3Jt
PWlPUyZzdHlsZT1EZWJ1ZyZyZWNlbnQ9RmFsc2UmYWZ0ZXJfdGltZT17dGltZS50aW1lKCkgLSA2
MCAqIDYwfSZjb2xsYXBzZWQ9RmFsc2UnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3Bv
bnNlLnN0YXR1c19jb2RlLCAyMDApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlc3Bv
bnNlLmpzb24oKSksIDIpCi0gICAgICAgIGZvciBpIGluIHJhbmdlKDIpOgotICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzcG9uc2UuanNvbigpW2ldWydyZXN1bHRzJ10pLCA1KQot
ICAgICAgICAgICAgbGFzdF9zdGFydF90aW1lID0gMAotICAgICAgICAgICAgZm9yIHJlc3VsdCBp
biByZXNwb25zZS5qc29uKClbaV1bJ3Jlc3VsdHMnXToKLSAgICAgICAgICAgICAgICBzZWxmLmFz
c2VydEdyZWF0ZXJFcXVhbChyZXN1bHRbJ3N0YXJ0X3RpbWUnXSwgbGFzdF9zdGFydF90aW1lKQot
ICAgICAgICAgICAgICAgIGxhc3Rfc3RhcnRfdGltZSA9IHJlc3VsdFsnc3RhcnRfdGltZSddCi0K
LSAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9
RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKLSAg
ICBARmxhc2tUZXN0Q2FzZS5ydW5fd2l0aF93ZWJzZXJ2ZXIoKQotICAgIGRlZiB0ZXN0X25vX3J1
bnMoc2VsZiwgY2xpZW50LCAqKmt3YXJncyk6Ci0gICAgICAgIHJlc3BvbnNlID0gY2xpZW50Lmdl
dChmJ3tzZWxmLlVSTH0vYXBpL2ZhaWx1cmVzL2xheW91dC10ZXN0cz9wbGF0Zm9ybT1pT1Mmc3R5
bGU9RGVidWcmcmVjZW50PUZhbHNlJmJlZm9yZV91dWlkPTAnKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHJlc3BvbnNlLnN0YXR1c19jb2RlLCA0MDQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwocmVzcG9uc2UuanNvbigpLCBkaWN0KAotICAgICAgICAgICAgc3RhdHVzPSdlcnJvcicsCi0g
ICAgICAgICAgICBlcnJvcj0nTm90IEZvdW5kJywKLSAgICAgICAgICAgIGRlc2NyaXB0aW9uPSdO
byB0ZXN0IHJ1bnMgZm91bmQgd2l0aCB0aGUgc3BlY2lmaWVkIGNyaXRlcmlhJywKLSAgICAgICAg
KSkKSW5kZXg6IFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvc3VpdGVf
Y29udHJvbGxlci5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJw
eS9jb250cm9sbGVyL3N1aXRlX2NvbnRyb2xsZXIucHkJKHJldmlzaW9uIDI2NTUzMSkKKysrIFRv
b2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvc3VpdGVfY29udHJvbGxlci5w
eQkobm9uZXhpc3RlbnQpCkBAIC0xLDEwNiArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
IyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5E
Ci0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IKLSMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotIyBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUgotIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotIyBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
IyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotCi1mcm9tIGZsYXNrIGltcG9ydCBhYm9ydCwganNvbmlmeSwgcmVxdWVz
dAotZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVyLmNvbW1pdF9jb250cm9sbGVyIGltcG9ydCB1
dWlkX3JhbmdlX2Zvcl9xdWVyeSwgSGFzQ29tbWl0Q29udGV4dAotZnJvbSByZXN1bHRzZGJweS5j
b250cm9sbGVyLmNvbmZpZ3VyYXRpb24gaW1wb3J0IENvbmZpZ3VyYXRpb24KLWZyb20gcmVzdWx0
c2RicHkuY29udHJvbGxlci5jb25maWd1cmF0aW9uX2NvbnRyb2xsZXIgaW1wb3J0IGNvbmZpZ3Vy
YXRpb25fZm9yX3F1ZXJ5Ci1mcm9tIHJlc3VsdHNkYnB5LmZsYXNrX3N1cHBvcnQudXRpbCBpbXBv
cnQgQXNzZXJ0UmVxdWVzdCwgcXVlcnlfYXNfa3dhcmdzLCBsaW1pdF9mb3JfcXVlcnksIGJvb2xl
YW5fcXVlcnkKLQotCi1kZWYgdGltZV9yYW5nZV9mb3JfcXVlcnkoKToKLSAgICBkZWYgZGVjb3Jh
dG9yKG1ldGhvZCk6Ci0gICAgICAgIGRlZiByZWFsX21ldGhvZChzZWxmPU5vbmUsIG1ldGhvZD1t
ZXRob2QsICoqa3dhcmdzKToKLSAgICAgICAgICAgIGZvciBxdWVyeV9rZXksIGt3YXJnX2tleSBp
biBbKCdhZnRlcl90aW1lJywgJ2JlZ2luX3F1ZXJ5X3RpbWUnKSwgKCdiZWZvcmVfdGltZScsICdl
bmRfcXVlcnlfdGltZScpXToKLSAgICAgICAgICAgICAgICBpZiBub3Qga3dhcmdzLmdldChxdWVy
eV9rZXkpOgotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgIHRy
eToKLSAgICAgICAgICAgICAgICAgICAga3dhcmdzW2t3YXJnX2tleV0gPSByb3VuZChmbG9hdChr
d2FyZ3NbcXVlcnlfa2V5XVstMV0pKQotICAgICAgICAgICAgICAgICAgICBkZWwga3dhcmdzW3F1
ZXJ5X2tleV0KLSAgICAgICAgICAgICAgICAgICAgaWYga3dhcmdzW2t3YXJnX2tleV0gPD0gMDoK
LSAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoKQotICAgICAgICAgICAg
ICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgotICAgICAgICAgICAgICAgICAgICBhYm9ydCg0MDAsIGRl
c2NyaXB0aW9uPSdTdGFydCB0aW1lIG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyJykKLSAgICAg
ICAgICAgIGlmIHNlbGY6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG1ldGhvZChzZWxmPXNlbGYs
ICoqa3dhcmdzKQotICAgICAgICAgICAgcmV0dXJuIG1ldGhvZCgqKmt3YXJncykKLQotICAgICAg
ICByZWFsX21ldGhvZC5fX25hbWVfXyA9IG1ldGhvZC5fX25hbWVfXwotICAgICAgICByZXR1cm4g
cmVhbF9tZXRob2QKLSAgICByZXR1cm4gZGVjb3JhdG9yCi0KLQotY2xhc3MgU3VpdGVDb250cm9s
bGVyKEhhc0NvbW1pdENvbnRleHQpOgotICAgIERFRkFVTFRfTElNSVQgPSAxMDAwCi0KLSAgICBk
ZWYgX19pbml0X18oc2VsZiwgc3VpdGVfY29udGV4dCk6Ci0gICAgICAgIHN1cGVyKFN1aXRlQ29u
dHJvbGxlciwgc2VsZikuX19pbml0X18oc3VpdGVfY29udGV4dC5jb21taXRfY29udGV4dCkKLSAg
ICAgICAgc2VsZi5zdWl0ZV9jb250ZXh0ID0gc3VpdGVfY29udGV4dAotCi0gICAgQHF1ZXJ5X2Fz
X2t3YXJncygpCi0gICAgQHV1aWRfcmFuZ2VfZm9yX3F1ZXJ5KCkKLSAgICBAbGltaXRfZm9yX3F1
ZXJ5KERFRkFVTFRfTElNSVQpCi0gICAgQGNvbmZpZ3VyYXRpb25fZm9yX3F1ZXJ5KCkKLSAgICBA
dGltZV9yYW5nZV9mb3JfcXVlcnkoKQotICAgIGRlZiBmaW5kX3J1bl9yZXN1bHRzKAotICAgICAg
ICBzZWxmLCBzdWl0ZT1Ob25lLCBjb25maWd1cmF0aW9ucz1Ob25lLCByZWNlbnQ9Tm9uZSwKLSAg
ICAgICAgYnJhbmNoPU5vbmUsIGJlZ2luPU5vbmUsIGVuZD1Ob25lLAotICAgICAgICBiZWdpbl9x
dWVyeV90aW1lPU5vbmUsIGVuZF9xdWVyeV90aW1lPU5vbmUsCi0gICAgICAgIGxpbWl0PU5vbmUs
ICoqa3dhcmdzCi0gICAgKToKLSAgICAgICAgQXNzZXJ0UmVxdWVzdC5pc190eXBlKFsnR0VUJ10p
Ci0gICAgICAgIEFzc2VydFJlcXVlc3QucXVlcnlfa3dhcmdzX2VtcHR5KCoqa3dhcmdzKQotCi0g
ICAgICAgIHJlY2VudCA9IGJvb2xlYW5fcXVlcnkoKnJlY2VudClbMF0gaWYgcmVjZW50IGVsc2Ug
VHJ1ZQotCi0gICAgICAgIHdpdGggc2VsZi5zdWl0ZV9jb250ZXh0OgotICAgICAgICAgICAgaWYg
bm90IHN1aXRlOgotICAgICAgICAgICAgICAgIGFib3J0KDQwMCwgZGVzY3JpcHRpb249J05vIHN1
aXRlIHNwZWNpZmllZCcpCi0KLSAgICAgICAgICAgIHF1ZXJ5X2RpY3QgPSBkaWN0KAotICAgICAg
ICAgICAgICAgIHN1aXRlPXN1aXRlLCBjb25maWd1cmF0aW9ucz1jb25maWd1cmF0aW9ucywgcmVj
ZW50PXJlY2VudCwKLSAgICAgICAgICAgICAgICBicmFuY2g9YnJhbmNoWzBdLCBiZWdpbj1iZWdp
biwgZW5kPWVuZCwKLSAgICAgICAgICAgICAgICBiZWdpbl9xdWVyeV90aW1lPWJlZ2luX3F1ZXJ5
X3RpbWUsIGVuZF9xdWVyeV90aW1lPWVuZF9xdWVyeV90aW1lLAotICAgICAgICAgICAgICAgIGxp
bWl0PWxpbWl0LAotICAgICAgICAgICAgKQotICAgICAgICAgICAgc3BlY2lmaWVkX2NvbW1pdHMg
PSBzdW0oWzEgaWYgZWxlbWVudCBlbHNlIDAgZm9yIGVsZW1lbnQgaW4gW2JlZ2luLCBlbmRdXSkK
LSAgICAgICAgICAgIHNwZWNpZmllZF90aW1lc3RhbXBzID0gc3VtKFsxIGlmIGVsZW1lbnQgZWxz
ZSAwIGZvciBlbGVtZW50IGluIFtiZWdpbl9xdWVyeV90aW1lLCBlbmRfcXVlcnlfdGltZV1dKQot
Ci0gICAgICAgICAgICBpZiBzcGVjaWZpZWRfY29tbWl0cyA+PSBzcGVjaWZpZWRfdGltZXN0YW1w
czoKLSAgICAgICAgICAgICAgICBmaW5kX2Z1bmN0aW9uID0gc2VsZi5zdWl0ZV9jb250ZXh0LmZp
bmRfYnlfY29tbWl0Ci0KLSAgICAgICAgICAgICAgICBkZWYgc29ydF9mdW5jdGlvbihyZXN1bHQp
OgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0Wyd1dWlkJ10KLQotICAgICAgICAg
ICAgZWxzZToKLSAgICAgICAgICAgICAgICBmaW5kX2Z1bmN0aW9uID0gc2VsZi5zdWl0ZV9jb250
ZXh0LmZpbmRfYnlfc3RhcnRfdGltZQotCi0gICAgICAgICAgICAgICAgZGVmIHNvcnRfZnVuY3Rp
b24ocmVzdWx0KToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdFsnc3RhcnRfdGlt
ZSddCi0KLSAgICAgICAgICAgIHJlc3BvbnNlID0gW10KLSAgICAgICAgICAgIGZvciBjb25maWcs
IHJlc3VsdHMgaW4gZmluZF9mdW5jdGlvbigqKnF1ZXJ5X2RpY3QpLml0ZW1zKCk6Ci0gICAgICAg
ICAgICAgICAgcmVzcG9uc2UuYXBwZW5kKGRpY3QoCi0gICAgICAgICAgICAgICAgICAgIGNvbmZp
Z3VyYXRpb249Q29uZmlndXJhdGlvbi5FbmNvZGVyKCkuZGVmYXVsdChjb25maWcpLAotICAgICAg
ICAgICAgICAgICAgICByZXN1bHRzPXNvcnRlZChyZXN1bHRzLCBrZXk9c29ydF9mdW5jdGlvbiks
Ci0gICAgICAgICAgICAgICAgKSkKLSAgICAgICAgICAgIHJldHVybiBqc29uaWZ5KHJlc3BvbnNl
KQpJbmRleDogVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci9zdWl0ZV9j
b250cm9sbGVyX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL3Jlc3VsdHNkYnB5L3Jl
c3VsdHNkYnB5L2NvbnRyb2xsZXIvc3VpdGVfY29udHJvbGxlcl91bml0dGVzdC5weQkocmV2aXNp
b24gMjY1NTMxKQorKysgVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci9z
dWl0ZV9jb250cm9sbGVyX3VuaXR0ZXN0LnB5CShub25leGlzdGVudCkKQEAgLTEsMTA0ICswLDAg
QEAKLSMgQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMg
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQotIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotIyBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SCi0jIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0jIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
Ci0jIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLWltcG9ydCB0aW1lCi0K
LWZyb20gZmFrZXJlZGlzIGltcG9ydCBGYWtlU3RyaWN0UmVkaXMKLWZyb20gcmVkaXMgaW1wb3J0
IFN0cmljdFJlZGlzCi1mcm9tIHJlc3VsdHNkYnB5LmNvbnRyb2xsZXIuYXBpX3JvdXRlcyBpbXBv
cnQgQVBJUm91dGVzCi1mcm9tIHJlc3VsdHNkYnB5LmZsYXNrX3N1cHBvcnQuZmxhc2tfdGVzdGNh
c2UgaW1wb3J0IEZsYXNrVGVzdENhc2UKLWZyb20gcmVzdWx0c2RicHkubW9kZWwuY2Fzc2FuZHJh
X2NvbnRleHQgaW1wb3J0IENhc3NhbmRyYUNvbnRleHQKLWZyb20gcmVzdWx0c2RicHkubW9kZWwu
bW9ja19jYXNzYW5kcmFfY29udGV4dCBpbXBvcnQgTW9ja0Nhc3NhbmRyYUNvbnRleHQKLWZyb20g
cmVzdWx0c2RicHkubW9kZWwubW9ja19tb2RlbF9mYWN0b3J5IGltcG9ydCBNb2NrTW9kZWxGYWN0
b3J5Ci1mcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLndhaXRfZm9yX2RvY2tlcl90ZXN0X2Nhc2UgaW1w
b3J0IFdhaXRGb3JEb2NrZXJUZXN0Q2FzZQotCi0KLWNsYXNzIFN1aXRlQ29udHJvbGxlclRlc3Qo
Rmxhc2tUZXN0Q2FzZSwgV2FpdEZvckRvY2tlclRlc3RDYXNlKToKLSAgICBLRVlTUEFDRSA9ICdz
dWl0ZV9jb250cm9sbGVyX3Rlc3Rfa2V5c3BhY2UnCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBk
ZWYgc2V0dXBfd2Vic2VydmVyKGNscywgYXBwLCByZWRpcz1TdHJpY3RSZWRpcywgY2Fzc2FuZHJh
PUNhc3NhbmRyYUNvbnRleHQpOgotICAgICAgICBjYXNzYW5kcmEuZHJvcF9rZXlzcGFjZShrZXlz
cGFjZT1jbHMuS0VZU1BBQ0UpCi0gICAgICAgIG1vZGVsID0gTW9ja01vZGVsRmFjdG9yeS5jcmVh
dGUocmVkaXM9cmVkaXMoKSwgY2Fzc2FuZHJhPWNhc3NhbmRyYShrZXlzcGFjZT1jbHMuS0VZU1BB
Q0UsIGNyZWF0ZV9rZXlzcGFjZT1UcnVlKSkKLSAgICAgICAgYXBwLnJlZ2lzdGVyX2JsdWVwcmlu
dChBUElSb3V0ZXMobW9kZWwpKQotCi0gICAgICAgIE1vY2tNb2RlbEZhY3RvcnkuYWRkX21vY2tf
cmVzdWx0cyhtb2RlbCkKLSAgICAgICAgTW9ja01vZGVsRmFjdG9yeS5wcm9jZXNzX3Jlc3VsdHMo
bW9kZWwpCi0KLSAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1v
Y2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29u
dGV4dCkKLSAgICBARmxhc2tUZXN0Q2FzZS5ydW5fd2l0aF93ZWJzZXJ2ZXIoKQotICAgIGRlZiB0
ZXN0X3Jlc3VsdHNfbm9fc3VpdGUoc2VsZiwgY2xpZW50LCAqKmt3YXJncyk6Ci0gICAgICAgIHJl
c3BvbnNlID0gY2xpZW50LmdldChzZWxmLlVSTCArICcvYXBpL3Jlc3VsdHMnKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLnN0YXR1c19jb2RlLCA0MDQpCi0KLSAgICBAV2FpdEZv
ckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJl
ZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKLSAgICBARmxhc2tUZXN0
Q2FzZS5ydW5fd2l0aF93ZWJzZXJ2ZXIoKQotICAgIGRlZiB0ZXN0X3Jlc3VsdHMoc2VsZiwgY2xp
ZW50LCAqKmt3YXJncyk6Ci0gICAgICAgIHJlc3BvbnNlID0gY2xpZW50LmdldChzZWxmLlVSTCAr
ICcvYXBpL3Jlc3VsdHMvbGF5b3V0LXRlc3RzP3BsYXRmb3JtPWlPUyZzdHlsZT1EZWJ1ZycpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzcG9uc2UuanNvbigpKSwgMikKLSAgICAgICAgZm9y
IGkgaW4gcmFuZ2UoMik6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZXNwb25z
ZS5qc29uKClbaV1bJ3Jlc3VsdHMnXSksIDUpCi0KLSAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNl
Lm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3Nh
bmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKLSAgICBARmxhc2tUZXN0Q2FzZS5ydW5fd2l0aF93
ZWJzZXJ2ZXIoKQotICAgIGRlZiB0ZXN0X3Jlc3VsdHNfYnlfc2RrKHNlbGYsIGNsaWVudCwgKipr
d2FyZ3MpOgotICAgICAgICByZXNwb25zZSA9IGNsaWVudC5nZXQoc2VsZi5VUkwgKyAnL2FwaS9y
ZXN1bHRzL2xheW91dC10ZXN0cz9wbGF0Zm9ybT1pT1Mmc3R5bGU9RGVidWcmaXNfc2ltdWxhdG9y
PVRydWUmcmVjZW50PUZhbHNlJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5z
dGF0dXNfY29kZSwgMjAwKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZXNwb25zZS5q
c29uKCkpLCAyKQotCi0gICAgICAgIHJlc3BvbnNlID0gY2xpZW50LmdldChzZWxmLlVSTCArICcv
YXBpL3Jlc3VsdHMvbGF5b3V0LXRlc3RzP3BsYXRmb3JtPWlPUyZzdHlsZT1EZWJ1ZyZpc19zaW11
bGF0b3I9VHJ1ZSZyZWNlbnQ9RmFsc2Umc2RrPTE1QTQzMicpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChsZW4ocmVzcG9uc2UuanNvbigpKSwgMSkKLQotICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2Uu
bW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2Fu
ZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQotICAgIEBGbGFza1Rlc3RDYXNlLnJ1bl93aXRoX3dl
YnNlcnZlcigpCi0gICAgZGVmIHRlc3RfcmVzdWx0c19ieV9jb21taXQoc2VsZiwgY2xpZW50LCAq
Kmt3YXJncyk6Ci0gICAgICAgIHJlc3BvbnNlID0gY2xpZW50LmdldChzZWxmLlVSTCArICcvYXBp
L3Jlc3VsdHMvbGF5b3V0LXRlc3RzP3BsYXRmb3JtPWlPUyZzdHlsZT1EZWJ1ZyZhZnRlcl9pZD0z
MzY2MTBhODQmYmVmb3JlX2lkPTIzNjU0MicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVz
cG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVz
cG9uc2UuanNvbigpKSwgMikKLSAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMik6Ci0gICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZXNwb25zZS5qc29uKClbaV1bJ3Jlc3VsdHMnXSksIDMp
Ci0gICAgICAgICAgICBsYXN0X3VkaWQgPSAwCi0gICAgICAgICAgICBmb3IgcmVzdWx0IGluIHJl
c3BvbnNlLmpzb24oKVtpXVsncmVzdWx0cyddOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0
R3JlYXRlckVxdWFsKHJlc3VsdFsndXVpZCddLCBsYXN0X3VkaWQpCi0gICAgICAgICAgICAgICAg
bGFzdF91ZGlkID0gcmVzdWx0Wyd1dWlkJ10KLQotICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2Uu
bW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2Fu
ZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQotICAgIEBGbGFza1Rlc3RDYXNlLnJ1bl93aXRoX3dl
YnNlcnZlcigpCi0gICAgZGVmIHRlc3RfcmVzdWx0c19ieV90aW1lKHNlbGYsIGNsaWVudCwgKipr
d2FyZ3MpOgotICAgICAgICByZXNwb25zZSA9IGNsaWVudC5nZXQoZid7c2VsZi5VUkx9L2FwaS9y
ZXN1bHRzL2xheW91dC10ZXN0cz9wbGF0Zm9ybT1pT1Mmc3R5bGU9RGVidWcmcmVjZW50PUZhbHNl
JmFmdGVyX3RpbWU9e3RpbWUudGltZSgpIC0gNjAgKiA2MH0nKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHJlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwobGVuKHJlc3BvbnNlLmpzb24oKSksIDIpCi0gICAgICAgIGZvciBpIGluIHJhbmdlKDIpOgot
ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzcG9uc2UuanNvbigpW2ldWydyZXN1
bHRzJ10pLCA1KQotICAgICAgICAgICAgbGFzdF9zdGFydF90aW1lID0gMAotICAgICAgICAgICAg
Zm9yIHJlc3VsdCBpbiByZXNwb25zZS5qc29uKClbaV1bJ3Jlc3VsdHMnXToKLSAgICAgICAgICAg
ICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChyZXN1bHRbJ3N0YXJ0X3RpbWUnXSwgbGFzdF9z
dGFydF90aW1lKQotICAgICAgICAgICAgICAgIGxhc3Rfc3RhcnRfdGltZSA9IHJlc3VsdFsnc3Rh
cnRfdGltZSddCi0KLSAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2Vy
KG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJh
Q29udGV4dCkKLSAgICBARmxhc2tUZXN0Q2FzZS5ydW5fd2l0aF93ZWJzZXJ2ZXIoKQotICAgIGRl
ZiB0ZXN0X25vX3Jlc3VsdHNfYnlfdGltZShzZWxmLCBjbGllbnQsICoqa3dhcmdzKToKLSAgICAg
ICAgcmVzcG9uc2UgPSBjbGllbnQuZ2V0KHNlbGYuVVJMICsgZicvYXBpL3Jlc3VsdHMvbGF5b3V0
LXRlc3RzP3BsYXRmb3JtPWlPUyZzdHlsZT1EZWJ1ZyZyZWNlbnQ9RmFsc2UmYWZ0ZXJfdGltZT17
dGltZS50aW1lKCkgKyAxfScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2Uuc3Rh
dHVzX2NvZGUsIDIwMCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzcG9uc2UuanNv
bigpKSwgMCkKSW5kZXg6IFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIv
dGVzdF9jb250cm9sbGVyLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3Vs
dHNkYnB5L2NvbnRyb2xsZXIvdGVzdF9jb250cm9sbGVyLnB5CShyZXZpc2lvbiAyNjU1MzEpCisr
KyBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9jb250cm9sbGVyL3Rlc3RfY29udHJvbGxl
ci5weQkobm9uZXhpc3RlbnQpCkBAIC0xLDEwNCArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIg
QU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotIyBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUgotIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotIyBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotCi1mcm9tIGZsYXNrIGltcG9ydCBhYm9ydCwganNvbmlmeQotZnJv
bSByZXN1bHRzZGJweS5jb250cm9sbGVyLmNvbW1pdF9jb250cm9sbGVyIGltcG9ydCB1dWlkX3Jh
bmdlX2Zvcl9xdWVyeSwgSGFzQ29tbWl0Q29udGV4dAotZnJvbSByZXN1bHRzZGJweS5jb250cm9s
bGVyLmNvbmZpZ3VyYXRpb24gaW1wb3J0IENvbmZpZ3VyYXRpb24KLWZyb20gcmVzdWx0c2RicHku
Y29udHJvbGxlci5jb25maWd1cmF0aW9uX2NvbnRyb2xsZXIgaW1wb3J0IGNvbmZpZ3VyYXRpb25f
Zm9yX3F1ZXJ5Ci1mcm9tIHJlc3VsdHNkYnB5LmNvbnRyb2xsZXIuc3VpdGVfY29udHJvbGxlciBp
bXBvcnQgdGltZV9yYW5nZV9mb3JfcXVlcnkKLWZyb20gcmVzdWx0c2RicHkuZmxhc2tfc3VwcG9y
dC51dGlsIGltcG9ydCBBc3NlcnRSZXF1ZXN0LCBxdWVyeV9hc19rd2FyZ3MsIGxpbWl0X2Zvcl9x
dWVyeSwgYm9vbGVhbl9xdWVyeQotCi0KLWNsYXNzIFRlc3RDb250cm9sbGVyKEhhc0NvbW1pdENv
bnRleHQpOgotICAgIERFRkFVTFRfTElNSVQgPSAxMDAwCi0KLSAgICBkZWYgX19pbml0X18oc2Vs
ZiwgdGVzdF9jb250ZXh0KToKLSAgICAgICAgc3VwZXIoVGVzdENvbnRyb2xsZXIsIHNlbGYpLl9f
aW5pdF9fKHRlc3RfY29udGV4dC5jb21taXRfY29udGV4dCkKLSAgICAgICAgc2VsZi50ZXN0X2Nv
bnRleHQgPSB0ZXN0X2NvbnRleHQKLQotICAgIEBxdWVyeV9hc19rd2FyZ3MoKQotICAgIEBsaW1p
dF9mb3JfcXVlcnkoREVGQVVMVF9MSU1JVCkKLSAgICBkZWYgbGlzdF90ZXN0cyhzZWxmLCBzdWl0
ZT1Ob25lLCB0ZXN0PU5vbmUsIGxpbWl0PU5vbmUsICoqa3dhcmdzKToKLSAgICAgICAgQXNzZXJ0
UmVxdWVzdC5pc190eXBlKFsnR0VUJ10pCi0gICAgICAgIEFzc2VydFJlcXVlc3QucXVlcnlfa3dh
cmdzX2VtcHR5KCoqa3dhcmdzKQotCi0gICAgICAgIGlmIG5vdCBzdWl0ZToKLSAgICAgICAgICAg
IGFib3J0KDQwMCwgZGVzY3JpcHRpb249J05vIHN1aXRlIHNwZWNpZmllZCcpCi0KLSAgICAgICAg
d2l0aCBzZWxmLnRlc3RfY29udGV4dDoKLSAgICAgICAgICAgIG1hdGNoaW5nX3Rlc3RzID0gc2V0
KCkKLSAgICAgICAgICAgIGZvciB0IGluIHRlc3Qgb3IgW05vbmVdOgotICAgICAgICAgICAgICAg
IG1hdGNoaW5nX3Rlc3RzLnVwZGF0ZShzZWxmLnRlc3RfY29udGV4dC5uYW1lcyhzdWl0ZT1zdWl0
ZSwgdGVzdD10LCBsaW1pdD1saW1pdCAtIGxlbihtYXRjaGluZ190ZXN0cykpKQotICAgICAgICAg
ICAgcmV0dXJuIGpzb25pZnkoc29ydGVkKG1hdGNoaW5nX3Rlc3RzKSkKLQotICAgIEBxdWVyeV9h
c19rd2FyZ3MoKQotICAgIEB1dWlkX3JhbmdlX2Zvcl9xdWVyeSgpCi0gICAgQGxpbWl0X2Zvcl9x
dWVyeShERUZBVUxUX0xJTUlUKQotICAgIEBjb25maWd1cmF0aW9uX2Zvcl9xdWVyeSgpCi0gICAg
QHRpbWVfcmFuZ2VfZm9yX3F1ZXJ5KCkKLSAgICBkZWYgZmluZF90ZXN0X3Jlc3VsdCgKLSAgICAg
ICAgc2VsZiwgc3VpdGU9Tm9uZSwgdGVzdD1Ob25lLAotICAgICAgICBjb25maWd1cmF0aW9ucz1O
b25lLCByZWNlbnQ9Tm9uZSwKLSAgICAgICAgYnJhbmNoPU5vbmUsIGJlZ2luPU5vbmUsIGVuZD1O
b25lLAotICAgICAgICBiZWdpbl9xdWVyeV90aW1lPU5vbmUsIGVuZF9xdWVyeV90aW1lPU5vbmUs
Ci0gICAgICAgIGxpbWl0PU5vbmUsICoqa3dhcmdzCi0gICAgKToKLSAgICAgICAgQXNzZXJ0UmVx
dWVzdC5pc190eXBlKFsnR0VUJ10pCi0gICAgICAgIEFzc2VydFJlcXVlc3QucXVlcnlfa3dhcmdz
X2VtcHR5KCoqa3dhcmdzKQotCi0gICAgICAgIHJlY2VudCA9IGJvb2xlYW5fcXVlcnkoKnJlY2Vu
dClbMF0gaWYgcmVjZW50IGVsc2UgVHJ1ZQotCi0gICAgICAgIGlmIG5vdCBzdWl0ZToKLSAgICAg
ICAgICAgIGFib3J0KDQwMCwgZGVzY3JpcHRpb249J05vIHN1aXRlIHNwZWNpZmllZCcpCi0gICAg
ICAgIGlmIG5vdCB0ZXN0OgotICAgICAgICAgICAgYWJvcnQoNDAwLCBkZXNjcmlwdGlvbj0nTm8g
dGVzdCBzcGVjaWZpZWQnKQotCi0gICAgICAgIHdpdGggc2VsZi50ZXN0X2NvbnRleHQ6Ci0gICAg
ICAgICAgICBxdWVyeV9kaWN0ID0gZGljdCgKLSAgICAgICAgICAgICAgICBzdWl0ZT1zdWl0ZSwg
dGVzdD10ZXN0LAotICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25zPWNvbmZpZ3VyYXRpb25z
LCByZWNlbnQ9cmVjZW50LAotICAgICAgICAgICAgICAgIGJyYW5jaD1icmFuY2hbMF0sIGJlZ2lu
PWJlZ2luLCBlbmQ9ZW5kLAotICAgICAgICAgICAgICAgIGJlZ2luX3F1ZXJ5X3RpbWU9YmVnaW5f
cXVlcnlfdGltZSwgZW5kX3F1ZXJ5X3RpbWU9ZW5kX3F1ZXJ5X3RpbWUsCi0gICAgICAgICAgICAg
ICAgbGltaXQ9bGltaXQsCi0gICAgICAgICAgICApCi0gICAgICAgICAgICBzcGVjaWZpZWRfY29t
bWl0cyA9IHN1bShbMSBpZiBlbGVtZW50IGVsc2UgMCBmb3IgZWxlbWVudCBpbiBbYmVnaW4sIGVu
ZF1dKQotICAgICAgICAgICAgc3BlY2lmaWVkX3RpbWVzdGFtcHMgPSBzdW0oWzEgaWYgZWxlbWVu
dCBlbHNlIDAgZm9yIGVsZW1lbnQgaW4gW2JlZ2luX3F1ZXJ5X3RpbWUsIGVuZF9xdWVyeV90aW1l
XV0pCi0KLSAgICAgICAgICAgIGlmIHNwZWNpZmllZF9jb21taXRzID49IHNwZWNpZmllZF90aW1l
c3RhbXBzOgotICAgICAgICAgICAgICAgIGZpbmRfZnVuY3Rpb24gPSBzZWxmLnRlc3RfY29udGV4
dC5maW5kX2J5X2NvbW1pdAotCi0gICAgICAgICAgICAgICAgZGVmIHNvcnRfZnVuY3Rpb24ocmVz
dWx0KToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdFsndXVpZCddCi0KLSAgICAg
ICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZmluZF9mdW5jdGlvbiA9IHNlbGYudGVzdF9j
b250ZXh0LmZpbmRfYnlfc3RhcnRfdGltZQotCi0gICAgICAgICAgICAgICAgZGVmIHNvcnRfZnVu
Y3Rpb24ocmVzdWx0KToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdFsnc3RhcnRf
dGltZSddCi0KLSAgICAgICAgICAgIHJlc3BvbnNlID0gW10KLSAgICAgICAgICAgIGZvciBjb25m
aWcsIHJlc3VsdHMgaW4gZmluZF9mdW5jdGlvbigqKnF1ZXJ5X2RpY3QpLml0ZW1zKCk6Ci0gICAg
ICAgICAgICAgICAgcmVzcG9uc2UuYXBwZW5kKGRpY3QoCi0gICAgICAgICAgICAgICAgICAgIGNv
bmZpZ3VyYXRpb249Q29uZmlndXJhdGlvbi5FbmNvZGVyKCkuZGVmYXVsdChjb25maWcpLAotICAg
ICAgICAgICAgICAgICAgICByZXN1bHRzPXNvcnRlZChyZXN1bHRzLCBrZXk9c29ydF9mdW5jdGlv
biksCi0gICAgICAgICAgICAgICAgKSkKLSAgICAgICAgICAgIHJldHVybiBqc29uaWZ5KHJlc3Bv
bnNlKQpJbmRleDogVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci90ZXN0
X2NvbnRyb2xsZXJfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvcmVzdWx0c2RicHkv
cmVzdWx0c2RicHkvY29udHJvbGxlci90ZXN0X2NvbnRyb2xsZXJfdW5pdHRlc3QucHkJKHJldmlz
aW9uIDI2NTUzMSkKKysrIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIv
dGVzdF9jb250cm9sbGVyX3VuaXR0ZXN0LnB5CShub25leGlzdGVudCkKQEAgLTEsMTM3ICswLDAg
QEAKLSMgQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMg
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQotIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotIyBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SCi0jIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0jIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
Ci0jIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLWltcG9ydCB0aW1lCi0K
LWZyb20gZmFrZXJlZGlzIGltcG9ydCBGYWtlU3RyaWN0UmVkaXMKLWZyb20gcmVkaXMgaW1wb3J0
IFN0cmljdFJlZGlzCi1mcm9tIHJlc3VsdHNkYnB5LmNvbnRyb2xsZXIuYXBpX3JvdXRlcyBpbXBv
cnQgQVBJUm91dGVzCi1mcm9tIHJlc3VsdHNkYnB5LmZsYXNrX3N1cHBvcnQuZmxhc2tfdGVzdGNh
c2UgaW1wb3J0IEZsYXNrVGVzdENhc2UKLWZyb20gcmVzdWx0c2RicHkubW9kZWwuY2Fzc2FuZHJh
X2NvbnRleHQgaW1wb3J0IENhc3NhbmRyYUNvbnRleHQKLWZyb20gcmVzdWx0c2RicHkubW9kZWwu
bW9ja19jYXNzYW5kcmFfY29udGV4dCBpbXBvcnQgTW9ja0Nhc3NhbmRyYUNvbnRleHQKLWZyb20g
cmVzdWx0c2RicHkubW9kZWwubW9ja19tb2RlbF9mYWN0b3J5IGltcG9ydCBNb2NrTW9kZWxGYWN0
b3J5Ci1mcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLnRlc3RfY29udGV4dCBpbXBvcnQgRXhwZWN0YXRp
b25zCi1mcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLndhaXRfZm9yX2RvY2tlcl90ZXN0X2Nhc2UgaW1w
b3J0IFdhaXRGb3JEb2NrZXJUZXN0Q2FzZQotCi0KLWNsYXNzIFRlc3RDb250cm9sbGVyVGVzdChG
bGFza1Rlc3RDYXNlLCBXYWl0Rm9yRG9ja2VyVGVzdENhc2UpOgotICAgIEtFWVNQQUNFID0gJ3Rl
c3RfY29udHJvbGxlcl90ZXN0X2tleXNwYWNlJwotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVm
IHNldHVwX3dlYnNlcnZlcihjbHMsIGFwcCwgcmVkaXM9U3RyaWN0UmVkaXMsIGNhc3NhbmRyYT1D
YXNzYW5kcmFDb250ZXh0KToKLSAgICAgICAgY2Fzc2FuZHJhLmRyb3Bfa2V5c3BhY2Uoa2V5c3Bh
Y2U9Y2xzLktFWVNQQUNFKQotICAgICAgICBtb2RlbCA9IE1vY2tNb2RlbEZhY3RvcnkuY3JlYXRl
KHJlZGlzPXJlZGlzKCksIGNhc3NhbmRyYT1jYXNzYW5kcmEoa2V5c3BhY2U9Y2xzLktFWVNQQUNF
LCBjcmVhdGVfa2V5c3BhY2U9VHJ1ZSkpCi0gICAgICAgIGFwcC5yZWdpc3Rlcl9ibHVlcHJpbnQo
QVBJUm91dGVzKG1vZGVsKSkKLQotICAgICAgICBNb2NrTW9kZWxGYWN0b3J5LmFkZF9tb2NrX3Jl
c3VsdHMobW9kZWwpCi0gICAgICAgIE1vY2tNb2RlbEZhY3RvcnkucHJvY2Vzc19yZXN1bHRzKG1v
ZGVsKQotCi0gICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2Nr
X3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRl
eHQpCi0gICAgQEZsYXNrVGVzdENhc2UucnVuX3dpdGhfd2Vic2VydmVyKCkKLSAgICBkZWYgdGVz
dF9saXN0X2FsbChzZWxmLCBjbGllbnQsICoqa3dhcmdzKToKLSAgICAgICAgcmVzcG9uc2UgPSBj
bGllbnQuZ2V0KHNlbGYuVVJMICsgJy9hcGkvbGF5b3V0LXRlc3RzL3Rlc3RzJykKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHJlc3BvbnNlLmpzb24oKSwgWwotICAgICAgICAgICAgJ2Zhc3QvZW5jb2Rp
bmcvY3NzLWNhY2hlZC1ib20uaHRtbCcsCi0gICAgICAgICAgICAnZmFzdC9lbmNvZGluZy9jc3Mt
Y2hhcnNldC1kZWZhdWx0LnhodG1sJywKLSAgICAgICAgICAgICdmYXN0L2VuY29kaW5nL2Nzcy1j
aGFyc2V0Lmh0bWwnLAotICAgICAgICAgICAgJ2Zhc3QvZW5jb2RpbmcvY3NzLWxpbmstY2hhcnNl
dC5odG1sJywKLSAgICAgICAgXSkKLQotICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19p
Zl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1v
Y2tDYXNzYW5kcmFDb250ZXh0KQotICAgIEBGbGFza1Rlc3RDYXNlLnJ1bl93aXRoX3dlYnNlcnZl
cigpCi0gICAgZGVmIHRlc3RfbGlzdF9hbGwoc2VsZiwgY2xpZW50LCAqKmt3YXJncyk6Ci0gICAg
ICAgIHJlc3BvbnNlID0gY2xpZW50LmdldChzZWxmLlVSTCArICcvYXBpL2xheW91dC10ZXN0cy90
ZXN0cz9saW1pdD0yJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5zdGF0dXNf
Y29kZSwgMjAwKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLmpzb24oKSwgWwot
ICAgICAgICAgICAgJ2Zhc3QvZW5jb2RpbmcvY3NzLWNhY2hlZC1ib20uaHRtbCcsCi0gICAgICAg
ICAgICAnZmFzdC9lbmNvZGluZy9jc3MtY2hhcnNldC1kZWZhdWx0LnhodG1sJywKLSAgICAgICAg
XSkKLQotICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19y
ZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0
KQotICAgIEBGbGFza1Rlc3RDYXNlLnJ1bl93aXRoX3dlYnNlcnZlcigpCi0gICAgZGVmIHRlc3Rf
bGlzdF9wYXJ0aWFsKHNlbGYsIGNsaWVudCwgKiprd2FyZ3MpOgotICAgICAgICByZXNwb25zZSA9
IGNsaWVudC5nZXQoc2VsZi5VUkwgKyAnL2FwaS9sYXlvdXQtdGVzdHMvdGVzdHM/dGVzdD1mYXN0
L2VuY29kaW5nL2Nzcy1jaGFyc2V0JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25z
ZS5zdGF0dXNfY29kZSwgMjAwKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLmpz
b24oKSwgWwotICAgICAgICAgICAgJ2Zhc3QvZW5jb2RpbmcvY3NzLWNoYXJzZXQtZGVmYXVsdC54
aHRtbCcsCi0gICAgICAgICAgICAnZmFzdC9lbmNvZGluZy9jc3MtY2hhcnNldC5odG1sJywKLSAg
ICAgICAgXSkKLQotICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIo
bW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFD
b250ZXh0KQotICAgIEBGbGFza1Rlc3RDYXNlLnJ1bl93aXRoX3dlYnNlcnZlcigpCi0gICAgZGVm
IHRlc3RfcmVzdWx0cyhzZWxmLCBjbGllbnQsICoqa3dhcmdzKToKLSAgICAgICAgcmVzcG9uc2Ug
PSBjbGllbnQuZ2V0KHNlbGYuVVJMICsgJy9hcGkvcmVzdWx0cy9sYXlvdXQtdGVzdHMvZmFzdC9l
bmNvZGluZy9jc3MtY2hhcnNldC5odG1sP3BsYXRmb3JtPWlPUyZzdHlsZT1EZWJ1ZycpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzcG9uc2UuanNvbigpKSwgMikKLQotICAgICAgICBmb3Ig
aSBpbiByYW5nZSgyKToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlc3BvbnNl
Lmpzb24oKVtpXVsncmVzdWx0cyddKSwgNSkKLSAgICAgICAgICAgIGZvciByZXN1bHQgaW4gcmVz
cG9uc2UuanNvbigpW2ldWydyZXN1bHRzJ106Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChyZXN1bHRbJ2FjdHVhbCddLCBFeHBlY3RhdGlvbnMuUEFTUykKLSAgICAgICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdFsnZXhwZWN0ZWQnXSwgRXhwZWN0YXRpb25zLlBBU1Mp
Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHRbJ3RpbWUnXSwgMS4yKQot
ICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0Wydtb2RpZmllcnMnXSwgJycp
Ci0KLSAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVk
aXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkK
LSAgICBARmxhc2tUZXN0Q2FzZS5ydW5fd2l0aF93ZWJzZXJ2ZXIoKQotICAgIGRlZiB0ZXN0X3Jl
c3VsdHNfYnlfc2RrKHNlbGYsIGNsaWVudCwgKiprd2FyZ3MpOgotICAgICAgICByZXNwb25zZSA9
IGNsaWVudC5nZXQoc2VsZi5VUkwgKyAnL2FwaS9yZXN1bHRzL2xheW91dC10ZXN0cy9mYXN0L2Vu
Y29kaW5nL2Nzcy1jYWNoZWQtYm9tLmh0bWw/cGxhdGZvcm09aU9TJnN0eWxlPURlYnVnJmlzX3Np
bXVsYXRvcj1UcnVlJnJlY2VudD1GYWxzZScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVz
cG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVz
cG9uc2UuanNvbigpKSwgMikKLQotICAgICAgICByZXNwb25zZSA9IGNsaWVudC5nZXQoc2VsZi5V
UkwgKyAnL2FwaS9yZXN1bHRzL2xheW91dC10ZXN0cy9mYXN0L2VuY29kaW5nL2Nzcy1jYWNoZWQt
Ym9tLmh0bWw/cGxhdGZvcm09aU9TJnN0eWxlPURlYnVnJmlzX3NpbXVsYXRvcj1UcnVlJnJlY2Vu
dD1GYWxzZSZzZGs9MTVBNDMyJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5z
dGF0dXNfY29kZSwgMjAwKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZXNwb25zZS5q
c29uKCkpLCAxKQotCi0gICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tl
cihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRy
YUNvbnRleHQpCi0gICAgQEZsYXNrVGVzdENhc2UucnVuX3dpdGhfd2Vic2VydmVyKCkKLSAgICBk
ZWYgdGVzdF9yZXN1bHRzX2J5X2NvbW1pdChzZWxmLCBjbGllbnQsICoqa3dhcmdzKToKLSAgICAg
ICAgcmVzcG9uc2UgPSBjbGllbnQuZ2V0KHNlbGYuVVJMICsgJy9hcGkvcmVzdWx0cy9sYXlvdXQt
dGVzdHMvZmFzdC9lbmNvZGluZy9jc3MtbGluay1jaGFyc2V0Lmh0bWw/cGxhdGZvcm09aU9TJnN0
eWxlPURlYnVnJmFmdGVyX2lkPTMzNjYxMGE4NCZiZWZvcmVfaWQ9MjM2NTQyJykKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGxlbihyZXNwb25zZS5qc29uKCkpLCAyKQotICAgICAgICBmb3IgaSBpbiBy
YW5nZSgyKToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlc3BvbnNlLmpzb24o
KVtpXVsncmVzdWx0cyddKSwgMykKLSAgICAgICAgICAgIGxhc3RfdWRpZCA9IDAKLSAgICAgICAg
ICAgIGZvciByZXN1bHQgaW4gcmVzcG9uc2UuanNvbigpW2ldWydyZXN1bHRzJ106Ci0gICAgICAg
ICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwocmVzdWx0Wyd1dWlkJ10sIGxhc3RfdWRp
ZCkKLSAgICAgICAgICAgICAgICBsYXN0X3VkaWQgPSByZXN1bHRbJ3V1aWQnXQotCi0gICAgQFdh
aXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJp
Y3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCi0gICAgQEZsYXNr
VGVzdENhc2UucnVuX3dpdGhfd2Vic2VydmVyKCkKLSAgICBkZWYgdGVzdF9yZXN1bHRzX2J5X3Rp
bWUoc2VsZiwgY2xpZW50LCAqKmt3YXJncyk6Ci0gICAgICAgIHJlc3BvbnNlID0gY2xpZW50Lmdl
dChmJ3tzZWxmLlVSTH0vYXBpL3Jlc3VsdHMvbGF5b3V0LXRlc3RzL2Zhc3QvZW5jb2RpbmcvY3Nz
LWxpbmstY2hhcnNldC5odG1sP3BsYXRmb3JtPWlPUyZzdHlsZT1EZWJ1ZyZyZWNlbnQ9RmFsc2Um
YWZ0ZXJfdGltZT17dGltZS50aW1lKCkgLSA2MCAqIDYwfScpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChsZW4ocmVzcG9uc2UuanNvbigpKSwgMikKLSAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMik6Ci0g
ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZXNwb25zZS5qc29uKClbaV1bJ3Jlc3Vs
dHMnXSksIDUpCi0gICAgICAgICAgICBsYXN0X3N0YXJ0X3RpbWUgPSAwCi0gICAgICAgICAgICBm
b3IgcmVzdWx0IGluIHJlc3BvbnNlLmpzb24oKVtpXVsncmVzdWx0cyddOgotICAgICAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKHJlc3VsdFsnc3RhcnRfdGltZSddLCBsYXN0X3N0
YXJ0X3RpbWUpCi0gICAgICAgICAgICAgICAgbGFzdF9zdGFydF90aW1lID0gcmVzdWx0WydzdGFy
dF90aW1lJ10KLQotICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIo
bW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFD
b250ZXh0KQotICAgIEBGbGFza1Rlc3RDYXNlLnJ1bl93aXRoX3dlYnNlcnZlcigpCi0gICAgZGVm
IHRlc3Rfbm9fcmVzdWx0c19ieV90aW1lKHNlbGYsIGNsaWVudCwgKiprd2FyZ3MpOgotICAgICAg
ICByZXNwb25zZSA9IGNsaWVudC5nZXQoc2VsZi5VUkwgKyBmJy9hcGkvcmVzdWx0cy9sYXlvdXQt
dGVzdHMvZmFzdC9lbmNvZGluZy9jc3MtbGluay1jaGFyc2V0Lmh0bWw/cGxhdGZvcm09aU9TJnN0
eWxlPURlYnVnJnJlY2VudD1GYWxzZSZhZnRlcl90aW1lPXt0aW1lLnRpbWUoKSArIDF9JykKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZXNwb25zZS5qc29uKCkpLCAwKQpJbmRleDogVG9vbHMv
cmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci91cGxvYWRfY29udHJvbGxlci5weQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9jb250cm9sbGVyL3Vw
bG9hZF9jb250cm9sbGVyLnB5CShyZXZpc2lvbiAyNjU1MzEpCisrKyBUb29scy9yZXN1bHRzZGJw
eS9yZXN1bHRzZGJweS9jb250cm9sbGVyL3VwbG9hZF9jb250cm9sbGVyLnB5CShub25leGlzdGVu
dCkKQEAgLTEsMTc5ICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0
OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKLSMgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotIyBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0jIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0jIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksCi0jIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0KLWltcG9ydCBqc29uCi1pbXBvcnQgdGltZQotCi1mcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBk
ZWZhdWx0ZGljdAotZnJvbSBmbGFzayBpbXBvcnQgYWJvcnQsIGpzb25pZnksIHJlcXVlc3QKLWZy
b20gcmVzdWx0c2RicHkuZmxhc2tfc3VwcG9ydC51dGlsIGltcG9ydCBBc3NlcnRSZXF1ZXN0LCBx
dWVyeV9hc19rd2FyZ3MsIGxpbWl0X2Zvcl9xdWVyeSwgYm9vbGVhbl9xdWVyeQotZnJvbSByZXN1
bHRzZGJweS5jb250cm9sbGVyLmNvbW1pdCBpbXBvcnQgQ29tbWl0Ci1mcm9tIHJlc3VsdHNkYnB5
LmNvbnRyb2xsZXIuY29tbWl0X2NvbnRyb2xsZXIgaW1wb3J0IHV1aWRfcmFuZ2VfZm9yX3F1ZXJ5
LCBIYXNDb21taXRDb250ZXh0Ci1mcm9tIHJlc3VsdHNkYnB5LmNvbnRyb2xsZXIuY29uZmlndXJh
dGlvbiBpbXBvcnQgQ29uZmlndXJhdGlvbgotZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVyLmNv
bmZpZ3VyYXRpb25fY29udHJvbGxlciBpbXBvcnQgY29uZmlndXJhdGlvbl9mb3JfcXVlcnkKLQot
Ci1jbGFzcyBVcGxvYWRDb250cm9sbGVyKEhhc0NvbW1pdENvbnRleHQpOgotICAgIERFRkFVTFRf
TElNSVQgPSAxMDAKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjb21taXRfY29udHJvbGxlciwg
dXBsb2FkX2NvbnRleHQpOgotICAgICAgICBzdXBlcihVcGxvYWRDb250cm9sbGVyLCBzZWxmKS5f
X2luaXRfXyhjb21taXRfY29udHJvbGxlci5jb21taXRfY29udGV4dCkKLSAgICAgICAgc2VsZi5j
b21taXRfY29udHJvbGxlciA9IGNvbW1pdF9jb250cm9sbGVyCi0gICAgICAgIHNlbGYudXBsb2Fk
X2NvbnRleHQgPSB1cGxvYWRfY29udGV4dAotCi0gICAgQHF1ZXJ5X2FzX2t3YXJncygpCi0gICAg
QHV1aWRfcmFuZ2VfZm9yX3F1ZXJ5KCkKLSAgICBAbGltaXRfZm9yX3F1ZXJ5KERFRkFVTFRfTElN
SVQpCi0gICAgQGNvbmZpZ3VyYXRpb25fZm9yX3F1ZXJ5KCkKLSAgICBkZWYgX2ZpbmRfdXBsb2Fk
c19mb3JfcXVlcnkoc2VsZiwgY29uZmlndXJhdGlvbnM9Tm9uZSwgc3VpdGU9Tm9uZSwgYnJhbmNo
PU5vbmUsIGJlZ2luPU5vbmUsIGVuZD1Ob25lLCByZWNlbnQ9Tm9uZSwgbGltaXQ9Tm9uZSwgKipr
d2FyZ3MpOgotICAgICAgICBBc3NlcnRSZXF1ZXN0LnF1ZXJ5X2t3YXJnc19lbXB0eSgqKmt3YXJn
cykKLSAgICAgICAgcmVjZW50ID0gYm9vbGVhbl9xdWVyeSgqcmVjZW50KVswXSBpZiByZWNlbnQg
ZWxzZSBUcnVlCi0KLSAgICAgICAgd2l0aCBzZWxmLnVwbG9hZF9jb250ZXh0OgotICAgICAgICAg
ICAgaWYgbm90IHN1aXRlOgotICAgICAgICAgICAgICAgIHN1aXRlcyA9IHNldCgpCi0gICAgICAg
ICAgICAgICAgZm9yIGNvbmZpZ19zdWl0ZXMgaW4gc2VsZi51cGxvYWRfY29udGV4dC5maW5kX3N1
aXRlcyhjb25maWd1cmF0aW9ucz1jb25maWd1cmF0aW9ucywgcmVjZW50PXJlY2VudCkudmFsdWVz
KCk6Ci0gICAgICAgICAgICAgICAgICAgIFtzdWl0ZXMuYWRkKHN1aXRlKSBmb3Igc3VpdGUgaW4g
Y29uZmlnX3N1aXRlc10KLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgc3VpdGVz
ID0gc2V0KHN1aXRlKQotCi0gICAgICAgICAgICBjdXJyZW50X3VwbG9hZHMgPSAwCi0gICAgICAg
ICAgICByZXN1bHQgPSBkZWZhdWx0ZGljdChkaWN0KQotICAgICAgICAgICAgZm9yIHN1aXRlIGlu
IHN1aXRlczoKLSAgICAgICAgICAgICAgICBpZiBjdXJyZW50X3VwbG9hZHMgPj0gbGltaXQ6Ci0g
ICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgcmVzdWx0c19kaWN0ID0g
c2VsZi51cGxvYWRfY29udGV4dC5maW5kX3Rlc3RfcmVzdWx0cygKLSAgICAgICAgICAgICAgICAg
ICAgY29uZmlndXJhdGlvbnM9Y29uZmlndXJhdGlvbnMsIHN1aXRlPXN1aXRlLCBicmFuY2g9YnJh
bmNoWzBdLAotICAgICAgICAgICAgICAgICAgICBiZWdpbj1iZWdpbiwgZW5kPWVuZCwgcmVjZW50
PXJlY2VudCwgbGltaXQ9KGxpbWl0IC0gY3VycmVudF91cGxvYWRzKSwKLSAgICAgICAgICAgICAg
ICApCi0gICAgICAgICAgICAgICAgZm9yIGNvbmZpZywgcmVzdWx0cyBpbiByZXN1bHRzX2RpY3Qu
aXRlbXMoKToKLSAgICAgICAgICAgICAgICAgICAgY3VycmVudF91cGxvYWRzICs9IGxlbihyZXN1
bHRzKQotICAgICAgICAgICAgICAgICAgICByZXN1bHRbY29uZmlnXVtzdWl0ZV0gPSByZXN1bHRz
Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0Ci0KLSAgICBkZWYgZG93bmxvYWQoc2VsZik6Ci0g
ICAgICAgIEFzc2VydFJlcXVlc3QuaXNfdHlwZShbJ0dFVCddKQotCi0gICAgICAgIHdpdGggc2Vs
Zi51cGxvYWRfY29udGV4dDoKLSAgICAgICAgICAgIHVwbG9hZHMgPSBzZWxmLl9maW5kX3VwbG9h
ZHNfZm9yX3F1ZXJ5KCkKLQotICAgICAgICAgICAgcmVzcG9uc2UgPSBbXQotICAgICAgICAgICAg
Zm9yIGNvbmZpZywgc3VpdGVfcmVzdWx0cyBpbiB1cGxvYWRzLml0ZW1zKCk6Ci0gICAgICAgICAg
ICAgICAgZm9yIHN1aXRlLCByZXN1bHRzIGluIHN1aXRlX3Jlc3VsdHMuaXRlbXMoKToKLSAgICAg
ICAgICAgICAgICAgICAgZm9yIHJlc3VsdCBpbiByZXN1bHRzOgotICAgICAgICAgICAgICAgICAg
ICAgICAgY29uZmlnLnNkayA9IHJlc3VsdC5nZXQoJ3NkaycpCi0gICAgICAgICAgICAgICAgICAg
ICAgICByZXNwb25zZS5hcHBlbmQoZGljdCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25maWd1cmF0aW9uPUNvbmZpZ3VyYXRpb24uRW5jb2RlcigpLmRlZmF1bHQoY29uZmlnKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdWl0ZT1zdWl0ZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb21taXRzPUNvbW1pdC5FbmNvZGVyKCkuZGVmYXVsdChyZXN1bHRbJ2NvbW1p
dHMnXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZXN0YW1wPXJlc3VsdFsndGlt
ZXN0YW1wJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9yZXN1bHRzPXJlc3Vs
dFsndGVzdF9yZXN1bHRzJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICApKQotCi0gICAgICAg
ICAgICByZXR1cm4ganNvbmlmeShyZXNwb25zZSkKLQotICAgIGRlZiB1cGxvYWQoc2VsZik6Ci0g
ICAgICAgIGlmIHJlcXVlc3QubWV0aG9kID09ICdHRVQnOgotICAgICAgICAgICAgcmV0dXJuIHNl
bGYuZG93bmxvYWQoKQotCi0gICAgICAgIEFzc2VydFJlcXVlc3QuaXNfdHlwZShbJ1BPU1QnXSkK
LSAgICAgICAgQXNzZXJ0UmVxdWVzdC5ub19xdWVyeSgpCi0KLSAgICAgICAgd2l0aCBzZWxmLnVw
bG9hZF9jb250ZXh0OgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGRhdGEgPSBy
ZXF1ZXN0LmZvcm0gb3IganNvbi5sb2FkcyhyZXF1ZXN0LmdldF9kYXRhKCkpCi0gICAgICAgICAg
ICBleGNlcHQgVmFsdWVFcnJvcjoKLSAgICAgICAgICAgICAgICBhYm9ydCg0MDAsIGRlc2NyaXB0
aW9uPSdFeHBlY3RlZCB1cGxvYWRlZCBkYXRhIHRvIGJlIGpzb24nKQotCi0gICAgICAgICAgICB0
cnk6Ci0gICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiA9IENvbmZpZ3VyYXRpb24uZnJvbV9q
c29uKGRhdGEuZ2V0KCdjb25maWd1cmF0aW9uJywge30pKQotICAgICAgICAgICAgZXhjZXB0IChW
YWx1ZUVycm9yLCBUeXBlRXJyb3IpOgotICAgICAgICAgICAgICAgIGFib3J0KDQwMCwgZGVzY3Jp
cHRpb249J0ludmFsaWQgY29uZmlndXJhdGlvbicpCi0KLSAgICAgICAgICAgIHN1aXRlID0gZGF0
YS5nZXQoJ3N1aXRlJykKLSAgICAgICAgICAgIGlmIG5vdCBzdWl0ZToKLSAgICAgICAgICAgICAg
ICBhYm9ydCg0MDAsIGRlc2NyaXB0aW9uPSdObyB0ZXN0IHN1aXRlIHNwZWNpZmllZCcpCi0KLSAg
ICAgICAgICAgIGNvbW1pdHMgPSBbc2VsZi5jb21taXRfY29udHJvbGxlci5yZWdpc3Rlcihjb21t
aXQ9Y29tbWl0KSBmb3IgY29tbWl0IGluIGRhdGEuZ2V0KCdjb21taXRzJywgW10pXQotCi0gICAg
ICAgICAgICB0ZXN0X3Jlc3VsdHMgPSBkYXRhLmdldCgndGVzdF9yZXN1bHRzJywge30pCi0gICAg
ICAgICAgICBpZiBub3QgdGVzdF9yZXN1bHRzOgotICAgICAgICAgICAgICAgIGFib3J0KDQwMCwg
ZGVzY3JpcHRpb249J05vIHRlc3QgcmVzdWx0cyBzcGVjaWZpZWQnKQotCi0gICAgICAgICAgICB0
aW1lc3RhbXAgPSBkYXRhLmdldCgndGltZXN0YW1wJywgdGltZS50aW1lKCkpCi0gICAgICAgICAg
ICB2ZXJzaW9uID0gZGF0YS5nZXQoJ3ZlcnNpb24nLCAwKQotCi0gICAgICAgICAgICB0cnk6Ci0g
ICAgICAgICAgICAgICAgc2VsZi51cGxvYWRfY29udGV4dC51cGxvYWRfdGVzdF9yZXN1bHRzKGNv
bmZpZ3VyYXRpb24sIGNvbW1pdHMsIHN1aXRlLCB0ZXN0X3Jlc3VsdHMsIHRpbWVzdGFtcCwgdmVy
c2lvbj12ZXJzaW9uKQotICAgICAgICAgICAgZXhjZXB0IChUeXBlRXJyb3IsIFZhbHVlRXJyb3Ip
IGFzIGVycm9yOgotICAgICAgICAgICAgICAgIGFib3J0KDQwMCwgZGVzY3JpcHRpb249c3RyKGVy
cm9yKSkKLQotICAgICAgICAgICAgcHJvY2Vzc2luZ19yZXN1bHRzID0gc2VsZi51cGxvYWRfY29u
dGV4dC5wcm9jZXNzX3Rlc3RfcmVzdWx0cyhjb25maWd1cmF0aW9uLCBjb21taXRzLCBzdWl0ZSwg
dGVzdF9yZXN1bHRzLCB0aW1lc3RhbXApCi0gICAgICAgICAgICByZXR1cm4ganNvbmlmeShkaWN0
KHN0YXR1cz0nb2snLCBwcm9jZXNzaW5nPXByb2Nlc3NpbmdfcmVzdWx0cykpCi0KLSAgICBkZWYg
cHJvY2VzcyhzZWxmKToKLSAgICAgICAgQXNzZXJ0UmVxdWVzdC5pc190eXBlKFsnUE9TVCddKQot
Ci0gICAgICAgIHdpdGggc2VsZi51cGxvYWRfY29udGV4dDoKLSAgICAgICAgICAgIHVwbG9hZHMg
PSBzZWxmLl9maW5kX3VwbG9hZHNfZm9yX3F1ZXJ5KCkKLSAgICAgICAgICAgIGlmIG5vdCB1cGxv
YWRzOgotICAgICAgICAgICAgICAgIGFib3J0KDQwNCwgZGVzY3JpcHRpb249J05vIHVwbG9hZHMg
bWF0Y2hpbmcgdGhlIHNwZWNpZmllZCBjcml0ZXJpYScpCi0KLSAgICAgICAgICAgIHJlc3BvbnNl
ID0gW10KLSAgICAgICAgICAgIGZvciBjb25maWcsIHN1aXRlX3Jlc3VsdHMgaW4gdXBsb2Fkcy5p
dGVtcygpOgotICAgICAgICAgICAgICAgIGZvciBzdWl0ZSwgcmVzdWx0cyBpbiBzdWl0ZV9yZXN1
bHRzLml0ZW1zKCk6Ci0gICAgICAgICAgICAgICAgICAgIGZvciByZXN1bHQgaW4gcmVzdWx0czoK
LSAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy5zZGsgPSByZXN1bHQuZ2V0KCdzZGsnKQot
ICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc2luZ19yZXN1bHRzID0gc2VsZi51cGxvYWRf
Y29udGV4dC5wcm9jZXNzX3Rlc3RfcmVzdWx0cygKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25maWd1cmF0aW9uPWNvbmZpZywgY29tbWl0cz1yZXN1bHRbJ2NvbW1pdHMnXSwgc3VpdGU9
c3VpdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9yZXN1bHRzPXJlc3VsdFsn
dGVzdF9yZXN1bHRzJ10sIHRpbWVzdGFtcD1yZXN1bHRbJ3RpbWVzdGFtcCddLAotICAgICAgICAg
ICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UuYXBwZW5k
KGRpY3QoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbj1Db25maWd1
cmF0aW9uLkVuY29kZXIoKS5kZWZhdWx0KGNvbmZpZyksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3VpdGU9c3VpdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWl0cz1D
b21taXQuRW5jb2RlcigpLmRlZmF1bHQocmVzdWx0Wydjb21taXRzJ10pLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRpbWVzdGFtcD1yZXN1bHRbJ3RpbWVzdGFtcCddLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHByb2Nlc3Npbmc9cHJvY2Vzc2luZ19yZXN1bHRzLAotICAgICAg
ICAgICAgICAgICAgICAgICAgKSkKLQotICAgICAgICAgICAgcmV0dXJuIGpzb25pZnkocmVzcG9u
c2UpCi0KLSAgICBAcXVlcnlfYXNfa3dhcmdzKCkKLSAgICBAY29uZmlndXJhdGlvbl9mb3JfcXVl
cnkoKQotICAgIGRlZiBzdWl0ZXMoc2VsZiwgY29uZmlndXJhdGlvbnM9Tm9uZSwgcmVjZW50PU5v
bmUsIHN1aXRlPU5vbmUsIGJyYW5jaD1Ob25lLCAqKmt3YXJncyk6Ci0gICAgICAgIEFzc2VydFJl
cXVlc3QuaXNfdHlwZShbJ0dFVCddKQotICAgICAgICBBc3NlcnRSZXF1ZXN0LnF1ZXJ5X2t3YXJn
c19lbXB0eSgqKmt3YXJncykKLQotICAgICAgICB3aXRoIHNlbGYudXBsb2FkX2NvbnRleHQ6Ci0g
ICAgICAgICAgICBzdWl0ZXNfYnlfY29uZmlnID0gc2VsZi51cGxvYWRfY29udGV4dC5maW5kX3N1
aXRlcygKLSAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9ucz1jb25maWd1cmF0aW9ucywKLSAg
ICAgICAgICAgICAgICByZWNlbnQ9Ym9vbGVhbl9xdWVyeSgqcmVjZW50KVswXSBpZiByZWNlbnQg
ZWxzZSBUcnVlLAotICAgICAgICAgICAgICAgIGJyYW5jaD1icmFuY2hbMF0gaWYgYnJhbmNoIGVs
c2UgTm9uZSwKLSAgICAgICAgICAgICkKLSAgICAgICAgICAgIHJlc3VsdCA9IFtdCi0gICAgICAg
ICAgICBmb3IgY29uZmlnLCBjYW5kaWRhdGVfc3VpdGVzIGluIHN1aXRlc19ieV9jb25maWcuaXRl
bXMoKToKLSAgICAgICAgICAgICAgICBzdWl0ZXNfZm9yX2NvbmZpZyA9IFtzIGZvciBzIGluIGNh
bmRpZGF0ZV9zdWl0ZXMgaWYgbm90IHN1aXRlIG9yIHMgaW4gc3VpdGVdCi0gICAgICAgICAgICAg
ICAgaWYgc3VpdGVzX2Zvcl9jb25maWc6Ci0gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBl
bmQoW2NvbmZpZywgc3VpdGVzX2Zvcl9jb25maWddKQotICAgICAgICAgICAgaWYgbm90IHJlc3Vs
dDoKLSAgICAgICAgICAgICAgICBhYm9ydCg0MDQsIGRlc2NyaXB0aW9uPSdObyBzdWl0ZXMgbWF0
Y2hpbmcgdGhlIHNwZWNpZmllZCBjcml0ZXJpYScpCi0gICAgICAgICAgICByZXR1cm4ganNvbmlm
eShDb25maWd1cmF0aW9uLkVuY29kZXIoKS5kZWZhdWx0KHJlc3VsdCkpCkluZGV4OiBUb29scy9y
ZXN1bHRzZGJweS9yZXN1bHRzZGJweS9jb250cm9sbGVyL3VwbG9hZF9jb250cm9sbGVyX3VuaXR0
ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRy
b2xsZXIvdXBsb2FkX2NvbnRyb2xsZXJfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI2NTUzMSkKKysr
IFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvdXBsb2FkX2NvbnRyb2xs
ZXJfdW5pdHRlc3QucHkJKG5vbmV4aXN0ZW50KQpAQCAtMSwyMDYgKzAsMCBAQAotIyBDb3B5cmln
aHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jCi0jIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0j
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SCi0jIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IK
LSMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIKLSMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSMgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotaW1wb3J0IGpzb24KLWltcG9ydCB0aW1lCi1m
cm9tIGZha2VyZWRpcyBpbXBvcnQgRmFrZVN0cmljdFJlZGlzCi1mcm9tIHJlZGlzIGltcG9ydCBT
dHJpY3RSZWRpcwotZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVyLmFwaV9yb3V0ZXMgaW1wb3J0
IEFQSVJvdXRlcwotZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVyLmNvbW1pdCBpbXBvcnQgQ29t
bWl0Ci1mcm9tIHJlc3VsdHNkYnB5LmNvbnRyb2xsZXIuY29uZmlndXJhdGlvbiBpbXBvcnQgQ29u
ZmlndXJhdGlvbgotZnJvbSByZXN1bHRzZGJweS5mbGFza19zdXBwb3J0LmZsYXNrX3Rlc3RjYXNl
IGltcG9ydCBGbGFza1Rlc3RDYXNlCi1mcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLmNhc3NhbmRyYV9j
b250ZXh0IGltcG9ydCBDYXNzYW5kcmFDb250ZXh0Ci1mcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLm1v
Y2tfY2Fzc2FuZHJhX2NvbnRleHQgaW1wb3J0IE1vY2tDYXNzYW5kcmFDb250ZXh0Ci1mcm9tIHJl
c3VsdHNkYnB5Lm1vZGVsLm1vY2tfbW9kZWxfZmFjdG9yeSBpbXBvcnQgTW9ja01vZGVsRmFjdG9y
eQotZnJvbSByZXN1bHRzZGJweS5tb2RlbC5tb2NrX3JlcG9zaXRvcnkgaW1wb3J0IE1vY2tTdGFz
aFJlcG9zaXRvcnksIE1vY2tTVk5SZXBvc2l0b3J5Ci1mcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLndh
aXRfZm9yX2RvY2tlcl90ZXN0X2Nhc2UgaW1wb3J0IFdhaXRGb3JEb2NrZXJUZXN0Q2FzZQotCi0K
LWNsYXNzIFVwbG9hZENvbnRyb2xsZXJQb3N0VGVzdChGbGFza1Rlc3RDYXNlLCBXYWl0Rm9yRG9j
a2VyVGVzdENhc2UpOgotICAgIEtFWVNQQUNFID0gJ3VwbG9hZF9jb250cm9sbGVyX3Rlc3Rfa2V5
c3BhY2UnCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgc2V0dXBfd2Vic2VydmVyKGNscywg
YXBwLCByZWRpcz1TdHJpY3RSZWRpcywgY2Fzc2FuZHJhPUNhc3NhbmRyYUNvbnRleHQpOgotICAg
ICAgICBjYXNzYW5kcmEuZHJvcF9rZXlzcGFjZShrZXlzcGFjZT1jbHMuS0VZU1BBQ0UpCi0gICAg
ICAgIG1vZGVsID0gTW9ja01vZGVsRmFjdG9yeS5jcmVhdGUocmVkaXM9cmVkaXMoKSwgY2Fzc2Fu
ZHJhPWNhc3NhbmRyYShrZXlzcGFjZT1jbHMuS0VZU1BBQ0UsIGNyZWF0ZV9rZXlzcGFjZT1UcnVl
KSkKLSAgICAgICAgbW9kZWwudXBsb2FkX2NvbnRleHQucmVnaXN0ZXJfdXBsb2FkX2NhbGxiYWNr
KCdweXRob24tdGVzdHMnLCBsYW1iZGEgKiprd2FyZ3M6IGRpY3Qoc3RhdHVzPSdvaycpKQotICAg
ICAgICBhcHAucmVnaXN0ZXJfYmx1ZXByaW50KEFQSVJvdXRlcyhtb2RlbCkpCi0KLSAgICBAV2Fp
dEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmlj
dFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKLSAgICBARmxhc2tU
ZXN0Q2FzZS5ydW5fd2l0aF93ZWJzZXJ2ZXIoKQotICAgIGRlZiB0ZXN0X3VwbG9hZChzZWxmLCBj
bGllbnQsICoqa3dhcmdzKToKLSAgICAgICAgdXBsb2FkX2RpY3QgPSBkaWN0KAotICAgICAgICAg
ICAgc3VpdGU9J2xheW91dC10ZXN0cycsCi0gICAgICAgICAgICBjb21taXRzPVtNb2NrU3Rhc2hS
ZXBvc2l0b3J5LnNhZmFyaSgpLmNvbW1pdF9mb3JfaWQoJ2JiNmJkYTVmJyksIE1vY2tTVk5SZXBv
c2l0b3J5LndlYmtpdCgpLmNvbW1pdF9mb3JfaWQoMjM2NTQyKV0sCi0gICAgICAgICAgICBjb25m
aWd1cmF0aW9uPUNvbmZpZ3VyYXRpb24uRW5jb2RlcigpLmRlZmF1bHQoQ29uZmlndXJhdGlvbigK
LSAgICAgICAgICAgICAgICBwbGF0Zm9ybT0nTWFjJywgdmVyc2lvbj0nMTAuMTQuMCcsIHNkaz0n
MThBMzkxJywKLSAgICAgICAgICAgICAgICBpc19zaW11bGF0b3I9RmFsc2UsIGFyY2hpdGVjdHVy
ZT0neDg2XzY0JywKLSAgICAgICAgICAgICAgICBzdHlsZT0nUmVsZWFzZScsIGZsYXZvcj0nd2sy
JywKLSAgICAgICAgICAgICkpLAotICAgICAgICAgICAgdGVzdF9yZXN1bHRzPU1vY2tNb2RlbEZh
Y3RvcnkubGF5b3V0X3Rlc3RfcmVzdWx0cygpLAotICAgICAgICAgICAgdGltZXN0YW1wPWludCh0
aW1lLnRpbWUoKSksCi0gICAgICAgICkKLSAgICAgICAgcmVzcG9uc2UgPSBjbGllbnQucG9zdChz
ZWxmLlVSTCArICcvYXBpL3VwbG9hZCcsIGRhdGE9c3RyKGpzb24uZHVtcHModXBsb2FkX2RpY3Qs
IGNscz1Db21taXQuRW5jb2RlcikpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNl
LnN0YXR1c19jb2RlLCAyMDApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2UuanNv
bigpWydzdGF0dXMnXSwgJ29rJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5q
c29uKClbJ3Byb2Nlc3NpbmcnXVsncHl0aG9uLXRlc3RzJ10sIGRpY3Qoc3RhdHVzPSdvaycpKQot
Ci0gICAgICAgIHJlc3BvbnNlID0gY2xpZW50LmdldChzZWxmLlVSTCArICcvYXBpL3VwbG9hZCcp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5qc29uKClbMF0sIENvbW1pdC5FbmNvZGVy
KCkuZGVmYXVsdCh1cGxvYWRfZGljdCkpCi0KLSAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1v
Y2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRy
YT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKLSAgICBARmxhc2tUZXN0Q2FzZS5ydW5fd2l0aF93ZWJz
ZXJ2ZXIoKQotICAgIGRlZiB0ZXN0X3VwbG9hZF9wYXJ0aWFsKHNlbGYsIGNsaWVudCwgKiprd2Fy
Z3MpOgotICAgICAgICB1cGxvYWRfZGljdCA9IGRpY3QoCi0gICAgICAgICAgICBzdWl0ZT0nbGF5
b3V0LXRlc3RzJywKLSAgICAgICAgICAgIGNvbW1pdHM9W2RpY3QocmVwb3NpdG9yeV9pZD0nc2Fm
YXJpJywgaWQ9J2JiNmJkYTVmJyksIGRpY3QocmVwb3NpdG9yeV9pZD0nd2Via2l0JywgaWQ9MjM2
NTQyKV0sCi0gICAgICAgICAgICBjb25maWd1cmF0aW9uPUNvbmZpZ3VyYXRpb24uRW5jb2Rlcigp
LmRlZmF1bHQoQ29uZmlndXJhdGlvbigKLSAgICAgICAgICAgICAgICBwbGF0Zm9ybT0naU9TJywg
dmVyc2lvbj0nMTIuMC4wJywgc2RrPScxNkE0MDQnLAotICAgICAgICAgICAgICAgIGlzX3NpbXVs
YXRvcj1UcnVlLCBhcmNoaXRlY3R1cmU9J3g4Nl82NCcsCi0gICAgICAgICAgICAgICAgc3R5bGU9
J1JlbGVhc2UnLCBmbGF2b3I9J3drMicsCi0gICAgICAgICAgICApKSwKLSAgICAgICAgICAgIHRl
c3RfcmVzdWx0cz1Nb2NrTW9kZWxGYWN0b3J5LmxheW91dF90ZXN0X3Jlc3VsdHMoKSwKLSAgICAg
ICAgICAgIHRpbWVzdGFtcD1pbnQodGltZS50aW1lKCkpLAotICAgICAgICApCi0gICAgICAgIHJl
c3BvbnNlID0gY2xpZW50LnBvc3Qoc2VsZi5VUkwgKyAnL2FwaS91cGxvYWQnLCBkYXRhPXN0cihq
c29uLmR1bXBzKHVwbG9hZF9kaWN0KSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9u
c2Uuc3RhdHVzX2NvZGUsIDIwMCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5q
c29uKClbJ3N0YXR1cyddLCAnb2snKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNl
Lmpzb24oKVsncHJvY2Vzc2luZyddWydweXRob24tdGVzdHMnXSwgZGljdChzdGF0dXM9J29rJykp
Ci0KLSAgICAgICAgcmVzcG9uc2UgPSBjbGllbnQuZ2V0KHNlbGYuVVJMICsgJy9hcGkvdXBsb2Fk
JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQot
ICAgICAgICBmb3Iga2V5IGluIFsnc3VpdGUnLCAnY29uZmlndXJhdGlvbicsICd0ZXN0X3Jlc3Vs
dHMnLCAndGltZXN0YW1wJ106Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNl
Lmpzb24oKVswXVtrZXldLCB1cGxvYWRfZGljdFtrZXldKQotCi0gICAgQFdhaXRGb3JEb2NrZXJU
ZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9j
a19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCi0gICAgQEZsYXNrVGVzdENhc2UucnVu
X3dpdGhfd2Vic2VydmVyKCkKLSAgICBkZWYgdGVzdF9ub19kb3dubG9hZChzZWxmLCBjbGllbnQs
ICoqa3dhcmdzKToKLSAgICAgICAgcmVzcG9uc2UgPSBjbGllbnQuZ2V0KHNlbGYuVVJMICsgJy9h
cGkvdXBsb2FkJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5zdGF0dXNfY29k
ZSwgMjAwKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLmpzb24oKSwgW10pCi0K
LSAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9
RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKLSAg
ICBARmxhc2tUZXN0Q2FzZS5ydW5fd2l0aF93ZWJzZXJ2ZXIoKQotICAgIGRlZiB0ZXN0X25vX3By
b2Nlc3Moc2VsZiwgY2xpZW50LCAqKmt3YXJncyk6Ci0gICAgICAgIHJlc3BvbnNlID0gY2xpZW50
LnBvc3Qoc2VsZi5VUkwgKyAnL2FwaS9wcm9jZXNzJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChyZXNwb25zZS5zdGF0dXNfY29kZSwgNDA0KQotCi0KLWNsYXNzIFVwbG9hZENvbnRyb2xsZXJU
ZXN0KEZsYXNrVGVzdENhc2UsIFdhaXRGb3JEb2NrZXJUZXN0Q2FzZSk6Ci0gICAgS0VZU1BBQ0Ug
PSAndXBsb2FkX2NvbnRyb2xsZXJfdGVzdF9rZXlzcGFjZScKLQotICAgIEBjbGFzc21ldGhvZAot
ICAgIGRlZiBzZXR1cF93ZWJzZXJ2ZXIoY2xzLCBhcHAsIHJlZGlzPVN0cmljdFJlZGlzLCBjYXNz
YW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCk6Ci0gICAgICAgIGNhc3NhbmRyYS5kcm9wX2tleXNwYWNl
KGtleXNwYWNlPWNscy5LRVlTUEFDRSkKLSAgICAgICAgbW9kZWwgPSBNb2NrTW9kZWxGYWN0b3J5
LmNyZWF0ZShyZWRpcz1yZWRpcygpLCBjYXNzYW5kcmE9Y2Fzc2FuZHJhKGtleXNwYWNlPWNscy5L
RVlTUEFDRSwgY3JlYXRlX2tleXNwYWNlPVRydWUpKQotICAgICAgICBtb2RlbC51cGxvYWRfY29u
dGV4dC5yZWdpc3Rlcl91cGxvYWRfY2FsbGJhY2soJ3B5dGhvbi10ZXN0cycsIGxhbWJkYSAqKmt3
YXJnczogZGljdChzdGF0dXM9J29rJykpCi0gICAgICAgIE1vY2tNb2RlbEZhY3RvcnkuYWRkX21v
Y2tfcmVzdWx0cyhtb2RlbCkKLSAgICAgICAgYXBwLnJlZ2lzdGVyX2JsdWVwcmludChBUElSb3V0
ZXMobW9kZWwpKQotCi0gICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tl
cihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRy
YUNvbnRleHQpCi0gICAgQEZsYXNrVGVzdENhc2UucnVuX3dpdGhfd2Vic2VydmVyKCkKLSAgICBk
ZWYgdGVzdF9zdWl0ZXMoc2VsZiwgY2xpZW50LCAqKmt3YXJncyk6Ci0gICAgICAgIHJlc3BvbnNl
ID0gY2xpZW50LmdldChzZWxmLlVSTCArICcvYXBpL3N1aXRlcycpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgxMiwgbGVuKHJlc3BvbnNlLmpzb24oKSkpCi0gICAgICAgIGZvciBlbGVtZW50IGluIHJl
c3BvbnNlLmpzb24oKToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGVsZW1l
bnRbMV0pKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnbGF5b3V0LXRlc3RzJywgZWxl
bWVudFsxXVswXSkKLQotICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2Nr
ZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5k
cmFDb250ZXh0KQotICAgIEBGbGFza1Rlc3RDYXNlLnJ1bl93aXRoX3dlYnNlcnZlcigpCi0gICAg
ZGVmIHRlc3Rfc3VpdGVzX3dpdGhfZmlsdGVyKHNlbGYsIGNsaWVudCwgKiprd2FyZ3MpOgotICAg
ICAgICByZXNwb25zZSA9IGNsaWVudC5nZXQoc2VsZi5VUkwgKyAnL2FwaS9zdWl0ZXM/cGxhdGZv
cm09TWFjJnN0eWxlPVJlbGVhc2UmZmxhdm9yPXdrMicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgx
LCBsZW4ocmVzcG9uc2UuanNvbigpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4o
cmVzcG9uc2UuanNvbigpWzBdWzFdKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnbGF5b3V0
LXRlc3RzJywgcmVzcG9uc2UuanNvbigpWzBdWzFdWzBdKQotCi0gICAgQFdhaXRGb3JEb2NrZXJU
ZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9j
a19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCi0gICAgQEZsYXNrVGVzdENhc2UucnVu
X3dpdGhfd2Vic2VydmVyKCkKLSAgICBkZWYgdGVzdF9zdWl0ZXNfd2l0aF9zdWl0ZV9maWx0ZXIo
c2VsZiwgY2xpZW50LCAqKmt3YXJncyk6Ci0gICAgICAgIHJlc3BvbnNlID0gY2xpZW50LmdldChz
ZWxmLlVSTCArICcvYXBpL3N1aXRlcz9zdWl0ZT1sYXlvdXQtdGVzdHMnKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHJlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoMTIsIGxlbihyZXNwb25zZS5qc29uKCkpKQotCi0gICAgICAgIHJlc3BvbnNlID0g
Y2xpZW50LmdldChzZWxmLlVSTCArICcvYXBpL3N1aXRlcz9zdWl0ZT1hcGktdGVzdHMnKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLnN0YXR1c19jb2RlLCA0MDQpCi0KLSAgICBA
V2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0
cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKLSAgICBARmxh
c2tUZXN0Q2FzZS5ydW5fd2l0aF93ZWJzZXJ2ZXIoKQotICAgIGRlZiB0ZXN0X2Rvd25sb2FkX3dp
dGhfZmlsdGVyKHNlbGYsIGNsaWVudCwgKiprd2FyZ3MpOgotICAgICAgICByZXNwb25zZSA9IGNs
aWVudC5nZXQoc2VsZi5VUkwgKyAnL2FwaS91cGxvYWQ/cGxhdGZvcm09TWFjJnN0eWxlPVJlbGVh
c2UmZmxhdm9yPXdrMicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2Uuc3RhdHVz
X2NvZGUsIDIwMCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg1LCBsZW4ocmVzcG9uc2UuanNv
bigpKSkKLQotICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9j
a19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250
ZXh0KQotICAgIEBGbGFza1Rlc3RDYXNlLnJ1bl93aXRoX3dlYnNlcnZlcigpCi0gICAgZGVmIHRl
c3RfZG93bmxvYWRfd2l0aF9kdWVsX2ZpbHRlcihzZWxmLCBjbGllbnQsICoqa3dhcmdzKToKLSAg
ICAgICAgcmVzcG9uc2UgPSBjbGllbnQuZ2V0KHNlbGYuVVJMICsgJy9hcGkvdXBsb2FkP3BsYXRm
b3JtPU1hYyZzdHlsZT1SZWxlYXNlJmZsYXZvcj13azEmZmxhdm9yPXdrMicpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgxMCwgbGVuKHJlc3BvbnNlLmpzb24oKSkpCi0KLSAgICBAV2FpdEZvckRvY2tl
clRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBt
b2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKLSAgICBARmxhc2tUZXN0Q2FzZS5y
dW5fd2l0aF93ZWJzZXJ2ZXIoKQotICAgIGRlZiB0ZXN0X2Rvd25sb2FkX3dpdGhfbGltaXQoc2Vs
ZiwgY2xpZW50LCAqKmt3YXJncyk6Ci0gICAgICAgIHJlc3BvbnNlID0gY2xpZW50LmdldChzZWxm
LlVSTCArICcvYXBpL3VwbG9hZD9wbGF0Zm9ybT1NYWMmc3R5bGU9UmVsZWFzZSZmbGF2b3I9d2sy
JmxpbWl0PTInKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLnN0YXR1c19jb2Rl
LCAyMDApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMiwgbGVuKHJlc3BvbnNlLmpzb24oKSkp
Ci0KLSAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVk
aXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkK
LSAgICBARmxhc2tUZXN0Q2FzZS5ydW5fd2l0aF93ZWJzZXJ2ZXIoKQotICAgIGRlZiB0ZXN0X2Rv
d25sb2FkX3dpdGhfcmFuZ2Uoc2VsZiwgY2xpZW50LCAqKmt3YXJncyk6Ci0gICAgICAgIHJlc3Bv
bnNlID0gY2xpZW50LmdldChzZWxmLlVSTCArICcvYXBpL3VwbG9hZD9wbGF0Zm9ybT1NYWMmc3R5
bGU9UmVsZWFzZSZmbGF2b3I9d2syJmFmdGVyX2lkPTIzNjU0MiZiZWZvcmVfaWQ9MjM2NTQ0JykK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKDMsIGxlbihyZXNwb25zZS5qc29uKCkpKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHNvcnRlZChbJzIzNjU0NCcsICcyMzY1NDMnLCAnMjM2NTQyJ10pLCBz
b3J0ZWQoW3Jlc3VsdFsnY29tbWl0cyddWzBdWydpZCddIGZvciByZXN1bHQgaW4gcmVzcG9uc2Uu
anNvbigpXSkpCi0KLSAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2Vy
KG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJh
Q29udGV4dCkKLSAgICBARmxhc2tUZXN0Q2FzZS5ydW5fd2l0aF93ZWJzZXJ2ZXIoKQotICAgIGRl
ZiB0ZXN0X2Rvd25sb2FkX2Zvcl9jb21taXQoc2VsZiwgY2xpZW50LCAqKmt3YXJncyk6Ci0gICAg
ICAgIHJlc3BvbnNlID0gY2xpZW50LmdldChzZWxmLlVSTCArICcvYXBpL3VwbG9hZD9wbGF0Zm9y
bT1NYWMmc3R5bGU9UmVsZWFzZSZmbGF2b3I9d2syJmlkPTIzNjU0MicpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgxLCBsZW4ocmVzcG9uc2UuanNvbigpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChbJzIzNjU0MiddLCBbcmVzdWx0Wydjb21taXRzJ11bMF1bJ2lkJ10gZm9yIHJlc3VsdCBpbiBy
ZXNwb25zZS5qc29uKCldKQotCi0gICAgICAgIHJlc3BvbnNlID0gY2xpZW50LmdldChzZWxmLlVS
TCArICcvYXBpL3VwbG9hZD9wbGF0Zm9ybT1NYWMmc3R5bGU9UmVsZWFzZSZmbGF2b3I9d2syJmlk
PWJiNmJkYTVmJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5zdGF0dXNfY29k
ZSwgMjAwKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDUsIGxlbihyZXNwb25zZS5qc29uKCkp
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsnYmI2YmRhNWY0NGRkMjRkMGI1NDUzOWI4ZmY2
ZThjMTdmNTE5MjQ5YSddICogNSwgW3Jlc3VsdFsnY29tbWl0cyddWzFdWydpZCddIGZvciByZXN1
bHQgaW4gcmVzcG9uc2UuanNvbigpXSkKLQotICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9j
a19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJh
PU1vY2tDYXNzYW5kcmFDb250ZXh0KQotICAgIEBGbGFza1Rlc3RDYXNlLnJ1bl93aXRoX3dlYnNl
cnZlcigpCi0gICAgZGVmIHRlc3RfcHJvY2VzcyhzZWxmLCBjbGllbnQsICoqa3dhcmdzKToKLSAg
ICAgICAgcmVzcG9uc2UgPSBjbGllbnQucG9zdChzZWxmLlVSTCArICcvYXBpL3VwbG9hZC9wcm9j
ZXNzP3BsYXRmb3JtPU1hYyZzdHlsZT1SZWxlYXNlJmZsYXZvcj13azInKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHJlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoNSwgbGVuKHJlc3BvbnNlLmpzb24oKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoW2RpY3Qoc3RhdHVzPSdvaycpXSAqIDUsIFtlbGVtZW50Wydwcm9jZXNzaW5nJ11bJ3B5dGhv
bi10ZXN0cyddIGZvciBlbGVtZW50IGluIHJlc3BvbnNlLmpzb24oKV0pCi0KLSAgICBAV2FpdEZv
ckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJl
ZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKLSAgICBARmxhc2tUZXN0
Q2FzZS5ydW5fd2l0aF93ZWJzZXJ2ZXIoKQotICAgIGRlZiB0ZXN0X3Byb2Nlc3NfY29tbWl0KHNl
bGYsIGNsaWVudCwgKiprd2FyZ3MpOgotICAgICAgICByZXNwb25zZSA9IGNsaWVudC5wb3N0KHNl
bGYuVVJMICsgJy9hcGkvdXBsb2FkL3Byb2Nlc3M/cGxhdGZvcm09TWFjJnN0eWxlPVJlbGVhc2Um
Zmxhdm9yPXdrMiZpZD0yMzY1NDMnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNl
LnN0YXR1c19jb2RlLCAyMDApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKHJlc3Bv
bnNlLmpzb24oKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWycyMzY1NDMnXSwgW3Jlc3Vs
dFsnY29tbWl0cyddWzBdWydpZCddIGZvciByZXN1bHQgaW4gcmVzcG9uc2UuanNvbigpXSkKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChbZGljdChzdGF0dXM9J29rJyldLCBbZWxlbWVudFsncHJv
Y2Vzc2luZyddWydweXRob24tdGVzdHMnXSBmb3IgZWxlbWVudCBpbiByZXNwb25zZS5qc29uKCld
KQpJbmRleDogVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvZXhhbXBsZS9fX2luaXRfXy5w
eQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9leGFtcGxlL19f
aW5pdF9fLnB5CShyZXZpc2lvbiAyNjU1MzEpCisrKyBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRz
ZGJweS9leGFtcGxlL19faW5pdF9fLnB5CShub25leGlzdGVudCkKQEAgLTEsMjEgKzAsMCBAQAot
IyBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwot
IyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyAiQVMgSVMiIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCi0jIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0jIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IKLSMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSMg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KSW5kZXg6IFRvb2xzL3Jlc3VsdHNk
YnB5L3Jlc3VsdHNkYnB5L2V4YW1wbGUvZW52aXJvbm1lbnQucHkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvZXhhbXBsZS9lbnZpcm9ubWVudC5weQkocmV2aXNp
b24gMjY1NTMxKQorKysgVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvZXhhbXBsZS9lbnZp
cm9ubWVudC5weQkobm9uZXhpc3RlbnQpCkBAIC0xLDE1OSArMCwwIEBACi0jIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJB
UyBJUyIgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotIyBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUgotIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotIyBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1pbXBvcnQgb3MKLWltcG9ydCBzeXMKLQotZnJvbSBj
YXNzYW5kcmEuYXV0aCBpbXBvcnQgUGxhaW5UZXh0QXV0aFByb3ZpZGVyCi1mcm9tIGZha2VyZWRp
cyBpbXBvcnQgRmFrZVN0cmljdFJlZGlzCi1mcm9tIHJlZGlzIGltcG9ydCBTdHJpY3RSZWRpcwot
Ci1zeXMucGF0aC5hcHBlbmQob3MucGF0aC5kaXJuYW1lKG9zLnBhdGguZGlybmFtZShvcy5wYXRo
LmRpcm5hbWUob3MucGF0aC5hYnNwYXRoKF9fZmlsZV9fKSkpKSkKLQotZnJvbSByZXN1bHRzZGJw
eS5tb2RlbC5jYXNzYW5kcmFfY29udGV4dCBpbXBvcnQgQ2Fzc2FuZHJhQ29udGV4dAotZnJvbSBy
ZXN1bHRzZGJweS5tb2RlbC5jYXNzZXJvbGUgaW1wb3J0IENhc3Nlcm9sZU5vZGVzLCBDYXNzZXJv
bGVSZWRpcwotZnJvbSByZXN1bHRzZGJweS5tb2RlbC5jaV9jb250ZXh0IGltcG9ydCBCdWlsZGJv
dFVSTEZhY3RvcnksIEJ1aWxkYm90RWlnaHRVUkxGYWN0b3J5Ci1mcm9tIHJlc3VsdHNkYnB5Lm1v
ZGVsLm1vY2tfY2Fzc2FuZHJhX2NvbnRleHQgaW1wb3J0IE1vY2tDYXNzYW5kcmFDb250ZXh0Ci1m
cm9tIHJlc3VsdHNkYnB5Lm1vZGVsLm1vZGVsIGltcG9ydCBNb2RlbAotZnJvbSByZXN1bHRzZGJw
eS5tb2RlbC5yZXBvc2l0b3J5IGltcG9ydCBXZWJLaXRSZXBvc2l0b3J5Ci1mcm9tIHJlc3VsdHNk
YnB5Lm1vZGVsLnBhcnRpdGlvbmVkX3JlZGlzIGltcG9ydCBQYXJ0aXRpb25lZFJlZGlzCi0KLU1P
Q0tfQ0FTU0FORFJBID0gJ21vY2snCi1LRVlTUEFDRSA9ICdyZXN1bHRzX2RhdGFiYXNlX2V4YW1w
bGUnCi0KLQotY2xhc3MgRW52aXJvbm1lbnQob2JqZWN0KToKLSAgICBSRURJU19QT1JUID0gNjM3
OQotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGNxbGVuZ19hbGxvd19zY2hlbWFfbWFuYWdlbWVu
dD1GYWxzZSk6Ci0gICAgICAgIHNlbGYucG9ydCA9IGludChvcy5lbnZpcm9uLmdldCgnUE9SVCcs
IDUwMDApKQotCi0gICAgICAgICMgVGhlIGJhc2UgZW52aXJvbm1lbnQgcHJvdmlkZXMgZGVmYXVs
dHMgZm9yIGRhdGFiYXNlIGluZm9ybWF0aW9uLCBhbHRob3VnaCB0aGF0IGNhbiBiZSBleHBsaWNp
dGx5IG92ZXJyaWRkZW4KLSAgICAgICAgc2VsZi5jYXNzYW5kcmFfc2VydmVyID0gb3MuZW52aXJv
bi5nZXQoJ0NBU1NBTkRSQV9TRVJWRVInLCAnbG9jYWxob3N0JykKLSAgICAgICAgc2VsZi5rZXlz
cGFjZSA9IG9zLmVudmlyb24uZ2V0KCdLRVlTUEFDRScsIEtFWVNQQUNFKQotCi0gICAgICAgIHNl
bGYucmVkaXNfaG9zdCA9IG9zLmVudmlyb24uZ2V0KCdSRURJU19IT1NUJywgJ2xvY2FsaG9zdCcp
Ci0gICAgICAgIHNlbGYucmVkaXNfcG9ydCA9IG9zLmVudmlyb24uZ2V0KCdSRURJU19QT1JUJywg
c2VsZi5SRURJU19QT1JUKQotCi0gICAgICAgIHNlbGYuZHJvcF9rZXlzcGFjZSA9IGNxbGVuZ19h
bGxvd19zY2hlbWFfbWFuYWdlbWVudCBhbmQgYm9vbChpbnQob3MuZW52aXJvbi5nZXQoJ0RST1Bf
S0VZU1BBQ0UnLCAwKSkpCi0gICAgICAgIHNlbGYuY3JlYXRlX2tleXNwYWNlID0gY3FsZW5nX2Fs
bG93X3NjaGVtYV9tYW5hZ2VtZW50IGFuZCBib29sKGludChvcy5lbnZpcm9uLmdldCgnQ1JFQVRF
X0tFWVNQQUNFJywgMSkpKQotICAgICAgICBzZWxmLmNxbGVuZ19hbGxvd19zY2hlbWFfbWFuYWdl
bWVudCA9IGNxbGVuZ19hbGxvd19zY2hlbWFfbWFuYWdlbWVudAotCi0gICAgICAgIG9zLmVudmly
b25bJ0NRTEVOR19BTExPV19TQ0hFTUFfTUFOQUdFTUVOVCddID0gJzEnIGlmIHNlbGYuY3FsZW5n
X2FsbG93X3NjaGVtYV9tYW5hZ2VtZW50IGVsc2UgJzAnCi0KLSAgICAgICAgZm9yIGtleSwgdmFs
dWUgaW4gc2VsZi5fX2RpY3RfXy5pdGVtcygpOgotICAgICAgICAgICAgaWYgdmFsdWUgaXMgTm9u
ZToKLSAgICAgICAgICAgICAgICByYWlzZSBFbnZpcm9ubWVudEVycm9yKGYne2tleS51cHBlcigp
fSBpcyBub3QgZGVmaW5lZCBpbiB0aGUgZW52aXJvbm1lbnQnKQotCi0gICAgICAgIHNlbGYucmVk
aXNfdXJsID0gb3MuZW52aXJvbi5nZXQoJ1JFRElTX1VSTCcsIE5vbmUpCi0gICAgICAgIHNlbGYu
cmVkaXNfcGFzc3dvcmQgPSBvcy5lbnZpcm9uLmdldCgnUkVESVNfUEFTU1dPUkQnLCBOb25lKQot
Ci0gICAgICAgIHNlbGYuY2Fzc2FuZHJhX3VzZXJuYW1lID0gTm9uZQotICAgICAgICBzZWxmLmNh
c3NhbmRyYV9wYXNzd29yZCA9IE5vbmUKLQotICAgICAgICBpZiBub3Qgc2VsZi5jcWxlbmdfYWxs
b3dfc2NoZW1hX21hbmFnZW1lbnQ6Ci0gICAgICAgICAgICBzZWxmLmNhc3NhbmRyYV91c2VybmFt
ZSA9IG9zLmVudmlyb24uZ2V0KCdDQVNTQU5EUkFfVVNFUicpCi0gICAgICAgICAgICBzZWxmLmNh
c3NhbmRyYV9wYXNzd29yZCA9IG9zLmVudmlyb24uZ2V0KCdDQVNTQU5EUkFfVVNFUl9QQVNTV09S
RCcpCi0KLSAgICAgICAgaWYgbm90IHNlbGYuY2Fzc2FuZHJhX3VzZXJuYW1lIG9yIG5vdCBzZWxm
LmNhc3NhbmRyYV9wYXNzd29yZDoKLSAgICAgICAgICAgIHNlbGYuY2Fzc2FuZHJhX3VzZXJuYW1l
ID0gb3MuZW52aXJvbi5nZXQoJ0NBU1NBTkRSQV9BRE1JTicpCi0gICAgICAgICAgICBzZWxmLmNh
c3NhbmRyYV9wYXNzd29yZCA9IG9zLmVudmlyb24uZ2V0KCdDQVNTQU5EUkFfQURNSU5fUEFTU1dP
UkQnKQotCi0gICAgQHN0YXRpY21ldGhvZAotICAgIGRlZiBvYmZ1c2NhdGVfcGFzc3dvcmQocGFz
c3dvcmQpOgotICAgICAgICBpZiBwYXNzd29yZDoKLSAgICAgICAgICAgIHJldHVybiAnKicgKiBs
ZW4ocGFzc3dvcmQpCi0gICAgICAgIHJldHVybiAnLScKLQotICAgIGRlZiBfX3N0cl9fKHNlbGYp
OgotICAgICAgICByZXN1bHQgPSAnJwotICAgICAgICBvcmRlciA9IFsKLSAgICAgICAgICAgICdw
b3J0JywKLSAgICAgICAgICAgICdjYXNzYW5kcmFfc2VydmVyJywgJ2NxbGVuZ19hbGxvd19zY2hl
bWFfbWFuYWdlbWVudCcsCi0gICAgICAgICAgICAna2V5c3BhY2UnLCAnZHJvcF9rZXlzcGFjZScs
ICdjcmVhdGVfa2V5c3BhY2UnLAotICAgICAgICAgICAgJ2Nhc3NhbmRyYV91c2VybmFtZScsICdj
YXNzYW5kcmFfcGFzc3dvcmQnLAotICAgICAgICAgICAgJ3JlZGlzX3VybCcsCi0gICAgICAgICAg
ICAncmVkaXNfaG9zdCcsICdyZWRpc19wb3J0JywgJ3JlZGlzX3Bhc3N3b3JkJywKLSAgICAgICAg
XQotICAgICAgICBmb3Iga2V5IGluIHNlbGYuX19kaWN0X18ua2V5cygpOgotICAgICAgICAgICAg
aWYga2V5IG5vdCBpbiBvcmRlcjoKLSAgICAgICAgICAgICAgICBvcmRlci5hcHBlbmQoa2V5KQot
ICAgICAgICBmb3Iga2V5IGluIG9yZGVyOgotICAgICAgICAgICAgdmFsdWUgPSBzZWxmLl9fZGlj
dF9fLmdldChrZXkpCi0gICAgICAgICAgICBpZiB2YWx1ZSBhbmQgKCdwYXNzd29yZCcgaW4ga2V5
IG9yICd0b2tlbicgaW4ga2V5IG9yIGtleS5lbmRzd2l0aCgna2V5JykpOgotICAgICAgICAgICAg
ICAgIHZhbHVlID0gc2VsZi5vYmZ1c2NhdGVfcGFzc3dvcmQodmFsdWUpCi0gICAgICAgICAgICBy
ZXN1bHQgKz0gZiIgICAge2tleS51cHBlcigpfToge3ZhbHVlfVxuIgotICAgICAgICByZXR1cm4g
cmVzdWx0WzotMV0KLQotCi1jbGFzcyBNb2RlbEZyb21FbnZpcm9ubWVudChNb2RlbCk6Ci0gICAg
VFRMX1NFQ09ORFMgPSBNb2RlbC5UVExfWUVBUiAqIDUKLQotICAgIGRlZiBfX2luaXRfXyhzZWxm
LCBlbnZpcm9ubWVudCk6Ci0gICAgICAgIG5vZGVzID0gWydsb2NhbGhvc3QnXQotICAgICAgICBj
YXNzYW5kcmFfY2xhc3MgPSBDYXNzYW5kcmFDb250ZXh0Ci0gICAgICAgIGlmIGVudmlyb25tZW50
LmNhc3NhbmRyYV9zZXJ2ZXIgPT0gTU9DS19DQVNTQU5EUkE6Ci0gICAgICAgICAgICBjYXNzYW5k
cmFfY2xhc3MgPSBNb2NrQ2Fzc2FuZHJhQ29udGV4dAotCi0gICAgICAgIGF1dGhfcHJvdmlkZXIg
PSBOb25lCi0gICAgICAgIGlmIGVudmlyb25tZW50LmNhc3NhbmRyYV91c2VybmFtZSBhbmQgZW52
aXJvbm1lbnQuY2Fzc2FuZHJhX3Bhc3N3b3JkOgotICAgICAgICAgICAgYXV0aF9wcm92aWRlciA9
IFBsYWluVGV4dEF1dGhQcm92aWRlcihlbnZpcm9ubWVudC5jYXNzYW5kcmFfdXNlcm5hbWUsIGVu
dmlyb25tZW50LmNhc3NhbmRyYV9wYXNzd29yZCkKLQotICAgICAgICBpZiBlbnZpcm9ubWVudC5k
cm9wX2tleXNwYWNlOgotICAgICAgICAgICAgY2Fzc2FuZHJhX2NsYXNzLmRyb3Bfa2V5c3BhY2Uo
bm9kZXM9bm9kZXMsIGtleXNwYWNlPWVudmlyb25tZW50LmtleXNwYWNlLCBhdXRoX3Byb3ZpZGVy
PWF1dGhfcHJvdmlkZXIpCi0KLSAgICAgICAgY2Fzc2FuZHJhID0gY2Fzc2FuZHJhX2NsYXNzKAot
ICAgICAgICAgICAgbm9kZXM9bm9kZXMsCi0gICAgICAgICAgICBrZXlzcGFjZT1lbnZpcm9ubWVu
dC5rZXlzcGFjZSwKLSAgICAgICAgICAgIGF1dGhfcHJvdmlkZXI9YXV0aF9wcm92aWRlciwKLSAg
ICAgICAgICAgIGNyZWF0ZV9rZXlzcGFjZT1lbnZpcm9ubWVudC5jcmVhdGVfa2V5c3BhY2UsCi0g
ICAgICAgICAgICByZXBsaWNhdGlvbl9tYXA9Tm9uZSwKLSAgICAgICAgKQotICAgICAgICBpZiBl
bnZpcm9ubWVudC5yZWRpc19ob3N0ID09ICdtb2NrJzoKLSAgICAgICAgICAgIHJlZGlzID0gRmFr
ZVN0cmljdFJlZGlzKCkKLSAgICAgICAgZWxpZiBlbnZpcm9ubWVudC5yZWRpc191cmw6Ci0gICAg
ICAgICAgICByZWRpcyA9IFN0cmljdFJlZGlzLmZyb21fdXJsKGVudmlyb25tZW50LnJlZGlzX3Vy
bCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJlZGlzID0gU3RyaWN0UmVkaXMoCi0gICAg
ICAgICAgICAgICAgcG9ydD1lbnZpcm9ubWVudC5yZWRpc19wb3J0LAotICAgICAgICAgICAgICAg
IGhvc3Q9ZW52aXJvbm1lbnQucmVkaXNfaG9zdCwKLSAgICAgICAgICAgICAgICBwYXNzd29yZD1l
bnZpcm9ubWVudC5yZWRpc19wYXNzd29yZCwKLSAgICAgICAgICAgICkKLSAgICAgICAgcmVkaXMu
cGluZygpICAjIEZvcmNlIGEgY29ubmVjdGlvbiB3aXRoIHRoZSByZWRpcyBkYXRhYmFzZQotCi0g
ICAgICAgIHdlYmtpdCA9IFdlYktpdFJlcG9zaXRvcnkoKQotICAgICAgICBzdXBlcihNb2RlbEZy
b21FbnZpcm9ubWVudCwgc2VsZikuX19pbml0X18oCi0gICAgICAgICAgICByZWRpcz1yZWRpcywg
Y2Fzc2FuZHJhPWNhc3NhbmRyYSwKLSAgICAgICAgICAgIHJlcG9zaXRvcmllcz1bd2Via2l0XSwK
LSAgICAgICAgICAgIGRlZmF1bHRfdHRsX3NlY29uZHM9c2VsZi5UVExfU0VDT05EUywKLSAgICAg
ICAgICAgIGFzeW5jX3Byb2Nlc3Npbmc9VHJ1ZSwKLSAgICAgICAgKQotCi0KLWRlZiBtYWluKCk6
Ci0gICAgZW52aXJvbm1lbnQgPSBFbnZpcm9ubWVudChjcWxlbmdfYWxsb3dfc2NoZW1hX21hbmFn
ZW1lbnQ9VHJ1ZSkKLSAgICBwcmludChmJ0Vudmlyb25tZW50IGZvciBzZXR1cDpcbntlbnZpcm9u
bWVudH0nKQotICAgIE1vZGVsRnJvbUVudmlyb25tZW50KGVudmlyb25tZW50KQotCi0KLWlmIF9f
bmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgbWFpbigpCkluZGV4OiBUb29scy9yZXN1bHRzZGJw
eS9yZXN1bHRzZGJweS9leGFtcGxlL21haW4ucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvcmVzdWx0
c2RicHkvcmVzdWx0c2RicHkvZXhhbXBsZS9tYWluLnB5CShyZXZpc2lvbiAyNjU1MzEpCisrKyBU
b29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9leGFtcGxlL21haW4ucHkJKG5vbmV4aXN0ZW50
KQpAQCAtMSw2NyArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoK
LSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECi0jIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECi0jIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSMgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTAotIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotIyBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLAotIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
Ci1pbXBvcnQgaGFzaGxpYgotaW1wb3J0IGpzb24KLQotZnJvbSBleGFtcGxlLmVudmlyb25tZW50
IGltcG9ydCBFbnZpcm9ubWVudCwgTW9kZWxGcm9tRW52aXJvbm1lbnQKLWZyb20gZmxhc2sgaW1w
b3J0IGFib3J0LCBGbGFzaywgcmVxdWVzdAotZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVyLmFw
aV9yb3V0ZXMgaW1wb3J0IEFQSVJvdXRlcwotZnJvbSByZXN1bHRzZGJweS52aWV3LnZpZXdfcm91
dGVzIGltcG9ydCBWaWV3Um91dGVzCi0KLQotZW52aXJvbm1lbnQgPSBFbnZpcm9ubWVudCgpCi1w
cmludChmJ0Vudmlyb25tZW50IGZvciB3ZWItYXBwOlxue2Vudmlyb25tZW50fScpCi0KLW1vZGVs
ID0gTW9kZWxGcm9tRW52aXJvbm1lbnQoZW52aXJvbm1lbnQpCi1hcHAgPSBGbGFzayhfX25hbWVf
XykKLQotCi1hcGlfcm91dGVzID0gQVBJUm91dGVzKG1vZGVsPW1vZGVsLCBpbXBvcnRfbmFtZT1f
X25hbWVfXykKLXZpZXdfcm91dGVzID0gVmlld1JvdXRlcygKLSAgICB0aXRsZT0nRXhhbXBsZSBS
ZXN1bHRzIERhdGFiYXNlJywKLSAgICBtb2RlbD1tb2RlbCwgY29udHJvbGxlcj1hcGlfcm91dGVz
LCBpbXBvcnRfbmFtZT1fX25hbWVfXywKLSkKLQotCi1AYXBwLnJvdXRlKCcvX19oZWFsdGgnLCBt
ZXRob2RzPSgnR0VUJywpKQotZGVmIGhlYWx0aCgpOgotICAgIGlmIG5vdCBtb2RlbC5oZWFsdGh5
KHdyaXRhYmxlPVRydWUpOgotICAgICAgICBhYm9ydCg1MDMsIGRlc2NyaXB0aW9uPSdIZWFsdGgg
Y2hlY2sgZmFpbGVkLCBpbnZhbGlkIGRhdGFiYXNlIGNvbm5lY3Rpb25zJykKLSAgICByZXR1cm4g
J29rJwotCi0KLUBhcHAuZXJyb3JoYW5kbGVyKDQwMSkKLUBhcHAuZXJyb3JoYW5kbGVyKDQwNCkK
LUBhcHAuZXJyb3JoYW5kbGVyKDQwNSkKLWRlZiBoYW5kbGVfZXJyb3JzKGVycm9yKToKLSAgICBp
ZiByZXF1ZXN0LnBhdGguc3RhcnRzd2l0aCgnL2FwaS8nKToKLSAgICAgICAgcmV0dXJuIGFwaV9y
b3V0ZXMuZXJyb3JfcmVzcG9uc2UoZXJyb3IpCi0gICAgcmV0dXJuIHZpZXdfcm91dGVzLmVycm9y
KGVycm9yPWVycm9yKQotCi0KLWFwcC5yZWdpc3Rlcl9ibHVlcHJpbnQoYXBpX3JvdXRlcykKLWFw
cC5yZWdpc3Rlcl9ibHVlcHJpbnQodmlld19yb3V0ZXMpCi0KLQotZGVmIG1haW4oKToKLSAgICBh
cHAucnVuKGhvc3Q9JzAuMC4wLjAnLCBwb3J0PWVudmlyb25tZW50LnBvcnQpCkluZGV4OiBUb29s
cy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9leGFtcGxlL3dvcmtlci5weQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9leGFtcGxlL3dvcmtlci5weQkocmV2aXNp
b24gMjY1NTMxKQorKysgVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvZXhhbXBsZS93b3Jr
ZXIucHkJKG5vbmV4aXN0ZW50KQpAQCAtMSw0MiArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIg
QU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotIyBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUgotIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotIyBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotCi1pbXBvcnQgYXJncGFyc2UKLWltcG9ydCByYW5kb20KLWltcG9y
dCB0aW1lCi1mcm9tIGV4YW1wbGUuZW52aXJvbm1lbnQgaW1wb3J0IEVudmlyb25tZW50LCBNb2Rl
bEZyb21FbnZpcm9ubWVudAotCi0KLWRlZiBtYWluKCk6Ci0gICAgZW52aXJvbm1lbnQgPSBFbnZp
cm9ubWVudCgpCi0gICAgcHJpbnQoZidFbnZpcm9ubWVudCBmb3Igd29ya2VyOlxue2Vudmlyb25t
ZW50fScpCi0KLSAgICBtb2RlbCA9IE1vZGVsRnJvbUVudmlyb25tZW50KGVudmlyb25tZW50KQot
Ci0gICAgcmFuZG9tLnNlZWQoKQotICAgIHdoaWxlIFRydWU6Ci0gICAgICAgIG1vZGVsLmRvX3dv
cmsoKQotICAgICAgICB0aW1lLnNsZWVwKHJhbmRvbS5yYW5kaW50KDE1LCA0NSkpICAjIFN0YWdn
ZXIgd29ya2Vycy4KLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIG1haW4oKQpJ
bmRleDogVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvZmxhc2tfc3VwcG9ydC9fX2luaXRf
Xy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9mbGFza19z
dXBwb3J0L19faW5pdF9fLnB5CShyZXZpc2lvbiAyNjU1MzEpCisrKyBUb29scy9yZXN1bHRzZGJw
eS9yZXN1bHRzZGJweS9mbGFza19zdXBwb3J0L19faW5pdF9fLnB5CShub25leGlzdGVudCkKQEAg
LTEgKzAsMCBAQAotIyBETyBOT1RISU5HCkluZGV4OiBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRz
ZGJweS9mbGFza19zdXBwb3J0L2F1dGhlZF9ibHVlcHJpbnQucHkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvZmxhc2tfc3VwcG9ydC9hdXRoZWRfYmx1ZXByaW50
LnB5CShyZXZpc2lvbiAyNjU1MzEpCisrKyBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9m
bGFza19zdXBwb3J0L2F1dGhlZF9ibHVlcHJpbnQucHkJKG5vbmV4aXN0ZW50KQpAQCAtMSwzNCAr
MCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0jIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0j
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUgotIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotIyBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLAotIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1mcm9tIGZsYXNr
IGltcG9ydCBCbHVlcHJpbnQKLQotCi1jbGFzcyBBdXRoZWRCbHVlcHJpbnQoQmx1ZXByaW50KToK
LSAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSwgaW1wb3J0X25hbWUsIGF1dGhfZGVjb3JhdG9y
PU5vbmUsICoqa3dhcmdzKToKLSAgICAgICAgc3VwZXIoQXV0aGVkQmx1ZXByaW50LCBzZWxmKS5f
X2luaXRfXyhuYW1lLCBpbXBvcnRfbmFtZSwgKiprd2FyZ3MpCi0gICAgICAgIHNlbGYuYXV0aF9k
ZWNvcmF0b3IgPSBhdXRoX2RlY29yYXRvcgotCi0gICAgZGVmIGFkZF91cmxfcnVsZShzZWxmLCBy
dWxlLCBlbmRwb2ludD1Ob25lLCB2aWV3X2Z1bmM9Tm9uZSwgYXV0aGVkPVRydWUsICoqb3B0aW9u
cyk6Ci0gICAgICAgIGlmIG5vdCBzZWxmLmF1dGhfZGVjb3JhdG9yIG9yIG5vdCBhdXRoZWQ6Ci0g
ICAgICAgICAgICByZXR1cm4gc3VwZXIoQXV0aGVkQmx1ZXByaW50LCBzZWxmKS5hZGRfdXJsX3J1
bGUocnVsZSwgZW5kcG9pbnQ9ZW5kcG9pbnQsIHZpZXdfZnVuYz12aWV3X2Z1bmMsICoqb3B0aW9u
cykKLSAgICAgICAgcmV0dXJuIHN1cGVyKEF1dGhlZEJsdWVwcmludCwgc2VsZikuYWRkX3VybF9y
dWxlKHJ1bGUsIGVuZHBvaW50PWVuZHBvaW50LCB2aWV3X2Z1bmM9c2VsZi5hdXRoX2RlY29yYXRv
cih2aWV3X2Z1bmMpLCAqKm9wdGlvbnMpCkluZGV4OiBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRz
ZGJweS9mbGFza19zdXBwb3J0L2ZsYXNrX3Rlc3RfY29udGV4dC5weQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9mbGFza19zdXBwb3J0L2ZsYXNrX3Rlc3RfY29u
dGV4dC5weQkocmV2aXNpb24gMjY1NTMxKQorKysgVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2Ri
cHkvZmxhc2tfc3VwcG9ydC9mbGFza190ZXN0X2NvbnRleHQucHkJKG5vbmV4aXN0ZW50KQpAQCAt
MSw3MiArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0jIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECi0jIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TAotIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUgotIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotIyBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLAotIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1pbXBv
cnQgcmVxdWVzdHMKLWltcG9ydCB0aW1lCi0KLWZyb20gZmxhc2sgaW1wb3J0IEZsYXNrCi1mcm9t
IG11bHRpcHJvY2Vzc2luZyBpbXBvcnQgUHJvY2VzcywgU2VtYXBob3JlCi0KLQotY2xhc3MgRmxh
c2tUZXN0Q29udGV4dChvYmplY3QpOgotICAgIFBPUlQgPSA1MDAxCi0KLSAgICBAY2xhc3NtZXRo
b2QKLSAgICBkZWYgc3RhcnRfd2Vic2VydmVyKGNscywgbWV0aG9kLCBzZW1hcGhvcmUpOgotICAg
ICAgICB0cnk6Ci0gICAgICAgICAgICBhcHAgPSBGbGFzaygndGVzdGluZycpCi0gICAgICAgICAg
ICBtZXRob2QoYXBwKQotICAgICAgICAgICAgYXBwLmFkZF91cmxfcnVsZSgnL19faGVhbHRoJywg
J2hlYWx0aCcsIGxhbWJkYTogJ29rJywgbWV0aG9kcz0oJ0dFVCcsKSkKLSAgICAgICAgZmluYWxs
eToKLSAgICAgICAgICAgIHNlbWFwaG9yZS5yZWxlYXNlKCkKLSAgICAgICAgcmV0dXJuIGFwcC5y
dW4oaG9zdD0nMC4wLjAuMCcsIHBvcnQ9Y2xzLlBPUlQpCi0KLSAgICBkZWYgX19pbml0X18oc2Vs
ZiwgbWV0aG9kKToKLSAgICAgICAgc2VsZi5tZXRob2QgPSBtZXRob2QKLSAgICAgICAgc2VsZi5w
cm9jZXNzID0gTm9uZQotCi0gICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKLSAgICAgICAgc2VtYXBo
b3JlID0gU2VtYXBob3JlKDApCi0gICAgICAgIHNlbGYucHJvY2VzcyA9IFByb2Nlc3ModGFyZ2V0
PXNlbGYuc3RhcnRfd2Vic2VydmVyLCBhcmdzPShzZWxmLm1ldGhvZCwgc2VtYXBob3JlKSkKLSAg
ICAgICAgc2VsZi5wcm9jZXNzLnN0YXJ0KCkKLQotICAgICAgICB3aXRoIHNlbWFwaG9yZToKLSAg
ICAgICAgICAgIGZvciBhdHRlbXB0IGluIHJhbmdlKDMpOgotICAgICAgICAgICAgICAgIGlmIG5v
dCBzZWxmLnByb2Nlc3MuaXNfYWxpdmUoKToKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgUnVu
dGltZUVycm9yKCdFeGNlcHRpb24gcmFpc2VkIHdoZW4gc3RhcnRpbmcgd2ViLXNlcnZlcicpCi0K
LSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gcmVx
dWVzdHMuZ2V0KGYnaHR0cDovL2xvY2FsaG9zdDp7c2VsZi5QT1JUfS9fX2hlYWx0aCcpCi0gICAg
ICAgICAgICAgICAgICAgIGlmIHJlc3BvbnNlLnRleHQgIT0gJ29rJzoKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignSGVhbHRoIGNoZWNrIGZhaWxlZCcpCi0gICAg
ICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICAgICAgICAgIGV4Y2VwdCByZXF1ZXN0cy5D
b25uZWN0aW9uRXJyb3IgYXMgZToKLSAgICAgICAgICAgICAgICAgICAgdGltZS5zbGVlcCguMDUp
Ci0KLSAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdGYWlsZWQgdG8gY29ubmVjdCB0byBzZXJ2
ZXIgZm9yIGhlYWx0aCBjaGVjaycpCi0KLSAgICBkZWYgX19leGl0X18oc2VsZiwgKmFyZ3MpOgot
ICAgICAgICBpZiBub3Qgc2VsZi5wcm9jZXNzOgotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAg
IGlmIG5vdCBzZWxmLnByb2Nlc3MuaXNfYWxpdmUoKToKLSAgICAgICAgICAgIHJhaXNlIFJ1bnRp
bWVFcnJvcignV2ViLXNlcnZlciBoYXMgY3Jhc2hlZCcpCi0gICAgICAgIHNlbGYucHJvY2Vzcy50
ZXJtaW5hdGUoKQpJbmRleDogVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvZmxhc2tfc3Vw
cG9ydC9mbGFza190ZXN0Y2FzZS5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9yZXN1bHRzZGJweS9y
ZXN1bHRzZGJweS9mbGFza19zdXBwb3J0L2ZsYXNrX3Rlc3RjYXNlLnB5CShyZXZpc2lvbiAyNjU1
MzEpCisrKyBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9mbGFza19zdXBwb3J0L2ZsYXNr
X3Rlc3RjYXNlLnB5CShub25leGlzdGVudCkKQEAgLTEsMTQ0ICswLDAgQEAKLSMgQ29weXJpZ2h0
IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
IkFTIElTIiBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUgotIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0j
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSCi0jIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0jIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLWltcG9ydCBhdGV4aXQKLWltcG9ydCBqc29uCi1p
bXBvcnQgb3MKLWltcG9ydCByZXF1ZXN0cwotaW1wb3J0IHVuaXR0ZXN0Ci0KLWZyb20gZmxhc2sg
aW1wb3J0IEZsYXNrCi1mcm9tIGZsYXNrLndyYXBwZXJzIGltcG9ydCBSZXNwb25zZQotZnJvbSBz
ZWxlbml1bSBpbXBvcnQgd2ViZHJpdmVyCi1mcm9tIHNlbGVuaXVtLmNvbW1vbi5leGNlcHRpb25z
IGltcG9ydCBXZWJEcml2ZXJFeGNlcHRpb24KLWZyb20gcmVzdWx0c2RicHkuZmxhc2tfc3VwcG9y
dC5mbGFza190ZXN0X2NvbnRleHQgaW1wb3J0IEZsYXNrVGVzdENvbnRleHQKLQotCi1jbGFzcyBG
bGFza1JlcXVlc3RzUmVzcG9uc2UoUmVzcG9uc2UpOgotICAgIEBwcm9wZXJ0eQotICAgIGRlZiB0
ZXh0KHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5kYXRhLmRlY29kZSgndXRmLTgnKQotCi0g
ICAgQHByb3BlcnR5Ci0gICAgZGVmIGNvbnRlbnQoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxm
LmRhdGEKLQotICAgIGRlZiBqc29uKHNlbGYpOgotICAgICAgICByZXR1cm4ganNvbi5sb2Fkcyhz
ZWxmLnRleHQpCi0KLQotY2xhc3MgRmxhc2tUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0g
ICAgVVJMID0gZidodHRwOi8vbG9jYWxob3N0OntGbGFza1Rlc3RDb250ZXh0LlBPUlR9JwotCi0g
ICAgX2RyaXZlciA9IE5vbmUKLSAgICBfY2FjaGVkX2RyaXZlciA9IEZhbHNlCi0gICAgX3ByaW50
ZWRfd2Vic2VydmVyX3dhcm5pbmcgPSBGYWxzZQotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVm
IGRyaXZlcihjbHMpOgotICAgICAgICBpZiBjbHMuX2NhY2hlZF9kcml2ZXI6Ci0gICAgICAgICAg
ICByZXR1cm4gY2xzLl9kcml2ZXIKLQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXN1bHQg
PSB3ZWJkcml2ZXIuU2FmYXJpKCkKLSAgICAgICAgICAgIHJlc3VsdC5nZXQoJ2Fib3V0OmJsYW5r
JykKLSAgICAgICAgICAgIGF0ZXhpdC5yZWdpc3RlcihyZXN1bHQuY2xvc2UpCi0gICAgICAgICAg
ICBjbHMuX2RyaXZlciA9IHJlc3VsdAotICAgICAgICBleGNlcHQgV2ViRHJpdmVyRXhjZXB0aW9u
IGFzIGU6Ci0gICAgICAgICAgICBwcmludChlLm1zZykKLQotICAgICAgICBleGNlcHQgSW1wb3J0
RXJyb3I6Ci0gICAgICAgICAgICBwcmludCgnU2VsZW5pdW0gaXMgbm90IGluc3RhbGxlZCwgcnVu
IFwncGlwIGluc3RhbGwgc2VsZW5pdW1cJycpCi0KLSAgICAgICAgY2xzLl9jYWNoZWRfZHJpdmVy
ID0gVHJ1ZQotICAgICAgICByZXR1cm4gY2xzLl9kcml2ZXIKLQotICAgIEBjbGFzc21ldGhvZAot
ICAgIGRlZiBzZXR1cF93ZWJzZXJ2ZXIoY2xzLCBhcHAsICoqa3dhcmdzKToKLSAgICAgICAgcmFp
c2UgTm90SW1wbGVtZW50ZWRFcnJvcigpCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgY29t
YmluZShjbHMsICphcmdzKToKLSAgICAgICAgZGVmIGRlY29yYXRvcihmdW5jKToKLSAgICAgICAg
ICAgIGZvciBlbG0gaW4gcmV2ZXJzZWQoYXJncyk6Ci0gICAgICAgICAgICAgICAgZnVuYyA9IGVs
bShmdW5jKQotICAgICAgICAgICAgcmV0dXJuIGZ1bmMKLQotICAgICAgICByZXR1cm4gZGVjb3Jh
dG9yCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgcnVuX3dpdGhfcmVhbF93ZWJzZXJ2ZXIo
Y2xzKToKLSAgICAgICAgZGVmIGRlY29yYXRvcihtZXRob2QpOgotICAgICAgICAgICAgZGVmIHJl
YWxfbWV0aG9kKHZhbCwgbWV0aG9kPW1ldGhvZCwgKiprd2FyZ3MpOgotICAgICAgICAgICAgICAg
IHdpdGggRmxhc2tUZXN0Q29udGV4dChsYW1iZGEgYXBwOiB2YWwuc2V0dXBfd2Vic2VydmVyKGFw
cCwgKiprd2FyZ3MpKToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1ldGhvZCh2YWwsIGNs
aWVudD1yZXF1ZXN0cywgKiprd2FyZ3MpCi0gICAgICAgICAgICByZWFsX21ldGhvZC5fX25hbWVf
XyA9IG1ldGhvZC5fX25hbWVfXwotICAgICAgICAgICAgcmV0dXJuIHJlYWxfbWV0aG9kCi0KLSAg
ICAgICAgcmV0dXJuIGNscy5jb21iaW5lKAotICAgICAgICAgICAgdW5pdHRlc3Quc2tpcElmKG5v
dCBpbnQob3MuZW52aXJvbi5nZXQoJ3dlYl9zZXJ2ZXInLCAnMCcpKSwgJ1dlYlNlcnZlciB0ZXN0
cyBkaXNhYmxlZCcpLAotICAgICAgICAgICAgZGVjb3JhdG9yLAotICAgICAgICApCi0KLSAgICBA
Y2xhc3NtZXRob2QKLSAgICBkZWYgcnVuX3dpdGhfbW9ja193ZWJzZXJ2ZXIoY2xzKToKLSAgICAg
ICAgZGVmIGRlY29yYXRvcihtZXRob2QpOgotICAgICAgICAgICAgZGVmIHJlYWxfbWV0aG9kKHZh
bCwgbWV0aG9kPW1ldGhvZCwgKiprd2FyZ3MpOgotICAgICAgICAgICAgICAgIGFwcCA9IEZsYXNr
KCd0ZXN0aW5nJykKLSAgICAgICAgICAgICAgICBhcHAucmVzcG9uc2VfY2xhc3MgPSBGbGFza1Jl
cXVlc3RzUmVzcG9uc2UKLSAgICAgICAgICAgICAgICBhcHAuY29uZmlnWydURVNUSU5HJ10gPSBU
cnVlCi0gICAgICAgICAgICAgICAgdmFsLnNldHVwX3dlYnNlcnZlcihhcHAsICoqa3dhcmdzKQot
ICAgICAgICAgICAgICAgIGFwcC5hZGRfdXJsX3J1bGUoJy9fX2hlYWx0aCcsICdoZWFsdGgnLCBs
YW1iZGE6ICdvaycsIG1ldGhvZHM9KCdHRVQnLCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1l
dGhvZCh2YWwsIGNsaWVudD1hcHAudGVzdF9jbGllbnQoKSwgKiprd2FyZ3MpCi0KLSAgICAgICAg
ICAgIHJlYWxfbWV0aG9kLl9fbmFtZV9fID0gbWV0aG9kLl9fbmFtZV9fCi0gICAgICAgICAgICBy
ZXR1cm4gcmVhbF9tZXRob2QKLQotICAgICAgICByZXR1cm4gZGVjb3JhdG9yCi0KLSAgICBAY2xh
c3NtZXRob2QKLSAgICBkZWYgcnVuX3dpdGhfd2Vic2VydmVyKGNscyk6Ci0gICAgICAgIGlmIGlu
dChvcy5lbnZpcm9uLmdldCgnd2ViX3NlcnZlcicsICcwJykgYW5kIGludChvcy5lbnZpcm9uLmdl
dCgnc2xvd190ZXN0cycsICcwJykpKToKLSAgICAgICAgICAgIGlmIG5vdCBjbHMuX3ByaW50ZWRf
d2Vic2VydmVyX3dhcm5pbmc6Ci0gICAgICAgICAgICAgICAgcHJpbnQoJ1VzaW5nIHJlYWwgd2Vi
IHNlcnZlciwgcmVxdWVzdHMgcm91dGVkIHRocm91Z2ggcmVxdWVzdHMgbGlicmFyeScpCi0gICAg
ICAgICAgICBjbHMuX3ByaW50ZWRfd2Vic2VydmVyX3dhcm5pbmcgPSBUcnVlCi0gICAgICAgICAg
ICByZXR1cm4gY2xzLnJ1bl93aXRoX3JlYWxfd2Vic2VydmVyKCkKLSAgICAgICAgaWYgbm90IGNs
cy5fcHJpbnRlZF93ZWJzZXJ2ZXJfd2FybmluZzoKLSAgICAgICAgICAgIHByaW50KCdVc2luZyBt
b2NrIHdlYiBzZXJ2ZXIsIHJlcXVlc3RzIHJvdXRlZCB0aHJvdWdoIGZsYXNrIHRlc3RpbmcgZnJh
bWV3b3JrJykKLSAgICAgICAgY2xzLl9wcmludGVkX3dlYnNlcnZlcl93YXJuaW5nID0gVHJ1ZQot
ICAgICAgICByZXR1cm4gY2xzLnJ1bl93aXRoX21vY2tfd2Vic2VydmVyKCkKLQotICAgIEBjbGFz
c21ldGhvZAotICAgIGRlZiBydW5fd2l0aF9zZWxlbml1bShjbHMpOgotCi0gICAgICAgIGRlZiBk
ZWNvcmF0b3IobWV0aG9kKToKLSAgICAgICAgICAgIGRlZiByZWFsX21ldGhvZCh2YWwsIG1ldGhv
ZD1tZXRob2QsICoqa3dhcmdzKToKLSAgICAgICAgICAgICAgICByZXR1cm4gbWV0aG9kKHZhbCwg
ZHJpdmVyPWNscy5kcml2ZXIoKSwgKiprd2FyZ3MpCi0gICAgICAgICAgICByZWFsX21ldGhvZC5f
X25hbWVfXyA9IG1ldGhvZC5fX25hbWVfXwotICAgICAgICAgICAgcmV0dXJuIHJlYWxfbWV0aG9k
Ci0KLSAgICAgICAgcmV0dXJuIGNscy5jb21iaW5lKAotICAgICAgICAgICAgY2xzLnJ1bl93aXRo
X3JlYWxfd2Vic2VydmVyKCksCi0gICAgICAgICAgICB1bml0dGVzdC5za2lwSWYobm90IGludChv
cy5lbnZpcm9uLmdldCgnc2VsZW5pdW0nLCAnMCcpKSwgJ1NlbGVuaXVtIHRlc3RzIGRpc2FibGVk
JyksCi0gICAgICAgICAgICB1bml0dGVzdC5za2lwSWYobm90IGNscy5kcml2ZXIoKSwgJ1NlbGVu
aXVtIG5vdCBhdmFpbGFibGUgZm9yIHRlc3RpbmcnKSwKLSAgICAgICAgICAgIGRlY29yYXRvciwK
LSAgICAgICAgKQpJbmRleDogVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvZmxhc2tfc3Vw
cG9ydC91dGlsLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5
L2ZsYXNrX3N1cHBvcnQvdXRpbC5weQkocmV2aXNpb24gMjY1NTMxKQorKysgVG9vbHMvcmVzdWx0
c2RicHkvcmVzdWx0c2RicHkvZmxhc2tfc3VwcG9ydC91dGlsLnB5CShub25leGlzdGVudCkKQEAg
LTEsMTMxICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0j
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYCJBUyBJUyIgQU5ECi0jIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECi0jIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSMgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTAotIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotIyBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLAotIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1p
bXBvcnQganNvbgotZnJvbSBmbGFzayBpbXBvcnQgYWJvcnQsIHJlcXVlc3QKLQotCi1jbGFzcyBG
bGFza0pTT05FbmNvZGVyKGpzb24uSlNPTkVuY29kZXIpOgotICAgICMgRmxhc2sncyBqc29uaWZ5
IG9ubHkgYWNjZXB0cyBhIGRpY3Rpb25hcnkgYW5kIGRvZXMgbm90IGFjY2VwdCBhIEpTT04gZW5j
b2Rlci4gV2hlbiBvdmVycmlkaW5nIHRoZSBkZWZhdWx0IEpTT04KLSAgICAjIGVuY29kZXIsIGVu
Y29kZXIuZGVmYXVsdCguLi4pIHdpbGwgcmV0dXJuIGEgZGljdGlvbmFyeSB0byBiZSBzZXJpYWxp
emVkLiBIb3dldmVyLCB0aGUgZGVmYXVsdCBlbmNvZGVyIHdpbGwgcmFpc2UKLSAgICAjIGFuIGV4
Y2VwdGlvbiBpZiBkZWZhdWx0KC4uLikgaXMgY2FsbGVkIG9uIHByaW1hdGl2ZSBKU09OIHR5cGVz
LiBJbXBsZW1lbnQgYSB2ZXJzaW9uIG9mIHRoZSBkZWZhdWx0IGVuY29kZXIgd2hpY2gKLSAgICAj
IHBhc3NlcyBwcmltYXRpdmUgSlNPTiB0eXBlcyBiYWNrIHRvIHRoZSBjYWxsZXIuCi0gICAgZGVm
IGRlZmF1bHQoc2VsZiwgb2JqKToKLSAgICAgICAgaWYgaXNpbnN0YW5jZShvYmosIGRpY3QpOgot
ICAgICAgICAgICAgcmV0dXJuIHtrZXk6IHNlbGYuZGVmYXVsdCh2YWx1ZSkgZm9yIGtleSwgdmFs
dWUgaW4gb2JqLml0ZW1zKCl9Ci0gICAgICAgIGlmIGlzaW5zdGFuY2Uob2JqLCBsaXN0KToKLSAg
ICAgICAgICAgIHJldHVybiBbc2VsZi5kZWZhdWx0KHZhbHVlKSBmb3IgdmFsdWUgaW4gb2JqXQot
ICAgICAgICByZXR1cm4gb2JqCi0KLQotY2xhc3MgQXNzZXJ0UmVxdWVzdChvYmplY3QpOgotICAg
IEBjbGFzc21ldGhvZAotICAgIGRlZiBpc190eXBlKGNscywgc3VwcG9ydGVkX3JlcXVlc3RzPU5v
bmUpOgotICAgICAgICBpZiBzdXBwb3J0ZWRfcmVxdWVzdHMgaXMgTm9uZToKLSAgICAgICAgICAg
IHN1cHBvcnRlZF9yZXF1ZXN0cyA9IFsnR0VUJ10KLSAgICAgICAgaWYgbm90IHN1cHBvcnRlZF9y
ZXF1ZXN0czoKLSAgICAgICAgICAgIGFib3J0KDUwMCwgZGVzY3JpcHRpb249J0VuZHBvaW50IGRv
ZXMgbm90IHN1cHBvcnQgYW55IHJlcXVlc3RzJykKLSAgICAgICAgaWYgcmVxdWVzdC5tZXRob2Qg
bm90IGluIHN1cHBvcnRlZF9yZXF1ZXN0czoKLSAgICAgICAgICAgIGFib3J0KDQwNSwgZGVzY3Jp
cHRpb249J0VuZHBvaW50IG9ubHkgc3VwcG9ydHMge30gcmVxdWVzdHMnLmZvcm1hdCgKLSAgICAg
ICAgICAgICAgICBzdXBwb3J0ZWRfcmVxdWVzdHNbMF0gaWYgbGVuKHN1cHBvcnRlZF9yZXF1ZXN0
cykgPT0gMSBlbHNlICcsICcuam9pbihzdXBwb3J0ZWRfcmVxdWVzdHNbOi0xXSkgKyAnIGFuZCAn
ICsgc3VwcG9ydGVkX3JlcXVlc3RzWy0xXSwKLSAgICAgICAgICAgICkpCi0KLSAgICBAY2xhc3Nt
ZXRob2QKLSAgICBkZWYgbm9fcXVlcnkoY2xzKToKLSAgICAgICAgaWYgcmVxdWVzdC5xdWVyeV9z
dHJpbmc6Ci0gICAgICAgICAgICBhYm9ydCg0MDAsIGRlc2NyaXB0aW9uPSdRdWVyaWVzIG5vdCBz
dXBwb3J0ZWQgb24gdGhpcyBlbmRwb2ludCcpCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYg
cXVlcnlfa3dhcmdzX2VtcHR5KGNscywgKiprd2FyZ3MpOgotICAgICAgICBmb3Iga2V5LCB2YWx1
ZSBpbiBrd2FyZ3MuaXRlbXMoKToKLSAgICAgICAgICAgIGlmIHZhbHVlOgotICAgICAgICAgICAg
ICAgIGFib3J0KDQwMCwgZGVzY3JpcHRpb249ZiIne2tleX0nIG5vdCBzdXBwb3J0ZWQgaW4gcXVl
cmllcyBieSB0aGlzIGVuZHBvaW50IikKLQotCi1kZWYgcXVlcnlfYXNfa3dhcmdzKCk6Ci0gICAg
ZGVmIGRlY29yYXRvcihtZXRob2QpOgotICAgICAgICBkZWYgcmVhbF9tZXRob2QodmFsLCBtZXRo
b2Q9bWV0aG9kLCAqKmt3YXJncyk6Ci0gICAgICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiByZXF1
ZXN0LmFyZ3MudG9fZGljdChmbGF0PUZhbHNlKS5pdGVtcygpOgotICAgICAgICAgICAgICAgIGlm
IGtleSBpbiBrd2FyZ3M6Ci0gICAgICAgICAgICAgICAgICAgIGFib3J0KDQwMCwgZGVzY3JpcHRp
b249Zid7a2V5fSBpcyBub3QgYSB2YWxpZCBxdWVyeSBwYXJhbWV0ZXIgb24gdGhpcyBlbmRwb2lu
dCcpCi0gICAgICAgICAgICAgICAga3dhcmdzW2tleV0gPSB0dXBsZSh2YWx1ZSkKLSAgICAgICAg
ICAgIHJldHVybiBtZXRob2QodmFsLCAqKmt3YXJncykKLQotICAgICAgICByZWFsX21ldGhvZC5f
X25hbWVfXyA9IG1ldGhvZC5fX25hbWVfXwotICAgICAgICByZXR1cm4gcmVhbF9tZXRob2QKLSAg
ICByZXR1cm4gZGVjb3JhdG9yCi0KLQotZGVmIHF1ZXJ5X2FzX3N0cmluZygpOgotICAgIHF1ZXJ5
ID0gJz8nCi0gICAgZm9yIGtleSwgdmFsdWVzIGluIHJlcXVlc3QuYXJncy50b19kaWN0KGZsYXQ9
RmFsc2UpLml0ZW1zKCk6Ci0gICAgICAgIGZvciB2YWx1ZSBpbiB2YWx1ZXM6Ci0gICAgICAgICAg
ICBxdWVyeSArPSBmJ3trZXl9PXt2YWx1ZX0mJwotICAgIHJldHVybiBxdWVyeVs6LTFdCi0KLQot
ZGVmIGJvb2xlYW5fcXVlcnkoKmFyZ3MpOgotCi0gICAgZGVmIGZ1bmMoc3RyaW5nKToKLSAgICAg
ICAgaWYgc3RyaW5nLmxvd2VyKCkgaW4gWyd0cnVlJywgJ3llcyddOgotICAgICAgICAgICAgcmV0
dXJuIFRydWUKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmV0dXJuIGJvb2woaW50KHN0cmlu
ZykpCi0gICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgotICAgICAgICAgICAgcmV0dXJuIEZhbHNl
Ci0KLSAgICByZXR1cm4gW2Z1bmMoYXJnKSBmb3IgYXJnIGluIGFyZ3NdCi0KLQotZGVmIGxpbWl0
X2Zvcl9xdWVyeShkZWZhdWx0X2xpbWl0PTEwMCk6Ci0gICAgZGVmIGRlY29yYXRvcihtZXRob2Qp
OgotICAgICAgICBkZWYgcmVhbF9tZXRob2Qoc2VsZj1Ob25lLCBtZXRob2Q9bWV0aG9kLCBsaW1p
dD1Ob25lLCAqKmt3YXJncyk6Ci0gICAgICAgICAgICBsaW1pdF90b191c2UgPSBkZWZhdWx0X2xp
bWl0Ci0gICAgICAgICAgICBpZiBsaW1pdDoKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAg
ICAgICAgICAgICAgIGxpbWl0X3RvX3VzZSA9IGludChsaW1pdFstMV0pCi0gICAgICAgICAgICAg
ICAgICAgIGlmIGxpbWl0X3RvX3VzZSA8PSAwOgotICAgICAgICAgICAgICAgICAgICAgICAgcmFp
c2UgVmFsdWVFcnJvcigpCi0gICAgICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6Ci0gICAg
ICAgICAgICAgICAgICAgIGFib3J0KDQwMCwgZGVzY3JpcHRpb249J0xpbWl0IG11c3QgYmUgYSBw
b3NpdGl2ZSBpbnRlZ2VyJykKLSAgICAgICAgICAgIGlmIHNlbGY6Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIG1ldGhvZChzZWxmPXNlbGYsIGxpbWl0PWxpbWl0X3RvX3VzZSwgKiprd2FyZ3MpCi0g
ICAgICAgICAgICByZXR1cm4gbWV0aG9kKGxpbWl0PWxpbWl0X3RvX3VzZSwgKiprd2FyZ3MpCi0K
LSAgICAgICAgcmVhbF9tZXRob2QuX19uYW1lX18gPSBtZXRob2QuX19uYW1lX18KLSAgICAgICAg
cmV0dXJuIHJlYWxfbWV0aG9kCi0gICAgcmV0dXJuIGRlY29yYXRvcgotCi0KLWRlZiBjYWNoZV9m
b3IoaG91cnM9MTIpOgotICAgIGRlZiBkZWNvcmF0b3IobWV0aG9kKToKLSAgICAgICAgZGVmIHJl
YWxfbWV0aG9kKHNlbGY9Tm9uZSwgbWV0aG9kPW1ldGhvZCwgKiprd2FyZ3MpOgotICAgICAgICAg
ICAgaWYgc2VsZjoKLSAgICAgICAgICAgICAgICByZXNwb25zZSA9IG1ldGhvZChzZWxmPXNlbGYs
ICoqa3dhcmdzKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByZXNwb25zZSA9
IG1ldGhvZCgqKmt3YXJncykKLSAgICAgICAgICAgIHJlc3BvbnNlLmhlYWRlcnMuYWRkKCdDYWNo
ZS1Db250cm9sJywgZidwdWJsaWMsbWF4LWFnZT17aG91cnMgKiA2MCAqIDYwfScpCi0gICAgICAg
ICAgICByZXR1cm4gcmVzcG9uc2UKLQotICAgICAgICByZWFsX21ldGhvZC5fX25hbWVfXyA9IG1l
dGhvZC5fX25hbWVfXwotICAgICAgICByZXR1cm4gcmVhbF9tZXRob2QKLSAgICByZXR1cm4gZGVj
b3JhdG9yCkluZGV4OiBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9mbGFza19zdXBwb3J0
L3V0aWxfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0
c2RicHkvZmxhc2tfc3VwcG9ydC91dGlsX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNjU1MzEpCisr
KyBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9mbGFza19zdXBwb3J0L3V0aWxfdW5pdHRl
c3QucHkJKG5vbmV4aXN0ZW50KQpAQCAtMSw1MCArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIg
QU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotIyBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUgotIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotIyBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotCi1pbXBvcnQgdW5pdHRlc3QKLQotZnJvbSB3ZXJremV1Zy5leGNl
cHRpb25zIGltcG9ydCBCYWRSZXF1ZXN0Ci1mcm9tIHJlc3VsdHNkYnB5LmZsYXNrX3N1cHBvcnQu
dXRpbCBpbXBvcnQgYm9vbGVhbl9xdWVyeSwgbGltaXRfZm9yX3F1ZXJ5Ci0KLQotY2xhc3MgVXRp
bFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotCi0gICAgZGVmIHRlc3RfYm9vbGVhbl9xdWVyeShz
ZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGFsbChib29sZWFuX3F1ZXJ5KCdUcnVlJywg
J3RydWUnKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShhbGwoYm9vbGVhbl9xdWVyeSgnWWVz
JywgJ3llcycpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGFsbChib29sZWFuX3F1ZXJ5KCcx
JywgJzEwMCcpKSkKLQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGFueShib29sZWFuX3F1ZXJ5
KCdGYWxzZScsICdmYWxzZScpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShhbnkoYm9vbGVh
bl9xdWVyeSgnTm8nLCAnbm8nKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYW55KGJvb2xl
YW5fcXVlcnkoJzAnLCAnYW55IHN0cmluZycpKSkKLQotICAgIGRlZiB0ZXN0X2xpbWl0X2RlY29y
YXRvcihzZWxmKToKLSAgICAgICAgQGxpbWl0X2Zvcl9xdWVyeSgpCi0gICAgICAgIGRlZiBmdW5j
KGxpbWl0PU5vbmUpOgotICAgICAgICAgICAgcmV0dXJuIGxpbWl0Ci0KLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChmdW5jKCksIDEwMCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmdW5jKGxp
bWl0PVsnMTAnXSksIDEwKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZ1bmMobGltaXQ9Wycx
MCcsICcxJ10pLCAxKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhCYWRSZXF1ZXN0LCBmdW5j
LCBsaW1pdD1bJ3N0cmluZyddKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhCYWRSZXF1ZXN0
LCBmdW5jLCBsaW1pdD1bJzAnXSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQmFkUmVxdWVz
dCwgZnVuYywgbGltaXQ9WyctMSddKQpJbmRleDogVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2Ri
cHkvbW9kZWwvX19pbml0X18ucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJbmRleDogVG9vbHMvcmVzdWx0c2RicHkv
cmVzdWx0c2RicHkvbW9kZWwvYXJjaGl2ZV9jb250ZXh0LnB5Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL2FyY2hpdmVfY29udGV4dC5weQkocmV2aXNp
b24gMjY1NTMxKQorKysgVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvYXJjaGl2
ZV9jb250ZXh0LnB5CShub25leGlzdGVudCkKQEAgLTEsMjgzICswLDAgQEAKLSMgQ29weXJpZ2h0
IChDKSAyMDE5LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
IyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jCi0j
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
Ci0jIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0jIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IKLSMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSMgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotaW1wb3J0IGNhbGVuZGFyCi1pbXBvcnQg
aW8KLWltcG9ydCBqc29uCi1pbXBvcnQgdGltZQotaW1wb3J0IHppcGZpbGUKLQotZnJvbSBjYXNz
YW5kcmEuY3FsZW5naW5lIGltcG9ydCBjb2x1bW5zCi1mcm9tIGNhc3NhbmRyYS5jcWxlbmdpbmUu
bW9kZWxzIGltcG9ydCBNb2RlbAotZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgT3JkZXJlZERpY3QK
LWZyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1lCi1mcm9tIHJlc3VsdHNkYnB5LmNvbnRyb2xs
ZXIuY29tbWl0IGltcG9ydCBDb21taXQKLWZyb20gcmVzdWx0c2RicHkuY29udHJvbGxlci5jb25m
aWd1cmF0aW9uIGltcG9ydCBDb25maWd1cmF0aW9uCi1mcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLmFy
Y2hpdmVyIGltcG9ydCBBcmNoaXZlcgotZnJvbSByZXN1bHRzZGJweS5tb2RlbC5jYXNzYW5kcmFf
YXJjaGl2ZXIgaW1wb3J0IENhc3NhbmRyYUFyY2hpdmVyCi1mcm9tIHJlc3VsdHNkYnB5Lm1vZGVs
LmNvbW1pdF9jb250ZXh0IGltcG9ydCBDb21taXRDb250ZXh0Ci1mcm9tIHJlc3VsdHNkYnB5Lm1v
ZGVsLmNvbmZpZ3VyYXRpb25fY29udGV4dCBpbXBvcnQgQ2x1c3RlcmVkQnlDb25maWd1cmF0aW9u
Ci1mcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLnVwbG9hZF9jb250ZXh0IGltcG9ydCBVcGxvYWRDb250
ZXh0Ci0KLQotZGVmIF9nZXRfdGltZShpbnB1dF90aW1lKToKLSAgICBpZiBpc2luc3RhbmNlKGlu
cHV0X3RpbWUsIGRhdGV0aW1lKToKLSAgICAgICAgcmV0dXJuIGNhbGVuZGFyLnRpbWVnbShpbnB1
dF90aW1lLnRpbWV0dW1wbGUoKSkKLSAgICBpZiBpbnB1dF90aW1lOgotICAgICAgICByZXR1cm4g
aW50KGlucHV0X3RpbWUpCi0gICAgcmV0dXJuIE5vbmUKLQotCi1jbGFzcyBBcmNoaXZlQ29udGV4
dChvYmplY3QpOgotICAgIERFRkFVTFRfTElNSVQgPSAxMAotICAgIE1FTU9SWV9MSU1JVCA9IDIg
KiAxMDI0ICogMTAyNCAqIDEwMjQgICMgRG9uJ3QgYWxsb3cgbW9yZSB0aGFuIDIgZ2lncyBvZiBh
cmNoaXZlcyBpbiBtZW1vcnkgYXQgb25lIHRpbWUKLQotICAgIGNsYXNzIEFyY2hpdmVNZXRhRGF0
YUJ5Q29tbWl0KENsdXN0ZXJlZEJ5Q29uZmlndXJhdGlvbik6Ci0gICAgICAgIF9fdGFibGVfbmFt
ZV9fID0gJ2FyY2hpdmVfbWV0YWRhdGFfYnlfY29tbWl0XzAyJwotICAgICAgICBzdWl0ZSA9IGNv
bHVtbnMuVGV4dChwYXJ0aXRpb25fa2V5PVRydWUsIHJlcXVpcmVkPVRydWUpCi0gICAgICAgIGJy
YW5jaCA9IGNvbHVtbnMuVGV4dChwYXJ0aXRpb25fa2V5PVRydWUsIHJlcXVpcmVkPVRydWUpCi0g
ICAgICAgIHV1aWQgPSBjb2x1bW5zLkJpZ0ludChwcmltYXJ5X2tleT1UcnVlLCByZXF1aXJlZD1U
cnVlLCBjbHVzdGVyaW5nX29yZGVyPSdERVNDJykKLSAgICAgICAgc2RrID0gY29sdW1ucy5UZXh0
KHByaW1hcnlfa2V5PVRydWUsIHJlcXVpcmVkPVRydWUpCi0gICAgICAgIHN0YXJ0X3RpbWUgPSBj
b2x1bW5zLkJpZ0ludChwcmltYXJ5X2tleT1UcnVlLCByZXF1aXJlZD1UcnVlKQotICAgICAgICBk
aWdlc3QgPSBjb2x1bW5zLlRleHQocmVxdWlyZWQ9VHJ1ZSkKLSAgICAgICAgc2l6ZSA9IGNvbHVt
bnMuQmlnSW50KHJlcXVpcmVkPVRydWUpCi0KLSAgICAgICAgZGVmIHVucGFjayhzZWxmKToKLSAg
ICAgICAgICAgIHJldHVybiBkaWN0KAotICAgICAgICAgICAgICAgIHV1aWQ9c2VsZi51dWlkLAot
ICAgICAgICAgICAgICAgIHN0YXJ0X3RpbWU9c2VsZi5zdGFydF90aW1lLAotICAgICAgICAgICAg
ICAgIGRpZ2VzdD1zZWxmLmRpZ2VzdCwKLSAgICAgICAgICAgICAgICBzaXplPXNlbGYuc2l6ZSwK
LSAgICAgICAgICAgICkKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBhc3NlcnRfemlwZmls
ZShjbHMsIGFyY2hpdmUpOgotICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShhcmNoaXZlLCBpby5C
eXRlc0lPKToKLSAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcihmJ0FyY2hpdmUgZXhwZWN0ZWQg
e2lvLkJ5dGVzSU99LCBnb3Qge3R5cGUoYXJjaGl2ZSl9IGluc3RlYWQnKQotICAgICAgICBpZiBu
b3QgemlwZmlsZS5pc196aXBmaWxlKGFyY2hpdmUpOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVy
cm9yKGYnQXJjaGl2ZSBpcyBub3QgYSB6aXBmaWxlJykKLQotICAgIEBjbGFzc21ldGhvZAotICAg
IGRlZiBvcGVuX3ppcGZpbGUoY2xzLCBhcmNoaXZlKToKLSAgICAgICAgY2xzLmFzc2VydF96aXBm
aWxlKGFyY2hpdmUpCi0gICAgICAgIHJldHVybiB6aXBmaWxlLlppcEZpbGUoYXJjaGl2ZSwgbW9k
ZT0ncicpCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgY29uZmlndXJhdGlvbl9jb250ZXh0LCBj
b21taXRfY29udGV4dCwgdHRsX3NlY29uZHM9Tm9uZSk6Ci0gICAgICAgIHNlbGYuY29uZmlndXJh
dGlvbl9jb250ZXh0ID0gY29uZmlndXJhdGlvbl9jb250ZXh0Ci0gICAgICAgIHNlbGYuY29tbWl0
X2NvbnRleHQgPSBjb21taXRfY29udGV4dAotICAgICAgICBzZWxmLmNhc3NhbmRyYSA9IHNlbGYu
Y29uZmlndXJhdGlvbl9jb250ZXh0LmNhc3NhbmRyYQotICAgICAgICBzZWxmLmFyY2hpdmVyID0g
Q2Fzc2FuZHJhQXJjaGl2ZXIoc2VsZi5jYXNzYW5kcmEpCi0gICAgICAgIHNlbGYudHRsX3NlY29u
ZHMgPSB0dGxfc2Vjb25kcwotCi0gICAgICAgIHdpdGggc2VsZjoKLSAgICAgICAgICAgIHNlbGYu
Y2Fzc2FuZHJhLmNyZWF0ZV90YWJsZShzZWxmLkFyY2hpdmVNZXRhRGF0YUJ5Q29tbWl0KQotICAg
ICAgICAgICAgc2VsZi5jYXNzYW5kcmEuY3JlYXRlX3RhYmxlKFVwbG9hZENvbnRleHQuU3VpdGVz
QnlDb25maWd1cmF0aW9uKQotCi0gICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKLSAgICAgICAgc2Vs
Zi5jb25maWd1cmF0aW9uX2NvbnRleHQuX19lbnRlcl9fKCkKLSAgICAgICAgc2VsZi5jb21taXRf
Y29udGV4dC5fX2VudGVyX18oKQotICAgICAgICBzZWxmLmFyY2hpdmVyLl9fZW50ZXJfXygpCi0K
LSAgICBkZWYgX19leGl0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKLSAgICAgICAgc2VsZi5j
b21taXRfY29udGV4dC5fX2V4aXRfXygqYXJncywgKiprd2FyZ3MpCi0gICAgICAgIHNlbGYuY29u
ZmlndXJhdGlvbl9jb250ZXh0Ll9fZXhpdF9fKCphcmdzLCAqKmt3YXJncykKLSAgICAgICAgc2Vs
Zi5hcmNoaXZlci5fX2V4aXRfXygqYXJncywgKiprd2FyZ3MpCi0KLSAgICBkZWYgcmVnaXN0ZXIo
c2VsZiwgYXJjaGl2ZSwgY29uZmlndXJhdGlvbiwgY29tbWl0cywgc3VpdGUsIHRpbWVzdGFtcD1O
b25lKToKLSAgICAgICAgc2VsZi5hc3NlcnRfemlwZmlsZShhcmNoaXZlKQotICAgICAgICB0aW1l
c3RhbXAgPSBfZ2V0X3RpbWUodGltZXN0YW1wKSBvciB0aW1lLnRpbWUoKQotCi0gICAgICAgIHdp
dGggc2VsZjoKLSAgICAgICAgICAgIHV1aWQgPSBzZWxmLmNvbW1pdF9jb250ZXh0LnV1aWRfZm9y
X2NvbW1pdHMoY29tbWl0cykKLSAgICAgICAgICAgIHR0bCA9IGludCgodXVpZCAvLyBDb21taXQu
VElNRVNUQU1QX1RPX1VVSURfTVVMVElQTElFUikgKyBzZWxmLnR0bF9zZWNvbmRzIC0gdGltZS50
aW1lKCkpIGlmIHNlbGYudHRsX3NlY29uZHMgZWxzZSBOb25lCi0KLSAgICAgICAgICAgIGZvciBi
cmFuY2ggaW4gc2VsZi5jb21taXRfY29udGV4dC5icmFuY2hfa2V5c19mb3JfY29tbWl0cyhjb21t
aXRzKToKLSAgICAgICAgICAgICAgICBzZWxmLmNvbmZpZ3VyYXRpb25fY29udGV4dC5yZWdpc3Rl
cl9jb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24sIGJyYW5jaD1icmFuY2gsIHRpbWVzdGFtcD10
aW1lc3RhbXApCi0KLSAgICAgICAgICAgICAgICBzZWxmLmNvbmZpZ3VyYXRpb25fY29udGV4dC5p
bnNlcnRfcm93X3dpdGhfY29uZmlndXJhdGlvbigKLSAgICAgICAgICAgICAgICAgICAgVXBsb2Fk
Q29udGV4dC5TdWl0ZXNCeUNvbmZpZ3VyYXRpb24uX190YWJsZV9uYW1lX18sIGNvbmZpZ3VyYXRp
b24sIHN1aXRlPXN1aXRlLCBicmFuY2g9YnJhbmNoLCB0dGw9dHRsLAotICAgICAgICAgICAgICAg
ICkKLSAgICAgICAgICAgICAgICBkaWdlc3QgPSBzZWxmLmFyY2hpdmVyLnNhdmUoYXJjaGl2ZSwg
cmV0YWluX2Zvcj10dGwpCi0KLSAgICAgICAgICAgICAgICBzZWxmLmNvbmZpZ3VyYXRpb25fY29u
dGV4dC5pbnNlcnRfcm93X3dpdGhfY29uZmlndXJhdGlvbigKLSAgICAgICAgICAgICAgICAgICAg
c2VsZi5BcmNoaXZlTWV0YURhdGFCeUNvbW1pdC5fX3RhYmxlX25hbWVfXywgY29uZmlndXJhdGlv
bj1jb25maWd1cmF0aW9uLCBzdWl0ZT1zdWl0ZSwKLSAgICAgICAgICAgICAgICAgICAgYnJhbmNo
PWJyYW5jaCwgdXVpZD11dWlkLCB0dGw9dHRsLAotICAgICAgICAgICAgICAgICAgICBzZGs9Y29u
ZmlndXJhdGlvbi5zZGsgb3IgJz8nLCBzdGFydF90aW1lPXRpbWVzdGFtcCwKLSAgICAgICAgICAg
ICAgICAgICAgZGlnZXN0PWRpZ2VzdCwKLSAgICAgICAgICAgICAgICAgICAgc2l6ZT1BcmNoaXZl
ci5hcmNoaXZlX3NpemUoYXJjaGl2ZSksCi0gICAgICAgICAgICAgICAgKQotCi0gICAgZGVmIGZp
bmRfYXJjaGl2ZSgKLSAgICAgICAgICAgIHNlbGYsIGNvbmZpZ3VyYXRpb25zPU5vbmUsIHN1aXRl
PU5vbmUsIHJlY2VudD1UcnVlLAotICAgICAgICAgICAgYnJhbmNoPU5vbmUsIGJlZ2luPU5vbmUs
IGVuZD1Ob25lLAotICAgICAgICAgICAgYmVnaW5fcXVlcnlfdGltZT1Ob25lLCBlbmRfcXVlcnlf
dGltZT1Ob25lLAotICAgICAgICAgICAgbGltaXQ9REVGQVVMVF9MSU1JVCwKLSAgICApOgotICAg
ICAgICBpZiBub3QgY29uZmlndXJhdGlvbnM6Ci0gICAgICAgICAgICBjb25maWd1cmF0aW9ucyA9
IFtdCi0gICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHN1aXRlLCBzdHIpOgotICAgICAgICAgICAg
cmFpc2UgVHlwZUVycm9yKGYnRXhwZWN0ZWQgdHlwZSB7c3RyfSwgZ290IHt0eXBlKHN1aXRlKX0n
KQotCi0gICAgICAgIHdpdGggc2VsZjoKLSAgICAgICAgICAgIG1ldGFkYXRhX2J5X2NvbmZpZyA9
IHt9Ci0gICAgICAgICAgICBmb3IgY29uZmlndXJhdGlvbiBpbiBjb25maWd1cmF0aW9uczoKLSAg
ICAgICAgICAgICAgICBtZXRhZGF0YV9ieV9jb25maWcudXBkYXRlKHtjb25maWc6IFt2YWx1ZS51
bnBhY2soKSBmb3IgdmFsdWUgaW4gdmFsdWVzXSBmb3IgY29uZmlnLCB2YWx1ZXMgaW4gc2VsZi5j
b25maWd1cmF0aW9uX2NvbnRleHQuc2VsZWN0X2Zyb21fdGFibGVfd2l0aF9jb25maWd1cmF0aW9u
cygKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5BcmNoaXZlTWV0YURhdGFCeUNvbW1pdC5fX3Rh
YmxlX25hbWVfXywgY29uZmlndXJhdGlvbnM9W2NvbmZpZ3VyYXRpb25dLCByZWNlbnQ9cmVjZW50
LAotICAgICAgICAgICAgICAgICAgICBzdWl0ZT1zdWl0ZSwgc2RrPWNvbmZpZ3VyYXRpb24uc2Rr
LCBicmFuY2g9YnJhbmNoIG9yIHNlbGYuY29tbWl0X2NvbnRleHQuREVGQVVMVF9CUkFOQ0hfS0VZ
LAotICAgICAgICAgICAgICAgICAgICB1dWlkX19ndGU9Q29tbWl0Q29udGV4dC5jb252ZXJ0X3Rv
X3V1aWQoYmVnaW4pLAotICAgICAgICAgICAgICAgICAgICB1dWlkX19sdGU9Q29tbWl0Q29udGV4
dC5jb252ZXJ0X3RvX3V1aWQoZW5kLCBDb21taXRDb250ZXh0LnRpbWVzdGFtcF90b191dWlkKCkp
LAotICAgICAgICAgICAgICAgICAgICBzdGFydF90aW1lX19ndGU9X2dldF90aW1lKGJlZ2luX3F1
ZXJ5X3RpbWUpLCBzdGFydF90aW1lX19sdGU9X2dldF90aW1lKGVuZF9xdWVyeV90aW1lKSwKLSAg
ICAgICAgICAgICAgICAgICAgbGltaXQ9bGltaXQsCi0gICAgICAgICAgICAgICAgKS5pdGVtcygp
fSkKLQotICAgICAgICAgICAgbWVtb3J5X3VzZWQgPSAwCi0gICAgICAgICAgICBmb3IgdmFsdWVz
IGluIG1ldGFkYXRhX2J5X2NvbmZpZy52YWx1ZXMoKToKLSAgICAgICAgICAgICAgICBmb3IgdmFs
dWUgaW4gdmFsdWVzOgotICAgICAgICAgICAgICAgICAgICBpZiBub3QgdmFsdWUuZ2V0KCdkaWdl
c3QnKToKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgICAgICAg
ICAgICAgbWVtb3J5X3VzZWQgKz0gdmFsdWUuZ2V0KCdzaXplJywgMCkKLSAgICAgICAgICAgICAg
ICAgICAgaWYgbWVtb3J5X3VzZWQgPiBzZWxmLk1FTU9SWV9MSU1JVDoKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignSGl0IHNvZnQtbWVtb3J5IGNhcCB3aGVuIGZl
dGNoaW5nIGFyY2hpdmVzLCBhYm9ydGluZycpCi0KLSAgICAgICAgICAgIGFyY2hpdmVfYnlfZGln
ZXN0ID0ge30KLSAgICAgICAgICAgIHJlc3VsdCA9IHt9Ci0gICAgICAgICAgICBmb3IgY29uZmln
LCB2YWx1ZXMgaW4gbWV0YWRhdGFfYnlfY29uZmlnLml0ZW1zKCk6Ci0gICAgICAgICAgICAgICAg
Zm9yIHZhbHVlIGluIHZhbHVlczoKLSAgICAgICAgICAgICAgICAgICAgaWYgbm90IHZhbHVlLmdl
dCgnZGlnZXN0Jyk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAg
ICAgICAgICAgICAgIGlmIG5vdCBhcmNoaXZlX2J5X2RpZ2VzdC5nZXQodmFsdWUuZ2V0KCdkaWdl
c3QnKSk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBhcmNoaXZlID0gc2VsZi5hcmNoaXZlci5y
ZXRyaWV2ZSh2YWx1ZS5nZXQoJ2RpZ2VzdCcpLCB2YWx1ZS5nZXQoJ3NpemUnLCBOb25lKSkKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBhcmNoaXZlOgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgICAgICAgICBhcmNoaXZlX2J5X2Rp
Z2VzdFt2YWx1ZS5nZXQoJ2RpZ2VzdCcpXSA9IGFyY2hpdmUKLQotICAgICAgICAgICAgICAgICAg
ICBhcmNoaXZlX2J5X2RpZ2VzdC5nZXQodmFsdWUuZ2V0KCdkaWdlc3QnKSkuc2VlaygwKQotICAg
ICAgICAgICAgICAgICAgICByZXN1bHQuc2V0ZGVmYXVsdChjb25maWcsIFtdKQotICAgICAgICAg
ICAgICAgICAgICByZXN1bHRbY29uZmlnXS5hcHBlbmQoZGljdCgKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGFyY2hpdmU9YXJjaGl2ZV9ieV9kaWdlc3QuZ2V0KHZhbHVlLmdldCgnZGlnZXN0Jykp
LAotICAgICAgICAgICAgICAgICAgICAgICAgZGlnZXN0PXZhbHVlLmdldCgnZGlnZXN0JyksCi0g
ICAgICAgICAgICAgICAgICAgICAgICB1dWlkPXZhbHVlWyd1dWlkJ10sCi0gICAgICAgICAgICAg
ICAgICAgICAgICBzdGFydF90aW1lPXZhbHVlWydzdGFydF90aW1lJ10sCi0gICAgICAgICAgICAg
ICAgICAgICkpCi0KLSAgICAgICAgICAgIHJldHVybiByZXN1bHQKLQotICAgIEBjbGFzc21ldGhv
ZAotICAgIGRlZiBfZmlsZXNfZm9yX2FyY2hpdmUoY2xzLCBhcmNoaXZlKToKLSAgICAgICAgbWFz
dGVyID0gTm9uZQotICAgICAgICBmaWxlcyA9IHNldCgpCi0KLSAgICAgICAgYXJjaGl2ZV9saXN0
ID0gW10KLSAgICAgICAgaXNfbWFzdGVyZWQgPSBUcnVlCi0gICAgICAgIGZvciBpdGVtIGluIGFy
Y2hpdmUubmFtZWxpc3QoKToKLSAgICAgICAgICAgIGlmIGl0ZW0uc3RhcnRzd2l0aCgnX18nKToK
LSAgICAgICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgICAgICBpZiBub3QgbWFzdGVyOgot
ICAgICAgICAgICAgICAgIG1hc3RlciA9IGl0ZW0KLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAg
ICAgICAgICAgaWYgaXNfbWFzdGVyZWQgYW5kIG5vdCBpdGVtLnN0YXJ0c3dpdGgobWFzdGVyKToK
LSAgICAgICAgICAgICAgICAgICAgaXNfbWFzdGVyZWQgPSBGYWxzZQotICAgICAgICAgICAgICAg
ICAgICBhcmNoaXZlX2xpc3QuYXBwZW5kKG1hc3RlcikKLSAgICAgICAgICAgICAgICBhcmNoaXZl
X2xpc3QuYXBwZW5kKGl0ZW0pCi0KLSAgICAgICAgaWYgbm90IGlzX21hc3RlcmVkOgotICAgICAg
ICAgICAgbWFzdGVyID0gTm9uZQotICAgICAgICBmb3IgaXRlbSBpbiBhcmNoaXZlX2xpc3Q6Ci0g
ICAgICAgICAgICBpZiBtYXN0ZXI6Ci0gICAgICAgICAgICAgICAgaXRlbV90b19hZGQgPSBpdGVt
W2xlbihtYXN0ZXIpOl0KLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgaXRlbV90
b19hZGQgPSBpdGVtCi0KLSAgICAgICAgICAgIGZpbGVzLmFkZChpdGVtX3RvX2FkZCkKLSAgICAg
ICAgICAgIGJ1aWx0ID0gJycKLSAgICAgICAgICAgIGZvciBwYXJ0aWFsIGluIGl0ZW1fdG9fYWRk
LnNwbGl0KCcvJylbOi0xXToKLSAgICAgICAgICAgICAgICBidWlsdCA9IGYne2J1aWx0fXtwYXJ0
aWFsfS8nCi0gICAgICAgICAgICAgICAgZmlsZXMuYWRkKGJ1aWx0KQotCi0gICAgICAgIHJldHVy
biBtYXN0ZXIsIHNvcnRlZChbKmZpbGVzXSkKLQotICAgIGRlZiBscyhzZWxmLCAqYXJncywgKipr
d2FyZ3MpOgotICAgICAgICBjYW5kaWRhdGVzID0gc2VsZi5maW5kX2FyY2hpdmUoKmFyZ3MsICoq
a3dhcmdzKQotICAgICAgICByZXN1bHQgPSB7fQotICAgICAgICBmb3IgY29uZmlnLCBhcmNoaXZl
cyBpbiBjYW5kaWRhdGVzLml0ZW1zKCk6Ci0gICAgICAgICAgICByZXN1bHRbY29uZmlnXSA9IFtd
Ci0gICAgICAgICAgICBmb3IgYXJjaGl2ZSBpbiBhcmNoaXZlczoKLSAgICAgICAgICAgICAgICBy
ZXN1bHRbY29uZmlnXS5hcHBlbmQoZGljdCgKLSAgICAgICAgICAgICAgICAgICAgdXVpZD1hcmNo
aXZlWyd1dWlkJ10sCi0gICAgICAgICAgICAgICAgICAgIHN0YXJ0X3RpbWU9YXJjaGl2ZVsnc3Rh
cnRfdGltZSddLAotICAgICAgICAgICAgICAgICAgICBmaWxlcz1zZXQoKSwKLSAgICAgICAgICAg
ICAgICApKQotCi0gICAgICAgICAgICAgICAgd2l0aCBzZWxmLm9wZW5femlwZmlsZShhcmNoaXZl
WydhcmNoaXZlJ10pIGFzIHVucGFja2VkOgotICAgICAgICAgICAgICAgICAgICBfLCByZXN1bHRb
Y29uZmlnXVstMV1bJ2ZpbGVzJ10gPSBzZWxmLl9maWxlc19mb3JfYXJjaGl2ZSh1bnBhY2tlZCkK
LQotICAgICAgICByZXR1cm4gcmVzdWx0Ci0KLSAgICBkZWYgZmlsZShzZWxmLCBwYXRoPU5vbmUs
ICoqa3dhcmdzKToKLSAgICAgICAgY2FuZGlkYXRlcyA9IHNlbGYuZmluZF9hcmNoaXZlKCoqa3dh
cmdzKQotICAgICAgICByZXN1bHQgPSB7fQotICAgICAgICBmb3IgY29uZmlnLCBhcmNoaXZlcyBp
biBjYW5kaWRhdGVzLml0ZW1zKCk6Ci0gICAgICAgICAgICByZXN1bHRbY29uZmlnXSA9IFtdCi0g
ICAgICAgICAgICBmb3IgYXJjaGl2ZSBpbiBhcmNoaXZlczoKLSAgICAgICAgICAgICAgICBmaWxl
ID0gTm9uZQotCi0gICAgICAgICAgICAgICAgd2l0aCBzZWxmLm9wZW5femlwZmlsZShhcmNoaXZl
WydhcmNoaXZlJ10pIGFzIHVucGFja2VkOgotICAgICAgICAgICAgICAgICAgICBtYXN0ZXIsIGZp
bGVzID0gc2VsZi5fZmlsZXNfZm9yX2FyY2hpdmUodW5wYWNrZWQpCi0gICAgICAgICAgICAgICAg
ICAgIGlmIG5vdCBwYXRoOgotICAgICAgICAgICAgICAgICAgICAgICAgZmlsZSA9IGZpbGVzCi0g
ICAgICAgICAgICAgICAgICAgIGVsaWYgcGF0aFstMV0gPT0gJy8nOgotICAgICAgICAgICAgICAg
ICAgICAgICAgZmlsZSA9IFtmW2xlbihwYXRoKTpdIGZvciBmIGluIGZpbGVzIGlmIGYuc3RhcnRz
d2l0aChwYXRoKV0KLSAgICAgICAgICAgICAgICAgICAgZWxpZiBwYXRoIGluIGZpbGVzOgotICAg
ICAgICAgICAgICAgICAgICAgICAgZmlsZSA9IHVucGFja2VkLm9wZW4oJ3t9e30nLmZvcm1hdCht
YXN0ZXIgb3IgJycsIHBhdGgpKS5yZWFkKCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5
ID0gZic/e2NvbmZpZy50b19xdWVyeSgpfScKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGxl
bihxdWVyeSkgPiAxOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5ICs9ICcmJwot
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgYXJjaGl2ZVsndXVpZCddOgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHF1ZXJ5ICs9IGYidXVpZD17YXJjaGl2ZVsndXVpZCddfSYiCi0gICAg
ICAgICAgICAgICAgICAgICAgICBpZiBhcmNoaXZlWydzdGFydF90aW1lJ106Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcXVlcnkgKz0gZiJhZnRlcl90aW1lPXthcmNoaXZlWydzdGFydF90
aW1lJ119JmJlZm9yZV90aW1lPXthcmNoaXZlWydzdGFydF90aW1lJ119JiIKLQotICAgICAgICAg
ICAgICAgICAgICAgICAgcXVlcnkgPSBxdWVyeVs6LTFdCi0KLSAgICAgICAgICAgICAgICAgICAg
ICAgICMgSWYgd2UgZmluZCByZWZlcmVuY2VzIHRvIG90aGVyIGZpbGVzIGluIHRoZSBhcmNoaXZl
LCB3ZSBuZWVkIHRvIHJlcGxhY2UgdGhvc2UgcmVmZXJlbmNlcwotICAgICAgICAgICAgICAgICAg
ICAgICAgIyB3aXRoIHJlZmVyZW5jZXMgdGhhdCBpbmNsdWRlIHRoZSBxdWVyeQotICAgICAgICAg
ICAgICAgICAgICAgICAgcGFyZW50X3BhdGggPSAnLycuam9pbihwYXRoLnNwbGl0KCcvJylbOi0x
XSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvciBmIGluIGZpbGVzOgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIGZbLTFdID09ICcvJyBvciBmID09IHBhdGggb3Igbm90IHF1ZXJ5
OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIGYuc3RhcnRzd2l0aChwYXJlbnRfcGF0aCk6Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZpbGUgPSBmaWxlLnJlcGxhY2UoZltsZW4ocGFyZW50X3Bh
dGgpOl0uZW5jb2RlKCd1dGYtOCcpLCBmJ3tmW2xlbihwYXJlbnRfcGF0aCk6XX17cXVlcnl9Jy5l
bmNvZGUoJ3V0Zi04JykpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZSA9IGZpbGUucmVwbGFjZShmLmVuY29kZSgn
dXRmLTgnKSwgZid7Zn17cXVlcnl9Jy5lbmNvZGUoJ3V0Zi04JykpCi0KLQotICAgICAgICAgICAg
ICAgIGlmIGZpbGU6Ci0gICAgICAgICAgICAgICAgICAgIHJlc3VsdFtjb25maWddLmFwcGVuZChk
aWN0KAotICAgICAgICAgICAgICAgICAgICAgICAgdXVpZD1hcmNoaXZlWyd1dWlkJ10sCi0gICAg
ICAgICAgICAgICAgICAgICAgICBzdGFydF90aW1lPWFyY2hpdmVbJ3N0YXJ0X3RpbWUnXSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGZpbGU9ZmlsZSwKLSAgICAgICAgICAgICAgICAgICAgKSkK
LQotICAgICAgICByZXR1cm4gcmVzdWx0CkluZGV4OiBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRz
ZGJweS9tb2RlbC9hcmNoaXZlX2NvbnRleHRfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvYXJjaGl2ZV9jb250ZXh0X3VuaXR0ZXN0
LnB5CShyZXZpc2lvbiAyNjU1MzEpCisrKyBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9t
b2RlbC9hcmNoaXZlX2NvbnRleHRfdW5pdHRlc3QucHkJKG5vbmV4aXN0ZW50KQpAQCAtMSwxMjgg
KzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAot
IyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0jIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IKLSMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSMgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwKLSMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotaW1wb3J0IGJh
c2U2NAotaW1wb3J0IGlvCi1pbXBvcnQgbW9jawotaW1wb3J0IG9zCi1pbXBvcnQgemlwZmlsZQot
Ci1mcm9tIGZha2VyZWRpcyBpbXBvcnQgRmFrZVN0cmljdFJlZGlzCi1mcm9tIHJlZGlzIGltcG9y
dCBTdHJpY3RSZWRpcwotZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVyLmNvbmZpZ3VyYXRpb24g
aW1wb3J0IENvbmZpZ3VyYXRpb24KLWZyb20gcmVzdWx0c2RicHkubW9kZWwuY2Fzc2FuZHJhX2Nv
bnRleHQgaW1wb3J0IENhc3NhbmRyYUNvbnRleHQKLWZyb20gcmVzdWx0c2RicHkubW9kZWwubW9j
a19jYXNzYW5kcmFfY29udGV4dCBpbXBvcnQgTW9ja0Nhc3NhbmRyYUNvbnRleHQKLWZyb20gcmVz
dWx0c2RicHkubW9kZWwubW9ja19tb2RlbF9mYWN0b3J5IGltcG9ydCBNb2NrTW9kZWxGYWN0b3J5
Ci1mcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLm1vY2tfcmVwb3NpdG9yeSBpbXBvcnQgTW9ja1NWTlJl
cG9zaXRvcnkKLWZyb20gcmVzdWx0c2RicHkubW9kZWwud2FpdF9mb3JfZG9ja2VyX3Rlc3RfY2Fz
ZSBpbXBvcnQgV2FpdEZvckRvY2tlclRlc3RDYXNlCi0KLQotY2xhc3MgQXJjaGl2ZUNvbnRleHRU
ZXN0KFdhaXRGb3JEb2NrZXJUZXN0Q2FzZSk6Ci0gICAgS0VZU1BBQ0UgPSAnYXJjaGl2ZV90ZXN0
X2tleXNwYWNlJwotCi0gICAgZGVmIGluaXRfZGF0YWJhc2Uoc2VsZiwgcmVkaXM9U3RyaWN0UmVk
aXMsIGNhc3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0LCBjb25maWd1cmF0aW9uPUNvbmZpZ3VyYXRp
b24oKSwgYXJjaGl2ZT1Ob25lKToKLSAgICAgICAgY2Fzc2FuZHJhLmRyb3Bfa2V5c3BhY2Uoa2V5
c3BhY2U9c2VsZi5LRVlTUEFDRSkKLSAgICAgICAgc2VsZi5tb2RlbCA9IE1vY2tNb2RlbEZhY3Rv
cnkuY3JlYXRlKHJlZGlzPXJlZGlzKCksIGNhc3NhbmRyYT1jYXNzYW5kcmEoa2V5c3BhY2U9c2Vs
Zi5LRVlTUEFDRSwgY3JlYXRlX2tleXNwYWNlPVRydWUpKQotICAgICAgICBNb2NrTW9kZWxGYWN0
b3J5LmFkZF9tb2NrX2FyY2hpdmVzKHNlbGYubW9kZWwsIGNvbmZpZ3VyYXRpb249Y29uZmlndXJh
dGlvbiwgYXJjaGl2ZT1hcmNoaXZlKQotCi0gICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2Nr
X2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9
TW9ja0Nhc3NhbmRyYUNvbnRleHQpCi0gICAgZGVmIHRlc3RfZmluZF9hcmNoaXZlKHNlbGYsIHJl
ZGlzPVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCk6Ci0gICAgICAgIHNl
bGYuaW5pdF9kYXRhYmFzZShyZWRpcz1yZWRpcywgY2Fzc2FuZHJhPWNhc3NhbmRyYSkKLSAgICAg
ICAgYXJjaGl2ZXMgPSBzZWxmLm1vZGVsLmFyY2hpdmVfY29udGV4dC5maW5kX2FyY2hpdmUoCi0g
ICAgICAgICAgICBjb25maWd1cmF0aW9ucz1bQ29uZmlndXJhdGlvbihwbGF0Zm9ybT0nTWFjJywg
c3R5bGU9J1JlbGVhc2UnLCBmbGF2b3I9J3drMScpXSwKLSAgICAgICAgICAgIGJlZ2luPU1vY2tT
Vk5SZXBvc2l0b3J5LndlYmtpdCgpLmNvbW1pdF9mb3JfaWQoMjM2NTQyKSwgZW5kPU1vY2tTVk5S
ZXBvc2l0b3J5LndlYmtpdCgpLmNvbW1pdF9mb3JfaWQoMjM2NTQyKSwKLSAgICAgICAgICAgIHN1
aXRlPSdsYXlvdXQtdGVzdHMnLAotICAgICAgICApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
bGVuKG5leHQoaXRlcihhcmNoaXZlcy52YWx1ZXMoKSkpKSwgMSkKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChuZXh0KGl0ZXIoYXJjaGl2ZXMudmFsdWVzKCkpKVswXVsndXVpZCddLCAxNTM4MDQ5
MTA4MDApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV4dChpdGVyKGFyY2hpdmVzLnZhbHVl
cygpKSlbMF1bJ2FyY2hpdmUnXS5nZXR2YWx1ZSgpLCBiYXNlNjQuYjY0ZGVjb2RlKE1vY2tNb2Rl
bEZhY3RvcnkuQVJDSElWRV9aSVApKQotCi0gICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2Nr
X2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9
TW9ja0Nhc3NhbmRyYUNvbnRleHQpCi0gICAgZGVmIHRlc3RfYXJjaGl2ZV9saXN0KHNlbGYsIHJl
ZGlzPVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCk6Ci0gICAgICAgIHNl
bGYuaW5pdF9kYXRhYmFzZShyZWRpcz1yZWRpcywgY2Fzc2FuZHJhPWNhc3NhbmRyYSkKLSAgICAg
ICAgZmlsZXMgPSBzZWxmLm1vZGVsLmFyY2hpdmVfY29udGV4dC5scygKLSAgICAgICAgICAgIGNv
bmZpZ3VyYXRpb25zPVtDb25maWd1cmF0aW9uKHBsYXRmb3JtPSdNYWMnLCBzdHlsZT0nUmVsZWFz
ZScsIGZsYXZvcj0nd2sxJyldLAotICAgICAgICAgICAgYmVnaW49TW9ja1NWTlJlcG9zaXRvcnku
d2Via2l0KCkuY29tbWl0X2Zvcl9pZCgyMzY1NDIpLCBlbmQ9TW9ja1NWTlJlcG9zaXRvcnkud2Vi
a2l0KCkuY29tbWl0X2Zvcl9pZCgyMzY1NDIpLAotICAgICAgICAgICAgc3VpdGU9J2xheW91dC10
ZXN0cycsCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obmV4dChpdGVy
KGZpbGVzLnZhbHVlcygpKSkpLCAxKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5leHQoaXRl
cihmaWxlcy52YWx1ZXMoKSkpWzBdWyd1dWlkJ10sIDE1MzgwNDkxMDgwMCkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChuZXh0KGl0ZXIoZmlsZXMudmFsdWVzKCkpKVswXVsnZmlsZXMnXSwgWydm
aWxlLnR4dCcsICdpbmRleC5odG1sJ10pCi0KLSAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1v
Y2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRy
YT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKLSAgICBkZWYgdGVzdF9maWxlX2FjY2VzcyhzZWxmLCBy
ZWRpcz1TdHJpY3RSZWRpcywgY2Fzc2FuZHJhPUNhc3NhbmRyYUNvbnRleHQpOgotICAgICAgICBz
ZWxmLmluaXRfZGF0YWJhc2UocmVkaXM9cmVkaXMsIGNhc3NhbmRyYT1jYXNzYW5kcmEpCi0gICAg
ICAgIGZpbGVzID0gc2VsZi5tb2RlbC5hcmNoaXZlX2NvbnRleHQuZmlsZSgKLSAgICAgICAgICAg
IHBhdGg9J2ZpbGUudHh0JywKLSAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25zPVtDb25maWd1cmF0
aW9uKHBsYXRmb3JtPSdNYWMnLCBzdHlsZT0nUmVsZWFzZScsIGZsYXZvcj0nd2sxJyldLAotICAg
ICAgICAgICAgYmVnaW49TW9ja1NWTlJlcG9zaXRvcnkud2Via2l0KCkuY29tbWl0X2Zvcl9pZCgy
MzY1NDIpLCBlbmQ9TW9ja1NWTlJlcG9zaXRvcnkud2Via2l0KCkuY29tbWl0X2Zvcl9pZCgyMzY1
NDIpLAotICAgICAgICAgICAgc3VpdGU9J2xheW91dC10ZXN0cycsCi0gICAgICAgICkKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obmV4dChpdGVyKGZpbGVzLnZhbHVlcygpKSkpLCAxKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5leHQoaXRlcihmaWxlcy52YWx1ZXMoKSkpWzBdWyd1
dWlkJ10sIDE1MzgwNDkxMDgwMCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KGl0ZXIo
ZmlsZXMudmFsdWVzKCkpKVswXVsnZmlsZSddLCAnZGF0YScuZW5jb2RlKCdhc2NpaScpKQotCi0g
ICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZh
a2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCi0gICAg
ZGVmIHRlc3RfZmlsZV9saXN0KHNlbGYsIHJlZGlzPVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fz
c2FuZHJhQ29udGV4dCk6Ci0gICAgICAgIHNlbGYuaW5pdF9kYXRhYmFzZShyZWRpcz1yZWRpcywg
Y2Fzc2FuZHJhPWNhc3NhbmRyYSkKLSAgICAgICAgZmlsZXMgPSBzZWxmLm1vZGVsLmFyY2hpdmVf
Y29udGV4dC5maWxlKAotICAgICAgICAgICAgY29uZmlndXJhdGlvbnM9W0NvbmZpZ3VyYXRpb24o
cGxhdGZvcm09J01hYycsIHN0eWxlPSdSZWxlYXNlJywgZmxhdm9yPSd3azEnKV0sCi0gICAgICAg
ICAgICBiZWdpbj1Nb2NrU1ZOUmVwb3NpdG9yeS53ZWJraXQoKS5jb21taXRfZm9yX2lkKDIzNjU0
MiksIGVuZD1Nb2NrU1ZOUmVwb3NpdG9yeS53ZWJraXQoKS5jb21taXRfZm9yX2lkKDIzNjU0Miks
Ci0gICAgICAgICAgICBzdWl0ZT0nbGF5b3V0LXRlc3RzJywKLSAgICAgICAgKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGxlbihuZXh0KGl0ZXIoZmlsZXMudmFsdWVzKCkpKSksIDEpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV4dChpdGVyKGZpbGVzLnZhbHVlcygpKSlbMF1bJ3V1aWQn
XSwgMTUzODA0OTEwODAwKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5leHQoaXRlcihmaWxl
cy52YWx1ZXMoKSkpWzBdWydmaWxlJ10sIFsnZmlsZS50eHQnLCAnaW5kZXguaHRtbCddKQotCi0g
ICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZh
a2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCi0gICAg
ZGVmIHRlc3RfbGFyZ2VfYXJjaGl2ZShzZWxmLCByZWRpcz1TdHJpY3RSZWRpcywgY2Fzc2FuZHJh
PUNhc3NhbmRyYUNvbnRleHQpOgotICAgICAgICBGSUxFX1NJWkUgPSAyNSAqIDEwMjQgKiAxMDI0
ICAjIDI1IE1CIGZpbGVzCi0gICAgICAgIGJ1ZmYgPSBpby5CeXRlc0lPKCkKLSAgICAgICAgd2l0
aCB6aXBmaWxlLlppcEZpbGUoYnVmZiwgJ2EnLCB6aXBmaWxlLlpJUF9ERUZMQVRFRCwgRmFsc2Up
IGFzIGFyY2hpdmU6Ci0gICAgICAgICAgICBmb3IgZmlsZSwgZGF0YSBpbiBbCi0gICAgICAgICAg
ICAgICAgKCdmaWxlLTEudHh0JywgaW8uQnl0ZXNJTyhvcy51cmFuZG9tKEZJTEVfU0laRSkpKSwK
LSAgICAgICAgICAgICAgICAoJ2ZpbGUtMi50eHQnLCBpby5CeXRlc0lPKG9zLnVyYW5kb20oRklM
RV9TSVpFKSkpLAotICAgICAgICAgICAgICAgICgnZmlsZS0zLnR4dCcsIGlvLkJ5dGVzSU8ob3Mu
dXJhbmRvbShGSUxFX1NJWkUpKSksCi0gICAgICAgICAgICBdOgotICAgICAgICAgICAgICAgIGFy
Y2hpdmUud3JpdGVzdHIoZmlsZSwgZGF0YS5nZXR2YWx1ZSgpKQotCi0gICAgICAgIHNlbGYuaW5p
dF9kYXRhYmFzZSgKLSAgICAgICAgICAgIHJlZGlzPXJlZGlzLCBjYXNzYW5kcmE9Y2Fzc2FuZHJh
LAotICAgICAgICAgICAgY29uZmlndXJhdGlvbj1Db25maWd1cmF0aW9uKHBsYXRmb3JtPSdNYWMn
LCBzdHlsZT0nUmVsZWFzZScsIGZsYXZvcj0nd2sxJyksCi0gICAgICAgICAgICBhcmNoaXZlPWJ1
ZmYsCi0gICAgICAgICkKLQotICAgICAgICBmaWxlcyA9IHNlbGYubW9kZWwuYXJjaGl2ZV9jb250
ZXh0LmZpbmRfYXJjaGl2ZSgKLSAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25zPVtDb25maWd1cmF0
aW9uKHBsYXRmb3JtPSdNYWMnLCBzdHlsZT0nUmVsZWFzZScsIGZsYXZvcj0nd2sxJyldLAotICAg
ICAgICAgICAgYmVnaW49TW9ja1NWTlJlcG9zaXRvcnkud2Via2l0KCkuY29tbWl0X2Zvcl9pZCgy
MzY1NDIpLCBlbmQ9TW9ja1NWTlJlcG9zaXRvcnkud2Via2l0KCkuY29tbWl0X2Zvcl9pZCgyMzY1
NDIpLAotICAgICAgICAgICAgc3VpdGU9J2xheW91dC10ZXN0cycsCi0gICAgICAgICkKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obmV4dChpdGVyKGZpbGVzLnZhbHVlcygpKSkpLCAxKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5leHQoaXRlcihmaWxlcy52YWx1ZXMoKSkpWzBdWyd1
dWlkJ10sIDE1MzgwNDkxMDgwMCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KGl0ZXIo
ZmlsZXMudmFsdWVzKCkpKVswXVsnYXJjaGl2ZSddLmdldHZhbHVlKCksIGJ1ZmYuZ2V0dmFsdWUo
KSkKLQotICAgICAgICB3aXRoIG1vY2sucGF0Y2goJ3Jlc3VsdHNkYnB5Lm1vZGVsLmFyY2hpdmVf
Y29udGV4dC5BcmNoaXZlQ29udGV4dC5NRU1PUllfTElNSVQnLCBuZXc9RklMRV9TSVpFKSwgc2Vs
Zi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yKToKLSAgICAgICAgICAgIHNlbGYubW9kZWwuYXJj
aGl2ZV9jb250ZXh0LmZpbmRfYXJjaGl2ZSgKLSAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9u
cz1bQ29uZmlndXJhdGlvbihwbGF0Zm9ybT0nTWFjJywgc3R5bGU9J1JlbGVhc2UnLCBmbGF2b3I9
J3drMScpXSwKLSAgICAgICAgICAgICAgICBiZWdpbj1Nb2NrU1ZOUmVwb3NpdG9yeS53ZWJraXQo
KS5jb21taXRfZm9yX2lkKDIzNjU0MiksIGVuZD1Nb2NrU1ZOUmVwb3NpdG9yeS53ZWJraXQoKS5j
b21taXRfZm9yX2lkKDIzNjU0MiksCi0gICAgICAgICAgICAgICAgc3VpdGU9J2xheW91dC10ZXN0
cycsCi0gICAgICAgICAgICApCkluZGV4OiBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9t
b2RlbC9hcmNoaXZlci5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRz
ZGJweS9tb2RlbC9hcmNoaXZlci5weQkocmV2aXNpb24gMjY1NTMxKQorKysgVG9vbHMvcmVzdWx0
c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvYXJjaGl2ZXIucHkJKG5vbmV4aXN0ZW50KQpAQCAtMSw0
NSArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0jIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
Ci0jIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAot
IyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUgotIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotIyBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLAotIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1pbXBvcnQg
b3MKLWltcG9ydCBoYXNobGliCi0KLQotY2xhc3MgQXJjaGl2ZXIob2JqZWN0KToKLSAgICBAY2xh
c3NtZXRob2QKLSAgICBkZWYgYXJjaGl2ZV9kaWdlc3QoY2xzLCBhcmNoaXZlKToKLSAgICAgICAg
ZGlnZXN0ID0gaGFzaGxpYi5tZDUoYXJjaGl2ZS5nZXR2YWx1ZSgpKS5oZXhkaWdlc3QoKQotICAg
ICAgICBhcmNoaXZlLnNlZWsoMCkKLSAgICAgICAgcmV0dXJuIGRpZ2VzdAotCi0gICAgQGNsYXNz
bWV0aG9kCi0gICAgZGVmIGFyY2hpdmVfc2l6ZShjbHMsIGFyY2hpdmUpOgotICAgICAgICBhcmNo
aXZlLnNlZWsoMCwgb3MuU0VFS19FTkQpCi0gICAgICAgIHNpemUgPSBhcmNoaXZlLnRlbGwoKQot
ICAgICAgICBhcmNoaXZlLnNlZWsoMCkKLSAgICAgICAgcmV0dXJuIHNpemUKLQotICAgIGRlZiBz
YXZlKHNlbGYsIGFyY2hpdmUsIHJldGFpbl9mb3I9Tm9uZSk6Ci0gICAgICAgIHJhaXNlIE5vdElt
cGxlbWVudGVkRXJyb3IKLQotICAgIGRlZiByZXRyaWV2ZShzZWxmLCBkaWdlc3QsIHNpemU9Tm9u
ZSk6Ci0gICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKSW5kZXg6IFRvb2xzL3Jlc3Vs
dHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL2Nhc3NhbmRyYV9hcmNoaXZlci5weQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9jYXNzYW5kcmFfYXJjaGl2
ZXIucHkJKHJldmlzaW9uIDI2NTUzMSkKKysrIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5
L21vZGVsL2Nhc3NhbmRyYV9hcmNoaXZlci5weQkobm9uZXhpc3RlbnQpCkBAIC0xLDg1ICswLDAg
QEAKLSMgQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMg
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQotIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotIyBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SCi0jIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0jIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
Ci0jIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLWltcG9ydCBpbwotCi1m
cm9tIGNhc3NhbmRyYS5jcWxlbmdpbmUgaW1wb3J0IGNvbHVtbnMKLWZyb20gY2Fzc2FuZHJhLmNx
bGVuZ2luZS5tb2RlbHMgaW1wb3J0IE1vZGVsCi1mcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLmFyY2hp
dmVyIGltcG9ydCBBcmNoaXZlcgotCi0KLWNsYXNzIENhc3NhbmRyYUFyY2hpdmVyKEFyY2hpdmVy
KToKLSAgICBNQVhfQVJDSElWRSA9IDUwMCAqIDEwMjQgKiAxMDI0ICAjIEFyY2hpdmVzIHNob3Vs
ZCBiZSBzbWFsbGVyIHRoYW4gNTAwIE1CCi0gICAgQ0hVTktfU0laRSA9IDEwICogMTAyNCAqIDEw
MjQgICAgIyBDYXNzYW5kcmEgZG9lc24ndCBkbyB3ZWxsIHdpdGggZGF0YSBibG9icyBvZiBtb3Jl
IHRoYW4gMTAgTUIKLQotICAgICMgQWNjb3JkaW5nIHRvIGh0dHBzOi8vY3dpa2kuYXBhY2hlLm9y
Zy9jb25mbHVlbmNlL2Rpc3BsYXkvQ0FTU0FORFJBMi9DYXNzYW5kcmFMaW1pdGF0aW9ucywgd2Ug
c2hvdWxkIHNoYXJkCi0gICAgIyBsYXJnZSBkYXRhIGJsb2JzLgotICAgIGNsYXNzIEFyY2hpdmVD
aHVua3MoTW9kZWwpOgotICAgICAgICBfX3RhYmxlX25hbWVfXyA9ICdhcmNoaXZlX2NodW5rc18w
MicKLSAgICAgICAgZGlnZXN0ID0gY29sdW1ucy5UZXh0KHBhcnRpdGlvbl9rZXk9VHJ1ZSwgcmVx
dWlyZWQ9VHJ1ZSkKLSAgICAgICAgaW5kZXggPSBjb2x1bW5zLkludGVnZXIocHJpbWFyeV9rZXk9
VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkKLSAgICAgICAgY2h1bmsgPSBjb2x1bW5zLkJsb2IocmVxdWly
ZWQ9VHJ1ZSkKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjYXNzYW5kcmEpOgotICAgICAgICBz
ZWxmLmNhc3NhbmRyYSA9IGNhc3NhbmRyYQotICAgICAgICB3aXRoIHNlbGY6Ci0gICAgICAgICAg
ICBzZWxmLmNhc3NhbmRyYS5jcmVhdGVfdGFibGUoc2VsZi5BcmNoaXZlQ2h1bmtzKQotCi0gICAg
ZGVmIF9fZW50ZXJfXyhzZWxmKToKLSAgICAgICAgc2VsZi5jYXNzYW5kcmEuX19lbnRlcl9fKCkK
LQotICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgotICAgICAgICBzZWxm
LmNhc3NhbmRyYS5fX2V4aXRfXygqYXJncywgKiprd2FyZ3MpCi0KLSAgICBkZWYgc2F2ZShzZWxm
LCBhcmNoaXZlLCByZXRhaW5fZm9yPU5vbmUpOgotICAgICAgICBpbmRleCA9IDAKLSAgICAgICAg
c2l6ZSA9IHNlbGYuYXJjaGl2ZV9zaXplKGFyY2hpdmUpCi0gICAgICAgIGlmIHNpemUgPiBzZWxm
Lk1BWF9BUkNISVZFOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignQXJjaGl2ZSBsYXJn
ZXIgdGhhbiA1MDAgTUInKQotICAgICAgICBkaWdlc3QgPSBzZWxmLmFyY2hpdmVfZGlnZXN0KGFy
Y2hpdmUpCi0gICAgICAgIHdoaWxlIHNpemUgPiBpbmRleCAqIHNlbGYuQ0hVTktfU0laRToKLSAg
ICAgICAgICAgIHNlbGYuY2Fzc2FuZHJhLmluc2VydF9yb3coCi0gICAgICAgICAgICAgICAgc2Vs
Zi5BcmNoaXZlQ2h1bmtzLl9fdGFibGVfbmFtZV9fLAotICAgICAgICAgICAgICAgIGRpZ2VzdD1k
aWdlc3QsIGluZGV4PWluZGV4LAotICAgICAgICAgICAgICAgIGNodW5rPWFyY2hpdmUucmVhZChz
ZWxmLkNIVU5LX1NJWkUpLAotICAgICAgICAgICAgICAgIHR0bD1yZXRhaW5fZm9yLAotICAgICAg
ICAgICAgKQotICAgICAgICAgICAgaW5kZXggKz0gMQotICAgICAgICByZXR1cm4gZGlnZXN0Ci0K
LSAgICBkZWYgcmV0cmlldmUoc2VsZiwgZGlnZXN0LCBzaXplPU5vbmUpOgotICAgICAgICByb3dz
ID0gc2VsZi5jYXNzYW5kcmEuc2VsZWN0X2Zyb21fdGFibGUoCi0gICAgICAgICAgICBzZWxmLkFy
Y2hpdmVDaHVua3MuX190YWJsZV9uYW1lX18sCi0gICAgICAgICAgICBkaWdlc3Q9ZGlnZXN0LAot
ICAgICAgICAgICAgbGltaXQ9MSArIGludChzaXplIG9yIHNlbGYuTUFYX0FSQ0hJVkUgLyBzZWxm
LkNIVU5LX1NJWkUpLAotICAgICAgICApCi0gICAgICAgIGlmIGxlbihyb3dzKSA9PSAwOgotICAg
ICAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgICAgICBhcmNoaXZlID0gaW8uQnl0ZXNJTygpCi0g
ICAgICAgIGZvciByb3cgaW4gcm93czoKLSAgICAgICAgICAgIGFyY2hpdmUud3JpdGUocm93LmNo
dW5rKQotCi0gICAgICAgIGlmIChzaXplIGFuZCBzZWxmLmFyY2hpdmVfc2l6ZShhcmNoaXZlKSAh
PSBzaXplKSBvciBkaWdlc3QgIT0gc2VsZi5hcmNoaXZlX2RpZ2VzdChhcmNoaXZlKToKLSAgICAg
ICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignRmFpbGVkIHRvIHJlY29uc3RydWN0IGFyY2hpdmUg
ZnJvbSBjaHVua3MnKQotCi0gICAgICAgIHJldHVybiBhcmNoaXZlCkluZGV4OiBUb29scy9yZXN1
bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9jYXNzYW5kcmFfY29udGV4dC5weQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9jYXNzYW5kcmFfY29udGV4
dC5weQkocmV2aXNpb24gMjY1NTMxKQorKysgVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkv
bW9kZWwvY2Fzc2FuZHJhX2NvbnRleHQucHkJKG5vbmV4aXN0ZW50KQpAQCAtMSwzMjQgKzAsMCBA
QAotIyBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
IwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0jIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IKLSMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSMgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwK
LSMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotaW1wb3J0IGNvbnRleHRs
aWIKLWltcG9ydCBvcwotaW1wb3J0IHJlCi1pbXBvcnQgdXVpZAotCi1mcm9tIGNhc3NhbmRyYS5j
bHVzdGVyIGltcG9ydCBDbHVzdGVyCi1mcm9tIGNhc3NhbmRyYS5jcWxlbmdpbmUuY29sdW1ucyBp
bXBvcnQgVGV4dAotZnJvbSBjYXNzYW5kcmEuY3FsZW5naW5lLmNvbm5lY3Rpb24gaW1wb3J0IHJl
Z2lzdGVyX2Nvbm5lY3Rpb24sIHVucmVnaXN0ZXJfY29ubmVjdGlvbgotZnJvbSBjYXNzYW5kcmEu
Y3FsZW5naW5lLm1hbmFnZW1lbnQgaW1wb3J0IENRTEVOR19BTExPV19TQ0hFTUFfTUFOQUdFTUVO
VCwgZ2V0X2NsdXN0ZXIsIGNyZWF0ZV9rZXlzcGFjZV9uZXR3b3JrX3RvcG9sb2d5LCBjcmVhdGVf
a2V5c3BhY2Vfc2ltcGxlLCBkcm9wX2tleXNwYWNlLCBzeW5jX3RhYmxlCi1mcm9tIGNhc3NhbmRy
YS5jcWxlbmdpbmUubW9kZWxzIGltcG9ydCBNb2RlbAotZnJvbSBjYXNzYW5kcmEuY3FsZW5naW5l
LnF1ZXJ5IGltcG9ydCBCYXRjaFF1ZXJ5Ci0KLQotY2xhc3MgUmVnZXhDbHVzdGVyKFRleHQpOgot
Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG1pbl9sZW5ndGg9MSwgbWF4X2xlbmd0aD1Ob25lLCBw
cmltYXJ5X2tleT1UcnVlLCBwYXJ0aXRpb25fa2V5PUZhbHNlLCAqKmt3YXJncyk6Ci0gICAgICAg
IGFzc2VydCBwcmltYXJ5X2tleQotICAgICAgICBhc3NlcnQgbm90IHBhcnRpdGlvbl9rZXkKLSAg
ICAgICAgc3VwZXIoUmVnZXhDbHVzdGVyLCBzZWxmKS5fX2luaXRfXyhtaW5fbGVuZ3RoPW1pbl9s
ZW5ndGgsIG1heF9sZW5ndGg9bWF4X2xlbmd0aCwgcHJpbWFyeV9rZXk9cHJpbWFyeV9rZXksIHBh
cnRpdGlvbl9rZXk9cGFydGl0aW9uX2tleSwgKiprd2FyZ3MpCi0KLQotY2xhc3MgQ291bnRlZEJh
dGNoUXVlcnkoQmF0Y2hRdWVyeSk6Ci0gICAgREVGQVVMVF9MSU1JVCA9IDEwMAotCi0gICAgZGVm
IF9faW5pdF9fKHNlbGYsIGxpbWl0PURFRkFVTFRfTElNSVQsICoqa3dhcmdzKToKLSAgICAgICAg
c3VwZXIoQ291bnRlZEJhdGNoUXVlcnksIHNlbGYpLl9faW5pdF9fKCoqa3dhcmdzKQotICAgICAg
ICBzZWxmLmxpbWl0ID0gbGltaXQKLQotICAgIGRlZiBhZGRfcXVlcnkoc2VsZiwgcXVlcnkpOgot
ICAgICAgICBpZiBsZW4oc2VsZi5xdWVyaWVzKSA+PSBzZWxmLmxpbWl0OgotICAgICAgICAgICAg
c2VsZi5leGVjdXRlKCkKLSAgICAgICAgICAgIHNlbGYuX2V4ZWN1dGVkID0gRmFsc2UKLSAgICAg
ICAgcmV0dXJuIHN1cGVyKENvdW50ZWRCYXRjaFF1ZXJ5LCBzZWxmKS5hZGRfcXVlcnkocXVlcnkp
Ci0KLQotY2xhc3MgQ2Fzc2FuZHJhQ29udGV4dChvYmplY3QpOgotCi0gICAgQGNsYXNzbWV0aG9k
Ci0gICAgZGVmIGNhbl9tb2RpZnlfc2NoZW1hKGNscyk6Ci0gICAgICAgIHJldHVybiBvcy5nZXRl
bnYoQ1FMRU5HX0FMTE9XX1NDSEVNQV9NQU5BR0VNRU5ULCBGYWxzZSkKLQotICAgIEBjbGFzc21l
dGhvZAotICAgIGRlZiBkcm9wX2tleXNwYWNlKGNscywgbm9kZXM9Tm9uZSwga2V5c3BhY2U9J3Jl
c3VsdHNfZGF0YWJhc2UnLCBhdXRoX3Byb3ZpZGVyPU5vbmUpOgotICAgICAgICBub2RlcyA9IG5v
ZGVzIGlmIG5vZGVzIGVsc2UgWydsb2NhbGhvc3QnXQotICAgICAgICBjb25uZWN0aW9uX2lkID0g
dXVpZC51dWlkNCgpCi0KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmVnaXN0ZXJfY29ubmVj
dGlvbihuYW1lPXN0cihjb25uZWN0aW9uX2lkKSwgc2Vzc2lvbj1DbHVzdGVyKG5vZGVzLCBhdXRo
X3Byb3ZpZGVyPWF1dGhfcHJvdmlkZXIpLmNvbm5lY3QoKSkKLSAgICAgICAgICAgIGRvZXNfa2V5
c3BhY2VfZXhpc3QgPSBrZXlzcGFjZSBpbiBnZXRfY2x1c3RlcihzdHIoY29ubmVjdGlvbl9pZCkp
Lm1ldGFkYXRhLmtleXNwYWNlcwotICAgICAgICAgICAgaWYgZG9lc19rZXlzcGFjZV9leGlzdDoK
LSAgICAgICAgICAgICAgICBkcm9wX2tleXNwYWNlKGtleXNwYWNlLCBjb25uZWN0aW9ucz1bc3Ry
KGNvbm5lY3Rpb25faWQpXSkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHVucmVnaXN0
ZXJfY29ubmVjdGlvbihuYW1lPXN0cihjb25uZWN0aW9uX2lkKSkKLQotICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBub2Rlcz1Ob25lLCBrZXlzcGFjZT0ncmVzdWx0c19kYXRhYmFzZScsIGF1dGhfcHJv
dmlkZXI9Tm9uZSwgY3JlYXRlX2tleXNwYWNlPUZhbHNlLCByZXBsaWNhdGlvbl9tYXA9Tm9uZSk6
Ci0gICAgICAgIHNlbGYua2V5c3BhY2UgPSBrZXlzcGFjZQotICAgICAgICBzZWxmLl9kZXB0aCA9
IDAKLSAgICAgICAgc2VsZi5fY29ubmVjdGlvbl9pZCA9IHV1aWQudXVpZDQoKQotICAgICAgICBz
ZWxmLl9tb2RlbHMgPSB7fQotICAgICAgICBzZWxmLl9ub2RlcyA9IG5vZGVzIGlmIG5vZGVzIGVs
c2UgWydsb2NhbGhvc3QnXQotICAgICAgICBzZWxmLl9hdXRoX3Byb3ZpZGVyID0gYXV0aF9wcm92
aWRlcgotICAgICAgICBzZWxmLl9iYXRjaCA9IFtdCi0KLSAgICAgICAgdHJ5OgotICAgICAgICAg
ICAgcmVnaXN0ZXJfY29ubmVjdGlvbihuYW1lPXN0cihzZWxmLl9jb25uZWN0aW9uX2lkKSwgc2Vz
c2lvbj1DbHVzdGVyKHNlbGYuX25vZGVzLCBhdXRoX3Byb3ZpZGVyPXNlbGYuX2F1dGhfcHJvdmlk
ZXIpLmNvbm5lY3QoKSkKLSAgICAgICAgICAgIGRvZXNfa2V5c3BhY2VfZXhpc3QgPSBzZWxmLmtl
eXNwYWNlIGluIGdldF9jbHVzdGVyKHN0cihzZWxmLl9jb25uZWN0aW9uX2lkKSkubWV0YWRhdGEu
a2V5c3BhY2VzCi0KLSAgICAgICAgICAgIGlmIGNyZWF0ZV9rZXlzcGFjZSBhbmQgbm90IGRvZXNf
a2V5c3BhY2VfZXhpc3Q6Ci0gICAgICAgICAgICAgICAgaWYgbm90IHNlbGYuY2FuX21vZGlmeV9z
Y2hlbWEoKToKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdDYW5ub3QgY3Jl
YXRlIGtleXNwYWNlLCBTY2hlbWEgbW9kaWZpY2F0aW9uIGlzIGRpc2FibGVkJykKLSAgICAgICAg
ICAgICAgICBpZiByZXBsaWNhdGlvbl9tYXAgaXMgTm9uZToKLSAgICAgICAgICAgICAgICAgICAg
Y3JlYXRlX2tleXNwYWNlX3NpbXBsZShzZWxmLmtleXNwYWNlLCByZXBsaWNhdGlvbl9mYWN0b3I9
MSwgY29ubmVjdGlvbnM9W3N0cihzZWxmLl9jb25uZWN0aW9uX2lkKV0pCi0gICAgICAgICAgICAg
ICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgY3JlYXRlX2tleXNwYWNlX25ldHdvcmtfdG9w
b2xvZ3koc2VsZi5rZXlzcGFjZSwgZGNfcmVwbGljYXRpb25fbWFwPXJlcGxpY2F0aW9uX21hcCwg
Y29ubmVjdGlvbnM9W3N0cihzZWxmLl9jb25uZWN0aW9uX2lkKV0pCi0gICAgICAgICAgICBlbGlm
IG5vdCBkb2VzX2tleXNwYWNlX2V4aXN0OgotICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlv
bihmJ0tleXNwYWNlIHtzZWxmLmtleXNwYWNlfSBkb2VzIG5vdCBleGlzdCBhbmQgd2lsbCBub3Qg
YmUgY3JlYXRlZCcpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICB1bnJlZ2lzdGVyX2Nv
bm5lY3Rpb24obmFtZT1zdHIoc2VsZi5fY29ubmVjdGlvbl9pZCkpCi0KLSAgICBkZWYgX19lbnRl
cl9fKHNlbGYpOgotICAgICAgICBpZiBzZWxmLl9kZXB0aCA9PSAwOgotICAgICAgICAgICAgcmVn
aXN0ZXJfY29ubmVjdGlvbihuYW1lPXN0cihzZWxmLl9jb25uZWN0aW9uX2lkKSwgc2Vzc2lvbj1D
bHVzdGVyKHNlbGYuX25vZGVzLCBhdXRoX3Byb3ZpZGVyPXNlbGYuX2F1dGhfcHJvdmlkZXIpLmNv
bm5lY3Qoa2V5c3BhY2U9c2VsZi5rZXlzcGFjZSkpCi0gICAgICAgIHNlbGYuX2RlcHRoICs9IDEK
LQotICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgotICAgICAgICBzZWxm
Ll9kZXB0aCAtPSAxCi0gICAgICAgIGlmIHNlbGYuX2RlcHRoIDw9IDA6Ci0gICAgICAgICAgICB1
bnJlZ2lzdGVyX2Nvbm5lY3Rpb24obmFtZT1zdHIoc2VsZi5fY29ubmVjdGlvbl9pZCkpCi0KLSAg
ICBkZWYgYXNzZXJ0X2Nvbm5lY3RlZChzZWxmKToKLSAgICAgICAgaWYgc2VsZi5fZGVwdGggPD0g
MDoKLSAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKCdObyBDYXNzYW5kcmEgc2Vzc2lv
biBhdmFpbGFibGUnKQotCi0gICAgY2xhc3MgQXNzZXJ0Q29ubmVjdGVkRGVjb3JhdG9yKCk6Ci0K
LSAgICAgICAgZGVmIF9fY2FsbF9fKHNlbGYsIGZ1bmN0aW9uKToKLSAgICAgICAgICAgIGRlZiBk
ZWNvcmF0b3Iob2JqLCAqYXJncywgKiprd2FyZ3MpOgotICAgICAgICAgICAgICAgIG9iai5hc3Nl
cnRfY29ubmVjdGVkKCkKLSAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24ob2JqLCAqYXJn
cywgKiprd2FyZ3MpCi0gICAgICAgICAgICByZXR1cm4gZGVjb3JhdG9yCi0KLSAgICBAcHJvcGVy
dHkKLSAgICBAQXNzZXJ0Q29ubmVjdGVkRGVjb3JhdG9yKCkKLSAgICBkZWYgY2x1c3RlcihzZWxm
KToKLSAgICAgICAgcmV0dXJuIGdldF9jbHVzdGVyKHN0cihzZWxmLl9jb25uZWN0aW9uX2lkKSkK
LQotICAgIGRlZiBzY2hlbWFfZm9yX3RhYmxlKHNlbGYsIHRhYmxlX25hbWUpOgotICAgICAgICBp
ZiBub3Qgc2VsZi5jbHVzdGVyLm1ldGFkYXRhOgotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAg
ICAgICAga2V5c3BhY2VfbWV0YWRhdGEgPSBzZWxmLmNsdXN0ZXIubWV0YWRhdGEua2V5c3BhY2Vz
LmdldChzZWxmLmtleXNwYWNlLCBOb25lKQotICAgICAgICBpZiBub3Qga2V5c3BhY2VfbWV0YWRh
dGE6Ci0gICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICByZXR1cm4ga2V5c3BhY2VfbWV0
YWRhdGEudGFibGVzLmdldCh0YWJsZV9uYW1lKQotCi0gICAgQEFzc2VydENvbm5lY3RlZERlY29y
YXRvcigpCi0gICAgZGVmIGNyZWF0ZV90YWJsZShzZWxmLCBtb2RlbCk6Ci0gICAgICAgIGRvZXNf
c2NoZW1hX21hdGNoID0gc2VsZi5kb2VzX3RhYmxlX21vZGVsX21hdGNoX3NjaGVtYShtb2RlbCkK
LSAgICAgICAgaWYgZG9lc19zY2hlbWFfbWF0Y2ggaXMgRmFsc2U6Ci0gICAgICAgICAgICByYWlz
ZSBzZWxmLlNjaGVtYUV4Y2VwdGlvbignRXhpc3Rpbmcgc2NoZW1hIGRvZXMgbm90IG1hdGNoIHBy
b3ZpZGVkIG1vZGVsJykKLQotICAgICAgICB0YWJsZV9uYW1lID0gbW9kZWwuX3Jhd19jb2x1bW5f
ZmFtaWx5X25hbWUoKQotICAgICAgICBzZWxmLl9tb2RlbHNbdGFibGVfbmFtZV0gPSBtb2RlbAot
ICAgICAgICBzZWxmLl9tb2RlbHNbdGFibGVfbmFtZV0uX19jb25uZWN0aW9uX18gPSBzdHIoc2Vs
Zi5fY29ubmVjdGlvbl9pZCkKLSAgICAgICAgc2VsZi5fbW9kZWxzW3RhYmxlX25hbWVdLl9fa2V5
c3BhY2VfXyA9IHNlbGYua2V5c3BhY2UKLQotICAgICAgICBpZiBkb2VzX3NjaGVtYV9tYXRjaDoK
LSAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgIGFzc2VydCBzZWxmLmNhbl9tb2RpZnlfc2No
ZW1hKCkKLQotICAgICAgICAjIFdlIGhhdmUgYSBzcGVjaWFsIG1vZGVsIG5hbWVkIFJlZ2V4Q2x1
c3RlciB3aGljaCBhbGxvd3MgTElLRSBvcGVyYXRpb25zIHRvIGJlIHByZWZvcm1lZCBvbiBhIHBy
aW1hcnkga2V5IHF1aWNrbHkuCi0gICAgICAgICMgVGhpcyB3YXMgc3BlY2lmaWNhbGx5IGludGVu
ZGVkIGZvciBnaXQgY29tbWl0cywgYWx0aG91Z2ggaGFzIGEgZmV3IG90aGVyIHBvdGVudGlhbCB1
c2VzLgotICAgICAgICBzYXNpX2luZGV4X2NvbHVtbiA9IE5vbmUKLSAgICAgICAgZm9yIGF0dHIg
aW4gZGlyKG1vZGVsKToKLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZ2V0YXR0cihnZXRhdHRy
KG1vZGVsLCBhdHRyLCBOb25lKSwgJ2NvbHVtbicsIE5vbmUpLCBSZWdleENsdXN0ZXIpOgotICAg
ICAgICAgICAgICAgIGlmIHNhc2lfaW5kZXhfY29sdW1uOgotICAgICAgICAgICAgICAgICAgICBy
YWlzZSBzZWxmLlNjaGVtYUV4Y2VwdGlvbignT25seSBvbmUgUmVnZXhDbHVzdGVyIGFsbG93ZWQn
KQotICAgICAgICAgICAgICAgIHNhc2lfaW5kZXhfY29sdW1uID0gYXR0cgotCi0gICAgICAgIHN5
bmNfdGFibGUobW9kZWwsIGtleXNwYWNlcz1bc2VsZi5rZXlzcGFjZV0sIGNvbm5lY3Rpb25zPVtz
dHIoc2VsZi5fY29ubmVjdGlvbl9pZCldKQotICAgICAgICBpZiBzYXNpX2luZGV4X2NvbHVtbjoK
LSAgICAgICAgICAgIGZvciBzZXNzaW9uIGluIHNlbGYuY2x1c3Rlci5zZXNzaW9uczoKLSAgICAg
ICAgICAgICAgICBpZiBzZXNzaW9uLmtleXNwYWNlICE9IHNlbGYua2V5c3BhY2U6Ci0gICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgIyBodHRwczovL2RvY3MuZGF0
YXN0YXguY29tL2VuL2RzZS81LjEvY3FsL2NxbC9jcWxfdXNpbmcvdXNlU0FTSUluZGV4Lmh0bWwK
LSAgICAgICAgICAgICAgICBzZXNzaW9uLmV4ZWN1dGUoZiIiIkNSRUFURSBDVVNUT00gSU5ERVgg
aW5kZXhfe3RhYmxlX25hbWV9X3tzYXNpX2luZGV4X2NvbHVtbn0gT04ge3RhYmxlX25hbWV9ICh7
c2FzaV9pbmRleF9jb2x1bW59KSBVU0lORyBcCi0nb3JnLmFwYWNoZS5jYXNzYW5kcmEuaW5kZXgu
c2FzaS5TQVNJSW5kZXgnIFdJVEggT1BUSU9OUyA9IHt7IFwKLSdhbmFseXplcl9jbGFzcyc6ICdv
cmcuYXBhY2hlLmNhc3NhbmRyYS5pbmRleC5zYXNpLmFuYWx5emVyLlN0YW5kYXJkQW5hbHl6ZXIn
LCBcCi0nY2FzZV9zZW5zaXRpdmUnOiAndHJ1ZSd9fSIiIikKLSAgICAgICAgICAgICAgICBicmVh
awotCi0gICAgQEFzc2VydENvbm5lY3RlZERlY29yYXRvcigpCi0gICAgZGVmIGRvZXNfdGFibGVf
bW9kZWxfbWF0Y2hfc2NoZW1hKHNlbGYsIG1vZGVsKToKLSAgICAgICAgaWYgbm90IGlzc3ViY2xh
c3MobW9kZWwsIE1vZGVsKToKLSAgICAgICAgICAgIHJhaXNlIHNlbGYuU2NoZW1hRXhjZXB0aW9u
KCdNb2RlbHMgbXVzdCBiZSBkZXJpdmVkIGZyb20gYmFzZSBNb2RlbC4nKQotICAgICAgICBpZiBt
b2RlbC5fX2Fic3RyYWN0X186Ci0gICAgICAgICAgICByYWlzZSBzZWxmLlNjaGVtYUV4Y2VwdGlv
bignQ2Fubm90IGNyZWF0ZSB0YWJsZSBmcm9tIGFic3RyYWN0IG1vZGVsJykKLQotICAgICAgICBz
Y2hlbWEgPSBzZWxmLnNjaGVtYV9mb3JfdGFibGUobW9kZWwuX3Jhd19jb2x1bW5fZmFtaWx5X25h
bWUoKSkKLSAgICAgICAgaWYgc2NoZW1hIGlzIE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gTm9u
ZQotCi0gICAgICAgIHByaW1hcnlfY29sdW1ucyA9IFtdCi0gICAgICAgIGRhdGFfY29sdW1ucyA9
IFtdCi0gICAgICAgIGZvciBrZXkgaW4gbW9kZWwuX2NvbHVtbnMua2V5cygpOgotICAgICAgICAg
ICAgaWYgZ2V0YXR0cihtb2RlbCwga2V5KS5jb2x1bW4ucGFydGl0aW9uX2tleSBvciBnZXRhdHRy
KG1vZGVsLCBrZXkpLmNvbHVtbi5wcmltYXJ5X2tleToKLSAgICAgICAgICAgICAgICBwcmltYXJ5
X2NvbHVtbnMuYXBwZW5kKGtleSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAg
ZGF0YV9jb2x1bW5zLmFwcGVuZChrZXkpCi0KLSAgICAgICAgc2NoZW1hX2NvbHVtbnMgPSBbXQot
ICAgICAgICBmb3IgY29sdW1uIGluIHNjaGVtYS5jb2x1bW5zOgotICAgICAgICAgICAgc2NoZW1h
X2NvbHVtbnMuYXBwZW5kKGNvbHVtbikKLQotICAgICAgICBpZiBsZW4ocHJpbWFyeV9jb2x1bW5z
KSArIGxlbihkYXRhX2NvbHVtbnMpICE9IGxlbihzY2hlbWFfY29sdW1ucyk6Ci0gICAgICAgICAg
ICByZXR1cm4gRmFsc2UKLQotICAgICAgICBmb3IgaSBpbiByYW5nZShsZW4ocHJpbWFyeV9jb2x1
bW5zKSk6Ci0gICAgICAgICAgICBpZiBwcmltYXJ5X2NvbHVtbnNbaV0gIT0gc2NoZW1hX2NvbHVt
bnNbaV06Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgIGZvciBlbGVtZW50
IGluIGRhdGFfY29sdW1uczoKLSAgICAgICAgICAgIGlmIGVsZW1lbnQgbm90IGluIHNjaGVtYV9j
b2x1bW5zOgotICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgICAgIHBhcnRpdGlv
bl9rZXlzID0gW2NvbHVtbi5uYW1lIGZvciBjb2x1bW4gaW4gc2NoZW1hLnBhcnRpdGlvbl9rZXld
Ci0gICAgICAgIHByaW1hcnlfa2V5cyA9IFtjb2x1bW4ubmFtZSBmb3IgY29sdW1uIGluIHNjaGVt
YS5wcmltYXJ5X2tleV0KLQotICAgICAgICBmb3IgY29sdW1uIGluIHByaW1hcnlfY29sdW1ucyAr
IGRhdGFfY29sdW1uczoKLSAgICAgICAgICAgIG1vZGVsX2NvbHVtbiA9IGdldGF0dHIobW9kZWws
IGNvbHVtbikuY29sdW1uCi0gICAgICAgICAgICBpZiBzY2hlbWEuY29sdW1uc1tjb2x1bW5dLmNx
bF90eXBlICE9IG1vZGVsX2NvbHVtbi5kYl90eXBlOgotICAgICAgICAgICAgICAgIHJldHVybiBG
YWxzZQotCi0gICAgICAgICAgICBpZiBtb2RlbF9jb2x1bW4ucGFydGl0aW9uX2tleSBhbmQgY29s
dW1uIG5vdCBpbiBwYXJ0aXRpb25fa2V5czoKLSAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UK
LSAgICAgICAgICAgIGlmIG1vZGVsX2NvbHVtbi5wcmltYXJ5X2tleSBhbmQgY29sdW1uIG5vdCBp
biBwcmltYXJ5X2tleXM6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICAgICAg
ICAgIGlmIG1vZGVsX2NvbHVtbi5jbHVzdGVyaW5nX29yZGVyID09ICdERVNDJyBhbmQgbm90IHNj
aGVtYS5jb2x1bW5zW2NvbHVtbl0uaXNfcmV2ZXJzZWQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IEZhbHNlCi0gICAgICAgICAgICBpZiAobW9kZWxfY29sdW1uLmNsdXN0ZXJpbmdfb3JkZXIgPT0g
J0FTQycgb3IgbW9kZWxfY29sdW1uLmNsdXN0ZXJpbmdfb3JkZXIgaXMgTm9uZSkgYW5kIHNjaGVt
YS5jb2x1bW5zW2NvbHVtbl0uaXNfcmV2ZXJzZWQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEZh
bHNlCi0KLSAgICAgICAgcmV0dXJuIFRydWUKLQotICAgIEBBc3NlcnRDb25uZWN0ZWREZWNvcmF0
b3IoKQotICAgIEBjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCi0gICAgZGVmIGJhdGNoX3F1ZXJ5
X2NvbnRleHQoc2VsZiwgbGltaXQ9Q291bnRlZEJhdGNoUXVlcnkuREVGQVVMVF9MSU1JVCk6Ci0g
ICAgICAgIHNlbGYuX2JhdGNoLmFwcGVuZChDb3VudGVkQmF0Y2hRdWVyeShsaW1pdD1saW1pdCwg
Y29ubmVjdGlvbj1zdHIoc2VsZi5fY29ubmVjdGlvbl9pZCkpKQotICAgICAgICB0cnk6Ci0gICAg
ICAgICAgICB3aXRoIHNlbGYuX2JhdGNoWy0xXToKLSAgICAgICAgICAgICAgICB5aWVsZAotICAg
ICAgICBmaW5hbGx5OgotICAgICAgICAgICAgZGVsIHNlbGYuX2JhdGNoWy0xXQotCi0gICAgQEFz
c2VydENvbm5lY3RlZERlY29yYXRvcigpCi0gICAgZGVmIGluc2VydF9yb3coc2VsZiwgdGFibGVf
bmFtZSwgdHRsPU5vbmUsICoqa3dhcmdzKToKLSAgICAgICAgaWYgdGFibGVfbmFtZSBub3QgaW4g
c2VsZi5fbW9kZWxzOgotICAgICAgICAgICAgcmFpc2Ugc2VsZi5TY2hlbWFFeGNlcHRpb24oZid7
dGFibGVfbmFtZX0gZG9lcyBub3QgZXhpc3QgaW4gdGhlIGRhdGFiYXNlJykKLQotICAgICAgICAj
IElmIHRoZSB0dGwgaGFzIGFscmVhZHkgZXhwaXJlZCwgZG9uJ3QgZXZlbiBib3RoZXIgc2VuZGlu
ZyB0aGUgZGF0YS4KLSAgICAgICAgaWYgdHRsIGFuZCB0dGwgPCAwOgotICAgICAgICAgICAgcmV0
dXJuCi0KLSAgICAgICAgaWYgbGVuKHNlbGYuX2JhdGNoKToKLSAgICAgICAgICAgIHNlbGYuX21v
ZGVsc1t0YWJsZV9uYW1lXS5iYXRjaChzZWxmLl9iYXRjaFstMV0pLnR0bCh0dGwpLmNyZWF0ZSgq
Kmt3YXJncykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuX21vZGVsc1t0YWJsZV9u
YW1lXS50dGwodHRsKS5jcmVhdGUoKiprd2FyZ3MpCi0KLSAgICBAc3RhdGljbWV0aG9kCi0gICAg
ZGVmIGZpbHRlcl9mb3JfYXJndW1lbnQoa2V5LCB2YWx1ZSk6Ci0gICAgICAgIGtleV92YWx1ZSA9
IGtleS5zcGxpdCgnX18nKVswXQotICAgICAgICBvcGVyYXRvciA9IE5vbmUgaWYgbGVuKGtleS5z
cGxpdCgnX18nKSkgPT0gMSBlbHNlIGtleS5zcGxpdCgnX18nKVsxXQotCi0gICAgICAgIGlmIG9w
ZXJhdG9yID09ICdpbic6Ci0gICAgICAgICAgICByZXR1cm4gbGFtYmRhIHYsIGtleV92YWx1ZT1r
ZXlfdmFsdWUsIHZhbHVlPXZhbHVlOiBnZXRhdHRyKHYsIGtleV92YWx1ZSkgaW4gdmFsdWUKLSAg
ICAgICAgZWxpZiBvcGVyYXRvciA9PSAnZ3QnOgotICAgICAgICAgICAgcmV0dXJuIGxhbWJkYSB2
LCBrZXlfdmFsdWU9a2V5X3ZhbHVlLCB2YWx1ZT12YWx1ZTogZ2V0YXR0cih2LCBrZXlfdmFsdWUp
ID4gdmFsdWUKLSAgICAgICAgZWxpZiBvcGVyYXRvciA9PSAnZ3RlJzoKLSAgICAgICAgICAgIHJl
dHVybiBsYW1iZGEgdiwga2V5X3ZhbHVlPWtleV92YWx1ZSwgdmFsdWU9dmFsdWU6IGdldGF0dHIo
diwga2V5X3ZhbHVlKSA+PSB2YWx1ZQotICAgICAgICBlbGlmIG9wZXJhdG9yID09ICdsdCc6Ci0g
ICAgICAgICAgICByZXR1cm4gbGFtYmRhIHYsIGtleV92YWx1ZT1rZXlfdmFsdWUsIHZhbHVlPXZh
bHVlOiBnZXRhdHRyKHYsIGtleV92YWx1ZSkgPCB2YWx1ZQotICAgICAgICBlbGlmIG9wZXJhdG9y
ID09ICdsdGUnOgotICAgICAgICAgICAgcmV0dXJuIGxhbWJkYSB2LCBrZXlfdmFsdWU9a2V5X3Zh
bHVlLCB2YWx1ZT12YWx1ZTogZ2V0YXR0cih2LCBrZXlfdmFsdWUpIDw9IHZhbHVlCi0gICAgICAg
IGVsaWYgb3BlcmF0b3IgPT0gJ2xpa2UnOgotCi0gICAgICAgICAgICBkZWYgcmVnZXhfZmlsdGVy
KHYsIGtleV92YWx1ZT1rZXlfdmFsdWUsIHZhbHVlPXZhbHVlKToKLSAgICAgICAgICAgICAgICBy
ZWdleCA9IHJlLmVzY2FwZSh2YWx1ZSkKLSAgICAgICAgICAgICAgICByZWdleCA9IHJlZ2V4LnJl
cGxhY2UocmUuZXNjYXBlKCclJyksICcuKicpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGJvb2wo
cmUubWF0Y2gocidcQScgKyByZWdleCArIHInXFonLCBnZXRhdHRyKHYsIGtleV92YWx1ZSkpKQot
Ci0gICAgICAgICAgICByZXR1cm4gcmVnZXhfZmlsdGVyCi0KLSAgICAgICAgZWxpZiBvcGVyYXRv
ciBpcyBOb25lIG9yIG9wZXJhdG9yIGlzICdpbic6Ci0gICAgICAgICAgICByZXR1cm4gbGFtYmRh
IHYsIGtleV92YWx1ZT1rZXlfdmFsdWUsIHZhbHVlPXZhbHVlOiBnZXRhdHRyKHYsIGtleV92YWx1
ZSkgPT0gdmFsdWUKLQotICAgICAgICByYWlzZSBzZWxmLlNlbGVjdEV4Y2VwdGlvbignVW5yZWNv
Z25pemVkIG9wZXJhdG9yIHt9Jy5mb3JtYXQob3BlcmF0b3IpKQotCi0gICAgQEFzc2VydENvbm5l
Y3RlZERlY29yYXRvcigpCi0gICAgZGVmIHNlbGVjdF9mcm9tX3RhYmxlKHNlbGYsIHRhYmxlX25h
bWUsIGxpbWl0PTEwMDAwLCAqKmt3YXJncyk6Ci0gICAgICAgIGlmIHRhYmxlX25hbWUgbm90IGlu
IHNlbGYuX21vZGVsczoKLSAgICAgICAgICAgIHJhaXNlIHNlbGYuU2NoZW1hRXhjZXB0aW9uKGYn
e3RhYmxlX25hbWV9IGRvZXMgbm90IGV4aXN0IGluIHRoZSBkYXRhYmFzZScpCi0KLSAgICAgICAg
Y3JlYXRlX2FyZ3MgPSB7fQotICAgICAgICBmb3IgbmFtZSwgY29sdW1uIGluIHNlbGYuX21vZGVs
c1t0YWJsZV9uYW1lXS5fY29sdW1ucy5pdGVtcygpOgotICAgICAgICAgICAgaWYgbm90IGNvbHVt
bi5wYXJ0aXRpb25fa2V5IGFuZCBub3QgY29sdW1uLnByaW1hcnlfa2V5OgotICAgICAgICAgICAg
ICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBkaWRfZmluZF9jb2x1bW5fbmFtZSA9IEZhbHNlCi0g
ICAgICAgICAgICB1c2luZ19yYW5nZV9xdWVyeSA9IEZhbHNlCi0gICAgICAgICAgICBmb3IgYXJn
LCB2YWx1ZSBpbiBrd2FyZ3MuaXRlbXMoKToKLSAgICAgICAgICAgICAgICAjIGNxbGVuZ2luZSB3
aWxsIHVzZSBhcmd1bWVudHMgbGlrZSAnPGNvbHVtbl9uYW1lPl9fbGlrZScgdG8gaW5kaWNhdGUg
dGhhdCBhbiBhcmd1bWVudCB3aWxsIGhhdmUgc29tZSBraW5kIG9mCi0gICAgICAgICAgICAgICAg
IyBvcGVyYXRpb24gcGVyZm9ybWVkLiBXZSdyZSBsb29raW5nIGZvciBjb2x1bW4gbmFtZSBoZXJl
LgotICAgICAgICAgICAgICAgIGlmIG5hbWUgPT0gYXJnLnNwbGl0KCdfXycpWzBdIGFuZCB2YWx1
ZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgY3JlYXRlX2FyZ3NbYXJnXSA9IHZh
bHVlCi0gICAgICAgICAgICAgICAgICAgIGRpZF9maW5kX2NvbHVtbl9uYW1lID0gVHJ1ZQotICAg
ICAgICAgICAgICAgICAgICB1c2luZ19yYW5nZV9xdWVyeSA9ICdfXycgaW4gYXJnCi0gICAgICAg
ICAgICBpZiBub3QgZGlkX2ZpbmRfY29sdW1uX25hbWUgb3IgdXNpbmdfcmFuZ2VfcXVlcnk6Ci0g
ICAgICAgICAgICAgICAgYnJlYWsKLQotICAgICAgICAjIE5vdCBhbGwgdmVyc2lvbnMgb2YgQ2Fz
c2FuZHJhIHN1cHBvcnQgZmlsdGVyaW5nLiBTaW5jZSBmaWx0ZXJpbmcgaXMgaW5lZmZpY2llbnQg
aW4gQ2Fzc2FuZHJhIGFueXdheXMsIHF1ZXJpZXMgd2hpY2ggcmVseQotICAgICAgICAjIG9uIGZp
bHRlcmluZyBzaG91bGQgYmUgYWJsZSB0byByZXRyaWV2ZSB0aGUgZGF0YSBmcm9tIHRoZSBkYXRh
YmFzZSBhbmQgZmlsdGVyIGl0IHNlcnZlci1zaWRlLgotICAgICAgICBmaWx0ZXJzID0gW10KLSAg
ICAgICAgZm9yIGFyZywgdmFsdWUgaW4ga3dhcmdzLml0ZW1zKCk6Ci0gICAgICAgICAgICBpZiBh
cmcgbm90IGluIGNyZWF0ZV9hcmdzIGFuZCB2YWx1ZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAg
ICAgICBmaWx0ZXJzLmFwcGVuZChzZWxmLmZpbHRlcl9mb3JfYXJndW1lbnQoYXJnLCB2YWx1ZSkp
Ci0KLSAgICAgICAgcXVlcnlfdG9fYmVfcnVuID0gc2VsZi5fbW9kZWxzW3RhYmxlX25hbWVdLm9i
amVjdHMoKipjcmVhdGVfYXJncykubGltaXQobGltaXQpCi0KLSAgICAgICAgIyBGb3JjZXMgY3Fs
ZW5naW5lIHRvIGRpc3BhdGNoIHRoZSBxdWVyeSBiZWZvcmUgZXhpdGluZyB0aGUgZnVuY3Rpb24K
LSAgICAgICAgcmVzdWx0ID0gW10KLSAgICAgICAgZm9yIGVsZW1lbnQgaW4gcXVlcnlfdG9fYmVf
cnVuOgotICAgICAgICAgICAgZm9yIGYgaW4gZmlsdGVyczoKLSAgICAgICAgICAgICAgICBpZiBu
b3QgZihlbGVtZW50KToKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGVs
c2U6Ci0gICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChlbGVtZW50KQotICAgICAgICByZXR1
cm4gcmVzdWx0Ci0KLSAgICBjbGFzcyBTY2hlbWFFeGNlcHRpb24oUnVudGltZUVycm9yKToKLSAg
ICAgICAgcGFzcwotCi0gICAgY2xhc3MgU2VsZWN0RXhjZXB0aW9uKFJ1bnRpbWVFcnJvcik6Ci0g
ICAgICAgIHBhc3MKSW5kZXg6IFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL2Nh
c3NhbmRyYV9jb250ZXh0X3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL3Jlc3VsdHNk
YnB5L3Jlc3VsdHNkYnB5L21vZGVsL2Nhc3NhbmRyYV9jb250ZXh0X3VuaXR0ZXN0LnB5CShyZXZp
c2lvbiAyNjU1MzEpCisrKyBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9jYXNz
YW5kcmFfY29udGV4dF91bml0dGVzdC5weQkobm9uZXhpc3RlbnQpCkBAIC0xLDQzOSArMCwwIEBA
Ci0jIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0j
Ci0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0jIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUgotIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAot
IyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1pbXBvcnQgdGltZQotCi1m
cm9tIGNhc3NhbmRyYS5jcWxlbmdpbmUgaW1wb3J0IGNvbHVtbnMKLWZyb20gY2Fzc2FuZHJhLmNx
bGVuZ2luZS5tb2RlbHMgaW1wb3J0IE1vZGVsCi1mcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLmNhc3Nh
bmRyYV9jb250ZXh0IGltcG9ydCBDYXNzYW5kcmFDb250ZXh0LCBSZWdleENsdXN0ZXIKLWZyb20g
cmVzdWx0c2RicHkubW9kZWwubW9ja19jYXNzYW5kcmFfY29udGV4dCBpbXBvcnQgTW9ja0Nhc3Nh
bmRyYUNvbnRleHQKLWZyb20gcmVzdWx0c2RicHkubW9kZWwud2FpdF9mb3JfZG9ja2VyX3Rlc3Rf
Y2FzZSBpbXBvcnQgV2FpdEZvckRvY2tlclRlc3RDYXNlCi0KLQotY2xhc3MgQ2Fzc2FuZHJhVGVz
dChXYWl0Rm9yRG9ja2VyVGVzdENhc2UpOgotCi0gICAgUkVBTF9DQVNTQU5EUkFfUkVRVUlSRUQg
PSAnUmVhbCBDYXNzYW5kcmEgaW5zdGFuY2UgcmVxdWlyZWQnCi0gICAgS0VZU1BBQ0UgPSAna2V5
c3BhY2VfZm9yX3Rlc3RpbmcnCi0gICAgVEFCTEUgPSAnZXhhbXBsZV90YWJsZScKLQotICAgIGRl
ZiBpbml0X2RhdGFiYXNlKHNlbGYsIGNhc3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0KToKLSAgICAg
ICAgY2Fzc2FuZHJhLmRyb3Bfa2V5c3BhY2Uoa2V5c3BhY2U9c2VsZi5LRVlTUEFDRSkKLSAgICAg
ICAgc2VsZi5kYXRhYmFzZSA9IGNhc3NhbmRyYShrZXlzcGFjZT1zZWxmLktFWVNQQUNFLCBjcmVh
dGVfa2V5c3BhY2U9VHJ1ZSkKLQotICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9u
b19kb2NrZXIobW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCi0gICAgZGVmIHRl
c3Rfa2V5c3BhY2VfY3JlYXRpb25fZmFpbHVyZShzZWxmLCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29u
dGV4dCk6Ci0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoRXhjZXB0aW9uKToKLSAgICAg
ICAgICAgIGNhc3NhbmRyYShrZXlzcGFjZT0nZG9lc19ub3RfZXhpc3QnKQotCi0gICAgQFdhaXRG
b3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fz
c2FuZHJhQ29udGV4dCkKLSAgICBkZWYgdGVzdF9zZXNzaW9uX2Fzc2VydGlvbihzZWxmLCBjYXNz
YW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCk6Ci0gICAgICAgIHNlbGYuaW5pdF9kYXRhYmFzZShjYXNz
YW5kcmE9Y2Fzc2FuZHJhKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEFzc2VydGlv
bkVycm9yKToKLSAgICAgICAgICAgIHNlbGYuZGF0YWJhc2UuYXNzZXJ0X2Nvbm5lY3RlZCgpCi0K
LSAgICBkZWYgY3JlYXRlX3Rlc3RpbmdfdGFibGUoc2VsZik6Ci0gICAgICAgIHdpdGggc2VsZi5k
YXRhYmFzZToKLQotICAgICAgICAgICAgY2xhc3MgRXhhbXBsZVRhYmxlKE1vZGVsKToKLSAgICAg
ICAgICAgICAgICBfX3RhYmxlX25hbWVfXyA9IHNlbGYuVEFCTEUKLSAgICAgICAgICAgICAgICB2
YWx1ZTEgPSBjb2x1bW5zLlRleHQocGFydGl0aW9uX2tleT1UcnVlKQotICAgICAgICAgICAgICAg
IHZhbHVlMiA9IGNvbHVtbnMuSW50ZWdlcihwcmltYXJ5X2tleT1UcnVlKQotICAgICAgICAgICAg
ICAgIHZhbHVlMyA9IGNvbHVtbnMuSW50ZWdlcigpCi0KLSAgICAgICAgICAgIHNlbGYuZGF0YWJh
c2UuY3JlYXRlX3RhYmxlKEV4YW1wbGVUYWJsZSkKLSAgICAgICAgICAgIHJldHVybiBFeGFtcGxl
VGFibGUKLQotICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9j
a19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCi0gICAgZGVmIHRlc3RfY3JlYXRlX3Rh
YmxlKHNlbGYsIGNhc3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0KToKLSAgICAgICAgc2VsZi5pbml0
X2RhdGFiYXNlKGNhc3NhbmRyYT1jYXNzYW5kcmEpCi0gICAgICAgIHdpdGggc2VsZi5kYXRhYmFz
ZToKLSAgICAgICAgICAgIGV4YW1wbGVfdGFibGUgPSBzZWxmLmNyZWF0ZV90ZXN0aW5nX3RhYmxl
KCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmRhdGFiYXNlLmRvZXNfdGFibGVf
bW9kZWxfbWF0Y2hfc2NoZW1hKGV4YW1wbGVfdGFibGUpKQotCi0gICAgQFdhaXRGb3JEb2NrZXJU
ZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29u
dGV4dCkKLSAgICBkZWYgdGVzdF9leGlzdGluZ190YWJsZV9tb3JlX2NvbHVtbnMoc2VsZiwgY2Fz
c2FuZHJhPUNhc3NhbmRyYUNvbnRleHQpOgotICAgICAgICBzZWxmLmluaXRfZGF0YWJhc2UoY2Fz
c2FuZHJhPWNhc3NhbmRyYSkKLSAgICAgICAgd2l0aCBzZWxmLmRhdGFiYXNlOgotICAgICAgICAg
ICAgc2VsZi5jcmVhdGVfdGVzdGluZ190YWJsZSgpCi0gICAgICAgICAgICB3aXRoIHNlbGYuYXNz
ZXJ0UmFpc2VzKENhc3NhbmRyYUNvbnRleHQuU2NoZW1hRXhjZXB0aW9uKToKLQotICAgICAgICAg
ICAgICAgIGNsYXNzIEV4YW1wbGVUYWJsZShNb2RlbCk6Ci0gICAgICAgICAgICAgICAgICAgIF9f
dGFibGVfbmFtZV9fID0gc2VsZi5UQUJMRQotICAgICAgICAgICAgICAgICAgICB2YWx1ZTEgPSBj
b2x1bW5zLlRleHQocGFydGl0aW9uX2tleT1UcnVlKQotICAgICAgICAgICAgICAgICAgICB2YWx1
ZTIgPSBjb2x1bW5zLkludGVnZXIocHJpbWFyeV9rZXk9VHJ1ZSkKLSAgICAgICAgICAgICAgICAg
ICAgdmFsdWUzID0gY29sdW1ucy5JbnRlZ2VyKCkKLSAgICAgICAgICAgICAgICAgICAgdmFsdWU0
ID0gY29sdW1ucy5UZXh0KCkKLQotICAgICAgICAgICAgICAgIHNlbGYuZGF0YWJhc2UuY3JlYXRl
X3RhYmxlKEV4YW1wbGVUYWJsZSkKLQotICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19p
Zl9ub19kb2NrZXIobW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCi0gICAgZGVm
IHRlc3RfZXhpc3RpbmdfdGFibGVfZGlmZmVyZW50X2NvbHVtbnMoc2VsZiwgY2Fzc2FuZHJhPUNh
c3NhbmRyYUNvbnRleHQpOgotICAgICAgICBzZWxmLmluaXRfZGF0YWJhc2UoY2Fzc2FuZHJhPWNh
c3NhbmRyYSkKLSAgICAgICAgd2l0aCBzZWxmLmRhdGFiYXNlOgotICAgICAgICAgICAgc2VsZi5j
cmVhdGVfdGVzdGluZ190YWJsZSgpCi0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2Vz
KENhc3NhbmRyYUNvbnRleHQuU2NoZW1hRXhjZXB0aW9uKToKLQotICAgICAgICAgICAgICAgIGNs
YXNzIEV4YW1wbGVUYWJsZShNb2RlbCk6Ci0gICAgICAgICAgICAgICAgICAgIF9fdGFibGVfbmFt
ZV9fID0gc2VsZi5UQUJMRQotICAgICAgICAgICAgICAgICAgICB2YWx1ZTEgPSBjb2x1bW5zLlRl
eHQocGFydGl0aW9uX2tleT1UcnVlKQotICAgICAgICAgICAgICAgICAgICB2YWx1ZTIgPSBjb2x1
bW5zLkludGVnZXIocHJpbWFyeV9rZXk9VHJ1ZSkKLSAgICAgICAgICAgICAgICAgICAgdmFsdWUz
ID0gY29sdW1ucy5UZXh0KCkKLQotICAgICAgICAgICAgICAgIHNlbGYuZGF0YWJhc2UuY3JlYXRl
X3RhYmxlKEV4YW1wbGVUYWJsZSkKLQotICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19p
Zl9ub19kb2NrZXIobW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCi0gICAgZGVm
IHRlc3RfZXhpc3RpbmdfdGFibGVfZGlmZmVyZW50X3ByaW1hcnlfa2V5KHNlbGYsIGNhc3NhbmRy
YT1DYXNzYW5kcmFDb250ZXh0KToKLSAgICAgICAgc2VsZi5pbml0X2RhdGFiYXNlKGNhc3NhbmRy
YT1jYXNzYW5kcmEpCi0gICAgICAgIHdpdGggc2VsZi5kYXRhYmFzZToKLSAgICAgICAgICAgIHNl
bGYuY3JlYXRlX3Rlc3RpbmdfdGFibGUoKQotICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJh
aXNlcyhDYXNzYW5kcmFDb250ZXh0LlNjaGVtYUV4Y2VwdGlvbik6Ci0KLSAgICAgICAgICAgICAg
ICBjbGFzcyBFeGFtcGxlVGFibGUoTW9kZWwpOgotICAgICAgICAgICAgICAgICAgICBfX3RhYmxl
X25hbWVfXyA9IHNlbGYuVEFCTEUKLSAgICAgICAgICAgICAgICAgICAgdmFsdWUxID0gY29sdW1u
cy5UZXh0KHBhcnRpdGlvbl9rZXk9VHJ1ZSkKLSAgICAgICAgICAgICAgICAgICAgdmFsdWUyID0g
Y29sdW1ucy5JbnRlZ2VyKCkKLSAgICAgICAgICAgICAgICAgICAgdmFsdWUzID0gY29sdW1ucy5J
bnRlZ2VyKHByaW1hcnlfa2V5PVRydWUpCi0KLSAgICAgICAgICAgICAgICBzZWxmLmRhdGFiYXNl
LmNyZWF0ZV90YWJsZShFeGFtcGxlVGFibGUpCi0KLSAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNl
Lm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQot
ICAgIGRlZiB0ZXN0X2V4aXN0aW5nX3RhYmxlX2RpZmZlcmVudF9jbHVzdGVyaW5nX29yZGVyKHNl
bGYsIGNhc3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0KToKLSAgICAgICAgc2VsZi5pbml0X2RhdGFi
YXNlKGNhc3NhbmRyYT1jYXNzYW5kcmEpCi0gICAgICAgIHdpdGggc2VsZi5kYXRhYmFzZToKLSAg
ICAgICAgICAgIHNlbGYuY3JlYXRlX3Rlc3RpbmdfdGFibGUoKQotICAgICAgICAgICAgd2l0aCBz
ZWxmLmFzc2VydFJhaXNlcyhDYXNzYW5kcmFDb250ZXh0LlNjaGVtYUV4Y2VwdGlvbik6Ci0KLSAg
ICAgICAgICAgICAgICBjbGFzcyBFeGFtcGxlVGFibGUoTW9kZWwpOgotICAgICAgICAgICAgICAg
ICAgICBfX3RhYmxlX25hbWVfXyA9IHNlbGYuVEFCTEUKLSAgICAgICAgICAgICAgICAgICAgdmFs
dWUxID0gY29sdW1ucy5UZXh0KHBhcnRpdGlvbl9rZXk9VHJ1ZSkKLSAgICAgICAgICAgICAgICAg
ICAgdmFsdWUyID0gY29sdW1ucy5JbnRlZ2VyKHByaW1hcnlfa2V5PVRydWUsIGNsdXN0ZXJpbmdf
b3JkZXI9J0RFU0MnKQotICAgICAgICAgICAgICAgICAgICB2YWx1ZTMgPSBjb2x1bW5zLkludGVn
ZXIoKQotCi0gICAgICAgICAgICAgICAgc2VsZi5kYXRhYmFzZS5jcmVhdGVfdGFibGUoRXhhbXBs
ZVRhYmxlKQotCi0gICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlciht
b2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKLSAgICBkZWYgdGVzdF9leGlzdGlu
Z190YWJsZV9jb2x1bW5fb3JkZXIoc2VsZiwgY2Fzc2FuZHJhPUNhc3NhbmRyYUNvbnRleHQpOgot
ICAgICAgICBzZWxmLmluaXRfZGF0YWJhc2UoY2Fzc2FuZHJhPWNhc3NhbmRyYSkKLSAgICAgICAg
d2l0aCBzZWxmLmRhdGFiYXNlOgotCi0gICAgICAgICAgICBjbGFzcyBFeGFtcGxlVGFibGUoTW9k
ZWwpOgotICAgICAgICAgICAgICAgIF9fdGFibGVfbmFtZV9fID0gc2VsZi5UQUJMRQotICAgICAg
ICAgICAgICAgIHZhbHVlMSA9IGNvbHVtbnMuVGV4dChwYXJ0aXRpb25fa2V5PVRydWUpCi0gICAg
ICAgICAgICAgICAgdmFsdWUyID0gY29sdW1ucy5JbnRlZ2VyKHByaW1hcnlfa2V5PVRydWUpCi0g
ICAgICAgICAgICAgICAgdmFsdWUzID0gY29sdW1ucy5UZXh0KHByaW1hcnlfa2V5PVRydWUpCi0g
ICAgICAgICAgICAgICAgdmFsdWU0ID0gY29sdW1ucy5JbnRlZ2VyKCkKLQotICAgICAgICAgICAg
c2VsZi5kYXRhYmFzZS5jcmVhdGVfdGFibGUoRXhhbXBsZVRhYmxlKQotCi0gICAgICAgICAgICB3
aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKENhc3NhbmRyYUNvbnRleHQuU2NoZW1hRXhjZXB0aW9uKToK
LSAgICAgICAgICAgICAgICBjbGFzcyBFeGFtcGxlVGFibGUoTW9kZWwpOgotICAgICAgICAgICAg
ICAgICAgICBfX3RhYmxlX25hbWVfXyA9IHNlbGYuVEFCTEUKLSAgICAgICAgICAgICAgICAgICAg
dmFsdWUxID0gY29sdW1ucy5UZXh0KHBhcnRpdGlvbl9rZXk9VHJ1ZSkKLSAgICAgICAgICAgICAg
ICAgICAgdmFsdWUzID0gY29sdW1ucy5UZXh0KHByaW1hcnlfa2V5PVRydWUpCi0gICAgICAgICAg
ICAgICAgICAgIHZhbHVlMiA9IGNvbHVtbnMuSW50ZWdlcihwcmltYXJ5X2tleT1UcnVlKQotICAg
ICAgICAgICAgICAgICAgICB2YWx1ZTQgPSBjb2x1bW5zLkludGVnZXIoKQotCi0gICAgICAgICAg
ICAgICAgc2VsZi5kYXRhYmFzZS5jcmVhdGVfdGFibGUoRXhhbXBsZVRhYmxlKQotCi0gICAgQFdh
aXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX2Nhc3NhbmRyYT1Nb2Nr
Q2Fzc2FuZHJhQ29udGV4dCkKLSAgICBkZWYgdGVzdF9pbnNlcnRfcm93cyhzZWxmLCBjYXNzYW5k
cmE9Q2Fzc2FuZHJhQ29udGV4dCk6Ci0gICAgICAgIHNlbGYuaW5pdF9kYXRhYmFzZShjYXNzYW5k
cmE9Y2Fzc2FuZHJhKQotICAgICAgICB3aXRoIHNlbGYuZGF0YWJhc2U6Ci0KLSAgICAgICAgICAg
IGNsYXNzIEV4YW1wbGVUYWJsZShNb2RlbCk6Ci0gICAgICAgICAgICAgICAgX190YWJsZV9uYW1l
X18gPSBzZWxmLlRBQkxFCi0gICAgICAgICAgICAgICAgdmFsdWUxID0gY29sdW1ucy5UZXh0KHBh
cnRpdGlvbl9rZXk9VHJ1ZSkKLSAgICAgICAgICAgICAgICB2YWx1ZTIgPSBjb2x1bW5zLkludGVn
ZXIocHJpbWFyeV9rZXk9VHJ1ZSkKLSAgICAgICAgICAgICAgICB2YWx1ZTMgPSBjb2x1bW5zLlRl
eHQoKQotCi0gICAgICAgICAgICBzZWxmLmRhdGFiYXNlLmNyZWF0ZV90YWJsZShFeGFtcGxlVGFi
bGUpCi0KLSAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKDEwKToKLSAgICAgICAgICAgICAgICBm
b3IgaiBpbiByYW5nZSgxMCk6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuZGF0YWJhc2UuaW5z
ZXJ0X3JvdyhzZWxmLlRBQkxFLCB2YWx1ZTE9ZidrZXl7aX0nLCB2YWx1ZTI9aiwgdmFsdWUzPWYn
dmFsdWV7aX0te2p9JykKLQotICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMTApOgotICAgICAg
ICAgICAgICAgIGZvciBqIGluIHJhbmdlKDEwKToKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0
ID0gc2VsZi5kYXRhYmFzZS5zZWxlY3RfZnJvbV90YWJsZShzZWxmLlRBQkxFLCB2YWx1ZTE9Zidr
ZXl7aX0nLCB2YWx1ZTI9aikKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgx
LCBsZW4ocmVzdWx0KSkKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1
bHRbMF0sIEV4YW1wbGVUYWJsZSh2YWx1ZTE9ZidrZXl7aX0nLCB2YWx1ZTI9aiwgdmFsdWUzPWYn
dmFsdWV7aX0te2p9JykpCi0KLSAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9f
ZG9ja2VyKG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQotICAgIGRlZiB0ZXN0
X2R1cGxpY2F0ZV9yb3coc2VsZiwgY2Fzc2FuZHJhPUNhc3NhbmRyYUNvbnRleHQpOgotICAgICAg
ICBzZWxmLmluaXRfZGF0YWJhc2UoY2Fzc2FuZHJhPWNhc3NhbmRyYSkKLSAgICAgICAgd2l0aCBz
ZWxmLmRhdGFiYXNlOgotCi0gICAgICAgICAgICBjbGFzcyBFeGFtcGxlVGFibGUoTW9kZWwpOgot
ICAgICAgICAgICAgICAgIF9fdGFibGVfbmFtZV9fID0gc2VsZi5UQUJMRQotICAgICAgICAgICAg
ICAgIHZhbHVlMSA9IGNvbHVtbnMuVGV4dChwYXJ0aXRpb25fa2V5PVRydWUpCi0gICAgICAgICAg
ICAgICAgdmFsdWUyID0gY29sdW1ucy5JbnRlZ2VyKHByaW1hcnlfa2V5PVRydWUpCi0gICAgICAg
ICAgICAgICAgdmFsdWUzID0gY29sdW1ucy5UZXh0KCkKLQotICAgICAgICAgICAgc2VsZi5kYXRh
YmFzZS5jcmVhdGVfdGFibGUoRXhhbXBsZVRhYmxlKQotCi0gICAgICAgICAgICBzZWxmLmRhdGFi
YXNlLmluc2VydF9yb3coc2VsZi5UQUJMRSwgdmFsdWUxPSdrZXknLCB2YWx1ZTI9MSwgdmFsdWUz
PSdkdXBsaWNhdGUtMScpCi0gICAgICAgICAgICBzZWxmLmRhdGFiYXNlLmluc2VydF9yb3coc2Vs
Zi5UQUJMRSwgdmFsdWUxPSdrZXknLCB2YWx1ZTI9MSwgdmFsdWUzPSdkdXBsaWNhdGUtMicpCi0K
LSAgICAgICAgICAgIHJlc3VsdCA9IHNlbGYuZGF0YWJhc2Uuc2VsZWN0X2Zyb21fdGFibGUoc2Vs
Zi5UQUJMRSwgdmFsdWUxPSdrZXknLCB2YWx1ZTI9MSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoMSwgbGVuKHJlc3VsdCkpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3Vs
dFswXSwgRXhhbXBsZVRhYmxlKHZhbHVlMT0na2V5JywgdmFsdWUyPTEsIHZhbHVlMz0nZHVwbGlj
YXRlLTInKSkKLQotICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIo
bW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCi0gICAgZGVmIHRlc3Rfc2VhcmNo
X2J5X290aGVyX3ZhbHVlKHNlbGYsIGNhc3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0KToKLSAgICAg
ICAgc2VsZi5pbml0X2RhdGFiYXNlKGNhc3NhbmRyYT1jYXNzYW5kcmEpCi0gICAgICAgIHdpdGgg
c2VsZi5kYXRhYmFzZToKLQotICAgICAgICAgICAgY2xhc3MgRXhhbXBsZVRhYmxlKE1vZGVsKToK
LSAgICAgICAgICAgICAgICBfX3RhYmxlX25hbWVfXyA9IHNlbGYuVEFCTEUKLSAgICAgICAgICAg
ICAgICB2YWx1ZTEgPSBjb2x1bW5zLlRleHQocGFydGl0aW9uX2tleT1UcnVlKQotICAgICAgICAg
ICAgICAgIHZhbHVlMiA9IFJlZ2V4Q2x1c3RlcihwcmltYXJ5X2tleT1UcnVlKQotICAgICAgICAg
ICAgICAgIHZhbHVlMyA9IGNvbHVtbnMuSW50ZWdlcigpCi0KLSAgICAgICAgICAgIHNlbGYuZGF0
YWJhc2UuY3JlYXRlX3RhYmxlKEV4YW1wbGVUYWJsZSkKLQotICAgICAgICAgICAgc2VsZi5kYXRh
YmFzZS5pbnNlcnRfcm93KHNlbGYuVEFCTEUsIHZhbHVlMT0na2V5JywgdmFsdWUyPSd2YWx1ZSAx
JywgdmFsdWUzPTEpCi0gICAgICAgICAgICBzZWxmLmRhdGFiYXNlLmluc2VydF9yb3coc2VsZi5U
QUJMRSwgdmFsdWUxPSdrZXknLCB2YWx1ZTI9J290aGVyIDEnLCB2YWx1ZTM9MikKLSAgICAgICAg
ICAgIHNlbGYuZGF0YWJhc2UuaW5zZXJ0X3JvdyhzZWxmLlRBQkxFLCB2YWx1ZTE9J2tleScsIHZh
bHVlMj0nb3RoZXIgMicsIHZhbHVlMz0zKQotCi0gICAgICAgICAgICByZXN1bHQgPSBzZWxmLmRh
dGFiYXNlLnNlbGVjdF9mcm9tX3RhYmxlKHNlbGYuVEFCTEUsIHZhbHVlMl9fbGlrZT0ndmFsdWUl
JywgdmFsdWUxPSdrZXknKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4ocmVz
dWx0KSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0WzBdLCBFeGFtcGxlVGFi
bGUodmFsdWUxPSdrZXknLCB2YWx1ZTI9J3ZhbHVlIDEnLCB2YWx1ZTM9MSkpCi0KLSAgICAgICAg
ICAgIHJlc3VsdCA9IHNlbGYuZGF0YWJhc2Uuc2VsZWN0X2Zyb21fdGFibGUoc2VsZi5UQUJMRSwg
dmFsdWUyX19saWtlPSdvdGhlciUnLCB2YWx1ZTE9J2tleScpCi0gICAgICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKDIsIGxlbihyZXN1bHQpKQotCi0gICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5t
b2NrX2lmX25vX2RvY2tlcihtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKLSAg
ICBkZWYgdGVzdF9zZWFyY2hfd2l0aF9tdWx0aXBsZV9rZXlzKHNlbGYsIGNhc3NhbmRyYT1DYXNz
YW5kcmFDb250ZXh0KToKLSAgICAgICAgc2VsZi5pbml0X2RhdGFiYXNlKGNhc3NhbmRyYT1jYXNz
YW5kcmEpCi0gICAgICAgIHdpdGggc2VsZi5kYXRhYmFzZToKLQotICAgICAgICAgICAgY2xhc3Mg
RXhhbXBsZVRhYmxlKE1vZGVsKToKLSAgICAgICAgICAgICAgICBfX3RhYmxlX25hbWVfXyA9IHNl
bGYuVEFCTEUKLSAgICAgICAgICAgICAgICB2YWx1ZTEgPSBjb2x1bW5zLlRleHQocGFydGl0aW9u
X2tleT1UcnVlKQotICAgICAgICAgICAgICAgIHZhbHVlMiA9IGNvbHVtbnMuVGV4dChwcmltYXJ5
X2tleT1UcnVlKQotICAgICAgICAgICAgICAgIHZhbHVlMyA9IGNvbHVtbnMuSW50ZWdlcigpCi0K
LSAgICAgICAgICAgIHNlbGYuZGF0YWJhc2UuY3JlYXRlX3RhYmxlKEV4YW1wbGVUYWJsZSkKLQot
ICAgICAgICAgICAgc2VsZi5kYXRhYmFzZS5pbnNlcnRfcm93KHNlbGYuVEFCTEUsIHZhbHVlMT0n
a2V5MScsIHZhbHVlMj0ndmFsdWUxJywgdmFsdWUzPTEpCi0gICAgICAgICAgICBzZWxmLmRhdGFi
YXNlLmluc2VydF9yb3coc2VsZi5UQUJMRSwgdmFsdWUxPSdrZXkyJywgdmFsdWUyPSd2YWx1ZTEn
LCB2YWx1ZTM9MikKLSAgICAgICAgICAgIHNlbGYuZGF0YWJhc2UuaW5zZXJ0X3JvdyhzZWxmLlRB
QkxFLCB2YWx1ZTE9J2tleTMnLCB2YWx1ZTI9J3ZhbHVlMScsIHZhbHVlMz0zKQotCi0gICAgICAg
ICAgICByZXN1bHQgPSBzZWxmLmRhdGFiYXNlLnNlbGVjdF9mcm9tX3RhYmxlKHNlbGYuVEFCTEUs
IHZhbHVlMV9faW49WydrZXkxJywgJ2tleTInXSwgdmFsdWUyPSd2YWx1ZTEnKQotICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgyLCBsZW4ocmVzdWx0KSkKLSAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0SW4oRXhhbXBsZVRhYmxlKHZhbHVlMT0na2V5MScsIHZhbHVlMj0ndmFsdWUxJywgdmFsdWUz
PTEpLCByZXN1bHQpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEluKEV4YW1wbGVUYWJsZSh2YWx1
ZTE9J2tleTInLCB2YWx1ZTI9J3ZhbHVlMScsIHZhbHVlMz0yKSwgcmVzdWx0KQotCi0gICAgQFdh
aXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX2Nhc3NhbmRyYT1Nb2Nr
Q2Fzc2FuZHJhQ29udGV4dCkKLSAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLnJ1bl9pZl9zbG93
KCkKLSAgICBkZWYgdGVzdF90aW1lX3RvX2xpdmUoc2VsZiwgY2Fzc2FuZHJhPUNhc3NhbmRyYUNv
bnRleHQpOgotICAgICAgICBzZWxmLmluaXRfZGF0YWJhc2UoY2Fzc2FuZHJhPWNhc3NhbmRyYSkK
LSAgICAgICAgd2l0aCBzZWxmLmRhdGFiYXNlOgotCi0gICAgICAgICAgICBjbGFzcyBFeGFtcGxl
VGFibGUoTW9kZWwpOgotICAgICAgICAgICAgICAgIF9fdGFibGVfbmFtZV9fID0gc2VsZi5UQUJM
RQotICAgICAgICAgICAgICAgIHZhbHVlMSA9IGNvbHVtbnMuVGV4dChwYXJ0aXRpb25fa2V5PVRy
dWUpCi0gICAgICAgICAgICAgICAgdmFsdWUyID0gY29sdW1ucy5JbnRlZ2VyKHByaW1hcnlfa2V5
PVRydWUpCi0gICAgICAgICAgICAgICAgdmFsdWUzID0gY29sdW1ucy5UZXh0KCkKLQotICAgICAg
ICAgICAgc2VsZi5kYXRhYmFzZS5jcmVhdGVfdGFibGUoRXhhbXBsZVRhYmxlKQotCi0gICAgICAg
ICAgICBzZWxmLmRhdGFiYXNlLmluc2VydF9yb3coc2VsZi5UQUJMRSwgdmFsdWUxPSdrZXknLCB2
YWx1ZTI9MSwgdmFsdWUzPSd2YWx1ZS10by1raWxsJywgdHRsPTEpCi0gICAgICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKDEsIGxlbihzZWxmLmRhdGFiYXNlLnNlbGVjdF9mcm9tX3RhYmxlKHNlbGYu
VEFCTEUsIHZhbHVlMT0na2V5JywgdmFsdWUyPTEpKSkKLSAgICAgICAgICAgIHRpbWUuc2xlZXAo
MSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgbGVuKHNlbGYuZGF0YWJhc2Uuc2Vs
ZWN0X2Zyb21fdGFibGUoc2VsZi5UQUJMRSwgdmFsdWUxPSdrZXknLCB2YWx1ZTI9MSkpKQotCi0g
ICAgZGVmIHBvcHVsYXRlX2NvbXBhcmlzb25fdGFibGUoc2VsZiwgY2x1c3RlcmluZ19vcmRlcj0n
QVNDJyk6Ci0gICAgICAgIHdpdGggc2VsZi5kYXRhYmFzZToKLQotICAgICAgICAgICAgY2xhc3Mg
RXhhbXBsZVRhYmxlKE1vZGVsKToKLSAgICAgICAgICAgICAgICBfX3RhYmxlX25hbWVfXyA9IHNl
bGYuVEFCTEUKLSAgICAgICAgICAgICAgICB2YWx1ZTEgPSBjb2x1bW5zLlRleHQocGFydGl0aW9u
X2tleT1UcnVlKQotICAgICAgICAgICAgICAgIHZhbHVlMiA9IGNvbHVtbnMuSW50ZWdlcihwcmlt
YXJ5X2tleT1UcnVlLCBjbHVzdGVyaW5nX29yZGVyPWNsdXN0ZXJpbmdfb3JkZXIpCi0gICAgICAg
ICAgICAgICAgdmFsdWUzID0gY29sdW1ucy5UZXh0KCkKLQotICAgICAgICAgICAgc2VsZi5kYXRh
YmFzZS5jcmVhdGVfdGFibGUoRXhhbXBsZVRhYmxlKQotICAgICAgICAgICAga2V5cyA9IFsnb25l
JywgJ3R3bycsICd0aHJlZScsICdmb3VyJywgJ2ZpdmUnXQotICAgICAgICAgICAgZm9yIGluZGV4
IGluIHJhbmdlKGxlbihrZXlzKSk6Ci0gICAgICAgICAgICAgICAgZm9yIHZhbHVlIGluIHJhbmdl
KGluZGV4ICsgMSk6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuZGF0YWJhc2UuaW5zZXJ0X3Jv
dygKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuVEFCTEUsIHZhbHVlMT1rZXlzW2luZGV4
XSwgdmFsdWUyPXZhbHVlICsgMSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlMz1mJ3tr
ZXlzW2luZGV4XX0te3ZhbHVlICsgMX0nLAotICAgICAgICAgICAgICAgICAgICApCi0KLSAgICBA
V2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfY2Fzc2FuZHJhPU1v
Y2tDYXNzYW5kcmFDb250ZXh0KQotICAgIGRlZiB0ZXN0X2xpbWl0KHNlbGYsIGNhc3NhbmRyYT1D
YXNzYW5kcmFDb250ZXh0KToKLSAgICAgICAgc2VsZi5pbml0X2RhdGFiYXNlKGNhc3NhbmRyYT1j
YXNzYW5kcmEpCi0gICAgICAgIHdpdGggc2VsZi5kYXRhYmFzZToKLSAgICAgICAgICAgIHNlbGYu
cG9wdWxhdGVfY29tcGFyaXNvbl90YWJsZSgpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGxlbihzZWxmLmRhdGFiYXNlLnNlbGVjdF9mcm9tX3RhYmxlKHNlbGYuVEFCTEUsIHZhbHVlMT0n
Zml2ZScpKSwgNSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlbGYuZGF0YWJh
c2Uuc2VsZWN0X2Zyb21fdGFibGUoc2VsZi5UQUJMRSwgdmFsdWUxX19pbj1bJ2ZvdXInLCAnZml2
ZSddKSksIDkpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZWxmLmRhdGFiYXNl
LnNlbGVjdF9mcm9tX3RhYmxlKHNlbGYuVEFCTEUsIHZhbHVlMT0nZml2ZScsIGxpbWl0PTMpKSwg
MykKLQotICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19j
YXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCi0gICAgZGVmIHRlc3Rfb3JkZXIoc2VsZiwg
Y2Fzc2FuZHJhPUNhc3NhbmRyYUNvbnRleHQpOgotICAgICAgICBzZWxmLmluaXRfZGF0YWJhc2Uo
Y2Fzc2FuZHJhPWNhc3NhbmRyYSkKLSAgICAgICAgd2l0aCBzZWxmLmRhdGFiYXNlOgotICAgICAg
ICAgICAgc2VsZi5wb3B1bGF0ZV9jb21wYXJpc29uX3RhYmxlKCkKLSAgICAgICAgICAgIHByZXZp
b3VzID0gTm9uZQotICAgICAgICAgICAgcmVzdWx0cyA9IHNlbGYuZGF0YWJhc2Uuc2VsZWN0X2Zy
b21fdGFibGUoc2VsZi5UQUJMRSwgdmFsdWUxPSdmaXZlJykKLSAgICAgICAgICAgIGZvciByZXN1
bHQgaW4gcmVzdWx0czoKLSAgICAgICAgICAgICAgICBpZiBwcmV2aW91czoKLSAgICAgICAgICAg
ICAgICAgICAgc2VsZi5hc3NlcnRMZXNzKHByZXZpb3VzLnZhbHVlMiwgcmVzdWx0LnZhbHVlMikK
LSAgICAgICAgICAgICAgICBwcmV2aW91cyA9IHJlc3VsdAotCi0gICAgICAgICAgICBwcmV2aW91
cyA9IE5vbmUKLSAgICAgICAgICAgIHJlc3VsdHMgPSBzZWxmLmRhdGFiYXNlLnNlbGVjdF9mcm9t
X3RhYmxlKHNlbGYuVEFCTEUsIHZhbHVlMT0nZml2ZScsIGxpbWl0PTMpCi0gICAgICAgICAgICBm
b3IgcmVzdWx0IGluIHJlc3VsdHM6Ci0gICAgICAgICAgICAgICAgaWYgcHJldmlvdXM6Ci0gICAg
ICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhwcmV2aW91cy52YWx1ZTIsIHJlc3VsdC52
YWx1ZTIpCi0gICAgICAgICAgICAgICAgcHJldmlvdXMgPSByZXN1bHQKLQotICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChyZXN1bHRzWzBdLnZhbHVlMiwgMSkKLSAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwocmVzdWx0c1stMV0udmFsdWUyLCAzKQotCi0gICAgQFdhaXRGb3JEb2NrZXJU
ZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29u
dGV4dCkKLSAgICBkZWYgdGVzdF9yZXZlcnNlX29yZGVyKHNlbGYsIGNhc3NhbmRyYT1DYXNzYW5k
cmFDb250ZXh0KToKLSAgICAgICAgc2VsZi5pbml0X2RhdGFiYXNlKGNhc3NhbmRyYT1jYXNzYW5k
cmEpCi0gICAgICAgIHdpdGggc2VsZi5kYXRhYmFzZToKLSAgICAgICAgICAgIHNlbGYucG9wdWxh
dGVfY29tcGFyaXNvbl90YWJsZShjbHVzdGVyaW5nX29yZGVyPSdERVNDJykKLSAgICAgICAgICAg
IHByZXZpb3VzID0gTm9uZQotICAgICAgICAgICAgcmVzdWx0cyA9IHNlbGYuZGF0YWJhc2Uuc2Vs
ZWN0X2Zyb21fdGFibGUoc2VsZi5UQUJMRSwgdmFsdWUxPSdmaXZlJykKLSAgICAgICAgICAgIGZv
ciByZXN1bHQgaW4gcmVzdWx0czoKLSAgICAgICAgICAgICAgICBpZiBwcmV2aW91czoKLSAgICAg
ICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKHByZXZpb3VzLnZhbHVlMiwgcmVzdWx0
LnZhbHVlMikKLSAgICAgICAgICAgICAgICBwcmV2aW91cyA9IHJlc3VsdAotCi0gICAgICAgICAg
ICBwcmV2aW91cyA9IE5vbmUKLSAgICAgICAgICAgIHJlc3VsdHMgPSBzZWxmLmRhdGFiYXNlLnNl
bGVjdF9mcm9tX3RhYmxlKHNlbGYuVEFCTEUsIHZhbHVlMT0nZml2ZScsIGxpbWl0PTMpCi0gICAg
ICAgICAgICBmb3IgcmVzdWx0IGluIHJlc3VsdHM6Ci0gICAgICAgICAgICAgICAgaWYgcHJldmlv
dXM6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihwcmV2aW91cy52YWx1
ZTIsIHJlc3VsdC52YWx1ZTIpCi0gICAgICAgICAgICAgICAgcHJldmlvdXMgPSByZXN1bHQKLQot
ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHRzWzBdLnZhbHVlMiwgNSkKLSAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0c1stMV0udmFsdWUyLCAzKQotCi0gICAgQFdh
aXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX2Nhc3NhbmRyYT1Nb2Nr
Q2Fzc2FuZHJhQ29udGV4dCkKLSAgICBkZWYgdGVzdF9ndChzZWxmLCBjYXNzYW5kcmE9Q2Fzc2Fu
ZHJhQ29udGV4dCk6Ci0gICAgICAgIHNlbGYuaW5pdF9kYXRhYmFzZShjYXNzYW5kcmE9Y2Fzc2Fu
ZHJhKQotICAgICAgICB3aXRoIHNlbGYuZGF0YWJhc2U6Ci0gICAgICAgICAgICBzZWxmLnBvcHVs
YXRlX2NvbXBhcmlzb25fdGFibGUoKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4o
c2VsZi5kYXRhYmFzZS5zZWxlY3RfZnJvbV90YWJsZShzZWxmLlRBQkxFLCB2YWx1ZTE9J29uZScs
IHZhbHVlMl9fZ3Q9MSkpLCAwKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2Vs
Zi5kYXRhYmFzZS5zZWxlY3RfZnJvbV90YWJsZShzZWxmLlRBQkxFLCB2YWx1ZTE9J3R3bycsIHZh
bHVlMl9fZ3Q9MSkpLCAxKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VsZi5k
YXRhYmFzZS5zZWxlY3RfZnJvbV90YWJsZShzZWxmLlRBQkxFLCB2YWx1ZTE9J3RocmVlJywgdmFs
dWUyX19ndD0xKSksIDIpCi0KLSAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9f
ZG9ja2VyKG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQotICAgIGRlZiB0ZXN0
X2x0KHNlbGYsIGNhc3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0KToKLSAgICAgICAgc2VsZi5pbml0
X2RhdGFiYXNlKGNhc3NhbmRyYT1jYXNzYW5kcmEpCi0gICAgICAgIHdpdGggc2VsZi5kYXRhYmFz
ZToKLSAgICAgICAgICAgIHNlbGYucG9wdWxhdGVfY29tcGFyaXNvbl90YWJsZSgpCi0gICAgICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZWxmLmRhdGFiYXNlLnNlbGVjdF9mcm9tX3RhYmxl
KHNlbGYuVEFCTEUsIHZhbHVlMT0nb25lJywgdmFsdWUyX19sdD0xKSksIDApCi0gICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZWxmLmRhdGFiYXNlLnNlbGVjdF9mcm9tX3RhYmxlKHNl
bGYuVEFCTEUsIHZhbHVlMT0ndHdvJywgdmFsdWUyX19sdD0yKSksIDEpCi0gICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGxlbihzZWxmLmRhdGFiYXNlLnNlbGVjdF9mcm9tX3RhYmxlKHNlbGYu
VEFCTEUsIHZhbHVlMT0ndGhyZWUnLCB2YWx1ZTJfX2x0PTMpKSwgMikKLQotICAgIEBXYWl0Rm9y
RG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19jYXNzYW5kcmE9TW9ja0Nhc3Nh
bmRyYUNvbnRleHQpCi0gICAgZGVmIHRlc3RfZ3RlKHNlbGYsIGNhc3NhbmRyYT1DYXNzYW5kcmFD
b250ZXh0KToKLSAgICAgICAgc2VsZi5pbml0X2RhdGFiYXNlKGNhc3NhbmRyYT1jYXNzYW5kcmEp
Ci0gICAgICAgIHdpdGggc2VsZi5kYXRhYmFzZToKLSAgICAgICAgICAgIHNlbGYucG9wdWxhdGVf
Y29tcGFyaXNvbl90YWJsZSgpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZWxm
LmRhdGFiYXNlLnNlbGVjdF9mcm9tX3RhYmxlKHNlbGYuVEFCTEUsIHZhbHVlMT0nb25lJywgdmFs
dWUyX19ndGU9MikpLCAwKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VsZi5k
YXRhYmFzZS5zZWxlY3RfZnJvbV90YWJsZShzZWxmLlRBQkxFLCB2YWx1ZTE9J3R3bycsIHZhbHVl
Ml9fZ3RlPTIpKSwgMSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlbGYuZGF0
YWJhc2Uuc2VsZWN0X2Zyb21fdGFibGUoc2VsZi5UQUJMRSwgdmFsdWUxPSd0aHJlZScsIHZhbHVl
Ml9fZ3RlPTIpKSwgMikKLQotICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19k
b2NrZXIobW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCi0gICAgZGVmIHRlc3Rf
bHRlKHNlbGYsIGNhc3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0KToKLSAgICAgICAgc2VsZi5pbml0
X2RhdGFiYXNlKGNhc3NhbmRyYT1jYXNzYW5kcmEpCi0gICAgICAgIHdpdGggc2VsZi5kYXRhYmFz
ZToKLSAgICAgICAgICAgIHNlbGYucG9wdWxhdGVfY29tcGFyaXNvbl90YWJsZSgpCi0gICAgICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZWxmLmRhdGFiYXNlLnNlbGVjdF9mcm9tX3RhYmxl
KHNlbGYuVEFCTEUsIHZhbHVlMT0nb25lJywgdmFsdWUyX19sdGU9MCkpLCAwKQotICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VsZi5kYXRhYmFzZS5zZWxlY3RfZnJvbV90YWJsZShz
ZWxmLlRBQkxFLCB2YWx1ZTE9J3R3bycsIHZhbHVlMl9fbHRlPTEpKSwgMSkKLSAgICAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlbGYuZGF0YWJhc2Uuc2VsZWN0X2Zyb21fdGFibGUoc2Vs
Zi5UQUJMRSwgdmFsdWUxPSd0aHJlZScsIHZhbHVlMl9fbHRlPTIpKSwgMikKLQotICAgIEBXYWl0
Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19jYXNzYW5kcmE9TW9ja0Nh
c3NhbmRyYUNvbnRleHQpCi0gICAgZGVmIHRlc3RfYmV0d2VlbihzZWxmLCBjYXNzYW5kcmE9Q2Fz
c2FuZHJhQ29udGV4dCk6Ci0gICAgICAgIHNlbGYuaW5pdF9kYXRhYmFzZShjYXNzYW5kcmE9Y2Fz
c2FuZHJhKQotICAgICAgICB3aXRoIHNlbGYuZGF0YWJhc2U6Ci0gICAgICAgICAgICBzZWxmLnBv
cHVsYXRlX2NvbXBhcmlzb25fdGFibGUoKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChs
ZW4oc2VsZi5kYXRhYmFzZS5zZWxlY3RfZnJvbV90YWJsZShzZWxmLlRBQkxFLCB2YWx1ZTE9J2Zp
dmUnLCB2YWx1ZTJfX2d0PTEsIHZhbHVlMl9fbHQ9NSkpLCAzKQotCi0gICAgQFdhaXRGb3JEb2Nr
ZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJh
Q29udGV4dCkKLSAgICBkZWYgdGVzdF9tdWx0aXBsZV9wcmltYXJ5KHNlbGYsIGNhc3NhbmRyYT1D
YXNzYW5kcmFDb250ZXh0KToKLSAgICAgICAgc2VsZi5pbml0X2RhdGFiYXNlKGNhc3NhbmRyYT1j
YXNzYW5kcmEpCi0gICAgICAgIHdpdGggc2VsZi5kYXRhYmFzZToKLQotICAgICAgICAgICAgY2xh
c3MgRXhhbXBsZVRhYmxlKE1vZGVsKToKLSAgICAgICAgICAgICAgICBfX3RhYmxlX25hbWVfXyA9
IHNlbGYuVEFCTEUKLSAgICAgICAgICAgICAgICB2YWx1ZTEgPSBjb2x1bW5zLlRleHQocGFydGl0
aW9uX2tleT1UcnVlKQotICAgICAgICAgICAgICAgIHZhbHVlMiA9IGNvbHVtbnMuSW50ZWdlcihw
cmltYXJ5X2tleT1UcnVlKQotICAgICAgICAgICAgICAgIHZhbHVlMyA9IGNvbHVtbnMuSW50ZWdl
cihwcmltYXJ5X2tleT1UcnVlKQotICAgICAgICAgICAgICAgIHZhbHVlNCA9IGNvbHVtbnMuVGV4
dCgpCi0KLSAgICAgICAgICAgIHNlbGYuZGF0YWJhc2UuY3JlYXRlX3RhYmxlKEV4YW1wbGVUYWJs
ZSkKLSAgICAgICAgICAgIHNlbGYuZGF0YWJhc2UuaW5zZXJ0X3JvdyhzZWxmLlRBQkxFLCB2YWx1
ZTE9J2tleScsIHZhbHVlMj0wLCB2YWx1ZTM9MCwgdmFsdWU0PScwLTAnKQotICAgICAgICAgICAg
c2VsZi5kYXRhYmFzZS5pbnNlcnRfcm93KHNlbGYuVEFCTEUsIHZhbHVlMT0na2V5JywgdmFsdWUy
PTAsIHZhbHVlMz0xLCB2YWx1ZTQ9JzAtMScpCi0gICAgICAgICAgICBzZWxmLmRhdGFiYXNlLmlu
c2VydF9yb3coc2VsZi5UQUJMRSwgdmFsdWUxPSdrZXknLCB2YWx1ZTI9MSwgdmFsdWUzPTAsIHZh
bHVlND0nMS0wJykKLQotICAgICAgICAgICAgcmVzdWx0cyA9IHNlbGYuZGF0YWJhc2Uuc2VsZWN0
X2Zyb21fdGFibGUoc2VsZi5UQUJMRSwgdmFsdWUxPSdrZXknLCB2YWx1ZTI9MCwgdmFsdWUzPTAp
Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihyZXN1bHRzKSkKLSAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoJzAtMCcsIHJlc3VsdHNbMF0udmFsdWU0KQotCi0gICAgICAg
ICAgICByZXN1bHRzID0gc2VsZi5kYXRhYmFzZS5zZWxlY3RfZnJvbV90YWJsZShzZWxmLlRBQkxF
LCB2YWx1ZTE9J2tleScsIHZhbHVlMj0wKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgy
LCBsZW4ocmVzdWx0cykpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcwLTAnLCByZXN1
bHRzWzBdLnZhbHVlNCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJzAtMScsIHJlc3Vs
dHNbMV0udmFsdWU0KQotCi0gICAgICAgICAgICByZXN1bHRzID0gc2VsZi5kYXRhYmFzZS5zZWxl
Y3RfZnJvbV90YWJsZShzZWxmLlRBQkxFLCB2YWx1ZTE9J2tleScsIHZhbHVlMz0wKQotICAgICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyLCBsZW4ocmVzdWx0cykpCi0gICAgICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKCcwLTAnLCByZXN1bHRzWzBdLnZhbHVlNCkKLSAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoJzEtMCcsIHJlc3VsdHNbMV0udmFsdWU0KQotCi0gICAgQFdhaXRGb3JEb2Nr
ZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJh
Q29udGV4dCkKLSAgICBkZWYgdGVzdF9xdWVyeV93aXRoX25vbmUoc2VsZiwgY2Fzc2FuZHJhPUNh
c3NhbmRyYUNvbnRleHQpOgotICAgICAgICBzZWxmLmluaXRfZGF0YWJhc2UoY2Fzc2FuZHJhPWNh
c3NhbmRyYSkKLSAgICAgICAgc2VsZi5jcmVhdGVfdGVzdGluZ190YWJsZSgpCi0KLSAgICAgICAg
d2l0aCBzZWxmLmRhdGFiYXNlOgotICAgICAgICAgICAgc2VsZi5kYXRhYmFzZS5pbnNlcnRfcm93
KHNlbGYuVEFCTEUsIHZhbHVlMT0na2V5JywgdmFsdWUyPTAsIHZhbHVlMz0wKQotICAgICAgICAg
ICAgc2VsZi5kYXRhYmFzZS5pbnNlcnRfcm93KHNlbGYuVEFCTEUsIHZhbHVlMT0na2V5JywgdmFs
dWUyPTEsIHZhbHVlMz0xKQotCi0gICAgICAgICAgICByZXN1bHRzID0gc2VsZi5kYXRhYmFzZS5z
ZWxlY3RfZnJvbV90YWJsZShzZWxmLlRBQkxFLCB2YWx1ZTE9J2tleScsIHZhbHVlMj1Ob25lKQot
ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyLCBsZW4ocmVzdWx0cykpCi0gICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKDAsIHJlc3VsdHNbMF0udmFsdWUzKQotICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgxLCByZXN1bHRzWzFdLnZhbHVlMykKLQotICAgIEBXYWl0Rm9yRG9ja2Vy
VGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNv
bnRleHQpCi0gICAgZGVmIHRlc3RfYmF0Y2hfcXVlcnkoc2VsZiwgY2Fzc2FuZHJhPUNhc3NhbmRy
YUNvbnRleHQpOgotICAgICAgICBzZWxmLmluaXRfZGF0YWJhc2UoY2Fzc2FuZHJhPWNhc3NhbmRy
YSkKLSAgICAgICAgd2l0aCBzZWxmLmRhdGFiYXNlOgotICAgICAgICAgICAgc2VsZi5jcmVhdGVf
dGVzdGluZ190YWJsZSgpCi0KLSAgICAgICAgICAgIHdpdGggc2VsZi5kYXRhYmFzZS5iYXRjaF9x
dWVyeV9jb250ZXh0KCk6Ci0gICAgICAgICAgICAgICAgZm9yIHZhbHVlMSBpbiBbJ2tleTEnLCAn
a2V5MicsICdrZXkzJ106Ci0gICAgICAgICAgICAgICAgICAgIGZvciB2YWx1ZTIgaW4gcmFuZ2Uo
NDApOgotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kYXRhYmFzZS5pbnNlcnRfcm93KHNl
bGYuVEFCTEUsIHZhbHVlMT12YWx1ZTEsIHZhbHVlMj12YWx1ZTIsIHZhbHVlMz12YWx1ZTIpCi0K
LSAgICAgICAgICAgIGZvciB2YWx1ZTEgaW4gWydrZXkxJywgJ2tleTInLCAna2V5MyddOgotICAg
ICAgICAgICAgICAgIHJlc3VsdHMgPSBzZWxmLmRhdGFiYXNlLnNlbGVjdF9mcm9tX3RhYmxlKHNl
bGYuVEFCTEUsIHZhbHVlMT12YWx1ZTEpCi0gICAgICAgICAgICAgICAgZm9yIGluZGV4IGluIHJh
bmdlKGxlbihyZXN1bHRzKSk6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
aW5kZXgsIHJlc3VsdHNbaW5kZXhdLnZhbHVlMikKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChpbmRleCwgcmVzdWx0c1tpbmRleF0udmFsdWUzKQpJbmRleDogVG9vbHMvcmVz
dWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvY2Fzc2Vyb2xlLnB5Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL2Nhc3Nlcm9sZS5weQkocmV2aXNpb24g
MjY1NTMxKQorKysgVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvY2Fzc2Vyb2xl
LnB5CShub25leGlzdGVudCkKQEAgLTEsMTU2ICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUgotIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0jIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSCi0jIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0jIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0KLWltcG9ydCByYW5kb20KLWltcG9ydCByZXF1ZXN0cwotaW1wb3J0
IHRocmVhZGluZwotaW1wb3J0IHRpbWUKLQotZnJvbSByZWRpcyBpbXBvcnQgU3RyaWN0UmVkaXMK
LQotCi1jbGFzcyBDYXNzZXJvbGVOb2RlcyhvYmplY3QpOgotICAgIERFRkFVTFRfSU5URVJWQUwg
PSAxMjAgICMgUmVmcmVzaCBldmVyeSAyIG1pbnV0ZXMKLQotICAgIGRlZiBfX2luaXRfXyhzZWxm
LCB1cmwsIGludGVydmFsX3NlY29uZHM9REVGQVVMVF9JTlRFUlZBTCwgYXN5bmNocm9ub3VzPVRy
dWUpOgotICAgICAgICBzZWxmLnVybCA9IHVybAotICAgICAgICBzZWxmLmludGVydmFsID0gaW50
ZXJ2YWxfc2Vjb25kcwotICAgICAgICBzZWxmLl9lcG9jaCA9IDAKLSAgICAgICAgc2VsZi5hc3lu
Y2hyb25vdXMgPSBhc3luY2hyb25vdXMKLSAgICAgICAgc2VsZi5fbm9kZXMgPSBbXQotICAgICAg
ICBzZWxmLnJldHJpZXZlX25vZGVzKCkKLSAgICAgICAgaWYgbm90IHNlbGYuX25vZGVzOgotICAg
ICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKGYnQ2Fubm90IGNvbW11bmljYXRlIHdpdGggQ2Fz
c2Vyb2xlIHVybCB7c2VsZi51cmx9JykKLQotICAgIGRlZiByZXRyaWV2ZV9ub2RlcyhzZWxmKToK
LSAgICAgICAgY2Fzc2Vyb2xlX3Jlc3BvbnNlID0gcmVxdWVzdHMuZ2V0KHNlbGYudXJsKQotICAg
ICAgICBpZiBjYXNzZXJvbGVfcmVzcG9uc2Uuc3RhdHVzX2NvZGUgIT0gMjAwOgotICAgICAgICAg
ICAgcmV0dXJuCi0gICAgICAgIHNlbGYuX2Vwb2NoID0gdGltZS50aW1lKCkKLSAgICAgICAgc2Vs
Zi5fbm9kZXMgPSBjYXNzZXJvbGVfcmVzcG9uc2UudGV4dC5zcGxpdCgnLCcpCi0KLSAgICBAcHJv
cGVydHkKLSAgICBkZWYgbm9kZXMoc2VsZik6Ci0gICAgICAgIGlmIHNlbGYuX2Vwb2NoICsgc2Vs
Zi5pbnRlcnZhbCA+IHRpbWUudGltZSgpOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX25vZGVz
Ci0KLSAgICAgICAgaWYgc2VsZi5hc3luY2hyb25vdXM6Ci0gICAgICAgICAgICByZXF1ZXN0X3Ro
cmVhZCA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PXNlbGYucmV0cmlldmVfbm9kZXMpCi0gICAg
ICAgICAgICByZXF1ZXN0X3RocmVhZC5kYWVtb24gPSBUcnVlCi0gICAgICAgICAgICByZXF1ZXN0
X3RocmVhZC5zdGFydCgpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLnJldHJpZXZl
X25vZGVzKCkKLSAgICAgICAgcmV0dXJuIHNlbGYuX25vZGVzCi0KLSAgICBkZWYgX19sZW5fXyhz
ZWxmKToKLSAgICAgICAgcmV0dXJuIGxlbihzZWxmLm5vZGVzKQotCi0gICAgZGVmIF9faXRlcl9f
KHNlbGYpOgotICAgICAgICByZXR1cm4gaXRlcihzZWxmLm5vZGVzKQotCi0KLWNsYXNzIENhc3Nl
cm9sZVJlZGlzKG9iamVjdCk6Ci0gICAgREVGQVVMVF9JTlRFUlZBTCA9IDEyMCAgIyBSZWZyZXNo
IGV2ZXJ5IDIgbWludXRlcwotCi0gICAgZGVmIF9faW5pdF9fKAotICAgICAgICBzZWxmLCB1cmws
IHBvcnQ9NjM3OSwgcGFzc3dvcmQ9Tm9uZSwgaW50ZXJ2YWxfc2Vjb25kcz1ERUZBVUxUX0lOVEVS
VkFMLCBhc3luY2hyb25vdXM9VHJ1ZSwKLSAgICAgICAgc3NsX2tleWZpbGU9Tm9uZSwgc3NsX2Nl
cnRmaWxlPU5vbmUsIHNzbF9jZXJ0X3JlcXM9J3JlcXVpcmVkJywgc3NsX2NhX2NlcnRzPU5vbmUs
Ci0gICAgKToKLSAgICAgICAgc2VsZi51cmwgPSB1cmwKLSAgICAgICAgc2VsZi5pbnRlcnZhbCA9
IGludGVydmFsX3NlY29uZHMKLSAgICAgICAgc2VsZi5hc3luY2hyb25vdXMgPSBhc3luY2hyb25v
dXMKLQotICAgICAgICBzZWxmLl9yZWRpcyA9IE5vbmUKLSAgICAgICAgc2VsZi5fcmVkaXNfdXJs
ID0gTm9uZQotICAgICAgICBzZWxmLl9yZWRpc19rd2FyZ3MgPSBkaWN0KAotICAgICAgICAgICAg
cG9ydD1wb3J0LAotICAgICAgICAgICAgcGFzc3dvcmQ9cGFzc3dvcmQsCi0gICAgICAgICAgICBz
c2xfa2V5ZmlsZT1zc2xfa2V5ZmlsZSwKLSAgICAgICAgICAgIHNzbF9jZXJ0ZmlsZT1zc2xfY2Vy
dGZpbGUsCi0gICAgICAgICAgICBzc2xfY2VydF9yZXFzPXNzbF9jZXJ0X3JlcXMsCi0gICAgICAg
ICAgICBzc2xfY2FfY2VydHM9c3NsX2NhX2NlcnRzLAotICAgICAgICApCi0KLSAgICAgICAgc2Vs
Zi5fZXBvY2ggPSB0aW1lLnRpbWUoKQotICAgICAgICBzZWxmLmNvbm5lY3QoKQotCi0gICAgZGVm
IGNvbm5lY3Qoc2VsZik6Ci0gICAgICAgIGlmIHNlbGYuX3JlZGlzIGFuZCBzZWxmLl9lcG9jaCAr
IHNlbGYuaW50ZXJ2YWwgPiB0aW1lLnRpbWUoKToKLSAgICAgICAgICAgIHJldHVybgotCi0gICAg
ICAgIGRlZiBkb19jb25uZWN0aW9uKG9iaj1zZWxmKToKLSAgICAgICAgICAgIGNhc3Nlcm9sZV9y
ZXNwb25zZSA9IHJlcXVlc3RzLmdldChvYmoudXJsKQotICAgICAgICAgICAgaWYgY2Fzc2Vyb2xl
X3Jlc3BvbnNlLnN0YXR1c19jb2RlICE9IDIwMDoKLSAgICAgICAgICAgICAgICByZXR1cm4KLQot
ICAgICAgICAgICAgY2FuZGlkYXRlcyA9IHt9Ci0gICAgICAgICAgICBmb3IgY2FuZGlkYXRlIGlu
IGNhc3Nlcm9sZV9yZXNwb25zZS5qc29uKCk6Ci0gICAgICAgICAgICAgICAgaWYgbm90IGNhbmRp
ZGF0ZVsnaXNNYXN0ZXInXToKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAg
ICAgICAgICBjYW5kaWRhdGVzW2NhbmRpZGF0ZVsnaG9zdCddXSA9IGNhbmRpZGF0ZQotICAgICAg
ICAgICAgaWYgc2VsZi5fcmVkaXMgYW5kIHNlbGYuX3JlZGlzX3VybCBpbiBjYW5kaWRhdGVzOgot
ICAgICAgICAgICAgICAgICMgV2UncmUgc3RpbGwgY29ubmVjdGVkLCB3ZSBkb24ndCBuZWVkIHRv
IGRvIGFueXRoaW5nCi0gICAgICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgICAgIHNlbGYu
X3JlZGlzX3VybCA9IHJhbmRvbS5jaG9pY2UobGlzdChjYW5kaWRhdGVzLmtleXMoKSkpCi0gICAg
ICAgICAgICBwb3J0ID0gY2FuZGlkYXRlc1tzZWxmLl9yZWRpc191cmxdLmdldCgnc3NsUG9ydCcp
Ci0gICAgICAgICAgICBrd2FyZ3MgPSBkaWN0KCoqc2VsZi5fcmVkaXNfa3dhcmdzKQotICAgICAg
ICAgICAga3dhcmdzWydwb3J0J10gPSBwb3J0IG9yIGt3YXJnc1sncG9ydCddCi0KLSAgICAgICAg
ICAgIHNlbGYuX3JlZGlzID0gU3RyaWN0UmVkaXMoCi0gICAgICAgICAgICAgICAgaG9zdD1zZWxm
Ll9yZWRpc191cmwsCi0gICAgICAgICAgICAgICAgc3NsPVRydWUgaWYgcG9ydCBlbHNlIEZhbHNl
LAotICAgICAgICAgICAgICAgICoqa3dhcmdzCi0gICAgICAgICAgICApCi0KLSAgICAgICAgICAg
IG9iai5fZXBvY2ggPSB0aW1lLnRpbWUoKQotCi0gICAgICAgIGlmIHNlbGYuYXN5bmNocm9ub3Vz
IGFuZCBzZWxmLl9yZWRpczoKLSAgICAgICAgICAgIHJlcXVlc3RfdGhyZWFkID0gdGhyZWFkaW5n
LlRocmVhZCh0YXJnZXQ9ZG9fY29ubmVjdGlvbikKLSAgICAgICAgICAgIHJlcXVlc3RfdGhyZWFk
LmRhZW1vbiA9IFRydWUKLSAgICAgICAgICAgIHJlcXVlc3RfdGhyZWFkLnN0YXJ0KCkKLSAgICAg
ICAgZWxzZToKLSAgICAgICAgICAgIGRvX2Nvbm5lY3Rpb24oKQotCi0gICAgZGVmIHBpbmcoc2Vs
Zik6Ci0gICAgICAgIHNlbGYuY29ubmVjdCgpCi0gICAgICAgIHJldHVybiBzZWxmLl9yZWRpcy5w
aW5nKCkKLQotICAgIGRlZiBnZXQoc2VsZiwgbmFtZSk6Ci0gICAgICAgIHNlbGYuY29ubmVjdCgp
Ci0gICAgICAgIHJldHVybiBzZWxmLl9yZWRpcy5nZXQobmFtZSkKLQotICAgIGRlZiBzZXQoc2Vs
ZiwgKmFyZ3MsICoqa3dhcmdzKToKLSAgICAgICAgc2VsZi5jb25uZWN0KCkKLSAgICAgICAgcmV0
dXJuIHNlbGYuX3JlZGlzLnNldCgqYXJncywgKiprd2FyZ3MpCi0KLSAgICBkZWYgbG9jayhzZWxm
LCBuYW1lLCAqKmt3YXJncyk6Ci0gICAgICAgIHNlbGYuY29ubmVjdCgpCi0gICAgICAgIHJldHVy
biBzZWxmLl9yZWRpcy5sb2NrKG5hbWUsICoqa3dhcmdzKQotCi0gICAgZGVmIGRlbGV0ZShzZWxm
LCAqbmFtZXMpOgotICAgICAgICBzZWxmLmNvbm5lY3QoKQotICAgICAgICByZXR1cm4gc2VsZi5f
cmVkaXMuZGVsZXRlKCpuYW1lcykKLQotICAgIGRlZiBzY2FuX2l0ZXIoc2VsZiwgbWF0Y2g9Tm9u
ZSwgKiprd2FyZ3MpOgotICAgICAgICBzZWxmLmNvbm5lY3QoKQotICAgICAgICByZXR1cm4gc2Vs
Zi5fcmVkaXMuc2Nhbl9pdGVyKG1hdGNoPW1hdGNoLCAqKmt3YXJncykKSW5kZXg6IFRvb2xzL3Jl
c3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL2Nhc3Nlcm9sZV91bml0dGVzdC5weQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9jYXNzZXJvbGVfdW5p
dHRlc3QucHkJKHJldmlzaW9uIDI2NTUzMSkKKysrIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNk
YnB5L21vZGVsL2Nhc3Nlcm9sZV91bml0dGVzdC5weQkobm9uZXhpc3RlbnQpCkBAIC0xLDcwICsw
LDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQotIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotIyBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SCi0jIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0jIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksCi0jIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLWltcG9ydCBtb2Nr
Ci1pbXBvcnQgdGltZQotaW1wb3J0IHVuaXR0ZXN0Ci0KLWZyb20gcmVzdWx0c2RicHkubW9kZWwu
Y2Fzc2Vyb2xlIGltcG9ydCBDYXNzZXJvbGVOb2RlcwotCi0KLWNsYXNzIE1vY2tSZXF1ZXN0KG9i
amVjdCk6Ci0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgdGV4dD0nJywgc3RhdHVzX2NvZGU9MjAw
KToKLSAgICAgICAgdGltZS5zbGVlcCguMSkgICMgVGhpcyBzcGxpdCBzZWNvbmQgYWN0cyBsaWtl
IGFuIGFjdHVhbCByZXF1ZXN0Ci0gICAgICAgIHNlbGYudGV4dCA9IHRleHQKLSAgICAgICAgc2Vs
Zi5zdGF0dXNfY29kZSA9IHN0YXR1c19jb2RlCi0KLQotY2xhc3MgQ2Fzc2Vyb2xlVGVzdCh1bml0
dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGVmIHRlc3Rfc3luY2hyb25vdXMoc2VsZik6Ci0gICAgICAg
IHdpdGggbW9jay5wYXRjaCgncmVxdWVzdHMuZ2V0JywgbmV3PWxhbWJkYSAqYXJncywgKiprd2Fy
Z3M6IE1vY2tSZXF1ZXN0KCdzdGFydCcpKToKLSAgICAgICAgICAgIG5vZGVzID0gQ2Fzc2Vyb2xl
Tm9kZXMoJ3NvbWUtdXJsJywgaW50ZXJ2YWxfc2Vjb25kcz0xMCwgYXN5bmNocm9ub3VzPUZhbHNl
KQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ3N0YXJ0J10sIG5vZGVzLm5vZGVzKQot
Ci0gICAgICAgICAgICB3aXRoIG1vY2sucGF0Y2goJ3JlcXVlc3RzLmdldCcsIG5ldz1sYW1iZGEg
KmFyZ3MsICoqa3dhcmdzOiBNb2NrUmVxdWVzdCgndXJsMSx1cmwyJykpOgotICAgICAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydzdGFydCddLCBub2Rlcy5ub2RlcykKLSAgICAgICAgICAg
ICAgICBjdXJyZW50X3RpbWUgPSB0aW1lLnRpbWUoKQotCi0gICAgICAgICAgICAgICAgd2l0aCBt
b2NrLnBhdGNoKCd0aW1lLnRpbWUnLCBuZXc9bGFtYmRhOiBjdXJyZW50X3RpbWUgKyAxNSk6Ci0g
ICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWyd1cmwxJywgJ3VybDInXSwgbm9k
ZXMubm9kZXMpCi0KLSAgICBkZWYgdGVzdF9hc3luY2hyb25vdXMoc2VsZik6Ci0gICAgICAgIHdp
dGggbW9jay5wYXRjaCgncmVxdWVzdHMuZ2V0JywgbmV3PWxhbWJkYSAqYXJncywgKiprd2FyZ3M6
IE1vY2tSZXF1ZXN0KCdzdGFydCcpKToKLSAgICAgICAgICAgIG5vZGVzID0gQ2Fzc2Vyb2xlTm9k
ZXMoJ3NvbWUtdXJsJywgaW50ZXJ2YWxfc2Vjb25kcz0xMCwgYXN5bmNocm9ub3VzPVRydWUpCi0g
ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsnc3RhcnQnXSwgbm9kZXMubm9kZXMpCi0KLSAg
ICAgICAgICAgIHdpdGggbW9jay5wYXRjaCgncmVxdWVzdHMuZ2V0JywgbmV3PWxhbWJkYSAqYXJn
cywgKiprd2FyZ3M6IE1vY2tSZXF1ZXN0KCd1cmwxLHVybDInKSk6Ci0gICAgICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChbJ3N0YXJ0J10sIG5vZGVzLm5vZGVzKQotICAgICAgICAgICAgICAg
IGN1cnJlbnRfdGltZSA9IHRpbWUudGltZSgpCi0KLSAgICAgICAgICAgICAgICB3aXRoIG1vY2su
cGF0Y2goJ3RpbWUudGltZScsIG5ldz1sYW1iZGE6IGN1cnJlbnRfdGltZSArIDE1KToKLSAgICAg
ICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ3N0YXJ0J10sIG5vZGVzLm5vZGVzKQot
ICAgICAgICAgICAgICAgICAgICB0aW1lLnNsZWVwKC4xNSkgICMgV2FpdCBmb3IgdGhlIGFzeW5j
aHJvbm91cyB0aHJlYWQgdG8gZmluaXNoCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoWyd1cmwxJywgJ3VybDInXSwgbm9kZXMubm9kZXMpCi0KLSAgICBkZWYgdGVzdF9saXN0
X2xpa2Uoc2VsZik6Ci0gICAgICAgIHdpdGggbW9jay5wYXRjaCgncmVxdWVzdHMuZ2V0JywgbmV3
PWxhbWJkYSAqYXJncywgKiprd2FyZ3M6IE1vY2tSZXF1ZXN0KCd1cmwxLHVybDIsdXJsMycpKToK
LSAgICAgICAgICAgIG5vZGVzID0gQ2Fzc2Vyb2xlTm9kZXMoJ3NvbWUtdXJsJykKLSAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoWyd1cmwxJywgJ3VybDInLCAndXJsMyddLCBbbm9kZSBmb3Ig
bm9kZSBpbiBub2Rlc10pCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobm9kZXMpCi0gICAg
ICAgICAgICBzZWxmLmFzc2VydFRydWUoJ3VybDEnIGluIG5vZGVzKQpJbmRleDogVG9vbHMvcmVz
dWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvY2lfY29udGV4dC5weQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9jaV9jb250ZXh0LnB5CShyZXZpc2lv
biAyNjU1MzEpCisrKyBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9jaV9jb250
ZXh0LnB5CShub25leGlzdGVudCkKQEAgLTEsMjkzICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUgotIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0jIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSCi0jIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0jIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0KLWltcG9ydCBjYWxlbmRhcgotaW1wb3J0IGpzb24KLWltcG9y
dCBsb2dnaW5nCi1pbXBvcnQgcmVxdWVzdHMKLWltcG9ydCBzeXMKLWltcG9ydCB0aW1lCi1pbXBv
cnQgdXJsbGliLnBhcnNlCi0KLWZyb20gY2Fzc2FuZHJhLmNxbGVuZ2luZSBpbXBvcnQgY29sdW1u
cwotZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUKLWZyb20gZmFrZXJlZGlzIGltcG9ydCBG
YWtlU3RyaWN0UmVkaXMKLWZyb20gcmVzdWx0c2RicHkuY29udHJvbGxlci5jb21taXQgaW1wb3J0
IENvbW1pdAotZnJvbSByZXN1bHRzZGJweS5tb2RlbC5jb21taXRfY29udGV4dCBpbXBvcnQgQ29t
bWl0Q29udGV4dAotZnJvbSByZXN1bHRzZGJweS5tb2RlbC5jb25maWd1cmF0aW9uX2NvbnRleHQg
aW1wb3J0IENsdXN0ZXJlZEJ5Q29uZmlndXJhdGlvbgotZnJvbSByZXN1bHRzZGJweS5tb2RlbC51
cGxvYWRfY29udGV4dCBpbXBvcnQgVXBsb2FkQ2FsbGJhY2tDb250ZXh0Ci0KLQotY2xhc3MgQ0lD
b250ZXh0KFVwbG9hZENhbGxiYWNrQ29udGV4dCk6Ci0gICAgREVGQVVMVF9DQVNTQU5EUkFfTElN
SVQgPSAxMDAKLQotICAgIGNsYXNzIFVSTHNCYXNlKENsdXN0ZXJlZEJ5Q29uZmlndXJhdGlvbik6
Ci0gICAgICAgIHN1aXRlID0gY29sdW1ucy5UZXh0KHBhcnRpdGlvbl9rZXk9VHJ1ZSwgcmVxdWly
ZWQ9VHJ1ZSkKLSAgICAgICAgYnJhbmNoID0gY29sdW1ucy5UZXh0KHBhcnRpdGlvbl9rZXk9VHJ1
ZSwgcmVxdWlyZWQ9VHJ1ZSkKLSAgICAgICAgdXJscyA9IGNvbHVtbnMuVGV4dChyZXF1aXJlZD1G
YWxzZSkKLQotICAgICAgICBkZWYgdW5wYWNrKHNlbGYpOgotICAgICAgICAgICAgcmVzdWx0ID0g
ZGljdCgKLSAgICAgICAgICAgICAgICB1dWlkPXNlbGYudXVpZCwKLSAgICAgICAgICAgICAgICBz
dGFydF90aW1lPWNhbGVuZGFyLnRpbWVnbShzZWxmLnN0YXJ0X3RpbWUudGltZXR1cGxlKCkpLAot
ICAgICAgICAgICAgKQotICAgICAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4ganNvbi5sb2Fkcyhz
ZWxmLnVybHMpLml0ZW1zKCk6Ci0gICAgICAgICAgICAgICAgaWYgdmFsdWUgaXMgbm90IE5vbmU6
Ci0gICAgICAgICAgICAgICAgICAgIHJlc3VsdFtrZXldID0gdmFsdWUKLSAgICAgICAgICAgIHJl
dHVybiByZXN1bHQKLQotICAgIGNsYXNzIFVSTHNCeUNvbW1pdChVUkxzQmFzZSk6Ci0gICAgICAg
IF9fdGFibGVfbmFtZV9fID0gJ2NpX3VybHNfYnlfY29tbWl0JwotICAgICAgICB1dWlkID0gY29s
dW1ucy5CaWdJbnQocHJpbWFyeV9rZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSwgY2x1c3RlcmluZ19v
cmRlcj0nREVTQycpCi0gICAgICAgIHNkayA9IGNvbHVtbnMuVGV4dChwcmltYXJ5X2tleT1UcnVl
LCByZXF1aXJlZD1UcnVlKQotICAgICAgICBzdGFydF90aW1lID0gY29sdW1ucy5EYXRlVGltZShw
cmltYXJ5X2tleT1UcnVlLCByZXF1aXJlZD1UcnVlKQotCi0gICAgY2xhc3MgVVJMc0J5U3RhcnRU
aW1lKFVSTHNCYXNlKToKLSAgICAgICAgX190YWJsZV9uYW1lX18gPSAnY2lfdXJsc19ieV9zdGFy
dF90aW1lJwotICAgICAgICBzdGFydF90aW1lID0gY29sdW1ucy5EYXRlVGltZShwcmltYXJ5X2tl
eT1UcnVlLCByZXF1aXJlZD1UcnVlLCBjbHVzdGVyaW5nX29yZGVyPSdERVNDJykKLSAgICAgICAg
c2RrID0gY29sdW1ucy5UZXh0KHByaW1hcnlfa2V5PVRydWUsIHJlcXVpcmVkPVRydWUpCi0gICAg
ICAgIHV1aWQgPSBjb2x1bW5zLkJpZ0ludChwcmltYXJ5X2tleT1UcnVlLCByZXF1aXJlZD1UcnVl
KQotCi0gICAgY2xhc3MgVVJMQnlRdWV1ZShDbHVzdGVyZWRCeUNvbmZpZ3VyYXRpb24pOgotICAg
ICAgICBfX3RhYmxlX25hbWVfXyA9ICdjaV91cmxfYnlfcXVldWUnCi0gICAgICAgIGJyYW5jaCA9
IGNvbHVtbnMuVGV4dChwYXJ0aXRpb25fa2V5PVRydWUsIHJlcXVpcmVkPVRydWUpCi0gICAgICAg
IHN1aXRlID0gY29sdW1ucy5UZXh0KHByaW1hcnlfa2V5PVRydWUsIHJlcXVpcmVkPVRydWUpCi0g
ICAgICAgIHNkayA9IGNvbHVtbnMuVGV4dChwcmltYXJ5X2tleT1UcnVlLCByZXF1aXJlZD1UcnVl
KQotICAgICAgICB1cmwgPSBjb2x1bW5zLlRleHQocmVxdWlyZWQ9RmFsc2UpCi0KLSAgICAgICAg
ZGVmIHVucGFjayhzZWxmKToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLnVybAotCi0gICAgZGVm
IF9faW5pdF9fKHNlbGYsIGNvbmZpZ3VyYXRpb25fY29udGV4dCwgY29tbWl0X2NvbnRleHQsIHR0
bF9zZWNvbmRzPU5vbmUsIHVybF9mYWN0b3JpZXM9Tm9uZSk6Ci0gICAgICAgIHN1cGVyKENJQ29u
dGV4dCwgc2VsZikuX19pbml0X18oCi0gICAgICAgICAgICBuYW1lPSdjaS11cmxzJywKLSAgICAg
ICAgICAgIGNvbmZpZ3VyYXRpb25fY29udGV4dD1jb25maWd1cmF0aW9uX2NvbnRleHQsCi0gICAg
ICAgICAgICBjb21taXRfY29udGV4dD1jb21taXRfY29udGV4dCwKLSAgICAgICAgICAgIHR0bF9z
ZWNvbmRzPXR0bF9zZWNvbmRzLAotICAgICAgICApCi0gICAgICAgIHNlbGYuX3VybF9mYWN0b3Jp
ZXMgPSB7fQotICAgICAgICBmb3IgZmFjdG9yeSBpbiB1cmxfZmFjdG9yaWVzIG9yIFtdOgotICAg
ICAgICAgICAgc2VsZi5hZGRfdXJsX2ZhY3RvcnkoZmFjdG9yeSkKLQotICAgICAgICB3aXRoIHNl
bGY6Ci0gICAgICAgICAgICBzZWxmLmNhc3NhbmRyYS5jcmVhdGVfdGFibGUoc2VsZi5VUkxzQnlD
b21taXQpCi0gICAgICAgICAgICBzZWxmLmNhc3NhbmRyYS5jcmVhdGVfdGFibGUoc2VsZi5VUkxz
QnlTdGFydFRpbWUpCi0gICAgICAgICAgICBzZWxmLmNhc3NhbmRyYS5jcmVhdGVfdGFibGUoc2Vs
Zi5VUkxCeVF1ZXVlKQotCi0gICAgZGVmIGFkZF91cmxfZmFjdG9yeShzZWxmLCBmYWN0b3J5KToK
LSAgICAgICAgc2VsZi5fdXJsX2ZhY3Rvcmllc1tmYWN0b3J5Lm1hc3Rlcl0gPSBmYWN0b3J5Ci0K
LSAgICBkZWYgdXJsKHNlbGYsIG1hc3Rlciwgc2hvdWxkX2ZldGNoPUZhbHNlLCAqKmt3YXJncyk6
Ci0gICAgICAgIGZhY3RvcnkgPSBzZWxmLl91cmxfZmFjdG9yaWVzLmdldChtYXN0ZXIpCi0gICAg
ICAgIGlmIG5vdCBmYWN0b3J5OgotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgcmV0
dXJuIGZhY3RvcnkudXJsKGZldGNoPXNob3VsZF9mZXRjaCwgKiprd2FyZ3MpCi0KLSAgICBkZWYg
cmVnaXN0ZXIoc2VsZiwgY29uZmlndXJhdGlvbiwgY29tbWl0cywgc3VpdGUsIHRlc3RfcmVzdWx0
cywgdGltZXN0YW1wPU5vbmUpOgotICAgICAgICB0aW1lc3RhbXAgPSB0aW1lc3RhbXAgb3IgdGlt
ZS50aW1lKCkKLSAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UodGltZXN0YW1wLCBkYXRldGltZSk6
Ci0gICAgICAgICAgICB0aW1lc3RhbXAgPSBkYXRldGltZS51dGNmcm9tdGltZXN0YW1wKGludCh0
aW1lc3RhbXApKQotCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGRldGFpbHMgPSB0ZXN0X3Jl
c3VsdHMuZ2V0KCdkZXRhaWxzJywge30pCi0gICAgICAgICAgICB1cmxzID0ge30KLQotICAgICAg
ICAgICAgdXJsX2ZhY3RvcnkgPSBzZWxmLl91cmxfZmFjdG9yaWVzLmdldChkZXRhaWxzLmdldCgn
YnVpbGRib3QtbWFzdGVyJykpCi0gICAgICAgICAgICBpZiB1cmxfZmFjdG9yeToKLSAgICAgICAg
ICAgICAgICB1cmxzWydxdWV1ZSddID0gdXJsX2ZhY3RvcnkudXJsKGJ1aWxkZXJfbmFtZT1kZXRh
aWxzLmdldCgnYnVpbGRlci1uYW1lJykpCi0gICAgICAgICAgICAgICAgdXJsc1snYnVpbGQnXSA9
IHVybF9mYWN0b3J5LnVybCgKLSAgICAgICAgICAgICAgICAgICAgYnVpbGRlcl9uYW1lPWRldGFp
bHMuZ2V0KCdidWlsZGVyLW5hbWUnKSwKLSAgICAgICAgICAgICAgICAgICAgYnVpbGRfbnVtYmVy
PWRldGFpbHMuZ2V0KCdidWlsZC1udW1iZXInKSwKLSAgICAgICAgICAgICAgICAgICAgc2hvdWxk
X2ZldGNoPVRydWUsCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgICAgIHVybHNbJ3dv
cmtlciddID0gdXJsX2ZhY3RvcnkudXJsKAotICAgICAgICAgICAgICAgICAgICB3b3JrZXJfbmFt
ZT1kZXRhaWxzLmdldCgnYnVpbGRib3Qtd29ya2VyJyksCi0gICAgICAgICAgICAgICAgICAgIHNo
b3VsZF9mZXRjaD1UcnVlLAotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgIGVsaWYgZGV0
YWlscy5nZXQoJ2J1aWxkYm90LW1hc3RlcicpIGFuZCAnbGluaycgbm90IGluIGRldGFpbHM6Ci0g
ICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihmIk5vIGxpbmsgZGVmaW5lZCBvciBVUkwg
ZmFjdG9yeSBmb3Ige2RldGFpbHNbJ2J1aWxkYm90LW1hc3RlciddfSIpCi0KLSAgICAgICAgICAg
ICMgQ3VzdG9tIGJ1aWxkIGxpbmtzIG92ZXJyaWRlIGNvbnN0cnVjdGVkIGJ1aWxkYm90IGxpbmtz
Ci0gICAgICAgICAgICBpZiAnbGluaycgaW4gZGV0YWlsczoKLSAgICAgICAgICAgICAgICB1cmxz
WydidWlsZCddID0gZGV0YWlsc1snbGluayddCi0KLSAgICAgICAgICAgIGZvciBrZXkgaW4gZGV0
YWlscy5rZXlzKCk6Ci0gICAgICAgICAgICAgICAgaWYgZGV0YWlsc1trZXldIGlzIE5vbmU6Ci0g
ICAgICAgICAgICAgICAgICAgIGRlbCBkZXRhaWxzW2tleV0KLQotICAgICAgICAgICAgdXVpZCA9
IHNlbGYuY29tbWl0X2NvbnRleHQudXVpZF9mb3JfY29tbWl0cyhjb21taXRzKQotICAgICAgICAg
ICAgdHRsID0gaW50KCh1dWlkIC8gQ29tbWl0LlRJTUVTVEFNUF9UT19VVUlEX01VTFRJUExJRVIp
ICsgc2VsZi50dGxfc2Vjb25kcyAtIHRpbWUudGltZSgpKSBpZiBzZWxmLnR0bF9zZWNvbmRzIGVs
c2UgTm9uZQotCi0gICAgICAgICAgICB3aXRoIHNlbGYsIHNlbGYuY2Fzc2FuZHJhLmJhdGNoX3F1
ZXJ5X2NvbnRleHQoKToKLSAgICAgICAgICAgICAgICBmb3IgYnJhbmNoIGluIHNlbGYuY29tbWl0
X2NvbnRleHQuYnJhbmNoX2tleXNfZm9yX2NvbW1pdHMoY29tbWl0cyk6Ci0gICAgICAgICAgICAg
ICAgICAgIGlmIHVybHMuZ2V0KCdxdWV1ZScpOgotICAgICAgICAgICAgICAgICAgICAgICAgc2Vs
Zi5jb25maWd1cmF0aW9uX2NvbnRleHQuaW5zZXJ0X3Jvd193aXRoX2NvbmZpZ3VyYXRpb24oCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5VUkxCeVF1ZXVlLl9fdGFibGVfbmFtZV9f
LCBjb25maWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24sIHN1aXRlPXN1aXRlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJyYW5jaD1icmFuY2gsIHNkaz1jb25maWd1cmF0aW9uLnNkayBvciAn
PycsIHR0bD10dGwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsPXVybHNbJ3F1ZXVl
J10sCi0gICAgICAgICAgICAgICAgICAgICAgICApCi0KLSAgICAgICAgICAgICAgICAgICAgZm9y
IHRhYmxlIGluIFtzZWxmLlVSTHNCeUNvbW1pdCwgc2VsZi5VUkxzQnlTdGFydFRpbWVdOgotICAg
ICAgICAgICAgICAgICAgICAgICAgc2VsZi5jb25maWd1cmF0aW9uX2NvbnRleHQuaW5zZXJ0X3Jv
d193aXRoX2NvbmZpZ3VyYXRpb24oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGUu
X190YWJsZV9uYW1lX18sIGNvbmZpZ3VyYXRpb249Y29uZmlndXJhdGlvbiwgc3VpdGU9c3VpdGUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJhbmNoPWJyYW5jaCwgdXVpZD11dWlkLCB0
dGw9dHRsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNkaz1jb25maWd1cmF0aW9uLnNk
ayBvciAnPycsIHN0YXJ0X3RpbWU9dGltZXN0YW1wLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVybHM9anNvbi5kdW1wcyh1cmxzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICkKLSAg
ICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYucGFy
dGlhbF9zdGF0dXMoZSkKLSAgICAgICAgcmV0dXJuIHNlbGYucGFydGlhbF9zdGF0dXMoKQotCi0g
ICAgZGVmIGZpbmRfdXJsc19ieV9xdWV1ZShzZWxmLCBjb25maWd1cmF0aW9ucywgc3VpdGUsIHJl
Y2VudD1UcnVlLCBicmFuY2g9Tm9uZSwgbGltaXQ9REVGQVVMVF9DQVNTQU5EUkFfTElNSVQpOgot
ICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShzdWl0ZSwgc3RyKToKLSAgICAgICAgICAgIHJhaXNl
IFR5cGVFcnJvcihmJ0V4cGVjdGVkIHR5cGUge3N0cn0sIGdvdCB7dHlwZShzdWl0ZSl9JykKLQot
ICAgICAgICB3aXRoIHNlbGY6Ci0gICAgICAgICAgICByZXN1bHQgPSB7fQotICAgICAgICAgICAg
Zm9yIGNvbmZpZ3VyYXRpb24gaW4gY29uZmlndXJhdGlvbnM6Ci0gICAgICAgICAgICAgICAgcmVz
dWx0LnVwZGF0ZSh7Y29uZmlnOiB2YWx1ZXNbMF0udW5wYWNrKCkgZm9yIGNvbmZpZywgdmFsdWVz
IGluIHNlbGYuY29uZmlndXJhdGlvbl9jb250ZXh0LnNlbGVjdF9mcm9tX3RhYmxlX3dpdGhfY29u
ZmlndXJhdGlvbnMoCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuVVJMQnlRdWV1ZS5fX3RhYmxl
X25hbWVfXywgY29uZmlndXJhdGlvbnM9W2NvbmZpZ3VyYXRpb25dLCByZWNlbnQ9cmVjZW50LAot
ICAgICAgICAgICAgICAgICAgICBzdWl0ZT1zdWl0ZSwgc2RrPWNvbmZpZ3VyYXRpb24uc2RrLCBi
cmFuY2g9YnJhbmNoIG9yIHNlbGYuY29tbWl0X2NvbnRleHQuREVGQVVMVF9CUkFOQ0hfS0VZLAot
ICAgICAgICAgICAgICAgICAgICBsaW1pdD1saW1pdCwKLSAgICAgICAgICAgICAgICApLml0ZW1z
KCl9KQotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAotCi0gICAgZGVmIF9maW5kX3VybHMoCi0g
ICAgICAgICAgICBzZWxmLCB0YWJsZSwgY29uZmlndXJhdGlvbnMsIHN1aXRlLCByZWNlbnQ9VHJ1
ZSwKLSAgICAgICAgICAgIGJyYW5jaD1Ob25lLCBiZWdpbj1Ob25lLCBlbmQ9Tm9uZSwKLSAgICAg
ICAgICAgIGJlZ2luX3F1ZXJ5X3RpbWU9Tm9uZSwgZW5kX3F1ZXJ5X3RpbWU9Tm9uZSwKLSAgICAg
ICAgICAgIGxpbWl0PURFRkFVTFRfQ0FTU0FORFJBX0xJTUlULAotICAgICk6Ci0gICAgICAgIGlm
IG5vdCBpc2luc3RhbmNlKHN1aXRlLCBzdHIpOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9y
KGYnRXhwZWN0ZWQgdHlwZSB7c3RyfSwgZ290IHt0eXBlKHN1aXRlKX0nKQotCi0gICAgICAgIGRl
ZiBnZXRfdGltZSh0aW1lKToKLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UodGltZSwgZGF0ZXRp
bWUpOgotICAgICAgICAgICAgICAgIHJldHVybiB0aW1lCi0gICAgICAgICAgICBlbGlmIHRpbWU6
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGRhdGV0aW1lLnV0Y2Zyb210aW1lc3RhbXAoaW50KHRp
bWUpKQotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgICAgICB3aXRoIHNlbGY6Ci0gICAg
ICAgICAgICByZXN1bHQgPSB7fQotICAgICAgICAgICAgZm9yIGNvbmZpZ3VyYXRpb24gaW4gY29u
ZmlndXJhdGlvbnM6Ci0gICAgICAgICAgICAgICAgZGF0YSA9IHNlbGYuY29uZmlndXJhdGlvbl9j
b250ZXh0LnNlbGVjdF9mcm9tX3RhYmxlX3dpdGhfY29uZmlndXJhdGlvbnMoCi0gICAgICAgICAg
ICAgICAgICAgIHRhYmxlLl9fdGFibGVfbmFtZV9fLCBjb25maWd1cmF0aW9ucz1bY29uZmlndXJh
dGlvbl0sIHJlY2VudD1yZWNlbnQsCi0gICAgICAgICAgICAgICAgICAgIHN1aXRlPXN1aXRlLCBz
ZGs9Y29uZmlndXJhdGlvbi5zZGssIGJyYW5jaD1icmFuY2ggb3Igc2VsZi5jb21taXRfY29udGV4
dC5ERUZBVUxUX0JSQU5DSF9LRVksCi0gICAgICAgICAgICAgICAgICAgIHV1aWRfX2d0ZT1Db21t
aXRDb250ZXh0LmNvbnZlcnRfdG9fdXVpZChiZWdpbiksCi0gICAgICAgICAgICAgICAgICAgIHV1
aWRfX2x0ZT1Db21taXRDb250ZXh0LmNvbnZlcnRfdG9fdXVpZChlbmQsIENvbW1pdENvbnRleHQu
dGltZXN0YW1wX3RvX3V1aWQoKSksCi0gICAgICAgICAgICAgICAgICAgIHN0YXJ0X3RpbWVfX2d0
ZT1nZXRfdGltZShiZWdpbl9xdWVyeV90aW1lKSwgc3RhcnRfdGltZV9fbHRlPWdldF90aW1lKGVu
ZF9xdWVyeV90aW1lKSwKLSAgICAgICAgICAgICAgICAgICAgbGltaXQ9bGltaXQsCi0gICAgICAg
ICAgICAgICAgKS5pdGVtcygpCi0gICAgICAgICAgICAgICAgcmVzdWx0LnVwZGF0ZSh7Y29uZmln
OiBbdmFsdWUudW5wYWNrKCkgZm9yIHZhbHVlIGluIHZhbHVlc10gZm9yIGNvbmZpZywgdmFsdWVz
IGluIGRhdGF9KQotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAotCi0gICAgZGVmIGZpbmRfdXJs
c19ieV9jb21taXQoc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKLSAgICAgICAgcmV0dXJuIHNlbGYu
X2ZpbmRfdXJscyhzZWxmLlVSTHNCeUNvbW1pdCwgKmFyZ3MsICoqa3dhcmdzKQotCi0gICAgZGVm
IGZpbmRfdXJsc19ieV9zdGFydF90aW1lKHNlbGYsICphcmdzLCAqKmt3YXJncyk6Ci0gICAgICAg
IHJldHVybiBzZWxmLl9maW5kX3VybHMoc2VsZi5VUkxzQnlTdGFydFRpbWUsICphcmdzLCAqKmt3
YXJncykKLQotCi1jbGFzcyBCdWlsZGJvdEVpZ2h0VVJMRmFjdG9yeShvYmplY3QpOgotICAgIFND
SEVNRSA9ICdodHRwczovLycKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtYXN0ZXIpOgotICAg
ICAgICBzZWxmLm1hc3RlciA9IG1hc3RlcgotCi0gICAgZGVmIHVybChzZWxmLCBidWlsZGVyX25h
bWU9Tm9uZSwgYnVpbGRfbnVtYmVyPU5vbmUsIHdvcmtlcl9uYW1lPU5vbmUsIHNob3VsZF9mZXRj
aD1GYWxzZSk6Ci0gICAgICAgIGlmIGJ1aWxkZXJfbmFtZToKLSAgICAgICAgICAgIGlmIGJ1aWxk
X251bWJlcjoKLSAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5TQ0hFTUUgKyB1cmxsaWIucGFy
c2UucXVvdGUoZid7c2VsZi5tYXN0ZXJ9L2J1aWxkZXJzL3tidWlsZGVyX25hbWV9L2J1aWxkcy97
YnVpbGRfbnVtYmVyfScpCi0gICAgICAgICAgICByZXR1cm4gc2VsZi5TQ0hFTUUgKyB1cmxsaWIu
cGFyc2UucXVvdGUoZid7c2VsZi5tYXN0ZXJ9L2J1aWxkZXJzL3tidWlsZGVyX25hbWV9JykKLSAg
ICAgICAgZWxpZiB3b3JrZXJfbmFtZToKLSAgICAgICAgICAgIHJldHVybiBmJ3tzZWxmLlNDSEVN
RX17c2VsZi5tYXN0ZXJ9L2J1aWxkc2xhdmVzL3t3b3JrZXJfbmFtZX0nCi0KLSAgICAgICAgcmV0
dXJuIE5vbmUKLQotCi1jbGFzcyBCdWlsZGJvdFVSTEZhY3Rvcnkob2JqZWN0KToKLSAgICBTQ0hF
TUUgPSAnaHR0cHM6Ly8nCi0gICAgQlVJTERFUl9LRVkgPSAnX2J1aWxkZXJfJwotICAgIFdPUktF
Ul9LRVkgPSAnX3dvcmtlcl8nCi0gICAgRkVUQ0hfUkFURSA9IDYwICogNjAgICMgQWxsb3cgYSBy
ZS1mZXRjaCBldmVyeSBob3VyCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgbWFzdGVyLCByZWRp
cz1Ob25lKToKLSAgICAgICAgc2VsZi5tYXN0ZXIgPSBtYXN0ZXIKLSAgICAgICAgc2VsZi5yZWRp
cyA9IHJlZGlzIG9yIEZha2VTdHJpY3RSZWRpcygpCi0KLSAgICBkZWYgZmV0Y2goc2VsZik6Ci0g
ICAgICAgIHNlbGYucmVkaXMuc2V0KGYne3NlbGYubWFzdGVyfV9yZWZyZXNoZWQnLCAwLCBleD1z
ZWxmLkZFVENIX1JBVEUpCi0KLSAgICAgICAgcmVzcG9uc2UgPSByZXF1ZXN0cy5nZXQoZid7c2Vs
Zi5TQ0hFTUV9e3NlbGYubWFzdGVyfS9hcGkvdjIvYnVpbGRlcnMnKQotICAgICAgICBpZiByZXNw
b25zZS5zdGF0dXNfY29kZSA9PSAyMDA6Ci0gICAgICAgICAgICBmb3IgYnVpbGRlciBpbiByZXNw
b25zZS5qc29uKClbJ2J1aWxkZXJzJ106Ci0gICAgICAgICAgICAgICAgc2VsZi5yZWRpcy5zZXQo
Ci0gICAgICAgICAgICAgICAgICAgIGYie3NlbGYubWFzdGVyfV97c2VsZi5CVUlMREVSX0tFWX1f
e2J1aWxkZXJbJ25hbWUnXX0iLAotICAgICAgICAgICAgICAgICAgICBzdHIoYnVpbGRlclsnYnVp
bGRlcmlkJ10pLAotICAgICAgICAgICAgICAgICkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAg
IHN5cy5zdGRlcnIud3JpdGUoZidGYWlsZWQgdG8gcmV0cmlldmUgYnVpbGRlcnMgaW5mb3JtYXRp
b24gZnJvbSB7c2VsZi5tYXN0ZXJ9JykKLQotICAgICAgICByZXNwb25zZSA9IHJlcXVlc3RzLmdl
dChmJ3tzZWxmLlNDSEVNRX17c2VsZi5tYXN0ZXJ9L2FwaS92Mi93b3JrZXJzJykKLSAgICAgICAg
aWYgcmVzcG9uc2Uuc3RhdHVzX2NvZGUgPT0gMjAwOgotICAgICAgICAgICAgZm9yIHdvcmtlciBp
biByZXNwb25zZS5qc29uKClbJ3dvcmtlcnMnXToKLSAgICAgICAgICAgICAgICBzZWxmLnJlZGlz
LnNldCgKLSAgICAgICAgICAgICAgICAgICAgZiJ7c2VsZi5tYXN0ZXJ9X3tzZWxmLldPUktFUl9L
RVl9X3t3b3JrZXJbJ25hbWUnXX0iLAotICAgICAgICAgICAgICAgICAgICBzdHIod29ya2VyWyd3
b3JrZXJpZCddKSwKLSAgICAgICAgICAgICAgICApCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAg
ICBzeXMuc3RkZXJyLndyaXRlKGYnRmFpbGVkIHRvIHJldHJpZXZlIHdvcmtlcnMgaW5mb3JtYXRp
b24gZnJvbSB7c2VsZi5tYXN0ZXJ9JykKLQotICAgIGRlZiBfYnVpbGRlcl91cmwoc2VsZiwgYnVp
bGRlcl9pZCk6Ci0gICAgICAgIHJldHVybiBmJ3tzZWxmLlNDSEVNRX17c2VsZi5tYXN0ZXJ9LyMv
YnVpbGRlcnMve2J1aWxkZXJfaWR9JwotCi0gICAgZGVmIF9idWlsZF91cmwoc2VsZiwgYnVpbGRl
cl9pZCwgYnVpbGRfbnVtYmVyKToKLSAgICAgICAgcmV0dXJuIGYne3NlbGYuX2J1aWxkZXJfdXJs
KGJ1aWxkZXJfaWQ9YnVpbGRlcl9pZCl9L2J1aWxkcy97YnVpbGRfbnVtYmVyfScKLQotICAgIGRl
ZiBfd29ya2VyX3VybChzZWxmLCB3b3JrZXJfaWQpOgotICAgICAgICByZXR1cm4gZid7c2VsZi5T
Q0hFTUV9e3NlbGYubWFzdGVyfS8jL3dvcmtlcnMve3dvcmtlcl9pZH0nCi0KLSAgICBkZWYgdXJs
KHNlbGYsIGJ1aWxkZXJfbmFtZT1Ob25lLCBidWlsZF9udW1iZXI9Tm9uZSwgd29ya2VyX25hbWU9
Tm9uZSwgc2hvdWxkX2ZldGNoPUZhbHNlKToKLSAgICAgICAgaWYgc2hvdWxkX2ZldGNoIGFuZCBz
ZWxmLnJlZGlzLmdldChmJ3tzZWxmLm1hc3Rlcn1fcmVmcmVzaGVkJyk6Ci0gICAgICAgICAgICBz
aG91bGRfZmV0Y2ggPSBGYWxzZQotCi0gICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICBp
ZiBidWlsZGVyX25hbWU6Ci0gICAgICAgICAgICAgICAgYnVpbGRlcl9pZCA9IHNlbGYucmVkaXMu
Z2V0KGYne3NlbGYubWFzdGVyfV97c2VsZi5CVUlMREVSX0tFWX1fe2J1aWxkZXJfbmFtZX0nKQot
ICAgICAgICAgICAgICAgIGlmIGJ1aWxkZXJfaWQ6Ci0gICAgICAgICAgICAgICAgICAgIGlmIGJ1
aWxkX251bWJlcjoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9idWlsZF91
cmwoYnVpbGRlcl9pZD1idWlsZGVyX2lkLmRlY29kZSgndXRmLTgnKSwgYnVpbGRfbnVtYmVyPWJ1
aWxkX251bWJlcikKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2J1aWxkZXJfdXJs
KGJ1aWxkZXJfaWQ9YnVpbGRlcl9pZC5kZWNvZGUoJ3V0Zi04JykpCi0KLSAgICAgICAgICAgIGVs
aWYgd29ya2VyX25hbWU6Ci0gICAgICAgICAgICAgICAgd29ya2VyX2lkID0gc2VsZi5yZWRpcy5n
ZXQoZid7c2VsZi5tYXN0ZXJ9X3tzZWxmLldPUktFUl9LRVl9X3t3b3JrZXJfbmFtZX0nKQotICAg
ICAgICAgICAgICAgIGlmIHdvcmtlcl9pZDoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNl
bGYuX3dvcmtlcl91cmwod29ya2VyX2lkPXdvcmtlcl9pZC5kZWNvZGUoJ3V0Zi04JykpCi0KLSAg
ICAgICAgICAgIGlmIG5vdCBzaG91bGRfZmV0Y2g6Ci0gICAgICAgICAgICAgICAgYnJlYWsKLSAg
ICAgICAgICAgIHNlbGYuZmV0Y2goKQotICAgICAgICAgICAgc2hvdWxkX2ZldGNoID0gRmFsc2UK
LQotICAgICAgICBsb2dnaW5nLmVycm9yKGYnQ291bGQgbm90IGdlbmVyYXRlIFVSTCBmb3IgQ0kg
bGlua3MgZnJvbSB7c2VsZi5tYXN0ZXJ9JykKLSAgICAgICAgcmV0dXJuIE5vbmUKSW5kZXg6IFRv
b2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL2NpX2NvbnRleHRfdW5pdHRlc3QucHkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvY2lfY29u
dGV4dF91bml0dGVzdC5weQkocmV2aXNpb24gMjY1NTMxKQorKysgVG9vbHMvcmVzdWx0c2RicHkv
cmVzdWx0c2RicHkvbW9kZWwvY2lfY29udGV4dF91bml0dGVzdC5weQkobm9uZXhpc3RlbnQpCkBA
IC0xLDM1NSArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMg
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
IyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECi0jIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECi0jIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSMgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTAotIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotIyBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLAotIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1p
bXBvcnQgY29udGV4dGxpYgotaW1wb3J0IGpzb24KLWltcG9ydCBtb2NrCi1pbXBvcnQgdGltZQot
aW1wb3J0IHVuaXR0ZXN0Ci0KLWZyb20gZmFrZXJlZGlzIGltcG9ydCBGYWtlU3RyaWN0UmVkaXMK
LWZyb20gcmVkaXMgaW1wb3J0IFN0cmljdFJlZGlzCi1mcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLmNh
c3NhbmRyYV9jb250ZXh0IGltcG9ydCBDYXNzYW5kcmFDb250ZXh0Ci1mcm9tIHJlc3VsdHNkYnB5
Lm1vZGVsLmNpX2NvbnRleHQgaW1wb3J0IEJ1aWxkYm90VVJMRmFjdG9yeSwgQ0lDb250ZXh0LCBC
dWlsZGJvdEVpZ2h0VVJMRmFjdG9yeQotZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVyLmNvbmZp
Z3VyYXRpb24gaW1wb3J0IENvbmZpZ3VyYXRpb24KLWZyb20gcmVzdWx0c2RicHkubW9kZWwubW9j
a19jYXNzYW5kcmFfY29udGV4dCBpbXBvcnQgTW9ja0Nhc3NhbmRyYUNvbnRleHQKLWZyb20gcmVz
dWx0c2RicHkubW9kZWwubW9ja19tb2RlbF9mYWN0b3J5IGltcG9ydCBNb2NrTW9kZWxGYWN0b3J5
Ci1mcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLm1vY2tfcmVwb3NpdG9yeSBpbXBvcnQgTW9ja1NWTlJl
cG9zaXRvcnkKLWZyb20gcmVzdWx0c2RicHkubW9kZWwud2FpdF9mb3JfZG9ja2VyX3Rlc3RfY2Fz
ZSBpbXBvcnQgV2FpdEZvckRvY2tlclRlc3RDYXNlCi0KLQotY2xhc3MgVVJMRmFjdG9yeVRlc3Qo
V2FpdEZvckRvY2tlclRlc3RDYXNlKToKLQotICAgIGNsYXNzIE1vY2tSZXF1ZXN0KG9iamVjdCk6
Ci0KLSAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRleHQ9JycsIHN0YXR1c19jb2RlPTIwMCk6
Ci0gICAgICAgICAgICBzZWxmLnRleHQgPSB0ZXh0Ci0gICAgICAgICAgICBzZWxmLnN0YXR1c19j
b2RlID0gc3RhdHVzX2NvZGUKLQotICAgICAgICBkZWYganNvbihzZWxmKToKLSAgICAgICAgICAg
IHJldHVybiBqc29uLmxvYWRzKHNlbGYudGV4dCkKLQotICAgIEJVSUxEX01BU1RFUiA9ICdidWls
ZC53ZWJraXQub3JnJwotCi0gICAgQlVJTERFUlMgPSBkaWN0KAotICAgICAgICBidWlsZGVycz1b
Ci0gICAgICAgICAgICBkaWN0KAotICAgICAgICAgICAgICAgIGJ1aWxkZXJpZD0xLAotICAgICAg
ICAgICAgICAgIG5hbWU9J01vamF2ZS1SZWxlYXNlLUJ1aWxkZXInLAotICAgICAgICAgICAgICAg
IGRlc2NyaXB0aW9uPU5vbmUsCi0gICAgICAgICAgICAgICAgbWFzdGVyaWRzPVsxXSwKLSAgICAg
ICAgICAgICAgICB0YWdzPVsKLSAgICAgICAgICAgICAgICAgICAgJ01vamF2ZScsCi0gICAgICAg
ICAgICAgICAgICAgICdSZWxlYXNlJywKLSAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAg
KSwKLSAgICAgICAgICAgIGRpY3QoCi0gICAgICAgICAgICAgICAgYnVpbGRlcmlkPTIsCi0gICAg
ICAgICAgICAgICAgbmFtZT0nTW9qYXZlLVJlbGVhc2UtV0syLVRlc3RzJywKLSAgICAgICAgICAg
ICAgICBkZXNjcmlwdGlvbj1Ob25lLAotICAgICAgICAgICAgICAgIG1hc3Rlcmlkcz1bMV0sCi0g
ICAgICAgICAgICAgICAgdGFncz1bCi0gICAgICAgICAgICAgICAgICAgICdNb2phdmUnLAotICAg
ICAgICAgICAgICAgICAgICAnUmVsZWFzZScsCi0gICAgICAgICAgICAgICAgICAgICdUZXN0cycs
Ci0gICAgICAgICAgICAgICAgICAgICdXSzInLAotICAgICAgICAgICAgICAgIF0sCi0gICAgICAg
ICAgICApLAotICAgICAgICAgICAgZGljdCgKLSAgICAgICAgICAgICAgICBidWlsZGVyaWQ9MywK
LSAgICAgICAgICAgICAgICBuYW1lPSdNb2phdmUtUmVsZWFzZS1XSzEtVGVzdHMnLAotICAgICAg
ICAgICAgICAgIGRlc2NyaXB0aW9uPU5vbmUsCi0gICAgICAgICAgICAgICAgbWFzdGVyaWRzPVsx
XSwKLSAgICAgICAgICAgICAgICB0YWdzPVsKLSAgICAgICAgICAgICAgICAgICAgJ01vamF2ZScs
Ci0gICAgICAgICAgICAgICAgICAgICdSZWxlYXNlJywKLSAgICAgICAgICAgICAgICAgICAgJ1Rl
c3RzJywKLSAgICAgICAgICAgICAgICAgICAgJ1dLMScsCi0gICAgICAgICAgICAgICAgXSwKLSAg
ICAgICAgICAgICksCi0gICAgICAgICAgICBkaWN0KAotICAgICAgICAgICAgICAgIGJ1aWxkZXJp
ZD00LAotICAgICAgICAgICAgICAgIG5hbWU9J0NhdGFsaW5hLVJlbGVhc2UtQnVpbGRlcicsCi0g
ICAgICAgICAgICAgICAgZGVzY3JpcHRpb249Tm9uZSwKLSAgICAgICAgICAgICAgICBtYXN0ZXJp
ZHM9WzFdLAotICAgICAgICAgICAgICAgIHRhZ3M9WwotICAgICAgICAgICAgICAgICAgICAnQ2F0
YWxpbmEnLAotICAgICAgICAgICAgICAgICAgICAnUmVsZWFzZScsCi0gICAgICAgICAgICAgICAg
XSwKLSAgICAgICAgICAgICksCi0gICAgICAgICAgICBkaWN0KAotICAgICAgICAgICAgICAgIGJ1
aWxkZXJpZD01LAotICAgICAgICAgICAgICAgIG5hbWU9J0NhdGFsaW5hLVJlbGVhc2UtV0syLVRl
c3RzJywKLSAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbj1Ob25lLAotICAgICAgICAgICAgICAg
IG1hc3Rlcmlkcz1bMV0sCi0gICAgICAgICAgICAgICAgdGFncz1bCi0gICAgICAgICAgICAgICAg
ICAgICdDYXRhbGluYScsCi0gICAgICAgICAgICAgICAgICAgICdSZWxlYXNlJywKLSAgICAgICAg
ICAgICAgICAgICAgJ1Rlc3RzJywKLSAgICAgICAgICAgICAgICAgICAgJ1dLMicsCi0gICAgICAg
ICAgICAgICAgXSwKLSAgICAgICAgICAgICksCi0gICAgICAgICAgICBkaWN0KAotICAgICAgICAg
ICAgICAgIGJ1aWxkZXJpZD02LAotICAgICAgICAgICAgICAgIG5hbWU9J0NhdGFsaW5hLVJlbGVh
c2UtV0sxLVRlc3RzJywKLSAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbj1Ob25lLAotICAgICAg
ICAgICAgICAgIG1hc3Rlcmlkcz1bMV0sCi0gICAgICAgICAgICAgICAgdGFncz1bCi0gICAgICAg
ICAgICAgICAgICAgICdDYXRhbGluYScsCi0gICAgICAgICAgICAgICAgICAgICdSZWxlYXNlJywK
LSAgICAgICAgICAgICAgICAgICAgJ1Rlc3RzJywKLSAgICAgICAgICAgICAgICAgICAgJ1dLMScs
Ci0gICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICksCi0gICAgICAgIF0sCi0gICAgICAg
IG1ldGE9ZGljdCh0b3RhbD02KSwKLSAgICApCi0gICAgV09SS0VSUyA9IGRpY3QoCi0gICAgICAg
IHdvcmtlcnM9WwotICAgICAgICAgICAgZGljdCgKLSAgICAgICAgICAgICAgICB3b3JrZXJpZD0x
LAotICAgICAgICAgICAgICAgIG5hbWU9J2J1aWxkZXIxJywKLSAgICAgICAgICAgICAgICBjb25m
aWd1cmVkX29uPVsKLSAgICAgICAgICAgICAgICAgICAgZGljdCgKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGJ1aWxkZXJpZD0xLAotICAgICAgICAgICAgICAgICAgICAgICAgbWFzdGVyaWQ9MSwK
LSAgICAgICAgICAgICAgICAgICAgKSwKLSAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAg
ICAgIGNvbm5lY3RlZF90bz1bZGljdChtYXN0ZXJpZD0xKV0sCi0gICAgICAgICAgICAgICAgZ3Jh
Y2VmdWw9RmFsc2UsCi0gICAgICAgICAgICAgICAgcGF1c2VkPUZhbHNlLAotICAgICAgICAgICAg
ICAgIHdvcmtlcmluZm89ZGljdCgKLSAgICAgICAgICAgICAgICAgICAgYWNjZXNzX3VyaT0nc3No
Oi8vYnVpbGRib3RAYnVpbGRlcjEnLAotICAgICAgICAgICAgICAgICAgICBhZG1pbj0nV2ViS2l0
IE9wZXJhdGlvbnMgPGVtYWlsQHdlYmtpdC5vcmc+JywKLSAgICAgICAgICAgICAgICAgICAgaG9z
dD0nPycsCi0gICAgICAgICAgICAgICAgICAgIHZlcnNpb249JzEuMS4xJwotICAgICAgICAgICAg
ICAgICksCi0gICAgICAgICAgICApLAotICAgICAgICAgICAgZGljdCgKLSAgICAgICAgICAgICAg
ICB3b3JrZXJpZD0yLAotICAgICAgICAgICAgICAgIG5hbWU9J2J1aWxkZXIyJywKLSAgICAgICAg
ICAgICAgICBjb25maWd1cmVkX29uPVsKLSAgICAgICAgICAgICAgICAgICAgZGljdCgKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGJ1aWxkZXJpZD00LAotICAgICAgICAgICAgICAgICAgICAgICAg
bWFzdGVyaWQ9MSwKLSAgICAgICAgICAgICAgICAgICAgKSwKLSAgICAgICAgICAgICAgICBdLAot
ICAgICAgICAgICAgICAgIGNvbm5lY3RlZF90bz1bZGljdChtYXN0ZXJpZD0xKV0sCi0gICAgICAg
ICAgICAgICAgZ3JhY2VmdWw9RmFsc2UsCi0gICAgICAgICAgICAgICAgcGF1c2VkPUZhbHNlLAot
ICAgICAgICAgICAgICAgIHdvcmtlcmluZm89ZGljdCgKLSAgICAgICAgICAgICAgICAgICAgYWNj
ZXNzX3VyaT0nc3NoOi8vYnVpbGRib3RAYnVpbGRlcjInLAotICAgICAgICAgICAgICAgICAgICBh
ZG1pbj0nV2ViS2l0IE9wZXJhdGlvbnMgPGVtYWlsQHdlYmtpdC5vcmc+JywKLSAgICAgICAgICAg
ICAgICAgICAgaG9zdD0nPycsCi0gICAgICAgICAgICAgICAgICAgIHZlcnNpb249JzEuMS4xJwot
ICAgICAgICAgICAgICAgICksCi0gICAgICAgICAgICApLAotICAgICAgICAgICAgZGljdCgKLSAg
ICAgICAgICAgICAgICB3b3JrZXJpZD0zLAotICAgICAgICAgICAgICAgIG5hbWU9J2JvdDEnLAot
ICAgICAgICAgICAgICAgIGNvbmZpZ3VyZWRfb249WwotICAgICAgICAgICAgICAgICAgICBkaWN0
KAotICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRlcmlkPTIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICBtYXN0ZXJpZD0xLAotICAgICAgICAgICAgICAgICAgICApLAotICAgICAgICAgICAg
ICAgICAgICBkaWN0KAotICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRlcmlkPTMsCi0gICAg
ICAgICAgICAgICAgICAgICAgICBtYXN0ZXJpZD0xLAotICAgICAgICAgICAgICAgICAgICApLAot
ICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgY29ubmVjdGVkX3RvPVtkaWN0KG1h
c3RlcmlkPTEpXSwKLSAgICAgICAgICAgICAgICBncmFjZWZ1bD1GYWxzZSwKLSAgICAgICAgICAg
ICAgICBwYXVzZWQ9RmFsc2UsCi0gICAgICAgICAgICAgICAgd29ya2VyaW5mbz1kaWN0KAotICAg
ICAgICAgICAgICAgICAgICBhY2Nlc3NfdXJpPSdzc2g6Ly9idWlsZGJvdEBib3QxJywKLSAgICAg
ICAgICAgICAgICAgICAgYWRtaW49J1dlYktpdCBPcGVyYXRpb25zIDxlbWFpbEB3ZWJraXQub3Jn
PicsCi0gICAgICAgICAgICAgICAgICAgIGhvc3Q9Jz8nLAotICAgICAgICAgICAgICAgICAgICB2
ZXJzaW9uPScxLjEuMScKLSAgICAgICAgICAgICAgICApLAotICAgICAgICAgICAgKSwKLSAgICAg
ICAgICAgIGRpY3QoCi0gICAgICAgICAgICAgICAgd29ya2VyaWQ9NCwKLSAgICAgICAgICAgICAg
ICBuYW1lPSdib3QyJywKLSAgICAgICAgICAgICAgICBjb25maWd1cmVkX29uPVsKLSAgICAgICAg
ICAgICAgICAgICAgZGljdCgKLSAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkZXJpZD01LAot
ICAgICAgICAgICAgICAgICAgICAgICAgbWFzdGVyaWQ9MSwKLSAgICAgICAgICAgICAgICAgICAg
KSwKLSAgICAgICAgICAgICAgICAgICAgZGljdCgKLSAgICAgICAgICAgICAgICAgICAgICAgIGJ1
aWxkZXJpZD02LAotICAgICAgICAgICAgICAgICAgICAgICAgbWFzdGVyaWQ9MSwKLSAgICAgICAg
ICAgICAgICAgICAgKSwKLSAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgIGNvbm5l
Y3RlZF90bz1bZGljdChtYXN0ZXJpZD0xKV0sCi0gICAgICAgICAgICAgICAgZ3JhY2VmdWw9RmFs
c2UsCi0gICAgICAgICAgICAgICAgcGF1c2VkPUZhbHNlLAotICAgICAgICAgICAgICAgIHdvcmtl
cmluZm89ZGljdCgKLSAgICAgICAgICAgICAgICAgICAgYWNjZXNzX3VyaT0nc3NoOi8vYnVpbGRi
b3RAYm90MicsCi0gICAgICAgICAgICAgICAgICAgIGFkbWluPSdXZWJLaXQgT3BlcmF0aW9ucyA8
ZW1haWxAd2Via2l0Lm9yZz4nLAotICAgICAgICAgICAgICAgICAgICBob3N0PSc/JywKLSAgICAg
ICAgICAgICAgICAgICAgdmVyc2lvbj0nMS4xLjEnCi0gICAgICAgICAgICAgICAgKSwKLSAgICAg
ICAgICAgICksCi0gICAgICAgIF0sCi0gICAgICAgIG1ldGE9ZGljdCh0b3RhbD00KSwKLSAgICAp
Ci0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgZ2V0KGNscywgdXJsLCAqYXJncywgKiprd2Fy
Z3MpOgotICAgICAgICBpZiB1cmwgPT0gZidodHRwczovL3tjbHMuQlVJTERfTUFTVEVSfS9hcGkv
djIvYnVpbGRlcnMnOgotICAgICAgICAgICAgcmV0dXJuIGNscy5Nb2NrUmVxdWVzdCh0ZXh0PWpz
b24uZHVtcHMoY2xzLkJVSUxERVJTKSkKLSAgICAgICAgaWYgdXJsID09IGYnaHR0cHM6Ly97Y2xz
LkJVSUxEX01BU1RFUn0vYXBpL3YyL3dvcmtlcnMnOgotICAgICAgICAgICAgcmV0dXJuIGNscy5N
b2NrUmVxdWVzdCh0ZXh0PWpzb24uZHVtcHMoY2xzLldPUktFUlMpKQotICAgICAgICByZXR1cm4g
Y2xzLk1vY2tSZXF1ZXN0KHN0YXR1c19jb2RlPTUwMCkKLQotICAgIEBjbGFzc21ldGhvZAotICAg
IEBjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCi0gICAgZGVmIG1vY2soY2xzKToKLSAgICAgICAg
d2l0aCBtb2NrLnBhdGNoKCdyZXF1ZXN0cy5nZXQnLCBuZXc9Y2xzLmdldCk6Ci0gICAgICAgICAg
ICB5aWVsZAotCi0gICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlciht
b2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcykKLSAgICBkZWYgdGVzdF9idWlsZGVyX3VybChzZWxm
LCByZWRpcz1TdHJpY3RSZWRpcyk6Ci0gICAgICAgIHdpdGggc2VsZi5tb2NrKCk6Ci0gICAgICAg
ICAgICBmYWN0b3J5ID0gQnVpbGRib3RVUkxGYWN0b3J5KG1hc3Rlcj0nYnVpbGQud2Via2l0Lm9y
ZycsIHJlZGlzPXJlZGlzKCkpCi0gICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShmYWN0b3J5
LnVybChidWlsZGVyX25hbWU9J01vamF2ZS1SZWxlYXNlLUJ1aWxkZXInKSkKLSAgICAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoJ2h0dHBzOi8vYnVpbGQud2Via2l0Lm9yZy8jL2J1aWxkZXJzLzEn
LCBmYWN0b3J5LnVybChidWlsZGVyX25hbWU9J01vamF2ZS1SZWxlYXNlLUJ1aWxkZXInLCBzaG91
bGRfZmV0Y2g9VHJ1ZSkpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdodHRwczovL2J1
aWxkLndlYmtpdC5vcmcvIy9idWlsZGVycy80JywgZmFjdG9yeS51cmwoYnVpbGRlcl9uYW1lPSdD
YXRhbGluYS1SZWxlYXNlLUJ1aWxkZXInKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25l
KGZhY3RvcnkudXJsKGJ1aWxkZXJfbmFtZT0nSGlnaFNpZXJyYS1SZWxlYXNlLUJ1aWxkZXInLCBz
aG91bGRfZmV0Y2g9VHJ1ZSkpCi0KLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2h0dHBz
Oi8vYnVpbGQud2Via2l0Lm9yZy8jL2J1aWxkZXJzLzQvYnVpbGRzLzgnLCBmYWN0b3J5LnVybChi
dWlsZGVyX25hbWU9J0NhdGFsaW5hLVJlbGVhc2UtQnVpbGRlcicsIGJ1aWxkX251bWJlcj04KSkK
LQotICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRp
cz1GYWtlU3RyaWN0UmVkaXMpCi0gICAgZGVmIHRlc3Rfd29ya2VyX3VybChzZWxmLCByZWRpcz1T
dHJpY3RSZWRpcyk6Ci0gICAgICAgIHdpdGggc2VsZi5tb2NrKCk6Ci0gICAgICAgICAgICBmYWN0
b3J5ID0gQnVpbGRib3RVUkxGYWN0b3J5KG1hc3Rlcj0nYnVpbGQud2Via2l0Lm9yZycsIHJlZGlz
PXJlZGlzKCkpCi0gICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShmYWN0b3J5LnVybCh3b3Jr
ZXJfbmFtZT0nYnVpbGRlcjEnKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2h0dHBz
Oi8vYnVpbGQud2Via2l0Lm9yZy8jL3dvcmtlcnMvMScsIGZhY3RvcnkudXJsKHdvcmtlcl9uYW1l
PSdidWlsZGVyMScsIHNob3VsZF9mZXRjaD1UcnVlKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoJ2h0dHBzOi8vYnVpbGQud2Via2l0Lm9yZy8jL3dvcmtlcnMvMycsIGZhY3RvcnkudXJs
KHdvcmtlcl9uYW1lPSdib3QxJykpCi0gICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShmYWN0
b3J5LnVybCh3b3JrZXJfbmFtZT0nYm90MycsIHNob3VsZF9mZXRjaD1UcnVlKSkKLQotICAgIEBX
YWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3Ry
aWN0UmVkaXMpCi0gICAgZGVmIHRlc3RfaW52YWxpZF9jb21iaW5hdGlvbnMoc2VsZiwgcmVkaXM9
U3RyaWN0UmVkaXMpOgotICAgICAgICB3aXRoIHNlbGYubW9jaygpOgotICAgICAgICAgICAgZmFj
dG9yeSA9IEJ1aWxkYm90VVJMRmFjdG9yeShtYXN0ZXI9J2J1aWxkLndlYmtpdC5vcmcnLCByZWRp
cz1yZWRpcygpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZmFjdG9yeS51cmwoc2hv
dWxkX2ZldGNoPVRydWUpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnaHR0cHM6Ly9i
dWlsZC53ZWJraXQub3JnLyMvYnVpbGRlcnMvMScsIGZhY3RvcnkudXJsKGJ1aWxkZXJfbmFtZT0n
TW9qYXZlLVJlbGVhc2UtQnVpbGRlcicsIHdvcmtlcl9uYW1lPSdidWlsZGVyMScsIHNob3VsZF9m
ZXRjaD1UcnVlKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2h0dHBzOi8vYnVpbGQu
d2Via2l0Lm9yZy8jL2J1aWxkZXJzLzEvYnVpbGRzLzEnLCBmYWN0b3J5LnVybChidWlsZGVyX25h
bWU9J01vamF2ZS1SZWxlYXNlLUJ1aWxkZXInLCBidWlsZF9udW1iZXI9MSwgd29ya2VyX25hbWU9
J2J1aWxkZXIxJywgc2hvdWxkX2ZldGNoPVRydWUpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgnaHR0cHM6Ly9idWlsZC53ZWJraXQub3JnLyMvd29ya2Vycy8xJywgZmFjdG9yeS51cmwo
YnVpbGRfbnVtYmVyPTEsIHdvcmtlcl9uYW1lPSdidWlsZGVyMScsIHNob3VsZF9mZXRjaD1UcnVl
KSkKLQotICAgIGRlZiB0ZXN0X29sZF9idWlsZGVyX3VybChzZWxmKToKLSAgICAgICAgZmFjdG9y
eSA9IEJ1aWxkYm90RWlnaHRVUkxGYWN0b3J5KG1hc3Rlcj0nYnVpbGQud2Via2l0Lm9yZycpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGZhY3RvcnkudXJsKCkpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoJ2h0dHBzOi8vYnVpbGQud2Via2l0Lm9yZy9idWlsZGVycy9BcHBsZSUyME1vamF2
ZSUyMFJlbGVhc2UlMjBXSzIlMjAlMjhUZXN0cyUyOScsIGZhY3RvcnkudXJsKGJ1aWxkZXJfbmFt
ZT0nQXBwbGUgTW9qYXZlIFJlbGVhc2UgV0syIChUZXN0cyknKSkKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgnaHR0cHM6Ly9idWlsZC53ZWJraXQub3JnL2J1aWxkZXJzL0FwcGxlJTIwTW9qYXZl
JTIwUmVsZWFzZSUyMCUyOEJ1aWxkJTI5JywgZmFjdG9yeS51cmwoYnVpbGRlcl9uYW1lPSdBcHBs
ZSBNb2phdmUgUmVsZWFzZSAoQnVpbGQpJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2h0
dHBzOi8vYnVpbGQud2Via2l0Lm9yZy9idWlsZGVycy9BcHBsZSUyME1vamF2ZSUyMFJlbGVhc2Ul
MjAlMjhCdWlsZCUyOS9idWlsZHMvNzE3MCcsIGZhY3RvcnkudXJsKGJ1aWxkZXJfbmFtZT0nQXBw
bGUgTW9qYXZlIFJlbGVhc2UgKEJ1aWxkKScsIGJ1aWxkX251bWJlcj03MTcwKSkKLQotICAgIGRl
ZiB0ZXN0X29sZF93b3JrZXJfdXJsKHNlbGYpOgotICAgICAgICBmYWN0b3J5ID0gQnVpbGRib3RF
aWdodFVSTEZhY3RvcnkobWFzdGVyPSdidWlsZC53ZWJraXQub3JnJykKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgnaHR0cHM6Ly9idWlsZC53ZWJraXQub3JnL2J1aWxkc2xhdmVzL2JvdDYxMCcs
IGZhY3RvcnkudXJsKHdvcmtlcl9uYW1lPSdib3Q2MTAnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgnaHR0cHM6Ly9idWlsZC53ZWJraXQub3JnL2J1aWxkc2xhdmVzL2JvdDYxMScsIGZhY3Rv
cnkudXJsKHdvcmtlcl9uYW1lPSdib3Q2MTEnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgn
aHR0cHM6Ly9idWlsZC53ZWJraXQub3JnL2J1aWxkZXJzL0FwcGxlJTIwTW9qYXZlJTIwUmVsZWFz
ZSUyMFdLMiUyMCUyOFRlc3RzJTI5JywgZmFjdG9yeS51cmwoYnVpbGRlcl9uYW1lPSdBcHBsZSBN
b2phdmUgUmVsZWFzZSBXSzIgKFRlc3RzKScsIHdvcmtlcl9uYW1lPSdib3Q2MTAnKSkKLQotCi1j
bGFzcyBDSUNvbnRleHRUZXN0KFdhaXRGb3JEb2NrZXJUZXN0Q2FzZSk6Ci0gICAgS0VZU1BBQ0Ug
PSAnc3VpdGVfY29udGV4dF90ZXN0X2tleXNwYWNlJwotCi0gICAgZGVmIGluaXRfZGF0YWJhc2Uo
c2VsZiwgcmVkaXM9U3RyaWN0UmVkaXMsIGNhc3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0KToKLSAg
ICAgICAgd2l0aCBVUkxGYWN0b3J5VGVzdC5tb2NrKCk6Ci0gICAgICAgICAgICBjYXNzYW5kcmEu
ZHJvcF9rZXlzcGFjZShrZXlzcGFjZT1zZWxmLktFWVNQQUNFKQotICAgICAgICAgICAgc2VsZi5t
b2RlbCA9IE1vY2tNb2RlbEZhY3RvcnkuY3JlYXRlKHJlZGlzPXJlZGlzKCksIGNhc3NhbmRyYT1j
YXNzYW5kcmEoa2V5c3BhY2U9c2VsZi5LRVlTUEFDRSwgY3JlYXRlX2tleXNwYWNlPVRydWUpKQot
ICAgICAgICAgICAgc2VsZi5tb2RlbC5jaV9jb250ZXh0LmFkZF91cmxfZmFjdG9yeShCdWlsZGJv
dFVSTEZhY3RvcnkobWFzdGVyPSdidWlsZC53ZWJraXQub3JnJywgcmVkaXM9c2VsZi5tb2RlbC5y
ZWRpcykpCi0KLSAgICAgICAgICAgIHdpdGggc2VsZi5tb2RlbC51cGxvYWRfY29udGV4dDoKLSAg
ICAgICAgICAgICAgICAjIE1vY2sgcmVzdWx0cyBhcmUgbW9yZSBjb21wbGljYXRlZCBiZWNhdXNl
IHdlIHdhbnQgdG8gYXR0YWNoIHJlc3VsdHMgdG8gYnVpbGRlcnMKLSAgICAgICAgICAgICAgICBm
b3IgY29uZmlndXJhdGlvbiBpbiBbCi0gICAgICAgICAgICAgICAgICAgIENvbmZpZ3VyYXRpb24o
cGxhdGZvcm09J01hYycsIHZlcnNpb25fbmFtZT0nQ2F0YWxpbmEnLCB2ZXJzaW9uPScxMC4xNS4w
Jywgc2RrPScxOUE1MDAnLCBpc19zaW11bGF0b3I9RmFsc2UsIGFyY2hpdGVjdHVyZT0neDg2XzY0
Jywgc3R5bGU9J1JlbGVhc2UnLCBmbGF2b3I9J3drMScpLAotICAgICAgICAgICAgICAgICAgICBD
b25maWd1cmF0aW9uKHBsYXRmb3JtPSdNYWMnLCB2ZXJzaW9uX25hbWU9J0NhdGFsaW5hJywgdmVy
c2lvbj0nMTAuMTUuMCcsIHNkaz0nMTlBNTAwJywgaXNfc2ltdWxhdG9yPUZhbHNlLCBhcmNoaXRl
Y3R1cmU9J3g4Nl82NCcsIHN0eWxlPSdSZWxlYXNlJywgZmxhdm9yPSd3azInKSwKLSAgICAgICAg
ICAgICAgICAgICAgQ29uZmlndXJhdGlvbihwbGF0Zm9ybT0nTWFjJywgdmVyc2lvbl9uYW1lPSdN
b2phdmUnLCB2ZXJzaW9uPScxMC4xNC4wJywgc2RrPScxOEE1MDAnLCBpc19zaW11bGF0b3I9RmFs
c2UsIGFyY2hpdGVjdHVyZT0neDg2XzY0Jywgc3R5bGU9J1JlbGVhc2UnLCBmbGF2b3I9J3drMScp
LAotICAgICAgICAgICAgICAgICAgICBDb25maWd1cmF0aW9uKHBsYXRmb3JtPSdNYWMnLCB2ZXJz
aW9uX25hbWU9J01vamF2ZScsIHZlcnNpb249JzEwLjE0LjAnLCBzZGs9JzE4QTUwMCcsIGlzX3Np
bXVsYXRvcj1GYWxzZSwgYXJjaGl0ZWN0dXJlPSd4ODZfNjQnLCBzdHlsZT0nUmVsZWFzZScsIGZs
YXZvcj0nd2syJyksCi0gICAgICAgICAgICAgICAgXToKLSAgICAgICAgICAgICAgICAgICAgYnVp
bGRfY291bnQgPSBbMV0KLQotICAgICAgICAgICAgICAgICAgICBkZWYgY2FsbGJhY2soY29tbWl0
cywgbW9kZWw9c2VsZi5tb2RlbCwgY29uZmlndXJhdGlvbj1jb25maWd1cmF0aW9uLCBjb3VudD1i
dWlsZF9jb3VudCk6Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRzID0gTW9ja01vZGVs
RmFjdG9yeS5sYXlvdXRfdGVzdF9yZXN1bHRzKCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJl
c3VsdHNbJ2RldGFpbHMnXSA9IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYnVpbGRi
b3QtbWFzdGVyJzogVVJMRmFjdG9yeVRlc3QuQlVJTERfTUFTVEVSLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICdidWlsZGVyLW5hbWUnOiBmJ3tjb25maWd1cmF0aW9uLnZlcnNpb25fbmFt
ZX0te2NvbmZpZ3VyYXRpb24uc3R5bGV9LXtjb25maWd1cmF0aW9uLmZsYXZvci51cHBlcigpfS1U
ZXN0cycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2J1aWxkLW51bWJlcic6IHN0cihj
b3VudFswXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2J1aWxkYm90LXdvcmtlcic6
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ01vamF2ZSc6ICdib3QxJywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0NhdGFsaW5hJzogJ2JvdDInLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0uZ2V0KGNvbmZpZ3VyYXRpb24udmVyc2lvbl9uYW1lLCBO
b25lKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAg
IG1vZGVsLnVwbG9hZF9jb250ZXh0LnVwbG9hZF90ZXN0X3Jlc3VsdHMoY29uZmlndXJhdGlvbiwg
Y29tbWl0cywgc3VpdGU9J2xheW91dC10ZXN0cycsIHRpbWVzdGFtcD10aW1lLnRpbWUoKSwgdGVz
dF9yZXN1bHRzPXJlc3VsdHMpCi0gICAgICAgICAgICAgICAgICAgICAgICBjb3VudFswXSArPSAx
Ci0KLSAgICAgICAgICAgICAgICAgICAgTW9ja01vZGVsRmFjdG9yeS5pdGVyYXRlX2FsbF9jb21t
aXRzKHNlbGYubW9kZWwsIGNhbGxiYWNrKQotICAgICAgICAgICAgICAgICAgICBNb2NrTW9kZWxG
YWN0b3J5LnByb2Nlc3NfcmVzdWx0cyhzZWxmLm1vZGVsLCBjb25maWd1cmF0aW9uKQotCi0gICAg
QFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VT
dHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCi0gICAgZGVm
IHRlc3RfYnVpbGRlcl9mb3Jfc2luZ2xlX2NvbmZpZ3VyYXRpb24oc2VsZiwgcmVkaXM9U3RyaWN0
UmVkaXMsIGNhc3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0KToKLSAgICAgICAgc2VsZi5pbml0X2Rh
dGFiYXNlKHJlZGlzPXJlZGlzLCBjYXNzYW5kcmE9Y2Fzc2FuZHJhKQotICAgICAgICB1cmxzID0g
c2VsZi5tb2RlbC5jaV9jb250ZXh0LmZpbmRfdXJsc19ieV9xdWV1ZShjb25maWd1cmF0aW9ucz1b
Q29uZmlndXJhdGlvbih2ZXJzaW9uX25hbWU9J01vamF2ZScsIGZsYXZvcj0nd2syJyldLCBzdWl0
ZT0nbGF5b3V0LXRlc3RzJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWQodXJscy52
YWx1ZXMoKSksIFsnaHR0cHM6Ly9idWlsZC53ZWJraXQub3JnLyMvYnVpbGRlcnMvMiddKQotCi0g
ICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZh
a2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCi0gICAg
ZGVmIHRlc3RfYnVpbGRlcl9mb3JfbXVsdGlwbGVfY29uZmlndXJhdGlvbihzZWxmLCByZWRpcz1T
dHJpY3RSZWRpcywgY2Fzc2FuZHJhPUNhc3NhbmRyYUNvbnRleHQpOgotICAgICAgICBzZWxmLmlu
aXRfZGF0YWJhc2UocmVkaXM9cmVkaXMsIGNhc3NhbmRyYT1jYXNzYW5kcmEpCi0gICAgICAgIHVy
bHMgPSBzZWxmLm1vZGVsLmNpX2NvbnRleHQuZmluZF91cmxzX2J5X3F1ZXVlKGNvbmZpZ3VyYXRp
b25zPVtDb25maWd1cmF0aW9uKHZlcnNpb25fbmFtZT0nQ2F0YWxpbmEnKV0sIHN1aXRlPSdsYXlv
dXQtdGVzdHMnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZCh1cmxzLnZhbHVlcygp
KSwgWydodHRwczovL2J1aWxkLndlYmtpdC5vcmcvIy9idWlsZGVycy81JywgJ2h0dHBzOi8vYnVp
bGQud2Via2l0Lm9yZy8jL2J1aWxkZXJzLzYnXSkKLQotICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENh
c2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fz
c2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQotICAgIGRlZiB0ZXN0X3VybF9mb3JfY29tbWl0
KHNlbGYsIHJlZGlzPVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCk6Ci0g
ICAgICAgIHNlbGYuaW5pdF9kYXRhYmFzZShyZWRpcz1yZWRpcywgY2Fzc2FuZHJhPWNhc3NhbmRy
YSkKLSAgICAgICAgdXJscyA9IHNlbGYubW9kZWwuY2lfY29udGV4dC5maW5kX3VybHNfYnlfY29t
bWl0KAotICAgICAgICAgICAgY29uZmlndXJhdGlvbnM9W0NvbmZpZ3VyYXRpb24odmVyc2lvbl9u
YW1lPSdNb2phdmUnLCBmbGF2b3I9J3drMicpXSwKLSAgICAgICAgICAgIHN1aXRlPSdsYXlvdXQt
dGVzdHMnLAotICAgICAgICAgICAgYmVnaW49TW9ja1NWTlJlcG9zaXRvcnkud2Via2l0KCkuY29t
bWl0X2Zvcl9pZCgyMzY1NDIpLAotICAgICAgICAgICAgZW5kPU1vY2tTVk5SZXBvc2l0b3J5Lndl
YmtpdCgpLmNvbW1pdF9mb3JfaWQoMjM2NTQyKSwKLSAgICAgICAgKQotCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwobmV4dChpdGVyKHVybHMudmFsdWVzKCkpKVswXVsncXVldWUnXSwgJ2h0dHBz
Oi8vYnVpbGQud2Via2l0Lm9yZy8jL2J1aWxkZXJzLzInKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKG5leHQoaXRlcih1cmxzLnZhbHVlcygpKSlbMF1bJ2J1aWxkJ10sICdodHRwczovL2J1aWxk
LndlYmtpdC5vcmcvIy9idWlsZGVycy8yL2J1aWxkcy8zJykKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChuZXh0KGl0ZXIodXJscy52YWx1ZXMoKSkpWzBdWyd3b3JrZXInXSwgJ2h0dHBzOi8vYnVp
bGQud2Via2l0Lm9yZy8jL3dvcmtlcnMvMycpCi0KLSAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNl
Lm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3Nh
bmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKLSAgICBkZWYgdGVzdF9maW5kX2J5X3RpbWUoc2Vs
ZiwgcmVkaXM9U3RyaWN0UmVkaXMsIGNhc3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0KToKLSAgICAg
ICAgc2VsZi5pbml0X2RhdGFiYXNlKHJlZGlzPXJlZGlzLCBjYXNzYW5kcmE9Y2Fzc2FuZHJhKQot
ICAgICAgICB1cmxzID0gc2VsZi5tb2RlbC5jaV9jb250ZXh0LmZpbmRfdXJsc19ieV9jb21taXQo
Ci0gICAgICAgICAgICBjb25maWd1cmF0aW9ucz1bQ29uZmlndXJhdGlvbih2ZXJzaW9uX25hbWU9
J0NhdGFsaW5hJyldLAotICAgICAgICAgICAgc3VpdGU9J2xheW91dC10ZXN0cycsCi0gICAgICAg
ICAgICBiZWdpbl9xdWVyeV90aW1lPSh0aW1lLnRpbWUoKSAtIDYwICogNjApLAotICAgICAgICAp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHVybHMpLCAyKQotICAgICAgICBmb3IgdXJs
c19mb3JfY29uZmlnIGluIHVybHMudmFsdWVzKCk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGxlbih1cmxzX2Zvcl9jb25maWcpLCA1KQotCi0gICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2Fz
ZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNz
YW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCi0gICAgZGVmIHRlc3RfZmluZF9ub190ZXN0c19i
eV90aW1lKHNlbGYsIHJlZGlzPVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4
dCk6Ci0gICAgICAgIHNlbGYuaW5pdF9kYXRhYmFzZShyZWRpcz1yZWRpcywgY2Fzc2FuZHJhPWNh
c3NhbmRyYSkKLSAgICAgICAgdXJscyA9IHNlbGYubW9kZWwuY2lfY29udGV4dC5maW5kX3VybHNf
YnlfY29tbWl0KAotICAgICAgICAgICAgY29uZmlndXJhdGlvbnM9W0NvbmZpZ3VyYXRpb24odmVy
c2lvbl9uYW1lPSdNb2phdmUnKV0sCi0gICAgICAgICAgICBzdWl0ZT0nbGF5b3V0LXRlc3RzJywK
LSAgICAgICAgICAgIGVuZF9xdWVyeV90aW1lPSh0aW1lLnRpbWUoKSAtIDYwICogNjApLAotICAg
ICAgICApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHVybHMpLCAwKQpJbmRleDogVG9v
bHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvY29tbWl0X2NvbnRleHQucHkKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvY29tbWl0X2NvbnRl
eHQucHkJKHJldmlzaW9uIDI2NTUzMSkKKysrIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5
L21vZGVsL2NvbW1pdF9jb250ZXh0LnB5CShub25leGlzdGVudCkKQEAgLTEsMzQyICswLDAgQEAK
LSMgQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMK
LSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQotIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SCi0jIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0jIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0j
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLWltcG9ydCBjYWxlbmRhcgot
aW1wb3J0IGpzb24KLWltcG9ydCB0aW1lCi0KLWZyb20gY2Fzc2FuZHJhLmNxbGVuZ2luZSBpbXBv
cnQgY29sdW1ucwotZnJvbSBjYXNzYW5kcmEuY3FsZW5naW5lLm1vZGVscyBpbXBvcnQgTW9kZWwK
LWZyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1lCi1mcm9tIHJlc3VsdHNkYnB5LmNvbnRyb2xs
ZXIuY29tbWl0IGltcG9ydCBDb21taXQKLWZyb20gcmVzdWx0c2RicHkubW9kZWwucmVwb3NpdG9y
eSBpbXBvcnQgUmVwb3NpdG9yeSwgU0NNRXhjZXB0aW9uCi0KLQotY2xhc3MgQ29tbWl0Q29udGV4
dChvYmplY3QpOgotCi0gICAgY2xhc3MgQ29tbWl0TW9kZWwoTW9kZWwpOgotICAgICAgICByZXBv
c2l0b3J5X2lkID0gY29sdW1ucy5UZXh0KHBhcnRpdGlvbl9rZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1
ZSkKLSAgICAgICAgYnJhbmNoID0gY29sdW1ucy5UZXh0KHBhcnRpdGlvbl9rZXk9VHJ1ZSwgcmVx
dWlyZWQ9VHJ1ZSkKLSAgICAgICAgY29tbWl0dGVyID0gY29sdW1ucy5UZXh0KCkKLSAgICAgICAg
bWVzc2FnZSA9IGNvbHVtbnMuVGV4dCgpCi0KLSAgICAgICAgZGVmIHRvX2NvbW1pdChzZWxmKToK
LSAgICAgICAgICAgIHJldHVybiBDb21taXQoCi0gICAgICAgICAgICAgICAgcmVwb3NpdG9yeV9p
ZD1zZWxmLnJlcG9zaXRvcnlfaWQsIGJyYW5jaD1zZWxmLmJyYW5jaCwKLSAgICAgICAgICAgICAg
ICBpZD1zZWxmLmNvbW1pdF9pZCwKLSAgICAgICAgICAgICAgICB0aW1lc3RhbXA9c2VsZi51dWlk
IC8vIENvbW1pdC5USU1FU1RBTVBfVE9fVVVJRF9NVUxUSVBMSUVSLAotICAgICAgICAgICAgICAg
IG9yZGVyPXNlbGYudXVpZCAlIENvbW1pdC5USU1FU1RBTVBfVE9fVVVJRF9NVUxUSVBMSUVSLAot
ICAgICAgICAgICAgICAgIGNvbW1pdHRlcj1zZWxmLmNvbW1pdHRlciwgbWVzc2FnZT1zZWxmLm1l
c3NhZ2UsCi0gICAgICAgICAgICApCi0KLSAgICBjbGFzcyBDb21taXRCeUlEKENvbW1pdE1vZGVs
KToKLSAgICAgICAgX190YWJsZV9uYW1lX18gPSAnY29tbWl0c19pZF90b190aW1lc3RhbXBfdXVp
ZCcKLSAgICAgICAgY29tbWl0X2lkID0gY29sdW1ucy5UZXh0KHByaW1hcnlfa2V5PVRydWUsIHJl
cXVpcmVkPVRydWUpCi0gICAgICAgIHV1aWQgPSBjb2x1bW5zLkJpZ0ludChyZXF1aXJlZD1UcnVl
KQotCi0gICAgY2xhc3MgQ29tbWl0QnlVdWlkQXNjZW5kaW5nKENvbW1pdE1vZGVsKToKLSAgICAg
ICAgX190YWJsZV9uYW1lX18gPSAnY29tbWl0c190aW1lc3RhbXBfdXVpZF90b19pZF9hc2NlbmRp
bmcnCi0gICAgICAgIHV1aWQgPSBjb2x1bW5zLkJpZ0ludChwcmltYXJ5X2tleT1UcnVlLCByZXF1
aXJlZD1UcnVlLCBjbHVzdGVyaW5nX29yZGVyPSdBU0MnKQotICAgICAgICBjb21taXRfaWQgPSBj
b2x1bW5zLlRleHQocmVxdWlyZWQ9VHJ1ZSkKLQotICAgIGNsYXNzIENvbW1pdEJ5VXVpZERlc2Nl
bmRpbmcoQ29tbWl0TW9kZWwpOgotICAgICAgICBfX3RhYmxlX25hbWVfXyA9ICdjb21taXRzX3Rp
bWVzdGFtcF91dWlkX3RvX2lkX2Rlc2NlbmRpbmcnCi0gICAgICAgIHV1aWQgPSBjb2x1bW5zLkJp
Z0ludChwcmltYXJ5X2tleT1UcnVlLCByZXF1aXJlZD1UcnVlLCBjbHVzdGVyaW5nX29yZGVyPSdE
RVNDJykKLSAgICAgICAgY29tbWl0X2lkID0gY29sdW1ucy5UZXh0KHJlcXVpcmVkPVRydWUpCi0K
LSAgICBjbGFzcyBCcmFuY2hlcyhNb2RlbCk6Ci0gICAgICAgIF9fdGFibGVfbmFtZV9fID0gJ2Nv
bW1pdF9icmFuY2hlcycKLSAgICAgICAgcmVwb3NpdG9yeV9pZCA9IGNvbHVtbnMuVGV4dChwYXJ0
aXRpb25fa2V5PVRydWUsIHJlcXVpcmVkPVRydWUpCi0gICAgICAgIGJyYW5jaCA9IGNvbHVtbnMu
VGV4dChwcmltYXJ5X2tleT1UcnVlLCByZXF1aXJlZD1UcnVlKQotCi0gICAgREVGQVVMVF9CUkFO
Q0hfS0VZID0gJ2RlZmF1bHQnCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgcmVkaXMsIGNhc3Nh
bmRyYSwgY2FjaGVfdGltZW91dD02MCAqIDYwICogMjQgKiAyKToKLSAgICAgICAgYXNzZXJ0IHJl
ZGlzCi0gICAgICAgIGFzc2VydCBjYXNzYW5kcmEKLQotICAgICAgICBzZWxmLnJlZGlzID0gcmVk
aXMKLSAgICAgICAgc2VsZi5jYXNzYW5kcmEgPSBjYXNzYW5kcmEKLSAgICAgICAgc2VsZi5yZXBv
c2l0b3JpZXMgPSB7fQotICAgICAgICBzZWxmLmNhY2hlX3RpbWVvdXQgPSBjYWNoZV90aW1lb3V0
Ci0KLSAgICAgICAgd2l0aCBzZWxmOgotICAgICAgICAgICAgc2VsZi5jYXNzYW5kcmEuY3JlYXRl
X3RhYmxlKHNlbGYuQ29tbWl0QnlJRCkKLSAgICAgICAgICAgIHNlbGYuY2Fzc2FuZHJhLmNyZWF0
ZV90YWJsZShzZWxmLkNvbW1pdEJ5VXVpZEFzY2VuZGluZykKLSAgICAgICAgICAgIHNlbGYuY2Fz
c2FuZHJhLmNyZWF0ZV90YWJsZShzZWxmLkNvbW1pdEJ5VXVpZERlc2NlbmRpbmcpCi0gICAgICAg
ICAgICBzZWxmLmNhc3NhbmRyYS5jcmVhdGVfdGFibGUoc2VsZi5CcmFuY2hlcykKLQotICAgIGRl
ZiBfX2VudGVyX18oc2VsZik6Ci0gICAgICAgIHNlbGYuY2Fzc2FuZHJhLl9fZW50ZXJfXygpCi0K
LSAgICBkZWYgX19leGl0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKLSAgICAgICAgc2VsZi5j
YXNzYW5kcmEuX19leGl0X18oKmFyZ3MsICoqa3dhcmdzKQotCi0gICAgQGNsYXNzbWV0aG9kCi0g
ICAgZGVmIHRpbWVzdGFtcF90b191dWlkKGNscywgdGltZXN0YW1wPU5vbmUpOgotICAgICAgICBp
ZiB0aW1lc3RhbXAgaXMgTm9uZToKLSAgICAgICAgICAgIHJldHVybiBpbnQodGltZS50aW1lKCkp
ICogQ29tbWl0LlRJTUVTVEFNUF9UT19VVUlEX01VTFRJUExJRVIKLSAgICAgICAgZWxpZiBpc2lu
c3RhbmNlKHRpbWVzdGFtcCwgZGF0ZXRpbWUpOgotICAgICAgICAgICAgcmV0dXJuIGNhbGVuZGFy
LnRpbWVnbSh0aW1lc3RhbXAudGltZXR1cGxlKCkpICogQ29tbWl0LlRJTUVTVEFNUF9UT19VVUlE
X01VTFRJUExJRVIKLSAgICAgICAgcmV0dXJuIGludCh0aW1lc3RhbXApICogQ29tbWl0LlRJTUVT
VEFNUF9UT19VVUlEX01VTFRJUExJRVIKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBjb252
ZXJ0X3RvX3V1aWQoY2xzLCB2YWx1ZSwgZGVmYXVsdD0wKToKLSAgICAgICAgaWYgdmFsdWUgaXMg
Tm9uZToKLSAgICAgICAgICAgIHJldHVybiBkZWZhdWx0Ci0gICAgICAgIGVsaWYgaXNpbnN0YW5j
ZSh2YWx1ZSwgQ29tbWl0KToKLSAgICAgICAgICAgIHJldHVybiB2YWx1ZS51dWlkCi0gICAgICAg
IGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gY2xzLnRpbWVzdGFtcF90b191dWlkKHZhbHVlKQot
Ci0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHV1aWRfZm9yX2NvbW1pdHMoY2xzLCBjb21taXRz
KToKLSAgICAgICAgcmV0dXJuIG1heChbY29tbWl0LnV1aWQgZm9yIGNvbW1pdCBpbiBjb21taXRz
XSkKLQotICAgIGRlZiBicmFuY2hfa2V5c19mb3JfY29tbWl0cyhzZWxmLCBjb21taXRzKToKLSAg
ICAgICAgYnJhbmNoZXMgPSBzZXQoKQotCi0gICAgICAgICMgVGhpcyBjb3ZlcnMgYSBtb3N0bHkg
dGhlb3JldGljYWwgZWRnZSBjYXNlIHdoZXJlIGEgbXVsdGlwbGUgY29tbWl0cyBhcmUgcHJvdmlk
ZWQgb24gZGlmZmVyZW50IGJyYW5jaGVzLiBJbgotICAgICAgICAjIHRoaXMgY2FzZSwgdHJhY2sg
YnJhbmNoZXMgd2hpY2ggYXJlIG5vdCB0aGUgZGVmYXVsdCBicmFuY2ggaW5kZXBlbmRlbnRseS4K
LSAgICAgICAgZm9yIGNvbW1pdCBpbiBjb21taXRzOgotICAgICAgICAgICAgcmVwbyA9IHNlbGYu
cmVwb3NpdG9yaWVzLmdldChjb21taXQucmVwb3NpdG9yeV9pZCwgUmVwb3NpdG9yeShrZXk9Y29t
bWl0LnJlcG9zaXRvcnlfaWQpKQotICAgICAgICAgICAgaWYgY29tbWl0LmJyYW5jaCAhPSByZXBv
LkRFRkFVTFRfQlJBTkNIOgotICAgICAgICAgICAgICAgIGJyYW5jaGVzLmFkZChjb21taXQuYnJh
bmNoKQotICAgICAgICBpZiBsZW4oYnJhbmNoZXMpID09IDA6Ci0gICAgICAgICAgICBicmFuY2hl
cy5hZGQoc2VsZi5ERUZBVUxUX0JSQU5DSF9LRVkpCi0gICAgICAgIHJldHVybiBsaXN0KGJyYW5j
aGVzKQotCi0gICAgZGVmIHJ1bl9mdW5jdGlvbl90aHJvdWdoX3JlZGlzX2NhY2hlKHNlbGYsIGtl
eSwgZnVuY3Rpb24pOgotICAgICAgICByZXN1bHQgPSBzZWxmLnJlZGlzLmdldCgnY29tbWl0X21h
cHBpbmc6JyArIGtleSkKLSAgICAgICAgaWYgcmVzdWx0OgotICAgICAgICAgICAgdHJ5OgotICAg
ICAgICAgICAgICAgIHJlc3VsdCA9IFtDb21taXQuZnJvbV9qc29uKGVsZW1lbnQpIGZvciBlbGVt
ZW50IGluIGpzb24ubG9hZHMocmVzdWx0KV0KLSAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9y
OgotICAgICAgICAgICAgICAgIHJlc3VsdCA9IE5vbmUKLSAgICAgICAgaWYgcmVzdWx0IGlzIE5v
bmU6Ci0gICAgICAgICAgICByZXN1bHQgPSBmdW5jdGlvbigpCi0gICAgICAgIGlmIHJlc3VsdDoK
LSAgICAgICAgICAgIHNlbGYucmVkaXMuc2V0KCdjb21taXRfbWFwcGluZzonICsga2V5LCBqc29u
LmR1bXBzKHJlc3VsdCwgY2xzPUNvbW1pdC5FbmNvZGVyKSwgZXg9c2VsZi5jYWNoZV90aW1lb3V0
KQotICAgICAgICByZXR1cm4gcmVzdWx0Ci0KLSAgICBkZWYgcmVnaXN0ZXJfcmVwb3NpdG9yeShz
ZWxmLCByZXBvc2l0b3J5KToKLSAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UocmVwb3NpdG9yeSwg
UmVwb3NpdG9yeSk6Ci0gICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoZidFeHBlY3RlZCB0eXBl
IHtSZXBvc2l0b3J5fSwgZ290IHt0eXBlKHJlcG9zaXRvcnkpfScpCi0gICAgICAgIHNlbGYucmVw
b3NpdG9yaWVzW3JlcG9zaXRvcnkua2V5XSA9IHJlcG9zaXRvcnkKLQotICAgIGRlZiBmaW5kX2Nv
bW1pdHNfYnlfaWQoc2VsZiwgcmVwb3NpdG9yeV9pZCwgYnJhbmNoLCBjb21taXRfaWQsIGxpbWl0
PTEwMCk6Ci0gICAgICAgIGlmIGJyYW5jaCBpcyBOb25lOgotICAgICAgICAgICAgYnJhbmNoID0g
c2VsZi5yZXBvc2l0b3JpZXNbcmVwb3NpdG9yeV9pZF0uREVGQVVMVF9CUkFOQ0gKLQotICAgICAg
ICBkZWYgY2FsbGJhY2soY29tbWl0X2lkPWNvbW1pdF9pZCk6Ci0gICAgICAgICAgICB3aXRoIHNl
bGY6Ci0gICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShjb21taXRfaWQsIGludCkgb3IgY29t
bWl0X2lkLmlzZGlnaXQoKToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFttb2RlbC50b19j
b21taXQoKSBmb3IgbW9kZWwgaW4gc2VsZi5jYXNzYW5kcmEuc2VsZWN0X2Zyb21fdGFibGUoCi0g
ICAgICAgICAgICAgICAgICAgICAgICBzZWxmLkNvbW1pdEJ5SUQuX190YWJsZV9uYW1lX18sIGxp
bWl0PWxpbWl0LAotICAgICAgICAgICAgICAgICAgICAgICAgcmVwb3NpdG9yeV9pZD1yZXBvc2l0
b3J5X2lkLCBicmFuY2g9YnJhbmNoLCBjb21taXRfaWQ9c3RyKGNvbW1pdF9pZCksCi0gICAgICAg
ICAgICAgICAgICAgICldCi0KLSAgICAgICAgICAgICAgICAjIEZJWE1FOiBTQVNJIGluZGVjaWVz
IGFyZSB0aGUgY2Fub2ljYWwgd2F5IHRvIHNvbHZlIHRoaXMgcHJvYmxlbSwgYnV0IHJlcXVpcmUg
Q2Fzc2FuZHJhIDMuNCB3aGljaAotICAgICAgICAgICAgICAgICMgaGFzbid0IGJlZW4gZGVwbG95
ZWQgdG8gb3VyIGRhdGFjZW50ZXJzIHlldC4gVGhpcyB3b3JrcyBmb3IgY29tbWl0cywgYnV0IGlz
IGxlc3MgdHJhbnNwYXJlbnQuCi0gICAgICAgICAgICAgICAgcmV0dXJuIFttb2RlbC50b19jb21t
aXQoKSBmb3IgbW9kZWwgaW4gc2VsZi5jYXNzYW5kcmEuc2VsZWN0X2Zyb21fdGFibGUoCi0gICAg
ICAgICAgICAgICAgICAgIHNlbGYuQ29tbWl0QnlJRC5fX3RhYmxlX25hbWVfXywgbGltaXQ9bGlt
aXQsCi0gICAgICAgICAgICAgICAgICAgIHJlcG9zaXRvcnlfaWQ9cmVwb3NpdG9yeV9pZCwgYnJh
bmNoPWJyYW5jaCwgY29tbWl0X2lkX19ndGU9Y29tbWl0X2lkLmxvd2VyKCksIGNvbW1pdF9pZF9f
bHRlPShjb21taXRfaWQubG93ZXIoKSArICdnJyksCi0gICAgICAgICAgICAgICAgKV0KLQotICAg
ICAgICByZXR1cm4gc2VsZi5ydW5fZnVuY3Rpb25fdGhyb3VnaF9yZWRpc19jYWNoZSgKLSAgICAg
ICAgICAgIGYncmVwb3NpdG9yeV9pZD17cmVwb3NpdG9yeV9pZH06YnJhbmNoPXticmFuY2h9OmNv
bW1pdF9pZD17c3RyKGNvbW1pdF9pZCkubG93ZXIoKX0nLAotICAgICAgICAgICAgY2FsbGJhY2ss
Ci0gICAgICAgICkKLQotICAgIGRlZiBmaW5kX2NvbW1pdHNfYnlfdXVpZChzZWxmLCByZXBvc2l0
b3J5X2lkLCBicmFuY2gsIHV1aWQsIGxpbWl0PTEwMCk6Ci0gICAgICAgIGlmIGJyYW5jaCBpcyBO
b25lOgotICAgICAgICAgICAgYnJhbmNoID0gc2VsZi5yZXBvc2l0b3JpZXNbcmVwb3NpdG9yeV9p
ZF0uREVGQVVMVF9CUkFOQ0gKLQotICAgICAgICBkZWYgY2FsbGJhY2soKToKLSAgICAgICAgICAg
IHdpdGggc2VsZjoKLSAgICAgICAgICAgICAgICByZXR1cm4gW21vZGVsLnRvX2NvbW1pdCgpIGZv
ciBtb2RlbCBpbiBzZWxmLmNhc3NhbmRyYS5zZWxlY3RfZnJvbV90YWJsZSgKLSAgICAgICAgICAg
ICAgICAgICAgc2VsZi5Db21taXRCeVV1aWREZXNjZW5kaW5nLl9fdGFibGVfbmFtZV9fLCBsaW1p
dD1saW1pdCwKLSAgICAgICAgICAgICAgICAgICAgcmVwb3NpdG9yeV9pZD1yZXBvc2l0b3J5X2lk
LCBicmFuY2g9YnJhbmNoLCB1dWlkPXV1aWQsCi0gICAgICAgICAgICAgICAgKV0KLQotICAgICAg
ICByZXR1cm4gc2VsZi5ydW5fZnVuY3Rpb25fdGhyb3VnaF9yZWRpc19jYWNoZSgKLSAgICAgICAg
ICAgIGYncmVwb3NpdG9yeV9pZD17cmVwb3NpdG9yeV9pZH06YnJhbmNoPXticmFuY2h9OnV1aWQ9
e3V1aWR9JywKLSAgICAgICAgICAgIGNhbGxiYWNrLAotICAgICAgICApCi0KLSAgICBkZWYgZmlu
ZF9jb21taXRzX2J5X3RpbWVzdGFtcChzZWxmLCByZXBvc2l0b3J5X2lkLCBicmFuY2gsIHRpbWVz
dGFtcCwgbGltaXQ9MTAwKToKLSAgICAgICAgaWYgYnJhbmNoIGlzIE5vbmU6Ci0gICAgICAgICAg
ICBicmFuY2ggPSBzZWxmLnJlcG9zaXRvcmllc1tyZXBvc2l0b3J5X2lkXS5ERUZBVUxUX0JSQU5D
SAotCi0gICAgICAgIGlmIGlzaW5zdGFuY2UodGltZXN0YW1wLCBkYXRldGltZSk6Ci0gICAgICAg
ICAgICB0aW1lc3RhbXAgPSBjYWxlbmRhci50aW1lZ20odGltZXN0YW1wLnRpbWV0dXBsZSgpKQot
ICAgICAgICBlbHNlOgotICAgICAgICAgICAgdGltZXN0YW1wID0gaW50KHRpbWVzdGFtcCkKLQot
ICAgICAgICBkZWYgY2FsbGJhY2soKToKLSAgICAgICAgICAgIHdpdGggc2VsZi5jYXNzYW5kcmE6
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFttb2RlbC50b19jb21taXQoKSBmb3IgbW9kZWwgaW4g
c2VsZi5jYXNzYW5kcmEuc2VsZWN0X2Zyb21fdGFibGUoCi0gICAgICAgICAgICAgICAgICAgIHNl
bGYuQ29tbWl0QnlVdWlkRGVzY2VuZGluZy5fX3RhYmxlX25hbWVfXywgbGltaXQ9bGltaXQsCi0g
ICAgICAgICAgICAgICAgICAgIHJlcG9zaXRvcnlfaWQ9cmVwb3NpdG9yeV9pZCwgYnJhbmNoPWJy
YW5jaCwKLSAgICAgICAgICAgICAgICAgICAgdXVpZF9fZ3RlPXNlbGYudGltZXN0YW1wX3RvX3V1
aWQodGltZXN0YW1wKSwKLSAgICAgICAgICAgICAgICAgICAgdXVpZF9fbHQ9c2VsZi50aW1lc3Rh
bXBfdG9fdXVpZCh0aW1lc3RhbXAgKyAxKSwKLSAgICAgICAgICAgICAgICApXQotCi0gICAgICAg
IHJldHVybiBzZWxmLnJ1bl9mdW5jdGlvbl90aHJvdWdoX3JlZGlzX2NhY2hlKAotICAgICAgICAg
ICAgZidyZXBvc2l0b3J5X2lkPXtyZXBvc2l0b3J5X2lkfTpicmFuY2g9e2JyYW5jaH06dGltZXN0
YW1wPXt0aW1lc3RhbXB9JywKLSAgICAgICAgICAgIGNhbGxiYWNrLAotICAgICAgICApCi0KLSAg
ICBkZWYgZmluZF9jb21taXRzX2luX3JhbmdlKHNlbGYsIHJlcG9zaXRvcnlfaWQsIGJyYW5jaD1O
b25lLCBiZWdpbj1Ob25lLCBlbmQ9Tm9uZSwgbGltaXQ9MTAwKToKLSAgICAgICAgaWYgYnJhbmNo
IGlzIE5vbmU6Ci0gICAgICAgICAgICBicmFuY2ggPSBzZWxmLnJlcG9zaXRvcmllc1tyZXBvc2l0
b3J5X2lkXS5ERUZBVUxUX0JSQU5DSAotCi0gICAgICAgIGJlZ2luID0gc2VsZi5jb252ZXJ0X3Rv
X3V1aWQoYmVnaW4pCi0gICAgICAgIGVuZCA9IHNlbGYuY29udmVydF90b191dWlkKGVuZCwgc2Vs
Zi50aW1lc3RhbXBfdG9fdXVpZCgpKQotCi0gICAgICAgIHdpdGggc2VsZjoKLSAgICAgICAgICAg
IHJldHVybiBbbW9kZWwudG9fY29tbWl0KCkgZm9yIG1vZGVsIGluIHNlbGYuY2Fzc2FuZHJhLnNl
bGVjdF9mcm9tX3RhYmxlKAotICAgICAgICAgICAgICAgIHNlbGYuQ29tbWl0QnlVdWlkRGVzY2Vu
ZGluZy5fX3RhYmxlX25hbWVfXywgbGltaXQ9bGltaXQsCi0gICAgICAgICAgICAgICAgcmVwb3Np
dG9yeV9pZD1yZXBvc2l0b3J5X2lkLCBicmFuY2g9YnJhbmNoLAotICAgICAgICAgICAgICAgIHV1
aWRfX2d0ZT1iZWdpbiwKLSAgICAgICAgICAgICAgICB1dWlkX19sdGU9ZW5kLAotICAgICAgICAg
ICAgKV0KLQotICAgIGRlZiBfYWRqYWNlbnRfY29tbWl0KHNlbGYsIGNvbW1pdCwgYXNjZW5kaW5n
PVRydWUpOgotICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShjb21taXQsIENvbW1pdCk6Ci0gICAg
ICAgICAgICByYWlzZSBUeXBlRXJyb3IoZidFeHBlY3RlZCB0eXBlIHtDb21taXR9LCBnb3Qge3R5
cGUoY29tbWl0KX0nKQotCi0gICAgICAgIHRhYmxlID0gc2VsZi5Db21taXRCeVV1aWRBc2NlbmRp
bmcuX190YWJsZV9uYW1lX18gaWYgYXNjZW5kaW5nIGVsc2Ugc2VsZi5Db21taXRCeVV1aWREZXNj
ZW5kaW5nLl9fdGFibGVfbmFtZV9fCi0KLSAgICAgICAgd2l0aCBzZWxmLmNhc3NhbmRyYToKLSAg
ICAgICAgICAgIGFkamFjZW50X2NvbW1pdHMgPSBbbW9kZWwudG9fY29tbWl0KCkgZm9yIG1vZGVs
IGluIHNlbGYuY2Fzc2FuZHJhLnNlbGVjdF9mcm9tX3RhYmxlKAotICAgICAgICAgICAgICAgIHRh
YmxlLCBsaW1pdD0xLAotICAgICAgICAgICAgICAgIHJlcG9zaXRvcnlfaWQ9Y29tbWl0LnJlcG9z
aXRvcnlfaWQsIGJyYW5jaD1jb21taXQuYnJhbmNoLAotICAgICAgICAgICAgICAgIHV1aWRfX2x0
PXNlbGYudGltZXN0YW1wX3RvX3V1aWQoKSBpZiBhc2NlbmRpbmcgZWxzZSBjb21taXQudXVpZCwK
LSAgICAgICAgICAgICAgICB1dWlkX19ndD1jb21taXQudXVpZCBpZiBhc2NlbmRpbmcgZWxzZSAw
LAotICAgICAgICAgICAgKV0KLSAgICAgICAgICAgIGlmIGxlbihhZGphY2VudF9jb21taXRzKSA9
PSAwOgotICAgICAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgICAgICByZXR1cm4gYWRq
YWNlbnRfY29tbWl0c1swXQotCi0gICAgZGVmIG5leHRfY29tbWl0KHNlbGYsIGNvbW1pdCk6Ci0g
ICAgICAgIHJldHVybiBzZWxmLl9hZGphY2VudF9jb21taXQoY29tbWl0LCBhc2NlbmRpbmc9VHJ1
ZSkKLQotICAgIGRlZiBwcmV2aW91c19jb21taXQoc2VsZiwgY29tbWl0KToKLSAgICAgICAgcmV0
dXJuIHNlbGYuX2FkamFjZW50X2NvbW1pdChjb21taXQsIGFzY2VuZGluZz1GYWxzZSkKLQotICAg
IGRlZiBzaWJsaW5nX2NvbW1pdHMoc2VsZiwgY29tbWl0LCByZXBvc2l0b3J5X2lkcyk6Ci0gICAg
ICAgIGlmIG5vdCBpc2luc3RhbmNlKGNvbW1pdCwgQ29tbWl0KToKLSAgICAgICAgICAgIHJhaXNl
IFR5cGVFcnJvcihmJ0V4cGVjdGVkIHR5cGUge0NvbW1pdH0sIGdvdCB7dHlwZShjb21taXQpfScp
Ci0KLSAgICAgICAgYmVnaW5fdGltZXN0YW1wX3V1aWQgPSBzZWxmLnRpbWVzdGFtcF90b191dWlk
KGNvbW1pdC50aW1lc3RhbXApCi0gICAgICAgIGVuZF90aW1lc3RhbXBfdXVpZCA9IHNlbGYudGlt
ZXN0YW1wX3RvX3V1aWQoKQotCi0gICAgICAgIHdpdGggc2VsZi5jYXNzYW5kcmE6Ci0gICAgICAg
ICAgICBuZXh0X2NvbW1pdCA9IHNlbGYubmV4dF9jb21taXQoY29tbWl0KQotICAgICAgICAgICAg
aWYgbmV4dF9jb21taXQ6Ci0gICAgICAgICAgICAgICAgZW5kX3RpbWVzdGFtcF91dWlkID0gc2Vs
Zi50aW1lc3RhbXBfdG9fdXVpZChuZXh0X2NvbW1pdC50aW1lc3RhbXApCi0KLSAgICAgICAgICAg
IHNpYmxpbmdzID0ge30KLSAgICAgICAgICAgIGZvciBpZCBpbiByZXBvc2l0b3J5X2lkczoKLSAg
ICAgICAgICAgICAgICBzaWJsaW5nc1tpZF0gPSBbXQotICAgICAgICAgICAgICAgIGlmIGlkIG5v
dCBpbiBzZWxmLnJlcG9zaXRvcmllczoKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKLQot
ICAgICAgICAgICAgICAgIGlmIGNvbW1pdC5icmFuY2ggPT0gc2VsZi5yZXBvc2l0b3JpZXNbY29t
bWl0LnJlcG9zaXRvcnlfaWRdLkRFRkFVTFRfQlJBTkNIIG9yIG5vdCBzZWxmLmJyYW5jaGVzKGlk
LCBjb21taXQuYnJhbmNoKToKLSAgICAgICAgICAgICAgICAgICAgYnJhbmNoID0gc2VsZi5yZXBv
c2l0b3JpZXNbaWRdLkRFRkFVTFRfQlJBTkNICi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAg
ICAgICAgICAgICAgICAgYnJhbmNoID0gY29tbWl0LmJyYW5jaAotCi0gICAgICAgICAgICAgICAg
c2libGluZ3NbaWRdID0gW21vZGVsLnRvX2NvbW1pdCgpIGZvciBtb2RlbCBpbiBzZWxmLmNhc3Nh
bmRyYS5zZWxlY3RfZnJvbV90YWJsZSgKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5Db21taXRC
eVV1aWREZXNjZW5kaW5nLl9fdGFibGVfbmFtZV9fLAotICAgICAgICAgICAgICAgICAgICByZXBv
c2l0b3J5X2lkPWlkLCBicmFuY2g9YnJhbmNoLAotICAgICAgICAgICAgICAgICAgICB1dWlkX19n
dD1iZWdpbl90aW1lc3RhbXBfdXVpZCwKLSAgICAgICAgICAgICAgICAgICAgdXVpZF9fbHQ9ZW5k
X3RpbWVzdGFtcF91dWlkLAotICAgICAgICAgICAgICAgICldCi0gICAgICAgICAgICAgICAgcHJl
dmlvdXMgPSBbbW9kZWwudG9fY29tbWl0KCkgZm9yIG1vZGVsIGluIHNlbGYuY2Fzc2FuZHJhLnNl
bGVjdF9mcm9tX3RhYmxlKAotICAgICAgICAgICAgICAgICAgICBzZWxmLkNvbW1pdEJ5VXVpZERl
c2NlbmRpbmcuX190YWJsZV9uYW1lX18sIGxpbWl0PTEsCi0gICAgICAgICAgICAgICAgICAgIHJl
cG9zaXRvcnlfaWQ9aWQsIGJyYW5jaD1icmFuY2gsCi0gICAgICAgICAgICAgICAgICAgIHV1aWRf
X2x0ZT1iZWdpbl90aW1lc3RhbXBfdXVpZCwKLSAgICAgICAgICAgICAgICApXQotICAgICAgICAg
ICAgICAgIGlmIHByZXZpb3VzOgotICAgICAgICAgICAgICAgICAgICBzaWJsaW5nc1tpZF0uYXBw
ZW5kKHByZXZpb3VzWzBdKQotICAgICAgICAgICAgcmV0dXJuIHNpYmxpbmdzCi0KLSAgICBkZWYg
YnJhbmNoZXMoc2VsZiwgcmVwb3NpdG9yeV9pZCwgYnJhbmNoPU5vbmUsIGxpbWl0PTEwMCk6Ci0g
ICAgICAgIHdpdGggc2VsZjoKLSAgICAgICAgICAgIGlmIGJyYW5jaDoKLSAgICAgICAgICAgICAg
ICAjIEZJWE1FOiBTQVNJIGluZGVjaWVzIGFyZSB0aGUgY2Fub2ljYWwgd2F5IHRvIHNvbHZlIHRo
aXMgcHJvYmxlbSwgYnV0IHJlcXVpcmUgQ2Fzc2FuZHJhIDMuNCB3aGljaAotICAgICAgICAgICAg
ICAgICMgaGFzbid0IGJlZW4gZGVwbG95ZWQgdG8gb3VyIGRhdGFjZW50ZXJzIHlldC4gVGhpcyB3
b3JrcyBmb3IgYnJhbmNoZXMsIGJ1dCBpcyBsZXNzIHRyYW5zcGFyZW50LgotICAgICAgICAgICAg
ICAgIHJldHVybiBbbW9kZWwuYnJhbmNoIGZvciBtb2RlbCBpbiBzZWxmLmNhc3NhbmRyYS5zZWxl
Y3RfZnJvbV90YWJsZSgKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5CcmFuY2hlcy5fX3RhYmxl
X25hbWVfXywgbGltaXQ9bGltaXQsCi0gICAgICAgICAgICAgICAgICAgIHJlcG9zaXRvcnlfaWQ9
cmVwb3NpdG9yeV9pZCwgYnJhbmNoX19ndGU9YnJhbmNoLCBicmFuY2hfX2x0ZT0oYnJhbmNoICsg
J34nKSwKLSAgICAgICAgICAgICAgICApXQotCi0gICAgICAgICAgICByZXR1cm4gW21vZGVsLmJy
YW5jaCBmb3IgbW9kZWwgaW4gc2VsZi5jYXNzYW5kcmEuc2VsZWN0X2Zyb21fdGFibGUoCi0gICAg
ICAgICAgICAgICAgc2VsZi5CcmFuY2hlcy5fX3RhYmxlX25hbWVfXywgbGltaXQ9bGltaXQsIHJl
cG9zaXRvcnlfaWQ9cmVwb3NpdG9yeV9pZCwKLSAgICAgICAgICAgICldCi0KLSAgICBkZWYgcmVn
aXN0ZXJfY29tbWl0KHNlbGYsIGNvbW1pdCk6Ci0gICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGNv
bW1pdCwgQ29tbWl0KToKLSAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcihmJ0V4cGVjdGVkIHR5
cGUge0NvbW1pdH0sIGdvdCB7dHlwZShjb21taXQpfScpCi0KLSAgICAgICAgd2l0aCBzZWxmOgot
ICAgICAgICAgICAgaWYgY29tbWl0LnJlcG9zaXRvcnlfaWQgbm90IGluIHNlbGYucmVwb3NpdG9y
aWVzOgotICAgICAgICAgICAgICAgIHNlbGYucmVwb3NpdG9yaWVzW2NvbW1pdC5yZXBvc2l0b3J5
X2lkXSA9IFJlcG9zaXRvcnkoa2V5PWNvbW1pdC5yZXBvc2l0b3J5X2lkKQotCi0gICAgICAgICAg
ICBmb3IgdGFibGUgaW4gW3NlbGYuQ29tbWl0QnlJRCwgc2VsZi5Db21taXRCeVV1aWRBc2NlbmRp
bmcsIHNlbGYuQ29tbWl0QnlVdWlkRGVzY2VuZGluZ106Ci0gICAgICAgICAgICAgICAgc2VsZi5j
YXNzYW5kcmEuaW5zZXJ0X3JvdygKLSAgICAgICAgICAgICAgICAgICAgdGFibGUuX190YWJsZV9u
YW1lX18sCi0gICAgICAgICAgICAgICAgICAgIHJlcG9zaXRvcnlfaWQ9Y29tbWl0LnJlcG9zaXRv
cnlfaWQsIGJyYW5jaD1jb21taXQuYnJhbmNoLAotICAgICAgICAgICAgICAgICAgICBjb21taXRf
aWQ9c3RyKGNvbW1pdC5pZCkubG93ZXIoKSwgdXVpZD1jb21taXQudXVpZCwKLSAgICAgICAgICAg
ICAgICAgICAgY29tbWl0dGVyPWNvbW1pdC5jb21taXR0ZXIsIG1lc3NhZ2U9Y29tbWl0Lm1lc3Nh
Z2UsCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgc2VsZi5jYXNzYW5kcmEuaW5zZXJ0
X3JvdygKLSAgICAgICAgICAgICAgICBzZWxmLkJyYW5jaGVzLl9fdGFibGVfbmFtZV9fLAotICAg
ICAgICAgICAgICAgIHJlcG9zaXRvcnlfaWQ9Y29tbWl0LnJlcG9zaXRvcnlfaWQsIGJyYW5jaD1j
b21taXQuYnJhbmNoLAotICAgICAgICAgICAgKQotICAgICAgICAgICAgcmV0dXJuIGNvbW1pdAot
Ci0gICAgZGVmIHJlZ2lzdGVyX2NvbW1pdF93aXRoX3JlcG9fYW5kX2lkKHNlbGYsIHJlcG9zaXRv
cnlfaWQsIGJyYW5jaCwgY29tbWl0X2lkKToKLSAgICAgICAgaWYgYnJhbmNoIGlzIE5vbmU6Ci0g
ICAgICAgICAgICBicmFuY2ggPSBzZWxmLnJlcG9zaXRvcmllc1tyZXBvc2l0b3J5X2lkXS5ERUZB
VUxUX0JSQU5DSAotICAgICAgICBpZiByZXBvc2l0b3J5X2lkIG5vdCBpbiBzZWxmLnJlcG9zaXRv
cmllczoKLSAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigne30gaXMgbm90IGEgcmVjb2du
aXplZCByZXBvc2l0b3J5JykKLQotICAgICAgICB3aXRoIHNlbGY6Ci0gICAgICAgICAgICBjb21t
aXRzID0gc2VsZi5maW5kX2NvbW1pdHNfYnlfaWQocmVwb3NpdG9yeV9pZD1yZXBvc2l0b3J5X2lk
LCBicmFuY2g9YnJhbmNoLCBjb21taXRfaWQ9Y29tbWl0X2lkKQotICAgICAgICAgICAgaWYgbGVu
KGNvbW1pdHMpID4gMToKLSAgICAgICAgICAgICAgICByYWlzZSBTQ01FeGNlcHRpb24oZidNdWx0
aXBsZSBjb21taXRzIHdpdGggdGhlIGlkIHtjb21taXRfaWR9IGV4aXN0IGluIHtyZXBvc2l0b3J5
X2lkfSBvbiB7YnJhbmNofScpCi0gICAgICAgICAgICBpZiBjb21taXRzOgotICAgICAgICAgICAg
ICAgIHJldHVybiBjb21taXRzWzBdCi0gICAgICAgICAgICBjb21taXQgPSBzZWxmLnJlcG9zaXRv
cmllc1tyZXBvc2l0b3J5X2lkXS5jb21taXRfZm9yX2lkKGNvbW1pdF9pZCwgYnJhbmNoKQotICAg
ICAgICAgICAgcmV0dXJuIHNlbGYucmVnaXN0ZXJfY29tbWl0KGNvbW1pdCkKLQotICAgIGRlZiB1
cmwoc2VsZiwgY29tbWl0KToKLSAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoY29tbWl0LCBDb21t
aXQpOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKGYnRXhwZWN0ZWQgdHlwZSB7Q29tbWl0
fSwgZ290IHt0eXBlKGNvbW1pdCl9JykKLQotICAgICAgICByZXBvID0gc2VsZi5yZXBvc2l0b3Jp
ZXMuZ2V0KGNvbW1pdC5yZXBvc2l0b3J5X2lkKQotICAgICAgICBpZiByZXBvOgotICAgICAgICAg
ICAgcmV0dXJuIHJlcG8udXJsX2Zvcl9jb21taXQoY29tbWl0LmlkKQotICAgICAgICByZXR1cm4g
Tm9uZQpJbmRleDogVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvY29tbWl0X2Nv
bnRleHRfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0
c2RicHkvbW9kZWwvY29tbWl0X2NvbnRleHRfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI2NTUzMSkK
KysrIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL2NvbW1pdF9jb250ZXh0X3Vu
aXR0ZXN0LnB5CShub25leGlzdGVudCkKQEAgLTEsMjgyICswLDAgQEAKLSMgQ29weXJpZ2h0IChD
KSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0j
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUgotIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0jIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSCi0jIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0jIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLWZyb20gcmVkaXMgaW1wb3J0IFN0cmljdFJlZGlzCi1m
cm9tIGZha2VyZWRpcyBpbXBvcnQgRmFrZVN0cmljdFJlZGlzCi1mcm9tIHJlc3VsdHNkYnB5Lm1v
ZGVsLmNhc3NhbmRyYV9jb250ZXh0IGltcG9ydCBDYXNzYW5kcmFDb250ZXh0Ci1mcm9tIHJlc3Vs
dHNkYnB5Lm1vZGVsLmNvbW1pdF9jb250ZXh0IGltcG9ydCBDb21taXRDb250ZXh0Ci1mcm9tIHJl
c3VsdHNkYnB5Lm1vZGVsLm1vY2tfY2Fzc2FuZHJhX2NvbnRleHQgaW1wb3J0IE1vY2tDYXNzYW5k
cmFDb250ZXh0Ci1mcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLm1vY2tfcmVwb3NpdG9yeSBpbXBvcnQg
TW9ja1N0YXNoUmVwb3NpdG9yeSwgTW9ja1NWTlJlcG9zaXRvcnkKLWZyb20gcmVzdWx0c2RicHku
bW9kZWwud2FpdF9mb3JfZG9ja2VyX3Rlc3RfY2FzZSBpbXBvcnQgV2FpdEZvckRvY2tlclRlc3RD
YXNlCi0KLQotY2xhc3MgQ29tbWl0Q29udGV4dFRlc3QoV2FpdEZvckRvY2tlclRlc3RDYXNlKToK
LSAgICBLRVlTUEFDRSA9ICdjb21taXRfbWFwcGluZ190ZXN0X2tleXNwYWNlJwotCi0gICAgZGVm
IGluaXRfZGF0YWJhc2Uoc2VsZiwgcmVkaXM9U3RyaWN0UmVkaXMsIGNhc3NhbmRyYT1DYXNzYW5k
cmFDb250ZXh0KToKLSAgICAgICAgcmVkaXNfaW5zdGFuY2UgPSByZWRpcygpCi0KLSAgICAgICAg
c2VsZi5zdGFzaF9yZXBvc2l0b3J5ID0gTW9ja1N0YXNoUmVwb3NpdG9yeS5zYWZhcmkocmVkaXNf
aW5zdGFuY2UpCi0gICAgICAgIHNlbGYuc3ZuX3JlcG9zaXRvcnkgPSBNb2NrU1ZOUmVwb3NpdG9y
eS53ZWJraXQocmVkaXNfaW5zdGFuY2UpCi0KLSAgICAgICAgY2Fzc2FuZHJhLmRyb3Bfa2V5c3Bh
Y2Uoa2V5c3BhY2U9c2VsZi5LRVlTUEFDRSkKLSAgICAgICAgc2VsZi5kYXRhYmFzZSA9IENvbW1p
dENvbnRleHQoCi0gICAgICAgICAgICByZWRpcz1yZWRpc19pbnN0YW5jZSwKLSAgICAgICAgICAg
IGNhc3NhbmRyYT1jYXNzYW5kcmEoa2V5c3BhY2U9c2VsZi5LRVlTUEFDRSwgY3JlYXRlX2tleXNw
YWNlPVRydWUpLAotICAgICAgICApCi0gICAgICAgIHNlbGYuZGF0YWJhc2UucmVnaXN0ZXJfcmVw
b3NpdG9yeShzZWxmLnN0YXNoX3JlcG9zaXRvcnkpCi0gICAgICAgIHNlbGYuZGF0YWJhc2UucmVn
aXN0ZXJfcmVwb3NpdG9yeShzZWxmLnN2bl9yZXBvc2l0b3J5KQotCi0gICAgZGVmIGFkZF9hbGxf
Y29tbWl0c190b19kYXRhYmFzZShzZWxmKToKLSAgICAgICAgZm9yIG1vY2tfcmVwb3NpdG9yeSBp
biBbc2VsZi5zdGFzaF9yZXBvc2l0b3J5LCBzZWxmLnN2bl9yZXBvc2l0b3J5XToKLSAgICAgICAg
ICAgIGZvciBjb21taXRfbGlzdCBpbiBtb2NrX3JlcG9zaXRvcnkuY29tbWl0cy52YWx1ZXMoKToK
LSAgICAgICAgICAgICAgICBmb3IgY29tbWl0IGluIGNvbW1pdF9saXN0OgotICAgICAgICAgICAg
ICAgICAgICBzZWxmLmRhdGFiYXNlLnJlZ2lzdGVyX2NvbW1pdChjb21taXQpCi0KLSAgICBAV2Fp
dEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmlj
dFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKLSAgICBkZWYgdGVz
dF92ZXJpZnlfdGFibGUoc2VsZiwgcmVkaXM9U3RyaWN0UmVkaXMsIGNhc3NhbmRyYT1DYXNzYW5k
cmFDb250ZXh0KToKLSAgICAgICAgc2VsZi5pbml0X2RhdGFiYXNlKHJlZGlzPXJlZGlzLCBjYXNz
YW5kcmE9Y2Fzc2FuZHJhKQotICAgICAgICBDb21taXRDb250ZXh0KHJlZGlzPXJlZGlzKCksIGNh
c3NhbmRyYT1jYXNzYW5kcmEoa2V5c3BhY2U9c2VsZi5LRVlTUEFDRSkpCi0KLSAgICBAV2FpdEZv
ckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJl
ZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKLSAgICBkZWYgdGVzdF9j
b21taXRfYnlfaWQoc2VsZiwgcmVkaXM9U3RyaWN0UmVkaXMsIGNhc3NhbmRyYT1DYXNzYW5kcmFD
b250ZXh0KToKLSAgICAgICAgc2VsZi5pbml0X2RhdGFiYXNlKHJlZGlzPXJlZGlzLCBjYXNzYW5k
cmE9Y2Fzc2FuZHJhKQotICAgICAgICBzZWxmLmFkZF9hbGxfY29tbWl0c190b19kYXRhYmFzZSgp
Ci0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIFtzZWxmLnN0YXNoX3Jl
cG9zaXRvcnkuY29tbWl0X2Zvcl9pZChpZD0nYmI2YmRhNWY0NCcsIGJyYW5jaD0nbWFzdGVyJyld
LAotICAgICAgICAgICAgc2VsZi5kYXRhYmFzZS5maW5kX2NvbW1pdHNfYnlfaWQocmVwb3NpdG9y
eV9pZD0nc2FmYXJpJywgYnJhbmNoPSdtYXN0ZXInLCBjb21taXRfaWQ9J2JiNmJkYTVmNDQnKSwK
LSAgICAgICAgKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDIsIGxlbihzZWxmLmRhdGFiYXNl
LmZpbmRfY29tbWl0c19ieV9pZChyZXBvc2l0b3J5X2lkPSdzYWZhcmknLCBicmFuY2g9J21hc3Rl
cicsIGNvbW1pdF9pZD0nMzM2NjEwYScpKSkKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAot
ICAgICAgICAgICAgW3NlbGYuc3ZuX3JlcG9zaXRvcnkuY29tbWl0X2Zvcl9pZChpZD0yMzY1NDQs
IGJyYW5jaD0ndHJ1bmsnKV0sCi0gICAgICAgICAgICBzZWxmLmRhdGFiYXNlLmZpbmRfY29tbWl0
c19ieV9pZChyZXBvc2l0b3J5X2lkPSd3ZWJraXQnLCBicmFuY2g9J3RydW5rJywgY29tbWl0X2lk
PTIzNjU0NCksCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBsZW4oc2Vs
Zi5kYXRhYmFzZS5maW5kX2NvbW1pdHNfYnlfaWQocmVwb3NpdG9yeV9pZD0nd2Via2l0JywgYnJh
bmNoPSd0cnVuaycsIGNvbW1pdF9pZD0nMjM2NTQnKSkpCi0KLSAgICBAV2FpdEZvckRvY2tlclRl
c3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2Nr
X2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKLSAgICBkZWYgdGVzdF9jb21taXRfYnlf
dXVpZChzZWxmLCByZWRpcz1TdHJpY3RSZWRpcywgY2Fzc2FuZHJhPUNhc3NhbmRyYUNvbnRleHQp
OgotICAgICAgICBzZWxmLmluaXRfZGF0YWJhc2UocmVkaXM9cmVkaXMsIGNhc3NhbmRyYT1jYXNz
YW5kcmEpCi0gICAgICAgIHNlbGYuYWRkX2FsbF9jb21taXRzX3RvX2RhdGFiYXNlKCkKLQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgW3NlbGYuc3Rhc2hfcmVwb3NpdG9y
eS5jb21taXRfZm9yX2lkKGlkPSc3YmU0MDg0MjU4JywgYnJhbmNoPSdtYXN0ZXInKV0sCi0gICAg
ICAgICAgICBzZWxmLmRhdGFiYXNlLmZpbmRfY29tbWl0c19ieV91dWlkKHJlcG9zaXRvcnlfaWQ9
J3NhZmFyaScsIGJyYW5jaD0nbWFzdGVyJywgdXVpZD0xNTM3NTUwNjg1MDEpLAotICAgICAgICAp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBbc2VsZi5zdm5fcmVwb3Np
dG9yeS5jb21taXRfZm9yX2lkKGlkPTIzNjU0MCwgYnJhbmNoPSd0cnVuaycpXSwKLSAgICAgICAg
ICAgIHNlbGYuZGF0YWJhc2UuZmluZF9jb21taXRzX2J5X3V1aWQocmVwb3NpdG9yeV9pZD0nd2Vi
a2l0JywgYnJhbmNoPSd0cnVuaycsIHV1aWQ9MTUzODAyOTQ3OTAwKSwKLSAgICAgICAgKQotCi0g
ICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZh
a2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCi0gICAg
ZGVmIHRlc3RfY29tbWl0X2J5X3RpbWVzdGFtcChzZWxmLCByZWRpcz1TdHJpY3RSZWRpcywgY2Fz
c2FuZHJhPUNhc3NhbmRyYUNvbnRleHQpOgotICAgICAgICBzZWxmLmluaXRfZGF0YWJhc2UocmVk
aXM9cmVkaXMsIGNhc3NhbmRyYT1jYXNzYW5kcmEpCi0gICAgICAgIHNlbGYuYWRkX2FsbF9jb21t
aXRzX3RvX2RhdGFiYXNlKCkKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAg
ICAgW3NlbGYuc3Rhc2hfcmVwb3NpdG9yeS5jb21taXRfZm9yX2lkKGlkPSczMzY2MTBhODRmJywg
YnJhbmNoPSdtYXN0ZXInKV0sCi0gICAgICAgICAgICBzZWxmLmRhdGFiYXNlLmZpbmRfY29tbWl0
c19ieV90aW1lc3RhbXAocmVwb3NpdG9yeV9pZD0nc2FmYXJpJywgYnJhbmNoPSdtYXN0ZXInLCB0
aW1lc3RhbXA9MTUzNzgwOTgxOCksCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgKLSAgICAgICAgICAgIFtzZWxmLnN2bl9yZXBvc2l0b3J5LmNvbW1pdF9mb3JfaWQoaWQ9MjM2
NTQwLCBicmFuY2g9J3RydW5rJyldLAotICAgICAgICAgICAgc2VsZi5kYXRhYmFzZS5maW5kX2Nv
bW1pdHNfYnlfdGltZXN0YW1wKHJlcG9zaXRvcnlfaWQ9J3dlYmtpdCcsIGJyYW5jaD0ndHJ1bmsn
LCB0aW1lc3RhbXA9MTUzODAyOTQ3OSksCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgyLCBsZW4oc2VsZi5kYXRhYmFzZS5maW5kX2NvbW1pdHNfYnlfdGltZXN0YW1wKHJlcG9z
aXRvcnlfaWQ9J3NhZmFyaScsIGJyYW5jaD0nbWFzdGVyJywgdGltZXN0YW1wPTE1Mzc1NTA2ODUp
KSkKLQotICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19y
ZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0
KQotICAgIGRlZiB0ZXN0X2FsbF9jb21taXRzX3N0YXNoKHNlbGYsIHJlZGlzPVN0cmljdFJlZGlz
LCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCk6Ci0gICAgICAgIHNlbGYuaW5pdF9kYXRhYmFz
ZShyZWRpcz1yZWRpcywgY2Fzc2FuZHJhPWNhc3NhbmRyYSkKLSAgICAgICAgc2VsZi5hZGRfYWxs
X2NvbW1pdHNfdG9fZGF0YWJhc2UoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDUsIGxlbihz
ZWxmLmRhdGFiYXNlLmZpbmRfY29tbWl0c19pbl9yYW5nZShyZXBvc2l0b3J5X2lkPSdzYWZhcmkn
LCBicmFuY2g9J21hc3RlcicpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAg
ICAgIFtzZWxmLnN0YXNoX3JlcG9zaXRvcnkuY29tbWl0X2Zvcl9pZChpZD0nYmI2YmRhNWY0NCcs
IGJyYW5jaD0nbWFzdGVyJyksIHNlbGYuc3Rhc2hfcmVwb3NpdG9yeS5jb21taXRfZm9yX2lkKGlk
PSczMzY2MTBhODRmJywgYnJhbmNoPSdtYXN0ZXInKV0sCi0gICAgICAgICAgICBzZWxmLmRhdGFi
YXNlLmZpbmRfY29tbWl0c19pbl9yYW5nZShyZXBvc2l0b3J5X2lkPSdzYWZhcmknLCBicmFuY2g9
J21hc3RlcicsIGxpbWl0PTIpLAotICAgICAgICApCi0KLSAgICBAV2FpdEZvckRvY2tlclRlc3RD
YXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nh
c3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKLSAgICBkZWYgdGVzdF9hbGxfY29tbWl0c19z
dm4oc2VsZiwgcmVkaXM9U3RyaWN0UmVkaXMsIGNhc3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0KToK
LSAgICAgICAgc2VsZi5pbml0X2RhdGFiYXNlKHJlZGlzPXJlZGlzLCBjYXNzYW5kcmE9Y2Fzc2Fu
ZHJhKQotICAgICAgICBzZWxmLmFkZF9hbGxfY29tbWl0c190b19kYXRhYmFzZSgpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoNSwgbGVuKHNlbGYuZGF0YWJhc2UuZmluZF9jb21taXRzX2luX3Jh
bmdlKHJlcG9zaXRvcnlfaWQ9J3dlYmtpdCcsIGJyYW5jaD0ndHJ1bmsnKSkpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBbc2VsZi5zdm5fcmVwb3NpdG9yeS5jb21taXRf
Zm9yX2lkKGlkPTIzNjU0NCwgYnJhbmNoPSd0cnVuaycpLCBzZWxmLnN2bl9yZXBvc2l0b3J5LmNv
bW1pdF9mb3JfaWQoaWQ9MjM2NTQzLCBicmFuY2g9J3RydW5rJyldLAotICAgICAgICAgICAgc2Vs
Zi5kYXRhYmFzZS5maW5kX2NvbW1pdHNfaW5fcmFuZ2UocmVwb3NpdG9yeV9pZD0nd2Via2l0Jywg
YnJhbmNoPSd0cnVuaycsIGxpbWl0PTIpLAotICAgICAgICApCi0KLSAgICBAV2FpdEZvckRvY2tl
clRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBt
b2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKLSAgICBkZWYgdGVzdF9zdGFzaF9j
b21taXRzX2luX3JhbmdlKHNlbGYsIHJlZGlzPVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fzc2Fu
ZHJhQ29udGV4dCk6Ci0gICAgICAgIHNlbGYuaW5pdF9kYXRhYmFzZShyZWRpcz1yZWRpcywgY2Fz
c2FuZHJhPWNhc3NhbmRyYSkKLSAgICAgICAgc2VsZi5hZGRfYWxsX2NvbW1pdHNfdG9fZGF0YWJh
c2UoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgW3NlbGYuc3Rhc2hf
cmVwb3NpdG9yeS5jb21taXRfZm9yX2lkKGlkPSdiYjZiZGE1ZjQ0JywgYnJhbmNoPSdtYXN0ZXIn
KSwgc2VsZi5zdGFzaF9yZXBvc2l0b3J5LmNvbW1pdF9mb3JfaWQoaWQ9JzMzNjYxMGE4NGYnLCBi
cmFuY2g9J21hc3RlcicpXSwKLSAgICAgICAgICAgIHNlbGYuZGF0YWJhc2UuZmluZF9jb21taXRz
X2luX3JhbmdlKHJlcG9zaXRvcnlfaWQ9J3NhZmFyaScsIGJyYW5jaD0nbWFzdGVyJywgYmVnaW49
MTUzNzgwOTgxOCwgZW5kPTE1Mzc4MTAyODEpLAotICAgICAgICApCi0KLSAgICBAV2FpdEZvckRv
Y2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlz
LCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKLSAgICBkZWYgdGVzdF9zdm5f
Y29tbWl0c19pbl9yYW5nZShzZWxmLCByZWRpcz1TdHJpY3RSZWRpcywgY2Fzc2FuZHJhPUNhc3Nh
bmRyYUNvbnRleHQpOgotICAgICAgICBzZWxmLmluaXRfZGF0YWJhc2UocmVkaXM9cmVkaXMsIGNh
c3NhbmRyYT1jYXNzYW5kcmEpCi0gICAgICAgIHNlbGYuYWRkX2FsbF9jb21taXRzX3RvX2RhdGFi
YXNlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIFtzZWxmLnN2bl9y
ZXBvc2l0b3J5LmNvbW1pdF9mb3JfaWQoaWQ9MjM2NTQ0LCBicmFuY2g9J3RydW5rJyksIHNlbGYu
c3ZuX3JlcG9zaXRvcnkuY29tbWl0X2Zvcl9pZChpZD0yMzY1NDMsIGJyYW5jaD0ndHJ1bmsnKV0s
Ci0gICAgICAgICAgICBzZWxmLmRhdGFiYXNlLmZpbmRfY29tbWl0c19pbl9yYW5nZShyZXBvc2l0
b3J5X2lkPSd3ZWJraXQnLCBicmFuY2g9J3RydW5rJywgYmVnaW49MTUzODA1MDQ1OCwgZW5kPTE1
MzgwNTI0MDgpLAotICAgICAgICApCi0KLSAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tf
aWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1N
b2NrQ2Fzc2FuZHJhQ29udGV4dCkKLSAgICBkZWYgdGVzdF9zdGFzaF9jb21taXRzX2JldHdlZW4o
c2VsZiwgcmVkaXM9U3RyaWN0UmVkaXMsIGNhc3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0KToKLSAg
ICAgICAgc2VsZi5pbml0X2RhdGFiYXNlKHJlZGlzPXJlZGlzLCBjYXNzYW5kcmE9Y2Fzc2FuZHJh
KQotICAgICAgICBzZWxmLmFkZF9hbGxfY29tbWl0c190b19kYXRhYmFzZSgpCi0KLSAgICAgICAg
Y29tbWl0cyA9IFsKLSAgICAgICAgICAgIHNlbGYuc3Rhc2hfcmVwb3NpdG9yeS5jb21taXRfZm9y
X2lkKGlkPSdiYjZiZGE1ZicsIGJyYW5jaD0nbWFzdGVyJyksCi0gICAgICAgICAgICBzZWxmLnN0
YXNoX3JlcG9zaXRvcnkuY29tbWl0X2Zvcl9pZChpZD0nMzM2NjEwYTgnLCBicmFuY2g9J21hc3Rl
cicpLAotICAgICAgICAgICAgc2VsZi5zdGFzaF9yZXBvc2l0b3J5LmNvbW1pdF9mb3JfaWQoaWQ9
JzMzNjYxMGE0JywgYnJhbmNoPSdtYXN0ZXInKSwKLSAgICAgICAgXQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGNvbW1pdHMsIHNlbGYuZGF0YWJhc2UuZmluZF9jb21taXRzX2luX3JhbmdlKHJl
cG9zaXRvcnlfaWQ9J3NhZmFyaScsIGJyYW5jaD0nbWFzdGVyJywgIGJlZ2luPWNvbW1pdHNbLTFd
LCBlbmQ9Y29tbWl0c1swXSkpCi0KLSAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZf
bm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2Nr
Q2Fzc2FuZHJhQ29udGV4dCkKLSAgICBkZWYgdGVzdF9zdm5fY29tbWl0c19iZXR3ZWVuKHNlbGYs
IHJlZGlzPVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCk6Ci0gICAgICAg
IHNlbGYuaW5pdF9kYXRhYmFzZShyZWRpcz1yZWRpcywgY2Fzc2FuZHJhPWNhc3NhbmRyYSkKLSAg
ICAgICAgc2VsZi5hZGRfYWxsX2NvbW1pdHNfdG9fZGF0YWJhc2UoKQotCi0gICAgICAgIGNvbW1p
dHMgPSBbCi0gICAgICAgICAgICBzZWxmLnN2bl9yZXBvc2l0b3J5LmNvbW1pdF9mb3JfaWQoaWQ9
MjM2NTQ0LCBicmFuY2g9J3RydW5rJyksCi0gICAgICAgICAgICBzZWxmLnN2bl9yZXBvc2l0b3J5
LmNvbW1pdF9mb3JfaWQoaWQ9MjM2NTQzLCBicmFuY2g9J3RydW5rJyksCi0gICAgICAgICAgICBz
ZWxmLnN2bl9yZXBvc2l0b3J5LmNvbW1pdF9mb3JfaWQoaWQ9MjM2NTQyLCBicmFuY2g9J3RydW5r
JyksCi0gICAgICAgIF0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21taXRzLCBzZWxmLmRh
dGFiYXNlLmZpbmRfY29tbWl0c19pbl9yYW5nZShyZXBvc2l0b3J5X2lkPSd3ZWJraXQnLCBicmFu
Y2g9J3RydW5rJywgYmVnaW49Y29tbWl0c1stMV0sIGVuZD1jb21taXRzWzBdKSkKLQotICAgIEBX
YWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3Ry
aWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQotICAgIGRlZiB0
ZXN0X2NvbW1pdF9mcm9tX3N0YXNoX3JlcG8oc2VsZiwgcmVkaXM9U3RyaWN0UmVkaXMsIGNhc3Nh
bmRyYT1DYXNzYW5kcmFDb250ZXh0KToKLSAgICAgICAgc2VsZi5pbml0X2RhdGFiYXNlKHJlZGlz
PXJlZGlzLCBjYXNzYW5kcmE9Y2Fzc2FuZHJhKQotICAgICAgICBzZWxmLmRhdGFiYXNlLnJlZ2lz
dGVyX2NvbW1pdF93aXRoX3JlcG9fYW5kX2lkKCdzYWZhcmknLCAnbWFzdGVyJywgJ2JiNmJkYTVm
NDQnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgW3NlbGYuc3Rhc2hf
cmVwb3NpdG9yeS5jb21taXRfZm9yX2lkKGlkPSdiYjZiZGE1ZjQ0JywgYnJhbmNoPSdtYXN0ZXIn
KV0sCi0gICAgICAgICAgICBzZWxmLmRhdGFiYXNlLmZpbmRfY29tbWl0c19ieV9pZChyZXBvc2l0
b3J5X2lkPSdzYWZhcmknLCBicmFuY2g9J21hc3RlcicsIGNvbW1pdF9pZD0nYmI2YmRhNWY0NCcp
LAotICAgICAgICApCi0KLSAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9j
a2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2Fu
ZHJhQ29udGV4dCkKLSAgICBkZWYgdGVzdF9jb21taXRfZnJvbV9zdm5fcmVwbyhzZWxmLCByZWRp
cz1TdHJpY3RSZWRpcywgY2Fzc2FuZHJhPUNhc3NhbmRyYUNvbnRleHQpOgotICAgICAgICBzZWxm
LmluaXRfZGF0YWJhc2UocmVkaXM9cmVkaXMsIGNhc3NhbmRyYT1jYXNzYW5kcmEpCi0gICAgICAg
IHNlbGYuZGF0YWJhc2UucmVnaXN0ZXJfY29tbWl0X3dpdGhfcmVwb19hbmRfaWQoJ3dlYmtpdCcs
ICd0cnVuaycsIDIzNjU0NCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAg
IFtzZWxmLnN2bl9yZXBvc2l0b3J5LmNvbW1pdF9mb3JfaWQoaWQ9MjM2NTQ0LCBicmFuY2g9J3Ry
dW5rJyldLAotICAgICAgICAgICAgc2VsZi5kYXRhYmFzZS5maW5kX2NvbW1pdHNfYnlfaWQocmVw
b3NpdG9yeV9pZD0nd2Via2l0JywgYnJhbmNoPSd0cnVuaycsIGNvbW1pdF9pZD0yMzY1NDQpLAot
ICAgICAgICApCi0KLSAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2Vy
KG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJh
Q29udGV4dCkKLSAgICBkZWYgdGVzdF9icmFuY2hlcyhzZWxmLCByZWRpcz1TdHJpY3RSZWRpcywg
Y2Fzc2FuZHJhPUNhc3NhbmRyYUNvbnRleHQpOgotICAgICAgICBzZWxmLmluaXRfZGF0YWJhc2Uo
cmVkaXM9cmVkaXMsIGNhc3NhbmRyYT1jYXNzYW5kcmEpCi0gICAgICAgIHNlbGYuYWRkX2FsbF9j
b21taXRzX3RvX2RhdGFiYXNlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ21hc3Rlcics
ICdzYWZhcmktNjA2LWJyYW5jaCddLCBzZWxmLmRhdGFiYXNlLmJyYW5jaGVzKHJlcG9zaXRvcnlf
aWQ9J3NhZmFyaScpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsnc2FmYXJpLTYwNi1icmFu
Y2gnLCAndHJ1bmsnXSwgc2VsZi5kYXRhYmFzZS5icmFuY2hlcyhyZXBvc2l0b3J5X2lkPSd3ZWJr
aXQnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ3NhZmFyaS02MDYtYnJhbmNoJ10sIHNl
bGYuZGF0YWJhc2UuYnJhbmNoZXMocmVwb3NpdG9yeV9pZD0nc2FmYXJpJywgYnJhbmNoPSdzYWZh
cmknKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ3NhZmFyaS02MDYtYnJhbmNoJ10sIHNl
bGYuZGF0YWJhc2UuYnJhbmNoZXMocmVwb3NpdG9yeV9pZD0nd2Via2l0JywgYnJhbmNoPSdzYWZh
cmktNjA2LWJyYW5jaCcpKQotCi0gICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25v
X2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nh
c3NhbmRyYUNvbnRleHQpCi0gICAgZGVmIHRlc3RfbmV4dF9jb21taXQoc2VsZiwgcmVkaXM9U3Ry
aWN0UmVkaXMsIGNhc3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0KToKLSAgICAgICAgc2VsZi5pbml0
X2RhdGFiYXNlKHJlZGlzPXJlZGlzLCBjYXNzYW5kcmE9Y2Fzc2FuZHJhKQotICAgICAgICBzZWxm
LmFkZF9hbGxfY29tbWl0c190b19kYXRhYmFzZSgpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgKLSAgICAgICAgICAgIHNlbGYuZGF0YWJhc2UubmV4dF9jb21taXQoc2VsZi5zdm5fcmVwb3Np
dG9yeS5jb21taXRfZm9yX2lkKGlkPTIzNjU0MikpLAotICAgICAgICAgICAgc2VsZi5zdm5fcmVw
b3NpdG9yeS5jb21taXRfZm9yX2lkKGlkPTIzNjU0MyksCi0gICAgICAgICkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIHNlbGYuZGF0YWJhc2UubmV4dF9jb21taXQoc2Vs
Zi5zdGFzaF9yZXBvc2l0b3J5LmNvbW1pdF9mb3JfaWQoaWQ9JzMzNjYxMGE0MGMzZmVjYjcyODg3
MWUxMmNhMzE0ODJjYTcxNWIzODMnKSksCi0gICAgICAgICAgICBzZWxmLnN0YXNoX3JlcG9zaXRv
cnkuY29tbWl0X2Zvcl9pZChpZD0nMzM2NjEwYTg0ZmRjZjE0ZGRjZjFkYjY1MDc1YWY5NTQ4MDUx
NmZkYScpLAotICAgICAgICApCi0KLSAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZf
bm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2Nr
Q2Fzc2FuZHJhQ29udGV4dCkKLSAgICBkZWYgdGVzdF9wcmV2aW91c19jb21taXQoc2VsZiwgcmVk
aXM9U3RyaWN0UmVkaXMsIGNhc3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0KToKLSAgICAgICAgc2Vs
Zi5pbml0X2RhdGFiYXNlKHJlZGlzPXJlZGlzLCBjYXNzYW5kcmE9Y2Fzc2FuZHJhKQotICAgICAg
ICBzZWxmLmFkZF9hbGxfY29tbWl0c190b19kYXRhYmFzZSgpCi0KLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgKLSAgICAgICAgICAgIHNlbGYuc3ZuX3JlcG9zaXRvcnkuY29tbWl0X2Zvcl9pZChp
ZD0yMzY1NDIpLAotICAgICAgICAgICAgc2VsZi5kYXRhYmFzZS5wcmV2aW91c19jb21taXQoc2Vs
Zi5zdm5fcmVwb3NpdG9yeS5jb21taXRfZm9yX2lkKGlkPTIzNjU0MykpLAotICAgICAgICApCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBzZWxmLnN0YXNoX3JlcG9zaXRv
cnkuY29tbWl0X2Zvcl9pZChpZD0nMzM2NjEwYTQwYzNmZWNiNzI4ODcxZTEyY2EzMTQ4MmNhNzE1
YjM4MycpLAotICAgICAgICAgICAgc2VsZi5kYXRhYmFzZS5wcmV2aW91c19jb21taXQoc2VsZi5z
dGFzaF9yZXBvc2l0b3J5LmNvbW1pdF9mb3JfaWQoaWQ9JzMzNjYxMGE4NGZkY2YxNGRkY2YxZGI2
NTA3NWFmOTU0ODA1MTZmZGEnKSksCi0gICAgICAgICkKLQotICAgIEBXYWl0Rm9yRG9ja2VyVGVz
dENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tf
Y2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQotICAgIGRlZiB0ZXN0X3NpYmxpbmdfY29t
bWl0cyhzZWxmLCByZWRpcz1TdHJpY3RSZWRpcywgY2Fzc2FuZHJhPUNhc3NhbmRyYUNvbnRleHQp
OgotICAgICAgICBzZWxmLmluaXRfZGF0YWJhc2UocmVkaXM9cmVkaXMsIGNhc3NhbmRyYT1jYXNz
YW5kcmEpCi0gICAgICAgIHNlbGYuYWRkX2FsbF9jb21taXRzX3RvX2RhdGFiYXNlKCkKLQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgc2VsZi5kYXRhYmFzZS5zaWJsaW5n
X2NvbW1pdHMoc2VsZi5zdm5fcmVwb3NpdG9yeS5jb21taXRfZm9yX2lkKGlkPTIzNjU0MiksIFsn
c2FmYXJpJ10pLAotICAgICAgICAgICAgeydzYWZhcmknOiBbc2VsZi5zdGFzaF9yZXBvc2l0b3J5
LmNvbW1pdF9mb3JfaWQoaWQ9J2JiNmJkYTVmNDRkZDI0ZDBiNTQ1MzliOGZmNmU4YzE3ZjUxOTI0
OWEnKV19LAotICAgICAgICApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAg
ICBzZWxmLmRhdGFiYXNlLnNpYmxpbmdfY29tbWl0cyhzZWxmLnN0YXNoX3JlcG9zaXRvcnkuY29t
bWl0X2Zvcl9pZChpZD0nYmI2YmRhNWY0NGRkMjRkMGI1NDUzOWI4ZmY2ZThjMTdmNTE5MjQ5YScp
LCBbJ3dlYmtpdCddKSwKLSAgICAgICAgICAgIHsnd2Via2l0JzogWwotICAgICAgICAgICAgICAg
IHNlbGYuc3ZuX3JlcG9zaXRvcnkuY29tbWl0X2Zvcl9pZChpZD0yMzY1NDQpLAotICAgICAgICAg
ICAgICAgIHNlbGYuc3ZuX3JlcG9zaXRvcnkuY29tbWl0X2Zvcl9pZChpZD0yMzY1NDMpLAotICAg
ICAgICAgICAgICAgIHNlbGYuc3ZuX3JlcG9zaXRvcnkuY29tbWl0X2Zvcl9pZChpZD0yMzY1NDIp
LAotICAgICAgICAgICAgICAgIHNlbGYuc3ZuX3JlcG9zaXRvcnkuY29tbWl0X2Zvcl9pZChpZD0y
MzY1NDEpLAotICAgICAgICAgICAgICAgIHNlbGYuc3ZuX3JlcG9zaXRvcnkuY29tbWl0X2Zvcl9p
ZChpZD0yMzY1NDApLAotICAgICAgICAgICAgXX0sCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgKLSAgICAgICAgICAgIHNlbGYuZGF0YWJhc2Uuc2libGluZ19jb21taXRzKHNl
bGYuc3Rhc2hfcmVwb3NpdG9yeS5jb21taXRfZm9yX2lkKGlkPSczMzY2MTBhODRmZGNmMTRkZGNm
MWRiNjUwNzVhZjk1NDgwNTE2ZmRhJyksIFsnd2Via2l0J10pLAotICAgICAgICAgICAgeyd3ZWJr
aXQnOiBbXX0sCi0gICAgICAgICkKLQotICAgIGRlZiB0ZXN0X3V1aWRfZm9yX2NvbW1pdHMoc2Vs
Zik6Ci0gICAgICAgIHV1aWQgPSBDb21taXRDb250ZXh0LnV1aWRfZm9yX2NvbW1pdHMoW01vY2tT
dGFzaFJlcG9zaXRvcnkuc2FmYXJpKCkuY29tbWl0X2Zvcl9pZChpZD0nYmI2YmRhNWYnKSwgTW9j
a1NWTlJlcG9zaXRvcnkud2Via2l0KCkuY29tbWl0X2Zvcl9pZChpZD0yMzY1NDQpXSkKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCh1dWlkLCAxNTM4MDUyNDA4MDApCi0KLSAgICBAV2FpdEZvckRv
Y2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlz
LCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKLSAgICBkZWYgdGVzdF9icmFu
Y2hfa2V5c19mb3JfY29tbWl0cyhzZWxmLCByZWRpcz1TdHJpY3RSZWRpcywgY2Fzc2FuZHJhPUNh
c3NhbmRyYUNvbnRleHQpOgotICAgICAgICBzZWxmLmluaXRfZGF0YWJhc2UocmVkaXM9cmVkaXMs
IGNhc3NhbmRyYT1jYXNzYW5kcmEpCi0gICAgICAgIGJyYW5jaGVzID0gc2VsZi5kYXRhYmFzZS5i
cmFuY2hfa2V5c19mb3JfY29tbWl0cyhbCi0gICAgICAgICAgICBNb2NrU3Rhc2hSZXBvc2l0b3J5
LnNhZmFyaSgpLmNvbW1pdF9mb3JfaWQoaWQ9J2JiNmJkYTVmJyksCi0gICAgICAgICAgICBNb2Nr
U1ZOUmVwb3NpdG9yeS53ZWJraXQoKS5jb21taXRfZm9yX2lkKGlkPTIzNjU0NCksCi0gICAgICAg
IF0pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnJhbmNoZXMsIFsnZGVmYXVsdCddKQotCi0g
ICAgICAgIGJyYW5jaGVzID0gc2VsZi5kYXRhYmFzZS5icmFuY2hfa2V5c19mb3JfY29tbWl0cyhb
Ci0gICAgICAgICAgICBNb2NrU3Rhc2hSZXBvc2l0b3J5LnNhZmFyaSgpLmNvbW1pdF9mb3JfaWQo
aWQ9Jzc5MjU2YzMyJywgYnJhbmNoPSdzYWZhcmktNjA2LWJyYW5jaCcpLAotICAgICAgICAgICAg
TW9ja1NWTlJlcG9zaXRvcnkud2Via2l0KCkuY29tbWl0X2Zvcl9pZChpZD0yMzY1NDQpLAotICAg
ICAgICBdKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJyYW5jaGVzLCBbJ3NhZmFyaS02MDYt
YnJhbmNoJ10pCi0KLSAgICAgICAgYnJhbmNoZXMgPSBzZWxmLmRhdGFiYXNlLmJyYW5jaF9rZXlz
X2Zvcl9jb21taXRzKFsKLSAgICAgICAgICAgIE1vY2tTdGFzaFJlcG9zaXRvcnkuc2FmYXJpKCku
Y29tbWl0X2Zvcl9pZChpZD0nNzkyNTZjMzInLCBicmFuY2g9J3NhZmFyaS02MDYtYnJhbmNoJyks
Ci0gICAgICAgICAgICBNb2NrU1ZOUmVwb3NpdG9yeS53ZWJraXQoKS5jb21taXRfZm9yX2lkKGlk
PTIzNjMzNSwgYnJhbmNoPSdzYWZhcmktNjA2LWJyYW5jaCcpLAotICAgICAgICBdKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGJyYW5jaGVzLCBbJ3NhZmFyaS02MDYtYnJhbmNoJ10pCi0KLSAg
ICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFr
ZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKLSAgICBk
ZWYgdGVzdF9jb21taXRfdXJsKHNlbGYsIHJlZGlzPVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fz
c2FuZHJhQ29udGV4dCk6Ci0gICAgICAgIHNlbGYuaW5pdF9kYXRhYmFzZShyZWRpcz1yZWRpcywg
Y2Fzc2FuZHJhPWNhc3NhbmRyYSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAg
ICAgICdodHRwczovL2Zha2Utc3Rhc2gtaW5zdGFuY2UuYXBwbGUuY29tL3Byb2plY3RzL0JST1dT
RVIvcmVwb3Mvc2FmYXJpL2NvbW1pdHMvYmI2YmRhNWY0NGRkMjRkMGI1NDUzOWI4ZmY2ZThjMTdm
NTE5MjQ5YScsCi0gICAgICAgICAgICBzZWxmLmRhdGFiYXNlLnVybChNb2NrU3Rhc2hSZXBvc2l0
b3J5LnNhZmFyaSgpLmNvbW1pdF9mb3JfaWQoaWQ9J2JiNmJkYTVmJykpLAotICAgICAgICApCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICAnaHR0cHM6Ly90cmFjLndlYmtp
dC5vcmcvY2hhbmdlc2V0LzIzNjU0NC93ZWJraXQnLAotICAgICAgICAgICAgc2VsZi5kYXRhYmFz
ZS51cmwoTW9ja1NWTlJlcG9zaXRvcnkud2Via2l0KCkuY29tbWl0X2Zvcl9pZChpZD0yMzY1NDQp
KSwKLSAgICAgICAgKQpJbmRleDogVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwv
Y29uZmlndXJhdGlvbl9jb250ZXh0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL3Jlc3VsdHNkYnB5
L3Jlc3VsdHNkYnB5L21vZGVsL2NvbmZpZ3VyYXRpb25fY29udGV4dC5weQkocmV2aXNpb24gMjY1
NTMxKQorKysgVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvY29uZmlndXJhdGlv
bl9jb250ZXh0LnB5CShub25leGlzdGVudCkKQEAgLTEsMjk4ICswLDAgQEAKLSMgQ29weXJpZ2h0
IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
IkFTIElTIiBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUgotIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0j
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSCi0jIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0jIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLWltcG9ydCBjYWxlbmRhcgotaW1wb3J0IGpzb24K
LWltcG9ydCB0aW1lCi0KLWZyb20gY2Fzc2FuZHJhLmNxbGVuZ2luZSBpbXBvcnQgY29sdW1ucwot
ZnJvbSBjYXNzYW5kcmEuY3FsZW5naW5lLm1vZGVscyBpbXBvcnQgTW9kZWwKLWZyb20gY29sbGVj
dGlvbnMgaW1wb3J0IEl0ZXJhYmxlLCBPcmRlcmVkRGljdAotZnJvbSBkYXRldGltZSBpbXBvcnQg
ZGF0ZXRpbWUKLWZyb20gcmVzdWx0c2RicHkuY29udHJvbGxlci5jb25maWd1cmF0aW9uIGltcG9y
dCBDb25maWd1cmF0aW9uCi1mcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLmNvbW1pdF9jb250ZXh0IGlt
cG9ydCBDb21taXRDb250ZXh0Ci0KLQotY2xhc3MgQ2x1c3RlcmVkQnlDb25maWd1cmF0aW9uKE1v
ZGVsKToKLSAgICBwbGF0Zm9ybSA9IGNvbHVtbnMuVGV4dChwYXJ0aXRpb25fa2V5PVRydWUsIHJl
cXVpcmVkPVRydWUpCi0gICAgdmVyc2lvbiA9IGNvbHVtbnMuSW50ZWdlcihwYXJ0aXRpb25fa2V5
PVRydWUsIHJlcXVpcmVkPVRydWUpCi0gICAgaXNfc2ltdWxhdG9yID0gY29sdW1ucy5Cb29sZWFu
KHBhcnRpdGlvbl9rZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkKLSAgICBhcmNoaXRlY3R1cmUgPSBj
b2x1bW5zLlRleHQocGFydGl0aW9uX2tleT1UcnVlLCByZXF1aXJlZD1UcnVlKQotICAgIGF0dHJp
YnV0ZXMgPSBjb2x1bW5zLlRleHQocGFydGl0aW9uX2tleT1UcnVlLCByZXF1aXJlZD1UcnVlKQot
Ci0gICAgZGVmIHRvX2NvbmZpZ3VyYXRpb24oc2VsZik6Ci0gICAgICAgIHJldHVybiBDb25maWd1
cmF0aW9uKAotICAgICAgICAgICAgcGxhdGZvcm09c2VsZi5wbGF0Zm9ybSwKLSAgICAgICAgICAg
IHZlcnNpb249c2VsZi52ZXJzaW9uLAotICAgICAgICAgICAgaXNfc2ltdWxhdG9yPXNlbGYuaXNf
c2ltdWxhdG9yLAotICAgICAgICAgICAgYXJjaGl0ZWN0dXJlPXNlbGYuYXJjaGl0ZWN0dXJlLAot
ICAgICAgICAgICAgc2RrPWdldGF0dHIoc2VsZiwgJ3NkaycsIE5vbmUpIG9yIE5vbmUsCi0gICAg
ICAgICAgICAqKmpzb24ubG9hZHMoc2VsZi5hdHRyaWJ1dGVzKQotICAgICAgICApCi0KLQotY2xh
c3MgQ29uZmlndXJhdGlvbkNvbnRleHQob2JqZWN0KToKLQotICAgIGNsYXNzIENvbmZpZ3VyYXRp
b25Nb2RlbChvYmplY3QpOgotCi0gICAgICAgIGRlZiB0b19jb25maWd1cmF0aW9uKHNlbGYpOgot
ICAgICAgICAgICAgcmV0dXJuIENvbmZpZ3VyYXRpb24oCi0gICAgICAgICAgICAgICAgcGxhdGZv
cm09c2VsZi5wbGF0Zm9ybSwKLSAgICAgICAgICAgICAgICB2ZXJzaW9uPXNlbGYudmVyc2lvbiwg
dmVyc2lvbl9uYW1lPXNlbGYudmVyc2lvbl9uYW1lIG9yIE5vbmUsCi0gICAgICAgICAgICAgICAg
c2RrPWdldGF0dHIoc2VsZiwgJ3NkaycsIE5vbmUpIG9yIE5vbmUsCi0gICAgICAgICAgICAgICAg
aXNfc2ltdWxhdG9yPXNlbGYuaXNfc2ltdWxhdG9yLAotICAgICAgICAgICAgICAgIGFyY2hpdGVj
dHVyZT1zZWxmLmFyY2hpdGVjdHVyZSwgbW9kZWw9c2VsZi5tb2RlbCBvciBOb25lLAotICAgICAg
ICAgICAgICAgIHN0eWxlPXNlbGYuc3R5bGUgb3IgTm9uZSwgZmxhdm9yPXNlbGYuZmxhdm9yIG9y
IE5vbmUsCi0gICAgICAgICAgICApCi0KLSAgICBjbGFzcyBCeVBsYXRmb3JtKE1vZGVsLCBDb25m
aWd1cmF0aW9uTW9kZWwpOgotICAgICAgICBfX3RhYmxlX25hbWVfXyA9ICdjb25maWdzX2J5X3Bs
YXRmb3JtX3dpdGhfYnJhbmNoJwotICAgICAgICBwbGF0Zm9ybSA9IGNvbHVtbnMuVGV4dChwYXJ0
aXRpb25fa2V5PVRydWUsIHJlcXVpcmVkPVRydWUpCi0gICAgICAgIHN0eWxlID0gY29sdW1ucy5U
ZXh0KHByaW1hcnlfa2V5PVRydWUsIHJlcXVpcmVkPUZhbHNlKQotICAgICAgICBmbGF2b3IgPSBj
b2x1bW5zLlRleHQocHJpbWFyeV9rZXk9VHJ1ZSwgcmVxdWlyZWQ9RmFsc2UpCi0gICAgICAgIGFy
Y2hpdGVjdHVyZSA9IGNvbHVtbnMuVGV4dChwcmltYXJ5X2tleT1UcnVlLCByZXF1aXJlZD1UcnVl
KQotICAgICAgICBtb2RlbCA9IGNvbHVtbnMuVGV4dChwcmltYXJ5X2tleT1UcnVlLCByZXF1aXJl
ZD1GYWxzZSkKLSAgICAgICAgaXNfc2ltdWxhdG9yID0gY29sdW1ucy5Cb29sZWFuKHByaW1hcnlf
a2V5PVRydWUsIHJlcXVpcmVkPVRydWUpCi0gICAgICAgIHZlcnNpb24gPSBjb2x1bW5zLkludGVn
ZXIocHJpbWFyeV9rZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkKLSAgICAgICAgYnJhbmNoID0gY29s
dW1ucy5UZXh0KHByaW1hcnlfa2V5PVRydWUsIHJlcXVpcmVkPVRydWUpCi0gICAgICAgIHZlcnNp
b25fbmFtZSA9IGNvbHVtbnMuVGV4dChwcmltYXJ5X2tleT1UcnVlLCByZXF1aXJlZD1GYWxzZSkK
LSAgICAgICAgbGFzdF9ydW4gPSBjb2x1bW5zLkRhdGVUaW1lKHJlcXVpcmVkPVRydWUpCi0KLSAg
ICBjbGFzcyBCeVBsYXRmb3JtQW5kVmVyc2lvbihNb2RlbCwgQ29uZmlndXJhdGlvbk1vZGVsKToK
LSAgICAgICAgX190YWJsZV9uYW1lX18gPSAnY29uZmlnc19ieV9wbGF0Zm9ybV9hbmRfdmVyc2lv
bl93aXRoX2JyYW5jaCcKLSAgICAgICAgcGxhdGZvcm0gPSBjb2x1bW5zLlRleHQocGFydGl0aW9u
X2tleT1UcnVlLCByZXF1aXJlZD1UcnVlKQotICAgICAgICB2ZXJzaW9uID0gY29sdW1ucy5JbnRl
Z2VyKHBhcnRpdGlvbl9rZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkKLSAgICAgICAgc3R5bGUgPSBj
b2x1bW5zLlRleHQocHJpbWFyeV9rZXk9VHJ1ZSwgcmVxdWlyZWQ9RmFsc2UpCi0gICAgICAgIGZs
YXZvciA9IGNvbHVtbnMuVGV4dChwcmltYXJ5X2tleT1UcnVlLCByZXF1aXJlZD1GYWxzZSkKLSAg
ICAgICAgYXJjaGl0ZWN0dXJlID0gY29sdW1ucy5UZXh0KHByaW1hcnlfa2V5PVRydWUsIHJlcXVp
cmVkPVRydWUpCi0gICAgICAgIG1vZGVsID0gY29sdW1ucy5UZXh0KHByaW1hcnlfa2V5PVRydWUs
IHJlcXVpcmVkPUZhbHNlKQotICAgICAgICBpc19zaW11bGF0b3IgPSBjb2x1bW5zLkJvb2xlYW4o
cHJpbWFyeV9rZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkKLSAgICAgICAgYnJhbmNoID0gY29sdW1u
cy5UZXh0KHByaW1hcnlfa2V5PVRydWUsIHJlcXVpcmVkPVRydWUpCi0gICAgICAgIHZlcnNpb25f
bmFtZSA9IGNvbHVtbnMuVGV4dChwcmltYXJ5X2tleT1UcnVlLCByZXF1aXJlZD1GYWxzZSkKLSAg
ICAgICAgbGFzdF9ydW4gPSBjb2x1bW5zLkRhdGVUaW1lKHJlcXVpcmVkPVRydWUpCi0KLSAgICBj
bGFzcyBCeUFyY2hpdGVjdHVyZShNb2RlbCwgQ29uZmlndXJhdGlvbk1vZGVsKToKLSAgICAgICAg
X190YWJsZV9uYW1lX18gPSAnY29uZmlnc19ieV9hcmNoaXRlY3R1cmVfd2l0aF9icmFuY2gnCi0g
ICAgICAgIGFyY2hpdGVjdHVyZSA9IGNvbHVtbnMuVGV4dChwYXJ0aXRpb25fa2V5PVRydWUsIHJl
cXVpcmVkPVRydWUpCi0gICAgICAgIHN0eWxlID0gY29sdW1ucy5UZXh0KHByaW1hcnlfa2V5PVRy
dWUsIHJlcXVpcmVkPUZhbHNlKQotICAgICAgICBwbGF0Zm9ybSA9IGNvbHVtbnMuVGV4dChwcmlt
YXJ5X2tleT1UcnVlLCByZXF1aXJlZD1UcnVlKQotICAgICAgICB2ZXJzaW9uID0gY29sdW1ucy5J
bnRlZ2VyKHByaW1hcnlfa2V5PVRydWUsIHJlcXVpcmVkPVRydWUpCi0gICAgICAgIG1vZGVsID0g
Y29sdW1ucy5UZXh0KHByaW1hcnlfa2V5PVRydWUsIHJlcXVpcmVkPUZhbHNlKQotICAgICAgICBm
bGF2b3IgPSBjb2x1bW5zLlRleHQocHJpbWFyeV9rZXk9VHJ1ZSwgcmVxdWlyZWQ9RmFsc2UpCi0g
ICAgICAgIGlzX3NpbXVsYXRvciA9IGNvbHVtbnMuQm9vbGVhbihwcmltYXJ5X2tleT1UcnVlLCBy
ZXF1aXJlZD1UcnVlKQotICAgICAgICBicmFuY2ggPSBjb2x1bW5zLlRleHQocHJpbWFyeV9rZXk9
VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkKLSAgICAgICAgdmVyc2lvbl9uYW1lID0gY29sdW1ucy5UZXh0
KHByaW1hcnlfa2V5PVRydWUsIHJlcXVpcmVkPUZhbHNlKQotICAgICAgICBsYXN0X3J1biA9IGNv
bHVtbnMuRGF0ZVRpbWUocmVxdWlyZWQ9VHJ1ZSkKLQotICAgIGNsYXNzIEJ5TW9kZWwoTW9kZWws
IENvbmZpZ3VyYXRpb25Nb2RlbCk6Ci0gICAgICAgIF9fdGFibGVfbmFtZV9fID0gJ2NvbmZpZ3Nf
YnlfbW9kZWxfd2l0aF9icmFuY2gnCi0gICAgICAgIG1vZGVsID0gY29sdW1ucy5UZXh0KHBhcnRp
dGlvbl9rZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkKLSAgICAgICAgdmVyc2lvbiA9IGNvbHVtbnMu
SW50ZWdlcihwcmltYXJ5X2tleT1UcnVlLCByZXF1aXJlZD1UcnVlKQotICAgICAgICBzdHlsZSA9
IGNvbHVtbnMuVGV4dChwcmltYXJ5X2tleT1UcnVlLCByZXF1aXJlZD1GYWxzZSkKLSAgICAgICAg
cGxhdGZvcm0gPSBjb2x1bW5zLlRleHQocHJpbWFyeV9rZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkK
LSAgICAgICAgZmxhdm9yID0gY29sdW1ucy5UZXh0KHByaW1hcnlfa2V5PVRydWUsIHJlcXVpcmVk
PUZhbHNlKQotICAgICAgICBhcmNoaXRlY3R1cmUgPSBjb2x1bW5zLlRleHQocHJpbWFyeV9rZXk9
VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkKLSAgICAgICAgaXNfc2ltdWxhdG9yID0gY29sdW1ucy5Cb29s
ZWFuKHByaW1hcnlfa2V5PVRydWUsIHJlcXVpcmVkPVRydWUpCi0gICAgICAgIGJyYW5jaCA9IGNv
bHVtbnMuVGV4dChwcmltYXJ5X2tleT1UcnVlLCByZXF1aXJlZD1UcnVlKQotICAgICAgICB2ZXJz
aW9uX25hbWUgPSBjb2x1bW5zLlRleHQocHJpbWFyeV9rZXk9VHJ1ZSwgcmVxdWlyZWQ9RmFsc2Up
Ci0gICAgICAgIGxhc3RfcnVuID0gY29sdW1ucy5EYXRlVGltZShyZXF1aXJlZD1UcnVlKQotCi0g
ICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlZGlzLCBjYXNzYW5kcmEsIGNhY2hlX3RpbWVvdXQ9NjAg
KiA2MCAqIDI0ICogMTQpOgotICAgICAgICBhc3NlcnQgcmVkaXMKLSAgICAgICAgYXNzZXJ0IGNh
c3NhbmRyYQotCi0gICAgICAgIHNlbGYucmVkaXMgPSByZWRpcwotICAgICAgICBzZWxmLmNhc3Nh
bmRyYSA9IGNhc3NhbmRyYQotICAgICAgICBzZWxmLmNhY2hlX3RpbWVvdXQgPSBjYWNoZV90aW1l
b3V0Ci0KLSAgICAgICAgd2l0aCBzZWxmOgotICAgICAgICAgICAgc2VsZi5jYXNzYW5kcmEuY3Jl
YXRlX3RhYmxlKHNlbGYuQnlQbGF0Zm9ybSkKLSAgICAgICAgICAgIHNlbGYuY2Fzc2FuZHJhLmNy
ZWF0ZV90YWJsZShzZWxmLkJ5UGxhdGZvcm1BbmRWZXJzaW9uKQotICAgICAgICAgICAgc2VsZi5j
YXNzYW5kcmEuY3JlYXRlX3RhYmxlKHNlbGYuQnlBcmNoaXRlY3R1cmUpCi0gICAgICAgICAgICBz
ZWxmLmNhc3NhbmRyYS5jcmVhdGVfdGFibGUoc2VsZi5CeU1vZGVsKQotCi0gICAgICAgICAgICBm
b3IgY29uZmlndXJhdGlvbiBpbiBzZWxmLmNhc3NhbmRyYS5zZWxlY3RfZnJvbV90YWJsZShzZWxm
LkJ5UGxhdGZvcm0uX190YWJsZV9uYW1lX18pOgotICAgICAgICAgICAgICAgIGlmIGNvbmZpZ3Vy
YXRpb24ubGFzdF9ydW4gPj0gZGF0ZXRpbWUudXRjZnJvbXRpbWVzdGFtcChpbnQodGltZS50aW1l
KCkgLSBjYWNoZV90aW1lb3V0KSk6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuX3JlZ2lzdGVy
X2luX3JlZGlzKGNvbmZpZ3VyYXRpb24udG9fY29uZmlndXJhdGlvbigpLCBjb25maWd1cmF0aW9u
LmJyYW5jaCwgY29uZmlndXJhdGlvbi5sYXN0X3J1bikKLQotICAgIGRlZiBfX2VudGVyX18oc2Vs
Zik6Ci0gICAgICAgIHNlbGYuY2Fzc2FuZHJhLl9fZW50ZXJfXygpCi0KLSAgICBkZWYgX19leGl0
X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKLSAgICAgICAgc2VsZi5jYXNzYW5kcmEuX19leGl0
X18oKmFyZ3MsICoqa3dhcmdzKQotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIF9jb252ZXJ0
X3RvX3JlZGlzX2tleShjbHMsIGNvbmZpZ3VyYXRpb24sIGJyYW5jaCk6Ci0gICAgICAgIHJldHVy
biAnY29uZmlnc193aXRoX2JyYW5jaDp7fTp7fTp7fTp7fTp7fTp7fTp7fTp7fTp7fScuZm9ybWF0
KAotICAgICAgICAgICAgY29uZmlndXJhdGlvbi5wbGF0Zm9ybSBvciAnKicsICcqJyBpZiBjb25m
aWd1cmF0aW9uLmlzX3NpbXVsYXRvciBpcyBOb25lIGVsc2UgKDEgaWYgY29uZmlndXJhdGlvbi5p
c19zaW11bGF0b3IgZWxzZSAwKSwKLSAgICAgICAgICAgICcqJyBpZiBjb25maWd1cmF0aW9uLnZl
cnNpb24gaXMgTm9uZSBlbHNlIENvbmZpZ3VyYXRpb24uaW50ZWdlcl90b192ZXJzaW9uKGNvbmZp
Z3VyYXRpb24udmVyc2lvbiksCi0gICAgICAgICAgICBjb25maWd1cmF0aW9uLnZlcnNpb25fbmFt
ZSBvciAnKicsCi0gICAgICAgICAgICBjb25maWd1cmF0aW9uLmFyY2hpdGVjdHVyZSBvciAnKics
IGNvbmZpZ3VyYXRpb24ubW9kZWwgb3IgJyonLAotICAgICAgICAgICAgY29uZmlndXJhdGlvbi5z
dHlsZSBvciAnKicsIGNvbmZpZ3VyYXRpb24uZmxhdm9yIG9yICcqJywKLSAgICAgICAgICAgIGJy
YW5jaCwKLSAgICAgICAgKQotCi0gICAgZGVmIF9yZWdpc3Rlcl9pbl9yZWRpcyhzZWxmLCBjb25m
aWd1cmF0aW9uLCBicmFuY2gsIHRpbWVzdGFtcCk6Ci0gICAgICAgIGlmIGlzaW5zdGFuY2UodGlt
ZXN0YW1wLCBkYXRldGltZSk6Ci0gICAgICAgICAgICB0aW1lc3RhbXAgPSBjYWxlbmRhci50aW1l
Z20odGltZXN0YW1wLnRpbWV0dXBsZSgpKQotICAgICAgICBleHBpcmF0aW9uID0gaW50KHNlbGYu
Y2FjaGVfdGltZW91dCAtICh0aW1lLnRpbWUoKSAtIGludCh0aW1lc3RhbXApKSkKLSAgICAgICAg
aWYgZXhwaXJhdGlvbiA+IDA6Ci0gICAgICAgICAgICBzZGsgPSBjb25maWd1cmF0aW9uLnNkawot
ICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24uc2RrID0gTm9u
ZQotICAgICAgICAgICAgICAgIHNlbGYucmVkaXMuc2V0KHNlbGYuX2NvbnZlcnRfdG9fcmVkaXNf
a2V5KGNvbmZpZ3VyYXRpb24sIGJyYW5jaCksIGNvbmZpZ3VyYXRpb24udG9fanNvbigpLCBleD1l
eHBpcmF0aW9uKQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBjb25maWd1
cmF0aW9uLnNkayA9IHNkawotCi0gICAgZGVmIHJlZ2lzdGVyX2NvbmZpZ3VyYXRpb24oc2VsZiwg
Y29uZmlndXJhdGlvbiwgYnJhbmNoPU5vbmUsIHRpbWVzdGFtcD10aW1lLnRpbWUoKSk6Ci0gICAg
ICAgIGlmIG5vdCBpc2luc3RhbmNlKGNvbmZpZ3VyYXRpb24sIENvbmZpZ3VyYXRpb24pOgotICAg
ICAgICAgICAgcmFpc2UgVHlwZUVycm9yKGYnRXhwZWN0ZWQgdHlwZSB7Q29uZmlndXJhdGlvbn0s
IGdvdCB7dHlwZShjb25maWd1cmF0aW9uKX0nKQotICAgICAgICBpZiBub3QgY29uZmlndXJhdGlv
bi5pc19jb21wbGV0ZSgpOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdDYW5ub3QgcmVn
aXN0ZXIgYSBwYXJ0aWFsIGNvbmZpZ3VyYXRpb24nKQotICAgICAgICBpZiBub3QgaXNpbnN0YW5j
ZSh0aW1lc3RhbXAsIGRhdGV0aW1lKToKLSAgICAgICAgICAgIHRpbWVzdGFtcCA9IGRhdGV0aW1l
LnV0Y2Zyb210aW1lc3RhbXAoaW50KHRpbWVzdGFtcCkpCi0KLSAgICAgICAgYnJhbmNoID0gYnJh
bmNoIG9yIENvbW1pdENvbnRleHQuREVGQVVMVF9CUkFOQ0hfS0VZCi0KLSAgICAgICAgd2l0aCBz
ZWxmOgotICAgICAgICAgICAgdGFibGVzX3RvX2luc2VydF90byA9IFtzZWxmLkJ5UGxhdGZvcm0u
X190YWJsZV9uYW1lX18sIHNlbGYuQnlQbGF0Zm9ybUFuZFZlcnNpb24uX190YWJsZV9uYW1lX18s
IHNlbGYuQnlBcmNoaXRlY3R1cmUuX190YWJsZV9uYW1lX19dCi0gICAgICAgICAgICBpZiBjb25m
aWd1cmF0aW9uLm1vZGVsIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIHRhYmxlc190b19p
bnNlcnRfdG8uYXBwZW5kKHNlbGYuQnlNb2RlbC5fX3RhYmxlX25hbWVfXykKLSAgICAgICAgICAg
IGZvciB0YWJsZSBpbiB0YWJsZXNfdG9faW5zZXJ0X3RvOgotICAgICAgICAgICAgICAgIHNlbGYu
Y2Fzc2FuZHJhLmluc2VydF9yb3coCi0gICAgICAgICAgICAgICAgICAgIHRhYmxlLCBicmFuY2g9
YnJhbmNoLAotICAgICAgICAgICAgICAgICAgICBwbGF0Zm9ybT1jb25maWd1cmF0aW9uLnBsYXRm
b3JtLCBpc19zaW11bGF0b3I9Y29uZmlndXJhdGlvbi5pc19zaW11bGF0b3IsCi0gICAgICAgICAg
ICAgICAgICAgIHZlcnNpb249Y29uZmlndXJhdGlvbi52ZXJzaW9uLCB2ZXJzaW9uX25hbWU9Y29u
ZmlndXJhdGlvbi52ZXJzaW9uX25hbWUgb3IgJycsCi0gICAgICAgICAgICAgICAgICAgIGFyY2hp
dGVjdHVyZT1jb25maWd1cmF0aW9uLmFyY2hpdGVjdHVyZSwgbW9kZWw9Y29uZmlndXJhdGlvbi5t
b2RlbCBvciAnJywKLSAgICAgICAgICAgICAgICAgICAgc3R5bGU9Y29uZmlndXJhdGlvbi5zdHls
ZSBvciAnJywgZmxhdm9yPWNvbmZpZ3VyYXRpb24uZmxhdm9yIG9yICcnLAotICAgICAgICAgICAg
ICAgICAgICBsYXN0X3J1bj10aW1lc3RhbXAsCi0gICAgICAgICAgICAgICAgKQotCi0gICAgICAg
IHNlbGYuX3JlZ2lzdGVyX2luX3JlZGlzKGNvbmZpZ3VyYXRpb24sIGJyYW5jaCwgdGltZXN0YW1w
KQotCi0gICAgZGVmIHNlYXJjaF9mb3JfY29uZmlndXJhdGlvbihzZWxmLCBjb25maWd1cmF0aW9u
PUNvbmZpZ3VyYXRpb24oKSwgYnJhbmNoPU5vbmUpOgotICAgICAgICBpZiBub3QgaXNpbnN0YW5j
ZShjb25maWd1cmF0aW9uLCBDb25maWd1cmF0aW9uKToKLSAgICAgICAgICAgIHJhaXNlIFR5cGVF
cnJvcihmJ0V4cGVjdGVkIHR5cGUge0NvbmZpZ3VyYXRpb259LCBnb3Qge3R5cGUoY29uZmlndXJh
dGlvbil9JykKLQotICAgICAgICBrd2FyZ3MgPSBkaWN0KGJyYW5jaD1icmFuY2ggb3IgQ29tbWl0
Q29udGV4dC5ERUZBVUxUX0JSQU5DSF9LRVkpCi0gICAgICAgIGZvciBtZW1iZXIgaW4gQ29uZmln
dXJhdGlvbi5SRVFVSVJFRF9NRU1CRVJTICsgQ29uZmlndXJhdGlvbi5PUFRJT05BTF9NRU1CRVJT
OgotICAgICAgICAgICAgaWYgZ2V0YXR0cihjb25maWd1cmF0aW9uLCBtZW1iZXIpOgotICAgICAg
ICAgICAgICAgIGt3YXJnc1ttZW1iZXJdID0gZ2V0YXR0cihjb25maWd1cmF0aW9uLCBtZW1iZXIp
Ci0KLSAgICAgICAgaWYgJ3BsYXRmb3JtJyBpbiBrd2FyZ3MgYW5kICd2ZXJzaW9uJyBpbiBrd2Fy
Z3M6Ci0gICAgICAgICAgICB0YWJsZSA9IHNlbGYuQnlQbGF0Zm9ybUFuZFZlcnNpb24KLSAgICAg
ICAgZWxpZiAncGxhdGZvcm0nIGluIGt3YXJnczoKLSAgICAgICAgICAgIHRhYmxlID0gc2VsZi5C
eVBsYXRmb3JtCi0gICAgICAgIGVsaWYgJ2FyY2hpdGVjdHVyZScgaW4ga3dhcmdzOgotICAgICAg
ICAgICAgdGFibGUgPSBzZWxmLkJ5QXJjaGl0ZWN0dXJlCi0gICAgICAgIGVsaWYgJ21vZGVsJyBp
biBrd2FyZ3M6Ci0gICAgICAgICAgICB0YWJsZSA9IHNlbGYuQnlNb2RlbAotICAgICAgICBlbHNl
OgotICAgICAgICAgICAgIyBQbGF0Zm9ybXMgcmFyZWx5IGV4cGlyZSwgc28gd2UgY2FuIGRvIGEg
ZGVjZW50IGpvYiBvZiB3aWxkY2FyZCBtYXRjaGluZyBleHBpcmVkIGNvbmZpZ3VyYXRpb25zCi0g
ICAgICAgICAgICAjIGlmIHdlIHRyeSBhbGwgcGxhdGZvcm1zIGluIHRoZSBjYWNoZS4KLSAgICAg
ICAgICAgIHBsYXRmb3JtcyA9IHNldChbY29uZmlnLnBsYXRmb3JtIGZvciBjb25maWcgaW4gc2Vs
Zi5zZWFyY2hfZm9yX3JlY2VudF9jb25maWd1cmF0aW9uKGJyYW5jaD1icmFuY2gpXSkKLSAgICAg
ICAgICAgIHdpdGggc2VsZjoKLSAgICAgICAgICAgICAgICByZXN1bHQgPSBbXQotICAgICAgICAg
ICAgICAgIGZvciBwbGF0Zm9ybSBpbiBwbGF0Zm9ybXM6Ci0gICAgICAgICAgICAgICAgICAgIGNv
bmZpZ3VyYXRpb24ucGxhdGZvcm0gPSBwbGF0Zm9ybQotICAgICAgICAgICAgICAgICAgICByZXN1
bHQuZXh0ZW5kKHNlbGYuc2VhcmNoX2Zvcl9jb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24sIGJy
YW5jaCkpCi0gICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbi5wbGF0Zm9ybSA9IE5vbmUKLSAg
ICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0Ci0KLSAgICAgICAgd2l0aCBzZWxmOgotICAgICAg
ICAgICAgcmV0dXJuIFttb2RlbC50b19jb25maWd1cmF0aW9uKCkgZm9yIG1vZGVsIGluIHNlbGYu
Y2Fzc2FuZHJhLnNlbGVjdF9mcm9tX3RhYmxlKHRhYmxlLl9fdGFibGVfbmFtZV9fLCAqKmt3YXJn
cyldCi0KLSAgICBkZWYgc2VhcmNoX2Zvcl9yZWNlbnRfY29uZmlndXJhdGlvbihzZWxmLCBjb25m
aWd1cmF0aW9uPUNvbmZpZ3VyYXRpb24oKSwgYnJhbmNoPU5vbmUpOgotICAgICAgICBpZiBub3Qg
aXNpbnN0YW5jZShjb25maWd1cmF0aW9uLCBDb25maWd1cmF0aW9uKToKLSAgICAgICAgICAgIHJh
aXNlIFR5cGVFcnJvcihmJ0V4cGVjdGVkIHR5cGUge0NvbmZpZ3VyYXRpb259LCBnb3Qge3R5cGUo
Y29uZmlndXJhdGlvbil9JykKLQotICAgICAgICBjb25maWd1cmF0aW9ucyA9IFtdCi0gICAgICAg
IGZvciBrZXkgaW4gc2VsZi5yZWRpcy5zY2FuX2l0ZXIoc2VsZi5fY29udmVydF90b19yZWRpc19r
ZXkoY29uZmlndXJhdGlvbiwgYnJhbmNoIG9yIENvbW1pdENvbnRleHQuREVGQVVMVF9CUkFOQ0hf
S0VZKSk6Ci0gICAgICAgICAgICBjYW5kaWRhdGUgPSBDb25maWd1cmF0aW9uLmZyb21fanNvbihz
ZWxmLnJlZGlzLmdldChrZXkuZGVjb2RlKCd1dGYtOCcpKS5kZWNvZGUoJ3V0Zi04JykpCi0gICAg
ICAgICAgICBpZiBjYW5kaWRhdGUgPT0gY29uZmlndXJhdGlvbjoKLSAgICAgICAgICAgICAgICBj
b25maWd1cmF0aW9ucy5hcHBlbmQoY2FuZGlkYXRlKQotICAgICAgICByZXR1cm4gY29uZmlndXJh
dGlvbnMKLQotICAgIGRlZiBpbnNlcnRfcm93X3dpdGhfY29uZmlndXJhdGlvbihzZWxmLCB0YWJs
ZV9uYW1lLCBjb25maWd1cmF0aW9uLCAqKmt3YXJncyk6Ci0gICAgICAgIGlmIG5vdCBpc2luc3Rh
bmNlKGNvbmZpZ3VyYXRpb24sIENvbmZpZ3VyYXRpb24pOgotICAgICAgICAgICAgcmFpc2UgVHlw
ZUVycm9yKGYnRXhwZWN0ZWQgdHlwZSB7Q29uZmlndXJhdGlvbn0sIGdvdCB7dHlwZShjb25maWd1
cmF0aW9uKX0nKQotICAgICAgICBpZiBub3QgY29uZmlndXJhdGlvbi5pc19jb21wbGV0ZSgpOgot
ICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKGYnQ2Fubm90IGluc2VydCB0byB7dGFibGVfbmFt
ZX0gd2l0aCBhIHBhcnRpYWwgY29uZmlndXJhdGlvbicpCi0KLSAgICAgICAgd2l0aCBzZWxmOgot
ICAgICAgICAgICAgYXR0cmlidXRlc19kaWN0ID0gT3JkZXJlZERpY3QoKQotICAgICAgICAgICAg
Zm9yIG1lbWJlciBpbiBDb25maWd1cmF0aW9uLk9QVElPTkFMX01FTUJFUlM6Ci0gICAgICAgICAg
ICAgICAgaWYgZ2V0YXR0cihjb25maWd1cmF0aW9uLCBtZW1iZXIpIGlzIG5vdCBOb25lOgotICAg
ICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzX2RpY3RbbWVtYmVyXSA9IGdldGF0dHIoY29uZmln
dXJhdGlvbiwgbWVtYmVyKQotCi0gICAgICAgICAgICByZXR1cm4gc2VsZi5jYXNzYW5kcmEuaW5z
ZXJ0X3JvdygKLSAgICAgICAgICAgICAgICB0YWJsZV9uYW1lLAotICAgICAgICAgICAgICAgIHBs
YXRmb3JtPWNvbmZpZ3VyYXRpb24ucGxhdGZvcm0sIGlzX3NpbXVsYXRvcj1jb25maWd1cmF0aW9u
LmlzX3NpbXVsYXRvciwKLSAgICAgICAgICAgICAgICB2ZXJzaW9uPWNvbmZpZ3VyYXRpb24udmVy
c2lvbiwKLSAgICAgICAgICAgICAgICBhcmNoaXRlY3R1cmU9Y29uZmlndXJhdGlvbi5hcmNoaXRl
Y3R1cmUsCi0gICAgICAgICAgICAgICAgYXR0cmlidXRlcz1qc29uLmR1bXBzKGF0dHJpYnV0ZXNf
ZGljdCksCi0gICAgICAgICAgICAgICAgKiprd2FyZ3MpCi0KLSAgICBkZWYgc2VsZWN0X2Zyb21f
dGFibGVfd2l0aF9jb25maWd1cmF0aW9ucyhzZWxmLCB0YWJsZV9uYW1lLCBjb25maWd1cmF0aW9u
cz1Ob25lLCBicmFuY2g9Tm9uZSwgcmVjZW50PVRydWUsIGxpbWl0PTEwMCwgKiprd2FyZ3MpOgot
ICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShjb25maWd1cmF0aW9ucywgSXRlcmFibGUpOgotICAg
ICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdFeHBlY3RlZCBjb25maWd1cmF0aW9ucyB0byBiZSBp
dGVyYWJsZScpCi0gICAgICAgIGlmIG5vdCBjb25maWd1cmF0aW9uczoKLSAgICAgICAgICAgIGNv
bmZpZ3VyYXRpb25zLmFwcGVuZChDb25maWd1cmF0aW9uKCkpCi0KLSAgICAgICAgd2l0aCBzZWxm
OgotICAgICAgICAgICAgY29tcGxldGVfY29uZmlndXJhdGlvbnMgPSBzZXQoKQotICAgICAgICAg
ICAgZm9yIGNvbmZpZyBpbiBjb25maWd1cmF0aW9uczoKLSAgICAgICAgICAgICAgICBpZiBub3Qg
aXNpbnN0YW5jZShjb25maWcsIENvbmZpZ3VyYXRpb24pOgotICAgICAgICAgICAgICAgICAgICBy
YWlzZSBUeXBlRXJyb3IoZidFeHBlY3RlZCB0eXBlIHtDb25maWd1cmF0aW9ufSwgZ290IHt0eXBl
KGNvbmZpZyl9JykKLSAgICAgICAgICAgICAgICBpZiBjb25maWcuaXNfY29tcGxldGUoKToKLSAg
ICAgICAgICAgICAgICAgICAgY29tcGxldGVfY29uZmlndXJhdGlvbnMuYWRkKGNvbmZpZykKLSAg
ICAgICAgICAgICAgICBlbGlmIHJlY2VudDoKLSAgICAgICAgICAgICAgICAgICAgW2NvbXBsZXRl
X2NvbmZpZ3VyYXRpb25zLmFkZChlbGVtZW50KSBmb3IgZWxlbWVudCBpbiBzZWxmLnNlYXJjaF9m
b3JfcmVjZW50X2NvbmZpZ3VyYXRpb24oY29uZmlnLCBicmFuY2g9YnJhbmNoKV0KLSAgICAgICAg
ICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBbY29tcGxldGVfY29uZmlndXJhdGlv
bnMuYWRkKGVsZW1lbnQpIGZvciBlbGVtZW50IGluIHNlbGYuc2VhcmNoX2Zvcl9jb25maWd1cmF0
aW9uKGNvbmZpZywgYnJhbmNoPWJyYW5jaCldCi0KLSAgICAgICAgICAgIHJlc3VsdHMgPSB7fQot
ICAgICAgICAgICAgZm9yIGNvbmZpZ3VyYXRpb24gaW4gY29tcGxldGVfY29uZmlndXJhdGlvbnM6
Ci0gICAgICAgICAgICAgICAgYXR0cmlidXRlc19kaWN0ID0gT3JkZXJlZERpY3QoKQotICAgICAg
ICAgICAgICAgIGZvciBtZW1iZXIgaW4gQ29uZmlndXJhdGlvbi5PUFRJT05BTF9NRU1CRVJTOgot
ICAgICAgICAgICAgICAgICAgICBpZiBnZXRhdHRyKGNvbmZpZ3VyYXRpb24sIG1lbWJlcikgaXMg
bm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzX2RpY3RbbWVtYmVy
XSA9IGdldGF0dHIoY29uZmlndXJhdGlvbiwgbWVtYmVyKQotCi0gICAgICAgICAgICAgICAgcm93
cyA9IHNlbGYuY2Fzc2FuZHJhLnNlbGVjdF9mcm9tX3RhYmxlKAotICAgICAgICAgICAgICAgICAg
ICB0YWJsZV9uYW1lLAotICAgICAgICAgICAgICAgICAgICBwbGF0Zm9ybT1jb25maWd1cmF0aW9u
LnBsYXRmb3JtLCBpc19zaW11bGF0b3I9Y29uZmlndXJhdGlvbi5pc19zaW11bGF0b3IsCi0gICAg
ICAgICAgICAgICAgICAgIHZlcnNpb249Y29uZmlndXJhdGlvbi52ZXJzaW9uLAotICAgICAgICAg
ICAgICAgICAgICBhcmNoaXRlY3R1cmU9Y29uZmlndXJhdGlvbi5hcmNoaXRlY3R1cmUsCi0gICAg
ICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM9anNvbi5kdW1wcyhhdHRyaWJ1dGVzX2RpY3QpLAot
ICAgICAgICAgICAgICAgICAgICBsaW1pdD1saW1pdCwKLSAgICAgICAgICAgICAgICAgICAgYnJh
bmNoPWJyYW5jaCBvciBDb21taXRDb250ZXh0LkRFRkFVTFRfQlJBTkNIX0tFWSwKLSAgICAgICAg
ICAgICAgICAgICAgKiprd2FyZ3MpCi0gICAgICAgICAgICAgICAgaWYgbGVuKHJvd3MpID09IDA6
Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgICAgICAgICBmb3Igcm93
IGluIHJvd3M6Ci0gICAgICAgICAgICAgICAgICAgIGZ1bGxfY29uZmlnID0gcm93LnRvX2NvbmZp
Z3VyYXRpb24oKQotICAgICAgICAgICAgICAgICAgICBpZiBub3QgcmVzdWx0cy5nZXQoZnVsbF9j
b25maWcpOgotICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0c1tmdWxsX2NvbmZpZ10gPSBb
XQotICAgICAgICAgICAgICAgICAgICByZXN1bHRzW2Z1bGxfY29uZmlnXS5hcHBlbmQocm93KQot
Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0cwpJbmRleDogVG9vbHMvcmVzdWx0c2RicHkvcmVz
dWx0c2RicHkvbW9kZWwvY29uZmlndXJhdGlvbl9jb250ZXh0X3VuaXR0ZXN0LnB5Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL2NvbmZpZ3VyYXRpb25f
Y29udGV4dF91bml0dGVzdC5weQkocmV2aXNpb24gMjY1NTMxKQorKysgVG9vbHMvcmVzdWx0c2Ri
cHkvcmVzdWx0c2RicHkvbW9kZWwvY29uZmlndXJhdGlvbl9jb250ZXh0X3VuaXR0ZXN0LnB5CShu
b25leGlzdGVudCkKQEAgLTEsMjQ1ICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
IyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKLSMg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UgotIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0jIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSCi0jIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0jIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0KLWltcG9ydCB0aW1lCi0KLWZyb20gY2Fzc2FuZHJhLmNxbGVuZ2luZSBpbXBv
cnQgY29sdW1ucwotZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVyLmNvbmZpZ3VyYXRpb24gaW1w
b3J0IENvbmZpZ3VyYXRpb24KLWZyb20gZmFrZXJlZGlzIGltcG9ydCBGYWtlU3RyaWN0UmVkaXMK
LWZyb20gcmVkaXMgaW1wb3J0IFN0cmljdFJlZGlzCi1mcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLmNh
c3NhbmRyYV9jb250ZXh0IGltcG9ydCBDYXNzYW5kcmFDb250ZXh0Ci1mcm9tIHJlc3VsdHNkYnB5
Lm1vZGVsLmNvbW1pdF9jb250ZXh0IGltcG9ydCBDb21taXRDb250ZXh0Ci1mcm9tIHJlc3VsdHNk
YnB5Lm1vZGVsLmNvbmZpZ3VyYXRpb25fY29udGV4dCBpbXBvcnQgQ29uZmlndXJhdGlvbkNvbnRl
eHQsIENsdXN0ZXJlZEJ5Q29uZmlndXJhdGlvbgotZnJvbSByZXN1bHRzZGJweS5tb2RlbC5tb2Nr
X2Nhc3NhbmRyYV9jb250ZXh0IGltcG9ydCBNb2NrQ2Fzc2FuZHJhQ29udGV4dAotZnJvbSByZXN1
bHRzZGJweS5tb2RlbC53YWl0X2Zvcl9kb2NrZXJfdGVzdF9jYXNlIGltcG9ydCBXYWl0Rm9yRG9j
a2VyVGVzdENhc2UKLQotCi1jbGFzcyBDb25maWd1cmF0aW9uQ29udGV4dFRlc3QoV2FpdEZvckRv
Y2tlclRlc3RDYXNlKToKLSAgICBLRVlTUEFDRSA9ICdjb25maWd1cmF0aW9uX2NvbnRleHRfdGVz
dF9rZXlzcGFjZScKLSAgICBDT05GSUdVUkFUSU9OUyA9IFsKLSAgICAgICAgQ29uZmlndXJhdGlv
bihwbGF0Zm9ybT0nTWFjJywgdmVyc2lvbj0nMTAuMTMuMCcsIHNkaz0nMTdBNDA1JywgaXNfc2lt
dWxhdG9yPUZhbHNlLCBhcmNoaXRlY3R1cmU9J3g4Nl82NCcsIHN0eWxlPSdEZWJ1ZycsIGZsYXZv
cj0nd2sxJyksCi0gICAgICAgIENvbmZpZ3VyYXRpb24ocGxhdGZvcm09J01hYycsIHZlcnNpb249
JzEwLjEzLjAnLCBzZGs9JzE3QTQwNScsIGlzX3NpbXVsYXRvcj1GYWxzZSwgYXJjaGl0ZWN0dXJl
PSd4ODZfNjQnLCBzdHlsZT0nRGVidWcnLCBmbGF2b3I9J3drMicpLAotICAgICAgICBDb25maWd1
cmF0aW9uKHBsYXRmb3JtPSdNYWMnLCB2ZXJzaW9uPScxMC4xMy4wJywgc2RrPScxN0E0MDUnLCBp
c19zaW11bGF0b3I9RmFsc2UsIGFyY2hpdGVjdHVyZT0neDg2XzY0Jywgc3R5bGU9J1JlbGVhc2Un
LCBmbGF2b3I9J3drMScpLAotICAgICAgICBDb25maWd1cmF0aW9uKHBsYXRmb3JtPSdNYWMnLCB2
ZXJzaW9uPScxMC4xMy4wJywgc2RrPScxN0E0MDUnLCBpc19zaW11bGF0b3I9RmFsc2UsIGFyY2hp
dGVjdHVyZT0neDg2XzY0Jywgc3R5bGU9J1JlbGVhc2UnLCBmbGF2b3I9J3drMicpLAotICAgICAg
ICBDb25maWd1cmF0aW9uKHBsYXRmb3JtPSdNYWMnLCB2ZXJzaW9uPScxMC4xMy4wJywgc2RrPScx
N0E0MDUnLCBpc19zaW11bGF0b3I9RmFsc2UsIGFyY2hpdGVjdHVyZT0neDg2XzY0Jywgc3R5bGU9
J0FzYW4nLCBmbGF2b3I9J3drMScpLAotICAgICAgICBDb25maWd1cmF0aW9uKHBsYXRmb3JtPSdN
YWMnLCB2ZXJzaW9uPScxMC4xMy4wJywgc2RrPScxN0E0MDUnLCBpc19zaW11bGF0b3I9RmFsc2Us
IGFyY2hpdGVjdHVyZT0neDg2XzY0Jywgc3R5bGU9J0FzYW4nLCBmbGF2b3I9J3drMicpLAotICAg
ICAgICBDb25maWd1cmF0aW9uKHBsYXRmb3JtPSdNYWMnLCB2ZXJzaW9uPScxMC4xNC4wJywgc2Rr
PScxOEEzOTEnLCBpc19zaW11bGF0b3I9RmFsc2UsIGFyY2hpdGVjdHVyZT0neDg2XzY0Jywgc3R5
bGU9J0RlYnVnJywgZmxhdm9yPSd3azEnKSwKLSAgICAgICAgQ29uZmlndXJhdGlvbihwbGF0Zm9y
bT0nTWFjJywgdmVyc2lvbj0nMTAuMTQuMCcsIHNkaz0nMThBMzkxJywgaXNfc2ltdWxhdG9yPUZh
bHNlLCBhcmNoaXRlY3R1cmU9J3g4Nl82NCcsIHN0eWxlPSdEZWJ1ZycsIGZsYXZvcj0nd2syJyks
Ci0gICAgICAgIENvbmZpZ3VyYXRpb24ocGxhdGZvcm09J01hYycsIHZlcnNpb249JzEwLjE0LjAn
LCBzZGs9JzE4QTM5MScsIGlzX3NpbXVsYXRvcj1GYWxzZSwgYXJjaGl0ZWN0dXJlPSd4ODZfNjQn
LCBzdHlsZT0nUmVsZWFzZScsIGZsYXZvcj0nd2sxJyksCi0gICAgICAgIENvbmZpZ3VyYXRpb24o
cGxhdGZvcm09J01hYycsIHZlcnNpb249JzEwLjE0LjAnLCBzZGs9JzE4QTM5MScsIGlzX3NpbXVs
YXRvcj1GYWxzZSwgYXJjaGl0ZWN0dXJlPSd4ODZfNjQnLCBzdHlsZT0nUmVsZWFzZScsIGZsYXZv
cj0nd2syJyksCi0gICAgICAgIENvbmZpZ3VyYXRpb24ocGxhdGZvcm09J01hYycsIHZlcnNpb249
JzEwLjE0LjAnLCBzZGs9JzE4QTM5MScsIGlzX3NpbXVsYXRvcj1GYWxzZSwgYXJjaGl0ZWN0dXJl
PSd4ODZfNjQnLCBzdHlsZT0nQXNhbicsIGZsYXZvcj0nd2sxJyksCi0gICAgICAgIENvbmZpZ3Vy
YXRpb24ocGxhdGZvcm09J01hYycsIHZlcnNpb249JzEwLjE0LjAnLCBzZGs9JzE4QTM5MScsIGlz
X3NpbXVsYXRvcj1GYWxzZSwgYXJjaGl0ZWN0dXJlPSd4ODZfNjQnLCBzdHlsZT0nQXNhbicsIGZs
YXZvcj0nd2syJyksCi0gICAgICAgIENvbmZpZ3VyYXRpb24ocGxhdGZvcm09J2lPUycsIHZlcnNp
b249JzExLjAuMCcsIHNkaz0nMTVBNDMyJywgaXNfc2ltdWxhdG9yPVRydWUsIGFyY2hpdGVjdHVy
ZT0neDg2XzY0Jywgc3R5bGU9J0RlYnVnJyksCi0gICAgICAgIENvbmZpZ3VyYXRpb24ocGxhdGZv
cm09J2lPUycsIHZlcnNpb249JzExLjAuMCcsIHNkaz0nMTVBNDMyJywgaXNfc2ltdWxhdG9yPVRy
dWUsIGFyY2hpdGVjdHVyZT0neDg2XzY0Jywgc3R5bGU9J1JlbGVhc2UnKSwKLSAgICAgICAgQ29u
ZmlndXJhdGlvbihwbGF0Zm9ybT0naU9TJywgdmVyc2lvbj0nMTEuMC4wJywgc2RrPScxNUE0MzIn
LCBpc19zaW11bGF0b3I9VHJ1ZSwgYXJjaGl0ZWN0dXJlPSd4ODZfNjQnLCBzdHlsZT0nQXNhbicp
LAotICAgICAgICBDb25maWd1cmF0aW9uKHBsYXRmb3JtPSdpT1MnLCB2ZXJzaW9uPScxMS4wLjAn
LCBzZGs9JzE1QTQzMicsIGlzX3NpbXVsYXRvcj1GYWxzZSwgYXJjaGl0ZWN0dXJlPSdhcm02NCcs
IG1vZGVsPSdpUGhvbmUgOCcsIHN0eWxlPSdEZWJ1ZycpLAotICAgICAgICBDb25maWd1cmF0aW9u
KHBsYXRmb3JtPSdpT1MnLCB2ZXJzaW9uPScxMS4wLjAnLCBzZGs9JzE1QTQzMicsIGlzX3NpbXVs
YXRvcj1GYWxzZSwgYXJjaGl0ZWN0dXJlPSdhcm02NCcsIG1vZGVsPSdpUGhvbmUgOCcsIHN0eWxl
PSdSZWxlYXNlJyksCi0gICAgICAgIENvbmZpZ3VyYXRpb24ocGxhdGZvcm09J2lPUycsIHZlcnNp
b249JzExLjAuMCcsIHNkaz0nMTVBNDMyJywgaXNfc2ltdWxhdG9yPUZhbHNlLCBhcmNoaXRlY3R1
cmU9J2FybTY0JywgbW9kZWw9J2lQaG9uZSA4Jywgc3R5bGU9J0FzYW4nKSwKLSAgICAgICAgQ29u
ZmlndXJhdGlvbihwbGF0Zm9ybT0naU9TJywgdmVyc2lvbj0nMTIuMC4wJywgc2RrPScxNkE0MDQn
LCBpc19zaW11bGF0b3I9VHJ1ZSwgYXJjaGl0ZWN0dXJlPSd4ODZfNjQnLCBzdHlsZT0nRGVidWcn
KSwKLSAgICAgICAgQ29uZmlndXJhdGlvbihwbGF0Zm9ybT0naU9TJywgdmVyc2lvbj0nMTIuMC4w
Jywgc2RrPScxNkE0MDQnLCBpc19zaW11bGF0b3I9VHJ1ZSwgYXJjaGl0ZWN0dXJlPSd4ODZfNjQn
LCBzdHlsZT0nUmVsZWFzZScpLAotICAgICAgICBDb25maWd1cmF0aW9uKHBsYXRmb3JtPSdpT1Mn
LCB2ZXJzaW9uPScxMi4wLjAnLCBzZGs9JzE2QTQwNCcsIGlzX3NpbXVsYXRvcj1UcnVlLCBhcmNo
aXRlY3R1cmU9J3g4Nl82NCcsIHN0eWxlPSdBc2FuJyksCi0gICAgICAgIENvbmZpZ3VyYXRpb24o
cGxhdGZvcm09J2lPUycsIHZlcnNpb249JzEyLjAuMCcsIHNkaz0nMTZBNDA0JywgaXNfc2ltdWxh
dG9yPUZhbHNlLCBhcmNoaXRlY3R1cmU9J2FybTY0JywgbW9kZWw9J2lQaG9uZSBYcycsIHN0eWxl
PSdEZWJ1ZycpLAotICAgICAgICBDb25maWd1cmF0aW9uKHBsYXRmb3JtPSdpT1MnLCB2ZXJzaW9u
PScxMi4wLjAnLCBzZGs9JzE2QTQwNCcsIGlzX3NpbXVsYXRvcj1GYWxzZSwgYXJjaGl0ZWN0dXJl
PSdhcm02NCcsIG1vZGVsPSdpUGhvbmUgOCcsIHN0eWxlPSdSZWxlYXNlJyksCi0gICAgICAgIENv
bmZpZ3VyYXRpb24ocGxhdGZvcm09J2lPUycsIHZlcnNpb249JzEyLjAuMCcsIHNkaz0nMTZBNDA0
JywgaXNfc2ltdWxhdG9yPUZhbHNlLCBhcmNoaXRlY3R1cmU9J2FybTY0JywgbW9kZWw9J2lQaG9u
ZSBYcycsIHN0eWxlPSdBc2FuJyksCi0gICAgXQotCi0gICAgZGVmIGluaXRfZGF0YWJhc2Uoc2Vs
ZiwgcmVkaXM9U3RyaWN0UmVkaXMsIGNhc3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0KToKLSAgICAg
ICAgY2Fzc2FuZHJhLmRyb3Bfa2V5c3BhY2Uoa2V5c3BhY2U9c2VsZi5LRVlTUEFDRSkKLSAgICAg
ICAgc2VsZi5kYXRhYmFzZSA9IENvbmZpZ3VyYXRpb25Db250ZXh0KAotICAgICAgICAgICAgcmVk
aXM9cmVkaXMoKSwKLSAgICAgICAgICAgIGNhc3NhbmRyYT1jYXNzYW5kcmEoa2V5c3BhY2U9c2Vs
Zi5LRVlTUEFDRSwgY3JlYXRlX2tleXNwYWNlPVRydWUpLAotICAgICAgICApCi0KLSAgICBkZWYg
cmVnaXN0ZXJfY29uZmlndXJhdGlvbnMoc2VsZik6Ci0gICAgICAgIGN1cnJlbnQgPSB0aW1lLnRp
bWUoKQotICAgICAgICBvbGQgPSBjdXJyZW50IC0gNjAgKiA2MCAqIDI0ICogMjEKLQotICAgICAg
ICBmb3IgY29uZmlndXJhdGlvbiBpbiBzZWxmLkNPTkZJR1VSQVRJT05TOgotICAgICAgICAgICAg
aWYgKGNvbmZpZ3VyYXRpb24ucGxhdGZvcm0gPT0gJ01hYycgYW5kIGNvbmZpZ3VyYXRpb24udmVy
c2lvbiA8PSBDb25maWd1cmF0aW9uLnZlcnNpb25fdG9faW50ZWdlcignMTAuMTMnKSkgXAotICAg
ICAgICAgICAgICAgb3IgKGNvbmZpZ3VyYXRpb24ucGxhdGZvcm0gPT0gJ2lPUycgYW5kIGNvbmZp
Z3VyYXRpb24udmVyc2lvbiA8PSBDb25maWd1cmF0aW9uLnZlcnNpb25fdG9faW50ZWdlcignMTEn
KSk6Ci0gICAgICAgICAgICAgICAgc2VsZi5kYXRhYmFzZS5yZWdpc3Rlcl9jb25maWd1cmF0aW9u
KGNvbmZpZ3VyYXRpb24sIGJyYW5jaD1Ob25lLCB0aW1lc3RhbXA9b2xkKQotICAgICAgICAgICAg
ZWxzZToKLSAgICAgICAgICAgICAgICBzZWxmLmRhdGFiYXNlLnJlZ2lzdGVyX2NvbmZpZ3VyYXRp
b24oY29uZmlndXJhdGlvbiwgYnJhbmNoPU5vbmUsIHRpbWVzdGFtcD1jdXJyZW50KQotCi0gICAg
QFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VT
dHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCi0gICAgZGVm
IHRlc3RfaW52YWxpZF9jb25maWd1cmF0aW9uKHNlbGYsIHJlZGlzPVN0cmljdFJlZGlzLCBjYXNz
YW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCk6Ci0gICAgICAgIHNlbGYuaW5pdF9kYXRhYmFzZShyZWRp
cz1yZWRpcywgY2Fzc2FuZHJhPWNhc3NhbmRyYSkKLQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0
UmFpc2VzKFR5cGVFcnJvcik6Ci0gICAgICAgICAgICBzZWxmLmRhdGFiYXNlLnJlZ2lzdGVyX2Nv
bmZpZ3VyYXRpb24oJ2ludmFsaWQgb2JqZWN0JykKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJh
aXNlcyhUeXBlRXJyb3IpOgotICAgICAgICAgICAgc2VsZi5kYXRhYmFzZS5yZWdpc3Rlcl9jb25m
aWd1cmF0aW9uKENvbmZpZ3VyYXRpb24ocGxhdGZvcm09J2lPUycpKQotCi0gICAgQFdhaXRGb3JE
b2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRp
cywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCi0gICAgZGVmIHRlc3Rfbm9f
c3R5bGVfY29uZmlndXJhdGlvbihzZWxmLCByZWRpcz1TdHJpY3RSZWRpcywgY2Fzc2FuZHJhPUNh
c3NhbmRyYUNvbnRleHQpOgotICAgICAgICBzZWxmLmluaXRfZGF0YWJhc2UocmVkaXM9cmVkaXMs
IGNhc3NhbmRyYT1jYXNzYW5kcmEpCi0KLSAgICAgICAgc2VsZi5kYXRhYmFzZS5yZWdpc3Rlcl9j
b25maWd1cmF0aW9uKENvbmZpZ3VyYXRpb24oCi0gICAgICAgICAgICBwbGF0Zm9ybT0nTWFjJywg
dmVyc2lvbj0nMTAuMTMuMCcsIHNkaz0nMTdBNDA1JywgaXNfc2ltdWxhdG9yPUZhbHNlLCBhcmNo
aXRlY3R1cmU9J3g4Nl82NCcsCi0gICAgICAgICkpCi0KLSAgICBAV2FpdEZvckRvY2tlclRlc3RD
YXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nh
c3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKLSAgICBkZWYgdGVzdF9jb25maWd1cmF0aW9u
X2J5X3BsYXRmb3JtKHNlbGYsIHJlZGlzPVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fzc2FuZHJh
Q29udGV4dCk6Ci0gICAgICAgIHNlbGYuaW5pdF9kYXRhYmFzZShyZWRpcz1yZWRpcywgY2Fzc2Fu
ZHJhPWNhc3NhbmRyYSkKLSAgICAgICAgc2VsZi5yZWdpc3Rlcl9jb25maWd1cmF0aW9ucygpCi0K
LSAgICAgICAgY29uZmlndXJhdGlvbl90b19zZWFyY2hfZm9yID0gQ29uZmlndXJhdGlvbihwbGF0
Zm9ybT0nTWFjJywgc3R5bGU9J0RlYnVnJykKLSAgICAgICAgbWF0Y2hpbmdfY29uZmlndXJhdGlv
bnMgPSBzZWxmLmRhdGFiYXNlLnNlYXJjaF9mb3JfY29uZmlndXJhdGlvbihjb25maWd1cmF0aW9u
X3RvX3NlYXJjaF9mb3IpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoNCwgbGVuKG1hdGNoaW5n
X2NvbmZpZ3VyYXRpb25zKSkKLSAgICAgICAgZm9yIGNvbmZpZyBpbiBtYXRjaGluZ19jb25maWd1
cmF0aW9uczoKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29uZmlndXJhdGlvbl90b19z
ZWFyY2hfZm9yLCBjb25maWcpCi0KLSAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZf
bm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2Nr
Q2Fzc2FuZHJhQ29udGV4dCkKLSAgICBkZWYgdGVzdF9jb25maWd1cmF0aW9uX2J5X3BsYXRmb3Jt
X3dpdGhfZmxhdm9yKHNlbGYsIHJlZGlzPVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fzc2FuZHJh
Q29udGV4dCk6Ci0gICAgICAgIHNlbGYuaW5pdF9kYXRhYmFzZShyZWRpcz1yZWRpcywgY2Fzc2Fu
ZHJhPWNhc3NhbmRyYSkKLSAgICAgICAgc2VsZi5yZWdpc3Rlcl9jb25maWd1cmF0aW9ucygpCi0K
LSAgICAgICAgY29uZmlndXJhdGlvbl90b19zZWFyY2hfZm9yID0gQ29uZmlndXJhdGlvbihwbGF0
Zm9ybT0nTWFjJywgc3R5bGU9J0RlYnVnJywgZmxhdm9yPSd3azEnKQotICAgICAgICBtYXRjaGlu
Z19jb25maWd1cmF0aW9ucyA9IHNlbGYuZGF0YWJhc2Uuc2VhcmNoX2Zvcl9jb25maWd1cmF0aW9u
KGNvbmZpZ3VyYXRpb25fdG9fc2VhcmNoX2ZvcikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgy
LCBsZW4obWF0Y2hpbmdfY29uZmlndXJhdGlvbnMpKQotICAgICAgICBmb3IgY29uZmlnIGluIG1h
dGNoaW5nX2NvbmZpZ3VyYXRpb25zOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb25m
aWd1cmF0aW9uX3RvX3NlYXJjaF9mb3IsIGNvbmZpZykKLQotICAgIEBXYWl0Rm9yRG9ja2VyVGVz
dENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tf
Y2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQotICAgIGRlZiB0ZXN0X2NvbmZpZ3VyYXRp
b25fYnlfcGxhdGZvcm1fYW5kX3ZlcnNpb24oc2VsZiwgcmVkaXM9U3RyaWN0UmVkaXMsIGNhc3Nh
bmRyYT1DYXNzYW5kcmFDb250ZXh0KToKLSAgICAgICAgc2VsZi5pbml0X2RhdGFiYXNlKHJlZGlz
PXJlZGlzLCBjYXNzYW5kcmE9Y2Fzc2FuZHJhKQotICAgICAgICBzZWxmLnJlZ2lzdGVyX2NvbmZp
Z3VyYXRpb25zKCkKLQotICAgICAgICBjb25maWd1cmF0aW9uX3RvX3NlYXJjaF9mb3IgPSBDb25m
aWd1cmF0aW9uKHBsYXRmb3JtPSdNYWMnLCB2ZXJzaW9uPScxMC4xMycsIHN0eWxlPSdSZWxlYXNl
JykKLSAgICAgICAgbWF0Y2hpbmdfY29uZmlndXJhdGlvbnMgPSBzZWxmLmRhdGFiYXNlLnNlYXJj
aF9mb3JfY29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uX3RvX3NlYXJjaF9mb3IpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoMiwgbGVuKG1hdGNoaW5nX2NvbmZpZ3VyYXRpb25zKSkKLSAgICAg
ICAgZm9yIGNvbmZpZyBpbiBtYXRjaGluZ19jb25maWd1cmF0aW9uczoKLSAgICAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoY29uZmlndXJhdGlvbl90b19zZWFyY2hfZm9yLCBjb25maWcpCi0KLSAg
ICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFr
ZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKLSAgICBk
ZWYgdGVzdF9jb25maWd1cmF0aW9uX2J5X21vZGVsKHNlbGYsIHJlZGlzPVN0cmljdFJlZGlzLCBj
YXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCk6Ci0gICAgICAgIHNlbGYuaW5pdF9kYXRhYmFzZShy
ZWRpcz1yZWRpcywgY2Fzc2FuZHJhPWNhc3NhbmRyYSkKLSAgICAgICAgc2VsZi5yZWdpc3Rlcl9j
b25maWd1cmF0aW9ucygpCi0gICAgICAgIGNvbmZpZ3VyYXRpb25fdG9fc2VhcmNoX2ZvciA9IENv
bmZpZ3VyYXRpb24obW9kZWw9J2lQaG9uZSA4JykKLSAgICAgICAgbWF0Y2hpbmdfY29uZmlndXJh
dGlvbnMgPSBzZWxmLmRhdGFiYXNlLnNlYXJjaF9mb3JfY29uZmlndXJhdGlvbihjb25maWd1cmF0
aW9uX3RvX3NlYXJjaF9mb3IpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoNCwgbGVuKG1hdGNo
aW5nX2NvbmZpZ3VyYXRpb25zKSkKLSAgICAgICAgZm9yIGNvbmZpZyBpbiBtYXRjaGluZ19jb25m
aWd1cmF0aW9uczoKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29uZmlndXJhdGlvbl90
b19zZWFyY2hfZm9yLCBjb25maWcpCi0KLSAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tf
aWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1N
b2NrQ2Fzc2FuZHJhQ29udGV4dCkKLSAgICBkZWYgdGVzdF9jb25maWd1cmF0aW9uX2J5X2FyY2hp
dGVjdHVyZShzZWxmLCByZWRpcz1TdHJpY3RSZWRpcywgY2Fzc2FuZHJhPUNhc3NhbmRyYUNvbnRl
eHQpOgotICAgICAgICBzZWxmLmluaXRfZGF0YWJhc2UocmVkaXM9cmVkaXMsIGNhc3NhbmRyYT1j
YXNzYW5kcmEpCi0gICAgICAgIHNlbGYucmVnaXN0ZXJfY29uZmlndXJhdGlvbnMoKQotCi0gICAg
ICAgIGNvbmZpZ3VyYXRpb25fdG9fc2VhcmNoX2ZvciA9IENvbmZpZ3VyYXRpb24oYXJjaGl0ZWN0
dXJlPSd4ODZfNjQnLCBzdHlsZT0nUmVsZWFzZScpCi0gICAgICAgIG1hdGNoaW5nX2NvbmZpZ3Vy
YXRpb25zID0gc2VsZi5kYXRhYmFzZS5zZWFyY2hfZm9yX2NvbmZpZ3VyYXRpb24oY29uZmlndXJh
dGlvbl90b19zZWFyY2hfZm9yKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDYsIGxlbihtYXRj
aGluZ19jb25maWd1cmF0aW9ucykpCi0gICAgICAgIGZvciBjb25maWcgaW4gbWF0Y2hpbmdfY29u
ZmlndXJhdGlvbnM6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbmZpZ3VyYXRpb25f
dG9fc2VhcmNoX2ZvciwgY29uZmlnKQotCi0gICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2Nr
X2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9
TW9ja0Nhc3NhbmRyYUNvbnRleHQpCi0gICAgZGVmIHRlc3RfcmVjZW50X2NvbmZpZ3VyYXRpb25z
KHNlbGYsIHJlZGlzPVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCk6Ci0g
ICAgICAgIHNlbGYuaW5pdF9kYXRhYmFzZShyZWRpcz1yZWRpcywgY2Fzc2FuZHJhPWNhc3NhbmRy
YSkKLSAgICAgICAgc2VsZi5yZWdpc3Rlcl9jb25maWd1cmF0aW9ucygpCi0KLSAgICAgICAgcmVj
ZW50X2NvbmZpZ3VyYXRpb25zID0gc2VsZi5kYXRhYmFzZS5zZWFyY2hfZm9yX3JlY2VudF9jb25m
aWd1cmF0aW9uKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxMiwgbGVuKHJlY2VudF9jb25m
aWd1cmF0aW9ucykpCi0KLSAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9j
a2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2Fu
ZHJhQ29udGV4dCkKLSAgICBkZWYgdGVzdF9leHBpcmVkX2NvbmZpZ3VyYXRpb25zKHNlbGYsIHJl
ZGlzPVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCk6Ci0gICAgICAgIHNl
bGYuaW5pdF9kYXRhYmFzZShyZWRpcz1yZWRpcywgY2Fzc2FuZHJhPWNhc3NhbmRyYSkKLSAgICAg
ICAgc2VsZi5yZWdpc3Rlcl9jb25maWd1cmF0aW9ucygpCi0KLSAgICAgICAgcmVjZW50X2NvbmZp
Z3VyYXRpb25zID0gc2VsZi5kYXRhYmFzZS5zZWFyY2hfZm9yX2NvbmZpZ3VyYXRpb24oKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKDI0LCBsZW4ocmVjZW50X2NvbmZpZ3VyYXRpb25zKSkKLQot
ICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1G
YWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQotICAg
IGRlZiB0ZXN0X3JlY2VudF9jb25maWd1cmF0aW9uc19jb25zdHJhaW5lZChzZWxmLCByZWRpcz1T
dHJpY3RSZWRpcywgY2Fzc2FuZHJhPUNhc3NhbmRyYUNvbnRleHQpOgotICAgICAgICBzZWxmLmlu
aXRfZGF0YWJhc2UocmVkaXM9cmVkaXMsIGNhc3NhbmRyYT1jYXNzYW5kcmEpCi0gICAgICAgIHNl
bGYucmVnaXN0ZXJfY29uZmlndXJhdGlvbnMoKQotCi0gICAgICAgIGNvbmZpZ3VyYXRpb25fdG9f
c2VhcmNoX2ZvciA9IENvbmZpZ3VyYXRpb24oYXJjaGl0ZWN0dXJlPSdhcm02NCcsIHN0eWxlPSdS
ZWxlYXNlJykKLSAgICAgICAgbWF0Y2hpbmdfY29uZmlndXJhdGlvbnMgPSBzZWxmLmRhdGFiYXNl
LnNlYXJjaF9mb3JfcmVjZW50X2NvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbl90b19zZWFyY2hf
Zm9yKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihtYXRjaGluZ19jb25maWd1cmF0
aW9ucykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWF0Y2hpbmdfY29uZmlndXJhdGlvbnNb
MF0sIGNvbmZpZ3VyYXRpb25fdG9fc2VhcmNoX2ZvcikKLQotICAgIEBXYWl0Rm9yRG9ja2VyVGVz
dENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tf
Y2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQotICAgIGRlZiB0ZXN0X3JlY2VudF9jb25m
aWd1cmF0aW9uc19jb25zdHJhaW5lZF9ieV92ZXJzaW9uKHNlbGYsIHJlZGlzPVN0cmljdFJlZGlz
LCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCk6Ci0gICAgICAgIHNlbGYuaW5pdF9kYXRhYmFz
ZShyZWRpcz1yZWRpcywgY2Fzc2FuZHJhPWNhc3NhbmRyYSkKLSAgICAgICAgc2VsZi5yZWdpc3Rl
cl9jb25maWd1cmF0aW9ucygpCi0KLSAgICAgICAgY29uZmlndXJhdGlvbl90b19zZWFyY2hfZm9y
ID0gQ29uZmlndXJhdGlvbih2ZXJzaW9uPScxMicsIGlzX3NpbXVsYXRvcj1UcnVlKQotICAgICAg
ICBtYXRjaGluZ19jb25maWd1cmF0aW9ucyA9IHNlbGYuZGF0YWJhc2Uuc2VhcmNoX2Zvcl9yZWNl
bnRfY29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uX3RvX3NlYXJjaF9mb3IpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoMywgbGVuKG1hdGNoaW5nX2NvbmZpZ3VyYXRpb25zKSkKLSAgICAgICAg
Zm9yIGNvbmZpZyBpbiBtYXRjaGluZ19jb25maWd1cmF0aW9uczoKLSAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoY29uZmlndXJhdGlvbl90b19zZWFyY2hfZm9yLCBjb25maWcpCi0KLSAgICBA
V2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0
cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKLSAgICBkZWYg
dGVzdF9yZXBvcHVsYXRlX3JlY2VudChzZWxmLCByZWRpcz1TdHJpY3RSZWRpcywgY2Fzc2FuZHJh
PUNhc3NhbmRyYUNvbnRleHQpOgotICAgICAgICBzZWxmLmluaXRfZGF0YWJhc2UocmVkaXM9cmVk
aXMsIGNhc3NhbmRyYT1jYXNzYW5kcmEpCi0gICAgICAgIHNlbGYucmVnaXN0ZXJfY29uZmlndXJh
dGlvbnMoKQotCi0gICAgICAgIHNlbGYuZGF0YWJhc2UucmVkaXMuZmx1c2hkYigpCi0KLSAgICAg
ICAgZGF0YWJhc2UgPSBDb25maWd1cmF0aW9uQ29udGV4dChyZWRpcz1zZWxmLmRhdGFiYXNlLnJl
ZGlzLCBjYXNzYW5kcmE9c2VsZi5kYXRhYmFzZS5jYXNzYW5kcmEpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoMTIsIGxlbihkYXRhYmFzZS5zZWFyY2hfZm9yX3JlY2VudF9jb25maWd1cmF0aW9u
KCkpKQotCi0gICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2Nr
X3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRl
eHQpCi0gICAgZGVmIHRlc3RfcGFydGl0aW9uX2J5X2NvbmZpZ3VyYXRpb24oc2VsZiwgcmVkaXM9
U3RyaWN0UmVkaXMsIGNhc3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0KToKLSAgICAgICAgc2VsZi5p
bml0X2RhdGFiYXNlKHJlZGlzPXJlZGlzLCBjYXNzYW5kcmE9Y2Fzc2FuZHJhKQotICAgICAgICBz
ZWxmLnJlZ2lzdGVyX2NvbmZpZ3VyYXRpb25zKCkKLQotICAgICAgICBjbGFzcyBFeGFtcGxlTW9k
ZWwoQ2x1c3RlcmVkQnlDb25maWd1cmF0aW9uKToKLSAgICAgICAgICAgIF9fdGFibGVfbmFtZV9f
ID0gJ2V4YW1wbGVfdGFibGUnCi0gICAgICAgICAgICBicmFuY2ggPSBjb2x1bW5zLlRleHQocGFy
dGl0aW9uX2tleT1UcnVlLCByZXF1aXJlZD1UcnVlKQotICAgICAgICAgICAgaW5kZXggPSBjb2x1
bW5zLkludGVnZXIocHJpbWFyeV9rZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkKLSAgICAgICAgICAg
IHNkayA9IGNvbHVtbnMuVGV4dChwcmltYXJ5X2tleT1UcnVlLCByZXF1aXJlZD1UcnVlKQotICAg
ICAgICAgICAganNvbiA9IGNvbHVtbnMuVGV4dCgpCi0KLSAgICAgICAgd2l0aCBzZWxmLmRhdGFi
YXNlOgotICAgICAgICAgICAgc2VsZi5kYXRhYmFzZS5jYXNzYW5kcmEuY3JlYXRlX3RhYmxlKEV4
YW1wbGVNb2RlbCkKLSAgICAgICAgICAgIGZvciBjb25maWd1cmF0aW9uIGluIHNlbGYuQ09ORklH
VVJBVElPTlM6Ci0gICAgICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoNSk6Ci0gICAgICAgICAg
ICAgICAgICAgIHNlbGYuZGF0YWJhc2UuaW5zZXJ0X3Jvd193aXRoX2NvbmZpZ3VyYXRpb24oRXhh
bXBsZU1vZGVsLl9fdGFibGVfbmFtZV9fLCBjb25maWd1cmF0aW9uLCBicmFuY2g9Q29tbWl0Q29u
dGV4dC5ERUZBVUxUX0JSQU5DSF9LRVksIGluZGV4PWksIHNkaz1jb25maWd1cmF0aW9uLnNkaywg
anNvbj1jb25maWd1cmF0aW9uLnRvX2pzb24oKSkKLQotICAgICAgICAgICAgZm9yIGNvbmZpZ3Vy
YXRpb24gaW4gc2VsZi5DT05GSUdVUkFUSU9OUzoKLSAgICAgICAgICAgICAgICByZXN1bHQgPSBz
ZWxmLmRhdGFiYXNlLnNlbGVjdF9mcm9tX3RhYmxlX3dpdGhfY29uZmlndXJhdGlvbnMoRXhhbXBs
ZU1vZGVsLl9fdGFibGVfbmFtZV9fLCBbY29uZmlndXJhdGlvbl0sIGluZGV4PTIpLmdldChjb25m
aWd1cmF0aW9uLCBbXSkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihy
ZXN1bHQpLCBmJ1NlYXJjaGluZyBieSB7Y29uZmlndXJhdGlvbn0gZmFpbGVkLCBmb3VuZCB7bGVu
KHJlc3VsdCl9IGVsZW1lbnRzIGFuZCBleHBlY3RlZCAxJykKLSAgICAgICAgICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHJlc3VsdFswXS5qc29uLCBjb25maWd1cmF0aW9uLnRvX2pzb24oKSkKLQot
ICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1G
YWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQotICAg
IGRlZiB0ZXN0X3BhcnRpdGlvbl9ieV9wYXJ0aWFsX2NvbmZpZ3VyYXRpb24oc2VsZiwgcmVkaXM9
U3RyaWN0UmVkaXMsIGNhc3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0KToKLSAgICAgICAgc2VsZi5p
bml0X2RhdGFiYXNlKHJlZGlzPXJlZGlzLCBjYXNzYW5kcmE9Y2Fzc2FuZHJhKQotICAgICAgICBz
ZWxmLnJlZ2lzdGVyX2NvbmZpZ3VyYXRpb25zKCkKLQotICAgICAgICBjbGFzcyBFeGFtcGxlTW9k
ZWwoQ2x1c3RlcmVkQnlDb25maWd1cmF0aW9uKToKLSAgICAgICAgICAgIF9fdGFibGVfbmFtZV9f
ID0gJ2V4YW1wbGVfdGFibGUnCi0gICAgICAgICAgICBicmFuY2ggPSBjb2x1bW5zLlRleHQocGFy
dGl0aW9uX2tleT1UcnVlLCByZXF1aXJlZD1UcnVlKQotICAgICAgICAgICAgaW5kZXggPSBjb2x1
bW5zLkludGVnZXIocHJpbWFyeV9rZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkKLSAgICAgICAgICAg
IGpzb24gPSBjb2x1bW5zLlRleHQoKQotCi0gICAgICAgIHdpdGggc2VsZi5kYXRhYmFzZToKLSAg
ICAgICAgICAgIHNlbGYuZGF0YWJhc2UuY2Fzc2FuZHJhLmNyZWF0ZV90YWJsZShFeGFtcGxlTW9k
ZWwpCi0gICAgICAgICAgICBmb3IgY29uZmlndXJhdGlvbiBpbiBzZWxmLkNPTkZJR1VSQVRJT05T
OgotICAgICAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKDUpOgotICAgICAgICAgICAgICAgICAg
ICBzZWxmLmRhdGFiYXNlLmluc2VydF9yb3dfd2l0aF9jb25maWd1cmF0aW9uKEV4YW1wbGVNb2Rl
bC5fX3RhYmxlX25hbWVfXywgY29uZmlndXJhdGlvbiwgYnJhbmNoPUNvbW1pdENvbnRleHQuREVG
QVVMVF9CUkFOQ0hfS0VZLCBpbmRleD1pLCBqc29uPWNvbmZpZ3VyYXRpb24udG9fanNvbigpKQot
Ci0gICAgICAgICAgICBjb25maWd1cmF0aW9uX3RvX3NlYXJjaF9mb3IgPSBDb25maWd1cmF0aW9u
KG1vZGVsPSdpUGhvbmUgWHMnKQotICAgICAgICAgICAgcmVzdWx0cyA9IHNlbGYuZGF0YWJhc2Uu
c2VsZWN0X2Zyb21fdGFibGVfd2l0aF9jb25maWd1cmF0aW9ucyhFeGFtcGxlTW9kZWwuX190YWJs
ZV9uYW1lX18sIFtjb25maWd1cmF0aW9uX3RvX3NlYXJjaF9mb3JdLCBpbmRleD00KQotICAgICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyLCBsZW4ocmVzdWx0cyksIGYnU2VhcmNoaW5nIGJ5IHtj
b25maWd1cmF0aW9uX3RvX3NlYXJjaF9mb3J9IGZhaWxlZCwgZm91bmQge2xlbihyZXN1bHRzKX0g
ZWxlbWVudHMgYW5kIGV4cGVjdGVkIDInKQotICAgICAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4g
cmVzdWx0cy5pdGVtcygpOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQ29uZmln
dXJhdGlvbi5mcm9tX2pzb24odmFsdWVbMF0uanNvbiksIENvbmZpZ3VyYXRpb24uZnJvbV9qc29u
KGtleS50b19qc29uKCkpKQpJbmRleDogVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9k
ZWwvZG9ja2VyLWNvbXBvc2UueW1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL3Jlc3VsdHNkYnB5L3Jl
c3VsdHNkYnB5L21vZGVsL2RvY2tlci1jb21wb3NlLnltbAkocmV2aXNpb24gMjY1NTMxKQorKysg
VG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvZG9ja2VyLWNvbXBvc2UueW1sCShu
b25leGlzdGVudCkKQEAgLTEsNDIgKzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0j
IGFyZSBtZXQ6Ci0jIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAotIyBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
Ci0jIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSMgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIKLSMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLQotdmVyc2lvbjogIjMiCi1zZXJ2aWNlczoKLQotICBjYXNzYW5kcmE6Ci0gICAg
aW1hZ2U6IGNhc3NhbmRyYQotICAgIGNvbnRhaW5lcl9uYW1lOiByZXN1bHRzZGJweS1jYXNzYW5k
cmEKLSAgICBwb3J0czoKLSAgICAgIC0gIjkwNDI6OTA0MiIKLSAgICAgIC0gIjcxOTk6NzE5OSIK
LSAgICB2b2x1bWVzOgotICAgICAgLSBjYXNzYW5kcmFkYXRhOi9kYXRhL2Nhc3NhbmRyYQotCi0g
IHJlZGlzOgotICAgIGltYWdlOiByZWRpcwotICAgIGNvbnRhaW5lcl9uYW1lOiByZXN1bHRzZGJw
eS1yZWRpcwotICAgIHBvcnRzOgotICAgICAgLSAiNjM3OTo2Mzc5IgotCi12b2x1bWVzOgotICBj
YXNzYW5kcmFkYXRhOgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IFRvb2xzL3Jl
c3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL2RvY2tlci5weQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9kb2NrZXIucHkJKHJldmlzaW9uIDI2NTUz
MSkKKysrIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL2RvY2tlci5weQkobm9u
ZXhpc3RlbnQpCkBAIC0xLDIxMCArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMg
YXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECi0jIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IK
LSMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotIyBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UgotIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotCi1pbXBvcnQgYXRleGl0Ci1pbXBvcnQgb3MKLWltcG9ydCByZQotaW1wb3J0IHNv
Y2tldAotaW1wb3J0IHN1YnByb2Nlc3MKLWltcG9ydCB0aW1lCi0KLWZyb20gY2Fzc2FuZHJhLmNs
dXN0ZXIgaW1wb3J0IENsdXN0ZXIsIE5vSG9zdEF2YWlsYWJsZQotCi0KLWNsYXNzIERvY2tlcihv
YmplY3QpOgotCi0gICAgRE9DS0VSX0JJTiA9ICcvdXNyL2xvY2FsL2Jpbi9kb2NrZXInCi0gICAg
RE9DS0VSX0NPTVBPU0UgPSAnL3Vzci9sb2NhbC9iaW4vZG9ja2VyLWNvbXBvc2UnCi0gICAgREVG
QVVMVF9QUk9KRUNUID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmFic3Bh
dGgoX19maWxlX18pKSwgJ2RvY2tlci1jb21wb3NlLnltbCcpCi0gICAgUFNfUE9SVCA9IHJlLmNv
bXBpbGUocicwLjAuMC4wOig/UDxwb3J0PlxkKylcLVw+XGQrL3RjcCcpCi0KLSAgICBfaGFzX2Rv
Y2tlciA9IE5vbmUKLSAgICBfZG9ja2VyX3N0YWNrID0gMAotICAgIF9wcm9qZWN0X3N0YWNrID0g
e30KLSAgICBfaW5zdGFuY2VfZm9yX3Byb2plY3QgPSB7fQotCi0gICAgQGNsYXNzbWV0aG9kCi0g
ICAgZGVmIGluc3RhbGxlZChjbHMpOgotICAgICAgICBpZiBjbHMuX2hhc19kb2NrZXIgaXMgbm90
IE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gY2xzLl9oYXNfZG9ja2VyCi0KLSAgICAgICAgdHJ5
OgotICAgICAgICAgICAgd2l0aCBvcGVuKG9zLmRldm51bGwsICd3JykgYXMgZGV2bnVsbDoKLSAg
ICAgICAgICAgICAgICBzdWJwcm9jZXNzLmNoZWNrX2NhbGwoW2Nscy5ET0NLRVJfQklOLCAnLXYn
XSwgc3Rkb3V0PWRldm51bGwsIHN0ZGVycj1kZXZudWxsKQotICAgICAgICAgICAgY2xzLl9oYXNf
ZG9ja2VyID0gVHJ1ZQotICAgICAgICBleGNlcHQgKE9TRXJyb3IsIHN1YnByb2Nlc3MuQ2FsbGVk
UHJvY2Vzc0Vycm9yKToKLSAgICAgICAgICAgIHByaW50KCdEb2NrZXIgbm90IGluc3RhbGxlZCwg
cmVxdWlyZWQgcmVzb3VyY2VzIHdpbGwgYmUgbW9ja2VkLiBEb3dubG9hZCBpdCBhdCBodHRwczov
L2Rvd25sb2FkLmRvY2tlci5jb20vbWFjL3N0YWJsZS9Eb2NrZXIuZG1nJykKLSAgICAgICAgICAg
IGNscy5faGFzX2RvY2tlciA9IEZhbHNlCi0gICAgICAgIHJldHVybiBjbHMuX2hhc19kb2NrZXIK
LQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBpc19ydW5uaW5nKGNscyk6Ci0gICAgICAgIHRy
eToKLSAgICAgICAgICAgIHdpdGggb3Blbihvcy5kZXZudWxsLCAndycpIGFzIGRldm51bGw6Ci0g
ICAgICAgICAgICAgICAgc3VicHJvY2Vzcy5jaGVja19jYWxsKFtjbHMuRE9DS0VSX0JJTiwgJ2Nv
bnRhaW5lcicsICdscycsICctYSddLCBzdGRvdXQ9ZGV2bnVsbCwgc3RkZXJyPWRldm51bGwpCi0g
ICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAgICBleGNlcHQgKE9TRXJyb3IsIHN1YnByb2Nl
c3MuQ2FsbGVkUHJvY2Vzc0Vycm9yKToKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotCi0gICAg
QGNsYXNzbWV0aG9kCi0gICAgZGVmIHN0YXJ0KGNscywgdGltZW91dD02MCk6Ci0gICAgICAgIGlm
IGNscy5pc19ydW5uaW5nKCk6Ci0gICAgICAgICAgICByZXR1cm4KLQotICAgICAgICBpZiBub3Qg
Y2xzLmluc3RhbGxlZCgpOgotICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdEb2NrZXIg
bm90IGluc3RhbGxlZCcpCi0KLSAgICAgICAgd2l0aCBvcGVuKG9zLmRldm51bGwsICd3JykgYXMg
ZGV2bnVsbDoKLSAgICAgICAgICAgIHN1YnByb2Nlc3MuY2hlY2tfY2FsbChbJy91c3IvYmluL29w
ZW4nLCAnLS1iYWNrZ3JvdW5kJywgJy1hJywgJ0RvY2tlciddLCBzdGRvdXQ9ZGV2bnVsbCwgc3Rk
ZXJyPWRldm51bGwpCi0KLSAgICAgICAgZGVhZGxpbmUgPSBOb25lIGlmIHRpbWVvdXQgaXMgTm9u
ZSBlbHNlICh0aW1lLnRpbWUoKSArIHRpbWVvdXQpCi0gICAgICAgIHdoaWxlIGRlYWRsaW5lIGlz
IE5vbmUgb3IgdGltZS50aW1lKCkgPCBkZWFkbGluZToKLSAgICAgICAgICAgIGlmIGNscy5pc19y
dW5uaW5nKCk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgICAgICB0aW1lLnNsZWVw
KDMpCi0gICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignRG9ja2VyIGZhaWxlZCB0byBzdGFydCcp
Ci0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgc3RvcChjbHMpOgotICAgICAgICBpZiBub3Qg
Y2xzLmlzX3J1bm5pbmcoKToKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICB3aXRoIG9wZW4o
b3MuZGV2bnVsbCwgJ3cnKSBhcyBkZXZudWxsOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAg
ICAgICAgIHN1YnByb2Nlc3MuY2hlY2tfY2FsbChbJy91c3IvYmluL2tpbGxhbGwnLCAnRG9ja2Vy
J10sIHN0ZG91dD1kZXZudWxsLCBzdGRlcnI9ZGV2bnVsbCkKLSAgICAgICAgICAgIGV4Y2VwdCBz
dWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvcjoKLSAgICAgICAgICAgICAgICByYWlzZSBSdW50
aW1lRXJyb3IoJ0ZhaWxlZCB0byBzaHV0ZG93biBEb2NrZXIsIG1heWJlIGl0IHdhcyBpbiB0aGUg
cHJvY2VzcyBvZiBxdWl0aW5nPycpCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgc3RhcnRf
cHJvamVjdChjbHMsIHByb2plY3QpOgotICAgICAgICBwcm9qZWN0ID0gb3MucGF0aC5hYnNwYXRo
KHByb2plY3QpCi0gICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzZmlsZShwcm9qZWN0KToKLSAgICAg
ICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcihmJ0Nhbm5vdCBmaW5kIERvY2tlciBwcm9qZWN0OiB7
cHJvamVjdH0nKQotICAgICAgICBpZiBub3QgY2xzLmlzX3J1bm5pbmcoKToKLSAgICAgICAgICAg
IHJhaXNlIFJ1bnRpbWVFcnJvcignQ2Fubm90IHN0YXJ0IHByb2plY3QgaWYgRG9ja2VyIGlzIG5v
dCBydW5uaW5nJykKLQotICAgICAgICB3aXRoIG9wZW4ob3MuZGV2bnVsbCwgJ3cnKSBhcyBkZXZu
dWxsOgotICAgICAgICAgICAgc3VicHJvY2Vzcy5jaGVja19jYWxsKFtjbHMuRE9DS0VSX0NPTVBP
U0UsICctZicsIHByb2plY3QsICd1cCcsICctZCcsICctLXF1aWV0LXB1bGwnLCAnLS1uby1jb2xv
ciddLCBzdGRvdXQ9ZGV2bnVsbCwgc3RkZXJyPWRldm51bGwpCi0KLSAgICBAY2xhc3NtZXRob2QK
LSAgICBkZWYgd2FpdF9mb3JfcHJvamVjdChjbHMsIHByb2plY3QpOgotICAgICAgICBwcm9qZWN0
ID0gb3MucGF0aC5hYnNwYXRoKHByb2plY3QpCi0gICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzZmls
ZShwcm9qZWN0KToKLSAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcihmJ0Nhbm5vdCBmaW5k
IERvY2tlciBwcm9qZWN0OiB7cHJvamVjdH0nKQotICAgICAgICBpZiBub3QgY2xzLmlzX3J1bm5p
bmcoKToKLSAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcihmJ0RvY2tlciBpcyBub3QgcnVu
bmluZywgY2Fubm90IHdhaXQgZm9yIHtwcm9qZWN0fScpCi0KLSAgICAgICAgaGFzX2Nhc3NhbmRy
YSA9IEZhbHNlCi0gICAgICAgIHBvcnRzID0gW10KLSAgICAgICAgd2l0aCBvcGVuKG9zLmRldm51
bGwsICd3JykgYXMgZGV2bnVsbDoKLSAgICAgICAgICAgIG91dHB1dCA9IHN1YnByb2Nlc3MuY2hl
Y2tfb3V0cHV0KFtjbHMuRE9DS0VSX0NPTVBPU0UsICctZicsIHByb2plY3QsICdwcyddLCBzdGRl
cnI9ZGV2bnVsbCkuZGVjb2RlKCd1dGYtOCcpCi0gICAgICAgICAgICBpZiBsZW4ob3V0cHV0LnNw
bGl0bGluZXMoKSkgPD0gMjoKLSAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoZid7
cHJvamVjdH0gaGFzIG5vdCBiZWVuIHN0YXJ0ZWQsIGNhbm5vdCB3YWl0IGZvciBpdCcpCi0gICAg
ICAgICAgICBmb3IgbGluZSBpbiBvdXRwdXQuc3BsaXRsaW5lcygpWzI6XToKLSAgICAgICAgICAg
ICAgICBpZiAnY2Fzc2FuZHJhJyBpbiBsaW5lOgotICAgICAgICAgICAgICAgICAgICBoYXNfY2Fz
c2FuZHJhID0gVHJ1ZQotICAgICAgICAgICAgICAgIGZvciBtYXRjaCBpbiBjbHMuUFNfUE9SVC5m
aW5kYWxsKGxpbmUpOgotICAgICAgICAgICAgICAgICAgICBwb3J0cy5hcHBlbmQoaW50KG1hdGNo
KSkKLQotICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgYWxsX3BvcnRzX29wZW4gPSBU
cnVlCi0gICAgICAgICAgICBmb3IgcG9ydCBpbiBwb3J0czoKLSAgICAgICAgICAgICAgICBzb2Mg
PSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19TVFJFQU0pCi0gICAg
ICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBzb2MuY29ubmVjdCgoJ2xvY2Fs
aG9zdCcsIHBvcnQpKQotICAgICAgICAgICAgICAgICAgICBzb2Muc2h1dGRvd24oMikKLSAgICAg
ICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICBleGNlcHQgQmFzZUV4Y2Vw
dGlvbjoKLSAgICAgICAgICAgICAgICAgICAgYWxsX3BvcnRzX29wZW4gPSBGYWxzZQotICAgICAg
ICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgaWYgYWxsX3BvcnRzX29wZW46Ci0gICAg
ICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBpZiBoYXNfY2Fzc2FuZHJhOgot
ICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbiA9IENsdXN0ZXIoWydsb2NhbGhvc3Qn
XSkuY29ubmVjdCgpCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uLmNsdXN0ZXIu
c2h1dGRvd24oKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgICAgICBl
eGNlcHQgTm9Ib3N0QXZhaWxhYmxlOgotICAgICAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAg
ICAgICB0aW1lLnNsZWVwKDMpCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgaXNfcHJvamVj
dF9ydW5uaW5nKGNscywgcHJvamVjdCk6Ci0gICAgICAgIHByb2plY3QgPSBvcy5wYXRoLmFic3Bh
dGgocHJvamVjdCkKLSAgICAgICAgaWYgbm90IG9zLnBhdGguaXNmaWxlKHByb2plY3QpOgotICAg
ICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKGYnQ2Fubm90IGZpbmQgRG9ja2VyIHByb2plY3Q6
IHtwcm9qZWN0fScpCi0KLSAgICAgICAgaWYgbm90IGNscy5pc19ydW5uaW5nKCk6Ci0gICAgICAg
ICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgd2l0aCBvcGVuKG9zLmRldm51bGwsICd3JykgYXMg
ZGV2bnVsbDoKLSAgICAgICAgICAgIG91dHB1dCA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KFtj
bHMuRE9DS0VSX0NPTVBPU0UsICctZicsIHByb2plY3QsICdwcyddLCBzdGRlcnI9ZGV2bnVsbCkK
LSAgICAgICAgICAgIHJldHVybiBsZW4ob3V0cHV0LnNwbGl0bGluZXMoKSkgPiAyCi0KLSAgICBA
Y2xhc3NtZXRob2QKLSAgICBkZWYgc3RvcF9wcm9qZWN0KGNscywgcHJvamVjdCk6Ci0gICAgICAg
IHByb2plY3QgPSBvcy5wYXRoLmFic3BhdGgocHJvamVjdCkKLSAgICAgICAgaWYgbm90IG9zLnBh
dGguaXNmaWxlKHByb2plY3QpOgotICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKGYnQ2Fu
bm90IGZpbmQgRG9ja2VyIHByb2plY3Q6IHtwcm9qZWN0fScpCi0gICAgICAgIGlmIG5vdCBjbHMu
aXNfcnVubmluZygpOgotICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdDYW5ub3Qgc3Rv
cCBwcm9qZWN0IGlmIERvY2tlciBpcyBub3QgcnVubmluZycpCi0KLSAgICAgICAgd2l0aCBvcGVu
KG9zLmRldm51bGwsICd3JykgYXMgZGV2bnVsbDoKLSAgICAgICAgICAgIHN1YnByb2Nlc3MuY2hl
Y2tfY2FsbChbY2xzLkRPQ0tFUl9DT01QT1NFLCAnLWYnLCBwcm9qZWN0LCAnZG93biddLCBzdGRv
dXQ9ZGV2bnVsbCwgc3RkZXJyPWRldm51bGwpCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYg
aW5zdGFuY2UoY2xzLCBwcm9qZWN0PURFRkFVTFRfUFJPSkVDVCk6Ci0gICAgICAgIHByb2plY3Qg
PSBvcy5wYXRoLmFic3BhdGgocHJvamVjdCkKLSAgICAgICAgaWYgcHJvamVjdCBub3QgaW4gY2xz
Ll9pbnN0YW5jZV9mb3JfcHJvamVjdDoKLSAgICAgICAgICAgIGNscy5faW5zdGFuY2VfZm9yX3By
b2plY3RbcHJvamVjdF0gPSBjbHMocHJvamVjdCkKLSAgICAgICAgICAgIGNscy5faW5zdGFuY2Vf
Zm9yX3Byb2plY3RbcHJvamVjdF0uX19lbnRlcl9fKCkKLSAgICAgICAgICAgIGF0ZXhpdC5yZWdp
c3RlcihjbHMuX2luc3RhbmNlX2Zvcl9wcm9qZWN0W3Byb2plY3RdLl9fZXhpdF9fKQotICAgICAg
ICByZXR1cm4gY2xzLl9pbnN0YW5jZV9mb3JfcHJvamVjdFtwcm9qZWN0XQotCi0gICAgZGVmIF9f
aW5pdF9fKHNlbGYsIHByb2plY3Q9REVGQVVMVF9QUk9KRUNUKToKLSAgICAgICAgaWYgbm90IHNl
bGYuaW5zdGFsbGVkKCk6Ci0gICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ0Nhbm5vdCBt
YW5hZ2UgYSBEb2NrZXIgaW5zdGFuY2UgaWYgRG9ja2VyIGlzIG5vdCBpbnN0YWxsZWQnKQotICAg
ICAgICBzZWxmLnByb2plY3QgPSBvcy5wYXRoLmFic3BhdGgocHJvamVjdCkKLSAgICAgICAgaWYg
bm90IG9zLnBhdGguaXNmaWxlKHNlbGYucHJvamVjdCk6Ci0gICAgICAgICAgICByYWlzZSBSdW50
aW1lRXJyb3IoZidDYW5ub3QgZmluZCBEb2NrZXIgcHJvamVjdDoge3NlbGYucHJvamVjdH0nKQot
Ci0gICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKLSAgICAgICAgaWYgRG9ja2VyLl9kb2NrZXJfc3Rh
Y2sgPT0gMDoKLSAgICAgICAgICAgIGlmIERvY2tlci5pc19ydW5uaW5nKCk6Ci0gICAgICAgICAg
ICAgICAgRG9ja2VyLl9kb2NrZXJfc3RhY2sgKz0gMQotICAgICAgICAgICAgZWxzZToKLSAgICAg
ICAgICAgICAgICBEb2NrZXIuc3RhcnQoKQotICAgICAgICBEb2NrZXIuX2RvY2tlcl9zdGFjayAr
PSAxCi0KLSAgICAgICAgaWYgRG9ja2VyLl9wcm9qZWN0X3N0YWNrLmdldChzZWxmLnByb2plY3Qs
IDApID09IDA6Ci0gICAgICAgICAgICBpZiBEb2NrZXIuaXNfcHJvamVjdF9ydW5uaW5nKHNlbGYu
cHJvamVjdCk6Ci0gICAgICAgICAgICAgICAgRG9ja2VyLl9wcm9qZWN0X3N0YWNrW3NlbGYucHJv
amVjdF0gPSBEb2NrZXIuX3Byb2plY3Rfc3RhY2suZ2V0KHNlbGYucHJvamVjdCwgMCkgKyAxCi0g
ICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIERvY2tlci5zdGFydF9wcm9qZWN0KHNl
bGYucHJvamVjdCkKLSAgICAgICAgICAgIERvY2tlci53YWl0X2Zvcl9wcm9qZWN0KHNlbGYucHJv
amVjdCkKLSAgICAgICAgRG9ja2VyLl9wcm9qZWN0X3N0YWNrW3NlbGYucHJvamVjdF0gPSBEb2Nr
ZXIuX3Byb2plY3Rfc3RhY2suZ2V0KHNlbGYucHJvamVjdCwgMCkgKyAxCi0KLSAgICBkZWYgX19l
eGl0X18oc2VsZiwgKmFyZ3MpOgotICAgICAgICBEb2NrZXIuX3Byb2plY3Rfc3RhY2tbc2VsZi5w
cm9qZWN0XSA9IERvY2tlci5fcHJvamVjdF9zdGFjay5nZXQoc2VsZi5wcm9qZWN0LCAwKSAtIDEK
LSAgICAgICAgaWYgRG9ja2VyLl9wcm9qZWN0X3N0YWNrW3NlbGYucHJvamVjdF0gPD0gMDoKLSAg
ICAgICAgICAgIERvY2tlci5zdG9wX3Byb2plY3Qoc2VsZi5wcm9qZWN0KQotCi0gICAgICAgIERv
Y2tlci5fZG9ja2VyX3N0YWNrIC09IDEKLSAgICAgICAgaWYgRG9ja2VyLl9kb2NrZXJfc3RhY2sg
PD0gMDoKLSAgICAgICAgICAgIERvY2tlci5zdG9wKCkKSW5kZXg6IFRvb2xzL3Jlc3VsdHNkYnB5
L3Jlc3VsdHNkYnB5L21vZGVsL2RvY2tlcl91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9kb2NrZXJfdW5pdHRlc3QucHkJKHJldmlz
aW9uIDI2NTUzMSkKKysrIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL2RvY2tl
cl91bml0dGVzdC5weQkobm9uZXhpc3RlbnQpCkBAIC0xLDUwICswLDAgQEAKLSMgQ29weXJpZ2h0
IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
IkFTIElTIiBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUgotIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0j
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSCi0jIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0jIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLWltcG9ydCBtb2NrCi0KLWZyb20gcmVzdWx0c2Ri
cHkubW9kZWwuZG9ja2VyIGltcG9ydCBEb2NrZXIKLWZyb20gcmVzdWx0c2RicHkubW9kZWwud2Fp
dF9mb3JfZG9ja2VyX3Rlc3RfY2FzZSBpbXBvcnQgV2FpdEZvckRvY2tlclRlc3RDYXNlCi0KLQot
Y2xhc3MgRG9ja2VyVW5pdHRlc3QoV2FpdEZvckRvY2tlclRlc3RDYXNlKToKLQotICAgIEBXYWl0
Rm9yRG9ja2VyVGVzdENhc2UucnVuX2lmX2hhc19kb2NrZXIoKQotICAgIGRlZiB0ZXN0X3N0YXJ0
KHNlbGYpOgotICAgICAgICB3aXRoIERvY2tlci5pbnN0YW5jZSgpOgotICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRUcnVlKERvY2tlci5pc19ydW5uaW5nKCkpCi0KLSAgICBAV2FpdEZvckRvY2tlclRl
c3RDYXNlLnJ1bl9pZl9oYXNfZG9ja2VyKCkKLSAgICBkZWYgdGVzdF9zdGFjayhzZWxmKToKLSAg
ICAgICAgd2l0aCBEb2NrZXIuaW5zdGFuY2UoKToKLSAgICAgICAgICAgIGRlZiBzdWJwcm9jZXNz
X2NhbGxiYWNrKCphcmdzLCAqKmt3YXJncyk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYu
ZmFpbCgnRG9ja2VyIGluc3RhbmNlcyBub3QgY29ycmVjdGx5IHN0YWNraW5nJykKLQotICAgICAg
ICAgICAgIyBUaGUgdGVzdCBoZXJlIGlzIHRoYXQgRG9ja2VyIGlzIGNvcnJlY3RseSBzdGFja2lu
ZyBhbmQgbm8gc3VicHJvY2VzcyBjYWxscyBhcmUgYmVpbmcgbWFkZSBhZnRlciBEb2NrZXIgaXMg
YWxyZWFkeSBydW5uaW5nLgotICAgICAgICAgICAgd2l0aCBtb2NrLnBhdGNoKCdzdWJwcm9jZXNz
LmNoZWNrX2NhbGwnLCBuZXc9c3VicHJvY2Vzc19jYWxsYmFjayksIG1vY2sucGF0Y2goJ3N1YnBy
b2Nlc3MuY2hlY2tfb3V0cHV0JywgbmV3PXN1YnByb2Nlc3NfY2FsbGJhY2spOgotICAgICAgICAg
ICAgICAgIHdpdGggRG9ja2VyLmluc3RhbmNlKCk6Ci0gICAgICAgICAgICAgICAgICAgIHBhc3MK
LQotICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UucnVuX2lmX2hhc19kb2NrZXIoKQotICAgIGRl
ZiB0ZXN0X3Byb2plY3RfcnVubmluZyhzZWxmKToKLSAgICAgICAgd2l0aCBEb2NrZXIuaW5zdGFu
Y2UoKToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShEb2NrZXIuaXNfcHJvamVjdF9ydW5u
aW5nKERvY2tlci5ERUZBVUxUX1BST0pFQ1QpKQpJbmRleDogVG9vbHMvcmVzdWx0c2RicHkvcmVz
dWx0c2RicHkvbW9kZWwvZmFpbHVyZV9jb250ZXh0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL3Jl
c3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL2ZhaWx1cmVfY29udGV4dC5weQkocmV2aXNpb24g
MjY1NTMxKQorKysgVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvZmFpbHVyZV9j
b250ZXh0LnB5CShub25leGlzdGVudCkKQEAgLTEsMjA2ICswLDAgQEAKLSMgQ29weXJpZ2h0IChD
KSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0j
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUgotIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0jIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSCi0jIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0jIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLWltcG9ydCBjYWxlbmRhcgotaW1wb3J0IGNvbGxlY3Rp
b25zCi1pbXBvcnQganNvbgotaW1wb3J0IHRpbWUKLQotZnJvbSBjYXNzYW5kcmEuY3FsZW5naW5l
IGltcG9ydCBjb2x1bW5zCi1mcm9tIGNhc3NhbmRyYS5jcWxlbmdpbmUubW9kZWxzIGltcG9ydCBN
b2RlbAotZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUKLWZyb20gcmVzdWx0c2RicHkuY29u
dHJvbGxlci5jb21taXQgaW1wb3J0IENvbW1pdAotZnJvbSByZXN1bHRzZGJweS5tb2RlbC5jb21t
aXRfY29udGV4dCBpbXBvcnQgQ29tbWl0Q29udGV4dAotZnJvbSByZXN1bHRzZGJweS5tb2RlbC5j
b25maWd1cmF0aW9uX2NvbnRleHQgaW1wb3J0IENsdXN0ZXJlZEJ5Q29uZmlndXJhdGlvbgotZnJv
bSByZXN1bHRzZGJweS5tb2RlbC51cGxvYWRfY29udGV4dCBpbXBvcnQgVXBsb2FkQ2FsbGJhY2tD
b250ZXh0Ci1mcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLnRlc3RfY29udGV4dCBpbXBvcnQgRXhwZWN0
YXRpb25zCi0KLQotY2xhc3MgRmFpbHVyZUNvbnRleHQoVXBsb2FkQ2FsbGJhY2tDb250ZXh0KToK
LSAgICBERUZBVUxUX0xJTUlUID0gMTAwCi0KLSAgICBjbGFzcyBUZXN0RmFpbHVyZXNCYXNlKENs
dXN0ZXJlZEJ5Q29uZmlndXJhdGlvbik6Ci0gICAgICAgIHN1aXRlID0gY29sdW1ucy5UZXh0KHBh
cnRpdGlvbl9rZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkKLSAgICAgICAgYnJhbmNoID0gY29sdW1u
cy5UZXh0KHBhcnRpdGlvbl9rZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkKLSAgICAgICAgdGVzdHMg
PSBjb2x1bW5zLlRleHQocmVxdWlyZWQ9VHJ1ZSkKLQotICAgICAgICBkZWYgdW5wYWNrKHNlbGYp
OgotICAgICAgICAgICAgcmVzdWx0cyA9IGpzb24ubG9hZHMoc2VsZi50ZXN0cykgaWYgc2VsZi50
ZXN0cyBlbHNlIHt9Ci0gICAgICAgICAgICBmb3IgdGVzdCBpbiByZXN1bHRzLmtleXMoKToKLSAg
ICAgICAgICAgICAgICByZXN1bHRzW3Rlc3RdID0gRXhwZWN0YXRpb25zLnN0YXRlX2lkc190b19z
dHJpbmcoW3Jlc3VsdHNbdGVzdF1dKQotICAgICAgICAgICAgcmVzdWx0c1sndXVpZCddID0gc2Vs
Zi51dWlkCi0gICAgICAgICAgICByZXN1bHRzWydzdGFydF90aW1lJ10gPSBjYWxlbmRhci50aW1l
Z20oc2VsZi5zdGFydF90aW1lLnRpbWV0dXBsZSgpKQotICAgICAgICAgICAgcmV0dXJuIHJlc3Vs
dHMKLQotICAgIGNsYXNzIFRlc3RGYWlsdXJlc0J5Q29tbWl0KFRlc3RGYWlsdXJlc0Jhc2UpOgot
ICAgICAgICBfX3RhYmxlX25hbWVfXyA9ICd0ZXN0X2ZhaWx1cmVzX2J5X2NvbW1pdCcKLSAgICAg
ICAgdXVpZCA9IGNvbHVtbnMuQmlnSW50KHByaW1hcnlfa2V5PVRydWUsIHJlcXVpcmVkPVRydWUs
IGNsdXN0ZXJpbmdfb3JkZXI9J0RFU0MnKQotICAgICAgICBzZGsgPSBjb2x1bW5zLlRleHQocHJp
bWFyeV9rZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkKLSAgICAgICAgc3RhcnRfdGltZSA9IGNvbHVt
bnMuRGF0ZVRpbWUocHJpbWFyeV9rZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkKLQotICAgIGNsYXNz
IFRlc3RGYWlsdXJlc0J5U3RhcnRUaW1lKFRlc3RGYWlsdXJlc0Jhc2UpOgotICAgICAgICBfX3Rh
YmxlX25hbWVfXyA9ICd0ZXN0X2ZhaWx1cmVzX2J5X3N0YXJ0X3RpbWUnCi0gICAgICAgIHN0YXJ0
X3RpbWUgPSBjb2x1bW5zLkRhdGVUaW1lKHByaW1hcnlfa2V5PVRydWUsIHJlcXVpcmVkPVRydWUs
IGNsdXN0ZXJpbmdfb3JkZXI9J0RFU0MnKQotICAgICAgICBzZGsgPSBjb2x1bW5zLlRleHQocHJp
bWFyeV9rZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkKLSAgICAgICAgdXVpZCA9IGNvbHVtbnMuQmln
SW50KHByaW1hcnlfa2V5PVRydWUsIHJlcXVpcmVkPVRydWUpCi0KLSAgICBjbGFzcyBVbmV4cGVj
dGVkVGVzdEZhaWx1cmVzQnlDb21taXQoVGVzdEZhaWx1cmVzQmFzZSk6Ci0gICAgICAgIF9fdGFi
bGVfbmFtZV9fID0gJ3VuZXhwZWN0ZWRfdGVzdF9mYWlsdXJlc19ieV9jb21taXQnCi0gICAgICAg
IHV1aWQgPSBjb2x1bW5zLkJpZ0ludChwcmltYXJ5X2tleT1UcnVlLCByZXF1aXJlZD1UcnVlLCBj
bHVzdGVyaW5nX29yZGVyPSdERVNDJykKLSAgICAgICAgc2RrID0gY29sdW1ucy5UZXh0KHByaW1h
cnlfa2V5PVRydWUsIHJlcXVpcmVkPVRydWUpCi0gICAgICAgIHN0YXJ0X3RpbWUgPSBjb2x1bW5z
LkRhdGVUaW1lKHByaW1hcnlfa2V5PVRydWUsIHJlcXVpcmVkPVRydWUpCi0KLSAgICBjbGFzcyBV
bmV4cGVjdGVkVGVzdEZhaWx1cmVzQnlTdGFydFRpbWUoVGVzdEZhaWx1cmVzQmFzZSk6Ci0gICAg
ICAgIF9fdGFibGVfbmFtZV9fID0gJ3VuZXhwZWN0ZWRfdGVzdF9mYWlsdXJlc19ieV9zdGFydF90
aW1lJwotICAgICAgICBzdGFydF90aW1lID0gY29sdW1ucy5EYXRlVGltZShwcmltYXJ5X2tleT1U
cnVlLCByZXF1aXJlZD1UcnVlLCBjbHVzdGVyaW5nX29yZGVyPSdERVNDJykKLSAgICAgICAgc2Rr
ID0gY29sdW1ucy5UZXh0KHByaW1hcnlfa2V5PVRydWUsIHJlcXVpcmVkPVRydWUpCi0gICAgICAg
IHV1aWQgPSBjb2x1bW5zLkJpZ0ludChwcmltYXJ5X2tleT1UcnVlLCByZXF1aXJlZD1UcnVlKQot
Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncyk6Ci0gICAgICAgIHN1cGVy
KEZhaWx1cmVDb250ZXh0LCBzZWxmKS5fX2luaXRfXygndGVzdC1mYWlsdXJlcycsICphcmdzLCAq
Kmt3YXJncykKLQotICAgICAgICB3aXRoIHNlbGY6Ci0gICAgICAgICAgICBzZWxmLmNhc3NhbmRy
YS5jcmVhdGVfdGFibGUoc2VsZi5UZXN0RmFpbHVyZXNCeUNvbW1pdCkKLSAgICAgICAgICAgIHNl
bGYuY2Fzc2FuZHJhLmNyZWF0ZV90YWJsZShzZWxmLlRlc3RGYWlsdXJlc0J5U3RhcnRUaW1lKQot
ICAgICAgICAgICAgc2VsZi5jYXNzYW5kcmEuY3JlYXRlX3RhYmxlKHNlbGYuVW5leHBlY3RlZFRl
c3RGYWlsdXJlc0J5Q29tbWl0KQotICAgICAgICAgICAgc2VsZi5jYXNzYW5kcmEuY3JlYXRlX3Rh
YmxlKHNlbGYuVW5leHBlY3RlZFRlc3RGYWlsdXJlc0J5U3RhcnRUaW1lKQotCi0gICAgZGVmIHJl
Z2lzdGVyKHNlbGYsIGNvbmZpZ3VyYXRpb24sIGNvbW1pdHMsIHN1aXRlLCB0ZXN0X3Jlc3VsdHMs
IHRpbWVzdGFtcD1Ob25lKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgaWYgbm90IGlzaW5z
dGFuY2Uoc3VpdGUsIHN0cik6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKGYnRXhw
ZWN0ZWQgdHlwZSB7c3RyfSwgZ290IHt0eXBlKHN1aXRlKX0nKQotCi0gICAgICAgICAgICB0aW1l
c3RhbXAgPSB0aW1lc3RhbXAgb3IgdGltZS50aW1lKCkKLSAgICAgICAgICAgIGlmIGlzaW5zdGFu
Y2UodGltZXN0YW1wLCBkYXRldGltZSk6Ci0gICAgICAgICAgICAgICAgdGltZXN0YW1wID0gY2Fs
ZW5kYXIudGltZWdtKHRpbWVzdGFtcC50aW1ldHVwbGUoKSkKLQotICAgICAgICAgICAgd2l0aCBz
ZWxmOgotICAgICAgICAgICAgICAgIHV1aWQgPSBzZWxmLmNvbW1pdF9jb250ZXh0LnV1aWRfZm9y
X2NvbW1pdHMoY29tbWl0cykKLSAgICAgICAgICAgICAgICB0dGwgPSBpbnQoKHV1aWQgLy8gQ29t
bWl0LlRJTUVTVEFNUF9UT19VVUlEX01VTFRJUExJRVIpICsgc2VsZi50dGxfc2Vjb25kcyAtIHRp
bWUudGltZSgpKSBpZiBzZWxmLnR0bF9zZWNvbmRzIGVsc2UgTm9uZQotCi0gICAgICAgICAgICAg
ICAgZGVmIGNhbGxiYWNrKHRlc3QsIHJlc3VsdCwgZmFpbHVyZXMsIHVuZXhwZWN0ZWQpOgotICAg
ICAgICAgICAgICAgICAgICBmYWlsZWRfcmVzdWx0ID0gRXhwZWN0YXRpb25zLnN0cmluZ190b19z
dGF0ZV9pZHMocmVzdWx0LmdldCgnYWN0dWFsJywgJycpKQotICAgICAgICAgICAgICAgICAgICBl
eHBlY3RlZCA9IHNldChFeHBlY3RhdGlvbnMuc3RyaW5nX3RvX3N0YXRlX2lkcyhyZXN1bHQuZ2V0
KCdleHBlY3RlZCcsICcnKSkpCi0gICAgICAgICAgICAgICAgICAgIGlmIEV4cGVjdGF0aW9ucy5T
VFJJTkdfVE9fU1RBVEVfSURbRXhwZWN0YXRpb25zLkZBSUxdIGluIGV4cGVjdGVkOgotICAgICAg
ICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQuYWRkKEV4cGVjdGF0aW9ucy5TVFJJTkdfVE9fU1RB
VEVfSURbRXhwZWN0YXRpb25zLlRFWFRdKQotICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0
ZWQuYWRkKEV4cGVjdGF0aW9ucy5TVFJJTkdfVE9fU1RBVEVfSURbRXhwZWN0YXRpb25zLkFVRElP
XSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkLmFkZChFeHBlY3RhdGlvbnMuU1RS
SU5HX1RPX1NUQVRFX0lEW0V4cGVjdGF0aW9ucy5JTUFHRV0pCi0KLSAgICAgICAgICAgICAgICAg
ICAgdW5leHBlY3RlZF9yZXN1bHQgPSBzZXQoZmFpbGVkX3Jlc3VsdCkgLSBleHBlY3RlZAotICAg
ICAgICAgICAgICAgICAgICBpZiBmYWlsZWRfcmVzdWx0OgotICAgICAgICAgICAgICAgICAgICAg
ICAgd29yc3QgPSBtaW4oZmFpbGVkX3Jlc3VsdCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGlm
IHdvcnN0IDwgRXhwZWN0YXRpb25zLlNUUklOR19UT19TVEFURV9JRFtFeHBlY3RhdGlvbnMuV0FS
TklOR106Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFpbHVyZXNbdGVzdF0gPSBtaW4o
d29yc3QsIGZhaWx1cmVzLmdldCh0ZXN0LCBFeHBlY3RhdGlvbnMuU1RSSU5HX1RPX1NUQVRFX0lE
W0V4cGVjdGF0aW9ucy5QQVNTXSkpCi0KLSAgICAgICAgICAgICAgICAgICAgaWYgdW5leHBlY3Rl
ZF9yZXN1bHQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICB3b3JzdCA9IG1pbih1bmV4cGVjdGVk
X3Jlc3VsdCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIHdvcnN0IDwgRXhwZWN0YXRpb25z
LlNUUklOR19UT19TVEFURV9JRFtFeHBlY3RhdGlvbnMuV0FSTklOR106Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdW5leHBlY3RlZFt0ZXN0XSA9IG1pbih3b3JzdCwgdW5leHBlY3RlZC5n
ZXQodGVzdCwgRXhwZWN0YXRpb25zLlNUUklOR19UT19TVEFURV9JRFtFeHBlY3RhdGlvbnMuUEFT
U10pKQotCi0gICAgICAgICAgICAgICAgd2l0aCBzZWxmLmNhc3NhbmRyYS5iYXRjaF9xdWVyeV9j
b250ZXh0KCk6Ci0gICAgICAgICAgICAgICAgICAgIGZvciBicmFuY2ggaW4gc2VsZi5jb21taXRf
Y29udGV4dC5icmFuY2hfa2V5c19mb3JfY29tbWl0cyhjb21taXRzKToKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGZhaWx1cmVzID0ge30KLSAgICAgICAgICAgICAgICAgICAgICAgIHVuZXhwZWN0
ZWQgPSB7fQotCi0gICAgICAgICAgICAgICAgICAgICAgICBFeHBlY3RhdGlvbnMuaXRlcmF0ZV90
aHJvdWdoX25lc3RlZF9yZXN1bHRzKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rf
cmVzdWx0cy5nZXQoJ3Jlc3VsdHMnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW1i
ZGEgdGVzdCwgcmVzdWx0OiBjYWxsYmFjayh0ZXN0LCByZXN1bHQsIGZhaWx1cmVzPWZhaWx1cmVz
LCB1bmV4cGVjdGVkPXVuZXhwZWN0ZWQpLAotICAgICAgICAgICAgICAgICAgICAgICAgKQotCi0g
ICAgICAgICAgICAgICAgICAgICAgICBmb3IgdGFibGUgaW4gW3NlbGYuVGVzdEZhaWx1cmVzQnlD
b21taXQsIHNlbGYuVGVzdEZhaWx1cmVzQnlTdGFydFRpbWVdOgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNlbGYuY29uZmlndXJhdGlvbl9jb250ZXh0Lmluc2VydF9yb3dfd2l0aF9jb25m
aWd1cmF0aW9uKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZS5fX3RhYmxl
X25hbWVfXywgY29uZmlndXJhdGlvbj1jb25maWd1cmF0aW9uLCBzdWl0ZT1zdWl0ZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJhbmNoPWJyYW5jaCwgdXVpZD11dWlkLCB0dGw9
dHRsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZGs9Y29uZmlndXJhdGlvbi5z
ZGsgb3IgJz8nLCBzdGFydF90aW1lPXRpbWVzdGFtcCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdGVzdHM9anNvbi5kdW1wcyhmYWlsdXJlcyksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKQotCi0gICAgICAgICAgICAgICAgICAgICAgICBmb3IgdGFibGUgaW4gW3NlbGYu
VW5leHBlY3RlZFRlc3RGYWlsdXJlc0J5Q29tbWl0LCBzZWxmLlVuZXhwZWN0ZWRUZXN0RmFpbHVy
ZXNCeVN0YXJ0VGltZV06Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jb25maWd1
cmF0aW9uX2NvbnRleHQuaW5zZXJ0X3Jvd193aXRoX2NvbmZpZ3VyYXRpb24oCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRhYmxlLl9fdGFibGVfbmFtZV9fLCBjb25maWd1cmF0aW9u
PWNvbmZpZ3VyYXRpb24sIHN1aXRlPXN1aXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBicmFuY2g9YnJhbmNoLCB1dWlkPXV1aWQsIHR0bD10dGwsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNkaz1jb25maWd1cmF0aW9uLnNkayBvciAnPycsIHN0YXJ0X3RpbWU9
dGltZXN0YW1wLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0cz1qc29uLmR1
bXBzKHVuZXhwZWN0ZWQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKLQotICAgICAg
ICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5wYXJ0aWFs
X3N0YXR1cyhlKQotICAgICAgICByZXR1cm4gc2VsZi5wYXJ0aWFsX3N0YXR1cygpCi0KLSAgICBk
ZWYgX2ZhaWx1cmVzKAotICAgICAgICAgICAgc2VsZiwgYWxsX3RhYmxlLCB1bmV4cGVjdGVkX3Rh
YmxlLCBjb25maWd1cmF0aW9ucywgc3VpdGUsIHJlY2VudD1UcnVlLAotICAgICAgICAgICAgYnJh
bmNoPU5vbmUsIGJlZ2luPU5vbmUsIGVuZD1Ob25lLAotICAgICAgICAgICAgYmVnaW5fcXVlcnlf
dGltZT1Ob25lLCBlbmRfcXVlcnlfdGltZT1Ob25lLAotICAgICAgICAgICAgdW5leHBlY3RlZD1U
cnVlLCBjb2xsYXBzZWQ9VHJ1ZSwgbGltaXQ9REVGQVVMVF9MSU1JVCwKLSAgICApOgotICAgICAg
ICB0YWJsZSA9IHVuZXhwZWN0ZWRfdGFibGUgaWYgdW5leHBlY3RlZCBlbHNlIGFsbF90YWJsZQot
ICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShzdWl0ZSwgc3RyKToKLSAgICAgICAgICAgIHJhaXNl
IFR5cGVFcnJvcihmJ0V4cGVjdGVkIHR5cGUge3N0cn0gZm9yIHN1aXRlLCBnb3Qge3R5cGUoc3Vp
dGUpfScpCi0KLSAgICAgICAgZGVmIGdldF90aW1lKHRpbWUpOgotICAgICAgICAgICAgaWYgaXNp
bnN0YW5jZSh0aW1lLCBkYXRldGltZSk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRpbWUKLSAg
ICAgICAgICAgIGVsaWYgdGltZToKLSAgICAgICAgICAgICAgICByZXR1cm4gZGF0ZXRpbWUudXRj
ZnJvbXRpbWVzdGFtcChpbnQodGltZSkpCi0gICAgICAgICAgICByZXR1cm4gTm9uZQotCi0gICAg
ICAgIHdpdGggc2VsZjoKLSAgICAgICAgICAgIGhhc190ZXN0X3J1bnMgPSBGYWxzZQotICAgICAg
ICAgICAgaWYgY29sbGFwc2VkOgotICAgICAgICAgICAgICAgIHJlc3VsdCA9IHNldCgpCi0gICAg
ICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJlc3VsdCA9IHt9Ci0KLSAgICAgICAgICAg
IGZvciBjb25maWd1cmF0aW9uIGluIGNvbmZpZ3VyYXRpb25zOgotICAgICAgICAgICAgICAgIGZv
ciBjb25maWcsIHZhbHVlcyBpbiBzZWxmLmNvbmZpZ3VyYXRpb25fY29udGV4dC5zZWxlY3RfZnJv
bV90YWJsZV93aXRoX2NvbmZpZ3VyYXRpb25zKAotICAgICAgICAgICAgICAgICAgICB0YWJsZS5f
X3RhYmxlX25hbWVfXywgY29uZmlndXJhdGlvbnM9W2NvbmZpZ3VyYXRpb25dLCByZWNlbnQ9cmVj
ZW50LAotICAgICAgICAgICAgICAgICAgICBzdWl0ZT1zdWl0ZSwgc2RrPWNvbmZpZ3VyYXRpb24u
c2RrLCBicmFuY2g9YnJhbmNoIG9yIHNlbGYuY29tbWl0X2NvbnRleHQuREVGQVVMVF9CUkFOQ0hf
S0VZLAotICAgICAgICAgICAgICAgICAgICB1dWlkX19ndGU9Q29tbWl0Q29udGV4dC5jb252ZXJ0
X3RvX3V1aWQoYmVnaW4pLAotICAgICAgICAgICAgICAgICAgICB1dWlkX19sdGU9Q29tbWl0Q29u
dGV4dC5jb252ZXJ0X3RvX3V1aWQoZW5kLCBDb21taXRDb250ZXh0LnRpbWVzdGFtcF90b191dWlk
KCkpLAotICAgICAgICAgICAgICAgICAgICBzdGFydF90aW1lX19ndGU9Z2V0X3RpbWUoYmVnaW5f
cXVlcnlfdGltZSksIHN0YXJ0X3RpbWVfX2x0ZT1nZXRfdGltZShlbmRfcXVlcnlfdGltZSksCi0g
ICAgICAgICAgICAgICAgICAgIGxpbWl0PWxpbWl0LAotICAgICAgICAgICAgICAgICkuaXRlbXMo
KToKLSAgICAgICAgICAgICAgICAgICAgaWYgY29sbGFwc2VkOgotICAgICAgICAgICAgICAgICAg
ICAgICAgZm9yIHZhbHVlIGluIHZhbHVlczoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBo
YXNfdGVzdF9ydW5zID0gVHJ1ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciB0ZXN0
IGluIHZhbHVlLnVucGFjaygpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB0
ZXN0IG5vdCBpbiBbJ3V1aWQnLCAnc3RhcnRfdGltZSddOgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmVzdWx0LmFkZCh0ZXN0KQotICAgICAgICAgICAgICAgICAgICBlbHNl
OgotICAgICAgICAgICAgICAgICAgICAgICAgcnVucyA9IFtdCi0gICAgICAgICAgICAgICAgICAg
ICAgICBmb3IgdmFsdWUgaW4gdmFsdWVzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhh
c190ZXN0X3J1bnMgPSBUcnVlCi0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHV1aWQg
YW5kIHN0YXJ0X3RpbWUgYXJlIG5vdCBpbiB0aGUgdW5wYWNrZWQgdmFsdWVzCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdW5wYWNrZWQgPSB2YWx1ZS51bnBhY2soKQotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIGxlbih1bnBhY2tlZCkgPiAyOgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBydW5zLmFwcGVuZCh1bnBhY2tlZCkKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIHJ1bnM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnVwZGF0ZSh7
Y29uZmlnOiBydW5zfSkKLQotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCBpZiBoYXNfdGVzdF9y
dW5zIGVsc2UgTm9uZQotCi0gICAgZGVmIGZhaWx1cmVzX2J5X2NvbW1pdChzZWxmLCAqYXJncywg
Kiprd2FyZ3MpOgotICAgICAgICByZXR1cm4gc2VsZi5fZmFpbHVyZXMoc2VsZi5UZXN0RmFpbHVy
ZXNCeUNvbW1pdCwgc2VsZi5VbmV4cGVjdGVkVGVzdEZhaWx1cmVzQnlDb21taXQsICphcmdzLCAq
Kmt3YXJncykKLQotICAgIGRlZiBmYWlsdXJlc19ieV9zdGFydF90aW1lKHNlbGYsICphcmdzLCAq
Kmt3YXJncyk6Ci0gICAgICAgIHJldHVybiBzZWxmLl9mYWlsdXJlcyhzZWxmLlRlc3RGYWlsdXJl
c0J5U3RhcnRUaW1lLCBzZWxmLlVuZXhwZWN0ZWRUZXN0RmFpbHVyZXNCeVN0YXJ0VGltZSwgKmFy
Z3MsICoqa3dhcmdzKQpJbmRleDogVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwv
ZmFpbHVyZV9jb250ZXh0X3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL3Jlc3VsdHNk
YnB5L3Jlc3VsdHNkYnB5L21vZGVsL2ZhaWx1cmVfY29udGV4dF91bml0dGVzdC5weQkocmV2aXNp
b24gMjY1NTMxKQorKysgVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvZmFpbHVy
ZV9jb250ZXh0X3VuaXR0ZXN0LnB5CShub25leGlzdGVudCkKQEAgLTEsMTMyICswLDAgQEAKLSMg
Q29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
IwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQotIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SCi0jIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0jIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0jIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLWltcG9ydCB0aW1lCi0KLWZyb20g
ZmFrZXJlZGlzIGltcG9ydCBGYWtlU3RyaWN0UmVkaXMKLWZyb20gcmVkaXMgaW1wb3J0IFN0cmlj
dFJlZGlzCi1mcm9tIHJlc3VsdHNkYnB5LmNvbnRyb2xsZXIuY29uZmlndXJhdGlvbiBpbXBvcnQg
Q29uZmlndXJhdGlvbgotZnJvbSByZXN1bHRzZGJweS5tb2RlbC5jYXNzYW5kcmFfY29udGV4dCBp
bXBvcnQgQ2Fzc2FuZHJhQ29udGV4dAotZnJvbSByZXN1bHRzZGJweS5tb2RlbC5tb2NrX2Nhc3Nh
bmRyYV9jb250ZXh0IGltcG9ydCBNb2NrQ2Fzc2FuZHJhQ29udGV4dAotZnJvbSByZXN1bHRzZGJw
eS5tb2RlbC5tb2NrX21vZGVsX2ZhY3RvcnkgaW1wb3J0IE1vY2tNb2RlbEZhY3RvcnkKLWZyb20g
cmVzdWx0c2RicHkubW9kZWwubW9ja19yZXBvc2l0b3J5IGltcG9ydCBNb2NrU1ZOUmVwb3NpdG9y
eQotZnJvbSByZXN1bHRzZGJweS5tb2RlbC50ZXN0X2NvbnRleHQgaW1wb3J0IEV4cGVjdGF0aW9u
cwotZnJvbSByZXN1bHRzZGJweS5tb2RlbC53YWl0X2Zvcl9kb2NrZXJfdGVzdF9jYXNlIGltcG9y
dCBXYWl0Rm9yRG9ja2VyVGVzdENhc2UKLQotCi1jbGFzcyBGYWlsdXJlQ29udGV4dFRlc3QoV2Fp
dEZvckRvY2tlclRlc3RDYXNlKToKLSAgICBLRVlTUEFDRSA9ICdmYWlsdXJlX2NvbnRleHRfdGVz
dF9rZXlzcGFjZScKLQotICAgIGRlZiBpbml0X2RhdGFiYXNlKHNlbGYsIHJlZGlzPVN0cmljdFJl
ZGlzLCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCk6Ci0gICAgICAgIGNhc3NhbmRyYS5kcm9w
X2tleXNwYWNlKGtleXNwYWNlPXNlbGYuS0VZU1BBQ0UpCi0gICAgICAgIHNlbGYubW9kZWwgPSBN
b2NrTW9kZWxGYWN0b3J5LmNyZWF0ZShyZWRpcz1yZWRpcygpLCBjYXNzYW5kcmE9Y2Fzc2FuZHJh
KGtleXNwYWNlPXNlbGYuS0VZU1BBQ0UsIGNyZWF0ZV9rZXlzcGFjZT1UcnVlKSkKLSAgICAgICAg
TW9ja01vZGVsRmFjdG9yeS5hZGRfbW9ja19yZXN1bHRzKHNlbGYubW9kZWwsIHRlc3RfcmVzdWx0
cz1kaWN0KAotICAgICAgICAgICAgZGV0YWlscz1kaWN0KGxpbms9J2R1bW15LWxpbmsnKSwKLSAg
ICAgICAgICAgIHJ1bl9zdGF0cz1kaWN0KHRlc3RzX3NraXBwZWQ9MCksCi0gICAgICAgICAgICBy
ZXN1bHRzPXsKLSAgICAgICAgICAgICAgICAnZmFzdCc6IHsKLSAgICAgICAgICAgICAgICAgICAg
J2VuY29kaW5nJzogewotICAgICAgICAgICAgICAgICAgICAgICAgJ2Nzcy1jYWNoZWQtYm9tLmh0
bWwnOiBkaWN0KGV4cGVjdGVkPSdQQVNTJywgYWN0dWFsPSdGQUlMJywgdGltZT0xLjIpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgJ2Nzcy1jaGFyc2V0LWRlZmF1bHQueGh0bWwnOiBkaWN0KGV4
cGVjdGVkPSdGQUlMJywgYWN0dWFsPSdGQUlMJywgdGltZT0xLjIpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgJ2Nzcy1jaGFyc2V0Lmh0bWwnOiBkaWN0KGV4cGVjdGVkPSdGQUlMJywgYWN0dWFs
PSdQQVNTJywgdGltZT0xLjIpLAotICAgICAgICAgICAgICAgICAgICAgICAgJ2Nzcy1saW5rLWNo
YXJzZXQuaHRtbCc6IGRpY3QoZXhwZWN0ZWQ9J1BBU1MnLCBhY3R1YWw9J1BBU1MnLCB0aW1lPTEu
MiksCi0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICB9LAotICAgICAgICApKQotICAgICAgICBNb2NrTW9kZWxGYWN0b3J5LnByb2Nlc3NfcmVzdWx0
cyhzZWxmLm1vZGVsKQotCi0gICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2Rv
Y2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3Nh
bmRyYUNvbnRleHQpCi0gICAgZGVmIHRlc3RfZmFpbHVyZXNfY29sbGFwc2VkKHNlbGYsIHJlZGlz
PVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCk6Ci0gICAgICAgIHNlbGYu
aW5pdF9kYXRhYmFzZShyZWRpcz1yZWRpcywgY2Fzc2FuZHJhPWNhc3NhbmRyYSkKLSAgICAgICAg
cmVzdWx0cyA9IHNlbGYubW9kZWwuZmFpbHVyZV9jb250ZXh0LmZhaWx1cmVzX2J5X2NvbW1pdCgK
LSAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25zPVtDb25maWd1cmF0aW9uKHBsYXRmb3JtPSdNYWMn
LCBzdHlsZT0nUmVsZWFzZScsIGZsYXZvcj0nd2sxJyldLAotICAgICAgICAgICAgc3VpdGU9J2xh
eW91dC10ZXN0cycsIHJlY2VudD1UcnVlLCB1bmV4cGVjdGVkPUZhbHNlLAotICAgICAgICApCi0K
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzdWx0cyksIDIpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwocmVzdWx0cywgc2V0KFsnZmFzdC9lbmNvZGluZy9jc3MtY2FjaGVkLWJvbS5o
dG1sJywgJ2Zhc3QvZW5jb2RpbmcvY3NzLWNoYXJzZXQtZGVmYXVsdC54aHRtbCddKSkKLQotICAg
IEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtl
U3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQotICAgIGRl
ZiB0ZXN0X3VuZXhwZWN0ZWRfZmFpbHVyZXNfY29sbGFwc2VkKHNlbGYsIHJlZGlzPVN0cmljdFJl
ZGlzLCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCk6Ci0gICAgICAgIHNlbGYuaW5pdF9kYXRh
YmFzZShyZWRpcz1yZWRpcywgY2Fzc2FuZHJhPWNhc3NhbmRyYSkKLSAgICAgICAgcmVzdWx0cyA9
IHNlbGYubW9kZWwuZmFpbHVyZV9jb250ZXh0LmZhaWx1cmVzX2J5X2NvbW1pdCgKLSAgICAgICAg
ICAgIGNvbmZpZ3VyYXRpb25zPVtDb25maWd1cmF0aW9uKHBsYXRmb3JtPSdNYWMnLCBzdHlsZT0n
UmVsZWFzZScsIGZsYXZvcj0nd2sxJyldLAotICAgICAgICAgICAgc3VpdGU9J2xheW91dC10ZXN0
cycsIHJlY2VudD1UcnVlLAotICAgICAgICApCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChs
ZW4ocmVzdWx0cyksIDEpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0cywgc2V0KFsn
ZmFzdC9lbmNvZGluZy9jc3MtY2FjaGVkLWJvbS5odG1sJ10pKQotCi0gICAgQFdhaXRGb3JEb2Nr
ZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywg
bW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCi0gICAgZGVmIHRlc3RfZmFpbHVy
ZXMoc2VsZiwgcmVkaXM9U3RyaWN0UmVkaXMsIGNhc3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0KToK
LSAgICAgICAgc2VsZi5pbml0X2RhdGFiYXNlKHJlZGlzPXJlZGlzLCBjYXNzYW5kcmE9Y2Fzc2Fu
ZHJhKQotICAgICAgICByZXN1bHRzID0gc2VsZi5tb2RlbC5mYWlsdXJlX2NvbnRleHQuZmFpbHVy
ZXNfYnlfY29tbWl0KAotICAgICAgICAgICAgY29uZmlndXJhdGlvbnM9W0NvbmZpZ3VyYXRpb24o
cGxhdGZvcm09J01hYycsIHN0eWxlPSdSZWxlYXNlJywgZmxhdm9yPSd3azEnKV0sCi0gICAgICAg
ICAgICBzdWl0ZT0nbGF5b3V0LXRlc3RzJywgcmVjZW50PVRydWUsIGNvbGxhcHNlZD1GYWxzZSwg
dW5leHBlY3RlZD1GYWxzZSwKLSAgICAgICAgKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
bGVuKHJlc3VsdHMpLCAxKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihsaXN0KHJlc3Vs
dHMudmFsdWVzKCkpWzBdKSwgNSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWQobGlz
dChyZXN1bHRzLnZhbHVlcygpKVswXSwga2V5PWxhbWJkYSB2YWx1ZTogdmFsdWVbJ3V1aWQnXSlb
MF0sIHsKLSAgICAgICAgICAgICdmYXN0L2VuY29kaW5nL2Nzcy1jYWNoZWQtYm9tLmh0bWwnOiAn
RkFJTCcsCi0gICAgICAgICAgICAnZmFzdC9lbmNvZGluZy9jc3MtY2hhcnNldC1kZWZhdWx0Lnho
dG1sJzogJ0ZBSUwnLAotICAgICAgICAgICAgJ3N0YXJ0X3RpbWUnOiBsaXN0KHJlc3VsdHMudmFs
dWVzKCkpWzBdWzBdWydzdGFydF90aW1lJ10sCi0gICAgICAgICAgICAndXVpZCc6IDE1MzgwMjk0
NzkwMAotICAgICAgICB9KQotCi0gICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25v
X2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nh
c3NhbmRyYUNvbnRleHQpCi0gICAgZGVmIHRlc3RfdW5leHBlY3RlZF9mYWlsdXJlcyhzZWxmLCBy
ZWRpcz1TdHJpY3RSZWRpcywgY2Fzc2FuZHJhPUNhc3NhbmRyYUNvbnRleHQpOgotICAgICAgICBz
ZWxmLmluaXRfZGF0YWJhc2UocmVkaXM9cmVkaXMsIGNhc3NhbmRyYT1jYXNzYW5kcmEpCi0gICAg
ICAgIHJlc3VsdHMgPSBzZWxmLm1vZGVsLmZhaWx1cmVfY29udGV4dC5mYWlsdXJlc19ieV9jb21t
aXQoCi0gICAgICAgICAgICBjb25maWd1cmF0aW9ucz1bQ29uZmlndXJhdGlvbihwbGF0Zm9ybT0n
TWFjJywgc3R5bGU9J1JlbGVhc2UnLCBmbGF2b3I9J3drMScpXSwKLSAgICAgICAgICAgIHN1aXRl
PSdsYXlvdXQtdGVzdHMnLCByZWNlbnQ9VHJ1ZSwgY29sbGFwc2VkPUZhbHNlCi0gICAgICAgICkK
LQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZXN1bHRzKSwgMSkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChsZW4obGlzdChyZXN1bHRzLnZhbHVlcygpKVswXSksIDUpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkKGxpc3QocmVzdWx0cy52YWx1ZXMoKSlbMF0sIGtleT1s
YW1iZGEgdmFsdWU6IHZhbHVlWyd1dWlkJ10pWzBdLCB7Ci0gICAgICAgICAgICAnZmFzdC9lbmNv
ZGluZy9jc3MtY2FjaGVkLWJvbS5odG1sJzogJ0ZBSUwnLAotICAgICAgICAgICAgJ3N0YXJ0X3Rp
bWUnOiBsaXN0KHJlc3VsdHMudmFsdWVzKCkpWzBdWzBdWydzdGFydF90aW1lJ10sCi0gICAgICAg
ICAgICAndXVpZCc6IDE1MzgwMjk0NzkwMAotICAgICAgICB9KQotCi0gICAgQFdhaXRGb3JEb2Nr
ZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywg
bW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCi0gICAgZGVmIHRlc3Rfbm9fZmFp
bHVyZXMoc2VsZiwgcmVkaXM9U3RyaWN0UmVkaXMsIGNhc3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0
KToKLSAgICAgICAgY2Fzc2FuZHJhLmRyb3Bfa2V5c3BhY2Uoa2V5c3BhY2U9c2VsZi5LRVlTUEFD
RSkKLSAgICAgICAgc2VsZi5tb2RlbCA9IE1vY2tNb2RlbEZhY3RvcnkuY3JlYXRlKHJlZGlzPXJl
ZGlzKCksIGNhc3NhbmRyYT1jYXNzYW5kcmEoa2V5c3BhY2U9c2VsZi5LRVlTUEFDRSwgY3JlYXRl
X2tleXNwYWNlPVRydWUpKQotICAgICAgICBNb2NrTW9kZWxGYWN0b3J5LmFkZF9tb2NrX3Jlc3Vs
dHMoc2VsZi5tb2RlbCkKLSAgICAgICAgTW9ja01vZGVsRmFjdG9yeS5wcm9jZXNzX3Jlc3VsdHMo
c2VsZi5tb2RlbCkKLSAgICAgICAgcmVzdWx0cyA9IHNlbGYubW9kZWwuZmFpbHVyZV9jb250ZXh0
LmZhaWx1cmVzX2J5X2NvbW1pdCgKLSAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25zPVtDb25maWd1
cmF0aW9uKHBsYXRmb3JtPSdNYWMnLCBzdHlsZT0nUmVsZWFzZScsIGZsYXZvcj0nd2sxJyldLAot
ICAgICAgICAgICAgc3VpdGU9J2xheW91dC10ZXN0cycsIHJlY2VudD1UcnVlLCBjb2xsYXBzZWQ9
RmFsc2UsIHVuZXhwZWN0ZWQ9RmFsc2UsCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChsZW4ocmVzdWx0cyksIDApCi0KLSAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tf
aWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1N
b2NrQ2Fzc2FuZHJhQ29udGV4dCkKLSAgICBkZWYgdGVzdF9ub190ZXN0X3J1bnMoc2VsZiwgcmVk
aXM9U3RyaWN0UmVkaXMsIGNhc3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0KToKLSAgICAgICAgc2Vs
Zi5pbml0X2RhdGFiYXNlKHJlZGlzPXJlZGlzLCBjYXNzYW5kcmE9Y2Fzc2FuZHJhKQotICAgICAg
ICByZXN1bHRzID0gc2VsZi5tb2RlbC5mYWlsdXJlX2NvbnRleHQuZmFpbHVyZXNfYnlfY29tbWl0
KAotICAgICAgICAgICAgY29uZmlndXJhdGlvbnM9W0NvbmZpZ3VyYXRpb24ocGxhdGZvcm09J01h
YycsIHN0eWxlPSdSZWxlYXNlJywgZmxhdm9yPSd3azEnKV0sCi0gICAgICAgICAgICBzdWl0ZT0n
bGF5b3V0LXRlc3RzJywgcmVjZW50PVRydWUsIGVuZD0wLAotICAgICAgICApCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwocmVzdWx0cywgTm9uZSkKSW5kZXg6IFRvb2xzL3Jlc3VsdHNkYnB5L3Jl
c3VsdHNkYnB5L21vZGVsL21vY2tfY2Fzc2FuZHJhX2NvbnRleHQucHkKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvbW9ja19jYXNzYW5kcmFfY29udGV4
dC5weQkocmV2aXNpb24gMjY1NTMxKQorKysgVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkv
bW9kZWwvbW9ja19jYXNzYW5kcmFfY29udGV4dC5weQkobm9uZXhpc3RlbnQpCkBAIC0xLDI3NiAr
MCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0jIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0j
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUgotIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotIyBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLAotIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1pbXBvcnQgbW9j
awotaW1wb3J0IHJlCi1pbXBvcnQgdGltZQotCi1mcm9tIGNhc3NhbmRyYS5tZXRhZGF0YSBpbXBv
cnQgQ29sdW1uTWV0YWRhdGEsIEtleXNwYWNlTWV0YWRhdGEsIE1ldGFkYXRhLCBUYWJsZU1ldGFk
YXRhVjMKLWZyb20gY2Fzc2FuZHJhLnV0aWwgaW1wb3J0IE9yZGVyZWREaWN0Ci1mcm9tIGNvbGxl
Y3Rpb25zIGltcG9ydCBkZWZhdWx0ZGljdAotZnJvbSByZXN1bHRzZGJweS5tb2RlbC5jYXNzYW5k
cmFfY29udGV4dCBpbXBvcnQgQ2Fzc2FuZHJhQ29udGV4dAotCi0KLWNsYXNzIE1vY2tDbHVzdGVy
KG9iamVjdCk6Ci0KLSAgICBtZXRhZGF0YSA9IE1ldGFkYXRhKCkKLSAgICBkYXRhYmFzZSA9IHt9
Ci0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgY29udGFjdF9wb2ludHM9WyIxMjcuMC4wLjEiXSwg
cG9ydD05MDQyLCBhdXRoX3Byb3ZpZGVyPU5vbmUpOgotICAgICAgICBhc3NlcnQgaXNpbnN0YW5j
ZShjb250YWN0X3BvaW50cywgbGlzdCkKLSAgICAgICAgc2VsZi5jb250YWN0X3BvaW50cyA9IGNv
bnRhY3RfcG9pbnRzCi0gICAgICAgIHNlbGYucG9ydCA9IHBvcnQKLSAgICAgICAgc2VsZi5zZXNz
aW9ucyA9IFtdCi0KLSAgICBkZWYgY29ubmVjdChzZWxmLCBrZXlzcGFjZT1Ob25lKToKLSAgICAg
ICAgcmVzdWx0ID0gTW9ja1Nlc3Npb24oc2VsZiwga2V5c3BhY2UpCi0gICAgICAgIHNlbGYuc2Vz
c2lvbnMuYXBwZW5kKHJlc3VsdCkKLSAgICAgICAgcmV0dXJuIHJlc3VsdAotCi0gICAgZGVmIHNo
dXRkb3duKHNlbGYpOgotICAgICAgICBzZWxmLnNlc3Npb25zID0gW10KLQotCi1jbGFzcyBNb2Nr
U2Vzc2lvbihvYmplY3QpOgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGNsdXN0ZXIsIGtleXNw
YWNlPU5vbmUpOgotICAgICAgICBzZWxmLmNsdXN0ZXIgPSBjbHVzdGVyCi0gICAgICAgIHNlbGYu
a2V5c3BhY2UgPSBrZXlzcGFjZQotCi0gICAgZGVmIGV4ZWN1dGUoc2VsZiwgKmFyZ3MpOgotICAg
ICAgICBwYXNzCi0KLQotY2xhc3MgTW9ja0NRTEVuZ2luZUNvbnRleHQoKToKLQotICAgIGNvbm5l
Y3Rpb25zID0ge30KLQotICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgc2VsZi5fZGVw
dGggPSAwCi0gICAgICAgIHNlbGYucGF0Y2hlcyA9IFsKLSAgICAgICAgICAgIG1vY2sucGF0Y2go
J3Jlc3VsdHNkYnB5Lm1vZGVsLmNhc3NhbmRyYV9jb250ZXh0LkNsdXN0ZXInLCBuZXc9TW9ja0Ns
dXN0ZXIpLAotICAgICAgICAgICAgbW9jay5wYXRjaCgncmVzdWx0c2RicHkubW9kZWwuY2Fzc2Fu
ZHJhX2NvbnRleHQucmVnaXN0ZXJfY29ubmVjdGlvbicsIG5ldz1zZWxmLnJlZ2lzdGVyX2Nvbm5l
Y3Rpb24pLAotICAgICAgICAgICAgbW9jay5wYXRjaCgncmVzdWx0c2RicHkubW9kZWwuY2Fzc2Fu
ZHJhX2NvbnRleHQudW5yZWdpc3Rlcl9jb25uZWN0aW9uJywgbmV3PXNlbGYudW5yZWdpc3Rlcl9j
b25uZWN0aW9uKSwKLSAgICAgICAgICAgIG1vY2sucGF0Y2goJ3Jlc3VsdHNkYnB5Lm1vZGVsLmNh
c3NhbmRyYV9jb250ZXh0LmdldF9jbHVzdGVyJywgbmV3PXNlbGYuZ2V0X2NsdXN0ZXIpLAotICAg
ICAgICAgICAgbW9jay5wYXRjaCgncmVzdWx0c2RicHkubW9kZWwuY2Fzc2FuZHJhX2NvbnRleHQu
Y3JlYXRlX2tleXNwYWNlX3NpbXBsZScsIG5ldz1zZWxmLmNyZWF0ZV9rZXlzcGFjZV9zaW1wbGUp
LAotICAgICAgICAgICAgbW9jay5wYXRjaCgncmVzdWx0c2RicHkubW9kZWwuY2Fzc2FuZHJhX2Nv
bnRleHQuY3JlYXRlX2tleXNwYWNlX25ldHdvcmtfdG9wb2xvZ3knLCBuZXc9c2VsZi5jcmVhdGVf
a2V5c3BhY2VfbmV0d29ya190b3BvbG9neSksCi0gICAgICAgICAgICBtb2NrLnBhdGNoKCdyZXN1
bHRzZGJweS5tb2RlbC5jYXNzYW5kcmFfY29udGV4dC5kcm9wX2tleXNwYWNlJywgbmV3PXNlbGYu
ZHJvcF9rZXlzcGFjZSksCi0gICAgICAgICAgICBtb2NrLnBhdGNoKCdyZXN1bHRzZGJweS5tb2Rl
bC5jYXNzYW5kcmFfY29udGV4dC5zeW5jX3RhYmxlJywgbmV3PXNlbGYuc3luY190YWJsZSksCi0g
ICAgICAgIF0KLQotICAgIGRlZiBfX2VudGVyX18oc2VsZik6Ci0gICAgICAgIGlmIHNlbGYuX2Rl
cHRoID09IDA6Ci0gICAgICAgICAgICBmb3IgcGF0Y2ggaW4gc2VsZi5wYXRjaGVzOgotICAgICAg
ICAgICAgICAgIHBhdGNoLl9fZW50ZXJfXygpCi0gICAgICAgIHNlbGYuX2RlcHRoICs9IDEKLQot
ICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgotICAgICAgICBzZWxmLl9k
ZXB0aCAtPSAxCi0gICAgICAgIGlmIHNlbGYuX2RlcHRoIDw9IDA6Ci0gICAgICAgICAgICBmb3Ig
cGF0Y2ggaW4gc2VsZi5wYXRjaGVzOgotICAgICAgICAgICAgICAgIHBhdGNoLl9fZXhpdF9fKCph
cmdzLCAqKmt3YXJncykKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiByZWdpc3Rlcl9jb25u
ZWN0aW9uKGNscywgbmFtZSwgc2Vzc2lvbiwgKiprd2FyZ3MpOgotICAgICAgICBpZiBzZXNzaW9u
IGlzIE5vbmU6Ci0gICAgICAgICAgICBzZXNzaW9uID0gTW9ja0NsdXN0ZXIoKS5jb25uZWN0KCkK
LSAgICAgICAgY2xzLmNvbm5lY3Rpb25zW25hbWVdID0gKHNlc3Npb24uY2x1c3Rlciwgc2Vzc2lv
bikKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiB1bnJlZ2lzdGVyX2Nvbm5lY3Rpb24oY2xz
LCBuYW1lKToKLSAgICAgICAgaWYgbmFtZSBpbiBjbHMuY29ubmVjdGlvbnM6Ci0gICAgICAgICAg
ICBkZWwgY2xzLmNvbm5lY3Rpb25zW25hbWVdCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYg
Z2V0X2NsdXN0ZXIoY2xzLCBjb25uZWN0aW9uKToKLSAgICAgICAgcmV0dXJuIGNscy5jb25uZWN0
aW9ucy5nZXQoY29ubmVjdGlvbiwgW05vbmVdKVswXQotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAg
ZGVmIGNyZWF0ZV9rZXlzcGFjZV9zaW1wbGUoY2xzLCBuYW1lLCByZXBsaWNhdGlvbl9mYWN0b3I9
MSwgZHVyYWJsZV93cml0ZXM9VHJ1ZSwgY29ubmVjdGlvbnM9W10pOgotICAgICAgICBmb3IgY29u
bmVjdGlvbiBpbiBjb25uZWN0aW9uczoKLSAgICAgICAgICAgIGFzc2VydCBjb25uZWN0aW9uIGlu
IGNscy5jb25uZWN0aW9ucwotICAgICAgICAgICAgaWYgbmFtZSBub3QgaW4gY2xzLmdldF9jbHVz
dGVyKGNvbm5lY3Rpb24pLm1ldGFkYXRhLmtleXNwYWNlczoKLSAgICAgICAgICAgICAgICBjbHMu
Z2V0X2NsdXN0ZXIoY29ubmVjdGlvbikubWV0YWRhdGEua2V5c3BhY2VzW25hbWVdID0gS2V5c3Bh
Y2VNZXRhZGF0YShuYW1lLCBkdXJhYmxlX3dyaXRlcywgTm9uZSwgTm9uZSkKLSAgICAgICAgICAg
ICAgICBNb2NrQ2x1c3Rlci5kYXRhYmFzZVtuYW1lXSA9IHt9Ci0KLSAgICBAY2xhc3NtZXRob2QK
LSAgICBkZWYgY3JlYXRlX2tleXNwYWNlX25ldHdvcmtfdG9wb2xvZ3koY2xzLCBuYW1lLCBkY19y
ZXBsaWNhdGlvbl9tYXA9e30sIGR1cmFibGVfd3JpdGVzPVRydWUsIGNvbm5lY3Rpb25zPVtdKToK
LSAgICAgICAgcmV0dXJuIGNscy5jcmVhdGVfa2V5c3BhY2Vfc2ltcGxlKG5hbWUsIGR1cmFibGVf
d3JpdGVzPWR1cmFibGVfd3JpdGVzLCBjb25uZWN0aW9ucz1jb25uZWN0aW9ucykKLQotICAgIEBj
bGFzc21ldGhvZAotICAgIGRlZiBkcm9wX2tleXNwYWNlKGNscywgbmFtZSwgY29ubmVjdGlvbnM9
W10pOgotICAgICAgICBmb3IgY29ubmVjdGlvbiBpbiBjb25uZWN0aW9uczoKLSAgICAgICAgICAg
IGFzc2VydCBjb25uZWN0aW9uIGluIGNscy5jb25uZWN0aW9ucwotICAgICAgICAgICAgaWYgbmFt
ZSBpbiBjbHMuZ2V0X2NsdXN0ZXIoY29ubmVjdGlvbikubWV0YWRhdGEua2V5c3BhY2VzOgotICAg
ICAgICAgICAgICAgIGRlbCBjbHMuZ2V0X2NsdXN0ZXIoY29ubmVjdGlvbikubWV0YWRhdGEua2V5
c3BhY2VzW25hbWVdCi0gICAgICAgICAgICAgICAgZGVsIE1vY2tDbHVzdGVyLmRhdGFiYXNlW25h
bWVdCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgc3luY190YWJsZShjbHMsIG1vZGVsLCBr
ZXlzcGFjZXM9W10sIGNvbm5lY3Rpb25zPVtdKToKLSAgICAgICAgZm9yIGNvbm5lY3Rpb24gaW4g
Y29ubmVjdGlvbnM6Ci0gICAgICAgICAgICBhc3NlcnQgY29ubmVjdGlvbiBpbiBjbHMuY29ubmVj
dGlvbnMKLQotICAgICAgICAgICAgZm9yIGtleXNwYWNlIGluIGtleXNwYWNlczoKLSAgICAgICAg
ICAgICAgICBrZXlzcGFjZV9tZXRhZGF0YSA9IE1vY2tDUUxFbmdpbmVDb250ZXh0LmdldF9jbHVz
dGVyKGNvbm5lY3Rpb24pLm1ldGFkYXRhLmtleXNwYWNlcy5nZXQoa2V5c3BhY2UpCi0gICAgICAg
ICAgICAgICAgYXNzZXJ0IGtleXNwYWNlX21ldGFkYXRhIGlzIG5vdCBOb25lCi0KLSAgICAgICAg
ICAgICAgICBwcmltYXJ5X2tleXMgPSBbXQotICAgICAgICAgICAgICAgIGNvbHVtbl9rZXlzID0g
W10KLSAgICAgICAgICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBtb2RlbC5fY29sdW1ucy5pdGVt
cygpOgotICAgICAgICAgICAgICAgICAgICBpZiB2YWx1ZS5wYXJ0aXRpb25fa2V5IG9yIHZhbHVl
LnByaW1hcnlfa2V5OgotICAgICAgICAgICAgICAgICAgICAgICAgcHJpbWFyeV9rZXlzLmFwcGVu
ZChrZXkpCi0gICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBjb2x1bW5fa2V5cy5hcHBlbmQoa2V5KQotCi0gICAgICAgICAgICAgICAgY29sdW1ucyA9IE9y
ZGVyZWREaWN0KCkKLSAgICAgICAgICAgICAgICBwYXJ0aXRpb25fa2V5cyA9IFtdCi0gICAgICAg
ICAgICAgICAgY2x1c3RlcmluZ19rZXlzID0gW10KLSAgICAgICAgICAgICAgICBmb3Iga2V5IGlu
IHByaW1hcnlfa2V5cyArIGNvbHVtbl9rZXlzOgotICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9
IG1vZGVsLl9jb2x1bW5zW2tleV0KLSAgICAgICAgICAgICAgICAgICAgbWV0YV9kYXRhID0gQ29s
dW1uTWV0YWRhdGEoTm9uZSwga2V5LCB2YWx1ZS5kYl90eXBlLCBpc19yZXZlcnNlZD0odmFsdWUu
Y2x1c3RlcmluZ19vcmRlciA9PSAnREVTQycpKQotICAgICAgICAgICAgICAgICAgICBjb2x1bW5z
W2tleV0gPSBtZXRhX2RhdGEKLQotICAgICAgICAgICAgICAgICAgICBpZiB2YWx1ZS5wYXJ0aXRp
b25fa2V5OgotICAgICAgICAgICAgICAgICAgICAgICAgcGFydGl0aW9uX2tleXMuYXBwZW5kKG1l
dGFfZGF0YSkKLSAgICAgICAgICAgICAgICAgICAgaWYgdmFsdWUucHJpbWFyeV9rZXk6Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBjbHVzdGVyaW5nX2tleXMuYXBwZW5kKG1ldGFfZGF0YSkKLQot
ICAgICAgICAgICAgICAgIE1vY2tDbHVzdGVyLmRhdGFiYXNlW2tleXNwYWNlXVttb2RlbC5fcmF3
X2NvbHVtbl9mYW1pbHlfbmFtZSgpXSA9IGRlZmF1bHRkaWN0KGxhbWJkYToge30pCi0gICAgICAg
ICAgICAgICAga2V5c3BhY2VfbWV0YWRhdGEudGFibGVzW21vZGVsLl9yYXdfY29sdW1uX2ZhbWls
eV9uYW1lKCldID0gVGFibGVNZXRhZGF0YVYzKAotICAgICAgICAgICAgICAgICAgICBrZXlzcGFj
ZSwgbW9kZWwuX3Jhd19jb2x1bW5fZmFtaWx5X25hbWUoKSwKLSAgICAgICAgICAgICAgICAgICAg
Y29sdW1ucz1jb2x1bW5zLCBwYXJ0aXRpb25fa2V5PXBhcnRpdGlvbl9rZXlzLCBjbHVzdGVyaW5n
X2tleT1jbHVzdGVyaW5nX2tleXMsCi0gICAgICAgICAgICAgICAgKQotCi0KLWNsYXNzIE1vY2tD
YXNzYW5kcmFDb250ZXh0KENhc3NhbmRyYUNvbnRleHQpOgotCi0gICAgQGNsYXNzbWV0aG9kCi0g
ICAgZGVmIGRyb3Bfa2V5c3BhY2UoY2xzLCAqYXJncywgKiprd2FyZ3MpOgotICAgICAgICB3aXRo
IE1vY2tDUUxFbmdpbmVDb250ZXh0KCk6Ci0gICAgICAgICAgICBDYXNzYW5kcmFDb250ZXh0LmRy
b3Bfa2V5c3BhY2UoKmFyZ3MsICoqa3dhcmdzKQotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsICph
cmdzLCAqKmt3YXJncyk6Ci0gICAgICAgIHNlbGYuX21vY2tfY3FsX2VuZ2luZSA9IE1vY2tDUUxF
bmdpbmVDb250ZXh0KCkKLSAgICAgICAgd2l0aCBzZWxmLl9tb2NrX2NxbF9lbmdpbmU6Ci0gICAg
ICAgICAgICBzdXBlcihNb2NrQ2Fzc2FuZHJhQ29udGV4dCwgc2VsZikuX19pbml0X18oKmFyZ3Ms
ICoqa3dhcmdzKQotCi0gICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKLSAgICAgICAgc2VsZi5fbW9j
a19jcWxfZW5naW5lLl9fZW50ZXJfXygpCi0gICAgICAgIHN1cGVyKE1vY2tDYXNzYW5kcmFDb250
ZXh0LCBzZWxmKS5fX2VudGVyX18oKQotCi0gICAgZGVmIF9fZXhpdF9fKHNlbGYsICphcmdzLCAq
Kmt3YXJncyk6Ci0gICAgICAgIHN1cGVyKE1vY2tDYXNzYW5kcmFDb250ZXh0LCBzZWxmKS5fX2V4
aXRfXygqYXJncywgKiprd2FyZ3MpCi0gICAgICAgIHNlbGYuX21vY2tfY3FsX2VuZ2luZS5fX2V4
aXRfXygqYXJncywgKiprd2FyZ3MpCi0KLSAgICBAQ2Fzc2FuZHJhQ29udGV4dC5Bc3NlcnRDb25u
ZWN0ZWREZWNvcmF0b3IoKQotICAgIGRlZiBpbnNlcnRfcm93KHNlbGYsIHRhYmxlX25hbWUsIHR0
bD1Ob25lLCAqKmt3YXJncyk6Ci0gICAgICAgIGlmIHRhYmxlX25hbWUgbm90IGluIHNlbGYuX21v
ZGVsczoKLSAgICAgICAgICAgIHJhaXNlIHNlbGYuU2NoZW1hRXhjZXB0aW9uKGYne3RhYmxlX25h
bWV9IGRvZXMgbm90IGV4aXN0IGluIHRoZSBkYXRhYmFzZScpCi0KLSAgICAgICAgaXRlbSA9IHNl
bGYuX21vZGVsc1t0YWJsZV9uYW1lXSgqKmt3YXJncykKLSAgICAgICAgc2NoZW1hID0gc2VsZi5z
Y2hlbWFfZm9yX3RhYmxlKHRhYmxlX25hbWUpCi0KLSAgICAgICAgcGFydGl0aW9uID0gW10KLSAg
ICAgICAgZm9yIGNvbHVtbiBpbiBzY2hlbWEucGFydGl0aW9uX2tleToKLSAgICAgICAgICAgIHBh
cnRpdGlvbi5hcHBlbmQoZ2V0YXR0cihpdGVtLCBjb2x1bW4ubmFtZSkpCi0gICAgICAgIGNsdXN0
ZXIgPSBbXQotICAgICAgICBmb3IgY29sdW1uIGluIHNjaGVtYS5wcmltYXJ5X2tleToKLSAgICAg
ICAgICAgIGlmIGdldGF0dHIoaXRlbSwgY29sdW1uLm5hbWUpIG5vdCBpbiBwYXJ0aXRpb246Ci0g
ICAgICAgICAgICAgICAgY2x1c3Rlci5hcHBlbmQoZ2V0YXR0cihpdGVtLCBjb2x1bW4ubmFtZSkp
Ci0KLSAgICAgICAgc2VsZi5jbHVzdGVyLmRhdGFiYXNlW3NlbGYua2V5c3BhY2VdW3RhYmxlX25h
bWVdW3R1cGxlKHBhcnRpdGlvbildW3R1cGxlKGNsdXN0ZXIpXSA9IChOb25lIGlmIHR0bCBpcyBO
b25lIGVsc2UgdGltZS50aW1lKCkgKyB0dGwsIGl0ZW0pCi0KLSAgICBAQ2Fzc2FuZHJhQ29udGV4
dC5Bc3NlcnRDb25uZWN0ZWREZWNvcmF0b3IoKQotICAgIGRlZiBzZWxlY3RfZnJvbV90YWJsZShz
ZWxmLCB0YWJsZV9uYW1lLCBsaW1pdD0xMDAwMCwgKiprd2FyZ3MpOgotICAgICAgICByZXN1bHQg
PSBbXQotICAgICAgICBzY2hlbWEgPSBzZWxmLnNjaGVtYV9mb3JfdGFibGUodGFibGVfbmFtZSkK
LQotICAgICAgICBwYXJ0aXRpb25fbmFtZXMgPSBbXQotICAgICAgICBmb3IgY29sdW1uIGluIHNj
aGVtYS5wYXJ0aXRpb25fa2V5OgotICAgICAgICAgICAgcGFydGl0aW9uX25hbWVzLmFwcGVuZChj
b2x1bW4ubmFtZSkKLQotICAgICAgICAjIFNvcnQga3dhcmdzIHNvIHRoZXkgYXJlIGluIHRoZSBz
YW1lIG9yZGVyIGFzIHRoZSBjb2x1bW5zLgotICAgICAgICBvcmRlcmVkX2t3YXJncyA9IE9yZGVy
ZWREaWN0KCkKLSAgICAgICAgZm9yIG5hbWUgaW4gc2VsZi5fbW9kZWxzW3RhYmxlX25hbWVdLl9j
b2x1bW5zLmtleXMoKToKLSAgICAgICAgICAgIGZvciBrZXksIHZhbHVlIGluIGt3YXJncy5pdGVt
cygpOgotICAgICAgICAgICAgICAgIGlmIGtleS5zcGxpdCgnX18nKVswXSA9PSBuYW1lIGFuZCB2
YWx1ZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgb3JkZXJlZF9rd2FyZ3Nba2V5
XSA9IHZhbHVlCi0KLSAgICAgICAgIyBDb252ZXJ0IGFyZ3VtZW50cyB0byBmaWx0ZXJzCi0gICAg
ICAgIHBhcnRpdGlvbnMgPSBbW11dCi0gICAgICAgIGZpbHRlcnMgPSBbXQotICAgICAgICBmb3Ig
a2V5LCB2YWx1ZSBpbiBvcmRlcmVkX2t3YXJncy5pdGVtcygpOgotICAgICAgICAgICAga2V5X3Zh
bHVlID0ga2V5LnNwbGl0KCdfXycpWzBdCi0gICAgICAgICAgICBvcGVyYXRvciA9IE5vbmUgaWYg
bGVuKGtleS5zcGxpdCgnX18nKSkgPT0gMSBlbHNlIGtleS5zcGxpdCgnX18nKVsxXQotCi0gICAg
ICAgICAgICBpZiBrZXlfdmFsdWUgaW4gcGFydGl0aW9uX25hbWVzOgotICAgICAgICAgICAgICAg
IGlmIG9wZXJhdG9yID09ICdpbic6Ci0gICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsX3BhcnRp
dGlvbnMgPSBsaXN0KHBhcnRpdGlvbnMpCi0gICAgICAgICAgICAgICAgICAgIHBhcnRpdGlvbnMg
PSBbXQotICAgICAgICAgICAgICAgICAgICBmb3IgXyBpbiByYW5nZShsZW4odmFsdWUpKToKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGZvciBlbGVtZW50IGluIG9yaWdpbmFsX3BhcnRpdGlvbnM6
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFydGl0aW9ucy5hcHBlbmQobGlzdChlbGVt
ZW50KSkKLSAgICAgICAgICAgICAgICAgICAgZm9yIG11bHRpcGxpZXIgaW4gcmFuZ2UobGVuKHZh
bHVlKSk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBmb3IgaW5kZXggaW4gcmFuZ2UobGVuKG9y
aWdpbmFsX3BhcnRpdGlvbnMpKToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0aXRp
b25zW211bHRpcGxpZXIgKiBsZW4ob3JpZ2luYWxfcGFydGl0aW9ucykgKyBpbmRleF0uYXBwZW5k
KHZhbHVlW211bHRpcGxpZXJdKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAg
ICAgICAgIGZvciBwYXJ0aXRpb24gaW4gcGFydGl0aW9uczoKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHBhcnRpdGlvbi5hcHBlbmQodmFsdWUpCi0KLSAgICAgICAgICAgIGZpbHRlcnMuYXBwZW5k
KHNlbGYuZmlsdGVyX2Zvcl9hcmd1bWVudChrZXksIHZhbHVlKSkKLQotICAgICAgICBpZiBsZW4o
cGFydGl0aW9uc1swXSkgPT0gMDoKLSAgICAgICAgICAgIHBhcnRpdGlvbnMgPSBzZWxmLmNsdXN0
ZXIuZGF0YWJhc2Vbc2VsZi5rZXlzcGFjZV1bdGFibGVfbmFtZV0ua2V5cygpCi0KLSAgICAgICAg
Y2FuZGlkYXRlX2VsZW1lbnRzID0gW10KLSAgICAgICAgZm9yIHBhcnRpdGlvbiBpbiBwYXJ0aXRp
b25zOgotICAgICAgICAgICAgZm9yIGtleSwgcm93IGluIHNlbGYuY2x1c3Rlci5kYXRhYmFzZVtz
ZWxmLmtleXNwYWNlXVt0YWJsZV9uYW1lXVt0dXBsZShwYXJ0aXRpb24pXS5pdGVtcygpOgotICAg
ICAgICAgICAgICAgIGRvZXNfbWF0Y2ggPSBUcnVlCi0gICAgICAgICAgICAgICAgZm9yIGZpbHRl
ciBpbiBmaWx0ZXJzOgotICAgICAgICAgICAgICAgICAgICBpZiBub3QgZmlsdGVyKHJvd1sxXSk6
Ci0gICAgICAgICAgICAgICAgICAgICAgICBkb2VzX21hdGNoID0gRmFsc2UKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgaWYgbm90IGRvZXNfbWF0Y2g6Ci0g
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgY2FuZGlkYXRlX2Vs
ZW1lbnRzLmFwcGVuZCgocGFydGl0aW9uLCBrZXkpKQotCi0gICAgICAgICMgVG8gcmV2ZXJzZSwg
dGhleSBhbGwgbmVlZCB0byBhZ3JlZS4gVGhpcyBtaWdodCBub3Qgd29yayB3aXRoIGNvbXBvdW5k
IGNsdXN0ZXJpbmcga2V5cywgYnV0IHdlIHJlYWxseQotICAgICAgICAjIHNob3VsZG4ndCB1c2Ug
dGhvc2UgYW55d2F5cwotICAgICAgICBpc19yZXZlcnNlZCA9IFRydWUKLSAgICAgICAgZm9yIGNv
bHVtbiBpbiBzY2hlbWEucHJpbWFyeV9rZXk6Ci0gICAgICAgICAgICBpZiBjb2x1bW4gaW4gc2No
ZW1hLnBhcnRpdGlvbl9rZXk6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAg
IGlmIG5vdCBjb2x1bW4uaXNfcmV2ZXJzZWQ6Ci0gICAgICAgICAgICAgICAgaXNfcmV2ZXJzZWQg
PSBGYWxzZQotICAgICAgICBjYW5kaWRhdGVfZWxlbWVudHMuc29ydChyZXZlcnNlPWlzX3JldmVy
c2VkKQotCi0gICAgICAgIGZvciBjYW5kaWRhdGUgaW4gY2FuZGlkYXRlX2VsZW1lbnRzOgotICAg
ICAgICAgICAgZWxlbWVudCA9IHNlbGYuY2x1c3Rlci5kYXRhYmFzZVtzZWxmLmtleXNwYWNlXVt0
YWJsZV9uYW1lXVt0dXBsZShjYW5kaWRhdGVbMF0pXVtjYW5kaWRhdGVbMV1dCi0gICAgICAgICAg
ICBkZWFkbGluZSA9IGVsZW1lbnRbMF0KLSAgICAgICAgICAgIGlmIGRlYWRsaW5lIGlzIE5vbmUg
b3IgZGVhZGxpbmUgPiB0aW1lLnRpbWUoKToKLSAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5k
KGVsZW1lbnRbMV0pCi0gICAgICAgICAgICAgICAgbGltaXQgLT0gMQotICAgICAgICAgICAgICAg
IGlmIGxpbWl0IDw9IDA6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQKLSAgICAg
ICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZGVsIHNlbGYuY2x1c3Rlci5kYXRhYmFzZVtz
ZWxmLmtleXNwYWNlXVt0YWJsZV9uYW1lXVt0dXBsZShjYW5kaWRhdGVbMF0pXVtjYW5kaWRhdGVb
MV1dCi0gICAgICAgIHJldHVybiByZXN1bHQKSW5kZXg6IFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3Vs
dHNkYnB5L21vZGVsL21vY2tfbW9kZWxfZmFjdG9yeS5weQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9y
ZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9tb2NrX21vZGVsX2ZhY3RvcnkucHkJKHJldmlz
aW9uIDI2NTUzMSkKKysrIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL21vY2tf
bW9kZWxfZmFjdG9yeS5weQkobm9uZXhpc3RlbnQpCkBAIC0xLDE5NyArMCwwIEBACi0jIENvcHly
aWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0j
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMg
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
LSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UgotIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUgotIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotIyBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1pbXBvcnQgYmFzZTY0Ci1pbXBvcnQgaW8K
LWltcG9ydCB0aW1lCi0KLWltcG9ydCBjYWxlbmRhcgotZnJvbSByZXN1bHRzZGJweS5jb250cm9s
bGVyLmNvbmZpZ3VyYXRpb24gaW1wb3J0IENvbmZpZ3VyYXRpb24KLWZyb20gcmVzdWx0c2RicHku
bW9kZWwuY29uZmlndXJhdGlvbl9jb250ZXh0X3VuaXR0ZXN0IGltcG9ydCBDb25maWd1cmF0aW9u
Q29udGV4dFRlc3QKLWZyb20gcmVzdWx0c2RicHkubW9kZWwubW9ja19yZXBvc2l0b3J5IGltcG9y
dCBNb2NrU3Rhc2hSZXBvc2l0b3J5LCBNb2NrU1ZOUmVwb3NpdG9yeQotZnJvbSByZXN1bHRzZGJw
eS5tb2RlbC5tb2RlbCBpbXBvcnQgTW9kZWwKLQotCi1jbGFzcyBNb2NrTW9kZWxGYWN0b3J5KG9i
amVjdCk6Ci0gICAgQVJDSElWRV9aSVAgPSAiIiJVRXNEQkFvQUFBQUFBQXRTQlU4QUFBQUFBQUFB
QUFBQUFBQUlBQkFBWVhKamFHbDJaUzlWV0F3QVoyUklYV1prU0YzMUFSUUFVRXNEQkJRQUNBQUlB
QTlTQlU4QUFBQUFBQUFBQUFBQUFBQVFBQkFBWVhKamFHbDJaUzltYVd4bExuUjRkRlZZREFCb3ZV
MWQKLSAgICBibVJJWGZVQkZBQkxTU3hKQkFCUVN3Y0lZL1B6clFZQUFBQUVBQUFBVUVzREJBb0FB
QUFBQUJSZENVOEFBQUFBQUFBQUFBQUFBQUFKQUJBQVgxOU5RVU5QVTFndlZWZ01BQ2krVFYwb3Zr
MWQ5UUVVQUZCTEF3UUtBQUFBQUFBVVhRbFBBQUFBQUFBQQotICAgIEFBQUFBQUFBRVFBUUFGOWZU
VUZEVDFOWUwyRnlZMmhwZG1VdlZWZ01BQ2krVFYwb3ZrMWQ5UUVVQUZCTEF3UVVBQWdBQ0FBUFVn
VlBBQUFBQUFBQUFBQUFBQUFBR3dBUUFGOWZUVUZEVDFOWUwyRnlZMmhwZG1VdkxsOW1hV3hsTG5S
NGRGVllEQUJvCi0gICAgdlUxZGJtUklYZlVCRkFCallCVmpaMkJpWVBCTlRGYndEMWFJVUlBQ2tC
Z0RKeEFiTVRBd2VnRnBJSit4aG9FbzRCZ1NFZ1JoZ1hYY0FlSUZhRXFZb2VJQ0RBeFN5Zm01ZW9r
RkJUbXBlam1KeFNXbHhha3BLWWtscWNvQndWQzFiNERZZzRHQkg2RXUKLSAgICBOekU1QjJLK0NV
Uk9GQ0ZYV0pwWWxKaFhrcG1YeXBDZDRoRUxVc1VhS0s0QVZzMHc5NUg5bDM1MngrMzczNzV5Vm1n
NG4wK2NmOUJCb2I2QmdZV3h0V21LU1VwU2lwR3h0V05SY2tabVdXcE1oWkZCYUVsbVRtWkpwYldC
czZHemtiT3pwYTZGcGFtRgotICAgIHJvbVJtNld1azdtRmk2NkZxWnV4aWFtTGhhdXJpU3NEQUZC
TEJ3akVFM2RyNEFBQUFId0JBQUJRU3dNRUZBQUlBQWdBekZ3SlR3QUFBQUFBQUFBQUFBQUFBQklB
RUFCaGNtTm9hWFpsTDJsdVpHVjRMbWgwYld4VldBd0FvcjFOWGFDOVRWMzFBUlFBCi0gICAgdFZO
ZGIrSXdFSHozcjlqMnFaVUN2ZmJ0N2hDU1NReFlDbkhPZHNyeG1CSzN0UlJpbEpqMit1OXZiYWpL
ZmVqZURnbGlNcnV6TTdQSjVHSTBJcEM2L1Z0dm41NDlYS1hYY1BmcDlqUFEvYjQxd0x2dEdHamJR
a1FINk0xZytoZlRqQWtCYVJvNytONCsKLSAgICBITHgxSGRSZEE0ZkJnTzFnY0lkK2ErS2RCOXZW
L1JzOHVuNDNKUEJxL1RPNFBsN2R3UlBZdWNZKzJtMGRHQktvZXdONzArK3M5NmFCZmU5ZWJJTUgv
MXg3L0RISTByYnUxWFpQc0hWZFkwUFRRR0xYenZndkJHN0h2NGthd0QyK3E5bTZCdXNPZzBjVAot
ICAgIHZrYVZnYkYrY0M4Qk90a25nSi9PZWJzMUNlSjJnQmJaQXNuSHdHanJWelU0Y3R2V2RtZjZN
WUc3UDBYZ3NMTWMza1dndithQXd2NkhEamo2aXp5TjJ4NTJwdlAxKzVwdWNBTU8wUjUydFRlOXJk
dmhJK3k0b2tCN2JpR3NXeSs1QWlYbWVrMGxBenlYCi0gICAgVXR6empHVXcyd0F0eXh4dkZ1a1lM
cWxDOUJKb2tlRjNRNEI5THlWVENvUUV2aXB6amgxSUlXbWhPVk5KYU1xcmpCZUxCR2FWaGtKb3lQ
bUtheXpUSXNHeGpQeWxEOFFjVmt5bVMveExaenpuZWhNbnpya3V3ckE1VHFOUVVxbDVXdVZVRWln
cldRckYKLSAgICBJS2pQdUVwenlsY3NHd01Ld0tIQTdsbWhRUzFwbnArN0VkaVppa0pManVLRVZE
QmpLSS9PRUk4amlnMlNTWmJxWU9UamxHSXdLQ3hQUUpVczVYZ0lPVEMwUWVVbUNWRWdxV0xmS3F4
Q0ZESzZvZ3QwZGZYdk5FZ0lQYTBrV3dXeEdJR3Faa3B6WFdrRwotICAgIEN5R3lHTEppOHA2blRI
MkZYS2dZVktWWWdpTTBUYUlmNU1DWUVNZmlXYVY0REl3WG1rbFpsWnFMNGhxV1lvMkJvRXFLdlZs
TVZoVFJMZTVEU053cTBvWWNZdklKckpjTUFSbXlqR25SRUlQQzFGSjlYb1lETVVSTnpueEN3Ulk1
WDdBaVpRRVdnV2JOCi0gICAgRmJ2R1JYRVZDdmh4OEpwdVFGVFJOZFlFVCtSNFBuc3NrN2hHNEhP
ZzJUMFB5ay9WdUhuRlQ0OUpqQzFkbmpJZms5Rm9Tc2prMmUvYUtWNU0zWmgrT3ZIV3QyWnF1OGI4
R0Fkb2NuTzhNN2s1VlpESmcydmVwdkVOV3hwOEErSFY5VzF6UVNZM1J3QXIKLSAgICBBK1ZQVUVz
SENQYmRNTXZpQWdBQVlRVUFBRkJMQXdRVUFBZ0FDQURNWEFsUEFBQUFBQUFBQUFBQUFBQUFIUUFR
QUY5ZlRVRkRUMU5ZTDJGeVkyaHBkbVV2TGw5cGJtUmxlQzVvZEcxc1ZWZ01BS0s5VFYyZ3ZVMWQ5
UUVVQUdOZ0ZXTm5ZR0pnOEUxTQotICAgIFZ2QVBWb2hRZ0FLUUdBTW5FQnN4TURCNkFXa2duN0dH
Z1NqZ0dCSVNCR0dCZGR3QjRnVm9TcGloNGdJTURGTEorYmw2aVFVRk9hbDZPWW5GSmFYRnFTa3Bp
U1dweWdIQlVMVnZnTmlEZ1lFZm9TNDNNVGtIWXI0SlJFNFVJVmRZbWxpVW1GZVNtWmZLCi0gICAg
VUwvWE54YWs2cUxmRWlHd2FvYTVqK3kvOUxNN2J0Ly85cFd6UXNQNWZPTDhndzRLOVEwTUxJeXRU
Vk5NVXBKU2pJeXRIWXVTTXpMTFVtTXFqQXhDU3pKek1rc3FyUTJjRFoyTm5KMHRkUzBzVFMxMFRZ
emNMSFdkekMxY2RDMU0zWXhOVEYwc1hGMU4KLSAgICBYQmtBVUVzSENMUkJHd3JnQUFBQWZBRUFB
RkJMQXdRVUFBZ0FDQUFMVWdWUEFBQUFBQUFBQUFBQUFBQUFFZ0FRQUY5ZlRVRkRUMU5ZTHk1ZllY
SmphR2wyWlZWWURBQm5aRWhkWm1SSVhmVUJGQUJqWUJWaloyQmlZUEJOVEZid0QxYUlVSUFDa0Jn
RAotICAgIEp4QWJNVEF3Q2dGcElKL1JoWUVvNEJnU0VnUmhnWFZzQWVJSmFFcVlvT0llREF6OHlm
bTVlb2tGQlRtcGVybUp5VGtRK1Q4UU9WR0VYR0ZwWWxGaVhrbG1YaW9ESTBOdHllM2ZpZk1jSEta
OGZYVEVaYXVMTFNQRDNFZjJYL3JaSGJmdmYvdktXYUhoCi0gICAgZkQ0eDdpelVOekN3TUxZMmdB
SnJ4Nkxrak15eTFKZ0tJNFBRa3N5Y3pKSkthd05uUTJjaloyZExYUXRMVXd0ZEV5TTNTMTBuY3dz
WFhRdFROMk1UVXhjTFYxY1RWd1lBVUVzSENBQW9sVGJIQUFBQVJBRUFBRkJMQVFJVkF3b0FBQUFB
QUF0U0JVOEEKLSAgICBBQUFBQUFBQUFBQUFBQUFJQUF3QUFBQUFBQUFBQUVEdFFRQUFBQUJoY21O
b2FYWmxMMVZZQ0FCblpFaGRabVJJWFZCTEFRSVZBeFFBQ0FBSUFBOVNCVTlqOC9PdEJnQUFBQVFB
QUFBUUFBd0FBQUFBQUFBQUFFQ2tnVFlBQUFCaGNtTm9hWFpsTDJacAotICAgIGJHVXVkSGgwVlZn
SUFHaTlUVjF1WkVoZFVFc0JBaFVEQ2dBQUFBQUFGRjBKVHdBQUFBQUFBQUFBQUFBQUFBa0FEQUFB
QUFBQUFBQUFRUDFCaWdBQUFGOWZUVUZEVDFOWUwxVllDQUFvdmsxZEtMNU5YVkJMQVFJVkF3b0FB
QUFBQUJSZENVOEFBQUFBCi0gICAgQUFBQUFBQUFBQUFSQUF3QUFBQUFBQUFBQUVEOVFjRUFBQUJm
WDAxQlEwOVRXQzloY21Ob2FYWmxMMVZZQ0FBb3ZrMWRLTDVOWFZCTEFRSVZBeFFBQ0FBSUFBOVNC
VS9FRTNkcjRBQUFBSHdCQUFBYkFBd0FBQUFBQUFBQUFFQ2tnUUFCQUFCZlgwMUIKLSAgICBRMDlU
V0M5aGNtTm9hWFpsTHk1ZlptbHNaUzUwZUhSVldBZ0FhTDFOWFc1a1NGMVFTd0VDRlFNVUFBZ0FD
QURNWEFsUDl0MHd5K0lDQUFCaEJRQUFFZ0FNQUFBQUFBQUFBQUJBcElFNUFnQUFZWEpqYUdsMlpT
OXBibVJsZUM1b2RHMXNWVmdJQUtLOQotICAgIFRWMmd2VTFkVUVzQkFoVURGQUFJQUFnQXpGd0pU
N1JCR3dyZ0FBQUFmQUVBQUIwQURBQUFBQUFBQUFBQVFLU0Jhd1VBQUY5ZlRVRkRUMU5ZTDJGeVky
aHBkbVV2TGw5cGJtUmxlQzVvZEcxc1ZWZ0lBS0s5VFYyZ3ZVMWRVRXNCQWhVREZBQUlBQWdBCi0g
ICAgQzFJRlR3QW9sVGJIQUFBQVJBRUFBQklBREFBQUFBQUFBQUFBUUtTQnBnWUFBRjlmVFVGRFQx
TllMeTVmWVhKamFHbDJaVlZZQ0FCblpFaGRabVJJWFZCTEJRWUFBQUFBQ0FBSUFGNENBQUM5QndB
QUFBQT0iIiIKLSAgICBUSFJFRV9XRUVLUyA9IDYwICogNjAgKiAyNCAqIDIxCi0KLSAgICBAY2xh
c3NtZXRob2QKLSAgICBkZWYgY3JlYXRlKGNscywgcmVkaXMsIGNhc3NhbmRyYSwgYXN5bmNfcHJv
Y2Vzc2luZz1GYWxzZSk6Ci0gICAgICAgIG9sZGVzdF9jb21taXQgPSB0aW1lLnRpbWUoKQotICAg
ICAgICBmb3IgcmVwbyBpbiBbTW9ja1N0YXNoUmVwb3NpdG9yeS5zYWZhcmkoKSwgTW9ja1NWTlJl
cG9zaXRvcnkud2Via2l0KCldOgotICAgICAgICAgICAgZm9yIGNvbW1pdHMgaW4gcmVwby5jb21t
aXRzLnZhbHVlcygpOgotICAgICAgICAgICAgICAgIGZvciBjb21taXQgaW4gY29tbWl0czoKLSAg
ICAgICAgICAgICAgICAgICAgb2xkZXN0X2NvbW1pdCA9IG1pbihvbGRlc3RfY29tbWl0LCBjYWxl
bmRhci50aW1lZ20oY29tbWl0LnRpbWVzdGFtcC50aW1ldHVwbGUoKSkpCi0KLSAgICAgICAgbW9k
ZWwgPSBNb2RlbCgKLSAgICAgICAgICAgIHJlZGlzPXJlZGlzLAotICAgICAgICAgICAgY2Fzc2Fu
ZHJhPWNhc3NhbmRyYSwKLSAgICAgICAgICAgIHJlcG9zaXRvcmllcz1bCi0gICAgICAgICAgICAg
ICAgTW9ja1N0YXNoUmVwb3NpdG9yeS5zYWZhcmkocmVkaXM9cmVkaXMpLAotICAgICAgICAgICAg
ICAgIE1vY2tTVk5SZXBvc2l0b3J5LndlYmtpdChyZWRpcz1yZWRpcyksCi0gICAgICAgICAgICBd
LAotICAgICAgICAgICAgZGVmYXVsdF90dGxfc2Vjb25kcz10aW1lLnRpbWUoKSAtIG9sZGVzdF9j
b21taXQgKyBNb2RlbC5UVExfV0VFSywKLSAgICAgICAgICAgIGFyY2hpdmVfdHRsX3NlY29uZHM9
dGltZS50aW1lKCkgLSBvbGRlc3RfY29tbWl0ICsgTW9kZWwuVFRMX1dFRUssCi0gICAgICAgICAg
ICBhc3luY19wcm9jZXNzaW5nPWFzeW5jX3Byb2Nlc3NpbmcsCi0gICAgICAgICkKLSAgICAgICAg
d2l0aCBtb2RlbC5jb21taXRfY29udGV4dCwgbW9kZWwuY29tbWl0X2NvbnRleHQuY2Fzc2FuZHJh
LmJhdGNoX3F1ZXJ5X2NvbnRleHQoKToKLSAgICAgICAgICAgIGZvciByZXBvc2l0b3J5IGluIG1v
ZGVsLmNvbW1pdF9jb250ZXh0LnJlcG9zaXRvcmllcy52YWx1ZXMoKToKLSAgICAgICAgICAgICAg
ICBmb3IgYnJhbmNoX2NvbW1pdHMgaW4gcmVwb3NpdG9yeS5jb21taXRzLnZhbHVlcygpOgotICAg
ICAgICAgICAgICAgICAgICBmb3IgY29tbWl0IGluIGJyYW5jaF9jb21taXRzOgotICAgICAgICAg
ICAgICAgICAgICAgICAgbW9kZWwuY29tbWl0X2NvbnRleHQucmVnaXN0ZXJfY29tbWl0KGNvbW1p
dCkKLSAgICAgICAgcmV0dXJuIG1vZGVsCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgbGF5
b3V0X3Rlc3RfcmVzdWx0cyhjbHMpOgotICAgICAgICBkZWZhdWx0X3Jlc3VsdCA9IHsnZXhwZWN0
ZWQnOiAnUEFTUycsICdtb2RpZmllcnMnOiAnJywgJ2FjdHVhbCc6ICdQQVNTJywgJ3RpbWUnOiAx
LjJ9Ci0gICAgICAgIHJldHVybiBkaWN0KAotICAgICAgICAgICAgZGV0YWlscz1kaWN0KGxpbms9
J2R1bW15LWxpbmsnKSwKLSAgICAgICAgICAgIHJ1bl9zdGF0cz1kaWN0KHRlc3RzX3NraXBwZWQ9
MCksCi0gICAgICAgICAgICByZXN1bHRzPXsKLSAgICAgICAgICAgICAgICAnZmFzdCc6IHsKLSAg
ICAgICAgICAgICAgICAgICAgJ2VuY29kaW5nJzogewotICAgICAgICAgICAgICAgICAgICAgICAg
J2Nzcy1jYWNoZWQtYm9tLmh0bWwnOiBkZWZhdWx0X3Jlc3VsdCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICdjc3MtY2hhcnNldC1kZWZhdWx0LnhodG1sJzogZGVmYXVsdF9yZXN1bHQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAnY3NzLWNoYXJzZXQuaHRtbCc6IGRlZmF1bHRfcmVzdWx0LAot
ICAgICAgICAgICAgICAgICAgICAgICAgJ2Nzcy1saW5rLWNoYXJzZXQuaHRtbCc6IGRlZmF1bHRf
cmVzdWx0LAotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgfSwKLSAgICAgICAgKQotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIGl0ZXJhdGVf
YWxsX2NvbW1pdHMoY2xzLCBtb2RlbCwgY2FsbGJhY2spOgotICAgICAgICByZXBvcyA9ICgnd2Vi
a2l0JywgJ3NhZmFyaScpCi0gICAgICAgIGJyYW5jaGVzID0gKE5vbmUsICdzYWZhcmktNjA2LWJy
YW5jaCcpCi0gICAgICAgIGZvciBicmFuY2ggaW4gYnJhbmNoZXM6Ci0gICAgICAgICAgICBjb21t
aXRfaW5kZXggPSB7cmVwbzogMCBmb3IgcmVwbyBpbiByZXBvc30KLSAgICAgICAgICAgIGNvbW1p
dHNfZm9yX3JlcG8gPSB7cmVwbzogc29ydGVkKG1vZGVsLmNvbW1pdF9jb250ZXh0LmZpbmRfY29t
bWl0c19pbl9yYW5nZShyZXBvLCBicmFuY2gpKSBmb3IgcmVwbyBpbiByZXBvc30KLQotICAgICAg
ICAgICAgZm9yIHJlcG8gaW4gcmVwb3M6Ci0gICAgICAgICAgICAgICAgd2hpbGUgbWF4KFtjb21t
aXRzX2Zvcl9yZXBvW3JdW2NvbW1pdF9pbmRleFtyXV0gZm9yIHIgaW4gcmVwb3NdKSA+IGNvbW1p
dHNfZm9yX3JlcG9bcmVwb11bY29tbWl0X2luZGV4W3JlcG9dXToKLSAgICAgICAgICAgICAgICAg
ICAgaWYgY29tbWl0X2luZGV4W3JlcG9dICsgMSA+PSBsZW4oY29tbWl0c19mb3JfcmVwb1tyZXBv
XSk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgICAgICBj
b21taXRfaW5kZXhbcmVwb10gKz0gMQotCi0gICAgICAgICAgICB3aGlsZSBUcnVlOgotICAgICAg
ICAgICAgICAgIGNvbW1pdHMgPSBbXQotICAgICAgICAgICAgICAgIGZvciByZXBvIGluIHJlcG9z
OgotICAgICAgICAgICAgICAgICAgICBjb21taXRzLmFwcGVuZChjb21taXRzX2Zvcl9yZXBvW3Jl
cG9dW2NvbW1pdF9pbmRleFtyZXBvXV0pCi0gICAgICAgICAgICAgICAgY2FsbGJhY2soY29tbWl0
cykKLQotICAgICAgICAgICAgICAgIHlvdW5nZXN0X25leHRfcmVwbyA9IE5vbmUKLSAgICAgICAg
ICAgICAgICBmb3IgcmVwbyBpbiByZXBvczoKLSAgICAgICAgICAgICAgICAgICAgaWYgY29tbWl0
X2luZGV4W3JlcG9dICsgMSA+PSBsZW4oY29tbWl0c19mb3JfcmVwb1tyZXBvXSk6Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgICAgICBpZiBub3QgeW91
bmdlc3RfbmV4dF9yZXBvOgotICAgICAgICAgICAgICAgICAgICAgICAgeW91bmdlc3RfbmV4dF9y
ZXBvID0gcmVwbwotICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAg
ICAgICAgICAgaWYgY29tbWl0c19mb3JfcmVwb1t5b3VuZ2VzdF9uZXh0X3JlcG9dW2NvbW1pdF9p
bmRleFt5b3VuZ2VzdF9uZXh0X3JlcG9dICsgMV0gPiBjb21taXRzX2Zvcl9yZXBvW3JlcG9dW2Nv
bW1pdF9pbmRleFtyZXBvXSArIDFdOgotICAgICAgICAgICAgICAgICAgICAgICAgeW91bmdlc3Rf
bmV4dF9yZXBvID0gcmVwbwotICAgICAgICAgICAgICAgIGlmIG5vdCB5b3VuZ2VzdF9uZXh0X3Jl
cG86Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgY29tbWl0X2lu
ZGV4W3lvdW5nZXN0X25leHRfcmVwb10gKz0gMQotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVm
IGFkZF9tb2NrX3Jlc3VsdHMoY2xzLCBtb2RlbCwgY29uZmlndXJhdGlvbj1Db25maWd1cmF0aW9u
KCksIHN1aXRlPSdsYXlvdXQtdGVzdHMnLCB0ZXN0X3Jlc3VsdHM9Tm9uZSk6Ci0gICAgICAgIGlm
IHRlc3RfcmVzdWx0cyBpcyBOb25lOgotICAgICAgICAgICAgdGVzdF9yZXN1bHRzID0gY2xzLmxh
eW91dF90ZXN0X3Jlc3VsdHMoKQotCi0gICAgICAgIGNvbmZpZ3VyYXRpb25zID0gW2NvbmZpZ3Vy
YXRpb25dIGlmIGNvbmZpZ3VyYXRpb24uaXNfY29tcGxldGUoKSBlbHNlIENvbmZpZ3VyYXRpb25D
b250ZXh0VGVzdC5DT05GSUdVUkFUSU9OUwotCi0gICAgICAgIHdpdGggbW9kZWwudXBsb2FkX2Nv
bnRleHQ6Ci0gICAgICAgICAgICBjdXJyZW50ID0gdGltZS50aW1lKCkKLSAgICAgICAgICAgIG9s
ZCA9IGN1cnJlbnQgLSBjbHMuVEhSRUVfV0VFS1MKLSAgICAgICAgICAgIGZvciBjb21wbGV0ZV9j
b25maWd1cmF0aW9uIGluIGNvbmZpZ3VyYXRpb25zOgotICAgICAgICAgICAgICAgIGlmIGNvbXBs
ZXRlX2NvbmZpZ3VyYXRpb24gIT0gY29uZmlndXJhdGlvbjoKLSAgICAgICAgICAgICAgICAgICAg
Y29udGludWUKLQotICAgICAgICAgICAgICAgIHRpbWVzdGFtcF90b191c2UgPSBjdXJyZW50Ci0g
ICAgICAgICAgICAgICAgaWYgKGNvbXBsZXRlX2NvbmZpZ3VyYXRpb24ucGxhdGZvcm0gPT0gJ01h
YycgYW5kIGNvbXBsZXRlX2NvbmZpZ3VyYXRpb24udmVyc2lvbiA8PSBDb25maWd1cmF0aW9uLnZl
cnNpb25fdG9faW50ZWdlcignMTAuMTMnKSkgXAotICAgICAgICAgICAgICAgICAgIG9yIChjb21w
bGV0ZV9jb25maWd1cmF0aW9uLnBsYXRmb3JtID09ICdpT1MnIGFuZCBjb21wbGV0ZV9jb25maWd1
cmF0aW9uLnZlcnNpb24gPD0gQ29uZmlndXJhdGlvbi52ZXJzaW9uX3RvX2ludGVnZXIoJzExJykp
OgotICAgICAgICAgICAgICAgICAgICB0aW1lc3RhbXBfdG9fdXNlID0gb2xkCi0KLSAgICAgICAg
ICAgICAgICBjbHMuaXRlcmF0ZV9hbGxfY29tbWl0cyhtb2RlbCwgbGFtYmRhIGNvbW1pdHM6IG1v
ZGVsLnVwbG9hZF9jb250ZXh0LnVwbG9hZF90ZXN0X3Jlc3VsdHMoY29tcGxldGVfY29uZmlndXJh
dGlvbiwgY29tbWl0cywgc3VpdGU9c3VpdGUsIHRlc3RfcmVzdWx0cz10ZXN0X3Jlc3VsdHMsIHRp
bWVzdGFtcD10aW1lc3RhbXBfdG9fdXNlKSkKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBw
cm9jZXNzX3Jlc3VsdHMoY2xzLCBtb2RlbCwgY29uZmlndXJhdGlvbj1Db25maWd1cmF0aW9uKCks
IHN1aXRlPSdsYXlvdXQtdGVzdHMnKToKLSAgICAgICAgY29uZmlndXJhdGlvbnMgPSBbY29uZmln
dXJhdGlvbl0gaWYgY29uZmlndXJhdGlvbi5pc19jb21wbGV0ZSgpIGVsc2UgQ29uZmlndXJhdGlv
bkNvbnRleHRUZXN0LkNPTkZJR1VSQVRJT05TCi0KLSAgICAgICAgd2l0aCBtb2RlbC51cGxvYWRf
Y29udGV4dDoKLSAgICAgICAgICAgIGZvciBjb21wbGV0ZV9jb25maWd1cmF0aW9uIGluIGNvbmZp
Z3VyYXRpb25zOgotICAgICAgICAgICAgICAgIGlmIGNvbXBsZXRlX2NvbmZpZ3VyYXRpb24gIT0g
Y29uZmlndXJhdGlvbjoKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAg
ICAgICBmb3IgYnJhbmNoIGluIChOb25lLCAnc2FmYXJpLTYwNi1icmFuY2gnKToKLSAgICAgICAg
ICAgICAgICAgICAgcmVzdWx0c19kaWN0ID0gbW9kZWwudXBsb2FkX2NvbnRleHQuZmluZF90ZXN0
X3Jlc3VsdHMoCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9ucz1bY29tcGxl
dGVfY29uZmlndXJhdGlvbl0sIHN1aXRlPXN1aXRlLAotICAgICAgICAgICAgICAgICAgICAgICAg
YnJhbmNoPWJyYW5jaCwgcmVjZW50PUZhbHNlLAotICAgICAgICAgICAgICAgICAgICApCi0gICAg
ICAgICAgICAgICAgICAgIGZvciBjb25maWcsIHJlc3VsdHMgaW4gcmVzdWx0c19kaWN0Lml0ZW1z
KCk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBmb3IgcmVzdWx0IGluIHJlc3VsdHM6Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbW9kZWwudXBsb2FkX2NvbnRleHQucHJvY2Vzc190ZXN0
X3Jlc3VsdHMoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb249
Y29uZmlnLCBjb21taXRzPXJlc3VsdFsnY29tbWl0cyddLCBzdWl0ZT1zdWl0ZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9yZXN1bHRzPXJlc3VsdFsndGVzdF9yZXN1bHRz
J10sIHRpbWVzdGFtcD1yZXN1bHRbJ3RpbWVzdGFtcCddLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICkKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBhZGRfbW9ja19hcmNoaXZlcyhj
bHMsIG1vZGVsLCBjb25maWd1cmF0aW9uPUNvbmZpZ3VyYXRpb24oKSwgc3VpdGU9J2xheW91dC10
ZXN0cycsIGFyY2hpdmU9Tm9uZSk6Ci0gICAgICAgIGFyY2hpdmUgPSBhcmNoaXZlIG9yIGlvLkJ5
dGVzSU8oYmFzZTY0LmI2NGRlY29kZShjbHMuQVJDSElWRV9aSVApKQotICAgICAgICBjb25maWd1
cmF0aW9ucyA9IFtjb25maWd1cmF0aW9uXSBpZiBjb25maWd1cmF0aW9uLmlzX2NvbXBsZXRlKCkg
ZWxzZSBDb25maWd1cmF0aW9uQ29udGV4dFRlc3QuQ09ORklHVVJBVElPTlMKLQotICAgICAgICB3
aXRoIG1vZGVsLnVwbG9hZF9jb250ZXh0OgotICAgICAgICAgICAgY3VycmVudCA9IHRpbWUudGlt
ZSgpCi0gICAgICAgICAgICBvbGQgPSBjdXJyZW50IC0gY2xzLlRIUkVFX1dFRUtTCi0gICAgICAg
ICAgICBmb3IgY29tcGxldGVfY29uZmlndXJhdGlvbiBpbiBjb25maWd1cmF0aW9uczoKLSAgICAg
ICAgICAgICAgICBpZiBjb21wbGV0ZV9jb25maWd1cmF0aW9uICE9IGNvbmZpZ3VyYXRpb246Ci0g
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgICAgICAgICB0aW1lc3RhbXBf
dG9fdXNlID0gY3VycmVudAotICAgICAgICAgICAgICAgIGlmIChjb21wbGV0ZV9jb25maWd1cmF0
aW9uLnBsYXRmb3JtID09ICdNYWMnIGFuZCBjb21wbGV0ZV9jb25maWd1cmF0aW9uLnZlcnNpb24g
PD0gQ29uZmlndXJhdGlvbi52ZXJzaW9uX3RvX2ludGVnZXIoJzEwLjEzJykpIFwKLSAgICAgICAg
ICAgICAgICAgICBvciAoY29tcGxldGVfY29uZmlndXJhdGlvbi5wbGF0Zm9ybSA9PSAnaU9TJyBh
bmQgY29tcGxldGVfY29uZmlndXJhdGlvbi52ZXJzaW9uIDw9IENvbmZpZ3VyYXRpb24udmVyc2lv
bl90b19pbnRlZ2VyKCcxMScpKToKLSAgICAgICAgICAgICAgICAgICAgdGltZXN0YW1wX3RvX3Vz
ZSA9IG9sZAotCi0gICAgICAgICAgICAgICAgY2xzLml0ZXJhdGVfYWxsX2NvbW1pdHMobW9kZWws
IGxhbWJkYSBjb21taXRzOiBtb2RlbC5hcmNoaXZlX2NvbnRleHQucmVnaXN0ZXIoYXJjaGl2ZSwg
Y29tcGxldGVfY29uZmlndXJhdGlvbiwgY29tbWl0cywgc3VpdGU9c3VpdGUsIHRpbWVzdGFtcD10
aW1lc3RhbXBfdG9fdXNlKSkKSW5kZXg6IFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21v
ZGVsL21vY2tfcmVwb3NpdG9yeS5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9yZXN1bHRzZGJweS9y
ZXN1bHRzZGJweS9tb2RlbC9tb2NrX3JlcG9zaXRvcnkucHkJKHJldmlzaW9uIDI2NTUzMSkKKysr
IFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL21vY2tfcmVwb3NpdG9yeS5weQko
bm9uZXhpc3RlbnQpCkBAIC0xLDMzMCArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECi0j
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IKLSMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotIyBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUgotIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotCi1pbXBvcnQgY29udGV4dGxpYgotaW1wb3J0IGpzb24KLWltcG9ydCByZQot
aW1wb3J0IHVybGxpYgotaW1wb3J0IHhtbHRvZGljdAotCi1mcm9tIGNvbGxlY3Rpb25zIGltcG9y
dCBkZWZhdWx0ZGljdAotZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVyLmNvbW1pdCBpbXBvcnQg
Q29tbWl0Ci1mcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLnJlcG9zaXRvcnkgaW1wb3J0IFN0YXNoUmVw
b3NpdG9yeSwgU1ZOUmVwb3NpdG9yeSwgV2ViS2l0UmVwb3NpdG9yeQotCi0KLWNsYXNzIE1vY2tS
ZXF1ZXN0KG9iamVjdCk6Ci0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgdGV4dD0nJywgc3RhdHVz
X2NvZGU9MjAwKToKLSAgICAgICAgc2VsZi50ZXh0ID0gdGV4dAotICAgICAgICBzZWxmLnN0YXR1
c19jb2RlID0gc3RhdHVzX2NvZGUKLQotCi1jbGFzcyBNb2NrU3Rhc2hSZXBvc2l0b3J5KFN0YXNo
UmVwb3NpdG9yeSk6Ci0KLSAgICBDT01NSVRfUkUgPSByZS5jb21waWxlKHInY29tbWl0cy8oP1A8
aGFzaD5bMC05YS1mXSspJykKLSAgICBDT01NSVRfRk9SX0JSQU5DSF9SRSA9IHJlLmNvbXBpbGUo
cidjb21taXRzXD9zaW5jZVw9KD9QPGhhc2g+WzAtOWEtZl0rKVwmdW50aWxcPSg/UDxicmFuY2g+
W14mXSspXCZsaW1pdFw9MScpCi0gICAgQ09NTUlUX0FUX0hFQURfUkUgPSByZS5jb21waWxlKHIn
Y29tbWl0c1w/dW50aWxcPSg/UDxicmFuY2g+W14mXSspXCZsaW1pdFw9XGQrJykKLSAgICBET0VT
X05PVF9FWElTVF9SRVNVTFQgPSB7J2Vycm9ycyc6IFt7Ci0gICAgICAgICdjb250ZXh0JzogTm9u
ZSwKLSAgICAgICAgJ21lc3NhZ2UnOiAnQ29tbWl0IFwnP1wnIGRvZXMgbm90IGV4aXN0IGluIHJl
cG9zaXRvcnkuJywKLSAgICAgICAgJ2V4Y2VwdGlvbk5hbWUnOiAnY29tLmF0bGFzc2lhbi5iaXRi
dWNrZXQuY29tbWl0Lk5vU3VjaENvbW1pdEV4Y2VwdGlvbicsCi0gICAgfV19Ci0KLSAgICBAc3Rh
dGljbWV0aG9kCi0gICAgZGVmIHNhZmFyaShyZWRpcz1Ob25lKToKLSAgICAgICAgcmVzdWx0ID0g
TW9ja1N0YXNoUmVwb3NpdG9yeSgnaHR0cHM6Ly9mYWtlLXN0YXNoLWluc3RhbmNlLmFwcGxlLmNv
bS9wcm9qZWN0cy9CUk9XU0VSL3JlcG9zL3NhZmFyaScsIG5hbWU9J3NhZmFyaScsIHJlZGlzPXJl
ZGlzKQotICAgICAgICByZXN1bHQuYWRkX2NvbW1pdChDb21taXQoCi0gICAgICAgICAgICByZXBv
c2l0b3J5X2lkPXJlc3VsdC5uYW1lLCBicmFuY2g9J21hc3RlcicsIGlkPSdiYjZiZGE1ZjQ0ZGQy
NGQwYjU0NTM5YjhmZjZlOGMxN2Y1MTkyNDlhJywKLSAgICAgICAgICAgIHRpbWVzdGFtcD0xNTM3
ODEwMjgxLCBvcmRlcj0wLAotICAgICAgICAgICAgY29tbWl0dGVyPSdwZXJzb24xQGFwcGxlLmNv
bScsCi0gICAgICAgICAgICBtZXNzYWdlPSdDaGFuZ2UgMSBkZXNjcmlwdGlvbi4nLAotICAgICAg
ICApKQotICAgICAgICByZXN1bHQuYWRkX2NvbW1pdChDb21taXQoCi0gICAgICAgICAgICByZXBv
c2l0b3J5X2lkPXJlc3VsdC5uYW1lLCBicmFuY2g9J21hc3RlcicsIGlkPSczMzY2MTBhODRmZGNm
MTRkZGNmMWRiNjUwNzVhZjk1NDgwNTE2ZmRhJywKLSAgICAgICAgICAgIHRpbWVzdGFtcD0xNTM3
ODA5ODE4LCBvcmRlcj0wLAotICAgICAgICAgICAgY29tbWl0dGVyPSdwZXJzb24yQGFwcGxlLmNv
bScsCi0gICAgICAgICAgICBtZXNzYWdlPSdDaGFuZ2UgMiBkZXNjcmlwdGlvbi4nLAotICAgICAg
ICApKQotICAgICAgICByZXN1bHQuYWRkX2NvbW1pdChDb21taXQoCi0gICAgICAgICAgICByZXBv
c2l0b3J5X2lkPXJlc3VsdC5uYW1lLCBicmFuY2g9J21hc3RlcicsIGlkPSczMzY2MTBhNDBjM2Zl
Y2I3Mjg4NzFlMTJjYTMxNDgyY2E3MTViMzgzJywKLSAgICAgICAgICAgIHRpbWVzdGFtcD0xNTM3
NTY2Mzg2LCBvcmRlcj0wLAotICAgICAgICAgICAgY29tbWl0dGVyPSdwZXJzb24zQGFwcGxlLmNv
bScsCi0gICAgICAgICAgICBtZXNzYWdlPSc8cmRhcjovL3Byb2JsZW0vOTk5OTk5OTk+IENoYW5n
ZSAzIGRlc2NyaXB0aW9uLicsCi0gICAgICAgICkpCi0gICAgICAgIHJlc3VsdC5hZGRfY29tbWl0
KENvbW1pdCgKLSAgICAgICAgICAgIHJlcG9zaXRvcnlfaWQ9cmVzdWx0Lm5hbWUsIGJyYW5jaD0n
bWFzdGVyJywgaWQ9J2U2NDgxMGE0MGMzZmVjYjcyODg3MWUxMmNhMzE0ODJjYTcxNWIzODMnLAot
ICAgICAgICAgICAgdGltZXN0YW1wPTE1Mzc1NTA2ODUsIG9yZGVyPTAsCi0gICAgICAgICAgICBj
b21taXR0ZXI9J3BlcnNvbjRAYXBwbGUuY29tJywKLSAgICAgICAgICAgIG1lc3NhZ2U9dSdDaGFu
Z2UgNCBcdTIwMTQgKFBhcnQgMSkgZGVzY3JpcHRpb24uJywKLSAgICAgICAgKSkKLSAgICAgICAg
cmVzdWx0LmFkZF9jb21taXQoQ29tbWl0KAotICAgICAgICAgICAgcmVwb3NpdG9yeV9pZD1yZXN1
bHQubmFtZSwgYnJhbmNoPSdtYXN0ZXInLCBpZD0nN2JlNDA4NDI1OGE0NTJlOGZlMjJmMzYyODdj
NWIzMjFlOWM4MjQ5YicsCi0gICAgICAgICAgICB0aW1lc3RhbXA9MTUzNzU1MDY4NSwgb3JkZXI9
MSwKLSAgICAgICAgICAgIGNvbW1pdHRlcj0ncGVyc29uNEBhcHBsZS5jb20nLAotICAgICAgICAg
ICAgbWVzc2FnZT11J0NoYW5nZSA0IFx1MjAxNCAoUGFydCAyKSBkZXNjcmlwdGlvbi5cblJldmll
d2VkIGJ5IHBlcnNvbi4nLAotICAgICAgICApKQotCi0gICAgICAgIHJlc3VsdC5hZGRfY29tbWl0
KENvbW1pdCgKLSAgICAgICAgICAgIHJlcG9zaXRvcnlfaWQ9cmVzdWx0Lm5hbWUsIGJyYW5jaD0n
c2FmYXJpLTYwNi1icmFuY2gnLCBpZD0nNzkyNTZjMzJhODU1YWM4NjEyMTEyMjc5MDA4MzM0ZDkw
ZTkwMWM1NScsCi0gICAgICAgICAgICB0aW1lc3RhbXA9MTUzNzg5NzM2Nywgb3JkZXI9MCwKLSAg
ICAgICAgICAgIGNvbW1pdHRlcj0ncGVyc29uNUBhcHBsZS5jb20nLAotICAgICAgICAgICAgbWVz
c2FnZT0nQ2hhbmdlIDUgZGVzY3JpcHRpb24uJywKLSAgICAgICAgKSkKLSAgICAgICAgcmVzdWx0
LmFkZF9jb21taXQoQ29tbWl0KAotICAgICAgICAgICAgcmVwb3NpdG9yeV9pZD1yZXN1bHQubmFt
ZSwgYnJhbmNoPSdzYWZhcmktNjA2LWJyYW5jaCcsIGlkPSdkODUyMjJkOTQwN2ZkYmJmNDc0MDY1
MDk0MDBhOWNlY2I3M2FjNmRlJywKLSAgICAgICAgICAgIHRpbWVzdGFtcD0xNTM3NTYzMzgzLCBv
cmRlcj0wLAotICAgICAgICAgICAgY29tbWl0dGVyPSdwZXJzb242QGFwcGxlLmNvbScsCi0gICAg
ICAgICAgICBtZXNzYWdlPSdDaGFuZ2UgNiBkZXNjcmlwdGlvbi4nLAotICAgICAgICApKQotICAg
ICAgICByZXR1cm4gcmVzdWx0Ci0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgdXJsLCBuYW1lLCAq
Kmt3YXJncyk6Ci0gICAgICAgIHNlbGYubmFtZSA9IG5hbWUKLSAgICAgICAgc2VsZi5jb21taXRz
ID0gZGVmYXVsdGRpY3QobGlzdCkKLQotICAgICAgICBzdXBlcihNb2NrU3Rhc2hSZXBvc2l0b3J5
LCBzZWxmKS5fX2luaXRfXyh1cmwsICoqa3dhcmdzKQotCi0gICAgQGNvbnRleHRsaWIuY29udGV4
dG1hbmFnZXIKLSAgICBkZWYgc2Vzc2lvbihzZWxmKToKLSAgICAgICAgc2VsZi5fc2Vzc2lvbl9k
ZXB0aCArPSAxCi0gICAgICAgIHlpZWxkCi0gICAgICAgIHNlbGYuX3Nlc3Npb25fZGVwdGggLT0g
MQotCi0gICAgZGVmIGFkZF9jb21taXQoc2VsZiwgY29tbWl0KToKLSAgICAgICAgY29waWVkX2Nv
bW1pdCA9IENvbW1pdC5mcm9tX2pzb24oY29tbWl0LnRvX2pzb24oKSkKLSAgICAgICAgY29waWVk
X2NvbW1pdC5yZXBvc2l0b3J5X2lkID0gc2VsZi5uYW1lCi0gICAgICAgIHNlbGYuY29tbWl0c1tj
b3BpZWRfY29tbWl0LmJyYW5jaF0uYXBwZW5kKGNvcGllZF9jb21taXQpCi0gICAgICAgIHNlbGYu
Y29tbWl0c1tjb3BpZWRfY29tbWl0LmJyYW5jaF0gPSBzb3J0ZWQoc2VsZi5jb21taXRzW2NvcGll
ZF9jb21taXQuYnJhbmNoXSkKLQotICAgIGRlZiByZXF1ZXN0KHNlbGYsIHVybCwgbWV0aG9kPSdH
RVQnLCAqKmt3YXJncyk6Ci0gICAgICAgIGlmIG5vdCB1cmwuc3RhcnRzd2l0aChzZWxmLnVybCkg
b3IgbWV0aG9kICE9ICdHRVQnOgotICAgICAgICAgICAgcmV0dXJuIE1vY2tSZXF1ZXN0KHN0YXR1
c19jb2RlPTQwNCkKLQotICAgICAgICBwYXRoID0gdXJsW2xlbihzZWxmLnVybCkgKyAxOl0KLSAg
ICAgICAgaWYgbm90IHBhdGg6Ci0gICAgICAgICAgICByZXR1cm4gTW9ja1JlcXVlc3QoanNvbi5k
dW1wcyh7J3NsdWcnOiBzZWxmLm5hbWV9KSkKLQotICAgICAgICBtYXRjaCA9IHNlbGYuQ09NTUlU
X1JFLm1hdGNoKHBhdGgpCi0gICAgICAgIGlmIG1hdGNoOgotICAgICAgICAgICAgaW5kZXggPSAt
MQotICAgICAgICAgICAgYnJhbmNoID0gTm9uZQotICAgICAgICAgICAgZm9yIGtleSwgY29tbWl0
cyBpbiBzZWxmLmNvbW1pdHMuaXRlbXMoKToKLSAgICAgICAgICAgICAgICBmb3IgaSBpbiByYW5n
ZShsZW4oY29tbWl0cykpOgotICAgICAgICAgICAgICAgICAgICBpZiBjb21taXRzW2ldLmlkLnN0
YXJ0c3dpdGgobWF0Y2guZ3JvdXAoJ2hhc2gnKSk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBp
ZiBpbmRleCAhPSAtMToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTW9ja1Jl
cXVlc3QoanNvbi5kdW1wcyhzZWxmLkRPRVNfTk9UX0VYSVNUX1JFU1VMVCksIHN0YXR1c19jb2Rl
PTQwMSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4ID0gaQotICAgICAgICAgICAgICAg
ICAgICAgICAgYnJhbmNoID0ga2V5Ci0gICAgICAgICAgICBpZiBpbmRleCA9PSAtMSBvciBub3Qg
YnJhbmNoOgotICAgICAgICAgICAgICAgIHJldHVybiBNb2NrUmVxdWVzdChqc29uLmR1bXBzKHNl
bGYuRE9FU19OT1RfRVhJU1RfUkVTVUxUKSwgc3RhdHVzX2NvZGU9NDAxKQotICAgICAgICAgICAg
cmV0dXJuIE1vY2tSZXF1ZXN0KGpzb24uZHVtcHMoewotICAgICAgICAgICAgICAgICdpZCc6IHNl
bGYuY29tbWl0c1ticmFuY2hdW2luZGV4XS5pZCwKLSAgICAgICAgICAgICAgICAnY29tbWl0dGVy
JzogeydlbWFpbEFkZHJlc3MnOiBzZWxmLmNvbW1pdHNbYnJhbmNoXVtpbmRleF0uY29tbWl0dGVy
fSwKLSAgICAgICAgICAgICAgICAnY29tbWl0dGVyVGltZXN0YW1wJzogc2VsZi5jb21taXRzW2Jy
YW5jaF1baW5kZXhdLnRpbWVzdGFtcF9hc19lcG9jaCgpICogc2VsZi5DT01NSVRfVElNRVNUQU1Q
X0NPTlZFUlNJT04sCi0gICAgICAgICAgICAgICAgJ21lc3NhZ2UnOiBzZWxmLmNvbW1pdHNbYnJh
bmNoXVtpbmRleF0ubWVzc2FnZSwKLSAgICAgICAgICAgICAgICAncGFyZW50cyc6IFtdIGlmIGlu
ZGV4ID09IDAgZWxzZSBbewotICAgICAgICAgICAgICAgICAgICAnaWQnOiBzZWxmLmNvbW1pdHNb
YnJhbmNoXVtpbmRleCAtIDFdLmlkLAotICAgICAgICAgICAgICAgICAgICAnY29tbWl0dGVyVGlt
ZXN0YW1wJzogc2VsZi5jb21taXRzW2JyYW5jaF1baW5kZXggLSAxXS50aW1lc3RhbXBfYXNfZXBv
Y2goKSAqIHNlbGYuQ09NTUlUX1RJTUVTVEFNUF9DT05WRVJTSU9OLAotICAgICAgICAgICAgICAg
IH1dLAotICAgICAgICAgICAgfSkpCi0KLSAgICAgICAgbWF0Y2ggPSBzZWxmLkNPTU1JVF9GT1Jf
QlJBTkNIX1JFLm1hdGNoKHBhdGgpCi0gICAgICAgIGlmIG1hdGNoOgotICAgICAgICAgICAgYnJh
bmNoID0gdXJsbGliLnBhcnNlLnVucXVvdGUobWF0Y2guZ3JvdXAoJ2JyYW5jaCcpKVtsZW4oJ3Jl
ZnMvaGVhZHMnKSArIDE6XQotICAgICAgICAgICAgaGFzX2ZvdW5kID0gRmFsc2UKLSAgICAgICAg
ICAgIGlmIHNlbGYuY29tbWl0cy5nZXQoYnJhbmNoKToKLSAgICAgICAgICAgICAgICBmb3IgY29t
bWl0IGluIHNlbGYuY29tbWl0c1ticmFuY2hdWzotMV06Ci0gICAgICAgICAgICAgICAgICAgIGlm
IGNvbW1pdC5pZC5zdGFydHN3aXRoKG1hdGNoLmdyb3VwKCdoYXNoJykpOgotICAgICAgICAgICAg
ICAgICAgICAgICAgaGFzX2ZvdW5kID0gVHJ1ZQotICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWsKLSAgICAgICAgICAgIHJldHVybiBNb2NrUmVxdWVzdChqc29uLmR1bXBzKHsnc2l6ZSc6IDEg
aWYgaGFzX2ZvdW5kIGVsc2UgMCwgJ2lzTGFzdFBhZ2UnOiBUcnVlfSkpCi0KLSAgICAgICAgbWF0
Y2ggPSBzZWxmLkNPTU1JVF9BVF9IRUFEX1JFLm1hdGNoKHBhdGgpCi0gICAgICAgIGlmIG1hdGNo
OgotICAgICAgICAgICAgYnJhbmNoID0gbWF0Y2guZ3JvdXAoJ2JyYW5jaCcpLnJlcGxhY2UoJyUy
RicsICcvJylbbGVuKCdyZWZzL2hlYWRzJykgKyAxOl0KLSAgICAgICAgICAgIGlmIG5vdCBzZWxm
LmNvbW1pdHMuZ2V0KGJyYW5jaCwgW10pOgotICAgICAgICAgICAgICAgIHJldHVybiBNb2NrUmVx
dWVzdChqc29uLmR1bXBzKHNlbGYuRE9FU19OT1RfRVhJU1RfUkVTVUxUKSwgc3RhdHVzX2NvZGU9
NDAxKQotICAgICAgICAgICAgcmV0dXJuIE1vY2tSZXF1ZXN0KGpzb24uZHVtcHMoeyd2YWx1ZXMn
OiBbeydpZCc6IHNlbGYuY29tbWl0c1ticmFuY2hdWy0xXS5pZH1dLCAnc2l6ZSc6IDEsICdpc0xh
c3RQYWdlJzogVHJ1ZX0pKQotCi0gICAgICAgIHJldHVybiBNb2NrUmVxdWVzdChzdGF0dXNfY29k
ZT00MDQpCi0KLQotIyBVc2VzIG11bHRpcGxlIGluaGVyaXRhbmNlIGluc3RlYWQgb2YgZHVwbGlj
YXRpbmcgdGhlIGZ1bmN0aW9ucyBpbiB0aGlzIGNsYXNzLgotY2xhc3MgX1NWTk1vY2sob2JqZWN0
KToKLSAgICBTVk5fVVJMX1JFID0gcmUuY29tcGlsZShyJ1whc3ZuL3J2ci8oP1A8cmV2aXNpb24+
WzAtOV0rKS8oP1A8YnJhbmNoPi4qKScpCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSwg
dXJsPU5vbmUpOgotICAgICAgICBzZWxmLmNvbW1pdHMgPSBkZWZhdWx0ZGljdChsaXN0KQotICAg
ICAgICBzZWxmLm5hbWUgPSBuYW1lCi0KLSAgICAgICAgIyBTaG91bGQgYmUgb3ZlcnJpZGVuIGJ5
IHRoZSBTVk5SZXBvc2l0b3J5IGNsYXNzCi0gICAgICAgIHNlbGYudXJsID0gdXJsIGlmIHVybCBl
bHNlICcnCi0gICAgICAgIHNlbGYuX3Nlc3Npb25fZGVwdGggPSAwCi0KLSAgICBAY29udGV4dGxp
Yi5jb250ZXh0bWFuYWdlcgotICAgIGRlZiBzZXNzaW9uKHNlbGYpOgotICAgICAgICBzZWxmLl9z
ZXNzaW9uX2RlcHRoICs9IDEKLSAgICAgICAgeWllbGQKLSAgICAgICAgc2VsZi5fc2Vzc2lvbl9k
ZXB0aCAtPSAxCi0KLSAgICBkZWYgYWRkX2NvbW1pdChzZWxmLCBjb21taXQpOgotICAgICAgICBj
b3BpZWRfY29tbWl0ID0gQ29tbWl0LmZyb21fanNvbihjb21taXQudG9fanNvbigpKQotICAgICAg
ICBjb3BpZWRfY29tbWl0LnJlcG9zaXRvcnlfaWQgPSBzZWxmLm5hbWUKLSAgICAgICAgc2VsZi5j
b21taXRzW2NvcGllZF9jb21taXQuYnJhbmNoXS5hcHBlbmQoY29waWVkX2NvbW1pdCkKLSAgICAg
ICAgc2VsZi5jb21taXRzW2NvcGllZF9jb21taXQuYnJhbmNoXSA9IHNvcnRlZChzZWxmLmNvbW1p
dHNbY29waWVkX2NvbW1pdC5icmFuY2hdKQotCi0gICAgZGVmIHJlcXVlc3Qoc2VsZiwgdXJsLCBt
ZXRob2Q9J0dFVCcsICoqa3dhcmdzKToKLSAgICAgICAgaWYgbm90IHVybC5zdGFydHN3aXRoKHNl
bGYudXJsKToKLSAgICAgICAgICAgIHJldHVybiBNb2NrUmVxdWVzdChzdGF0dXNfY29kZT00MDQp
Ci0KLSAgICAgICAgaWYgbWV0aG9kID09ICdHRVQnIGFuZCB1cmwgPT0gc2VsZi51cmw6Ci0gICAg
ICAgICAgICByZXR1cm4gTW9ja1JlcXVlc3QodGV4dD14bWx0b2RpY3QudW5wYXJzZSh7J3N2bic6
IHsnaW5kZXgnOiB7J0BiYXNlJzogc2VsZi5uYW1lfX19KSwgc3RhdHVzX2NvZGU9MjAwKQotICAg
ICAgICBpZiBtZXRob2QgIT0gJ1BST1BGSU5EJzoKLSAgICAgICAgICAgIHJldHVybiBNb2NrUmVx
dWVzdChzdGF0dXNfY29kZT00MDQpCi0KLSAgICAgICAgcGF0aCA9IHVybFtsZW4oc2VsZi51cmwp
Ol0KLSAgICAgICAgbWF0Y2ggPSBzZWxmLlNWTl9VUkxfUkUubWF0Y2gocGF0aCkKLSAgICAgICAg
aWYgbm90IG1hdGNoOgotICAgICAgICAgICAgcmV0dXJuIE1vY2tSZXF1ZXN0KHN0YXR1c19jb2Rl
PTQwNCkKLSAgICAgICAgcmV2aXNpb24gPSBtYXRjaC5ncm91cCgncmV2aXNpb24nKQotICAgICAg
ICBicmFuY2ggPSBtYXRjaC5ncm91cCgnYnJhbmNoJykKLSAgICAgICAgaWYgYnJhbmNoICE9ICd0
cnVuayc6Ci0gICAgICAgICAgICBicmFuY2ggPSBicmFuY2hbbGVuKCdicmFuY2hlcy8nKTpdCi0K
LSAgICAgICAgaWYgYnJhbmNoIG5vdCBpbiBzZWxmLmNvbW1pdHM6Ci0gICAgICAgICAgICByZXR1
cm4gTW9ja1JlcXVlc3Qoc3RhdHVzX2NvZGU9NDA0KQotCi0gICAgICAgIGZvciBjb21taXQgaW4g
c2VsZi5jb21taXRzW2JyYW5jaF06Ci0gICAgICAgICAgICBpZiBjb21taXQuaWQgPT0gcmV2aXNp
b246Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE1vY2tSZXF1ZXN0KAotICAgICAgICAgICAgICAg
ICAgICB0ZXh0PXhtbHRvZGljdC51bnBhcnNlKHsKLSAgICAgICAgICAgICAgICAgICAgICAgICdE
Om11bHRpc3RhdHVzJzogeydEOnJlc3BvbnNlJzogeydEOnByb3BzdGF0JzogWwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHsnRDpwcm9wJzogewotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnbHAxOnZlcnNpb24tbmFtZSc6IGNvbW1pdC5pZCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJ2xwMTpjcmVhdGlvbmRhdGUnOiBjb21taXQudGltZXN0YW1wLnN0cmZ0
aW1lKCclWS0lbS0lZFQlSDolTTolUy4lZlonKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ2xwMTpjcmVhdG9yLWRpc3BsYXluYW1lJzogY29tbWl0LmNvbW1pdHRlciwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9fSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB7
J0Q6c3RhdHVzJzogJ0hUVFAvMS4xIDIwMCBPSyd9LAotICAgICAgICAgICAgICAgICAgICAgICAg
XX19LAotICAgICAgICAgICAgICAgICAgICB9KSwKLSAgICAgICAgICAgICAgICAgICAgc3RhdHVz
X2NvZGU9MjA3LAotICAgICAgICAgICAgICAgICkKLSAgICAgICAgcmV0dXJuIE1vY2tSZXF1ZXN0
KHN0YXR1c19jb2RlPTQwNCkKLQotCi1jbGFzcyBNb2NrU1ZOUmVwb3NpdG9yeShfU1ZOTW9jaywg
U1ZOUmVwb3NpdG9yeSk6Ci0KLSAgICBAc3RhdGljbWV0aG9kCi0gICAgZGVmIHdlYmtpdChyZWRp
cz1Ob25lKToKLSAgICAgICAgcmVzdWx0ID0gTW9ja1dlYktpdFJlcG9zaXRvcnkocmVkaXM9cmVk
aXMpCi0gICAgICAgIHJlc3VsdC5hZGRfY29tbWl0KENvbW1pdCgKLSAgICAgICAgICAgIHJlcG9z
aXRvcnlfaWQ9cmVzdWx0Lm5hbWUsIGJyYW5jaD0ndHJ1bmsnLCBpZD0yMzY1NDQsCi0gICAgICAg
ICAgICB0aW1lc3RhbXA9MTUzODA1MjQwOCwgb3JkZXI9MCwKLSAgICAgICAgICAgIGNvbW1pdHRl
cj0ncGVyc29uMUB3ZWJraXQub3JnJywKLSAgICAgICAgICAgIG1lc3NhZ2U9J0NoYW5nZSAxIGRl
c2NyaXB0aW9uLicsCi0gICAgICAgICkpCi0gICAgICAgIHJlc3VsdC5hZGRfY29tbWl0KENvbW1p
dCgKLSAgICAgICAgICAgIHJlcG9zaXRvcnlfaWQ9cmVzdWx0Lm5hbWUsIGJyYW5jaD0ndHJ1bmsn
LCBpZD0yMzY1NDMsCi0gICAgICAgICAgICB0aW1lc3RhbXA9MTUzODA1MDQ1OCwgb3JkZXI9MCwK
LSAgICAgICAgICAgIGNvbW1pdHRlcj0ncGVyc29uMkB3ZWJraXQub3JnJywKLSAgICAgICAgICAg
IG1lc3NhZ2U9J0NoYW5nZSAyIGRlc2NyaXB0aW9uLicsCi0gICAgICAgICkpCi0gICAgICAgIHJl
c3VsdC5hZGRfY29tbWl0KENvbW1pdCgKLSAgICAgICAgICAgIHJlcG9zaXRvcnlfaWQ9cmVzdWx0
Lm5hbWUsIGJyYW5jaD0ndHJ1bmsnLCBpZD0yMzY1NDIsCi0gICAgICAgICAgICB0aW1lc3RhbXA9
MTUzODA0OTEwOCwgb3JkZXI9MCwKLSAgICAgICAgICAgIGNvbW1pdHRlcj0ncGVyc29uM0B3ZWJr
aXQub3JnJywKLSAgICAgICAgICAgIG1lc3NhZ2U9J0NoYW5nZSAzIGRlc2NyaXB0aW9uLicsCi0g
ICAgICAgICkpCi0gICAgICAgIHJlc3VsdC5hZGRfY29tbWl0KENvbW1pdCgKLSAgICAgICAgICAg
IHJlcG9zaXRvcnlfaWQ9cmVzdWx0Lm5hbWUsIGJyYW5jaD0ndHJ1bmsnLCBpZD0yMzY1NDEsCi0g
ICAgICAgICAgICB0aW1lc3RhbXA9MTUzODA0MTc5Miwgb3JkZXI9MCwKLSAgICAgICAgICAgIGNv
bW1pdHRlcj0ncGVyc29uNEB3ZWJraXQub3JnJywKLSAgICAgICAgICAgIG1lc3NhZ2U9J0NoYW5n
ZSA0IChQYXJ0IDIpIGRlc2NyaXB0aW9uLicsCi0gICAgICAgICkpCi0gICAgICAgIHJlc3VsdC5h
ZGRfY29tbWl0KENvbW1pdCgKLSAgICAgICAgICAgIHJlcG9zaXRvcnlfaWQ9cmVzdWx0Lm5hbWUs
IGJyYW5jaD0ndHJ1bmsnLCBpZD0yMzY1NDAsCi0gICAgICAgICAgICB0aW1lc3RhbXA9MTUzODAy
OTQ3OSwgb3JkZXI9MCwKLSAgICAgICAgICAgIGNvbW1pdHRlcj0ncGVyc29uNEB3ZWJraXQub3Jn
JywKLSAgICAgICAgICAgIG1lc3NhZ2U9J0NoYW5nZSA0IChQYXJ0IDEpIGRlc2NyaXB0aW9uLics
Ci0gICAgICAgICkpCi0KLSAgICAgICAgcmVzdWx0LmFkZF9jb21taXQoQ29tbWl0KAotICAgICAg
ICAgICAgcmVwb3NpdG9yeV9pZD1yZXN1bHQubmFtZSwgYnJhbmNoPSdzYWZhcmktNjA2LWJyYW5j
aCcsIGlkPTIzNjMzNSwKLSAgICAgICAgICAgIHRpbWVzdGFtcD0xNTM4MDI5NDgwLCBvcmRlcj0w
LAotICAgICAgICAgICAgY29tbWl0dGVyPSdpbnRlZ3JhdG9yQHdlYmtpdC5vcmcnLAotICAgICAg
ICAgICAgbWVzc2FnZT0nSW50ZWdyYXRpb24gMS4nLAotICAgICAgICApKQotICAgICAgICByZXN1
bHQuYWRkX2NvbW1pdChDb21taXQoCi0gICAgICAgICAgICByZXBvc2l0b3J5X2lkPXJlc3VsdC5u
YW1lLCBicmFuY2g9J3NhZmFyaS02MDYtYnJhbmNoJywgaWQ9MjM2MzM0LAotICAgICAgICAgICAg
dGltZXN0YW1wPTE1MzgwMjk0NzksIG9yZGVyPTAsCi0gICAgICAgICAgICBjb21taXR0ZXI9J2lu
dGVncmF0b3JAd2Via2l0Lm9yZycsCi0gICAgICAgICAgICBtZXNzYWdlPSdJbnRlZ3JhdGlvbiAy
LicsCi0gICAgICAgICkpCi0gICAgICAgIHJldHVybiByZXN1bHQKLQotICAgIGRlZiBfX2luaXRf
XyhzZWxmLCB1cmwsIG5hbWUsICoqa3dhcmdzKToKLSAgICAgICAgX1NWTk1vY2suX19pbml0X18o
c2VsZiwgbmFtZT1uYW1lLCB1cmw9dXJsKQotICAgICAgICBTVk5SZXBvc2l0b3J5Ll9faW5pdF9f
KHNlbGYsIHVybD11cmwsICoqa3dhcmdzKQotCi0KLWNsYXNzIE1vY2tXZWJLaXRSZXBvc2l0b3J5
KF9TVk5Nb2NrLCBXZWJLaXRSZXBvc2l0b3J5KToKLQotICAgIENIQU5HRUxPR19VUkxfUkUgPSBy
ZS5jb21waWxlKHInKD9QPGJyYW5jaD50cnVua3xicmFuY2hlc1wvLispXC8oP1A8cGF0aD4uKylc
L1w/cD0oP1A8cmV2aXNpb24+WzAtOV0rKScpCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgKipr
d2FyZ3MpOgotICAgICAgICBfU1ZOTW9jay5fX2luaXRfXyhzZWxmLCBuYW1lPSd3ZWJraXQnKQot
ICAgICAgICBXZWJLaXRSZXBvc2l0b3J5Ll9faW5pdF9fKHNlbGYsICoqa3dhcmdzKQotCi0gICAg
ZGVmIHJlcXVlc3Qoc2VsZiwgdXJsLCBtZXRob2Q9J0dFVCcsICoqa3dhcmdzKToKLSAgICAgICAg
aWYgbm90IHVybC5zdGFydHN3aXRoKHNlbGYudXJsKToKLSAgICAgICAgICAgIHJldHVybiBNb2Nr
UmVxdWVzdChzdGF0dXNfY29kZT00MDQpCi0KLSAgICAgICAgIyBUaGUgZGVmYXVsdCBiZWhhdmlv
ciBpcyB0byBmYWxsYmFjayB0byBfU1ZOTW9jawotICAgICAgICBpZiBtZXRob2QgIT0gJ0dFVCc6
Ci0gICAgICAgICAgICByZXR1cm4gX1NWTk1vY2sucmVxdWVzdChzZWxmLCB1cmwsIG1ldGhvZD1t
ZXRob2QsICoqa3dhcmdzKQotCi0gICAgICAgIHBhdGggPSB1cmxbbGVuKHNlbGYudXJsKTpdCi0g
ICAgICAgIG1hdGNoID0gc2VsZi5DSEFOR0VMT0dfVVJMX1JFLm1hdGNoKHBhdGgpCi0gICAgICAg
IGlmIG5vdCBtYXRjaDoKLSAgICAgICAgICAgIHJldHVybiBfU1ZOTW9jay5yZXF1ZXN0KHNlbGYs
IHVybCwgbWV0aG9kPW1ldGhvZCwgKiprd2FyZ3MpCi0KLSAgICAgICAgaWYgbWF0Y2guZ3JvdXAo
J3BhdGgnKSBub3QgaW4gV2ViS2l0UmVwb3NpdG9yeS5DSEFOR0VMT0dTOgotICAgICAgICAgICAg
cmV0dXJuIE1vY2tSZXF1ZXN0KHN0YXR1c19jb2RlPTQwNCkKLSAgICAgICAgaWYgbWF0Y2guZ3Jv
dXAoJ3BhdGgnKSBub3QgaW4gKCdDaGFuZ2VMb2cnLCAnVG9vbHMvQ2hhbmdlTG9nJyk6Ci0gICAg
ICAgICAgICByZXR1cm4gTW9ja1JlcXVlc3Qoc3RhdHVzX2NvZGU9MjAwKQotCi0gICAgICAgIHJl
dmlzaW9uID0gbWF0Y2guZ3JvdXAoJ3JldmlzaW9uJykKLSAgICAgICAgYnJhbmNoID0gbWF0Y2gu
Z3JvdXAoJ2JyYW5jaCcpCi0gICAgICAgIGlmIGJyYW5jaCAhPSAndHJ1bmsnOgotICAgICAgICAg
ICAgYnJhbmNoID0gYnJhbmNoW2xlbignYnJhbmNoZXMvJyk6XQotCi0gICAgICAgIGNoYW5nZWxv
Z19mb3JfY29tbWl0ID0gJycKLSAgICAgICAgZm9yIGNvbW1pdCBpbiBzZWxmLmNvbW1pdHNbYnJh
bmNoXToKLSAgICAgICAgICAgIGNoYW5nZWxvZ19mb3JfY29tbWl0ID0gZiIiIntjb21taXQudGlt
ZXN0YW1wLnN0cmZ0aW1lKCclWS0lbS0lZCcpfSAgSm9uIENvbW1pdHRlciAgPHtjb21taXQuY29t
bWl0dGVyfT4KLQotICAgICAgICB7Y29tbWl0Lm1lc3NhZ2V9Ci0iIiIgKyBjaGFuZ2Vsb2dfZm9y
X2NvbW1pdAotCi0gICAgICAgICAgICBpZiBjb21taXQuaWQgPT0gcmV2aXNpb246Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIE1vY2tSZXF1ZXN0KHRleHQ9Y2hhbmdlbG9nX2Zvcl9jb21taXQsIHN0
YXR1c19jb2RlPTIwMCkKLQotICAgICAgICByZXR1cm4gTW9ja1JlcXVlc3Qoc3RhdHVzX2NvZGU9
NDA0KQpJbmRleDogVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvbW9kZWwucHkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvbW9kZWwu
cHkJKHJldmlzaW9uIDI2NTUzMSkKKysrIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21v
ZGVsL21vZGVsLnB5CShub25leGlzdGVudCkKQEAgLTEsMTM2ICswLDAgQEAKLSMgQ29weXJpZ2h0
IChDKSAyMDE5LCAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwot
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgIkFTIElTIiBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQotIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUgotIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SCi0jIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0jIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0jIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLWltcG9ydCB0cmFjZWJhY2sKLWltcG9y
dCBzeXMKLQotZnJvbSBjYXNzYW5kcmEuY3FsZW5naW5lIGltcG9ydCBjb2x1bW5zCi1mcm9tIGNh
c3NhbmRyYS5jcWxlbmdpbmUubW9kZWxzIGltcG9ydCBNb2RlbCBhcyBDYXNzYW5kcmFNb2RlbAot
ZnJvbSByZXN1bHRzZGJweS5tb2RlbC5hcmNoaXZlX2NvbnRleHQgaW1wb3J0IEFyY2hpdmVDb250
ZXh0Ci1mcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLmNpX2NvbnRleHQgaW1wb3J0IENJQ29udGV4dAot
ZnJvbSByZXN1bHRzZGJweS5tb2RlbC5jb21taXRfY29udGV4dCBpbXBvcnQgQ29tbWl0Q29udGV4
dAotZnJvbSByZXN1bHRzZGJweS5tb2RlbC5jb25maWd1cmF0aW9uX2NvbnRleHQgaW1wb3J0IENv
bmZpZ3VyYXRpb25Db250ZXh0Ci1mcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLnVwbG9hZF9jb250ZXh0
IGltcG9ydCBVcGxvYWRDb250ZXh0Ci1mcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLnN1aXRlX2NvbnRl
eHQgaW1wb3J0IFN1aXRlQ29udGV4dAotZnJvbSByZXN1bHRzZGJweS5tb2RlbC50ZXN0X2NvbnRl
eHQgaW1wb3J0IFRlc3RDb250ZXh0Ci1mcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLmZhaWx1cmVfY29u
dGV4dCBpbXBvcnQgRmFpbHVyZUNvbnRleHQKLQotCi1jbGFzcyBNb2RlbChvYmplY3QpOgotICAg
IFRUTF9EQVkgPSA2MCAqIDYwICogMjQKLSAgICBUVExfV0VFSyA9IDcgKiBUVExfREFZCi0gICAg
VFRMX1lFQVIgPSAzNjUgKiBUVExfREFZCi0KLSAgICBjbGFzcyBIZWFsdGhUYWJsZShDYXNzYW5k
cmFNb2RlbCk6Ci0gICAgICAgIF9fdGFibGVfbmFtZV9fID0gJ2hlYWx0aCcKLSAgICAgICAga2V5
ID0gY29sdW1ucy5UZXh0KHBhcnRpdGlvbl9rZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkKLSAgICAg
ICAgdmFsdWUgPSBjb2x1bW5zLlRleHQocmVxdWlyZWQ9VHJ1ZSkKLQotICAgIGRlZiBfX2luaXRf
XyhzZWxmLCByZWRpcywgY2Fzc2FuZHJhLCByZXBvc2l0b3JpZXM9W10sIGRlZmF1bHRfdHRsX3Nl
Y29uZHM9VFRMX1lFQVIgKiA1LCBhcmNoaXZlX3R0bF9zZWNvbmRzPVRUTF9XRUVLICogOCwgYXN5
bmNfcHJvY2Vzc2luZz1GYWxzZSk6Ci0gICAgICAgIGlmIGRlZmF1bHRfdHRsX3NlY29uZHMgaXMg
bm90IE5vbmUgYW5kIGRlZmF1bHRfdHRsX3NlY29uZHMgPCA0ICogc2VsZi5UVExfV0VFSzoKLSAg
ICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ1RUTCBtdXN0IGJlIGF0IGxlYXN0IDQgd2Vla3Mn
KQotICAgICAgICBpZiBhcmNoaXZlX3R0bF9zZWNvbmRzIGlzIG5vdCBOb25lIGFuZCBhcmNoaXZl
X3R0bF9zZWNvbmRzIDwgMiAqIHNlbGYuVFRMX1dFRUs6Ci0gICAgICAgICAgICByYWlzZSBWYWx1
ZUVycm9yKCdBcmNoaXZlIFRUTCBtdXN0IGJlIGF0IGxlYXN0IDIgd2Vla3MnKQotICAgICAgICBz
ZWxmLmRlZmF1bHRfdHRsX3NlY29uZHMgPSBkZWZhdWx0X3R0bF9zZWNvbmRzCi0gICAgICAgIHNl
bGYuYXJjaGl2ZV90dGxfc2Vjb25kcyA9IGFyY2hpdmVfdHRsX3NlY29uZHMgb3IgZGVmYXVsdF90
dGxfc2Vjb25kcwotICAgICAgICBzZWxmLl9hc3luY19wcm9jZXNzaW5nID0gYXN5bmNfcHJvY2Vz
c2luZwotCi0gICAgICAgIHNlbGYucmVkaXMgPSByZWRpcwotICAgICAgICBzZWxmLmNhc3NhbmRy
YSA9IGNhc3NhbmRyYQotCi0gICAgICAgIHdpdGggc2VsZi5jYXNzYW5kcmE6Ci0gICAgICAgICAg
ICBzZWxmLmNhc3NhbmRyYS5jcmVhdGVfdGFibGUoc2VsZi5IZWFsdGhUYWJsZSkKLQotICAgICAg
ICBzZWxmLmNvbW1pdF9jb250ZXh0ID0gQ29tbWl0Q29udGV4dChyZWRpcywgY2Fzc2FuZHJhKQot
ICAgICAgICBmb3IgcmVwb3NpdG9yeSBpbiByZXBvc2l0b3JpZXM6Ci0gICAgICAgICAgICBzZWxm
LmNvbW1pdF9jb250ZXh0LnJlZ2lzdGVyX3JlcG9zaXRvcnkocmVwb3NpdG9yeSkKLSAgICAgICAg
c2VsZi5jb25maWd1cmF0aW9uX2NvbnRleHQgPSBDb25maWd1cmF0aW9uQ29udGV4dChyZWRpcywg
Y2Fzc2FuZHJhKQotICAgICAgICBzZWxmLnVwbG9hZF9jb250ZXh0ID0gVXBsb2FkQ29udGV4dCgK
LSAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25fY29udGV4dD1zZWxmLmNvbmZpZ3VyYXRpb25fY29u
dGV4dCwKLSAgICAgICAgICAgIGNvbW1pdF9jb250ZXh0PXNlbGYuY29tbWl0X2NvbnRleHQsCi0g
ICAgICAgICAgICB0dGxfc2Vjb25kcz1zZWxmLmRlZmF1bHRfdHRsX3NlY29uZHMsCi0gICAgICAg
ICAgICBhc3luY19wcm9jZXNzaW5nPWFzeW5jX3Byb2Nlc3NpbmcsCi0gICAgICAgICkKLQotICAg
ICAgICBzZWxmLnN1aXRlX2NvbnRleHQgPSBTdWl0ZUNvbnRleHQoCi0gICAgICAgICAgICBjb25m
aWd1cmF0aW9uX2NvbnRleHQ9c2VsZi5jb25maWd1cmF0aW9uX2NvbnRleHQsCi0gICAgICAgICAg
ICBjb21taXRfY29udGV4dD1zZWxmLmNvbW1pdF9jb250ZXh0LAotICAgICAgICAgICAgdHRsX3Nl
Y29uZHM9c2VsZi5kZWZhdWx0X3R0bF9zZWNvbmRzLAotICAgICAgICApCi0gICAgICAgIHNlbGYu
dGVzdF9jb250ZXh0ID0gVGVzdENvbnRleHQoCi0gICAgICAgICAgICBjb25maWd1cmF0aW9uX2Nv
bnRleHQ9c2VsZi5jb25maWd1cmF0aW9uX2NvbnRleHQsCi0gICAgICAgICAgICBjb21taXRfY29u
dGV4dD1zZWxmLmNvbW1pdF9jb250ZXh0LAotICAgICAgICAgICAgdHRsX3NlY29uZHM9c2VsZi5k
ZWZhdWx0X3R0bF9zZWNvbmRzLAotICAgICAgICApCi0gICAgICAgIHNlbGYuZmFpbHVyZV9jb250
ZXh0ID0gRmFpbHVyZUNvbnRleHQoCi0gICAgICAgICAgICBjb25maWd1cmF0aW9uX2NvbnRleHQ9
c2VsZi5jb25maWd1cmF0aW9uX2NvbnRleHQsCi0gICAgICAgICAgICBjb21taXRfY29udGV4dD1z
ZWxmLmNvbW1pdF9jb250ZXh0LAotICAgICAgICAgICAgdHRsX3NlY29uZHM9c2VsZi5kZWZhdWx0
X3R0bF9zZWNvbmRzLAotICAgICAgICApCi0gICAgICAgIHNlbGYuY2lfY29udGV4dCA9IENJQ29u
dGV4dCgKLSAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25fY29udGV4dD1zZWxmLmNvbmZpZ3VyYXRp
b25fY29udGV4dCwKLSAgICAgICAgICAgIGNvbW1pdF9jb250ZXh0PXNlbGYuY29tbWl0X2NvbnRl
eHQsCi0gICAgICAgICAgICB0dGxfc2Vjb25kcz1zZWxmLmRlZmF1bHRfdHRsX3NlY29uZHMsCi0g
ICAgICAgICkKLQotICAgICAgICBmb3IgY29udGV4dCBpbiBbc2VsZi5jaV9jb250ZXh0LCBzZWxm
LmZhaWx1cmVfY29udGV4dCwgc2VsZi5zdWl0ZV9jb250ZXh0LCBzZWxmLnRlc3RfY29udGV4dF06
Ci0gICAgICAgICAgICBzZWxmLnVwbG9hZF9jb250ZXh0LnJlZ2lzdGVyX3VwbG9hZF9jYWxsYmFj
ayhjb250ZXh0Lm5hbWUsIGNvbnRleHQucmVnaXN0ZXIpCi0KLSAgICAgICAgc2VsZi5hcmNoaXZl
X2NvbnRleHQgPSBBcmNoaXZlQ29udGV4dCgKLSAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25fY29u
dGV4dD1zZWxmLmNvbmZpZ3VyYXRpb25fY29udGV4dCwKLSAgICAgICAgICAgIGNvbW1pdF9jb250
ZXh0PXNlbGYuY29tbWl0X2NvbnRleHQsCi0gICAgICAgICAgICB0dGxfc2Vjb25kcz1zZWxmLmFy
Y2hpdmVfdHRsX3NlY29uZHMsCi0gICAgICAgICkKLQotICAgIGRlZiBoZWFsdGh5KHNlbGYsIHdy
aXRhYmxlPVRydWUpOgotICAgICAgICBpZiB3cml0YWJsZToKLSAgICAgICAgICAgIHNlbGYucmVk
aXMuc2V0KCdoZWFsdGgtY2hlY2snLCBiJ2hlYWx0aHknLCBleD01ICogNjApCi0gICAgICAgIHZh
bHVlID0gc2VsZi5yZWRpcy5nZXQoJ2hlYWx0aC1jaGVjaycpCi0gICAgICAgIGlmIHZhbHVlIGlz
IG5vdCBOb25lIGFuZCB2YWx1ZSAhPSBiJ2hlYWx0aHknOgotICAgICAgICAgICAgcmV0dXJuIEZh
bHNlCi0KLSAgICAgICAgd2l0aCBzZWxmLmNhc3NhbmRyYToKLSAgICAgICAgICAgIGlmIHdyaXRh
YmxlOgotICAgICAgICAgICAgICAgIHNlbGYuY2Fzc2FuZHJhLmluc2VydF9yb3coCi0gICAgICAg
ICAgICAgICAgICAgIHNlbGYuSGVhbHRoVGFibGUuX190YWJsZV9uYW1lX18sCi0gICAgICAgICAg
ICAgICAgICAgIGtleT0naGVhbHRoLWNoZWNrJywgdmFsdWU9J2hlYWx0aHknLAotICAgICAgICAg
ICAgICAgICAgICB0dGw9NSAqIDYwLAotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgIHZh
bHVlcyA9IFtlbGVtZW50LnZhbHVlIGZvciBlbGVtZW50IGluIHNlbGYuY2Fzc2FuZHJhLnNlbGVj
dF9mcm9tX3RhYmxlKAotICAgICAgICAgICAgICAgIHNlbGYuSGVhbHRoVGFibGUuX190YWJsZV9u
YW1lX18sIGxpbWl0PTEwMCwga2V5PSdoZWFsdGgtY2hlY2snLAotICAgICAgICAgICAgKV0KLSAg
ICAgICAgICAgIGlmIHZhbHVlcyBhbmQgdmFsdWVzICE9IFsnaGVhbHRoeSddOgotICAgICAgICAg
ICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgICAgIHJldHVybiBUcnVlCi0KLSAgICBkZWYgZG9f
d29yayhzZWxmKToKLSAgICAgICAgaWYgbm90IHNlbGYuX2FzeW5jX3Byb2Nlc3Npbmc6Ci0gICAg
ICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ05vIHdvcmsgdG8gYmUgZG9uZSwgYXN5bmNocm9u
b3VzIHByb2Nlc3NpbmcgZGlzYWJsZWQnKQotCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHJl
dHVybiBzZWxmLnVwbG9hZF9jb250ZXh0LmRvX3Byb2Nlc3Npbmdfd29yaygpCi0gICAgICAgIGV4
Y2VwdCBFeGNlcHRpb24gYXMgZToKLSAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoZid7dHJh
Y2ViYWNrLmZvcm1hdF9leGMoKX1cbicpCi0gICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKGYn
e2V9XG4nKQotCi0gICAgICAgIHJldHVybiBGYWxzZQpJbmRleDogVG9vbHMvcmVzdWx0c2RicHkv
cmVzdWx0c2RicHkvbW9kZWwvbW9kZWxfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
cmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvbW9kZWxfdW5pdHRlc3QucHkJKHJldmlzaW9u
IDI2NTUzMSkKKysrIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL21vZGVsX3Vu
aXR0ZXN0LnB5CShub25leGlzdGVudCkKQEAgLTEsNTAgKzAsMCBAQAotIyBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jCi0jIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SCi0jIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSMgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIKLSMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSMgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLQotZnJvbSBmYWtlcmVkaXMgaW1wb3J0IEZha2VTdHJpY3RS
ZWRpcwotZnJvbSByZWRpcyBpbXBvcnQgU3RyaWN0UmVkaXMKLWZyb20gcmVzdWx0c2RicHkubW9k
ZWwuY2Fzc2FuZHJhX2NvbnRleHQgaW1wb3J0IENhc3NhbmRyYUNvbnRleHQKLWZyb20gcmVzdWx0
c2RicHkubW9kZWwubW9ja19jYXNzYW5kcmFfY29udGV4dCBpbXBvcnQgTW9ja0Nhc3NhbmRyYUNv
bnRleHQKLWZyb20gcmVzdWx0c2RicHkubW9kZWwubW9ja19tb2RlbF9mYWN0b3J5IGltcG9ydCBN
b2NrTW9kZWxGYWN0b3J5Ci1mcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLndhaXRfZm9yX2RvY2tlcl90
ZXN0X2Nhc2UgaW1wb3J0IFdhaXRGb3JEb2NrZXJUZXN0Q2FzZQotCi0KLWNsYXNzIE1vZGVsVGVz
dChXYWl0Rm9yRG9ja2VyVGVzdENhc2UpOgotICAgIEtFWVNQQUNFID0gJ21vZGVsX3Rlc3Rfa2V5
c3BhY2UnCi0KLSAgICBkZWYgaW5pdF9kYXRhYmFzZShzZWxmLCByZWRpcz1TdHJpY3RSZWRpcywg
Y2Fzc2FuZHJhPUNhc3NhbmRyYUNvbnRleHQsIGFzeW5jX3Byb2Nlc3Npbmc9RmFsc2UpOgotICAg
ICAgICBjYXNzYW5kcmEuZHJvcF9rZXlzcGFjZShrZXlzcGFjZT1zZWxmLktFWVNQQUNFKQotICAg
ICAgICBzZWxmLm1vZGVsID0gTW9ja01vZGVsRmFjdG9yeS5jcmVhdGUoCi0gICAgICAgICAgICBy
ZWRpcz1yZWRpcygpLCBjYXNzYW5kcmE9Y2Fzc2FuZHJhKGtleXNwYWNlPXNlbGYuS0VZU1BBQ0Us
IGNyZWF0ZV9rZXlzcGFjZT1UcnVlKSwKLSAgICAgICAgICAgIGFzeW5jX3Byb2Nlc3Npbmc9YXN5
bmNfcHJvY2Vzc2luZywKLSAgICAgICAgKQotCi0gICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5t
b2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5k
cmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCi0gICAgZGVmIHRlc3RfaGVhbHRoKHNlbGYsIHJlZGlz
PVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCk6Ci0gICAgICAgIHNlbGYu
aW5pdF9kYXRhYmFzZShyZWRpcz1yZWRpcywgY2Fzc2FuZHJhPWNhc3NhbmRyYSkKLSAgICAgICAg
c2VsZi5hc3NlcnRUcnVlKHNlbGYubW9kZWwuaGVhbHRoeSgpKQotICAgICAgICBzZWxmLmFzc2Vy
dFRydWUoc2VsZi5tb2RlbC5oZWFsdGh5KHdyaXRhYmxlPUZhbHNlKSkKLQotICAgIEBXYWl0Rm9y
RG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVk
aXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQotICAgIGRlZiB0ZXN0X25v
X3dvcmsoc2VsZiwgcmVkaXM9U3RyaWN0UmVkaXMsIGNhc3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0
KToKLSAgICAgICAgc2VsZi5pbml0X2RhdGFiYXNlKHJlZGlzPXJlZGlzLCBjYXNzYW5kcmE9Y2Fz
c2FuZHJhLCBhc3luY19wcm9jZXNzaW5nPVRydWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uo
c2VsZi5tb2RlbC5kb193b3JrKCkpCkluZGV4OiBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJw
eS9tb2RlbC9wYXJ0aXRpb25lZF9yZWRpcy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9yZXN1bHRz
ZGJweS9yZXN1bHRzZGJweS9tb2RlbC9wYXJ0aXRpb25lZF9yZWRpcy5weQkocmV2aXNpb24gMjY1
NTMxKQorKysgVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvcGFydGl0aW9uZWRf
cmVkaXMucHkJKG5vbmV4aXN0ZW50KQpAQCAtMSw1MSArMCwwIEBACi0jIENvcHlyaWdodCAoQykg
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJ
UyIgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotIyBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUgotIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotIyBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSMgVGhpcyBpc24ndCBhIHBlcmZlY3QgaW1wbGVtZW50
YXRpb24sIGJ1dCBpdCBjb3ZlcnMgdGhlIGNhc2VzIG5lZWRlZCBieSByZXN1bHRzIGRhdGFiYXNl
cwotY2xhc3MgUGFydGl0aW9uZWRSZWRpcyhvYmplY3QpOgotCi0gICAgZGVmIF9faW5pdF9fKHNl
bGYsIHJlZGlzLCBwYXJ0aXRpb24pOgotICAgICAgICBzZWxmLl9yZWRpcyA9IHJlZGlzCi0gICAg
ICAgIHNlbGYuX3BhcnRpdGlvbiA9IHBhcnRpdGlvbgotICAgICAgICBpZiBub3Qgc2VsZi5fcGFy
dGl0aW9uOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignS2V5ZWRSZWRpcyBvYmplY3Qg
cmVxdWlyZXMgYSBkZWZpbmVkIHBhcnRpdGlvbiBrZXknKQotCi0gICAgZGVmIHBpbmcoc2VsZik6
Ci0gICAgICAgIHJldHVybiBzZWxmLl9yZWRpcy5waW5nKCkKLQotICAgIGRlZiBnZXQoc2VsZiwg
bmFtZSk6Ci0gICAgICAgIHJldHVybiBzZWxmLl9yZWRpcy5nZXQoc2VsZi5fcGFydGl0aW9uICsg
JzonICsgbmFtZSkKLQotICAgIGRlZiBzZXQoc2VsZiwgbmFtZSwgdmFsdWUsICoqa3dhcmdzKToK
LSAgICAgICAgcmV0dXJuIHNlbGYuX3JlZGlzLnNldChzZWxmLl9wYXJ0aXRpb24gKyAnOicgKyBu
YW1lLCB2YWx1ZSwgKiprd2FyZ3MpCi0KLSAgICBkZWYgbG9jayhzZWxmLCBuYW1lLCAqKmt3YXJn
cyk6Ci0gICAgICAgIHJldHVybiBzZWxmLl9yZWRpcy5sb2NrKHNlbGYuX3BhcnRpdGlvbiArICc6
JyArIG5hbWUsICoqa3dhcmdzKQotCi0gICAgZGVmIGRlbGV0ZShzZWxmLCAqbmFtZXMpOgotICAg
ICAgICBuYW1lc190b19kZWxldGUgPSBbc2VsZi5fcGFydGl0aW9uICsgJzonICsgbmFtZSBmb3Ig
bmFtZSBpbiBuYW1lc10KLSAgICAgICAgcmV0dXJuIHNlbGYuX3JlZGlzLmRlbGV0ZSgqbmFtZXNf
dG9fZGVsZXRlKQotCi0gICAgZGVmIHNjYW5faXRlcihzZWxmLCBtYXRjaD1Ob25lLCAqKmt3YXJn
cyk6Ci0gICAgICAgIGZvciBrZXkgaW4gc2VsZi5fcmVkaXMuc2Nhbl9pdGVyKG1hdGNoPXNlbGYu
X3BhcnRpdGlvbiArICc6JyArIG1hdGNoLCAqKmt3YXJncyk6Ci0gICAgICAgICAgICB5aWVsZCBr
ZXlbbGVuKHNlbGYuX3BhcnRpdGlvbikgKyAxOl0KSW5kZXg6IFRvb2xzL3Jlc3VsdHNkYnB5L3Jl
c3VsdHNkYnB5L21vZGVsL3BhcnRpdGlvbmVkX3JlZGlzX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL3BhcnRpdGlvbmVkX3JlZGlz
X3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNjU1MzEpCisrKyBUb29scy9yZXN1bHRzZGJweS9yZXN1
bHRzZGJweS9tb2RlbC9wYXJ0aXRpb25lZF9yZWRpc191bml0dGVzdC5weQkobm9uZXhpc3RlbnQp
CkBAIC0xLDgyICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0Ogot
IyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKLSMgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotIyBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0jIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0jIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksCi0jIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0K
LWZyb20gZmFrZXJlZGlzIGltcG9ydCBGYWtlU3RyaWN0UmVkaXMKLWZyb20gcmVkaXMgaW1wb3J0
IFN0cmljdFJlZGlzCi1mcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLnBhcnRpdGlvbmVkX3JlZGlzIGlt
cG9ydCBQYXJ0aXRpb25lZFJlZGlzCi1mcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLndhaXRfZm9yX2Rv
Y2tlcl90ZXN0X2Nhc2UgaW1wb3J0IFdhaXRGb3JEb2NrZXJUZXN0Q2FzZQotCi0KLWNsYXNzIFBh
cnRpdGlvbmVkUmVkaXNVbml0dGVzdChXYWl0Rm9yRG9ja2VyVGVzdENhc2UpOgotICAgIFBBUlRJ
VElPTl8xID0gJ3BhcnRpdGlvbl8xJwotICAgIFBBUlRJVElPTl8yID0gJ3BhcnRpdGlvbl8yJwot
Ci0gICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlz
PUZha2VTdHJpY3RSZWRpcykKLSAgICBkZWYgdGVzdF9nZXQoc2VsZiwgcmVkaXM9U3RyaWN0UmVk
aXMpOgotICAgICAgICByZWRpc18xID0gUGFydGl0aW9uZWRSZWRpcyhyZWRpcygpLCBzZWxmLlBB
UlRJVElPTl8xKQotICAgICAgICByZWRpc18yID0gUGFydGl0aW9uZWRSZWRpcyhyZWRpcygpLCBz
ZWxmLlBBUlRJVElPTl8yKQotICAgICAgICByZWRpc18xLnNldCgna2V5JywgJ3ZhbHVlJykKLSAg
ICAgICAgcmVkaXNfMi5zZXQoJ2tleScsICdvdGhlcicpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChyZWRpc18xLmdldCgna2V5JykuZGVjb2RlKCd1dGYtOCcpLCAndmFsdWUnKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHJlZGlzXzIuZ2V0KCdrZXknKS5kZWNvZGUoJ3V0Zi04JyksICdv
dGhlcicpCi0KLSAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1v
Y2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzKQotICAgIGRlZiB0ZXN0X2RlbGV0ZShzZWxmLCByZWRp
cz1TdHJpY3RSZWRpcyk6Ci0gICAgICAgIHJlZGlzXzEgPSBQYXJ0aXRpb25lZFJlZGlzKHJlZGlz
KCksIHNlbGYuUEFSVElUSU9OXzEpCi0gICAgICAgIHJlZGlzXzIgPSBQYXJ0aXRpb25lZFJlZGlz
KHJlZGlzKCksIHNlbGYuUEFSVElUSU9OXzIpCi0gICAgICAgIHJlZGlzXzEuc2V0KCdrZXktYScs
ICd2YWx1ZS1hJykKLSAgICAgICAgcmVkaXNfMS5zZXQoJ2tleS1iJywgJ3ZhbHVlLWInKQotICAg
ICAgICByZWRpc18yLnNldCgna2V5LWEnLCAnb3RoZXItYScpCi0gICAgICAgIHJlZGlzXzIuc2V0
KCdrZXktYicsICdvdGhlci1iJykKLQotICAgICAgICByZWRpc18xLmRlbGV0ZSgna2V5LWEnLCAn
a2V5LWInKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlZGlzXzEuZ2V0KCdrZXktYScpLCBO
b25lKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlZGlzXzEuZ2V0KCdrZXktYicpLCBOb25l
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlZGlzXzIuZ2V0KCdrZXktYScpLmRlY29kZSgn
dXRmLTgnKSwgJ290aGVyLWEnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlZGlzXzIuZ2V0
KCdrZXktYicpLmRlY29kZSgndXRmLTgnKSwgJ290aGVyLWInKQotCi0gICAgICAgIHJlZGlzXzIu
ZGVsZXRlKCdrZXktYScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVkaXNfMi5nZXQoJ2tl
eS1hJyksIE5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVkaXNfMi5nZXQoJ2tleS1i
JykuZGVjb2RlKCd1dGYtOCcpLCAnb3RoZXItYicpCi0KLSAgICBAV2FpdEZvckRvY2tlclRlc3RD
YXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzKQotICAgIGRl
ZiB0ZXN0X2xvY2soc2VsZiwgcmVkaXM9U3RyaWN0UmVkaXMpOgotICAgICAgICByZWRpc18xID0g
UGFydGl0aW9uZWRSZWRpcyhyZWRpcygpLCBzZWxmLlBBUlRJVElPTl8xKQotICAgICAgICByZWRp
c18yID0gUGFydGl0aW9uZWRSZWRpcyhyZWRpcygpLCBzZWxmLlBBUlRJVElPTl8yKQotICAgICAg
ICB3aXRoIHJlZGlzXzEubG9jayhuYW1lPSdsb2NrJywgYmxvY2tpbmdfdGltZW91dD0uNSk6Ci0g
ICAgICAgICAgICB3aXRoIHJlZGlzXzIubG9jayhuYW1lPSdsb2NrJywgYmxvY2tpbmdfdGltZW91
dD0uNSk6Ci0gICAgICAgICAgICAgICAgcGFzcwotCi0gICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2Fz
ZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcykKLSAgICBkZWYg
dGVzdF9zY2FuKHNlbGYsIHJlZGlzPVN0cmljdFJlZGlzKToKLSAgICAgICAgcmVkaXNfMSA9IFBh
cnRpdGlvbmVkUmVkaXMocmVkaXMoKSwgc2VsZi5QQVJUSVRJT05fMSkKLSAgICAgICAgcmVkaXNf
MiA9IFBhcnRpdGlvbmVkUmVkaXMocmVkaXMoKSwgc2VsZi5QQVJUSVRJT05fMikKLSAgICAgICAg
cmVkaXNfMS5zZXQoJ2l0ZXItYScsICd2YWx1ZS1hJykKLSAgICAgICAgcmVkaXNfMS5zZXQoJ2l0
ZXItYicsICd2YWx1ZS1iJykKLSAgICAgICAgcmVkaXNfMi5zZXQoJ2l0ZXItYycsICd2YWx1ZS1j
JykKLSAgICAgICAgcmVkaXNfMi5zZXQoJ2l0ZXItZCcsICd2YWx1ZS1kJykKLQotICAgICAgICBm
b3Iga2V5IGluIHJlZGlzXzEuc2Nhbl9pdGVyKCdpdGVyKicpOgotICAgICAgICAgICAgc2VsZi5h
c3NlcnRJbihrZXkuZGVjb2RlKCd1dGYtOCcpLCBbJ2l0ZXItYScsICdpdGVyLWInXSkKLSAgICAg
ICAgZm9yIGtleSBpbiByZWRpc18yLnNjYW5faXRlcignaXRlcionKToKLSAgICAgICAgICAgIHNl
bGYuYXNzZXJ0SW4oa2V5LmRlY29kZSgndXRmLTgnKSwgWydpdGVyLWMnLCAnaXRlci1kJ10pCklu
ZGV4OiBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9yZWRpc191bml0dGVzdC5w
eQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9yZWRp
c191bml0dGVzdC5weQkocmV2aXNpb24gMjY1NTMxKQorKysgVG9vbHMvcmVzdWx0c2RicHkvcmVz
dWx0c2RicHkvbW9kZWwvcmVkaXNfdW5pdHRlc3QucHkJKG5vbmV4aXN0ZW50KQpAQCAtMSw0NiAr
MCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0jIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0j
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUgotIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotIyBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLAotIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1pbXBvcnQgdGlt
ZQotZnJvbSByZWRpcyBpbXBvcnQgU3RyaWN0UmVkaXMKLWZyb20gZmFrZXJlZGlzIGltcG9ydCBG
YWtlU3RyaWN0UmVkaXMKLWZyb20gcmVzdWx0c2RicHkubW9kZWwud2FpdF9mb3JfZG9ja2VyX3Rl
c3RfY2FzZSBpbXBvcnQgV2FpdEZvckRvY2tlclRlc3RDYXNlCi0KLQotY2xhc3MgUmVkaXNVbml0
dGVzdChXYWl0Rm9yRG9ja2VyVGVzdENhc2UpOgotCi0gICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2Fz
ZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcykKLSAgICBkZWYg
dGVzdF9iYXNpYyhzZWxmLCByZWRpcz1TdHJpY3RSZWRpcyk6Ci0gICAgICAgIGRiID0gcmVkaXMo
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRiLnNldCgnZXhhbXBsZV9rZXknLCAndmFsdWUn
KSwgVHJ1ZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYi5nZXQoJ2V4YW1wbGVfa2V5Jyku
ZGVjb2RlKCd1dGYtOCcpLCAndmFsdWUnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRiLmRl
bGV0ZSgnZXhhbXBsZV9rZXknKSwgVHJ1ZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYi5n
ZXQoJ2V4YW1wbGVfa2V5JyksIE5vbmUpCi0KLSAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1v
Y2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzKQotICAgIEBXYWl0Rm9y
RG9ja2VyVGVzdENhc2UucnVuX2lmX3Nsb3coKQotICAgIGRlZiB0ZXN0X3RpbWVvdXQoc2VsZiwg
cmVkaXM9U3RyaWN0UmVkaXMpOgotICAgICAgICBkYiA9IHJlZGlzKCkKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChkYi5zZXQoJ2V4YW1wbGVfa2V5JywgJ3ZhbHVlJywgZXg9MSksIFRydWUpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGIuZ2V0KCdleGFtcGxlX2tleScpLmRlY29kZSgndXRm
LTgnKSwgJ3ZhbHVlJykKLSAgICAgICAgdGltZS5zbGVlcCgyKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGRiLmdldCgnZXhhbXBsZV9rZXknKSwgTm9uZSkKSW5kZXg6IFRvb2xzL3Jlc3VsdHNk
YnB5L3Jlc3VsdHNkYnB5L21vZGVsL3JlcG9zaXRvcnkucHkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
cmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvcmVwb3NpdG9yeS5weQkocmV2aXNpb24gMjY1
NTMxKQorKysgVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvcmVwb3NpdG9yeS5w
eQkobm9uZXhpc3RlbnQpCkBAIC0xLDM4OSArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
IyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5E
Ci0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IKLSMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotIyBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUgotIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotIyBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
IyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotCi1pbXBvcnQgZGF0ZXRpbWUKLWltcG9ydCBjb250ZXh0bGliCi1pbXBv
cnQganNvbgotaW1wb3J0IHJlCi1pbXBvcnQgcmVxdWVzdHMKLWltcG9ydCB0aHJlYWRpbmcKLWlt
cG9ydCB1cmxsaWIKLWltcG9ydCB4bWx0b2RpY3QKLQotZnJvbSByZXN1bHRzZGJweS5jb250cm9s
bGVyLmNvbW1pdCBpbXBvcnQgQ29tbWl0Ci1mcm9tIHhtbC5wYXJzZXJzLmV4cGF0IGltcG9ydCBF
eHBhdEVycm9yCi0KLQotY2xhc3MgU0NNRXhjZXB0aW9uKFJ1bnRpbWVFcnJvcik6Ci0gICAgcGFz
cwotCi0KLWNsYXNzIFJlcG9zaXRvcnkob2JqZWN0KToKLSAgICBERUZBVUxUX0JSQU5DSCA9ICdt
YXN0ZXInCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwga2V5KToKLSAgICAgICAgc2VsZi5rZXkg
PSBrZXkKLQotICAgIGRlZiBjb21taXRfZm9yX2lkKHNlbGYsIGlkLCBicmFuY2g9Tm9uZSk6Ci0g
ICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoKQotCi0gICAgZGVmIHVybF9mb3JfY29t
bWl0KHNlbGYsIGNvbW1pdCk6Ci0gICAgICAgIHJldHVybiBOb25lCi0KLQotY2xhc3MgSFRUUFJl
cG9zaXRvcnkoUmVwb3NpdG9yeSk6Ci0KLSAgICBkZWYgX19pbml0X18oc2VsZiwga2V5LCB1cmws
IHJlZGlzPU5vbmUsIHVzZXJuYW1lPU5vbmUsIHBhc3N3b3JkPU5vbmUpOgotICAgICAgICBzdXBl
cihIVFRQUmVwb3NpdG9yeSwgc2VsZikuX19pbml0X18oa2V5KQotICAgICAgICBzZWxmLnVybCA9
IHVybAotICAgICAgICBzZWxmLl91c2VybmFtZSA9IHVzZXJuYW1lCi0gICAgICAgIHNlbGYuX3Bh
c3N3b3JkID0gcGFzc3dvcmQKLSAgICAgICAgc2VsZi5fc2Vzc2lvbiA9IE5vbmUKLSAgICAgICAg
c2VsZi5fc2Vzc2lvbl9kZXB0aCA9IDAKLSAgICAgICAgc2VsZi5yZWRpcyA9IHJlZGlzICAjIElu
IG1hbnkgY2FzZXMsIHdlIGNhbiBncmVhdGx5IHJlZHVjZSB0aGUgbnVtYmVyIG9mIHJlcXVlc3Rz
IG1hZGUgYnkgY2FjaGluZyByZXF1ZXN0cyBpbiBSZWRpcy4KLQotICAgIEBjb250ZXh0bGliLmNv
bnRleHRtYW5hZ2VyCi0gICAgZGVmIHNlc3Npb24oc2VsZik6Ci0gICAgICAgIGlmIG5vdCBzZWxm
Ll9zZXNzaW9uOgotICAgICAgICAgICAgc2VsZi5fc2Vzc2lvbiA9IHJlcXVlc3RzLlNlc3Npb24o
KQotICAgICAgICAgICAgaWYgc2VsZi5fdXNlcm5hbWUgYW5kIHNlbGYuX3Bhc3N3b3JkOgotICAg
ICAgICAgICAgICAgIHNlbGYuX3Nlc3Npb24uYXV0aCA9IChzZWxmLl91c2VybmFtZSwgc2VsZi5f
cGFzc3dvcmQpCi0gICAgICAgICAgICBzZWxmLl9zZXNzaW9uLm1vdW50KHNlbGYudXJsLCByZXF1
ZXN0cy5hZGFwdGVycy5IVFRQQWRhcHRlcihtYXhfcmV0cmllcz01KSkKLSAgICAgICAgc2VsZi5f
c2Vzc2lvbl9kZXB0aCArPSAxCi0KLSAgICAgICAgeWllbGQKLQotICAgICAgICBzZWxmLl9zZXNz
aW9uX2RlcHRoIC09IDEKLSAgICAgICAgaWYgc2VsZi5fc2Vzc2lvbl9kZXB0aCA8PSAwOgotICAg
ICAgICAgICAgc2VsZi5fc2Vzc2lvbi5jbG9zZSgpCi0gICAgICAgICAgICBzZWxmLl9zZXNzaW9u
ID0gTm9uZQotCi0gICAgZGVmIHJlcXVlc3Qoc2VsZiwgdXJsLCBtZXRob2Q9J0dFVCcsICoqa3dh
cmdzKToKLSAgICAgICAgd2l0aCBzZWxmLnNlc3Npb24oKToKLSAgICAgICAgICAgIHJldHVybiBz
ZWxmLl9zZXNzaW9uLnJlcXVlc3QobWV0aG9kPW1ldGhvZCwgdXJsPXVybCwgKiprd2FyZ3MpCi0K
LSAgICBkZWYgY2FjaGVfcmVzdWx0KHNlbGYsIGtleSwgZnVuY3Rpb24sIGV4PTYwICogNjAgKiAy
NCAqIDIpOgotICAgICAgICByZXN1bHQgPSBOb25lCi0gICAgICAgIGlmIHNlbGYucmVkaXM6Ci0g
ICAgICAgICAgICByZXN1bHQgPSBzZWxmLnJlZGlzLmdldChrZXkpCi0gICAgICAgIGlmIHJlc3Vs
dCBpcyBOb25lOgotICAgICAgICAgICAgcmVzdWx0ID0gZnVuY3Rpb24oKQotICAgICAgICBlbHNl
OgotICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LmRlY29kZSgndXRmLTgnKQotICAgICAgICBp
ZiByZXN1bHQgYW5kIHNlbGYucmVkaXM6Ci0gICAgICAgICAgICBzZWxmLnJlZGlzLnNldChrZXks
IHJlc3VsdCwgZXg9ZXgpCi0gICAgICAgIHJldHVybiByZXN1bHQKLQotCi1jbGFzcyBTdGFzaFJl
cG9zaXRvcnkoSFRUUFJlcG9zaXRvcnkpOgotCi0gICAgIyBTdGFzaCdzIHRpbWVzdGFtcHMgYXJl
IGFjY3VyYXRlIHRvIHRoZSBtaWxsaXNlY29uZC4KLSAgICBDT01NSVRfVElNRVNUQU1QX0NPTlZF
UlNJT04gPSAxMDAwCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgdXJsLCAqKmt3YXJncyk6Ci0g
ICAgICAgIFBST0pFQ1RTID0gJy9wcm9qZWN0cycKLSAgICAgICAgaWYgbGVuKHVybC5zcGxpdChQ
Uk9KRUNUUykpICE9IDI6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oZid7dXJsfSBpcyBu
b3QgYSBTdGFzaCBVUkwnKQotICAgICAgICBzZWxmLmJhc2VfdXJsID0gdXJsCi0gICAgICAgIHN1
cGVyKFN0YXNoUmVwb3NpdG9yeSwgc2VsZikuX19pbml0X18oTm9uZSwgKCcvcmVzdC9hcGkvMS4w
JyArIFBST0pFQ1RTKS5qb2luKHVybC5zcGxpdChQUk9KRUNUUykpLCAqKmt3YXJncykKLQotICAg
ICAgICB3aXRoIHNlbGYuc2Vzc2lvbigpOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAg
ICAgIHN0YXNoX2RhdGEgPSBzZWxmLmdldCgpCi0gICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJv
cjoKLSAgICAgICAgICAgICAgICBzdGFzaF9kYXRhID0ge30KLSAgICAgICAgICAgIHNlbGYua2V5
ID0gc3Rhc2hfZGF0YS5nZXQoJ3NsdWcnLCBOb25lKQotICAgICAgICAgICAgaWYgbm90IHNlbGYu
a2V5OgotICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbihmJ3tzZWxmLnVybH0gaXMgbm90
IGFuIFN0YXNoIHJlcG9zaXRvcnknKQotCi0gICAgZGVmIGdldChzZWxmLCBhcmdzPU5vbmUsIGNh
Y2hlPVRydWUpOgotICAgICAgICB1cmwgPSBzZWxmLnVybCArICgnJyBpZiBub3QgYXJncyBlbHNl
IGYnL3thcmdzfScpCi0KLSAgICAgICAgZGVmIGNhbGxiYWNrKHVybD11cmwsIG9iaj1zZWxmKToK
LSAgICAgICAgICAgIHJlc3BvbnNlID0gb2JqLnJlcXVlc3QodXJsKQotICAgICAgICAgICAgaWYg
cmVzcG9uc2Uuc3RhdHVzX2NvZGUgPT0gMjAwOgotICAgICAgICAgICAgICAgIHJldHVybiByZXNw
b25zZS50ZXh0Ci0gICAgICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgICAgIHJlc3VsdCA9IHNl
bGYuY2FjaGVfcmVzdWx0KAotICAgICAgICAgICAgZidyZXBvc2l0b3J5Ont1cmx9JywKLSAgICAg
ICAgICAgIGNhbGxiYWNrLAotICAgICAgICApIGlmIGNhY2hlIGVsc2UgY2FsbGJhY2sodXJsKQot
ICAgICAgICBpZiByZXN1bHQ6Ci0gICAgICAgICAgICByZXR1cm4ganNvbi5sb2FkcyhyZXN1bHQp
Ci0gICAgICAgIHJldHVybiB7fQotCi0gICAgZGVmIGNvbW1pdF9mb3JfaWQoc2VsZiwgaWQsIGJy
YW5jaD1SZXBvc2l0b3J5LkRFRkFVTFRfQlJBTkNIKToKLSAgICAgICAgdHJ5OgotICAgICAgICAg
ICAgd2l0aCBzZWxmLnNlc3Npb24oKToKLSAgICAgICAgICAgICAgICBjb21taXRfZGF0YSA9IHNl
bGYuZ2V0KGYnY29tbWl0cy97aWR9JykKLSAgICAgICAgICAgICAgICBpZiBub3QgY29tbWl0X2Rh
dGE6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIFNDTUV4Y2VwdGlvbihmJ0NvbW1pdCB7aWR9
IGRvZXMgbm90IGV4aXN0IG9uIGJyYW5jaCB7YnJhbmNofScpCi0gICAgICAgICAgICAgICAgdGlt
ZXN0YW1wID0gaW50KGNvbW1pdF9kYXRhWydjb21taXR0ZXJUaW1lc3RhbXAnXSkgLy8gc2VsZi5D
T01NSVRfVElNRVNUQU1QX0NPTlZFUlNJT04KLQotICAgICAgICAgICAgICAgIGJyYW5jaF9maWx0
ZXIgPSB1cmxsaWIucGFyc2UucXVvdGUoZidyZWZzL2hlYWRzL3ticmFuY2h9JykKLSAgICAgICAg
ICAgICAgICBjb21taXRzX2JldHdlZW5fY29tbWl0X2FuZF9icmFuY2hfaGVhZCA9IHNlbGYuZ2V0
KGYiY29tbWl0cz9zaW5jZT17Y29tbWl0X2RhdGFbJ2lkJ119JnVudGlsPXticmFuY2hfZmlsdGVy
fSZsaW1pdD0xIiwgY2FjaGU9RmFsc2UpCi0gICAgICAgICAgICAgICAgaWYgY29tbWl0c19iZXR3
ZWVuX2NvbW1pdF9hbmRfYnJhbmNoX2hlYWRbJ2lzTGFzdFBhZ2UnXSBhbmQgY29tbWl0c19iZXR3
ZWVuX2NvbW1pdF9hbmRfYnJhbmNoX2hlYWRbJ3NpemUnXSA9PSAwOgotICAgICAgICAgICAgICAg
ICAgICAjIFdlIG1heSBoYXZlIG1pc3NlZCB0aGUgY2FzZSB0aGUgY29tbWl0IGluIHF1ZXN0aW9u
IGlzIHRoZSBIRUFEIG9mIHRoZSBicmFuY2gKLSAgICAgICAgICAgICAgICAgICAgY29tbWl0c19h
dF9icmFuY2hfaGVhZCA9IHNlbGYuZ2V0KGYnY29tbWl0cz91bnRpbD17YnJhbmNoX2ZpbHRlcn0m
bGltaXQ9MjAnLCBjYWNoZT1GYWxzZSkKLSAgICAgICAgICAgICAgICAgICAgaWYgYWxsKFtjb21t
aXRbJ2lkJ10gIT0gY29tbWl0X2RhdGFbJ2lkJ10gZm9yIGNvbW1pdCBpbiBjb21taXRzX2F0X2Jy
YW5jaF9oZWFkWyd2YWx1ZXMnXV0pOgotICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgU0NN
RXhjZXB0aW9uKGYne2lkfSBleGlzdHMsIGJ1dCBub3Qgb24ge2JyYW5jaH0nKQotCi0gICAgICAg
ICAgICAgICAgIyBPcmRlcmluZyBjb21taXRzIGJ5IHRpbWVzdGFtcCBpbiBnaXQgaXMgYSBiaXQg
cHJvYmxlbWF0aWMgYmVjYXVzZSBtdWx0aXBsZSBjb21taXRzIGNhbiBzaGFyZSBhIHRpbWVzdGFt
cC4KLSAgICAgICAgICAgICAgICAjIEdlbmVyYWxseSwgaWYgeW91ciBwYXJlbnQgc2hhcmVzIHlv
dXIgdGltZXN0YW1wLCB5b3VyIG9yZGVyIG5lZWRzIHRvIGJlIGluY3JlbWVudGVkLgotICAgICAg
ICAgICAgICAgIG9yZGVyID0gMAotICAgICAgICAgICAgICAgIGxvb3BfZGF0YSA9IGNvbW1pdF9k
YXRhCi0gICAgICAgICAgICAgICAgd2hpbGUgbGVuKGxvb3BfZGF0YVsncGFyZW50cyddKSA9PSAx
IGFuZCBpbnQobG9vcF9kYXRhWydwYXJlbnRzJ11bMF1bJ2NvbW1pdHRlclRpbWVzdGFtcCddKSAv
LyBzZWxmLkNPTU1JVF9USU1FU1RBTVBfQ09OVkVSU0lPTiA9PSB0aW1lc3RhbXA6Ci0gICAgICAg
ICAgICAgICAgICAgIG9yZGVyICs9IDEKLSAgICAgICAgICAgICAgICAgICAgbG9vcF9kYXRhID0g
c2VsZi5nZXQoZiJjb21taXRzL3tsb29wX2RhdGFbJ3BhcmVudHMnXVswXVsnaWQnXX0iKQotCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIENvbW1pdCgKLSAgICAgICAgICAgICAgICAgICAgcmVwb3Np
dG9yeV9pZD1zZWxmLmtleSwKLSAgICAgICAgICAgICAgICAgICAgaWQ9Y29tbWl0X2RhdGFbJ2lk
J10sCi0gICAgICAgICAgICAgICAgICAgIGJyYW5jaD1icmFuY2gsCi0gICAgICAgICAgICAgICAg
ICAgIHRpbWVzdGFtcD10aW1lc3RhbXAsCi0gICAgICAgICAgICAgICAgICAgIG9yZGVyPW9yZGVy
LAotICAgICAgICAgICAgICAgICAgICBjb21taXR0ZXI9Y29tbWl0X2RhdGFbJ2NvbW1pdHRlcidd
WydlbWFpbEFkZHJlc3MnXSwKLSAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT1jb21taXRfZGF0
YVsnbWVzc2FnZSddLAotICAgICAgICAgICAgICAgICkKLSAgICAgICAgZXhjZXB0IFZhbHVlRXJy
b3I6Ci0gICAgICAgICAgICByYWlzZSBTQ01FeGNlcHRpb24oZidGYWlsZWQgdG8gY29ubmVjdCB0
byB7c2VsZi51cmx9JykKLQotICAgIGRlZiB1cmxfZm9yX2NvbW1pdChzZWxmLCBjb21taXQpOgot
ICAgICAgICByZXR1cm4gZid7c2VsZi5iYXNlX3VybH0vY29tbWl0cy97Y29tbWl0fScKLQotCi1j
bGFzcyBTVk5SZXBvc2l0b3J5KEhUVFBSZXBvc2l0b3J5KToKLQotICAgIERFRkFVTFRfQlJBTkNI
ID0gJ3RydW5rJwotICAgIERBVl9YTUwgPSAiIiI8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5n
PSJ1dGYtOCI/PgotPHByb3BmaW5kIHhtbG5zPSJEQVY6Ij4KLTxwcm9wPgotPHJlc291cmNldHlw
ZSB4bWxucz0iREFWOiIvPgotPGdldGNvbnRlbnRsZW5ndGggeG1sbnM9IkRBVjoiLz4KLTxkZWFk
cHJvcC1jb3VudCB4bWxucz0iaHR0cDovL3N1YnZlcnNpb24udGlncmlzLm9yZy94bWxucy9kYXYv
Ii8+Ci08dmVyc2lvbi1uYW1lIHhtbG5zPSJEQVY6Ii8+Ci08Y3JlYXRpb25kYXRlIHhtbG5zPSJE
QVY6Ii8+Ci08Y3JlYXRvci1kaXNwbGF5bmFtZSB4bWxucz0iREFWOiIvPgotPC9wcm9wPjwvcHJv
cGZpbmQ+IiIiCi0KLSAgICBkZWYgZ2V0KHNlbGYsIGJyYW5jaD1ERUZBVUxUX0JSQU5DSCwgcmV2
aXNpb249Tm9uZSk6Ci0gICAgICAgIHVybCA9IHNlbGYudXJsCi0gICAgICAgIGlmIHJldmlzaW9u
OgotICAgICAgICAgICAgdXJsID0gdXJsICsgZiIhc3ZuL3J2ci97cmV2aXNpb259L3ticmFuY2gg
aWYgYnJhbmNoID09IHNlbGYuREVGQVVMVF9CUkFOQ0ggZWxzZSAnYnJhbmNoZXMvJyArIGJyYW5j
aH0iCi0KLSAgICAgICAgZGVmIGNhbGxiYWNrKHVybD11cmwsIG9iaj1zZWxmLCB3aXRoX3Jldmlz
aW9uPVRydWUgaWYgcmV2aXNpb24gZWxzZSBGYWxzZSk6Ci0gICAgICAgICAgICBpZiB3aXRoX3Jl
dmlzaW9uOgotICAgICAgICAgICAgICAgICMgQ29uc3RydWN0ZWQgdGhpcyBmcm9tIFdpcmVTaGFy
ayBhbmQgYW4gc3ZuIGluZm8gY29tbWFuZCwgbW9kaWZ5IHdpdGggY2F1dGlvbiEKLSAgICAgICAg
ICAgICAgICByZXNwb25zZSA9IHNlbGYucmVxdWVzdCgKLSAgICAgICAgICAgICAgICAgICAgbWV0
aG9kPSdQUk9QRklORCcsCi0gICAgICAgICAgICAgICAgICAgIHVybD11cmwsCi0gICAgICAgICAg
ICAgICAgICAgIGhlYWRlcnM9ewotICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlw
ZSc6ICd0ZXh0L3htbCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAnQWNjZXB0LUVuY29kaW5n
JzogJ2d6aXAnLAotICAgICAgICAgICAgICAgICAgICAgICAgJ0RlcHRoJzogJzAnLAotICAgICAg
ICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICBkYXRhPW9iai5EQVZfWE1MKQot
ICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByZXNwb25zZSA9IHNlbGYucmVxdWVz
dChzZWxmLnVybCkKLQotICAgICAgICAgICAgaWYgcmVzcG9uc2Uuc3RhdHVzX2NvZGUgaW4gWzIw
MCwgMjA3XToKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVzcG9uc2UudGV4dAotICAgICAgICAg
ICAgcmV0dXJuIE5vbmUKLQotICAgICAgICByZXN1bHQgPSBzZWxmLmNhY2hlX3Jlc3VsdCgKLSAg
ICAgICAgICAgIGYncmVwb3NpdG9yeTp7dXJsfScsCi0gICAgICAgICAgICBjYWxsYmFjaywKLSAg
ICAgICAgKQotICAgICAgICBpZiByZXN1bHQ6Ci0gICAgICAgICAgICByZXR1cm4geG1sdG9kaWN0
LnBhcnNlKHJlc3VsdCkKLSAgICAgICAgcmV0dXJuIHt9Ci0KLSAgICBkZWYgX19pbml0X18oc2Vs
ZiwgdXJsLCB0cmFjX3VybD1Ob25lLCAqKmt3YXJncyk6Ci0gICAgICAgIHN1cGVyKFNWTlJlcG9z
aXRvcnksIHNlbGYpLl9faW5pdF9fKE5vbmUsIHVybCwgKiprd2FyZ3MpCi0gICAgICAgIHNlbGYu
dHJhY191cmwgPSB0cmFjX3VybAotICAgICAgICB3aXRoIHNlbGYuc2Vzc2lvbigpOgotICAgICAg
ICAgICAgc2VsZi5rZXkgPSBzZWxmLmdldCgpLmdldCgnc3ZuJywge30pLmdldCgnaW5kZXgnKS5n
ZXQoJ0BiYXNlJykKLSAgICAgICAgICAgIGlmIG5vdCBzZWxmLmtleToKLSAgICAgICAgICAgICAg
ICByYWlzZSBFeGNlcHRpb24oZid7c2VsZi51cmx9IGlzIG5vdCBhbiBTVk4gcmVwb3NpdG9yeScp
Ci0KLSAgICBkZWYgY29tbWl0X2Zvcl9pZChzZWxmLCBpZCwgYnJhbmNoPURFRkFVTFRfQlJBTkNI
KToKLSAgICAgICAgd2l0aCBzZWxmLnNlc3Npb24oKToKLSAgICAgICAgICAgIHRyeToKLSAgICAg
ICAgICAgICAgICBjb21taXRfZGF0YSA9IHNlbGYuZ2V0KGJyYW5jaD1icmFuY2gsIHJldmlzaW9u
PWlkKVsnRDptdWx0aXN0YXR1cyddWydEOnJlc3BvbnNlJ11bJ0Q6cHJvcHN0YXQnXVswXVsnRDpw
cm9wJ10KLSAgICAgICAgICAgICAgICBpZiBjb21taXRfZGF0YVsnbHAxOnZlcnNpb24tbmFtZSdd
ICE9IHN0cihpZCk6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIFNDTUV4Y2VwdGlvbihmJ1Jl
dmlzaW9uIHtpZH0gZG9lcyBub3QgZXhpc3Qgb24gYnJhbmNoIHticmFuY2h9JykKLQotICAgICAg
ICAgICAgICAgICMgT2YgdGhlIGZvcm0gJzIwMTgtMDktMjRUMjI6MDM6MzQuNDM2MjE3WicKLSAg
ICAgICAgICAgICAgICB0aW1lc3RhbXAgPSBkYXRldGltZS5kYXRldGltZS5zdHJwdGltZShjb21t
aXRfZGF0YVsnbHAxOmNyZWF0aW9uZGF0ZSddLCAnJVktJW0tJWRUJUg6JU06JVMuJWZaJykKLQot
ICAgICAgICAgICAgICAgIHJldHVybiBDb21taXQoCi0gICAgICAgICAgICAgICAgICAgIHJlcG9z
aXRvcnlfaWQ9c2VsZi5rZXksCi0gICAgICAgICAgICAgICAgICAgIGlkPXN0cihpZCksCi0gICAg
ICAgICAgICAgICAgICAgIGJyYW5jaD1icmFuY2gsCi0gICAgICAgICAgICAgICAgICAgIHRpbWVz
dGFtcD10aW1lc3RhbXAsCi0gICAgICAgICAgICAgICAgICAgIG9yZGVyPTAsCi0gICAgICAgICAg
ICAgICAgICAgIGNvbW1pdHRlcj1jb21taXRfZGF0YVsnbHAxOmNyZWF0b3ItZGlzcGxheW5hbWUn
XSwKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICBleGNlcHQgRXhwYXRFcnJvcjoKLSAg
ICAgICAgICAgICAgICByYWlzZSBTQ01FeGNlcHRpb24oZidGYWlsZWQgdG8gY29ubmVjdCB0byB7
c2VsZi51cmx9JykKLSAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgICAg
ICByYWlzZSBTQ01FeGNlcHRpb24oZidSZXZpc2lvbiB7aWR9IGRvZXMgbm90IGV4aXN0IG9uIGJy
YW5jaCB7YnJhbmNofScpCi0KLSAgICBkZWYgdXJsX2Zvcl9jb21taXQoc2VsZiwgY29tbWl0KToK
LSAgICAgICAgcmV0dXJuIGYne3NlbGYudXJsfS8hc3ZuL2JjL3tjb21taXR9LycKLQotCi1jbGFz
cyBXZWJLaXRSZXBvc2l0b3J5KFNWTlJlcG9zaXRvcnkpOgotICAgIENIQU5HRUxPR1MgPSAoCi0g
ICAgICAgICdDaGFuZ2VMb2cnLAotICAgICAgICAnU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9nJywK
LSAgICAgICAgJ1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cnLAotICAgICAgICAnU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvQ2hhbmdlTG9nJywKLSAgICAgICAgJ1NvdXJjZS9UaGlyZFBh
cnR5L0NoYW5nZUxvZycsCi0gICAgICAgICdTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hh
bmdlTG9nJywKLSAgICAgICAgJ1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZycsCi0gICAgICAgICdT
b3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nJywKLSAgICAgICAgJ1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9wby9DaGFuZ2VMb2cnLAotICAgICAgICAnU291cmNlL1dlYkRyaXZlci9DaGFu
Z2VMb2cnLAotICAgICAgICAnU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZycsCi0gICAg
ICAgICdTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZycsCi0gICAgICAgICdTb3VyY2UvV2ViS2l0TGVn
YWN5L2NmL0NoYW5nZUxvZycsCi0gICAgICAgICdTb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxv
ZycsCi0gICAgICAgICdTb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cnLAotICAgICAg
ICAnU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nJywKLSAgICAgICAgJ1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZycsCi0gICAgICAgICdTb3VyY2UvV1RGL0NoYW5nZUxv
ZycsCi0gICAgICAgICdUb29scy9DaGFuZ2VMb2cnLAotICAgICAgICAnRXhhbXBsZXMvQ2hhbmdl
TG9nJywKLSAgICAgICAgJ0pTVGVzdHMvQ2hhbmdlTG9nJywKLSAgICAgICAgJ0xheW91dFRlc3Rz
L0NoYW5nZUxvZycsCi0gICAgICAgICdMYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL0NoYW5n
ZUxvZycsCi0gICAgICAgICdMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nJywKLSAg
ICAgICAgJ1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nJywKLSAgICAgICAgJ1BlcmZvcm1hbmNl
VGVzdHMvU3VuU3BpZGVyL0NoYW5nZUxvZycsCi0gICAgICAgICdXZWJEcml2ZXJUZXN0cy9DaGFu
Z2VMb2cnLAotICAgICAgICAnV2ViS2l0TGlicmFyaWVzL0NoYW5nZUxvZycsCi0gICAgICAgICdX
ZWJzaXRlcy9icm93c2VyYmVuY2gub3JnL0NoYW5nZUxvZycsCi0gICAgICAgICdXZWJzaXRlcy9i
dWdzLndlYmtpdC5vcmcvQ2hhbmdlTG9nJywKLSAgICAgICAgJ1dlYnNpdGVzL3BlcmYud2Via2l0
Lm9yZy9DaGFuZ2VMb2cnLAotICAgICAgICAnV2Vic2l0ZXMvcGxhbmV0LndlYmtpdC5vcmcvQ2hh
bmdlTG9nJywKLSAgICAgICAgJ1dlYnNpdGVzL3dlYmtpdC5vcmcvQ2hhbmdlTG9nJywKLSAgICAg
ICAgJ1dlYnNpdGVzL3dlYmtpdC5vcmcvc3BlY3MvQ1NTVmlzdWFsRWZmZWN0cy9DaGFuZ2VMb2cn
LAotICAgICkKLSAgICBDSEFOR0VfTE9HX1RIUkVBRFMgPSA2Ci0gICAgRklSU1RfTElORV9SRUdF
WCA9IHJlLmNvbXBpbGUocicoP1A8ZGF0ZT5cZCstXGQrLVxkKylccysoP1A8bmFtZT5cUy4rXFMp
XHMrPCg/UDxlbWFpbD5cUyspPicpCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgKiprd2FyZ3Mp
OgotICAgICAgICBzdXBlcihXZWJLaXRSZXBvc2l0b3J5LCBzZWxmKS5fX2luaXRfXygnaHR0cHM6
Ly9zdm4ud2Via2l0Lm9yZy9yZXBvc2l0b3J5L3dlYmtpdC8nLCAqKmt3YXJncykKLQotICAgIGRl
ZiBjb21taXRfZm9yX2lkKHNlbGYsIGlkLCBicmFuY2g9U1ZOUmVwb3NpdG9yeS5ERUZBVUxUX0JS
QU5DSCk6Ci0gICAgICAgIHdpdGggc2VsZi5zZXNzaW9uKCk6Ci0gICAgICAgICAgICByZXN1bHQg
PSBzdXBlcihXZWJLaXRSZXBvc2l0b3J5LCBzZWxmKS5jb21taXRfZm9yX2lkKGlkLCBicmFuY2g9
YnJhbmNoKQotCi0gICAgICAgICAgICAjIEZpbmQgdGhlIGxhc3QgY29tbWl0IG9uIHRoZSBnaXZl
biBicmFuY2ggc28gd2UgY2FuIGRpZmYgdGhlIGNoYW5nZWxvZ3MKLSAgICAgICAgICAgIHByZXZp
b3VzX2lkID0gc2VsZi5nZXQoYnJhbmNoPWJyYW5jaCwgcmV2aXNpb249aW50KGlkKSAtIDEpLmdl
dCgKLSAgICAgICAgICAgICAgICAnRDptdWx0aXN0YXR1cycsIHt9KS5nZXQoJ0Q6cmVzcG9uc2Un
LCB7fSkuZ2V0KCdEOnByb3BzdGF0JywgW3t9XSlbMF0uZ2V0KCdEOnByb3AnLCB7fSkuZ2V0KCds
cDE6dmVyc2lvbi1uYW1lJywgTm9uZSkKLSAgICAgICAgICAgIGJyYW5jaF91cmwgPSBmIntzZWxm
LnVybH17YnJhbmNoIGlmIGJyYW5jaCA9PSBzZWxmLkRFRkFVTFRfQlJBTkNIIGVsc2UgJ2JyYW5j
aGVzLycgKyBicmFuY2h9IgotCi0gICAgICAgICAgICBjaGFuZ2Vsb2dzID0ge30KLSAgICAgICAg
ICAgIHJlcXVlc3RfdGhyZWFkcyA9IFtdCi0KLSAgICAgICAgICAgICMgQ29tcGFyZSBjaGFuZ2Vs
b2cgZnJvbSBwcmV2aW91cyBjb21taXQgdG8gdGhlIGNoYW5nZWxvZyBmcm9tIHRoaXMgY29tbWl0
Ci0gICAgICAgICAgICBkZWYgZGlmZl9jaGFuZ2Vsb2dzKGNoYW5nZWxvZ19saXN0KToKLSAgICAg
ICAgICAgICAgICBmb3IgY2hhbmdlbG9nIGluIGNoYW5nZWxvZ19saXN0OgotICAgICAgICAgICAg
ICAgICAgICBjdXJyZW50X3VybCA9IGYne2JyYW5jaF91cmx9L3tjaGFuZ2Vsb2d9Lz9wPXtpZH0n
Ci0gICAgICAgICAgICAgICAgICAgIHByZXZpb3VzX3VybCA9IGYne2JyYW5jaF91cmx9L3tjaGFu
Z2Vsb2d9Lz9wPXtwcmV2aW91c19pZH0nIGlmIHByZXZpb3VzX2lkIGVsc2UgTm9uZQotCi0gICAg
ICAgICAgICAgICAgICAgIGN1cnJlbnRfcmVzcG9uc2UgPSBzZWxmLnJlcXVlc3QoY3VycmVudF91
cmwpCi0gICAgICAgICAgICAgICAgICAgIGlmIGN1cnJlbnRfcmVzcG9uc2Uuc3RhdHVzX2NvZGUg
IT0gMjAwOgotICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAg
ICAgICAgcHJldmlvdXNfcmVzcG9uc2UgPSBzZWxmLnJlcXVlc3QocHJldmlvdXNfdXJsKSBpZiBw
cmV2aW91c191cmwgZWxzZSBOb25lCi0gICAgICAgICAgICAgICAgICAgIGlmIHByZXZpb3VzX3Jl
c3BvbnNlIGFuZCBwcmV2aW91c19yZXNwb25zZS5zdGF0dXNfY29kZSAhPSAyMDA6Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgICAgICAgICAgICAgIHByZXZpb3Vz
X3Jlc3BvbnNlX2xlbmd0aCA9IDAKLSAgICAgICAgICAgICAgICAgICAgaWYgcHJldmlvdXNfcmVz
cG9uc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBwcmV2aW91c19yZXNwb25zZV9sZW5ndGgg
PSBsZW4ocHJldmlvdXNfcmVzcG9uc2UudGV4dCkKLSAgICAgICAgICAgICAgICAgICAgaWYgbGVu
KGN1cnJlbnRfcmVzcG9uc2UudGV4dCkgPT0gcHJldmlvdXNfcmVzcG9uc2VfbGVuZ3RoOgotICAg
ICAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICAgICAgaWYgbm90
IHByZXZpb3VzX3Jlc3BvbnNlX2xlbmd0aCBvciBsZW4oY3VycmVudF9yZXNwb25zZS50ZXh0KSA8
IHByZXZpb3VzX3Jlc3BvbnNlX2xlbmd0aDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5n
ZWxvZ3NbY2hhbmdlbG9nXSA9IGN1cnJlbnRfcmVzcG9uc2UudGV4dAotICAgICAgICAgICAgICAg
ICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlbG9nc1tjaGFuZ2Vsb2dd
ID0gY3VycmVudF9yZXNwb25zZS50ZXh0WzA6LWxlbihwcmV2aW91c19yZXNwb25zZS50ZXh0KV0K
LQotICAgICAgICAgICAgIyBCZWNhdXNlIHdlJ3JlIG1vc3RseSBibG9ja2VkIG9uIG5ldHdvcmsg
SS9PLCB0aHJlYWRzIGNhbiBzcGVlZCB0aGlzIHVwIH40eAotICAgICAgICAgICAgc2hhcmRzID0g
W1tdIGZvciBfIGluIHJhbmdlKHNlbGYuQ0hBTkdFX0xPR19USFJFQURTKV0KLSAgICAgICAgICAg
IGluZGV4ID0gMAotICAgICAgICAgICAgZm9yIGNoYW5nZWxvZyBpbiBzZWxmLkNIQU5HRUxPR1M6
Ci0gICAgICAgICAgICAgICAgc2hhcmRzW2luZGV4XS5hcHBlbmQoY2hhbmdlbG9nKQotICAgICAg
ICAgICAgICAgIGluZGV4ICs9IDEKLSAgICAgICAgICAgICAgICBpZiBpbmRleCA+PSBsZW4oc2hh
cmRzKToKLSAgICAgICAgICAgICAgICAgICAgaW5kZXggPSAwCi0gICAgICAgICAgICBmb3Igc2hh
cmQgaW4gc2hhcmRzOgotICAgICAgICAgICAgICAgIHJlcXVlc3RfdGhyZWFkcy5hcHBlbmQodGhy
ZWFkaW5nLlRocmVhZCgKLSAgICAgICAgICAgICAgICAgICAgdGFyZ2V0PWRpZmZfY2hhbmdlbG9n
cywKLSAgICAgICAgICAgICAgICAgICAga3dhcmdzPWRpY3QoY2hhbmdlbG9nX2xpc3Q9c2hhcmQp
LAotICAgICAgICAgICAgICAgICkpCi0gICAgICAgICAgICAgICAgcmVxdWVzdF90aHJlYWRzWy0x
XS5zdGFydCgpCi0gICAgICAgICAgICBmb3IgdGhyZWFkIGluIHJlcXVlc3RfdGhyZWFkczoKLSAg
ICAgICAgICAgICAgICB0aHJlYWQuam9pbigpCi0KLSAgICAgICAgICAgIGNvbW1pdF9tZXNzYWdl
ID0gW10KLSAgICAgICAgICAgIGZvciBjaGFuZ2Vsb2cgaW4gc2VsZi5DSEFOR0VMT0dTOgotICAg
ICAgICAgICAgICAgIHBhcnRpYWxfbWVzc2FnZSA9IGNoYW5nZWxvZ3MuZ2V0KGNoYW5nZWxvZywg
Tm9uZSkKLSAgICAgICAgICAgICAgICBpZiBub3QgcGFydGlhbF9tZXNzYWdlOgotICAgICAgICAg
ICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgIGxpbmVzX2luX21lc3NhZ2UgPSBw
YXJ0aWFsX21lc3NhZ2Uuc3BsaXQoJ1xuJykKLQotICAgICAgICAgICAgICAgICMgVGhlIGZpcnN0
IGxpbmUgb2YgdGhlIGNvbW1pdCBtZXNzYWdlIG1pZ2h0IGNvbnRhaW4gdGhlIHJlYWwgY29tbWl0
dGVyLCBpbiB0aGUgY2FzZQotICAgICAgICAgICAgICAgICMgY29tbWl0IHF1ZXVlIGNvbW1pdHRl
ZCBhIGNoYW5nZSBvbiB0aGUgYmVoYWxmIG9mIHNvbWVvbmUKLSAgICAgICAgICAgICAgICBzdGFy
dF9vZl9tZXNzYWdlX3NoYXJkID0gMAotICAgICAgICAgICAgICAgIG1hdGNoID0gc2VsZi5GSVJT
VF9MSU5FX1JFR0VYLm1hdGNoKGxpbmVzX2luX21lc3NhZ2VbMF0pCi0gICAgICAgICAgICAgICAg
aWYgbWF0Y2g6Ci0gICAgICAgICAgICAgICAgICAgIGlmIG1hdGNoLmdyb3VwKCdlbWFpbCcpICE9
IHJlc3VsdC5jb21taXR0ZXI6Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuY29tbWl0
dGVyID0gbWF0Y2guZ3JvdXAoJ2VtYWlsJykKLSAgICAgICAgICAgICAgICAgICAgc3RhcnRfb2Zf
bWVzc2FnZV9zaGFyZCArPSAxCi0gICAgICAgICAgICAgICAgICAgIHdoaWxlIG5vdCBsaW5lc19p
bl9tZXNzYWdlW3N0YXJ0X29mX21lc3NhZ2Vfc2hhcmRdOgotICAgICAgICAgICAgICAgICAgICAg
ICAgc3RhcnRfb2ZfbWVzc2FnZV9zaGFyZCArPSAxCi0KLSAgICAgICAgICAgICAgICAjIFdlYktp
dCBjb21taXQgbWVzc2FnZXMgYXJlIG9mdGVuIHNwbGl0IGFjcm9zcyBtdWx0aXBsZSBjaGFuZ2Vs
b2dzIHdpdGggdGhlIGZpcnN0IGZldyBsaW5lcyBkdXBsaWNhdGVkLgotICAgICAgICAgICAgICAg
IHN0YXJ0X29mX2Z1bGxfbWVzc2FnZSA9IDAKLSAgICAgICAgICAgICAgICB3aGlsZSBzdGFydF9v
Zl9tZXNzYWdlX3NoYXJkIDwgbGVuKGxpbmVzX2luX21lc3NhZ2UpIGFuZCBzdGFydF9vZl9mdWxs
X21lc3NhZ2UgPCBsZW4oY29tbWl0X21lc3NhZ2UpOgotICAgICAgICAgICAgICAgICAgICBpZiBs
aW5lc19pbl9tZXNzYWdlW3N0YXJ0X29mX21lc3NhZ2Vfc2hhcmRdLnN0YXJ0c3dpdGgoJyAnICog
OCk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBsaW5lID0gbGluZXNfaW5fbWVzc2FnZVtzdGFy
dF9vZl9tZXNzYWdlX3NoYXJkXVs4Ol0KLSAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lc19pbl9tZXNzYWdlW3N0YXJ0X29mX21lc3Nh
Z2Vfc2hhcmRdCi0gICAgICAgICAgICAgICAgICAgIGlmIGxpbmUgIT0gY29tbWl0X21lc3NhZ2Vb
c3RhcnRfb2ZfZnVsbF9tZXNzYWdlXToKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0g
ICAgICAgICAgICAgICAgICAgIHN0YXJ0X29mX21lc3NhZ2Vfc2hhcmQgKz0gMQotICAgICAgICAg
ICAgICAgICAgICBzdGFydF9vZl9mdWxsX21lc3NhZ2UgKz0gMQotCi0gICAgICAgICAgICAgICAg
Zm9yIGxpbmUgaW4gbGluZXNfaW5fbWVzc2FnZVtzdGFydF9vZl9tZXNzYWdlX3NoYXJkOl06Ci0g
ICAgICAgICAgICAgICAgICAgIGNvbW1pdF9tZXNzYWdlLmFwcGVuZChsaW5lWzg6XSBpZiBsaW5l
LnN0YXJ0c3dpdGgoJyAnICogOCkgZWxzZSBsaW5lKQotCi0gICAgICAgICAgICByZXN1bHQubWVz
c2FnZSA9IHN0cignXG4nLmpvaW4oY29tbWl0X21lc3NhZ2UpKSBpZiBjb21taXRfbWVzc2FnZSBl
bHNlIE5vbmUKLQotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAotCi0gICAgZGVmIHVybF9mb3Jf
Y29tbWl0KHNlbGYsIGNvbW1pdCk6Ci0gICAgICAgIHJldHVybiBmJ2h0dHBzOi8vdHJhYy53ZWJr
aXQub3JnL2NoYW5nZXNldC97Y29tbWl0fS97c2VsZi5rZXl9JwpJbmRleDogVG9vbHMvcmVzdWx0
c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvcmVwb3NpdG9yeV91bml0dGVzdC5weQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9yZXBvc2l0b3J5X3VuaXR0
ZXN0LnB5CShyZXZpc2lvbiAyNjU1MzEpCisrKyBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJw
eS9tb2RlbC9yZXBvc2l0b3J5X3VuaXR0ZXN0LnB5CShub25leGlzdGVudCkKQEAgLTEsMTAzICsw
LDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQotIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotIyBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SCi0jIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0jIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksCi0jIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLWltcG9ydCBqc29u
Ci0KLWZyb20gZmFrZXJlZGlzIGltcG9ydCBGYWtlU3RyaWN0UmVkaXMKLWZyb20gcmVkaXMgaW1w
b3J0IFN0cmljdFJlZGlzCi1mcm9tIHJlc3VsdHNkYnB5LmNvbnRyb2xsZXIuY29tbWl0IGltcG9y
dCBDb21taXQKLWZyb20gcmVzdWx0c2RicHkubW9kZWwubW9ja19yZXBvc2l0b3J5IGltcG9ydCBN
b2NrU3Rhc2hSZXBvc2l0b3J5LCBNb2NrU1ZOUmVwb3NpdG9yeQotZnJvbSByZXN1bHRzZGJweS5t
b2RlbC5yZXBvc2l0b3J5IGltcG9ydCBTQ01FeGNlcHRpb24KLWZyb20gcmVzdWx0c2RicHkubW9k
ZWwud2FpdF9mb3JfZG9ja2VyX3Rlc3RfY2FzZSBpbXBvcnQgV2FpdEZvckRvY2tlclRlc3RDYXNl
Ci0KLQotY2xhc3MgUmVwb3NpdG9yeVRlc3QoV2FpdEZvckRvY2tlclRlc3RDYXNlKToKLQotICAg
IEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtl
U3RyaWN0UmVkaXMpCi0gICAgZGVmIHRlc3Rfc3ZuKHNlbGYsIHJlZGlzPVN0cmljdFJlZGlzKToK
LSAgICAgICAgc3ZuX3JlcG8gPSBNb2NrU1ZOUmVwb3NpdG9yeS53ZWJraXQocmVkaXM9cmVkaXMo
KSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCd3ZWJraXQnLCBzdm5fcmVwby5rZXkpCi0gICAg
ICAgIGNvbW1pdCA9IHN2bl9yZXBvLmNvbW1pdF9mb3JfaWQoMjM2NTQ0LCBicmFuY2g9J3RydW5r
JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21taXQudXVpZCwgMTUzODA1MjQwODAwKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1pdC5tZXNzYWdlLCAnQ2hhbmdlIDEgZGVzY3Jp
cHRpb24uXG4nKQotCi0gICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tl
cihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcykKLSAgICBkZWYgdGVzdF9icmFuY2hfc3ZuKHNl
bGYsIHJlZGlzPVN0cmljdFJlZGlzKToKLSAgICAgICAgc3ZuX3JlcG8gPSBNb2NrU1ZOUmVwb3Np
dG9yeS53ZWJraXQocmVkaXM9cmVkaXMoKSkKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNl
cyhTQ01FeGNlcHRpb24pOgotICAgICAgICAgICAgc3ZuX3JlcG8uY29tbWl0X2Zvcl9pZCgyMzYz
MzUsIGJyYW5jaD0ndHJ1bmsnKQotICAgICAgICBjb21taXQgPSBzdm5fcmVwby5jb21taXRfZm9y
X2lkKDIzNjMzNSwgYnJhbmNoPSdzYWZhcmktNjA2LWJyYW5jaCcpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoY29tbWl0LnV1aWQsIDE1MzgwMjk0ODAwMCkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChjb21taXQubWVzc2FnZSwgJ0ludGVncmF0aW9uIDEuXG4nKQotCi0gICAgQFdhaXRGb3JE
b2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRp
cykKLSAgICBkZWYgdGVzdF9iYXNpY19zdm4oc2VsZiwgcmVkaXM9U3RyaWN0UmVkaXMpOgotICAg
ICAgICBzdm5fcmVwbyA9IE1vY2tTVk5SZXBvc2l0b3J5KHVybD0nc3ZuLndlYmtpdC5vcmcvcmVw
b3NpdG9yeS93ZWJraXQvJywgbmFtZT0nd2Via2l0JywgcmVkaXM9cmVkaXMoKSkKLSAgICAgICAg
c3ZuX3JlcG8uYWRkX2NvbW1pdChDb21taXQoCi0gICAgICAgICAgICByZXBvc2l0b3J5X2lkPXN2
bl9yZXBvLm5hbWUsIGJyYW5jaD0ndHJ1bmsnLCBpZD0yMzY1NDQsCi0gICAgICAgICAgICB0aW1l
c3RhbXA9MTUzODA1MjQwOCwgb3JkZXI9MCwKLSAgICAgICAgICAgIGNvbW1pdHRlcj0ncGVyc29u
MUB3ZWJraXQub3JnJywKLSAgICAgICAgICAgIG1lc3NhZ2U9J0NoYW5nZSAxIGRlc2NyaXB0aW9u
LicsCi0gICAgICAgICkpCi0gICAgICAgIGNvbW1pdCA9IHN2bl9yZXBvLmNvbW1pdF9mb3JfaWQo
MjM2NTQ0LCBicmFuY2g9J3RydW5rJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21taXQu
dXVpZCwgMTUzODA1MjQwODAwKQotICAgICAgICBzZWxmLmFzc2VydElzTm9uZShjb21taXQubWVz
c2FnZSwgTm9uZSkKLQotICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2Nr
ZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMpCi0gICAgZGVmIHRlc3Rfc3Rhc2goc2VsZiwg
cmVkaXM9U3RyaWN0UmVkaXMpOgotICAgICAgICBnaXRfcmVwbyA9IE1vY2tTdGFzaFJlcG9zaXRv
cnkuc2FmYXJpKHJlZGlzPXJlZGlzKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3NhZmFy
aScsIGdpdF9yZXBvLmtleSkKLSAgICAgICAgY29tbWl0ID0gZ2l0X3JlcG8uY29tbWl0X2Zvcl9p
ZCgnYmI2YmRhNWY0NGRkMjRkJywgYnJhbmNoPSdtYXN0ZXInKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGNvbW1pdC51dWlkLCAxNTM3ODEwMjgxMDApCi0KLSAgICBAV2FpdEZvckRvY2tlclRl
c3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzKQotICAg
IGRlZiB0ZXN0X2NvbGxpZGluZ190aW1lc3RhbXBzX3N0YXNoKHNlbGYsIHJlZGlzPVN0cmljdFJl
ZGlzKToKLSAgICAgICAgZ2l0X3JlcG8gPSBNb2NrU3Rhc2hSZXBvc2l0b3J5LnNhZmFyaShyZWRp
cz1yZWRpcygpKQotICAgICAgICBjb21taXQxID0gZ2l0X3JlcG8uY29tbWl0X2Zvcl9pZCgnZTY0
ODEwYTQwJywgYnJhbmNoPSdtYXN0ZXInKQotICAgICAgICBjb21taXQyID0gZ2l0X3JlcG8uY29t
bWl0X2Zvcl9pZCgnN2JlNDA4NDI1JywgYnJhbmNoPSdtYXN0ZXInKQotCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoY29tbWl0MS50aW1lc3RhbXAsIGNvbW1pdDIudGltZXN0YW1wKQotICAgICAg
ICBzZWxmLmFzc2VydE5vdEVxdWFsKGNvbW1pdDEudXVpZCwgY29tbWl0Mi51dWlkKQotICAgICAg
ICBzZWxmLmFzc2VydFRydWUoY29tbWl0MSA8IGNvbW1pdDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoY29tbWl0MS5vcmRlciwgMCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21taXQy
Lm9yZGVyLCAxKQotCi0gICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tl
cihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcykKLSAgICBkZWYgdGVzdF9icmFuY2hfc3Rhc2go
c2VsZiwgcmVkaXM9U3RyaWN0UmVkaXMpOgotICAgICAgICBnaXRfcmVwbyA9IE1vY2tTdGFzaFJl
cG9zaXRvcnkuc2FmYXJpKHJlZGlzPXJlZGlzKCkpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRS
YWlzZXMoU0NNRXhjZXB0aW9uKToKLSAgICAgICAgICAgIGdpdF9yZXBvLmNvbW1pdF9mb3JfaWQo
J2Q4NTIyMmQ5NDA3ZmQnLCBicmFuY2g9J21hc3RlcicpCi0gICAgICAgIGNvbW1pdCA9IGdpdF9y
ZXBvLmNvbW1pdF9mb3JfaWQoJ2Q4NTIyMmQ5NDA3ZmQnLCBicmFuY2g9J3NhZmFyaS02MDYtYnJh
bmNoJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21taXQudXVpZCwgMTUzNzU2MzM4MzAw
KQotCi0gICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3Jl
ZGlzPUZha2VTdHJpY3RSZWRpcykKLSAgICBkZWYgdGVzdF9zdGFzaF9hbHJlYWR5X2NhY2hlZChz
ZWxmLCByZWRpcz1TdHJpY3RSZWRpcyk6Ci0gICAgICAgIHJlZGlzX2luc3RhbmNlID0gcmVkaXMo
KQotICAgICAgICBnaXRfcmVwbyA9IE1vY2tTdGFzaFJlcG9zaXRvcnkuc2FmYXJpKHJlZGlzPXJl
ZGlzX2luc3RhbmNlKQotICAgICAgICByZWRpc19pbnN0YW5jZS5zZXQoCi0gICAgICAgICAgICAn
cmVwb3NpdG9yeTonICsgZ2l0X3JlcG8udXJsICsgJy9jb21taXRzP3NpbmNlPTMzNjYxMGE0MGMz
ZmVjYjcyODg3MWUxMmNhMzE0ODJjYTcxNWIzODMmdW50aWw9cmVmcyUyRmhlYWRzJTJGbWFzdGVy
JmxpbWl0PTEnLAotICAgICAgICAgICAganNvbi5kdW1wcyhkaWN0KHZhbHVlcz1bXSwgc2l6ZT0w
LCBpc0xhc3RQYWdlPVRydWUpKSwKLSAgICAgICAgKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoJ3NhZmFyaScsIGdpdF9yZXBvLmtleSkKLSAgICAgICAgY29tbWl0ID0gZ2l0X3JlcG8uY29t
bWl0X2Zvcl9pZCgnMzM2NjEwYTQnLCBicmFuY2g9J21hc3RlcicpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoY29tbWl0LnV1aWQsIDE1Mzc1NjYzODYwMCkKSW5kZXg6IFRvb2xzL3Jlc3VsdHNk
YnB5L3Jlc3VsdHNkYnB5L21vZGVsL3N1aXRlX2NvbnRleHQucHkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvc3VpdGVfY29udGV4dC5weQkocmV2aXNp
b24gMjY1NTMxKQorKysgVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvc3VpdGVf
Y29udGV4dC5weQkobm9uZXhpc3RlbnQpCkBAIC0xLDE2OCArMCwwIEBACi0jIENvcHlyaWdodCAo
QykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJB
UyBJUyIgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotIyBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUgotIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotIyBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1pbXBvcnQgY2FsZW5kYXIKLWltcG9ydCBqc29uCi1p
bXBvcnQgdGltZQotCi1mcm9tIGNhc3NhbmRyYS5jcWxlbmdpbmUgaW1wb3J0IGNvbHVtbnMKLWZy
b20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1lCi1mcm9tIHJlc3VsdHNkYnB5LmNvbnRyb2xsZXIu
Y29tbWl0IGltcG9ydCBDb21taXQKLWZyb20gcmVzdWx0c2RicHkubW9kZWwuY29tbWl0X2NvbnRl
eHQgaW1wb3J0IENvbW1pdENvbnRleHQKLWZyb20gcmVzdWx0c2RicHkubW9kZWwuY29uZmlndXJh
dGlvbl9jb250ZXh0IGltcG9ydCBDbHVzdGVyZWRCeUNvbmZpZ3VyYXRpb24KLWZyb20gcmVzdWx0
c2RicHkubW9kZWwudGVzdF9jb250ZXh0IGltcG9ydCBFeHBlY3RhdGlvbnMKLWZyb20gcmVzdWx0
c2RicHkubW9kZWwudXBsb2FkX2NvbnRleHQgaW1wb3J0IFVwbG9hZENhbGxiYWNrQ29udGV4dAot
Ci0KLWNsYXNzIFN1aXRlQ29udGV4dChVcGxvYWRDYWxsYmFja0NvbnRleHQpOgotICAgIERFRkFV
TFRfTElNSVQgPSAxMDAKLQotICAgIGNsYXNzIFN1aXRlUmVzdWx0c0Jhc2UoQ2x1c3RlcmVkQnlD
b25maWd1cmF0aW9uKToKLSAgICAgICAgc3VpdGUgPSBjb2x1bW5zLlRleHQocGFydGl0aW9uX2tl
eT1UcnVlLCByZXF1aXJlZD1UcnVlKQotICAgICAgICBicmFuY2ggPSBjb2x1bW5zLlRleHQocGFy
dGl0aW9uX2tleT1UcnVlLCByZXF1aXJlZD1UcnVlKQotICAgICAgICBkZXRhaWxzID0gY29sdW1u
cy5UZXh0KHJlcXVpcmVkPUZhbHNlKQotICAgICAgICBzdGF0cyA9IGNvbHVtbnMuVGV4dChyZXF1
aXJlZD1GYWxzZSkKLQotICAgICAgICBkZWYgdW5wYWNrKHNlbGYpOgotICAgICAgICAgICAgcmV0
dXJuIGRpY3QoCi0gICAgICAgICAgICAgICAgdXVpZD1zZWxmLnV1aWQsCi0gICAgICAgICAgICAg
ICAgc3RhcnRfdGltZT1jYWxlbmRhci50aW1lZ20oc2VsZi5zdGFydF90aW1lLnRpbWV0dXBsZSgp
KSwKLSAgICAgICAgICAgICAgICBkZXRhaWxzPWpzb24ubG9hZHMoc2VsZi5kZXRhaWxzKSBpZiBz
ZWxmLmRldGFpbHMgZWxzZSB7fSwKLSAgICAgICAgICAgICAgICBzdGF0cz1qc29uLmxvYWRzKHNl
bGYuc3RhdHMpIGlmIHNlbGYuc3RhdHMgZWxzZSB7fSwKLSAgICAgICAgICAgICkKLQotICAgIGNs
YXNzIFN1aXRlUmVzdWx0c0J5Q29tbWl0KFN1aXRlUmVzdWx0c0Jhc2UpOgotICAgICAgICBfX3Rh
YmxlX25hbWVfXyA9ICdzdWl0ZV9yZXN1bHRzX2J5X2NvbW1pdCcKLSAgICAgICAgdXVpZCA9IGNv
bHVtbnMuQmlnSW50KHByaW1hcnlfa2V5PVRydWUsIHJlcXVpcmVkPVRydWUsIGNsdXN0ZXJpbmdf
b3JkZXI9J0RFU0MnKQotICAgICAgICBzZGsgPSBjb2x1bW5zLlRleHQocHJpbWFyeV9rZXk9VHJ1
ZSwgcmVxdWlyZWQ9VHJ1ZSkKLSAgICAgICAgc3RhcnRfdGltZSA9IGNvbHVtbnMuRGF0ZVRpbWUo
cHJpbWFyeV9rZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkKLQotICAgIGNsYXNzIFN1aXRlUmVzdWx0
c0J5U3RhcnRUaW1lKFN1aXRlUmVzdWx0c0Jhc2UpOgotICAgICAgICBfX3RhYmxlX25hbWVfXyA9
ICdzdWl0ZV9yZXN1bHRzX2J5X3N0YXJ0X3RpbWUnCi0gICAgICAgIHN0YXJ0X3RpbWUgPSBjb2x1
bW5zLkRhdGVUaW1lKHByaW1hcnlfa2V5PVRydWUsIHJlcXVpcmVkPVRydWUsIGNsdXN0ZXJpbmdf
b3JkZXI9J0RFU0MnKQotICAgICAgICBzZGsgPSBjb2x1bW5zLlRleHQocHJpbWFyeV9rZXk9VHJ1
ZSwgcmVxdWlyZWQ9VHJ1ZSkKLSAgICAgICAgdXVpZCA9IGNvbHVtbnMuQmlnSW50KHByaW1hcnlf
a2V5PVRydWUsIHJlcXVpcmVkPVRydWUpCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3Ms
ICoqa3dhcmdzKToKLSAgICAgICAgc3VwZXIoU3VpdGVDb250ZXh0LCBzZWxmKS5fX2luaXRfXygn
c3VpdGUtcmVzdWx0cycsICphcmdzLCAqKmt3YXJncykKLQotICAgICAgICB3aXRoIHNlbGY6Ci0g
ICAgICAgICAgICBzZWxmLmNhc3NhbmRyYS5jcmVhdGVfdGFibGUoc2VsZi5TdWl0ZVJlc3VsdHNC
eUNvbW1pdCkKLSAgICAgICAgICAgIHNlbGYuY2Fzc2FuZHJhLmNyZWF0ZV90YWJsZShzZWxmLlN1
aXRlUmVzdWx0c0J5U3RhcnRUaW1lKQotCi0gICAgZGVmIHJlZ2lzdGVyKHNlbGYsIGNvbmZpZ3Vy
YXRpb24sIGNvbW1pdHMsIHN1aXRlLCB0ZXN0X3Jlc3VsdHMsIHRpbWVzdGFtcD1Ob25lKToKLSAg
ICAgICAgdGltZXN0YW1wID0gdGltZXN0YW1wIG9yIHRpbWUudGltZSgpCi0gICAgICAgIGlmIG5v
dCBpc2luc3RhbmNlKHRpbWVzdGFtcCwgZGF0ZXRpbWUpOgotICAgICAgICAgICAgdGltZXN0YW1w
ID0gZGF0ZXRpbWUudXRjZnJvbXRpbWVzdGFtcChpbnQodGltZXN0YW1wKSkKLQotICAgICAgICB0
cnk6Ci0gICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShzdWl0ZSwgc3RyKToKLSAgICAgICAg
ICAgICAgICByYWlzZSBUeXBlRXJyb3IoZidFeHBlY3RlZCB0eXBlIHtzdHJ9LCBnb3Qge3R5cGUo
c3VpdGUpfScpCi0KLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UodGltZXN0YW1wLCBkYXRldGlt
ZSk6Ci0gICAgICAgICAgICAgICAgdGltZXN0YW1wID0gY2FsZW5kYXIudGltZWdtKHRpbWVzdGFt
cC50aW1ldHVwbGUoKSkKLQotICAgICAgICAgICAgcnVuX3N0YXRzID0gdGVzdF9yZXN1bHRzLmdl
dCgncnVuX3N0YXRzJywge30pCi0gICAgICAgICAgICBmYWlsdXJlX3RyaWdnZXJfcG9pbnRzID0g
ZGljdCgKLSAgICAgICAgICAgICAgICBmYWlsZWQ9RXhwZWN0YXRpb25zLlNUUklOR19UT19TVEFU
RV9JRFtFeHBlY3RhdGlvbnMuRVJST1JdLAotICAgICAgICAgICAgICAgIHRpbWVkb3V0PUV4cGVj
dGF0aW9ucy5TVFJJTkdfVE9fU1RBVEVfSURbRXhwZWN0YXRpb25zLlRJTUVPVVRdLAotICAgICAg
ICAgICAgICAgIGNyYXNoZWQ9RXhwZWN0YXRpb25zLlNUUklOR19UT19TVEFURV9JRFtFeHBlY3Rh
dGlvbnMuQ1JBU0hdLAotICAgICAgICAgICAgKQotICAgICAgICAgICAgcnVuX3N0YXRzWyd0ZXN0
c19ydW4nXSA9IDAKLSAgICAgICAgICAgIGZvciBrZXkgaW4gZmFpbHVyZV90cmlnZ2VyX3BvaW50
cy5rZXlzKCk6Ci0gICAgICAgICAgICAgICAgcnVuX3N0YXRzW2YndGVzdHNfe2tleX0nXSA9IDAK
LSAgICAgICAgICAgICAgICBydW5fc3RhdHNbZid0ZXN0c191bmV4cGVjdGVkX3trZXl9J10gPSAw
Ci0KLSAgICAgICAgICAgIGRlZiBjYWxsYmFjayh0ZXN0LCByZXN1bHQpOgotICAgICAgICAgICAg
ICAgIHJ1bl9zdGF0c1sndGVzdHNfcnVuJ10gKz0gMQotICAgICAgICAgICAgICAgIGFjdHVhbF9y
ZXN1bHRzID0gRXhwZWN0YXRpb25zLnN0cmluZ190b19zdGF0ZV9pZHMocmVzdWx0LmdldCgnYWN0
dWFsJywgJycpKQotICAgICAgICAgICAgICAgIGV4cGVjdGVkX3Jlc3VsdHMgPSBzZXQoRXhwZWN0
YXRpb25zLnN0cmluZ190b19zdGF0ZV9pZHMocmVzdWx0LmdldCgnZXhwZWN0ZWQnLCAnJykpKQot
Ci0gICAgICAgICAgICAgICAgIyBGQUlMIGlzIGEgc3BlY2lhbCBjYXNlLCB3ZSB3YW50IHRvIHRy
ZWF0IHRlc3RzIHdpdGggVEVYVCwgQVVESU8gYW5kIElNQUdFIGRpZmZzIGFzIGZhaWx1cmVzCi0g
ICAgICAgICAgICAgICAgaWYgRXhwZWN0YXRpb25zLlNUUklOR19UT19TVEFURV9JRFtFeHBlY3Rh
dGlvbnMuRkFJTF0gaW4gZXhwZWN0ZWRfcmVzdWx0czoKLSAgICAgICAgICAgICAgICAgICAgZXhw
ZWN0ZWRfcmVzdWx0cy5hZGQoRXhwZWN0YXRpb25zLlNUUklOR19UT19TVEFURV9JRFtFeHBlY3Rh
dGlvbnMuVEVYVF0pCi0gICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX3Jlc3VsdHMuYWRkKEV4
cGVjdGF0aW9ucy5TVFJJTkdfVE9fU1RBVEVfSURbRXhwZWN0YXRpb25zLkFVRElPXSkKLSAgICAg
ICAgICAgICAgICAgICAgZXhwZWN0ZWRfcmVzdWx0cy5hZGQoRXhwZWN0YXRpb25zLlNUUklOR19U
T19TVEFURV9JRFtFeHBlY3RhdGlvbnMuSU1BR0VdKQotCi0gICAgICAgICAgICAgICAgd29yc3Rf
cmVzdWx0ID0gbWluKGFjdHVhbF9yZXN1bHRzKQotICAgICAgICAgICAgICAgIHVuZXhwZWN0ZWRf
cmVzdWx0cyA9IHNldChhY3R1YWxfcmVzdWx0cykgLSBleHBlY3RlZF9yZXN1bHRzCi0gICAgICAg
ICAgICAgICAgd29yc3RfdW5leHBlY3RlZF9yZXN1bHQgPSBtaW4odW5leHBlY3RlZF9yZXN1bHRz
IG9yIFtFeHBlY3RhdGlvbnMuU1RSSU5HX1RPX1NUQVRFX0lEW0V4cGVjdGF0aW9ucy5QQVNTXV0p
Ci0KLSAgICAgICAgICAgICAgICBmb3Iga2V5LCBwb2ludCBpbiBmYWlsdXJlX3RyaWdnZXJfcG9p
bnRzLml0ZW1zKCk6Ci0gICAgICAgICAgICAgICAgICAgIGlmIHdvcnN0X3Jlc3VsdCA8PSBwb2lu
dDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJ1bl9zdGF0c1tmJ3Rlc3RzX3trZXl9J10gKz0g
MQotICAgICAgICAgICAgICAgICAgICBpZiB3b3JzdF91bmV4cGVjdGVkX3Jlc3VsdCA8PSBwb2lu
dDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJ1bl9zdGF0c1tmJ3Rlc3RzX3VuZXhwZWN0ZWRf
e2tleX0nXSArPSAxCi0KLSAgICAgICAgICAgIEV4cGVjdGF0aW9ucy5pdGVyYXRlX3Rocm91Z2hf
bmVzdGVkX3Jlc3VsdHModGVzdF9yZXN1bHRzLmdldCgncmVzdWx0cycpLCBjYWxsYmFjaykKLQot
ICAgICAgICAgICAgdXVpZCA9IHNlbGYuY29tbWl0X2NvbnRleHQudXVpZF9mb3JfY29tbWl0cyhj
b21taXRzKQotICAgICAgICAgICAgdHRsID0gaW50KCh1dWlkIC8vIENvbW1pdC5USU1FU1RBTVBf
VE9fVVVJRF9NVUxUSVBMSUVSKSArIHNlbGYudHRsX3NlY29uZHMgLSB0aW1lLnRpbWUoKSkgaWYg
c2VsZi50dGxfc2Vjb25kcyBlbHNlIE5vbmUKLQotICAgICAgICAgICAgd2l0aCBzZWxmLCBzZWxm
LmNhc3NhbmRyYS5iYXRjaF9xdWVyeV9jb250ZXh0KCk6Ci0gICAgICAgICAgICAgICAgZm9yIGJy
YW5jaCBpbiBzZWxmLmNvbW1pdF9jb250ZXh0LmJyYW5jaF9rZXlzX2Zvcl9jb21taXRzKGNvbW1p
dHMpOgotICAgICAgICAgICAgICAgICAgICBmb3IgdGFibGUgaW4gW3NlbGYuU3VpdGVSZXN1bHRz
QnlDb21taXQsIHNlbGYuU3VpdGVSZXN1bHRzQnlTdGFydFRpbWVdOgotICAgICAgICAgICAgICAg
ICAgICAgICAgc2VsZi5jb25maWd1cmF0aW9uX2NvbnRleHQuaW5zZXJ0X3Jvd193aXRoX2NvbmZp
Z3VyYXRpb24oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGUuX190YWJsZV9uYW1l
X18sIGNvbmZpZ3VyYXRpb249Y29uZmlndXJhdGlvbiwgc3VpdGU9c3VpdGUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYnJhbmNoPWJyYW5jaCwgdXVpZD11dWlkLCB0dGw9dHRsLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNkaz1jb25maWd1cmF0aW9uLnNkayBvciAnPycsIHN0
YXJ0X3RpbWU9dGltZXN0YW1wLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbHM9
anNvbi5kdW1wcyh0ZXN0X3Jlc3VsdHMuZ2V0KCdkZXRhaWxzJywge30pKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGF0cz1qc29uLmR1bXBzKHJ1bl9zdGF0cyksCi0gICAgICAgICAg
ICAgICAgICAgICAgICApCi0gICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKLSAgICAgICAg
ICAgIHJldHVybiBzZWxmLnBhcnRpYWxfc3RhdHVzKGUpCi0gICAgICAgIHJldHVybiBzZWxmLnBh
cnRpYWxfc3RhdHVzKCkKLQotICAgIGRlZiBfZmluZF9yZXN1bHRzKAotICAgICAgICAgICAgc2Vs
ZiwgdGFibGUsIGNvbmZpZ3VyYXRpb25zLCBzdWl0ZSwgcmVjZW50PVRydWUsCi0gICAgICAgICAg
ICBicmFuY2g9Tm9uZSwgYmVnaW49Tm9uZSwgZW5kPU5vbmUsCi0gICAgICAgICAgICBiZWdpbl9x
dWVyeV90aW1lPU5vbmUsIGVuZF9xdWVyeV90aW1lPU5vbmUsCi0gICAgICAgICAgICBsaW1pdD1E
RUZBVUxUX0xJTUlULAotICAgICk6Ci0gICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHN1aXRlLCBz
dHIpOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKGYnRXhwZWN0ZWQgdHlwZSB7c3RyfSwg
Z290IHt0eXBlKHN1aXRlKX0nKQotCi0gICAgICAgIGRlZiBnZXRfdGltZSh0aW1lKToKLSAgICAg
ICAgICAgIGlmIGlzaW5zdGFuY2UodGltZSwgZGF0ZXRpbWUpOgotICAgICAgICAgICAgICAgIHJl
dHVybiB0aW1lCi0gICAgICAgICAgICBlbGlmIHRpbWU6Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IGRhdGV0aW1lLnV0Y2Zyb210aW1lc3RhbXAoaW50KHRpbWUpKQotICAgICAgICAgICAgcmV0dXJu
IE5vbmUKLQotICAgICAgICB3aXRoIHNlbGY6Ci0gICAgICAgICAgICByZXN1bHQgPSB7fQotICAg
ICAgICAgICAgZm9yIGNvbmZpZ3VyYXRpb24gaW4gY29uZmlndXJhdGlvbnM6Ci0gICAgICAgICAg
ICAgICAgcmVzdWx0LnVwZGF0ZSh7Y29uZmlnOiBbdmFsdWUudW5wYWNrKCkgZm9yIHZhbHVlIGlu
IHZhbHVlc10gZm9yIGNvbmZpZywgdmFsdWVzIGluIHNlbGYuY29uZmlndXJhdGlvbl9jb250ZXh0
LnNlbGVjdF9mcm9tX3RhYmxlX3dpdGhfY29uZmlndXJhdGlvbnMoCi0gICAgICAgICAgICAgICAg
ICAgIHRhYmxlLl9fdGFibGVfbmFtZV9fLCBjb25maWd1cmF0aW9ucz1bY29uZmlndXJhdGlvbl0s
IHJlY2VudD1yZWNlbnQsCi0gICAgICAgICAgICAgICAgICAgIHN1aXRlPXN1aXRlLCBzZGs9Y29u
ZmlndXJhdGlvbi5zZGssIGJyYW5jaD1icmFuY2ggb3Igc2VsZi5jb21taXRfY29udGV4dC5ERUZB
VUxUX0JSQU5DSF9LRVksCi0gICAgICAgICAgICAgICAgICAgIHV1aWRfX2d0ZT1Db21taXRDb250
ZXh0LmNvbnZlcnRfdG9fdXVpZChiZWdpbiksCi0gICAgICAgICAgICAgICAgICAgIHV1aWRfX2x0
ZT1Db21taXRDb250ZXh0LmNvbnZlcnRfdG9fdXVpZChlbmQsIENvbW1pdENvbnRleHQudGltZXN0
YW1wX3RvX3V1aWQoKSksCi0gICAgICAgICAgICAgICAgICAgIHN0YXJ0X3RpbWVfX2d0ZT1nZXRf
dGltZShiZWdpbl9xdWVyeV90aW1lKSwgc3RhcnRfdGltZV9fbHRlPWdldF90aW1lKGVuZF9xdWVy
eV90aW1lKSwKLSAgICAgICAgICAgICAgICAgICAgbGltaXQ9bGltaXQsCi0gICAgICAgICAgICAg
ICAgKS5pdGVtcygpfSkKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQKLQotICAgIGRlZiBmaW5k
X2J5X2NvbW1pdChzZWxmLCAqYXJncywgKiprd2FyZ3MpOgotICAgICAgICByZXR1cm4gc2VsZi5f
ZmluZF9yZXN1bHRzKHNlbGYuU3VpdGVSZXN1bHRzQnlDb21taXQsICphcmdzLCAqKmt3YXJncykK
LQotICAgIGRlZiBmaW5kX2J5X3N0YXJ0X3RpbWUoc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKLSAg
ICAgICAgcmV0dXJuIHNlbGYuX2ZpbmRfcmVzdWx0cyhzZWxmLlN1aXRlUmVzdWx0c0J5U3RhcnRU
aW1lLCAqYXJncywgKiprd2FyZ3MpCkluZGV4OiBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJw
eS9tb2RlbC9zdWl0ZV9jb250ZXh0X3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL3Jl
c3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL3N1aXRlX2NvbnRleHRfdW5pdHRlc3QucHkJKHJl
dmlzaW9uIDI2NTUzMSkKKysrIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL3N1
aXRlX2NvbnRleHRfdW5pdHRlc3QucHkJKG5vbmV4aXN0ZW50KQpAQCAtMSwxNzUgKzAsMCBAQAot
IyBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwot
IyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyAiQVMgSVMiIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCi0jIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0jIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IKLSMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSMg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotaW1wb3J0IHRpbWUKLQotZnJv
bSBmYWtlcmVkaXMgaW1wb3J0IEZha2VTdHJpY3RSZWRpcwotZnJvbSByZWRpcyBpbXBvcnQgU3Ry
aWN0UmVkaXMKLWZyb20gcmVzdWx0c2RicHkuY29udHJvbGxlci5jb25maWd1cmF0aW9uIGltcG9y
dCBDb25maWd1cmF0aW9uCi1mcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLmNhc3NhbmRyYV9jb250ZXh0
IGltcG9ydCBDYXNzYW5kcmFDb250ZXh0Ci1mcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLm1vY2tfY2Fz
c2FuZHJhX2NvbnRleHQgaW1wb3J0IE1vY2tDYXNzYW5kcmFDb250ZXh0Ci1mcm9tIHJlc3VsdHNk
YnB5Lm1vZGVsLm1vY2tfbW9kZWxfZmFjdG9yeSBpbXBvcnQgTW9ja01vZGVsRmFjdG9yeQotZnJv
bSByZXN1bHRzZGJweS5tb2RlbC5tb2NrX3JlcG9zaXRvcnkgaW1wb3J0IE1vY2tTVk5SZXBvc2l0
b3J5Ci1mcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLnRlc3RfY29udGV4dCBpbXBvcnQgRXhwZWN0YXRp
b25zCi1mcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLndhaXRfZm9yX2RvY2tlcl90ZXN0X2Nhc2UgaW1w
b3J0IFdhaXRGb3JEb2NrZXJUZXN0Q2FzZQotCi0KLWNsYXNzIFN1aXRlQ29udGV4dFRlc3QoV2Fp
dEZvckRvY2tlclRlc3RDYXNlKToKLSAgICBLRVlTUEFDRSA9ICdzdWl0ZV9jb250ZXh0X3Rlc3Rf
a2V5c3BhY2UnCi0KLSAgICBkZWYgaW5pdF9kYXRhYmFzZShzZWxmLCByZWRpcz1TdHJpY3RSZWRp
cywgY2Fzc2FuZHJhPUNhc3NhbmRyYUNvbnRleHQsIHRlc3RfcmVzdWx0cz1Ob25lKToKLSAgICAg
ICAgY2Fzc2FuZHJhLmRyb3Bfa2V5c3BhY2Uoa2V5c3BhY2U9c2VsZi5LRVlTUEFDRSkKLSAgICAg
ICAgc2VsZi5tb2RlbCA9IE1vY2tNb2RlbEZhY3RvcnkuY3JlYXRlKHJlZGlzPXJlZGlzKCksIGNh
c3NhbmRyYT1jYXNzYW5kcmEoa2V5c3BhY2U9c2VsZi5LRVlTUEFDRSwgY3JlYXRlX2tleXNwYWNl
PVRydWUpKQotICAgICAgICBNb2NrTW9kZWxGYWN0b3J5LmFkZF9tb2NrX3Jlc3VsdHMoc2VsZi5t
b2RlbCwgdGVzdF9yZXN1bHRzPXRlc3RfcmVzdWx0cykKLSAgICAgICAgTW9ja01vZGVsRmFjdG9y
eS5wcm9jZXNzX3Jlc3VsdHMoc2VsZi5tb2RlbCkKLQotICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENh
c2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fz
c2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQotICAgIGRlZiB0ZXN0X2ZpbmRfYWxsKHNlbGYs
IHJlZGlzPVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCk6Ci0gICAgICAg
IHNlbGYuaW5pdF9kYXRhYmFzZShyZWRpcz1yZWRpcywgY2Fzc2FuZHJhPWNhc3NhbmRyYSkKLQot
ICAgICAgICByZXN1bHRzID0gc2VsZi5tb2RlbC5zdWl0ZV9jb250ZXh0LmZpbmRfYnlfY29tbWl0
KAotICAgICAgICAgICAgY29uZmlndXJhdGlvbnM9W0NvbmZpZ3VyYXRpb24ocGxhdGZvcm09J01h
YycsIHN0eWxlPSdSZWxlYXNlJywgZmxhdm9yPSd3azEnKV0sCi0gICAgICAgICAgICBzdWl0ZT0n
bGF5b3V0LXRlc3RzJywgcmVjZW50PVRydWUsCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChsZW4ocmVzdWx0cyksIDEpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG5l
eHQoaXRlcihyZXN1bHRzLnZhbHVlcygpKSkpLCA1KQotCi0gICAgQFdhaXRGb3JEb2NrZXJUZXN0
Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19j
YXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCi0gICAgZGVmIHRlc3RfZmluZF9ieV9jb21t
aXQoc2VsZiwgcmVkaXM9U3RyaWN0UmVkaXMsIGNhc3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0KToK
LSAgICAgICAgc2VsZi5pbml0X2RhdGFiYXNlKHJlZGlzPXJlZGlzLCBjYXNzYW5kcmE9Y2Fzc2Fu
ZHJhKQotCi0gICAgICAgIHJlc3VsdHMgPSBzZWxmLm1vZGVsLnN1aXRlX2NvbnRleHQuZmluZF9i
eV9jb21taXQoCi0gICAgICAgICAgICBjb25maWd1cmF0aW9ucz1bQ29uZmlndXJhdGlvbihwbGF0
Zm9ybT0nTWFjJywgc3R5bGU9J1JlbGVhc2UnLCBmbGF2b3I9J3drMScpXSwKLSAgICAgICAgICAg
IHN1aXRlPSdsYXlvdXQtdGVzdHMnLCByZWNlbnQ9RmFsc2UsCi0gICAgICAgICAgICBiZWdpbj1N
b2NrU1ZOUmVwb3NpdG9yeS53ZWJraXQoKS5jb21taXRfZm9yX2lkKDIzNjU0MiksIGVuZD1Nb2Nr
U1ZOUmVwb3NpdG9yeS53ZWJraXQoKS5jb21taXRfZm9yX2lkKDIzNjU0MyksCi0gICAgICAgICkK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzdWx0cyksIDIpCi0gICAgICAgIGZvciBy
ZXN1bHRzX2Zvcl9jb25maWcgaW4gcmVzdWx0cy52YWx1ZXMoKToKLSAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwobGVuKHJlc3VsdHNfZm9yX2NvbmZpZyksIDIpCi0KLSAgICBAV2FpdEZvckRv
Y2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlz
LCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKLSAgICBkZWYgdGVzdF9maW5k
X2J5X3RpbWUoc2VsZiwgcmVkaXM9U3RyaWN0UmVkaXMsIGNhc3NhbmRyYT1DYXNzYW5kcmFDb250
ZXh0KToKLSAgICAgICAgc2VsZi5pbml0X2RhdGFiYXNlKHJlZGlzPXJlZGlzLCBjYXNzYW5kcmE9
Y2Fzc2FuZHJhKQotCi0gICAgICAgIHJlc3VsdHMgPSBzZWxmLm1vZGVsLnN1aXRlX2NvbnRleHQu
ZmluZF9ieV9zdGFydF90aW1lKAotICAgICAgICAgICAgY29uZmlndXJhdGlvbnM9W0NvbmZpZ3Vy
YXRpb24ocGxhdGZvcm09J01hYycsIHN0eWxlPSdSZWxlYXNlJywgZmxhdm9yPSd3azEnKV0sCi0g
ICAgICAgICAgICBzdWl0ZT0nbGF5b3V0LXRlc3RzJywgcmVjZW50PUZhbHNlLAotICAgICAgICAg
ICAgYmVnaW5fcXVlcnlfdGltZT0odGltZS50aW1lKCkgLSA2MCAqIDYwKSwKLSAgICAgICAgKQot
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlc3VsdHMpLCAxKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGxlbihuZXh0KGl0ZXIocmVzdWx0cy52YWx1ZXMoKSkpKSwgNSkKLQotICAg
IEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtl
U3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQotICAgIGRl
ZiB0ZXN0X2FsbF9zdWNjZXNzZnVsKHNlbGYsIHJlZGlzPVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9
Q2Fzc2FuZHJhQ29udGV4dCk6Ci0gICAgICAgIHNlbGYuaW5pdF9kYXRhYmFzZShyZWRpcz1yZWRp
cywgY2Fzc2FuZHJhPWNhc3NhbmRyYSkKLQotICAgICAgICByZXN1bHRzID0gc2VsZi5tb2RlbC5z
dWl0ZV9jb250ZXh0LmZpbmRfYnlfc3RhcnRfdGltZSgKLSAgICAgICAgICAgIGNvbmZpZ3VyYXRp
b25zPVtDb25maWd1cmF0aW9uKHBsYXRmb3JtPSdNYWMnLCBzdHlsZT0nUmVsZWFzZScsIGZsYXZv
cj0nd2sxJyldLAotICAgICAgICAgICAgc3VpdGU9J2xheW91dC10ZXN0cycsCi0gICAgICAgICAg
ICBiZWdpbj1Nb2NrU1ZOUmVwb3NpdG9yeS53ZWJraXQoKS5jb21taXRfZm9yX2lkKDIzNjU0Miks
IGVuZD1Nb2NrU1ZOUmVwb3NpdG9yeS53ZWJraXQoKS5jb21taXRfZm9yX2lkKDIzNjU0MiksCi0g
ICAgICAgICkKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgbmV4dChp
dGVyKHJlc3VsdHMudmFsdWVzKCkpKVswXVsnc3RhdHMnXSwKLSAgICAgICAgICAgIGRpY3QoCi0g
ICAgICAgICAgICAgICAgdGVzdHNfcnVuPTQsCi0gICAgICAgICAgICAgICAgdGVzdHNfc2tpcHBl
ZD0wLAotICAgICAgICAgICAgICAgIHRlc3RzX2ZhaWxlZD0wLAotICAgICAgICAgICAgICAgIHRl
c3RzX3RpbWVkb3V0PTAsCi0gICAgICAgICAgICAgICAgdGVzdHNfY3Jhc2hlZD0wLAotICAgICAg
ICAgICAgICAgIHRlc3RzX3VuZXhwZWN0ZWRfZmFpbGVkPTAsCi0gICAgICAgICAgICAgICAgdGVz
dHNfdW5leHBlY3RlZF90aW1lZG91dD0wLAotICAgICAgICAgICAgICAgIHRlc3RzX3VuZXhwZWN0
ZWRfY3Jhc2hlZD0wLAotICAgICAgICAgICAgKSwKLSAgICAgICAgKQotCi0gICAgQFdhaXRGb3JE
b2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRp
cywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCi0gICAgZGVmIHRlc3RfZmFp
bHVyZV9leHBlY3RhdGlvbnMoc2VsZiwgcmVkaXM9U3RyaWN0UmVkaXMsIGNhc3NhbmRyYT1DYXNz
YW5kcmFDb250ZXh0KToKLSAgICAgICAgdGVzdF9yZXN1bHRzID0gTW9ja01vZGVsRmFjdG9yeS5s
YXlvdXRfdGVzdF9yZXN1bHRzKCkKLSAgICAgICAgdGVzdF9yZXN1bHRzWydyZXN1bHRzJ11bJ2Zh
c3QnXVsnZW5jb2RpbmcnXVsnY3NzLWNhY2hlZC1ib20uaHRtbCddID0gZGljdCgKLSAgICAgICAg
ICAgIGFjdHVhbD1FeHBlY3RhdGlvbnMuRkFJTCwKLSAgICAgICAgICAgIHRpbWU9MS4yLAotICAg
ICAgICApCi0gICAgICAgIHRlc3RfcmVzdWx0c1sncmVzdWx0cyddWydmYXN0J11bJ2VuY29kaW5n
J11bJ2Nzcy1jaGFyc2V0LWRlZmF1bHQueGh0bWwnXSA9IGRpY3QoCi0gICAgICAgICAgICBhY3R1
YWw9RXhwZWN0YXRpb25zLlRJTUVPVVQsCi0gICAgICAgICAgICBleHBlY3RlZD1FeHBlY3RhdGlv
bnMuVElNRU9VVCwKLSAgICAgICAgICAgIHRpbWU9MS4yLAotICAgICAgICApCi0gICAgICAgIHNl
bGYuaW5pdF9kYXRhYmFzZShyZWRpcz1yZWRpcywgY2Fzc2FuZHJhPWNhc3NhbmRyYSwgdGVzdF9y
ZXN1bHRzPXRlc3RfcmVzdWx0cykKLQotICAgICAgICByZXN1bHRzID0gc2VsZi5tb2RlbC5zdWl0
ZV9jb250ZXh0LmZpbmRfYnlfc3RhcnRfdGltZSgKLSAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25z
PVtDb25maWd1cmF0aW9uKHBsYXRmb3JtPSdNYWMnLCBzdHlsZT0nUmVsZWFzZScsIGZsYXZvcj0n
d2sxJyldLAotICAgICAgICAgICAgc3VpdGU9J2xheW91dC10ZXN0cycsCi0gICAgICAgICAgICBi
ZWdpbj1Nb2NrU1ZOUmVwb3NpdG9yeS53ZWJraXQoKS5jb21taXRfZm9yX2lkKDIzNjU0MiksCi0g
ICAgICAgICAgICBlbmQ9TW9ja1NWTlJlcG9zaXRvcnkud2Via2l0KCkuY29tbWl0X2Zvcl9pZCgy
MzY1NDIpLAotICAgICAgICApCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAg
ICAgIG5leHQoaXRlcihyZXN1bHRzLnZhbHVlcygpKSlbMF1bJ3N0YXRzJ10sCi0gICAgICAgICAg
ICBkaWN0KAotICAgICAgICAgICAgICAgIHRlc3RzX3J1bj00LAotICAgICAgICAgICAgICAgIHRl
c3RzX3NraXBwZWQ9MCwKLSAgICAgICAgICAgICAgICB0ZXN0c19mYWlsZWQ9MiwKLSAgICAgICAg
ICAgICAgICB0ZXN0c190aW1lZG91dD0xLAotICAgICAgICAgICAgICAgIHRlc3RzX2NyYXNoZWQ9
MCwKLSAgICAgICAgICAgICAgICB0ZXN0c191bmV4cGVjdGVkX2ZhaWxlZD0xLAotICAgICAgICAg
ICAgICAgIHRlc3RzX3VuZXhwZWN0ZWRfdGltZWRvdXQ9MCwKLSAgICAgICAgICAgICAgICB0ZXN0
c191bmV4cGVjdGVkX2NyYXNoZWQ9MCwKLSAgICAgICAgICAgICksCi0gICAgICAgICkKLQotICAg
IEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtl
U3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQotICAgIGRl
ZiB0ZXN0X2ltYWdlX2RpZmZfYXNfZmFpbHVyZV9leHBlY3RhdGlvbnMoc2VsZiwgcmVkaXM9U3Ry
aWN0UmVkaXMsIGNhc3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0KToKLSAgICAgICAgdGVzdF9yZXN1
bHRzID0gTW9ja01vZGVsRmFjdG9yeS5sYXlvdXRfdGVzdF9yZXN1bHRzKCkKLSAgICAgICAgdGVz
dF9yZXN1bHRzWydyZXN1bHRzJ11bJ2Zhc3QnXVsnZW5jb2RpbmcnXVsnY3NzLWNhY2hlZC1ib20u
aHRtbCddID0gZGljdCgKLSAgICAgICAgICAgIGFjdHVhbD1FeHBlY3RhdGlvbnMuVElNRU9VVCwK
LSAgICAgICAgICAgIGV4cGVjdGVkPUV4cGVjdGF0aW9ucy5GQUlMLAotICAgICAgICAgICAgdGlt
ZT0xLjIsCi0gICAgICAgICkKLSAgICAgICAgdGVzdF9yZXN1bHRzWydyZXN1bHRzJ11bJ2Zhc3Qn
XVsnZW5jb2RpbmcnXVsnY3NzLWNoYXJzZXQtZGVmYXVsdC54aHRtbCddID0gZGljdCgKLSAgICAg
ICAgICAgIGFjdHVhbD1FeHBlY3RhdGlvbnMuSU1BR0UsCi0gICAgICAgICAgICBleHBlY3RlZD1F
eHBlY3RhdGlvbnMuRkFJTCwKLSAgICAgICAgICAgIHRpbWU9MS4yLAotICAgICAgICApCi0gICAg
ICAgIHNlbGYuaW5pdF9kYXRhYmFzZShyZWRpcz1yZWRpcywgY2Fzc2FuZHJhPWNhc3NhbmRyYSwg
dGVzdF9yZXN1bHRzPXRlc3RfcmVzdWx0cykKLQotICAgICAgICByZXN1bHRzID0gc2VsZi5tb2Rl
bC5zdWl0ZV9jb250ZXh0LmZpbmRfYnlfc3RhcnRfdGltZSgKLSAgICAgICAgICAgIGNvbmZpZ3Vy
YXRpb25zPVtDb25maWd1cmF0aW9uKHBsYXRmb3JtPSdNYWMnLCBzdHlsZT0nUmVsZWFzZScsIGZs
YXZvcj0nd2sxJyldLAotICAgICAgICAgICAgc3VpdGU9J2xheW91dC10ZXN0cycsCi0gICAgICAg
ICAgICBiZWdpbj1Nb2NrU1ZOUmVwb3NpdG9yeS53ZWJraXQoKS5jb21taXRfZm9yX2lkKDIzNjU0
MiksCi0gICAgICAgICAgICBlbmQ9TW9ja1NWTlJlcG9zaXRvcnkud2Via2l0KCkuY29tbWl0X2Zv
cl9pZCgyMzY1NDIpLAotICAgICAgICApCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAg
ICAgICAgICAgIG5leHQoaXRlcihyZXN1bHRzLnZhbHVlcygpKSlbMF1bJ3N0YXRzJ10sCi0gICAg
ICAgICAgICBkaWN0KAotICAgICAgICAgICAgICAgIHRlc3RzX3J1bj00LAotICAgICAgICAgICAg
ICAgIHRlc3RzX3NraXBwZWQ9MCwKLSAgICAgICAgICAgICAgICB0ZXN0c19mYWlsZWQ9MiwKLSAg
ICAgICAgICAgICAgICB0ZXN0c190aW1lZG91dD0xLAotICAgICAgICAgICAgICAgIHRlc3RzX2Ny
YXNoZWQ9MCwKLSAgICAgICAgICAgICAgICB0ZXN0c191bmV4cGVjdGVkX2ZhaWxlZD0xLAotICAg
ICAgICAgICAgICAgIHRlc3RzX3VuZXhwZWN0ZWRfdGltZWRvdXQ9MSwKLSAgICAgICAgICAgICAg
ICB0ZXN0c191bmV4cGVjdGVkX2NyYXNoZWQ9MCwKLSAgICAgICAgICAgICksCi0gICAgICAgICkK
SW5kZXg6IFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL3Rlc3RfY29udGV4dC5w
eQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC90ZXN0
X2NvbnRleHQucHkJKHJldmlzaW9uIDI2NTUzMSkKKysrIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3Vs
dHNkYnB5L21vZGVsL3Rlc3RfY29udGV4dC5weQkobm9uZXhpc3RlbnQpCkBAIC0xLDIyNSArMCww
IEBACi0jIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0j
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0jIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUgotIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotIyBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LAotIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1pbXBvcnQgY2FsZW5k
YXIKLWltcG9ydCBjb2xsZWN0aW9ucwotaW1wb3J0IGpzb24KLWltcG9ydCB0aW1lCi0KLWZyb20g
Y2Fzc2FuZHJhLmNxbGVuZ2luZSBpbXBvcnQgY29sdW1ucwotZnJvbSBjYXNzYW5kcmEuY3FsZW5n
aW5lLm1vZGVscyBpbXBvcnQgTW9kZWwKLWZyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1lCi1m
cm9tIHJlc3VsdHNkYnB5LmNvbnRyb2xsZXIuY29tbWl0IGltcG9ydCBDb21taXQKLWZyb20gcmVz
dWx0c2RicHkubW9kZWwuY29tbWl0X2NvbnRleHQgaW1wb3J0IENvbW1pdENvbnRleHQKLWZyb20g
cmVzdWx0c2RicHkubW9kZWwuY29uZmlndXJhdGlvbl9jb250ZXh0IGltcG9ydCBDbHVzdGVyZWRC
eUNvbmZpZ3VyYXRpb24KLWZyb20gcmVzdWx0c2RicHkubW9kZWwudXBsb2FkX2NvbnRleHQgaW1w
b3J0IFVwbG9hZENhbGxiYWNrQ29udGV4dAotCi0KLWNsYXNzIEV4cGVjdGF0aW9uczoKLSAgICAj
IFRoZXNlIGFyZSBvcmRlcmVkIGJ5IHByaW9yaXR5LCBtZWFuaW5nIHRoYXQgYSB0ZXN0IHdoaWNo
IGJvdGggY3Jhc2hlcyBhbmQgaGFzCi0gICAgIyBhIHdhcm5pbmcgc2hvdWxkIGJlIGNvbnNpZGVy
ZWQgdG8gaGF2ZSBjcmFzaGVkLgotICAgIFNUQVRFX0lEX1RPX1NUUklORyA9IGNvbGxlY3Rpb25z
Lk9yZGVyZWREaWN0KCkKLSAgICBTVEFURV9JRF9UT19TVFJJTkdbMHgwMF0gPSAnQ1JBU0gnCi0g
ICAgU1RBVEVfSURfVE9fU1RSSU5HWzB4MDhdID0gJ1RJTUVPVVQnCi0gICAgU1RBVEVfSURfVE9f
U1RSSU5HWzB4MTBdID0gJ0lNQUdFJwotICAgIFNUQVRFX0lEX1RPX1NUUklOR1sweDE4XSA9ICdB
VURJTycKLSAgICBTVEFURV9JRF9UT19TVFJJTkdbMHgyMF0gPSAnVEVYVCcKLSAgICBTVEFURV9J
RF9UT19TVFJJTkdbMHgyOF0gPSAnRkFJTCcKLSAgICBTVEFURV9JRF9UT19TVFJJTkdbMHgzMF0g
PSAnRVJST1InCi0gICAgU1RBVEVfSURfVE9fU1RSSU5HWzB4MzhdID0gJ1dBUk5JTkcnCi0gICAg
U1RBVEVfSURfVE9fU1RSSU5HWzB4NDBdID0gJ1BBU1MnCi0KLSAgICBTVFJJTkdfVE9fU1RBVEVf
SUQgPSB7c3RyaW5nOiBpZCBmb3IgaWQsIHN0cmluZyBpbiBTVEFURV9JRF9UT19TVFJJTkcuaXRl
bXMoKX0KLQotICAgIENSQVNILCBUSU1FT1VULCBJTUFHRSwgQVVESU8sIFRFWFQsIEZBSUwsIEVS
Uk9SLCBXQVJOSU5HLCBQQVNTID0gU1RBVEVfSURfVE9fU1RSSU5HLnZhbHVlcygpCi0KLSAgICBA
Y2xhc3NtZXRob2QKLSAgICBkZWYgc3RyaW5nX3RvX3N0YXRlX2lkcyhjbHMsIHN0cmluZyk6Ci0g
ICAgICAgIHJlc3VsdCA9IHNldChbZWxtIGZvciBlbG0gaW4gW2Nscy5TVFJJTkdfVE9fU1RBVEVf
SUQuZ2V0KHN0cikgZm9yIHN0ciBpbiBzdHJpbmcuc3BsaXQoJyAnKV0gaWYgZWxtIGlzIG5vdCBO
b25lXSkKLSAgICAgICAgcmV0dXJuIHNvcnRlZChyZXN1bHQpIG9yIFtjbHMuU1RSSU5HX1RPX1NU
QVRFX0lEW2Nscy5QQVNTXV0KLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBzdGF0ZV9pZHNf
dG9fc3RyaW5nKGNscywgc3RhdGVfaWRzKToKLSAgICAgICAgaWYgaXNpbnN0YW5jZShzdGF0ZV9p
ZHMsIHN0cik6Ci0gICAgICAgICAgICByZXR1cm4gJyAnLmpvaW4oW2Nscy5TVEFURV9JRF9UT19T
VFJJTkdbb3JkKHN0YXRlKV0gZm9yIHN0YXRlIGluIHNvcnRlZChzdGF0ZV9pZHMpXSkKLSAgICAg
ICAgcmV0dXJuICcgJy5qb2luKFtjbHMuU1RBVEVfSURfVE9fU1RSSU5HW2ludChzdGF0ZSldIGZv
ciBzdGF0ZSBpbiBzb3J0ZWQoc3RhdGVfaWRzKV0pCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBk
ZWYgaXRlcmF0ZV90aHJvdWdoX25lc3RlZF9yZXN1bHRzKGNscywgcmVzdWx0cywgY2FsbGJhY2s9
bGFtYmRhIHRlc3QsIHJlc3VsdHM6IE5vbmUpOgotICAgICAgICBkZWYgcmVjdXJzZShwYXJ0aWFs
X3Rlc3QsIHJlc3VsdHMpOgotICAgICAgICAgICAgcG90ZW50aWFsX2Jhc2VfY2FzZSA9IFRydWUK
LSAgICAgICAgICAgIGZvciBrZXksIHZhbHVlIGluIHJlc3VsdHMuaXRlbXMoKToKLSAgICAgICAg
ICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCBkaWN0KToKLSAgICAgICAgICAgICAgICAgICAg
cG90ZW50aWFsX2Jhc2VfY2FzZSA9IEZhbHNlCi0gICAgICAgICAgICAgICAgICAgIHJlY3Vyc2Uo
cGFydGlhbF90ZXN0ICsgJy8nICsga2V5LCB2YWx1ZSkKLSAgICAgICAgICAgICAgICBlbGlmIG5v
dCBwb3RlbnRpYWxfYmFzZV9jYXNlOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVy
cm9yKCdJbmNvcnJlY3RseSBmb3JtYXR0ZWQgbmVzdGVkIHJlc3VsdHMgZGljdGlvbmFyeScpCi0K
LSAgICAgICAgICAgIGlmIHBvdGVudGlhbF9iYXNlX2Nhc2U6Ci0gICAgICAgICAgICAgICAgIyBJ
ZiB3ZSBkb24ndCBoYXZlIGEgZGljdGlvbmFyeSBvZiBkaWN0aW9uYXJpZXMsIHRoYXQgbWVhbnMg
dGhpcyBpcyBhIGxlYWYgbm9kZQotICAgICAgICAgICAgICAgIGNhbGxiYWNrKHBhcnRpYWxfdGVz
dCwgcmVzdWx0cykKLQotICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiByZXN1bHRzLml0ZW1zKCk6
Ci0gICAgICAgICAgICByZWN1cnNlKGtleSwgdmFsdWUpCi0KLQotY2xhc3MgVGVzdENvbnRleHQo
VXBsb2FkQ2FsbGJhY2tDb250ZXh0KToKLSAgICBERUZBVUxUX0xJTUlUID0gMTAwCi0KLSAgICBj
bGFzcyBUZXN0UmVzdWx0c0Jhc2UoQ2x1c3RlcmVkQnlDb25maWd1cmF0aW9uKToKLSAgICAgICAg
c3VpdGUgPSBjb2x1bW5zLlRleHQocGFydGl0aW9uX2tleT1UcnVlLCByZXF1aXJlZD1UcnVlKQot
ICAgICAgICBicmFuY2ggPSBjb2x1bW5zLlRleHQocGFydGl0aW9uX2tleT1UcnVlLCByZXF1aXJl
ZD1UcnVlKQotICAgICAgICB0ZXN0ID0gY29sdW1ucy5UZXh0KHBhcnRpdGlvbl9rZXk9VHJ1ZSwg
cmVxdWlyZWQ9VHJ1ZSkKLSAgICAgICAgZXhwZWN0ZWQgPSBjb2x1bW5zLkJsb2IocmVxdWlyZWQ9
VHJ1ZSkKLSAgICAgICAgYWN0dWFsID0gY29sdW1ucy5CbG9iKHJlcXVpcmVkPVRydWUpCi0gICAg
ICAgIGRldGFpbHMgPSBjb2x1bW5zLlRleHQocmVxdWlyZWQ9RmFsc2UpCi0KLSAgICAgICAgZGVm
IHVucGFjayhzZWxmKToKLSAgICAgICAgICAgIHJlc3VsdCA9IGRpY3QoCi0gICAgICAgICAgICAg
ICAgdXVpZD1zZWxmLnV1aWQsCi0gICAgICAgICAgICAgICAgc3RhcnRfdGltZT1jYWxlbmRhci50
aW1lZ20oc2VsZi5zdGFydF90aW1lLnRpbWV0dXBsZSgpKSwKLSAgICAgICAgICAgICAgICBleHBl
Y3RlZD1FeHBlY3RhdGlvbnMuc3RhdGVfaWRzX3RvX3N0cmluZyhzZWxmLmV4cGVjdGVkKSwKLSAg
ICAgICAgICAgICAgICBhY3R1YWw9RXhwZWN0YXRpb25zLnN0YXRlX2lkc190b19zdHJpbmcoc2Vs
Zi5hY3R1YWwpLAotICAgICAgICAgICAgKQotICAgICAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4g
KGpzb24ubG9hZHMoc2VsZi5kZXRhaWxzKSBpZiBzZWxmLmRldGFpbHMgZWxzZSB7fSkuaXRlbXMo
KToKLSAgICAgICAgICAgICAgICBpZiBrZXkgaW4gcmVzdWx0OgotICAgICAgICAgICAgICAgICAg
ICBjb250aW51ZQotICAgICAgICAgICAgICAgIHJlc3VsdFtrZXldID0gdmFsdWUKLSAgICAgICAg
ICAgIHJldHVybiByZXN1bHQKLQotICAgIGNsYXNzIFRlc3RSZXN1bHRzQnlDb21taXQoVGVzdFJl
c3VsdHNCYXNlKToKLSAgICAgICAgX190YWJsZV9uYW1lX18gPSAndGVzdF9yZXN1bHRzX2J5X2Nv
bW1pdCcKLSAgICAgICAgdXVpZCA9IGNvbHVtbnMuQmlnSW50KHByaW1hcnlfa2V5PVRydWUsIHJl
cXVpcmVkPVRydWUsIGNsdXN0ZXJpbmdfb3JkZXI9J0RFU0MnKQotICAgICAgICBzZGsgPSBjb2x1
bW5zLlRleHQocHJpbWFyeV9rZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkKLSAgICAgICAgc3RhcnRf
dGltZSA9IGNvbHVtbnMuRGF0ZVRpbWUocHJpbWFyeV9rZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkK
LQotICAgIGNsYXNzIFRlc3RSZXN1bHRzQnlTdGFydFRpbWUoVGVzdFJlc3VsdHNCYXNlKToKLSAg
ICAgICAgX190YWJsZV9uYW1lX18gPSAndGVzdF9yZXN1bHRzX2J5X3N0YXJ0X3RpbWUnCi0gICAg
ICAgIHN0YXJ0X3RpbWUgPSBjb2x1bW5zLkRhdGVUaW1lKHByaW1hcnlfa2V5PVRydWUsIHJlcXVp
cmVkPVRydWUsIGNsdXN0ZXJpbmdfb3JkZXI9J0RFU0MnKQotICAgICAgICBzZGsgPSBjb2x1bW5z
LlRleHQocHJpbWFyeV9rZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkKLSAgICAgICAgdXVpZCA9IGNv
bHVtbnMuQmlnSW50KHByaW1hcnlfa2V5PVRydWUsIHJlcXVpcmVkPVRydWUpCi0KLSAgICBjbGFz
cyBUZXN0TmFtZUJ5U3VpdGUoTW9kZWwpOgotICAgICAgICBfX3RhYmxlX25hbWVfXyA9ICd0ZXN0
X25hbWVzX2J5X3N1aXRlJwotICAgICAgICBzdWl0ZSA9IGNvbHVtbnMuVGV4dChwYXJ0aXRpb25f
a2V5PVRydWUsIHJlcXVpcmVkPVRydWUpCi0gICAgICAgIHRlc3QgPSBjb2x1bW5zLlRleHQocHJp
bWFyeV9rZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCAq
YXJncywgKiprd2FyZ3MpOgotICAgICAgICBzdXBlcihUZXN0Q29udGV4dCwgc2VsZikuX19pbml0
X18oJ3Rlc3QtcmVzdWx0cycsICphcmdzLCAqKmt3YXJncykKLQotICAgICAgICB3aXRoIHNlbGY6
Ci0gICAgICAgICAgICBzZWxmLmNhc3NhbmRyYS5jcmVhdGVfdGFibGUoc2VsZi5UZXN0UmVzdWx0
c0J5Q29tbWl0KQotICAgICAgICAgICAgc2VsZi5jYXNzYW5kcmEuY3JlYXRlX3RhYmxlKHNlbGYu
VGVzdFJlc3VsdHNCeVN0YXJ0VGltZSkKLSAgICAgICAgICAgIHNlbGYuY2Fzc2FuZHJhLmNyZWF0
ZV90YWJsZShzZWxmLlRlc3ROYW1lQnlTdWl0ZSkKLQotICAgIGRlZiBuYW1lcyhzZWxmLCBzdWl0
ZSwgdGVzdD1Ob25lLCBsaW1pdD1ERUZBVUxUX0xJTUlUKToKLSAgICAgICAgd2l0aCBzZWxmOgot
ICAgICAgICAgICAgaWYgdGVzdDoKLSAgICAgICAgICAgICAgICAjIEZJWE1FOiBTQVNJIGluZGVj
aWVzIGFyZSB0aGUgY2Fubm9pY2FsIHdheSB0byBzb2x2ZSB0aGlzIHByb2JsZW0sIGJ1dCByZXF1
aXJlIENhc3NhbmRyYSAzLjQgd2hpY2gKLSAgICAgICAgICAgICAgICAjIGhhc24ndCBiZWVuIGRl
cGxveWVkIHRvIG91ciBkYXRhY2VudGVycyB5ZXQuIFRoaXMgd29ya3MgZm9yIGNvbW1pdHMsIGJ1
dCBpcyBsZXNzIHRyYW5zcGFyZW50LgotICAgICAgICAgICAgICAgIHJldHVybiBbbW9kZWwudGVz
dCBmb3IgbW9kZWwgaW4gc2VsZi5jYXNzYW5kcmEuc2VsZWN0X2Zyb21fdGFibGUoCi0gICAgICAg
ICAgICAgICAgICAgIHNlbGYuVGVzdE5hbWVCeVN1aXRlLl9fdGFibGVfbmFtZV9fLCBsaW1pdD1s
aW1pdCwgc3VpdGU9c3VpdGUsCi0gICAgICAgICAgICAgICAgICAgIHRlc3RfX2d0ZT10ZXN0LCB0
ZXN0X19sdGU9KHRlc3QgKyAnficpLAotICAgICAgICAgICAgICAgICldCi0KLSAgICAgICAgICAg
IHJldHVybiBbbW9kZWwudGVzdCBmb3IgbW9kZWwgaW4gc2VsZi5jYXNzYW5kcmEuc2VsZWN0X2Zy
b21fdGFibGUoCi0gICAgICAgICAgICAgICAgc2VsZi5UZXN0TmFtZUJ5U3VpdGUuX190YWJsZV9u
YW1lX18sIGxpbWl0PWxpbWl0LCBzdWl0ZT1zdWl0ZSwKLSAgICAgICAgICAgICldCi0KLSAgICBk
ZWYgcmVnaXN0ZXIoc2VsZiwgY29uZmlndXJhdGlvbiwgY29tbWl0cywgc3VpdGUsIHRlc3RfcmVz
dWx0cywgdGltZXN0YW1wPU5vbmUpOgotICAgICAgICB0aW1lc3RhbXAgPSB0aW1lc3RhbXAgb3Ig
dGltZS50aW1lKCkKLSAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UodGltZXN0YW1wLCBkYXRldGlt
ZSk6Ci0gICAgICAgICAgICB0aW1lc3RhbXAgPSBkYXRldGltZS51dGNmcm9tdGltZXN0YW1wKGlu
dCh0aW1lc3RhbXApKQotCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGlmIG5vdCBpc2luc3Rh
bmNlKHN1aXRlLCBzdHIpOgotICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcihmJ0V4cGVj
dGVkIHR5cGUge3N0cn0sIGdvdCB7dHlwZShzdWl0ZSl9JykKLQotICAgICAgICAgICAgaWYgaXNp
bnN0YW5jZSh0aW1lc3RhbXAsIGRhdGV0aW1lKToKLSAgICAgICAgICAgICAgICB0aW1lc3RhbXAg
PSBjYWxlbmRhci50aW1lZ20odGltZXN0YW1wLnRpbWV0dXBsZSgpKQotCi0gICAgICAgICAgICB3
aXRoIHNlbGY6Ci0gICAgICAgICAgICAgICAgdXVpZCA9IHNlbGYuY29tbWl0X2NvbnRleHQudXVp
ZF9mb3JfY29tbWl0cyhjb21taXRzKQotICAgICAgICAgICAgICAgIHR0bCA9IGludCgodXVpZCAv
LyBDb21taXQuVElNRVNUQU1QX1RPX1VVSURfTVVMVElQTElFUikgKyBzZWxmLnR0bF9zZWNvbmRz
IC0gdGltZS50aW1lKCkpIGlmIHNlbGYudHRsX3NlY29uZHMgZWxzZSBOb25lCi0KLSAgICAgICAg
ICAgICAgICBkZWYgY2FsbGJhY2sodGVzdCwgcmVzdWx0LCBicmFuY2gpOgotICAgICAgICAgICAg
ICAgICAgICBzZWxmLmNhc3NhbmRyYS5pbnNlcnRfcm93KHNlbGYuVGVzdE5hbWVCeVN1aXRlLl9f
dGFibGVfbmFtZV9fLCBzdWl0ZT1zdWl0ZSwgdGVzdD10ZXN0LCB0dGw9dHRsKQotCi0gICAgICAg
ICAgICAgICAgICAgIGFyZ3NfdG9fd3JpdGUgPSBkaWN0KAotICAgICAgICAgICAgICAgICAgICAg
ICAgYWN0dWFsPWJ5dGVhcnJheShFeHBlY3RhdGlvbnMuc3RyaW5nX3RvX3N0YXRlX2lkcyhyZXN1
bHQuZ2V0KCdhY3R1YWwnLCAnJykpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVk
PWJ5dGVhcnJheShFeHBlY3RhdGlvbnMuc3RyaW5nX3RvX3N0YXRlX2lkcyhyZXN1bHQuZ2V0KCdl
eHBlY3RlZCcsICcnKSkpLAotICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlscz1qc29uLmR1
bXBzKHtrZXk6IHZhbHVlIGZvciBrZXksIHZhbHVlIGluIHJlc3VsdC5pdGVtcygpIGlmIGtleSBu
b3QgaW4gWydhY3R1YWwnLCAnZXhwZWN0ZWQnXX0pLAotICAgICAgICAgICAgICAgICAgICApCi0g
ICAgICAgICAgICAgICAgICAgIGZvciB0YWJsZSBpbiBbc2VsZi5UZXN0UmVzdWx0c0J5Q29tbWl0
LCBzZWxmLlRlc3RSZXN1bHRzQnlTdGFydFRpbWVdOgotICAgICAgICAgICAgICAgICAgICAgICAg
c2VsZi5jb25maWd1cmF0aW9uX2NvbnRleHQuaW5zZXJ0X3Jvd193aXRoX2NvbmZpZ3VyYXRpb24o
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGUuX190YWJsZV9uYW1lX18sIGNvbmZp
Z3VyYXRpb249Y29uZmlndXJhdGlvbiwgc3VpdGU9c3VpdGUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYnJhbmNoPWJyYW5jaCwgdXVpZD11dWlkLCB0dGw9dHRsLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRlc3Q9dGVzdCwgc2RrPWNvbmZpZ3VyYXRpb24uc2RrIG9yICc/Jywg
c3RhcnRfdGltZT10aW1lc3RhbXAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKiphcmdz
X3RvX3dyaXRlKQotCi0gICAgICAgICAgICAgICAgd2l0aCBzZWxmLmNhc3NhbmRyYS5iYXRjaF9x
dWVyeV9jb250ZXh0KCk6Ci0gICAgICAgICAgICAgICAgICAgIGZvciBicmFuY2ggaW4gc2VsZi5j
b21taXRfY29udGV4dC5icmFuY2hfa2V5c19mb3JfY29tbWl0cyhjb21taXRzKToKLSAgICAgICAg
ICAgICAgICAgICAgICAgIEV4cGVjdGF0aW9ucy5pdGVyYXRlX3Rocm91Z2hfbmVzdGVkX3Jlc3Vs
dHMoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9yZXN1bHRzLmdldCgncmVzdWx0
cycpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbWJkYSB0ZXN0LCByZXN1bHQ6IGNh
bGxiYWNrKHRlc3QsIHJlc3VsdCwgYnJhbmNoPWJyYW5jaCksCi0gICAgICAgICAgICAgICAgICAg
ICAgICApCi0KLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAgcmV0
dXJuIHNlbGYucGFydGlhbF9zdGF0dXMoZSkKLSAgICAgICAgcmV0dXJuIHNlbGYucGFydGlhbF9z
dGF0dXMoKQotCi0gICAgZGVmIF9maW5kX3Jlc3VsdHMoCi0gICAgICAgICAgICBzZWxmLCB0YWJs
ZSwgY29uZmlndXJhdGlvbnMsIHN1aXRlLCB0ZXN0LCByZWNlbnQ9VHJ1ZSwKLSAgICAgICAgICAg
IGJyYW5jaD1Ob25lLCBiZWdpbj1Ob25lLCBlbmQ9Tm9uZSwKLSAgICAgICAgICAgIGJlZ2luX3F1
ZXJ5X3RpbWU9Tm9uZSwgZW5kX3F1ZXJ5X3RpbWU9Tm9uZSwKLSAgICAgICAgICAgIGxpbWl0PURF
RkFVTFRfTElNSVQsCi0gICAgKToKLSAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uoc3VpdGUsIHN0
cik6Ci0gICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoZidFeHBlY3RlZCB0eXBlIHtzdHJ9LCBn
b3Qge3R5cGUoc3VpdGUpfScpCi0gICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHRlc3QsIHN0cik6
Ci0gICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoZidFeHBlY3RlZCB0eXBlIHtzdHJ9LCBnb3Qg
e3R5cGUoc3VpdGUpfScpCi0KLSAgICAgICAgZGVmIGdldF90aW1lKHRpbWUpOgotICAgICAgICAg
ICAgaWYgaXNpbnN0YW5jZSh0aW1lLCBkYXRldGltZSk6Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IHRpbWUKLSAgICAgICAgICAgIGVsaWYgdGltZToKLSAgICAgICAgICAgICAgICByZXR1cm4gZGF0
ZXRpbWUudXRjZnJvbXRpbWVzdGFtcChpbnQodGltZSkpCi0gICAgICAgICAgICByZXR1cm4gTm9u
ZQotCi0gICAgICAgIHdpdGggc2VsZjoKLSAgICAgICAgICAgIHJlc3VsdCA9IHt9Ci0gICAgICAg
ICAgICBmb3IgY29uZmlndXJhdGlvbiBpbiBjb25maWd1cmF0aW9uczoKLSAgICAgICAgICAgICAg
ICByZXN1bHQudXBkYXRlKHtjb25maWc6IFt2YWx1ZS51bnBhY2soKSBmb3IgdmFsdWUgaW4gdmFs
dWVzXSBmb3IgY29uZmlnLCB2YWx1ZXMgaW4gc2VsZi5jb25maWd1cmF0aW9uX2NvbnRleHQuc2Vs
ZWN0X2Zyb21fdGFibGVfd2l0aF9jb25maWd1cmF0aW9ucygKLSAgICAgICAgICAgICAgICAgICAg
dGFibGUuX190YWJsZV9uYW1lX18sIGNvbmZpZ3VyYXRpb25zPVtjb25maWd1cmF0aW9uXSwgcmVj
ZW50PXJlY2VudCwKLSAgICAgICAgICAgICAgICAgICAgc3VpdGU9c3VpdGUsIHRlc3Q9dGVzdCwg
c2RrPWNvbmZpZ3VyYXRpb24uc2RrLCBicmFuY2g9YnJhbmNoIG9yIHNlbGYuY29tbWl0X2NvbnRl
eHQuREVGQVVMVF9CUkFOQ0hfS0VZLAotICAgICAgICAgICAgICAgICAgICB1dWlkX19ndGU9Q29t
bWl0Q29udGV4dC5jb252ZXJ0X3RvX3V1aWQoYmVnaW4pLAotICAgICAgICAgICAgICAgICAgICB1
dWlkX19sdGU9Q29tbWl0Q29udGV4dC5jb252ZXJ0X3RvX3V1aWQoZW5kLCBDb21taXRDb250ZXh0
LnRpbWVzdGFtcF90b191dWlkKCkpLAotICAgICAgICAgICAgICAgICAgICBzdGFydF90aW1lX19n
dGU9Z2V0X3RpbWUoYmVnaW5fcXVlcnlfdGltZSksIHN0YXJ0X3RpbWVfX2x0ZT1nZXRfdGltZShl
bmRfcXVlcnlfdGltZSksCi0gICAgICAgICAgICAgICAgICAgIGxpbWl0PWxpbWl0LAotICAgICAg
ICAgICAgICAgICkuaXRlbXMoKX0pCi0gICAgICAgICAgICByZXR1cm4gcmVzdWx0Ci0KLSAgICBk
ZWYgZmluZF9ieV9jb21taXQoc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKLSAgICAgICAgcmV0dXJu
IHNlbGYuX2ZpbmRfcmVzdWx0cyhzZWxmLlRlc3RSZXN1bHRzQnlDb21taXQsICphcmdzLCAqKmt3
YXJncykKLQotICAgIGRlZiBmaW5kX2J5X3N0YXJ0X3RpbWUoc2VsZiwgKmFyZ3MsICoqa3dhcmdz
KToKLSAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbmRfcmVzdWx0cyhzZWxmLlRlc3RSZXN1bHRzQnlT
dGFydFRpbWUsICphcmdzLCAqKmt3YXJncykKSW5kZXg6IFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3Vs
dHNkYnB5L21vZGVsL3Rlc3RfY29udGV4dF91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC90ZXN0X2NvbnRleHRfdW5pdHRlc3QucHkJ
KHJldmlzaW9uIDI2NTUzMSkKKysrIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVs
L3Rlc3RfY29udGV4dF91bml0dGVzdC5weQkobm9uZXhpc3RlbnQpCkBAIC0xLDEwNCArMCwwIEBA
Ci0jIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0j
Ci0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0jIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUgotIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAot
IyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1pbXBvcnQgdGltZQotCi1m
cm9tIGZha2VyZWRpcyBpbXBvcnQgRmFrZVN0cmljdFJlZGlzCi1mcm9tIHJlZGlzIGltcG9ydCBT
dHJpY3RSZWRpcwotZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVyLmNvbmZpZ3VyYXRpb24gaW1w
b3J0IENvbmZpZ3VyYXRpb24KLWZyb20gcmVzdWx0c2RicHkubW9kZWwuY2Fzc2FuZHJhX2NvbnRl
eHQgaW1wb3J0IENhc3NhbmRyYUNvbnRleHQKLWZyb20gcmVzdWx0c2RicHkubW9kZWwubW9ja19j
YXNzYW5kcmFfY29udGV4dCBpbXBvcnQgTW9ja0Nhc3NhbmRyYUNvbnRleHQKLWZyb20gcmVzdWx0
c2RicHkubW9kZWwubW9ja19tb2RlbF9mYWN0b3J5IGltcG9ydCBNb2NrTW9kZWxGYWN0b3J5Ci1m
cm9tIHJlc3VsdHNkYnB5Lm1vZGVsLm1vY2tfcmVwb3NpdG9yeSBpbXBvcnQgTW9ja1NWTlJlcG9z
aXRvcnkKLWZyb20gcmVzdWx0c2RicHkubW9kZWwudGVzdF9jb250ZXh0IGltcG9ydCBFeHBlY3Rh
dGlvbnMKLWZyb20gcmVzdWx0c2RicHkubW9kZWwud2FpdF9mb3JfZG9ja2VyX3Rlc3RfY2FzZSBp
bXBvcnQgV2FpdEZvckRvY2tlclRlc3RDYXNlCi0KLQotY2xhc3MgVGVzdENvbnRleHRUZXN0KFdh
aXRGb3JEb2NrZXJUZXN0Q2FzZSk6Ci0gICAgS0VZU1BBQ0UgPSAndGVzdF9jb250ZXh0X3Rlc3Rf
a2V5c3BhY2UnCi0KLSAgICBkZWYgaW5pdF9kYXRhYmFzZShzZWxmLCByZWRpcz1TdHJpY3RSZWRp
cywgY2Fzc2FuZHJhPUNhc3NhbmRyYUNvbnRleHQpOgotICAgICAgICBjYXNzYW5kcmEuZHJvcF9r
ZXlzcGFjZShrZXlzcGFjZT1zZWxmLktFWVNQQUNFKQotICAgICAgICBzZWxmLm1vZGVsID0gTW9j
a01vZGVsRmFjdG9yeS5jcmVhdGUocmVkaXM9cmVkaXMoKSwgY2Fzc2FuZHJhPWNhc3NhbmRyYShr
ZXlzcGFjZT1zZWxmLktFWVNQQUNFLCBjcmVhdGVfa2V5c3BhY2U9VHJ1ZSkpCi0gICAgICAgIE1v
Y2tNb2RlbEZhY3RvcnkuYWRkX21vY2tfcmVzdWx0cyhzZWxmLm1vZGVsKQotICAgICAgICBNb2Nr
TW9kZWxGYWN0b3J5LnByb2Nlc3NfcmVzdWx0cyhzZWxmLm1vZGVsKQotCi0gICAgQFdhaXRGb3JE
b2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRp
cywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCi0gICAgZGVmIHRlc3RfbGlz
dF9hbGwoc2VsZiwgcmVkaXM9U3RyaWN0UmVkaXMsIGNhc3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0
KToKLSAgICAgICAgc2VsZi5pbml0X2RhdGFiYXNlKHJlZGlzPXJlZGlzLCBjYXNzYW5kcmE9Y2Fz
c2FuZHJhKQotICAgICAgICByZXN1bHRzID0gc2VsZi5tb2RlbC50ZXN0X2NvbnRleHQubmFtZXMo
c3VpdGU9J2xheW91dC10ZXN0cycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0cywg
WwotICAgICAgICAgICAgJ2Zhc3QvZW5jb2RpbmcvY3NzLWNhY2hlZC1ib20uaHRtbCcsCi0gICAg
ICAgICAgICAnZmFzdC9lbmNvZGluZy9jc3MtY2hhcnNldC1kZWZhdWx0LnhodG1sJywKLSAgICAg
ICAgICAgICdmYXN0L2VuY29kaW5nL2Nzcy1jaGFyc2V0Lmh0bWwnLAotICAgICAgICAgICAgJ2Zh
c3QvZW5jb2RpbmcvY3NzLWxpbmstY2hhcnNldC5odG1sJywKLSAgICAgICAgXSkKLQotICAgIEBX
YWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3Ry
aWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQotICAgIGRlZiB0
ZXN0X2xpc3RfcGFydGlhbChzZWxmLCByZWRpcz1TdHJpY3RSZWRpcywgY2Fzc2FuZHJhPUNhc3Nh
bmRyYUNvbnRleHQpOgotICAgICAgICBzZWxmLmluaXRfZGF0YWJhc2UocmVkaXM9cmVkaXMsIGNh
c3NhbmRyYT1jYXNzYW5kcmEpCi0gICAgICAgIHJlc3VsdHMgPSBzZWxmLm1vZGVsLnRlc3RfY29u
dGV4dC5uYW1lcyhzdWl0ZT0nbGF5b3V0LXRlc3RzJywgdGVzdD0nZmFzdC9lbmNvZGluZy9jc3Mt
Y2hhcnNldCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0cywgWwotICAgICAgICAg
ICAgJ2Zhc3QvZW5jb2RpbmcvY3NzLWNoYXJzZXQtZGVmYXVsdC54aHRtbCcsCi0gICAgICAgICAg
ICAnZmFzdC9lbmNvZGluZy9jc3MtY2hhcnNldC5odG1sJywKLSAgICAgICAgXSkKLQotICAgIEBX
YWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3Ry
aWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQotICAgIGRlZiB0
ZXN0X2ZpbmRfYWxsKHNlbGYsIHJlZGlzPVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fzc2FuZHJh
Q29udGV4dCk6Ci0gICAgICAgIHNlbGYuaW5pdF9kYXRhYmFzZShyZWRpcz1yZWRpcywgY2Fzc2Fu
ZHJhPWNhc3NhbmRyYSkKLSAgICAgICAgcmVzdWx0cyA9IHNlbGYubW9kZWwudGVzdF9jb250ZXh0
LmZpbmRfYnlfY29tbWl0KAotICAgICAgICAgICAgY29uZmlndXJhdGlvbnM9W0NvbmZpZ3VyYXRp
b24ocGxhdGZvcm09J01hYycsIHN0eWxlPSdSZWxlYXNlJywgZmxhdm9yPSd3azEnKV0sCi0gICAg
ICAgICAgICBzdWl0ZT0nbGF5b3V0LXRlc3RzJywgdGVzdD0nZmFzdC9lbmNvZGluZy9jc3MtbGlu
ay1jaGFyc2V0Lmh0bWwnLCByZWNlbnQ9VHJ1ZSwKLSAgICAgICAgKQotCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwobGVuKHJlc3VsdHMpLCAxKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxl
bihuZXh0KGl0ZXIocmVzdWx0cy52YWx1ZXMoKSkpKSwgNSkKLSAgICAgICAgZm9yIHJlc3VsdCBp
biBuZXh0KGl0ZXIocmVzdWx0cy52YWx1ZXMoKSkpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChyZXN1bHRbJ2FjdHVhbCddLCBFeHBlY3RhdGlvbnMuUEFTUykKLSAgICAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwocmVzdWx0WydleHBlY3RlZCddLCBFeHBlY3RhdGlvbnMuUEFTUykKLSAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0Wyd0aW1lJ10sIDEuMikKLSAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0Wydtb2RpZmllcnMnXSwgJycpCi0KLSAgICBAV2Fp
dEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmlj
dFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKLSAgICBkZWYgdGVz
dF9maW5kX2J5X2NvbW1pdChzZWxmLCByZWRpcz1TdHJpY3RSZWRpcywgY2Fzc2FuZHJhPUNhc3Nh
bmRyYUNvbnRleHQpOgotICAgICAgICBzZWxmLmluaXRfZGF0YWJhc2UocmVkaXM9cmVkaXMsIGNh
c3NhbmRyYT1jYXNzYW5kcmEpCi0gICAgICAgIHJlc3VsdHMgPSBzZWxmLm1vZGVsLnRlc3RfY29u
dGV4dC5maW5kX2J5X2NvbW1pdCgKLSAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25zPVtDb25maWd1
cmF0aW9uKHBsYXRmb3JtPSdNYWMnLCBzdHlsZT0nUmVsZWFzZScsIGZsYXZvcj0nd2sxJyldLAot
ICAgICAgICAgICAgc3VpdGU9J2xheW91dC10ZXN0cycsIHRlc3Q9J2Zhc3QvZW5jb2RpbmcvY3Nz
LWNhY2hlZC1ib20uaHRtbCcsIHJlY2VudD1GYWxzZSwKLSAgICAgICAgICAgIGJlZ2luPU1vY2tT
Vk5SZXBvc2l0b3J5LndlYmtpdCgpLmNvbW1pdF9mb3JfaWQoMjM2NTQyKSwKLSAgICAgICAgICAg
IGVuZD1Nb2NrU1ZOUmVwb3NpdG9yeS53ZWJraXQoKS5jb21taXRfZm9yX2lkKDIzNjU0MyksCi0g
ICAgICAgICkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzdWx0cyksIDIpCi0gICAg
ICAgIGZvciByZXN1bHRzX2Zvcl9jb25maWcgaW4gcmVzdWx0cy52YWx1ZXMoKToKLSAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlc3VsdHNfZm9yX2NvbmZpZyksIDIpCi0KLSAgICBA
V2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0
cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKLSAgICBkZWYg
dGVzdF9maW5kX2J5X3RpbWUoc2VsZiwgcmVkaXM9U3RyaWN0UmVkaXMsIGNhc3NhbmRyYT1DYXNz
YW5kcmFDb250ZXh0KToKLSAgICAgICAgc2VsZi5pbml0X2RhdGFiYXNlKHJlZGlzPXJlZGlzLCBj
YXNzYW5kcmE9Y2Fzc2FuZHJhKQotICAgICAgICByZXN1bHRzID0gc2VsZi5tb2RlbC50ZXN0X2Nv
bnRleHQuZmluZF9ieV9zdGFydF90aW1lKAotICAgICAgICAgICAgY29uZmlndXJhdGlvbnM9W0Nv
bmZpZ3VyYXRpb24ocGxhdGZvcm09J01hYycsIHN0eWxlPSdSZWxlYXNlJywgZmxhdm9yPSd3azEn
KV0sCi0gICAgICAgICAgICBzdWl0ZT0nbGF5b3V0LXRlc3RzJywgdGVzdD0nZmFzdC9lbmNvZGlu
Zy9jc3MtY2hhcnNldC5odG1sJywgcmVjZW50PUZhbHNlLAotICAgICAgICAgICAgYmVnaW5fcXVl
cnlfdGltZT0odGltZS50aW1lKCkgLSA2MCAqIDYwKSwKLSAgICAgICAgKQotCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwobGVuKHJlc3VsdHMpLCAxKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGxlbihuZXh0KGl0ZXIocmVzdWx0cy52YWx1ZXMoKSkpKSwgNSkKSW5kZXg6IFRvb2xzL3Jlc3Vs
dHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL3VwbG9hZF9jb250ZXh0LnB5Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL3VwbG9hZF9jb250ZXh0LnB5CShy
ZXZpc2lvbiAyNjU1MzEpCisrKyBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC91
cGxvYWRfY29udGV4dC5weQkobm9uZXhpc3RlbnQpCkBAIC0xLDMzMyArMCwwIEBACi0jIENvcHly
aWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0j
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMg
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
LSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UgotIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUgotIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotIyBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1pbXBvcnQgY2FsZW5kYXIKLWltcG9ydCBp
bwotaW1wb3J0IGpzb24KLWltcG9ydCB0aW1lCi1pbXBvcnQgemlwZmlsZQotCi1mcm9tIGNhc3Nh
bmRyYS5jcWxlbmdpbmUgaW1wb3J0IGNvbHVtbnMKLWZyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRl
ZmF1bHRkaWN0Ci1mcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRldGltZQotZnJvbSByZXN1bHRzZGJw
eS5jb250cm9sbGVyLmNvbW1pdCBpbXBvcnQgQ29tbWl0Ci1mcm9tIHJlc3VsdHNkYnB5LmNvbnRy
b2xsZXIuY29uZmlndXJhdGlvbiBpbXBvcnQgQ29uZmlndXJhdGlvbgotZnJvbSByZXN1bHRzZGJw
eS5tb2RlbC5jb21taXRfY29udGV4dCBpbXBvcnQgQ29tbWl0Q29udGV4dAotZnJvbSByZXN1bHRz
ZGJweS5tb2RlbC5jb25maWd1cmF0aW9uX2NvbnRleHQgaW1wb3J0IENsdXN0ZXJlZEJ5Q29uZmln
dXJhdGlvbgotCi0KLWNsYXNzIFVwbG9hZENvbnRleHQob2JqZWN0KToKLSAgICBRVUVVRV9OQU1F
ID0gJ3VwbG9hZF9xdWV1ZScKLSAgICBQUk9DRVNTX1RJTUVPVVQgPSA3ICogMjQgKiA2MCAqIDYw
Ci0gICAgTUFYX0FUVEVNUFRTID0gNQotICAgIFJFVFJZX1RJTUUgPSAxMCAqIDYwICAjIEFmdGVy
IDEwIG1pbnV0ZXMsIHJlLXRyeSBhIHRhc2sgZXZlbiBpZiBpdCdzIGluLWZsaWdodAotICAgIE1B
WF9UQVNLU19JTl9TQ0FOID0gNDAKLQotICAgIGNsYXNzIFN1aXRlc0J5Q29uZmlndXJhdGlvbihD
bHVzdGVyZWRCeUNvbmZpZ3VyYXRpb24pOgotICAgICAgICBfX3RhYmxlX25hbWVfXyA9ICdzdWl0
ZXNfYnlfY29uZmlndXJhdGlvbl9hbmRfYnJhbmNoJwotICAgICAgICBzdWl0ZSA9IGNvbHVtbnMu
VGV4dChwcmltYXJ5X2tleT1UcnVlLCByZXF1aXJlZD1UcnVlKQotICAgICAgICBicmFuY2ggPSBj
b2x1bW5zLlRleHQocHJpbWFyeV9rZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkKLQotICAgICMgRklY
TUU6IFJlbW92ZSB0aGUgVXBsb2Fkc0J5Q29uZmlndXJhdGlvbkxlZ2FjeSBvbmNlIHJlc3VsdHMg
aW4gaXQgYXJlIHN1ZmZpY2VudGx5IG9sZCBpbiBTcHJpbmcgMjAyMQotICAgIGNsYXNzIFVwbG9h
ZHNCeUNvbmZpZ3VyYXRpb25MZWdhY3koQ2x1c3RlcmVkQnlDb25maWd1cmF0aW9uKToKLSAgICAg
ICAgX190YWJsZV9uYW1lX18gPSAndXBsb2Fkc19ieV9jb25maWd1cmF0aW9uXzAxJwotICAgICAg
ICBzdWl0ZSA9IGNvbHVtbnMuVGV4dChwYXJ0aXRpb25fa2V5PVRydWUsIHJlcXVpcmVkPVRydWUp
Ci0gICAgICAgIGJyYW5jaCA9IGNvbHVtbnMuVGV4dChwYXJ0aXRpb25fa2V5PVRydWUsIHJlcXVp
cmVkPVRydWUpCi0gICAgICAgIHV1aWQgPSBjb2x1bW5zLkJpZ0ludChwcmltYXJ5X2tleT1UcnVl
LCByZXF1aXJlZD1UcnVlLCBjbHVzdGVyaW5nX29yZGVyPSdERVNDJykKLSAgICAgICAgc2RrID0g
Y29sdW1ucy5UZXh0KHByaW1hcnlfa2V5PVRydWUsIHJlcXVpcmVkPVRydWUpCi0gICAgICAgIGNv
bW1pdHMgPSBjb2x1bW5zLkJsb2IocmVxdWlyZWQ9VHJ1ZSkKLSAgICAgICAgdGVzdF9yZXN1bHRz
ID0gY29sdW1ucy5CbG9iKHJlcXVpcmVkPVRydWUpCi0gICAgICAgIHRpbWVfdXBsb2FkZWQgPSBj
b2x1bW5zLkRhdGVUaW1lKHJlcXVpcmVkPVRydWUpCi0gICAgICAgIHVwbG9hZF92ZXJzaW9uID0g
Y29sdW1ucy5JbnRlZ2VyKHJlcXVpcmVkPVRydWUpCi0KLSAgICAgICAgZGVmIHVucGFjayhzZWxm
KToKLSAgICAgICAgICAgIHJldHVybiBkaWN0KAotICAgICAgICAgICAgICAgIGNvbW1pdHM9W0Nv
bW1pdC5mcm9tX2pzb24oZWxlbWVudCkgZm9yIGVsZW1lbnQgaW4ganNvbi5sb2FkcyhVcGxvYWRD
b250ZXh0LmZyb21femlwKGJ5dGVhcnJheShzZWxmLmNvbW1pdHMpKSldLAotICAgICAgICAgICAg
ICAgIHNkaz1Ob25lIGlmIHNlbGYuc2RrID09ICc/JyBlbHNlIHNlbGYuc2RrLAotICAgICAgICAg
ICAgICAgIHRlc3RfcmVzdWx0cz1qc29uLmxvYWRzKFVwbG9hZENvbnRleHQuZnJvbV96aXAoYnl0
ZWFycmF5KHNlbGYudGVzdF9yZXN1bHRzKSkpLAotICAgICAgICAgICAgICAgIHRpbWVzdGFtcD1j
YWxlbmRhci50aW1lZ20oc2VsZi50aW1lX3VwbG9hZGVkLnRpbWV0dXBsZSgpKSwKLSAgICAgICAg
ICAgICAgICB2ZXJzaW9uPXNlbGYudXBsb2FkX3ZlcnNpb24sCi0gICAgICAgICAgICApCi0KLSAg
ICBjbGFzcyBVcGxvYWRzQnlDb25maWd1cmF0aW9uKENsdXN0ZXJlZEJ5Q29uZmlndXJhdGlvbik6
Ci0gICAgICAgIF9fdGFibGVfbmFtZV9fID0gJ3VwbG9hZHNfYnlfY29uZmlndXJhdGlvbl8wMicK
LSAgICAgICAgc3VpdGUgPSBjb2x1bW5zLlRleHQocGFydGl0aW9uX2tleT1UcnVlLCByZXF1aXJl
ZD1UcnVlKQotICAgICAgICBicmFuY2ggPSBjb2x1bW5zLlRleHQocGFydGl0aW9uX2tleT1UcnVl
LCByZXF1aXJlZD1UcnVlKQotICAgICAgICB1dWlkID0gY29sdW1ucy5CaWdJbnQocHJpbWFyeV9r
ZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSwgY2x1c3RlcmluZ19vcmRlcj0nREVTQycpCi0gICAgICAg
IHRpbWVfdXBsb2FkZWQgPSBjb2x1bW5zLkRhdGVUaW1lKHByaW1hcnlfa2V5PVRydWUsIHJlcXVp
cmVkPVRydWUpCi0gICAgICAgIHNkayA9IGNvbHVtbnMuVGV4dChwcmltYXJ5X2tleT1UcnVlLCBy
ZXF1aXJlZD1UcnVlKQotICAgICAgICBjb21taXRzID0gY29sdW1ucy5CbG9iKHJlcXVpcmVkPVRy
dWUpCi0gICAgICAgIHRlc3RfcmVzdWx0cyA9IGNvbHVtbnMuQmxvYihyZXF1aXJlZD1UcnVlKQot
ICAgICAgICB1cGxvYWRfdmVyc2lvbiA9IGNvbHVtbnMuSW50ZWdlcihyZXF1aXJlZD1UcnVlKQot
Ci0gICAgICAgIGRlZiB1bnBhY2soc2VsZik6Ci0gICAgICAgICAgICByZXR1cm4gZGljdCgKLSAg
ICAgICAgICAgICAgICBjb21taXRzPVtDb21taXQuZnJvbV9qc29uKGVsZW1lbnQpIGZvciBlbGVt
ZW50IGluIGpzb24ubG9hZHMoVXBsb2FkQ29udGV4dC5mcm9tX3ppcChieXRlYXJyYXkoc2VsZi5j
b21taXRzKSkpXSwKLSAgICAgICAgICAgICAgICBzZGs9Tm9uZSBpZiBzZWxmLnNkayA9PSAnPycg
ZWxzZSBzZWxmLnNkaywKLSAgICAgICAgICAgICAgICB0ZXN0X3Jlc3VsdHM9anNvbi5sb2FkcyhV
cGxvYWRDb250ZXh0LmZyb21femlwKGJ5dGVhcnJheShzZWxmLnRlc3RfcmVzdWx0cykpKSwKLSAg
ICAgICAgICAgICAgICB0aW1lc3RhbXA9Y2FsZW5kYXIudGltZWdtKHNlbGYudGltZV91cGxvYWRl
ZC50aW1ldHVwbGUoKSksCi0gICAgICAgICAgICAgICAgdmVyc2lvbj1zZWxmLnVwbG9hZF92ZXJz
aW9uLAotICAgICAgICAgICAgKQotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvbmZpZ3VyYXRp
b25fY29udGV4dCwgY29tbWl0X2NvbnRleHQsIHR0bF9zZWNvbmRzPU5vbmUsIGFzeW5jX3Byb2Nl
c3Npbmc9RmFsc2UpOgotICAgICAgICBzZWxmLnR0bF9zZWNvbmRzID0gdHRsX3NlY29uZHMKLSAg
ICAgICAgc2VsZi5jb25maWd1cmF0aW9uX2NvbnRleHQgPSBjb25maWd1cmF0aW9uX2NvbnRleHQK
LSAgICAgICAgc2VsZi5jb21taXRfY29udGV4dCA9IGNvbW1pdF9jb250ZXh0Ci0gICAgICAgIHNl
bGYuY2Fzc2FuZHJhID0gc2VsZi5jb25maWd1cmF0aW9uX2NvbnRleHQuY2Fzc2FuZHJhCi0gICAg
ICAgIHNlbGYuX3Byb2Nlc3NfdXBsb2FkX2NhbGxiYWNrcyA9IGRlZmF1bHRkaWN0KGRpY3QpCi0g
ICAgICAgIHdpdGggc2VsZjoKLSAgICAgICAgICAgIHNlbGYuY2Fzc2FuZHJhLmNyZWF0ZV90YWJs
ZShzZWxmLlN1aXRlc0J5Q29uZmlndXJhdGlvbikKLSAgICAgICAgICAgIHNlbGYuY2Fzc2FuZHJh
LmNyZWF0ZV90YWJsZShzZWxmLlVwbG9hZHNCeUNvbmZpZ3VyYXRpb25MZWdhY3kpCi0gICAgICAg
ICAgICBzZWxmLmNhc3NhbmRyYS5jcmVhdGVfdGFibGUoc2VsZi5VcGxvYWRzQnlDb25maWd1cmF0
aW9uKQotCi0gICAgICAgIHNlbGYuX2FzeW5jX3Byb2Nlc3NpbmcgPSBhc3luY19wcm9jZXNzaW5n
Ci0gICAgICAgIHNlbGYucmVkaXMgPSBzZWxmLmNvbmZpZ3VyYXRpb25fY29udGV4dC5yZWRpcwot
Ci0gICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKLSAgICAgICAgc2VsZi5jb25maWd1cmF0aW9uX2Nv
bnRleHQuX19lbnRlcl9fKCkKLSAgICAgICAgc2VsZi5jb21taXRfY29udGV4dC5fX2VudGVyX18o
KQotCi0gICAgZGVmIF9fZXhpdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncyk6Ci0gICAgICAgIHNl
bGYuY29tbWl0X2NvbnRleHQuX19leGl0X18oKmFyZ3MsICoqa3dhcmdzKQotICAgICAgICBzZWxm
LmNvbmZpZ3VyYXRpb25fY29udGV4dC5fX2V4aXRfXygqYXJncywgKiprd2FyZ3MpCi0KLSAgICBk
ZWYgcmVnaXN0ZXJfdXBsb2FkX2NhbGxiYWNrKHNlbGYsIG5hbWUsIGNhbGxiYWNrLCBzdWl0ZT1O
b25lKToKLSAgICAgICAgIyBJZiBubyBzdWl0ZSBpcyBzcGVjaWZpZWQsIGFsbCB1cGxvYWRzIGZy
b20gYWxsIHN1aXRlcyB3aWxsIHRyaWdnZXIgdGhlIGNhbGxiYWNrCi0gICAgICAgIHNlbGYuX3By
b2Nlc3NfdXBsb2FkX2NhbGxiYWNrc1tzdWl0ZV1bbmFtZV0gPSBjYWxsYmFjawotCi0gICAgQGNs
YXNzbWV0aG9kCi0gICAgZGVmIHRvX3ppcChjbHMsIHZhbHVlLCBhcmNoaXZlX25hbWU9J2FyY2hp
dmUnKToKLSAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UodmFsdWUsIHN0cik6Ci0gICAgICAgICAg
ICByYWlzZSBUeXBlRXJyb3IoZidFeHBlY3RlZCB0eXBlIHtzdHJ9LCBnb3Qge3R5cGUodmFsdWUp
fScpCi0KLSAgICAgICAgY29tcHJlc3NlZF9maWxlID0gaW8uQnl0ZXNJTygpCi0gICAgICAgIHdp
dGggemlwZmlsZS5aaXBGaWxlKGNvbXByZXNzZWRfZmlsZSwgbW9kZT0ndycsIGNvbXByZXNzaW9u
PXppcGZpbGUuWklQX0RFRkxBVEVEKSBhcyB6aXBfZmlsZToKLSAgICAgICAgICAgIHppcF9maWxl
LndyaXRlc3RyKGFyY2hpdmVfbmFtZSwgdmFsdWUpCi0gICAgICAgIHJldHVybiBieXRlYXJyYXko
Y29tcHJlc3NlZF9maWxlLmdldHZhbHVlKCkpCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYg
ZnJvbV96aXAoY2xzLCB2YWx1ZSwgYXJjaGl2ZV9uYW1lPSdhcmNoaXZlJyk6Ci0gICAgICAgIGlm
IG5vdCBpc2luc3RhbmNlKHZhbHVlLCBieXRlYXJyYXkpOgotICAgICAgICAgICAgcmFpc2UgVHlw
ZUVycm9yKGYnRXhwZWN0ZWQgdHlwZSB7Ynl0ZWFycmF5fSwgZ290IHt0eXBlKHZhbHVlKX0nKQot
Ci0gICAgICAgIGNvbXByZXNzZWRfZmlsZSA9IGlvLkJ5dGVzSU8oKQotICAgICAgICBjb21wcmVz
c2VkX2ZpbGUud3JpdGUodmFsdWUpCi0gICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKGNvbXBy
ZXNzZWRfZmlsZSwgbW9kZT0ncicpIGFzIHppcF9maWxlOgotICAgICAgICAgICAgcmV0dXJuIHpp
cF9maWxlLnJlYWQoYXJjaGl2ZV9uYW1lKS5kZWNvZGUoJ3V0Zi04JykKLQotICAgIGRlZiBzeW5j
aHJvbm91c2x5X3Byb2Nlc3NfdGVzdF9yZXN1bHRzKHNlbGYsIGNvbmZpZ3VyYXRpb24sIGNvbW1p
dHMsIHN1aXRlLCB0ZXN0X3Jlc3VsdHMsIHRpbWVzdGFtcD1Ob25lKToKLSAgICAgICAgdGltZXN0
YW1wID0gdGltZXN0YW1wIG9yIHRpbWUudGltZSgpCi0KLSAgICAgICAgIyBBbGxvd3MgcGFydGlh
bCBlcnJvcnMgdG8gYmUgZm9yd2FyZGVkIGJhY2sgdG8gdGhlIGNhbGxlcgotICAgICAgICByZXN1
bHQgPSB7fQotICAgICAgICBmb3IgbmFtZSwgY2FsbGJhY2sgaW4gc2VsZi5fcHJvY2Vzc191cGxv
YWRfY2FsbGJhY2tzW3N1aXRlXS5pdGVtcygpOgotICAgICAgICAgICAgcmVzdWx0W25hbWVdID0g
Y2FsbGJhY2soY29uZmlndXJhdGlvbj1jb25maWd1cmF0aW9uLCBjb21taXRzPWNvbW1pdHMsIHN1
aXRlPXN1aXRlLCB0ZXN0X3Jlc3VsdHM9dGVzdF9yZXN1bHRzLCB0aW1lc3RhbXA9dGltZXN0YW1w
KQotICAgICAgICBmb3IgbmFtZSwgY2FsbGJhY2sgaW4gc2VsZi5fcHJvY2Vzc191cGxvYWRfY2Fs
bGJhY2tzW05vbmVdLml0ZW1zKCk6Ci0gICAgICAgICAgICByZXN1bHRbbmFtZV0gPSBjYWxsYmFj
ayhjb25maWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24sIGNvbW1pdHM9Y29tbWl0cywgc3VpdGU9c3Vp
dGUsIHRlc3RfcmVzdWx0cz10ZXN0X3Jlc3VsdHMsIHRpbWVzdGFtcD10aW1lc3RhbXApCi0gICAg
ICAgIHJldHVybiByZXN1bHQKLQotICAgIGRlZiBfZmluZF9qb2Jfd2l0aF9hdHRlbXB0cyhzZWxm
KToKLSAgICAgICAgbm93ID0gaW50KHRpbWUudGltZSgpKQotICAgICAgICBhcmVfam9ic19sZWZ0
ID0gRmFsc2UKLSAgICAgICAgd2lsbF9hdHRlbXB0ID0gMAotCi0gICAgICAgIHdpdGggc2VsZi5y
ZWRpcy5sb2NrKG5hbWU9Zidsb2NrX3tzZWxmLlFVRVVFX05BTUV9JywgdGltZW91dD02MCk6Ci0g
ICAgICAgICAgICBmb3Iga2V5IGluIHNlbGYucmVkaXMuc2Nhbl9pdGVyKG1hdGNoPWYne3NlbGYu
UVVFVUVfTkFNRX0qJywgY291bnQ9c2VsZi5NQVhfVEFTS1NfSU5fU0NBTik6Ci0gICAgICAgICAg
ICAgICAgYXJlX2pvYnNfbGVmdCA9IFRydWUKLSAgICAgICAgICAgICAgICBrZXkgPSBrZXkuZGVj
b2RlKCd1dGYtOCcpCi0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICB2
YWx1ZSA9IGpzb24ubG9hZHMoc2VsZi5yZWRpcy5nZXQoa2V5KSkKLSAgICAgICAgICAgICAgICAg
ICAgaWYgbm93ID4gdmFsdWUuZ2V0KCdzdGFydGVkX3Byb2Nlc3NpbmcnLCAwKSArIHNlbGYuUkVU
UllfVElNRToKLSAgICAgICAgICAgICAgICAgICAgICAgIHdpbGxfYXR0ZW1wdCA9IHZhbHVlLmdl
dCgnYXR0ZW1wdHMnLCAwKSArIDEKLSAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgot
ICAgICAgICAgICAgICAgICAgICB3aWxsX2F0dGVtcHQgPSAxCi0KLSAgICAgICAgICAgICAgICBp
ZiB3aWxsX2F0dGVtcHQ6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYucmVkaXMuc2V0KAotICAg
ICAgICAgICAgICAgICAgICAgICAga2V5LAotICAgICAgICAgICAgICAgICAgICAgICAganNvbi5k
dW1wcyhkaWN0KHN0YXJ0ZWRfcHJvY2Vzc2luZz1ub3csIGF0dGVtcHRzPXdpbGxfYXR0ZW1wdCkp
LAotICAgICAgICAgICAgICAgICAgICAgICAgZXg9c2VsZi5QUk9DRVNTX1RJTUVPVVQsCi0gICAg
ICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFyZV9qb2JzX2xl
ZnQsIGtleSwgd2lsbF9hdHRlbXB0Ci0KLSAgICAgICAgcmV0dXJuIGFyZV9qb2JzX2xlZnQsIE5v
bmUsIE5vbmUKLQotICAgIGRlZiBfZG9fam9iX2Zvcl9rZXkoc2VsZiwga2V5LCBhdHRlbXB0cz0x
KToKLSAgICAgICAgam9iX2NvbXBsZXRlID0gRmFsc2UKLSAgICAgICAgdHJ5OgotICAgICAgICAg
ICAgcmF3X2RhdGEgPSBzZWxmLnJlZGlzLmdldChmJ2RhdGFfZm9yX3trZXl9JykKLSAgICAgICAg
ICAgIGlmIHJhd19kYXRhOgotICAgICAgICAgICAgICAgIGRhdGEgPSBqc29uLmxvYWRzKHJhd19k
YXRhKQotICAgICAgICAgICAgICAgIHNlbGYuc3luY2hyb25vdXNseV9wcm9jZXNzX3Rlc3RfcmVz
dWx0cygKLSAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbj1Db25maWd1cmF0aW9uLmZy
b21fanNvbihkYXRhWydjb25maWd1cmF0aW9uJ10pLAotICAgICAgICAgICAgICAgICAgICBjb21t
aXRzPVtDb21taXQuZnJvbV9qc29uKGNvbW1pdF9qc29uKSBmb3IgY29tbWl0X2pzb24gaW4gZGF0
YVsnY29tbWl0cyddXSwKLSAgICAgICAgICAgICAgICAgICAgc3VpdGU9ZGF0YVsnc3VpdGUnXSwK
LSAgICAgICAgICAgICAgICAgICAgdGltZXN0YW1wPWRhdGFbJ3RpbWVzdGFtcCddLAotICAgICAg
ICAgICAgICAgICAgICB0ZXN0X3Jlc3VsdHM9ZGF0YVsndGVzdF9yZXN1bHRzJ10sCi0gICAgICAg
ICAgICAgICAgKQotICAgICAgICAgICAgam9iX2NvbXBsZXRlID0gVHJ1ZQotICAgICAgICBmaW5h
bGx5OgotICAgICAgICAgICAgaWYgam9iX2NvbXBsZXRlIG9yIGF0dGVtcHRzID49IHNlbGYuTUFY
X0FUVEVNUFRTOgotICAgICAgICAgICAgICAgIHNlbGYucmVkaXMuZGVsZXRlKGtleSkKLSAgICAg
ICAgICAgICAgICBzZWxmLnJlZGlzLmRlbGV0ZShmJ2RhdGFfZm9yX3trZXl9JykKLSAgICAgICAg
ICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgc2VsZi5yZWRpcy5zZXQoCi0gICAgICAgICAgICAg
ICAgICAgIGtleSwKLSAgICAgICAgICAgICAgICAgICAganNvbi5kdW1wcyhkaWN0KHN0YXJ0ZWRf
cHJvY2Vzc2luZz0wLCBhdHRlbXB0cz1hdHRlbXB0cykpLAotICAgICAgICAgICAgICAgICAgICBl
eD1zZWxmLlBST0NFU1NfVElNRU9VVCwKLSAgICAgICAgICAgICAgICApCi0gICAgICAgIHJldHVy
biBqb2JfY29tcGxldGUKLQotICAgIGRlZiBkb19wcm9jZXNzaW5nX3dvcmsoc2VsZik6Ci0gICAg
ICAgIGpvYnNfbGVmdCA9IFRydWUKLSAgICAgICAgZGlkX2NvbXBsZXRlID0gRmFsc2UKLQotICAg
ICAgICB3aGlsZSBqb2JzX2xlZnQ6Ci0gICAgICAgICAgICBqb2JzX2xlZnQsIGtleSwgYXR0ZW1w
dHMgPSBzZWxmLl9maW5kX2pvYl93aXRoX2F0dGVtcHRzKCkKLQotICAgICAgICAgICAgaWYga2V5
OgotICAgICAgICAgICAgICAgIGRpZF9jb21wbGV0ZSB8PSBzZWxmLl9kb19qb2JfZm9yX2tleShr
ZXksIGF0dGVtcHRzPWF0dGVtcHRzKQotICAgICAgICAgICAgZWxpZiBqb2JzX2xlZnQ6Ci0gICAg
ICAgICAgICAgICAgdGltZS5zbGVlcCgxMCkgICMgVGhlcmUgYXJlIGpvYnMsIGJ1dCBvdGhlciB3
b3JrZXJzIGFyZSBwcm9jZXNzaW5nIHRoZW0uCi0KLSAgICAgICAgcmV0dXJuIGRpZF9jb21wbGV0
ZQotCi0gICAgZGVmIHByb2Nlc3NfdGVzdF9yZXN1bHRzKHNlbGYsIGNvbmZpZ3VyYXRpb24sIGNv
bW1pdHMsIHN1aXRlLCB0ZXN0X3Jlc3VsdHMsIHRpbWVzdGFtcD1Ob25lKToKLSAgICAgICAgdGlt
ZXN0YW1wID0gdGltZXN0YW1wIG9yIHRpbWUudGltZSgpCi0KLSAgICAgICAgaWYgbm90IHNlbGYu
X2FzeW5jX3Byb2Nlc3Npbmc6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5zeW5jaHJvbm91c2x5
X3Byb2Nlc3NfdGVzdF9yZXN1bHRzKGNvbmZpZ3VyYXRpb24sIGNvbW1pdHMsIHN1aXRlLCB0ZXN0
X3Jlc3VsdHM9dGVzdF9yZXN1bHRzLCB0aW1lc3RhbXA9dGltZXN0YW1wKQotCi0gICAgICAgIGZv
ciBicmFuY2ggaW4gc2VsZi5jb21taXRfY29udGV4dC5icmFuY2hfa2V5c19mb3JfY29tbWl0cyhj
b21taXRzKToKLSAgICAgICAgICAgIGhhc2hfa2V5ID0gaGFzaChjb25maWd1cmF0aW9uKSBeIGhh
c2goYnJhbmNoKSBeIGhhc2goc2VsZi5jb21taXRfY29udGV4dC51dWlkX2Zvcl9jb21taXRzKGNv
bW1pdHMpKSBeIGhhc2goc3VpdGUpIF4gaGFzaCh0aW1lc3RhbXApCi0gICAgICAgICAgICBzZWxm
LnJlZGlzLnNldCgKLSAgICAgICAgICAgICAgICBmJ3tzZWxmLlFVRVVFX05BTUV9OntoYXNoX2tl
eX0nLAotICAgICAgICAgICAgICAgIGpzb24uZHVtcHMoZGljdChzdGFydGVkX3Byb2Nlc3Npbmc9
MCwgYXR0ZW1wdHM9MCkpLAotICAgICAgICAgICAgICAgIGV4PXNlbGYuUFJPQ0VTU19USU1FT1VU
LAotICAgICAgICAgICAgKQotICAgICAgICAgICAgc2VsZi5yZWRpcy5zZXQoCi0gICAgICAgICAg
ICAgICAgZidkYXRhX2Zvcl97c2VsZi5RVUVVRV9OQU1FfTp7aGFzaF9rZXl9JywKLSAgICAgICAg
ICAgICAgICBqc29uLmR1bXBzKGRpY3QoCi0gICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRp
b249Q29uZmlndXJhdGlvbi5FbmNvZGVyKCkuZGVmYXVsdChjb25maWd1cmF0aW9uKSwKLSAgICAg
ICAgICAgICAgICAgICAgc3VpdGU9c3VpdGUsCi0gICAgICAgICAgICAgICAgICAgIGNvbW1pdHM9
Q29tbWl0LkVuY29kZXIoKS5kZWZhdWx0KGNvbW1pdHMpLAotICAgICAgICAgICAgICAgICAgICB0
aW1lc3RhbXA9dGltZXN0YW1wLAotICAgICAgICAgICAgICAgICAgICB0ZXN0X3Jlc3VsdHM9dGVz
dF9yZXN1bHRzLAotICAgICAgICAgICAgICAgICkpLAotICAgICAgICAgICAgICAgIGV4PXNlbGYu
UFJPQ0VTU19USU1FT1VULAotICAgICAgICAgICAgKQotICAgICAgICByZXR1cm4ge2tleTogZGlj
dChzdGF0dXM9J1F1ZXVlZCcpIGZvciBrZXkgaW4gbGlzdChzZWxmLl9wcm9jZXNzX3VwbG9hZF9j
YWxsYmFja3Nbc3VpdGVdLmtleXMoKSkgKyBsaXN0KHNlbGYuX3Byb2Nlc3NfdXBsb2FkX2NhbGxi
YWNrc1tOb25lXS5rZXlzKCkpfQotCi0gICAgZGVmIHVwbG9hZF90ZXN0X3Jlc3VsdHMoc2VsZiwg
Y29uZmlndXJhdGlvbiwgY29tbWl0cywgc3VpdGUsIHRlc3RfcmVzdWx0cywgdGltZXN0YW1wPU5v
bmUsIHZlcnNpb249MCk6Ci0gICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHN1aXRlLCBzdHIpOgot
ICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKGYnRXhwZWN0ZWQgdHlwZSB7c3RyfSwgZ290IHt0
eXBlKHN1aXRlKX0nKQotICAgICAgICBmb3IgY29tbWl0IGluIGNvbW1pdHM6Ci0gICAgICAgICAg
ICBpZiBub3QgaXNpbnN0YW5jZShjb21taXQsIENvbW1pdCk6Ci0gICAgICAgICAgICAgICAgcmFp
c2UgVHlwZUVycm9yKGYnRXhwZWN0ZWQgdHlwZSB7Q29tbWl0fSwgZ290IHt0eXBlKGNvbW1pdCl9
JykKLSAgICAgICAgaWYgbGVuKGNvbW1pdHMpIDwgMToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVl
RXJyb3IoJ0VhY2ggdGVzdCByZXN1bHQgbXVzdCBoYXZlIGF0IGxlYXN0IDEgYXNzb2NpYXRlZCBj
b21taXQnKQotICAgICAgICBpZiBub3QgaXNpbnN0YW5jZSh0ZXN0X3Jlc3VsdHMsIGRpY3QpOgot
ICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKGYnRXhwZWN0ZWQgdHlwZSB7ZGljdH0sIGdvdCB7
dHlwZSh0ZXN0X3Jlc3VsdHMpfScpCi0gICAgICAgIHRpbWVzdGFtcCA9IHRpbWVzdGFtcCBvciB0
aW1lLnRpbWUoKQotICAgICAgICBpZiBub3QgaXNpbnN0YW5jZSh0aW1lc3RhbXAsIGRhdGV0aW1l
KToKLSAgICAgICAgICAgIHRpbWVzdGFtcCA9IGRhdGV0aW1lLnV0Y2Zyb210aW1lc3RhbXAoaW50
KHRpbWVzdGFtcCkpCi0KLSAgICAgICAgdXVpZCA9IHNlbGYuY29tbWl0X2NvbnRleHQudXVpZF9m
b3JfY29tbWl0cyhjb21taXRzKQotICAgICAgICBicmFuY2hlcyA9IHNlbGYuY29tbWl0X2NvbnRl
eHQuYnJhbmNoX2tleXNfZm9yX2NvbW1pdHMoY29tbWl0cykKLQotICAgICAgICB3aXRoIHNlbGY6
Ci0gICAgICAgICAgICBmb3IgYnJhbmNoIGluIGJyYW5jaGVzOgotICAgICAgICAgICAgICAgIHNl
bGYuY29uZmlndXJhdGlvbl9jb250ZXh0LnJlZ2lzdGVyX2NvbmZpZ3VyYXRpb24oY29uZmlndXJh
dGlvbiwgYnJhbmNoPWJyYW5jaCwgdGltZXN0YW1wPXRpbWVzdGFtcCkKLQotICAgICAgICAgICAg
ICAgIHNlbGYuY29uZmlndXJhdGlvbl9jb250ZXh0Lmluc2VydF9yb3dfd2l0aF9jb25maWd1cmF0
aW9uKAotICAgICAgICAgICAgICAgICAgICBzZWxmLlN1aXRlc0J5Q29uZmlndXJhdGlvbi5fX3Rh
YmxlX25hbWVfXywgY29uZmlndXJhdGlvbiwgc3VpdGU9c3VpdGUsIGJyYW5jaD1icmFuY2gsCi0g
ICAgICAgICAgICAgICAgICAgIHR0bD1pbnQoKHV1aWQgLy8gQ29tbWl0LlRJTUVTVEFNUF9UT19V
VUlEX01VTFRJUExJRVIpICsgc2VsZi50dGxfc2Vjb25kcyAtIHRpbWUudGltZSgpKSBpZiBzZWxm
LnR0bF9zZWNvbmRzIGVsc2UgTm9uZSwKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICAg
ICAgc2VsZi5jb25maWd1cmF0aW9uX2NvbnRleHQuaW5zZXJ0X3Jvd193aXRoX2NvbmZpZ3VyYXRp
b24oCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuVXBsb2Fkc0J5Q29uZmlndXJhdGlvbi5fX3Rh
YmxlX25hbWVfXywgY29uZmlndXJhdGlvbj1jb25maWd1cmF0aW9uLAotICAgICAgICAgICAgICAg
ICAgICBzdWl0ZT1zdWl0ZSwgYnJhbmNoPWJyYW5jaCwgdXVpZD11dWlkLCBzZGs9Y29uZmlndXJh
dGlvbi5zZGsgb3IgJz8nLCB0aW1lX3VwbG9hZGVkPXRpbWVzdGFtcCwKLSAgICAgICAgICAgICAg
ICAgICAgY29tbWl0cz1zZWxmLnRvX3ppcChqc29uLmR1bXBzKGNvbW1pdHMsIGNscz1Db21taXQu
RW5jb2RlcikpLAotICAgICAgICAgICAgICAgICAgICB0ZXN0X3Jlc3VsdHM9c2VsZi50b196aXAo
anNvbi5kdW1wcyh0ZXN0X3Jlc3VsdHMpKSwKLSAgICAgICAgICAgICAgICAgICAgdXBsb2FkX3Zl
cnNpb249dmVyc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgdHRsPWludCgodXVpZCAvLyBDb21t
aXQuVElNRVNUQU1QX1RPX1VVSURfTVVMVElQTElFUikgKyBzZWxmLnR0bF9zZWNvbmRzIC0gdGlt
ZS50aW1lKCkpIGlmIHNlbGYudHRsX3NlY29uZHMgZWxzZSBOb25lLAotICAgICAgICAgICAgICAg
ICkKLQotICAgIGRlZiBmaW5kX3Rlc3RfcmVzdWx0cyhzZWxmLCBjb25maWd1cmF0aW9ucywgc3Vp
dGUsIGJyYW5jaD1Ob25lLCBiZWdpbj1Ob25lLCBlbmQ9Tm9uZSwgcmVjZW50PVRydWUsIGxpbWl0
PTEwMCk6Ci0gICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHN1aXRlLCBzdHIpOgotICAgICAgICAg
ICAgcmFpc2UgVHlwZUVycm9yKGYnRXhwZWN0ZWQgdHlwZSB7c3RyfSwgZ290IHt0eXBlKHN1aXRl
KX0nKQotCi0gICAgICAgIHdpdGggc2VsZjoKLSAgICAgICAgICAgIHJlc3VsdCA9IHt9Ci0gICAg
ICAgICAgICBmb3IgY29uZmlndXJhdGlvbiBpbiBjb25maWd1cmF0aW9uczoKLSAgICAgICAgICAg
ICAgICAjIEZJWE1FOiBSZW1vdmUgdGhlIFVwbG9hZHNCeUNvbmZpZ3VyYXRpb25MZWdhY3kgb25j
ZSByZXN1bHRzIGluIGl0IGFyZSBzdWZmaWNlbnRseSBvbGQgaW4gU3ByaW5nIDIwMjEKLSAgICAg
ICAgICAgICAgICAjIFdlIGRvbid0IG5lZWQgdG8gaWdub3JlIGR1cGxpY2F0ZXMgYmVjYXVzZSB3
ZSBuZXZlciByZXBvcnRlZCB0byBib3RoIGRhdGFiYXNlcwotICAgICAgICAgICAgICAgIHJlc3Vs
dC51cGRhdGUoe2NvbmZpZzogW3ZhbHVlLnVucGFjaygpIGZvciB2YWx1ZSBpbiB2YWx1ZXNdIGZv
ciBjb25maWcsIHZhbHVlcyBpbiBzZWxmLmNvbmZpZ3VyYXRpb25fY29udGV4dC5zZWxlY3RfZnJv
bV90YWJsZV93aXRoX2NvbmZpZ3VyYXRpb25zKAotICAgICAgICAgICAgICAgICAgICBzZWxmLlVw
bG9hZHNCeUNvbmZpZ3VyYXRpb25MZWdhY3kuX190YWJsZV9uYW1lX18sIGNvbmZpZ3VyYXRpb25z
PVtjb25maWd1cmF0aW9uXSwgcmVjZW50PXJlY2VudCwKLSAgICAgICAgICAgICAgICAgICAgc3Vp
dGU9c3VpdGUsIHNkaz1jb25maWd1cmF0aW9uLnNkaywgYnJhbmNoPWJyYW5jaCBvciBzZWxmLmNv
bW1pdF9jb250ZXh0LkRFRkFVTFRfQlJBTkNIX0tFWSwKLSAgICAgICAgICAgICAgICAgICAgdXVp
ZF9fZ3RlPUNvbW1pdENvbnRleHQuY29udmVydF90b191dWlkKGJlZ2luKSwKLSAgICAgICAgICAg
ICAgICAgICAgdXVpZF9fbHRlPUNvbW1pdENvbnRleHQuY29udmVydF90b191dWlkKGVuZCwgQ29t
bWl0Q29udGV4dC50aW1lc3RhbXBfdG9fdXVpZCgpKSwgbGltaXQ9bGltaXQsCi0gICAgICAgICAg
ICAgICAgKS5pdGVtcygpfSkKLQotICAgICAgICAgICAgICAgIHJlc3VsdC51cGRhdGUoe2NvbmZp
ZzogW3ZhbHVlLnVucGFjaygpIGZvciB2YWx1ZSBpbiB2YWx1ZXNdIGZvciBjb25maWcsIHZhbHVl
cyBpbiBzZWxmLmNvbmZpZ3VyYXRpb25fY29udGV4dC5zZWxlY3RfZnJvbV90YWJsZV93aXRoX2Nv
bmZpZ3VyYXRpb25zKAotICAgICAgICAgICAgICAgICAgICBzZWxmLlVwbG9hZHNCeUNvbmZpZ3Vy
YXRpb24uX190YWJsZV9uYW1lX18sIGNvbmZpZ3VyYXRpb25zPVtjb25maWd1cmF0aW9uXSwgcmVj
ZW50PXJlY2VudCwKLSAgICAgICAgICAgICAgICAgICAgc3VpdGU9c3VpdGUsIHNkaz1jb25maWd1
cmF0aW9uLnNkaywgYnJhbmNoPWJyYW5jaCBvciBzZWxmLmNvbW1pdF9jb250ZXh0LkRFRkFVTFRf
QlJBTkNIX0tFWSwKLSAgICAgICAgICAgICAgICAgICAgdXVpZF9fZ3RlPUNvbW1pdENvbnRleHQu
Y29udmVydF90b191dWlkKGJlZ2luKSwKLSAgICAgICAgICAgICAgICAgICAgdXVpZF9fbHRlPUNv
bW1pdENvbnRleHQuY29udmVydF90b191dWlkKGVuZCwgQ29tbWl0Q29udGV4dC50aW1lc3RhbXBf
dG9fdXVpZCgpKSwgbGltaXQ9bGltaXQsCi0gICAgICAgICAgICAgICAgKS5pdGVtcygpfSkKLSAg
ICAgICAgICAgIHJldHVybiByZXN1bHQKLQotICAgIGRlZiBmaW5kX3N1aXRlcyhzZWxmLCBjb25m
aWd1cmF0aW9ucywgYnJhbmNoPU5vbmUsIHJlY2VudD1UcnVlLCBsaW1pdD0xMDApOgotICAgICAg
ICB3aXRoIHNlbGY6Ci0gICAgICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgICAgIGNvbmZp
ZzogW3Jvdy5zdWl0ZSBmb3Igcm93IGluIHJvd3NdIGZvciBjb25maWcsIHJvd3MgaW4gc2VsZi5j
b25maWd1cmF0aW9uX2NvbnRleHQuc2VsZWN0X2Zyb21fdGFibGVfd2l0aF9jb25maWd1cmF0aW9u
cygKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5TdWl0ZXNCeUNvbmZpZ3VyYXRpb24uX190YWJs
ZV9uYW1lX18sIGNvbmZpZ3VyYXRpb25zPWNvbmZpZ3VyYXRpb25zLCBicmFuY2g9YnJhbmNoLCBy
ZWNlbnQ9cmVjZW50LCBsaW1pdD1saW1pdCwKLSAgICAgICAgICAgICAgICApLml0ZW1zKCkKLSAg
ICAgICAgICAgIH0KLQotCi1jbGFzcyBVcGxvYWRDYWxsYmFja0NvbnRleHQob2JqZWN0KToKLSAg
ICBAY2xhc3NtZXRob2QKLSAgICBkZWYgcGFydGlhbF9zdGF0dXMoY2xzLCBleGNlcHRpb249Tm9u
ZSk6Ci0gICAgICAgIGlmIGV4Y2VwdGlvbjoKLSAgICAgICAgICAgIHJldHVybiBkaWN0KAotICAg
ICAgICAgICAgICAgIHN0YXR1cz0nZXJyb3InLAotICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9u
PXN0cihleGNlcHRpb24pLAotICAgICAgICAgICAgKQotICAgICAgICByZXR1cm4gZGljdChzdGF0
dXM9J29rJykKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBjb25maWd1cmF0aW9uX2Nv
bnRleHQsIGNvbW1pdF9jb250ZXh0LCB0dGxfc2Vjb25kcz1Ob25lKToKLSAgICAgICAgc2VsZi5u
YW1lID0gbmFtZQotICAgICAgICBzZWxmLmNvbmZpZ3VyYXRpb25fY29udGV4dCA9IGNvbmZpZ3Vy
YXRpb25fY29udGV4dAotICAgICAgICBzZWxmLmNvbW1pdF9jb250ZXh0ID0gY29tbWl0X2NvbnRl
eHQKLSAgICAgICAgc2VsZi5jYXNzYW5kcmEgPSBzZWxmLmNvbmZpZ3VyYXRpb25fY29udGV4dC5j
YXNzYW5kcmEKLSAgICAgICAgc2VsZi50dGxfc2Vjb25kcyA9IHR0bF9zZWNvbmRzCi0KLSAgICBk
ZWYgX19lbnRlcl9fKHNlbGYpOgotICAgICAgICBzZWxmLmNvbmZpZ3VyYXRpb25fY29udGV4dC5f
X2VudGVyX18oKQotICAgICAgICBzZWxmLmNvbW1pdF9jb250ZXh0Ll9fZW50ZXJfXygpCi0KLSAg
ICBkZWYgX19leGl0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKLSAgICAgICAgc2VsZi5jb21t
aXRfY29udGV4dC5fX2V4aXRfXygqYXJncywgKiprd2FyZ3MpCi0gICAgICAgIHNlbGYuY29uZmln
dXJhdGlvbl9jb250ZXh0Ll9fZXhpdF9fKCphcmdzLCAqKmt3YXJncykKLQotICAgIGRlZiByZWdp
c3RlcihzZWxmLCAqYXJncywgKiprd2FyZ3MpOgotICAgICAgICByZXR1cm4gZGljdChzdGF0dXM9
J2Vycm9yJywgZGVzY3JpcHRpb249ZidObyByZWdpc3RlciBpbXBsZW1lbnRlZCBmb3Ige3NlbGYu
bmFtZX0nKQpJbmRleDogVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvdXBsb2Fk
X2NvbnRleHRfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvcmVzdWx0c2RicHkvcmVz
dWx0c2RicHkvbW9kZWwvdXBsb2FkX2NvbnRleHRfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI2NTUz
MSkKKysrIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL3VwbG9hZF9jb250ZXh0
X3VuaXR0ZXN0LnB5CShub25leGlzdGVudCkKQEAgLTEsMTY4ICswLDAgQEAKLSMgQ29weXJpZ2h0
IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
IkFTIElTIiBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUgotIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0j
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSCi0jIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0jIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLWZyb20gZmFrZXJlZGlzIGltcG9ydCBGYWtlU3Ry
aWN0UmVkaXMKLWZyb20gcmVkaXMgaW1wb3J0IFN0cmljdFJlZGlzCi1mcm9tIHJlc3VsdHNkYnB5
LmNvbnRyb2xsZXIuY29uZmlndXJhdGlvbiBpbXBvcnQgQ29uZmlndXJhdGlvbgotZnJvbSByZXN1
bHRzZGJweS5tb2RlbC5jYXNzYW5kcmFfY29udGV4dCBpbXBvcnQgQ2Fzc2FuZHJhQ29udGV4dAot
ZnJvbSByZXN1bHRzZGJweS5tb2RlbC5tb2NrX2Nhc3NhbmRyYV9jb250ZXh0IGltcG9ydCBNb2Nr
Q2Fzc2FuZHJhQ29udGV4dAotZnJvbSByZXN1bHRzZGJweS5tb2RlbC5tb2NrX21vZGVsX2ZhY3Rv
cnkgaW1wb3J0IE1vY2tNb2RlbEZhY3RvcnkKLWZyb20gcmVzdWx0c2RicHkubW9kZWwudXBsb2Fk
X2NvbnRleHQgaW1wb3J0IFVwbG9hZENvbnRleHQKLWZyb20gcmVzdWx0c2RicHkubW9kZWwud2Fp
dF9mb3JfZG9ja2VyX3Rlc3RfY2FzZSBpbXBvcnQgV2FpdEZvckRvY2tlclRlc3RDYXNlCi0KLQot
Y2xhc3MgVXBsb2FkQ29udGV4dFRlc3QoV2FpdEZvckRvY2tlclRlc3RDYXNlKToKLSAgICBLRVlT
UEFDRSA9ICd1cGxvYWRfY29udGV4dF90ZXN0X2tleXNwYWNlJwotCi0gICAgZGVmIGluaXRfZGF0
YWJhc2Uoc2VsZiwgcmVkaXM9U3RyaWN0UmVkaXMsIGNhc3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0
LCBhc3luY19wcm9jZXNzaW5nPUZhbHNlKToKLSAgICAgICAgY2Fzc2FuZHJhLmRyb3Bfa2V5c3Bh
Y2Uoa2V5c3BhY2U9c2VsZi5LRVlTUEFDRSkKLSAgICAgICAgc2VsZi5tb2RlbCA9IE1vY2tNb2Rl
bEZhY3RvcnkuY3JlYXRlKAotICAgICAgICAgICAgcmVkaXM9cmVkaXMoKSwgY2Fzc2FuZHJhPWNh
c3NhbmRyYShrZXlzcGFjZT1zZWxmLktFWVNQQUNFLCBjcmVhdGVfa2V5c3BhY2U9VHJ1ZSksCi0g
ICAgICAgICAgICBhc3luY19wcm9jZXNzaW5nPWFzeW5jX3Byb2Nlc3NpbmcsCi0gICAgICAgICkK
LQotICAgIGRlZiB0ZXN0X3ppcHBpbmcoc2VsZik6Ci0gICAgICAgIHppcHBlZF9ieXRlcyA9IFVw
bG9hZENvbnRleHQudG9femlwKCdzb21lc3RyaW5nJyAqIDEwMCkKLSAgICAgICAgc2VsZi5hc3Nl
cnROb3RFcXVhbCh6aXBwZWRfYnl0ZXMsICdzb21lc3RyaW5nJyAqIDEwMCkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChVcGxvYWRDb250ZXh0LmZyb21femlwKHppcHBlZF9ieXRlcyksICdzb21l
c3RyaW5nJyAqIDEwMCkKLQotICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19k
b2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNz
YW5kcmFDb250ZXh0KQotICAgIGRlZiB0ZXN0X3N1aXRlX2xpc3Qoc2VsZiwgcmVkaXM9U3RyaWN0
UmVkaXMsIGNhc3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0KToKLSAgICAgICAgc2VsZi5pbml0X2Rh
dGFiYXNlKHJlZGlzPXJlZGlzLCBjYXNzYW5kcmE9Y2Fzc2FuZHJhKQotCi0gICAgICAgIE1vY2tN
b2RlbEZhY3RvcnkuYWRkX21vY2tfcmVzdWx0cyhzZWxmLm1vZGVsKQotICAgICAgICBmb3Igc3Vp
dGVzIGluIHNlbGYubW9kZWwudXBsb2FkX2NvbnRleHQuZmluZF9zdWl0ZXMoY29uZmlndXJhdGlv
bnM9W0NvbmZpZ3VyYXRpb24oKV0sIHJlY2VudD1UcnVlKS52YWx1ZXMoKToKLSAgICAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoc3VpdGVzLCBbJ2xheW91dC10ZXN0cyddKQotCi0gICAgICAgIE1v
Y2tNb2RlbEZhY3RvcnkuYWRkX21vY2tfcmVzdWx0cyhzZWxmLm1vZGVsLCBzdWl0ZT0nYXBpX3Rl
c3RzJykKLSAgICAgICAgZm9yIHN1aXRlcyBpbiBzZWxmLm1vZGVsLnVwbG9hZF9jb250ZXh0LmZp
bmRfc3VpdGVzKGNvbmZpZ3VyYXRpb25zPVtDb25maWd1cmF0aW9uKCldLCByZWNlbnQ9VHJ1ZSku
dmFsdWVzKCk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1aXRlcywgWydhcGlfdGVz
dHMnLCAnbGF5b3V0LXRlc3RzJ10pCi0KLSAgICAgICAgTW9ja01vZGVsRmFjdG9yeS5hZGRfbW9j
a19yZXN1bHRzKHNlbGYubW9kZWwsIGNvbmZpZ3VyYXRpb249Q29uZmlndXJhdGlvbihpc19zaW11
bGF0b3I9VHJ1ZSksIHN1aXRlPSd3ZWJraXRweScpCi0gICAgICAgIGZvciBzdWl0ZXMgaW4gc2Vs
Zi5tb2RlbC51cGxvYWRfY29udGV4dC5maW5kX3N1aXRlcyhjb25maWd1cmF0aW9ucz1bQ29uZmln
dXJhdGlvbihpc19zaW11bGF0b3I9VHJ1ZSldLCByZWNlbnQ9VHJ1ZSkudmFsdWVzKCk6Ci0gICAg
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1aXRlcywgWydhcGlfdGVzdHMnLCAnbGF5b3V0LXRl
c3RzJywgJ3dlYmtpdHB5J10pCi0gICAgICAgIGZvciBzdWl0ZXMgaW4gc2VsZi5tb2RlbC51cGxv
YWRfY29udGV4dC5maW5kX3N1aXRlcyhjb25maWd1cmF0aW9ucz1bQ29uZmlndXJhdGlvbihpc19z
aW11bGF0b3I9RmFsc2UpXSwgcmVjZW50PVRydWUpLnZhbHVlcygpOgotICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChzdWl0ZXMsIFsnYXBpX3Rlc3RzJywgJ2xheW91dC10ZXN0cyddKQotCi0g
ICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZh
a2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCi0gICAg
ZGVmIHRlc3RfcmVzdWx0X3JldHJpZXZhbChzZWxmLCByZWRpcz1TdHJpY3RSZWRpcywgY2Fzc2Fu
ZHJhPUNhc3NhbmRyYUNvbnRleHQpOgotICAgICAgICBzZWxmLmluaXRfZGF0YWJhc2UocmVkaXM9
cmVkaXMsIGNhc3NhbmRyYT1jYXNzYW5kcmEpCi0gICAgICAgIE1vY2tNb2RlbEZhY3RvcnkuYWRk
X21vY2tfcmVzdWx0cyhzZWxmLm1vZGVsKQotCi0gICAgICAgIHJlc3VsdHMgPSBzZWxmLm1vZGVs
LnVwbG9hZF9jb250ZXh0LmZpbmRfdGVzdF9yZXN1bHRzKGNvbmZpZ3VyYXRpb25zPVtDb25maWd1
cmF0aW9uKHBsYXRmb3JtPSdNYWMnKV0sIHN1aXRlPSdsYXlvdXQtdGVzdHMnLCByZWNlbnQ9VHJ1
ZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg2LCBsZW4ocmVzdWx0cykpCi0gICAgICAgIGZv
ciBjb25maWcsIHZhbHVlcyBpbiByZXN1bHRzLml0ZW1zKCk6Ci0gICAgICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGNvbmZpZywgQ29uZmlndXJhdGlvbihwbGF0Zm9ybT0nTWFjJykpCi0gICAgICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKDUsIGxlbih2YWx1ZXMpKQotICAgICAgICAgICAgZm9yIHZh
bHVlIGluIHZhbHVlczoKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhbHVlWyd0
ZXN0X3Jlc3VsdHMnXSwgTW9ja01vZGVsRmFjdG9yeS5sYXlvdXRfdGVzdF9yZXN1bHRzKCkpCi0K
LSAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9
RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKLSAg
ICBkZWYgdGVzdF9yZXN1bHRfcmV0cmlldmFsX2xpbWl0KHNlbGYsIHJlZGlzPVN0cmljdFJlZGlz
LCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCk6Ci0gICAgICAgIHNlbGYuaW5pdF9kYXRhYmFz
ZShyZWRpcz1yZWRpcywgY2Fzc2FuZHJhPWNhc3NhbmRyYSkKLSAgICAgICAgTW9ja01vZGVsRmFj
dG9yeS5hZGRfbW9ja19yZXN1bHRzKHNlbGYubW9kZWwpCi0KLSAgICAgICAgcmVzdWx0cyA9IHNl
bGYubW9kZWwudXBsb2FkX2NvbnRleHQuZmluZF90ZXN0X3Jlc3VsdHMoY29uZmlndXJhdGlvbnM9
W0NvbmZpZ3VyYXRpb24ocGxhdGZvcm09J01hYycpXSwgc3VpdGU9J2xheW91dC10ZXN0cycsIGxp
bWl0PTIsIHJlY2VudD1UcnVlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1bShbbGVuKHZh
bHVlKSBmb3IgdmFsdWUgaW4gcmVzdWx0cy52YWx1ZXMoKV0pLCAxMikKLQotICAgIEBXYWl0Rm9y
RG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVk
aXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQotICAgIGRlZiB0ZXN0X3Jl
c3VsdF9yZXRyaWV2YWxfYnJhbmNoKHNlbGYsIHJlZGlzPVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9
Q2Fzc2FuZHJhQ29udGV4dCk6Ci0gICAgICAgIHNlbGYuaW5pdF9kYXRhYmFzZShyZWRpcz1yZWRp
cywgY2Fzc2FuZHJhPWNhc3NhbmRyYSkKLSAgICAgICAgTW9ja01vZGVsRmFjdG9yeS5hZGRfbW9j
a19yZXN1bHRzKHNlbGYubW9kZWwpCi0KLSAgICAgICAgcmVzdWx0cyA9IHNlbGYubW9kZWwudXBs
b2FkX2NvbnRleHQuZmluZF90ZXN0X3Jlc3VsdHMoY29uZmlndXJhdGlvbnM9W0NvbmZpZ3VyYXRp
b24ocGxhdGZvcm09J2lPUycsIGlzX3NpbXVsYXRvcj1UcnVlKV0sIHN1aXRlPSdsYXlvdXQtdGVz
dHMnLCBicmFuY2g9J3NhZmFyaS02MDYtYnJhbmNoJywgcmVjZW50PVRydWUpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoMywgbGVuKHJlc3VsdHMpKQotICAgICAgICBmb3IgY29uZmlnLCB2YWx1
ZXMgaW4gcmVzdWx0cy5pdGVtcygpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb25m
aWcsIENvbmZpZ3VyYXRpb24ocGxhdGZvcm09J2lPUycsIGlzX3NpbXVsYXRvcj1UcnVlKSkKLSAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMiwgbGVuKHZhbHVlcykpCi0gICAgICAgICAgICBm
b3IgdmFsdWUgaW4gdmFsdWVzOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFs
dWVbJ3Rlc3RfcmVzdWx0cyddLCBNb2NrTW9kZWxGYWN0b3J5LmxheW91dF90ZXN0X3Jlc3VsdHMo
KSkKLQotICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19y
ZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0
KQotICAgIGRlZiB0ZXN0X3Jlc3VsdF9yZXRyaWV2YWxfYnlfc2RrKHNlbGYsIHJlZGlzPVN0cmlj
dFJlZGlzLCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCk6Ci0gICAgICAgIHNlbGYuaW5pdF9k
YXRhYmFzZShyZWRpcz1yZWRpcywgY2Fzc2FuZHJhPWNhc3NhbmRyYSkKLSAgICAgICAgTW9ja01v
ZGVsRmFjdG9yeS5hZGRfbW9ja19yZXN1bHRzKHNlbGYubW9kZWwpCi0KLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgwLCBsZW4oc2VsZi5tb2RlbC51cGxvYWRfY29udGV4dC5maW5kX3Rlc3RfcmVz
dWx0cyhjb25maWd1cmF0aW9ucz1bQ29uZmlndXJhdGlvbihwbGF0Zm9ybT0naU9TJywgc2RrPScx
NUE0MzInKV0sIHN1aXRlPSdsYXlvdXQtdGVzdHMnLCByZWNlbnQ9VHJ1ZSkpKQotICAgICAgICBy
ZXN1bHRzID0gc2VsZi5tb2RlbC51cGxvYWRfY29udGV4dC5maW5kX3Rlc3RfcmVzdWx0cyhjb25m
aWd1cmF0aW9ucz1bQ29uZmlndXJhdGlvbihwbGF0Zm9ybT0naU9TJywgc2RrPScxNUE0MzInKV0s
IHN1aXRlPSdsYXlvdXQtdGVzdHMnLCByZWNlbnQ9RmFsc2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoNiwgbGVuKHJlc3VsdHMpKQotICAgICAgICBmb3IgY29uZmlnLCB2YWx1ZXMgaW4gcmVz
dWx0cy5pdGVtcygpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb25maWcudmVyc2lv
biwgMTEwMDAwMDApCi0gICAgICAgICAgICBmb3IgdmFsdWUgaW4gdmFsdWVzOgotICAgICAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsdWVbJ3NkayddLCAnMTVBNDMyJykKLSAgICAgICAg
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhbHVlWyd0ZXN0X3Jlc3VsdHMnXSwgTW9ja01vZGVs
RmFjdG9yeS5sYXlvdXRfdGVzdF9yZXN1bHRzKCkpCi0KLSAgICBAV2FpdEZvckRvY2tlclRlc3RD
YXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nh
c3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKLSAgICBkZWYgdGVzdF9zZGtfZGlmZmVyZW50
aWF0aW9uKHNlbGYsIHJlZGlzPVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4
dCk6Ci0gICAgICAgIHNlbGYuaW5pdF9kYXRhYmFzZShyZWRpcz1yZWRpcywgY2Fzc2FuZHJhPWNh
c3NhbmRyYSkKLSAgICAgICAgTW9ja01vZGVsRmFjdG9yeS5hZGRfbW9ja19yZXN1bHRzKHNlbGYu
bW9kZWwpCi0KLSAgICAgICAgY29uZmlndXJhdGlvbl90b19zZWFyY2ggPSBDb25maWd1cmF0aW9u
KHBsYXRmb3JtPSdpT1MnLCB2ZXJzaW9uPScxMi4wLjAnLCBpc19zaW11bGF0b3I9VHJ1ZSwgc3R5
bGU9J0FzYW4nKQotICAgICAgICByZXN1bHRzID0gc2VsZi5tb2RlbC51cGxvYWRfY29udGV4dC5m
aW5kX3Rlc3RfcmVzdWx0cyhjb25maWd1cmF0aW9ucz1bY29uZmlndXJhdGlvbl90b19zZWFyY2hd
LCBzdWl0ZT0nbGF5b3V0LXRlc3RzJywgcmVjZW50PUZhbHNlKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKDEsIGxlbihyZXN1bHRzKSkKLQotICAgICAgICBNb2NrTW9kZWxGYWN0b3J5LmFkZF9t
b2NrX3Jlc3VsdHMoc2VsZi5tb2RlbCwgY29uZmlndXJhdGlvbj1Db25maWd1cmF0aW9uKAotICAg
ICAgICAgICAgcGxhdGZvcm09J2lPUycsIHZlcnNpb249JzEyLjAuMCcsIHNkaz0nMTZBNDA1Jywg
aXNfc2ltdWxhdG9yPVRydWUsIGFyY2hpdGVjdHVyZT0neDg2XzY0Jywgc3R5bGU9J0FzYW4nLAot
ICAgICAgICApKQotCi0gICAgICAgIHJlc3VsdHMgPSBzZWxmLm1vZGVsLnVwbG9hZF9jb250ZXh0
LmZpbmRfdGVzdF9yZXN1bHRzKGNvbmZpZ3VyYXRpb25zPVtjb25maWd1cmF0aW9uX3RvX3NlYXJj
aF0sIHN1aXRlPSdsYXlvdXQtdGVzdHMnLCByZWNlbnQ9RmFsc2UpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoMiwgbGVuKHJlc3VsdHMpKQotICAgICAgICByZXN1bHRzID0gc2VsZi5tb2RlbC51
cGxvYWRfY29udGV4dC5maW5kX3Rlc3RfcmVzdWx0cyhjb25maWd1cmF0aW9ucz1bQ29uZmlndXJh
dGlvbihwbGF0Zm9ybT0naU9TJywgc2RrPScxNkE0MDUnKV0sIHN1aXRlPSdsYXlvdXQtdGVzdHMn
LCByZWNlbnQ9RmFsc2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKHJlc3VsdHMp
KQotCi0gICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3Jl
ZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQp
Ci0gICAgZGVmIHRlc3RfY2FsbGJhY2soc2VsZiwgcmVkaXM9U3RyaWN0UmVkaXMsIGNhc3NhbmRy
YT1DYXNzYW5kcmFDb250ZXh0KToKLSAgICAgICAgc2VsZi5pbml0X2RhdGFiYXNlKHJlZGlzPXJl
ZGlzLCBjYXNzYW5kcmE9Y2Fzc2FuZHJhKQotICAgICAgICBNb2NrTW9kZWxGYWN0b3J5LmFkZF9t
b2NrX3Jlc3VsdHMoc2VsZi5tb2RlbCkKLQotICAgICAgICBjb25maWd1cmF0aW9uX3RvX3NlYXJj
aCA9IENvbmZpZ3VyYXRpb24ocGxhdGZvcm09J2lPUycsIHZlcnNpb249JzEyLjAuMCcsIGlzX3Np
bXVsYXRvcj1UcnVlLCBzdHlsZT0nQXNhbicpCi0gICAgICAgIGNvbmZpZ3VyYXRpb24sIHVwbG9h
ZHMgPSBuZXh0KGl0ZXIoc2VsZi5tb2RlbC51cGxvYWRfY29udGV4dC5maW5kX3Rlc3RfcmVzdWx0
cyhjb25maWd1cmF0aW9ucz1bY29uZmlndXJhdGlvbl90b19zZWFyY2hdLCBzdWl0ZT0nbGF5b3V0
LXRlc3RzJywgcmVjZW50PUZhbHNlKS5pdGVtcygpKSkKLSAgICAgICAgc2VsZi5tb2RlbC51cGxv
YWRfY29udGV4dC5wcm9jZXNzX3Rlc3RfcmVzdWx0cygKLSAgICAgICAgICAgIGNvbmZpZ3VyYXRp
b249Y29uZmlndXJhdGlvbiwKLSAgICAgICAgICAgIGNvbW1pdHM9dXBsb2Fkc1swXVsnY29tbWl0
cyddLAotICAgICAgICAgICAgc3VpdGU9J2xheW91dC10ZXN0cycsCi0gICAgICAgICAgICB0ZXN0
X3Jlc3VsdHM9dXBsb2Fkc1swXVsndGVzdF9yZXN1bHRzJ10sCi0gICAgICAgICAgICB0aW1lc3Rh
bXA9dXBsb2Fkc1swXVsndGltZXN0YW1wJ10sCi0gICAgICAgICkKLQotICAgICAgICAjIFVzaW5n
IHN1aXRlIHJlc3VsdHMgYXMgYSBwcm94eSB0byB0ZWxsIGlmIGNhbGxiYWNrcyB3ZXJlIHRyaWdn
ZXJlZAotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihzZWxmLm1vZGVsLnN1aXRlX2Nv
bnRleHQuZmluZF9ieV9jb21taXQoY29uZmlndXJhdGlvbnM9W0NvbmZpZ3VyYXRpb24oKV0sIHN1
aXRlPSdsYXlvdXQtdGVzdHMnKSkpCi0KLSAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tf
aWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1N
b2NrQ2Fzc2FuZHJhQ29udGV4dCkKLSAgICBkZWYgdGVzdF9hc3luY19jYWxsYmFjayhzZWxmLCBy
ZWRpcz1TdHJpY3RSZWRpcywgY2Fzc2FuZHJhPUNhc3NhbmRyYUNvbnRleHQpOgotICAgICAgICBz
ZWxmLmluaXRfZGF0YWJhc2UocmVkaXM9cmVkaXMsIGNhc3NhbmRyYT1jYXNzYW5kcmEsIGFzeW5j
X3Byb2Nlc3Npbmc9VHJ1ZSkKLSAgICAgICAgTW9ja01vZGVsRmFjdG9yeS5hZGRfbW9ja19yZXN1
bHRzKHNlbGYubW9kZWwpCi0KLSAgICAgICAgY29uZmlndXJhdGlvbl90b19zZWFyY2ggPSBDb25m
aWd1cmF0aW9uKHBsYXRmb3JtPSdpT1MnLCB2ZXJzaW9uPScxMi4wLjAnLCBpc19zaW11bGF0b3I9
VHJ1ZSwgc3R5bGU9J0FzYW4nKQotICAgICAgICBjb25maWd1cmF0aW9uLCB1cGxvYWRzID0gbmV4
dChpdGVyKHNlbGYubW9kZWwudXBsb2FkX2NvbnRleHQuZmluZF90ZXN0X3Jlc3VsdHMoY29uZmln
dXJhdGlvbnM9W2NvbmZpZ3VyYXRpb25fdG9fc2VhcmNoXSwgc3VpdGU9J2xheW91dC10ZXN0cycs
IHJlY2VudD1GYWxzZSkuaXRlbXMoKSkpCi0gICAgICAgIHNlbGYubW9kZWwudXBsb2FkX2NvbnRl
eHQucHJvY2Vzc190ZXN0X3Jlc3VsdHMoCi0gICAgICAgICAgICBjb25maWd1cmF0aW9uPWNvbmZp
Z3VyYXRpb24sCi0gICAgICAgICAgICBjb21taXRzPXVwbG9hZHNbMF1bJ2NvbW1pdHMnXSwKLSAg
ICAgICAgICAgIHN1aXRlPSdsYXlvdXQtdGVzdHMnLAotICAgICAgICAgICAgdGVzdF9yZXN1bHRz
PXVwbG9hZHNbMF1bJ3Rlc3RfcmVzdWx0cyddLAotICAgICAgICAgICAgdGltZXN0YW1wPXVwbG9h
ZHNbMF1bJ3RpbWVzdGFtcCddLAotICAgICAgICApCi0KLSAgICAgICAgIyBVc2luZyBzdWl0ZSBy
ZXN1bHRzIGFzIGEgcHJveHkgdG8gdGVsbCBpZiBjYWxsYmFja3Mgd2VyZSB0cmlnZ2VyZWQKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBsZW4oc2VsZi5tb2RlbC5zdWl0ZV9jb250ZXh0LmZp
bmRfYnlfY29tbWl0KGNvbmZpZ3VyYXRpb25zPVtDb25maWd1cmF0aW9uKCldLCBzdWl0ZT0nbGF5
b3V0LXRlc3RzJykpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5tb2RlbC51cGxvYWRf
Y29udGV4dC5kb19wcm9jZXNzaW5nX3dvcmsoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgx
LCBsZW4oc2VsZi5tb2RlbC5zdWl0ZV9jb250ZXh0LmZpbmRfYnlfY29tbWl0KGNvbmZpZ3VyYXRp
b25zPVtDb25maWd1cmF0aW9uKCldLCBzdWl0ZT0nbGF5b3V0LXRlc3RzJykpKQpJbmRleDogVG9v
bHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvd2FpdF9mb3JfZG9ja2VyX3Rlc3RfY2Fz
ZS5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC93
YWl0X2Zvcl9kb2NrZXJfdGVzdF9jYXNlLnB5CShyZXZpc2lvbiAyNjU1MzEpCisrKyBUb29scy9y
ZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC93YWl0X2Zvcl9kb2NrZXJfdGVzdF9jYXNlLnB5
CShub25leGlzdGVudCkKQEAgLTEsNzUgKzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0jIGFyZSBtZXQ6Ci0jIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMg
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAot
IyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SCi0jIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSMgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIKLSMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMg
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLQotaW1wb3J0IG9zCi1pbXBvcnQgc3lzCi1pbXBvcnQgdW5pdHRlc3QKLQot
ZnJvbSBmYWtlcmVkaXMgaW1wb3J0IEZha2VTdHJpY3RSZWRpcwotZnJvbSByZWRpcyBpbXBvcnQg
U3RyaWN0UmVkaXMKLWZyb20gcmVzdWx0c2RicHkubW9kZWwuZG9ja2VyIGltcG9ydCBEb2NrZXIK
LQotCi1jbGFzcyBXYWl0Rm9yRG9ja2VyVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgotCi0g
ICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICBpZiBEb2NrZXIuaXNfcnVubmluZygpIGFuZCBp
bnQob3MuZW52aXJvbi5nZXQoJ3Nsb3dfdGVzdHMnLCAnMCcpKToKLSAgICAgICAgICAgIHdpdGgg
RG9ja2VyLmluc3RhbmNlKCk6Ci0gICAgICAgICAgICAgICAgU3RyaWN0UmVkaXMoKS5mbHVzaGRi
KCkKLSAgICAgICAgRmFrZVN0cmljdFJlZGlzKCkuZmx1c2hkYigpCi0KLSAgICBAY2xhc3NtZXRo
b2QKLSAgICBkZWYgY29tYmluZShjbHMsICphcmdzKToKLSAgICAgICAgZGVmIGRlY29yYXRvcihm
dW5jKToKLSAgICAgICAgICAgIGZvciBlbG0gaW4gcmV2ZXJzZWQoYXJncyk6Ci0gICAgICAgICAg
ICAgICAgZnVuYyA9IGVsbShmdW5jKQotICAgICAgICAgICAgcmV0dXJuIGZ1bmMKLQotICAgICAg
ICByZXR1cm4gZGVjb3JhdG9yCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgcnVuX2lmX3Ns
b3coY2xzKToKLSAgICAgICAgcmV0dXJuIHVuaXR0ZXN0LnNraXBJZihub3QgaW50KG9zLmVudmly
b24uZ2V0KCdzbG93X3Rlc3RzJywgJzAnKSksICdTbG93IHRlc3RzIGRpc2FibGVkJykKLQotICAg
IEBjbGFzc21ldGhvZAotICAgIGRlZiBydW5faWZfaGFzX2RvY2tlcihjbHMpOgotICAgICAgICBy
ZXR1cm4gY2xzLmNvbWJpbmUoY2xzLnJ1bl9pZl9zbG93KCksIHVuaXR0ZXN0LnNraXBJZihub3Qg
RG9ja2VyLmluc3RhbGxlZCgpLCAnRG9ja2VyIG5vdCBpbnN0YWxsZWQnKSkKLQotICAgIEBjbGFz
c21ldGhvZAotICAgIGRlZiBtb2NrX2lmX25vX2RvY2tlcihjbHMsICoqa3dhcmdzKToKLSAgICAg
ICAgbW9ja19hcmdzID0ge30KLSAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4ga3dhcmdzLml0ZW1z
KCk6Ci0gICAgICAgICAgICBpZiBub3Qga2V5LnN0YXJ0c3dpdGgoJ21vY2tfJyk6Ci0gICAgICAg
ICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCd7fSBkb2VzIG5vdCBzdGFydCB3aXRoIFwnbW9ja19c
JyBhbmQgaXMgYW4gaW52YWxpZCBhcmd1bWVudCcpCi0gICAgICAgICAgICBtb2NrX2FyZ3Nba2V5
W2xlbignbW9ja18nKTpdXSA9IHZhbHVlCi0KLSAgICAgICAgZGVmIGRlY29yYXRvcihtZXRob2Qs
IG1vY2tfYXJncz1tb2NrX2FyZ3MpOgotICAgICAgICAgICAgIyBVc2UgZnJhbWUgaW50cm9zcGVj
dGlvbiB0byBjcmVhdGUgYSBtZXRob2QgaW4gdGhlIGNvbnRhaW5pbmcgZnJhbWUuCi0gICAgICAg
ICAgICBmcmFtZSA9IHN5cy5fZ2V0ZnJhbWUoMSkgICMgcHlsaW50OiBkaXNhYmxlLW1zZz1XMDIx
MgotICAgICAgICAgICAgZnJhbWUuZl9sb2NhbHNbbWV0aG9kLl9fbmFtZV9fICsgJ19tb2NrJ10g
PSBsYW1iZGEgdmFsOiBtZXRob2QodmFsLCAqKm1vY2tfYXJncykKLQotICAgICAgICAgICAgZGVm
IHJlYWxfbWV0aG9kKHZhbCwgbWV0aG9kPW1ldGhvZCk6Ci0gICAgICAgICAgICAgICAgd2l0aCBE
b2NrZXIuaW5zdGFuY2UoKToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1ldGhvZCh2YWwp
Ci0gICAgICAgICAgICByZXR1cm4gY2xzLnJ1bl9pZl9oYXNfZG9ja2VyKCkocmVhbF9tZXRob2Qp
Ci0KLSAgICAgICAgcmV0dXJuIGRlY29yYXRvcgpJbmRleDogVG9vbHMvcmVzdWx0c2RicHkvcmVz
dWx0c2RicHkvcnVuCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5
L3J1bgkocmV2aXNpb24gMjY1NTMxKQorKysgVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkv
cnVuCShub25leGlzdGVudCkKQEAgLTEsMTczICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhv
bjMKLQotIyBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
IyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0jIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IKLSMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSMgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwKLSMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotaW1wb3J0IGFyZ3Bh
cnNlCi1pbXBvcnQgb3MKLWltcG9ydCBzdWJwcm9jZXNzCi1pbXBvcnQgc3lzCi1pbXBvcnQgdGlt
ZQotaW1wb3J0IHRocmVhZGluZwotCi1zeXMuZG9udF93cml0ZV9ieXRlY29kZSA9IFRydWUKLQot
ZnJvbSBtb2RlbC5kb2NrZXIgaW1wb3J0IERvY2tlcgotZnJvbSBtdWx0aXByb2Nlc3NpbmcgaW1w
b3J0IFByb2Nlc3MKLWZyb20gcmVkaXMgaW1wb3J0IFN0cmljdFJlZGlzCi0KLQotY2xhc3MgRG9j
a2VySWZOZWVkZWRDb250ZXh0KG9iamVjdCk6Ci0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgYXJn
cyk6Ci0gICAgICAgIHNlbGYuZG9ja2VyID0gRG9ja2VyLmluc3RhbmNlKCkgaWYgJ2xvY2FsaG9z
dCcgaW4gW2FyZ3MuY2Fzc2FuZHJhX3NlcnZlciwgYXJncy5yZWRpc19zZXJ2ZXJdIGVsc2UgTm9u
ZQotCi0gICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKLSAgICAgICAgaWYgc2VsZi5kb2NrZXI6Ci0g
ICAgICAgICAgICBzZWxmLmRvY2tlci5fX2VudGVyX18oKQotCi0gICAgZGVmIF9fZXhpdF9fKHNl
bGYsICphcmdzLCAqKmt3YXJncyk6Ci0gICAgICAgIGlmIHNlbGYuZG9ja2VyOgotICAgICAgICAg
ICAgc2VsZi5kb2NrZXIuX19leGl0X18oKmFyZ3MsICoqa3dhcmdzKQotCi0KLWRlZiBoYXNfZ3Vu
aWNvcm4oKToKLSAgICByZXR1cm4gbm90IHN1YnByb2Nlc3MucnVuKFsncHl0aG9uMycsICcvdXNy
L2xvY2FsL2Jpbi9ndW5pY29ybnMnLCAnLS12ZXJzaW9uJ10sIGNhcHR1cmVfb3V0cHV0PVRydWUp
LnJldHVybmNvZGUKLQotCi1kZWYgcGFyc2VfYXJndW1lbnRzKCk6Ci0gICAgcGFyc2VyID0gYXJn
cGFyc2UuQXJndW1lbnRQYXJzZXIoZGVzY3JpcHRpb249J1J1biBhIHNpbXBsZSBpbnN0YW5jZSBv
ZiB0aGUgcmVzdWx0cyBkYXRhYmFzZSBmb3IgbG9jYWwgZGV2ZWxvcG1lbnQnKQotICAgIHBhcnNl
ci5hZGRfYXJndW1lbnQoCi0gICAgICAgICctLWxvY2FsLWNhc3NhbmRyYScsIGhlbHA9J1VzZSBh
IGxvY2FsIENhc3NhbmRyYSBpbnN0YW5jZScsCi0gICAgICAgIGRlc3Q9J2Nhc3NhbmRyYV9zZXJ2
ZXInLCBhY3Rpb249J3N0b3JlX2NvbnN0JywgY29uc3Q9J2xvY2FsaG9zdCcsCi0gICAgKQotICAg
IHBhcnNlci5hZGRfYXJndW1lbnQoCi0gICAgICAgICctLW1vY2stY2Fzc2FuZHJhJywgaGVscD0n
VXNlIGEgbW9jayBDYXNzYW5kcmEgaW5zdGFuY2UnLAotICAgICAgICBkZXN0PSdjYXNzYW5kcmFf
c2VydmVyJywgYWN0aW9uPSdzdG9yZV9jb25zdCcsIGNvbnN0PSdtb2NrJywKLSAgICApCi0gICAg
cGFyc2VyLnNldF9kZWZhdWx0cyhjYXNzYW5kcmFfc2VydmVyPSdsb2NhbGhvc3QnIGlmIERvY2tl
ci5pbnN0YWxsZWQoKSBlbHNlICdtb2NrJykKLQotICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCi0g
ICAgICAgICctLWxvY2FsLXJlZGlzJywgaGVscD0nVXNlIGEgbG9jYWwgUmVkaXMgaW5zdGFuY2Un
LAotICAgICAgICBkZXN0PSdyZWRpc19zZXJ2ZXInLCBhY3Rpb249J3N0b3JlX2NvbnN0JywgY29u
c3Q9J2xvY2FsaG9zdCcsCi0gICAgKQotICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCi0gICAgICAg
ICctLW1vY2stcmVkaXMnLCBoZWxwPSdVc2UgYSBtb2NrIFJlZGlzIGluc3RhbmNlJywKLSAgICAg
ICAgZGVzdD0ncmVkaXNfc2VydmVyJywgYWN0aW9uPSdzdG9yZV9jb25zdCcsIGNvbnN0PSdtb2Nr
JywKLSAgICApCi0gICAgcGFyc2VyLnNldF9kZWZhdWx0cyhyZWRpc19zZXJ2ZXI9J2xvY2FsaG9z
dCcgaWYgRG9ja2VyLmluc3RhbGxlZCgpIGVsc2UgJ21vY2snKQotCi0gICAgcGFyc2VyLmFkZF9h
cmd1bWVudCgKLSAgICAgICAgJy0tZHJvcC1rZXlzcGFjZScsIGhlbHA9J0Ryb3AgdGhlIGV4aXN0
aW5nIGtleXNwYWNlIGJlZm9yZSBydW5uaW5nIHRoZSBwcm9ncmFtJywKLSAgICAgICAgZGVzdD0n
ZHJvcF9rZXlzcGFjZScsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCi0gICAgKQotICAgIHBhcnNlci5h
ZGRfYXJndW1lbnQoCi0gICAgICAgICctLW5vLWRyb3Ata2V5c3BhY2UnLCBoZWxwPSdEbyBOT1Qg
ZHJvcCB0aGUgZXhpc3Rpbmcga2V5c3BhY2UgYmVmb3JlIHJ1bm5pbmcgdGhlIHByb2dyYW0nLAot
ICAgICAgICBkZXN0PSdkcm9wX2tleXNwYWNlJywgYWN0aW9uPSdzdG9yZV9mYWxzZScsCi0gICAg
KQotICAgIHBhcnNlci5zZXRfZGVmYXVsdHMoZHJvcF9rZXlzcGFjZT1GYWxzZSkKLQotICAgIHBh
cnNlci5hZGRfYXJndW1lbnQoCi0gICAgICAgICctLWNsZWFyLXJlZGlzJywgaGVscD0nQ2xlYXIg
cmVkaXMgYmVmb3JlIHJ1bm5pbmcgdGhlIGFwcGxpY2F0aW9uJywKLSAgICAgICAgZGVzdD0nY2xl
YXJfcmVkaXMnLCBhY3Rpb249J3N0b3JlX3RydWUnLAotICAgICkKLSAgICBwYXJzZXIuYWRkX2Fy
Z3VtZW50KAotICAgICAgICAnLS1uby1jbGVhci1yZWRpcycsCi0gICAgICAgIGhlbHA9J0RvIG5v
dCBjbGVhciByZWRpcyBiZWZvcmUgcnVubmluZyB0aGUgYXBwbGljYXRpb24nLAotICAgICAgICBk
ZXN0PSdjbGVhcl9yZWRpcycsIGFjdGlvbj0nc3RvcmVfZmFsc2UnLAotICAgICkKLSAgICBwYXJz
ZXIuc2V0X2RlZmF1bHRzKGNsZWFyX3JlZGlzPVRydWUpCi0KLSAgICBwYXJzZXIuYWRkX2FyZ3Vt
ZW50KAotICAgICAgICAnLS1ndW5pY29ybicsIGhlbHA9J1VzZSB0aGUgZ3VuaWNvcm4gd2Vic2Vy
dmVyJywKLSAgICAgICAgZGVzdD0nZ3VuaWNvcm4nLCBhY3Rpb249J3N0b3JlX3RydWUnLAotICAg
ICkKLSAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAotICAgICAgICAnLS1uby1ndW5pY29ybicsCi0g
ICAgICAgIGhlbHA9J0RvIG5vdCB1c2UgdGhlIGd1bmljb3JuIHdlYnNlcnZlcicsCi0gICAgICAg
IGRlc3Q9J2d1bmljb3JuJywgYWN0aW9uPSdzdG9yZV9mYWxzZScsCi0gICAgKQotICAgIHBhcnNl
ci5zZXRfZGVmYXVsdHMoZ3VuaWNvcm49aGFzX2d1bmljb3JuKCkpCi0KLSAgICByZXR1cm4gcGFy
c2VyLnBhcnNlX2FyZ3MoKQotCi0KLWRlZiBkb193b3JrKCk6Ci0gICAgZnJvbSBleGFtcGxlLndv
cmtlciBpbXBvcnQgbWFpbgotICAgIG1haW4oKQotCi0KLWRlZiB3ZWJfYXBwKCk6Ci0gICAgZnJv
bSBleGFtcGxlLm1haW4gaW1wb3J0IG1haW4KLSAgICByZXR1cm4gbWFpbigpCi0KLQotZGVmIGd1
bmljb3JuKCk6Ci0gICAgaWYgbm90IGhhc19ndW5pY29ybigpOgotICAgICAgICBwcmludCgnZ3Vu
aWNvcm4gaXMgbm90IGluc3RhbGxlZCwgcGxlYXNlIHJ1biBgcGlwMyBpbnN0YWxsIGd1bmljb3Ju
YCcpCi0gICAgICAgIHJldHVybiAxCi0KLSAgICAjIFNsaWdodCBkZWxheSBzbyB0aGF0IHRoZSB3
b3JrZXIgaXMgc3RhcnRlZCBiZWZvcmUgdGhlIHdlYnNlcnZlcgotICAgIHRpbWUuc2xlZXAoMikK
LSAgICByZXR1cm4gc3VicHJvY2Vzcy5ydW4oWwotICAgICAgICAncHl0aG9uMycsICcvdXNyL2xv
Y2FsL2Jpbi9ndW5pY29ybicsCi0gICAgICAgICdleGFtcGxlLm1haW46YXBwJywKLSAgICAgICAg
Jy0tbG9nLWZpbGU9LScsICctLXJlbG9hZCcsCi0gICAgXSkucmV0dXJuY29kZQotCi0KLWRlZiBt
YWluKCk6Ci0gICAgYXJncyA9IHBhcnNlX2FyZ3VtZW50cygpCi0gICAgd2l0aCBEb2NrZXJJZk5l
ZWRlZENvbnRleHQoYXJncyk6Ci0gICAgICAgIG9zLmVudmlyb25bJ0NBU1NBTkRSQV9TRVJWRVIn
XSA9IGFyZ3MuY2Fzc2FuZHJhX3NlcnZlcgotICAgICAgICBvcy5lbnZpcm9uWydSRURJU19IT1NU
J10gPSBhcmdzLnJlZGlzX3NlcnZlcgotICAgICAgICBvcy5lbnZpcm9uWydEUk9QX0tFWVNQQUNF
J10gPSAnMScgaWYgYXJncy5kcm9wX2tleXNwYWNlIGVsc2UgJzAnCi0gICAgICAgIG9zLmVudmly
b25bJ0NSRUFURV9LRVlTUEFDRSddID0gJzEnICAjIFVuY29uZGl0aW9uYWxseSBjcmVhdGUga2V5
c3BhY2UgZm9yIHRlc3RpbmcKLQotICAgICAgICBpZiBhcmdzLmNsZWFyX3JlZGlzIGFuZCBhcmdz
LnJlZGlzX3NlcnZlciAhPSAnbW9jayc6Ci0gICAgICAgICAgICBTdHJpY3RSZWRpcyhob3N0PWFy
Z3MucmVkaXNfc2VydmVyKS5mbHVzaGRiKCkKLQotICAgICAgICBpZiBhcmdzLmd1bmljb3JuOgot
ICAgICAgICAgICAgaWYgJ21vY2snIGluIFthcmdzLnJlZGlzX3NlcnZlciwgYXJncy5jYXNzYW5k
cmFfc2VydmVyXToKLSAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ0Nhbm5vdCBy
dW4gd2l0aCBndW5pY29ybiBhbmQgbW9jayBkYXRhYmFzZXMsIGFzeW5jaHJvbm91cyB3b3JrZXJz
IHJlbHkgb24gdGhlIHJlYWwgZGF0YWJhc2VzJykKLQotICAgICAgICBmcm9tIGV4YW1wbGUuZW52
aXJvbm1lbnQgaW1wb3J0IG1haW4gYXMgZW52aXJvbm1lbnRfbWFpbgotICAgICAgICBlbnZpcm9u
bWVudF9tYWluKCkKLQotICAgICAgICBpZiBub3QgYXJncy5ndW5pY29ybjoKLSAgICAgICAgICAg
IHdvcmtlciA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PWRvX3dvcmspCi0gICAgICAgICAgICB3
b3JrZXIuZGFlbW9uID0gVHJ1ZQotICAgICAgICAgICAgd29ya2VyLnN0YXJ0KCkKLQotICAgICAg
ICAgICAgcmV0dXJuIHdlYl9hcHAoKQotCi0gICAgICAgIHdvcmtlciA9IFByb2Nlc3ModGFyZ2V0
PWRvX3dvcmspCi0gICAgICAgIHdvcmtlci5zdGFydCgpCi0KLSAgICAgICAgdHJ5OgotICAgICAg
ICAgICAgcmV0dXJuIGd1bmljb3JuKCkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHdv
cmtlci50ZXJtaW5hdGUoKQotICAgICAgICAgICAgd29ya2VyLmpvaW4oKQotCi1pZiBfX25hbWVf
XyA9PSAnX19tYWluX18nOgotICAgIHN5cy5leGl0KG1haW4oKSkKClByb3BlcnR5IGNoYW5nZXMg
b246IFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3J1bgpfX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6
IHN2bjpleGVjdXRhYmxlCiMjIC0xICswLDAgIyMKLSoKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBw
cm9wZXJ0eQpJbmRleDogVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvcnVuLXRlc3RzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3J1bi10ZXN0cwkocmV2
aXNpb24gMjY1NTMxKQorKysgVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvcnVuLXRlc3Rz
CShub25leGlzdGVudCkKQEAgLTEsNzcgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMwot
Ci0jIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0j
Ci0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0jIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUgotIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAot
IyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1pbXBvcnQgc3lzCi1zeXMu
ZG9udF93cml0ZV9ieXRlY29kZSA9IFRydWUKLQotaW1wb3J0IGFyZ3BhcnNlCi1pbXBvcnQgb3MK
LWltcG9ydCBzeXMKLWltcG9ydCB1bml0dGVzdAotCi1mcm9tIGNhc3NhbmRyYS5jcWxlbmdpbmUu
bWFuYWdlbWVudCBpbXBvcnQgQ1FMRU5HX0FMTE9XX1NDSEVNQV9NQU5BR0VNRU5UCi0KLWRlZiBt
YWluKCk6Ci0gICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoZGVzY3JpcHRpb249
J1J1biB1bml0IHRlc3RzIGZvciByZXN1bHRzZGJweScpCi0gICAgcGFyc2VyLmFkZF9hcmd1bWVu
dCgnLXYnLCAnLS12ZXJib3NlJywKLSAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PUZhbHNl
LCBhY3Rpb249J3N0b3JlX3RydWUnLAotICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J1ZlcmJv
c2Ugb3V0cHV0JykKLSAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLXN0b3Atb24tZmFpbCcsCi0g
ICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1GYWxzZSwgYWN0aW9uPSdzdG9yZV90cnVlJywK
LSAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdTdG9wIG9uIGZpcnN0IGZhaWwgb3IgZXJyb3In
KQotICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJ21vZHVsZXNfdG9fdGVzdCcsIG5hcmdzPScqJywK
LSAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdNb2R1bGVzIHRvIGJlIHRlc3RlZC4gQnkgZGVm
YXVsdCwgdGhpcyBpcyB0aGUgZGF0YWJhc2UsIGZsYXNrX3N1cHBvcnQsIG1vZGVsIGFuZCB2aWV3
IG1vZHVsZXMnLAotICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9Wydjb250cm9sbGVyJywg
J2ZsYXNrX3N1cHBvcnQnLCAnbW9kZWwnLCAndmlldyddKQotICAgIHBhcnNlci5hZGRfYXJndW1l
bnQoJy1mJywgJy0tZmFzdC10ZXN0cycsCi0gICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1G
YWxzZSwgYWN0aW9uPSdzdG9yZV90cnVlJywKLSAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdT
b21lIHRlc3RzIHJlcXVpcmUgYSBkb2NrZXIgaW5zdGFuY2UgYW5kIGFyZSBzbG93LCBvcHRpb25h
bGx5IHNraXAgdGhlc2UnKQotICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tbm8td2ViLXNlcnZl
cicsCi0gICAgICAgICAgICAgICAgICAgICAgICBkZXN0PSd3ZWJfc2VydmVyJywgZGVmYXVsdD1U
cnVlLCBhY3Rpb249J3N0b3JlX2ZhbHNlJywKLSAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9
J1NvbWUgdGVzdHMgdXNlIGEgRmxhc2sgd2Vic2VydmVyLCBvcHRpb25hbGx5IHNraXAgdGhlc2Un
KQotICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tbm8tc2VsZW5pdW0nLAotICAgICAgICAgICAg
ICAgICAgICAgICAgZGVzdD0nc2VsZW5pdW0nLCBkZWZhdWx0PVRydWUsIGFjdGlvbj0nc3RvcmVf
ZmFsc2UnLAotICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nU29tZSB0ZXN0cyB1c2UgU2Vs
ZW5pdW0gdG8gdGVzdCB0aGUgVUkgb2YgdGhlIHNpdGUsIG9wdGlvbmFsbHkgc2tpcCB0aGVzZScp
Ci0gICAgb3B0aW9ucyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKLQotICAgIG9zLmVudmlyb25bJ3Ns
b3dfdGVzdHMnXSA9ICcwJyBpZiBvcHRpb25zLmZhc3RfdGVzdHMgZWxzZSAnMScKLSAgICBvcy5l
bnZpcm9uWyd3ZWJfc2VydmVyJ10gPSAnMScgaWYgb3B0aW9ucy53ZWJfc2VydmVyIGVsc2UgJzAn
Ci0gICAgb3MuZW52aXJvblsnc2VsZW5pdW0nXSA9ICcxJyBpZiBvcHRpb25zLnNlbGVuaXVtIGVs
c2UgJzAnCi0gICAgb3MuZW52aXJvbltDUUxFTkdfQUxMT1dfU0NIRU1BX01BTkFHRU1FTlRdID0g
JzEnCi0KLSAgICByb290ID0gb3MucGF0aC5kaXJuYW1lKG9zLnBhdGguYWJzcGF0aChfX2ZpbGVf
XykpCi0KLSAgICBzdWl0ZSA9IHVuaXR0ZXN0LlRlc3RTdWl0ZSgpCi0gICAgZm9yIG1vZHVsZV9u
YW1lIGluIG9wdGlvbnMubW9kdWxlc190b190ZXN0OgotICAgICAgICBtb2R1bGVfc3VpdGUgPSB1
bml0dGVzdC5kZWZhdWx0VGVzdExvYWRlci5kaXNjb3Zlcihvcy5wYXRoLmpvaW4ocm9vdCwgbW9k
dWxlX25hbWUucmVwbGFjZSgnLicsICcvJykpLCBwYXR0ZXJuPScqdW5pdHRlc3QucHknLCB0b3Bf
bGV2ZWxfZGlyPW9zLnBhdGguam9pbihyb290LCAnLi4nKSkKLSAgICAgICAgZm9yIHRzdCBpbiBt
b2R1bGVfc3VpdGUgaWYgbW9kdWxlX3N1aXRlIGVsc2UgW106Ci0gICAgICAgICAgICBzdWl0ZS5h
ZGRUZXN0KHRzdCkKLQotICAgIGlmIHN1aXRlLmNvdW50VGVzdENhc2VzKCkgPT0gMDoKLSAgICAg
ICAgcmFpc2UgUnVudGltZUVycm9yKCdObyB0ZXN0cyBtYXRjaGluZy4uLicpCi0KLSAgICByZXN1
bHQgPSB1bml0dGVzdC5UZXh0VGVzdFJ1bm5lcih2ZXJib3NpdHk9MiBpZiBvcHRpb25zLnZlcmJv
c2UgZWxzZSAxLCBmYWlsZmFzdD1vcHRpb25zLnN0b3Bfb25fZmFpbCwgYnVmZmVyPW5vdCBvcHRp
b25zLnZlcmJvc2UpLnJ1bihzdWl0ZSkKLSAgICByZXR1cm4gbGVuKHJlc3VsdC5lcnJvcnMpCi0K
LWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgc3lzLmV4aXQobWFpbigpKQoKUHJvcGVy
dHkgY2hhbmdlcyBvbjogVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvcnVuLXRlc3RzCl9f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX18KRGVsZXRlZDogc3ZuOmV4ZWN1dGFibGUKIyMgLTEgKzAsMCAjIwotKgpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRz
ZGJweS92aWV3L19faW5pdF9fLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL3Jlc3VsdHNkYnB5L3Jl
c3VsdHNkYnB5L3ZpZXcvX19pbml0X18ucHkJKHJldmlzaW9uIDI2NTUzMSkKKysrIFRvb2xzL3Jl
c3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvX19pbml0X18ucHkJKG5vbmV4aXN0ZW50KQpAQCAt
MSArMCwwIEBACi0jIERPIE5PVEhJTkcKSW5kZXg6IFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNk
YnB5L3ZpZXcvYXJjaGl2ZV92aWV3LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL3Jlc3VsdHNkYnB5
L3Jlc3VsdHNkYnB5L3ZpZXcvYXJjaGl2ZV92aWV3LnB5CShyZXZpc2lvbiAyNjU1MzEpCisrKyBU
b29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS92aWV3L2FyY2hpdmVfdmlldy5weQkobm9uZXhp
c3RlbnQpCkBAIC0xLDEzNyArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJl
IG1ldDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECi0jIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSMg
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTAotIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotIyBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgot
IyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLAotIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotCi1pbXBvcnQganNvbgotCi1mcm9tIGZsYXNrIGltcG9ydCBhYm9ydCwganNvbmlmeSwg
cmVxdWVzdCwgUmVzcG9uc2UKLWZyb20gcmVzdWx0c2RicHkuY29udHJvbGxlci5jb21taXRfY29u
dHJvbGxlciBpbXBvcnQgdXVpZF9yYW5nZV9mb3JfcXVlcnksIEhhc0NvbW1pdENvbnRleHQKLWZy
b20gcmVzdWx0c2RicHkuY29udHJvbGxlci5jb25maWd1cmF0aW9uX2NvbnRyb2xsZXIgaW1wb3J0
IGNvbmZpZ3VyYXRpb25fZm9yX3F1ZXJ5Ci1mcm9tIHJlc3VsdHNkYnB5LmNvbnRyb2xsZXIuc3Vp
dGVfY29udHJvbGxlciBpbXBvcnQgdGltZV9yYW5nZV9mb3JfcXVlcnkKLWZyb20gcmVzdWx0c2Ri
cHkuZmxhc2tfc3VwcG9ydC51dGlsIGltcG9ydCBBc3NlcnRSZXF1ZXN0LCBib29sZWFuX3F1ZXJ5
LCBjYWNoZV9mb3IsIGxpbWl0X2Zvcl9xdWVyeSwgcXVlcnlfYXNfa3dhcmdzLCBxdWVyeV9hc19z
dHJpbmcKLWZyb20gcmVzdWx0c2RicHkudmlldy5zaXRlX21lbnUgaW1wb3J0IFNpdGVNZW51Ci0K
LQotY2xhc3MgQXJjaGl2ZVZpZXcoSGFzQ29tbWl0Q29udGV4dCk6Ci0gICAgREVGQVVMVF9MSU1J
VCA9IDEwCi0gICAgRk9STUFUID0gZGljdCgKLSAgICAgICAganNvbj0nYXBwbGljYXRpb24vanNv
bicsCi0gICAgICAgIGNzcz0ndGV4dC9jc3MnLAotICAgICAgICBodG1sPSd0ZXh0L2h0bWwnLAot
ICAgICAgICB0eHQ9J3RleHQvcGxhaW4nLAotICAgICAgICBwbmc9J2ltYWdlL3BuZycsCi0gICAg
ICAgIGpwZWc9J2ltYWdlL2pwZWcnLAotICAgICkKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBl
bnZpcm9ubWVudCwgYXJjaGl2ZV9jb250cm9sbGVyLCBzaXRlX21lbnU9Tm9uZSk6Ci0gICAgICAg
IHN1cGVyKEFyY2hpdmVWaWV3LCBzZWxmKS5fX2luaXRfXyhhcmNoaXZlX2NvbnRyb2xsZXIuY29t
bWl0X2NvbnRleHQpCi0gICAgICAgIHNlbGYuZW52aXJvbm1lbnQgPSBlbnZpcm9ubWVudAotCi0g
ICAgICAgIHNlbGYuYXJjaGl2ZV9jb250ZXh0ID0gYXJjaGl2ZV9jb250cm9sbGVyLmFyY2hpdmVf
Y29udGV4dAotICAgICAgICBzZWxmLnVwbG9hZF9jb250ZXh0ID0gYXJjaGl2ZV9jb250cm9sbGVy
LnVwbG9hZF9jb250ZXh0Ci0gICAgICAgIHNlbGYuc2l0ZV9tZW51ID0gc2l0ZV9tZW51Ci0KLSAg
ICBAU2l0ZU1lbnUucmVuZGVyX3dpdGhfc2l0ZV9tZW51KCkKLSAgICBkZWYgbGlzdChzZWxmLCBw
YXRoLCB2YWx1ZXMsICoqa3dhcmdzKToKLSAgICAgICAgcmV0dXJuIHNlbGYuZW52aXJvbm1lbnQu
Z2V0X3RlbXBsYXRlKCdhcmNoaXZlX2xpc3QuaHRtbCcpLnJlbmRlcigKLSAgICAgICAgICAgIHRp
dGxlPWYne3NlbGYuc2l0ZV9tZW51LnRpdGxlfTogYXJjaGl2ZS9me3BhdGggb3IgIiJ9JywKLSAg
ICAgICAgICAgIHBhdGg9cGF0aCBvciAnJywgdmFsdWVzPXZhbHVlcywKLSAgICAgICAgICAgIHF1
ZXJ5PXF1ZXJ5X2FzX3N0cmluZygpLAotICAgICAgICAgICAgKiprd2FyZ3MpCi0KLSAgICBAcXVl
cnlfYXNfa3dhcmdzKCkKLSAgICBAdXVpZF9yYW5nZV9mb3JfcXVlcnkoKQotICAgIEBsaW1pdF9m
b3JfcXVlcnkoREVGQVVMVF9MSU1JVCkKLSAgICBAY29uZmlndXJhdGlvbl9mb3JfcXVlcnkoKQot
ICAgIEB0aW1lX3JhbmdlX2Zvcl9xdWVyeSgpCi0gICAgQGNhY2hlX2Zvcihob3Vycz0xMikKLSAg
ICBkZWYgZXh0cmFjdCgKLSAgICAgICAgc2VsZiwgcGF0aD1Ob25lLCBmb3JtYXQ9Tm9uZSwKLSAg
ICAgICAgc3VpdGU9Tm9uZSwgY29uZmlndXJhdGlvbnM9Tm9uZSwgcmVjZW50PU5vbmUsCi0gICAg
ICAgIGJyYW5jaD1Ob25lLCBiZWdpbj1Ob25lLCBlbmQ9Tm9uZSwKLSAgICAgICAgYmVnaW5fcXVl
cnlfdGltZT1Ob25lLCBlbmRfcXVlcnlfdGltZT1Ob25lLAotICAgICAgICBsaW1pdD1Ob25lLCAq
Kmt3YXJncwotICAgICk6Ci0gICAgICAgIEFzc2VydFJlcXVlc3QuaXNfdHlwZShbJ0dFVCddKQot
ICAgICAgICBBc3NlcnRSZXF1ZXN0LnF1ZXJ5X2t3YXJnc19lbXB0eSgqKmt3YXJncykKLSAgICAg
ICAgcmVjZW50ID0gYm9vbGVhbl9xdWVyeSgqcmVjZW50KVswXSBpZiByZWNlbnQgZWxzZSBUcnVl
Ci0KLSAgICAgICAgaWYgbm90IHN1aXRlOgotICAgICAgICAgICAgc3VpdGVzID0gc2V0KCkKLSAg
ICAgICAgICAgIGZvciBjb25maWdfc3VpdGVzIGluIHNlbGYudXBsb2FkX2NvbnRleHQuZmluZF9z
dWl0ZXMoY29uZmlndXJhdGlvbnM9Y29uZmlndXJhdGlvbnMsIHJlY2VudD1yZWNlbnQpLnZhbHVl
cygpOgotICAgICAgICAgICAgICAgIFtzdWl0ZXMuYWRkKHN1aXRlKSBmb3Igc3VpdGUgaW4gY29u
ZmlnX3N1aXRlc10KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHN1aXRlcyA9IHNldChzdWl0
ZSkKLQotICAgICAgICByZXN1bHQgPSBOb25lCi0gICAgICAgIHdpdGggc2VsZi5hcmNoaXZlX2Nv
bnRleHQsIHNlbGYudXBsb2FkX2NvbnRleHQ6Ci0gICAgICAgICAgICBmb3Igc3VpdGUgaW4gc3Vp
dGVzOgotICAgICAgICAgICAgICAgIGZvciBmaWxlcyBpbiBzZWxmLmFyY2hpdmVfY29udGV4dC5m
aWxlKAotICAgICAgICAgICAgICAgICAgICBwYXRoPXBhdGgsCi0gICAgICAgICAgICAgICAgICAg
IGNvbmZpZ3VyYXRpb25zPWNvbmZpZ3VyYXRpb25zLCBzdWl0ZT1zdWl0ZSwgYnJhbmNoPWJyYW5j
aFswXSwKLSAgICAgICAgICAgICAgICAgICAgYmVnaW49YmVnaW4sIGVuZD1lbmQsIHJlY2VudD1y
ZWNlbnQsIGxpbWl0PTIsCi0gICAgICAgICAgICAgICAgICAgIGJlZ2luX3F1ZXJ5X3RpbWU9YmVn
aW5fcXVlcnlfdGltZSwgZW5kX3F1ZXJ5X3RpbWU9ZW5kX3F1ZXJ5X3RpbWUsCi0gICAgICAgICAg
ICAgICAgKS52YWx1ZXMoKToKLSAgICAgICAgICAgICAgICAgICAgZm9yIGZpbGUgaW4gZmlsZXM6
Ci0gICAgICAgICAgICAgICAgICAgICAgICBjYW5kaWRhdGUgPSBmaWxlLmdldCgnZmlsZScpCi0g
ICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgY2FuZGlkYXRlOgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgcmVz
dWx0OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoY2FuZGlkYXRl
LCBsaXN0KToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gc2V0KGNh
bmRpZGF0ZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBjYW5kaWRhdGUKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5j
ZShjYW5kaWRhdGUsIGxpc3QpIGFuZCBpc2luc3RhbmNlKHJlc3VsdCwgc2V0KToKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXN1bHQgfD0gc2V0KGNhbmRpZGF0ZSkKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgcmVz
dWx0ID09IGNhbmRpZGF0ZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQot
ICAgICAgICAgICAgICAgICAgICAgICAgYWJvcnQoNDAzLCAnTXVsdGlwbGUgYXJjaGl2ZXMgbWF0
Y2ggd2l0aCBkaWZmZXJlbnQgY29udGVudCcpCi0KLSAgICAgICAgaWYgbm90IHJlc3VsdDoKLSAg
ICAgICAgICAgIGFib3J0KDQwNCwgZiJObyBhcmNoaXZlIGNvbnRlbnR7JyBhdCAnICsgcGF0aCBp
ZiBwYXRoIGVsc2UgJyd9IikKLQotICAgICAgICBpZiBpc2luc3RhbmNlKHJlc3VsdCwgc2V0KToK
LSAgICAgICAgICAgIHJldHVybiBzZWxmLmxpc3QocGF0aD1wYXRoLCB2YWx1ZXM9c29ydGVkKHJl
c3VsdCkpCi0KLSAgICAgICAgbWltZXR5cGUgPSBzZWxmLkZPUk1BVC5nZXQoZm9ybWF0KQotICAg
ICAgICBpZiBub3QgbWltZXR5cGUgYW5kICcuJyBpbiBwYXRoOgotICAgICAgICAgICAgbWltZXR5
cGUgPSBzZWxmLkZPUk1BVC5nZXQocGF0aC5zcGxpdCgnLicpWy0xXSkKLSAgICAgICAgbWltZXR5
cGUgPSBtaW1ldHlwZSBvciAndGV4dC9wbGFpbicKLQotICAgICAgICAjIEEgYml0IG9mIGEgaGFj
ayB0byBhZGQgdGhlIHJpZ2h0IHF1ZXJ5IGFyZ3VtZW50cyBpbnRvIHJlc3VsdHMuaHRtbAotICAg
ICAgICAjIElkZWFsbHksIHRoaXMgc2hvdWxkIGJlIGRvbmUgd2l0aCBjaGFuZ2VzIHRvIHJlc3Vs
dHMuaHRtbCwgYnV0IHdlCi0gICAgICAgICMgaGF2ZSBsZWdhY3kgcmVzdWx0cyB0byBoYW5kbGUu
Ci0gICAgICAgIGlmIG1pbWV0eXBlID09ICd0ZXh0L2h0bWwnOgotICAgICAgICAgICAgcXVlcnkg
PSBxdWVyeV9hc19zdHJpbmcoKQotICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnJlcGxhY2Uo
Ci0gICAgICAgICAgICAgICAgImhyZWY9XCInICsgdGVzdFByZWZpeCArIHN1ZmZpeCArICdcIiIu
ZW5jb2RlKCd1dGYtOCcpLAotICAgICAgICAgICAgICAgIGYiaHJlZj1cIicgKyB0ZXN0UHJlZml4
ICsgc3VmZml4ICsgJ3txdWVyeX0nICsgJ1wiIi5lbmNvZGUoJ3V0Zi04JyksCi0gICAgICAgICAg
ICApCi0KLSAgICAgICAgICAgIGZvciBpbmNsdWRlX3RvX3N0cmlwIGluIFsnanMvc3RhdHVzLWJ1
YmJsZS5qcycsICdjb2RlLXJldmlldy5qcz92ZXJzaW9uPTQ4J106Ci0gICAgICAgICAgICAgICAg
cmVzdWx0ID0gcmVzdWx0LnJlcGxhY2UoZic8c2NyaXB0IHNyYz0ie2luY2x1ZGVfdG9fc3RyaXB9
Ij48L3NjcmlwdD4nLmVuY29kZSgndXRmLTgnKSwgJycuZW5jb2RlKCd1dGYtOCcpKQotCi0gICAg
ICAgICAgICBpZiAocXVlcnkpOgotICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC5yZXBs
YWNlKCJzcmMgKz0gJz9mb3JtYXQ9dHh0JyIuZW5jb2RlKCd1dGYtOCcpLCAic3JjICs9ICcmZm9y
bWF0PXR4dCciLmVuY29kZSgndXRmLTgnKSkKLQotICAgICAgICByZXR1cm4gUmVzcG9uc2UocmVz
dWx0LCBtaW1ldHlwZT1taW1ldHlwZSBvciAndGV4dC9wbGFpbicpCkluZGV4OiBUb29scy9yZXN1
bHRzZGJweS9yZXN1bHRzZGJweS92aWV3L2FyY2hpdmVfdmlld191bml0dGVzdC5weQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS92aWV3L2FyY2hpdmVfdmlld191
bml0dGVzdC5weQkocmV2aXNpb24gMjY1NTMxKQorKysgVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0
c2RicHkvdmlldy9hcmNoaXZlX3ZpZXdfdW5pdHRlc3QucHkJKG5vbmV4aXN0ZW50KQpAQCAtMSw3
NiArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0jIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
Ci0jIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAot
IyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUgotIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotIyBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLAotIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1pbXBvcnQg
YmFzZTY0Ci1pbXBvcnQganNvbgotaW1wb3J0IHRpbWUKLQotZnJvbSBmYWtlcmVkaXMgaW1wb3J0
IEZha2VTdHJpY3RSZWRpcwotZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVyLmNvbW1pdCBpbXBv
cnQgQ29tbWl0Ci1mcm9tIHJlc3VsdHNkYnB5LmNvbnRyb2xsZXIuY29uZmlndXJhdGlvbiBpbXBv
cnQgQ29uZmlndXJhdGlvbgotZnJvbSByZXN1bHRzZGJweS5tb2RlbC5jb25maWd1cmF0aW9uX2Nv
bnRleHRfdW5pdHRlc3QgaW1wb3J0IENvbmZpZ3VyYXRpb25Db250ZXh0VGVzdAotZnJvbSByZXN1
bHRzZGJweS5tb2RlbC5tb2NrX2Nhc3NhbmRyYV9jb250ZXh0IGltcG9ydCBNb2NrQ2Fzc2FuZHJh
Q29udGV4dAotZnJvbSByZXN1bHRzZGJweS5tb2RlbC5tb2NrX21vZGVsX2ZhY3RvcnkgaW1wb3J0
IE1vY2tNb2RlbEZhY3RvcnkKLWZyb20gcmVzdWx0c2RicHkubW9kZWwubW9ja19yZXBvc2l0b3J5
IGltcG9ydCBNb2NrU3Rhc2hSZXBvc2l0b3J5LCBNb2NrU1ZOUmVwb3NpdG9yeQotZnJvbSByZXN1
bHRzZGJweS5tb2RlbC53YWl0X2Zvcl9kb2NrZXJfdGVzdF9jYXNlIGltcG9ydCBXYWl0Rm9yRG9j
a2VyVGVzdENhc2UKLWZyb20gcmVzdWx0c2RicHkudmlldy52aWV3X3JvdXRlc191bml0dGVzdCBp
bXBvcnQgV2ViU2l0ZVRlc3RDYXNlCi1mcm9tIHNlbGVuaXVtLndlYmRyaXZlci5zdXBwb3J0LnNl
bGVjdCBpbXBvcnQgU2VsZWN0Ci0KLQotY2xhc3MgQXJjaGl2ZVZpZXdVbml0dGVzdChXZWJTaXRl
VGVzdENhc2UpOgotICAgIGRlZiByZWdpc3Rlcl9hcmNoaXZlKHNlbGYsIGNsaWVudCk6Ci0gICAg
ICAgIHJlc3BvbnNlID0gY2xpZW50LnBvc3QoCi0gICAgICAgICAgICBzZWxmLlVSTCArICcvYXBp
L3VwbG9hZC9hcmNoaXZlJywKLSAgICAgICAgICAgIGRhdGE9ZGljdCgKLSAgICAgICAgICAgICAg
ICBjb25maWd1cmF0aW9uPWpzb24uZHVtcHMoQ29uZmlndXJhdGlvbkNvbnRleHRUZXN0LkNPTkZJ
R1VSQVRJT05TWzBdLCBjbHM9Q29uZmlndXJhdGlvbi5FbmNvZGVyKSwKLSAgICAgICAgICAgICAg
ICBzdWl0ZT0nbGF5b3V0LXRlc3RzJywKLSAgICAgICAgICAgICAgICBjb21taXRzPWpzb24uZHVt
cHMoW01vY2tTdGFzaFJlcG9zaXRvcnkuc2FmYXJpKCkuY29tbWl0X2Zvcl9pZCgnYmI2YmRhNWYn
KSwgTW9ja1NWTlJlcG9zaXRvcnkud2Via2l0KCkuY29tbWl0X2Zvcl9pZCgyMzY1NDIpXSwgY2xz
PUNvbW1pdC5FbmNvZGVyKSwKLSAgICAgICAgICAgICksCi0gICAgICAgICAgICBmaWxlcz1kaWN0
KGZpbGU9YmFzZTY0LmI2NGRlY29kZShNb2NrTW9kZWxGYWN0b3J5LkFSQ0hJVkVfWklQKSksCi0g
ICAgICAgICkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5zdGF0dXNfY29kZSwg
MjAwKQotCi0gICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2Nr
X3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRl
eHQpCi0gICAgQFdlYlNpdGVUZXN0Q2FzZS5kZWNvcmF0b3IoKQotICAgIGRlZiB0ZXN0X2RpcmVj
dG9yeShzZWxmLCBkcml2ZXIsIGNsaWVudCwgKiprd2FyZ3MpOgotICAgICAgICBzZWxmLnJlZ2lz
dGVyX2FyY2hpdmUoY2xpZW50KQotICAgICAgICBkcml2ZXIuZ2V0KHNlbGYuVVJMICsgJy9hcmNo
aXZlJykKLQotICAgICAgICB0aXRsZXMgPSBkcml2ZXIuZmluZF9lbGVtZW50c19ieV9jbGFzc19u
YW1lKCd0aXRsZScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHRpdGxlcyksIDIpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGl0bGVzWzFdLnRleHQuc3RyaXAoKSwgJy8nKQotCi0g
ICAgICAgIHBhdGhfbGlzdCA9IGRyaXZlci5maW5kX2VsZW1lbnRfYnlfaWQoJ3BhdGhzJykKLSAg
ICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocGF0aF9saXN0KQotICAgICAgICBmaWxlcyA9IHBh
dGhfbGlzdC5maW5kX2VsZW1lbnRzX2J5X2NsYXNzX25hbWUoJ2l0ZW0nKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGxlbihmaWxlcyksIDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmls
ZXNbMF0udGV4dC5zdHJpcCgpLCAnZmlsZS50eHQnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGZpbGVzWzFdLnRleHQuc3RyaXAoKSwgJ2luZGV4Lmh0bWwnKQotCi0gICAgQFdhaXRGb3JEb2Nr
ZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywg
bW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCi0gICAgQFdlYlNpdGVUZXN0Q2Fz
ZS5kZWNvcmF0b3IoKQotICAgIGRlZiB0ZXN0X2ZpbGUoc2VsZiwgZHJpdmVyLCBjbGllbnQsICoq
a3dhcmdzKToKLSAgICAgICAgc2VsZi5yZWdpc3Rlcl9hcmNoaXZlKGNsaWVudCkKLSAgICAgICAg
cmVzcG9uc2UgPSBjbGllbnQuZ2V0KHNlbGYuVVJMICsgJy9hcmNoaXZlL2ZpbGUudHh0JykKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLnRleHQsICdkYXRhJykKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChyZXNwb25zZS5oZWFkZXJzLmdldCgnQ2FjaGUtQ29udHJvbCcpLCAncHVibGlj
LG1heC1hZ2U9NDMyMDAnKQpJbmRleDogVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmll
dy9jaV92aWV3LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5
L3ZpZXcvY2lfdmlldy5weQkocmV2aXNpb24gMjY1NTMxKQorKysgVG9vbHMvcmVzdWx0c2RicHkv
cmVzdWx0c2RicHkvdmlldy9jaV92aWV3LnB5CShub25leGlzdGVudCkKQEAgLTEsMTAxICswLDAg
QEAKLSMgQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMg
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQotIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotIyBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SCi0jIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0jIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
Ci0jIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLWZyb20gZmxhc2sgaW1w
b3J0IGFib3J0LCByZWRpcmVjdCwgcmVxdWVzdAotZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVy
LmNvbW1pdCBpbXBvcnQgQ29tbWl0Ci1mcm9tIHJlc3VsdHNkYnB5LmZsYXNrX3N1cHBvcnQudXRp
bCBpbXBvcnQgQXNzZXJ0UmVxdWVzdCwgcXVlcnlfYXNfa3dhcmdzCi1mcm9tIHJlc3VsdHNkYnB5
LnZpZXcuc2l0ZV9tZW51IGltcG9ydCBTaXRlTWVudQotCi0KLWNsYXNzIENJVmlldyhvYmplY3Qp
OgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBlbnZpcm9ubWVudCwgY2lfY29udHJvbGxlciwgc2l0
ZV9tZW51PU5vbmUpOgotICAgICAgICBzZWxmLmVudmlyb25tZW50ID0gZW52aXJvbm1lbnQKLSAg
ICAgICAgc2VsZi5jaV9jb250cm9sbGVyID0gY2lfY29udHJvbGxlcgotICAgICAgICBzZWxmLnNp
dGVfbWVudSA9IHNpdGVfbWVudQotCi0gICAgQHF1ZXJ5X2FzX2t3YXJncygpCi0gICAgZGVmIHF1
ZXVlKHNlbGYsICoqa3dhcmdzKToKLSAgICAgICAgcXVldWVfdXJscyA9IHNlbGYuY2lfY29udHJv
bGxlci51cmxzX2Zvcl9xdWV1ZSgqKmt3YXJncykKLQotICAgICAgICBjYW5kaWRhdGUgPSBOb25l
Ci0gICAgICAgIGZvciBlbGVtZW50IGluIHF1ZXVlX3VybHM6Ci0gICAgICAgICAgICBpZiBub3Qg
Y2FuZGlkYXRlOgotICAgICAgICAgICAgICAgIGNhbmRpZGF0ZSA9IGVsZW1lbnRbJ3VybCddCi0g
ICAgICAgICAgICBlbGlmIGNhbmRpZGF0ZSAhPSBlbGVtZW50Wyd1cmwnXToKLSAgICAgICAgICAg
ICAgICBhYm9ydCg0MDQsIGRlc2NyaXB0aW9uPSdUb28gbWFueSBlbGlnaWJsZSBxdWV1ZXMnKQot
Ci0gICAgICAgIGlmIG5vdCBjYW5kaWRhdGU6Ci0gICAgICAgICAgICBhYm9ydCg0MDQsIGRlc2Ny
aXB0aW9uPSdObyBxdWV1ZSBVUkxzIGZvciBwcm92aWRlZCBhcmd1bWVudHMnKQotICAgICAgICBy
ZXR1cm4gcmVkaXJlY3QoY2FuZGlkYXRlKQotCi0gICAgQHF1ZXJ5X2FzX2t3YXJncygpCi0gICAg
ZGVmIHdvcmtlcihzZWxmLCAqKmt3YXJncyk6Ci0gICAgICAgIGFsbF91cmxzID0gc2VsZi5jaV9j
b250cm9sbGVyLnVybHNfZm9yX2J1aWxkcygqKmt3YXJncykKLSAgICAgICAgd29ya2VyX3VybHMg
PSBbXQotICAgICAgICBmb3IgcGFpciBpbiBhbGxfdXJsczoKLSAgICAgICAgICAgIHVybHNfZm9y
X2NvbmZpZyA9IFtdCi0gICAgICAgICAgICBmb3IgdXJscyBpbiBwYWlyWyd1cmxzJ106Ci0gICAg
ICAgICAgICAgICAgaWYgbm90IHVybHMuZ2V0KCd3b3JrZXInLCBOb25lKToKLSAgICAgICAgICAg
ICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICB1cmxzX2Zvcl9jb25maWcuYXBwZW5k
KGRpY3QoCi0gICAgICAgICAgICAgICAgICAgIHdvcmtlcj11cmxzWyd3b3JrZXInXSwKLSAgICAg
ICAgICAgICAgICAgICAgdXVpZD11cmxzWyd1dWlkJ10sCi0gICAgICAgICAgICAgICAgICAgIHN0
YXJ0X3RpbWU9dXJsc1snc3RhcnRfdGltZSddLAotICAgICAgICAgICAgICAgICkpCi0gICAgICAg
ICAgICBpZiB1cmxzX2Zvcl9jb25maWc6Ci0gICAgICAgICAgICAgICAgd29ya2VyX3VybHMuYXBw
ZW5kKGRpY3QoY29uZmlndXJhdGlvbj1kaWN0KHBhaXJbJ2NvbmZpZ3VyYXRpb24nXSksIHVybHM9
dXJsc19mb3JfY29uZmlnKSkKLQotICAgICAgICBpZiBsZW4od29ya2VyX3VybHMpID09IDA6Ci0g
ICAgICAgICAgICBhYm9ydCg0MDQsIGRlc2NyaXB0aW9uPSdObyB3b3JrZXIgVVJMcyBmb3IgcHJv
dmlkZWQgYXJndW1lbnRzJykKLSAgICAgICAgaWYgbGVuKHdvcmtlcl91cmxzKSA9PSAxIGFuZCBs
ZW4od29ya2VyX3VybHNbMF1bJ3VybHMnXSkgPT0gMToKLSAgICAgICAgICAgIHJldHVybiByZWRp
cmVjdCh3b3JrZXJfdXJsc1swXVsndXJscyddWzBdWyd3b3JrZXInXSkKLQotICAgICAgICBhYm9y
dCg0MDQsIGRlc2NyaXB0aW9uPSdUb28gbWFueSBlbGlnaWJsZSB3b3JrZXJzJykKLQotICAgIEBx
dWVyeV9hc19rd2FyZ3MoKQotICAgIGRlZiBidWlsZChzZWxmLCAqKmt3YXJncyk6Ci0gICAgICAg
IGFsbF91cmxzID0gc2VsZi5jaV9jb250cm9sbGVyLnVybHNfZm9yX2J1aWxkcygqKmt3YXJncykK
LSAgICAgICAgd29ya2VyX3VybHMgPSBbXQotICAgICAgICBmb3IgcGFpciBpbiBhbGxfdXJsczoK
LSAgICAgICAgICAgIHVybHNfZm9yX2NvbmZpZyA9IFtdCi0gICAgICAgICAgICBmb3IgdXJscyBp
biBwYWlyWyd1cmxzJ106Ci0gICAgICAgICAgICAgICAgaWYgbm90IHVybHMuZ2V0KCdidWlsZCcs
IE5vbmUpOgotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgIHVy
bHNfZm9yX2NvbmZpZy5hcHBlbmQoZGljdCgKLSAgICAgICAgICAgICAgICAgICAgYnVpbGQ9dXJs
c1snYnVpbGQnXSwKLSAgICAgICAgICAgICAgICAgICAgdXVpZD11cmxzWyd1dWlkJ10sCi0gICAg
ICAgICAgICAgICAgICAgIHN0YXJ0X3RpbWU9dXJsc1snc3RhcnRfdGltZSddLAotICAgICAgICAg
ICAgICAgICkpCi0gICAgICAgICAgICBpZiB1cmxzX2Zvcl9jb25maWc6Ci0gICAgICAgICAgICAg
ICAgd29ya2VyX3VybHMuYXBwZW5kKGRpY3QoY29uZmlndXJhdGlvbj1kaWN0KHBhaXJbJ2NvbmZp
Z3VyYXRpb24nXSksIHVybHM9dXJsc19mb3JfY29uZmlnKSkKLQotICAgICAgICBjYW5kaWRhdGUg
PSBOb25lCi0gICAgICAgIGZvciBlbGVtZW50IGluIHdvcmtlcl91cmxzOgotICAgICAgICAgICAg
Zm9yIGJ1aWxkIGluIGVsZW1lbnRbJ3VybHMnXToKLSAgICAgICAgICAgICAgICBpZiBub3QgY2Fu
ZGlkYXRlOgotICAgICAgICAgICAgICAgICAgICBjYW5kaWRhdGUgPSBidWlsZFsnYnVpbGQnXQot
ICAgICAgICAgICAgICAgIGVsaWYgY2FuZGlkYXRlICE9IGJ1aWxkWydidWlsZCddOgotICAgICAg
ICAgICAgICAgICAgICBhYm9ydCg0MDQsIGRlc2NyaXB0aW9uPSdUb28gbWFueSBlbGlnaWJsZSBi
dWlsZHMnKQotCi0gICAgICAgIGlmIG5vdCBjYW5kaWRhdGU6Ci0gICAgICAgICAgICBhYm9ydCg0
MDQsIGRlc2NyaXB0aW9uPSdObyBxdWV1ZSBVUkxzIGZvciBwcm92aWRlZCBhcmd1bWVudHMnKQot
ICAgICAgICByZXR1cm4gcmVkaXJlY3QoY2FuZGlkYXRlKQpJbmRleDogVG9vbHMvcmVzdWx0c2Ri
cHkvcmVzdWx0c2RicHkvdmlldy9jb21taXRfdmlldy5weQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9y
ZXN1bHRzZGJweS9yZXN1bHRzZGJweS92aWV3L2NvbW1pdF92aWV3LnB5CShyZXZpc2lvbiAyNjU1
MzEpCisrKyBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS92aWV3L2NvbW1pdF92aWV3LnB5
CShub25leGlzdGVudCkKQEAgLTEsOTQgKzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0jIGFyZSBtZXQ6Ci0jIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMg
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAot
IyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SCi0jIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSMgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIKLSMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMg
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLQotZnJvbSBmbGFzayBpbXBvcnQgYWJvcnQsIHJlZGlyZWN0LCByZXF1ZXN0
Ci1mcm9tIHJlc3VsdHNkYnB5LmNvbnRyb2xsZXIuY29tbWl0IGltcG9ydCBDb21taXQKLWZyb20g
cmVzdWx0c2RicHkuZmxhc2tfc3VwcG9ydC51dGlsIGltcG9ydCBBc3NlcnRSZXF1ZXN0LCBxdWVy
eV9hc19rd2FyZ3MKLWZyb20gcmVzdWx0c2RicHkudmlldy5zaXRlX21lbnUgaW1wb3J0IFNpdGVN
ZW51Ci0KLQotY2xhc3MgQ29tbWl0VmlldyhvYmplY3QpOgotICAgIGRlZiBfX2luaXRfXyhzZWxm
LCBlbnZpcm9ubWVudCwgY29tbWl0X2NvbnRyb2xsZXIsIHNpdGVfbWVudT1Ob25lKToKLSAgICAg
ICAgc2VsZi5lbnZpcm9ubWVudCA9IGVudmlyb25tZW50Ci0gICAgICAgIHNlbGYuY29tbWl0X2Nv
bnRleHQgPSBjb21taXRfY29udHJvbGxlci5jb21taXRfY29udGV4dAotICAgICAgICBzZWxmLmNv
bW1pdF9jb250cm9sbGVyID0gY29tbWl0X2NvbnRyb2xsZXIKLSAgICAgICAgc2VsZi5zaXRlX21l
bnUgPSBzaXRlX21lbnUKLQotICAgIEBxdWVyeV9hc19rd2FyZ3MoKQotICAgIGRlZiBfc2luZ2xl
X2NvbW1pdChzZWxmLCBsaW1pdD1Ob25lLCAqKmt3YXJncyk6Ci0gICAgICAgIEFzc2VydFJlcXVl
c3QuaXNfdHlwZSgpCi0gICAgICAgIEFzc2VydFJlcXVlc3QucXVlcnlfa3dhcmdzX2VtcHR5KGxp
bWl0PWxpbWl0KQotCi0gICAgICAgIHdpdGggc2VsZi5jb21taXRfY29udGV4dDoKLSAgICAgICAg
ICAgIGNvbW1pdHMgPSBzZWxmLmNvbW1pdF9jb250cm9sbGVyLl9maW5kKCoqa3dhcmdzKQotICAg
ICAgICAgICAgaWYgbm90IGNvbW1pdHM6Ci0gICAgICAgICAgICAgICAgYWJvcnQoNDA0LCBkZXNj
cmlwdGlvbj0nTm8gY29tbWl0cyBmb3VuZCBtYXRjaGluZyB0aGUgc3BlY2lmaWVkIGNyaXRlcmlh
JykKLSAgICAgICAgICAgIGlmIGxlbihjb21taXRzKSA+IDE6Ci0gICAgICAgICAgICAgICAgYWJv
cnQoNDA0LCBkZXNjcmlwdGlvbj1mJ3tsZW4oY29tbWl0cyl9IGNvbW1pdHMgZm91bmQgbWF0Y2hp
bmcgdGhlIHNwZWNpZmllZCBjcml0ZXJpYScpCi0gICAgICAgICAgICByZXR1cm4gY29tbWl0c1sw
XQotCi0gICAgQFNpdGVNZW51LnJlbmRlcl93aXRoX3NpdGVfbWVudSgpCi0gICAgZGVmIGNvbW1p
dChzZWxmLCAqKmt3YXJncyk6Ci0gICAgICAgIHdpdGggc2VsZi5jb21taXRfY29udGV4dDoKLSAg
ICAgICAgICAgIGNvbW1pdCA9IHNlbGYuX3NpbmdsZV9jb21taXQoKQotICAgICAgICAgICAgcmVw
b3NpdG9yaWVzID0gbGlzdChzZWxmLmNvbW1pdF9jb250ZXh0LnJlcG9zaXRvcmllcy5rZXlzKCkp
Ci0gICAgICAgICAgICByZXBvc2l0b3JpZXMucmVtb3ZlKGNvbW1pdC5yZXBvc2l0b3J5X2lkKQot
ICAgICAgICAgICAgc2libGluZ3MgPSBzZWxmLmNvbW1pdF9jb250ZXh0LnNpYmxpbmdfY29tbWl0
cyhjb21taXQsIHJlcG9zaXRvcmllcykKLSAgICAgICAgcmVwb3NpdG9yaWVzID0gW2NvbW1pdC5y
ZXBvc2l0b3J5X2lkXSArIHNvcnRlZChbc3RyKGtleSkgZm9yIGtleSwgbHN0IGluIHNpYmxpbmdz
Lml0ZW1zKCkgaWYgbHN0XSkKLQotICAgICAgICByZXR1cm4gc2VsZi5lbnZpcm9ubWVudC5nZXRf
dGVtcGxhdGUoJ2NvbW1pdC5odG1sJykucmVuZGVyKAotICAgICAgICAgICAgdGl0bGU9c2VsZi5z
aXRlX21lbnUudGl0bGUgKyAnOiAnICsgc3RyKGNvbW1pdC5pZCksCi0gICAgICAgICAgICBjb21t
aXQ9Y29tbWl0LAotICAgICAgICAgICAgcmVwb3NpdG9yeV9pZHM9cmVwb3NpdG9yaWVzLAotICAg
ICAgICAgICAgY29tbWl0cz1Db21taXQuRW5jb2RlcigpLmRlZmF1bHQoW2NvbW1pdF0gKyBbaXRl
bSBmb3IgbHN0IGluIHNpYmxpbmdzLnZhbHVlcygpIGZvciBpdGVtIGluIGxzdF0pLAotICAgICAg
ICAgICAgKiprd2FyZ3MpCi0KLSAgICBkZWYgaW5mbyhzZWxmKToKLSAgICAgICAgY29tbWl0ID0g
c2VsZi5fc2luZ2xlX2NvbW1pdCgpCi0gICAgICAgIGluZm9fdXJsID0gc2VsZi5jb21taXRfY29u
dGV4dC5yZXBvc2l0b3JpZXNbY29tbWl0LnJlcG9zaXRvcnlfaWRdLnVybF9mb3JfY29tbWl0KGNv
bW1pdC5pZCkKLSAgICAgICAgaWYgbm90IGluZm9fdXJsOgotICAgICAgICAgICAgYWJvcnQoNDEw
LCBkZXNjcmlwdGlvbj1mJ0ZvdW5kIGNvbW1pdCB7bGVuKGNvbW1pdC5pZCl9LCBidXQgbm8gaW5m
byB1cmwgZm91bmQnKQotICAgICAgICByZXR1cm4gcmVkaXJlY3QoaW5mb191cmwpCi0KLSAgICBk
ZWYgcHJldmlvdXMoc2VsZik6Ci0gICAgICAgIHdpdGggc2VsZi5jb21taXRfY29udGV4dDoKLSAg
ICAgICAgICAgIG9yaWdpbmFsX2NvbW1pdCA9IHNlbGYuX3NpbmdsZV9jb21taXQoKQotICAgICAg
ICAgICAgY29tbWl0ID0gc2VsZi5jb21taXRfY29udGV4dC5wcmV2aW91c19jb21taXQob3JpZ2lu
YWxfY29tbWl0KQotICAgICAgICAgICAgaWYgbm90IGNvbW1pdDoKLSAgICAgICAgICAgICAgICBh
Ym9ydCg0MDQsIGRlc2NyaXB0aW9uPWYne29yaWdpbmFsX2NvbW1pdC5pZH0gaGFzIG5vIHJlZ2lz
dGVyZWQgcHJldmlvdXMgY29tbWl0JykKLSAgICAgICAgcmV0dXJuIHJlZGlyZWN0KGYnL2NvbW1p
dD9yZXBvc2l0b3J5X2lkPXtjb21taXQucmVwb3NpdG9yeV9pZH0maWQ9e2NvbW1pdC5pZH0nKQot
Ci0gICAgZGVmIG5leHQoc2VsZik6Ci0gICAgICAgIHdpdGggc2VsZi5jb21taXRfY29udGV4dDoK
LSAgICAgICAgICAgIG9yaWdpbmFsX2NvbW1pdCA9IHNlbGYuX3NpbmdsZV9jb21taXQoKQotICAg
ICAgICAgICAgY29tbWl0ID0gc2VsZi5jb21taXRfY29udGV4dC5uZXh0X2NvbW1pdChvcmlnaW5h
bF9jb21taXQpCi0gICAgICAgICAgICBpZiBub3QgY29tbWl0OgotICAgICAgICAgICAgICAgIGFi
b3J0KDQwNCwgZGVzY3JpcHRpb249Zid7b3JpZ2luYWxfY29tbWl0LmlkfSBoYXMgbm8gcmVnaXN0
ZXJlZCBzdWJzZXF1ZW50IGNvbW1pdCcpCi0gICAgICAgICAgICByZXR1cm4gcmVkaXJlY3QoZicv
Y29tbWl0P3JlcG9zaXRvcnlfaWQ9e2NvbW1pdC5yZXBvc2l0b3J5X2lkfSZpZD17Y29tbWl0Lmlk
fScpCi0KLSAgICBAU2l0ZU1lbnUucmVuZGVyX3dpdGhfc2l0ZV9tZW51KCkKLSAgICBkZWYgY29t
bWl0cyhzZWxmLCAqKmt3YXJncyk6Ci0KLSAgICAgICAgcmV0dXJuIHNlbGYuZW52aXJvbm1lbnQu
Z2V0X3RlbXBsYXRlKCdjb21taXRzLmh0bWwnKS5yZW5kZXIoCi0gICAgICAgICAgICB0aXRsZT1z
ZWxmLnNpdGVfbWVudS50aXRsZSArICc6IENvbW1pdHMnLAotICAgICAgICAgICAgcXVlcnk9cmVx
dWVzdC5xdWVyeV9zdHJpbmcsCi0gICAgICAgICAgICAqKmt3YXJncykKSW5kZXg6IFRvb2xzL3Jl
c3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvY29tbWl0X3ZpZXdfdW5pdHRlc3QucHkKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9jb21taXRfdmlld191
bml0dGVzdC5weQkocmV2aXNpb24gMjY1NTMxKQorKysgVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0
c2RicHkvdmlldy9jb21taXRfdmlld191bml0dGVzdC5weQkobm9uZXhpc3RlbnQpCkBAIC0xLDI1
MCArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0jIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
Ci0jIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAot
IyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUgotIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotIyBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLAotIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1pbXBvcnQg
dGltZQotCi1mcm9tIGZha2VyZWRpcyBpbXBvcnQgRmFrZVN0cmljdFJlZGlzCi1mcm9tIHJlc3Vs
dHNkYnB5LmNvbnRyb2xsZXIuY29tbWl0IGltcG9ydCBDb21taXQKLWZyb20gcmVzdWx0c2RicHku
bW9kZWwubW9ja19jYXNzYW5kcmFfY29udGV4dCBpbXBvcnQgTW9ja0Nhc3NhbmRyYUNvbnRleHQK
LWZyb20gcmVzdWx0c2RicHkubW9kZWwubW9ja19yZXBvc2l0b3J5IGltcG9ydCBNb2NrU3Rhc2hS
ZXBvc2l0b3J5LCBNb2NrU1ZOUmVwb3NpdG9yeQotZnJvbSByZXN1bHRzZGJweS5tb2RlbC53YWl0
X2Zvcl9kb2NrZXJfdGVzdF9jYXNlIGltcG9ydCBXYWl0Rm9yRG9ja2VyVGVzdENhc2UKLWZyb20g
cmVzdWx0c2RicHkudmlldy52aWV3X3JvdXRlc191bml0dGVzdCBpbXBvcnQgV2ViU2l0ZVRlc3RD
YXNlCi1mcm9tIHNlbGVuaXVtLndlYmRyaXZlci5zdXBwb3J0LnNlbGVjdCBpbXBvcnQgU2VsZWN0
Ci0KLQotY2xhc3MgQ29tbWl0Vmlld1VuaXR0ZXN0KFdlYlNpdGVUZXN0Q2FzZSk6Ci0gICAgZGVm
IHJlZ2lzdGVyX2FsbF9jb21taXRzKHNlbGYsIGNsaWVudCk6Ci0gICAgICAgIGZvciByZXBvIGlu
IFtNb2NrU3Rhc2hSZXBvc2l0b3J5LnNhZmFyaSgpLCBNb2NrU1ZOUmVwb3NpdG9yeS53ZWJraXQo
KV06Ci0gICAgICAgICAgICBmb3IgY29tbWl0cyBpbiByZXBvLmNvbW1pdHMudmFsdWVzKCk6Ci0g
ICAgICAgICAgICAgICAgZm9yIGNvbW1pdCBpbiBjb21taXRzOgotICAgICAgICAgICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKDIwMCwgY2xpZW50LnBvc3Qoc2VsZi5VUkwgKyAnL2FwaS9jb21t
aXRzL3JlZ2lzdGVyJywgZGF0YT1Db21taXQuRW5jb2RlcigpLmRlZmF1bHQoY29tbWl0KSkuc3Rh
dHVzX2NvZGUpCi0KLSAgICBkZWYgdW5wYWNrX2NvbW1pdF90YWJsZShzZWxmLCBjb21taXRfdGFi
bGUpOgotICAgICAgICBoZWFkZXJzID0gY29tbWl0X3RhYmxlLmZpbmRfZWxlbWVudHNfYnlfdGFn
X25hbWUoJ3RoJykKLSAgICAgICAgcmVwb3MgPSBbaGVhZGVyLnRleHQgZm9yIGhlYWRlciBpbiBo
ZWFkZXJzIGlmIGhlYWRlci50ZXh0XQotICAgICAgICBpbmRlY2llcyA9IFsxIGZvciBfIGluIHJh
bmdlKGxlbihoZWFkZXJzKSldCi0gICAgICAgIGNvbW1pdHMgPSB7cmVwbzogW10gZm9yIHJlcG8g
aW4gcmVwb3N9Ci0KLSAgICAgICAgcm93cyA9IGNvbW1pdF90YWJsZS5maW5kX2VsZW1lbnRfYnlf
dGFnX25hbWUoJ3Rib2R5JykuZmluZF9lbGVtZW50c19ieV90YWdfbmFtZSgndHInKQotICAgICAg
ICBmb3Igcm93IGluIHJvd3M6Ci0gICAgICAgICAgICBpbmRlY2llcyA9IFtpIC0gMSBmb3IgaSBp
biBpbmRlY2llc10KLSAgICAgICAgICAgIGNlbGxzID0gcm93LmZpbmRfZWxlbWVudHNfYnlfdGFn
X25hbWUoJ3RkJykKLSAgICAgICAgICAgIGkgPSAwCi0gICAgICAgICAgICBmb3IgY2VsbCBpbiBj
ZWxsczoKLSAgICAgICAgICAgICAgICB3aGlsZSBpIDwgbGVuKGluZGVjaWVzKSBhbmQgaW5kZWNp
ZXNbaV0gIT0gMDoKLSAgICAgICAgICAgICAgICAgICAgaSArPSAxCi0gICAgICAgICAgICAgICAg
c2VsZi5hc3NlcnRMZXNzKGksIGxlbihpbmRlY2llcykpCi0gICAgICAgICAgICAgICAgaW5kZWNp
ZXNbaV0gPSBpbnQoY2VsbC5nZXRfYXR0cmlidXRlKCdyb3dzcGFuJykgb3IgMSkKLSAgICAgICAg
ICAgICAgICBpZiBpID09IDAgb3Igbm90IGNlbGwudGV4dDoKLSAgICAgICAgICAgICAgICAgICAg
Y29udGludWUKLSAgICAgICAgICAgICAgICBjb21taXRzW3JlcG9zW2kgLSAxXV0uYXBwZW5kKGNl
bGwpCi0gICAgICAgIHJldHVybiBjb21taXRzCi0KLSAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNl
Lm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3Nh
bmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKLSAgICBAV2ViU2l0ZVRlc3RDYXNlLmRlY29yYXRv
cigpCi0gICAgZGVmIHRlc3RfZHJhd2VyKHNlbGYsIGRyaXZlciwgKiprd2FyZ3MpOgotICAgICAg
ICBkcml2ZXIuZ2V0KHNlbGYuVVJMICsgJy9jb21taXRzJykKLSAgICAgICAgdGltZS5zbGVlcCgu
MikKLSAgICAgICAgc2VsZi5hc3NlcnROb3RJbignaGlkZGVuJywgZHJpdmVyLmZpbmRfZWxlbWVu
dF9ieV9jbGFzc19uYW1lKCdzaWRlYmFyJykuZ2V0X2F0dHJpYnV0ZSgnY2xhc3MnKSkKLQotICAg
ICAgICBzZWxmLnRvZ2dsZV9kcmF3ZXIoZHJpdmVyLCBhc3NlcnRfZGlzcGxheWVkPUZhbHNlKQot
ICAgICAgICBzZWxmLnRvZ2dsZV9kcmF3ZXIoZHJpdmVyLCBhc3NlcnRfZGlzcGxheWVkPVRydWUp
Ci0KLSAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVk
aXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkK
LSAgICBAV2ViU2l0ZVRlc3RDYXNlLmRlY29yYXRvcigpCi0gICAgZGVmIHRlc3RfY29tbWl0X3Rh
YmxlKHNlbGYsIGRyaXZlciwgY2xpZW50LCAqKmt3YXJncyk6Ci0gICAgICAgIHNlbGYucmVnaXN0
ZXJfYWxsX2NvbW1pdHMoY2xpZW50KQotICAgICAgICBkcml2ZXIuZ2V0KHNlbGYuVVJMICsgJy9j
b21taXRzJykKLQotICAgICAgICB3aGlsZSBub3QgZHJpdmVyLmZpbmRfZWxlbWVudHNfYnlfY2xh
c3NfbmFtZSgnY29tbWl0LXRhYmxlJyk6Ci0gICAgICAgICAgICB0aW1lLnNsZWVwKC4xKQotICAg
ICAgICBjb21taXRfdGFibGUgPSBkcml2ZXIuZmluZF9lbGVtZW50X2J5X2NsYXNzX25hbWUoJ2Nv
bW1pdC10YWJsZScpCi0KLSAgICAgICAgY29tbWl0cyA9IHNlbGYudW5wYWNrX2NvbW1pdF90YWJs
ZShjb21taXRfdGFibGUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMiwgbGVuKGNvbW1pdHMu
a2V5cygpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRJbignc2FmYXJpJywgY29tbWl0cykKLSAgICAg
ICAgc2VsZi5hc3NlcnRJbignd2Via2l0JywgY29tbWl0cykKLQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKDUsIGxlbihjb21taXRzWydzYWZhcmknXSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoNSwgbGVuKGNvbW1pdHNbJ3dlYmtpdCddKSkKLQotICAgICAgICByb3dzID0gY29tbWl0X3Rh
YmxlLmZpbmRfZWxlbWVudF9ieV90YWdfbmFtZSgndGJvZHknKS5maW5kX2VsZW1lbnRzX2J5X3Rh
Z19uYW1lKCd0cicpCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoCi0gICAgICAgICAgICBy
b3dzWzFdLmZpbmRfZWxlbWVudHNfYnlfdGFnX25hbWUoJ3RkJylbMF0udGV4dCwKLSAgICAgICAg
ICAgIHJvd3NbMl0uZmluZF9lbGVtZW50c19ieV90YWdfbmFtZSgndGQnKVswXS50ZXh0LAotICAg
ICAgICApCi0KLSAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1v
Y2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29u
dGV4dCkKLSAgICBAV2ViU2l0ZVRlc3RDYXNlLmRlY29yYXRvcigpCi0gICAgZGVmIHRlc3RfY29t
bWl0KHNlbGYsIGRyaXZlciwgY2xpZW50LCAqKmt3YXJncyk6Ci0gICAgICAgIHNlbGYucmVnaXN0
ZXJfYWxsX2NvbW1pdHMoY2xpZW50KQotICAgICAgICBkcml2ZXIuZ2V0KHNlbGYuVVJMICsgJy9j
b21taXRzJykKLQotICAgICAgICB3aGlsZSBub3QgZHJpdmVyLmZpbmRfZWxlbWVudHNfYnlfY2xh
c3NfbmFtZSgnY29tbWl0LXRhYmxlJyk6Ci0gICAgICAgICAgICB0aW1lLnNsZWVwKC4xKQotICAg
ICAgICBjb21taXRfdGFibGUgPSBkcml2ZXIuZmluZF9lbGVtZW50X2J5X2NsYXNzX25hbWUoJ2Nv
bW1pdC10YWJsZScpCi0KLSAgICAgICAgY29tbWl0cyA9IHNlbGYudW5wYWNrX2NvbW1pdF90YWJs
ZShjb21taXRfdGFibGUpCi0gICAgICAgIGxpbmtzID0gY29tbWl0c1snc2FmYXJpJ11bMF0uZmlu
ZF9lbGVtZW50c19ieV90YWdfbmFtZSgnYScpCi0gICAgICAgIGZvciBsaW5rIGluIGxpbmtzOgot
ICAgICAgICAgICAgaWYgbGluay50ZXh0ICE9ICdNb3JlIEluZm8nOgotICAgICAgICAgICAgICAg
IGxpbmsuY2xpY2soKQotICAgICAgICAgICAgICAgIGJyZWFrCi0KLSAgICAgICAgdGltZS5zbGVl
cCguNSkKLQotICAgICAgICB3aGlsZSBub3QgZHJpdmVyLmZpbmRfZWxlbWVudHNfYnlfY2xhc3Nf
bmFtZSgnY29tbWl0LXRhYmxlJyk6Ci0gICAgICAgICAgICB0aW1lLnNsZWVwKC4xKQotICAgICAg
ICBjb21taXRfdGFibGUgPSBkcml2ZXIuZmluZF9lbGVtZW50X2J5X2NsYXNzX25hbWUoJ2NvbW1p
dC10YWJsZScpCi0KLSAgICAgICAgY29tbWl0cyA9IHNlbGYudW5wYWNrX2NvbW1pdF90YWJsZShj
b21taXRfdGFibGUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMiwgbGVuKGNvbW1pdHMua2V5
cygpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRJbignc2FmYXJpJywgY29tbWl0cykKLSAgICAgICAg
c2VsZi5hc3NlcnRJbignd2Via2l0JywgY29tbWl0cykKLQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKDEsIGxlbihjb21taXRzWydzYWZhcmknXSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
NSwgbGVuKGNvbW1pdHNbJ3dlYmtpdCddKSkKLQotICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2Uu
bW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2Fu
ZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQotICAgIEBXZWJTaXRlVGVzdENhc2UuZGVjb3JhdG9y
KCkKLSAgICBkZWYgdGVzdF9yYWRhcl9zdHJpbmdzKHNlbGYsIGRyaXZlciwgY2xpZW50LCAqKmt3
YXJncyk6Ci0gICAgICAgIHNlbGYucmVnaXN0ZXJfYWxsX2NvbW1pdHMoY2xpZW50KQotICAgICAg
ICBkcml2ZXIuZ2V0KHNlbGYuVVJMICsgJy9jb21taXRzP2lkPTMzNjYxMGE0JykKLQotICAgICAg
ICB3aGlsZSBub3QgZHJpdmVyLmZpbmRfZWxlbWVudHNfYnlfY2xhc3NfbmFtZSgnY29tbWl0LXRh
YmxlJyk6Ci0gICAgICAgICAgICB0aW1lLnNsZWVwKC4xKQotICAgICAgICBjb21taXRfdGFibGUg
PSBkcml2ZXIuZmluZF9lbGVtZW50X2J5X2NsYXNzX25hbWUoJ2NvbW1pdC10YWJsZScpCi0KLSAg
ICAgICAgY29tbWl0cyA9IHNlbGYudW5wYWNrX2NvbW1pdF90YWJsZShjb21taXRfdGFibGUpCi0g
ICAgICAgIGNoYW5nZWxvZyA9IGNvbW1pdHNbJ3NhZmFyaSddWzBdLmZpbmRfZWxlbWVudF9ieV90
YWdfbmFtZSgnZGl2JykKLQotICAgICAgICByYWRhciA9ICc8cmRhcjovL3Byb2JsZW0vOTk5OTk5
OTk+JwotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNoYW5nZWxvZy50ZXh0WzpsZW4ocmFkYXIp
XSwgcmFkYXIpCi0KLSAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2Vy
KG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJh
Q29udGV4dCkKLSAgICBAV2ViU2l0ZVRlc3RDYXNlLmRlY29yYXRvcigpCi0gICAgZGVmIHRlc3Rf
cmFuZ2Vfc2xpZGVyKHNlbGYsIGRyaXZlciwgY2xpZW50LCAqKmt3YXJncyk6Ci0gICAgICAgIHNl
bGYucmVnaXN0ZXJfYWxsX2NvbW1pdHMoY2xpZW50KQotICAgICAgICBkcml2ZXIuZ2V0KHNlbGYu
VVJMICsgJy9jb21taXRzJykKLQotICAgICAgICB3aGlsZSBub3QgZHJpdmVyLmZpbmRfZWxlbWVu
dHNfYnlfY2xhc3NfbmFtZSgnY29tbWl0LXRhYmxlJyk6Ci0gICAgICAgICAgICB0aW1lLnNsZWVw
KC4xKQotICAgICAgICBjb21taXRfdGFibGUgPSBkcml2ZXIuZmluZF9lbGVtZW50X2J5X2NsYXNz
X25hbWUoJ2NvbW1pdC10YWJsZScpCi0KLSAgICAgICAgY29tbWl0cyA9IHNlbGYudW5wYWNrX2Nv
bW1pdF90YWJsZShjb21taXRfdGFibGUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMiwgbGVu
KGNvbW1pdHMua2V5cygpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRJbignc2FmYXJpJywgY29tbWl0
cykKLSAgICAgICAgc2VsZi5hc3NlcnRJbignd2Via2l0JywgY29tbWl0cykKLQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKDUsIGxlbihjb21taXRzWydzYWZhcmknXSkpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoNSwgbGVuKGNvbW1pdHNbJ3dlYmtpdCddKSkKLQotICAgICAgICBjb250cm9s
cyA9IHNlbGYuZmluZF9pbnB1dF93aXRoX25hbWUoZHJpdmVyLCAnTGltaXQ6JykuZmluZF9lbGVt
ZW50c19ieV90YWdfbmFtZSgnaW5wdXQnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDMsIGxl
bihjb250cm9scykpCi0gICAgICAgIGlucHV0ID0gW2NvbnRyb2wgZm9yIGNvbnRyb2wgaW4gY29u
dHJvbHMgaWYgY29udHJvbC5nZXRfYXR0cmlidXRlKCd0eXBlJykgPT0gJ251bWJlciddWzBdCi0g
ICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKGlucHV0KQotCi0gICAgICAgIGlucHV0LmNsZWFy
KCkKLSAgICAgICAgaW5wdXQuc2VuZF9rZXlzKCczJykKLQotICAgICAgICBzZWxmLnRvZ2dsZV9k
cmF3ZXIoZHJpdmVyLCBhc3NlcnRfZGlzcGxheWVkPUZhbHNlKQotCi0gICAgICAgIHdoaWxlIG5v
dCBkcml2ZXIuZmluZF9lbGVtZW50c19ieV9jbGFzc19uYW1lKCdjb21taXQtdGFibGUnKToKLSAg
ICAgICAgICAgIHRpbWUuc2xlZXAoLjEpCi0gICAgICAgIGNvbW1pdF90YWJsZSA9IGRyaXZlci5m
aW5kX2VsZW1lbnRfYnlfY2xhc3NfbmFtZSgnY29tbWl0LXRhYmxlJykKLQotICAgICAgICBjb21t
aXRzID0gc2VsZi51bnBhY2tfY29tbWl0X3RhYmxlKGNvbW1pdF90YWJsZSkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgyLCBsZW4oY29tbWl0cy5rZXlzKCkpKQotICAgICAgICBzZWxmLmFzc2Vy
dEluKCdzYWZhcmknLCBjb21taXRzKQotICAgICAgICBzZWxmLmFzc2VydEluKCd3ZWJraXQnLCBj
b21taXRzKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMywgbGVuKGNvbW1pdHNbJ3NhZmFy
aSddKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgzLCBsZW4oY29tbWl0c1snd2Via2l0J10p
KQotCi0gICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3Jl
ZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQp
Ci0gICAgQFdlYlNpdGVUZXN0Q2FzZS5kZWNvcmF0b3IoKQotICAgIGRlZiB0ZXN0X29uZV9saW5l
X3N3aXRjaChzZWxmLCBkcml2ZXIsIGNsaWVudCwgKiprd2FyZ3MpOgotICAgICAgICBzZWxmLnJl
Z2lzdGVyX2FsbF9jb21taXRzKGNsaWVudCkKLSAgICAgICAgZHJpdmVyLmdldChzZWxmLlVSTCAr
ICcvY29tbWl0cz9pZD03YmU0MDg0MicpCi0KLSAgICAgICAgd2hpbGUgbm90IGRyaXZlci5maW5k
X2VsZW1lbnRzX2J5X2NsYXNzX25hbWUoJ2NvbW1pdC10YWJsZScpOgotICAgICAgICAgICAgdGlt
ZS5zbGVlcCguMSkKLSAgICAgICAgY29tbWl0X3RhYmxlID0gZHJpdmVyLmZpbmRfZWxlbWVudF9i
eV9jbGFzc19uYW1lKCdjb21taXQtdGFibGUnKQotCi0gICAgICAgIGxpbmVfMSA9IHUnQ2hhbmdl
IDQgXHUyMDE0IChQYXJ0IDIpIGRlc2NyaXB0aW9uLicKLSAgICAgICAgbGluZV8yID0gJ1Jldmll
d2VkIGJ5IHBlcnNvbi4nCi0KLSAgICAgICAgY29tbWl0cyA9IHNlbGYudW5wYWNrX2NvbW1pdF90
YWJsZShjb21taXRfdGFibGUpCi0gICAgICAgIGNoYW5nZWxvZyA9IGNvbW1pdHNbJ3NhZmFyaSdd
WzBdLmZpbmRfZWxlbWVudF9ieV90YWdfbmFtZSgnZGl2JykKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChsaW5lXzEsIGNoYW5nZWxvZy50ZXh0KQotCi0gICAgICAgIGNvbnRyb2xzID0gc2VsZi5m
aW5kX2lucHV0X3dpdGhfbmFtZShkcml2ZXIsICdPbmUtbGluZTonKS5maW5kX2VsZW1lbnRzX2J5
X3RhZ19uYW1lKCdzcGFuJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oY29udHJv
bHMpKQotICAgICAgICBpbnB1dCA9IFtjb250cm9sIGZvciBjb250cm9sIGluIGNvbnRyb2xzIGlm
IGNvbnRyb2wuZ2V0X2F0dHJpYnV0ZSgnY2xhc3MnKSA9PSAnc2xpZGVyJ11bMF0KLSAgICAgICAg
c2VsZi5hc3NlcnRJc05vdE5vbmUoaW5wdXQpCi0gICAgICAgIGlucHV0LmNsaWNrKCkKLQotICAg
ICAgICBzZWxmLnRvZ2dsZV9kcmF3ZXIoZHJpdmVyLCBhc3NlcnRfZGlzcGxheWVkPUZhbHNlKQot
Ci0gICAgICAgIHdoaWxlIG5vdCBkcml2ZXIuZmluZF9lbGVtZW50c19ieV9jbGFzc19uYW1lKCdj
b21taXQtdGFibGUnKToKLSAgICAgICAgICAgIHRpbWUuc2xlZXAoLjEpCi0gICAgICAgIGNvbW1p
dF90YWJsZSA9IGRyaXZlci5maW5kX2VsZW1lbnRfYnlfY2xhc3NfbmFtZSgnY29tbWl0LXRhYmxl
JykKLQotICAgICAgICBjb21taXRzID0gc2VsZi51bnBhY2tfY29tbWl0X3RhYmxlKGNvbW1pdF90
YWJsZSkKLSAgICAgICAgY2hhbmdlbG9nID0gY29tbWl0c1snc2FmYXJpJ11bMF0uZmluZF9lbGVt
ZW50X2J5X3RhZ19uYW1lKCdkaXYnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpbmVfMSAr
IGxpbmVfMiwgY2hhbmdlbG9nLnRleHQpCi0KLSAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1v
Y2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRy
YT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKLSAgICBAV2ViU2l0ZVRlc3RDYXNlLmRlY29yYXRvcigp
Ci0gICAgZGVmIHRlc3RfYnJhbmNoX3NlbGVjdGlvbihzZWxmLCBkcml2ZXIsIGNsaWVudCwgKipr
d2FyZ3MpOgotICAgICAgICBzZWxmLnJlZ2lzdGVyX2FsbF9jb21taXRzKGNsaWVudCkKLSAgICAg
ICAgZHJpdmVyLmdldChzZWxmLlVSTCArICcvY29tbWl0cycpCi0KLSAgICAgICAgd2hpbGUgbm90
IGRyaXZlci5maW5kX2VsZW1lbnRzX2J5X2NsYXNzX25hbWUoJ2NvbW1pdC10YWJsZScpOgotICAg
ICAgICAgICAgdGltZS5zbGVlcCguMSkKLSAgICAgICAgY29tbWl0X3RhYmxlID0gZHJpdmVyLmZp
bmRfZWxlbWVudF9ieV9jbGFzc19uYW1lKCdjb21taXQtdGFibGUnKQotCi0gICAgICAgIGNvbW1p
dHMgPSBzZWxmLnVucGFja19jb21taXRfdGFibGUoY29tbWl0X3RhYmxlKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKDIsIGxlbihjb21taXRzLmtleXMoKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0
SW4oJ3NhZmFyaScsIGNvbW1pdHMpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3dlYmtpdCcsIGNv
bW1pdHMpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg1LCBsZW4oY29tbWl0c1snc2FmYXJp
J10pKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDUsIGxlbihjb21taXRzWyd3ZWJraXQnXSkp
Ci0KLSAgICAgICAgY29udHJvbHMgPSBzZWxmLmZpbmRfaW5wdXRfd2l0aF9uYW1lKGRyaXZlciwg
J0JyYW5jaCcpLmZpbmRfZWxlbWVudHNfYnlfdGFnX25hbWUoJ3NlbGVjdCcpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGNvbnRyb2xzKSkKLSAgICAgICAgU2VsZWN0KGNvbnRyb2xz
WzBdKS5zZWxlY3RfYnlfdmlzaWJsZV90ZXh0KCdzYWZhcmktNjA2LWJyYW5jaCcpCi0KLSAgICAg
ICAgc2VsZi50b2dnbGVfZHJhd2VyKGRyaXZlciwgYXNzZXJ0X2Rpc3BsYXllZD1GYWxzZSkKLQot
ICAgICAgICB3aGlsZSBub3QgZHJpdmVyLmZpbmRfZWxlbWVudHNfYnlfY2xhc3NfbmFtZSgnY29t
bWl0LXRhYmxlJyk6Ci0gICAgICAgICAgICB0aW1lLnNsZWVwKC4xKQotICAgICAgICBjb21taXRf
dGFibGUgPSBkcml2ZXIuZmluZF9lbGVtZW50X2J5X2NsYXNzX25hbWUoJ2NvbW1pdC10YWJsZScp
Ci0KLSAgICAgICAgY29tbWl0cyA9IHNlbGYudW5wYWNrX2NvbW1pdF90YWJsZShjb21taXRfdGFi
bGUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMiwgbGVuKGNvbW1pdHMua2V5cygpKSkKLSAg
ICAgICAgc2VsZi5hc3NlcnRJbignc2FmYXJpJywgY29tbWl0cykKLSAgICAgICAgc2VsZi5hc3Nl
cnRJbignd2Via2l0JywgY29tbWl0cykKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDIsIGxl
bihjb21taXRzWydzYWZhcmknXSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMiwgbGVuKGNv
bW1pdHNbJ3dlYmtpdCddKSkKSW5kZXg6IFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3Zp
ZXcvc2l0ZV9tZW51LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNk
YnB5L3ZpZXcvc2l0ZV9tZW51LnB5CShyZXZpc2lvbiAyNjU1MzEpCisrKyBUb29scy9yZXN1bHRz
ZGJweS9yZXN1bHRzZGJweS92aWV3L3NpdGVfbWVudS5weQkobm9uZXhpc3RlbnQpCkBAIC0xLDU0
ICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
LSMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQotIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotIyBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0j
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SCi0jIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0jIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksCi0jIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLWZyb20gY29s
bGVjdGlvbnMgaW1wb3J0IE9yZGVyZWREaWN0Ci1mcm9tIGZsYXNrIGltcG9ydCByZXF1ZXN0LCB1
cmxfZm9yCi0KLQotY2xhc3MgU2l0ZU1lbnUob2JqZWN0KToKLQotICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCB0aXRsZSk6Ci0gICAgICAgIHNlbGYudGl0bGUgPSB0aXRsZQotICAgICAgICBzZWxmLl9u
YW1lX2xpbmtfbWFwcGluZyA9IE9yZGVyZWREaWN0KCkKLQotICAgIGRlZiBhZGRfbGluayhzZWxm
LCBuYW1lLCB1cmwpOgotICAgICAgICBzZWxmLl9uYW1lX2xpbmtfbWFwcGluZ1tuYW1lXSA9IGxh
bWJkYTogdXJsCi0KLSAgICBkZWYgYWRkX2VuZHBvaW50KHNlbGYsIG5hbWUsIGVuZHBvaW50LCBw
YXJhbWV0ZXJzPU5vbmUpOgotICAgICAgICBzZWxmLl9uYW1lX2xpbmtfbWFwcGluZ1tuYW1lXSA9
IGRpY3QoCi0gICAgICAgICAgICB1cmw9bGFtYmRhOiB1cmxfZm9yKGVuZHBvaW50KSwKLSAgICAg
ICAgICAgIHBhcmFtZXRlcnM9cGFyYW1ldGVycyBvciBbXSwKLSAgICAgICAgKQotCi0gICAgQGNs
YXNzbWV0aG9kCi0gICAgZGVmIHJlbmRlcl93aXRoX3NpdGVfbWVudShjbHMpOgotICAgICAgICBk
ZWYgZGVjb3JhdG9yKG1ldGhvZCk6Ci0gICAgICAgICAgICBkZWYgcmVhbF9tZXRob2Qob2JqLCAq
Kmt3YXJncyk6Ci0gICAgICAgICAgICAgICAgc2l0ZV9tZW51ID0gZ2V0YXR0cihvYmosICdzaXRl
X21lbnUnLCBOb25lKQotICAgICAgICAgICAgICAgIGlmIG5vdCBzaXRlX21lbnU6Ci0gICAgICAg
ICAgICAgICAgICAgIHJldHVybiBtZXRob2Qob2JqLCBzaXRlX3RpdGxlPSc/Jywgc2l0ZV9tZW51
PXt9LCAqKmt3YXJncykKLSAgICAgICAgICAgICAgICByZXR1cm4gbWV0aG9kKG9iaiwgc2l0ZV90
aXRsZT1zaXRlX21lbnUudGl0bGUsIHNpdGVfbWVudT1zaXRlX21lbnUuX25hbWVfbGlua19tYXBw
aW5nLCByZXF1ZXN0PXJlcXVlc3QsICoqa3dhcmdzKQotCi0gICAgICAgICAgICByZWFsX21ldGhv
ZC5fX25hbWVfXyA9IG1ldGhvZC5fX25hbWVfXwotICAgICAgICAgICAgcmV0dXJuIHJlYWxfbWV0
aG9kCi0KLSAgICAgICAgcmV0dXJuIGRlY29yYXRvcgpJbmRleDogVG9vbHMvcmVzdWx0c2RicHkv
cmVzdWx0c2RicHkvdmlldy9zdGF0aWMvY3NzL2NvbW1pdC5jc3MKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9zdGF0aWMvY3NzL2NvbW1pdC5jc3MJKHJl
dmlzaW9uIDI2NTUzMSkKKysrIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvc3Rh
dGljL2Nzcy9jb21taXQuY3NzCShub25leGlzdGVudCkKQEAgLTEsMzcgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuICJBUyBJ
UyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotIAotLmNvbW1pdC10YWJsZT50aGVh
ZD50cj50aCB7Ci0gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1ib3JkZXJDb2xvckhhcmQpOwotfQot
Ci0uY29tbWl0LXRhYmxlPnRib2R5PnRyPnRkIHsKLSAgICBib3JkZXItYm90dG9tOiAxcHggc29s
aWQ7Ci0gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1ib3JkZXJDb2xvclNlY3Rpb24pOwotICAgIGxp
bmUtaGVpZ2h0OiAxOwotICAgIG1heC13aWR0aDogNTUwcHg7Ci0gICAgbWluLXdpZHRoOiAyMDBw
eDsKLSAgICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7Ci19CkluZGV4OiBUb29scy9yZXN1bHRzZGJw
eS9yZXN1bHRzZGJweS92aWV3L3N0YXRpYy9jc3Mvc2VhcmNoLmNzcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS92aWV3L3N0YXRpYy9jc3Mvc2VhcmNoLmNzcwko
cmV2aXNpb24gMjY1NTMxKQorKysgVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9z
dGF0aWMvY3NzL3NlYXJjaC5jc3MJKG5vbmV4aXN0ZW50KQpAQCAtMSw0OCArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gIkFT
IElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0gCi0uc2VhcmNoLWNhbmRpZGF0
ZXMgewotICAgIHotaW5kZXg6IDUwOwotICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICAtd2Vi
a2l0LWJhY2tkcm9wLWZpbHRlcjogYmx1cig1cHgpIGJyaWdodG5lc3MoODglKTsKLSAgICBiYWNr
ZHJvcC1maWx0ZXI6IGJsdXIoNXB4KSBicmlnaHRuZXNzKDg4JSk7Ci0gICAgY29sb3I6IHZhcigt
LWludmVyc2VDb2xvcik7Ci0gICAgYm9yZGVyOiAxcHggc29saWQgI2NjYzsKLSAgICBib3JkZXIt
cmFkaXVzOiA1cHg7Ci0gICAgbWFyZ2luOiA1cHggMCAwIDA7Ci0gICAgcGFkZGluZzogNXB4Owot
ICAgIGZvbnQtc2l6ZTogdmFyKC0tc21hbGxTaXplKTsKLSAgICBsaXN0LXN0eWxlOiBub25lOwot
fQotCi0uc2VhcmNoLWNhbmRpZGF0ZXMgZW0gewotICAgIGJhY2tncm91bmQtY29sb3I6ICNjY2M7
Ci0gICAgZm9udC1zdHlsZTogbm9ybWFsOwotfQotCi0uc2VhcmNoLWNhbmRpZGF0ZXMgLnNlbGVj
dGVkIHsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1ibHVlKTsKLSAgICBjb2xvcjogd2hp
dGU7Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogVG9vbHMvcmVzdWx0c2Ri
cHkvcmVzdWx0c2RicHkvdmlldy9zdGF0aWMvY3NzL3RpbWVsaW5lLmNzcwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS92aWV3L3N0YXRpYy9jc3MvdGltZWxpbmUu
Y3NzCShyZXZpc2lvbiAyNjU1MzEpCisrKyBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS92
aWV3L3N0YXRpYy9jc3MvdGltZWxpbmUuY3NzCShub25leGlzdGVudCkKQEAgLTEsMzYgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0g
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0uZG90Lndhcm5p
bmcgewotICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW9yYW5nZURhcmspOwotfQotCi0uZG90
LnRpbWVkb3V0IHsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1vcmFuZ2VMaWdodCk7Ci19
Ci0KLS5kb3QuY3Jhc2hlZCB7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcHVycGxlTGln
aHQpOwotfQpJbmRleDogVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9zdGF0aWMv
Y3NzL3Rvb2x0aXAuY3NzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNk
YnB5L3ZpZXcvc3RhdGljL2Nzcy90b29sdGlwLmNzcwkocmV2aXNpb24gMjY1NTMxKQorKysgVG9v
bHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9zdGF0aWMvY3NzL3Rvb2x0aXAuY3NzCShu
b25leGlzdGVudCkKQEAgLTEsNjYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotIAotLnRvb2x0aXAgewotICAgIHotaW5kZXg6IHZhcigtLXRvcFpJbmRl
eCk7Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIG9wYWNpdHk6IDgwJTsKLSAgICB3aWR0
aDogMDsKLSAgICBoZWlnaHQ6IDA7Ci0gICAgYm9yZGVyLXN0eWxlOiBzb2xpZDsKLSAgICBib3Jk
ZXItd2lkdGg6IDE1cHg7Ci0gICAgLXdlYmtpdC1iYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94
OwotICAgIGJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7Ci19Ci0KLS50b29sdGlwLmFycm93
LXVwIHsKLSAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCAjY2NjZCB0
cmFuc3BhcmVudDsKLX0KLQotLnRvb2x0aXAuYXJyb3ctZG93biB7Ci0gICAgYm9yZGVyLWNvbG9y
OiAjY2NjZCB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDsKLX0KLQotLnRvb2x0
aXAuYXJyb3ctbGVmdCB7Ci0gICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCB0cmFuc3BhcmVu
dCB0cmFuc3BhcmVudCAjY2NjZDsKLX0KLS50b29sdGlwLmFycm93LXJpZ2h0IHsKLSAgICAgYm9y
ZGVyLWNvbG9yOiB0cmFuc3BhcmVudCAjY2NjZCB0cmFuc3BhcmVudCAgdHJhbnNwYXJlbnQ7Ci19
Ci0KLS50b29sdGlwLWNvbnRlbnQgewotICAgIHotaW5kZXg6IHZhcigtLW1pZGRsZVpJbmRleCk7
Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIC13ZWJraXQtYmFja2Ryb3AtZmlsdGVyOiBi
bHVyKDEwcHgpIGJyaWdodG5lc3MoODglKTsKLSAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMTBw
eCkgYnJpZ2h0bmVzcyg4OCUpOwotICAgIGNvbG9yOiB2YXIoLS1pbnZlcnNlQ29sb3IpOwotICAg
IGJvcmRlci1yYWRpdXM6IDVweDsKLSAgICBwYWRkaW5nOiA1cHg7Ci0gICAgZm9udC1zaXplOiB2
YXIoLS1zbWFsbFNpemUpOwotICAgIGxpc3Qtc3R5bGU6IG5vbmU7Ci0gICAgbWF4LXdpZHRoOiA2
MDBweDsKLSAgICBtaW4td2lkdGg6IDMwcHg7Ci0gICAgbWluLWhlaWdodDogMzBweDsKLX0KSW5k
ZXg6IFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvc3RhdGljL2pzL2FyY2hpdmVS
b3V0ZXIuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmll
dy9zdGF0aWMvanMvYXJjaGl2ZVJvdXRlci5qcwkocmV2aXNpb24gMjY1NTMxKQorKysgVG9vbHMv
cmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9zdGF0aWMvanMvYXJjaGl2ZVJvdXRlci5qcwko
bm9uZXhpc3RlbnQpCkBAIC0xLDgwICswLDAgQEAKLS8vIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLS8vIGFyZSBtZXQ6Ci0vLyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LS8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLS8vICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIK
LS8vIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotLy8gVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotLy8gUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0v
LyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0vLyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotLy8gU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0vLyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotLy8gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLS8vIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLS8vIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotY2xhc3MgX0FyY2hpdmVSb3V0ZXIgewot
ICAgIGNvbnN0cnVjdG9yKCkgewotICAgICAgICB0aGlzLnJvdXRlcyA9IHt9OwotICAgICAgICBm
ZXRjaCgnYXJjaGl2ZS1yb3V0ZXMnKS50aGVuKHJlc3BvbnNlID0+IHsKLSAgICAgICAgICAgIGxl
dCBzZWxmID0gdGhpczsKLSAgICAgICAgICAgIHJlc3BvbnNlLmpzb24oKS50aGVuKGpzb24gPT4g
ewotICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGpzb24pKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGNvbnNvbGUuZXJyb3IoSlNPTi5zdHJpbmdpZnkoanNvbiwgbnVsbCwgNCkpOwot
ICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIHRoaXMucm91dGVzID0ganNvbjsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9KS5j
YXRjaChlcnJvciA9PiB7Ci0gICAgICAgICAgICBjb25zb2xlLmVycm9yKEpTT04uc3RyaW5naWZ5
KGVycm9yLCBudWxsLCA0KSk7Ci0gICAgICAgIH0pOwotICAgIH0KLSAgICBfZGV0ZXJtaW5lQXJn
dW1lbnRGcm9tQW5jZXN0cnkoYXJndW1lbnQsIGRlZmF1bHRWYWx1ZSwgc3VpdGU9bnVsbCwgbW9k
ZT1udWxsKSB7Ci0gICAgICAgIGxldCByZXN1bHQgPSBkZWZhdWx0VmFsdWU7Ci0gICAgICAgIGxl
dCByb3V0ZXMgPSB0aGlzLnJvdXRlczsKLQotICAgICAgICBpZiAoYXJndW1lbnQgaW4gcm91dGVz
KQotICAgICAgICAgICAgcmVzdWx0ID0gcm91dGVzW2FyZ3VtZW50XTsKLQotICAgICAgICBbc3Vp
dGUsIG1vZGVdLmZvckVhY2goYW5jZXN0cnkgPT4gewotICAgICAgICAgICAgaWYgKCFhbmNlc3Ry
eSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBpZiAoIShhbmNlc3RyeSBp
biByb3V0ZXMpKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIHJvdXRlcyA9
IHJvdXRlc1thbmNlc3RyeV07Ci0gICAgICAgICAgICBpZiAoYXJndW1lbnQgaW4gcm91dGVzKQot
ICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJvdXRlc1thcmd1bWVudF07Ci0gICAgICAgIH0pOwot
ICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLSAgICBoYXNBcmNoaXZlKHN1aXRlPW51bGws
IG1vZGU9bnVsbCkgewotICAgICAgICByZXR1cm4gdGhpcy5fZGV0ZXJtaW5lQXJndW1lbnRGcm9t
QW5jZXN0cnkoJ2VuYWJsZWQnLCBmYWxzZSwgc3VpdGUsIG1vZGUpOwotICAgIH0KLSAgICBwYXRo
Rm9yKHN1aXRlPW51bGwsIG1vZGU9bnVsbCwgdGVzdD1udWxsKSB7Ci0gICAgICAgIGlmICghdGhp
cy5oYXNBcmNoaXZlKHN1aXRlKSkKLSAgICAgICAgICAgIHJldHVybiBudWxsOwotCi0gICAgICAg
IGxldCBjYW5kaWRhdGUgPSB0aGlzLl9kZXRlcm1pbmVBcmd1bWVudEZyb21BbmNlc3RyeSgncGF0
aCcsICcnLCBzdWl0ZSwgbW9kZSk7Ci0gICAgICAgIGlmICghdGVzdCB8fCAhY2FuZGlkYXRlLnN0
YXJ0c1dpdGgoJyonKSkKLSAgICAgICAgICAgIHJldHVybiBjYW5kaWRhdGU7Ci0gICAgICAgIHJl
dHVybiB0ZXN0LnN1YnN0cmluZygwLCB0ZXN0Lmxhc3RJbmRleE9mKCcuJykpICsgY2FuZGlkYXRl
LnN1YnN0cmluZygxKTsKLSAgICB9Ci0gICAgbGFiZWxGb3Ioc3VpdGU9bnVsbCwgbW9kZT1udWxs
KSB7Ci0gICAgICAgIGlmICghdGhpcy5oYXNBcmNoaXZlKHN1aXRlKSkKLSAgICAgICAgICAgIHJl
dHVybiBudWxsOwotCi0gICAgICAgIHJldHVybiB0aGlzLl9kZXRlcm1pbmVBcmd1bWVudEZyb21B
bmNlc3RyeSgnbGFiZWwnLCAnUmVzdWx0IGFyY2hpdmUnLCBzdWl0ZSwgbW9kZSk7Ci0gICAgfQot
fTsKLQotY29uc3QgQXJjaGl2ZVJvdXRlciA9IG5ldyBfQXJjaGl2ZVJvdXRlcigpOwotCi1leHBv
cnQge0FyY2hpdmVSb3V0ZXJ9OwpJbmRleDogVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkv
dmlldy9zdGF0aWMvanMvY29tbWl0LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL3Jlc3VsdHNkYnB5
L3Jlc3VsdHNkYnB5L3ZpZXcvc3RhdGljL2pzL2NvbW1pdC5qcwkocmV2aXNpb24gMjY1NTMxKQor
KysgVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9zdGF0aWMvanMvY29tbWl0Lmpz
CShub25leGlzdGVudCkKQEAgLTEsNDQ3ICswLDAgQEAKLS8vIENvcHlyaWdodCAoQykgMjAxOSwg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0v
LyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLS8vIGFyZSBtZXQ6Ci0vLyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLS8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLS8vICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0vLwotLy8gVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIKLS8vIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotLy8gVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotLy8gUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0vLyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0vLyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotLy8gU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0vLyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotLy8gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLS8vIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLS8vIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotaW1wb3J0IHtFcnJvckRp
c3BsYXksIGVzY2FwZUhUTUwsIHBhcmFtc1RvUXVlcnksIHF1ZXJ5VG9QYXJhbXN9IGZyb20gJy9h
c3NldHMvanMvY29tbW9uLmpzJzsKLQotY29uc3QgVElNRVNUQU1QX1RPX1VVSURfTVVMVElQTElF
UiA9IDEwMDsKLQotZnVuY3Rpb24gQ29tbWl0VGFibGUoY29tbWl0cywgcmVwb3NpdG9yeUlkcyA9
IFtdLCBvbmVMaW5lID0gZmFsc2UpIHsKLSAgICB2YXIgcm93cyA9IFtdCi0gICAgaWYgKCFjb21t
aXRzIHx8ICFjb21taXRzLmxlbmd0aCkKLSAgICAgICAgcmV0dXJuIEVycm9yRGlzcGxheSh7ZXJy
b3I6ICdObyBDb21taXRzIEZvdW5kJywgZGVzY3JpcHRpb246ICdDYW5ub3QgZGlzcGxheSB0aGUg
Y29tbWl0IHRhYmxlLCBubyBjb21taXRzIGZvdW5kLid9KTsKLSAgICB2YXIgc29ydGVkX2NvbW1p
dHMgPSBjb21taXRzLnNvcnQoKGEsIGIpID0+IHsKLSAgICAgICAgcmV0dXJuIChiLnRpbWVzdGFt
cCAqIFRJTUVTVEFNUF9UT19VVUlEX01VTFRJUExJRVIgKyBiLm9yZGVyKSAtIChhLnRpbWVzdGFt
cCAqIFRJTUVTVEFNUF9UT19VVUlEX01VTFRJUExJRVIgKyBhLm9yZGVyKTsKLSAgICB9KTsKLQot
ICAgIHZhciByZXBvc2l0b3JpZXNfd2l0aF9jb21taXRzID0gW10KLSAgICBpZiAoIXJlcG9zaXRv
cnlJZHMgfHwgIXJlcG9zaXRvcnlJZHMubGVuZ3RoKSB7Ci0gICAgICAgIHJlcG9zaXRvcnlJZHMg
PSBbXTsKLSAgICAgICAgY29tbWl0cy5mb3JFYWNoKChjb21taXQpID0+IHsKLSAgICAgICAgICAg
IGlmIChyZXBvc2l0b3J5SWRzLmluZGV4T2YoY29tbWl0LnJlcG9zaXRvcnlfaWQpIDwgMCkKLSAg
ICAgICAgICAgICAgICByZXBvc2l0b3J5SWRzLnB1c2goY29tbWl0LnJlcG9zaXRvcnlfaWQpOwot
ICAgICAgICB9KTsKLSAgICAgICAgcmVwb3NpdG9yeUlkcy5zb3J0KCk7Ci0gICAgfQotCi0gICAg
dmFyIGxhc3RWYWxpZENlbGxGb3JJbmRleCA9IFswXTsKLSAgICB2YXIgcm93cyA9IFtbe3Jvd3Nw
YW46IDEsIHRpbWVzdGFtcDogc29ydGVkX2NvbW1pdHNbMF0udGltZXN0YW1wfV1dOwotCi0gICAg
Zm9yIChjb25zdCByZXBvc2l0b3J5IG9mIHJlcG9zaXRvcnlJZHMpIHsKLSAgICAgICAgZm9yIChs
ZXQgaW5kZXggPSAwOyBpbmRleCA8IHNvcnRlZF9jb21taXRzLmxlbmd0aDsgKytpbmRleCkgewot
ICAgICAgICAgICAgaWYgKHNvcnRlZF9jb21taXRzW2luZGV4XS5yZXBvc2l0b3J5X2lkID09PSBy
ZXBvc2l0b3J5KSB7Ci0gICAgICAgICAgICAgICAgcmVwb3NpdG9yaWVzX3dpdGhfY29tbWl0cy5w
dXNoKHJlcG9zaXRvcnkpOwotCi0gICAgICAgICAgICAgICAgbGFzdFZhbGlkQ2VsbEZvckluZGV4
LnB1c2goMCk7Ci0gICAgICAgICAgICAgICAgcm93c1swXS5wdXNoKHtyb3dzcGFuOiAxLCBjb21t
aXQ6IHNvcnRlZF9jb21taXRzW2luZGV4XX0pOwotICAgICAgICAgICAgICAgIHNvcnRlZF9jb21t
aXRzLnNwbGljZShpbmRleCwgMSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBmb3IgKGNvbnN0IGNvbW1pdCBvZiBzb3J0ZWRf
Y29tbWl0cykgewotICAgICAgICBsZXQgcmVwb19pbmRleCA9IHJlcG9zaXRvcmllc193aXRoX2Nv
bW1pdHMuaW5kZXhPZihjb21taXQucmVwb3NpdG9yeV9pZCk7Ci0gICAgICAgIGlmIChyZXBvX2lu
ZGV4IDwgMCkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAoIXJvd3Nbcm93cy5s
ZW5ndGggLSAxXVtyZXBvX2luZGV4ICsgMV0gJiYgY29tbWl0LnRpbWVzdGFtcCA9PT0gcm93c1ts
YXN0VmFsaWRDZWxsRm9ySW5kZXhbMF1dWzBdLnRpbWVzdGFtcCkgewotICAgICAgICAgICAgcm93
c1tsYXN0VmFsaWRDZWxsRm9ySW5kZXhbcmVwb19pbmRleCArIDFdXVtyZXBvX2luZGV4ICsgMV0u
cm93c3BhbiAtPSAxOwotICAgICAgICAgICAgcm93c1tyb3dzLmxlbmd0aCAtIDFdW3JlcG9faW5k
ZXggKyAxXSA9IHtyb3dzcGFuOiAxLCBjb21taXQ6IGNvbW1pdH07Ci0gICAgICAgICAgICBsYXN0
VmFsaWRDZWxsRm9ySW5kZXhbcmVwb19pbmRleCArIDFdID0gcm93cy5sZW5ndGggLSAxOwotICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLQotICAgICAgICByb3dzLnB1c2gobmV3IEFy
cmF5KHJlcG9zaXRvcmllc193aXRoX2NvbW1pdHMubGVuZ3RoICsgMSkuZmlsbChudWxsKSk7Ci0g
ICAgICAgIGlmIChjb21taXQudGltZXN0YW1wID09PSByb3dzW2xhc3RWYWxpZENlbGxGb3JJbmRl
eFswXV1bMF0udGltZXN0YW1wKQotICAgICAgICAgICAgcm93c1tsYXN0VmFsaWRDZWxsRm9ySW5k
ZXhbMF1dWzBdLnJvd3NwYW4gKz0gMQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHJvd3Nb
cm93cy5sZW5ndGggLSAxXVswXSA9IHtyb3dzcGFuOiAxLCB0aW1lc3RhbXA6IGNvbW1pdC50aW1l
c3RhbXB9OwotICAgICAgICAgICAgbGFzdFZhbGlkQ2VsbEZvckluZGV4WzBdID0gcm93cy5sZW5n
dGggLSAxOwotICAgICAgICB9Ci0gICAgICAgIHJvd3Nbcm93cy5sZW5ndGggLSAxXVtyZXBvX2lu
ZGV4ICsgMV0gPSB7cm93c3BhbjogMSwgY29tbWl0OiBjb21taXR9OwotICAgICAgICBsYXN0VmFs
aWRDZWxsRm9ySW5kZXhbcmVwb19pbmRleCArIDFdID0gcm93cy5sZW5ndGggLSAxOwotICAgICAg
ICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgcmVwb3NpdG9yaWVzX3dpdGhfY29tbWl0cy5s
ZW5ndGg7ICsraW5kZXgpIHsKLSAgICAgICAgICAgIGlmIChpbmRleCAhPSByZXBvX2luZGV4KQot
ICAgICAgICAgICAgICAgIHJvd3NbbGFzdFZhbGlkQ2VsbEZvckluZGV4W2luZGV4ICsgMV1dW2lu
ZGV4ICsgMV0ucm93c3BhbiArPSAxOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIGA8
dGFibGUgY2xhc3M9InRhYmxlIGZ1bGwtd2lkdGggY29tbWl0LXRhYmxlIj4KLSAgICAgICAgPHRo
ZWFkPgotICAgICAgICAgICAgPHRoPjwvdGg+Ci0gICAgICAgICAgICAke3JlcG9zaXRvcmllc193
aXRoX2NvbW1pdHMubWFwKGlkID0+IGA8dGg+JHtpZH08L3RoPmApLmpvaW4oJycpfQotICAgICAg
ICA8L3RoZWFkPgotICAgICAgICA8dGJvZHk+Ci0gICAgICAgICAgICAke3Jvd3MubWFwKHJvdyA9
PmA8dHI+Ci0gICAgICAgICAgICAgICAgJHtyb3cubWFwKGZ1bmN0aW9uKGNlbGwpIHsKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKCFjZWxsKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
ICcnOwotICAgICAgICAgICAgICAgICAgICBpZiAoY2VsbC50aW1lc3RhbXApCi0gICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gYDx0ZCByb3dzcGFuPSIke2NlbGwucm93c3Bhbn0iPiR7bmV3
IERhdGUoY2VsbC50aW1lc3RhbXAgKiAxMDAwKS50b0xvY2FsZVN0cmluZygpfTwvdGQ+YDsKLQot
ICAgICAgICAgICAgICAgICAgICBsZXQgY29tbWl0QXJncyA9IHBhcmFtc1RvUXVlcnkoewotICAg
ICAgICAgICAgICAgICAgICAgICAgcmVwb3NpdG9yeV9pZDogW2NlbGwuY29tbWl0LnJlcG9zaXRv
cnlfaWRdLAotICAgICAgICAgICAgICAgICAgICAgICAgYnJhbmNoOiBbY2VsbC5jb21taXQuYnJh
bmNoXSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBbY2VsbC5jb21taXQuaWRdLAotICAg
ICAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICAgICAgbGV0IGludmVzdGlnYXRl
QXJncyA9IHtpZDogW2NlbGwuY29tbWl0LmlkXX07Ci0gICAgICAgICAgICAgICAgICAgIGlmICgh
WydtYXN0ZXInLCAndHJ1bmsnXS5pbmNsdWRlcyhjZWxsLmNvbW1pdC5icmFuY2gpKQotICAgICAg
ICAgICAgICAgICAgICAgICAgaW52ZXN0aWdhdGVBcmdzLmJyYW5jaCA9IFtjZWxsLmNvbW1pdC5i
cmFuY2hdOwotCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBgPHRkIHJvd3NwYW49IiR7Y2Vs
bC5yb3dzcGFufSI+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIvY29tbWl0PyR7
Y29tbWl0QXJnc30iPiR7Y2VsbC5jb21taXQuaWR9PC9hPiA8YnI+Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBCcmFuY2g6ICR7Y2VsbC5jb21taXQuYnJhbmNofSA8YnI+Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBDb21taXR0ZXI6ICR7ZXNjYXBlSFRNTChjZWxsLmNvbW1pdC5jb21taXR0ZXIp
fSA8YnI+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIvY29tbWl0L2luZm8/JHtj
b21taXRBcmdzfSI+TW9yZSBJbmZvPC9hPjxicj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxh
IGhyZWY9Ii9pbnZlc3RpZ2F0ZT8ke3BhcmFtc1RvUXVlcnkoaW52ZXN0aWdhdGVBcmdzKX0iPlRl
c3QgcmVzdWx0cyBmb3IgY29tbWl0PC9hPgotICAgICAgICAgICAgICAgICAgICAgICAgJHtmdW5j
dGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWNlbGwuY29tbWl0Lm1l
c3NhZ2UpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnJzsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAob25lTGluZSkKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGA8YnI+PGRpdj4ke2VzY2FwZUhUTUwoY2VsbC5jb21taXQubWVz
c2FnZS5zcGxpdCgnXG4nKVswXSl9PC9kaXY+YDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gYDxicj48ZGl2PiR7ZXNjYXBlSFRNTChjZWxsLmNvbW1pdC5tZXNzYWdlKX08L2Rp
dj5gOwotICAgICAgICAgICAgICAgICAgICAgICAgfSgpfQotICAgICAgICAgICAgICAgICAgICA8
L3RkPmA7Ci0gICAgICAgICAgICAgICAgfSkuam9pbignJyl9Ci0gICAgICAgICAgICA8L3RyPmAp
LmpvaW4oJycpfQotICAgICAgICA8L3Rib2R5PgotICAgIDwvdGFibGU+YDsKLX0KLQotY2xhc3Mg
Q29tbWl0IHsKLSAgICBjb25zdHJ1Y3Rvcihqc29uKSB7Ci0gICAgICAgIHRoaXMuYnJhbmNoID0g
anNvbi5icmFuY2g7Ci0gICAgICAgIHRoaXMuY29tbWl0dGVyID0ganNvbi5jb21taXR0ZXI7Ci0g
ICAgICAgIHRoaXMuaWQgPSBqc29uLmlkOwotICAgICAgICB0aGlzLm1lc3NhZ2UgPSBqc29uLm1l
c3NhZ2U7Ci0gICAgICAgIHRoaXMub3JkZXIgPSBqc29uLm9yZGVyOwotICAgICAgICB0aGlzLnJl
cG9zaXRvcnlfaWQgPSBqc29uLnJlcG9zaXRvcnlfaWQ7Ci0gICAgICAgIHRoaXMudGltZXN0YW1w
ID0ganNvbi50aW1lc3RhbXA7Ci0gICAgICAgIHRoaXMudXVpZCA9IHRoaXMudGltZXN0YW1wICog
VElNRVNUQU1QX1RPX1VVSURfTVVMVElQTElFUiArIHRoaXMub3JkZXI7Ci0gICAgfQotICAgIGNv
bXBhcmUoY29tbWl0KSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnV1aWQgLSBjb21taXQudXVpZDsK
LSAgICB9Ci19OwotCi1jbGFzcyBfQ29tbWl0QmFuayB7Ci0gICAgY29uc3RydWN0b3IoKSB7Ci0g
ICAgICAgIHRoaXMuY29tbWl0cyA9IFtdOwotCi0gICAgICAgIGNvbnN0IHBhcmFtcyA9IHF1ZXJ5
VG9QYXJhbXMoZG9jdW1lbnQuVVJMLnNwbGl0KCc/JylbMV0pOwotCi0gICAgICAgIHRoaXMuX2Jy
YW5jaGVzID0gbmV3IFNldChwYXJhbXMuYnJhbmNoKTsKLSAgICAgICAgdGhpcy5fcmVwb3NpdG9y
aWVzID0gbmV3IFNldChwYXJhbXMucmVwb3NpdG9yeV9pZCk7Ci0gICAgICAgIHRoaXMuX2JlZ2lu
VXVpZCA9IG51bGw7Ci0gICAgICAgIHRoaXMuX2VuZFV1aWQgPSBudWxsOwotICAgICAgICB0aGlz
LmNhbGxiYWNrcyA9IFtdOwotCi0gICAgfQotICAgIGxhdGVzdChwYXJhbXMpIHsKLSAgICAgICAg
dGhpcy5fYnJhbmNoZXMgPSBuZXcgU2V0KHBhcmFtcy5icmFuY2gpOwotICAgICAgICB0aGlzLl9y
ZXBvc2l0b3JpZXMgPSBuZXcgU2V0KHBhcmFtcy5yZXBvc2l0b3J5X2lkKTsKLSAgICAgICAgdGhp
cy5fYmVnaW5VdWlkID0gbnVsbDsKLSAgICAgICAgdGhpcy5fZW5kVXVpZCA9IG51bGw7Ci0KLSAg
ICAgICAgLy8gT25seSBwcm92aWRlIHRoZSBsYXRlc3QgY29tbWl0cwotICAgICAgICBjb25zdCBz
ZWxmID0gdGhpczsKLSAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUs
IHJlamVjdCkgewotICAgICAgICAgICAgZmV0Y2goT2JqZWN0LmtleXMocGFyYW1zKS5sZW5ndGgg
PyBgYXBpL2NvbW1pdHM/JHtwYXJhbXNUb1F1ZXJ5KHBhcmFtcyl9YCA6ICdhcGkvY29tbWl0cycp
LnRoZW4ocmVzcG9uc2UgPT4gewotICAgICAgICAgICAgICAgIHJlc3BvbnNlLmpzb24oKS50aGVu
KGpzb24gPT4gewotICAgICAgICAgICAgICAgICAgICBzZWxmLl9iZWdpblV1aWQgPSBNYXRoLmZs
b29yKERhdGUubm93KCkgLyAxMDAwKTsKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fZW5kVXVp
ZCA9IDA7Ci0KLSAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2xkZXN0SWRGb3JSZXBvID0ge307
Ci0gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNhbmRpZGF0ZXMgPSBbXTsKLSAgICAgICAgICAg
ICAgICAgICAganNvbi5mb3JFYWNoKGRhdHVtID0+ewotICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgY29tbWl0ID0gbmV3IENvbW1pdChkYXR1bSk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBjYW5kaWRhdGVzLnB1c2goY29tbWl0KTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KG9sZGVzdElkRm9yUmVwb1tjb21taXQucmVwb3NpdG9yeV9pZF0pCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgb2xkZXN0SWRGb3JSZXBvW2NvbW1pdC5yZXBvc2l0b3J5X2lkXSA9IE1hdGgu
bWluKGNvbW1pdC51dWlkLCBvbGRlc3RJZEZvclJlcG9bY29tbWl0LnJlcG9zaXRvcnlfaWRdKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBvbGRlc3RJZEZvclJlcG9bY29tbWl0LnJlcG9zaXRvcnlfaWRdID0gY29tbWl0LnV1aWQ7Ci0g
ICAgICAgICAgICAgICAgICAgIH0pOwotCi0gICAgICAgICAgICAgICAgICAgIGxldCBvbGRlc3RW
YWxpZFV1aWQgPSAwOwotICAgICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhvbGRlc3RJZEZv
clJlcG8pLmZvckVhY2goaWQgPT4gewotICAgICAgICAgICAgICAgICAgICAgICAgb2xkZXN0VmFs
aWRVdWlkID0gTWF0aC5tYXgob2xkZXN0VmFsaWRVdWlkLCBpZCk7Ci0gICAgICAgICAgICAgICAg
ICAgIH0pOwotCi0gICAgICAgICAgICAgICAgICAgIGNhbmRpZGF0ZXMuZm9yRWFjaChjb21taXQg
PT4gewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbW1pdC51dWlkIDw9IG9sZGVzdFZh
bGlkVXVpZCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBzZWxmLmNvbW1pdHMucHVzaChjb21taXQpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgc2VsZi5fYmVnaW5VdWlkID0gTWF0aC5taW4oY29tbWl0LnV1aWQsIHNlbGYuX2Jl
Z2luVXVpZCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9lbmRVdWlkID0gTWF0aC5t
YXgoY29tbWl0LnV1aWQsIHNlbGYuX2VuZFV1aWQpOwotICAgICAgICAgICAgICAgICAgICB9KTsK
LQotICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZi5fYmVnaW5VdWlkID4gc2VsZi5fZW5kVXVp
ZCkgewotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fYmVnaW5VdWlkID0gbnVsbDsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2VuZFV1aWQgPSBudWxsOwotICAgICAgICAgICAg
ICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh0aGlzKTsKLSAgICAgICAg
ICAgICAgICB9KTsKLSAgICAgICAgICAgIH0pLmNhdGNoKGVycm9yID0+IHsKLSAgICAgICAgICAg
ICAgICAvLyBJZiB0aGUgbG9hZCBmYWlscywgbG9nIHRoZSBlcnJvciBhbmQgY29udGludWUKLSAg
ICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKEpTT04uc3RyaW5naWZ5KGVycm9yLCBudWxsLCA0
KSk7Ci0gICAgICAgICAgICAgICAgcmVqZWN0KGVycm9yKTsKLSAgICAgICAgICAgIH0pOwotICAg
ICAgICB9KTsKLSAgICB9Ci0gICAgY29tbWl0QnlVdWlkKHV1aWQpIHsKLSAgICAgICAgbGV0IGJl
Z2luID0gMDsKLSAgICAgICAgbGV0IGVuZCA9IHRoaXMuY29tbWl0cy5sZW5ndGggLSAxOwotICAg
ICAgICB3aGlsZSAoYmVnaW4gPD0gZW5kKSB7Ci0gICAgICAgICAgICBjb25zdCBtaWQgPSBNYXRo
LmNlaWwoKGJlZ2luICsgZW5kKSAvIDIpOwotICAgICAgICAgICAgY29uc3QgY2FuZGlkYXRlID0g
dGhpcy5jb21taXRzW21pZF07Ci0gICAgICAgICAgICBpZiAoY2FuZGlkYXRlLnV1aWQgPT09IHV1
aWQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGNhbmRpZGF0ZTsKLSAgICAgICAgICAgIGlmIChj
YW5kaWRhdGUudXVpZCA8IHV1aWQpCi0gICAgICAgICAgICAgICAgYmVnaW4gPSBtaWQgKyAxOwot
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGVuZCA9IG1pZCAtIDE7Ci0gICAgICAg
IH0KLSAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgfQotICAgIGNvbW1pdHNEdXJpbmcobWluVXVp
ZCwgbWF4VXVpZCA9IDApIHsKLSAgICAgICAgbGV0IGNvbW1pdHMgPSBbXTsKLSAgICAgICAgbGV0
IGJlZ2luID0gMDsKLSAgICAgICAgbGV0IGVuZCA9IHRoaXMuY29tbWl0cy5sZW5ndGggLSAxOwot
ICAgICAgICBsZXQgY291bnRlciA9IDA7Ci0gICAgICAgIGxldCBpbmRleCA9IHRoaXMuY29tbWl0
cy5sZW5ndGggLSAxOwotCi0gICAgICAgIGlmIChtYXhVdWlkID09IDApCi0gICAgICAgICAgICBt
YXhVdWlkID0gbWluVXVpZDsKLSAgICAgICAgaWYgKG1heFV1aWQgPCBtaW5VdWlkKSB7Ci0gICAg
ICAgICAgICBjb25zb2xlLmVycm9yKCdJbnZhbGlkIHV1aWQgcmFuZ2UnKTsKLSAgICAgICAgICAg
IHJldHVybiBjb21taXRzOwotICAgICAgICB9Ci0KLSAgICAgICAgd2hpbGUgKGJlZ2luIDw9IGVu
ZCkgewotICAgICAgICAgICAgY291bnRlciA9IE1hdGguY2VpbCgoYmVnaW4gKyBlbmQpIC8gMik7
Ci0gICAgICAgICAgICBjb25zdCBjYW5kaWRhdGUgPSB0aGlzLmNvbW1pdHNbY291bnRlcl07Ci0g
ICAgICAgICAgICBpZiAobWluVXVpZCA8PSBjYW5kaWRhdGUudXVpZCAmJiBjYW5kaWRhdGUudXVp
ZCA8PSBtYXhVdWlkKSB7Ci0gICAgICAgICAgICAgICAgaW5kZXggPSBjb3VudGVyIC0gMTsKLSAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKGNh
bmRpZGF0ZS51dWlkIDwgbWluVXVpZCkKLSAgICAgICAgICAgICAgICBiZWdpbiA9IGNvdW50ZXIg
KyAxOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGVuZCA9IGNvdW50ZXIgLSAx
OwotICAgICAgICB9Ci0gICAgICAgIHdoaWxlIChjb3VudGVyIDwgdGhpcy5jb21taXRzLmxlbmd0
aCkgewotICAgICAgICAgICAgY29uc3QgY2FuZGlkYXRlID0gdGhpcy5jb21taXRzW2NvdW50ZXJd
OwotICAgICAgICAgICAgaWYgKG1pblV1aWQgPiBjYW5kaWRhdGUudXVpZCB8fCBjYW5kaWRhdGUu
dXVpZCA+IG1heFV1aWQpCi0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGNvbW1p
dHMucHVzaChjYW5kaWRhdGUpOwotICAgICAgICAgICAgKytjb3VudGVyOwotICAgICAgICB9Ci0K
LSAgICAgICAgbGV0IHJlcG9zaXRvcmllcyA9IG5ldyBTZXQoKTsKLSAgICAgICAgaWYgKGNvbW1p
dHMubGVuZ3RoKQotICAgICAgICAgICAgcmVwb3NpdG9yaWVzLmFkZChjb21taXRzWzBdLnJlcG9z
aXRvcnlfaWQpOwotCi0gICAgICAgIHdoaWxlIChpbmRleCA+PSAwKSB7Ci0gICAgICAgICAgICBp
ZiAocmVwb3NpdG9yaWVzLmhhcyh0aGlzLmNvbW1pdHNbaW5kZXhdLnJlcG9zaXRvcnlfaWQpKSB7
Ci0gICAgICAgICAgICAgICAgLS1pbmRleDsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICh0aGlzLl9yZXBvc2l0b3JpZXMubGVuZ3RoICYm
ICF0aGlzLl9yZXBvc2l0b3JpZXMuaGFzKHRoaXMuY29tbWl0c1tpbmRleF0ucmVwb3NpdG9yeV9p
ZCkpIHsKLSAgICAgICAgICAgICAgICAtLWluZGV4OwotICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBjb21taXRzLnVuc2hpZnQodGhpcy5jb21t
aXRzW2luZGV4XSk7Ci0gICAgICAgICAgICByZXBvc2l0b3JpZXMuYWRkKHRoaXMuY29tbWl0c1tp
bmRleF0ucmVwb3NpdG9yeV9pZCk7Ci0gICAgICAgICAgICBpZiAocmVwb3NpdG9yaWVzLmxlbmd0
aCA9PSB0aGlzLl9yZXBvc2l0b3JpZXMubGVuZ3RoKQotICAgICAgICAgICAgICAgIGJyZWFrOwot
Ci0gICAgICAgICAgICAtLWluZGV4OwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBjb21taXRz
OwotICAgIH0KLSAgICBfbG9hZFNpYmxpbmdzKGNvbW1pdCkgewotICAgICAgICBjb25zdCBxdWVy
eSA9IHBhcmFtc1RvUXVlcnkoewotICAgICAgICAgICAgYnJhbmNoOiBbY29tbWl0LmJyYW5jaF0s
Ci0gICAgICAgICAgICByZXBvc2l0b3J5X2lkOiBbY29tbWl0LnJlcG9zaXRvcnlfaWRdLAotICAg
ICAgICAgICAgaWQ6IFtjb21taXQuaWRdLAotICAgICAgICB9KTsKLSAgICAgICAgcmV0dXJuIGZl
dGNoKCdhcGkvY29tbWl0cy9zaWJsaW5ncz8nICsgcXVlcnkpLnRoZW4ocmVzcG9uc2UgPT4gewot
ICAgICAgICAgICAgbGV0IHNlbGYgPSB0aGlzOwotICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxM
ZW5ndGggPSBzZWxmLmNvbW1pdHMubGVuZ3RoOwotICAgICAgICAgICAgcmVzcG9uc2UuanNvbigp
LnRoZW4oanNvbiA9PiB7Ci0gICAgICAgICAgICAgICAgT2JqZWN0LmtleXMoanNvbikuZm9yRWFj
aChrZXkgPT4gewotICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fcmVwb3NpdG9yaWVzLnNp
emUgPiAwICYmICF0aGlzLl9yZXBvc2l0b3JpZXMuaGFzKGtleSkpCi0gICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgICAgICAgICAgLy8gV2UgZ2V0IHNpYmlsaW5n
IGNvbW1pdHMgYmFja3dhcmRzCi0gICAgICAgICAgICAgICAgICAgIGxldCBpbmRleCA9IHNlbGYu
Y29tbWl0cy5sZW5ndGggLSAxOwotICAgICAgICAgICAgICAgICAgICBqc29uW2tleV0uZm9yRWFj
aChjb21taXRKc29uID0+IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbW1pdCA9
IG5ldyBDb21taXQoY29tbWl0SnNvbik7Ci0gICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAo
aW5kZXggPj0gMCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZWxmLmNvbW1p
dHNbaW5kZXhdLnV1aWQgPCBjb21taXQudXVpZCkgewotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZWxmLmNvbW1pdHMuc3BsaWNlKGluZGV4LCAwLCBjb21taXQpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAtLWluZGV4OwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKHNlbGYuY29tbWl0c1tpbmRleF0udXVpZCA9PT0gY29tbWl0
LnV1aWQpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC0taW5kZXg7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZXggPCAwKQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNlbGYuY29tbWl0cy5zcGxpY2UoMCwgMCwgY29tbWl0KTsKLSAgICAgICAgICAg
ICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0KLSAgICAgICAgICAgICAgICBpZiAo
b3JpZ2luYWxMZW5ndGggIT0gc2VsZi5jb21taXRzLmxlbmd0aCkKLSAgICAgICAgICAgICAgICAg
ICAgc2VsZi5jYWxsYmFja3MuZm9yRWFjaChjYWxsYmFjayA9PiB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBjYWxsYmFjaygpOwotICAgICAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAg
IH0pOwotICAgICAgICB9KTsKLSAgICB9Ci0gICAgX2xvYWQoYmVnaW5VdWlkLCBlbmRVdWlkKSB7
Ci0gICAgICAgIGlmIChlbmRVdWlkIDwgYmVnaW5VdWlkKQotICAgICAgICAgICAgcmV0dXJuOwot
Ci0gICAgICAgIGNvbnN0IGxpbWl0ID0gMjUwMDsKLSAgICAgICAgY29uc3QgcXVlcnkgPSBwYXJh
bXNUb1F1ZXJ5KHsKLSAgICAgICAgICAgIGJyYW5jaDogWy4uLnRoaXMuX2JyYW5jaGVzXSwKLSAg
ICAgICAgICAgIGxpbWl0OiBbbGltaXRdLAotICAgICAgICAgICAgcmVwb3NpdG9yeV9pZDogWy4u
LnRoaXMuX3JlcG9zaXRvcmllc10sCi0gICAgICAgICAgICBhZnRlcl91dWlkOiBbYmVnaW5VdWlk
XSwKLSAgICAgICAgICAgIGJlZm9yZV91dWlkOiBbZW5kVXVpZF0KLSAgICAgICAgfSk7Ci0KLSAg
ICAgICAgcmV0dXJuIGZldGNoKHF1ZXJ5ID8gJ2FwaS9jb21taXRzPycgKyBxdWVyeSA6ICdhcGkv
Y29tbWl0cycpLnRoZW4ocmVzcG9uc2UgPT4gewotICAgICAgICAgICAgbGV0IHNlbGYgPSB0aGlz
OwotICAgICAgICAgICAgcmVzcG9uc2UuanNvbigpLnRoZW4oanNvbiA9PiB7Ci0gICAgICAgICAg
ICAgICAgLy8gV2Ugc2hvdWxkIGhhdmUgZ290dGVuIGEgbGlzdCBvZiBjb21taXRzLCBpZiBub3Qs
IGxvZyB0aGUgcmVzdWx0IGFuZCBjb250aW51ZS4KLSAgICAgICAgICAgICAgICBpZiAoIUFycmF5
LmlzQXJyYXkoanNvbikpIHsKLSAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihKU09O
LnN0cmluZ2lmeShqc29uLCBudWxsLCA0KSk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBsZXQgb3JpZ2luYWxMZW5ndGgg
PSBzZWxmLmNvbW1pdHMubGVuZ3RoOwotICAgICAgICAgICAgICAgIGxldCBjb21taXRzSW5kZXgg
PSAwOwotICAgICAgICAgICAgICAgIGxldCBjb3VudEZvclJlcG9zaXRvcnkgPSBuZXcgTWFwKCk7
Ci0gICAgICAgICAgICAgICAgbGV0IGZpcnN0SW5kZXhGb3JSZXBvc2l0b3J5ID0gbmV3IE1hcCgp
OwotICAgICAgICAgICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBqc29uLmxlbmd0
aDsgKytpbmRleCkgewotICAgICAgICAgICAgICAgICAgICBjb25zdCBjb21taXQgPSBuZXcgQ29t
bWl0KGpzb25baW5kZXhdKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFmaXJzdEluZGV4Rm9y
UmVwb3NpdG9yeS5oYXMoY29tbWl0LnJlcG9zaXRvcnlfaWQpKQotICAgICAgICAgICAgICAgICAg
ICAgICAgZmlyc3RJbmRleEZvclJlcG9zaXRvcnkuc2V0KGNvbW1pdC5yZXBvc2l0b3J5X2lkLCBp
bmRleCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghY291bnRGb3JSZXBvc2l0b3J5Lmhhcyhj
b21taXQucmVwb3NpdG9yeV9pZCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBjb3VudEZvclJl
cG9zaXRvcnkuc2V0KGNvbW1pdC5yZXBvc2l0b3J5X2lkLCAxKTsKLSAgICAgICAgICAgICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgY291bnRGb3JSZXBvc2l0b3J5LnNldChj
b21taXQucmVwb3NpdG9yeV9pZCwgY291bnRGb3JSZXBvc2l0b3J5LmdldChjb21taXQucmVwb3Np
dG9yeV9pZCkgKyAxKTsKLQotICAgICAgICAgICAgICAgICAgICB3aGlsZSAoY29tbWl0c0luZGV4
IDwgc2VsZi5jb21taXRzLmxlbmd0aCkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNl
bGYuY29tbWl0c1tjb21taXRzSW5kZXhdLnV1aWQgPiBjb21taXQudXVpZCkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNlbGYuY29tbWl0cy5zcGxpY2UoY29tbWl0c0luZGV4LCAwLCBj
b21taXQpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrY29tbWl0c0luZGV4OwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGYuY29tbWl0c1tjb21taXRzSW5kZXhd
LnV1aWQgPT09IGNvbW1pdC51dWlkKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgICAgICAgICAgICAgKytjb21taXRzSW5kZXg7Ci0gICAgICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgaWYgKGNvbW1pdHNJbmRleCA9PT0gc2VsZi5j
b21taXRzLmxlbmd0aCkgewotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jb21taXRzLnB1
c2goY29tbWl0KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICsrY29tbWl0c0luZGV4OwotICAg
ICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBsZXQgbWluRm91bmQgPSBiZWdpblV1
aWQ7Ci0gICAgICAgICAgICAgICAgY291bnRGb3JSZXBvc2l0b3J5LmZvckVhY2goKGNvdW50LCBy
ZXBvKSA9PiB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChjb3VudCA9PT0gbGltaXQpIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGxldCBjb21taXQgPSBuZXcgQ29tbWl0KGpzb25bZmlyc3RJ
bmRleEZvclJlcG9zaXRvcnkuZ2V0KHJlcG8pXSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBt
aW5Gb3VuZCA9IE1hdGgubWF4KG1pbkZvdW5kLCBjb21taXQudXVpZCk7Ci0gICAgICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICBpZiAobWluRm91
bmQgIT0gYmVnaW5VdWlkKQotICAgICAgICAgICAgICAgICAgICBzZWxmLl9sb2FkKGJlZ2luVXVp
ZCwgbWluRm91bmQpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAg
c2VsZi5fbG9hZFNpYmxpbmdzKG5ldyBDb21taXQoanNvblswXSkpOwotCi0gICAgICAgICAgICAg
ICAgaWYgKG9yaWdpbmFsTGVuZ3RoICE9IHNlbGYuY29tbWl0cy5sZW5ndGgpCi0gICAgICAgICAg
ICAgICAgICAgIHNlbGYuY2FsbGJhY2tzLmZvckVhY2goY2FsbGJhY2sgPT4gewotICAgICAgICAg
ICAgICAgICAgICAgICAgY2FsbGJhY2soKTsKLSAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAg
ICAgICAgICB9KTsKLSAgICAgICAgfSkuY2F0Y2goZXJyb3IgPT4gewotICAgICAgICAgICAgLy8g
SWYgdGhlIGxvYWQgZmFpbHMsIGxvZyB0aGUgZXJyb3IgYW5kIGNvbnRpbnVlCi0gICAgICAgICAg
ICBjb25zb2xlLmVycm9yKEpTT04uc3RyaW5naWZ5KGVycm9yLCBudWxsLCA0KSk7Ci0gICAgICAg
IH0pOwotICAgIH0KLSAgICBhZGQoYmVnaW5VdWlkLCBlbmRVdWlkKSB7Ci0gICAgICAgIGlmICgh
dGhpcy5fYmVnaW5VdWlkICYmICF0aGlzLl9lbmRVdWlkKSB7Ci0gICAgICAgICAgICB0aGlzLl9i
ZWdpblV1aWQgPSBiZWdpblV1aWQ7Ci0gICAgICAgICAgICB0aGlzLl9lbmRVdWlkID0gZW5kVXVp
ZDsKLSAgICAgICAgICAgIHJldHVybiB0aGlzLl9sb2FkKGJlZ2luVXVpZCwgZW5kVXVpZCk7Ci0g
ICAgICAgIH0KLQotICAgICAgICBsZXQgcHJvbWlzZXMgPSBbXTsKLSAgICAgICAgaWYgKHRoaXMu
X2JlZ2luVXVpZCAmJiBiZWdpblV1aWQgPCB0aGlzLl9iZWdpblV1aWQpCi0gICAgICAgICAgICBw
cm9taXNlcy5wdXNoKHRoaXMuX2xvYWQoYmVnaW5VdWlkLCB0aGlzLl9iZWdpblV1aWQpKTsKLSAg
ICAgICAgaWYgKHRoaXMuX2VuZFV1aWQgJiYgZW5kVXVpZCA+IHRoaXMuX2VuZFV1aWQpCi0gICAg
ICAgICAgICBwcm9taXNlcy5wdXNoKHRoaXMuX2xvYWQodGhpcy5fZW5kVXVpZCwgZW5kVXVpZCkp
OwotICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwocHJvbWlzZXMpOwotICAgIH0KLSAgICByZWxv
YWQoKSB7Ci0gICAgICAgIGxldCBuZWVkUmVsb2FkID0gZmFsc2U7Ci0gICAgICAgIGNvbnN0IHBh
cmFtcyA9IHF1ZXJ5VG9QYXJhbXMoZG9jdW1lbnQuVVJMLnNwbGl0KCc/JylbMV0pOwotCi0gICAg
ICAgIGZ1bmN0aW9uIGVxdWFsKGEsIGIpIHsKLSAgICAgICAgICAgIGlmIChhLnNpemUgIT09IGIu
c2l6ZSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBmb3IgKGxl
dCBlbG0gb2YgYSkgewotICAgICAgICAgICAgICAgIGlmICghYi5oYXMoZWxtKSkKLSAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgICAgIH0KLQotICAgICAgICBjb25zdCBicmFuY2hTZXQgPSBuZXcgU2V0
KHBhcmFtcy5icmFuY2gpOwotICAgICAgICBpZiAoIWVxdWFsKGJyYW5jaFNldCwgdGhpcy5fYnJh
bmNoZXMpKSB7Ci0gICAgICAgICAgICB0aGlzLl9icmFuY2hlcyA9IGJyYW5jaFNldDsKLSAgICAg
ICAgICAgIG5lZWRSZWxvYWQgPSB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIGNvbnN0IHJlcG9T
ZXQgPSBuZXcgU2V0KHBhcmFtcy5yZXBvc2l0b3J5X2lkKTsKLSAgICAgICAgaWYgKCFlcXVhbChy
ZXBvU2V0LCB0aGlzLl9yZXBvc2l0b3JpZXMpKSB7Ci0gICAgICAgICAgICB0aGlzLl9yZXBvc2l0
b3JpZXMgPSByZXBvU2V0OwotICAgICAgICAgICAgbmVlZFJlbG9hZCA9IHRydWU7Ci0gICAgICAg
IH0KLQotICAgICAgICBpZiAobmVlZFJlbG9hZCkgewotICAgICAgICAgICAgdGhpcy5jb21taXRz
ID0gW107Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy5fbG9hZCh0aGlzLl9iZWdpblV1aWQsIHRo
aXMuX2VuZFV1aWQpOwotICAgICAgICB9Ci0gICAgfQotfQotCi1jb25zdCBDb21taXRCYW5rID0g
bmV3IF9Db21taXRCYW5rKCk7Ci0KLWV4cG9ydCB7Q29tbWl0LCBDb21taXRCYW5rLCBDb21taXRU
YWJsZSwgVElNRVNUQU1QX1RPX1VVSURfTVVMVElQTElFUn07CkluZGV4OiBUb29scy9yZXN1bHRz
ZGJweS9yZXN1bHRzZGJweS92aWV3L3N0YXRpYy9qcy9jb21tb24uanMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9zdGF0aWMvanMvY29tbW9uLmpzCShy
ZXZpc2lvbiAyNjU1MzEpCisrKyBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS92aWV3L3N0
YXRpYy9qcy9jb21tb24uanMJKG5vbmV4aXN0ZW50KQpAQCAtMSwxOTIgKzAsMCBAQAotLy8gQ29w
eXJpZ2h0IChDKSAyMDE5LCAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8v
Ci0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotLy8gYXJlIG1ldDoKLS8vIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0v
LyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0vLyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotLy8gICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIgotLy8gQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0vLyBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0vLyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLS8vIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLS8vIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0vLyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLS8vIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0vLyBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotLy8gQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotLy8gVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
Ci1mdW5jdGlvbiBFcnJvckRpc3BsYXkoanNvbikgewotICAgIHJldHVybiBgPGRpdiBjbGFzcz0i
Y29udGVudCI+Ci0gICAgICAgIDxoMj4ke2pzb25bJ2Vycm9yJ119PFxoMj4KLSAgICAgICAgPGRp
diBjbGFzcz0idGV4dCI+JHtqc29uWydkZXNjcmlwdGlvbiddfTwvZGl2PgotICAgIDwvZGl2PmA7
Ci19Ci0KLWZ1bmN0aW9uIHF1ZXJ5VG9QYXJhbXMocXVlcnkpIHsKLSAgICBpZiAoIXF1ZXJ5KQot
ICAgICAgICByZXR1cm4ge307Ci0KLSAgICB2YXIgcmVzdWx0ID0ge307Ci0gICAgcXVlcnkuc3Bs
aXQoJyYnKS5mb3JFYWNoKChlbGVtZW50KSA9PiB7Ci0gICAgICAgIHZhciBzcGxpdFF1ZXJ5ID0g
ZWxlbWVudC5zcGxpdCgnPScpOwotICAgICAgICBpZiAoc3BsaXRRdWVyeS5sZW5ndGggIT0gMikg
ewotICAgICAgICAgICAgaWYgKCFyZXN1bHRbc3BsaXRRdWVyeVswXV0pCi0gICAgICAgICAgICAg
ICAgcmVzdWx0W3NwbGl0UXVlcnlbMF1dID0gbnVsbDsKLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgfQotICAgICAgICBpZiAoIXJlc3VsdFtzcGxpdFF1ZXJ5WzBdXSkKLSAgICAgICAgICAg
IHJlc3VsdFtzcGxpdFF1ZXJ5WzBdXSA9IFtdOwotICAgICAgICByZXN1bHRbZGVjb2RlVVJJQ29t
cG9uZW50KHNwbGl0UXVlcnlbMF0pXS5wdXNoKGRlY29kZVVSSUNvbXBvbmVudChzcGxpdFF1ZXJ5
WzFdKSk7Ci0gICAgfSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotZnVuY3Rpb24gcGFyYW1z
VG9RdWVyeShqc29uKSB7Ci0gICAgdmFyIHJlc3VsdCA9ICcnOwotICAgIGZvciAodmFyIHBhcmFt
ZXRlciBpbiBqc29uKSB7Ci0gICAgICAgIGlmICghanNvbltwYXJhbWV0ZXJdKSB7Ci0gICAgICAg
ICAgICByZXN1bHQgKz0gKHJlc3VsdCA/ICcmJyA6ICcnKSArIGVuY29kZVVSSUNvbXBvbmVudChw
YXJhbWV0ZXIpOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLSAgICAgICAganNv
bltwYXJhbWV0ZXJdLmZvckVhY2goKHZhbHVlKSA9PiB7Ci0gICAgICAgICAgICBpZiAodmFsdWUg
PT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCkKLSAgICAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgICAgICByZXN1bHQgKz0gKHJlc3VsdCA/ICcmJyA6ICcnKSArIGVuY29kZVVSSUNv
bXBvbmVudChwYXJhbWV0ZXIpICsgJz0nICsgZW5jb2RlVVJJQ29tcG9uZW50KHZhbHVlKTsKLSAg
ICAgICAgfSk7Ci0gICAgfQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLWNsYXNzIFF1ZXJ5TW9k
aWZpZXIgewotICAgIGNvbnN0cnVjdG9yKGFyZ3VtZW50KSB7Ci0gICAgICAgIHRoaXMuYXJndW1l
bnQgPSBhcmd1bWVudDsKLSAgICB9Ci0KLSAgICBjdXJyZW50KCkgewotICAgICAgICB2YXIgcGFy
YW1zID0gcXVlcnlUb1BhcmFtcyhkb2N1bWVudC5VUkwuc3BsaXQoJz8nKVsxXSk7Ci0gICAgICAg
IGlmICghcGFyYW1zW3RoaXMuYXJndW1lbnRdKQotICAgICAgICAgICAgcmV0dXJuIFtdOwotICAg
ICAgICByZXR1cm4gcGFyYW1zW3RoaXMuYXJndW1lbnRdOwotICAgIH0KLQotICAgIGFwcGVuZCh2
YWx1ZSkgewotICAgICAgICBjb25zdCBzcGxpdFVSTCA9IGRvY3VtZW50LlVSTC5zcGxpdCgnPycp
OwotICAgICAgICB2YXIgcGFyYW1zID0gcXVlcnlUb1BhcmFtcyhzcGxpdFVSTFsxXSk7Ci0gICAg
ICAgIGlmICghcGFyYW1zW3RoaXMuYXJndW1lbnRdKQotICAgICAgICAgICAgcGFyYW1zW3RoaXMu
YXJndW1lbnRdID0gW107Ci0gICAgICAgIGlmIChwYXJhbXNbdGhpcy5hcmd1bWVudF0uaW5kZXhP
Zih2YWx1ZSkgPj0gMCkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgcGFyYW1zW3RoaXMu
YXJndW1lbnRdLnB1c2godmFsdWUpOwotCi0gICAgICAgIGNvbnN0IHF1ZXJ5U3RyaW5nID0gcGFy
YW1zVG9RdWVyeShwYXJhbXMpOwotICAgICAgICB3aW5kb3cuaGlzdG9yeS5wdXNoU3RhdGUocXVl
cnlTdHJpbmcsICcnLCBzcGxpdFVSTFswXSArICc/JyArIHF1ZXJ5U3RyaW5nKTsKLSAgICB9Ci0K
LSAgICByZW1vdmUodmFsdWUgPSBudWxsKSB7Ci0gICAgICAgIGNvbnN0IHNwbGl0VVJMID0gZG9j
dW1lbnQuVVJMLnNwbGl0KCc/Jyk7Ci0gICAgICAgIHZhciBwYXJhbXMgPSBxdWVyeVRvUGFyYW1z
KHNwbGl0VVJMWzFdKTsKLSAgICAgICAgaWYgKCFwYXJhbXNbdGhpcy5hcmd1bWVudF0pCi0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIGlmICh2YWx1ZSA9PT0gbnVsbCkKLSAgICAgICAgICAg
IGRlbGV0ZSBwYXJhbXNbdGhpcy5hcmd1bWVudF07Ci0gICAgICAgIGVsc2UgewotICAgICAgICAg
ICAgY29uc3QgaW5kZXggPSBwYXJhbXNbdGhpcy5hcmd1bWVudF0uaW5kZXhPZih2YWx1ZSk7Ci0g
ICAgICAgICAgICBpZiAoaW5kZXggPCAwKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgICAgIHBhcmFtc1t0aGlzLmFyZ3VtZW50XS5zcGxpY2UoaW5kZXgsIDEpOwotICAgICAgICB9
Ci0KLSAgICAgICAgY29uc3QgcXVlcnlTdHJpbmcgPSBwYXJhbXNUb1F1ZXJ5KHBhcmFtcyk7Ci0g
ICAgICAgIGNvbnN0IHVybCA9IHNwbGl0VVJMWzBdICsgKHF1ZXJ5U3RyaW5nID8gJz8nICsgcXVl
cnlTdHJpbmcgOiAnJyk7Ci0gICAgICAgIHdpbmRvdy5oaXN0b3J5LnB1c2hTdGF0ZShxdWVyeVN0
cmluZywgJycsIHVybCk7Ci0gICAgfQotCi0gICAgcmVwbGFjZSh2YWx1ZSkgewotICAgICAgICBj
b25zdCBzcGxpdFVSTCA9IGRvY3VtZW50LlVSTC5zcGxpdCgnPycpOwotICAgICAgICB2YXIgcGFy
YW1zID0gcXVlcnlUb1BhcmFtcyhzcGxpdFVSTFsxXSk7Ci0gICAgICAgIHBhcmFtc1t0aGlzLmFy
Z3VtZW50XSA9IFt2YWx1ZV07Ci0KLSAgICAgICAgY29uc3QgcXVlcnlTdHJpbmcgPSBwYXJhbXNU
b1F1ZXJ5KHBhcmFtcyk7Ci0gICAgICAgIHdpbmRvdy5oaXN0b3J5LnB1c2hTdGF0ZShxdWVyeVN0
cmluZywgJycsIHNwbGl0VVJMWzBdICsgJz8nICsgcXVlcnlTdHJpbmcpOwotICAgICB9Ci19Ci0K
LS8vIEJhc2VkIG9uIDxodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy82MjM0Nzcz
L2Nhbi1pLWVzY2FwZS1odG1sLXNwZWNpYWwtY2hhcnMtaW4tamF2YXNjcmlwdD4KLWZ1bmN0aW9u
IGVzY2FwZUhUTUwodGV4dCkgewotICAgIHJldHVybiB0ZXh0LnJlcGxhY2UoL1smPCInXG5dL2cs
IGZ1bmN0aW9uKGNoYXJhY3RlcikgewotICAgICAgICBzd2l0Y2ggKGNoYXJhY3RlcikgewotICAg
ICAgICAgICAgY2FzZSAnJic6Ci0gICAgICAgICAgICAgICAgcmV0dXJuICcmYW1wOyc7Ci0gICAg
ICAgICAgICBjYXNlICc8JzoKLSAgICAgICAgICAgICAgICByZXR1cm4gJyZsdDsnOwotICAgICAg
ICAgICAgY2FzZSAnIic6Ci0gICAgICAgICAgICAgICAgcmV0dXJuICcmcXVvdDsnOwotICAgICAg
ICAgICAgY2FzZSAnXG4nOgotICAgICAgICAgICAgICAgIHJldHVybiAnPGJyPic7Ci0gICAgICAg
ICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIHJldHVybiAnJiMwMzk7JzsKLSAgICAgICAg
fQotICB9KTsKLX0KLQotZnVuY3Rpb24gZGVlcENvbXBhcmUoYSwgYikgewotICAgIGlmIChhID09
PSBiKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIGlmIChBcnJheS5pc0FycmF5KGEpICYm
IEFycmF5LmlzQXJyYXkoYikpIHsKLSAgICAgICAgaWYgKGEubGVuZ3RoICE9IGIubGVuZ3RoKQot
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGEu
bGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIGlmICghZGVlcENvbXBhcmUoYVtpXSwgYltpXSkp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIHJldHVy
biB0cnVlOwotICAgIH0KLQotICAgIGlmICghKGEgaW5zdGFuY2VvZiBPYmplY3QpIHx8ICEoYiBp
bnN0YW5jZW9mIE9iamVjdCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGZvciAobGV0
IGtleSBpbiBhKSB7Ci0gICAgICAgIGlmICghKGtleSBpbiBiKSkKLSAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgaWYgKCFkZWVwQ29tcGFyZShhW2tleV0sIGJba2V5XSkpCi0gICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIGZvciAobGV0IGtleSBpbiBiICkgewot
ICAgICAgICBpZiAoIShrZXkgaW4gYSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
fQotICAgIHJldHVybiB0cnVlOwotfQotCi1mdW5jdGlvbiBwZXJjZW50YWdlKHZhbHVlLCBtYXgp
Ci17Ci0gICAgaWYgKHZhbHVlID09PSBtYXgpCi0gICAgICAgIHJldHVybiAnMTAwICUnOwotICAg
IGlmICghdmFsdWUpCi0gICAgICAgIHJldHVybiAnMCAlJzsKLSAgICBjb25zdCByZXN1bHQgPSBN
YXRoLnJvdW5kKHZhbHVlIC8gbWF4ICogMTAwKTsKLSAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAg
cmV0dXJuICc8MSAlJzsKLSAgICBpZiAocmVzdWx0ID09PSAxMDApCi0gICAgICAgIHJldHVybiAn
OTkgJSc7Ci0gICAgcmV0dXJuIGAke3Jlc3VsdH0gJWAKLX0KLQotZnVuY3Rpb24gZWxhcHNlZFRp
bWUoc3RhcnRUaW1lc3RhbXAsIGVuZFRpbWVzdGFtcCkKLXsKLSAgICBjb25zdCB0aW1lID0gbmV3
IERhdGUoKGVuZFRpbWVzdGFtcCAtIHN0YXJ0VGltZXN0YW1wKSAqIDEwMDApOwotICAgIGxldCBy
ZXN1bHQgPSAnJzsKLSAgICBpZiAodGltZS5nZXRNaW51dGVzKCkpCi0gICAgICAgIHJlc3VsdCAr
PSBgJHt0aW1lLmdldE1pbnV0ZXMoKX0gbWludXRlJHt0aW1lLmdldE1pbnV0ZXMoKSA9PSAxID8g
JycgOiAncyd9IGFuZCBgOwotICAgIHJlc3VsdCArPSBgJHt0aW1lLmdldFNlY29uZHMoKX0gc2Vj
b25kJHt0aW1lLmdldFNlY29uZHMoKSA9PSAxID8gJycgOiAncyd9IHRvIHJ1bmA7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLQotZXhwb3J0IHtkZWVwQ29tcGFyZSwgRXJyb3JEaXNwbGF5LCBxdWVy
eVRvUGFyYW1zLCBwYXJhbXNUb1F1ZXJ5LCBRdWVyeU1vZGlmaWVyLCBlc2NhcGVIVE1MLCBwZXJj
ZW50YWdlLCBlbGFwc2VkVGltZX07CkluZGV4OiBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJw
eS92aWV3L3N0YXRpYy9qcy9jb25maWd1cmF0aW9uLmpzCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL3Jl
c3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvc3RhdGljL2pzL2NvbmZpZ3VyYXRpb24uanMJKHJl
dmlzaW9uIDI2NTUzMSkKKysrIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvc3Rh
dGljL2pzL2NvbmZpZ3VyYXRpb24uanMJKG5vbmV4aXN0ZW50KQpAQCAtMSwyNzAgKzAsMCBAQAot
Ly8gQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8v
Ci0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotLy8gYXJlIG1ldDoKLS8vIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0v
LyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0vLyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotLy8gICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIgotLy8gQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0vLyBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0vLyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLS8vIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLS8vIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0vLyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLS8vIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0vLyBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotLy8gQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotLy8gVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
Ci1pbXBvcnQge3F1ZXJ5VG9QYXJhbXN9IGZyb20gJy9hc3NldHMvanMvY29tbW9uLmpzJzsKLQot
Ly8gVGhlc2UgYXJlIGZsaXBwZWQgZGVsaWJyYXRlbHksIGl0IG1ha2VzIHRoZSBmcm9tUXVlcnkg
ZnVuY3Rpb24gcmV0dXJuIGNvbmZpZ3VyYXRpb25zIGluIGFuCi0vLyBpbnR1aXRpdmUgb3JkZXIu
Ci1jb25zdCBSRVFVSVJFRF9NRU1CRVJTID0gWydhcmNoaXRlY3R1cmUnLCAndmVyc2lvbicsICdp
c19zaW11bGF0b3InLCAncGxhdGZvcm0nXTsKLWNvbnN0IE9QVElPTkFMX01FTUJFUlMgPSBbJ2Zs
YXZvcicsICdzdHlsZScsICdtb2RlbCcsICd2ZXJzaW9uX25hbWUnXTsKLWNvbnN0IEZJTFRFUklO
R19NRU1CRVJTID0gWydzZGsnXTsKLWNvbnN0IFZFUlNJT05fT0ZGU0VUX0NPTlNUQU5UID0gMTAw
MDsKLWNvbnN0IFNES19SRUdFWCA9IC8oXGQrKShbQS1aXSkoXGQrKSguKikvOwotCi0vLyBUaGlz
IGNsYXNzIGlzIHZlcnkgc2ltaWxhciB0byB0aGUgUHl0aG9uIENvbmZpZ3VyYXRpb24gY2xhc3MK
LWNsYXNzIENvbmZpZ3VyYXRpb24gewotICAgIHN0YXRpYyBtZW1iZXJzKCkgewotICAgICAgICBy
ZXR1cm4gWy4uLkZJTFRFUklOR19NRU1CRVJTLCAuLi5PUFRJT05BTF9NRU1CRVJTLCAuLi5SRVFV
SVJFRF9NRU1CRVJTXTsKLSAgICB9Ci0gICAgc3RhdGljIGZyb21RdWVyeSgpIHsKLSAgICAgICAg
Y29uc3QgcGFyYW1zID0gcXVlcnlUb1BhcmFtcyhkb2N1bWVudC5VUkwuc3BsaXQoJz8nKVsxXSk7
Ci0gICAgICAgIGxldCBjb25maWdzID0gW25ldyBDb25maWd1cmF0aW9uKCldOwotCi0gICAgICAg
IENvbmZpZ3VyYXRpb24ubWVtYmVycygpLmZvckVhY2gobWVtYmVyID0+IHsKLSAgICAgICAgICAg
IGNvbnN0IGFyZ3VtZW50c0Zvck1lbWJlciA9IHBhcmFtc1ttZW1iZXJdOwotICAgICAgICAgICAg
aWYgKCFhcmd1bWVudHNGb3JNZW1iZXIgfHwgYXJndW1lbnRzRm9yTWVtYmVyLmxlbmd0aCA9PT0g
MCkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgIGxldCBvcmlnaW5hbENv
bmZpZ3MgPSBjb25maWdzOwotICAgICAgICAgICAgY29uZmlncyA9IFtdOwotICAgICAgICAgICAg
YXJndW1lbnRzRm9yTWVtYmVyLmZvckVhY2goYXJndW1lbnQgPT4gewotICAgICAgICAgICAgICAg
IG9yaWdpbmFsQ29uZmlncy5mb3JFYWNoKGNvbmZpZyA9PiB7Ci0gICAgICAgICAgICAgICAgICAg
IGxldCBuZXdDb25maWcgPSBuZXcgQ29uZmlndXJhdGlvbihjb25maWcpOwotICAgICAgICAgICAg
ICAgICAgICBuZXdDb25maWdbbWVtYmVyXSA9IGFyZ3VtZW50OwotICAgICAgICAgICAgICAgICAg
ICBjb25maWdzLnB1c2gobmV3IENvbmZpZ3VyYXRpb24obmV3Q29uZmlnKSk7Ci0gICAgICAgICAg
ICAgICAgfSk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgcmV0dXJu
IGNvbmZpZ3M7Ci0gICAgfQotICAgIHN0YXRpYyB2ZXJzaW9uVG9JbnRlZ2VyKHZlcnNpb24pIHsK
LSAgICAgICAgaWYgKHR5cGVvZiB2ZXJzaW9uID09PSAnbnVtYmVyJykKLSAgICAgICAgICAgIHJl
dHVybiB2ZXJzaW9uOwotICAgICAgICBsZXQgdmVyc2lvbkxpc3QgPSBudWxsOwotICAgICAgICBp
ZiAodHlwZW9mIHZlcnNpb24gPT09ICdzdHJpbmcnKQotICAgICAgICAgICAgdmVyc2lvbkxpc3Qg
PSB2ZXJzaW9uLnNwbGl0KCcuJyk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgaWYgKCFB
cnJheS5pc0FycmF5KHZlcnNpb24pKQotICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwotICAg
ICAgICAgICAgdmVyc2lvbkxpc3QgPSB2ZXJzaW9uOwotICAgICAgICB9Ci0gICAgICAgIGlmICh2
ZXJzaW9uTGlzdC5sZW5ndGggPCAxIHx8IHZlcnNpb25MaXN0Lmxlbmd0aCA+IDMpCi0gICAgICAg
ICAgICByZXR1cm4gbnVsbDsKLQotICAgICAgICBsZXQgcmVzdWx0ID0gMDsKLSAgICAgICAgbGV0
IGluZGV4ID0gMDsKLSAgICAgICAgd2hpbGUgKGluZGV4IDwgMykgewotICAgICAgICAgICAgcmVz
dWx0ICo9IFZFUlNJT05fT0ZGU0VUX0NPTlNUQU5UOwotICAgICAgICAgICAgaWYgKGluZGV4IDwg
dmVyc2lvbkxpc3QubGVuZ3RoKQotICAgICAgICAgICAgICAgIHJlc3VsdCArPSBwYXJzZUludCh2
ZXJzaW9uTGlzdFtpbmRleF0pOwotICAgICAgICAgICAgKytpbmRleDsKLSAgICAgICAgfQotICAg
ICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLSAgICBzdGF0aWMgaW50ZWdlclRvVmVyc2lvbih2
ZXJzaW9uKSB7Ci0gICAgICAgIGxldCByZXN1bHQgPSBbMCwgMCwgMF07Ci0gICAgICAgIGZvciAo
bGV0IGluZGV4ID0gMDsgaW5kZXggPCByZXN1bHQubGVuZ3RoOyArK2luZGV4KSB7Ci0gICAgICAg
ICAgICByZXN1bHRbcmVzdWx0Lmxlbmd0aCAtIChpbmRleCArIDEpXSA9IHZlcnNpb24gJSBWRVJT
SU9OX09GRlNFVF9DT05TVEFOVDsKLSAgICAgICAgICAgIHZlcnNpb24gPSBNYXRoLmZsb29yKHZl
cnNpb24gLyBWRVJTSU9OX09GRlNFVF9DT05TVEFOVCk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0
dXJuIHJlc3VsdC5qb2luKCcuJyk7Ci0gICAgfQotCi0gICAgc3RhdGljIGNvbWJpbmUoKQotICAg
IHsKLSAgICAgICAgaWYgKCFhcmd1bWVudHMubGVuZ3RoKQotICAgICAgICAgICAgcmV0dXJuIG5l
dyBDb25maWd1cmF0aW9uKCk7Ci0gICAgICAgIGNvbnN0IGNvbWJpbmVkID0gbmV3IENvbmZpZ3Vy
YXRpb24oYXJndW1lbnRzWzBdKTsKLSAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCBhcmd1bWVu
dHMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIENvbmZpZ3VyYXRpb24ubWVtYmVycygpLmZv
ckVhY2gobWVtYmVyID0+IHsKLSAgICAgICAgICAgICAgICBpZiAoYXJndW1lbnRzW2ldW21lbWJl
cl0gIT09IGNvbWJpbmVkW21lbWJlcl0pCi0gICAgICAgICAgICAgICAgICAgIGNvbWJpbmVkW21l
bWJlcl0gPSBudWxsOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJu
IGNvbWJpbmVkOwotICAgIH0KLQotICAgIGNvbnN0cnVjdG9yKGpzb24gPSB7fSkgewotICAgICAg
ICB0aGlzLnBsYXRmb3JtID0ganNvbi5wbGF0Zm9ybSA/IGpzb24ucGxhdGZvcm0gOiBudWxsOwot
ICAgICAgICB0aGlzLnZlcnNpb24gPSBqc29uLnZlcnNpb24gPyBDb25maWd1cmF0aW9uLnZlcnNp
b25Ub0ludGVnZXIoanNvbi52ZXJzaW9uKSA6IG51bGw7Ci0gICAgICAgIHRoaXMudmVyc2lvbl9u
YW1lID0ganNvbi52ZXJzaW9uX25hbWUgPyBqc29uLnZlcnNpb25fbmFtZSA6IG51bGw7Ci0gICAg
ICAgIHRoaXMuc2RrID0ganNvbi5zZGsgPyBqc29uLnNkayA6IG51bGw7Ci0gICAgICAgIGlmICh0
eXBlb2YganNvbi5pc19zaW11bGF0b3IgPT09ICdzdHJpbmcnKQotICAgICAgICAgICAgdGhpcy5p
c19zaW11bGF0b3IgPSBqc29uLmlzX3NpbXVsYXRvci50b0xvd2VyQ2FzZSgpID09PSAndHJ1ZScg
PyB0cnVlIDogZmFsc2U7Ci0gICAgICAgIGVsc2UgaWYgKHR5cGVvZiBqc29uLmlzX3NpbXVsYXRv
ciA9PT0gJ2Jvb2xlYW4nKQotICAgICAgICAgICAgdGhpcy5pc19zaW11bGF0b3IgPSBqc29uLmlz
X3NpbXVsYXRvcjsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdGhpcy5pc19zaW11bGF0b3Ig
PSBudWxsOwotICAgICAgICB0aGlzLnN0eWxlID0ganNvbi5zdHlsZSA/IGpzb24uc3R5bGUgOiBu
dWxsOwotICAgICAgICB0aGlzLmZsYXZvciA9IGpzb24uZmxhdm9yID8ganNvbi5mbGF2b3IgOiBu
dWxsOwotICAgICAgICB0aGlzLm1vZGVsID0ganNvbi5tb2RlbCA/IGpzb24ubW9kZWwgOiBudWxs
OwotICAgICAgICB0aGlzLmFyY2hpdGVjdHVyZSA9IGpzb24uYXJjaGl0ZWN0dXJlID8ganNvbi5h
cmNoaXRlY3R1cmUgOiBudWxsOwotCi0gICAgICAgIC8vIE1pZC15ZWFyIHJlbGVhc2VzIHJlYWxs
eSBuZWVkIHRvIGJlIHRyZWF0ZWQgd2l0aCBhbiBlbnRpcmVseSBkaWZmZXJlbnQgdmVyc2lvbl9u
YW1lLiBUaGUgb25seSB3YXkgdG8gcmVsaWFibHkKLSAgICAgICAgLy8gaWRlbnRpZnkgc3VjaCBh
IHJlbGVhc2UgaXMgd2l0aCB0aGUgU0RLICh2ZXJzaW9uIG51bWJlcnMgaGF2ZSBoaXN0b3JpY2Fs
bHkgcmFuZ2VkIGJldHdlZW4gLjIgYW5kIC40KQotICAgICAgICAvLyBXaGlsZSBhcHBlbmRpbmcg
RSB0byBhbGwgcmVhbGVzZSB3aXRoIGFuIFNESyBhZnRlciBhIG1pZC15ZWFyIHJlbGVhc2UgaXNu
J3QgZW50aXJlbHkgY29ycmVjdCwgaXQncyBjbG9zZSBlbm91Z2gKLSAgICAgICAgLy8gdGhhdCB0
aGUgdXNlciBjYW4gcXVpY2tseSBkaWNlcm4gdGhlIGRpZmZlcmVuY2VzIGJ5IGluc3BlY3Rpbmcg
dGhlIHNwZWNpZmljIFNESyBkaWZmZXJlbmNlcwotICAgICAgICBpZiAodGhpcy5zZGsgJiYgdGhp
cy52ZXJzaW9uX25hbWUgJiYgIShqc29uIGluc3RhbmNlb2YgQ29uZmlndXJhdGlvbikpIHsKLSAg
ICAgICAgICAgIGNvbnN0IG1hdGNoID0gdGhpcy5zZGsubWF0Y2goU0RLX1JFR0VYKTsKLSAgICAg
ICAgICAgIGNvbnN0IGVuZGluZyA9IHRoaXMudmVyc2lvbl9uYW1lLnN1YnN0cmluZyh0aGlzLnZl
cnNpb25fbmFtZS5sZW5ndGggLSAyKQotICAgICAgICAgICAgaWYgKG1hdGNoICYmIGVuZGluZyAh
PT0gJyBFJyAmJiBtYXRjaFsyXS5sb2NhbGVDb21wYXJlKCdFJykgPj0gMCkKLSAgICAgICAgICAg
ICAgICB0aGlzLnZlcnNpb25fbmFtZSA9IGAke3RoaXMudmVyc2lvbl9uYW1lfSBFYDsKLSAgICAg
ICAgICAgIGVsc2UgaWYgKCFtYXRjaCkKLSAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGAn
JHt0aGlzLnNka30nIGRvZXMgbm90IG1hdGNoIHRoZSBTREsgcmVndWxhciBleHByZXNzaW9uYCk7
Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgdG9LZXkoKSB7Ci0gICAgICAgIGxldCByZXN1bHQgPSAn
JwotICAgICAgICBpZiAodGhpcy5wbGF0Zm9ybSAhPSBudWxsKQotICAgICAgICAgICAgcmVzdWx0
ICs9ICcgJyArIHRoaXMucGxhdGZvcm0KLSAgICAgICAgaWYgKHRoaXMudmVyc2lvbl9uYW1lICE9
IG51bGwpCi0gICAgICAgICAgICByZXN1bHQgKz0gJyAnICsgdGhpcy52ZXJzaW9uX25hbWU7Ci0g
ICAgICAgIGVsc2UgaWYgKHRoaXMudmVyc2lvbiAhPSBudWxsKQotICAgICAgICAgICAgcmVzdWx0
ICs9ICcgJyArIENvbmZpZ3VyYXRpb24uaW50ZWdlclRvVmVyc2lvbih0aGlzLnZlcnNpb24pOwot
ICAgICAgICBpZiAodGhpcy5zZGsgIT0gbnVsbCkKLSAgICAgICAgICAgIHJlc3VsdCArPSAnICgn
ICsgdGhpcy5zZGsgKyAnKSc7Ci0gICAgICAgIGlmICh0aGlzLmlzX3NpbXVsYXRvciAhPSBudWxs
ICYmIHRoaXMuaXNfc2ltdWxhdG9yKQotICAgICAgICAgICAgcmVzdWx0ICs9ICcgU2ltdWxhdG9y
JzsKLSAgICAgICAgaWYgKHRoaXMuc3R5bGUgIT0gbnVsbCkKLSAgICAgICAgICAgIHJlc3VsdCAr
PSAnICcgKyB0aGlzLnN0eWxlOwotICAgICAgICBpZiAodGhpcy5mbGF2b3IgIT0gbnVsbCkKLSAg
ICAgICAgICAgIHJlc3VsdCArPSAnICcgKyB0aGlzLmZsYXZvcjsKLSAgICAgICAgaWYgKHRoaXMu
bW9kZWwgIT0gbnVsbCkKLSAgICAgICAgICAgIHJlc3VsdCArPSAnIG9uICcgKyB0aGlzLm1vZGVs
OwotICAgICAgICBpZiAodGhpcy5hcmNoaXRlY3R1cmUgIT0gbnVsbCkKLSAgICAgICAgICAgIHJl
c3VsdCArPSAnIHVzaW5nICcgKyB0aGlzLmFyY2hpdGVjdHVyZTsKLQotICAgICAgICBpZiAocmVz
dWx0KQotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5zdWJzdHIoMSk7Ci0gICAgICAgIHJldHVy
biAnQWxsJzsKLSAgICB9Ci0gICAgdG9TdHJpbmcoKSB7Ci0gICAgICAgIGxldCByZXN1bHQgPSAn
JzsKLQotICAgICAgICAvLyBWZXJzaW9uIG5hbWUgaW1wbGllcyBwbGF0Zm9ybSBhbmQgdmVyc2lv
bgotICAgICAgICBpZiAodGhpcy52ZXJzaW9uX25hbWUgIT0gbnVsbCkKLSAgICAgICAgICAgIHJl
c3VsdCArPSAnICcgKyB0aGlzLnZlcnNpb25fbmFtZTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAg
ICAgICBpZiAodGhpcy5wbGF0Zm9ybSAhPSBudWxsKQotICAgICAgICAgICAgICAgIHJlc3VsdCAr
PSAnICcgKyB0aGlzLnBsYXRmb3JtCi0gICAgICAgICAgICBpZiAodGhpcy52ZXJzaW9uICE9IG51
bGwpCi0gICAgICAgICAgICAgICAgcmVzdWx0ICs9ICcgJyArIENvbmZpZ3VyYXRpb24uaW50ZWdl
clRvVmVyc2lvbih0aGlzLnZlcnNpb24pOwotICAgICAgICB9Ci0gICAgICAgIGlmICh0aGlzLmlz
X3NpbXVsYXRvciAhPSBudWxsICYmIHRoaXMuaXNfc2ltdWxhdG9yKQotICAgICAgICAgICAgcmVz
dWx0ICs9ICcgU2ltdWxhdG9yJzsKLSAgICAgICAgaWYgKHRoaXMuZmxhdm9yICE9IG51bGwpCi0g
ICAgICAgICAgICByZXN1bHQgKz0gJyAnICsgdGhpcy5mbGF2b3I7Ci0gICAgICAgIGlmICh0aGlz
LnN0eWxlICE9IG51bGwpIHsKLSAgICAgICAgICAgIHJlc3VsdCArPSAnICcgKyB0aGlzLnN0eWxl
LnNwbGl0KCctJykubWFwKHdvcmQgPT4gd29yZC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHdv
cmQuc2xpY2UoMSkpLmpvaW4oJy0nKTsKLSAgICAgICAgfSBpZiAodGhpcy5tb2RlbCAhPSBudWxs
KQotICAgICAgICAgICAgcmVzdWx0ICs9ICcgb24gJyArIHRoaXMubW9kZWw7Ci0gICAgICAgIGlm
ICh0aGlzLmFyY2hpdGVjdHVyZSAhPSBudWxsKQotICAgICAgICAgICAgcmVzdWx0ICs9ICcgd2l0
aCAnICsgdGhpcy5hcmNoaXRlY3R1cmU7Ci0KLSAgICAgICAgaWYgKHRoaXMuc2RrICE9IG51bGwp
Ci0gICAgICAgICAgICByZXN1bHQgKz0gJyAoJyArIHRoaXMuc2RrICsgJyknOwotCi0gICAgICAg
IGlmIChyZXN1bHQpCi0gICAgICAgICAgICByZXR1cm4gcmVzdWx0LnN1YnN0cigxKTsKLSAgICAg
ICAgcmV0dXJuICdBbGwnOwotICAgIH0KLSAgICBjb21wYXJlKGNvbmZpZ3VyYXRpb24pIHsKLSAg
ICAgICAgaWYgKGNvbmZpZ3VyYXRpb24gPT09IG51bGwpCi0gICAgICAgICAgICByZXR1cm4gMTsK
LQotICAgICAgICBjb25zdCBsc3QgPSBbWydwbGF0Zm9ybSddLCBbJ2lzX3NpbXVsYXRvciddLCBb
J3ZlcnNpb25fbmFtZScsICd2ZXJzaW9uJ10sIFsnZmxhdm9yJ10sIFsnc3R5bGUnXSwgWydhcmNo
aXRlY3R1cmUnXSwgWydtb2RlbCddXTsKLSAgICAgICAgbGV0IHJlc3VsdCA9IDA7Ci0gICAgICAg
IGxzdC5mb3JFYWNoKGtleUZhbWlseSA9PiB7Ci0gICAgICAgICAgICAvLyBHcm91cGluZyBrZXlz
IGludG8gZmFtaWxpZXMgYWxsb3dzIGtleXMgdG8gYmUgaWdub3JlZCBpZiBhbm90aGVyIGlzIGRl
ZmluZWQuCi0gICAgICAgICAgICAvLyBGb3IgZXhhbXBsZSwgaWYgdHdvIGNvbmZpZ3VyYXRpb25z
IGRlY2xhcmUgdGhlIHNhbWUgdmVyc2lvbiBuYW1lLCBkZXNwaXRlIGhhdmluZyBhIGRpZmZlcmVu
dAotICAgICAgICAgICAgLy8gdmVyc2lvbiBudW1iZXIsIHRoZXkgd2lsbCBiZSB0cmVhdGVkIGFz
IGlkZW50aWNhbAotICAgICAgICAgICAgbGV0IHdhc0tleUZhbWlseURlZmluZWQgPSBmYWxzZTsK
LQotICAgICAgICAgICAga2V5RmFtaWx5LmZvckVhY2goa2V5ID0+IHsKLSAgICAgICAgICAgICAg
ICBpZiAocmVzdWx0IHx8IHdhc0tleUZhbWlseURlZmluZWQpCi0gICAgICAgICAgICAgICAgICAg
IHJldHVybjsKLQotICAgICAgICAgICAgICAgIGlmICh0aGlzW2tleV0gIT09IG51bGwgJiYgY29u
ZmlndXJhdGlvbltrZXldICE9PSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh0eXBl
b2YgdGhpc1trZXldID09PSAnc3RyaW5nJykgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KGtleSA9PT0gJ3ZlcnNpb25fbmFtZScgJiYgdGhpc1trZXldLnN0YXJ0c1dpdGgoY29uZmlndXJh
dGlvbltrZXldKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAwOwotICAg
ICAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
c3VsdCA9IHRoaXNba2V5XS5sb2NhbGVDb21wYXJlKGNvbmZpZ3VyYXRpb25ba2V5XSk7Ci0gICAg
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodHlwZW9mIHRo
aXNba2V5XSA9PT0gJ251bWJlcicgfHwgdHlwZW9mIHRoaXNba2V5XSA9PT0gJ2Jvb2xlYW4nKQot
ICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gdGhpc1trZXldIC0gY29uZmlndXJhdGlv
bltrZXldOwotICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAg
ICBjb25zb2xlLmVycm9yKHR5cGVvZiB0aGlzW2tleV0gKyAnIGlzIG5vdCBhIHJlY29nbml6ZWQg
Y29uZmlndXJhdGlvbiB0eXBlJykKLSAgICAgICAgICAgICAgICAgICAgd2FzS2V5RmFtaWx5RGVm
aW5lZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSk7Ci0gICAgICAg
IH0pOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLSAgICBjb21wYXJlU0RLcyhjb25m
aWd1cmF0aW9uKSB7Ci0gICAgICAgIGlmICh0aGlzLnNkayA9PT0gbnVsbCB8fCBjb25maWd1cmF0
aW9uLnNkayA9PT0gbnVsbCkKLSAgICAgICAgICAgIHJldHVybiAwOwotCi0gICAgICAgIGNvbnN0
IHRoaXNNYXRjaCA9IHRoaXMuc2RrLm1hdGNoKFNES19SRUdFWCk7Ci0gICAgICAgIGNvbnN0IGNv
bmZpZ3VyYXRpb25NYXRjaCA9IGNvbmZpZ3VyYXRpb24uc2RrLm1hdGNoKFNES19SRUdFWCk7Ci0K
LSAgICAgICAgaWYgKCF0aGlzTWF0Y2ggJiYgIWNvbmZpZ3VyYXRpb25NYXRjaCkgewotICAgICAg
ICAgICAgY29uc29sZS5lcnJvcihgJyR7dGhpcy5zZGt9JyBhbmQgJyR7Y29uZmlndXJhdGlvbi5z
ZGt9JyBkbyBub3QgbWF0Y2ggdGhlIFNESyByZWd1bGFyIGV4cHJlc3Npb25gKTsKLSAgICAgICAg
ICAgIHJldHVybiB0aGlzLnNkay5sb2NhbGVDb21wYXJlKGNvbmZpZ3VyYXRpb24uc2RrKTsKLSAg
ICAgICAgfQotICAgICAgICBpZiAoIXRoaXNNYXRjaCAmJiBjb25maWd1cmF0aW9uTWF0Y2gpCi0g
ICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIGlmICh0aGlzTWF0Y2ggJiYgIWNvbmZpZ3Vy
YXRpb25NYXRjaCkKLSAgICAgICAgICAgIHJldHVybiAxOwotCi0gICAgICAgIGNvbnN0IG1ham9y
RGlmZiA9IHBhcnNlSW50KHRoaXNNYXRjaFsxXSkgLSBwYXJzZUludChjb25maWd1cmF0aW9uTWF0
Y2hbMV0pOwotICAgICAgICBpZiAobWFqb3JEaWZmKQotICAgICAgICAgICAgcmV0dXJuIG1ham9y
RGlmZjsKLSAgICAgICAgY29uc3QgbWlub3JEaWZmID0gdGhpc01hdGNoWzJdLmxvY2FsZUNvbXBh
cmUoY29uZmlndXJhdGlvbk1hdGNoWzJdKTsKLSAgICAgICAgaWYgKG1pbm9yRGlmZikKLSAgICAg
ICAgICAgIHJldHVybiBtaW5vckRpZmY7Ci0gICAgICAgIGNvbnN0IGJ1aWxkRGlmZiA9IHBhcnNl
SW50KHRoaXNNYXRjaFszXSkgLSBwYXJzZUludChjb25maWd1cmF0aW9uTWF0Y2hbM10pOwotICAg
ICAgICBpZiAoYnVpbGREaWZmKQotICAgICAgICAgICAgcmV0dXJuIGJ1aWxkRGlmZjsKLSAgICAg
ICAgcmV0dXJuIHRoaXNNYXRjaFs0XS5sb2NhbGVDb21wYXJlKGNvbmZpZ3VyYXRpb25NYXRjaFs0
XSk7Ci0gICAgfQotICAgIHRvUGFyYW1zKCkgewotICAgICAgICBsZXQgdmVyc2lvbl9uYW1lID0g
dGhpcy52ZXJzaW9uX25hbWU7Ci0gICAgICAgIGNvbnN0IGVuZGluZyA9IHRoaXMudmVyc2lvbl9u
YW1lID8gdGhpcy52ZXJzaW9uX25hbWUuc3Vic3RyaW5nKHRoaXMudmVyc2lvbl9uYW1lLmxlbmd0
aCAtIDIpIDogbnVsbDsKLSAgICAgICAgaWYgKGVuZGluZyA9PT0gJyBFJykKLSAgICAgICAgICAg
IHZlcnNpb25fbmFtZSA9IHRoaXMudmVyc2lvbl9uYW1lLnN1YnN0cmluZygwLCB0aGlzLnZlcnNp
b25fbmFtZS5sZW5ndGggLSAyKQotICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgcGxhdGZv
cm06IFt0aGlzLnBsYXRmb3JtXSwKLSAgICAgICAgICAgIHZlcnNpb246W3RoaXMudmVyc2lvbiAm
JiAhdGhpcy52ZXJzaW9uX25hbWUgPyBDb25maWd1cmF0aW9uLmludGVnZXJUb1ZlcnNpb24odGhp
cy52ZXJzaW9uKSA6IG51bGxdLAotICAgICAgICAgICAgdmVyc2lvbl9uYW1lOiBbdmVyc2lvbl9u
YW1lXSwKLSAgICAgICAgICAgIGlzX3NpbXVsYXRvcjogW3RoaXMuaXNfc2ltdWxhdG9yID09PSBu
dWxsID8gbnVsbCA6ICh0aGlzLmlzX3NpbXVsYXRvciA/ICdUcnVlJyA6ICdGYWxzZScpXSwKLSAg
ICAgICAgICAgIHN0eWxlOiBbdGhpcy5zdHlsZV0sCi0gICAgICAgICAgICBmbGF2b3I6IFt0aGlz
LmZsYXZvcl0sCi0gICAgICAgICAgICBtb2RlbDogW3RoaXMubW9kZWxdLAotICAgICAgICAgICAg
YXJjaGl0ZWN0dXJlOiBbdGhpcy5hcmNoaXRlY3R1cmVdLAotICAgICAgICB9OwotICAgIH0KLX0K
LQotZXhwb3J0IHtDb25maWd1cmF0aW9ufTsKSW5kZXg6IFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3Vs
dHNkYnB5L3ZpZXcvc3RhdGljL2pzL2RyYXdlci5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9yZXN1
bHRzZGJweS9yZXN1bHRzZGJweS92aWV3L3N0YXRpYy9qcy9kcmF3ZXIuanMJKHJldmlzaW9uIDI2
NTUzMSkKKysrIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvc3RhdGljL2pzL2Ry
YXdlci5qcwkobm9uZXhpc3RlbnQpCkBAIC0xLDMzNCArMCwwIEBACi0vLyBDb3B5cmlnaHQgKEMp
IDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
Ly8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0vLyBhcmUgbWV0OgotLy8gMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0vLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0vLyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotLy8KLS8vIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiCi0vLyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLS8vIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLS8vIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotLy8gQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotLy8gQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLS8vIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotLy8gSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLS8vIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0vLyBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0vLyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLWltcG9ydCB7RE9NLCBS
RUZ9IGZyb20gJy9saWJyYXJ5L2pzL1JlZi5qcyc7Ci1pbXBvcnQge3F1ZXJ5VG9QYXJhbXMsIHBh
cmFtc1RvUXVlcnksIFF1ZXJ5TW9kaWZpZXIsIH0gZnJvbSAnL2Fzc2V0cy9qcy9jb21tb24uanMn
OwotaW1wb3J0IHtDb25maWd1cmF0aW9ufSBmcm9tICcvYXNzZXRzL2pzL2NvbmZpZ3VyYXRpb24u
anMnCi0KLWZ1bmN0aW9uIHNldEVuYWJsZVJlY3Vyc2l2ZShlbGVtZW50LCBzdGF0ZSkgewotICAg
IGVsZW1lbnQuZGlzYWJsZWQgPSAhc3RhdGU7Ci0gICAgaWYgKCFzdGF0ZSkKLSAgICAgICAgZWxl
bWVudC5jbGFzc0xpc3QuYWRkKCJkaXNhYmxlZCIpOwotICAgIGVsc2UKLSAgICAgICAgZWxlbWVu
dC5jbGFzc0xpc3QucmVtb3ZlKCJkaXNhYmxlZCIpOwotCi0gICAgZm9yIChsZXQgbm9kZSBvZiBl
bGVtZW50LmNoaWxkcmVuKQotICAgICAgICBzZXRFbmFibGVSZWN1cnNpdmUobm9kZSwgc3RhdGUp
OwotfQotCi1mdW5jdGlvbiBEcmF3ZXIoY29udHJvbHMgPSBbXSwgb25Db2xsYXBzZUNoYW5nZSkg
ewotICAgIGNvbnN0IEhJRERFTiA9IGZhbHNlOwotICAgIGNvbnN0IFZJU0lCTEUgPSB0cnVlOwot
ICAgIGxldCBkcmF3ZXJTdGF0ZSA9IFZJU0lCTEU7Ci0gICAgbGV0IG1haW5zID0gW107Ci0KLSAg
ICBjb25zdCBzaWRlYmFyQ29udHJvbCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUo
J21vYmlsZS1zaWRlYmFyLWNvbnRyb2wnKVswXTsKLSAgICBzaWRlYmFyQ29udHJvbC5jbGFzc0xp
c3QuYWRkKCdkaXNwbGF5Jyk7Ci0KLSAgICBjb25zdCBkcmF3ZXJSZWYgPSBSRUYuY3JlYXRlUmVm
KHsKLSAgICAgICAgc3RhdGU6IGRyYXdlclN0YXRlLAotICAgICAgICBvblN0YXRlVXBkYXRlOiAo
ZWxlbWVudCwgc3RhdGUpID0+IHsKLSAgICAgICAgICAgIGlmIChzdGF0ZSkgewotICAgICAgICAg
ICAgICAgIGVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgiaGlkZGVuIik7Ci0gICAgICAgICAgICAg
ICAgbWFpbnMuZm9yRWFjaChtYWluID0+IG1haW4uY2xhc3NMaXN0LnJlbW92ZSgiaGlkZGVuIikp
OwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBlbGVtZW50LmNsYXNzTGlz
dC5hZGQoImhpZGRlbiIpOwotICAgICAgICAgICAgICAgIG1haW5zLmZvckVhY2gobWFpbiA9PiBt
YWluLmNsYXNzTGlzdC5hZGQoImhpZGRlbiIpKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgZm9yIChsZXQgbm9kZSBvZiBlbGVtZW50LmNoaWxkcmVuKSB7Ci0gICAgICAgICAgICAgICAg
aWYgKG5vZGUuY2xhc3NMaXN0LmNvbnRhaW5zKCJsaXN0IikpCi0gICAgICAgICAgICAgICAgICAg
IHNldEVuYWJsZVJlY3Vyc2l2ZShub2RlLCBzdGF0ZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAKLSAgICAgICAgICAgIGlmIChvbkNvbGxhcHNlQ2hhbmdlKQotICAgICAgICAgICAgICAg
IG9uQ29sbGFwc2VDaGFuZ2UoKTsKLSAgICAgICAgfSwKLSAgICAgICAgb25FbGVtZW50TW91bnQ6
IChlbGVtZW50KSA9PiB7Ci0gICAgICAgICAgICBsZXQgY2FuZGlkYXRlcyA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlDbGFzc05hbWUoIm1haW4iKTsKLSAgICAgICAgICAgIG1haW5zID0gW107Ci0g
ICAgICAgICAgICBmb3IgKGxldCBjb3VudCA9IDA7IGNvdW50IDwgY2FuZGlkYXRlcy5sZW5ndGg7
ICsrY291bnQpCi0gICAgICAgICAgICAgICAgbWFpbnMucHVzaChjYW5kaWRhdGVzW2NvdW50XSk7
Ci0KLSAgICAgICAgICAgIHNpZGViYXJDb250cm9sLm9uY2xpY2sgPSAoKSA9PiB7Ci0gICAgICAg
ICAgICAgICAgaWYgKGVsZW1lbnQuc3R5bGUuZGlzcGxheSkKLSAgICAgICAgICAgICAgICAgICAg
ZWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gbnVsbDsKLSAgICAgICAgICAgICAgICBlbHNlIHsKLSAg
ICAgICAgICAgICAgICAgICAgZm9yIChsZXQgbm9kZSBvZiBlbGVtZW50LmNoaWxkcmVuKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS5jbGFzc0xpc3QuY29udGFpbnMoImxpc3Qi
KSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRFbmFibGVSZWN1cnNpdmUobm9kZSwg
dHJ1ZSk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgZWxlbWVu
dC5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KLSAgICB9KTsKLQotICAgIGNvbnN0IGRyYXdlckNvbnRyb2xsZXJSZWYg
PSBSRUYuY3JlYXRlUmVmKHsKLSAgICAgICAgc3RhdGU6IGRyYXdlclN0YXRlLAotICAgICAgICBv
blN0YXRlVXBkYXRlOiAoZWxlbWVudCwgc3RhdGUpID0+IHsKLSAgICAgICAgICAgIGlmIChzdGF0
ZSkgewotICAgICAgICAgICAgICAgIGVsZW1lbnQuaW5uZXJIVE1MID0gJ0NvbGxhcHNlICZndCc7
Ci0gICAgICAgICAgICAgICAgZWxlbWVudC5zdHlsZS50ZXh0QWxpZ24gPSAnY2VudGVyJzsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2V7Ci0gICAgICAgICAgICAgICAgZWxlbWVudC5p
bm5lckhUTUwgPSAnJmx0JzsKLSAgICAgICAgICAgICAgICBlbGVtZW50LnN0eWxlLnRleHRBbGln
biA9ICdsZWZ0JzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgb25FbGVtZW50
TW91bnQ6IChlbGVtZW50KSA9PiB7Ci0gICAgICAgICAgICBlbGVtZW50Lm9uY2xpY2sgPSAoKSA9
PiB7Ci0gICAgICAgICAgICAgICAgZHJhd2VyU3RhdGUgPSAhZHJhd2VyU3RhdGU7Ci0gICAgICAg
ICAgICAgICAgZHJhd2VyUmVmLnNldFN0YXRlKGRyYXdlclN0YXRlKTsKLSAgICAgICAgICAgICAg
ICBkcmF3ZXJDb250cm9sbGVyUmVmLnNldFN0YXRlKGRyYXdlclN0YXRlKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotICAgIH0pOwotCi0gICAgcmV0dXJuIGA8ZGl2IGNsYXNzPSJzaWRlYmFy
IHJpZ2h0IHVuZGVyLXRvcGJhci13aXRoLWFjdGlvbnMgdW5zZWxlY3RhYmxlIiByZWY9IiR7ZHJh
d2VyUmVmfSI+Ci0gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJidXR0b24gZGVza3RvcC1jb250
cm9sIiByZWY9IiR7ZHJhd2VyQ29udHJvbGxlclJlZn0iIHN0eWxlPSJjdXJzb3I6IHBvaW50ZXI7
IHdpZHRoOjk2JTsgbWFyZ2luOiAxMHB4IDIlIDEwcHggMiU7Ij48L2J1dHRvbj4KLSAgICAgICAg
ICAgICR7Y29udHJvbHMubWFwKGNvbnRyb2wgPT4gewotICAgICAgICAgICAgICAgIHJldHVybiBg
PGRpdiBjbGFzcz0ibGlzdCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJp
dGVtIj4ke2NvbnRyb2x9PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgIDwvZGl2PmA7Ci0gICAg
ICAgICAgICAgICAgfSkuam9pbignJyl9Ci0gICAgICAgIDwvZGl2PmA7Ci19Ci0KLWxldCBjb25m
aWd1cmF0aW9ucyA9IFtdCi1sZXQgY29uZmlndXJhdGlvbnNEZWZpbmVkQ2FsbGJhY2tzID0gW107
Ci1mdW5jdGlvbiByZWZyZXNoQ29uZmlndXJhdGlvbnMoKSB7Ci0gICAgbGV0IHBhcmFtcyA9IHF1
ZXJ5VG9QYXJhbXMoZG9jdW1lbnQuVVJMLnNwbGl0KCc/JylbMV0pOwotICAgIGxldCBxdWVyeVBh
cmFtcyA9IHt9OwotICAgIGlmIChwYXJhbXMuYnJhbmNoKQotICAgICAgICBxdWVyeVBhcmFtcy5i
cmFuY2ggPSBwYXJhbXMuYnJhbmNoOwotCi0gICAgY29uc3QgcXVlcnkgPSBwYXJhbXNUb1F1ZXJ5
KHF1ZXJ5UGFyYW1zKTsKLSAgICBmZXRjaChxdWVyeSA/ICdhcGkvc3VpdGVzPycgKyBxdWVyeTog
J2FwaS9zdWl0ZXMnKS50aGVuKHJlc3BvbnNlID0+IHsKLSAgICAgICAgcmVzcG9uc2UuanNvbigp
LnRoZW4oanNvbiA9PiB7Ci0gICAgICAgICAgICBjb25maWd1cmF0aW9ucyA9IGpzb24ubWFwKHBh
aXIgPT4gbmV3IENvbmZpZ3VyYXRpb24ocGFpclswXSkpOwotICAgICAgICAgICAgY29uZmlndXJh
dGlvbnNEZWZpbmVkQ2FsbGJhY2tzLmZvckVhY2goY2FsbGJhY2sgPT4gY2FsbGJhY2soKSk7Ci0g
ICAgICAgIH0pOwotICAgIH0pLmNhdGNoKGVycm9yID0+IHsKLSAgICAgICAgLy8gSWYgdGhlIGxv
YWQgZmFpbHMsIGxvZyB0aGUgZXJyb3IgYW5kIGNvbnRpbnVlCi0gICAgICAgIGNvbnNvbGUuZXJy
b3IoSlNPTi5zdHJpbmdpZnkoZXJyb3IsIG51bGwsIDQpKTsKLSAgICB9KTsKLX0KLQotZnVuY3Rp
b24gQnJhbmNoU2VsZWN0b3IoY2FsbGJhY2spIHsKLSAgICBjb25zdCBkZWZhdWx0QnJhbmNoZXMg
PSBuZXcgU2V0KFsndHJ1bmsnLCAnbWFzdGVyJ10pOwotICAgIGNvbnN0IGRlZmF1bHRCcmFuY2hL
ZXkgPSBbLi4uZGVmYXVsdEJyYW5jaGVzXS5zb3J0KCkuam9pbignLycpOwotICAgIGNvbnN0IGJy
YW5jaE1vZGlmaWVyID0gbmV3IFF1ZXJ5TW9kaWZpZXIoJ2JyYW5jaCcpOwotCi0gICAgbGV0IHJl
ZiA9IFJFRi5jcmVhdGVSZWYoewotICAgICAgICBzdGF0ZTogW2RlZmF1bHRCcmFuY2hLZXldLAot
ICAgICAgICBvbkVsZW1lbnRNb3VudDogKGVsZW1lbnQpID0+IHsKLSAgICAgICAgICAgIGVsZW1l
bnQub25jaGFuZ2UgPSAoKSA9PiB7Ci0gICAgICAgICAgICAgICAgbGV0IGJyYW5jaCA9IGVsZW1l
bnQudmFsdWU7Ci0gICAgICAgICAgICAgICAgaWYgKGJyYW5jaCA9PT0gZGVmYXVsdEJyYW5jaEtl
eSkKLSAgICAgICAgICAgICAgICAgICAgYnJhbmNoTW9kaWZpZXIucmVtb3ZlKCk7Ci0gICAgICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBicmFuY2hNb2RpZmllci5yZXBsYWNl
KGJyYW5jaCk7Ci0gICAgICAgICAgICAgICAgcmVmcmVzaENvbmZpZ3VyYXRpb25zKCk7Ci0gICAg
ICAgICAgICAgICAgY2FsbGJhY2soKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICAg
ICAgb25TdGF0ZVVwZGF0ZTogKGVsZW1lbnQsIHN0YXRlKSA9PiB7Ci0gICAgICAgICAgICBjb25z
dCBicmFuY2hRdWVyeSA9IGJyYW5jaE1vZGlmaWVyLmN1cnJlbnQoKS5sZW5ndGggPyBicmFuY2hN
b2RpZmllci5jdXJyZW50KClbYnJhbmNoTW9kaWZpZXIuY3VycmVudCgpLmxlbmd0aCAtMV06bnVs
bDsKLSAgICAgICAgICAgIGVsZW1lbnQuaW5uZXJIVE1MID0gc3RhdGUubWFwKGJyYW5jaCA9PiB7
Ci0gICAgICAgICAgICAgICAgaWYgKCFicmFuY2gpCi0gICAgICAgICAgICAgICAgICAgIHJldHVy
biAnJzsKLSAgICAgICAgICAgICAgICBpZiAoYnJhbmNoID09PSBicmFuY2hRdWVyeSkKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGA8b3B0aW9uIHNlbGVjdGVkIHZhbHVlPSIke2JyYW5jaH0i
PiR7YnJhbmNofTwvb3B0aW9uPmA7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGA8b3B0aW9uIHZh
bHVlPSIke2JyYW5jaH0iPiR7YnJhbmNofTwvb3B0aW9uPmA7Ci0gICAgICAgICAgICB9KS5qb2lu
KCcnKTsKLSAgICAgICAgICAgIGVsZW1lbnQucGFyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50LnBh
cmVudEVsZW1lbnQuc3R5bGUuZGlzcGxheSA9IHN0YXRlLmxlbmd0aCA+IDEgPyBudWxsIDogJ25v
bmUnOwotICAgICAgICB9LAotICAgIH0pOwotCi0gICAgZmV0Y2goJ2FwaS9jb21taXRzL2JyYW5j
aGVzJykudGhlbihyZXNwb25zZSA9PiB7Ci0gICAgICAgIHJlc3BvbnNlLmpzb24oKS50aGVuKGpz
b24gPT4gewotICAgICAgICAgICAgbGV0IGJyYW5jaE5hbWVzID0gbmV3IFNldCgpOwotICAgICAg
ICAgICAgT2JqZWN0LmtleXMoanNvbikuZm9yRWFjaChyZXBvID0+IHsKLSAgICAgICAgICAgICAg
ICBqc29uW3JlcG9dLmZvckVhY2goYnJhbmNoID0+IHsKLSAgICAgICAgICAgICAgICAgICAgaWYg
KCFkZWZhdWx0QnJhbmNoZXMuaGFzKGJyYW5jaCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBi
cmFuY2hOYW1lcy5hZGQoYnJhbmNoKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAg
IH0pOwotICAgICAgICAgICAgYnJhbmNoTmFtZXMgPSBbLi4uYnJhbmNoTmFtZXNdOwotICAgICAg
ICAgICAgYnJhbmNoTmFtZXMuc29ydCgpOwotICAgICAgICAgICAgYnJhbmNoTmFtZXMuc3BsaWNl
KDAsIDAsIGRlZmF1bHRCcmFuY2hLZXkpOwotICAgICAgICAgICAgcmVmLnNldFN0YXRlKGJyYW5j
aE5hbWVzKTsKLSAgICAgICAgfSk7Ci0gICAgfSkuY2F0Y2goZXJyb3IgPT4gewotICAgICAgICAv
LyBJZiB0aGUgbG9hZCBmYWlscywgbG9nIHRoZSBlcnJvciBhbmQgY29udGludWUKLSAgICAgICAg
Y29uc29sZS5lcnJvcihKU09OLnN0cmluZ2lmeShlcnJvciwgbnVsbCwgNCkpOwotICAgIH0pOwot
Ci0gICAgcmV0dXJuIGA8ZGl2IGNsYXNzPSJpbnB1dCI+Ci0gICAgICAgICAgICA8c2VsZWN0IHJl
cXVpcmVkIHJlZj0iJHtyZWZ9Ij48L3NlbGVjdD4KLSAgICAgICAgICAgIDxsYWJlbD5CcmFuY2g8
L2xhYmVsPgotICAgICAgICA8L2Rpdj5gOwotfQotCi1mdW5jdGlvbiBMaW1pdFNsaWRlcihjYWxs
YmFjaywgbWF4ID0gNTAwMDAsIGRlZmF1bHRWYWx1ZSA9IDUwMDApIHsKLSAgICBjb25zdCBsaW1p
dE1vZGlmaWVyID0gbmV3IFF1ZXJ5TW9kaWZpZXIoJ2xpbWl0Jyk7Ci0gICAgY29uc3Qgc3RhcnRp
bmdWYWx1ZSA9IGxpbWl0TW9kaWZpZXIuY3VycmVudCgpLmxlbmd0aCA/IGxpbWl0TW9kaWZpZXIu
Y3VycmVudCgpW2xpbWl0TW9kaWZpZXIuY3VycmVudCgpLmxlbmd0aCAtMV06ZGVmYXVsdFZhbHVl
OwotCi0gICAgdmFyIG51bWJlclJlZiA9IG51bGw7Ci0gICAgdmFyIHNsaWRlclJlZiA9IG51bGw7
Ci0KLSAgICBudW1iZXJSZWYgPSBSRUYuY3JlYXRlUmVmKHsKLSAgICAgICAgc3RhdGU6IHN0YXJ0
aW5nVmFsdWUsCi0gICAgICAgIG9uRWxlbWVudE1vdW50OiAoZWxlbWVudCkgPT4gewotICAgICAg
ICAgICAgZWxlbWVudC5vbmNoYW5nZSA9ICgpID0+IHsKLSAgICAgICAgICAgICAgICBsaW1pdE1v
ZGlmaWVyLnJlcGxhY2UoZWxlbWVudC52YWx1ZSk7Ci0gICAgICAgICAgICAgICAgc2xpZGVyUmVm
LnNldFN0YXRlKHBhcnNlSW50KGVsZW1lbnQudmFsdWUsIDEwKSk7Ci0gICAgICAgICAgICAgICAg
Y2FsbGJhY2soKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgb25TdGF0ZVVw
ZGF0ZTogKGVsZW1lbnQsIHN0YXRlKSA9PiB7ZWxlbWVudC52YWx1ZSA9IHN0YXRlO30KLSAgICB9
KTsKLSAgICBzbGlkZXJSZWYgPSBSRUYuY3JlYXRlUmVmKHsKLSAgICAgICAgc3RhdGU6IHN0YXJ0
aW5nVmFsdWUsCi0gICAgICAgIG9uRWxlbWVudE1vdW50OiAoZWxlbWVudCkgPT4gewotICAgICAg
ICAgICAgZWxlbWVudC5vbmlucHV0ID0gKCkgPT4gewotICAgICAgICAgICAgICAgIGNvbnN0IG5l
d0xpbWl0ID0gTWF0aC5jZWlsKGVsZW1lbnQudmFsdWUpOwotICAgICAgICAgICAgICAgIGxpbWl0
TW9kaWZpZXIucmVwbGFjZShuZXdMaW1pdCk7Ci0gICAgICAgICAgICAgICAgbnVtYmVyUmVmLnNl
dFN0YXRlKG5ld0xpbWl0KTsKLSAgICAgICAgICAgICAgICBjYWxsYmFjaygpOwotICAgICAgICAg
ICAgfQotICAgICAgICB9LAotICAgICAgICBvblN0YXRlVXBkYXRlOiAoZWxlbWVudCwgc3RhdGUp
ID0+IHtlbGVtZW50LnZhbHVlID0gc3RhdGU7fQotICAgIH0pOwotICAgIHJldHVybiBgPGRpdiBj
bGFzcz0iaW5wdXQiPgotICAgICAgICAgICAgPGxhYmVsPkxpbWl0OjwvbGFiZWw+Ci0gICAgICAg
ICAgICA8aW5wdXQgdHlwZT0icmFuZ2UiIG1pbj0iMCIgbWF4PSIke21heH0iIHJlZj0iJHtzbGlk
ZXJSZWZ9IiBzdHlsZT0iYmFja2dyb3VuZDp2YXIoLS1pbnZlcnNlQ29sb3IpIj48L2lucHV0Pgot
ICAgICAgICAgICAgPGlucHV0IHR5cGU9Im51bWJlciIgbWluPSIxIiByZWY9IiR7bnVtYmVyUmVm
fSIgcGF0dGVybj0iXlswLTldIj48L2lucHV0PgotICAgICAgICA8L2Rpdj5gCi19Ci0KLWZ1bmN0
aW9uIENvbmZpZ3VyYXRpb25TZWxlY3RvcnMoY2FsbGJhY2spIHsKLSAgICByZWZyZXNoQ29uZmln
dXJhdGlvbnMoKTsKLSAgICBjb25zdCBlbGVtZW50cyA9IFsKLSAgICAgICAgeydxdWVyeSc6ICdw
bGF0Zm9ybScsICduYW1lJzogJ1BsYXRmb3JtJ30sCi0gICAgICAgIHsncXVlcnknOiAndmVyc2lv
bl9uYW1lJywgJ25hbWUnOiAnVmVyc2lvbiBOYW1lJ30sCi0gICAgICAgIHsncXVlcnknOiAnc3R5
bGUnLCAnbmFtZSc6ICdTdHlsZSd9LAotICAgICAgICB7J3F1ZXJ5JzogJ21vZGVsJywgJ25hbWUn
OiAnTW9kZWwnfSwKLSAgICAgICAgeydxdWVyeSc6ICdhcmNoaXRlY3R1cmUnLCAnbmFtZSc6ICdB
cmNoaXRlY3R1cmUnfSwKLSAgICAgICAgeydxdWVyeSc6ICdmbGF2b3InLCAnbmFtZSc6ICdGbGF2
b3InfSwKLSAgICBdOwotICAgIHJldHVybiBlbGVtZW50cy5tYXAoZGV0YWlscyA9PiB7Ci0gICAg
ICAgIGNvbnN0IG1vZGlmaWVyID0gbmV3IFF1ZXJ5TW9kaWZpZXIoZGV0YWlscy5xdWVyeSk7Ci0K
LSAgICAgICAgbGV0IHJlZiA9IFJFRi5jcmVhdGVSZWYoewotICAgICAgICAgICAgc3RhdGU6IGNv
bmZpZ3VyYXRpb25zLAotICAgICAgICAgICAgb25TdGF0ZVVwZGF0ZTogKGVsZW1lbnQsIHN0YXRl
KSA9PiB7Ci0gICAgICAgICAgICAgICAgbGV0IGNhbmRpZGF0ZXMgPSBuZXcgU2V0KCk7Ci0gICAg
ICAgICAgICAgICAgc3RhdGUuZm9yRWFjaChjb25maWd1cmF0aW9uID0+IHsKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKGNvbmZpZ3VyYXRpb25bZGV0YWlscy5xdWVyeV0gPT0gbnVsbCkKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICAgICAgY2FuZGlkYXRl
cy5hZGQoY29uZmlndXJhdGlvbltkZXRhaWxzLnF1ZXJ5XSk7Ci0gICAgICAgICAgICAgICAgfSk7
Ci0gICAgICAgICAgICAgICAgbW9kaWZpZXIuY3VycmVudCgpLmZvckVhY2gocGFyYW0gPT4gewot
ICAgICAgICAgICAgICAgICAgICBpZiAocGFyYW0gPT09ICdBbGwnKQotICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgICAgICBjYW5kaWRhdGVzLmFkZChwYXJh
bSk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0KLSAgICAgICAgICAgICAgICBsZXQgb3B0aW9ucyA9
IFsuLi5jYW5kaWRhdGVzXTsKLSAgICAgICAgICAgICAgICBvcHRpb25zLnNvcnQoKTsKLSAgICAg
ICAgICAgICAgICBvcHRpb25zLnVuc2hpZnQoJ0FsbCcpOwotCi0gICAgICAgICAgICAgICAgbGV0
IHN3aXRjaGVzID0ge307Ci0KLSAgICAgICAgICAgICAgICBsZXQgaXNFeHBhbmRlZCA9IGZhbHNl
OwotICAgICAgICAgICAgICAgIGxldCBleHBhbmRlciA9IFJFRi5jcmVhdGVSZWYoewotICAgICAg
ICAgICAgICAgICAgICBvbkVsZW1lbnRNb3VudDogKGVsZW1lbnQpID0+IHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGVsZW1lbnQub25jbGljayA9ICgpID0+IHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpc0V4cGFuZGVkID0gIWlzRXhwYW5kZWQ7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZWxlbWVudC5pbm5lckhUTUwgPSBpc0V4cGFuZGVkID8gJy0nIDogJysnOwotCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXkuZnJvbShlbGVtZW50LnBhcmVudE5vZGUu
Y2hpbGRyZW4pLmZvckVhY2goY2hpbGQgPT4gewotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoZWxlbWVudCA9PSBjaGlsZCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGQuc3R5
bGUuZGlzcGxheSA9IGlzRXhwYW5kZWQgPyAnYmxvY2snIDogJ25vbmUnOwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSk7Ci0KLSAgICAgICAgICAgICAgICBET00u
aW5qZWN0KGVsZW1lbnQsIGA8YSBjbGFzcz0ibGluay1idXR0b24gdGV4dCBtZWRpdW0iIHJlZj0i
JHtleHBhbmRlcn0iPis8L2E+Ci0gICAgICAgICAgICAgICAgICAgICR7ZGV0YWlscy5uYW1lfSA8
YnI+Ci0gICAgICAgICAgICAgICAgICAgICR7b3B0aW9ucy5tYXAob3B0aW9uID0+IHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGxldCBpc0NoZWNrZWQgPSBmYWxzZTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChvcHRpb24gPT09ICdBbGwnICYmIG1vZGlmaWVyLmN1cnJlbnQoKS5sZW5n
dGggPT09IDApCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNDaGVja2VkID0gdHJ1ZTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKG9wdGlvbiAhPT0gJ0FsbCcgJiYgbW9k
aWZpZXIuY3VycmVudCgpLmluZGV4T2Yob3B0aW9uKSA+PSAwKQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlzQ2hlY2tlZCA9IHRydWU7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIGxl
dCBzd3RjaCA9IFJFRi5jcmVhdGVSZWYoewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9u
RWxlbWVudE1vdW50OiAoZWxlbWVudCkgPT4gewotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzd2l0Y2hlc1tvcHRpb25dID0gZWxlbWVudDsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZWxlbWVudC5vbmNoYW5nZSA9ICgpID0+IHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChvcHRpb24gPT09ICdBbGwnKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlbGVtZW50LmNoZWNrZWQpCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhzd2l0Y2hlcykuZm9yRWFjaChr
ZXkgPT4gewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
a2V5ID09PSAnQWxsJykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3dpdGNoZXNba2V5XS5jaGVja2VkID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbW9kaWZpZXIucmVtb3ZlKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9IGVsc2UgaWYgKGVsZW1lbnQuY2hlY2tlZCkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN3aXRjaGVzWydBbGwnXS5jaGVja2VkID0gZmFsc2U7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXIuYXBwZW5kKG9wdGlv
bik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVyLnJlbW92ZShvcHRpb24p
OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtb2RpZmllci5j
dXJyZW50KCkubGVuZ3RoID09PSAwKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzd2l0Y2hlc1snQWxsJ10uY2hlY2tlZCA9IHRydWU7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjYWxsYmFjaygpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICB9KTsK
LQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGA8ZGl2IGNsYXNzPSJpbnB1dCIgJHtp
c0V4cGFuZGVkID8gJycgOiBgc3R5bGU9ImRpc3BsYXk6IG5vbmU7ImB9PgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA8bGFiZWw+JHtvcHRpb259PC9sYWJlbD4KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJzd2l0Y2giPgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImNoZWNrYm94IiR7aXNDaGVja2Vk
ID8gJyBjaGVja2VkJzogJyd9IHJlZj0iJHtzd3RjaH0iPgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNsaWRlciI+PC9zcGFuPgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDwvZGl2PmA7Ci0gICAgICAgICAgICAgICAgICAgIH0pLmpvaW4oJycpfWApOwotICAgICAgICAg
ICAgfSwKLSAgICAgICAgfSk7Ci0gICAgICAgIGNvbmZpZ3VyYXRpb25zRGVmaW5lZENhbGxiYWNr
cy5wdXNoKCgpID0+IHsKLSAgICAgICAgICAgIHJlZi5zZXRTdGF0ZShjb25maWd1cmF0aW9ucyk7
Ci0gICAgICAgIH0pOwotCi0gICAgICAgIHJldHVybiBgPGRpdiBzdHlsZT0iZm9udC1zaXplOiB2
YXIoLS1zbWFsbFNpemUpOyIgcmVmPSIke3JlZn0iPjwvZGl2PmA7Ci0gICAgfSkuam9pbignJykK
LX0KLQotZXhwb3J0IHtEcmF3ZXIsIEJyYW5jaFNlbGVjdG9yLCBDb25maWd1cmF0aW9uU2VsZWN0
b3JzLCBMaW1pdFNsaWRlcn07CkluZGV4OiBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS92
aWV3L3N0YXRpYy9qcy9leHBlY3RhdGlvbnMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvcmVzdWx0
c2RicHkvcmVzdWx0c2RicHkvdmlldy9zdGF0aWMvanMvZXhwZWN0YXRpb25zLmpzCShyZXZpc2lv
biAyNjU1MzEpCisrKyBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS92aWV3L3N0YXRpYy9q
cy9leHBlY3RhdGlvbnMuanMJKG5vbmV4aXN0ZW50KQpAQCAtMSwxMTEgKzAsMCBAQAotLy8gQ29w
eXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotLy8gYXJlIG1ldDoKLS8vIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0vLyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotLy8gICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIgotLy8gQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0vLyBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0v
LyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLS8vIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLS8vIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0vLyBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLS8vIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0vLyBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotLy8g
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotLy8gVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1jbGFz
cyBFeHBlY3RhdGlvbnMKLXsKLSAgICBzdGF0aWMgY29sb3JNYXAoKSB7Ci0gICAgICAgIGNvbnN0
IGNvbXB1dGVkU3R5bGUgPSBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmJvZHkpOwotICAgICAg
ICByZXR1cm4gewotICAgICAgICAgICAgc3VjY2VzczogY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0
eVZhbHVlKCctLWdyZWVuTGlnaHQnKS50cmltKCksCi0gICAgICAgICAgICB3YXJuaW5nOiBjb21w
dXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tb3JhbmdlRGFyaycpLnRyaW0oKSwKLSAgICAg
ICAgICAgIGZhaWxlZDogY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLXJlZExpZ2h0
JykudHJpbSgpLAotICAgICAgICAgICAgdGltZWRvdXQ6IGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVy
dHlWYWx1ZSgnLS1vcmFuZ2VMaWdodCcpLnRyaW0oKSwKLSAgICAgICAgICAgIGNyYXNoZWQ6IGNv
bXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1wdXJwbGVMaWdodCcpLnRyaW0oKSwKLSAg
ICAgICAgfTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgc3RyaW5nVG9TdGF0ZUlkKHN0cmluZykgewot
ICAgICAgICByZXR1cm4gRXhwZWN0YXRpb25zLnN0YXRlVG9JZE1hcFtzdHJpbmddOwotICAgIH0K
LSAgICBzdGF0aWMgdHlwZUZvcklkKHN0cmluZykgewotICAgICAgICBjb25zdCBpZCA9IEV4cGVj
dGF0aW9ucy5zdHJpbmdUb1N0YXRlSWQoc3RyaW5nKTsKLSAgICAgICAgbGV0IHJlc3VsdCA9ICdz
dWNjZXNzJzsKLSAgICAgICAgRXhwZWN0YXRpb25zLmZhaWx1cmVUeXBlcy5mb3JFYWNoKHR5cGUg
PT4gewotICAgICAgICAgICAgY29uc3QgaWRGb3JUeXBlID0gRXhwZWN0YXRpb25zLnN0cmluZ1Rv
U3RhdGVJZChFeHBlY3RhdGlvbnMuZmFpbHVyZVR5cGVNYXBbdHlwZV0pOwotICAgICAgICAgICAg
aWYgKGlkIDw9IGlkRm9yVHlwZSkKLSAgICAgICAgICAgICAgICByZXN1bHQgPSB0eXBlOwotICAg
ICAgICB9KTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0gICAgc3RhdGljIHN5bWJv
bEZvcklkKHN0cmluZykgewotICAgICAgICByZXR1cm4gRXhwZWN0YXRpb25zLnN5bWJvbE1hcFtF
eHBlY3RhdGlvbnMudHlwZUZvcklkKHN0cmluZyldOwotICAgIH0KLSAgICBzdGF0aWMgY29sb3JG
b3JJZChzdHJpbmcpIHsKLSAgICAgICAgcmV0dXJuIEV4cGVjdGF0aW9ucy5jb2xvck1hcCgpW0V4
cGVjdGF0aW9ucy50eXBlRm9ySWQoc3RyaW5nKV07Ci0gICAgfQotCi0gICAgc3RhdGljIHVuZXhw
ZWN0ZWRSZXN1bHRzKHJlc3VsdHMsIGV4cGVjdGF0aW9ucykKLSAgICB7Ci0gICAgICAgIGxldCBy
ID0gcmVzdWx0cy5zcGxpdCgnLicpOwotICAgICAgICBleHBlY3RhdGlvbnMuc3BsaXQoJyAnKS5m
b3JFYWNoKGV4cGVjdGF0aW9uID0+IHsKLSAgICAgICAgICAgIGNvbnN0IGkgPSByLmluZGV4T2Yo
ZXhwZWN0YXRpb24pOwotICAgICAgICAgICAgaWYgKGkgPiAtMSkKLSAgICAgICAgICAgICAgICBy
LnNwbGljZShpLCAxKTsKLSAgICAgICAgICAgIGlmIChleHBlY3RhdGlvbiA9PT0gJ0ZBSUwnKQot
ICAgICAgICAgICAgICAgIFsnVEVYVCcsICdBVURJTycsICdJTUFHRSddLmZvckVhY2goZXhwZWN0
YXRpb24gPT4gewotICAgICAgICAgICAgICAgICAgICBjb25zdCBpID0gci5pbmRleE9mKGV4cGVj
dGF0aW9uKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGkgPiAtMSkKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHIuc3BsaWNlKGksIDEpOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICB9
KTsKLSAgICAgICAgbGV0IHJlc3VsdCA9ICdQQVNTJzsKLSAgICAgICAgci5mb3JFYWNoKGNhbmRp
ZGF0ZSA9PiB7Ci0gICAgICAgICAgICBpZiAoRXhwZWN0YXRpb25zLnN0cmluZ1RvU3RhdGVJZChj
YW5kaWRhdGUpIDwgRXhwZWN0YXRpb25zLnN0cmluZ1RvU3RhdGVJZChyZXN1bHQpKQotICAgICAg
ICAgICAgICAgIHJlc3VsdCA9IGNhbmRpZGF0ZTsKLSAgICAgICAgfSk7Ci0gICAgICAgIHJldHVy
biByZXN1bHQ7Ci0gICAgfQotfQotCi1FeHBlY3RhdGlvbnMuc3RhdGVUb0lkTWFwID0gewotICAg
IENSQVNIOiAweDAwLAotICAgIFRJTUVPVVQ6IDB4MDgsCi0gICAgSU1BR0U6IDB4MTAsCi0gICAg
QVVESU86IDB4MTgsCi0gICAgVEVYVDogMHgyMCwKLSAgICBGQUlMOiAweDI4LAotICAgIEVSUk9S
OiAweDMwLAotICAgIFdBUk5JTkc6IDB4MzgsCi0gICAgUEFTUzogMHg0MCwKLX07Ci1FeHBlY3Rh
dGlvbnMuZmFpbHVyZVR5cGVzID0gWyd3YXJuaW5nJywgJ2ZhaWxlZCcsICd0aW1lZG91dCcsICdj
cmFzaGVkJ107Ci1FeHBlY3RhdGlvbnMuZmFpbHVyZVR5cGVNYXAgPSB7Ci0gICAgd2FybmluZzog
J1dBUk5JTkcnLAotICAgIGZhaWxlZDogJ0VSUk9SJywKLSAgICB0aW1lZG91dDogJ1RJTUVPVVQn
LAotICAgIGNyYXNoZWQ6ICdDUkFTSCcsCi19Ci1jb25zdCB0aW1lb3V0SW1hZ2UgPSBuZXcgSW1h
Z2UoKTsKLXRpbWVvdXRJbWFnZS5zcmMgPSAnL2xpYnJhcnkvaWNvbnMvY2xvY2suc3ZnJzsKLXRp
bWVvdXRJbWFnZS50b1N0cmluZyA9IGZ1bmN0aW9uICgpIHsKLSAgICByZXR1cm4gdGhpcy5vdXRl
ckhUTUw7Ci19Ci1FeHBlY3RhdGlvbnMuc3ltYm9sTWFwID0gewotICAgIHN1Y2Nlc3M6ICfinJMn
LAotICAgIHdhcm5pbmc6ICc/JywKLSAgICBmYWlsZWQ6ICfwnZa3JywKLSAgICB0aW1lZG91dDog
dGltZW91dEltYWdlLAotICAgIGNyYXNoZWQ6ICchJywKLX0KLQotZXhwb3J0IHtFeHBlY3RhdGlv
bnN9OwpJbmRleDogVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9zdGF0aWMvanMv
ZmFpbHVyZXMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkv
dmlldy9zdGF0aWMvanMvZmFpbHVyZXMuanMJKHJldmlzaW9uIDI2NTUzMSkKKysrIFRvb2xzL3Jl
c3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvc3RhdGljL2pzL2ZhaWx1cmVzLmpzCShub25leGlz
dGVudCkKQEAgLTEsMTU5ICswLDAgQEAKLS8vIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLS8v
IGFyZSBtZXQ6Ci0vLyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLS8vICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIKLS8vIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotLy8gVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotLy8gUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0vLyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0vLyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotLy8gU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0vLyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotLy8gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLS8vIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLS8vIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotaW1wb3J0IHtUSU1FU1RBTVBfVE9fVVVJRF9NVUxU
SVBMSUVSfSBmcm9tICcvYXNzZXRzL2pzL2NvbW1pdC5qcyc7Ci1pbXBvcnQge3F1ZXJ5VG9QYXJh
bXMsIHBhcmFtc1RvUXVlcnksIFF1ZXJ5TW9kaWZpZXJ9IGZyb20gJy9hc3NldHMvanMvY29tbW9u
LmpzJzsKLWltcG9ydCB7RXhwZWN0YXRpb25zfSBmcm9tICcvYXNzZXRzL2pzL2V4cGVjdGF0aW9u
cy5qcyc7Ci1pbXBvcnQge0NvbmZpZ3VyYXRpb259IGZyb20gJy9hc3NldHMvanMvY29uZmlndXJh
dGlvbi5qcyc7Ci0KLWNsYXNzIEZhaWx1cmVzIHsKLSAgICBzdGF0aWMgZnJvbUVuZHBvaW50KHN1
aXRlLCBjb25maWd1cmF0aW9uPW51bGwsIHBhcmFtcz17fSkKLSAgICB7Ci0gICAgICAgIHJldHVy
biBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHsKLSAgICAgICAgICAgIGNv
bnN0IHBhcmFtc1RvRGlzcGF0Y2ggPSBPYmplY3QuYXNzaWduKGNvbmZpZ3VyYXRpb24gPyBjb25m
aWd1cmF0aW9uLnRvUGFyYW1zKCkgOiB7fSwgcGFyYW1zKTsKLSAgICAgICAgICAgIHBhcmFtc1Rv
RGlzcGF0Y2guY29sbGFwc2VkID0gW2ZhbHNlXTsKLSAgICAgICAgICAgIGlmIChwYXJhbXNUb0Rp
c3BhdGNoLnVuZXhwZWN0ZWQgPT09IHVuZGVmaW5lZCkKLSAgICAgICAgICAgICAgICBwYXJhbXNU
b0Rpc3BhdGNoLnVuZXhwZWN0ZWQgPSBbZmFsc2VdOwotCi0gICAgICAgICAgICBmZXRjaChgYXBp
L2ZhaWx1cmVzLyR7c3VpdGV9PyR7cGFyYW1zVG9RdWVyeShwYXJhbXNUb0Rpc3BhdGNoKX1gKS50
aGVuKHJlc3BvbnNlID0+IHsKLSAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gW107Ci0gICAg
ICAgICAgICAgICAgcmVzcG9uc2UuanNvbigpLnRoZW4oanNvbiA9PiB7Ci0gICAgICAgICAgICAg
ICAgICAgIGlmICghQXJyYXkuaXNBcnJheShqc29uKSkKLSAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBbXTsKLSAgICAgICAgICAgICAgICAgICAganNvbi5mb3JFYWNoKChwYWlycykgPT4g
ewotICAgICAgICAgICAgICAgICAgICAgICAgcGFpcnMucmVzdWx0cy5mb3JFYWNoKChydW4pID0+
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChuZXcgRmFpbHVyZXMo
c3VpdGUsIG5ldyBDb25maWd1cmF0aW9uKHBhaXJzLmNvbmZpZ3VyYXRpb24pLCBydW4pKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgICAgICB9KTsKLSAgICAg
ICAgICAgICAgICAgICAgcmVzb2x2ZShyZXN1bHQpOwotICAgICAgICAgICAgICAgIH0pOwotICAg
ICAgICAgICAgfSkuY2F0Y2goZXJyb3IgPT4gewotICAgICAgICAgICAgICAgIC8vIElmIHRoZSBs
b2FkIGZhaWxzLCBsb2cgdGhlIGVycm9yIGFuZCBjb250aW51ZQotICAgICAgICAgICAgICAgIGNv
bnNvbGUuZXJyb3IoSlNPTi5zdHJpbmdpZnkoZXJyb3IsIG51bGwsIDQpKTsKLSAgICAgICAgICAg
ICAgICByZWplY3QoZXJyb3IpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0pOwotICAgIH0K
LQotICAgIHN0YXRpYyBjb21iaW5lKCkKLSAgICB7Ci0gICAgICAgIGlmICghYXJndW1lbnRzLmxl
bmd0aCkKLSAgICAgICAgICAgIHJldHVybiBudWxsOwotCi0gICAgICAgIGNvbnN0IHJlc3VsdCA9
IG5ldyBGYWlsdXJlcyhhcmd1bWVudHNbMF0uc3VpdGUpOwotICAgICAgICBjb25zdCBjb25maWd1
cmF0aW9ucyA9IFtdOwotCi0gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJndW1lbnRzLmxl
bmd0aDsgKytpKSB7Ci0gICAgICAgICAgICBjb25maWd1cmF0aW9ucy5wdXNoKGFyZ3VtZW50c1tp
XS5jb25maWd1cmF0aW9uKTsKLSAgICAgICAgICAgIHJlc3VsdC5hZ2dyZWdhdGluZyArPSBhcmd1
bWVudHNbaV0uYWdncmVnYXRpbmc7Ci0gICAgICAgICAgICByZXN1bHQuc3RhcnRfdGltZV9yYW5n
ZSA9IFsKLSAgICAgICAgICAgICAgICBNYXRoLm1pbihyZXN1bHQuc3RhcnRfdGltZV9yYW5nZVsw
XSwgYXJndW1lbnRzW2ldLnN0YXJ0X3RpbWVfcmFuZ2VbMF0pLAotICAgICAgICAgICAgICAgIE1h
dGgubWF4KHJlc3VsdC5zdGFydF90aW1lX3JhbmdlWzFdLCBhcmd1bWVudHNbaV0uc3RhcnRfdGlt
ZV9yYW5nZVsxXSksCi0gICAgICAgICAgICBdOwotICAgICAgICAgICAgcmVzdWx0LnV1aWRfcmFu
Z2UgPSBbCi0gICAgICAgICAgICAgICAgTWF0aC5taW4ocmVzdWx0LnV1aWRfcmFuZ2VbMF0sIGFy
Z3VtZW50c1tpXS51dWlkX3JhbmdlWzBdKSwKLSAgICAgICAgICAgICAgICBNYXRoLm1heChyZXN1
bHQudXVpZF9yYW5nZVsxXSwgYXJndW1lbnRzW2ldLnV1aWRfcmFuZ2VbMV0pLAotICAgICAgICAg
ICAgXTsKLQotICAgICAgICAgICAgLy8gQ29tYmluZQotICAgICAgICAgICAgRXhwZWN0YXRpb25z
LmZhaWx1cmVUeXBlcy5mb3JFYWNoKHR5cGUgPT4gewotICAgICAgICAgICAgICAgIGZvciAobGV0
IHRlc3QgaW4gYXJndW1lbnRzW2ldW3R5cGVdKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChy
ZXN1bHRbdHlwZV1bdGVzdF0gPT09IHVuZGVmaW5lZCkKLSAgICAgICAgICAgICAgICAgICAgICAg
IHJlc3VsdFt0eXBlXVt0ZXN0XSA9IGFyZ3VtZW50c1tpXVt0eXBlXVt0ZXN0XTsKLSAgICAgICAg
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0W3R5cGVdW3Rl
c3RdICs9IGFyZ3VtZW50c1tpXVt0eXBlXVt0ZXN0XTsKLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICB9KTsKLQotICAgICAgICAgICAgLy8gUHJpb3JpdGl6ZSBmYWlsdXJlcwotICAgICAg
ICAgICAgY29uc3QgcmVtYWluaW5nVHlwZXMgPSBbLi4uRXhwZWN0YXRpb25zLmZhaWx1cmVUeXBl
c107Ci0gICAgICAgICAgICB3aGlsZSAocmVtYWluaW5nVHlwZXMubGVuZ3RoID4gMSkgewotICAg
ICAgICAgICAgICAgIGNvbnN0IHRvUmVtb3ZlID0gW107Ci0gICAgICAgICAgICAgICAgY29uc3Qg
Y3VycmVudFR5cGUgPSByZW1haW5pbmdUeXBlc1swXTsKLSAgICAgICAgICAgICAgICByZW1haW5p
bmdUeXBlcy5zaGlmdCgpOwotCi0gICAgICAgICAgICAgICAgZm9yIChsZXQgdGVzdCBpbiByZXN1
bHRbY3VycmVudFR5cGVdKSB7Ci0gICAgICAgICAgICAgICAgICAgIGxldCB3b3JzdFR5cGUgPSBj
dXJyZW50VHlwZTsKLSAgICAgICAgICAgICAgICAgICAgcmVtYWluaW5nVHlwZXMuZm9yRWFjaCh0
eXBlID0+IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHRbdHlwZV1bdGVzdF0g
IT09IHVuZGVmaW5lZCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3JzdFR5cGUgPSB0
eXBlOwotICAgICAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHdv
cnN0VHlwZSA9PSBjdXJyZW50VHlwZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICAgICAgICAgICAgICByZXN1bHRbd29yc3RUeXBlXVt0ZXN0XSArPSByZXN1bHRb
Y3VycmVudFR5cGVdW3Rlc3RdOwotICAgICAgICAgICAgICAgICAgICB0b1JlbW92ZS5wdXNoKHRl
c3QpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB0b1JlbW92ZS5mb3JFYWNo
KHRlc3QgPT4gewotICAgICAgICAgICAgICAgICAgICBkZWxldGUgcmVzdWx0W2N1cnJlbnRUeXBl
XVt0ZXN0XTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQot
ICAgICAgICByZXN1bHQuY29uZmlndXJhdGlvbiA9IENvbmZpZ3VyYXRpb24uY29tYmluZSguLi5j
b25maWd1cmF0aW9ucyk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotCi0gICAgY29u
c3RydWN0b3Ioc3VpdGUsIGNvbmZpZ3VyYXRpb24gPSBudWxsLCBqc29uID0gbnVsbCkgewotICAg
ICAgICB0aGlzLnN1aXRlID0gc3VpdGU7Ci0gICAgICAgIHRoaXMuY29uZmlndXJhdGlvbiA9IGNv
bmZpZ3VyYXRpb24gPyBuZXcgQ29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uKSA6IG5ldyBDb25m
aWd1cmF0aW9uKCk7Ci0KLSAgICAgICAgRXhwZWN0YXRpb25zLmZhaWx1cmVUeXBlcy5mb3JFYWNo
KHR5cGUgPT4gewotICAgICAgICAgICAgdGhpc1t0eXBlXSA9IHt9OwotICAgICAgICB9KTsKLSAg
ICAgICAgaWYgKGpzb24gPT09IG51bGwpIHsKLSAgICAgICAgICAgIHRoaXMuYWdncmVnYXRpbmcg
PSAwOwotICAgICAgICAgICAgY29uc3QgY3VycmVudFRpbWUgPSBNYXRoLmZsb29yKERhdGUubm93
KCkgLyAxMDAwKTsKLSAgICAgICAgICAgIHRoaXMuc3RhcnRfdGltZV9yYW5nZSA9IFtjdXJyZW50
VGltZSwgMF07Ci0gICAgICAgICAgICB0aGlzLnV1aWRfcmFuZ2UgPSBbY3VycmVudFRpbWUgKiBU
SU1FU1RBTVBfVE9fVVVJRF9NVUxUSVBMSUVSLCAwXTsKLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgfQotCi0gICAgICAgIHRoaXMuYWdncmVnYXRpbmcgPSAxOwotICAgICAgICB0aGlzLnN0
YXJ0X3RpbWVfcmFuZ2UgPSBbanNvbi5zdGFydF90aW1lLCBqc29uLnN0YXJ0X3RpbWVdOwotICAg
ICAgICB0aGlzLnV1aWRfcmFuZ2UgPSBbanNvbi51dWlkLCBqc29uLnV1aWRdOwotICAgICAgICBm
b3IgKHZhciBwYXJhbWV0ZXIgaW4ganNvbikgewotICAgICAgICAgICAgaWYgKHBhcmFtZXRlciA9
PT0gJ3V1aWQnIHx8IHBhcmFtZXRlciA9PT0gJ3N0YXJ0X3RpbWUnKQotICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwotICAgICAgICAgICAgY29uc3QgdHlwZSA9IEV4cGVjdGF0aW9ucy50eXBlRm9y
SWQoanNvbltwYXJhbWV0ZXJdKTsKLSAgICAgICAgICAgIHRoaXNbdHlwZV1bcGFyYW1ldGVyXSA9
IDE7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgdG9QYXJhbXMoKSB7Ci0gICAgICAgIGNvbnN0IHBh
cmFtcyA9IHRoaXMuY29uZmlndXJhdGlvbi50b1BhcmFtcygpOwotICAgICAgICBwYXJhbXMuc3Vp
dGUgPSBbdGhpcy5zdWl0ZV07Ci0gICAgICAgIGlmICh0aGlzLnV1aWRfcmFuZ2VbMF0gPD0gdGhp
cy51dWlkX3JhbmdlWzFdKSB7Ci0gICAgICAgICAgICBpZiAodGhpcy51dWlkX3JhbmdlWzBdID09
PSB0aGlzLnV1aWRfcmFuZ2VbMV0pCi0gICAgICAgICAgICAgICAgcGFyYW1zLnV1aWQgPSBbdGhp
cy51dWlkX3JhbmdlWzBdXTsKLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIHBh
cmFtcy5hZnRlcl91dWlkID0gW3RoaXMudXVpZF9yYW5nZVswXV07Ci0gICAgICAgICAgICAgICAg
cGFyYW1zLmJlZm9yZV91dWlkID0gW3RoaXMudXVpZF9yYW5nZVsxXV07Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHRoaXMuc3RhcnRfdGltZV9yYW5nZVswXSA8PSB0aGlz
LnN0YXJ0X3RpbWVfcmFuZ2VbMV0pIHsKLSAgICAgICAgICAgIHBhcmFtcy5hZnRlcl90aW1lID0g
W3RoaXMuc3RhcnRfdGltZV9yYW5nZVswXV07Ci0gICAgICAgICAgICBwYXJhbXMuYmVmb3JlX3Rp
bWUgPSBbdGhpcy5zdGFydF90aW1lX3JhbmdlWzFdXTsKLSAgICAgICAgfQotICAgICAgICByZXR1
cm4gcGFyYW1zOwotICAgIH0KLX07Ci0KLWV4cG9ydCB7RmFpbHVyZXN9OwpJbmRleDogVG9vbHMv
cmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9zdGF0aWMvanMvaW52ZXN0aWdhdGUuanMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9zdGF0aWMvanMv
aW52ZXN0aWdhdGUuanMJKHJldmlzaW9uIDI2NTUzMSkKKysrIFRvb2xzL3Jlc3VsdHNkYnB5L3Jl
c3VsdHNkYnB5L3ZpZXcvc3RhdGljL2pzL2ludmVzdGlnYXRlLmpzCShub25leGlzdGVudCkKQEAg
LTEsNDI2ICswLDAgQEAKLS8vIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLS8vIGFyZSBtZXQ6
Ci0vLyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLS8vICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIKLS8vIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotLy8gVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotLy8gUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0vLyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0vLyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotLy8gU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0vLyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
Ly8gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLS8vIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLS8vIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLQotaW1wb3J0IHtBcmNoaXZlUm91dGVyfSBmcm9tICcvYXNzZXRzL2pz
L2FyY2hpdmVSb3V0ZXIuanMnOwotaW1wb3J0IHtET00sIFJFRn0gZnJvbSAnL2xpYnJhcnkvanMv
UmVmLmpzJzsKLWltcG9ydCB7Q29tbWl0QmFua30gZnJvbSAnL2Fzc2V0cy9qcy9jb21taXQuanMn
OwotaW1wb3J0IHtxdWVyeVRvUGFyYW1zLCBwYXJhbXNUb1F1ZXJ5LCBRdWVyeU1vZGlmaWVyLCBw
ZXJjZW50YWdlLCBlbGFwc2VkVGltZX0gZnJvbSAnL2Fzc2V0cy9qcy9jb21tb24uanMnOwotaW1w
b3J0IHtDb25maWd1cmF0aW9ufSBmcm9tICcvYXNzZXRzL2pzL2NvbmZpZ3VyYXRpb24uanMnCi1p
bXBvcnQge0V4cGVjdGF0aW9uc30gZnJvbSAnL2Fzc2V0cy9qcy9leHBlY3RhdGlvbnMuanMnOwot
aW1wb3J0IHtGYWlsdXJlc30gZnJvbSAnL2Fzc2V0cy9qcy9mYWlsdXJlcy5qcyc7Ci0KLWZ1bmN0
aW9uIGNvbW1pdHNGb3JVdWlkKHV1aWQpIHsKLSAgICByZXR1cm4gYENvbW1pdHM6ICR7Q29tbWl0
QmFuay5jb21taXRzRHVyaW5nKHV1aWQpLm1hcCgoY29tbWl0KSA9PiB7Ci0gICAgICAgICAgICBj
b25zdCBwYXJhbXMgPSB7Ci0gICAgICAgICAgICAgICAgYnJhbmNoOiBjb21taXQuYnJhbmNoID8g
W2NvbW1pdC5icmFuY2hdIDogYnJhbmNoLAotICAgICAgICAgICAgICAgIHV1aWQ6IFtjb21taXQu
dXVpZF0sCi0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoIXBhcmFtcy5icmFuY2gpCi0g
ICAgICAgICAgICAgICAgZGVsZXRlIHBhcmFtcy5icmFuY2g7Ci0gICAgICAgICAgICBjb25zdCBx
dWVyeSA9IHBhcmFtc1RvUXVlcnkocGFyYW1zKTsKLSAgICAgICAgICAgIHJldHVybiBgPGEgaHJl
Zj0iL2NvbW1pdC9pbmZvPyR7cXVlcnl9IiB0YXJnZXQ9Il9ibGFuayI+JHtjb21taXQuaWQuc3Vi
c3RyaW5nKDAsMTIpfTwvYT5gOwotICAgICAgICB9KS5qb2luKCcsICcpfWAKLX0KLQotZnVuY3Rp
b24gcGFyYW1ldGVyc0Zvckluc3RhbmNlKHN1aXRlLCBkYXRhKQotewotICAgIGNvbnN0IGJyYW5j
aCA9IHF1ZXJ5VG9QYXJhbXMoZG9jdW1lbnQuVVJMLnNwbGl0KCc/JylbMV0pLmJyYW5jaDsKLSAg
ICBjb25zdCBidWlsZFBhcmFtcyA9IGRhdGEuY29uZmlndXJhdGlvbi50b1BhcmFtcygpOwotICAg
IGJ1aWxkUGFyYW1zWydzdWl0ZSddID0gW3N1aXRlXTsKLSAgICBidWlsZFBhcmFtc1sndXVpZCdd
ID0gW2RhdGEudXVpZF07Ci0gICAgYnVpbGRQYXJhbXNbJ2FmdGVyX3RpbWUnXSA9IFtkYXRhLnN0
YXJ0X3RpbWVdOwotICAgIGJ1aWxkUGFyYW1zWydiZWZvcmVfdGltZSddID0gW2RhdGEuc3RhcnRf
dGltZV07Ci0gICAgaWYgKGJyYW5jaCkKLSAgICAgICAgYnVpbGRQYXJhbXNbJ2JyYW5jaCddID0g
YnJhbmNoOwotICAgIHJldHVybiBwYXJhbXNUb1F1ZXJ5KGJ1aWxkUGFyYW1zKTsKLX0KLQotZnVu
Y3Rpb24gdGVzdFJ1bkxpbmsoc3VpdGUsIGRhdGEpCi17Ci0gICAgaWYgKCFkYXRhLnN0YXJ0X3Rp
bWUpCi0gICAgICAgIHJldHVybiAnJzsKLSAgICByZXR1cm4gYDxhIGhyZWY9Ii91cmxzL2J1aWxk
PyR7cGFyYW1ldGVyc0Zvckluc3RhbmNlKHN1aXRlLCBkYXRhKX0iIHRhcmdldD0iX2JsYW5rIj5U
ZXN0IHJ1bjwvYT4gQCAke25ldyBEYXRlKGRhdGEuc3RhcnRfdGltZSAqIDEwMDApLnRvTG9jYWxl
U3RyaW5nKCl9YDsKLX0KLQotZnVuY3Rpb24gYXJjaGl2ZUxpbmsoc3VpdGUsIGRhdGEpCi17Ci0g
ICAgaWYgKCFkYXRhLnN0YXJ0X3RpbWUgfHwgIUFyY2hpdmVSb3V0ZXIuaGFzQXJjaGl2ZShzdWl0
ZSkpCi0gICAgICAgIHJldHVybiAnJzsKLSAgICByZXR1cm4gYDxhIGhyZWY9Ii9hcmNoaXZlLyR7
QXJjaGl2ZVJvdXRlci5wYXRoRm9yKHN1aXRlKX0/JHtwYXJhbWV0ZXJzRm9ySW5zdGFuY2Uoc3Vp
dGUsIGRhdGEpfSIgdGFyZ2V0PSJfYmxhbmsiPiR7QXJjaGl2ZVJvdXRlci5sYWJlbEZvcihzdWl0
ZSl9PC9hPmA7Ci19Ci0KLWZ1bmN0aW9uIGVsYXBzZWQoZGF0YSkKLXsKLSAgICBpZiAoZGF0YS50
aW1lKQotICAgICAgICByZXR1cm4gYFRvb2sgJHtkYXRhLnRpbWUgLyAxMDAwfSBzZWNvbmRzYDsK
LSAgICBpZiAoZGF0YS5zdGF0cyAmJiBkYXRhLnN0YXRzLnN0YXJ0X3RpbWUgJiYgZGF0YS5zdGF0
cy5lbmRfdGltZSkKLSAgICAgICAgcmV0dXJuIGBTdWl0ZSB0b29rICR7ZWxhcHNlZFRpbWUoZGF0
YS5zdGF0cy5zdGFydF90aW1lLCBkYXRhLnN0YXRzLmVuZF90aW1lKX1gOwotICAgIHJldHVybiAn
JzsKLX0KLQotZnVuY3Rpb24gcHJpb3JpdGl6ZWRGYWlsdXJlcyhmYWlsdXJlcywgbWF4ID0gMCwg
d2lsbEZpbHRlckV4cGVjdGVkID0gZmFsc2UpCi17Ci0gICAgaWYgKGZhaWx1cmVzID09PSB1bmRl
ZmluZWQpCi0gICAgICAgIHJldHVybiAnJzsKLQotICAgIGlmIChmYWlsdXJlcyA9PT0gbnVsbCkK
LSAgICAgICAgcmV0dXJuIGA8ZGl2IGNsYXNzPSJsb2FkZXIiPgotICAgICAgICAgICAgICAgIDxk
aXYgY2xhc3M9InNwaW5uZXIiPjwvZGl2PgotICAgICAgICAgICAgPC9kaXY+YDsKLSAgICBsZXQg
ZmFpbHVyZXNUb0Rpc3BsYXkgPSBbXTsKLSAgICBFeHBlY3RhdGlvbnMuZmFpbHVyZVR5cGVzLmZv
ckVhY2godHlwZSA9PiB7Ci0gICAgICAgIGZvciAobGV0IHRlc3ROYW1lIGluIGZhaWx1cmVzW3R5
cGVdKSB7Ci0gICAgICAgICAgICBmYWlsdXJlc1RvRGlzcGxheS5wdXNoKHsKLSAgICAgICAgICAg
ICAgICBmYWlsdXJlOiB0eXBlLAotICAgICAgICAgICAgICAgIHRlc3Q6IHRlc3ROYW1lLAotICAg
ICAgICAgICAgICAgIGNvdW50OiBmYWlsdXJlcy5hZ2dyZWdhdGluZywKLSAgICAgICAgICAgICAg
ICBmYWlsdXJlQ291bnQ6IGZhaWx1cmVzW3R5cGVdW3Rlc3ROYW1lXSwKLSAgICAgICAgICAgIH0p
OwotICAgICAgICB9Ci0gICAgfSk7Ci0gICAgZmFpbHVyZXNUb0Rpc3BsYXkuc29ydChmdW5jdGlv
bihhLCBiKSB7Ci0gICAgICAgIGNvbnN0IHR5cGVDb21wYXJlID0gRXhwZWN0YXRpb25zLnN0cmlu
Z1RvU3RhdGVJZChFeHBlY3RhdGlvbnMuZmFpbHVyZVR5cGVNYXBbYS5mYWlsdXJlXSkgLSBFeHBl
Y3RhdGlvbnMuc3RyaW5nVG9TdGF0ZUlkKEV4cGVjdGF0aW9ucy5mYWlsdXJlVHlwZU1hcFtiLmZh
aWx1cmVdKTsKLSAgICAgICAgaWYgKHR5cGVDb21wYXJlKQotICAgICAgICAgICAgcmV0dXJuIHR5
cGVDb21wYXJlOwotICAgICAgICBpZiAoYS5mYWlsdXJlQ291bnQgLSBiLmZhaWx1cmVDb3VudCkK
LSAgICAgICAgICAgIHJldHVybiBhLmZhaWx1cmVDb3VudCAtIGIuZmFpbHVyZUNvdW50OwotICAg
ICAgICByZXR1cm4gKGEudGVzdCkubG9jYWxlQ29tcGFyZShiLnRlc3QpOwotICAgIH0pOwotCi0g
ICAgaWYgKG1heCAmJiBmYWlsdXJlc1RvRGlzcGxheS5sZW5ndGggPiBtYXgpIHsKLSAgICAgICAg
ZmFpbHVyZXNUb0Rpc3BsYXkgPSBmYWlsdXJlc1RvRGlzcGxheS5zcGxpY2UoMCwgbWF4KTsKLSAg
ICAgICAgZmFpbHVyZXNUb0Rpc3BsYXlbbWF4IC0gMV0gPSBudWxsOwotICAgIH0KLQotCi0KLSAg
ICByZXR1cm4gYDxkaXY+JHtmYWlsdXJlc1RvRGlzcGxheS5tYXAoZmFpbHVyZSA9PiB7Ci0gICAg
ICAgIGlmIChmYWlsdXJlID09PSBudWxsKSB7Ci0gICAgICAgICAgICBjb25zdCBwYXJhbXMgPSBm
YWlsdXJlcy50b1BhcmFtcygpOwotICAgICAgICAgICAgcGFyYW1zLnVuZXhwZWN0ZWQgPSBbd2ls
bEZpbHRlckV4cGVjdGVkXTsKLSAgICAgICAgICAgIHJldHVybiBgPGEgc3R5bGU9Im1hcmdpbi1s
ZWZ0OiBjYWxjKHZhcigtLW1lZGl1bVNpemUpICsgMTZweCkiIHRhcmdldD0iX2JsYW5rIiBocmVm
PSIvaW52ZXN0aWdhdGU/JHtwYXJhbXNUb1F1ZXJ5KHBhcmFtcyl9Ij5Nb3JlLi4uPC9hPmA7Ci0g
ICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGA8ZGl2PgotICAgICAgICAgICAgICAgIDxkaXYgY2xh
c3M9ImRvdCAke2ZhaWx1cmUuZmFpbHVyZX0gc21hbGwiPgotICAgICAgICAgICAgICAgICAgICA8
ZGl2IGNsYXNzPSJ0aW55IHRleHQiIHN0eWxlPSJmb250LXdlaWdodDogbm9ybWFsO21hcmdpbi10
b3A6IDBweCI+JHtFeHBlY3RhdGlvbnMuc3ltYm9sTWFwW2ZhaWx1cmUuZmFpbHVyZV19PC9kaXY+
Ci0gICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgPGEgY2xhc3M9InRleHQg
YmxvY2siIHN0eWxlPSJ3aWR0aDogY2FsYygxMDAlIC0gdmFyKC0tbWVkaXVtU2l6ZSkgLSAxNnB4
KTsgb3ZlcmZsb3c6IGhpZGRlbjsgd2hpdGUtc3BhY2U6IG5vd3JhcDsgdGV4dC1vdmVyZmxvdzog
ZWxsaXBzaXM7IiBocmVmPSIvP3N1aXRlPSR7ZmFpbHVyZXMuc3VpdGV9JnRlc3Q9JHtmYWlsdXJl
LnRlc3R9Ij4ke2ZhaWx1cmUudGVzdH08L2E+Ci0gICAgICAgICAgICA8L2Rpdj5gOwotICAgIH0p
LmpvaW4oJycpfTwvZGl2PmA7Ci19Ci0KLWZ1bmN0aW9uIHJlc3VsdHNGb3JEYXRhKGRhdGEsIHdp
bGxGaWx0ZXJFeHBlY3RlZCA9IGZhbHNlKQotewotICAgIGNvbnN0IHJlc3VsdCA9IFtdOwotICAg
IGxldCB0ZXN0c1JhbiA9IDE7Ci0gICAgbGV0IHRvdGFsVGVzdHMgPSAxOwotICAgIGlmIChkYXRh
LnN0YXRzICYmIGRhdGEuc3RhdHMudGVzdHNfcnVuKSB7Ci0gICAgICAgIHRlc3RzUmFuID0gZGF0
YS5zdGF0cy50ZXN0c19ydW47Ci0gICAgICAgIHRvdGFsVGVzdHMgPSBkYXRhLnN0YXRzLnRlc3Rz
X3J1biArIChkYXRhLnN0YXRzLnRlc3RzX3NraXBwZWQgPyBkYXRhLnN0YXRzLnRlc3RzX3NraXBw
ZWQgOiAwKTsKLSAgICB9Ci0gICAgbGV0IGRvdHNEaXNwbGF5ZWQgPSAwOwotICAgIHJlc3VsdC5w
dXNoKGA8ZGl2PlJhbiAke3Rlc3RzUmFuLnRvTG9jYWxlU3RyaW5nKCl9IG9mICR7dG90YWxUZXN0
cy50b0xvY2FsZVN0cmluZygpfSB0ZXN0c2ApOwotICAgIGlmIChkYXRhLmFjdHVhbCkgewotICAg
ICAgICBjb25zdCB0eXBlID0gRXhwZWN0YXRpb25zLnR5cGVGb3JJZChkYXRhLmFjdHVhbCk7Ci0g
ICAgICAgICsrZG90c0Rpc3BsYXllZDsKLSAgICAgICAgcmVzdWx0LnB1c2goYEFjdHVhbDogJHtk
YXRhLmFjdHVhbH0KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCAke3R5cGV9IHNtYWxsIj4K
LSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aW55IHRleHQiIHN0eWxlPSJmb250LXdlaWdo
dDogbm9ybWFsO21hcmdpbi10b3A6IDBweCI+JHtFeHBlY3RhdGlvbnMuc3ltYm9sTWFwW3R5cGVd
fTwvZGl2PgotICAgICAgICAgICAgPC9kaXY+YCk7Ci0gICAgfQotICAgIGlmIChkYXRhLmV4cGVj
dGVkKSB7Ci0gICAgICAgIGNvbnN0IHR5cGUgPSBFeHBlY3RhdGlvbnMudHlwZUZvcklkKGRhdGEu
ZXhwZWN0ZWQpOwotICAgICAgICArK2RvdHNEaXNwbGF5ZWQ7Ci0gICAgICAgIHJlc3VsdC5wdXNo
KGBFeHBlY3RlZDogJHtkYXRhLmV4cGVjdGVkfQotICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90
ICR7dHlwZX0gc21hbGwiPgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRpbnkgdGV4dCIg
c3R5bGU9ImZvbnQtd2VpZ2h0OiBub3JtYWw7bWFyZ2luLXRvcDogMHB4Ij4ke0V4cGVjdGF0aW9u
cy5zeW1ib2xNYXBbdHlwZV19PC9kaXY+Ci0gICAgICAgICAgICA8L2Rpdj5gKTsKLSAgICB9Ci0g
ICAgaWYgKGRhdGEuc3RhdHMgJiYgZGF0YS5zdGF0cy50ZXN0c19ydW4pIHsKLSAgICAgICAgY29u
c3Qgc3VjY2VlZGVkID0gZGF0YS5zdGF0cy50ZXN0c19ydW4gLSBkYXRhLnN0YXRzW2B0ZXN0cyR7
d2lsbEZpbHRlckV4cGVjdGVkID8gJ191bmV4cGVjdGVkXycgOiAnXyd9ZmFpbGVkYF07Ci0gICAg
ICAgIGlmIChzdWNjZWVkZWQpIHsKLSAgICAgICAgICAgICsrZG90c0Rpc3BsYXllZDsKLSAgICAg
ICAgICAgIHJlc3VsdC5wdXNoKGA8ZGl2IGNsYXNzPSJkb3Qgc3VjY2VzcyBzbWFsbCI+Ci0gICAg
ICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRpbnkgdGV4dCIgc3R5bGU9ImZvbnQtd2VpZ2h0
OiBub3JtYWw7bWFyZ2luLXRvcDogMHB4Ij4ke0V4cGVjdGF0aW9ucy5zeW1ib2xNYXAuc3VjY2Vz
c308L2Rpdj4KLSAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAke2RhdGEu
c3RhcnRfdGltZSA/IHN1Y2NlZWRlZC50b0xvY2FsZVN0cmluZygpIDogcGVyY2VudGFnZShzdWNj
ZWVkZWQsIGRhdGEuc3RhdHMudGVzdHNfcnVuKX0gcGFzc2VkYCk7Ci0gICAgICAgIH0KLSAgICB9
Ci0gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBFeHBlY3RhdGlvbnMuZmFpbHVyZVR5cGVzLmxlbmd0
aDsgaSsrKSB7Ci0gICAgICAgIGlmICghZGF0YS5zdGF0cykKLSAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICBjb25zdCB0eXBlID0gRXhwZWN0YXRpb25zLmZhaWx1cmVUeXBlc1tpXTsKLSAg
ICAgICAgbGV0IHZhbHVlID0gZGF0YS5zdGF0c1tgdGVzdHMke3dpbGxGaWx0ZXJFeHBlY3RlZCA/
ICdfdW5leHBlY3RlZF8nIDogJ18nfSR7dHlwZX1gXTsKLSAgICAgICAgaWYgKGkgPCBFeHBlY3Rh
dGlvbnMuZmFpbHVyZVR5cGVzLmxlbmd0aCAtIDEpCi0gICAgICAgICAgICB2YWx1ZSAtPSBkYXRh
LnN0YXRzW2B0ZXN0cyR7d2lsbEZpbHRlckV4cGVjdGVkID8gJ191bmV4cGVjdGVkXycgOiAnXyd9
JHtFeHBlY3RhdGlvbnMuZmFpbHVyZVR5cGVzW2kgKyAxXX1gXTsKLSAgICAgICAgaWYgKCF2YWx1
ZSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICArK2RvdHNEaXNwbGF5ZWQ7Ci0gICAg
ICAgIHJlc3VsdC5wdXNoKGA8ZGl2IGNsYXNzPSJkb3QgJHt0eXBlfSBzbWFsbCI+Ci0gICAgICAg
ICAgICAgICAgPGRpdiBjbGFzcz0idGlueSB0ZXh0IiBzdHlsZT0iZm9udC13ZWlnaHQ6IG5vcm1h
bDttYXJnaW4tdG9wOiAwcHgiPiR7RXhwZWN0YXRpb25zLnN5bWJvbE1hcFt0eXBlXX08L2Rpdj4K
LSAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgJHtkYXRhLnN0YXJ0X3RpbWUgPyB2YWx1
ZS50b0xvY2FsZVN0cmluZygpIDogcGVyY2VudGFnZSh2YWx1ZSwgZGF0YS5zdGF0cy50ZXN0c19y
dW4pfSAke3R5cGV9YCk7Ci0gICAgfQotICAgIHJlc3VsdC5wdXNoKCc8L2Rpdj4nKTsKLSAgICBy
ZXN1bHQucHVzaChwcmlvcml0aXplZEZhaWx1cmVzKGRhdGEuZmFpbHVyZXMsIE1hdGgubWF4KDYg
LSBkb3RzRGlzcGxheWVkLCAxKSwgd2lsbEZpbHRlckV4cGVjdGVkKSk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLQotZnVuY3Rpb24gcmVuZGVySW52ZXN0aWdhdGVEcmF3ZXIoYXJyYXlzKQotewot
ICAgIHJldHVybiBgPGRpdiBjbGFzcz0icm93Ij4KLSAgICAgICAgICAgICR7YXJyYXlzLm1hcChh
cnJheSA9PiB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGA8ZGl2IGNsYXNzPSJjb2wtcy02IGxp
c3QiPgotICAgICAgICAgICAgICAgICAgICAgICAgJHthcnJheS5tYXAoZWxlbWVudCA9PiB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGA8ZGl2IGNsYXNzPSJpdGVtIj4ke2Vs
ZW1lbnR9PC9kaXY+YDsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0pLmpvaW4oJycpfQotICAg
ICAgICAgICAgICAgICAgICA8L2Rpdj5gOwotICAgICAgICAgICAgfSkuam9pbignPGRpdiBjbGFz
cz0iZGl2aWRlciBtb2JpbGUtY29udHJvbCI+PC9kaXY+Jyl9Ci0gICAgICAgIDwvZGl2PmAKLX0K
LQotZnVuY3Rpb24gY29udGVudEZvckFncmVnYXRlRGF0YShzdWl0ZSwgYWdyZWdhdGVEYXRhLCBk
YXRhLCB3aWxsRmlsdGVyRXhwZWN0ZWQgPSBmYWxzZSkKLXsKLSAgICBjb25zdCBtZXRhRGF0YSA9
IFsKLSAgICAgICAgYCR7ZGF0YS5sZW5ndGh9IHJlcG9ydHMgZm9yICR7YWdyZWdhdGVEYXRhLmNv
bmZpZ3VyYXRpb259YCwKLSAgICAgICAgY29tbWl0c0ZvclV1aWQoYWdyZWdhdGVEYXRhLnV1aWQp
LAotICAgIF07Ci0gICAgbGV0IGNvdW50ID0gMDsKLSAgICBkYXRhLmZvckVhY2gobm9kZSA9PiB7
Ci0gICAgICAgIGNvbnN0IG15Q291bnQgPSBjb3VudDsKLSAgICAgICAgbGV0IGRvdFR5cGUgPSAn
c3VjY2Vzcyc7Ci0gICAgICAgIGlmIChub2RlLnN0YXRzKSB7Ci0gICAgICAgICAgICBFeHBlY3Rh
dGlvbnMuZmFpbHVyZVR5cGVzLmZvckVhY2godHlwZSA9PiB7Ci0gICAgICAgICAgICAgICAgaWYg
KG5vZGUuc3RhdHNbYHRlc3RzJHt3aWxsRmlsdGVyRXhwZWN0ZWQgPyAnX3VuZXhwZWN0ZWRfJyA6
ICdfJ30ke3R5cGV9YF0gPiAwKQotICAgICAgICAgICAgICAgICAgICBkb3RUeXBlID0gdHlwZTsK
LSAgICAgICAgICAgIH0pOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbGV0IHJlc3Vs
dElkID0gRXhwZWN0YXRpb25zLnN0cmluZ1RvU3RhdGVJZChub2RlLmFjdHVhbCk7Ci0gICAgICAg
ICAgICBpZiAod2lsbEZpbHRlckV4cGVjdGVkKQotICAgICAgICAgICAgICAgIHJlc3VsdElkID0g
RXhwZWN0YXRpb25zLnN0cmluZ1RvU3RhdGVJZChFeHBlY3RhdGlvbnMudW5leHBlY3RlZFJlc3Vs
dHMobm9kZS5hY3R1YWwsIG5vZGUuZXhwZWN0ZWQpKTsKLSAgICAgICAgICAgIEV4cGVjdGF0aW9u
cy5mYWlsdXJlVHlwZXMuZm9yRWFjaCh0eXBlID0+IHsKLSAgICAgICAgICAgICAgICBpZiAoRXhw
ZWN0YXRpb25zLnN0cmluZ1RvU3RhdGVJZChFeHBlY3RhdGlvbnMuZmFpbHVyZVR5cGVNYXBbdHlw
ZV0pID49IHJlc3VsdElkKQotICAgICAgICAgICAgICAgICAgICBkb3RUeXBlID0gdHlwZTsKLSAg
ICAgICAgICAgIH0pOwotICAgICAgICB9Ci0gICAgICAgIG1ldGFEYXRhLnB1c2goYDxkaXY+Ci0g
ICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90ICR7ZG90VHlwZX0gc21hbGwiPgotICAgICAg
ICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aW55IHRleHQiIHN0eWxlPSJmb250LXdlaWdodDog
bm9ybWFsO21hcmdpbi10b3A6IDBweCI+JHtFeHBlY3RhdGlvbnMuc3ltYm9sTWFwW2RvdFR5cGVd
fTwvZGl2PgotICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgIDxhIGNsYXNz
PSJsaW5rLWJ1dHRvbiIgcmVmPSIke1JFRi5jcmVhdGVSZWYoewotICAgICAgICAgICAgICAgICAg
ICBvbkVsZW1lbnRNb3VudDogKGVsZW1lbnQpID0+IHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGVsZW1lbnQub25jbGljayA9ICgpID0+IEludmVzdGlnYXRlRHJhd2VyLnNlbGVjdChteUNvdW50
ICsgMSk7Ci0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgfSl9Ij4KLSAg
ICAgICAgICAgICAgICAgICAgJHtub2RlLmNvbmZpZ3VyYXRpb259Ci0gICAgICAgICAgICAgICAg
PC9hPgotICAgICAgICAgICAgPC9kaXY+YCk7Ci0gICAgICAgICsrY291bnQ7Ci0gICAgfSk7Ci0g
ICAgcmV0dXJuIHJlbmRlckludmVzdGlnYXRlRHJhd2VyKFttZXRhRGF0YSwgcmVzdWx0c0ZvckRh
dGEoYWdyZWdhdGVEYXRhLCB3aWxsRmlsdGVyRXhwZWN0ZWQpXSk7Ci19Ci0KLWZ1bmN0aW9uIGNv
bnRlbnRGb3JEYXRhKHN1aXRlLCBkYXRhLCB3aWxsRmlsdGVyRXhwZWN0ZWQgPSBmYWxzZSkKLXsK
LSAgICBjb25zdCBtZXRhRGF0YSA9IFsKLSAgICAgICAgZGF0YS5jb25maWd1cmF0aW9uLAotICAg
ICAgICBjb21taXRzRm9yVXVpZChkYXRhLnV1aWQpLAotICAgICAgICB0ZXN0UnVuTGluayhzdWl0
ZSwgZGF0YSksCi0gICAgICAgIGFyY2hpdmVMaW5rKHN1aXRlLCBkYXRhKSwKLSAgICAgICAgZWxh
cHNlZChkYXRhKSwKLSAgICBdOwotCi0gICAgcmV0dXJuIHJlbmRlckludmVzdGlnYXRlRHJhd2Vy
KFttZXRhRGF0YSwgcmVzdWx0c0ZvckRhdGEoZGF0YSwgd2lsbEZpbHRlckV4cGVjdGVkKV0pOwot
fQotCi1jbGFzcyBfSW52ZXN0aWdhdGVEcmF3ZXIgewotICAgIGNvbnN0cnVjdG9yKCkgewotICAg
ICAgICB0aGlzLnJlZiA9IG51bGw7Ci0gICAgICAgIHRoaXMuY29udGVudCA9IG51bGw7Ci0gICAg
ICAgIHRoaXMuY2xvc2UgPSBudWxsOwotICAgICAgICB0aGlzLnByZXZpb3VzID0gbnVsbDsKLSAg
ICAgICAgdGhpcy5uZXh0ID0gbnVsbDsKLQotICAgICAgICB0aGlzLnNlbGVjdGVkID0gMDsKLSAg
ICAgICAgdGhpcy5zdWl0ZSA9IG51bGw7Ci0gICAgICAgIHRoaXMuYWdyZWdhdGUgPSBudWxsOwot
ICAgICAgICB0aGlzLmRhdGEgPSBbXTsKLQotICAgICAgICB0aGlzLndpbGxGaWx0ZXJFeHBlY3Rl
ZCA9IGZhbHNlOwotICAgIH0KLSAgICBpc1JlbmRlcmVkKCkgewotICAgICAgICBsZXQgcmVzdWx0
ID0gdHJ1ZTsKLSAgICAgICAgWydyZWYnLCAnY29udGVudCcsICdjbG9zZScsICdwcmV2aW91cycs
ICduZXh0J10uZm9yRWFjaChlbGVtZW50ID0+IHsKLSAgICAgICAgICAgIGlmICghcmVzdWx0KQot
ICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIHJlc3VsdCA9IHRoaXNbZWxlbWVu
dF0gJiYgdGhpc1tlbGVtZW50XS5lbGVtZW50OwotICAgICAgICB9KTsKLSAgICAgICAgaWYgKCFy
ZXN1bHQpCi0gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdJbnZlc3RpZ2F0aW9uIGRyYXdlciBu
b3QgcmVuZGVyZWQnKTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0gICAgdG9TdHJp
bmcoKSB7Ci0gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzOwotICAgICAgICB0aGlzLnJlZiA9IFJF
Ri5jcmVhdGVSZWYoKTsKLSAgICAgICAgdGhpcy5jb250ZW50ID0gUkVGLmNyZWF0ZVJlZih7Ci0g
ICAgICAgICAgICBzdGF0ZTogJycsCi0gICAgICAgICAgICBvblN0YXRlVXBkYXRlOiAoZWxlbWVu
dCwgc3RhdGUpID0+IHsKLSAgICAgICAgICAgICAgICBET00uaW5qZWN0KGVsZW1lbnQsIHN0YXRl
KTsKLSAgICAgICAgICAgIH0sCi0gICAgICAgIH0pOwotICAgICAgICB0aGlzLmNsb3NlID0gUkVG
LmNyZWF0ZVJlZih7Ci0gICAgICAgICAgICBvbkVsZW1lbnRNb3VudDogKGVsZW1lbnQpID0+IHsK
LSAgICAgICAgICAgICAgICBlbGVtZW50Lm9uY2xpY2sgPSAoKSA9PiBzZWxmLmNvbGxhcHNlKCk7
Ci0gICAgICAgICAgICB9LAotICAgICAgICB9KTsKLQotICAgICAgICB0aGlzLnByZXZpb3VzID0g
UkVGLmNyZWF0ZVJlZih7Ci0gICAgICAgICAgICBvbkVsZW1lbnRNb3VudDogKGVsZW1lbnQpID0+
IHsKLSAgICAgICAgICAgICAgICBlbGVtZW50Lm9uY2xpY2sgPSAoKSA9PiBzZWxmLnNlbGVjdChz
ZWxmLnNlbGVjdGVkIC0gMSk7Ci0gICAgICAgICAgICB9LAotICAgICAgICB9KTsKLSAgICAgICAg
dGhpcy5uZXh0ID0gUkVGLmNyZWF0ZVJlZih7Ci0gICAgICAgICAgICBvbkVsZW1lbnRNb3VudDog
KGVsZW1lbnQpID0+IHsKLSAgICAgICAgICAgICAgICBlbGVtZW50Lm9uY2xpY2sgPSAoKSA9PiBz
ZWxmLnNlbGVjdChzZWxmLnNlbGVjdGVkICsgMSk7Ci0gICAgICAgICAgICB9LAotICAgICAgICB9
KTsKLQotICAgICAgICByZXR1cm4gYDxkaXYgY2xhc3M9ImRyYXdlciBtYWluIHJpZ2h0LXNpZGVi
YXIiIHJlZj0iJHt0aGlzLnJlZn0iIHN0eWxlPSJ6LWluZGV4OiAyMCI+Ci0gICAgICAgICAgICAg
ICAgPGRpdiBjbGFzcz0iY29udGVudCB1bnNlbGVjdGFibGUiIHN0eWxlPSJkaXNwbGF5OiBmbGV4
OyBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47IGZsZXgtZGlyZWN0aW9uOiByb3c7IHBh
ZGRpbmc6IDEwcHg7Ij4KLSAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT0id2lkdGg6IDE1
MHB4OyB0ZXh0LWFsaWduOiBsZWZ0Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNz
PSJidXR0b24iIHN0eWxlPSJjdXJzb3I6IHBvaW50ZXIiIHJlZj0iJHt0aGlzLnByZXZpb3VzfSI+
4peAIFByZXZpb3VzPC9hPgotICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAg
ICAgICAgICAgPGRpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJidXR0b24i
IHN0eWxlPSJjdXJzb3I6IHBvaW50ZXIiIHJlZj0iJHt0aGlzLmNsb3NlfSI+Q2xvc2U8L2E+Ci0g
ICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxl
PSJ3aWR0aDogMTUwcHg7IHRleHQtYWxpZ246IHJpZ2h0Ij4KLSAgICAgICAgICAgICAgICAgICAg
ICAgIDxhIGNsYXNzPSJidXR0b24iIHN0eWxlPSJjdXJzb3I6IHBvaW50ZXIiIHJlZj0iJHt0aGlz
Lm5leHR9Ij5OZXh0IOKWtjwvYT4KLSAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAg
ICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudCIgcmVm
PSIke3RoaXMuY29udGVudH0iPgotICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAg
PC9kaXY+YDsKLSAgICB9Ci0gICAgZXhwYW5kKHN1aXRlLCBhZ3JlZ2F0ZURhdGEsIGFsbERhdGEp
IHsKLSAgICAgICAgaWYgKCF0aGlzLmlzUmVuZGVyZWQoKSkKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgdGhpcy5yZWYuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCdkaXNwbGF5Jyk7Ci0gICAg
ICAgIHRoaXMuc3VpdGUgPSBzdWl0ZTsKLSAgICAgICAgdGhpcy5hZ3JlZ2F0ZSA9IGFncmVnYXRl
RGF0YTsKLSAgICAgICAgdGhpcy5kYXRhID0gYWxsRGF0YTsKLSAgICAgICAgdGhpcy5kaXNwYXRj
aCgpOwotICAgICAgICB0aGlzLnNlbGVjdCgwKTsKLSAgICB9Ci0gICAgZGlzcGF0Y2goKSB7Ci0g
ICAgICAgIGlmICghdGhpcy5kYXRhLmxlbmd0aCkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmRhdGEubGVuZ3RoOyBpKyspIHsKLSAgICAgICAg
ICAgIGlmICghdGhpcy5kYXRhW2ldLnN0YXRzKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgfQotCi0gICAgICAgIHRoaXMuZGF0YS5mb3JFYWNoKGRhdHVtID0+IHsKLSAgICAgICAg
ICAgIGRhdHVtLmZhaWx1cmVzID0gbnVsbDsKLSAgICAgICAgfSk7Ci0gICAgICAgIHRoaXMuYWdy
ZWdhdGUuZmFpbHVyZXMgPSBudWxsOwotCi0gICAgICAgIGNvbnN0IGJyYW5jaCA9IHF1ZXJ5VG9Q
YXJhbXMoZG9jdW1lbnQuVVJMLnNwbGl0KCc/JylbMV0pLmJyYW5jaDsKLSAgICAgICAgY29uc3Qg
cGFyYW1zID0gewotICAgICAgICAgICAgdW5leHBlY3RlZDogW3RoaXMud2lsbEZpbHRlckV4cGVj
dGVkXSwKLSAgICAgICAgICAgIHV1aWQ6IFt0aGlzLmFncmVnYXRlLnV1aWRdLAotICAgICAgICB9
Ci0gICAgICAgIGlmICh0aGlzLmFncmVnYXRlLnN0YXJ0X3RpbWUpIHsKLSAgICAgICAgICAgIHBh
cmFtcy5iZWZvcmVfdGltZSA9IFt0aGlzLmFncmVnYXRlLnN0YXJ0X3RpbWVdOwotICAgICAgICAg
ICAgcGFyYW1zLmFmdGVyX3RpbWUgPSBbdGhpcy5hZ3JlZ2F0ZS5zdGFydF90aW1lXTsKLSAgICAg
ICAgfQotICAgICAgICBpZiAoYnJhbmNoKQotICAgICAgICAgICAgcGFyYW1zLmJyYW5jaCA9IFti
cmFuY2hdOwotCi0gICAgICAgIEZhaWx1cmVzLmZyb21FbmRwb2ludCgKLSAgICAgICAgICAgIHRo
aXMuc3VpdGUsCi0gICAgICAgICAgICB0aGlzLmFncmVnYXRlLmNvbmZpZ3VyYXRpb24sCi0gICAg
ICAgICAgICBwYXJhbXMsCi0gICAgICAgICkudGhlbihmYWlsdXJlcyA9PiB7Ci0gICAgICAgICAg
ICB0aGlzLmFncmVnYXRlLmZhaWx1cmVzID0gRmFpbHVyZXMuY29tYmluZSguLi5mYWlsdXJlcyk7
Ci0gICAgICAgICAgICB0aGlzLmRhdGEuZm9yRWFjaChkYXR1bSA9PiB7Ci0gICAgICAgICAgICAg
ICAgZGF0dW0uZmFpbHVyZXMgPSBuZXcgRmFpbHVyZXModGhpcy5zdWl0ZSwgZGF0dW0uY29uZmln
dXJhdGlvbik7Ci0gICAgICAgICAgICAgICAgZmFpbHVyZXMuZm9yRWFjaChmYWlsdXJlID0+IHsK
LSAgICAgICAgICAgICAgICAgICAgaWYgKGRhdHVtLmNvbmZpZ3VyYXRpb24uY29tcGFyZShmYWls
dXJlLmNvbmZpZ3VyYXRpb24pID09PSAwKQotICAgICAgICAgICAgICAgICAgICAgICAgZGF0dW0u
ZmFpbHVyZXMgPSBGYWlsdXJlcy5jb21iaW5lKGRhdHVtLmZhaWx1cmVzLCBmYWlsdXJlKTsKLSAg
ICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgdGhpcy5zZWxl
Y3QodGhpcy5zZWxlY3RlZCk7Ci0gICAgICAgIH0pOwotICAgIH0KLSAgICBjb2xsYXBzZSgpIHsK
LSAgICAgICAgaWYgKCF0aGlzLmlzUmVuZGVyZWQoKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgdGhpcy5yZWYuZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdkaXNwbGF5Jyk7Ci0KLSAg
ICAgICAgdGhpcy5hZ3JlZ2F0ZSA9IG51bGw7Ci0gICAgICAgIHRoaXMuZGF0YSA9IFtdOwotICAg
ICAgICB0aGlzLnNlbGVjdCgwKTsKLSAgICB9Ci0gICAgc2VsZWN0KGluZGV4KSB7Ci0gICAgICAg
IGlmICghdGhpcy5yZWYpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgbGV0IGNhbmRp
ZGF0ZXMgPSB0aGlzLmRhdGEubGVuZ3RoOwotICAgICAgICBpZiAodGhpcy5hZ3JlZ2F0ZSAmJiB0
aGlzLmRhdGEubGVuZ3RoID4gMSkKLSAgICAgICAgICAgIGNhbmRpZGF0ZXMgKz0gMTsKLSAgICAg
ICAgaWYgKCFjYW5kaWRhdGVzKSB7Ci0gICAgICAgICAgICB0aGlzLnJlZi5lbGVtZW50LmNsYXNz
TGlzdC5yZW1vdmUoJ2Rpc3BsYXknKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQot
Ci0gICAgICAgIC8vIEZvcmNlIHNlbGVjdGlvbiBpbiBib3VuZHMKLSAgICAgICAgaWYgKGluZGV4
IDwgMCkKLSAgICAgICAgICAgIGluZGV4ID0gMDsKLSAgICAgICAgaWYgKGluZGV4ID49IGNhbmRp
ZGF0ZXMpCi0gICAgICAgICAgICBpbmRleCA9IGNhbmRpZGF0ZXMgLSAxOwotICAgICAgICB0aGlz
LnNlbGVjdGVkID0gaW5kZXg7Ci0KLSAgICAgICAgLy8gRGlzcGxheSBuZXh0L3ByZXZpb3VzIGJ1
dHRvbnMKLSAgICAgICAgaWYgKGluZGV4KQotICAgICAgICAgICAgdGhpcy5wcmV2aW91cy5lbGVt
ZW50LnN0eWxlLmRpc3BsYXkgPSBudWxsOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0aGlz
LnByZXZpb3VzLmVsZW1lbnQuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKLSAgICAgICAgaWYgKGlu
ZGV4ID09PSBjYW5kaWRhdGVzIC0gMSkKLSAgICAgICAgICAgIHRoaXMubmV4dC5lbGVtZW50LnN0
eWxlLmRpc3BsYXkgPSAnbm9uZSc7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRoaXMubmV4
dC5lbGVtZW50LnN0eWxlLmRpc3BsYXkgPSBudWxsOwotCi0gICAgICAgIGlmICh0aGlzLmFncmVn
YXRlICYmIHRoaXMuZGF0YS5sZW5ndGggPiAxICYmICF0aGlzLnNlbGVjdGVkKQotICAgICAgICAg
ICAgdGhpcy5jb250ZW50LnNldFN0YXRlKGNvbnRlbnRGb3JBZ3JlZ2F0ZURhdGEodGhpcy5zdWl0
ZSwgdGhpcy5hZ3JlZ2F0ZSwgdGhpcy5kYXRhLCB0aGlzLndpbGxGaWx0ZXJFeHBlY3RlZCkpOwot
ICAgICAgICBlbHNlCi0gICAgICAgICAgICB0aGlzLmNvbnRlbnQuc2V0U3RhdGUoY29udGVudEZv
ckRhdGEoCi0gICAgICAgICAgICAgICAgdGhpcy5zdWl0ZSwKLSAgICAgICAgICAgICAgICB0aGlz
LmRhdGFbdGhpcy5hZ3JlZ2F0ZSAmJiB0aGlzLmRhdGEubGVuZ3RoID4gMSA/IHRoaXMuc2VsZWN0
ZWQgLSAxIDogdGhpcy5zZWxlY3RlZF0sCi0gICAgICAgICAgICAgICAgdGhpcy53aWxsRmlsdGVy
RXhwZWN0ZWQsCi0gICAgICAgICAgICApKTsKLSAgICB9Ci19Ci0KLWNvbnN0IEludmVzdGlnYXRl
RHJhd2VyID0gbmV3IF9JbnZlc3RpZ2F0ZURyYXdlcigpOwotCi1leHBvcnQge0ludmVzdGlnYXRl
RHJhd2VyfTsKSW5kZXg6IFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvc3RhdGlj
L2pzL3NlYXJjaC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJw
eS92aWV3L3N0YXRpYy9qcy9zZWFyY2guanMJKHJldmlzaW9uIDI2NTUzMSkKKysrIFRvb2xzL3Jl
c3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvc3RhdGljL2pzL3NlYXJjaC5qcwkobm9uZXhpc3Rl
bnQpCkBAIC0xLDI2MiArMCwwIEBACi0vLyBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0vLyBh
cmUgbWV0OgotLy8gMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0vLyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiCi0vLyBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLS8vIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLS8vIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotLy8gQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotLy8gQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLS8vIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotLy8gSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLS8vIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0vLyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0vLyBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLWltcG9ydCB7RE9NLCBSRUZ9IGZyb20gJy9saWJyYXJ5
L2pzL1JlZi5qcyc7Ci1pbXBvcnQge1F1ZXJ5TW9kaWZpZXIsIHBhcmFtc1RvUXVlcnl9IGZyb20g
Jy9hc3NldHMvanMvY29tbW9uLmpzJzsKLQotY29uc3QgTElNSVQgPSAxMDsKLQotZnVuY3Rpb24g
U2VhcmNoQmFyKGNhbGxiYWNrLCBzdWl0ZXMpIHsKLSAgICBsZXQgbW91c2VDb3VudCA9IDA7Ci0g
ICAgbGV0IGNsb3NlU2VhcmNoID0gKCkgPT4ge307Ci0gICAgbGV0IGluRmxpZ2h0ID0gMDsKLQot
ICAgIGNvbnN0IGNhbmRpZGF0ZXNSZWYgPSBSRUYuY3JlYXRlUmVmKHsKLSAgICAgICAgc3RhdGU6
IHtjYW5kaWRhdGVzOiB7fSwgc2VsZWN0ZWQ6IG51bGwsIGRpc3BsYXllZDogZmFsc2V9LAotICAg
ICAgICBvblN0YXRlVXBkYXRlOiAoZWxlbWVudCwgc3RhdGVEaWZmLCBzdGF0ZSkgPT4gewotICAg
ICAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPSBzdGF0ZURpZmYuc2VsZWN0ZWQgPyBzdGF0ZURpZmYu
c2VsZWN0ZWQgOiBzdGF0ZSA/IHN0YXRlLnNlbGVjdGVkIDogbnVsbDsKLSAgICAgICAgICAgIGNv
bnN0IGNhbmRpZGF0ZXMgPSBzdGF0ZURpZmYuY2FuZGlkYXRlcyA/IHN0YXRlRGlmZi5jYW5kaWRh
dGVzIDogc3RhdGUgPyBzdGF0ZS5jYW5kaWRhdGVzIDogW107Ci0gICAgICAgICAgICBpZiAoc3Rh
dGVEaWZmLmNhbmRpZGF0ZXMpIHsKLSAgICAgICAgICAgICAgICBsZXQgY291bnQgPSAwOwotICAg
ICAgICAgICAgICAgIERPTS5pbmplY3QoZWxlbWVudCwgT2JqZWN0LmtleXMoY2FuZGlkYXRlcyku
bWFwKGtleSA9PiB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBjYW5kaWRhdGVzW2tleV0u
bWFwKHRlc3QgPT4gewotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2FuZGlkYXRlUmVm
ID0gUkVGLmNyZWF0ZVJlZih7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25FbGVtZW50
TW91bnQ6IGVsZW1lbnQgPT4gewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVt
ZW50Lm9ubW91c2VvdmVyID0gKCkgPT4gewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKyttb3VzZUNvdW50OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y2FuZGlkYXRlc1JlZi5zZXRTdGF0ZSh7c2VsZWN0ZWQ6IHtzdWl0ZToga2V5LCB0ZXN0OiB0ZXN0
fX0pOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBlbGVtZW50Lm9ubW91c2VvdXQgPSAoKSA9PiB7bW91c2VDb3VudCA9
IG1vdXNlQ291bnQgPiAwID8gbW91c2VDb3VudCAtIDEgOiAwfTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZWxlbWVudC5vbmNsaWNrID0gKCkgPT4gewotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soe3N1aXRlOiBrZXksIHRlc3Q6IHRlc3R9KTsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKCk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICsrY291bnQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYDxsaSByZWY9IiR7Y2Fu
ZGlkYXRlUmVmfSIgc3R5bGU9ImN1cnNvcjogcG9pbnRlcjsiPiR7dGVzdH0gKCR7a2V5fSk8L2xp
PmA7Ci0gICAgICAgICAgICAgICAgICAgIH0pLmpvaW4oJycpOwotICAgICAgICAgICAgICAgIH0p
LmpvaW4oJycpICsgYDxkaXYgY2xhc3M9InNwaW5uZXIgdGlueSIgJHtpbkZsaWdodCA+IDAgPyAn
JyA6ICdzdHlsZT0iZGlzcGxheTogbm9uZTsiJ30+PC9kaXY+YCk7Ci0KLSAgICAgICAgICAgICAg
ICBpZiAoY291bnQpCi0gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuc3R5bGUuZGlzcGxheSA9
ICdibG9jayc7Ci0gICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGVs
ZW1lbnQuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKLSAgICAgICAgICAgICAgICAgICAgbW91c2VD
b3VudCA9IDA7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRlRGlmZi5zZWxlY3RlZCA9IG51bGw7
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgbGV0IGluZGV4
ID0gMDsKLSAgICAgICAgICAgIE9iamVjdC5rZXlzKGNhbmRpZGF0ZXMpLmZvckVhY2goa2V5ID0+
IHsKLSAgICAgICAgICAgICAgICBjYW5kaWRhdGVzW2tleV0uZm9yRWFjaCh0ZXN0ID0+IHsKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkICYmIGtleSA9PT0gc2VsZWN0ZWQuc3VpdGUg
JiYgdGVzdCA9PT0gc2VsZWN0ZWQudGVzdCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1l
bnQuY2hpbGRyZW5baW5kZXhdLmNsYXNzTGlzdC5hZGQoJ3NlbGVjdGVkJyk7Ci0gICAgICAgICAg
ICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuY2hpbGRyZW5b
aW5kZXhdLmNsYXNzTGlzdC5yZW1vdmUoJ3NlbGVjdGVkJyk7Ci0gICAgICAgICAgICAgICAgICAg
ICsraW5kZXg7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAg
ICAgIGVsZW1lbnQuY2hpbGRyZW5baW5kZXhdLnN0eWxlLmRpc3BsYXkgPSBpbkZsaWdodCA+IDAg
PyAnYmxvY2snIDogJ25vbmUnOwotICAgICAgICB9Ci0gICAgfSk7Ci0KLSAgICBsZXQgY2FuZGlk
YXRlcyA9IHt9OwotICAgIGxldCBjdXJyZW50RGlzcGF0Y2ggPSBEYXRlLm5vdygpOwotCi0gICAg
Y29uc3QgbmV4dFNlbGVjdGVkID0gKG1vdmVVcCA9IGZhbHNlKSA9PiB7Ci0gICAgICAgIGNvbnN0
IGZvckluZGV4SW4gPSBtb3ZlVXAgPyAobGlzdCwgY2FsbGJhY2spID0+IHsKLSAgICAgICAgICAg
IGZvciAobGV0IGluZGV4ID0gbGlzdC5sZW5ndGggLSAxOyBpbmRleCA+PSAwOyAtLWluZGV4KSB7
Ci0gICAgICAgICAgICAgICAgaWYgKCFjYWxsYmFjayhpbmRleCkpCi0gICAgICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiB0cnVl
OwotICAgICAgICB9IDogKGxpc3QsIGNhbGxiYWNrKSA9PiB7Ci0gICAgICAgICAgICBmb3IgKGxl
dCBpbmRleCA9IDA7IGluZGV4IDwgbGlzdC5sZW5ndGg7ICsraW5kZXgpIHsKLSAgICAgICAgICAg
ICAgICBpZiAoIWNhbGxiYWNrKGluZGV4KSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0K
LSAgICAgICAgbGV0IGRpZEZpbmQgPSBmYWxzZTsKLSAgICAgICAgbGV0IGJvdW5kcnkgPSBudWxs
OwotCi0gICAgICAgIGNvbnN0IHN1aXRlcyA9IE9iamVjdC5rZXlzKGNhbmRpZGF0ZXMpOwotICAg
ICAgICBmb3JJbmRleEluKHN1aXRlcywgc3VpdGVJbmRleCA9PiB7Ci0gICAgICAgICAgICBjb25z
dCB0ZXN0cyA9IGNhbmRpZGF0ZXNbc3VpdGVzW3N1aXRlSW5kZXhdXTsKLSAgICAgICAgICAgIHJl
dHVybiBmb3JJbmRleEluKHRlc3RzLCB0ZXN0SW5kZXggPT4gewotICAgICAgICAgICAgICAgIGlm
ICghYm91bmRyeSkKLSAgICAgICAgICAgICAgICAgICAgYm91bmRyeSA9IHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHN1aXRlOiBzdWl0ZXNbc3VpdGVJbmRleF0sCi0gICAgICAgICAgICAgICAg
ICAgICAgICB0ZXN0OiB0ZXN0c1t0ZXN0SW5kZXhdLAotICAgICAgICAgICAgICAgICAgICB9Owot
ICAgICAgICAgICAgICAgIGlmICghY2FuZGlkYXRlc1JlZi5zdGF0ZS5zZWxlY3RlZCkKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIGlmIChkaWRGaW5k
KSB7Ci0gICAgICAgICAgICAgICAgICAgIGNhbmRpZGF0ZXNSZWYuc2V0U3RhdGUoewotICAgICAg
ICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQ6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdWl0ZTogc3VpdGVzW3N1aXRlSW5kZXhdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRlc3Q6IHRlc3RzW3Rlc3RJbmRleF0sCi0gICAgICAgICAgICAgICAgICAgICAgICB9LAotICAg
ICAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoY2FuZGlkYXRlc1JlZi5zdGF0
ZS5zZWxlY3RlZC5zdWl0ZSA9PSBzdWl0ZXNbc3VpdGVJbmRleF0gJiYgY2FuZGlkYXRlc1JlZi5z
dGF0ZS5zZWxlY3RlZC50ZXN0ID09IHRlc3RzW3Rlc3RJbmRleF0pCi0gICAgICAgICAgICAgICAg
ICAgIGRpZEZpbmQgPSB0cnVlOwotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAg
ICAgICAgfSk7Ci0gICAgICAgIH0pOwotICAgICAgICBpZiAoIWRpZEZpbmQpCi0gICAgICAgICAg
ICBjYW5kaWRhdGVzUmVmLnNldFN0YXRlKHtzZWxlY3RlZDogYm91bmRyeX0pOwotICAgIH07Ci0K
LSAgICBjb25zdCBpbnB1dFJlZiA9IFJFRi5jcmVhdGVSZWYoewotICAgICAgICBvbkVsZW1lbnRN
b3VudDogZWxlbWVudCA9PiB7Ci0gICAgICAgICAgICBjbG9zZVNlYXJjaCA9ICgpID0+IHsKLSAg
ICAgICAgICAgICAgICBjdXJyZW50RGlzcGF0Y2ggPSBEYXRlLm5vdygpOwotICAgICAgICAgICAg
ICAgIGVsZW1lbnQudmFsdWUgPSAnJzsKLSAgICAgICAgICAgICAgICBjYW5kaWRhdGVzID0ge307
Ci0gICAgICAgICAgICAgICAgY2FuZGlkYXRlc1JlZi5zZXRTdGF0ZSh7Y2FuZGlkYXRlczoge30s
IHNlbGVjdGVkOiBudWxsfSk7Ci0gICAgICAgICAgICAgICAgbW91c2VDb3VudCA9IDA7Ci0gICAg
ICAgICAgICAgICAgZWxlbWVudC5ibHVyKCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
IGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXMnLCAoKSA9PiB7Y2FuZGlkYXRlc1JlZi5z
ZXRTdGF0ZSh7Y2FuZGlkYXRlczogY2FuZGlkYXRlc30pO30pOwotICAgICAgICAgICAgZWxlbWVu
dC5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgKCkgPT4gewotICAgICAgICAgICAgICAgIGlmICgh
bW91c2VDb3VudCkKLSAgICAgICAgICAgICAgICAgICAgY2FuZGlkYXRlc1JlZi5zZXRTdGF0ZSh7
Y2FuZGlkYXRlczoge319KTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgZWxlbWVudC5h
ZGRFdmVudExpc3RlbmVyKCdrZXl1cCcsIGV2ZW50ID0+IHsKLSAgICAgICAgICAgICAgICBpZiAo
ZXZlbnQua2V5Q29kZSA9PSAweDI4IC8qIERPTV9WS19ET1dOICovIHx8IGV2ZW50LmtleUNvZGUg
PT0gMHgyNiAvKiBET01fVktfVVAgKi8pCi0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLQot
ICAgICAgICAgICAgICAgIGNvbnN0IGlucHV0VmFsdWUgPSBlbGVtZW50LnZhbHVlLnRyaW1TdGFy
dCgpLnRyaW1FbmQoKTsKLSAgICAgICAgICAgICAgICBpZiAoIWlucHV0VmFsdWUpCi0gICAgICAg
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICBsZXQgbXlEaXNwYXRjaCA9IERh
dGUubm93KCk7Ci0gICAgICAgICAgICAgICAgY2FuZGlkYXRlcyA9IHt9OwotICAgICAgICAgICAg
ICAgIHN1aXRlcy5mb3JFYWNoKHN1aXRlID0+IHsKLSAgICAgICAgICAgICAgICAgICAgaW5GbGln
aHQgKz0gMTsKLSAgICAgICAgICAgICAgICAgICAgZmV0Y2goYGFwaS8ke3N1aXRlfS90ZXN0cz9s
aW1pdD0ke0xJTUlUfSZ0ZXN0PSR7aW5wdXRWYWx1ZX1gKS50aGVuKHJlc3BvbnNlID0+IHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGluRmxpZ2h0IC09IDE7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBpZiAobXlEaXNwYXRjaCA8IGN1cnJlbnREaXNwYXRjaCkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNhbmRpZGF0ZXNSZWYuc2V0U3RhdGUoe30pOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICAgICAgICAgIGN1cnJlbnREaXNwYXRjaCA9IE1hdGgubWF4KGN1cnJlbnREaXNwYXRj
aCwgbXlEaXNwYXRjaCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLmpzb24o
KS50aGVuKGpzb24gPT4gewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbmRpZGF0ZXNb
c3VpdGVdID0ganNvbjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoanNvbi5sZW5n
dGgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbmRpZGF0ZXNSZWYuc2V0U3Rh
dGUoe2NhbmRpZGF0ZXM6IGNhbmRpZGF0ZXN9KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbmRpZGF0ZXNSZWYuc2V0
U3RhdGUoe30pOwotICAgICAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAg
ICAgIH0pLmNhdGNoKGVycm9yID0+IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRo
ZSBsb2FkIGZhaWxzLCBsb2cgdGhlIGVycm9yIGFuZCBjb250aW51ZQotICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc29sZS5lcnJvcihKU09OLnN0cmluZ2lmeShlcnJvciwgbnVsbCwgNCkpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgY2FuZGlkYXRlc1JlZi5zZXRTdGF0ZSh7fSk7Ci0gICAg
ICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgfSk7
Ci0gICAgICAgICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBldmVudCA9
PiB7Ci0gICAgICAgICAgICAgICAgaWYgKGV2ZW50LmtleUNvZGUgPT0gMHgyOCAvKiBET01fVktf
RE9XTiAqLykgewotICAgICAgICAgICAgICAgICAgICBuZXh0U2VsZWN0ZWQoZmFsc2UpOwotCi0g
ICAgICAgICAgICAgICAgfSBlbHNlIGlmIChldmVudC5rZXlDb2RlID09IDB4MjYgLyogRE9NX1ZL
X1VQICovKSB7Ci0gICAgICAgICAgICAgICAgICAgIG5leHRTZWxlY3RlZCh0cnVlKTsKLQotICAg
ICAgICAgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5Q29kZSA9PSAweDBEIC8qIFZLX1JFVFVS
TiAqLykgewotICAgICAgICAgICAgICAgICAgICBpZiAoY2FuZGlkYXRlc1JlZi5zdGF0ZS5zZWxl
Y3RlZCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKGNhbmRpZGF0ZXNSZWYuc3Rh
dGUuc2VsZWN0ZWQpOwotICAgICAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGxldCBwYWlycyA9IFtdOwotICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0
LmtleXMoY2FuZGlkYXRlcykuZm9yRWFjaChzdWl0ZSA9PiB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2FuZGlkYXRlc1tzdWl0ZV0uZm9yRWFjaCh0ZXN0ID0+IHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcGFpcnMucHVzaCh7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdWl0ZTogc3VpdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0ZXN0OiB0ZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IH0pOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwYWlycy5sZW5ndGgpCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgICAgICAgICAgY2Fs
bGJhY2soLi4ucGFpcnMpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
ICAgIGNsb3NlU2VhcmNoKCk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChldmVudC5rZXlD
b2RlID09IDB4MUIgLyogRE9NX1ZLX0VTQ0FQRSAqLykKLSAgICAgICAgICAgICAgICAgICAgY2Fu
ZGlkYXRlc1JlZi5zZXRTdGF0ZSh7Y2FuZGlkYXRlczoge319KTsKLSAgICAgICAgICAgIH0pOwot
ICAgICAgICAgICAgZWxlbWVudC5vbnBhc3RlID0gKGV2ZW50KSA9PiB7Ci0gICAgICAgICAgICAg
ICAgbGV0IGlnbm9yaW5nID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgbGV0IHRlc3RzID0gbmV3
IFNldCgpOwotICAgICAgICAgICAgICAgIGV2ZW50LmNsaXBib2FyZERhdGEuZ2V0RGF0YSgndGV4
dCcpLnNwbGl0KC9ccysvZykuZm9yRWFjaChzdHIgPT4gewotICAgICAgICAgICAgICAgICAgICBp
ZiAoc3RyID09PSAnWycpCi0gICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmluZyA9IHRydWU7
Ci0gICAgICAgICAgICAgICAgICAgIGlmIChpZ25vcmluZykgewotICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKHN0ciA9PT0gJ10nKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9y
aW5nID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgaWYgKHN0cikKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHRlc3RzLmFkZChzdHIpOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAg
ICAgICAgIHRlc3RzID0gWy4uLnRlc3RzXTsKLSAgICAgICAgICAgICAgICBpZiAodGVzdHMubGVu
Z3RoIDw9IDEpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgICAg
IGxldCBwYWlycyA9IFtdOwotICAgICAgICAgICAgICAgIGxldCBvdXRzdGFuZGluZyA9IHN1aXRl
cy5sZW5ndGg7Ci0gICAgICAgICAgICAgICAgY29uc3QgcXVlcnkgPSBwYXJhbXNUb1F1ZXJ5KHt0
ZXN0OiB0ZXN0c30pOwotICAgICAgICAgICAgICAgIHN1aXRlcy5mb3JFYWNoKHN1aXRlID0+IHsK
LSAgICAgICAgICAgICAgICAgICAgZmV0Y2goYGFwaS8ke3N1aXRlfS90ZXN0cz8ke3F1ZXJ5fWAp
LnRoZW4ocmVzcG9uc2UgPT4gewotICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UuanNv
bigpLnRoZW4oanNvbiA9PiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAganNvbi5mb3JF
YWNoKHRlc3QgPT4gewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWlycy5wdXNo
KHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1aXRlOiBzdWl0ZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Q6IHRlc3QsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0p
OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHN0YW5kaW5nIC09IDE7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKG91dHN0YW5kaW5nIDw9IDApIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soLi4ucGFpcnMpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjbG9zZVNlYXJjaCgpOwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgICAgICB9
KS5jYXRjaChlcnJvciA9PiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgbG9h
ZCBmYWlscywgbG9nIHRoZSBlcnJvciBhbmQgY29udGludWUKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnNvbGUuZXJyb3IoSlNPTi5zdHJpbmdpZnkoZXJyb3IsIG51bGwsIDQpKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGNhbmRpZGF0ZXNSZWYuc2V0U3RhdGUoe30pOwotICAgICAgICAg
ICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQotICAgIH0pOwotCi0gICAgcmV0dXJuIGA8ZGl2IGNsYXNzPSJpbnB1dCI+Ci0gICAgICAg
ICAgICA8aW5wdXQgdHlwZT0idGV4dCIgcmVmPSIke2lucHV0UmVmfSIgYXV0b2NvbXBsZXRlPSJv
ZmYiIGF1dG9jYXBpdGFsaXplPSJub25lIiByZXF1aXJlZC8+Ci0gICAgICAgICAgICA8bGFiZWw+
U2VhcmNoIHRlc3Q8L2xhYmVsPgotICAgICAgICA8L2Rpdj4KLSAgICAgICAgPHVsIGNsYXNzPSJz
ZWFyY2gtY2FuZGlkYXRlcyIgcmVmPSIke2NhbmRpZGF0ZXNSZWZ9IiBzdHlsZT0iZGlzcGxheTog
bm9uZTsiPjwvdWw+YDsKLX0KLQotZXhwb3J0IHtTZWFyY2hCYXJ9OwpJbmRleDogVG9vbHMvcmVz
dWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9zdGF0aWMvanMvdGltZWxpbmUuanMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9zdGF0aWMvanMvdGltZWxp
bmUuanMJKHJldmlzaW9uIDI2NTUzMSkKKysrIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5
L3ZpZXcvc3RhdGljL2pzL3RpbWVsaW5lLmpzCShub25leGlzdGVudCkKQEAgLTEsOTM1ICswLDAg
QEAKLS8vIENvcHlyaWdodCAoQykgMjAxOSwgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLS8vIGFyZSBtZXQ6Ci0vLyAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotLy8gMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLS8v
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIKLS8vIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotLy8g
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotLy8gUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0vLyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0vLyBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotLy8gU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0vLyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotLy8gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLS8vIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLS8vIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLQotaW1wb3J0IHtBcmNoaXZlUm91dGVyfSBmcm9tICcvYXNzZXRzL2pzL2FyY2hp
dmVSb3V0ZXIuanMnOwotaW1wb3J0IHtDb21taXRCYW5rfSBmcm9tICcvYXNzZXRzL2pzL2NvbW1p
dC5qcyc7Ci1pbXBvcnQge0NvbmZpZ3VyYXRpb259IGZyb20gJy9hc3NldHMvanMvY29uZmlndXJh
dGlvbi5qcyc7Ci1pbXBvcnQge2RlZXBDb21wYXJlLCBFcnJvckRpc3BsYXksIGVzY2FwZUhUTUws
IHBhcmFtc1RvUXVlcnksIHF1ZXJ5VG9QYXJhbXN9IGZyb20gJy9hc3NldHMvanMvY29tbW9uLmpz
JzsKLWltcG9ydCB7RXhwZWN0YXRpb25zfSBmcm9tICcvYXNzZXRzL2pzL2V4cGVjdGF0aW9ucy5q
cyc7Ci1pbXBvcnQge0ludmVzdGlnYXRlRHJhd2VyfSBmcm9tICcvYXNzZXRzL2pzL2ludmVzdGln
YXRlLmpzJzsKLWltcG9ydCB7VG9vbFRpcH0gZnJvbSAnL2Fzc2V0cy9qcy90b29sdGlwLmpzJzsK
LWltcG9ydCB7VGltZWxpbmV9IGZyb20gJy9saWJyYXJ5L2pzL2NvbXBvbmVudHMvVGltZWxpbmVD
b21wb25lbnRzLmpzJzsKLWltcG9ydCB7RE9NLCBFdmVudFN0cmVhbSwgUkVGLCBGUH0gZnJvbSAn
L2xpYnJhcnkvanMvUmVmLmpzJzsKLQotCi1jb25zdCBERUZBVUxUX0xJTUlUID0gMTAwOwotCi1s
ZXQgd2lsbEZpbHRlckV4cGVjdGVkID0gZmFsc2U7Ci1sZXQgc2hvd1Rlc3RUaW1lcyA9IGZhbHNl
OwotCi1mdW5jdGlvbiBtaW5pbXVtVXVpZEZvclJlc3VsdHMocmVzdWx0cywgbGltaXQpIHsKLSAg
ICBjb25zdCBub3cgPSBNYXRoLmZsb29yKERhdGUubm93KCkgLyAxMCk7Ci0gICAgbGV0IG1pbkRp
c3BsYXllZFV1aWQgPSBub3c7Ci0gICAgbGV0IG1heExpbWl0ZWRVdWlkID0gMDsKLQotICAgIE9i
amVjdC5rZXlzKHJlc3VsdHMpLmZvckVhY2goKGtleSkgPT4gewotICAgICAgICByZXN1bHRzW2tl
eV0uZm9yRWFjaChwYWlyID0+IHsKLSAgICAgICAgICAgIGlmICghcGFpci5yZXN1bHRzLmxlbmd0
aCkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBpZiAobGltaXQgIT09IDEg
JiYgbGltaXQgPT09IHBhaXIucmVzdWx0cy5sZW5ndGgpCi0gICAgICAgICAgICAgICAgbWF4TGlt
aXRlZFV1aWQgPSBNYXRoLm1heChwYWlyLnJlc3VsdHNbMF0udXVpZCwgbWF4TGltaXRlZFV1aWQp
OwotICAgICAgICAgICAgZWxzZSBpZiAobGltaXQgPT09IDEpCi0gICAgICAgICAgICAgICAgbWlu
RGlzcGxheWVkVXVpZCA9IE1hdGgubWluKHBhaXIucmVzdWx0c1twYWlyLnJlc3VsdHMubGVuZ3Ro
IC0gMV0udXVpZCwgbWluRGlzcGxheWVkVXVpZCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgbWluRGlzcGxheWVkVXVpZCA9IE1hdGgubWluKHBhaXIucmVzdWx0c1swXS51dWlk
LCBtaW5EaXNwbGF5ZWRVdWlkKTsKLSAgICAgICAgfSk7Ci0gICAgfSk7Ci0KLSAgICBpZiAobWlu
RGlzcGxheWVkVXVpZCA9PT0gbm93KQotICAgICAgICByZXR1cm4gbWF4TGltaXRlZFV1aWQ7Ci0g
ICAgcmV0dXJuIE1hdGgubWF4KG1pbkRpc3BsYXllZFV1aWQsIG1heExpbWl0ZWRVdWlkKTsKLX0K
LQotZnVuY3Rpb24gY29tbWl0c0ZvclJlc3VsdHMocmVzdWx0cywgbGltaXQsIGFsbENvbW1pdHMg
PSB0cnVlKSB7Ci0gICAgY29uc3QgbWluRGlzcGxheWVkVXVpZCA9IG1pbmltdW1VdWlkRm9yUmVz
dWx0cyhsaW1pdCk7Ci0gICAgbGV0IGNvbW1pdHMgPSBbXTsKLSAgICBsZXQgcmVwb3NpdG9yaWVz
ID0gbmV3IFNldCgpOwotICAgIGxldCBjdXJyZW50Q29tbWl0SW5kZXggPSBDb21taXRCYW5rLmNv
bW1pdHMubGVuZ3RoIC0gMTsKLSAgICBPYmplY3Qua2V5cyhyZXN1bHRzKS5mb3JFYWNoKChrZXkp
ID0+IHsKLSAgICAgICAgcmVzdWx0c1trZXldLmZvckVhY2gocGFpciA9PiB7Ci0gICAgICAgICAg
ICBwYWlyLnJlc3VsdHMuZm9yRWFjaChyZXN1bHQgPT4gewotICAgICAgICAgICAgICAgIGlmIChy
ZXN1bHQudXVpZCA8IG1pbkRpc3BsYXllZFV1aWQpCi0gICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgICAgICAgICBsZXQgY2FuZGlkYXRlQ29tbWl0cyA9IFtdOwotCi0gICAgICAg
ICAgICAgICAgaWYgKCFhbGxDb21taXRzKQotICAgICAgICAgICAgICAgICAgICBjdXJyZW50Q29t
bWl0SW5kZXggPSBDb21taXRCYW5rLmNvbW1pdHMubGVuZ3RoIC0gMTsKLSAgICAgICAgICAgICAg
ICB3aGlsZSAoY3VycmVudENvbW1pdEluZGV4ID49IDApIHsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKENvbW1pdEJhbmsuY29tbWl0c1tjdXJyZW50Q29tbWl0SW5kZXhdLnV1aWQgPCByZXN1bHQu
dXVpZCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAg
ICBpZiAoYWxsQ29tbWl0cyB8fCBDb21taXRCYW5rLmNvbW1pdHNbY3VycmVudENvbW1pdEluZGV4
XS51dWlkID09PSByZXN1bHQudXVpZCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhbmRpZGF0
ZUNvbW1pdHMucHVzaChDb21taXRCYW5rLmNvbW1pdHNbY3VycmVudENvbW1pdEluZGV4XSk7Ci0g
ICAgICAgICAgICAgICAgICAgIC0tY3VycmVudENvbW1pdEluZGV4OwotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICBpZiAoY2FuZGlkYXRlQ29tbWl0cy5sZW5ndGggPT09IDAgfHwg
Y2FuZGlkYXRlQ29tbWl0c1tjYW5kaWRhdGVDb21taXRzLmxlbmd0aCAtIDFdLnV1aWQgIT09IHJl
c3VsdC51dWlkKQotICAgICAgICAgICAgICAgICAgICBjYW5kaWRhdGVDb21taXRzLnB1c2goewot
ICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICc/JywKLSAgICAgICAgICAgICAgICAgICAgICAg
IHV1aWQ6IHJlc3VsdC51dWlkLAotICAgICAgICAgICAgICAgICAgICB9KTsKLQotICAgICAgICAg
ICAgICAgIGxldCBpbmRleCA9IDA7Ci0gICAgICAgICAgICAgICAgY2FuZGlkYXRlQ29tbWl0cy5m
b3JFYWNoKGNvbW1pdCA9PiB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChjb21taXQucmVwb3Np
dG9yeV9pZCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlcG9zaXRvcmllcy5hZGQoY29tbWl0
LnJlcG9zaXRvcnlfaWQpOwotICAgICAgICAgICAgICAgICAgICB3aGlsZSAoaW5kZXggPCBjb21t
aXRzLmxlbmd0aCkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbW1pdC51dWlkID09
PSBjb21taXRzW2luZGV4XS51dWlkKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb21taXQudXVpZCA+IGNvbW1pdHNbaW5k
ZXhdLnV1aWQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21taXRzLnNwbGljZShp
bmRleCwgMCwgY29tbWl0KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICArK2luZGV4
OwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGNvbW1pdHMucHVz
aChjb21taXQpOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgfSk7Ci0gICAgICAg
IH0pOwotICAgIH0pOwotICAgIGlmIChjdXJyZW50Q29tbWl0SW5kZXggPj0gMCAmJiBjb21taXRz
Lmxlbmd0aCkgewotICAgICAgICBsZXQgdHJhaWxpbmdSZXBvc2l0b3JpZXMgPSBuZXcgU2V0KHJl
cG9zaXRvcmllcyk7Ci0gICAgICAgIHRyYWlsaW5nUmVwb3NpdG9yaWVzLmRlbGV0ZShjb21taXRz
W2NvbW1pdHMubGVuZ3RoIC0gMV0ucmVwb3NpdG9yeV9pZCk7Ci0gICAgICAgIHdoaWxlIChjdXJy
ZW50Q29tbWl0SW5kZXggPj0gMCAmJiB0cmFpbGluZ1JlcG9zaXRvcmllcy5zaXplKSB7Ci0gICAg
ICAgICAgICBjb25zdCBjb21taXQgPSBDb21taXRCYW5rLmNvbW1pdHNbY3VycmVudENvbW1pdElu
ZGV4XTsKLSAgICAgICAgICAgIGlmICh0cmFpbGluZ1JlcG9zaXRvcmllcy5oYXMoY29tbWl0LnJl
cG9zaXRvcnlfaWQpKSB7Ci0gICAgICAgICAgICAgICAgY29tbWl0cy5wdXNoKGNvbW1pdCk7Ci0g
ICAgICAgICAgICAgICAgdHJhaWxpbmdSZXBvc2l0b3JpZXMuZGVsZXRlKGNvbW1pdC5yZXBvc2l0
b3J5X2lkKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC0tY3VycmVudENvbW1pdEluZGV4
OwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmVwb3NpdG9yaWVzID0gWy4uLnJlcG9zaXRvcmll
c107Ci0gICAgcmVwb3NpdG9yaWVzLnNvcnQoKTsKLSAgICByZXR1cm4gY29tbWl0czsKLX0KLQot
ZnVuY3Rpb24gc2NhbGVGb3JDb21taXRzKGNvbW1pdHMpIHsKLSAgICBsZXQgc2NhbGUgPSBbXTsK
LSAgICBmb3IgKGxldCBpID0gY29tbWl0cy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkgewotICAg
ICAgICBjb25zdCByZXBvc2l0b3J5X2lkID0gY29tbWl0c1tpXS5yZXBvc2l0b3J5X2lkID8gY29t
bWl0c1tpXS5yZXBvc2l0b3J5X2lkIDogJz8nOwotICAgICAgICBzY2FsZS51bnNoaWZ0KHt9KTsK
LSAgICAgICAgc2NhbGVbMF1bcmVwb3NpdG9yeV9pZF0gPSBjb21taXRzW2ldOwotICAgICAgICBp
ZiAoc2NhbGUubGVuZ3RoIDwgMikKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBPYmpl
Y3Qua2V5cyhzY2FsZVsxXSkuZm9yRWFjaCgoa2V5KSA9PiB7Ci0gICAgICAgICAgICBpZiAoa2V5
ID09PSByZXBvc2l0b3J5X2lkIHx8IGtleSA9PT0gJz8nIHx8IGtleSA9PT0gJ3V1aWQnKQotICAg
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIHNjYWxlWzBdW2tleV0gPSBzY2FsZVsx
XVtrZXldOwotICAgICAgICB9KTsKLSAgICAgICAgc2NhbGVbMF0udXVpZCA9IE1hdGgubWF4KC4u
Lk9iamVjdC5rZXlzKHNjYWxlWzBdKS5tYXAoKGtleSkgPT4gewotICAgICAgICAgICAgcmV0dXJu
IHNjYWxlWzBdW2tleV0udXVpZDsKLSAgICAgICAgfSkpOwotICAgIH0KLSAgICByZXR1cm4gc2Nh
bGU7Ci19Ci0KLWZ1bmN0aW9uIHJlcG9zaXRvcmllc0ZvckNvbW1pdHMoY29tbWl0cykgewotICAg
IGxldCByZXBvc2l0b3JpZXMgPSBuZXcgU2V0KCk7Ci0gICAgY29tbWl0cy5mb3JFYWNoKChjb21t
aXQpID0+IHsKLSAgICAgICAgaWYgKGNvbW1pdC5yZXBvc2l0b3J5X2lkKQotICAgICAgICAgICAg
cmVwb3NpdG9yaWVzLmFkZChjb21taXQucmVwb3NpdG9yeV9pZCk7Ci0gICAgfSk7Ci0gICAgcmVw
b3NpdG9yaWVzID0gWy4uLnJlcG9zaXRvcmllc107Ci0gICAgaWYgKCFyZXBvc2l0b3JpZXMubGVu
Z3RoKQotICAgICAgICByZXBvc2l0b3JpZXMgPSBbJz8nXTsKLSAgICByZXBvc2l0b3JpZXMuc29y
dCgpOwotICAgIHJldHVybiByZXBvc2l0b3JpZXM7Ci19Ci0KLWZ1bmN0aW9uIHhBeGlzRnJvbVNj
YWxlKHNjYWxlLCByZXBvc2l0b3J5LCB1cGRhdGVzQXJyYXksIGlzVG9wPWZhbHNlLCB2aWV3cG9y
dD1udWxsKQotewotICAgIGZ1bmN0aW9uIHNjYWxlRm9yUmVwb3NpdG9yeShzY2FsZSkgewotICAg
ICAgICByZXR1cm4gc2NhbGUubWFwKG5vZGUgPT4gewotICAgICAgICAgICAgbGV0IGNvbW1pdCA9
IG5vZGVbcmVwb3NpdG9yeV07Ci0gICAgICAgICAgICBpZiAoIWNvbW1pdCkKLSAgICAgICAgICAg
ICAgICBjb21taXQgPSBub2RlWyc/J107Ci0gICAgICAgICAgICBpZiAoIWNvbW1pdCkKLSAgICAg
ICAgICAgICAgICByZXR1cm4ge2lkOiAnJywgdXVpZDogbnVsbH07Ci0gICAgICAgICAgICByZXR1
cm4gY29tbWl0OwotICAgICAgICB9KTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBvblNjYWxlQ2xp
Y2sobm9kZSkgewotICAgICAgICBpZiAoIW5vZGUubGFiZWwuaWQpCi0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIGxldCBwYXJhbXMgPSB7Ci0gICAgICAgICAgICBicmFuY2g6IG5vZGUubGFi
ZWwuYnJhbmNoID8gW25vZGUubGFiZWwuYnJhbmNoXSA6IHF1ZXJ5VG9QYXJhbXMoZG9jdW1lbnQu
VVJMLnNwbGl0KCc/JylbMV0pLmJyYW5jaCwKLSAgICAgICAgICAgIHV1aWQ6IFtub2RlLmxhYmVs
LnV1aWRdLAotICAgICAgICB9Ci0gICAgICAgIGlmICghcGFyYW1zLmJyYW5jaCkKLSAgICAgICAg
ICAgIGRlbGV0ZSBwYXJhbXMuYnJhbmNoOwotICAgICAgICBjb25zdCBxdWVyeSA9IHBhcmFtc1Rv
UXVlcnkocGFyYW1zKTsKLSAgICAgICAgd2luZG93Lm9wZW4oYC9jb21taXQ/JHtxdWVyeX1gLCAn
X2JsYW5rJyk7Ci0gICAgfQotCi0gICAgcmV0dXJuIFRpbWVsaW5lLkNhbnZhc1hBeGlzQ29tcG9u
ZW50KHNjYWxlRm9yUmVwb3NpdG9yeShzY2FsZSksIHsKLSAgICAgICAgaXNUb3A6IGlzVG9wLAot
ICAgICAgICBoZWlnaHQ6IDEzMCwKLSAgICAgICAgb25TY2FsZUNsaWNrOiBvblNjYWxlQ2xpY2ss
Ci0gICAgICAgIG9uU2NhbGVFbnRlcjogKG5vZGUsIGV2ZW50LCBjYW52YXMpID0+IHsKLSAgICAg
ICAgICAgIGNvbnN0IHNjcm9sbERlbHRhID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9s
bFRvcCB8fCBkb2N1bWVudC5ib2R5LnNjcm9sbFRvcDsKLSAgICAgICAgICAgIFRvb2xUaXAuc2V0
KAotICAgICAgICAgICAgICAgIGA8ZGl2IGNsYXNzPSJjb250ZW50Ij4KLSAgICAgICAgICAgICAg
ICAgICAgVGltZTogJHtuZXcgRGF0ZShub2RlLmxhYmVsLnRpbWVzdGFtcCAqIDEwMDApLnRvTG9j
YWxlU3RyaW5nKCl9PGJyPgotICAgICAgICAgICAgICAgICAgICBDb21taXR0ZXI6ICR7bm9kZS5s
YWJlbC5jb21taXR0ZXJ9Ci0gICAgICAgICAgICAgICAgICAgICR7bm9kZS5sYWJlbC5tZXNzYWdl
ID8gYDxicj48ZGl2PiR7ZXNjYXBlSFRNTChub2RlLmxhYmVsLm1lc3NhZ2Uuc3BsaXQoJ1xuJylb
MF0pfTwvZGl2PmAgOiAnJ30KLSAgICAgICAgICAgICAgICA8L2Rpdj5gLAotICAgICAgICAgICAg
ICAgIG5vZGUudGlwUG9pbnRzLm1hcCgocG9pbnQpID0+IHsKLSAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHt4OiBjYW52YXMueCArIHBvaW50LngsIHk6IGNhbnZhcy55ICsgc2Nyb2xsRGVsdGEg
KyBwb2ludC55fTsKLSAgICAgICAgICAgICAgICB9KSwKLSAgICAgICAgICAgICAgICAoZXZlbnQp
ID0+IHtyZXR1cm4gb25TY2FsZUNsaWNrKG5vZGUpO30sCi0gICAgICAgICAgICAgICAgdmlld3Bv
cnQsCi0gICAgICAgICAgICApOwotICAgICAgICB9LAotICAgICAgICBvblNjYWxlTGVhdmU6IChl
dmVudCwgY2FudmFzKSA9PiB7Ci0gICAgICAgICAgICBjb25zdCBzY3JvbGxEZWx0YSA9IGRvY3Vt
ZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3AgfHwgZG9jdW1lbnQuYm9keS5zY3JvbGxUb3A7
Ci0gICAgICAgICAgICBpZiAoIVRvb2xUaXAuaXNJbih7eDogZXZlbnQueCwgeTogZXZlbnQueSAt
IHNjcm9sbERlbHRhfSkpCi0gICAgICAgICAgICAgICAgVG9vbFRpcC51bnNldCgpOwotICAgICAg
ICB9LAotICAgICAgICAvLyBQZXIgdGhlIGJpcnRoZGF5IHBhcmFkb3gsIDEwJSBjaGFuZ2Ugb2Yg
Y29sbGlzaW9uIHdpdGggNy43IG1pbGxpb24gY29tbWl0cyB3aXRoIDEyIGNoYXJhY3RlciBjb21t
aXRzCi0gICAgICAgIGdldExhYmVsRnVuYzogKGNvbW1pdCkgPT4ge3JldHVybiBjb21taXQgPyBj
b21taXQuaWQuc3Vic3RyaW5nKDAsMTIpIDogJz8nO30sCi0gICAgICAgIGdldFNjYWxlRnVuYzog
KGNvbW1pdCkgPT4gY29tbWl0LnV1aWQsCi0gICAgICAgIGV4cG9ydGVyOiAodXBkYXRlRnVuY3Rp
b24pID0+IHsKLSAgICAgICAgICAgIHVwZGF0ZXNBcnJheS5wdXNoKChzY2FsZSkgPT4ge3VwZGF0
ZUZ1bmN0aW9uKHNjYWxlRm9yUmVwb3NpdG9yeShzY2FsZSkpO30pOwotICAgICAgICB9LAotICAg
IH0pOwotfQotCi1jb25zdCB0ZXN0c1JlZ2V4ID0gL3Rlc3RzXyhbYS16XSkrLzsKLWNvbnN0IHdv
cnN0UmVnZXggPSAvd29yc3RfKFthLXpdKSsvOwotCi1mdW5jdGlvbiBpblBsYWNlQ29tYmluZShv
dXQsIG9iaikKLXsKLSAgICBpZiAoIW9iaikKLSAgICAgICAgcmV0dXJuIG91dDsKLQotICAgIGlm
ICghb3V0KSB7Ci0gICAgICAgIG91dCA9IHt9OwotICAgICAgICBPYmplY3Qua2V5cyhvYmopLmZv
ckVhY2goa2V5ID0+IHsKLSAgICAgICAgICAgIGlmIChrZXlbMF0gPT09ICdfJykKLSAgICAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBpZiAob2JqW2tleV0gaW5zdGFuY2VvZiBPYmpl
Y3QpCi0gICAgICAgICAgICAgICAgb3V0W2tleV0gPSBpblBsYWNlQ29tYmluZShvdXRba2V5XSwg
b2JqW2tleV0pOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG91dFtrZXldID0g
b2JqW2tleV07Ci0gICAgICAgIH0pOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIE9iamVjdC5rZXlz
KG91dCkuZm9yRWFjaChrZXkgPT4gewotICAgICAgICAgICAgaWYgKGtleVswXSA9PT0gJ18nKQot
ICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgaWYgKG91dFtrZXldIGluc3Rh
bmNlb2YgT2JqZWN0KSB7Ci0gICAgICAgICAgICAgICAgb3V0W2tleV0gPSBpblBsYWNlQ29tYmlu
ZShvdXRba2V5XSwgb2JqW2tleV0pOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgLy8gU2V0IG9mIHNwZWNpYWwgY2FzZSBrZXlzIHdoaWNoIG5l
ZWQgdG8gYmUgYWRkZWQgdG9nZXRoZXIKLSAgICAgICAgICAgIGlmIChrZXkubWF0Y2god29yc3RS
ZWdleCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgaWYgKGtleS5tYXRj
aCh0ZXN0c1JlZ2V4KSkgewotICAgICAgICAgICAgICAgIGNvbnN0IHdvcnN0S2V5ID0gYHdvcnN0
XyR7a2V5fWA7Ci0gICAgICAgICAgICAgICAgb3V0W3dvcnN0S2V5XSA9IE1hdGgubWF4KAotICAg
ICAgICAgICAgICAgICAgICBvdXRbd29yc3RLZXldID8gb3V0W3dvcnN0S2V5XSA6IG91dFtrZXld
LAotICAgICAgICAgICAgICAgICAgICBvYmpbd29yc3RLZXldID8gb2JqW3dvcnN0S2V5XSA6IG9i
altrZXldLAotICAgICAgICAgICAgICAgICk7Ci0gICAgICAgICAgICAgICAgb3V0W2tleV0gKz0g
b2JqW2tleV07Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICAvLyBTb21lIHNwZWNpYWwgY29tYmluYXRpb24gbG9naWMKLSAgICAgICAgICAgIGlm
IChrZXkgPT09ICd0aW1lJykgewotICAgICAgICAgICAgICAgIG91dFtrZXldID0gTWF0aC5tYXgo
Ci0gICAgICAgICAgICAgICAgICAgIG91dFtrZXldID8gb3V0W2tleV0gOiAwLAotICAgICAgICAg
ICAgICAgICAgICBvYmpba2V5XSA/IG9ialtrZXldIDogMCwKLSAgICAgICAgICAgICAgICApOwot
ICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8g
SWYgdGhlIGtleSBleGlzdHMsIGJ1dCBkb2Vzbid0IG1hdGNoLCBkZWxldGUgaXQKLSAgICAgICAg
ICAgIGlmICghKGtleSBpbiBvYmopIHx8IG91dFtrZXldICE9PSBvYmpba2V5XSkgewotICAgICAg
ICAgICAgICAgIGRlbGV0ZSBvdXRba2V5XTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0pOwotICAgICAgICBPYmplY3Qua2V5cyhvYmopLmZvckVhY2go
a2V5ID0+IHsKLSAgICAgICAgICAgIGlmICgha2V5Lm1hdGNoKHRlc3RzUmVnZXgpKQotICAgICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIGNvbnN0IHdvcnN0S2V5ID0gYHdvcnN0XyR7
a2V5fWA7Ci0gICAgICAgICAgICBpZiAoIShrZXkgaW4gb3V0KSkgewotICAgICAgICAgICAgICAg
IG91dFtrZXldID0gb2JqW2tleV07Ci0gICAgICAgICAgICAgICAgb3V0W3dvcnN0S2V5XSA9IG9i
altrZXldOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgb3V0W3dvcnN0S2V5XSA9IE1hdGgu
bWF4KG91dFt3b3JzdEtleV0sIG9ialt3b3JzdEtleV0gPyBvYmpbd29yc3RLZXldIDogb2JqW2tl
eV0pOwotICAgICAgICB9KTsKLSAgICB9Ci0gICAgcmV0dXJuIG91dDsKLX0KLQotZnVuY3Rpb24g
c3RhdHNGb3JTaW5nbGVSZXN1bHQocmVzdWx0KSB7Ci0gICAgY29uc3QgYWN0dWFsSWQgPSBFeHBl
Y3RhdGlvbnMuc3RyaW5nVG9TdGF0ZUlkKHJlc3VsdC5hY3R1YWwpOwotICAgIGNvbnN0IHVuZXhw
ZWN0ZWRJZCA9IEV4cGVjdGF0aW9ucy5zdHJpbmdUb1N0YXRlSWQoRXhwZWN0YXRpb25zLnVuZXhw
ZWN0ZWRSZXN1bHRzKHJlc3VsdC5hY3R1YWwsIHJlc3VsdC5leHBlY3RlZCkpOwotICAgIGxldCBz
dGF0cyA9IHsKLSAgICAgICAgdGVzdHNfcnVuOiAxLAotICAgICAgICB0ZXN0c19za2lwcGVkOiAw
LAotICAgIH0KLSAgICBFeHBlY3RhdGlvbnMuZmFpbHVyZVR5cGVzLmZvckVhY2godHlwZSA9PiB7
Ci0gICAgICAgIGNvbnN0IGlkRm9yVHlwZSA9IEV4cGVjdGF0aW9ucy5zdHJpbmdUb1N0YXRlSWQo
RXhwZWN0YXRpb25zLmZhaWx1cmVUeXBlTWFwW3R5cGVdKTsKLSAgICAgICAgc3RhdHNbYHRlc3Rz
XyR7dHlwZX1gXSA9IGFjdHVhbElkID4gaWRGb3JUeXBlICA/IDAgOiAxOwotICAgICAgICBzdGF0
c1tgdGVzdHNfdW5leHBlY3RlZF8ke3R5cGV9YF0gPSB1bmV4cGVjdGVkSWQgPiBpZEZvclR5cGUg
ID8gMCA6IDE7Ci0gICAgfSk7Ci0gICAgcmV0dXJuIHN0YXRzOwotfQotCi1mdW5jdGlvbiBjb21i
aW5lUmVzdWx0cygpIHsKLSAgICBsZXQgY291bnRzID0gbmV3IEFycmF5KGFyZ3VtZW50cy5sZW5n
dGgpLmZpbGwoMCk7Ci0gICAgbGV0IGRhdGEgPSBbXTsKLQotICAgIHdoaWxlICh0cnVlKSB7Ci0g
ICAgICAgIC8vIEZpbmQgY2FuZGlkYXRlIHV1aWQKLSAgICAgICAgbGV0IHV1aWQgPSAwOwotICAg
ICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvdW50cy5sZW5ndGg7ICsraSkgewotICAgICAgICAg
ICAgbGV0IGNhbmRpZGF0ZVV1aWQgPSBudWxsOwotICAgICAgICAgICAgd2hpbGUgKGFyZ3VtZW50
c1tpXSAmJiBhcmd1bWVudHNbaV0ubGVuZ3RoID4gY291bnRzW2ldKSB7Ci0gICAgICAgICAgICAg
ICAgY2FuZGlkYXRlVXVpZCA9IGFyZ3VtZW50c1tpXVtjb3VudHNbaV1dLnV1aWQ7Ci0gICAgICAg
ICAgICAgICAgaWYgKGNhbmRpZGF0ZVV1aWQpCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICAgICsrY291bnRzW2ldOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
aWYgKGNhbmRpZGF0ZVV1aWQpCi0gICAgICAgICAgICAgICAgdXVpZCA9IE1hdGgubWF4KHV1aWQs
IGNhbmRpZGF0ZVV1aWQpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCF1dWlkKQotICAgICAg
ICAgICAgcmV0dXJuIGRhdGE7Ci0KLSAgICAgICAgLy8gQ29tYmluZSByZWxldmFudCByZXN1bHRz
Ci0gICAgICAgIGxldCBkYXRhTm9kZSA9IG51bGw7Ci0gICAgICAgIGZvciAobGV0IGkgPSAwOyBp
IDwgY291bnRzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICB3aGlsZSAoY291bnRzW2ldIDwg
YXJndW1lbnRzW2ldLmxlbmd0aCAmJiBhcmd1bWVudHNbaV1bY291bnRzW2ldXSAmJiBhcmd1bWVu
dHNbaV1bY291bnRzW2ldXS51dWlkID09PSB1dWlkKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGRh
dGFOb2RlICYmICFkYXRhTm9kZS5zdGF0cykKLSAgICAgICAgICAgICAgICAgICAgZGF0YU5vZGUu
c3RhdHMgPSBzdGF0c0ZvclNpbmdsZVJlc3VsdChkYXRhTm9kZSk7Ci0KLSAgICAgICAgICAgICAg
ICBkYXRhTm9kZSA9IGluUGxhY2VDb21iaW5lKGRhdGFOb2RlLCBhcmd1bWVudHNbaV1bY291bnRz
W2ldXSk7Ci0KLSAgICAgICAgICAgICAgICBpZiAoZGF0YU5vZGUuc3RhdHMgJiYgIWFyZ3VtZW50
c1tpXVtjb3VudHNbaV1dLnN0YXRzKQotICAgICAgICAgICAgICAgICAgICBkYXRhTm9kZS5zdGF0
cyA9IGluUGxhY2VDb21iaW5lKGRhdGFOb2RlLnN0YXRzLCBzdGF0c0ZvclNpbmdsZVJlc3VsdChh
cmd1bWVudHNbaV1bY291bnRzW2ldXSkpOwotCi0gICAgICAgICAgICAgICAgKytjb3VudHNbaV07
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGRhdGFOb2RlKQotICAgICAg
ICAgICAgZGF0YS5wdXNoKGRhdGFOb2RlKTsKLSAgICB9Ci0gICAgcmV0dXJuIGRhdGE7Ci19Ci0K
LWNsYXNzIFRpbWVsaW5lRnJvbUVuZHBvaW50IHsKLSAgICBjb25zdHJ1Y3RvcihlbmRwb2ludCwg
c3VpdGUgPSBudWxsLCB0ZXN0ID0gbnVsbCwgdmlld3BvcnQgPSBudWxsKSB7Ci0gICAgICAgIHRo
aXMuZW5kcG9pbnQgPSBlbmRwb2ludDsKLSAgICAgICAgdGhpcy5kaXNwbGF5QWxsQ29tbWl0cyA9
IHRydWU7Ci0KLSAgICAgICAgdGhpcy5jb25maWd1cmF0aW9ucyA9IENvbmZpZ3VyYXRpb24uZnJv
bVF1ZXJ5KCk7Ci0gICAgICAgIHRoaXMucmVzdWx0cyA9IHt9OwotCi0gICAgICAgIC8vIFN1aXRl
IGFuZCB0ZXN0IGNhbiBvZnRlbiBiZSBpbXBsaWVkIGJ5IHRoZSBlbmRwb2ludCwgYnV0IGRvaW5n
IHNvIGlzIG1vcmUgY29uZnVzaW5nIHRoZW4gaGVscGZ1bAotICAgICAgICB0aGlzLnN1aXRlID0g
c3VpdGU7Ci0gICAgICAgIHRoaXMudGVzdCA9IHRlc3Q7Ci0KLSAgICAgICAgdGhpcy51cGRhdGVz
ID0gW107Ci0gICAgICAgIHRoaXMueGF4aXNVcGRhdGVzID0gW107Ci0gICAgICAgIHRoaXMudGlt
ZWxpbmVVcGRhdGUgPSBudWxsOwotICAgICAgICB0aGlzLm5vdGlmeVJlcmVuZGVyID0gKCkgPT4g
e307Ci0gICAgICAgIHRoaXMucmVwb3NpdG9yaWVzID0gW107Ci0gICAgICAgIHRoaXMudmlld3Bv
cnQgPSB2aWV3cG9ydDsKLQotICAgICAgICBjb25zdCBzZWxmID0gdGhpczsKLQotICAgICAgICB0
aGlzLmxhdGVzdERpc3BhdGNoID0gRGF0ZS5ub3coKTsKLSAgICAgICAgdGhpcy5yZWYgPSBSRUYu
Y3JlYXRlUmVmKHsKLSAgICAgICAgICAgIHN0YXRlOiB7fSwKLSAgICAgICAgICAgIG9uU3RhdGVV
cGRhdGU6IChlbGVtZW50LCBzdGF0ZSkgPT4gewotICAgICAgICAgICAgICAgIGlmIChzdGF0ZS5l
cnJvcikKLSAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5pbm5lckhUTUwgPSBFcnJvckRpc3Bs
YXkoc3RhdGUpOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKHN0YXRlID4gMCkKLSAgICAgICAg
ICAgICAgICAgICAgRE9NLmluamVjdChlbGVtZW50LCB0aGlzLnJlbmRlcihzdGF0ZSkpOwotICAg
ICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5pbm5lckhUTUwg
PSB0aGlzLnBsYWNlaG9sZGVyKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0pOwotCi0gICAg
ICAgIHRoaXMuY29tbWl0X2NhbGxiYWNrID0gKCkgPT4gewotICAgICAgICAgICAgc2VsZi51cGRh
dGUoKTsKLSAgICAgICAgfTsKLSAgICAgICAgQ29tbWl0QmFuay5jYWxsYmFja3MucHVzaCh0aGlz
LmNvbW1pdF9jYWxsYmFjayk7Ci0KLSAgICAgICAgdGhpcy5yZWxvYWQoKTsKLSAgICB9Ci0gICAg
dGVhcmRvd24oKSB7Ci0gICAgICAgIENvbW1pdEJhbmsuY2FsbGJhY2tzID0gQ29tbWl0QmFuay5j
YWxsYmFja3MuZmlsdGVyKCh2YWx1ZSwgaW5kZXgsIGFycikgPT4gewotICAgICAgICAgICAgcmV0
dXJuIHRoaXMuY29tbWl0X2NhbGxiYWNrID09PSB2YWx1ZTsKLSAgICAgICAgfSk7Ci0gICAgfQot
ICAgIHVwZGF0ZSgpIHsKLSAgICAgICAgY29uc3QgcGFyYW1zID0gcXVlcnlUb1BhcmFtcyhkb2N1
bWVudC5VUkwuc3BsaXQoJz8nKVsxXSk7Ci0gICAgICAgIGNvbnN0IGNvbW1pdHMgPSBjb21taXRz
Rm9yUmVzdWx0cyh0aGlzLnJlc3VsdHMsIHBhcmFtcy5saW1pdCA/IHBhcnNlSW50KHBhcmFtcy5s
aW1pdFtwYXJhbXMubGltaXQubGVuZ3RoIC0gMV0pIDogREVGQVVMVF9MSU1JVCwgdGhpcy5hbGxD
b21taXRzKTsKLSAgICAgICAgY29uc3Qgc2NhbGUgPSBzY2FsZUZvckNvbW1pdHMoY29tbWl0cyk7
Ci0KLSAgICAgICAgY29uc3QgbmV3UmVwb3NpdG9yaWVzID0gcmVwb3NpdG9yaWVzRm9yQ29tbWl0
cyhjb21taXRzKTsKLSAgICAgICAgbGV0IGhhdmVOZXdSZXBvcyA9IHRoaXMucmVwb3NpdG9yaWVz
Lmxlbmd0aCAhPT0gbmV3UmVwb3NpdG9yaWVzLmxlbmd0aDsKLSAgICAgICAgZm9yIChsZXQgaSA9
IDA7ICFoYXZlTmV3UmVwb3MgJiYgaSA8IHRoaXMucmVwb3NpdG9yaWVzLmxlbmd0aCAmJiBpIDwg
bmV3UmVwb3NpdG9yaWVzLmxlbmd0aDsgKytpKQotICAgICAgICAgICAgaGF2ZU5ld1JlcG9zID0g
dGhpcy5yZXBvc2l0b3JpZXNbaV0gIT09IG5ld1JlcG9zaXRvcmllc1tpXTsKLSAgICAgICAgaWYg
KGhhdmVOZXdSZXBvcyAmJiB0aGlzLnRpbWVsaW5lVXBkYXRlKSB7Ci0gICAgICAgICAgICB0aGlz
LnhheGlzVXBkYXRlcyA9IFtdOwotICAgICAgICAgICAgbGV0IHRvcCA9IHRydWU7Ci0gICAgICAg
ICAgICBsZXQgY29tcG9uZW50cyA9IFtdOwotCi0gICAgICAgICAgICBuZXdSZXBvc2l0b3JpZXMu
Zm9yRWFjaChyZXBvc2l0b3J5ID0+IHsKLSAgICAgICAgICAgICAgICBjb21wb25lbnRzLnB1c2go
eEF4aXNGcm9tU2NhbGUoc2NhbGUsIHJlcG9zaXRvcnksIHRoaXMueGF4aXNVcGRhdGVzLCB0b3As
IHRoaXMudmlld3BvcnQpKTsKLSAgICAgICAgICAgICAgICB0b3AgPSBmYWxzZTsKLSAgICAgICAg
ICAgIH0pOwotCi0gICAgICAgICAgICB0aGlzLnRpbWVsaW5lVXBkYXRlKGNvbXBvbmVudHMpOwot
ICAgICAgICAgICAgdGhpcy5yZXBvc2l0b3JpZXMgPSBuZXdSZXBvc2l0b3JpZXM7Ci0gICAgICAg
IH0KLQotICAgICAgICB0aGlzLnVwZGF0ZXMuZm9yRWFjaChmdW5jID0+IHtmdW5jKHNjYWxlKTt9
KQotICAgICAgICB0aGlzLnhheGlzVXBkYXRlcy5mb3JFYWNoKGZ1bmMgPT4ge2Z1bmMoc2NhbGUp
O30pOwotICAgIH0KLSAgICByZXJlbmRlcigpIHsKLSAgICAgICAgY29uc3QgcGFyYW1zID0gcXVl
cnlUb1BhcmFtcyhkb2N1bWVudC5VUkwuc3BsaXQoJz8nKVsxXSk7Ci0gICAgICAgIHRoaXMucmVm
LnNldFN0YXRlKHBhcmFtcy5saW1pdCA/IHBhcnNlSW50KHBhcmFtcy5saW1pdFtwYXJhbXMubGlt
aXQubGVuZ3RoIC0gMV0pIDogREVGQVVMVF9MSU1JVCk7Ci0gICAgfQotICAgIHJlbG9hZCgpIHsK
LSAgICAgICAgbGV0IG15RGlzcGF0Y2ggPSBEYXRlLm5vdygpOwotICAgICAgICB0aGlzLmxhdGVz
dERpc3BhdGNoID0gTWF0aC5tYXgodGhpcy5sYXRlc3REaXNwYXRjaCwgbXlEaXNwYXRjaCk7Ci0g
ICAgICAgIHRoaXMucmVmLnNldFN0YXRlKC0xKTsKLQotICAgICAgICBjb25zdCBzZWxmID0gdGhp
czsKLSAgICAgICAgbGV0IHNoYXJlZFBhcmFtcyA9IHF1ZXJ5VG9QYXJhbXMoZG9jdW1lbnQuVVJM
LnNwbGl0KCc/JylbMV0pOwotICAgICAgICBDb25maWd1cmF0aW9uLm1lbWJlcnMoKS5mb3JFYWNo
KG1lbWJlciA9PiB7Ci0gICAgICAgICAgICBkZWxldGUgc2hhcmVkUGFyYW1zW21lbWJlcl07Ci0g
ICAgICAgIH0pOwotICAgICAgICBkZWxldGUgc2hhcmVkUGFyYW1zLnN1aXRlOwotICAgICAgICBk
ZWxldGUgc2hhcmVkUGFyYW1zLnRlc3Q7Ci0gICAgICAgIGRlbGV0ZSBzaGFyZWRQYXJhbXMucmVw
b3NpdG9yeV9pZDsKLQotICAgICAgICBsZXQgbmV3Q29uZmlncyA9IENvbmZpZ3VyYXRpb24uZnJv
bVF1ZXJ5KCk7Ci0gICAgICAgIGlmICghZGVlcENvbXBhcmUobmV3Q29uZmlncywgdGhpcy5jb25m
aWd1cmF0aW9ucykpIHsKLSAgICAgICAgICAgIHRoaXMuY29uZmlndXJhdGlvbnMgPSBuZXdDb25m
aWdzOwotICAgICAgICAgICAgdGhpcy5yZXN1bHRzID0ge307Ci0gICAgICAgICAgICB0aGlzLmNv
bmZpZ3VyYXRpb25zLmZvckVhY2goY29uZmlndXJhdGlvbiA9PiB7Ci0gICAgICAgICAgICAgICAg
dGhpcy5yZXN1bHRzW2NvbmZpZ3VyYXRpb24udG9LZXkoKV0gPSBbXTsKLSAgICAgICAgICAgIH0p
OwotICAgICAgICB9Ci0KLSAgICAgICAgdGhpcy5jb25maWd1cmF0aW9ucy5mb3JFYWNoKGNvbmZp
Z3VyYXRpb24gPT4gewotICAgICAgICAgICAgbGV0IHBhcmFtcyA9IGNvbmZpZ3VyYXRpb24udG9Q
YXJhbXMoKTsKLSAgICAgICAgICAgIGZvciAobGV0IGtleSBpbiBzaGFyZWRQYXJhbXMpCi0gICAg
ICAgICAgICAgICAgcGFyYW1zW2tleV0gPSBzaGFyZWRQYXJhbXNba2V5XTsKLSAgICAgICAgICAg
IGNvbnN0IHF1ZXJ5ID0gcGFyYW1zVG9RdWVyeShwYXJhbXMpOwotCi0gICAgICAgICAgICBmZXRj
aChxdWVyeSA/IHRoaXMuZW5kcG9pbnQgKyAnPycgKyBxdWVyeSA6IHRoaXMuZW5kcG9pbnQpLnRo
ZW4ocmVzcG9uc2UgPT4gewotICAgICAgICAgICAgICAgIHJlc3BvbnNlLmpzb24oKS50aGVuKGpz
b24gPT4gewotICAgICAgICAgICAgICAgICAgICBpZiAobXlEaXNwYXRjaCAhPT0gdGhpcy5sYXRl
c3REaXNwYXRjaCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAg
ICAgICAgICAgICBsZXQgb2xkZXN0VXVpZCA9IERhdGUubm93KCkgLyAxMDsKLSAgICAgICAgICAg
ICAgICAgICAgbGV0IG5ld2VzdFV1aWQgPSAwOwotICAgICAgICAgICAgICAgICAgICBzZWxmLnJl
c3VsdHNbY29uZmlndXJhdGlvbi50b0tleSgpXSA9IGpzb247Ci0gICAgICAgICAgICAgICAgICAg
IHNlbGYucmVzdWx0c1tjb25maWd1cmF0aW9uLnRvS2V5KCldLnNvcnQoKGEsIGIpID0+IHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGFDb25maWcgPSBuZXcgQ29uZmlndXJhdGlvbihh
LmNvbmZpZ3VyYXRpb24pOwotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYkNvbmZpZyA9
IG5ldyBDb25maWd1cmF0aW9uKGIuY29uZmlndXJhdGlvbik7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBsZXQgY29uZmlnQ29tcGFyZSA9IGFDb25maWcuY29tcGFyZShiQ29uZmlnKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChjb25maWdDb21wYXJlID09PSAwKQotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbmZpZ0NvbXBhcmUgPSBhQ29uZmlnLmNvbXBhcmVTREtzKGJDb25m
aWcpOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbmZpZ0NvbXBhcmU7Ci0gICAg
ICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgICAgICBzZWxmLnJlc3VsdHNbY29u
ZmlndXJhdGlvbi50b0tleSgpXS5mb3JFYWNoKGtleVZhbHVlID0+IHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGtleVZhbHVlLnJlc3VsdHMuZm9yRWFjaChyZXN1bHQgPT4gewotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG9sZGVzdFV1aWQgPSBNYXRoLm1pbihvbGRlc3RVdWlkLCByZXN1
bHQudXVpZCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3ZXN0VXVpZCA9IE1hdGgu
bWF4KG5ld2VzdFV1aWQsIHJlc3VsdC51dWlkKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0p
OwotICAgICAgICAgICAgICAgICAgICB9KTsKLQotICAgICAgICAgICAgICAgICAgICBpZiAob2xk
ZXN0VXVpZCA8IG5ld2VzdFV1aWQpCi0gICAgICAgICAgICAgICAgICAgICAgICBDb21taXRCYW5r
LmFkZChvbGRlc3RVdWlkLCBuZXdlc3RVdWlkKTsKLQotICAgICAgICAgICAgICAgICAgICBzZWxm
LnJlZi5zZXRTdGF0ZShwYXJhbXMubGltaXQgPyBwYXJzZUludChwYXJhbXMubGltaXRbcGFyYW1z
LmxpbWl0Lmxlbmd0aCAtIDFdKSA6IERFRkFVTFRfTElNSVQpOwotICAgICAgICAgICAgICAgIH0p
OwotICAgICAgICAgICAgfSkuY2F0Y2goZXJyb3IgPT4gewotICAgICAgICAgICAgICAgIGlmICht
eURpc3BhdGNoID09PSB0aGlzLmxhdGVzdERpc3BhdGNoKQotICAgICAgICAgICAgICAgICAgICB0
aGlzLnJlZi5zZXRTdGF0ZSh7ZXJyb3I6ICJDb25uZWN0aW9uIEVycm9yIiwgZGVzY3JpcHRpb246
IGVycm9yfSk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfSk7Ci0gICAgfQotICAgIHBsYWNl
aG9sZGVyKCkgewotICAgICAgICByZXR1cm4gYDxkaXYgY2xhc3M9ImxvYWRlciI+Ci0gICAgICAg
ICAgICAgICAgPGRpdiBjbGFzcz0ic3Bpbm5lciI+PC9kaXY+Ci0gICAgICAgICAgICA8L2Rpdj5g
OwotICAgIH0KLSAgICB0b1N0cmluZygpIHsKLSAgICAgICAgdGhpcy5yZWYgPSBSRUYuY3JlYXRl
UmVmKHsKLSAgICAgICAgICAgIHN0YXRlOiB0aGlzLnJlZi5zdGF0ZSwKLSAgICAgICAgICAgIG9u
U3RhdGVVcGRhdGU6IChlbGVtZW50LCBzdGF0ZSkgPT4gewotICAgICAgICAgICAgICAgIGlmIChz
dGF0ZS5lcnJvcikKLSAgICAgICAgICAgICAgICAgICAgRE9NLmluamVjdChlbGVtZW50LCBFcnJv
ckRpc3BsYXkoc3RhdGUpKTsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChzdGF0ZSA+IDApCi0g
ICAgICAgICAgICAgICAgICAgIERPTS5pbmplY3QoZWxlbWVudCwgdGhpcy5yZW5kZXIoc3RhdGUp
KTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIERPTS5pbmplY3Qo
ZWxlbWVudCwgdGhpcy5wbGFjZWhvbGRlcigpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSk7
Ci0KLSAgICAgICAgcmV0dXJuIGA8ZGl2IGNsYXNzPSJjb250ZW50IiByZWY9IiR7dGhpcy5yZWZ9
Ij48L2Rpdj5gOwotICAgIH0KLQotICAgIHJlbmRlcihsaW1pdCkgewotICAgICAgICBjb25zdCBi
cmFuY2ggPSBxdWVyeVRvUGFyYW1zKGRvY3VtZW50LlVSTC5zcGxpdCgnPycpWzFdKS5icmFuY2g7
Ci0gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzOwotICAgICAgICBjb25zdCBjb21taXRzID0gY29t
bWl0c0ZvclJlc3VsdHModGhpcy5yZXN1bHRzLCBsaW1pdCwgdGhpcy5hbGxDb21taXRzKTsKLSAg
ICAgICAgY29uc3Qgc2NhbGUgPSBzY2FsZUZvckNvbW1pdHMoY29tbWl0cyk7Ci0KLSAgICAgICAg
Y29uc3QgY29sb3JNYXAgPSBFeHBlY3RhdGlvbnMuY29sb3JNYXAoKTsKLSAgICAgICAgdGhpcy51
cGRhdGVzID0gW107Ci0gICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7Ci0gICAgICAgICAgICBnZXRT
Y2FsZUZ1bmM6ICh2YWx1ZSkgPT4gewotICAgICAgICAgICAgICAgIGlmICh2YWx1ZSAmJiB2YWx1
ZS51dWlkKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4ge3V1aWQ6IHZhbHVlLnV1aWR9Owot
ICAgICAgICAgICAgICAgIHJldHVybiB7fTsKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBj
b21wYXJlRnVuYzogKGEsIGIpID0+IHtyZXR1cm4gYi51dWlkIC0gYS51dWlkO30sCi0gICAgICAg
ICAgICByZW5kZXJGYWN0b3J5OiAoZHJhd0RvdCkgPT4gKGRhdGEsIGNvbnRleHQsIHgsIHkpID0+
IHsKLSAgICAgICAgICAgICAgICBpZiAoIWRhdGEpCi0gICAgICAgICAgICAgICAgICAgIHJldHVy
biBkcmF3RG90KGNvbnRleHQsIHgsIHksIHRydWUpOwotCi0gICAgICAgICAgICAgICAgbGV0IHRh
ZyA9IG51bGw7Ci0gICAgICAgICAgICAgICAgbGV0IGNvbG9yID0gY29sb3JNYXAuc3VjY2VzczsK
LSAgICAgICAgICAgICAgICBsZXQgc3ltYm9sID0gRXhwZWN0YXRpb25zLnN5bWJvbE1hcC5zdWNj
ZXNzOwotICAgICAgICAgICAgICAgIGlmIChkYXRhLnN0YXRzKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGlmIChkYXRhLnN0YXJ0X3RpbWUpCi0gICAgICAgICAgICAgICAgICAgICAgICB0YWcgPSBk
YXRhLnN0YXRzW2B0ZXN0cyR7d2lsbEZpbHRlckV4cGVjdGVkID8gJ191bmV4cGVjdGVkXycgOiAn
Xyd9ZmFpbGVkYF07Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHRhZyA9IGRhdGEuc3RhdHNbYHdvcnN0X3Rlc3RzJHt3aWxsRmlsdGVyRXhwZWN0ZWQg
PyAnX3VuZXhwZWN0ZWRfJyA6ICdfJ31mYWlsZWRgXTsKLSAgICAgICAgICAgICAgICAgICAgaWYg
KGRhdGEuc3RhdHMud29yc3RfdGVzdHNfcnVuIDw9IDEpCi0gICAgICAgICAgICAgICAgICAgICAg
ICB0YWcgPSBudWxsOwotCi0gICAgICAgICAgICAgICAgICAgIEV4cGVjdGF0aW9ucy5mYWlsdXJl
VHlwZXMuZm9yRWFjaCh0eXBlID0+IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRh
LnN0YXRzW2B0ZXN0cyR7d2lsbEZpbHRlckV4cGVjdGVkID8gJ191bmV4cGVjdGVkXycgOiAnXyd9
JHt0eXBlfWBdID4gMCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yID0gY29s
b3JNYXBbdHlwZV07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ltYm9sID0gRXhwZWN0
YXRpb25zLnN5bWJvbE1hcFt0eXBlXTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
ICAgICAgICAgbGV0IHJlc3VsdElkID0gRXhwZWN0YXRpb25zLnN0cmluZ1RvU3RhdGVJZChkYXRh
LmFjdHVhbCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh3aWxsRmlsdGVyRXhwZWN0ZWQpCi0g
ICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRJZCA9IEV4cGVjdGF0aW9ucy5zdHJpbmdUb1N0
YXRlSWQoRXhwZWN0YXRpb25zLnVuZXhwZWN0ZWRSZXN1bHRzKGRhdGEuYWN0dWFsLCBkYXRhLmV4
cGVjdGVkKSk7Ci0gICAgICAgICAgICAgICAgICAgIEV4cGVjdGF0aW9ucy5mYWlsdXJlVHlwZXMu
Zm9yRWFjaCh0eXBlID0+IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChFeHBlY3RhdGlv
bnMuc3RyaW5nVG9TdGF0ZUlkKEV4cGVjdGF0aW9ucy5mYWlsdXJlVHlwZU1hcFt0eXBlXSkgPj0g
cmVzdWx0SWQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvciA9IGNvbG9yTWFw
W3R5cGVdOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5bWJvbCA9IEV4cGVjdGF0aW9u
cy5zeW1ib2xNYXBbdHlwZV07Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBjb25zdCB0
aW1lID0gZGF0YS50aW1lID8gTWF0aC5yb3VuZChkYXRhLnRpbWUgLyAxMDAwKSA6IDA7Ci0gICAg
ICAgICAgICAgICAgaWYgKHRpbWUgJiYgc2hvd1Rlc3RUaW1lcykKLSAgICAgICAgICAgICAgICAg
ICAgdGFnID0gdGltZTsKLQotICAgICAgICAgICAgICAgIHJldHVybiBkcmF3RG90KGNvbnRleHQs
IHgsIHksIGZhbHNlLCB0YWcgPyB0YWcgOiBudWxsLCBzeW1ib2wsIGZhbHNlLCBjb2xvcik7Ci0g
ICAgICAgICAgICB9LAotICAgICAgICB9OwotCi0gICAgICAgIGZ1bmN0aW9uIG9uRG90Q2xpY2tG
YWN0b3J5KGNvbmZpZ3VyYXRpb24pIHsKLSAgICAgICAgICAgIHJldHVybiAoZGF0YSkgPT4gewot
ICAgICAgICAgICAgICAgIGxldCBhbGxEYXRhID0gW107Ci0gICAgICAgICAgICAgICAgbGV0IHBh
cnRpYWxDb25maWd1cmF0aW9uID0ge307Ci0gICAgICAgICAgICAgICAgc2VsZi5jb25maWd1cmF0
aW9ucy5mb3JFYWNoKGNvbmZpZ3VyYXRpb25LZXkgPT4gewotICAgICAgICAgICAgICAgICAgICBp
ZiAoY29uZmlndXJhdGlvbktleS5jb21wYXJlKGNvbmZpZ3VyYXRpb24pIHx8IGNvbmZpZ3VyYXRp
b25LZXkuY29tcGFyZVNES3MoY29uZmlndXJhdGlvbikpCi0gICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYucmVzdWx0c1tjb25maWd1cmF0aW9u
S2V5LnRvS2V5KCldLmZvckVhY2gocGFpciA9PiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBjb21wdXRlZENvbmZpZ3VyYXRpb24gPSBuZXcgQ29uZmlndXJhdGlvbihwYWlyLmNvbmZp
Z3VyYXRpb24pOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbXB1dGVkQ29uZmlndXJh
dGlvbi5jb21wYXJlKGNvbmZpZ3VyYXRpb24pIHx8IGNvbXB1dGVkQ29uZmlndXJhdGlvbi5jb21w
YXJlU0RLcyhjb25maWd1cmF0aW9uKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgICAgICAgICAgICAgICAgICBsZXQgZG9lc01hdGNoID0gZmFsc2U7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBwYWlyLnJlc3VsdHMuZm9yRWFjaChub2RlID0+IHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS51dWlkICE9PSBkYXRhLnV1aWQpCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkb2VzTWF0Y2ggPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxl
dCBkYXRhTm9kZSA9IHt9OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5rZXlz
KG5vZGUpLmZvckVhY2goa2V5ID0+IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZGF0YU5vZGVba2V5XSA9IG5vZGVba2V5XTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTm9kZVsnY29uZmlndXJhdGlvbidd
ID0gY29tcHV0ZWRDb25maWd1cmF0aW9uOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFs
bERhdGEucHVzaChkYXRhTm9kZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9KTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChkb2VzTWF0Y2gpIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBDb25maWd1cmF0aW9uLm1lbWJlcnMoKS5mb3JFYWNoKG1lbWJlciA9PiB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtZW1iZXIgaW4gcGFydGlhbENvbmZpZ3Vy
YXRpb24pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJ0aWFs
Q29uZmlndXJhdGlvblttZW1iZXJdICE9PSBudWxsICYmIHBhcnRpYWxDb25maWd1cmF0aW9uW21l
bWJlcl0gIT09IGNvbXB1dGVkQ29uZmlndXJhdGlvblttZW1iZXJdKQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRpYWxDb25maWd1cmF0aW9uW21lbWJlcl0gPSBu
dWxsOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNvbXB1dGVk
Q29uZmlndXJhdGlvblttZW1iZXJdICE9PSBudWxsKQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcGFydGlhbENvbmZpZ3VyYXRpb25bbWVtYmVyXSA9IGNvbXB1dGVkQ29uZmln
dXJhdGlvblttZW1iZXJdOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAg
ICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAg
ICAgICB9KTsKLSAgICAgICAgICAgICAgICBsZXQgYWdyZWdhdGVEYXRhID0ge307Ci0gICAgICAg
ICAgICAgICAgT2JqZWN0LmtleXMoZGF0YSkuZm9yRWFjaChrZXkgPT4gewotICAgICAgICAgICAg
ICAgICAgICBhZ3JlZ2F0ZURhdGFba2V5XSA9IGRhdGFba2V5XTsKLSAgICAgICAgICAgICAgICB9
KTsKLSAgICAgICAgICAgICAgICBhZ3JlZ2F0ZURhdGFbJ2NvbmZpZ3VyYXRpb24nXSA9IG5ldyBD
b25maWd1cmF0aW9uKHBhcnRpYWxDb25maWd1cmF0aW9uKTsKLSAgICAgICAgICAgICAgICBUb29s
VGlwLnVuc2V0KCk7Ci0gICAgICAgICAgICAgICAgSW52ZXN0aWdhdGVEcmF3ZXIuZXhwYW5kKHNl
bGYuc3VpdGUsIGFncmVnYXRlRGF0YSwgYWxsRGF0YSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0KLQotICAgICAgICBmdW5jdGlvbiBvbkRvdEVudGVyRmFjdG9yeShjb25maWd1cmF0aW9uKSB7
Ci0gICAgICAgICAgICByZXR1cm4gKGRhdGEsIGV2ZW50LCBjYW52YXMpID0+IHsKLSAgICAgICAg
ICAgICAgICBsZXQgcGFydGlhbENvbmZpZ3VyYXRpb24gPSB7fTsKLSAgICAgICAgICAgICAgICBz
ZWxmLmNvbmZpZ3VyYXRpb25zLmZvckVhY2goY29uZmlndXJhdGlvbktleSA9PiB7Ci0gICAgICAg
ICAgICAgICAgICAgIGlmIChjb25maWd1cmF0aW9uS2V5LmNvbXBhcmUoY29uZmlndXJhdGlvbikg
fHwgY29uZmlndXJhdGlvbktleS5jb21wYXJlU0RLcyhjb25maWd1cmF0aW9uKSkKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5yZXN1bHRz
W2NvbmZpZ3VyYXRpb25LZXkudG9LZXkoKV0uZm9yRWFjaChwYWlyID0+IHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGNvbXB1dGVkQ29uZmlndXJhdGlvbiA9IG5ldyBDb25maWd1cmF0
aW9uKHBhaXIuY29uZmlndXJhdGlvbik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29t
cHV0ZWRDb25maWd1cmF0aW9uLmNvbXBhcmUoY29uZmlndXJhdGlvbikgfHwgY29tcHV0ZWRDb25m
aWd1cmF0aW9uLmNvbXBhcmVTREtzKGNvbmZpZ3VyYXRpb24pKQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxldCBkb2VzTWF0Y2gg
PSBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHBhaXIucmVzdWx0cy5mb3JFYWNoKG5v
ZGUgPT4gewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkb2VzTWF0Y2gpCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAobm9kZS51dWlkID09IGRhdGEudXVpZCkKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZG9lc01hdGNoID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0p
OwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRvZXNNYXRjaCkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIENvbmZpZ3VyYXRpb24ubWVtYmVycygpLmZvckVhY2gobWVtYmVyID0+
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1lbWJlciBpbiBwYXJ0aWFs
Q29uZmlndXJhdGlvbikgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KHBhcnRpYWxDb25maWd1cmF0aW9uW21lbWJlcl0gIT09IG51bGwgJiYgcGFydGlhbENvbmZpZ3Vy
YXRpb25bbWVtYmVyXSAhPT0gY29tcHV0ZWRDb25maWd1cmF0aW9uW21lbWJlcl0pCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFydGlhbENvbmZpZ3VyYXRpb25bbWVt
YmVyXSA9IG51bGw7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAo
Y29tcHV0ZWRDb25maWd1cmF0aW9uW21lbWJlcl0gIT09IG51bGwpCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwYXJ0aWFsQ29uZmlndXJhdGlvblttZW1iZXJdID0gY29tcHV0
ZWRDb25maWd1cmF0aW9uW21lbWJlcl07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0pOwotICAg
ICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIHBhcnRpYWxDb25maWd1cmF0aW9uID0g
bmV3IENvbmZpZ3VyYXRpb24ocGFydGlhbENvbmZpZ3VyYXRpb24pOwotICAgICAgICAgICAgICAg
IGNvbnN0IHNjcm9sbERlbHRhID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcCB8
fCBkb2N1bWVudC5ib2R5LnNjcm9sbFRvcDsKLQotICAgICAgICAgICAgICAgIGNvbnN0IGJ1aWxk
UGFyYW1zID0gY29uZmlndXJhdGlvbi50b1BhcmFtcygpOwotICAgICAgICAgICAgICAgIGJ1aWxk
UGFyYW1zWydzdWl0ZSddID0gW3NlbGYuc3VpdGVdOwotICAgICAgICAgICAgICAgIGJ1aWxkUGFy
YW1zWyd1dWlkJ10gPSBbZGF0YS51dWlkXTsKLSAgICAgICAgICAgICAgICBidWlsZFBhcmFtc1sn
YWZ0ZXJfdGltZSddID0gW2RhdGEuc3RhcnRfdGltZV07Ci0gICAgICAgICAgICAgICAgYnVpbGRQ
YXJhbXNbJ2JlZm9yZV90aW1lJ10gPSBbZGF0YS5zdGFydF90aW1lXTsKLSAgICAgICAgICAgICAg
ICBpZiAoYnJhbmNoKQotICAgICAgICAgICAgICAgICAgICBidWlsZFBhcmFtc1snYnJhbmNoJ10g
PSBicmFuY2g7Ci0KLSAgICAgICAgICAgICAgICBUb29sVGlwLnNldCgKLSAgICAgICAgICAgICAg
ICAgICAgYDxkaXYgY2xhc3M9ImNvbnRlbnQiPgotICAgICAgICAgICAgICAgICAgICAgICAgJHtk
YXRhLnN0YXJ0X3RpbWUgPyBgPGEgaHJlZj0iL3VybHMvYnVpbGQ/JHtwYXJhbXNUb1F1ZXJ5KGJ1
aWxkUGFyYW1zKX0iIHRhcmdldD0iX2JsYW5rIj5UZXN0IHJ1bjwvYT4gQCAke25ldyBEYXRlKGRh
dGEuc3RhcnRfdGltZSAqIDEwMDApLnRvTG9jYWxlU3RyaW5nKCl9PGJyPmAgOiAnJ30KLSAgICAg
ICAgICAgICAgICAgICAgICAgICR7ZGF0YS5zdGFydF90aW1lICYmIEFyY2hpdmVSb3V0ZXIuaGFz
QXJjaGl2ZShzZWxmLnN1aXRlLCBkYXRhLmFjdHVhbCkgPyBgPGEgaHJlZj0iL2FyY2hpdmUvJHtB
cmNoaXZlUm91dGVyLnBhdGhGb3Ioc2VsZi5zdWl0ZSwgZGF0YS5hY3R1YWwsIHNlbGYudGVzdCl9
PyR7cGFyYW1zVG9RdWVyeShidWlsZFBhcmFtcyl9IiB0YXJnZXQ9Il9ibGFuayI+JHtBcmNoaXZl
Um91dGVyLmxhYmVsRm9yKHNlbGYuc3VpdGUsIGRhdGEuYWN0dWFsKX08L2E+PGJyPmAgOiAnJ30K
LSAgICAgICAgICAgICAgICAgICAgICAgIENvbW1pdHM6ICR7Q29tbWl0QmFuay5jb21taXRzRHVy
aW5nKGRhdGEudXVpZCkubWFwKChjb21taXQpID0+IHsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBsZXQgcGFyYW1zID0gewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmFu
Y2g6IGNvbW1pdC5icmFuY2ggPyBbY29tbWl0LmJyYW5jaF0gOiBicmFuY2gsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHV1aWQ6IFtjb21taXQudXVpZF0sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcGFyYW1z
LmJyYW5jaCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHBhcmFtcy5i
cmFuY2g7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcXVlcnkgPSBwYXJhbXNU
b1F1ZXJ5KHBhcmFtcyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGA8YSBo
cmVmPSIvY29tbWl0L2luZm8/JHtxdWVyeX0iIHRhcmdldD0iX2JsYW5rIj4ke2NvbW1pdC5pZC5z
dWJzdHJpbmcoMCwxMil9PC9hPmA7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9KS5qb2luKCcs
ICcpfQotICAgICAgICAgICAgICAgICAgICAgICAgPGJyPgotICAgICAgICAgICAgICAgICAgICAg
ICAgJHtwYXJ0aWFsQ29uZmlndXJhdGlvbn0KLSAgICAgICAgICAgICAgICAgICAgICAgIDxicj4K
LSAgICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YS5zdGF0cyA/IGA8YSBocmVmPSIvaW52ZXN0
aWdhdGU/JHtwYXJhbXNUb1F1ZXJ5KGJ1aWxkUGFyYW1zKX0iIHRhcmdldD0iX2JsYW5rIj5JbnZl
c3RpZ2F0ZSBmYWlsdXJlczwvYT48YnI+YCA6ICcnfQotICAgICAgICAgICAgICAgICAgICAgICAg
JHtkYXRhLmV4cGVjdGVkID8gYEV4cGVjdGVkOiAke2RhdGEuZXhwZWN0ZWR9PGJyPmAgOiAnJ30K
LSAgICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YS5hY3R1YWwgPyBgQWN0dWFsOiAke2RhdGEu
YWN0dWFsfTxicj5gIDogJyd9Ci0gICAgICAgICAgICAgICAgICAgIDwvZGl2PmAsCi0gICAgICAg
ICAgICAgICAgICAgIGRhdGEudGlwUG9pbnRzLm1hcCgocG9pbnQpID0+IHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiB7eDogY2FudmFzLnggKyBwb2ludC54LCB5OiBjYW52YXMueSAr
IHNjcm9sbERlbHRhICsgcG9pbnQueX07Ci0gICAgICAgICAgICAgICAgICAgIH0pLAotICAgICAg
ICAgICAgICAgICAgICAoZXZlbnQpID0+IHtvbkRvdENsaWNrRmFjdG9yeShjb25maWd1cmF0aW9u
KShkYXRhKTt9LAotICAgICAgICAgICAgICAgICAgICBzZWxmLnZpZXdwb3J0LAotICAgICAgICAg
ICAgICAgICk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBv
bkRvdExlYXZlKGV2ZW50LCBjYW52YXMpIHsKLSAgICAgICAgICAgIGNvbnN0IHNjcm9sbERlbHRh
ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcCB8fCBkb2N1bWVudC5ib2R5LnNj
cm9sbFRvcDsKLSAgICAgICAgICAgIGlmICghVG9vbFRpcC5pc0luKHt4OiBldmVudC5wYWdlWCwg
eTogZXZlbnQucGFnZVkgLSBzY3JvbGxEZWx0YX0pKQotICAgICAgICAgICAgICAgIFRvb2xUaXAu
dW5zZXQoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIGV4cG9ydGVyRmFjdG9yeShk
YXRhKSB7Ci0gICAgICAgICAgICByZXR1cm4gKHVwZGF0ZUZ1bmN0aW9uKSA9PiB7Ci0gICAgICAg
ICAgICAgICAgc2VsZi51cGRhdGVzLnB1c2goKHNjYWxlKSA9PiB7dXBkYXRlRnVuY3Rpb24oZGF0
YSwgc2NhbGUpO30pOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgbGV0IGNo
aWxkcmVuID0gW107Ci0gICAgICAgIHRoaXMuY29uZmlndXJhdGlvbnMuZm9yRWFjaChjb25maWd1
cmF0aW9uID0+IHsKLSAgICAgICAgICAgIGlmICghdGhpcy5yZXN1bHRzW2NvbmZpZ3VyYXRpb24u
dG9LZXkoKV0gfHwgT2JqZWN0LmtleXModGhpcy5yZXN1bHRzW2NvbmZpZ3VyYXRpb24udG9LZXko
KV0pLmxlbmd0aCA9PT0gMCkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAg
IC8vIENyZWF0ZSBhIGxpc3Qgb2YgY29uZmlndXJhdGlvbnMgdG8gZGlzcGxheSB3aXRoIFNES3Mg
c3RyaXBwZWQKLSAgICAgICAgICAgIGxldCBtYXBwZWRDaGlsZHJlbkNvbmZpZ3MgPSB7fTsKLSAg
ICAgICAgICAgIGxldCBjaGlsZHJlbkNvbmZpZ3NCeVNESyA9IHt9Ci0gICAgICAgICAgICBsZXQg
cmVzdWx0c0J5S2V5ID0ge307Ci0gICAgICAgICAgICB0aGlzLnJlc3VsdHNbY29uZmlndXJhdGlv
bi50b0tleSgpXS5mb3JFYWNoKHBhaXIgPT4gewotICAgICAgICAgICAgICAgIGNvbnN0IHN0cmlw
cGVkQ29uZmlnID0gbmV3IENvbmZpZ3VyYXRpb24ocGFpci5jb25maWd1cmF0aW9uKTsKLSAgICAg
ICAgICAgICAgICByZXN1bHRzQnlLZXlbc3RyaXBwZWRDb25maWcudG9LZXkoKV0gPSBjb21iaW5l
UmVzdWx0cyhbXSwgWy4uLnBhaXIucmVzdWx0c10uc29ydChmdW5jdGlvbihhLCBiKSB7cmV0dXJu
IGIudXVpZCAtIGEudXVpZDt9KSk7Ci0gICAgICAgICAgICAgICAgc3RyaXBwZWRDb25maWcuc2Rr
ID0gbnVsbDsKLSAgICAgICAgICAgICAgICBtYXBwZWRDaGlsZHJlbkNvbmZpZ3Nbc3RyaXBwZWRD
b25maWcudG9LZXkoKV0gPSBzdHJpcHBlZENvbmZpZzsKLSAgICAgICAgICAgICAgICBpZiAoIWNo
aWxkcmVuQ29uZmlnc0J5U0RLW3N0cmlwcGVkQ29uZmlnLnRvS2V5KCldKQotICAgICAgICAgICAg
ICAgICAgICBjaGlsZHJlbkNvbmZpZ3NCeVNES1tzdHJpcHBlZENvbmZpZy50b0tleSgpXSA9IFtd
OwotICAgICAgICAgICAgICAgIGNoaWxkcmVuQ29uZmlnc0J5U0RLW3N0cmlwcGVkQ29uZmlnLnRv
S2V5KCldLnB1c2gobmV3IENvbmZpZ3VyYXRpb24ocGFpci5jb25maWd1cmF0aW9uKSk7Ci0gICAg
ICAgICAgICB9KTsKLSAgICAgICAgICAgIGxldCBjaGlsZHJlbkNvbmZpZ3MgPSBbXTsKLSAgICAg
ICAgICAgIE9iamVjdC5rZXlzKG1hcHBlZENoaWxkcmVuQ29uZmlncykuZm9yRWFjaChrZXkgPT4g
ewotICAgICAgICAgICAgICAgIGNoaWxkcmVuQ29uZmlncy5wdXNoKG1hcHBlZENoaWxkcmVuQ29u
Zmlnc1trZXldKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgY2hpbGRyZW5Db25maWdz
LnNvcnQoZnVuY3Rpb24oYSwgYikge3JldHVybiBhLmNvbXBhcmUoYik7fSk7Ci0KLSAgICAgICAg
ICAgIC8vIENyZWF0ZSB0aGUgY29sbGFwc2VkIHRpbWVsaW5lcywgY29iaW5lIHJlc3VsdHMKLSAg
ICAgICAgICAgIGxldCBhbGxSZXN1bHRzID0gW107Ci0gICAgICAgICAgICBsZXQgY29sbGFwc2Vk
VGltZWxpbmVzID0gW107Ci0gICAgICAgICAgICBjaGlsZHJlbkNvbmZpZ3MuZm9yRWFjaChjb25m
aWcgPT4gewotICAgICAgICAgICAgICAgIGNoaWxkcmVuQ29uZmlnc0J5U0RLW2NvbmZpZy50b0tl
eSgpXS5zb3J0KGZ1bmN0aW9uKGEsIGIpIHtyZXR1cm4gYS5jb21wYXJlU0RLcyhiKTt9KTsKLQot
ICAgICAgICAgICAgICAgIGxldCByZXN1bHRzRm9yQ29uZmlnID0gW107Ci0gICAgICAgICAgICAg
ICAgY2hpbGRyZW5Db25maWdzQnlTREtbY29uZmlnLnRvS2V5KCldLmZvckVhY2goc2RrQ29uZmln
ID0+IHsKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0c0ZvckNvbmZpZyA9IGNvbWJpbmVSZXN1
bHRzKHJlc3VsdHNGb3JDb25maWcsIHJlc3VsdHNCeUtleVtzZGtDb25maWcudG9LZXkoKV0pOwot
ICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIGFsbFJlc3VsdHMgPSBjb21iaW5l
UmVzdWx0cyhhbGxSZXN1bHRzLCByZXN1bHRzRm9yQ29uZmlnKTsKLQotICAgICAgICAgICAgICAg
IGxldCBxdWV1ZVBhcmFtcyA9IGNvbmZpZy50b1BhcmFtcygpOwotICAgICAgICAgICAgICAgIHF1
ZXVlUGFyYW1zWydzdWl0ZSddID0gW3RoaXMuc3VpdGVdOwotICAgICAgICAgICAgICAgIGlmIChi
cmFuY2gpCi0gICAgICAgICAgICAgICAgICAgIHF1ZXVlUGFyYW1zWydicmFuY2gnXTsKLSAgICAg
ICAgICAgICAgICBsZXQgbXlUaW1lbGluZSA9IFRpbWVsaW5lLlNlcmllc1dpdGhIZWFkZXJDb21w
b25lbnQoCi0gICAgICAgICAgICAgICAgICAgIGAke2NoaWxkcmVuQ29uZmlnc0J5U0RLW2NvbmZp
Zy50b0tleSgpXS5sZW5ndGggPiAxID8gJyB8ICcgOiAnJ308YSBocmVmPSIvdXJscy9xdWV1ZT8k
e3BhcmFtc1RvUXVlcnkocXVldWVQYXJhbXMpfSIgdGFyZ2V0PSJfYmxhbmsiPiR7Y29uZmlnfTwv
YT5gLAotICAgICAgICAgICAgICAgICAgICBUaW1lbGluZS5DYW52YXNTZXJpZXNDb21wb25lbnQo
cmVzdWx0c0ZvckNvbmZpZywgc2NhbGUsIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGdldFNj
YWxlRnVuYzogb3B0aW9ucy5nZXRTY2FsZUZ1bmMsCi0gICAgICAgICAgICAgICAgICAgICAgICBj
b21wYXJlRnVuYzogb3B0aW9ucy5jb21wYXJlRnVuYywKLSAgICAgICAgICAgICAgICAgICAgICAg
IHJlbmRlckZhY3Rvcnk6IG9wdGlvbnMucmVuZGVyRmFjdG9yeSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGV4cG9ydGVyOiBvcHRpb25zLmV4cG9ydGVyLAotICAgICAgICAgICAgICAgICAgICAg
ICAgb25Eb3RDbGljazogb25Eb3RDbGlja0ZhY3RvcnkoY29uZmlnKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIG9uRG90RW50ZXI6IG9uRG90RW50ZXJGYWN0b3J5KGNvbmZpZyksCi0gICAgICAg
ICAgICAgICAgICAgICAgICBvbkRvdExlYXZlOiBvbkRvdExlYXZlLAotICAgICAgICAgICAgICAg
ICAgICAgICAgZXhwb3J0ZXI6IGV4cG9ydGVyRmFjdG9yeShyZXN1bHRzRm9yQ29uZmlnKSwKLSAg
ICAgICAgICAgICAgICAgICAgfSkpOwotCi0gICAgICAgICAgICAgICAgaWYgKGNoaWxkcmVuQ29u
Zmlnc0J5U0RLW2NvbmZpZy50b0tleSgpXS5sZW5ndGggPiAxKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGxldCB0aW1lbGluZXNCeVNESyA9IFtdOwotICAgICAgICAgICAgICAgICAgICBjaGlsZHJl
bkNvbmZpZ3NCeVNES1tjb25maWcudG9LZXkoKV0uZm9yRWFjaChzZGtDb25maWcgPT4gewotICAg
ICAgICAgICAgICAgICAgICAgICAgdGltZWxpbmVzQnlTREsucHVzaCgKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBUaW1lbGluZS5TZXJpZXNXaXRoSGVhZGVyQ29tcG9uZW50KGAke0NvbmZp
Z3VyYXRpb24uaW50ZWdlclRvVmVyc2lvbihzZGtDb25maWcudmVyc2lvbil9ICgke3Nka0NvbmZp
Zy5zZGt9KWAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbWVsaW5lLkNhbnZh
c1Nlcmllc0NvbXBvbmVudChyZXN1bHRzQnlLZXlbc2RrQ29uZmlnLnRvS2V5KCldLCBzY2FsZSwg
ewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0U2NhbGVGdW5jOiBvcHRp
b25zLmdldFNjYWxlRnVuYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bXBhcmVGdW5jOiBvcHRpb25zLmNvbXBhcmVGdW5jLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVuZGVyRmFjdG9yeTogb3B0aW9ucy5yZW5kZXJGYWN0b3J5LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwb3J0ZXI6IG9wdGlvbnMuZXhwb3J0ZXIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkRvdENsaWNrOiBvbkRvdENs
aWNrRmFjdG9yeShzZGtDb25maWcpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgb25Eb3RFbnRlcjogb25Eb3RFbnRlckZhY3Rvcnkoc2RrQ29uZmlnKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG9uRG90TGVhdmU6IG9uRG90TGVhdmUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBvcnRlcjogZXhwb3J0ZXJGYWN0b3J5KHJl
c3VsdHNCeUtleVtzZGtDb25maWcudG9LZXkoKV0pLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9KSkpOwotICAgICAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICAg
ICAgbXlUaW1lbGluZSA9IFRpbWVsaW5lLkV4cGFuZGFibGVTZXJpZXNXaXRoSGVhZGVyRXhwYW5k
ZXJDb21wb25lbnQobXlUaW1lbGluZSwge30sIC4uLnRpbWVsaW5lc0J5U0RLKTsKLSAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgY29sbGFwc2VkVGltZWxpbmVzLnB1c2gobXlUaW1l
bGluZSk7Ci0gICAgICAgICAgICB9KTsKLQotICAgICAgICAgICAgaWYgKGNvbGxhcHNlZFRpbWVs
aW5lcy5sZW5ndGggPT09IDApCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAg
aWYgKGNvbGxhcHNlZFRpbWVsaW5lcy5sZW5ndGggPT09IDEpIHsKLSAgICAgICAgICAgICAgICBp
ZiAoIWNvbGxhcHNlZFRpbWVsaW5lc1swXS5oZWFkZXIuaW5jbHVkZXMoJ2NsYXNzPSJzZXJpZXMi
JykpCi0gICAgICAgICAgICAgICAgICAgIGNvbGxhcHNlZFRpbWVsaW5lc1swXS5oZWFkZXIgPSBU
aW1lbGluZS5IZWFkZXJDb21wb25lbnQoY29sbGFwc2VkVGltZWxpbmVzWzBdLmhlYWRlcik7Ci0g
ICAgICAgICAgICAgICAgY2hpbGRyZW4ucHVzaChjb2xsYXBzZWRUaW1lbGluZXNbMF0pOwotICAg
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgY2hpbGRy
ZW4ucHVzaCgKLSAgICAgICAgICAgICAgICBUaW1lbGluZS5FeHBhbmRhYmxlU2VyaWVzV2l0aEhl
YWRlckV4cGFuZGVyQ29tcG9uZW50KAotICAgICAgICAgICAgICAgIFRpbWVsaW5lLlNlcmllc1dp
dGhIZWFkZXJDb21wb25lbnQoYCAke2NvbmZpZ3VyYXRpb259YCwKLSAgICAgICAgICAgICAgICAg
ICAgVGltZWxpbmUuQ2FudmFzU2VyaWVzQ29tcG9uZW50KGFsbFJlc3VsdHMsIHNjYWxlLCB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBnZXRTY2FsZUZ1bmM6IG9wdGlvbnMuZ2V0U2NhbGVGdW5j
LAotICAgICAgICAgICAgICAgICAgICAgICAgY29tcGFyZUZ1bmM6IG9wdGlvbnMuY29tcGFyZUZ1
bmMsCi0gICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJGYWN0b3J5OiBvcHRpb25zLnJlbmRl
ckZhY3RvcnksCi0gICAgICAgICAgICAgICAgICAgICAgICBvbkRvdENsaWNrOiBvbkRvdENsaWNr
RmFjdG9yeShjb25maWd1cmF0aW9uKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIG9uRG90RW50
ZXI6IG9uRG90RW50ZXJGYWN0b3J5KGNvbmZpZ3VyYXRpb24pLAotICAgICAgICAgICAgICAgICAg
ICAgICAgb25Eb3RMZWF2ZTogb25Eb3RMZWF2ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4
cG9ydGVyOiBleHBvcnRlckZhY3RvcnkoYWxsUmVzdWx0cyksCi0gICAgICAgICAgICAgICAgICAg
IH0pKSwKLSAgICAgICAgICAgICAgICB7ZXhwYW5kZWQ6IHRoaXMuY29uZmlndXJhdGlvbnMubGVu
Z3RoIDw9IDF9LAotICAgICAgICAgICAgICAgIC4uLmNvbGxhcHNlZFRpbWVsaW5lcwotICAgICAg
ICAgICAgKSk7Ci0gICAgICAgIH0pOwotCi0gICAgICAgIGxldCB0b3AgPSB0cnVlOwotICAgICAg
ICBzZWxmLnhheGlzVXBkYXRlcyA9IFtdOwotICAgICAgICB0aGlzLnJlcG9zaXRvcmllcyA9IHJl
cG9zaXRvcmllc0ZvckNvbW1pdHMoY29tbWl0cyk7Ci0gICAgICAgIHRoaXMucmVwb3NpdG9yaWVz
LmZvckVhY2gocmVwb3NpdG9yeSA9PiB7Ci0gICAgICAgICAgICBjb25zdCB4QXhpc0NvbXBvbmVu
dCA9IHhBeGlzRnJvbVNjYWxlKHNjYWxlLCByZXBvc2l0b3J5LCBzZWxmLnhheGlzVXBkYXRlcywg
dG9wLCBzZWxmLnZpZXdwb3J0KTsKLSAgICAgICAgICAgIGlmICh0b3ApCi0gICAgICAgICAgICAg
ICAgY2hpbGRyZW4udW5zaGlmdCh4QXhpc0NvbXBvbmVudCk7Ci0gICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgY2hpbGRyZW4ucHVzaCh4QXhpc0NvbXBvbmVudCk7Ci0gICAgICAgICAg
ICB0b3AgPSBmYWxzZTsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgY29uc3QgY29tcG9zZXIgPSBG
UC5jb21wb3NlcihGUC5jdXJyeWluZygodXBkYXRlVGltZWxpbmUsIG5vdGlmeVJlcmVuZGVyKSA9
PiB7Ci0gICAgICAgICAgICBzZWxmLnRpbWVsaW5lVXBkYXRlID0gKHhBeGlzZXMpID0+IHsKLSAg
ICAgICAgICAgICAgICBjaGlsZHJlbi5zcGxpY2UoMCwgMSk7Ci0gICAgICAgICAgICAgICAgaWYg
KHNlbGYucmVwb3NpdG9yaWVzLmxlbmd0aCA+IDEpCi0gICAgICAgICAgICAgICAgICAgIGNoaWxk
cmVuLnNwbGljZShjaGlsZHJlbi5sZW5ndGggLSBzZWxmLnJlcG9zaXRvcmllcy5sZW5ndGgsIHNl
bGYucmVwb3NpdG9yaWVzLmxlbmd0aCk7Ci0KLSAgICAgICAgICAgICAgICBsZXQgdG9wID0gdHJ1
ZTsKLSAgICAgICAgICAgICAgICB4QXhpc2VzLmZvckVhY2goY29tcG9uZW50ID0+IHsKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKHRvcCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVu
LnVuc2hpZnQoY29tcG9uZW50KTsKLSAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgICAgICAgICAgY2hpbGRyZW4ucHVzaChjb21wb25lbnQpOwotICAgICAgICAgICAgICAg
ICAgICB0b3AgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICB1
cGRhdGVUaW1lbGluZShjaGlsZHJlbik7Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgc2Vs
Zi5ub3RpZnlSZXJlbmRlciA9IG5vdGlmeVJlcmVuZGVyOwotICAgICAgICB9KSk7Ci0gICAgICAg
IHJldHVybiBUaW1lbGluZS5DYW52YXNDb250YWluZXIoY29tcG9zZXIsIC4uLmNoaWxkcmVuKTsK
LSAgICB9Ci19Ci0KLQotZnVuY3Rpb24gTGVnZW5kTGFiZWwoZXZlbnRTdHJlYW0sIGZpbHRlckV4
cGVjdGVkVGV4dCwgZmlsdGVyVW5leHBlY3RlZFRleHQpIHsKLSAgICBsZXQgcmVmID0gUkVGLmNy
ZWF0ZVJlZih7Ci0gICAgICAgIHN0YXRlOiB3aWxsRmlsdGVyRXhwZWN0ZWQsCi0gICAgICAgIG9u
U3RhdGVVcGRhdGU6IChlbGVtZW50LCBzdGF0ZSkgPT4gewotICAgICAgICAgICAgaWYgKHN0YXRl
KSBlbGVtZW50LmlubmVyVGV4dCA9IGZpbHRlckV4cGVjdGVkVGV4dDsKLSAgICAgICAgICAgIGVs
c2UgZWxlbWVudC5pbm5lclRleHQgPSBmaWx0ZXJVbmV4cGVjdGVkVGV4dDsKLSAgICAgICAgfQot
ICAgIH0pOwotICAgIGV2ZW50U3RyZWFtLmFjdGlvbigod2lsbEZpbHRlckV4cGVjdGVkKSA9PiBy
ZWYuc2V0U3RhdGUod2lsbEZpbHRlckV4cGVjdGVkKSk7Ci0gICAgcmV0dXJuIGA8ZGl2IGNsYXNz
PSJsYWJlbCIgc3R5bGU9ImZvbnQtc2l6ZTogdmFyKC0tc21hbGxTaXplKSIgcmVmPSIke3JlZn0i
PjwvZGl2PmA7Ci19IAotCi1mdW5jdGlvbiBMZWdlbmQoY2FsbGJhY2s9bnVsbCwgcGx1cmFsPWZh
bHNlLCBkZWZhdWx0V2lsbEZpbHRlckV4cGVjdGVkPWZhbHNlKSB7Ci0gICAgd2lsbEZpbHRlckV4
cGVjdGVkID0gZGVmYXVsdFdpbGxGaWx0ZXJFeHBlY3RlZDsKLSAgICBJbnZlc3RpZ2F0ZURyYXdl
ci53aWxsRmlsdGVyRXhwZWN0ZWQgPSB3aWxsRmlsdGVyRXhwZWN0ZWQ7Ci0gICAgbGV0IHVwZGF0
ZUxhYmVsRXZlbnRzID0gbmV3IEV2ZW50U3RyZWFtKCk7Ci0gICAgY29uc3QgbGVnZW5kRGV0YWls
cyA9IHsKLSAgICAgICAgc3VjY2VzczogewotICAgICAgICAgICAgZXhwZWN0ZWQ6IHBsdXJhbCA/
ICdObyB1bmV4cGVjdGVkIHJlc3VsdHMnIDogJ1Jlc3VsdCBleHBlY3RlZCcsCi0gICAgICAgICAg
ICB1bmV4cGVjdGVkOiBwbHVyYWwgPyAnQWxsIHRlc3RzIHBhc3NlZCcgOiAnVGVzdCBwYXNzZWQn
LAotICAgICAgICB9LAotICAgICAgICB3YXJuaW5nOiB7Ci0gICAgICAgICAgICBleHBlY3RlZDog
cGx1cmFsID8gJ1NvbWUgdGVzdHMgdW5leHBlY3RlZGx5IHJlcG9ydGVkIHdhcm5pbmdzJyA6ICdV
bmV4cGVjdGVkIHdhcm5pbmcnLAotICAgICAgICAgICAgdW5leHBlY3RlZDogcGx1cmFsID8gJ1Nv
bWUgdGVzdHMgcmVwb3J0ZWQgd2FybmluZ3MnIDogJ1Rlc3Qgd2FybmluZycsCi0gICAgICAgIH0s
Ci0gICAgICAgIGZhaWxlZDogewotICAgICAgICAgICAgZXhwZWN0ZWQ6IHBsdXJhbCA/ICdTb21l
IHRlc3RzIHVuZXhwZWN0ZWRseSBmYWlsZWQnIDogJ1VuZXhwZWN0ZWRseSBmYWlsZWQnLAotICAg
ICAgICAgICAgdW5leHBlY3RlZDogcGx1cmFsID8gJ1NvbWUgdGVzdHMgZmFpbGVkJyA6ICdUZXN0
IGZhaWxlZCcsCi0gICAgICAgIH0sCi0gICAgICAgIHRpbWVkb3V0OiB7Ci0gICAgICAgICAgICBl
eHBlY3RlZDogcGx1cmFsID8gJ1NvbWUgdGVzdHMgdW5leHBlY3RlZGx5IHRpbWVkIG91dCcgOiAn
VW5leHBlY3RlZGx5IHRpbWVkIG91dCcsCi0gICAgICAgICAgICB1bmV4cGVjdGVkOiBwbHVyYWwg
PyAnU29tZSB0ZXN0cyB0aW1lZCBvdXQnIDogJ1Rlc3QgdGltZWQgb3V0JywKLSAgICAgICAgfSwK
LSAgICAgICAgY3Jhc2hlZDogewotICAgICAgICAgICAgZXhwZWN0ZWQ6IHBsdXJhbCA/ICdTb21l
IHRlc3RzIHVuZXhwZWN0ZWRseSBjcmFzaGVkJyA6ICdVbmV4cGVjdGVkbHkgY3Jhc2hlZCcsCi0g
ICAgICAgICAgICB1bmV4cGVjdGVkOiBwbHVyYWwgPyAnU29tZSB0ZXN0cyBjcmFzaGVkJyA6ICdU
ZXN0IGNyYXNoZWQnLAotICAgICAgICB9LAotICAgIH07Ci0gICAgbGV0IHJlc3VsdCA9IGA8ZGl2
IGNsYXNzPSJsZW5nZW5kIGhvcml6b250YWwiPgotICAgICAgICAgICAgJHtPYmplY3Qua2V5cyhs
ZWdlbmREZXRhaWxzKS5tYXAoKGtleSkgPT4gewotICAgICAgICAgICAgICAgIGNvbnN0IGRvdCA9
IFJFRi5jcmVhdGVSZWYoewotICAgICAgICAgICAgICAgICAgICBvbkVsZW1lbnRNb3VudDogKGVs
ZW1lbnQpID0+IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0
ZW5lcignbW91c2VsZWF2ZScsIChldmVudCkgPT4gewotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICghVG9vbFRpcC5pc0luKHt4OiBldmVudC54LCB5OiBldmVudC55fSkpCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFRvb2xUaXAudW5zZXQoKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5vbm1vdXNlb3Zl
ciA9IChldmVudCkgPT4gewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZWxlbWVu
dC5jbGFzc0xpc3QuY29udGFpbnMoJ2Rpc2FibGVkJykpCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBUb29sVGlwLnNl
dEJ5RWxlbWVudCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYDxkaXYgY2xhc3M9
ImNvbnRlbnQiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHt3aWxsRmls
dGVyRXhwZWN0ZWQgPyBsZWdlbmREZXRhaWxzW2tleV0uZXhwZWN0ZWQgOiBsZWdlbmREZXRhaWxz
W2tleV0udW5leHBlY3RlZH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+
YCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAge29yaWVudGF0aW9uOiBUb29sVGlwLkhPUklaT05UQUx9LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9
OwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIGA8ZGl2IGNsYXNzPSJpdGVtIj4KLSAgICAgICAgICAgICAgICAgICAgICAg
IDxkaXYgY2xhc3M9ImRvdCAke2tleX0iIHJlZj0iJHtkb3R9Ij48ZGl2IGNsYXNzPSJ0ZXh0Ij4k
e0V4cGVjdGF0aW9ucy5zeW1ib2xNYXBba2V5XX08L2Rpdj48L2Rpdj4KLSAgICAgICAgICAgICAg
ICAgICAgICAgICR7TGVnZW5kTGFiZWwodXBkYXRlTGFiZWxFdmVudHMsIGxlZ2VuZERldGFpbHNb
a2V5XS5leHBlY3RlZCwgbGVnZW5kRGV0YWlsc1trZXldLnVuZXhwZWN0ZWQpfQotICAgICAgICAg
ICAgICAgICAgICA8L2Rpdj5gCi0gICAgICAgICAgICB9KS5qb2luKCcnKX0KLSAgICAgICAgPC9k
aXY+YDsKLQotICAgIGlmIChjYWxsYmFjaykgewotICAgICAgICBjb25zdCBmaWx0ZXJTd2l0Y2gg
PSBSRUYuY3JlYXRlUmVmKHsKLSAgICAgICAgICAgIG9uRWxlbWVudE1vdW50OiAoZWxlbWVudCkg
PT4gewotICAgICAgICAgICAgICAgIGVsZW1lbnQub25jaGFuZ2UgPSAoKSA9PiB7Ci0gICAgICAg
ICAgICAgICAgICAgIGlmIChlbGVtZW50LmNoZWNrZWQpCi0gICAgICAgICAgICAgICAgICAgICAg
ICB3aWxsRmlsdGVyRXhwZWN0ZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgICAgICAgICB3aWxsRmlsdGVyRXhwZWN0ZWQgPSBmYWxzZTsKLSAgICAg
ICAgICAgICAgICAgICAgdXBkYXRlTGFiZWxFdmVudHMuYWRkKHdpbGxGaWx0ZXJFeHBlY3RlZCk7
Ci0gICAgICAgICAgICAgICAgICAgIEludmVzdGlnYXRlRHJhd2VyLndpbGxGaWx0ZXJFeHBlY3Rl
ZCA9IHdpbGxGaWx0ZXJFeHBlY3RlZDsKLSAgICAgICAgICAgICAgICAgICAgSW52ZXN0aWdhdGVE
cmF3ZXIuZGlzcGF0Y2goKTsKLSAgICAgICAgICAgICAgICAgICAgSW52ZXN0aWdhdGVEcmF3ZXIu
c2VsZWN0KEludmVzdGlnYXRlRHJhd2VyLnNlbGVjdGVkKTsKLSAgICAgICAgICAgICAgICAgICAg
Y2FsbGJhY2sod2lsbEZpbHRlckV4cGVjdGVkKTsKLSAgICAgICAgICAgICAgICB9OwotICAgICAg
ICAgICAgfSwKLSAgICAgICAgfSk7Ci0gICAgICAgIGNvbnN0IHNob3dUaW1lc1N3aXRjaCA9IFJF
Ri5jcmVhdGVSZWYoewotICAgICAgICAgICAgb25FbGVtZW50TW91bnQ6IChlbGVtZW50KSA9PiB7
Ci0gICAgICAgICAgICAgICAgZWxlbWVudC5vbmNoYW5nZSA9ICgpID0+IHsKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKGVsZW1lbnQuY2hlY2tlZCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHNo
b3dUZXN0VGltZXMgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgICAgICAgICBzaG93VGVzdFRpbWVzID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAg
IGNhbGxiYWNrKCk7Ci0gICAgICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIH0sCi0gICAgICAg
IH0pOwotCi0gICAgICAgIHJlc3VsdCArPSBgPGRpdiBjbGFzcz0iaW5wdXQiPgotICAgICAgICAg
ICAgPGxhYmVsPkZpbHRlciBleHBlY3RlZCByZXN1bHRzPC9sYWJlbD4KLSAgICAgICAgICAgIDxs
YWJlbCBjbGFzcz0ic3dpdGNoIj4KLSAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iY2hlY2ti
b3giJHt3aWxsRmlsdGVyRXhwZWN0ZWQgPyAnIGNoZWNrZWQnOiAnJ30gcmVmPSIke2ZpbHRlclN3
aXRjaH0iPgotICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzbGlkZXIiPjwvc3Bhbj4KLSAg
ICAgICAgICAgIDwvbGFiZWw+Ci0gICAgICAgIDwvZGl2PmAKLSAgICAgICAgaWYgKCFwbHVyYWwp
Ci0gICAgICAgICAgICByZXN1bHQgKz0gYDxkaXYgY2xhc3M9ImlucHV0Ij4KLSAgICAgICAgICAg
ICAgICA8bGFiZWw+U2hvdyB0ZXN0IHRpbWVzPC9sYWJlbD4KLSAgICAgICAgICAgICAgICA8bGFi
ZWwgY2xhc3M9InN3aXRjaCI+Ci0gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJjaGVj
a2JveCIke3Nob3dUZXN0VGltZXMgPyAnIGNoZWNrZWQnOiAnJ30gcmVmPSIke3Nob3dUaW1lc1N3
aXRjaH0iPgotICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2xpZGVyIj48L3NwYW4+
Ci0gICAgICAgICAgICAgICAgPC9sYWJlbD4KLSAgICAgICAgICAgIDwvZGl2PmA7Ci0gICAgfQot
Ci0gICAgcmV0dXJuIGAke3Jlc3VsdH1gOwotfQotCi1leHBvcnQge0xlZ2VuZCwgVGltZWxpbmVG
cm9tRW5kcG9pbnQsIEV4cGVjdGF0aW9uc307CkluZGV4OiBUb29scy9yZXN1bHRzZGJweS9yZXN1
bHRzZGJweS92aWV3L3N0YXRpYy9qcy90b29sdGlwLmpzCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL3Jl
c3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvc3RhdGljL2pzL3Rvb2x0aXAuanMJKHJldmlzaW9u
IDI2NTUzMSkKKysrIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvc3RhdGljL2pz
L3Rvb2x0aXAuanMJKG5vbmV4aXN0ZW50KQpAQCAtMSwyMzUgKzAsMCBAQAotLy8gQ29weXJpZ2h0
IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotLy8gYXJlIG1ldDoKLS8vIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0v
LyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotLy8gICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLS8vCi0v
LyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgIkFTIElTIgotLy8gQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0vLyBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0vLyBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLS8vIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLS8vIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0vLyBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLS8vIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0vLyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotLy8gQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotLy8gVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1pbXBvcnQge0RP
TSwgUkVGfSBmcm9tICcvbGlicmFyeS9qcy9SZWYuanMnOwotCi1mdW5jdGlvbiBpc1BvaW50SW5F
bGVtZW50KGVsZW1lbnQsIHBvaW50KQotewotICAgIGlmICghZWxlbWVudCB8fCBlbGVtZW50LnN0
eWxlLmRpc3BsYXkgPT0gJ25vbmUnKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgY29uc3Qg
Ym91bmRzID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKLSAgICByZXR1cm4gcG9p
bnQueCA+PSBib3VuZHMubGVmdCAtIDEgJiYgcG9pbnQueCA8PSBib3VuZHMucmlnaHQgKyAxICYm
IHBvaW50LnkgPj0gYm91bmRzLnRvcCAtIDEgJiYgcG9pbnQueSA8PSBib3VuZHMuYm90dG9tICsg
MTsKLX0KLQotY2xhc3MgX1Rvb2xUaXAgewotICAgIGNvbnN0cnVjdG9yKCkgewotICAgICAgICB0
aGlzLnJlZiA9IG51bGw7Ci0gICAgICAgIHRoaXMuYXJyb3cgPSBudWxsOwotICAgICAgICB0aGlz
Lm9uQXJyb3dDbGljayA9IG51bGw7Ci0KLSAgICAgICAgdGhpcy5WRVJUSUNBTCA9IDA7Ci0gICAg
ICAgIHRoaXMuSE9SSVpPTlRBTCA9IDE7Ci0gICAgfQotICAgIHRvU3RyaW5nKCkgewotICAgICAg
ICBjb25zdCBzZWxmID0gdGhpczsKLSAgICAgICAgdGhpcy5yZWYgPSBSRUYuY3JlYXRlUmVmKHsK
LSAgICAgICAgICAgIHN0YXRlOiB7Y29udGVudDogbnVsbCwgcG9pbnRzOiBudWxsLCB2aWV3cG9y
dDogbnVsbH0sCi0gICAgICAgICAgICBvbkVsZW1lbnRNb3VudDogKGVsZW1lbnQpID0+IHsKLSAg
ICAgICAgICAgICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbGVhdmUnLCAoZXZl
bnQpID0+IHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQuc3R5bGUuZGlzcGxheSA9
PT0gJ25vbmUnKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAg
ICAgICAgICBpZiAoIWlzUG9pbnRJbkVsZW1lbnQoc2VsZi5hcnJvdy5lbGVtZW50LCBldmVudCkp
Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVuc2V0KCkKLSAgICAgICAgICAgICAgICB9
KTsKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBvblN0YXRlVXBkYXRlOiAoZWxlbWVudCwg
c3RhdGVEaWZmLCBzdGF0ZSkgPT4gewotICAgICAgICAgICAgICAgIGlmIChzdGF0ZURpZmYuY29u
dGVudCkgewotICAgICAgICAgICAgICAgICAgICBET00uaW5qZWN0KGVsZW1lbnQsIHN0YXRlRGlm
Zi5jb250ZW50KTsKLSAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5zdHlsZS5kaXNwbGF5ID0g
bnVsbDsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBlbGVt
ZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7Ci0gICAgICAgICAgICAgICAgICAgIERPTS5pbmpl
Y3QoZWxlbWVudCwgJycpOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGlm
IChzdGF0ZURpZmYucG9pbnRzIHx8IHN0YXRlRGlmZi52aWV3cG9ydCkgewotICAgICAgICAgICAg
ICAgICAgICBlbGVtZW50LnN0eWxlLmxlZnQgPSAnMHB4JzsKLSAgICAgICAgICAgICAgICAgICAg
ZWxlbWVudC5zdHlsZS50b3AgPSAnMHB4JzsKLQotICAgICAgICAgICAgICAgICAgICBjb25zdCB1
cHBlclBvaW50ID0gc3RhdGVEaWZmLnBvaW50cy5sZW5ndGggPiAxICYmIHN0YXRlRGlmZi5wb2lu
dHNbMF0ueSA+IHN0YXRlRGlmZi5wb2ludHNbMV0ueSA/IHN0YXRlRGlmZi5wb2ludHNbMV0gOiBz
dGF0ZURpZmYucG9pbnRzWzBdOwotICAgICAgICAgICAgICAgICAgICBjb25zdCBsb3dlclBvaW50
ID0gc3RhdGVEaWZmLnBvaW50cy5sZW5ndGggPiAxICYmIHN0YXRlRGlmZi5wb2ludHNbMV0ueSA+
IHN0YXRlRGlmZi5wb2ludHNbMF0ueSA/IHN0YXRlRGlmZi5wb2ludHNbMV0gOiBzdGF0ZURpZmYu
cG9pbnRzWzBdOwotICAgICAgICAgICAgICAgICAgICBjb25zdCBzY3JvbGxEZWx0YSA9IGRvY3Vt
ZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3AgfHwgZG9jdW1lbnQuYm9keS5zY3JvbGxUb3A7
Ci0gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJvdW5kcyA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdD
bGllbnRSZWN0KCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgbGV0IGRpcmVjdGlvbiA9ICdkb3du
JzsKLSAgICAgICAgICAgICAgICAgICAgbGV0IHBvaW50ID0gdXBwZXJQb2ludDsKLQotICAgICAg
ICAgICAgICAgICAgICBpZiAodXBwZXJQb2ludC55ID09IGxvd2VyUG9pbnQueSkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gSG9yaXpvbnRhbCB0b29sdGlwCi0gICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBsZWZ0UG9pbnQgPSBzdGF0ZURpZmYucG9pbnRzLmxlbmd0aCA+IDEgJiYg
c3RhdGVEaWZmLnBvaW50c1swXS54ID4gc3RhdGVEaWZmLnBvaW50c1sxXS54ID8gc3RhdGVEaWZm
LnBvaW50c1sxXSA6IHN0YXRlRGlmZi5wb2ludHNbMF07Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCByaWdodFBvaW50ID0gc3RhdGVEaWZmLnBvaW50cy5sZW5ndGggPiAxICYmIHN0YXRl
RGlmZi5wb2ludHNbMV0ueCA+IHN0YXRlRGlmZi5wb2ludHNbMF0ueCA/IHN0YXRlRGlmZi5wb2lu
dHNbMV0gOiBzdGF0ZURpZmYucG9pbnRzWzBdOwotCi0gICAgICAgICAgICAgICAgICAgICAgICBk
aXJlY3Rpb24gPSAnbGVmdCc7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsZXQgdGlwWCA9IGxl
ZnRQb2ludC54IC0gMTIgLSBib3VuZHMud2lkdGg7Ci0gICAgICAgICAgICAgICAgICAgICAgICBw
b2ludCA9IHJpZ2h0UG9pbnQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGlwWCA8IDAg
fHwgdGlwWCArIGJvdW5kcy53aWR0aCArIChyaWdodFBvaW50LnggLSBsZWZ0UG9pbnQueCkgLyAy
IDwgc3RhdGVEaWZmLnZpZXdwb3J0LnggKyBzdGF0ZURpZmYudmlld3BvcnQud2lkdGggLyAyKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0aW9uID0gJ3JpZ2h0JzsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0aXBYID0gcmlnaHRQb2ludC54ICsgMTY7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcG9pbnQgPSByaWdodFBvaW50OwotICAgICAgICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5zdHlsZS5sZWZ0ID0g
YCR7dGlwWH1weGA7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0aXBZID0gcG9pbnQu
eSAtIGJvdW5kcy5oZWlnaHQgLyAyOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRpcFkg
KyBib3VuZHMuaGVpZ2h0ID4gc2Nyb2xsRGVsdGEgKyBzdGF0ZURpZmYudmlld3BvcnQueSArIHN0
YXRlRGlmZi52aWV3cG9ydC5oZWlnaHQpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlw
WSA9IHNjcm9sbERlbHRhICsgc3RhdGVEaWZmLnZpZXdwb3J0LnkgKyBzdGF0ZURpZmYudmlld3Bv
cnQuaGVpZ2h0IC0gYm91bmRzLmhlaWdodDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0
aXBZIDwgMCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXBZID0gMDsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGVsZW1lbnQuc3R5bGUudG9wID0gYCR7dGlwWX1weGA7Ci0gICAgICAg
ICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBNYWtlIGFu
IGVmZm9ydCB0byBwbGFjZSB0aGUgdG9vbHRpcCBpbiB0aGUgY2VudGVyIG9mIHRoZSB2aWV3cG9y
dC4KLSAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0aXBZID0gdXBwZXJQb2ludC55IC0gOCAt
IGJvdW5kcy5oZWlnaHQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwb2ludCA9IHVwcGVyUG9p
bnQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGlwWSA8IHNjcm9sbERlbHRhIHx8IHRp
cFkgKyBib3VuZHMuaGVpZ2h0ICsgKGxvd2VyUG9pbnQueSAtIHVwcGVyUG9pbnQueSkgLyAyIDwg
c2Nyb2xsRGVsdGEgKyBzdGF0ZURpZmYudmlld3BvcnQueSArIHN0YXRlRGlmZi52aWV3cG9ydC5o
ZWlnaHQgLyAyKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0aW9uID0gJ3Vw
JzsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXBZID0gbG93ZXJQb2ludC55ICsgMTY7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnQgPSBsb3dlclBvaW50OwotICAgICAg
ICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5zdHls
ZS50b3AgPSBgJHt0aXBZfXB4YDsKLQotICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHRpcFgg
PSBwb2ludC54IC0gYm91bmRzLndpZHRoIC8gMjsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICh0aXBYICsgYm91bmRzLndpZHRoID4gc3RhdGVEaWZmLnZpZXdwb3J0LnggKyBzdGF0ZURpZmYu
dmlld3BvcnQud2lkdGgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlwWCA9IHN0YXRl
RGlmZi52aWV3cG9ydC54ICsgc3RhdGVEaWZmLnZpZXdwb3J0LndpZHRoIC0gYm91bmRzLndpZHRo
OwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRpcFggPCAwKQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRpcFggPSAwOwotICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5z
dHlsZS5sZWZ0ID0gYCR7dGlwWH1weGA7Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAg
ICAgICAgICAgICAgICBzZWxmLmFycm93LnNldFN0YXRlKHtkaXJlY3Rpb246IGRpcmVjdGlvbiwg
bG9jYXRpb246IHBvaW50fSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSwKLSAg
ICAgICAgfSk7Ci0gICAgICAgIHRoaXMuYXJyb3cgPSBSRUYuY3JlYXRlUmVmKHsKLSAgICAgICAg
ICAgIHN0YXRlOiB7ZGlyZWN0aW9uOiBudWxsLCBsb2NhdGlvbjogbnVsbH0sCi0gICAgICAgICAg
ICBvbkVsZW1lbnRNb3VudDogKGVsZW1lbnQpID0+IHsKLSAgICAgICAgICAgICAgICBlbGVtZW50
LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbGVhdmUnLCAoZXZlbnQpID0+IHsKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKGVsZW1lbnQuc3R5bGUuZGlzcGxheSA9PT0gJ25vbmUnKQotICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgICAgICBpZiAoIWlzUG9pbnRJ
bkVsZW1lbnQoc2VsZi5yZWYuZWxlbWVudCwgZXZlbnQpICYmICFpc1BvaW50SW5FbGVtZW50KGVs
ZW1lbnQsIGV2ZW50KSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudW5zZXQoKQotICAg
ICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIG9uU3RhdGVVcGRh
dGU6IChlbGVtZW50LCBzdGF0ZURpZmYpID0+IHsKLSAgICAgICAgICAgICAgICBpZiAoIXN0YXRl
RGlmZi5kaXJlY3Rpb24gfHwgIXN0YXRlRGlmZi5sb2NhdGlvbikgewotICAgICAgICAgICAgICAg
ICAgICBlbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7Ci0gICAgICAgICAgICAgICAgICAg
IGVsZW1lbnQub25jbGljayA9IG51bGw7Ci0gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuc3R5
bGUuY3Vyc29yID0gbnVsbDsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAg
ICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGlmIChzZWxmLm9uQXJyb3dDbGljaykgewotICAg
ICAgICAgICAgICAgICAgICBlbGVtZW50Lm9uY2xpY2sgPSBzZWxmLm9uQXJyb3dDbGljazsKLSAg
ICAgICAgICAgICAgICAgICAgZWxlbWVudC5zdHlsZS5jdXJzb3IgPSAncG9pbnRlcic7Ci0gICAg
ICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5vbmNsaWNr
ID0gbnVsbDsKLSAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5zdHlsZS5jdXJzb3IgPSBudWxs
OwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGVsZW1lbnQuY2xhc3NMaXN0
ID0gW2B0b29sdGlwIGFycm93LSR7c3RhdGVEaWZmLmRpcmVjdGlvbn1gXTsKLSAgICAgICAgICAg
ICAgICAKLSAgICAgICAgICAgICAgICBpZiAoc3RhdGVEaWZmLmRpcmVjdGlvbiA9PSAnZG93bicp
IHsKLSAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5zdHlsZS5sZWZ0ID0gYCR7c3RhdGVEaWZm
LmxvY2F0aW9uLnggLSAxNX1weGA7Ci0gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuc3R5bGUu
dG9wID0gYCR7c3RhdGVEaWZmLmxvY2F0aW9uLnkgLSA4fXB4YDsKLSAgICAgICAgICAgICAgICB9
IGVsc2UgaWYgKHN0YXRlRGlmZi5kaXJlY3Rpb24gPT0gJ2xlZnQnKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGVsZW1lbnQuc3R5bGUubGVmdCA9IGAke3N0YXRlRGlmZi5sb2NhdGlvbi54IC0gMzB9
cHhgOwotICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnN0eWxlLnRvcCA9IGAke3N0YXRlRGlm
Zi5sb2NhdGlvbi55IC0gMTV9cHhgOwotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoc3RhdGVE
aWZmLmRpcmVjdGlvbiA9PSAncmlnaHQnKSB7Ci0gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQu
c3R5bGUubGVmdCA9IGAke3N0YXRlRGlmZi5sb2NhdGlvbi54IC0gMTN9cHhgOwotICAgICAgICAg
ICAgICAgICAgICBlbGVtZW50LnN0eWxlLnRvcCA9IGAke3N0YXRlRGlmZi5sb2NhdGlvbi55IC0g
MTV9cHhgOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGVs
ZW1lbnQuc3R5bGUubGVmdCA9IGAke3N0YXRlRGlmZi5sb2NhdGlvbi54IC0gMTV9cHhgOwotICAg
ICAgICAgICAgICAgICAgICBlbGVtZW50LnN0eWxlLnRvcCA9IGAke3N0YXRlRGlmZi5sb2NhdGlv
bi55IC0gMTN9cHhgOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbGVtZW50
LnN0eWxlLmRpc3BsYXkgPSBudWxsOwotICAgICAgICAgICAgfSwKLQotICAgICAgICB9KTsKLSAg
ICAgICAgcmV0dXJuIGA8ZGl2IGNsYXNzPSJ0b29sdGlwIGFycm93LXVwIiByZWY9IiR7dGhpcy5h
cnJvd30iPjwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0idG9vbHRpcC1jb250ZW50IiBy
ZWY9IiR7dGhpcy5yZWZ9Ij4KLSAgICAgICAgICAgIDwvZGl2PmA7Ci0gICAgfQotICAgIHNldChj
b250ZW50LCBwb2ludHMsIG9uQXJyb3dDbGljayA9IG51bGwsIHZpZXdwb3J0ID0gbnVsbCkgewot
ICAgICAgICBpZiAoIXRoaXMucmVmKSB7Ci0gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdDYW5u
b3Qgc2V0IFRvb2xUaXAgY29udGVudCwgbm8gdG9vbHRpcCBvbiB0aGUgcGFnZScpOwotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGlmICghcG9pbnRzIHx8IHBvaW50cy5s
ZW5ndGggPT0gMCkgewotICAgICAgICAgICAgY29uc29sZS5lcnJvcignVG9vbCB0aXBzIHJlcXVp
cmUgYSBsb2NhdGlvbicpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAg
IHRoaXMub25BcnJvd0NsaWNrID0gb25BcnJvd0NsaWNrOwotCi0gICAgICAgIGNvbnN0IHdpbmRv
d1dpZHRoID0gTWF0aC5tYXgoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoLCB3
aW5kb3cuaW5uZXJXaWR0aCB8fCAwKTsKLSAgICAgICAgY29uc3Qgd2luZG93SGVpZ2h0ID0gTWF0
aC5tYXgoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCwgd2luZG93LmlubmVy
SGVpZ2h0IHx8IDApOwotICAgICAgICBpZiAoIXZpZXdwb3J0KQotICAgICAgICAgICAgdmlld3Bv
cnQgPSB7Ci0gICAgICAgICAgICAgICAgeDogMCwKLSAgICAgICAgICAgICAgICB5OiAwLAotICAg
ICAgICAgICAgICAgIHdpZHRoOiB3aW5kb3dXaWR0aCwKLSAgICAgICAgICAgICAgICBoZWlnaHQ6
IHdpbmRvd0hlaWdodCwKLSAgICAgICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAg
ICBsZXQgcmVjdCA9IHZpZXdwb3J0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwotICAgICAgICAg
ICAgdmlld3BvcnQgPSB7Ci0gICAgICAgICAgICAgICAgeDogMCwKLSAgICAgICAgICAgICAgICB5
OiAwLAotICAgICAgICAgICAgICAgIHdpZHRoOiBNYXRoLm1pbih3aW5kb3dXaWR0aCwgcmVjdC53
aWR0aCksCi0gICAgICAgICAgICAgICAgaGVpZ2h0OiBNYXRoLm1pbih3aW5kb3dIZWlnaHQsIHJl
Y3QuaGVpZ2h0KSwKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH0KLSAgICAgICAgdGhpcy5yZWYu
c2V0U3RhdGUoe2NvbnRlbnQ6IGNvbnRlbnQsIHBvaW50czogcG9pbnRzLCB2aWV3cG9ydDogdmll
d3BvcnR9KTsKLSAgICB9Ci0gICAgc2V0QnlFbGVtZW50KGNvbnRlbnQsIGVsZW1lbnQsIG9wdGlv
bnMsIHZpZXdwb3J0ID0gbnVsbCkgewotICAgICAgICBjb25zdCBib3VuZCA9IGVsZW1lbnQuZ2V0
Qm91bmRpbmdDbGllbnRSZWN0KCk7Ci0gICAgICAgIGNvbnN0IG9yaWVudGF0aW9uID0gb3B0aW9u
cy5vcmllbnRhdGlvbiA/IG9wdGlvbnMub3JpZW50YXRpb24gOiB0aGlzLlZFUlRJQ0FMOwotICAg
ICAgICBjb25zdCBvbkFycm93Q2xpY2sgPSBvcHRpb25zLm9uQXJyb3dDbGljayA/IG9wdGlvbnMu
b25BcnJvd0NsaWNrIDogbnVsbDsKLQotICAgICAgICAvLyBNYW5hZ2UgdGhlIHNjcm9sbCBkZWx0
YQotICAgICAgICBsZXQgc2Nyb2xsRGVsdGEgPSAwOwotICAgICAgICBpZiAod2luZG93LmdldENv
bXB1dGVkU3R5bGUoZWxlbWVudC5vZmZzZXRQYXJlbnQpLmdldFByb3BlcnR5VmFsdWUoJ3Bvc2l0
aW9uJykgPT0gJ2ZpeGVkJykKLSAgICAgICAgICAgIHNjcm9sbERlbHRhID0gZG9jdW1lbnQuZG9j
dW1lbnRFbGVtZW50LnNjcm9sbFRvcCB8fCBkb2N1bWVudC5ib2R5LnNjcm9sbFRvcDsKLQotICAg
ICAgICBpZiAob3B0aW9ucy5vcmllbnRhdGlvbikgewotICAgICAgICAgICAgdGhpcy5zZXQoY29u
dGVudCwgWwotICAgICAgICAgICAgICAgIHt4OiBib3VuZC5yaWdodCwgeTogKGJvdW5kLnRvcCAr
IGJvdW5kLmJvdHRvbSkgLyAyICsgc2Nyb2xsRGVsdGF9LAotICAgICAgICAgICAgICAgIHt4OiBi
b3VuZC5sZWZ0LCB5OiAoYm91bmQudG9wICsgYm91bmQuYm90dG9tKSAvIDIgKyBzY3JvbGxEZWx0
YX0sCi0gICAgICAgICAgICBdLCBvbkFycm93Q2xpY2ssIHZpZXdwb3J0KTsKLSAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgIHRoaXMuc2V0KGNvbnRlbnQsIFsKLSAgICAgICAgICAgICAgICB7
eDogKGJvdW5kLnJpZ2h0ICsgYm91bmQubGVmdCkgLyAyLCB5OiBib3VuZC50b3AgKyBzY3JvbGxE
ZWx0YX0sCi0gICAgICAgICAgICAgICAge3g6IChib3VuZC5yaWdodCArIGJvdW5kLmxlZnQpIC8g
MiwgeTogYm91bmQuYm90dG9tICsgc2Nyb2xsRGVsdGF9LAotICAgICAgICAgICAgXSwgb25BcnJv
d0NsaWNrLCB2aWV3cG9ydCk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgdW5zZXQoKSB7Ci0gICAg
ICAgIGlmICh0aGlzLnJlZikKLSAgICAgICAgICAgIHRoaXMucmVmLnNldFN0YXRlKHtjb250ZW50
OiBudWxsLCBwb2ludHM6IG51bGx9KTsKLSAgICAgICAgaWYgKHRoaXMuYXJyb3cpCi0gICAgICAg
ICAgICB0aGlzLmFycm93LnNldFN0YXRlKHtkaXJlY3Rpb246IG51bGwsIHBvaW50czogbnVsbH0p
OwotICAgIH0KLSAgICBpc0luKHBvaW50KSB7Ci0gICAgICAgIHJldHVybiBpc1BvaW50SW5FbGVt
ZW50KHRoaXMucmVmLmVsZW1lbnQsIHBvaW50KSB8fCBpc1BvaW50SW5FbGVtZW50KHRoaXMuYXJy
b3cuZWxlbWVudCwgcG9pbnQpOwotICAgIH0KLX0KLQotY29uc3QgVG9vbFRpcCA9IG5ldyBfVG9v
bFRpcCgpOwotCi1leHBvcnQge1Rvb2xUaXB9OwpJbmRleDogVG9vbHMvcmVzdWx0c2RicHkvcmVz
dWx0c2RicHkvdmlldy9zdGF0aWMvbGlicmFyeS9jc3MvZG9jcy55YW1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvc3RhdGljL2xpYnJhcnkvY3NzL2Rv
Y3MueWFtbAkocmV2aXNpb24gMjY1NTMxKQorKysgVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2Ri
cHkvdmlldy9zdGF0aWMvbGlicmFyeS9jc3MvZG9jcy55YW1sCShub25leGlzdGVudCkKQEAgLTEs
MTUxMiArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0jIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECi0jIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TAotIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUgotIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotIyBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLAotIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0jIEZv
cm1hdDoKLSMgLQotIyAgICAgdGl0bGU6IG1haW5fbGV2ZWxfdGl0bGUKLSMgICAgIHN1YnM6Ci0j
ICAgICAgICAgLQotIyAgICAgICAgICAgICB0aXRsZTogMm5kX2xldmVsX3RpdGxlCi0jICAgICAg
ICAgICAgIGV4YW1wbGVzOgotIyAgICAgICAgICAgICAgICAgLQotIyAgICAgICAgICAgICAgICAg
ICAgIGRlc2NyaXB0aW9uOiBleGFtcGxlX2Rlc2NpcHRpb24KLSMgICAgICAgICAgICAgICAgICAg
ICBodG1sOiBleGFtcGxlX2h0bWwKLS0KLSAgICB0aXRsZTogVHlwb2dyYXBoeQotICAgIHN1YnM6
Ci0gICAgICAgIC0KLSAgICAgICAgICAgIHRpdGxlOiBIZWFkaW5ncwotICAgICAgICAgICAgZXhh
bXBsZXM6Ci0gICAgICAgICAgICAgICAgLQotICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlv
bjogfgotICAgICAgICAgICAgICAgICAgICBodG1sOiB8LQotICAgICAgICAgICAgICAgICAgICAg
ICAgPGgxPlRoaXMgaXMgSDE8L2gxPgotICAgICAgICAgICAgICAgICAgICAgICAgPGgyPlRoaXMg
aXMgSDI8L2gyPgotICAgICAgICAgICAgICAgICAgICAgICAgPGgzPlRoaXMgaXMgSDM8L2gzPgot
ICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlRoaXMgaXMgSDQ8L2g0PgotICAgICAgICAtCi0g
ICAgICAgICAgICB0aXRsZTogVGV4dAotICAgICAgICAgICAgZXhhbXBsZXM6Ci0gICAgICAgICAg
ICAgICAgLQotICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogfC0KLSAgICAgICAgICAg
ICAgICAgICAgICAgIFVzZSBjbGFzcyAidGV4dCIgYWxvbmcgd2l0aCBkaWZmZXJlbnQgc2l6ZSBj
bGFzcyB0byBjb250cm9sIHRoZSBmb250IHNpemUuCi0gICAgICAgICAgICAgICAgICAgIGh0bWw6
IHwtCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0Ij5EZWZhdWx0PC9k
aXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0IGh1Z2UiPlRoaXMg
aXMgSHVnZTwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dCBs
YXJnZSI+VGhpcyBpcyBMYXJnZTwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBj
bGFzcz0idGV4dCBtZWRpdW0iPlRoaXMgaXMgbWVkaXVtPC9kaXY+Ci0gICAgICAgICAgICAgICAg
ICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0IHNtYWxsIj5UaGlzIGlzIHNtYWxsPC9kaXY+Ci0gICAg
ICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0IHRpbnkiPlRoaXMgaXMgdGlueTwv
ZGl2PgotICAgICAgICAtCi0gICAgICAgICAgICB0aXRsZTogIlRleHQgYmxvY2siCi0gICAgICAg
ICAgICBleGFtcGxlczoKLSAgICAgICAgICAgICAgICAtCi0gICAgICAgICAgICAgICAgICAgIGRl
c2NyaXB0aW9uOiB8LQotICAgICAgICAgICAgICAgICAgICAgICAgVXNlIGNsYXNzICJ0ZXh0IiBh
bG9uZyB3aXRoICJibG9jayIgdG8gbWFrZSBpbmxpbmUtYmxvY2sgdGV4dCBibG9ja3MuCi0gICAg
ICAgICAgICAgICAgICAgIGh0bWw6IHwtCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNs
YXNzPSJ0ZXh0IGJsb2NrIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNz
PSJ0ZXh0IHRpbnkiPmlNYWMgMjciIChMYXRlIDIwMTIpPC9kaXY+Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dCBzbWFsbCI+aU1hYyAxMywyPC9kaXY+Ci0gICAg
ICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYg
Y2xhc3M9InRleHQgYmxvY2siPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xh
c3M9InRleHQgdGlueSI+aU1hYyAyNyIgKExhdGUgMjAxMyk8L2Rpdj4KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0IHNtYWxsIj5pTWFjIDE0LDI8L2Rpdj4KLSAg
ICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAtCi0gICAgICAgICAgICB0aXRs
ZTogUXVvdGUKLSAgICAgICAgICAgIGV4YW1wbGVzOgotICAgICAgICAgICAgICAgIC0KLSAgICAg
ICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IH4KLSAgICAgICAgICAgICAgICAgICAgaHRtbDog
fC0KLSAgICAgICAgICAgICAgICAgICAgICAgIDxwcmU+Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgSSBhbSBhIHF1b3RlCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3ByZT4KLS0KLSAg
ICB0aXRsZTogTGF5b3V0Ci0gICAgc3ViczoKLSAgICAgICAgLQotICAgICAgICAgICAgdGl0bGU6
IH4KLSAgICAgICAgICAgIGV4YW1wbGVzOgotICAgICAgICAgICAgICAgIC0KLSAgICAgICAgICAg
ICAgICAgICAgZGVzY3JpcHRpb246IH4KLSAgICAgICAgICAgICAgICAgICAgaHRtbDogfC0KLSAg
ICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdyI+Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLTEyIj4KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPGRpdiBjbGFzcz0icGxhY2Vob2xkZXIgZGltbWVyIHRpbnkiPjxwIGNsYXNzPSJs
b2FkZXIiPmNvbC0xMjwvcD48L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rp
dj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAg
ICAgPGRpdiBjbGFzcz0icm93Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNs
YXNzPSJjb2wtNiI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9
InBsYWNlaG9sZGVyIGRpbW1lciB0aW55Ij48cCBjbGFzcz0ibG9hZGVyIj5jb2wtNjwvcD48L2Rp
dj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtNiI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDxkaXYgY2xhc3M9InBsYWNlaG9sZGVyIGRpbW1lciB0aW55Ij48cCBjbGFzcz0ibG9h
ZGVyIj5jb2wtNjwvcD48L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4K
LSAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAg
PGRpdiBjbGFzcz0icm93Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNz
PSJjb2wtNCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBs
YWNlaG9sZGVyIGRpbW1lciB0aW55Ij48cCBjbGFzcz0ibG9hZGVyIj5jb2wtNDwvcD48L2Rpdj4K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtOCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDxkaXYgY2xhc3M9InBsYWNlaG9sZGVyIGRpbW1lciB0aW55Ij48cCBjbGFzcz0ibG9hZGVy
Ij5jb2wtODwvcD48L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAg
ICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgPGRp
diBjbGFzcz0icm93Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJj
b2wtMiI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBsYWNl
aG9sZGVyIGRpbW1lciB0aW55Ij48cCBjbGFzcz0ibG9hZGVyIj5jb2wtMjwvcD48L2Rpdj4KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA8ZGl2IGNsYXNzPSJjb2wtMiI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDxkaXYgY2xhc3M9InBsYWNlaG9sZGVyIGRpbW1lciB0aW55Ij48cCBjbGFzcz0ibG9hZGVyIj5j
b2wtMjwvcD48L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtOCI+Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBsYWNlaG9sZGVyIGRpbW1lciB0aW55Ij48
cCBjbGFzcz0ibG9hZGVyIj5jb2wtODwvcD48L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAg
ICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA8ZGl2IGNsYXNzPSJjb2wtMSI+PGRpdiBjbGFzcz0icGxhY2Vob2xkZXIgZGltbWVyIHRpbnki
PjxwIGNsYXNzPSJsb2FkZXIiPmNvbC0xPC9wPjwvZGl2PjwvZGl2PgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC0xIj48ZGl2IGNsYXNzPSJwbGFjZWhvbGRlciBk
aW1tZXIgdGlueSI+PHAgY2xhc3M9ImxvYWRlciI+Y29sLTE8L3A+PC9kaXY+PC9kaXY+Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLTEiPjxkaXYgY2xhc3M9InBs
YWNlaG9sZGVyIGRpbW1lciB0aW55Ij48cCBjbGFzcz0ibG9hZGVyIj5jb2wtMTwvcD48L2Rpdj48
L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtMSI+PGRp
diBjbGFzcz0icGxhY2Vob2xkZXIgZGltbWVyIHRpbnkiPjxwIGNsYXNzPSJsb2FkZXIiPmNvbC0x
PC9wPjwvZGl2PjwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9
ImNvbC0xIj48ZGl2IGNsYXNzPSJwbGFjZWhvbGRlciBkaW1tZXIgdGlueSI+PHAgY2xhc3M9Imxv
YWRlciI+Y29sLTE8L3A+PC9kaXY+PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
PGRpdiBjbGFzcz0iY29sLTEiPjxkaXYgY2xhc3M9InBsYWNlaG9sZGVyIGRpbW1lciB0aW55Ij48
cCBjbGFzcz0ibG9hZGVyIj5jb2wtMTwvcD48L2Rpdj48L2Rpdj4KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtMSI+PGRpdiBjbGFzcz0icGxhY2Vob2xkZXIgZGlt
bWVyIHRpbnkiPjxwIGNsYXNzPSJsb2FkZXIiPmNvbC0xPC9wPjwvZGl2PjwvZGl2PgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC0xIj48ZGl2IGNsYXNzPSJwbGFj
ZWhvbGRlciBkaW1tZXIgdGlueSI+PHAgY2xhc3M9ImxvYWRlciI+Y29sLTE8L3A+PC9kaXY+PC9k
aXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLTEiPjxkaXYg
Y2xhc3M9InBsYWNlaG9sZGVyIGRpbW1lciB0aW55Ij48cCBjbGFzcz0ibG9hZGVyIj5jb2wtMTwv
cD48L2Rpdj48L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJj
b2wtMSI+PGRpdiBjbGFzcz0icGxhY2Vob2xkZXIgZGltbWVyIHRpbnkiPjxwIGNsYXNzPSJsb2Fk
ZXIiPmNvbC0xPC9wPjwvZGl2PjwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxk
aXYgY2xhc3M9ImNvbC0xIj48ZGl2IGNsYXNzPSJwbGFjZWhvbGRlciBkaW1tZXIgdGlueSI+PHAg
Y2xhc3M9ImxvYWRlciI+Y29sLTE8L3A+PC9kaXY+PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPGRpdiBjbGFzcz0iY29sLTEiPjxkaXYgY2xhc3M9InBsYWNlaG9sZGVyIGRpbW1l
ciB0aW55Ij48cCBjbGFzcz0ibG9hZGVyIj5jb2wtMTwvcD48L2Rpdj48L2Rpdj4KLSAgICAgICAg
ICAgICAgICAgICAgICAgIDwvZGl2PgotCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNs
YXNzPSJyb3ciPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1z
LTEyIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icGxhY2Vo
b2xkZXIgZGltbWVyIHRpbnkiPjxwIGNsYXNzPSJsb2FkZXIiPmNvbC1zLTEyPC9wPjwvZGl2Pgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAg
ICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ciPgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1zLTYiPgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwbGFjZWhvbGRlciBkaW1tZXIgdGlu
eSI+PHAgY2xhc3M9ImxvYWRlciI+Y29sLXMtNjwvcD48L2Rpdj4KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNz
PSJjb2wtcy02Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0i
cGxhY2Vob2xkZXIgZGltbWVyIHRpbnkiPjxwIGNsYXNzPSJsb2FkZXIiPmNvbC1zLTY8L3A+PC9k
aXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAg
ICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdyI+
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLXMtNCI+Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBsYWNlaG9sZGVyIGRpbW1l
ciB0aW55Ij48cCBjbGFzcz0ibG9hZGVyIj5jb2wtcy00PC9wPjwvZGl2PgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYg
Y2xhc3M9ImNvbC1zLTgiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNs
YXNzPSJwbGFjZWhvbGRlciBkaW1tZXIgdGlueSI+PHAgY2xhc3M9ImxvYWRlciI+Y29sLXMtODwv
cD48L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAg
ICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0i
cm93Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtcy0yIj4K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icGxhY2Vob2xkZXIg
ZGltbWVyIHRpbnkiPjxwIGNsYXNzPSJsb2FkZXIiPmNvbC1zLTI8L3A+PC9kaXY+Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
PGRpdiBjbGFzcz0iY29sLXMtMiI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxk
aXYgY2xhc3M9InBsYWNlaG9sZGVyIGRpbW1lciB0aW55Ij48cCBjbGFzcz0ibG9hZGVyIj5jb2wt
cy0yPC9wPjwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1zLTgiPgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwbGFjZWhvbGRlciBkaW1tZXIgdGlueSI+
PHAgY2xhc3M9ImxvYWRlciI+Y29sLXMtODwvcD48L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotLQotICAgIHRp
dGxlOiBFbGVtZW50cwotICAgIHN1YnM6Ci0gICAgICAgIC0KLSAgICAgICAgICAgIHRpdGxlOiBU
b3BiYXIKLSAgICAgICAgICAgIGV4YW1wbGVzOgotICAgICAgICAgICAgICAgIC0KLSAgICAgICAg
ICAgICAgICAgICAgZGVzY3JpcHRpb246IH4KLSAgICAgICAgICAgICAgICAgICAgaHRtbDogfC0K
LSAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRvcGJhciI+Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGUiPk15IEFwcDwvZGl2PgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbnMiPgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsaXN0Ij4KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Iml0ZW0iPgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDxhPmxpbmsgMTwvYT4KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPGRpdiBjbGFzcz0iaXRlbSI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPGE+bGluayAyPC9hPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJp
dGVtIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YT5saW5rIDM8
L2E+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgLQotICAg
ICAgICAgICAgdGl0bGU6IFNlY3Rpb24KLSAgICAgICAgICAgIGV4YW1wbGVzOgotICAgICAgICAg
ICAgICAgIC0KLSAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IH4KLSAgICAgICAgICAg
ICAgICAgICAgaHRtbDogfC0KLSAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNv
bnRlbnQiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24i
PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkZXIiPgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGUiPgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbnMiPgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Imxpc3QiPgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpdGVtIj4KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbiAxCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpdGVtIj4KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbiAyCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwv
ZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50
Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPkxvcmVtIGlwc3VtIGRv
bG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBhZGlwaXNjaW5nIGVsaXQsIHNlZCBkbyBlaXVzbW9k
IHRlbXBvciBpbmNpZGlkdW50IHV0IGxhYm9yZSBldCBkb2xvcmUgbWFnbmEgYWxpcXVhLiBVdCBl
bmltIGFkIG1pbmltIHZlbmlhbSwgcXVpcyBub3N0cnVkIGV4ZXJjaXRhdGlvbiB1bGxhbWNvIGxh
Ym9yaXMgbmlzaSB1dCBhbGlxdWlwIGV4IGVhIGNvbW1vZG8gY29uc2VxdWF0LiBEdWlzIGF1dGUg
aXJ1cmUgZG9sb3IgaW4gcmVwcmVoZW5kZXJpdCBpbiB2b2x1cHRhdGUgdmVsaXQgZXNzZSBjaWxs
dW0gZG9sb3JlIGV1IGZ1Z2lhdCBudWxsYSBwYXJpYXR1ci4gRXhjZXB0ZXVyIHNpbnQgb2NjYWVj
YXQgY3VwaWRhdGF0IG5vbiBwcm9pZGVudCwgc3VudCBpbiBjdWxwYSBxdWkgb2ZmaWNpYSBkZXNl
cnVudCBtb2xsaXQgYW5pbSBpZCBlc3QgbGFib3J1bS48L3A+Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2
IGNsYXNzPSJhY3Rpb25zIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxi
dXR0b24gY2xhc3M9ImJ1dHRvbiI+QnV0dG9uIDE8L2J1dHRvbj4KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImJ1dHRvbiI+QnV0dG9uIDI8L2J1dHRv
bj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAg
ICAgICAgICAgICAgICAtCi0gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB8LQotICAg
ICAgICAgICAgICAgICAgICAgICAgVXNlICJhcnRpY2xlIiBtb2RpZmllciB0byBnZXQgcmlkIG9m
IHRoZSBib3JkZXI6Ci0gICAgICAgICAgICAgICAgICAgIGh0bWw6IHwtCi0gICAgICAgICAgICAg
ICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uIGFydGljbGUiPgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkZXIiPgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGUiPgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFRpdGxlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9
ImFjdGlvbnMiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYg
Y2xhc3M9Imxpc3QiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA8ZGl2IGNsYXNzPSJpdGVtIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGFjdGlvbiAxCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA8ZGl2IGNsYXNzPSJpdGVtIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGFjdGlvbiAyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDxwPkxvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1
ciBhZGlwaXNjaW5nIGVsaXQsIHNlZCBkbyBlaXVzbW9kIHRlbXBvciBpbmNpZGlkdW50IHV0IGxh
Ym9yZSBldCBkb2xvcmUgbWFnbmEgYWxpcXVhLiBVdCBlbmltIGFkIG1pbmltIHZlbmlhbSwgcXVp
cyBub3N0cnVkIGV4ZXJjaXRhdGlvbiB1bGxhbWNvIGxhYm9yaXMgbmlzaSB1dCBhbGlxdWlwIGV4
IGVhIGNvbW1vZG8gY29uc2VxdWF0LiBEdWlzIGF1dGUgaXJ1cmUgZG9sb3IgaW4gcmVwcmVoZW5k
ZXJpdCBpbiB2b2x1cHRhdGUgdmVsaXQgZXNzZSBjaWxsdW0gZG9sb3JlIGV1IGZ1Z2lhdCBudWxs
YSBwYXJpYXR1ci4gRXhjZXB0ZXVyIHNpbnQgb2NjYWVjYXQgY3VwaWRhdGF0IG5vbiBwcm9pZGVu
dCwgc3VudCBpbiBjdWxwYSBxdWkgb2ZmaWNpYSBkZXNlcnVudCBtb2xsaXQgYW5pbSBpZCBlc3Qg
bGFib3J1bS48L3A+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY3Rpb25zIj4KLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImJ1dHRvbiI+QnV0
dG9uIDE8L2J1dHRvbj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0
b24gY2xhc3M9ImJ1dHRvbiI+QnV0dG9uIDI8L2J1dHRvbj4KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0g
ICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgLQotICAgICAgICAgICAgdGl0
bGU6IFBsYWNlaG9sZGVyCi0gICAgICAgICAgICBleGFtcGxlczoKLSAgICAgICAgICAgICAgICAt
Ci0gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB+Ci0gICAgICAgICAgICAgICAgICAg
IGh0bWw6IHwtCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwbGFjZWhvbGRl
ciI+IDxwIGNsYXNzPSJsb2FkZXIiPnBsYWNlaG9sZGVyPC9wPiA8L2Rpdj4KLSAgICAgICAgICAg
ICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBsYWNlaG9sZGVyIHNtYWxsIj48cCBjbGFzcz0ibG9h
ZGVyIj5wbGFjZWhvbGRlciBzbWFsbDwvcD4gPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAg
ICA8ZGl2IGNsYXNzPSJwbGFjZWhvbGRlciB0aW55Ij48cCBjbGFzcz0ibG9hZGVyIj5wbGFjZWhv
bGRlciB0aW55PC9wPjwvZGl2PgotICAgICAgICAgICAgICAgIC0KLSAgICAgICAgICAgICAgICAg
ICAgZGVzY3JpcHRpb246IHwtCi0gICAgICAgICAgICAgICAgICAgICAgICBVc2UgImRpbW1lciIg
bW9kaWZpZXIgdG8gbWFrZSB0aGUgcGxhY2Vob2xkZXIgZGFyawotICAgICAgICAgICAgICAgICAg
ICBodG1sOiB8LQotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icGxhY2Vob2xk
ZXIgZGltbWVyIj4gPHAgY2xhc3M9ImxvYWRlciI+cGxhY2Vob2xkZXI8L3A+IDwvZGl2PgotICAg
ICAgICAtCi0gICAgICAgICAgICB0aXRsZTogTG9hZGVyCi0gICAgICAgICAgICBleGFtcGxlczoK
LSAgICAgICAgICAgICAgICAtCi0gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBTaXpl
Ci0gICAgICAgICAgICAgICAgICAgIGh0bWw6IHwtCi0gICAgICAgICAgICAgICAgICAgICAgICA8
ZGl2IGNsYXNzPSJsb2FkZXIiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xh
c3M9InNwaW5uZXIgaHVnZSI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3Bpbm5lciBsYXJnZSI+Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPGRpdiBjbGFzcz0ic3Bpbm5lciI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3Bpbm5lciBz
bWFsbCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3Bpbm5lciB0aW55Ij4KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAg
ICAgICAgICAgICAgIC0KLSAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IENvbG9yCi0g
ICAgICAgICAgICAgICAgICAgIGh0bWw6IHwtCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2
IGNsYXNzPSJsb2FkZXIiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9
InNwaW5uZXIiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNwaW5uZXIgYmx1ZSI+Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRp
diBjbGFzcz0ic3Bpbm5lciBwdXJwbGUiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwv
ZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNwaW5uZXIgZ3Jl
ZW4iPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNwaW5uZXIgb3JhbmdlIj4KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNs
YXNzPSJzcGlubmVyIHJlZCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0g
ICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAtCi0gICAgICAg
ICAgICAgICAgICAgIGRlc2NyaXB0aW9uOgotICAgICAgICAgICAgICAgICAgICAgICAgV2l0aCBQ
bGFjZWhvbGRlcgotICAgICAgICAgICAgICAgICAgICBodG1sOiB8LQotICAgICAgICAgICAgICAg
ICAgICAgICAgPGRpdiBjbGFzcz0icGxhY2Vob2xkZXIgZGltbWVyIj4KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsb2FkZXIiPgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA8ZGl2IGNsYXNzPSJzcGlubmVyIj4KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAg
ICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgLQotICAgICAgICAgICAgdGl0bGU6
IFByb2dyZXNzIGJhcgotICAgICAgICAgICAgZXhhbXBsZXM6Ci0gICAgICAgICAgICAgICAgLQot
ICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogRGlmZmVyZW50IGNvbG9ycyB3aXRoIG1p
eGluCi0gICAgICAgICAgICAgICAgICAgIGh0bWw6IHwtCi0gICAgICAgICAgICAgICAgICAgICAg
ICA8ZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByb2dyZXNz
LWJhci1jb250YWluZXIiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNs
YXNzPSJwcm9ncmVzcy1iYXIiIHN0eWxlPSJ3aWR0aDoyNSUiPjI1JTwvZGl2PgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+
Ci0gICAgICAgICAgICAgICAgICAgICAgICA8aHI+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8
ZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByb2dyZXNzLWJh
ci1jb250YWluZXIiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNz
PSJwcm9ncmVzcy1iYXIgc3VjY2VzcyIgc3R5bGU9IndpZHRoOjUwJSI+NTAlPC9kaXY+Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8
L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxocj4KLSAgICAgICAgICAgICAgICAgICAg
ICAgIDxkaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJvZ3Jl
c3MtYmFyLWNvbnRhaW5lciI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYg
Y2xhc3M9InByb2dyZXNzLWJhciBmYWlsZWQiIHN0eWxlPSJ3aWR0aDo3NSUiPjc1JTwvZGl2Pgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAg
ICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8aHI+Ci0gICAgICAgICAgICAgICAg
ICAgICAgICA8ZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBy
b2dyZXNzLWJhci1jb250YWluZXIiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8
ZGl2IGNsYXNzPSJwcm9ncmVzcy1iYXIgZXJyb3IiIHN0eWxlPSJ3aWR0aDoxMDAlIj4xMDAlPC9k
aXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAg
ICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAtCi0gICAgICAgICAgICAgICAgICAgIGRl
c2NyaXB0aW9uOiBNdWxpdCBiYXIKLSAgICAgICAgICAgICAgICAgICAgaHRtbDogfC0KLSAgICAg
ICAgICAgICAgICAgICAgICAgIDxkaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDxkaXYgY2xhc3M9InByb2dyZXNzLWJhci1jb250YWluZXIiPgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJvZ3Jlc3MtYmFyIiBzdHlsZT0id2lkdGg6
MjUlIj4yNSU8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYg
Y2xhc3M9InByb2dyZXNzLWJhciBlcnJvciIgc3R5bGU9IndpZHRoOjc1JSI+NzUlPC9kaXY+Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAg
ICAgICAgPC9kaXY+Ci0gICAgICAgIC0KLSAgICAgICAgICAgIHRpdGxlOiBMaXN0Ci0gICAgICAg
ICAgICBleGFtcGxlczoKLSAgICAgICAgICAgICAgICAtCi0gICAgICAgICAgICAgICAgICAgIGRl
c2NyaXB0aW9uOiB+Ci0gICAgICAgICAgICAgICAgICAgIGh0bWw6IHwtCi0gICAgICAgICAgICAg
ICAgICAgICAgICA8ZGl2IGNsYXNzPSJsaXN0Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA8ZGl2IGNsYXNzPSJpdGVtIj5pdGVtIDE8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA8ZGl2IGNsYXNzPSJpdGVtIj5pdGVtIDI8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA8ZGl2IGNsYXNzPSJkaXZpZGVyIj48L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA8ZGl2IGNsYXNzPSJpdGVtIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPGRpdiBjbGFzcz0ibGlzdCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA8ZGl2IGNsYXNzPSJpdGVtIj5pdGVtIDEgbHYyPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpdGVtIj5pdGVtIDIgbHYyPC9kaXY+Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkaXZpZGVyIj48L2Rp
dj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Iml0ZW0i
PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Imxp
c3QiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNs
YXNzPSJpdGVtIj5pdGVtIDEgbHYzPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Iml0ZW0iPml0ZW0gMiBsdjM8L2Rpdj4KLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAg
ICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAtCi0gICAgICAgICAgICB0aXRsZTogU2lk
ZWJhcgotICAgICAgICAgICAgZXhhbXBsZXM6Ci0gICAgICAgICAgICAgICAgLQotICAgICAgICAg
ICAgICAgICAgICBkZXNjcmlwdGlvbjogfgotICAgICAgICAgICAgICAgICAgICBodG1sOiB8LQot
ICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2lkZWJhciI+Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGVyIj4KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGUiPgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVGl0bGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9k
aXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAg
ICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1haW4i
PgotICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgIC0KLSAgICAgICAgICAg
IHRpdGxlOiBEcmF3ZXIKLSAgICAgICAgICAgIGV4YW1wbGVzOgotICAgICAgICAgICAgICAgIC0K
LSAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IH4KLSAgICAgICAgICAgICAgICAgICAg
aHRtbDogfC0KLSAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9ImJvdHRvbS1kcmF3ZXIi
IGNsYXNzPSJkcmF3ZXIiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9
ImhlYWRlciI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFj
dGlvbnMiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iamF2
YXNjcmlwdDp2b2lkKDApIiBvbmNsaWNrPSJjbG9zZURyYXdlckZhY3RvcnkoJ2JvdHRvbS1kcmF3
ZXInKSgpIj5DbG9zZTwvYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAg
ICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9ImxlZnQtZHJhd2Vy
IiBjbGFzcz0iZHJhd2VyIGxlZnQiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYg
Y2xhc3M9ImhlYWRlciI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xh
c3M9ImFjdGlvbnMiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJl
Zj0iamF2YXNjcmlwdDp2b2lkKDApIiBvbmNsaWNrPSJjbG9zZURyYXdlckZhY3RvcnkoJ2xlZnQt
ZHJhd2VyJykoKSI+Q2xvc2U8L2E+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwv
ZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAg
ICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJyaWdodC1k
cmF3ZXIiIGNsYXNzPSJkcmF3ZXIgcmlnaHQiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDxkaXYgY2xhc3M9ImhlYWRlciI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxk
aXYgY2xhc3M9ImFjdGlvbnMiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PGEgaHJlZj0iamF2YXNjcmlwdDp2b2lkKDApIiBvbmNsaWNrPSJjbG9zZURyYXdlckZhY3Rvcnko
J3JpZ2h0LWRyYXdlcicpKCkiPkNsb3NlPC9hPgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAg
ICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0i
bGVmdC1kcmF3ZXItdW5kZXItdG9vbGJhciIgY2xhc3M9ImRyYXdlciBsZWZ0IHVuZGVyLXRvcGJh
ci13aXRoLWFjdGlvbnMiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9
ImhlYWRlciI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFj
dGlvbnMiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iamF2
YXNjcmlwdDp2b2lkKDApIiBvbmNsaWNrPSJjbG9zZURyYXdlckZhY3RvcnkoJ2xlZnQtZHJhd2Vy
LXVuZGVyLXRvb2xiYXInKSgpO2Nsb3NlVG9wYmFyKCkiPkNsb3NlPC9hPgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8
L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAg
ICAgICAgPGRpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJi
dXR0b24iIG9uY2xpY2s9Im9wZW5EcmF3ZXJGYWN0b3J5KCdib3R0b20tZHJhd2VyJykoKSI+T3Bl
biBib3R0b208L2J1dHRvbj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNs
YXNzPSJidXR0b24iIG9uY2xpY2s9Im9wZW5EcmF3ZXJGYWN0b3J5KCdsZWZ0LWRyYXdlcicpKCki
Pk9wZW4gbGVmdDwvYnV0dG9uPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24g
Y2xhc3M9ImJ1dHRvbiIgb25jbGljaz0ib3BlbkRyYXdlckZhY3RvcnkoJ3JpZ2h0LWRyYXdlcicp
KCkiPk9wZW4gcmlnaHQ8L2J1dHRvbj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0
dG9uIGNsYXNzPSJidXR0b24iIG9uY2xpY2s9Im9wZW5EcmF3ZXJGYWN0b3J5KCdsZWZ0LWRyYXdl
ci11bmRlci10b29sYmFyJykoKTtvcGVuVG9wYmFyKCkiPk9wZW4gbGVmdCB1bmRlciB0b3BiYXI8
L2J1dHRvbj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAg
ICAgICAgICAgPHNjcmlwdD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjbG9z
ZURyYXdlckZhY3RvcnkgPSAoaWQpID0+IChlKSA9PiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChp
ZCkuY2xhc3NMaXN0LnJlbW92ZSgiZGlzcGxheSIpOwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IG9wZW5EcmF3ZXJGYWN0b3J5ID0gKGlkKSA9PiAoZSkgPT4gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoaWQpLmNsYXNzTGlzdC5hZGQoImRpc3BsYXkiKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBjbG9zZVRvcGJhciA9ICgpID0+IHsgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInRvcGJhciIpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSIgfTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBvcGVuVG9wYmFyID0gKCkgPT4gewotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidG9wYmFyIikuc3R5
bGUuZGlzcGxheSA9ICJmbGV4IjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwotICAg
ICAgICAgICAgICAgICAgICAgICAgPC9zY3JpcHQ+Ci0gICAgICAgIC0KLSAgICAgICAgICAgIHRp
dGxlOiBUYWJsZQotICAgICAgICAgICAgZXhhbXBsZXM6Ci0gICAgICAgICAgICAgICAgLQotICAg
ICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogfgotICAgICAgICAgICAgICAgICAgICBodG1s
OiB8LQotICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSI+Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPHRoZWFkPgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA8dHI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+dGl0
bGUgMTwvdGg+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+dGl0bGUg
MjwvdGg+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+dGl0bGUgMzwv
dGg+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+dGl0bGUgNDwvdGg+
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPC90aGVhZD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHk+
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDx0ZD5jb2wgMTwvdGQ+Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA8dGQ+Y29sIDI8L3RkPgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPHRkPmNvbCAzPC90ZD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDx0ZD5jb2wgNDwvdGQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDx0ZD5jb2wgMTwvdGQ+Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA8dGQ+Y29sIDI8L3RkPgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPHRkPmNvbCAzPC90ZD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDx0ZD5jb2wgNDwvdGQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDx0ZD5jb2wgMTwvdGQ+Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA8dGQ+Y29sIDI8L3RkPgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPHRkPmNvbCAzPC90ZD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDx0ZD5jb2wgNDwvdGQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDx0ZD5jb2wgMTwvdGQ+Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA8dGQ+Y29sIDI8L3RkPgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPHRkPmNvbCAzPC90ZD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDx0ZD5jb2wgNDwvdGQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT4KLSAgICAgICAgICAgICAgICAg
ICAgICAgIDwvdGFibGU+Ci0gICAgICAgICAgICAgICAgLQotICAgICAgICAgICAgICAgICAgICBk
ZXNjcmlwdGlvbjogZnVsbC13aWR0aAotICAgICAgICAgICAgICAgICAgICBodG1sOiB8LQotICAg
ICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSBmdWxsLXdpZHRoIj4KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDx0cj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD50
aXRsZSAxPC90aD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD50aXRs
ZSAyPC90aD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD50aXRsZSAz
PC90aD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD50aXRsZSA0PC90
aD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA8L3RoZWFkPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9k
eT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPHRkPmNvbCAxPC90ZD4KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDx0ZD5jb2wgMjwvdGQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA8dGQ+Y29sIDM8L3RkPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPHRkPmNvbCA0PC90ZD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90
cj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPHRkPmNvbCAxPC90ZD4KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDx0ZD5jb2wgMjwvdGQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA8dGQ+Y29sIDM8L3RkPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPHRkPmNvbCA0PC90ZD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90
cj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPHRkPmNvbCAxPC90ZD4KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDx0ZD5jb2wgMjwvdGQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA8dGQ+Y29sIDM8L3RkPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPHRkPmNvbCA0PC90ZD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90
cj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPHRkPmNvbCAxPC90ZD4KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDx0ZD5jb2wgMjwvdGQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA8dGQ+Y29sIDM8L3RkPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPHRkPmNvbCA0PC90ZD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90
cj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PgotICAgICAgICAgICAgICAg
ICAgICAgICAgPC90YWJsZT4KLSAgICAgICAgICAgICAgICAtCi0gICAgICAgICAgICAgICAgICAg
IGRlc2NyaXB0aW9uOiBTdHJpcHBlZAotICAgICAgICAgICAgICAgICAgICBodG1sOiB8LQotICAg
ICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSBmdWxsLXdpZHRoIHN0cmlw
cGVkIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDx0cj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDx0aD50aXRsZSAxPC90aD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDx0aD50aXRsZSAyPC90aD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0
aD50aXRsZSAzPC90aD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD50
aXRsZSA0PC90aD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDx0Ym9keT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPmNvbCAxPC90ZD4KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5jb2wgMjwvdGQ+Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA8dGQ+Y29sIDM8L3RkPgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPHRkPmNvbCA0PC90ZD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPC90cj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPmNvbCAxPC90ZD4KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5jb2wgMjwvdGQ+Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA8dGQ+Y29sIDM8L3RkPgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPHRkPmNvbCA0PC90ZD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPC90cj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPmNvbCAxPC90ZD4KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5jb2wgMjwvdGQ+Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA8dGQ+Y29sIDM8L3RkPgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPHRkPmNvbCA0PC90ZD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPC90cj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPmNvbCAxPC90ZD4KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5jb2wgMjwvdGQ+Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA8dGQ+Y29sIDM8L3RkPgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPHRkPmNvbCA0PC90ZD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPC90cj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PgotICAgICAg
ICAgICAgICAgICAgICAgICAgPC90YWJsZT4KLSAgICAgICAgLQotICAgICAgICAgICAgdGl0bGU6
IElucHV0cwotICAgICAgICAgICAgZXhhbXBsZXM6Ci0gICAgICAgICAgICAgICAgLQotICAgICAg
ICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogSW5wdXQKLSAgICAgICAgICAgICAgICAgICAgaHRt
bDogfC0KLSAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImlucHV0Ij4KLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgcmVxdWlyZWQvPgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5UZXh0IGZpZWxkMTwvbGFiZWw+Ci0gICAg
ICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYg
Y2xhc3M9InJvdyI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29s
LTYiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbnB1dCI+
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIg
cmVxdWlyZWQvPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlRl
eHQgZmllbGQyPC9sYWJlbD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPGRpdiBjbGFzcz0iY29sLTYiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA8ZGl2IGNsYXNzPSJpbnB1dCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA8ZGl2IGNsYXNzPSJwcmVmaXgiPjxwPisxPC9wPjwvZGl2PgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIHJlcXVpcmVkLz4KLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5UZXh0IGZpZWxkMzwvbGFiZWw+
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAg
ICAgICAgICAgICAgLQotICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogU2xpZGVycwot
ICAgICAgICAgICAgICAgICAgICBodG1sOiB8LQotICAgICAgICAgICAgICAgICAgICAgICAgPGRp
diBjbGFzcz0icm93Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJj
b2wtNiI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImlucHV0
Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5SYW5nZSBzbGlk
ZXI8L2xhYmVsPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5
cGU9InJhbmdlIiBtaW49IjAiIG1heD0iMTAwIiB2YWx1ZT0iMCIvPgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9Im51bWJlciIgbWluPSIwIiBtYXg9IjEw
MCIgdmFsdWU9IjAiLz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPGRpdiBjbGFzcz0iY29sLTYiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA8ZGl2IGNsYXNzPSJpbnB1dCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA8aW5wdXQgdHlwZT0icmFuZ2UiIG1pbj0iMCIgbWF4PSIxMDAiICAgIHZhbHVlPSI4MCIvPgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9Im51bWJlciIg
bWluPSIwIiBtYXg9IjEwMCIgdmFsdWU9IjgwIi8+Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAg
ICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNs
YXNzPSJpbnB1dCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPkRvdWJsZSBy
YW5nZSBpbnB1dDwvbGFiZWw+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFz
cz0iZG91YmxlLXJhbmdlIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0
IHR5cGU9Im51bWJlciIgbWluPSIwIiBtYXg9IjEwMCIgICAgdmFsdWU9IjIwIi8+Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJhbmdlIj4KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJyYW5nZSIgbWluPSIwIiBtYXg9
IjEwMCIgICAgdmFsdWU9IjIwIi8+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA8aW5wdXQgdHlwZT0icmFuZ2UiIG1pbj0iMCIgbWF4PSIxMDAiICAgIHZhbHVlPSI3MCIvPgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9Im51bWJlciIgbWluPSIwIiBtYXg9IjEwMCIgICAg
dmFsdWU9IjcwIi8+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAg
ICAgICAgICAgICAgICAgICA8L2Rpdj4KLQotICAgICAgICAgICAgICAgIC0KLSAgICAgICAgICAg
ICAgICAgICAgZGVzY3JpcHRpb246IE51bWJlcgotICAgICAgICAgICAgICAgICAgICBodG1sOiB8
LQotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaW5wdXQiPgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJudW1iZXIiIHJlcXVpcmVkIG1pbj0iMCIg
bWF4PSIxMDAiLz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+TnVtYmVyPC9s
YWJlbD4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAg
ICAgICAgPGRpdiBjbGFzcz0iaW5wdXQiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxp
bnB1dCB0eXBlPSJudW1iZXIiIHJlcXVpcmVkIG1pbj0iMCIgbWF4PSIxMCIgdmFsdWU9IjExIi8+
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPk51bWJlciBvdXQgb2YgcmFuZ2U8
L2xhYmVsPgotICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAg
LQotICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogU2VsZWN0Ci0gICAgICAgICAgICAg
ICAgICAgIGh0bWw6IHwtCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbnB1
dCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCByZXF1aXJlZD4KLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbj48L29wdGlvbj4KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbj5vcHRpb24gMTwvb3B0aW9uPgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uPm9wdGlvbiAyPC9vcHRpb24+Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24+b3B0aW9uIDM8L29wdGlvbj4KLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD4KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA8bGFiZWw+U2VsZWN0PC9sYWJlbD4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2
PgotICAgICAgICAgICAgICAgIC0KLSAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IFN3
aXRjaAotICAgICAgICAgICAgICAgICAgICBodG1sOiB8LQotICAgICAgICAgICAgICAgICAgICAg
ICAgPGRpdiBjbGFzcz0iaW5wdXQiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJl
bD5Td2l0Y2gxPC9sYWJlbD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xh
c3M9InN3aXRjaCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBl
PSJjaGVja2JveCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNz
PSJzbGlkZXIiPjwvc3Bhbj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPgot
ICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8
ZGl2IGNsYXNzPSJpbnB1dCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlN3
aXRjaDI8L2xhYmVsPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0i
c3dpdGNoIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImNo
ZWNrYm94Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNs
aWRlciI+PC9zcGFuPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+Ci0gICAg
ICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLQotICAgICAgICAgICAgICAgIC0KLSAgICAgICAg
ICAgICAgICAgICAgZGVzY3JpcHRpb246IE1peGluCi0gICAgICAgICAgICAgICAgICAgIGh0bWw6
IHwtCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbnB1dCI+Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIHJlcXVpcmVkIGRpc2FibGVk
Lz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+RGlzYWJsZWQ8L2xhYmVsPgot
ICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8
ZGl2IGNsYXNzPSJpbnB1dCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5
cGU9InRleHQiIHJlcXVpcmVkIGRpc2FibGVkIHZhbHVlPSJJIGFtIGRpc2FibGVkIi8+Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPkRpc2FibGVkIHdpdGggZXhpc3RpbmcgdmFs
dWU8L2xhYmVsPgotICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAg
ICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbnB1dCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPGlucHV0IGNsYXNzPSJpbnZhbGlkIiB0eXBlPSJ0ZXh0IiByZXF1aXJlZCB2YWx1ZT0idXNl
IGludmFsaWQgbWl4aW4gdG8gZm9yY2UgaW52YWxpZCBzdHlsZSIvPgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDxsYWJlbD5JbnZhbGlkPC9sYWJlbD4KLSAgICAgICAgICAgICAgICAgICAg
ICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaW5wdXQiPgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5JbnZhbGlkIFJhbmdlIHNsaWRlcjwv
bGFiZWw+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPSJpbnZhbGlk
IiB0eXBlPSJyYW5nZSIgbWluPSIwIiBtYXg9IjEwMCIgdmFsdWU9IjEwMSIvPgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJudW1iZXIiIG1pbj0iMCIgbWF4PSIxMDAi
IHZhbHVlPSIxMDEiLz4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotCi0gICAgICAg
IC0KLSAgICAgICAgICAgIHRpdGxlOiBCdXR0b24KLSAgICAgICAgICAgIGV4YW1wbGVzOgotICAg
ICAgICAgICAgICAgIC0KLSAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IH4KLSAgICAg
ICAgICAgICAgICAgICAgaHRtbDogfC0KLSAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24g
Y2xhc3M9ImJ1dHRvbiI+RGVmYXVsdDwvYnV0dG9uPgotICAgICAgICAgICAgICAgICAgICAgICAg
PGJ1dHRvbiBjbGFzcz0iYnV0dG9uIHByaW1hcnkiPlByaW1hcnk8L2J1dHRvbj4KLSAgICAgICAg
ICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImJ1dHRvbiBkYW5nZXIiPkRhbmdlcjwvYnV0
dG9uPgotICAgICAgICAgICAgICAgIC0KLSAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246
IFNpemUKLSAgICAgICAgICAgICAgICAgICAgaHRtbDogfC0KLSAgICAgICAgICAgICAgICAgICAg
ICAgIDxidXR0b24gY2xhc3M9ImJ1dHRvbiBodWdlIj5odWdlPC9idXR0b24+Ci0gICAgICAgICAg
ICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJidXR0b24gbGFyZ2UiPmxhcmdlPC9idXR0b24+
Ci0gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJidXR0b24gbWVkaXVtIj5t
ZWRpdW08L2J1dHRvbj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImJ1
dHRvbiI+c21hbGw8L2J1dHRvbj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xh
c3M9ImJ1dHRvbiB0aW55Ij50aW55PC9idXR0b24+Ci0gICAgICAgICAgICAgICAgLQotICAgICAg
ICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogRGlzYWJsZWQKLSAgICAgICAgICAgICAgICAgICAg
aHRtbDogfC0KLSAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImJ1dHRvbiIg
ZGlzYWJsZWQ+RGVmYXVsdDwvYnV0dG9uPgotICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRv
biBjbGFzcz0iYnV0dG9uIHByaW1hcnkiIGRpc2FibGVkPlByaW1hcnk8L2J1dHRvbj4KLSAgICAg
ICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImJ1dHRvbiBkYW5nZXIiIGRpc2FibGVk
PkRhbmdlcjwvYnV0dG9uPgotICAgICAgICAtCi0gICAgICAgICAgICB0aXRsZTogU3dpdGNoCi0g
ICAgICAgICAgICBleGFtcGxlczoKLSAgICAgICAgICAgICAgICAtCi0gICAgICAgICAgICAgICAg
ICAgIGRlc2NyaXB0aW9uOiB+Ci0gICAgICAgICAgICAgICAgICAgIGh0bWw6IHwtCi0gICAgICAg
ICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9InN3aXRjaCI+Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPGlucHV0IHR5cGU9ImNoZWNrYm94Ij4KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA8c3BhbiBjbGFzcz0ic2xpZGVyIj48L3NwYW4+Ci0gICAgICAgICAgICAgICAgICAg
ICAgICA8L2xhYmVsPgotICAgICAgICAtCi0gICAgICAgICAgICB0aXRsZTogQmFkZ2UKLSAgICAg
ICAgICAgIGV4YW1wbGVzOgotICAgICAgICAgICAgICAgIC0KLSAgICAgICAgICAgICAgICAgICAg
ZGVzY3JpcHRpb246IH4KLSAgICAgICAgICAgICAgICAgICAgaHRtbDogfC0KLSAgICAgICAgICAg
ICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJhZGdlIj4KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA8ZGl2IGNsYXNzPSJ0ZXh0IGJsb2NrIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPGRpdiBjbGFzcz0idGV4dCB0aW55Ij5pTWFjIDI3IiAoTGF0ZSAyMDEyKTwvZGl2Pgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0IHNtYWxsIj5p
TWFjIDEzLDI8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAg
ICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBj
bGFzcz0iYmFkZ2Ugb3V0bGluZSI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBj
bGFzcz0idGV4dCBibG9jayI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYg
Y2xhc3M9InRleHQgdGlueSI+aU1hYyAyNyIgKExhdGUgMjAxMyk8L2Rpdj4KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dCBzbWFsbCI+aU1hYyAxNCwyPC9k
aXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAg
ICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJhZGdl
IGFjdGl2ZSI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dCBi
bG9jayI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQg
dGlueSI+aU1hYyAyNyIgKExhdGUgMjAxMyk8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPGRpdiBjbGFzcz0idGV4dCBzbWFsbCI+aU1hYyAxNCwyPC9kaXY+Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rp
dj4KLSAgICAgICAgLQotICAgICAgICAgICAgdGl0bGU6IERvdAotICAgICAgICAgICAgZXhhbXBs
ZXM6Ci0gICAgICAgICAgICAgICAgLQotICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjog
fgotICAgICAgICAgICAgICAgICAgICBodG1sOiB8LQotICAgICAgICAgICAgICAgICAgICAgICAg
PGRpdiBjbGFzcz0iZG90Ij48L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xh
c3M9ImRvdCBzdWNjZXNzIj48L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xh
c3M9ImRvdCBmYWlsZWQiPjwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFz
cz0iZG90IGVycm9yIj48L2Rpdj4KLSAgICAgICAgICAgICAgICAtCi0gICAgICAgICAgICAgICAg
ICAgIGRlc2NyaXB0aW9uOiBTaXplCi0gICAgICAgICAgICAgICAgICAgIGh0bWw6IHwtCi0gICAg
ICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qgc21hbGwiPjwvZGl2PgotICAgICAg
ICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90IG1lZGl1bSI+PC9kaXY+Ci0gICAgICAg
ICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3QgbGFyZ2UiPjwvZGl2PgotICAgICAgICAg
ICAgICAgIC0KLSAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBXaXRoIHN0cmluZyBpbnNpZGUKLSAgICAgICAgICAgICAgICAgICAgaHRtbDog
fC0KLSAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCBzdWNjZXNzIj4KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0Ij4mIzEwMDAzPC9kaXY+
Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAg
IDxkaXYgY2xhc3M9ImRvdCBmYWlsZWQiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxk
aXYgY2xhc3M9InRleHQiPiYjMTIwMjQ3PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8
L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCBlcnJvciI+Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dCI+ITwvZGl2PgotICAg
ICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2
IGNsYXNzPSJkb3Qgc3VjY2VzcyBsYXJnZSI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
PGRpdiBjbGFzcz0idGV4dCI+JiMxMDAwMzwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAg
PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3QgZmFpbGVkIGxh
cmdlIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0Ij4mIzEy
MDI0NzwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAg
ICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3QgZXJyb3IgbGFyZ2UiPgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQiPiE8L2Rpdj4KLSAgICAgICAgICAgICAgICAg
ICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgIC0KLSAgICAgICAgICAgICAgICAgICAgZGVz
Y3JpcHRpb246IFdpdGggaW1hZ2UgaW5zaWRlCi0gICAgICAgICAgICAgICAgICAgIGh0bWw6IHwt
Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3QgZXJyb3IiPgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSIuLi9pY29ucy9jbG9jay5zdmciPgotICAg
ICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgLQotICAgICAgICAg
ICAgICAgICAgICBkZXNjcmlwdGlvbjogQmxpbmsKLSAgICAgICAgICAgICAgICAgICAgaHRtbDog
fC0KLSAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCBibGluayI+PC9kaXY+
Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qgc3VjY2VzcyBibGluayI+
PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3QgZmFpbGVkIGJs
aW5rIj48L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCBlcnJv
ciBibGluayI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgLQotICAgICAgICAgICAgICAgICAgICBk
ZXNjcmlwdGlvbjoKLSAgICAgICAgICAgICAgICAgICAgICAgIERvdCBzZWxlY3RvcgotICAgICAg
ICAgICAgICAgICAgICBodG1sOiB8LQotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFz
cz0iZG90IHNlbGVjdG9yIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJyYWRpbyIgbmFtZT0i
c2VsZWN0b3IiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJk
b3Qgc3VjY2VzcyI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD4K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJyYWRpbyIgbmFtZT0ic2VsZWN0b3IiPgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3QgZmFpbGVkIj48L2Rpdj4K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDxsYWJlbD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0
IHR5cGU9InJhZGlvIiBuYW1lPSJzZWxlY3RvciI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDxkaXYgY2xhc3M9ImRvdCBlcnJvciI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPC9sYWJlbD4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAg
ICAtCi0gICAgICAgICAgICB0aXRsZTogY2hpcAotICAgICAgICAgICAgZXhhbXBsZXM6Ci0gICAg
ICAgICAgICAgICAgLQotICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogfgotICAgICAg
ICAgICAgICAgICAgICBodG1sOiB8LQotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFz
cz0iY2hpcCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90IHNt
YWxsIGJsaW5rIj48L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNz
PSJ0ZXh0IGJsb2NrIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+aVBvbmU8
L3A+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAg
ICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNoaXAi
PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCBzbWFsbCBibGlu
ayBmYWlsZWQiPjwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9
InRleHQgYmxvY2siPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5pUGFkPC9w
PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAg
ICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjaGlwIj4K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qgc21hbGwgc3VjY2Vz
cyI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dCBi
bG9jayI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPk1hYzwvcD4KLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwv
ZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2hpcCI+Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dCBibG9jayI+Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDxwPm1hY09TPC9wPgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRl
eHQgYmxvY2siPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YT5YPC9hPgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAg
PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjaGlwIj4KLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0IGJsb2NrIj4KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPHA+aU9TPC9wPgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRl
eHQgYmxvY2siPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YT5YPC9hPgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAg
PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjaGlwIj4KLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0IGJsb2NrIj4KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPHA+d2F0Y2hPUzwvcD4KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNz
PSJ0ZXh0IGJsb2NrIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE+WDwvYT4K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAg
ICAgIDwvZGl2PgotICAgICAgICAtCi0gICAgICAgICAgICB0aXRsZTogVGFicwotICAgICAgICAg
ICAgZXhhbXBsZXM6Ci0gICAgICAgICAgICAgICAgLQotICAgICAgICAgICAgICAgICAgICBkZXNj
cmlwdGlvbjogfgotICAgICAgICAgICAgICAgICAgICBodG1sOiB8LQotICAgICAgICAgICAgICAg
ICAgICAgICAgPGRpdiBjbGFzcz0idGFicyI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
PGRpdiBjbGFzcz0idGl0bGUiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRs
ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDxkaXYgY2xhc3M9InRhYiBhY3RpdmUiPgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA8YSBjbGFzcz0ibGluayI+VGFiIDE8L2E+Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0i
dGFiIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImxpbmsiPlRh
YiAyPC9hPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAg
ICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgIC0KLSAgICAgICAgICAgIHRpdGxlOiBUaW1lbGlu
ZQotICAgICAgICAgICAgZXhhbXBsZXM6Ci0gICAgICAgICAgICAgICAgLQotICAgICAgICAgICAg
ICAgICAgICBkZXNjcmlwdGlvbjogfgotICAgICAgICAgICAgICAgICAgICBodG1sOiB8LQotICAg
ICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGltZWxpbmUiPgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImhlYWRlciI+Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNlcmllcyI+Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0aW1lIGxpbmUgMQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2Vy
aWVzIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWUgbGluZSAyCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9
ImNvbnRlbnQiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJz
ZXJpZXMiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0i
ZG90Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNz
PSJ0YWciPjEyMzE8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwv
ZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90
IHN1Y2Nlc3MiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYg
Y2xhc3M9InRhZyI+NDU2PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9
ImRvdCI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNs
YXNzPSJkb3QiPjwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRp
diBjbGFzcz0iZG90IGVycm9yIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA8ZGl2IGNsYXNzPSJ0YWciPjEyMzwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8
ZGl2IGNsYXNzPSJkb3QgZW1wdHkiPjwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPGRpdiBjbGFzcz0iZG90Ij48L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3QiPjwvZGl2PgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90Ij48L2Rpdj4KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCI+PC9kaXY+Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3QiPjwvZGl2PgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90Ij48L2Rpdj4K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCI+PC9k
aXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qi
PjwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0i
ZG90Ij48L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xh
c3M9ImRvdCI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2
IGNsYXNzPSJkb3QiPjwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PGRpdiBjbGFzcz0iZG90Ij48L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNlcmll
cyI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qg
ZW1wdHkiPjwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBj
bGFzcz0iZG90IGVtcHR5Ij48L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDxkaXYgY2xhc3M9ImRvdCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPGRpdiBjbGFzcz0idGFnIj4zNTMzPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDxkaXYgY2xhc3M9ImRvdCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPGRpdiBjbGFzcz0idGFnIj4zNTMyPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxk
aXYgY2xhc3M9ImRvdCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PGRpdiBjbGFzcz0idGFnIj4zNTI8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBj
bGFzcz0iZG90Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2
IGNsYXNzPSJ0YWciPjM1MTwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNz
PSJkb3QiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xh
c3M9InRhZyI+MTwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9k
aXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qi
PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRh
ZyI+NDU2PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCI+PC9k
aXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qi
PjwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0i
ZG90Ij48L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xh
c3M9ImRvdCI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2
IGNsYXNzPSJkb3QiPjwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PGRpdiBjbGFzcz0iZG90Ij48L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDxkaXYgY2xhc3M9ImRvdCI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA8ZGl2IGNsYXNzPSJkb3QiPjwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90Ij48L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCI+PC9kaXY+Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3QiPjwvZGl2PgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPGRpdiBjbGFzcz0ieC1heGlzIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDxkaXYgY2xhc3M9InNjYWxlIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA8ZGl2IGNsYXNzPSJsaW5lIj48L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0Ij4KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcjEyMzQ1NjcKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFz
cz0ic2NhbGUiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYg
Y2xhc3M9ImxpbmUiPjwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDxkaXYgY2xhc3M9InRleHQiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByMTIzNDU2NwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzY2FsZSI+Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGluZSI+
PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFz
cz0idGV4dCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIx
MjM0NTY3Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNjYWxlIj4KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsaW5lIj48L2Rpdj4KLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0Ij4KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcjEyMzQ1NjcKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPGRpdiBjbGFzcz0ic2NhbGUiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxpbmUiPjwvZGl2PgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQiPgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByMTIzNDU2NwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2
IGNsYXNzPSJzY2FsZSI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PGRpdiBjbGFzcz0ibGluZSI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPGRpdiBjbGFzcz0idGV4dCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEkgYW0gYSB0YWcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwv
ZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2Nh
bGUiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9
ImxpbmUiPjwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxk
aXYgY2xhc3M9InRleHQiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBJIGFtIGEgdGFnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNjYWxlIj4KLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsaW5lIj48L2Rp
dj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0
ZXh0Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSSBhbSBh
IHRhZwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzY2FsZSI+Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGluZSI+PC9kaXY+Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dCI+Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEkgYW0gYSB0YWcKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPGRpdiBjbGFzcz0ic2NhbGUiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxpbmUiPjwvZGl2PgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQiPgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJIGFtIGEgdGFnCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxk
aXYgY2xhc3M9InNjYWxlIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA8ZGl2IGNsYXNzPSJsaW5lIj48L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgSSBhbSBhIHRhZwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJz
Y2FsZSI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFz
cz0ibGluZSI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PGRpdiBjbGFzcz0idGV4dCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEkgYW0gYSB0YWcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2NhbGUiPgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxpbmUiPjwv
ZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9
InRleHQiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJIGFt
IGEgdGFnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNjYWxlIj4KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsaW5lIj48L2Rpdj4KLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0Ij4KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSSBhbSBhIHRhZwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA8ZGl2IGNsYXNzPSJzY2FsZSI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGluZSI+PC9kaXY+Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dCI+Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEkgYW0gYSB0YWcKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PGRpdiBjbGFzcz0ic2NhbGUiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDxkaXYgY2xhc3M9ImxpbmUiPjwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQiPgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBJIGFtIGEgdGFnCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9
InNjYWxlIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNs
YXNzPSJsaW5lIj48L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA8ZGl2IGNsYXNzPSJ0ZXh0Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgSSBhbSBhIHRhZwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzY2FsZSI+Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGluZSI+
PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFz
cz0idGV4dCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEkg
YW0gYSB0YWcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2NhbGUiPgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxpbmUiPjwvZGl2PgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQiPgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJIGFtIGEgdGFnCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xh
c3M9IngtYXhpcyI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNs
YXNzPSJzY2FsZSBncm91cC00Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA8ZGl2IGNsYXNzPSJib3JkZXItbGluZS1sZWZ0Ij48L2Rpdj4KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsaW5lIj48L2Rpdj4KLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0Ij4KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSSBhbSBhIHRhZwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJvcmRlci1saW5lLXJpZ2h0
Ij48L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2NhbGUgZ3JvdXAt
MyI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0i
Ym9yZGVyLWxpbmUtbGVmdCI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPGRpdiBjbGFzcz0ibGluZSI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dCI+Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEkgYW0gYSB0YWcKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA8ZGl2IGNsYXNzPSJib3JkZXItbGluZS1yaWdodCI+PC9kaXY+Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNjYWxlIj4KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsaW5lIj48L2Rpdj4KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0Ij4KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSSBhbSBhIHRhZwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA8ZGl2IGNsYXNzPSJzY2FsZSI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPGRpdiBjbGFzcz0ibGluZSI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dCI+Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEkgYW0gYSB0YWcKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBj
bGFzcz0ic2NhbGUgZ3JvdXAtMTAiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDxkaXYgY2xhc3M9ImJvcmRlci1saW5lLWxlZnQiPjwvZGl2PgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxpbmUiPjwvZGl2PgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQiPgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJIGFtIGEgdGFnCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYm9yZGVyLWxpbmUtcmln
aHQiPjwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAg
ICAgICAgICAgLQotICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogY28tcmV2aXNpb24g
dGltZWxpbmUgdG9wIHgtYXhpcwotICAgICAgICAgICAgICAgICAgICBodG1sOiB8LQotICAgICAg
ICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGltZWxpbmUiPgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImhlYWRlciB3aXRoLXRvcC14LWF4aXMiPgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzZXJpZXMiPgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVidWcKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xh
c3M9InNlcmllcyI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWxlYXNl
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xh
c3M9ImNvbnRlbnQiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNz
PSJ4LWF4aXMgdG9wIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYg
Y2xhc3M9InNjYWxlIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8
ZGl2IGNsYXNzPSJsaW5lIj48L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcjI0NDUxMAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzY2FsZSI+
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGlu
ZSI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBj
bGFzcz0idGV4dCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHIyNDQ1MDkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2NhbGUgZ3JvdXAtNCI+Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYm9yZGVyLWxp
bmUtbGVmdCI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PGRpdiBjbGFzcz0ibGluZSI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPGRpdiBjbGFzcz0idGV4dCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHIyNDQ1MDgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8
ZGl2IGNsYXNzPSJib3JkZXItbGluZS1yaWdodCI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDxkaXYgY2xhc3M9InNjYWxlIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA8ZGl2IGNsYXNzPSJsaW5lIj48L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0Ij4KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcjI0NDUwNwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNz
PSJzY2FsZSI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBj
bGFzcz0ibGluZSI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPGRpdiBjbGFzcz0idGV4dCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHIyNDQ1MDYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2NhbGUiPgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxpbmUiPjwv
ZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9
InRleHQiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByMjQ0
NTA1Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNjYWxlIj4KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsaW5lIj48L2Rpdj4KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0Ij4KLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcjI0NDUwNAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDwvZGl2PgotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNl
cmllcyI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJk
b3Qgc3VjY2VzcyI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8
ZGl2IGNsYXNzPSJkb3Qgc3VjY2VzcyI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qgc3VjY2VzcyI+PC9kaXY+Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qgc3VjY2VzcyI+PC9kaXY+Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qgc3VjY2Vz
cyI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNz
PSJkb3Qgc3VjY2VzcyI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA8ZGl2IGNsYXNzPSJkb3Qgc3VjY2VzcyI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qgc3VjY2VzcyI+PC9kaXY+Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qgc3VjY2VzcyI+PC9kaXY+
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qgc3Vj
Y2VzcyI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzZXJpZXMiPgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3MiPjwv
ZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90
IHN1Y2Nlc3MiPjwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRp
diBjbGFzcz0iZG90IHN1Y2Nlc3MiPjwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3MiPjwvZGl2PgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3MiPjwvZGl2PgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3Mi
PjwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0i
ZG90IHN1Y2Nlc3MiPjwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3MiPjwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3MiPjwvZGl2PgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3MiPjwvZGl2Pgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ieC1heGlzIj4KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNjYWxlIGdyb3VwLTMiPgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJvcmRlci1saW5lLWxlZnQi
PjwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xh
c3M9ImxpbmUiPjwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDxkaXYgY2xhc3M9InRleHQiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhYzgyNmEzOAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xh
c3M9ImJvcmRlci1saW5lLXJpZ2h0Ij48L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRp
diBjbGFzcz0ic2NhbGUiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDxkaXYgY2xhc3M9ImxpbmUiPjwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjMzU1OGQ1MAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9k
aXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzY2Fs
ZSI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0i
bGluZSI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRp
diBjbGFzcz0idGV4dCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDA4NjM3NDIzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9k
aXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNjYWxlIGdyb3VwLTUiPgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJvcmRl
ci1saW5lLWxlZnQiPjwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDxkaXYgY2xhc3M9ImxpbmUiPjwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQiPgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjOTRmZWI2MwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDxkaXYgY2xhc3M9ImJvcmRlci1saW5lLXJpZ2h0Ij48L2Rpdj4KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAg
ICAgICAgICAgICAgICAgIDwvZGl2PgotCi0gICAgICAgICAgICAgICAgLQotICAgICAgICAgICAg
ICAgICAgICBkZXNjcmlwdGlvbjogT25seSBHcm91cCBTY2FsZQotICAgICAgICAgICAgICAgICAg
ICBodG1sOiB8LQotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGltZWxpbmUi
PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImhlYWRlciB3aXRoLXRv
cC14LWF4aXMiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJz
ZXJpZXMiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVidWcKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDxkaXYgY2xhc3M9InNlcmllcyI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBSZWxlYXNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2
PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiPgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA8ZGl2IGNsYXNzPSJ4LWF4aXMgdG9wIj4KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNjYWxlIGdyb3VwLTQiPgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJvcmRlci1saW5lLWxlZnQiPjwv
ZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9
ImxpbmUiPjwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxk
aXYgY2xhc3M9InRleHQiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByMjQ0NTA4Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9k
aXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0i
Ym9yZGVyLWxpbmUtcmlnaHQiPjwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNs
YXNzPSJzY2FsZSBncm91cC00Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA8ZGl2IGNsYXNzPSJib3JkZXItbGluZS1sZWZ0Ij48L2Rpdj4KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsaW5lIj48L2Rpdj4KLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0Ij4KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcjI0NDUxMAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJvcmRlci1saW5lLXJpZ2h0Ij48
L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPGRpdiBjbGFzcz0ic2VyaWVzIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCBzdWNjZXNzIj48L2Rpdj4KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCBzdWNjZXNzIj48L2Rpdj4KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCBzdWNjZXNz
Ij48L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9
ImRvdCBzdWNjZXNzIj48L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDxkaXYgY2xhc3M9ImRvdCBzdWNjZXNzIj48L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCBzdWNjZXNzIj48L2Rpdj4KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCBzdWNjZXNzIj48L2Rpdj4K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCBzdWNj
ZXNzIj48L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNlcmllcyI+Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qgc3VjY2VzcyI+PC9k
aXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qg
c3VjY2VzcyI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2
IGNsYXNzPSJkb3Qgc3VjY2VzcyI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qgc3VjY2VzcyI+PC9kaXY+Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qgc3VjY2VzcyI+PC9kaXY+Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qgc3VjY2VzcyI+
PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJk
b3Qgc3VjY2VzcyI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8
ZGl2IGNsYXNzPSJkb3Qgc3VjY2VzcyI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNz
PSJ4LWF4aXMiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFz
cz0ic2NhbGUgZ3JvdXAtMyI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPGRpdiBjbGFzcz0iYm9yZGVyLWxpbmUtbGVmdCI+PC9kaXY+Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGluZSI+PC9kaXY+Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dCI+Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjODI2YTM4Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYm9yZGVyLWxpbmUtcmlnaHQiPjwv
ZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzY2FsZSBncm91cC01Ij4K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJib3Jk
ZXItbGluZS1sZWZ0Ij48L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA8ZGl2IGNsYXNzPSJsaW5lIj48L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0Ij4KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYzk0ZmViNjMKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA8ZGl2IGNsYXNzPSJib3JkZXItbGluZS1yaWdodCI+PC9kaXY+Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAg
ICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAtCi0gICAgICAgICAgICAg
ICAgICAgIGRlc2NyaXB0aW9uOiBMYXJnZSBTZXJpZXMgTGFiZWwKLSAgICAgICAgICAgICAgICAg
ICAgaHRtbDogfC0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aW1l
bGluZSI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImhlYWRl
ciB3aXRoLXRvcC14LWF4aXMiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PGRpdiBjbGFzcz0ic2VyaWVzIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBJIGFtIGEgdmVyeSBsb25nIGFuZCBiaWcgc2VyaWVzIDEKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPGRpdiBjbGFzcz0ic2VyaWVzIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBJIGFtIGEgdmVyeSBsb25nIGFuZCBiaWcgc2VyaWVzIDIKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFz
cz0iY29udGVudCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNs
YXNzPSJ4LWF4aXMgdG9wIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA8ZGl2IGNsYXNzPSJzY2FsZSI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDxkaXYgY2xhc3M9ImxpbmUiPjwvZGl2PgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0Ij4KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIyNDQ1MTAKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2NhbGUiPgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsaW5lIj48L2Rpdj4KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dCI+Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByMjQ0NTA5Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNjYWxlIGdyb3VwLTQiPgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJib3JkZXIt
bGluZS1sZWZ0Ij48L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPGRpdiBjbGFzcz0ibGluZSI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQiPgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcjI0NDUwOAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYm9yZGVyLWxpbmUtcmlnaHQiPjwvZGl2
PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNjYWxlIj4KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGlu
ZSI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxk
aXYgY2xhc3M9InRleHQiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcjI0NDUwNwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rp
dj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJz
Y2FsZSI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYg
Y2xhc3M9ImxpbmUiPjwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHIyNDQ1MDYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRp
diBjbGFzcz0ic2NhbGUiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA8ZGl2IGNsYXNzPSJsaW5lIj48L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dCI+Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByMjQ0NTA1Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDxkaXYgY2xhc3M9InNjYWxlIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGluZSI+PC9kaXY+Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQiPgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcjI0NDUwNAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDwvZGl2PgotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA8ZGl2IGNsYXNzPSJzZXJpZXMiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDxkaXYgY2xhc3M9ImRvdCBzdWNjZXNzIj48L2Rpdj4KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qgc3VjY2VzcyI+PC9kaXY+Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90IHN1
Y2Nlc3MiPjwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxk
aXYgY2xhc3M9ImRvdCBzdWNjZXNzIj48L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qgc3VjY2VzcyI+PC9kaXY+Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3MiPjwv
ZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9
ImRvdCBzdWNjZXNzIj48L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA8ZGl2IGNsYXNzPSJkb3Qgc3VjY2VzcyI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3MiPjwvZGl2PgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCBzdWNj
ZXNzIj48L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2VyaWVzIj4K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qg
c3VjY2VzcyI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3MiPjwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCBzdWNjZXNzIj48L2Rpdj4KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qgc3VjY2VzcyI+
PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFz
cz0iZG90IHN1Y2Nlc3MiPjwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDxkaXYgY2xhc3M9ImRvdCBzdWNjZXNzIj48L2Rpdj4KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qgc3VjY2VzcyI+PC9kaXY+Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90IHN1
Y2Nlc3MiPjwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxk
aXYgY2xhc3M9ImRvdCBzdWNjZXNzIj48L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qgc3VjY2VzcyI+PC9kaXY+Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDxkaXYgY2xhc3M9IngtYXhpcyI+Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2NhbGUgZ3JvdXAtMyI+Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJvcmRlci1saW5l
LWxlZnQiPjwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA8ZGl2IGNsYXNzPSJsaW5lIj48L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dCI+Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBhYzgyNmEzOAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYm9yZGVyLWxpbmUtcmlnaHQiPjwvZGl2Pgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNjYWxlIj4KLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGluZSI+
PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYg
Y2xhc3M9InRleHQiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYzM1NThkNTAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2Nh
bGUiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNs
YXNzPSJsaW5lIj48L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPGRpdiBjbGFzcz0idGV4dCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAwODYzNzQyMwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2
IGNsYXNzPSJzY2FsZSBncm91cC01Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPGRpdiBjbGFzcz0iYm9yZGVyLWxpbmUtbGVmdCI+PC9kaXY+Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxpbmUiPjwv
ZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNs
YXNzPSJ0ZXh0Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGM5NGZlYjYzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2
IGNsYXNzPSJib3JkZXItbGluZS1yaWdodCI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgIC0KLSAgICAgICAgICAgIHRp
dGxlOiBMZW5nZW5kCi0gICAgICAgICAgICBleGFtcGxlczoKLSAgICAgICAgICAgICAgICAtCi0g
ICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB+Ci0gICAgICAgICAgICAgICAgICAgIGh0
bWw6IHwtCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsZW5nZW5kIj4KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpdGVtIj4KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3MiPgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dCI+4pyTPC9kaXY+Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsYWJlbCI+VGVzdHMgUGFzczwvZGl2PgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDxkaXYgY2xhc3M9Iml0ZW0iPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2
IGNsYXNzPSJkb3QgZmFpbGVkIj48L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPGRpdiBjbGFzcz0ibGFiZWwiPlRlc3RzIEZhaWxlZDwvZGl2PgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xh
c3M9Iml0ZW0iPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJk
b3QgZXJyb3IiPjxpbWcgc3JjPSIuLi9pY29ucy9jbG9jay5zdmciPjwvZGl2PgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsYWJlbCI+VGVzdHMgaGF2ZSBlcnJv
cjwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAg
ICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgLQotICAgICAgICAgICAgICAgICAg
ICBkZXNjcmlwdGlvbjogV2l0aCBob3Jpem9udGFsIG1peGluCi0gICAgICAgICAgICAgICAgICAg
IGh0bWw6IHwtCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsZW5nZW5kIGhv
cml6b250YWwiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Iml0ZW0i
PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qgc3VjY2Vz
cyI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0
Ij7inJM8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxhYmVsIj5UZXN0cyBQYXNz
PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaXRlbSI+Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCBmYWlsZWQiPjwvZGl2PgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsYWJlbCI+VGVzdHMgRmFpbGVkPC9kaXY+Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPGRpdiBjbGFzcz0iaXRlbSI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDxkaXYgY2xhc3M9ImRvdCBlcnJvciI+PGltZyBzcmM9Ii4uL2ljb25zL2Nsb2NrLnN2ZyI+PC9k
aXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxhYmVsIj5U
ZXN0cyBoYXZlIGVycm9yPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+
Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAtCi0gICAg
ICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBXaXRoIHRpbWVsaW5lIG1peGluCi0gICAgICAg
ICAgICAgICAgICAgIGh0bWw6IHwtCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNz
PSJsZW5nZW5kIHRpbWVsaW5lIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNs
YXNzPSJpdGVtIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0i
ZG90IHN1Y2Nlc3MiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBj
bGFzcz0idGV4dCI+4pyTPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwv
ZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsYWJlbCI+
VGVzdHMgUGFzczwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Iml0ZW0iPgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3QgZmFpbGVkIj48L2Rpdj4KLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGFiZWwiPlRlc3RzIEZhaWxl
ZDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Iml0ZW0iPgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3QgZXJyb3IiPjxpbWcgc3JjPSIuLi9pY29ucy9jbG9j
ay5zdmciPjwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNz
PSJsYWJlbCI+VGVzdHMgaGF2ZSBlcnJvcjwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgIC0KLSAg
ICAgICAgICAgIHRpdGxlOiBQb3BvdmVyCi0gICAgICAgICAgICBleGFtcGxlczoKLSAgICAgICAg
ICAgICAgICAtCi0gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB+Ci0gICAgICAgICAg
ICAgICAgICAgIGh0bWw6IHwtCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJw
b3BvdmVyIGRpc3BsYXkiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9
ImFycm93IHBvaW50LXRvcCIgc3R5bGU9ImxlZnQ6IDEwNnB4OyI+Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFz
cz0iY29udGVudCIgc3R5bGU9IndpZHRoOjIwMHB4Ij4KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVGhpcyBpcyBwb3BvdmVyOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwv
ZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAg
ICAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBM
b3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0dXIgYWRpcGlzY2luZyBlbGl0LCBz
ZWQgZG8gZWl1c21vZCB0ZW1wb3IgaW5jaWRpZHVudCB1dCBsYWJvcmUgZXQgZG9sb3JlIG1hZ25h
IGFsaXF1YS4gVXQgZW5pbSBhZCBtaW5pbSB2ZW5pYW0sIHF1aXMgbm9zdHJ1ZCBleGVyY2l0YXRp
b24gdWxsYW1jbyBsYWJvcmlzIG5pc2kgdXQgYWxpcXVpcCBleCBlYSBjb21tb2RvIGNvbnNlcXVh
dC4gRHVpcyBhdXRlIGlydXJlIGRvbG9yIGluIHJlcHJlaGVuZGVyaXQgaW4gdm9sdXB0YXRlIHZl
bGl0IGVzc2UgY2lsbHVtIGRvbG9yZSBldSBmdWdpYXQgbnVsbGEgcGFyaWF0dXIuIEV4Y2VwdGV1
ciBzaW50IG9jY2FlY2F0IGN1cGlkYXRhdCBub24gcHJvaWRlbnQsIHN1bnQgaW4gY3VscGEgcXVp
IG9mZmljaWEgZGVzZXJ1bnQgbW9sbGl0IGFuaW0gaWQgZXN0IGxhYm9ydW0uCi0gICAgICAgICAg
ICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gWW91IGNh
biBjb250cm9sIHRoZSBhcnJvdyBwb3MgYnkgc2V0aW5nIHRoZSBsZWZ0IG9yIHRvcCAtLT4KLSAg
ICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBvcG92ZXIgZGlzcGxheSI+Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYXJyb3cgcG9pbnQtYm90dG9tIiBz
dHlsZT0ibGVmdDogMTA2cHg7Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50IiBzdHlsZT0i
d2lkdGg6MjAwcHgiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGlzIGEg
cG9wb3ZlcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAg
ICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJj
b250ZW50Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb3JlbSBpcHN1bSBkb2xvciBz
aXQgYW1ldCwgY29uc2VjdGV0dXIgYWRpcGlzY2luZyBlbGl0LCBzZWQgZG8gZWl1c21vZCB0ZW1w
b3IgaW5jaWRpZHVudCB1dCBsYWJvcmUgZXQgZG9sb3JlIG1hZ25hIGFsaXF1YS4gVXQgZW5pbSBh
ZCBtaW5pbSB2ZW5pYW0sIHF1aXMgbm9zdHJ1ZCBleGVyY2l0YXRpb24gdWxsYW1jbyBsYWJvcmlz
IG5pc2kgdXQgYWxpcXVpcCBleCBlYSBjb21tb2RvIGNvbnNlcXVhdC4gRHVpcyBhdXRlIGlydXJl
IGRvbG9yIGluIHJlcHJlaGVuZGVyaXQgaW4gdm9sdXB0YXRlIHZlbGl0IGVzc2UgY2lsbHVtIGRv
bG9yZSBldSBmdWdpYXQgbnVsbGEgcGFyaWF0dXIuIEV4Y2VwdGV1ciBzaW50IG9jY2FlY2F0IGN1
cGlkYXRhdCBub24gcHJvaWRlbnQsIHN1bnQgaW4gY3VscGEgcXVpIG9mZmljaWEgZGVzZXJ1bnQg
bW9sbGl0IGFuaW0gaWQgZXN0IGxhYm9ydW0uCi0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rp
dj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBvcG92ZXIgZGlzcGxheSI+
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYXJyb3cgcG9pbnQtbGVm
dCIgc3R5bGU9InRvcDogMzFweDsiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2
PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiIHN0eWxl
PSJoZWlnaHQ6NTBweCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgaXMg
YSBwb3BvdmVyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAg
ICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9
ImNvbnRlbnQiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvcmVtIGlwc3VtIGRvbG9y
IHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBhZGlwaXNjaW5nIGVsaXQsIHNlZCBkbyBlaXVzbW9kIHRl
bXBvciBpbmNpZGlkdW50IHV0IGxhYm9yZSBldCBkb2xvcmUgbWFnbmEgYWxpcXVhLiBVdCBlbmlt
IGFkIG1pbmltIHZlbmlhbSwgcXVpcyBub3N0cnVkIGV4ZXJjaXRhdGlvbiB1bGxhbWNvIGxhYm9y
aXMgbmlzaSB1dCBhbGlxdWlwIGV4IGVhIGNvbW1vZG8gY29uc2VxdWF0LiBEdWlzIGF1dGUgaXJ1
cmUgZG9sb3IgaW4gcmVwcmVoZW5kZXJpdCBpbiB2b2x1cHRhdGUgdmVsaXQgZXNzZSBjaWxsdW0g
ZG9sb3JlIGV1IGZ1Z2lhdCBudWxsYSBwYXJpYXR1ci4gRXhjZXB0ZXVyIHNpbnQgb2NjYWVjYXQg
Y3VwaWRhdGF0IG5vbiBwcm9pZGVudCwgc3VudCBpbiBjdWxwYSBxdWkgb2ZmaWNpYSBkZXNlcnVu
dCBtb2xsaXQgYW5pbSBpZCBlc3QgbGFib3J1bS4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwv
ZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icG9wb3ZlciBkaXNwbGF5
Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhcnJvdyBwb2ludC1y
aWdodCIgc3R5bGU9InRvcDogMzFweDsiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwv
ZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiIHN0
eWxlPSJoZWlnaHQ6NTBweCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMg
aXMgYSBwb3BvdmVyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAg
ICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xh
c3M9ImNvbnRlbnQiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvcmVtIGlwc3VtIGRv
bG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBhZGlwaXNjaW5nIGVsaXQsIHNlZCBkbyBlaXVzbW9k
IHRlbXBvciBpbmNpZGlkdW50IHV0IGxhYm9yZSBldCBkb2xvcmUgbWFnbmEgYWxpcXVhLiBVdCBl
bmltIGFkIG1pbmltIHZlbmlhbSwgcXVpcyBub3N0cnVkIGV4ZXJjaXRhdGlvbiB1bGxhbWNvIGxh
Ym9yaXMgbmlzaSB1dCBhbGlxdWlwIGV4IGVhIGNvbW1vZG8gY29uc2VxdWF0LiBEdWlzIGF1dGUg
aXJ1cmUgZG9sb3IgaW4gcmVwcmVoZW5kZXJpdCBpbiB2b2x1cHRhdGUgdmVsaXQgZXNzZSBjaWxs
dW0gZG9sb3JlIGV1IGZ1Z2lhdCBudWxsYSBwYXJpYXR1ci4gRXhjZXB0ZXVyIHNpbnQgb2NjYWVj
YXQgY3VwaWRhdGF0IG5vbiBwcm9pZGVudCwgc3VudCBpbiBjdWxwYSBxdWkgb2ZmaWNpYSBkZXNl
cnVudCBtb2xsaXQgYW5pbSBpZCBlc3QgbGFib3J1bS4KLSAgICAgICAgICAgICAgICAgICAgICAg
IDwvZGl2PgpJbmRleDogVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9zdGF0aWMv
bGlicmFyeS9jc3MvZ2VuZXJhdGUtd2Via2l0LWNzcy1kb2NzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvc3RhdGljL2xpYnJhcnkvY3NzL2dlbmVyYXRl
LXdlYmtpdC1jc3MtZG9jcwkocmV2aXNpb24gMjY1NTMxKQorKysgVG9vbHMvcmVzdWx0c2RicHkv
cmVzdWx0c2RicHkvdmlldy9zdGF0aWMvbGlicmFyeS9jc3MvZ2VuZXJhdGUtd2Via2l0LWNzcy1k
b2NzCShub25leGlzdGVudCkKQEAgLTEsMTQ1ICswLDAgQEAKLSMhL3Vzci9iaW4vcHl0aG9uCi0j
IENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0j
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0jIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTICJBUyBJUyIgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUgotIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotIyBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1mcm9tIGFyZ3BhcnNlIGltcG9y
dCBBcmd1bWVudFBhcnNlcgotaW1wb3J0IGppbmphMgotaW1wb3J0IHlhbWwKLWltcG9ydCBzeXMK
LWltcG9ydCBjb2RlY3MKLQotaHRtbF90ZW1wbGF0ZSA9IGppbmphMi5UZW1wbGF0ZSgiIiIKLTwh
LS0gVGhpcyBmaWxlIGlzIGF1dG8gZ2VuZXJhdGVkLCBwbGVhc2UgZG8gbm90IG1vZGlmeSBpdCBk
aXJlY3RseSAtLT4KLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci0gICAgPGhlYWQ+Ci0gICAgICAg
IDx0aXRsZT5BIFNoYXJlZCBDU1MgbGlicmFyeSBmb3Igd2Via2l0IHNlcnZpY2VzPC90aXRsZT4K
LSAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJ3ZWJraXQuY3NzIj48L2xpbms+
Ci0gICAgICAgIDxsaW5rIHJlbD0ic2hvcnRjdXQgaWNvbiIgc2l6ZXM9IjMyeDMyIiB0eXBlPSJp
bWFnZS94LWljb24iIGhyZWY9Imh0dHBzOi8vd2Via2l0Lm9yZy9mYXZpY29uLmljbyI+Ci0gICAg
ICAgIDxtZXRhIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLCB2
aWV3cG9ydC1maXQ9Y292ZXIiIG5hbWU9InZpZXdwb3J0Ij4KLSAgICAgICAgPG1ldGEgY2hhcnNl
dD0iVVRGLTgiPgotICAgIDwvaGVhZD4KLSAgICA8Ym9keT4KLSAgICA8IS0tIGV4YW1wbGUgdG9w
YmFyIC0tPgotICAgIDxkaXYgaWQ9InRvcGJhciIgY2xhc3M9InRvcGJhciBmaXhlZCIgc3R5bGU9
ImRpc3BsYXk6bm9uZSI+Ci0gICAgICAgIDxkaXYgY2xhc3M9InRpdGxlIj4KLSAgICAgICAgICAg
IFRvcGJhcgotICAgICAgICA8L2Rpdj4KLSAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9ucyI+Ci0g
ICAgICAgICAgICA8ZGl2IGNsYXNzPSJsaXN0Ij4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNz
PSJpdGVtIj4KLSAgICAgICAgICAgICAgICAgICAgPGE+aXRlbSAxPC9hPgotICAgICAgICAgICAg
ICAgIDwvZGl2PgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Iml0ZW0iPgotICAgICAgICAg
ICAgICAgICAgICA8YT5pdGVtIDI8L2E+Ci0gICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAg
ICAgICAgICAgPGRpdiBjbGFzcz0iaXRlbSI+Ci0gICAgICAgICAgICAgICAgICAgIDxhPml0ZW0g
MzwvYT4KLSAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDwvZGl2PgotICAgICAg
ICA8L2Rpdj4KLSAgICA8L2Rpdj4KLSAgICA8IS0tIGVuZCBvZiBleGFtcGxlIHRvcGJhciAtLT4K
LQotICAgIDwhLS0gU2lkZWJhciAtLT4KLSAgICA8ZGl2IGNsYXNzPSJzaWRlYmFyIj4KLSAgICAg
ICAgPGRpdiBjbGFzcz0iaGVhZGVyIj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlIj4K
LSAgICAgICAgICAgICAgICA8aDI+V2Via2l0LmNzczwvaDI+Ci0gICAgICAgICAgICA8L2Rpdj4K
LSAgICAgICAgPC9kaXY+Ci0gICAgICAgIDxkaXYgY2xhc3M9Imxpc3QiPgotICAgICAgICB7JSBm
b3Igc2VjdGlvbiBpbiBzZWN0aW9ucyAlfQotICAgICAgICAgICAgPGRpdiBjbGFzcz0iaXRlbSI+
Ci0gICAgICAgICAgICAgICAgPGgzPjxhIGhyZWY9IiN7eyBzZWN0aW9uLnRpdGxlIH19Ij57eyBz
ZWN0aW9uLnRpdGxlIH19PC9hPjwvaDM+Ci0gICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAg
IDxkaXYgY2xhc3M9Iml0ZW0iPgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Imxpc3QiPgot
ICAgICAgICAgICAgICAgIHslIGZvciBzdWIgaW4gc2VjdGlvbi5zdWJzICV9Ci0gICAgICAgICAg
ICAgICAgICAgIHslIGlmIHN1Yi50aXRsZSAlfQotICAgICAgICAgICAgICAgICAgICAgICAgPGRp
diBjbGFzcz0iaXRlbSBzdWIiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9
IiN7eyBzZWN0aW9uLnRpdGxlIH19LXt7IHN1Yi50aXRsZSB9fSI+e3sgc3ViLnRpdGxlIH19PC9h
PgotICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgIHsl
IGVuZGlmICV9Ci0gICAgICAgICAgICAgICAgeyUgZW5kZm9yICV9Ci0gICAgICAgICAgICAgICAg
PC9kaXY+Ci0gICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRpdmlk
ZXIiPjwvZGl2PgotICAgICAgICB7JSBlbmRmb3IgJX0KLSAgICAgICAgPC9kaXY+Ci0gICAgPC9k
aXY+Ci0gICAgPCEtLSBFbmQgb2Ygc2lkZWJhciAtLT4KLQotICAgIDwhLS0gY29udGVudCAtLT4K
LSAgICA8ZGl2IGNsYXNzPSJtYWluIj4KLSAgICAgICAgeyUgZm9yIHNlY3Rpb24gaW4gc2VjdGlv
bnMgJX0KLSAgICAgICAgICAgIDxkaXYgaWQ9Int7IHNlY3Rpb24udGl0bGUgfCByZXBsYWNlKCIg
IiwiLSIpIH19IiBjbGFzcz0ic2VjdGlvbiBhcnRpY2xlIj4KLSAgICAgICAgICAgICAgICA8ZGl2
IGNsYXNzPSJoZWFkZXIiPgotICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZSI+
Ci0gICAgICAgICAgICAgICAgICAgICAgICA8aDE+e3sgc2VjdGlvbi50aXRsZSB9fTwvaDE+Ci0g
ICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAg
ICAgICAgICAgIHslIGZvciBzdWIgaW4gc2VjdGlvbi5zdWJzICV9Ci0gICAgICAgICAgICAgICAg
ICAgIHslIGlmIHN1Yi50aXRsZSAlfQotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFz
cz0iaGVhZGVyIiBpZD0ie3sgc2VjdGlvbi50aXRsZSB8IHJlcGxhY2UoIiAiLCItIikgfX0te3sg
c3ViLnRpdGxlIHwgcmVwbGFjZSgiICIsIi0iKSB9fSI+Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPGRpdiBjbGFzcz0idGl0bGUiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PGgyPnt7IHN1Yi50aXRsZSB9fTwvaDI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9k
aXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAg
eyUgZW5kaWYgJX0KLSAgICAgICAgICAgICAgICAgICAgeyUgZm9yIGV4YW1wbGUgaW4gc3ViLmV4
YW1wbGVzICV9Ci0gICAgICAgICAgICAgICAgICAgICAgICB7JSBpZiBleGFtcGxlLmRlc2NyaXB0
aW9uICV9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudCI+
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGV4YW1wbGUuZGVzY3JpcHRpb24g
fX0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAg
ICAgICAgIHslIGVuZGlmICV9Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJj
b250ZW50Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJlPjx4bXA+e3sgZXhhbXBs
ZS5odG1sIH19PC94bXA+PC9wcmU+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAg
ICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiPgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHt7IGV4YW1wbGUuaHRtbCB9fQotICAgICAgICAgICAgICAgICAgICAg
ICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgIHslIGVuZGZvciAlfQotICAgICAgICAgICAg
ICAgIHslIGVuZGZvciAlfQotICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgIHslIGVuZGZvciV9
Ci0gICAgICAgIDxkaXYgY2xhc3M9InBsYWNlaG9sZGVyIj48L2Rpdj4KLSAgICA8L2Rpdj4KLSAg
ICA8IS0tIGVuZCBvZiBjb250ZW50LS0+Ci0gIDwvYm9keT4KLTwvaHRtbD4KLSIiIikKLQotZGVm
IG1haW4oKToKLSAgICBwYXJzZXIgPSBBcmd1bWVudFBhcnNlcihkZXNjcmlwdGlvbj0iR2VuZXJh
dGUgd2Via2l0LmNzcyBkb2N1bWVudGF0aW9uIikKLSAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCIt
LXlhbWwiLCBkZWZhdWx0PSJkb2NzLnlhbWwiKQotICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi0t
b3V0cHV0IiwgZGVmYXVsdD0iaW5kZXguaHRtbCIpCi0gICAgYXJncyA9IHBhcnNlci5wYXJzZV9h
cmdzKCkKLQotICAgIHdpdGggb3BlbihhcmdzLnlhbWwpIGFzIGlucHV0X2Y6Ci0gICAgICAgIGRv
Y3NfY2ZnID0geWFtbC5sb2FkKGlucHV0X2YpCi0gICAgICAgIHdpdGggY29kZWNzLm9wZW4oYXJn
cy5vdXRwdXQsICd3JywgInV0Zi04IikgYXMgb3V0cHV0X2Y6Ci0gICAgICAgICAgICBvdXRwdXRf
Zi53cml0ZShodG1sX3RlbXBsYXRlLnJlbmRlcihzZWN0aW9ucz1kb2NzX2NmZykpOwotICAgICAg
ICAgICAgcHJpbnQoIk91dHB1dCB0byB7fSIuZm9ybWF0KGFyZ3Mub3V0cHV0KSkKLQotaWYgX19u
YW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICBzeXMuZXhpdChtYWluKCkpCgpQcm9wZXJ0eSBjaGFu
Z2VzIG9uOiBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS92aWV3L3N0YXRpYy9saWJyYXJ5
L2Nzcy9nZW5lcmF0ZS13ZWJraXQtY3NzLWRvY3MKX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46ZXhl
Y3V0YWJsZQojIyAtMSArMCwwICMjCi0qClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkK
SW5kZXg6IFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvc3RhdGljL2xpYnJhcnkv
Y3NzL2luZGV4Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2Ri
cHkvdmlldy9zdGF0aWMvbGlicmFyeS9jc3MvaW5kZXguaHRtbAkocmV2aXNpb24gMjY1NTMxKQor
KysgVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9zdGF0aWMvbGlicmFyeS9jc3Mv
aW5kZXguaHRtbAkobm9uZXhpc3RlbnQpCkBAIC0xLDMzNTMgKzAsMCBAQAotCi08IS0tIFRoaXMg
ZmlsZSBpcyBhdXRvIGdlbmVyYXRlZCwgcGxlYXNlIGRvIG5vdCBtb2RpZnkgaXQgZGlyZWN0bHkg
LS0+Ci08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotICAgIDxoZWFkPgotICAgICAgICA8dGl0bGU+
QSBTaGFyZWQgQ1NTIGxpYnJhcnkgZm9yIHdlYmtpdCBzZXJ2aWNlczwvdGl0bGU+Ci0gICAgICAg
IDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0id2Via2l0LmNzcyI+PC9saW5rPgotICAgICAg
ICA8bGluayByZWw9InNob3J0Y3V0IGljb24iIHNpemVzPSIzMngzMiIgdHlwZT0iaW1hZ2UveC1p
Y29uIiBocmVmPSJodHRwczovL3dlYmtpdC5vcmcvZmF2aWNvbi5pY28iPgotICAgICAgICA8bWV0
YSBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSwgdmlld3BvcnQt
Zml0PWNvdmVyIiBuYW1lPSJ2aWV3cG9ydCI+Ci0gICAgICAgIDxtZXRhIGNoYXJzZXQ9IlVURi04
Ij4KLSAgICA8L2hlYWQ+Ci0gICAgPGJvZHk+Ci0gICAgPCEtLSBleGFtcGxlIHRvcGJhciAtLT4K
LSAgICA8ZGl2IGlkPSJ0b3BiYXIiIGNsYXNzPSJ0b3BiYXIgZml4ZWQiIHN0eWxlPSJkaXNwbGF5
Om5vbmUiPgotICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZSI+Ci0gICAgICAgICAgICBUb3BiYXIK
LSAgICAgICAgPC9kaXY+Ci0gICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbnMiPgotICAgICAgICAg
ICAgPGRpdiBjbGFzcz0ibGlzdCI+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaXRlbSI+
Ci0gICAgICAgICAgICAgICAgICAgIDxhPml0ZW0gMTwvYT4KLSAgICAgICAgICAgICAgICA8L2Rp
dj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpdGVtIj4KLSAgICAgICAgICAgICAgICAg
ICAgPGE+aXRlbSAyPC9hPgotICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAg
IDxkaXYgY2xhc3M9Iml0ZW0iPgotICAgICAgICAgICAgICAgICAgICA8YT5pdGVtIDM8L2E+Ci0g
ICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgPC9kaXY+
Ci0gICAgPC9kaXY+Ci0gICAgPCEtLSBlbmQgb2YgZXhhbXBsZSB0b3BiYXIgLS0+Ci0KLSAgICA8
IS0tIFNpZGViYXIgLS0+Ci0gICAgPGRpdiBjbGFzcz0ic2lkZWJhciI+Ci0gICAgICAgIDxkaXYg
Y2xhc3M9ImhlYWRlciI+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZSI+Ci0gICAgICAg
ICAgICAgICAgPGgyPldlYmtpdC5jc3M8L2gyPgotICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAg
IDwvZGl2PgotICAgICAgICA8ZGl2IGNsYXNzPSJsaXN0Ij4KLSAgICAgICAgCi0gICAgICAgICAg
ICA8ZGl2IGNsYXNzPSJpdGVtIj4KLSAgICAgICAgICAgICAgICA8aDM+PGEgaHJlZj0iI1R5cG9n
cmFwaHkiPlR5cG9ncmFwaHk8L2E+PC9oMz4KLSAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAg
ICAgPGRpdiBjbGFzcz0iaXRlbSI+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGlzdCI+
Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAg
ICAgICAgICAgPGRpdiBjbGFzcz0iaXRlbSBzdWIiPgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDxhIGhyZWY9IiNUeXBvZ3JhcGh5LUhlYWRpbmdzIj5IZWFkaW5nczwvYT4KLSAgICAgICAg
ICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAg
ICAgICAKLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2
IGNsYXNzPSJpdGVtIHN1YiI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0i
I1R5cG9ncmFwaHktVGV4dCI+VGV4dDwvYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2
PgotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAg
ICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpdGVtIHN1YiI+Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI1R5cG9ncmFwaHktVGV4dCBibG9j
ayI+VGV4dCBibG9jazwvYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAg
ICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgCi0g
ICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpdGVtIHN1YiI+Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI1R5cG9ncmFwaHktUXVvdGUiPlF1b3RlPC9hPgot
ICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgIAotICAg
ICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPC9kaXY+
Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJkaXZpZGVyIj48L2Rpdj4KLSAgICAgICAgCi0gICAg
ICAgICAgICA8ZGl2IGNsYXNzPSJpdGVtIj4KLSAgICAgICAgICAgICAgICA8aDM+PGEgaHJlZj0i
I0xheW91dCI+TGF5b3V0PC9hPjwvaDM+Ci0gICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAg
IDxkaXYgY2xhc3M9Iml0ZW0iPgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Imxpc3QiPgot
ICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAK
LSAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAg
PGRpdiBjbGFzcz0iZGl2aWRlciI+PC9kaXY+Ci0gICAgICAgIAotICAgICAgICAgICAgPGRpdiBj
bGFzcz0iaXRlbSI+Ci0gICAgICAgICAgICAgICAgPGgzPjxhIGhyZWY9IiNFbGVtZW50cyI+RWxl
bWVudHM8L2E+PC9oMz4KLSAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFz
cz0iaXRlbSI+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGlzdCI+Ci0gICAgICAgICAg
ICAgICAgCi0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgPGRp
diBjbGFzcz0iaXRlbSBzdWIiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9
IiNFbGVtZW50cy1Ub3BiYXIiPlRvcGJhcjwvYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwv
ZGl2PgotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAg
ICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpdGVtIHN1YiI+
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI0VsZW1lbnRzLVNlY3Rpb24i
PlNlY3Rpb248L2E+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAg
ICAgICAgICAgCi0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIAotICAgICAg
ICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaXRlbSBzdWIiPgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDxhIGhyZWY9IiNFbGVtZW50cy1QbGFjZWhvbGRlciI+UGxhY2Vob2xkZXI8
L2E+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAg
Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAg
ICAgICAgICAgPGRpdiBjbGFzcz0iaXRlbSBzdWIiPgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDxhIGhyZWY9IiNFbGVtZW50cy1Mb2FkZXIiPkxvYWRlcjwvYT4KLSAgICAgICAgICAgICAg
ICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAK
LSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNz
PSJpdGVtIHN1YiI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI0VsZW1l
bnRzLVByb2dyZXNzIGJhciI+UHJvZ3Jlc3MgYmFyPC9hPgotICAgICAgICAgICAgICAgICAgICAg
ICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIAotICAgICAg
ICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Iml0ZW0g
c3ViIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjRWxlbWVudHMtTGlz
dCI+TGlzdDwvYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAg
ICAgICAgICAKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAg
ICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpdGVtIHN1YiI+Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPGEgaHJlZj0iI0VsZW1lbnRzLVNpZGViYXIiPlNpZGViYXI8L2E+Ci0gICAg
ICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAg
ICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAg
PGRpdiBjbGFzcz0iaXRlbSBzdWIiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhy
ZWY9IiNFbGVtZW50cy1EcmF3ZXIiPkRyYXdlcjwvYT4KLSAgICAgICAgICAgICAgICAgICAgICAg
IDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAKLSAgICAgICAg
ICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpdGVtIHN1
YiI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI0VsZW1lbnRzLVRhYmxl
Ij5UYWJsZTwvYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAg
ICAgICAgICAKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAg
ICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpdGVtIHN1YiI+Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPGEgaHJlZj0iI0VsZW1lbnRzLUlucHV0cyI+SW5wdXRzPC9hPgotICAgICAg
ICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAg
ICAgICAgIAotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgIDxk
aXYgY2xhc3M9Iml0ZW0gc3ViIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVm
PSIjRWxlbWVudHMtQnV0dG9uIj5CdXR0b248L2E+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8
L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgCi0gICAgICAgICAg
ICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaXRlbSBzdWIi
PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNFbGVtZW50cy1Td2l0Y2gi
PlN3aXRjaDwvYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAg
ICAgICAgICAKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAg
ICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpdGVtIHN1YiI+Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPGEgaHJlZj0iI0VsZW1lbnRzLUJhZGdlIj5CYWRnZTwvYT4KLSAgICAgICAg
ICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAg
ICAgICAKLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2
IGNsYXNzPSJpdGVtIHN1YiI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0i
I0VsZW1lbnRzLURvdCI+RG90PC9hPgotICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0g
ICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAg
ICAKLSAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Iml0ZW0gc3ViIj4KLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjRWxlbWVudHMtY2hpcCI+Y2hpcDwvYT4K
LSAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAKLSAg
ICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAg
ICAgICA8ZGl2IGNsYXNzPSJpdGVtIHN1YiI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
PGEgaHJlZj0iI0VsZW1lbnRzLVRhYnMiPlRhYnM8L2E+Ci0gICAgICAgICAgICAgICAgICAgICAg
ICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgCi0gICAgICAg
ICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaXRlbSBz
dWIiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNFbGVtZW50cy1UaW1l
bGluZSI+VGltZWxpbmU8L2E+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAg
ICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIAot
ICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaXRlbSBzdWIiPgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNFbGVtZW50cy1MZW5nZW5kIj5MZW5nZW5kPC9h
PgotICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgIAot
ICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAg
ICAgICAgIDxkaXYgY2xhc3M9Iml0ZW0gc3ViIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA8YSBocmVmPSIjRWxlbWVudHMtUG9wb3ZlciI+UG9wb3ZlcjwvYT4KLSAgICAgICAgICAgICAg
ICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAK
LSAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAg
PGRpdiBjbGFzcz0iZGl2aWRlciI+PC9kaXY+Ci0gICAgICAgIAotICAgICAgICA8L2Rpdj4KLSAg
ICA8L2Rpdj4KLSAgICA8IS0tIEVuZCBvZiBzaWRlYmFyIC0tPgotCi0gICAgPCEtLSBjb250ZW50
IC0tPgotICAgIDxkaXYgY2xhc3M9Im1haW4iPgotICAgICAgICAKLSAgICAgICAgICAgIDxkaXYg
aWQ9IlR5cG9ncmFwaHkiIGNsYXNzPSJzZWN0aW9uIGFydGljbGUiPgotICAgICAgICAgICAgICAg
IDxkaXYgY2xhc3M9ImhlYWRlciI+Ci0gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRp
dGxlIj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxoMT5UeXBvZ3JhcGh5PC9oMT4KLSAgICAg
ICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAg
ICAgICAgCi0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgPGRp
diBjbGFzcz0iaGVhZGVyIiBpZD0iVHlwb2dyYXBoeS1IZWFkaW5ncyI+Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGUiPgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPGgyPkhlYWRpbmdzPC9oMj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8
L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAg
ICAKLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAg
ICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiPgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDxwcmU+PHhtcD48aDE+VGhpcyBpcyBIMTwvaDE+Ci08aDI+VGhpcyBpcyBI
MjwvaDI+Ci08aDM+VGhpcyBpcyBIMzwvaDM+Ci08aDQ+VGhpcyBpcyBINDwvaDQ+PC94bXA+PC9w
cmU+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAg
ICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxo
MT5UaGlzIGlzIEgxPC9oMT4KLTxoMj5UaGlzIGlzIEgyPC9oMj4KLTxoMz5UaGlzIGlzIEgzPC9o
Mz4KLTxoND5UaGlzIGlzIEg0PC9oND4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pgot
ICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAg
ICAgCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkZXIiIGlkPSJUeXBv
Z3JhcGh5LVRleHQiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRp
dGxlIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMj5UZXh0PC9oMj4KLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwv
ZGl2PgotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAg
ICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNz
PSJjb250ZW50Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlIGNsYXNzICJ0
ZXh0IiBhbG9uZyB3aXRoIGRpZmZlcmVudCBzaXplIGNsYXNzIHRvIGNvbnRyb2wgdGhlIGZvbnQg
c2l6ZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAg
ICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudCI+
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByZT48eG1wPjxkaXYgY2xhc3M9InRleHQi
PkRlZmF1bHQ8L2Rpdj4KLTxkaXYgY2xhc3M9InRleHQgaHVnZSI+VGhpcyBpcyBIdWdlPC9kaXY+
Ci08ZGl2IGNsYXNzPSJ0ZXh0IGxhcmdlIj5UaGlzIGlzIExhcmdlPC9kaXY+Ci08ZGl2IGNsYXNz
PSJ0ZXh0IG1lZGl1bSI+VGhpcyBpcyBtZWRpdW08L2Rpdj4KLTxkaXYgY2xhc3M9InRleHQgc21h
bGwiPlRoaXMgaXMgc21hbGw8L2Rpdj4KLTxkaXYgY2xhc3M9InRleHQgdGlueSI+VGhpcyBpcyB0
aW55PC9kaXY+PC94bXA+PC9wcmU+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAg
ICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiPgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQiPkRlZmF1bHQ8L2Rpdj4KLTxkaXYgY2xh
c3M9InRleHQgaHVnZSI+VGhpcyBpcyBIdWdlPC9kaXY+Ci08ZGl2IGNsYXNzPSJ0ZXh0IGxhcmdl
Ij5UaGlzIGlzIExhcmdlPC9kaXY+Ci08ZGl2IGNsYXNzPSJ0ZXh0IG1lZGl1bSI+VGhpcyBpcyBt
ZWRpdW08L2Rpdj4KLTxkaXYgY2xhc3M9InRleHQgc21hbGwiPlRoaXMgaXMgc21hbGw8L2Rpdj4K
LTxkaXYgY2xhc3M9InRleHQgdGlueSI+VGhpcyBpcyB0aW55PC9kaXY+Ci0gICAgICAgICAgICAg
ICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAg
Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFz
cz0iaGVhZGVyIiBpZD0iVHlwb2dyYXBoeS1UZXh0LWJsb2NrIj4KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZSI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA8aDI+VGV4dCBibG9jazwvaDI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9k
aXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAg
Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudCI+Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFVzZSBjbGFzcyAidGV4dCIgYWxvbmcgd2l0aCAiYmxvY2siIHRv
IG1ha2UgaW5saW5lLWJsb2NrIHRleHQgYmxvY2tzLgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAg
ICAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8
cHJlPjx4bXA+PGRpdiBjbGFzcz0idGV4dCBibG9jayI+Ci0gICAgPGRpdiBjbGFzcz0idGV4dCB0
aW55Ij5pTWFjIDI3IiAoTGF0ZSAyMDEyKTwvZGl2PgotICAgIDxkaXYgY2xhc3M9InRleHQgc21h
bGwiPmlNYWMgMTMsMjwvZGl2PgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJ0ZXh0IGJsb2NrIj4KLSAg
ICA8ZGl2IGNsYXNzPSJ0ZXh0IHRpbnkiPmlNYWMgMjciIChMYXRlIDIwMTMpPC9kaXY+Ci0gICAg
PGRpdiBjbGFzcz0idGV4dCBzbWFsbCI+aU1hYyAxNCwyPC9kaXY+Ci08L2Rpdj48L3htcD48L3By
ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAg
ICAgPGRpdiBjbGFzcz0iY29udGVudCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRp
diBjbGFzcz0idGV4dCBibG9jayI+Ci0gICAgPGRpdiBjbGFzcz0idGV4dCB0aW55Ij5pTWFjIDI3
IiAoTGF0ZSAyMDEyKTwvZGl2PgotICAgIDxkaXYgY2xhc3M9InRleHQgc21hbGwiPmlNYWMgMTMs
MjwvZGl2PgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJ0ZXh0IGJsb2NrIj4KLSAgICA8ZGl2IGNsYXNz
PSJ0ZXh0IHRpbnkiPmlNYWMgMjciIChMYXRlIDIwMTMpPC9kaXY+Ci0gICAgPGRpdiBjbGFzcz0i
dGV4dCBzbWFsbCI+aU1hYyAxNCwyPC9kaXY+Ci08L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAg
ICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAKLSAgICAg
ICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWFk
ZXIiIGlkPSJUeXBvZ3JhcGh5LVF1b3RlIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8
ZGl2IGNsYXNzPSJ0aXRsZSI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDI+UXVv
dGU8L2gyPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAg
ICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAg
ICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAg
PGRpdiBjbGFzcz0iY29udGVudCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByZT48
eG1wPjxwcmU+Ci0gICAgSSBhbSBhIHF1b3RlCi08L3ByZT48L3htcD48L3ByZT4KLSAgICAgICAg
ICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFz
cz0iY29udGVudCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByZT4KLSAgICBJIGFt
IGEgcXVvdGUKLTwvcHJlPgotICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAg
ICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgPC9kaXY+Ci0gICAg
ICAgIAotICAgICAgICAgICAgPGRpdiBpZD0iTGF5b3V0IiBjbGFzcz0ic2VjdGlvbiBhcnRpY2xl
Ij4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkZXIiPgotICAgICAgICAgICAgICAg
ICAgICA8ZGl2IGNsYXNzPSJ0aXRsZSI+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8aDE+TGF5
b3V0PC9oMT4KLSAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgPC9k
aXY+Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAg
ICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAg
ICAgPGRpdiBjbGFzcz0iY29udGVudCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBy
ZT48eG1wPjxkaXYgY2xhc3M9InJvdyI+Ci0gICAgPGRpdiBjbGFzcz0iY29sLTEyIj4KLSAgICAg
ICAgPGRpdiBjbGFzcz0icGxhY2Vob2xkZXIgZGltbWVyIHRpbnkiPjxwIGNsYXNzPSJsb2FkZXIi
PmNvbC0xMjwvcD48L2Rpdj4KLSAgICA8L2Rpdj4KLTwvZGl2PgotPGRpdiBjbGFzcz0icm93Ij4K
LSAgICA8ZGl2IGNsYXNzPSJjb2wtNiI+Ci0gICAgICAgIDxkaXYgY2xhc3M9InBsYWNlaG9sZGVy
IGRpbW1lciB0aW55Ij48cCBjbGFzcz0ibG9hZGVyIj5jb2wtNjwvcD48L2Rpdj4KLSAgICA8L2Rp
dj4KLSAgICA8ZGl2IGNsYXNzPSJjb2wtNiI+Ci0gICAgICAgIDxkaXYgY2xhc3M9InBsYWNlaG9s
ZGVyIGRpbW1lciB0aW55Ij48cCBjbGFzcz0ibG9hZGVyIj5jb2wtNjwvcD48L2Rpdj4KLSAgICA8
L2Rpdj4KLTwvZGl2PgotPGRpdiBjbGFzcz0icm93Ij4KLSAgICA8ZGl2IGNsYXNzPSJjb2wtNCI+
Ci0gICAgICAgIDxkaXYgY2xhc3M9InBsYWNlaG9sZGVyIGRpbW1lciB0aW55Ij48cCBjbGFzcz0i
bG9hZGVyIj5jb2wtNDwvcD48L2Rpdj4KLSAgICA8L2Rpdj4KLSAgICA8ZGl2IGNsYXNzPSJjb2wt
OCI+Ci0gICAgICAgIDxkaXYgY2xhc3M9InBsYWNlaG9sZGVyIGRpbW1lciB0aW55Ij48cCBjbGFz
cz0ibG9hZGVyIj5jb2wtODwvcD48L2Rpdj4KLSAgICA8L2Rpdj4KLTwvZGl2PgotPGRpdiBjbGFz
cz0icm93Ij4KLSAgICA8ZGl2IGNsYXNzPSJjb2wtMiI+Ci0gICAgICAgIDxkaXYgY2xhc3M9InBs
YWNlaG9sZGVyIGRpbW1lciB0aW55Ij48cCBjbGFzcz0ibG9hZGVyIj5jb2wtMjwvcD48L2Rpdj4K
LSAgICA8L2Rpdj4KLSAgICA8ZGl2IGNsYXNzPSJjb2wtMiI+Ci0gICAgICAgIDxkaXYgY2xhc3M9
InBsYWNlaG9sZGVyIGRpbW1lciB0aW55Ij48cCBjbGFzcz0ibG9hZGVyIj5jb2wtMjwvcD48L2Rp
dj4KLSAgICA8L2Rpdj4KLSAgICA8ZGl2IGNsYXNzPSJjb2wtOCI+Ci0gICAgICAgIDxkaXYgY2xh
c3M9InBsYWNlaG9sZGVyIGRpbW1lciB0aW55Ij48cCBjbGFzcz0ibG9hZGVyIj5jb2wtODwvcD48
L2Rpdj4KLSAgICA8L2Rpdj4KLTwvZGl2PgotPGRpdiBjbGFzcz0icm93Ij4KLSAgICA8ZGl2IGNs
YXNzPSJjb2wtMSI+PGRpdiBjbGFzcz0icGxhY2Vob2xkZXIgZGltbWVyIHRpbnkiPjxwIGNsYXNz
PSJsb2FkZXIiPmNvbC0xPC9wPjwvZGl2PjwvZGl2PgotICAgIDxkaXYgY2xhc3M9ImNvbC0xIj48
ZGl2IGNsYXNzPSJwbGFjZWhvbGRlciBkaW1tZXIgdGlueSI+PHAgY2xhc3M9ImxvYWRlciI+Y29s
LTE8L3A+PC9kaXY+PC9kaXY+Ci0gICAgPGRpdiBjbGFzcz0iY29sLTEiPjxkaXYgY2xhc3M9InBs
YWNlaG9sZGVyIGRpbW1lciB0aW55Ij48cCBjbGFzcz0ibG9hZGVyIj5jb2wtMTwvcD48L2Rpdj48
L2Rpdj4KLSAgICA8ZGl2IGNsYXNzPSJjb2wtMSI+PGRpdiBjbGFzcz0icGxhY2Vob2xkZXIgZGlt
bWVyIHRpbnkiPjxwIGNsYXNzPSJsb2FkZXIiPmNvbC0xPC9wPjwvZGl2PjwvZGl2PgotICAgIDxk
aXYgY2xhc3M9ImNvbC0xIj48ZGl2IGNsYXNzPSJwbGFjZWhvbGRlciBkaW1tZXIgdGlueSI+PHAg
Y2xhc3M9ImxvYWRlciI+Y29sLTE8L3A+PC9kaXY+PC9kaXY+Ci0gICAgPGRpdiBjbGFzcz0iY29s
LTEiPjxkaXYgY2xhc3M9InBsYWNlaG9sZGVyIGRpbW1lciB0aW55Ij48cCBjbGFzcz0ibG9hZGVy
Ij5jb2wtMTwvcD48L2Rpdj48L2Rpdj4KLSAgICA8ZGl2IGNsYXNzPSJjb2wtMSI+PGRpdiBjbGFz
cz0icGxhY2Vob2xkZXIgZGltbWVyIHRpbnkiPjxwIGNsYXNzPSJsb2FkZXIiPmNvbC0xPC9wPjwv
ZGl2PjwvZGl2PgotICAgIDxkaXYgY2xhc3M9ImNvbC0xIj48ZGl2IGNsYXNzPSJwbGFjZWhvbGRl
ciBkaW1tZXIgdGlueSI+PHAgY2xhc3M9ImxvYWRlciI+Y29sLTE8L3A+PC9kaXY+PC9kaXY+Ci0g
ICAgPGRpdiBjbGFzcz0iY29sLTEiPjxkaXYgY2xhc3M9InBsYWNlaG9sZGVyIGRpbW1lciB0aW55
Ij48cCBjbGFzcz0ibG9hZGVyIj5jb2wtMTwvcD48L2Rpdj48L2Rpdj4KLSAgICA8ZGl2IGNsYXNz
PSJjb2wtMSI+PGRpdiBjbGFzcz0icGxhY2Vob2xkZXIgZGltbWVyIHRpbnkiPjxwIGNsYXNzPSJs
b2FkZXIiPmNvbC0xPC9wPjwvZGl2PjwvZGl2PgotICAgIDxkaXYgY2xhc3M9ImNvbC0xIj48ZGl2
IGNsYXNzPSJwbGFjZWhvbGRlciBkaW1tZXIgdGlueSI+PHAgY2xhc3M9ImxvYWRlciI+Y29sLTE8
L3A+PC9kaXY+PC9kaXY+Ci0gICAgPGRpdiBjbGFzcz0iY29sLTEiPjxkaXYgY2xhc3M9InBsYWNl
aG9sZGVyIGRpbW1lciB0aW55Ij48cCBjbGFzcz0ibG9hZGVyIj5jb2wtMTwvcD48L2Rpdj48L2Rp
dj4KLTwvZGl2PgotCi08ZGl2IGNsYXNzPSJyb3ciPgotICAgIDxkaXYgY2xhc3M9ImNvbC1zLTEy
Ij4KLSAgICAgICAgPGRpdiBjbGFzcz0icGxhY2Vob2xkZXIgZGltbWVyIHRpbnkiPjxwIGNsYXNz
PSJsb2FkZXIiPmNvbC1zLTEyPC9wPjwvZGl2PgotICAgIDwvZGl2PgotPC9kaXY+Ci08ZGl2IGNs
YXNzPSJyb3ciPgotICAgIDxkaXYgY2xhc3M9ImNvbC1zLTYiPgotICAgICAgICA8ZGl2IGNsYXNz
PSJwbGFjZWhvbGRlciBkaW1tZXIgdGlueSI+PHAgY2xhc3M9ImxvYWRlciI+Y29sLXMtNjwvcD48
L2Rpdj4KLSAgICA8L2Rpdj4KLSAgICA8ZGl2IGNsYXNzPSJjb2wtcy02Ij4KLSAgICAgICAgPGRp
diBjbGFzcz0icGxhY2Vob2xkZXIgZGltbWVyIHRpbnkiPjxwIGNsYXNzPSJsb2FkZXIiPmNvbC1z
LTY8L3A+PC9kaXY+Ci0gICAgPC9kaXY+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9InJvdyI+Ci0gICAg
PGRpdiBjbGFzcz0iY29sLXMtNCI+Ci0gICAgICAgIDxkaXYgY2xhc3M9InBsYWNlaG9sZGVyIGRp
bW1lciB0aW55Ij48cCBjbGFzcz0ibG9hZGVyIj5jb2wtcy00PC9wPjwvZGl2PgotICAgIDwvZGl2
PgotICAgIDxkaXYgY2xhc3M9ImNvbC1zLTgiPgotICAgICAgICA8ZGl2IGNsYXNzPSJwbGFjZWhv
bGRlciBkaW1tZXIgdGlueSI+PHAgY2xhc3M9ImxvYWRlciI+Y29sLXMtODwvcD48L2Rpdj4KLSAg
ICA8L2Rpdj4KLTwvZGl2PgotPGRpdiBjbGFzcz0icm93Ij4KLSAgICA8ZGl2IGNsYXNzPSJjb2wt
cy0yIj4KLSAgICAgICAgPGRpdiBjbGFzcz0icGxhY2Vob2xkZXIgZGltbWVyIHRpbnkiPjxwIGNs
YXNzPSJsb2FkZXIiPmNvbC1zLTI8L3A+PC9kaXY+Ci0gICAgPC9kaXY+Ci0gICAgPGRpdiBjbGFz
cz0iY29sLXMtMiI+Ci0gICAgICAgIDxkaXYgY2xhc3M9InBsYWNlaG9sZGVyIGRpbW1lciB0aW55
Ij48cCBjbGFzcz0ibG9hZGVyIj5jb2wtcy0yPC9wPjwvZGl2PgotICAgIDwvZGl2PgotICAgIDxk
aXYgY2xhc3M9ImNvbC1zLTgiPgotICAgICAgICA8ZGl2IGNsYXNzPSJwbGFjZWhvbGRlciBkaW1t
ZXIgdGlueSI+PHAgY2xhc3M9ImxvYWRlciI+Y29sLXMtODwvcD48L2Rpdj4KLSAgICA8L2Rpdj4K
LTwvZGl2PjwveG1wPjwvcHJlPgotICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAg
ICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ciPgotICAgIDxkaXYgY2xhc3M9ImNvbC0xMiI+
Ci0gICAgICAgIDxkaXYgY2xhc3M9InBsYWNlaG9sZGVyIGRpbW1lciB0aW55Ij48cCBjbGFzcz0i
bG9hZGVyIj5jb2wtMTI8L3A+PC9kaXY+Ci0gICAgPC9kaXY+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9
InJvdyI+Ci0gICAgPGRpdiBjbGFzcz0iY29sLTYiPgotICAgICAgICA8ZGl2IGNsYXNzPSJwbGFj
ZWhvbGRlciBkaW1tZXIgdGlueSI+PHAgY2xhc3M9ImxvYWRlciI+Y29sLTY8L3A+PC9kaXY+Ci0g
ICAgPC9kaXY+Ci0gICAgPGRpdiBjbGFzcz0iY29sLTYiPgotICAgICAgICA8ZGl2IGNsYXNzPSJw
bGFjZWhvbGRlciBkaW1tZXIgdGlueSI+PHAgY2xhc3M9ImxvYWRlciI+Y29sLTY8L3A+PC9kaXY+
Ci0gICAgPC9kaXY+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9InJvdyI+Ci0gICAgPGRpdiBjbGFzcz0i
Y29sLTQiPgotICAgICAgICA8ZGl2IGNsYXNzPSJwbGFjZWhvbGRlciBkaW1tZXIgdGlueSI+PHAg
Y2xhc3M9ImxvYWRlciI+Y29sLTQ8L3A+PC9kaXY+Ci0gICAgPC9kaXY+Ci0gICAgPGRpdiBjbGFz
cz0iY29sLTgiPgotICAgICAgICA8ZGl2IGNsYXNzPSJwbGFjZWhvbGRlciBkaW1tZXIgdGlueSI+
PHAgY2xhc3M9ImxvYWRlciI+Y29sLTg8L3A+PC9kaXY+Ci0gICAgPC9kaXY+Ci08L2Rpdj4KLTxk
aXYgY2xhc3M9InJvdyI+Ci0gICAgPGRpdiBjbGFzcz0iY29sLTIiPgotICAgICAgICA8ZGl2IGNs
YXNzPSJwbGFjZWhvbGRlciBkaW1tZXIgdGlueSI+PHAgY2xhc3M9ImxvYWRlciI+Y29sLTI8L3A+
PC9kaXY+Ci0gICAgPC9kaXY+Ci0gICAgPGRpdiBjbGFzcz0iY29sLTIiPgotICAgICAgICA8ZGl2
IGNsYXNzPSJwbGFjZWhvbGRlciBkaW1tZXIgdGlueSI+PHAgY2xhc3M9ImxvYWRlciI+Y29sLTI8
L3A+PC9kaXY+Ci0gICAgPC9kaXY+Ci0gICAgPGRpdiBjbGFzcz0iY29sLTgiPgotICAgICAgICA8
ZGl2IGNsYXNzPSJwbGFjZWhvbGRlciBkaW1tZXIgdGlueSI+PHAgY2xhc3M9ImxvYWRlciI+Y29s
LTg8L3A+PC9kaXY+Ci0gICAgPC9kaXY+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9InJvdyI+Ci0gICAg
PGRpdiBjbGFzcz0iY29sLTEiPjxkaXYgY2xhc3M9InBsYWNlaG9sZGVyIGRpbW1lciB0aW55Ij48
cCBjbGFzcz0ibG9hZGVyIj5jb2wtMTwvcD48L2Rpdj48L2Rpdj4KLSAgICA8ZGl2IGNsYXNzPSJj
b2wtMSI+PGRpdiBjbGFzcz0icGxhY2Vob2xkZXIgZGltbWVyIHRpbnkiPjxwIGNsYXNzPSJsb2Fk
ZXIiPmNvbC0xPC9wPjwvZGl2PjwvZGl2PgotICAgIDxkaXYgY2xhc3M9ImNvbC0xIj48ZGl2IGNs
YXNzPSJwbGFjZWhvbGRlciBkaW1tZXIgdGlueSI+PHAgY2xhc3M9ImxvYWRlciI+Y29sLTE8L3A+
PC9kaXY+PC9kaXY+Ci0gICAgPGRpdiBjbGFzcz0iY29sLTEiPjxkaXYgY2xhc3M9InBsYWNlaG9s
ZGVyIGRpbW1lciB0aW55Ij48cCBjbGFzcz0ibG9hZGVyIj5jb2wtMTwvcD48L2Rpdj48L2Rpdj4K
LSAgICA8ZGl2IGNsYXNzPSJjb2wtMSI+PGRpdiBjbGFzcz0icGxhY2Vob2xkZXIgZGltbWVyIHRp
bnkiPjxwIGNsYXNzPSJsb2FkZXIiPmNvbC0xPC9wPjwvZGl2PjwvZGl2PgotICAgIDxkaXYgY2xh
c3M9ImNvbC0xIj48ZGl2IGNsYXNzPSJwbGFjZWhvbGRlciBkaW1tZXIgdGlueSI+PHAgY2xhc3M9
ImxvYWRlciI+Y29sLTE8L3A+PC9kaXY+PC9kaXY+Ci0gICAgPGRpdiBjbGFzcz0iY29sLTEiPjxk
aXYgY2xhc3M9InBsYWNlaG9sZGVyIGRpbW1lciB0aW55Ij48cCBjbGFzcz0ibG9hZGVyIj5jb2wt
MTwvcD48L2Rpdj48L2Rpdj4KLSAgICA8ZGl2IGNsYXNzPSJjb2wtMSI+PGRpdiBjbGFzcz0icGxh
Y2Vob2xkZXIgZGltbWVyIHRpbnkiPjxwIGNsYXNzPSJsb2FkZXIiPmNvbC0xPC9wPjwvZGl2Pjwv
ZGl2PgotICAgIDxkaXYgY2xhc3M9ImNvbC0xIj48ZGl2IGNsYXNzPSJwbGFjZWhvbGRlciBkaW1t
ZXIgdGlueSI+PHAgY2xhc3M9ImxvYWRlciI+Y29sLTE8L3A+PC9kaXY+PC9kaXY+Ci0gICAgPGRp
diBjbGFzcz0iY29sLTEiPjxkaXYgY2xhc3M9InBsYWNlaG9sZGVyIGRpbW1lciB0aW55Ij48cCBj
bGFzcz0ibG9hZGVyIj5jb2wtMTwvcD48L2Rpdj48L2Rpdj4KLSAgICA8ZGl2IGNsYXNzPSJjb2wt
MSI+PGRpdiBjbGFzcz0icGxhY2Vob2xkZXIgZGltbWVyIHRpbnkiPjxwIGNsYXNzPSJsb2FkZXIi
PmNvbC0xPC9wPjwvZGl2PjwvZGl2PgotICAgIDxkaXYgY2xhc3M9ImNvbC0xIj48ZGl2IGNsYXNz
PSJwbGFjZWhvbGRlciBkaW1tZXIgdGlueSI+PHAgY2xhc3M9ImxvYWRlciI+Y29sLTE8L3A+PC9k
aXY+PC9kaXY+Ci08L2Rpdj4KLQotPGRpdiBjbGFzcz0icm93Ij4KLSAgICA8ZGl2IGNsYXNzPSJj
b2wtcy0xMiI+Ci0gICAgICAgIDxkaXYgY2xhc3M9InBsYWNlaG9sZGVyIGRpbW1lciB0aW55Ij48
cCBjbGFzcz0ibG9hZGVyIj5jb2wtcy0xMjwvcD48L2Rpdj4KLSAgICA8L2Rpdj4KLTwvZGl2Pgot
PGRpdiBjbGFzcz0icm93Ij4KLSAgICA8ZGl2IGNsYXNzPSJjb2wtcy02Ij4KLSAgICAgICAgPGRp
diBjbGFzcz0icGxhY2Vob2xkZXIgZGltbWVyIHRpbnkiPjxwIGNsYXNzPSJsb2FkZXIiPmNvbC1z
LTY8L3A+PC9kaXY+Ci0gICAgPC9kaXY+Ci0gICAgPGRpdiBjbGFzcz0iY29sLXMtNiI+Ci0gICAg
ICAgIDxkaXYgY2xhc3M9InBsYWNlaG9sZGVyIGRpbW1lciB0aW55Ij48cCBjbGFzcz0ibG9hZGVy
Ij5jb2wtcy02PC9wPjwvZGl2PgotICAgIDwvZGl2PgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJyb3ci
PgotICAgIDxkaXYgY2xhc3M9ImNvbC1zLTQiPgotICAgICAgICA8ZGl2IGNsYXNzPSJwbGFjZWhv
bGRlciBkaW1tZXIgdGlueSI+PHAgY2xhc3M9ImxvYWRlciI+Y29sLXMtNDwvcD48L2Rpdj4KLSAg
ICA8L2Rpdj4KLSAgICA8ZGl2IGNsYXNzPSJjb2wtcy04Ij4KLSAgICAgICAgPGRpdiBjbGFzcz0i
cGxhY2Vob2xkZXIgZGltbWVyIHRpbnkiPjxwIGNsYXNzPSJsb2FkZXIiPmNvbC1zLTg8L3A+PC9k
aXY+Ci0gICAgPC9kaXY+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9InJvdyI+Ci0gICAgPGRpdiBjbGFz
cz0iY29sLXMtMiI+Ci0gICAgICAgIDxkaXYgY2xhc3M9InBsYWNlaG9sZGVyIGRpbW1lciB0aW55
Ij48cCBjbGFzcz0ibG9hZGVyIj5jb2wtcy0yPC9wPjwvZGl2PgotICAgIDwvZGl2PgotICAgIDxk
aXYgY2xhc3M9ImNvbC1zLTIiPgotICAgICAgICA8ZGl2IGNsYXNzPSJwbGFjZWhvbGRlciBkaW1t
ZXIgdGlueSI+PHAgY2xhc3M9ImxvYWRlciI+Y29sLXMtMjwvcD48L2Rpdj4KLSAgICA8L2Rpdj4K
LSAgICA8ZGl2IGNsYXNzPSJjb2wtcy04Ij4KLSAgICAgICAgPGRpdiBjbGFzcz0icGxhY2Vob2xk
ZXIgZGltbWVyIHRpbnkiPjxwIGNsYXNzPSJsb2FkZXIiPmNvbC1zLTg8L3A+PC9kaXY+Ci0gICAg
PC9kaXY+Ci08L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAg
ICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIDwvZGl2PgotICAgICAg
ICAKLSAgICAgICAgICAgIDxkaXYgaWQ9IkVsZW1lbnRzIiBjbGFzcz0ic2VjdGlvbiBhcnRpY2xl
Ij4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkZXIiPgotICAgICAgICAgICAgICAg
ICAgICA8ZGl2IGNsYXNzPSJ0aXRsZSI+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8aDE+RWxl
bWVudHM8L2gxPgotICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICA8
L2Rpdj4KLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAg
ICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkZXIiIGlkPSJFbGVtZW50cy1Ub3BiYXIiPgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlIj4KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDxoMj5Ub3BiYXI8L2gyPgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAg
ICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAg
ICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudCI+Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPHByZT48eG1wPjxkaXYgY2xhc3M9InRvcGJhciI+Ci0g
ICAgPGRpdiBjbGFzcz0idGl0bGUiPk15IEFwcDwvZGl2PgotICAgIDxkaXYgY2xhc3M9ImFjdGlv
bnMiPgotICAgICAgICA8ZGl2IGNsYXNzPSJsaXN0Ij4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9
Iml0ZW0iPgotICAgICAgICAgICAgICAgIDxhPmxpbmsgMTwvYT4KLSAgICAgICAgICAgIDwvZGl2
PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0iaXRlbSI+Ci0gICAgICAgICAgICAgICAgPGE+bGlu
ayAyPC9hPgotICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJpdGVt
Ij4KLSAgICAgICAgICAgICAgICA8YT5saW5rIDM8L2E+Ci0gICAgICAgICAgICA8L2Rpdj4KLSAg
ICAgICAgPC9kaXY+Ci0gICAgPC9kaXY+Ci08L2Rpdj48L3htcD48L3ByZT4KLSAgICAgICAgICAg
ICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0i
Y29udGVudCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idG9wYmFy
Ij4KLSAgICA8ZGl2IGNsYXNzPSJ0aXRsZSI+TXkgQXBwPC9kaXY+Ci0gICAgPGRpdiBjbGFzcz0i
YWN0aW9ucyI+Ci0gICAgICAgIDxkaXYgY2xhc3M9Imxpc3QiPgotICAgICAgICAgICAgPGRpdiBj
bGFzcz0iaXRlbSI+Ci0gICAgICAgICAgICAgICAgPGE+bGluayAxPC9hPgotICAgICAgICAgICAg
PC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJpdGVtIj4KLSAgICAgICAgICAgICAgICA8
YT5saW5rIDI8L2E+Ci0gICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9
Iml0ZW0iPgotICAgICAgICAgICAgICAgIDxhPmxpbmsgMzwvYT4KLSAgICAgICAgICAgIDwvZGl2
PgotICAgICAgICA8L2Rpdj4KLSAgICA8L2Rpdj4KLTwvZGl2PgotICAgICAgICAgICAgICAgICAg
ICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIAotICAg
ICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Imhl
YWRlciIgaWQ9IkVsZW1lbnRzLVNlY3Rpb24iPgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDxkaXYgY2xhc3M9InRpdGxlIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMj5T
ZWN0aW9uPC9oMj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAg
ICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAg
ICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAg
ICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxw
cmU+PHhtcD48ZGl2IGNsYXNzPSJjb250ZW50Ij4KLSAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uIj4K
LSAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGVyIj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9InRp
dGxlIj4KLSAgICAgICAgICAgICAgICBUaXRsZQotICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAg
ICAgICA8ZGl2IGNsYXNzPSJhY3Rpb25zIj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJs
aXN0Ij4KLSAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaXRlbSI+Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBhY3Rpb24gMQotICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAg
ICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaXRlbSI+Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBhY3Rpb24gMgotICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICA8
L2Rpdj4KLSAgICAgICAgICAgIDwvZGl2PgotICAgICAgICA8L2Rpdj4KLSAgICAgICAgPGRpdiBj
bGFzcz0iY29udGVudCI+Ci0gICAgICAgICAgICA8cD5Mb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1l
dCwgY29uc2VjdGV0dXIgYWRpcGlzY2luZyBlbGl0LCBzZWQgZG8gZWl1c21vZCB0ZW1wb3IgaW5j
aWRpZHVudCB1dCBsYWJvcmUgZXQgZG9sb3JlIG1hZ25hIGFsaXF1YS4gVXQgZW5pbSBhZCBtaW5p
bSB2ZW5pYW0sIHF1aXMgbm9zdHJ1ZCBleGVyY2l0YXRpb24gdWxsYW1jbyBsYWJvcmlzIG5pc2kg
dXQgYWxpcXVpcCBleCBlYSBjb21tb2RvIGNvbnNlcXVhdC4gRHVpcyBhdXRlIGlydXJlIGRvbG9y
IGluIHJlcHJlaGVuZGVyaXQgaW4gdm9sdXB0YXRlIHZlbGl0IGVzc2UgY2lsbHVtIGRvbG9yZSBl
dSBmdWdpYXQgbnVsbGEgcGFyaWF0dXIuIEV4Y2VwdGV1ciBzaW50IG9jY2FlY2F0IGN1cGlkYXRh
dCBub24gcHJvaWRlbnQsIHN1bnQgaW4gY3VscGEgcXVpIG9mZmljaWEgZGVzZXJ1bnQgbW9sbGl0
IGFuaW0gaWQgZXN0IGxhYm9ydW0uPC9wPgotICAgICAgICA8L2Rpdj4KLSAgICAgICAgPGRpdiBj
bGFzcz0iYWN0aW9ucyI+Ci0gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJidXR0b24iPkJ1dHRv
biAxPC9idXR0b24+Ci0gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJidXR0b24iPkJ1dHRvbiAy
PC9idXR0b24+Ci0gICAgICAgIDwvZGl2PgotICAgIDwvZGl2PgotPC9kaXY+PC94bXA+PC9wcmU+
Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAg
IDxkaXYgY2xhc3M9ImNvbnRlbnQiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYg
Y2xhc3M9ImNvbnRlbnQiPgotICAgIDxkaXYgY2xhc3M9InNlY3Rpb24iPgotICAgICAgICA8ZGl2
IGNsYXNzPSJoZWFkZXIiPgotICAgICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGUiPgotICAgICAg
ICAgICAgICAgIFRpdGxlCi0gICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xh
c3M9ImFjdGlvbnMiPgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Imxpc3QiPgotICAgICAg
ICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpdGVtIj4KLSAgICAgICAgICAgICAgICAgICAgICAg
IGFjdGlvbiAxCi0gICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAg
ICA8ZGl2IGNsYXNzPSJpdGVtIj4KLSAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbiAyCi0g
ICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAg
ICAgICAgPC9kaXY+Ci0gICAgICAgIDwvZGl2PgotICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50
Ij4KLSAgICAgICAgICAgIDxwPkxvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1
ciBhZGlwaXNjaW5nIGVsaXQsIHNlZCBkbyBlaXVzbW9kIHRlbXBvciBpbmNpZGlkdW50IHV0IGxh
Ym9yZSBldCBkb2xvcmUgbWFnbmEgYWxpcXVhLiBVdCBlbmltIGFkIG1pbmltIHZlbmlhbSwgcXVp
cyBub3N0cnVkIGV4ZXJjaXRhdGlvbiB1bGxhbWNvIGxhYm9yaXMgbmlzaSB1dCBhbGlxdWlwIGV4
IGVhIGNvbW1vZG8gY29uc2VxdWF0LiBEdWlzIGF1dGUgaXJ1cmUgZG9sb3IgaW4gcmVwcmVoZW5k
ZXJpdCBpbiB2b2x1cHRhdGUgdmVsaXQgZXNzZSBjaWxsdW0gZG9sb3JlIGV1IGZ1Z2lhdCBudWxs
YSBwYXJpYXR1ci4gRXhjZXB0ZXVyIHNpbnQgb2NjYWVjYXQgY3VwaWRhdGF0IG5vbiBwcm9pZGVu
dCwgc3VudCBpbiBjdWxwYSBxdWkgb2ZmaWNpYSBkZXNlcnVudCBtb2xsaXQgYW5pbSBpZCBlc3Qg
bGFib3J1bS48L3A+Ci0gICAgICAgIDwvZGl2PgotICAgICAgICA8ZGl2IGNsYXNzPSJhY3Rpb25z
Ij4KLSAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImJ1dHRvbiI+QnV0dG9uIDE8L2J1dHRvbj4K
LSAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImJ1dHRvbiI+QnV0dG9uIDI8L2J1dHRvbj4KLSAg
ICAgICAgPC9kaXY+Ci0gICAgPC9kaXY+Ci08L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAg
IDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgIAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiPgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBVc2UgImFydGljbGUiIG1vZGlmaWVyIHRvIGdldCBy
aWQgb2YgdGhlIGJvcmRlcjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAg
ICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFz
cz0iY29udGVudCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByZT48eG1wPjxkaXYg
Y2xhc3M9ImNvbnRlbnQiPgotICAgIDxkaXYgY2xhc3M9InNlY3Rpb24gYXJ0aWNsZSI+Ci0gICAg
ICAgIDxkaXYgY2xhc3M9ImhlYWRlciI+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZSI+
Ci0gICAgICAgICAgICAgICAgVGl0bGUKLSAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAg
PGRpdiBjbGFzcz0iYWN0aW9ucyI+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGlzdCI+
Ci0gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Iml0ZW0iPgotICAgICAgICAgICAgICAg
ICAgICAgICAgYWN0aW9uIDEKLSAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAg
ICAgICAgICAgIDxkaXYgY2xhc3M9Iml0ZW0iPgotICAgICAgICAgICAgICAgICAgICAgICAgYWN0
aW9uIDIKLSAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgPC9kaXY+
Ci0gICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgPC9kaXY+Ci0gICAgICAgIDxkaXYgY2xhc3M9
ImNvbnRlbnQiPgotICAgICAgICAgICAgPHA+TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNv
bnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdCwgc2VkIGRvIGVpdXNtb2QgdGVtcG9yIGluY2lkaWR1
bnQgdXQgbGFib3JlIGV0IGRvbG9yZSBtYWduYSBhbGlxdWEuIFV0IGVuaW0gYWQgbWluaW0gdmVu
aWFtLCBxdWlzIG5vc3RydWQgZXhlcmNpdGF0aW9uIHVsbGFtY28gbGFib3JpcyBuaXNpIHV0IGFs
aXF1aXAgZXggZWEgY29tbW9kbyBjb25zZXF1YXQuIER1aXMgYXV0ZSBpcnVyZSBkb2xvciBpbiBy
ZXByZWhlbmRlcml0IGluIHZvbHVwdGF0ZSB2ZWxpdCBlc3NlIGNpbGx1bSBkb2xvcmUgZXUgZnVn
aWF0IG51bGxhIHBhcmlhdHVyLiBFeGNlcHRldXIgc2ludCBvY2NhZWNhdCBjdXBpZGF0YXQgbm9u
IHByb2lkZW50LCBzdW50IGluIGN1bHBhIHF1aSBvZmZpY2lhIGRlc2VydW50IG1vbGxpdCBhbmlt
IGlkIGVzdCBsYWJvcnVtLjwvcD4KLSAgICAgICAgPC9kaXY+Ci0gICAgICAgIDxkaXYgY2xhc3M9
ImFjdGlvbnMiPgotICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnV0dG9uIj5CdXR0b24gMTwv
YnV0dG9uPgotICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnV0dG9uIj5CdXR0b24gMjwvYnV0
dG9uPgotICAgICAgICA8L2Rpdj4KLSAgICA8L2Rpdj4KLTwvZGl2PjwveG1wPjwvcHJlPgotICAg
ICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2
IGNsYXNzPSJjb250ZW50Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNz
PSJjb250ZW50Ij4KLSAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uIGFydGljbGUiPgotICAgICAgICA8
ZGl2IGNsYXNzPSJoZWFkZXIiPgotICAgICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGUiPgotICAg
ICAgICAgICAgICAgIFRpdGxlCi0gICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDxkaXYg
Y2xhc3M9ImFjdGlvbnMiPgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Imxpc3QiPgotICAg
ICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpdGVtIj4KLSAgICAgICAgICAgICAgICAgICAg
ICAgIGFjdGlvbiAxCi0gICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAg
ICAgICA8ZGl2IGNsYXNzPSJpdGVtIj4KLSAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbiAy
Ci0gICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgIDwvZGl2PgotICAg
ICAgICAgICAgPC9kaXY+Ci0gICAgICAgIDwvZGl2PgotICAgICAgICA8ZGl2IGNsYXNzPSJjb250
ZW50Ij4KLSAgICAgICAgICAgIDxwPkxvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0
ZXR1ciBhZGlwaXNjaW5nIGVsaXQsIHNlZCBkbyBlaXVzbW9kIHRlbXBvciBpbmNpZGlkdW50IHV0
IGxhYm9yZSBldCBkb2xvcmUgbWFnbmEgYWxpcXVhLiBVdCBlbmltIGFkIG1pbmltIHZlbmlhbSwg
cXVpcyBub3N0cnVkIGV4ZXJjaXRhdGlvbiB1bGxhbWNvIGxhYm9yaXMgbmlzaSB1dCBhbGlxdWlw
IGV4IGVhIGNvbW1vZG8gY29uc2VxdWF0LiBEdWlzIGF1dGUgaXJ1cmUgZG9sb3IgaW4gcmVwcmVo
ZW5kZXJpdCBpbiB2b2x1cHRhdGUgdmVsaXQgZXNzZSBjaWxsdW0gZG9sb3JlIGV1IGZ1Z2lhdCBu
dWxsYSBwYXJpYXR1ci4gRXhjZXB0ZXVyIHNpbnQgb2NjYWVjYXQgY3VwaWRhdGF0IG5vbiBwcm9p
ZGVudCwgc3VudCBpbiBjdWxwYSBxdWkgb2ZmaWNpYSBkZXNlcnVudCBtb2xsaXQgYW5pbSBpZCBl
c3QgbGFib3J1bS48L3A+Ci0gICAgICAgIDwvZGl2PgotICAgICAgICA8ZGl2IGNsYXNzPSJhY3Rp
b25zIj4KLSAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImJ1dHRvbiI+QnV0dG9uIDE8L2J1dHRv
bj4KLSAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImJ1dHRvbiI+QnV0dG9uIDI8L2J1dHRvbj4K
LSAgICAgICAgPC9kaXY+Ci0gICAgPC9kaXY+Ci08L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAg
ICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAKLSAgICAg
ICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWFk
ZXIiIGlkPSJFbGVtZW50cy1QbGFjZWhvbGRlciI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPGRpdiBjbGFzcz0idGl0bGUiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgy
PlBsYWNlaG9sZGVyPC9oMj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAg
ICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAKLSAgICAg
ICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAg
ICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiPgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDxwcmU+PHhtcD48ZGl2IGNsYXNzPSJwbGFjZWhvbGRlciI+IDxwIGNsYXNzPSJsb2FkZXIi
PnBsYWNlaG9sZGVyPC9wPiA8L2Rpdj4KLTxkaXYgY2xhc3M9InBsYWNlaG9sZGVyIHNtYWxsIj48
cCBjbGFzcz0ibG9hZGVyIj5wbGFjZWhvbGRlciBzbWFsbDwvcD4gPC9kaXY+Ci08ZGl2IGNsYXNz
PSJwbGFjZWhvbGRlciB0aW55Ij48cCBjbGFzcz0ibG9hZGVyIj5wbGFjZWhvbGRlciB0aW55PC9w
PjwvZGl2PjwveG1wPjwvcHJlPgotICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAg
ICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwbGFjZWhvbGRlciI+IDxwIGNsYXNzPSJsb2FkZXIi
PnBsYWNlaG9sZGVyPC9wPiA8L2Rpdj4KLTxkaXYgY2xhc3M9InBsYWNlaG9sZGVyIHNtYWxsIj48
cCBjbGFzcz0ibG9hZGVyIj5wbGFjZWhvbGRlciBzbWFsbDwvcD4gPC9kaXY+Ci08ZGl2IGNsYXNz
PSJwbGFjZWhvbGRlciB0aW55Ij48cCBjbGFzcz0ibG9hZGVyIj5wbGFjZWhvbGRlciB0aW55PC9w
PjwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAg
ICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPGRpdiBjbGFzcz0iY29udGVudCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFVzZSAiZGltbWVyIiBtb2RpZmllciB0byBtYWtlIHRoZSBwbGFjZWhvbGRlciBkYXJrCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAK
LSAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiPgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDxwcmU+PHhtcD48ZGl2IGNsYXNzPSJwbGFjZWhvbGRlciBkaW1t
ZXIiPiA8cCBjbGFzcz0ibG9hZGVyIj5wbGFjZWhvbGRlcjwvcD4gPC9kaXY+PC94bXA+PC9wcmU+
Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAg
IDxkaXYgY2xhc3M9ImNvbnRlbnQiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYg
Y2xhc3M9InBsYWNlaG9sZGVyIGRpbW1lciI+IDxwIGNsYXNzPSJsb2FkZXIiPnBsYWNlaG9sZGVy
PC9wPiA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAg
ICAgICAgICAKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAg
ICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkZXIiIGlkPSJFbGVtZW50cy1Mb2FkZXIi
PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlIj4KLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDxoMj5Mb2FkZXI8L2gyPgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAg
ICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAg
ICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQi
PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaXplCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAg
ICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiPgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDxwcmU+PHhtcD48ZGl2IGNsYXNzPSJsb2FkZXIiPgotICAgIDxkaXYgY2xhc3M9InNw
aW5uZXIgaHVnZSI+Ci0gICAgPC9kaXY+Ci0gICAgPGRpdiBjbGFzcz0ic3Bpbm5lciBsYXJnZSI+
Ci0gICAgPC9kaXY+Ci0gICAgPGRpdiBjbGFzcz0ic3Bpbm5lciI+Ci0gICAgPC9kaXY+Ci0gICAg
PGRpdiBjbGFzcz0ic3Bpbm5lciBzbWFsbCI+Ci0gICAgPC9kaXY+Ci0gICAgPGRpdiBjbGFzcz0i
c3Bpbm5lciB0aW55Ij4KLSAgICA8L2Rpdj4KLTwvZGl2PjwveG1wPjwvcHJlPgotICAgICAgICAg
ICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNz
PSJjb250ZW50Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsb2Fk
ZXIiPgotICAgIDxkaXYgY2xhc3M9InNwaW5uZXIgaHVnZSI+Ci0gICAgPC9kaXY+Ci0gICAgPGRp
diBjbGFzcz0ic3Bpbm5lciBsYXJnZSI+Ci0gICAgPC9kaXY+Ci0gICAgPGRpdiBjbGFzcz0ic3Bp
bm5lciI+Ci0gICAgPC9kaXY+Ci0gICAgPGRpdiBjbGFzcz0ic3Bpbm5lciBzbWFsbCI+Ci0gICAg
PC9kaXY+Ci0gICAgPGRpdiBjbGFzcz0ic3Bpbm5lciB0aW55Ij4KLSAgICA8L2Rpdj4KLTwvZGl2
PgotICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgIAot
ICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRp
diBjbGFzcz0iY29udGVudCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbG9y
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiPgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDxwcmU+PHhtcD48ZGl2IGNsYXNzPSJsb2FkZXIiPgot
ICAgIDxkaXYgY2xhc3M9InNwaW5uZXIiPgotICAgIDwvZGl2PgotICAgIDxkaXYgY2xhc3M9InNw
aW5uZXIgYmx1ZSI+Ci0gICAgPC9kaXY+Ci0gICAgPGRpdiBjbGFzcz0ic3Bpbm5lciBwdXJwbGUi
PgotICAgIDwvZGl2PgotICAgIDxkaXYgY2xhc3M9InNwaW5uZXIgZ3JlZW4iPgotICAgIDwvZGl2
PgotICAgIDxkaXYgY2xhc3M9InNwaW5uZXIgb3JhbmdlIj4KLSAgICA8L2Rpdj4KLSAgICA8ZGl2
IGNsYXNzPSJzcGlubmVyIHJlZCI+Ci0gICAgPC9kaXY+Ci08L2Rpdj48L3htcD48L3ByZT4KLSAg
ICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgPGRp
diBjbGFzcz0iY29udGVudCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFz
cz0ibG9hZGVyIj4KLSAgICA8ZGl2IGNsYXNzPSJzcGlubmVyIj4KLSAgICA8L2Rpdj4KLSAgICA8
ZGl2IGNsYXNzPSJzcGlubmVyIGJsdWUiPgotICAgIDwvZGl2PgotICAgIDxkaXYgY2xhc3M9InNw
aW5uZXIgcHVycGxlIj4KLSAgICA8L2Rpdj4KLSAgICA8ZGl2IGNsYXNzPSJzcGlubmVyIGdyZWVu
Ij4KLSAgICA8L2Rpdj4KLSAgICA8ZGl2IGNsYXNzPSJzcGlubmVyIG9yYW5nZSI+Ci0gICAgPC9k
aXY+Ci0gICAgPGRpdiBjbGFzcz0ic3Bpbm5lciByZWQiPgotICAgIDwvZGl2PgotPC9kaXY+Ci0g
ICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgCi0gICAg
ICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNs
YXNzPSJjb250ZW50Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2l0aCBQbGFj
ZWhvbGRlcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAg
ICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50
Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJlPjx4bXA+PGRpdiBjbGFzcz0icGxh
Y2Vob2xkZXIgZGltbWVyIj4KLSAgICA8ZGl2IGNsYXNzPSJsb2FkZXIiPgotICAgICAgICA8ZGl2
IGNsYXNzPSJzcGlubmVyIj4KLSAgICAgICAgPC9kaXY+Ci0gICAgPC9kaXY+Ci08L2Rpdj48L3ht
cD48L3ByZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAg
ICAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPGRpdiBjbGFzcz0icGxhY2Vob2xkZXIgZGltbWVyIj4KLSAgICA8ZGl2IGNsYXNzPSJsb2Fk
ZXIiPgotICAgICAgICA8ZGl2IGNsYXNzPSJzcGlubmVyIj4KLSAgICAgICAgPC9kaXY+Ci0gICAg
PC9kaXY+Ci08L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAg
ICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgCi0gICAg
ICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkZXIiIGlkPSJFbGVtZW50cy1Qcm9n
cmVzcy1iYXIiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxl
Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMj5Qcm9ncmVzcyBiYXI8L2gyPgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAg
ICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAKLSAg
ICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYg
Y2xhc3M9ImNvbnRlbnQiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEaWZmZXJl
bnQgY29sb3JzIHdpdGggbWl4aW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4K
LSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBj
bGFzcz0iY29udGVudCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByZT48eG1wPjxk
aXY+Ci0gICAgPGRpdiBjbGFzcz0icHJvZ3Jlc3MtYmFyLWNvbnRhaW5lciI+Ci0gICAgICAgIDxk
aXYgY2xhc3M9InByb2dyZXNzLWJhciIgc3R5bGU9IndpZHRoOjI1JSI+MjUlPC9kaXY+Ci0gICAg
PC9kaXY+Ci08L2Rpdj4KLTxocj4KLTxkaXY+Ci0gICAgPGRpdiBjbGFzcz0icHJvZ3Jlc3MtYmFy
LWNvbnRhaW5lciI+Ci0gICAgICAgIDxkaXYgY2xhc3M9InByb2dyZXNzLWJhciBzdWNjZXNzIiBz
dHlsZT0id2lkdGg6NTAlIj41MCU8L2Rpdj4KLSAgICA8L2Rpdj4KLTwvZGl2PgotPGhyPgotPGRp
dj4KLSAgICA8ZGl2IGNsYXNzPSJwcm9ncmVzcy1iYXItY29udGFpbmVyIj4KLSAgICAgICAgPGRp
diBjbGFzcz0icHJvZ3Jlc3MtYmFyIGZhaWxlZCIgc3R5bGU9IndpZHRoOjc1JSI+NzUlPC9kaXY+
Ci0gICAgPC9kaXY+Ci08L2Rpdj4KLTxocj4KLTxkaXY+Ci0gICAgPGRpdiBjbGFzcz0icHJvZ3Jl
c3MtYmFyLWNvbnRhaW5lciI+Ci0gICAgICAgIDxkaXYgY2xhc3M9InByb2dyZXNzLWJhciBlcnJv
ciIgc3R5bGU9IndpZHRoOjEwMCUiPjEwMCU8L2Rpdj4KLSAgICA8L2Rpdj4KLTwvZGl2PjwveG1w
PjwvcHJlPgotICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAg
ICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA8ZGl2PgotICAgIDxkaXYgY2xhc3M9InByb2dyZXNzLWJhci1jb250YWluZXIiPgotICAgICAg
ICA8ZGl2IGNsYXNzPSJwcm9ncmVzcy1iYXIiIHN0eWxlPSJ3aWR0aDoyNSUiPjI1JTwvZGl2Pgot
ICAgIDwvZGl2PgotPC9kaXY+Ci08aHI+Ci08ZGl2PgotICAgIDxkaXYgY2xhc3M9InByb2dyZXNz
LWJhci1jb250YWluZXIiPgotICAgICAgICA8ZGl2IGNsYXNzPSJwcm9ncmVzcy1iYXIgc3VjY2Vz
cyIgc3R5bGU9IndpZHRoOjUwJSI+NTAlPC9kaXY+Ci0gICAgPC9kaXY+Ci08L2Rpdj4KLTxocj4K
LTxkaXY+Ci0gICAgPGRpdiBjbGFzcz0icHJvZ3Jlc3MtYmFyLWNvbnRhaW5lciI+Ci0gICAgICAg
IDxkaXYgY2xhc3M9InByb2dyZXNzLWJhciBmYWlsZWQiIHN0eWxlPSJ3aWR0aDo3NSUiPjc1JTwv
ZGl2PgotICAgIDwvZGl2PgotPC9kaXY+Ci08aHI+Ci08ZGl2PgotICAgIDxkaXYgY2xhc3M9InBy
b2dyZXNzLWJhci1jb250YWluZXIiPgotICAgICAgICA8ZGl2IGNsYXNzPSJwcm9ncmVzcy1iYXIg
ZXJyb3IiIHN0eWxlPSJ3aWR0aDoxMDAlIj4xMDAlPC9kaXY+Ci0gICAgPC9kaXY+Ci08L2Rpdj4K
LSAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAKLSAg
ICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYg
Y2xhc3M9ImNvbnRlbnQiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNdWxpdCBi
YXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAg
ICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudCI+Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByZT48eG1wPjxkaXY+Ci0gICAgICAgIDxkaXYg
Y2xhc3M9InByb2dyZXNzLWJhci1jb250YWluZXIiPgotICAgICAgICAgICAgPGRpdiBjbGFzcz0i
cHJvZ3Jlc3MtYmFyIiBzdHlsZT0id2lkdGg6MjUlIj4yNSU8L2Rpdj4KLSAgICAgICAgICAgIDxk
aXYgY2xhc3M9InByb2dyZXNzLWJhciBlcnJvciIgc3R5bGU9IndpZHRoOjc1JSI+NzUlPC9kaXY+
Ci0gICAgICAgIDwvZGl2PgotPC9kaXY+PC94bXA+PC9wcmU+Ci0gICAgICAgICAgICAgICAgICAg
ICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQi
PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+Ci0gICAgICAgIDxkaXYgY2xhc3M9
InByb2dyZXNzLWJhci1jb250YWluZXIiPgotICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJvZ3Jl
c3MtYmFyIiBzdHlsZT0id2lkdGg6MjUlIj4yNSU8L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xh
c3M9InByb2dyZXNzLWJhciBlcnJvciIgc3R5bGU9IndpZHRoOjc1JSI+NzUlPC9kaXY+Ci0gICAg
ICAgIDwvZGl2PgotPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAg
ICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIAot
ICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGVyIiBpZD0iRWxlbWVudHMt
TGlzdCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGUiPgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgyPkxpc3Q8L2gyPgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0g
ICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAg
ICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudCI+
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByZT48eG1wPjxkaXYgY2xhc3M9Imxpc3Qi
PgotICAgIDxkaXYgY2xhc3M9Iml0ZW0iPml0ZW0gMTwvZGl2PgotICAgIDxkaXYgY2xhc3M9Iml0
ZW0iPml0ZW0gMjwvZGl2PgotICAgIDxkaXYgY2xhc3M9ImRpdmlkZXIiPjwvZGl2PgotICAgIDxk
aXYgY2xhc3M9Iml0ZW0iPgotICAgICAgICA8ZGl2IGNsYXNzPSJsaXN0Ij4KLSAgICAgICAgICAg
IDxkaXYgY2xhc3M9Iml0ZW0iPml0ZW0gMSBsdjI8L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xh
c3M9Iml0ZW0iPml0ZW0gMiBsdjI8L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRpdmlk
ZXIiPjwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0iaXRlbSI+Ci0gICAgICAgICAgICAg
ICAgPGRpdiBjbGFzcz0ibGlzdCI+Ci0gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Iml0
ZW0iPml0ZW0gMSBsdjM8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaXRl
bSI+aXRlbSAyIGx2MzwvZGl2PgotICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAg
PC9kaXY+Ci0gICAgICAgIDwvZGl2PgotICAgIDwvZGl2PgotPC9kaXY+PC94bXA+PC9wcmU+Ci0g
ICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxk
aXYgY2xhc3M9ImNvbnRlbnQiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xh
c3M9Imxpc3QiPgotICAgIDxkaXYgY2xhc3M9Iml0ZW0iPml0ZW0gMTwvZGl2PgotICAgIDxkaXYg
Y2xhc3M9Iml0ZW0iPml0ZW0gMjwvZGl2PgotICAgIDxkaXYgY2xhc3M9ImRpdmlkZXIiPjwvZGl2
PgotICAgIDxkaXYgY2xhc3M9Iml0ZW0iPgotICAgICAgICA8ZGl2IGNsYXNzPSJsaXN0Ij4KLSAg
ICAgICAgICAgIDxkaXYgY2xhc3M9Iml0ZW0iPml0ZW0gMSBsdjI8L2Rpdj4KLSAgICAgICAgICAg
IDxkaXYgY2xhc3M9Iml0ZW0iPml0ZW0gMiBsdjI8L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xh
c3M9ImRpdmlkZXIiPjwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0iaXRlbSI+Ci0gICAg
ICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGlzdCI+Ci0gICAgICAgICAgICAgICAgICAgIDxkaXYg
Y2xhc3M9Iml0ZW0iPml0ZW0gMSBsdjM8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgPGRpdiBj
bGFzcz0iaXRlbSI+aXRlbSAyIGx2MzwvZGl2PgotICAgICAgICAgICAgICAgIDwvZGl2PgotICAg
ICAgICAgICAgPC9kaXY+Ci0gICAgICAgIDwvZGl2PgotICAgIDwvZGl2PgotPC9kaXY+Ci0gICAg
ICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAg
ICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAg
PGRpdiBjbGFzcz0iaGVhZGVyIiBpZD0iRWxlbWVudHMtU2lkZWJhciI+Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGUiPgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPGgyPlNpZGViYXI8L2gyPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwv
ZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAg
IAotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAg
ICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudCI+Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPHByZT48eG1wPjxkaXYgY2xhc3M9InNpZGViYXIiPgotICAgIDxkaXYgY2xh
c3M9ImhlYWRlciI+Ci0gICAgICAgIDxkaXYgY2xhc3M9InRpdGxlIj4KLSAgICAgICAgICAgIFRp
dGxlCi0gICAgICAgIDwvZGl2PgotICAgIDwvZGl2PgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJtYWlu
Ij4KLTwvZGl2PjwveG1wPjwvcHJlPgotICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0g
ICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzaWRlYmFyIj4KLSAgICA8ZGl2IGNsYXNzPSJo
ZWFkZXIiPgotICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZSI+Ci0gICAgICAgICAgICBUaXRsZQot
ICAgICAgICA8L2Rpdj4KLSAgICA8L2Rpdj4KLTwvZGl2PgotPGRpdiBjbGFzcz0ibWFpbiI+Ci08
L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAg
ICAKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAg
ICAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkZXIiIGlkPSJFbGVtZW50cy1EcmF3ZXIiPgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlIj4KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDxoMj5EcmF3ZXI8L2gyPgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAg
ICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAg
IAotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudCI+Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPHByZT48eG1wPjxkaXYgaWQ9ImJvdHRvbS1kcmF3ZXIiIGNs
YXNzPSJkcmF3ZXIiPgotICAgIDxkaXYgY2xhc3M9ImhlYWRlciI+Ci0gICAgICAgIDxkaXYgY2xh
c3M9ImFjdGlvbnMiPgotICAgICAgICAgICAgPGEgaHJlZj0iamF2YXNjcmlwdDp2b2lkKDApIiBv
bmNsaWNrPSJjbG9zZURyYXdlckZhY3RvcnkoJ2JvdHRvbS1kcmF3ZXInKSgpIj5DbG9zZTwvYT4K
LSAgICAgICAgPC9kaXY+Ci0gICAgPC9kaXY+Ci08L2Rpdj4KLTxkaXYgaWQ9ImxlZnQtZHJhd2Vy
IiBjbGFzcz0iZHJhd2VyIGxlZnQiPgotICAgIDxkaXYgY2xhc3M9ImhlYWRlciI+Ci0gICAgICAg
IDxkaXYgY2xhc3M9ImFjdGlvbnMiPgotICAgICAgICAgICAgPGEgaHJlZj0iamF2YXNjcmlwdDp2
b2lkKDApIiBvbmNsaWNrPSJjbG9zZURyYXdlckZhY3RvcnkoJ2xlZnQtZHJhd2VyJykoKSI+Q2xv
c2U8L2E+Ci0gICAgICAgIDwvZGl2PgotICAgIDwvZGl2PgotPC9kaXY+Ci08ZGl2IGlkPSJyaWdo
dC1kcmF3ZXIiIGNsYXNzPSJkcmF3ZXIgcmlnaHQiPgotICAgIDxkaXYgY2xhc3M9ImhlYWRlciI+
Ci0gICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbnMiPgotICAgICAgICAgICAgPGEgaHJlZj0iamF2
YXNjcmlwdDp2b2lkKDApIiBvbmNsaWNrPSJjbG9zZURyYXdlckZhY3RvcnkoJ3JpZ2h0LWRyYXdl
cicpKCkiPkNsb3NlPC9hPgotICAgICAgICA8L2Rpdj4KLSAgICA8L2Rpdj4KLTwvZGl2PgotPGRp
diBpZD0ibGVmdC1kcmF3ZXItdW5kZXItdG9vbGJhciIgY2xhc3M9ImRyYXdlciBsZWZ0IHVuZGVy
LXRvcGJhci13aXRoLWFjdGlvbnMiPgotICAgIDxkaXYgY2xhc3M9ImhlYWRlciI+Ci0gICAgICAg
IDxkaXYgY2xhc3M9ImFjdGlvbnMiPgotICAgICAgICAgICAgPGEgaHJlZj0iamF2YXNjcmlwdDp2
b2lkKDApIiBvbmNsaWNrPSJjbG9zZURyYXdlckZhY3RvcnkoJ2xlZnQtZHJhd2VyLXVuZGVyLXRv
b2xiYXInKSgpO2Nsb3NlVG9wYmFyKCkiPkNsb3NlPC9hPgotICAgICAgICA8L2Rpdj4KLSAgICA8
L2Rpdj4KLTwvZGl2PgotPGRpdj4KLSAgICA8YnV0dG9uIGNsYXNzPSJidXR0b24iIG9uY2xpY2s9
Im9wZW5EcmF3ZXJGYWN0b3J5KCdib3R0b20tZHJhd2VyJykoKSI+T3BlbiBib3R0b208L2J1dHRv
bj4KLSAgICA8YnV0dG9uIGNsYXNzPSJidXR0b24iIG9uY2xpY2s9Im9wZW5EcmF3ZXJGYWN0b3J5
KCdsZWZ0LWRyYXdlcicpKCkiPk9wZW4gbGVmdDwvYnV0dG9uPgotICAgIDxidXR0b24gY2xhc3M9
ImJ1dHRvbiIgb25jbGljaz0ib3BlbkRyYXdlckZhY3RvcnkoJ3JpZ2h0LWRyYXdlcicpKCkiPk9w
ZW4gcmlnaHQ8L2J1dHRvbj4KLSAgICA8YnV0dG9uIGNsYXNzPSJidXR0b24iIG9uY2xpY2s9Im9w
ZW5EcmF3ZXJGYWN0b3J5KCdsZWZ0LWRyYXdlci11bmRlci10b29sYmFyJykoKTtvcGVuVG9wYmFy
KCkiPk9wZW4gbGVmdCB1bmRlciB0b3BiYXI8L2J1dHRvbj4KLTwvZGl2PgotPHNjcmlwdD4KLSAg
ICBjb25zdCBjbG9zZURyYXdlckZhY3RvcnkgPSAoaWQpID0+IChlKSA9PiBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZChpZCkuY2xhc3NMaXN0LnJlbW92ZSgiZGlzcGxheSIpOwotICAgIGNvbnN0IG9w
ZW5EcmF3ZXJGYWN0b3J5ID0gKGlkKSA9PiAoZSkgPT4gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
aWQpLmNsYXNzTGlzdC5hZGQoImRpc3BsYXkiKTsKLSAgICBjb25zdCBjbG9zZVRvcGJhciA9ICgp
ID0+IHsgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRvcGJhciIpLnN0eWxlLmRpc3BsYXkgPSAi
bm9uZSIgfTsKLSAgICBjb25zdCBvcGVuVG9wYmFyID0gKCkgPT4gewotICAgICAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgidG9wYmFyIikuc3R5bGUuZGlzcGxheSA9ICJmbGV4IjsKLSAgICB9
OwotPC9zY3JpcHQ+PC94bXA+PC9wcmU+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4K
LSAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiPgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9ImJvdHRvbS1kcmF3ZXIiIGNsYXNzPSJkcmF3ZXIi
PgotICAgIDxkaXYgY2xhc3M9ImhlYWRlciI+Ci0gICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbnMi
PgotICAgICAgICAgICAgPGEgaHJlZj0iamF2YXNjcmlwdDp2b2lkKDApIiBvbmNsaWNrPSJjbG9z
ZURyYXdlckZhY3RvcnkoJ2JvdHRvbS1kcmF3ZXInKSgpIj5DbG9zZTwvYT4KLSAgICAgICAgPC9k
aXY+Ci0gICAgPC9kaXY+Ci08L2Rpdj4KLTxkaXYgaWQ9ImxlZnQtZHJhd2VyIiBjbGFzcz0iZHJh
d2VyIGxlZnQiPgotICAgIDxkaXYgY2xhc3M9ImhlYWRlciI+Ci0gICAgICAgIDxkaXYgY2xhc3M9
ImFjdGlvbnMiPgotICAgICAgICAgICAgPGEgaHJlZj0iamF2YXNjcmlwdDp2b2lkKDApIiBvbmNs
aWNrPSJjbG9zZURyYXdlckZhY3RvcnkoJ2xlZnQtZHJhd2VyJykoKSI+Q2xvc2U8L2E+Ci0gICAg
ICAgIDwvZGl2PgotICAgIDwvZGl2PgotPC9kaXY+Ci08ZGl2IGlkPSJyaWdodC1kcmF3ZXIiIGNs
YXNzPSJkcmF3ZXIgcmlnaHQiPgotICAgIDxkaXYgY2xhc3M9ImhlYWRlciI+Ci0gICAgICAgIDxk
aXYgY2xhc3M9ImFjdGlvbnMiPgotICAgICAgICAgICAgPGEgaHJlZj0iamF2YXNjcmlwdDp2b2lk
KDApIiBvbmNsaWNrPSJjbG9zZURyYXdlckZhY3RvcnkoJ3JpZ2h0LWRyYXdlcicpKCkiPkNsb3Nl
PC9hPgotICAgICAgICA8L2Rpdj4KLSAgICA8L2Rpdj4KLTwvZGl2PgotPGRpdiBpZD0ibGVmdC1k
cmF3ZXItdW5kZXItdG9vbGJhciIgY2xhc3M9ImRyYXdlciBsZWZ0IHVuZGVyLXRvcGJhci13aXRo
LWFjdGlvbnMiPgotICAgIDxkaXYgY2xhc3M9ImhlYWRlciI+Ci0gICAgICAgIDxkaXYgY2xhc3M9
ImFjdGlvbnMiPgotICAgICAgICAgICAgPGEgaHJlZj0iamF2YXNjcmlwdDp2b2lkKDApIiBvbmNs
aWNrPSJjbG9zZURyYXdlckZhY3RvcnkoJ2xlZnQtZHJhd2VyLXVuZGVyLXRvb2xiYXInKSgpO2Ns
b3NlVG9wYmFyKCkiPkNsb3NlPC9hPgotICAgICAgICA8L2Rpdj4KLSAgICA8L2Rpdj4KLTwvZGl2
PgotPGRpdj4KLSAgICA8YnV0dG9uIGNsYXNzPSJidXR0b24iIG9uY2xpY2s9Im9wZW5EcmF3ZXJG
YWN0b3J5KCdib3R0b20tZHJhd2VyJykoKSI+T3BlbiBib3R0b208L2J1dHRvbj4KLSAgICA8YnV0
dG9uIGNsYXNzPSJidXR0b24iIG9uY2xpY2s9Im9wZW5EcmF3ZXJGYWN0b3J5KCdsZWZ0LWRyYXdl
cicpKCkiPk9wZW4gbGVmdDwvYnV0dG9uPgotICAgIDxidXR0b24gY2xhc3M9ImJ1dHRvbiIgb25j
bGljaz0ib3BlbkRyYXdlckZhY3RvcnkoJ3JpZ2h0LWRyYXdlcicpKCkiPk9wZW4gcmlnaHQ8L2J1
dHRvbj4KLSAgICA8YnV0dG9uIGNsYXNzPSJidXR0b24iIG9uY2xpY2s9Im9wZW5EcmF3ZXJGYWN0
b3J5KCdsZWZ0LWRyYXdlci11bmRlci10b29sYmFyJykoKTtvcGVuVG9wYmFyKCkiPk9wZW4gbGVm
dCB1bmRlciB0b3BiYXI8L2J1dHRvbj4KLTwvZGl2PgotPHNjcmlwdD4KLSAgICBjb25zdCBjbG9z
ZURyYXdlckZhY3RvcnkgPSAoaWQpID0+IChlKSA9PiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChp
ZCkuY2xhc3NMaXN0LnJlbW92ZSgiZGlzcGxheSIpOwotICAgIGNvbnN0IG9wZW5EcmF3ZXJGYWN0
b3J5ID0gKGlkKSA9PiAoZSkgPT4gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpLmNsYXNzTGlz
dC5hZGQoImRpc3BsYXkiKTsKLSAgICBjb25zdCBjbG9zZVRvcGJhciA9ICgpID0+IHsgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInRvcGJhciIpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSIgfTsKLSAg
ICBjb25zdCBvcGVuVG9wYmFyID0gKCkgPT4gewotICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgidG9wYmFyIikuc3R5bGUuZGlzcGxheSA9ICJmbGV4IjsKLSAgICB9OwotPC9zY3JpcHQ+
Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgCi0g
ICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAg
ICAgICAgPGRpdiBjbGFzcz0iaGVhZGVyIiBpZD0iRWxlbWVudHMtVGFibGUiPgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlIj4KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDxoMj5UYWJsZTwvaDI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAg
ICAgCi0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAg
ICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA8cHJlPjx4bXA+PHRhYmxlIGNsYXNzPSJ0YWJsZSI+Ci0gICAgPHRoZWFk
PgotICAgICAgICA8dHI+Ci0gICAgICAgICAgICA8dGg+dGl0bGUgMTwvdGg+Ci0gICAgICAgICAg
ICA8dGg+dGl0bGUgMjwvdGg+Ci0gICAgICAgICAgICA8dGg+dGl0bGUgMzwvdGg+Ci0gICAgICAg
ICAgICA8dGg+dGl0bGUgNDwvdGg+Ci0gICAgICAgIDwvdHI+Ci0gICAgPC90aGVhZD4KLSAgICA8
dGJvZHk+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICAgIDx0ZD5jb2wgMTwvdGQ+Ci0gICAgICAg
ICAgICA8dGQ+Y29sIDI8L3RkPgotICAgICAgICAgICAgPHRkPmNvbCAzPC90ZD4KLSAgICAgICAg
ICAgIDx0ZD5jb2wgNDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAg
ICAgIDx0ZD5jb2wgMTwvdGQ+Ci0gICAgICAgICAgICA8dGQ+Y29sIDI8L3RkPgotICAgICAgICAg
ICAgPHRkPmNvbCAzPC90ZD4KLSAgICAgICAgICAgIDx0ZD5jb2wgNDwvdGQ+Ci0gICAgICAgIDwv
dHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICAgIDx0ZD5jb2wgMTwvdGQ+Ci0gICAgICAgICAg
ICA8dGQ+Y29sIDI8L3RkPgotICAgICAgICAgICAgPHRkPmNvbCAzPC90ZD4KLSAgICAgICAgICAg
IDx0ZD5jb2wgNDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICAg
IDx0ZD5jb2wgMTwvdGQ+Ci0gICAgICAgICAgICA8dGQ+Y29sIDI8L3RkPgotICAgICAgICAgICAg
PHRkPmNvbCAzPC90ZD4KLSAgICAgICAgICAgIDx0ZD5jb2wgNDwvdGQ+Ci0gICAgICAgIDwvdHI+
Ci0gICAgPC90Ym9keT4KLTwvdGFibGU+PC94bXA+PC9wcmU+Ci0gICAgICAgICAgICAgICAgICAg
ICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQi
PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUiPgotICAg
IDx0aGVhZD4KLSAgICAgICAgPHRyPgotICAgICAgICAgICAgPHRoPnRpdGxlIDE8L3RoPgotICAg
ICAgICAgICAgPHRoPnRpdGxlIDI8L3RoPgotICAgICAgICAgICAgPHRoPnRpdGxlIDM8L3RoPgot
ICAgICAgICAgICAgPHRoPnRpdGxlIDQ8L3RoPgotICAgICAgICA8L3RyPgotICAgIDwvdGhlYWQ+
Ci0gICAgPHRib2R5PgotICAgICAgICA8dHI+Ci0gICAgICAgICAgICA8dGQ+Y29sIDE8L3RkPgot
ICAgICAgICAgICAgPHRkPmNvbCAyPC90ZD4KLSAgICAgICAgICAgIDx0ZD5jb2wgMzwvdGQ+Ci0g
ICAgICAgICAgICA8dGQ+Y29sIDQ8L3RkPgotICAgICAgICA8L3RyPgotICAgICAgICA8dHI+Ci0g
ICAgICAgICAgICA8dGQ+Y29sIDE8L3RkPgotICAgICAgICAgICAgPHRkPmNvbCAyPC90ZD4KLSAg
ICAgICAgICAgIDx0ZD5jb2wgMzwvdGQ+Ci0gICAgICAgICAgICA8dGQ+Y29sIDQ8L3RkPgotICAg
ICAgICA8L3RyPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgICA8dGQ+Y29sIDE8L3RkPgotICAg
ICAgICAgICAgPHRkPmNvbCAyPC90ZD4KLSAgICAgICAgICAgIDx0ZD5jb2wgMzwvdGQ+Ci0gICAg
ICAgICAgICA8dGQ+Y29sIDQ8L3RkPgotICAgICAgICA8L3RyPgotICAgICAgICA8dHI+Ci0gICAg
ICAgICAgICA8dGQ+Y29sIDE8L3RkPgotICAgICAgICAgICAgPHRkPmNvbCAyPC90ZD4KLSAgICAg
ICAgICAgIDx0ZD5jb2wgMzwvdGQ+Ci0gICAgICAgICAgICA8dGQ+Y29sIDQ8L3RkPgotICAgICAg
ICA8L3RyPgotICAgIDwvdGJvZHk+Ci08L3RhYmxlPgotICAgICAgICAgICAgICAgICAgICAgICAg
PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudCI+Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGwtd2lkdGgKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAg
ICAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPHByZT48eG1wPjx0YWJsZSBjbGFzcz0idGFibGUgZnVsbC13aWR0aCI+Ci0gICAgPHRoZWFk
PgotICAgICAgICA8dHI+Ci0gICAgICAgICAgICA8dGg+dGl0bGUgMTwvdGg+Ci0gICAgICAgICAg
ICA8dGg+dGl0bGUgMjwvdGg+Ci0gICAgICAgICAgICA8dGg+dGl0bGUgMzwvdGg+Ci0gICAgICAg
ICAgICA8dGg+dGl0bGUgNDwvdGg+Ci0gICAgICAgIDwvdHI+Ci0gICAgPC90aGVhZD4KLSAgICA8
dGJvZHk+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICAgIDx0ZD5jb2wgMTwvdGQ+Ci0gICAgICAg
ICAgICA8dGQ+Y29sIDI8L3RkPgotICAgICAgICAgICAgPHRkPmNvbCAzPC90ZD4KLSAgICAgICAg
ICAgIDx0ZD5jb2wgNDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAg
ICAgIDx0ZD5jb2wgMTwvdGQ+Ci0gICAgICAgICAgICA8dGQ+Y29sIDI8L3RkPgotICAgICAgICAg
ICAgPHRkPmNvbCAzPC90ZD4KLSAgICAgICAgICAgIDx0ZD5jb2wgNDwvdGQ+Ci0gICAgICAgIDwv
dHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICAgIDx0ZD5jb2wgMTwvdGQ+Ci0gICAgICAgICAg
ICA8dGQ+Y29sIDI8L3RkPgotICAgICAgICAgICAgPHRkPmNvbCAzPC90ZD4KLSAgICAgICAgICAg
IDx0ZD5jb2wgNDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICAg
IDx0ZD5jb2wgMTwvdGQ+Ci0gICAgICAgICAgICA8dGQ+Y29sIDI8L3RkPgotICAgICAgICAgICAg
PHRkPmNvbCAzPC90ZD4KLSAgICAgICAgICAgIDx0ZD5jb2wgNDwvdGQ+Ci0gICAgICAgIDwvdHI+
Ci0gICAgPC90Ym9keT4KLTwvdGFibGU+PC94bXA+PC9wcmU+Ci0gICAgICAgICAgICAgICAgICAg
ICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQi
PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgZnVsbC13
aWR0aCI+Ci0gICAgPHRoZWFkPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgICA8dGg+dGl0bGUg
MTwvdGg+Ci0gICAgICAgICAgICA8dGg+dGl0bGUgMjwvdGg+Ci0gICAgICAgICAgICA8dGg+dGl0
bGUgMzwvdGg+Ci0gICAgICAgICAgICA8dGg+dGl0bGUgNDwvdGg+Ci0gICAgICAgIDwvdHI+Ci0g
ICAgPC90aGVhZD4KLSAgICA8dGJvZHk+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICAgIDx0ZD5j
b2wgMTwvdGQ+Ci0gICAgICAgICAgICA8dGQ+Y29sIDI8L3RkPgotICAgICAgICAgICAgPHRkPmNv
bCAzPC90ZD4KLSAgICAgICAgICAgIDx0ZD5jb2wgNDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAg
ICAgIDx0cj4KLSAgICAgICAgICAgIDx0ZD5jb2wgMTwvdGQ+Ci0gICAgICAgICAgICA8dGQ+Y29s
IDI8L3RkPgotICAgICAgICAgICAgPHRkPmNvbCAzPC90ZD4KLSAgICAgICAgICAgIDx0ZD5jb2wg
NDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICAgIDx0ZD5jb2wg
MTwvdGQ+Ci0gICAgICAgICAgICA8dGQ+Y29sIDI8L3RkPgotICAgICAgICAgICAgPHRkPmNvbCAz
PC90ZD4KLSAgICAgICAgICAgIDx0ZD5jb2wgNDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAg
IDx0cj4KLSAgICAgICAgICAgIDx0ZD5jb2wgMTwvdGQ+Ci0gICAgICAgICAgICA8dGQ+Y29sIDI8
L3RkPgotICAgICAgICAgICAgPHRkPmNvbCAzPC90ZD4KLSAgICAgICAgICAgIDx0ZD5jb2wgNDwv
dGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgPC90Ym9keT4KLTwvdGFibGU+Ci0gICAgICAgICAgICAg
ICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAg
ICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50
Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaXBwZWQKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAg
ICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudCI+Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPHByZT48eG1wPjx0YWJsZSBjbGFzcz0idGFibGUgZnVsbC13aWR0aCBzdHJp
cHBlZCI+Ci0gICAgPHRoZWFkPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgICA8dGg+dGl0bGUg
MTwvdGg+Ci0gICAgICAgICAgICA8dGg+dGl0bGUgMjwvdGg+Ci0gICAgICAgICAgICA8dGg+dGl0
bGUgMzwvdGg+Ci0gICAgICAgICAgICA8dGg+dGl0bGUgNDwvdGg+Ci0gICAgICAgIDwvdHI+Ci0g
ICAgPC90aGVhZD4KLSAgICA8dGJvZHk+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICAgIDx0ZD5j
b2wgMTwvdGQ+Ci0gICAgICAgICAgICA8dGQ+Y29sIDI8L3RkPgotICAgICAgICAgICAgPHRkPmNv
bCAzPC90ZD4KLSAgICAgICAgICAgIDx0ZD5jb2wgNDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAg
ICAgIDx0cj4KLSAgICAgICAgICAgIDx0ZD5jb2wgMTwvdGQ+Ci0gICAgICAgICAgICA8dGQ+Y29s
IDI8L3RkPgotICAgICAgICAgICAgPHRkPmNvbCAzPC90ZD4KLSAgICAgICAgICAgIDx0ZD5jb2wg
NDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICAgIDx0ZD5jb2wg
MTwvdGQ+Ci0gICAgICAgICAgICA8dGQ+Y29sIDI8L3RkPgotICAgICAgICAgICAgPHRkPmNvbCAz
PC90ZD4KLSAgICAgICAgICAgIDx0ZD5jb2wgNDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAg
IDx0cj4KLSAgICAgICAgICAgIDx0ZD5jb2wgMTwvdGQ+Ci0gICAgICAgICAgICA8dGQ+Y29sIDI8
L3RkPgotICAgICAgICAgICAgPHRkPmNvbCAzPC90ZD4KLSAgICAgICAgICAgIDx0ZD5jb2wgNDwv
dGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgPC90Ym9keT4KLTwvdGFibGU+PC94bXA+PC9wcmU+Ci0g
ICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxk
aXYgY2xhc3M9ImNvbnRlbnQiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBj
bGFzcz0idGFibGUgZnVsbC13aWR0aCBzdHJpcHBlZCI+Ci0gICAgPHRoZWFkPgotICAgICAgICA8
dHI+Ci0gICAgICAgICAgICA8dGg+dGl0bGUgMTwvdGg+Ci0gICAgICAgICAgICA8dGg+dGl0bGUg
MjwvdGg+Ci0gICAgICAgICAgICA8dGg+dGl0bGUgMzwvdGg+Ci0gICAgICAgICAgICA8dGg+dGl0
bGUgNDwvdGg+Ci0gICAgICAgIDwvdHI+Ci0gICAgPC90aGVhZD4KLSAgICA8dGJvZHk+Ci0gICAg
ICAgIDx0cj4KLSAgICAgICAgICAgIDx0ZD5jb2wgMTwvdGQ+Ci0gICAgICAgICAgICA8dGQ+Y29s
IDI8L3RkPgotICAgICAgICAgICAgPHRkPmNvbCAzPC90ZD4KLSAgICAgICAgICAgIDx0ZD5jb2wg
NDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICAgIDx0ZD5jb2wg
MTwvdGQ+Ci0gICAgICAgICAgICA8dGQ+Y29sIDI8L3RkPgotICAgICAgICAgICAgPHRkPmNvbCAz
PC90ZD4KLSAgICAgICAgICAgIDx0ZD5jb2wgNDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAg
IDx0cj4KLSAgICAgICAgICAgIDx0ZD5jb2wgMTwvdGQ+Ci0gICAgICAgICAgICA8dGQ+Y29sIDI8
L3RkPgotICAgICAgICAgICAgPHRkPmNvbCAzPC90ZD4KLSAgICAgICAgICAgIDx0ZD5jb2wgNDwv
dGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICAgIDx0ZD5jb2wgMTwv
dGQ+Ci0gICAgICAgICAgICA8dGQ+Y29sIDI8L3RkPgotICAgICAgICAgICAgPHRkPmNvbCAzPC90
ZD4KLSAgICAgICAgICAgIDx0ZD5jb2wgNDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgPC90Ym9k
eT4KLTwvdGFibGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAg
ICAgICAgICAgCi0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIAotICAgICAg
ICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGVyIiBpZD0iRWxlbWVudHMtSW5wdXRz
Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZSI+Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA8aDI+SW5wdXRzPC9oMj4KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAg
ICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAg
ICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50
Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5wdXQKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAg
ICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudCI+Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPHByZT48eG1wPjxkaXYgY2xhc3M9ImlucHV0Ij4KLSAgICA8aW5wdXQgdHlwZT0i
dGV4dCIgcmVxdWlyZWQvPgotICAgIDxsYWJlbD5UZXh0IGZpZWxkMTwvbGFiZWw+Ci08L2Rpdj4K
LTxkaXYgY2xhc3M9InJvdyI+Ci0gICAgPGRpdiBjbGFzcz0iY29sLTYiPgotICAgICAgICA8ZGl2
IGNsYXNzPSJpbnB1dCI+Ci0gICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgcmVxdWlyZWQv
PgotICAgICAgICAgICAgPGxhYmVsPlRleHQgZmllbGQyPC9sYWJlbD4KLSAgICAgICAgPC9kaXY+
Ci0gICAgPC9kaXY+Ci0gICAgPGRpdiBjbGFzcz0iY29sLTYiPgotICAgICAgICA8ZGl2IGNsYXNz
PSJpbnB1dCI+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcmVmaXgiPjxwPisxPC9wPjwvZGl2
PgotICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIHJlcXVpcmVkLz4KLSAgICAgICAgICAg
IDxsYWJlbD5UZXh0IGZpZWxkMzwvbGFiZWw+Ci0gICAgICAgIDwvZGl2PgotICAgIDwvZGl2Pgot
PC9kaXY+PC94bXA+PC9wcmU+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAg
ICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiPgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImlucHV0Ij4KLSAgICA8aW5wdXQgdHlwZT0idGV4dCIg
cmVxdWlyZWQvPgotICAgIDxsYWJlbD5UZXh0IGZpZWxkMTwvbGFiZWw+Ci08L2Rpdj4KLTxkaXYg
Y2xhc3M9InJvdyI+Ci0gICAgPGRpdiBjbGFzcz0iY29sLTYiPgotICAgICAgICA8ZGl2IGNsYXNz
PSJpbnB1dCI+Ci0gICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgcmVxdWlyZWQvPgotICAg
ICAgICAgICAgPGxhYmVsPlRleHQgZmllbGQyPC9sYWJlbD4KLSAgICAgICAgPC9kaXY+Ci0gICAg
PC9kaXY+Ci0gICAgPGRpdiBjbGFzcz0iY29sLTYiPgotICAgICAgICA8ZGl2IGNsYXNzPSJpbnB1
dCI+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcmVmaXgiPjxwPisxPC9wPjwvZGl2PgotICAg
ICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIHJlcXVpcmVkLz4KLSAgICAgICAgICAgIDxsYWJl
bD5UZXh0IGZpZWxkMzwvbGFiZWw+Ci0gICAgICAgIDwvZGl2PgotICAgIDwvZGl2PgotPC9kaXY+
Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgCi0g
ICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2
IGNsYXNzPSJjb250ZW50Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2xpZGVy
cwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAg
ICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJlPjx4bXA+PGRpdiBjbGFzcz0icm93Ij4KLSAg
ICA8ZGl2IGNsYXNzPSJjb2wtNiI+Ci0gICAgICAgIDxkaXYgY2xhc3M9ImlucHV0Ij4KLSAgICAg
ICAgICAgIDxsYWJlbD5SYW5nZSBzbGlkZXI8L2xhYmVsPgotICAgICAgICAgICAgPGlucHV0IHR5
cGU9InJhbmdlIiBtaW49IjAiIG1heD0iMTAwIiB2YWx1ZT0iMCIvPgotICAgICAgICAgICAgPGlu
cHV0IHR5cGU9Im51bWJlciIgbWluPSIwIiBtYXg9IjEwMCIgdmFsdWU9IjAiLz4KLSAgICAgICAg
PC9kaXY+Ci0gICAgPC9kaXY+Ci0gICAgPGRpdiBjbGFzcz0iY29sLTYiPgotICAgICAgICA8ZGl2
IGNsYXNzPSJpbnB1dCI+Ci0gICAgICAgICAgICA8aW5wdXQgdHlwZT0icmFuZ2UiIG1pbj0iMCIg
bWF4PSIxMDAiICAgIHZhbHVlPSI4MCIvPgotICAgICAgICAgICAgPGlucHV0IHR5cGU9Im51bWJl
ciIgbWluPSIwIiBtYXg9IjEwMCIgdmFsdWU9IjgwIi8+Ci0gICAgICAgIDwvZGl2PgotICAgIDwv
ZGl2PgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJpbnB1dCI+Ci0gICAgPGxhYmVsPkRvdWJsZSByYW5n
ZSBpbnB1dDwvbGFiZWw+Ci0gICAgPGRpdiBjbGFzcz0iZG91YmxlLXJhbmdlIj4KLSAgICAgICAg
PGlucHV0IHR5cGU9Im51bWJlciIgbWluPSIwIiBtYXg9IjEwMCIgICAgdmFsdWU9IjIwIi8+Ci0g
ICAgICAgIDxkaXYgY2xhc3M9InJhbmdlIj4KLSAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJyYW5n
ZSIgbWluPSIwIiBtYXg9IjEwMCIgICAgdmFsdWU9IjIwIi8+Ci0gICAgICAgICAgICA8aW5wdXQg
dHlwZT0icmFuZ2UiIG1pbj0iMCIgbWF4PSIxMDAiICAgIHZhbHVlPSI3MCIvPgotICAgICAgICA8
L2Rpdj4KLSAgICAgICAgPGlucHV0IHR5cGU9Im51bWJlciIgbWluPSIwIiBtYXg9IjEwMCIgICAg
dmFsdWU9IjcwIi8+Ci0gICAgPC9kaXY+Ci08L2Rpdj48L3htcD48L3ByZT4KLSAgICAgICAgICAg
ICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0i
Y29udGVudCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93Ij4K
LSAgICA8ZGl2IGNsYXNzPSJjb2wtNiI+Ci0gICAgICAgIDxkaXYgY2xhc3M9ImlucHV0Ij4KLSAg
ICAgICAgICAgIDxsYWJlbD5SYW5nZSBzbGlkZXI8L2xhYmVsPgotICAgICAgICAgICAgPGlucHV0
IHR5cGU9InJhbmdlIiBtaW49IjAiIG1heD0iMTAwIiB2YWx1ZT0iMCIvPgotICAgICAgICAgICAg
PGlucHV0IHR5cGU9Im51bWJlciIgbWluPSIwIiBtYXg9IjEwMCIgdmFsdWU9IjAiLz4KLSAgICAg
ICAgPC9kaXY+Ci0gICAgPC9kaXY+Ci0gICAgPGRpdiBjbGFzcz0iY29sLTYiPgotICAgICAgICA8
ZGl2IGNsYXNzPSJpbnB1dCI+Ci0gICAgICAgICAgICA8aW5wdXQgdHlwZT0icmFuZ2UiIG1pbj0i
MCIgbWF4PSIxMDAiICAgIHZhbHVlPSI4MCIvPgotICAgICAgICAgICAgPGlucHV0IHR5cGU9Im51
bWJlciIgbWluPSIwIiBtYXg9IjEwMCIgdmFsdWU9IjgwIi8+Ci0gICAgICAgIDwvZGl2PgotICAg
IDwvZGl2PgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJpbnB1dCI+Ci0gICAgPGxhYmVsPkRvdWJsZSBy
YW5nZSBpbnB1dDwvbGFiZWw+Ci0gICAgPGRpdiBjbGFzcz0iZG91YmxlLXJhbmdlIj4KLSAgICAg
ICAgPGlucHV0IHR5cGU9Im51bWJlciIgbWluPSIwIiBtYXg9IjEwMCIgICAgdmFsdWU9IjIwIi8+
Ci0gICAgICAgIDxkaXYgY2xhc3M9InJhbmdlIj4KLSAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJy
YW5nZSIgbWluPSIwIiBtYXg9IjEwMCIgICAgdmFsdWU9IjIwIi8+Ci0gICAgICAgICAgICA8aW5w
dXQgdHlwZT0icmFuZ2UiIG1pbj0iMCIgbWF4PSIxMDAiICAgIHZhbHVlPSI3MCIvPgotICAgICAg
ICA8L2Rpdj4KLSAgICAgICAgPGlucHV0IHR5cGU9Im51bWJlciIgbWluPSIwIiBtYXg9IjEwMCIg
ICAgdmFsdWU9IjcwIi8+Ci0gICAgPC9kaXY+Ci08L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAg
ICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAg
IAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiPgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOdW1iZXIKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAg
ICAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPHByZT48eG1wPjxkaXYgY2xhc3M9ImlucHV0Ij4KLSAgICA8aW5wdXQgdHlwZT0ibnVtYmVy
IiByZXF1aXJlZCBtaW49IjAiIG1heD0iMTAwIi8+Ci0gICAgPGxhYmVsPk51bWJlcjwvbGFiZWw+
Ci08L2Rpdj4KLTxkaXYgY2xhc3M9ImlucHV0Ij4KLSAgICA8aW5wdXQgdHlwZT0ibnVtYmVyIiBy
ZXF1aXJlZCBtaW49IjAiIG1heD0iMTAiIHZhbHVlPSIxMSIvPgotICAgIDxsYWJlbD5OdW1iZXIg
b3V0IG9mIHJhbmdlPC9sYWJlbD4KLTwvZGl2PjwveG1wPjwvcHJlPgotICAgICAgICAgICAgICAg
ICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250
ZW50Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbnB1dCI+Ci0g
ICAgPGlucHV0IHR5cGU9Im51bWJlciIgcmVxdWlyZWQgbWluPSIwIiBtYXg9IjEwMCIvPgotICAg
IDxsYWJlbD5OdW1iZXI8L2xhYmVsPgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJpbnB1dCI+Ci0gICAg
PGlucHV0IHR5cGU9Im51bWJlciIgcmVxdWlyZWQgbWluPSIwIiBtYXg9IjEwIiB2YWx1ZT0iMTEi
Lz4KLSAgICA8bGFiZWw+TnVtYmVyIG91dCBvZiByYW5nZTwvbGFiZWw+Ci08L2Rpdj4KLSAgICAg
ICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAg
ICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9
ImNvbnRlbnQiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3QKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgIAot
ICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudCI+Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPHByZT48eG1wPjxkaXYgY2xhc3M9ImlucHV0Ij4KLSAgICA8c2Vs
ZWN0IHJlcXVpcmVkPgotICAgICAgICA8b3B0aW9uPjwvb3B0aW9uPgotICAgICAgICA8b3B0aW9u
Pm9wdGlvbiAxPC9vcHRpb24+Ci0gICAgICAgIDxvcHRpb24+b3B0aW9uIDI8L29wdGlvbj4KLSAg
ICAgICAgPG9wdGlvbj5vcHRpb24gMzwvb3B0aW9uPgotICAgIDwvc2VsZWN0PgotICAgIDxsYWJl
bD5TZWxlY3Q8L2xhYmVsPgotPC9kaXY+PC94bXA+PC9wcmU+Ci0gICAgICAgICAgICAgICAgICAg
ICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQi
PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImlucHV0Ij4KLSAgICA8
c2VsZWN0IHJlcXVpcmVkPgotICAgICAgICA8b3B0aW9uPjwvb3B0aW9uPgotICAgICAgICA8b3B0
aW9uPm9wdGlvbiAxPC9vcHRpb24+Ci0gICAgICAgIDxvcHRpb24+b3B0aW9uIDI8L29wdGlvbj4K
LSAgICAgICAgPG9wdGlvbj5vcHRpb24gMzwvb3B0aW9uPgotICAgIDwvc2VsZWN0PgotICAgIDxs
YWJlbD5TZWxlY3Q8L2xhYmVsPgotPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rp
dj4KLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgU3dpdGNoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAg
IDxkaXYgY2xhc3M9ImNvbnRlbnQiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcmU+
PHhtcD48ZGl2IGNsYXNzPSJpbnB1dCI+Ci0gICAgPGxhYmVsPlN3aXRjaDE8L2xhYmVsPgotICAg
IDxsYWJlbCBjbGFzcz0ic3dpdGNoIj4KLSAgICAgICAgPGlucHV0IHR5cGU9ImNoZWNrYm94Ij4K
LSAgICAgICAgPHNwYW4gY2xhc3M9InNsaWRlciI+PC9zcGFuPgotICAgIDwvbGFiZWw+Ci08L2Rp
dj4KLTxkaXYgY2xhc3M9ImlucHV0Ij4KLSAgICA8bGFiZWw+U3dpdGNoMjwvbGFiZWw+Ci0gICAg
PGxhYmVsIGNsYXNzPSJzd2l0Y2giPgotICAgICAgICA8aW5wdXQgdHlwZT0iY2hlY2tib3giPgot
ICAgICAgICA8c3BhbiBjbGFzcz0ic2xpZGVyIj48L3NwYW4+Ci0gICAgPC9sYWJlbD4KLTwvZGl2
PjwveG1wPjwvcHJlPgotICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAg
ICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA8ZGl2IGNsYXNzPSJpbnB1dCI+Ci0gICAgPGxhYmVsPlN3aXRjaDE8L2xhYmVsPgot
ICAgIDxsYWJlbCBjbGFzcz0ic3dpdGNoIj4KLSAgICAgICAgPGlucHV0IHR5cGU9ImNoZWNrYm94
Ij4KLSAgICAgICAgPHNwYW4gY2xhc3M9InNsaWRlciI+PC9zcGFuPgotICAgIDwvbGFiZWw+Ci08
L2Rpdj4KLTxkaXYgY2xhc3M9ImlucHV0Ij4KLSAgICA8bGFiZWw+U3dpdGNoMjwvbGFiZWw+Ci0g
ICAgPGxhYmVsIGNsYXNzPSJzd2l0Y2giPgotICAgICAgICA8aW5wdXQgdHlwZT0iY2hlY2tib3gi
PgotICAgICAgICA8c3BhbiBjbGFzcz0ic2xpZGVyIj48L3NwYW4+Ci0gICAgPC9sYWJlbD4KLTwv
ZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAg
IAotICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
PGRpdiBjbGFzcz0iY29udGVudCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1p
eGluCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiPgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcmU+PHhtcD48ZGl2IGNsYXNzPSJpbnB1dCI+
Ci0gICAgPGlucHV0IHR5cGU9InRleHQiIHJlcXVpcmVkIGRpc2FibGVkLz4KLSAgICA8bGFiZWw+
RGlzYWJsZWQ8L2xhYmVsPgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJpbnB1dCI+Ci0gICAgPGlucHV0
IHR5cGU9InRleHQiIHJlcXVpcmVkIGRpc2FibGVkIHZhbHVlPSJJIGFtIGRpc2FibGVkIi8+Ci0g
ICAgPGxhYmVsPkRpc2FibGVkIHdpdGggZXhpc3RpbmcgdmFsdWU8L2xhYmVsPgotPC9kaXY+Ci08
ZGl2IGNsYXNzPSJpbnB1dCI+Ci0gICAgPGlucHV0IGNsYXNzPSJpbnZhbGlkIiB0eXBlPSJ0ZXh0
IiByZXF1aXJlZCB2YWx1ZT0idXNlIGludmFsaWQgbWl4aW4gdG8gZm9yY2UgaW52YWxpZCBzdHls
ZSIvPgotICAgIDxsYWJlbD5JbnZhbGlkPC9sYWJlbD4KLTwvZGl2PgotPGRpdiBjbGFzcz0iaW5w
dXQiPgotICAgIDxsYWJlbD5JbnZhbGlkIFJhbmdlIHNsaWRlcjwvbGFiZWw+Ci0gICAgPGlucHV0
IGNsYXNzPSJpbnZhbGlkIiB0eXBlPSJyYW5nZSIgbWluPSIwIiBtYXg9IjEwMCIgdmFsdWU9IjEw
MSIvPgotICAgIDxpbnB1dCB0eXBlPSJudW1iZXIiIG1pbj0iMCIgbWF4PSIxMDAiIHZhbHVlPSIx
MDEiLz4KLTwvZGl2PjwveG1wPjwvcHJlPgotICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+
Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbnB1dCI+Ci0gICAgPGlucHV0IHR5cGU9
InRleHQiIHJlcXVpcmVkIGRpc2FibGVkLz4KLSAgICA8bGFiZWw+RGlzYWJsZWQ8L2xhYmVsPgot
PC9kaXY+Ci08ZGl2IGNsYXNzPSJpbnB1dCI+Ci0gICAgPGlucHV0IHR5cGU9InRleHQiIHJlcXVp
cmVkIGRpc2FibGVkIHZhbHVlPSJJIGFtIGRpc2FibGVkIi8+Ci0gICAgPGxhYmVsPkRpc2FibGVk
IHdpdGggZXhpc3RpbmcgdmFsdWU8L2xhYmVsPgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJpbnB1dCI+
Ci0gICAgPGlucHV0IGNsYXNzPSJpbnZhbGlkIiB0eXBlPSJ0ZXh0IiByZXF1aXJlZCB2YWx1ZT0i
dXNlIGludmFsaWQgbWl4aW4gdG8gZm9yY2UgaW52YWxpZCBzdHlsZSIvPgotICAgIDxsYWJlbD5J
bnZhbGlkPC9sYWJlbD4KLTwvZGl2PgotPGRpdiBjbGFzcz0iaW5wdXQiPgotICAgIDxsYWJlbD5J
bnZhbGlkIFJhbmdlIHNsaWRlcjwvbGFiZWw+Ci0gICAgPGlucHV0IGNsYXNzPSJpbnZhbGlkIiB0
eXBlPSJyYW5nZSIgbWluPSIwIiBtYXg9IjEwMCIgdmFsdWU9IjEwMSIvPgotICAgIDxpbnB1dCB0
eXBlPSJudW1iZXIiIG1pbj0iMCIgbWF4PSIxMDAiIHZhbHVlPSIxMDEiLz4KLTwvZGl2PgotICAg
ICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAg
ICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAg
IDxkaXYgY2xhc3M9ImhlYWRlciIgaWQ9IkVsZW1lbnRzLUJ1dHRvbiI+Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGUiPgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPGgyPkJ1dHRvbjwvaDI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9k
aXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAg
Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAg
ICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA8cHJlPjx4bXA+PGJ1dHRvbiBjbGFzcz0iYnV0dG9uIj5EZWZhdWx0PC9idXR0
b24+Ci08YnV0dG9uIGNsYXNzPSJidXR0b24gcHJpbWFyeSI+UHJpbWFyeTwvYnV0dG9uPgotPGJ1
dHRvbiBjbGFzcz0iYnV0dG9uIGRhbmdlciI+RGFuZ2VyPC9idXR0b24+PC94bXA+PC9wcmU+Ci0g
ICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxk
aXYgY2xhc3M9ImNvbnRlbnQiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24g
Y2xhc3M9ImJ1dHRvbiI+RGVmYXVsdDwvYnV0dG9uPgotPGJ1dHRvbiBjbGFzcz0iYnV0dG9uIHBy
aW1hcnkiPlByaW1hcnk8L2J1dHRvbj4KLTxidXR0b24gY2xhc3M9ImJ1dHRvbiBkYW5nZXIiPkRh
bmdlcjwvYnV0dG9uPgotICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAg
ICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFNpemUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAg
ICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29u
dGVudCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByZT48eG1wPjxidXR0b24gY2xh
c3M9ImJ1dHRvbiBodWdlIj5odWdlPC9idXR0b24+Ci08YnV0dG9uIGNsYXNzPSJidXR0b24gbGFy
Z2UiPmxhcmdlPC9idXR0b24+Ci08YnV0dG9uIGNsYXNzPSJidXR0b24gbWVkaXVtIj5tZWRpdW08
L2J1dHRvbj4KLTxidXR0b24gY2xhc3M9ImJ1dHRvbiI+c21hbGw8L2J1dHRvbj4KLTxidXR0b24g
Y2xhc3M9ImJ1dHRvbiB0aW55Ij50aW55PC9idXR0b24+PC94bXA+PC9wcmU+Ci0gICAgICAgICAg
ICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9
ImNvbnRlbnQiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImJ1
dHRvbiBodWdlIj5odWdlPC9idXR0b24+Ci08YnV0dG9uIGNsYXNzPSJidXR0b24gbGFyZ2UiPmxh
cmdlPC9idXR0b24+Ci08YnV0dG9uIGNsYXNzPSJidXR0b24gbWVkaXVtIj5tZWRpdW08L2J1dHRv
bj4KLTxidXR0b24gY2xhc3M9ImJ1dHRvbiI+c21hbGw8L2J1dHRvbj4KLTxidXR0b24gY2xhc3M9
ImJ1dHRvbiB0aW55Ij50aW55PC9idXR0b24+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rp
dj4KLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRGlzYWJsZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAg
ICAgPGRpdiBjbGFzcz0iY29udGVudCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBy
ZT48eG1wPjxidXR0b24gY2xhc3M9ImJ1dHRvbiIgZGlzYWJsZWQ+RGVmYXVsdDwvYnV0dG9uPgot
PGJ1dHRvbiBjbGFzcz0iYnV0dG9uIHByaW1hcnkiIGRpc2FibGVkPlByaW1hcnk8L2J1dHRvbj4K
LTxidXR0b24gY2xhc3M9ImJ1dHRvbiBkYW5nZXIiIGRpc2FibGVkPkRhbmdlcjwvYnV0dG9uPjwv
eG1wPjwvcHJlPgotICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAg
ICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA8YnV0dG9uIGNsYXNzPSJidXR0b24iIGRpc2FibGVkPkRlZmF1bHQ8L2J1dHRvbj4KLTxi
dXR0b24gY2xhc3M9ImJ1dHRvbiBwcmltYXJ5IiBkaXNhYmxlZD5QcmltYXJ5PC9idXR0b24+Ci08
YnV0dG9uIGNsYXNzPSJidXR0b24gZGFuZ2VyIiBkaXNhYmxlZD5EYW5nZXI8L2J1dHRvbj4KLSAg
ICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAKLSAgICAg
ICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAg
ICA8ZGl2IGNsYXNzPSJoZWFkZXIiIGlkPSJFbGVtZW50cy1Td2l0Y2giPgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlIj4KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDxoMj5Td2l0Y2g8L2gyPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwv
ZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAg
IAotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAg
ICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudCI+Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPHByZT48eG1wPjxsYWJlbCBjbGFzcz0ic3dpdGNoIj4KLSAgICA8aW5wdXQg
dHlwZT0iY2hlY2tib3giPgotICAgIDxzcGFuIGNsYXNzPSJzbGlkZXIiPjwvc3Bhbj4KLTwvbGFi
ZWw+PC94bXA+PC9wcmU+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAg
ICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiPgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDxsYWJlbCBjbGFzcz0ic3dpdGNoIj4KLSAgICA8aW5wdXQgdHlwZT0iY2hlY2ti
b3giPgotICAgIDxzcGFuIGNsYXNzPSJzbGlkZXIiPjwvc3Bhbj4KLTwvbGFiZWw+Ci0gICAgICAg
ICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAg
ICAgICAgCi0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgPGRp
diBjbGFzcz0iaGVhZGVyIiBpZD0iRWxlbWVudHMtQmFkZ2UiPgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDxoMj5CYWRnZTwvaDI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0g
ICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgCi0gICAg
ICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAg
ICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA8cHJlPjx4bXA+PGRpdiBjbGFzcz0iYmFkZ2UiPgotICAgIDxkaXYgY2xhc3M9InRleHQg
YmxvY2siPgotICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0IHRpbnkiPmlNYWMgMjciIChMYXRlIDIw
MTIpPC9kaXY+Ci0gICAgICAgIDxkaXYgY2xhc3M9InRleHQgc21hbGwiPmlNYWMgMTMsMjwvZGl2
PgotICAgIDwvZGl2PgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJiYWRnZSBvdXRsaW5lIj4KLSAgICA8
ZGl2IGNsYXNzPSJ0ZXh0IGJsb2NrIj4KLSAgICAgICAgPGRpdiBjbGFzcz0idGV4dCB0aW55Ij5p
TWFjIDI3IiAoTGF0ZSAyMDEzKTwvZGl2PgotICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0IHNtYWxs
Ij5pTWFjIDE0LDI8L2Rpdj4KLSAgICA8L2Rpdj4KLTwvZGl2PgotPGRpdiBjbGFzcz0iYmFkZ2Ug
YWN0aXZlIj4KLSAgICA8ZGl2IGNsYXNzPSJ0ZXh0IGJsb2NrIj4KLSAgICAgICAgPGRpdiBjbGFz
cz0idGV4dCB0aW55Ij5pTWFjIDI3IiAoTGF0ZSAyMDEzKTwvZGl2PgotICAgICAgICA8ZGl2IGNs
YXNzPSJ0ZXh0IHNtYWxsIj5pTWFjIDE0LDI8L2Rpdj4KLSAgICA8L2Rpdj4KLTwvZGl2PjwveG1w
PjwvcHJlPgotICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAg
ICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA8ZGl2IGNsYXNzPSJiYWRnZSI+Ci0gICAgPGRpdiBjbGFzcz0idGV4dCBibG9jayI+Ci0gICAg
ICAgIDxkaXYgY2xhc3M9InRleHQgdGlueSI+aU1hYyAyNyIgKExhdGUgMjAxMik8L2Rpdj4KLSAg
ICAgICAgPGRpdiBjbGFzcz0idGV4dCBzbWFsbCI+aU1hYyAxMywyPC9kaXY+Ci0gICAgPC9kaXY+
Ci08L2Rpdj4KLTxkaXYgY2xhc3M9ImJhZGdlIG91dGxpbmUiPgotICAgIDxkaXYgY2xhc3M9InRl
eHQgYmxvY2siPgotICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0IHRpbnkiPmlNYWMgMjciIChMYXRl
IDIwMTMpPC9kaXY+Ci0gICAgICAgIDxkaXYgY2xhc3M9InRleHQgc21hbGwiPmlNYWMgMTQsMjwv
ZGl2PgotICAgIDwvZGl2PgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJiYWRnZSBhY3RpdmUiPgotICAg
IDxkaXYgY2xhc3M9InRleHQgYmxvY2siPgotICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0IHRpbnki
PmlNYWMgMjciIChMYXRlIDIwMTMpPC9kaXY+Ci0gICAgICAgIDxkaXYgY2xhc3M9InRleHQgc21h
bGwiPmlNYWMgMTQsMjwvZGl2PgotICAgIDwvZGl2PgotPC9kaXY+Ci0gICAgICAgICAgICAgICAg
ICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgCi0g
ICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0i
aGVhZGVyIiBpZD0iRWxlbWVudHMtRG90Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8
ZGl2IGNsYXNzPSJ0aXRsZSI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDI+RG90
PC9oMj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAg
ICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAg
ICAgCi0gICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgIDxk
aXYgY2xhc3M9ImNvbnRlbnQiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcmU+PHht
cD48ZGl2IGNsYXNzPSJkb3QiPjwvZGl2PgotPGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3MiPjwvZGl2
PgotPGRpdiBjbGFzcz0iZG90IGZhaWxlZCI+PC9kaXY+Ci08ZGl2IGNsYXNzPSJkb3QgZXJyb3Ii
PjwvZGl2PjwveG1wPjwvcHJlPgotICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAg
ICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3QiPjwvZGl2PgotPGRpdiBjbGFzcz0iZG90IHN1
Y2Nlc3MiPjwvZGl2PgotPGRpdiBjbGFzcz0iZG90IGZhaWxlZCI+PC9kaXY+Ci08ZGl2IGNsYXNz
PSJkb3QgZXJyb3IiPjwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAg
ICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudCI+Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFNpemUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAg
ICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFz
cz0iY29udGVudCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByZT48eG1wPjxkaXYg
Y2xhc3M9ImRvdCBzbWFsbCI+PC9kaXY+Ci08ZGl2IGNsYXNzPSJkb3QgbWVkaXVtIj48L2Rpdj4K
LTxkaXYgY2xhc3M9ImRvdCBsYXJnZSI+PC9kaXY+PC94bXA+PC9wcmU+Ci0gICAgICAgICAgICAg
ICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNv
bnRlbnQiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCBzbWFs
bCI+PC9kaXY+Ci08ZGl2IGNsYXNzPSJkb3QgbWVkaXVtIj48L2Rpdj4KLTxkaXYgY2xhc3M9ImRv
dCBsYXJnZSI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAg
ICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgV2l0aCBzdHJpbmcgaW5zaWRlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAg
IDxkaXYgY2xhc3M9ImNvbnRlbnQiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcmU+
PHhtcD48ZGl2IGNsYXNzPSJkb3Qgc3VjY2VzcyI+Ci0gICAgPGRpdiBjbGFzcz0idGV4dCI+JiMx
MDAwMzwvZGl2PgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJkb3QgZmFpbGVkIj4KLSAgICA8ZGl2IGNs
YXNzPSJ0ZXh0Ij4mIzEyMDI0NzwvZGl2PgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJkb3QgZXJyb3Ii
PgotICAgIDxkaXYgY2xhc3M9InRleHQiPiE8L2Rpdj4KLTwvZGl2PgotPGRpdiBjbGFzcz0iZG90
IHN1Y2Nlc3MgbGFyZ2UiPgotICAgIDxkaXYgY2xhc3M9InRleHQiPiYjMTAwMDM8L2Rpdj4KLTwv
ZGl2PgotPGRpdiBjbGFzcz0iZG90IGZhaWxlZCBsYXJnZSI+Ci0gICAgPGRpdiBjbGFzcz0idGV4
dCI+JiMxMjAyNDc8L2Rpdj4KLTwvZGl2PgotPGRpdiBjbGFzcz0iZG90IGVycm9yIGxhcmdlIj4K
LSAgICA8ZGl2IGNsYXNzPSJ0ZXh0Ij4hPC9kaXY+Ci08L2Rpdj48L3htcD48L3ByZT4KLSAgICAg
ICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBj
bGFzcz0iY29udGVudCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0i
ZG90IHN1Y2Nlc3MiPgotICAgIDxkaXYgY2xhc3M9InRleHQiPiYjMTAwMDM8L2Rpdj4KLTwvZGl2
PgotPGRpdiBjbGFzcz0iZG90IGZhaWxlZCI+Ci0gICAgPGRpdiBjbGFzcz0idGV4dCI+JiMxMjAy
NDc8L2Rpdj4KLTwvZGl2PgotPGRpdiBjbGFzcz0iZG90IGVycm9yIj4KLSAgICA8ZGl2IGNsYXNz
PSJ0ZXh0Ij4hPC9kaXY+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9ImRvdCBzdWNjZXNzIGxhcmdlIj4K
LSAgICA8ZGl2IGNsYXNzPSJ0ZXh0Ij4mIzEwMDAzPC9kaXY+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9
ImRvdCBmYWlsZWQgbGFyZ2UiPgotICAgIDxkaXYgY2xhc3M9InRleHQiPiYjMTIwMjQ3PC9kaXY+
Ci08L2Rpdj4KLTxkaXYgY2xhc3M9ImRvdCBlcnJvciBsYXJnZSI+Ci0gICAgPGRpdiBjbGFzcz0i
dGV4dCI+ITwvZGl2PgotPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAg
ICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgV2l0aCBpbWFnZSBpbnNpZGUKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAg
ICAgICAgPGRpdiBjbGFzcz0iY29udGVudCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
PHByZT48eG1wPjxkaXYgY2xhc3M9ImRvdCBlcnJvciI+Ci0gICAgPGltZyBzcmM9Ii4uL2ljb25z
L2Nsb2NrLnN2ZyI+Ci08L2Rpdj48L3htcD48L3ByZT4KLSAgICAgICAgICAgICAgICAgICAgICAg
IDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudCI+Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90IGVycm9yIj4KLSAgICA8
aW1nIHNyYz0iLi4vaWNvbnMvY2xvY2suc3ZnIj4KLTwvZGl2PgotICAgICAgICAgICAgICAgICAg
ICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAg
ICAgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudCI+Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJsaW5rCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAg
ICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiPgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDxwcmU+PHhtcD48ZGl2IGNsYXNzPSJkb3QgYmxpbmsiPjwvZGl2PgotPGRpdiBjbGFzcz0i
ZG90IHN1Y2Nlc3MgYmxpbmsiPjwvZGl2PgotPGRpdiBjbGFzcz0iZG90IGZhaWxlZCBibGluayI+
PC9kaXY+Ci08ZGl2IGNsYXNzPSJkb3QgZXJyb3IgYmxpbmsiPjwvZGl2PjwveG1wPjwvcHJlPgot
ICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8
ZGl2IGNsYXNzPSJjb250ZW50Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNs
YXNzPSJkb3QgYmxpbmsiPjwvZGl2PgotPGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3MgYmxpbmsiPjwv
ZGl2PgotPGRpdiBjbGFzcz0iZG90IGZhaWxlZCBibGluayI+PC9kaXY+Ci08ZGl2IGNsYXNzPSJk
b3QgZXJyb3IgYmxpbmsiPjwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0g
ICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudCI+Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERvdCBzZWxlY3RvcgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAg
ICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJl
Pjx4bXA+PGRpdiBjbGFzcz0iZG90IHNlbGVjdG9yIj4KLSAgICA8bGFiZWw+Ci0gICAgICAgIDxp
bnB1dCB0eXBlPSJyYWRpbyIgbmFtZT0ic2VsZWN0b3IiPgotICAgICAgICA8ZGl2IGNsYXNzPSJk
b3Qgc3VjY2VzcyI+PC9kaXY+Ci0gICAgPC9sYWJlbD4KLSAgICA8bGFiZWw+Ci0gICAgICAgIDxp
bnB1dCB0eXBlPSJyYWRpbyIgbmFtZT0ic2VsZWN0b3IiPgotICAgICAgICA8ZGl2IGNsYXNzPSJk
b3QgZmFpbGVkIj48L2Rpdj4KLSAgICA8L2xhYmVsPgotICAgIDxsYWJlbD4KLSAgICAgICAgPGlu
cHV0IHR5cGU9InJhZGlvIiBuYW1lPSJzZWxlY3RvciI+Ci0gICAgICAgIDxkaXYgY2xhc3M9ImRv
dCBlcnJvciI+PC9kaXY+Ci0gICAgPC9sYWJlbD4KLTwvZGl2PjwveG1wPjwvcHJlPgotICAgICAg
ICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNs
YXNzPSJjb250ZW50Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJk
b3Qgc2VsZWN0b3IiPgotICAgIDxsYWJlbD4KLSAgICAgICAgPGlucHV0IHR5cGU9InJhZGlvIiBu
YW1lPSJzZWxlY3RvciI+Ci0gICAgICAgIDxkaXYgY2xhc3M9ImRvdCBzdWNjZXNzIj48L2Rpdj4K
LSAgICA8L2xhYmVsPgotICAgIDxsYWJlbD4KLSAgICAgICAgPGlucHV0IHR5cGU9InJhZGlvIiBu
YW1lPSJzZWxlY3RvciI+Ci0gICAgICAgIDxkaXYgY2xhc3M9ImRvdCBmYWlsZWQiPjwvZGl2Pgot
ICAgIDwvbGFiZWw+Ci0gICAgPGxhYmVsPgotICAgICAgICA8aW5wdXQgdHlwZT0icmFkaW8iIG5h
bWU9InNlbGVjdG9yIj4KLSAgICAgICAgPGRpdiBjbGFzcz0iZG90IGVycm9yIj48L2Rpdj4KLSAg
ICA8L2xhYmVsPgotPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAg
ICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIAot
ICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGVyIiBpZD0iRWxlbWVudHMt
Y2hpcCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGUiPgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgyPmNoaXA8L2gyPgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0g
ICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAg
ICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudCI+
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByZT48eG1wPjxkaXYgY2xhc3M9ImNoaXAi
PgotICAgIDxkaXYgY2xhc3M9ImRvdCBzbWFsbCBibGluayI+PC9kaXY+Ci0gICAgPGRpdiBjbGFz
cz0idGV4dCBibG9jayI+Ci0gICAgICAgIDxwPmlQb25lPC9wPgotICAgIDwvZGl2PgotPC9kaXY+
Ci08ZGl2IGNsYXNzPSJjaGlwIj4KLSAgICA8ZGl2IGNsYXNzPSJkb3Qgc21hbGwgYmxpbmsgZmFp
bGVkIj48L2Rpdj4KLSAgICA8ZGl2IGNsYXNzPSJ0ZXh0IGJsb2NrIj4KLSAgICAgICAgPHA+aVBh
ZDwvcD4KLSAgICA8L2Rpdj4KLTwvZGl2PgotPGRpdiBjbGFzcz0iY2hpcCI+Ci0gICAgPGRpdiBj
bGFzcz0iZG90IHNtYWxsIHN1Y2Nlc3MiPjwvZGl2PgotICAgIDxkaXYgY2xhc3M9InRleHQgYmxv
Y2siPgotICAgICAgICA8cD5NYWM8L3A+Ci0gICAgPC9kaXY+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9
ImNoaXAiPgotICAgIDxkaXYgY2xhc3M9InRleHQgYmxvY2siPgotICAgICAgICA8cD5tYWNPUzwv
cD4KLSAgICA8L2Rpdj4KLSAgICA8ZGl2IGNsYXNzPSJ0ZXh0IGJsb2NrIj4KLSAgICAgICAgPGE+
WDwvYT4KLSAgICA8L2Rpdj4KLTwvZGl2PgotPGRpdiBjbGFzcz0iY2hpcCI+Ci0gICAgPGRpdiBj
bGFzcz0idGV4dCBibG9jayI+Ci0gICAgICAgIDxwPmlPUzwvcD4KLSAgICA8L2Rpdj4KLSAgICA8
ZGl2IGNsYXNzPSJ0ZXh0IGJsb2NrIj4KLSAgICAgICAgPGE+WDwvYT4KLSAgICA8L2Rpdj4KLTwv
ZGl2PgotPGRpdiBjbGFzcz0iY2hpcCI+Ci0gICAgPGRpdiBjbGFzcz0idGV4dCBibG9jayI+Ci0g
ICAgICAgIDxwPndhdGNoT1M8L3A+Ci0gICAgPC9kaXY+Ci0gICAgPGRpdiBjbGFzcz0idGV4dCBi
bG9jayI+Ci0gICAgICAgIDxhPlg8L2E+Ci0gICAgPC9kaXY+Ci08L2Rpdj48L3htcD48L3ByZT4K
LSAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAg
PGRpdiBjbGFzcz0iY29udGVudCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBj
bGFzcz0iY2hpcCI+Ci0gICAgPGRpdiBjbGFzcz0iZG90IHNtYWxsIGJsaW5rIj48L2Rpdj4KLSAg
ICA8ZGl2IGNsYXNzPSJ0ZXh0IGJsb2NrIj4KLSAgICAgICAgPHA+aVBvbmU8L3A+Ci0gICAgPC9k
aXY+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9ImNoaXAiPgotICAgIDxkaXYgY2xhc3M9ImRvdCBzbWFs
bCBibGluayBmYWlsZWQiPjwvZGl2PgotICAgIDxkaXYgY2xhc3M9InRleHQgYmxvY2siPgotICAg
ICAgICA8cD5pUGFkPC9wPgotICAgIDwvZGl2PgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJjaGlwIj4K
LSAgICA8ZGl2IGNsYXNzPSJkb3Qgc21hbGwgc3VjY2VzcyI+PC9kaXY+Ci0gICAgPGRpdiBjbGFz
cz0idGV4dCBibG9jayI+Ci0gICAgICAgIDxwPk1hYzwvcD4KLSAgICA8L2Rpdj4KLTwvZGl2Pgot
PGRpdiBjbGFzcz0iY2hpcCI+Ci0gICAgPGRpdiBjbGFzcz0idGV4dCBibG9jayI+Ci0gICAgICAg
IDxwPm1hY09TPC9wPgotICAgIDwvZGl2PgotICAgIDxkaXYgY2xhc3M9InRleHQgYmxvY2siPgot
ICAgICAgICA8YT5YPC9hPgotICAgIDwvZGl2PgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJjaGlwIj4K
LSAgICA8ZGl2IGNsYXNzPSJ0ZXh0IGJsb2NrIj4KLSAgICAgICAgPHA+aU9TPC9wPgotICAgIDwv
ZGl2PgotICAgIDxkaXYgY2xhc3M9InRleHQgYmxvY2siPgotICAgICAgICA8YT5YPC9hPgotICAg
IDwvZGl2PgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJjaGlwIj4KLSAgICA8ZGl2IGNsYXNzPSJ0ZXh0
IGJsb2NrIj4KLSAgICAgICAgPHA+d2F0Y2hPUzwvcD4KLSAgICA8L2Rpdj4KLSAgICA8ZGl2IGNs
YXNzPSJ0ZXh0IGJsb2NrIj4KLSAgICAgICAgPGE+WDwvYT4KLSAgICA8L2Rpdj4KLTwvZGl2Pgot
ICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgIAotICAg
ICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAg
ICAgIDxkaXYgY2xhc3M9ImhlYWRlciIgaWQ9IkVsZW1lbnRzLVRhYnMiPgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlIj4KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDxoMj5UYWJzPC9oMj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rp
dj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAK
LSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAg
ICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiPgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDxwcmU+PHhtcD48ZGl2IGNsYXNzPSJ0YWJzIj4KLSAgICA8ZGl2IGNsYXNzPSJ0
aXRsZSI+Ci0gICAgICAgIFRpdGxlCi0gICAgPC9kaXY+Ci0gICAgPGRpdiBjbGFzcz0idGFiIGFj
dGl2ZSI+Ci0gICAgICAgIDxhIGNsYXNzPSJsaW5rIj5UYWIgMTwvYT4KLSAgICA8L2Rpdj4KLSAg
ICA8ZGl2IGNsYXNzPSJ0YWIiPgotICAgICAgICA8YSBjbGFzcz0ibGluayI+VGFiIDI8L2E+Ci0g
ICAgPC9kaXY+Ci08L2Rpdj48L3htcD48L3ByZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwv
ZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudCI+Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGFicyI+Ci0gICAgPGRpdiBjbGFz
cz0idGl0bGUiPgotICAgICAgICBUaXRsZQotICAgIDwvZGl2PgotICAgIDxkaXYgY2xhc3M9InRh
YiBhY3RpdmUiPgotICAgICAgICA8YSBjbGFzcz0ibGluayI+VGFiIDE8L2E+Ci0gICAgPC9kaXY+
Ci0gICAgPGRpdiBjbGFzcz0idGFiIj4KLSAgICAgICAgPGEgY2xhc3M9ImxpbmsiPlRhYiAyPC9h
PgotICAgIDwvZGl2PgotPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAg
ICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAg
IAotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGVyIiBpZD0iRWxlbWVu
dHMtVGltZWxpbmUiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRp
dGxlIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMj5UaW1lbGluZTwvaDI+Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAg
ICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIAotICAg
ICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNz
PSJjb250ZW50Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJlPjx4bXA+PGRpdiBj
bGFzcz0idGltZWxpbmUiPgotICAgIDxkaXYgY2xhc3M9ImhlYWRlciI+Ci0gICAgICAgIDxkaXYg
Y2xhc3M9InNlcmllcyI+Ci0gICAgICAgICAgICB0aW1lIGxpbmUgMQotICAgICAgICA8L2Rpdj4K
LSAgICAgICAgPGRpdiBjbGFzcz0ic2VyaWVzIj4KLSAgICAgICAgICAgIHRpbWUgbGluZSAyCi0g
ICAgICAgIDwvZGl2PgotICAgIDwvZGl2PgotICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiPgotICAg
ICAgICA8ZGl2IGNsYXNzPSJzZXJpZXMiPgotICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90Ij4K
LSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0YWciPjEyMzE8L2Rpdj4KLSAgICAgICAgICAg
IDwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3MiPgotICAgICAgICAg
ICAgICAgIDxkaXYgY2xhc3M9InRhZyI+NDU2PC9kaXY+Ci0gICAgICAgICAgICA8L2Rpdj4KLSAg
ICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCI+PC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNz
PSJkb3QiPjwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90IGVycm9yIj4KLSAgICAg
ICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0YWciPjEyMzwvZGl2PgotICAgICAgICAgICAgPC9kaXY+
Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3QgZW1wdHkiPjwvZGl2PgotICAgICAgICAgICAg
PGRpdiBjbGFzcz0iZG90Ij48L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCI+PC9k
aXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3QiPjwvZGl2PgotICAgICAgICAgICAgPGRp
diBjbGFzcz0iZG90Ij48L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCI+PC9kaXY+
Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3QiPjwvZGl2PgotICAgICAgICAgICAgPGRpdiBj
bGFzcz0iZG90Ij48L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCI+PC9kaXY+Ci0g
ICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3QiPjwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFz
cz0iZG90Ij48L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCI+PC9kaXY+Ci0gICAg
ICAgICAgICA8ZGl2IGNsYXNzPSJkb3QiPjwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0i
ZG90Ij48L2Rpdj4KLSAgICAgICAgPC9kaXY+Ci0gICAgICAgIDxkaXYgY2xhc3M9InNlcmllcyI+
Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3QgZW1wdHkiPjwvZGl2PgotICAgICAgICAgICAg
PGRpdiBjbGFzcz0iZG90IGVtcHR5Ij48L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRv
dCI+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGFnIj4zNTMzPC9kaXY+Ci0gICAgICAg
ICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCI+Ci0gICAgICAgICAgICAg
ICAgPGRpdiBjbGFzcz0idGFnIj4zNTMyPC9kaXY+Ci0gICAgICAgICAgICA8L2Rpdj4KLSAgICAg
ICAgICAgIDxkaXYgY2xhc3M9ImRvdCI+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGFn
Ij4zNTI8L2Rpdj4KLSAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0i
ZG90Ij4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0YWciPjM1MTwvZGl2PgotICAgICAg
ICAgICAgPC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3QiPgotICAgICAgICAgICAg
ICAgIDxkaXYgY2xhc3M9InRhZyI+MTwvZGl2PgotICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAg
ICAgICA8ZGl2IGNsYXNzPSJkb3QiPgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRhZyI+
NDU2PC9kaXY+Ci0gICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRv
dCI+PC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3QiPjwvZGl2PgotICAgICAgICAg
ICAgPGRpdiBjbGFzcz0iZG90Ij48L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCI+
PC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3QiPjwvZGl2PgotICAgICAgICAgICAg
PGRpdiBjbGFzcz0iZG90Ij48L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCI+PC9k
aXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3QiPjwvZGl2PgotICAgICAgICAgICAgPGRp
diBjbGFzcz0iZG90Ij48L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCI+PC9kaXY+
Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3QiPjwvZGl2PgotICAgICAgICA8L2Rpdj4KLSAg
ICAgICAgPGRpdiBjbGFzcz0ieC1heGlzIj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9InNjYWxl
Ij4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsaW5lIj48L2Rpdj4KLSAgICAgICAgICAg
ICAgICA8ZGl2IGNsYXNzPSJ0ZXh0Ij4KLSAgICAgICAgICAgICAgICAgICAgcjEyMzQ1NjcKLSAg
ICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPGRp
diBjbGFzcz0ic2NhbGUiPgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxpbmUiPjwvZGl2
PgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQiPgotICAgICAgICAgICAgICAgICAg
ICByMTIzNDU2NwotICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPC9kaXY+Ci0g
ICAgICAgICAgICA8ZGl2IGNsYXNzPSJzY2FsZSI+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFz
cz0ibGluZSI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dCI+Ci0gICAg
ICAgICAgICAgICAgICAgIHIxMjM0NTY3Ci0gICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAg
ICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9InNjYWxlIj4KLSAgICAgICAgICAg
ICAgICA8ZGl2IGNsYXNzPSJsaW5lIj48L2Rpdj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNz
PSJ0ZXh0Ij4KLSAgICAgICAgICAgICAgICAgICAgcjEyMzQ1NjcKLSAgICAgICAgICAgICAgICA8
L2Rpdj4KLSAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2NhbGUi
PgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxpbmUiPjwvZGl2PgotICAgICAgICAgICAg
ICAgIDxkaXYgY2xhc3M9InRleHQiPgotICAgICAgICAgICAgICAgICAgICByMTIzNDU2NwotICAg
ICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICA8ZGl2
IGNsYXNzPSJzY2FsZSI+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGluZSI+PC9kaXY+
Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dCI+Ci0gICAgICAgICAgICAgICAgICAg
IEkgYW0gYSB0YWcKLSAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDwvZGl2Pgot
ICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2NhbGUiPgotICAgICAgICAgICAgICAgIDxkaXYgY2xh
c3M9ImxpbmUiPjwvZGl2PgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQiPgotICAg
ICAgICAgICAgICAgICAgICBJIGFtIGEgdGFnCi0gICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAg
ICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9InNjYWxlIj4KLSAgICAgICAg
ICAgICAgICA8ZGl2IGNsYXNzPSJsaW5lIj48L2Rpdj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNs
YXNzPSJ0ZXh0Ij4KLSAgICAgICAgICAgICAgICAgICAgSSBhbSBhIHRhZwotICAgICAgICAgICAg
ICAgIDwvZGl2PgotICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJz
Y2FsZSI+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGluZSI+PC9kaXY+Ci0gICAgICAg
ICAgICAgICAgPGRpdiBjbGFzcz0idGV4dCI+Ci0gICAgICAgICAgICAgICAgICAgIEkgYW0gYSB0
YWcKLSAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAg
ICAgPGRpdiBjbGFzcz0ic2NhbGUiPgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxpbmUi
PjwvZGl2PgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQiPgotICAgICAgICAgICAg
ICAgICAgICBJIGFtIGEgdGFnCi0gICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICA8
L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9InNjYWxlIj4KLSAgICAgICAgICAgICAgICA8
ZGl2IGNsYXNzPSJsaW5lIj48L2Rpdj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0
Ij4KLSAgICAgICAgICAgICAgICAgICAgSSBhbSBhIHRhZwotICAgICAgICAgICAgICAgIDwvZGl2
PgotICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJzY2FsZSI+Ci0g
ICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGluZSI+PC9kaXY+Ci0gICAgICAgICAgICAgICAg
PGRpdiBjbGFzcz0idGV4dCI+Ci0gICAgICAgICAgICAgICAgICAgIEkgYW0gYSB0YWcKLSAgICAg
ICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPGRpdiBj
bGFzcz0ic2NhbGUiPgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxpbmUiPjwvZGl2Pgot
ICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQiPgotICAgICAgICAgICAgICAgICAgICBJ
IGFtIGEgdGFnCi0gICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICA8L2Rpdj4KLSAg
ICAgICAgICAgIDxkaXYgY2xhc3M9InNjYWxlIj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNz
PSJsaW5lIj48L2Rpdj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0Ij4KLSAgICAg
ICAgICAgICAgICAgICAgSSBhbSBhIHRhZwotICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAg
ICAgICAgPC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJzY2FsZSI+Ci0gICAgICAgICAg
ICAgICAgPGRpdiBjbGFzcz0ibGluZSI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFz
cz0idGV4dCI+Ci0gICAgICAgICAgICAgICAgICAgIEkgYW0gYSB0YWcKLSAgICAgICAgICAgICAg
ICA8L2Rpdj4KLSAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2Nh
bGUiPgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxpbmUiPjwvZGl2PgotICAgICAgICAg
ICAgICAgIDxkaXYgY2xhc3M9InRleHQiPgotICAgICAgICAgICAgICAgICAgICBJIGFtIGEgdGFn
Ci0gICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAg
IDxkaXYgY2xhc3M9InNjYWxlIj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsaW5lIj48
L2Rpdj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0Ij4KLSAgICAgICAgICAgICAg
ICAgICAgSSBhbSBhIHRhZwotICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPC9k
aXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJzY2FsZSI+Ci0gICAgICAgICAgICAgICAgPGRp
diBjbGFzcz0ibGluZSI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dCI+
Ci0gICAgICAgICAgICAgICAgICAgIEkgYW0gYSB0YWcKLSAgICAgICAgICAgICAgICA8L2Rpdj4K
LSAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2NhbGUiPgotICAg
ICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxpbmUiPjwvZGl2PgotICAgICAgICAgICAgICAgIDxk
aXYgY2xhc3M9InRleHQiPgotICAgICAgICAgICAgICAgICAgICBJIGFtIGEgdGFnCi0gICAgICAg
ICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgPC9kaXY+Ci0gICAg
ICAgIDxkaXYgY2xhc3M9IngtYXhpcyI+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJzY2FsZSBn
cm91cC00Ij4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJib3JkZXItbGluZS1sZWZ0Ij48
L2Rpdj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsaW5lIj48L2Rpdj4KLSAgICAgICAg
ICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0Ij4KLSAgICAgICAgICAgICAgICAgICAgSSBhbSBhIHRh
ZwotICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJv
cmRlci1saW5lLXJpZ2h0Ij48L2Rpdj4KLSAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAg
PGRpdiBjbGFzcz0ic2NhbGUgZ3JvdXAtMyI+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0i
Ym9yZGVyLWxpbmUtbGVmdCI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGlu
ZSI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dCI+Ci0gICAgICAgICAg
ICAgICAgICAgIEkgYW0gYSB0YWcKLSAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAg
ICAgICA8ZGl2IGNsYXNzPSJib3JkZXItbGluZS1yaWdodCI+PC9kaXY+Ci0gICAgICAgICAgICA8
L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9InNjYWxlIj4KLSAgICAgICAgICAgICAgICA8
ZGl2IGNsYXNzPSJsaW5lIj48L2Rpdj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0
Ij4KLSAgICAgICAgICAgICAgICAgICAgSSBhbSBhIHRhZwotICAgICAgICAgICAgICAgIDwvZGl2
PgotICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJzY2FsZSI+Ci0g
ICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGluZSI+PC9kaXY+Ci0gICAgICAgICAgICAgICAg
PGRpdiBjbGFzcz0idGV4dCI+Ci0gICAgICAgICAgICAgICAgICAgIEkgYW0gYSB0YWcKLSAgICAg
ICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPGRpdiBj
bGFzcz0ic2NhbGUgZ3JvdXAtMTAiPgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJvcmRl
ci1saW5lLWxlZnQiPjwvZGl2PgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxpbmUiPjwv
ZGl2PgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQiPgotICAgICAgICAgICAgICAg
ICAgICBJIGFtIGEgdGFnCi0gICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAg
PGRpdiBjbGFzcz0iYm9yZGVyLWxpbmUtcmlnaHQiPjwvZGl2PgotICAgICAgICAgICAgPC9kaXY+
Ci0gICAgICAgIDwvZGl2PgotICAgIDwvZGl2PgotPC9kaXY+PC94bXA+PC9wcmU+Ci0gICAgICAg
ICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xh
c3M9ImNvbnRlbnQiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRp
bWVsaW5lIj4KLSAgICA8ZGl2IGNsYXNzPSJoZWFkZXIiPgotICAgICAgICA8ZGl2IGNsYXNzPSJz
ZXJpZXMiPgotICAgICAgICAgICAgdGltZSBsaW5lIDEKLSAgICAgICAgPC9kaXY+Ci0gICAgICAg
IDxkaXYgY2xhc3M9InNlcmllcyI+Ci0gICAgICAgICAgICB0aW1lIGxpbmUgMgotICAgICAgICA8
L2Rpdj4KLSAgICA8L2Rpdj4KLSAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4KLSAgICAgICAgPGRp
diBjbGFzcz0ic2VyaWVzIj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCI+Ci0gICAgICAg
ICAgICAgICAgPGRpdiBjbGFzcz0idGFnIj4xMjMxPC9kaXY+Ci0gICAgICAgICAgICA8L2Rpdj4K
LSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCBzdWNjZXNzIj4KLSAgICAgICAgICAgICAgICA8
ZGl2IGNsYXNzPSJ0YWciPjQ1NjwvZGl2PgotICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAg
ICA8ZGl2IGNsYXNzPSJkb3QiPjwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90Ij48
L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCBlcnJvciI+Ci0gICAgICAgICAgICAg
ICAgPGRpdiBjbGFzcz0idGFnIj4xMjM8L2Rpdj4KLSAgICAgICAgICAgIDwvZGl2PgotICAgICAg
ICAgICAgPGRpdiBjbGFzcz0iZG90IGVtcHR5Ij48L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xh
c3M9ImRvdCI+PC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3QiPjwvZGl2PgotICAg
ICAgICAgICAgPGRpdiBjbGFzcz0iZG90Ij48L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9
ImRvdCI+PC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3QiPjwvZGl2PgotICAgICAg
ICAgICAgPGRpdiBjbGFzcz0iZG90Ij48L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRv
dCI+PC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3QiPjwvZGl2PgotICAgICAgICAg
ICAgPGRpdiBjbGFzcz0iZG90Ij48L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCI+
PC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3QiPjwvZGl2PgotICAgICAgICAgICAg
PGRpdiBjbGFzcz0iZG90Ij48L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCI+PC9k
aXY+Ci0gICAgICAgIDwvZGl2PgotICAgICAgICA8ZGl2IGNsYXNzPSJzZXJpZXMiPgotICAgICAg
ICAgICAgPGRpdiBjbGFzcz0iZG90IGVtcHR5Ij48L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xh
c3M9ImRvdCBlbXB0eSI+PC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3QiPgotICAg
ICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRhZyI+MzUzMzwvZGl2PgotICAgICAgICAgICAgPC9k
aXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3QiPgotICAgICAgICAgICAgICAgIDxkaXYg
Y2xhc3M9InRhZyI+MzUzMjwvZGl2PgotICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICA8
ZGl2IGNsYXNzPSJkb3QiPgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRhZyI+MzUyPC9k
aXY+Ci0gICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCI+Ci0g
ICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGFnIj4zNTE8L2Rpdj4KLSAgICAgICAgICAgIDwv
ZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90Ij4KLSAgICAgICAgICAgICAgICA8ZGl2
IGNsYXNzPSJ0YWciPjE8L2Rpdj4KLSAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPGRp
diBjbGFzcz0iZG90Ij4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0YWciPjQ1NjwvZGl2
PgotICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3QiPjwvZGl2
PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90Ij48L2Rpdj4KLSAgICAgICAgICAgIDxkaXYg
Y2xhc3M9ImRvdCI+PC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3QiPjwvZGl2Pgot
ICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90Ij48L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xh
c3M9ImRvdCI+PC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3QiPjwvZGl2PgotICAg
ICAgICAgICAgPGRpdiBjbGFzcz0iZG90Ij48L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9
ImRvdCI+PC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3QiPjwvZGl2PgotICAgICAg
ICAgICAgPGRpdiBjbGFzcz0iZG90Ij48L2Rpdj4KLSAgICAgICAgPC9kaXY+Ci0gICAgICAgIDxk
aXYgY2xhc3M9IngtYXhpcyI+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJzY2FsZSI+Ci0gICAg
ICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGluZSI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgPGRp
diBjbGFzcz0idGV4dCI+Ci0gICAgICAgICAgICAgICAgICAgIHIxMjM0NTY3Ci0gICAgICAgICAg
ICAgICAgPC9kaXY+Ci0gICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9
InNjYWxlIj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsaW5lIj48L2Rpdj4KLSAgICAg
ICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0Ij4KLSAgICAgICAgICAgICAgICAgICAgcjEyMzQ1
NjcKLSAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAg
ICAgPGRpdiBjbGFzcz0ic2NhbGUiPgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxpbmUi
PjwvZGl2PgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQiPgotICAgICAgICAgICAg
ICAgICAgICByMTIzNDU2NwotICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPC9k
aXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJzY2FsZSI+Ci0gICAgICAgICAgICAgICAgPGRp
diBjbGFzcz0ibGluZSI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dCI+
Ci0gICAgICAgICAgICAgICAgICAgIHIxMjM0NTY3Ci0gICAgICAgICAgICAgICAgPC9kaXY+Ci0g
ICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9InNjYWxlIj4KLSAgICAg
ICAgICAgICAgICA8ZGl2IGNsYXNzPSJsaW5lIj48L2Rpdj4KLSAgICAgICAgICAgICAgICA8ZGl2
IGNsYXNzPSJ0ZXh0Ij4KLSAgICAgICAgICAgICAgICAgICAgcjEyMzQ1NjcKLSAgICAgICAgICAg
ICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0i
c2NhbGUiPgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxpbmUiPjwvZGl2PgotICAgICAg
ICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQiPgotICAgICAgICAgICAgICAgICAgICBJIGFtIGEg
dGFnCi0gICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAg
ICAgIDxkaXYgY2xhc3M9InNjYWxlIj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsaW5l
Ij48L2Rpdj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0Ij4KLSAgICAgICAgICAg
ICAgICAgICAgSSBhbSBhIHRhZwotICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAg
PC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJzY2FsZSI+Ci0gICAgICAgICAgICAgICAg
PGRpdiBjbGFzcz0ibGluZSI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4
dCI+Ci0gICAgICAgICAgICAgICAgICAgIEkgYW0gYSB0YWcKLSAgICAgICAgICAgICAgICA8L2Rp
dj4KLSAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2NhbGUiPgot
ICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxpbmUiPjwvZGl2PgotICAgICAgICAgICAgICAg
IDxkaXYgY2xhc3M9InRleHQiPgotICAgICAgICAgICAgICAgICAgICBJIGFtIGEgdGFnCi0gICAg
ICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDxkaXYg
Y2xhc3M9InNjYWxlIj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsaW5lIj48L2Rpdj4K
LSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0Ij4KLSAgICAgICAgICAgICAgICAgICAg
SSBhbSBhIHRhZwotICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPC9kaXY+Ci0g
ICAgICAgICAgICA8ZGl2IGNsYXNzPSJzY2FsZSI+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFz
cz0ibGluZSI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dCI+Ci0gICAg
ICAgICAgICAgICAgICAgIEkgYW0gYSB0YWcKLSAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAg
ICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2NhbGUiPgotICAgICAgICAg
ICAgICAgIDxkaXYgY2xhc3M9ImxpbmUiPjwvZGl2PgotICAgICAgICAgICAgICAgIDxkaXYgY2xh
c3M9InRleHQiPgotICAgICAgICAgICAgICAgICAgICBJIGFtIGEgdGFnCi0gICAgICAgICAgICAg
ICAgPC9kaXY+Ci0gICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9InNj
YWxlIj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsaW5lIj48L2Rpdj4KLSAgICAgICAg
ICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0Ij4KLSAgICAgICAgICAgICAgICAgICAgSSBhbSBhIHRh
ZwotICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAg
ICA8ZGl2IGNsYXNzPSJzY2FsZSI+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGluZSI+
PC9kaXY+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dCI+Ci0gICAgICAgICAgICAg
ICAgICAgIEkgYW0gYSB0YWcKLSAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDwv
ZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2NhbGUiPgotICAgICAgICAgICAgICAgIDxk
aXYgY2xhc3M9ImxpbmUiPjwvZGl2PgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQi
PgotICAgICAgICAgICAgICAgICAgICBJIGFtIGEgdGFnCi0gICAgICAgICAgICAgICAgPC9kaXY+
Ci0gICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9InNjYWxlIj4KLSAg
ICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsaW5lIj48L2Rpdj4KLSAgICAgICAgICAgICAgICA8
ZGl2IGNsYXNzPSJ0ZXh0Ij4KLSAgICAgICAgICAgICAgICAgICAgSSBhbSBhIHRhZwotICAgICAg
ICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNs
YXNzPSJzY2FsZSI+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGluZSI+PC9kaXY+Ci0g
ICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dCI+Ci0gICAgICAgICAgICAgICAgICAgIEkg
YW0gYSB0YWcKLSAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDwvZGl2PgotICAg
ICAgICAgICAgPGRpdiBjbGFzcz0ic2NhbGUiPgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9
ImxpbmUiPjwvZGl2PgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQiPgotICAgICAg
ICAgICAgICAgICAgICBJIGFtIGEgdGFnCi0gICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAg
ICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9InNjYWxlIj4KLSAgICAgICAgICAg
ICAgICA8ZGl2IGNsYXNzPSJsaW5lIj48L2Rpdj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNz
PSJ0ZXh0Ij4KLSAgICAgICAgICAgICAgICAgICAgSSBhbSBhIHRhZwotICAgICAgICAgICAgICAg
IDwvZGl2PgotICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgIDwvZGl2PgotICAgICAgICA8ZGl2
IGNsYXNzPSJ4LWF4aXMiPgotICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2NhbGUgZ3JvdXAtNCI+
Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYm9yZGVyLWxpbmUtbGVmdCI+PC9kaXY+Ci0g
ICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGluZSI+PC9kaXY+Ci0gICAgICAgICAgICAgICAg
PGRpdiBjbGFzcz0idGV4dCI+Ci0gICAgICAgICAgICAgICAgICAgIEkgYW0gYSB0YWcKLSAgICAg
ICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJib3JkZXItbGlu
ZS1yaWdodCI+PC9kaXY+Ci0gICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xh
c3M9InNjYWxlIGdyb3VwLTMiPgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJvcmRlci1s
aW5lLWxlZnQiPjwvZGl2PgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxpbmUiPjwvZGl2
PgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQiPgotICAgICAgICAgICAgICAgICAg
ICBJIGFtIGEgdGFnCi0gICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgPGRp
diBjbGFzcz0iYm9yZGVyLWxpbmUtcmlnaHQiPjwvZGl2PgotICAgICAgICAgICAgPC9kaXY+Ci0g
ICAgICAgICAgICA8ZGl2IGNsYXNzPSJzY2FsZSI+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFz
cz0ibGluZSI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dCI+Ci0gICAg
ICAgICAgICAgICAgICAgIEkgYW0gYSB0YWcKLSAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAg
ICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2NhbGUiPgotICAgICAgICAg
ICAgICAgIDxkaXYgY2xhc3M9ImxpbmUiPjwvZGl2PgotICAgICAgICAgICAgICAgIDxkaXYgY2xh
c3M9InRleHQiPgotICAgICAgICAgICAgICAgICAgICBJIGFtIGEgdGFnCi0gICAgICAgICAgICAg
ICAgPC9kaXY+Ci0gICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9InNj
YWxlIGdyb3VwLTEwIj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJib3JkZXItbGluZS1s
ZWZ0Ij48L2Rpdj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsaW5lIj48L2Rpdj4KLSAg
ICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0Ij4KLSAgICAgICAgICAgICAgICAgICAgSSBh
bSBhIHRhZwotICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgIDxkaXYgY2xh
c3M9ImJvcmRlci1saW5lLXJpZ2h0Ij48L2Rpdj4KLSAgICAgICAgICAgIDwvZGl2PgotICAgICAg
ICA8L2Rpdj4KLSAgICA8L2Rpdj4KLTwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgPC9k
aXY+Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudCI+Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvLXJldmlzaW9uIHRpbWVsaW5lIHRvcCB4LWF4aXMKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAg
IAotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudCI+Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPHByZT48eG1wPjxkaXYgY2xhc3M9InRpbWVsaW5lIj4KLSAg
ICA8ZGl2IGNsYXNzPSJoZWFkZXIgd2l0aC10b3AteC1heGlzIj4KLSAgICAgICAgPGRpdiBjbGFz
cz0ic2VyaWVzIj4KLSAgICAgICAgICAgIERlYnVnCi0gICAgICAgIDwvZGl2PgotICAgICAgICA8
ZGl2IGNsYXNzPSJzZXJpZXMiPgotICAgICAgICAgICAgUmVsZWFzZQotICAgICAgICA8L2Rpdj4K
LSAgICA8L2Rpdj4KLSAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4KLSAgICAgICAgPGRpdiBjbGFz
cz0ieC1heGlzIHRvcCI+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJzY2FsZSI+Ci0gICAgICAg
ICAgICAgICAgPGRpdiBjbGFzcz0ibGluZSI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgPGRpdiBj
bGFzcz0idGV4dCI+Ci0gICAgICAgICAgICAgICAgICAgIHIyNDQ1MTAKLSAgICAgICAgICAgICAg
ICA8L2Rpdj4KLSAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2Nh
bGUiPgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxpbmUiPjwvZGl2PgotICAgICAgICAg
ICAgICAgIDxkaXYgY2xhc3M9InRleHQiPgotICAgICAgICAgICAgICAgICAgICByMjQ0NTA5Ci0g
ICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDxk
aXYgY2xhc3M9InNjYWxlIGdyb3VwLTQiPgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJv
cmRlci1saW5lLWxlZnQiPjwvZGl2PgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxpbmUi
PjwvZGl2PgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQiPgotICAgICAgICAgICAg
ICAgICAgICByMjQ0NTA4Ci0gICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAg
PGRpdiBjbGFzcz0iYm9yZGVyLWxpbmUtcmlnaHQiPjwvZGl2PgotICAgICAgICAgICAgPC9kaXY+
Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJzY2FsZSI+Ci0gICAgICAgICAgICAgICAgPGRpdiBj
bGFzcz0ibGluZSI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dCI+Ci0g
ICAgICAgICAgICAgICAgICAgIHIyNDQ1MDcKLSAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAg
ICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2NhbGUiPgotICAgICAgICAg
ICAgICAgIDxkaXYgY2xhc3M9ImxpbmUiPjwvZGl2PgotICAgICAgICAgICAgICAgIDxkaXYgY2xh
c3M9InRleHQiPgotICAgICAgICAgICAgICAgICAgICByMjQ0NTA2Ci0gICAgICAgICAgICAgICAg
PC9kaXY+Ci0gICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9InNjYWxl
Ij4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsaW5lIj48L2Rpdj4KLSAgICAgICAgICAg
ICAgICA8ZGl2IGNsYXNzPSJ0ZXh0Ij4KLSAgICAgICAgICAgICAgICAgICAgcjI0NDUwNQotICAg
ICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICA8ZGl2
IGNsYXNzPSJzY2FsZSI+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGluZSI+PC9kaXY+
Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dCI+Ci0gICAgICAgICAgICAgICAgICAg
IHIyNDQ1MDQKLSAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDwvZGl2PgotICAg
ICAgICA8L2Rpdj4KLQotICAgICAgICA8ZGl2IGNsYXNzPSJzZXJpZXMiPgotICAgICAgICAgICAg
PGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3MiPjwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0i
ZG90IHN1Y2Nlc3MiPjwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3Mi
PjwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3MiPjwvZGl2PgotICAg
ICAgICAgICAgPGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3MiPjwvZGl2PgotICAgICAgICAgICAgPGRp
diBjbGFzcz0iZG90IHN1Y2Nlc3MiPjwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90
IHN1Y2Nlc3MiPjwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3MiPjwv
ZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3MiPjwvZGl2PgotICAgICAg
ICAgICAgPGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3MiPjwvZGl2PgotICAgICAgICA8L2Rpdj4KLSAg
ICAgICAgPGRpdiBjbGFzcz0ic2VyaWVzIj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCBz
dWNjZXNzIj48L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCBzdWNjZXNzIj48L2Rp
dj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCBzdWNjZXNzIj48L2Rpdj4KLSAgICAgICAg
ICAgIDxkaXYgY2xhc3M9ImRvdCBzdWNjZXNzIj48L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xh
c3M9ImRvdCBzdWNjZXNzIj48L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCBzdWNj
ZXNzIj48L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCBzdWNjZXNzIj48L2Rpdj4K
LSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCBzdWNjZXNzIj48L2Rpdj4KLSAgICAgICAgICAg
IDxkaXYgY2xhc3M9ImRvdCBzdWNjZXNzIj48L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9
ImRvdCBzdWNjZXNzIj48L2Rpdj4KLSAgICAgICAgPC9kaXY+Ci0gICAgICAgIDxkaXYgY2xhc3M9
IngtYXhpcyI+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJzY2FsZSBncm91cC0zIj4KLSAgICAg
ICAgICAgICAgICA8ZGl2IGNsYXNzPSJib3JkZXItbGluZS1sZWZ0Ij48L2Rpdj4KLSAgICAgICAg
ICAgICAgICA8ZGl2IGNsYXNzPSJsaW5lIj48L2Rpdj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNs
YXNzPSJ0ZXh0Ij4KLSAgICAgICAgICAgICAgICAgICAgYWM4MjZhMzgKLSAgICAgICAgICAgICAg
ICA8L2Rpdj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJib3JkZXItbGluZS1yaWdodCI+
PC9kaXY+Ci0gICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9InNjYWxl
Ij4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsaW5lIj48L2Rpdj4KLSAgICAgICAgICAg
ICAgICA8ZGl2IGNsYXNzPSJ0ZXh0Ij4KLSAgICAgICAgICAgICAgICAgICAgYzM1NThkNTAKLSAg
ICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPGRp
diBjbGFzcz0ic2NhbGUiPgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxpbmUiPjwvZGl2
PgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQiPgotICAgICAgICAgICAgICAgICAg
ICAwODYzNzQyMwotICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPC9kaXY+Ci0g
ICAgICAgICAgICA8ZGl2IGNsYXNzPSJzY2FsZSBncm91cC01Ij4KLSAgICAgICAgICAgICAgICA8
ZGl2IGNsYXNzPSJib3JkZXItbGluZS1sZWZ0Ij48L2Rpdj4KLSAgICAgICAgICAgICAgICA8ZGl2
IGNsYXNzPSJsaW5lIj48L2Rpdj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0Ij4K
LSAgICAgICAgICAgICAgICAgICAgYzk0ZmViNjMKLSAgICAgICAgICAgICAgICA8L2Rpdj4KLSAg
ICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJib3JkZXItbGluZS1yaWdodCI+PC9kaXY+Ci0gICAg
ICAgICAgICA8L2Rpdj4KLSAgICAgICAgPC9kaXY+Ci0gICAgPC9kaXY+Ci08L2Rpdj48L3htcD48
L3ByZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAg
ICAgICAgPGRpdiBjbGFzcz0iY29udGVudCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
PGRpdiBjbGFzcz0idGltZWxpbmUiPgotICAgIDxkaXYgY2xhc3M9ImhlYWRlciB3aXRoLXRvcC14
LWF4aXMiPgotICAgICAgICA8ZGl2IGNsYXNzPSJzZXJpZXMiPgotICAgICAgICAgICAgRGVidWcK
LSAgICAgICAgPC9kaXY+Ci0gICAgICAgIDxkaXYgY2xhc3M9InNlcmllcyI+Ci0gICAgICAgICAg
ICBSZWxlYXNlCi0gICAgICAgIDwvZGl2PgotICAgIDwvZGl2PgotICAgIDxkaXYgY2xhc3M9ImNv
bnRlbnQiPgotICAgICAgICA8ZGl2IGNsYXNzPSJ4LWF4aXMgdG9wIj4KLSAgICAgICAgICAgIDxk
aXYgY2xhc3M9InNjYWxlIj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsaW5lIj48L2Rp
dj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0Ij4KLSAgICAgICAgICAgICAgICAg
ICAgcjI0NDUxMAotICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPC9kaXY+Ci0g
ICAgICAgICAgICA8ZGl2IGNsYXNzPSJzY2FsZSI+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFz
cz0ibGluZSI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dCI+Ci0gICAg
ICAgICAgICAgICAgICAgIHIyNDQ1MDkKLSAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAg
ICAgIDwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2NhbGUgZ3JvdXAtNCI+Ci0gICAg
ICAgICAgICAgICAgPGRpdiBjbGFzcz0iYm9yZGVyLWxpbmUtbGVmdCI+PC9kaXY+Ci0gICAgICAg
ICAgICAgICAgPGRpdiBjbGFzcz0ibGluZSI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgPGRpdiBj
bGFzcz0idGV4dCI+Ci0gICAgICAgICAgICAgICAgICAgIHIyNDQ1MDgKLSAgICAgICAgICAgICAg
ICA8L2Rpdj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJib3JkZXItbGluZS1yaWdodCI+
PC9kaXY+Ci0gICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9InNjYWxl
Ij4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsaW5lIj48L2Rpdj4KLSAgICAgICAgICAg
ICAgICA8ZGl2IGNsYXNzPSJ0ZXh0Ij4KLSAgICAgICAgICAgICAgICAgICAgcjI0NDUwNwotICAg
ICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICA8ZGl2
IGNsYXNzPSJzY2FsZSI+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGluZSI+PC9kaXY+
Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dCI+Ci0gICAgICAgICAgICAgICAgICAg
IHIyNDQ1MDYKLSAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDwvZGl2PgotICAg
ICAgICAgICAgPGRpdiBjbGFzcz0ic2NhbGUiPgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9
ImxpbmUiPjwvZGl2PgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQiPgotICAgICAg
ICAgICAgICAgICAgICByMjQ0NTA1Ci0gICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAg
ICA8L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9InNjYWxlIj4KLSAgICAgICAgICAgICAg
ICA8ZGl2IGNsYXNzPSJsaW5lIj48L2Rpdj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0
ZXh0Ij4KLSAgICAgICAgICAgICAgICAgICAgcjI0NDUwNAotICAgICAgICAgICAgICAgIDwvZGl2
PgotICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgIDwvZGl2PgotCi0gICAgICAgIDxkaXYgY2xh
c3M9InNlcmllcyI+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qgc3VjY2VzcyI+PC9kaXY+
Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qgc3VjY2VzcyI+PC9kaXY+Ci0gICAgICAgICAg
ICA8ZGl2IGNsYXNzPSJkb3Qgc3VjY2VzcyI+PC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNz
PSJkb3Qgc3VjY2VzcyI+PC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qgc3VjY2Vz
cyI+PC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qgc3VjY2VzcyI+PC9kaXY+Ci0g
ICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qgc3VjY2VzcyI+PC9kaXY+Ci0gICAgICAgICAgICA8
ZGl2IGNsYXNzPSJkb3Qgc3VjY2VzcyI+PC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJk
b3Qgc3VjY2VzcyI+PC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qgc3VjY2VzcyI+
PC9kaXY+Ci0gICAgICAgIDwvZGl2PgotICAgICAgICA8ZGl2IGNsYXNzPSJzZXJpZXMiPgotICAg
ICAgICAgICAgPGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3MiPjwvZGl2PgotICAgICAgICAgICAgPGRp
diBjbGFzcz0iZG90IHN1Y2Nlc3MiPjwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90
IHN1Y2Nlc3MiPjwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3MiPjwv
ZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3MiPjwvZGl2PgotICAgICAg
ICAgICAgPGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3MiPjwvZGl2PgotICAgICAgICAgICAgPGRpdiBj
bGFzcz0iZG90IHN1Y2Nlc3MiPjwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90IHN1
Y2Nlc3MiPjwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3MiPjwvZGl2
PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3MiPjwvZGl2PgotICAgICAgICA8
L2Rpdj4KLSAgICAgICAgPGRpdiBjbGFzcz0ieC1heGlzIj4KLSAgICAgICAgICAgIDxkaXYgY2xh
c3M9InNjYWxlIGdyb3VwLTMiPgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJvcmRlci1s
aW5lLWxlZnQiPjwvZGl2PgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxpbmUiPjwvZGl2
PgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQiPgotICAgICAgICAgICAgICAgICAg
ICBhYzgyNmEzOAotICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgIDxkaXYg
Y2xhc3M9ImJvcmRlci1saW5lLXJpZ2h0Ij48L2Rpdj4KLSAgICAgICAgICAgIDwvZGl2PgotICAg
ICAgICAgICAgPGRpdiBjbGFzcz0ic2NhbGUiPgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9
ImxpbmUiPjwvZGl2PgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQiPgotICAgICAg
ICAgICAgICAgICAgICBjMzU1OGQ1MAotICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAg
ICAgPC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJzY2FsZSI+Ci0gICAgICAgICAgICAg
ICAgPGRpdiBjbGFzcz0ibGluZSI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0i
dGV4dCI+Ci0gICAgICAgICAgICAgICAgICAgIDA4NjM3NDIzCi0gICAgICAgICAgICAgICAgPC9k
aXY+Ci0gICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9InNjYWxlIGdy
b3VwLTUiPgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJvcmRlci1saW5lLWxlZnQiPjwv
ZGl2PgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxpbmUiPjwvZGl2PgotICAgICAgICAg
ICAgICAgIDxkaXYgY2xhc3M9InRleHQiPgotICAgICAgICAgICAgICAgICAgICBjOTRmZWI2Mwot
ICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJvcmRl
ci1saW5lLXJpZ2h0Ij48L2Rpdj4KLSAgICAgICAgICAgIDwvZGl2PgotICAgICAgICA8L2Rpdj4K
LSAgICA8L2Rpdj4KLTwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAg
ICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudCI+Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIE9ubHkgR3JvdXAgU2NhbGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAg
ICAgPGRpdiBjbGFzcz0iY29udGVudCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBy
ZT48eG1wPjxkaXYgY2xhc3M9InRpbWVsaW5lIj4KLSAgICA8ZGl2IGNsYXNzPSJoZWFkZXIgd2l0
aC10b3AteC1heGlzIj4KLSAgICAgICAgPGRpdiBjbGFzcz0ic2VyaWVzIj4KLSAgICAgICAgICAg
IERlYnVnCi0gICAgICAgIDwvZGl2PgotICAgICAgICA8ZGl2IGNsYXNzPSJzZXJpZXMiPgotICAg
ICAgICAgICAgUmVsZWFzZQotICAgICAgICA8L2Rpdj4KLSAgICA8L2Rpdj4KLSAgICA8ZGl2IGNs
YXNzPSJjb250ZW50Ij4KLSAgICAgICAgPGRpdiBjbGFzcz0ieC1heGlzIHRvcCI+Ci0gICAgICAg
ICAgICA8ZGl2IGNsYXNzPSJzY2FsZSBncm91cC00Ij4KLSAgICAgICAgICAgICAgICA8ZGl2IGNs
YXNzPSJib3JkZXItbGluZS1sZWZ0Ij48L2Rpdj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNz
PSJsaW5lIj48L2Rpdj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0Ij4KLSAgICAg
ICAgICAgICAgICAgICAgcjI0NDUwOAotICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAg
ICAgICAgIDxkaXYgY2xhc3M9ImJvcmRlci1saW5lLXJpZ2h0Ij48L2Rpdj4KLSAgICAgICAgICAg
IDwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2NhbGUgZ3JvdXAtNCI+Ci0gICAgICAg
ICAgICAgICAgPGRpdiBjbGFzcz0iYm9yZGVyLWxpbmUtbGVmdCI+PC9kaXY+Ci0gICAgICAgICAg
ICAgICAgPGRpdiBjbGFzcz0ibGluZSI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFz
cz0idGV4dCI+Ci0gICAgICAgICAgICAgICAgICAgIHIyNDQ1MTAKLSAgICAgICAgICAgICAgICA8
L2Rpdj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJib3JkZXItbGluZS1yaWdodCI+PC9k
aXY+Ci0gICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgPC9kaXY+Ci0gICAgICAgIDxkaXYgY2xh
c3M9InNlcmllcyI+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qgc3VjY2VzcyI+PC9kaXY+
Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qgc3VjY2VzcyI+PC9kaXY+Ci0gICAgICAgICAg
ICA8ZGl2IGNsYXNzPSJkb3Qgc3VjY2VzcyI+PC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNz
PSJkb3Qgc3VjY2VzcyI+PC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qgc3VjY2Vz
cyI+PC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qgc3VjY2VzcyI+PC9kaXY+Ci0g
ICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qgc3VjY2VzcyI+PC9kaXY+Ci0gICAgICAgICAgICA8
ZGl2IGNsYXNzPSJkb3Qgc3VjY2VzcyI+PC9kaXY+Ci0gICAgICAgIDwvZGl2PgotICAgICAgICA8
ZGl2IGNsYXNzPSJzZXJpZXMiPgotICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3Mi
PjwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3MiPjwvZGl2PgotICAg
ICAgICAgICAgPGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3MiPjwvZGl2PgotICAgICAgICAgICAgPGRp
diBjbGFzcz0iZG90IHN1Y2Nlc3MiPjwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90
IHN1Y2Nlc3MiPjwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3MiPjwv
ZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3MiPjwvZGl2PgotICAgICAg
ICAgICAgPGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3MiPjwvZGl2PgotICAgICAgICA8L2Rpdj4KLSAg
ICAgICAgPGRpdiBjbGFzcz0ieC1heGlzIj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9InNjYWxl
IGdyb3VwLTMiPgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJvcmRlci1saW5lLWxlZnQi
PjwvZGl2PgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxpbmUiPjwvZGl2PgotICAgICAg
ICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQiPgotICAgICAgICAgICAgICAgICAgICBhYzgyNmEz
OAotICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJv
cmRlci1saW5lLXJpZ2h0Ij48L2Rpdj4KLSAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAg
PGRpdiBjbGFzcz0ic2NhbGUgZ3JvdXAtNSI+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0i
Ym9yZGVyLWxpbmUtbGVmdCI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGlu
ZSI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dCI+Ci0gICAgICAgICAg
ICAgICAgICAgIGM5NGZlYjYzCi0gICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAg
ICAgPGRpdiBjbGFzcz0iYm9yZGVyLWxpbmUtcmlnaHQiPjwvZGl2PgotICAgICAgICAgICAgPC9k
aXY+Ci0gICAgICAgIDwvZGl2PgotICAgIDwvZGl2PgotPC9kaXY+PC94bXA+PC9wcmU+Ci0gICAg
ICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYg
Y2xhc3M9ImNvbnRlbnQiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9
InRpbWVsaW5lIj4KLSAgICA8ZGl2IGNsYXNzPSJoZWFkZXIgd2l0aC10b3AteC1heGlzIj4KLSAg
ICAgICAgPGRpdiBjbGFzcz0ic2VyaWVzIj4KLSAgICAgICAgICAgIERlYnVnCi0gICAgICAgIDwv
ZGl2PgotICAgICAgICA8ZGl2IGNsYXNzPSJzZXJpZXMiPgotICAgICAgICAgICAgUmVsZWFzZQot
ICAgICAgICA8L2Rpdj4KLSAgICA8L2Rpdj4KLSAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4KLSAg
ICAgICAgPGRpdiBjbGFzcz0ieC1heGlzIHRvcCI+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJz
Y2FsZSBncm91cC00Ij4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJib3JkZXItbGluZS1s
ZWZ0Ij48L2Rpdj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsaW5lIj48L2Rpdj4KLSAg
ICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0Ij4KLSAgICAgICAgICAgICAgICAgICAgcjI0
NDUwOAotICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9
ImJvcmRlci1saW5lLXJpZ2h0Ij48L2Rpdj4KLSAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAg
ICAgPGRpdiBjbGFzcz0ic2NhbGUgZ3JvdXAtNCI+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFz
cz0iYm9yZGVyLWxpbmUtbGVmdCI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0i
bGluZSI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dCI+Ci0gICAgICAg
ICAgICAgICAgICAgIHIyNDQ1MTAKLSAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAg
ICAgICA8ZGl2IGNsYXNzPSJib3JkZXItbGluZS1yaWdodCI+PC9kaXY+Ci0gICAgICAgICAgICA8
L2Rpdj4KLSAgICAgICAgPC9kaXY+Ci0gICAgICAgIDxkaXYgY2xhc3M9InNlcmllcyI+Ci0gICAg
ICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qgc3VjY2VzcyI+PC9kaXY+Ci0gICAgICAgICAgICA8ZGl2
IGNsYXNzPSJkb3Qgc3VjY2VzcyI+PC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qg
c3VjY2VzcyI+PC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qgc3VjY2VzcyI+PC9k
aXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qgc3VjY2VzcyI+PC9kaXY+Ci0gICAgICAg
ICAgICA8ZGl2IGNsYXNzPSJkb3Qgc3VjY2VzcyI+PC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNs
YXNzPSJkb3Qgc3VjY2VzcyI+PC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qgc3Vj
Y2VzcyI+PC9kaXY+Ci0gICAgICAgIDwvZGl2PgotICAgICAgICA8ZGl2IGNsYXNzPSJzZXJpZXMi
PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3MiPjwvZGl2PgotICAgICAgICAg
ICAgPGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3MiPjwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFz
cz0iZG90IHN1Y2Nlc3MiPjwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90IHN1Y2Nl
c3MiPjwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3MiPjwvZGl2Pgot
ICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3MiPjwvZGl2PgotICAgICAgICAgICAg
PGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3MiPjwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0i
ZG90IHN1Y2Nlc3MiPjwvZGl2PgotICAgICAgICA8L2Rpdj4KLSAgICAgICAgPGRpdiBjbGFzcz0i
eC1heGlzIj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9InNjYWxlIGdyb3VwLTMiPgotICAgICAg
ICAgICAgICAgIDxkaXYgY2xhc3M9ImJvcmRlci1saW5lLWxlZnQiPjwvZGl2PgotICAgICAgICAg
ICAgICAgIDxkaXYgY2xhc3M9ImxpbmUiPjwvZGl2PgotICAgICAgICAgICAgICAgIDxkaXYgY2xh
c3M9InRleHQiPgotICAgICAgICAgICAgICAgICAgICBhYzgyNmEzOAotICAgICAgICAgICAgICAg
IDwvZGl2PgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJvcmRlci1saW5lLXJpZ2h0Ij48
L2Rpdj4KLSAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2NhbGUg
Z3JvdXAtNSI+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYm9yZGVyLWxpbmUtbGVmdCI+
PC9kaXY+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGluZSI+PC9kaXY+Ci0gICAgICAg
ICAgICAgICAgPGRpdiBjbGFzcz0idGV4dCI+Ci0gICAgICAgICAgICAgICAgICAgIGM5NGZlYjYz
Ci0gICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYm9y
ZGVyLWxpbmUtcmlnaHQiPjwvZGl2PgotICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgIDwvZGl2
PgotICAgIDwvZGl2PgotPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAg
ICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgTGFyZ2UgU2VyaWVzIExhYmVsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAg
ICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDxwcmU+PHhtcD48ZGl2IGNsYXNzPSJ0aW1lbGluZSI+Ci0gICAgPGRpdiBjbGFzcz0iaGVhZGVy
IHdpdGgtdG9wLXgtYXhpcyI+Ci0gICAgICAgIDxkaXYgY2xhc3M9InNlcmllcyI+Ci0gICAgICAg
ICAgICBJIGFtIGEgdmVyeSBsb25nIGFuZCBiaWcgc2VyaWVzIDEKLSAgICAgICAgPC9kaXY+Ci0g
ICAgICAgIDxkaXYgY2xhc3M9InNlcmllcyI+Ci0gICAgICAgICAgICBJIGFtIGEgdmVyeSBsb25n
IGFuZCBiaWcgc2VyaWVzIDIKLSAgICAgICAgPC9kaXY+Ci0gICAgPC9kaXY+Ci0gICAgPGRpdiBj
bGFzcz0iY29udGVudCI+Ci0gICAgICAgIDxkaXYgY2xhc3M9IngtYXhpcyB0b3AiPgotICAgICAg
ICAgICAgPGRpdiBjbGFzcz0ic2NhbGUiPgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Imxp
bmUiPjwvZGl2PgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQiPgotICAgICAgICAg
ICAgICAgICAgICByMjQ0NTEwCi0gICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICA8
L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9InNjYWxlIj4KLSAgICAgICAgICAgICAgICA8
ZGl2IGNsYXNzPSJsaW5lIj48L2Rpdj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0
Ij4KLSAgICAgICAgICAgICAgICAgICAgcjI0NDUwOQotICAgICAgICAgICAgICAgIDwvZGl2Pgot
ICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJzY2FsZSBncm91cC00
Ij4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJib3JkZXItbGluZS1sZWZ0Ij48L2Rpdj4K
LSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsaW5lIj48L2Rpdj4KLSAgICAgICAgICAgICAg
ICA8ZGl2IGNsYXNzPSJ0ZXh0Ij4KLSAgICAgICAgICAgICAgICAgICAgcjI0NDUwOAotICAgICAg
ICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJvcmRlci1saW5l
LXJpZ2h0Ij48L2Rpdj4KLSAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFz
cz0ic2NhbGUiPgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxpbmUiPjwvZGl2PgotICAg
ICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQiPgotICAgICAgICAgICAgICAgICAgICByMjQ0
NTA3Ci0gICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAg
ICAgIDxkaXYgY2xhc3M9InNjYWxlIj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsaW5l
Ij48L2Rpdj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0Ij4KLSAgICAgICAgICAg
ICAgICAgICAgcjI0NDUwNgotICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPC9k
aXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJzY2FsZSI+Ci0gICAgICAgICAgICAgICAgPGRp
diBjbGFzcz0ibGluZSI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dCI+
Ci0gICAgICAgICAgICAgICAgICAgIHIyNDQ1MDUKLSAgICAgICAgICAgICAgICA8L2Rpdj4KLSAg
ICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2NhbGUiPgotICAgICAg
ICAgICAgICAgIDxkaXYgY2xhc3M9ImxpbmUiPjwvZGl2PgotICAgICAgICAgICAgICAgIDxkaXYg
Y2xhc3M9InRleHQiPgotICAgICAgICAgICAgICAgICAgICByMjQ0NTA0Ci0gICAgICAgICAgICAg
ICAgPC9kaXY+Ci0gICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgPC9kaXY+Ci0KLSAgICAgICAg
PGRpdiBjbGFzcz0ic2VyaWVzIj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCBzdWNjZXNz
Ij48L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCBzdWNjZXNzIj48L2Rpdj4KLSAg
ICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCBzdWNjZXNzIj48L2Rpdj4KLSAgICAgICAgICAgIDxk
aXYgY2xhc3M9ImRvdCBzdWNjZXNzIj48L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRv
dCBzdWNjZXNzIj48L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCBzdWNjZXNzIj48
L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCBzdWNjZXNzIj48L2Rpdj4KLSAgICAg
ICAgICAgIDxkaXYgY2xhc3M9ImRvdCBzdWNjZXNzIj48L2Rpdj4KLSAgICAgICAgICAgIDxkaXYg
Y2xhc3M9ImRvdCBzdWNjZXNzIj48L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCBz
dWNjZXNzIj48L2Rpdj4KLSAgICAgICAgPC9kaXY+Ci0gICAgICAgIDxkaXYgY2xhc3M9InNlcmll
cyI+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qgc3VjY2VzcyI+PC9kaXY+Ci0gICAgICAg
ICAgICA8ZGl2IGNsYXNzPSJkb3Qgc3VjY2VzcyI+PC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNs
YXNzPSJkb3Qgc3VjY2VzcyI+PC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qgc3Vj
Y2VzcyI+PC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qgc3VjY2VzcyI+PC9kaXY+
Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qgc3VjY2VzcyI+PC9kaXY+Ci0gICAgICAgICAg
ICA8ZGl2IGNsYXNzPSJkb3Qgc3VjY2VzcyI+PC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNz
PSJkb3Qgc3VjY2VzcyI+PC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qgc3VjY2Vz
cyI+PC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qgc3VjY2VzcyI+PC9kaXY+Ci0g
ICAgICAgIDwvZGl2PgotICAgICAgICA8ZGl2IGNsYXNzPSJ4LWF4aXMiPgotICAgICAgICAgICAg
PGRpdiBjbGFzcz0ic2NhbGUgZ3JvdXAtMyI+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0i
Ym9yZGVyLWxpbmUtbGVmdCI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGlu
ZSI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dCI+Ci0gICAgICAgICAg
ICAgICAgICAgIGFjODI2YTM4Ci0gICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAg
ICAgPGRpdiBjbGFzcz0iYm9yZGVyLWxpbmUtcmlnaHQiPjwvZGl2PgotICAgICAgICAgICAgPC9k
aXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJzY2FsZSI+Ci0gICAgICAgICAgICAgICAgPGRp
diBjbGFzcz0ibGluZSI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dCI+
Ci0gICAgICAgICAgICAgICAgICAgIGMzNTU4ZDUwCi0gICAgICAgICAgICAgICAgPC9kaXY+Ci0g
ICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9InNjYWxlIj4KLSAgICAg
ICAgICAgICAgICA8ZGl2IGNsYXNzPSJsaW5lIj48L2Rpdj4KLSAgICAgICAgICAgICAgICA8ZGl2
IGNsYXNzPSJ0ZXh0Ij4KLSAgICAgICAgICAgICAgICAgICAgMDg2Mzc0MjMKLSAgICAgICAgICAg
ICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0i
c2NhbGUgZ3JvdXAtNSI+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYm9yZGVyLWxpbmUt
bGVmdCI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGluZSI+PC9kaXY+Ci0g
ICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dCI+Ci0gICAgICAgICAgICAgICAgICAgIGM5
NGZlYjYzCi0gICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFz
cz0iYm9yZGVyLWxpbmUtcmlnaHQiPjwvZGl2PgotICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAg
IDwvZGl2PgotICAgIDwvZGl2PgotPC9kaXY+PC94bXA+PC9wcmU+Ci0gICAgICAgICAgICAgICAg
ICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRl
bnQiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRpbWVsaW5lIj4K
LSAgICA8ZGl2IGNsYXNzPSJoZWFkZXIgd2l0aC10b3AteC1heGlzIj4KLSAgICAgICAgPGRpdiBj
bGFzcz0ic2VyaWVzIj4KLSAgICAgICAgICAgIEkgYW0gYSB2ZXJ5IGxvbmcgYW5kIGJpZyBzZXJp
ZXMgMQotICAgICAgICA8L2Rpdj4KLSAgICAgICAgPGRpdiBjbGFzcz0ic2VyaWVzIj4KLSAgICAg
ICAgICAgIEkgYW0gYSB2ZXJ5IGxvbmcgYW5kIGJpZyBzZXJpZXMgMgotICAgICAgICA8L2Rpdj4K
LSAgICA8L2Rpdj4KLSAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4KLSAgICAgICAgPGRpdiBjbGFz
cz0ieC1heGlzIHRvcCI+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJzY2FsZSI+Ci0gICAgICAg
ICAgICAgICAgPGRpdiBjbGFzcz0ibGluZSI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgPGRpdiBj
bGFzcz0idGV4dCI+Ci0gICAgICAgICAgICAgICAgICAgIHIyNDQ1MTAKLSAgICAgICAgICAgICAg
ICA8L2Rpdj4KLSAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2Nh
bGUiPgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxpbmUiPjwvZGl2PgotICAgICAgICAg
ICAgICAgIDxkaXYgY2xhc3M9InRleHQiPgotICAgICAgICAgICAgICAgICAgICByMjQ0NTA5Ci0g
ICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDxk
aXYgY2xhc3M9InNjYWxlIGdyb3VwLTQiPgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJv
cmRlci1saW5lLWxlZnQiPjwvZGl2PgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxpbmUi
PjwvZGl2PgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQiPgotICAgICAgICAgICAg
ICAgICAgICByMjQ0NTA4Ci0gICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAg
PGRpdiBjbGFzcz0iYm9yZGVyLWxpbmUtcmlnaHQiPjwvZGl2PgotICAgICAgICAgICAgPC9kaXY+
Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJzY2FsZSI+Ci0gICAgICAgICAgICAgICAgPGRpdiBj
bGFzcz0ibGluZSI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dCI+Ci0g
ICAgICAgICAgICAgICAgICAgIHIyNDQ1MDcKLSAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAg
ICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2NhbGUiPgotICAgICAgICAg
ICAgICAgIDxkaXYgY2xhc3M9ImxpbmUiPjwvZGl2PgotICAgICAgICAgICAgICAgIDxkaXYgY2xh
c3M9InRleHQiPgotICAgICAgICAgICAgICAgICAgICByMjQ0NTA2Ci0gICAgICAgICAgICAgICAg
PC9kaXY+Ci0gICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9InNjYWxl
Ij4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsaW5lIj48L2Rpdj4KLSAgICAgICAgICAg
ICAgICA8ZGl2IGNsYXNzPSJ0ZXh0Ij4KLSAgICAgICAgICAgICAgICAgICAgcjI0NDUwNQotICAg
ICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICA8ZGl2
IGNsYXNzPSJzY2FsZSI+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGluZSI+PC9kaXY+
Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dCI+Ci0gICAgICAgICAgICAgICAgICAg
IHIyNDQ1MDQKLSAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDwvZGl2PgotICAg
ICAgICA8L2Rpdj4KLQotICAgICAgICA8ZGl2IGNsYXNzPSJzZXJpZXMiPgotICAgICAgICAgICAg
PGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3MiPjwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0i
ZG90IHN1Y2Nlc3MiPjwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3Mi
PjwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3MiPjwvZGl2PgotICAg
ICAgICAgICAgPGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3MiPjwvZGl2PgotICAgICAgICAgICAgPGRp
diBjbGFzcz0iZG90IHN1Y2Nlc3MiPjwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90
IHN1Y2Nlc3MiPjwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3MiPjwv
ZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3MiPjwvZGl2PgotICAgICAg
ICAgICAgPGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3MiPjwvZGl2PgotICAgICAgICA8L2Rpdj4KLSAg
ICAgICAgPGRpdiBjbGFzcz0ic2VyaWVzIj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCBz
dWNjZXNzIj48L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCBzdWNjZXNzIj48L2Rp
dj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCBzdWNjZXNzIj48L2Rpdj4KLSAgICAgICAg
ICAgIDxkaXYgY2xhc3M9ImRvdCBzdWNjZXNzIj48L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xh
c3M9ImRvdCBzdWNjZXNzIj48L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCBzdWNj
ZXNzIj48L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCBzdWNjZXNzIj48L2Rpdj4K
LSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvdCBzdWNjZXNzIj48L2Rpdj4KLSAgICAgICAgICAg
IDxkaXYgY2xhc3M9ImRvdCBzdWNjZXNzIj48L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9
ImRvdCBzdWNjZXNzIj48L2Rpdj4KLSAgICAgICAgPC9kaXY+Ci0gICAgICAgIDxkaXYgY2xhc3M9
IngtYXhpcyI+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJzY2FsZSBncm91cC0zIj4KLSAgICAg
ICAgICAgICAgICA8ZGl2IGNsYXNzPSJib3JkZXItbGluZS1sZWZ0Ij48L2Rpdj4KLSAgICAgICAg
ICAgICAgICA8ZGl2IGNsYXNzPSJsaW5lIj48L2Rpdj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNs
YXNzPSJ0ZXh0Ij4KLSAgICAgICAgICAgICAgICAgICAgYWM4MjZhMzgKLSAgICAgICAgICAgICAg
ICA8L2Rpdj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJib3JkZXItbGluZS1yaWdodCI+
PC9kaXY+Ci0gICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9InNjYWxl
Ij4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsaW5lIj48L2Rpdj4KLSAgICAgICAgICAg
ICAgICA8ZGl2IGNsYXNzPSJ0ZXh0Ij4KLSAgICAgICAgICAgICAgICAgICAgYzM1NThkNTAKLSAg
ICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPGRp
diBjbGFzcz0ic2NhbGUiPgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxpbmUiPjwvZGl2
PgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQiPgotICAgICAgICAgICAgICAgICAg
ICAwODYzNzQyMwotICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPC9kaXY+Ci0g
ICAgICAgICAgICA8ZGl2IGNsYXNzPSJzY2FsZSBncm91cC01Ij4KLSAgICAgICAgICAgICAgICA8
ZGl2IGNsYXNzPSJib3JkZXItbGluZS1sZWZ0Ij48L2Rpdj4KLSAgICAgICAgICAgICAgICA8ZGl2
IGNsYXNzPSJsaW5lIj48L2Rpdj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0Ij4K
LSAgICAgICAgICAgICAgICAgICAgYzk0ZmViNjMKLSAgICAgICAgICAgICAgICA8L2Rpdj4KLSAg
ICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJib3JkZXItbGluZS1yaWdodCI+PC9kaXY+Ci0gICAg
ICAgICAgICA8L2Rpdj4KLSAgICAgICAgPC9kaXY+Ci0gICAgPC9kaXY+Ci08L2Rpdj4KLSAgICAg
ICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAg
ICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICA8
ZGl2IGNsYXNzPSJoZWFkZXIiIGlkPSJFbGVtZW50cy1MZW5nZW5kIj4KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZSI+Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA8aDI+TGVuZ2VuZDwvaDI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9k
aXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAg
Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAg
ICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA8cHJlPjx4bXA+PGRpdiBjbGFzcz0ibGVuZ2VuZCI+Ci0gICAgPGRpdiBjbGFz
cz0iaXRlbSI+Ci0gICAgICAgIDxkaXYgY2xhc3M9ImRvdCBzdWNjZXNzIj4KLSAgICAgICAgICAg
IDxkaXYgY2xhc3M9InRleHQiPuKckzwvZGl2PgotICAgICAgICA8L2Rpdj4KLSAgICAgICAgPGRp
diBjbGFzcz0ibGFiZWwiPlRlc3RzIFBhc3M8L2Rpdj4KLSAgICA8L2Rpdj4KLSAgICA8ZGl2IGNs
YXNzPSJpdGVtIj4KLSAgICAgICAgPGRpdiBjbGFzcz0iZG90IGZhaWxlZCI+PC9kaXY+Ci0gICAg
ICAgIDxkaXYgY2xhc3M9ImxhYmVsIj5UZXN0cyBGYWlsZWQ8L2Rpdj4KLSAgICA8L2Rpdj4KLSAg
ICA8ZGl2IGNsYXNzPSJpdGVtIj4KLSAgICAgICAgPGRpdiBjbGFzcz0iZG90IGVycm9yIj48aW1n
IHNyYz0iLi4vaWNvbnMvY2xvY2suc3ZnIj48L2Rpdj4KLSAgICAgICAgPGRpdiBjbGFzcz0ibGFi
ZWwiPlRlc3RzIGhhdmUgZXJyb3I8L2Rpdj4KLSAgICA8L2Rpdj4KLTwvZGl2PjwveG1wPjwvcHJl
PgotICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAg
ICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2
IGNsYXNzPSJsZW5nZW5kIj4KLSAgICA8ZGl2IGNsYXNzPSJpdGVtIj4KLSAgICAgICAgPGRpdiBj
bGFzcz0iZG90IHN1Y2Nlc3MiPgotICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dCI+4pyTPC9k
aXY+Ci0gICAgICAgIDwvZGl2PgotICAgICAgICA8ZGl2IGNsYXNzPSJsYWJlbCI+VGVzdHMgUGFz
czwvZGl2PgotICAgIDwvZGl2PgotICAgIDxkaXYgY2xhc3M9Iml0ZW0iPgotICAgICAgICA8ZGl2
IGNsYXNzPSJkb3QgZmFpbGVkIj48L2Rpdj4KLSAgICAgICAgPGRpdiBjbGFzcz0ibGFiZWwiPlRl
c3RzIEZhaWxlZDwvZGl2PgotICAgIDwvZGl2PgotICAgIDxkaXYgY2xhc3M9Iml0ZW0iPgotICAg
ICAgICA8ZGl2IGNsYXNzPSJkb3QgZXJyb3IiPjxpbWcgc3JjPSIuLi9pY29ucy9jbG9jay5zdmci
PjwvZGl2PgotICAgICAgICA8ZGl2IGNsYXNzPSJsYWJlbCI+VGVzdHMgaGF2ZSBlcnJvcjwvZGl2
PgotICAgIDwvZGl2PgotPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAg
ICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgV2l0aCBob3Jpem9udGFsIG1peGluCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAg
ICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiPgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDxwcmU+PHhtcD48ZGl2IGNsYXNzPSJsZW5nZW5kIGhvcml6b250YWwiPgotICAgIDxkaXYg
Y2xhc3M9Iml0ZW0iPgotICAgICAgICA8ZGl2IGNsYXNzPSJkb3Qgc3VjY2VzcyI+Ci0gICAgICAg
ICAgICA8ZGl2IGNsYXNzPSJ0ZXh0Ij7inJM8L2Rpdj4KLSAgICAgICAgPC9kaXY+Ci0gICAgICAg
IDxkaXYgY2xhc3M9ImxhYmVsIj5UZXN0cyBQYXNzPC9kaXY+Ci0gICAgPC9kaXY+Ci0gICAgPGRp
diBjbGFzcz0iaXRlbSI+Ci0gICAgICAgIDxkaXYgY2xhc3M9ImRvdCBmYWlsZWQiPjwvZGl2Pgot
ICAgICAgICA8ZGl2IGNsYXNzPSJsYWJlbCI+VGVzdHMgRmFpbGVkPC9kaXY+Ci0gICAgPC9kaXY+
Ci0gICAgPGRpdiBjbGFzcz0iaXRlbSI+Ci0gICAgICAgIDxkaXYgY2xhc3M9ImRvdCBlcnJvciI+
PGltZyBzcmM9Ii4uL2ljb25zL2Nsb2NrLnN2ZyI+PC9kaXY+Ci0gICAgICAgIDxkaXYgY2xhc3M9
ImxhYmVsIj5UZXN0cyBoYXZlIGVycm9yPC9kaXY+Ci0gICAgPC9kaXY+Ci08L2Rpdj48L3htcD48
L3ByZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAg
ICAgICAgPGRpdiBjbGFzcz0iY29udGVudCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
PGRpdiBjbGFzcz0ibGVuZ2VuZCBob3Jpem9udGFsIj4KLSAgICA8ZGl2IGNsYXNzPSJpdGVtIj4K
LSAgICAgICAgPGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3MiPgotICAgICAgICAgICAgPGRpdiBjbGFz
cz0idGV4dCI+4pyTPC9kaXY+Ci0gICAgICAgIDwvZGl2PgotICAgICAgICA8ZGl2IGNsYXNzPSJs
YWJlbCI+VGVzdHMgUGFzczwvZGl2PgotICAgIDwvZGl2PgotICAgIDxkaXYgY2xhc3M9Iml0ZW0i
PgotICAgICAgICA8ZGl2IGNsYXNzPSJkb3QgZmFpbGVkIj48L2Rpdj4KLSAgICAgICAgPGRpdiBj
bGFzcz0ibGFiZWwiPlRlc3RzIEZhaWxlZDwvZGl2PgotICAgIDwvZGl2PgotICAgIDxkaXYgY2xh
c3M9Iml0ZW0iPgotICAgICAgICA8ZGl2IGNsYXNzPSJkb3QgZXJyb3IiPjxpbWcgc3JjPSIuLi9p
Y29ucy9jbG9jay5zdmciPjwvZGl2PgotICAgICAgICA8ZGl2IGNsYXNzPSJsYWJlbCI+VGVzdHMg
aGF2ZSBlcnJvcjwvZGl2PgotICAgIDwvZGl2PgotPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAg
ICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAg
ICAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2l0aCB0aW1lbGluZSBtaXhpbgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgCi0g
ICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA8cHJlPjx4bXA+PGRpdiBjbGFzcz0ibGVuZ2VuZCB0aW1lbGluZSI+
Ci0gICAgPGRpdiBjbGFzcz0iaXRlbSI+Ci0gICAgICAgIDxkaXYgY2xhc3M9ImRvdCBzdWNjZXNz
Ij4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQiPuKckzwvZGl2PgotICAgICAgICA8L2Rp
dj4KLSAgICAgICAgPGRpdiBjbGFzcz0ibGFiZWwiPlRlc3RzIFBhc3M8L2Rpdj4KLSAgICA8L2Rp
dj4KLSAgICA8ZGl2IGNsYXNzPSJpdGVtIj4KLSAgICAgICAgPGRpdiBjbGFzcz0iZG90IGZhaWxl
ZCI+PC9kaXY+Ci0gICAgICAgIDxkaXYgY2xhc3M9ImxhYmVsIj5UZXN0cyBGYWlsZWQ8L2Rpdj4K
LSAgICA8L2Rpdj4KLSAgICA8ZGl2IGNsYXNzPSJpdGVtIj4KLSAgICAgICAgPGRpdiBjbGFzcz0i
ZG90IGVycm9yIj48aW1nIHNyYz0iLi4vaWNvbnMvY2xvY2suc3ZnIj48L2Rpdj4KLSAgICAgICAg
PGRpdiBjbGFzcz0ibGFiZWwiPlRlc3RzIGhhdmUgZXJyb3I8L2Rpdj4KLSAgICA8L2Rpdj4KLTwv
ZGl2PjwveG1wPjwvcHJlPgotICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAg
ICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA8ZGl2IGNsYXNzPSJsZW5nZW5kIHRpbWVsaW5lIj4KLSAgICA8ZGl2IGNsYXNz
PSJpdGVtIj4KLSAgICAgICAgPGRpdiBjbGFzcz0iZG90IHN1Y2Nlc3MiPgotICAgICAgICAgICAg
PGRpdiBjbGFzcz0idGV4dCI+4pyTPC9kaXY+Ci0gICAgICAgIDwvZGl2PgotICAgICAgICA8ZGl2
IGNsYXNzPSJsYWJlbCI+VGVzdHMgUGFzczwvZGl2PgotICAgIDwvZGl2PgotICAgIDxkaXYgY2xh
c3M9Iml0ZW0iPgotICAgICAgICA8ZGl2IGNsYXNzPSJkb3QgZmFpbGVkIj48L2Rpdj4KLSAgICAg
ICAgPGRpdiBjbGFzcz0ibGFiZWwiPlRlc3RzIEZhaWxlZDwvZGl2PgotICAgIDwvZGl2PgotICAg
IDxkaXYgY2xhc3M9Iml0ZW0iPgotICAgICAgICA8ZGl2IGNsYXNzPSJkb3QgZXJyb3IiPjxpbWcg
c3JjPSIuLi9pY29ucy9jbG9jay5zdmciPjwvZGl2PgotICAgICAgICA8ZGl2IGNsYXNzPSJsYWJl
bCI+VGVzdHMgaGF2ZSBlcnJvcjwvZGl2PgotICAgIDwvZGl2PgotPC9kaXY+Ci0gICAgICAgICAg
ICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAg
ICAgCi0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBj
bGFzcz0iaGVhZGVyIiBpZD0iRWxlbWVudHMtUG9wb3ZlciI+Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGUiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPGgyPlBvcG92ZXI8L2gyPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pgot
ICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgIAotICAg
ICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAg
ICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudCI+Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPHByZT48eG1wPjxkaXYgY2xhc3M9InBvcG92ZXIgZGlzcGxheSI+Ci0gICAgPGRpdiBj
bGFzcz0iYXJyb3cgcG9pbnQtdG9wIiBzdHlsZT0ibGVmdDogMTA2cHg7Ij4KLSAgICA8L2Rpdj4K
LSAgICA8ZGl2IGNsYXNzPSJjb250ZW50IiBzdHlsZT0id2lkdGg6MjAwcHgiPgotICAgICAgICBU
aGlzIGlzIHBvcG92ZXI7Ci0gICAgPC9kaXY+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9ImNvbnRlbnQi
PgotICAgIExvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBhZGlwaXNjaW5n
IGVsaXQsIHNlZCBkbyBlaXVzbW9kIHRlbXBvciBpbmNpZGlkdW50IHV0IGxhYm9yZSBldCBkb2xv
cmUgbWFnbmEgYWxpcXVhLiBVdCBlbmltIGFkIG1pbmltIHZlbmlhbSwgcXVpcyBub3N0cnVkIGV4
ZXJjaXRhdGlvbiB1bGxhbWNvIGxhYm9yaXMgbmlzaSB1dCBhbGlxdWlwIGV4IGVhIGNvbW1vZG8g
Y29uc2VxdWF0LiBEdWlzIGF1dGUgaXJ1cmUgZG9sb3IgaW4gcmVwcmVoZW5kZXJpdCBpbiB2b2x1
cHRhdGUgdmVsaXQgZXNzZSBjaWxsdW0gZG9sb3JlIGV1IGZ1Z2lhdCBudWxsYSBwYXJpYXR1ci4g
RXhjZXB0ZXVyIHNpbnQgb2NjYWVjYXQgY3VwaWRhdGF0IG5vbiBwcm9pZGVudCwgc3VudCBpbiBj
dWxwYSBxdWkgb2ZmaWNpYSBkZXNlcnVudCBtb2xsaXQgYW5pbSBpZCBlc3QgbGFib3J1bS4KLTwv
ZGl2PgotPCEtLSBZb3UgY2FuIGNvbnRyb2wgdGhlIGFycm93IHBvcyBieSBzZXRpbmcgdGhlIGxl
ZnQgb3IgdG9wIC0tPgotPGRpdiBjbGFzcz0icG9wb3ZlciBkaXNwbGF5Ij4KLSAgICA8ZGl2IGNs
YXNzPSJhcnJvdyBwb2ludC1ib3R0b20iIHN0eWxlPSJsZWZ0OiAxMDZweDsiPgotICAgIDwvZGl2
PgotICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiIHN0eWxlPSJ3aWR0aDoyMDBweCI+Ci0gICAgICAg
IFRoaXMgaXMgYSBwb3BvdmVyCi0gICAgPC9kaXY+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9ImNvbnRl
bnQiPgotICAgIExvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBhZGlwaXNj
aW5nIGVsaXQsIHNlZCBkbyBlaXVzbW9kIHRlbXBvciBpbmNpZGlkdW50IHV0IGxhYm9yZSBldCBk
b2xvcmUgbWFnbmEgYWxpcXVhLiBVdCBlbmltIGFkIG1pbmltIHZlbmlhbSwgcXVpcyBub3N0cnVk
IGV4ZXJjaXRhdGlvbiB1bGxhbWNvIGxhYm9yaXMgbmlzaSB1dCBhbGlxdWlwIGV4IGVhIGNvbW1v
ZG8gY29uc2VxdWF0LiBEdWlzIGF1dGUgaXJ1cmUgZG9sb3IgaW4gcmVwcmVoZW5kZXJpdCBpbiB2
b2x1cHRhdGUgdmVsaXQgZXNzZSBjaWxsdW0gZG9sb3JlIGV1IGZ1Z2lhdCBudWxsYSBwYXJpYXR1
ci4gRXhjZXB0ZXVyIHNpbnQgb2NjYWVjYXQgY3VwaWRhdGF0IG5vbiBwcm9pZGVudCwgc3VudCBp
biBjdWxwYSBxdWkgb2ZmaWNpYSBkZXNlcnVudCBtb2xsaXQgYW5pbSBpZCBlc3QgbGFib3J1bS4K
LTwvZGl2PgotPGRpdiBjbGFzcz0icG9wb3ZlciBkaXNwbGF5Ij4KLSAgICA8ZGl2IGNsYXNzPSJh
cnJvdyBwb2ludC1sZWZ0IiBzdHlsZT0idG9wOiAzMXB4OyI+Ci0gICAgPC9kaXY+Ci0gICAgPGRp
diBjbGFzcz0iY29udGVudCIgc3R5bGU9ImhlaWdodDo1MHB4Ij4KLSAgICAgICAgVGhpcyBpcyBh
IHBvcG92ZXIKLSAgICA8L2Rpdj4KLTwvZGl2PgotPGRpdiBjbGFzcz0iY29udGVudCI+Ci0gICAg
TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdCwg
c2VkIGRvIGVpdXNtb2QgdGVtcG9yIGluY2lkaWR1bnQgdXQgbGFib3JlIGV0IGRvbG9yZSBtYWdu
YSBhbGlxdWEuIFV0IGVuaW0gYWQgbWluaW0gdmVuaWFtLCBxdWlzIG5vc3RydWQgZXhlcmNpdGF0
aW9uIHVsbGFtY28gbGFib3JpcyBuaXNpIHV0IGFsaXF1aXAgZXggZWEgY29tbW9kbyBjb25zZXF1
YXQuIER1aXMgYXV0ZSBpcnVyZSBkb2xvciBpbiByZXByZWhlbmRlcml0IGluIHZvbHVwdGF0ZSB2
ZWxpdCBlc3NlIGNpbGx1bSBkb2xvcmUgZXUgZnVnaWF0IG51bGxhIHBhcmlhdHVyLiBFeGNlcHRl
dXIgc2ludCBvY2NhZWNhdCBjdXBpZGF0YXQgbm9uIHByb2lkZW50LCBzdW50IGluIGN1bHBhIHF1
aSBvZmZpY2lhIGRlc2VydW50IG1vbGxpdCBhbmltIGlkIGVzdCBsYWJvcnVtLgotPC9kaXY+Ci08
ZGl2IGNsYXNzPSJwb3BvdmVyIGRpc3BsYXkiPgotICAgIDxkaXYgY2xhc3M9ImFycm93IHBvaW50
LXJpZ2h0IiBzdHlsZT0idG9wOiAzMXB4OyI+Ci0gICAgPC9kaXY+Ci0gICAgPGRpdiBjbGFzcz0i
Y29udGVudCIgc3R5bGU9ImhlaWdodDo1MHB4Ij4KLSAgICAgICAgVGhpcyBpcyBhIHBvcG92ZXIK
LSAgICA8L2Rpdj4KLTwvZGl2PgotPGRpdiBjbGFzcz0iY29udGVudCI+Ci0gICAgTG9yZW0gaXBz
dW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdCwgc2VkIGRvIGVp
dXNtb2QgdGVtcG9yIGluY2lkaWR1bnQgdXQgbGFib3JlIGV0IGRvbG9yZSBtYWduYSBhbGlxdWEu
IFV0IGVuaW0gYWQgbWluaW0gdmVuaWFtLCBxdWlzIG5vc3RydWQgZXhlcmNpdGF0aW9uIHVsbGFt
Y28gbGFib3JpcyBuaXNpIHV0IGFsaXF1aXAgZXggZWEgY29tbW9kbyBjb25zZXF1YXQuIER1aXMg
YXV0ZSBpcnVyZSBkb2xvciBpbiByZXByZWhlbmRlcml0IGluIHZvbHVwdGF0ZSB2ZWxpdCBlc3Nl
IGNpbGx1bSBkb2xvcmUgZXUgZnVnaWF0IG51bGxhIHBhcmlhdHVyLiBFeGNlcHRldXIgc2ludCBv
Y2NhZWNhdCBjdXBpZGF0YXQgbm9uIHByb2lkZW50LCBzdW50IGluIGN1bHBhIHF1aSBvZmZpY2lh
IGRlc2VydW50IG1vbGxpdCBhbmltIGlkIGVzdCBsYWJvcnVtLgotPC9kaXY+PC94bXA+PC9wcmU+
Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAg
IDxkaXYgY2xhc3M9ImNvbnRlbnQiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYg
Y2xhc3M9InBvcG92ZXIgZGlzcGxheSI+Ci0gICAgPGRpdiBjbGFzcz0iYXJyb3cgcG9pbnQtdG9w
IiBzdHlsZT0ibGVmdDogMTA2cHg7Ij4KLSAgICA8L2Rpdj4KLSAgICA8ZGl2IGNsYXNzPSJjb250
ZW50IiBzdHlsZT0id2lkdGg6MjAwcHgiPgotICAgICAgICBUaGlzIGlzIHBvcG92ZXI7Ci0gICAg
PC9kaXY+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9ImNvbnRlbnQiPgotICAgIExvcmVtIGlwc3VtIGRv
bG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBhZGlwaXNjaW5nIGVsaXQsIHNlZCBkbyBlaXVzbW9k
IHRlbXBvciBpbmNpZGlkdW50IHV0IGxhYm9yZSBldCBkb2xvcmUgbWFnbmEgYWxpcXVhLiBVdCBl
bmltIGFkIG1pbmltIHZlbmlhbSwgcXVpcyBub3N0cnVkIGV4ZXJjaXRhdGlvbiB1bGxhbWNvIGxh
Ym9yaXMgbmlzaSB1dCBhbGlxdWlwIGV4IGVhIGNvbW1vZG8gY29uc2VxdWF0LiBEdWlzIGF1dGUg
aXJ1cmUgZG9sb3IgaW4gcmVwcmVoZW5kZXJpdCBpbiB2b2x1cHRhdGUgdmVsaXQgZXNzZSBjaWxs
dW0gZG9sb3JlIGV1IGZ1Z2lhdCBudWxsYSBwYXJpYXR1ci4gRXhjZXB0ZXVyIHNpbnQgb2NjYWVj
YXQgY3VwaWRhdGF0IG5vbiBwcm9pZGVudCwgc3VudCBpbiBjdWxwYSBxdWkgb2ZmaWNpYSBkZXNl
cnVudCBtb2xsaXQgYW5pbSBpZCBlc3QgbGFib3J1bS4KLTwvZGl2PgotPCEtLSBZb3UgY2FuIGNv
bnRyb2wgdGhlIGFycm93IHBvcyBieSBzZXRpbmcgdGhlIGxlZnQgb3IgdG9wIC0tPgotPGRpdiBj
bGFzcz0icG9wb3ZlciBkaXNwbGF5Ij4KLSAgICA8ZGl2IGNsYXNzPSJhcnJvdyBwb2ludC1ib3R0
b20iIHN0eWxlPSJsZWZ0OiAxMDZweDsiPgotICAgIDwvZGl2PgotICAgIDxkaXYgY2xhc3M9ImNv
bnRlbnQiIHN0eWxlPSJ3aWR0aDoyMDBweCI+Ci0gICAgICAgIFRoaXMgaXMgYSBwb3BvdmVyCi0g
ICAgPC9kaXY+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9ImNvbnRlbnQiPgotICAgIExvcmVtIGlwc3Vt
IGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBhZGlwaXNjaW5nIGVsaXQsIHNlZCBkbyBlaXVz
bW9kIHRlbXBvciBpbmNpZGlkdW50IHV0IGxhYm9yZSBldCBkb2xvcmUgbWFnbmEgYWxpcXVhLiBV
dCBlbmltIGFkIG1pbmltIHZlbmlhbSwgcXVpcyBub3N0cnVkIGV4ZXJjaXRhdGlvbiB1bGxhbWNv
IGxhYm9yaXMgbmlzaSB1dCBhbGlxdWlwIGV4IGVhIGNvbW1vZG8gY29uc2VxdWF0LiBEdWlzIGF1
dGUgaXJ1cmUgZG9sb3IgaW4gcmVwcmVoZW5kZXJpdCBpbiB2b2x1cHRhdGUgdmVsaXQgZXNzZSBj
aWxsdW0gZG9sb3JlIGV1IGZ1Z2lhdCBudWxsYSBwYXJpYXR1ci4gRXhjZXB0ZXVyIHNpbnQgb2Nj
YWVjYXQgY3VwaWRhdGF0IG5vbiBwcm9pZGVudCwgc3VudCBpbiBjdWxwYSBxdWkgb2ZmaWNpYSBk
ZXNlcnVudCBtb2xsaXQgYW5pbSBpZCBlc3QgbGFib3J1bS4KLTwvZGl2PgotPGRpdiBjbGFzcz0i
cG9wb3ZlciBkaXNwbGF5Ij4KLSAgICA8ZGl2IGNsYXNzPSJhcnJvdyBwb2ludC1sZWZ0IiBzdHls
ZT0idG9wOiAzMXB4OyI+Ci0gICAgPC9kaXY+Ci0gICAgPGRpdiBjbGFzcz0iY29udGVudCIgc3R5
bGU9ImhlaWdodDo1MHB4Ij4KLSAgICAgICAgVGhpcyBpcyBhIHBvcG92ZXIKLSAgICA8L2Rpdj4K
LTwvZGl2PgotPGRpdiBjbGFzcz0iY29udGVudCI+Ci0gICAgTG9yZW0gaXBzdW0gZG9sb3Igc2l0
IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdCwgc2VkIGRvIGVpdXNtb2QgdGVtcG9y
IGluY2lkaWR1bnQgdXQgbGFib3JlIGV0IGRvbG9yZSBtYWduYSBhbGlxdWEuIFV0IGVuaW0gYWQg
bWluaW0gdmVuaWFtLCBxdWlzIG5vc3RydWQgZXhlcmNpdGF0aW9uIHVsbGFtY28gbGFib3JpcyBu
aXNpIHV0IGFsaXF1aXAgZXggZWEgY29tbW9kbyBjb25zZXF1YXQuIER1aXMgYXV0ZSBpcnVyZSBk
b2xvciBpbiByZXByZWhlbmRlcml0IGluIHZvbHVwdGF0ZSB2ZWxpdCBlc3NlIGNpbGx1bSBkb2xv
cmUgZXUgZnVnaWF0IG51bGxhIHBhcmlhdHVyLiBFeGNlcHRldXIgc2ludCBvY2NhZWNhdCBjdXBp
ZGF0YXQgbm9uIHByb2lkZW50LCBzdW50IGluIGN1bHBhIHF1aSBvZmZpY2lhIGRlc2VydW50IG1v
bGxpdCBhbmltIGlkIGVzdCBsYWJvcnVtLgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJwb3BvdmVyIGRp
c3BsYXkiPgotICAgIDxkaXYgY2xhc3M9ImFycm93IHBvaW50LXJpZ2h0IiBzdHlsZT0idG9wOiAz
MXB4OyI+Ci0gICAgPC9kaXY+Ci0gICAgPGRpdiBjbGFzcz0iY29udGVudCIgc3R5bGU9ImhlaWdo
dDo1MHB4Ij4KLSAgICAgICAgVGhpcyBpcyBhIHBvcG92ZXIKLSAgICA8L2Rpdj4KLTwvZGl2Pgot
PGRpdiBjbGFzcz0iY29udGVudCI+Ci0gICAgTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNv
bnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdCwgc2VkIGRvIGVpdXNtb2QgdGVtcG9yIGluY2lkaWR1
bnQgdXQgbGFib3JlIGV0IGRvbG9yZSBtYWduYSBhbGlxdWEuIFV0IGVuaW0gYWQgbWluaW0gdmVu
aWFtLCBxdWlzIG5vc3RydWQgZXhlcmNpdGF0aW9uIHVsbGFtY28gbGFib3JpcyBuaXNpIHV0IGFs
aXF1aXAgZXggZWEgY29tbW9kbyBjb25zZXF1YXQuIER1aXMgYXV0ZSBpcnVyZSBkb2xvciBpbiBy
ZXByZWhlbmRlcml0IGluIHZvbHVwdGF0ZSB2ZWxpdCBlc3NlIGNpbGx1bSBkb2xvcmUgZXUgZnVn
aWF0IG51bGxhIHBhcmlhdHVyLiBFeGNlcHRldXIgc2ludCBvY2NhZWNhdCBjdXBpZGF0YXQgbm9u
IHByb2lkZW50LCBzdW50IGluIGN1bHBhIHF1aSBvZmZpY2lhIGRlc2VydW50IG1vbGxpdCBhbmlt
IGlkIGVzdCBsYWJvcnVtLgotPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4K
LSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICA8L2Rp
dj4KLSAgICAgICAgCi0gICAgICAgIDxkaXYgY2xhc3M9InBsYWNlaG9sZGVyIj48L2Rpdj4KLSAg
ICA8L2Rpdj4KLSAgICA8IS0tIGVuZCBvZiBjb250ZW50LS0+Ci0gIDwvYm9keT4KLTwvaHRtbD4K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBUb29scy9yZXN1bHRzZGJweS9yZXN1
bHRzZGJweS92aWV3L3N0YXRpYy9saWJyYXJ5L2Nzcy93ZWJraXQuY3NzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvc3RhdGljL2xpYnJhcnkvY3NzL3dl
YmtpdC5jc3MJKHJldmlzaW9uIDI2NTUzMSkKKysrIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNk
YnB5L3ZpZXcvc3RhdGljL2xpYnJhcnkvY3NzL3dlYmtpdC5jc3MJKG5vbmV4aXN0ZW50KQpAQCAt
MSwyNjc5ICswLDAgQEAKLS8qCi1Db3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotCi0gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gYXJlIG1ldDoKLSAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0KLSBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKLSBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKLSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUgotIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0gQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotLyogY29sb3JzICovCi06
cm9vdCB7Ci0gIC0td2hpdGU6ICNmZmY7Ci0gIC0tYmx1ZURhcmtlcjogIzAyNjJjYTsKLSAgLS1i
bHVlRGFyazogIzA2NmVlMDsKLSAgLS1ibHVlOiAjMDA3MGM5OwotICAtLWJsdWVMaWdodDogIzNi
OTlmYzsKLSAgLS1ibHVlTGlnaHRlcjogIzlkY2NmZTsKLSAgLS1ibHVlTGlnaHRlc3Q6ICNmNWY5
ZmU7Ci0gIC0tZ3JlZW5EYXJrZXI6ICM0M2MzNTk7Ci0gIC0tZ3JlZW5EYXJrOiAjM2RjZTU2Owot
ICAtLWdyZWVuOiAjNGNkOTY0OwotICAtLWdyZWVuTGlnaHQ6ICM3OWRmOGY7Ci0gIC0tZ3JlZW5M
aWdodGVyOiAjYmNlZmM3OwotICAtLWdyZWVuTGlnaHRlc3Q6ICNmOGZkZjk7Ci0gIC0tb3Jhbmdl
RGFya2VyOiAjZDc3OTAwOwotICAtLW9yYW5nZURhcms6ICNlNjgyMDA7Ci0gIC0tb3JhbmdlOiAj
ZmY5NTAwOwotICAtLW9yYW5nZUxpZ2h0OiAjZjdhZDQ1OwotICAtLW9yYW5nZUxpZ2h0ZXI6ICNm
YmQ2YTI7Ci0gIC0tb3JhbmdlTGlnaHRlc3Q6ICNmZWZhZjU7Ci0gIC0tcmVkRGFya2VyOiAjZGMz
MjI5OwotICAtLXJlZERhcms6ICNmMzJkMjI7Ci0gIC0tcmVkOiAjZmYzYjMwOwotICAtLXJlZExp
Z2h0OiAjZmM2ZTYxOwotICAtLXJlZExpZ2h0ZXI6ICNmZGI2YjA7Ci0gIC0tcmVkTGlnaHRlc3Q6
ICNmZWY3Zjc7Ci0gIC0tcHVycGxlRGFya2VyOiAjODg0YWM1OwotICAtLXB1cnBsZURhcms6ICM5
NzQ4ZTQ7Ci0gIC0tcHVycGxlOiAjYTQ1YWVjOwotICAtLXB1cnBsZUxpZ2h0OiAjYjM3NWViOwot
ICAtLXB1cnBsZUxpZ2h0ZXI6ICNkOWJhZjU7Ci0gIC0tcHVycGxlTGlnaHRlc3Q6ICNmYmY4ZmU7
Ci0gIC0tZ3JleURhcmtlcjogIzZkNzI3YzsKLSAgLS1ncmV5RGFyazogI2E0YWFhZDsKLSAgLS1n
cmV5OiAjYzFjNGM2OwotICAtLWdyZXlMaWdodDogI2Q0ZDdkOTsKLSAgLS1ncmV5TGlnaHRlcjog
I2YwZjFmMTsKLSAgLS1ncmV5TGlnaHRlc3Q6ICNmOWZhZmE7Ci0gIC0tYmxhY2tEYXJrZXI6ICMy
MzIzMjM7Ci0gIC0tYmxhY2tEYXJrOiAjMzYzNjM2OwotICAtLWJsYWNrOiAjNDg0ODQ4OwotICAt
LW1haW5Cb2R5VHlwZTogdmFyKC0tYmxhY2spOwotICAtLWhlYWRlclR5cGU6IHZhcigtLWdyZXkp
OwotICAtLWxhYmVsVHlwZTogdmFyKC0tYmxhY2spOwotICAtLW1lc3NhZ2VGYWlsdXJlVHlwZTog
I2I0MjUxZTsKLSAgLS1tZXNzYWdlSW5mb1R5cGU6ICM2ZTM1YTc7Ci0gIC0tbWVzc2FnZVN1Y2Nl
c3NUeXBlOiAjMzNhMDQ2OwotICAtLW1lc3NhZ2VXYXJuaW5nVHlwZTogI2E0NWMwMDsKLSAgLS1i
bHVyQmFja2dyb3VuZENvbG9yOiByZ2JhKDI1NSwyNTUsMjU1LDAuNzQ5MDIpOwotICAtLWJsdXJC
YWNrZ3JvdW5kQ29sb3JHcmV5OiByZ2JhKDI0NSwyNDUsMjQ1LDAuNzQ5MDIpOwotICAtLWJsdXJC
YWNrZ3JvdW5kQ29sb3JEYXJrOiByZ2JhKDIyLDIyLDIyLCAwLjc0OTAyKTsKLSAgLS1saW5rQ29s
b3I6IHZhcigtLWJsdWUpOwotICAtLWxpbmtDb2xvckRhcmtlcjogIzAwNjJjYzsKLSAgLS1ib3Jk
ZXJDb2xvclN1YnRsZTogdmFyKC0tZ3JleUxpZ2h0ZXN0KTsKLSAgLS1ib3JkZXJDb2xvcklubGlu
ZUVsZW1lbnQ6IHZhcigtLWdyZXlMaWdodGVyKTsKLSAgLS1ib3JkZXJDb2xvclNlY3Rpb246IHZh
cigtLWdyZXlMaWdodCk7Ci0gIC0tYm9yZGVyQ29sb3JIYXJkOiB2YXIoLS1ncmV5KTsKLSAgLS10
aW55U2l6ZTogMTBweDsKLSAgLS1zbWFsbFNpemU6IDE4cHg7Ci0gIC0tbWVkaXVtU2l6ZTogMjRw
eDsKLSAgLS1sYXJnZVNpemU6IDI4cHg7Ci0gIC0taHVnZVNpemU6IDM2cHg7Ci0gIC0tZm9udFdl
aWdodDogMjAwOwotICAtLWNvbnRlbnRQYWRkaW5nU2l6ZTogNHB4OwotICAtLWNvbFBhZGRpbmdT
aXplOiA0cHg7Ci0gIC0tc2VjdGlvblBhZGRpbmdTaXplOiAxMnB4IDI0cHg7Ci0gIC0tZm9ybUxh
YmVsUGFkZGluZzogMTRweDsKLSAgLS1taWRkbGVaSW5kZXg6IDUwOwotICAtLXRvcFpJbmRleDog
MTAwOwotICAtLWludmVyc2VDb2xvcjogdmFyKC0tYmxhY2spOwotfQotCi1AbWVkaWEgc2NyZWVu
IGFuZCAobWluLXdpZHRoOiA2MDBweCkgewotICA6cm9vdCB7Ci0gICAgLS10aW55U2l6ZTogMTFw
eDsKLSAgICAtLWZvbnRXZWlnaHQ6IDIwMDsKLSAgICAtLWNvbnRlbnRQYWRkaW5nU2l6ZTogMjBw
eDsKLSAgICAtLWNvbFBhZGRpbmdTaXplOiA2cHg7Ci0gICAgLS1zZWN0aW9uUGFkZGluZ1NpemU6
IDE2cHggMzJweDsKLSAgfQotfQotCi1AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA3Njhw
eCkgewotICA6cm9vdCB7Ci0gICAgLS10aW55U2l6ZTogMTJweDsKLSAgICAtLWZvbnRXZWlnaHQ6
IDEwMDsKLSAgICAtLWNvbnRlbnRQYWRkaW5nU2l6ZTogNDBweDsKLSAgICAtLWNvbFBhZGRpbmdT
aXplOiA4cHg7Ci0gICAgLS1zZWN0aW9uUGFkZGluZ1NpemU6IDE5cHggMzhweDsKLSAgfQotfQot
Ci1AbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSB7Ci0gIDpyb290IHsKLSAgICAt
LW1haW5Cb2R5VHlwZTogdmFyKC0tYmxhY2spOwotICAgIC0taGVhZGVyVHlwZTogdmFyKC0tYmxh
Y2tEYXJrZXIpOwotICAgIC0tbGlua0NvbG9yOiB2YXIoLS1ibHVlTGlnaHRlcik7Ci0gICAgLS1i
b3JkZXJDb2xvclN1YnRsZTogdmFyKC0tYmxhY2spOwotICAgIC0tYm9yZGVyQ29sb3JJbmxpbmVF
bGVtZW50OiB2YXIoLS1ncmV5RGFya2VyKTsKLSAgICAtLWJvcmRlckNvbG9yU2VjdGlvbjogdmFy
KC0tYmxhY2tEYXJrKTsKLSAgICAtLWJvcmRlckNvbG9ySGFyZDogdmFyKC0tYmxhY2tEYXJrZXIp
OwotICAgIC0taW52ZXJzZUNvbG9yOiB2YXIoLS13aGl0ZSk7Ci0gIH0KLX0KLQotCi0vKiBhbmlt
YXRpb25zICovCi0KLUBrZXlmcmFtZXMgYmxpbmstYmFja2dyb3VuZCB7Ci0gIDAlIHsKLSAgICBv
cGFjaXR5OiAxLjA7Ci0gIH0KLQotICA1MCUgewotICAgIG9wYWNpdHk6IDAuNTsKLSAgfQotCi0g
IDEwMCUgewotICAgIG9wYWNpdHk6IDEuMDsKLSAgfQotfQotCi1Aa2V5ZnJhbWVzIHNwaW4gewot
ICAwJSB7Ci0gICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7Ci0gIH0KLQotICAxMDAlIHsKLSAg
ICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOwotICB9Ci19Ci0KLQotLyogYmFzaWNzICovCi1i
b2R5IHsKLSAgbWFyZ2luOiAwOwotICBwYWRkaW5nOiAwOwotICB0ZXh0LWFsaWduOiBzdGFydDsK
LSAgdGV4dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eTsKLSAgdGV4dC1zaGFkb3c6IG5v
bmU7Ci0gIHRleHQtdHJhbnNmb3JtOiBub25lOwotICB3aGl0ZS1zcGFjZTogbm9ybWFsOwotICBs
ZXR0ZXItc3BhY2luZzogbm9ybWFsOwotICBsaW5lLWJyZWFrOiBhdXRvOwotICBmb250LXdlaWdo
dDogdmFyKC0tZm9udFdlaWdodCk7Ci0gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWdyZXlMaWdo
dGVzdCk7Ci19Ci0KLUBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIHsKLSAgYm9k
eSB7Ci0gICAgYmFja2dyb3VuZDogdmFyKC0tYmxhY2tEYXJrZXIpOwotICAgIGNvbG9yOiB2YXIo
LS1ncmV5TGlnaHRlc3QpOwotICB9Ci19Ci0KLWgxLCBoMiwgaDMsIGg0LCBoNSwgaDYsIHAsIHNw
YW4sIHByZSB7Ci0gIG1hcmdpbi1ibG9jay1zdGFydDogMDsKLSAgbWFyZ2luLWJsb2NrLWVuZDog
MDsKLSAgbWFyZ2luOiAwOwotICBmb250LXdlaWdodDogdmFyKC0tZm9udFdlaWdodCk7Ci19Ci0K
LWEgewotICBjb2xvcjogdmFyKC0tbGlua0NvbG9yKTsKLX0KLQotYTpsaW5rLCBhOnZpc2l0ZWQg
ewotICB0ZXh0LWRlY29yYXRpb246IG5vbmU7Ci19Ci0KLWE6aG92ZXIgewotICB0ZXh0LWRlY29y
YXRpb246IHVuZGVybGluZTsKLX0KLQotLmxpbmstYnV0dG9uOmhvdmVyIHsKLSAgdGV4dC1kZWNv
cmF0aW9uOiBub25lOwotICBjdXJzb3I6IHBvaW50ZXI7Ci19Ci0KLS5kaXZpZGVyLCBociB7Ci0g
IG1hcmdpbi1ibG9jay1zdGFydDogMC41ZW07Ci0gIG1hcmdpbi1ibG9jay1lbmQ6IDAuNWVtOwot
ICBtYXJnaW4taW5saW5lLXN0YXJ0OiBhdXRvOwotICBtYXJnaW4taW5saW5lLWVuZDogYXV0bzsK
LSAgYm9yZGVyLXRvcC1zdHlsZTogc29saWQ7Ci0gIGJvcmRlci10b3Atd2lkdGg6IDFweDsKLSAg
Ym9yZGVyLWNvbG9yOiB2YXIoLS1ib3JkZXJDb2xvclNlY3Rpb24pOwotICBjb2xvcjogdmFyKC0t
Ym9yZGVyQ29sb3JTZWN0aW9uKTsKLSAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYm9yZGVyQ29s
b3JTZWN0aW9uKTsKLSAgd2lkdGg6IDEwMCU7Ci19Ci0KLS5oZWFkZXIsIC50b3BiYXIgewotICBt
YXJnaW46IDA7Ci0gIG1hcmdpbi1ib3R0b206IDE4cHg7Ci0gIGJvcmRlcjogMXB4IHNvbGlkIHZh
cigtLWhlYWRlclR5cGUpOwotICBkaXNwbGF5OiBmbGV4OwotICBmbGV4LWRpcmVjdGlvbjogY29s
dW1uOwotfQotCi0uaGVhZGVyPi50aXRsZSwgLnRvcGJhcj4udGl0bGUgewotICBwYWRkaW5nOiAx
MnB4OwotICBwYWRkaW5nLWxlZnQ6IHZhcigtLWNvbnRlbnRQYWRkaW5nU2l6ZSk7Ci0gIGZvbnQt
c2l6ZTogdmFyKC0tbGFyZ2VTaXplKTsKLSAgZm9udC13ZWlnaHQ6IDQwMDsKLSAgZmxleDogYXV0
bzsKLSAgb3ZlcmZsb3c6IGhpZGRlbjsKLX0KLQotLmhlYWRlcj4udGl0bGU+LmxvZ28sIC50b3Bi
YXI+LnRpdGxlPi5sb2dvIHsKLSAgZGlzcGxheTogaW5saW5lLWJsb2NrOwotICB2ZXJ0aWNhbC1h
bGlnbjogbWlkZGxlOwotICBtYXJnaW4tcmlnaHQ6IDEwcHg7Ci19Ci0KLS5oZWFkZXI+LnRpdGxl
Pi5sb2dvPmltZywgLnRvcGJhcj4udGl0bGU+LmxvZ28+aW1nIHsKLSAgcGFkZGluZzogMDsKLSAg
bWFyZ2luOiAwOwotICBoZWlnaHQ6IHZhcigtLWh1Z2VTaXplKTsKLSAgdmVydGljYWwtYWxpZ246
IG1pZGRsZTsKLX0KLQotLmhlYWRlcj4uYWN0aW9ucywgLnRvcGJhcj4uYWN0aW9ucyB7Ci0gIGZs
ZXg6IGluaXRpYWw7Ci0gIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTsKLSAgYm9yZGVyLXRvcDog
MXB4IHNvbGlkICB2YXIoLS1ib3JkZXJDb2xvclNlY3Rpb24pOwotICBwYWRkaW5nOiAxMnB4Owot
ICBwYWRkaW5nLWxlZnQ6IDI5cHg7Ci0gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7Ci19Ci0KLS5o
ZWFkZXI+LmFjdGlvbnM+Lmxpc3QsIC50b3BiYXI+LmFjdGlvbnM+Lmxpc3QgewotICBkaXNwbGF5
OiBmbGV4OwotICBmbGV4LWRpcmVjdGlvbjogcm93OwotICBib3JkZXI6IG5vbmU7Ci0gIGhlaWdo
dDogMTAwJTsKLSAgYWxpZ24taXRlbXM6IGNlbnRlcjsKLX0KLQotLmhlYWRlcj4uYWN0aW9ucz4u
bGlzdD4uaXRlbSwgLnRvcGJhcj4uYWN0aW9ucz4ubGlzdD4uaXRlbSB7Ci0gIGJvcmRlcjogbm9u
ZTsKLSAgZGlzcGxheTogZmxleDsKLSAgcGFkZGluZzogMCB2YXIoLS1jb2xQYWRkaW5nU2l6ZSk7
Ci0gIGFsaWduLXNlbGY6IGNlbnRlcjsKLX0KLQotLmhlYWRlcj4uYWN0aW9ucz4ubGlzdD4uaXRl
bSAqLCAudG9wYmFyPi5hY3Rpb25zPi5saXN0Pi5pdGVtICogewotICBhbGlnbi1zZWxmOiBjZW50
ZXI7Ci19Ci0KLS5oZWFkZXIuZml4ZWQsLnRvcGJhci5maXhlZCB7Ci0gIHBvc2l0aW9uOiBmaXhl
ZDsKLSAgdG9wOiAwOwotICB3aWR0aDogMTAwJTsKLSAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0t
Ymx1ckJhY2tncm91bmRDb2xvcik7Ci0gIG1hcmdpbi1ib3R0b206IDBweDsKLSAgei1pbmRleDog
MTIzNDU7Ci0gIC13ZWJraXQtYmFja2Ryb3AtZmlsdGVyOiBibHVyKDNweCk7Ci0gIG1pbi1oZWln
aHQ6IGNhbGModmFyKC0tbGFyZ2VTaXplKSAqIDEuMyArIDEycHggKiAyKTsKLX0KLQotLmhlYWRl
ci5maXhlZD4uYWN0aW9ucywgLnRvcGJhci5maXhlZD4uYWN0aW9ucyB7Ci0gIGJhY2tncm91bmQt
Y29sb3I6IHZhcigtLWJsdXJCYWNrZ3JvdW5kQ29sb3IpOwotICAtd2Via2l0LWJhY2tkcm9wLWZp
bHRlcjogYmx1cigzcHgpOwotfQotCi0uaGVhZGVyLmZpeGVkKy5jb250ZW50LCAudG9wYmFyLmZp
eGVkKy5jb250ZW50IHsKLSAgbWFyZ2luLXRvcDogMTMwcHg7Ci19Ci0KLUBtZWRpYSAocHJlZmVy
cy1jb2xvci1zY2hlbWU6IGRhcmspIHsKLSAgLmhlYWRlci5maXhlZCwgLnRvcGJhci5maXhlZCB7
Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYmx1ckJhY2tncm91bmRDb2xvckRhcmspOwot
ICAgIC13ZWJraXQtYmFja2Ryb3AtZmlsdGVyOiBibHVyKDNweCkgYnJpZ2h0bmVzcygxNTAlKTsK
LSAgfQotCi0gIC5oZWFkZXIuZml4ZWQ+LmFjdGlvbnMsIC50b3BiYXIuZml4ZWQ+LmFjdGlvbnMg
ewotICAgIGJhY2tncm91bmQ6IG5vbmU7Ci0gIH0KLX0KLQotQG1lZGlhIHNjcmVlbiBhbmQgKG1p
bi13aWR0aDogNjAwcHgpIHsKLSAgLmhlYWRlciwgLnRvcGJhciB7Ci0gICAgZmxleC1kaXJlY3Rp
b246IHJvdzsKLSAgfQotCi0gIC5oZWFkZXI+LmFjdGlvbnMsIC50b3BiYXI+LmFjdGlvbnMgewot
ICAgIGJvcmRlci10b3A6IG5vbmU7Ci0gIH0KLQotICAuaGVhZGVyLmZpeGVkKy5jb250ZW50LCAu
dG9wYmFyLmZpeGVkKy5jb250ZW50IHsKLSAgICBtYXJnaW4tdG9wOiA4MHB4OwotICB9Ci0KLSAg
LmhlYWRlci5maXhlZD4uYWN0aW9ucywgLnRvcGJhci5maXhlZD4uYWN0aW9ucyB7Ci0gICAgYmFj
a2dyb3VuZDogbm9uZTsKLSAgfQotfQotCi0uY29udGVudCB7Ci0gIHBhZGRpbmc6IDAgdmFyKC0t
Y29udGVudFBhZGRpbmdTaXplKTsKLX0KLQotLnJvdyB7Ci0gIGRpc3BsYXk6IGZsZXg7Ci0gIGZs
ZXgtZGlyZWN0aW9uOiBjb2x1bW47Ci19Ci0vKiBzaXplIHhzICovCi1bY2xhc3MqPSJjb2wtIl0g
ewotICB3aWR0aDogMTAwJTsKLSAgcGFkZGluZzogdmFyKC0tY29sUGFkZGluZ1NpemUpIDA7Ci19
Ci0KLS8qIHNpemUgcyAqLwotQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjAwcHgpIHsK
LSAgLnJvdyB7Ci0gICAgZGlzcGxheTogZmxleDsKLSAgICBmbGV4LWRpcmVjdGlvbjogcm93Owot
ICB9Ci0KLSAgLmNvbC1zLTEgewotICAgIHdpZHRoOiA4LjMzJTsKLSAgfQotCi0gIC5jb2wtcy0y
IHsKLSAgICB3aWR0aDogMTYuNjYlOwotICB9Ci0KLSAgLmNvbC1zLTMgewotICAgIHdpZHRoOiAy
NSU7Ci0gIH0KLQotICAuY29sLXMtNCB7Ci0gICAgd2lkdGg6IDMzLjMzJTsKLSAgfQotCi0gIC5j
b2wtcy01IHsKLSAgICB3aWR0aDogNDEuNjYlOwotICB9Ci0KLSAgLmNvbC1zLTYgewotICAgIHdp
ZHRoOiA1MCU7Ci0gIH0KLQotICAuY29sLXMtNyB7Ci0gICAgd2lkdGg6IDU4LjMzJTsKLSAgfQot
Ci0gIC5jb2wtcy04IHsKLSAgICB3aWR0aDogNjYuNjYlOwotICB9Ci0KLSAgLmNvbC1zLTkgewot
ICAgIHdpZHRoOiA3NSU7Ci0gIH0KLQotICAuY29sLXMtMTAgewotICAgIHdpZHRoOiA4My4zMyU7
Ci0gIH0KLQotICAuY29sLXMtMTEgewotICAgIHdpZHRoOiA5MS42NiU7Ci0gIH0KLQotICAuY29s
LXMtMTIgewotICAgIHdpZHRoOiAxMDAlOwotICB9Ci19Ci0KLS8qIHNpemUgbSAqLwotQG1lZGlh
IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNzY4cHgpIHsKLSAgLnJvdyB7Ci0gICAgZGlzcGxheTog
ZmxleDsKLSAgICBmbGV4LWRpcmVjdGlvbjogcm93OwotICB9Ci0KLSAgLmNvbC0xIHsKLSAgICB3
aWR0aDogOC4zMyU7Ci0gIH0KLQotICAuY29sLTIgewotICAgIHdpZHRoOiAxNi42NiU7Ci0gIH0K
LQotICAuY29sLTMgewotICAgIHdpZHRoOiAyNSU7Ci0gIH0KLQotICAuY29sLTQgewotICAgIHdp
ZHRoOiAzMy4zMyU7Ci0gIH0KLQotICAuY29sLTUgewotICAgIHdpZHRoOiA0MS42NiU7Ci0gIH0K
LQotICAuY29sLTYgewotICAgIHdpZHRoOiA1MCU7Ci0gIH0KLQotICAuY29sLTcgewotICAgIHdp
ZHRoOiA1OC4zMyU7Ci0gIH0KLQotICAuY29sLTggewotICAgIHdpZHRoOiA2Ni42NiU7Ci0gIH0K
LQotICAuY29sLTkgewotICAgIHdpZHRoOiA3NSU7Ci0gIH0KLQotICAuY29sLTEwIHsKLSAgICB3
aWR0aDogODMuMzMlOwotICB9Ci0KLSAgLmNvbC0xMSB7Ci0gICAgd2lkdGg6IDkxLjY2JTsKLSAg
fQotCi0gIC5jb2wtMTIgewotICAgIHdpZHRoOiAxMDAlOwotICB9Ci19Ci0KLS5oaWRlLWZvci14
cyB7Ci0gIGRpc3BsYXk6IG5vbmU7Ci19Ci0KLS5oaWRlLWZvci1zIHsKLSAgZGlzcGxheTogbm9u
ZTsKLX0KLQotQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjAwcHgpIHsKLSAgLmhpZGUt
Zm9yLXhzIHsKLSAgICBkaXNwbGF5OiBibG9jazsKLSAgfQotCi0gIC5oaWRlLWZvci1zIHsKLSAg
ICBkaXNwbGF5OiBub25lOwotICB9Ci19Ci0KLS8qIHRleHQgKi8KLS50ZXh0LCBib2R5LCBkaXYs
IHAsIHNwYW4sIGxpLCBhLCBoNCB7Ci0gIGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBzeXN0
ZW0sIEhlbHZldGljYU5ldWUsIEx1Y2lkYUdyYW5kZTsKLSAgZm9udC1zaXplOiB2YXIoLS1zbWFs
bFNpemUpOwotICBmb250LXdlaWdodDogdmFyKC0tZm9udFdlaWdodCk7Ci0gIGZvbnQtc3RyZXRj
aDogbm9ybWFsOwotICBmb250LXN0eWxlOiBub3JtYWw7Ci0gIGZvbnQtdmFyaWFudC1jYXBzOiBu
b3JtYWw7Ci0gIGxpbmUtaGVpZ2h0OiAxLjM7Ci19Ci0KLXhtcCB7Ci0gIG1hcmdpbjogMDsKLSAg
cGFkZGluZzogMDsKLSAgZm9udC1mYW1pbHk6IE1lbmxvLCBNb25hY28sIENvbnNvbGFzLCAiQ291
cmllciBOZXciLCBtb25vc3BhY2U7Ci19Ci0KLXByZSB7Ci0gIGJvcmRlcjogMXB4IHNvbGlkIHZh
cigtLWJvcmRlckNvbG9ySW5saW5lRWxlbWVudCk7Ci0gIGJhY2tncm91bmQtY29sb3I6IHZhcigt
LWdyZXlMaWdodGVzdCk7Ci0gIGZvbnQtc2l6ZTogY2FsYyh2YXIoLS10aW55U2l6ZSkgKyAxcHgp
OwotICBmb250LWZhbWlseTogTWVubG8sIE1vbmFjbywgQ29uc29sYXMsICJDb3VyaWVyIE5ldyIs
IG1vbm9zcGFjZTsKLSAgcGFkZGluZzogMTBweDsKLSAgbWFyZ2luOiAwOwotICBjb2xvcjogdmFy
KC0tZ3JleURhcmtlcik7Ci0gIG92ZXJmbG93OiBhdXRvOwotfQotCi1AbWVkaWEgKHByZWZlcnMt
Y29sb3Itc2NoZW1lOiBkYXJrKSB7Ci0gIHByZSB7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogdmFy
KC0tYmxhY2spOwotICAgIGNvbG9yOiB2YXIoLS1ncmV5RGFyayk7Ci0gIH0KLX0KLQotLnRleHQu
dGlueSwgaDUsIC50ZXh0LnRpbnkgICogewotICBmb250LXNpemU6IHZhcigtLXRpbnlTaXplKTsK
LX0KLQotLnRleHQubWVkaXVtLCBoMywgLnRleHQubWVkaXVtICAqIHsKLSAgZm9udC1zaXplOiB2
YXIoLS1tZWRpdW1TaXplKTsKLX0KLQotLnRleHQubGFyZ2UsIGgyLCAudGV4dC5sYXJnZSAgKiB7
Ci0gIGZvbnQtc2l6ZTogdmFyKC0tbGFyZ2VTaXplKTsKLX0KLQotLnRleHQuaHVnZSwgaDEsIC50
ZXh0Lmh1Z2UgICogewotICBmb250LXNpemU6IHZhcigtLWh1Z2VTaXplKTsKLX0KLQotLnRleHQu
YmxvY2sgewotICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Ci0gIHZlcnRpY2FsLWFsaWduOiBtaWRk
bGU7Ci0gIGxpbmUtaGVpZ2h0OiAxLjE7Ci19Ci0KLS50ZXh0LnN1Y2Nlc3MsIC50ZXh0LnN1Y2Nl
c3MgKiB7Ci0gIGNvbG9yOiB2YXIoLS1ncmVlbkRhcmtlcik7Ci19Ci0KLS50ZXh0LmZhaWxlZCwg
LnRleHQuZmFpbGVkICogewotICBjb2xvcjogdmFyKC0tcmVkRGFya2VyKTsKLX0KLQotLnRleHQu
ZXJyb3IsIC50ZXh0LmVycm9yICogewotICBjb2xvcjogdmFyKC0tb3JhbmdlRGFya2VyKTsKLX0K
LQotCi0vKiB0YWJsZSAqLwotLnRhYmxlIHsKLSAgcGFkZGluZzogMDsKLSAgLXdlYmtpdC1ib3Jk
ZXItaG9yaXpvbnRhbC1zcGFjaW5nOiAwcHg7Ci0gIC13ZWJraXQtYm9yZGVyLXZlcnRpY2FsLXNw
YWNpbmc6IDBweDsKLSAgbWFyZ2luOiAxMnB4IDA7Ci19Ci0KLS50YWJsZS5mdWxsLXdpZHRoIHsK
LSAgd2lkdGg6IDEwMCU7Ci0gIG92ZXJmbG93OiBhdXRvOwotfQotCi0udGFibGUuc3RyaXBwZWQ+
dGJvZHk+dHI6bnRoLWNoaWxkKG9kZCkgewotICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1ncmV5
TGlnaHRlc3QpOwotfQotCi1AbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSB7Ci0g
IC50YWJsZS5zdHJpcHBlZD50Ym9keT50cjpudGgtY2hpbGQob2RkKSB7Ci0gICAgYmFja2dyb3Vu
ZC1jb2xvcjogdmFyKC0tYmxhY2spOwotICB9Ci19Ci0KLS50YWJsZT50aGVhZD50ciB7Ci0gIHBh
ZGRpbmc6IDA7Ci19Ci0KLS50YWJsZT50aGVhZD50cj50aCB7Ci0gIHBhZGRpbmc6IDEycHg7Ci0g
IGJvcmRlci1ib3R0b206IDFweCBzb2xpZDsKLSAgYm9yZGVyLWNvbG9yOiB2YXIoLS1ib3JkZXJD
b2xvcklubGluZUVsZW1lbnQpOwotICBsaW5lLWhlaWdodDogMTsKLSAgZm9udC13ZWlnaHQ6IDEw
MDsKLSAgdGV4dC1hbGlnbjogbGVmdDsKLX0KLQotLnRhYmxlPnRib2R5PnRyPnRkIHsKLSAgbGlu
ZS1oZWlnaHQ6IDE7Ci19Ci0KLS50YWJsZT50Ym9keT50cj50ZCB7Ci0gIHBhZGRpbmc6IDEycHg7
Ci19Ci0KLS8qIERvdCAqLwotLmRvdCB7Ci0gIGRpc3BsYXk6IGlubGluZS1ibG9jazsKLSAgZm9u
dC1zaXplOiB2YXIoLS10aW55U2l6ZSk7Ci0gIHdpZHRoOiB2YXIoLS1tZWRpdW1TaXplKTsKLSAg
aGVpZ2h0OiB2YXIoLS1tZWRpdW1TaXplKTsKLSAgYm9yZGVyLXJhZGl1czogdmFyKC0tbWVkaXVt
U2l6ZSk7Ci0gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7Ci0gIHRleHQtYWxpZ246IGNlbnRlcjsK
LSAgcGFkZGluZzogMDsKLSAgbWFyZ2luOiAwIDhweDsKLSAgYmFja2dyb3VuZC1jb2xvcjogdmFy
KC0tZ3JleURhcmspOwotICBwb3NpdGlvbjogcmVsYXRpdmU7Ci19Ci0KLS5kb3QuYmxpbmsgewot
ICAtd2Via2l0LWFuaW1hdGlvbjogYmxpbmstYmFja2dyb3VuZCAxcyBpbmZpbml0ZTsKLSAgLyog
U2FmYXJpIDQrICovCi0gIC1tb3otYW5pbWF0aW9uOiBibGluay1iYWNrZ3JvdW5kIDFzIGluZmlu
aXRlOwotICAvKiBGeCA1KyAqLwotICAtby1hbmltYXRpb246IGJsaW5rLWJhY2tncm91bmQgMXMg
aW5maW5pdGU7Ci0gIC8qIE9wZXJhIDEyKyAqLwotICBhbmltYXRpb246IGJsaW5rLWJhY2tncm91
bmQgMXMgaW5maW5pdGU7Ci0gIC8qIElFIDEwKywgRnggMjkrICovOwotfQotCi0uZG90ICogewot
ICBjb2xvcjogdmFyKC0tZ3JleUxpZ2h0ZXN0KTsKLSAgbGluZS1oZWlnaHQ6IDE7Ci19Ci0KLS5k
b3QgaW1nLCAuZG90IC50ZXh0IHsKLSAgdXNlci1zZWxlY3Q6IG5vbmU7Ci0gIC13ZWJraXQtdXNl
ci1zZWxlY3Q6IG5vbmU7Ci0gIC13ZWJraXQtdG91Y2gtY2FsbG91dDogbm9uZTsKLSAgY3Vyc29y
OiBkZWZhdWx0OwotICBwYWRkaW5nOiAwOwotICBtYXJnaW46IDA7Ci0gIHRleHQtYWxpZ246IGNl
bnRlcjsKLSAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKLSAgZm9udC13ZWlnaHQ6IDQwMDsKLSAg
d2lkdGg6IHZhcigtLXNtYWxsU2l6ZSk7Ci0gIGhlaWdodDogdmFyKC0tc21hbGxTaXplKTsKLSAg
Zm9udC1zaXplOiB2YXIoLS1zbWFsbFNpemUpOwotICBkaXNwbGF5OiBibG9jazsKLX0KLQotLmRv
dD5pbWcsIC5kb3Q+LnRleHR7Ci0gIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgdG9wOiBjYWxjKCh2
YXIoLS1tZWRpdW1TaXplKSAtIHZhcigtLXNtYWxsU2l6ZSkpIC8gMik7Ci0gIGxlZnQ6IGNhbGMo
KHZhcigtLW1lZGl1bVNpemUpIC0gdmFyKC0tc21hbGxTaXplKSkgLyAyKTsKLX0KLQotLmRvdC50
aW55IHsKLSAgZm9udC1zaXplOiBjYWxjKHZhcigtLXRpbnlTaXplKSAtIDJweCk7Ci0gIHdpZHRo
OiB2YXIoLS10aW55U2l6ZSk7Ci0gIGhlaWdodDogdmFyKC0tdGlueVNpemUpOwotICBib3JkZXIt
cmFkaXVzOiB2YXIoLS10aW55U2l6ZSk7Ci19Ci0KLS5kb3Quc21hbGwgewotICBmb250LXNpemU6
IHZhcigtLXRpbnlTaXplKTsKLSAgd2lkdGg6IHZhcigtLXNtYWxsU2l6ZSk7Ci0gIGhlaWdodDog
dmFyKC0tc21hbGxTaXplKTsKLSAgYm9yZGVyLXJhZGl1czogdmFyKC0tc21hbGxTaXplKTsKLX0K
LQotLmRvdC5zbWFsbCBpbWcsIC5kb3Quc21hbGwgLnRleHQgewotICB3aWR0aDogdmFyKC0tdGlu
eVNpemUpOwotICBoZWlnaHQ6IHZhcigtLXRpbnlTaXplKTsKLSAgZm9udC1zaXplOiB2YXIoLS10
aW55U2l6ZSk7Ci19IAotCi0gLmRvdC5zbWFsbD5pbWcsIC5kb3Quc21hbGw+LnRleHQgewotICBw
b3NpdGlvbjogYWJzb2x1dGU7Ci0gIHRvcDogY2FsYygodmFyKC0tc21hbGxTaXplKSAtIHZhcigt
LXRpbnlTaXplKSkgLyAyKTsKLSAgbGVmdDogY2FsYygodmFyKC0tc21hbGxTaXplKSAtIHZhcigt
LXRpbnlTaXplKSkgLyAyKTsKLX0KLQotLmRvdC5tZWRpdW0gewotICBmb250LXNpemU6IHZhcigt
LXNtYWxsU2l6ZSkKLSAgd2lkdGg6IHZhcigtLW1lZGl1bVNpemUpOwotICBoZWlnaHQ6IHZhcigt
LW1lZGl1bVNpemUpOwotICBib3JkZXItcmFkaXVzOiB2YXIoLS1tZWRpdW1TaXplKTsKLX0KLQot
LmRvdC5tZWRpdW0gaW1nLCAuZG90Lm1lZGl1bSAudGV4dHsKLSAgd2lkdGg6IHZhcigtLXNtYWxs
U2l6ZSk7Ci0gIGhlaWdodDogdmFyKC0tc21hbGxTaXplKTsKLSAgZm9udC1zaXplOiB2YXIoLS1z
bWFsbFNpemUpCi19Ci0KLS5kb3QubWVkaXVtPmltZywgLmRvdC5tZWRpdW0+LnRleHR7Ci0gIHBv
c2l0aW9uOiBhYnNvbHV0ZTsKLSAgdG9wOiBjYWxjKCh2YXIoLS1tZWRpdW1TaXplKSAtIHZhcigt
LXNtYWxsU2l6ZSkpIC8gMik7Ci0gIGxlZnQ6IGNhbGMoKHZhcigtLW1lZGl1bVNpemUpIC0gdmFy
KC0tc21hbGxTaXplKSkgLyAyKTsKLX0KLQotLmRvdC5sYXJnZSB7Ci0gIGZvbnQtc2l6ZTogdmFy
KC0tbWVkaXVtU2l6ZSk7Ci0gIHdpZHRoOiB2YXIoLS1sYXJnZVNpemUpOwotICBoZWlnaHQ6IHZh
cigtLWxhcmdlU2l6ZSk7Ci0gIGJvcmRlci1yYWRpdXM6IHZhcigtLWxhcmdlU2l6ZSk7Ci19Ci0K
LS5kb3QubGFyZ2UgaW1nLCAuZG90LmxhcmdlIC50ZXh0ewotICB3aWR0aDogdmFyKC0tbWVkaXVt
U2l6ZSk7Ci0gIGhlaWdodDogdmFyKC0tbWVkaXVtU2l6ZSk7Ci0gIGZvbnQtc2l6ZTogdmFyKC0t
bWVkaXVtU2l6ZSk7Ci19Ci0KLS5kb3QubGFyZ2U+aW1nLCAuZG90LmxhcmdlPi50ZXh0ewotICBw
b3NpdGlvbjogYWJzb2x1dGU7Ci0gIHRvcDogY2FsYygodmFyKC0tbGFyZ2VTaXplKSAtIHZhcigt
LW1lZGl1bVNpemUpKSAvIDIpOwotICBsZWZ0OiBjYWxjKCh2YXIoLS1sYXJnZVNpemUpIC0gdmFy
KC0tbWVkaXVtU2l6ZSkpIC8gMik7Ci19Ci0KLS5kb3Quc3VjY2VzcyB7Ci0gIGJhY2tncm91bmQt
Y29sb3I6IHZhcigtLWdyZWVuTGlnaHQpOwotfQotCi0uZG90LmZhaWxlZCB7Ci0gIGJhY2tncm91
bmQtY29sb3I6IHZhcigtLXJlZExpZ2h0KTsKLX0KLQotLmRvdC5lcnJvciB7Ci0gIGJhY2tncm91
bmQtY29sb3I6IHZhcigtLW9yYW5nZUxpZ2h0KTsKLX0KLQotLmRvdC5jbGlja2FibGUgewotICBj
dXJzb3I6IHBvaW50ZXI7Ci0gIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWdyZXlEYXJrKTsKLX0K
LQotLmRvdC5jbGlja2FibGU6aG92ZXIgewotICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ncmV5
RGFya2VyKTsKLX0KLQotLmRvdC5jbGlja2FibGU6Zm9jdXMtd2l0aGluIHsKLSAgYm9yZGVyOiBu
b25lOwotICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1ncmV5RGFya2VyKTsKLX0KLQotLmRvdC5j
bGlja2FibGUuc3VjY2VzcyB7Ci0gIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWdyZWVuTGlnaHQp
OwotfQotCi0uZG90LmNsaWNrYWJsZS5zdWNjZXNzOmhvdmVyIHsKLSAgYm9yZGVyOiAxcHggc29s
aWQgdmFyKC0tZ3JlZW5EYXJrKTsKLX0KLQotLmRvdC5jbGlja2FibGUuc3VjY2Vzczpmb2N1cy13
aXRoaW4gewotICBib3JkZXI6IG5vbmU7Ci0gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWdyZWVu
RGFyayk7Ci19Ci0KLS5kb3QuY2xpY2thYmxlLmVycm9yIHsKLSAgYm9yZGVyOiAxcHggc29saWQg
dmFyKC0tb3JhbmdlTGlnaHQpOwotfQotCi0uZG90LmNsaWNrYWJsZS5lcnJvcjpob3ZlciB7Ci0g
IGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLW9yYW5nZURhcmspOwotfQotCi0uZG90LmNsaWNrYWJs
ZS5lcnJvcjpmb2N1cy13aXRoaW4gewotICBib3JkZXI6IG5vbmU7Ci0gIGJhY2tncm91bmQtY29s
b3I6IHZhcigtLW9yYW5nZURhcmspOwotfQotCi0uZG90LmNsaWNrYWJsZS5mYWlsZWQgewotICBi
b3JkZXI6IDFweCBzb2xpZCB2YXIoLS1yZWRMaWdodCk7Ci19Ci0KLS5kb3QuY2xpY2thYmxlLmZh
aWxlZDpob3ZlciB7Ci0gIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXJlZERhcmspOwotfQotCi0u
ZG90LmNsaWNrYWJsZS5mYWlsZWQ6Zm9jdXMtd2l0aGluIHsKLSAgYm9yZGVyOiBub25lOwotICBi
YWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1yZWREYXJrKTsKLX0KLQotLmRvdC5zZWxlY3RvciB7Ci0g
IGRpc3BsYXk6IGZsZXg7Ci0gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47Ci0gIGJvcmRlci1yYWRp
dXM6IDA7Ci0gIGJhY2tncm91bmQ6IG5vbmU7Ci0gIGJvcmRlcjogbm9uZTsKLSAgd2lkdGg6IGF1
dG87Ci0gIGhlaWdodDogYXV0bzsKLSAgbWFyZ2luOiBhdXRvOwotfQotCi0uZG90LnNlbGVjdG9y
IGlucHV0IHsKLSAgb3BhY2l0eTogMDsKLSAgd2lkdGg6IDA7Ci0gIGhlaWdodDogMDsKLSAgbWFy
Z2luOiAwOwotICBwYWRkaW5nOiAwOwotICBib3JkZXI6IG5vbmU7Ci19Ci0KLS5kb3Quc2VsZWN0
b3IgbGFiZWwgewotICBtYXJnaW46IDBweDsKLSAgcGFkZGluZzogMnB4OwotICBkaXNwbGF5OiBm
bGV4OwotfQotCi0uZG90LnNlbGVjdG9yIC5kb3QgewotICBtYXJnaW46IDBweDsKLSAgcGFkZGlu
ZzogMHB4OwotfQotCi0uZG90LnNlbGVjdG9yIGlucHV0OmNoZWNrZWQgKyAuZG90IHsKLSAgYm94
LXNoYWRvdzogMHB4IDBweCA1cHggMXB4IHZhcigtLWdyZXkpOwotfQotCi0uZG90LnNlbGVjdG9y
IGlucHV0OmNoZWNrZWQgKyAuZG90LnN1Y2Nlc3MgewotICBib3gtc2hhZG93OiAwcHggMHB4IDVw
eCAxcHggdmFyKC0tZ3JlZW5MaWdodCk7Ci19Ci0KLS5kb3Quc2VsZWN0b3IgaW5wdXQ6Y2hlY2tl
ZCArIC5kb3QuZmFpbGVkIHsKLSAgYm94LXNoYWRvdzogMHB4IDBweCA1cHggMXB4IHZhcigtLXJl
ZExpZ2h0KTsKLX0KLQotLmRvdC5zZWxlY3RvciBpbnB1dDpjaGVja2VkICsgLmRvdC5lcnJvciB7
Ci0gIGJveC1zaGFkb3c6IDBweCAwcHggNXB4IDFweCB2YXIoLS1vcmFuZ2VMaWdodCk7Ci19Ci0K
LS8qIGljb24gKi8KLS5pY29uIHsKLSAgZGlzcGxheTogaW5saW5lLWJsb2NrOwotICB3aWR0aDog
dmFyKC0tbWVkaXVtU2l6ZSk7Ci0gIGhlaWdodDogdmFyKC0tbWVkaXVtU2l6ZSk7Ci0gIHZlcnRp
Y2FsLWFsaWduOiBtaWRkbGU7Ci19Ci0KLS5pY29uLnRpbnkgewotICB3aWR0aDogdmFyKC0tdGlu
eVNpemUpOwotICBoZWlnaHQ6IHZhcigtLXRpbnlTaXplKTsKLX0KLQotLmljb24uc21hbGwgewot
ICB3aWR0aDogdmFyKC0tc21hbGxTaXplKTsKLSAgaGVpZ2h0OiB2YXIoLS1zbWFsbFNpemUpOwot
fQotCi0uaWNvbi5sYXJnZSB7Ci0gIHdpZHRoOiB2YXIoLS1sYXJnZVNpemUpOwotICBoZWlnaHQ6
IHZhcigtLWxhcmdlU2l6ZSk7Ci19Ci0KLS5pY29uLmh1Z2UgewotICB3aWR0aDogdmFyKC0taHVn
ZVNpemUpOwotICBoZWlnaHQ6IHZhcigtLWh1Z2VTaXplKTsKLX0KLQotLyogc2VjdGlvbiAqLwot
LnNlY3Rpb24gewotICBkaXNwbGF5OiBibG9jazsKLSAgYm9yZGVyOiAxcHg7Ci0gIGJvcmRlci1z
dHlsZTogc29saWQ7Ci0gIGJvcmRlci1jb2xvcjogdmFyKC0tYm9yZGVyQ29sb3JTZWN0aW9uKTsK
LSAgYm9yZGVyLXJhZGl1czogMTFweDsKLSAgbWFyZ2luLWJvdHRvbTogMTVweDsKLSAgYmFja2dy
b3VuZC1jb2xvcjogdmFyKC0td2hpdGUpOwotfQotCi1AbWVkaWEgKHByZWZlcnMtY29sb3Itc2No
ZW1lOiBkYXJrKSB7Ci0gIC5zZWN0aW9uIC5zZWN0aW9uIHsKLSAgICBib3JkZXItY29sb3I6IHZh
cigtLWdyZXlEYXJrZXIpOwotICB9Ci19Ci0KLUBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6
IGRhcmspIHsKLSAgLnNlY3Rpb24gewotICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJsYWNr
RGFyayk7Ci0gIH0KLX0KLQotLnNlY3Rpb24uYXJ0aWNsZSB7Ci0gIGJvcmRlcjogbm9uZTsKLSAg
bWFyZ2luLWJvdHRvbTogMDsKLX0KLQotLnNlY3Rpb24+LmhlYWRlciB7Ci0gIGRpc3BsYXk6IGZs
ZXg7Ci0gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47Ci0gIGJvcmRlcjogbm9uZTsKLSAgbWFyZ2lu
LWJvdHRvbTogMHB4OwotfQotCi0uc2VjdGlvbj4uaGVhZGVyPi50aXRsZSB7Ci0gIHBhZGRpbmc6
IHZhcigtLXNlY3Rpb25QYWRkaW5nU2l6ZSk7Ci0gIGZvbnQtc2l6ZTogdmFyKC0tbWVkaXVtU2l6
ZSk7Ci0gIGZsZXg6IGF1dG87Ci0gIHBhZGRpbmctYm90dG9tOiAwOwotfQotCi0uc2VjdGlvbj4u
aGVhZGVyPi50aXRsZS5zbWFsbCB7Ci0gIGZvbnQtc2l6ZTogdmFyKC0tc21hbGxTaXplKTsKLX0K
LQotLnNlY3Rpb24+LmNvbnRlbnQgewotICBwYWRkaW5nOiB2YXIoLS1zZWN0aW9uUGFkZGluZ1Np
emUpOwotfQotCi0uc2VjdGlvbj4uY29udGVudD4ubGlzdCB7Ci0gIHdpZHRoOiAxMDAlOwotfQot
Ci0uc2VjdGlvbj4uYWN0aW9ucyB7Ci0gIHBhZGRpbmc6IHZhcigtLXNlY3Rpb25QYWRkaW5nU2l6
ZSk7Ci0gIHBhZGRpbmctdG9wOiAwOwotICB3aWR0aDogMTAwJTsKLX0KLQotQG1lZGlhIHNjcmVl
biBhbmQgKG1pbi13aWR0aDogNjAwcHgpIHsKLSAgLnNlY3Rpb24+LmhlYWRlciB7Ci0gICAgZmxl
eC1kaXJlY3Rpb246IHJvdzsKLSAgfQotfQotCi0vKiBsaXN0ICovCi0ubGlzdCB7Ci0gIC8qYm9y
ZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLWJvcmRlckNvbG9yU2VjdGlvbik7Ki87Ci19Ci0KLS5s
aXN0Pi5pdGVtIHsKLSAgLypib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tYm9yZGVyQ29s
b3JTZWN0aW9uKTsqLwotICBwYWRkaW5nOiB2YXIoLS1jb2xQYWRkaW5nU2l6ZSk7Ci19Ci0KLS5s
aXN0Pi5pdGVtLnN1YiB7Ci0gIGNvbG9yOiB2YXIoLS1ncmV5RGFya2VyKTsKLSAgZm9udC1zaXpl
OiBjYWxjKHZhcigtLXNtYWxsU2l6ZSkgLSAycHgpOwotfQotCi0ubGlzdD4uaXRlbT4ubGlzdCB7
Ci0gIHBhZGRpbmctbGVmdDogdmFyKC0tY29sUGFkZGluZ1NpemUpOwotfQotCi0vKiBzaWRlYmFy
ICovCi0uc2lkZWJhciB7Ci0gIGRpc3BsYXk6IG5vbmU7Ci0gIGhlaWdodDogMTAwJTsKLSAgbWFy
Z2luOiAwOwotICBwYWRkaW5nOiAwOwotICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1ibHVyQmFj
a2dyb3VuZENvbG9yKTsKLSAgcG9zaXRpb246IGZpeGVkOwotICBib3JkZXItcmlnaHQ6IDFweCBz
b2xpZCB2YXIoLS1ib3JkZXJDb2xvclNlY3Rpb24pOwotICBvdmVyZmxvdy15OiBhdXRvOwotICBt
aW4td2lkdGg6IDI1MHB4OwotICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1ibHVyQmFja2dyb3Vu
ZENvbG9yKTsKLSAgLXdlYmtpdC1iYWNrZHJvcC1maWx0ZXI6IGJsdXIoNXB4KSBicmlnaHRuZXNz
KDg4JSk7Ci0gIGJhY2tkcm9wLWZpbHRlcjogYmx1cig1cHgpIGJyaWdodG5lc3MoODglKTsKLSAg
ei1pbmRleDogdmFyKC0tbWlkZGxlWkluZGV4KTsKLSAgcmlnaHQ6IDA7Ci19Ci0uc2lkZWJhci5o
aWRkZW4gewotICBkaXNwbGF5OiBub25lOwotfQotCi0uc2lkZWJhcj4uaGVhZGVyIHsKLSAgbWFy
Z2luLWJvdHRvbTogMDsKLSAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0td2hpdGUpOwotICBib3Jk
ZXI6IG5vbmU7Ci0gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1ib3JkZXJDb2xvclNl
Y3Rpb24pOwotfQotCi0uc2lkZWJhcj4uaGVhZGVyPi50aXRsZSB7Ci0gIHBhZGRpbmctbGVmdDog
dmFyKC0tY29sUGFkZGluZ1NpemUpOwotfQotCi1AbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1l
OiBkYXJrKSB7Ci0gIC5zaWRlYmFyIHsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1ibHVy
QmFja2dyb3VuZENvbG9yRGFyayk7Ci0gIH0KLQotICAuc2lkZWJhcj4uaGVhZGVyIHsKLSAgICBi
YWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1ibGFjayk7Ci0gIH0KLX0KLQotLnNpZGViYXIudW5kZXIt
dG9wYmFyIHsKLSAgaGVpZ2h0OiBjYWxjKDEwMCUgLSAxMnB4ICogMiAgLSB2YXIoLS1sYXJnZVNp
emUpICogMS4zKTsKLX0KLQotLnNpZGViYXIudW5kZXItdG9wYmFyLXdpdGgtYWN0aW9ucyB7Ci0g
IGhlaWdodDogY2FsYygxMDAlIC0gMTJweCAqIDIgIC0gdmFyKC0tbGFyZ2VTaXplKSAqIDEuMyAt
IHZhcigtLXNtYWxsU2l6ZSkgKiAxLjMgLSAxMnB4ICogMiApOwotICBib3R0b206IDA7Ci19Ci0K
LS5tYWluIHsKLSAgbWFyZ2luOiBhdXRvOwotICBoZWlnaHQ6IDEwMCU7Ci0gIG92ZXJmbG93OiBh
dXRvOwotfQotCi0ubWFpbi51bmRlci10b3BiYXItd2l0aC1hY3Rpb25zIHsKLSAgbWFyZ2luLXRv
cDogY2FsYygxMnB4ICogMiAgKyB2YXIoLS1sYXJnZVNpemUpICogMS4zICsgdmFyKC0tc21hbGxT
aXplKSAqIDEuMyArIDEycHggKiAyKTsKLX0KLQotLnNpZGViYXIucmlnaHQgewotICBsZWZ0OiB1
bnNldDsKLSAgcmlnaHQ6IDA7Ci19Ci0KLS5zaWRlYmFyPi5saXN0IHsKLSAgd2lkdGg6IDEwMCU7
Ci19Ci0KLS5zaWRlYmFyLmNvbnRlbnQgewotICB3aWR0aDogMTAwJTsKLX0KLQotLnNpZGViYXIu
dG9nZ2xlIHsKLSAgZGlzcGxheTogYmxvY2s7Ci19Ci0KLS5zaWRlYmFyPi5ib3R0b20tbmF2IHsK
LSAgcG9zaXRpb246IGFic29sdXRlOwotfQotCi0vKiBib3R0b20gbmF2Ki8KLS5ib3R0b20tbmF2
IHsKLSAgZGlzcGxheTogZmxleDsKLSAgZmxleC1kaXJlY3Rpb246IHJvdzsKLSAgYmFja2dyb3Vu
ZDogdmFyKC0tZ3JleUxpZ2h0KTsKLX0KLQotLmJvdHRvbS1uYXY+Lml0ZW0gewotICBhbGlnbi1z
ZWxmOiBjZW50ZXI7Ci19Ci0KLS8qY2hpcCovCi0uY2hpcCB7Ci0gIGRpc3BsYXk6IGlubGluZS1i
bG9jazsKLSAgcGFkZGluZzogNHB4IDEycHg7Ci0gIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJv
cmRlckNvbG9ySW5saW5lRWxlbWVudCk7Ci0gIGJvcmRlci1yYWRpdXM6IDUwcHg7Ci0gIG1hcmdp
bjogNXB4OwotICBmb250LXNpemU6IHZhcigtLXRpbnlTaXplKTsKLX0KLQotLmNoaXAgLmRvdCB7
Ci0gIG1hcmdpbi1sZWZ0OiAwOwotfQotCi0uY2hpcCAgKiB7Ci0gIGZvbnQtc2l6ZTogdmFyKC0t
dGlueVNpemUpOwotfQotCi0uY2hpcC5vdXRsaW5lIHsKLSAgYm9yZGVyOiAxcHggc29saWQgdmFy
KC0tYm9yZGVyQ29sb3JIYXJkKTsKLX0KLQotLmNoaXAubmFycm93IHsKLSAgcGFkZGluZzogMXB4
IDhweDsKLSAgbWFyZ2luOiAxcHg7Ci19Ci0KLS5jaGlwLm5hcnJvdyAqIHsKLSAgZm9udC1zaXpl
OiBjYWxjKHZhcigtLXRpbnlTaXplKSAtIDRweCk7Ci19Ci0KLS5jaGlwLnN1Y2Nlc3MsIC5jaGlw
LnN1Y2Nlc3MgKiB7Ci0gIGNvbG9yOiB2YXIoLS1ncmVlbkRhcmtlcik7Ci0gIGJvcmRlci1jb2xv
cjogdmFyKC0tZ3JlZW5EYXJrZXIpOwotfQotCi0uY2hpcC5mYWlsZWQsIC5jaGlwLmZhaWxlZCAq
IHsKLSAgY29sb3I6IHZhcigtLXJlZERhcmtlcik7Ci0gIGJvcmRlci1jb2xvcjogdmFyKC0tcmVk
RGFya2VyKTsKLX0KLQotLmNoaXAuZXJyb3IsIC5jaGlwLmVycm9yICogewotICBjb2xvcjogdmFy
KC0tb3JhbmdlRGFya2VyKTsKLSAgYm9yZGVyLWNvbG9yOiB2YXIoLS1vcmFuZ2VEYXJrZXIpOwot
fQotCi0vKmJhZGdlKi8KLS5iYWRnZSB7Ci0gIGRpc3BsYXk6IGlubGluZS1ibG9jazsKLSAgcGFk
ZGluZzogNHB4IDEycHg7Ci0gIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRlckNvbG9ySW5s
aW5lRWxlbWVudCk7Ci0gIG1hcmdpbjogNXB4OwotfQotCi0uYmFkZ2Uub3V0bGluZSB7Ci0gIGJv
cmRlci1jb2xvcjogdmFyKC0tYm9yZGVyQ29sb3JIYXJkKTsKLX0KLQotLmJhZGdlLmFjdGl2ZSB7
Ci0gIGJvcmRlci1jb2xvcjogdmFyKC0tYmx1ZSk7Ci19Ci0KLS5iYWRnZS5vdXRsaW5lLmFjdGl2
ZSB7Ci0gIGJvcmRlci1jb2xvcjogdmFyKC0tYmx1ZURhcmtlcik7Ci19Ci0KLS5iYWRnZVtvbmNs
aWNrXSB7Ci0gIGN1cnNvcjogcG9pbnRlcjsKLX0KLQotLmJhZGdlLmNsaWNrYWJsZSB7Ci0gIGN1
cnNvcjogcG9pbnRlcjsKLX0KLQotLmJhZGdlLmNsaWNrYWJsZTpob3ZlciB7Ci0gIGJvcmRlci1j
b2xvcjogdmFyKC0tYmx1ZUxpZ2h0ZXIpOwotfQotCi0KLS8qcGxhY2Vob2xkZXIqLwotLnBsYWNl
aG9sZGVyIHsKLSAgd2lkdGg6IDEwMCU7Ci0gIG1pbi1oZWlnaHQ6IDIwMHB4OwotICB0ZXh0LWFs
aWduOiBjZW50ZXI7Ci0gIGRpc3BsYXk6IGZsZXg7Ci19Ci0KLS5wbGFjZWhvbGRlciAubG9hZGVy
IHsKLSAgYWxpZ24tc2VsZjogY2VudGVyOwotICBtYXJnaW46IGF1dG87Ci19Ci0KLS5wbGFjZWhv
bGRlci5kaW1tZXIgewotICBiYWNrZ3JvdW5kOiB2YXIoLS1ncmV5TGlnaHRlcik7Ci19Ci0KLUBt
ZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIHsKLSAgLnBsYWNlaG9sZGVyLmRpbW1l
ciB7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYmxhY2tEYXJrZXIpOwotICB9Ci19Ci0K
LS5wbGFjZWhvbGRlci5zbWFsbCB7Ci0gIG1pbi1oZWlnaHQ6IDEwMHB4OwotfQotCi0ucGxhY2Vo
b2xkZXIudGlueSB7Ci0gIG1pbi1oZWlnaHQ6IDUwcHg7Ci19Ci0KLS8qbG9hZGVyKi8KLS5sb2Fk
ZXIgewotICB0ZXh0LWFsaWduOiBjZW50ZXI7Ci19Ci0KLS5sb2FkZXI+LnRleHQgewotICB0ZXh0
LWFsaWduOiBjZW50ZXI7Ci19Ci0KLS5zcGlubmVyIHsKLSAgd2lkdGg6IHZhcigtLW1lZGl1bVNp
emUpOwotICBoZWlnaHQ6IHZhcigtLW1lZGl1bVNpemUpOwotICBib3JkZXI6IDRweCBzb2xpZCB2
YXIoLS1ncmV5TGlnaHQpOwotICBib3JkZXItdG9wOiA0cHggc29saWQgdmFyKC0tYmxhY2spOwot
ICBib3JkZXItcmFkaXVzOiA1MCU7Ci0gIGFuaW1hdGlvbjogc3BpbiAuNXMgbGluZWFyIGluZmlu
aXRlOwotICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Ci19Ci0KLS5zcGlubmVyLnRpbnkgewotICB3
aWR0aDogdmFyKC0tdGlueVNpemUpOwotICBoZWlnaHQ6IHZhcigtLXRpbnlTaXplKTsKLX0KLQot
LnNwaW5uZXIuc21hbGwgewotICB3aWR0aDogdmFyKC0tc21hbGxTaXplKTsKLSAgaGVpZ2h0OiB2
YXIoLS1zbWFsbFNpemUpOwotfQotCi0uc3Bpbm5lci5sYXJnZSB7Ci0gIHdpZHRoOiB2YXIoLS1s
YXJnZVNpemUpOwotICBoZWlnaHQ6IHZhcigtLWxhcmdlU2l6ZSk7Ci19Ci0KLS5zcGlubmVyLmh1
Z2UgewotICB3aWR0aDogdmFyKC0taHVnZVNpemUpOwotICBoZWlnaHQ6IHZhcigtLWh1Z2VTaXpl
KTsKLX0KLQotLnNwaW5uZXIuYmx1ZSB7Ci0gIGJvcmRlcjogNHB4IHNvbGlkIHZhcigtLWJsdWVM
aWdodGVzdCk7Ci0gIGJvcmRlci10b3A6IDRweCBzb2xpZCB2YXIoLS1ibHVlKTsKLX0KLQotLnNw
aW5uZXIuZ3JlZW4gewotICBib3JkZXI6IDRweCBzb2xpZCB2YXIoLS1ncmVlbkxpZ2h0ZXN0KTsK
LSAgYm9yZGVyLXRvcDogNHB4IHNvbGlkIHZhcigtLWdyZWVuKTsKLX0KLQotLnNwaW5uZXIucmVk
IHsKLSAgYm9yZGVyOiA0cHggc29saWQgdmFyKC0tcmVkTGlnaHRlc3QpOwotICBib3JkZXItdG9w
OiA0cHggc29saWQgdmFyKC0tcmVkKTsKLX0KLQotLnNwaW5uZXIub3JhbmdlIHsKLSAgYm9yZGVy
OiA0cHggc29saWQgdmFyKC0tb3JhbmdlTGlnaHRlc3QpOwotICBib3JkZXItdG9wOiA0cHggc29s
aWQgdmFyKC0tb3JhbmdlKTsKLX0KLQotLnNwaW5uZXIucHVycGxlIHsKLSAgYm9yZGVyOiA0cHgg
c29saWQgdmFyKC0tcHVycGxlTGlnaHRlc3QpOwotICBib3JkZXItdG9wOiA0cHggc29saWQgdmFy
KC0tcHVycGxlKTsKLX0KLQotCi0vKmJ1dHRvbiovCi0uYnV0dG9uIHsKLSAgZGlzcGxheTogaW5s
aW5lLWJsb2NrOwotICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ncmV5TGlnaHQpOwotICBmb250
LXNpemU6IGNhbGModmFyKC0tc21hbGxTaXplKSAtIDJweCk7Ci0gIGJhY2tncm91bmQ6IG5vbmU7
Ci0gIHBhZGRpbmc6IDRweCB2YXIoLS1mb3JtTGFiZWxQYWRkaW5nKTsKLSAgYm9yZGVyLXJhZGl1
czogNHB4OwotICBmb250LXdlaWdodDogdmFyKC0tZm9udFdlaWdodCk7Ci0gIHZlcnRpY2FsLWFs
aWduOiBib3R0b207Ci19Ci0KLS5idXR0b25bZGlzYWJsZWRdIHsKLSAgYm9yZGVyLWNvbG9yOiB2
YXIoLS1ncmV5TGlnaHRlc3QpOwotICBiYWNrZ3JvdW5kOiB2YXIoLS13aGl0ZSk7Ci0gIGNvbG9y
OiB2YXIoLS1ncmV5TGlnaHQpOwotfQotCi0uYnV0dG9uOmhvdmVyIHsKLSAgYm9yZGVyLWNvbG9y
OiB2YXIoLS1ncmV5RGFya2VyKTsKLX0KLQotLmJ1dHRvbltkaXNhYmxlZF06aG92ZXIgewotICBi
b3JkZXItY29sb3I6IHZhcigtLWdyZXlMaWdodGVzdCk7Ci0gIGJhY2tncm91bmQ6IHZhcigtLXdo
aXRlKTsKLSAgY29sb3I6IHZhcigtLWdyZXlMaWdodCk7Ci19Ci0KLS5idXR0b246YWN0aXZlIHsK
LSAgYm9yZGVyLWNvbG9yOiB2YXIoLS1ncmV5RGFyayk7Ci0gIGJhY2tncm91bmQ6IHZhcigtLWdy
ZXlMaWdodGVzdCk7Ci0gIGNvbG9yOiB2YXIoLS1ncmV5RGFyayk7Ci19Ci0KLS5idXR0b25bZGlz
YWJsZWRdOmFjdGl2ZSB7Ci0gIGJvcmRlci1jb2xvcjogdmFyKC0tZ3JleUxpZ2h0ZXN0KTsKLSAg
YmFja2dyb3VuZDogdmFyKC0td2hpdGUpOwotICBjb2xvcjogdmFyKC0tZ3JleUxpZ2h0KTsKLX0K
LQotLmJ1dHRvbi5wcmltYXJ5IHsKLSAgYm9yZGVyLWNvbG9yOiB2YXIoLS1ibHVlRGFyayk7Ci0g
IGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJsdWUpOwotICBjb2xvcjogdmFyKC0td2hpdGUpOwot
fQotCi0uYnV0dG9uW2Rpc2FibGVkXS5wcmltYXJ5IHsKLSAgYm9yZGVyLWNvbG9yOiB2YXIoLS1i
bHVlTGlnaHRlc3QpOwotICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1ibHVlTGlnaHRlcik7Ci0g
IGNvbG9yOiB2YXIoLS13aGl0ZSk7Ci19Ci0KLS5idXR0b24ucHJpbWFyeTpob3ZlciB7Ci0gIGJv
cmRlci1jb2xvcjogdmFyKC0tYmx1ZURhcmtlcik7Ci0gIGJhY2tncm91bmQtY29sb3I6IHZhcigt
LWJsdWVMaWdodCk7Ci19Ci0KLS5idXR0b25bZGlzYWJsZWRdLnByaW1hcnk6aG92ZXIgewotICBi
b3JkZXItY29sb3I6IHZhcigtLWJsdWVMaWdodGVzdCk7Ci0gIGJhY2tncm91bmQtY29sb3I6IHZh
cigtLWJsdWVMaWdodGVyKTsKLSAgY29sb3I6IHZhcigtLXdoaXRlKTsKLX0KLQotLmJ1dHRvbi5w
cmltYXJ5OmFjdGl2ZSB7Ci0gIGJvcmRlci1jb2xvcjogdmFyKC0tYmx1ZURhcmtlcik7Ci0gIGJh
Y2tncm91bmQtY29sb3I6IHZhcigtLWJsdWVEYXJrKTsKLX0KLQotLmJ1dHRvbltkaXNhYmxlZF0u
cHJpbWFyeTphY3RpdmUgewotICBib3JkZXItY29sb3I6IHZhcigtLWJsdWVMaWdodGVzdCk7Ci0g
IGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJsdWVMaWdodGVyKTsKLSAgY29sb3I6IHZhcigtLXdo
aXRlKTsKLX0KLQotLmJ1dHRvbi5kYW5nZXIgewotICBib3JkZXItY29sb3I6IHZhcigtLXJlZERh
cmspOwotICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1yZWQpOwotICBjb2xvcjogdmFyKC0td2hp
dGUpOwotfQotCi0uYnV0dG9uW2Rpc2FibGVkXS5kYW5nZXIgewotICBib3JkZXItY29sb3I6IHZh
cigtLXJlZExpZ2h0ZXN0KTsKLSAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcmVkTGlnaHRlcik7
Ci0gIGNvbG9yOiB2YXIoLS13aGl0ZSk7Ci19Ci0KLS5idXR0b24uZGFuZ2VyOmhvdmVyIHsKLSAg
Ym9yZGVyLWNvbG9yOiB2YXIoLS1yZWREYXJrZXIpOwotICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIo
LS1yZWRMaWdodCk7Ci19Ci0KLS5idXR0b25bZGlzYWJsZWRdLmRhbmdlcjpob3ZlciB7Ci0gIGJv
cmRlci1jb2xvcjogdmFyKC0tcmVkTGlnaHRlc3QpOwotICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIo
LS1yZWRMaWdodGVyKTsKLSAgY29sb3I6IHZhcigtLXdoaXRlKTsKLX0KLQotLmJ1dHRvbi5kYW5n
ZXI6YWN0aXZlIHsKLSAgYm9yZGVyLWNvbG9yOiB2YXIoLS1yZWREYXJrZXIpOwotICBiYWNrZ3Jv
dW5kLWNvbG9yOiB2YXIoLS1yZWREYXJrKTsKLX0KLQotLmJ1dHRvbltkaXNhYmxlZF0uZGFuZ2Vy
OmFjdGl2ZSB7Ci0gIGJvcmRlci1jb2xvcjogdmFyKC0tcmVkTGlnaHRlc3QpOwotICBiYWNrZ3Jv
dW5kLWNvbG9yOiB2YXIoLS1yZWRMaWdodGVyKTsKLSAgY29sb3I6IHZhcigtLXdoaXRlKTsKLX0K
LQotLmJ1dHRvbi50aW55IHsKLSAgZm9udC1zaXplOiB2YXIoLS10aW55U2l6ZSk7Ci0gIHBhZGRp
bmc6IDNweCA4cHg7Ci19Ci0KLS5idXR0b24ubWVkaXVtIHsKLSAgZm9udC1zaXplOiBjYWxjKHZh
cigtLW1lZGl1bVNpemUpIC0gMnB4KTsKLSAgcGFkZGluZzogNXB4IDE3cHg7Ci19Ci0KLS5idXR0
b24ubGFyZ2UgewotICBmb250LXNpemU6IGNhbGModmFyKC0tbGFyZ2VTaXplKSAtIDJweCk7Ci0g
IHBhZGRpbmc6IDdweCAxOXB4OwotfQotCi0uYnV0dG9uLmh1Z2UgewotICBmb250LXNpemU6IGNh
bGModmFyKC0taHVnZVNpemUpIC0gMnB4KTsKLSAgcGFkZGluZzogOXB4IDIxcHg7Ci19Ci0KLUBt
ZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIHsKLSAgLmJ1dHRvbiB7Ci0gICAgY29s
b3I6IHZhcigtLWdyZXkpOwotICB9Ci0KLSAgLmJ1dHRvbltkaXNhYmxlZF0gewotICAgIGNvbG9y
OiB2YXIoLS1ncmV5RGFya2VyKTsKLSAgICBib3JkZXItY29sb3I6IHZhcigtLWdyZXlEYXJrZXIp
OwotICAgIGJhY2tncm91bmQ6IG5vbmU7Ci0gIH0KLQotICAuYnV0dG9uW2Rpc2FibGVkXTpob3Zl
ciB7Ci0gICAgY29sb3I6IHZhcigtLWdyZXlEYXJrZXIpOwotICAgIGJvcmRlci1jb2xvcjogdmFy
KC0tZ3JleURhcmtlcik7Ci0gICAgYmFja2dyb3VuZDogbm9uZTsKLSAgfQotCi0gIC5idXR0b25b
ZGlzYWJsZWRdLnByaW1hcnkgewotICAgIGJvcmRlci1jb2xvcjogdmFyKC0tYmx1ZURhcmtlcik7
Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYmx1ZURhcmtlcik7Ci0gICAgY29sb3I6IHZh
cigtLWdyZXlEYXJrZXIpOwotICAgIG9wYWNpdHk6IDAuNzsKLSAgfQotCi0gIC5idXR0b25bZGlz
YWJsZWRdLnByaW1hcnk6aG92ZXIgewotICAgIGJvcmRlci1jb2xvcjogdmFyKC0tYmx1ZURhcmtl
cik7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYmx1ZURhcmtlcik7Ci0gICAgY29sb3I6
IHZhcigtLWdyZXlEYXJrZXIpOwotICAgIG9wYWNpdHk6IDAuNzsKLSAgfQotCi0gIC5idXR0b25b
ZGlzYWJsZWRdLmRhbmdlciB7Ci0gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1yZWREYXJrZXIpOwot
ICAgIGNvbG9yOiB2YXIoLS1ncmV5RGFya2VyKTsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIo
LS1yZWREYXJrZXIpOwotICAgIG9wYWNpdHk6IDAuNzsKLSAgfQotCi0gIC5idXR0b25bZGlzYWJs
ZWRdLmRhbmdlcjpob3ZlciB7Ci0gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1yZWREYXJrZXIpOwot
ICAgIGNvbG9yOiB2YXIoLS1ncmV5RGFya2VyKTsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIo
LS1yZWREYXJrZXIpOwotICAgIG9wYWNpdHk6IDAuNzsKLSAgfQotfQotCi0vKnN3aXRjaCovCi0u
c3dpdGNoIHsKLSAgcG9zaXRpb246IHJlbGF0aXZlOwotICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7
Ci0gIHdpZHRoOiBjYWxjKHZhcigtLXNtYWxsU2l6ZSkgKiAyKTsKLSAgaGVpZ2h0OiBjYWxjKHZh
cigtLXNtYWxsU2l6ZSkgKyA0cHgpOwotICBmbGV4OiBub25lOwotfQotCi0uc3dpdGNoIGlucHV0
IHsKLSAgb3BhY2l0eTogMDsKLSAgd2lkdGg6IDA7Ci0gIGhlaWdodDogMDsKLX0KLQotLnNsaWRl
ciB7Ci0gIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgY3Vyc29yOiBwb2ludGVyOwotICB0b3A6IDA7
Ci0gIGxlZnQ6IDA7Ci0gIHJpZ2h0OiAwOwotICBib3R0b206IDA7Ci0gIGJhY2tncm91bmQtY29s
b3I6IHZhcigtLXdoaXRlKTsKLSAgLXdlYmtpdC10cmFuc2l0aW9uOiAuNHM7Ci0gIHRyYW5zaXRp
b246IC40czsKLSAgYm9yZGVyLXJhZGl1czogMzRweDsKLSAgYm9yZGVyOiAxLjVweCBzb2xpZCB2
YXIoLS1ncmV5TGlnaHQpOwotICBwYWRkaW5nOiAwOwotICBtYXJnaW46IDA7Ci19Ci0KLS5zbGlk
ZXI6OmJlZm9yZSB7Ci0gIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgY29udGVudDogIiI7Ci0gIGhl
aWdodDogY2FsYyh2YXIoLS1zbWFsbFNpemUpICsgMXB4KTsKLSAgd2lkdGg6IGNhbGModmFyKC0t
c21hbGxTaXplKSArIDFweCk7Ci0gIGxlZnQ6IC0xcHg7Ci0gIGJvdHRvbTogLTAuMjVweDsKLSAg
YmFja2dyb3VuZC1jb2xvcjogdmFyKC0td2hpdGUpOwotICAtd2Via2l0LXRyYW5zaXRpb246IC40
czsKLSAgdHJhbnNpdGlvbjogLjRzOwotICBib3JkZXItcmFkaXVzOiA1MCU7Ci0gIGJvcmRlcjog
MXB4IHNvbGlkIHZhcigtLWdyZXlMaWdodCk7Ci0gIGJveC1zaGFkb3c6IDAuNXB4IDJweCA1cHgg
MHB4IHZhcigtLWdyZXkpOwotfQotCi1AbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJr
KSB7Ci0gIC5zbGlkZXIgewotICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJsYWNrKTsKLSAg
ICBib3JkZXI6IDEuNXB4IHNvbGlkIHZhcigtLWJsYWNrRGFyayk7Ci0gIH0KLQotICAuc2xpZGVy
OjpiZWZvcmUgewotICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJsYWNrKTsKLSAgICBib3Jk
ZXI6IDEuNXB4IHNvbGlkIHZhcigtLWJsYWNrRGFyayk7Ci0gICAgYm94LXNoYWRvdzogMC41cHgg
MnB4IDVweCAwcHggdmFyKC0tYmxhY2tEYXJrZXIpOwotICB9Ci19Ci0KLS5zd2l0Y2ggaW5wdXQ6
Y2hlY2tlZCArIC5zbGlkZXIgewotICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1ncmVlbik7Ci0g
IGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWdyZWVuKTsKLX0KLQotLnN3aXRjaCAgaW5wdXQ6Zm9j
dXMgKyAuc2xpZGVyIHsKLSAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tZ3JlZW4pOwotfQotCi0u
c3dpdGNoICBpbnB1dDpjaGVja2VkICsgLnNsaWRlcjpiZWZvcmUgewotICB0cmFuc2Zvcm06IHRy
YW5zbGF0ZVgoY2FsYyh2YXIoLS1zbWFsbFNpemUpIC0gNHB4KSk7Ci0gIGJvdHRvbTogLTAuNXB4
OwotfQotCi0KLS8qcG9wb3ZlciovCi0ucG9wb3ZlciB7Ci0gIHBvc2l0aW9uOiBhYnNvbHV0ZTsK
LSAgZGlzcGxheTogbm9uZTsKLX0KLQotLnBvcG92ZXI+LmNvbnRlbnR7Ci0gIG1heC13aWR0aDog
MjAwcHg7Ci0gIHBhZGRpbmc6IHZhcigtLXRpbnlTaXplKTsgCi0gIGZvbnQtc2l6ZTogdmFyKC0t
dGlueVNpemUpOwotICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1ibHVyQmFja2dyb3VuZENvbG9y
KTsKLSAgLXdlYmtpdC1iYWNrZHJvcC1maWx0ZXI6IGJsdXIoNXB4KSBicmlnaHRuZXNzKDEwMCUp
OwotICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoNXB4KSBicmlnaHRuZXNzKDEwMCUpOwotfQotCi0u
cG9wb3Zlci5kaXNwbGF5IHsKLSAgYm94LXNoYWRvdzogMHB4IDBweCA1cHggMXB4IHZhcigtLWdy
ZXkpOwotICBkaXNwbGF5OiBibG9jazsKLX0KLQotLnBvcG92ZXIgLmFycm93IHsKLSAgcG9zaXRp
b246IGFic29sdXRlOwotICB3aWR0aDogdmFyKC0tdGlueVNpemUpOyAKLSAgaGVpZ2h0OiB2YXIo
LS10aW55U2l6ZSk7Ci0gIGNvbnRlbnQ6ICcnOwotICBib3gtc2hhZG93OiAwcHggMHB4IDVweCAx
cHggdmFyKC0tYmxhY2spOwotICB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7Ci0gIGJhY2tncm91
bmQtY29sb3I6IHZhcigtLWJsdXJCYWNrZ3JvdW5kQ29sb3IpOwotICAtd2Via2l0LWJhY2tkcm9w
LWZpbHRlcjogYmx1cig1cHgpIGJyaWdodG5lc3MoMTAwJSk7Ci0gIGJhY2tkcm9wLWZpbHRlcjog
Ymx1cig1cHgpIGJyaWdodG5lc3MoMTAwJSk7Ci19Ci0KLQotLnBvcG92ZXIgLmFycm93LnBvaW50
LXRvcCB7Ci0gIHRvcDogY2FsYygwcHggLSB2YXIoLS10aW55U2l6ZSkgLyAyKTsKLX0KLQotLnBv
cG92ZXIgLmFycm93LnBvaW50LWJvdHRvbSB7Ci0gIGJvdHRvbTogY2FsYygwcHggLSB2YXIoLS10
aW55U2l6ZSkgLyAyKTsKLX0KLQotLnBvcG92ZXIgLmFycm93LnBvaW50LWxlZnQgewotICBsZWZ0
OiBjYWxjKDBweCAtIHZhcigtLXRpbnlTaXplKSAvIDIpOwotfQotCi0ucG9wb3ZlciAuYXJyb3cu
cG9pbnQtcmlnaHQgewotICByaWdodDogY2FsYygwcHggLSB2YXIoLS10aW55U2l6ZSkgLyAyKTsK
LX0KLQotCi1AbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSB7Ci0gIC5wb3BvdmVy
Pi5jb250ZW50IHsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1ibHVyQmFja2dyb3VuZENv
bG9yRGFyayk7Ci0gIH0KLQotICAucG9wb3Zlci5kaXNwbGF5IHsKLSAgICBib3gtc2hhZG93OiAw
cHggMHB4IDVweCAxcHggdmFyKC0tYmxhY2spOwotICB9Ci0KLSAgLnBvcG92ZXIgLmFycm93IHsK
LSAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1ibHVyQmFja2dyb3VuZENvbG9yRGFyayk7Ci0g
IH0KLX0KLQotCi0vKiBkcmF3ZXIgKi8KLS5kcmF3ZXIgewotICBwb3NpdGlvbjogZml4ZWQ7Ci0g
IGJvdHRvbTogMDsKLSAgbGVmdDogMDsKLSAgdHJhbnNpdGlvbjogaGVpZ2h0IC41czsKLSAgd2lk
dGg6IDEwMCU7Ci0gIGhlaWdodDogMCU7Ci0gIG92ZXJmbG93OiBhdXRvOwotICBib3JkZXItdG9w
OiAxcHggc29saWQgdmFyKC0tYmx1ckJhY2tncm91bmRDb2xvcik7Ci0gIGJhY2tncm91bmQtY29s
b3I6IHZhcigtLWJsdXJCYWNrZ3JvdW5kQ29sb3IpOwotICAtd2Via2l0LWJhY2tkcm9wLWZpbHRl
cjogYmx1cig1cHgpIGJyaWdodG5lc3MoODglKTsKLSAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDVw
eCkgYnJpZ2h0bmVzcyg4OCUpOwotICBib3gtc2l6aW5nOiBib3JkZXItYm94OwotICB6LWluZGV4
OiB2YXIoLS10b3BaSW5kZXgpOwotfQotCi0uZHJhd2VyLmRpc3BsYXkgewotICBtaW4taGVpZ2h0
OiAyNTBweDsKLSAgaGVpZ2h0OiAzMCU7Ci0gIGJveC1zaGFkb3c6IDBweCAwcHggNXB4IDFweCB2
YXIoLS1ncmV5KTsKLX0KLQotQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgewot
ICAuZHJhd2VyIHsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1ibHVyQmFja2dyb3VuZENv
bG9yRGFyayk7Ci0gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1ibHVyQmFja2dyb3VuZENvbG9yRGFy
ayk7Ci0gICAgLXdlYmtpdC1iYWNrZHJvcC1maWx0ZXI6IGJsdXIoNXB4KSBicmlnaHRuZXNzKDE1
MCUpOwotICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cig1cHgpIGJyaWdodG5lc3MoMTUwJSk7Ci0g
IH0KLQotICAuZHJhd2VyLmRpc3BsYXkgewotICAgIGJveC1zaGFkb3c6IDBweCAwcHggNXB4IDFw
eCB2YXIoLS1ibGFjayk7Ci0gIH0KLX0KLQotLmRyYXdlci5sZWZ0IHsKLSAgbGVmdDogMDsKLSAg
d2lkdGg6IDAlOwotICBoZWlnaHQ6IDEwMCU7Ci0gIHRyYW5zaXRpb246IHdpZHRoIC41czsKLSAg
Ym9yZGVyOiBub25lOwotICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCB2YXIoLS1ibHVyQmFja2dy
b3VuZENvbG9yKTsKLX0KLQotQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgewot
ICAuZHJhd2VyLmxlZnQgewotICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkIHZhcigtLWJsdXJC
YWNrZ3JvdW5kQ29sb3JEYXJrKTsKLSAgfQotfQotCi0uZHJhd2VyLmxlZnQuZGlzcGxheSB7Ci0g
IHdpZHRoOiA0NSU7Ci19Ci0KLS5kcmF3ZXIucmlnaHQgewotICByaWdodDogMDsKLSAgYm90dG9t
OiAwOwotICBsZWZ0OiBhdXRvOwotICB3aWR0aDogMCU7Ci0gIGhlaWdodDogMTAwJTsKLSAgdHJh
bnNpdGlvbjogd2lkdGggLjVzOwotICBib3JkZXI6IG5vbmU7Ci0gIGJvcmRlci1sZWZ0OiAxcHgg
c29saWQgdmFyKC0tYmx1ckJhY2tncm91bmRDb2xvcik7Ci19Ci0KLUBtZWRpYSAocHJlZmVycy1j
b2xvci1zY2hlbWU6IGRhcmspIHsKLSAgLmRyYXdlci5yaWdodCB7Ci0gICAgYm9yZGVyLWxlZnQ6
IDFweCBzb2xpZCB2YXIoLS1ibHVyQmFja2dyb3VuZENvbG9yRGFyayk7Ci0gIH0KLX0KLQotLmRy
YXdlci5yaWdodC5kaXNwbGF5IHsKLSAgd2lkdGg6IDQ1JTsKLX0KLQotLmRyYXdlci5sZWZ0LnVu
ZGVyLXRvcGJhciwgLmRyYXdlci5yaWdodC51bmRlci10b3BiYXIgewotICBoZWlnaHQ6IGNhbGMo
MTAwJSAtIDEycHggKiAyICAtIHZhcigtLWxhcmdlU2l6ZSkgKiAxLjMpOwotfQotCi0uZHJhd2Vy
LmxlZnQudW5kZXItdG9wYmFyLXdpdGgtYWN0aW9ucywgLmRyYXdlci5yaWdodC51bmRlci10b3Bi
YXItd2l0aC1hY3Rpb25zIHsKLSAgaGVpZ2h0OiBjYWxjKDEwMCUgLSAxMnB4ICogMiAgLSB2YXIo
LS1sYXJnZVNpemUpICogMS4zIC0gdmFyKC0tc21hbGxTaXplKSAqIDEuMyAtIDEycHggKiAyICk7
Ci19Ci0KLUBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDYwMHB4KSB7Ci0gIC5kcmF3ZXIu
bGVmdC5kaXNwbGF5LCAuZHJhd2VyLnJpZ2h0LmRpc3BsYXkgewotICAgIHdpZHRoOiAyMCU7Ci0g
IH0KLQotICAuZHJhd2VyLmxlZnQudW5kZXItdG9wYmFyLXdpdGgtYWN0aW9ucywgLmRyYXdlci5y
aWdodC51bmRlci10b3BiYXItd2l0aC1hY3Rpb25zIHsKLSAgICBoZWlnaHQ6IGNhbGMoMTAwJSAt
IDEycHggKiAyICAtIHZhcigtLWxhcmdlU2l6ZSkgKiAxLjMpOwotICB9Ci19Ci0KLS5kcmF3ZXIg
LmhlYWRlciB7Ci0gIGJvcmRlcjogbm9uZTsKLSAgbWFyZ2luLWJvdHRvbTogNXB4OwotfQotCi0u
ZHJhd2VyIC5oZWFkZXI+LnRpdGxlLnNtYWxsIHsKLSAgZm9udC1zaXplOiB2YXIoLS1zbWFsbFNp
emUpOwotICBwYWRkaW5nLWxlZnQ6IDA7Ci19Ci0KLS5kcmF3ZXIgLmJhZGdlIHsKLSAgYm9yZGVy
LWNvbG9yOiB2YXIoLS1ncmV5TGlnaHQpOwotICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1ibHVy
QmFja2dyb3VuZENvbG9yKTsKLSAgLXdlYmtpdC1iYWNrZHJvcC1maWx0ZXI6IGJsdXIoMC41cHgp
OwotfQotCi0uZHJhd2VyIC5jaGlwIHsKLSAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYmx1ckJh
Y2tncm91bmRDb2xvcik7Ci0gIC13ZWJraXQtYmFja2Ryb3AtZmlsdGVyOiBibHVyKDAuNXB4KTsK
LX0KLQotLmRyYXdlciBwcmUgewotICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1ibHVyQmFja2dy
b3VuZENvbG9yKTsKLSAgLXdlYmtpdC1iYWNrZHJvcC1maWx0ZXI6IGJsdXIoMC41cHgpOwotfQot
Ci0uZHJhd2VyIC5iYWRnZS5hY3RpdmUgewotICBib3JkZXItY29sb3I6IHZhcigtLWJsdWVMaWdo
dCk7Ci19Ci0KLUBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIHsKLSAgLmRyYXdl
ciAuYmFkZ2UgewotICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJsdXJCYWNrZ3JvdW5kQ29s
b3JEYXJrKTsKLSAgICAtd2Via2l0LWJhY2tkcm9wLWZpbHRlcjogYmx1cig1cHgpIGJyaWdodG5l
c3MoMTUwJSk7Ci0gICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDVweCkgYnJpZ2h0bmVzcygxNTAl
KTsKLSAgfQotCi0gIC5kcmF3ZXIgLmNoaXAgewotICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigt
LWJsdXJCYWNrZ3JvdW5kQ29sb3JEYXJrKTsKLSAgICAtd2Via2l0LWJhY2tkcm9wLWZpbHRlcjog
Ymx1cig1cHgpIGJyaWdodG5lc3MoMTUwJSk7Ci0gICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDVw
eCkgYnJpZ2h0bmVzcygxNTAlKTsKLSAgfQotCi0gIC5kcmF3ZXIgcHJlIHsKLSAgICBiYWNrZ3Jv
dW5kLWNvbG9yOiB2YXIoLS1ibHVyQmFja2dyb3VuZENvbG9yRGFyayk7Ci0gICAgLXdlYmtpdC1i
YWNrZHJvcC1maWx0ZXI6IGJsdXIoNXB4KSBicmlnaHRuZXNzKDE1MCUpOwotICAgIGJhY2tkcm9w
LWZpbHRlcjogYmx1cig1cHgpIGJyaWdodG5lc3MoMTUwJSk7Ci0gIH0KLX0KLQotLmRyYXdlcj4u
Y2xvc2UtaGVhZGVyIHsKLSAgd2lkdGg6IDEwMCU7Ci0gIGRpc3BsYXk6IGZsZXg7Ci0gIHBvc2l0
aW9uOiBmaXhlZDsKLSAgdGV4dC1hbGlnbjogY2VudGVyOwotfQotCi0uZHJhd2VyPi5jbG9zZS1o
ZWFkZXI+Lmxpc3QgewotICB3aWR0aDogMTAwJTsKLSAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsK
LSAgaGVpZ2h0OiAyMHB4OwotICBwYWRkaW5nOiAwOwotICBtYXJnaW46IDA7Ci19Ci0KLS5kcmF3
ZXI+LmNsb3NlLWhlYWRlcj4ubGlzdD4uaXRlbSB7Ci0gIHBhZGRpbmc6IDA7Ci0gIG1hcmdpbjog
MDsKLSAgdmVydGljYWwtYWxpZ246IGNlbnRlcjsKLX0KLQotLmRyYXdlcj4uY2xvc2UtaGVhZGVy
Ky5jb250ZW50IHsKLSAgbWFyZ2luLXRvcDogMjBweDsKLSAgaGVpZ2h0OiBjYWxjKDEwMCUgLSAy
MHB4KTsKLX0KLQotLyogVGFiICovCi0udGFicyB7Ci0gIHRleHQtYWxpZ246IGNlbnRlcjsKLSAg
ZGlzcGxheTogZmxleDsKLSAgd2lkdGg6IDEwMCU7Ci0gIGJvcmRlci1ib3R0b206IDFweCBzb2xp
ZCB2YXIoLS1ncmV5TGlnaHQpOwotICBtYXJnaW4tYm90dG9tOiAxNXB4OwotfQotCi0udGFicyAu
dGFiOmZpcnN0LWNoaWxkIHsKLSAgcGFkZGluZy1sZWZ0OiAwcHg7Ci19Ci0KLS50YWJzIC50aXRs
ZSB7Ci0gIGNvbG9yOiB2YXIoLS1ncmV5RGFya2VyKTsKLSAgZm9udC1zaXplOiBjYWxjKHZhcigt
LXNtYWxsU2l6ZSkgKyAycHgpOwotfQotCi0udGFicyAudGFiIHsKLSAgcGFkZGluZy1sZWZ0OiA2
MHB4OwotfQotCi0udGFicyAudGFiLmFjdGl2ZSAubGluayB7Ci0gIGJvcmRlci1ib3R0b206IDFw
eCBzb2xpZCB2YXIoLS1ncmV5RGFya2VyKTsKLX0KLQotLnRhYnMgLnRhYiAubGluayB7Ci0gIHBh
ZGRpbmctdG9wOiAycHg7Ci0gIHBhZGRpbmctYm90dG9tOiA0cHg7Ci0gIGRpc3BsYXk6IGJsb2Nr
OwotICBmb250LXNpemU6IGNhbGModmFyKC0tc21hbGxTaXplKSAtIDJweCk7Ci19Ci0KLS50YWJz
IC50YWIgYS5saW5rIHsKLSAgY29sb3I6IHZhcigtLWdyZXlEYXJrZXIpOwotICBjdXJzb3I6IHBv
aW50ZXI7Ci19Ci0KLS50YWJzIC50YWIgYS5saW5rOmhvdmVyIHsKLSAgY29sb3I6IHZhcigtLWxp
bmtDb2xvcik7Ci0gIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKLX0KLQotQG1lZGlhIChwcmVmZXJz
LWNvbG9yLXNjaGVtZTogZGFyaykgewotICAudGFicyAudGl0bGUgewotICAgIGNvbG9yOiB2YXIo
LS1ncmV5KTsKLSAgICBmb250LXNpemU6IGNhbGModmFyKC0tc21hbGxTaXplKSArIDJweCk7Ci0g
IH0KLQotICAudGFicyAudGFiLmFjdGl2ZSAubGluayB7Ci0gICAgYm9yZGVyLWJvdHRvbTogMXB4
IHNvbGlkIHZhcigtLWdyZXkpOwotICB9Ci0KLSAgLnRhYnMgLnRhYiBhLmxpbmsgewotICAgIGNv
bG9yOiB2YXIoLS1ncmV5KTsKLSAgfQotfQotCi1hLmRpc2FibGVkIHsKLSAgY29sb3I6IHZhcigt
LWdyZXkpOwotICBwb2ludGVyLWV2ZW50czogbm9uZTsgCi19Ci0KLUBtZWRpYSBzY3JlZW4gYW5k
IChtaW4td2lkdGg6IDYwMHB4KSB7Ci0gIC5zaWRlYmFyIHsKLSAgICBkaXNwbGF5OiBibG9jazsK
LSAgICB3aWR0aDogMjk5cHg7Ci0gICAgbGVmdDogMDsKLSAgICByaWdodDogdW5zZXQ7Ci0gIH0K
LSAgLnNpZGViYXIubGVmdC5oaWRkZW4gewotICAgIGRpc3BsYXk6IGJsb2NrOwotICAgIGxlZnQ6
IC0yNDlweDsKLSAgfQotICAuc2lkZWJhci5yaWdodC5oaWRkZW4gewotICAgIGRpc3BsYXk6IGJs
b2NrOwotICAgIHJpZ2h0OiAtMjQ5cHg7Ci0gIH0KLSAgLnNpZGViYXIudW5kZXItdG9wYmFyLXdp
dGgtYWN0aW9ucyB7Ci0gICAgaGVpZ2h0OiBjYWxjKDEwMCUgLSAxMnB4ICogMiAgLSB2YXIoLS1s
YXJnZVNpemUpICogMS4zKTsKLSAgICBib3R0b206IDA7Ci0gIH0KLQotICAubWFpbiB7Ci0gICAg
bWFyZ2luLWxlZnQ6IDI5OXB4OwotICAgIHdpZHRoOiBjYWxjKDEwMCUgLSAyOTlweCk7Ci0gIH0K
LQotICAubWFpbi5yaWdodC1zaWRlYmFyIHsKLSAgICBtYXJnaW4tbGVmdDogMHB4OwotICAgIG1h
cmdpbi1yaWdodDogMjk5cHg7Ci0gIH0KLSAgLm1haW4ubGVmdC1zaWRlYmFyLmhpZGRlbiB7Ci0g
ICAgbWFyZ2luLWxlZnQ6IDUwcHg7Ci0gICAgd2lkdGg6IGNhbGMoMTAwJSAtIDUwcHgpOwotICB9
Ci0gIC5tYWluLnJpZ2h0LXNpZGViYXIuaGlkZGVuIHsKLSAgICBtYXJnaW4tbGVmdDogMDsKLSAg
ICBtYXJnaW4tcmlnaHQ6IDUwcHg7Ci0gICAgd2lkdGg6IGNhbGMoMTAwJSAtIDUwcHgpOwotICB9
Ci0KLSAgLm1haW4udW5kZXItdG9wYmFyLXdpdGgtYWN0aW9ucyB7Ci0gICAgbWFyZ2luLXRvcDog
Y2FsYygxMnB4ICogMiAgKyB2YXIoLS1sYXJnZVNpemUpICogMS4zKTsKLSAgfQotfQotCi1AbWVk
aWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA3NjhweCkgewotICAuc2lkZWJhciB7Ci0gICAgZGlz
cGxheTogYmxvY2s7Ci0gICAgd2lkdGg6IDMxMHB4OwotICAgIGxlZnQ6IDA7Ci0gICAgcmlnaHQ6
IHVuc2V0OwotICB9Ci0gIC5zaWRlYmFyLmxlZnQuaGlkZGVuIHsKLSAgICBkaXNwbGF5OiBibG9j
azsKLSAgICBsZWZ0OiAtMjYwcHg7Ci0gIH0KLSAgLnNpZGViYXIucmlnaHQuaGlkZGVuIHsKLSAg
ICBkaXNwbGF5OiBibG9jazsKLSAgICByaWdodDogLTI2MHB4OwotICB9Ci0gIC5zaWRlYmFyLnVu
ZGVyLXRvcGJhci13aXRoLWFjdGlvbnMgewotICAgIGhlaWdodDogY2FsYygxMDAlIC0gMTJweCAq
IDIgIC0gdmFyKC0tbGFyZ2VTaXplKSAqIDEuMyk7Ci0gICAgYm90dG9tOiAwOwotICB9Ci0KLSAg
Lm1vYmlsZS1zaWRlYmFyLWNvbnRyb2wuZGlzcGxheSB7Ci0gICAgZGlzcGxheTogbm9uZTsKLSAg
fQotCi0gIC5tYWluIHsKLSAgICBtYXJnaW4tbGVmdDogMzEwcHg7Ci0gICAgd2lkdGg6IGNhbGMo
MTAwJSAtIDMxMHB4KTsKLSAgfQotCi0gIC5tYWluLnJpZ2h0LXNpZGViYXIgewotICAgIG1hcmdp
bi1sZWZ0OiAwcHg7Ci0gICAgbWFyZ2luLXJpZ2h0OiAzMTBweDsKLSAgfQotfQotCi0vKiB0aW1l
bGluZSAqLwotLnRpbWVsaW5lIHsKLSAgZGlzcGxheTogZmxleDsKLSAgZmxleC1kaXJlY3Rpb246
IHJvdzsKLSAgcGFkZGluZzogMDsKLSAgbWFyZ2luOiAycHggMDsKLX0KLQotLnRpbWVsaW5lLm5v
LWJvcmRlciB7Ci0gIGJvcmRlcjogbm9uZTsKLX0KLQotLnRpbWVsaW5lPi5jb250ZW50IHsKLSAg
b3ZlcmZsb3cteDogYXV0bzsKLSAgb3ZlcmZsb3cteTogaGlkZGVuOwotICBwYWRkaW5nOiAwOwot
ICBtYXJnaW46IDA7Ci0gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7Ci0gIGZsZXg6IGF1dG87Ci19
Ci0KLS50aW1lbGluZT4uaGVhZGVyIHsKLSAgbWFyZ2luOiAwOwotICB0ZXh0LWFsaWduOiByaWdo
dDsKLSAgYm9yZGVyOiBub25lOwotICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwotICBkaXNwbGF5
OiBibG9jazsKLSAgcGFkZGluZy1yaWdodDogMTBweDsKLSAgb3ZlcmZsb3c6IGF1dG87Ci0gIHBv
c2l0aW9uOiByZWxhdGl2ZTsKLSAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXJD
b2xvcklubGluZUVsZW1lbnQpOwotICBmbGV4OiBub25lOwotfQotCi0udGltZWxpbmU+LmhlYWRl
ciAuc2VyaWVzIHsKLSAgbWFyZ2luOiA4cHggMDsKLSAgbWFyZ2luLWxlZnQ6IDVweDsKLSAgZGlz
cGxheTogYmxvY2s7Ci0gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7Ci0gIGZvbnQtc2l6ZTogdmFy
KC0tdGlueVNpemUpOwotICBsaW5lLWhlaWdodDogdmFyKC0tbWVkaXVtU2l6ZSk7Ci0gIHdoaXRl
LXNwYWNlOiBub3dyYXA7Ci19Ci0udGltZWxpbmU+LmhlYWRlciAuc2VyaWVzICogewotICBsaW5l
LWhlaWdodDogdmFyKC0tbWVkaXVtU2l6ZSk7Ci0gIGZvbnQtc2l6ZTogdmFyKC0tdGlueVNpemUp
OwotfQotLnRpbWVsaW5lPi5oZWFkZXIgLnNlcmllcyBhIHsKLSAgbGluZS1oZWlnaHQ6IHZhcigt
LW1lZGl1bVNpemUpOwotfQotCi0udGltZWxpbmU+LmNvbnRlbnQgLnNlcmllcyB7Ci0gIGRpc3Bs
YXk6IGZsZXg7Ci0gIHdoaXRlLXNwYWNlOiBub3dyYXA7Ci0gIG1hcmdpbjogOHB4IDA7Ci0gIGhl
aWdodDogdmFyKC0tbWVkaXVtU2l6ZSk7Ci0gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7Ci19Ci0K
LS50aW1lbGluZT4uY29udGVudCAuZG90IHsKLSAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKLSAg
bWFyZ2luOiAwIGNhbGModmFyKC0tdGlueVNpemUpIC8gMiApOwotICB3aWR0aDogdmFyKC0tc21h
bGxTaXplKTsKLSAgaGVpZ2h0OiB2YXIoLS1zbWFsbFNpemUpOwotICBib3JkZXItcmFkaXVzOiB2
YXIoLS1zbWFsbFNpemUpOwotICBkaXNwbGF5OiBmbGV4OwotICBhbGlnbi1pdGVtczogY2VudGVy
OwotICBwb3NpdGlvbjogcmVsYXRpdmU7Ci19Ci0KLS50aW1lbGluZT4uY29udGVudCAuZG90LmNs
aWNrYWJsZSB7Ci0gIGJvcmRlcjogbm9uZTsKLX0KLQotLnRpbWVsaW5lPi5jb250ZW50IC5kb3Qu
Y2xpY2thYmxlOmhvdmVyIHsKLSAgYm9yZGVyOiBub25lOwotfQotCi0udGltZWxpbmU+LmNvbnRl
bnQgLmRvdC5jbGlja2FibGU6YWN0aXZlIHsKLSAgYm9yZGVyOiBub25lOwotfQotCi0udGltZWxp
bmU+LmNvbnRlbnQgLmRvdCAudGFnIHsKLSAgZm9udC1zaXplOiBjYWxjKHZhcigtLXRpbnlTaXpl
KSAqIDAuOCk7Ci0gIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgbGVmdDogY2FsYygwcHggLSB2YXIo
LS10aW55U2l6ZSkgLyAyKTsKLSAgdG9wOiBjYWxjKHZhcigtLXNtYWxsU2l6ZSkpOwotICBoZWln
aHQ6IHZhcigtLXRpbnlTaXplKTsKLSAgbGluZS1oZWlnaHQ6IDE7Ci0gIHRleHQtYWxpZ246IGNl
bnRlcjsKLSAgd2lkdGg6IGNhbGModmFyKC0tc21hbGxTaXplKSArIHZhcigtLXRpbnlTaXplKSk7
Ci0gIHBhZGRpbmctdG9wOiAycHg7Ci19Ci0KLS50aW1lbGluZT4uY29udGVudCAuZG90OjpiZWZv
cmUsIC50aW1lbGluZT4uY29udGVudCAuZG90OjphZnRlciB7Ci0gIGNvbnRlbnQ6ICIiOwotICBo
ZWlnaHQ6IDFweDsKLSAgYmFja2dyb3VuZDogdmFyKC0tYm9yZGVyQ29sb3JJbmxpbmVFbGVtZW50
KTsKLSAgd2lkdGg6IGNhbGModmFyKC0tdGlueVNpemUpIC8gMiApOwotICBkaXNwbGF5OiBpbmxp
bmUtYmxvY2s7Ci0gIGZsZXg6IG5vbmU7Ci19Ci0KLS50aW1lbGluZT4uY29udGVudCAuZG90Ojpi
ZWZvcmUgewotICBtYXJnaW4tbGVmdDogY2FsYygwcHggLSB2YXIoLS10aW55U2l6ZSkgLyAyKTsK
LX0KLQotLnRpbWVsaW5lPi5jb250ZW50IC5kb3Q6OmFmdGVyIHsKLSAgbWFyZ2luLWxlZnQ6IGNh
bGModmFyKC0tc21hbGxTaXplKSk7Ci19Ci0KLS50aW1lbGluZT4uY29udGVudCAuZG90LmJsaW5r
OjpiZWZvcmUgewotICBhbmltYXRpb246IG5vbmU7Ci19Ci0KLS50aW1lbGluZT4uY29udGVudCAu
ZG90LmJsaW5rOjphZnRlciB7Ci0gIGFuaW1hdGlvbjogbm9uZTsKLX0KLQotLnRpbWVsaW5lPi5j
b250ZW50IC5kb3QuZW1wdHkgewotICBoZWlnaHQ6IDFweDsKLSAgbWFyZ2luLXRvcDogY2FsYygo
dmFyKC0tc21hbGxTaXplKSAtIDFweCkgLyAyKTsKLSAgYmFja2dyb3VuZDogdmFyKC0tZ3JleSk7
Ci19Ci0KLS50aW1lbGluZT4uY29udGVudCAuZG90LmVtcHR5OjpiZWZvcmUgewotICB2ZXJ0aWNh
bC1hbGlnbjogdG9wOwotfQotCi0udGltZWxpbmU+LmNvbnRlbnQgLmRvdC5lbXB0eTo6YWZ0ZXIg
ewotICB2ZXJ0aWNhbC1hbGlnbjogdG9wOwotfQotCi0udGltZWxpbmU+LmNvbnRlbnQgLngtYXhp
cyB7Ci0gIGRpc3BsYXk6IGZsZXg7Ci0gIG1hcmdpbjogOHB4IDA7Ci0gIG1pbi1oZWlnaHQ6IGNh
bGModmFyKC0tc21hbGxTaXplKSAqIDQpOwotfQotCi0udGltZWxpbmU+LmNvbnRlbnQ+LngtYXhp
cyAuc2NhbGUgewotICBmb250LXNpemU6IHZhcigtLXNtYWxsU2l6ZSk7Ci0gIHdpZHRoOiBjYWxj
KHZhcigtLXNtYWxsU2l6ZSkgKyB2YXIoLS10aW55U2l6ZSkpOwotICB0ZXh0LWFsaWduOiBjZW50
ZXI7Ci0gIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXJDb2xvcklubGluZUVsZW1l
bnQpOwotICBmbGV4OiBub25lOwotICBwb3NpdGlvbjogcmVsYXRpdmU7Ci19Ci0KLS50aW1lbGlu
ZT4uY29udGVudD4ueC1heGlzIC5zY2FsZS5ncm91cC0yIHsKLSAgd2lkdGg6IGNhbGMoKHZhcigt
LXNtYWxsU2l6ZSkgKyB2YXIoLS10aW55U2l6ZSkpICogMik7Ci19Ci0KLS50aW1lbGluZT4uY29u
dGVudD4ueC1heGlzIC5zY2FsZS5ncm91cC0zIHsKLSAgd2lkdGg6IGNhbGMoKHZhcigtLXNtYWxs
U2l6ZSkgKyB2YXIoLS10aW55U2l6ZSkpICogMyk7Ci19Ci0KLS50aW1lbGluZT4uY29udGVudD4u
eC1heGlzIC5zY2FsZS5ncm91cC00IHsKLSAgd2lkdGg6IGNhbGMoKHZhcigtLXNtYWxsU2l6ZSkg
KyB2YXIoLS10aW55U2l6ZSkpICogNCk7Ci19Ci0KLS50aW1lbGluZT4uY29udGVudD4ueC1heGlz
IC5zY2FsZS5ncm91cC01IHsKLSAgd2lkdGg6IGNhbGMoKHZhcigtLXNtYWxsU2l6ZSkgKyB2YXIo
LS10aW55U2l6ZSkpICogNSk7Ci19Ci0KLS50aW1lbGluZT4uY29udGVudD4ueC1heGlzIC5zY2Fs
ZS5ncm91cC02IHsKLSAgd2lkdGg6IGNhbGMoKHZhcigtLXNtYWxsU2l6ZSkgKyB2YXIoLS10aW55
U2l6ZSkpICogNik7Ci19Ci0KLS50aW1lbGluZT4uY29udGVudD4ueC1heGlzIC5zY2FsZS5ncm91
cC03IHsKLSAgd2lkdGg6IGNhbGMoKHZhcigtLXNtYWxsU2l6ZSkgKyB2YXIoLS10aW55U2l6ZSkp
ICogNyk7Ci19Ci0KLS50aW1lbGluZT4uY29udGVudD4ueC1heGlzIC5zY2FsZS5ncm91cC04IHsK
LSAgd2lkdGg6IGNhbGMoKHZhcigtLXNtYWxsU2l6ZSkgKyB2YXIoLS10aW55U2l6ZSkpICogOCk7
Ci19Ci0KLS50aW1lbGluZT4uY29udGVudD4ueC1heGlzIC5zY2FsZS5ncm91cC05IHsKLSAgd2lk
dGg6IGNhbGMoKHZhcigtLXNtYWxsU2l6ZSkgKyB2YXIoLS10aW55U2l6ZSkpICogOSk7Ci19Ci0K
LS50aW1lbGluZT4uY29udGVudD4ueC1heGlzIC5zY2FsZS5ncm91cC0xMCB7Ci0gIHdpZHRoOiBj
YWxjKCh2YXIoLS1zbWFsbFNpemUpICsgdmFyKC0tdGlueVNpemUpKSAqIDEwKTsKLX0KLQotLnRp
bWVsaW5lPi5jb250ZW50Pi54LWF4aXMgLnNjYWxlLmdyb3VwLTExIHsKLSAgd2lkdGg6IGNhbGMo
KHZhcigtLXNtYWxsU2l6ZSkgKyB2YXIoLS10aW55U2l6ZSkpICogMTEpOwotfQotCi0udGltZWxp
bmU+LmNvbnRlbnQ+LngtYXhpcyAuc2NhbGUuZ3JvdXAtMTIgewotICB3aWR0aDogY2FsYygodmFy
KC0tc21hbGxTaXplKSArIHZhcigtLXRpbnlTaXplKSkgKiAxMik7Ci19Ci0KLS50aW1lbGluZT4u
Y29udGVudD4ueC1heGlzIC5zY2FsZS5ncm91cC0xMyB7Ci0gIHdpZHRoOiBjYWxjKCh2YXIoLS1z
bWFsbFNpemUpICsgdmFyKC0tdGlueVNpemUpKSAqIDEzKTsKLX0KLQotLnRpbWVsaW5lPi5jb250
ZW50Pi54LWF4aXMgLnNjYWxlLmdyb3VwLTE0IHsKLSAgd2lkdGg6IGNhbGMoKHZhcigtLXNtYWxs
U2l6ZSkgKyB2YXIoLS10aW55U2l6ZSkpICogMTQpOwotfQotCi0udGltZWxpbmU+LmNvbnRlbnQ+
LngtYXhpcyAuc2NhbGUuZ3JvdXAtMTUgewotICB3aWR0aDogY2FsYygodmFyKC0tc21hbGxTaXpl
KSArIHZhcigtLXRpbnlTaXplKSkgKiAxNSk7Ci19Ci0KLS50aW1lbGluZT4uY29udGVudD4ueC1h
eGlzIC5zY2FsZS5ncm91cC0xNiB7Ci0gIHdpZHRoOiBjYWxjKCh2YXIoLS1zbWFsbFNpemUpICsg
dmFyKC0tdGlueVNpemUpKSAqIDE2KTsKLX0KLQotLnRpbWVsaW5lPi5jb250ZW50Pi54LWF4aXMg
LnNjYWxlLmdyb3VwLTE3IHsKLSAgd2lkdGg6IGNhbGMoKHZhcigtLXNtYWxsU2l6ZSkgKyB2YXIo
LS10aW55U2l6ZSkpICogMTcpOwotfQotCi0udGltZWxpbmU+LmNvbnRlbnQ+LngtYXhpcyAuc2Nh
bGUuZ3JvdXAtMTggewotICB3aWR0aDogY2FsYygodmFyKC0tc21hbGxTaXplKSArIHZhcigtLXRp
bnlTaXplKSkgKiAxOCk7Ci19Ci0KLS50aW1lbGluZT4uY29udGVudD4ueC1heGlzIC5zY2FsZS5n
cm91cC0xOSB7Ci0gIHdpZHRoOiBjYWxjKCh2YXIoLS1zbWFsbFNpemUpICsgdmFyKC0tdGlueVNp
emUpKSAqIDE5KTsKLX0KLQotLnRpbWVsaW5lPi5jb250ZW50Pi54LWF4aXMgLnNjYWxlLmdyb3Vw
LTIwIHsKLSAgd2lkdGg6IGNhbGMoKHZhcigtLXNtYWxsU2l6ZSkgKyB2YXIoLS10aW55U2l6ZSkp
ICogMjApOwotfQotCi0udGltZWxpbmU+LmNvbnRlbnQ+LngtYXhpcyAuc2NhbGVbY2xhc3MqPSJn
cm91cC0iXSB7Ci0gIGJvcmRlci1jb2xvcjogdmFyKC0tYmxhY2spOwotfQotCi0udGltZWxpbmU+
LmNvbnRlbnQ+LngtYXhpcyAuc2NhbGUgLmxpbmUgewotICB3aWR0aDogMnB4OwotICBoZWlnaHQ6
IHZhcigtLXRpbnlTaXplKTsKLSAgbWFyZ2luOiBhdXRvOwotICBkaXNwbGF5OiBibG9jazsKLSAg
YmFja2dyb3VuZDogdmFyKC0tZ3JleSk7Ci19Ci0KLS50aW1lbGluZT4uY29udGVudD4ueC1heGlz
IC5zY2FsZSAudGV4dCB7Ci0gIHBvc2l0aW9uOiByZWxhdGl2ZTsKLSAgbGVmdDogY2FsYyh2YXIo
LS10aW55U2l6ZSkgLyAyKTsKLSAgZm9udC1zaXplOiB2YXIoLS10aW55U2l6ZSk7Ci0gIG1pbi1o
ZWlnaHQ6IGNhbGModmFyKC0tc21hbGxTaXplKSAqIDQpOwotICBkaXNwbGF5OiBibG9jazsKLSAg
LXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiAxMCUgMjUlOwotICAtbW96LXRyYW5zZm9ybS1vcmln
aW46IDEwJSAyNSU7Ci0gIC1tcy10cmFuc2Zvcm0tb3JpZ2luOiAxMCUgMjUlOwotICAtby10cmFu
c2Zvcm0tb3JpZ2luOiAxMCUgMjUlOwotICB0cmFuc2Zvcm0tb3JpZ2luOiAxMCUgMjUlOwotICAt
d2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDYwZGVnKTsKLSAgLW1vei10cmFuc2Zvcm06IHJvdGF0
ZSg2MGRlZyk7Ci0gIC1vLXRyYW5zZm9ybTogcm90YXRlKDYwZGVnKTsKLSAgLW1zLXRyYW5zZm9y
bTogcm90YXRlKDYwZGVnKTsKLSAgdHJhbnNmb3JtOiByb3RhdGUoNjBkZWcpOwotICB3aGl0ZS1z
cGFjZTogbm93cmFwOwotfQotCi0udGltZWxpbmU+LmNvbnRlbnQ+LngtYXhpcy5zY2FsZS05MGRl
ZyAuc2NhbGUgLnRleHQgewotICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IDAlIDI1JTsKLSAg
LW1vei10cmFuc2Zvcm0tb3JpZ2luOiAwJSAyNSU7Ci0gIC1tcy10cmFuc2Zvcm0tb3JpZ2luOiAw
JSAyNSU7Ci0gIC1vLXRyYW5zZm9ybS1vcmlnaW46IDAlIDI1JTsKLSAgdHJhbnNmb3JtLW9yaWdp
bjogMCUgMjUlOwotICB0b3A6IC0xMnB4OwotICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDkw
ZGVnKTsKLSAgLW1vei10cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7Ci0gIC1vLXRyYW5zZm9ybTog
cm90YXRlKDkwZGVnKTsKLSAgLW1zLXRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTsKLSAgdHJhbnNm
b3JtOiByb3RhdGUoOTBkZWcpOwotfQotCi0udGltZWxpbmU+LmNvbnRlbnQ+LngtYXhpcyAuc2Nh
bGVbY2xhc3MqPSJncm91cC0iXSAuYm9yZGVyLWxpbmUtbGVmdCB7Ci0gIHBvc2l0aW9uOiBhYnNv
bHV0ZTsKLSAgdG9wOiBjYWxjKDBweCAtIHZhcigtLXRpbnlTaXplKSAvIDIpOwotICBsZWZ0OiAw
OwotICBoZWlnaHQ6IGNhbGModmFyKC0tdGlueVNpemUpIC8gMik7Ci0gIHdpZHRoOiAycHg7Ci0g
IGJhY2tncm91bmQ6IHZhcigtLWJsYWNrKTsKLX0KLQotLnRpbWVsaW5lPi5jb250ZW50Pi54LWF4
aXMgLnNjYWxlW2NsYXNzKj0iZ3JvdXAtIl0gLmJvcmRlci1saW5lLXJpZ2h0IHsKLSAgcG9zaXRp
b246IGFic29sdXRlOwotICB0b3A6IGNhbGMoMHB4IC0gdmFyKC0tdGlueVNpemUpIC8gMik7Ci0g
IHJpZ2h0OiAwOwotICBoZWlnaHQ6IGNhbGModmFyKC0tdGlueVNpemUpIC8gMik7Ci0gIHdpZHRo
OiAycHg7Ci0gIGJhY2tncm91bmQ6IHZhcigtLWJsYWNrKTsKLX0KLQotLnRpbWVsaW5lPi5jb250
ZW50Pi54LWF4aXMgLnNjYWxlW2NsYXNzKj0iZ3JvdXAtIl0gLmxpbmUgewotICBiYWNrZ3JvdW5k
OiB2YXIoLS1ibGFjayk7Ci19Ci0KLS50aW1lbGluZT4uY29udGVudD4ueC1heGlzIC5zY2FsZVtj
bGFzcyo9Imdyb3VwLSJdIC50ZXh0IHsKLSAgbWluLWhlaWdodDogY2FsYyh2YXIoLS1zbWFsbFNp
emUpKTsKLSAgcG9zaXRpb246IGFic29sdXRlOwotICBsZWZ0OiA1MCU7Ci0gIHRvcDogY2FsYyg4
cHggKyB2YXIoLS10aW55U2l6ZSkpOwotfQotCi0udGltZWxpbmU+LmNvbnRlbnQ+LngtYXhpcy5z
Y2FsZS05MGRlZyAuc2NhbGVbY2xhc3MqPSJncm91cC0iXSAudGV4dCB7Ci0gIHRvcDogY2FsYyg0
cHggKyB2YXIoLS10aW55U2l6ZSkpOwotfQotCi0udGltZWxpbmU+LmNvbnRlbnQ+LngtYXhpcy50
b3AgLnNjYWxlIHsKLSAgYm9yZGVyOiBub25lOwotICBib3JkZXItYm90dG9tOiAxcHggc29saWQg
dmFyKC0tYm9yZGVyQ29sb3JJbmxpbmVFbGVtZW50KTsKLX0KLQotLnRpbWVsaW5lPi5jb250ZW50
Pi54LWF4aXMudG9wIC5zY2FsZVtjbGFzcyo9Imdyb3VwLSJdewotICBib3JkZXItY29sb3I6IHZh
cigtLWJsYWNrKTsKLX0KLQotLnRpbWVsaW5lPi5jb250ZW50Pi54LWF4aXMudG9wIC5zY2FsZSAu
bGluZSB7Ci0gIHdpZHRoOiAycHg7Ci0gIGhlaWdodDogdmFyKC0tdGlueVNpemUpOwotICBsZWZ0
OiA1MCU7Ci0gIGJvdHRvbTogMDsKLSAgZGlzcGxheTogYmxvY2s7Ci0gIGJhY2tncm91bmQ6IHZh
cigtLWdyZXkpOwotICBwb3NpdGlvbjogYWJzb2x1dGU7Ci19Ci0KLS50aW1lbGluZT4uY29udGVu
dD4ueC1heGlzLnRvcCAuc2NhbGVbY2xhc3MqPSJncm91cC0iXSAubGluZSB7Ci0gIGJhY2tncm91
bmQ6IHZhcigtLWJsYWNrKTsKLX0KLQotLnRpbWVsaW5lPi5jb250ZW50Pi54LWF4aXMudG9wIC5z
Y2FsZSAudGV4dCB7Ci0gIGxlZnQ6IGNhbGModmFyKC0tdGlueVNpemUpICogMik7Ci0gIG1pbi1o
ZWlnaHQ6IGNhbGModmFyKC0tc21hbGxTaXplKSAqIDQpOwotICB0b3A6IGNhbGModmFyKC0tc21h
bGxTaXplKSAqIDIpOwotICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDMwMGRlZyk7Ci0gIC1t
b3otdHJhbnNmb3JtOiByb3RhdGUoMzAwZGVnKTsKLSAgLW8tdHJhbnNmb3JtOiByb3RhdGUoMzAw
ZGVnKTsKLSAgLW1zLXRyYW5zZm9ybTogcm90YXRlKDMwMGRlZyk7Ci0gIHRyYW5zZm9ybTogcm90
YXRlKDMwMGRlZyk7Ci0gIHdoaXRlLXNwYWNlOiBub3dyYXA7Ci19Ci0KLS50aW1lbGluZT4uY29u
dGVudD4ueC1heGlzLnRvcCAuc2NhbGVbY2xhc3MqPSJncm91cC0iXSAuYm9yZGVyLWxpbmUtbGVm
dCB7Ci0gIHRvcDogYXV0bzsKLSAgYm90dG9tOiBjYWxjKDBweCAtIHZhcigtLXRpbnlTaXplKSAv
IDIpOwotfQotCi0udGltZWxpbmU+LmNvbnRlbnQ+LngtYXhpcy50b3AgLnNjYWxlW2NsYXNzKj0i
Z3JvdXAtIl0gLmJvcmRlci1saW5lLXJpZ2h0IHsKLSAgdG9wOiBhdXRvOwotICBib3R0b206IGNh
bGMoMHB4IC0gdmFyKC0tdGlueVNpemUpIC8gMik7Ci19Ci0KLS50aW1lbGluZT4uY29udGVudD4u
eC1heGlzLnRvcCAuc2NhbGVbY2xhc3MqPSJncm91cC0iXSAudGV4dCB7Ci0gIGxlZnQ6IDU0JTsK
LX0KLQotLnRpbWVsaW5lPi5oZWFkZXIud2l0aC10b3AteC1heGlzIHsKLSAgcGFkZGluZy10b3A6
IGNhbGModmFyKC0tc21hbGxTaXplKSAqIDQuNSk7Ci19Ci0KLS50aW1lbGluZT4uY29udGVudD4u
eC1heGlzIC5zY2FsZSAudGV4dCBhIHsKLSAgZm9udC1zaXplOiB2YXIoLS10aW55U2l6ZSk7Ci19
Ci0KLS5sZW5nZW5kLCAudGltZWxpbmU+LmNvbnRlbnQgLmxlbmdlbmR7Ci0gIGRpc3BsYXk6IGZs
ZXg7Ci0gIGZsZXgtZGlyZWN0aW9uOiByb3c7Ci19Ci0KLS5sZW5nZW5kLmhvcml6b250YWwsIC50
aW1lbGluZT4uaGVhZGVyIC5sZW5nZW5kIHsKLSAgZGlzcGxheTogZmxleDsKLSAgZmxleC1kaXJl
Y3Rpb246IGNvbHVtbjsKLX0KLQotLmxlbmdlbmQ+Lml0ZW0gewotICBmb250LXNpemU6IHZhcigt
LXRpbnlTaXplKTsKLSAgdGV4dC1hbGlnbjogbGVmdDsKLSAgbWFyZ2luOiA0cHg7Ci0gIGRpc3Bs
YXk6IGZsZXg7Ci0gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7Ci0gIGFsaWduLWl0ZW1zOiBjZW50
ZXI7Ci19Ci0KLS5sZW5nZW5kPi5pdGVtIC5kb3R7Ci0gIHdpZHRoOiB2YXIoLS1zbWFsbFNpemUp
OwotICBoZWlnaHQ6IHZhcigtLXNtYWxsU2l6ZSk7Ci0gIGJvcmRlci1yYWRpdXM6IHZhcigtLXNt
YWxsU2l6ZSk7Ci0gIGZvbnQtc2l6ZTogY2FsYyh2YXIoLS10aW55U2l6ZSkpOwotICB0ZXh0LWFs
aWduOiBjZW50ZXI7Ci0gIGZsZXg6IG5vbmU7Ci0gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7Ci0g
IGFsaWduLWl0ZW1zOiBjZW50ZXI7Ci0gIGRpc3BsYXk6IGZsZXg7Ci0gIG1hcmdpbjogMCB2YXIo
LS10aW55U2l6ZSk7Ci0gIHBvc2l0aW9uOiByZWxhdGl2ZTsKLX0KLS5sZW5nZW5kPi5pdGVtIC5k
b3QgaW1nLCAubGVuZ2VuZD4uaXRlbSAuZG90IC50ZXh0IHsKLSAgd2lkdGg6IHZhcigtLXRpbnlT
aXplKTsKLSAgaGVpZ2h0OiB2YXIoLS10aW55U2l6ZSk7Ci0gIGZvbnQtc2l6ZTogdmFyKC0tdGlu
eVNpemUpOwotfSAKLS5sZW5nZW5kPi5pdGVtIC5kb3Q+aW1nLCAubGVuZ2VuZD4uaXRlbSAuZG90
Pi50ZXh0IHsKLSAgcG9zaXRpb246IGFic29sdXRlOwotICB0b3A6IGNhbGMoKHZhcigtLXNtYWxs
U2l6ZSkgLSB2YXIoLS10aW55U2l6ZSkpIC8gMik7Ci0gIGxlZnQ6IGNhbGMoKHZhcigtLXNtYWxs
U2l6ZSkgLSB2YXIoLS10aW55U2l6ZSkpIC8gMik7Ci19Ci0udGltZWxpbmUubGVuZ2VuZD4uaXRl
bSAuZG90OjpiZWZvcmV7Ci0gIGxlZnQ6IGNhbGMoMHB4IC0gdmFyKC0tdGlueVNpemUpKTsKLSAg
d2lkdGg6IHZhcigtLXRpbnlTaXplKTsKLSAgY29udGVudDogIiI7Ci0gIGhlaWdodDogMXB4Owot
ICBiYWNrZ3JvdW5kOiB2YXIoLS1ib3JkZXJDb2xvcklubGluZUVsZW1lbnQpOwotICBkaXNwbGF5
OiBpbmxpbmUtYmxvY2s7Ci0gIGZsZXg6IG5vbmU7Ci0gIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLX0K
LS50aW1lbGluZS5sZW5nZW5kPi5pdGVtIC5kb3Q6OmFmdGVyewotICByaWdodDogY2FsYygwcHgg
LSB2YXIoLS10aW55U2l6ZSkpOwotICB3aWR0aDogdmFyKC0tdGlueVNpemUpOwotICBjb250ZW50
OiAiIjsKLSAgaGVpZ2h0OiAxcHg7Ci0gIGJhY2tncm91bmQ6IHZhcigtLWJvcmRlckNvbG9ySW5s
aW5lRWxlbWVudCk7Ci0gIGRpc3BsYXk6IGlubGluZS1ibG9jazsKLSAgZmxleDogbm9uZTsKLSAg
cG9zaXRpb246IGFic29sdXRlOwotfQotLmxlbmdlbmQ+Lml0ZW0gLmxhYmVsewotICBmb250LXNp
emU6IHZhcigtLXRpbnlTaXplKTsKLSAgcGFkZGluZzogMCA0cHg7Ci19Ci0KLUBtZWRpYSAocHJl
ZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIHsKLQotICAudGltZWxpbmU+LmNvbnRlbnQ+LngtYXhp
cyAuc2NhbGVbY2xhc3MqPSJncm91cC0iXSB7Ci0gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS13aGl0
ZSk7Ci0gIH0KLQotICAudGltZWxpbmU+LmNvbnRlbnQ+LngtYXhpcyAuc2NhbGVbY2xhc3MqPSJn
cm91cC0iXSAuYm9yZGVyLWxpbmUtbGVmdCB7Ci0gICAgYmFja2dyb3VuZDogdmFyKC0td2hpdGUp
OwotICB9Ci0KLSAgLnRpbWVsaW5lPi5jb250ZW50Pi54LWF4aXMgLnNjYWxlW2NsYXNzKj0iZ3Jv
dXAtIl0gLmJvcmRlci1saW5lLXJpZ2h0IHsKLSAgICBiYWNrZ3JvdW5kOiB2YXIoLS13aGl0ZSk7
Ci0gIH0KLQotICAudGltZWxpbmU+LmNvbnRlbnQ+LngtYXhpcyAuc2NhbGVbY2xhc3MqPSJncm91
cC0iXSAubGluZSB7Ci0gICAgYmFja2dyb3VuZDogdmFyKC0td2hpdGUpOwotICB9Ci0KLSAgLnRp
bWVsaW5lPi5jb250ZW50Pi54LWF4aXMudG9wIC5zY2FsZVtjbGFzcyo9Imdyb3VwLSJdIC5saW5l
IHsKLSAgICBiYWNrZ3JvdW5kOiB2YXIoLS13aGl0ZSk7Ci0gIH0KLQotICAudGltZWxpbmU+LmNv
bnRlbnQ+LngtYXhpcy50b3AgLnNjYWxlW2NsYXNzKj0iZ3JvdXAtIl17Ci0gICAgYm9yZGVyLWNv
bG9yOiB2YXIoLS13aGl0ZSk7Ci0gIH0KLX0KLQotLyogZm9ybSBhbmQgaW5wdXQqLwotLmlucHV0
IHsKLSAgbWFyZ2luOiB2YXIoLS1jb2xQYWRkaW5nU2l6ZSk7Ci0gIG1hcmdpbi1sZWZ0OiAwOwot
ICBwb3NpdGlvbjogcmVsYXRpdmU7Ci0gIGRpc3BsYXk6IGZsZXg7Ci0gIGFsaWduLWl0ZW1zOiBj
ZW50ZXI7Ci19Ci0KLXNlbGVjdCwgaW5wdXQgewotICBmb250LXdlaWdodDogY2FsYygyLjUgKiB2
YXIoLS1mb250V2VpZ2h0KSk7Ci19Ci0KLS5yb3cgLmlucHV0IHsKLSAgbWFyZ2luOiAwOwotICBt
YXJnaW4tcmlnaHQ6IHZhcigtLWNvbFBhZGRpbmdTaXplKTsKLX0KLQotLmlucHV0PmxhYmVsIHsK
LSAgbWFyZ2luOiAwOwotICBtYXJnaW4tbGVmdDogdmFyKC0tZm9ybUxhYmVsUGFkZGluZyk7Ci0g
IGZvbnQtY29sb3I6IHZhcigtLWludmVyc2VDb2xvcik7Ci19Ci0KLS5pbnB1dD5sYWJlbC5zd2l0
Y2ggewotICBmbGV4OiBub25lOwotICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gIHJpZ2h0OiAwOwot
fQotCi0uaW5wdXQ+aW5wdXQsIC5pbnB1dD5zZWxlY3QgewotICB3aWR0aDogMTAwJTsKLSAgbWFy
Z2luOiAwOwotfQotCi0uaW5wdXQ+LnByZWZpeCB7Ci0gIHdpZHRoOiBjYWxjKHZhcigtLW1lZGl1
bVNpemUpICogMyk7Ci0gIGJhY2tncm91bmQ6IHZhcigtLWdyZXlMaWdodGVzdCk7Ci0gIHBvc2l0
aW9uOiBhYnNvbHV0ZTsKLSAgbGVmdDogMDsKLSAgaGVpZ2h0OiAxMDAlOwotICBib3JkZXItcmFk
aXVzOiA0cHggMCAwIDRweDsKLSAgZGlzcGxheTogZmxleDsKLSAgYWxpZ24taXRlbXM6IGNlbnRl
cjsKLSAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tZ3JleSk7Ci0gIGJveC1zaXppbmc6IGJvcmRl
ci1ib3g7Ci19Ci0KLS5pbnB1dD4ucHJlZml4ICogewotICB0ZXh0LWFsaWduOiBjZW50ZXI7Ci0g
IHdpZHRoOiAxMDAlOwotfQotCi0uaW5wdXQ+LnByZWZpeH5sYWJlbCB7Ci0gIG1hcmdpbi1sZWZ0
OiBjYWxjKHZhcigtLWZvcm1MYWJlbFBhZGRpbmcpICsgdmFyKC0tbWVkaXVtU2l6ZSkgKiAzKTsK
LX0KLQotLmlucHV0Pi5wcmVmaXguaW52YWxpZCB7Ci0gIGJvcmRlci1jb2xvcjogdmFyKC0tcmVk
KTsKLX0KLQotLmlucHV0PmlucHV0W3R5cGU9InRleHQiXVtyZXF1aXJlZF0sIC5pbnB1dD5pbnB1
dFt0eXBlPSJudW1iZXIiXVtyZXF1aXJlZF0sCi0uaW5wdXQ+aW5wdXRbdHlwZT0icGFzc3dvcmQi
XVtyZXF1aXJlZF0sIC5pbnB1dD5pbnB1dFt0eXBlPSJlbWFpbCJdW3JlcXVpcmVkXSwgLmlucHV0
PnNlbGVjdCB7Ci0gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsKLSAgLW1vei1hcHBlYXJhbmNl
OiBub25lOwotICBhcHBlYXJhbmNlOiBub25lOwotICBmb250LXNpemU6IHZhcigtLXNtYWxsU2l6
ZSk7Ci0gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7Ci0gIHBhZGRpbmctdG9wOiBjYWxjKHZhcigt
LXRpbnlTaXplKSArIDRweCk7Ci0gIHBhZGRpbmctbGVmdDogdmFyKC0tZm9ybUxhYmVsUGFkZGlu
Zyk7Ci0gIHBhZGRpbmctcmlnaHQ6IHZhcigtLWZvcm1MYWJlbFBhZGRpbmcpOwotICB0ZXh0LWFs
aWduOiBsZWZ0OwotICBib3JkZXItcmFkaXVzOiA0cHg7Ci0gIGJvcmRlcjogMXB4IHNvbGlkIHZh
cigtLWdyZXlEYXJrZXIpOwotICBiYWNrZ3JvdW5kOiBub25lOwotICB2ZXJ0aWNhbC1hbGlnbjog
dG9wOwotfQotCi0uaW5wdXQ+aW5wdXRbdHlwZT0idGV4dCJdW3JlcXVpcmVkXVtkaXNhYmxlZF0s
IC5pbnB1dD5pbnB1dFt0eXBlPSJudW1iZXIiXVtyZXF1aXJlZF1bZGlzYWJsZWRdLAotLmlucHV0
PmlucHV0W3R5cGU9InBhc3N3b3JkIl1bcmVxdWlyZWRdW2Rpc2FibGVkXSwgLmlucHV0PmlucHV0
W3R5cGU9ImVtYWlsIl1bcmVxdWlyZWRdW2Rpc2FibGVkXSwgLmlucHV0PnNlbGVjdFtkaXNhYmxl
ZF0gewotICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ncmV5TGlnaHRlcik7Ci19Ci0KLS5pbnB1
dD4ucHJlZml4K2lucHV0W3R5cGU9InRleHQiXVtyZXF1aXJlZF0sIC5pbnB1dD4ucHJlZml4K2lu
cHV0W3R5cGU9Im51bWJlciJdW3JlcXVpcmVkXSwKLS5pbnB1dD4ucHJlZml4K2lucHV0W3R5cGU9
InBhc3N3b3JkIl1bcmVxdWlyZWRdLCAuaW5wdXQ+LnByZWZpeCtpbnB1dFt0eXBlPSJlbWFpbCJd
W3JlcXVpcmVkXSwgLmlucHV0Pi5wcmVmaXgrc2VsZWN0IHsKLSAgcGFkZGluZy1sZWZ0OiBjYWxj
KHZhcigtLWZvcm1MYWJlbFBhZGRpbmcpICsgdmFyKC0tbWVkaXVtU2l6ZSkgKiAzKTsKLX0KLQot
LmlucHV0PmlucHV0W3R5cGU9InRleHQiXVtyZXF1aXJlZF1+bGFiZWwsIC5pbnB1dD5pbnB1dFt0
eXBlPSJudW1iZXIiXVtyZXF1aXJlZF1+bGFiZWwsCi0uaW5wdXQ+aW5wdXRbdHlwZT0icGFzc3dv
cmQiXVtyZXF1aXJlZF1+bGFiZWwsIC5pbnB1dD5pbnB1dFt0eXBlPSJlbWFpbCJdW3JlcXVpcmVk
XX5sYWJlbCwgLmlucHV0PnNlbGVjdH5sYWJlbCB7Ci0gIHBvaW50ZXItZXZlbnRzOiBub25lOwot
ICBkaXNwbGF5OiBibG9jazsKLSAgcG9zaXRpb246IGFic29sdXRlOwotICB0b3A6IGNhbGMoKHZh
cigtLXRpbnlTaXplKSArIDRweCkgLyAyKTsKLSAgY29sb3I6IHZhcigtLWludmVyc2VDb2xvcik7
Ci0gIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLWluOwotICB0cmFuc2l0aW9uLWR1
cmF0aW9uOiAuMTI1czsKLSAgZm9udC1zaXplOiB2YXIoLS1zbWFsbFNpemUpOwotICBoZWlnaHQ6
IHZhcigtLXNtYWxsU2l6ZSk7Ci0gIHotaW5kZXg6IDE7Ci19Ci0KLS5pbnB1dD5pbnB1dFt0eXBl
PSJ0ZXh0Il1bcmVxdWlyZWRdW2Rpc2FibGVkXSwgLmlucHV0PmlucHV0W3R5cGU9Im51bWJlciJd
W3JlcXVpcmVkXVtkaXNhYmxlZF0sCi0uaW5wdXQ+aW5wdXRbdHlwZT0icGFzc3dvcmQiXVtyZXF1
aXJlZF1bZGlzYWJsZWRdLCAuaW5wdXQ+aW5wdXRbdHlwZT0iZW1haWwiXVtyZXF1aXJlZF1bZGlz
YWJsZWRdLCAuaW5wdXQ+c2VsZWN0W2Rpc2FibGVkXSB7Ci0gIGNvbG9yOiB2YXIoLS1ncmV5RGFy
a2VyKTsKLX0KLQotLmlucHV0PmlucHV0W3R5cGU9InRleHQiXVtyZXF1aXJlZF1bZGlzYWJsZWRd
fmxhYmVsLCAuaW5wdXQ+aW5wdXRbdHlwZT0ibnVtYmVyIl1bcmVxdWlyZWRdW2Rpc2FibGVkXX5s
YWJlbCwKLS5pbnB1dD5pbnB1dFt0eXBlPSJwYXNzd29yZCJdW3JlcXVpcmVkXVtkaXNhYmxlZF1+
bGFiZWwsIC5pbnB1dD5pbnB1dFt0eXBlPSJlbWFpbCJdW3JlcXVpcmVkXVtkaXNhYmxlZF1+bGFi
ZWwsIC5pbnB1dD5zZWxlY3RbZGlzYWJsZWRdfmxhYmVsIHsKLSAgY29sb3I6IHZhcigtLWdyZXkp
OwotICBmb250LXNpemU6IHZhcigtLXRpbnlTaXplKTsKLSAgdG9wOiA0cHg7Ci19Ci0KLQotLmlu
cHV0PmlucHV0W3R5cGU9InRleHQiXVtyZXF1aXJlZF06Zm9jdXMsIC5pbnB1dD5pbnB1dFt0eXBl
PSJudW1iZXIiXVtyZXF1aXJlZF06Zm9jdXMsCi0uaW5wdXQ+aW5wdXRbdHlwZT0icGFzc3dvcmQi
XVtyZXF1aXJlZF06Zm9jdXMsIC5pbnB1dD5pbnB1dFt0eXBlPSJlbWFpbCJdW3JlcXVpcmVkXTpm
b2N1cywgLmlucHV0PnNlbGVjdDpmb2N1cyB7Ci0gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsK
LSAgLW1vei1hcHBlYXJhbmNlOiBub25lOwotICBhcHBlYXJhbmNlOiBub25lOwotICBib3JkZXI6
IDFweCBzb2xpZCB2YXIoLS1ibHVlKTsKLSAgYm9yZGVyLXJhZGl1czogNHB4OwotICBib3gtc2hh
ZG93OiBub25lOwotfQotCi0uaW5wdXQ+aW5wdXRbdHlwZT0idGV4dCJdW3JlcXVpcmVkXTpmb2N1
c35sYWJlbCwgLmlucHV0PmlucHV0W3R5cGU9Im51bWJlciJdW3JlcXVpcmVkXTpmb2N1c35sYWJl
bCwKLS5pbnB1dD5pbnB1dFt0eXBlPSJwYXNzd29yZCJdW3JlcXVpcmVkXTpmb2N1c35sYWJlbCwg
LmlucHV0PmlucHV0W3R5cGU9ImVtYWlsIl1bcmVxdWlyZWRdOmZvY3VzfmxhYmVsIHsKLSAgZm9u
dC1zaXplOiB2YXIoLS10aW55U2l6ZSk7Ci0gIHRvcDogNHB4OwotfQotCi0uaW5wdXQ+aW5wdXRb
dHlwZT0idGV4dCJdW3JlcXVpcmVkXTp2YWxpZH5sYWJlbCwgLmlucHV0PmlucHV0W3R5cGU9Im51
bWJlciJdW3JlcXVpcmVkXTp2YWxpZH5sYWJlbCwKLS5pbnB1dD5pbnB1dFt0eXBlPSJwYXNzd29y
ZCJdW3JlcXVpcmVkXTp2YWxpZH5sYWJlbCwgLmlucHV0PmlucHV0W3R5cGU9ImVtYWlsIl1bcmVx
dWlyZWRdOnZhbGlkfmxhYmVsLCAuaW5wdXQ+c2VsZWN0OnZhbGlkfmxhYmVsIHsKLSAgZm9udC1z
aXplOiB2YXIoLS10aW55U2l6ZSk7Ci0gIHRvcDogNHB4OwotfQotCi1AbWVkaWEgKHByZWZlcnMt
Y29sb3Itc2NoZW1lOiBkYXJrKSB7Ci0gIC5pbnB1dD4ucHJlZml4IHsKLSAgICBiYWNrZ3JvdW5k
LWNvbG9yOiB2YXIoLS1ibGFjayk7Ci0gIH0KLQotICAuaW5wdXQ+aW5wdXRbdHlwZT0idGV4dCJd
W3JlcXVpcmVkXSwgLmlucHV0PmlucHV0W3R5cGU9Im51bWJlciJdW3JlcXVpcmVkXSwKLSAgLmlu
cHV0PmlucHV0W3R5cGU9InBhc3N3b3JkIl1bcmVxdWlyZWRdLCAuaW5wdXQ+aW5wdXRbdHlwZT0i
ZW1haWwiXVtyZXF1aXJlZF0sIC5pbnB1dD5zZWxlY3QgewotICAgIGNvbG9yOiB2YXIoLS13aGl0
ZSk7Ci0gIH0KLQotICAuaW5wdXQ+aW5wdXRbdHlwZT0idGV4dCJdW3JlcXVpcmVkXX5sYWJlbCwg
LmlucHV0PmlucHV0W3R5cGU9Im51bWJlciJdW3JlcXVpcmVkXX5sYWJlbCwKLSAgLmlucHV0Pmlu
cHV0W3R5cGU9InBhc3N3b3JkIl1bcmVxdWlyZWRdfmxhYmVsLCAuaW5wdXQ+aW5wdXRbdHlwZT0i
ZW1haWwiXVtyZXF1aXJlZF1+bGFiZWwsIC5pbnB1dD5zZWxlY3R+bGFiZWwgewotICAgIGNvbG9y
OiB2YXIoLS1ncmV5KTsKLSAgfQotCi0gIC5pbnB1dD5pbnB1dFt0eXBlPSJ0ZXh0Il1bcmVxdWly
ZWRdW2Rpc2FibGVkXSwgLmlucHV0PmlucHV0W3R5cGU9Im51bWJlciJdW3JlcXVpcmVkXVtkaXNh
YmxlZF0sCi0gIC5pbnB1dD5pbnB1dFt0eXBlPSJwYXNzd29yZCJdW3JlcXVpcmVkXVtkaXNhYmxl
ZF0sIC5pbnB1dD5pbnB1dFt0eXBlPSJlbWFpbCJdW3JlcXVpcmVkXVtkaXNhYmxlZF0sIC5pbnB1
dD5zZWxlY3RbZGlzYWJsZWRdIHsKLSAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ncmV5RGFy
a2VyKTsKLSAgICBjb2xvcjogdmFyKC0tYmxhY2tEYXJrKTsKLSAgfQotCi0gIC5pbnB1dD5pbnB1
dFt0eXBlPSJ0ZXh0Il1bcmVxdWlyZWRdW2Rpc2FibGVkXX5sYWJlbCwgLmlucHV0PmlucHV0W3R5
cGU9Im51bWJlciJdW3JlcXVpcmVkXVtkaXNhYmxlZF1+bGFiZWwsCi0gIC5pbnB1dD5pbnB1dFt0
eXBlPSJwYXNzd29yZCJdW3JlcXVpcmVkXVtkaXNhYmxlZF1+bGFiZWwsIC5pbnB1dD5pbnB1dFt0
eXBlPSJlbWFpbCJdW3JlcXVpcmVkXVtkaXNhYmxlZF1+bGFiZWwsIC5pbnB1dD5zZWxlY3RbZGlz
YWJsZWRdfmxhYmVsIHsKLSAgICBjb2xvcjogdmFyKC0tZ3JleURhcmtlcik7Ci0gIH0KLQotICAu
aW5wdXQ+aW5wdXRbdHlwZT0idGV4dCJdW3JlcXVpcmVkXTpmb2N1cywgLmlucHV0PmlucHV0W3R5
cGU9Im51bWJlciJdW3JlcXVpcmVkXTpmb2N1cywKLSAgLmlucHV0PmlucHV0W3R5cGU9InBhc3N3
b3JkIl1bcmVxdWlyZWRdOmZvY3VzLCAuaW5wdXQ+aW5wdXRbdHlwZT0iZW1haWwiXVtyZXF1aXJl
ZF06Zm9jdXMsIC5pbnB1dD5zZWxlY3Q6Zm9jdXMgewotICAgIGNvbG9yOiB2YXIoLS13aGl0ZSk7
Ci0gIH0KLX0KLQotLmlucHV0PmlucHV0W3R5cGU9Im51bWJlciJdOm91dC1vZi1yYW5nZSwgLmlu
cHV0PmlucHV0W3R5cGU9InRleHQiXVtyZXF1aXJlZF0uaW52YWxpZCwgLmlucHV0PmlucHV0W3R5
cGU9Im51bWJlciJdW3JlcXVpcmVkXS5pbnZhbGlkLAotLmlucHV0PmlucHV0W3R5cGU9InBhc3N3
b3JkIl1bcmVxdWlyZWRdLmludmFsaWQsIC5pbnB1dD5pbnB1dFt0eXBlPSJlbWFpbCJdW3JlcXVp
cmVkXS5pbnZhbGlkLCAuaW5wdXQ+c2VsZWN0LmludmFsaWQgewotICBib3JkZXItY29sb3I6IHZh
cigtLXJlZCk7Ci0gIGNvbG9yOiB2YXIoLS1yZWQpOwotfQotCi0uaW5wdXQ+aW5wdXRbdHlwZT0i
bnVtYmVyIl06b3V0LW9mLXJhbmdlfmxhYmVsLCAuaW5wdXQ+aW5wdXRbdHlwZT0idGV4dCJdW3Jl
cXVpcmVkXS5pbnZhbGlkfmxhYmVsLCAuaW5wdXQ+aW5wdXRbdHlwZT0ibnVtYmVyIl1bcmVxdWly
ZWRdLmludmFsaWR+bGFiZWwsCi0uaW5wdXQ+aW5wdXRbdHlwZT0icGFzc3dvcmQiXVtyZXF1aXJl
ZF0uaW52YWxpZH5sYWJlbCwgLmlucHV0PmlucHV0W3R5cGU9ImVtYWlsIl1bcmVxdWlyZWRdLmlu
dmFsaWR+bGFiZWwsIC5pbnB1dD5zZWxlY3QuaW52YWxpZH5sYWJlbCB7Ci0gIGNvbG9yOiB2YXIo
LS1yZWQpOwotICBmb250LXNpemU6IHZhcigtLXRpbnlTaXplKTsKLSAgdG9wOiA0cHg7Ci19Ci0K
LS5pbnB1dD5pbnB1dFt0eXBlPSJudW1iZXIiXTo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbiB7
Ci0gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsKLSAgYXBwZWFyYW5jZTogbm9uZTsKLX0KLQot
LmlucHV0PmlucHV0W3R5cGU9InJhbmdlIl0gewotICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7
Ci0gIC1tb3otYXBwZWFyYW5jZTogbm9uZTsKLSAgYXBwZWFyYW5jZTogbm9uZTsKLSAgb3BhY2l0
eTogMC44OwotICBiYWNrZ3JvdW5kOiB2YXIoLS1ncmV5KTsKLSAgb3V0bGluZTogbm9uZTsKLSAg
dHJhbnNpdGlvbi1kdXJhdGlvbjogLjEyNXM7Ci0gIGhlaWdodDogMnB4OwotICB3aWR0aDogYXV0
bzsKLSAgbWFyZ2luOiAwIHZhcigtLWZvcm1MYWJlbFBhZGRpbmcpOwotICBmbGV4OiBhdXRvOwot
fQotCi0uaW5wdXQ+aW5wdXRbdHlwZT0icmFuZ2UiXTpob3ZlciB7Ci0gIG9wYWNpdHk6IDE7Ci19
Ci0KLS5pbnB1dD5pbnB1dFt0eXBlPSJyYW5nZSJdOjotd2Via2l0LXNsaWRlci10aHVtYiB7Ci0g
IC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsKLSAgYXBwZWFyYW5jZTogbm9uZTsKLSAgd2lkdGg6
IHZhcigtLXRpbnlTaXplKTsKLSAgaGVpZ2h0OiB2YXIoLS10aW55U2l6ZSk7Ci0gIGJhY2tncm91
bmQ6IHZhcigtLWdyZXkpOwotICBib3JkZXItcmFkaXVzOiB2YXIoLS10aW55U2l6ZSk7Ci0gIGN1
cnNvcjogcG9pbnRlcjsKLX0KLQotLmlucHV0PmlucHV0W3R5cGU9InJhbmdlIl06Oi13ZWJraXQt
c2xpZGVyLXRodW1iOmhvdmVyIHsKLSAgYmFja2dyb3VuZDogdmFyKC0tZ3JleURhcmtlcik7Ci19
Ci0KLS5pbnB1dD5pbnB1dFt0eXBlPSJyYW5nZSJdLmludmFsaWQ6Oi13ZWJraXQtc2xpZGVyLXRo
dW1iIHsKLSAgYmFja2dyb3VuZDogdmFyKC0tcmVkKTsKLX0KLQotLmlucHV0PmlucHV0W3R5cGU9
InJhbmdlIl0uaW52YWxpZDo6LXdlYmtpdC1zbGlkZXItdGh1bWI6aG92ZXIgewotICBiYWNrZ3Jv
dW5kOiB2YXIoLS1yZWQpOwotfQotCi0uaW5wdXQ+aW5wdXRbdHlwZT0icmFuZ2UiXTpvdXQtb2Yt
cmFuZ2UsIC5pbnB1dD5pbnB1dFt0eXBlPSJyYW5nZSJdLmludmFsaWQgewotICBiYWNrZ3JvdW5k
OiB2YXIoLS1yZWQpOwotfQotCi0uaW5wdXQ+aW5wdXRbdHlwZT0icmFuZ2UiXTpvdXQtb2YtcmFu
Z2U6Oi13ZWJraXQtc2xpZGVyLXRodW1iLCAuaW5wdXQ+aW5wdXRbdHlwZT0icmFuZ2UiXS5pbnZh
bGlkOjotd2Via2l0LXNsaWRlci10aHVtYiB7Ci0gIGNvbG9yOiB2YXIoLS1yZWQpOwotfQotCi0u
aW5wdXQ+aW5wdXRbdHlwZT0icmFuZ2UiXStpbnB1dFt0eXBlPSJudW1iZXIiXSB7Ci0gIGJhY2tn
cm91bmQ6IG5vbmU7Ci0gIHdpZHRoOiBhdXRvOwotICBtaW4td2lkdGg6IGNhbGModmFyKC0tbWVk
aXVtU2l6ZSkgKiAyKTsKLSAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tZ3JleSk7Ci0gIHRleHQt
YWxpZ246IHJpZ2h0OwotICBwYWRkaW5nOiAzcHg7Ci19Ci0KLS5pbnB1dD5pbnB1dFt0eXBlPSJy
YW5nZSJdK2lucHV0W3R5cGU9Im51bWJlciJdOm91dC1vZi1yYW5nZSB7Ci0gIGJvcmRlci1jb2xv
cjogdmFyKC0tcmVkKTsKLSAgY29sb3I6IHZhcigtLXJlZCk7Ci19Ci0KLUBtZWRpYSAocHJlZmVy
cy1jb2xvci1zY2hlbWU6IGRhcmspIHsKLSAgLmlucHV0PmlucHV0W3R5cGU9InJhbmdlIl0raW5w
dXRbdHlwZT0ibnVtYmVyIl0gewotICAgIGNvbG9yOiB2YXIoLS13aGl0ZSk7Ci0gIH0KLX0KLQot
LmlucHV0PmlucHV0W3R5cGU9InJhbmdlIl0raW5wdXRbdHlwZT0ibnVtYmVyIl06Oi13ZWJraXQt
aW5uZXItc3Bpbi1idXR0b24gewotICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7Ci0gIGFwcGVh
cmFuY2U6IG5vbmU7Ci19Ci0KLS5pbnB1dD4uZG91YmxlLXJhbmdlIHsKLSAgZmxleDogYXV0bzsK
LX0KLQotLmlucHV0PmxhYmVsICsgLmRvdWJsZS1yYW5nZSB7Ci0gIG1hcmdpbi1sZWZ0OiB2YXIo
LS1mb3JtTGFiZWxQYWRkaW5nKTsKLX0KLQotLmRvdWJsZS1yYW5nZSB7Ci0gIGRpc3BsYXk6IGZs
ZXg7Ci0gIGFsaWduLWl0ZW1zOiBjZW50ZXI7Ci19Ci0KLS5kb3VibGUtcmFuZ2U+LnJhbmdlIHsK
LSAgZmxleDogYXV0bzsKLSAgcG9zaXRpb246IHJlbGF0aXZlOwotICBtYXJnaW46IDAgdmFyKC0t
Zm9ybUxhYmVsUGFkZGluZyk7Ci0gIGhlaWdodDogdmFyKC0tdGlueVNpemUpOwotfQotCi0uZG91
YmxlLXJhbmdlPmlucHV0W3R5cGU9Im51bWJlciJdIHsKLSAgYmFja2dyb3VuZDogbm9uZTsKLSAg
bWluLXdpZHRoOiBjYWxjKHZhcigtLW1lZGl1bVNpemUpICogMik7Ci0gIGJvcmRlcjogMXB4IHNv
bGlkIHZhcigtLWdyZXkpOwotICB0ZXh0LWFsaWduOiByaWdodDsKLSAgcGFkZGluZzogM3B4Owot
fQotCi0uZG91YmxlLXJhbmdlPmlucHV0W3R5cGU9Im51bWJlciJdOjotd2Via2l0LWlubmVyLXNw
aW4tYnV0dG9uIHsKLSAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOwotICBhcHBlYXJhbmNlOiBu
b25lOwotfQotCi0uZG91YmxlLXJhbmdlPi5yYW5nZT5pbnB1dFt0eXBlPSJyYW5nZSJdIHsKLSAg
d2lkdGg6IDEwMCU7Ci0gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsKLSAgLW1vei1hcHBlYXJh
bmNlOiBub25lOwotICBhcHBlYXJhbmNlOiBub25lOwotICBvcGFjaXR5OiAxOwotICBiYWNrZ3Jv
dW5kOiB2YXIoLS1ncmV5KTsKLSAgb3V0bGluZTogbm9uZTsKLSAgdHJhbnNpdGlvbi1kdXJhdGlv
bjogLjEyNXM7Ci0gIGhlaWdodDogMnB4OwotICBwb2ludGVyLWV2ZW50czogbm9uZTsKLSAgcG9z
aXRpb246IGFic29sdXRlOwotICBsZWZ0OiAwOwotICB0b3A6IGNhbGModmFyKC0tdGlueVNpemUp
IC8gMiAtIDJweCk7Ci19Ci0KLUBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIHsK
LSAgLmRvdWJsZS1yYW5nZT4ucmFuZ2U+aW5wdXRbdHlwZT0icmFuZ2UiXSB7Ci0gICAgYmFja2dy
b3VuZDogdmFyKC0tZ3JleURhcmspOwotICB9Ci0KLSAgLmRvdWJsZS1yYW5nZT5pbnB1dFt0eXBl
PSJudW1iZXIiXSB7Ci0gICAgY29sb3I6IHZhcigtLXdoaXRlKTsKLSAgfQotfQotCi0uZG91Ymxl
LXJhbmdlPi5yYW5nZT5pbnB1dFt0eXBlPSJyYW5nZSJdOmZpcnN0Ojotd2Via2l0LXNsaWRlci10
aHVtYiB7Ci0gIGJhY2tncm91bmQ6IHZhcigtLWdyZXkpOwotfQotCi0uZG91YmxlLXJhbmdlPi5y
YW5nZT5pbnB1dFt0eXBlPSJyYW5nZSJdOmxhc3QtY2hpbGQ6Oi13ZWJraXQtc2xpZGVyLXRodW1i
IHsKLSAgYmFja2dyb3VuZDogdmFyKC0tZ3JleURhcmtlcik7Ci19Ci0KLS5kb3VibGUtcmFuZ2U+
LnJhbmdlPmlucHV0W3R5cGU9InJhbmdlIl06Oi13ZWJraXQtc2xpZGVyLXRodW1iIHsKLSAgLXdl
YmtpdC1hcHBlYXJhbmNlOiBub25lOwotICAtbW96LWFwcGVhcmFuY2U6IG5vbmU7Ci0gIGFwcGVh
cmFuY2U6IG5vbmU7Ci0gIHBvaW50ZXItZXZlbnRzOiBhbGw7Ci0gIHBvc2l0aW9uOiByZWxhdGl2
ZTsKLSAgd2lkdGg6IHZhcigtLXRpbnlTaXplKTsKLSAgaGVpZ2h0OiB2YXIoLS10aW55U2l6ZSk7
Ci0gIGJhY2tncm91bmQ6IHZhcigtLWdyZXkpOwotICBvdXRsaW5lOiBub25lOwotICBvcGFjaXR5
OiAxOwotICB6LWluZGV4OiAxOwotfQotCi0vKiBwcm9ncmVzcyBiYXIgKi8KLS5wcm9ncmVzcy1i
YXItY29udGFpbmVyIHsKLSAgZGlzcGxheTogZmxleDsKLSAgd2lkdGg6IDEwMCU7Ci0gIGJhY2tn
cm91bmQ6IHZhcigtLWdyZXlMaWdodGVzdCk7Ci19Ci0KLUBtZWRpYSAocHJlZmVycy1jb2xvci1z
Y2hlbWU6IGRhcmspIHsKLSAgLnByb2dyZXNzLWJhci1jb250YWluZXIgewotICAgIGJhY2tncm91
bmQ6IHZhcigtLWJsYWNrKTsKLSAgfQotfQotCi0ucHJvZ3Jlc3MtYmFyLWNvbnRhaW5lciAucHJv
Z3Jlc3MtYmFyIHsKLSAgYmFja2dyb3VuZDogdmFyKC0tYmx1ZSk7Ci0gIGNvbG9yOiB2YXIoLS13
aGl0ZSk7Ci0gIG1pbi13aWR0aDogMCU7Ci0gIHRleHQtYWxpZ246IGNlbnRlcjsKLSAgb3ZlcmZs
b3c6IGhpZGRlbjsKLSAgaGVpZ2h0OiB2YXIoLS1tZWRpdW1TaXplKTsKLSAgZm9udC1zaXplOiB2
YXIoLS10aW55U2l6ZSk7Ci0gIGxpbmUtaGVpZ2h0OiB2YXIoLS1tZWRpdW1TaXplKTsKLX0KLQot
LnByb2dyZXNzLWJhci1jb250YWluZXIgLnByb2dyZXNzLWJhci5zdWNjZXNzIHsKLSAgYmFja2dy
b3VuZDogdmFyKC0tZ3JlZW4pOwotfQotCi0ucHJvZ3Jlc3MtYmFyLWNvbnRhaW5lciAucHJvZ3Jl
c3MtYmFyLmZhaWxlZCB7Ci0gIGJhY2tncm91bmQ6IHZhcigtLXJlZCk7Ci19Ci0KLS5wcm9ncmVz
cy1iYXItY29udGFpbmVyIC5wcm9ncmVzcy1iYXIuZXJyb3IgewotICBiYWNrZ3JvdW5kOiB2YXIo
LS1vcmFuZ2UpOwotfQotCi0udW5zZWxlY3RhYmxlIHsKLSAgLXdlYmtpdC10b3VjaC1jYWxsb3V0
OiBub25lOwotICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOwotICB1c2VyLXNlbGVjdDogbm9u
ZTsKLX0KLQotLmRlc2t0b3AtY29udHJvbCB7Ci0gIGRpc3BsYXk6IG5vbmU7Ci19Ci0ubW9iaWxl
LWNvbnRyb2wgewotICBkaXNwbGF5OiBibG9jazsKLX0KLQotLm1vYmlsZS1zaWRlYmFyLWNvbnRy
b2wgewotICBkaXNwbGF5OiBub25lOwotICBmbG9hdDogcmlnaHQ7Ci19Ci0ubW9iaWxlLXNpZGVi
YXItY29udHJvbC5kaXNwbGF5IHsKLSAgZGlzcGxheTogYmxvY2s7Ci19Ci0KLUBtZWRpYSBzY3Jl
ZW4gYW5kIChtaW4td2lkdGg6IDYwMHB4KSB7Ci0gIC5kZXNrdG9wLWNvbnRyb2wgewotICAgIGRp
c3BsYXk6IGJsb2NrOwotICB9Ci0gIC5tb2JpbGUtY29udHJvbCB7Ci0gICAgZGlzcGxheTogbm9u
ZTsKLSAgfQotICAubW9iaWxlLXNpZGViYXItY29udHJvbC5kaXNwbGF5IHsKLSAgICBkaXNwbGF5
OiBub25lOwotICB9Ci19CkluZGV4OiBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS92aWV3
L3N0YXRpYy9saWJyYXJ5L2ljb25zL2Nsb2NrLnN2Zwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9yZXN1
bHRzZGJweS9yZXN1bHRzZGJweS92aWV3L3N0YXRpYy9saWJyYXJ5L2ljb25zL2Nsb2NrLnN2Zwko
cmV2aXNpb24gMjY1NTMxKQorKysgVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9z
dGF0aWMvbGlicmFyeS9pY29ucy9jbG9jay5zdmcJKG5vbmV4aXN0ZW50KQpAQCAtMSwxMyArMCww
IEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgc3RhbmRhbG9uZT0ibm8i
Pz4KLTwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6
Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+Ci08c3ZnIHZlcnNp
b249IjEuMSIgeG1sbnM6eGw9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9l
bGVtZW50cy8xLjEvIiB2aWV3Qm94PSItMTE0NyAtNjYzIDIyOCAyMjgiIHdpZHRoPSIyMjgiIGhl
aWdodD0iMjI4Ij4KLSAgICA8ZyBmaWxsPSJub25lIiBzdHJva2U9Im5vbmUiIHN0cm9rZS1kYXNo
YXJyYXk9Im5vbmUiIHN0cm9rZS1vcGFjaXR5PSIxIiBmaWxsLW9wYWNpdHk9IjEiPgotICAgICAg
ICA8ZyBpZD0iY2xvY2tfYmFzZSI+Ci0gICAgICAgICAgICA8Y2lyY2xlIGN4PSItMTAzMy4yNSIg
Y3k9Ii01NDkuMjUiIHI9Ijk4Ljc1MDE1Nzc5MjgxMjIiIHN0cm9rZT0id2hpdGUiIHN0cm9rZS1s
aW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIzMCIv
PgotICAgICAgICA8L2c+Ci0gICAgICAgIDxnIGlkPSJjbG9ja19oYW5kIj4KLSAgICAgICAgICAg
IDxsaW5lIHgxPSItMTAzMy4yNSIgeTE9Ii01NDkuMjUiIHgyPSItMTAzMy41IiB5Mj0iLTYxMiIg
c3Ryb2tlPSJ3aGl0ZSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJv
dW5kIiBzdHJva2Utd2lkdGg9IjIxIi8+Ci0gICAgICAgICAgICA8bGluZSB4MT0iLTEwMzMuMjUi
IHkxPSItNTQ5LjI1IiB4Mj0iLTEwNjEuNSIgeTI9Ii01MTciIHN0cm9rZT0id2hpdGUiIHN0cm9r
ZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIy
MSIvPgotICAgICAgICA8L2c+Ci0gICAgPC9nPgotPC9zdmc+CkluZGV4OiBUb29scy9yZXN1bHRz
ZGJweS9yZXN1bHRzZGJweS92aWV3L3N0YXRpYy9saWJyYXJ5L2pzL1JlZi5qcwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS92aWV3L3N0YXRpYy9saWJyYXJ5L2pz
L1JlZi5qcwkocmV2aXNpb24gMjY1NTMxKQorKysgVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2Ri
cHkvdmlldy9zdGF0aWMvbGlicmFyeS9qcy9SZWYuanMJKG5vbmV4aXN0ZW50KQpAQCAtMSw0NjAg
KzAsMCBAQAotLy8gQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotLy8gYXJlIG1ldDoKLS8vIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotLy8gICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LS8vICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAotLy8gQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKLS8vIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLS8vIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0vLyBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMCi0vLyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotLy8gU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIK
LS8vIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0vLyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLQotZnVuY3Rpb24gdXVpZHY0KCkgewotICAgIHJldHVybiAoWzFlN10rLTFlMyst
NGUzKy04ZTMrLTFlMTEpLnJlcGxhY2UoL1swMThdL2csIGMgPT4KLSAgICAgICAgKGMgXiBjcnlw
dG8uZ2V0UmFuZG9tVmFsdWVzKG5ldyBVaW50OEFycmF5KDEpKVswXSAmIDE1ID4+IGMgLyA0KS50
b1N0cmluZygxNikKLSAgICApCi19Ci0KLWNvbnN0IFRSQUNFX1NUQVRFID0gZmFsc2U7Ci0KLWNs
YXNzIFNpZ25hbCB7Ci0gICAgY29uc3RydWN0b3IoaGFuZGxlcnMpIHsKLSAgICAgICAgdGhpcy5o
YW5kbGVycyA9IGhhbmRsZXJzID8gaGFuZGxlcnMgOiBbXTsKLSAgICAgICAgdGhpcy5tYXhpbnVt
UnVuVGltZSA9IDEgLyAzMCAqIDEwMDA7Ci0gICAgfQotICAgIGFkZExpc3RlbmVyKGZuKSB7Ci0g
ICAgICAgIGlmICghZm4pIHJldHVybiB0aGlzOwotICAgICAgICB0aGlzLmhhbmRsZXJzLnB1c2go
Zm4pOwotICAgICAgICByZXR1cm4gdGhpczsKLSAgICB9Ci0gICAgcmVtb3ZlTGlzdGVuZXIoZm4p
IHsKLSAgICAgICAgbGV0IHJlbW92ZUluZGV4ID0gMDsKLSAgICAgICAgdGhpcy5oYW5kbGVycy5m
b3JFYWNoKChoYW5kbGVyLCBpbmRleCkgPT4gewotICAgICAgICAgICAgaWYgKGhhbmRsZXIgPT09
IGZuKQotICAgICAgICAgICAgICAgIHJlbW92ZUluZGV4ID0gaW5kZXg7Ci0gICAgICAgIH0pOwot
ICAgICAgICB0aGlzLmhhbmRsZXJzLnNwbGljZShyZW1vdmVJbmRleCwgMSk7Ci0gICAgICAgIHJl
dHVybiB0aGlzOwotICAgIH0KLSAgICByZW1vdmVBbGxMaXN0ZW5lcigpIHsKLSAgICAgICAgdGhp
cy5oYW5kbGVycyA9IFtdOwotICAgICAgICByZXR1cm4gdGhpczsKLSAgICB9Ci0gICAgZW1pdCgu
Li5hcmdzKSB7Ci0gICAgICAgIGlmICh0aGlzLmhhbmRsZXJzKSB7Ci0gICAgICAgICAgICB0aGlz
LnJlcXVlc3RFbWl0KDAsIC4uLmFyZ3MpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aGlz
OwotICAgIH0KLSAgICByZXF1ZXN0RW1pdChmcm9tLCAuLi5hcmdzKSB7Ci0gICAgICAgIHJldHVy
biBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKLSAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4g
ewotICAgICAgICAgICAgICAgIGNvbnN0IHN0YXJ0ZWRUaW1lID0gbmV3IERhdGUoKS5nZXRUaW1l
KCk7Ci0gICAgICAgICAgICAgICAgLy8gUnVuIGFzIG1hbnkgaGFuZGxlcnMgYXMgcG9zaWJsZQot
ICAgICAgICAgICAgICAgIGxldCBpID0gZnJvbTsKLSAgICAgICAgICAgICAgICBmb3IgKDsgaSA8
IHRoaXMuaGFuZGxlcnMubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5o
YW5kbGVyc1tpXSguLi5hcmdzKTsKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgZW5kVGltZSA9
IG5ldyBEYXRlKCkuZ2V0VGltZSgpOwotICAgICAgICAgICAgICAgICAgICBpZiAoZW5kVGltZSAt
IHN0YXJ0ZWRUaW1lID49IHRoaXMubWF4aW51bVJ1blRpbWUpIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHRoaXMucmVxdWVzdEVtaXQoaSsxLCAuLi5hcmdzKS50aGVuKCgpID0+IHJlc29sdmUo
KSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoaSA9PT0gdGhpcy5oYW5k
bGVycy5sZW5ndGgpIHsKLSAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOwotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIH0pOwotICAgICAgICB9KTsKLSAgICB9Ci19Ci0KLWNsYXNz
IEV2ZW50U3RyZWFtIHsKLSAgICBjb25zdHJ1Y3RvcihzaWduYWwpIHsKLSAgICAgICAgdGhpcy5z
aWduYWwgPSBzaWduYWwgPyBzaWduYWwgOiBuZXcgU2lnbmFsKCk7Ci0gICAgICAgIHRoaXMuZXJy
b3JTaWduYWwgPSBuZXcgU2lnbmFsKCk7Ci0gICAgICAgIHRoaXMuc3RvcFNpZ25hbCA9IG5ldyBT
aWduYWwoKTsKLSAgICAgICAgdGhpcy5sYXN0VmFsdWUgPSBudWxsOwotICAgIH0KLSAgICBhY3Rp
b24oZm4pIHsKLSAgICAgICAgdGhpcy5zaWduYWwuYWRkTGlzdGVuZXIoZm4pOwotICAgICAgICBy
ZXR1cm4gdGhpczsKLSAgICB9Ci0gICAgc3RvcEFjdGlvbihmbikgewotICAgICAgICB0aGlzLnNp
Z25hbC5yZW1vdmVMaXN0ZW5lcihmbik7Ci0gICAgICAgIHJldHVybiB0aGlzOwotICAgIH0KLSAg
ICBlcnJvcihmbikgewotICAgICAgICB0aGlzLmVycm9yU2lnbmFsLmFkZExpc3RlbmVyKGZuKTsK
LSAgICAgICAgcmV0dXJuIHRoaXM7Ci0gICAgfQotICAgIHN0b3AoKSB7Ci0gICAgICAgIHRoaXMu
c2lnbmFsLnJlbW92ZUFsbExpc3RlbmVyKCk7Ci0gICAgICAgIHRoaXMuZXJyb3JTaWduYWwucmVt
b3ZlQWxsTGlzdGVuZXIoKTsKLSAgICAgICAgdGhpcy5zdG9wU2lnbmFsLmVtaXQoKTsKLSAgICAg
ICAgcmV0dXJuIHRoaXM7Ci0gICAgfQotICAgIG9uU3RvcChmbikgewotICAgICAgICB0aGlzLnN0
b3BTaWduYWwuYWRkTGlzdGVuZXIoZm4pOwotICAgICAgICByZXR1cm4gdGhpczsKLSAgICB9Ci0g
ICAgYWRkKC4uLmFyZ3MpIHsKLSAgICAgICAgdGhpcy5sYXN0VmFsdWUgPSBhcmdzOwotICAgICAg
ICB0aGlzLnNpZ25hbC5lbWl0KC4uLmFyZ3MpOwotICAgICAgICByZXR1cm4gdGhpczsKLSAgICB9
Ci0gICAgZ2V0TGFzdFZhbHVlKCkgewotICAgICAgICByZXR1cm4gdGhpcy5sYXN0VmFsdWU7Ci0g
ICAgfQotICAgIHJlcGxheUxhc3QoKSB7Ci0gICAgICAgIGNvbnN0IGxhc3RWYWx1ZSA9IHRoaXMu
Z2V0TGFzdFZhbHVlKCk7Ci0gICAgICAgIGlmIChsYXN0VmFsdWUpCi0gICAgICAgICAgICB0aGlz
LmFkZCguLi5sYXN0VmFsdWUpOwotICAgIH0KLSAgICBhZGRQcm9taXNlKHApIHsKLSAgICAgICAg
bGV0IHRoYXQgPSB0aGlzOwotICAgICAgICBwLnRoZW4oKC4uLmFyZ3MpID0+IHsKLSAgICAgICAg
ICAgIHRoYXQuYWRkKC4uLmFyZ3MpOwotICAgICAgICB9KS5jYXRjaCgoLi4uYXJncykgPT4gewot
ICAgICAgICAgICAgdGhhdC5hZGRFcnJvciguLi5hcmdzKTsKLSAgICAgICAgfSk7Ci0gICAgfQot
ICAgIGFkZEVycm9yKC4uLmFyZ3MpIHsKLSAgICAgICAgdGhpcy5lcnJvclNpZ25hbC5lbWl0KC4u
LmFyZ3MpOwotICAgIH0KLSAgICBhZGRXaXRoRGVsYXkoZGVsYXksIC4uLmFyZ3MpIHsKLSAgICAg
ICAgc2V0VGltZW91dCgoKSA9PiB7Ci0gICAgICAgICAgICB0aGlzLmFkZCguLi5hcmdzKTsKLSAg
ICAgICAgfSwgZGVsYXkpOwotICAgICAgICByZXR1cm4gdGhpczsKLSAgICB9Ci0gICAgZmlsdGVy
KGZpbHRlckZuKSB7Ci0gICAgICAgIGNvbnN0IHJlcyA9IG5ldyBFdmVudFN0cmVhbSgpOwotICAg
ICAgICB0aGlzLmFjdGlvbigoLi4uYXJncykgPT4gewotICAgICAgICAgICAgaWYgKGZpbHRlckZu
KC4uLmFyZ3MpKQotICAgICAgICAgICAgICAgIHJlcy5hZGQoLi4uYXJncyk7Ci0gICAgICAgIH0p
OwotICAgICAgICByZXR1cm4gcmVzOwotICAgIH0KLSAgICByZW1haW5zKGZpbHRlckZuKSB7Ci0g
ICAgICAgIGNvbnN0IHJlcyA9IG5ldyBFdmVudFN0cmVhbSgpOwotICAgICAgICB0aGlzLmFjdGlv
bigoLi4uYXJncykgPT4gewotICAgICAgICAgICAgaWYgKCFmaWx0ZXJGbiguLi5hcmdzKSkKLSAg
ICAgICAgICAgICAgICByZXMuYWRkKC4uLmFyZ3MpOwotICAgICAgICB9KTsKLSAgICAgICAgcmV0
dXJuIHJlczsKLSAgICB9Ci0gICAgbWFwKGZuKSB7Ci0gICAgICAgIGNvbnN0IHJlcyA9IG5ldyBF
dmVudFN0cmVhbSgpOwotICAgICAgICB0aGlzLmFjdGlvbigoLi4uYXJncykgPT4gewotICAgICAg
ICAgICAgcmVzLmFkZChmbiguLi5hcmdzKSk7Ci0gICAgICAgIH0pOwotICAgICAgICByZXR1cm4g
cmVzOwotICAgIH0KLSAgICBzY2FuKGZuKSB7Ci0gICAgICAgIGNvbnN0IHJlcyA9IG5ldyBFdmVu
dFN0cmVhbSgpOwotICAgICAgICBsZXQgYWNjdW11bGF0b3IgPSBudWxsOwotICAgICAgICB0aGlz
LmFjdGlvbigoLi4uYXJncykgPT4gewotICAgICAgICAgICAgYWNjdW11bGF0b3IgPSBmbihhY2N1
bXVsYXRvciwgLi4uYXJncyk7Ci0gICAgICAgICAgICByZXMuYWRkKGFjY3VtdWxhdG9yKTsKLSAg
ICAgICAgfSk7Ci0gICAgICAgIHJldHVybiByZXM7Ci0gICAgfQotICAgIGZsYXRNYXAoZm4pIHsK
LSAgICAgICAgY29uc3QgcmVzID0gbmV3IEV2ZW50U3RyZWFtKCk7Ci0gICAgICAgIHRoaXMuYWN0
aW9uKCguLi5hcmdzKSA9PiB7Ci0gICAgICAgICAgICBmbihyZXMpKC4uLmFyZ3MpOwotICAgICAg
ICB9KTsKLSAgICAgICAgcmV0dXJuIHJlczsKLSAgICB9Ci0gICAgaW5qZWN0KGVzLCAuLi5hcmdz
KSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmFjdGlvbigoKSA9PiB7Ci0gICAgICAgICAgICBlcy5h
ZGQoLi4uYXJncyk7Ci0gICAgICAgIH0pOwotICAgIH0KLSAgICBzdGF0aWMgbWVyZ2UoLi4uYXJn
cykgewotICAgICAgICBjb25zdCByZXMgPSBuZXcgRXZlbnRTdHJlYW0oKTsKLSAgICAgICAgQXJy
YXkucHJvdG90eXBlLmZvckVhY2guY2FsbChhcmdzLCAoKHN0cmVhbSkgPT4gewotICAgICAgICAg
ICAgc3RyZWFtLmFjdGlvbigoKSA9PiB7Ci0gICAgICAgICAgICAgICAgcmVzLmFkZCguLi5hcmdz
KTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9KSk7Ci0gICAgICAgIHJldHVybiByZXM7Ci0g
ICAgfQotICAgIHN0YXRpYyBmcm9tTW9uaXRvcihmbiwgaW50ZXJ2YWwsIGluaXRpYWwpIHsKLSAg
ICAgICAgY29uc3QgcmVzID0gbmV3IEV2ZW50U3RyZWFtKCk7Ci0gICAgICAgIGxldCBoYW5kbGVy
ID0gbnVsbDsKLSAgICAgICAgbGV0IHJlc3VsdCA9IGluaXRpYWw7Ci0gICAgICAgIHJlcy5vblN0
b3AoKCkgPT4gewotICAgICAgICAgICAgY2xlYXJUaW1lb3V0KGhhbmRsZXIpOwotICAgICAgICB9
KTsKLSAgICAgICAgY29uc3QgcG9sbCA9ICgpID0+IHsKLSAgICAgICAgICAgIHJlc3VsdCA9IGZu
KHJlc3VsdCk7Ci0gICAgICAgICAgICBpZiAocmVzdWx0IGluc3RhbmNlb2YgUHJvbWlzZSkKLSAg
ICAgICAgICAgICAgICByZXMuYWRkUHJvbWlzZShyZXN1bHQpOwotICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgICAgIHJlcy5hZGQocmVzdWx0KTsKLSAgICAgICAgICAgIGhhbmRsZXIgPSBz
ZXRUaW1lb3V0KHBvbGwsIGludGVydmFsKTsKLSAgICAgICAgfQotICAgICAgICBwb2xsKCk7Ci0g
ICAgICAgIHJldHVybiByZXM7Ci0gICAgfQotfQotCi1mdW5jdGlvbiBpc01lcmdlYWJsZVN0YXRl
KHN0YXRlKSB7Ci0gICAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChzdGF0
ZSkgPT09ICJbb2JqZWN0IE9iamVjdF0iOwotfQotCi1mdW5jdGlvbiBhcHBseVN0YXRlRGlmZihz
dGF0ZSwgZGlmZikgewotICAgIGlmIChkaWZmID09PSB1bmRlZmluZWQpCi0gICAgICAgIHJldHVy
biBzdGF0ZTsKLSAgICBpZiAoIWlzTWVyZ2VhYmxlU3RhdGUoZGlmZikpCi0gICAgICAgIHJldHVy
biBkaWZmOwotICAgIGNvbnN0IHJlcyA9IHt9OwotICAgIGlmIChzdGF0ZSkgewotICAgICAgICBP
YmplY3Qua2V5cyhzdGF0ZSkuZm9yRWFjaCgoa2V5KSA9PiB7Ci0gICAgICAgICAgICByZXNba2V5
XSA9IHN0YXRlW2tleV07Ci0gICAgICAgIH0pOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHJldHVy
biBzdGF0ZTsKLSAgICB9Ci0gICAgaWYgKGRpZmYpIHsKLSAgICAgICAgT2JqZWN0LmtleXMoZGlm
ZikuZm9yRWFjaCgoa2V5KSA9PiB7Ci0gICAgICAgICAgICByZXNba2V5XSA9IGRpZmZba2V5XTsK
LSAgICAgICAgfSk7Ci0gICAgfQotICAgIHJldHVybiByZXM7Ci19Ci0KLWNsYXNzIFJlZiB7Ci0g
ICAgY29uc3RydWN0b3IoY29uZmlnKSB7Ci0gICAgICAgIHRoaXMua2V5ID0gdXVpZHY0KCk7Ci0g
ICAgICAgIHRoaXMuZWxlbWVudCA9IG51bGw7Ci0gICAgICAgIHRoaXMubGFzdFN0YXRlRGlmZiA9
IG51bGw7Ci0gICAgICAgIGNvbmZpZyA9IGNvbmZpZyA/IGNvbmZpZyA6IHt9OwotICAgICAgICB0
aGlzLnN0YXRlVHJhY2VyID0gY29uZmlnLnN0YXRlICE9PSB1bmRlZmluZWQgPyBbY29uZmlnLnN0
YXRlXSA6IFtdOwotICAgICAgICB0aGlzLnN0YXRlID0gY29uZmlnLnN0YXRlICE9PSB1bmRlZmlu
ZWQgPyBjb25maWcuc3RhdGUgOiB7fTsKLSAgICAgICAgdGhpcy5vblN0YXRlVXBkYXRlID0gbmV3
IFNpZ25hbCgpLmFkZExpc3RlbmVyKGNvbmZpZy5vblN0YXRlVXBkYXRlKTsKLSAgICAgICAgdGhp
cy5vbkVsZW1lbnRNb3VudCA9IG5ldyBTaWduYWwoKS5hZGRMaXN0ZW5lcihjb25maWcub25FbGVt
ZW50TW91bnQpOwotICAgICAgICB0aGlzLm9uRWxlbWVudFVubW91bnQgPSBuZXcgU2lnbmFsKCku
YWRkTGlzdGVuZXIoY29uZmlnLm9uRWxlbWVudFVubW91bnQpOwotICAgIH0KLSAgICBiaW5kKGVs
ZW1lbnQpIHsKLSAgICAgICAgdGhpcy5hcHBseShlbGVtZW50LnF1ZXJ5U2VsZWN0b3IoYFtyZWY9
IiR7dGhpcy5rZXl9Il1gKSk7Ci0gICAgfQotCi0gICAgYXBwbHkoZWxlbWVudCkgewotICAgICAg
ICBpZiAoIWVsZW1lbnQpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGlmICh0aGlzLmVs
ZW1lbnQgPT09IGVsZW1lbnQpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGlmICh0aGlz
LmVsZW1lbnQgJiYgdGhpcy5lbGVtZW50ICE9PSBlbGVtZW50KQotICAgICAgICAgICAgdGhpcy5v
bkVsZW1lbnRVbm1vdW50LmVtaXQodGhpcy5lbGVtZW50KTsKLSAgICAgICAgdGhpcy5lbGVtZW50
ID0gZWxlbWVudDsKLSAgICAgICAgLy9Jbml0aWFsIHN0YXRlCi0gICAgICAgIGlmICh0aGlzLnN0
YXRlICE9PSB1bmRlZmluZWQgJiYgdGhpcy5zdGF0ZSAhPT0gbnVsbCkKLSAgICAgICAgICAgIHRo
aXMub25TdGF0ZVVwZGF0ZS5lbWl0KHRoaXMuZWxlbWVudCwgdGhpcy5zdGF0ZSwgdGhpcy5zdGF0
ZSk7Ci0gICAgICAgIHRoaXMub25FbGVtZW50TW91bnQuZW1pdCh0aGlzLmVsZW1lbnQpOwotICAg
IH0KLSAgICBkZXN0b3J5KGVsZW1lbnQpIHsKLSAgICAgICAgaWYgKCFlbGVtZW50IHx8IGVsZW1l
bnQgIT09IHRoaXMuZWxlbWVudCkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgdGhpcy5v
bkVsZW1lbnRVbm1vdW50LmVtaXQodGhpcy5lbGVtZW50KTsKLSAgICB9Ci0gICAgdG9TdHJpbmco
KSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmtleTsKLSAgICB9Ci0gICAgc2V0U3RhdGUoc3RhdGVE
aWZmKSB7Ci0gICAgICAgIGlmIChzdGF0ZURpZmYgPT09IHVuZGVmaW5lZCkKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgaWYgKFRSQUNFX1NUQVRFKQotICAgICAgICAgICAgdGhpcy5zdGF0
ZVRyYWNlci5wdXNoKHN0YXRlRGlmZik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRoaXMu
c3RhdGVUcmFjZXIgPSBbc3RhdGVEaWZmXTsKLSAgICAgICAgdGhpcy5sYXN0U3RhdGVEaWZmID0g
c3RhdGVEaWZmOwotICAgICAgICAvL0lmIGVsZW1lbnQgaGF2ZW4ndCBiZWVuIG1vdW50LCB3ZSBq
dXN0IHVwZGF0ZSB0aGUgc3RhdGUsIHNvIHRoYXQgd2Ugd2lsbCBvbmx5IHJlbmRlciB0aGUgZmlu
aWFsIHN0YXQgd2hlbiBlbGVtZW50IG1vdW50Ci0gICAgICAgIGlmICh0aGlzLmVsZW1lbnQpCi0g
ICAgICAgICAgICB0aGlzLm9uU3RhdGVVcGRhdGUuZW1pdCh0aGlzLmVsZW1lbnQsIHN0YXRlRGlm
ZiwgdGhpcy5zdGF0ZSk7Ci0gICAgICAgIHRoaXMuc3RhdGUgPSBhcHBseVN0YXRlRGlmZih0aGlz
LnN0YXRlLCBzdGF0ZURpZmYpOwotICAgIH0KLSAgICBmcm9tRXZlbnQoZXZlbnQsIC4uLmFyZ3Mp
IHsKLSAgICAgICAgY29uc3QgcmVzID0gbmV3IEV2ZW50U3RyZWFtKCk7Ci0gICAgICAgIHRoaXMu
b25FbGVtZW50TW91bnQuYWRkTGlzdGVuZXIoKGVsZW1lbnQpID0+IGVsZW1lbnQuYWRkRXZlbnRM
aXN0ZW5lcihldmVudCwgKGUpID0+IHsKLSAgICAgICAgICAgIHJlcy5hZGQoZSwgLi4uYXJncyk7
Ci0gICAgICAgIH0pKTsKLSAgICAgICAgcmV0dXJuIHJlczsKLSAgICB9Ci19Ci0KLWNsYXNzIFJl
Zk1hbmdlciB7Ci0gICAgY29uc3RydWN0b3IoKSB7Ci0gICAgICAgIHRoaXMucmVmcyA9IHt9Owot
ICAgIH0KLSAgICBjcmVhdGVSZWYoY29uZmlnKSB7Ci0gICAgICAgIGNvbnN0IHJlZiA9IG5ldyBS
ZWYoY29uZmlnKTsKLSAgICAgICAgdGhpcy5yZWZzW3JlZi5rZXldID0gcmVmOwotICAgICAgICBy
ZXR1cm4gcmVmOwotICAgIH0KLSAgICBiaW5kQWxsKGRvbSkgewotICAgICAgICBjb25zdCBub2Rl
SXRlcmF0b3IgPSBkb2N1bWVudC5jcmVhdGVOb2RlSXRlcmF0b3IoCi0gICAgICAgICAgICBkb20s
Ci0gICAgICAgICAgICBOb2RlRmlsdGVyLlNIT1dfRUxFTUVOVCwKLSAgICAgICAgICAgIChub2Rl
KSA9PiB7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlZktleSA9IG5vZGUuZ2V0QXR0cmli
dXRlKCdyZWYnKTsKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVmID0gdGhpcy5yZWZzW3Jl
ZktleV07Ci0gICAgICAgICAgICAgICAgICAgIGlmIChyZWYpCi0gICAgICAgICAgICAgICAgICAg
ICAgICByZWYuYXBwbHkuY2FsbChyZWYsbm9kZSk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVy
biByZWYgPyBOb2RlRmlsdGVyLkZJTFRFUl9BQ0NFUFQgOiBOb2RlRmlsdGVyLkZJTFRFUl9SRUpF
Q1Q7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICk7Ci0gICAgICAgIGxldCBjdXJyZW50Tm9kZSA9
IG51bGw7Ci0gICAgICAgIHdoaWxlIChjdXJyZW50Tm9kZSA9IG5vZGVJdGVyYXRvci5uZXh0Tm9k
ZSgpKTsKLSAgICB9Ci0gICAgdW5iaW5kQWxsKGRvbSkgewotICAgICAgICBjb25zdCBub2RlSXRl
cmF0b3IgPSBkb2N1bWVudC5jcmVhdGVOb2RlSXRlcmF0b3IoCi0gICAgICAgICAgICBkb20sCi0g
ICAgICAgICAgICBOb2RlRmlsdGVyLlNIT1dfRUxFTUVOVCwKLSAgICAgICAgICAgIChub2RlKSA9
PiB7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlZktleSA9IG5vZGUuZ2V0QXR0cmlidXRl
KCdyZWYnKTsKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVmID0gdGhpcy5yZWZzW3JlZktl
eV07Ci0gICAgICAgICAgICAgICAgICAgIGlmIChyZWYpIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHJlZi5kZXN0b3J5LmNhbGwocmVmLG5vZGUpOwotICAgICAgICAgICAgICAgICAgICAgICAg
ZGVsZXRlIHRoaXMucmVmc1tyZWZLZXldOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgICAgIHJldHVybiByZWYgPyBOb2RlRmlsdGVyLkZJTFRFUl9BQ0NFUFQgOiBOb2Rl
RmlsdGVyLkZJTFRFUl9SRUpFQ1Q7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICk7Ci0gICAgICAg
IGxldCBjdXJyZW50Tm9kZSA9IG51bGw7Ci0gICAgICAgIHdoaWxlIChjdXJyZW50Tm9kZSA9IG5v
ZGVJdGVyYXRvci5uZXh0Tm9kZSgpKTsKLSAgICB9Ci19Ci0KLWNvbnN0IFJFRiA9IG5ldyBSZWZN
YW5nZXIoKTsKLQotZnVuY3Rpb24gY3JlYXRlRG9tRWxlbWVudHNGcm9tU3RyKHN0cmluZykgewot
ICAgIGNvbnN0IGZha2VFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Ci0g
ICAgZmFrZUVsZW1lbnQuaW5uZXJIVE1MID0gc3RyaW5nOwotICAgIGNvbnN0IGVsZW1lbnRzID0g
W107Ci0gICAgQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChmYWtlRWxlbWVudC5jaGlsZHJl
biwgKGVsZW1lbnQpID0+IHsKLSAgICAgICAgZWxlbWVudC5yZW1vdmUoKTsKLSAgICAgICAgZWxl
bWVudHMucHVzaChlbGVtZW50KTsKLSAgICB9KTsKLSAgICByZXR1cm4gZWxlbWVudHM7Ci19Ci0K
LWNvbnN0IERPTSA9IHsKLSAgICBpbmplY3Q6IChlbGVtZW50LCBzdHJpbmcpID0+IHsKLSAgICAg
ICAgUkVGLnVuYmluZEFsbChlbGVtZW50KTsKLSAgICAgICAgZWxlbWVudC5pbm5lckhUTUwgPSBz
dHJpbmc7Ci0gICAgICAgIFJFRi5iaW5kQWxsKGVsZW1lbnQpOwotICAgIH0sCi0gICAgcHJlcGVu
ZDogKGVsZW1lbnQsIHN0cmluZykgPT4gewotICAgICAgICBpZiAoZWxlbWVudC5jaGlsZHJlbi5s
ZW5ndGggPT09IDApIHsKLSAgICAgICAgICAgIERPTS5pbmplY3QoZWxlbWVudCwgc3RyaW5nKTsK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBET00uYmVmb3JlKGVsZW1l
bnQuZmlyc3RFbGVtZW50Q2hpbGQsIHN0cmluZyk7Ci0gICAgfSwKLSAgICBhcHBlbmQ6IChlbGVt
ZW50LCBzdHJpbmcpID0+IHsKLSAgICAgICAgaWYgKGVsZW1lbnQuY2hpbGRyZW4ubGVuZ3RoID09
PSAwKSB7Ci0gICAgICAgICAgICBET00uaW5qZWN0KGVsZW1lbnQsIHN0cmluZyk7Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgRE9NLmFmdGVyKGVsZW1lbnQubGFzdEVs
ZW1lbnRDaGlsZCwgc3RyaW5nKTsKLSAgICB9LAotICAgIGJlZm9yZTogKGVsZW1lbnQsIHN0cmlu
ZykgPT4gewotICAgICAgICBjb25zdCBlbGVtZW50cyA9IGNyZWF0ZURvbUVsZW1lbnRzRnJvbVN0
cihzdHJpbmcpOwotICAgICAgICBlbGVtZW50LmJlZm9yZSguLi5lbGVtZW50cyk7Ci0gICAgICAg
IGVsZW1lbnRzLmZvckVhY2goKGVsbSkgPT4gewotICAgICAgICAgICAgUkVGLmJpbmRBbGwoZWxt
KTsKLSAgICAgICAgfSk7Ci0gICAgfSwKLSAgICBhZnRlcjogKGVsZW1lbnQsIHN0cmluZykgPT4g
ewotICAgICAgICBjb25zdCBlbGVtZW50cyA9IGNyZWF0ZURvbUVsZW1lbnRzRnJvbVN0cihzdHJp
bmcpOwotICAgICAgICBlbGVtZW50LmFmdGVyKC4uLmVsZW1lbnRzKTsKLSAgICAgICAgZWxlbWVu
dHMuZm9yRWFjaCgoZWxtKSA9PiB7Ci0gICAgICAgICAgICBSRUYuYmluZEFsbChlbG0pOwotICAg
ICAgICB9KTsKLSAgICB9LAotICAgIHJlcGxhY2U6IChlbGVtZW50LCBzdHJpbmcpID0+IHsKLSAg
ICAgICAgRE9NLmJlZm9yZShlbGVtZW50LCBzdHJpbmcpOwotICAgICAgICBSRUYudW5iaW5kQWxs
KGVsZW1lbnQpOwotICAgICAgICBlbGVtZW50LnJlbW92ZSgpOwotICAgIH0sCi0gICAgcmVtb3Zl
OiAoZWxlbWVudCkgPT4gewotICAgICAgICBSRUYudW5iaW5kQWxsKGVsZW1lbnQpOwotICAgICAg
ICBlbGVtZW50LnJlbW92ZSgpOwotICAgIH0sCi19OwotZnVuY3Rpb24gZGlmZihvbGRWYWx1ZSwg
bmV3VmFsdWUsIHJlbW92ZUNhbGxiYWNrLCBhZGRDYWxsYmFjaywgZ2V0S2V5ID0gaXRlbSA9PiBp
dGVtLnRvU3RyaW5nKCkpIHsKLSAgICBpZiAoIW5ld1ZhbHVlKSByZXR1cm47Ci0gICAgaWYgKG9s
ZFZhbHVlID09PSBuZXdWYWx1ZSkgcmV0dXJuOwotICAgIGlmIChBcnJheS5pc0FycmF5KG9sZFZh
bHVlKSAmJiBBcnJheS5pc0FycmF5KG5ld1ZhbHVlKSkgewotICAgICAgICBjb25zdCBuZXdBcnJh
eU1hcCA9IG5ldyBNYXAoKTsKLSAgICAgICAgbmV3VmFsdWUuZm9yRWFjaCgoaXRlbSwgaW5kZXgp
ID0+IHsKLSAgICAgICAgICAgICBuZXdBcnJheU1hcC5zZXQoZ2V0S2V5KGl0ZW0pLCB7Ci0gICAg
ICAgICAgICAgICAgIGl0ZW06IGl0ZW0sCi0gICAgICAgICAgICAgICAgIGluZGV4OiBpbmRleCwK
LSAgICAgICAgICAgICAgICAgb2xkSW5kZXg6IC0xCi0gICAgICAgICAgICAgfSk7Ci0gICAgICAg
IH0pOwotICAgICAgICBvbGRWYWx1ZS5mb3JFYWNoKChvbGRJdGVtLCBpbmRleCkgPT4gewotICAg
ICAgICAgICAgY29uc3Qgb2xkSXRlbUtleSA9IGdldEtleShvbGRJdGVtKTsKLSAgICAgICAgICAg
IGlmICghbmV3QXJyYXlNYXAuaGFzKG9sZEl0ZW1LZXkpKQotICAgICAgICAgICAgICAgIHJlbW92
ZUNhbGxiYWNrKG9sZEl0ZW0sIGluZGV4KTsKLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAg
ICAgICAgIGNvbnN0IG5ld0VudHJ5ID0gbmV3QXJyYXlNYXAuZ2V0KG9sZEl0ZW1LZXkpOwotICAg
ICAgICAgICAgICAgIGlmIChuZXdFbnRyeSkgewotICAgICAgICAgICAgICAgICAgICBuZXdFbnRy
eS5vbGRJbmRleCA9IGluZGV4OwotICAgICAgICAgICAgICAgICAgICBuZXdFbnRyeS5pdGVtID0g
b2xkSXRlbTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0pOwot
ICAgICAgICBmb3IgKGxldCBlbnRyeSBvZiBuZXdBcnJheU1hcC5lbnRyaWVzKCkpIHsKLSAgICAg
ICAgICAgIGFkZENhbGxiYWNrKGVudHJ5WzFdLml0ZW0sIGVudHJ5WzFdLmluZGV4LCBlbnRyeVsx
XS5vbGRJbmRleCk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLWNvbnN0IEZQID0gewotICAgIGNv
bXBvc2VyOiAoZm4pID0+IHsKLSAgICAgICAgLy8gSW5wdXQgZnVuY3Rpb24gbXVzdCBiZSBhIGN1
cnJ5aW5nIGZ1bmN0aW9uCi0gICAgICAgIC8vIENvbXBvc2VyIHdpbGwgY29tcG9zZSB0aGF0IGN1
cnJ5aW5nIGZ1bmN0aW9uIGNhbGwKLSAgICAgICAgLy8gTWFraW5nIGEgY3VycnlpbmcgZnVuY3Rp
b24gZm4gPSAoYSkgPT4gKGIpID0+IHsuLi4ufSBjYW4gYmUgY2FsbGVkCi0gICAgICAgIC8vIGNv
bXBvc2VyID0gRlAuY29tcG9zZXIoZm4pOwotICAgICAgICAvLyBjb21wb3NlcihhKTsgY29tcG9z
ZXIoYik7Ci0gICAgICAgIC8vIGluc3RlYWQgb2YgY2FsbGluZyBpdCBmbihhKShiKTsKLSAgICAg
ICAgY29uc29sZS5hc3NlcnQodHlwZW9mIGZuID09PSAiZnVuY3Rpb24iICYmIGZuLmxlbmd0aCA9
PT0gMSk7Ci0gICAgICAgIGxldCByZXN1bHQgPSBmbjsKLSAgICAgICAgcmV0dXJuICguLi5hcmdz
KSA9PiB7Ci0gICAgICAgICAgICBhcmdzLmZvckVhY2goYXJnID0+IHsKLSAgICAgICAgICAgICAg
ICByZXN1bHQgPSByZXN1bHQoYXJnKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9Ci0gICAg
fSwKLSAgICBjdXJyeWluZzogKGZuKSA9PiB7Ci0gICAgICAgIC8vIEN1cnJ5aW5nIGlucHV0IGZ1
bmN0aW9uCi0gICAgICAgIC8vIChhLCBiKSA9PiB7Li4ufQotICAgICAgICAvLyB0bwotICAgICAg
ICAvLyAoYSkgPT4gKGIpID0+IHsuLi59Ci0gICAgICAgIGNvbnN0IGFyZ3MgPSBbXTsKLSAgICAg
ICAgY29uc3QgcmV0dXJuRm4gPSAoeCkgPT4gewotICAgICAgICAgICAgYXJncy5wdXNoKHgpOwot
ICAgICAgICAgICAgaWYgKGFyZ3MubGVuZ3RoID09PSBmbi5sZW5ndGgpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIGZuKC4uLmFyZ3MpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAg
IHJldHVybiByZXR1cm5GbjsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gcmV0dXJuRm47Ci0g
ICAgfQotfQotZXhwb3J0IHtSRUYsIERPTSwgZGlmZiwgRlAsIEV2ZW50U3RyZWFtLCB1dWlkdjR9
OwpJbmRleDogVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9zdGF0aWMvbGlicmFy
eS9qcy9UZXN0LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5
L3ZpZXcvc3RhdGljL2xpYnJhcnkvanMvVGVzdC5qcwkocmV2aXNpb24gMjY1NTMxKQorKysgVG9v
bHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9zdGF0aWMvbGlicmFyeS9qcy9UZXN0Lmpz
CShub25leGlzdGVudCkKQEAgLTEsMjQxICswLDAgQEAKLWltcG9ydCB7RXZlbnRTdHJlYW19IGZy
b20gJy4vUmVmLmpzJzsKLQotY2xhc3MgQXNzZXJ0RmFpbGVkRXJyb3IgZXh0ZW5kcyBFcnJvciB7
Ci0gICAgY29uc3RydWN0b3IobXNnKSB7Ci0gICAgICAgIHN1cGVyKG1zZykKLSAgICB9Ci19Ci0K
LWZ1bmN0aW9uIHN0cmlwUmVmKGh0bWwpIHsKLSAgICByZXR1cm4gaHRtbC5yZXBsYWNlKC9yZWY9
Iltcd1xkXC1dKyIvZywgIiIpCi19Ci0KLWNsYXNzIEV4cGVjdCB7Ci0gICAgY29uc3RydWN0b3Io
dmFsdWVBKSB7Ci0gICAgICAgIHRoaXMudmFsdWVBID0gdmFsdWVBOwotICAgICAgICB0aGlzLnZh
bHVlQiA9IG51bGw7Ci0gICAgICAgIHJldHVybiB0aGlzOwotICAgIH0KLQotICAgIGlzVHlwZSh0
eXBlKSB7Ci0gICAgICAgIGlmICh0eXBlID09PSBudWxsKSB7Ci0gICAgICAgICAgICBpZiAodGhp
cy52YWx1ZUEgIT09IG51bGwpCi0gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEFzc2VydEZhaWxl
ZEVycm9yKGAke3RoaXMudmFsdWVBfSBzaG91bGQgYmUgbnVsbGApOwotICAgICAgICB9IGVsc2Ug
aWYgKE51bWJlci5pc05hTih0eXBlKSB8fCB0eXBlID09PSAiTmFOIikgewotICAgICAgICAgICAg
aWYgKCFOdW1iZXIuaXNOYU4odGhpcy52YWx1ZUEpKQotICAgICAgICAgICAgICAgIHRocm93IG5l
dyBBc3NlcnRGYWlsZWRFcnJvcihgJHt0aGlzLnZhbHVlQX0gc2hvdWxkIGJlIE5hTmApOyAgICAK
LSAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAiQXJyYXkiIHx8IHR5cGUgPT09ICJhcnJheSIg
fHwgdHlwZSA9PT0gQXJyYXkpIHsKLSAgICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheSh0aGlz
LnZhbHVlQSkpCi0gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEFzc2VydEZhaWxlZEVycm9yKGAk
e3RoaXMudmFsdWVBfSBzaG91bGQgYmUgYW4gQXJyYXlgKTsKLSAgICAgICAgfSBlbHNlIGlmICh0
eXBlb2YgdGhpcy52YWx1ZUEgIT09IHR5cGUgJiYgZmFsc2UgPT09IHRoaXMudmFsdWVBIGluc3Rh
bmNlb2YgdHlwZSkKLSAgICAgICAgICAgIHRocm93IG5ldyBBc3NlcnRGYWlsZWRFcnJvcihgJHt0
aGlzLnZhbHVlQX0gc2hvdWxkIGJlIHR5cGUgJHt0eXBlfWApOwotICAgICAgICByZXR1cm4gdGhp
czsKLSAgICB9Ci0KLSAgICBlcXVhbFRvVmFsdWUodmFsdWVCKSB7Ci0gICAgICAgIGlmICh0aGlz
LnZhbHVlQSAhPT0gdmFsdWVCKQotICAgICAgICAgICAgdGhyb3cgbmV3IEFzc2VydEZhaWxlZEVy
cm9yKGAke3RoaXMudmFsdWVBfSBzaG91bGQgZXF1YWwgdG8gJHt2YWx1ZUJ9YCk7Ci0gICAgfQot
Ci0gICAgZXF1YWxUb0h0bWxXaXRob3V0UmVmKGh0bWwpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMu
ZXF1YWxUb1ZhbHVlKHN0cmlwUmVmKHRoaXMudmFsdWVBKSwgc3RyaXBSZWYoaHRtbCkpOwotICAg
IH0KLQotICAgIGVxdWFsVG9BcnJheShhcnJheSwgY29tcGFyZSA9ICh4LCB5KSA9PiBleHBlY3Qo
eCkuZXF1YWxUb1ZhbHVlKHkpKSB7Ci0gICAgICAgIGV4cGVjdCh0aGlzLnZhbHVlQSkuaXNUeXBl
KCJBcnJheSIpOwotICAgICAgICBleHBlY3QoYXJyYXkpLmlzVHlwZSgiQXJyYXkiKTsKLSAgICAg
ICAgZXhwZWN0KHRoaXMudmFsdWVBLmxlbmd0aCkuZXF1YWxUb1ZhbHVlKGFycmF5Lmxlbmd0aCk7
Ci0gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy52YWx1ZUEubGVuZ3RoOyBpKyspIHsK
LSAgICAgICAgICAgIGNvbXBhcmUodGhpcy52YWx1ZUFbaV0sIGFycmF5W2ldKTsKLSAgICAgICAg
fQotICAgIH0KLQotICAgIG5vdEVxdWFsVG9WYWx1ZSh2YWx1ZUIpIHsKLSAgICAgICAgaWYgKHRo
aXMudmFsdWVBID09PSB2YWx1ZUIpCi0gICAgICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0RmFpbGVk
RXJyb3IoYCR7dGhpcy52YWx1ZUF9IHNob3VsZCBub3QgZXF1YWwgdG8gJHt2YWx1ZUJ9YCk7Ci0g
ICAgfQotCi0gICAgZ3JlYXRlclRoYW4odmFsdWVCKSB7Ci0gICAgICAgIGlmICh0aGlzLnZhbHVl
QSA8PSB2YWx1ZUIpCi0gICAgICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0RmFpbGVkRXJyb3IoYCR7
dGhpcy52YWx1ZUF9IHNob3VsZCBncmVhdGVyIHRoYW4gJHt2YWx1ZUJ9YCk7Ci0gICAgfQotCi0g
ICAgZ3JlYXRlclRoYW5PckVxdWFsVG8odmFsdWVCKSB7Ci0gICAgICAgIGlmICh0aGlzLnZhbHVl
QSA8IHZhbHVlQikKLSAgICAgICAgICAgIHRocm93IG5ldyBBc3NlcnRGYWlsZWRFcnJvcihgJHt0
aGlzLnZhbHVlQX0gc2hvdWxkIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAke3ZhbHVlQn1gKTsK
LSAgICB9Ci0KLSAgICBsZXNzVGhhbih2YWx1ZUIpIHsKLSAgICAgICAgaWYgKHRoaXMudmFsdWVB
ID49IHZhbHVlQikKLSAgICAgICAgICAgIHRocm93IG5ldyBBc3NlcnRGYWlsZWRFcnJvcihgJHt0
aGlzLnZhbHVlQX0gc2hvdWxkIGxlc3MgdGhhbiAke3ZhbHVlQn1gKTsKLSAgICB9Ci0KLSAgICBs
ZXNzVGhhbk9yRXF1YWxUbyh2YWx1ZUIpIHsKLSAgICAgICAgaWYgKHRoaXMudmFsdWVBID4gdmFs
dWVCKQotICAgICAgICAgICAgdGhyb3cgbmV3IEFzc2VydEZhaWxlZEVycm9yKGAke3RoaXMudmFs
dWVBfSBzaG91bGQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICR7dmFsdWVCfWApOwotICAgIH0KLX0K
LQotZnVuY3Rpb24gZXhwZWN0KHZhbHVlKSB7Ci0gICAgcmV0dXJuIG5ldyBFeHBlY3QodmFsdWUp
OwotfQotCi1jbGFzcyBUZXN0U3VpdGUgewotICAgIGV4cGVjdCh2YWx1ZSkgewotICAgICAgICBy
ZXR1cm4gZXhwZWN0KHZhbHVlKTsKLSAgICB9Ci0KLSAgICBzbGVlcChtaWxsaXNlY29uZHMpIHsK
LSAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7Ci0gICAgICAgICAgICBz
ZXRUaW1lb3V0KHJlc29sdmUsIG1pbGxpc2Vjb25kcyk7Ci0gICAgICAgIH0pOwotICAgIH0KLQot
ICAgIHdhaXRGb3JTaWduYWwoc2luZ2FsLCBuYW1lLCB0aW1lb3V0PTEwMDApIHsKLSAgICAgICAg
cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKLSAgICAgICAgICAgIGNv
bnN0IGhhbmRsZXIgPSAoKSA9PiB7Ci0gICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVv
dXRIYW5kbGVyKTsKLSAgICAgICAgICAgICAgICByZXNvbHZlKCk7Ci0gICAgICAgICAgICAgICAg
c2luZ2FsLnJlbW92ZUxpc3RlbmVyKGhhbmRsZXIpOwotICAgICAgICAgICAgfTsKLSAgICAgICAg
ICAgIGNvbnN0IHRpbWVvdXRIYW5kbGVyID0gc2V0VGltZW91dCgoKSA9PiB7Ci0gICAgICAgICAg
ICAgICAgc2luZ2FsLnJlbW92ZUxpc3RlbmVyKGhhbmRsZXIpOwotICAgICAgICAgICAgICAgIHJl
amVjdChuZXcgQXNzZXJ0RmFpbGVkRXJyb3IoYENhbm5vdCBnZXQgdGhlICR7bmFtZX0gc2lnbmFs
IGFmdGVyICR7dGltZW91dH0gbXNgKSk7Ci0gICAgICAgICAgICB9LCB0aW1lb3V0KTsKLSAgICAg
ICAgICAgIHNpbmdhbC5hZGRMaXN0ZW5lcihoYW5kbGVyKTsKLSAgICAgICAgfSk7Ci0gICAgfQot
Ci0gICAgd2FpdEZvclJlZk1vdW50ZWQocmVmLCB0aW1lb3V0PTEwMDApIHsKLSAgICAgICAgcmV0
dXJuIHRoaXMud2FpdEZvclNpZ25hbChyZWYub25FbGVtZW50TW91bnQsICJtb3VudCIsIHRpbWVv
dXQpOwotICAgIH0KLQotICAgIHdhaXRGb3JSZWZVbm1vdW50ZWQocmVmLCB0aW1lb3V0PTEwMDAp
IHsKLSAgICAgICAgcmV0dXJuIHRoaXMud2FpdEZvclNpZ25hbChyZWYub25FbGVtZW50VW5tb3Vu
dCwgInVubW91bnQiLCB0aW1lb3V0KTsKLSAgICB9Ci0KLSAgICB3YWl0Rm9yU3RhdGVVcGRhdGVk
KHJlZiwgdGltZW91dD0xMDAwKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLndhaXRGb3JTaWduYWwo
cmVmLm9uU3RhdGVVcGRhdGUsICJzdGF0ZSB1cGRhdGUiLCB0aW1lb3V0KTsKLSAgICB9Ci0KLSAg
ICBhc3luYyBzZXR1cCgpIHt9Ci0gICAgYXN5bmMgY2xlYXJVcCgpIHt9Ci19Ci0KLQotZnVuY3Rp
b24gZ2V0VGVzdEZ1Y250aW9uTmFtZXModGVzdE9iaikgewotICAgIGNvbnN0IGZpeGVkTWV0aG9k
cyA9IG5ldyBTZXQoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoVGVzdFN1aXRlLnByb3RvdHlw
ZSkpOwotICAgIGNvbnN0IHRlc3RPYmpNZXRob2RzID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFt
ZXModGVzdE9iai5jb25zdHJ1Y3Rvci5wcm90b3R5cGUpOwotICAgIGNvbnN0IHRlc3RNZXRob2Rz
ID0gW107Ci0gICAgZm9yIChsZXQgbWV0aG9kIG9mIHRlc3RPYmpNZXRob2RzKSB7Ci0gICAgICAg
IGlmICghZml4ZWRNZXRob2RzLmhhcyhtZXRob2QpKQotICAgICAgICAgICAgdGVzdE1ldGhvZHMu
cHVzaChtZXRob2QpOwotICAgIH0KLSAgICByZXR1cm4gdGVzdE1ldGhvZHM7Ci19Ci0KLWNvbnN0
IFRFU1RfUkVTVUxUX1RZUEUgPSBPYmplY3QuZnJlZXplKHsKLSAgICBTdWNjZXNzOiBTeW1ib2wo
IlN1Y2Nlc3MiKSwKLSAgICBFcnJvcjogU3ltYm9sKCJFcnJvciIpLAotICAgIEZhaWxlZDogU3lt
Ym9sKCJGYWlsZWQiKSwKLX0pOwotCi1jbGFzcyBUZXN0UmVzdWx0IHsKLSAgICBjb25zdHJ1Y3Rv
cihjbGFzc05hbWUsIGZuTmFtZSkgewotICAgICAgICB0aGlzLmNsYXNzTmFtZSA9IGNsYXNzTmFt
ZTsKLSAgICAgICAgdGhpcy5mbk5hbWUgPSBmbk5hbWU7Ci0gICAgICAgIHRoaXMuZXhjZXB0aW9u
ID0gbnVsbDsKLSAgICAgICAgdGhpcy50eXBlID0gVEVTVF9SRVNVTFRfVFlQRS5TdWNjZXNzOwot
ICAgIH0KLSAgICAKLSAgICBjYXRjaEV4Y2VwdGlvbihlKSB7Ci0gICAgICAgIHRoaXMuZXhjZXB0
aW9uID0gZTsKLSAgICAgICAgY29uc29sZS5lcnJvcihlKTsKLSAgICAgICAgaWYgKGUgaW5zdGFu
Y2VvZiBBc3NlcnRGYWlsZWRFcnJvcikKLSAgICAgICAgICAgIHRoaXMudHlwZSA9IFRFU1RfUkVT
VUxUX1RZUEUuRmFpbGVkOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0aGlzLnR5cGUgPSBU
RVNUX1JFU1VMVF9UWVBFLkVycm9yOwotICAgIH0KLX0KLQotYXN5bmMgZnVuY3Rpb24gZ2V0VGVz
dFJlc3VsdChvYmosIGZuTmFtZSwgYXJncyA9IFtdKSB7Ci0gICAgY29uc3QgcmVzdWx0ID0gbmV3
IFRlc3RSZXN1bHQob2JqLmNvbnN0cnVjdG9yLm5hbWUsIGZuTmFtZSk7Ci0gICAgdHJ5IHsKLSAg
ICAgICAgYXdhaXQgb2JqW2ZuTmFtZV0oLi4uYXJncyk7Ci0gICAgfSBjYXRjaCAoZSkgewotICAg
ICAgICByZXN1bHQuY2F0Y2hFeGNlcHRpb24oZSk7Ci0gICAgfQotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci0KLWNsYXNzIFRlc3RDb250cm9sbGVyIHsKLSAgICBjb25zdHJ1Y3RvcihzZXR1cEFyZ3Mp
IHsKLSAgICAgICAgdGhpcy5hbGxUZXN0cyA9IHt9Ci0gICAgICAgIHRoaXMucmVzdWx0c0VzID0g
bmV3IEV2ZW50U3RyZWFtKCk7Ci0gICAgICAgIHRoaXMuc2V0dXBBcmdzID0gQXJyYXkuaXNBcnJh
eShzZXR1cEFyZ3MpID8gc2V0dXBBcmdzIDogW107Ci0gICAgfQotICAgIAotICAgIGFkZFJlc3Vs
dEhhbmRsZXIoaGFuZGxlcikgewotICAgICAgICB0aGlzLnJlc3VsdHNFcy5hY3Rpb24oaGFuZGxl
cik7Ci0gICAgfQotICAgIAotICAgIGFkZFNldHVwQXJncyhhcmdzKSB7Ci0gICAgICAgIHRoaXMu
c2V0dXBBcmdzID0gdGhpcy5zZXR1cEFyZ3MuY29uY2F0KGFyZ3MpOwotICAgIH0KLQotICAgIGNv
bGxlY3QodGVzdFN1aXRlQ2xhc3MpIHsKLSAgICAgICAgY29uc3QgdGVzdEluc3RhbmNlID0gbmV3
IHRlc3RTdWl0ZUNsYXNzKCk7Ci0gICAgICAgIGNvbnN0IHRlc3ROYW1lID0gdGVzdEluc3RhbmNl
LmNvbnN0cnVjdG9yLm5hbWU7Ci0gICAgICAgIGlmICh0ZXN0TmFtZSBpbiB0aGlzLmFsbFRlc3Rz
KSB7Ci0gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7dGVzdE5hbWV9IGhhcyBhbHJlYWR5
IGJlZW4gY29sbGVjdGVkYCk7Ci0gICAgICAgIH0KLSAgICAgICAgdGhpcy5hbGxUZXN0c1t0ZXN0
TmFtZV0gPSB0ZXN0SW5zdGFuY2U7Ci0gICAgfQotICAgIAotICAgIGFzeW5jIGNvbGxlY3RGaWxl
KGZpbGVQYXRoKSB7Ci0gICAgICAgIGNvbnN0IHRlc3RNb2R1bGUgPSBhd2FpdCBpbXBvcnQoZmls
ZVBhdGgpOwotICAgICAgICBPYmplY3Qua2V5cyh0ZXN0TW9kdWxlKS5mb3JFYWNoKGNsYXNzTmFt
ZSA9PiB0aGlzLmNvbGxlY3QodGVzdE1vZHVsZVtjbGFzc05hbWVdKSk7Ci0gICAgfQotCi0gICAg
YXN5bmMgcnVuVGVzdCh0ZXN0TmFtZSwgZm5OYW1lKSB7Ci0gICAgICAgIGxldCBoYXZlRXJyb3Ig
PSBmYWxzZTsKLSAgICAgICAgY29uc3QgdGVzdEluc3RhbmNlID0gdGhpcy5hbGxUZXN0c1t0ZXN0
TmFtZV07Ci0gICAgICAgIGNvbnN0IHRlc3RNZXRob2RzID0gZ2V0VGVzdEZ1Y250aW9uTmFtZXMo
dGVzdEluc3RhbmNlKTsKLSAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IGdldFRlc3RSZXN1bHQo
dGVzdEluc3RhbmNlLCAic2V0dXAiLCB0aGlzLnNldHVwQXJncyk7Ci0gICAgICAgIHRoaXMucmVz
dWx0c0VzLmFkZChyZXN1bHQpOwotICAgICAgICBpZiAocmVzdWx0LnR5cGUgPT09IFRFU1RfUkVT
VUxUX1RZUEUuU3VjY2VzcykgewotICAgICAgICAgICAgZm9yIChsZXQgdGVzdE1ldGhvZE5hbWUg
b2YgdGVzdE1ldGhvZHMpIHsKLSAgICAgICAgICAgICAgICBpZiAoZm5OYW1lICYmIGZuTmFtZSAh
PT0gdGVzdE1ldGhvZE5hbWUpIAotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
ICAgICAgICAgcmVzdWx0ID0gYXdhaXQgZ2V0VGVzdFJlc3VsdCh0ZXN0SW5zdGFuY2UsIHRlc3RN
ZXRob2ROYW1lKTsKLSAgICAgICAgICAgICAgICB0aGlzLnJlc3VsdHNFcy5hZGQocmVzdWx0KTsK
LSAgICAgICAgICAgICAgICBpZiAocmVzdWx0LnR5cGUgIT09IFRFU1RfUkVTVUxUX1RZUEUuU3Vj
Y2VzcykKLSAgICAgICAgICAgICAgICAgICAgaGF2ZUVycm9yID0gdHJ1ZTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfSBlbHNlIAotICAgICAgICAgICAgaGF2ZUVycm9yID0gdHJ1ZTsKLSAgICAg
ICAgcmVzdWx0ID0gYXdhaXQgZ2V0VGVzdFJlc3VsdCh0ZXN0SW5zdGFuY2UsICJjbGVhclVwIik7
Ci0gICAgICAgIHRoaXMucmVzdWx0c0VzLmFkZChyZXN1bHQpOwotICAgICAgICBpZiAocmVzdWx0
LnR5cGUgIT09IFRFU1RfUkVTVUxUX1RZUEUuU3VjY2VzcykKLSAgICAgICAgICAgIGhhdmVFcnJv
ciA9IHRydWU7Ci0gICAgICAgIHJldHVybiBoYXZlRXJyb3I7Ci0gICAgfQotCi0gICAgYXN5bmMg
cnVuKHRlc3RTdWl0ZUNsYXNzTmFtZSwgdGVzdEZuTmFtZSkgewotICAgICAgICBsZXQgaGF2ZUVy
cm9yID0gZmFsc2U7Ci0gICAgICAgIGlmICh0ZXN0U3VpdGVDbGFzc05hbWUpCi0gICAgICAgICAg
ICBoYXZlRXJyb3IgPSBhd2FpdCB0aGlzLnJ1blRlc3QodGVzdFN1aXRlQ2xhc3NOYW1lLCB0ZXN0
Rm5OYW1lKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBmb3IobGV0IHRlc3RTdWl0ZUNs
YXNzTmFtZSBvZiBPYmplY3Qua2V5cyh0aGlzLmFsbFRlc3RzKSkKLSAgICAgICAgICAgICAgICBo
YXZlRXJyb3IgfD0gYXdhaXQgdGhpcy5ydW5UZXN0KHRlc3RTdWl0ZUNsYXNzTmFtZSk7Ci0gICAg
ICAgIH0KLSAgICAgICAgY29uc3QgZmluYWxSZXN1bHQgPSBuZXcgVGVzdFJlc3VsdCgiIiwgIiIp
OwotICAgICAgICBpZiAoIWhhdmVFcnJvcikKLSAgICAgICAgICAgIGZpbmFsUmVzdWx0LnR5cGUg
PSBURVNUX1JFU1VMVF9UWVBFLlN1Y2Nlc3M7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGZp
bmFsUmVzdWx0LnR5cGUgPSBURVNUX1JFU1VMVF9UWVBFLkZhaWxlZDsKLSAgICAgICAgdGhpcy5y
ZXN1bHRzRXMuYWRkKGZpbmFsUmVzdWx0KTsKLSAgICB9Ci19Ci0KLWV4cG9ydCB7VGVzdFN1aXRl
LCBUZXN0Q29udHJvbGxlciwgVEVTVF9SRVNVTFRfVFlQRX0KSW5kZXg6IFRvb2xzL3Jlc3VsdHNk
YnB5L3Jlc3VsdHNkYnB5L3ZpZXcvc3RhdGljL2xpYnJhcnkvanMvVXRpbHMuanMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9zdGF0aWMvbGlicmFyeS9q
cy9VdGlscy5qcwkocmV2aXNpb24gMjY1NTMxKQorKysgVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0
c2RicHkvdmlldy9zdGF0aWMvbGlicmFyeS9qcy9VdGlscy5qcwkobm9uZXhpc3RlbnQpCkBAIC0x
LDk3ICswLDAgQEAKLS8vIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLS8vIGFyZSBtZXQ6Ci0v
LyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLS8vICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0vLyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKLS8vIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECi0vLyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0vLyBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgot
Ly8gQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTAotLy8gREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLS8vIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSCi0vLyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotLy8gT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8v
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0KLWZ1bmN0aW9uIHRpbWVEaWZmZXJlbmNlKGRhdGVTdHJpbmcpIHsKLSAg
ICBjb25zdCBkYXRlRGlmZiA9IG5ldyBEYXRlKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC0gbmV3IERh
dGUoZGF0ZVN0cmluZykuZ2V0VGltZSgpKTsKLSAgICBjb25zdCBob3VyID0gZGF0ZURpZmYuZ2V0
VVRDSG91cnMoKTsKLSAgICBjb25zdCBkYXkgPSBkYXRlRGlmZi5nZXRVVENEYXRlKCkgLSAxOwot
ICAgIGNvbnN0IG1vbnRoID0gZGF0ZURpZmYuZ2V0VVRDTW9udGgoKTsKLSAgICBjb25zdCB5ZWFy
ID0gZGF0ZURpZmYuZ2V0VVRDRnVsbFllYXIoKSAtIDE5NzA7Ci0gICAgaWYgKGhvdXIgPT09IDAg
JiYgZGF5ID09PSAwICYmIG1vbnRoID09PSAwICYmIHllYXIgPT09MCkKLSAgICAgICAgcmV0dXJu
ICJsZXNzIHRoYW4gMSBob3VyIGFnbyI7Ci0gICAgaWYgKGRheSA9PT0gMCAmJiBtb250aCA9PT0g
MCAmJiB5ZWFyID09PSAwKQotICAgICAgICByZXR1cm4gYCR7aG91cn0gaG91cnMgYWdvYDsKLSAg
ICBpZiAobW9udGggPT09IDAgJiYgeWVhciA9PT0gMCkKLSAgICAgICAgcmV0dXJuIGAke2RheX0g
ZGF5cyAke2hvdXJ9IGhvdXJzIGFnb2A7Ci0gICAgaWYgKHllYXIgPT09IDApCi0gICAgICAgIHJl
dHVybiBgJHttb250aH0gbW9udGhlcyAke2RheX0gZGF5cyBhZ29gOwotICAgIHJldHVybiBgJHt5
ZWFyfSB5ZWFycyAke21vbnRofSBtb250aGVzIGFnb2A7Ci19Ci0KLWNsYXNzIENvb2tpZSB7Ci0g
ICAgc3RhdGljIGdldENvb2tpZShuYW1lKSB7Ci0gICAgICAgIGNvbnN0IGNvb2tpZSA9IGRvY3Vt
ZW50LmNvb2tpZS5tYXRjaChgJHtuYW1lfT1bXHdcV10rO2ApOwotICAgICAgICBpZiAoY29va2ll
KSB7Ci0gICAgICAgICAgICBjb25zdCByYXcgPSBjb29raWVbMF0uc3BsaXQoJz0nKVsxXTsKLSAg
ICAgICAgICAgIC8vZXNjYXBlICc7JwotICAgICAgICAgICAgcmV0dXJuIGRlY29kZVVSSUNvbXBv
bmVudChyYXcuc3Vic3RyKDAsIHJhdy5sZW5ndGggLSAxKSk7Ci0gICAgICAgIH0KLSAgICAgICAg
cmV0dXJuIG51bGw7Ci0gICAgfQotICAgIHN0YXRpYyBjcmVhdGVDb29raWUobmFtZSwgdmFsdWUs
IGV4cGlyZWREYXlzPTEsIHBhdGg9Jy8nKSB7Ci0gICAgICAgIGxldCBleHBpcmVkVGltZSA9IG5l
dyBEYXRlKCk7Ci0gICAgICAgIGV4cGlyZWRUaW1lLnNldFRpbWUoZXhwaXJlZFRpbWUuZ2V0VGlt
ZSgpICsgZXhwaXJlRGF5cyAqIDI0ICogMzYwMCAqIDEwMDApOwotICAgICAgICBkb2N1bWVudC5j
b29raWUgPSBgJHtuYW1lfT0ke2VuY29kZVVSSUNvbXBvbmVudCh2YWx1ZSl9OyBleHBpcmVzPSR7
ZXhwaXJlZFRpbWUudG9VVENTdHJpbmcoKX07IHBhdGg9JHtwYXRofWA7Ci0gICAgfQotICAgIHN0
YXRpYyBlcmFzZUNvb2tpZShuYW1lKSB7Ci0gICAgICAgIGlmIChnZXRDb29raWUobmFtZSkpCi0g
ICAgICAgICAgICBkb2N1bWVudC5jb29raWUgPSBgJHtuYW1lfT07IE1heC1BZ2U9LTk5OTk5OTk5
O2AKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIGlzRGFya01vZGUgKCkgewotICAgIGlmICghd2luZG93
Lm1hdGNoTWVkaWEpIHsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICBjb25zdCBt
YXRjaCA9IHdpbmRvdy5tYXRjaE1lZGlhKCcocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspJyk7
Ci0gICAgcmV0dXJuIG1hdGNoLm1hdGNoZXM7Ci19Ci0KLS8vIFVzZXMgaW50ZXJzZWN0aW9uIG9i
c2VydmVyOiA8aHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJ
L0ludGVyc2VjdGlvbl9PYnNlcnZlcl9BUEk+Ci1mdW5jdGlvbiBjcmVhdGVJbnNlcnRpb25PYnNl
cnZlcnMoZWxlbWVudCwgY2FsbGJhY2s9KCk9Pnt9LCBzdGFydFRocmVzaG9sZD0wLjAsIGVuZFRy
ZXNob2xkPTEuMCwgc3RlcD0wLjEsIG9wdGlvbj17fSkgewotICAgIGNvbnN0IHVzZU9wdGlvbiA9
IHt9OwotICAgIHVzZU9wdGlvbi5yb290ID0gb3B0aW9uLnJvb3QgaW5zdGFuY2VvZiBIVE1MRWxl
bWVudCA/IG9wdGlvbi5yb290IDogbnVsbDsKLSAgICB1c2VPcHRpb24ucm9vdE1hcmdpbiA9IG9w
dGlvbi5yb290TWFyZ2luID8gb3B0aW9uLnJvb3RNYXJnaW4gOiAiMCUiOwotICAgIGNvbnN0IHRo
cmVzaG9sZEFycmF5ID0gW107Ci0gICAgZm9yIChsZXQgaSA9IHN0YXJ0VGhyZXNob2xkOyBpIDw9
IGVuZFRyZXNob2xkOyBpKz0gc3RlcCkgewotICAgICAgICB0aHJlc2hvbGRBcnJheS5wdXNoKGkp
OwotICAgIH0KLSAgICB0aHJlc2hvbGRBcnJheS5mb3JFYWNoKHRocmVzaG9sZCA9PiB7Ci0gICAg
ICAgIHVzZU9wdGlvbi50aHJlc2hvbGQgPSB0aHJlc2hvbGQ7Ci0gICAgICAgIGNvbnN0IG9ic2Vy
dmVyID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKGNhbGxiYWNrLCB1c2VPcHRpb24pOwotICAg
ICAgICBvYnNlcnZlci5vYnNlcnZlKGVsZW1lbnQpOwotICAgIH0pOwotfQotCi1mdW5jdGlvbiBk
aXNhYmxlQmFja0dlc3R1cmUoKSB7Ci0gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNl
d2hlZWwnLCBlID0+IHsKLSAgICAgICAgY29uc3QgdGFyZ2V0ID0gZS50YXJnZXQ7Ci0gICAgICAg
IGZvciAobGV0IHBhcmVudCA9IHRhcmdldC5wYXJlbnRFbGVtZW50OyBwYXJlbnQ7IHBhcmVudCA9
IHBhcmVudC5wYXJlbnRFbGVtZW50ICkgewotICAgICAgICAgICAgaWYgKHBhcmVudC5zY3JvbGxM
ZWZ0ICE9PSAwICYmIGUuZGVsdGFYIDwgMCkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIH0KLSAgICAgICAgaWYgKGUuZGVsdGFYIDwgMCkKLSAgICAgICAgICAgIGUucHJldmVudERl
ZmF1bHQoKTsKLSAgICB9KTsKLX0KLQotZXhwb3J0IHt0aW1lRGlmZmVyZW5jZSwgaXNEYXJrTW9k
ZSwgQ29va2llLCBjcmVhdGVJbnNlcnRpb25PYnNlcnZlcnMsIGRpc2FibGVCYWNrR2VzdHVyZX07
CkluZGV4OiBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS92aWV3L3N0YXRpYy9saWJyYXJ5
L2pzL2NvbXBvbmVudHMvQmFzZUNvbXBvbmVudHMuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvcmVz
dWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9zdGF0aWMvbGlicmFyeS9qcy9jb21wb25lbnRzL0Jh
c2VDb21wb25lbnRzLmpzCShyZXZpc2lvbiAyNjU1MzEpCisrKyBUb29scy9yZXN1bHRzZGJweS9y
ZXN1bHRzZGJweS92aWV3L3N0YXRpYy9saWJyYXJ5L2pzL2NvbXBvbmVudHMvQmFzZUNvbXBvbmVu
dHMuanMJKG5vbmV4aXN0ZW50KQpAQCAtMSwxMDkgKzAsMCBAQAotLy8gQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8v
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotLy8gYXJlIG1ldDoKLS8vIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotLy8gICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLS8vICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotLy8KLS8v
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORAotLy8gQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLS8vIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKLS8vIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0vLyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0vLyBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUgotLy8gU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLS8vIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0v
LyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotaW1wb3J0IHsKLSAgICBE
T00sIFJFRiwgZGlmZiwgRXZlbnRTdHJlYW0sIHV1aWR2NAotfQotZnJvbSAnLi4vUmVmLmpzJzsK
LQotZnVuY3Rpb24gQXBwbHlOZXdDaGlsZHJlbihlbGVtZW50LCBvbGRBcnJheSwgbmV3QXJyYXks
IGNoaWxkVG9LZXlGdW5jLCBpdGVtUHJvY2Vzc29yKSB7Ci0gICAgY29uc3QgbmV3Q2hpbGRyZW4g
PSBbXTsKLSAgICBjb25zdCBuZWVkVG9SZW1vdmVDaGlsZHJlbiA9IFtdOwotICAgIGRpZmYob2xk
QXJyYXksIG5ld0FycmF5LCAoaXRlbSwgaW5kZXgpID0+IHsKLSAgICAgICAgICAgIGNvbnN0IGNo
aWxkID0gZWxlbWVudC5jaGlsZHJlbltpbmRleF07Ci0gICAgICAgICAgICBuZWVkVG9SZW1vdmVD
aGlsZHJlbi5wdXNoKGNoaWxkKTsKLSAgICAgICAgfSwKLSAgICAgICAgKGl0ZW0sIG5ld0luZGV4
LCBvbGRJbmRleCkgPT4gewotICAgICAgICAgICAgaWYgKG9sZEluZGV4ICE9PSAtMSkgewotICAg
ICAgICAgICAgICAgIGNvbnN0IGV4aXNpdGluZ0NoaWxkID0gZWxlbWVudC5jaGlsZHJlbltvbGRJ
bmRleF07Ci0gICAgICAgICAgICAgICAgbmV3Q2hpbGRyZW4ucHVzaChleGlzaXRpbmdDaGlsZCk7
Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBuZXdDaGlsZHJlbi5wdXNoKGl0
ZW0pOwotICAgICAgICB9LCBjaGlsZFRvS2V5RnVuYyk7Ci0gICAgbmV3Q2hpbGRyZW4uZm9yRWFj
aCgoY2hpbGQsIGluZGV4KSA9PiB7Ci0gICAgICAgIGlmIChpbmRleCA8IGVsZW1lbnQuY2hpbGRy
ZW4ubGVuZ3RoKSB7Ci0gICAgICAgICAgICBpZiAoY2hpbGQgIT09IGVsZW1lbnQuY2hpbGRyZW5b
aW5kZXhdKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGNoaWxkIGluc3RhbmNlb2YgSFRNTEVsZW1l
bnQpIHsKLSAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5jaGlsZHJlbltpbmRleF0uYmVmb3Jl
KGNoaWxkKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgRE9N
LmJlZm9yZShlbGVtZW50LmNoaWxkcmVuW2luZGV4XSwgdHlwZW9mIGl0ZW1Qcm9jZXNzb3IgPT09
ICJmdW5jdGlvbiIgPyBpdGVtUHJvY2Vzc29yKGNoaWxkKSA6IGNoaWxkKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmIChjaGlsZCBpbnN0YW5jZW9mIEhU
TUxFbGVtZW50KQotICAgICAgICAgICAgICAgIGVsZW1lbnQuYXBwZW5kKGNoaWxkKTsKLSAgICAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBET00uYXBwZW5kKGVsZW1lbnQsIHR5cGVvZiBp
dGVtUHJvY2Vzc29yID09PSAiZnVuY3Rpb24iID8gaXRlbVByb2Nlc3NvcihjaGlsZCkgOiBjaGls
ZCk7Ci0gICAgICAgIH0KLSAgICB9KTsKLSAgICBuZWVkVG9SZW1vdmVDaGlsZHJlbi5mb3JFYWNo
KChjaGlsZCkgPT4gewotICAgICAgICAvLyBDbGVhciB0aGUgcmVmIGluIHRoZSByZW1vdmVkIGNo
aWxkLCB0cmlnZ2VyIHVubW91bnQgZXZlbnQKLSAgICAgICAgRE9NLnJlbW92ZShjaGlsZCk7Ci0g
ICAgfSk7Ci19Ci0KLWZ1bmN0aW9uIExpc3RQcm92aWRlcihleHBvcnRlciwgcHJvdmlkZWRJbnRl
cmZhY2VzLCAuLi5jaGlsZHJlbkZ1bmN0aW9ucykgewotICAgIGNvbnN0IHJlZiA9IFJFRi5jcmVh
dGVSZWYoewotICAgICAgICBzdGF0ZToge2NoaWxkcmVuRnVuY3Rpb25zOiBjaGlsZHJlbkZ1bmN0
aW9ucy5tYXAoaSA9PiBpKX0sCi0gICAgICAgIG9uU3RhdGVVcGRhdGU6IChlbGVtZW50LCBzdGF0
ZURpZmYsIHN0YXRlKSA9PiB7Ci0gICAgICAgICAgICBpZiAoc3RhdGVEaWZmLmNoaWxkcmVuRnVu
Y3Rpb25zKSB7Ci0gICAgICAgICAgICAgICAgQXBwbHlOZXdDaGlsZHJlbihlbGVtZW50LAotICAg
ICAgICAgICAgICAgICAgICBzdGF0ZS5jaGlsZHJlbkZ1bmN0aW9ucywgc3RhdGVEaWZmLmNoaWxk
cmVuRnVuY3Rpb25zLAotICAgICAgICAgICAgICAgICAgICAoY2hpbGQpID0+IGNoaWxkLnRvU3Ry
aW5nKCksCi0gICAgICAgICAgICAgICAgICAgIChjaGlsZCkgPT4gY2hpbGQoLi4ucHJvdmlkZWRJ
bnRlcmZhY2VzKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9KTsKLSAgICBpZiAo
ZXhwb3J0ZXIpCi0gICAgICAgIGV4cG9ydGVyKGNoaWxkcmVuRnVuY3Rpb25zID0+IHsKLSAgICAg
ICAgICAgIC8vIE1ha2UgYSBjb3B5IG9mIGl0LCBzbyB0aGF0IERJRkYuYXJyYXkgd29ya3MKLSAg
ICAgICAgICAgIHJlZi5zZXRTdGF0ZSh7Y2hpbGRyZW5GdW5jdGlvbnM6IGNoaWxkcmVuRnVuY3Rp
b25zLm1hcChpID0+IGkpfSk7Ci0gICAgICAgIH0pOwotICAgIHJldHVybiBgPGRpdiByZWY9IiR7
cmVmfSI+JHtjaGlsZHJlbkZ1bmN0aW9ucy5tYXAoY2hpbGRyZW5GdW5jdGlvbiA9PiBjaGlsZHJl
bkZ1bmN0aW9uKC4uLnByb3ZpZGVkSW50ZXJmYWNlcykpLmpvaW4oIiIpfTwvZGl2PmA7Ci19Ci0K
LWZ1bmN0aW9uIExpc3RQcm92aWRlclJlY2VpdmVyKGNvbnRlbnRGdW5jdGlvbikgewotICAgIGNv
bnN0IGtleSA9IHV1aWR2NCgpOwotICAgIGNvbnN0IHJlcyA9ICguLi5wcm92aWRlZEludGVyZmFj
ZXMpID0+IGNvbnRlbnRGdW5jdGlvbiguLi5wcm92aWRlZEludGVyZmFjZXMpOwotICAgIC8vIENy
ZWF0ZSB1bmlxdWUga2V5IGZvciBlYWNoIExpc3QgSXRlbQotICAgIHJlcy50b1N0cmluZyA9ICgp
ID0+IGtleTsKLSAgICByZXR1cm4gcmVzOwotfQotCi0vLyBDaGlsZHJlbiBjb21wb2VudCB3aWxs
IHJldHJ1biBzdHJpbmcKLWZ1bmN0aW9uIExpc3RDb21wb25lbnQoZXhwb3J0ZXIsIC4uLmNoaWxk
cmVuKSB7Ci0gICAgY29uc3QgcmVmID0gUkVGLmNyZWF0ZVJlZih7Ci0gICAgICAgIHN0YXRlOiB7
Y2hpbGRyZW46IGNoaWxkcmVufSwKLSAgICAgICAgb25TdGF0ZVVwZGF0ZTogKGVsZW1lbnQsIHN0
YXRlRGlmZiwgc3RhdGUpID0+IHsKLSAgICAgICAgICAgIGlmIChzdGF0ZURpZmYuY2hpbGRyZW4p
Ci0gICAgICAgICAgICAgICAgQXBwbHlOZXdDaGlsZHJlbihlbGVtZW50LCBzdGF0ZS5jaGlsZHJl
biwgc3RhdGVEaWZmLmNoaWxkcmVuLCBhID0+IGEpOwotICAgICAgICB9LAotICAgIH0pOwotCi0g
ICAgaWYgKGV4cG9ydGVyKQotICAgICAgICBleHBvcnRlcihjaGlsZHJlbiA9PiB7Ci0gICAgICAg
ICAgICAvLyBNYWtlIGEgY29weSBvZiBpdCwgc28gdGhhdCBESUZGLmFycmF5IHdvcmtzCi0gICAg
ICAgICAgICByZWYuc2V0U3RhdGUoe2NoaWxkcmVuOiBjaGlsZHJlbi5tYXAoaSA9PiBpKX0pOwot
ICAgICAgICB9KTsKLSAgICByZXR1cm4gYDxkaXYgcmVmPSIke3JlZn0iPiR7Y2hpbGRyZW4uam9p
bigiIil9PC9kaXY+YDsKLX0KLQotZXhwb3J0IHtMaXN0UHJvdmlkZXIsIExpc3RQcm92aWRlclJl
Y2VpdmVyLCBMaXN0Q29tcG9uZW50fTsKSW5kZXg6IFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNk
YnB5L3ZpZXcvc3RhdGljL2xpYnJhcnkvanMvY29tcG9uZW50cy9UZXN0Q29tcG9uZW50cy5qcwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS92aWV3L3N0YXRpYy9s
aWJyYXJ5L2pzL2NvbXBvbmVudHMvVGVzdENvbXBvbmVudHMuanMJKHJldmlzaW9uIDI2NTUzMSkK
KysrIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvc3RhdGljL2xpYnJhcnkvanMv
Y29tcG9uZW50cy9UZXN0Q29tcG9uZW50cy5qcwkobm9uZXhpc3RlbnQpCkBAIC0xLDg1ICswLDAg
QEAKLWltcG9ydCB7RE9NLCBSRUZ9IGZyb20gIi4uL1JlZi5qcyIKLWltcG9ydCB7VGVzdENvbnRy
b2xsZXIsIFRFU1RfUkVTVUxUX1RZUEV9IGZyb20gIi4uL1Rlc3QuanMiCi0KLWZ1bmN0aW9uIFRl
c3RBcHAodGVzdENvbnRyb2xsZXIpIHsKLSAgICByZXR1cm4gKAotICAgICAgICBgPGRpdiBjbGFz
cz0icm93IGNvbnRlbnQiPgotICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLTYiPgotICAgICAg
ICAgICAgICAgICR7VGVzdFJlc3VsdENvbnNvbGUodGVzdENvbnRyb2xsZXIpfQotICAgICAgICAg
ICAgPC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtNiI+Ci0gICAgICAgICAgICAg
ICAgJHtUZXN0UmVuZGVyQXJlYSh0ZXN0Q29udHJvbGxlcil9Ci0gICAgICAgICAgICA8L2Rpdj4K
LSAgICAgICAgPC9kaXY+YAotICAgICk7Ci19Ci0KLWZ1bmN0aW9uIFRlc3RSZXN1bHQodGVzdFJl
c3VsdCkgewotICAgIGxldCBzdGF0dXNDbGFzcyA9ICJzdWNjZXNzIjsKLSAgICBsZXQgZGVzY3Jp
cHRpb24gPSB0ZXN0UmVzdWx0LmNsYXNzTmFtZSA/ICJQQVNTIiA6ICJBTEwgUEFTUyI7Ci0gICAg
c3dpdGNoICh0ZXN0UmVzdWx0LnR5cGUpIHsKLSAgICAgICAgY2FzZSBURVNUX1JFU1VMVF9UWVBF
LkZhaWxlZDoKLSAgICAgICAgICAgIHN0YXR1c0NsYXNzID0gImZhaWxlZCI7Ci0gICAgICAgICAg
ICBkZXNjcmlwdGlvbiA9ICJmYWlsZWQiCi0gICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFRF
U1RfUkVTVUxUX1RZUEUuRXJyb3I6Ci0gICAgICAgICAgICBzdGF0dXNDbGFzcyA9ICJlcnJvciI7
Ci0gICAgICAgICAgICBkZXNjcmlwdGlvbiA9ICJyYWlzZSBhbiBlcnJvciI7Ci0gICAgICAgIGJy
ZWFrOwotICAgIH0KLSAgICByZXR1cm4gKAotICAgICAgICBgPGRpdiBjbGFzcz0idGV4dCI+Ci0g
ICAgICAgICAke3Rlc3RSZXN1bHQuY2xhc3NOYW1lID8gIiIgOiAiPGhyPiJ9Ci0gICAgICAgICAg
ICA8ZGl2IGNsYXNzPSJ0ZXh0IGJsb2NrIj4KLSAgICAgICAgICAgICAgICA8YSBocmVmPSI/Y2xh
c3NOYW1lPSR7dGVzdFJlc3VsdC5jbGFzc05hbWV9Ij4ke3Rlc3RSZXN1bHQuY2xhc3NOYW1lfTwv
YT4KLSAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dCBibG9j
ayI+Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iP2NsYXNzTmFtZT0ke3Rlc3RSZXN1bHQuY2xh
c3NOYW1lfSZmbk5hbWU9JHt0ZXN0UmVzdWx0LmZuTmFtZX0iPiR7dGVzdFJlc3VsdC5mbk5hbWV9
PC9hPgotICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0IGJs
b2NrICR7c3RhdHVzQ2xhc3N9Ij4KLSAgICAgICAgICAgICAgICAke2Rlc2NyaXB0aW9ufQotICAg
ICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAke3Rlc3RSZXN1bHQuZXhjZXB0aW9uID8gYAot
ICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQgJHtzdGF0dXNDbGFzc30iPgotICAgICAg
ICAgICAgICAgICAgICA8cHJlPiR7dGVzdFJlc3VsdC5leGNlcHRpb24ubWVzc2FnZX1cbiR7dGVz
dFJlc3VsdC5leGNlcHRpb24uc3RhY2t9PC9wcmU+Ci0gICAgICAgICAgICAgICAgPC9kaXY+YCA6
ICIifQotICAgICAgICA8L2Rpdj5gCi0gICAgKTsKLX0KLQotZnVuY3Rpb24gVGVzdFJlc3VsdENv
bnNvbGUodGVzdENvbnRyb2xsZXIpIHsKLSAgICBjb25zdCByZWYgPSBSRUYuY3JlYXRlUmVmKHsK
LSAgICAgICAgb25TdGF0ZVVwZGF0ZTogKGVsZW1lbnQsIHN0YXRlRGlmZikgPT4gewotICAgICAg
ICAgICAgaWYgKHN0YXRlRGlmZi5hZGRUZXN0UmVzdWx0KSB7Ci0gICAgICAgICAgICAgICAgRE9N
LmFwcGVuZChlbGVtZW50LCBUZXN0UmVzdWx0KHN0YXRlRGlmZi5hZGRUZXN0UmVzdWx0KSk7Ci0g
ICAgICAgICAgICAgICAgaWYgKCFzdGF0ZURpZmYuYWRkVGVzdFJlc3VsdC5jbGFzc05hbWUpIHsK
LSAgICAgICAgICAgICAgICAgICAgbGV0IGZpbmFsX3JlcyA9ICJBTEwgUEFTUyI7Ci0gICAgICAg
ICAgICAgICAgICAgIGlmIChzdGF0ZURpZmYuYWRkVGVzdFJlc3VsdC50eXBlICE9PSBURVNUX1JF
U1VMVF9UWVBFLlN1Y2Nlc3MpCi0gICAgICAgICAgICAgICAgICAgICAgICBmaW5hbF9yZXMgPSAi
RkFJTEVEIjsKLSAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQudGl0bGUgPSBgJHtmaW5hbF9y
ZXN9YDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9
KTsKLSAgICB0ZXN0Q29udHJvbGxlci5hZGRSZXN1bHRIYW5kbGVyKHRlc3RSZXN1bHQgPT4gcmVm
LnNldFN0YXRlKHthZGRUZXN0UmVzdWx0OiB0ZXN0UmVzdWx0fSkpOwotICAgIHJldHVybiBgPGRp
diByZWY9IiR7cmVmfSI+PC9kaXY+YDsKLX0KLQotCi1mdW5jdGlvbiBUZXN0UmVuZGVyQXJlYSh0
ZXN0Q29udHJvbGxlcikgewotICAgIGNvbnN0IHJlZiA9IFJFRi5jcmVhdGVSZWYoewotICAgICAg
ICBvbkVsZW1lbnRNb3VudDogKGVsZW1lbnQpID0+IHsKLSAgICAgICAgICAgIHRlc3RDb250cm9s
bGVyLmFkZFNldHVwQXJncyhbZWxlbWVudF0pOwotICAgICAgICAgICAgY29uc3QgdXJsID0gbmV3
IFVSTCh3aW5kb3cubG9jYXRpb24pOwotICAgICAgICAgICAgY29uc3Qgc2VhcmNoUGFyYW0gPSBu
ZXcgVVJMU2VhcmNoUGFyYW1zKHVybC5zZWFyY2gpOwotICAgICAgICAgICAgY29uc3QgY2xhc3NO
YW1lID0gc2VhcmNoUGFyYW0uZ2V0KCJjbGFzc05hbWUiKTsKLSAgICAgICAgICAgIGlmIChjbGFz
c05hbWUpCi0gICAgICAgICAgICAgICAgZG9jdW1lbnQudGl0bGUgPSBjbGFzc05hbWU7Ci0gICAg
ICAgICAgICBjb25zdCBmbk5hbWUgPSBzZWFyY2hQYXJhbS5nZXQoImZuTmFtZSIpOwotICAgICAg
ICAgICAgdGVzdENvbnRyb2xsZXIucnVuKGNsYXNzTmFtZSwgZm5OYW1lKQotICAgICAgICB9IAot
ICAgIH0pOwotICAgIHJldHVybiBgPGRpdiByZWY9IiR7cmVmfSI+PC9kaXY+YDsKLX0KLQotZXhw
b3J0IHtUZXN0QXBwfTsKSW5kZXg6IFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcv
c3RhdGljL2xpYnJhcnkvanMvY29tcG9uZW50cy9UaW1lbGluZUNvbXBvbmVudHMuanMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9zdGF0aWMvbGlicmFy
eS9qcy9jb21wb25lbnRzL1RpbWVsaW5lQ29tcG9uZW50cy5qcwkocmV2aXNpb24gMjY1NTMxKQor
KysgVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9zdGF0aWMvbGlicmFyeS9qcy9j
b21wb25lbnRzL1RpbWVsaW5lQ29tcG9uZW50cy5qcwkobm9uZXhpc3RlbnQpCkBAIC0xLDkzOSAr
MCwwIEBACi0vLyBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0vLyBhcmUgbWV0OgotLy8gMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0vLyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotLy8gMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
Ly8gICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECi0vLyBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAotLy8gV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotLy8gRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLS8vIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwKLS8vIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0vLyBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgot
Ly8gQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLS8vIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotCi1pbXBvcnQgewotICAgIERPTSwgUkVGLCBGUCwgRXZlbnRTdHJlYW0KLX0KLWZy
b20gJy4uL1JlZi5qcyc7Ci0KLWltcG9ydCB7aXNEYXJrTW9kZSwgY3JlYXRlSW5zZXJ0aW9uT2Jz
ZXJ2ZXJzfSBmcm9tICcuLi9VdGlscy5qcyc7Ci1pbXBvcnQge0xpc3RDb21wb25lbnQsIExpc3RQ
cm92aWRlciwgTGlzdFByb3ZpZGVyUmVjZWl2ZXJ9IGZyb20gJy4vQmFzZUNvbXBvbmVudHMuanMn
Ci0KLWZ1bmN0aW9uIHBvaW50Q2lyY2xlQ29sbGlzaW9uRGV0YWN0KHBvaW50LCBjaXJjbGUpIHsK
LSAgICByZXR1cm4gTWF0aC5wb3cocG9pbnQueCAtIGNpcmNsZS54LCAyKSArIE1hdGgucG93KHBv
aW50LnkgLSBjaXJjbGUueSwgMikgPD0gY2lyY2xlLnJhZGl1cyAqIGNpcmNsZS5yYWRpdXM7Ci19
Ci0KLWZ1bmN0aW9uIHBvaW50UmVjdENvbGxpc2lvbkRldGVjdChwb2ludCwgcmVjdCkgewotICAg
IGNvbnN0IGRpZmZYID0gcG9pbnQueCAtIHJlY3QudG9wTGVmdFg7Ci0gICAgY29uc3QgZGlmZlkg
PSBwb2ludC55IC0gcmVjdC50b3BMZWZ0WTsKLSAgICByZXR1cm4gZGlmZlggPD0gcmVjdC53aWR0
aCAmJiBkaWZmWSA8PSByZWN0LmhlaWdodCAmJiBkaWZmWCA+PSAwICYmIGRpZmZZID49IDA7Ci19
Ci0KLWZ1bmN0aW9uIHBvaW50UG9seWdvbkNvbGxpc2lvbkRldGVjdChwb2ludCwgcG9seWdvbikg
ewotICAgIGxldCByZXMgPSBmYWxzZTsKLSAgICBmb3IgKGxldCBpID0gMCwgaiA9IDE7IGkgPCBw
b2x5Z29uLmxlbmd0aDsgaSsrLCBqID0gaSArIDEpIHsKLSAgICAgICAgaWYgKGogPT09IHBvbHln
b24ubGVuZ3RoICkKLSAgICAgICAgICAgIGogPSAwOwotICAgICAgICBpZiAocG9pbnRSaWdodFJh
eUxpbmVTZWdtZW50Q29sbGlzaW9uRGV0ZWN0KHBvaW50LCBwb2x5Z29uW2ldLCBwb2x5Z29uW2pd
KSkKLSAgICAgICAgICAgIHJlcyA9ICFyZXM7Ci0gICAgfQotICAgIHJldHVybiByZXM7Ci19Ci0K
LS8qCi0qIERldGFjdCBpZiBwb2ludCByaWdodCByYXkgaGF2ZSBhIGNvbGxpc2lvbiB3aXRoIGEg
bGluZSBzZWdtZW50Ci0qICAgICAgICAgICAgICAgICoKLSogICAgICAgICAgICAgICAvCi0qICAg
ICAgICAqLS0tPiAvCi0qICAgICAgICAgICAgIC8KLSogICAgICAgICAgICAqCi0qLwotZnVuY3Rp
b24gcG9pbnRSaWdodFJheUxpbmVTZWdtZW50Q29sbGlzaW9uRGV0ZWN0KHBvaW50LCBsaW5lU3Rh
cnQsIGxpbmVFbmQpIHsKLSAgICBjb25zdCBtYXhYID0gTWF0aC5tYXgobGluZVN0YXJ0LngsIGxp
bmVFbmQueCk7Ci0gICAgY29uc3QgbWluWCA9IE1hdGgubWluKGxpbmVTdGFydC54LCBsaW5lRW5k
LngpOwotICAgIGNvbnN0IG1heFkgPSBNYXRoLm1heChsaW5lU3RhcnQueSwgbGluZUVuZC55KTsK
LSAgICBjb25zdCBtaW5ZID0gTWF0aC5taW4obGluZVN0YXJ0LnksIGxpbmVFbmQueSk7Ci0gICAg
aWYgKChwb2ludC54IDw9IG1heFggJiYgcG9pbnQueCA+PSBtaW5YIHx8IHBvaW50LnggPCBtaW5Y
KSAmJgotICAgICAgICBwb2ludC55IDwgbWF4WSAmJiBwb2ludC55ID4gbWluWSAmJgotICAgICAg
ICBsaW5lU3RhcnQueSAhPT0gbGluZUVuZC55KSB7Ci0gICAgICAgIGNvbnN0IHRhblRvcEFuZ2xl
ID0gKGxpbmVFbmQueCAtIGxpbmVTdGFydC54KSAvIChsaW5lRW5kLnkgLSBsaW5lU3RhcnQueSk7
Ci0gICAgICAgIHJldHVybiBwb2ludC54IDwgbGluZUVuZC54IC0gdGFuVG9wQW5nbGUgKiAobGlu
ZUVuZC55IC0gcG9pbnQueSk7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotZnVuY3Rp
b24gZ2V0TW91c2VQb3NJbkNhbnZhcyhldmVudCwgY2FudmFzKSB7Ci0gICAgY29uc3QgcmVjdCA9
IGNhbnZhcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKLSAgICByZXR1cm4gewotICAgICAgICB4
OiBldmVudC5jbGllbnRYIC0gcmVjdC5sZWZ0LAotICAgICAgICB5OiBldmVudC5jbGllbnRZIC0g
cmVjdC50b3AsCi0gICAgfQotfQotCi1mdW5jdGlvbiBnZXREZXZpY2VQaXhlbFJhdGlvKCkgewot
ICAgIHJldHVybiB3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbzsKLX0KLQotZnVuY3Rpb24gc2V0dXBD
YW52YXNXaWR0aFdpdGhEcHIoY2FudmFzLCB3aWR0aCkgewotICAgIGNvbnN0IGRwciA9IGdldERl
dmljZVBpeGVsUmF0aW8oKTsKLSAgICBjYW52YXMuc3R5bGUud2lkdGggPSBgJHt3aWR0aH1weGA7
Ci0gICAgY2FudmFzLndpZHRoID0gd2lkdGggKiBkcHI7Ci0gICAgY2FudmFzLmxvZ2ljV2lkdGgg
PSB3aWR0aDsKLX0KLQotZnVuY3Rpb24gc2V0dXBDYW52YXNIZWlnaHRXaXRoRHByKGNhbnZhcywg
aGVpZ2h0KSB7Ci0gICAgY29uc3QgZHByID0gZ2V0RGV2aWNlUGl4ZWxSYXRpbygpOwotICAgIGNh
bnZhcy5zdHlsZS5oZWlnaHQgPSBgJHtoZWlnaHR9cHhgOwotICAgIGNhbnZhcy5oZWlnaHQgPSBo
ZWlnaHQgKiBkcHI7Ci0gICAgY2FudmFzLmxvZ2ljSGVpZ2h0ID0gaGVpZ2h0OwotfQotCi1mdW5j
dGlvbiBzZXR1cENhbnZhc0NvbnRleHRTY2FsZShjYW52YXMpIHsKLSAgICBjb25zdCBkcHIgPSBn
ZXREZXZpY2VQaXhlbFJhdGlvKCk7Ci0gICAgY29uc3QgY29udGV4dCA9IGNhbnZhcy5nZXRDb250
ZXh0KCcyZCcpOwotICAgIGNvbnRleHQuc2NhbGUoZHByLCBkcHIpOwotfQotCi1mdW5jdGlvbiBY
U2Nyb2xsYWJsZUNhbnZhc1Byb3ZpZGVyKGV4cG9ydGVyLCAuLi5jaGlsZHJlbkZ1bmN0aW9ucykg
ewotICAgIGNvbnN0IGNvbnRhaW5lclJlZiA9IFJFRi5jcmVhdGVSZWYoewotICAgICAgICBzdGF0
ZToge3dpZHRoOiAwfSwKLSAgICAgICAgb25TdGF0ZVVwZGF0ZTogKGVsZW1lbnQsIHN0YXRlRGlm
Ziwgc3RhdGUpID0+IHsKLSAgICAgICAgICAgIGlmIChzdGF0ZURpZmYud2lkdGgpCi0gICAgICAg
ICAgICAgICAgZWxlbWVudC5zdHlsZS53aWR0aCA9IGAke3N0YXRlRGlmZi53aWR0aH1weGA7Ci0g
ICAgICAgIH0sCi0gICAgfSk7Ci0gICAgY29uc3Qgc2Nyb2xsUmVmID0gUkVGLmNyZWF0ZVJlZih7
fSk7Ci0gICAgY29uc3Qgc2Nyb2xsRXZlbnRTdHJlYW0gPSBzY3JvbGxSZWYuZnJvbUV2ZW50KCdz
Y3JvbGwnKTsKLSAgICBjb25zdCByZXNpemVFdmVudFN0cmVhbSA9IG5ldyBFdmVudFN0cmVhbSgp
OwotICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCAoKSA9PiB7Ci0gICAgICAg
IHByZXNlbnRlclJlZi5zZXRTdGF0ZSh7cmVzaXplOnRydWV9KTsKLSAgICB9KTsKLSAgICBjb25z
dCByZXNpemVDb250YWluZXJXaWR0aCA9IHdpZHRoID0+IHtjb250YWluZXJSZWYuc2V0U3RhdGUo
e3dpZHRoOiB3aWR0aH0pfTsKLSAgICBjb25zdCBnZXRTY3JvbGxhYmxlQm91bmRpbmdDbGllbnRS
ZWN0ID0gKCkgPT4gc2Nyb2xsUmVmLmVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7Ci0g
ICAgY29uc3QgcHJlc2VudGVyUmVmID0gUkVGLmNyZWF0ZVJlZih7Ci0gICAgICAgIHN0YXRlOiB7
c2Nyb2xsTGVmdDogMH0sCi0gICAgICAgIG9uRWxlbWVudE1vdW50OiAoZWxlbWVudCkgPT4gewot
ICAgICAgICAgICAgY29uc3Qgc2Nyb2xsYWJsZVdpZHRoID0gIGdldFNjcm9sbGFibGVCb3VuZGlu
Z0NsaWVudFJlY3QoKS53aWR0aDsKLSAgICAgICAgICAgIGVsZW1lbnQuc3R5bGUud2lkdGggPSBg
JHtzY3JvbGxhYmxlV2lkdGh9cHhgOwotICAgICAgICAgICAgcmVzaXplRXZlbnRTdHJlYW0uYWRk
KHNjcm9sbGFibGVXaWR0aCk7Ci0gICAgICAgIH0sCi0gICAgICAgIG9uU3RhdGVVcGRhdGU6IChl
bGVtZW50LCBzdGF0ZURpZmYsIHN0YXRlKSA9PiB7Ci0gICAgICAgICAgICBpZiAoc3RhdGVEaWZm
LnJlc2l6ZSkgewotICAgICAgICAgICAgICAgIGNvbnN0IHNjcm9sbGFibGVXaWR0aCA9ICBnZXRT
Y3JvbGxhYmxlQm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7Ci0gICAgICAgICAgICAgICAgZWxl
bWVudC5zdHlsZS53aWR0aCA9IGAke3Njcm9sbGFibGVXaWR0aH1weGA7Ci0gICAgICAgICAgICAg
ICAgcmVzaXplRXZlbnRTdHJlYW0uYWRkKHNjcm9sbGFibGVXaWR0aCk7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0KLSAgICB9KTsKLSAgICBjb25zdCBsYXlvdXRTaXplTWF5Q2hhbmdlID0gbmV3
IEV2ZW50U3RyZWFtKCk7Ci0gICAgbGF5b3V0U2l6ZU1heUNoYW5nZS5hY3Rpb24oKCkgPT4gewot
ICAgICAgICBwcmVzZW50ZXJSZWYuc2V0U3RhdGUoe3Jlc2l6ZTp0cnVlfSk7Ci0gICAgfSk7Ci0g
ICAgLy8gUHJvdmlkZSBwYXJlbnQgZnVuY3Rpb25zL2V2ZW50IHRvIGNoaWxkcmVuIHRvIHVzZQot
Ci0gICAgcmV0dXJuIGA8ZGl2IGNsYXNzPSJjb250ZW50IiByZWY9IiR7c2Nyb2xsUmVmfSI+Ci0g
ICAgICAgIDxkaXYgcmVmPSIke2NvbnRhaW5lclJlZn0iIHN0eWxlPSJwb3NpdGlvbjogcmVsYXRp
dmUiPgotICAgICAgICAgICAgPGRpdiByZWY9IiR7cHJlc2VudGVyUmVmfSIgc3R5bGU9InBvc2l0
aW9uOiAtd2Via2l0LXN0aWNreTsgcG9zaXRpb246c3RpY2t5OyB0b3A6MDsgbGVmdDogMCI+JHsK
LSAgICAgICAgICAgICAgICBMaXN0UHJvdmlkZXIoKHVwZGF0ZUNoaWxkcmVuRnVuY3Rpb25zKSA9
PiB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChleHBvcnRlcikgewotICAgICAgICAgICAgICAg
ICAgICAgICAgZXhwb3J0ZXIoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLyoqCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKiBVcGRhdGUgQ2hpbGRyZW4KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAqIEBwYXJhbSBjaGlsZHJlbiB7QXJyYXl9IHIgQW4gYXJyYXkgb2YgdGhl
IGNoaWxkcmVuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAoY2hpbGRyZW4pID0+IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdXBkYXRlQ2hpbGRyZW5GdW5jdGlvbnMoY2hpbGRyZW4pOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBQcm9waWdhdGUgdGhlIGN1cnJlbnQgc3RhdGUgdG8gbmV3IGNo
aWxkcmVuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2l6ZUV2ZW50U3RyZWFt
LnJlcGxheUxhc3QoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsRXZl
bnRTdHJlYW0ucmVwbGF5TGFzdCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyoqCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKiBOb3RpZnkgUmUtcmVuZGVyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBAcGFy
YW0gd2lkdGgge251bWJlcn0gciBpZiB1bmRlZmluZWQsIGl0IHdpbGwgYXV0byBkZXRhY3QgdGhl
IHdpZHRoIGNoYW5nZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKHdpZHRoKSA9PiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICh0eXBlb2Ygd2lkdGggPT09ICJudW1iZXIiICYmIHdpZHRoID49IDApCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNpemVFdmVudFN0cmVhbS5hZGQod2lk
dGgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBsYXlvdXRTaXplTWF5Q2hhbmdlLmFkZCgpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICk7Ci0gICAg
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9LCBbcmVzaXplQ29udGFpbmVyV2lk
dGgsIHNjcm9sbEV2ZW50U3RyZWFtLCByZXNpemVFdmVudFN0cmVhbSwgbGF5b3V0U2l6ZU1heUNo
YW5nZV0sIC4uLmNoaWxkcmVuRnVuY3Rpb25zKQotICAgICAgICAgICAgfTwvZGl2PgotICAgICAg
ICA8L2Rpdj4KLSAgICA8L2Rpdj5gOwotfQotCi1jbGFzcyBDb2xvckJhdGNoUmVuZGVyIHsKLSAg
ICBjb25zdHJ1Y3RvcigpIHsKLSAgICAgICAgdGhpcy5jb2xvclNlcXNNYXAgPSB7fTsKLSAgICB9
Ci0KLSAgICBsYXp5Q3JlYXRlQ29sb3JTZXFzKGNvbG9yLCBzdGFydEFjdGlvbiwgZmluYWxBY3Rp
b24pIHsKLSAgICAgICAgaWYgKGZhbHNlID09PSBjb2xvciBpbiB0aGlzLmNvbG9yU2Vxc01hcCkK
LSAgICAgICAgICAgIHRoaXMuY29sb3JTZXFzTWFwW2NvbG9yXSA9IFtzdGFydEFjdGlvbiwgZmlu
YWxBY3Rpb25dOwotICAgIH0KLQotICAgIGFkZFNlcShjb2xvciwgc2VxQWN0aW9uKSB7Ci0gICAg
ICAgIHRoaXMuY29sb3JTZXFzTWFwW2NvbG9yXS5wdXNoKHNlcUFjdGlvbik7Ci0gICAgfQotCi0g
ICAgYmF0Y2hSZW5kZXIoY29udGV4dCkgewotICAgICAgICBmb3IgKGxldCBjb2xvciBvZiBPYmpl
Y3Qua2V5cyh0aGlzLmNvbG9yU2Vxc01hcCkpIHsKLSAgICAgICAgICAgIGNvbnN0IHNlcXMgPSB0
aGlzLmNvbG9yU2Vxc01hcFtjb2xvcl07Ci0gICAgICAgICAgICBzZXFzWzBdKGNvbnRleHQsIGNv
bG9yKTsKLSAgICAgICAgICAgIGZvcihsZXQgaSA9IDI7IGkgPCBzZXFzLmxlbmd0aDsgaSsrKQot
ICAgICAgICAgICAgICAgIHNlcXNbaV0oY29udGV4dCwgY29sb3IpOwotICAgICAgICAgICAgc2Vx
c1sxXShjb250ZXh0LCBjb2xvcik7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgY2xlYXIoKSB7Ci0g
ICAgICAgIHRoaXMuY29sb3JTZXFzTWFwID0gbmV3IE1hcCgpOwotICAgIH0KLX0KLQotZnVuY3Rp
b24geFNjcm9sbFN0cmVhbVJlbmRlckZhY3RvcnkoaGVpZ2h0KSB7Ci0gICAgcmV0dXJuIChyZWRy
YXcsIGVsZW1lbnQsIHN0YXRlRGlmZiwgc3RhdGUpID0+IHsKLSAgICAgICAgY29uc3Qgd2lkdGgg
PSB0eXBlb2Ygc3RhdGVEaWZmLndpZHRoID09PSAnbnVtYmVyJyA/IHN0YXRlRGlmZi53aWR0aCA6
IHN0YXRlLndpZHRoOwotICAgICAgICBpZiAod2lkdGggPD0gMCkKLSAgICAgICAgICAgIC8vIE5v
dGhpbmcgdG8gcmVuZGVyCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGxldCBzdGFydFgg
PSAwOwotICAgICAgICBsZXQgcmVuZGVyV2lkdGggPSB3aWR0aDsKLSAgICAgICAgcmVxdWVzdEFu
aW1hdGlvbkZyYW1lKCgpID0+IHsKLSAgICAgICAgICAgIGlmIChlbGVtZW50LmxvZ2ljV2lkdGgg
IT09IHdpZHRoKSB7Ci0gICAgICAgICAgICAgICAgc2V0dXBDYW52YXNXaWR0aFdpdGhEcHIoZWxl
bWVudCwgd2lkdGgpOwotICAgICAgICAgICAgICAgIHNldHVwQ2FudmFzQ29udGV4dFNjYWxlKGVs
ZW1lbnQpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGVsZW1lbnQubG9naWNIZWln
aHQgIT09IGhlaWdodCkgewotICAgICAgICAgICAgICAgIHNldHVwQ2FudmFzSGVpZ2h0V2l0aERw
cihlbGVtZW50LCBoZWlnaHQpOwotICAgICAgICAgICAgICAgIHNldHVwQ2FudmFzQ29udGV4dFNj
YWxlKGVsZW1lbnQpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxlbWVudC5nZXRDb250
ZXh0KCIyZCIsIHthbHBoYTogZmFsc2V9KS5jbGVhclJlY3Qoc3RhcnRYLCAwLCByZW5kZXJXaWR0
aCwgZWxlbWVudC5sb2dpY0hlaWdodCk7Ci0gICAgICAgICAgICByZWRyYXcoc3RhcnRYLCByZW5k
ZXJXaWR0aCwgZWxlbWVudCwgc3RhdGVEaWZmLCBzdGF0ZSk7Ci0gICAgICAgIH0pOwotICAgIH0K
LX0KLQotLy8gbmFtZXNwYWNlIFRpbWVsaW5lCi1jb25zdCBUaW1lbGluZSA9IHt9OwotCi1UaW1l
bGluZS5DYW52YXNTZXJpZXNDb21wb25lbnQgPSAoZG90cywgc2NhbGVzLCBvcHRpb24gPSB7fSkg
PT4gewotICAgIGNvbnNvbGUuYXNzZXJ0KGRvdHMubGVuZ3RoIDw9IHNjYWxlcy5sZW5ndGgpOwot
Ci0gICAgLy8gR2V0IHRoZSBjc3MgdmFsdWUsIHRoaXMgY29tcG9uZW50IGFzc3VtZSB0byB1c2Ug
d2l0aCB3ZWJraXQuY3NzCi0gICAgY29uc3QgY29tcHV0ZWRTdHlsZSA9IGdldENvbXB1dGVkU3R5
bGUoZG9jdW1lbnQuYm9keSk7Ci0gICAgbGV0IHJhZGl1cyA9IHBhcnNlSW50KGNvbXB1dGVkU3R5
bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1zbWFsbFNpemUnKSkgLyAyOwotICAgIGxldCBkb3RNYXJn
aW4gPSBwYXJzZUludChjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tdGlueVNpemUn
KSkgLyAyOwotICAgIGxldCBmb250RmFtaWx5ID0gY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZh
bHVlKCdmb250LWZhbWlseScpOwotICAgIGxldCBkZWZhdWx0RG90Q29sb3IgPSBjb21wdXRlZFN0
eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tZ3JlZW5MaWdodCcpLnRyaW0oKTsKLSAgICBsZXQgZGVm
YXVsdEVtcHR5TGluZUNvbG9yID0gY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWdy
ZXknKS50cmltKCk7Ci0gICAgbGV0IGRlZmF1bHRJbm5lckxhYmxlQ29sb3IgPSBjb21wdXRlZFN0
eWxlLmdldFByb3BlcnR5VmFsdWUoJy0td2hpdGUnKS50cmltKCk7Ci0gICAgbGV0IGRlZmF1bHRG
b250U2l6ZSA9IDEwOwotCi0gICAgLy8gR2V0IGNvbmZpZ3VyYXRpb24KLSAgICAvLyBEZWZhdWx0
IG9yZGVyIGlzIGxlZnQgaXMgYmlnZ2VzdAotICAgIGNvbnN0IHJldmVyc2VkID0gdHlwZW9mIG9w
dGlvbi5yZXZlcnNlZCA9PT0gImJvb2xlYW4iID8gb3B0aW9uLnJldmVyc2VkIDogZmFsc2U7Ci0g
ICAgY29uc3QgZ2V0U2NhbGUgPSB0eXBlb2Ygb3B0aW9uLmdldFNjYWxlRnVuYyA9PT0gImZ1bmN0
aW9uIiA/IG9wdGlvbi5nZXRTY2FsZUZ1bmMgOiAoYSkgPT4gYTsKLSAgICBjb25zdCBjb21wID0g
dHlwZW9mIG9wdGlvbi5jb21wYXJlRnVuYyA9PT0gImZ1bmN0aW9uIiA/IG9wdGlvbi5jb21wYXJl
RnVuYyA6IChhLCBiKSA9PiBhIC0gYjsKLSAgICBjb25zdCBvbkRvdENsaWNrID0gdHlwZW9mIG9w
dGlvbi5vbkRvdENsaWNrID09PSAiZnVuY3Rpb24iID8gb3B0aW9uLm9uRG90Q2xpY2sgOiBudWxs
OwotICAgIGNvbnN0IG9uRG90RW50ZXIgPSB0eXBlb2Ygb3B0aW9uLm9uRG90RW50ZXIgPT09ICJm
dW5jdGlvbiIgPyBvcHRpb24ub25Eb3RFbnRlciA6IG51bGw7Ci0gICAgY29uc3Qgb25Eb3RMZWF2
ZSA9IHR5cGVvZiBvcHRpb24ub25Eb3RMZWF2ZSA9PT0gImZ1bmN0aW9uIiA/IG9wdGlvbi5vbkRv
dExlYXZlIDogbnVsbDsKLSAgICBjb25zdCB0YWdIZWlnaHQgPSBkZWZhdWx0Rm9udFNpemU7Ci0g
ICAgY29uc3QgaGVpZ2h0ID0gb3B0aW9uLmhlaWdodCA/IG9wdGlvbi5oZWlnaHQgOiAyICogcmFk
aXVzICsgdGFnSGVpZ2h0OwotICAgIGNvbnN0IGNvbG9yQmF0Y2hSZW5kZXIgPSBuZXcgQ29sb3JC
YXRjaFJlbmRlcigpOwotICAgIGxldCBkcmF3TGFiZWxzU2VxcyA9IFtdOwotCi0gICAgLy8gRHJh
dyBkb3QgYXBpIGNhbiBiZSB1c2VkIGluIHVzZXIgZGVmaW5lZCByZW5kZXIgZnVuY3Rpb24KLSAg
ICBjb25zdCBkcmF3RG90ID0gKGNvbnRleHQsIHgsIHksIGlzRW1wdHksIHRhZyA9IG51bGwsIGlu
bmVyTGFiZWwsIHVzZVJhZGl1cywgY29sb3IsIGlubmVyTGFiZWxDb2xvciwgZW1wdHlsaW5lQ29s
b3IpID0+IHsKLSAgICAgICAgdXNlUmFkaXVzID0gdXNlUmFkaXVzID8gdXNlUmFkaXVzIDogcmFk
aXVzOwotICAgICAgICBjb2xvciA9IGNvbG9yID8gY29sb3IgOiBkZWZhdWx0RG90Q29sb3I7Ci0g
ICAgICAgIGVtcHR5bGluZUNvbG9yID0gZW1wdHlsaW5lQ29sb3IgPyBlbXB0eWxpbmVDb2xvciA6
IGRlZmF1bHRFbXB0eUxpbmVDb2xvcjsKLSAgICAgICAgaW5uZXJMYWJlbENvbG9yID0gaW5uZXJM
YWJlbENvbG9yID8gaW5uZXJMYWJlbENvbG9yIDogZGVmYXVsdElubmVyTGFibGVDb2xvcjsKLSAg
ICAgICAgY29uc3QgZm9udFNpemUgPSB1c2VSYWRpdXMgKiAxLjU7Ci0gICAgICAgIGNvbnN0IGJh
c2VsaW5lWSA9IHkgKyB1c2VSYWRpdXM7Ci0gICAgICAgIGlmICghaXNFbXB0eSkgewotICAgICAg
ICAgICAgLy8gRHJhdyB0aGUgZG90Ci0gICAgICAgICAgICBjb2xvckJhdGNoUmVuZGVyLmxhenlD
cmVhdGVDb2xvclNlcXMoY29sb3IsIChjb250ZXh0KSA9PiB7Ci0gICAgICAgICAgICAgICAgY29u
dGV4dC5iZWdpblBhdGgoKTsKLSAgICAgICAgICAgICAgICBkcmF3TGFiZWxzU2VxcyA9IFtdOwot
ICAgICAgICAgICAgfSwgKGNvbnRleHQsIGNvbG9yKSA9PiB7Ci0gICAgICAgICAgICAgICAgY29u
dGV4dC5maWxsU3R5bGUgPSBjb2xvcjsKLSAgICAgICAgICAgICAgICBjb250ZXh0LmZpbGwoKTsK
LSAgICAgICAgICAgICAgICBjb250ZXh0LmZvbnQgPSBgJHtmb250U2l6ZX1weCAke2ZvbnRGYW1p
bHl9YDsKLSAgICAgICAgICAgICAgICBjb250ZXh0LnRleHRCYXNlbGluZSA9ICJ0b3AiOwotICAg
ICAgICAgICAgICAgIGNvbnRleHQudGV4dEFsaWduID0gImNlbnRlciI7Ci0gICAgICAgICAgICAg
ICAgY29udGV4dC5mb250V2VpZ2h0ID0gNDAwOwotICAgICAgICAgICAgICAgIGNvbnRleHQuZmls
bFN0eWxlID0gaW5uZXJMYWJlbENvbG9yOwotICAgICAgICAgICAgICAgIGRyYXdMYWJlbHNTZXFz
LmZvckVhY2goc2VxID0+IHNlcSgpKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgY29s
b3JCYXRjaFJlbmRlci5hZGRTZXEoY29sb3IsIChjb250ZXh0LCBjb2xvcikgPT4gewotICAgICAg
ICAgICAgICAgIGNvbnRleHQuYXJjKHggKyBkb3RNYXJnaW4gKyB1c2VSYWRpdXMsIGJhc2VsaW5l
WSwgdXNlUmFkaXVzLCAwLCAyICogTWF0aC5QSSk7Ci0gICAgICAgICAgICAgICAgaWYgKGlubmVy
TGFiZWwgaW5zdGFuY2VvZiBJbWFnZSB8fCB0eXBlb2YgaW5uZXJMYWJlbCA9PT0gInN0cmluZyIg
JiYgKGlubmVyTGFiZWwuZW5kc1dpdGgoJy5zdmcnKSB8fCBpbm5lckxhYmVsLmVuZHNXaXRoKCcu
cG5nJykgfHwgaW5uZXJMYWJlbC5lbmRzV2l0aCgnLmpwZycpIHx8IGlubmVyTGFiZWwuZW5kc1dp
dGgoJy5qcGVnJykpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGxldCBpbWFnZSA9IGlubmVyTGFi
ZWw7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgaW5uZXJMYWJlbCA9PT0gInN0cmlu
ZyIpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlID0gbmV3IEltYWdlKCk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBpbWFnZS5zcmMgPSBpbm5lckxhYmVsOwotICAgICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGNvbnN0IGltYWdlX3BhZGRpbmcgPSB1c2VS
YWRpdXMgLSBmb250U2l6ZSAvIDI7Ci0gICAgICAgICAgICAgICAgICAgIGRyYXdMYWJlbHNTZXFz
LnB1c2goKCkgPT4gewotICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5kcmF3SW1hZ2Uo
aW1hZ2UsIHggKyBkb3RNYXJnaW4gKyBpbWFnZV9wYWRkaW5nLCB5ICsgaW1hZ2VfcGFkZGluZywg
Zm9udFNpemUsIGZvbnRTaXplKTsKLSAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAg
ICAgICAgfSBlbHNlIGlmICh0eXBlb2YgaW5uZXJMYWJlbCA9PT0gIm51bWJlciIgfHwgdHlwZW9m
IGlubmVyTGFiZWwgPT09ICJzdHJpbmciKSB7Ci0gICAgICAgICAgICAgICAgICAgIGRyYXdMYWJl
bHNTZXFzLnB1c2goKCkgPT4gewotICAgICAgICAgICAgICAgICAgICAgICAgLy8gRHJhdyB0aGUg
aW5uZXIgbGFiZWwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlubmVyTGFiZWxTaXpl
ID0gY29udGV4dC5tZWFzdXJlVGV4dChpbm5lckxhYmVsKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGZvbnRIZWlnaHQgPSBpbm5lckxhYmVsU2l6ZS5mb250Qm91bmRpbmdCb3hBc2Nl
bnQgKyBpbm5lckxhYmVsU2l6ZS5mb250Qm91bmRpbmdCb3hEZXNjZW50OwotICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgYWN0dWFsSGVpZ2h0ID0gaW5uZXJMYWJlbFNpemUuYWN0dWFsQm91
bmRpbmdCb3hBc2NlbnQgKyBpbm5lckxhYmVsU2l6ZS5hY3R1YWxCb3VuZGluZ0JveERlc2NlbnQ7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZWFsU3RhcnRHYXAgPSBpbm5lckxhYmVs
U2l6ZS5mb250Qm91bmRpbmdCb3hBc2NlbnQgLSBpbm5lckxhYmVsU2l6ZS5hY3R1YWxCb3VuZGlu
Z0JveEFzY2VudDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZmlsbFRleHQoaW5u
ZXJMYWJlbCwgeCArIGRvdE1hcmdpbiArIHVzZVJhZGl1cywgeSAtIHJlYWxTdGFydEdhcCArIHVz
ZVJhZGl1cyAtIChhY3R1YWxIZWlnaHQgPCBmb250SGVpZ2h0ID8gIGFjdHVhbEhlaWdodCA6IGZv
bnRIZWlnaHQpIC8gMik7Ci0gICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIH0pOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLy8gRHJh
dyB0aGUgZW1wdHkKLSAgICAgICAgICAgIGNvbG9yQmF0Y2hSZW5kZXIubGF6eUNyZWF0ZUNvbG9y
U2VxcyhlbXB0eWxpbmVDb2xvciwgKGNvbnRleHQpID0+IHsKLSAgICAgICAgICAgICAgICBjb250
ZXh0LmJlZ2luUGF0aCgpOwotICAgICAgICAgICAgfSwgKGNvbnRleHQsIGNvbG9yKSA9PiB7Ci0g
ICAgICAgICAgICAgICAgY29udGV4dC5zdHJva2VTdHlsZSA9IGNvbG9yOwotICAgICAgICAgICAg
ICAgIGNvbnRleHQuc3Ryb2tlKCk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIGNvbG9y
QmF0Y2hSZW5kZXIuYWRkU2VxKGVtcHR5bGluZUNvbG9yLCAoY29udGV4dCkgPT4gewotICAgICAg
ICAgICAgICAgIGNvbnRleHQubW92ZVRvKHggKyBkb3RNYXJnaW4sIGJhc2VsaW5lWSk7Ci0gICAg
ICAgICAgICAgICAgY29udGV4dC5saW5lVG8oeCArIGRvdE1hcmdpbiArIDIgKiB1c2VSYWRpdXMs
IGJhc2VsaW5lWSk7Ci0gICAgICAgICAgICAgICAgY29udGV4dC5saW5lV2lkdGggPSAxOwotICAg
ICAgICAgICAgfSk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBEcmF3IHRoZSB0YWcKLSAgICAg
ICAgaWYgKHR5cGVvZiB0YWcgPT09ICJudW1iZXIiIHx8IHR5cGVvZiB0YWcgPT09ICJzdHJpbmci
KSB7Ci0gICAgICAgICAgICBjb250ZXh0LmZvbnQgPSBgJHtkZWZhdWx0Rm9udFNpemV9cHggJHtm
b250RmFtaWx5fWA7Ci0gICAgICAgICAgICBjb250ZXh0LmZpbGxTdHlsZSA9IGNvbG9yOwotICAg
ICAgICAgICAgY29udGV4dC50ZXh0QWxpZ24gPSAiY2VudGVyIjsKLSAgICAgICAgICAgIGNvbnRl
eHQudGV4dEJhc2VsaW5lID0gInRvcCI7Ci0gICAgICAgICAgICBjb250ZXh0LmZpbGxUZXh0KHRh
ZywgeCArIGRvdE1hcmdpbiArIHJhZGl1cywgYmFzZWxpbmVZICsgdXNlUmFkaXVzKTsKLSAgICAg
ICAgfQotICAgICAgICAKLSAgICB9OwotICAgIGNvbnN0IHJlbmRlciA9IHR5cGVvZiBvcHRpb24u
cmVuZGVyRmFjdG9yeSA9PT0gImZ1bmN0aW9uIiA/IG9wdGlvbi5yZW5kZXJGYWN0b3J5KGRyYXdE
b3QpIDogKGRvdCwgY29udGV4dCwgeCwgeSkgPT4gZHJhd0RvdChjb250ZXh0LCB4LCB5LCAhZG90
KTsKLSAgICBjb25zdCBzb3J0RGF0YSA9IG9wdGlvbi5zb3J0RGF0YSA9PT0gdHJ1ZSA/IG9wdGlv
bi5zb3J0RGF0YSA6IGZhbHNlOwotCi0gICAgLy8gSW5pdGlhbGl6ZQotICAgIGNvbnN0IGluaXRE
b3RzID0gZG90cy5tYXAoKGRvdCkgPT4gZG90KTsKLSAgICBjb25zdCBpbml0U2NhbGVzID0gc2Nh
bGVzLm1hcCgoc2NhbGUpID0+IHNjYWxlKTsKLSAgICBpZiAoc29ydERhdGEpIHsKLSAgICAgICAg
aW5pdERvdHMuc29ydCgoYSwgYikgPT4gY29tcChnZXRTY2FsZShhKSwgZ2V0U2NhbGUoYikpKTsK
LSAgICAgICAgaW5pdFNjYWxlcy5zb3J0KGNvbXApOwotICAgIH0KLSAgICBjb25zdCBmaWx0ZXJE
b3RzID0gKGRvdHMpID0+IGRvdHMuZmlsdGVyKGRvdCA9PiB0eXBlb2YgZG90Ll94ID09PSAnbnVt
YmVyJyk7Ci0gICAgbGV0IGluQ2FjaGVEb3RzID0gW107Ci0gICAgY29uc3QgZ2V0TW91c2VFdmVu
dFRpcmdnZXJEb3RzID0gKGUsIHNjcm9sbExlZnQsIGVsZW1lbnQpID0+IHsKLSAgICAgICAgY29u
c3Qge3gsIHl9ID0gZ2V0TW91c2VQb3NJbkNhbnZhcyhlLCBlbGVtZW50KTsKLSAgICAgICAgcmV0
dXJuIGluQ2FjaGVEb3RzLmZpbHRlcihkb3QgPT4gcG9pbnRDaXJjbGVDb2xsaXNpb25EZXRhY3Qo
e3gsIHl9LAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHg6IGRvdC5fZG90Q2VudGVy
LnggLSAoc2Nyb2xsTGVmdCAtIGRvdC5fY2FjaGVkU2Nyb2xsTGVmdCksCi0gICAgICAgICAgICAg
ICAgeTogZG90Ll9kb3RDZW50ZXIueSwKLSAgICAgICAgICAgICAgICByYWRpdXM6IHJhZGl1cwot
ICAgICAgICAgICAgfSkpOwotICAgIH0KLQotICAgIGNvbnN0IGRvdFdpZHRoID0gMiAqIChyYWRp
dXMgKyBkb3RNYXJnaW4pOwotICAgIGNvbnN0IHBhZGRpbmcgPSAxMDAgKiBkb3RXaWR0aCAvIGdl
dERldmljZVBpeGVsUmF0aW8oKTsKLSAgICBjb25zdCB4U2Nyb2xsU3RyZWFtUmVuZGVyID0geFNj
cm9sbFN0cmVhbVJlbmRlckZhY3RvcnkoaGVpZ2h0KTsKLQotICAgIGNvbnN0IHJlZHJhdyA9IChz
dGFydFgsIHJlbmRlcldpZHRoLCBlbGVtZW50LCBzdGF0ZURpZmYsIHN0YXRlKSA9PiB7Ci0gICAg
ICAgIGNvbnN0IHNjcm9sbExlZnQgPSB0eXBlb2Ygc3RhdGVEaWZmLnNjcm9sbExlZnQgPT09ICdu
dW1iZXInID8gc3RhdGVEaWZmLnNjcm9sbExlZnQgOiBzdGF0ZS5zY3JvbGxMZWZ0OwotICAgICAg
ICBjb25zdCBzY2FsZXMgPSBzdGF0ZURpZmYuc2NhbGVzID8gc3RhdGVEaWZmLnNjYWxlcyA6IHN0
YXRlLnNjYWxlczsKLSAgICAgICAgY29uc3QgZG90cyA9IHN0YXRlRGlmZi5kb3RzID8gc3RhdGVE
aWZmLmRvdHMgOiBzdGF0ZS5kb3RzOwotICAgICAgICAvLyBUaGlzIGNvbG9yIG1heWJlIGNoYW5n
ZSB3aGVuIHN3aXRjaCBkYXJrL2xpZ2h0IG1vZGUKLSAgICAgICAgY29uc3QgZGVmYXVsdExpbmVD
b2xvciA9IGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuYm9keSkuZ2V0UHJvcGVydHlWYWx1ZSgn
LS1ib3JkZXJDb2xvcklubGluZUVsZW1lbnQnKTsKLQotICAgICAgICBjb25zdCBjb250ZXh0ID0g
ZWxlbWVudC5nZXRDb250ZXh0KCIyZCIsIHsgYWxwaGE6IGZhbHNlIH0pOwotICAgICAgICAvLyBD
bGVhciBwZXJ2aW91cyBiYXRjaFJlbmRlcgotICAgICAgICBjb2xvckJhdGNoUmVuZGVyLmNsZWFy
KCk7Ci0gICAgICAgIC8vIERyYXcgdGhlIHRpbWUgbGluZQotICAgICAgICBjb2xvckJhdGNoUmVu
ZGVyLmxhenlDcmVhdGVDb2xvclNlcXMoZGVmYXVsdExpbmVDb2xvciwgKGNvbnRleHQpID0+IHsK
LSAgICAgICAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7Ci0gICAgICAgIH0sIChjb250ZXh0LCBj
b2xvcikgPT4gewotICAgICAgICAgICAgY29udGV4dC5saW5lV2lkdGggPSAxOwotICAgICAgICAg
ICAgY29udGV4dC5zdHJva2VTdHlsZSA9IGNvbG9yOwotICAgICAgICAgICAgY29udGV4dC5zdHJv
a2UoKTsKLSAgICAgICAgfSk7Ci0gICAgICAgIGNvbG9yQmF0Y2hSZW5kZXIuYWRkU2VxKGRlZmF1
bHRMaW5lQ29sb3IsIChjb250ZXh0KSA9PiB7Ci0gICAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhz
dGFydFgsIHJhZGl1cyk7Ci0gICAgICAgICAgICBjb250ZXh0LmxpbmVUbyhzdGFydFggKyByZW5k
ZXJXaWR0aCwgcmFkaXVzKTsKLSAgICAgICAgfSk7Ci0gICAgICAgIGlmICghc2NhbGVzIHx8ICFk
b3RzIHx8ICFzY2FsZXMubGVuZ3RoIHx8ICFkb3RzLmxlbmd0aCkgewotICAgICAgICAgICAgY29s
b3JCYXRjaFJlbmRlci5iYXRjaFJlbmRlcihjb250ZXh0KTsKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgfQotICAgICAgICAvLyBEcmF3IHRoZSBkb3RzCi0gICAgICAgIC8vIEZpcnN0LCBD
YWxjdWxhdGUgdGhlIHJlbmRlciByYW5nZToKLSAgICAgICAgbGV0IHN0YXJ0U2NhbGVzSW5kZXgg
PSBNYXRoLmZsb29yKChzY3JvbGxMZWZ0ICsgc3RhcnRYKSAvIGRvdFdpZHRoKTsKLSAgICAgICAg
aWYgKHN0YXJ0U2NhbGVzSW5kZXggPCAwKQotICAgICAgICAgICAgc3RhcnRTY2FsZXNJbmRleCA9
IDA7Ci0gICAgICAgIGxldCBlbmRTY2FsZXNJbmRleCA9IHN0YXJ0U2NhbGVzSW5kZXggKyBNYXRo
LmNlaWwoKHJlbmRlcldpZHRoKSAvIGRvdFdpZHRoKTsKLSAgICAgICAgaWYgKGVuZFNjYWxlc0lu
ZGV4ID49IHNjYWxlcy5sZW5ndGgpCi0gICAgICAgICAgICBlbmRTY2FsZXNJbmRleCA9IHNjYWxl
cy5sZW5ndGggLSAxOwotICAgICAgICBsZXQgY3VycmVudERvdEluZGV4ID0gMDsKLSAgICAgICAg
Zm9yIChsZXQgaSA9IGN1cnJlbnREb3RJbmRleDsgaSA8PSBzdGFydFNjYWxlc0luZGV4ICYmIGN1
cnJlbnREb3RJbmRleCA8IGRvdHMubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgIGNvbnN0IGNv
bXBSZXN1bHQgPSBjb21wKHNjYWxlc1tzdGFydFNjYWxlc0luZGV4XSwgZ2V0U2NhbGUoZG90c1tj
dXJyZW50RG90SW5kZXhdKSk7Ci0gICAgICAgICAgICBpZiAoIXJldmVyc2VkKSB7Ci0gICAgICAg
ICAgICAgICAgaWYgKGNvbXBSZXN1bHQgPiAwKQotICAgICAgICAgICAgICAgICAgICBjdXJyZW50
RG90SW5kZXggKys7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYgKGNvbXBSZXN1
bHQgPCAwKQotICAgICAgICAgICAgICAgICAgICBjdXJyZW50RG90SW5kZXggKys7Ci0gICAgICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgfQotCi0gICAgICAgIC8vIFVzZSB0aGlzIHRvIGRlY3JlYXNlIGNvbGlzaW9uIHNl
YXJjaCBzY29wZQotICAgICAgICBpbkNhY2hlRG90cyA9IFtdOwotICAgICAgICBmb3IgKGxldCBp
ID0gc3RhcnRTY2FsZXNJbmRleDsgaSA8PSBlbmRTY2FsZXNJbmRleDsgaSsrKSB7Ci0gICAgICAg
ICAgICBsZXQgeCA9IGkgKiBkb3RXaWR0aCAtIHNjcm9sbExlZnQ7Ci0gICAgICAgICAgICBpZiAo
Y3VycmVudERvdEluZGV4IDwgZG90cy5sZW5ndGggJiYgY29tcChzY2FsZXNbaV0sIGdldFNjYWxl
KGRvdHNbY3VycmVudERvdEluZGV4XSkpID09PSAwKSB7Ci0gICAgICAgICAgICAgICAgcmVuZGVy
KGRvdHNbY3VycmVudERvdEluZGV4XSwgY29udGV4dCwgeCwgMCk7Ci0gICAgICAgICAgICAgICAg
ZG90c1tjdXJyZW50RG90SW5kZXhdLl9kb3RDZW50ZXIgPSB7eDogeCArIGRvdE1hcmdpbiArIHJh
ZGl1cywgeTogcmFkaXVzfTsKLSAgICAgICAgICAgICAgICBkb3RzW2N1cnJlbnREb3RJbmRleF0u
X2NhY2hlZFNjcm9sbExlZnQgPSBzY3JvbGxMZWZ0OwotICAgICAgICAgICAgICAgIGluQ2FjaGVE
b3RzLnB1c2goZG90c1tjdXJyZW50RG90SW5kZXhdKTsKLSAgICAgICAgICAgICAgICBjdXJyZW50
RG90SW5kZXggKz0gMTsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHJlbmRl
cihudWxsLCBjb250ZXh0LCB4LCAwKTsKLSAgICAgICAgfQotICAgICAgICBjb2xvckJhdGNoUmVu
ZGVyLmJhdGNoUmVuZGVyKGNvbnRleHQpOwotICAgIH07Ci0KLSAgICByZXR1cm4gTGlzdFByb3Zp
ZGVyUmVjZWl2ZXIoKHVwZGF0ZUNvbnRhaW5lcldpZHRoLCBvbkNvbnRhaW5lclNjcm9sbCwgb25S
ZXNpemUpID0+IHsKLSAgICAgICAgY29uc3QgbW91c2VNb3ZlID0gKGUpID0+IHsKLSAgICAgICAg
ICAgIGxldCBkb3RzID0gZ2V0TW91c2VFdmVudFRpcmdnZXJEb3RzKGUsIGNhbnZhc1JlZi5zdGF0
ZS5zY3JvbGxMZWZ0LCBjYW52YXNSZWYuZWxlbWVudCk7Ci0gICAgICAgICAgICBpZiAoZG90cy5s
ZW5ndGgpIHsKLSAgICAgICAgICAgICAgICBpZiAob25Eb3RFbnRlcikgewotICAgICAgICAgICAg
ICAgICAgICBkb3RzWzBdLnRpcFBvaW50cyA9IFsKLSAgICAgICAgICAgICAgICAgICAgICAgIHt4
OiBkb3RzWzBdLl9kb3RDZW50ZXIueCwgeTogZG90c1swXS5fZG90Q2VudGVyLnkgLSAzICogcmFk
aXVzIC8gMn0sCi0gICAgICAgICAgICAgICAgICAgICAgICB7eDogZG90c1swXS5fZG90Q2VudGVy
LngsIHk6IGRvdHNbMF0uX2RvdENlbnRlci55ICsgcmFkaXVzIC8gMn0sCi0gICAgICAgICAgICAg
ICAgICAgIF07Ci0gICAgICAgICAgICAgICAgICAgIG9uRG90RW50ZXIoZG90c1swXSwgZSwgY2Fu
dmFzUmVmLmVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpOwotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICBjYW52YXNSZWYuZWxlbWVudC5zdHlsZS5jdXJzb3IgPSAicG9p
bnRlciI7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGlmIChvbkRvdExl
YXZlKQotICAgICAgICAgICAgICAgICAgICBvbkRvdExlYXZlKGUsIGNhbnZhc1JlZi5lbGVtZW50
LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKTsKLSAgICAgICAgICAgICAgICBjYW52YXNSZWYuZWxl
bWVudC5zdHlsZS5jdXJzb3IgPSAiZGVmYXVsdCI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
LSAgICAgICAgY29uc3Qgb25TY3JvbGxBY3Rpb24gPSAoZSkgPT4gewotICAgICAgICAgICAgY2Fu
dmFzUmVmLnNldFN0YXRlKHtzY3JvbGxMZWZ0OiBlLnRhcmdldC5zY3JvbGxMZWZ0IC8gZ2V0RGV2
aWNlUGl4ZWxSYXRpbygpfSk7Ci0gICAgICAgICAgICBtb3VzZU1vdmUoZSk7Ci0gICAgICAgIH07
Ci0gICAgICAgIGNvbnN0IG9uUmVzaXplQWN0aW9uID0gKHdpZHRoKSA9PiB7Ci0gICAgICAgICAg
ICBjYW52YXNSZWYuc2V0U3RhdGUoe3dpZHRoOiB3aWR0aH0pOwotICAgICAgICB9OwotCi0gICAg
ICAgIGNvbnN0IGNhbnZhc1JlZiA9IFJFRi5jcmVhdGVSZWYoewotICAgICAgICAgICAgc3RhdGU6
IHsKLSAgICAgICAgICAgICAgICBkb3RzOiBpbml0RG90cywKLSAgICAgICAgICAgICAgICBzY2Fs
ZXM6IGluaXRTY2FsZXMsCi0gICAgICAgICAgICAgICAgc2Nyb2xsTGVmdDogMCwKLSAgICAgICAg
ICAgICAgICB3aWR0aDogMCwKLSAgICAgICAgICAgICAgICBvblNjcmVlbjogZmFsc2UsCi0gICAg
ICAgICAgICB9LAotICAgICAgICAgICAgb25FbGVtZW50TW91bnQ6IChlbGVtZW50KSA9PiB7Ci0g
ICAgICAgICAgICAgICAgc2V0dXBDYW52YXNIZWlnaHRXaXRoRHByKGVsZW1lbnQsIGhlaWdodCk7
Ci0gICAgICAgICAgICAgICAgc2V0dXBDYW52YXNDb250ZXh0U2NhbGUoZWxlbWVudCk7Ci0gICAg
ICAgICAgICAgICAgaWYgKG9uRG90Q2xpY2spIHsKLSAgICAgICAgICAgICAgICAgICAgZWxlbWVu
dC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIChlKSA9PiB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBsZXQgZG90cyA9IGdldE1vdXNlRXZlbnRUaXJnZ2VyRG90cyhlLCBjYW52YXNSZWYuc3Rh
dGUuc2Nyb2xsTGVmdCwgZWxlbWVudCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZG90
cy5sZW5ndGgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Eb3RDbGljayhkb3RzWzBd
LCBlKTsKLSAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICAgICAgaWYgKG9uRG90Q2xpY2sgfHwgb25Eb3RFbnRlciB8fCBvbkRvdExlYXZlKQot
ICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScs
IG1vdXNlTW92ZSk7Ci0gICAgICAgICAgICAgICAgaWYgKG9uRG90TGVhdmUpCi0gICAgICAgICAg
ICAgICAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VsZWF2ZScsIChlKSA9PiBv
bkRvdExlYXZlKGUsIGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpKTsKLQotICAgICAg
ICAgICAgICAgIGNyZWF0ZUluc2VydGlvbk9ic2VydmVycyhlbGVtZW50LCAoZW50cmllcykgPT4g
ewotICAgICAgICAgICAgICAgICAgICBjYW52YXNSZWYuc2V0U3RhdGUoe29uU2NyZWVuOiBlbnRy
aWVzWzBdLmlzSW50ZXJzZWN0aW5nfSk7Ci0gICAgICAgICAgICAgICAgfSwgMCwgMC4wMSwgMC4w
MSk7Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAgb25FbGVtZW50VW5tb3VudDogKGVsZW1l
bnQpID0+IHsKLSAgICAgICAgICAgICAgICBvbkNvbnRhaW5lclNjcm9sbC5zdG9wQWN0aW9uKG9u
U2Nyb2xsQWN0aW9uKTsKLSAgICAgICAgICAgICAgICBvblJlc2l6ZS5zdG9wQWN0aW9uKG9uUmVz
aXplQWN0aW9uKTsKLSAgICAgICAgICAgICAgICAvLyBDbGVhbiB0aGUgY2FudmFzLCBmcmVlIGl0
cyBtZW1vcnkKLSAgICAgICAgICAgICAgICBlbGVtZW50LndpZHRoID0gMDsKLSAgICAgICAgICAg
ICAgICBlbGVtZW50LmhlaWdodCA9IDA7Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAgb25T
dGF0ZVVwZGF0ZTogKGVsZW1lbnQsIHN0YXRlRGlmZiwgc3RhdGUpID0+IHsKLSAgICAgICAgICAg
ICAgICBpZiAoIXN0YXRlLm9uU2NyZWVuICYmICFzdGF0ZURpZmYub25TY3JlZW4pCi0gICAgICAg
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICBpZiAoc3RhdGVEaWZmLnNjYWxl
cyB8fCBzdGF0ZURpZmYuZG90cyB8fCB0eXBlb2Ygc3RhdGVEaWZmLnNjcm9sbExlZnQgPT09ICdu
dW1iZXInIHx8IHR5cGVvZiBzdGF0ZURpZmYud2lkdGggPT09ICdudW1iZXInIHx8IHN0YXRlRGlm
Zi5vblNjcmVlbikgewotICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdGVEaWZmLnNjYWxlcykK
LSAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlRGlmZi5zY2FsZXMgPSBzdGF0ZURpZmYuc2Nh
bGVzLm1hcCh4ID0+IHgpOwotICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdGVEaWZmLmRvdHMp
Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZURpZmYuZG90cyA9IHN0YXRlRGlmZi5kb3Rz
Lm1hcCh4ID0+IHgpOwotICAgICAgICAgICAgICAgICAgICB4U2Nyb2xsU3RyZWFtUmVuZGVyKHJl
ZHJhdywgZWxlbWVudCwgc3RhdGVEaWZmLCBzdGF0ZSk7Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgfQotICAgICAgICB9KTsKLQotICAgICAgICB1cGRhdGVDb250YWluZXJXaWR0aChz
Y2FsZXMubGVuZ3RoICogZG90V2lkdGggKiBnZXREZXZpY2VQaXhlbFJhdGlvKCkpOwotICAgICAg
ICBjb25zdCB1cGRhdGVEYXRhID0gKGRvdHMsIHNjYWxlcykgPT4gewotICAgICAgICAgICAgdXBk
YXRlQ29udGFpbmVyV2lkdGgoc2NhbGVzLmxlbmd0aCAqIGRvdFdpZHRoICogZ2V0RGV2aWNlUGl4
ZWxSYXRpbygpKTsKLSAgICAgICAgICAgIGNhbnZhc1JlZi5zZXRTdGF0ZSh7Ci0gICAgICAgICAg
ICAgICAgZG90czogZG90cywKLSAgICAgICAgICAgICAgICBzY2FsZXM6IHNjYWxlcywKLSAgICAg
ICAgICAgIH0pOwotICAgICAgICB9OwotICAgICAgICBpZiAodHlwZW9mIG9wdGlvbi5leHBvcnRl
ciA9PT0gImZ1bmN0aW9uIikKLSAgICAgICAgICAgIG9wdGlvbi5leHBvcnRlcih1cGRhdGVEYXRh
KTsKLSAgICAgICAgb25Db250YWluZXJTY3JvbGwuYWN0aW9uKG9uU2Nyb2xsQWN0aW9uKTsKLSAg
ICAgICAgb25SZXNpemUuYWN0aW9uKG9uUmVzaXplQWN0aW9uKTsKLSAgICAgICAgcmV0dXJuIGA8
ZGl2IGNsYXNzPSJzZXJpZXMiPgotICAgICAgICAgICAgPGNhbnZhcyByZWY9IiR7Y2FudmFzUmVm
fSIgd2lkdGg9IjAiIGhlaWdodD0iMCI+Ci0gICAgICAgIDwvZGl2PmA7Ci0gICAgfSk7Ci19Ci0K
LVRpbWVsaW5lLkV4cGFuZGFibGVTZXJpZXNDb21wb25lbnQgPSAobWFpblNlcmllcywgb3B0aW9u
cywgc3ViU2VyaWVzZXMsIGV4cG9ydGVyKSA9PiB7Ci0gICAgbGV0IGxheW91dFNpemVNYXlDaGFu
Z2VFdmVudCA9IG51bGw7Ci0gICAgY29uc3QgcmVmID0gUkVGLmNyZWF0ZVJlZih7Ci0gICAgICAg
IHN0YXRlOiB7ZXhwYW5kZWQ6IG9wdGlvbnMuZXhwYW5kZWQgPyBvcHRpb25zLmV4cGFuZGVkIDog
ZmFsc2V9LAotICAgICAgICBvblN0YXRlVXBkYXRlOiAoZWxlbWVudCwgc3RhdGVEaWZmKSA9PiB7
Ci0gICAgICAgICAgICBpZiAoc3RhdGVEaWZmLmV4cGFuZGVkID09PSBmYWxzZSkgewotICAgICAg
ICAgICAgICAgIGVsZW1lbnQuY2hpbGRyZW5bMF0uc3R5bGUuZGlzcGxheSA9ICdub25lJzsKLSAg
ICAgICAgICAgICAgICBlbGVtZW50LmNoaWxkcmVuWzFdLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2sn
OwotICAgICAgICAgICAgICAgIGVsZW1lbnQuY2hpbGRyZW5bMl0uc3R5bGUuZGlzcGxheSA9ICdu
b25lJzsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoc3RhdGVEaWZmLmV4cGFuZGVkID09PSB0cnVl
KSB7Ci0gICAgICAgICAgICAgICAgZWxlbWVudC5jaGlsZHJlblswXS5zdHlsZS5kaXNwbGF5ID0g
J2Jsb2NrJzsKLSAgICAgICAgICAgICAgICBlbGVtZW50LmNoaWxkcmVuWzFdLnN0eWxlLmRpc3Bs
YXkgPSAnbm9uZSc7Ci0gICAgICAgICAgICAgICAgZWxlbWVudC5jaGlsZHJlblsyXS5zdHlsZS5k
aXNwbGF5ID0gJ2Jsb2NrJzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8vIE5vdGlmeSBp
bnNpZGUgb2YgdGhlIHByb3ZpZGVyIHRoYXQgd2UgbWF5IGNoYW5nZWQgdGhlIGxheW91dCBzaXpl
IGJlY2F1c2Ugb2YgZXhwYW5kZWQgLyB1bmV4cGFuZGVkLgotICAgICAgICAgICAgbGF5b3V0U2l6
ZU1heUNoYW5nZUV2ZW50LmFkZCgpOwotICAgICAgICB9Ci0gICAgfSk7Ci0gICAgaWYgKGV4cG9y
dGVyKQotICAgICAgICBleHBvcnRlcigoZXhwYW5kZWQpID0+IHJlZi5zZXRTdGF0ZSh7ZXhwYW5k
ZWQ6IGV4cGFuZGVkfSkpOwotICAgIHJldHVybiBMaXN0UHJvdmlkZXJSZWNlaXZlcigodXBkYXRl
Q29udGFpbmVyV2lkdGgsIG9uQ29udGFpbmVyU2Nyb2xsLCBvblJlc2l6ZSwgbGF5b3V0U2l6ZU1h
eUNoYW5nZSkgPT4gewotICAgICAgICBsYXlvdXRTaXplTWF5Q2hhbmdlRXZlbnQgPSBsYXlvdXRT
aXplTWF5Q2hhbmdlOwotICAgICAgICByZXR1cm4gYDxkaXYgY2xhc3M9Imdyb3VwU2VyaWVzIiBy
ZWY9IiR7cmVmfSI+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJzZXJpZXMiIHN0eWxlPSJkaXNw
bGF5Om5vbmU7Ij48L2Rpdj4KLSAgICAgICAgICAgIDxkaXY+JHttYWluU2VyaWVzKHVwZGF0ZUNv
bnRhaW5lcldpZHRoLCBvbkNvbnRhaW5lclNjcm9sbCwgb25SZXNpemUsIGxheW91dFNpemVNYXlD
aGFuZ2UpfTwvZGl2PgotICAgICAgICAgICAgPGRpdiBzdHlsZT0iZGlzcGxheTpub25lIj4ke3N1
YlNlcmllc2VzLm1hcCgoc3ViU2VyaWVzKSA9PiBzdWJTZXJpZXModXBkYXRlQ29udGFpbmVyV2lk
dGgsIG9uQ29udGFpbmVyU2Nyb2xsLCBvblJlc2l6ZSwgbGF5b3V0U2l6ZU1heUNoYW5nZSkpLmpv
aW4oIiIpfTwvZGl2PgotICAgICAgICA8L2Rpdj5gOwotICAgIH0pOwotfQotCi1UaW1lbGluZS5I
ZWFkZXJDb21wb25lbnQgPSAobGFiZWwpID0+IHsKLSAgICByZXR1cm4gYDxkaXYgY2xhc3M9InNl
cmllcyI+JHtsYWJlbH08L2Rpdj5gOwotfQotCi1UaW1lbGluZS5FeHBhbmRhYmxlSGVhZGVyQ29t
cG9uZW50ID0gKG1haW5MYWJlbCwgb3B0aW9ucywgc3ViTGFiZWxzLCBleHBvcnRlcikgPT4gewot
ICAgIGNvbnN0IHJlZiA9IFJFRi5jcmVhdGVSZWYoewotICAgICAgICBzdGF0ZToge2V4cGFuZGVk
OiBvcHRpb25zLmV4cGFuZGVkID8gb3B0aW9ucy5leHBhbmRlZCA6IGZhbHNlfSwKLSAgICAgICAg
b25TdGF0ZVVwZGF0ZTogKGVsZW1lbnQsIHN0YXRlRGlmZikgPT4gewotICAgICAgICAgICAgaWYg
KHN0YXRlRGlmZi5leHBhbmRlZCA9PT0gZmFsc2UpCi0gICAgICAgICAgICAgICAgZWxlbWVudC5j
aGlsZHJlblsxXS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwotICAgICAgICAgICAgZWxzZSBpZiAo
c3RhdGVEaWZmLmV4cGFuZGVkID09PSB0cnVlKQotICAgICAgICAgICAgICAgIGVsZW1lbnQuY2hp
bGRyZW5bMV0uc3R5bGUuZGlzcGxheSA9ICJibG9jayI7Ci0gICAgICAgIH0KLSAgICB9KTsKLSAg
ICBpZiAoZXhwb3J0ZXIpCi0gICAgICAgIGV4cG9ydGVyKChleHBhbmRlZCkgPT4gcmVmLnNldFN0
YXRlKHtleHBhbmRlZDogZXhwYW5kZWR9KSk7Ci0gICAgcmV0dXJuIGA8ZGl2IHJlZj0iJHtyZWZ9
Ij4KLSAgICAgICAgPGRpdiBjbGFzcz0ic2VyaWVzIj4KLSAgICAgICAgICAgICR7bWFpbkxhYmVs
fQotICAgICAgICA8L2Rpdj4KLSAgICAgICAgPGRpdiBzdHlsZT0iZGlzcGxheTpub25lIj4KLSAg
ICAgICAgICAgICR7c3ViTGFiZWxzLm1hcChsYWJlbCA9PiBgPGRpdiBjbGFzcz0ic2VyaWVzIj4k
e2xhYmVsfTwvZGl2PmApLmpvaW4oIiIpfQotICAgICAgICA8L2Rpdj4KLSAgICA8L2Rpdj5gOwot
fQotCi1UaW1lbGluZS5TZXJpZXNXaXRoSGVhZGVyQ29tcG9uZW50ID0gKGhlYWRlciwgc2VyaWVz
KSA9PiB7Ci0gICAgcmV0dXJuIHtoZWFkZXIsIHNlcmllc307Ci19Ci0KLVRpbWVsaW5lLkV4cGFu
ZGFibGVTZXJpZXNXaXRoSGVhZGVyRXhwYW5kZXJDb21wb25lbnQgPSAobWFpblNlcmllc1dpdGhM
YWJsZSwgb3B0aW9ucywgLi4uc3ViU2VyaWVzV2l0aExhYmxlKSA9PiB7Ci0gICAgY29uc3QgcmVm
ID0gUkVGLmNyZWF0ZVJlZih7Ci0gICAgICAgIHN0YXRlOiB7ZXhwYW5kZWQ6IG9wdGlvbnMuZXhw
YW5kZWQgPyBvcHRpb25zLmV4cGFuZGVkIDogZmFsc2V9LAotICAgICAgICBvblN0YXRlVXBkYXRl
OiAoZWxlbWVudCwgc3RhdGVEaWZmKSA9PiB7Ci0gICAgICAgICAgICBpZiAoc3RhdGVEaWZmLmV4
cGFuZGVkID09PSBmYWxzZSkKLSAgICAgICAgICAgICAgICBlbGVtZW50LmlubmVyVGV4dCA9ICIr
IjsKLSAgICAgICAgICAgIGVsc2UgaWYgKHN0YXRlRGlmZi5leHBhbmRlZCA9PT0gdHJ1ZSkKLSAg
ICAgICAgICAgICAgICBlbGVtZW50LmlubmVyVGV4dCA9ICItIjsKLSAgICAgICAgfQotICAgIH0p
OwotICAgIGNvbnN0IG1haW5MYWJlbCA9IG1haW5TZXJpZXNXaXRoTGFibGUuaGVhZGVyOwotICAg
IGNvbnN0IHN1YkxhYmVscyA9IHN1YlNlcmllc1dpdGhMYWJsZS5tYXAoaXRlbSA9PiBpdGVtLmhl
YWRlcik7Ci0gICAgY29uc3QgbWFpblNlcmllcyA9IG1haW5TZXJpZXNXaXRoTGFibGUuc2VyaWVz
OwotICAgIGNvbnN0IHN1YlNlcmllc2VzID0gc3ViU2VyaWVzV2l0aExhYmxlLm1hcChpdGVtID0+
IGl0ZW0uc2VyaWVzKTsKLSAgICBjb25zdCBleHBhbmRlZEV2ZW50ID0gbmV3IEV2ZW50U3RyZWFt
KCk7Ci0gICAgY29uc3QgY2xpY2tFdmVudCA9IHJlZi5mcm9tRXZlbnQoJ2NsaWNrJykuYWN0aW9u
KCgpID0+IHsKLSAgICAgICAgbGV0IGV4cGFuZGVkID0gcmVmLnN0YXRlLmV4cGFuZGVkOwotICAg
ICAgICBleHBhbmRlZEV2ZW50LmFkZCghZXhwYW5kZWQpOwotICAgICAgICByZWYuc2V0U3RhdGUo
e2V4cGFuZGVkOiAhZXhwYW5kZWR9KTsKLSAgICB9KTsKLSAgICBjb25zdCBjb21wb3NlciA9IEZQ
LmNvbXBvc2VyKEZQLmN1cnJ5aW5nKChzZXRIZWFkZXJFeHBhbmQsIHNldFNlcmllc0V4cGFuZCkg
PT4gewotICAgICAgICBleHBhbmRlZEV2ZW50LmFjdGlvbigoZXhwYW5kZWQpID0+IHsKLSAgICAg
ICAgICAgIHNldEhlYWRlckV4cGFuZChleHBhbmRlZCk7Ci0gICAgICAgICAgICBzZXRTZXJpZXNF
eHBhbmQoZXhwYW5kZWQpOwotICAgICAgICB9KQotICAgIH0pKTsKLSAgICByZXR1cm4gewotICAg
ICAgICBoZWFkZXI6IFRpbWVsaW5lLkV4cGFuZGFibGVIZWFkZXJDb21wb25lbnQoYDxhIGNsYXNz
PSJsaW5rLWJ1dHRvbiIgaHJlZj0iamF2YXNjcmlwdDp2b2lkKDApIiByZWY9IiR7cmVmfSI+Kzwv
YT5gICsgbWFpbkxhYmVsLCBvcHRpb25zLCBzdWJMYWJlbHMsIGNvbXBvc2VyKSwKLSAgICAgICAg
c2VyaWVzOiBUaW1lbGluZS5FeHBhbmRhYmxlU2VyaWVzQ29tcG9uZW50KG1haW5TZXJpZXMsIG9w
dGlvbnMsIHN1YlNlcmllc2VzLCBjb21wb3NlciksCi0gICAgfQotfQotCi1UaW1lbGluZS5DYW52
YXNYQXhpc0NvbXBvbmVudCA9IChzY2FsZXMsIG9wdGlvbiA9IHt9KSA9PiB7Ci0gICAgLy8gR2V0
IGNvbmZpZ3VyYXRpb24KLSAgICBjb25zdCBnZXRTY2FsZUtleSA9IHR5cGVvZiBvcHRpb24uZ2V0
U2NhbGVGdW5jID09PSAiZnVuY3Rpb24iID8gb3B0aW9uLmdldFNjYWxlRnVuYyA6IChhKSA9PiBh
OwotICAgIGNvbnN0IGNvbXAgPSB0eXBlb2Ygb3B0aW9uLmNvbXBhcmVGdW5jID09PSAiZnVuY3Rp
b24iID8gb3B0aW9uLmNvbXBhcmVGdW5jIDogKGEsIGIpID0+IGIgLSBhOwotICAgIGNvbnN0IG9u
U2NhbGVDbGljayA9IHR5cGVvZiBvcHRpb24ub25TY2FsZUNsaWNrID09PSAiZnVuY3Rpb24iID8g
b3B0aW9uLm9uU2NhbGVDbGljayA6IG51bGw7Ci0gICAgY29uc3Qgb25TY2FsZUVudGVyID0gdHlw
ZW9mIG9wdGlvbi5vblNjYWxlRW50ZXIgPT09ICJmdW5jdGlvbiIgPyBvcHRpb24ub25TY2FsZUVu
dGVyIDogbnVsbDsKLSAgICBjb25zdCBvblNjYWxlTGVhdmUgPSB0eXBlb2Ygb3B0aW9uLm9uU2Nh
bGVMZWF2ZSA9PT0gImZ1bmN0aW9uIiA/IG9wdGlvbi5vblNjYWxlTGVhdmUgOiBudWxsOwotICAg
IGNvbnN0IHNvcnREYXRhID0gb3B0aW9uLnNvcnREYXRhID09PSB0cnVlID8gb3B0aW9uLnNvcnRE
YXRhIDogZmFsc2U7Ci0gICAgY29uc3QgZ2V0TGFiZWwgPSB0eXBlb2Ygb3B0aW9uLmdldExhYmVs
RnVuYyA9PT0gImZ1bmN0aW9uIiA/IG9wdGlvbi5nZXRMYWJlbEZ1bmMgOiAoYSkgPT4gYCR7YX1g
OwotICAgIGNvbnN0IGlzVG9wID0gdHlwZW9mIG9wdGlvbi5pc1RvcCA9PT0gImJvb2xlYW4iID8g
b3B0aW9uLmlzVG9wIDogZmFsc2U7Ci0KLSAgICAvLyBHZXQgdGhlIGNzcyB2YWx1ZSwgdGhpcyBj
b21wb25lbnQgYXNzdW1lIHRvIHVzZSB3aXRoIHdlYmtpdC5jc3MKLSAgICBjb25zdCBjb21wdXRl
ZFN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5ib2R5KTsKLSAgICBjb25zdCBmb250
RmFtaWx5ID0gY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCdmb250LWZhbWlseScpOwot
ICAgIGNvbnN0IGZvbnRTaXplID0gY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLXRp
bnlTaXplJyk7Ci0gICAgY29uc3QgZm9udFNpemVOdW1iZXIgPSBwYXJzZUludChmb250U2l6ZSk7
Ci0gICAgY29uc3QgZm9udENvbG9yID0gb25TY2FsZUNsaWNrID8gY29tcHV0ZWRTdHlsZS5nZXRQ
cm9wZXJ0eVZhbHVlKCctLWxpbmtDb2xvcicpIDogY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZh
bHVlKCdjb2xvcicpOwotICAgIGNvbnN0IGZvbnRSb3RhdGUgPSA2MCAqIE1hdGguUEkgLyAxODA7
Ci0gICAgY29uc3QgZm9udFRvcFJvdGF0ZSA9IDMwMCAqIE1hdGguUEkgLyAxODA7Ci0gICAgY29u
c3QgbGlua0NvbG9yID0gY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWxpbmtDb2xv
cicpOwotICAgIGNvbnN0IHNjYWxlV2lkdGggPSBwYXJzZUludChjb21wdXRlZFN0eWxlLmdldFBy
b3BlcnR5VmFsdWUoJy0tc21hbGxTaXplJykpICsgcGFyc2VJbnQoY29tcHV0ZWRTdHlsZS5nZXRQ
cm9wZXJ0eVZhbHVlKCctLXRpbnlTaXplJykpOwotICAgIGNvbnN0IHNjYWxlVGFnTGluZUhlaWdo
dCA9IHBhcnNlSW50KGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1zbWFsbFNpemUn
KSk7Ci0gICAgY29uc3Qgc2NhbGVUYWdMaW5lUGFkZGluZyA9IDEwOwotICAgIGNvbnN0IHNjYWxl
R3JvdXBUYWdMaW5lUGFkZGluZyA9IDM7Ci0gICAgY29uc3Qgc2NhbGVHcm91cE1hcmdpbiA9IGZv
bnRTaXplTnVtYmVyIC8gMjsKLSAgICBjb25zdCBzY2FsZUJyb2FkTGluZUhlaWdodCA9IHBhcnNl
SW50KGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS10aW55U2l6ZScpKSAvIDI7Ci0g
ICAgY29uc3QgbWF4aW51bVRleHRIZWlnaHQgPSBzY2FsZVdpZHRoICogNC41OwotICAgIGNvbnN0
IGNhbnZhc0hlaWdodCA9IHR5cGVvZiBvcHRpb24uaGVpZ2h0ID09PSAibnVtYmVyIiA/IG9wdGlv
bi5oZWlnaHQgOiBwYXJzZUludChjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tc21h
bGxTaXplJykpICogNTsKLSAgICBjb25zdCBzcXJ0MyA9IE1hdGguc3FydCgzKTsKLSAgICBjb25z
dCBjb2xvckJhdGNoUmVuZGVyID0gbmV3IENvbG9yQmF0Y2hSZW5kZXIoKTsKLQotICAgIGNvbnN0
IGRyYXdTY2FsZSA9IChzY2FsZUxhYmVsLCBncm91cCwgY29udGV4dCwgeCwgeSwgaXNIb3ZlcmFi
bGUsIGxpbmVDb2xvciwgZ3JvdXBDb2xvcikgPT4gewotICAgICAgICBjb25zdCBjb21wdXRlZFN0
eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5ib2R5KTsKLSAgICAgICAgY29uc3QgdXNl
ZExpbmVDb2xvciA9IGxpbmVDb2xvciA/IGxpbmVDb2xvciA6IGNvbXB1dGVkU3R5bGUuZ2V0UHJv
cGVydHlWYWx1ZSgnLS1ib3JkZXJDb2xvcklubGluZUVsZW1lbnQnKTsKLSAgICAgICAgY29uc3Qg
dXNlZEdyb3VwQ29sb3IgPSBncm91cENvbG9yID8gZ3JvdXBDb2xvciA6IGlzRGFya01vZGUoKSA/
IGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS13aGl0ZScpIDogY29tcHV0ZWRTdHls
ZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWJsYWNrJyk7Ci0gICAgICAgIGNvbnN0IHRvdGFsV2lkdGgg
PSBncm91cCAqIHNjYWxlV2lkdGg7Ci0gICAgICAgIGNvbnN0IGJhc2VMaW5lWSA9IGlzVG9wID8g
eSArIGNhbnZhc0hlaWdodCAtIHNjYWxlQnJvYWRMaW5lSGVpZ2h0IDogeSArIHNjYWxlQnJvYWRM
aW5lSGVpZ2h0OwotICAgICAgICBjb25zdCBtaWRkbGVQb2ludFggPSB4ICsgdG90YWxXaWR0aCAv
IDI7Ci0gICAgICAgIGlmIChncm91cCA+IDEpIHsKLSAgICAgICAgICAgIGNvbnN0IGdyb3VwQmFz
ZWxpbmVZID0gaXNUb3AgPyBiYXNlTGluZVkgLSBzY2FsZUJyb2FkTGluZUhlaWdodCA6IGJhc2VM
aW5lWSArIHNjYWxlQnJvYWRMaW5lSGVpZ2h0OwotICAgICAgICAgICAgY29sb3JCYXRjaFJlbmRl
ci5sYXp5Q3JlYXRlQ29sb3JTZXFzKHVzZWRHcm91cENvbG9yLCAoY29udGV4dCkgPT4gewotICAg
ICAgICAgICAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7Ci0gICAgICAgICAgICB9LCAoY29udGV4
dCwgY29sb3IpID0+IHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LmxpbmVXaWR0aCA9IDE7Ci0g
ICAgICAgICAgICAgICAgY29udGV4dC5zdHJva2VTdHlsZSA9IGNvbG9yOwotICAgICAgICAgICAg
ICAgIGNvbnRleHQuc3Ryb2tlKCk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIGNvbG9y
QmF0Y2hSZW5kZXIuYWRkU2VxKHVzZWRHcm91cENvbG9yLCAoY29udGV4dCkgPT4gewotICAgICAg
ICAgICAgICAgIGNvbnRleHQubW92ZVRvKHggKyBzY2FsZUdyb3VwTWFyZ2luLCBncm91cEJhc2Vs
aW5lWSk7Ci0gICAgICAgICAgICAgICAgY29udGV4dC5saW5lVG8oeCArIHNjYWxlR3JvdXBNYXJn
aW4sIGJhc2VMaW5lWSk7Ci0gICAgICAgICAgICAgICAgY29udGV4dC5tb3ZlVG8oeCArIHNjYWxl
R3JvdXBNYXJnaW4sIGdyb3VwQmFzZWxpbmVZKTsKLSAgICAgICAgICAgICAgICBjb250ZXh0Lmxp
bmVUbyh4ICsgdG90YWxXaWR0aCAtIHNjYWxlR3JvdXBNYXJnaW4sIGdyb3VwQmFzZWxpbmVZKTsK
LSAgICAgICAgICAgICAgICBjb250ZXh0Lm1vdmVUbyh4ICsgdG90YWxXaWR0aCAtIHNjYWxlR3Jv
dXBNYXJnaW4sIGdyb3VwQmFzZWxpbmVZKTsKLSAgICAgICAgICAgICAgICBjb250ZXh0LmxpbmVU
byh4ICsgdG90YWxXaWR0aCAtIHNjYWxlR3JvdXBNYXJnaW4sIGJhc2VMaW5lWSk7Ci0gICAgICAg
ICAgICAgICAgY29udGV4dC5tb3ZlVG8obWlkZGxlUG9pbnRYLCBncm91cEJhc2VsaW5lWSk7Ci0g
ICAgICAgICAgICAgICAgaWYgKCFpc1RvcCkKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC5s
aW5lVG8obWlkZGxlUG9pbnRYLCBncm91cEJhc2VsaW5lWSArIHNjYWxlVGFnTGluZUhlaWdodCAt
IHNjYWxlVGFnTGluZVBhZGRpbmcgLSBzY2FsZUdyb3VwVGFnTGluZVBhZGRpbmcpOwotICAgICAg
ICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC5saW5lVG8obWlkZGxl
UG9pbnRYLCBncm91cEJhc2VsaW5lWSAtIHNjYWxlVGFnTGluZUhlaWdodCArIHNjYWxlVGFnTGlu
ZVBhZGRpbmcgKyBzY2FsZUdyb3VwVGFnTGluZVBhZGRpbmcpOwotICAgICAgICAgICAgfSk7Ci0g
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBjb2xvckJhdGNoUmVuZGVyLmxhenlDcmVhdGVD
b2xvclNlcXModXNlZEdyb3VwQ29sb3IsIChjb250ZXh0KSA9PiB7Ci0gICAgICAgICAgICAgICAg
Y29udGV4dC5iZWdpblBhdGgoKTsKLSAgICAgICAgICAgIH0sIChjb250ZXh0LCBjb2xvcikgPT4g
ewotICAgICAgICAgICAgICAgIGNvbnRleHQubGluZVdpZHRoID0gMTsKLSAgICAgICAgICAgICAg
ICBjb250ZXh0LnN0cm9rZVN0eWxlID0gY29sb3I7Ci0gICAgICAgICAgICAgICAgY29udGV4dC5z
dHJva2UoKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgY29sb3JCYXRjaFJlbmRlci5h
ZGRTZXEodXNlZEdyb3VwQ29sb3IsIChjb250ZXh0KSA9PiB7Ci0gICAgICAgICAgICAgICAgY29u
dGV4dC5tb3ZlVG8obWlkZGxlUG9pbnRYLCBiYXNlTGluZVkpOwotICAgICAgICAgICAgICAgIGlm
ICghaXNUb3ApCi0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQubGluZVRvKG1pZGRsZVBvaW50
WCwgYmFzZUxpbmVZICsgc2NhbGVUYWdMaW5lSGVpZ2h0IC0gc2NhbGVUYWdMaW5lUGFkZGluZyk7
Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmxpbmVU
byhtaWRkbGVQb2ludFgsIGJhc2VMaW5lWSAtIHNjYWxlVGFnTGluZUhlaWdodCArIHNjYWxlVGFn
TGluZVBhZGRpbmcpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0KLSAgICAgICAgLy8gRHJh
dyBUYWcKLSAgICAgICAgY29udGV4dC5mb250ID0gYCR7Zm9udFNpemV9ICR7Zm9udEZhbWlseX1g
OwotICAgICAgICBjb250ZXh0LmZpbGxTdHlsZSA9IGZvbnRDb2xvcjsKLSAgICAgICAgY29udGV4
dC5zYXZlKCk7Ci0gICAgICAgIGlmICghaXNUb3ApIHsKLSAgICAgICAgICAgIGNvbnRleHQudHJh
bnNsYXRlKG1pZGRsZVBvaW50WCwgYmFzZUxpbmVZICsgc2NhbGVUYWdMaW5lSGVpZ2h0KTsKLSAg
ICAgICAgICAgIGNvbnRleHQucm90YXRlKGZvbnRSb3RhdGUpOwotICAgICAgICAgICAgY29udGV4
dC50cmFuc2xhdGUoMCAtIG1pZGRsZVBvaW50WCwgMCAtIGJhc2VMaW5lWSAtIHNjYWxlVGFnTGlu
ZUhlaWdodCk7Ci0gICAgICAgICAgICBjb250ZXh0LmZpbGxUZXh0KGdldExhYmVsKHNjYWxlTGFi
ZWwpLCBtaWRkbGVQb2ludFgsIGJhc2VMaW5lWSArIHNjYWxlVGFnTGluZUhlaWdodCk7Ci0gICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZShtaWRkbGVQb2ludFgs
IGJhc2VMaW5lWSAtIHNjYWxlVGFnTGluZUhlaWdodCk7Ci0gICAgICAgICAgICBjb250ZXh0LnJv
dGF0ZShmb250VG9wUm90YXRlKTsKLSAgICAgICAgICAgIGNvbnRleHQudHJhbnNsYXRlKDAgLSBt
aWRkbGVQb2ludFgsIDAgLSBiYXNlTGluZVkgKyBzY2FsZVRhZ0xpbmVIZWlnaHQpOwotICAgICAg
ICAgICAgY29udGV4dC5maWxsVGV4dChnZXRMYWJlbChzY2FsZUxhYmVsKSwgbWlkZGxlUG9pbnRY
LCBiYXNlTGluZVkgLSBzY2FsZVRhZ0xpbmVIZWlnaHQpOwotICAgICAgICB9Ci0gICAgICAgIGNv
bnRleHQucmVzdG9yZSgpOwotICAgIH07Ci0gICAgY29uc3QgcmVuZGVyID0gdHlwZW9mIG9wdGlv
bi5yZW5kZXJGYWN0b3J5ID09PSAiZnVuY3Rpb24iID8gb3B0aW9uLnJlbmRlckZhY3RvcnkoZHJh
d1NjYWxlKSA6IChzY2FsZUxhYmVsLCBzY2FsZUdyb3VwLCBjb250ZXh0LCB4LCB5KSA9PiBkcmF3
U2NhbGUoc2NhbGVMYWJlbCwgc2NhbGVHcm91cCwgY29udGV4dCwgeCwgeSk7Ci0KLSAgICBjb25z
dCBwYWRkaW5nID0gMTAwICogc2NhbGVXaWR0aCAvIGdldERldmljZVBpeGVsUmF0aW8oKTsKLSAg
ICBjb25zdCB4U2Nyb2xsU3RyZWFtUmVuZGVyID0geFNjcm9sbFN0cmVhbVJlbmRlckZhY3Rvcnko
Y2FudmFzSGVpZ2h0KTsKLSAgICBsZXQgb25TY3JlZW5TY2FsZXMgPSBbXTsKLQotICAgIGNvbnN0
IGdldE1vdXNlRXZlbnRUaXJnZ2VyU2NhbGVzID0gKGUsIHNjcm9sbExlZnQsIGVsZW1lbnQpID0+
IHsKLSAgICAgICAgY29uc3Qge3gsIHl9ID0gZ2V0TW91c2VQb3NJbkNhbnZhcyhlLCBlbGVtZW50
KTsKLSAgICAgICAgcmV0dXJuIG9uU2NyZWVuU2NhbGVzLmZpbHRlcihzY2FsZSA9PiB7Ci0gICAg
ICAgICAgICBjb25zdCBsYWJlbExlbmd0aCA9IGdldExhYmVsKHNjYWxlLmxhYmVsKS5sZW5ndGg7
Ci0gICAgICAgICAgICBjb25zdCB3aWR0aCA9IGxhYmVsTGVuZ3RoICogZm9udFNpemVOdW1iZXIg
LyAyOwotICAgICAgICAgICAgY29uc3QgaGVpZ2h0ID0gbGFiZWxMZW5ndGggKiBmb250U2l6ZU51
bWJlciAvIDIgKiBzcXJ0MzsKLSAgICAgICAgICAgIGNvbnN0IHBvaW50MSA9IHsKLSAgICAgICAg
ICAgICAgICB4OiBzY2FsZS5fdGFnVG9wLnggLSBzY3JvbGxMZWZ0IC0gKGlzVG9wID8gZm9udFNp
emVOdW1iZXIgLyAyICogc3FydDMgOiAwKSwKLSAgICAgICAgICAgICAgICB5OiBzY2FsZS5fdGFn
VG9wLnkgKyAoZm9udFNpemVOdW1iZXIgLyAyICsgc2NhbGVUYWdMaW5lSGVpZ2h0KSAqIChpc1Rv
cCA/IC0xIDogMSksCi0gICAgICAgICAgICB9OwotICAgICAgICAgICAgY29uc3QgcG9pbnQyID0g
ewotICAgICAgICAgICAgICAgIHg6IHBvaW50MS54ICsgZm9udFNpemVOdW1iZXIgLyAyICogc3Fy
dDMsCi0gICAgICAgICAgICAgICAgeTogc2NhbGUuX3RhZ1RvcC55ICsgc2NhbGVUYWdMaW5lSGVp
Z2h0ICAqIChpc1RvcCA/IC0xIDogMSkKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICBjb25z
dCBwb2ludDMgPSB7Ci0gICAgICAgICAgICAgICAgeDogcG9pbnQyLnggKyB3aWR0aCwKLSAgICAg
ICAgICAgICAgICB5OiBwb2ludDIueSArIGhlaWdodCAqIChpc1RvcCA/IC0xIDogMSksCi0gICAg
ICAgICAgICB9OwotICAgICAgICAgICAgY29uc3QgcG9pbnQ0ID0gewotICAgICAgICAgICAgICAg
IHg6IHBvaW50MS54ICsgd2lkdGgsCi0gICAgICAgICAgICAgICAgeTogcG9pbnQxLnkgKyBoZWln
aHQgKiAoaXNUb3AgPyAtMSA6IDEpLAotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHJldHVy
biBwb2ludFBvbHlnb25Db2xsaXNpb25EZXRlY3Qoe3gsIHl9LCBbcG9pbnQxLCBwb2ludDIsIHBv
aW50MywgcG9pbnQ0XSk7Ci0gICAgICAgIH0pOwotICAgIH07Ci0gICAgY29uc3QgcmVkcmF3ID0g
KHN0YXJ0WCwgcmVuZGVyV2lkdGgsIGVsZW1lbnQsIHN0YXRlRGlmZiwgc3RhdGUpID0+IHsKLSAg
ICAgICAgY29uc3Qgc2Nyb2xsTGVmdCA9IHR5cGVvZiBzdGF0ZURpZmYuc2Nyb2xsTGVmdCA9PT0g
J251bWJlcicgPyBzdGF0ZURpZmYuc2Nyb2xsTGVmdCA6IHN0YXRlLnNjcm9sbExlZnQ7Ci0gICAg
ICAgIGNvbnN0IHNjYWxlcyA9IHN0YXRlRGlmZi5zY2FsZXMgPyBzdGF0ZURpZmYuc2NhbGVzIDog
c3RhdGUuc2NhbGVzOwotICAgICAgICBjb25zdCBzY2FsZXNNYXBMaW5rTGlzdCA9IHN0YXRlRGlm
Zi5zY2FsZXNNYXBMaW5rTGlzdCA/IHN0YXRlRGlmZi5zY2FsZXNNYXBMaW5rTGlzdCA6IHN0YXRl
LnNjYWxlc01hcExpbmtMaXN0OwotICAgICAgICBjb25zdCB3aWR0aCA9IHR5cGVvZiBzdGF0ZURp
ZmYud2lkdGggPT09ICdudW1iZXInID8gc3RhdGVEaWZmLndpZHRoIDogc3RhdGUud2lkdGg7Ci0g
ICAgICAgIGNvbnN0IHVzZWRMaW5lQ29sb3IgPSBjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFs
dWUoJy0tYm9yZGVyQ29sb3JJbmxpbmVFbGVtZW50Jyk7Ci0gICAgICAgIGNvbnN0IGJhc2VMaW5l
WSA9IGlzVG9wID8gY2FudmFzSGVpZ2h0IC0gc2NhbGVCcm9hZExpbmVIZWlnaHQgOiBzY2FsZUJy
b2FkTGluZUhlaWdodDsKLSAgICAgICAgY29uc3QgY29udGV4dCA9IGVsZW1lbnQuZ2V0Q29udGV4
dCgiMmQiLCB7IGFscGhhOiBmYWxzZSB9KTsKLSAgICAgICAgLy8gQ2xlYXIgcGVydmlvdXMgYmF0
Y2ggcmVuZGVyCi0gICAgICAgIGNvbG9yQmF0Y2hSZW5kZXIuY2xlYXIoKTsKLSAgICAgICAgY29s
b3JCYXRjaFJlbmRlci5sYXp5Q3JlYXRlQ29sb3JTZXFzKHVzZWRMaW5lQ29sb3IsIChjb250ZXh0
KSA9PiB7Ci0gICAgICAgICAgICBjb250ZXh0LmJlZ2luUGF0aCgpOwotICAgICAgICB9LCAoY29u
dGV4dCwgY29sb3IpID0+IHsKLSAgICAgICAgICAgIGNvbnRleHQubGluZVdpZHRoID0gMTsKLSAg
ICAgICAgICAgIGNvbnRleHQuc3Ryb2tlU3R5bGUgPSBjb2xvcjsKLSAgICAgICAgICAgIGNvbnRl
eHQuc3Ryb2tlKCk7Ci0gICAgICAgIH0pOwotICAgICAgICBjb2xvckJhdGNoUmVuZGVyLmFkZFNl
cSh1c2VkTGluZUNvbG9yLCAoY29udGV4dCkgPT4gewotICAgICAgICAgICAgY29udGV4dC5tb3Zl
VG8oMCwgYmFzZUxpbmVZKTsKLSAgICAgICAgICAgIGNvbnRleHQubGluZVRvKGVsZW1lbnQubG9n
aWNXaWR0aCwgYmFzZUxpbmVZKTsKLSAgICAgICAgfSk7Ci0gICAgICAgIGlmICghc2NhbGVzIHx8
ICFzY2FsZXMubGVuZ3RoKSB7Ci0gICAgICAgICAgICBjb2xvckJhdGNoUmVuZGVyLmJhdGNoUmVu
ZGVyKGNvbnRleHQpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGxl
dCBjdXJyZW50U3RhcnRTY2FsZUluZGV4ID0gTWF0aC5mbG9vcihzY3JvbGxMZWZ0IC8gc2NhbGVX
aWR0aCk7Ci0gICAgICAgIGlmIChjdXJyZW50U3RhcnRTY2FsZUluZGV4IDwgMCkKLSAgICAgICAg
ICAgIGN1cnJlbnRTdGFydFNjYWxlSW5kZXggPSAwOwotICAgICAgICBjb25zdCBjdXJyZW50U3Rh
cnRTY2FsZUtleSA9IGdldFNjYWxlS2V5KHNjYWxlc1tjdXJyZW50U3RhcnRTY2FsZUluZGV4XSk7
Ci0gICAgICAgIGxldCBjdXJyZW50RW5kU2NhbGVJbmRleCA9IE1hdGguY2VpbCgoc2Nyb2xsTGVm
dCArIHJlbmRlcldpZHRoKSAvIHNjYWxlV2lkdGgpOwotICAgICAgICBjdXJyZW50RW5kU2NhbGVJ
bmRleCA9IGN1cnJlbnRFbmRTY2FsZUluZGV4ID49IHNjYWxlcy5sZW5ndGggPyBzY2FsZXMubGVu
Z3RoIC0gMSA6IGN1cnJlbnRFbmRTY2FsZUluZGV4OwotICAgICAgICBjb25zdCBjdXJyZW50RW5k
U2NhbGVLZXkgPSBnZXRTY2FsZUtleShzY2FsZXNbY3VycmVudEVuZFNjYWxlSW5kZXhdKTsKLSAg
ICAgICAgY29uc3QgY3VycmVudFN0YXJ0Tm9kZSA9IHNjYWxlc01hcExpbmtMaXN0Lm1hcC5nZXQo
Y3VycmVudFN0YXJ0U2NhbGVLZXkpOwotICAgICAgICBjb25zdCBjdXJyZW50RW5kTm9kZSA9IHNj
YWxlc01hcExpbmtMaXN0Lm1hcC5nZXQoY3VycmVudEVuZFNjYWxlS2V5KTsKLSAgICAgICAgaWYg
KCFjdXJyZW50RW5kTm9kZSkgewotICAgICAgICAgICAgY29uc29sZS5lcnJvcihjdXJyZW50RW5k
U2NhbGVLZXkpOwotICAgICAgICB9Ci0gICAgICAgIGxldCBub3cgPSBjdXJyZW50U3RhcnROb2Rl
OwotICAgICAgICAKLQotICAgICAgICBvblNjcmVlblNjYWxlcyA9IFtdOwotICAgICAgICB3aGls
ZSAobm93ICE9IGN1cnJlbnRFbmROb2RlLm5leHQpIHsKLSAgICAgICAgICAgIGNvbnN0IGxhYmVs
ID0gbm93LmxhYmVsOwotICAgICAgICAgICAgY29uc3QgZ3JvdXAgPSBub3cuZ3JvdXA7Ci0gICAg
ICAgICAgICByZW5kZXIobGFiZWwsIGdyb3VwLCBjb250ZXh0LCBub3cueCAtIHNjcm9sbExlZnQs
IDApOwotICAgICAgICAgICAgbm93Ll90YWdUb3AgPSB7eDogbm93LnggKyBncm91cCAqIHNjYWxl
V2lkdGggLyAyLCB5OiBpc1RvcCA/IGNhbnZhc0hlaWdodCAtIHNjYWxlQnJvYWRMaW5lSGVpZ2h0
IDogc2NhbGVCcm9hZExpbmVIZWlnaHR9OwotICAgICAgICAgICAgb25TY3JlZW5TY2FsZXMucHVz
aChub3cpOwotICAgICAgICAgICAgbm93ID0gbm93Lm5leHQ7Ci0gICAgICAgIH0KLSAgICAgICAg
Y29sb3JCYXRjaFJlbmRlci5iYXRjaFJlbmRlcihjb250ZXh0KTsKLSAgICB9OwotCi0gICAgLy8g
SW5pdGlhbGl6ZQotICAgIC8vIERvIGEgY29weSwgc29ydGluZyB3aWxsIG5vdCBoYXZlIHNpZGUg
ZWZmZWN0Ci0gICAgY29uc3QgaW5pdFNjYWxlcyA9IHNjYWxlcy5tYXAoKGl0ZW0pID0+IGl0ZW0p
OwotICAgIGlmIChzb3J0RGF0YSkKLSAgICAgICAgaW5pdFNjYWxlcy5zb3J0KGNvbXApOwotCi0g
ICAgY29uc3QgZ2V0U2NhbGVzTWFwTGlua0xpc3QgPSAoc2NhbGVzKSA9PiB7Ci0gICAgICAgIGNv
bnN0IHJlcyA9IHsKLSAgICAgICAgICAgIG1hcDogbmV3IE1hcCgpLAotICAgICAgICAgICAgbGlu
a0xpc3RIZWFkOiB7bmV4dDogbnVsbCwgZ3JvdXA6IG51bGx9Ci0gICAgICAgIH07Ci0gICAgICAg
IGxldCBub3cgPSByZXMubGlua0xpc3RIZWFkOwotICAgICAgICBsZXQgY3VycmVudFggPSAwOwot
ICAgICAgICBzY2FsZXMuZm9yRWFjaCgoc2NhbGUpID0+IHsKLSAgICAgICAgICAgIGxldCBrZXkg
PSBnZXRTY2FsZUtleShzY2FsZSk7Ci0gICAgICAgICAgICBpZiAocmVzLm1hcC5oYXMoa2V5KSkK
LSAgICAgICAgICAgICAgICByZXMubWFwLmdldChrZXkpLmdyb3VwICs9IDE7Ci0gICAgICAgICAg
ICBlbHNlIHsKLSAgICAgICAgICAgICAgICBub3cubmV4dCA9IHtuZXh0OiBudWxsLCBncm91cDog
MSwgbGFiZWw6IHNjYWxlLCB4OiBjdXJyZW50WH07Ci0gICAgICAgICAgICAgICAgbm93ID0gbm93
Lm5leHQ7Ci0gICAgICAgICAgICAgICAgcmVzLm1hcC5zZXQoa2V5LCBub3cpOwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgY3VycmVudFggKz0gc2NhbGVXaWR0aDsKLSAgICAgICAgfSk7Ci0g
ICAgICAgIHJldHVybiByZXM7Ci0gICAgfTsKLSAgICBjb25zdCBpbml0U2NhbGVHcm91cE1hcExp
bmtMaXN0ID0gZ2V0U2NhbGVzTWFwTGlua0xpc3QoaW5pdFNjYWxlcyk7Ci0KLQotICAgIHJldHVy
biB7Ci0gICAgICAgIHNlcmllczogTGlzdFByb3ZpZGVyUmVjZWl2ZXIoKHVwZGF0ZUNvbnRhaW5l
cldpZHRoLCBvbkNvbnRhaW5lclNjcm9sbCwgb25SZXNpemUpID0+IHsKLSAgICAgICAgICAgIGNv
bnN0IG1vdXNlTW92ZSA9IChlKSA9PiB7Ci0gICAgICAgICAgICAgICAgbGV0IHNjYWxlcyA9IGdl
dE1vdXNlRXZlbnRUaXJnZ2VyU2NhbGVzKGUsIGNhbnZhc1JlZi5zdGF0ZS5zY3JvbGxMZWZ0LCBj
YW52YXNSZWYuZWxlbWVudCk7Ci0gICAgICAgICAgICAgICAgaWYgKHNjYWxlcy5sZW5ndGgpIHsK
LSAgICAgICAgICAgICAgICAgICAgaWYgKG9uU2NhbGVFbnRlcikgewotICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgbGFiZWxMZW5ndGggPSBnZXRMYWJlbChzY2FsZXNbMF0ubGFiZWwpLmxl
bmd0aDsKLSAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlc1swXS50aXBQb2ludHMgPSBbewot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6IHNjYWxlc1swXS5fdGFnVG9wLnggLSBjYW52
YXNSZWYuc3RhdGUuc2Nyb2xsTGVmdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB5OiBz
Y2FsZXNbMF0uX3RhZ1RvcC55ICsgc2NhbGVUYWdMaW5lSGVpZ2h0ICogKGlzVG9wID8gLTEgOiAw
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB4OiBzY2FsZXNbMF0uX3RhZ1RvcC54IC0gY2FudmFzUmVmLnN0YXRlLnNjcm9sbExlZnQg
KyBsYWJlbExlbmd0aCAqIGZvbnRTaXplTnVtYmVyIC8gMyAtIHNjYWxlVGFnTGluZUhlaWdodCAq
IChpc1RvcCA/IDEgOiAuMjUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHk6IHNjYWxl
c1swXS5fdGFnVG9wLnkgKyAobGFiZWxMZW5ndGggKiBmb250U2l6ZU51bWJlciAvIDIgKiBzcXJ0
MykgKiAoaXNUb3AgPyAtMSA6IDEpICsgc2NhbGVUYWdMaW5lSGVpZ2h0ICogKGlzVG9wID8gMSA6
IDApLAotICAgICAgICAgICAgICAgICAgICAgICAgfV07Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBvblNjYWxlRW50ZXIoc2NhbGVzWzBdLCBlLCBjYW52YXNSZWYuZWxlbWVudC5nZXRCb3VuZGlu
Z0NsaWVudFJlY3QoKSk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAg
ICAgY2FudmFzUmVmLmVsZW1lbnQuc3R5bGUuY3Vyc29yID0gInBvaW50ZXIiOwotICAgICAgICAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChvblNjYWxlRW50ZXIpCi0g
ICAgICAgICAgICAgICAgICAgICAgICBvblNjYWxlTGVhdmUoZSwgY2FudmFzUmVmLmVsZW1lbnQu
Z2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpOwotICAgICAgICAgICAgICAgICAgICBjYW52YXNSZWYu
ZWxlbWVudC5zdHlsZS5jdXJzb3IgPSAiZGVmYXVsdCI7Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgY29uc3Qgb25TY3JvbGxBY3Rpb24gPSAoZSkgPT4gewot
ICAgICAgICAgICAgICAgIGNhbnZhc1JlZi5zZXRTdGF0ZSh7c2Nyb2xsTGVmdDogZS50YXJnZXQu
c2Nyb2xsTGVmdCAvIGdldERldmljZVBpeGVsUmF0aW8oKX0pOwotICAgICAgICAgICAgICAgIG1v
dXNlTW92ZShlKTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICBjb25zdCBvblJlc2l6ZUFj
dGlvbiA9ICh3aWR0aCkgPT4gewotICAgICAgICAgICAgICAgIGNhbnZhc1JlZi5zZXRTdGF0ZSh7
d2lkdGg6IHdpZHRofSk7Ci0gICAgICAgICAgICB9OwotCi0gICAgICAgICAgICBjb25zdCBjYW52
YXNSZWYgPSBSRUYuY3JlYXRlUmVmKHsKLSAgICAgICAgICAgICAgICBzdGF0ZTogewotICAgICAg
ICAgICAgICAgICAgICBzY3JvbGxMZWZ0OiAwLAotICAgICAgICAgICAgICAgICAgICB3aWR0aDog
MCwKLSAgICAgICAgICAgICAgICAgICAgc2NhbGVzOiBpbml0U2NhbGVzLAotICAgICAgICAgICAg
ICAgICAgICBzY2FsZXNNYXBMaW5rTGlzdDogaW5pdFNjYWxlR3JvdXBNYXBMaW5rTGlzdAotICAg
ICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgb25FbGVtZW50TW91bnQ6IChlbGVtZW50
KSA9PiB7Ci0gICAgICAgICAgICAgICAgICAgIHNldHVwQ2FudmFzSGVpZ2h0V2l0aERwcihlbGVt
ZW50LCBjYW52YXNIZWlnaHQpOwotICAgICAgICAgICAgICAgICAgICBzZXR1cENhbnZhc0NvbnRl
eHRTY2FsZShlbGVtZW50KTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKG9uU2NhbGVDbGljaykg
ewotICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGlj
aycsIChlKSA9PiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHNjYWxlcyA9IGdl
dE1vdXNlRXZlbnRUaXJnZ2VyU2NhbGVzKGUsIGNhbnZhc1JlZi5zdGF0ZS5zY3JvbGxMZWZ0LCBl
bGVtZW50KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2NhbGVzLmxlbmd0aCkK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25TY2FsZUNsaWNrKHNjYWxlc1swXSwg
ZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICAgICAgfQot
Ci0gICAgICAgICAgICAgICAgICAgIGlmIChvblNjYWxlQ2xpY2sgfHwgb25TY2FsZUVudGVyIHx8
IG9uU2NhbGVMZWF2ZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuYWRkRXZlbnRM
aXN0ZW5lcignbW91c2Vtb3ZlJywgbW91c2VNb3ZlKTsKLSAgICAgICAgICAgICAgICAgICAgaWYg
KG9uU2NhbGVMZWF2ZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuYWRkRXZlbnRM
aXN0ZW5lcignbW91c2VsZWF2ZScsIChlKSA9PiBvblNjYWxlTGVhdmUoZSwgZWxlbWVudC5nZXRC
b3VuZGluZ0NsaWVudFJlY3QoKSkpOwotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAg
ICAgb25FbGVtZW50VW5tb3VudDogKGVsZW1lbnQpID0+IHsKLSAgICAgICAgICAgICAgICAgICAg
b25Db250YWluZXJTY3JvbGwuc3RvcEFjdGlvbihvblNjcm9sbEFjdGlvbik7Ci0gICAgICAgICAg
ICAgICAgICAgIG9uUmVzaXplLnN0b3BBY3Rpb24ob25SZXNpemVBY3Rpb24pOwotICAgICAgICAg
ICAgICAgIH0sCi0gICAgICAgICAgICAgICAgb25TdGF0ZVVwZGF0ZTogKGVsZW1lbnQsIHN0YXRl
RGlmZiwgc3RhdGUpID0+IHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXRlRGlmZi5zY2Fs
ZXMgfHwgdHlwZW9mIHN0YXRlRGlmZi5zY3JvbGxMZWZ0ID09PSAnbnVtYmVyJyB8fCB0eXBlb2Yg
c3RhdGVEaWZmLndpZHRoID09PSAnbnVtYmVyJykgewotICAgICAgICAgICAgICAgICAgICAgICAg
eFNjcm9sbFN0cmVhbVJlbmRlcihyZWRyYXcsIGVsZW1lbnQsIHN0YXRlRGlmZiwgc3RhdGUpOwot
ICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSk7
Ci0KLSAgICAgICAgICAgIHVwZGF0ZUNvbnRhaW5lcldpZHRoKHNjYWxlcy5sZW5ndGggKiBzY2Fs
ZVdpZHRoICogZ2V0RGV2aWNlUGl4ZWxSYXRpbygpKTsKLSAgICAgICAgICAgIGNvbnN0IHVwZGF0
ZURhdGEgPSAoc2NhbGVzKSA9PiB7Ci0gICAgICAgICAgICAgICAgLy8gSW4gY2FzZSBvZiBtb2Rp
ZmljYXRpb24gd2hpbGUgcmVuZGVyaW5nCi0gICAgICAgICAgICAgICAgY29uc3Qgc2NhbGVzQ29w
eSA9IHNjYWxlcy5tYXAoeCA9PiB4KTsKLSAgICAgICAgICAgICAgICB1cGRhdGVDb250YWluZXJX
aWR0aChzY2FsZXNDb3B5Lmxlbmd0aCAqIHNjYWxlV2lkdGggKiBnZXREZXZpY2VQaXhlbFJhdGlv
KCkpOwotICAgICAgICAgICAgICAgIGNhbnZhc1JlZi5zZXRTdGF0ZSh7Ci0gICAgICAgICAgICAg
ICAgICAgIHNjYWxlczogc2NhbGVzQ29weSwKLSAgICAgICAgICAgICAgICAgICAgc2NhbGVzTWFw
TGlua0xpc3Q6IGdldFNjYWxlc01hcExpbmtMaXN0KHNjYWxlc0NvcHkpCi0gICAgICAgICAgICAg
ICAgfSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAodHlwZW9mIG9wdGlvbi5leHBv
cnRlciA9PT0gImZ1bmN0aW9uIikKLSAgICAgICAgICAgICAgICBvcHRpb24uZXhwb3J0ZXIodXBk
YXRlRGF0YSk7Ci0gICAgICAgICAgICBvbkNvbnRhaW5lclNjcm9sbC5hY3Rpb24ob25TY3JvbGxB
Y3Rpb24pOwotICAgICAgICAgICAgb25SZXNpemUuYWN0aW9uKG9uUmVzaXplQWN0aW9uKTsKLSAg
ICAgICAgICAgIHJldHVybiBgPGRpdiBjbGFzcz0ieC1heGlzIj4KLSAgICAgICAgICAgICAgICA8
Y2FudmFzIHJlZj0iJHtjYW52YXNSZWZ9Ij4KLSAgICAgICAgICAgIDwvZGl2PmA7Ci0gICAgICAg
IH0pLAotICAgICAgICBpc0F4aXM6IHRydWUsIC8vIE1hcmsgc2VsZiBhcyBhbiBheGlzLAotICAg
ICAgICBoZWlnaHQ6IGNhbnZhc0hlaWdodCwgLy8gRXhwb3NlIEhlaWdodCB0byBwYXJlbnQKLSAg
ICB9OwotfQotCi1UaW1lbGluZS5DYW52YXNDb250YWluZXIgPSAoZXhwb3J0ZXIsIC4uLmNoaWxk
cmVuKSA9PiB7Ci0gICAgbGV0IGhlYWRlckF4aXNQbGFjZUhvbGRlckhlaWdodCA9IDA7Ci0gICAg
bGV0IHRvcEF4aXMgPSB0cnVlOwotICAgIGNvbnN0IHVwYWNrQ2hpbGRyZW4gPSAoY2hpbGRyZW4p
ID0+IHsKLSAgICAgICAgY29uc3QgaGVhZGVycyA9IFtdOwotICAgICAgICBjb25zdCBzZXJpZXNl
cyA9IFtdOwotICAgICAgICBjaGlsZHJlbi5mb3JFYWNoKGNoaWxkID0+IHsKLSAgICAgICAgICAg
IGlmIChmYWxzZSA9PT0gInNlcmllcyIgaW4gY2hpbGQpIHsKLSAgICAgICAgICAgICAgICBjb25z
b2xlLmVycm9yKCJQbGVhc2UgdXNlIFRpbWVsaW5lLlNlcmllc1dpdGhIZWFkZXJDb21wb25lbnQg
b3IgVGltZWxpbmUuRXhwYW5kYWJsZVNlcmllc1dpdGhIZWFkZXJFeHBhbmRlckNvbXBvbmVudCBv
ciBUaW1lbGluZS5DYW52YXNYQXhpc0NvbXBvbmVudCBhcyBjaGlsZHJlbiIpOwotICAgICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChjaGlsZC5oZWFk
ZXIpCi0gICAgICAgICAgICAgICAgaGVhZGVycy5wdXNoKGNoaWxkLmhlYWRlcik7Ci0gICAgICAg
ICAgICBzZXJpZXNlcy5wdXNoKGNoaWxkLnNlcmllcyk7Ci0gICAgICAgICAgICBpZiAoY2hpbGQu
aXNBeGlzICYmIHRvcEF4aXMpCi0gICAgICAgICAgICAgICAgaGVhZGVyQXhpc1BsYWNlSG9sZGVy
SGVpZ2h0ICs9IGNoaWxkLmhlaWdodDsKLSAgICAgICAgICAgIGVsc2UgaWYgKHRvcEF4aXMpCi0g
ICAgICAgICAgICAgICAgdG9wQXhpcyA9IGZhbHNlOwotICAgICAgICB9KTsKLSAgICAgICAgcmV0
dXJuIHtoZWFkZXJzLCBzZXJpZXNlc307Ci0gICAgfTsKLSAgICBjb25zdCB7aGVhZGVycywgc2Vy
aWVzZXN9ID0gdXBhY2tDaGlsZHJlbihjaGlsZHJlbik7Ci0gICAgbGV0IGNvbXBvc2VyID0gRlAu
Y29tcG9zZXIoRlAuY3VycnlpbmcoKHVwZGF0ZUhlYWRlcnMsIHVwZGF0ZVNlcmllc2VzLCBub3Rp
ZnlSZXJlbmRlcikgPT4gewotICAgICAgICBpZiAoZXhwb3J0ZXIpCi0gICAgICAgICAgICBleHBv
cnRlcigobmV3Q2hpbGRyZW4pID0+IHsKLSAgICAgICAgICAgICAgICBjb25zdCB7aGVhZGVycywg
c2VyaWVzZXN9ID0gdXBhY2tDaGlsZHJlbihuZXdDaGlsZHJlbik7Ci0gICAgICAgICAgICAgICAg
dXBkYXRlSGVhZGVycyhoZWFkZXJzKTsKLSAgICAgICAgICAgICAgICB1cGRhdGVTZXJpZXNlcyhz
ZXJpZXNlcyk7Ci0gICAgICAgICAgICB9LCBub3RpZnlSZXJlbmRlcik7Ci0gICAgfSkpOwotICAg
IHJldHVybiAoCi0gICAgICAgIGA8ZGl2IGNsYXNzPSJ0aW1lbGluZSI+Ci0gICAgICAgICAgICA8
ZGl2IGNsYXNzPSJoZWFkZXIiIHN0eWxlPSJwYWRkaW5nLXRvcDoke2hlYWRlckF4aXNQbGFjZUhv
bGRlckhlaWdodH1weCI+Ci0gICAgICAgICAgICAgICAgJHtMaXN0Q29tcG9uZW50KGNvbXBvc2Vy
LCAuLi5oZWFkZXJzKX0KLSAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgJHtYU2Nyb2xs
YWJsZUNhbnZhc1Byb3ZpZGVyKGNvbXBvc2VyLCAuLi5zZXJpZXNlcyl9Ci0gICAgICAgIDwvZGl2
PmAKLSAgICApOwotfQotCi1leHBvcnQgewotICAgIFRpbWVsaW5lCi19OwpJbmRleDogVG9vbHMv
cmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9zdGF0aWMvbGlicmFyeS9qcy90ZXN0L1JlZlRl
c3QuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9z
dGF0aWMvbGlicmFyeS9qcy90ZXN0L1JlZlRlc3QuanMJKHJldmlzaW9uIDI2NTUzMSkKKysrIFRv
b2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvc3RhdGljL2xpYnJhcnkvanMvdGVzdC9S
ZWZUZXN0LmpzCShub25leGlzdGVudCkKQEAgLTEsMzAyICswLDAgQEAKLWltcG9ydCB7VGVzdFN1
aXRlfSBmcm9tICcuLi9UZXN0LmpzJzsKLWltcG9ydCB7UkVGLCBET00sIGRpZmYsIEZQLCBFdmVu
dFN0cmVhbX0gZnJvbSAnLi4vUmVmLmpzJzsKLQotY2xhc3MgRGlmZlRlc3QgZXh0ZW5kcyBUZXN0
U3VpdGUgewotICAgIHRlc3RBcnJheURpZmYoKSB7Ci0gICAgICAgIGxldCByZW1vdmVkID0gW107
Ci0gICAgICAgIGxldCBuZXdBcnJheSA9IFtdOwotICAgICAgICBkaWZmKFsxLCAyLCAzXSwgWzQs
IDUsIDZdLCBpdGVtID0+IHJlbW92ZWQucHVzaChpdGVtKSwgaXRlbSA9PiBuZXdBcnJheS5wdXNo
KGl0ZW0pKTsKLSAgICAgICAgdGhpcy5leHBlY3QocmVtb3ZlZCkuZXF1YWxUb0FycmF5KFsxLCAy
LCAzXSk7Ci0gICAgICAgIHRoaXMuZXhwZWN0KG5ld0FycmF5KS5lcXVhbFRvQXJyYXkoWzQsIDUs
IDZdKTsKLQotICAgICAgICByZW1vdmVkID0gW107Ci0gICAgICAgIG5ld0FycmF5ID0gW107Ci0g
ICAgICAgIGRpZmYoWzEsIDIsIDNdLCBbMiwgMywgNF0sIGl0ZW0gPT4gcmVtb3ZlZC5wdXNoKGl0
ZW0pLCBpdGVtID0+IG5ld0FycmF5LnB1c2goaXRlbSkpOwotICAgICAgICB0aGlzLmV4cGVjdChy
ZW1vdmVkKS5lcXVhbFRvQXJyYXkoWzFdKTsKLSAgICAgICAgdGhpcy5leHBlY3QobmV3QXJyYXkp
LmVxdWFsVG9BcnJheShbMiwgMywgNF0pOwotCi0gICAgICAgIHJlbW92ZWQgPSBbXTsKLSAgICAg
ICAgbmV3QXJyYXkgPSBbXTsKLSAgICAgICAgZGlmZihbMl0sIFsyLCAzLCA0XSwgaXRlbSA9PiBy
ZW1vdmVkLnB1c2goaXRlbSksIGl0ZW0gPT4gbmV3QXJyYXkucHVzaChpdGVtKSk7Ci0gICAgICAg
IHRoaXMuZXhwZWN0KHJlbW92ZWQpLmVxdWFsVG9BcnJheShbXSk7Ci0gICAgICAgIHRoaXMuZXhw
ZWN0KG5ld0FycmF5KS5lcXVhbFRvQXJyYXkoWzIsIDMsIDRdKTsKLQotICAgICAgICByZW1vdmVk
ID0gW107Ci0gICAgICAgIG5ld0FycmF5ID0gW107Ci0gICAgICAgIGRpZmYoW10sIFsyLCAzLCA0
XSwgaXRlbSA9PiByZW1vdmVkLnB1c2goaXRlbSksIGl0ZW0gPT4gbmV3QXJyYXkucHVzaChpdGVt
KSk7Ci0gICAgICAgIHRoaXMuZXhwZWN0KHJlbW92ZWQpLmVxdWFsVG9BcnJheShbXSk7Ci0gICAg
ICAgIHRoaXMuZXhwZWN0KG5ld0FycmF5KS5lcXVhbFRvQXJyYXkoWzIsIDMsIDRdKTsKLSAgICAg
ICAgCi0gICAgICAgIHJlbW92ZWQgPSBbXTsKLSAgICAgICAgbmV3QXJyYXkgPSBbXTsKLSAgICAg
ICAgZGlmZihbNCwgMywgMl0sIFsyLCAzLCA0XSwgaXRlbSA9PiByZW1vdmVkLnB1c2goaXRlbSks
IGl0ZW0gPT4gbmV3QXJyYXkucHVzaChpdGVtKSk7Ci0gICAgICAgIHRoaXMuZXhwZWN0KHJlbW92
ZWQpLmVxdWFsVG9BcnJheShbXSk7Ci0gICAgICAgIHRoaXMuZXhwZWN0KG5ld0FycmF5KS5lcXVh
bFRvQXJyYXkoWzIsIDMsIDRdKTsKLSAgICAgICAgCi0gICAgICAgIHJlbW92ZWQgPSBbXTsKLSAg
ICAgICAgbmV3QXJyYXkgPSBbXTsKLSAgICAgICAgZGlmZihbNCwgMywgMiwgNSwgNl0sIFsyLCAz
LCA0XSwgaXRlbSA9PiByZW1vdmVkLnB1c2goaXRlbSksIGl0ZW0gPT4gbmV3QXJyYXkucHVzaChp
dGVtKSk7Ci0gICAgICAgIHRoaXMuZXhwZWN0KHJlbW92ZWQpLmVxdWFsVG9BcnJheShbNSwgNl0p
OwotICAgICAgICB0aGlzLmV4cGVjdChuZXdBcnJheSkuZXF1YWxUb0FycmF5KFsyLCAzLCA0XSk7
Ci0gICAgICAgIAotICAgICAgICByZW1vdmVkID0gW107Ci0gICAgICAgIG5ld0FycmF5ID0gW107
Ci0gICAgICAgIGRpZmYoW10sIFtdLCBpdGVtID0+IHJlbW92ZWQucHVzaChpdGVtKSwgaXRlbSA9
PiBuZXdBcnJheS5wdXNoKGl0ZW0pKTsKLSAgICAgICAgdGhpcy5leHBlY3QocmVtb3ZlZCkuZXF1
YWxUb0FycmF5KFtdKTsKLSAgICAgICAgdGhpcy5leHBlY3QobmV3QXJyYXkpLmVxdWFsVG9BcnJh
eShbXSk7Ci0gICAgfQotfQotCi1jbGFzcyBEb21UZXN0IGV4dGVuZHMgVGVzdFN1aXRlIHsKLSAg
ICBzZXR1cChyb290RWxlbWVudCkgewotICAgICAgICB0aGlzLnJvb3RFbGVtZW50ID0gcm9vdEVs
ZW1lbnQ7Ci0gICAgfQotCi0gICAgdGVzdEluamVjdCgpIHsKLSAgICAgICAgdGhpcy5yb290RWxl
bWVudC5pbm5lckhUTUwgPSAiIjsKLSAgICAgICAgY29uc3QgaW5qZWN0b3IgPSBgPGRpdiBpZD0i
JHtNYXRoLnJhbmRvbSgpfSI+PC9kaXY+YDsKLSAgICAgICAgRE9NLmluamVjdCh0aGlzLnJvb3RF
bGVtZW50LCBpbmplY3Rvcik7Ci0gICAgICAgIHRoaXMuZXhwZWN0KHRoaXMucm9vdEVsZW1lbnQu
aW5uZXJIVE1MKS5lcXVhbFRvVmFsdWUoaW5qZWN0b3IpOwotICAgICAgICB0aGlzLnJvb3RFbGVt
ZW50LmlubmVySFRNTCA9ICIiOwotICAgIH0KLQotICAgIHRlc3RCZWZvcmUoKSB7Ci0gICAgICAg
IGxldCBpbml0aWFsID0gJzxkaXYgaWQ9IjEiPjwvZGl2PjxkaXYgaWQ9IjIiPjwvZGl2PjxkaXYg
aWQ9IjMiPjwvZGl2Pic7IAotICAgICAgICB0aGlzLnJvb3RFbGVtZW50LmlubmVySFRNTCA9IGlu
aXRpYWw7Ci0gICAgICAgIGxldCBpbmplY3RvciA9IGA8ZGl2IGlkPSIke01hdGgucmFuZG9tKCl9
Ij48L2Rpdj5gOwotICAgICAgICBET00uYmVmb3JlKHRoaXMucm9vdEVsZW1lbnQuY2hpbGRyZW5b
MF0sIGluamVjdG9yKTsKLSAgICAgICAgdGhpcy5leHBlY3QodGhpcy5yb290RWxlbWVudC5pbm5l
ckhUTUwpLmVxdWFsVG9WYWx1ZShgJHtpbmplY3Rvcn0ke2luaXRpYWx9YCk7Ci0gICAgICAgIHRo
aXMucm9vdEVsZW1lbnQuaW5uZXJIVE1MID0gaW5pdGlhbDsKLSAgICAgICAgRE9NLmJlZm9yZSh0
aGlzLnJvb3RFbGVtZW50LmNoaWxkcmVuWzFdLCBpbmplY3Rvcik7Ci0gICAgICAgIHRoaXMuZXhw
ZWN0KHRoaXMucm9vdEVsZW1lbnQuaW5uZXJIVE1MKS5lcXVhbFRvVmFsdWUoYDxkaXYgaWQ9IjEi
PjwvZGl2PiR7aW5qZWN0b3J9PGRpdiBpZD0iMiI+PC9kaXY+PGRpdiBpZD0iMyI+PC9kaXY+YCk7
Ci0gICAgICAgIHRoaXMucm9vdEVsZW1lbnQuaW5uZXJIVE1MID0gaW5pdGlhbDsKLSAgICAgICAg
RE9NLmJlZm9yZSh0aGlzLnJvb3RFbGVtZW50LmNoaWxkcmVuWzJdLCBpbmplY3Rvcik7Ci0gICAg
ICAgIHRoaXMuZXhwZWN0KHRoaXMucm9vdEVsZW1lbnQuaW5uZXJIVE1MKS5lcXVhbFRvVmFsdWUo
YDxkaXYgaWQ9IjEiPjwvZGl2PjxkaXYgaWQ9IjIiPjwvZGl2PiR7aW5qZWN0b3J9PGRpdiBpZD0i
MyI+PC9kaXY+YCk7Ci0gICAgfQotCi0gICAgdGVzdEFmdGVyKCkgewotICAgICAgICBsZXQgaW5p
dGlhbCA9ICc8ZGl2IGlkPSIxIj48L2Rpdj48ZGl2IGlkPSIyIj48L2Rpdj48ZGl2IGlkPSIzIj48
L2Rpdj4nOyAKLSAgICAgICAgdGhpcy5yb290RWxlbWVudC5pbm5lckhUTUwgPSBpbml0aWFsOwot
ICAgICAgICBsZXQgaW5qZWN0b3IgPSBgPGRpdiBpZD0iJHtNYXRoLnJhbmRvbSgpfSI+PC9kaXY+
YDsKLSAgICAgICAgRE9NLmFmdGVyKHRoaXMucm9vdEVsZW1lbnQuY2hpbGRyZW5bMF0sIGluamVj
dG9yKTsKLSAgICAgICAgdGhpcy5leHBlY3QodGhpcy5yb290RWxlbWVudC5pbm5lckhUTUwpLmVx
dWFsVG9WYWx1ZShgPGRpdiBpZD0iMSI+PC9kaXY+JHtpbmplY3Rvcn08ZGl2IGlkPSIyIj48L2Rp
dj48ZGl2IGlkPSIzIj48L2Rpdj5gKTsKLSAgICAgICAgdGhpcy5yb290RWxlbWVudC5pbm5lckhU
TUwgPSBpbml0aWFsOwotICAgICAgICBET00uYWZ0ZXIodGhpcy5yb290RWxlbWVudC5jaGlsZHJl
blsxXSwgaW5qZWN0b3IpOwotICAgICAgICB0aGlzLmV4cGVjdCh0aGlzLnJvb3RFbGVtZW50Lmlu
bmVySFRNTCkuZXF1YWxUb1ZhbHVlKGA8ZGl2IGlkPSIxIj48L2Rpdj48ZGl2IGlkPSIyIj48L2Rp
dj4ke2luamVjdG9yfTxkaXYgaWQ9IjMiPjwvZGl2PmApOwotICAgICAgICB0aGlzLnJvb3RFbGVt
ZW50LmlubmVySFRNTCA9IGluaXRpYWw7Ci0gICAgICAgIERPTS5hZnRlcih0aGlzLnJvb3RFbGVt
ZW50LmNoaWxkcmVuWzJdLCBpbmplY3Rvcik7Ci0gICAgICAgIHRoaXMuZXhwZWN0KHRoaXMucm9v
dEVsZW1lbnQuaW5uZXJIVE1MKS5lcXVhbFRvVmFsdWUoYCR7aW5pdGlhbH0ke2luamVjdG9yfWAp
OwotICAgIH0KLQotICAgIHRlc3RQcmVwZW5kKCkgewotICAgICAgICBsZXQgaW5pdGlhbCA9ICc8
ZGl2IGlkPSIxIj48L2Rpdj48ZGl2IGlkPSIyIj48L2Rpdj48ZGl2IGlkPSIzIj48L2Rpdj4nOyAK
LSAgICAgICAgdGhpcy5yb290RWxlbWVudC5pbm5lckhUTUwgPSBpbml0aWFsOwotICAgICAgICBs
ZXQgaW5qZWN0b3IgPSBgPGRpdiBpZD0iJHtNYXRoLnJhbmRvbSgpfSI+PC9kaXY+YDsKLSAgICAg
ICAgRE9NLnByZXBlbmQodGhpcy5yb290RWxlbWVudCwgaW5qZWN0b3IpOwotICAgICAgICB0aGlz
LmV4cGVjdCh0aGlzLnJvb3RFbGVtZW50LmlubmVySFRNTCkuZXF1YWxUb1ZhbHVlKGAke2luamVj
dG9yfSR7aW5pdGlhbH1gKTsKLSAgICB9Ci0KLSAgICB0ZXN0QXBwZW5kKCkgewotICAgICAgICBs
ZXQgaW5pdGlhbCA9ICc8ZGl2IGlkPSIxIj48L2Rpdj48ZGl2IGlkPSIyIj48L2Rpdj48ZGl2IGlk
PSIzIj48L2Rpdj4nOyAKLSAgICAgICAgdGhpcy5yb290RWxlbWVudC5pbm5lckhUTUwgPSBpbml0
aWFsOwotICAgICAgICBsZXQgaW5qZWN0b3IgPSBgPGRpdiBpZD0iJHtNYXRoLnJhbmRvbSgpfSI+
PC9kaXY+YDsKLSAgICAgICAgRE9NLmFwcGVuZCh0aGlzLnJvb3RFbGVtZW50LCBpbmplY3Rvcik7
Ci0gICAgICAgIHRoaXMuZXhwZWN0KHRoaXMucm9vdEVsZW1lbnQuaW5uZXJIVE1MKS5lcXVhbFRv
VmFsdWUoYCR7aW5pdGlhbH0ke2luamVjdG9yfWApOwotICAgIH0KLSAgICAKLSAgICB0ZXN0UmVw
bGFjZSgpIHsKLSAgICAgICAgbGV0IGluaXRpYWwgPSAnPGRpdiBpZD0iMSI+PC9kaXY+PGRpdiBp
ZD0iMiI+PC9kaXY+PGRpdiBpZD0iMyI+PC9kaXY+JzsgCi0gICAgICAgIHRoaXMucm9vdEVsZW1l
bnQuaW5uZXJIVE1MID0gaW5pdGlhbDsKLSAgICAgICAgbGV0IGluamVjdG9yID0gYDxkaXYgaWQ9
IiR7TWF0aC5yYW5kb20oKX0iPjwvZGl2PmA7Ci0gICAgICAgIERPTS5yZXBsYWNlKHRoaXMucm9v
dEVsZW1lbnQuY2hpbGRyZW5bMF0sIGluamVjdG9yKTsKLSAgICAgICAgdGhpcy5leHBlY3QodGhp
cy5yb290RWxlbWVudC5pbm5lckhUTUwpLmVxdWFsVG9WYWx1ZShgJHtpbmplY3Rvcn08ZGl2IGlk
PSIyIj48L2Rpdj48ZGl2IGlkPSIzIj48L2Rpdj5gKTsKLSAgICB9Ci0gICAgCi0gICAgdGVzdFJl
bW92ZSgpIHsKLSAgICAgICAgbGV0IGluaXRpYWwgPSAnPGRpdiBpZD0iMSI+PC9kaXY+PGRpdiBp
ZD0iMiI+PC9kaXY+PGRpdiBpZD0iMyI+PC9kaXY+JzsgCi0gICAgICAgIHRoaXMucm9vdEVsZW1l
bnQuaW5uZXJIVE1MID0gaW5pdGlhbDsKLSAgICAgICAgRE9NLnJlbW92ZSh0aGlzLnJvb3RFbGVt
ZW50LmNoaWxkcmVuWzBdKTsKLSAgICAgICAgdGhpcy5leHBlY3QodGhpcy5yb290RWxlbWVudC5p
bm5lckhUTUwpLmVxdWFsVG9WYWx1ZShgPGRpdiBpZD0iMiI+PC9kaXY+PGRpdiBpZD0iMyI+PC9k
aXY+YCk7Ci0gICAgfQotfQotCi1jbGFzcyBSZWZUZXN0IGV4dGVuZHMgVGVzdFN1aXRlIHsKLSAg
ICBzZXR1cChyb290RWxlbWVudCkgewotICAgICAgICB0aGlzLnJvb3RFbGVtZW50ID0gcm9vdEVs
ZW1lbnQ7Ci0gICAgfQotCi0gICAgYXN5bmMgdGVzdE9uRWxlbWVudE1vdW50KCkgewotICAgICAg
ICBsZXQgdHJpZ2dlcmVkID0gZmFsc2U7Ci0gICAgICAgIGxldCBjdXJyZW50UmVmID0gbnVsbDsK
LSAgICAgICAgY29uc3QgY3JlYXRBQ29tcG9uZW50ID0gKCkgPT4gewotICAgICAgICAgICAgbGV0
IHJlZiA9IFJFRi5jcmVhdGVSZWYoewotICAgICAgICAgICAgICAgIG9uRWxlbWVudE1vdW50OiAo
ZWxlbWVudCkgPT4gewotICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyZWQgPSB0cnVlOwotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgY3VycmVudFJlZiA9
IHJlZjsKLSAgICAgICAgICAgIHJldHVybiBgPGRpdiByZWY9IiR7cmVmfSI+PC9kaXY+YDsKLSAg
ICAgICAgfTsKLSAgICAgICAgICAgIAotICAgICAgICBjb25zdCBmaXJzdENvbXAgPSBjcmVhdEFD
b21wb25lbnQoKTsKLSAgICAgICAgRE9NLmluamVjdCh0aGlzLnJvb3RFbGVtZW50LCBmaXJzdENv
bXApOwotICAgICAgICBhd2FpdCB0aGlzLndhaXRGb3JSZWZNb3VudGVkKGN1cnJlbnRSZWYpOwot
ICAgICAgICB0aGlzLmV4cGVjdCh0cmlnZ2VyZWQpLmVxdWFsVG9WYWx1ZSh0cnVlKTsKLSAgICAg
ICAgdGhpcy5leHBlY3QoY3VycmVudFJlZi5lbGVtZW50Lm91dGVySFRNTCkuZXF1YWxUb1ZhbHVl
KGZpcnN0Q29tcCk7Ci0KLSAgICAgICAgdHJpZ2dlcmVkID0gZmFsc2U7Ci0gICAgICAgIGNvbnN0
IHNlY29uZENvbXAgPSBjcmVhdEFDb21wb25lbnQoKTsKLSAgICAgICAgRE9NLnJlcGxhY2UodGhp
cy5yb290RWxlbWVudC5jaGlsZHJlblswXSwgc2Vjb25kQ29tcCk7Ci0gICAgICAgIGF3YWl0IHRo
aXMud2FpdEZvclJlZk1vdW50ZWQoY3VycmVudFJlZik7Ci0gICAgICAgIHRoaXMuZXhwZWN0KHRy
aWdnZXJlZCkuZXF1YWxUb1ZhbHVlKHRydWUpOwotICAgICAgICB0aGlzLmV4cGVjdChjdXJyZW50
UmVmLmVsZW1lbnQub3V0ZXJIVE1MKS5lcXVhbFRvVmFsdWUoc2Vjb25kQ29tcCk7Ci0gICAgfQot
Ci0gICAgYXN5bmMgdGVzdE9uRWxlbWVudFVubW91bnQoKSB7Ci0gICAgICAgIGxldCB0cmlnZ2Vy
ZWQgPSBmYWxzZTsKLSAgICAgICAgbGV0IGN1cnJlbnRSZWYgPSBudWxsOwotICAgICAgICBjb25z
dCBjcmVhdEFDb21wb25lbnQgPSAoKSA9PiB7Ci0gICAgICAgICAgICBsZXQgcmVmID0gUkVGLmNy
ZWF0ZVJlZih7Ci0gICAgICAgICAgICAgICAgb25FbGVtZW50VW5tb3VudDogKGVsZW1lbnQpID0+
IHsKLSAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcmVkID0gdHJ1ZTsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIGN1cnJlbnRSZWYgPSByZWY7Ci0gICAg
ICAgICAgICByZXR1cm4gYDxkaXYgcmVmPSIke3JlZn0iPjwvZGl2PmA7Ci0gICAgICAgIH07Ci0K
LSAgICAgICAgY29uc3QgZmlyc3RDb21wID0gY3JlYXRBQ29tcG9uZW50KCk7Ci0gICAgICAgIERP
TS5pbmplY3QodGhpcy5yb290RWxlbWVudCwgZmlyc3RDb21wKTsKLSAgICAgICAgRE9NLnJlcGxh
Y2UodGhpcy5yb290RWxlbWVudC5jaGlsZHJlblswXSwgIjxkaXY+PC9kaXY+Iik7Ci0gICAgICAg
IGF3YWl0IHRoaXMud2FpdEZvclJlZlVubW91bnRlZChjdXJyZW50UmVmKTsKLSAgICAgICAgdGhp
cy5leHBlY3QodHJpZ2dlcmVkKS5lcXVhbFRvVmFsdWUodHJ1ZSk7Ci0gICAgICAgIHRoaXMuZXhw
ZWN0KGN1cnJlbnRSZWYuZWxlbWVudC5wYXJlbnRFbGVtZW50KS5lcXVhbFRvVmFsdWUobnVsbCk7
Ci0KLSAgICAgICAgdHJpZ2dlcmVkID0gZmFsc2U7Ci0gICAgICAgIERPTS5pbmplY3QodGhpcy5y
b290RWxlbWVudCwgZmlyc3RDb21wKTsKLSAgICAgICAgRE9NLnJlbW92ZSh0aGlzLnJvb3RFbGVt
ZW50LmNoaWxkcmVuWzBdKTsKLSAgICAgICAgbGV0IGV4cGVjdGVkRSA9IG51bGw7Ci0gICAgICAg
IHRyeSB7Ci0gICAgICAgICAgICBhd2FpdCB0aGlzLndhaXRGb3JSZWZVbm1vdW50ZWQoY3VycmVu
dFJlZik7Ci0gICAgICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgICAgIC8vIGRlc3RvcmllZCBy
ZWYgd29uJ3QgYmUgdHJpZ2dlcmVkCi0gICAgICAgICAgICB0aGlzLmV4cGVjdCh0cmlnZ2VyZWQp
LmVxdWFsVG9WYWx1ZShmYWxzZSk7Ci0gICAgICAgICAgICBleHBlY3RlZEUgPSBlOwotICAgICAg
ICB9Ci0gICAgICAgIHRoaXMuZXhwZWN0KGV4cGVjdGVkRSkubm90RXF1YWxUb1ZhbHVlKG51bGwp
OwotICAgICAgICAKLSAgICAgICAgdHJpZ2dlcmVkID0gZmFsc2U7Ci0gICAgICAgIGNvbnN0IHNl
Y29uZENvbXAgPSBjcmVhdEFDb21wb25lbnQoKTsKLSAgICAgICAgRE9NLmluamVjdCh0aGlzLnJv
b3RFbGVtZW50LCBzZWNvbmRDb21wKTsKLSAgICAgICAgRE9NLnJlbW92ZSh0aGlzLnJvb3RFbGVt
ZW50LmNoaWxkcmVuWzBdKTsKLSAgICAgICAgYXdhaXQgdGhpcy53YWl0Rm9yUmVmVW5tb3VudGVk
KGN1cnJlbnRSZWYpOwotICAgICAgICB0aGlzLmV4cGVjdCh0cmlnZ2VyZWQpLmVxdWFsVG9WYWx1
ZSh0cnVlKTsKLSAgICAgICAgdGhpcy5leHBlY3QoY3VycmVudFJlZi5lbGVtZW50LnBhcmVudEVs
ZW1lbnQpLmVxdWFsVG9WYWx1ZShudWxsKTsKLSAgICB9Ci0gICAgCi0gICAgYXN5bmMgdGVzdE9u
Q29tcGxleFN0YXRlVXBkYXRlKCkgewotICAgICAgICBsZXQgdmVyaWZpZXIgPSBudWxsOwotICAg
ICAgICBsZXQgdHJpZ2dlcmVkID0gZmFsc2U7Ci0gICAgICAgIGxldCBleHBlY3RlZEUgPSBudWxs
OwotICAgICAgICBsZXQgaW5pdGlhbFN0YXRlID0gewotICAgICAgICAgICAgaW5pdGlhbFN0YXRl
OiBNYXRoLnJhbmRvbSgpCi0gICAgICAgIH07Ci0gICAgICAgIGxldCByZWYgPSBSRUYuY3JlYXRl
UmVmKHsKLSAgICAgICAgICAgIG9uU3RhdGVVcGRhdGU6KGVsZW1lbnQsIHN0YXRlRGlmZiwgc3Rh
dGUpID0+IHsKLSAgICAgICAgICAgICAgICBpZiAodmVyaWZpZXIpIHZlcmlmaWVyKGVsZW1lbnQs
IHN0YXRlRGlmZiwgc3RhdGUpOwotICAgICAgICAgICAgfQotICAgICAgICB9KTsKLSAgICAgICAg
cmVmLnNldFN0YXRlKGluaXRpYWxTdGF0ZSk7Ci0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBh
d2FpdCB0aGlzLndhaXRGb3JTdGF0ZVVwZGF0ZWQocmVmKTsKLSAgICAgICAgfSBjYXRjaCAoZSkg
ewotICAgICAgICAgICAgZXhwZWN0ZWRFID0gZTsKLSAgICAgICAgfQotICAgICAgICAvLyBiZWZv
cmUgZWxlbWVudCBtb3VudCwgd2UgZG9uJ3QgdHJpZ2dlciBzdGF0ZSB1cGRhdGUgY2FsbGJhY2ss
IHdlIGp1c3Qgc2F2ZSB0aGUgc3RhdGUKLSAgICAgICAgdGhpcy5leHBlY3QodHJpZ2dlcmVkKS5l
cXVhbFRvVmFsdWUoZmFsc2UpOwotICAgICAgICB0aGlzLmV4cGVjdChleHBlY3RlZEUpLm5vdEVx
dWFsVG9WYWx1ZShudWxsKTsKLSAgICAgICAgdGhpcy5leHBlY3QocmVmLnN0YXRlLmluaXRpYWxT
dGF0ZSkuZXF1YWxUb1ZhbHVlKGluaXRpYWxTdGF0ZS5pbml0aWFsU3RhdGUpOwotICAgICAgICAv
LyBFYWNoIHRpbWUgaXQgd2lsbCBjcmVhdGUgYSBuZXcgc3RhdGUgb2JqZWN0Ci0gICAgICAgIHRo
aXMuZXhwZWN0KHJlZi5zdGF0ZSkubm90RXF1YWxUb1ZhbHVlKGluaXRpYWxTdGF0ZSk7Ci0gICAg
ICAgIAotICAgICAgICBET00uaW5qZWN0KHRoaXMucm9vdEVsZW1lbnQsIGA8ZGl2IHJlZj0iJHty
ZWZ9Ij48L2Rpdj5gKTsKLSAgICAgICAgdmVyaWZpZXIgPSAoZWxlbWVudCwgc3RhdGVEaWZmLCBz
dGF0ZSkgPT4gewotICAgICAgICAgICAgdHJpZ2dlcmVkID0gdHJ1ZTsKLSAgICAgICAgICAgIHRo
aXMuZXhwZWN0KHN0YXRlRGlmZi5pbml0aWFsU3RhdGUpLmVxdWFsVG9WYWx1ZShpbml0aWFsU3Rh
dGUuaW5pdGlhbFN0YXRlKTsKLSAgICAgICAgICAgIHRoaXMuZXhwZWN0KHN0YXRlLmZha2VTdGF0
ZSkuZXF1YWxUb1ZhbHVlKHVuZGVmaW5lZCk7Ci0gICAgICAgIH07Ci0gICAgICAgIGF3YWl0IHRo
aXMud2FpdEZvclN0YXRlVXBkYXRlZChyZWYpOwotICAgICAgICB0aGlzLmV4cGVjdCh0cmlnZ2Vy
ZWQpLmVxdWFsVG9WYWx1ZSh0cnVlKTsKLSAgICAgICAgCi0gICAgICAgIHRyaWdnZXJlZCA9IGZh
bHNlOwotICAgICAgICBsZXQgZmFrZVN0YXRlID0gewotICAgICAgICAgICAgZmFrZVN0YXRlOiBN
YXRoLnJhbmRvbSgpCi0gICAgICAgIH07Ci0gICAgICAgIHZlcmlmaWVyID0gKGVsZW1lbnQsIHN0
YXRlRGlmZiwgc3RhdGUpID0+IHsKLSAgICAgICAgICAgIHRyaWdnZXJlZCA9IHRydWU7Ci0gICAg
ICAgICAgICB0aGlzLmV4cGVjdChzdGF0ZURpZmYuZmFrZVN0YXRlKS5lcXVhbFRvVmFsdWUoZmFr
ZVN0YXRlLmZha2VTdGF0ZSk7Ci0gICAgICAgICAgICB0aGlzLmV4cGVjdChzdGF0ZS5mYWtlU3Rh
dGUpLmVxdWFsVG9WYWx1ZSh1bmRlZmluZWQpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICB0
aGlzLmV4cGVjdChzdGF0ZS5pbml0aWFsU3RhdGUpLmVxdWFsVG9WYWx1ZShpbml0aWFsU3RhdGUu
aW5pdGlhbFN0YXRlKTsKLSAgICAgICAgICAgIHRoaXMuZXhwZWN0KHN0YXRlRGlmZi5pbml0aWFs
U3RhdGUpLmVxdWFsVG9WYWx1ZSh1bmRlZmluZWQpOwotICAgICAgICB9OwotICAgICAgICByZWYu
c2V0U3RhdGUoZmFrZVN0YXRlKTsKLSAgICAgICAgYXdhaXQgdGhpcy53YWl0Rm9yU3RhdGVVcGRh
dGVkKHJlZik7Ci0gICAgICAgIHRoaXMuZXhwZWN0KHJlZi5zdGF0ZS5mYWtlU3RhdGUpLmVxdWFs
VG9WYWx1ZShmYWtlU3RhdGUuZmFrZVN0YXRlKTsKLSAgICAgICAgdGhpcy5leHBlY3QocmVmLnN0
YXRlLmluaXRpYWxTdGF0ZSkuZXF1YWxUb1ZhbHVlKGluaXRpYWxTdGF0ZS5pbml0aWFsU3RhdGUp
OwotICAgICAgICB0aGlzLmV4cGVjdCh0cmlnZ2VyZWQpLmVxdWFsVG9WYWx1ZSh0cnVlKTsKLSAg
ICB9Ci0gICAgCi0gICAgYXN5bmMgdGVzdE9uVmFsdWVTdGF0ZVVwZGF0ZSgpIHsKLSAgICAgICAg
bGV0IHRyaWdnZXJlZCA9IGZhbHNlOwotICAgICAgICBsZXQgdmVyaWZpZXIgPSBudWxsOwotICAg
ICAgICBjb25zdCBpbml0aWFsU3RhdGUgPSBNYXRoLnJhbmRvbSgpOwotICAgICAgICBjb25zdCBy
ZWYgPSBSRUYuY3JlYXRlUmVmKHsKLSAgICAgICAgICAgIHN0YXRlOiBpbml0aWFsU3RhdGUsCi0g
ICAgICAgICAgICBvblN0YXRlVXBkYXRlOihlbGVtZW50LCBzdGF0ZURpZmYsIHN0YXRlKSA9PiB7
Ci0gICAgICAgICAgICAgICAgaWYgKHZlcmlmaWVyKSB2ZXJpZmllcihlbGVtZW50LCBzdGF0ZURp
ZmYsIHN0YXRlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSk7Ci0gICAgICAgIHZlcmlmaWVy
ID0gKGVsZW1lbnQsIHN0YXRlRGlmZiwgc3RhdGUpID0+IHsKLSAgICAgICAgICAgIHRyaWdnZXJl
ZCA9IHRydWU7Ci0gICAgICAgICAgICB0aGlzLmV4cGVjdChlbGVtZW50KS5ub3RFcXVhbFRvVmFs
dWUobnVsbCk7Ci0gICAgICAgICAgICB0aGlzLmV4cGVjdChzdGF0ZURpZmYpLmVxdWFsVG9WYWx1
ZShpbml0aWFsU3RhdGUpOwotICAgICAgICB9Ci0gICAgICAgIERPTS5pbmplY3QodGhpcy5yb290
RWxlbWVudCwgYDxkaXYgcmVmPSIke3JlZn0iPjwvZGl2PmApOwotICAgICAgICBhd2FpdCB0aGlz
LndhaXRGb3JTdGF0ZVVwZGF0ZWQocmVmKTsKLSAgICAgICAgdGhpcy5leHBlY3QodHJpZ2dlcmVk
KS5lcXVhbFRvVmFsdWUodHJ1ZSk7Ci0KLSAgICAgICAgY29uc3QgbmV3U3RhdGUgPSBudWxsOwot
ICAgICAgICB0cmlnZ2VyZWQgPSBmYWxzZTsKLSAgICAgICAgdmVyaWZpZXIgPSAoZWxlbWVudCwg
c3RhdGVEaWZmLCBzdGF0ZSkgPT4gewotICAgICAgICAgICAgdHJpZ2dlcmVkID0gdHJ1ZTsKLSAg
ICAgICAgICAgIHRoaXMuZXhwZWN0KHN0YXRlRGlmZikuZXF1YWxUb1ZhbHVlKG5ld1N0YXRlKTsK
LSAgICAgICAgICAgIHRoaXMuZXhwZWN0KHN0YXRlKS5lcXVhbFRvVmFsdWUoaW5pdGlhbFN0YXRl
KTsKLSAgICAgICAgfQotICAgICAgICByZWYuc2V0U3RhdGUobmV3U3RhdGUpOwotICAgICAgICBh
d2FpdCB0aGlzLndhaXRGb3JTdGF0ZVVwZGF0ZWQocmVmKTsKLSAgICAgICAgdGhpcy5leHBlY3Qo
dHJpZ2dlcmVkKS5lcXVhbFRvVmFsdWUodHJ1ZSk7Ci0gICAgICAgIAotICAgICAgICBjb25zdCBu
ZXdTdGF0ZTEgPSAwOwotICAgICAgICB0cmlnZ2VyZWQgPSBmYWxzZTsKLSAgICAgICAgdmVyaWZp
ZXIgPSAoZWxlbWVudCwgc3RhdGVEaWZmLCBzdGF0ZSkgPT4gewotICAgICAgICAgICAgdHJpZ2dl
cmVkID0gdHJ1ZTsKLSAgICAgICAgICAgIHRoaXMuZXhwZWN0KHN0YXRlRGlmZikuZXF1YWxUb1Zh
bHVlKG5ld1N0YXRlMSk7Ci0gICAgICAgICAgICB0aGlzLmV4cGVjdChzdGF0ZSkuZXF1YWxUb1Zh
bHVlKG5ld1N0YXRlKTsKLSAgICAgICAgfQotICAgICAgICByZWYuc2V0U3RhdGUobmV3U3RhdGUx
KTsKLSAgICAgICAgYXdhaXQgdGhpcy53YWl0Rm9yU3RhdGVVcGRhdGVkKHJlZik7Ci0gICAgICAg
IHRoaXMuZXhwZWN0KHRyaWdnZXJlZCkuZXF1YWxUb1ZhbHVlKHRydWUpOwotICAgICAgICAKLSAg
ICAgICAgY29uc3QgbmV3U3RhdGUyID0gdW5kZWZpbmVkOwotICAgICAgICBsZXQgZXhwZWN0ZWRF
ID0gbnVsbDsKLSAgICAgICAgcmVmLnNldFN0YXRlKG5ld1N0YXRlMSk7Ci0gICAgICAgIHRyeSB7
Ci0gICAgICAgICAgICBhd2FpdCB0aGlzLndhaXRGb3JTdGF0ZVVwZGF0ZWQocmVmKTsKLSAgICAg
ICAgfSBjYXRjaChlKSB7Ci0gICAgICAgICAgICBleHBlY3RlZEUgPSBlOwotICAgICAgICB9Ci0g
ICAgICAgIHRoaXMuZXhwZWN0KGV4cGVjdGVkRSkubm90RXF1YWxUb1ZhbHVlKG51bGwpOwotICAg
IH0KLX0KLWV4cG9ydCB7RGlmZlRlc3QsIERvbVRlc3QsIFJlZlRlc3R9OwpJbmRleDogVG9vbHMv
cmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9zdGF0aWMvbGlicmFyeS9qcy90ZXN0L2luZGV4
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9z
dGF0aWMvbGlicmFyeS9qcy90ZXN0L2luZGV4Lmh0bWwJKHJldmlzaW9uIDI2NTUzMSkKKysrIFRv
b2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvc3RhdGljL2xpYnJhcnkvanMvdGVzdC9p
bmRleC5odG1sCShub25leGlzdGVudCkKQEAgLTEsMjUgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+
Ci08aHRtbD4KLSAgICA8aGVhZD4KLSAgICAgICAgPHRpdGxlPlRlc3Q8L3RpdGxlPgotICAgICAg
ICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2Nzcy93ZWJraXQuY3NzIj48L2xp
bms+Ci0gICAgICAgIDxsaW5rIHJlbD0ic2hvcnRjdXQgaWNvbiIgc2l6ZXM9IjMyeDMyIiB0eXBl
PSJpbWFnZS94LWljb24iIGhyZWY9Imh0dHBzOi8vd2Via2l0Lm9yZy9mYXZpY29uLmljbyI+Ci0g
ICAgICAgIDxtZXRhIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0x
LCB2aWV3cG9ydC1maXQ9Y292ZXIiIG5hbWU9InZpZXdwb3J0Ij4KLSAgICAgICAgPG1ldGEgY2hh
cnNldD0iVVRGLTgiPgotICAgIDwvaGVhZD4KLSAgICA8Ym9keT4KLSAgICAgICAgPGRpdiBpZD0i
YXBwIj48L2Rpdj4KLSAgICAgICAgPHNjcmlwdCB0eXBlPSJtb2R1bGUiPgotICAgICAgICAgICAg
aW1wb3J0IHtET019IGZyb20gIi4uL1JlZi5qcyI7Ci0gICAgICAgICAgICBpbXBvcnQge1Rlc3RD
b250cm9sbGVyfSBmcm9tICIuLi9UZXN0LmpzIjsKLSAgICAgICAgICAgIGltcG9ydCB7VGVzdEFw
cH0gZnJvbSAiLi4vY29tcG9uZW50cy9UZXN0Q29tcG9uZW50cy5qcyI7Ci0gICAgICAgICAgICBj
b25zdCB0ZXN0Q29udHJvbGxlciA9IG5ldyBUZXN0Q29udHJvbGxlcigpOwotICAgICAgICAgICAg
YXN5bmMgZnVuY3Rpb24gbWFpbigpIHsKLSAgICAgICAgICAgICAgICAvLyBUZXN0IGZpbGUgbGlz
dDogUm9vdCBQYXRoIHdpbGwgYmUgVGVzdC5qcydzIGZvbGRlcgotICAgICAgICAgICAgICAgIGF3
YWl0IHRlc3RDb250cm9sbGVyLmNvbGxlY3RGaWxlKCIuL3Rlc3QvUmVmVGVzdC5qcyIpOwotICAg
ICAgICAgICAgICAgIERPTS5pbmplY3QoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImFwcCIpLCBU
ZXN0QXBwKHRlc3RDb250cm9sbGVyKSk7Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgbWFp
bigpOwotICAgICAgICA8L3NjcmlwdD4KLSAgICA8L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBUb29s
cy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS92aWV3L3N1aXRlX3ZpZXcucHkKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9zdWl0ZV92aWV3LnB5CShyZXZp
c2lvbiAyNjU1MzEpCisrKyBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS92aWV3L3N1aXRl
X3ZpZXcucHkJKG5vbmV4aXN0ZW50KQpAQCAtMSwxMzUgKzAsMCBAQAotIyBDb3B5cmlnaHQgKEMp
IDIwMTksIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jCi0jIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0j
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SCi0jIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IK
LSMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIKLSMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSMgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotaW1wb3J0IGpzb24KLQotZnJvbSBmbGFzayBp
bXBvcnQgYWJvcnQKLWZyb20gcmVzdWx0c2RicHkuY29udHJvbGxlci5jb21taXRfY29udHJvbGxl
ciBpbXBvcnQgdXVpZF9yYW5nZV9mb3JfcXVlcnksIEhhc0NvbW1pdENvbnRleHQKLWZyb20gcmVz
dWx0c2RicHkuY29udHJvbGxlci5jb25maWd1cmF0aW9uX2NvbnRyb2xsZXIgaW1wb3J0IGNvbmZp
Z3VyYXRpb25fZm9yX3F1ZXJ5Ci1mcm9tIHJlc3VsdHNkYnB5LmNvbnRyb2xsZXIuc3VpdGVfY29u
dHJvbGxlciBpbXBvcnQgdGltZV9yYW5nZV9mb3JfcXVlcnkKLWZyb20gcmVzdWx0c2RicHkuZmxh
c2tfc3VwcG9ydC51dGlsIGltcG9ydCBBc3NlcnRSZXF1ZXN0LCBxdWVyeV9hc19rd2FyZ3MsIGxp
bWl0X2Zvcl9xdWVyeSwgYm9vbGVhbl9xdWVyeQotZnJvbSByZXN1bHRzZGJweS52aWV3LnNpdGVf
bWVudSBpbXBvcnQgU2l0ZU1lbnUKLQotCi1jbGFzcyBTdWl0ZVZpZXcoSGFzQ29tbWl0Q29udGV4
dCk6Ci0gICAgREVGQVVMVF9MSU1JVCA9IDEwMAotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGVu
dmlyb25tZW50LCB1cGxvYWRfY29udHJvbGxlciwgc3VpdGVfY29udHJvbGxlciwgc2l0ZV9tZW51
PU5vbmUpOgotICAgICAgICBzdXBlcihTdWl0ZVZpZXcsIHNlbGYpLl9faW5pdF9fKHN1aXRlX2Nv
bnRyb2xsZXIuY29tbWl0X2NvbnRleHQpCi0gICAgICAgIHNlbGYuZW52aXJvbm1lbnQgPSBlbnZp
cm9ubWVudAotCi0gICAgICAgIHNlbGYudXBsb2FkX2NvbnRyb2xsZXIgPSB1cGxvYWRfY29udHJv
bGxlcgotICAgICAgICBzZWxmLnN1aXRlX2NvbnRyb2xsZXIgPSBzdWl0ZV9jb250cm9sbGVyCi0g
ICAgICAgIHNlbGYuc2l0ZV9tZW51ID0gc2l0ZV9tZW51Ci0KLSAgICAjIEl0J3Mgbm90IHRoYXQg
d2UgYWN0dWFsbHkgbmVlZCB0aGUgdmFsdWUgb2YgYWxsIHRoZSBxdWVyeSBhcmd1bWVudHMgaGVy
ZSwgYnV0IHdlIHdhbnQgZXJyb3JzIGZvciB0aGUgd3JvbmcKLSAgICAjIHF1ZXJ5IGFyZ3VtZW50
cyB0byBiZSBkZWFsdCB3aXRoIGluIGEgdXNlci1yZWFkYWJsZSB3YXkKLSAgICBAcXVlcnlfYXNf
a3dhcmdzKCkKLSAgICBAdXVpZF9yYW5nZV9mb3JfcXVlcnkoKQotICAgIEBsaW1pdF9mb3JfcXVl
cnkoREVGQVVMVF9MSU1JVCkKLSAgICBAY29uZmlndXJhdGlvbl9mb3JfcXVlcnkoKQotICAgIEB0
aW1lX3JhbmdlX2Zvcl9xdWVyeSgpCi0gICAgZGVmIF9zdWl0ZXNfZm9yX2NvbmZpZ3VyYXRpb24o
Ci0gICAgICAgIHNlbGYsIHN1aXRlPU5vbmUsIGNvbmZpZ3VyYXRpb25zPU5vbmUsIHJlY2VudD1O
b25lLAotICAgICAgICBicmFuY2g9Tm9uZSwgYmVnaW49Tm9uZSwgZW5kPU5vbmUsCi0gICAgICAg
IGJlZ2luX3F1ZXJ5X3RpbWU9Tm9uZSwgZW5kX3F1ZXJ5X3RpbWU9Tm9uZSwKLSAgICAgICAgbGlt
aXQ9Tm9uZSwgKiprd2FyZ3MKLSAgICApOgotICAgICAgICBBc3NlcnRSZXF1ZXN0LmlzX3R5cGUo
WydHRVQnXSkKLSAgICAgICAgQXNzZXJ0UmVxdWVzdC5xdWVyeV9rd2FyZ3NfZW1wdHkoKiprd2Fy
Z3MpCi0KLSAgICAgICAgd2l0aCBzZWxmLnVwbG9hZF9jb250cm9sbGVyLnVwbG9hZF9jb250ZXh0
OgotICAgICAgICAgICAgc3VpdGVzX2J5X2NvbmZpZ3VyYXRpb24gPSBzZWxmLnVwbG9hZF9jb250
cm9sbGVyLnVwbG9hZF9jb250ZXh0LmZpbmRfc3VpdGVzKGNvbmZpZ3VyYXRpb25zPWNvbmZpZ3Vy
YXRpb25zLCByZWNlbnQ9Ym9vbGVhbl9xdWVyeSgqcmVjZW50KVswXSBpZiByZWNlbnQgZWxzZSBU
cnVlKQotICAgICAgICAgICAgY2FuZGlkYXRlX3N1aXRlcyA9IHNldCgpCi0gICAgICAgICAgICBm
b3Igc3VpdGVzX2Zvcl9jb25maWcgaW4gc3VpdGVzX2J5X2NvbmZpZ3VyYXRpb24udmFsdWVzKCk6
Ci0gICAgICAgICAgICAgICAgZm9yIHMgaW4gc3VpdGVzX2Zvcl9jb25maWc6Ci0gICAgICAgICAg
ICAgICAgICAgIGNhbmRpZGF0ZV9zdWl0ZXMuYWRkKHMpCi0gICAgICAgICAgICByZXR1cm4gc29y
dGVkKFtzIGZvciBzIGluIGNhbmRpZGF0ZV9zdWl0ZXMgaWYgbm90IHN1aXRlIG9yIHMgaW4gc3Vp
dGVdKQotCi0gICAgQFNpdGVNZW51LnJlbmRlcl93aXRoX3NpdGVfbWVudSgpCi0gICAgZGVmIHJl
c3VsdHMoc2VsZiwgKiprd2FyZ3MpOgotICAgICAgICByZXR1cm4gc2VsZi5lbnZpcm9ubWVudC5n
ZXRfdGVtcGxhdGUoJ3N1aXRlX3Jlc3VsdHMuaHRtbCcpLnJlbmRlcigKLSAgICAgICAgICAgIHRp
dGxlPXNlbGYuc2l0ZV9tZW51LnRpdGxlLAotICAgICAgICAgICAgc3VpdGVzPWpzb24uZHVtcHMo
c2VsZi5fc3VpdGVzX2Zvcl9jb25maWd1cmF0aW9uKCkpLAotICAgICAgICAgICAgKiprd2FyZ3Mp
Ci0KLSAgICBAcXVlcnlfYXNfa3dhcmdzKCkKLSAgICBAdXVpZF9yYW5nZV9mb3JfcXVlcnkoKQot
ICAgIEBsaW1pdF9mb3JfcXVlcnkoREVGQVVMVF9MSU1JVCkKLSAgICBAY29uZmlndXJhdGlvbl9m
b3JfcXVlcnkoKQotICAgIEB0aW1lX3JhbmdlX2Zvcl9xdWVyeSgpCi0gICAgZGVmIF9zdWl0ZXNf
Zm9yX2ludmVzdGlnYXRpb24oCi0gICAgICAgIHNlbGYsIHN1aXRlPU5vbmUsIGNvbmZpZ3VyYXRp
b25zPU5vbmUsIHJlY2VudD1Ob25lLAotICAgICAgICBicmFuY2g9Tm9uZSwgYmVnaW49Tm9uZSwg
ZW5kPU5vbmUsCi0gICAgICAgIGJlZ2luX3F1ZXJ5X3RpbWU9Tm9uZSwgZW5kX3F1ZXJ5X3RpbWU9
Tm9uZSwKLSAgICAgICAgdW5leHBlY3RlZD1Ob25lLAotICAgICAgICBsaW1pdD1Ob25lLCAqKmt3
YXJncwotICAgICk6Ci0gICAgICAgIEFzc2VydFJlcXVlc3QuaXNfdHlwZShbJ0dFVCddKQotICAg
ICAgICBBc3NlcnRSZXF1ZXN0LnF1ZXJ5X2t3YXJnc19lbXB0eSgqKmt3YXJncykKLQotICAgICAg
ICB3aXRoIHNlbGYudXBsb2FkX2NvbnRyb2xsZXIudXBsb2FkX2NvbnRleHQ6Ci0gICAgICAgICAg
ICBzdWl0ZXNfYnlfY29uZmlndXJhdGlvbiA9IHNlbGYudXBsb2FkX2NvbnRyb2xsZXIudXBsb2Fk
X2NvbnRleHQuZmluZF9zdWl0ZXMoY29uZmlndXJhdGlvbnM9Y29uZmlndXJhdGlvbnMsIHJlY2Vu
dD1ib29sZWFuX3F1ZXJ5KCpyZWNlbnQpWzBdIGlmIHJlY2VudCBlbHNlIFRydWUpCi0gICAgICAg
ICAgICBjYW5kaWRhdGVfc3VpdGVzID0gc2V0KCkKLSAgICAgICAgICAgIGZvciBzdWl0ZXNfZm9y
X2NvbmZpZyBpbiBzdWl0ZXNfYnlfY29uZmlndXJhdGlvbi52YWx1ZXMoKToKLSAgICAgICAgICAg
ICAgICBmb3IgcyBpbiBzdWl0ZXNfZm9yX2NvbmZpZzoKLSAgICAgICAgICAgICAgICAgICAgY2Fu
ZGlkYXRlX3N1aXRlcy5hZGQocykKLSAgICAgICAgICAgIHJldHVybiBzb3J0ZWQoW3MgZm9yIHMg
aW4gY2FuZGlkYXRlX3N1aXRlcyBpZiBub3Qgc3VpdGUgb3IgcyBpbiBzdWl0ZV0pCi0KLSAgICBA
U2l0ZU1lbnUucmVuZGVyX3dpdGhfc2l0ZV9tZW51KCkKLSAgICBkZWYgaW52ZXN0aWdhdGUoc2Vs
ZiwgKiprd2FyZ3MpOgotICAgICAgICByZXR1cm4gc2VsZi5lbnZpcm9ubWVudC5nZXRfdGVtcGxh
dGUoJ2ludmVzdGlnYXRlLmh0bWwnKS5yZW5kZXIoCi0gICAgICAgICAgICB0aXRsZT1zZWxmLnNp
dGVfbWVudS50aXRsZSwKLSAgICAgICAgICAgIHN1aXRlcz1qc29uLmR1bXBzKHNlbGYuX3N1aXRl
c19mb3JfaW52ZXN0aWdhdGlvbigpKSwKLSAgICAgICAgICAgICoqa3dhcmdzKQotCi0gICAgQHF1
ZXJ5X2FzX2t3YXJncygpCi0gICAgQHV1aWRfcmFuZ2VfZm9yX3F1ZXJ5KCkKLSAgICBAbGltaXRf
Zm9yX3F1ZXJ5KERFRkFVTFRfTElNSVQpCi0gICAgQGNvbmZpZ3VyYXRpb25fZm9yX3F1ZXJ5KCkK
LSAgICBAdGltZV9yYW5nZV9mb3JfcXVlcnkoKQotICAgIGRlZiBfc3VpdGVzX2Zvcl9zZWFyY2go
Ci0gICAgICAgIHNlbGYsIHN1aXRlPU5vbmUsIGNvbmZpZ3VyYXRpb25zPU5vbmUsIHJlY2VudD1O
b25lLAotICAgICAgICBicmFuY2g9Tm9uZSwgYmVnaW49Tm9uZSwgZW5kPU5vbmUsCi0gICAgICAg
IGJlZ2luX3F1ZXJ5X3RpbWU9Tm9uZSwgZW5kX3F1ZXJ5X3RpbWU9Tm9uZSwKLSAgICAgICAgdGVz
dD1Ob25lLCBsaW1pdD1Ob25lLCAqKmt3YXJncwotICAgICk6Ci0gICAgICAgIEFzc2VydFJlcXVl
c3QuaXNfdHlwZShbJ0dFVCddKQotICAgICAgICBBc3NlcnRSZXF1ZXN0LnF1ZXJ5X2t3YXJnc19l
bXB0eSgqKmt3YXJncykKLQotICAgICAgICBpZiB0ZXN0IGFuZCAobm90IHN1aXRlIG9yIGxlbihz
dWl0ZSkgIT0gbGVuKHRlc3QpKToKLSAgICAgICAgICAgIGFib3J0KDQwMCwgZGVzY3JpcHRpb249
J0VhY2ggdGVzdCBtdXN0IGJlIHBhaXJlZCB3aXRoIGEgc3VpdGUnKQotCi0gICAgICAgIHdpdGgg
c2VsZi51cGxvYWRfY29udHJvbGxlci51cGxvYWRfY29udGV4dDoKLSAgICAgICAgICAgIHN1aXRl
c19ieV9jb25maWd1cmF0aW9uID0gc2VsZi51cGxvYWRfY29udHJvbGxlci51cGxvYWRfY29udGV4
dC5maW5kX3N1aXRlcyhjb25maWd1cmF0aW9ucz1jb25maWd1cmF0aW9ucywgcmVjZW50PWJvb2xl
YW5fcXVlcnkoKnJlY2VudClbMF0gaWYgcmVjZW50IGVsc2UgVHJ1ZSkKLSAgICAgICAgICAgIGNh
bmRpZGF0ZV9zdWl0ZXMgPSBzZXQoKQotICAgICAgICAgICAgZm9yIHN1aXRlc19mb3JfY29uZmln
IGluIHN1aXRlc19ieV9jb25maWd1cmF0aW9uLnZhbHVlcygpOgotICAgICAgICAgICAgICAgIGZv
ciBzIGluIHN1aXRlc19mb3JfY29uZmlnOgotICAgICAgICAgICAgICAgICAgICBjYW5kaWRhdGVf
c3VpdGVzLmFkZChzKQotICAgICAgICAgICAgcmV0dXJuIHNvcnRlZChbcyBmb3IgcyBpbiBjYW5k
aWRhdGVfc3VpdGVzIGlmIHRlc3Qgb3Igbm90IHN1aXRlIG9yIHMgaW4gc3VpdGVdKQotCi0gICAg
QFNpdGVNZW51LnJlbmRlcl93aXRoX3NpdGVfbWVudSgpCi0gICAgZGVmIHNlYXJjaChzZWxmLCAq
Kmt3YXJncyk6Ci0gICAgICAgIHJldHVybiBzZWxmLmVudmlyb25tZW50LmdldF90ZW1wbGF0ZSgn
c2VhcmNoLmh0bWwnKS5yZW5kZXIoCi0gICAgICAgICAgICB0aXRsZT1zZWxmLnNpdGVfbWVudS50
aXRsZSwKLSAgICAgICAgICAgIHN1aXRlcz1qc29uLmR1bXBzKHNlbGYuX3N1aXRlc19mb3Jfc2Vh
cmNoKCkpLAotICAgICAgICAgICAgKiprd2FyZ3MpCkluZGV4OiBUb29scy9yZXN1bHRzZGJweS9y
ZXN1bHRzZGJweS92aWV3L3RlbXBsYXRlcy9hcmNoaXZlX2xpc3QuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS92aWV3L3RlbXBsYXRlcy9hcmNoaXZlX2xp
c3QuaHRtbAkocmV2aXNpb24gMjY1NTMxKQorKysgVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2Ri
cHkvdmlldy90ZW1wbGF0ZXMvYXJjaGl2ZV9saXN0Lmh0bWwJKG5vbmV4aXN0ZW50KQpAQCAtMSwx
MTIgKzAsMCBAQAotPCEtLQotIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0KLSBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSBhcmUgbWV0OgotIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0KLSBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gIkFTIElTIiBB
TkQgQU5ZCi0gRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKLSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKLSBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCi0tLT4KLQoteyUgZXh0ZW5kcyAiYmFzZS5odG1sIiAlfQoteyUgYmxvY2sgaGVhZCAl
fQotPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iYXNzZXRzL2Nz
cy9jb21taXQuY3NzIj4KLQotPHNjcmlwdCB0eXBlPSJtb2R1bGUiPgotaW1wb3J0IHtSRUYsIERP
TX0gZnJvbSAnL2xpYnJhcnkvanMvUmVmLmpzJzsKLQotZnVuY3Rpb24gY29sbGFwc2FibGVMaXN0
Rm9yUGF0aHMocm9vdCwgZGlyZWN0b3J5LCBwYXRocykKLXsKLSAgICBsZXQgaXNFeHBhbmRlZCA9
IGZhbHNlOwotICAgIGxldCBsaXN0ID0gbnVsbDsKLSAgICBjb25zdCBleHBhbmRlciA9IFJFRi5j
cmVhdGVSZWYoewotICAgICAgICBvbkVsZW1lbnRNb3VudDogKGVsZW1lbnQpID0+IHsKLSAgICAg
ICAgICAgIGVsZW1lbnQub25jbGljayA9ICgpID0+IHsKLSAgICAgICAgICAgICAgICBpc0V4cGFu
ZGVkID0gIWlzRXhwYW5kZWQ7Ci0gICAgICAgICAgICAgICAgZWxlbWVudC5pbm5lckhUTUwgPSBp
c0V4cGFuZGVkID8gJy0nIDogJysnOwotICAgICAgICAgICAgICAgIGlmIChsaXN0KQotICAgICAg
ICAgICAgICAgICAgICBsaXN0LnN0eWxlLmRpc3BsYXkgPSBpc0V4cGFuZGVkID8gJ2Jsb2NrJyA6
ICdub25lJzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0pOwotICAgIGNvbnN0IGxp
c3RSZWYgPSBSRUYuY3JlYXRlUmVmKHsKLSAgICAgICAgb25FbGVtZW50TW91bnQ6IChlbGVtZW50
KSA9PiB7Ci0gICAgICAgICAgICBsaXN0ID0gZWxlbWVudDsKLSAgICAgICAgfSwKLSAgICB9KTsK
LQotICAgIGNvbnN0IHBhcmFtcyA9IGRvY3VtZW50LlVSTC5zcGxpdCgnPycpWzFdOwotICAgIHJl
dHVybiBgPGRpdiBjbGFzcz0iaXRlbSI+Ci0gICAgICAgICAgICA8YSBzdHlsZT0iY3Vyc29yOiBw
b2ludGVyOyIgY2xhc3M9InRleHQgbWVkaXVtIiByZWY9IiR7ZXhwYW5kZXJ9Ij4rPC9hPiB8IAot
ICAgICAgICAgICAgPGEgaHJlZj0iL2FyY2hpdmUve3sgcGF0aCB9fSR7ZGlyZWN0b3J5fSR7cGFy
YW1zID8gJz8nICsgcGFyYW1zIDogJyd9Ij4ke2RpcmVjdG9yeS5zbGljZShyb290Lmxlbmd0aCl9
PC9hPgotICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGlzdCIgcmVmPSIke2xpc3RSZWZ9IiBzdHls
ZT0iZGlzcGxheTogbm9uZTsiPgotICAgICAgICAgICAgICAgICR7bGlzdENvbnRlbnRGb3JQYXRo
cyhkaXJlY3RvcnksIHBhdGhzKX0KLSAgICAgICAgICAgIDwvZGl2PgotICAgICAgICA8L2Rpdj5g
OwotfQotCi1mdW5jdGlvbiBsaXN0Q29udGVudEZvclBhdGhzKHJvb3QsIHBhdGhzKSB7Ci0gICAg
bGV0IGRpcmVjdG9yeSA9IG51bGw7Ci0gICAgbGV0IGZpbGVzSW5EaXJlY3RvcnkgPSBbXTsKLSAg
ICBsZXQgcmVzdWx0ID0gcGF0aHMubWFwKChwYXRoKSA9PiB7Ci0gICAgICAgIGlmIChkaXJlY3Rv
cnkgJiYgcGF0aC5zdGFydHNXaXRoKGRpcmVjdG9yeSkpIHsKLSAgICAgICAgICAgIGZpbGVzSW5E
aXJlY3RvcnkucHVzaChwYXRoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAg
ICAgICBsZXQgcHJldmlvdXMgPSAnJzsKLSAgICAgICAgaWYgKGRpcmVjdG9yeSkKLSAgICAgICAg
ICAgIHByZXZpb3VzID0gY29sbGFwc2FibGVMaXN0Rm9yUGF0aHMocm9vdCwgZGlyZWN0b3J5LCBm
aWxlc0luRGlyZWN0b3J5KTsKLQotICAgICAgICBkaXJlY3RvcnkgPSBudWxsOwotICAgICAgICBm
aWxlc0luRGlyZWN0b3J5ID0gW107Ci0gICAgICAgIGlmIChwYXRoW3BhdGgubGVuZ3RoIC0gMV0g
PT0gJy8nKSB7Ci0gICAgICAgICAgICBkaXJlY3RvcnkgPSBwYXRoOwotICAgICAgICAgICAgcmV0
dXJuIHByZXZpb3VzOwotICAgICAgICB9Ci0gICAgICAgIGNvbnN0IHBhcmFtcyA9IGRvY3VtZW50
LlVSTC5zcGxpdCgnPycpWzFdOwotICAgICAgICByZXR1cm4gYCR7cHJldmlvdXN9Ci0gICAgICAg
ICAgICA8ZGl2IGNsYXNzPSJpdGVtIj4KLSAgICAgICAgICAgICAgICA8YSBocmVmPSIvYXJjaGl2
ZS97eyBwYXRoIH19JHtwYXRofSR7cGFyYW1zID8gJz8nICsgcGFyYW1zIDogJyd9Ij4ke3BhdGgu
c2xpY2Uocm9vdC5sZW5ndGgpfTwvYT4KLSAgICAgICAgICAgIDwvZGl2PmA7Ci0gICAgfSkuam9p
bignJyk7Ci0KLSAgICBpZiAoZGlyZWN0b3J5KQotICAgICAgICByZXR1cm4gcmVzdWx0ICsgY29s
bGFwc2FibGVMaXN0Rm9yUGF0aHMocm9vdCwgZGlyZWN0b3J5LCBmaWxlc0luRGlyZWN0b3J5KTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1jb25zdCBwYXRocyA9IFt7JSBmb3IgdmFsIGluIHZh
bHVlcyAlfSd7eyB2YWwgfX0nLCB7JSBlbmRmb3IgJX1dOwotRE9NLmluamVjdChkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgncGF0aHMnKSwgbGlzdENvbnRlbnRGb3JQYXRocygnJywgcGF0aHMpKTsK
LQotPC9zY3JpcHQ+Ci0KLXslIGVuZGJsb2NrICV9Ci17JSBibG9jayBjb250ZW50ICV9Ci08ZGl2
IGNsYXNzPSJjb250ZW50Ij4KLSAgICA8ZGl2IGNsYXNzPSJ0aXRsZSI+Ci0gICAgICAgIHslIGlm
IHBhdGggIT0gJycgYW5kIHBhdGguc3BsaXQoJy8nKVs6LTJdJX0KLSAgICAgICAgICAgICA8YSBo
cmVmPSIvYXJjaGl2ZS97eyAnLycuam9pbihwYXRoLnNwbGl0KCcvJylbOi0yXSkgfX0ve3sgcXVl
cnkgfX0iPiZsdDwvYT4gCi0gICAgICAgIHslIGVsaWYgcGF0aCAhPSAnJyAlfQotICAgICAgICAg
ICAgPGEgaHJlZj0iL2FyY2hpdmV7eyBxdWVyeSB9fSI+Jmx0PC9hPgotICAgICAgICB7JSBlbmRp
ZiAlfQotICAgICAgICAve3sgcGF0aCB9fQotICAgIDwvZGl2PgotICAgIDxkaXYgY2xhc3M9Imxp
c3QiIGlkPSJwYXRocyI+Ci0gICAgPC9kaXY+Ci08L2Rpdj4KLXslIGVuZGJsb2NrICV9CkluZGV4
OiBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS92aWV3L3RlbXBsYXRlcy9iYXNlLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy90ZW1wbGF0
ZXMvYmFzZS5odG1sCShyZXZpc2lvbiAyNjU1MzEpCisrKyBUb29scy9yZXN1bHRzZGJweS9yZXN1
bHRzZGJweS92aWV3L3RlbXBsYXRlcy9iYXNlLmh0bWwJKG5vbmV4aXN0ZW50KQpAQCAtMSw4MiAr
MCwwIEBACi08IS0tCi0gQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLQotIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIGFyZSBtZXQ6Ci0gMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LQotIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiAiQVMgSVMiIEFORCBB
TlkKLSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQotIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgotIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotLS0+Ci0KLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTx0aXRsZT57e3RpdGxl
fX08L3RpdGxlPgotPG1ldGEgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNj
YWxlPTEsIHZpZXdwb3J0LWZpdD1jb3ZlciIgbmFtZT0idmlld3BvcnQiPgotPG1ldGEgY2hhcnNl
dD0iVVRGLTgiPgotPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0i
L2xpYnJhcnkvY3NzL3dlYmtpdC5jc3MiPgoteyUgYmxvY2sgaGVhZCAlfXslIGVuZGJsb2NrICV9
Ci08L2hlYWQ+Ci08Ym9keT4KLTxkaXYgY2xhc3M9ImhlYWRlciBmaXhlZCI+Ci0gICAgPGRpdiBj
bGFzcz0idGl0bGUiPgotICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0IGxhcmdlIGJsb2NrIiBzdHls
ZT0id2lkdGg6IGNhbGMoMTAwJSAtIDQ0cHgpOyBvdmVyZmxvdzogaGlkZGVuOyB3aGl0ZS1zcGFj
ZTogbm93cmFwOyB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsiPgotICAgICAgICAgICAge3tzaXRl
X3RpdGxlfX0KLSAgICAgICAgPC9kaXY+Ci0gICAgICAgIDxidXR0b24gc3R5bGU9IndpZHRoOiA0
NHB4IiBjbGFzcz0iYnV0dG9uIG1vYmlsZS1zaWRlYmFyLWNvbnRyb2wiPuKYsDwvYnV0dG9uPgot
ICAgIDwvZGl2PgotICAgIDxkaXYgY2xhc3M9ImFjdGlvbnMiPgotICAgICAgICA8ZGl2IGNsYXNz
PSJsaXN0IiBpZD0ic2l0ZS1tZW51Ij48L2Rpdj4KLSAgICA8L2Rpdj4KLTwvZGl2PgoteyUgYmxv
Y2sgY29udGVudCAlfXslIGVuZGJsb2NrICV9Ci08c2NyaXB0IHR5cGU9Im1vZHVsZSI+Ci0gICAg
aW1wb3J0IHtxdWVyeVRvUGFyYW1zLCBwYXJhbXNUb1F1ZXJ5fSBmcm9tICcvYXNzZXRzL2pzL2Nv
bW1vbi5qcyc7Ci0gICAgaW1wb3J0IHtET00sIFJFRn0gZnJvbSAnL2xpYnJhcnkvanMvUmVmLmpz
JzsKLSAgICBpbXBvcnQge2Rpc2FibGVCYWNrR2VzdHVyZX0gZnJvbSAnL2xpYnJhcnkvanMvVXRp
bHMuanMnOwotCi0gICAgZGlzYWJsZUJhY2tHZXN0dXJlKCk7Ci0KLSAgICBET00uaW5qZWN0KAot
ICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2l0ZS1tZW51JyksCi0gICAgICAgIGB7
JSBmb3IgbmFtZSwgdXJsX2luZm8gaW4gc2l0ZV9tZW51Lml0ZW1zKCkgJX0KLSAgICAgICAgICAg
IDxkaXYgY2xhc3M9Iml0ZW0iPgotICAgICAgICAgICAgICAgIDxhIHN0eWxlPSJjdXJzb3I6IHBv
aW50ZXIiIHJlZj0iJHtSRUYuY3JlYXRlUmVmKHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG9u
RWxlbWVudE1vdW50OiBlbGVtZW50ID0+IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
bGVtZW50Lm9uY2xpY2sgPSAoKSA9PiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGN1cnJlbnRQYXJhbXMgPSBxdWVyeVRvUGFyYW1zKGRvY3VtZW50LlVSTC5zcGxpdCgn
PycpWzFdKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJldGFpbmVkUGFy
YW1zID0ge307Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHVybF9pbmZvWydw
YXJhbWV0ZXJzJ118c2FmZSB9fS5mb3JFYWNoKChwYXJhbWV0ZXIpID0+IHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50UGFyYW1zLmhhc093blByb3BlcnR5
KHBhcmFtZXRlcikpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0
YWluZWRQYXJhbXNbcGFyYW1ldGVyXSA9IGN1cnJlbnRQYXJhbXNbcGFyYW1ldGVyXTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGxldCBkZXN0aW5hdGlvbiA9ICJ7eyB1cmxfaW5mb1sndXJsJ10oKSB9fSI7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChPYmplY3Qua2V5cyhyZXRhaW5lZFBhcmFt
cykubGVuZ3RoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdGluYXRp
b24gPSBgJHtkZXN0aW5hdGlvbn0/JHtwYXJhbXNUb1F1ZXJ5KHJldGFpbmVkUGFyYW1zKX1gOwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uYXNzaWduKGRl
c3RpbmF0aW9uKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwotICAgICAgICAgICAg
ICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgfSl9Ij4KLSAgICAgICAgICAgICAg
ICAgICAge3sgbmFtZSB9fQotICAgICAgICAgICAgICAgIDwvYT4KLSAgICAgICAgICAgIDwvZGl2
PgotICAgICAgICB7JSBlbmRmb3IgJX1gLAotICAgICk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwv
aHRtbD4KSW5kZXg6IFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvdGVtcGxhdGVz
L2NvbW1pdC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5
L3ZpZXcvdGVtcGxhdGVzL2NvbW1pdC5odG1sCShyZXZpc2lvbiAyNjU1MzEpCisrKyBUb29scy9y
ZXN1bHRzZGJweS9yZXN1bHRzZGJweS92aWV3L3RlbXBsYXRlcy9jb21taXQuaHRtbAkobm9uZXhp
c3RlbnQpCkBAIC0xLDg0ICswLDAgQEAKLTwhLS0KLSBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotCi0gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gYXJl
IG1ldDoKLSAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotCi0gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuICJBUyBJUyIgQU5EIEFOWQotIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKLSBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAotLS0+Ci0KLXslIGV4dGVuZHMgImJhc2UuaHRtbCIgJX0KLXsl
IGJsb2NrIGhlYWQgJX0KLTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhy
ZWY9ImFzc2V0cy9jc3MvY29tbWl0LmNzcyI+Ci17JSBlbmRibG9jayAlfQoteyUgYmxvY2sgY29u
dGVudCAlfQotPGRpdiBjbGFzcz0iY29udGVudCByb3ciPgotICAgIDxkaXYgY2xhc3M9ImNvbC0x
MiI+Ci0gICAgICAgIDxkaXYgY2xhc3M9InJvdyI+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJj
b2wtNCIgc3R5bGU9InRleHQtYWxpZ246bGVmdCI+Ci0gICAgICAgICAgICAgICAgPGEgY2xhc3M9
ImJ1dHRvbiIgaHJlZj0iL2NvbW1pdC9wcmV2aW91cz9yZXBvc2l0b3J5X2lkPXt7IGNvbW1pdC5y
ZXBvc2l0b3J5X2lkIH19JmJyYW5jaD17eyBjb21taXQuYnJhbmNoIH19JmlkPXt7IGNvbW1pdC5p
ZCB9fSI+4peAIFByZXZpb3VzPC9hPgotICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICA8
ZGl2IGNsYXNzPSJjb2wtNCIgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyIj4KLSAgICAgICAgICAg
ICAgICA8YSBjbGFzcz0iYnV0dG9uIiBocmVmPSIvY29tbWl0L2luZm8/cmVwb3NpdG9yeV9pZD17
eyBjb21taXQucmVwb3NpdG9yeV9pZCB9fSZicmFuY2g9e3sgY29tbWl0LmJyYW5jaCB9fSZpZD17
eyBjb21taXQuaWQgfX0iPnt7IGNvbW1pdC5pZCB9fTwvYT4KLSAgICAgICAgICAgIDwvZGl2Pgot
ICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLTQiIHN0eWxlPSJ0ZXh0LWFsaWduOnJpZ2h0Ij4K
LSAgICAgICAgICAgICAgICA8YSBjbGFzcz0iYnV0dG9uIiBocmVmPSIvY29tbWl0L25leHQ/cmVw
b3NpdG9yeV9pZD17eyBjb21taXQucmVwb3NpdG9yeV9pZCB9fSZicmFuY2g9e3sgY29tbWl0LmJy
YW5jaCB9fSZpZD17eyBjb21taXQuaWQgfX0iPk5leHQg4pa2PC9hPgotICAgICAgICAgICAgPC9k
aXY+Ci0gICAgICAgIDwvZGl2PgotICAgICAgICA8ZGl2IGlkPSJjb21taXRUYWJsZSI+PC9kaXY+
Ci0gICAgPC9kaXY+Ci08L2Rpdj4KLQotPHNjcmlwdCB0eXBlPSJtb2R1bGUiPgotaW1wb3J0IHtD
b21taXRUYWJsZX0gZnJvbSAnL2Fzc2V0cy9qcy9jb21taXQuanMnOwotCi1mdW5jdGlvbiB1bmVz
Y2FwZUppbmphVGV4dCh0ZXh0KSB7Ci0gICAgcmV0dXJuIHRleHQucmVwbGFjZSgvJihbXjtdKyk7
L2csIGZ1bmN0aW9uKG1hdGNoLCBlbmNvZGVkKSB7Ci0gICAgICAgIHN3aXRjaCAoZW5jb2RlZCkg
ewotICAgICAgICBjYXNlICdhbXAnOgotICAgICAgICAgICAgcmV0dXJuICcmJzsKLSAgICAgICAg
Y2FzZSAnZ3QnOgotICAgICAgICAgICAgcmV0dXJuICc+JzsKLSAgICAgICAgY2FzZSAnbHQnOgot
ICAgICAgICAgICAgcmV0dXJuICc8JzsKLSAgICAgICAgY2FzZSAncXVvdCc6Ci0gICAgICAgICAg
ICByZXR1cm4gJyInOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgaWYgKGVuY29kZWRb
MF0gIT0gJyMnKQotICAgICAgICAgICAgICAgIHJldHVybiBlbmNvZGVkOwotICAgICAgICAgICAg
cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoZW5jb2RlZC5zdWJzdHIoMSkpOwotICAgICAgICB9
Ci0gICAgfSk7Ci19Ci0KLWxldCBjb21taXRzID0gWwoteyUgZm9yIGNvbW1pdCBpbiBjb21taXRz
ICV9ICAgIHsKLSAgICB7JSBmb3Iga2V5LCB2YWx1ZSBpbiBjb21taXQuaXRlbXMoKSAlfQotICAg
ICAgICB7eyBrZXkgfX06Ci0gICAgICAgIHslIGlmICdzdHInIGluIHZhbHVlLl9fY2xhc3NfXy5f
X25hbWVfXyAlfQotICAgICAgICAgICAgdW5lc2NhcGVKaW5qYVRleHQoJ3t7IHZhbHVlIHwgcmVw
bGFjZSgiXFwiLCAiXFxcXCIpIHwgcmVwbGFjZSgiXG4iLCAiXFxuIikgfX0nKQotICAgICAgICB7
JSBlbHNlICV9Ci0gICAgICAgICAgICB7eyB2YWx1ZSB9fQotICAgICAgICB7JSBlbmRpZiAlfSwK
LSAgICB7JSBlbmRmb3IgJX19LAoteyUgZW5kZm9yICV9XTsKLQotZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2NvbW1pdFRhYmxlJykuaW5uZXJIVE1MID0gQ29tbWl0VGFibGUoY29tbWl0cywge3sg
cmVwb3NpdG9yeXxzYWZlIH19KTsKLTwvc2NyaXB0PgoteyUgZW5kYmxvY2sgJX0KSW5kZXg6IFRv
b2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvdGVtcGxhdGVzL2NvbW1pdHMuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS92aWV3L3RlbXBsYXRl
cy9jb21taXRzLmh0bWwJKHJldmlzaW9uIDI2NTUzMSkKKysrIFRvb2xzL3Jlc3VsdHNkYnB5L3Jl
c3VsdHNkYnB5L3ZpZXcvdGVtcGxhdGVzL2NvbW1pdHMuaHRtbAkobm9uZXhpc3RlbnQpCkBAIC0x
LDEyMCArMCwwIEBACi08IS0tCi0gQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLQotIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIGFyZSBtZXQ6Ci0gMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLQotIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiAiQVMgSVMi
IEFORCBBTlkKLSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQotIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKLS0tPgotCi17JSBleHRlbmRzICJiYXNlLmh0bWwiICV9Ci17JSBibG9jayBoZWFk
ICV9Ci08bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJhc3NldHMv
Y3NzL2NvbW1pdC5jc3MiPgotCi08c2NyaXB0IHR5cGU9Im1vZHVsZSI+Ci1pbXBvcnQge1JFRiwg
RE9NfSBmcm9tICcvbGlicmFyeS9qcy9SZWYuanMnOwotaW1wb3J0IHtFcnJvckRpc3BsYXl9IGZy
b20gJy9hc3NldHMvanMvY29tbW9uLmpzJzsKLWltcG9ydCB7Q29tbWl0VGFibGV9IGZyb20gJy9h
c3NldHMvanMvY29tbWl0LmpzJzsKLWltcG9ydCB7RHJhd2VyLCBCcmFuY2hTZWxlY3RvciwgTGlt
aXRTbGlkZXJ9IGZyb20gJy9hc3NldHMvanMvZHJhd2VyLmpzJzsKLQotdmFyIG9uZUxpbmUgPSB0
cnVlOwotCi1jbGFzcyBUYWJsZSB7Ci0gICAgY29uc3RydWN0b3IoKSB7Ci0gICAgICAgIHRoaXMu
cmVmID0gUkVGLmNyZWF0ZVJlZih7Ci0gICAgICAgICAgICBzdGF0ZTogbnVsbCwKLSAgICAgICAg
ICAgIG9uU3RhdGVVcGRhdGU6IChlbGVtZW50LCBzdGF0ZSkgPT4gewotICAgICAgICAgICAgICAg
IGlmICghc3RhdGUpCi0gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuaW5uZXJIVE1MID0gdGhp
cy5wbGFjZWhvbGRlcigpOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKHN0YXRlLmVycm9yKQot
ICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmlubmVySFRNTCA9IEVycm9yRGlzcGxheShzdGF0
ZSk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBlbGVtZW50Lmlu
bmVySFRNTCA9IENvbW1pdFRhYmxlKHN0YXRlLCBbXSwgb25lTGluZSk7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0pOwotICAgICAgICB0aGlzLmxhdGVzdERpc3BhdGNoID0gMDsKLQotICAgICAg
ICB0aGlzLnJlbG9hZCgpOwotICAgIH0KLSAgICBwbGFjZWhvbGRlcigpIHsKLSAgICAgICAgcmV0
dXJuIGA8ZGl2IGNsYXNzPSJwbGFjZWhvbGRlciBkaW1tZXIiPgotICAgICAgICAgICAgICAgIDxk
aXYgY2xhc3M9ImxvYWRlciI+Ci0gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNwaW5u
ZXIiPjwvZGl2PgotICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPC9kaXY+YDsK
LSAgICB9Ci0gICAgdG9TdHJpbmcoKSB7Ci0gICAgICAgIHJldHVybiBgPGRpdiByZWY9IiR7dGhp
cy5yZWZ9Ij48L2Rpdj5gOwotICAgIH0KLSAgICByZWxvYWQoKSB7Ci0gICAgICAgIHZhciBxdWVy
eSA9IGRvY3VtZW50LlVSTC5zcGxpdCgnPycpWzFdCi0gICAgICAgIHZhciBteURpc3BhdGNoID0g
RGF0ZS5ub3coKTsKLSAgICAgICAgdGhpcy5sYXRlc3REaXNwYXRjaCA9IE1hdGgubWF4KHRoaXMu
bGF0ZXN0RGlzcGF0Y2gsIG15RGlzcGF0Y2gpOwotICAgICAgICB0aGlzLnJlZi5zZXRTdGF0ZShu
dWxsKTsKLQotICAgICAgICBmZXRjaChxdWVyeSA/ICdhcGkvY29tbWl0cz8nICsgcXVlcnkgOiAn
YXBpL2NvbW1pdHMnKS50aGVuKHJlc3BvbnNlID0+IHsKLSAgICAgICAgICAgIHJlc3BvbnNlLmpz
b24oKS50aGVuKGpzb24gPT4gewotICAgICAgICAgICAgICAgIGlmIChteURpc3BhdGNoID09IHRo
aXMubGF0ZXN0RGlzcGF0Y2gpCi0gICAgICAgICAgICAgICAgICAgIHRoaXMucmVmLnNldFN0YXRl
KGpzb24pOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0pLmNhdGNoKGVycm9yID0+IHsKLSAg
ICAgICAgICAgIGlmIChteURpc3BhdGNoID09IHRoaXMubGF0ZXN0RGlzcGF0Y2gpCi0gICAgICAg
ICAgICAgICAgdGhpcy5yZWYuc2V0U3RhdGUoe2Vycm9yOiAiQ29ubmVjdGlvbiBFcnJvciIsIGRl
c2NyaXB0aW9uOiBlcnJvcn0pOwotICAgICAgICB9KTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIE9u
ZUxpbmVTd2l0Y2goKSB7Ci0gICAgY29uc3Qgc3dpdGNoUmVmID0gUkVGLmNyZWF0ZVJlZih7Ci0g
ICAgICAgIG9uRWxlbWVudE1vdW50OiAoZWxlbWVudCkgPT4gewotICAgICAgICAgICAgZWxlbWVu
dC5vbmNoYW5nZSA9ICgpID0+IHsKLSAgICAgICAgICAgICAgICBvbmVMaW5lID0gZWxlbWVudC5j
aGVja2VkOwotICAgICAgICAgICAgICAgIHRhYmxlLnJlbG9hZCgpOwotICAgICAgICAgICAgfQot
ICAgICAgICB9LAotICAgIH0pOwotICAgIHJldHVybiBgPGRpdiBjbGFzcz0iaW5wdXQiPgotICAg
ICAgICAgICAgPGxhYmVsIHN0eWxlPSJjb2xvcjp2YXIoLS1pbnZlcnNlQ29sb3IpIj5PbmUtbGlu
ZTo8L2xhYmVsPgotICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJzd2l0Y2giPgotICAgICAgICAg
ICAgICAgIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgcmVmPSIke3N3aXRjaFJlZn0iIGNoZWNrZWQ9
JHtvbmVMaW5lfT4KLSAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2xpZGVyIj48L3NwYW4+
Ci0gICAgICAgICAgICA8L2xhYmVsPgotICAgICAgICA8L2Rpdj5gOwotfQotCi12YXIgdGFibGUg
PSBuZXcgVGFibGUoKTsKLURPTS5pbmplY3QoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FwcCcp
LCBgJHtEcmF3ZXIoWwotICAgIExpbWl0U2xpZGVyKCgpID0+IHt0YWJsZS5yZWxvYWQoKX0sIDEw
MDAwLCAxMDAwKSwKLSAgICBPbmVMaW5lU3dpdGNoKCksCi0gICAgQnJhbmNoU2VsZWN0b3IoKCkg
PT4ge3RhYmxlLnJlbG9hZCgpfSksCi1dKX0KLTxkaXYgY2xhc3M9Im1haW4gcmlnaHQtc2lkZWJh
ciB1bmRlci10b3BiYXItd2l0aC1hY3Rpb25zIj4KLSAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4k
e3RhYmxlfTwvZGl2PgotPC9kaXY+YCk7Ci0KLTwvc2NyaXB0PgotCi17JSBlbmRibG9jayAlfQot
eyUgYmxvY2sgY29udGVudCAlfQotCi08ZGl2IGlkPSJhcHAiPgotPC9kaXY+Ci0KLQoteyUgZW5k
YmxvY2sgJX0KSW5kZXg6IFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvdGVtcGxh
dGVzL2RvY3VtZW50YXRpb24uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9yZXN1bHRzZGJweS9y
ZXN1bHRzZGJweS92aWV3L3RlbXBsYXRlcy9kb2N1bWVudGF0aW9uLmh0bWwJKHJldmlzaW9uIDI2
NTUzMSkKKysrIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvdGVtcGxhdGVzL2Rv
Y3VtZW50YXRpb24uaHRtbAkobm9uZXhpc3RlbnQpCkBAIC0xLDYwMyArMCwwIEBACi08IS0tCi0g
Q29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLQotIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotIGFyZSBtZXQ6Ci0gMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLQotIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiAiQVMgSVMiIEFORCBBTlkKLSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQot
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCi0gQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKLSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLS0tPgoteyUgZXh0
ZW5kcyAiYmFzZS5odG1sIiAlfQoteyUgYmxvY2sgaGVhZCAlfQotCi08c2NyaXB0IHR5cGU9Im1v
ZHVsZSI+Ci0KLWltcG9ydCB7RE9NLCBSRUZ9IGZyb20gJy9saWJyYXJ5L2pzL1JlZi5qcyc7Ci1p
bXBvcnQge0V4cGVjdGF0aW9uc30gZnJvbSAnL2Fzc2V0cy9qcy90aW1lbGluZS5qcyc7Ci0KLWZ1
bmN0aW9uIGp1bXBJZFVuZGVySGVhZGVyKGlkKSB7Ci0gICAgcmV0dXJuIGA8ZGl2IHN0eWxlPSJw
b3NpdGlvbjpyZWxhdGl2ZSI+Ci0gICAgICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjphYnNv
bHV0ZTsgdG9wOi02MHB4OyB3aWR0aDowcHg7IiBpZD0iJHtpZC5yZXBsYWNlKC9ccy9nLCAnLScp
fSI+PC9kaXY+Ci0gICAgICAgIDwvZGl2PmA7Ci19Ci1mdW5jdGlvbiBjb2RlQmxvY2soc3RyaW5n
KSB7cmV0dXJuIGA8cHJlPjxjb2RlPiR7c3RyaW5nLnJlcGxhY2UoLzwvZywgIiZsdDsiKS5yZXBs
YWNlKC8+L2csICImZ3Q7Iil9PC9jb2RlPjwvcHJlPmA7fQotZnVuY3Rpb24gbG9jYWxMaW5rKGxp
bmtQYXJ0cywgdmFsdWUpIHtyZXR1cm4gYDxhIGhyZWY9IiMke2xpbmtQYXJ0cy5qb2luKCctJyku
cmVwbGFjZSgvXHMvZywgJy0nKX0iPiR7dmFsdWV9PC9hPmA7fQotZnVuY3Rpb24gZXh0ZXJuYWxM
aW5rKGxpbmssIHZhbHVlKSB7cmV0dXJuIGA8YSBocmVmPSIke2xpbmt9IiB0YXJnZXQ9Il9ibGFu
ayI+JHt2YWx1ZX08L2E+YDt9Ci1mdW5jdGlvbiBkb2N1bWVudEVuZHBvaW50KGVuZHBvaW50LCBh
Y3Rpb25zLCBxdWVyaWVzLCBkb2N1bWVudGF0aW9uKSB7Ci0gICAgcmV0dXJuIGA8ZGl2IGNsYXNz
PSJzZWN0aW9uIj4KLSAgICAgICAgICAgICR7anVtcElkVW5kZXJIZWFkZXIoYEFQSS0ke2VuZHBv
aW50fWApfQotICAgICAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGVyIj4KLSAgICAgICAgICAgICAg
ICA8ZGl2IGNsYXNzPSJ0aXRsZSI+JHtlbmRwb2ludH08L2Rpdj4KLSAgICAgICAgICAgICAgICA8
ZGl2IGNsYXNzPSJhY3Rpb25zIj4KLSAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGlz
dCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAke2FjdGlvbnMubWFwKChhY3Rpb24pID0+IHty
ZXR1cm4gYDxkaXYgY2xhc3M9Iml0ZW0iPiR7YWN0aW9ufTwvZGl2PmA7fSkuam9pbignJyl9Ci0g
ICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAg
ICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAke2RvY3VtZW50YXRpb24ubWFwKChpdGVtKSA9PiB7
cmV0dXJuIGA8ZGl2IGNsYXNzPSJjb250ZW50Ij4ke2l0ZW19PC9kaXY+YDt9KS5qb2luKCcnKX0K
LSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiPgotICAgICAgICAgICAgICAgIFN1cHBv
cnRlZCBQYXJhbWV0ZXJzCi0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9ucyI+Ci0g
ICAgICAgICAgICAgICAgICAgICR7cXVlcmllcy5tYXAoKHF1ZXJ5KSA9PiB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gYDxkaXYgY2xhc3M9ImJhZGdlIj4KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dCBibG9jayI+Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0idGV4dCB0aW55IiBocmVmPSIjUXVlcnkt
UGFyYW1ldGVycy0ke3F1ZXJ5fSI+JHtxdWVyeX08L2E+Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PmA7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAvL3JldHVybiBgPGJ1dHRvbiBjbGFzcz0iYnV0dG9uIiBv
bmNsaWNrPSJ3aW5kb3cubG9jYXRpb24uaHJlZiA9ICcvZG9jdW1lbnRhdGlvbiNRdWVyeS1QYXJh
bWV0ZXJzLSR7cXVlcnl9JzsiPiR7cXVlcnl9PC9idXR0b24+YAotICAgICAgICAgICAgICAgICAg
ICB9KS5qb2luKCcnKX0KLSAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDwvZGl2
PgotICAgICAgICA8L2Rpdj5gOwotfQotCi1jb25zdCBkb2N1bWVudGF0aW9uID0gewotICAgICdB
UEknOiB7Ci0gICAgICAgICdDb21taXRzJzogWwotICAgICAgICAgICAgYENvbW1pdCBlbmRwb2lu
dHMgYWxsb3cgY29tbWl0cywgZnJvbSBtdWx0aXBsZSByZXBvc2l0b3JpZXMsIHRvIGJlIHF1ZXJp
ZWQuIFRoZXNlIGNvbW1pdHMgYXJlIHNvcnRlZCBieSAke2xvY2FsTGluayhbJ1F1ZXJ5IFBhcmFt
ZXRlcnMnLCAnVVVJRCddLCAnVVVJRCcpfSwgd2hpY2ggaXMgYSBjb21iaW5hdGlvbiBvZiB0aGUg
Y29tbWl0IHRpbWVzdGFtcCBhbmQgdGhlIGNvbW1pdCBvcmRlci4gQ29tbWl0IG9yZGVyIGlzIGRl
ZmluZWQgYXMgYSBjb21taXQncyBvcmRpbmcgd2l0aGluIGEgc3BlY2lmaWMgdGltZXN0YW1wLiBN
b3N0IGNvbW1pdHMgaGF2ZSBhbiBvcmRlciBvZiAnMCcsIHVubGVzcyB0aGV5IGFyZSBwYXJ0IG9m
IGEgcGF0Y2ggc2VyaWVzIHdoaWNoIHdhcyBsYW5kZWQgYXQgZXhhY3RseSB0aGUgc2FtZSB0aW1l
c3RhbXAuICR7bG9jYWxMaW5rKFsnUXVlcnkgUGFyYW1ldGVycycsICdVVUlEJ10sICdVVUlEJyl9
J3MgYWxsb3cgY29tbWl0cyB0byBiZSB0cmFuc3BhcmVudGx5IHNvcnRlZCBldmVuIGlmIHRoZXkg
YXJlIGluIGRpZmZlcmVudCByZXBvc2l0b3JpZXMuIENvbW1pdHMgYXJlIHJlcHJlc2VudGVkIGFz
IG9iamVjdHMgd2l0aGluIHRoZSByZXN1bHRzIGRhdGFiYXNlLCBhbmQgYWxsIGVuZHBvaW50cyB3
aGljaCByZXR1cm4gY29tbWl0cyB3aWxsIHJlcHJlc2VudCBjb21taXRzIGxpa2UgdGhpczpgLAot
ICAgICAgICAgICAgY29kZUJsb2NrKCd7XG4nICsgCi0gICAgICAgICAgICAgICAgJyAgICAicmVw
b3NpdG9yeV9pZCI6IDxzdHJpbmcgcmVwcmVzZW50aW5nIHJlcG9zaXRvcnkgaWRlbnRpZmllcj4s
XG4nICsKLSAgICAgICAgICAgICAgICAnICAgICJicmFuY2giOiA8YnJhbmNoIGNvbW1pdCBpcyBy
ZWdpc3RlcmVkIG9uPixcbicgKwotICAgICAgICAgICAgICAgICcgICAgImlkIjogPGdpdCBoYXNo
IG9yIHN2biByZXZpc2lvbj4sXG4nICsKLSAgICAgICAgICAgICAgICAnICAgICJ0aW1lc3RhbXAi
OiA8aW50ZWdlciBVVEMgdGltZXN0YW1wIHdoZW4gY29tbWl0IHdhcyBjb21taXR0ZWQ+LFxuJyAr
Ci0gICAgICAgICAgICAgICAgJyAgICAib3JkZXIiOiA8b3JkZXIgb2YgY29tbWl0IHdpdGhpbiBw
YXRjaCBzZXJpZXM+LFxuJyArCi0gICAgICAgICAgICAgICAgJyAgICAiY29tbWl0dGVyIjogPHBl
cnNvbiB3aG8gY29tbWl0dGVkIHRoZSBjaGFuZ2U+LFxuJyArCi0gICAgICAgICAgICAgICAgJyAg
ICAibWVzc2FnZSI6IDxjb21taXQgbWVzc2FnZSBvciBjaGFuZ2Vsb2cgYXNzb2NpYXRlZCB3aXRo
IGNvbW1pdD5cbicgKwotICAgICAgICAgICAgICAgICd9JyksCi0gICAgICAgICAgICBkb2N1bWVu
dEVuZHBvaW50KAotICAgICAgICAgICAgICAgICcvYXBpL2NvbW1pdHMnLAotICAgICAgICAgICAg
ICAgIFsnR0VUJywgJ1BPU1QnXSwKLSAgICAgICAgICAgICAgICBbJ0JyYW5jaCcsICdMaW1pdCcs
ICdSZXBvc2l0b3J5JywgJ1VVSUQnXSwKLSAgICAgICAgICAgICAgICBbYEVuZHBvaW50IGZvciBm
aW5kaW5nIGFuZCByZWdpc3RlcmluZyBjb21taXRzLiBUaGUgR0VUIGJlaGF2aW9yIGlzIGlkZW50
aWNhbCB0byAke2xvY2FsTGluayhbJ0FQSScsICcvYXBpL2NvbW1pdHMvZmluZCddLCAnL2FwaS9j
b21taXRzL2ZpbmQnKX0uIFRoZSBQT1NUIGJlaGF2aW9yIGlzIGlkZW50aWNhbCB0byAke2xvY2Fs
TGluayhbJ0FQSScsICcvY29tbWl0cy9yZWdpc3RlciddLCAnL2NvbW1pdHMvcmVnaXN0ZXInKX0u
YF0sCi0gICAgICAgICAgICApLAotICAgICAgICAgICAgZG9jdW1lbnRFbmRwb2ludCgKLSAgICAg
ICAgICAgICAgICAnL2FwaS9jb21taXRzL2ZpbmQnLAotICAgICAgICAgICAgICAgIFsnR0VUJ10s
Ci0gICAgICAgICAgICAgICAgWydCcmFuY2gnLCAnTGltaXQnLCAnUmVwb3NpdG9yeScsICdVVUlE
J10sCi0gICAgICAgICAgICAgICAgW2BSZXR1cm4gYSBsaXN0IG9mICR7bG9jYWxMaW5rKFsnQVBJ
JywgJ0NvbW1pdHMnXSwgJ2NvbW1pdCBvYmplY3RzJyl9IHNhdGlzZnlpbmcgdGhlIHF1ZXJ5LiBU
aGlzIGxpc3Qgd2lsbCBiZSBvcmRlcmVkLCB3aXRoIHRoZSBvbGRlc3QgY29tbWl0IGZpcnN0IGFu
ZCB0aGUgbmV3ZXN0IGxhc3QuYF0sCi0gICAgICAgICAgICApLAotICAgICAgICAgICAgZG9jdW1l
bnRFbmRwb2ludCgKLSAgICAgICAgICAgICAgICAnL2FwaS9jb21taXRzL3JlcG9zaXRvcmllcycs
Ci0gICAgICAgICAgICAgICAgWydHRVQnXSwKLSAgICAgICAgICAgICAgICBbXSwKLSAgICAgICAg
ICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAgIGBSZXR1cm4gYSBsaXN0IG9mIHJlcG9zaXRv
cmllcyB0cmFja2VkIGJ5IHRoaXMgaW5zdGFuY2UgdG8gdGhlIHJlc3VsdHMgZGF0YWJhc2UuIFRo
ZSBvdXRwdXQgaXMgb2YgdGhlIGZvcm06YCwKLSAgICAgICAgICAgICAgICAgICAgY29kZUJsb2Nr
KCdbXG4nICsKLSAgICAgICAgICAgICAgICAgICAgJyAgICA8cmVwb3NpdG9yeS1pZCAoYSk+LFxu
JyArCi0gICAgICAgICAgICAgICAgICAgICcgICAgPHJlcG9zaXRvcnktaWQgKGIpPlxuJyArCi0g
ICAgICAgICAgICAgICAgICAgICddJyksCi0gICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAg
ICksCi0gICAgICAgICAgICBkb2N1bWVudEVuZHBvaW50KAotICAgICAgICAgICAgICAgICcvYXBp
L2NvbW1pdHMvYnJhbmNoZXMnLAotICAgICAgICAgICAgICAgIFsnR0VUJ10sCi0gICAgICAgICAg
ICAgICAgWydMaW1pdCcsICdSZXBvc2l0b3J5J10sCi0gICAgICAgICAgICAgICAgWwotICAgICAg
ICAgICAgICAgICAgICBgUmV0dXJucyBhIGRpY3Rpb25hcnkgb2YgbGlzdHMgb2YgYnJhbmNoZXMg
YXNzb2NpYXRlZCB3aXRoIGVhY2ggcmVwb3NpdG9yeS4gVGhlIG91dHB1dCBpcyBvZiB0aGUgZm9y
bTpgLAotICAgICAgICAgICAgICAgICAgICBjb2RlQmxvY2soJ3tcbicgKwotICAgICAgICAgICAg
ICAgICAgICAnICAgIDxyZXBvc2l0b3J5LWlkIChhKT46IFsibWFzdGVyIiwgImJyYW5jaC1hIiwg
ImJyYW5jaC1iIl0sXG4nICsKLSAgICAgICAgICAgICAgICAgICAgJyAgICA8cmVwb3NpdG9yeS1p
ZCAoYik+OiBbInRydW5rIiwgImJyYW5jaC1hIiwgImJyYW5jaC1jIl1cbicgKwotICAgICAgICAg
ICAgICAgICAgICAnfScpLAotICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICApLAotICAg
ICAgICAgICAgZG9jdW1lbnRFbmRwb2ludCgKLSAgICAgICAgICAgICAgICAnL2FwaS9jb21taXRz
L3NpYmxpbmdzJywKLSAgICAgICAgICAgICAgICBbJ0dFVCddLAotICAgICAgICAgICAgICAgIFsn
QnJhbmNoJywgJ1JlcG9zaXRvcnknLCAnVVVJRCddLAotICAgICAgICAgICAgICAgIFsKLSAgICAg
ICAgICAgICAgICAgICAgYFdpdGggbXVsdGlwbGUgcmVwb3NpdG9yaWVzLCBldmVyeSBjb21taXQg
aGFzIGEgbGVhc3QgMSBvdGhlciBjb21taXQgd2hpY2ggd2FzIHRoZSB0aXAgb2YgdGhlIHRyZWUg
b24gdGhlIG90aGVyIHJlcG9zaXRvcnkgKG9yIHJlcG9zaXRvcmllcykgd2hpbGUgdGhlIHByaW1h
cnkgY29tbWl0IHdhcyB0aGUgdGlwIG9mIGl0J3MgcmVwb3NpdG9yeS4gV2UgcmVmZXIgdG8gdGhl
c2UgY29tbWl0cyBhcyB0aGUgJ3NpYmxpbmcnIGNvbW1pdHMuIEdpdmVuIGEgcXVlcnkgd2hpY2gg
cmVmZXJzIHRvIGEgc2luZ2xlIGNvbW1pdCwgdGhpcyBlbmRwb2ludCB3aWxsIHJldHVybiBhbGwg
c2libGluZyBjb21taXRzIGFzc29jaWF0ZWQgd2l0aCB0aGF0IGNvbW1pdC4gVGhlIHJlc3VsdCB3
aWxsIGJlIGEgZGljdGlvbmFyeSBvZiBsaXN0cyBmb3JtYXRlZCBsaWtlIHRoaXM6YCwKLSAgICAg
ICAgICAgICAgICAgICAgY29kZUJsb2NrKCd7XG4nICsgCi0gICAgICAgICAgICAgICAgICAgICcg
ICAgPHJlcG9zaXRvcnktaWQgKGEpPjogWzxjb21taXQtYTI+LCA8Y29tbWl0LWExPl0sXG4nICsK
LSAgICAgICAgICAgICAgICAgICAgJyAgICA8cmVwb3NpdG9yeS1pZCAoYik+OiBbPGNvbW1pdC1i
Mj4sIDxjb21taXQtYjE+XVxuJyArCi0gICAgICAgICAgICAgICAgICAgICd9JyksCi0gICAgICAg
ICAgICAgICAgICAgIGBXaGVyZSAmbHRjb21taXQtKiZndCBhcmUgJHtsb2NhbExpbmsoWydBUEkn
LCAnQ29tbWl0cyddLCAnY29tbWl0IG9iamVjdHMnKX0uIFRoZXNlIGxpc3RzIGFyZSBzb3J0ZWQs
IHdpdGggdGhlIGZpcnN0IGNvbW1pdCBpbiB0aGUgbGlzdCBiZWluZyB0aGUgbGF0ZXN0IGFuZCB0
aGUgbGFzdCBjb21taXQgaW4gdGhlIGxpc3QgYmVpbmcgdGhlIG9sZGVzdC4gTm90ZSB0aGF0IHdo
aWxlIHRoZSBzaWJsaW5nIGVuZHBvaW50IGFjY2VwdHMgdGhlIHN0YW5kYXJkICR7bG9jYWxMaW5r
KFsnUXVlcnkgUGFyYW1ldGVycycsICdVVUlEJ10sICdVVUlEJyl9IHF1ZXJ5IHBhcmFtZXRlcnMs
IHRoaXMgZW5kcG9pbnQgd2lsbCByZXR1cm4gYW4gZXJyb3IgaWYgdGhlIHF1ZXJ5IHBhcmFtZXRl
cnMgcmVmZXIgdG8gbXVsdGlwbGUgY29tbWl0c2AsCi0gICAgICAgICAgICAgICAgXSwKLSAgICAg
ICAgICAgICksCi0gICAgICAgICAgICBkb2N1bWVudEVuZHBvaW50KAotICAgICAgICAgICAgICAg
ICcvYXBpL2NvbW1pdHMvbmV4dCcsCi0gICAgICAgICAgICAgICAgWydHRVQnXSwKLSAgICAgICAg
ICAgICAgICBbJ0JyYW5jaCcsICdSZXBvc2l0b3J5JywgJ1VVSUQnXSwKLSAgICAgICAgICAgICAg
ICBbYFJldHVybiBhIGxpc3QgY29udGFpbmluZyBhIHNpbmdsZSAke2xvY2FsTGluayhbJ0FQSScs
ICdDb21taXRzJ10sICdjb21taXQgb2JqZWN0cycpfSB3aGljaCBvY2N1cnJlZCBpbWllZGlhdGVs
eSBhZnRlciB0aGUgY29tbWl0IHNwZWNpZmllZCBieSB0aGUgcHJvdmlkZWQgcXVlcnkuIE5vdGUg
dGhhdCB3aGlsZSB0aGUgbmV4dCBlbmRwb2ludCBhY2NlcHRzIHRoZSBzdGFuZGFyZCAke2xvY2Fs
TGluayhbJ1F1ZXJ5IFBhcmFtZXRlcnMnLCAnVVVJRCddLCAnVVVJRCcpfSBxdWVyeSBwYXJhbWV0
ZXJzLCB0aGlzIGVuZHBvaW50IHdpbGwgcmV0dXJuIGFuIGVycm9yIGlmIHRoZSBxdWVyeSBwYXJh
bWV0ZXJzIHJlZmVyIHRvIG11bHRpcGxlIGNvbW1pdHNgXSwKLSAgICAgICAgICAgICksCi0gICAg
ICAgICAgICBkb2N1bWVudEVuZHBvaW50KAotICAgICAgICAgICAgICAgICcvYXBpL2NvbW1pdHMv
cHJldmlvdXMnLAotICAgICAgICAgICAgICAgIFsnR0VUJ10sCi0gICAgICAgICAgICAgICAgWydC
cmFuY2gnLCAnUmVwb3NpdG9yeScsICdVVUlEJ10sCi0gICAgICAgICAgICAgICAgW2BSZXR1cm4g
YSBsaXN0IGNvbnRhaW5pbmcgYSBzaW5nbGUgJHtsb2NhbExpbmsoWydBUEknLCAnQ29tbWl0cydd
LCAnY29tbWl0IG9iamVjdHMnKX0gd2hpY2ggb2NjdXJyZWQgaW1pZWRpYXRlbHkgYmVmb3JlIHRo
ZSBjb21taXQgc3BlY2lmaWVkIGJ5IHRoZSBwcm92aWRlZCBxdWVyeS4gTm90ZSB0aGF0IHdoaWxl
IHRoZSBwcmV2aW91cyBlbmRwb2ludCBhY2NlcHRzIHRoZSBzdGFuZGFyZCAke2xvY2FsTGluayhb
J1F1ZXJ5IFBhcmFtZXRlcnMnLCAnVVVJRCddLCAnVVVJRCcpfSBxdWVyeSBwYXJhbWV0ZXJzLCB0
aGlzIGVuZHBvaW50IHdpbGwgcmV0dXJuIGFuIGVycm9yIGlmIHRoZSBxdWVyeSBwYXJhbWV0ZXJz
IHJlZmVyIHRvIG11bHRpcGxlIGNvbW1pdHNgXSwKLSAgICAgICAgICAgICksCi0gICAgICAgICAg
ICBkb2N1bWVudEVuZHBvaW50KAotICAgICAgICAgICAgICAgICcvYXBpL2NvbW1pdHMvcmVnaXN0
ZXInLAotICAgICAgICAgICAgICAgIFsnUE9TVCddLAotICAgICAgICAgICAgICAgIFsnQnJhbmNo
JywgJ1JlcG9zaXRvcnknXSwKLSAgICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAg
IGBSZWdpc3RlciBhIHNpbmdsZSBjb21taXQgaW4gdGhlIHJlc3VsdHMgZGF0YWJhc2UuIFRoaXMg
Y29tbWl0IG11c3QgYmUgYXNzb2NpYXRlZCB3aXRoIGEgcmVwb3NpdG9yeSBhbHJlYWR5IGtub3du
IGJ5IHRoZSByZXN1bHRzIGRhdGFiYXNlLiBXaGlsZSBhICR7bG9jYWxMaW5rKFsnQVBJJywgJ0Nv
bW1pdHMnXSwgJ2NvbW1pdCBvYmplY3RzJyl9IGNhbiBiZSB1cGxvYWRlZCB0byB0aGlzIGVuZHBv
aW50LCBpdCBpcyByZWNvbW1lbmRlZCB0aGF0IHRoZSByZWdpc3RyYXRpb24gb2YgY29tbWl0cyBv
dXRzaWRlIG9mIGF1dG9tYXRpb24gYWxsb3cgdGhlIHJlc3VsdHMgZGF0YWJhc2UgdG8gbGV2ZXJh
Z2UgeW91ciBzb3VyY2UgY29udHJvbCdzIEFQSS4gU3VjaCBhIHJlcXVlc3QgbG9va3MgbGlrZSB0
aGlzYCwKLSAgICAgICAgICAgICAgICAgICAgY29kZUJsb2NrKCcvYXBpL2NvbW1pdHMvcmVnaXN0
ZXI/cmVwb3NpdG9yeV9pZD13ZWJraXQmYnJhbmNoPXRydW5rJmlkPTI0NzM1NScpLAotICAgICAg
ICAgICAgICAgICAgICBgTW9yZSBnZW5lcmFsbHksIGFueSBkZWZpbml0aW9uIG9mIGEgY29tbWl0
IHdoaWNoIGRlZmluZXMgdGhlIHJlcG9zaXRvcnlfaWQsIGlkIGFuZCBicmFuY2ggcHJvdmlkZXMg
ZW5vdWdoIGluZm9ybWF0aW9uIGZvciB0aGUgcmVzdWx0cyBkYXRhYmFzZSB0byBxdWVyeSB5b3Vy
IHNvdXJjZSBjb250cm9sJ3MgQVBJIGFuZCByZXRyZWl2ZSBjb21taXQgaW5mb3JtYXRpb24uYCwK
LSAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgKSwKLSAgICAgICAgICAgIGRvY3VtZW50
RW5kcG9pbnQoCi0gICAgICAgICAgICAgICAgJy9jb21taXRzL2luZm8nLAotICAgICAgICAgICAg
ICAgIFsnR0VUJ10sCi0gICAgICAgICAgICAgICAgWydCcmFuY2gnLCAnUmVwb3NpdG9yeScsICdV
VUlEJ10sCi0gICAgICAgICAgICAgICAgW2BSZWRpcmVjdCB0byB0aGUgc291cmNlLWNvbnRyb2wg
VVJMIHdpdGggbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc3BlY2lmaWVkIGNvbW1pdC4gTm90
ZSB0aGF0IHdoaWxlIHRoZSBpbmZvIGVuZHBvaW50IGFjY2VwdHMgdGhlIHN0YW5kYXJkICR7bG9j
YWxMaW5rKFsnUXVlcnkgUGFyYW1ldGVycycsICdVVUlEJ10sICdVVUlEJyl9IHF1ZXJ5IHBhcmFt
ZXRlcnMsIHRoaXMgZW5kcG9pbnQgd2lsbCByZXR1cm4gYW4gZXJyb3IgaWYgdGhlIHF1ZXJ5IHBh
cmFtZXRlcnMgcmVmZXIgdG8gbXVsdGlwbGUgY29tbWl0c2BdLAotICAgICAgICAgICAgKSwKLSAg
ICAgICAgXSwgJ1VwbG9hZHMnOiBbCi0gICAgICAgICAgICBgVXBsb2FkcyBhcmUgdGhlIGlucHV0
IHRvIHRoZSByZXN1bHRzIGRhdGFiYXNlLiBVcGxvYWRzIGFyZSBzb3J0ZWQgYnkgJHtsb2NhbExp
bmsoWydRdWVyeSBQYXJhbWV0ZXJzJywgJ0NvbmZpZ3VyYXRpb24nXSwgJ2NvbmZpZ3VyYXRpb24n
KX0gYW5kICR7bG9jYWxMaW5rKFsnUXVlcnkgUGFyYW1ldGVycycsICdVVUlEJ10sICdVVUlEJyl9
LiBVcGxvYWRzIGFyZSBqc29uIGRpY3Rpb25hcmllcyBvcmdhbml6ZWQgaW4gYSAke2V4dGVybmFs
TGluaygnaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVHJpZScsICd0cmllJyl9LCB3aGlj
aCBsb29rcyBsaWtlIHRoaXM6YCwKLSAgICAgICAgICAgIGNvZGVCbG9jaygne1xuJyArCi0gICAg
ICAgICAgICAgICAgICAgICcgICAgImNvbW1pdHMiOiBbPGNvbW1pdC1hPiwgPGNvbW1pdC1iPl0s
XG4nICsKLSAgICAgICAgICAgICAgICAgICAgJyAgICAiY29uZmlndXJhdGlvbiI6IDxjb25maWd1
cmF0aW9uLW9iamVjdD4sXG4nICsKLSAgICAgICAgICAgICAgICAgICAgJyAgICAic3VpdGUiOiA8
c3VpdGU+LFxuJyArCi0gICAgICAgICAgICAgICAgICAgICcgICAgInRpbWVzdGFtcCI6IDxVVEMg
dGltZXN0YW1wIG9mIHRlc3QgcnVuPixcbicgKwotICAgICAgICAgICAgICAgICAgICAnICAgICJ0
ZXN0X3Jlc3VsdHMiOiB7XG4nICsKLSAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgImRldGFp
bHMiOiB7XG4nICsKLSAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgICJidWlsZC1udW1i
ZXIiOiAiNTI4NSIsXG4nICsKLSAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgICJidWls
ZGJvdC1tYXN0ZXIiOiAiYnVpbGQud2Via2l0Lm9yZyIsXG4nICsKLSAgICAgICAgICAgICAgICAg
ICAgJyAgICAgICAgICAgICJidWlsZGJvdC13b3JrZXIiOiAiYm90MTk4IixcbicgKwotICAgICAg
ICAgICAgICAgICAgICAnICAgICAgICAgICAgImJ1aWxkZXItbmFtZSI6ICJBcHBsZS1Nb2phdmUt
UmVsZWFzZS1XSzIiXG4nICsKLSAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgfSxcbicgKwot
ICAgICAgICAgICAgICAgICAgICAnICAgICAgICAicnVuX3N0YXRzIjoge1xuJyArCi0gICAgICAg
ICAgICAgICAgICAgICcgICAgICAgICAgICAic3RhcnRfdGltZSI6IDxVVEMgdGltZXN0YW1wIHRl
c3QgcnVuIHN0YXJ0ZWQ+LFxuJyArCi0gICAgICAgICAgICAgICAgICAgICcgICAgICAgICAgICAi
ZW5kX3RpbWUiOiA8VVRDIHRpbWVzdGFtcCB0ZXN0IHJ1biBlbmRlZD4sXG4nICsKLSAgICAgICAg
ICAgICAgICAgICAgJyAgICAgICAgICAgICJ0ZXN0c19za2lwcGVkIjogPE51bWJlciBvZiB0ZXN0
cyBub3QgcnVuPlxuJyArCi0gICAgICAgICAgICAgICAgICAgICcgICAgICAgIH0sXG4nICsKLSAg
ICAgICAgICAgICAgICAgICAgJyAgICAgICAgInJlc3VsdHMiOiB7XG4nICsKLSAgICAgICAgICAg
ICAgICAgICAgJyAgICAgICAgICAgICJkaXItYSI6IHtcbicgKwotICAgICAgICAgICAgICAgICAg
ICAnICAgICAgICAgICAgICAgICJkaXItYiI6IHtcbicgKwotICAgICAgICAgICAgICAgICAgICAn
ICAgICAgICAgICAgICAgICAgICAidGVzdC0xIjogeyJhY3R1YWwiOiAiRkFJTCJ9LFxuJyArCi0g
ICAgICAgICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgICJ0ZXN0LTIiOiB7fVxuJyAr
Ci0gICAgICAgICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgfSxcbicgKwotICAgICAgICAg
ICAgICAgICAgICAnICAgICAgICAgICAgICAgICJ0ZXN0LTMiOiB7ImFjdHVhbCI6ICJUSU1FT1VU
IiwgImV4cGVjdGVkIjogIlRJTUVPVVQifVxuJyArCi0gICAgICAgICAgICAgICAgICAgICcgICAg
ICAgICAgICB9LFxuJyArCi0gICAgICAgICAgICAgICAgICAgICcgICAgICAgICAgICAiZGlyLWMi
OiB7XG4nICsKLSAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgICAgICAidGVzdC00Ijog
eyJhY3R1YWwiOiAiQ1JBU0giLCAiZXhwZWN0ZWQiOiAiRkFJTCJ9XG4nICsKLSAgICAgICAgICAg
ICAgICAgICAgJyAgICAgICAgICAgIH1cbicgKwotICAgICAgICAgICAgICAgICAgICAnICAgICAg
ICB9XG4nICsKLSAgICAgICAgICAgICAgICAgICAgJyAgICB9XG4nICsKLSAgICAgICAgICAgICAg
ICAgICAgJ30nKSwKLSAgICAgICAgICAgIGB3aGVyZSAmbHRjb21taXQtYSZndCBhbmQgJmx0Y29t
bWl0LWImZ3QgYXJlIGJvdGggJHtsb2NhbExpbmsoWydBUEknLCAnQ29tbWl0J10sICdjb21taXQg
b2JqZWN0cycpfSBhbmQgJmx0Y29uZmlndXJhdGlvbi1vYmplY3QmZ3QgaXMgYSAke2xvY2FsTGlu
ayhbJ1F1ZXJ5IFBhcmFtZXRlcnMnLCAnQ29uZmlndXJhdGlvbiddLCAnY29uZmlndXJhdGlvbiBv
YmplY3QnKX0uIFRoZSAnZGV0YWlscycgZGljdGlvbmFyeSBjb250YWlucyBpbmZvcm1hdGlvbiBu
ZWVkZWQgdG8gbGluayBhIHNwZWNpZmljIHVwbG9hZCB0byBhIHJ1biBpbnNpZGUgYSAke2xvY2Fs
TGluayhbJ0FQSScsICdDSSBMaW5rcyddLCAnY29udGludW91cyBpbnRlZ3JhdGlvbicpfSBzeXN0
ZW0uIEFsbCB0ZXN0IHJlc3VsdCBpbmZvcm1hdGlvbiBpcyBkZXJpdmVkIGRpcmVjdGx5IGZyb20g
dXBsb2Fkcy5gLAotICAgICAgICAgICAgZG9jdW1lbnRFbmRwb2ludCgKLSAgICAgICAgICAgICAg
ICAnL2FwaS91cGxvYWQnLAotICAgICAgICAgICAgICAgIFsnR0VUJywgJ1BPU1QnXSwKLSAgICAg
ICAgICAgICAgICBbJ0JyYW5jaCcsICdDb25maWd1cmF0aW9uJywgJ0xpbWl0JywgJ1JlcG9zaXRv
cnknLCAnU3VpdGUnLCAnVVVJRCddLAotICAgICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAg
ICAgICAgYEdFVCByZXF1ZXN0cyBhZ2FpbnN0IHRoZSB1cGxvYWQgZW5kcG9pbnQgd2lsbCByZXR1
cm4gYSBsaXN0IG9mICR7bG9jYWxMaW5rKFsnQVBJJywgJ1VwbG9hZHMnXSwgJ3VwbG9hZCBvYmpl
Y3RzJyl9LiBUaGlzIGVuZHBvaW50IGNhbiBiZSB1c2VkIHRvIHRyYW5zZmVyIHJlc3VsdHMgZnJv
bSBvbmUgcmVzdWx0cyBkYXRhYmFzZSB0byBhbm90aGVyLCB3aGljaCBpcyBlc3BlY2lhbGx5IHVz
ZWZ1bCBmb3IgdGVzdGluZ2AsCi0gICAgICAgICAgICAgICAgICAgIGBQT1NUIHJlcXVlc3RzIGFn
YWluc3QgdGhlIHVwbG9hZCBlbmRwb2ludCB3aWxsIHRha2UgdGhlIHVwbG9hZGVkIGZpbGUsIGFu
ZCBwYXJzZSBpdCBhcyBqc29uLCBleHBlY3RpbmcgYW4gJHtsb2NhbExpbmsoWydBUEknLCAnVXBs
b2FkcyddLCAndXBsb2FkIG9iamVjdCcpfS4gVXBsb2FkaW5nIHJlc3VsdHMgd2lsbCByZWdpc3Rl
ciB0aGUgY29tbWl0cyBhc3NvY2lhdGVkIHdpdGggdGhvc2UgcmVzdWx0cyBhbmQgJHtsb2NhbExp
bmsoWydBUEknLCAnL2FwaS91cGxvYWQvcHJvY2VzcyddLCAncHJvY2VzcyB0aGUgcmVzdWx0Jyl9
LiBOb3RlIHRoYXQgdGhlIFBPU1QgZW5kcG9pbnQgZG9lcyBub3QgYWNjZXB0IGFueSBxdWVyeSBw
YXJhbXRlcnMuYCwKLSAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgKSwKLSAgICAgICAg
ICAgIGRvY3VtZW50RW5kcG9pbnQoCi0gICAgICAgICAgICAgICAgJy9hcGkvdXBsb2FkL3Byb2Nl
c3MnLAotICAgICAgICAgICAgICAgIFsnUE9TVCddLAotICAgICAgICAgICAgICAgIFsnQnJhbmNo
JywgJ0NvbmZpZ3VyYXRpb24nLCAnTGltaXQnLCAnUmVwb3NpdG9yeScsICdTdWl0ZScsICdVVUlE
J10sCi0gICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICAgICBgRXZlcnkgdXBsb2Fk
IG11c3QgYmUgcHJvY2Vzc2VkLCB0byBjcmVhdGUgaW5kaXZpZHVhbCBkYXRhYmFzZSBlbnRyaWVz
IGZvciBlYWNoIHRlc3QgcmVzdWx0LiBUaGUgcmVzdWx0cyBkYXRhYmFzZSBjb25jZXB0dWFsbHkg
c2VwZXJhdGVzIHRoaXMgcHJvY2Vzc2luZyBzbyB0aGF0IHVwbG9hZHMgY2FuIGJlIHJlcHJvY2Vz
c2VkIGJ5IGEgUE9TVCByZXF1ZXN0IHRvIHRoaXMgZW5kcG9pbnQuIFRoZSBwYXJhbWV0ZXJzIHRv
IHRoaXMgZW5kcG9pbnQgc2hvdWxkIGJlIHRoZSBzYW1lIHBhcmFtZXRlcnMgeW91IHdvdWxkIHNl
bmQgdG8gdGhlICR7bG9jYWxMaW5rKFsnQVBJJywgJy9hcGkvdXBsb2FkJ10sICcvYXBpL3VwbG9h
ZCcpfSBlbmRwb2ludC5gLAotICAgICAgICAgICAgICAgICAgICBgVGhpcyBlbmRwb2ludCB3aWxs
IHF1ZXVlIHRoZSBwcm9jZXNzaW5nIGFuZCByZXR1cm4gYmVmb3JlIHRoZSBwcm9jZXNzaW5nIGhh
cyBiZWVuIGNvbXBsZXRlZCBhbmQgd2lsbCByZXR1cm4gYSBsaXN0IG9mIGRpY3Rpb25hcmllcyBs
b29raW5nIGxpa2UgdGhpczpgLAotICAgICAgICAgICAgICAgICAgICBjb2RlQmxvY2soJ3tcbicg
KwotICAgICAgICAgICAgICAgICAgICAnICAgICJjb21taXRzIjogWzxjb21taXQtYT4sIDxjb21t
aXQtYj5dLFxuJyArCi0gICAgICAgICAgICAgICAgICAgICcgICAgImNvbmZpZ3VyYXRpb24iOiA8
Y29uZmlndXJhdGlvbi1vYmplY3Q+LFxuJyArCi0gICAgICAgICAgICAgICAgICAgICcgICAgInN1
aXRlIjogPHN1aXRlPixcbicgKwotICAgICAgICAgICAgICAgICAgICAnICAgICJ0aW1lc3RhbXAi
OiA8VVRDIHRpbWVzdGFtcCBvZiB0ZXN0IHJ1bj4sXG4nICsKLSAgICAgICAgICAgICAgICAgICAg
JyAgICAicHJvY2Vzc2luZyI6IHtcbicgKwotICAgICAgICAgICAgICAgICAgICAnICAgICAgICAi
Y2ktdXJscyI6IHsic3RhdHVzIjogIlF1ZXVlZCJ9LFxuJyArCi0gICAgICAgICAgICAgICAgICAg
ICcgICAgICAgICJzdWl0ZS1yZXN1bHRzIjogeyJzdGF0dXMiOiAiUXVldWVkIn0sXG4nICsKLSAg
ICAgICAgICAgICAgICAgICAgJyAgICAgICAgInRlc3QtcmVzdWx0IjogeyJzdGF0dXMiOiAiUXVl
dWVkIn1cbicgKwotICAgICAgICAgICAgICAgICAgICAnICAgIH1cbicgKwotICAgICAgICAgICAg
ICAgICAgICAnfScpLAotICAgICAgICAgICAgICAgICAgICBgd2hlcmUgJmx0Y29tbWl0LWEmZ3Qg
YW5kICZsdGNvbW1pdC1iJmd0IGFyZSBib3RoICR7bG9jYWxMaW5rKFsnQVBJJywgJ0NvbW1pdCdd
LCAnY29tbWl0IG9iamVjdHMnKX0gYW5kICZsdGNvbmZpZ3VyYXRpb24tb2JqZWN0Jmd0IGlzIGEg
JHtsb2NhbExpbmsoWydRdWVyeSBQYXJhbWV0ZXJzJywgJ0NvbmZpZ3VyYXRpb24nXSwgJ2NvbmZp
Z3VyYXRpb24gb2JqZWN0Jyl9LiBUaGUgZGF0YSBpbnNpZGUgdGhlICdwcm9jZXNzaW5nJyBkaWN0
aW9uYXJ5IGluZGljYXRlcyBhbnkgZmFpbHVyZXMgd2hpY2ggb2NjdXJyZWQgd2hlbiBhdHRlbXB0
aW5nIHRvIHByb2Nlc3MgdGhlIHVwbG9hZC5gCi0gICAgICAgICAgICAgICAgXSwKLSAgICAgICAg
ICAgICksCi0gICAgICAgIF0sICdUZXN0IExpc3RzJzogWwotICAgICAgICAgICAgYE1vc3QgZW5w
b2ludHMgb24gdGhlIHJlc3VsdHMgZGF0YWJhc2UgcmVxdWlyZSBpbmZvcm1hdGlvbiBhYm91dCB0
aGUgc3VpdGUsIHRlc3Qgb3IgY29uZmlndXJhdGlvbiByZXN1bHRzIGFyZSBhc3NvY2lhdGVkIHdp
dGguIEJlY2F1c2UgdGhlc2UgY29uZmlndXJhdGlvbnMsIHN1aXRlcyBvciB0ZXN0cyBtYXkgY2hh
bmdlIG92ZXIgdGltZSwgdGhlIHJlc3VsdHMgZGF0YWJhc2UgZXhwb3NlcyBzb21lIGVuZHBvaW50
cyBhbGxvd2luZyB0aGlzIGRhdGEgdG8gYmUgcmV0cmVpdmVkIGluIGFuIGF1dG9tYXRlZCB3YXku
YCwKLSAgICAgICAgICAgIGRvY3VtZW50RW5kcG9pbnQoCi0gICAgICAgICAgICAgICAgJy9hcGkv
c3VpdGVzJywKLSAgICAgICAgICAgICAgICBbJ0dFVCddLAotICAgICAgICAgICAgICAgIFsnQnJh
bmNoJywgJ0NvbmZpZ3VyYXRpb24nLCAnUmVwb3NpdG9yeScsICdTdWl0ZScsICdVVUlEJ10sCi0g
ICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICAgICBgVGhpcyBlbnBvaW50IHJldHVy
bnMgYSBsaXN0IG9mIGNvbmZpZ3VyYXRpb24vc3VpdGUgcGFpcnMgbWF0Y2hpbmcgdGhlIHByb3Zp
ZGVkIHBhcmFtZXRlcnMuIFRoZSAvYXBpL3N1aXRlcyBlbmRwb2ludCBpcyBhbHNvIHVzZWQgdG8g
Z2VuZXJhdGUgYSBsaXN0IG9mIHZhbGlkIGNvbmZpZ3VyYXRpb25zLCBhbmQgd2lsbCByZXR1cm4g
YSBsaXN0IHdoaWNoIGlzIG9mIHRoZSBmb3JtOmAsCi0gICAgICAgICAgICAgICAgICAgIGNvZGVC
bG9jaygnW1xuJyArCi0gICAgICAgICAgICAgICAgICAgICcgICAgW1xuJyArCi0gICAgICAgICAg
ICAgICAgICAgICcgICAgICAgIDxjb25maWd1cmF0aW9uLW9iamVjdC1hPixcbicgKwotICAgICAg
ICAgICAgICAgICAgICAnICAgICAgICBbInRlc3Qtc3VpdGUtYSIsICJ0ZXN0LXN1aXRlLWIiXVxu
JyArCi0gICAgICAgICAgICAgICAgICAgICcgICAgXSwgW1xuJyArCi0gICAgICAgICAgICAgICAg
ICAgICcgICAgICAgIDxjb25maWd1cmF0aW9uLW9iamVjdC1iPixcbicgKwotICAgICAgICAgICAg
ICAgICAgICAnICAgICAgICBbInRlc3Qtc3VpdGUtYSJdXG4nICsKLSAgICAgICAgICAgICAgICAg
ICAgJyAgICBdXG4nICsKLSAgICAgICAgICAgICAgICAgICAgJ10nKSwKLSAgICAgICAgICAgICAg
ICAgICAgYHdoZXJlICZsdGNvbmZpZ3VyYXRpb24tb2JqZWN0LWEmZ3QgYW5kICZsdGNvbmZpZ3Vy
YXRpb24tb2JqZWN0LWImZ3QgYXJlIGJvdGggJHtsb2NhbExpbmsoWydRdWVyeSBQYXJhbWV0ZXJz
JywgJ0NvbmZpZ3VyYXRpb24nXSwgJ2NvbmZpZ3VyYXRpb24gb2JqZWN0cycpfS5gLAotICAgICAg
ICAgICAgICAgIF0sCi0gICAgICAgICAgICApLAotICAgICAgICAgICAgZG9jdW1lbnRFbmRwb2lu
dCgKLSAgICAgICAgICAgICAgICAnL2FwaS8mbHRzdWl0ZSZndC90ZXN0cycsCi0gICAgICAgICAg
ICAgICAgWydHRVQnXSwKLSAgICAgICAgICAgICAgICBbJ0xpbWl0JywgJ1Rlc3QnXSwKLSAgICAg
ICAgICAgICAgICBbYFJldHVybnMgYSBsaXN0IG9mIHRlc3RzIGFzc29jaWF0ZWQgd2l0aCBhIHNw
ZWNpZmljIHN1aXRlLiBUaGlzIGxpc3QgaXMgdXNlZnVsIGZvciBtYXBwaW5nIGEgcGFydGlhbCBz
dHJpbmcgdG8gYSB0ZXN0IG5hbWUuYF0sCi0gICAgICAgICAgICApLAotICAgICAgICBdLCAnVGVz
dCBSZXN1bHRzJzogWwotICAgICAgICAgICAgYFRoZSByZXN1bHRzLWRhdGFiYXNlIHByZWZvcm1z
IHBvc3QtcHJvY2Vzc2luZyBvbiBldmVyeSB1cGxvYWQgdG8gc29ydCB0ZXN0IHJlc3VsdHMuIEVh
Y2ggdGVzdCBoYXMgaXQncyByZXN1bHRzIHNhdmVkIGluZGVwZW5kZW50bHkgYW5kIGhpZ2gtbGV2
ZWwgcmVzdWx0cyBmb3IgYSB0ZXN0IHN1aXRlIGFyZSBhbHNvIHN0b3JlZC4gVGhlIHJlc3VsdHMg
ZGF0YWJhc2UgY2xhc3NpZmllcyBldmVyeSB0ZXN0IGZhaWx1cmUgd2l0aCB0aGUgZm9sbG93aW5n
IG1hcHBpbmc6YCwKLSAgICAgICAgICAgIGNvZGVCbG9jaygne1xuJyArIFsnQ1JBU0gnLCAnVElN
RU9VVCcsICdJTUFHRScsICdBVURJTycsICdURVhUJywgJ0ZBSUwnLCAnRVJST1InLCAnV0FSTklO
RycsICdQQVNTJ10ubWFwKChrZXkpID0+IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gYCAgICAi
JHtrZXl9IjogJHtFeHBlY3RhdGlvbnMuc3RyaW5nVG9TdGF0ZUlkKGtleSl9YDsKLSAgICAgICAg
ICAgIH0pLmpvaW4oJyxcbicpICsgJ1xufScpLAotICAgICAgICAgICAgYFJlc3VsdHMgd2hpY2gg
aGF2ZSBsb3dlciBudW1iZXJzIHdpbGwgdGFrZSBwcmVjZWRlbmNlIG92ZXIgdGhvc2Ugd2l0aCBz
bWFsbGVyIG9uZXMuIEZvciBleGFtcGxlLCBpZiBhIHRlc3QgaGFzIGEgcmVzdWx0IHdoaWNoIGlz
IHNpbXVsdGFuaW91c2x5IGEgVElNRU9VVCBhbmQgYSBGQUlMVVJFLCB0aGUgcmVzdWx0cyBkYXRh
YmFzZSB3b3VsZCB0cmVhdCB0aGF0IHRlc3QgYXMgYSBUSU1FT1VULmAsCi0gICAgICAgICAgICBg
VGVzdHMgbWF5IGFsc28gZGVmaW5lIGFuICdleHBlY3RlZCcgcmVzdWx0LiBCeSBkZWZhdWx0LCBh
bGwgdGVzdHMgYXJlIGV4cGVjdGVkIHRvIHBhc3MuIElmIGEgdGVzdCBkZWZpbmVzIGEgcmVzdWx0
IHRoYXQgaXMgbm90IFBBU1MsIG1vc3QgZmFjaWxpdGllcyB3aXRoaW4gdGhlIHJlc3VsdHMgZGF0
YWJhc2Ugd2lsbCB0cmVhdCB0aGF0IHRlc3QgYXMgcGFzc2luZyBzbyBsb25nIGFzIGl0J3MgcmVz
dWx0IG1hdGNoZXMgdGhlIGV4cGVjdGVkIHJlc3VsdC4gVGhpcyBsZWFkcyB0byBhbiBpZGVhIG9m
IGV4cGVjdGVkIHJlc3VsdHMgdmVyc2UgYWN0dWFsIHJlc3VsdHMuIEVuZHBvaW50cyB3aGljaCBj
b2xhcHNlIHJlc3VsdHMgZnJvbSBtdWx0aXBsZSB0ZXN0cyBoYW5kbGUgdGhpcyBpZGVhIGxpa2Ug
c286YCwKLSAgICAgICAgICAgIGNvZGVCbG9jaygne1xuJyArCi0gICAgICAgICAgICAgICAgJyAg
ICAidGVzdHNfY3Jhc2hlZCI6IDxudW1iZXIgb2YgdGVzdHMgd2hpY2ggY3Jhc2hlZCBvciB3b3Jz
ZT4sXG4nICsKLSAgICAgICAgICAgICAgICAnICAgICJ0ZXN0c190aW1lZG91dCI6IDxudW1iZXIg
b2YgdGVzdHMgd2hpY2ggdGltZWQtb3V0IG9yIHdvcnNlPixcbicgKwotICAgICAgICAgICAgICAg
ICcgICAgInRlc3RzX2ZhaWxlZCI6IDxudW1iZXIgb2YgdGVzdHMgd2hpY2ggZmFpbGVkIG9yIHdv
cnNlPixcbicgKwotICAgICAgICAgICAgICAgICcgICAgInRlc3RzX3VuZXhwZWN0ZWRfY3Jhc2hl
ZCI6IDxudW1iZXIgb2YgdGVzdHMgd2hpY2ggdW5leHBlY3RhZGx5IGNyYXNoZWQgb3Igd29yc2U+
LFxuJyArCi0gICAgICAgICAgICAgICAgJyAgICAidGVzdHNfdW5leHBlY3RlZF90aW1lZG91dCI6
IDxudW1iZXIgb2YgdGVzdHMgd2hpY2ggdW5leHBlY3RhZGx5IHRpbWVkLW91dCBvciB3b3JzZT4s
XG4nICsKLSAgICAgICAgICAgICAgICAnICAgICJ0ZXN0c191bmV4cGVjdGVkX2ZhaWxlZCI6IDxu
dW1iZXIgb2YgdGVzdHMgd2hpY2ggdW5leHBlY3RhZGx5IGZhaWxlZCBvciB3b3JzZT4sXG4nICsK
LSAgICAgICAgICAgICAgICAnICAgICJ0ZXN0c19za2lwcGVkIjogPG51bWJlciBvZiB0ZXN0cyB3
aGljaCB3ZXJlIHNraXBwZWQ+LFxuJyArCi0gICAgICAgICAgICAgICAgJyAgICAidGVzdHNfcnVu
IjogPG51bWJlciBvZiB0ZXN0cyBydW4+XG4nICsKLSAgICAgICAgICAgICAgICAnfScpLAotICAg
ICAgICAgICAgYEl0J3MgaW1wb3J0YW50IHRvIG5vdGUgdGhhdCB3aGVuIGFnZ3JlZ2F0aW5nIHRl
c3QgcmVzdWx0cywgdGhlIGFnZ3JlZ2F0aW9uIG9mIHRpbWVvdXRzIHdpbGwgYWxzbyBpbmNsdWRl
IHJlc3VsdHMgd29yc2UgdGhhbiB0aW1lb3V0cyAobmFtZWx5LCBjcmFzaGVzKSBhbmQgdGhlIGFn
Z3JlZ2F0aW9uIG9mIGZhaWx1cmVzIHdpbGwgYWxzbyBpbmNsdWRlIHJlc3VsdHMgd29yc2UgdGhh
biBmYWlsdXJlcyAoc28gY3Jhc2hlcyBhbmQgdGltZW91dHMpLmAsCi0gICAgICAgICAgICBkb2N1
bWVudEVuZHBvaW50KAotICAgICAgICAgICAgICAgICcvYXBpL3Jlc3VsdHMvJmx0c3VpdGUmZ3Qn
LAotICAgICAgICAgICAgICAgIFsnR0VUJ10sCi0gICAgICAgICAgICAgICAgWydCcmFuY2gnLCAn
Q29uZmlndXJhdGlvbicsICdMaW1pdCcsICdSZXBvc2l0b3J5JywgJ1RpbWUnLCAnVVVJRCddLAot
ICAgICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAgICAgYEVuZHBvaW50IHdoaWNoIHJl
dHVybnMgcmVzdWx0cyBmb3IgYSBzcGVjaWZpYyB0ZXN0IHJ1bi4gT24gdGhpcyBlbmRwb2ludCwg
cmVzdWx0cyBhcmUgYWdncmVnYXRlZCByZXN1bHRzIGluIGEgZGljdGlvbmFyeSBmb3JtYXRlZCBs
aWtlIHRoaXM6YCwKLSAgICAgICAgICAgICAgICAgICAgY29kZUJsb2NrKCd7XG4nICsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICcgICAgInN0YXJ0X3RpbWUiOiA8VVRDIHRpbWUgdGVzdCBydW4g
c3RhcnRlZD4sXG4nICsKLSAgICAgICAgICAgICAgICAgICAgICAgICcgICAgInV1aWQiOiA8VVVJ
RCBmb3IgdGVzdCBydW4+LFxuJyArCi0gICAgICAgICAgICAgICAgICAgICAgICAnICAgICJkZXRh
aWxzIjoge1xuJyArCi0gICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICAiYnVpbGQtbnVt
YmVyIjogIjUyODUiLFxuJyArCi0gICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICAiYnVp
bGRib3QtbWFzdGVyIjogImJ1aWxkLndlYmtpdC5vcmciLFxuJyArCi0gICAgICAgICAgICAgICAg
ICAgICAgICAnICAgICAgICAiYnVpbGRib3Qtd29ya2VyIjogImJvdDE5OCIsXG4nICsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICcgICAgICAgICJidWlsZGVyLW5hbWUiOiAiQXBwbGUtTW9qYXZl
LVJlbGVhc2UtV0syIlxuJyArCi0gICAgICAgICAgICAgICAgICAgICAgICAnICAgIH0sXG4nICsK
LSAgICAgICAgICAgICAgICAgICAgICAgICcgICAgc3RhdHM6IHtcbicgKwotICAgICAgICAgICAg
ICAgICAgICAgICAgJyAgICAgICAgInN0YXJ0X3RpbWUiOiA8VVRDIHRpbWUgYnVpbGQgc3RhcnRl
ZD4sXG4nICsKLSAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgICJlbmRfdGltZSI6IDxV
VEMgdGltZSBidWlsZCBlbmRlZD4sXG4nICsKLSAgICAgICAgICAgICAgICAgICAgICAgICcgICAg
ICAgICJ0ZXN0c19jcmFzaGVkIjogPG51bWJlciBvZiB0ZXN0cyB3aGljaCBjcmFzaGVkIG9yIHdv
cnNlPixcbicgKwotICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgInRlc3RzX3RpbWVk
b3V0IjogPG51bWJlciBvZiB0ZXN0cyB3aGljaCB0aW1lZC1vdXQgb3Igd29yc2U+LFxuJyArCi0g
ICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICAidGVzdHNfZmFpbGVkIjogPG51bWJlciBv
ZiB0ZXN0cyB3aGljaCBmYWlsZWQgb3Igd29yc2U+LFxuJyArCi0gICAgICAgICAgICAgICAgICAg
ICAgICAnICAgICAgICAidGVzdHNfdW5leHBlY3RlZF9jcmFzaGVkIjogPG51bWJlciBvZiB0ZXN0
cyB3aGljaCB1bmV4cGVjdGFkbHkgY3Jhc2hlZCBvciB3b3JzZT4sXG4nICsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICcgICAgICAgICJ0ZXN0c191bmV4cGVjdGVkX3RpbWVkb3V0IjogPG51bWJl
ciBvZiB0ZXN0cyB3aGljaCB1bmV4cGVjdGFkbHkgdGltZWQtb3V0IG9yIHdvcnNlPixcbicgKwot
ICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgInRlc3RzX3VuZXhwZWN0ZWRfZmFpbGVk
IjogPG51bWJlciBvZiB0ZXN0cyB3aGljaCB1bmV4cGVjdGFkbHkgZmFpbGVkIG9yIHdvcnNlPixc
bicgKwotICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgInRlc3RzX3NraXBwZWQiOiA8
bnVtYmVyIG9mIHRlc3RzIHdoaWNoIHdlcmUgc2tpcHBlZD4sXG4nICsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICcgICAgICAgICJ0ZXN0c19ydW4iOiA8bnVtYmVyIG9mIHRlc3RzIHJ1bj5cbicg
KwotICAgICAgICAgICAgICAgICAgICAgICAgJyAgICB9XG4nICsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICd9JyksCi0gICAgICAgICAgICAgICAgICAgIGBUaGVzZSByZXN1bHRzIGFyZSBvcmdh
bml6ZWQgaW4gYSBsaXN0IG9mIGRpY3Rpb25hcmllcyBvcmdhbml6ZWQgbGlrZSBzbzpgLAotICAg
ICAgICAgICAgICAgICAgICBjb2RlQmxvY2soJ1tcbicgKwotICAgICAgICAgICAgICAgICAgICAn
ICAgIHtcbicgKwotICAgICAgICAgICAgICAgICAgICAnICAgICAgICAiY29uZmlndXJhdGlvbiI6
IDxjb25maWd1cmF0aW9uLW9iamVjdC1hPixcbicgKwotICAgICAgICAgICAgICAgICAgICAnICAg
ICAgICAicmVzdWx0cyI6IFtcbicgKwotICAgICAgICAgICAgICAgICAgICAnICAgICAgICAgICAg
PHJ1bi1hMT4sXG4nICsKLSAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgIDxydW4tYTI+
XG4nICsKLSAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgXVxuJyArCi0gICAgICAgICAgICAg
ICAgICAgICcgICAgfSwge1xuJyArCi0gICAgICAgICAgICAgICAgICAgICcgICAgICAgICJjb25m
aWd1cmF0aW9uIjogPGNvbmZpZ3VyYXRpb24tb2JqZWN0LWI+LFxuJyArCi0gICAgICAgICAgICAg
ICAgICAgICcgICAgICAgICJyZXN1bHRzIjogW1xuJyArCi0gICAgICAgICAgICAgICAgICAgICcg
ICAgICAgICAgICA8cnVuLWIxPixcbicgKwotICAgICAgICAgICAgICAgICAgICAnICAgICAgICAg
ICAgPHJ1bi1iMj5cbicgKwotICAgICAgICAgICAgICAgICAgICAnICAgICAgICBdXG4nICsKLSAg
ICAgICAgICAgICAgICAgICAgJyAgICB9XG4nICsKLSAgICAgICAgICAgICAgICAgICAgJ10nKSwK
LSAgICAgICAgICAgICAgICAgICAgYHdoZXJlICZsdGNvbmZpZ3VyYXRpb24tb2JqZWN0LWEmZ3Qg
YW5kICZsdGNvbmZpZ3VyYXRpb24tb2JqZWN0LWImZ3QgYXJlIGJvdGggJHtsb2NhbExpbmsoWydR
dWVyeSBQYXJhbWV0ZXJzJywgJ0NvbmZpZ3VyYXRpb24nXSwgJ2NvbmZpZ3VyYXRpb24gb2JqZWN0
cycpfScgYW5kICZsdHJ1bi1hMSZndCwgJmx0cnVuLWEyJmd0LCAmbHRydW4tYjEmZ3QgYW5kICZs
dHJ1bi1iMiZndCBhcmUgYWxsIHRoZSBhZmZvcm1lbnRpb25lZCBhZ2dyZWdhdGVkIHJlc3VsdCBk
aWN0aW9uYXJpZXMuYCwKLSAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgKSwKLSAgICAg
ICAgICAgIGRvY3VtZW50RW5kcG9pbnQoCi0gICAgICAgICAgICAgICAgJy9hcGkvcmVzdWx0cy8m
bHRzdWl0ZSZndC8mbHR0ZXN0Jmd0JywKLSAgICAgICAgICAgICAgICBbJ0dFVCddLAotICAgICAg
ICAgICAgICAgIFsnQnJhbmNoJywgJ0NvbmZpZ3VyYXRpb24nLCAnTGltaXQnLCAnUmVwb3NpdG9y
eScsICdUaW1lJywgJ1VVSUQnXSwKLSAgICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAg
ICAgIGBBY2Nlc3MgcmVzdWx0cyBmb3IgYSBzcGVjaWZpYyB0ZXN0IG9uIGEgc3BlY2lmaWMgY29t
bWl0IHdpdGggYSBzcGVjaWZpYyBjb25maWd1cmF0aW9uLiBUaGlzIGVuZHBvaW50IG9ubHkgcmV0
dXJucyByZXN1bHRzIGZvciBhIHNpbmdsZSB0ZXN0LiBFYWNoIHJlc3VsdCBpcyBzdG9yZWQgaW4g
ZGljdGlvbmFyeSBmb3JtYXR0ZWQgbGlrZSB0aGlzOmAsCi0gICAgICAgICAgICAgICAgICAgIGNv
ZGVCbG9jaygne1xuJyArCi0gICAgICAgICAgICAgICAgICAgICcgICAgInN0YXJ0X3RpbWUiOiA8
VVRDIHRpbWUgdGVzdCBydW4gc3RhcnRlZD4sXG4nICsKLSAgICAgICAgICAgICAgICAgICAgJyAg
ICAidXVpZCI6IDxVVUlEIGZvciB0ZXN0IHJ1bj4sXG4nICsKLSAgICAgICAgICAgICAgICAgICAg
JyAgICAiYWN0dWFsIjogPHJlc3VsdCBvZiBydW4+LFxuJyArCi0gICAgICAgICAgICAgICAgICAg
ICcgICAgImV4cGVjdGVkIjogPGV4cGVjdGVkIHJlc3VsdCBvZiBydW4+LFxuJyArCi0gICAgICAg
ICAgICAgICAgICAgICcgICAgInRpbWUiOiA8bWlsaXNlY29uZHMgaXQgdG9vayB0ZXN0IHRvIHJ1
bj5cbicgKwotICAgICAgICAgICAgICAgICAgICAnfScpLAotICAgICAgICAgICAgICAgICAgICBg
VGhlICd0aW1lJyBlbGVtZW50IG9wdGlvbmFsLiBJZiAnYWN0dWFsJyBvciAnZXhwZWN0ZWQnIGFy
ZSB1bmRlZmluZWQsIHRoZXkgYXJlIGFzc3VtZWQgdG8gYmUgUEFTUy4gVGhlc2UgcmVzdWx0cyBh
cmUgb3JnYW5pemVkIGluIGEgbGlzdCBvZiBkaWN0aW9uYXJpZXMgb3JnYW5pemVkIGxpa2Ugc286
YCwKLSAgICAgICAgICAgICAgICAgICAgY29kZUJsb2NrKCdbXG4nICsKLSAgICAgICAgICAgICAg
ICAgICAgJyAgICB7XG4nICsKLSAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgImNvbmZpZ3Vy
YXRpb24iOiA8Y29uZmlndXJhdGlvbi1vYmplY3QtYT4sXG4nICsKLSAgICAgICAgICAgICAgICAg
ICAgJyAgICAgICAgInJlc3VsdHMiOiBbXG4nICsKLSAgICAgICAgICAgICAgICAgICAgJyAgICAg
ICAgICAgIDxydW4tYTE+LFxuJyArCi0gICAgICAgICAgICAgICAgICAgICcgICAgICAgICAgICA8
cnVuLWEyPlxuJyArCi0gICAgICAgICAgICAgICAgICAgICcgICAgICAgIF0sXG4nICsKLSAgICAg
ICAgICAgICAgICAgICAgJyAgICB9LCB7XG4nICsKLSAgICAgICAgICAgICAgICAgICAgJyAgICAg
ICAgImNvbmZpZ3VyYXRpb24iOiA8Y29uZmlndXJhdGlvbi1vYmplY3QtYj4sXG4nICsKLSAgICAg
ICAgICAgICAgICAgICAgJyAgICAgICAgInJlc3VsdHMiOiBbXG4nICsKLSAgICAgICAgICAgICAg
ICAgICAgJyAgICAgICAgICAgIDxydW4tYjE+LFxuJyArCi0gICAgICAgICAgICAgICAgICAgICcg
ICAgICAgICAgICA8cnVuLWIyPlxuJyArCi0gICAgICAgICAgICAgICAgICAgICcgICAgICAgIF1c
bicgKwotICAgICAgICAgICAgICAgICAgICAnICAgIH1cbicgKwotICAgICAgICAgICAgICAgICAg
ICAnXScpLAotICAgICAgICAgICAgICAgICAgICBgd2hlcmUgJmx0Y29uZmlndXJhdGlvbi1vYmpl
Y3QtYSZndCBhbmQgJmx0Y29uZmlndXJhdGlvbi1vYmplY3QtYiZndCBhcmUgYm90aCAke2xvY2Fs
TGluayhbJ1F1ZXJ5IFBhcmFtZXRlcnMnLCAnQ29uZmlndXJhdGlvbiddLCAnY29uZmlndXJhdGlv
biBvYmplY3RzJyl9JyBhbmQgJmx0cnVuLWExJmd0LCAmbHRydW4tYTImZ3QsICZsdHJ1bi1iMSZn
dCBhbmQgJmx0cnVuLWIyJmd0IGFyZSBhbGwgdGhlIGFmZm9ybWVudGlvbmVkIHNpbmdsZSB0ZXN0
IHJlc3VsdCBkaWN0aW9uYXJ5LmAsCi0gICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICks
Ci0gICAgICAgIF0sICdGYWlsdXJlIEFuYWx5c2lzJzogWwotICAgICAgICAgICAgYFJlc3VsdHMg
ZGF0YWJhc2VzIHByb3ZpZGUgYSBmZXcgQVBJcyB0byBhc3Npc3QgaW4gdGhlIGludmVzdGlnYXRp
b24gb2YgdGVzdCBmYWlsdXJlcy4gVGhlc2UgYW5hbHlzaXMgZW5kcG9pbnRzIGFnZ3JlZ2F0ZSBk
YXRhIGZyb20gbXVsdGlwbGUgdGVzdCBydW5zIGZvciBjb25zdW1wdGlvbiBieSBib3RoIGh1bWFu
cyBhbmQgYXV0b21hdGVkIHN5c3RlbXMuYCwKLSAgICAgICAgICAgIGRvY3VtZW50RW5kcG9pbnQo
Ci0gICAgICAgICAgICAgICAgJy9hcGkvZmFpbHVyZXMvJmx0c3VpdGUmZ3QnLAotICAgICAgICAg
ICAgICAgIFsnR0VUJ10sCi0gICAgICAgICAgICAgICAgWydBZ2dyZWdhdGlvbicsICdCcmFuY2gn
LCAnQ29uZmlndXJhdGlvbicsICdMaW1pdCcsICdSZXBvc2l0b3J5JywgJ1RpbWUnLCAnVVVJRCdd
LAotICAgICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAgICAgYFJldHVybnMgYSBsaXN0
IG9mIHRlc3RzIHdoaWNoIGZhaWxlZCBkdXJpbmcgdGVzdCBydW5zIG1hdGNoaW5nIHRoZSBzcGVj
aWZpZWQgY3JpdGVyaWEuIFdoZW4gY29sbGFwc2VkLCB0aGVzZSByZXN1bHRzIHdpbGwgYmUgYSBz
b3J0ZWQgbGlzdCBsb29raW5nIGxpa2UgdGhpczpgLAotICAgICAgICAgICAgICAgICAgICBjb2Rl
QmxvY2soJ1tcbicgKwotICAgICAgICAgICAgICAgICAgICAnICAgICJzdWl0ZS5zdWItMS50ZXN0
LTEiLFxuJyArCi0gICAgICAgICAgICAgICAgICAgICcgICAgInN1aXRlLnN1Yi0xLnRlc3QtMiIs
XG4nICsKLSAgICAgICAgICAgICAgICAgICAgJyAgICAic3VpdGUuc3ViLTIudGVzdC0xIlxuJyAr
Ci0gICAgICAgICAgICAgICAgICAgICddJyksCi0gICAgICAgICAgICAgICAgICAgIGBXaGVuIHVu
Y29sbGFwc2VkLCB0aGVzZSByZXN1bHRzIHdpbGwgYmUgc2VwYXJhdGVkIGJ5IHRoZSB1cGxvYWQg
dGhhdCBnZW5lcmF0ZWQgdGhlbS4gVGhlc2UgcmVzdWx0cyBhcmUgbGFpZCBvdXQgbXVjaCBsaWtl
IHRoZSAke2xvY2FsTGluayhbJ0FQSScsICcvYXBpL3Jlc3VsdHMvJmx0c3VpdGUmZ3QnXSwgJy9h
cGkvcmVzdWx0cy8mbHRzdWl0ZSZndCcpfSBhbmQgJHtsb2NhbExpbmsoWydBUEknLCAnL2FwaS9y
ZXN1bHRzLyZsdHN1aXRlJmd0LyZsdHRlc3QmZ3QnXSwgJy9hcGkvcmVzdWx0cy8mbHRzdWl0ZSZn
dC8mbHR0ZXN0Jmd0Jyl9IGVuZHBvaW50cy5gLAotICAgICAgICAgICAgICAgICAgICBjb2RlQmxv
Y2soJ1tcbicgKwotICAgICAgICAgICAgICAgICAgICAnICAgIHtcbicgKwotICAgICAgICAgICAg
ICAgICAgICAnICAgICAgICAiY29uZmlndXJhdGlvbiI6IDxjb25maWd1cmF0aW9uLW9iamVjdC1h
PixcbicgKwotICAgICAgICAgICAgICAgICAgICAnICAgICAgICAicmVzdWx0cyI6IFtcbicgKwot
ICAgICAgICAgICAgICAgICAgICAnICAgICAgICAgICAge1xuJyArCi0gICAgICAgICAgICAgICAg
ICAgICcgICAgICAgICAgICAgICAgInN0YXJ0X3RpbWUiOiA8VVRDIHRpbWUgdGVzdCBydW4gc3Rh
cnRlZD4sXG4nICsKLSAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgICAgICAidXVpZCI6
IDxVVUlEIGZvciB0ZXN0IHJ1bj4sXG4nICsKLSAgICAgICAgICAgICAgICAgICAgJyAgICAgICAg
ICAgICAgICAic3VpdGUuc3ViLTEudGVzdC0xIjogIkZBSUwiLFxuJyArCi0gICAgICAgICAgICAg
ICAgICAgICcgICAgICAgICAgICAgICAgInN1aXRlLnN1Yi0xLnRlc3QtMiI6ICJGQUlMIixcbicg
KwotICAgICAgICAgICAgICAgICAgICAnICAgICAgICAgICAgfVxuJyArCi0gICAgICAgICAgICAg
ICAgICAgICcgICAgICAgIF1cbicgKwotICAgICAgICAgICAgICAgICAgICAnICAgIH0sIHtcbicg
KwotICAgICAgICAgICAgICAgICAgICAnICAgICAgICAiY29uZmlndXJhdGlvbiI6IDxjb25maWd1
cmF0aW9uLW9iamVjdC1iPixcbicgKwotICAgICAgICAgICAgICAgICAgICAnICAgICAgICAicmVz
dWx0cyI6IFtcbicgKwotICAgICAgICAgICAgICAgICAgICAnICAgICAgICAgICAge1xuJyArCi0g
ICAgICAgICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgInN0YXJ0X3RpbWUiOiA8VVRDIHRp
bWUgdGVzdCBydW4gc3RhcnRlZD4sXG4nICsKLSAgICAgICAgICAgICAgICAgICAgJyAgICAgICAg
ICAgICAgICAidXVpZCI6IDxVVUlEIGZvciB0ZXN0IHJ1bj4sXG4nICsKLSAgICAgICAgICAgICAg
ICAgICAgJyAgICAgICAgICAgICAgICAic3VpdGUuc3ViLTEudGVzdC0xIjogIkZBSUwiLFxuJyAr
Ci0gICAgICAgICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgInN1aXRlLnN1Yi0xLnRlc3Qt
MiI6ICJDUkFTSCIsXG4nICsKLSAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgIH1cbicg
KwotICAgICAgICAgICAgICAgICAgICAnICAgICAgICBdXG4nICsKLSAgICAgICAgICAgICAgICAg
ICAgJyAgICB9XG4nICsKLSAgICAgICAgICAgICAgICAgICAgJ10nKSwKLSAgICAgICAgICAgICAg
ICAgICAgYHdoZXJlICZsdGNvbmZpZ3VyYXRpb24tb2JqZWN0LWEmZ3QgYW5kICZsdGNvbmZpZ3Vy
YXRpb24tb2JqZWN0LWImZ3QgYXJlIGJvdGggJHtsb2NhbExpbmsoWydRdWVyeSBQYXJhbWV0ZXJz
JywgJ0NvbmZpZ3VyYXRpb24nXSwgJ2NvbmZpZ3VyYXRpb24gb2JqZWN0cycpfS5gLAotICAgICAg
ICAgICAgICAgIF0sCi0gICAgICAgICAgICApLAotICAgICAgICBdLCdDSSBMaW5rcyc6IFsKLSAg
ICAgICAgICAgIGBSZXN1bHRzIGRhdGFiYXNlIGluc3RhbmNlcyBhcmUgdXN1YWxseSBzdG9yaW5n
IHRlc3QgcmVzdWx0cyBmcm9tIHNvbWUgc29ydCBvZiBjb250aW51b3VzIGludGVncmF0aW9uIHN5
c3RlbS4gV2hpbGUgdGhlIHJlc3VsdHMgZGF0YWJhc2UgZG9lc24ndCBhc3N1bWUgYW55IHBhcnRp
Y3VsYXIgY29udGludW91cyBpbnRlZ3JhdGlvbiBzeXN0ZW0sIGl0IGRvZXMgbWFrZSBzb21lIGJh
c2ljIGFzc3VtcHRpb25zLiBUaGUgcmVzdWx0cyBkYXRhYmFzZSBhc3N1bWVzIHRoYXQgZXZlcnkg
dXBsb2FkIGhhcyBhIFVSTCBhc3NvY2lhdGVkIHdpdGggaXQgYW5kIHRoYXQgZXZlcnkgdXBsb2Fk
IHdhcyBydW4gb24gYSBzcGVjaWZpYyBtYWNoaW5lLiBBZGRpdGlvbmFsbHksIHRoZSByZXN1bHRz
IGRhdGFiYXNlIGFzc3VtZXMgdGhhdCBmb3IgYSBnaXZlbiBjb25maWd1cmF0aW9uLCB0aGVyZSBp
cyBhIGNvcnJlc3BvbmRpbmcgJ3F1ZXVlJyB0aGF0IGFsbCBjb250aW51b3VzIGludGVncmF0aW9u
IHJ1bnMgd2l0aCB0aGF0IHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gYXJlIGFzc29jaWF0ZWQgd2l0
aGAsCi0gICAgICAgICAgICBgSWYgdGhlc2UgYXNzdW1wdGlvbnMgYXJlbid0IHRydWUgZm9yIGEg
cGFydGljdWxhciBpbnN0YW5jZSBvZiB0aGUgcmVzdWx0cyBkYXRhYmFzZSwgb3IgaWYgVVJMcyBh
cmUgbm90IGluY2x1ZGVkIGluIHVwbG9hZCBkYXRhLCB0aGUgY29udGludW91cyBpbnRlZ3JhdGlv
biBlbmRwb2ludHMgbWF5IGJlIGRlYWQgbGlua3MuIFRoYXQgc2hvdWxkIG5vdCBlZmZlY3QgdGhl
IG9wZXJhdGlvbiBvciB1c2FnZSBvZiB0aGUgcmVzdWx0cyBkYXRhYmFzZS5gLAotICAgICAgICAg
ICAgZG9jdW1lbnRFbmRwb2ludCgKLSAgICAgICAgICAgICAgICAnL2FwaS91cmwvcXVldWUnLAot
ICAgICAgICAgICAgICAgIFsnR0VUJ10sCi0gICAgICAgICAgICAgICAgWydDb25maWd1cmF0aW9u
JywgJ0xpbWl0J10sCi0gICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICAgICBgUmV0
dXJucyBhIGxpc3Qgb2YgZGljdGlvbmFyaWVzIHdoaWNoIGFzc29jaWF0ZSAke2xvY2FsTGluayhb
J1F1ZXJ5IFBhcmFtZXRlcnMnLCAnQ29uZmlndXJhdGlvbiddLCAnY29uZmlndXJhdGlvbiBvYmpl
Y3RzJyl9IHRvIGxpbmtzIHRvIHF1ZXVlcy4gVGhpcyBsaXN0IGlzIG9yZ2FuaXplZCBsaWtlIHNv
OmAsCi0gICAgICAgICAgICAgICAgICAgIGNvZGVCbG9jaygnW1xuJyArCi0gICAgICAgICAgICAg
ICAgICAgICcgICAge1xuJyArCi0gICAgICAgICAgICAgICAgICAgICcgICAgICAgICJjb25maWd1
cmF0aW9uIjogPGNvbmZpZ3VyYXRpb24tb2JqZWN0LWE+LFxuJyArCi0gICAgICAgICAgICAgICAg
ICAgICcgICAgICAgICJ1cmw6IDx1cmwgdG8gcXVldWUgYT5cbicgKwotICAgICAgICAgICAgICAg
ICAgICAnICAgIH0sIHtcbicgKwotICAgICAgICAgICAgICAgICAgICAnICAgICAgICAiY29uZmln
dXJhdGlvbiI6IDxjb25maWd1cmF0aW9uLW9iamVjdC1iPixcbicgKwotICAgICAgICAgICAgICAg
ICAgICAnICAgICAgICAidXJsIjogPHVybCB0byBxdWV1ZSBhPlxuJyArCi0gICAgICAgICAgICAg
ICAgICAgICcgICAgfVxuJyArCi0gICAgICAgICAgICAgICAgICAgICddJyksCi0gICAgICAgICAg
ICAgICAgICAgIGB3aGVyZSAmbHRjb25maWd1cmF0aW9uLW9iamVjdC1hJmd0IGFuZCAmbHRjb25m
aWd1cmF0aW9uLW9iamVjdC1iJmd0IGFyZSBib3RoICR7bG9jYWxMaW5rKFsnUXVlcnkgUGFyYW1l
dGVycycsICdDb25maWd1cmF0aW9uJ10sICdjb25maWd1cmF0aW9uIG9iamVjdHMnKX0uYCwKLSAg
ICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgKSwKLSAgICAgICAgICAgIGRvY3VtZW50RW5k
cG9pbnQoCi0gICAgICAgICAgICAgICAgJy9hcGkvdXJscycsCi0gICAgICAgICAgICAgICAgWydH
RVQnXSwKLSAgICAgICAgICAgICAgICBbJ0JyYW5jaCcsICdDb25maWd1cmF0aW9uJywgJ0xpbWl0
JywgJ1JlcG9zaXRvcnknLCAnVGltZScsICdVVUlEJ10sCi0gICAgICAgICAgICAgICAgWwotICAg
ICAgICAgICAgICAgICAgICBgUmV0dXJucyBhIGxpc3Qgb2YgZGljdGlvbmFyaWVzIHdoaWNoIGFz
c29jaWF0ZSAke2xvY2FsTGluayhbJ1F1ZXJ5IFBhcmFtZXRlcnMnLCAnQ29uZmlndXJhdGlvbidd
LCAnY29uZmlndXJhdGlvbiBvYmplY3RzJyl9IGFuZCAke2xvY2FsTGluayhbJ1F1ZXJ5IFBhcmFt
ZXRlcnMnLCAnVVVJRCddLCAnVVVJRHMnKX0gd2l0aCBzcGVjaWZpYyBxdWV1ZSwgd29ya2VyIGFu
ZCBidWlsZCBsaW5rcy4gVGhlIGxpc3QgaXMgb3JnYW5pemVkIGxpa2UgdGhpczpgLAotICAgICAg
ICAgICAgICAgICAgICBjb2RlQmxvY2soJ1tcbicgKwotICAgICAgICAgICAgICAgICAgICAnICAg
IHtcbicgKwotICAgICAgICAgICAgICAgICAgICAnICAgICAgICAiY29uZmlndXJhdGlvbiI6IDxj
b25maWd1cmF0aW9uLW9iamVjdC1hPixcbicgKwotICAgICAgICAgICAgICAgICAgICAnICAgICAg
ICAidXJscyI6IFtcbicgKwotICAgICAgICAgICAgICAgICAgICAnICAgICAgICAgICAge1xuJyAr
Ci0gICAgICAgICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgInN0YXJ0X3RpbWUiOiA8VVRD
IHRpbWUgYnVpbGQgc3RhcnRlZD4sXG4nICsKLSAgICAgICAgICAgICAgICAgICAgJyAgICAgICAg
ICAgICAgICAiZW5kX3RpbWUiOiA8VVRDIHRpbWUgYnVpbGQgZW5kZWQ+LFxuJyArCi0gICAgICAg
ICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgInF1ZXVlIjogPHVybCB0byBxdWV1ZSBhPixc
bicgKwotICAgICAgICAgICAgICAgICAgICAnICAgICAgICAgICAgICAgICJ3b3JrZXIiOiA8dXJs
IHRvIHdvcmtlciBhPixcbicgKwotICAgICAgICAgICAgICAgICAgICAnICAgICAgICAgICAgICAg
ICJidWlsZCI6IDx1cmwgdG8gYnVpbGQgYT5cbicgKwotICAgICAgICAgICAgICAgICAgICAnICAg
ICAgICAgICAgfVxuJyArCi0gICAgICAgICAgICAgICAgICAgICcgICAgICAgIF1cbicgKwotICAg
ICAgICAgICAgICAgICAgICAnICAgIH0sIHtcbicgKwotICAgICAgICAgICAgICAgICAgICAnICAg
ICAgICAiY29uZmlndXJhdGlvbiI6IDxjb25maWd1cmF0aW9uLW9iamVjdC1iPixcbicgKwotICAg
ICAgICAgICAgICAgICAgICAnICAgICAgICAidXJscyI6IFtcbicgKwotICAgICAgICAgICAgICAg
ICAgICAnICAgICAgICAgICAge1xuJyArCi0gICAgICAgICAgICAgICAgICAgICcgICAgICAgICAg
ICAgICAgInN0YXJ0X3RpbWUiOiA8VVRDIHRpbWUgYnVpbGQgc3RhcnRlZD4sXG4nICsKLSAgICAg
ICAgICAgICAgICAgICAgJyAgICAgICAgICAgICAgICAiZW5kX3RpbWUiOiA8VVRDIHRpbWUgYnVp
bGQgZW5kZWQ+LFxuJyArCi0gICAgICAgICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgInF1
ZXVlIjogPHVybCB0byBxdWV1ZSBhPixcbicgKwotICAgICAgICAgICAgICAgICAgICAnICAgICAg
ICAgICAgICAgICJ3b3JrZXIiOiA8dXJsIHRvIHdvcmtlciBhPixcbicgKwotICAgICAgICAgICAg
ICAgICAgICAnICAgICAgICAgICAgICAgICJidWlsZCI6IDx1cmwgdG8gYnVpbGQgYT5cbicgKwot
ICAgICAgICAgICAgICAgICAgICAnICAgICAgICAgICAgfVxuJyArCi0gICAgICAgICAgICAgICAg
ICAgICcgICAgICAgIF1cbicgKwotICAgICAgICAgICAgICAgICAgICAnICAgIH1cbicgKwotICAg
ICAgICAgICAgICAgICAgICAnXScpLAotICAgICAgICAgICAgICAgICAgICBgd2hlcmUgJmx0Y29u
ZmlndXJhdGlvbi1vYmplY3QtYSZndCBhbmQgJmx0Y29uZmlndXJhdGlvbi1vYmplY3QtYiZndCBh
cmUgYm90aCAke2xvY2FsTGluayhbJ1F1ZXJ5IFBhcmFtZXRlcnMnLCAnQ29uZmlndXJhdGlvbidd
LCAnY29uZmlndXJhdGlvbiBvYmplY3RzJyl9LmAsCi0gICAgICAgICAgICAgICAgXSwKLSAgICAg
ICAgICAgICksCi0gICAgICAgICAgICBkb2N1bWVudEVuZHBvaW50KAotICAgICAgICAgICAgICAg
ICcvdXJscy9xdWV1ZScsCi0gICAgICAgICAgICAgICAgWydHRVQnXSwKLSAgICAgICAgICAgICAg
ICBbJ0NvbmZpZ3VyYXRpb24nLCAnTGltaXQnXSwKLSAgICAgICAgICAgICAgICBbYFJlZGlyZWN0
IHRvIHRoZSBjb250aW51b3VzIGludGVncmF0aW9uIFVSTCBmb3IgYSBzcGVjaWZpYyBxdWV1ZSBh
c3NvY2lhdGVkIHdpdGggdGhlIHByb3ZpZGVkIHBhcmFtZXRlcnMuIE5vdGUgdGhhdCB3aGlsZSB0
aGlzIGVuZHBvaW50IGFjY2VwdHMgdGhlIHN0YW5kYXJkICR7bG9jYWxMaW5rKFsnUXVlcnkgUGFy
YW1ldGVycycsICdDb25maWd1cmF0aW9uJ10sICdjb25maWd1cmF0aW9uJyl9IHF1ZXJ5IHBhcmFt
ZXRlcnMsIHRoaXMgZW5kcG9pbnQgd2lsbCByZXR1cm4gYW4gZXJyb3IgaWYgdGhlIHF1ZXJ5IHBh
cmFtZXRlcnMgcmVmZXIgdG8gbXVsdGlwbGUgcXVldWVzLmBdLAotICAgICAgICAgICAgKSwKLSAg
ICAgICAgICAgIGRvY3VtZW50RW5kcG9pbnQoCi0gICAgICAgICAgICAgICAgJy91cmxzL3dvcmtl
cicsCi0gICAgICAgICAgICAgICAgWydHRVQnXSwKLSAgICAgICAgICAgICAgICBbJ0JyYW5jaCcs
ICdDb25maWd1cmF0aW9uJywgJ0xpbWl0JywgJ1JlcG9zaXRvcnknLCAnVGltZScsICdVVUlEJ10s
Ci0gICAgICAgICAgICAgICAgW2BSZWRpcmVjdCB0byB0aGUgY29udGludW91cyBpbnRlZ3JhdGlv
biBVUkwgZm9yIGEgc3BlY2lmaWMgd29ya2VyIGFzc29jaWF0ZWQgd2l0aCB0aGUgcHJvdmlkZWQg
cGFyYW1ldGVycy4gTm90ZSB0aGF0IHdoaWxlIHRoaXMgZW5kcG9pbnQgYWNjZXB0cyB0aGUgc3Rh
bmRhcmQgJHtsb2NhbExpbmsoWydRdWVyeSBQYXJhbWV0ZXJzJywgJ0NvbmZpZ3VyYXRpb24nXSwg
J2NvbmZpZ3VyYXRpb24nKX0gYW5kICR7bG9jYWxMaW5rKFsnUXVlcnkgUGFyYW1ldGVycycsICdV
VUlEJ10sICdVVUlEJyl9IHF1ZXJ5IHBhcmFtZXRlcnMsIHRoaXMgZW5kcG9pbnQgd2lsbCByZXR1
cm4gYW4gZXJyb3IgaWYgdGhlIHF1ZXJ5IHBhcmFtZXRlcnMgcmVmZXIgdG8gbXVsdGlwbGUgd29y
a2Vycy5gXSwKLSAgICAgICAgICAgICksCi0gICAgICAgICAgICBkb2N1bWVudEVuZHBvaW50KAot
ICAgICAgICAgICAgICAgICcvdXJscy9idWlsZCcsCi0gICAgICAgICAgICAgICAgWydHRVQnXSwK
LSAgICAgICAgICAgICAgICBbJ0JyYW5jaCcsICdDb25maWd1cmF0aW9uJywgJ0xpbWl0JywgJ1Jl
cG9zaXRvcnknLCAnVGltZScsICdVVUlEJ10sCi0gICAgICAgICAgICAgICAgW2BSZWRpcmVjdCB0
byB0aGUgY29udGludW91cyBpbnRlZ3JhdGlvbiBVUkwgZm9yIGEgc3BlY2lmaWMgYnVpbGQgYXNz
b2NpYXRlZCB3aXRoIHRoZSBwcm92aWRlZCBwYXJhbWV0ZXJzLiBOb3RlIHRoYXQgd2hpbGUgdGhp
cyBlbmRwb2ludCBhY2NlcHRzIHRoZSBzdGFuZGFyZCAke2xvY2FsTGluayhbJ1F1ZXJ5IFBhcmFt
ZXRlcnMnLCAnQ29uZmlndXJhdGlvbiddLCAnY29uZmlndXJhdGlvbicpfSBhbmQgJHtsb2NhbExp
bmsoWydRdWVyeSBQYXJhbWV0ZXJzJywgJ1VVSUQnXSwgJ1VVSUQnKX0gcXVlcnkgcGFyYW1ldGVy
cywgdGhpcyBlbmRwb2ludCB3aWxsIHJldHVybiBhbiBlcnJvciBpZiB0aGUgcXVlcnkgcGFyYW1l
dGVycyByZWZlciB0byBtdWx0aXBsZSBidWlsZHMuYF0sCi0gICAgICAgICAgICApLAotICAgICAg
ICBdLAotICAgIH0sICdRdWVyeSBQYXJhbWV0ZXJzJzogewotICAgICAgICAnQWdncmVnYXRpb24n
OiBbCi0gICAgICAgICAgICBgU29tZSBlbmRwb2ludHMgaW4gdGhlIHJlc3VsdHMgZGF0YWJhc2Ug
YWdncmVnYXRlIGRhdGEgZnJvbSBtdWx0aXBsZSB0ZXN0IHJ1bnMuIFN1Y2ggZW5kcG9pbnRzIGFj
Y2VwdCBxdWVyeSBwYXJhbWV0ZXJzIHRoYXQgY29udHJvbCBob3cgdGhpcyBhZ2dyZWdhdGlvbiBp
cyBwcmVmb3JtZWQuIFRoZSBmaXJzdCBvZiB0aGVzZSBpcyB0aGUgY29sbGFwc2VkIHBhcmFtZXRl
ciwgd2hpY2ggaXMgc2V0IHRvIFRydWUgYnkgZGVmYXVsdCBpbiBhZ2dyZWdhdGlvbiBlbmRwb2lu
dHM6YCwKLSAgICAgICAgICAgIGNvZGVCbG9jaygnY29sbGFwc2VkPUZhbHNlJyksCi0gICAgICAg
ICAgICBgVGhlIGNvbGxhcHNlZCBwYXJhbWV0ZXIgaW5kaWNhdGVzIHRoYXQgYSBzaW5nbGUgcmVz
dWx0IHdpbGwgYmUgcmV0dXJuZWQgZm9yIGFsbCB1cGxvYWRzIHdoaWNoIG1hdGNoIHRoZSBzcGVj
aWZpZWQgY3JpdGVyaWEuIElmIGZhbHNlLCBhZ2dyZWdhdGlvbiBlbmRwb2ludHMgd2lsbCByZXR1
cm4gdGhlIHJlc3VsdHMgd2hpY2ggd291bGQgaGF2ZSBvdGhlcndpc2UgYmVlbiBhZ2dyZWdhdGVk
LmAsCi0gICAgICAgICAgICBgQmVjYXVzZSB0aGUgcmVzdWx0cyBkYXRhYmFzZSBkaXN0aW5ndWlz
aGVzIGJldHdlZW4gZXhwZWN0ZWQgYW5kIHVuZXhwZWN0ZWQgZmFpbHVyZXMsIGVuZHBvaW50cyBw
ZXJmb3JtaW5nIGFnZ3JlZ2F0aW9uIHdpbGwgb2Z0ZW4gZmlsdGVyIG91dCBleHBlY3RlZCBmYWls
dXJlcywgYW5kIGZsYWcgdW5leHBlY3RlZCBwYXNzZXMuIFRvIG1vZGlmeSB0aGUgYmVoYXZpb3Ig
b2YgdGhlc2UgYWxnb3JpdGhtcywgdGhlc2UgZW5kcG9pbnRzIHdpbGwgc3VwcG9ydCB0aGUgdW5l
eHBlY3RlZCBmbGFnOmAsCi0gICAgICAgICAgICBjb2RlQmxvY2soJ3VuZXhwZWN0ZWQ9RmFsc2Un
KSwKLSAgICAgICAgICAgIGBCeSBkZWZhdWx0LCB0aGlzIGZsYWcgaXMgJ1RydWUnIGFuZCBlbmRw
b2ludHMgd2lsbCBpZ25vcmUgdGVzdHMgd2hpY2ggbWF0Y2hlZCB0aGVpciBleHBlY3RlZCBiZWhh
dmlvci4gSWYgc2V0IHRvICdGYWxzZScsIGVuZHBvaW50cyB3aWxsIHJldHVybiByZXN1bHRzIGZv
ciBhbGwgZmFpbGluZyB0ZXN0cywgcmVnYXJkbGVzcyBvZiB3aGF0IHRoZWlyIGV4cGVjdGF0aW9u
IGlzLmAsCi0gICAgICAgIF0sCi0gICAgICAgICdCcmFuY2gnOiBbCi0gICAgICAgICAgICBgTW9z
dCBkYXRhIGluIHRoZSByZXN1bHRzIGRhdGFiYXNlIGlzIHBhcnRpdGlvbmVkIGJ5IGJyYW5jaCwg
YW5kIGl0IGlzIGdlbmVyYWxseSBleHBlY3RlZCB0aGF0IHJlc3VsdHMgb24gc2VwZXJhdGUgYnJh
bmNoZXMgYXJlIGluZGVwZW5kZW50IG9mIG9uZSBhbm90aGVyLiBCeSBkZWZhdWx0LCBlbmRwb2lu
dHMgdGhhdCBzdXBwb3J0IHRoZSBicmFuY2ggcXVlcnkgd2lsbCBhc3N1bWUgdGhhdCB0aGUgYnJh
bmNoIGlzIG1hc3RlciBmb3IgZ2l0IHJlcG9zaXRvcmllcyBhbmQgdHJ1bmsgZm9yIFNWTiByZXBv
c2l0b3JpZXMgaWYgbm8gdmFsdWUgaXMgc3BlY2lmaWVkLiBJZiBtdWx0aXBsZSB2YWx1ZXMgZm9y
IGJyYW5jaCBhcmUgc3BlY2lmaWVkLCBvbmx5IHRoZSBmaXJzdCB3aWxsIGJlIHJlc3BlY3RlZC4g
QSByZXF1ZXN0IHdoaWNoIGludGVuZGVkIHRvIHNlYXJjaCBmb3IgcmVzdWx0cyBvbiBvbmx5IHJl
c3VsdHMgb24gdGhlIHNhZmFyaS02MDcgYnJhbmNoIHdvdWxkIHVzZSBhIHF1ZXJ5IGxpa2UgdGhp
czpgLAotICAgICAgICAgICAgY29kZUJsb2NrKCdicmFuY2g9c2FmYXJpLTYwNycpLAotICAgICAg
ICBdLAotICAgICAgICAnQ29uZmlndXJhdGlvbic6IFsKLSAgICAgICAgICAgIGBDb25maWd1cmF0
aW9ucyBhcmUgdGhlIGtleSB3aGljaCBkZWZpbmVzIGEgc3BlY2lmaWMgcm93IHdpdGhpbiB0aGUg
cmVzdWx0cyBkYXRhYmFzZS4gVXBsb2FkcyB3aGljaCBzaGFyZSBhIGNvbmZpZ3VyYXRpb24sIGJ1
dCBub3QgYSBVVUlELCB3aWxsIGFwcGVhciBpbiB0aGUgc2FtZSByb3cgb24gYSB0aW1lbGluZS4g
Q29uZmlndXJhdGlvbnMgYXJlIHJlcHJlc2VudGVkIHdpdGhpbiB0aGUgcmVzdWx0cyBkYXRhYmFz
ZSBhcyBhbiBvYmplY3Q6YCwKLSAgICAgICAgICAgIGNvZGVCbG9jaygne1xuJyArCi0gICAgICAg
ICAgICAgICAgJyAgICAiYXJjaGl0ZWN0dXJlIjogPHN0cmluZyByZXByZXNlbnRpbmcgYXJjaGl0
ZWN0dXJlLCBlLmcuIHg4Nl82NCwgYXJtNjQ+LFxuJyArCi0gICAgICAgICAgICAgICAgJyAgICAi
cGxhdGZvcm0iOiA8c3RyaW5nIHJlcHJlc2VudGluZyBwbGF0Zm9ybSBmYW1pbHksIGUuZy4gbWFj
LCBpb3M+LFxuJyArCi0gICAgICAgICAgICAgICAgJyAgICAiaXNfc2ltdWxhdG9yIjogPGJvb2xl
YW4gd2hpY2ggaXMgdHJ1ZSBpZiB0aGUgY29uZmlndXJhdGlvbiB3YXMgc2ltdWxhdGluZyBhbiBl
bWJlZGRlZCBkZXZpY2U+LFxuJyArCi0gICAgICAgICAgICAgICAgJyAgICAidmVyc2lvbiI6IDxz
dHJpbmcgb2YgdGhlIGZvcm0geC54LnggcmVwcmVzZW50aW5nIHRoZSBPUyB2ZXJzaW9uPixcbicg
KwotICAgICAgICAgICAgICAgICcgICAgImZsYXZvciI6IDx3aWxkLWNhcmQgc3RyaW5nIGFsbG93
aW5nIGZvciBjdXN0b20gY29uZmlndXJhdGlvbnM+LFxuJyArCi0gICAgICAgICAgICAgICAgJyAg
ICAic3R5bGUiOiA8ZGVidWcsIHJlbGVhc2UsIGd1YXJkLW1hbGxvYywgZWN0Lj4sXG4nICsKLSAg
ICAgICAgICAgICAgICAnICAgICJtb2RlbCI6IDxpUGhvbmUgNywgTWFjbWluaTYsMiwgZWN0Lj4s
XG4nICsKLSAgICAgICAgICAgICAgICAnICAgICJ2ZXJzaW9uX25hbWUiOiA8TW9qYXZlLCBDYXRh
bGluYSwgaU9TIDEzLCBlY3QuPixcbicgKwotICAgICAgICAgICAgICAgICcgICAgInNkayI6IDwx
OEEzOTEsIDE1QTQzMiwgZWN0Lj5cbicgKwotICAgICAgICAgICAgICAgICd9JyksCi0gICAgICAg
ICAgICBgQW55IG9mIHRoZSB2YXJpYWJsZXMgd2hpY2ggbWFrZSB1cCBhIGNvbmZpZ3VyYXRpb24g
YXJlIHZhbGlkIHF1ZXJ5IHBhcmFtZXRlcnMgdG8gYW4gZW5kcG9pbnQgd2hpY2ggc3VwcG9ydHMg
Y29uZmlndXJhdGlvbiBxdWVyaWVzLiBGb3IgZXhhbXBsZSwgYSBxdWVyeSBjb250YWluaW5nOmAs
Ci0gICAgICAgICAgICBjb2RlQmxvY2soJ3BsYXRmb3JtPW1hYyZmbGF2b3I9cmVsZWFzZScpLAot
ICAgICAgICAgICAgYHdpbGwgb25seSByZXR1cm4gZGF0YSBhc3NvY2lhdGVkIHdpdGggTWFjJ3Mg
cnVubmluZyByZWxlYXNlIGJpbmFyaWVzLiBJZiB0aGUgc2FtZSB2YXJpYWJsZSBpcyBwcm92aWRl
ZCBtdWx0aXBsZSB0aW1lcyBpbiBhIHNpbmdsZSBxdWVyeSwgbGlrZSB0aGlzOmAsCi0gICAgICAg
ICAgICBjb2RlQmxvY2soJ21vZGVsPWlQaG9uZSUyMFNFJm1vZGVsPWlQaG9uZSUyMDcnKSwKLSAg
ICAgICAgICAgIGB0aGUgcmVzdWx0aW5nIHF1ZXJ5IHdpbGwgcmV0dXJuIGRhdGEgYXNzb2NpYXRl
ZCB3aXRoIGlQaG9uZSBTRSBvciBpUGhvbmUgNy5gLAotICAgICAgICAgICAgYEVuZHBvaW50cyB3
aGljaCBzdXBwb3J0IHF1ZXJ5aW5nIGJ5IGNvbmZpZ3VyYXRpb25zIGFyZSBvcHRpbWl6ZWQgdG8g
b25seSBzZWFyY2ggdGhlIGxhc3QgMiB3ZWVrcyBvZiBjb25maWd1cmF0aW9ucy4gVGhpcyBtZWFu
cyB0aGF0IGlmIGEgY29uZmlndXJhdGlvbiBoYXMgbm90IHJlcG9ydGVkIHJlc3VsdHMgaW4gbW9y
ZSB0aGFuIDIgd2Vla3MsIGl0J3MgZGF0YSB3aWxsIG5vdCBiZSBhY2Nlc3NhYmxlIGJ5IGRlZmF1
bHQuIFRvIHNlYXJjaCBhbGwgaGlzdG9yaWMgY29uZmlndXJhdGlvbnMsIGFkZCB0aGlzOmAsCi0g
ICAgICAgICAgICBjb2RlQmxvY2soJ3JlY2VudD1GYWxzZScpLAotICAgICAgICAgICAgYHRvIHlv
dXIgcXVlcnkuIFRoZSBkb3duc2lkZSBvZiBzZWFyY2hpbmcgYWxsIGNvbmZpZ3VyYXRpb25zIGlz
IHRoYXQgdGhlIGRlZmF1bHQgYmVoYXZpb3Igb2Ygc2VhcmNoaW5nIGFsbCByZWNlbnQgY29uZmln
dXJhdGlvbnMgaWYgbm8gcXVlcnkgcGFyYW1ldGVycyBhcmUgcHJvdmlkZWQgaXMgZGlzYWJsZWQg
YmVjYXVzZSB0aGUgcmVzdWx0cyBkYXRhYmFzZSBjYW5ub3Qgc2VhcmNoIGJ5IGFuIHVuYm91bmRl
ZCBudW1iZXIgb2YgY29uZmlndXJhdGlvbnMuYCwKLSAgICAgICAgXSwKLSAgICAgICAgJ0xpbWl0
JzogWwotICAgICAgICAgICAgYFRoZSB1bmRlcmx5aW5nIGFyY2hpdGVjdHVyZSBvZiB0aGUgcmVz
dWx0cyBkYXRhYmFzZSBkb2VzIG5vdCBhbGxvdyB1bmxpbWl0ZWQgcXVlcnkgc2l6ZXMuIE1vc3Qg
ZW5kcG9pbnRzIGFjY2VwdCBhIGxpbWl0IHF1ZXJ5IHdoaWNoIGxvb2tzIGxpa2UgdGhpczpgLAot
ICAgICAgICAgICAgY29kZUJsb2NrKCdsaW1pdD0xNTAnKSwKLSAgICAgICAgICAgIGBCeSBkZWZh
dWx0LCB0aGUgbGltaXQgb2YgbW9zdCBxdWVyaWVzIGlzIDEwMC4gQmVjYXVzZSBvZiB0aGUgYXJj
aGl0ZWN0dXJlIG9mIHRoZSByZXN1bHRzIGRhdGFiYXNlJ3MgYmFja2VuZCwgdGhlIGxpbWl0IHdp
bGwgYWN0dWFsbHkgb3BlcmF0ZSBvbiBlYWNoIHBhcnRpdGlvbmluZyBrZXkgc2VwZXJhdGVseS4g
Rm9yIHRoZSAke2xvY2FsTGluayhbJ0FQSScsICcvYXBpL2NvbW1pdHMvZmluZCddLCAnL2FwaS9j
b21taXRzL2ZpbmQnKX0gZW5kcG9pbnQsIGZvciBleGFtcGxlLCB0aGUgbGltaXQgd2lsbCBvcGVy
YXRlIG9uIGVhY2ggcmVwb3NpdG9yeSBzZXBlcmF0ZWx5LiBTbyBhIHJlcXVlc3QgbGlrZSB0aGlz
OmAsCi0gICAgICAgICAgICBjb2RlQmxvY2soJy9hcGkvY29tbWl0cy9maW5kP2xpbWl0PTE1MCcp
LAotICAgICAgICAgICAgYG9uIGEgcmVzdWx0cyBkYXRhYmFzZSBpbnN0YW5jZSB0cmFja2luZyAy
IHJlcG9zaXRvcmllcyBjb3VsZCBwb3RlbnRpYWxseSByZXR1cm4gMzAwIGNvbW1pdHMsIGluc3Rl
YWQgb2YgdGhlIDE1MCB0aGF0IHlvdSBtaWdodCBleHBlY3QuYCwKLSAgICAgICAgXSwKLSAgICAg
ICAgJ1JlcG9zaXRvcnknOiBbCi0gICAgICAgICAgICBgVGhlICdyZXBvc2l0b3J5X2lkJyBxdWVy
eSBhcmd1ZW1lbnQgYWxsb3dzIGEgcmVxdWVzdCB0byBiZSBsaW1pdGVkIHRvIGEgc3BlY2lmaWMg
cmVwb3NpdG9yeS4gQnkgZGVmYXVsdCwgZW5kcG9pbnRzIHdoaWNoIHN1cHBvcnQgdGhlIHJlcG9z
aXRvcnlfaWQgcXVlcnkgYXJndW1lbnQgd2lsbCBzZWFyY2ggYWxsIHJlcG9zaXRvcmllcyBpZiBu
byByZXBvc2l0b3J5X2lkIGlzIHByb3ZpZGVkLiBBIHJlcXVlc3Qgd2hpY2ggb25seSBzZWFyY2hl
cyBmb3IgY29tbWl0cyBpbiB0aGUgV2ViS2l0IHJlcG9zaXRvcnkgd291bGQgaGF2ZSBhIHF1ZXJ5
IGFyZ3VtZW50IGxpa2UgdGhpczpgLAotICAgICAgICAgICAgY29kZUJsb2NrKCdyZXBvc2l0b3J5
X2lkPXdlYmtpdCcpLAotICAgICAgICBdLAotICAgICAgICAnU3VpdGUnOiBbCi0gICAgICAgICAg
ICBgSW4gbW9zdCBjYXNlcywgdGhlIHN1aXRlIGlzIGRlZmluZWQgYnkgdGhlIHBhdGggb2YgYW4g
ZW5kcG9pbnQsIG5vdCB0aGUgcGFyYW1ldGVycy4gSW4gc29tZSBjYXNlcywgaG93ZXZlciwgc3Vp
dGUgaXMgZGVmaW5lZCBieSB0aGUgcGFyYW1ldGVycy4gSW4gdGhlc2UgY2FzZXMsIHRoZSBxdWVy
eSBwYXJhbWV0ZXJzIHdpbGwgbG9vayBsaWtlIHRoaXM6YCwKLSAgICAgICAgICAgIGNvZGVCbG9j
aygnc3VpdGU9bGF5b3V0LXRlc3RzJyksCi0gICAgICAgICAgICBgSXQgaXMgYWxzbyB2YWxpZCB0
byBkZWZpbmUgbXVsdGlwbGUgc3VpdGVzIGluIGEgc2luZ2xlIHF1ZXJ5IG9uIGVuZHBvaW50cyB0
aGF0IHN1cHBvcnQgc3VpdGUgcXVlcmllcywgbGlrZSB0aGlzOmAsCi0gICAgICAgICAgICBjb2Rl
QmxvY2soJ3N1aXRlPWxheW91dC10ZXN0cyZzdWl0ZT13ZWJraXRweS10ZXN0cycpLAotICAgICAg
ICAgICAgYEEgcXVlcnkgbGlrZSB0aGlzIHdpbGwgcmV0dXJuIGRhdGEgYXNzb2NpYXRlZCB3aXRo
IHRoZSBsYXlvdXQtdGVzdHMgc3VpdGUgYW5kIHRoZSB3ZWJraXRweS10ZXN0cyBzdWl0ZS4gSWYg
bm90IHN1aXRlIGlzIHByb3ZpZGVkLCBkYXRhIGZvciBhbGwgYXZhaWxhYmxlIHN1aXRlcyB3aWxs
IGJlIHJldHVybmVkLmAsCi0gICAgICAgIF0sCi0gICAgICAgICdUaW1lJyA6IFsKLSAgICAgICAg
ICAgIGBUaGUgdGltZSBxdWVyeSBpcyBzZXBlcmF0ZSBmcm9tIHRoZSAke2xvY2FsTGluayhbJ1F1
ZXJ5IFBhcmFtZXRlcnMnLCAnVVVJRCddLCAnVVVJRCcpfSBxdWVyeS4gVGhlIHRpbWUgcXVlcnkg
YWxsb3dzIGRhdGEgdG8gYmUgc29ydGVkIGFuZCByZXRyZWl2ZWQgYnkgdGhlIFVUQyB0aW1lc3Rh
bXAgb2YgdGhlIHNwZWNpZmljIHJ1biB0aGF0IGRhdGEgaXMgYXNzb2NpYXRlZCB3aXRoLiBGb3Ig
ZXhhbXBsZSwgYSByZXF1ZXN0IHByb3ZpZGVkIHdpdGggdGhpcyBxdWVyeTpgLAotICAgICAgICAg
ICAgY29kZUJsb2NrKCdhZnRlcl90aW1lPTE1NjI5NTI0NzMmYmVmb3JlX3RpbWU9MTU2Mjk2MTAw
NicpLAotICAgICAgICAgICAgYHdpbGwgb25seSByZXR1cm4gZGF0YSBhc3NvY2lhdGVkIHdpdGgg
cnVucyB0aGF0IG9jY3VycmVkIGFmdGVyICR7bmV3IERhdGUoMTU2Mjk1MjQ3MyAqIDEwMDApLnRv
TG9jYWxlU3RyaW5nKCl9IGJ1dCBiZWZvcmUgJHtuZXcgRGF0ZSgxNTYyOTYxMDA2ICogMTAwMCku
dG9Mb2NhbGVTdHJpbmcoKX0uYCwKLSAgICAgICAgXSwKLSAgICAgICAgJ1Rlc3QnOiBbCi0gICAg
ICAgICAgICBgSW4gbW9zdCBjYXNlcywgdGhlIHRlc3QgaXMgZGVmaW5lZCBieSB0aGUgcGF0aCBv
ZiBhbiBlbmRwb2ludCwgbm90IHRoZSBwYXJhbWV0ZXJzLiBJbiBzb21lIGNhc2VzLCBob3dldmVy
LCB0ZXN0IGlzIGRlZmluZWQgYnkgdGhlIHBhcmFtZXRlcnMuIEluIHRoZXNlIGNhc2VzLCB0aGUg
cXVlcnkgcGFyYW1ldGVycyB3aWxsIGxvb2sgbGlrZSB0aGlzOmAsCi0gICAgICAgICAgICBjb2Rl
QmxvY2soJ3Rlc3Q9dGVzdC5uYW1lJyksCi0gICAgICAgICAgICBgSXQgaXMgYWxzbyB2YWxpZCB0
byBkZWZpbmUgbXVsdGlwbGUgdGVzdHMgaW4gYSBzaW5nbGUgcXVlcnkgb24gZW5kcG9pbnRzIHRl
c3Qgc3VwcG9ydCB0ZXN0IHF1ZXJpZXMsIGxpa2UgdGhpczpgLAotICAgICAgICAgICAgY29kZUJs
b2NrKCd0ZXN0PXRlc3QubmFtZSZ0ZXN0PW90aGVyLm5hbWUnKSwKLSAgICAgICAgICAgIGBBIHF1
ZXJ5IGxpa2UgdGhpcyB3aWxsIHJldHVybiB0ZXN0IG5hbWVzIHRoYXQgc3RhcnQgd2l0aCBlaXRo
ZXIgJ3Rlc3QubmFtZScgb3IgJ290aGVyLm5hbWUnLmAsCi0gICAgICAgIF0sCi0gICAgICAgICdV
VUlEJzogWwotICAgICAgICAgICAgYFVsdGltYXRlbHksIG1vc3QgZGF0YSBpbiB0aGUgcmVzdWx0
cyBkYXRhYmFzZSBpcyBzb3J0ZWQgYnkgVVVJRC4gQXMgbWVudGlvbmVkIGluIHRoZSAke2xvY2Fs
TGluayhbJ0FQSScsICdDb21taXRzJ10sICdjb21taXRzIHNlY3Rpb24nKX0sIFVVSURzIGFyZSBk
ZWZpbmVkIGJ5IHRoZSB0aW1lc3RhbXAgb2YgYSBjb21taXQgYW5kIHRoZSBjb21taXQgb3JkZXIs
IHdoZXJlIHRoZSBjb21taXQgb3JkZXIgaXMgdGhlIG9yZGVyIGEgY29tbWl0IGFwcGVhcnMgaW4g
aXQncyBwYXRjaCBzZXJpZXMuIFNpbmNlIG1vc3QgY29tbWl0cyBhcmUgbm90IGluIGEgcGF0Y2gg
c2VyaWVzLCBtb3N0IGNvbW1pdHMgaGF2ZSBhbiBvcmRlciBvZiAwLiBDb21taXQgVVVJRHMgYXJl
IGNhbGN1bGF0ZWQgd2l0aCB0aGUgZm9sbG93aW5nIGVxdWF0aW9uOmAsCi0gICAgICAgICAgICBj
b2RlQmxvY2soJ2NvbW1pdC51dWlkID0gY29tbWl0LnRpbWVzdGFtcCAqIDEwMCArIGNvbW1pdC5v
cmRlcicpLAotICAgICAgICAgICAgYEFsbCBlbmRwb2ludHMgd2hpY2ggYWNjZXB0IHRpbWUgcXVl
cmllcyBhbGxvdyBkYXRhIHRvIGJlIHJldHJpZXZlZCBieSBhIFVVSUQgd2l0aCBhIHF1ZXJ5IGxp
a2UgdGhpczpgLAotICAgICAgICAgICAgY29kZUJsb2NrKCd1dWlkPTE1NjI5NTI0NzMwMCcpLAot
ICAgICAgICAgICAgYFNpbmNlIFVVSURzIGFyZSBpbnRlZ2VycywgZW5kcG9pbnRzIHdoaWNoIGFj
Y2VwdCB0aW1lIHF1ZXJpZXMgYWxzbyBhY2NlcHQgVVVJRCByYW5nZXMuIEEgcXVlcnkgbG9va2lu
ZyBmb3IgZGF0YSBiZXR3ZWVuIFVVSURzIDE1NjI5NTE0OTEwMCBhbmQgMTU2Mjk1MjQ3MzAwIHdv
dWxkIGJlIGZvcm1hdGVkIGxpa2UgdGhpczpgLAotICAgICAgICAgICAgY29kZUJsb2NrKCdhZnRl
cl91dWlkPTE1NjI5NTE0OTEwMCZiZWZvcmVfdXVpZD0xNTYyOTUyNDczMDAnKSwKLSAgICAgICAg
ICAgIGBXZSBhbHNvIGtub3cgdGhhdCB0aW1lc3RhbXBzIGNhbiBiZSBlYXNpbHkgY29udmVydGVk
IHRvIFVVSURzLiBFbmRwb2ludHMgd2hpY2ggc3VwcG9ydCBxdWVyeWluZyBieSBVVUlEIGFsc28g
c3VwcG9ydCBxdWVyeWluZyBieSBVVEMgdGltZXN0YW1wLiBPdXIgcHJldmlvdXMgcXVlcnkgY291
bGQgYmUgaW5zdGVhZCB3cml0dGVuIGxpa2UgdGhpczpgLAotICAgICAgICAgICAgY29kZUJsb2Nr
KCdhZnRlcl90aW1lc3RhbXA9MTU2Mjk1MTQ5MSZiZWZvcmVfdGltZXN0YW1wPTE1NjI5NTI0NzMn
KSwKLSAgICAgICAgICAgIGBDb21taXRzIGNhbiBhbHNvIGJlIHRyYW5zbGF0ZWQgdG8gdGltZXN0
YW1wLCBhbHRob3VnaCB3aXRoIGEgYml0IG1vcmUgd29yayByZXF1aXJlZCBmcm9tIHRoZSBiYWNr
LWVuZC4gRW5kcG9pbnRzIHdoaWNoIHN1cHBvcnQgcXVlcnlpbmcgYnkgVVVJRCBhbHNvIHN1cHBv
cnQgcXVlcnlpbmcgYnkgY29tbWl0IGluZm9ybWF0aW9uLiBJbiB0aGUgZmlyc3QgZXhhbXBsZSBp
biB0aGlzIHNlY3Rpb24sIHdlIHF1ZXJpZWQgYnkgVVVJRCAxNTYyOTUyNDczMDAuIFRoaXMgY29y
cmVzcG9uZHMgdG8gJHtleHRlcm5hbExpbmsoJ2h0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5n
ZXNldC8yNDczOTEvd2Via2l0JywgJ3IyNDczOTEnKX0uIFdlIGNvdWxkIGluc3RlYWQgcXVlcnkg
YnkgdGhlIGNvbW1pdCBpbmZvcm1hdGlvbjpgLAotICAgICAgICAgICAgY29kZUJsb2NrKCdpZD0y
NDczOTEmcmVwb3NpdG9yeV9pZD13ZWJraXQmYnJhbmNoPXRydW5rJyksCi0gICAgICAgICAgICBg
QnV0LCBhcyBvdXRsaW5lZCBpbiB0aGUgb3ZlcnZpZXdzIGFib3V0ICR7bG9jYWxMaW5rKFsnUXVl
cnkgUGFyYW1ldGVycycsICdCcmFuY2gnXSwgJ2JyYW5jaGVzJyl9IGFuZCAke2xvY2FsTGluayhb
J1F1ZXJ5IFBhcmFtZXRlcnMnLCAnUmVwb3NpdG9yeSddLCAncmVwb3NpdG9yaWVzJyl9LCBlbmRw
b2ludHMgd2hpY2ggc3VwcG9ydCB0aG9zZSBxdWVyaWVzIGhhdmUgZGVmYXVsdHMgd2hpY2ggY292
ZXIgbWFueSBjYXNlcywgc28gdGhlIHByZXZpb3VzIHF1ZXJ5IGNvdWxkIGJlIHNpbXBsaWZpZWQg
dG86YCwKLSAgICAgICAgICAgIGNvZGVCbG9jaygnaWQ9MjQ3MzkxJyksCi0gICAgICAgICAgICBg
QmVjYXVzZSBlbmRwb2ludHMgc3VwcG9ydGluZyB0aW1lIGFyZSBjb252ZXJ0IGV2ZXJ5dGhpbmcg
dG8gVVVJRCBvbiB0aGUgYmFja2VuZCwgdGhlIHF1ZXJpZXMgdG8gdGhlc2UgZW5kcG9pbnRzIGFy
ZSBxdWl0ZSBmbGV4aWJsZS4gVGhlIGZvbGxvd2luZyBhcmUgYWxsIGV4YW1wbGVzIG9mIHZhbGlk
IHRpbWUgcXVlcmllczpgLAotICAgICAgICAgICAgY29kZUJsb2NrKCdhZnRlcl9pZD0yNDczOTEm
cmVwb3NpdG9yeV9pZD13ZWJraXQnKSwKLSAgICAgICAgICAgIGNvZGVCbG9jaygnYWZ0ZXJfaWQ9
MjQ3MzkwJmJlZm9yZV90aW1lc3RhbXA9MTU2Mjk1MjQ3MycpLAotICAgICAgICAgICAgY29kZUJs
b2NrKCdiZWZvcmVfaWQ9MjQ3MzkxJmFmdGVyX3V1aWQ9MTU2Mjk1MTQ5MTAwJmJlZm9yZV9icmFu
Y2g9dHJ1bmsnKSwKLSAgICAgICAgXSwKLSAgICB9Ci19Ci0KLWNvbnN0IHNpZGViYXJDb250cm9s
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnbW9iaWxlLXNpZGViYXItY29udHJv
bCcpWzBdOwotc2lkZWJhckNvbnRyb2wuY2xhc3NMaXN0LmFkZCgnZGlzcGxheScpOwotCi1jb25z
dCBzaWRlYmFyUmVmID0gUkVGLmNyZWF0ZVJlZih7Ci0gICAgb25FbGVtZW50TW91bnQ6IChlbGVt
ZW50KSA9PiB7Ci0gICAgICAgIHNpZGViYXJDb250cm9sLm9uY2xpY2sgPSAoKSA9PiB7Ci0gICAg
ICAgICAgICBpZiAoZWxlbWVudC5zdHlsZS5kaXNwbGF5KQotICAgICAgICAgICAgICAgIGVsZW1l
bnQuc3R5bGUuZGlzcGxheSA9IG51bGw7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgZWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzsKLSAgICAgICAgfQotICAgIH0KLX0p
OwotCi1ET00uaW5qZWN0KAotICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhcHAnKSwKLSAg
ICBgPGRpdiBjbGFzcz0ic2lkZWJhciB1bmRlci10b3BiYXItd2l0aC1hY3Rpb25zIiByZWY9IiR7
c2lkZWJhclJlZn0iPgotICAgICAgICA8ZGl2IGNsYXNzPSJsaXN0Ij4KLSAgICAgICAgJHtPYmpl
Y3Qua2V5cyhkb2N1bWVudGF0aW9uKS5tYXAoKHByaW1hcnkpID0+IHsKLSAgICAgICAgICAgIHJl
dHVybiBgPGRpdiBjbGFzcz0iaXRlbSI+Ci0gICAgICAgICAgICAgICAgICAgIDxoMz48YSBocmVm
PSIjJHtwcmltYXJ5LnJlcGxhY2UoL1xzL2csICctJyl9Ij4ke3ByaW1hcnl9PC9hPjwvaDM+Ci0g
ICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaXRlbSI+
Ci0gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Imxpc3QiPgotICAgICAgICAgICAgICAg
ICAgICAgICAgJHtPYmplY3Qua2V5cyhkb2N1bWVudGF0aW9uW3ByaW1hcnldKS5tYXAoKHNlY29u
ZGFyeSkgPT4gewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBgPGRpdiBjbGFz
cz0iaXRlbSBzdWIiPjxhIGhyZWY9IiMkeyhwcmltYXJ5ICsgJy0nICsgc2Vjb25kYXJ5KS5yZXBs
YWNlKC9ccy9nLCAnLScpfSI+JHtzZWNvbmRhcnl9PC9hPjwvZGl2PmAKLSAgICAgICAgICAgICAg
ICAgICAgICAgIH0pLmpvaW4oJycpfQotICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAg
ICAgICAgICAgICA8L2Rpdj5gOwotICAgICAgICB9KS5qb2luKCcnKX0KLSAgICAgICAgPC9kaXY+
Ci0gICAgPC9kaXY+Ci0gICAgPGRpdiBjbGFzcz0ibWFpbiB1bmRlci10b3BiYXItd2l0aC1hY3Rp
b25zIj4KLSAgICAgICAgJHtPYmplY3Qua2V5cyhkb2N1bWVudGF0aW9uKS5tYXAoKHByaW1hcnkp
ID0+IHsKLSAgICAgICAgICAgIHJldHVybiBgPGRpdiBjbGFzcz0iYXJ0aWNsZSBjb250ZW50IHNl
Y3Rpb24iPgotICAgICAgICAgICAgICAgICAgICAke2p1bXBJZFVuZGVySGVhZGVyKHByaW1hcnkp
fQotICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkZXIiPjxoMT4ke3ByaW1hcnl9
PC9oMT48L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgJHtPYmplY3Qua2V5cyhkb2N1bWVudGF0
aW9uW3ByaW1hcnldKS5tYXAoKHNlY29uZGFyeSkgPT4gewotICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGA8ZGl2IGNsYXNzPSJoZWFkZXIiPgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAke2p1bXBJZFVuZGVySGVhZGVyKGAke3ByaW1hcnl9LSR7c2Vjb25kYXJ5fWApfQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZSI+PGgyPiR7
c2Vjb25kYXJ5fTwvaDI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtkb2N1bWVudGF0aW9uW3ByaW1hcnldW3Nl
Y29uZGFyeV0ubWFwKChkYXRhKSA9PiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBgPGRpdiBjbGFzcz0iY29udGVudCI+JHtkYXRhfTwvZGl2PmA7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfSkuam9pbignJyl9YDsKLSAgICAgICAgICAgICAgICAgICAgfSku
am9pbignJyl9Ci0gICAgICAgICAgICAgICAgPC9kaXY+YDsKLSAgICAgICAgfSkuam9pbignJyl9
Ci0gICAgPC9kaXY+YCwKLSkKLQotPC9zY3JpcHQ+Ci0KLXslIGVuZGJsb2NrICV9Ci0KLXslIGJs
b2NrIGNvbnRlbnQgJX0KLTxkaXYgaWQ9ImFwcCI+PC9kaXY+Ci17JSBlbmRibG9jayAlfQpJbmRl
eDogVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy90ZW1wbGF0ZXMvZXJyb3IuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS92aWV3L3RlbXBs
YXRlcy9lcnJvci5odG1sCShyZXZpc2lvbiAyNjU1MzEpCisrKyBUb29scy9yZXN1bHRzZGJweS9y
ZXN1bHRzZGJweS92aWV3L3RlbXBsYXRlcy9lcnJvci5odG1sCShub25leGlzdGVudCkKQEAgLTEs
MzQgKzAsMCBAQAotPCEtLQotIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0KLSBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSBhcmUgbWV0OgotIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0KLSBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gIkFTIElTIiBB
TkQgQU5ZCi0gRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKLSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKLSBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCi0tLT4KLQoteyUgZXh0ZW5kcyAiYmFzZS5odG1sIiAlfQoteyUgYmxvY2sgaGVhZCAl
fQoteyUgZW5kYmxvY2sgJX0KLXslIGJsb2NrIGNvbnRlbnQgJX0KLTxkaXYgY2xhc3M9ImNvbnRl
bnQiPgotICAgIDxoMj57eyBuYW1lIH19PC9oMj4KLSAgICA8ZGl2IGNsYXNzPSJ0ZXh0Ij57eyBk
ZXNjcmlwdGlvbiB9fTwvZGl2PgotPC9kaXY+Ci17JSBlbmRibG9jayAlfQpJbmRleDogVG9vbHMv
cmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy90ZW1wbGF0ZXMvaW52ZXN0aWdhdGUuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS92aWV3L3RlbXBsYXRl
cy9pbnZlc3RpZ2F0ZS5odG1sCShyZXZpc2lvbiAyNjU1MzEpCisrKyBUb29scy9yZXN1bHRzZGJw
eS9yZXN1bHRzZGJweS92aWV3L3RlbXBsYXRlcy9pbnZlc3RpZ2F0ZS5odG1sCShub25leGlzdGVu
dCkKQEAgLTEsNTA4ICswLDAgQEAKLTwhLS0KLSBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotCi0gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gYXJlIG1l
dDoKLSAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotCi0gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
ICJBUyBJUyIgQU5EIEFOWQotIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
LSBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAotLS0+Ci0KLXslIGV4dGVuZHMgImJhc2UuaHRtbCIgJX0KLXslIGJs
b2NrIGhlYWQgJX0KLTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9
ImFzc2V0cy9jc3MvdGltZWxpbmUuY3NzIj4KLQotPHNjcmlwdCB0eXBlPSJtb2R1bGUiPgotaW1w
b3J0IHtBcmNoaXZlUm91dGVyfSBmcm9tICcvYXNzZXRzL2pzL2FyY2hpdmVSb3V0ZXIuanMnOwot
aW1wb3J0IHtDb21taXRCYW5rfSBmcm9tICcvYXNzZXRzL2pzL2NvbW1pdC5qcyc7Ci1pbXBvcnQg
e0Vycm9yRGlzcGxheSwgUXVlcnlNb2RpZmllciwgcGFyYW1zVG9RdWVyeSwgcXVlcnlUb1BhcmFt
cywgcGVyY2VudGFnZSwgZWxhcHNlZFRpbWV9IGZyb20gJy9hc3NldHMvanMvY29tbW9uLmpzJzsK
LWltcG9ydCB7Q29uZmlndXJhdGlvbn0gZnJvbSAnL2Fzc2V0cy9qcy9jb25maWd1cmF0aW9uLmpz
JzsKLWltcG9ydCB7RXhwZWN0YXRpb25zfSBmcm9tICcvYXNzZXRzL2pzL2V4cGVjdGF0aW9ucy5q
cyc7Ci1pbXBvcnQge0RyYXdlciwgQnJhbmNoU2VsZWN0b3IsIENvbmZpZ3VyYXRpb25TZWxlY3Rv
cnN9IGZyb20gJy9hc3NldHMvanMvZHJhd2VyLmpzJzsKLWltcG9ydCB7TGVnZW5kfSBmcm9tICcv
YXNzZXRzL2pzL3RpbWVsaW5lLmpzJzsKLWltcG9ydCB7VG9vbFRpcH0gZnJvbSAnL2Fzc2V0cy9q
cy90b29sdGlwLmpzJzsKLWltcG9ydCB7RmFpbHVyZXN9IGZyb20gJy9hc3NldHMvanMvZmFpbHVy
ZXMuanMnOwotaW1wb3J0IHtET00sIFJFRiwgRXZlbnRTdHJlYW19IGZyb20gJy9saWJyYXJ5L2pz
L1JlZi5qcyc7Ci0KLWNvbnN0IERFRkFVTFRfTElNSVQgPSAxMDA7Ci1jb25zdCBTVUlURVMgPSBK
U09OLnBhcnNlKCd7eyBzdWl0ZXN8c2FmZSB9fScpOwotCi1jb25zdCB2aWV3cyA9IFtdOwotbGV0
IGFncmVnYXRlQ29ubmZpZ3VyYXRpb24gPSBDb25maWd1cmF0aW9uLmZyb21RdWVyeSgpOwotbGV0
IHJhbmdlUGFyYW1zID0ge307Ci0KLWNvbnN0IHVuZXhwZWN0ZWRRdWVyeSA9IG5ldyBRdWVyeU1v
ZGlmaWVyKCd1bmV4cGVjdGVkJyk7Ci1mdW5jdGlvbiB3aWxsRmlsdGVyRXhwZWN0ZWQoKSB7Ci0g
ICAgY29uc3QgY3VycmVudCA9IHVuZXhwZWN0ZWRRdWVyeS5jdXJyZW50KCk7Ci0gICAgaWYgKCFj
dXJyZW50Lmxlbmd0aCkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKFsndHJ1ZScsICdU
UlVFJywgJ3llcycsICdZRVMnLCAnMSddLmluY2x1ZGVzKGN1cnJlbnRbY3VycmVudC5sZW5ndGgg
LSAxXSkpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotCi1j
bGFzcyBTdWl0ZUZhaWx1cmVzVmlldyB7Ci0gICAgY29uc3RydWN0b3Ioc3VpdGUpIHsKLSAgICAg
ICAgdGhpcy5zdWl0ZSA9IHN1aXRlOwotICAgICAgICB0aGlzLmRhdGFGb3JDb25maWcgPSB7fTsK
LQotICAgICAgICB0aGlzLnJlZiA9IFJFRi5jcmVhdGVSZWYoewotICAgICAgICAgICAgc3RhdGU6
IHtkaXNwbGF5ZWQ6IHRydWV9LAotICAgICAgICAgICAgb25TdGF0ZVVwZGF0ZTogKGVsZW1lbnQs
IGRpZmYsIHN0YXRlKSA9PiB7Ci0gICAgICAgICAgICAgICAgZWxlbWVudC5zdHlsZS5kaXNwbGF5
ID0gZGlmZi5kaXNwbGF5ZWQgPyBudWxsIDogJ25vbmUnOwotICAgICAgICAgICAgfQotICAgICAg
ICB9KTsKLSAgICAgICAgdGhpcy5zZWxlY3RDb25maWd1cmF0aW9ucyA9IFJFRi5jcmVhdGVSZWYo
ewotICAgICAgICAgICAgb25FbGVtZW50TW91bnQ6IChlbGVtZW50KSA9PiB7Ci0gICAgICAgICAg
ICAgICAgZWxlbWVudC5wYXJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQuc3R5bGUuZGlzcGxheSA9
ICdub25lJzsKLSAgICAgICAgICAgICAgICBlbGVtZW50Lm9uY2hhbmdlID0gKCkgPT4gewotICAg
ICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkID0gcGFyc2VJbnQoZWxlbWVudC52YWx1ZSk7
Ci0gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0KHRoaXMuc2VsZWN0ZWQpOwotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBvblN0YXRlVXBkYXRlOiAo
ZWxlbWVudCwgc3RhdGUpID0+IHsKLSAgICAgICAgICAgICAgICBpZiAoIXN0YXRlIHx8IHN0YXRl
Lmxlbmd0aCA8PSAxKSB7Ci0gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQucGFyZW50RWxlbWVu
dC5wYXJlbnRFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7Ci0gICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBlbGVtZW50
LnBhcmVudEVsZW1lbnQucGFyZW50RWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gbnVsbDsKLSAgICAg
ICAgICAgICAgICBjb25zdCBjb25maWd1cmF0aW9ucyA9IFsuLi5zdGF0ZV07Ci0gICAgICAgICAg
ICAgICAgY29uZmlndXJhdGlvbnMuc29ydCgoYSwgYikgPT4gewotICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gYS50b0tleSgpLmxvY2FsZUNvbXBhcmUoYi50b0tleSgpKTsKLSAgICAgICAgICAg
ICAgICB9KTsKLSAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9ucy51bnNoaWZ0KENvbmZpZ3Vy
YXRpb24uY29tYmluZSguLi5zdGF0ZSkpOwotCi0gICAgICAgICAgICAgICAgbGV0IGluZGV4ID0g
MDsKLSAgICAgICAgICAgICAgICBlbGVtZW50LmlubmVySFRNTCA9IGNvbmZpZ3VyYXRpb25zLm1h
cChjb25maWd1cmF0aW9uID0+IHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGA8b3B0aW9u
IHZhbHVlPSIke2luZGV4fSIke2luZGV4ID09IHRoaXMuc2VsZWN0ZWQgPyAnIHNlbGVjdGVkJyA6
ICcnfT4ke2NvbmZpZ3VyYXRpb259JHtpbmRleCsrID8gJycgOiAnIChBZ3JlZ2F0ZWQpJ308L29w
dGlvbj5gOwotICAgICAgICAgICAgICAgIH0pLmpvaW4oJycpOwotICAgICAgICAgICAgfSwKLSAg
ICAgICAgfSk7Ci0KLSAgICAgICAgdGhpcy5yZXN1bHRWaWV3ID0gUkVGLmNyZWF0ZVJlZih7Ci0g
ICAgICAgICAgICBzdGF0ZToge2NvbmZpZ3VyYXRpb246IG51bGwsIHJlc3VsdHM6IFtdLCBmYWls
dXJlczogW119LAotICAgICAgICAgICAgb25TdGF0ZVVwZGF0ZTogKGVsZW1lbnQsIGRpZmYsIHN0
YXRlKSA9PiB7Ci0gICAgICAgICAgICAgICAgaWYgKCFkaWZmLmNvbmZpZ3VyYXRpb24gfHwgIWRp
ZmYucmVzdWx0cyB8fCAhZGlmZi5mYWlsdXJlcykgewotICAgICAgICAgICAgICAgICAgICBET00u
aW5qZWN0KGVsZW1lbnQsICc8ZGl2IGNsYXNzPSJsb2FkZXIiPjxkaXYgY2xhc3M9InNwaW5uZXIi
PjwvZGl2PjwvZGl2PicpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAg
ICAgICAgfQotCi0gICAgICAgICAgICAgICAgY29uc3QgYWdyZWdhdGVkU3RhdHMgPSB7Ci0gICAg
ICAgICAgICAgICAgICAgIHRlc3RzX3J1bjogZGlmZi5yZXN1bHRzLm1hcChyZXN1bHQgPT4gcmVz
dWx0LnN0YXRzLnRlc3RzX3J1bikucmVkdWNlKChhLCBiKSA9PiBhICsgYiwgMCksCi0gICAgICAg
ICAgICAgICAgICAgIHRlc3RzX3NraXBwZWQ6IGRpZmYucmVzdWx0cy5tYXAocmVzdWx0ID0+IHJl
c3VsdC5zdGF0cy50ZXN0c19za2lwcGVkKS5yZWR1Y2UoKGEsIGIpID0+IGEgKyBiLCAwKSwKLSAg
ICAgICAgICAgICAgICB9OwotCi0gICAgICAgICAgICAgICAgbGV0IGxhc3RWYWx1ZSA9IDA7Ci0g
ICAgICAgICAgICAgICAgY29uc3Qgd2lsbEZpbHRlckV4cGVjdGVkVmFsdWUgPSB3aWxsRmlsdGVy
RXhwZWN0ZWQoKTsKLSAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gRXhwZWN0YXRpb25zLmZh
aWx1cmVUeXBlcy5sZW5ndGggLSAxOyBpID4gMDsgLS1pKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGNvbnN0IGtleSA9IHdpbGxGaWx0ZXJFeHBlY3RlZFZhbHVlID8gYHRlc3RzX3VuZXhwZWN0ZWRf
JHtFeHBlY3RhdGlvbnMuZmFpbHVyZVR5cGVzW2ldfWAgOiBgdGVzdHNfJHtFeHBlY3RhdGlvbnMu
ZmFpbHVyZVR5cGVzW2ldfWA7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbWJpbmVkID0g
ZGlmZi5yZXN1bHRzLm1hcChyZXN1bHQgPT4gcmVzdWx0LnN0YXRzW2tleV0gPyByZXN1bHQuc3Rh
dHNba2V5XSA6IDApLnJlZHVjZSgoYSwgYikgPT4gYSArIGIsIDApOwotICAgICAgICAgICAgICAg
ICAgICBhZ3JlZ2F0ZWRTdGF0c1tgdGVzdHNfJHtFeHBlY3RhdGlvbnMuZmFpbHVyZVR5cGVzW2ld
fWBdID0gTWF0aC5tYXgoY29tYmluZWQgLSBsYXN0VmFsdWUsIDApOwotICAgICAgICAgICAgICAg
ICAgICBsYXN0VmFsdWUgPSBjb21iaW5lZDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgYWdyZWdhdGVkU3RhdHMudGVzdHNfc3VjY2VzcyA9IE1hdGgubWF4KGFncmVnYXRlZFN0
YXRzLnRlc3RzX3J1biAtIGxhc3RWYWx1ZSwgMCk7Ci0KLSAgICAgICAgICAgICAgICBET00uaW5q
ZWN0KGVsZW1lbnQsIGA8ZGl2IGNsYXNzPSJyb3ciPgotICAgICAgICAgICAgICAgICAgICAgICAg
PGRpdiBjbGFzcz0iY29sLXMtJHtkaWZmLnJlc3VsdHMubGVuZ3RoID09PSAxID8gJzEyJyA6ICc2
J30gbGlzdCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaXRlbSI+
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiPkNvbmZpZ3VyYXRpb248L2I+Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQgYmxvY2siIHN0
eWxlPSJ3aWR0aDogMTAwJTsgb3ZlcmZsb3c6IGhpZGRlbjsgd2hpdGUtc3BhY2U6IG5vd3JhcDsg
dGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICR7ZGlmZi5jb25maWd1cmF0aW9ufQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpdGVtIj4KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPGI+Q29tcG9zaXRpb248L2I+Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDxkaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21w
cmlzZWQgb2YgJHtkaWZmLnJlc3VsdHMubGVuZ3RofSBydW4ke2RpZmYucmVzdWx0cy5sZW5ndGgg
PT09IDEgPyAnJyA6ICdzJ30gdXNpbmcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICR7KCgpID0+IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBs
ZXQgbWluVXVpZCA9IE1hdGgucm91bmQobmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMCk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG1heFV1aWQgPSAwOwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZmYucmVzdWx0cy5mb3JFYWNo
KHJlc3VsdCA9PiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1pblV1aWQgPSBNYXRoLm1pbihtaW5VdWlkLCByZXN1bHQudXVpZCk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heFV1aWQgPSBNYXRoLm1heChtYXhVdWlk
LCByZXN1bHQudXVpZCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1pblV1aWQg
PiBtYXhVdWlkKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gJ2ludmFsaWQgY29tbWl0IHJhbmdlJzsKLQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGNvbW1pdHMgPSBDb21taXRCYW5rLmNvbW1pdHNEdXJpbmco
bWluVXVpZCwgbWF4VXVpZCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKCFjb21taXRzLmxlbmd0aCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuICd1bmtub3duIGNvbW1pdHMnOwotCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYnJhbmNoZXMgPSBuZXcgU2V0KGNvbW1pdHMu
bWFwKGNvbW1pdCA9PiBjb21taXQuYnJhbmNoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYnJhbmNoZXMuZGVsZXRlKCd0cnVuaycpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJyYW5jaGVzLmRlbGV0ZSgnbWFzdGVyJyk7Ci0KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZXBvc2l0b3JpZXMg
PSBuZXcgU2V0KGNvbW1pdHMubWFwKGNvbW1pdCA9PiBjb21taXQucmVwb3NpdG9yeV9pZCkpOwot
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY29tbWl0UGFy
YW1zID0ge307Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJy
YW5jaGVzLnNpemUpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbW1pdFBhcmFtc1snYnJhbmNoJ10gPSBbLi4uYnJhbmNoZXNdOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1pdFBhcmFtcy5hZnRlcl91dWlkID0gW21pblV1
aWRdOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1pdFBhcmFt
cy5iZWZvcmVfdXVpZCA9IFttYXhVdWlkXTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBgPGEgaHJlZj0iL2NvbW1pdHM/JHtwYXJhbXNUb1F1ZXJ5KGNv
bW1pdFBhcmFtcyl9Ij4kewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb21taXRzLmxlbmd0aCA9PSByZXBvc2l0b3JpZXMuc2l6ZSA/Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21taXRzLnJldmVyc2UoKS5tYXAo
Y29tbWl0ID0+IGNvbW1pdC5pZC5zdWJzdHJpbmcoMCwxMikpLmpvaW4oJywgJykgOgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYCR7Y29tbWl0cy5sZW5n
dGh9IGNvbW1pdHNgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTwv
YT5gOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkoKX0KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaXRlbSI+
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiPlJlc3VsdHM8L2I+Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBSYW4gJHthZ3JlZ2F0ZWRTdGF0cy50ZXN0c19ydW59IG9mICR7YWdyZWdhdGVk
U3RhdHMudGVzdHNfc2tpcHBlZCArIGFncmVnYXRlZFN0YXRzLnRlc3RzX3J1bn0gdGVzdHMKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgke3BlcmNlbnRhZ2UoYWdyZWdhdGVk
U3RhdHMudGVzdHNfcnVuLCBhZ3JlZ2F0ZWRTdGF0cy50ZXN0c19za2lwcGVkICsgYWdyZWdhdGVk
U3RhdHMudGVzdHNfcnVuKX0pCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8
YnI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke09iamVjdC5rZXlzKEV4
cGVjdGF0aW9ucy5jb2xvck1hcCgpKS5tYXAodHlwZSA9PiB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKCFhZ3JlZ2F0ZWRTdGF0c1tgdGVzdHNfJHt0eXBlfWBd
KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJyc7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGA8ZGl2IGNs
YXNzPSJkb3QgJHt0eXBlfSBzbWFsbCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aW55IHRleHQiIHN0eWxlPSJmb250LXdlaWdo
dDogbm9ybWFsO21hcmdpbi10b3A6IDBweCI+JHtFeHBlY3RhdGlvbnMuc3ltYm9sTWFwW3R5cGVd
fTwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rp
dj4gJHtkaWZmLnJlc3VsdHMubGVuZ3RoID09PSAxID8gYWdyZWdhdGVkU3RhdHNbYHRlc3RzXyR7
dHlwZX1gXSA6IHBlcmNlbnRhZ2UoYWdyZWdhdGVkU3RhdHNbYHRlc3RzXyR7dHlwZX1gXSwgYWdy
ZWdhdGVkU3RhdHMudGVzdHNfcnVuKX0gJHt0eXBlID09PSAnc3VjY2VzcycgPyAncGFzc2VkJyA6
IHR5cGV9PGJyPmA7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KS5qb2lu
KCcnKX0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtk
aWZmLnJlc3VsdHMubGVuZ3RoID09PSAxID8gYDxkaXYgY2xhc3M9Iml0ZW0iPgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8Yj5UZXN0IFJ1bjwvYj4KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPGRpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICR7ZGlmZi5yZXN1bHRzWzBdLnN0YXJ0X3RpbWUgPyAoKCkgPT4gewotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJyYW5jaCA9IHF1ZXJ5VG9QYXJhbXMoZG9j
dW1lbnQuVVJMLnNwbGl0KCc/JylbMV0pLmJyYW5jaDsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBidWlsZFBhcmFtcyA9IGRpZmYuY29uZmlndXJhdGlvbi50
b1BhcmFtcygpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxk
UGFyYW1zWydzdWl0ZSddID0gW3RoaXMuc3VpdGVdOwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJ1aWxkUGFyYW1zWyd1dWlkJ10gPSBbZGlmZi5yZXN1bHRzWzBdLnV1
aWRdOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkUGFyYW1z
WydhZnRlcl90aW1lJ10gPSBbZGlmZi5yZXN1bHRzWzBdLnN0YXJ0X3RpbWVdOwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkUGFyYW1zWydiZWZvcmVfdGltZSdd
ID0gW2RpZmYucmVzdWx0c1swXS5zdGFydF90aW1lXTsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoYnJhbmNoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBidWlsZFBhcmFtc1snYnJhbmNoJ10gPSBicmFuY2g7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcXVlcnkgPSBwYXJhbXNUb1F1
ZXJ5KGJ1aWxkUGFyYW1zKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBsZXQgcmVzdWx0ID0gYDxhIGhyZWY9Ii91cmxzL2J1aWxkPyR7cXVlcnl9IiB0YXJnZXQ9Il9i
bGFuayI+VGVzdCBydW48L2E+IEAgJHtuZXcgRGF0ZShkaWZmLnJlc3VsdHNbMF0uc3RhcnRfdGlt
ZSAqIDEwMDApLnRvTG9jYWxlU3RyaW5nKCl9PGJyPmA7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKCFBcmNoaXZlUm91dGVyLmhhc0FyY2hpdmUoc3VpdGUpKQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0
OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSBgPGEg
aHJlZj0iL2FyY2hpdmUvJHtBcmNoaXZlUm91dGVyLnBhdGhGb3Ioc3VpdGUpfT8ke3F1ZXJ5fSIg
dGFyZ2V0PSJfYmxhbmsiPiR7QXJjaGl2ZVJvdXRlci5sYWJlbEZvcihzdWl0ZSl9PC9hPjxicj5g
OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSgpIDogJyd9Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2RpZmYucmVzdWx0c1swXS5zdGF0cy5zdGFy
dF90aW1lICYmIGRpZmYucmVzdWx0c1swXS5zdGF0cy5lbmRfdGltZSA/Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYFN1aXRlIHRvb2sgJHtlbGFwc2VkVGltZShkaWZm
LnJlc3VsdHNbMF0uc3RhdHMuc3RhcnRfdGltZSwgZGlmZi5yZXN1bHRzWzBdLnN0YXRzLmVuZF90
aW1lKX1gIDogJyd9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PmAgOiAnJ30KLSAgICAgICAgICAgICAgICAg
ICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgJHtkaWZmLnJlc3VsdHMubGVu
Z3RoID09PSAxIHx8ICFkaWZmLmZhaWx1cmVzLmxlbmd0aCA/ICcnIDogYDxkaXYgY2xhc3M9ImRp
dmlkZXIgbW9iaWxlLWNvbnRyb2wiPjwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDxkaXYgY2xhc3M9ImNvbC1zLTYgbGlzdCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDxiPlRlc3QgUnVuczwvYj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtk
aWZmLmZhaWx1cmVzLnNsaWNlKDAsIDgpLm1hcChmYWlsdXJlID0+IHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGxldCB3b3JzdCA9ICdzdWNjZXNzJzsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEV4cGVjdGF0aW9ucy5mYWlsdXJlVHlwZXMuZm9yRWFj
aCh0eXBlID0+IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
T2JqZWN0LmtleXMoZmFpbHVyZVt0eXBlXSkubGVuZ3RoKQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB3b3JzdCA9IHR5cGU7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9KTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgY29tbWl0cyA9IENvbW1pdEJhbmsuY29tbWl0c0R1cmluZyhmYWlsdXJlLnV1aWRf
cmFuZ2VbMF0sIGZhaWx1cmUudXVpZF9yYW5nZVsxXSk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gYDxkaXYgY2xhc3M9Iml0ZW0iPgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3QgJHt3b3JzdH0gc21h
bGwiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRp
diBjbGFzcz0idGlueSB0ZXh0IiBzdHlsZT0iZm9udC13ZWlnaHQ6IG5vcm1hbDttYXJnaW4tdG9w
OiAwcHgiPiR7RXhwZWN0YXRpb25zLnN5bWJvbE1hcFt3b3JzdF19PC9kaXY+Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0idGV4dCBibG9jayIgc3R5bGU9
IndpZHRoOiBjYWxjKDEwMCUgLSB2YXIoLS1tZWRpdW1TaXplKSAtIDE2cHgpOyBvdmVyZmxvdzog
aGlkZGVuOyB3aGl0ZS1zcGFjZTogbm93cmFwOyB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsgImhy
ZWY9Ii9pbnZlc3RpZ2F0ZT8ke3BhcmFtc1RvUXVlcnkoZmFpbHVyZS50b1BhcmFtcygpKX0iPgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtjb21taXRz
Lmxlbmd0aCA/Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYCR7Y29tbWl0c1swXS5pZC5zdWJzdHJpbmcoMCwxMil9ICR7Y29tbWl0cy5sZW5ndGgg
PiAxID8gY29tbWl0c1tjb21taXRzLmxlbmd0aCAtIDFdLmlkLnN1YnN0cmluZygwLDEyKSA6ICcn
fWAgOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICc/J30gb24gJHtmYWlsdXJlLmNvbmZpZ3VyYXRpb259Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDwvYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA8L2Rpdj5gOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KS5q
b2luKCcnKX0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtkaWZmLnJlc3VsdHMu
bGVuZ3RoID4gOCA/ICc8ZGl2IGNsYXNzPSJpdGVtIGNvbnRlbnQiPlRvbyBtYW55IHJ1bnMgdG8g
ZGlzcGxheS4uLjxkaXY+JyA6ICcnfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2
PgotICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+YH0KLSAgICAgICAgICAgICAgICAgICAg
PC9kaXY+Ci0gICAgICAgICAgICAgICAgPC9kaXY+YCk7Ci0gICAgICAgICAgICB9LAotICAgICAg
ICB9KTsKLSAgICAgICAgdGhpcy5mYWlsdXJlVmlldyA9IFJFRi5jcmVhdGVSZWYoewotICAgICAg
ICAgICAgc3RhdGU6IHtjb25maWd1cmF0aW9uOiBudWxsLCByZXN1bHRzOiBbXSwgZmFpbHVyZXM6
IFtdfSwKLSAgICAgICAgICAgIG9uU3RhdGVVcGRhdGU6IChlbGVtZW50LCBkaWZmLCBzdGF0ZSkg
PT4gewotICAgICAgICAgICAgICAgIGlmICghZGlmZi5jb25maWd1cmF0aW9uIHx8ICFkaWZmLnJl
c3VsdHMgfHwgIWRpZmYuZmFpbHVyZXMpIHsKLSAgICAgICAgICAgICAgICAgICAgRE9NLmluamVj
dChlbGVtZW50LCAnPGRpdiBjbGFzcz0ibG9hZGVyIj48ZGl2IGNsYXNzPSJzcGlubmVyIj48L2Rp
dj48L2Rpdj4nKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICBpZiAoIWRpZmYuZmFpbHVyZXMubGVuZ3RoKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIERPTS5pbmplY3QoZWxlbWVudCwgJzxkaXYgY2xhc3M9ImNvbnRlbnQiIHN0
eWxlPSJtYXJnaW4tYm90dG9tOiB2YXIoLS1zbWFsbFNpemUpOyI+Tm8gZmFpbHVyZXM8L2Rpdj4n
KTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICBjb25zdCBmYWlsdXJlcyA9IEZhaWx1cmVzLmNvbWJpbmUoLi4uZGlmZi5mYWls
dXJlcyk7Ci0gICAgICAgICAgICAgICAgY29uc3QgcmV2ZXJzZWRUeXBlcyA9IFsuLi5FeHBlY3Rh
dGlvbnMuZmFpbHVyZVR5cGVzXS5yZXZlcnNlKCk7Ci0KLSAgICAgICAgICAgICAgICBET00uaW5q
ZWN0KGVsZW1lbnQsIGA8Yj5GYWlsdXJlczwvYj4KLSAgICAgICAgICAgICAgICAgICAgPGRpdiBj
bGFzcz0ibGlzdCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAke3JldmVyc2VkVHlwZXMubWFw
KHR5cGUgPT4gewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPYmplY3Qua2V5
cyhmYWlsdXJlc1t0eXBlXSkuc29ydCgoYSwgYikgPT4gewotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBudW1iZXJEaWZmZXJlbmNlID0gZmFpbHVyZXNbdHlwZV1bYV0gLSBm
YWlsdXJlc1t0eXBlXVtiXTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51
bWJlckRpZmZlcmVuY2UpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gbnVtYmVyRGlmZmVyZW5jZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGEubG9jYWxlQ29tcGFyZShiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KS5t
YXAodGVzdCA9PiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBgPGRp
diBjbGFzcz0iaXRlbSI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2
IGNsYXNzPSJkb3QgJHt0eXBlfSBzbWFsbCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPGRpdiBjbGFzcz0idGlueSB0ZXh0IiBzdHlsZT0iZm9udC13ZWlnaHQ6IG5v
cm1hbDttYXJnaW4tdG9wOiAwcHgiPiR7RXhwZWN0YXRpb25zLnN5bWJvbE1hcFt0eXBlXX08L2Rp
dj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9InRleHQgYmxvY2siIHN0eWxlPSJ3
aWR0aDogY2FsYygxMDAlIC0gdmFyKC0tbWVkaXVtU2l6ZSkgLSAxNnB4KTsgb3ZlcmZsb3c6IGhp
ZGRlbjsgd2hpdGUtc3BhY2U6IG5vd3JhcDsgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7IiBocmVm
PSIvP3N1aXRlPSR7dGhpcy5zdWl0ZX0mdGVzdD0ke3Rlc3R9IiB0YXJnZXQ9Il9ibGFuayI+Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHt0ZXN0fQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA8L2Rpdj5gOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLmpvaW4oJycp
OwotICAgICAgICAgICAgICAgICAgICAgICAgfSkuam9pbignJyl9Ci0gICAgICAgICAgICAgICAg
ICAgIDwvZGl2PmApOwotICAgICAgICAgICAgfSwKLSAgICAgICAgfSk7Ci0gICAgICAgIENvbW1p
dEJhbmsuY2FsbGJhY2tzLnB1c2goKCkgPT4ge3RoaXMuc2VsZWN0KHRoaXMuc2VsZWN0ZWQpfSk7
Ci0gICAgICAgIHRoaXMucmVsb2FkKCk7Ci0gICAgfQotICAgIHJlbG9hZCgpIHsKLSAgICAgICAg
aWYgKCFPYmplY3Qua2V5cyhyYW5nZVBhcmFtcykubGVuZ3RoKQotICAgICAgICAgICAgcmV0dXJu
OwotCi0gICAgICAgIHRoaXMuZGF0YUZvckNvbmZpZyA9IHt9OwotICAgICAgICB0aGlzLnNlbGVj
dCgwKTsKLQotICAgICAgICBsZXQgcmVzdWx0c0Rpc3BhdGNoZWQgPSBhZ3JlZ2F0ZUNvbm5maWd1
cmF0aW9uLmxlbmd0aDsKLSAgICAgICAgdGhpcy5yZXN1bHRWaWV3LnNldFN0YXRlKHtjb25maWd1
cmF0aW9uOiBudWxsLCByZXN1bHRzOiBbXSwgZmFpbHVyZXM6IFtdfSk7Ci0KLSAgICAgICAgbGV0
IGZhaWx1cmVzRGlzcGF0Y2hlZCA9IGFncmVnYXRlQ29ubmZpZ3VyYXRpb24ubGVuZ3RoOwotICAg
ICAgICB0aGlzLmZhaWx1cmVWaWV3LnNldFN0YXRlKHtjb25maWd1cmF0aW9uOiBudWxsLCByZXN1
bHRzOiBbXSwgZmFpbHVyZXM6IFtdfSk7Ci0KLSAgICAgICAgYWdyZWdhdGVDb25uZmlndXJhdGlv
bi5mb3JFYWNoKGNvbmZpZ1RvU2VhcmNoID0+IHsKLSAgICAgICAgICAgIGNvbnN0IHJlc3VsdFBh
cmFtcyA9IE9iamVjdC5hc3NpZ24oY29uZmlnVG9TZWFyY2gudG9QYXJhbXMoKSwgcmFuZ2VQYXJh
bXMpOwotICAgICAgICAgICAgZmV0Y2goYC9hcGkvcmVzdWx0cy8ke3RoaXMuc3VpdGV9PyR7cGFy
YW1zVG9RdWVyeShyZXN1bHRQYXJhbXMpfWApLnRoZW4ocmVzcG9uc2UgPT4gewotICAgICAgICAg
ICAgICAgIHJlc3BvbnNlLmpzb24oKS50aGVuKGpzb24gPT4gewotICAgICAgICAgICAgICAgICAg
ICBsZXQgbWluVXVpZCA9IE1hdGgucm91bmQobmV3IERhdGUoKS5nZXRUaW1lKCkvMTApOwotICAg
ICAgICAgICAgICAgICAgICBsZXQgbWF4VXVpZCA9IDA7Ci0KLSAgICAgICAgICAgICAgICAgICAg
anNvbi5mb3JFYWNoKHJlc3VsdCA9PiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBj
b21wbGV0ZUNvbmZpZyA9IG5ldyBDb25maWd1cmF0aW9uKHJlc3VsdC5jb25maWd1cmF0aW9uKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5kYXRhRm9yQ29uZmlnW2NvbXBsZXRl
Q29uZmlnLnRvS2V5KCldKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YUZv
ckNvbmZpZ1tjb21wbGV0ZUNvbmZpZy50b0tleSgpXSA9IHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uZmlndXJhdGlvbjogY29tcGxldGVDb25maWcsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlc3VsdHM6IFtdLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmYWlsdXJlczogW10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
aGlzLmRhdGFGb3JDb25maWdbY29tcGxldGVDb25maWcudG9LZXkoKV0uY29uZmlndXJhdGlvbiA9
IENvbmZpZ3VyYXRpb24uY29tYmluZSh0aGlzLmRhdGFGb3JDb25maWdbY29tcGxldGVDb25maWcu
dG9LZXkoKV0uY29uZmlndXJhdGlvbiwgY29tcGxldGVDb25maWcpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgdGhpcy5kYXRhRm9yQ29uZmlnW2NvbXBsZXRlQ29uZmlnLnRvS2V5KCldLnJlc3Vs
dHMgPSB0aGlzLmRhdGFGb3JDb25maWdbY29tcGxldGVDb25maWcudG9LZXkoKV0ucmVzdWx0cy5j
b25jYXQocmVzdWx0LnJlc3VsdHMpOwotCi0gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQu
cmVzdWx0cy5mb3JFYWNoKHJlc3VsdCA9PiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
bWluVXVpZCA9IE1hdGgubWluKG1pblV1aWQsIHJlc3VsdC51dWlkKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtYXhVdWlkID0gTWF0aC5tYXgobWF4VXVpZCwgcmVzdWx0LnV1aWQpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgICAgIH0pOwotCi0g
ICAgICAgICAgICAgICAgICAgIGlmIChtYXhVdWlkID0+IG1pblV1aWQpCi0gICAgICAgICAgICAg
ICAgICAgICAgICBDb21taXRCYW5rLmFkZChtaW5VdWlkLCBtYXhVdWlkKTsKLQotICAgICAgICAg
ICAgICAgICAgICAtLXJlc3VsdHNEaXNwYXRjaGVkOwotICAgICAgICAgICAgICAgICAgICBpZiAo
IXJlc3VsdHNEaXNwYXRjaGVkKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlZi5z
ZXRTdGF0ZSh7ZGlzcGxheWVkOiBPYmplY3Qua2V5cyh0aGlzLmRhdGFGb3JDb25maWcpLmxlbmd0
aH0pOwotICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RDb25maWd1cmF0aW9ucy5z
ZXRTdGF0ZShPYmplY3QudmFsdWVzKHRoaXMuZGF0YUZvckNvbmZpZykubWFwKGRhdGEgPT4gZGF0
YS5jb25maWd1cmF0aW9uKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdCh0
aGlzLnNlbGVjdGVkKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0p
OwotICAgICAgICAgICAgfSkuY2F0Y2goZXJyb3IgPT4gewotICAgICAgICAgICAgICAgIC8vIElm
IHRoZSBsb2FkIGZhaWxzLCBsb2cgdGhlIGVycm9yIGFuZCBjb250aW51ZQotICAgICAgICAgICAg
ICAgIGNvbnNvbGUuZXJyb3IoSlNPTi5zdHJpbmdpZnkoZXJyb3IsIG51bGwsIDQpKTsKLSAgICAg
ICAgICAgIH0pOwotCi0gICAgICAgICAgICBGYWlsdXJlcy5mcm9tRW5kcG9pbnQodGhpcy5zdWl0
ZSwgY29uZmlnVG9TZWFyY2gsIE9iamVjdC5hc3NpZ24oe3VuZXhwZWN0ZWQ6IFt3aWxsRmlsdGVy
RXhwZWN0ZWQoKV19LCByYW5nZVBhcmFtcykpLnRoZW4oZmFpbHVyZXMgPT4gewotICAgICAgICAg
ICAgICAgIGxldCBtaW5VdWlkID0gTWF0aC5yb3VuZChuZXcgRGF0ZSgpLmdldFRpbWUoKS8xMCk7
Ci0gICAgICAgICAgICAgICAgbGV0IG1heFV1aWQgPSAwOwotCi0gICAgICAgICAgICAgICAgZmFp
bHVyZXMuZm9yRWFjaChmYWlsdXJlID0+IHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlz
LmRhdGFGb3JDb25maWdbZmFpbHVyZS5jb25maWd1cmF0aW9uLnRvS2V5KCldKQotICAgICAgICAg
ICAgICAgICAgICAgICAgdGhpcy5kYXRhRm9yQ29uZmlnW2ZhaWx1cmUuY29uZmlndXJhdGlvbi50
b0tleSgpXSA9IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uOiBm
YWlsdXJlLmNvbmZpZ3VyYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0
czogW10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFpbHVyZXM6IFtdLAotICAgICAg
ICAgICAgICAgICAgICAgICAgfTsKLSAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgICAgICAgICAgdGhpcy5kYXRhRm9yQ29uZmlnW2ZhaWx1cmUuY29uZmlndXJhdGlvbi50
b0tleSgpXS5jb25maWd1cmF0aW9uID0gQ29uZmlndXJhdGlvbi5jb21iaW5lKHRoaXMuZGF0YUZv
ckNvbmZpZ1tmYWlsdXJlLmNvbmZpZ3VyYXRpb24udG9LZXkoKV0uY29uZmlndXJhdGlvbiwgZmFp
bHVyZS5jb25maWd1cmF0aW9uKTsKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhRm9yQ29u
ZmlnW2ZhaWx1cmUuY29uZmlndXJhdGlvbi50b0tleSgpXS5mYWlsdXJlcy5wdXNoKGZhaWx1cmUp
OwotICAgICAgICAgICAgICAgICAgICBtaW5VdWlkID0gTWF0aC5taW4obWluVXVpZCwgZmFpbHVy
ZS51dWlkX3JhbmdlWzBdKTsKLSAgICAgICAgICAgICAgICAgICAgbWF4VXVpZCA9IE1hdGgubWF4
KG1heFV1aWQsIGZhaWx1cmUudXVpZF9yYW5nZVsxXSk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0K
LSAgICAgICAgICAgICAgICBpZiAobWF4VXVpZCA9PiBtaW5VdWlkKQotICAgICAgICAgICAgICAg
ICAgICBDb21taXRCYW5rLmFkZChtaW5VdWlkLCBtYXhVdWlkKTsKLQotICAgICAgICAgICAgICAg
IC0tZmFpbHVyZXNEaXNwYXRjaGVkOwotICAgICAgICAgICAgICAgIGlmICghZmFpbHVyZXNEaXNw
YXRjaGVkKSB7Ci0gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0Q29uZmlndXJhdGlvbnMu
c2V0U3RhdGUoT2JqZWN0LnZhbHVlcyh0aGlzLmRhdGFGb3JDb25maWcpLm1hcChkYXRhID0+IGRh
dGEuY29uZmlndXJhdGlvbikpOwotICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdCh0aGlz
LnNlbGVjdGVkKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9KS5jYXRjaChlcnJv
ciA9PiB7Ci0gICAgICAgICAgICAgICAgLy8gQSBsb2FkIGZhaWx1cmUgcHJvYmFibHkganVzdCBt
ZWFucyBubyBmYWlsdXJlcyBmb3VuZCwgaW4gdGhhdCBjYXNlLCBpZ25vcmUgdGhlIGVycm9yCi0g
ICAgICAgICAgICAgICAgaWYgKCFPYmplY3Qua2V5cyhlcnJvcikpCi0gICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKEpTT04uc3RyaW5naWZ5
KGVycm9yLCBudWxsLCA0KSk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfSk7Ci0gICAgfQot
ICAgIHNlbGVjdChzZWxlY3RlZCkgewotICAgICAgICBjb25zdCBjb25maWd1cmF0aW9uS2V5cyA9
IE9iamVjdC5rZXlzKHRoaXMuZGF0YUZvckNvbmZpZyk7Ci0gICAgICAgIGNvbmZpZ3VyYXRpb25L
ZXlzLnNvcnQoKTsKLSAgICAgICAgdGhpcy5zZWxlY3RlZCA9IE1hdGgubWluKHNlbGVjdGVkLCBj
b25maWd1cmF0aW9uS2V5cy5sZW5ndGgpOwotCi0gICAgICAgIGlmICghY29uZmlndXJhdGlvbktl
eXMubGVuZ3RoKSB7Ci0gICAgICAgICAgICB0aGlzLnJlc3VsdFZpZXcuc2V0U3RhdGUoe2NvbmZp
Z3VyYXRpb246IG51bGwsIHJlc3VsdHM6IFtdLCBmYWlsdXJlczogW119KTsKLSAgICAgICAgICAg
IHRoaXMuZmFpbHVyZVZpZXcuc2V0U3RhdGUoe2NvbmZpZ3VyYXRpb246IG51bGwsIHJlc3VsdHM6
IFtdLCBmYWlsdXJlczogW119KTsKLSAgICAgICAgfSBlbHNlIGlmIChjb25maWd1cmF0aW9uS2V5
cy5sZW5ndGggPT0gMSkgewotICAgICAgICAgICAgdGhpcy5yZXN1bHRWaWV3LnNldFN0YXRlKHRo
aXMuZGF0YUZvckNvbmZpZ1tjb25maWd1cmF0aW9uS2V5c1swXV0pOwotICAgICAgICAgICAgdGhp
cy5mYWlsdXJlVmlldy5zZXRTdGF0ZSh0aGlzLmRhdGFGb3JDb25maWdbY29uZmlndXJhdGlvbktl
eXNbMF1dKTsKLSAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNlbGVjdGVkID09IDApIHsKLSAgICAg
ICAgICAgIGNvbnN0IGNvbWJpbmVkID0gewotICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb246
IENvbmZpZ3VyYXRpb24uY29tYmluZSguLi5jb25maWd1cmF0aW9uS2V5cy5tYXAoa2V5ID0+IHRo
aXMuZGF0YUZvckNvbmZpZ1trZXldLmNvbmZpZ3VyYXRpb24pKSwKLSAgICAgICAgICAgICAgICBy
ZXN1bHRzOiBbXSwKLSAgICAgICAgICAgICAgICBmYWlsdXJlczogW10sCi0gICAgICAgICAgICB9
OwotICAgICAgICAgICAgY29uZmlndXJhdGlvbktleXMuZm9yRWFjaChrZXkgPT4gewotICAgICAg
ICAgICAgICAgIGNvbWJpbmVkLnJlc3VsdHMgPSBjb21iaW5lZC5yZXN1bHRzLmNvbmNhdCh0aGlz
LmRhdGFGb3JDb25maWdba2V5XS5yZXN1bHRzKTsKLSAgICAgICAgICAgICAgICBjb21iaW5lZC5m
YWlsdXJlcyA9IGNvbWJpbmVkLmZhaWx1cmVzLmNvbmNhdCh0aGlzLmRhdGFGb3JDb25maWdba2V5
XS5mYWlsdXJlcyk7Ci0gICAgICAgICAgICB9KTsKLQotICAgICAgICAgICAgdGhpcy5yZXN1bHRW
aWV3LnNldFN0YXRlKGNvbWJpbmVkKTsKLSAgICAgICAgICAgIHRoaXMuZmFpbHVyZVZpZXcuc2V0
U3RhdGUoY29tYmluZWQpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgdGhpcy5yZXN1
bHRWaWV3LnNldFN0YXRlKHRoaXMuZGF0YUZvckNvbmZpZ1tjb25maWd1cmF0aW9uS2V5c1t0aGlz
LnNlbGVjdGVkIC0gMV1dKTsKLSAgICAgICAgICAgIHRoaXMuZmFpbHVyZVZpZXcuc2V0U3RhdGUo
dGhpcy5kYXRhRm9yQ29uZmlnW2NvbmZpZ3VyYXRpb25LZXlzW3RoaXMuc2VsZWN0ZWQgLSAxXV0p
OwotICAgICAgICB9Ci0gICAgfQotICAgIHRvU3RyaW5nKCkgewotICAgICAgICByZXR1cm4gYDxk
aXYgY2xhc3M9InNlY3Rpb24iIHJlZj0iJHt0aGlzLnJlZn0iPgotICAgICAgICAgICAgICAgIDxk
aXYgY2xhc3M9ImhlYWRlciByb3ciPgotICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJj
b2wtcy00IHRpdGxlIj4ke3RoaXMuc3VpdGV9PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgIDxk
aXYgY2xhc3M9ImNvbC1zLTgiPgotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0i
aW5wdXQiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgcmVxdWlyZWQgcmVm
PSIke3RoaXMuc2VsZWN0Q29uZmlndXJhdGlvbnN9Ij48L3NlbGVjdD4KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA8bGFiZWw+Q29uZmlndXJhdGlvbjwvbGFiZWw+Ci0gICAgICAgICAgICAg
ICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAg
ICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgPGRpdj4KLSAgICAgICAgICAgICAgICAgICAg
PGRpdiBjbGFzcz0iY29udGVudCIgcmVmPSIke3RoaXMucmVzdWx0Vmlld30iPjwvZGl2PgotICAg
ICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkaXZpZGVyIj48L2Rpdj4KLSAgICAgICAgICAg
ICAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudCIgcmVmPSIke3RoaXMuZmFpbHVyZVZpZXd9Ij48
L2Rpdj4KLSAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDwvZGl2Pjxicj5gOwot
ICAgIH0KLX0KLQotCi1mdW5jdGlvbiBwb3B1bGF0ZVJhbmdlcygpCi17Ci0gICAgbGV0IGRlZmlu
ZWRSYW5nZSA9IGZhbHNlOwotICAgIGxldCBjb21taXRQYXJhbXMgPSB7fTsKLSAgICBsZXQgdGlt
ZVBhcmFtcyA9IHt9OwotCi0gICAgWydpZCcsICd1dWlkJywgJ3RpbWVzdGFtcCcsICdicmFuY2gn
LCAncmVwb3NpdG9yeV9pZCddLmZvckVhY2gocGFyYW0gPT4gewotICAgICAgICBbJycsICdiZWZv
cmVfJywgJ2FmdGVyXyddLmZvckVhY2gocGFydGlhbCA9PiB7Ci0gICAgICAgICAgICBjb25zdCB2
YWx1ZXMgPSAobmV3IFF1ZXJ5TW9kaWZpZXIoYCR7cGFydGlhbH0ke3BhcmFtfWApKS5jdXJyZW50
KCk7Ci0gICAgICAgICAgICBpZiAoIXZhbHVlcy5sZW5ndGgpCi0gICAgICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICAgICAgaWYgKFsnaWQnLCAndXVpZCcsICd0aW1lc3RhbXAnXS5pbmRleE9m
KHBhcmFtKSA+PSAwKQotICAgICAgICAgICAgICAgIGRlZmluZWRSYW5nZSA9IHRydWU7Ci0gICAg
ICAgICAgICBjb21taXRQYXJhbXNbYCR7cGFydGlhbH0ke3BhcmFtfWBdID0gdmFsdWVzOwotICAg
ICAgICB9KTsKLSAgICB9KTsKLQotICAgIFsndGltZScsICdiZWZvcmVfdGltZScsICdhZnRlcl90
aW1lJ10uZm9yRWFjaChwYXJhbSA9PiB7Ci0gICAgICAgIGNvbnN0IHZhbHVlcyA9IChuZXcgUXVl
cnlNb2RpZmllcihwYXJhbSkpLmN1cnJlbnQoKTsKLSAgICAgICAgaWYgKCF2YWx1ZXMubGVuZ3Ro
KQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBkZWZpbmVkUmFuZ2UgPSB0cnVlOwotICAg
ICAgICB0aW1lUGFyYW1zW3BhcmFtXSA9IHZhbHVlczsKLSAgICB9KTsKLQotICAgIHJhbmdlUGFy
YW1zID0gT2JqZWN0LmFzc2lnbihjb21taXRQYXJhbXMsIHRpbWVQYXJhbXMpOwotICAgIGNvbnN0
IGJyYW5jaCA9IHF1ZXJ5VG9QYXJhbXMoZG9jdW1lbnQuVVJMLnNwbGl0KCc/JylbMV0pLmJyYW5j
aDsKLSAgICBpZiAoYnJhbmNoKQotICAgICAgICByYW5nZVBhcmFtcy5icmFuY2ggPSBbYnJhbmNo
XTsKLQotICAgIGlmICghT2JqZWN0LmtleXMocmFuZ2VQYXJhbXMpLmxlbmd0aCAmJiAhZGVmaW5l
ZFJhbmdlKSB7Ci0gICAgICAgIHJhbmdlUGFyYW1zID0ge307Ci0gICAgICAgIGNvbnN0IHBhcmFt
cyA9IE9iamVjdC5hc3NpZ24oe30sIGNvbW1pdFBhcmFtcyk7Ci0gICAgICAgIGlmICghZGVmaW5l
ZFJhbmdlKQotICAgICAgICAgICAgcGFyYW1zLmxpbWl0ID0gWzFdOwotICAgICAgICBDb21taXRC
YW5rLmxhdGVzdChwYXJhbXMpLnRoZW4oKCkgPT4gewotICAgICAgICAgICAgcmFuZ2VQYXJhbXMg
PSBPYmplY3QuYXNzaWduKGNvbW1pdFBhcmFtcywgdGltZVBhcmFtcyk7Ci0gICAgICAgICAgICBy
YW5nZVBhcmFtcy5hZnRlcl91dWlkID0gW0NvbW1pdEJhbmsuY29tbWl0c1swXS51dWlkXTsKLSAg
ICAgICAgICAgIHJhbmdlUGFyYW1zLmJlZm9yZV91dWlkID0gW0NvbW1pdEJhbmsuY29tbWl0c1tD
b21taXRCYW5rLmNvbW1pdHMubGVuZ3RoIC0gMV0udXVpZF07Ci0gICAgICAgICAgICB2aWV3cy5m
b3JFYWNoKHZpZXcgPT4gdmlldy5yZWxvYWQoKSk7Ci0gICAgICAgIH0pOwotICAgIH0gICAKLX0K
LQotCi1mdW5jdGlvbiByZWxvYWQoKQotewotICAgIGFncmVnYXRlQ29ubmZpZ3VyYXRpb24gPSBD
b25maWd1cmF0aW9uLmZyb21RdWVyeSgpOwotICAgIHBvcHVsYXRlUmFuZ2VzKCk7Ci0gICAgdmll
d3MuZm9yRWFjaCh2aWV3ID0+IHZpZXcucmVsb2FkKCkpOwotfQotCi0KLXBvcHVsYXRlUmFuZ2Vz
KCk7Ci1TVUlURVMuZm9yRWFjaChzdWl0ZSA9PiB7Ci0gICAgdmlld3MucHVzaChuZXcgU3VpdGVG
YWlsdXJlc1ZpZXcoc3VpdGUpKTsKLX0pCi0KLXdpbmRvdy5vbnBvcHN0YXRlID0gZXZlbnQgPT4g
ewotICAgIHJlbG9hZCgpOwotfTsKLXdpbmRvdy5vbnB1c2hzdGF0ZSA9IGV2ZW50ID0+IHsKLSAg
ICByZWxvYWQoKTsKLX07Ci0KLWxldCB2aWV3cG9ydCA9IG51bGw7Ci1ET00uaW5qZWN0KAotICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhcHAnKSwKLSAgICBgJHtEcmF3ZXIoWwotICAgICAg
ICBMZWdlbmQoKGZpbHRlckZsYWcpID0+IHsKLSAgICAgICAgICAgIGlmIChmaWx0ZXJGbGFnKQot
ICAgICAgICAgICAgICAgIHVuZXhwZWN0ZWRRdWVyeS5yZW1vdmUoKTsKLSAgICAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgICAgICB1bmV4cGVjdGVkUXVlcnkucmVwbGFjZShmYWxzZSk7Ci0gICAg
ICAgICAgICByZWxvYWQoKTsKLSAgICAgICAgfSwgdHJ1ZSwgd2lsbEZpbHRlckV4cGVjdGVkKCkp
LAotICAgICAgICBCcmFuY2hTZWxlY3RvcihyZWxvYWQpLAotICAgICAgICBDb25maWd1cmF0aW9u
U2VsZWN0b3JzKHJlbG9hZCksCi0gICAgXSl9Ci0KLSAgICA8ZGl2IGNsYXNzPSJtYWluIHJpZ2h0
LXNpZGViYXIgdW5kZXItdG9wYmFyLXdpdGgtYWN0aW9ucyI+Ci0gICAgICAgIDxicj4KLSAgICAg
ICAgPGRpdiBjbGFzcz0iY29udGVudCI+Ci0gICAgICAgICAgICAke3ZpZXdzLmpvaW4oJycpfQot
ICAgICAgICA8L2Rpdj4KLSAgICA8L2Rpdj5gCi0pOwotCi08L3NjcmlwdD4KLQoteyUgZW5kYmxv
Y2sgJX0KLXslIGJsb2NrIGNvbnRlbnQgJX0KLQotPGRpdiBpZD0iYXBwIj4KLTwvZGl2PgotCi17
JSBlbmRibG9jayAlfQpJbmRleDogVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy90
ZW1wbGF0ZXMvc2VhcmNoLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvcmVzdWx0c2RicHkvcmVz
dWx0c2RicHkvdmlldy90ZW1wbGF0ZXMvc2VhcmNoLmh0bWwJKHJldmlzaW9uIDI2NTUzMSkKKysr
IFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvdGVtcGxhdGVzL3NlYXJjaC5odG1s
CShub25leGlzdGVudCkKQEAgLTEsMjkyICswLDAgQEAKLTwhLS0KLSBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotCi0gUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gYXJlIG1ldDoKLSAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotCi0gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuICJBUyBJUyIgQU5EIEFOWQotIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKLSBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotLS0+Ci0KLXslIGV4dGVuZHMgImJhc2UuaHRt
bCIgJX0KLXslIGJsb2NrIGhlYWQgJX0KLTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4
dC9jc3MiIGhyZWY9ImFzc2V0cy9jc3Mvc2VhcmNoLmNzcyI+Ci08bGluayByZWw9InN0eWxlc2hl
ZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJhc3NldHMvY3NzL3RpbWVsaW5lLmNzcyI+Ci08bGlu
ayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJhc3NldHMvY3NzL3Rvb2x0
aXAuY3NzIj4KLQotPHNjcmlwdCB0eXBlPSJtb2R1bGUiPgotaW1wb3J0IHtDb21taXRCYW5rfSBm
cm9tICcvYXNzZXRzL2pzL2NvbW1pdC5qcyc7Ci1pbXBvcnQge2RlZXBDb21wYXJlLCBFcnJvckRp
c3BsYXksIHF1ZXJ5VG9QYXJhbXMsIHBhcmFtc1RvUXVlcnl9IGZyb20gJy9hc3NldHMvanMvY29t
bW9uLmpzJzsKLWltcG9ydCB7Q29uZmlndXJhdGlvbn0gZnJvbSAnL2Fzc2V0cy9qcy9jb25maWd1
cmF0aW9uLmpzJzsKLWltcG9ydCB7RHJhd2VyLCBCcmFuY2hTZWxlY3RvciwgQ29uZmlndXJhdGlv
blNlbGVjdG9ycywgTGltaXRTbGlkZXJ9IGZyb20gJy9hc3NldHMvanMvZHJhd2VyLmpzJzsKLWlt
cG9ydCB7SW52ZXN0aWdhdGVEcmF3ZXJ9IGZyb20gJy9hc3NldHMvanMvaW52ZXN0aWdhdGUuanMn
OwotaW1wb3J0IHtTZWFyY2hCYXJ9IGZyb20gJy9hc3NldHMvanMvc2VhcmNoLmpzJzsKLWltcG9y
dCB7TGVnZW5kLCBUaW1lbGluZUZyb21FbmRwb2ludH0gZnJvbSAnL2Fzc2V0cy9qcy90aW1lbGlu
ZS5qcyc7Ci1pbXBvcnQge1Rvb2xUaXB9IGZyb20gJy9hc3NldHMvanMvdG9vbHRpcC5qcyc7Ci1p
bXBvcnQge0RPTSwgUkVGLCBFdmVudFN0cmVhbX0gZnJvbSAnL2xpYnJhcnkvanMvUmVmLmpzJzsK
LQotY29uc3QgREVGQVVMVF9MSU1JVCA9IDEwMDsKLWNvbnN0IFNVSVRFUyA9IEpTT04ucGFyc2Uo
J3t7IHN1aXRlc3xzYWZlIH19Jyk7Ci0KLWNsYXNzIFNlYXJjaFZpZXcgewotICAgIGNvbnN0cnVj
dG9yKCkgeyAgICAKLSAgICAgICAgdGhpcy5jdXJyZW50UGFyYW1zID0gcXVlcnlUb1BhcmFtcyhk
b2N1bWVudC5VUkwuc3BsaXQoJz8nKVsxXSk7Ci0gICAgICAgIHRoaXMuY3VycmVudExpbWl0ID0g
dGhpcy5jdXJyZW50UGFyYW1zLmxpbWl0ID8gcGFyc2VJbnQodGhpcy5jdXJyZW50UGFyYW1zLmxp
bWl0W3RoaXMuY3VycmVudFBhcmFtcy5saW1pdC5sZW5ndGggLSAxXSkgOiBERUZBVUxUX0xJTUlU
OwotICAgICAgICBkZWxldGUgdGhpcy5jdXJyZW50UGFyYW1zLmxpbWl0OwotCi0gICAgICAgIGxl
dCBzdGF0ZSA9IHtjaGlsZHJlbjogW10sIHByZXBlbmRpbmc6IFtdfTsKLSAgICAgICAgaWYgKHRo
aXMuY3VycmVudFBhcmFtcy50ZXN0ICYmICghdGhpcy5jdXJyZW50UGFyYW1zLnN1aXRlIHx8IHRo
aXMuY3VycmVudFBhcmFtcy50ZXN0Lmxlbmd0aCAhPSB0aGlzLmN1cnJlbnRQYXJhbXMuc3VpdGUu
bGVuZ3RoKSkKLSAgICAgICAgICAgIHN0YXRlID0ge2Vycm9yOiAiUXVlcnkgRXJyb3IiLCBkZXNj
cmlwdGlvbjogJ011c3QgaGF2ZSB0aGUgc2FtZSBudW1iZXIgb2Ygc3VpdGVzIGFuZCB0ZXN0cyBp
biBxdWVyeSd9OwotICAgICAgICBlbHNlIGlmICh0aGlzLmN1cnJlbnRQYXJhbXMudGVzdCkgewot
ICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmN1cnJlbnRQYXJhbXMudGVzdC5s
ZW5ndGg7ICsraSkgewotICAgICAgICAgICAgICAgIHN0YXRlLmNoaWxkcmVuLnB1c2goewotICAg
ICAgICAgICAgICAgICAgICBzdWl0ZTogdGhpcy5jdXJyZW50UGFyYW1zLnN1aXRlW2ldLAotICAg
ICAgICAgICAgICAgICAgICB0ZXN0OiB0aGlzLmN1cnJlbnRQYXJhbXMudGVzdFtpXSwKLSAgICAg
ICAgICAgICAgICAgICAgdGltZWxpbmU6IG5ldyBUaW1lbGluZUZyb21FbmRwb2ludChgYXBpL3Jl
c3VsdHMvJHt0aGlzLmN1cnJlbnRQYXJhbXMuc3VpdGVbaV19LyR7dGhpcy5jdXJyZW50UGFyYW1z
LnRlc3RbaV19YCwgdGhpcy5jdXJyZW50UGFyYW1zLnN1aXRlW2ldLCB0aGlzLmN1cnJlbnRQYXJh
bXMudGVzdFtpXSksCi0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0KLQotICAgICAgICBkZWxldGUgdGhpcy5jdXJyZW50UGFyYW1zLnN1aXRlOwotICAgICAgICBk
ZWxldGUgdGhpcy5jdXJyZW50UGFyYW1zLnRlc3Q7Ci0KLSAgICAgICAgY29uc3Qgc2VsZiA9IHRo
aXM7Ci0gICAgICAgIHRoaXMucmVmID0gUkVGLmNyZWF0ZVJlZih7Ci0gICAgICAgICAgICBzdGF0
ZTogc3RhdGUsCi0gICAgICAgICAgICBvblN0YXRlVXBkYXRlOiAoZWxlbWVudCwgZGlmZiwgc3Rh
dGUpID0+IHsKLSAgICAgICAgICAgICAgICBpZiAoZGlmZi5lcnJvcikgewotICAgICAgICAgICAg
ICAgICAgICBET00uaW5qZWN0KGVsZW1lbnQsIEVycm9yRGlzcGxheShkaWZmKSk7Ci0gICAgICAg
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAg
ICBmdW5jdGlvbiByZW5kZXJDaGlsZChjaGlsZCkgewotICAgICAgICAgICAgICAgICAgICBsZXQg
ZXhpdFJlZiA9IFJFRi5jcmVhdGVSZWYoewotICAgICAgICAgICAgICAgICAgICAgICAgb25FbGVt
ZW50TW91bnQ6IGVsZW1lbnQgPT4gewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1l
bnQub25jbGljayA9ICgpID0+IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9y
IChsZXQgaSA9IDA7IGkgPCBzZWxmLnJlZi5zdGF0ZS5jaGlsZHJlbi5sZW5ndGg7ICsraSkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkLnRlc3QgIT09IHNl
bGYucmVmLnN0YXRlLmNoaWxkcmVuW2ldLnRlc3QgJiYgY2hpbGQuc3VpdGUgIT09IHNlbGYucmVm
LnN0YXRlLmNoaWxkcmVuW2ldLnN1aXRlKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2VsZi5yZWYuc3RhdGUuY2hpbGRyZW4uc3BsaWNlKGksIDEpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0KLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzcGxpdFVSTCA9IGRv
Y3VtZW50LlVSTC5zcGxpdCgnPycpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBs
ZXQgcGFyYW1zID0gcXVlcnlUb1BhcmFtcyhzcGxpdFVSTFsxXSk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICghcGFyYW1zLnN1aXRlKQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcGFyYW1zLnN1aXRlID0gW107Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmICghcGFyYW1zLnRlc3QpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwYXJhbXMudGVzdCA9IFtdOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmb3IgKGxldCBpID0gMDsgaSA8IHBhcmFtcy5zdWl0ZS5sZW5ndGg7ICsraSkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBzaG91bGRuJ3QgYmUgcG9zc2li
bGUsIGp1c3Qga2VlcCB0aGUgY3VycmVudCBwYXJhbXMgaWYgaXQgaGFwcGVucy4KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID49IHBhcmFtcy50ZXN0Lmxlbmd0aCkK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJhbXMuc3VpdGVbaV0gIT09IGNoaWxk
LnN1aXRlICYmIHBhcmFtcy50ZXN0W2ldICE9PSBjaGlsZC50ZXN0KQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcGFyYW1zLnN1aXRlLnNwbGljZShpLCAxKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy50ZXN0LnNwbGljZShpLCAxKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJhbXMu
c3VpdGUubGVuZ3RoID09PSAwKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZGVsZXRlIHBhcmFtcy5zdWl0ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KHBhcmFtcy50ZXN0Lmxlbmd0aCA9PT0gMCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRlbGV0ZSBwYXJhbXMudGVzdDsKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBxdWVyeVN0cmluZyA9IHBhcmFtc1RvUXVlcnkocGFyYW1zKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93Lmhpc3RvcnkucHVzaFN0YXRlKHF1ZXJ5U3Ry
aW5nLCAnJywgc3BsaXRVUkxbMF0gKyAnPycgKyBxdWVyeVN0cmluZyk7Ci0KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VjdGlvbiA9IGVsZW1lbnQucGFyZW50RWxlbWVu
dC5wYXJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQucGFyZW50RWxlbWVudDsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi5wYXJlbnRFbGVtZW50LnJlbW92ZUNoaWxkKHNl
Y3Rpb24pOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07Ci0gICAgICAgICAgICAgICAg
ICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICB9KTsKLQotICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gYDxkaXYgY2xhc3M9InNlY3Rpb24iPgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDxkaXYgY2xhc3M9ImhlYWRlciI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDxkaXYgY2xhc3M9InRpdGxlIiBzdHlsZT0iZm9udC1zaXplOnZhcigtLXNtYWxsU2l6ZSk7d29y
ZC1icmVhazpicmVhay13b3JkOyI+JHtjaGlsZC50ZXN0fSAoJHtjaGlsZC5zdWl0ZX0pPC9kaXY+
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbnMiPgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsaXN0Ij4KLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJpdGVtIGxpbmstYnV0dG9u
IiByZWY9IiR7ZXhpdFJlZn0iPlg8L2E+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAk
e2NoaWxkLnRpbWVsaW5lfQotICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+YDsKLSAgICAg
ICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBpZiAoZGlmZi5jaGlsZHJlbikKLSAgICAg
ICAgICAgICAgICAgICAgRE9NLmluamVjdChlbGVtZW50LCBkaWZmLmNoaWxkcmVuLm1hcChyZW5k
ZXJDaGlsZCkuam9pbignJykpOwotICAgICAgICAgICAgICAgIGlmIChkaWZmLnByZXBlbmRpbmcp
IHsKLSAgICAgICAgICAgICAgICAgICAgZGlmZi5wcmVwZW5kaW5nLmZvckVhY2goY2hpbGQgPT4g
ewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQuZmlyc3RFbGVtZW50Q2hpbGQp
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgRE9NLmFmdGVyKGVsZW1lbnQuZmlyc3RFbGVt
ZW50Q2hpbGQsIHJlbmRlckNoaWxkKGNoaWxkKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgRE9NLmluamVjdChlbGVtZW50LCByZW5k
ZXJDaGlsZChjaGlsZCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWYuc3RhdGUu
Y2hpbGRyZW4udW5zaGlmdChjaGlsZCk7Ci0gICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAg
ICAgICAgICAgIH0gCi0gICAgICAgICAgICB9Ci0gICAgICAgIH0pOwotICAgIH0KLSAgICByZWxv
YWQoKSB7Ci0gICAgICAgIGxldCBwYXJhbXMgPSBxdWVyeVRvUGFyYW1zKGRvY3VtZW50LlVSTC5z
cGxpdCgnPycpWzFdKTsKLSAgICAgICAgbGV0IGxpbWl0ID0gcGFyYW1zLmxpbWl0ID8gcGFyc2VJ
bnQocGFyYW1zLmxpbWl0W3BhcmFtcy5saW1pdC5sZW5ndGggLSAxXSkgOiBERUZBVUxUX0xJTUlU
OwotCi0gICAgICAgIC8vIFRyeSBhbmQgZGV0ZXJtaW5lIGlmIHRoZSB0ZXN0cyB3ZSdyZSBkaXNw
bGF5aW5nIGhhdmUgY2hhbmdlZC4KLSAgICAgICAgaWYgKHBhcmFtcy50ZXN0ICYmICghcGFyYW1z
LnN1aXRlIHx8IHBhcmFtcy50ZXN0Lmxlbmd0aCAhPSBwYXJhbXMuc3VpdGUubGVuZ3RoKSkKLSAg
ICAgICAgICAgIHRoaXMucmVmLnNldFN0YXRlKHtlcnJvcjogIlF1ZXJ5IEVycm9yIiwgZGVzY3Jp
cHRpb246ICdNdXN0IGhhdmUgdGhlIHNhbWUgbnVtYmVyIG9mIHN1aXRlcyBhbmQgdGVzdHMgaW4g
cXVlcnknfSk7Ci0gICAgICAgIGVsc2UgaWYgKHBhcmFtcy50ZXN0KSB7Ci0gICAgICAgICAgICBs
ZXQgbmVlZFJlUmVuZGVyID0gcGFyYW1zLnRlc3QubGVuZ3RoICE9IHRoaXMucmVmLnN0YXRlLmNo
aWxkcmVuLmxlbmd0aDsKLSAgICAgICAgICAgIGxldCBuZXdDaGlsZHJlbiA9IFtdOwotCi0gICAg
ICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBhcmFtcy50ZXN0Lmxlbmd0aDsgKytpKSB7Ci0g
ICAgICAgICAgICAgICAgbGV0IGRpZEZpbmQgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICBmb3Ig
KGxldCBzZWFyY2ggPSAwOyBzZWFyY2ggPCB0aGlzLnJlZi5zdGF0ZS5jaGlsZHJlbi5sZW5ndGg7
ICsrc2VhcmNoKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnJlZi5zdGF0ZS5jaGls
ZHJlbltzZWFyY2hdLnN1aXRlID09PSBwYXJhbXMuc3VpdGVbaV0gJiYgdGhpcy5yZWYuc3RhdGUu
Y2hpbGRyZW5bc2VhcmNoXS50ZXN0ID09PSBwYXJhbXMudGVzdFtpXSkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgbmV3Q2hpbGRyZW4ucHVzaCh0aGlzLnJlZi5zdGF0ZS5jaGlsZHJlbltzZWFy
Y2hdKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGRpZEZpbmQgPSB0cnVlOwotICAgICAgICAg
ICAgICAgICAgICAgICAgdGhpcy5yZWYuc3RhdGUuY2hpbGRyZW4uc3BsaWNlKHNlYXJjaCwgMSk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfSBl
bHNlCi0gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlZi5zdGF0ZS5jaGlsZHJlbltzZWFy
Y2hdLnRpbWVsaW5lLnRlYXJkb3duKCk7Ci0gICAgICAgICAgICAgICAgICAgIG5lZWRSZVJlbmRl
ciA9IHRydWU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmICghZGlkRmlu
ZCkgewotICAgICAgICAgICAgICAgICAgICBuZWVkUmVSZW5kZXIgPSB0cnVlOwotCi0gICAgICAg
ICAgICAgICAgICAgIG5ld0NoaWxkcmVuLnB1c2goewotICAgICAgICAgICAgICAgICAgICAgICAg
c3VpdGU6IHBhcmFtcy5zdWl0ZVtpXSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Q6IHBh
cmFtcy50ZXN0W2ldLAotICAgICAgICAgICAgICAgICAgICAgICAgdGltZWxpbmU6IG5ldyBUaW1l
bGluZUZyb21FbmRwb2ludChgYXBpL3Jlc3VsdHMvJHtwYXJhbXMuc3VpdGVbaV19LyR7cGFyYW1z
LnRlc3RbaV19YCwgcGFyYW1zLnN1aXRlW2ldLCBwYXJhbXMudGVzdFtpXSksCi0gICAgICAgICAg
ICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAg
ICAgICAgaWYgKG5lZWRSZVJlbmRlcikKLSAgICAgICAgICAgICAgICB0aGlzLnJlZi5zZXRTdGF0
ZSh7Y2hpbGRyZW46IG5ld0NoaWxkcmVufSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgdGhpcy5yZWYuc3RhdGUuY2hpbGRyZW4gPSBuZXdDaGlsZHJlbjsKLSAgICAgICAgfQot
Ci0gICAgICAgIGRlbGV0ZSBwYXJhbXMubGltaXQ7Ci0gICAgICAgIGRlbGV0ZSBwYXJhbXMuc3Vp
dGU7Ci0gICAgICAgIGRlbGV0ZSBwYXJhbXMudGVzdDsKLQotICAgICAgICBpZiAoZGVlcENvbXBh
cmUocGFyYW1zLCB0aGlzLmN1cnJlbnRQYXJhbXMpKSB7Ci0gICAgICAgICAgICBpZiAobGltaXQg
PT09IHRoaXMuY3VycmVudExpbWl0KQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
ICAgIGlmIChsaW1pdCA8IHRoaXMuY3VycmVudExpbWl0KSB7Ci0gICAgICAgICAgICAgICAgdGhp
cy5jdXJyZW50TGltaXQgPSBsaW1pdDsKLSAgICAgICAgICAgICAgICB0aGlzLnJlZi5zdGF0ZS5j
aGlsZHJlbi5mb3JFYWNoKGNoaWxkID0+IHsKLSAgICAgICAgICAgICAgICAgICAgY2hpbGQudGlt
ZWxpbmUucmVyZW5kZXIoKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB0aGlzLmN1cnJlbnRMaW1pdCA9IGxp
bWl0OwotICAgICAgICB9Ci0KLSAgICAgICAgdGhpcy5yZWYuc3RhdGUuY2hpbGRyZW4uZm9yRWFj
aChjaGlsZCA9PiB7Ci0gICAgICAgICAgICBjaGlsZC50aW1lbGluZS5yZWxvYWQoKTsKLSAgICAg
ICAgfSk7Ci0gICAgICAgIHRoaXMuY3VycmVudFBhcmFtcyA9IHBhcmFtczsKLSAgICB9Ci0gICAg
dG9TdHJpbmcoKSB7Ci0gICAgICAgIHJldHVybiBgPGRpdiByZWY9IiR7dGhpcy5yZWZ9Ij48L2Rp
dj5gOwotICAgIH0KLSAgICBub3RpZnlUaW1lbGluZXNSZW5kZXIoKSB7Ci0gICAgICAgIHRoaXMu
cmVmLnN0YXRlLmNoaWxkcmVuLmZvckVhY2goY2hpbGQgPT4gewotICAgICAgICAgICAgY2hpbGQu
dGltZWxpbmUubm90aWZ5UmVyZW5kZXIoKTsKLSAgICAgICAgfSk7Ci0gICAgfQotfQotCi1sZXQg
dmlldyA9IG5ldyBTZWFyY2hWaWV3KCk7Ci1jb25zdCBvbkxheW91dENoYW5nZSA9IG5ldyBFdmVu
dFN0cmVhbSgpOwotb25MYXlvdXRDaGFuZ2UuYWN0aW9uKCgpID0+IHsKLSAgICB2aWV3Lm5vdGlm
eVRpbWVsaW5lc1JlbmRlcigpOwotfSk7Ci13aW5kb3cub25wb3BzdGF0ZSA9IGV2ZW50ID0+IHt2
aWV3LnJlbG9hZCgpO307Ci13aW5kb3cub25wdXNoc3RhdGUgPSBldmVudCA9PiB7dmlldy5yZWxv
YWQoKTt9OwotCi1sZXQgdmlld3BvcnQgPSBudWxsOwotRE9NLmluamVjdCgKLSAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnYXBwJyksCi0gICAgYCR7VG9vbFRpcH0KLSAgICAke0ludmVzdGln
YXRlRHJhd2VyfQotICAgICR7RHJhd2VyKFsKLSAgICAgICAgTGVnZW5kKCgpID0+IHsKLSAgICAg
ICAgICAgIHZpZXcucmVmLnN0YXRlLmNoaWxkcmVuLmZvckVhY2goKGNoaWxkKSA9PiB7Ci0gICAg
ICAgICAgICAgICAgY2hpbGQudGltZWxpbmUudXBkYXRlKCk7Ci0gICAgICAgICAgICB9KTsKLSAg
ICAgICAgfSwgZmFsc2UpLAotICAgICAgICBMaW1pdFNsaWRlcigoKSA9PiB7dmlldy5yZWxvYWQo
KX0pLAotICAgICAgICBCcmFuY2hTZWxlY3RvcigoKSA9PiB7Ci0gICAgICAgICAgICBDb21taXRC
YW5rLnJlbG9hZCgpOwotICAgICAgICAgICAgdmlldy5yZWxvYWQoKTsKLSAgICAgICAgfSksCi0g
ICAgICAgIENvbmZpZ3VyYXRpb25TZWxlY3RvcnMoKCkgPT4ge3ZpZXcucmVsb2FkKCl9KSwKLSAg
ICBdLCAoKSA9PiBvbkxheW91dENoYW5nZS5hZGQoKSl9Ci0KLSAgICA8ZGl2IGNsYXNzPSJtYWlu
IHJpZ2h0LXNpZGViYXIgdW5kZXItdG9wYmFyLXdpdGgtYWN0aW9ucyI+Ci0gICAgICAgIDxkaXYg
Y2xhc3M9ImNvbnRlbnQiIHJlZj0ke1JFRi5jcmVhdGVSZWYoewotICAgICAgICAgICAgICAgIG9u
RWxlbWVudE1vdW50OiAoZWxlbWVudCkgPT4gewotICAgICAgICAgICAgICAgICAgICB2aWV3LnJl
Zi5zdGF0ZS5jaGlsZHJlbi5mb3JFYWNoKChjaGlsZCkgPT4gewotICAgICAgICAgICAgICAgICAg
ICAgICAgY2hpbGQudGltZWxpbmUudmlld3BvcnQgPSBlbGVtZW50OwotICAgICAgICAgICAgICAg
ICAgICB9KTsKLSAgICAgICAgICAgICAgICAgICAgdmlld3BvcnQgPSBlbGVtZW50OwotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIH0pfT4KLSAgICAgICAgICAgICR7U2VhcmNoQmFyKGZ1
bmN0aW9uICgpIHsKLSAgICAgICAgICAgICAgICBjb25zdCBzcGxpdFVSTCA9IGRvY3VtZW50LlVS
TC5zcGxpdCgnPycpOwotICAgICAgICAgICAgICAgIGxldCBwYXJhbXMgPSBxdWVyeVRvUGFyYW1z
KHNwbGl0VVJMWzFdKTsKLSAgICAgICAgICAgICAgICBpZiAoIXBhcmFtcy5zdWl0ZSkKLSAgICAg
ICAgICAgICAgICAgICAgcGFyYW1zLnN1aXRlID0gW107Ci0gICAgICAgICAgICAgICAgaWYgKCFw
YXJhbXMudGVzdCkKLSAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnRlc3QgPSBbXTsKLQotICAg
ICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7
Ci0gICAgICAgICAgICAgICAgICAgIGxldCBuZWVkVG9BZGQgPSB0cnVlOwotICAgICAgICAgICAg
ICAgICAgICBpZiAoIW5lZWRUb0FkZCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwotCi0gICAgICAgICAgICAgICAgICAgIGxldCBjaGlsZCA9IHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHN1aXRlOiBhcmd1bWVudHNbaV0uc3VpdGUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICB0ZXN0OiBhcmd1bWVudHNbaV0udGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVs
aW5lOiBuZXcgVGltZWxpbmVGcm9tRW5kcG9pbnQoYGFwaS9yZXN1bHRzLyR7YXJndW1lbnRzW2ld
LnN1aXRlfS8ke2FyZ3VtZW50c1tpXS50ZXN0fWAsIGFyZ3VtZW50c1tpXS5zdWl0ZSwgYXJndW1l
bnRzW2ldLnRlc3QsIHZpZXdwb3J0KSwKLSAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICAgICAgICAgIHZpZXcucmVmLnNldFN0YXRlKHtwcmVwZW5kaW5nOiBbY2hpbGRdfSk7Ci0g
ICAgICAgICAgICAgICAgICAgIHBhcmFtcy5zdWl0ZS5wdXNoKGNoaWxkLnN1aXRlKTsKLSAgICAg
ICAgICAgICAgICAgICAgcGFyYW1zLnRlc3QucHVzaChjaGlsZC50ZXN0KTsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgY29uc3QgcXVlcnlTdHJpbmcgPSBwYXJhbXNUb1F1ZXJ5
KHBhcmFtcyk7Ci0gICAgICAgICAgICAgICAgd2luZG93Lmhpc3RvcnkucHVzaFN0YXRlKHF1ZXJ5
U3RyaW5nLCAnJywgc3BsaXRVUkxbMF0gKyAnPycgKyBxdWVyeVN0cmluZyk7Ci0gICAgICAgICAg
ICB9LCBTVUlURVMpfQotICAgICAgICAgICAgJHt2aWV3fQotICAgICAgICA8L2Rpdj4KLSAgICA8
L2Rpdj5gCi0pOwotCi08L3NjcmlwdD4KLQoteyUgZW5kYmxvY2sgJX0KLXslIGJsb2NrIGNvbnRl
bnQgJX0KLQotPGRpdiBpZD0iYXBwIj4KLTwvZGl2PgotCi17JSBlbmRibG9jayAlfQpJbmRleDog
VG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy90ZW1wbGF0ZXMvc3VpdGVfcmVzdWx0
cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcv
dGVtcGxhdGVzL3N1aXRlX3Jlc3VsdHMuaHRtbAkocmV2aXNpb24gMjY1NTMxKQorKysgVG9vbHMv
cmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy90ZW1wbGF0ZXMvc3VpdGVfcmVzdWx0cy5odG1s
CShub25leGlzdGVudCkKQEAgLTEsMjA3ICswLDAgQEAKLTwhLS0KLSBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotCi0gUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gYXJlIG1ldDoKLSAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotCi0gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuICJBUyBJUyIgQU5EIEFOWQotIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKLSBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotLS0+Ci0KLXslIGV4dGVuZHMgImJhc2UuaHRt
bCIgJX0KLXslIGJsb2NrIGhlYWQgJX0KLTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4
dC9jc3MiIGhyZWY9ImFzc2V0cy9jc3Mvc2VhcmNoLmNzcyI+Ci08bGluayByZWw9InN0eWxlc2hl
ZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJhc3NldHMvY3NzL3RpbWVsaW5lLmNzcyI+Ci08bGlu
ayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJhc3NldHMvY3NzL3Rvb2x0
aXAuY3NzIj4KLQotPHNjcmlwdCB0eXBlPSJtb2R1bGUiPgotaW1wb3J0IHtDb21taXRCYW5rfSBm
cm9tICcvYXNzZXRzL2pzL2NvbW1pdC5qcyc7Ci1pbXBvcnQge2RlZXBDb21wYXJlLCBFcnJvckRp
c3BsYXksIHF1ZXJ5VG9QYXJhbXMsIHBhcmFtc1RvUXVlcnl9IGZyb20gJy9hc3NldHMvanMvY29t
bW9uLmpzJzsKLWltcG9ydCB7Q29uZmlndXJhdGlvbn0gZnJvbSAnL2Fzc2V0cy9qcy9jb25maWd1
cmF0aW9uLmpzJzsKLWltcG9ydCB7RHJhd2VyLCBCcmFuY2hTZWxlY3RvciwgQ29uZmlndXJhdGlv
blNlbGVjdG9ycywgTGltaXRTbGlkZXJ9IGZyb20gJy9hc3NldHMvanMvZHJhd2VyLmpzJzsKLWlt
cG9ydCB7SW52ZXN0aWdhdGVEcmF3ZXJ9IGZyb20gJy9hc3NldHMvanMvaW52ZXN0aWdhdGUuanMn
OwotaW1wb3J0IHtMZWdlbmQsIFRpbWVsaW5lRnJvbUVuZHBvaW50fSBmcm9tICcvYXNzZXRzL2pz
L3RpbWVsaW5lLmpzJzsKLWltcG9ydCB7VG9vbFRpcH0gZnJvbSAnL2Fzc2V0cy9qcy90b29sdGlw
LmpzJzsKLWltcG9ydCB7RE9NLCBSRUYsIEV2ZW50U3RyZWFtfSBmcm9tICcvbGlicmFyeS9qcy9S
ZWYuanMnOwotCi1jb25zdCBERUZBVUxUX0xJTUlUID0gMTAwOwotY29uc3QgU1VJVEVTID0gSlNP
Ti5wYXJzZSgne3sgc3VpdGVzfHNhZmUgfX0nKTsKLQotY2xhc3MgTWFpblZpZXcgewotICAgIGNv
bnN0cnVjdG9yKCkgeyAgICAKLSAgICAgICAgdGhpcy5jdXJyZW50UGFyYW1zID0gcXVlcnlUb1Bh
cmFtcyhkb2N1bWVudC5VUkwuc3BsaXQoJz8nKVsxXSk7Ci0gICAgICAgIHRoaXMuY3VycmVudExp
bWl0ID0gdGhpcy5jdXJyZW50UGFyYW1zLmxpbWl0ID8gcGFyc2VJbnQodGhpcy5jdXJyZW50UGFy
YW1zLmxpbWl0W3RoaXMuY3VycmVudFBhcmFtcy5saW1pdC5sZW5ndGggLSAxXSkgOiBERUZBVUxU
X0xJTUlUOwotICAgICAgICBkZWxldGUgdGhpcy5jdXJyZW50UGFyYW1zLmxpbWl0OwotCi0gICAg
ICAgIHRoaXMucmVmID0gUkVGLmNyZWF0ZVJlZih7Ci0gICAgICAgICAgICBzdGF0ZTogU1VJVEVT
LAotICAgICAgICAgICAgb25TdGF0ZVVwZGF0ZTogKGVsZW1lbnQsIHN0YXRlKSA9PiB7Ci0gICAg
ICAgICAgICAgICAgaWYgKCFzdGF0ZSkKLSAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5pbm5l
ckhUTUwgPSB0aGlzLnBsYWNlaG9sZGVyKCk7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoc3Rh
dGUuZXJyb3IpCi0gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuaW5uZXJIVE1MID0gRXJyb3JE
aXNwbGF5KHN0YXRlKTsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChzdGF0ZS5sZW5ndGggPT09
IDApCi0gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuaW5uZXJIVE1MID0gRXJyb3JEaXNwbGF5
KHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yOiAnTm90IEZvdW5kJywKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnTm8gc3VpdGVzIG1hdGNoaW5nIHRoZSBzcGVj
aWZpZWQgY3JpdGVyaWEnLAotICAgICAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIERPTS5pbmplY3QoZWxlbWVudCwgdGhpcy5yZW5k
ZXIoc3RhdGUpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSk7Ci0gICAgICAgIHRoaXMubGF0
ZXN0RGlzcGF0Y2ggPSBEYXRlLm5vdygpOwotICAgICAgICB0aGlzLmNoaWxkcmVuID0ge307Ci0K
LSAgICAgICAgU1VJVEVTLmZvckVhY2goKHN1aXRlKSA9PiB7Ci0gICAgICAgICAgICB0aGlzLmNo
aWxkcmVuW3N1aXRlXSA9IG5ldyBUaW1lbGluZUZyb21FbmRwb2ludCgnYXBpL3Jlc3VsdHMvJyAr
IHN1aXRlLCBzdWl0ZSk7Ci0gICAgICAgIH0pOwotICAgIH0KLSAgICB1bnBhY2tTdWl0ZXMoc3Vp
dGVzSnNvbikgewotICAgICAgICBpZiAoc3VpdGVzSnNvbi5lcnJvcikKLSAgICAgICAgICAgIHJl
dHVybiBzdWl0ZXNKc29uOwotCi0gICAgICAgIGxldCBzdWl0ZXMgPSBuZXcgU2V0KCk7Ci0gICAg
ICAgIHN1aXRlc0pzb24uZm9yRWFjaCgocGFpcikgPT4gewotICAgICAgICAgICAgcGFpclsxXS5m
b3JFYWNoKChzdWl0ZSkgPT4gewotICAgICAgICAgICAgICAgIHN1aXRlcy5hZGQoc3VpdGUpOwot
ICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0pOwotCi0gICAgICAgIGxldCBzb3J0ZWRTdWl0ZXMg
PSBbLi4uc3VpdGVzXS5zb3J0KCk7Ci0gICAgICAgIE9iamVjdC5rZXlzKHRoaXMuY2hpbGRyZW4p
LmZvckVhY2goa2V5ID0+IHt0aGlzLmNoaWxkcmVuW2tleV0udGVhcmRvd24oKTt9KTsKLSAgICAg
ICAgdGhpcy5jaGlsZHJlbiA9IHt9OwotICAgICAgICBzb3J0ZWRTdWl0ZXMuZm9yRWFjaCgoc3Vp
dGUpID0+IHsKLSAgICAgICAgICAgIHRoaXMuY2hpbGRyZW5bc3VpdGVdID0gbmV3IFRpbWVsaW5l
RnJvbUVuZHBvaW50KCdhcGkvcmVzdWx0cy8nICsgc3VpdGUsIHN1aXRlKTsKLSAgICAgICAgfSk7
Ci0gICAgICAgIHJldHVybiBzb3J0ZWRTdWl0ZXM7Ci0gICAgfQotICAgIHJlbG9hZCgpIHsKLSAg
ICAgICAgbGV0IHBhcmFtcyA9IHF1ZXJ5VG9QYXJhbXMoZG9jdW1lbnQuVVJMLnNwbGl0KCc/Jylb
MV0pOwotICAgICAgICBsZXQgbGltaXQgPSBwYXJhbXMubGltaXQgPyBwYXJzZUludChwYXJhbXMu
bGltaXRbcGFyYW1zLmxpbWl0Lmxlbmd0aCAtIDFdKSA6IERFRkFVTFRfTElNSVQ7Ci0gICAgICAg
IGRlbGV0ZSBwYXJhbXMubGltaXQ7Ci0KLSAgICAgICAgaWYgKGRlZXBDb21wYXJlKHBhcmFtcywg
dGhpcy5jdXJyZW50UGFyYW1zKSkgewotICAgICAgICAgICAgaWYgKGxpbWl0ID09PSB0aGlzLmN1
cnJlbnRMaW1pdCkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgIGZvciAo
bGV0IHN1aXRlIGluIHRoaXMuY2hpbGRyZW4pIHsKLSAgICAgICAgICAgICAgICBpZiAobGltaXQg
PiB0aGlzLmN1cnJlbnRMaW1pdCkKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGlsZHJlbltz
dWl0ZV0ucmVsb2FkKCk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAg
ICB0aGlzLmNoaWxkcmVuW3N1aXRlXS5yZXJlbmRlcigpOwotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgdGhpcy5jdXJyZW50TGltaXQgPSBsaW1pdDsKLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgfQotCi0gICAgICAgIGxldCBteURpc3BhdGNoID0gRGF0ZS5ub3coKTsKLSAgICAgICAg
dGhpcy5jdXJyZW50UGFyYW1zID0gcGFyYW1zOwotICAgICAgICB0aGlzLmN1cnJlbnRMaW1pdCA9
IGxpbWl0OwotICAgICAgICB0aGlzLmxhdGVzdERpc3BhdGNoID0gTWF0aC5tYXgodGhpcy5sYXRl
c3REaXNwYXRjaCwgbXlEaXNwYXRjaCk7Ci0gICAgICAgIHRoaXMucmVmLnNldFN0YXRlKG51bGwp
OwotCi0gICAgICAgIGxldCBzZWxmID0gdGhpczsKLSAgICAgICAgbGV0IHN1aXRlUGFyYW1zID0g
e307Ci0gICAgICAgIENvbmZpZ3VyYXRpb24ubWVtYmVycygpLmZvckVhY2gobWVtYmVyID0+IHsK
LSAgICAgICAgICAgIGlmIChwYXJhbXNbbWVtYmVyXSkKLSAgICAgICAgICAgICAgICBzdWl0ZVBh
cmFtc1ttZW1iZXJdID0gcGFyYW1zW21lbWJlcl07Ci0gICAgICAgIH0pOwotICAgICAgICBpZiAo
cGFyYW1zLmJyYW5jaCkKLSAgICAgICAgICAgIHN1aXRlUGFyYW1zLmJyYW5jaCA9IHBhcmFtcy5i
cmFuY2g7Ci0gICAgICAgIGxldCBxdWVyeSA9IHBhcmFtc1RvUXVlcnkoc3VpdGVQYXJhbXMpOwot
ICAgICAgICBmZXRjaChxdWVyeSA/ICdhcGkvc3VpdGVzPycgKyBxdWVyeTogJ2FwaS9zdWl0ZXMn
KS50aGVuKHJlc3BvbnNlID0+IHsKLSAgICAgICAgICAgIHJlc3BvbnNlLmpzb24oKS50aGVuKGpz
b24gPT4gewotICAgICAgICAgICAgICAgIGlmIChteURpc3BhdGNoID09PSB0aGlzLmxhdGVzdERp
c3BhdGNoKQotICAgICAgICAgICAgICAgICAgICBzZWxmLnJlZi5zZXRTdGF0ZSh0aGlzLnVucGFj
a1N1aXRlcyhqc29uKSk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfSkuY2F0Y2goZXJyb3Ig
PT4gewotICAgICAgICAgICAgaWYgKG15RGlzcGF0Y2ggPT09IHNlbGYubGF0ZXN0RGlzcGF0Y2gp
Ci0gICAgICAgICAgICAgICAgc2VsZi5yZWYuc2V0U3RhdGUoe2Vycm9yOiAiQ29ubmVjdGlvbiBF
cnJvciIsIGRlc2NyaXB0aW9uOiBlcnJvcn0pOwotICAgICAgICB9KTsKLSAgICB9Ci0gICAgcGxh
Y2Vob2xkZXIoKSB7Ci0gICAgICAgIHJldHVybiBgPGRpdiBjbGFzcz0icGxhY2Vob2xkZXIgZGlt
bWVyIj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsb2FkZXIiPgotICAgICAgICAgICAg
ICAgICAgICA8ZGl2IGNsYXNzPSJzcGlubmVyIj48L2Rpdj4KLSAgICAgICAgICAgICAgICA8L2Rp
dj4KLSAgICAgICAgICAgIDwvZGl2PmA7Ci0gICAgfQotICAgIHRvU3RyaW5nKCkgewotICAgICAg
ICByZXR1cm4gYDxkaXYgcmVmPSIke3RoaXMucmVmfSI+PC9kaXY+YDsKLSAgICB9Ci0gICAgcmVu
ZGVyKHN1aXRlcykgewotICAgICAgICBsZXQgY2hpbGRyZW4gPSB0aGlzLmNoaWxkcmVuOwotICAg
ICAgICByZXR1cm4gc3VpdGVzLm1hcChzdWl0ZSA9PiB7Ci0gICAgICAgICAgICByZXR1cm4gYDxk
aXYgY2xhc3M9InNlY3Rpb24iPgotICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWFk
ZXIiPgotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGUiPiR7c3VpdGV9
PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAk
e2NoaWxkcmVuW3N1aXRlXX0KLSAgICAgICAgICAgICAgICA8L2Rpdj48YnI+YDsKLSAgICAgICAg
fSkuam9pbignJyk7Ci0gICAgfQotICAgIG5vdGlmeVRpbWVsaW5lc1JlbmRlcigpIHsKLSAgICAg
ICAgZm9yIChsZXQgc3VpdGUgaW4gdGhpcy5jaGlsZHJlbikgewotICAgICAgICAgICAgdGhpcy5j
aGlsZHJlbltzdWl0ZV0ubm90aWZ5UmVyZW5kZXIoKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQot
bGV0IHZpZXcgPSBuZXcgTWFpblZpZXcoKTsKLWNvbnN0IG9uTGF5b3V0Q2hhbmdlID0gbmV3IEV2
ZW50U3RyZWFtKCk7Ci1vbkxheW91dENoYW5nZS5hY3Rpb24oKCkgPT4gewotICAgIHZpZXcubm90
aWZ5VGltZWxpbmVzUmVuZGVyKCk7Ci19KTsKLQotRE9NLmluamVjdChkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnYXBwJyksIGAke1Rvb2xUaXB9Ci0ke0ludmVzdGlnYXRlRHJhd2VyfQotJHtEcmF3
ZXIoWwotICAgIExlZ2VuZCgoKSA9PiB7Ci0gICAgICAgIGZvciAobGV0IHN1aXRlIGluIHZpZXcu
Y2hpbGRyZW4pIHsKLSAgICAgICAgICAgIHZpZXcuY2hpbGRyZW5bc3VpdGVdLnVwZGF0ZSgpOwot
ICAgICAgICB9Ci0gICAgfSwgdHJ1ZSwgdHJ1ZSksCi0gICAgTGltaXRTbGlkZXIoKCkgPT4ge3Zp
ZXcucmVsb2FkKCl9KSwKLSAgICBCcmFuY2hTZWxlY3RvcigoKSA9PiB7Ci0gICAgICAgIENvbW1p
dEJhbmsucmVsb2FkKCk7Ci0gICAgICAgIHZpZXcucmVsb2FkKCk7Ci0gICAgfSksCi0gICAgQ29u
ZmlndXJhdGlvblNlbGVjdG9ycygoKSA9PiB7dmlldy5yZWxvYWQoKX0pLAotXSwgKCkgPT4gb25M
YXlvdXRDaGFuZ2UuYWRkKCkpfQotPGRpdiBjbGFzcz0ibWFpbiByaWdodC1zaWRlYmFyIHVuZGVy
LXRvcGJhci13aXRoLWFjdGlvbnMiPgotICAgIDxicj4KLSAgICA8ZGl2IGNsYXNzPSJjb250ZW50
IiByZWY9JHtSRUYuY3JlYXRlUmVmKHsKLSAgICAgICAgICAgIG9uRWxlbWVudE1vdW50OiAoZWxl
bWVudCkgPT4gewotICAgICAgICAgICAgICAgIGZvciAobGV0IHN1aXRlIGluIHZpZXcuY2hpbGRy
ZW4pIHsKLSAgICAgICAgICAgICAgICAgICAgdmlldy5jaGlsZHJlbltzdWl0ZV0udmlld3BvcnQg
PSBlbGVtZW50OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfSl9
PgotICAgICAgICAke3ZpZXd9Ci0gICAgPC9kaXY+Ci08L2Rpdj5gKTsKLQotPC9zY3JpcHQ+Ci0K
LXslIGVuZGJsb2NrICV9Ci17JSBibG9jayBjb250ZW50ICV9Ci0KLTxkaXYgaWQ9ImFwcCI+Ci08
L2Rpdj4KLQoteyUgZW5kYmxvY2sgJX0KSW5kZXg6IFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNk
YnB5L3ZpZXcvdmlld19yb3V0ZXMucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvcmVzdWx0c2RicHkv
cmVzdWx0c2RicHkvdmlldy92aWV3X3JvdXRlcy5weQkocmV2aXNpb24gMjY1NTMxKQorKysgVG9v
bHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy92aWV3X3JvdXRlcy5weQkobm9uZXhpc3Rl
bnQpCkBAIC0xLDE1OCArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAxOSwgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMg
YXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECi0jIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IK
LSMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotIyBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UgotIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotCi1pbXBvcnQgb3MKLWltcG9ydCByZXF1ZXN0cwotaW1wb3J0IHRpbWUKLQotZnJv
bSBmbGFzayBpbXBvcnQgYWJvcnQsIGpzb25pZnksIHNlbmRfZnJvbV9kaXJlY3RvcnksIHJlZGly
ZWN0LCBSZXNwb25zZQotZnJvbSBqaW5qYTIgaW1wb3J0IEVudmlyb25tZW50LCBQYWNrYWdlTG9h
ZGVyLCBzZWxlY3RfYXV0b2VzY2FwZQotZnJvbSByZXN1bHRzZGJweS5mbGFza19zdXBwb3J0LnV0
aWwgaW1wb3J0IEFzc2VydFJlcXVlc3QsIGNhY2hlX2ZvcgotZnJvbSByZXN1bHRzZGJweS5mbGFz
a19zdXBwb3J0LmF1dGhlZF9ibHVlcHJpbnQgaW1wb3J0IEF1dGhlZEJsdWVwcmludAotZnJvbSBy
ZXN1bHRzZGJweS52aWV3LmFyY2hpdmVfdmlldyBpbXBvcnQgQXJjaGl2ZVZpZXcKLWZyb20gcmVz
dWx0c2RicHkudmlldy5jaV92aWV3IGltcG9ydCBDSVZpZXcKLWZyb20gcmVzdWx0c2RicHkudmll
dy5jb21taXRfdmlldyBpbXBvcnQgQ29tbWl0VmlldwotZnJvbSByZXN1bHRzZGJweS52aWV3LnNp
dGVfbWVudSBpbXBvcnQgU2l0ZU1lbnUKLWZyb20gcmVzdWx0c2RicHkudmlldy5zdWl0ZV92aWV3
IGltcG9ydCBTdWl0ZVZpZXcKLWZyb20gd2Vya3pldWcuZXhjZXB0aW9ucyBpbXBvcnQgSFRUUEV4
Y2VwdGlvbiwgSW50ZXJuYWxTZXJ2ZXJFcnJvcgotCi0KLWNsYXNzIFZpZXdSb3V0ZXMoQXV0aGVk
Qmx1ZXByaW50KToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbW9kZWwsIGNvbnRyb2xsZXIsIGlt
cG9ydF9uYW1lPV9fbmFtZV9fLCB0aXRsZT0nUmVzdWx0cyBEYXRhYmFzZScsIGF1dGhfZGVjb3Jh
dG9yPU5vbmUsIGFyY2hpdmVfcm91dGVzPU5vbmUpOgotICAgICAgICBzdXBlcihWaWV3Um91dGVz
LCBzZWxmKS5fX2luaXRfXygndmlldycsIGltcG9ydF9uYW1lLCB1cmxfcHJlZml4PU5vbmUsIGF1
dGhfZGVjb3JhdG9yPWF1dGhfZGVjb3JhdG9yKQotICAgICAgICBzZWxmLl9jYWNoZSA9IHt9Ci0K
LSAgICAgICAgc2VsZi50aXRsZSA9IHRpdGxlCi0gICAgICAgIHNlbGYuZW52aXJvbm1lbnQgPSBF
bnZpcm9ubWVudCgKLSAgICAgICAgICAgIGxvYWRlcj1QYWNrYWdlTG9hZGVyKHBhY2thZ2VfbmFt
ZT0ncmVzdWx0c2RicHkudmlldycsIHBhY2thZ2VfcGF0aD0ndGVtcGxhdGVzJyksCi0gICAgICAg
ICAgICBhdXRvZXNjYXBlPXNlbGVjdF9hdXRvZXNjYXBlKFsnaHRtbCcsICd4bWwnXSksCi0gICAg
ICAgICkKLQotICAgICAgICAjIFByb3RlY3RpbmcganMgYW5kIGNzcyB3aXRoIGF1dGggZG9lc24n
dCBtYWtlIHNlbnNlCi0gICAgICAgIHNlbGYuYWRkX3VybF9ydWxlKCcvbGlicmFyeS88cGF0aDpw
YXRoPicsICdsaWJyYXJ5Jywgc2VsZi5saWJyYXJ5LCBhdXRoZWQ9RmFsc2UsIG1ldGhvZHM9KCdH
RVQnLCkpCi0gICAgICAgIHNlbGYuYWRkX3VybF9ydWxlKCcvYXNzZXRzLzxwYXRoOnBhdGg+Jywg
J2Fzc2V0cycsIHNlbGYuYXNzZXRzLCBhdXRoZWQ9RmFsc2UsIG1ldGhvZHM9KCdHRVQnLCkpCi0K
LSAgICAgICAgc2VsZi5zaXRlX21lbnUgPSBTaXRlTWVudSh0aXRsZT1zZWxmLnRpdGxlKQotCi0g
ICAgICAgIHNlbGYuY29tbWl0cyA9IENvbW1pdFZpZXcoCi0gICAgICAgICAgICBlbnZpcm9ubWVu
dD1zZWxmLmVudmlyb25tZW50LAotICAgICAgICAgICAgY29tbWl0X2NvbnRyb2xsZXI9Y29udHJv
bGxlci5jb21taXRfY29udHJvbGxlciwKLSAgICAgICAgICAgIHNpdGVfbWVudT1zZWxmLnNpdGVf
bWVudSwKLSAgICAgICAgKQotICAgICAgICBzZWxmLnN1aXRlcyA9IFN1aXRlVmlldygKLSAgICAg
ICAgICAgIGVudmlyb25tZW50PXNlbGYuZW52aXJvbm1lbnQsCi0gICAgICAgICAgICB1cGxvYWRf
Y29udHJvbGxlcj1jb250cm9sbGVyLnVwbG9hZF9jb250cm9sbGVyLAotICAgICAgICAgICAgc3Vp
dGVfY29udHJvbGxlcj1jb250cm9sbGVyLnN1aXRlX2NvbnRyb2xsZXIsCi0gICAgICAgICAgICBz
aXRlX21lbnU9c2VsZi5zaXRlX21lbnUsCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5jaSA9IENJ
VmlldygKLSAgICAgICAgICAgIGVudmlyb25tZW50PXNlbGYuZW52aXJvbm1lbnQsCi0gICAgICAg
ICAgICBjaV9jb250cm9sbGVyPWNvbnRyb2xsZXIuY2lfY29udHJvbGxlciwKLSAgICAgICAgICAg
IHNpdGVfbWVudT1zZWxmLnNpdGVfbWVudSwKLSAgICAgICAgKQotICAgICAgICBzZWxmLmFyY2hp
dmUgPSBBcmNoaXZlVmlldygKLSAgICAgICAgICAgIGVudmlyb25tZW50PXNlbGYuZW52aXJvbm1l
bnQsCi0gICAgICAgICAgICBhcmNoaXZlX2NvbnRyb2xsZXI9Y29udHJvbGxlci5hcmNoaXZlX2Nv
bnRyb2xsZXIsCi0gICAgICAgICAgICBzaXRlX21lbnU9c2VsZi5zaXRlX21lbnUsCi0gICAgICAg
ICkKLQotICAgICAgICBzZWxmLmFkZF91cmxfcnVsZSgnLycsICdtYWluJywgc2VsZi5zdWl0ZXMu
c2VhcmNoLCBtZXRob2RzPSgnR0VUJywpKQotICAgICAgICBzZWxmLmFkZF91cmxfcnVsZSgnL3Nl
YXJjaCcsICdzZWFyY2gnLCBzZWxmLnN1aXRlcy5zZWFyY2gsIG1ldGhvZHM9KCdHRVQnLCkpCi0K
LSAgICAgICAgc2VsZi5hZGRfdXJsX3J1bGUoJy9kb2N1bWVudGF0aW9uJywgJ2RvY3VtZW50YXRp
b24nLCBzZWxmLmRvY3VtZW50YXRpb24sIG1ldGhvZHM9KCdHRVQnLCkpCi0KLSAgICAgICAgc2Vs
Zi5hZGRfdXJsX3J1bGUoJy9jb21taXQnLCAnY29tbWl0Jywgc2VsZi5jb21taXRzLmNvbW1pdCwg
bWV0aG9kcz0oJ0dFVCcsKSkKLSAgICAgICAgc2VsZi5hZGRfdXJsX3J1bGUoJy9jb21taXQvaW5m
bycsICdjb21taXRfaW5mbycsIHNlbGYuY29tbWl0cy5pbmZvLCBtZXRob2RzPSgnR0VUJywpKQot
ICAgICAgICBzZWxmLmFkZF91cmxfcnVsZSgnL2NvbW1pdC9wcmV2aW91cycsICdjb21taXRfcHJl
dmlvdXMnLCBzZWxmLmNvbW1pdHMucHJldmlvdXMsIG1ldGhvZHM9KCdHRVQnLCkpCi0gICAgICAg
IHNlbGYuYWRkX3VybF9ydWxlKCcvY29tbWl0L25leHQnLCAnY29tbWl0X25leHQnLCBzZWxmLmNv
bW1pdHMubmV4dCwgbWV0aG9kcz0oJ0dFVCcsKSkKLSAgICAgICAgc2VsZi5hZGRfdXJsX3J1bGUo
Jy9jb21taXRzJywgJ2NvbW1pdHMnLCBzZWxmLmNvbW1pdHMuY29tbWl0cywgbWV0aG9kcz0oJ0dF
VCcsKSkKLQotICAgICAgICBzZWxmLmFkZF91cmxfcnVsZSgnL3N1aXRlcycsICdzdWl0ZXMnLCBz
ZWxmLnN1aXRlcy5yZXN1bHRzLCBtZXRob2RzPSgnR0VUJywpKQotICAgICAgICBzZWxmLmFkZF91
cmxfcnVsZSgnL2ludmVzdGlnYXRlJywgJ2ludmVzdGlnYXRlJywgc2VsZi5zdWl0ZXMuaW52ZXN0
aWdhdGUsIG1ldGhvZHM9KCdHRVQnLCkpCi0KLSAgICAgICAgc2VsZi5hZGRfdXJsX3J1bGUoJy91
cmxzL3F1ZXVlJywgJ3VybHMtcXVldWUnLCBzZWxmLmNpLnF1ZXVlLCBtZXRob2RzPSgnR0VUJywp
KQotICAgICAgICBzZWxmLmFkZF91cmxfcnVsZSgnL3VybHMvd29ya2VyJywgJ3VybHMtd29ya2Vy
Jywgc2VsZi5jaS53b3JrZXIsIG1ldGhvZHM9KCdHRVQnLCkpCi0gICAgICAgIHNlbGYuYWRkX3Vy
bF9ydWxlKCcvdXJscy9idWlsZCcsICd1cmxzLWJ1aWxkJywgc2VsZi5jaS5idWlsZCwgbWV0aG9k
cz0oJ0dFVCcsKSkKLQotICAgICAgICBzZWxmLmFkZF91cmxfcnVsZSgnL2FyY2hpdmUnLCAnYXJj
aGl2ZS1saXN0Jywgc2VsZi5hcmNoaXZlLmV4dHJhY3QsIG1ldGhvZHM9KCdHRVQnLCkpCi0gICAg
ICAgIHNlbGYuYWRkX3VybF9ydWxlKCcvYXJjaGl2ZS88cGF0aDpwYXRoPicsICdhcmNoaXZlJywg
c2VsZi5hcmNoaXZlLmV4dHJhY3QsIG1ldGhvZHM9KCdHRVQnLCkpCi0gICAgICAgICMgQXJjaGl2
ZSByb3V0ZXMgY29udHJvbCB3aGljaCBzdWl0ZXMgZ2V0IGxpbmtlZCB0byByZXN1bHQgYXJjaGl2
ZXMgYW5kIGhvdyB0aG9zZSBsaW5rcyBhcHBlYXIgaW4gdGhlIFVJLgotICAgICAgICAjIFRoaXMg
ZGljdGlvbmFyeSB3aWxsIGJlIHByb2Nlc3NlZCBieSBhcmNoaXZlUm91dGVyLmpzLCB0aGVyZSBh
cmUgMyBhY3RpdmUgcGFyYW1ldGVycyByZXNwZWN0ZWQ6Ci0gICAgICAgICMgICAgIGVuYWJsZWQ6
IElmIGZhbHNlLCBubyBhcmNoaXZlIGxpbmsgd2lsbCBiZSBnZW5lcmF0ZWQgZm9yIHRoaXMgc3Vp
dGUKLSAgICAgICAgIyAgICAgcGF0aDogVGhlIGZpbGUgaW4gdGhlIGFyY2hpdmUgdG8gbGluayB0
bwotICAgICAgICAjICAgICBsYWJlbDogRGVmaW5lcyB0aGUgdXNlci12aXNpYmxlIG5hbWUgb2Yg
dGhlIGFyY2hpdmUgbGluawotICAgICAgICAjIERpY3Rpb25hcmllcyBoYXZlIGEgZGVmaW5lZCBh
bmNlc3RyeSwgYW5kIHdpbGwgdXNlIHRoZSBtb3N0IHNwZWNpZmljIHBhcmFtZXRlcnMgcG9zc2li
bGUuIFRoZSBhbmNlc3RyeQotICAgICAgICAjIGFyZ3VtZW50cyBhcmU6Ci0gICAgICAgICMgICAg
IDxzdWl0ZT46IE5hbWUgb2YgYSBzdWl0ZSAobGlrZSBsYXlvdXQtdGVzdHMpCi0gICAgICAgICMg
ICAgIDxyZXN1bHQ+OiBPbmUgb2YgdGhlIGV4cGVjdGVkIHJlc3VsdHMsIGxpa2UgRkFJTCwgVEVY
VCBvciBJTUFHRQotICAgICAgICBzZWxmLmFyY2hpdmVfcm91dGVzID0gYXJjaGl2ZV9yb3V0ZXMg
b3IgZGljdCgpCi0gICAgICAgIHNlbGYuYWRkX3VybF9ydWxlKCcvYXJjaGl2ZS1yb3V0ZXMnLCAn
YXJjaGl2ZS1yb3V0ZXMnLCBjYWNoZV9mb3IoaG91cnM9MjQgKiA3KShsYW1iZGE6IGpzb25pZnko
c2VsZi5hcmNoaXZlX3JvdXRlcykpLCBtZXRob2RzPSgnR0VUJywpKQotCi0gICAgICAgIHNlbGYu
c2l0ZV9tZW51LmFkZF9lbmRwb2ludCgnTWFpbicsIHNlbGYubmFtZSArICcubWFpbicsIHBhcmFt
ZXRlcnM9WydicmFuY2gnXSkKLSAgICAgICAgc2VsZi5zaXRlX21lbnUuYWRkX2VuZHBvaW50KCdT
dWl0ZXMnLCBzZWxmLm5hbWUgKyAnLnN1aXRlcycsIHBhcmFtZXRlcnM9WydicmFuY2gnXSkKLSAg
ICAgICAgc2VsZi5zaXRlX21lbnUuYWRkX2VuZHBvaW50KCdJbnZlc3RpZ2F0ZScsIHNlbGYubmFt
ZSArICcuaW52ZXN0aWdhdGUnLCBwYXJhbWV0ZXJzPVsnYnJhbmNoJ10pCi0gICAgICAgIHNlbGYu
c2l0ZV9tZW51LmFkZF9lbmRwb2ludCgnRG9jdW1lbnRhdGlvbicsIHNlbGYubmFtZSArICcuZG9j
dW1lbnRhdGlvbicpCi0gICAgICAgIHNlbGYuc2l0ZV9tZW51LmFkZF9lbmRwb2ludCgnQ29tbWl0
cycsIHNlbGYubmFtZSArICcuY29tbWl0cycsIHBhcmFtZXRlcnM9WydicmFuY2gnXSkKLQotICAg
ICAgICBzZWxmLnJlZ2lzdGVyX2Vycm9yX2hhbmRsZXIoNTAwLCBzZWxmLnJlc3BvbnNlXzUwMCkK
LQotICAgIGRlZiBhc3NldHMoc2VsZiwgcGF0aCk6Ci0gICAgICAgIEFzc2VydFJlcXVlc3Qubm9f
cXVlcnkoKQotICAgICAgICBBc3NlcnRSZXF1ZXN0LmlzX3R5cGUoKQotICAgICAgICBwYXRoX3Nw
bGl0ID0gb3MucGF0aC5zcGxpdChwYXRoKQotICAgICAgICByZXR1cm4gc2VuZF9mcm9tX2RpcmVj
dG9yeShvcy5wYXRoLmpvaW4ob3MucGF0aC5hYnNwYXRoKG9zLnBhdGguZGlybmFtZShfX2ZpbGVf
XykpLCAnc3RhdGljJywgKnBhdGhfc3BsaXRbOi0xXSksIHBhdGhfc3BsaXRbLTFdKQotCi0gICAg
ZGVmIGNhY2hlX3Jlc291cmNlKHNlbGYsIHVybCk6Ci0gICAgICAgICMgVGhpcyBhdm9pZHMgaGVh
ZGFjaGVzIHdpdGggY3Jvc3Mtb3JpZ2luIHNjcmlwdHMKLSAgICAgICAgY2FjaGVkX3Jlc3VsdCA9
IHNlbGYuX2NhY2hlLmdldCh1cmwsIE5vbmUpCi0gICAgICAgIGlmIGNhY2hlZF9yZXN1bHQgYW5k
IGNhY2hlZF9yZXN1bHRbMF0gKyA2MCAqIDYwICogMjQgPiB0aW1lLnRpbWUoKToKLSAgICAgICAg
ICAgIHJldHVybiBjYWNoZWRfcmVzdWx0WzFdCi0gICAgICAgIHJlc3VsdCA9IHJlcXVlc3RzLmdl
dCh1cmwpCi0gICAgICAgIGlmIHJlc3VsdC5zdGF0dXNfY29kZSAhPSAyMDA6Ci0gICAgICAgICAg
ICBhYm9ydCg0MDQsIGRlc2NyaXB0aW9uPWYnRmFpbGVkIHRvIGNhY2hlIHJlc291cmNlIGF0IHt1
cmx9JykKLSAgICAgICAgc2VsZi5fY2FjaGVbdXJsXSA9ICh0aW1lLnRpbWUoKSwgUmVzcG9uc2Uo
cmVzdWx0LnRleHQsIG1pbWV0eXBlPXJlc3VsdC5oZWFkZXJzWydjb250ZW50LXR5cGUnXSkpCi0g
ICAgICAgIHJldHVybiBzZWxmLl9jYWNoZVt1cmxdWzFdCi0KLSAgICBkZWYgbGlicmFyeShzZWxm
LCBwYXRoKToKLSAgICAgICAgQXNzZXJ0UmVxdWVzdC5ub19xdWVyeSgpCi0gICAgICAgIEFzc2Vy
dFJlcXVlc3QuaXNfdHlwZSgpCi0gICAgICAgIHBhdGhfc3BsaXQgPSBvcy5wYXRoLnNwbGl0KHBh
dGgpCi0gICAgICAgIHJldHVybiBzZW5kX2Zyb21fZGlyZWN0b3J5KG9zLnBhdGguam9pbihvcy5w
YXRoLmFic3BhdGgob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSksICdzdGF0aWMvbGlicmFyeScs
ICpwYXRoX3NwbGl0WzotMV0pLCBwYXRoX3NwbGl0Wy0xXSkKLQotICAgIGRlZiByZXNwb25zZV81
MDAoc2VsZiwgZXJyb3I9SW50ZXJuYWxTZXJ2ZXJFcnJvcigpKToKLSAgICAgICAgaWYgaXNpbnN0
YW5jZShlcnJvciwgSFRUUEV4Y2VwdGlvbik6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5lcnJv
cihlcnJvcj1lcnJvcikKLSAgICAgICAgcmV0dXJuIHNlbGYuZXJyb3IoZXJyb3I9SW50ZXJuYWxT
ZXJ2ZXJFcnJvcigpKQotCi0gICAgQFNpdGVNZW51LnJlbmRlcl93aXRoX3NpdGVfbWVudSgpCi0g
ICAgZGVmIGVycm9yKHNlbGYsIGVycm9yPUludGVybmFsU2VydmVyRXJyb3IoKSwgKiprd2FyZ3Mp
OgotICAgICAgICByZXNwb25zZSA9IHNlbGYuZW52aXJvbm1lbnQuZ2V0X3RlbXBsYXRlKCdlcnJv
ci5odG1sJykucmVuZGVyKAotICAgICAgICAgICAgdGl0bGU9Zid7c2VsZi50aXRsZX06IHtlcnJv
ci5jb2RlfScsCi0gICAgICAgICAgICBuYW1lPWVycm9yLm5hbWUsIGRlc2NyaXB0aW9uPWVycm9y
LmRlc2NyaXB0aW9uLAotICAgICAgICAgICAgKiprd2FyZ3MpCi0gICAgICAgIHJldHVybiByZXNw
b25zZSwgZXJyb3IuY29kZQotCi0gICAgQFNpdGVNZW51LnJlbmRlcl93aXRoX3NpdGVfbWVudSgp
Ci0gICAgZGVmIGRvY3VtZW50YXRpb24oc2VsZiwgKiprd2FyZ3MpOgotICAgICAgICByZXR1cm4g
c2VsZi5lbnZpcm9ubWVudC5nZXRfdGVtcGxhdGUoJ2RvY3VtZW50YXRpb24uaHRtbCcpLnJlbmRl
cigKLSAgICAgICAgICAgIHRpdGxlPWYne3NlbGYudGl0bGV9OiBEb2N1bWVudGF0aW9uJywKLSAg
ICAgICAgICAgICoqa3dhcmdzKQpJbmRleDogVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkv
dmlldy92aWV3X3JvdXRlc191bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9yZXN1bHRz
ZGJweS9yZXN1bHRzZGJweS92aWV3L3ZpZXdfcm91dGVzX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAy
NjU1MzEpCisrKyBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS92aWV3L3ZpZXdfcm91dGVz
X3VuaXR0ZXN0LnB5CShub25leGlzdGVudCkKQEAgLTEsMTMxICswLDAgQEAKLSMgQ29weXJpZ2h0
IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
IkFTIElTIiBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUgotIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0j
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSCi0jIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0jIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLWltcG9ydCBtb2NrCi1pbXBvcnQgb3MKLWltcG9y
dCByZXF1ZXN0cwotaW1wb3J0IHRpbWUKLQotZnJvbSBjb250cm9sbGVyLmFwaV9yb3V0ZXMgaW1w
b3J0IEFQSVJvdXRlcwotZnJvbSBmYWtlcmVkaXMgaW1wb3J0IEZha2VTdHJpY3RSZWRpcwotZnJv
bSByZWRpcyBpbXBvcnQgU3RyaWN0UmVkaXMKLWZyb20gcmVzdWx0c2RicHkuZmxhc2tfc3VwcG9y
dC5mbGFza190ZXN0Y2FzZSBpbXBvcnQgRmxhc2tUZXN0Q2FzZQotZnJvbSByZXN1bHRzZGJweS5t
b2RlbC5jYXNzYW5kcmFfY29udGV4dCBpbXBvcnQgQ2Fzc2FuZHJhQ29udGV4dAotZnJvbSByZXN1
bHRzZGJweS5tb2RlbC5tb2NrX2Nhc3NhbmRyYV9jb250ZXh0IGltcG9ydCBNb2NrQ2Fzc2FuZHJh
Q29udGV4dAotZnJvbSByZXN1bHRzZGJweS5tb2RlbC5tb2RlbCBpbXBvcnQgTW9kZWwKLWZyb20g
cmVzdWx0c2RicHkubW9kZWwubW9ja19yZXBvc2l0b3J5IGltcG9ydCBNb2NrU3Rhc2hSZXBvc2l0
b3J5LCBNb2NrU1ZOUmVwb3NpdG9yeQotZnJvbSByZXN1bHRzZGJweS5tb2RlbC53YWl0X2Zvcl9k
b2NrZXJfdGVzdF9jYXNlIGltcG9ydCBXYWl0Rm9yRG9ja2VyVGVzdENhc2UKLWZyb20gcmVzdWx0
c2RicHkudmlldy52aWV3X3JvdXRlcyBpbXBvcnQgVmlld1JvdXRlcwotCi0KLWNsYXNzIFdlYlNp
dGVUZXN0Q2FzZShGbGFza1Rlc3RDYXNlLCBXYWl0Rm9yRG9ja2VyVGVzdENhc2UpOgotICAgIEtF
WVNQQUNFID0gJ3dlYl9zaXRlX3Rlc3RjYXNlX2tleXNwYWNlJwotCi0gICAgZGVmIHRvZ2dsZV9k
cmF3ZXIoc2VsZiwgZHJpdmVyLCBhc3NlcnRfZGlzcGxheWVkPU5vbmUpOgotICAgICAgICBzaWRl
YmFyID0gZHJpdmVyLmZpbmRfZWxlbWVudF9ieV9jbGFzc19uYW1lKCdzaWRlYmFyJykKLSAgICAg
ICAgc2lkZWJhci5maW5kX2VsZW1lbnRzX2J5X3RhZ19uYW1lKCdidXR0b24nKVswXS5jbGljaygp
Ci0gICAgICAgIHRpbWUuc2xlZXAoLjUpCi0gICAgICAgIGlmIGFzc2VydF9kaXNwbGF5ZWQ6Ci0g
ICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdoaWRkZW4nLCBzaWRlYmFyLmdldF9hdHRyaWJ1
dGUoJ2NsYXNzJykpCi0gICAgICAgIGVsaWYgYXNzZXJ0X2Rpc3BsYXllZCBpcyBGYWxzZToKLSAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2hpZGRlbicsIHNpZGViYXIuZ2V0X2F0dHJpYnV0ZSgn
Y2xhc3MnKSkKLQotICAgIGRlZiBmaW5kX2lucHV0X3dpdGhfbmFtZShzZWxmLCBkcml2ZXIsIG5h
bWUpOgotICAgICAgICBjb250cm9sID0gW2xhYmVsLnBhcmVudCBmb3IgbGFiZWwgaW4gZHJpdmVy
LmZpbmRfZWxlbWVudF9ieV9jbGFzc19uYW1lKCdzaWRlYmFyJykuZmluZF9lbGVtZW50c19ieV90
YWdfbmFtZSgnZGl2JykgaWYgbGFiZWwuZmluZF9lbGVtZW50X2J5X3RhZ19uYW1lKCdsYWJlbCcp
LnRleHQgPT0gbmFtZV1bMF0KLSAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUoY29udHJvbCkK
LSAgICAgICAgcmV0dXJuIGNvbnRyb2wKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBzZXR1
cF93ZWJzZXJ2ZXIoY2xzLCBhcHAsIHJlZGlzPVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fzc2Fu
ZHJhQ29udGV4dCk6Ci0gICAgICAgIGNhc3NhbmRyYS5kcm9wX2tleXNwYWNlKGtleXNwYWNlPWNs
cy5LRVlTUEFDRSkKLSAgICAgICAgcmVkaXNfaW5zdGFuY2UgPSByZWRpcygpCi0KLSAgICAgICAg
bW9kZWwgPSBNb2RlbCgKLSAgICAgICAgICAgIHJlZGlzPXJlZGlzX2luc3RhbmNlLCBjYXNzYW5k
cmE9Y2Fzc2FuZHJhKGtleXNwYWNlPWNscy5LRVlTUEFDRSwgY3JlYXRlX2tleXNwYWNlPVRydWUp
LAotICAgICAgICAgICAgcmVwb3NpdG9yaWVzPVtNb2NrU1ZOUmVwb3NpdG9yeS53ZWJraXQocmVk
aXM9cmVkaXNfaW5zdGFuY2UpLCBNb2NrU3Rhc2hSZXBvc2l0b3J5LnNhZmFyaShyZWRpcz1yZWRp
c19pbnN0YW5jZSldLAotICAgICAgICApCi0gICAgICAgIGFwaV9yb3V0ZXMgPSBBUElSb3V0ZXMo
bW9kZWw9bW9kZWwsIGltcG9ydF9uYW1lPV9fbmFtZV9fKQotICAgICAgICB2aWV3X3JvdXRlcyA9
IFZpZXdSb3V0ZXMobW9kZWw9bW9kZWwsIGNvbnRyb2xsZXI9YXBpX3JvdXRlcywgaW1wb3J0X25h
bWU9X19uYW1lX18pCi0KLSAgICAgICAgYXBwLnJlZ2lzdGVyX2JsdWVwcmludChhcGlfcm91dGVz
KQotICAgICAgICBhcHAucmVnaXN0ZXJfYmx1ZXByaW50KHZpZXdfcm91dGVzKQotCi0gICAgQGNs
YXNzbWV0aG9kCi0gICAgZGVmIGRlY29yYXRvcihjbHMpOgotICAgICAgICBjbGFzcyBNb2NrUmVx
dWVzdChvYmplY3QpOgotICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRleHQ9JycsIHN0
YXR1c19jb2RlPTIwMCwgaGVhZGVycz17J2NvbnRlbnQtdHlwZSc6ICd0ZXh0L2h0bWwnfSk6Ci0g
ICAgICAgICAgICAgICAgc2VsZi50ZXh0ID0gdGV4dAotICAgICAgICAgICAgICAgIHNlbGYuc3Rh
dHVzX2NvZGUgPSBzdGF0dXNfY29kZQotICAgICAgICAgICAgICAgIHNlbGYuaGVhZGVycyA9IGhl
YWRlcnMKLQotICAgICAgICBvcmlnaW5hbF9nZXQgPSByZXF1ZXN0cy5nZXQKLQotICAgICAgICBk
ZWYgbW9ja19nZXQodXJsLCBvcmlnaW5hbF9nZXQ9b3JpZ2luYWxfZ2V0LCAqKmt3YXJncyk6Ci0g
ICAgICAgICAgICAjIEZJWE1FOiBMb25nIHRlcm0sIHRoZSByZXN1bHRzIGRhdGFiYXNlIG1pZ2h0
IGFjdHVhbGx5IGJlIHRoZSBiZXR0ZXIgcGxhY2UgZm9yIFJlZi5qcyBhbmQgd2Via2l0LmNzcyB0
byBsaXZlCi0gICAgICAgICAgICBiYXNlX3BhdGggPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5hYnNw
YXRoKG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5kaXJuYW1lKG9zLnBh
dGguZGlybmFtZShvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSkpKSkp
KSwgJ0ludGVybmFsJywgJ1Rvb2xzJywgJ0J1aWxkQXV0b21hdGlvbicsICdidWlsZC1zYWZhcmkn
LCAncHVibGljX2h0bWwnLCAnZGFzaGJvYXJkJykKLSAgICAgICAgICAgIGlmIHVybCA9PSAnaHR0
cHM6Ly9idWlsZC53ZWJraXQub3JnL2Rhc2hib2FyZC9kZXZpY2VzL1NjcmlwdHMvUmVmLmpzJzoK
LSAgICAgICAgICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKGJhc2VfcGF0aCwgJ2Rldmlj
ZXMnLCAnU2NyaXB0cycsICdSZWYuanMnKSwgJ3InKSBhcyBmOgotICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gTW9ja1JlcXVlc3QoZi5yZWFkKCksIGhlYWRlcnM9eydjb250ZW50LXR5cGUnOiAn
dGV4dC9qYXZhc2NyaXB0J30pCi0gICAgICAgICAgICBlbGlmIHVybCA9PSAnaHR0cHM6Ly9idWls
ZC53ZWJraXQub3JnL2Rhc2hib2FyZC9TdHlsZXMvd2Via2l0LmNzcyc6Ci0gICAgICAgICAgICAg
ICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihiYXNlX3BhdGgsICdTdHlsZXMnLCAnd2Via2l0LmNz
cycpLCAncicpIGFzIGY6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBNb2NrUmVxdWVzdChm
LnJlYWQoKSwgaGVhZGVycz17J2NvbnRlbnQtdHlwZSc6ICd0ZXh0L2Nzcyd9KQotICAgICAgICAg
ICAgcmV0dXJuIG9yaWdpbmFsX2dldCh1cmwsICoqa3dhcmdzKQotCi0gICAgICAgIHJldHVybiBG
bGFza1Rlc3RDYXNlLmNvbWJpbmUoCi0gICAgICAgICAgICBtb2NrLnBhdGNoKCdyZXF1ZXN0cy5n
ZXQnLCBuZXc9bW9ja19nZXQpLAotICAgICAgICAgICAgRmxhc2tUZXN0Q2FzZS5ydW5fd2l0aF9z
ZWxlbml1bSgpLAotICAgICAgICApCi0KLQotY2xhc3MgV2ViU2l0ZVVuaXR0ZXN0KFdlYlNpdGVU
ZXN0Q2FzZSk6Ci0gICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlciht
b2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNv
bnRleHQpCi0gICAgQFdlYlNpdGVUZXN0Q2FzZS5kZWNvcmF0b3IoKQotICAgIGRlZiB0ZXN0X3Rp
dGxlKHNlbGYsIGRyaXZlciwgKiprd2FyZ3MpOgotICAgICAgICBkcml2ZXIuZ2V0KHNlbGYuVVJM
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRyaXZlci50aXRsZSwgJ1Jlc3VsdHMgRGF0YWJh
c2UnKQotICAgICAgICB0aXRsZSA9IGRyaXZlci5maW5kX2VsZW1lbnRfYnlfY2xhc3NfbmFtZSgn
dGl0bGUnKS5maW5kX2VsZW1lbnRfYnlfdGFnX25hbWUoJ2RpdicpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwodGl0bGUudGV4dC5sc3RyaXAoKS5yc3RyaXAoKSwgJ1Jlc3VsdHMgRGF0YWJhc2Un
KQotCi0gICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3Jl
ZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQp
Ci0gICAgQFdlYlNpdGVUZXN0Q2FzZS5kZWNvcmF0b3IoKQotICAgIGRlZiB0ZXN0X21haW4oc2Vs
ZiwgZHJpdmVyLCAqKmt3YXJncyk6Ci0gICAgICAgIGRyaXZlci5nZXQoc2VsZi5VUkwpCi0gICAg
ICAgIGNvbnRlbnQgPSBkcml2ZXIuZmluZF9lbGVtZW50X2J5X2lkKCdhcHAnKS5maW5kX2VsZW1l
bnRfYnlfY2xhc3NfbmFtZSgnY29udGVudCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25l
KGNvbnRlbnQpCi0KLSAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2Vy
KG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJh
Q29udGV4dCkKLSAgICBAV2ViU2l0ZVRlc3RDYXNlLmRlY29yYXRvcigpCi0gICAgZGVmIHRlc3Rf
Y29tbWl0X2xpbmsoc2VsZiwgZHJpdmVyLCAqKmt3YXJncyk6Ci0gICAgICAgIGRyaXZlci5nZXQo
c2VsZi5VUkwpCi0gICAgICAgIGFjdGlvbnMgPSBkcml2ZXIuZmluZF9lbGVtZW50X2J5X2NsYXNz
X25hbWUoJ2FjdGlvbnMnKQotICAgICAgICBsaW5rcyA9IGFjdGlvbnMuZmluZF9lbGVtZW50c19i
eV90YWdfbmFtZSgnYScpCi0KLSAgICAgICAgY29tbWl0X2xpbmsgPSBOb25lCi0gICAgICAgIGZv
ciBsaW5rIGluIGxpbmtzOgotICAgICAgICAgICAgaWYgJ0NvbW1pdHMnIGluIGxpbmsudGV4dDoK
LSAgICAgICAgICAgICAgICBjb21taXRfbGluayA9IGxpbmsKLSAgICAgICAgICAgICAgICBicmVh
awotICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShjb21taXRfbGluaykKLQotICAgICAgICBj
b21taXRfbGluay5jbGljaygpCi0gICAgICAgIHRpbWUuc2xlZXAoLjEpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoZHJpdmVyLnRpdGxlLCAnUmVzdWx0cyBEYXRhYmFzZTogQ29tbWl0cycpCklu
ZGV4OiBUb29scy9yZXN1bHRzZGJweS9zZXR1cC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9yZXN1
bHRzZGJweS9zZXR1cC5weQkocmV2aXNpb24gMjY1NTMxKQorKysgVG9vbHMvcmVzdWx0c2RicHkv
c2V0dXAucHkJKG5vbmV4aXN0ZW50KQpAQCAtMSw2OSArMCwwIEBACi0jIENvcHlyaWdodCAoQykg
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJ
UyIgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotIyBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUgotIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotIyBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotCi1mcm9tIHNldHVwdG9vbHMgaW1wb3J0IHNldHVwCi0KLQot
ZGVmIHJlYWRtZSgpOgotICAgIHdpdGggb3BlbignUkVBRE1FLm1kJykgYXMgZjoKLSAgICAgICAg
cmV0dXJuIGYucmVhZCgpCi0KLQotc2V0dXAoCi0gICAgbmFtZT0ncmVzdWx0c2RicHknLAotICAg
IHZlcnNpb249JzAuOS4wJywKLSAgICBkZXNjcmlwdGlvbj0nTGlicmFyeSBmb3IgdmlzdWFsaXpp
bmcsIHByb2Nlc3NpbmcgYW5kIHN0b3JpbmcgdGVzdCByZXN1bHRzLicsCi0gICAgbG9uZ19kZXNj
cmlwdGlvbj1yZWFkbWUoKSwKLSAgICBjbGFzc2lmaWVycz1bCi0gICAgICAgICdEZXZlbG9wbWVu
dCBTdGF0dXMgOjogNCAtIEJldGEnLAotICAgICAgICAnRnJhbWV3b3JrIDo6IEZsYXNrJywKLSAg
ICAgICAgJ0ludGVuZGVkIEF1ZGllbmNlIDo6IERldmVsb3BlcnMnLAotICAgICAgICAnTGljZW5z
ZSA6OiBPU0kgQXBwcm92ZWQgOjogQlNEIExpY2Vuc2UnLAotICAgICAgICAnT3BlcmF0aW5nIFN5
c3RlbSA6OiBNYWNPUycsCi0gICAgICAgICdOYXR1cmFsIExhbmd1YWdlIDo6IEVuZ2xpc2gnLAot
ICAgICAgICAnUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uIDo6IDMgOjogT25seScsCi0g
ICAgICAgICdUb3BpYyA6OiBTb2Z0d2FyZSBEZXZlbG9wbWVudCA6OiBMaWJyYXJpZXMgOjogUHl0
aG9uIE1vZHVsZXMnLAotICAgICAgICAnVG9waWMgOjogU29mdHdhcmUgRGV2ZWxvcG1lbnQgOjog
VGVzdGluZycsCi0gICAgXSwKLSAgICBrZXl3b3Jkcz0nZGF0YWJhc2UgaGlzdG9yeSByZXN1bHRz
IHRlc3Rpbmcgd2Via2l0JywKLSAgICB1cmw9J2h0dHBzOi8vc3ZuLndlYmtpdC5vcmcvcmVwb3Np
dG9yeS93ZWJraXQvdHJ1bmsvVG9vbHMvcmVzdWx0c2RicHknLAotICAgIGF1dGhvcj0nSm9uYXRo
YW4gQmVkYXJkJywKLSAgICBhdXRob3JfZW1haWw9J2piZWRhcmRAYXBwbGUuY29tJywKLSAgICBs
aWNlbnNlPSdNb2RpZmllZCBCU0QnLAotICAgIHBhY2thZ2VzPVsncmVzdWx0c2RicHknXSwKLSAg
ICBpbnN0YWxsX3JlcXVpcmVzPVsKLSAgICAgICAgJ2Nhc3NhbmRyYS1kcml2ZXInLAotICAgICAg
ICAnZmFrZXJlZGlzJywKLSAgICAgICAgJ0ZsYXNrJywKLSAgICAgICAgJ0ZsYXNrLUNvcnMnLAot
ICAgICAgICAnZ3VuaWNvcm4nLAotICAgICAgICAnbHVwYScsCi0gICAgICAgICdtb2NrJywKLSAg
ICAgICAgJ3JlZGlzJywKLSAgICAgICAgJ3htbHRvZGljdCcsCi0gICAgICAgICdyZXF1ZXN0cycs
Ci0gICAgICAgICdzZWxlbml1bScsCi0gICAgICAgICdzaXgnLAotICAgIF0sCi0gICAgaW5jbHVk
ZV9wYWNrYWdlX2RhdGE9VHJ1ZSwKLSAgICB6aXBfc2FmZT1GYWxzZSwKLSkKSW5kZXg6IFRvb2xz
L0J1aWxkU2xhdmVTdXBwb3J0L2V3cy1idWlsZC9zdGVwcy5weQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9CdWlsZFNsYXZlU3VwcG9ydC9ld3MtYnVpbGQvc3RlcHMucHkJKHJldmlzaW9uIDI2NTUzMSkK
KysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2V3cy1idWlsZC9zdGVwcy5weQkod29ya2luZyBj
b3B5KQpAQCAtMjU5LDcgKzI1OSw3IEBAIGNsYXNzIENoZWNrUGF0Y2hSZWxldmFuY2UoYnVpbGRz
dGVwLkJ1aWwKICAgICAgICAgJ1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5v
cmctY29uZmlnJywKICAgICAgICAgJ1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2V3cy1idWlsZCcs
CiAgICAgICAgICdUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9TaGFyZWQnLAotICAgICAgICAnVG9v
bHMvcmVzdWx0c2RicHknLAorICAgICAgICAnVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0
c2RicHknLAogICAgIF0KIAogICAgIGpzY19wYXRocyA9IFsKQEAgLTExMjUsNyArMTEyNSw3IEBA
IGNsYXNzIFJ1blJlc3VsdHNkYnB5VGVzdHMoc2hlbGwuU2hlbGxDb20KICAgICBkZXNjcmlwdGlv
biA9IFsncmVzdWx0c2RicHktdW5pdC10ZXN0cyBydW5uaW5nJ10KICAgICBjb21tYW5kID0gWwog
ICAgICAgICAncHl0aG9uMycsCi0gICAgICAgICdUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJw
eS9ydW4tdGVzdHMnLAorICAgICAgICAnVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2Ri
cHkvcmVzdWx0c2RicHkvcnVuLXRlc3RzJywKICAgICAgICAgJy0tdmVyYm9zZScsCiAgICAgICAg
ICctLW5vLXNlbGVuaXVtJywKICAgICAgICAgJy0tZmFzdC10ZXN0cycsCkluZGV4OiBUb29scy9C
dWlsZFNsYXZlU3VwcG9ydC9ld3MtYnVpbGQvc3RlcHNfdW5pdHRlc3QucHkKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWJ1aWxkL3N0ZXBzX3VuaXR0ZXN0LnB5CShy
ZXZpc2lvbiAyNjU1MzEpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9ld3MtYnVpbGQvc3Rl
cHNfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTY2OSw3ICs2NjksNyBAQCBjbGFzcyBU
ZXN0UnVuUmVzdWx0c2RicHlUZXN0cyhCdWlsZFN0ZXBNCiAgICAgICAgICAgICBFeHBlY3RTaGVs
bCh3b3JrZGlyPSd3a2RpcicsCiAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PTEyMCwK
ICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ0Vudmlyb249RmFsc2UsCi0gICAgICAgICAgICAg
ICAgICAgICAgICBjb21tYW5kPVsncHl0aG9uMycsICdUb29scy9yZXN1bHRzZGJweS9yZXN1bHRz
ZGJweS9ydW4tdGVzdHMnLCAnLS12ZXJib3NlJywgJy0tbm8tc2VsZW5pdW0nLCAnLS1mYXN0LXRl
c3RzJ10sCisgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kPVsncHl0aG9uMycsICdUb29s
cy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9ydW4tdGVzdHMnLCAn
LS12ZXJib3NlJywgJy0tbm8tc2VsZW5pdW0nLCAnLS1mYXN0LXRlc3RzJ10sCiAgICAgICAgICAg
ICAgICAgICAgICAgICApCiAgICAgICAgICAgICArIDAsCiAgICAgICAgICkKQEAgLTY4Miw3ICs2
ODIsNyBAQCBjbGFzcyBUZXN0UnVuUmVzdWx0c2RicHlUZXN0cyhCdWlsZFN0ZXBNCiAgICAgICAg
ICAgICBFeHBlY3RTaGVsbCh3b3JrZGlyPSd3a2RpcicsCiAgICAgICAgICAgICAgICAgICAgICAg
ICB0aW1lb3V0PTEyMCwKICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ0Vudmlyb249RmFsc2Us
Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kPVsncHl0aG9uMycsICdUb29scy9yZXN1
bHRzZGJweS9yZXN1bHRzZGJweS9ydW4tdGVzdHMnLCAnLS12ZXJib3NlJywgJy0tbm8tc2VsZW5p
dW0nLCAnLS1mYXN0LXRlc3RzJ10sCisgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kPVsn
cHl0aG9uMycsICdUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJw
eS9ydW4tdGVzdHMnLCAnLS12ZXJib3NlJywgJy0tbm8tc2VsZW5pdW0nLCAnLS1mYXN0LXRlc3Rz
J10sCiAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICArIEV4cGVjdFNoZWxs
LmxvZygnc3RkaW8nLCBzdGRvdXQ9J0ZBSUxFRCAoZXJyb3JzPTUsIHNraXBwZWQ9MjI0KScpCiAg
ICAgICAgICAgICArIDIsCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>