<?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>122137</bug_id>
          
          <creation_ts>2013-09-30 21:08:05 -0700</creation_ts>
          <short_desc>Remove support for DOMFileSystem</short_desc>
          <delta_ts>2013-09-30 21:32:17 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>934880</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-09-30 21:08:05 -0700</bug_when>
    <thetext>Remove support for DOMFileSystem</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934882</commentid>
    <comment_count>1</comment_count>
      <attachid>213053</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-09-30 21:20:09 -0700</bug_when>
    <thetext>Created attachment 213053
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934887</commentid>
    <comment_count>2</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-09-30 21:32:17 -0700</bug_when>
    <thetext>Committed r156692: &lt;http://trac.webkit.org/changeset/156692&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213053</attachid>
            <date>2013-09-30 21:20:09 -0700</date>
            <delta_ts>2013-09-30 21:21:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-122137-20130930212006.patch</filename>
            <type>text/plain</type>
            <size>1850834</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDE1NjY5
MSkKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDEzLTA5
LTMwICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIHN1cHBv
cnQgZm9yIERPTUZpbGVTeXN0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEyMjEzNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogU291cmNlL2F1dG90b29scy9TZXR1cFdlYktpdEZlYXR1cmVzLm00Ogor
ICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zQmxhY2tCZXJyeS5jbWFrZToKKyAgICAgICAg
KiBTb3VyY2UvY21ha2UvV2ViS2l0RmVhdHVyZXMuY21ha2U6CisgICAgICAgICogU291cmNlL2Nt
YWtlY29uZmlnLmguY21ha2U6CisKIDIwMTMtMDktMzAgIEJlbmphbWluIFBvdWxhaW4gIDxiZW5q
YW1pbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlbW92ZSB0aGUgY29kZSBndWFyZGVkIGJ5IFNU
WUxFX1NDT1BFRApJbmRleDogU291cmNlL2NtYWtlY29uZmlnLmguY21ha2UKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL2NtYWtlY29uZmlnLmguY21ha2UJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJj
ZS9jbWFrZWNvbmZpZy5oLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw2IEBACiAj
Y21ha2VkZWZpbmUwMSBFTkFCTEVfRFJBR19TVVBQT1JUCiAjY21ha2VkZWZpbmUwMSBFTkFCTEVf
RVZFTlRfTU9ERV9NRVRBVEFHUwogI2NtYWtlZGVmaW5lMDEgRU5BQkxFX0ZBU1RfTU9CSUxFX1ND
Uk9MTElORwotI2NtYWtlZGVmaW5lMDEgRU5BQkxFX0ZJTEVfU1lTVEVNCiAjY21ha2VkZWZpbmUw
MSBFTkFCTEVfRklMVEVSUwogI2NtYWtlZGVmaW5lMDEgRU5BQkxFX0ZJWEVEX1JFUE9SVEVEX1NJ
WkUKICNjbWFrZWRlZmluZTAxIEVOQUJMRV9GVFBESVIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5n
ZUxvZwkocmV2aXNpb24gMTU2NjkxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDEzLTA5LTMwICBTYW0gV2Vpbmln
ICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIHN1cHBvcnQgZm9yIERPTUZpbGVT
eXN0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEy
MjEzNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
Q29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWc6CisKIDIwMTMtMDktMzAgIERh
biBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICA8cmRhcjovL3Byb2JsZW0v
MTUxMTQ5NzQ+IEFzc2VydGlvbiBmYWlsdXJlIHVuZGVyIC1bSlNPYmpDQ2xhc3NJbmZvIGFsbG9j
YXRlQ29uc3RydWN0b3JBbmRQcm90b3R5cGVXaXRoU3VwZXJDbGFzc0luZm86XSBpZiBubyBjbGFz
c2VzIGNvbmZvcm0gdG8gSlNFeHBvcnQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9Db25m
aWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcJKHJl
dmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9G
ZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwkod29ya2luZyBjb3B5KQpAQCAtODIsNyArODIsNiBAQCBF
TkFCTEVfRU5DUllQVEVEX01FRElBX1YyX21hY29zeCA9ICQoRU5BCiBFTkFCTEVfRU5DUllQVEVE
X01FRElBX1YyX21hY29zeF8xMDcwID0gOwogRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMl9tYWNv
c3hfMTA4MCA9IDsKIEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjJfbWFjb3N4XzEwOTAgPSBFTkFC
TEVfRU5DUllQVEVEX01FRElBX1YyOwotRU5BQkxFX0ZJTEVfU1lTVEVNID0gOwogRU5BQkxFX0ZJ
TFRFUlMgPSBFTkFCTEVfRklMVEVSUzsKIEVOQUJMRV9GT05UX0xPQURfRVZFTlRTID0gOwogRU5B
QkxFX0ZVTExTQ1JFRU5fQVBJID0gJChFTkFCTEVfRlVMTFNDUkVFTl9BUElfJChQTEFURk9STV9O
QU1FKSk7CkBAIC0xODcsNCArMTg2LDQgQEAgRU5BQkxFX1hTTFQgPSBFTkFCTEVfWFNMVDsKIAog
RU5BQkxFX0ZUTF9KSVQgPSA7CiAKLUZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFXzNEX1JFTkRF
UklORykgJChFTkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTKSAkKEVOQUJMRV9CTE9CKSAkKEVO
QUJMRV9DQUNIRV9QQVJUSVRJT05JTkcpICQoRU5BQkxFX0NBTlZBU19QQVRIKSAkKEVOQUJMRV9D
QU5WQVNfUFJPWFkpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9DU1BfTkVY
VCkgJChFTkFCTEVfQ1NTX0JPWF9ERUNPUkFUSU9OX0JSRUFLKSAkKEVOQUJMRV9DU1NfQ09NUE9T
SVRJTkcpICQoRU5BQkxFX0NTU19ERVZJQ0VfQURBUFRBVElPTikgJChFTkFCTEVfQ1NTX0VYQ0xV
U0lPTlMpICQoRU5BQkxFX0NTU19GSUxURVJTKSAkKEVOQUJMRV9DU1NfSU1BR0VfT1JJRU5UQVRJ
T04pICQoRU5BQkxFX0NTU19JTUFHRV9SRVNPTFVUSU9OKSAkKEVOQUJMRV9DU1NfUkVHSU9OUykg
JChFTkFCTEVfQ1NTX1NIQURFUlMpICQoRU5BQkxFX0NTU19TSEFQRVMpICQoRU5BQkxFX0NTU19T
VElDS1lfUE9TSVRJT04pICQoRU5BQkxFX0NTU19UUkFOU0ZPUk1TX0FOSU1BVElPTlNfVU5QUkVG
SVhFRCkgJChFTkFCTEVfQ1NTX1ZBUklBQkxFUykgJChFTkFCTEVfQ1NTM19DT05ESVRJT05BTF9S
VUxFUykgJChFTkFCTEVfQ1NTM19URVhUKSAkKEVOQUJMRV9DU1MzX1RFWFRfTElORV9CUkVBSykg
JChFTkFCTEVfQ1VSU09SX1ZJU0lCSUxJVFkpICQoRU5BQkxFX0NVU1RPTV9TQ0hFTUVfSEFORExF
UikgJChFTkFCTEVfREFTSEJPQVJEX1NVUFBPUlQpICQoRU5BQkxFX0RBVEFMSVNUX0VMRU1FTlQp
ICQoRU5BQkxFX0RBVEFfVFJBTlNGRVJfSVRFTVMpICQoRU5BQkxFX0RFVEFJTFNfRUxFTUVOVCkg
JChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9ESVJFQ1RPUllfVVBMT0FEKSAk
KEVOQUJMRV9ET000X0VWRU5UU19DT05TVFJVQ1RPUikgJChFTkFCTEVfRFJBR0dBQkxFX1JFR0lP
TikgJChFTkFCTEVfRU5DUllQVEVEX01FRElBKSAkKEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjIp
ICQoRU5BQkxFX0ZJTEVfU1lTVEVNKSAkKEVOQUJMRV9GSUxURVJTKSAkKEVOQUJMRV9GT05UX0xP
QURfRVZFTlRTKSAkKEVOQUJMRV9GVUxMU0NSRUVOX0FQSSkgJChFTkFCTEVfR0FNRVBBRCkgJChF
TkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0hJRERFTl9QQUdFX0RPTV9USU1FUl9USFJPVFRM
SU5HKSAkKEVOQUJMRV9ISUdIX0RQSV9DQU5WQVMpICQoRU5BQkxFX0lDT05EQVRBQkFTRSkgJChF
TkFCTEVfSUZSQU1FX1NFQU1MRVNTKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFKSAkKEVOQUJM
RV9JTkRJRV9VSSkgJChFTkFCTEVfSU5QVVRfU1BFRUNIKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0NP
TE9SKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SX1BPUE9WRVIpICQoRU5BQkxFX0lOUFVUX1RZ
UEVfREFURSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRV9JTkNPTVBMRVRFKSAkKEVOQUJM
RV9JTlBVVF9UWVBFX0RBVEVUSU1FTE9DQUwpICQoRU5BQkxFX0lOUFVUX1RZUEVfTU9OVEgpICQo
RU5BQkxFX0lOUFVUX1RZUEVfVElNRSkgJChFTkFCTEVfSU5QVVRfVFlQRV9XRUVLKSAkKEVOQUJM
RV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAkKEVOQUJMRV9MRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhF
UykgJChFTkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlMpICQoRU5BQkxFX0xFR0FDWV9WRU5ET1Jf
UFJFRklYRVMpICQoRU5BQkxFX0xFR0FDWV9XRUJfQVVESU8pICQoRU5BQkxFX0xJTktfUFJFRkVU
Q0gpICQoRU5BQkxFX01BVEhNTCkgJChFTkFCTEVfTUVESUFfQ09OVFJPTFNfU0NSSVBUKSAkKEVO
QUJMRV9NRURJQV9TT1VSQ0UpICQoRU5BQkxFX01FRElBX1NUQVRJU1RJQ1MpICQoRU5BQkxFX01F
VEVSX0VMRU1FTlQpICQoRU5BQkxFX01IVE1MKSAkKEVOQUJMRV9NT1VTRV9DVVJTT1JfU0NBTEUp
ICQoRU5BQkxFX05BVklHQVRPUl9DT05URU5UX1VUSUxTKSAkKEVOQUJMRV9OT1RJRklDQVRJT05T
KSAkKEVOQUJMRV9QQUdFX1ZJU0lCSUxJVFlfQVBJKSAkKEVOQUJMRV9QREZLSVRfUExVR0lOKSAk
KEVOQUJMRV9QTFVHSU5fUFJPWFlfRk9SX1ZJREVPKSAkKEVOQUJMRV9QUk9HUkVTU19FTEVNRU5U
KSAkKEVOQUJMRV9QUk9NSVNFUykgJChFTkFCTEVfUFJPWElNSVRZX0VWRU5UUykgJChFTkFCTEVf
UFVCTElDX1NVRkZJWF9MSVNUKSAkKEVOQUJMRV9RVU9UQSkgJChFTkFCTEVfUkVRVUVTVF9BTklN
QVRJT05fRlJBTUUpICQoRU5BQkxFX1JFU09MVVRJT05fTUVESUFfUVVFUlkpICQoRU5BQkxFX1ND
UklQVEVEX1NQRUVDSCkgJChFTkFCTEVfU0hBRE9XX0RPTSkgJChFTkFCTEVfU0hBUkVEX1dPUktF
UlMpICQoRU5BQkxFX1NQRUVDSF9TWU5USEVTSVMpICQoRU5BQkxFX1NRTF9EQVRBQkFTRSkgJChF
TkFCTEVfU1VCUElYRUxfTEFZT1VUKSAkKEVOQUJMRV9TVkcpICQoRU5BQkxFX1NWR19GT05UUykg
JChFTkFCTEVfVEVNUExBVEVfRUxFTUVOVCkgJChFTkFCTEVfVEVYVF9BVVRPU0laSU5HKSAkKEVO
QUJMRV9USFJFQURFRF9IVE1MX1BBUlNFUikgJChFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5HKSAk
KEVOQUJMRV9VU0VSU0VMRUNUX0FMTCkgJChFTkFCTEVfVklERU8pICQoRU5BQkxFX1ZJREVPX1RS
QUNLKSAkKEVOQUJMRV9WSUVXX01PREVfQ1NTX01FRElBKSAkKEVOQUJMRV9XRUJHTCkgJChFTkFC
TEVfV0VCX0FVRElPKSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVfV0VCX1RJTUlORykg
JChFTkFCTEVfV09SS0VSUykgJChFTkFCTEVfWEhSX1RJTUVPVVQpICQoRU5BQkxFX1hTTFQpICQo
RU5BQkxFX0ZUTF9KSVQpICQoRkVBVFVSRV9ERUZJTkVTXyQoUExBVEZPUk1fTkFNRSkpOworRkVB
VFVSRV9ERUZJTkVTID0gJChFTkFCTEVfM0RfUkVOREVSSU5HKSAkKEVOQUJMRV9BQ0NFTEVSQVRF
RF8yRF9DQU5WQVMpICQoRU5BQkxFX0JMT0IpICQoRU5BQkxFX0NBQ0hFX1BBUlRJVElPTklORykg
JChFTkFCTEVfQ0FOVkFTX1BBVEgpICQoRU5BQkxFX0NBTlZBU19QUk9YWSkgJChFTkFCTEVfQ0hB
Tk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0NTUF9ORVhUKSAkKEVOQUJMRV9DU1NfQk9YX0RFQ09S
QVRJT05fQlJFQUspICQoRU5BQkxFX0NTU19DT01QT1NJVElORykgJChFTkFCTEVfQ1NTX0RFVklD
RV9BREFQVEFUSU9OKSAkKEVOQUJMRV9DU1NfRVhDTFVTSU9OUykgJChFTkFCTEVfQ1NTX0ZJTFRF
UlMpICQoRU5BQkxFX0NTU19JTUFHRV9PUklFTlRBVElPTikgJChFTkFCTEVfQ1NTX0lNQUdFX1JF
U09MVVRJT04pICQoRU5BQkxFX0NTU19SRUdJT05TKSAkKEVOQUJMRV9DU1NfU0hBREVSUykgJChF
TkFCTEVfQ1NTX1NIQVBFUykgJChFTkFCTEVfQ1NTX1NUSUNLWV9QT1NJVElPTikgJChFTkFCTEVf
Q1NTX1RSQU5TRk9STVNfQU5JTUFUSU9OU19VTlBSRUZJWEVEKSAkKEVOQUJMRV9DU1NfVkFSSUFC
TEVTKSAkKEVOQUJMRV9DU1MzX0NPTkRJVElPTkFMX1JVTEVTKSAkKEVOQUJMRV9DU1MzX1RFWFQp
ICQoRU5BQkxFX0NTUzNfVEVYVF9MSU5FX0JSRUFLKSAkKEVOQUJMRV9DVVJTT1JfVklTSUJJTElU
WSkgJChFTkFCTEVfQ1VTVE9NX1NDSEVNRV9IQU5ETEVSKSAkKEVOQUJMRV9EQVNIQk9BUkRfU1VQ
UE9SVCkgJChFTkFCTEVfREFUQUxJU1RfRUxFTUVOVCkgJChFTkFCTEVfREFUQV9UUkFOU0ZFUl9J
VEVNUykgJChFTkFCTEVfREVUQUlMU19FTEVNRU5UKSAkKEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJ
T04pICQoRU5BQkxFX0RJUkVDVE9SWV9VUExPQUQpICQoRU5BQkxFX0RPTTRfRVZFTlRTX0NPTlNU
UlVDVE9SKSAkKEVOQUJMRV9EUkFHR0FCTEVfUkVHSU9OKSAkKEVOQUJMRV9FTkNSWVBURURfTUVE
SUEpICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMikgJChFTkFCTEVfRklMVEVSUykgJChFTkFC
TEVfRk9OVF9MT0FEX0VWRU5UUykgJChFTkFCTEVfRlVMTFNDUkVFTl9BUEkpICQoRU5BQkxFX0dB
TUVQQUQpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9ISURERU5fUEFHRV9ET01fVElN
RVJfVEhST1RUTElORykgJChFTkFCTEVfSElHSF9EUElfQ0FOVkFTKSAkKEVOQUJMRV9JQ09OREFU
QUJBU0UpICQoRU5BQkxFX0lGUkFNRV9TRUFNTEVTUykgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFT
RSkgJChFTkFCTEVfSU5ESUVfVUkpICQoRU5BQkxFX0lOUFVUX1NQRUVDSCkgJChFTkFCTEVfSU5Q
VVRfVFlQRV9DT0xPUikgJChFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUl9QT1BPVkVSKSAkKEVOQUJM
RV9JTlBVVF9UWVBFX0RBVEUpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVfSU5DT01QTEVU
RSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRUxPQ0FMKSAkKEVOQUJMRV9JTlBVVF9UWVBF
X01PTlRIKSAkKEVOQUJMRV9JTlBVVF9UWVBFX1RJTUUpICQoRU5BQkxFX0lOUFVUX1RZUEVfV0VF
SykgJChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUikgJChFTkFCTEVfTEVHQUNZX0NTU19WRU5E
T1JfUFJFRklYRVMpICQoRU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9MRUdB
Q1lfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MRUdBQ1lfV0VCX0FVRElPKSAkKEVOQUJMRV9M
SU5LX1BSRUZFVENIKSAkKEVOQUJMRV9NQVRITUwpICQoRU5BQkxFX01FRElBX0NPTlRST0xTX1ND
UklQVCkgJChFTkFCTEVfTUVESUFfU09VUkNFKSAkKEVOQUJMRV9NRURJQV9TVEFUSVNUSUNTKSAk
KEVOQUJMRV9NRVRFUl9FTEVNRU5UKSAkKEVOQUJMRV9NSFRNTCkgJChFTkFCTEVfTU9VU0VfQ1VS
U09SX1NDQUxFKSAkKEVOQUJMRV9OQVZJR0FUT1JfQ09OVEVOVF9VVElMUykgJChFTkFCTEVfTk9U
SUZJQ0FUSU9OUykgJChFTkFCTEVfUEFHRV9WSVNJQklMSVRZX0FQSSkgJChFTkFCTEVfUERGS0lU
X1BMVUdJTikgJChFTkFCTEVfUExVR0lOX1BST1hZX0ZPUl9WSURFTykgJChFTkFCTEVfUFJPR1JF
U1NfRUxFTUVOVCkgJChFTkFCTEVfUFJPTUlTRVMpICQoRU5BQkxFX1BST1hJTUlUWV9FVkVOVFMp
ICQoRU5BQkxFX1BVQkxJQ19TVUZGSVhfTElTVCkgJChFTkFCTEVfUVVPVEEpICQoRU5BQkxFX1JF
UVVFU1RfQU5JTUFUSU9OX0ZSQU1FKSAkKEVOQUJMRV9SRVNPTFVUSU9OX01FRElBX1FVRVJZKSAk
KEVOQUJMRV9TQ1JJUFRFRF9TUEVFQ0gpICQoRU5BQkxFX1NIQURPV19ET00pICQoRU5BQkxFX1NI
QVJFRF9XT1JLRVJTKSAkKEVOQUJMRV9TUEVFQ0hfU1lOVEhFU0lTKSAkKEVOQUJMRV9TUUxfREFU
QUJBU0UpICQoRU5BQkxFX1NVQlBJWEVMX0xBWU9VVCkgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9T
VkdfRk9OVFMpICQoRU5BQkxFX1RFTVBMQVRFX0VMRU1FTlQpICQoRU5BQkxFX1RFWFRfQVVUT1NJ
WklORykgJChFTkFCTEVfVEhSRUFERURfSFRNTF9QQVJTRVIpICQoRU5BQkxFX1RPVUNIX0lDT05f
TE9BRElORykgJChFTkFCTEVfVVNFUlNFTEVDVF9BTEwpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJM
RV9WSURFT19UUkFDSykgJChFTkFCTEVfVklFV19NT0RFX0NTU19NRURJQSkgJChFTkFCTEVfV0VC
R0wpICQoRU5BQkxFX1dFQl9BVURJTykgJChFTkFCTEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxFX1dF
Ql9USU1JTkcpICQoRU5BQkxFX1dPUktFUlMpICQoRU5BQkxFX1hIUl9USU1FT1VUKSAkKEVOQUJM
RV9YU0xUKSAkKEVOQUJMRV9GVExfSklUKSAkKEZFQVRVUkVfREVGSU5FU18kKFBMQVRGT1JNX05B
TUUpKTsKSW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
VEYvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDEzLTA5LTMwICBTYW0gV2VpbmlnICA8
c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIHN1cHBvcnQgZm9yIERPTUZpbGVTeXN0
ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMjEz
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3Rm
L0ZlYXR1cmVEZWZpbmVzLmg6CisKIDIwMTMtMDktMzAgIEJlbmphbWluIFBvdWxhaW4gIDxiZW5q
YW1pbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlbW92ZSB0aGUgY29kZSBndWFyZGVkIGJ5IFNU
WUxFX1NDT1BFRApJbmRleDogU291cmNlL1dURi93dGYvRmVhdHVyZURlZmluZXMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9GZWF0dXJlRGVmaW5lcy5oCShyZXZpc2lvbiAxNTY2OTEp
CisrKyBTb3VyY2UvV1RGL3d0Zi9GZWF0dXJlRGVmaW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC00
NzQsMTAgKzQ3NCw2IEBACiAjZGVmaW5lIEVOQUJMRV9GQVNUX01PQklMRV9TQ1JPTExJTkcgMAog
I2VuZGlmCiAKLSNpZiAhZGVmaW5lZChFTkFCTEVfRklMRV9TWVNURU0pCi0jZGVmaW5lIEVOQUJM
RV9GSUxFX1NZU1RFTSAwCi0jZW5kaWYKLQogI2lmICFkZWZpbmVkKEVOQUJMRV9GSUxURVJTKQog
I2RlZmluZSBFTkFCTEVfRklMVEVSUyAwCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9u
IDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDE5OCBAQAorMjAxMy0wOS0zMCAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgor
CisgICAgICAgIFJlbW92ZSBzdXBwb3J0IGZvciBET01GaWxlU3lzdGVtCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjIxMzcKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgKE9PUFMhKS4K
KworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0Zl
YXR1cmVEZWZpbmVzLnhjY29uZmlnOgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLmNwcDoKKyAg
ICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLnBy
aToKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIE1vZHVsZXMvZmls
ZXN5c3RlbTogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL2ZpbGVzeXN0ZW0vQXN5bmNGaWxl
V3JpdGVyLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy9maWxlc3lzdGVtL0FzeW5jRmls
ZVdyaXRlckNsaWVudC5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvZmlsZXN5c3RlbS9E
T01GaWxlUGF0aC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy9maWxlc3lzdGVtL0RP
TUZpbGVQYXRoLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZp
bGVTeXN0ZW0uY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvZmlsZXN5c3RlbS9ET01G
aWxlU3lzdGVtLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZp
bGVTeXN0ZW0uaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvZmlsZXN5c3RlbS9ET01G
aWxlU3lzdGVtQmFzZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy9maWxlc3lzdGVt
L0RPTUZpbGVTeXN0ZW1CYXNlLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy9maWxlc3lz
dGVtL0RPTUZpbGVTeXN0ZW1TeW5jLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL2Zp
bGVzeXN0ZW0vRE9NRmlsZVN5c3RlbVN5bmMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVz
L2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3RlbVN5bmMuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1v
ZHVsZXMvZmlsZXN5c3RlbS9ET01XaW5kb3dGaWxlU3lzdGVtLmNwcDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBNb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NV2luZG93RmlsZVN5c3RlbS5oOiBSZW1vdmVkLgor
ICAgICAgICAqIE1vZHVsZXMvZmlsZXN5c3RlbS9ET01XaW5kb3dGaWxlU3lzdGVtLmlkbDogUmVt
b3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL2ZpbGVzeXN0ZW0vRGF0YVRyYW5zZmVySXRlbUZpbGVT
eXN0ZW0uaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL2ZpbGVzeXN0ZW0vRGF0YVRyYW5z
ZmVySXRlbUZpbGVTeXN0ZW0uaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvZmlsZXN5
c3RlbS9EaXJlY3RvcnlFbnRyeS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy9maWxl
c3lzdGVtL0RpcmVjdG9yeUVudHJ5Lmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy9maWxl
c3lzdGVtL0RpcmVjdG9yeUVudHJ5LmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL2Zp
bGVzeXN0ZW0vRGlyZWN0b3J5RW50cnlTeW5jLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1
bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5RW50cnlTeW5jLmg6IFJlbW92ZWQuCisgICAgICAgICog
TW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5U3luYy5pZGw6IFJlbW92ZWQuCisgICAg
ICAgICogTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlci5jcHA6IFJlbW92ZWQuCisg
ICAgICAgICogTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlci5oOiBSZW1vdmVkLgor
ICAgICAgICAqIE1vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFkZXIuaWRsOiBSZW1vdmVk
LgorICAgICAgICAqIE1vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFkZXJCYXNlLmg6IFJl
bW92ZWQuCisgICAgICAgICogTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlclN5bmMu
Y3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFk
ZXJTeW5jLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9y
eVJlYWRlclN5bmMuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvZmlsZXN5c3RlbS9F
bnRyaWVzQ2FsbGJhY2suaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL2ZpbGVzeXN0ZW0v
RW50cmllc0NhbGxiYWNrLmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL2ZpbGVzeXN0
ZW0vRW50cnkuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvZmlsZXN5c3RlbS9FbnRy
eS5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeS5pZGw6IFJl
bW92ZWQuCisgICAgICAgICogTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5QXJyYXkuY3BwOiBSZW1v
dmVkLgorICAgICAgICAqIE1vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeUFycmF5Lmg6IFJlbW92ZWQu
CisgICAgICAgICogTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5QXJyYXkuaWRsOiBSZW1vdmVkLgor
ICAgICAgICAqIE1vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeUFycmF5U3luYy5jcHA6IFJlbW92ZWQu
CisgICAgICAgICogTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5QXJyYXlTeW5jLmg6IFJlbW92ZWQu
CisgICAgICAgICogTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5QXJyYXlTeW5jLmlkbDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBNb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlCYXNlLmNwcDogUmVtb3ZlZC4K
KyAgICAgICAgKiBNb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlCYXNlLmg6IFJlbW92ZWQuCisgICAg
ICAgICogTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5Q2FsbGJhY2suaDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBNb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlDYWxsYmFjay5pZGw6IFJlbW92ZWQuCisgICAg
ICAgICogTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5U3luYy5jcHA6IFJlbW92ZWQuCisgICAgICAg
ICogTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5U3luYy5oOiBSZW1vdmVkLgorICAgICAgICAqIE1v
ZHVsZXMvZmlsZXN5c3RlbS9FbnRyeVN5bmMuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVs
ZXMvZmlsZXN5c3RlbS9FcnJvckNhbGxiYWNrLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxl
cy9maWxlc3lzdGVtL0Vycm9yQ2FsbGJhY2suaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVs
ZXMvZmlsZXN5c3RlbS9GaWxlQ2FsbGJhY2suaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVz
L2ZpbGVzeXN0ZW0vRmlsZUNhbGxiYWNrLmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVz
L2ZpbGVzeXN0ZW0vRmlsZUVudHJ5LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL2Zp
bGVzeXN0ZW0vRmlsZUVudHJ5Lmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy9maWxlc3lz
dGVtL0ZpbGVFbnRyeS5pZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy9maWxlc3lzdGVt
L0ZpbGVFbnRyeVN5bmMuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvZmlsZXN5c3Rl
bS9GaWxlRW50cnlTeW5jLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy9maWxlc3lzdGVt
L0ZpbGVFbnRyeVN5bmMuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvZmlsZXN5c3Rl
bS9GaWxlU3lzdGVtQ2FsbGJhY2suaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL2ZpbGVz
eXN0ZW0vRmlsZVN5c3RlbUNhbGxiYWNrLmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVz
L2ZpbGVzeXN0ZW0vRmlsZVN5c3RlbUNhbGxiYWNrcy5jcHA6IFJlbW92ZWQuCisgICAgICAgICog
TW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVTeXN0ZW1DYWxsYmFja3MuaDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBNb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVN5c3RlbUZsYWdzLmg6IFJlbW92ZWQuCisgICAg
ICAgICogTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVTeXN0ZW1UeXBlLmg6IFJlbW92ZWQuCisgICAg
ICAgICogTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVXcml0ZXIuY3BwOiBSZW1vdmVkLgorICAgICAg
ICAqIE1vZHVsZXMvZmlsZXN5c3RlbS9GaWxlV3JpdGVyLmg6IFJlbW92ZWQuCisgICAgICAgICog
TW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVXcml0ZXIuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1v
ZHVsZXMvZmlsZXN5c3RlbS9GaWxlV3JpdGVyQmFzZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICog
TW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVXcml0ZXJCYXNlLmg6IFJlbW92ZWQuCisgICAgICAgICog
TW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVXcml0ZXJCYXNlQ2FsbGJhY2suaDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBNb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVdyaXRlckNhbGxiYWNrLmg6IFJlbW92ZWQu
CisgICAgICAgICogTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVXcml0ZXJDYWxsYmFjay5pZGw6IFJl
bW92ZWQuCisgICAgICAgICogTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVXcml0ZXJTeW5jLmNwcDog
UmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVdyaXRlclN5bmMuaDog
UmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVdyaXRlclN5bmMuaWRs
OiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvZmlsZXN5c3RlbS9IVE1MSW5wdXRFbGVtZW50
RmlsZVN5c3RlbS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy9maWxlc3lzdGVtL0hU
TUxJbnB1dEVsZW1lbnRGaWxlU3lzdGVtLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy9m
aWxlc3lzdGVtL0hUTUxJbnB1dEVsZW1lbnRGaWxlU3lzdGVtLmlkbDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBNb2R1bGVzL2ZpbGVzeXN0ZW0vTG9jYWxGaWxlU3lzdGVtLmNwcDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBNb2R1bGVzL2ZpbGVzeXN0ZW0vTG9jYWxGaWxlU3lzdGVtLmg6IFJlbW92ZWQuCisg
ICAgICAgICogTW9kdWxlcy9maWxlc3lzdGVtL01ldGFkYXRhLmg6IFJlbW92ZWQuCisgICAgICAg
ICogTW9kdWxlcy9maWxlc3lzdGVtL01ldGFkYXRhLmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBN
b2R1bGVzL2ZpbGVzeXN0ZW0vTWV0YWRhdGFDYWxsYmFjay5oOiBSZW1vdmVkLgorICAgICAgICAq
IE1vZHVsZXMvZmlsZXN5c3RlbS9NZXRhZGF0YUNhbGxiYWNrLmlkbDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBNb2R1bGVzL2ZpbGVzeXN0ZW0vU3luY0NhbGxiYWNrSGVscGVyLmg6IFJlbW92ZWQuCisg
ICAgICAgICogTW9kdWxlcy9maWxlc3lzdGVtL1dvcmtlckdsb2JhbFNjb3BlRmlsZVN5c3RlbS5j
cHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy9maWxlc3lzdGVtL1dvcmtlckdsb2JhbFNj
b3BlRmlsZVN5c3RlbS5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvZmlsZXN5c3RlbS9X
b3JrZXJHbG9iYWxTY29wZUZpbGVTeXN0ZW0uaWRsOiBSZW1vdmVkLgorICAgICAgICAqIFBsYXRm
b3JtQmxhY2tCZXJyeS5jbWFrZToKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFVz
ZUpTQy5jbWFrZToKKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qOgor
ICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVyczoKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGlu
Z3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMpOgorICAgICAg
ICAqIGJpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTRW50cnlDdXN0b20uY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTRW50cnlTeW5jQ3VzdG9tLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBkb20vRXZl
bnRUYXJnZXRGYWN0b3J5LmluOgorICAgICAgICAqIGZpbGVhcGkvQmxvYi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpCbG9iOjpzbGljZSk6CisgICAgICAgICogZmlsZWFwaS9GaWxlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZpbGU6OkZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZTo6bGFz
dE1vZGlmaWVkRGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlOjpzaXplKToKKyAgICAgICAg
KFdlYkNvcmU6OkZpbGU6OmNhcHR1cmVTbmFwc2hvdCk6CisgICAgICAgICogZmlsZWFwaS9GaWxl
Lmg6CisgICAgICAgICogZmlsZWFwaS9GaWxlRXJyb3IuaWRsOgorICAgICAgICAqIGZpbGVhcGkv
RmlsZUV4Y2VwdGlvbi5pZGw6CisgICAgICAgICogZmlsZWFwaS9XZWJLaXRCbG9iQnVpbGRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpCbG9iQnVpbGRlcjo6YXBwZW5kKToKKyAgICAgICAgKiBo
dG1sL0ZpbGVJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUlucHV0VHlwZTo6
cmVjZWl2ZURyb3BwZWRGaWxlcyk6CisgICAgICAgICogaHRtbC9GaWxlSW5wdXRUeXBlLmg6Cisg
ICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKiBodG1sL0hUTUxJ
bnB1dEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0lucHV0VHlwZS5jcHA6CisgICAgICAgICog
aHRtbC9JbnB1dFR5cGUuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3Bl
Y3Rvci5weToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JDb250cm9sbGVy
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmNwcDogUmVt
b3ZlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50Lmg6IFJl
bW92ZWQuCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHA6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5oOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaWRsOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnN0cnVtZW50aW5nQWdlbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3RydW1lbnRpbmdB
Z2VudHM6Okluc3RydW1lbnRpbmdBZ2VudHMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zdHJ1bWVu
dGluZ0FnZW50czo6cmVzZXQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnN0cnVtZW50aW5nQWdl
bnRzLmg6CisgICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdpbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbjo6c2hvdWxkVXNlSW5uZXJVUkwpOgorICAgICAgICAqIHBsYXRm
b3JtL0FzeW5jRmlsZVN5c3RlbS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vQXN5
bmNGaWxlU3lzdGVtLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vQXN5bmNGaWxlU3lz
dGVtQ2FsbGJhY2tzLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vRHJhZ0RhdGEuY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL0RyYWdEYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vRmls
ZU1ldGFkYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vU2NoZW1lUmVnaXN0cnkuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Y2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3RTY2hlbWVzKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ibGFja2JlcnJ5L0FzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnkuY3BwOiBS
ZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2JsYWNrYmVycnkvQXN5bmNGaWxlU3lzdGVtQmxh
Y2tCZXJyeS5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2JsYWNrYmVycnkvQXN5bmNG
aWxlV3JpdGVyQmxhY2tCZXJyeS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vYmxh
Y2tiZXJyeS9Bc3luY0ZpbGVXcml0ZXJCbGFja0JlcnJ5Lmg6IFJlbW92ZWQuCisgICAgICAgICog
cGxhdGZvcm0vYmxhY2tiZXJyeS9ET01GaWxlU3lzdGVtQmxhY2tCZXJyeS5jcHA6IFJlbW92ZWQu
CisgICAgICAgICogcGxhdGZvcm0vYmxhY2tiZXJyeS9EcmFnRGF0YUJsYWNrQmVycnkuY3BwOgor
ICAgICAgICAqIHBsYXRmb3JtL2JsYWNrYmVycnkvTG9jYWxGaWxlU3lzdGVtQmxhY2tCZXJyeS5j
cHA6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vYmxhY2tiZXJyeS9QbGF0Zm9ybUFzeW5j
RmlsZVN5c3RlbUNhbGxiYWNrcy5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vYmxh
Y2tiZXJyeS9QbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcy5oOiBSZW1vdmVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2JsYWNrYmVycnkvUGxhdGZvcm1CbG9iLmNwcDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9ibGFja2JlcnJ5L1BsYXRmb3JtQmxvYi5oOiBSZW1vdmVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2JsYWNrYmVycnkvUGxhdGZvcm1GaWxlV3JpdGVyQ2xpZW50LmNwcDog
UmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ibGFja2JlcnJ5L1BsYXRmb3JtRmlsZVdyaXRl
ckNsaWVudC5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2JsYWNrYmVycnkvV29ya2Vy
QXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZv
cm0vYmxhY2tiZXJyeS9Xb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5Lmg6IFJlbW92ZWQu
CisgICAgICAgICogcGxhdGZvcm0vYmxhY2tiZXJyeS9Xb3JrZXJBc3luY0ZpbGVXcml0ZXJCbGFj
a0JlcnJ5LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ibGFja2JlcnJ5L1dvcmtl
ckFzeW5jRmlsZVdyaXRlckJsYWNrQmVycnkuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ibGFja2JlcnJ5L1dvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzLmNwcDog
UmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ibGFja2JlcnJ5L1dvcmtlclBsYXRmb3JtQXN5
bmNGaWxlU3lzdGVtQ2FsbGJhY2tzLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vYmxh
Y2tiZXJyeS9Xb3JrZXJQbGF0Zm9ybUZpbGVXcml0ZXJDbGllbnQuY3BwOiBSZW1vdmVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2JsYWNrYmVycnkvV29ya2VyUGxhdGZvcm1GaWxlV3JpdGVyQ2xpZW50
Lmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZWZsL0FzeW5jRmlsZVN5c3RlbUVmbC5j
cHA6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZWZsL0FzeW5jRmlsZVN5c3RlbUVmbC5o
OiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9Bc3luY0ZpbGVTeXN0ZW1HdGsuY3Bw
OiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9Bc3luY0ZpbGVTeXN0ZW1HdGsuaDog
UmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JSZWdpc3Ry
eUltcGw6OmFwcGVuZFN0b3JhZ2VJdGVtcyk6CisgICAgICAgIChXZWJDb3JlOjpCbG9iUmVnaXN0
cnlJbXBsOjpyZWdpc3RlckJsb2JVUkwpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRm9y
bURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURhdGE6OmRlZXBDb3B5KToKKyAgICAg
ICAgKFdlYkNvcmU6OkZvcm1EYXRhOjphcHBlbmRLZXlWYWx1ZVBhaXJJdGVtcyk6CisgICAgICAg
IChXZWJDb3JlOjplbmNvZGVFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmRlY29kZUVsZW1l
bnQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaDoKKyAgICAgICAgKFdl
YkNvcmU6Om9wZXJhdG9yPT0pOgorCiAyMDEzLTA5LTMwICBCcmVudCBGdWxnaGFtICA8YmZ1bGdo
YW1AYXBwbGUuY29tPgogCiAgICAgICAgIFtXaW5kb3dzXSBCdWlsZCBmaXggYWZlciByMTU2Njg4
LgpJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNiBAQAogc2V0
KFdlYkNvcmVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQkNPUkVfRElSfSIKICAgICAi
JHtXRUJDT1JFX0RJUn0vTW9kdWxlcy9iYXR0ZXJ5IgotICAgICIke1dFQkNPUkVfRElSfS9Nb2R1
bGVzL2ZpbGVzeXN0ZW0iCiAgICAgIiR7V0VCQ09SRV9ESVJ9L01vZHVsZXMvZ2FtZXBhZCIKICAg
ICAiJHtXRUJDT1JFX0RJUn0vTW9kdWxlcy9nZW9sb2NhdGlvbiIKICAgICAiJHtXRUJDT1JFX0RJ
Un0vTW9kdWxlcy9pbmRleGVkZGIiCkBAIC0xMTYsNyArMTE1LDYgQEAgc2V0KFdlYkNvcmVfSU5D
TFVERV9ESVJFQ1RPUklFUwogCiBzZXQoV2ViQ29yZV9JRExfSU5DTFVERVMKICAgICBNb2R1bGVz
L2JhdHRlcnkKLSAgICBNb2R1bGVzL2ZpbGVzeXN0ZW0KICAgICBNb2R1bGVzL2dhbWVwYWQKICAg
ICBNb2R1bGVzL2dlb2xvY2F0aW9uCiAgICAgTW9kdWxlcy9pbmRleGVkZGIKQEAgLTE1MywzMyAr
MTUxLDYgQEAgc2V0KFdlYkNvcmVfSURMX0ZJTEVTCiAgICAgTW9kdWxlcy9iYXR0ZXJ5L0JhdHRl
cnlNYW5hZ2VyLmlkbAogICAgIE1vZHVsZXMvYmF0dGVyeS9OYXZpZ2F0b3JCYXR0ZXJ5LmlkbAog
Ci0gICAgTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW0uaWRsCi0gICAgTW9kdWxlcy9m
aWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW1TeW5jLmlkbAotICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9E
T01XaW5kb3dGaWxlU3lzdGVtLmlkbAotICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9EYXRhVHJhbnNm
ZXJJdGVtRmlsZVN5c3RlbS5pZGwKLSAgICBNb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5RW50
cnkuaWRsCi0gICAgTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5U3luYy5pZGwKLSAg
ICBNb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyLmlkbAotICAgIE1vZHVsZXMvZmls
ZXN5c3RlbS9EaXJlY3RvcnlSZWFkZXJTeW5jLmlkbAotICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9F
bnRyaWVzQ2FsbGJhY2suaWRsCi0gICAgTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5LmlkbAotICAg
IE1vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeUFycmF5LmlkbAotICAgIE1vZHVsZXMvZmlsZXN5c3Rl
bS9FbnRyeUFycmF5U3luYy5pZGwKLSAgICBNb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlDYWxsYmFj
ay5pZGwKLSAgICBNb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlTeW5jLmlkbAotICAgIE1vZHVsZXMv
ZmlsZXN5c3RlbS9FcnJvckNhbGxiYWNrLmlkbAotICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9GaWxl
Q2FsbGJhY2suaWRsCi0gICAgTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVFbnRyeS5pZGwKLSAgICBN
b2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZUVudHJ5U3luYy5pZGwKLSAgICBNb2R1bGVzL2ZpbGVzeXN0
ZW0vRmlsZVN5c3RlbUNhbGxiYWNrLmlkbAotICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9GaWxlV3Jp
dGVyLmlkbAotICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9GaWxlV3JpdGVyQ2FsbGJhY2suaWRsCi0g
ICAgTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVXcml0ZXJTeW5jLmlkbAotICAgIE1vZHVsZXMvZmls
ZXN5c3RlbS9IVE1MSW5wdXRFbGVtZW50RmlsZVN5c3RlbS5pZGwKLSAgICBNb2R1bGVzL2ZpbGVz
eXN0ZW0vTWV0YWRhdGEuaWRsCi0gICAgTW9kdWxlcy9maWxlc3lzdGVtL01ldGFkYXRhQ2FsbGJh
Y2suaWRsCi0gICAgTW9kdWxlcy9maWxlc3lzdGVtL1dvcmtlckdsb2JhbFNjb3BlRmlsZVN5c3Rl
bS5pZGwKLQogICAgIE1vZHVsZXMvZ2FtZXBhZC9HYW1lcGFkLmlkbAogICAgIE1vZHVsZXMvZ2Ft
ZXBhZC9HYW1lcGFkTGlzdC5pZGwKICAgICBNb2R1bGVzL2dhbWVwYWQvTmF2aWdhdG9yR2FtZXBh
ZC5pZGwKQEAgLTc2OSwzMCArNzQwLDYgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIE1vZHVs
ZXMvYmF0dGVyeS9CYXR0ZXJ5U3RhdHVzLmNwcAogICAgIE1vZHVsZXMvYmF0dGVyeS9OYXZpZ2F0
b3JCYXR0ZXJ5LmNwcAogCi0gICAgTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVQYXRoLmNwcAot
ICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtLmNwcAotICAgIE1vZHVsZXMvZmls
ZXN5c3RlbS9ET01GaWxlU3lzdGVtQmFzZS5jcHAKLSAgICBNb2R1bGVzL2ZpbGVzeXN0ZW0vRE9N
RmlsZVN5c3RlbVN5bmMuY3BwCi0gICAgTW9kdWxlcy9maWxlc3lzdGVtL0RPTVdpbmRvd0ZpbGVT
eXN0ZW0uY3BwCi0gICAgTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5LmNwcAotICAg
IE1vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRyeVN5bmMuY3BwCi0gICAgTW9kdWxlcy9m
aWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlci5jcHAKLSAgICBNb2R1bGVzL2ZpbGVzeXN0ZW0vRGly
ZWN0b3J5UmVhZGVyU3luYy5jcHAKLSAgICBNb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnkuY3BwCi0g
ICAgTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5QXJyYXkuY3BwCi0gICAgTW9kdWxlcy9maWxlc3lz
dGVtL0VudHJ5QXJyYXlTeW5jLmNwcAotICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeUJhc2Uu
Y3BwCi0gICAgTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5U3luYy5jcHAKLSAgICBNb2R1bGVzL2Zp
bGVzeXN0ZW0vRmlsZUVudHJ5LmNwcAotICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9GaWxlRW50cnlT
eW5jLmNwcAotICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9GaWxlU3lzdGVtQ2FsbGJhY2tzLmNwcAot
ICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9GaWxlV3JpdGVyLmNwcAotICAgIE1vZHVsZXMvZmlsZXN5
c3RlbS9GaWxlV3JpdGVyQmFzZS5jcHAKLSAgICBNb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVdyaXRl
clN5bmMuY3BwCi0gICAgTW9kdWxlcy9maWxlc3lzdGVtL0hUTUxJbnB1dEVsZW1lbnRGaWxlU3lz
dGVtLmNwcAotICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9Mb2NhbEZpbGVTeXN0ZW0uY3BwCi0gICAg
TW9kdWxlcy9maWxlc3lzdGVtL1dvcmtlckdsb2JhbFNjb3BlRmlsZVN5c3RlbS5jcHAKLQogICAg
IE1vZHVsZXMvZ2FtZXBhZC9HYW1lcGFkLmNwcAogICAgIE1vZHVsZXMvZ2FtZXBhZC9HYW1lcGFk
TGlzdC5jcHAKICAgICBNb2R1bGVzL2dhbWVwYWQvTmF2aWdhdG9yR2FtZXBhZC5jcHAKQEAgLTE1
OTUsNyArMTU0Miw2IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBpbnNwZWN0b3IvSW5zcGVj
dG9yRGF0YWJhc2VBZ2VudC5jcHAKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VSZXNv
dXJjZS5jcHAKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKLSAgICBp
bnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmNwcAogICAgIGluc3BlY3Rvci9JbnNw
ZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9u
dGVuZEhvc3QuY3BwCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckhlYXBQcm9maWxlckFnZW50LmNw
cApAQCAtMTc5Nyw3ICsxNzQzLDYgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHBhZ2Uvc2Ny
b2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlQ29v
cmRpbmF0ZWRHcmFwaGljcy5jcHAKIAogICAgIHBsYXRmb3JtL0FyZW5hLmNwcAotICAgIHBsYXRm
b3JtL0FzeW5jRmlsZVN5c3RlbS5jcHAKICAgICBwbGF0Zm9ybS9DYWxjdWxhdGlvblZhbHVlLmNw
cAogICAgIHBsYXRmb3JtL0Nsb2NrLmNwcAogICAgIHBsYXRmb3JtL0Nsb2NrR2VuZXJpYy5jcHAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNv
dXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA0LDE4
ICsxMDQsMTIgQEAKICNpbmNsdWRlICJKU0RhdGFUcmFuc2Zlckl0ZW1MaXN0LmNwcCIKICNpbmNs
dWRlICJKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmNwcCIKICNpbmNsdWRlICJKU0Rldmlj
ZU9yaWVudGF0aW9uRXZlbnQuY3BwIgotI2luY2x1ZGUgIkpTRGlyZWN0b3J5RW50cnkuY3BwIgot
I2luY2x1ZGUgIkpTRGlyZWN0b3J5RW50cnlTeW5jLmNwcCIKLSNpbmNsdWRlICJKU0RpcmVjdG9y
eVJlYWRlci5jcHAiCi0jaW5jbHVkZSAiSlNEaXJlY3RvcnlSZWFkZXJTeW5jLmNwcCIKICNpbmNs
dWRlICJKU0RvY3VtZW50LmNwcCIKICNpbmNsdWRlICJKU0RvY3VtZW50RnJhZ21lbnQuY3BwIgog
I2luY2x1ZGUgIkpTRG9jdW1lbnRUeXBlLmNwcCIKICNpbmNsdWRlICJKU0RPTUFwcGxpY2F0aW9u
Q2FjaGUuY3BwIgogI2luY2x1ZGUgIkpTRE9NQ29yZUV4Y2VwdGlvbi5jcHAiCiAjaW5jbHVkZSAi
SlNET01FcnJvci5jcHAiCi0jaW5jbHVkZSAiSlNET01GaWxlU3lzdGVtLmNwcCIKLSNpbmNsdWRl
ICJKU0RPTUZpbGVTeXN0ZW1TeW5jLmNwcCIKICNpbmNsdWRlICJKU0RPTUZvcm1EYXRhLmNwcCIK
ICNpbmNsdWRlICJKU0RPTUltcGxlbWVudGF0aW9uLmNwcCIKICNpbmNsdWRlICJKU0RPTU1pbWVU
eXBlLmNwcCIKQEAgLTEzNywzMSArMTMxLDE3IEBACiAjaW5jbHVkZSAiSlNFbGVtZW50LmNwcCIK
ICNpbmNsdWRlICJKU0VudGl0eS5jcHAiCiAjaW5jbHVkZSAiSlNFbnRpdHlSZWZlcmVuY2UuY3Bw
IgotI2luY2x1ZGUgIkpTRW50cmllc0NhbGxiYWNrLmNwcCIKLSNpbmNsdWRlICJKU0VudHJ5LmNw
cCIKLSNpbmNsdWRlICJKU0VudHJ5QXJyYXkuY3BwIgotI2luY2x1ZGUgIkpTRW50cnlBcnJheVN5
bmMuY3BwIgotI2luY2x1ZGUgIkpTRW50cnlTeW5jLmNwcCIKLSNpbmNsdWRlICJKU0VudHJ5Q2Fs
bGJhY2suY3BwIgotI2luY2x1ZGUgIkpTRXJyb3JDYWxsYmFjay5jcHAiCiAjaW5jbHVkZSAiSlNF
cnJvckV2ZW50LmNwcCIKICNpbmNsdWRlICJKU0V2ZW50LmNwcCIKICNpbmNsdWRlICJKU0V2ZW50
RXhjZXB0aW9uLmNwcCIKICNpbmNsdWRlICJKU0V2ZW50U291cmNlLmNwcCIKICNpbmNsdWRlICJK
U0V2ZW50VGFyZ2V0LmNwcCIKICNpbmNsdWRlICJKU0ZpbGUuY3BwIgotI2luY2x1ZGUgIkpTRmls
ZUNhbGxiYWNrLmNwcCIKLSNpbmNsdWRlICJKU0ZpbGVFbnRyeS5jcHAiCi0jaW5jbHVkZSAiSlNG
aWxlRW50cnlTeW5jLmNwcCIKICNpbmNsdWRlICJKU0ZpbGVFcnJvci5jcHAiCiAjaW5jbHVkZSAi
SlNGaWxlRXhjZXB0aW9uLmNwcCIKICNpbmNsdWRlICJKU0ZpbGVMaXN0LmNwcCIKICNpbmNsdWRl
ICJKU0ZpbGVSZWFkZXIuY3BwIgogI2luY2x1ZGUgIkpTRmlsZVJlYWRlclN5bmMuY3BwIgotI2lu
Y2x1ZGUgIkpTRmlsZVN5c3RlbUNhbGxiYWNrLmNwcCIKLSNpbmNsdWRlICJKU0ZpbGVXcml0ZXIu
Y3BwIgotI2luY2x1ZGUgIkpTRmlsZVdyaXRlckNhbGxiYWNrLmNwcCIKLSNpbmNsdWRlICJKU0Zp
bGVXcml0ZXJTeW5jLmNwcCIKICNpbmNsdWRlICJKU0ZvY3VzRXZlbnQuY3BwIgogI2lmIEVOQUJM
RShGT05UX0xPQURfRVZFTlRTKQogI2luY2x1ZGUgIkpTRm9udExvYWRlci5jcHAiCkBAIC0yNzUs
OCArMjU1LDYgQEAKICNpbmNsdWRlICJKU01lc3NhZ2VDaGFubmVsLmNwcCIKICNpbmNsdWRlICJK
U01lc3NhZ2VFdmVudC5jcHAiCiAjaW5jbHVkZSAiSlNNZXNzYWdlUG9ydC5jcHAiCi0jaW5jbHVk
ZSAiSlNNZXRhZGF0YS5jcHAiCi0jaW5jbHVkZSAiSlNNZXRhZGF0YUNhbGxiYWNrLmNwcCIKICNp
bmNsdWRlICJKU01vdXNlRXZlbnQuY3BwIgogI2luY2x1ZGUgIkpTTXV0YXRpb25FdmVudC5jcHAi
CiAjaW5jbHVkZSAiSlNNdXRhdGlvbk9ic2VydmVyLmNwcCIKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L0Rlcml2ZWRTb3VyY2VzLm1ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvRGVyaXZl
ZFNvdXJjZXMubWFrZQkocmV2aXNpb24gMTU2NjkxKQorKysgU291cmNlL1dlYkNvcmUvRGVyaXZl
ZFNvdXJjZXMubWFrZQkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNiBAQAogVlBBVEggPSBc
CiAgICAgJChXZWJDb3JlKSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
IFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvZmlsZXN5c3RlbSBcCiAgICAgJChXZWJDb3JlKS9N
b2R1bGVzL2dlb2xvY2F0aW9uIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvaW5kZXhlZGRiIFwK
ICAgICAkKFdlYkNvcmUpL01vZHVsZXMvaW5kaWV1aSBcCkBAIC03MCwzMCArNjksNiBAQCBCSU5E
SU5HX0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5TmVlZGVkRXZlbnQuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvTWVkaWFLZXlTZXNzaW9uLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5cy5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy9maWxlc3lzdGVt
L0RPTUZpbGVTeXN0ZW0uaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvZmlsZXN5c3RlbS9E
T01GaWxlU3lzdGVtU3luYy5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy9maWxlc3lzdGVt
L0RPTVdpbmRvd0ZpbGVTeXN0ZW0uaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvZmlsZXN5
c3RlbS9EaXJlY3RvcnlFbnRyeS5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy9maWxlc3lz
dGVtL0RpcmVjdG9yeUVudHJ5U3luYy5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy9maWxl
c3lzdGVtL0RpcmVjdG9yeVJlYWRlci5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy9maWxl
c3lzdGVtL0RpcmVjdG9yeVJlYWRlclN5bmMuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMv
ZmlsZXN5c3RlbS9FbnRyaWVzQ2FsbGJhY2suaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMv
ZmlsZXN5c3RlbS9FbnRyeS5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy9maWxlc3lzdGVt
L0VudHJ5QXJyYXkuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRy
eUFycmF5U3luYy5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5
Q2FsbGJhY2suaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeVN5
bmMuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvZmlsZXN5c3RlbS9FcnJvckNhbGxiYWNr
LmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZUNhbGxiYWNrLmlk
bCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZUVudHJ5LmlkbCBcCi0g
ICAgJChXZWJDb3JlKS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZUVudHJ5U3luYy5pZGwgXAotICAg
ICQoV2ViQ29yZSkvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVTeXN0ZW1DYWxsYmFjay5pZGwgXAot
ICAgICQoV2ViQ29yZSkvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVXcml0ZXIuaWRsIFwKLSAgICAk
KFdlYkNvcmUpL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlV3JpdGVyQ2FsbGJhY2suaWRsIFwKLSAg
ICAkKFdlYkNvcmUpL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlV3JpdGVyU3luYy5pZGwgXAotICAg
ICQoV2ViQ29yZSkvTW9kdWxlcy9maWxlc3lzdGVtL01ldGFkYXRhLmlkbCBcCi0gICAgJChXZWJD
b3JlKS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vTWV0YWRhdGFDYWxsYmFjay5pZGwgXAotICAgICQoV2Vi
Q29yZSkvTW9kdWxlcy9maWxlc3lzdGVtL1dvcmtlckdsb2JhbFNjb3BlRmlsZVN5c3RlbS5pZGwg
XAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9nZW9sb2NhdGlvbi9Db29yZGluYXRlcy5pZGwgXAog
ICAgICQoV2ViQ29yZSkvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5pZGwgXAogICAg
ICQoV2ViQ29yZSkvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9wb3NpdGlvbi5pZGwgXApJbmRleDog
U291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMucHJpCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLnByaQkocmV2aXNpb24gMTU2NjkxKQorKysgU291cmNlL1dl
YkNvcmUvRGVyaXZlZFNvdXJjZXMucHJpCSh3b3JraW5nIGNvcHkpCkBAIC05MywyOSArOTMsNiBA
QCBQTFVHSU5TX0VNQkVEID0gXAogICAgICQkUFdEL1Jlc291cmNlcy9wbHVnSW5zLmpzCiAKIElE
TF9CSU5ESU5HUyArPSBcCi0gICAgJCRQV0QvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0
ZW0uaWRsIFwKLSAgICAkJFBXRC9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3RlbVN5bmMu
aWRsIFwKLSAgICAkJFBXRC9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NV2luZG93RmlsZVN5c3RlbS5p
ZGwgXAotICAgICQkUFdEL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRyeS5pZGwgXAot
ICAgICQkUFdEL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRyeVN5bmMuaWRsIFwKLSAg
ICAkJFBXRC9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyLmlkbCBcCi0gICAgJCRQ
V0QvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlclN5bmMuaWRsIFwKLSAgICAkJFBX
RC9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cmllc0NhbGxiYWNrLmlkbCBcCi0gICAgJCRQV0QvTW9k
dWxlcy9maWxlc3lzdGVtL0VudHJ5LmlkbCBcCi0gICAgJCRQV0QvTW9kdWxlcy9maWxlc3lzdGVt
L0VudHJ5QXJyYXkuaWRsIFwKLSAgICAkJFBXRC9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlBcnJh
eVN5bmMuaWRsIFwKLSAgICAkJFBXRC9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlDYWxsYmFjay5p
ZGwgXAotICAgICQkUFdEL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeVN5bmMuaWRsIFwKLSAgICAk
JFBXRC9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRXJyb3JDYWxsYmFjay5pZGwgXAotICAgICQkUFdEL01v
ZHVsZXMvZmlsZXN5c3RlbS9GaWxlQ2FsbGJhY2suaWRsIFwKLSAgICAkJFBXRC9Nb2R1bGVzL2Zp
bGVzeXN0ZW0vRmlsZUVudHJ5LmlkbCBcCi0gICAgJCRQV0QvTW9kdWxlcy9maWxlc3lzdGVtL0Zp
bGVFbnRyeVN5bmMuaWRsIFwKLSAgICAkJFBXRC9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVN5c3Rl
bUNhbGxiYWNrLmlkbCBcCi0gICAgJCRQV0QvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVXcml0ZXIu
aWRsIFwKLSAgICAkJFBXRC9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVdyaXRlckNhbGxiYWNrLmlk
bCBcCi0gICAgJCRQV0QvTW9kdWxlcy9maWxlc3lzdGVtL01ldGFkYXRhLmlkbCBcCi0gICAgJCRQ
V0QvTW9kdWxlcy9maWxlc3lzdGVtL01ldGFkYXRhQ2FsbGJhY2suaWRsIFwKLSAgICAkJFBXRC9N
b2R1bGVzL2ZpbGVzeXN0ZW0vV29ya2VyR2xvYmFsU2NvcGVGaWxlU3lzdGVtLmlkbCBcCiAgICAg
JCRQV0QvTW9kdWxlcy9nZW9sb2NhdGlvbi9Db29yZGluYXRlcy5pZGwgXAogICAgICQkUFdEL01v
ZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uaWRsIFwKICAgICAkJFBXRC9Nb2R1bGVzL2dl
b2xvY2F0aW9uL0dlb3Bvc2l0aW9uLmlkbCBcCkBAIC03NjYsNyArNzQzLDYgQEAgZ2VuZXJhdGVC
aW5kaW5ncy5zY3JpcHQgPSAkJFBXRC9iaW5kaW5ncwogZ2VuZXJhdGVCaW5kaW5ncy5jb21tYW5k
cyA9ICQkc2V0RW52aXJvbm1lbnRWYXJpYWJsZShTT1VSQ0VfUk9PVCwgJCR0b1N5c3RlbVBhdGgo
JCRQV0QpKSAmJiBwZXJsIC1JJCRQV0QvYmluZGluZ3Mvc2NyaXB0cyAkJGdlbmVyYXRlQmluZGlu
Z3Muc2NyaXB0IFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLWRlZmluZXMgXCIkJGph
dmFzY3JpcHRGZWF0dXJlRGVmaW5lcygpXCIgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC0tZ2VuZXJhdG9yIEpTIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLWluY2x1ZGUg
TW9kdWxlcy9maWxlc3lzdGVtIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLWluY2x1
ZGUgTW9kdWxlcy9nZW9sb2NhdGlvbiBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1p
bmNsdWRlIE1vZHVsZXMvaW5kZXhlZGRiIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAt
LWluY2x1ZGUgTW9kdWxlcy9tZWRpYXNvdXJjZSBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9HTlVt
YWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0JKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTE2NSwxNCArMTY1LDYgQEAgd2ViY29yZV9idWls
dF9zb3VyY2VzICs9IFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRGV2aWNlTW90aW9uRXZl
bnQuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0RldmljZU9yaWVudGF0aW9uRXZlbnQu
Y3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRGV2aWNlT3JpZW50YXRpb25FdmVudC5o
IFwKLQlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRGlyZWN0b3J5RW50cnkuY3BwIFwKLQlEZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTRGlyZWN0b3J5RW50cnkuaCBcCi0JRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU0RpcmVjdG9yeUVudHJ5U3luYy5jcHAgXAotCURlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNEaXJlY3RvcnlFbnRyeVN5bmMuaCBcCi0JRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0Rp
cmVjdG9yeVJlYWRlci5jcHAgXAotCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNEaXJlY3RvcnlS
ZWFkZXIuaCBcCi0JRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0RpcmVjdG9yeVJlYWRlclN5bmMu
Y3BwIFwKLQlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRGlyZWN0b3J5UmVhZGVyU3luYy5oIFwK
IAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRG9jdW1lbnQuY3BwIFwKIAlEZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTRG9jdW1lbnRGcmFnbWVudC5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNEb2N1bWVudEZyYWdtZW50LmggXApAQCAtMTg1LDEwICsxNzcsNiBAQCB3ZWJjb3JlX2J1
aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNET01Db3JlRXhjZXB0
aW9uLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNET01FcnJvci5jcHAgXAogCURlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNET01FcnJvci5oIFwKLQlEZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTRE9NRmlsZVN5c3RlbS5jcHAgXAotCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNET01GaWxl
U3lzdGVtLmggXAotCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNET01GaWxlU3lzdGVtU3luYy5j
cHAgXAotCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNET01GaWxlU3lzdGVtU3luYy5oIFwKIAlE
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRE9NRm9ybURhdGEuY3BwIFwKIAlEZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTRE9NRm9ybURhdGEuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0RP
TUltcGxlbWVudGF0aW9uLmNwcCBcCkBAIC0yMzMsMjAgKzIyMSw2IEBAIHdlYmNvcmVfYnVpbHRf
c291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0VudGl0eS5oIFwKIAlEZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTRW50aXR5UmVmZXJlbmNlLmNwcCBcCiAJRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU0VudGl0eVJlZmVyZW5jZS5oIFwKLQlEZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTRW50cmllc0NhbGxiYWNrLmNwcCBcCi0JRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0VudHJp
ZXNDYWxsYmFjay5oIFwKLQlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRW50cnkuY3BwIFwKLQlE
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRW50cnkuaCBcCi0JRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU0VudHJ5QXJyYXkuY3BwIFwKLQlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRW50cnlBcnJh
eS5oIFwKLQlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRW50cnlBcnJheVN5bmMuY3BwIFwKLQlE
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRW50cnlBcnJheVN5bmMuaCBcCi0JRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU0VudHJ5Q2FsbGJhY2suY3BwIFwKLQlEZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTRW50cnlDYWxsYmFjay5oIFwKLQlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRW50cnlTeW5j
LmNwcCBcCi0JRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0VudHJ5U3luYy5oIFwKLQlEZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTRXJyb3JDYWxsYmFjay5jcHAgXAotCURlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNFcnJvckNhbGxiYWNrLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNFcnJv
ckV2ZW50LmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0Vycm9yRXZlbnQuaCBcCiAJ
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0VYVERyYXdCdWZmZXJzLmNwcCBcCkBAIC0yNjIsMTIg
KzIzNiw2IEBAIHdlYmNvcmVfYnVpbHRfc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU0V2ZW50VGFyZ2V0LmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0V2ZW50
VGFyZ2V0LmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNGaWxlLmNwcCBcCi0JRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU0ZpbGVDYWxsYmFjay5jcHAgXAotCURlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNGaWxlQ2FsbGJhY2suaCBcCi0JRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0ZpbGVF
bnRyeS5jcHAgXAotCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNGaWxlRW50cnkuaCBcCi0JRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU0ZpbGVFbnRyeVN5bmMuY3BwIFwKLQlEZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTRmlsZUVudHJ5U3luYy5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
RmlsZUVycm9yLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0ZpbGVFcnJvci5oIFwK
IAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRmlsZS5oIFwKQEAgLTI3OSwxNCArMjQ3LDYgQEAg
d2ViY29yZV9idWlsdF9zb3VyY2VzICs9IFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRmls
ZVJlYWRlci5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRmlsZVJlYWRlclN5bmMuY3Bw
IFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRmlsZVJlYWRlclN5bmMuaCBcCi0JRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU0ZpbGVTeXN0ZW1DYWxsYmFjay5jcHAgXAotCURlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNGaWxlU3lzdGVtQ2FsbGJhY2suaCBcCi0JRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU0ZpbGVXcml0ZXIuY3BwIFwKLQlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRmlsZVdy
aXRlci5oIFwKLQlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRmlsZVdyaXRlckNhbGxiYWNrLmNw
cCBcCi0JRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0ZpbGVXcml0ZXJDYWxsYmFjay5oIFwKLQlE
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRmlsZVdyaXRlclN5bmMuY3BwIFwKLQlEZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTRmlsZVdyaXRlclN5bmMuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU0ZvY3VzRXZlbnQuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRm9jdXNFdmVu
dC5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRm9udExvYWRlci5jcHAgXApAQCAtNTI2
LDEwICs0ODYsNiBAQCB3ZWJjb3JlX2J1aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNNZXNzYWdlRXZlbnQuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU01l
c3NhZ2VQb3J0LmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU01lc3NhZ2VQb3J0Lmgg
XAotCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZXRhZGF0YS5jcHAgXAotCURlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNNZXRhZGF0YS5oIFwKLQlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTWV0
YWRhdGFDYWxsYmFjay5jcHAgXAotCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZXRhZGF0YUNh
bGxiYWNrLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNb3VzZUV2ZW50LmNwcCBcCiAJ
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU01vdXNlRXZlbnQuaCBcCiAJRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU011dGF0aW9uRXZlbnQuY3BwIFwKQEAgLTExOTksMzAgKzExNTUsNiBAQCB3ZWJj
b3JlX3N2Z19idWlsdF9zb3VyY2VzICs9IFwKIGRvbV9iaW5kaW5nX2lkbHMgKz0gXAogCSQoV2Vi
Q29yZSkvTW9kdWxlcy9iYXR0ZXJ5L0JhdHRlcnlNYW5hZ2VyLmlkbCBcCiAJJChXZWJDb3JlKS9N
b2R1bGVzL2JhdHRlcnkvTmF2aWdhdG9yQmF0dGVyeS5pZGwgXAotCSQoV2ViQ29yZSkvTW9kdWxl
cy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW0uaWRsIFwKLQkkKFdlYkNvcmUpL01vZHVsZXMvZmls
ZXN5c3RlbS9ET01GaWxlU3lzdGVtU3luYy5pZGwgXAotCSQoV2ViQ29yZSkvTW9kdWxlcy9maWxl
c3lzdGVtL0RPTVdpbmRvd0ZpbGVTeXN0ZW0uaWRsIFwKLQkkKFdlYkNvcmUpL01vZHVsZXMvZmls
ZXN5c3RlbS9EaXJlY3RvcnlFbnRyeS5pZGwgXAotCSQoV2ViQ29yZSkvTW9kdWxlcy9maWxlc3lz
dGVtL0RpcmVjdG9yeUVudHJ5U3luYy5pZGwgXAotCSQoV2ViQ29yZSkvTW9kdWxlcy9maWxlc3lz
dGVtL0RpcmVjdG9yeVJlYWRlci5pZGwgXAotCSQoV2ViQ29yZSkvTW9kdWxlcy9maWxlc3lzdGVt
L0RpcmVjdG9yeVJlYWRlclN5bmMuaWRsIFwKLQkkKFdlYkNvcmUpL01vZHVsZXMvZmlsZXN5c3Rl
bS9FbnRyaWVzQ2FsbGJhY2suaWRsIFwKLQkkKFdlYkNvcmUpL01vZHVsZXMvZmlsZXN5c3RlbS9F
bnRyeS5pZGwgXAotCSQoV2ViQ29yZSkvTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5QXJyYXkuaWRs
IFwKLQkkKFdlYkNvcmUpL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeUFycmF5U3luYy5pZGwgXAot
CSQoV2ViQ29yZSkvTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5Q2FsbGJhY2suaWRsIFwKLQkkKFdl
YkNvcmUpL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeVN5bmMuaWRsIFwKLQkkKFdlYkNvcmUpL01v
ZHVsZXMvZmlsZXN5c3RlbS9FcnJvckNhbGxiYWNrLmlkbCBcCi0JJChXZWJDb3JlKS9Nb2R1bGVz
L2ZpbGVzeXN0ZW0vRmlsZUNhbGxiYWNrLmlkbCBcCi0JJChXZWJDb3JlKS9Nb2R1bGVzL2ZpbGVz
eXN0ZW0vRmlsZUVudHJ5LmlkbCBcCi0JJChXZWJDb3JlKS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmls
ZUVudHJ5U3luYy5pZGwgXAotCSQoV2ViQ29yZSkvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVTeXN0
ZW1DYWxsYmFjay5pZGwgXAotCSQoV2ViQ29yZSkvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVXcml0
ZXIuaWRsIFwKLQkkKFdlYkNvcmUpL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlV3JpdGVyQ2FsbGJh
Y2suaWRsIFwKLQkkKFdlYkNvcmUpL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlV3JpdGVyU3luYy5p
ZGwgXAotCSQoV2ViQ29yZSkvTW9kdWxlcy9maWxlc3lzdGVtL01ldGFkYXRhLmlkbCBcCi0JJChX
ZWJDb3JlKS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vTWV0YWRhdGFDYWxsYmFjay5pZGwgXAotCSQoV2Vi
Q29yZSkvTW9kdWxlcy9maWxlc3lzdGVtL1dvcmtlckdsb2JhbFNjb3BlRmlsZVN5c3RlbS5pZGwg
XAogCSQoV2ViQ29yZSkvTW9kdWxlcy9nYW1lcGFkL0dhbWVwYWQuaWRsIFwKIAkkKFdlYkNvcmUp
L01vZHVsZXMvZ2FtZXBhZC9HYW1lcGFkTGlzdC5pZGwgXAogCSQoV2ViQ29yZSkvTW9kdWxlcy9n
YW1lcGFkL05hdmlnYXRvckdhbWVwYWQuaWRsIFwKQEAgLTE4MDUsNjMgKzE3MzcsNiBAQCB3ZWJj
b3JlX21vZHVsZXNfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9iYXR0ZXJ5
L0JhdHRlcnlTdGF0dXMuaCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9iYXR0ZXJ5L05hdmln
YXRvckJhdHRlcnkuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JhdHRlcnkvTmF2aWdh
dG9yQmF0dGVyeS5oIFwKLQlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vQXN5bmNG
aWxlV3JpdGVyLmggXAotCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9Bc3luY0Zp
bGVXcml0ZXJDbGllbnQuaCBcCi0JU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RP
TUZpbGVQYXRoLmNwcCBcCi0JU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZp
bGVQYXRoLmggXAotCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lz
dGVtLmNwcCBcCi0JU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0
ZW0uaCBcCi0JU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW1C
YXNlLmNwcCBcCi0JU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0
ZW1CYXNlLmggXAotCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lz
dGVtU3luYy5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxl
U3lzdGVtU3luYy5oIFwKLQlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NV2lu
ZG93RmlsZVN5c3RlbS5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9E
T01XaW5kb3dGaWxlU3lzdGVtLmggXAotCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3Rl
bS9EaXJlY3RvcnlFbnRyeS5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3Rl
bS9EaXJlY3RvcnlFbnRyeS5oIFwKLQlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0v
RGlyZWN0b3J5RW50cnlTeW5jLmNwcCBcCi0JU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lz
dGVtL0RpcmVjdG9yeUVudHJ5U3luYy5oIFwKLQlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVz
eXN0ZW0vRGlyZWN0b3J5UmVhZGVyLmNwcCBcCi0JU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxl
c3lzdGVtL0RpcmVjdG9yeVJlYWRlci5oIFwKLQlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVz
eXN0ZW0vRGlyZWN0b3J5UmVhZGVyU3luYy5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFkZXJTeW5jLmggXAotCVNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmlsZXN5c3RlbS9FbnRyaWVzQ2FsbGJhY2suaCBcCi0JU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9maWxlc3lzdGVtL0VudHJ5LmNwcCBcCi0JU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lz
dGVtL0VudHJ5LmggXAotCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeUFy
cmF5LmNwcCBcCi0JU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5QXJyYXku
aCBcCi0JU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5QXJyYXlTeW5jLmNw
cCBcCi0JU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5QXJyYXlTeW5jLmgg
XAotCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeUJhc2UuY3BwIFwKLQlT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlCYXNlLmggXAotCVNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeUNhbGxiYWNrLmggXAotCVNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeVN5bmMuY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlTeW5jLmggXAotCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmlsZXN5c3RlbS9FcnJvckNhbGxiYWNrLmggXAotCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmls
ZXN5c3RlbS9GaWxlQ2FsbGJhY2suaCBcCi0JU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lz
dGVtL0ZpbGVFbnRyeS5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9G
aWxlRW50cnkuaCBcCi0JU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVFbnRy
eVN5bmMuY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZUVudHJ5
U3luYy5oIFwKLQlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVN5c3RlbUNh
bGxiYWNrLmggXAotCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlU3lzdGVt
Q2FsbGJhY2tzLmNwcCBcCi0JU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVT
eXN0ZW1DYWxsYmFja3MuaCBcCi0JU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0Zp
bGVTeXN0ZW1GbGFncy5oIFwKLQlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmls
ZVN5c3RlbVR5cGUuaCBcCi0JU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVX
cml0ZXIuY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVdyaXRl
ci5oIFwKLQlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVdyaXRlckJhc2Uu
Y3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVdyaXRlckJhc2Uu
aCBcCi0JU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVXcml0ZXJCYXNlQ2Fs
bGJhY2suaCBcCi0JU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVXcml0ZXJD
YWxsYmFjay5oIFwKLQlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVdyaXRl
clN5bmMuY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVdyaXRl
clN5bmMuaCBcCi0JU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0xvY2FsRmlsZVN5
c3RlbS5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9Mb2NhbEZpbGVT
eXN0ZW0uaCBcCi0JU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL01ldGFkYXRhQ2Fs
bGJhY2suaCBcCi0JU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL01ldGFkYXRhLmgg
XAotCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9Xb3JrZXJHbG9iYWxTY29wZUZp
bGVTeXN0ZW0uY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vV29ya2Vy
R2xvYmFsU2NvcGVGaWxlU3lzdGVtLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2FtZXBh
ZC9HYW1lcGFkLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nYW1lcGFkL0dhbWVwYWQu
aCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nYW1lcGFkL0dhbWVwYWRMaXN0LmNwcCBcCkBA
IC01MzY1LDkgKzUyNDAsNiBAQCB3ZWJjb3JlX3BsYXRmb3JtX3NvdXJjZXMgKz0gXAogCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZQYW5uZXIuaCBcCiAJU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vUGFubmVyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vUGFubmVyLmggXAotCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0FzeW5jRmlsZVN5c3RlbS5j
cHAgXAotCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0FzeW5jRmlsZVN5c3RlbS5oIFwKLQlTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MuaCBcCiAJU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vQ2FsY3VsYXRpb25WYWx1ZS5jcHAgXAogCVNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0NhbGN1bGF0aW9uVmFsdWUuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Q3Jvc3NUaHJlYWRDb3BpZXIuY3BwIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQmxh
Y2tCZXJyeS5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUJsYWNr
QmVycnkuY21ha2UJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL1BsYXRmb3Jt
QmxhY2tCZXJyeS5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtMTQ4LDEzICsxNDgsNiBAQCBsaXN0
KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkv
Q3JlZGVudGlhbFN0b3JhZ2VCbGFja0JlcnJ5LmNwcAogKQogCi0jIEZpbGUgU3lzdGVtIHN1cHBv
cnQKLWlmIChFTkFCTEVfRklMRV9TWVNURU0pCi0gICAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VS
Q0VTCi0gICAgICAgIHBsYXRmb3JtL2JsYWNrYmVycnkvQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJy
eS5jcHAKLSAgICApCi1lbmRpZiAoKQotCiBpZiAoRU5BQkxFX1NNT09USF9TQ1JPTExJTkcpCiAg
ICAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgICAgIHBsYXRmb3JtL2JsYWNrYmVy
cnkvU2Nyb2xsQW5pbWF0b3JCbGFja0JlcnJ5LmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvVGFy
Z2V0LnByaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCShyZXZpc2lv
biAxNTY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCSh3b3JraW5nIGNvcHkpCkBA
IC0yMDUsMjcgKzIwNSw2IEBAIFNPVVJDRVMgKz0gXAogCiAKIFNPVVJDRVMgKz0gXAotICAgIE1v
ZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlUGF0aC5jcHAgXAotICAgIE1vZHVsZXMvZmlsZXN5c3Rl
bS9ET01GaWxlU3lzdGVtLmNwcCBcCi0gICAgTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0
ZW1CYXNlLmNwcCBcCi0gICAgTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW1TeW5jLmNw
cCBcCi0gICAgTW9kdWxlcy9maWxlc3lzdGVtL0RPTVdpbmRvd0ZpbGVTeXN0ZW0uY3BwIFwKLSAg
ICBNb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5RW50cnkuY3BwIFwKLSAgICBNb2R1bGVzL2Zp
bGVzeXN0ZW0vRGlyZWN0b3J5RW50cnlTeW5jLmNwcCBcCi0gICAgTW9kdWxlcy9maWxlc3lzdGVt
L0RpcmVjdG9yeVJlYWRlci5jcHAgXAotICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlS
ZWFkZXJTeW5jLmNwcCBcCi0gICAgTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5LmNwcCBcCi0gICAg
TW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5QXJyYXkuY3BwIFwKLSAgICBNb2R1bGVzL2ZpbGVzeXN0
ZW0vRW50cnlBcnJheVN5bmMuY3BwIFwKLSAgICBNb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlCYXNl
LmNwcCBcCi0gICAgTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5U3luYy5jcHAgXAotICAgIE1vZHVs
ZXMvZmlsZXN5c3RlbS9GaWxlRW50cnkuY3BwIFwKLSAgICBNb2R1bGVzL2ZpbGVzeXN0ZW0vRmls
ZUVudHJ5U3luYy5jcHAgXAotICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9GaWxlV3JpdGVyLmNwcCBc
Ci0gICAgTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVXcml0ZXJCYXNlLmNwcCBcCi0gICAgTW9kdWxl
cy9maWxlc3lzdGVtL0ZpbGVXcml0ZXJTeW5jLmNwcCBcCi0gICAgTW9kdWxlcy9maWxlc3lzdGVt
L0xvY2FsRmlsZVN5c3RlbS5jcHAgXAotICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9Xb3JrZXJHbG9i
YWxTY29wZUZpbGVTeXN0ZW0uY3BwIFwKICAgICBNb2R1bGVzL25hdmlnYXRvcmNvbnRlbnR1dGls
cy9OYXZpZ2F0b3JDb250ZW50VXRpbHMuY3BwIFwKICAgICBNb2R1bGVzL25vdGlmaWNhdGlvbnMv
RE9NV2luZG93Tm90aWZpY2F0aW9ucy5jcHAgXAogICAgIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9O
b3RpZmljYXRpb24uY3BwIFwKQEAgLTMxMDQsNTEgKzMwODMsNiBAQCBlbmFibGU/KERBVEFfVFJB
TlNGRVJfSVRFTVMpIHsKICAgICAgICAgcGxhdGZvcm0vcXQvRGF0YVRyYW5zZmVySXRlbUxpc3RR
dC5jcHAKIH0KIAotZW5hYmxlPyhGSUxFX1NZU1RFTSkgewotICAgIEhFQURFUlMgKz0gXAotICAg
ICAgICBNb2R1bGVzL2ZpbGVzeXN0ZW0vQXN5bmNGaWxlV3JpdGVyLmggXAotICAgICAgICBNb2R1
bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVBhdGguaCBcCi0gICAgICAgIE1vZHVsZXMvZmlsZXN5c3Rl
bS9ET01GaWxlU3lzdGVtLmggXAotICAgICAgICBNb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5
c3RlbUJhc2UuaCBcCi0gICAgICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtU3lu
Yy5oIFwKLSAgICAgICAgTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5LmggXAotICAg
ICAgICBNb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5RW50cnlTeW5jLmggXAotICAgICAgICBN
b2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyLmggXAotICAgICAgICBNb2R1bGVzL2Zp
bGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyQmFzZS5oIFwKLSAgICAgICAgTW9kdWxlcy9maWxlc3lz
dGVtL0RpcmVjdG9yeVJlYWRlclN5bmMuaCBcCi0gICAgICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9F
bnRyaWVzQ2FsbGJhY2suaCBcCi0gICAgICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeS5oIFwK
LSAgICAgICAgTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5QXJyYXkuaCBcCi0gICAgICAgIE1vZHVs
ZXMvZmlsZXN5c3RlbS9FbnRyeUFycmF5U3luYy5oIFwKLSAgICAgICAgTW9kdWxlcy9maWxlc3lz
dGVtL0VudHJ5QmFzZS5oIFwKLSAgICAgICAgTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5Q2FsbGJh
Y2suaCBcCi0gICAgICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeVN5bmMuaCBcCi0gICAgICAg
IE1vZHVsZXMvZmlsZXN5c3RlbS9FcnJvckNhbGxiYWNrLmggXAotICAgICAgICBNb2R1bGVzL2Zp
bGVzeXN0ZW0vRmlsZUNhbGxiYWNrLmggXAotICAgICAgICBNb2R1bGVzL2ZpbGVzeXN0ZW0vRmls
ZUVudHJ5LmggXAotICAgICAgICBNb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZUVudHJ5U3luYy5oIFwK
LSAgICAgICAgTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVTeXN0ZW1DYWxsYmFjay5oIFwKLSAgICAg
ICAgTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVTeXN0ZW1DYWxsYmFja3MuaCBcCi0gICAgICAgIE1v
ZHVsZXMvZmlsZXN5c3RlbS9GaWxlU3lzdGVtRmxhZ3MuaCBcCi0gICAgICAgIE1vZHVsZXMvZmls
ZXN5c3RlbS9GaWxlV3JpdGVyLmggXAotICAgICAgICBNb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVdy
aXRlckJhc2UuaCBcCi0gICAgICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9GaWxlV3JpdGVyQmFzZUNh
bGxiYWNrLmggXAotICAgICAgICBNb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVdyaXRlckNhbGxiYWNr
LmggXAotICAgICAgICBNb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVdyaXRlckNsaWVudC5oIFwKLSAg
ICAgICAgTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVXcml0ZXJTeW5jLmggXAotICAgICAgICBNb2R1
bGVzL2ZpbGVzeXN0ZW0vTG9jYWxGaWxlU3lzdGVtLmggXAotICAgICAgICBNb2R1bGVzL2ZpbGVz
eXN0ZW0vTWV0YWRhdGEuaCBcCi0gICAgICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9NZXRhZGF0YUNh
bGxiYWNrLmggXAotICAgICAgICBwbGF0Zm9ybS9Bc3luY0ZpbGVTeXN0ZW0uaCBcCi0gICAgICAg
IHBsYXRmb3JtL0FzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcy5oIFwKLSAgICAgICAgcGxhdGZvcm0v
RmlsZU1ldGFkYXRhLmgKLQotICAgIFNPVVJDRVMgKz0gXAotICAgICAgICBiaW5kaW5ncy9qcy9K
U0VudHJ5Q3VzdG9tLmNwcCBcCi0gICAgICAgIGJpbmRpbmdzL2pzL0pTRW50cnlTeW5jQ3VzdG9t
LmNwcCBcCi0gICAgICAgIHBsYXRmb3JtL0FzeW5jRmlsZVN5c3RlbS5jcHAKLX0KLQogZW5hYmxl
PyhNRURJQV9TT1VSQ0UpIHsKICAgICBIRUFERVJTICs9IFwKICAgICAgICAgTW9kdWxlcy9tZWRp
YXNvdXJjZS9NZWRpYVNvdXJjZS5oIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1VzZUpTQy5jbWFr
ZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UJKHJldmlzaW9uIDE1
NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL1VzZUpTQy5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAt
MjE3LDEzICsyMTcsNiBAQCBpZiAoRU5BQkxFX1NIQVJFRF9XT1JLRVJTKQogICAgICkKIGVuZGlm
ICgpCiAKLWlmIChFTkFCTEVfRklMRV9TWVNURU0pCi0gICAgbGlzdChBUFBFTkQgV2ViQ29yZV9T
T1VSQ0VTCi0gICAgICAgIGJpbmRpbmdzL2pzL0pTRW50cnlDdXN0b20uY3BwCi0gICAgICAgIGJp
bmRpbmdzL2pzL0pTRW50cnlTeW5jQ3VzdG9tLmNwcAotICAgICkKLWVuZGlmICgpCi0KIGlmIChF
TkFCTEVfU1ZHKQogICAgIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgICAgICBiaW5k
aW5ncy9qcy9KU1NWR0VsZW1lbnRJbnN0YW5jZUN1c3RvbS5jcHAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCShy
ZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJl
RGVmaW5lcy54Y2NvbmZpZwkod29ya2luZyBjb3B5KQpAQCAtODIsNyArODIsNiBAQCBFTkFCTEVf
RU5DUllQVEVEX01FRElBX1YyX21hY29zeCA9ICQoRU5BCiBFTkFCTEVfRU5DUllQVEVEX01FRElB
X1YyX21hY29zeF8xMDcwID0gOwogRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMl9tYWNvc3hfMTA4
MCA9IDsKIEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjJfbWFjb3N4XzEwOTAgPSBFTkFCTEVfRU5D
UllQVEVEX01FRElBX1YyOwotRU5BQkxFX0ZJTEVfU1lTVEVNID0gOwogRU5BQkxFX0ZJTFRFUlMg
PSBFTkFCTEVfRklMVEVSUzsKIEVOQUJMRV9GT05UX0xPQURfRVZFTlRTID0gOwogRU5BQkxFX0ZV
TExTQ1JFRU5fQVBJID0gJChFTkFCTEVfRlVMTFNDUkVFTl9BUElfJChQTEFURk9STV9OQU1FKSk7
CkBAIC0xODcsNCArMTg2LDQgQEAgRU5BQkxFX1hTTFQgPSBFTkFCTEVfWFNMVDsKIAogRU5BQkxF
X0ZUTF9KSVQgPSA7CiAKLUZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFXzNEX1JFTkRFUklORykg
JChFTkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTKSAkKEVOQUJMRV9CTE9CKSAkKEVOQUJMRV9D
QUNIRV9QQVJUSVRJT05JTkcpICQoRU5BQkxFX0NBTlZBU19QQVRIKSAkKEVOQUJMRV9DQU5WQVNf
UFJPWFkpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9DU1BfTkVYVCkgJChF
TkFCTEVfQ1NTX0JPWF9ERUNPUkFUSU9OX0JSRUFLKSAkKEVOQUJMRV9DU1NfQ09NUE9TSVRJTkcp
ICQoRU5BQkxFX0NTU19ERVZJQ0VfQURBUFRBVElPTikgJChFTkFCTEVfQ1NTX0VYQ0xVU0lPTlMp
ICQoRU5BQkxFX0NTU19GSUxURVJTKSAkKEVOQUJMRV9DU1NfSU1BR0VfT1JJRU5UQVRJT04pICQo
RU5BQkxFX0NTU19JTUFHRV9SRVNPTFVUSU9OKSAkKEVOQUJMRV9DU1NfUkVHSU9OUykgJChFTkFC
TEVfQ1NTX1NIQURFUlMpICQoRU5BQkxFX0NTU19TSEFQRVMpICQoRU5BQkxFX0NTU19TVElDS1lf
UE9TSVRJT04pICQoRU5BQkxFX0NTU19UUkFOU0ZPUk1TX0FOSU1BVElPTlNfVU5QUkVGSVhFRCkg
JChFTkFCTEVfQ1NTX1ZBUklBQkxFUykgJChFTkFCTEVfQ1NTM19DT05ESVRJT05BTF9SVUxFUykg
JChFTkFCTEVfQ1NTM19URVhUKSAkKEVOQUJMRV9DU1MzX1RFWFRfTElORV9CUkVBSykgJChFTkFC
TEVfQ1VSU09SX1ZJU0lCSUxJVFkpICQoRU5BQkxFX0NVU1RPTV9TQ0hFTUVfSEFORExFUikgJChF
TkFCTEVfREFTSEJPQVJEX1NVUFBPUlQpICQoRU5BQkxFX0RBVEFMSVNUX0VMRU1FTlQpICQoRU5B
QkxFX0RBVEFfVFJBTlNGRVJfSVRFTVMpICQoRU5BQkxFX0RFVEFJTFNfRUxFTUVOVCkgJChFTkFC
TEVfREVWSUNFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9ESVJFQ1RPUllfVVBMT0FEKSAkKEVOQUJM
RV9ET000X0VWRU5UU19DT05TVFJVQ1RPUikgJChFTkFCTEVfRFJBR0dBQkxFX1JFR0lPTikgJChF
TkFCTEVfRU5DUllQVEVEX01FRElBKSAkKEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjIpICQoRU5B
QkxFX0ZJTEVfU1lTVEVNKSAkKEVOQUJMRV9GSUxURVJTKSAkKEVOQUJMRV9GT05UX0xPQURfRVZF
TlRTKSAkKEVOQUJMRV9GVUxMU0NSRUVOX0FQSSkgJChFTkFCTEVfR0FNRVBBRCkgJChFTkFCTEVf
R0VPTE9DQVRJT04pICQoRU5BQkxFX0hJRERFTl9QQUdFX0RPTV9USU1FUl9USFJPVFRMSU5HKSAk
KEVOQUJMRV9ISUdIX0RQSV9DQU5WQVMpICQoRU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVf
SUZSQU1FX1NFQU1MRVNTKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFKSAkKEVOQUJMRV9JTkRJ
RV9VSSkgJChFTkFCTEVfSU5QVVRfU1BFRUNIKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SKSAk
KEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SX1BPUE9WRVIpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFU
RSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRV9JTkNPTVBMRVRFKSAkKEVOQUJMRV9JTlBV
VF9UWVBFX0RBVEVUSU1FTE9DQUwpICQoRU5BQkxFX0lOUFVUX1RZUEVfTU9OVEgpICQoRU5BQkxF
X0lOUFVUX1RZUEVfVElNRSkgJChFTkFCTEVfSU5QVVRfVFlQRV9XRUVLKSAkKEVOQUJMRV9KQVZB
U0NSSVBUX0RFQlVHR0VSKSAkKEVOQUJMRV9MRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUykgJChF
TkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlMpICQoRU5BQkxFX0xFR0FDWV9WRU5ET1JfUFJFRklY
RVMpICQoRU5BQkxFX0xFR0FDWV9XRUJfQVVESU8pICQoRU5BQkxFX0xJTktfUFJFRkVUQ0gpICQo
RU5BQkxFX01BVEhNTCkgJChFTkFCTEVfTUVESUFfQ09OVFJPTFNfU0NSSVBUKSAkKEVOQUJMRV9N
RURJQV9TT1VSQ0UpICQoRU5BQkxFX01FRElBX1NUQVRJU1RJQ1MpICQoRU5BQkxFX01FVEVSX0VM
RU1FTlQpICQoRU5BQkxFX01IVE1MKSAkKEVOQUJMRV9NT1VTRV9DVVJTT1JfU0NBTEUpICQoRU5B
QkxFX05BVklHQVRPUl9DT05URU5UX1VUSUxTKSAkKEVOQUJMRV9OT1RJRklDQVRJT05TKSAkKEVO
QUJMRV9QQUdFX1ZJU0lCSUxJVFlfQVBJKSAkKEVOQUJMRV9QREZLSVRfUExVR0lOKSAkKEVOQUJM
RV9QTFVHSU5fUFJPWFlfRk9SX1ZJREVPKSAkKEVOQUJMRV9QUk9HUkVTU19FTEVNRU5UKSAkKEVO
QUJMRV9QUk9NSVNFUykgJChFTkFCTEVfUFJPWElNSVRZX0VWRU5UUykgJChFTkFCTEVfUFVCTElD
X1NVRkZJWF9MSVNUKSAkKEVOQUJMRV9RVU9UQSkgJChFTkFCTEVfUkVRVUVTVF9BTklNQVRJT05f
RlJBTUUpICQoRU5BQkxFX1JFU09MVVRJT05fTUVESUFfUVVFUlkpICQoRU5BQkxFX1NDUklQVEVE
X1NQRUVDSCkgJChFTkFCTEVfU0hBRE9XX0RPTSkgJChFTkFCTEVfU0hBUkVEX1dPUktFUlMpICQo
RU5BQkxFX1NQRUVDSF9TWU5USEVTSVMpICQoRU5BQkxFX1NRTF9EQVRBQkFTRSkgJChFTkFCTEVf
U1VCUElYRUxfTEFZT1VUKSAkKEVOQUJMRV9TVkcpICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFC
TEVfVEVNUExBVEVfRUxFTUVOVCkgJChFTkFCTEVfVEVYVF9BVVRPU0laSU5HKSAkKEVOQUJMRV9U
SFJFQURFRF9IVE1MX1BBUlNFUikgJChFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5HKSAkKEVOQUJM
RV9VU0VSU0VMRUNUX0FMTCkgJChFTkFCTEVfVklERU8pICQoRU5BQkxFX1ZJREVPX1RSQUNLKSAk
KEVOQUJMRV9WSUVXX01PREVfQ1NTX01FRElBKSAkKEVOQUJMRV9XRUJHTCkgJChFTkFCTEVfV0VC
X0FVRElPKSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVfV0VCX1RJTUlORykgJChFTkFC
TEVfV09SS0VSUykgJChFTkFCTEVfWEhSX1RJTUVPVVQpICQoRU5BQkxFX1hTTFQpICQoRU5BQkxF
X0ZUTF9KSVQpICQoRkVBVFVSRV9ERUZJTkVTXyQoUExBVEZPUk1fTkFNRSkpOworRkVBVFVSRV9E
RUZJTkVTID0gJChFTkFCTEVfM0RfUkVOREVSSU5HKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9D
QU5WQVMpICQoRU5BQkxFX0JMT0IpICQoRU5BQkxFX0NBQ0hFX1BBUlRJVElPTklORykgJChFTkFC
TEVfQ0FOVkFTX1BBVEgpICQoRU5BQkxFX0NBTlZBU19QUk9YWSkgJChFTkFCTEVfQ0hBTk5FTF9N
RVNTQUdJTkcpICQoRU5BQkxFX0NTUF9ORVhUKSAkKEVOQUJMRV9DU1NfQk9YX0RFQ09SQVRJT05f
QlJFQUspICQoRU5BQkxFX0NTU19DT01QT1NJVElORykgJChFTkFCTEVfQ1NTX0RFVklDRV9BREFQ
VEFUSU9OKSAkKEVOQUJMRV9DU1NfRVhDTFVTSU9OUykgJChFTkFCTEVfQ1NTX0ZJTFRFUlMpICQo
RU5BQkxFX0NTU19JTUFHRV9PUklFTlRBVElPTikgJChFTkFCTEVfQ1NTX0lNQUdFX1JFU09MVVRJ
T04pICQoRU5BQkxFX0NTU19SRUdJT05TKSAkKEVOQUJMRV9DU1NfU0hBREVSUykgJChFTkFCTEVf
Q1NTX1NIQVBFUykgJChFTkFCTEVfQ1NTX1NUSUNLWV9QT1NJVElPTikgJChFTkFCTEVfQ1NTX1RS
QU5TRk9STVNfQU5JTUFUSU9OU19VTlBSRUZJWEVEKSAkKEVOQUJMRV9DU1NfVkFSSUFCTEVTKSAk
KEVOQUJMRV9DU1MzX0NPTkRJVElPTkFMX1JVTEVTKSAkKEVOQUJMRV9DU1MzX1RFWFQpICQoRU5B
QkxFX0NTUzNfVEVYVF9MSU5FX0JSRUFLKSAkKEVOQUJMRV9DVVJTT1JfVklTSUJJTElUWSkgJChF
TkFCTEVfQ1VTVE9NX1NDSEVNRV9IQU5ETEVSKSAkKEVOQUJMRV9EQVNIQk9BUkRfU1VQUE9SVCkg
JChFTkFCTEVfREFUQUxJU1RfRUxFTUVOVCkgJChFTkFCTEVfREFUQV9UUkFOU0ZFUl9JVEVNUykg
JChFTkFCTEVfREVUQUlMU19FTEVNRU5UKSAkKEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04pICQo
RU5BQkxFX0RJUkVDVE9SWV9VUExPQUQpICQoRU5BQkxFX0RPTTRfRVZFTlRTX0NPTlNUUlVDVE9S
KSAkKEVOQUJMRV9EUkFHR0FCTEVfUkVHSU9OKSAkKEVOQUJMRV9FTkNSWVBURURfTUVESUEpICQo
RU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMikgJChFTkFCTEVfRklMVEVSUykgJChFTkFCTEVfRk9O
VF9MT0FEX0VWRU5UUykgJChFTkFCTEVfRlVMTFNDUkVFTl9BUEkpICQoRU5BQkxFX0dBTUVQQUQp
ICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9ISURERU5fUEFHRV9ET01fVElNRVJfVEhS
T1RUTElORykgJChFTkFCTEVfSElHSF9EUElfQ0FOVkFTKSAkKEVOQUJMRV9JQ09OREFUQUJBU0Up
ICQoRU5BQkxFX0lGUkFNRV9TRUFNTEVTUykgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRSkgJChF
TkFCTEVfSU5ESUVfVUkpICQoRU5BQkxFX0lOUFVUX1NQRUVDSCkgJChFTkFCTEVfSU5QVVRfVFlQ
RV9DT0xPUikgJChFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUl9QT1BPVkVSKSAkKEVOQUJMRV9JTlBV
VF9UWVBFX0RBVEUpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVfSU5DT01QTEVURSkgJChF
TkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRUxPQ0FMKSAkKEVOQUJMRV9JTlBVVF9UWVBFX01PTlRI
KSAkKEVOQUJMRV9JTlBVVF9UWVBFX1RJTUUpICQoRU5BQkxFX0lOUFVUX1RZUEVfV0VFSykgJChF
TkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUikgJChFTkFCTEVfTEVHQUNZX0NTU19WRU5ET1JfUFJF
RklYRVMpICQoRU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9MRUdBQ1lfVkVO
RE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MRUdBQ1lfV0VCX0FVRElPKSAkKEVOQUJMRV9MSU5LX1BS
RUZFVENIKSAkKEVOQUJMRV9NQVRITUwpICQoRU5BQkxFX01FRElBX0NPTlRST0xTX1NDUklQVCkg
JChFTkFCTEVfTUVESUFfU09VUkNFKSAkKEVOQUJMRV9NRURJQV9TVEFUSVNUSUNTKSAkKEVOQUJM
RV9NRVRFUl9FTEVNRU5UKSAkKEVOQUJMRV9NSFRNTCkgJChFTkFCTEVfTU9VU0VfQ1VSU09SX1ND
QUxFKSAkKEVOQUJMRV9OQVZJR0FUT1JfQ09OVEVOVF9VVElMUykgJChFTkFCTEVfTk9USUZJQ0FU
SU9OUykgJChFTkFCTEVfUEFHRV9WSVNJQklMSVRZX0FQSSkgJChFTkFCTEVfUERGS0lUX1BMVUdJ
TikgJChFTkFCTEVfUExVR0lOX1BST1hZX0ZPUl9WSURFTykgJChFTkFCTEVfUFJPR1JFU1NfRUxF
TUVOVCkgJChFTkFCTEVfUFJPTUlTRVMpICQoRU5BQkxFX1BST1hJTUlUWV9FVkVOVFMpICQoRU5B
QkxFX1BVQkxJQ19TVUZGSVhfTElTVCkgJChFTkFCTEVfUVVPVEEpICQoRU5BQkxFX1JFUVVFU1Rf
QU5JTUFUSU9OX0ZSQU1FKSAkKEVOQUJMRV9SRVNPTFVUSU9OX01FRElBX1FVRVJZKSAkKEVOQUJM
RV9TQ1JJUFRFRF9TUEVFQ0gpICQoRU5BQkxFX1NIQURPV19ET00pICQoRU5BQkxFX1NIQVJFRF9X
T1JLRVJTKSAkKEVOQUJMRV9TUEVFQ0hfU1lOVEhFU0lTKSAkKEVOQUJMRV9TUUxfREFUQUJBU0Up
ICQoRU5BQkxFX1NVQlBJWEVMX0xBWU9VVCkgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfRk9O
VFMpICQoRU5BQkxFX1RFTVBMQVRFX0VMRU1FTlQpICQoRU5BQkxFX1RFWFRfQVVUT1NJWklORykg
JChFTkFCTEVfVEhSRUFERURfSFRNTF9QQVJTRVIpICQoRU5BQkxFX1RPVUNIX0lDT05fTE9BRElO
RykgJChFTkFCTEVfVVNFUlNFTEVDVF9BTEwpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9WSURF
T19UUkFDSykgJChFTkFCTEVfVklFV19NT0RFX0NTU19NRURJQSkgJChFTkFCTEVfV0VCR0wpICQo
RU5BQkxFX1dFQl9BVURJTykgJChFTkFCTEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxFX1dFQl9USU1J
TkcpICQoRU5BQkxFX1dPUktFUlMpICQoRU5BQkxFX1hIUl9USU1FT1VUKSAkKEVOQUJMRV9YU0xU
KSAkKEVOQUJMRV9GVExfSklUKSAkKEZFQVRVUkVfREVGSU5FU18kKFBMQVRGT1JNX05BTUUpKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9Bc3luY0ZpbGVXcml0ZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vQXN5bmNG
aWxlV3JpdGVyLmgJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmlsZXN5c3RlbS9Bc3luY0ZpbGVXcml0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2MCArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgot
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0g
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2lmbmRlZiBBc3luY0ZpbGVXcml0ZXJfaAotI2RlZmluZSBBc3luY0ZpbGVXcml0ZXJfaAot
Ci0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
LSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1jbGFzcyBCbG9iOwotCi1jbGFzcyBBc3luY0ZpbGVXcml0ZXIgewotcHVibGljOgotICAgIHZp
cnR1YWwgfkFzeW5jRmlsZVdyaXRlcigpIHsgfQotCi0gICAgdmlydHVhbCB2b2lkIHdyaXRlKGxv
bmcgbG9uZyBwb3NpdGlvbiwgQmxvYiogZGF0YSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB0cnVu
Y2F0ZShsb25nIGxvbmcgbGVuZ3RoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGFib3J0KCkgPSAw
OwotICAgIHZpcnR1YWwgYm9vbCB3YWl0Rm9yT3BlcmF0aW9uVG9Db21wbGV0ZSgpIC8vIE5lZWRl
ZCBmb3IgRmlsZVdyaXRlclN5bmMgb25seS4KLSAgICB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICB9Ci19OwotCi19IC8vIG5hbWVzcGFjZQotCi0jZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lT
VEVNKQotCi0jZW5kaWYgLy8gQXN5bmNGaWxlV3JpdGVyX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmlsZXN5c3RlbS9Bc3luY0ZpbGVXcml0ZXJDbGllbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vQXN5bmNGaWxlV3JpdGVyQ2xpZW50
LmgJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3Rl
bS9Bc3luY0ZpbGVXcml0ZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1MyArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
LSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
Ci0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2lmbmRlZiBBc3luY0ZpbGVXcml0ZXJDbGllbnRfaAotI2RlZmluZSBBc3luY0ZpbGVXcml0ZXJD
bGllbnRfaAotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jaW5jbHVkZSAiRmlsZUVycm9y
LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgQXN5bmNGaWxlV3JpdGVyQ2xpZW50
IHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5Bc3luY0ZpbGVXcml0ZXJDbGllbnQoKSB7IH0KLQot
ICAgIHZpcnR1YWwgdm9pZCBkaWRXcml0ZShsb25nIGxvbmcgYnl0ZXMsIGJvb2wgY29tcGxldGUp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkVHJ1bmNhdGUoKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIGRpZEZhaWwoRmlsZUVycm9yOjpFcnJvckNvZGUpID0gMDsKLX07Ci0KLX0gLy8gbmFtZXNw
YWNlCi0KLSNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNlbmRpZiAvLyBBc3luY0Zp
bGVXcml0ZXJDbGllbnRfaApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVt
L0RPTUZpbGVQYXRoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zp
bGVzeXN0ZW0vRE9NRmlsZVBhdGguY3BwCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVBhdGguY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDE1MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0g
KiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0g
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAot
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkRPTUZpbGVQYXRo
LmgiCi0KLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
Ci0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LWNvbnN0IGNoYXIgRE9NRmlsZVBhdGg6OnNlcGFyYXRvciA9ICcvJzsKLWNvbnN0IGNoYXIgRE9N
RmlsZVBhdGg6OnJvb3RbXSA9ICIvIjsKLQotU3RyaW5nIERPTUZpbGVQYXRoOjphcHBlbmQoY29u
c3QgU3RyaW5nJiBiYXNlLCBjb25zdCBTdHJpbmcmIGNvbXBvbmVudHMpCi17Ci0gICAgcmV0dXJu
IGVuc3VyZURpcmVjdG9yeVBhdGgoYmFzZSkgKyBjb21wb25lbnRzOwotfQotCi1TdHJpbmcgRE9N
RmlsZVBhdGg6OmVuc3VyZURpcmVjdG9yeVBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAg
IGlmICghRE9NRmlsZVBhdGg6OmVuZHNXaXRoU2VwYXJhdG9yKHBhdGgpKSB7Ci0gICAgICAgIFN0
cmluZyBuZXdQYXRoID0gcGF0aDsKLSAgICAgICAgbmV3UGF0aC5hcHBlbmQoRE9NRmlsZVBhdGg6
OnNlcGFyYXRvcik7Ci0gICAgICAgIHJldHVybiBuZXdQYXRoOwotICAgIH0KLSAgICByZXR1cm4g
cGF0aDsKLX0KLQotU3RyaW5nIERPTUZpbGVQYXRoOjpnZXROYW1lKGNvbnN0IFN0cmluZyYgcGF0
aCkKLXsKLSAgICBpbnQgaW5kZXggPSBwYXRoLnJldmVyc2VGaW5kKERPTUZpbGVQYXRoOjpzZXBh
cmF0b3IpOwotICAgIGlmIChpbmRleCAhPSAtMSkKLSAgICAgICAgcmV0dXJuIHBhdGguc3Vic3Ry
aW5nKGluZGV4ICsgMSk7Ci0gICAgcmV0dXJuIHBhdGg7Ci19Ci0KLVN0cmluZyBET01GaWxlUGF0
aDo6Z2V0RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICBpbnQgaW5kZXggPSBw
YXRoLnJldmVyc2VGaW5kKERPTUZpbGVQYXRoOjpzZXBhcmF0b3IpOwotICAgIGlmICghaW5kZXgp
Ci0gICAgICAgIHJldHVybiBET01GaWxlUGF0aDo6cm9vdDsKLSAgICBpZiAoaW5kZXggIT0gLTEp
Ci0gICAgICAgIHJldHVybiBwYXRoLnN1YnN0cmluZygwLCBpbmRleCk7Ci0gICAgcmV0dXJuICIu
IjsKLX0KLQotYm9vbCBET01GaWxlUGF0aDo6aXNQYXJlbnRPZihjb25zdCBTdHJpbmcmIHBhcmVu
dCwgY29uc3QgU3RyaW5nJiBtYXlCZUNoaWxkKQotewotICAgIEFTU0VSVChET01GaWxlUGF0aDo6
aXNBYnNvbHV0ZShwYXJlbnQpKTsKLSAgICBBU1NFUlQoRE9NRmlsZVBhdGg6OmlzQWJzb2x1dGUo
bWF5QmVDaGlsZCkpOwotICAgIGlmIChwYXJlbnQgPT0gRE9NRmlsZVBhdGg6OnJvb3QgJiYgbWF5
QmVDaGlsZCAhPSBET01GaWxlUGF0aDo6cm9vdCkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
aWYgKHBhcmVudC5sZW5ndGgoKSA+PSBtYXlCZUNoaWxkLmxlbmd0aCgpIHx8ICFtYXlCZUNoaWxk
LnN0YXJ0c1dpdGgocGFyZW50LCBmYWxzZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBp
ZiAobWF5QmVDaGlsZFtwYXJlbnQubGVuZ3RoKCldICE9IERPTUZpbGVQYXRoOjpzZXBhcmF0b3Ip
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotU3RyaW5nIERP
TUZpbGVQYXRoOjpyZW1vdmVFeHRyYVBhcmVudFJlZmVyZW5jZXMoY29uc3QgU3RyaW5nJiBwYXRo
KQotewotICAgIEFTU0VSVChET01GaWxlUGF0aDo6aXNBYnNvbHV0ZShwYXRoKSk7Ci0gICAgVmVj
dG9yPFN0cmluZz4gY29tcG9uZW50czsKLSAgICBWZWN0b3I8U3RyaW5nPiBjYW5vbmljYWxpemVk
OwotICAgIHBhdGguc3BsaXQoRE9NRmlsZVBhdGg6OnNlcGFyYXRvciwgY29tcG9uZW50cyk7Ci0g
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb21wb25lbnRzLnNpemUoKTsgKytpKSB7Ci0gICAg
ICAgIGlmIChjb21wb25lbnRzW2ldID09ICIuIikKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAg
ICAgICBpZiAoY29tcG9uZW50c1tpXSA9PSAiLi4iKSB7Ci0gICAgICAgICAgICBpZiAoY2Fub25p
Y2FsaXplZC5zaXplKCkgPiAwKQotICAgICAgICAgICAgICAgIGNhbm9uaWNhbGl6ZWQucmVtb3Zl
TGFzdCgpOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLSAgICAgICAgY2Fub25p
Y2FsaXplZC5hcHBlbmQoY29tcG9uZW50c1tpXSk7Ci0gICAgfQotICAgIGlmIChjYW5vbmljYWxp
emVkLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIERPTUZpbGVQYXRoOjpyb290OwotICAgIFN0
cmluZyByZXN1bHQ7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjYW5vbmljYWxpemVkLnNp
emUoKTsgKytpKSB7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoRE9NRmlsZVBhdGg6OnNlcGFyYXRv
cik7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoY2Fub25pY2FsaXplZFtpXSk7Ci0gICAgfQotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci0KLWJvb2wgRE9NRmlsZVBhdGg6OmlzVmFsaWRQYXRoKGNvbnN0
IFN0cmluZyYgcGF0aCkKLXsKLSAgICBpZiAocGF0aC5pc0VtcHR5KCkgfHwgcGF0aCA9PSBET01G
aWxlUGF0aDo6cm9vdCkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAvLyBFbWJlZGRlZCBO
VUxzIGFyZSBub3QgYWxsb3dlZC4KLSAgICBpZiAocGF0aC5maW5kKHN0YXRpY19jYXN0PFVDaGFy
PigwKSkgIT0gV1RGOjpub3RGb3VuZCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8g
V2hpbGUgbm90IFt5ZXRdIHJlc3RyaWN0ZWQgYnkgdGhlIHNwZWMsICdcXCcgY29tcGxpY2F0ZXMg
aW1wbGVtZW50YXRpb24gZm9yIENocm9taXVtLgotICAgIGlmIChwYXRoLmZpbmQoJ1xcJykgIT0g
V1RGOjpub3RGb3VuZCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gVGhpcyBtZXRo
b2QgaXMgb25seSBjYWxsZWQgb24gZnVsbHktZXZhbHVhdGVkIGFic29sdXRlIHBhdGhzLiBBbnkg
c2lnbiBvZiAiLi4iIG9yICIuIiBpcyBsaWtlbHkgYW4gYXR0ZW1wdCB0byBicmVhayBvdXQgb2Yg
dGhlIHNhbmRib3guCi0gICAgVmVjdG9yPFN0cmluZz4gY29tcG9uZW50czsKLSAgICBwYXRoLnNw
bGl0KERPTUZpbGVQYXRoOjpzZXBhcmF0b3IsIGNvbXBvbmVudHMpOwotICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgY29tcG9uZW50cy5zaXplKCk7ICsraSkgewotICAgICAgICBpZiAoY29tcG9u
ZW50c1tpXSA9PSAiLiIpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlmIChj
b21wb25lbnRzW2ldID09ICIuLiIpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQot
ICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIERPTUZpbGVQYXRoOjppc1ZhbGlkTmFtZShjb25z
dCBTdHJpbmcmIG5hbWUpCi17Ci0gICAgaWYgKG5hbWUuaXNFbXB0eSgpKQotICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICAvLyAnLycgaXMgbm90IGFsbG93ZWQgaW4gbmFtZS4KLSAgICBpZiAobmFt
ZS5jb250YWlucygnLycpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIGlzVmFs
aWRQYXRoKG5hbWUpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBF
TkFCTEUoRklMRV9TWVNURU0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0
ZW0vRE9NRmlsZVBhdGguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zp
bGVzeXN0ZW0vRE9NRmlsZVBhdGguaAkocmV2aXNpb24gMTU2NjkxKQorKysgU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVQYXRoLmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
OTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0
OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
Ci0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpZm5kZWYgRE9NRmlsZVBhdGhfaAotI2RlZmluZSBET01GaWxlUGF0aF9oCi0K
LSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgot
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotLy8gRE9NRmlsZVN5c3RlbSBwYXRoIHV0aWxp
dGllcy4gQWxsIG1ldGhvZHMgaW4gdGhpcyBjbGFzcyBhcmUgc3RhdGljLgotY2xhc3MgRE9NRmls
ZVBhdGggewotcHVibGljOgotICAgIHN0YXRpYyBjb25zdCBjaGFyIHNlcGFyYXRvcjsKLSAgICBz
dGF0aWMgY29uc3QgY2hhciByb290W107Ci0KLSAgICAvLyBSZXR1cm5zIHRoZSBuYW1lIHBhcnQg
ZnJvbSB0aGUgZ2l2ZW4gcGF0aC4KLSAgICBzdGF0aWMgU3RyaW5nIGdldE5hbWUoY29uc3QgU3Ry
aW5nJiBwYXRoKTsKLQotICAgIC8vIFJldHVybnMgdGhlIHBhcmVudCBkaXJlY3RvcnkgcGF0aCBv
ZiB0aGUgZ2l2ZW4gcGF0aC4KLSAgICBzdGF0aWMgU3RyaW5nIGdldERpcmVjdG9yeShjb25zdCBT
dHJpbmcmIHBhdGgpOwotCi0gICAgLy8gQ2hlY2tzIGlmIGEgZ2l2ZW4gcGF0aCBpcyBhIHBhcmVu
dCBvZiBtYXlCZUNoaWxkLiBUaGlzIG1ldGhvZCBhc3N1bWVzIGdpdmVuIHBhdGhzIGFyZSBhYnNv
bHV0ZSBhbmQgZG8gbm90IGhhdmUgZXh0cmEgcmVmZXJlbmNlcyB0byBhIHBhcmVudCAoaS5lLiAi
Li4vIikuCi0gICAgc3RhdGljIGJvb2wgaXNQYXJlbnRPZihjb25zdCBTdHJpbmcmIHBhdGgsIGNv
bnN0IFN0cmluZyYgbWF5QmVDaGlsZCk7Ci0KLSAgICAvLyBBcHBlbmRzIHRoZSBzZXBhcmF0b3Ig
YXQgdGhlIGVuZCBvZiB0aGUgcGF0aCBpZiBpdCdzIG5vdCB0aGVyZSBhbHJlYWR5LgotICAgIHN0
YXRpYyBTdHJpbmcgZW5zdXJlRGlyZWN0b3J5UGF0aChjb25zdCBTdHJpbmcmIHBhdGgpOwotCi0g
ICAgLy8gUmV0dXJucyBhIG5ldyBwYXRoIGJ5IGFwcGVuZGluZyBhIHNlcGFyYXRvciBhbmQgdGhl
IHN1cHBsaWVkIHBhdGggY29tcG9uZW50IHRvIHRoZSBwYXRoLgotICAgIHN0YXRpYyBTdHJpbmcg
YXBwZW5kKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjb21wb25lbnQpOwotCi0g
ICAgc3RhdGljIGJvb2wgaXNBYnNvbHV0ZShjb25zdCBTdHJpbmcmIHBhdGgpCi0gICAgewotICAg
ICAgICByZXR1cm4gcGF0aC5zdGFydHNXaXRoKERPTUZpbGVQYXRoOjpyb290KTsKLSAgICB9Ci0K
LSAgICBzdGF0aWMgYm9vbCBlbmRzV2l0aFNlcGFyYXRvcihjb25zdCBTdHJpbmcmIHBhdGgpCi0g
ICAgewotICAgICAgICByZXR1cm4gcGF0aFtwYXRoLmxlbmd0aCgpIC0gMV0gPT0gRE9NRmlsZVBh
dGg6OnNlcGFyYXRvcjsKLSAgICB9Ci0KLSAgICAvLyBFdmFsdWF0ZXMgYWxsICIuLi8iIGFuZCAi
Li8iIHNlZ21lbnRzLiBOb3RlIHRoYXQgIi8uLi8iIGV4cGFuZHMgdG8gIi8iLCBzbyB5b3UgY2Fu
J3QgZXZlciByZWZlciB0byBhbnl0aGluZyBhYm92ZSB0aGUgcm9vdCBkaXJlY3RvcnkuCi0gICAg
c3RhdGljIFN0cmluZyByZW1vdmVFeHRyYVBhcmVudFJlZmVyZW5jZXMoY29uc3QgU3RyaW5nJiBw
YXRoKTsKLQotICAgIC8vIENoZWNrcyBpZiB0aGUgZ2l2ZW4gcGF0aCBmb2xsb3dzIHRoZSBGaWxl
U3lzdGVtIEFQSSBuYW1pbmcgcmVzdHJpY3Rpb25zLgotICAgIHN0YXRpYyBib29sIGlzVmFsaWRQ
YXRoKGNvbnN0IFN0cmluZyYgcGF0aCk7Ci0KLSAgICAvLyBDaGVja3MgaWYgdGhlIGdpdmVuIG5h
bWUgZm9sbG93cyB0aGUgRmlsZVN5c3RlbSBBUEkgbmFtaW5nIHJlc3RyaWN0aW9ucy4KLSAgICBz
dGF0aWMgYm9vbCBpc1ZhbGlkTmFtZShjb25zdCBTdHJpbmcmIG5hbWUpOwotCi1wcml2YXRlOgot
ICAgIERPTUZpbGVQYXRoKCkgeyB9Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNl
bmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNlbmRpZiAvLyBET01GaWxlUGF0aF9oCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3RlbS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVT
eXN0ZW0uY3BwCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zp
bGVzeXN0ZW0vRE9NRmlsZVN5c3RlbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsMjEyICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0g
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRE9NRmlsZVN5c3RlbS5oIgotCi0jaWYg
RU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jaW5jbHVkZSAiQXN5bmNGaWxlU3lzdGVtLmgiCi0jaW5j
bHVkZSAiRE9NRmlsZVBhdGguaCIKLSNpbmNsdWRlICJEaXJlY3RvcnlFbnRyeS5oIgotI2luY2x1
ZGUgIkVycm9yQ2FsbGJhY2suaCIKLSNpbmNsdWRlICJGaWxlLmgiCi0jaW5jbHVkZSAiRmlsZUNh
bGxiYWNrLmgiCi0jaW5jbHVkZSAiRmlsZUVudHJ5LmgiCi0jaW5jbHVkZSAiRmlsZU1ldGFkYXRh
LmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbUNhbGxiYWNrcy5oIgotI2luY2x1ZGUgIkZpbGVXcml0
ZXIuaCIKLSNpbmNsdWRlICJGaWxlV3JpdGVyQmFzZUNhbGxiYWNrLmgiCi0jaW5jbHVkZSAiRmls
ZVdyaXRlckNhbGxiYWNrLmgiCi0jaW5jbHVkZSAiTWV0YWRhdGFDYWxsYmFjay5oIgotI2luY2x1
ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5o
IgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWls
ZGVyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotLy8gc3RhdGljCi1QYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW0+IERPTUZpbGVTeXN0
ZW06OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcm
IG5hbWUsIEZpbGVTeXN0ZW1UeXBlIHR5cGUsIGNvbnN0IFVSTCYgcm9vdFVSTCwgUGFzc093blB0
cjxBc3luY0ZpbGVTeXN0ZW0+IGFzeW5jRmlsZVN5c3RlbSkKLXsKLSAgICBSZWZQdHI8RE9NRmls
ZVN5c3RlbT4gZmlsZVN5c3RlbShhZG9wdFJlZihuZXcgRE9NRmlsZVN5c3RlbShjb250ZXh0LCBu
YW1lLCB0eXBlLCByb290VVJMLCBhc3luY0ZpbGVTeXN0ZW0pKSk7Ci0gICAgZmlsZVN5c3RlbS0+
c3VzcGVuZElmTmVlZGVkKCk7Ci0gICAgcmV0dXJuIGZpbGVTeXN0ZW0ucmVsZWFzZSgpOwotfQot
Ci1QYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW0+IERPTUZpbGVTeXN0ZW06OmNyZWF0ZUlzb2xhdGVk
RmlsZVN5c3RlbShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcm
IGZpbGVzeXN0ZW1JZCkKLXsKLSAgICBpZiAoZmlsZXN5c3RlbUlkLmlzRW1wdHkoKSkKLSAgICAg
ICAgcmV0dXJuIDA7Ci0KLSAgICBTdHJpbmdCdWlsZGVyIGZpbGVzeXN0ZW1OYW1lOwotICAgIGZp
bGVzeXN0ZW1OYW1lLmFwcGVuZChjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpLT5kYXRhYmFzZUlk
ZW50aWZpZXIoKSk7Ci0gICAgZmlsZXN5c3RlbU5hbWUuYXBwZW5kKCI6SXNvbGF0ZWRfIik7Ci0g
ICAgZmlsZXN5c3RlbU5hbWUuYXBwZW5kKGZpbGVzeXN0ZW1JZCk7Ci0KLSAgICAvLyBUaGUgcm9v
dFVSTCBjcmVhdGVkIGhlcmUgaXMgZ29pbmcgdG8gYmUgYXR0YWNoZWQgdG8gZWFjaCBmaWxlc3lz
dGVtIHJlcXVlc3QgYW5kCi0gICAgLy8gaXMgdG8gYmUgdmFsaWRhdGVkIGVhY2ggdGltZSB0aGUg
cmVxdWVzdCBpcyBiZWluZyBoYW5kbGVkLgotICAgIFN0cmluZ0J1aWxkZXIgcm9vdFVSTDsKLSAg
ICByb290VVJMLmFwcGVuZCgiZmlsZXN5c3RlbToiKTsKLSAgICByb290VVJMLmFwcGVuZChjb250
ZXh0LT5zZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygpKTsKLSAgICByb290VVJMLmFwcGVuZCgi
LyIpOwotICAgIHJvb3RVUkwuYXBwZW5kKGlzb2xhdGVkUGF0aFByZWZpeCk7Ci0gICAgcm9vdFVS
TC5hcHBlbmQoIi8iKTsKLSAgICByb290VVJMLmFwcGVuZChmaWxlc3lzdGVtSWQpOwotICAgIHJv
b3RVUkwuYXBwZW5kKCIvIik7Ci0KLSAgICByZXR1cm4gRE9NRmlsZVN5c3RlbTo6Y3JlYXRlKGNv
bnRleHQsIGZpbGVzeXN0ZW1OYW1lLnRvU3RyaW5nKCksIEZpbGVTeXN0ZW1UeXBlSXNvbGF0ZWQs
IFVSTChQYXJzZWRVUkxTdHJpbmcsIHJvb3RVUkwudG9TdHJpbmcoKSksIEFzeW5jRmlsZVN5c3Rl
bTo6Y3JlYXRlKCkpOwotfQotCi1ET01GaWxlU3lzdGVtOjpET01GaWxlU3lzdGVtKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgRmlsZVN5c3RlbVR5
cGUgdHlwZSwgY29uc3QgVVJMJiByb290VVJMLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4g
YXN5bmNGaWxlU3lzdGVtKQotICAgIDogRE9NRmlsZVN5c3RlbUJhc2UoY29udGV4dCwgbmFtZSwg
dHlwZSwgcm9vdFVSTCwgYXN5bmNGaWxlU3lzdGVtKQotICAgICwgQWN0aXZlRE9NT2JqZWN0KGNv
bnRleHQpCi17Ci19Ci0KLVBhc3NSZWZQdHI8RGlyZWN0b3J5RW50cnk+IERPTUZpbGVTeXN0ZW06
OnJvb3QoKQotewotICAgIHJldHVybiBEaXJlY3RvcnlFbnRyeTo6Y3JlYXRlKHRoaXMsIERPTUZp
bGVQYXRoOjpyb290KTsKLX0KLQotdm9pZCBET01GaWxlU3lzdGVtOjpzdG9wKCkKLXsKLSAgICBt
X2FzeW5jRmlsZVN5c3RlbS0+c3RvcCgpOwotfQotCi1ib29sIERPTUZpbGVTeXN0ZW06Omhhc1Bl
bmRpbmdBY3Rpdml0eSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fYXN5bmNGaWxlU3lzdGVtLT5o
YXNQZW5kaW5nQWN0aXZpdHkoKTsKLX0KLQotdm9pZCBET01GaWxlU3lzdGVtOjpjb250ZXh0RGVz
dHJveWVkKCkKLXsKLSAgICBtX2FzeW5jRmlsZVN5c3RlbS0+c3RvcCgpOwotICAgIEFjdGl2ZURP
TU9iamVjdDo6Y29udGV4dERlc3Ryb3llZCgpOwotfQotCi1uYW1lc3BhY2UgewotCi1jbGFzcyBD
b252ZXJ0VG9GaWxlV3JpdGVyQ2FsbGJhY2sgOiBwdWJsaWMgRmlsZVdyaXRlckJhc2VDYWxsYmFj
ayB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8Q29udmVydFRvRmlsZVdyaXRlckNh
bGxiYWNrPiBjcmVhdGUoUGFzc1JlZlB0cjxGaWxlV3JpdGVyQ2FsbGJhY2s+IGNhbGxiYWNrKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDb252ZXJ0VG9GaWxlV3JpdGVyQ2Fs
bGJhY2soY2FsbGJhY2spKTsKLSAgICB9Ci0KLSAgICBib29sIGhhbmRsZUV2ZW50KEZpbGVXcml0
ZXJCYXNlKiBmaWxlV3JpdGVyQmFzZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2NhbGxiYWNr
LT5oYW5kbGVFdmVudChzdGF0aWNfY2FzdDxGaWxlV3JpdGVyKj4oZmlsZVdyaXRlckJhc2UpKTsK
LSAgICB9Ci1wcml2YXRlOgotICAgIENvbnZlcnRUb0ZpbGVXcml0ZXJDYWxsYmFjayhQYXNzUmVm
UHRyPEZpbGVXcml0ZXJDYWxsYmFjaz4gY2FsbGJhY2spCi0gICAgICAgIDogbV9jYWxsYmFjayhj
YWxsYmFjaykKLSAgICB7Ci0gICAgfQotICAgIFJlZlB0cjxGaWxlV3JpdGVyQ2FsbGJhY2s+IG1f
Y2FsbGJhY2s7Ci19OwotCi19Ci0KLXZvaWQgRE9NRmlsZVN5c3RlbTo6Y3JlYXRlV3JpdGVyKGNv
bnN0IEZpbGVFbnRyeSogZmlsZUVudHJ5LCBQYXNzUmVmUHRyPEZpbGVXcml0ZXJDYWxsYmFjaz4g
c3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2sp
Ci17Ci0gICAgQVNTRVJUKGZpbGVFbnRyeSk7Ci0KLSAgICBSZWZQdHI8RmlsZVdyaXRlcj4gZmls
ZVdyaXRlciA9IEZpbGVXcml0ZXI6OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwot
ICAgIFJlZlB0cjxGaWxlV3JpdGVyQmFzZUNhbGxiYWNrPiBjb252ZXJzaW9uQ2FsbGJhY2sgPSBD
b252ZXJ0VG9GaWxlV3JpdGVyQ2FsbGJhY2s6OmNyZWF0ZShzdWNjZXNzQ2FsbGJhY2spOwotICAg
IE93blB0cjxGaWxlV3JpdGVyQmFzZUNhbGxiYWNrcz4gY2FsbGJhY2tzID0gRmlsZVdyaXRlckJh
c2VDYWxsYmFja3M6OmNyZWF0ZShmaWxlV3JpdGVyLCBjb252ZXJzaW9uQ2FsbGJhY2ssIGVycm9y
Q2FsbGJhY2spOwotICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5jcmVhdGVXcml0ZXIoZmlsZVdyaXRl
ci5nZXQoKSwgY3JlYXRlRmlsZVN5c3RlbVVSTChmaWxlRW50cnkpLCBjYWxsYmFja3MucmVsZWFz
ZSgpKTsKLX0KLQotbmFtZXNwYWNlIHsKLQotY2xhc3MgU25hcHNob3RGaWxlQ2FsbGJhY2sgOiBw
dWJsaWMgRmlsZVN5c3RlbUNhbGxiYWNrc0Jhc2UgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNz
T3duUHRyPFNuYXBzaG90RmlsZUNhbGxiYWNrPiBjcmVhdGUoUGFzc1JlZlB0cjxET01GaWxlU3lz
dGVtPiBmaWxlc3lzdGVtLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFVSTCYgdXJsLCBQYXNz
UmVmUHRyPEZpbGVDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2Fs
bGJhY2s+IGVycm9yQ2FsbGJhY2spCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3
IFNuYXBzaG90RmlsZUNhbGxiYWNrKGZpbGVzeXN0ZW0sIG5hbWUsIHVybCwgc3VjY2Vzc0NhbGxi
YWNrLCBlcnJvckNhbGxiYWNrKSk7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0
ZVNuYXBzaG90RmlsZShjb25zdCBGaWxlTWV0YWRhdGEmIG1ldGFkYXRhLCBQYXNzUmVmUHRyPEJs
b2JEYXRhSGFuZGxlPiAvKiBzbmFwc2hvdCAqLykKLSAgICB7Ci0gICAgICAgIEFTU0VSVCghbWV0
YWRhdGEucGxhdGZvcm1QYXRoLmlzRW1wdHkoKSk7Ci0gICAgICAgIGlmICghbV9zdWNjZXNzQ2Fs
bGJhY2spCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgLy8gV2UgY2FuJ3QgZGlyZWN0
bHkgdXNlIHRoZSBzbmFwc2hvdCBibG9iIGRhdGEgaGFuZGxlIGJlY2F1c2UgdGhlIGNvbnRlbnQg
dHlwZSBvbiBpdCBoYXNuJ3QgYmVlbiBzZXQuCi0gICAgICAgIC8vIFRoZSB8c25hcHNob3R8IHBh
cmFtIGlzIGhlcmUgdG8gcHJvdmlkZSBhIGEgY2hhaW4gb2YgY3VzdG9keSB0aHJ1IHRocmVhZCBi
cmlkZ2luZyB0aGF0IGlzIGhlbGQgb250byB1bnRpbAotICAgICAgICAvLyAqYWZ0ZXIqIHdlJ3Zl
IGNvaW5lZCBhIEZpbGUgd2l0aCBhIG5ldyBoYW5kbGUgdGhhdCBoYXMgdGhlIGNvcnJlY3QgdHlw
ZSBzZXQgb24gaXQuIFRoaXMgYWxsb3dzIHRoZQotICAgICAgICAvLyBibG9iIHN0b3JhZ2Ugc3lz
dGVtIHRvIHRyYWNrIHdoZW4gYSB0ZW1wIGZpbGUgY2FuIGFuZCBjYW4ndCBiZSBzYWZlbHkgZGVs
ZXRlZC4KLQotICAgICAgICAvLyBGb3IgcmVndWxhciBmaWxlc3lzdGVtIHR5cGVzICh0ZW1wb3Jh
cnkgb3IgcGVyc2lzdGVudCksIHdlIHNob3VsZCBub3QgY2FjaGUgZmlsZSBtZXRhZGF0YSBhcyBp
dCBjb3VsZCBjaGFuZ2UgRmlsZSBzZW1hbnRpY3MuCi0gICAgICAgIC8vIEZvciBvdGhlciBmaWxl
c3lzdGVtIHR5cGVzICh3aGljaCBjb3VsZCBiZSBwbGF0Zm9ybS1zcGVjaWZpYyBvbmVzKSwgdGhl
cmUncyBhIGNoYW5jZSB0aGF0IHRoZSBmaWxlcyBhcmUgb24gcmVtb3RlIGZpbGVzeXN0ZW0uIElm
IHRoZSBwb3J0IGhhcyByZXR1cm5lZCBtZXRhZGF0YSBqdXN0IHBhc3MgaXQgdG8gRmlsZSBjb25z
dHJ1Y3RvciAoc28gd2UgbWF5IGNhY2hlIHRoZSBtZXRhZGF0YSkuCi0gICAgICAgIC8vIEZJWE1F
OiBXZSBzaG91bGQgdXNlIHRoZSBzbmFwc2hvdCBtZXRhZGF0YSBmb3IgYWxsIGZpbGVzLgotICAg
ICAgICAvLyBodHRwczovL3d3dy53My5vcmcvQnVncy9QdWJsaWMvc2hvd19idWcuY2dpP2lkPTE3
NzQ2Ci0gICAgICAgIGlmIChtX2ZpbGVzeXN0ZW0tPnR5cGUoKSA9PSBGaWxlU3lzdGVtVHlwZVRl
bXBvcmFyeSB8fCBtX2ZpbGVzeXN0ZW0tPnR5cGUoKSA9PSBGaWxlU3lzdGVtVHlwZVBlcnNpc3Rl
bnQpIHsKLSAgICAgICAgICAgIG1fc3VjY2Vzc0NhbGxiYWNrLT5oYW5kbGVFdmVudChGaWxlOjpj
cmVhdGVXaXRoTmFtZShtZXRhZGF0YS5wbGF0Zm9ybVBhdGgsIG1fbmFtZSkuZ2V0KCkpOwotICAg
ICAgICB9IGVsc2UgaWYgKCFtZXRhZGF0YS5wbGF0Zm9ybVBhdGguaXNFbXB0eSgpKSB7Ci0gICAg
ICAgICAgICAvLyBJZiB0aGUgcGxhdGZvcm1QYXRoIGluIHRoZSByZXR1cm5lZCBtZXRhZGF0YSBp
cyBnaXZlbiwgd2UgY3JlYXRlIGEgRmlsZSBvYmplY3QgZm9yIHRoZSBwYXRoLgotICAgICAgICAg
ICAgbV9zdWNjZXNzQ2FsbGJhY2stPmhhbmRsZUV2ZW50KEZpbGU6OmNyZWF0ZUZvckZpbGVTeXN0
ZW1GaWxlKG1fbmFtZSwgbWV0YWRhdGEpLmdldCgpKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgIC8vIE90aGVyd2lzZSBjcmVhdGUgYSBGaWxlIGZyb20gdGhlIEZpbGVTeXN0ZW0gVVJM
LgotICAgICAgICAgICAgbV9zdWNjZXNzQ2FsbGJhY2stPmhhbmRsZUV2ZW50KEZpbGU6OmNyZWF0
ZUZvckZpbGVTeXN0ZW1GaWxlKG1fdXJsLCBtZXRhZGF0YSkuZ2V0KCkpOwotICAgICAgICB9Ci0K
LSAgICAgICAgbV9zdWNjZXNzQ2FsbGJhY2sucmVsZWFzZSgpOwotICAgIH0KLQotcHJpdmF0ZToK
LSAgICBTbmFwc2hvdEZpbGVDYWxsYmFjayhQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW0+IGZpbGVz
eXN0ZW0sIGNvbnN0IFN0cmluZyYgbmFtZSwgIGNvbnN0IFVSTCYgdXJsLCBQYXNzUmVmUHRyPEZp
bGVDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVy
cm9yQ2FsbGJhY2spCi0gICAgICAgIDogRmlsZVN5c3RlbUNhbGxiYWNrc0Jhc2UoZXJyb3JDYWxs
YmFjaykKLSAgICAgICAgLCBtX2ZpbGVzeXN0ZW0oZmlsZXN5c3RlbSkKLSAgICAgICAgLCBtX25h
bWUobmFtZSkKLSAgICAgICAgLCBtX3VybCh1cmwpCi0gICAgICAgICwgbV9zdWNjZXNzQ2FsbGJh
Y2soc3VjY2Vzc0NhbGxiYWNrKQotICAgIHsKLSAgICB9Ci0KLSAgICBSZWZQdHI8RE9NRmlsZVN5
c3RlbT4gbV9maWxlc3lzdGVtOwotICAgIFN0cmluZyBtX25hbWU7Ci0gICAgVVJMIG1fdXJsOwot
ICAgIFJlZlB0cjxGaWxlQ2FsbGJhY2s+IG1fc3VjY2Vzc0NhbGxiYWNrOwotfTsKLQotfSAvLyBu
YW1lc3BhY2UKLQotdm9pZCBET01GaWxlU3lzdGVtOjpjcmVhdGVGaWxlKGNvbnN0IEZpbGVFbnRy
eSogZmlsZUVudHJ5LCBQYXNzUmVmUHRyPEZpbGVDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQ
YXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCi17Ci0gICAgVVJMIGZpbGVT
eXN0ZW1VUkwgPSBjcmVhdGVGaWxlU3lzdGVtVVJMKGZpbGVFbnRyeSk7Ci0gICAgbV9hc3luY0Zp
bGVTeXN0ZW0tPmNyZWF0ZVNuYXBzaG90RmlsZUFuZFJlYWRNZXRhZGF0YShmaWxlU3lzdGVtVVJM
LCBTbmFwc2hvdEZpbGVDYWxsYmFjazo6Y3JlYXRlKHRoaXMsIGZpbGVFbnRyeS0+bmFtZSgpLCBm
aWxlU3lzdGVtVVJMLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spKTsKLX0KLQotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW0uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3Rl
bS5oCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0
ZW0vRE9NRmlsZVN5c3RlbS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDExNCArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRp
c3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
LSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRl
ZiBET01GaWxlU3lzdGVtX2gKLSNkZWZpbmUgRE9NRmlsZVN5c3RlbV9oCi0KLSNpZiBFTkFCTEUo
RklMRV9TWVNURU0pCi0KLSNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKLSNpbmNsdWRlICJE
T01GaWxlU3lzdGVtQmFzZS5oIgotI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIK
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBEaXJlY3RvcnlFbnRyeTsKLWNsYXNzIEZp
bGU7Ci1jbGFzcyBGaWxlQ2FsbGJhY2s7Ci1jbGFzcyBGaWxlRW50cnk7Ci1jbGFzcyBGaWxlV3Jp
dGVyQ2FsbGJhY2s7Ci0KLWNsYXNzIERPTUZpbGVTeXN0ZW0gOiBwdWJsaWMgRE9NRmlsZVN5c3Rl
bUJhc2UsIHB1YmxpYyBBY3RpdmVET01PYmplY3QgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPERPTUZpbGVTeXN0ZW0+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29u
c3QgU3RyaW5nJiBuYW1lLCBGaWxlU3lzdGVtVHlwZSwgY29uc3QgVVJMJiByb290VVJMLCBQYXNz
T3duUHRyPEFzeW5jRmlsZVN5c3RlbT4pOwotCi0gICAgLy8gQ3JlYXRlcyBhIG5ldyBpc29sYXRl
ZCBmaWxlIHN5c3RlbSBmb3IgdGhlIGdpdmVuIGZpbGVzeXN0ZW1JZC4KLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxET01GaWxlU3lzdGVtPiBjcmVhdGVJc29sYXRlZEZpbGVTeXN0ZW0oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgZmlsZXN5c3RlbUlkKTsKLQotICAgIFBhc3NS
ZWZQdHI8RGlyZWN0b3J5RW50cnk+IHJvb3QoKTsKLQotICAgIC8vIEFjdGl2ZURPTU9iamVjdCBt
ZXRob2RzLgotICAgIHZpcnR1YWwgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBPVkVS
UklERTsKLQotICAgIHZvaWQgY3JlYXRlV3JpdGVyKGNvbnN0IEZpbGVFbnRyeSosIFBhc3NSZWZQ
dHI8RmlsZVdyaXRlckNhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPik7Ci0gICAg
dm9pZCBjcmVhdGVGaWxlKGNvbnN0IEZpbGVFbnRyeSosIFBhc3NSZWZQdHI8RmlsZUNhbGxiYWNr
PiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPik7Ci0KLSAgICAvLyBTY2hlZHVsZSBhIGNhbGxi
YWNrLiBUaGlzIHNob3VsZCBub3QgY3Jvc3MgdGhyZWFkcyAoc2hvdWxkIGJlIGNhbGxlZCBvbiB0
aGUgc2FtZSBjb250ZXh0IHRocmVhZCkuCi0gICAgLy8gRklYTUU6IG1vdmUgdGhpcyB0byBhIG1v
cmUgZ2VuZXJpYyBwbGFjZS4KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ0IsIHR5cGVuYW1lIENC
QXJnPgotICAgIHN0YXRpYyB2b2lkIHNjaGVkdWxlQ2FsbGJhY2soU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIFBhc3NSZWZQdHI8Q0I+LCBQYXNzUmVmUHRyPENCQXJnPik7Ci0KLSAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgQ0IsIHR5cGVuYW1lIENCQXJnPgotICAgIHZvaWQgc2NoZWR1bGVDYWxsYmFj
ayhQYXNzUmVmUHRyPENCPiBjYWxsYmFjaywgUGFzc1JlZlB0cjxDQkFyZz4gY2FsbGJhY2tBcmcp
Ci0gICAgewotICAgICAgICBzY2hlZHVsZUNhbGxiYWNrKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSwgY2FsbGJhY2ssIGNhbGxiYWNrQXJnKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgRE9NRmls
ZVN5c3RlbShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBGaWxl
U3lzdGVtVHlwZSwgY29uc3QgVVJMJiByb290VVJMLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3Rl
bT4pOwotCi0gICAgLy8gQWN0aXZlRE9NT2JqZWN0IG1ldGhvZHMuCi0gICAgdmlydHVhbCB2b2lk
IHN0b3AoKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgY29udGV4dERlc3Ryb3llZCgpIE9W
RVJSSURFOwotCi0gICAgLy8gQSBoZWxwZXIgdGVtcGxhdGUgdG8gc2NoZWR1bGUgYSBjYWxsYmFj
ayB0YXNrLgotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDQiwgdHlwZW5hbWUgQ0JBcmc+Ci0gICAg
Y2xhc3MgRGlzcGF0Y2hDYWxsYmFja1Rhc2sgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6VGFzayB7Ci0gICAgcHVibGljOgotICAgICAgICBEaXNwYXRjaENhbGxiYWNrVGFzayhQYXNz
UmVmUHRyPENCPiBjYWxsYmFjaywgUGFzc1JlZlB0cjxDQkFyZz4gYXJnKQotICAgICAgICAgICAg
OiBtX2NhbGxiYWNrKGNhbGxiYWNrKQotICAgICAgICAgICAgLCBtX2NhbGxiYWNrQXJnKGFyZykK
LSAgICAgICAgewotICAgICAgICB9Ci0KLSAgICAgICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNr
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKQotICAgICAgICB7Ci0gICAgICAgICAgICBtX2NhbGxi
YWNrLT5oYW5kbGVFdmVudChtX2NhbGxiYWNrQXJnLmdldCgpKTsKLSAgICAgICAgfQotCi0gICAg
cHJpdmF0ZToKLSAgICAgICAgUmVmUHRyPENCPiBtX2NhbGxiYWNrOwotICAgICAgICBSZWZQdHI8
Q0JBcmc+IG1fY2FsbGJhY2tBcmc7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBD
QiwgdHlwZW5hbWUgQ0JBcmc+Ci12b2lkIERPTUZpbGVTeXN0ZW06OnNjaGVkdWxlQ2FsbGJhY2so
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgUGFzc1JlZlB0
cjxDQj4gY2FsbGJhY2ssIFBhc3NSZWZQdHI8Q0JBcmc+IGFyZykKLXsKLSAgICBBU1NFUlQoc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC0+aXNDb250ZXh0VGhyZWFkKCkpOwotICAgIGlmIChjYWxsYmFj
aykKLSAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soYWRvcHRQdHIobmV3
IERpc3BhdGNoQ2FsbGJhY2tUYXNrPENCLCBDQkFyZz4oY2FsbGJhY2ssIGFyZykpKTsKLX0KLQot
fSAvLyBuYW1lc3BhY2UKLQotI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2VuZGlm
IC8vIERPTUZpbGVTeXN0ZW1faApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lz
dGVtL0RPTUZpbGVTeXN0ZW0uaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtLmlkbAkocmV2aXNpb24gMTU2NjkxKQorKysgU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW0uaWRsCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDQwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
LSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAotICAgIENvbmRp
dGlvbmFsPUZJTEVfU1lTVEVNLAotICAgIEFjdGl2ZURPTU9iamVjdCwKLSAgICBKU05vU3RhdGlj
VGFibGVzCi1dIGludGVyZmFjZSBET01GaWxlU3lzdGVtIHsKLSAgICByZWFkb25seSBhdHRyaWJ1
dGUgRE9NU3RyaW5nIG5hbWU7Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIERpcmVjdG9yeUVudHJ5
IHJvb3Q7Ci19OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZp
bGVTeXN0ZW1CYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zp
bGVzeXN0ZW0vRE9NRmlsZVN5c3RlbUJhc2UuY3BwCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3RlbUJhc2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDI2MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
LSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IkRPTUZpbGVTeXN0ZW1CYXNlLmgiCi0KLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNpbmNs
dWRlICJET01GaWxlUGF0aC5oIgotI2luY2x1ZGUgIkRpcmVjdG9yeUVudHJ5LmgiCi0jaW5jbHVk
ZSAiRGlyZWN0b3J5UmVhZGVyQmFzZS5oIgotI2luY2x1ZGUgIkVudHJpZXNDYWxsYmFjay5oIgot
I2luY2x1ZGUgIkVudHJ5QXJyYXkuaCIKLSNpbmNsdWRlICJFbnRyeUJhc2UuaCIKLSNpbmNsdWRl
ICJFbnRyeUNhbGxiYWNrLmgiCi0jaW5jbHVkZSAiRXJyb3JDYWxsYmFjay5oIgotI2luY2x1ZGUg
IkZpbGVFcnJvci5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW1DYWxsYmFja3MuaCIKLSNpbmNsdWRl
ICJNZXRhZGF0YUNhbGxiYWNrLmgiCi0jaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5o
IgotI2luY2x1ZGUgIlZvaWRDYWxsYmFjay5oIgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1jb25zdCBjaGFyIERPTUZpbGVTeXN0ZW1CYXNlOjpwZXJz
aXN0ZW50UGF0aFByZWZpeFtdID0gInBlcnNpc3RlbnQiOwotY29uc3Qgc2l6ZV90IERPTUZpbGVT
eXN0ZW1CYXNlOjpwZXJzaXN0ZW50UGF0aFByZWZpeExlbmd0aCA9IHNpemVvZihET01GaWxlU3lz
dGVtQmFzZTo6cGVyc2lzdGVudFBhdGhQcmVmaXgpIC0gMTsKLWNvbnN0IGNoYXIgRE9NRmlsZVN5
c3RlbUJhc2U6OnRlbXBvcmFyeVBhdGhQcmVmaXhbXSA9ICJ0ZW1wb3JhcnkiOwotY29uc3Qgc2l6
ZV90IERPTUZpbGVTeXN0ZW1CYXNlOjp0ZW1wb3JhcnlQYXRoUHJlZml4TGVuZ3RoID0gc2l6ZW9m
KERPTUZpbGVTeXN0ZW1CYXNlOjp0ZW1wb3JhcnlQYXRoUHJlZml4KSAtIDE7Ci1jb25zdCBjaGFy
IERPTUZpbGVTeXN0ZW1CYXNlOjppc29sYXRlZFBhdGhQcmVmaXhbXSA9ICJpc29sYXRlZCI7Ci1j
b25zdCBzaXplX3QgRE9NRmlsZVN5c3RlbUJhc2U6Omlzb2xhdGVkUGF0aFByZWZpeExlbmd0aCA9
IHNpemVvZihET01GaWxlU3lzdGVtQmFzZTo6aXNvbGF0ZWRQYXRoUHJlZml4KSAtIDE7Ci0KLURP
TUZpbGVTeXN0ZW1CYXNlOjpET01GaWxlU3lzdGVtQmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIEZpbGVTeXN0ZW1UeXBlIHR5cGUsIGNvbnN0
IFVSTCYgcm9vdFVSTCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+IGFzeW5jRmlsZVN5c3Rl
bSkKLSAgICA6IG1fY29udGV4dChjb250ZXh0KQotICAgICwgbV9uYW1lKG5hbWUpCi0gICAgLCBt
X3R5cGUodHlwZSkKLSAgICAsIG1fZmlsZXN5c3RlbVJvb3RVUkwocm9vdFVSTCkKLSAgICAsIG1f
Y2xvbmFibGUoZmFsc2UpCi0gICAgLCBtX2FzeW5jRmlsZVN5c3RlbShhc3luY0ZpbGVTeXN0ZW0p
Ci17Ci19Ci0KLURPTUZpbGVTeXN0ZW1CYXNlOjp+RE9NRmlsZVN5c3RlbUJhc2UoKQotewotfQot
Ci0jaWYgIVBMQVRGT1JNKEJMQUNLQkVSUlkpCi0vLyBzdGF0aWMKLWJvb2wgRE9NRmlsZVN5c3Rl
bUJhc2U6OmlzVmFsaWRUeXBlKEZpbGVTeXN0ZW1UeXBlIHR5cGUpCi17Ci0gICAgcmV0dXJuIHR5
cGUgPT0gRmlsZVN5c3RlbVR5cGVUZW1wb3JhcnkgfHwgdHlwZSA9PSBGaWxlU3lzdGVtVHlwZVBl
cnNpc3RlbnQ7Ci19Ci0KLS8vIHN0YXRpYwotYm9vbCBET01GaWxlU3lzdGVtQmFzZTo6Y3JhY2tG
aWxlU3lzdGVtVVJMKGNvbnN0IFVSTCYgdXJsLCBGaWxlU3lzdGVtVHlwZSYgdHlwZSwgU3RyaW5n
JiBmaWxlUGF0aCkKLXsKLSAgICBpZiAoIXVybC5wcm90b2NvbElzKCJmaWxlc3lzdGVtIikpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmICghdXJsLmlubmVyVVJMKCkpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLQotICAgIFN0cmluZyB0eXBlU3RyaW5nID0gdXJsLmlubmVyVVJMKCkt
PnBhdGgoKS5zdWJzdHJpbmcoMSk7Ci0gICAgaWYgKHR5cGVTdHJpbmcgPT0gdGVtcG9yYXJ5UGF0
aFByZWZpeCkKLSAgICAgICAgdHlwZSA9IEZpbGVTeXN0ZW1UeXBlVGVtcG9yYXJ5OwotICAgIGVs
c2UgaWYgKHR5cGVTdHJpbmcgPT0gcGVyc2lzdGVudFBhdGhQcmVmaXgpCi0gICAgICAgIHR5cGUg
PSBGaWxlU3lzdGVtVHlwZVBlcnNpc3RlbnQ7Ci0gICAgZWxzZQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICBmaWxlUGF0aCA9IGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcyh1cmwucGF0aCgp
KTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBET01GaWxlU3lzdGVtQmFzZTo6c3VwcG9y
dHNUb1VSTCgpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKGlzVmFsaWRUeXBlKG1fdHlwZSkpOwotICAg
IHJldHVybiB0cnVlOwotfQotCi1VUkwgRE9NRmlsZVN5c3RlbUJhc2U6OmNyZWF0ZUZpbGVTeXN0
ZW1VUkwoY29uc3QgU3RyaW5nJiBmdWxsUGF0aCkgY29uc3QKLXsKLSAgICBBU1NFUlQoRE9NRmls
ZVBhdGg6OmlzQWJzb2x1dGUoZnVsbFBhdGgpKTsKLSAgICBVUkwgdXJsID0gbV9maWxlc3lzdGVt
Um9vdFVSTDsKLSAgICAvLyBSZW1vdmUgdGhlIGV4dHJhIGxlYWRpbmcgc2xhc2guCi0gICAgdXJs
LnNldFBhdGgodXJsLnBhdGgoKSArIGVuY29kZVdpdGhVUkxFc2NhcGVTZXF1ZW5jZXMoZnVsbFBh
dGguc3Vic3RyaW5nKDEpKSk7Ci0gICAgcmV0dXJuIHVybDsKLX0KLSNlbmRpZgotCi1TZWN1cml0
eU9yaWdpbiogRE9NRmlsZVN5c3RlbUJhc2U6OnNlY3VyaXR5T3JpZ2luKCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gbV9jb250ZXh0LT5zZWN1cml0eU9yaWdpbigpOwotfQotCi1VUkwgRE9NRmlsZVN5
c3RlbUJhc2U6OmNyZWF0ZUZpbGVTeXN0ZW1VUkwoY29uc3QgRW50cnlCYXNlKiBlbnRyeSkgY29u
c3QKLXsKLSAgICByZXR1cm4gY3JlYXRlRmlsZVN5c3RlbVVSTChlbnRyeS0+ZnVsbFBhdGgoKSk7
Ci19Ci0KLWJvb2wgRE9NRmlsZVN5c3RlbUJhc2U6OmdldE1ldGFkYXRhKGNvbnN0IEVudHJ5QmFz
ZSogZW50cnksIFBhc3NSZWZQdHI8TWV0YWRhdGFDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQ
YXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCi17Ci0gICAgbV9hc3luY0Zp
bGVTeXN0ZW0tPnJlYWRNZXRhZGF0YShjcmVhdGVGaWxlU3lzdGVtVVJMKGVudHJ5KSwgTWV0YWRh
dGFDYWxsYmFja3M6OmNyZWF0ZShzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spKTsKLSAg
ICByZXR1cm4gdHJ1ZTsKLX0KLQotc3RhdGljIGJvb2wgdmVyaWZ5QW5kR2V0RGVzdGluYXRpb25Q
YXRoRm9yQ29weU9yTW92ZShjb25zdCBFbnRyeUJhc2UqIHNvdXJjZSwgRW50cnlCYXNlKiBwYXJl
bnQsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSwgU3RyaW5nJiBkZXN0aW5hdGlvblBhdGgpCi17Ci0g
ICAgQVNTRVJUKHNvdXJjZSk7Ci0KLSAgICBpZiAoIXBhcmVudCB8fCAhcGFyZW50LT5pc0RpcmVj
dG9yeSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoIW5ld05hbWUuaXNFbXB0
eSgpICYmICFET01GaWxlUGF0aDo6aXNWYWxpZE5hbWUobmV3TmFtZSkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIGNvbnN0IGJvb2wgaXNTYW1lRmlsZVN5c3RlbSA9ICgqc291cmNlLT5m
aWxlc3lzdGVtKCkgPT0gKnBhcmVudC0+ZmlsZXN5c3RlbSgpKTsKLQotICAgIC8vIEl0IGlzIGFu
IGVycm9yIHRvIHRyeSB0byBjb3B5IG9yIG1vdmUgYW4gZW50cnkgaW5zaWRlIGl0c2VsZiBhdCBh
bnkgZGVwdGggaWYgaXQgaXMgYSBkaXJlY3RvcnkuCi0gICAgaWYgKHNvdXJjZS0+aXNEaXJlY3Rv
cnkoKSAmJiBpc1NhbWVGaWxlU3lzdGVtICYmIERPTUZpbGVQYXRoOjppc1BhcmVudE9mKHNvdXJj
ZS0+ZnVsbFBhdGgoKSwgcGFyZW50LT5mdWxsUGF0aCgpKSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgLy8gSXQgaXMgYW4gZXJyb3IgdG8gY29weSBvciBtb3ZlIGFuIGVudHJ5IGludG8g
aXRzIHBhcmVudCBpZiBhIG5hbWUgZGlmZmVyZW50IGZyb20gaXRzIGN1cnJlbnQgb25lIGlzbid0
IHByb3ZpZGVkLgotICAgIGlmIChpc1NhbWVGaWxlU3lzdGVtICYmIChuZXdOYW1lLmlzRW1wdHko
KSB8fCBzb3VyY2UtPm5hbWUoKSA9PSBuZXdOYW1lKSAmJiBET01GaWxlUGF0aDo6Z2V0RGlyZWN0
b3J5KHNvdXJjZS0+ZnVsbFBhdGgoKSkgPT0gcGFyZW50LT5mdWxsUGF0aCgpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICBkZXN0aW5hdGlvblBhdGggPSBwYXJlbnQtPmZ1bGxQYXRoKCk7
Ci0gICAgaWYgKCFuZXdOYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgZGVzdGluYXRpb25QYXRoID0g
RE9NRmlsZVBhdGg6OmFwcGVuZChkZXN0aW5hdGlvblBhdGgsIG5ld05hbWUpOwotICAgIGVsc2UK
LSAgICAgICAgZGVzdGluYXRpb25QYXRoID0gRE9NRmlsZVBhdGg6OmFwcGVuZChkZXN0aW5hdGlv
blBhdGgsIHNvdXJjZS0+bmFtZSgpKTsKLQotICAgIHJldHVybiB0cnVlOwotfQotCi1zdGF0aWMg
Ym9vbCBwYXRoVG9BYnNvbHV0ZVBhdGgoRmlsZVN5c3RlbVR5cGUgdHlwZSwgY29uc3QgRW50cnlC
YXNlKiBiYXNlLCBTdHJpbmcgcGF0aCwgU3RyaW5nJiBhYnNvbHV0ZVBhdGgpCi17Ci0gICAgQVNT
RVJUKGJhc2UpOwotCi0gICAgaWYgKCFET01GaWxlUGF0aDo6aXNBYnNvbHV0ZShwYXRoKSkKLSAg
ICAgICAgcGF0aCA9IERPTUZpbGVQYXRoOjphcHBlbmQoYmFzZS0+ZnVsbFBhdGgoKSwgcGF0aCk7
Ci0gICAgYWJzb2x1dGVQYXRoID0gRE9NRmlsZVBhdGg6OnJlbW92ZUV4dHJhUGFyZW50UmVmZXJl
bmNlcyhwYXRoKTsKLQotICAgIGlmICgodHlwZSA9PSBGaWxlU3lzdGVtVHlwZVRlbXBvcmFyeSB8
fCB0eXBlID09IEZpbGVTeXN0ZW1UeXBlUGVyc2lzdGVudCkgJiYgIURPTUZpbGVQYXRoOjppc1Zh
bGlkUGF0aChhYnNvbHV0ZVBhdGgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJu
IHRydWU7Ci19Ci0KLWJvb2wgRE9NRmlsZVN5c3RlbUJhc2U6Om1vdmUoY29uc3QgRW50cnlCYXNl
KiBzb3VyY2UsIEVudHJ5QmFzZSogcGFyZW50LCBjb25zdCBTdHJpbmcmIG5ld05hbWUsIFBhc3NS
ZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2Fs
bGJhY2s+IGVycm9yQ2FsbGJhY2spCi17Ci0gICAgU3RyaW5nIGRlc3RpbmF0aW9uUGF0aDsKLSAg
ICBpZiAoIXZlcmlmeUFuZEdldERlc3RpbmF0aW9uUGF0aEZvckNvcHlPck1vdmUoc291cmNlLCBw
YXJlbnQsIG5ld05hbWUsIGRlc3RpbmF0aW9uUGF0aCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5tb3ZlKGNyZWF0ZUZpbGVTeXN0ZW1VUkwoc291cmNl
KSwgcGFyZW50LT5maWxlc3lzdGVtKCktPmNyZWF0ZUZpbGVTeXN0ZW1VUkwoZGVzdGluYXRpb25Q
YXRoKSwgRW50cnlDYWxsYmFja3M6OmNyZWF0ZShzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJh
Y2ssIHBhcmVudC0+ZmlsZXN5c3RlbSgpLCBkZXN0aW5hdGlvblBhdGgsIHNvdXJjZS0+aXNEaXJl
Y3RvcnkoKSkpOwotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIERPTUZpbGVTeXN0ZW1CYXNl
Ojpjb3B5KGNvbnN0IEVudHJ5QmFzZSogc291cmNlLCBFbnRyeUJhc2UqIHBhcmVudCwgY29uc3Qg
U3RyaW5nJiBuZXdOYW1lLCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFj
aywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQotewotICAgIFN0cmlu
ZyBkZXN0aW5hdGlvblBhdGg7Ci0gICAgaWYgKCF2ZXJpZnlBbmRHZXREZXN0aW5hdGlvblBhdGhG
b3JDb3B5T3JNb3ZlKHNvdXJjZSwgcGFyZW50LCBuZXdOYW1lLCBkZXN0aW5hdGlvblBhdGgpKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBtX2FzeW5jRmlsZVN5c3RlbS0+Y29weShjcmVh
dGVGaWxlU3lzdGVtVVJMKHNvdXJjZSksIHBhcmVudC0+ZmlsZXN5c3RlbSgpLT5jcmVhdGVGaWxl
U3lzdGVtVVJMKGRlc3RpbmF0aW9uUGF0aCksIEVudHJ5Q2FsbGJhY2tzOjpjcmVhdGUoc3VjY2Vz
c0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCBwYXJlbnQtPmZpbGVzeXN0ZW0oKSwgZGVzdGluYXRp
b25QYXRoLCBzb3VyY2UtPmlzRGlyZWN0b3J5KCkpKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQot
Ym9vbCBET01GaWxlU3lzdGVtQmFzZTo6cmVtb3ZlKGNvbnN0IEVudHJ5QmFzZSogZW50cnksIFBh
c3NSZWZQdHI8Vm9pZENhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JD
YWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKLXsKLSAgICBBU1NFUlQoZW50cnkpOwotICAgIC8vIFdl
IGRvbid0IGFsbG93IGNhbGxpbmcgcmVtb3ZlKCkgb24gdGhlIHJvb3QgZGlyZWN0b3J5LgotICAg
IGlmIChlbnRyeS0+ZnVsbFBhdGgoKSA9PSBTdHJpbmcoRE9NRmlsZVBhdGg6OnJvb3QpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgbV9hc3luY0ZpbGVTeXN0ZW0tPnJlbW92ZShjcmVhdGVG
aWxlU3lzdGVtVVJMKGVudHJ5KSwgVm9pZENhbGxiYWNrczo6Y3JlYXRlKHN1Y2Nlc3NDYWxsYmFj
aywgZXJyb3JDYWxsYmFjaykpOwotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIERPTUZpbGVT
eXN0ZW1CYXNlOjpyZW1vdmVSZWN1cnNpdmVseShjb25zdCBFbnRyeUJhc2UqIGVudHJ5LCBQYXNz
UmVmUHRyPFZvaWRDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2Fs
bGJhY2s+IGVycm9yQ2FsbGJhY2spCi17Ci0gICAgQVNTRVJUKGVudHJ5ICYmIGVudHJ5LT5pc0Rp
cmVjdG9yeSgpKTsKLSAgICAvLyBXZSBkb24ndCBhbGxvdyBjYWxsaW5nIHJlbW92ZSgpIG9uIHRo
ZSByb290IGRpcmVjdG9yeS4KLSAgICBpZiAoZW50cnktPmZ1bGxQYXRoKCkgPT0gU3RyaW5nKERP
TUZpbGVQYXRoOjpyb290KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIG1fYXN5bmNGaWxl
U3lzdGVtLT5yZW1vdmVSZWN1cnNpdmVseShjcmVhdGVGaWxlU3lzdGVtVVJMKGVudHJ5KSwgVm9p
ZENhbGxiYWNrczo6Y3JlYXRlKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykpOwotICAg
IHJldHVybiB0cnVlOwotfQotCi1ib29sIERPTUZpbGVTeXN0ZW1CYXNlOjpnZXRQYXJlbnQoY29u
c3QgRW50cnlCYXNlKiBlbnRyeSwgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2Fs
bGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKLXsKLSAgICBB
U1NFUlQoZW50cnkpOwotICAgIFN0cmluZyBwYXRoID0gRE9NRmlsZVBhdGg6OmdldERpcmVjdG9y
eShlbnRyeS0+ZnVsbFBhdGgoKSk7Ci0KLSAgICBtX2FzeW5jRmlsZVN5c3RlbS0+ZGlyZWN0b3J5
RXhpc3RzKGNyZWF0ZUZpbGVTeXN0ZW1VUkwocGF0aCksIEVudHJ5Q2FsbGJhY2tzOjpjcmVhdGUo
c3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCB0aGlzLCBwYXRoLCB0cnVlKSk7Ci0gICAg
cmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgRE9NRmlsZVN5c3RlbUJhc2U6OmdldEZpbGUoY29uc3Qg
RW50cnlCYXNlKiBlbnRyeSwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBGaWxlU3lzdGVtRmxh
Z3MmIGZsYWdzLCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFz
c1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQotewotICAgIFN0cmluZyBhYnNv
bHV0ZVBhdGg7Ci0gICAgaWYgKCFwYXRoVG9BYnNvbHV0ZVBhdGgobV90eXBlLCBlbnRyeSwgcGF0
aCwgYWJzb2x1dGVQYXRoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgT3duUHRyPEVu
dHJ5Q2FsbGJhY2tzPiBjYWxsYmFja3MgPSBFbnRyeUNhbGxiYWNrczo6Y3JlYXRlKHN1Y2Nlc3ND
YWxsYmFjaywgZXJyb3JDYWxsYmFjaywgdGhpcywgYWJzb2x1dGVQYXRoLCBmYWxzZSk7Ci0gICAg
aWYgKGZsYWdzLmNyZWF0ZSkKLSAgICAgICAgbV9hc3luY0ZpbGVTeXN0ZW0tPmNyZWF0ZUZpbGUo
Y3JlYXRlRmlsZVN5c3RlbVVSTChhYnNvbHV0ZVBhdGgpLCBmbGFncy5leGNsdXNpdmUsIGNhbGxi
YWNrcy5yZWxlYXNlKCkpOwotICAgIGVsc2UKLSAgICAgICAgbV9hc3luY0ZpbGVTeXN0ZW0tPmZp
bGVFeGlzdHMoY3JlYXRlRmlsZVN5c3RlbVVSTChhYnNvbHV0ZVBhdGgpLCBjYWxsYmFja3MucmVs
ZWFzZSgpKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBET01GaWxlU3lzdGVtQmFzZTo6
Z2V0RGlyZWN0b3J5KGNvbnN0IEVudHJ5QmFzZSogZW50cnksIGNvbnN0IFN0cmluZyYgcGF0aCwg
Y29uc3QgRmlsZVN5c3RlbUZsYWdzJiBmbGFncywgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBz
dWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykK
LXsKLSAgICBTdHJpbmcgYWJzb2x1dGVQYXRoOwotICAgIGlmICghcGF0aFRvQWJzb2x1dGVQYXRo
KG1fdHlwZSwgZW50cnksIHBhdGgsIGFic29sdXRlUGF0aCkpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLQotICAgIE93blB0cjxFbnRyeUNhbGxiYWNrcz4gY2FsbGJhY2tzID0gRW50cnlDYWxsYmFj
a3M6OmNyZWF0ZShzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ssIHRoaXMsIGFic29sdXRl
UGF0aCwgdHJ1ZSk7Ci0gICAgaWYgKGZsYWdzLmNyZWF0ZSkKLSAgICAgICAgbV9hc3luY0ZpbGVT
eXN0ZW0tPmNyZWF0ZURpcmVjdG9yeShjcmVhdGVGaWxlU3lzdGVtVVJMKGFic29sdXRlUGF0aCks
IGZsYWdzLmV4Y2x1c2l2ZSwgY2FsbGJhY2tzLnJlbGVhc2UoKSk7Ci0gICAgZWxzZQotICAgICAg
ICBtX2FzeW5jRmlsZVN5c3RlbS0+ZGlyZWN0b3J5RXhpc3RzKGNyZWF0ZUZpbGVTeXN0ZW1VUkwo
YWJzb2x1dGVQYXRoKSwgY2FsbGJhY2tzLnJlbGVhc2UoKSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19
Ci0KLWJvb2wgRE9NRmlsZVN5c3RlbUJhc2U6OnJlYWREaXJlY3RvcnkoUGFzc1JlZlB0cjxEaXJl
Y3RvcnlSZWFkZXJCYXNlPiByZWFkZXIsIGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0cjxF
bnRyaWVzQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNr
PiBlcnJvckNhbGxiYWNrKQotewotICAgIEFTU0VSVChET01GaWxlUGF0aDo6aXNBYnNvbHV0ZShw
YXRoKSk7Ci0gICAgbV9hc3luY0ZpbGVTeXN0ZW0tPnJlYWREaXJlY3RvcnkoY3JlYXRlRmlsZVN5
c3RlbVVSTChwYXRoKSwgRW50cmllc0NhbGxiYWNrczo6Y3JlYXRlKHN1Y2Nlc3NDYWxsYmFjaywg
ZXJyb3JDYWxsYmFjaywgcmVhZGVyLCBwYXRoKSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtQmFzZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxl
U3lzdGVtQmFzZS5oCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3RlbUJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMSwxMjQg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0Ogot
ICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0g
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpZm5kZWYgRE9NRmlsZVN5c3RlbUJhc2VfaAotI2RlZmluZSBET01GaWxlU3lzdGVt
QmFzZV9oCi0KLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNpbmNsdWRlICJBc3luY0ZpbGVT
eXN0ZW0uaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtRmxhZ3MuaCIKLSNpbmNsdWRlICJGaWxlU3lz
dGVtVHlwZS5oIgotI2luY2x1ZGUgIlVSTC5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBEaXJlY3RvcnlFbnRyeTsKLWNs
YXNzIERpcmVjdG9yeVJlYWRlckJhc2U7Ci1jbGFzcyBFbnRyaWVzQ2FsbGJhY2s7Ci1jbGFzcyBF
bnRyeUJhc2U7Ci1jbGFzcyBFbnRyeUNhbGxiYWNrOwotY2xhc3MgRXJyb3JDYWxsYmFjazsKLWNs
YXNzIE1ldGFkYXRhQ2FsbGJhY2s7Ci1jbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwotY2xh
c3MgU2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBWb2lkQ2FsbGJhY2s7Ci0KLS8vIEEgY29tbW9uIGJh
c2UgY2xhc3MgZm9yIERPTUZpbGVTeXN0ZW0gYW5kIERPTUZpbGVTeXN0ZW1TeW5jLgotY2xhc3Mg
RE9NRmlsZVN5c3RlbUJhc2UgOiBwdWJsaWMgUmVmQ291bnRlZDxET01GaWxlU3lzdGVtQmFzZT4g
ewotcHVibGljOgotICAgIC8vIFBhdGggcHJlZml4ZXMgdGhhdCBhcmUgdXNlZCBpbiB0aGUgZmls
ZXN5c3RlbSBVUkxzICh0aGF0IGNhbiBiZSBvYnRhaW5lZCBieSB0b1VSTCgpKS4KLSAgICAvLyBo
dHRwOi8vd3d3LnczLm9yZy9UUi9maWxlLXN5c3RlbS1hcGkvI3dpZGwtRW50cnktdG9VUkwKLSAg
ICBzdGF0aWMgY29uc3QgY2hhciBwZXJzaXN0ZW50UGF0aFByZWZpeFtdOwotICAgIHN0YXRpYyBj
b25zdCBzaXplX3QgcGVyc2lzdGVudFBhdGhQcmVmaXhMZW5ndGg7Ci0gICAgc3RhdGljIGNvbnN0
IGNoYXIgdGVtcG9yYXJ5UGF0aFByZWZpeFtdOwotICAgIHN0YXRpYyBjb25zdCBzaXplX3QgdGVt
cG9yYXJ5UGF0aFByZWZpeExlbmd0aDsKLSAgICBzdGF0aWMgY29uc3QgY2hhciBpc29sYXRlZFBh
dGhQcmVmaXhbXTsKLSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGlzb2xhdGVkUGF0aFByZWZpeExl
bmd0aDsKLQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW1CYXNlPiBjcmVhdGUo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBGaWxl
U3lzdGVtVHlwZSB0eXBlLCBjb25zdCBVUkwmIHJvb3RVUkwsIFBhc3NPd25QdHI8QXN5bmNGaWxl
U3lzdGVtPiBhc3luY0ZpbGVTeXN0ZW0pCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IERPTUZpbGVTeXN0ZW1CYXNlKGNvbnRleHQsIG5hbWUsIHR5cGUsIHJvb3RVUkwsIGFzeW5j
RmlsZVN5c3RlbSkpOwotICAgIH0KLSAgICB2aXJ0dWFsIH5ET01GaWxlU3lzdGVtQmFzZSgpOwot
Ci0gICAgY29uc3QgU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9Ci0gICAg
RmlsZVN5c3RlbVR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQotICAgIFVSTCBy
b290VVJMKCkgY29uc3QgeyByZXR1cm4gbV9maWxlc3lzdGVtUm9vdFVSTDsgfQotICAgIEFzeW5j
RmlsZVN5c3RlbSogYXN5bmNGaWxlU3lzdGVtKCkgY29uc3QgeyByZXR1cm4gbV9hc3luY0ZpbGVT
eXN0ZW0uZ2V0KCk7IH0KLSAgICBTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4oKSBjb25z
dDsKLQotICAgIC8vIFRoZSBjbG9uYWJsZSBmbGFnIGlzIHVzZWQgaW4gdGhlIHN0cnVjdHVyZWQg
Y2xvbmUgYWxnb3JpdGhtIHRvIHRlc3QKLSAgICAvLyB3aGV0aGVyIHRoZSBGaWxlU3lzdGVtIEFQ
SSBvYmplY3QgaXMgcGVybWl0dGVkIHRvIGJlIGNsb25lZC4gSXQgZGVmYXVsdHMKLSAgICAvLyB0
byBmYWxzZSwgYW5kIG11c3QgYmUgZXhwbGljaXRseSBzZXQgYnkgaW50ZXJuYWwgY29kZSBwZXJt
aXQgY2xvbmluZy4KLSAgICB2b2lkIG1ha2VDbG9uYWJsZSgpIHsgbV9jbG9uYWJsZSA9IHRydWU7
IH0KLSAgICBib29sIGNsb25hYmxlKCkgY29uc3QgeyByZXR1cm4gbV9jbG9uYWJsZTsgfQotCi0g
ICAgc3RhdGljIGJvb2wgaXNWYWxpZFR5cGUoRmlsZVN5c3RlbVR5cGUpOwotICAgIHN0YXRpYyBi
b29sIGNyYWNrRmlsZVN5c3RlbVVSTChjb25zdCBVUkwmLCBGaWxlU3lzdGVtVHlwZSYsIFN0cmlu
ZyYgZmlsZVBhdGgpOwotICAgIGJvb2wgc3VwcG9ydHNUb1VSTCgpIGNvbnN0OwotICAgIFVSTCBj
cmVhdGVGaWxlU3lzdGVtVVJMKGNvbnN0IEVudHJ5QmFzZSopIGNvbnN0OwotICAgIFVSTCBjcmVh
dGVGaWxlU3lzdGVtVVJMKGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpIGNvbnN0OwotCi0gICAgLy8g
QWN0dWFsIEZpbGVTeXN0ZW0gQVBJIGltcGxlbWVudGF0aW9ucy4gQWxsIHRoZSB2YWxpZGl0eSBj
aGVja3Mgb24gdmlydHVhbCBwYXRocyBhcmUgZG9uZSBhdCB0aGlzIGxldmVsLgotICAgIC8vIFRo
ZXkgcmV0dXJuIGZhbHNlIGZvciBpbW1lZGlhdGUgZXJyb3JzIHRoYXQgZG9uJ3QgaW52b2x2ZSBs
b3dlciBBc3luY0ZpbGVTeXN0ZW0gbGF5ZXIgKGUuZy4gZm9yIG5hbWUgdmFsaWRhdGlvbiBlcnJv
cnMpLiBPdGhlcndpc2UgdGhleSByZXR1cm4gdHJ1ZSAoYnV0IGxhdGVyIG1heSBjYWxsIGJhY2sg
d2l0aCBhbiBydW50aW1lIGVycm9yKS4KLSAgICBib29sIGdldE1ldGFkYXRhKGNvbnN0IEVudHJ5
QmFzZSosIFBhc3NSZWZQdHI8TWV0YWRhdGFDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxs
YmFjaz4pOwotICAgIGJvb2wgbW92ZShjb25zdCBFbnRyeUJhc2UqIHNvdXJjZSwgRW50cnlCYXNl
KiBwYXJlbnQsIGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiwg
UGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPik7Ci0gICAgYm9vbCBjb3B5KGNvbnN0IEVudHJ5QmFz
ZSogc291cmNlLCBFbnRyeUJhc2UqIHBhcmVudCwgY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVm
UHRyPEVudHJ5Q2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsKLSAgICBib29s
IHJlbW92ZShjb25zdCBFbnRyeUJhc2UqLCBQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4sIFBhc3NS
ZWZQdHI8RXJyb3JDYWxsYmFjaz4pOwotICAgIGJvb2wgcmVtb3ZlUmVjdXJzaXZlbHkoY29uc3Qg
RW50cnlCYXNlKiwgUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2Fs
bGJhY2s+KTsKLSAgICBib29sIGdldFBhcmVudChjb25zdCBFbnRyeUJhc2UqLCBQYXNzUmVmUHRy
PEVudHJ5Q2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsKLSAgICBib29sIGdl
dEZpbGUoY29uc3QgRW50cnlCYXNlKiwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBGaWxlU3lz
dGVtRmxhZ3MmLCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2Fs
bGJhY2s+KTsKLSAgICBib29sIGdldERpcmVjdG9yeShjb25zdCBFbnRyeUJhc2UqLCBjb25zdCBT
dHJpbmcmIHBhdGgsIGNvbnN0IEZpbGVTeXN0ZW1GbGFncyYsIFBhc3NSZWZQdHI8RW50cnlDYWxs
YmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4pOwotICAgIGJvb2wgcmVhZERpcmVjdG9y
eShQYXNzUmVmUHRyPERpcmVjdG9yeVJlYWRlckJhc2U+LCBjb25zdCBTdHJpbmcmIHBhdGgsIFBh
c3NSZWZQdHI8RW50cmllc0NhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPik7Ci0K
LXByb3RlY3RlZDoKLSAgICBET01GaWxlU3lzdGVtQmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBGaWxlU3lzdGVtVHlwZSwgY29uc3QgVVJMJiByb290VVJM
LCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4pOwotICAgIGZyaWVuZCBjbGFzcyBET01GaWxl
U3lzdGVtU3luYzsKLQotICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIG1fY29udGV4dDsKLSAg
ICBTdHJpbmcgbV9uYW1lOwotICAgIEZpbGVTeXN0ZW1UeXBlIG1fdHlwZTsKLSAgICBVUkwgbV9m
aWxlc3lzdGVtUm9vdFVSTDsKLSAgICBib29sIG1fY2xvbmFibGU7Ci0KLSAgICBtdXRhYmxlIE93
blB0cjxBc3luY0ZpbGVTeXN0ZW0+IG1fYXN5bmNGaWxlU3lzdGVtOwotfTsKLQotaW5saW5lIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBET01GaWxlU3lzdGVtQmFzZSYgYSwgY29uc3QgRE9NRmlsZVN5
c3RlbUJhc2UmIGIpIHsgcmV0dXJuIGEubmFtZSgpID09IGIubmFtZSgpICYmIGEudHlwZSgpID09
IGIudHlwZSgpICYmIGEucm9vdFVSTCgpID09IGIucm9vdFVSTCgpOyB9Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2VuZGlmIC8v
IERPTUZpbGVTeXN0ZW1CYXNlX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5
c3RlbS9ET01GaWxlU3lzdGVtU3luYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW1TeW5jLmNwcAkocmV2aXNpb24gMTU2Njkx
KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW1TeW5j
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSwyNjYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0g
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAot
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJET01GaWxlU3lzdGVtU3luYy5oIgotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVN
KQotCi0jaW5jbHVkZSAiQXN5bmNGaWxlU3lzdGVtLmgiCi0jaW5jbHVkZSAiQXN5bmNGaWxlV3Jp
dGVyLmgiCi0jaW5jbHVkZSAiRE9NRmlsZVBhdGguaCIKLSNpbmNsdWRlICJEaXJlY3RvcnlFbnRy
eVN5bmMuaCIKLSNpbmNsdWRlICJFcnJvckNhbGxiYWNrLmgiCi0jaW5jbHVkZSAiRmlsZS5oIgot
I2luY2x1ZGUgIkZpbGVFbnRyeVN5bmMuaCIKLSNpbmNsdWRlICJGaWxlRXJyb3IuaCIKLSNpbmNs
dWRlICJGaWxlRXhjZXB0aW9uLmgiCi0jaW5jbHVkZSAiRmlsZU1ldGFkYXRhLmgiCi0jaW5jbHVk
ZSAiRmlsZVN5c3RlbUNhbGxiYWNrcy5oIgotI2luY2x1ZGUgIkZpbGVXcml0ZXJCYXNlQ2FsbGJh
Y2suaCIKLSNpbmNsdWRlICJGaWxlV3JpdGVyU3luYy5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLWNsYXNzIEZpbGVXcml0ZXJCYXNlOwotCi1QYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW1TeW5j
PiBET01GaWxlU3lzdGVtU3luYzo6Y3JlYXRlKERPTUZpbGVTeXN0ZW1CYXNlKiBmaWxlU3lzdGVt
KQotewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgRE9NRmlsZVN5c3RlbVN5bmMoZmlsZVN5c3Rl
bS0+bV9jb250ZXh0LCBmaWxlU3lzdGVtLT5uYW1lKCksIGZpbGVTeXN0ZW0tPnR5cGUoKSwgZmls
ZVN5c3RlbS0+cm9vdFVSTCgpLCBmaWxlU3lzdGVtLT5tX2FzeW5jRmlsZVN5c3RlbS5yZWxlYXNl
KCkpKTsKLX0KLQotRE9NRmlsZVN5c3RlbVN5bmM6OkRPTUZpbGVTeXN0ZW1TeW5jKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgRmlsZVN5c3RlbVR5
cGUgdHlwZSwgY29uc3QgVVJMJiByb290VVJMLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4g
YXN5bmNGaWxlU3lzdGVtKQotICAgIDogRE9NRmlsZVN5c3RlbUJhc2UoY29udGV4dCwgbmFtZSwg
dHlwZSwgcm9vdFVSTCwgYXN5bmNGaWxlU3lzdGVtKQotewotfQotCi1ET01GaWxlU3lzdGVtU3lu
Yzo6fkRPTUZpbGVTeXN0ZW1TeW5jKCkKLXsKLX0KLQotUGFzc1JlZlB0cjxEaXJlY3RvcnlFbnRy
eVN5bmM+IERPTUZpbGVTeXN0ZW1TeW5jOjpyb290KCkKLXsKLSAgICByZXR1cm4gRGlyZWN0b3J5
RW50cnlTeW5jOjpjcmVhdGUodGhpcywgRE9NRmlsZVBhdGg6OnJvb3QpOwotfQotCi1uYW1lc3Bh
Y2UgewotCi1jbGFzcyBDcmVhdGVGaWxlSGVscGVyIDogcHVibGljIEFzeW5jRmlsZVN5c3RlbUNh
bGxiYWNrcyB7Ci1wdWJsaWM6Ci0gICAgY2xhc3MgQ3JlYXRlRmlsZVJlc3VsdCA6IHB1YmxpYyBS
ZWZDb3VudGVkPENyZWF0ZUZpbGVSZXN1bHQ+IHsKLSAgICAgIHB1YmxpYzoKLSAgICAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8Q3JlYXRlRmlsZVJlc3VsdD4gY3JlYXRlKCkKLSAgICAgICAgewotICAg
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDcmVhdGVGaWxlUmVzdWx0KCkpOwotICAgICAg
ICB9Ci0KLSAgICAgICAgYm9vbCBtX2ZhaWxlZDsKLSAgICAgICAgaW50IG1fY29kZTsKLSAgICAg
ICAgUmVmUHRyPEZpbGU+IG1fZmlsZTsKLQotICAgICAgcHJpdmF0ZToKLSAgICAgICAgQ3JlYXRl
RmlsZVJlc3VsdCgpCi0gICAgICAgICAgICA6IG1fZmFpbGVkKGZhbHNlKQotICAgICAgICAgICAg
LCBtX2NvZGUoMCkKLSAgICAgICAgewotICAgICAgICB9Ci0KLSAgICAgICAgfkNyZWF0ZUZpbGVS
ZXN1bHQoKQotICAgICAgICB7Ci0gICAgICAgIH0KLSAgICAgICAgZnJpZW5kIGNsYXNzIFdURjo6
UmVmQ291bnRlZDxDcmVhdGVGaWxlUmVzdWx0PjsKLSAgICB9OwotCi0gICAgc3RhdGljIFBhc3NP
d25QdHI8Q3JlYXRlRmlsZUhlbHBlcj4gY3JlYXRlKFBhc3NSZWZQdHI8Q3JlYXRlRmlsZVJlc3Vs
dD4gcmVzdWx0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFVSTCYgdXJsLCBGaWxlU3lzdGVt
VHlwZSB0eXBlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDcmVhdGVGaWxl
SGVscGVyKHJlc3VsdCwgbmFtZSwgdXJsLCB0eXBlKSk7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2
b2lkIGRpZEZhaWwoaW50IGNvZGUpCi0gICAgewotICAgICAgICBtX3Jlc3VsdC0+bV9mYWlsZWQg
PSB0cnVlOwotICAgICAgICBtX3Jlc3VsdC0+bV9jb2RlID0gY29kZTsKLSAgICB9Ci0KLSAgICB2
aXJ0dWFsIH5DcmVhdGVGaWxlSGVscGVyKCkKLSAgICB7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2
b2lkIGRpZENyZWF0ZVNuYXBzaG90RmlsZShjb25zdCBGaWxlTWV0YWRhdGEmIG1ldGFkYXRhLCBQ
YXNzUmVmUHRyPEJsb2JEYXRhSGFuZGxlPiAvKiBzbmFwc2hvdCAqLykKLSAgICB7Ci0gICAgICAg
IC8vIFdlIGNhbid0IGRpcmVjdGx5IHVzZSB0aGUgc25hcHNob3QgYmxvYiBkYXRhIGhhbmRsZSBi
ZWNhdXNlIHRoZSBjb250ZW50IHR5cGUgb24gaXQgaGFzbid0IGJlZW4gc2V0LgotICAgICAgICAv
LyBUaGUgfHNuYXBzaG90fCBwYXJhbSBpcyBoZXJlIHRvIHByb3ZpZGUgYSBhIGNoYWluIG9mIGN1
c3RvZHkgdGhydSB0aHJlYWQgYnJpZGdpbmcgdGhhdCBpcyBoZWxkIG9udG8gdW50aWwKLSAgICAg
ICAgLy8gKmFmdGVyKiB3ZSd2ZSBjb2luZWQgYSBGaWxlIHdpdGggYSBuZXcgaGFuZGxlIHRoYXQg
aGFzIHRoZSBjb3JyZWN0IHR5cGUgc2V0IG9uIGl0LiBUaGlzIGFsbG93cyB0aGUKLSAgICAgICAg
Ly8gYmxvYiBzdG9yYWdlIHN5c3RlbSB0byB0cmFjayB3aGVuIGEgdGVtcCBmaWxlIGNhbiBhbmQg
Y2FuJ3QgYmUgc2FmZWx5IGRlbGV0ZWQuCi0KLSAgICAgICAgLy8gRm9yIHJlZ3VsYXIgZmlsZXN5
c3RlbSB0eXBlcyAodGVtcG9yYXJ5IG9yIHBlcnNpc3RlbnQpLCB3ZSBzaG91bGQgbm90IGNhY2hl
IGZpbGUgbWV0YWRhdGEgYXMgaXQgY291bGQgY2hhbmdlIEZpbGUgc2VtYW50aWNzLgotICAgICAg
ICAvLyBGb3Igb3RoZXIgZmlsZXN5c3RlbSB0eXBlcyAod2hpY2ggY291bGQgYmUgcGxhdGZvcm0t
c3BlY2lmaWMgb25lcyksIHRoZXJlJ3MgYSBjaGFuY2UgdGhhdCB0aGUgZmlsZXMgYXJlIG9uIHJl
bW90ZSBmaWxlc3lzdGVtLgotICAgICAgICAvLyBJZiB0aGUgcG9ydCBoYXMgcmV0dXJuZWQgbWV0
YWRhdGEganVzdCBwYXNzIGl0IHRvIEZpbGUgY29uc3RydWN0b3IgKHNvIHdlIG1heSBjYWNoZSB0
aGUgbWV0YWRhdGEpLgotICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHVzZSB0aGUgc25hcHNo
b3QgbWV0YWRhdGEgZm9yIGFsbCBmaWxlcy4KLSAgICAgICAgLy8gaHR0cHM6Ly93d3cudzMub3Jn
L0J1Z3MvUHVibGljL3Nob3dfYnVnLmNnaT9pZD0xNzc0NgotICAgICAgICBpZiAobV90eXBlID09
IEZpbGVTeXN0ZW1UeXBlVGVtcG9yYXJ5IHx8IG1fdHlwZSA9PSBGaWxlU3lzdGVtVHlwZVBlcnNp
c3RlbnQpIHsKLSAgICAgICAgICAgIG1fcmVzdWx0LT5tX2ZpbGUgPSBGaWxlOjpjcmVhdGVXaXRo
TmFtZShtZXRhZGF0YS5wbGF0Zm9ybVBhdGgsIG1fbmFtZSk7Ci0gICAgICAgIH0gZWxzZSBpZiAo
IW1ldGFkYXRhLnBsYXRmb3JtUGF0aC5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIC8vIElmIHRo
ZSBwbGF0Zm9ybVBhdGggaW4gdGhlIHJldHVybmVkIG1ldGFkYXRhIGlzIGdpdmVuLCB3ZSBjcmVh
dGUgYSBGaWxlIG9iamVjdCBmb3IgdGhlIHBhdGguCi0gICAgICAgICAgICBtX3Jlc3VsdC0+bV9m
aWxlID0gRmlsZTo6Y3JlYXRlRm9yRmlsZVN5c3RlbUZpbGUobV9uYW1lLCBtZXRhZGF0YSkuZ2V0
KCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyBPdGhlcndpc2UgY3JlYXRlIGEg
RmlsZSBmcm9tIHRoZSBGaWxlU3lzdGVtIFVSTC4KLSAgICAgICAgICAgIG1fcmVzdWx0LT5tX2Zp
bGUgPSBGaWxlOjpjcmVhdGVGb3JGaWxlU3lzdGVtRmlsZShtX3VybCwgbWV0YWRhdGEpLmdldCgp
OwotICAgICAgICB9Ci0gICAgfQotcHJpdmF0ZToKLSAgICBDcmVhdGVGaWxlSGVscGVyKFBhc3NS
ZWZQdHI8Q3JlYXRlRmlsZVJlc3VsdD4gcmVzdWx0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IFVSTCYgdXJsLCBGaWxlU3lzdGVtVHlwZSB0eXBlKQotICAgICAgICA6IG1fcmVzdWx0KHJlc3Vs
dCkKLSAgICAgICAgLCBtX25hbWUobmFtZSkKLSAgICAgICAgLCBtX3VybCh1cmwpCi0gICAgICAg
ICwgbV90eXBlKHR5cGUpCi0gICAgewotICAgIH0KLQotICAgIFJlZlB0cjxDcmVhdGVGaWxlUmVz
dWx0PiBtX3Jlc3VsdDsKLSAgICBTdHJpbmcgbV9uYW1lOwotICAgIFVSTCBtX3VybDsKLSAgICBG
aWxlU3lzdGVtVHlwZSBtX3R5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZQotCi1QYXNzUmVmUHRy
PEZpbGU+IERPTUZpbGVTeXN0ZW1TeW5jOjpjcmVhdGVGaWxlKGNvbnN0IEZpbGVFbnRyeVN5bmMq
IGZpbGVFbnRyeSwgRXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0gICAgZWMgPSAwOwotICAgIFVSTCBm
aWxlU3lzdGVtVVJMID0gY3JlYXRlRmlsZVN5c3RlbVVSTChmaWxlRW50cnkpOwotICAgIFJlZlB0
cjxDcmVhdGVGaWxlSGVscGVyOjpDcmVhdGVGaWxlUmVzdWx0PiByZXN1bHQoQ3JlYXRlRmlsZUhl
bHBlcjo6Q3JlYXRlRmlsZVJlc3VsdDo6Y3JlYXRlKCkpOwotICAgIG1fYXN5bmNGaWxlU3lzdGVt
LT5jcmVhdGVTbmFwc2hvdEZpbGVBbmRSZWFkTWV0YWRhdGEoZmlsZVN5c3RlbVVSTCwgQ3JlYXRl
RmlsZUhlbHBlcjo6Y3JlYXRlKHJlc3VsdCwgZmlsZUVudHJ5LT5uYW1lKCksIGZpbGVTeXN0ZW1V
UkwsIHR5cGUoKSkpOwotICAgIGlmICghbV9hc3luY0ZpbGVTeXN0ZW0tPndhaXRGb3JPcGVyYXRp
b25Ub0NvbXBsZXRlKCkpIHsKLSAgICAgICAgZWMgPSBGaWxlRXhjZXB0aW9uOjpBQk9SVF9FUlI7
Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICBpZiAocmVzdWx0LT5tX2ZhaWxlZCkgewot
ICAgICAgICBlYyA9IHJlc3VsdC0+bV9jb2RlOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0g
ICAgcmV0dXJuIHJlc3VsdC0+bV9maWxlOwotfQotCi1uYW1lc3BhY2UgewotCi1jbGFzcyBSZWNl
aXZlRmlsZVdyaXRlckNhbGxiYWNrIDogcHVibGljIEZpbGVXcml0ZXJCYXNlQ2FsbGJhY2sgewot
cHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJlY2VpdmVGaWxlV3JpdGVyQ2FsbGJhY2s+
IGNyZWF0ZSgpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJlY2VpdmVGaWxl
V3JpdGVyQ2FsbGJhY2soKSk7Ci0gICAgfQotCi0gICAgYm9vbCBoYW5kbGVFdmVudChGaWxlV3Jp
dGVyQmFzZSogZmlsZVdyaXRlckJhc2UpCi0gICAgewotI2lmbmRlZiBOREVCVUcKLSAgICAgICAg
bV9maWxlV3JpdGVyQmFzZSA9IGZpbGVXcml0ZXJCYXNlOwotI2Vsc2UKLSAgICAgICAgQVNTRVJU
X1VOVVNFRChmaWxlV3JpdGVyQmFzZSwgZmlsZVdyaXRlckJhc2UpOwotI2VuZGlmCi0gICAgICAg
IHJldHVybiB0cnVlOwotICAgIH0KLQotI2lmbmRlZiBOREVCVUcKLSAgICBGaWxlV3JpdGVyQmFz
ZSogZmlsZVdyaXRlckJhc2UoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fZmlsZVdyaXRlckJh
c2U7Ci0gICAgfQotI2VuZGlmCi0KLXByaXZhdGU6Ci0gICAgUmVjZWl2ZUZpbGVXcml0ZXJDYWxs
YmFjaygpCi0jaWZuZGVmIE5ERUJVRwotICAgICAgICA6IG1fZmlsZVdyaXRlckJhc2UoMCkKLSNl
bmRpZgotICAgIHsKLSAgICB9Ci0KLSNpZm5kZWYgTkRFQlVHCi0gICAgRmlsZVdyaXRlckJhc2Uq
IG1fZmlsZVdyaXRlckJhc2U7Ci0jZW5kaWYKLX07Ci0KLWNsYXNzIExvY2FsRXJyb3JDYWxsYmFj
ayA6IHB1YmxpYyBFcnJvckNhbGxiYWNrIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0
cjxMb2NhbEVycm9yQ2FsbGJhY2s+IGNyZWF0ZSgpCi0gICAgewotICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IExvY2FsRXJyb3JDYWxsYmFjaygpKTsKLSAgICB9Ci0KLSAgICBib29sIGhhbmRs
ZUV2ZW50KEZpbGVFcnJvciogZXJyb3IpCi0gICAgewotICAgICAgICBtX2Vycm9yID0gZXJyb3I7
Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIEZpbGVFcnJvciogZXJyb3IoKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIG1fZXJyb3IuZ2V0KCk7Ci0gICAgfQotCi1wcml2YXRlOgot
ICAgIExvY2FsRXJyb3JDYWxsYmFjaygpCi0gICAgewotICAgIH0KLSAgICBSZWZQdHI8RmlsZUVy
cm9yPiBtX2Vycm9yOwotfTsKLQotfQotCi1QYXNzUmVmUHRyPEZpbGVXcml0ZXJTeW5jPiBET01G
aWxlU3lzdGVtU3luYzo6Y3JlYXRlV3JpdGVyKGNvbnN0IEZpbGVFbnRyeVN5bmMqIGZpbGVFbnRy
eSwgRXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0gICAgQVNTRVJUKGZpbGVFbnRyeSk7Ci0gICAgZWMg
PSAwOwotCi0KLSAgICBSZWZQdHI8RmlsZVdyaXRlclN5bmM+IGZpbGVXcml0ZXIgPSBGaWxlV3Jp
dGVyU3luYzo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPFJlY2VpdmVGaWxlV3JpdGVyQ2FsbGJhY2s+
IHN1Y2Nlc3NDYWxsYmFjayA9IFJlY2VpdmVGaWxlV3JpdGVyQ2FsbGJhY2s6OmNyZWF0ZSgpOwot
ICAgIFJlZlB0cjxMb2NhbEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2sgPSBMb2NhbEVycm9y
Q2FsbGJhY2s6OmNyZWF0ZSgpOwotCi0gICAgT3duUHRyPEZpbGVXcml0ZXJCYXNlQ2FsbGJhY2tz
PiBjYWxsYmFja3MgPSBGaWxlV3JpdGVyQmFzZUNhbGxiYWNrczo6Y3JlYXRlKGZpbGVXcml0ZXIs
IHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjayk7Ci0gICAgbV9hc3luY0ZpbGVTeXN0ZW0t
PmNyZWF0ZVdyaXRlcihmaWxlV3JpdGVyLmdldCgpLCBjcmVhdGVGaWxlU3lzdGVtVVJMKGZpbGVF
bnRyeSksIGNhbGxiYWNrcy5yZWxlYXNlKCkpOwotICAgIGlmICghbV9hc3luY0ZpbGVTeXN0ZW0t
PndhaXRGb3JPcGVyYXRpb25Ub0NvbXBsZXRlKCkpIHsKLSAgICAgICAgZWMgPSBGaWxlRXhjZXB0
aW9uOjpBQk9SVF9FUlI7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICBpZiAoZXJyb3JD
YWxsYmFjay0+ZXJyb3IoKSkgewotICAgICAgICBBU1NFUlQoIXN1Y2Nlc3NDYWxsYmFjay0+Zmls
ZVdyaXRlckJhc2UoKSk7Ci0gICAgICAgIGVjID0gRmlsZUV4Y2VwdGlvbjo6RXJyb3JDb2RlVG9F
eGNlcHRpb25Db2RlKGVycm9yQ2FsbGJhY2stPmVycm9yKCktPmNvZGUoKSk7Ci0gICAgICAgIHJl
dHVybiAwOwotICAgIH0KLSAgICBBU1NFUlQoc3VjY2Vzc0NhbGxiYWNrLT5maWxlV3JpdGVyQmFz
ZSgpKTsKLSAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8RmlsZVdyaXRlclN5bmMqPihzdWNjZXNzQ2Fs
bGJhY2stPmZpbGVXcml0ZXJCYXNlKCkpID09IGZpbGVXcml0ZXIuZ2V0KCkpOwotICAgIHJldHVy
biBmaWxlV3JpdGVyOwotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3RlbVN5bmMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmls
ZVN5c3RlbVN5bmMuaAkocmV2aXNpb24gMTU2NjkxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW1TeW5jLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNzEg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0Ogot
ICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0g
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpZm5kZWYgRE9NRmlsZVN5c3RlbVN5bmNfaAotI2RlZmluZSBET01GaWxlU3lzdGVt
U3luY19oCi0KLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNpbmNsdWRlICJET01GaWxlU3lz
dGVtQmFzZS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIERpcmVjdG9yeUVudHJ5
U3luYzsKLWNsYXNzIEZpbGU7Ci1jbGFzcyBGaWxlRW50cnlTeW5jOwotY2xhc3MgRmlsZVdyaXRl
clN5bmM7Ci0KLXR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7Ci0KLWNsYXNzIERPTUZpbGVTeXN0
ZW1TeW5jIDogcHVibGljIERPTUZpbGVTeXN0ZW1CYXNlIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxET01GaWxlU3lzdGVtU3luYz4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgRmlsZVN5c3RlbVR5cGUgdHlwZSwgY29u
c3QgVVJMJiByb290VVJMLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4gYXN5bmNGaWxlU3lz
dGVtKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBET01GaWxlU3lzdGVtU3lu
Yyhjb250ZXh0LCBuYW1lLCB0eXBlLCByb290VVJMLCBhc3luY0ZpbGVTeXN0ZW0pKTsKLSAgICB9
Ci0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtU3luYz4gY3JlYXRlKERPTUZp
bGVTeXN0ZW1CYXNlKik7Ci0KLSAgICB2aXJ0dWFsIH5ET01GaWxlU3lzdGVtU3luYygpOwotCi0g
ICAgUGFzc1JlZlB0cjxEaXJlY3RvcnlFbnRyeVN5bmM+IHJvb3QoKTsKLQotICAgIFBhc3NSZWZQ
dHI8RmlsZT4gY3JlYXRlRmlsZShjb25zdCBGaWxlRW50cnlTeW5jKiwgRXhjZXB0aW9uQ29kZSYp
OwotICAgIFBhc3NSZWZQdHI8RmlsZVdyaXRlclN5bmM+IGNyZWF0ZVdyaXRlcihjb25zdCBGaWxl
RW50cnlTeW5jKiwgRXhjZXB0aW9uQ29kZSYpOwotCi1wcml2YXRlOgotICAgIERPTUZpbGVTeXN0
ZW1TeW5jKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIG5hbWUsIEZpbGVT
eXN0ZW1UeXBlLCBjb25zdCBVUkwmIHJvb3RVUkwsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVt
Pik7Ci19OwotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNlbmRpZiAv
LyBET01GaWxlU3lzdGVtU3luY19oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVz
eXN0ZW0vRE9NRmlsZVN5c3RlbVN5bmMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtU3luYy5pZGwJKHJldmlzaW9uIDE1NjY5
MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtU3lu
Yy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTEsMzggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0g
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAot
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLVsKLSAgICBOb0ludGVyZmFjZU9i
amVjdCwKLSAgICBDb25kaXRpb25hbD1GSUxFX1NZU1RFTSwKLSAgICBKU05vU3RhdGljVGFibGVz
Ci1dIGludGVyZmFjZSBET01GaWxlU3lzdGVtU3luYyB7Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRl
IERPTVN0cmluZyBuYW1lOwotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBEaXJlY3RvcnlFbnRyeVN5
bmMgcm9vdDsKLX07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9N
V2luZG93RmlsZVN5c3RlbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9maWxlc3lzdGVtL0RPTVdpbmRvd0ZpbGVTeXN0ZW0uY3BwCShyZXZpc2lvbiAxNTY2OTEpCisr
KyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NV2luZG93RmlsZVN5c3RlbS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEsMTA4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTIsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKLSAqCi0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJyBBTkQKLSAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UK
LSAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFCi0gKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotICogREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IKLSAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0gKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKLSAqIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkKLSAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSAotICogREFNQUdFLgotICovCi0KLSNpbmNs
dWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJET01XaW5kb3dGaWxlU3lzdGVtLmgiCi0KLSNpZiBF
TkFCTEUoRklMRV9TWVNURU0pCi0KLSNpbmNsdWRlICJBc3luY0ZpbGVTeXN0ZW0uaCIKLSNpbmNs
dWRlICJET01GaWxlU3lzdGVtLmgiCi0jaW5jbHVkZSAiRE9NV2luZG93LmgiCi0jaW5jbHVkZSAi
RG9jdW1lbnQuaCIKLSNpbmNsdWRlICJFbnRyeUNhbGxiYWNrLmgiCi0jaW5jbHVkZSAiRXJyb3JD
YWxsYmFjay5oIgotI2luY2x1ZGUgIkZpbGVFcnJvci5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW1D
YWxsYmFjay5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW1DYWxsYmFja3MuaCIKLSNpbmNsdWRlICJG
aWxlU3lzdGVtVHlwZS5oIgotI2luY2x1ZGUgIkxvY2FsRmlsZVN5c3RlbS5oIgotI2luY2x1ZGUg
IlNlY3VyaXR5T3JpZ2luLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotRE9NV2luZG93Rmls
ZVN5c3RlbTo6RE9NV2luZG93RmlsZVN5c3RlbSgpCi17Ci19Ci0KLURPTVdpbmRvd0ZpbGVTeXN0
ZW06On5ET01XaW5kb3dGaWxlU3lzdGVtKCkKLXsKLX0KLQotdm9pZCBET01XaW5kb3dGaWxlU3lz
dGVtOjp3ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbShET01XaW5kb3cqIHdpbmRvdywgaW50IHR5cGUs
IGxvbmcgbG9uZyBzaXplLCBQYXNzUmVmUHRyPEZpbGVTeXN0ZW1DYWxsYmFjaz4gc3VjY2Vzc0Nh
bGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCi17Ci0gICAg
aWYgKCF3aW5kb3ctPmlzQ3VycmVudGx5RGlzcGxheWVkSW5GcmFtZSgpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBEb2N1bWVudCogZG9jdW1lbnQgPSB3aW5kb3ctPmRvY3VtZW50KCk7Ci0gICAg
aWYgKCFkb2N1bWVudCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCFBc3luY0ZpbGVTeXN0
ZW06OmlzQXZhaWxhYmxlKCkgfHwgIWRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nl
c3NGaWxlU3lzdGVtKCkpIHsKLSAgICAgICAgRE9NRmlsZVN5c3RlbTo6c2NoZWR1bGVDYWxsYmFj
ayhkb2N1bWVudCwgZXJyb3JDYWxsYmFjaywgRmlsZUVycm9yOjpjcmVhdGUoRmlsZUVycm9yOjpT
RUNVUklUWV9FUlIpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEZpbGVTeXN0ZW1U
eXBlIGZpbGVTeXN0ZW1UeXBlID0gc3RhdGljX2Nhc3Q8RmlsZVN5c3RlbVR5cGU+KHR5cGUpOwot
ICAgIGlmICghRE9NRmlsZVN5c3RlbUJhc2U6OmlzVmFsaWRUeXBlKGZpbGVTeXN0ZW1UeXBlKSkg
ewotICAgICAgICBET01GaWxlU3lzdGVtOjpzY2hlZHVsZUNhbGxiYWNrKGRvY3VtZW50LCBlcnJv
ckNhbGxiYWNrLCBGaWxlRXJyb3I6OmNyZWF0ZShGaWxlRXJyb3I6OklOVkFMSURfTU9ESUZJQ0FU
SU9OX0VSUikpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgTG9jYWxGaWxlU3lzdGVt
Ojpsb2NhbEZpbGVTeXN0ZW0oKS5yZXF1ZXN0RmlsZVN5c3RlbShkb2N1bWVudCwgZmlsZVN5c3Rl
bVR5cGUsIHNpemUsIEZpbGVTeXN0ZW1DYWxsYmFja3M6OmNyZWF0ZShzdWNjZXNzQ2FsbGJhY2ss
IGVycm9yQ2FsbGJhY2ssIGRvY3VtZW50LCBmaWxlU3lzdGVtVHlwZSksIEFzeW5jaHJvbm91c0Zp
bGVTeXN0ZW0pOwotfQotCi12b2lkIERPTVdpbmRvd0ZpbGVTeXN0ZW06OndlYmtpdFJlc29sdmVM
b2NhbEZpbGVTeXN0ZW1VUkwoRE9NV2luZG93KiB3aW5kb3csIGNvbnN0IFN0cmluZyYgdXJsLCBQ
YXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJv
ckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQotewotICAgIGlmICghd2luZG93LT5pc0N1cnJlbnRs
eURpc3BsYXllZEluRnJhbWUoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgRG9jdW1lbnQqIGRv
Y3VtZW50ID0gd2luZG93LT5kb2N1bWVudCgpOwotICAgIGlmICghZG9jdW1lbnQpCi0gICAgICAg
IHJldHVybjsKLQotICAgIFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbiA9IGRvY3VtZW50
LT5zZWN1cml0eU9yaWdpbigpOwotICAgIFVSTCBjb21wbGV0ZWRVUkwgPSBkb2N1bWVudC0+Y29t
cGxldGVVUkwodXJsKTsKLSAgICBpZiAoIUFzeW5jRmlsZVN5c3RlbTo6aXNBdmFpbGFibGUoKSB8
fCAhc2VjdXJpdHlPcmlnaW4tPmNhbkFjY2Vzc0ZpbGVTeXN0ZW0oKSB8fCAhc2VjdXJpdHlPcmln
aW4tPmNhblJlcXVlc3QoY29tcGxldGVkVVJMKSkgewotICAgICAgICBET01GaWxlU3lzdGVtOjpz
Y2hlZHVsZUNhbGxiYWNrKGRvY3VtZW50LCBlcnJvckNhbGxiYWNrLCBGaWxlRXJyb3I6OmNyZWF0
ZShGaWxlRXJyb3I6OlNFQ1VSSVRZX0VSUikpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgRmlsZVN5c3RlbVR5cGUgdHlwZTsKLSAgICBTdHJpbmcgZmlsZVBhdGg7Ci0gICAgaWYgKCFj
b21wbGV0ZWRVUkwuaXNWYWxpZCgpIHx8ICFET01GaWxlU3lzdGVtQmFzZTo6Y3JhY2tGaWxlU3lz
dGVtVVJMKGNvbXBsZXRlZFVSTCwgdHlwZSwgZmlsZVBhdGgpKSB7Ci0gICAgICAgIERPTUZpbGVT
eXN0ZW06OnNjaGVkdWxlQ2FsbGJhY2soZG9jdW1lbnQsIGVycm9yQ2FsbGJhY2ssIEZpbGVFcnJv
cjo6Y3JlYXRlKEZpbGVFcnJvcjo6RU5DT0RJTkdfRVJSKSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBMb2NhbEZpbGVTeXN0ZW06OmxvY2FsRmlsZVN5c3RlbSgpLnJlYWRGaWxlU3lz
dGVtKGRvY3VtZW50LCB0eXBlLCBSZXNvbHZlVVJJQ2FsbGJhY2tzOjpjcmVhdGUoc3VjY2Vzc0Nh
bGxiYWNrLCBlcnJvckNhbGxiYWNrLCBkb2N1bWVudCwgdHlwZSwgZmlsZVBhdGgpKTsKLX0KLQot
Q09NUElMRV9BU1NFUlQoc3RhdGljX2Nhc3Q8aW50PihET01XaW5kb3dGaWxlU3lzdGVtOjpURU1Q
T1JBUlkpID09IHN0YXRpY19jYXN0PGludD4oRmlsZVN5c3RlbVR5cGVUZW1wb3JhcnkpLCBlbnVt
X21pc21hdGNoKTsKLUNPTVBJTEVfQVNTRVJUKHN0YXRpY19jYXN0PGludD4oRE9NV2luZG93Rmls
ZVN5c3RlbTo6UEVSU0lTVEVOVCkgPT0gc3RhdGljX2Nhc3Q8aW50PihGaWxlU3lzdGVtVHlwZVBl
cnNpc3RlbnQpLCBlbnVtX21pc21hdGNoKTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0j
ZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9maWxlc3lzdGVtL0RPTVdpbmRvd0ZpbGVTeXN0ZW0uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NV2luZG93RmlsZVN5c3RlbS5oCShyZXZpc2lv
biAxNTY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NV2luZG93
RmlsZVN5c3RlbS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYzICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTIsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKLSAqCi0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKLSAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UKLSAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFCi0gKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotICog
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IKLSAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0gKiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKLSAq
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkKLSAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSAotICogREFNQUdFLgotICov
Ci0KLSNpZm5kZWYgRE9NV2luZG93RmlsZVN5c3RlbV9oCi0jZGVmaW5lIERPTVdpbmRvd0ZpbGVT
eXN0ZW1faAotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1jbGFzcyBET01XaW5kb3c7Ci1jbGFzcyBFbnRyeUNhbGxiYWNrOwotY2xhc3Mg
RXJyb3JDYWxsYmFjazsKLWNsYXNzIEZpbGVTeXN0ZW1DYWxsYmFjazsKLQotY2xhc3MgRE9NV2lu
ZG93RmlsZVN5c3RlbSB7Ci1wdWJsaWM6Ci0KLSAgICBzdGF0aWMgdm9pZCB3ZWJraXRSZXF1ZXN0
RmlsZVN5c3RlbShET01XaW5kb3cqLCBpbnQgdHlwZSwgbG9uZyBsb25nIHNpemUsIFBhc3NSZWZQ
dHI8RmlsZVN5c3RlbUNhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPik7Ci0gICAg
c3RhdGljIHZvaWQgd2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVVSTChET01XaW5kb3cqLCBj
b25zdCBTdHJpbmcmLCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9y
Q2FsbGJhY2s+KTsKLQotICAgIC8vIFRoZXkgYXJlIHBsYWNlZCBoZXJlIGFuZCBpbiBhbGwgY2Fw
aXRhbCBsZXR0ZXJzIHNvIHRoZXkgY2FuIGJlIGNoZWNrZWQgYWdhaW5zdCB0aGUgY29uc3RhbnRz
IGluIHRoZQotICAgIC8vIElETCBhdCBjb21waWxlIHRpbWUuCi0gICAgZW51bSB7Ci0gICAgICAg
IFRFTVBPUkFSWSwKLSAgICAgICAgUEVSU0lTVEVOVCwKLSAgICB9OwotCi1wcml2YXRlOgotICAg
IERPTVdpbmRvd0ZpbGVTeXN0ZW0oKTsKLSAgICB+RE9NV2luZG93RmlsZVN5c3RlbSgpOwotfTsK
LQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVN
KQotCi0jZW5kaWYgLy8gRE9NV2luZG93RmlsZVN5c3RlbV9oCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NV2luZG93RmlsZVN5c3RlbS5pZGwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTVdpbmRvd0ZpbGVTeXN0ZW0u
aWRsCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0
ZW0vRE9NV2luZG93RmlsZVN5c3RlbS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTEsMzggKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1bCi0gICAgQ29uZGl0aW9uYWw9RklMRV9TWVNU
RU0sCi1dIHBhcnRpYWwgaW50ZXJmYWNlIERPTVdpbmRvdyB7Ci0gICAgY29uc3QgdW5zaWduZWQg
c2hvcnQgVEVNUE9SQVJZID0gMDsKLSAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBQRVJTSVNURU5U
ID0gMTsKLQotICAgIHZvaWQgd2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0odW5zaWduZWQgc2hvcnQg
dHlwZSwgbG9uZyBsb25nIHNpemUsCi0gICAgICAgICAgICBGaWxlU3lzdGVtQ2FsbGJhY2sgc3Vj
Y2Vzc0NhbGxiYWNrLCBvcHRpb25hbCBFcnJvckNhbGxiYWNrIGVycm9yQ2FsbGJhY2spOwotICAg
IHZvaWQgd2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVVSTChET01TdHJpbmcgdXJsLAotICAg
ICAgICAgICAgRW50cnlDYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2ssIG9wdGlvbmFsIEVycm9yQ2Fs
bGJhY2sgZXJyb3JDYWxsYmFjayk7Ci19OwotCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZpbGVzeXN0ZW0vRGF0YVRyYW5zZmVySXRlbUZpbGVTeXN0ZW0uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGF0YVRyYW5zZmVySXRlbUZpbGVTeXN0
ZW0uaAkocmV2aXNpb24gMTU2NjkxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lz
dGVtL0RhdGFUcmFuc2Zlckl0ZW1GaWxlU3lzdGVtLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNTcg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0Ogot
ICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0g
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpZm5kZWYgRGF0YVRyYW5zZmVySXRlbUZpbGVTeXN0ZW1faAotI2RlZmluZSBEYXRh
VHJhbnNmZXJJdGVtRmlsZVN5c3RlbV9oCi0KLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNp
bmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNz
IERhdGFUcmFuc2Zlckl0ZW07Ci1jbGFzcyBFbnRyeTsKLWNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ7Ci0KLWNsYXNzIERhdGFUcmFuc2Zlckl0ZW1GaWxlU3lzdGVtIHsKLXB1YmxpYzoKLSAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxFbnRyeT4gd2Via2l0R2V0QXNFbnRyeShTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgRGF0YVRyYW5zZmVySXRlbSopOwotCi1wcml2YXRlOgotICAgIERhdGFUcmFu
c2Zlckl0ZW1GaWxlU3lzdGVtKCk7Ci0gICAgfkRhdGFUcmFuc2Zlckl0ZW1GaWxlU3lzdGVtKCk7
Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoRklMRV9T
WVNURU0pCi0KLSNlbmRpZiAvLyBEYXRhVHJhbnNmZXJJdGVtRmlsZVN5c3RlbV9oCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGF0YVRyYW5zZmVySXRlbUZpbGVTeXN0
ZW0uaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9E
YXRhVHJhbnNmZXJJdGVtRmlsZVN5c3RlbS5pZGwJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9EYXRhVHJhbnNmZXJJdGVtRmlsZVN5c3RlbS5p
ZGwJKHdvcmtpbmcgY29weSkKQEAgLTEsMzYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
Ci0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
Ci0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLVsKLSAgICBDb25kaXRpb25hbD1EQVRB
X1RSQU5TRkVSX0lURU1TJkZJTEVfU1lTVEVNLAotXSBwYXJ0aWFsIGludGVyZmFjZSBEYXRhVHJh
bnNmZXJJdGVtIHsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gRW50cnkg
d2Via2l0R2V0QXNFbnRyeSgpOwotfTsKLQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
aWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5RW50cnkuY3BwCShyZXZpc2lvbiAxNTY2OTEp
CisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5RW50cnkuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDc5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwot
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAot
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiRGlyZWN0b3J5RW50cnkuaCIKLQotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2lu
Y2x1ZGUgIkRpcmVjdG9yeVJlYWRlci5oIgotI2luY2x1ZGUgIkVudHJ5Q2FsbGJhY2suaCIKLSNp
bmNsdWRlICJFcnJvckNhbGxiYWNrLmgiCi0jaW5jbHVkZSAiRmlsZUVycm9yLmgiCi0jaW5jbHVk
ZSAiVm9pZENhbGxiYWNrLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotRGlyZWN0b3J5RW50
cnk6OkRpcmVjdG9yeUVudHJ5KFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbUJhc2U+IGZpbGVTeXN0
ZW0sIGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpCi0gICAgOiBFbnRyeShmaWxlU3lzdGVtLCBmdWxs
UGF0aCkKLXsKLX0KLQotUGFzc1JlZlB0cjxEaXJlY3RvcnlSZWFkZXI+IERpcmVjdG9yeUVudHJ5
OjpjcmVhdGVSZWFkZXIoKQotewotICAgIHJldHVybiBEaXJlY3RvcnlSZWFkZXI6OmNyZWF0ZSht
X2ZpbGVTeXN0ZW0sIG1fZnVsbFBhdGgpOwotfQotCi12b2lkIERpcmVjdG9yeUVudHJ5OjpnZXRG
aWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgRGljdGlvbmFyeSYgb3B0aW9ucywgUGFzc1Jl
ZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxs
YmFjaz4gZXJyb3JDYWxsYmFja1JlZikKLXsKLSAgICBGaWxlU3lzdGVtRmxhZ3MgZmxhZ3Mob3B0
aW9ucyk7Ci0gICAgUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2soZXJyb3JDYWxs
YmFja1JlZik7Ci0gICAgaWYgKCFtX2ZpbGVTeXN0ZW0tPmdldEZpbGUodGhpcywgcGF0aCwgZmxh
Z3MsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykpCi0gICAgICAgIGZpbGVzeXN0ZW0o
KS0+c2NoZWR1bGVDYWxsYmFjayhlcnJvckNhbGxiYWNrLnJlbGVhc2UoKSwgRmlsZUVycm9yOjpj
cmVhdGUoRmlsZUVycm9yOjpJTlZBTElEX01PRElGSUNBVElPTl9FUlIpKTsKLX0KLQotdm9pZCBE
aXJlY3RvcnlFbnRyeTo6Z2V0RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgRGlj
dGlvbmFyeSYgb3B0aW9ucywgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJh
Y2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFja1JlZikKLXsKLSAgICBG
aWxlU3lzdGVtRmxhZ3MgZmxhZ3Mob3B0aW9ucyk7Ci0gICAgUmVmUHRyPEVycm9yQ2FsbGJhY2s+
IGVycm9yQ2FsbGJhY2soZXJyb3JDYWxsYmFja1JlZik7Ci0gICAgaWYgKCFtX2ZpbGVTeXN0ZW0t
PmdldERpcmVjdG9yeSh0aGlzLCBwYXRoLCBmbGFncywgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNh
bGxiYWNrKSkKLSAgICAgICAgZmlsZXN5c3RlbSgpLT5zY2hlZHVsZUNhbGxiYWNrKGVycm9yQ2Fs
bGJhY2sucmVsZWFzZSgpLCBGaWxlRXJyb3I6OmNyZWF0ZShGaWxlRXJyb3I6OklOVkFMSURfTU9E
SUZJQ0FUSU9OX0VSUikpOwotfQotCi12b2lkIERpcmVjdG9yeUVudHJ5OjpyZW1vdmVSZWN1cnNp
dmVseShQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRy
PEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2tSZWYpIGNvbnN0Ci17Ci0gICAgUmVmUHRyPEVy
cm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2soZXJyb3JDYWxsYmFja1JlZik7Ci0gICAgaWYgKCFt
X2ZpbGVTeXN0ZW0tPnJlbW92ZVJlY3Vyc2l2ZWx5KHRoaXMsIHN1Y2Nlc3NDYWxsYmFjaywgZXJy
b3JDYWxsYmFjaykpCi0gICAgICAgIGZpbGVzeXN0ZW0oKS0+c2NoZWR1bGVDYWxsYmFjayhlcnJv
ckNhbGxiYWNrLnJlbGVhc2UoKSwgRmlsZUVycm9yOjpjcmVhdGUoRmlsZUVycm9yOjpJTlZBTElE
X01PRElGSUNBVElPTl9FUlIpKTsKLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lT
VEVNKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVu
dHJ5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0Rp
cmVjdG9yeUVudHJ5LmgJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRyeS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcxICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAq
Ci0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
LSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaWZuZGVmIERpcmVjdG9yeUVudHJ5X2gKLSNkZWZpbmUgRGlyZWN0b3J5RW50cnlfaAot
Ci0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jaW5jbHVkZSAiRW50cnkuaCIKLSNpbmNsdWRl
ICJGaWxlU3lzdGVtRmxhZ3MuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgRE9NRmlsZVN5c3RlbUJhc2U7Ci1jbGFzcyBE
aXJlY3RvcnlSZWFkZXI7Ci1jbGFzcyBFbnRyeUNhbGxiYWNrOwotY2xhc3MgRXJyb3JDYWxsYmFj
azsKLWNsYXNzIFZvaWRDYWxsYmFjazsKLQotY2xhc3MgRGlyZWN0b3J5RW50cnkgOiBwdWJsaWMg
RW50cnkgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPERpcmVjdG9yeUVudHJ5PiBj
cmVhdGUoUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtQmFzZT4gZmlsZVN5c3RlbSwgY29uc3QgU3Ry
aW5nJiBmdWxsUGF0aCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRGlyZWN0
b3J5RW50cnkoZmlsZVN5c3RlbSwgZnVsbFBhdGgpKTsKLSAgICB9Ci0gICAgdmlydHVhbCBib29s
IGlzRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotCi0gICAgUGFzc1JlZlB0cjxE
aXJlY3RvcnlSZWFkZXI+IGNyZWF0ZVJlYWRlcigpOwotICAgIHZvaWQgZ2V0RmlsZShjb25zdCBT
dHJpbmcmIHBhdGgsIGNvbnN0IERpY3Rpb25hcnkmLCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+
ID0gMCwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiA9IDApOwotICAgIHZvaWQgZ2V0RGlyZWN0
b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgRGljdGlvbmFyeSYsIFBhc3NSZWZQdHI8RW50
cnlDYWxsYmFjaz4gPSAwLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+ID0gMCk7Ci0gICAgdm9p
ZCByZW1vdmVSZWN1cnNpdmVseShQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4gc3VjY2Vzc0NhbGxi
YWNrID0gMCwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiA9IDApIGNvbnN0OwotCi1wcml2YXRl
OgotICAgIERpcmVjdG9yeUVudHJ5KFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbUJhc2U+LCBjb25z
dCBTdHJpbmcmIGZ1bGxQYXRoKTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlCi0KLSNlbmRpZiAvLyBF
TkFCTEUoRklMRV9TWVNURU0pCi0KLSNlbmRpZiAvLyBEaXJlY3RvcnlFbnRyeV9oCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5RW50cnkuaWRsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRy
eS5pZGwJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5
c3RlbS9EaXJlY3RvcnlFbnRyeS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTEsNDIgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0g
KiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQot
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLVsK
LSAgICBOb0ludGVyZmFjZU9iamVjdCwKLSAgICBDb25kaXRpb25hbD1GSUxFX1NZU1RFTSwKLSAg
ICBKU0dlbmVyYXRlVG9OYXRpdmVPYmplY3QsCi0gICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QsCi0g
ICAgSlNOb1N0YXRpY1RhYmxlcwotXSBpbnRlcmZhY2UgRGlyZWN0b3J5RW50cnkgOiBFbnRyeSB7
Ci0gICAgRGlyZWN0b3J5UmVhZGVyIGNyZWF0ZVJlYWRlcigpOwotICAgIHZvaWQgZ2V0RmlsZShb
VHJlYXROdWxsQXM9TnVsbFN0cmluZywgVHJlYXRVbmRlZmluZWRBcz1OdWxsU3RyaW5nXSBET01T
dHJpbmcgcGF0aCwgb3B0aW9uYWwgRGljdGlvbmFyeSBvcHRpb25zLCBvcHRpb25hbCBFbnRyeUNh
bGxiYWNrIHN1Y2Nlc3NDYWxsYmFjaywgb3B0aW9uYWwgRXJyb3JDYWxsYmFjayBlcnJvckNhbGxi
YWNrKTsKLSAgICB2b2lkIGdldERpcmVjdG9yeShbVHJlYXROdWxsQXM9TnVsbFN0cmluZywgVHJl
YXRVbmRlZmluZWRBcz1OdWxsU3RyaW5nXSBET01TdHJpbmcgcGF0aCwgb3B0aW9uYWwgRGljdGlv
bmFyeSBvcHRpb25zLCBvcHRpb25hbCBFbnRyeUNhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjaywgb3B0
aW9uYWwgRXJyb3JDYWxsYmFjayBlcnJvckNhbGxiYWNrKTsKLSAgICB2b2lkIHJlbW92ZVJlY3Vy
c2l2ZWx5KFZvaWRDYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2ssIG9wdGlvbmFsIEVycm9yQ2FsbGJh
Y2sgZXJyb3JDYWxsYmFjayk7Ci19OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxl
c3lzdGVtL0RpcmVjdG9yeUVudHJ5U3luYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5U3luYy5jcHAJKHJldmlzaW9uIDE1
NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRy
eVN5bmMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDkxICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9u
LgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmln
LmgiCi0jaW5jbHVkZSAiRGlyZWN0b3J5RW50cnlTeW5jLmgiCi0KLSNpZiBFTkFCTEUoRklMRV9T
WVNURU0pCi0KLSNpbmNsdWRlICJEaXJlY3RvcnlSZWFkZXJTeW5jLmgiCi0jaW5jbHVkZSAiRW50
cnlTeW5jLmgiCi0jaW5jbHVkZSAiRmlsZUVudHJ5U3luYy5oIgotI2luY2x1ZGUgIkZpbGVFeGNl
cHRpb24uaCIKLSNpbmNsdWRlICJTeW5jQ2FsbGJhY2tIZWxwZXIuaCIKLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1EaXJlY3RvcnlFbnRyeVN5bmM6OkRpcmVjdG9yeUVudHJ5U3luYyhQYXNzUmVm
UHRyPERPTUZpbGVTeXN0ZW1CYXNlPiBmaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIGZ1bGxQYXRo
KQotICAgIDogRW50cnlTeW5jKGZpbGVTeXN0ZW0sIGZ1bGxQYXRoKQotewotfQotCi1QYXNzUmVm
UHRyPERpcmVjdG9yeVJlYWRlclN5bmM+IERpcmVjdG9yeUVudHJ5U3luYzo6Y3JlYXRlUmVhZGVy
KEV4Y2VwdGlvbkNvZGUmKQotewotICAgIHJldHVybiBEaXJlY3RvcnlSZWFkZXJTeW5jOjpjcmVh
dGUobV9maWxlU3lzdGVtLCBtX2Z1bGxQYXRoKTsKLX0KLQotUGFzc1JlZlB0cjxGaWxlRW50cnlT
eW5jPiBEaXJlY3RvcnlFbnRyeVN5bmM6OmdldEZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25z
dCBEaWN0aW9uYXJ5JiBvcHRpb25zLCBFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICBlYyA9IDA7
Ci0gICAgRmlsZVN5c3RlbUZsYWdzIGZsYWdzKG9wdGlvbnMpOwotICAgIEVudHJ5U3luY0NhbGxi
YWNrSGVscGVyIGhlbHBlcihtX2ZpbGVTeXN0ZW0tPmFzeW5jRmlsZVN5c3RlbSgpKTsKLSAgICBp
ZiAoIW1fZmlsZVN5c3RlbS0+Z2V0RmlsZSh0aGlzLCBwYXRoLCBmbGFncywgaGVscGVyLnN1Y2Nl
c3NDYWxsYmFjaygpLCBoZWxwZXIuZXJyb3JDYWxsYmFjaygpKSkgewotICAgICAgICBlYyA9IEZp
bGVFeGNlcHRpb246OklOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUjsKLSAgICAgICAgcmV0dXJuIDA7
Ci0gICAgfQotICAgIHJldHVybiBzdGF0aWNfcG9pbnRlcl9jYXN0PEZpbGVFbnRyeVN5bmM+KGhl
bHBlci5nZXRSZXN1bHQoZWMpKTsKLX0KLQotUGFzc1JlZlB0cjxEaXJlY3RvcnlFbnRyeVN5bmM+
IERpcmVjdG9yeUVudHJ5U3luYzo6Z2V0RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgY29u
c3QgRGljdGlvbmFyeSYgb3B0aW9ucywgRXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0gICAgZWMgPSAw
OwotICAgIEZpbGVTeXN0ZW1GbGFncyBmbGFncyhvcHRpb25zKTsKLSAgICBFbnRyeVN5bmNDYWxs
YmFja0hlbHBlciBoZWxwZXIobV9maWxlU3lzdGVtLT5hc3luY0ZpbGVTeXN0ZW0oKSk7Ci0gICAg
aWYgKCFtX2ZpbGVTeXN0ZW0tPmdldERpcmVjdG9yeSh0aGlzLCBwYXRoLCBmbGFncywgaGVscGVy
LnN1Y2Nlc3NDYWxsYmFjaygpLCBoZWxwZXIuZXJyb3JDYWxsYmFjaygpKSkgewotICAgICAgICBl
YyA9IEZpbGVFeGNlcHRpb246OklOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUjsKLSAgICAgICAgcmV0
dXJuIDA7Ci0gICAgfQotICAgIHJldHVybiBzdGF0aWNfcG9pbnRlcl9jYXN0PERpcmVjdG9yeUVu
dHJ5U3luYz4oaGVscGVyLmdldFJlc3VsdChlYykpOwotfQotCi12b2lkIERpcmVjdG9yeUVudHJ5
U3luYzo6cmVtb3ZlUmVjdXJzaXZlbHkoRXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0gICAgZWMgPSAw
OwotICAgIFZvaWRTeW5jQ2FsbGJhY2tIZWxwZXIgaGVscGVyKG1fZmlsZVN5c3RlbS0+YXN5bmNG
aWxlU3lzdGVtKCkpOwotICAgIGlmICghbV9maWxlU3lzdGVtLT5yZW1vdmVSZWN1cnNpdmVseSh0
aGlzLCBoZWxwZXIuc3VjY2Vzc0NhbGxiYWNrKCksIGhlbHBlci5lcnJvckNhbGxiYWNrKCkpKSB7
Ci0gICAgICAgIGVjID0gRmlsZUV4Y2VwdGlvbjo6SU5WQUxJRF9NT0RJRklDQVRJT05fRVJSOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGhlbHBlci5nZXRSZXN1bHQoZWMpOwotfQotCi19
Ci0KLSNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5RW50cnlTeW5jLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5U3luYy5oCShyZXZp
c2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0
b3J5RW50cnlTeW5jLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNjkgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmli
dXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
Ci0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgRGly
ZWN0b3J5RW50cnlTeW5jX2gKLSNkZWZpbmUgRGlyZWN0b3J5RW50cnlTeW5jX2gKLQotI2lmIEVO
QUJMRShGSUxFX1NZU1RFTSkKLQotI2luY2x1ZGUgIkVudHJ5U3luYy5oIgotI2luY2x1ZGUgIkZp
bGVTeXN0ZW1GbGFncy5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBEaXJlY3RvcnlSZWFkZXJTeW5jOwotY2xhc3MgRmls
ZUVudHJ5U3luYzsKLQotY2xhc3MgRGlyZWN0b3J5RW50cnlTeW5jIDogcHVibGljIEVudHJ5U3lu
YyB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8RGlyZWN0b3J5RW50cnlTeW5jPiBj
cmVhdGUoUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtQmFzZT4gZmlsZVN5c3RlbSwgY29uc3QgU3Ry
aW5nJiBmdWxsUGF0aCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRGlyZWN0
b3J5RW50cnlTeW5jKGZpbGVTeXN0ZW0sIGZ1bGxQYXRoKSk7Ci0gICAgfQotICAgIHZpcnR1YWwg
Ym9vbCBpc0RpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLQotICAgIFBhc3NSZWZQ
dHI8RGlyZWN0b3J5UmVhZGVyU3luYz4gY3JlYXRlUmVhZGVyKEV4Y2VwdGlvbkNvZGUmKTsKLSAg
ICBQYXNzUmVmUHRyPEZpbGVFbnRyeVN5bmM+IGdldEZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBj
b25zdCBEaWN0aW9uYXJ5JiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIFBhc3NSZWZQdHI8RGlyZWN0
b3J5RW50cnlTeW5jPiBnZXREaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBEaWN0
aW9uYXJ5JiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgcmVtb3ZlUmVjdXJzaXZlbHkoRXhj
ZXB0aW9uQ29kZSYpOwotCi1wcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBFbnRyeVN5bmM7Ci0g
ICAgRGlyZWN0b3J5RW50cnlTeW5jKFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbUJhc2U+LCBjb25z
dCBTdHJpbmcmIGZ1bGxQYXRoKTsKLX07Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZ
U1RFTSkKLQotI2VuZGlmIC8vIERpcmVjdG9yeUVudHJ5U3luY19oCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5RW50cnlTeW5jLmlkbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5RW50cnlTeW5j
LmlkbAkocmV2aXNpb24gMTU2NjkxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lz
dGVtL0RpcmVjdG9yeUVudHJ5U3luYy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTEsNDIgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
Ci0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LVsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKLSAgICBDb25kaXRpb25hbD1GSUxFX1NZU1RFTSwK
LSAgICBKU0dlbmVyYXRlVG9OYXRpdmVPYmplY3QsCi0gICAgSlNHZW5lcmF0ZVRvSlNPYmplY3Qs
Ci0gICAgSlNOb1N0YXRpY1RhYmxlcwotXSBpbnRlcmZhY2UgRGlyZWN0b3J5RW50cnlTeW5jIDog
RW50cnlTeW5jIHsKLSAgICBbUmFpc2VzRXhjZXB0aW9uXSBEaXJlY3RvcnlSZWFkZXJTeW5jIGNy
ZWF0ZVJlYWRlcigpOwotICAgIFtSYWlzZXNFeGNlcHRpb25dIEZpbGVFbnRyeVN5bmMgZ2V0Rmls
ZShbVHJlYXROdWxsQXM9TnVsbFN0cmluZywgVHJlYXRVbmRlZmluZWRBcz1OdWxsU3RyaW5nXSBE
T01TdHJpbmcgcGF0aCwgRGljdGlvbmFyeSBmbGFncyk7Ci0gICAgW1JhaXNlc0V4Y2VwdGlvbl0g
RGlyZWN0b3J5RW50cnlTeW5jIGdldERpcmVjdG9yeShbVHJlYXROdWxsQXM9TnVsbFN0cmluZywg
VHJlYXRVbmRlZmluZWRBcz1OdWxsU3RyaW5nXSBET01TdHJpbmcgcGF0aCwgRGljdGlvbmFyeSBm
bGFncyk7Ci0gICAgW1JhaXNlc0V4Y2VwdGlvbl0gdm9pZCByZW1vdmVSZWN1cnNpdmVseSgpOwot
fTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFk
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9E
aXJlY3RvcnlSZWFkZXIuY3BwCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MSw1OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBt
ZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkRpcmVjdG9yeVJlYWRl
ci5oIgotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jaW5jbHVkZSAiRW50cmllc0NhbGxi
YWNrLmgiCi0jaW5jbHVkZSAiRW50cnlBcnJheS5oIgotI2luY2x1ZGUgIkVycm9yQ2FsbGJhY2su
aCIKLSNpbmNsdWRlICJGaWxlRXJyb3IuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1EaXJl
Y3RvcnlSZWFkZXI6OkRpcmVjdG9yeVJlYWRlcihQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW1CYXNl
PiBmaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKQotICAgIDogRGlyZWN0b3J5UmVh
ZGVyQmFzZShmaWxlU3lzdGVtLCBmdWxsUGF0aCkKLXsKLX0KLQotdm9pZCBEaXJlY3RvcnlSZWFk
ZXI6OnJlYWRFbnRyaWVzKFBhc3NSZWZQdHI8RW50cmllc0NhbGxiYWNrPiBlbnRyaWVzQ2FsbGJh
Y2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKLXsKLSAgICBpZiAo
IW1faGFzTW9yZUVudHJpZXMpIHsKLSAgICAgICAgZmlsZXN5c3RlbSgpLT5zY2hlZHVsZUNhbGxi
YWNrKGVudHJpZXNDYWxsYmFjaywgRW50cnlBcnJheTo6Y3JlYXRlKCkpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIGZpbGVzeXN0ZW0oKS0+cmVhZERpcmVjdG9yeSh0aGlzLCBtX2Z1bGxQ
YXRoLCBlbnRyaWVzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spOwotfQotCi19Ci0KLSNlbmRpZiAv
LyBFTkFCTEUoRklMRV9TWVNURU0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVz
eXN0ZW0vRGlyZWN0b3J5UmVhZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlci5oCShyZXZpc2lvbiAxNTY2OTEpCisrKyBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEsNjcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0g
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgRGlyZWN0b3J5UmVhZGVyX2gKLSNkZWZp
bmUgRGlyZWN0b3J5UmVhZGVyX2gKLQotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2luY2x1
ZGUgIkRPTUZpbGVTeXN0ZW0uaCIKLSNpbmNsdWRlICJEaXJlY3RvcnlSZWFkZXJCYXNlLmgiCi0j
aW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgot
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LWNsYXNzIEVudHJpZXNDYWxsYmFjazsKLWNsYXNzIEVudHJpZXNDYWxsYmFja3M7Ci1jbGFzcyBF
cnJvckNhbGxiYWNrOwotCi1jbGFzcyBEaXJlY3RvcnlSZWFkZXIgOiBwdWJsaWMgRGlyZWN0b3J5
UmVhZGVyQmFzZSB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8RGlyZWN0b3J5UmVh
ZGVyPiBjcmVhdGUoUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtQmFzZT4gZmlsZVN5c3RlbSwgY29u
c3QgU3RyaW5nJiBmdWxsUGF0aCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
RGlyZWN0b3J5UmVhZGVyKGZpbGVTeXN0ZW0sIGZ1bGxQYXRoKSk7Ci0gICAgfQotCi0gICAgdm9p
ZCByZWFkRW50cmllcyhQYXNzUmVmUHRyPEVudHJpZXNDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJy
b3JDYWxsYmFjaz4gPSAwKTsKLQotICAgIERPTUZpbGVTeXN0ZW0qIGZpbGVzeXN0ZW0oKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDxET01GaWxlU3lzdGVtKj4obV9maWxlU3lzdGVtLmdldCgp
KTsgfQotCi1wcml2YXRlOgotICAgIERpcmVjdG9yeVJlYWRlcihQYXNzUmVmUHRyPERPTUZpbGVT
eXN0ZW1CYXNlPiwgY29uc3QgU3RyaW5nJiBmdWxsUGF0aCk7Ci19OwotCi19Ci0KLSNlbmRpZiAv
LyBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNlbmRpZiAvLyBEaXJlY3RvcnlSZWFkZXJfaApJbmRl
eDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlci5pZGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9y
eVJlYWRlci5pZGwJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFkZXIuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xLDM4ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAq
Ci0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
LSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi1bCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCi0gICAgQ29uZGl0aW9uYWw9RklMRV9TWVNU
RU0sCi0gICAgSlNOb1N0YXRpY1RhYmxlcywKLSAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxl
Ci1dIGludGVyZmFjZSBEaXJlY3RvcnlSZWFkZXIgewotICAgIHZvaWQgcmVhZEVudHJpZXMoRW50
cmllc0NhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjaywgb3B0aW9uYWwgRXJyb3JDYWxsYmFjayBlcnJv
ckNhbGxiYWNrKTsKLX07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0v
RGlyZWN0b3J5UmVhZGVyQmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFkZXJCYXNlLmgJKHJldmlzaW9uIDE1NjY5MSkKKysr
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFkZXJCYXNlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNjggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0g
KiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0g
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgRGlyZWN0b3J5UmVhZGVyQmFz
ZV9oCi0jZGVmaW5lIERpcmVjdG9yeVJlYWRlckJhc2VfaAotCi0jaWYgRU5BQkxFKEZJTEVfU1lT
VEVNKQotCi0jaW5jbHVkZSAiRE9NRmlsZVN5c3RlbUJhc2UuaCIKLSNpbmNsdWRlIDx3dGYvUGFz
c1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgRGlyZWN0b3J5
UmVhZGVyQmFzZSA6IHB1YmxpYyBSZWZDb3VudGVkPERpcmVjdG9yeVJlYWRlckJhc2U+IHsKLXB1
YmxpYzoKLSAgICBET01GaWxlU3lzdGVtQmFzZSogZmlsZXN5c3RlbSgpIGNvbnN0IHsgcmV0dXJu
IG1fZmlsZVN5c3RlbS5nZXQoKTsgfQotICAgIHZvaWQgc2V0SGFzTW9yZUVudHJpZXMoYm9vbCBo
YXNNb3JlRW50cmllcykgeyBtX2hhc01vcmVFbnRyaWVzID0gaGFzTW9yZUVudHJpZXM7IH0KLQot
cHJvdGVjdGVkOgotICAgIERpcmVjdG9yeVJlYWRlckJhc2UoUGFzc1JlZlB0cjxET01GaWxlU3lz
dGVtQmFzZT4gZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBmdWxsUGF0aCkKLSAgICAgICAgOiBt
X2ZpbGVTeXN0ZW0oZmlsZVN5c3RlbSkKLSAgICAgICAgLCBtX2Z1bGxQYXRoKGZ1bGxQYXRoKQot
ICAgICAgICAsIG1faGFzTW9yZUVudHJpZXModHJ1ZSkKLSAgICB7Ci0gICAgfQotCi0gICAgUmVm
UHRyPERPTUZpbGVTeXN0ZW1CYXNlPiBtX2ZpbGVTeXN0ZW07Ci0KLSAgICAvLyBUaGlzIGlzIGEg
dmlydHVhbCBwYXRoLgotICAgIFN0cmluZyBtX2Z1bGxQYXRoOwotCi0gICAgYm9vbCBtX2hhc01v
cmVFbnRyaWVzOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5B
QkxFKEZJTEVfU1lTVEVNKQotCi0jZW5kaWYgLy8gRGlyZWN0b3J5UmVhZGVyQmFzZV9oCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyU3luYy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVj
dG9yeVJlYWRlclN5bmMuY3BwCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyU3luYy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNjggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQot
ICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQot
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
LSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJEaXJlY3RvcnlS
ZWFkZXJTeW5jLmgiCi0KLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNpbmNsdWRlICJEaXJl
Y3RvcnlFbnRyeS5oIgotI2luY2x1ZGUgIkRpcmVjdG9yeUVudHJ5U3luYy5oIgotI2luY2x1ZGUg
IkVudHJ5QXJyYXlTeW5jLmgiCi0jaW5jbHVkZSAiRW50cnlTeW5jLmgiCi0jaW5jbHVkZSAiRmls
ZUVudHJ5U3luYy5oIgotI2luY2x1ZGUgIkZpbGVFeGNlcHRpb24uaCIKLSNpbmNsdWRlICJTeW5j
Q2FsbGJhY2tIZWxwZXIuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1EaXJlY3RvcnlSZWFk
ZXJTeW5jOjpEaXJlY3RvcnlSZWFkZXJTeW5jKFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbUJhc2U+
IGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpCi0gICAgOiBEaXJlY3RvcnlSZWFk
ZXJCYXNlKGZpbGVTeXN0ZW0sIGZ1bGxQYXRoKQotewotfQotCi1QYXNzUmVmUHRyPEVudHJ5QXJy
YXlTeW5jPiBEaXJlY3RvcnlSZWFkZXJTeW5jOjpyZWFkRW50cmllcyhFeGNlcHRpb25Db2RlJiBl
YykKLXsKLSAgICBlYyA9IDA7Ci0gICAgaWYgKCFtX2hhc01vcmVFbnRyaWVzKQotICAgICAgICBy
ZXR1cm4gRW50cnlBcnJheVN5bmM6OmNyZWF0ZSgpOwotCi0gICAgRW50cmllc1N5bmNDYWxsYmFj
a0hlbHBlciBoZWxwZXIobV9maWxlU3lzdGVtLT5hc3luY0ZpbGVTeXN0ZW0oKSk7Ci0gICAgaWYg
KCFtX2ZpbGVTeXN0ZW0tPnJlYWREaXJlY3RvcnkodGhpcywgbV9mdWxsUGF0aCwgaGVscGVyLnN1
Y2Nlc3NDYWxsYmFjaygpLCBoZWxwZXIuZXJyb3JDYWxsYmFjaygpKSkgewotICAgICAgICBlYyA9
IEZpbGVFeGNlcHRpb246OklOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUjsKLSAgICAgICAgc2V0SGFz
TW9yZUVudHJpZXMoZmFsc2UpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgcmV0dXJu
IGhlbHBlci5nZXRSZXN1bHQoZWMpOwotfQotCi19IC8vIG5hbWVzcGFjZQotCi0jZW5kaWYgLy8g
RU5BQkxFKEZJTEVfU1lTVEVNKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lz
dGVtL0RpcmVjdG9yeVJlYWRlclN5bmMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyU3luYy5oCShyZXZpc2lvbiAxNTY2OTEp
CisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyU3lu
Yy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDY0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIERpcmVjdG9yeVJlYWRl
clN5bmNfaAotI2RlZmluZSBEaXJlY3RvcnlSZWFkZXJTeW5jX2gKLQotI2lmIEVOQUJMRShGSUxF
X1NZU1RFTSkKLQotI2luY2x1ZGUgIkRpcmVjdG9yeVJlYWRlckJhc2UuaCIKLSNpbmNsdWRlIDx3
dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgRW50
cnlBcnJheVN5bmM7Ci0KLXR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7Ci0KLWNsYXNzIERpcmVj
dG9yeVJlYWRlclN5bmMgOiBwdWJsaWMgRGlyZWN0b3J5UmVhZGVyQmFzZSB7Ci1wdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8RGlyZWN0b3J5UmVhZGVyU3luYz4gY3JlYXRlKFBhc3NSZWZQ
dHI8RE9NRmlsZVN5c3RlbUJhc2U+IGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgZnVsbFBhdGgp
Ci0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERpcmVjdG9yeVJlYWRlclN5bmMo
ZmlsZVN5c3RlbSwgZnVsbFBhdGgpKTsKLSAgICB9Ci0KLSAgICBQYXNzUmVmUHRyPEVudHJ5QXJy
YXlTeW5jPiByZWFkRW50cmllcyhFeGNlcHRpb25Db2RlJik7Ci0KLXByaXZhdGU6Ci0gICAgRGly
ZWN0b3J5UmVhZGVyU3luYyhQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW1CYXNlPiwgY29uc3QgU3Ry
aW5nJiBmdWxsUGF0aCk7Ci19OwotCi19IC8vIG5hbWVzcGFjZQotCi0jZW5kaWYgLy8gRU5BQkxF
KEZJTEVfU1lTVEVNKQotCi0jZW5kaWYgLy8gRGlyZWN0b3J5UmVhZGVyU3luY19oCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyU3luYy5pZGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9y
eVJlYWRlclN5bmMuaWRsCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyU3luYy5pZGwJKHdvcmtpbmcgY29weSkKQEAg
LTEsMzggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICog
bWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLVsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKLSAgICBDb25kaXRpb25hbD1G
SUxFX1NZU1RFTSwKLSAgICBKU05vU3RhdGljVGFibGVzLAotICAgIEltcGxlbWVudGF0aW9uTGFj
a3NWVGFibGUKLV0gaW50ZXJmYWNlIERpcmVjdG9yeVJlYWRlclN5bmMgewotICAgIFtSYWlzZXNF
eGNlcHRpb25dIEVudHJ5QXJyYXlTeW5jIHJlYWRFbnRyaWVzKCk7Ci19OwpJbmRleDogU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0VudHJpZXNDYWxsYmFjay5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyaWVzQ2FsbGJhY2suaAko
cmV2aXNpb24gMTU2NjkxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0Vu
dHJpZXNDYWxsYmFjay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUyICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJp
YnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEVu
dHJpZXNDYWxsYmFja19oCi0jZGVmaW5lIEVudHJpZXNDYWxsYmFja19oCi0KLSNpZiBFTkFCTEUo
RklMRV9TWVNURU0pCi0KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLWNsYXNzIEVudHJ5QXJyYXk7Ci0KLWNsYXNzIEVudHJpZXNDYWxsYmFjayA6
IHB1YmxpYyBSZWZDb3VudGVkPEVudHJpZXNDYWxsYmFjaz4gewotcHVibGljOgotICAgIHZpcnR1
YWwgfkVudHJpZXNDYWxsYmFjaygpIHsgfQotICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVFdmVudChF
bnRyeUFycmF5KikgPSAwOwotfTsKLQotfSAvLyBuYW1lc3BhY2UKLQotI2VuZGlmIC8vIEVOQUJM
RShGSUxFX1NZU1RFTSkKLQotI2VuZGlmIC8vIEVudHJpZXNDYWxsYmFja19oCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cmllc0NhbGxiYWNrLmlkbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cmllc0NhbGxiYWNr
LmlkbAkocmV2aXNpb24gMTU2NjkxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lz
dGVtL0VudHJpZXNDYWxsYmFjay5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTEsMzUgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0g
KiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQot
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLVsK
LSAgICBDb25kaXRpb25hbD1GSUxFX1NZU1RFTSwKLV0gY2FsbGJhY2sgaW50ZXJmYWNlIEVudHJp
ZXNDYWxsYmFjayB7Ci0gICAgYm9vbGVhbiBoYW5kbGVFdmVudChFbnRyeUFycmF5IGVudHJpZXMp
OwotfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5LmNw
cAkocmV2aXNpb24gMTU2NjkxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVt
L0VudHJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw5MSArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlv
bi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLSNpbmNsdWRlICJjb25maWcu
aCIKLSNpbmNsdWRlICJFbnRyeS5oIgotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jaW5j
bHVkZSAiQXN5bmNGaWxlU3lzdGVtLmgiCi0jaW5jbHVkZSAiRGlyZWN0b3J5RW50cnkuaCIKLSNp
bmNsdWRlICJFbnRyeUNhbGxiYWNrLmgiCi0jaW5jbHVkZSAiRXJyb3JDYWxsYmFjay5oIgotI2lu
Y2x1ZGUgIkZpbGVFcnJvci5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW1DYWxsYmFja3MuaCIKLSNp
bmNsdWRlICJNZXRhZGF0YUNhbGxiYWNrLmgiCi0jaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5oIgotI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCi0jaW5jbHVkZSAiVm9pZENhbGxi
YWNrLmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLUVudHJ5OjpFbnRyeShQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW1CYXNlPiBm
aWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKQotICAgIDogRW50cnlCYXNlKGZpbGVT
eXN0ZW0sIGZ1bGxQYXRoKQotewotfQotCi12b2lkIEVudHJ5OjpnZXRNZXRhZGF0YShQYXNzUmVm
UHRyPE1ldGFkYXRhQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNh
bGxiYWNrPiBlcnJvckNhbGxiYWNrUmVmKQotewotICAgIFJlZlB0cjxFcnJvckNhbGxiYWNrPiBl
cnJvckNhbGxiYWNrKGVycm9yQ2FsbGJhY2tSZWYpOwotICAgIGlmICghbV9maWxlU3lzdGVtLT5n
ZXRNZXRhZGF0YSh0aGlzLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spKQotICAgICAg
ICBmaWxlc3lzdGVtKCktPnNjaGVkdWxlQ2FsbGJhY2soZXJyb3JDYWxsYmFjay5yZWxlYXNlKCks
IEZpbGVFcnJvcjo6Y3JlYXRlKEZpbGVFcnJvcjo6SU5WQUxJRF9NT0RJRklDQVRJT05fRVJSKSk7
Ci19Ci0KLXZvaWQgRW50cnk6Om1vdmVUbyhQYXNzUmVmUHRyPERpcmVjdG9yeUVudHJ5PiBwYXJl
bnQsIGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNz
Q2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFja1JlZikgY29u
c3QKLXsKLSAgICBSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayhlcnJvckNhbGxi
YWNrUmVmKTsKLSAgICBpZiAoIW1fZmlsZVN5c3RlbS0+bW92ZSh0aGlzLCBwYXJlbnQuZ2V0KCks
IG5hbWUsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykpCi0gICAgICAgIGZpbGVzeXN0
ZW0oKS0+c2NoZWR1bGVDYWxsYmFjayhlcnJvckNhbGxiYWNrLnJlbGVhc2UoKSwgRmlsZUVycm9y
OjpjcmVhdGUoRmlsZUVycm9yOjpJTlZBTElEX01PRElGSUNBVElPTl9FUlIpKTsKLX0KLQotdm9p
ZCBFbnRyeTo6Y29weVRvKFBhc3NSZWZQdHI8RGlyZWN0b3J5RW50cnk+IHBhcmVudCwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywg
UGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrUmVmKSBjb25zdAotewotICAg
IFJlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKGVycm9yQ2FsbGJhY2tSZWYpOwot
ICAgIGlmICghbV9maWxlU3lzdGVtLT5jb3B5KHRoaXMsIHBhcmVudC5nZXQoKSwgbmFtZSwgc3Vj
Y2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKSkKLSAgICAgICAgZmlsZXN5c3RlbSgpLT5zY2hl
ZHVsZUNhbGxiYWNrKGVycm9yQ2FsbGJhY2sucmVsZWFzZSgpLCBGaWxlRXJyb3I6OmNyZWF0ZShG
aWxlRXJyb3I6OklOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUikpOwotfQotCi12b2lkIEVudHJ5Ojpy
ZW1vdmUoUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0
cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrUmVmKSBjb25zdAotewotICAgIFJlZlB0cjxF
cnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKGVycm9yQ2FsbGJhY2tSZWYpOwotICAgIGlmICgh
bV9maWxlU3lzdGVtLT5yZW1vdmUodGhpcywgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNr
KSkKLSAgICAgICAgZmlsZXN5c3RlbSgpLT5zY2hlZHVsZUNhbGxiYWNrKGVycm9yQ2FsbGJhY2su
cmVsZWFzZSgpLCBGaWxlRXJyb3I6OmNyZWF0ZShGaWxlRXJyb3I6OklOVkFMSURfTU9ESUZJQ0FU
SU9OX0VSUikpOwotfQotCi12b2lkIEVudHJ5OjpnZXRQYXJlbnQoUGFzc1JlZlB0cjxFbnRyeUNh
bGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JD
YWxsYmFja1JlZikgY29uc3QKLXsKLSAgICBSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxs
YmFjayhlcnJvckNhbGxiYWNrUmVmKTsKLSAgICBpZiAoIW1fZmlsZVN5c3RlbS0+Z2V0UGFyZW50
KHRoaXMsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykpCi0gICAgICAgIGZpbGVzeXN0
ZW0oKS0+c2NoZWR1bGVDYWxsYmFjayhlcnJvckNhbGxiYWNrLnJlbGVhc2UoKSwgRmlsZUVycm9y
OjpjcmVhdGUoRmlsZUVycm9yOjpJTlZBTElEX01PRElGSUNBVElPTl9FUlIpKTsKLX0KLQotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5LmgJKHJldmlzaW9uIDE1
NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDY4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQot
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEVudHJ5X2gKLSNkZWZpbmUgRW50cnlf
aAotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jaW5jbHVkZSAiRE9NRmlsZVN5c3RlbS5o
IgotI2luY2x1ZGUgIkVudHJ5QmFzZS5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0j
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFz
cyBEaXJlY3RvcnlFbnRyeTsKLWNsYXNzIEVudHJ5Q2FsbGJhY2s7Ci1jbGFzcyBFbnRyeVN5bmM7
Ci1jbGFzcyBFcnJvckNhbGxiYWNrOwotY2xhc3MgTWV0YWRhdGFDYWxsYmFjazsKLWNsYXNzIFZv
aWRDYWxsYmFjazsKLQotY2xhc3MgRW50cnkgOiBwdWJsaWMgRW50cnlCYXNlIHsKLXB1YmxpYzoK
LSAgICBET01GaWxlU3lzdGVtKiBmaWxlc3lzdGVtKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8RE9NRmlsZVN5c3RlbSo+KG1fZmlsZVN5c3RlbS5nZXQoKSk7IH0KLQotICAgIHZvaWQgZ2V0
TWV0YWRhdGEoUGFzc1JlZlB0cjxNZXRhZGF0YUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2sgPSAw
LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2sgPSAwKTsKLSAgICB2b2lk
IG1vdmVUbyhQYXNzUmVmUHRyPERpcmVjdG9yeUVudHJ5PiBwYXJlbnQsIGNvbnN0IFN0cmluZyYg
bmFtZSA9IFN0cmluZygpLCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFj
ayA9IDAsIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayA9IDApIGNvbnN0
OwotICAgIHZvaWQgY29weVRvKFBhc3NSZWZQdHI8RGlyZWN0b3J5RW50cnk+IHBhcmVudCwgY29u
c3QgU3RyaW5nJiBuYW1lID0gU3RyaW5nKCksIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3Vj
Y2Vzc0NhbGxiYWNrID0gMCwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNr
ID0gMCkgY29uc3Q7Ci0gICAgdm9pZCByZW1vdmUoUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IHN1
Y2Nlc3NDYWxsYmFjayA9IDAsIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFj
ayA9IDApIGNvbnN0OwotICAgIHZvaWQgZ2V0UGFyZW50KFBhc3NSZWZQdHI8RW50cnlDYWxsYmFj
az4gc3VjY2Vzc0NhbGxiYWNrID0gMCwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNh
bGxiYWNrID0gMCkgY29uc3Q7Ci0KLXByb3RlY3RlZDoKLSAgICBFbnRyeShQYXNzUmVmUHRyPERP
TUZpbGVTeXN0ZW1CYXNlPiwgY29uc3QgU3RyaW5nJiBmdWxsUGF0aCk7Ci19OwotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNlbmRp
ZiAvLyBFbnRyeV9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50
cnkuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9F
bnRyeS5pZGwJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmls
ZXN5c3RlbS9FbnRyeS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTEsNDkgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0
cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0g
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLVsKLSAgICBO
b0ludGVyZmFjZU9iamVjdCwKLSAgICBDb25kaXRpb25hbD1GSUxFX1NZU1RFTSwKLSAgICBDdXN0
b21Ub0pTT2JqZWN0LAotICAgIEpTTm9TdGF0aWNUYWJsZXMKLV0gaW50ZXJmYWNlIEVudHJ5IHsK
LSAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBpc0ZpbGU7Ci0gICAgcmVhZG9ubHkgYXR0
cmlidXRlIGJvb2xlYW4gaXNEaXJlY3Rvcnk7Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0
cmluZyBuYW1lOwotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgZnVsbFBhdGg7Ci0g
ICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTUZpbGVTeXN0ZW0gZmlsZXN5c3RlbTsKLQotICAgIHZv
aWQgZ2V0TWV0YWRhdGEoTWV0YWRhdGFDYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2ssIG9wdGlvbmFs
IEVycm9yQ2FsbGJhY2sgZXJyb3JDYWxsYmFjayk7Ci0gICAgdm9pZCBtb3ZlVG8oRGlyZWN0b3J5
RW50cnkgcGFyZW50LCBbVHJlYXROdWxsQXM9TnVsbFN0cmluZywgVHJlYXRVbmRlZmluZWRBcz1O
dWxsU3RyaW5nXSBvcHRpb25hbCBET01TdHJpbmcgbmFtZSwgb3B0aW9uYWwgRW50cnlDYWxsYmFj
ayBzdWNjZXNzQ2FsbGJhY2ssIG9wdGlvbmFsIEVycm9yQ2FsbGJhY2sgZXJyb3JDYWxsYmFjayk7
Ci0gICAgdm9pZCBjb3B5VG8oRGlyZWN0b3J5RW50cnkgcGFyZW50LCBbVHJlYXROdWxsQXM9TnVs
bFN0cmluZywgVHJlYXRVbmRlZmluZWRBcz1OdWxsU3RyaW5nXSBvcHRpb25hbCBET01TdHJpbmcg
bmFtZSwgb3B0aW9uYWwgRW50cnlDYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2ssIG9wdGlvbmFsIEVy
cm9yQ2FsbGJhY2sgZXJyb3JDYWxsYmFjayk7Ci0gICAgRE9NU3RyaW5nIHRvVVJMKCk7Ci0gICAg
dm9pZCByZW1vdmUoVm9pZENhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjaywgb3B0aW9uYWwgRXJyb3JD
YWxsYmFjayBlcnJvckNhbGxiYWNrKTsKLSAgICB2b2lkIGdldFBhcmVudChvcHRpb25hbCBFbnRy
eUNhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjaywgb3B0aW9uYWwgRXJyb3JDYWxsYmFjayBlcnJvckNh
bGxiYWNrKTsKLX07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50
cnlBcnJheS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lz
dGVtL0VudHJ5QXJyYXkuY3BwCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlBcnJheS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNTEg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0Ogot
ICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0g
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJFbnRyeUFycmF5LmgiCi0KLSNp
ZiBFTkFCTEUoRklMRV9TWVNURU0pCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotRW50cnlBcnJh
eTo6RW50cnlBcnJheSgpCi17Ci19Ci0KLUVudHJ5KiBFbnRyeUFycmF5OjppdGVtKHVuc2lnbmVk
IGluZGV4KSBjb25zdAotewotICAgIGlmIChpbmRleCA+PSBtX2VudHJpZXMuc2l6ZSgpKQotICAg
ICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gbV9lbnRyaWVzW2luZGV4XS5nZXQoKTsKLX0KLQot
fSAvLyBuYW1lc3BhY2UKLQotI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeUFycmF5LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5QXJyYXkuaAkocmV2aXNp
b24gMTU2NjkxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5QXJy
YXkuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0g
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBFbnRyeUFycmF5X2gK
LSNkZWZpbmUgRW50cnlBcnJheV9oCi0KLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNpbmNs
dWRlICJFbnRyeS5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBFbnRyeUFycmF5
IDogcHVibGljIFJlZkNvdW50ZWQ8RW50cnlBcnJheT4gewotcHVibGljOgotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPEVudHJ5QXJyYXk+IGNyZWF0ZSgpCi0gICAgewotICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IEVudHJ5QXJyYXkoKSk7Ci0gICAgfQotCi0gICAgdW5zaWduZWQgbGVuZ3RoKCkg
Y29uc3QgeyByZXR1cm4gbV9lbnRyaWVzLnNpemUoKTsgfQotICAgIEVudHJ5KiBpdGVtKHVuc2ln
bmVkIGluZGV4KSBjb25zdDsKLSAgICB2b2lkIHNldCh1bnNpZ25lZCBpbmRleCwgUGFzc1JlZlB0
cjxFbnRyeT4pOwotCi0gICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9lbnRyaWVz
LmlzRW1wdHkoKTsgfQotICAgIHZvaWQgY2xlYXIoKSB7IG1fZW50cmllcy5jbGVhcigpOyB9Ci0g
ICAgdm9pZCBhcHBlbmQoUGFzc1JlZlB0cjxFbnRyeT4gZW50cnkpIHsgbV9lbnRyaWVzLmFwcGVu
ZChlbnRyeSk7IH0KLQotcHJpdmF0ZToKLSAgICBFbnRyeUFycmF5KCk7Ci0KLSAgICBWZWN0b3I8
UmVmUHRyPEVudHJ5PiA+IG1fZW50cmllczsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlCi0KLSNlbmRp
ZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNlbmRpZiAvLyBFbnRyeUFycmF5X2gKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeUFycmF5LmlkbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlBcnJheS5pZGwJ
KHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9F
bnRyeUFycmF5LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMSwzOSArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1
dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
LSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotWwotICAgIE5vSW50
ZXJmYWNlT2JqZWN0LAotICAgIENvbmRpdGlvbmFsPUZJTEVfU1lTVEVNLAotICAgIEpTTm9TdGF0
aWNUYWJsZXMsCi0gICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZQotXSBpbnRlcmZhY2UgRW50
cnlBcnJheSB7Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOwot
ICAgIGdldHRlciBFbnRyeSBpdGVtKFtJc0luZGV4XSB1bnNpZ25lZCBsb25nIGluZGV4KTsKLX07
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlBcnJheVN5bmMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRy
eUFycmF5U3luYy5jcHAJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmlsZXN5c3RlbS9FbnRyeUFycmF5U3luYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNjMg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0Ogot
ICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0g
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJFbnRyeUFycmF5U3luYy5oIgot
Ci0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jaW5jbHVkZSAiRW50cnlBcnJheS5oIgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVBhc3NSZWZQdHI8RW50cnlBcnJheVN5bmM+IEVudHJ5QXJy
YXlTeW5jOjpjcmVhdGUoRW50cnlBcnJheSogZW50cmllcykKLXsKLSAgICBSZWZQdHI8RW50cnlB
cnJheVN5bmM+IGVudHJpZXNTeW5jID0gYWRvcHRSZWYobmV3IEVudHJ5QXJyYXlTeW5jKCkpOwot
ICAgIGlmIChlbnRyaWVzKSB7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBlbnRy
aWVzLT5sZW5ndGgoKTsgKytpKQotICAgICAgICAgICAgZW50cmllc1N5bmMtPmFwcGVuZChFbnRy
eVN5bmM6OmNyZWF0ZShlbnRyaWVzLT5pdGVtKGkpKSk7Ci0gICAgfQotICAgIHJldHVybiBlbnRy
aWVzU3luYy5yZWxlYXNlKCk7Ci19Ci0KLUVudHJ5QXJyYXlTeW5jOjpFbnRyeUFycmF5U3luYygp
Ci17Ci19Ci0KLUVudHJ5U3luYyogRW50cnlBcnJheVN5bmM6Oml0ZW0odW5zaWduZWQgaW5kZXgp
IGNvbnN0Ci17Ci0gICAgaWYgKGluZGV4ID49IG1fZW50cmllcy5zaXplKCkpCi0gICAgICAgIHJl
dHVybiAwOwotICAgIHJldHVybiBtX2VudHJpZXNbaW5kZXhdLmdldCgpOwotfQotCi19Ci0KLSNl
bmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZpbGVzeXN0ZW0vRW50cnlBcnJheVN5bmMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlBcnJheVN5bmMuaAkocmV2aXNpb24gMTU2NjkxKQor
KysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5QXJyYXlTeW5jLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNzAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
Ci0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgRW50cnlBcnJheVN5bmNfaAotI2Rl
ZmluZSBFbnRyeUFycmF5U3luY19oCi0KLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNpbmNs
dWRlICJFbnRyeVN5bmMuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgRW50cnlB
cnJheTsKLQotY2xhc3MgRW50cnlBcnJheVN5bmMgOiBwdWJsaWMgUmVmQ291bnRlZDxFbnRyeUFy
cmF5U3luYz4gewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEVudHJ5QXJyYXlTeW5j
PiBjcmVhdGUoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBFbnRyeUFycmF5
U3luYygpKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxFbnRyeUFycmF5U3luYz4g
Y3JlYXRlKEVudHJ5QXJyYXkqKTsKLQotICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0
dXJuIG1fZW50cmllcy5zaXplKCk7IH0KLSAgICBFbnRyeVN5bmMqIGl0ZW0odW5zaWduZWQgaW5k
ZXgpIGNvbnN0OwotCi0gICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9lbnRyaWVz
LmlzRW1wdHkoKTsgfQotICAgIHZvaWQgY2xlYXIoKSB7IG1fZW50cmllcy5jbGVhcigpOyB9Ci0g
ICAgdm9pZCBhcHBlbmQoUGFzc1JlZlB0cjxFbnRyeVN5bmM+IGVudHJ5KSB7IG1fZW50cmllcy5h
cHBlbmQoZW50cnkpOyB9Ci0KLXByaXZhdGU6Ci0gICAgRW50cnlBcnJheVN5bmMoKTsKLQotICAg
IFZlY3RvcjxSZWZQdHI8RW50cnlTeW5jPiA+IG1fZW50cmllczsKLX07Ci0KLX0KLQotI2VuZGlm
IC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2VuZGlmIC8vIEVudHJ5QXJyYXlTeW5jX2gKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeUFycmF5U3luYy5pZGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5QXJy
YXlTeW5jLmlkbAkocmV2aXNpb24gMTU2NjkxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
aWxlc3lzdGVtL0VudHJ5QXJyYXlTeW5jLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMSwzOSArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgot
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0g
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAotICAgIENvbmRpdGlvbmFsPUZJTEVfU1lTVEVN
LAotICAgIEpTTm9TdGF0aWNUYWJsZXMsCi0gICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZQot
XSBpbnRlcmZhY2UgRW50cnlBcnJheVN5bmMgewotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNp
Z25lZCBsb25nIGxlbmd0aDsKLSAgICBnZXR0ZXIgRW50cnlTeW5jIGl0ZW0oW0lzSW5kZXhdIHVu
c2lnbmVkIGxvbmcgaW5kZXgpOwotfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmls
ZXN5c3RlbS9FbnRyeUJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmlsZXN5c3RlbS9FbnRyeUJhc2UuY3BwCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlCYXNlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMSw2NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0g
KiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0g
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAot
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkVudHJ5QmFzZS5o
IgotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jaW5jbHVkZSAiQXN5bmNGaWxlU3lzdGVt
LmgiCi0jaW5jbHVkZSAiRE9NRmlsZVBhdGguaCIKLSNpbmNsdWRlICJET01GaWxlU3lzdGVtQmFz
ZS5oIgotI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQ
dHIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1FbnRyeUJhc2U6OkVudHJ5QmFzZShQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW1CYXNl
PiBmaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKQotICAgIDogbV9maWxlU3lzdGVt
KGZpbGVTeXN0ZW0pCi0gICAgLCBtX2Z1bGxQYXRoKGZ1bGxQYXRoKQotICAgICwgbV9uYW1lKERP
TUZpbGVQYXRoOjpnZXROYW1lKGZ1bGxQYXRoKSkKLXsKLX0KLQotRW50cnlCYXNlOjp+RW50cnlC
YXNlKCkKLXsKLX0KLQotU3RyaW5nIEVudHJ5QmFzZTo6dG9VUkwoKSBjb25zdAotewotICAgIC8v
IFNvbWUgZmlsZXN5c3RlbSB0eXBlIG1heSBub3Qgc3VwcG9ydCB0b1VSTC4KLSAgICBpZiAoIW1f
ZmlsZVN5c3RlbS0+c3VwcG9ydHNUb1VSTCgpKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0K
LSAgICByZXR1cm4gbV9maWxlU3lzdGVtLT5jcmVhdGVGaWxlU3lzdGVtVVJMKHRoaXMpLnN0cmlu
ZygpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoRklM
RV9TWVNURU0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlC
YXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0Vu
dHJ5QmFzZS5oCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zp
bGVzeXN0ZW0vRW50cnlCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNzUgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBk
aXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
Ci0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5k
ZWYgRW50cnlCYXNlX2gKLSNkZWZpbmUgRW50cnlCYXNlX2gKLQotI2lmIEVOQUJMRShGSUxFX1NZ
U1RFTSkKLQotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgRE9NRmlsZVN5c3Rl
bUJhc2U7Ci1jbGFzcyBFbnRyeVN5bmM7Ci0KLS8vIEEgY29tbW9uIGJhc2UgY2xhc3MgZm9yIEVu
dHJ5IGFuZCBFbnRyeVN5bmMuCi1jbGFzcyBFbnRyeUJhc2UgOiBwdWJsaWMgUmVmQ291bnRlZDxF
bnRyeUJhc2U+IHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5FbnRyeUJhc2UoKTsKLQotICAgIERP
TUZpbGVTeXN0ZW1CYXNlKiBmaWxlc3lzdGVtKCkgY29uc3QgeyByZXR1cm4gbV9maWxlU3lzdGVt
LmdldCgpOyB9Ci0KLSAgICB2aXJ0dWFsIGJvb2wgaXNGaWxlKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQotCi0gICAgY29uc3QgU3RyaW5nJiBmdWxsUGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fZnVs
bFBhdGg7IH0KLSAgICBjb25zdCBTdHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7
IH0KLQotICAgIFN0cmluZyB0b1VSTCgpIGNvbnN0OwotCi1wcm90ZWN0ZWQ6Ci0gICAgRW50cnlC
YXNlKFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbUJhc2U+LCBjb25zdCBTdHJpbmcmIGZ1bGxQYXRo
KTsKLSAgICBmcmllbmQgY2xhc3MgRW50cnlTeW5jOwotCi0gICAgUmVmUHRyPERPTUZpbGVTeXN0
ZW1CYXNlPiBtX2ZpbGVTeXN0ZW07Ci0KLSAgICAvLyBUaGlzIGlzIGEgdmlydHVhbCBwYXRoLgot
ICAgIFN0cmluZyBtX2Z1bGxQYXRoOwotCi0gICAgU3RyaW5nIG1fbmFtZTsKLX07Ci0KLX0KLQot
I2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2VuZGlmIC8vIEVudHJ5QmFzZV9oCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlDYWxsYmFjay5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeUNhbGxi
YWNrLmgJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5
c3RlbS9FbnRyeUNhbGxiYWNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNTIgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBk
aXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
Ci0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5k
ZWYgRW50cnlDYWxsYmFja19oCi0jZGVmaW5lIEVudHJ5Q2FsbGJhY2tfaAotCi0jaWYgRU5BQkxF
KEZJTEVfU1lTVEVNKQotCi0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1jbGFzcyBFbnRyeTsKLQotY2xhc3MgRW50cnlDYWxsYmFjayA6IHB1Ymxp
YyBSZWZDb3VudGVkPEVudHJ5Q2FsbGJhY2s+IHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5FbnRy
eUNhbGxiYWNrKCkgeyB9Ci0gICAgdmlydHVhbCBib29sIGhhbmRsZUV2ZW50KEVudHJ5KikgPSAw
OwotfTsKLQotfSAvLyBuYW1lc3BhY2UKLQotI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkK
LQotI2VuZGlmIC8vIEVudHJ5Q2FsbGJhY2tfaApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9maWxlc3lzdGVtL0VudHJ5Q2FsbGJhY2suaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeUNhbGxiYWNrLmlkbAkocmV2aXNpb24gMTU2Njkx
KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5Q2FsbGJhY2suaWRs
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDM1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwot
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAot
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1bCi0gICAgQ29uZGl0aW9uYWw9RklMRV9T
WVNURU0sCi1dIGNhbGxiYWNrIGludGVyZmFjZSBFbnRyeUNhbGxiYWNrIHsKLSAgICBib29sZWFu
IGhhbmRsZUV2ZW50KEVudHJ5IGVudHJ5KTsKLX07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZpbGVzeXN0ZW0vRW50cnlTeW5jLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlTeW5jLmNwcAkocmV2aXNpb24gMTU2NjkxKQorKysg
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5U3luYy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMTEyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRW50
cnlTeW5jLmgiCi0KLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNpbmNsdWRlICJET01GaWxl
UGF0aC5oIgotI2luY2x1ZGUgIkRPTUZpbGVTeXN0ZW1TeW5jLmgiCi0jaW5jbHVkZSAiRGlyZWN0
b3J5RW50cnkuaCIKLSNpbmNsdWRlICJEaXJlY3RvcnlFbnRyeVN5bmMuaCIKLSNpbmNsdWRlICJG
aWxlRW50cnlTeW5jLmgiCi0jaW5jbHVkZSAiRmlsZUV4Y2VwdGlvbi5oIgotI2luY2x1ZGUgIk1l
dGFkYXRhLmgiCi0jaW5jbHVkZSAiU3luY0NhbGxiYWNrSGVscGVyLmgiCi0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotUGFzc1JlZlB0cjxFbnRyeVN5bmM+IEVudHJ5U3luYzo6Y3JlYXRlKEVudHJ5
QmFzZSogZW50cnkpCi17Ci0gICAgaWYgKGVudHJ5LT5pc0ZpbGUoKSkKLSAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBGaWxlRW50cnlTeW5jKGVudHJ5LT5tX2ZpbGVTeXN0ZW0sIGVudHJ5LT5t
X2Z1bGxQYXRoKSk7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBEaXJlY3RvcnlFbnRyeVN5bmMo
ZW50cnktPm1fZmlsZVN5c3RlbSwgZW50cnktPm1fZnVsbFBhdGgpKTsKLX0KLQotUGFzc1JlZlB0
cjxNZXRhZGF0YT4gRW50cnlTeW5jOjpnZXRNZXRhZGF0YShFeGNlcHRpb25Db2RlJiBlYykKLXsK
LSAgICBlYyA9IDA7Ci0gICAgTWV0YWRhdGFTeW5jQ2FsbGJhY2tIZWxwZXIgaGVscGVyKG1fZmls
ZVN5c3RlbS0+YXN5bmNGaWxlU3lzdGVtKCkpOwotICAgIGlmICghbV9maWxlU3lzdGVtLT5nZXRN
ZXRhZGF0YSh0aGlzLCBoZWxwZXIuc3VjY2Vzc0NhbGxiYWNrKCksIGhlbHBlci5lcnJvckNhbGxi
YWNrKCkpKSB7Ci0gICAgICAgIGVjID0gRmlsZUV4Y2VwdGlvbjo6SU5WQUxJRF9NT0RJRklDQVRJ
T05fRVJSOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgcmV0dXJuIGhlbHBlci5nZXRS
ZXN1bHQoZWMpOwotfQotCi1QYXNzUmVmUHRyPEVudHJ5U3luYz4gRW50cnlTeW5jOjptb3ZlVG8o
UGFzc1JlZlB0cjxEaXJlY3RvcnlFbnRyeVN5bmM+IHBhcmVudCwgY29uc3QgU3RyaW5nJiBuYW1l
LCBFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKLXsKLSAgICBlYyA9IDA7Ci0gICAgRW50cnlTeW5j
Q2FsbGJhY2tIZWxwZXIgaGVscGVyKG1fZmlsZVN5c3RlbS0+YXN5bmNGaWxlU3lzdGVtKCkpOwot
ICAgIGlmICghbV9maWxlU3lzdGVtLT5tb3ZlKHRoaXMsIHBhcmVudC5nZXQoKSwgbmFtZSwgaGVs
cGVyLnN1Y2Nlc3NDYWxsYmFjaygpLCBoZWxwZXIuZXJyb3JDYWxsYmFjaygpKSkgewotICAgICAg
ICBlYyA9IEZpbGVFeGNlcHRpb246OklOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUjsKLSAgICAgICAg
cmV0dXJuIDA7Ci0gICAgfQotICAgIHJldHVybiBoZWxwZXIuZ2V0UmVzdWx0KGVjKTsKLX0KLQot
UGFzc1JlZlB0cjxFbnRyeVN5bmM+IEVudHJ5U3luYzo6Y29weVRvKFBhc3NSZWZQdHI8RGlyZWN0
b3J5RW50cnlTeW5jPiBwYXJlbnQsIGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYg
ZWMpIGNvbnN0Ci17Ci0gICAgZWMgPSAwOwotICAgIEVudHJ5U3luY0NhbGxiYWNrSGVscGVyIGhl
bHBlcihtX2ZpbGVTeXN0ZW0tPmFzeW5jRmlsZVN5c3RlbSgpKTsKLSAgICBpZiAoIW1fZmlsZVN5
c3RlbS0+Y29weSh0aGlzLCBwYXJlbnQuZ2V0KCksIG5hbWUsIGhlbHBlci5zdWNjZXNzQ2FsbGJh
Y2soKSwgaGVscGVyLmVycm9yQ2FsbGJhY2soKSkpIHsKLSAgICAgICAgZWMgPSBGaWxlRXhjZXB0
aW9uOjpJTlZBTElEX01PRElGSUNBVElPTl9FUlI7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0K
LSAgICByZXR1cm4gaGVscGVyLmdldFJlc3VsdChlYyk7Ci19Ci0KLXZvaWQgRW50cnlTeW5jOjpy
ZW1vdmUoRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0Ci17Ci0gICAgZWMgPSAwOwotICAgIFZvaWRT
eW5jQ2FsbGJhY2tIZWxwZXIgaGVscGVyKG1fZmlsZVN5c3RlbS0+YXN5bmNGaWxlU3lzdGVtKCkp
OwotICAgIGlmICghbV9maWxlU3lzdGVtLT5yZW1vdmUodGhpcywgaGVscGVyLnN1Y2Nlc3NDYWxs
YmFjaygpLCBoZWxwZXIuZXJyb3JDYWxsYmFjaygpKSkgewotICAgICAgICBlYyA9IEZpbGVFeGNl
cHRpb246OklOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LSAgICBoZWxwZXIuZ2V0UmVzdWx0KGVjKTsKLX0KLQotUGFzc1JlZlB0cjxFbnRyeVN5bmM+IEVu
dHJ5U3luYzo6Z2V0UGFyZW50KCkgY29uc3QKLXsKLSAgICAvLyBTeW5jIHZlcmlvbiBvZiBnZXRQ
YXJlbnQgZG9lc24ndCB0aHJvdyBleGNlcHRpb25zLgotICAgIFN0cmluZyBwYXJlbnRQYXRoID0g
RE9NRmlsZVBhdGg6OmdldERpcmVjdG9yeShmdWxsUGF0aCgpKTsKLSAgICByZXR1cm4gRGlyZWN0
b3J5RW50cnlTeW5jOjpjcmVhdGUobV9maWxlU3lzdGVtLCBwYXJlbnRQYXRoKTsKLX0KLQotRW50
cnlTeW5jOjpFbnRyeVN5bmMoUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtQmFzZT4gZmlsZVN5c3Rl
bSwgY29uc3QgU3RyaW5nJiBmdWxsUGF0aCkKLSAgICA6IEVudHJ5QmFzZShmaWxlU3lzdGVtLCBm
dWxsUGF0aCkKLXsKLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5U3luYy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeVN5bmMuaAkocmV2
aXNpb24gMTU2NjkxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5
U3luYy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDY5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgot
ICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
LSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEVudHJ5U3luY19o
Ci0jZGVmaW5lIEVudHJ5U3luY19oCi0KLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNpbmNs
dWRlICJET01GaWxlU3lzdGVtU3luYy5oIgotI2luY2x1ZGUgIkVudHJ5QmFzZS5oIgotI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIERpcmVj
dG9yeUVudHJ5U3luYzsKLWNsYXNzIE1ldGFkYXRhOwotCi10eXBlZGVmIGludCBFeGNlcHRpb25D
b2RlOwotCi1jbGFzcyBFbnRyeVN5bmMgOiBwdWJsaWMgRW50cnlCYXNlIHsKLXB1YmxpYzoKLSAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxFbnRyeVN5bmM+IGNyZWF0ZShFbnRyeUJhc2UqKTsKLQotICAg
IERPTUZpbGVTeXN0ZW1TeW5jKiBmaWxlc3lzdGVtKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8RE9NRmlsZVN5c3RlbVN5bmMqPihtX2ZpbGVTeXN0ZW0uZ2V0KCkpOyB9Ci0KLSAgICBQYXNz
UmVmUHRyPE1ldGFkYXRhPiBnZXRNZXRhZGF0YShFeGNlcHRpb25Db2RlJik7Ci0gICAgUGFzc1Jl
ZlB0cjxFbnRyeVN5bmM+IG1vdmVUbyhQYXNzUmVmUHRyPERpcmVjdG9yeUVudHJ5U3luYz4gcGFy
ZW50LCBjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKLSAgICBQYXNz
UmVmUHRyPEVudHJ5U3luYz4gY29weVRvKFBhc3NSZWZQdHI8RGlyZWN0b3J5RW50cnlTeW5jPiBw
YXJlbnQsIGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0OwotICAgIHZv
aWQgcmVtb3ZlKEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKLSAgICBQYXNzUmVmUHRyPEVudHJ5U3lu
Yz4gZ2V0UGFyZW50KCkgY29uc3Q7Ci0KLXByb3RlY3RlZDoKLSAgICBFbnRyeVN5bmMoUGFzc1Jl
ZlB0cjxET01GaWxlU3lzdGVtQmFzZT4sIGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpOwotfTsKLQot
fQotCi0jZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jZW5kaWYgLy8gRW50cnlTeW5j
X2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeVN5bmMuaWRs
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeVN5
bmMuaWRsCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVz
eXN0ZW0vRW50cnlTeW5jLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMSw0OSArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRp
c3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
LSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotWwotICAg
IE5vSW50ZXJmYWNlT2JqZWN0LAotICAgIENvbmRpdGlvbmFsPUZJTEVfU1lTVEVNLAotICAgIEN1
c3RvbVRvSlNPYmplY3QsCi0gICAgSlNOb1N0YXRpY1RhYmxlcwotXSBpbnRlcmZhY2UgRW50cnlT
eW5jIHsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBpc0ZpbGU7Ci0gICAgcmVhZG9u
bHkgYXR0cmlidXRlIGJvb2xlYW4gaXNEaXJlY3Rvcnk7Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRl
IERPTVN0cmluZyBuYW1lOwotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgZnVsbFBh
dGg7Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTUZpbGVTeXN0ZW1TeW5jIGZpbGVzeXN0ZW07
Ci0KLSAgICBbUmFpc2VzRXhjZXB0aW9uXSBNZXRhZGF0YSBnZXRNZXRhZGF0YSgpOwotICAgIFtS
YWlzZXNFeGNlcHRpb25dIEVudHJ5U3luYyBtb3ZlVG8oRGlyZWN0b3J5RW50cnlTeW5jIHBhcmVu
dCwgW1RyZWF0TnVsbEFzPU51bGxTdHJpbmcsIFRyZWF0VW5kZWZpbmVkQXM9TnVsbFN0cmluZ10g
RE9NU3RyaW5nIG5hbWUpOwotICAgIFtSYWlzZXNFeGNlcHRpb25dIEVudHJ5U3luYyBjb3B5VG8o
RGlyZWN0b3J5RW50cnlTeW5jIHBhcmVudCwgW1RyZWF0TnVsbEFzPU51bGxTdHJpbmcsIFRyZWF0
VW5kZWZpbmVkQXM9TnVsbFN0cmluZ10gRE9NU3RyaW5nIG5hbWUpOwotICAgIERPTVN0cmluZyB0
b1VSTCgpOwotICAgIFtSYWlzZXNFeGNlcHRpb25dIHZvaWQgcmVtb3ZlKCk7Ci0gICAgRGlyZWN0
b3J5RW50cnlTeW5jIGdldFBhcmVudCgpOwotfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmlsZXN5c3RlbS9FcnJvckNhbGxiYWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9maWxlc3lzdGVtL0Vycm9yQ2FsbGJhY2suaAkocmV2aXNpb24gMTU2NjkxKQor
KysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0Vycm9yQ2FsbGJhY2suaAkod29y
a2luZyBjb3B5KQpAQCAtMSw1MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
LSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBFcnJvckNhbGxiYWNrX2gKLSNkZWZp
bmUgRXJyb3JDYWxsYmFja19oCi0KLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEZpbGVF
cnJvcjsKLQotY2xhc3MgRXJyb3JDYWxsYmFjayA6IHB1YmxpYyBSZWZDb3VudGVkPEVycm9yQ2Fs
bGJhY2s+IHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5FcnJvckNhbGxiYWNrKCkgeyB9Ci0gICAg
dmlydHVhbCBib29sIGhhbmRsZUV2ZW50KEZpbGVFcnJvciopID0gMDsKLX07Ci0KLX0gLy8gbmFt
ZXNwYWNlCi0KLSNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNlbmRpZiAvLyBFcnJv
ckNhbGxiYWNrX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9FcnJv
ckNhbGxiYWNrLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVz
eXN0ZW0vRXJyb3JDYWxsYmFjay5pZGwJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmlsZXN5c3RlbS9FcnJvckNhbGxiYWNrLmlkbAkod29ya2luZyBjb3B5KQpA
QCAtMSwzNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0g
KiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0g
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAot
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotWwotICAgIENvbmRpdGlvbmFsPUZJTEVfU1lTVEVNLAotXSBjYWxsYmFj
ayBpbnRlcmZhY2UgRXJyb3JDYWxsYmFjayB7Ci0gICAgYm9vbGVhbiBoYW5kbGVFdmVudChGaWxl
RXJyb3IgZXJyb3IpOwotfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3Rl
bS9GaWxlQ2FsbGJhY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zp
bGVzeXN0ZW0vRmlsZUNhbGxiYWNrLmgJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlQ2FsbGJhY2suaAkod29ya2luZyBjb3B5KQpAQCAt
MSw1MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBt
ZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2lmbmRlZiBGaWxlQ2FsbGJhY2tfaAotI2RlZmluZSBGaWxlQ2FsbGJhY2tf
aAotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBGaWxlOwotCi1jbGFzcyBGaWxlQ2Fs
bGJhY2sgOiBwdWJsaWMgUmVmQ291bnRlZDxGaWxlQ2FsbGJhY2s+IHsKLXB1YmxpYzoKLSAgICB2
aXJ0dWFsIH5GaWxlQ2FsbGJhY2soKSB7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlRXZlbnQo
RmlsZSopID0gMDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlCi0KLSNlbmRpZiAvLyBFTkFCTEUoRklM
RV9TWVNURU0pCi0KLSNlbmRpZiAvLyBGaWxlQ2FsbGJhY2tfaApJbmRleDogU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVDYWxsYmFjay5pZGwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVDYWxsYmFjay5pZGwJKHJldmlzaW9u
IDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlQ2FsbGJh
Y2suaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xLDM1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgot
ICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
LSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1bCi0gICAgQ29uZGl0aW9uYWw9
RklMRV9TWVNURU0sCi1dIGNhbGxiYWNrIGludGVyZmFjZSBGaWxlQ2FsbGJhY2sgewotICAgIGJv
b2xlYW4gaGFuZGxlRXZlbnQoRmlsZSBmaWxlKTsKLX07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZUVudHJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZUVudHJ5LmNwcAkocmV2aXNpb24gMTU2NjkxKQor
KysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVFbnRyeS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNjEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0g
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJG
aWxlRW50cnkuaCIKLQotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2luY2x1ZGUgIkRPTUZp
bGVTeXN0ZW0uaCIKLSNpbmNsdWRlICJFcnJvckNhbGxiYWNrLmgiCi0jaW5jbHVkZSAiRmlsZS5o
IgotI2luY2x1ZGUgIkZpbGVDYWxsYmFjay5oIgotI2luY2x1ZGUgIkZpbGVXcml0ZXJDYWxsYmFj
ay5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUZpbGVFbnRyeTo6RmlsZUVudHJ5KFBhc3NS
ZWZQdHI8RE9NRmlsZVN5c3RlbUJhc2U+IGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgZnVsbFBh
dGgpCi0gICAgOiBFbnRyeShmaWxlU3lzdGVtLCBmdWxsUGF0aCkKLXsKLX0KLQotdm9pZCBGaWxl
RW50cnk6OmNyZWF0ZVdyaXRlcihQYXNzUmVmUHRyPEZpbGVXcml0ZXJDYWxsYmFjaz4gc3VjY2Vz
c0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCi17Ci0g
ICAgZmlsZXN5c3RlbSgpLT5jcmVhdGVXcml0ZXIodGhpcywgc3VjY2Vzc0NhbGxiYWNrLCBlcnJv
ckNhbGxiYWNrKTsKLX0KLQotdm9pZCBGaWxlRW50cnk6OmZpbGUoUGFzc1JlZlB0cjxGaWxlQ2Fs
bGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNh
bGxiYWNrKQotewotICAgIGZpbGVzeXN0ZW0oKS0+Y3JlYXRlRmlsZSh0aGlzLCBzdWNjZXNzQ2Fs
bGJhY2ssIGVycm9yQ2FsbGJhY2spOwotfQotCi19IC8vIG5hbWVzcGFjZQotCi0jZW5kaWYgLy8g
RU5BQkxFKEZJTEVfU1lTVEVNKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lz
dGVtL0ZpbGVFbnRyeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmls
ZXN5c3RlbS9GaWxlRW50cnkuaAkocmV2aXNpb24gMTU2NjkxKQorKysgU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVFbnRyeS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDY0ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAq
Ci0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
LSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaWZuZGVmIEZpbGVFbnRyeV9oCi0jZGVmaW5lIEZpbGVFbnRyeV9oCi0KLSNpZiBFTkFC
TEUoRklMRV9TWVNURU0pCi0KLSNpbmNsdWRlICJFbnRyeS5oIgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLWNsYXNzIERPTUZpbGVTeXN0ZW1CYXNlOwotY2xhc3MgRmlsZUNhbGxiYWNrOwotY2xh
c3MgRmlsZVdyaXRlckNhbGxiYWNrOwotCi1jbGFzcyBGaWxlRW50cnkgOiBwdWJsaWMgRW50cnkg
ewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZpbGVFbnRyeT4gY3JlYXRlKFBhc3NS
ZWZQdHI8RE9NRmlsZVN5c3RlbUJhc2U+IGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgZnVsbFBh
dGgpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZpbGVFbnRyeShmaWxlU3lz
dGVtLCBmdWxsUGF0aCkpOwotICAgIH0KLQotICAgIHZvaWQgY3JlYXRlV3JpdGVyKFBhc3NSZWZQ
dHI8RmlsZVdyaXRlckNhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiA9IDApOwot
ICAgIHZvaWQgZmlsZShQYXNzUmVmUHRyPEZpbGVDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JD
YWxsYmFjaz4gPSAwKTsKLQotICAgIHZpcnR1YWwgYm9vbCBpc0ZpbGUoKSBjb25zdCB7IHJldHVy
biB0cnVlOyB9Ci0KLXByaXZhdGU6Ci0gICAgRmlsZUVudHJ5KFBhc3NSZWZQdHI8RE9NRmlsZVN5
c3RlbUJhc2U+LCBjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNl
Ci0KLSNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNlbmRpZiAvLyBGaWxlRW50cnlf
aApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVFbnRyeS5pZGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVFbnRy
eS5pZGwJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5
c3RlbS9GaWxlRW50cnkuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQwICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlz
dHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwot
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1bCi0gICAg
Tm9JbnRlcmZhY2VPYmplY3QsCi0gICAgQ29uZGl0aW9uYWw9RklMRV9TWVNURU0sCi0gICAgSlNH
ZW5lcmF0ZVRvTmF0aXZlT2JqZWN0LAotICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0LAotICAgIEpT
Tm9TdGF0aWNUYWJsZXMKLV0gaW50ZXJmYWNlIEZpbGVFbnRyeSA6IEVudHJ5IHsKLSAgICB2b2lk
IGNyZWF0ZVdyaXRlcihGaWxlV3JpdGVyQ2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNrLCBvcHRpb25h
bCBFcnJvckNhbGxiYWNrIGVycm9yQ2FsbGJhY2spOwotICAgIHZvaWQgZmlsZShGaWxlQ2FsbGJh
Y2sgc3VjY2Vzc0NhbGxiYWNrLCBvcHRpb25hbCBFcnJvckNhbGxiYWNrIGVycm9yQ2FsbGJhY2sp
OwotfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlRW50cnlT
eW5jLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0v
RmlsZUVudHJ5U3luYy5jcHAJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmlsZXN5c3RlbS9GaWxlRW50cnlTeW5jLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1
OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6
Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
LSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkZpbGVFbnRyeVN5bmMuaCIK
LQotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2luY2x1ZGUgIkZpbGUuaCIKLSNpbmNsdWRl
ICJGaWxlV3JpdGVyU3luYy5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUZpbGVFbnRyeVN5
bmM6OkZpbGVFbnRyeVN5bmMoUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtQmFzZT4gZmlsZVN5c3Rl
bSwgY29uc3QgU3RyaW5nJiBmdWxsUGF0aCkKLSAgICA6IEVudHJ5U3luYyhmaWxlU3lzdGVtLCBm
dWxsUGF0aCkKLXsKLX0KLQotUGFzc1JlZlB0cjxGaWxlPiBGaWxlRW50cnlTeW5jOjpmaWxlKEV4
Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIHJldHVybiBmaWxlc3lzdGVtKCktPmNyZWF0ZUZpbGUo
dGhpcywgZWMpOwotfQotCi1QYXNzUmVmUHRyPEZpbGVXcml0ZXJTeW5jPiBGaWxlRW50cnlTeW5j
OjpjcmVhdGVXcml0ZXIoRXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0gICAgcmV0dXJuIGZpbGVzeXN0
ZW0oKS0+Y3JlYXRlV3JpdGVyKHRoaXMsIGVjKTsKLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxF
KEZJTEVfU1lTVEVNKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0Zp
bGVFbnRyeVN5bmMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVz
eXN0ZW0vRmlsZUVudHJ5U3luYy5oCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZUVudHJ5U3luYy5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDY3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1l
dDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaWZuZGVmIEZpbGVFbnRyeVN5bmNfaAotI2RlZmluZSBGaWxlRW50cnlTeW5j
X2gKLQotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2luY2x1ZGUgIkVudHJ5U3luYy5oIgot
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
LSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1jbGFzcyBGaWxlOwotY2xhc3MgRmlsZVdyaXRlclN5bmM7Ci0KLWNsYXNzIEZpbGVFbnRyeVN5
bmMgOiBwdWJsaWMgRW50cnlTeW5jIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxG
aWxlRW50cnlTeW5jPiBjcmVhdGUoUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtQmFzZT4gZmlsZVN5
c3RlbSwgY29uc3QgU3RyaW5nJiBmdWxsUGF0aCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgRmlsZUVudHJ5U3luYyhmaWxlU3lzdGVtLCBmdWxsUGF0aCkpOwotICAgIH0KLQot
ICAgIHZpcnR1YWwgYm9vbCBpc0ZpbGUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0KLSAgICBQ
YXNzUmVmUHRyPEZpbGU+IGZpbGUoRXhjZXB0aW9uQ29kZSYpOwotICAgIFBhc3NSZWZQdHI8Rmls
ZVdyaXRlclN5bmM+IGNyZWF0ZVdyaXRlcihFeGNlcHRpb25Db2RlJik7Ci0KLXByaXZhdGU6Ci0g
ICAgZnJpZW5kIGNsYXNzIEVudHJ5U3luYzsKLSAgICBGaWxlRW50cnlTeW5jKFBhc3NSZWZQdHI8
RE9NRmlsZVN5c3RlbUJhc2U+LCBjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKTsKLX07Ci0KLX0KLQot
I2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2VuZGlmIC8vIEZpbGVFbnRyeVN5bmNf
aApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVFbnRyeVN5bmMu
aWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxl
RW50cnlTeW5jLmlkbAkocmV2aXNpb24gMTU2NjkxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9maWxlc3lzdGVtL0ZpbGVFbnRyeVN5bmMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQwICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAq
Ci0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
LSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi1bCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCi0gICAgQ29uZGl0aW9uYWw9RklMRV9TWVNU
RU0sCi0gICAgSlNHZW5lcmF0ZVRvTmF0aXZlT2JqZWN0LAotICAgIEpTR2VuZXJhdGVUb0pTT2Jq
ZWN0LAotICAgIEpTTm9TdGF0aWNUYWJsZXMKLV0gaW50ZXJmYWNlIEZpbGVFbnRyeVN5bmMgOiBF
bnRyeVN5bmMgewotICAgIFtSYWlzZXNFeGNlcHRpb25dIEZpbGUgZmlsZSgpOwotICAgIFtSYWlz
ZXNFeGNlcHRpb25dIEZpbGVXcml0ZXJTeW5jIGNyZWF0ZVdyaXRlcigpOwotfTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlU3lzdGVtQ2FsbGJhY2suaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVN5c3RlbUNh
bGxiYWNrLmgJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmls
ZXN5c3RlbS9GaWxlU3lzdGVtQ2FsbGJhY2suaAkod29ya2luZyBjb3B5KQpAQCAtMSw1MiArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgot
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0g
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2lmbmRlZiBGaWxlU3lzdGVtQ2FsbGJhY2tfaAotI2RlZmluZSBGaWxlU3lzdGVtQ2FsbGJh
Y2tfaAotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBET01GaWxlU3lzdGVtOwotCi1j
bGFzcyBGaWxlU3lzdGVtQ2FsbGJhY2sgOiBwdWJsaWMgUmVmQ291bnRlZDxGaWxlU3lzdGVtQ2Fs
bGJhY2s+IHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5GaWxlU3lzdGVtQ2FsbGJhY2soKSB7IH0K
LSAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlRXZlbnQoRE9NRmlsZVN5c3RlbSopID0gMDsKLX07Ci0K
LX0gLy8gbmFtZXNwYWNlCi0KLSNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNlbmRp
ZiAvLyBGaWxlU3lzdGVtQ2FsbGJhY2tfaApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
aWxlc3lzdGVtL0ZpbGVTeXN0ZW1DYWxsYmFjay5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVTeXN0ZW1DYWxsYmFjay5pZGwJKHJldmlzaW9u
IDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlU3lzdGVt
Q2FsbGJhY2suaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xLDM1ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0
aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAot
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1bCi0gICAgQ29uZGl0
aW9uYWw9RklMRV9TWVNURU0sCi1dIGNhbGxiYWNrIGludGVyZmFjZSBGaWxlU3lzdGVtQ2FsbGJh
Y2sgewotICAgIGJvb2xlYW4gaGFuZGxlRXZlbnQoRE9NRmlsZVN5c3RlbSBmaWxlU3lzdGVtKTsK
LX07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVN5c3RlbUNh
bGxiYWNrcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lz
dGVtL0ZpbGVTeXN0ZW1DYWxsYmFja3MuY3BwCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVN5c3RlbUNhbGxiYWNrcy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsMjg1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQot
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAi
RmlsZVN5c3RlbUNhbGxiYWNrcy5oIgotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jaW5j
bHVkZSAiQXN5bmNGaWxlU3lzdGVtLmgiCi0jaW5jbHVkZSAiQXN5bmNGaWxlV3JpdGVyLmgiCi0j
aW5jbHVkZSAiRE9NRmlsZVBhdGguaCIKLSNpbmNsdWRlICJET01GaWxlU3lzdGVtQmFzZS5oIgot
I2luY2x1ZGUgIkRpcmVjdG9yeUVudHJ5LmgiCi0jaW5jbHVkZSAiRGlyZWN0b3J5UmVhZGVyLmgi
Ci0jaW5jbHVkZSAiRW50cmllc0NhbGxiYWNrLmgiCi0jaW5jbHVkZSAiRW50cnlBcnJheS5oIgot
I2luY2x1ZGUgIkVudHJ5Q2FsbGJhY2suaCIKLSNpbmNsdWRlICJFcnJvckNhbGxiYWNrLmgiCi0j
aW5jbHVkZSAiRmlsZUVudHJ5LmgiCi0jaW5jbHVkZSAiRmlsZUVycm9yLmgiCi0jaW5jbHVkZSAi
RmlsZU1ldGFkYXRhLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbUNhbGxiYWNrLmgiCi0jaW5jbHVk
ZSAiRmlsZVdyaXRlckJhc2UuaCIKLSNpbmNsdWRlICJGaWxlV3JpdGVyQmFzZUNhbGxiYWNrLmgi
Ci0jaW5jbHVkZSAiTWV0YWRhdGEuaCIKLSNpbmNsdWRlICJNZXRhZGF0YUNhbGxiYWNrLmgiCi0j
aW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlZvaWRDYWxsYmFj
ay5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUZpbGVTeXN0ZW1DYWxsYmFja3NCYXNlOjpG
aWxlU3lzdGVtQ2FsbGJhY2tzQmFzZShQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2Fs
bGJhY2spCi0gICAgOiBtX2Vycm9yQ2FsbGJhY2soZXJyb3JDYWxsYmFjaykKLXsKLX0KLQotRmls
ZVN5c3RlbUNhbGxiYWNrc0Jhc2U6On5GaWxlU3lzdGVtQ2FsbGJhY2tzQmFzZSgpCi17Ci19Ci0K
LXZvaWQgRmlsZVN5c3RlbUNhbGxiYWNrc0Jhc2U6OmRpZEZhaWwoaW50IGNvZGUpCi17Ci0gICAg
aWYgKG1fZXJyb3JDYWxsYmFjaykgewotICAgICAgICBtX2Vycm9yQ2FsbGJhY2stPmhhbmRsZUV2
ZW50KEZpbGVFcnJvcjo6Y3JlYXRlKHN0YXRpY19jYXN0PEZpbGVFcnJvcjo6RXJyb3JDb2RlPihj
b2RlKSkuZ2V0KCkpOwotICAgICAgICBtX2Vycm9yQ2FsbGJhY2suY2xlYXIoKTsKLSAgICB9Ci19
Ci0KLS8vIEVudHJ5Q2FsbGJhY2tzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotUGFzc093blB0cjxFbnRyeUNhbGxiYWNrcz4g
RW50cnlDYWxsYmFja3M6OmNyZWF0ZShQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3ND
YWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrLCBQYXNzUmVm
UHRyPERPTUZpbGVTeXN0ZW1CYXNlPiBmaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIGV4cGVjdGVk
UGF0aCwgYm9vbCBpc0RpcmVjdG9yeSkKLXsKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IEVudHJ5
Q2FsbGJhY2tzKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaywgZmlsZVN5c3RlbSwgZXhw
ZWN0ZWRQYXRoLCBpc0RpcmVjdG9yeSkpOwotfQotCi1FbnRyeUNhbGxiYWNrczo6RW50cnlDYWxs
YmFja3MoUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQ
dHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaywgUGFzc1JlZlB0cjxET01GaWxlU3lzdGVt
QmFzZT4gZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBleHBlY3RlZFBhdGgsIGJvb2wgaXNEaXJl
Y3RvcnkpCi0gICAgOiBGaWxlU3lzdGVtQ2FsbGJhY2tzQmFzZShlcnJvckNhbGxiYWNrKQotICAg
ICwgbV9zdWNjZXNzQ2FsbGJhY2soc3VjY2Vzc0NhbGxiYWNrKQotICAgICwgbV9maWxlU3lzdGVt
KGZpbGVTeXN0ZW0pCi0gICAgLCBtX2V4cGVjdGVkUGF0aChleHBlY3RlZFBhdGgpCi0gICAgLCBt
X2lzRGlyZWN0b3J5KGlzRGlyZWN0b3J5KQotewotfQotCi12b2lkIEVudHJ5Q2FsbGJhY2tzOjpk
aWRTdWNjZWVkKCkKLXsKLSAgICBpZiAobV9zdWNjZXNzQ2FsbGJhY2spIHsKLSAgICAgICAgaWYg
KG1faXNEaXJlY3RvcnkpCi0gICAgICAgICAgICBtX3N1Y2Nlc3NDYWxsYmFjay0+aGFuZGxlRXZl
bnQoRGlyZWN0b3J5RW50cnk6OmNyZWF0ZShtX2ZpbGVTeXN0ZW0sIG1fZXhwZWN0ZWRQYXRoKS5n
ZXQoKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fc3VjY2Vzc0NhbGxiYWNrLT5oYW5k
bGVFdmVudChGaWxlRW50cnk6OmNyZWF0ZShtX2ZpbGVTeXN0ZW0sIG1fZXhwZWN0ZWRQYXRoKS5n
ZXQoKSk7Ci0gICAgfQotICAgIG1fc3VjY2Vzc0NhbGxiYWNrLmNsZWFyKCk7Ci19Ci0KLS8vIEVu
dHJpZXNDYWxsYmFja3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KLQotUGFzc093blB0cjxFbnRyaWVzQ2FsbGJhY2tzPiBFbnRyaWVz
Q2FsbGJhY2tzOjpjcmVhdGUoUGFzc1JlZlB0cjxFbnRyaWVzQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxs
YmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrLCBQYXNzUmVmUHRy
PERpcmVjdG9yeVJlYWRlckJhc2U+IGRpcmVjdG9yeVJlYWRlciwgY29uc3QgU3RyaW5nJiBiYXNl
UGF0aCkKLXsKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IEVudHJpZXNDYWxsYmFja3Moc3VjY2Vz
c0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCBkaXJlY3RvcnlSZWFkZXIsIGJhc2VQYXRoKSk7Ci19
Ci0KLUVudHJpZXNDYWxsYmFja3M6OkVudHJpZXNDYWxsYmFja3MoUGFzc1JlZlB0cjxFbnRyaWVz
Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJv
ckNhbGxiYWNrLCBQYXNzUmVmUHRyPERpcmVjdG9yeVJlYWRlckJhc2U+IGRpcmVjdG9yeVJlYWRl
ciwgY29uc3QgU3RyaW5nJiBiYXNlUGF0aCkKLSAgICA6IEZpbGVTeXN0ZW1DYWxsYmFja3NCYXNl
KGVycm9yQ2FsbGJhY2spCi0gICAgLCBtX3N1Y2Nlc3NDYWxsYmFjayhzdWNjZXNzQ2FsbGJhY2sp
Ci0gICAgLCBtX2RpcmVjdG9yeVJlYWRlcihkaXJlY3RvcnlSZWFkZXIpCi0gICAgLCBtX2Jhc2VQ
YXRoKGJhc2VQYXRoKQotICAgICwgbV9lbnRyaWVzKEVudHJ5QXJyYXk6OmNyZWF0ZSgpKQotewot
ICAgIEFTU0VSVChtX2RpcmVjdG9yeVJlYWRlcik7Ci19Ci0KLXZvaWQgRW50cmllc0NhbGxiYWNr
czo6ZGlkUmVhZERpcmVjdG9yeUVudHJ5KGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCBpc0RpcmVj
dG9yeSkKLXsKLSAgICBpZiAoaXNEaXJlY3RvcnkpCi0gICAgICAgIG1fZW50cmllcy0+YXBwZW5k
KERpcmVjdG9yeUVudHJ5OjpjcmVhdGUobV9kaXJlY3RvcnlSZWFkZXItPmZpbGVzeXN0ZW0oKSwg
RE9NRmlsZVBhdGg6OmFwcGVuZChtX2Jhc2VQYXRoLCBuYW1lKSkpOwotICAgIGVsc2UKLSAgICAg
ICAgbV9lbnRyaWVzLT5hcHBlbmQoRmlsZUVudHJ5OjpjcmVhdGUobV9kaXJlY3RvcnlSZWFkZXIt
PmZpbGVzeXN0ZW0oKSwgRE9NRmlsZVBhdGg6OmFwcGVuZChtX2Jhc2VQYXRoLCBuYW1lKSkpOwot
fQotCi12b2lkIEVudHJpZXNDYWxsYmFja3M6OmRpZFJlYWREaXJlY3RvcnlFbnRyaWVzKGJvb2wg
aGFzTW9yZSkKLXsKLSAgICBtX2RpcmVjdG9yeVJlYWRlci0+c2V0SGFzTW9yZUVudHJpZXMoaGFz
TW9yZSk7Ci0gICAgaWYgKG1fc3VjY2Vzc0NhbGxiYWNrKQotICAgICAgICBtX3N1Y2Nlc3NDYWxs
YmFjay0+aGFuZGxlRXZlbnQobV9lbnRyaWVzLmdldCgpKTsKLX0KLQotLy8gRmlsZVN5c3RlbUNh
bGxiYWNrcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQotCi1QYXNzT3duUHRyPEZpbGVTeXN0ZW1DYWxsYmFja3M+IEZpbGVTeXN0ZW1DYWxs
YmFja3M6OmNyZWF0ZShQYXNzUmVmUHRyPEZpbGVTeXN0ZW1DYWxsYmFjaz4gc3VjY2Vzc0NhbGxi
YWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIEZpbGVTeXN0ZW1UeXBlIHR5cGUp
Ci17Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBGaWxlU3lzdGVtQ2FsbGJhY2tzKHN1Y2Nlc3ND
YWxsYmFjaywgZXJyb3JDYWxsYmFjaywgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgdHlwZSkpOwot
fQotCi1GaWxlU3lzdGVtQ2FsbGJhY2tzOjpGaWxlU3lzdGVtQ2FsbGJhY2tzKFBhc3NSZWZQdHI8
RmlsZVN5c3RlbUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxs
YmFjaz4gZXJyb3JDYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRmls
ZVN5c3RlbVR5cGUgdHlwZSkKLSAgICA6IEZpbGVTeXN0ZW1DYWxsYmFja3NCYXNlKGVycm9yQ2Fs
bGJhY2spCi0gICAgLCBtX3N1Y2Nlc3NDYWxsYmFjayhzdWNjZXNzQ2FsbGJhY2spCi0gICAgLCBt
X3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQoY29udGV4dCkKLSAgICAsIG1fdHlwZSh0eXBlKQotewot
fQotCi12b2lkIEZpbGVTeXN0ZW1DYWxsYmFja3M6OmRpZE9wZW5GaWxlU3lzdGVtKGNvbnN0IFN0
cmluZyYgbmFtZSwgY29uc3QgVVJMJiByb290VVJMLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3Rl
bT4gYXN5bmNGaWxlU3lzdGVtKQotewotICAgIGlmIChtX3N1Y2Nlc3NDYWxsYmFjaykgewotICAg
ICAgICBBU1NFUlQoYXN5bmNGaWxlU3lzdGVtKTsKLSAgICAgICAgUmVmUHRyPERPTUZpbGVTeXN0
ZW0+IGZpbGVTeXN0ZW0gPSBET01GaWxlU3lzdGVtOjpjcmVhdGUobV9zY3JpcHRFeGVjdXRpb25D
b250ZXh0LmdldCgpLCBuYW1lLCBtX3R5cGUsIHJvb3RVUkwsIGFzeW5jRmlsZVN5c3RlbSk7Ci0g
ICAgICAgIG1fc3VjY2Vzc0NhbGxiYWNrLT5oYW5kbGVFdmVudChmaWxlU3lzdGVtLmdldCgpKTsK
LSAgICAgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LmNsZWFyKCk7Ci0gICAgfQotICAgIG1f
c3VjY2Vzc0NhbGxiYWNrLmNsZWFyKCk7Ci19Ci0KLS8vIFJlc29sdmVVUklDYWxsYmFja3MgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQot
bmFtZXNwYWNlIHsKLQotY2xhc3MgRXJyb3JDYWxsYmFja1dyYXBwZXIgOiBwdWJsaWMgRXJyb3JD
YWxsYmFjayB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFja1dy
YXBwZXI+IGNyZWF0ZShQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywg
UGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrLCBQYXNzUmVmUHRyPERpcmVj
dG9yeUVudHJ5PiByb290LCBjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBFcnJvckNhbGxiYWNrV3JhcHBlcihzdWNjZXNzQ2FsbGJhY2ss
IGVycm9yQ2FsbGJhY2ssIHJvb3QsIGZpbGVQYXRoKSk7Ci0gICAgfQotCi0gICAgdmlydHVhbCBi
b29sIGhhbmRsZUV2ZW50KEZpbGVFcnJvciogZXJyb3IpCi0gICAgewotICAgICAgICBBU1NFUlQo
ZXJyb3IpOwotICAgICAgICBpZiAoZXJyb3ItPmNvZGUoKSA9PSBGaWxlRXJyb3I6OlRZUEVfTUlT
TUFUQ0hfRVJSKQotICAgICAgICAgICAgbV9yb290LT5nZXRGaWxlKG1fZmlsZVBhdGgsIERpY3Rp
b25hcnkoKSwgbV9zdWNjZXNzQ2FsbGJhY2ssIG1fZXJyb3JDYWxsYmFjayk7Ci0gICAgICAgIGVs
c2UgaWYgKG1fZXJyb3JDYWxsYmFjaykKLSAgICAgICAgICAgIG1fZXJyb3JDYWxsYmFjay0+aGFu
ZGxlRXZlbnQoZXJyb3IpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLXByaXZhdGU6
Ci0gICAgRXJyb3JDYWxsYmFja1dyYXBwZXIoUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNj
ZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaywgUGFz
c1JlZlB0cjxEaXJlY3RvcnlFbnRyeT4gcm9vdCwgY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKLSAg
ICAgICAgOiBtX3N1Y2Nlc3NDYWxsYmFjayhzdWNjZXNzQ2FsbGJhY2spCi0gICAgICAgICwgbV9l
cnJvckNhbGxiYWNrKGVycm9yQ2FsbGJhY2spCi0gICAgICAgICwgbV9yb290KHJvb3QpCi0gICAg
ICAgICwgbV9maWxlUGF0aChmaWxlUGF0aCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3Jvb3Qp
OwotICAgIH0KLQotICAgIFJlZlB0cjxFbnRyeUNhbGxiYWNrPiBtX3N1Y2Nlc3NDYWxsYmFjazsK
LSAgICBSZWZQdHI8RXJyb3JDYWxsYmFjaz4gbV9lcnJvckNhbGxiYWNrOwotICAgIFJlZlB0cjxE
aXJlY3RvcnlFbnRyeT4gbV9yb290OwotICAgIFN0cmluZyBtX2ZpbGVQYXRoOwotfTsKLQotfSAv
LyBuYW1lc3BhY2UKLQotUGFzc093blB0cjxSZXNvbHZlVVJJQ2FsbGJhY2tzPiBSZXNvbHZlVVJJ
Q2FsbGJhY2tzOjpjcmVhdGUoUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJh
Y2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaywgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgRmlsZVN5c3RlbVR5cGUgdHlwZSwg
Y29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKLXsKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IFJlc29s
dmVVUklDYWxsYmFja3Moc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCBzY3JpcHRFeGVj
dXRpb25Db250ZXh0LCB0eXBlLCBmaWxlUGF0aCkpOwotfQotCi1SZXNvbHZlVVJJQ2FsbGJhY2tz
OjpSZXNvbHZlVVJJQ2FsbGJhY2tzKFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0Nh
bGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2ssIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEZpbGVTeXN0ZW1UeXBlIHR5cGUsIGNvbnN0IFN0cmlu
ZyYgZmlsZVBhdGgpCi0gICAgOiBGaWxlU3lzdGVtQ2FsbGJhY2tzQmFzZShlcnJvckNhbGxiYWNr
KQotICAgICwgbV9zdWNjZXNzQ2FsbGJhY2soc3VjY2Vzc0NhbGxiYWNrKQotICAgICwgbV9zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KGNvbnRleHQpCi0gICAgLCBtX3R5cGUodHlwZSkKLSAgICAsIG1f
ZmlsZVBhdGgoZmlsZVBhdGgpCi17Ci19Ci0KLXZvaWQgUmVzb2x2ZVVSSUNhbGxiYWNrczo6ZGlk
T3BlbkZpbGVTeXN0ZW0oY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBVUkwmIHJvb3RVUkwsIFBh
c3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtPiBhc3luY0ZpbGVTeXN0ZW0pCi17Ci0gICAgQVNTRVJU
KGFzeW5jRmlsZVN5c3RlbSk7Ci0gICAgUmVmUHRyPERpcmVjdG9yeUVudHJ5PiByb290ID0gRE9N
RmlsZVN5c3RlbTo6Y3JlYXRlKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC5nZXQoKSwgbmFtZSwg
bV90eXBlLCByb290VVJMLCBhc3luY0ZpbGVTeXN0ZW0pLT5yb290KCk7Ci0gICAgcm9vdC0+Z2V0
RGlyZWN0b3J5KG1fZmlsZVBhdGgsIERpY3Rpb25hcnkoKSwgbV9zdWNjZXNzQ2FsbGJhY2ssIEVy
cm9yQ2FsbGJhY2tXcmFwcGVyOjpjcmVhdGUobV9zdWNjZXNzQ2FsbGJhY2ssIG1fZXJyb3JDYWxs
YmFjaywgcm9vdCwgbV9maWxlUGF0aCkpOwotfQotCi0vLyBNZXRhZGF0YUNhbGxiYWNrcyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0K
LVBhc3NPd25QdHI8TWV0YWRhdGFDYWxsYmFja3M+IE1ldGFkYXRhQ2FsbGJhY2tzOjpjcmVhdGUo
UGFzc1JlZlB0cjxNZXRhZGF0YUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8
RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKLXsKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3
IE1ldGFkYXRhQ2FsbGJhY2tzKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykpOwotfQot
Ci1NZXRhZGF0YUNhbGxiYWNrczo6TWV0YWRhdGFDYWxsYmFja3MoUGFzc1JlZlB0cjxNZXRhZGF0
YUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJy
b3JDYWxsYmFjaykKLSAgICA6IEZpbGVTeXN0ZW1DYWxsYmFja3NCYXNlKGVycm9yQ2FsbGJhY2sp
Ci0gICAgLCBtX3N1Y2Nlc3NDYWxsYmFjayhzdWNjZXNzQ2FsbGJhY2spCi17Ci19Ci0KLXZvaWQg
TWV0YWRhdGFDYWxsYmFja3M6OmRpZFJlYWRNZXRhZGF0YShjb25zdCBGaWxlTWV0YWRhdGEmIG1l
dGFkYXRhKQotewotICAgIGlmIChtX3N1Y2Nlc3NDYWxsYmFjaykKLSAgICAgICAgbV9zdWNjZXNz
Q2FsbGJhY2stPmhhbmRsZUV2ZW50KE1ldGFkYXRhOjpjcmVhdGUobWV0YWRhdGEpLmdldCgpKTsK
LSAgICBtX3N1Y2Nlc3NDYWxsYmFjay5jbGVhcigpOwotfQotCi0vLyBGaWxlV3JpdGVyQmFzZUNh
bGxiYWNrcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi0KLVBhc3NPd25QdHI8RmlsZVdyaXRlckJhc2VDYWxsYmFja3M+IEZpbGVXcml0
ZXJCYXNlQ2FsbGJhY2tzOjpjcmVhdGUoUGFzc1JlZlB0cjxGaWxlV3JpdGVyQmFzZT4gZmlsZVdy
aXRlciwgUGFzc1JlZlB0cjxGaWxlV3JpdGVyQmFzZUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ss
IFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKLXsKLSAgICByZXR1cm4g
YWRvcHRQdHIobmV3IEZpbGVXcml0ZXJCYXNlQ2FsbGJhY2tzKGZpbGVXcml0ZXIsIHN1Y2Nlc3ND
YWxsYmFjaywgZXJyb3JDYWxsYmFjaykpOwotfQotCi1GaWxlV3JpdGVyQmFzZUNhbGxiYWNrczo6
RmlsZVdyaXRlckJhc2VDYWxsYmFja3MoUGFzc1JlZlB0cjxGaWxlV3JpdGVyQmFzZT4gZmlsZVdy
aXRlciwgUGFzc1JlZlB0cjxGaWxlV3JpdGVyQmFzZUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ss
IFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKLSAgICA6IEZpbGVTeXN0
ZW1DYWxsYmFja3NCYXNlKGVycm9yQ2FsbGJhY2spCi0gICAgLCBtX2ZpbGVXcml0ZXIoZmlsZVdy
aXRlcikKLSAgICAsIG1fc3VjY2Vzc0NhbGxiYWNrKHN1Y2Nlc3NDYWxsYmFjaykKLXsKLX0KLQot
dm9pZCBGaWxlV3JpdGVyQmFzZUNhbGxiYWNrczo6ZGlkQ3JlYXRlRmlsZVdyaXRlcihQYXNzT3du
UHRyPEFzeW5jRmlsZVdyaXRlcj4gYXN5bmNGaWxlV3JpdGVyLCBsb25nIGxvbmcgbGVuZ3RoKQot
ewotICAgIG1fZmlsZVdyaXRlci0+aW5pdGlhbGl6ZShhc3luY0ZpbGVXcml0ZXIsIGxlbmd0aCk7
Ci0gICAgaWYgKG1fc3VjY2Vzc0NhbGxiYWNrKQotICAgICAgICBtX3N1Y2Nlc3NDYWxsYmFjay0+
aGFuZGxlRXZlbnQobV9maWxlV3JpdGVyLnJlbGVhc2UoKS5nZXQoKSk7Ci0gICAgbV9zdWNjZXNz
Q2FsbGJhY2suY2xlYXIoKTsKLX0KLQotLy8gVm9pZENhbGxiYWNrcyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1QYXNzT3du
UHRyPFZvaWRDYWxsYmFja3M+IFZvaWRDYWxsYmFja3M6OmNyZWF0ZShQYXNzUmVmUHRyPFZvaWRD
YWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9y
Q2FsbGJhY2spCi17Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBWb2lkQ2FsbGJhY2tzKHN1Y2Nl
c3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykpOwotfQotCi1Wb2lkQ2FsbGJhY2tzOjpWb2lkQ2Fs
bGJhY2tzKFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQ
dHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKLSAgICA6IEZpbGVTeXN0ZW1DYWxsYmFj
a3NCYXNlKGVycm9yQ2FsbGJhY2spCi0gICAgLCBtX3N1Y2Nlc3NDYWxsYmFjayhzdWNjZXNzQ2Fs
bGJhY2spCi17Ci19Ci0KLXZvaWQgVm9pZENhbGxiYWNrczo6ZGlkU3VjY2VlZCgpCi17Ci0gICAg
aWYgKG1fc3VjY2Vzc0NhbGxiYWNrKQotICAgICAgICBtX3N1Y2Nlc3NDYWxsYmFjay0+aGFuZGxl
RXZlbnQoKTsKLSAgICBtX3N1Y2Nlc3NDYWxsYmFjay5jbGVhcigpOwotfQotCi19IC8vIG5hbWVz
cGFjZQotCi0jZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQpJbmRleDogU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVTeXN0ZW1DYWxsYmFja3MuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVN5c3RlbUNhbGxiYWNrcy5o
CShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0v
RmlsZVN5c3RlbUNhbGxiYWNrcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE2MiArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAq
IGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0g
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lm
bmRlZiBGaWxlU3lzdGVtQ2FsbGJhY2tzX2gKLSNkZWZpbmUgRmlsZVN5c3RlbUNhbGxiYWNrc19o
Ci0KLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNpbmNsdWRlICJBc3luY0ZpbGVTeXN0ZW1D
YWxsYmFja3MuaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtVHlwZS5oIgotI2luY2x1ZGUgPHd0Zi9Q
YXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEFzeW5jRmlsZVdy
aXRlcjsKLWNsYXNzIERPTUZpbGVTeXN0ZW1CYXNlOwotY2xhc3MgRGlyZWN0b3J5UmVhZGVyQmFz
ZTsKLWNsYXNzIEVudHJpZXNDYWxsYmFjazsKLWNsYXNzIEVudHJ5QXJyYXk7Ci1jbGFzcyBFbnRy
eUNhbGxiYWNrOwotY2xhc3MgRXJyb3JDYWxsYmFjazsKLXN0cnVjdCBGaWxlTWV0YWRhdGE7Ci1j
bGFzcyBGaWxlU3lzdGVtQ2FsbGJhY2s7Ci1jbGFzcyBGaWxlV3JpdGVyQmFzZTsKLWNsYXNzIEZp
bGVXcml0ZXJCYXNlQ2FsbGJhY2s7Ci1jbGFzcyBNZXRhZGF0YUNhbGxiYWNrOwotY2xhc3MgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDsKLWNsYXNzIFZvaWRDYWxsYmFjazsKLQotY2xhc3MgRmlsZVN5
c3RlbUNhbGxiYWNrc0Jhc2UgOiBwdWJsaWMgQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzIHsKLXB1
YmxpYzoKLSAgICB2aXJ0dWFsIH5GaWxlU3lzdGVtQ2FsbGJhY2tzQmFzZSgpOwotCi0gICAgLy8g
Rm9yIEVycm9yQ2FsbGJhY2suCi0gICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoaW50IGNvZGUpOwot
Ci0gICAgLy8gT3RoZXIgY2FsbGJhY2sgbWV0aG9kcyBhcmUgaW1wbGVtZW50ZWQgYnkgZWFjaCBz
dWJjbGFzcy4KLQotcHJvdGVjdGVkOgotICAgIEZpbGVTeXN0ZW1DYWxsYmFja3NCYXNlKFBhc3NS
ZWZQdHI8RXJyb3JDYWxsYmFjaz4pOwotICAgIFJlZlB0cjxFcnJvckNhbGxiYWNrPiBtX2Vycm9y
Q2FsbGJhY2s7Ci19OwotCi0vLyBTdWJjbGFzc2VzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotY2xhc3MgRW50cnlDYWxs
YmFja3MgOiBwdWJsaWMgRmlsZVN5c3RlbUNhbGxiYWNrc0Jhc2UgewotcHVibGljOgotICAgIHN0
YXRpYyBQYXNzT3duUHRyPEVudHJ5Q2FsbGJhY2tzPiBjcmVhdGUoUGFzc1JlZlB0cjxFbnRyeUNh
bGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiwgUGFzc1JlZlB0cjxET01GaWxlU3lz
dGVtQmFzZT4sIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRQYXRoLCBib29sIGlzRGlyZWN0b3J5KTsK
LSAgICB2aXJ0dWFsIHZvaWQgZGlkU3VjY2VlZCgpOwotCi1wcml2YXRlOgotICAgIEVudHJ5Q2Fs
bGJhY2tzKFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFj
az4sIFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbUJhc2U+LCBjb25zdCBTdHJpbmcmIGV4cGVjdGVk
UGF0aCwgYm9vbCBpc0RpcmVjdG9yeSk7Ci0gICAgUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IG1fc3Vj
Y2Vzc0NhbGxiYWNrOwotICAgIFJlZlB0cjxET01GaWxlU3lzdGVtQmFzZT4gbV9maWxlU3lzdGVt
OwotICAgIFN0cmluZyBtX2V4cGVjdGVkUGF0aDsKLSAgICBib29sIG1faXNEaXJlY3Rvcnk7Ci19
OwotCi1jbGFzcyBFbnRyaWVzQ2FsbGJhY2tzIDogcHVibGljIEZpbGVTeXN0ZW1DYWxsYmFja3NC
YXNlIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxFbnRyaWVzQ2FsbGJhY2tzPiBj
cmVhdGUoUGFzc1JlZlB0cjxFbnRyaWVzQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJh
Y2s+LCBQYXNzUmVmUHRyPERpcmVjdG9yeVJlYWRlckJhc2U+LCBjb25zdCBTdHJpbmcmIGJhc2VQ
YXRoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVhZERpcmVjdG9yeUVudHJ5KGNvbnN0IFN0cmlu
ZyYgbmFtZSwgYm9vbCBpc0RpcmVjdG9yeSk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlYWREaXJl
Y3RvcnlFbnRyaWVzKGJvb2wgaGFzTW9yZSk7Ci0KLXByaXZhdGU6Ci0gICAgRW50cmllc0NhbGxi
YWNrcyhQYXNzUmVmUHRyPEVudHJpZXNDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFj
az4sIFBhc3NSZWZQdHI8RGlyZWN0b3J5UmVhZGVyQmFzZT4sIGNvbnN0IFN0cmluZyYgYmFzZVBh
dGgpOwotICAgIFJlZlB0cjxFbnRyaWVzQ2FsbGJhY2s+IG1fc3VjY2Vzc0NhbGxiYWNrOwotICAg
IFJlZlB0cjxEaXJlY3RvcnlSZWFkZXJCYXNlPiBtX2RpcmVjdG9yeVJlYWRlcjsKLSAgICBTdHJp
bmcgbV9iYXNlUGF0aDsKLSAgICBSZWZQdHI8RW50cnlBcnJheT4gbV9lbnRyaWVzOwotfTsKLQot
Y2xhc3MgRmlsZVN5c3RlbUNhbGxiYWNrcyA6IHB1YmxpYyBGaWxlU3lzdGVtQ2FsbGJhY2tzQmFz
ZSB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8RmlsZVN5c3RlbUNhbGxiYWNrcz4g
Y3JlYXRlKFBhc3NSZWZQdHI8RmlsZVN5c3RlbUNhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNh
bGxiYWNrPiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEZpbGVTeXN0ZW1UeXBlKTsKLSAgICB2
aXJ0dWFsIHZvaWQgZGlkT3BlbkZpbGVTeXN0ZW0oY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBV
UkwmIHJvb3RVUkwsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtPik7Ci0KLXByaXZhdGU6Ci0g
ICAgRmlsZVN5c3RlbUNhbGxiYWNrcyhQYXNzUmVmUHRyPEZpbGVTeXN0ZW1DYWxsYmFjaz4sIFBh
c3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBGaWxlU3lz
dGVtVHlwZSk7Ci0gICAgUmVmUHRyPEZpbGVTeXN0ZW1DYWxsYmFjaz4gbV9zdWNjZXNzQ2FsbGJh
Y2s7Ci0gICAgUmVmUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ+IG1fc2NyaXB0RXhlY3V0aW9u
Q29udGV4dDsKLSAgICBGaWxlU3lzdGVtVHlwZSBtX3R5cGU7Ci19OwotCi1jbGFzcyBSZXNvbHZl
VVJJQ2FsbGJhY2tzIDogcHVibGljIEZpbGVTeXN0ZW1DYWxsYmFja3NCYXNlIHsKLXB1YmxpYzoK
LSAgICBzdGF0aWMgUGFzc093blB0cjxSZXNvbHZlVVJJQ2FsbGJhY2tzPiBjcmVhdGUoUGFzc1Jl
ZlB0cjxFbnRyeUNhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiwgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIEZpbGVTeXN0ZW1UeXBlLCBjb25zdCBTdHJpbmcmIGZpbGVQYXRoKTsK
LSAgICB2aXJ0dWFsIHZvaWQgZGlkT3BlbkZpbGVTeXN0ZW0oY29uc3QgU3RyaW5nJiBuYW1lLCBj
b25zdCBVUkwmIHJvb3RVUkwsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtPik7Ci0KLXByaXZh
dGU6Ci0gICAgUmVzb2x2ZVVSSUNhbGxiYWNrcyhQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+LCBQ
YXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRmlsZVN5
c3RlbVR5cGUsIGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpOwotICAgIFJlZlB0cjxFbnRyeUNhbGxi
YWNrPiBtX3N1Y2Nlc3NDYWxsYmFjazsKLSAgICBSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4
dD4gbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0OwotICAgIEZpbGVTeXN0ZW1UeXBlIG1fdHlwZTsK
LSAgICBTdHJpbmcgbV9maWxlUGF0aDsKLX07Ci0KLWNsYXNzIE1ldGFkYXRhQ2FsbGJhY2tzIDog
cHVibGljIEZpbGVTeXN0ZW1DYWxsYmFja3NCYXNlIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c093blB0cjxNZXRhZGF0YUNhbGxiYWNrcz4gY3JlYXRlKFBhc3NSZWZQdHI8TWV0YWRhdGFDYWxs
YmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4pOwotICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZWFkTWV0YWRhdGEoY29uc3QgRmlsZU1ldGFkYXRhJik7Ci0KLXByaXZhdGU6Ci0gICAgTWV0YWRh
dGFDYWxsYmFja3MoUGFzc1JlZlB0cjxNZXRhZGF0YUNhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJv
ckNhbGxiYWNrPik7Ci0gICAgUmVmUHRyPE1ldGFkYXRhQ2FsbGJhY2s+IG1fc3VjY2Vzc0NhbGxi
YWNrOwotfTsKLQotY2xhc3MgRmlsZVdyaXRlckJhc2VDYWxsYmFja3MgOiBwdWJsaWMgRmlsZVN5
c3RlbUNhbGxiYWNrc0Jhc2UgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPEZpbGVX
cml0ZXJCYXNlQ2FsbGJhY2tzPiBjcmVhdGUoUGFzc1JlZlB0cjxGaWxlV3JpdGVyQmFzZT4sIFBh
c3NSZWZQdHI8RmlsZVdyaXRlckJhc2VDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFj
az4pOwotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGaWxlV3JpdGVyKFBhc3NPd25QdHI8QXN5
bmNGaWxlV3JpdGVyPiwgbG9uZyBsb25nIGxlbmd0aCk7Ci0KLXByaXZhdGU6Ci0gICAgRmlsZVdy
aXRlckJhc2VDYWxsYmFja3MoUGFzc1JlZlB0cjxGaWxlV3JpdGVyQmFzZT4sIFBhc3NSZWZQdHI8
RmlsZVdyaXRlckJhc2VDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4pOwotICAg
IFJlZlB0cjxGaWxlV3JpdGVyQmFzZT4gbV9maWxlV3JpdGVyOwotICAgIFJlZlB0cjxGaWxlV3Jp
dGVyQmFzZUNhbGxiYWNrPiBtX3N1Y2Nlc3NDYWxsYmFjazsKLX07Ci0KLWNsYXNzIFZvaWRDYWxs
YmFja3MgOiBwdWJsaWMgRmlsZVN5c3RlbUNhbGxiYWNrc0Jhc2UgewotcHVibGljOgotICAgIHN0
YXRpYyBQYXNzT3duUHRyPFZvaWRDYWxsYmFja3M+IGNyZWF0ZShQYXNzUmVmUHRyPFZvaWRDYWxs
YmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4pOwotICAgIHZpcnR1YWwgdm9pZCBkaWRT
dWNjZWVkKCk7Ci0KLXByaXZhdGU6Ci0gICAgVm9pZENhbGxiYWNrcyhQYXNzUmVmUHRyPFZvaWRD
YWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4pOwotICAgIFJlZlB0cjxWb2lkQ2Fs
bGJhY2s+IG1fc3VjY2Vzc0NhbGxiYWNrOwotfTsKLQotfSAvLyBuYW1lc3BhY2UKLQotI2VuZGlm
IC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2VuZGlmIC8vIEZpbGVTeXN0ZW1DYWxsYmFja3Nf
aApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVTeXN0ZW1GbGFn
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxl
U3lzdGVtRmxhZ3MuaAkocmV2aXNpb24gMTU2NjkxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9maWxlc3lzdGVtL0ZpbGVTeXN0ZW1GbGFncy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDU3ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAq
Ci0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
LSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaWZuZGVmIEZpbGVTeXN0ZW1GbGFnc19oCi0jZGVmaW5lIEZpbGVTeXN0ZW1GbGFnc19o
Ci0KLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNpbmNsdWRlICJEaWN0aW9uYXJ5LmgiCi0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RydWN0IEZpbGVTeXN0ZW1GbGFncyAgewotICAgIGV4
cGxpY2l0IEZpbGVTeXN0ZW1GbGFncyhjb25zdCBEaWN0aW9uYXJ5JiBvcHRpb25zKQotICAgICAg
ICA6IGNyZWF0ZShmYWxzZSkKLSAgICAgICAgLCBleGNsdXNpdmUoZmFsc2UpCi0gICAgewotICAg
ICAgICBvcHRpb25zLmdldCgiY3JlYXRlIiwgY3JlYXRlKTsKLSAgICAgICAgb3B0aW9ucy5nZXQo
ImV4Y2x1c2l2ZSIsIGV4Y2x1c2l2ZSk7Ci0gICAgfQotCi0gICAgYm9vbCBjcmVhdGU7Ci0gICAg
Ym9vbCBleGNsdXNpdmU7Ci19OwotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0p
Ci0KLSNlbmRpZiAvLyBGaWxlU3lzdGVtRmxhZ3NfaApJbmRleDogU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9maWxlc3lzdGVtL0ZpbGVTeXN0ZW1UeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVTeXN0ZW1UeXBlLmgJKHJldmlzaW9uIDE1NjY5
MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlU3lzdGVtVHlwZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDU2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwot
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAot
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEZpbGVTeXN0ZW1UeXBlX2gK
LSNkZWZpbmUgRmlsZVN5c3RlbVR5cGVfaAotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLS8vIEZvciBmaWxlIHN5c3RlbSB0eXBlcyB1c2VkIGluIEZp
bGVTeXN0ZW0gQVBJLgotZW51bSBGaWxlU3lzdGVtVHlwZSB7Ci0gICAgRmlsZVN5c3RlbVR5cGVU
ZW1wb3JhcnksCi0gICAgRmlsZVN5c3RlbVR5cGVQZXJzaXN0ZW50LAotCi0gICAgLy8gVHJhbnNp
ZW50IGlzb2xhdGVkIG5vbi1zYW5kYm94ZWQgZmlsZXN5c3RlbS4KLSAgICBGaWxlU3lzdGVtVHlw
ZUlzb2xhdGVkLAotfTsKLQotZW51bSBGaWxlU3lzdGVtU3luY2hyb25vdXNUeXBlIHsKLSAgICBB
c3luY2hyb25vdXNGaWxlU3lzdGVtLAotICAgIFN5bmNocm9ub3VzRmlsZVN5c3RlbSwKLX07Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkK
LQotI2VuZGlmIC8vIEZpbGVTeXN0ZW1UeXBlX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmlsZXN5c3RlbS9GaWxlV3JpdGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVdyaXRlci5jcHAJKHJldmlzaW9uIDE1NjY5MSkKKysr
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlV3JpdGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzMjYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29n
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQot
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFC
TEUoRklMRV9TWVNURU0pCi0KLSNpbmNsdWRlICJGaWxlV3JpdGVyLmgiCi0KLSNpbmNsdWRlICJB
c3luY0ZpbGVXcml0ZXIuaCIKLSNpbmNsdWRlICJCbG9iLmgiCi0jaW5jbHVkZSAiRXhjZXB0aW9u
Q29kZS5oIgotI2luY2x1ZGUgIkZpbGVFcnJvci5oIgotI2luY2x1ZGUgIkZpbGVFeGNlcHRpb24u
aCIKLSNpbmNsdWRlICJQcm9ncmVzc0V2ZW50LmgiCi0jaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1l
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RhdGljIGNvbnN0IGludCBrTWF4UmVjdXJz
aW9uRGVwdGggPSAzOwotc3RhdGljIGNvbnN0IGRvdWJsZSBwcm9ncmVzc05vdGlmaWNhdGlvbklu
dGVydmFsTVMgPSA1MDsKLQotUGFzc1JlZlB0cjxGaWxlV3JpdGVyPiBGaWxlV3JpdGVyOjpjcmVh
dGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKLXsKLSAgICBSZWZQdHI8RmlsZVdy
aXRlcj4gZmlsZVdyaXRlcihhZG9wdFJlZihuZXcgRmlsZVdyaXRlcihjb250ZXh0KSkpOwotICAg
IGZpbGVXcml0ZXItPnN1c3BlbmRJZk5lZWRlZCgpOwotICAgIHJldHVybiBmaWxlV3JpdGVyLnJl
bGVhc2UoKTsKLX0KLQotRmlsZVdyaXRlcjo6RmlsZVdyaXRlcihTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0KQotICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQpCi0gICAgLCBtX3Jl
YWR5U3RhdGUoSU5JVCkKLSAgICAsIG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyhPcGVyYXRpb25Ob25l
KQotICAgICwgbV9xdWV1ZWRPcGVyYXRpb24oT3BlcmF0aW9uTm9uZSkKLSAgICAsIG1fYnl0ZXNX
cml0dGVuKDApCi0gICAgLCBtX2J5dGVzVG9Xcml0ZSgwKQotICAgICwgbV90cnVuY2F0ZUxlbmd0
aCgtMSkKLSAgICAsIG1fbnVtQWJvcnRzKDApCi0gICAgLCBtX3JlY3Vyc2lvbkRlcHRoKDApCi0g
ICAgLCBtX2xhc3RQcm9ncmVzc05vdGlmaWNhdGlvblRpbWVNUygwKQotewotfQotCi1GaWxlV3Jp
dGVyOjp+RmlsZVdyaXRlcigpCi17Ci0gICAgQVNTRVJUKCFtX3JlY3Vyc2lvbkRlcHRoKTsKLSAg
ICBpZiAobV9yZWFkeVN0YXRlID09IFdSSVRJTkcpCi0gICAgICAgIHN0b3AoKTsKLX0KLQotYm9v
bCBGaWxlV3JpdGVyOjpjYW5TdXNwZW5kKCkgY29uc3QKLXsKLSAgICAvLyBGSVhNRTogSXQgaXMg
bm90IGN1cnJlbnRseSBwb3NzaWJsZSB0byBzdXNwZW5kIGEgRmlsZVdyaXRlciwgc28gcGFnZXMg
d2l0aCBGaWxlV3JpdGVyIGNhbiBub3QgZ28gaW50byBwYWdlIGNhY2hlLgotICAgIHJldHVybiBm
YWxzZTsKLX0KLQotdm9pZCBGaWxlV3JpdGVyOjpzdG9wKCkKLXsKLSAgICAvLyBNYWtlIHN1cmUg
d2UndmUgYWN0dWFsbHkgZ290IHNvbWV0aGluZyB0byBzdG9wLCBhbmQgaGF2ZW4ndCBhbHJlYWR5
IGNhbGxlZCBhYm9ydCgpLgotICAgIGlmICghd3JpdGVyKCkgfHwgbV9yZWFkeVN0YXRlICE9IFdS
SVRJTkcpCi0gICAgICAgIHJldHVybjsKLSAgICBkb09wZXJhdGlvbihPcGVyYXRpb25BYm9ydCk7
Ci0gICAgbV9yZWFkeVN0YXRlID0gRE9ORTsKLX0KLQotdm9pZCBGaWxlV3JpdGVyOjp3cml0ZShC
bG9iKiBkYXRhLCBFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICBBU1NFUlQod3JpdGVyKCkpOwot
ICAgIEFTU0VSVChkYXRhKTsKLSAgICBBU1NFUlQobV90cnVuY2F0ZUxlbmd0aCA9PSAtMSk7Ci0g
ICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBXUklUSU5HKSB7Ci0gICAgICAgIHNldEVycm9yKEZpbGVF
cnJvcjo6SU5WQUxJRF9TVEFURV9FUlIsIGVjKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAg
ICBpZiAoIWRhdGEpIHsKLSAgICAgICAgc2V0RXJyb3IoRmlsZUVycm9yOjpUWVBFX01JU01BVENI
X0VSUiwgZWMpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChtX3JlY3Vyc2lvbkRl
cHRoID4ga01heFJlY3Vyc2lvbkRlcHRoKSB7Ci0gICAgICAgIHNldEVycm9yKEZpbGVFcnJvcjo6
U0VDVVJJVFlfRVJSLCBlYyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBtX2Jsb2JC
ZWluZ1dyaXR0ZW4gPSBkYXRhOwotICAgIG1fcmVhZHlTdGF0ZSA9IFdSSVRJTkc7Ci0gICAgbV9i
eXRlc1dyaXR0ZW4gPSAwOwotICAgIG1fYnl0ZXNUb1dyaXRlID0gZGF0YS0+c2l6ZSgpOwotICAg
IEFTU0VSVChtX3F1ZXVlZE9wZXJhdGlvbiA9PSBPcGVyYXRpb25Ob25lKTsKLSAgICBpZiAobV9v
cGVyYXRpb25JblByb2dyZXNzICE9IE9wZXJhdGlvbk5vbmUpIHsKLSAgICAgICAgLy8gV2UgbXVz
dCBiZSB3YWl0aW5nIGZvciBhbiBhYm9ydCB0byBjb21wbGV0ZSwgc2luY2UgbV9yZWFkeVN0YXRl
IHdhc24ndCBXUklUSU5HLgotICAgICAgICBBU1NFUlQobV9vcGVyYXRpb25JblByb2dyZXNzID09
IE9wZXJhdGlvbkFib3J0KTsKLSAgICAgICAgbV9xdWV1ZWRPcGVyYXRpb24gPSBPcGVyYXRpb25X
cml0ZTsKLSAgICB9IGVsc2UKLSAgICAgICAgZG9PcGVyYXRpb24oT3BlcmF0aW9uV3JpdGUpOwot
Ci0gICAgZmlyZUV2ZW50KGV2ZW50TmFtZXMoKS53cml0ZXN0YXJ0RXZlbnQpOwotfQotCi12b2lk
IEZpbGVXcml0ZXI6OnNlZWsobG9uZyBsb25nIHBvc2l0aW9uLCBFeGNlcHRpb25Db2RlJiBlYykK
LXsKLSAgICBBU1NFUlQod3JpdGVyKCkpOwotICAgIGlmIChtX3JlYWR5U3RhdGUgPT0gV1JJVElO
RykgewotICAgICAgICBzZXRFcnJvcihGaWxlRXJyb3I6OklOVkFMSURfU1RBVEVfRVJSLCBlYyk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlQobV90cnVuY2F0ZUxlbmd0aCA9
PSAtMSk7Ci0gICAgQVNTRVJUKG1fcXVldWVkT3BlcmF0aW9uID09IE9wZXJhdGlvbk5vbmUpOwot
ICAgIHNlZWtJbnRlcm5hbChwb3NpdGlvbik7Ci19Ci0KLXZvaWQgRmlsZVdyaXRlcjo6dHJ1bmNh
dGUobG9uZyBsb25nIHBvc2l0aW9uLCBFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICBBU1NFUlQo
d3JpdGVyKCkpOwotICAgIEFTU0VSVChtX3RydW5jYXRlTGVuZ3RoID09IC0xKTsKLSAgICBpZiAo
bV9yZWFkeVN0YXRlID09IFdSSVRJTkcgfHwgcG9zaXRpb24gPCAwKSB7Ci0gICAgICAgIHNldEVy
cm9yKEZpbGVFcnJvcjo6SU5WQUxJRF9TVEFURV9FUlIsIGVjKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSAgICBpZiAobV9yZWN1cnNpb25EZXB0aCA+IGtNYXhSZWN1cnNpb25EZXB0aCkgewot
ICAgICAgICBzZXRFcnJvcihGaWxlRXJyb3I6OlNFQ1VSSVRZX0VSUiwgZWMpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgbV9yZWFkeVN0YXRlID0gV1JJVElORzsKLSAgICBtX2J5dGVz
V3JpdHRlbiA9IDA7Ci0gICAgbV9ieXRlc1RvV3JpdGUgPSAwOwotICAgIG1fdHJ1bmNhdGVMZW5n
dGggPSBwb3NpdGlvbjsKLSAgICBBU1NFUlQobV9xdWV1ZWRPcGVyYXRpb24gPT0gT3BlcmF0aW9u
Tm9uZSk7Ci0gICAgaWYgKG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyAhPSBPcGVyYXRpb25Ob25lKSB7
Ci0gICAgICAgIC8vIFdlIG11c3QgYmUgd2FpdGluZyBmb3IgYW4gYWJvcnQgdG8gY29tcGxldGUs
IHNpbmNlIG1fcmVhZHlTdGF0ZSB3YXNuJ3QgV1JJVElORy4KLSAgICAgICAgQVNTRVJUKG1fb3Bl
cmF0aW9uSW5Qcm9ncmVzcyA9PSBPcGVyYXRpb25BYm9ydCk7Ci0gICAgICAgIG1fcXVldWVkT3Bl
cmF0aW9uID0gT3BlcmF0aW9uVHJ1bmNhdGU7Ci0gICAgfSBlbHNlCi0gICAgICAgIGRvT3BlcmF0
aW9uKE9wZXJhdGlvblRydW5jYXRlKTsKLSAgICBmaXJlRXZlbnQoZXZlbnROYW1lcygpLndyaXRl
c3RhcnRFdmVudCk7Ci19Ci0KLXZvaWQgRmlsZVdyaXRlcjo6YWJvcnQoRXhjZXB0aW9uQ29kZSYp
Ci17Ci0gICAgQVNTRVJUKHdyaXRlcigpKTsKLSAgICBpZiAobV9yZWFkeVN0YXRlICE9IFdSSVRJ
TkcpCi0gICAgICAgIHJldHVybjsKLSAgICArK21fbnVtQWJvcnRzOwotCi0gICAgZG9PcGVyYXRp
b24oT3BlcmF0aW9uQWJvcnQpOwotICAgIHNpZ25hbENvbXBsZXRpb24oRmlsZUVycm9yOjpBQk9S
VF9FUlIpOwotfQotCi12b2lkIEZpbGVXcml0ZXI6OmRpZFdyaXRlKGxvbmcgbG9uZyBieXRlcywg
Ym9vbCBjb21wbGV0ZSkKLXsKLSAgICBpZiAobV9vcGVyYXRpb25JblByb2dyZXNzID09IE9wZXJh
dGlvbkFib3J0KSB7Ci0gICAgICAgIGNvbXBsZXRlQWJvcnQoKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSAgICBBU1NFUlQobV9yZWFkeVN0YXRlID09IFdSSVRJTkcpOwotICAgIEFTU0VSVCht
X3RydW5jYXRlTGVuZ3RoID09IC0xKTsKLSAgICBBU1NFUlQobV9vcGVyYXRpb25JblByb2dyZXNz
ID09IE9wZXJhdGlvbldyaXRlKTsKLSAgICBBU1NFUlQoIW1fYnl0ZXNUb1dyaXRlIHx8IGJ5dGVz
ICsgbV9ieXRlc1dyaXR0ZW4gPiAwKTsKLSAgICBBU1NFUlQoYnl0ZXMgKyBtX2J5dGVzV3JpdHRl
biA8PSBtX2J5dGVzVG9Xcml0ZSk7Ci0gICAgbV9ieXRlc1dyaXR0ZW4gKz0gYnl0ZXM7Ci0gICAg
QVNTRVJUKChtX2J5dGVzV3JpdHRlbiA9PSBtX2J5dGVzVG9Xcml0ZSkgfHwgIWNvbXBsZXRlKTsK
LSAgICBzZXRQb3NpdGlvbihwb3NpdGlvbigpICsgYnl0ZXMpOwotICAgIGlmIChwb3NpdGlvbigp
ID4gbGVuZ3RoKCkpCi0gICAgICAgIHNldExlbmd0aChwb3NpdGlvbigpKTsKLSAgICBpZiAoY29t
cGxldGUpIHsKLSAgICAgICAgbV9ibG9iQmVpbmdXcml0dGVuLmNsZWFyKCk7Ci0gICAgICAgIG1f
b3BlcmF0aW9uSW5Qcm9ncmVzcyA9IE9wZXJhdGlvbk5vbmU7Ci0gICAgfQotCi0gICAgaW50IG51
bUFib3J0cyA9IG1fbnVtQWJvcnRzOwotICAgIC8vIFdlIGNvdWxkIGdldCBhbiBhYm9ydCBpbiB0
aGUgaGFuZGxlciBmb3IgdGhpcyBldmVudC4gSWYgd2UgZG8sIGl0J3MKLSAgICAvLyBhbHJlYWR5
IGhhbmRsZWQgdGhlIGNsZWFudXAgYW5kIHNpZ25hbENvbXBsZXRpb24gY2FsbC4KLSAgICBkb3Vi
bGUgbm93ID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lTVMoKTsKLSAgICBpZiAoY29tcGxl
dGUgfHwgIW1fbGFzdFByb2dyZXNzTm90aWZpY2F0aW9uVGltZU1TIHx8IChub3cgLSBtX2xhc3RQ
cm9ncmVzc05vdGlmaWNhdGlvblRpbWVNUyA+IHByb2dyZXNzTm90aWZpY2F0aW9uSW50ZXJ2YWxN
UykpIHsKLSAgICAgICAgbV9sYXN0UHJvZ3Jlc3NOb3RpZmljYXRpb25UaW1lTVMgPSBub3c7Ci0g
ICAgICAgIGZpcmVFdmVudChldmVudE5hbWVzKCkucHJvZ3Jlc3NFdmVudCk7Ci0gICAgfQotCi0g
ICAgaWYgKGNvbXBsZXRlKSB7Ci0gICAgICBpZiAobnVtQWJvcnRzID09IG1fbnVtQWJvcnRzKQot
ICAgICAgICAgIHNpZ25hbENvbXBsZXRpb24oRmlsZUVycm9yOjpPSyk7Ci0gICAgICB1bnNldFBl
bmRpbmdBY3Rpdml0eSh0aGlzKTsKLSAgICB9Ci19Ci0KLXZvaWQgRmlsZVdyaXRlcjo6ZGlkVHJ1
bmNhdGUoKQotewotICAgIGlmIChtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPT0gT3BlcmF0aW9uQWJv
cnQpIHsKLSAgICAgICAgY29tcGxldGVBYm9ydCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
ICAgIEFTU0VSVChtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPT0gT3BlcmF0aW9uVHJ1bmNhdGUpOwot
ICAgIEFTU0VSVChtX3RydW5jYXRlTGVuZ3RoID49IDApOwotICAgIHNldExlbmd0aChtX3RydW5j
YXRlTGVuZ3RoKTsKLSAgICBpZiAocG9zaXRpb24oKSA+IGxlbmd0aCgpKQotICAgICAgICBzZXRQ
b3NpdGlvbihsZW5ndGgoKSk7Ci0gICAgbV9vcGVyYXRpb25JblByb2dyZXNzID0gT3BlcmF0aW9u
Tm9uZTsKLSAgICBzaWduYWxDb21wbGV0aW9uKEZpbGVFcnJvcjo6T0spOwotICAgIHVuc2V0UGVu
ZGluZ0FjdGl2aXR5KHRoaXMpOwotfQotCi12b2lkIEZpbGVXcml0ZXI6OmRpZEZhaWwoRmlsZUVy
cm9yOjpFcnJvckNvZGUgY29kZSkKLXsKLSAgICBBU1NFUlQobV9vcGVyYXRpb25JblByb2dyZXNz
ICE9IE9wZXJhdGlvbk5vbmUpOwotICAgIEFTU0VSVChjb2RlICE9IEZpbGVFcnJvcjo6T0spOwot
ICAgIGlmIChtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPT0gT3BlcmF0aW9uQWJvcnQpIHsKLSAgICAg
ICAgY29tcGxldGVBYm9ydCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIEFTU0VSVChj
b2RlICE9IEZpbGVFcnJvcjo6QUJPUlRfRVJSKTsKLSAgICBBU1NFUlQobV9xdWV1ZWRPcGVyYXRp
b24gPT0gT3BlcmF0aW9uTm9uZSk7Ci0gICAgQVNTRVJUKG1fcmVhZHlTdGF0ZSA9PSBXUklUSU5H
KTsKLSAgICBtX2Jsb2JCZWluZ1dyaXR0ZW4uY2xlYXIoKTsKLSAgICBtX29wZXJhdGlvbkluUHJv
Z3Jlc3MgPSBPcGVyYXRpb25Ob25lOwotICAgIHNpZ25hbENvbXBsZXRpb24oY29kZSk7Ci0gICAg
dW5zZXRQZW5kaW5nQWN0aXZpdHkodGhpcyk7Ci19Ci0KLXZvaWQgRmlsZVdyaXRlcjo6Y29tcGxl
dGVBYm9ydCgpCi17Ci0gICAgQVNTRVJUKG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9PSBPcGVyYXRp
b25BYm9ydCk7Ci0gICAgbV9vcGVyYXRpb25JblByb2dyZXNzID0gT3BlcmF0aW9uTm9uZTsKLSAg
ICBPcGVyYXRpb24gb3BlcmF0aW9uID0gbV9xdWV1ZWRPcGVyYXRpb247Ci0gICAgbV9xdWV1ZWRP
cGVyYXRpb24gPSBPcGVyYXRpb25Ob25lOwotICAgIGRvT3BlcmF0aW9uKG9wZXJhdGlvbik7Ci0g
ICAgdW5zZXRQZW5kaW5nQWN0aXZpdHkodGhpcyk7Ci19Ci0KLXZvaWQgRmlsZVdyaXRlcjo6ZG9P
cGVyYXRpb24oT3BlcmF0aW9uIG9wZXJhdGlvbikKLXsKLSAgICBzd2l0Y2ggKG9wZXJhdGlvbikg
ewotICAgIGNhc2UgT3BlcmF0aW9uV3JpdGU6Ci0gICAgICAgIEFTU0VSVChtX29wZXJhdGlvbklu
UHJvZ3Jlc3MgPT0gT3BlcmF0aW9uTm9uZSk7Ci0gICAgICAgIEFTU0VSVChtX3RydW5jYXRlTGVu
Z3RoID09IC0xKTsKLSAgICAgICAgQVNTRVJUKG1fYmxvYkJlaW5nV3JpdHRlbi5nZXQoKSk7Ci0g
ICAgICAgIEFTU0VSVChtX3JlYWR5U3RhdGUgPT0gV1JJVElORyk7Ci0gICAgICAgIHNldFBlbmRp
bmdBY3Rpdml0eSh0aGlzKTsKLSAgICAgICAgd3JpdGVyKCktPndyaXRlKHBvc2l0aW9uKCksIG1f
YmxvYkJlaW5nV3JpdHRlbi5nZXQoKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgT3BlcmF0
aW9uVHJ1bmNhdGU6Ci0gICAgICAgIEFTU0VSVChtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPT0gT3Bl
cmF0aW9uTm9uZSk7Ci0gICAgICAgIEFTU0VSVChtX3RydW5jYXRlTGVuZ3RoID49IDApOwotICAg
ICAgICBBU1NFUlQobV9yZWFkeVN0YXRlID09IFdSSVRJTkcpOwotICAgICAgICBzZXRQZW5kaW5n
QWN0aXZpdHkodGhpcyk7Ci0gICAgICAgIHdyaXRlcigpLT50cnVuY2F0ZShtX3RydW5jYXRlTGVu
Z3RoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBPcGVyYXRpb25Ob25lOgotICAgICAgICBB
U1NFUlQobV9vcGVyYXRpb25JblByb2dyZXNzID09IE9wZXJhdGlvbk5vbmUpOwotICAgICAgICBB
U1NFUlQobV90cnVuY2F0ZUxlbmd0aCA9PSAtMSk7Ci0gICAgICAgIEFTU0VSVCghbV9ibG9iQmVp
bmdXcml0dGVuLmdldCgpKTsKLSAgICAgICAgQVNTRVJUKG1fcmVhZHlTdGF0ZSA9PSBET05FKTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBPcGVyYXRpb25BYm9ydDoKLSAgICAgICAgaWYgKG1f
b3BlcmF0aW9uSW5Qcm9ncmVzcyA9PSBPcGVyYXRpb25Xcml0ZSB8fCBtX29wZXJhdGlvbkluUHJv
Z3Jlc3MgPT0gT3BlcmF0aW9uVHJ1bmNhdGUpCi0gICAgICAgICAgICB3cml0ZXIoKS0+YWJvcnQo
KTsKLSAgICAgICAgZWxzZSBpZiAobV9vcGVyYXRpb25JblByb2dyZXNzICE9IE9wZXJhdGlvbkFi
b3J0KQotICAgICAgICAgICAgb3BlcmF0aW9uID0gT3BlcmF0aW9uTm9uZTsKLSAgICAgICAgbV9x
dWV1ZWRPcGVyYXRpb24gPSBPcGVyYXRpb25Ob25lOwotICAgICAgICBtX2Jsb2JCZWluZ1dyaXR0
ZW4uY2xlYXIoKTsKLSAgICAgICAgbV90cnVuY2F0ZUxlbmd0aCA9IC0xOwotICAgICAgICBicmVh
azsKLSAgICB9Ci0gICAgQVNTRVJUKG1fcXVldWVkT3BlcmF0aW9uID09IE9wZXJhdGlvbk5vbmUp
OwotICAgIG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9IG9wZXJhdGlvbjsKLX0KLQotdm9pZCBGaWxl
V3JpdGVyOjpzaWduYWxDb21wbGV0aW9uKEZpbGVFcnJvcjo6RXJyb3JDb2RlIGNvZGUpCi17Ci0g
ICAgbV9yZWFkeVN0YXRlID0gRE9ORTsKLSAgICBtX3RydW5jYXRlTGVuZ3RoID0gLTE7Ci0gICAg
aWYgKEZpbGVFcnJvcjo6T0sgIT0gY29kZSkgewotICAgICAgICBtX2Vycm9yID0gRmlsZUVycm9y
OjpjcmVhdGUoY29kZSk7Ci0gICAgICAgIGlmIChGaWxlRXJyb3I6OkFCT1JUX0VSUiA9PSBjb2Rl
KQotICAgICAgICAgICAgZmlyZUV2ZW50KGV2ZW50TmFtZXMoKS5hYm9ydEV2ZW50KTsKLSAgICAg
ICAgZWxzZQotICAgICAgICAgICAgZmlyZUV2ZW50KGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50KTsK
LSAgICB9IGVsc2UKLSAgICAgICAgZmlyZUV2ZW50KGV2ZW50TmFtZXMoKS53cml0ZUV2ZW50KTsK
LSAgICBmaXJlRXZlbnQoZXZlbnROYW1lcygpLndyaXRlZW5kRXZlbnQpOwotfQotCi12b2lkIEZp
bGVXcml0ZXI6OmZpcmVFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUpCi17Ci0gICAgKytt
X3JlY3Vyc2lvbkRlcHRoOwotICAgIGRpc3BhdGNoRXZlbnQoUHJvZ3Jlc3NFdmVudDo6Y3JlYXRl
KHR5cGUsIHRydWUsIG1fYnl0ZXNXcml0dGVuLCBtX2J5dGVzVG9Xcml0ZSkpOwotICAgIC0tbV9y
ZWN1cnNpb25EZXB0aDsKLSAgICBBU1NFUlQobV9yZWN1cnNpb25EZXB0aCA+PSAwKTsKLX0KLQot
dm9pZCBGaWxlV3JpdGVyOjpzZXRFcnJvcihGaWxlRXJyb3I6OkVycm9yQ29kZSBlcnJvckNvZGUs
IEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIGVjID0gRmlsZUV4Y2VwdGlvbjo6RXJyb3JDb2Rl
VG9FeGNlcHRpb25Db2RlKGVycm9yQ29kZSk7Ci0gICAgbV9lcnJvciA9IEZpbGVFcnJvcjo6Y3Jl
YXRlKGVycm9yQ29kZSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8v
IEVOQUJMRShGSUxFX1NZU1RFTSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5
c3RlbS9GaWxlV3JpdGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
aWxlc3lzdGVtL0ZpbGVXcml0ZXIuaAkocmV2aXNpb24gMTU2NjkxKQorKysgU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVXcml0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSwx
MzMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1l
dDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaWZuZGVmIEZpbGVXcml0ZXJfaAotI2RlZmluZSBGaWxlV3JpdGVyX2gKLQot
I2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgot
I2luY2x1ZGUgIkFzeW5jRmlsZVdyaXRlckNsaWVudC5oIgotI2luY2x1ZGUgIkV2ZW50VGFyZ2V0
LmgiCi0jaW5jbHVkZSAiRmlsZVdyaXRlckJhc2UuaCIKLSNpbmNsdWRlICJTY3JpcHRFeGVjdXRp
b25Db250ZXh0LmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgQmxvYjsKLWNsYXNzIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci0KLS8vIEZJWE1FOiBUaGlzIGNsYXNzIHNob3VsZCBiZSBt
YXJrZWQgRklOQUwgb25jZSA8aHR0cDovL3dlYmtpdC5vcmcvYi8xMjE3NDc+IGlzIGZpeGVkLgot
Y2xhc3MgRmlsZVdyaXRlciA6IHB1YmxpYyBGaWxlV3JpdGVyQmFzZSwgcHVibGljIEFjdGl2ZURP
TU9iamVjdCwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEsIHB1YmxpYyBBc3luY0Zp
bGVXcml0ZXJDbGllbnQgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZpbGVXcml0
ZXI+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7Ci0KLSAgICBlbnVtIFJlYWR5U3Rh
dGUgewotICAgICAgICBJTklUID0gMCwKLSAgICAgICAgV1JJVElORyA9IDEsCi0gICAgICAgIERP
TkUgPSAyCi0gICAgfTsKLQotICAgIHZvaWQgd3JpdGUoQmxvYiosIEV4Y2VwdGlvbkNvZGUmKTsK
LSAgICB2b2lkIHNlZWsobG9uZyBsb25nIHBvc2l0aW9uLCBFeGNlcHRpb25Db2RlJik7Ci0gICAg
dm9pZCB0cnVuY2F0ZShsb25nIGxvbmcgbGVuZ3RoLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9p
ZCBhYm9ydChFeGNlcHRpb25Db2RlJik7Ci0gICAgUmVhZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29u
c3QgeyByZXR1cm4gbV9yZWFkeVN0YXRlOyB9Ci0gICAgRmlsZUVycm9yKiBlcnJvcigpIGNvbnN0
IHsgcmV0dXJuIG1fZXJyb3IuZ2V0KCk7IH0KLQotICAgIC8vIEFzeW5jRmlsZVdyaXRlckNsaWVu
dAotICAgIHZvaWQgZGlkV3JpdGUobG9uZyBsb25nIGJ5dGVzLCBib29sIGNvbXBsZXRlKTsKLSAg
ICB2b2lkIGRpZFRydW5jYXRlKCk7Ci0gICAgdm9pZCBkaWRGYWlsKEZpbGVFcnJvcjo6RXJyb3JD
b2RlKTsKLQotICAgIC8vIEV2ZW50VGFyZ2V0Ci0gICAgdmlydHVhbCBFdmVudFRhcmdldEludGVy
ZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0IE9WRVJSSURFIEZJTkFMIHsgcmV0dXJu
IEZpbGVXcml0ZXJFdmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0KLSAgICB2aXJ0dWFsIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBPVkVSUklE
RSBGSU5BTCB7IHJldHVybiBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KTsgfQotCi0gICAgdXNpbmcgUmVmQ291bnRlZDxGaWxlV3JpdGVyQmFzZT46OnJlZjsKLSAgICB1
c2luZyBSZWZDb3VudGVkPEZpbGVXcml0ZXJCYXNlPjo6ZGVyZWY7Ci0KLSAgICBERUZJTkVfQVRU
UklCVVRFX0VWRU5UX0xJU1RFTkVSKHdyaXRlc3RhcnQpOwotICAgIERFRklORV9BVFRSSUJVVEVf
RVZFTlRfTElTVEVORVIocHJvZ3Jlc3MpOwotICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElT
VEVORVIod3JpdGUpOwotICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoYWJvcnQp
OwotICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoZXJyb3IpOwotICAgIERFRklO
RV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIod3JpdGVlbmQpOwotCi1wcml2YXRlOgotICAgIGVu
dW0gT3BlcmF0aW9uIHsKLSAgICAgICAgT3BlcmF0aW9uTm9uZSwKLSAgICAgICAgT3BlcmF0aW9u
V3JpdGUsCi0gICAgICAgIE9wZXJhdGlvblRydW5jYXRlLAotICAgICAgICBPcGVyYXRpb25BYm9y
dAotICAgIH07Ci0KLSAgICBGaWxlV3JpdGVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKLQot
ICAgIHZpcnR1YWwgfkZpbGVXcml0ZXIoKTsKLQotICAgIC8vIEFjdGl2ZURPTU9iamVjdAotICAg
IHZpcnR1YWwgYm9vbCBjYW5TdXNwZW5kKCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2
b2lkIHN0b3AoKSBPVkVSUklERTsKLQotICAgIC8vIEV2ZW50VGFyZ2V0Ci0gICAgdmlydHVhbCB2
b2lkIHJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUgRklOQUwgeyByZWYoKTsgfQotICAgIHZpcnR1
YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUgRklOQUwgeyBkZXJlZigpOyB9Ci0K
LSAgICB2b2lkIGNvbXBsZXRlQWJvcnQoKTsKLQotICAgIHZvaWQgZG9PcGVyYXRpb24oT3BlcmF0
aW9uKTsKLQotICAgIHZvaWQgc2lnbmFsQ29tcGxldGlvbihGaWxlRXJyb3I6OkVycm9yQ29kZSk7
Ci0KLSAgICB2b2lkIGZpcmVFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUpOwotCi0gICAg
dm9pZCBzZXRFcnJvcihGaWxlRXJyb3I6OkVycm9yQ29kZSwgRXhjZXB0aW9uQ29kZSYpOwotCi0g
ICAgUmVmUHRyPEZpbGVFcnJvcj4gbV9lcnJvcjsKLSAgICBSZWFkeVN0YXRlIG1fcmVhZHlTdGF0
ZTsKLSAgICBPcGVyYXRpb24gbV9vcGVyYXRpb25JblByb2dyZXNzOwotICAgIE9wZXJhdGlvbiBt
X3F1ZXVlZE9wZXJhdGlvbjsKLSAgICBsb25nIGxvbmcgbV9ieXRlc1dyaXR0ZW47Ci0gICAgbG9u
ZyBsb25nIG1fYnl0ZXNUb1dyaXRlOwotICAgIGxvbmcgbG9uZyBtX3RydW5jYXRlTGVuZ3RoOwot
ICAgIGxvbmcgbG9uZyBtX251bUFib3J0czsKLSAgICBsb25nIGxvbmcgbV9yZWN1cnNpb25EZXB0
aDsKLSAgICBkb3VibGUgbV9sYXN0UHJvZ3Jlc3NOb3RpZmljYXRpb25UaW1lTVM7Ci0gICAgUmVm
UHRyPEJsb2I+IG1fYmxvYkJlaW5nV3JpdHRlbjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKLQotI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2VuZGlmIC8vIEZpbGVXcml0
ZXJfaApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVXcml0ZXIu
aWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxl
V3JpdGVyLmlkbAkocmV2aXNpb24gMTU2NjkxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
aWxlc3lzdGVtL0ZpbGVXcml0ZXIuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcxICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0g
KiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQot
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLVsK
LSAgICBOb0ludGVyZmFjZU9iamVjdCwKLSAgICBDb25kaXRpb25hbD1GSUxFX1NZU1RFTSwKLSAg
ICBBY3RpdmVET01PYmplY3QsCi0gICAgRXZlbnRUYXJnZXQsCi0gICAgSlNOb1N0YXRpY1RhYmxl
cwotXSBpbnRlcmZhY2UgRmlsZVdyaXRlciB7Ci0gICAgLy8gcmVhZHkgc3RhdGVzCi0gICAgY29u
c3QgdW5zaWduZWQgc2hvcnQgSU5JVCA9IDA7Ci0gICAgY29uc3QgdW5zaWduZWQgc2hvcnQgV1JJ
VElORyA9IDE7Ci0gICAgY29uc3QgdW5zaWduZWQgc2hvcnQgRE9ORSA9IDI7Ci0gICAgcmVhZG9u
bHkgYXR0cmlidXRlIHVuc2lnbmVkIHNob3J0IHJlYWR5U3RhdGU7Ci0KLSAgICAvLyBhc3luYyB3
cml0ZS9tb2RpZnkgbWV0aG9kcwotICAgIFtSYWlzZXNFeGNlcHRpb25dIHZvaWQgd3JpdGUoQmxv
YiBkYXRhKTsKLSAgICBbUmFpc2VzRXhjZXB0aW9uXSB2b2lkIHNlZWsobG9uZyBsb25nIHBvc2l0
aW9uKTsKLSAgICBbUmFpc2VzRXhjZXB0aW9uXSB2b2lkIHRydW5jYXRlKGxvbmcgbG9uZyBzaXpl
KTsKLQotICAgIFtSYWlzZXNFeGNlcHRpb25dIHZvaWQgYWJvcnQoKTsKLQotICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBGaWxlRXJyb3IgZXJyb3I7Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIGxvbmcg
bG9uZyBwb3NpdGlvbjsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyBsb25nIGxlbmd0aDsK
LQotICAgICAgICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9ud3JpdGVzdGFydDsKLSAg
ICAgICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbnByb2dyZXNzOwotICAgICAgICAg
ICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9ud3JpdGU7Ci0gICAgICAgICAgICAgYXR0cmli
dXRlIEV2ZW50TGlzdGVuZXIgb25hYm9ydDsKLSAgICAgICAgICAgICBhdHRyaWJ1dGUgRXZlbnRM
aXN0ZW5lciBvbmVycm9yOwotICAgICAgICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9u
d3JpdGVlbmQ7Ci0KLSAgICAvLyBFdmVudFRhcmdldCBpbnRlcmZhY2UKLSAgICB2b2lkIGFkZEV2
ZW50TGlzdGVuZXIoRE9NU3RyaW5nIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIEV2
ZW50TGlzdGVuZXIgbGlzdGVuZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFs
IGJvb2xlYW4gdXNlQ2FwdHVyZSk7Ci0gICAgdm9pZCByZW1vdmVFdmVudExpc3RlbmVyKERPTVN0
cmluZyB0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFdmVudExpc3RlbmVyIGxp
c3RlbmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbCBib29sZWFuIHVz
ZUNhcHR1cmUpOwotICAgIFtSYWlzZXNFeGNlcHRpb25dIGJvb2xlYW4gZGlzcGF0Y2hFdmVudChF
dmVudCBldnQpOwotfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9G
aWxlV3JpdGVyQmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
aWxlc3lzdGVtL0ZpbGVXcml0ZXJCYXNlLmNwcAkocmV2aXNpb24gMTU2NjkxKQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVXcml0ZXJCYXNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMSw3NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
Ci0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShG
SUxFX1NZU1RFTSkKLQotI2luY2x1ZGUgIkZpbGVXcml0ZXJCYXNlLmgiCi0KLSNpbmNsdWRlICJB
c3luY0ZpbGVXcml0ZXIuaCIKLSNpbmNsdWRlICJCbG9iLmgiCi0jaW5jbHVkZSAiRXhjZXB0aW9u
Q29kZS5oIgotI2luY2x1ZGUgIkZpbGVFcnJvci5oIgotI2luY2x1ZGUgIkZpbGVFeGNlcHRpb24u
aCIKLSNpbmNsdWRlICJQcm9ncmVzc0V2ZW50LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
RmlsZVdyaXRlckJhc2U6On5GaWxlV3JpdGVyQmFzZSgpCi17Ci19Ci0KLXZvaWQgRmlsZVdyaXRl
ckJhc2U6OmluaXRpYWxpemUoUGFzc093blB0cjxBc3luY0ZpbGVXcml0ZXI+IHdyaXRlciwgbG9u
ZyBsb25nIGxlbmd0aCkKLXsKLSAgICBBU1NFUlQoIW1fd3JpdGVyKTsKLSAgICBBU1NFUlQobGVu
Z3RoID49IDApOwotICAgIG1fd3JpdGVyID0gd3JpdGVyOwotICAgIG1fbGVuZ3RoID0gbGVuZ3Ro
OwotfQotCi1GaWxlV3JpdGVyQmFzZTo6RmlsZVdyaXRlckJhc2UoKQotICAgIDogbV9wb3NpdGlv
bigwKQotewotfQotCi12b2lkIEZpbGVXcml0ZXJCYXNlOjpzZWVrSW50ZXJuYWwobG9uZyBsb25n
IHBvc2l0aW9uKQotewotICAgIGlmIChwb3NpdGlvbiA+IG1fbGVuZ3RoKQotICAgICAgICBwb3Np
dGlvbiA9IG1fbGVuZ3RoOwotICAgIGVsc2UgaWYgKHBvc2l0aW9uIDwgMCkKLSAgICAgICAgcG9z
aXRpb24gPSBtX2xlbmd0aCArIHBvc2l0aW9uOwotICAgIGlmIChwb3NpdGlvbiA8IDApCi0gICAg
ICAgIHBvc2l0aW9uID0gMDsKLSAgICBtX3Bvc2l0aW9uID0gcG9zaXRpb247Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlV3JpdGVyQmFzZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlV3JpdGVyQmFz
ZS5oCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0
ZW0vRmlsZVdyaXRlckJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMSw5MiArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBk
aXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
Ci0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5k
ZWYgRmlsZVdyaXRlckJhc2VfaAotI2RlZmluZSBGaWxlV3JpdGVyQmFzZV9oCi0KLSNpZiBFTkFC
TEUoRklMRV9TWVNURU0pCi0KLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+Ci0jaW5jbHVkZSA8d3Rm
L1Bhc3NPd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLWNsYXNzIEFzeW5jRmlsZVdyaXRlcjsKLQotdHlwZWRlZiBpbnQgRXhjZXB0
aW9uQ29kZTsKLQotY2xhc3MgRmlsZVdyaXRlckJhc2UgOiBwdWJsaWMgUmVmQ291bnRlZDxGaWxl
V3JpdGVyQmFzZT4gewotcHVibGljOgotICAgIHZpcnR1YWwgfkZpbGVXcml0ZXJCYXNlKCk7Ci0g
ICAgdm9pZCBpbml0aWFsaXplKFBhc3NPd25QdHI8QXN5bmNGaWxlV3JpdGVyPiwgbG9uZyBsb25n
IGxlbmd0aCk7Ci0KLSAgICBsb25nIGxvbmcgcG9zaXRpb24oKSBjb25zdAotICAgIHsKLSAgICAg
ICAgcmV0dXJuIG1fcG9zaXRpb247Ci0gICAgfQotICAgIGxvbmcgbG9uZyBsZW5ndGgoKSBjb25z
dAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fbGVuZ3RoOwotICAgIH0KLQotcHJvdGVjdGVkOgot
ICAgIEZpbGVXcml0ZXJCYXNlKCk7Ci0KLSAgICBBc3luY0ZpbGVXcml0ZXIqIHdyaXRlcigpCi0g
ICAgewotICAgICAgICByZXR1cm4gbV93cml0ZXIuZ2V0KCk7Ci0gICAgfQotCi0gICAgdm9pZCBz
ZXRQb3NpdGlvbihsb25nIGxvbmcgcG9zaXRpb24pCi0gICAgewotICAgICAgICBtX3Bvc2l0aW9u
ID0gcG9zaXRpb247Ci0gICAgfQotCi0gICAgdm9pZCBzZXRMZW5ndGgobG9uZyBsb25nIGxlbmd0
aCkKLSAgICB7Ci0gICAgICAgIG1fbGVuZ3RoID0gbGVuZ3RoOwotICAgIH0KLQotICAgIHZvaWQg
c2Vla0ludGVybmFsKGxvbmcgbG9uZyBwb3NpdGlvbik7Ci0KLXByaXZhdGU6Ci0gICAgZnJpZW5k
IGNsYXNzIFdURjo6UmVmQ291bnRlZDxGaWxlV3JpdGVyQmFzZT47Ci0KLSAgICBPd25QdHI8QXN5
bmNGaWxlV3JpdGVyPiBtX3dyaXRlcjsKLSAgICBsb25nIGxvbmcgbV9wb3NpdGlvbjsKLSAgICBs
b25nIGxvbmcgbV9sZW5ndGg7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRp
ZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNlbmRpZiAvLyBGaWxlV3JpdGVyQmFzZV9oCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVdyaXRlckJhc2VDYWxs
YmFjay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9G
aWxlV3JpdGVyQmFzZUNhbGxiYWNrLmgJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlV3JpdGVyQmFzZUNhbGxiYWNrLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
Ci0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgRmlsZVdyaXRlckJhc2VDYWxsYmFja19oCi0j
ZGVmaW5lIEZpbGVXcml0ZXJCYXNlQ2FsbGJhY2tfaAotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVN
KQotCi0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1jbGFzcyBGaWxlV3JpdGVyQmFzZTsKLQotY2xhc3MgRmlsZVdyaXRlckJhc2VDYWxsYmFjayA6
IHB1YmxpYyBSZWZDb3VudGVkPEZpbGVXcml0ZXJCYXNlQ2FsbGJhY2s+IHsKLXB1YmxpYzoKLSAg
ICB2aXJ0dWFsIH5GaWxlV3JpdGVyQmFzZUNhbGxiYWNrKCkgeyB9Ci0gICAgdmlydHVhbCBib29s
IGhhbmRsZUV2ZW50KEZpbGVXcml0ZXJCYXNlKikgPSAwOwotfTsKLQotfSAvLyBuYW1lc3BhY2UK
LQotI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2VuZGlmIC8vIEZpbGVXcml0ZXJC
YXNlQ2FsbGJhY2tfaApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0Zp
bGVXcml0ZXJDYWxsYmFjay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmlsZXN5c3RlbS9GaWxlV3JpdGVyQ2FsbGJhY2suaAkocmV2aXNpb24gMTU2NjkxKQorKysgU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVXcml0ZXJDYWxsYmFjay5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQot
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEZpbGVXcml0ZXJDYWxsYmFja19oCi0j
ZGVmaW5lIEZpbGVXcml0ZXJDYWxsYmFja19oCi0KLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0K
LSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNs
YXNzIEZpbGVXcml0ZXI7Ci0KLWNsYXNzIEZpbGVXcml0ZXJDYWxsYmFjayA6IHB1YmxpYyBSZWZD
b3VudGVkPEZpbGVXcml0ZXJDYWxsYmFjaz4gewotcHVibGljOgotICAgIHZpcnR1YWwgfkZpbGVX
cml0ZXJDYWxsYmFjaygpIHsgfQotICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVFdmVudChGaWxlV3Jp
dGVyKikgPSAwOwotfTsKLQotfSAvLyBuYW1lc3BhY2UKLQotI2VuZGlmIC8vIEVOQUJMRShGSUxF
X1NZU1RFTSkKLQotI2VuZGlmIC8vIEZpbGVXcml0ZXJDYWxsYmFja19oCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVdyaXRlckNhbGxiYWNrLmlkbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVdyaXRlckNhbGxi
YWNrLmlkbAkocmV2aXNpb24gMTU2NjkxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxl
c3lzdGVtL0ZpbGVXcml0ZXJDYWxsYmFjay5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTEsMzUgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoK
LSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAot
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLVsKLSAgICBDb25kaXRpb25hbD1GSUxFX1NZU1RFTSwKLV0gY2FsbGJhY2sgaW50ZXJmYWNl
IEZpbGVXcml0ZXJDYWxsYmFjayB7Ci0gICAgYm9vbGVhbiBoYW5kbGVFdmVudChGaWxlV3JpdGVy
IGZpbGVXcml0ZXIpOwotfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3Rl
bS9GaWxlV3JpdGVyU3luYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9maWxlc3lzdGVtL0ZpbGVXcml0ZXJTeW5jLmNwcAkocmV2aXNpb24gMTU2NjkxKQorKysgU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVXcml0ZXJTeW5jLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMSwxNDggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29n
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQot
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFC
TEUoRklMRV9TWVNURU0pCi0KLSNpbmNsdWRlICJGaWxlV3JpdGVyU3luYy5oIgotCi0jaW5jbHVk
ZSAiQXN5bmNGaWxlV3JpdGVyLmgiCi0jaW5jbHVkZSAiQmxvYi5oIgotI2luY2x1ZGUgIkZpbGVF
eGNlcHRpb24uaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi12b2lkIEZpbGVXcml0ZXJTeW5j
Ojp3cml0ZShCbG9iKiBkYXRhLCBFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICBBU1NFUlQod3Jp
dGVyKCkpOwotICAgIEFTU0VSVChtX2NvbXBsZXRlKTsKLSAgICBlYyA9IDA7Ci0gICAgaWYgKCFk
YXRhKSB7Ci0gICAgICAgIGVjID0gRmlsZUV4Y2VwdGlvbjo6VFlQRV9NSVNNQVRDSF9FUlI7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBwcmVwYXJlRm9yV3JpdGUoKTsKLSAgICB3cml0
ZXIoKS0+d3JpdGUocG9zaXRpb24oKSwgZGF0YSk7Ci0gICAgd3JpdGVyKCktPndhaXRGb3JPcGVy
YXRpb25Ub0NvbXBsZXRlKCk7Ci0gICAgQVNTRVJUKG1fY29tcGxldGUpOwotICAgIGVjID0gRmls
ZUV4Y2VwdGlvbjo6RXJyb3JDb2RlVG9FeGNlcHRpb25Db2RlKG1fZXJyb3IpOwotICAgIGlmIChl
YykKLSAgICAgICAgcmV0dXJuOwotICAgIHNldFBvc2l0aW9uKHBvc2l0aW9uKCkgKyBkYXRhLT5z
aXplKCkpOwotICAgIGlmIChwb3NpdGlvbigpID4gbGVuZ3RoKCkpCi0gICAgICAgIHNldExlbmd0
aChwb3NpdGlvbigpKTsKLX0KLQotdm9pZCBGaWxlV3JpdGVyU3luYzo6c2Vlayhsb25nIGxvbmcg
cG9zaXRpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIEFTU0VSVCh3cml0ZXIoKSk7Ci0g
ICAgQVNTRVJUKG1fY29tcGxldGUpOwotICAgIGVjID0gMDsKLSAgICBzZWVrSW50ZXJuYWwocG9z
aXRpb24pOwotfQotCi12b2lkIEZpbGVXcml0ZXJTeW5jOjp0cnVuY2F0ZShsb25nIGxvbmcgb2Zm
c2V0LCBFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICBBU1NFUlQod3JpdGVyKCkpOwotICAgIEFT
U0VSVChtX2NvbXBsZXRlKTsKLSAgICBlYyA9IDA7Ci0gICAgaWYgKG9mZnNldCA8IDApIHsKLSAg
ICAgICAgZWMgPSBGaWxlRXhjZXB0aW9uOjpJTlZBTElEX1NUQVRFX0VSUjsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLSAgICBwcmVwYXJlRm9yV3JpdGUoKTsKLSAgICB3cml0ZXIoKS0+dHJ1bmNh
dGUob2Zmc2V0KTsKLSAgICB3cml0ZXIoKS0+d2FpdEZvck9wZXJhdGlvblRvQ29tcGxldGUoKTsK
LSAgICBBU1NFUlQobV9jb21wbGV0ZSk7Ci0gICAgZWMgPSBGaWxlRXhjZXB0aW9uOjpFcnJvckNv
ZGVUb0V4Y2VwdGlvbkNvZGUobV9lcnJvcik7Ci0gICAgaWYgKGVjKQotICAgICAgICByZXR1cm47
Ci0gICAgaWYgKG9mZnNldCA8IHBvc2l0aW9uKCkpCi0gICAgICAgIHNldFBvc2l0aW9uKG9mZnNl
dCk7Ci0gICAgc2V0TGVuZ3RoKG9mZnNldCk7Ci19Ci0KLXZvaWQgRmlsZVdyaXRlclN5bmM6OmRp
ZFdyaXRlKGxvbmcgbG9uZywgYm9vbCBjb21wbGV0ZSkKLXsKLSAgICBBU1NFUlQobV9lcnJvciA9
PSBGaWxlRXJyb3I6Ok9LKTsKLSAgICBBU1NFUlQoIW1fY29tcGxldGUpOwotI2lmbmRlZiBOREVC
VUcKLSAgICBtX2NvbXBsZXRlID0gY29tcGxldGU7Ci0jZWxzZQotICAgIEFTU0VSVF9VTlVTRUQo
Y29tcGxldGUsIGNvbXBsZXRlKTsKLSNlbmRpZgotfQotCi12b2lkIEZpbGVXcml0ZXJTeW5jOjpk
aWRUcnVuY2F0ZSgpCi17Ci0gICAgQVNTRVJUKG1fZXJyb3IgPT0gRmlsZUVycm9yOjpPSyk7Ci0g
ICAgQVNTRVJUKCFtX2NvbXBsZXRlKTsKLSNpZm5kZWYgTkRFQlVHCi0gICAgbV9jb21wbGV0ZSA9
IHRydWU7Ci0jZW5kaWYKLX0KLQotdm9pZCBGaWxlV3JpdGVyU3luYzo6ZGlkRmFpbChGaWxlRXJy
b3I6OkVycm9yQ29kZSBlcnJvcikKLXsKLSAgICBBU1NFUlQobV9lcnJvciA9PSBGaWxlRXJyb3I6
Ok9LKTsKLSAgICBtX2Vycm9yID0gZXJyb3I7Ci0gICAgQVNTRVJUKCFtX2NvbXBsZXRlKTsKLSNp
Zm5kZWYgTkRFQlVHCi0gICAgbV9jb21wbGV0ZSA9IHRydWU7Ci0jZW5kaWYKLX0KLQotRmlsZVdy
aXRlclN5bmM6OkZpbGVXcml0ZXJTeW5jKCkKLSAgICA6IG1fZXJyb3IoRmlsZUVycm9yOjpPSykK
LSNpZm5kZWYgTkRFQlVHCi0gICAgLCBtX2NvbXBsZXRlKHRydWUpCi0jZW5kaWYKLXsKLX0KLQot
dm9pZCBGaWxlV3JpdGVyU3luYzo6cHJlcGFyZUZvcldyaXRlKCkKLXsKLSAgICBBU1NFUlQobV9j
b21wbGV0ZSk7Ci0gICAgbV9lcnJvciA9IEZpbGVFcnJvcjo6T0s7Ci0jaWZuZGVmIE5ERUJVRwot
ICAgIG1fY29tcGxldGUgPSBmYWxzZTsKLSNlbmRpZgotfQotCi1GaWxlV3JpdGVyU3luYzo6fkZp
bGVXcml0ZXJTeW5jKCkKLXsKLX0KLQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRp
ZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zp
bGVzeXN0ZW0vRmlsZVdyaXRlclN5bmMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVdyaXRlclN5bmMuaAkocmV2aXNpb24gMTU2NjkxKQorKysg
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVXcml0ZXJTeW5jLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEsNzkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29n
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQot
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEZpbGVXcml0ZXJTeW5jX2gKLSNkZWZp
bmUgRmlsZVdyaXRlclN5bmNfaAotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jaW5jbHVk
ZSAiQXN5bmNGaWxlV3JpdGVyQ2xpZW50LmgiCi0jaW5jbHVkZSAiRmlsZUVycm9yLmgiCi0jaW5j
bHVkZSAiRmlsZVdyaXRlckJhc2UuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEJsb2I7Ci0KLXR5cGVkZWYgaW50IEV4Y2VwdGlv
bkNvZGU7Ci0KLWNsYXNzIEZpbGVXcml0ZXJTeW5jIDogcHVibGljIEZpbGVXcml0ZXJCYXNlLCBw
dWJsaWMgQXN5bmNGaWxlV3JpdGVyQ2xpZW50IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxGaWxlV3JpdGVyU3luYz4gY3JlYXRlKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgRmlsZVdyaXRlclN5bmMoKSk7Ci0gICAgfQotICAgIHZpcnR1YWwgfkZpbGVXcml0
ZXJTeW5jKCk7Ci0KLSAgICAvLyBGaWxlV3JpdGVyQmFzZQotICAgIHZvaWQgd3JpdGUoQmxvYios
IEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIHNlZWsobG9uZyBsb25nIHBvc2l0aW9uLCBFeGNl
cHRpb25Db2RlJik7Ci0gICAgdm9pZCB0cnVuY2F0ZShsb25nIGxvbmcgbGVuZ3RoLCBFeGNlcHRp
b25Db2RlJik7Ci0KLSAgICAvLyBBc3luY0ZpbGVXcml0ZXJDbGllbnQsIHZpYSBGaWxlV3JpdGVy
QmFzZQotICAgIHZvaWQgZGlkV3JpdGUobG9uZyBsb25nIGJ5dGVzLCBib29sIGNvbXBsZXRlKTsK
LSAgICB2b2lkIGRpZFRydW5jYXRlKCk7Ci0gICAgdm9pZCBkaWRGYWlsKEZpbGVFcnJvcjo6RXJy
b3JDb2RlKTsKLQotcHJpdmF0ZToKLSAgICBGaWxlV3JpdGVyU3luYygpOwotICAgIHZvaWQgcHJl
cGFyZUZvcldyaXRlKCk7Ci0KLSAgICBGaWxlRXJyb3I6OkVycm9yQ29kZSBtX2Vycm9yOwotI2lm
bmRlZiBOREVCVUcKLSAgICBib29sIG1fY29tcGxldGU7Ci0jZW5kaWYKLX07Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2VuZGlm
IC8vIEZpbGVXcml0ZXJfaApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVt
L0ZpbGVXcml0ZXJTeW5jLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZpbGVzeXN0ZW0vRmlsZVdyaXRlclN5bmMuaWRsCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVdyaXRlclN5bmMuaWRsCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDQzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xl
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAotICAgIENv
bmRpdGlvbmFsPUZJTEVfU1lTVEVNLAotICAgIEpTTm9TdGF0aWNUYWJsZXMKLV0gaW50ZXJmYWNl
IEZpbGVXcml0ZXJTeW5jIHsKLSAgICAvLyBzeW5jaHJvbm91cyB3cml0ZS9tb2RpZnkgbWV0aG9k
cwotICAgIFtSYWlzZXNFeGNlcHRpb25dIHZvaWQgd3JpdGUoQmxvYiBkYXRhKTsKLSAgICBbUmFp
c2VzRXhjZXB0aW9uXSB2b2lkIHNlZWsobG9uZyBsb25nIHBvc2l0aW9uKTsKLSAgICBbUmFpc2Vz
RXhjZXB0aW9uXSB2b2lkIHRydW5jYXRlKGxvbmcgbG9uZyBzaXplKTsKLQotICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBsb25nIGxvbmcgcG9zaXRpb247Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIGxv
bmcgbG9uZyBsZW5ndGg7Ci19OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lz
dGVtL0hUTUxJbnB1dEVsZW1lbnRGaWxlU3lzdGVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vSFRNTElucHV0RWxlbWVudEZpbGVTeXN0ZW0uY3Bw
CShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0v
SFRNTElucHV0RWxlbWVudEZpbGVTeXN0ZW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDkxICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAq
Ci0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
LSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSFRNTElucHV0RWxlbWVudEZpbGVT
eXN0ZW0uaCIKLQotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2luY2x1ZGUgIkRPTUZpbGVQ
YXRoLmgiCi0jaW5jbHVkZSAiRE9NRmlsZVN5c3RlbS5oIgotI2luY2x1ZGUgIkRpcmVjdG9yeUVu
dHJ5LmgiCi0jaW5jbHVkZSAiRW50cnlBcnJheS5oIgotI2luY2x1ZGUgIkZpbGVFbnRyeS5oIgot
I2luY2x1ZGUgIkZpbGVMaXN0LmgiCi0jaW5jbHVkZSAiRmlsZU1ldGFkYXRhLmgiCi0jaW5jbHVk
ZSAiRmlsZVN5c3RlbS5oIgotI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi0vLyBzdGF0aWMKLVBhc3NSZWZQdHI8RW50cnlBcnJheT4gSFRNTElu
cHV0RWxlbWVudEZpbGVTeXN0ZW06OndlYmtpdEVudHJpZXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgSFRNTElucHV0RWxlbWVudCogaW5wdXQpCi17Ci0g
ICAgUmVmUHRyPEVudHJ5QXJyYXk+IGFycmF5ID0gRW50cnlBcnJheTo6Y3JlYXRlKCk7Ci0gICAg
RmlsZUxpc3QqIGZpbGVzID0gaW5wdXQtPmZpbGVzKCk7Ci0KLSAgICBpZiAoIWZpbGVzKQotICAg
ICAgICByZXR1cm4gYXJyYXk7Ci0KLSAgICBSZWZQdHI8RE9NRmlsZVN5c3RlbT4gZmlsZXN5c3Rl
bSA9IERPTUZpbGVTeXN0ZW06OmNyZWF0ZUlzb2xhdGVkRmlsZVN5c3RlbShzY3JpcHRFeGVjdXRp
b25Db250ZXh0LCBpbnB1dC0+ZHJvcHBlZEZpbGVTeXN0ZW1JZCgpKTsKLSAgICBpZiAoIWZpbGVz
eXN0ZW0pIHsKLSAgICAgICAgLy8gRHJhZy1kcm9wIGlzb2xhdGVkIGZpbGVzeXN0ZW0gaXMgbm90
IGF2YWlsYWJsZS4KLSAgICAgICAgcmV0dXJuIGFycmF5OwotICAgIH0KLQotICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBmaWxlcy0+bGVuZ3RoKCk7ICsraSkgewotICAgICAgICBGaWxlKiBm
aWxlID0gZmlsZXMtPml0ZW0oaSk7Ci0KLSAgICAgICAgLy8gRklYTUU6IFRoaXMgaW52b2x2ZXMg
c3luY2hyb25vdXMgZmlsZSBvcGVyYXRpb24uCi0gICAgICAgIEZpbGVNZXRhZGF0YSBtZXRhZGF0
YTsKLSAgICAgICAgaWYgKCFnZXRGaWxlTWV0YWRhdGEoZmlsZS0+cGF0aCgpLCBtZXRhZGF0YSkp
Ci0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAvLyBUaGUgZHJvcHBlZCBlbnRyaWVz
IGFyZSBtYXBwZWQgYXMgdG9wLWxldmVsIGVudHJpZXMgaW4gdGhlIGlzb2xhdGVkIGZpbGVzeXN0
ZW0uCi0gICAgICAgIFN0cmluZyB2aXJ0dWFsUGF0aCA9IERPTUZpbGVQYXRoOjphcHBlbmQoIi8i
LCBmaWxlLT5uYW1lKCkpOwotICAgICAgICBpZiAobWV0YWRhdGEudHlwZSA9PSBGaWxlTWV0YWRh
dGE6OlR5cGVEaXJlY3RvcnkpCi0gICAgICAgICAgICBhcnJheS0+YXBwZW5kKERpcmVjdG9yeUVu
dHJ5OjpjcmVhdGUoZmlsZXN5c3RlbSwgdmlydHVhbFBhdGgpKTsKLSAgICAgICAgZWxzZQotICAg
ICAgICAgICAgYXJyYXktPmFwcGVuZChGaWxlRW50cnk6OmNyZWF0ZShmaWxlc3lzdGVtLCB2aXJ0
dWFsUGF0aCkpOwotICAgIH0KLSAgICByZXR1cm4gYXJyYXk7Ci19Ci0KLUhUTUxJbnB1dEVsZW1l
bnRGaWxlU3lzdGVtOjpIVE1MSW5wdXRFbGVtZW50RmlsZVN5c3RlbSgpCi17Ci19Ci0KLUhUTUxJ
bnB1dEVsZW1lbnRGaWxlU3lzdGVtOjp+SFRNTElucHV0RWxlbWVudEZpbGVTeXN0ZW0oKQotewot
fQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNU
RU0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vSFRNTElucHV0RWxl
bWVudEZpbGVTeXN0ZW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zp
bGVzeXN0ZW0vSFRNTElucHV0RWxlbWVudEZpbGVTeXN0ZW0uaAkocmV2aXNpb24gMTU2NjkxKQor
KysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0hUTUxJbnB1dEVsZW1lbnRGaWxl
U3lzdGVtLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24u
Ci0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgSFRNTElucHV0
RWxlbWVudEZpbGVTeXN0ZW1faAotI2RlZmluZSBIVE1MSW5wdXRFbGVtZW50RmlsZVN5c3RlbV9o
Ci0KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LWNsYXNzIEVudHJ5QXJyYXk7Ci1jbGFzcyBIVE1MSW5wdXRFbGVtZW50OwotY2xhc3MgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDsKLQotY2xhc3MgSFRNTElucHV0RWxlbWVudEZpbGVTeXN0ZW0gewot
cHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEVudHJ5QXJyYXk+IHdlYmtpdEVudHJpZXMo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEhUTUxJbnB1dEVsZW1lbnQqKTsKLQotcHJpdmF0ZToK
LSAgICBIVE1MSW5wdXRFbGVtZW50RmlsZVN5c3RlbSgpOwotICAgIH5IVE1MSW5wdXRFbGVtZW50
RmlsZVN5c3RlbSgpOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8g
SFRNTElucHV0RWxlbWVudEZpbGVTeXN0ZW1faApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9maWxlc3lzdGVtL0hUTUxJbnB1dEVsZW1lbnRGaWxlU3lzdGVtLmlkbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vSFRNTElucHV0RWxlbWVudEZpbGVT
eXN0ZW0uaWRsCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zp
bGVzeXN0ZW0vSFRNTElucHV0RWxlbWVudEZpbGVTeXN0ZW0uaWRsCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDM2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAq
IG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0g
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi1bCi0gICAgQ29uZGl0aW9uYWw9RklMRV9TWVNURU0sCi1dIHBhcnRpYWwg
aW50ZXJmYWNlIEhUTUxJbnB1dEVsZW1lbnQgewotICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRp
b25Db250ZXh0XSByZWFkb25seSBhdHRyaWJ1dGUgRW50cnlBcnJheSB3ZWJraXRFbnRyaWVzOwot
fTsKLQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0xvY2FsRmlsZVN5
c3RlbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVt
L0xvY2FsRmlsZVN5c3RlbS5jcHAJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmlsZXN5c3RlbS9Mb2NhbEZpbGVTeXN0ZW0uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDEwNiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0g
KiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0g
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAot
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkxvY2FsRmlsZVN5
c3RlbS5oIgotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jaW5jbHVkZSAiQ3Jvc3NUaHJl
YWRUYXNrLmgiCi0jaW5jbHVkZSAiRE9NRmlsZVN5c3RlbS5oIgotI2luY2x1ZGUgIkVycm9yQ2Fs
bGJhY2suaCIKLSNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCi0jaW5jbHVkZSAiRmlsZUVycm9y
LmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbUNhbGxiYWNrLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3Rl
bUNhbGxiYWNrcy5oIgotI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNs
dWRlICJTZWN1cml0eU9yaWdpbi5oIgotI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+Ci0jaW5j
bHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1Mb2NhbEZp
bGVTeXN0ZW0qIExvY2FsRmlsZVN5c3RlbTo6c19pbnN0YW5jZSA9IDA7Ci0KLXZvaWQgTG9jYWxG
aWxlU3lzdGVtOjppbml0aWFsaXplTG9jYWxGaWxlU3lzdGVtKGNvbnN0IFN0cmluZyYgYmFzZVBh
dGgpCi17Ci0gICAgLy8gRklYTUU6IFNob3VsZCBpbml0aWFsaXplIHRoZSBxdW90YSBzZXR0aW5n
cyBhcyB3ZWxsLgotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgQVNTRVJUKCFzX2lu
c3RhbmNlKTsKLSAgICBpZiAoc19pbnN0YW5jZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgT3du
UHRyPExvY2FsRmlsZVN5c3RlbT4gbG9jYWxGaWxlU3lzdGVtID0gYWRvcHRQdHIobmV3IExvY2Fs
RmlsZVN5c3RlbShiYXNlUGF0aCkpOwotICAgIHNfaW5zdGFuY2UgPSBsb2NhbEZpbGVTeXN0ZW0u
bGVha1B0cigpOwotfQotCi1Mb2NhbEZpbGVTeXN0ZW0mIExvY2FsRmlsZVN5c3RlbTo6bG9jYWxG
aWxlU3lzdGVtKCkKLXsKLSAgICAvLyBpbml0aWFsaXplTG9jYWxGaWxlU3lzdGVtIG11c3QgYmUg
Y2FsbGVkIHByaW9yIGNhbGxpbmcgdGhpcy4KLSAgICBBU1NFUlQoc19pbnN0YW5jZSk7Ci0gICAg
cmV0dXJuICpzX2luc3RhbmNlOwotfQotCi1TdHJpbmcgTG9jYWxGaWxlU3lzdGVtOjpmaWxlU3lz
dGVtQmFzZVBhdGgoKSBjb25zdAotewotICAgIHJldHVybiBtX2Jhc2VQYXRoOwotfQotCi1zdGF0
aWMgdm9pZCBvcGVuRmlsZVN5c3RlbShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3Ry
aW5nJiBiYXNlUGF0aCwgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBGaWxlU3lzdGVtVHlwZSB0
eXBlLCBib29sIGNyZWF0ZSwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNh
bGxiYWNrcykKLXsKLSAgICBBc3luY0ZpbGVTeXN0ZW06Om9wZW5GaWxlU3lzdGVtKGJhc2VQYXRo
LCBpZGVudGlmaWVyLCB0eXBlLCBjcmVhdGUsIGNhbGxiYWNrcyk7Ci19Ci0KLXN0YXRpYyB2b2lk
IHBlcmZvcm1EZWxldGVGaWxlU3lzdGVtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBT
dHJpbmcmIGJhc2VQYXRoLCBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIEZpbGVTeXN0ZW1UeXBl
IHR5cGUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCi17
Ci0gICAgQXN5bmNGaWxlU3lzdGVtOjpkZWxldGVGaWxlU3lzdGVtKGJhc2VQYXRoLCBpZGVudGlm
aWVyLCB0eXBlLCBjYWxsYmFja3MpOwotfQotCi12b2lkIExvY2FsRmlsZVN5c3RlbTo6cmVhZEZp
bGVTeXN0ZW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRmlsZVN5c3RlbVR5cGUg
dHlwZSwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcywgRmls
ZVN5c3RlbVN5bmNocm9ub3VzVHlwZSkKLXsKLSAgICAvLyBBc3luY0ZpbGVTeXN0ZW06Om9wZW5G
aWxlU3lzdGVtIGNhbGxzIGNhbGxiYWNrcyBzeW5jaHJvbm91c2x5LCBzbyB0aGUgbWV0aG9kIG5l
ZWRzIHRvIGJlIGNhbGxlZCBhc3luY2hyb25vdXNseS4KLSAgICBjb250ZXh0LT5wb3N0VGFzayhj
cmVhdGVDYWxsYmFja1Rhc2soJm9wZW5GaWxlU3lzdGVtLCBmaWxlU3lzdGVtQmFzZVBhdGgoKSwg
Y29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKS0+ZGF0YWJhc2VJZGVudGlmaWVyKCksIHR5cGUsIGZh
bHNlLCBjYWxsYmFja3MpKTsKLX0KLQotdm9pZCBMb2NhbEZpbGVTeXN0ZW06OnJlcXVlc3RGaWxl
U3lzdGVtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEZpbGVTeXN0ZW1UeXBlIHR5
cGUsIGxvbmcgbG9uZywgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxi
YWNrcywgRmlsZVN5c3RlbVN5bmNocm9ub3VzVHlwZSkKLXsKLSAgICAvLyBBc3luY0ZpbGVTeXN0
ZW06Om9wZW5GaWxlU3lzdGVtIGNhbGxzIGNhbGxiYWNrcyBzeW5jaHJvbm91c2x5LCBzbyB0aGUg
bWV0aG9kIG5lZWRzIHRvIGJlIGNhbGxlZCBhc3luY2hyb25vdXNseS4KLSAgICBjb250ZXh0LT5w
b3N0VGFzayhjcmVhdGVDYWxsYmFja1Rhc2soJm9wZW5GaWxlU3lzdGVtLCBmaWxlU3lzdGVtQmFz
ZVBhdGgoKSwgY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKS0+ZGF0YWJhc2VJZGVudGlmaWVyKCks
IHR5cGUsIHRydWUsIGNhbGxiYWNrcykpOwotfQotCi12b2lkIExvY2FsRmlsZVN5c3RlbTo6ZGVs
ZXRlRmlsZVN5c3RlbShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBGaWxlU3lzdGVt
VHlwZSB0eXBlLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tz
KQotewotICAgIC8vIEFzeW5jRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZVN5c3RlbSBjYWxscyBjYWxs
YmFja3Mgc3luY2hyb25vdXNseSwgc28gdGhlIG1ldGhvZCBuZWVkcyB0byBiZSBjYWxsZWQgYXN5
bmNocm9ub3VzbHkuCi0gICAgY29udGV4dC0+cG9zdFRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZw
ZXJmb3JtRGVsZXRlRmlsZVN5c3RlbSwgZmlsZVN5c3RlbUJhc2VQYXRoKCksIGNvbnRleHQtPnNl
Y3VyaXR5T3JpZ2luKCktPmRhdGFiYXNlSWRlbnRpZmllcigpLCB0eXBlLCBjYWxsYmFja3MpKTsK
LX0KLQotfSAvLyBuYW1lc3BhY2UKLQotI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9Mb2NhbEZpbGVTeXN0ZW0uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vTG9jYWxGaWxl
U3lzdGVtLmgJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmls
ZXN5c3RlbS9Mb2NhbEZpbGVTeXN0ZW0uaAkod29ya2luZyBjb3B5KQpAQCAtMSw5NiArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
LSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
Ci0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2lmbmRlZiBMb2NhbEZpbGVTeXN0ZW1faAotI2RlZmluZSBMb2NhbEZpbGVTeXN0ZW1faAotCi0j
aWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jaW5jbHVkZSAiRE9NRmlsZVN5c3RlbUJhc2UuaCIK
LSNpbmNsdWRlICJGaWxlU3lzdGVtVHlwZS5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBFcnJvckNhbGxiYWNrOwotY2xh
c3MgRmlsZVN5c3RlbUNhbGxiYWNrOwotY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLQot
Ly8gS2VlcHMgcGVyLXByb2Nlc3MgaW5mb3JtYXRpb24gYW5kIHByb3ZpZGVzIGFuIGVudHJ5IHBv
aW50IHRvIG9wZW4gYSBmaWxlIHN5c3RlbS4KLWNsYXNzIExvY2FsRmlsZVN5c3RlbSB7Ci0gICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoTG9jYWxGaWxlU3lzdGVtKTsKLXB1YmxpYzoKLSAgICAvLyBS
ZXR1cm5zIGEgcGVyLXByb2Nlc3MgaW5zdGFuY2Ugb2YgTG9jYWxGaWxlU3lzdGVtLgotICAgIC8v
IE5vdGUgdGhhdCBMb2NhbEZpbGVTeXN0ZW06OmluaXRpYWxpemVMb2NhbEZpbGVTeXN0ZW0gbXVz
dCBiZSBjYWxsZWQgYmVmb3JlCi0gICAgLy8gY2FsbGluZyB0aGlzIG9uZS4KLSAgICBzdGF0aWMg
TG9jYWxGaWxlU3lzdGVtJiBsb2NhbEZpbGVTeXN0ZW0oKTsKLQotICAgIC8vIERvZXMgbm90IGNy
ZWF0ZSB0aGUgcm9vdCBwYXRoIGZvciBmaWxlIHN5c3RlbSwganVzdCByZWFkcyBpdCBpZiBhdmFp
bGFibGUuCi0gICAgdm9pZCByZWFkRmlsZVN5c3RlbShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
RmlsZVN5c3RlbVR5cGUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiwgRmls
ZVN5c3RlbVN5bmNocm9ub3VzVHlwZSA9IEFzeW5jaHJvbm91c0ZpbGVTeXN0ZW0pOwotCi0gICAg
dm9pZCByZXF1ZXN0RmlsZVN5c3RlbShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRmlsZVN5c3Rl
bVR5cGUsIGxvbmcgbG9uZyBzaXplLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNr
cz4sIEZpbGVTeXN0ZW1TeW5jaHJvbm91c1R5cGUgPSBBc3luY2hyb25vdXNGaWxlU3lzdGVtKTsK
LQotICAgIHZvaWQgZGVsZXRlRmlsZVN5c3RlbShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRmls
ZVN5c3RlbVR5cGUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7Ci0KLSAg
ICAvLyBUaGlzIGNhbGwgaXMgbm90IHRocmVhZC1zYWZlOyBtdXN0IGJlIGNhbGxlZCBiZWZvcmUg
YW55IHdvcmtlciB0aHJlYWRzIGFyZSBjcmVhdGVkLgotICAgIHN0YXRpYyB2b2lkIGluaXRpYWxp
emVMb2NhbEZpbGVTeXN0ZW0oY29uc3QgU3RyaW5nJik7Ci0KLSAgICBTdHJpbmcgZmlsZVN5c3Rl
bUJhc2VQYXRoKCkgY29uc3Q7Ci0KLXByaXZhdGU6Ci0gICAgZXhwbGljaXQgTG9jYWxGaWxlU3lz
dGVtKGNvbnN0IFN0cmluZyYgYmFzZVBhdGgpCi0gICAgICAgIDogbV9iYXNlUGF0aChiYXNlUGF0
aCkKLSAgICB7Ci0gICAgfQotCi0gICAgc3RhdGljIExvY2FsRmlsZVN5c3RlbSogc19pbnN0YW5j
ZTsKLQotICAgIC8vIEFuIGlubmVyIGNsYXNzIHRoYXQgZW5mb3JjZXMgdGhyZWFkLXNhZmUgc3Ry
aW5nIGFjY2Vzcy4KLSAgICBjbGFzcyBTeXN0ZW1CYXNlUGF0aCB7Ci0gICAgcHVibGljOgotICAg
ICAgICBleHBsaWNpdCBTeXN0ZW1CYXNlUGF0aChjb25zdCBTdHJpbmcmIHBhdGgpIDogbV92YWx1
ZShwYXRoKSB7IH0KLSAgICAgICAgb3BlcmF0b3IgU3RyaW5nKCkgY29uc3QKLSAgICAgICAgewot
ICAgICAgICAgICAgcmV0dXJuIG1fdmFsdWUuaXNvbGF0ZWRDb3B5KCk7Ci0gICAgICAgIH0KLSAg
ICBwcml2YXRlOgotICAgICAgICBTdHJpbmcgbV92YWx1ZTsKLSAgICB9OwotCi0gICAgU3lzdGVt
QmFzZVBhdGggbV9iYXNlUGF0aDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlCi0KLSNlbmRpZiAvLyBF
TkFCTEUoRklMRV9TWVNURU0pCi0KLSNlbmRpZiAvLyBMb2NhbEZpbGVTeXN0ZW1faApJbmRleDog
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL01ldGFkYXRhLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL01ldGFkYXRhLmgJKHJldmlzaW9u
IDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9NZXRhZGF0YS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDcwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwot
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAot
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIE1ldGFkYXRhX2gKLSNkZWZp
bmUgTWV0YWRhdGFfaAotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jaW5jbHVkZSAiRmls
ZU1ldGFkYXRhLmgiCi0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1jbGFzcyBNZXRhZGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPE1ldGFkYXRhPiB7
Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8TWV0YWRhdGE+IGNyZWF0ZShjb25zdCBG
aWxlTWV0YWRhdGEmIHBsYXRmb3JtTWV0YWRhdGEpCi0gICAgewotICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IE1ldGFkYXRhKHBsYXRmb3JtTWV0YWRhdGEpKTsKLSAgICB9Ci0KLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxNZXRhZGF0YT4gY3JlYXRlKE1ldGFkYXRhKiBtZXRhZGF0YSkKLSAgICB7
Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWV0YWRhdGEobWV0YWRhdGEtPm1fcGxhdGZv
cm1NZXRhZGF0YSkpOwotICAgIH0KLQotICAgIC8vIE5lZWRzIHRvIHJldHVybiBlcG9jaCB0aW1l
IGluIG1pbGxpc2Vjb25kcyBmb3IgRGF0ZSB3aGlsZSBGaWxlTWV0YWRhdGEncyBtb2RpZmljYXRp
b25UaW1lIGlzIGluIHNlY29uZHMuCi0gICAgZG91YmxlIG1vZGlmaWNhdGlvblRpbWUoKSBjb25z
dCB7IHJldHVybiBtX3BsYXRmb3JtTWV0YWRhdGEubW9kaWZpY2F0aW9uVGltZSAqIDEwMDAuMDsg
fQotICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBzaXplKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8dW5zaWduZWQgbG9uZyBsb25nPihtX3BsYXRmb3JtTWV0YWRhdGEubGVuZ3RoKTsgfQotCi1w
cml2YXRlOgotICAgIGV4cGxpY2l0IE1ldGFkYXRhKGNvbnN0IEZpbGVNZXRhZGF0YSYgcGxhdGZv
cm1NZXRhZGF0YSkKLSAgICAgICAgOiBtX3BsYXRmb3JtTWV0YWRhdGEocGxhdGZvcm1NZXRhZGF0
YSkKLSAgICB7Ci0gICAgfQotCi0gICAgRmlsZU1ldGFkYXRhIG1fcGxhdGZvcm1NZXRhZGF0YTsK
LX07Ci0KLX0gLy8gbmFtZXNwYWNlCi0KLSNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCi0K
LSNlbmRpZiAvLyBNZXRhZGF0YV9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVz
eXN0ZW0vTWV0YWRhdGEuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmlsZXN5c3RlbS9NZXRhZGF0YS5pZGwJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmlsZXN5c3RlbS9NZXRhZGF0YS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTEs
MzkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0
OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
Ci0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLVsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKLSAgICBDb25kaXRpb25hbD1GSUxF
X1NZU1RFTSwKLSAgICBKU05vU3RhdGljVGFibGVzLAotICAgIEltcGxlbWVudGF0aW9uTGFja3NW
VGFibGUKLV0gaW50ZXJmYWNlIE1ldGFkYXRhIHsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgRGF0
ZSBtb2RpZmljYXRpb25UaW1lOwotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25n
IGxvbmcgc2l6ZTsKLX07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0v
TWV0YWRhdGFDYWxsYmFjay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmlsZXN5c3RlbS9NZXRhZGF0YUNhbGxiYWNrLmgJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9NZXRhZGF0YUNhbGxiYWNrLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
Ci0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgTWV0YWRhdGFDYWxsYmFja19oCi0jZGVmaW5l
IE1ldGFkYXRhQ2FsbGJhY2tfaAotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBNZXRh
ZGF0YTsKLQotY2xhc3MgTWV0YWRhdGFDYWxsYmFjayA6IHB1YmxpYyBSZWZDb3VudGVkPE1ldGFk
YXRhQ2FsbGJhY2s+IHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5NZXRhZGF0YUNhbGxiYWNrKCkg
eyB9Ci0gICAgdmlydHVhbCBib29sIGhhbmRsZUV2ZW50KE1ldGFkYXRhKikgPSAwOwotfTsKLQot
fSAvLyBuYW1lc3BhY2UKLQotI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2VuZGlm
IC8vIE1ldGFkYXRhQ2FsbGJhY2tfaApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxl
c3lzdGVtL01ldGFkYXRhQ2FsbGJhY2suaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmlsZXN5c3RlbS9NZXRhZGF0YUNhbGxiYWNrLmlkbAkocmV2aXNpb24gMTU2Njkx
KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL01ldGFkYXRhQ2FsbGJhY2su
aWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xLDM1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1bCi0gICAgQ29uZGl0aW9uYWw9RklM
RV9TWVNURU0sCi1dIGNhbGxiYWNrIGludGVyZmFjZSBNZXRhZGF0YUNhbGxiYWNrIHsKLSAgICBi
b29sZWFuIGhhbmRsZUV2ZW50KE1ldGFkYXRhIG1ldGFkYXRhKTsKLX07CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vU3luY0NhbGxiYWNrSGVscGVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL1N5bmNDYWxsYmFja0hlbHBl
ci5oCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0
ZW0vU3luY0NhbGxiYWNrSGVscGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsMTg5ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQot
ICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
LSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aWZuZGVmIFN5bmNDYWxsYmFja0hlbHBlcl9oCi0jZGVmaW5lIFN5bmNDYWxsYmFja0hlbHBlcl9o
Ci0KLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNpbmNsdWRlICJEaXJlY3RvcnlFbnRyeS5o
IgotI2luY2x1ZGUgIkVudHJpZXNDYWxsYmFjay5oIgotI2luY2x1ZGUgIkVudHJ5QXJyYXlTeW5j
LmgiCi0jaW5jbHVkZSAiRW50cnlDYWxsYmFjay5oIgotI2luY2x1ZGUgIkVycm9yQ2FsbGJhY2su
aCIKLSNpbmNsdWRlICJGaWxlRW50cnkuaCIKLSNpbmNsdWRlICJGaWxlRXJyb3IuaCIKLSNpbmNs
dWRlICJGaWxlRXhjZXB0aW9uLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbUNhbGxiYWNrLmgiCi0j
aW5jbHVkZSAiTWV0YWRhdGFDYWxsYmFjay5oIgotI2luY2x1ZGUgIlZvaWRDYWxsYmFjay5oIgot
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBBc3luY0ZpbGVTeXN0ZW07Ci1jbGFzcyBE
aXJlY3RvcnlFbnRyeVN5bmM7Ci1jbGFzcyBFbnRyeUFycmF5U3luYzsKLWNsYXNzIEVudHJ5U3lu
YzsKLWNsYXNzIEZpbGVFbnRyeVN5bmM7Ci0KLXR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7Ci0K
LS8vIEEgaGVscGVyIHRlbXBsYXRlIGZvciBGaWxlU3lzdGVtU3luYyBpbXBsZW1lbnRhdGlvbi4K
LXRlbXBsYXRlIDx0eXBlbmFtZSBTdWNjZXNzQ2FsbGJhY2ssIHR5cGVuYW1lIE9ic2VydmVyVHlw
ZSwgdHlwZW5hbWUgQ2FsbGJhY2tBcmcsIHR5cGVuYW1lIFJlc3VsdFR5cGU+Ci1jbGFzcyBTeW5j
Q2FsbGJhY2tIZWxwZXIgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFN5bmNDYWxsYmFja0hl
bHBlcik7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBTeW5jQ2FsbGJhY2tIZWxwZXI8U3VjY2Vzc0Nh
bGxiYWNrLCBPYnNlcnZlclR5cGUsIENhbGxiYWNrQXJnLCBSZXN1bHRUeXBlPiBIZWxwZXJUeXBl
OwotICAgIFN5bmNDYWxsYmFja0hlbHBlcihPYnNlcnZlclR5cGUqIG9ic2VydmVyID0gMCkKLSAg
ICAgICAgOiBtX29ic2VydmVyKG9ic2VydmVyKQotICAgICAgICAsIG1fc3VjY2Vzc0NhbGxiYWNr
KFN1Y2Nlc3NDYWxsYmFja0ltcGw6OmNyZWF0ZSh0aGlzKSkKLSAgICAgICAgLCBtX2Vycm9yQ2Fs
bGJhY2soRXJyb3JDYWxsYmFja0ltcGw6OmNyZWF0ZSh0aGlzKSkKLSAgICAgICAgLCBtX2V4Y2Vw
dGlvbkNvZGUoMCkKLSAgICAgICAgLCBtX2NvbXBsZXRlZChmYWxzZSkKLSAgICB7Ci0gICAgfQot
Ci0gICAgUGFzc1JlZlB0cjxSZXN1bHRUeXBlPiBnZXRSZXN1bHQoRXhjZXB0aW9uQ29kZSYgZWMp
Ci0gICAgewotICAgICAgICBpZiAobV9vYnNlcnZlcikgewotICAgICAgICAgICAgd2hpbGUgKCFt
X2NvbXBsZXRlZCkgewotICAgICAgICAgICAgICAgIGlmICghbV9vYnNlcnZlci0+d2FpdEZvck9w
ZXJhdGlvblRvQ29tcGxldGUoKSkgewotICAgICAgICAgICAgICAgICAgICBtX2V4Y2VwdGlvbkNv
ZGUgPSBGaWxlRXhjZXB0aW9uOjpBQk9SVF9FUlI7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBl
YyA9IG1fZXhjZXB0aW9uQ29kZTsKLSAgICAgICAgcmV0dXJuIG1fcmVzdWx0LnJlbGVhc2UoKTsK
LSAgICB9Ci0KLSAgICBQYXNzUmVmUHRyPFN1Y2Nlc3NDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNr
KCkgeyByZXR1cm4gbV9zdWNjZXNzQ2FsbGJhY2s7IH0KLSAgICBQYXNzUmVmUHRyPEVycm9yQ2Fs
bGJhY2s+IGVycm9yQ2FsbGJhY2soKSB7IHJldHVybiBtX2Vycm9yQ2FsbGJhY2s7IH0KLQotcHJp
dmF0ZToKLSAgICBjbGFzcyBTdWNjZXNzQ2FsbGJhY2tJbXBsIDogcHVibGljIFN1Y2Nlc3NDYWxs
YmFjayB7Ci0gICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdWNjZXNzQ2Fs
bGJhY2tJbXBsPiBjcmVhdGUoSGVscGVyVHlwZSogaGVscGVyKQotICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN1Y2Nlc3NDYWxsYmFja0ltcGwoaGVscGVyKSk7Ci0g
ICAgICAgIH0KLQotICAgICAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlRXZlbnQoKQotICAgICAgICB7
Ci0gICAgICAgICAgICBtX2hlbHBlci0+c2V0RXJyb3IoMCk7Ci0gICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICAgICAgfQotCi0gICAgICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVFdmVudChDYWxs
YmFja0FyZyogYXJnKQotICAgICAgICB7Ci0gICAgICAgICAgICBtX2hlbHBlci0+c2V0UmVzdWx0
KFJlc3VsdFR5cGU6OmNyZWF0ZShhcmcpKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAg
ICAgICB9Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBleHBsaWNpdCBTdWNjZXNzQ2FsbGJhY2tJ
bXBsKEhlbHBlclR5cGUqIGhlbHBlcikKLSAgICAgICAgICAgIDogbV9oZWxwZXIoaGVscGVyKQot
ICAgICAgICB7Ci0gICAgICAgIH0KLSAgICAgICAgSGVscGVyVHlwZSogbV9oZWxwZXI7Ci0gICAg
fTsKLQotICAgIGNsYXNzIEVycm9yQ2FsbGJhY2tJbXBsIDogcHVibGljIEVycm9yQ2FsbGJhY2sg
ewotICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFja0lt
cGw+IGNyZWF0ZShIZWxwZXJUeXBlKiBoZWxwZXIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgRXJyb3JDYWxsYmFja0ltcGwoaGVscGVyKSk7Ci0gICAgICAgIH0K
LQotICAgICAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlRXZlbnQoRmlsZUVycm9yKiBlcnJvcikKLSAg
ICAgICAgewotICAgICAgICAgICAgQVNTRVJUKGVycm9yKTsKLSAgICAgICAgICAgIG1faGVscGVy
LT5zZXRFcnJvcihlcnJvci0+Y29kZSgpKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAg
ICAgICB9Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBleHBsaWNpdCBFcnJvckNhbGxiYWNrSW1w
bChIZWxwZXJUeXBlKiBoZWxwZXIpCi0gICAgICAgICAgICA6IG1faGVscGVyKGhlbHBlcikKLSAg
ICAgICAgewotICAgICAgICB9Ci0gICAgICAgIEhlbHBlclR5cGUqIG1faGVscGVyOwotICAgIH07
Ci0KLSAgICBmcmllbmQgY2xhc3MgU3VjY2Vzc0NhbGxiYWNrSW1wbDsKLSAgICBmcmllbmQgY2xh
c3MgRXJyb3JDYWxsYmFja0ltcGw7Ci0KLSAgICB2b2lkIHNldEVycm9yKGludCBjb2RlKQotICAg
IHsKLSAgICAgICAgbV9leGNlcHRpb25Db2RlID0gRmlsZUV4Y2VwdGlvbjo6RXJyb3JDb2RlVG9F
eGNlcHRpb25Db2RlKGNvZGUpOwotICAgICAgICBtX2NvbXBsZXRlZCA9IHRydWU7Ci0gICAgfQot
Ci0gICAgdm9pZCBzZXRSZXN1bHQoUGFzc1JlZlB0cjxSZXN1bHRUeXBlPiByZXN1bHQpCi0gICAg
ewotICAgICAgICBtX3Jlc3VsdCA9IHJlc3VsdDsKLSAgICAgICAgbV9jb21wbGV0ZWQgPSB0cnVl
OwotICAgIH0KLQotICAgIE9ic2VydmVyVHlwZSogbV9vYnNlcnZlcjsKLSAgICBSZWZQdHI8U3Vj
Y2Vzc0NhbGxiYWNrSW1wbD4gbV9zdWNjZXNzQ2FsbGJhY2s7Ci0gICAgUmVmUHRyPEVycm9yQ2Fs
bGJhY2tJbXBsPiBtX2Vycm9yQ2FsbGJhY2s7Ci0gICAgUmVmUHRyPFJlc3VsdFR5cGU+IG1fcmVz
dWx0OwotICAgIEV4Y2VwdGlvbkNvZGUgbV9leGNlcHRpb25Db2RlOwotICAgIGJvb2wgbV9jb21w
bGV0ZWQ7Ci19OwotCi1zdHJ1Y3QgRW1wdHlUeXBlIDogcHVibGljIFJlZkNvdW50ZWQ8RW1wdHlU
eXBlPiB7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8RW1wdHlUeXBlPiBjcmVhdGUoRW1wdHlUeXBl
KikKLSAgICB7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLX07Ci0KLXN0cnVjdCBFbXB0eU9i
c2VydmVyVHlwZSB7Ci0gICAgYm9vbCB3YWl0Rm9yT3BlcmF0aW9uVG9Db21wbGV0ZSgpCi0gICAg
ewotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotfTsKLQotdHlwZWRlZiBTeW5jQ2FsbGJh
Y2tIZWxwZXI8RW50cnlDYWxsYmFjaywgQXN5bmNGaWxlU3lzdGVtLCBFbnRyeSwgRW50cnlTeW5j
PiBFbnRyeVN5bmNDYWxsYmFja0hlbHBlcjsKLXR5cGVkZWYgU3luY0NhbGxiYWNrSGVscGVyPEVu
dHJpZXNDYWxsYmFjaywgQXN5bmNGaWxlU3lzdGVtLCBFbnRyeUFycmF5LCBFbnRyeUFycmF5U3lu
Yz4gRW50cmllc1N5bmNDYWxsYmFja0hlbHBlcjsKLXR5cGVkZWYgU3luY0NhbGxiYWNrSGVscGVy
PE1ldGFkYXRhQ2FsbGJhY2ssIEFzeW5jRmlsZVN5c3RlbSwgTWV0YWRhdGEsIE1ldGFkYXRhPiBN
ZXRhZGF0YVN5bmNDYWxsYmFja0hlbHBlcjsKLXR5cGVkZWYgU3luY0NhbGxiYWNrSGVscGVyPFZv
aWRDYWxsYmFjaywgQXN5bmNGaWxlU3lzdGVtLCBFbXB0eVR5cGUsIEVtcHR5VHlwZT4gVm9pZFN5
bmNDYWxsYmFja0hlbHBlcjsKLXR5cGVkZWYgU3luY0NhbGxiYWNrSGVscGVyPEZpbGVTeXN0ZW1D
YWxsYmFjaywgRW1wdHlPYnNlcnZlclR5cGUsIERPTUZpbGVTeXN0ZW0sIERPTUZpbGVTeXN0ZW1T
eW5jPiBGaWxlU3lzdGVtU3luY0NhbGxiYWNrSGVscGVyOwotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNlbmRpZiAvLyBTeW5jQ2Fs
bGJhY2tIZWxwZXJfaApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL1dv
cmtlckdsb2JhbFNjb3BlRmlsZVN5c3RlbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9maWxlc3lzdGVtL1dvcmtlckdsb2JhbFNjb3BlRmlsZVN5c3RlbS5jcHAJKHJl
dmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9Xb3Jr
ZXJHbG9iYWxTY29wZUZpbGVTeXN0ZW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE0MiArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMSBHb29nbGUgSW5jLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKLSAqCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldv
cmtlckdsb2JhbFNjb3BlRmlsZVN5c3RlbS5oIgotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQot
Ci0jaW5jbHVkZSAiQXN5bmNGaWxlU3lzdGVtLmgiCi0jaW5jbHVkZSAiRE9NRmlsZVN5c3RlbUJh
c2UuaCIKLSNpbmNsdWRlICJET01GaWxlU3lzdGVtU3luYy5oIgotI2luY2x1ZGUgIkRpcmVjdG9y
eUVudHJ5U3luYy5oIgotI2luY2x1ZGUgIkVycm9yQ2FsbGJhY2suaCIKLSNpbmNsdWRlICJGaWxl
RW50cnlTeW5jLmgiCi0jaW5jbHVkZSAiRmlsZUVycm9yLmgiCi0jaW5jbHVkZSAiRmlsZUV4Y2Vw
dGlvbi5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW1DYWxsYmFjay5oIgotI2luY2x1ZGUgIkZpbGVT
eXN0ZW1DYWxsYmFja3MuaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtVHlwZS5oIgotI2luY2x1ZGUg
IkxvY2FsRmlsZVN5c3RlbS5oIgotI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCi0jaW5jbHVk
ZSAiU3luY0NhbGxiYWNrSGVscGVyLmgiCi0jaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIK
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi12b2lkIFdvcmtlckdsb2JhbFNjb3BlRmlsZVN5c3Rl
bTo6d2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0oV29ya2VyR2xvYmFsU2NvcGUqIHdvcmtlciwgaW50
IHR5cGUsIGxvbmcgbG9uZyBzaXplLCBQYXNzUmVmUHRyPEZpbGVTeXN0ZW1DYWxsYmFjaz4gc3Vj
Y2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCi17
Ci0gICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2VjdXJlQ29udGV4dCA9IHdvcmtlci0+c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgIGlmICghQXN5bmNGaWxlU3lzdGVtOjppc0F2YWls
YWJsZSgpIHx8ICFzZWN1cmVDb250ZXh0LT5zZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3NGaWxl
U3lzdGVtKCkpIHsKLSAgICAgICAgRE9NRmlsZVN5c3RlbTo6c2NoZWR1bGVDYWxsYmFjayh3b3Jr
ZXIsIGVycm9yQ2FsbGJhY2ssIEZpbGVFcnJvcjo6Y3JlYXRlKEZpbGVFcnJvcjo6U0VDVVJJVFlf
RVJSKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBGaWxlU3lzdGVtVHlwZSBmaWxl
U3lzdGVtVHlwZSA9IHN0YXRpY19jYXN0PEZpbGVTeXN0ZW1UeXBlPih0eXBlKTsKLSAgICBpZiAo
IURPTUZpbGVTeXN0ZW1CYXNlOjppc1ZhbGlkVHlwZShmaWxlU3lzdGVtVHlwZSkpIHsKLSAgICAg
ICAgRE9NRmlsZVN5c3RlbTo6c2NoZWR1bGVDYWxsYmFjayh3b3JrZXIsIGVycm9yQ2FsbGJhY2ss
IEZpbGVFcnJvcjo6Y3JlYXRlKEZpbGVFcnJvcjo6SU5WQUxJRF9NT0RJRklDQVRJT05fRVJSKSk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBMb2NhbEZpbGVTeXN0ZW06OmxvY2FsRmls
ZVN5c3RlbSgpLnJlcXVlc3RGaWxlU3lzdGVtKHdvcmtlciwgZmlsZVN5c3RlbVR5cGUsIHNpemUs
IEZpbGVTeXN0ZW1DYWxsYmFja3M6OmNyZWF0ZShzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJh
Y2ssIHdvcmtlciwgZmlsZVN5c3RlbVR5cGUpLCBBc3luY2hyb25vdXNGaWxlU3lzdGVtKTsKLX0K
LQotUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtU3luYz4gV29ya2VyR2xvYmFsU2NvcGVGaWxlU3lz
dGVtOjp3ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbVN5bmMoV29ya2VyR2xvYmFsU2NvcGUqIHdvcmtl
ciwgaW50IHR5cGUsIGxvbmcgbG9uZyBzaXplLCBFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICBl
YyA9IDA7Ci0gICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2VjdXJlQ29udGV4dCA9IHdvcmtl
ci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgIGlmICghQXN5bmNGaWxlU3lzdGVtOjpp
c0F2YWlsYWJsZSgpIHx8ICFzZWN1cmVDb250ZXh0LT5zZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nl
c3NGaWxlU3lzdGVtKCkpIHsKLSAgICAgICAgZWMgPSBGaWxlRXhjZXB0aW9uOjpTRUNVUklUWV9F
UlI7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIEZpbGVTeXN0ZW1UeXBlIGZpbGVT
eXN0ZW1UeXBlID0gc3RhdGljX2Nhc3Q8RmlsZVN5c3RlbVR5cGU+KHR5cGUpOwotICAgIGlmICgh
RE9NRmlsZVN5c3RlbUJhc2U6OmlzVmFsaWRUeXBlKGZpbGVTeXN0ZW1UeXBlKSkgewotICAgICAg
ICBlYyA9IEZpbGVFeGNlcHRpb246OklOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUjsKLSAgICAgICAg
cmV0dXJuIDA7Ci0gICAgfQotCi0gICAgRmlsZVN5c3RlbVN5bmNDYWxsYmFja0hlbHBlciBoZWxw
ZXI7Ci0gICAgTG9jYWxGaWxlU3lzdGVtOjpsb2NhbEZpbGVTeXN0ZW0oKS5yZXF1ZXN0RmlsZVN5
c3RlbSh3b3JrZXIsIGZpbGVTeXN0ZW1UeXBlLCBzaXplLCBGaWxlU3lzdGVtQ2FsbGJhY2tzOjpj
cmVhdGUoaGVscGVyLnN1Y2Nlc3NDYWxsYmFjaygpLCBoZWxwZXIuZXJyb3JDYWxsYmFjaygpLCB3
b3JrZXIsIGZpbGVTeXN0ZW1UeXBlKSwgU3luY2hyb25vdXNGaWxlU3lzdGVtKTsKLSAgICByZXR1
cm4gaGVscGVyLmdldFJlc3VsdChlYyk7Ci19Ci0KLXZvaWQgV29ya2VyR2xvYmFsU2NvcGVGaWxl
U3lzdGVtOjp3ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lzdGVtVVJMKFdvcmtlckdsb2JhbFNjb3Bl
KiB3b3JrZXIsIGNvbnN0IFN0cmluZyYgdXJsLCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1
Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQot
ewotICAgIFVSTCBjb21wbGV0ZWRVUkwgPSB3b3JrZXItPmNvbXBsZXRlVVJMKHVybCk7Ci0gICAg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2VjdXJlQ29udGV4dCA9IHdvcmtlci0+c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpOwotICAgIGlmICghQXN5bmNGaWxlU3lzdGVtOjppc0F2YWlsYWJsZSgp
IHx8ICFzZWN1cmVDb250ZXh0LT5zZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3NGaWxlU3lzdGVt
KCkgfHwgIXNlY3VyZUNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCktPmNhblJlcXVlc3QoY29tcGxl
dGVkVVJMKSkgewotICAgICAgICBET01GaWxlU3lzdGVtOjpzY2hlZHVsZUNhbGxiYWNrKHdvcmtl
ciwgZXJyb3JDYWxsYmFjaywgRmlsZUVycm9yOjpjcmVhdGUoRmlsZUVycm9yOjpTRUNVUklUWV9F
UlIpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEZpbGVTeXN0ZW1UeXBlIHR5cGU7
Ci0gICAgU3RyaW5nIGZpbGVQYXRoOwotICAgIGlmICghY29tcGxldGVkVVJMLmlzVmFsaWQoKSB8
fCAhRE9NRmlsZVN5c3RlbUJhc2U6OmNyYWNrRmlsZVN5c3RlbVVSTChjb21wbGV0ZWRVUkwsIHR5
cGUsIGZpbGVQYXRoKSkgewotICAgICAgICBET01GaWxlU3lzdGVtOjpzY2hlZHVsZUNhbGxiYWNr
KHdvcmtlciwgZXJyb3JDYWxsYmFjaywgRmlsZUVycm9yOjpjcmVhdGUoRmlsZUVycm9yOjpFTkNP
RElOR19FUlIpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIExvY2FsRmlsZVN5c3Rl
bTo6bG9jYWxGaWxlU3lzdGVtKCkucmVhZEZpbGVTeXN0ZW0od29ya2VyLCB0eXBlLCBSZXNvbHZl
VVJJQ2FsbGJhY2tzOjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCB3b3Jr
ZXIsIHR5cGUsIGZpbGVQYXRoKSk7Ci19Ci0KLVBhc3NSZWZQdHI8RW50cnlTeW5jPiBXb3JrZXJH
bG9iYWxTY29wZUZpbGVTeXN0ZW06OndlYmtpdFJlc29sdmVMb2NhbEZpbGVTeXN0ZW1TeW5jVVJM
KFdvcmtlckdsb2JhbFNjb3BlKiB3b3JrZXIsIGNvbnN0IFN0cmluZyYgdXJsLCBFeGNlcHRpb25D
b2RlJiBlYykKLXsKLSAgICBlYyA9IDA7Ci0gICAgVVJMIGNvbXBsZXRlZFVSTCA9IHdvcmtlci0+
Y29tcGxldGVVUkwodXJsKTsKLSAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzZWN1cmVDb250
ZXh0ID0gd29ya2VyLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgaWYgKCFBc3luY0Zp
bGVTeXN0ZW06OmlzQXZhaWxhYmxlKCkgfHwgIXNlY3VyZUNvbnRleHQtPnNlY3VyaXR5T3JpZ2lu
KCktPmNhbkFjY2Vzc0ZpbGVTeXN0ZW0oKSB8fCAhc2VjdXJlQ29udGV4dC0+c2VjdXJpdHlPcmln
aW4oKS0+Y2FuUmVxdWVzdChjb21wbGV0ZWRVUkwpKSB7Ci0gICAgICAgIGVjID0gRmlsZUV4Y2Vw
dGlvbjo6U0VDVVJJVFlfRVJSOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBGaWxl
U3lzdGVtVHlwZSB0eXBlOwotICAgIFN0cmluZyBmaWxlUGF0aDsKLSAgICBpZiAoIWNvbXBsZXRl
ZFVSTC5pc1ZhbGlkKCkgfHwgIURPTUZpbGVTeXN0ZW1CYXNlOjpjcmFja0ZpbGVTeXN0ZW1VUkwo
Y29tcGxldGVkVVJMLCB0eXBlLCBmaWxlUGF0aCkpIHsKLSAgICAgICAgZWMgPSBGaWxlRXhjZXB0
aW9uOjpFTkNPRElOR19FUlI7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIEZpbGVT
eXN0ZW1TeW5jQ2FsbGJhY2tIZWxwZXIgcmVhZEZpbGVTeXN0ZW1IZWxwZXI7Ci0gICAgTG9jYWxG
aWxlU3lzdGVtOjpsb2NhbEZpbGVTeXN0ZW0oKS5yZWFkRmlsZVN5c3RlbSh3b3JrZXIsIHR5cGUs
IEZpbGVTeXN0ZW1DYWxsYmFja3M6OmNyZWF0ZShyZWFkRmlsZVN5c3RlbUhlbHBlci5zdWNjZXNz
Q2FsbGJhY2soKSwgcmVhZEZpbGVTeXN0ZW1IZWxwZXIuZXJyb3JDYWxsYmFjaygpLCB3b3JrZXIs
IHR5cGUpLCBTeW5jaHJvbm91c0ZpbGVTeXN0ZW0pOwotICAgIFJlZlB0cjxET01GaWxlU3lzdGVt
U3luYz4gZmlsZVN5c3RlbSA9IHJlYWRGaWxlU3lzdGVtSGVscGVyLmdldFJlc3VsdChlYyk7Ci0g
ICAgaWYgKCFmaWxlU3lzdGVtKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIFJlZlB0cjxFbnRy
eVN5bmM+IGVudHJ5ID0gZmlsZVN5c3RlbS0+cm9vdCgpLT5nZXREaXJlY3RvcnkoZmlsZVBhdGgs
IERpY3Rpb25hcnkoKSwgZWMpOwotICAgIGlmIChlYyA9PSBGaWxlRXhjZXB0aW9uOjpUWVBFX01J
U01BVENIX0VSUikKLSAgICAgICAgcmV0dXJuIGZpbGVTeXN0ZW0tPnJvb3QoKS0+Z2V0RmlsZShm
aWxlUGF0aCwgRGljdGlvbmFyeSgpLCBlYyk7Ci0KLSAgICByZXR1cm4gZW50cnkucmVsZWFzZSgp
OwotfQotCi1DT01QSUxFX0FTU0VSVChzdGF0aWNfY2FzdDxpbnQ+KFdvcmtlckdsb2JhbFNjb3Bl
RmlsZVN5c3RlbTo6VEVNUE9SQVJZKSA9PSBzdGF0aWNfY2FzdDxpbnQ+KEZpbGVTeXN0ZW1UeXBl
VGVtcG9yYXJ5KSwgZW51bV9taXNtYXRjaCk7Ci1DT01QSUxFX0FTU0VSVChzdGF0aWNfY2FzdDxp
bnQ+KFdvcmtlckdsb2JhbFNjb3BlRmlsZVN5c3RlbTo6UEVSU0lTVEVOVCkgPT0gc3RhdGljX2Nh
c3Q8aW50PihGaWxlU3lzdGVtVHlwZVBlcnNpc3RlbnQpLCBlbnVtX21pc21hdGNoKTsKLQotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL1dvcmtlckdsb2JhbFNjb3BlRmls
ZVN5c3RlbS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3Rl
bS9Xb3JrZXJHbG9iYWxTY29wZUZpbGVTeXN0ZW0uaAkocmV2aXNpb24gMTU2NjkxKQorKysgU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL1dvcmtlckdsb2JhbFNjb3BlRmlsZVN5c3Rl
bS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDY0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgot
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqCi0gKi8KLQot
I2lmbmRlZiBXb3JrZXJHbG9iYWxTY29wZUZpbGVTeXN0ZW1faAotI2RlZmluZSBXb3JrZXJHbG9i
YWxTY29wZUZpbGVTeXN0ZW1faAotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jaW5jbHVk
ZSAiRE9NRmlsZVN5c3RlbVN5bmMuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEVudHJ5Q2FsbGJhY2s7Ci1jbGFzcyBFbnRyeVN5
bmM7Ci1jbGFzcyBFcnJvckNhbGxiYWNrOwotY2xhc3MgRmlsZVN5c3RlbUNhbGxiYWNrOwotY2xh
c3MgV29ya2VyR2xvYmFsU2NvcGU7Ci0KLWNsYXNzIFdvcmtlckdsb2JhbFNjb3BlRmlsZVN5c3Rl
bSB7Ci1wdWJsaWM6Ci0gICAgZW51bSB7Ci0gICAgICAgIFRFTVBPUkFSWSwKLSAgICAgICAgUEVS
U0lTVEVOVCwKLSAgICB9OwotCi0gICAgc3RhdGljIHZvaWQgd2Via2l0UmVxdWVzdEZpbGVTeXN0
ZW0oV29ya2VyR2xvYmFsU2NvcGUqLCBpbnQgdHlwZSwgbG9uZyBsb25nIHNpemUsIFBhc3NSZWZQ
dHI8RmlsZVN5c3RlbUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JD
YWxsYmFjaz4pOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW1TeW5jPiB3ZWJr
aXRSZXF1ZXN0RmlsZVN5c3RlbVN5bmMoV29ya2VyR2xvYmFsU2NvcGUqLCBpbnQgdHlwZSwgbG9u
ZyBsb25nIHNpemUsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBzdGF0aWMgdm9pZCB3ZWJraXRSZXNv
bHZlTG9jYWxGaWxlU3lzdGVtVVJMKFdvcmtlckdsb2JhbFNjb3BlKiwgY29uc3QgU3RyaW5nJiB1
cmwsIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRy
PEVycm9yQ2FsbGJhY2s+KTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxFbnRyeVN5bmM+IHdlYmtp
dFJlc29sdmVMb2NhbEZpbGVTeXN0ZW1TeW5jVVJMKFdvcmtlckdsb2JhbFNjb3BlKiwgY29uc3Qg
U3RyaW5nJiB1cmwsIEV4Y2VwdGlvbkNvZGUmKTsKLQotcHJpdmF0ZToKLSAgICBXb3JrZXJHbG9i
YWxTY29wZUZpbGVTeXN0ZW0oKTsKLSAgICB+V29ya2VyR2xvYmFsU2NvcGVGaWxlU3lzdGVtKCk7
Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoRklMRV9T
WVNURU0pCi0KLSNlbmRpZiAvLyBXb3JrZXJHbG9iYWxTY29wZUZpbGVTeXN0ZW1faApJbmRleDog
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL1dvcmtlckdsb2JhbFNjb3BlRmlsZVN5
c3RlbS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVt
L1dvcmtlckdsb2JhbFNjb3BlRmlsZVN5c3RlbS5pZGwJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9Xb3JrZXJHbG9iYWxTY29wZUZpbGVTeXN0
ZW0uaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
LSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqCi0gKi8KLQotWwot
ICAgIENvbmRpdGlvbmFsPUZJTEVfU1lTVEVNLAotXSBwYXJ0aWFsIGludGVyZmFjZSBXb3JrZXJH
bG9iYWxTY29wZSB7Ci0gICAgY29uc3QgdW5zaWduZWQgc2hvcnQgVEVNUE9SQVJZID0gMDsKLSAg
ICBjb25zdCB1bnNpZ25lZCBzaG9ydCBQRVJTSVNURU5UID0gMTsKLQotICAgIHZvaWQgd2Via2l0
UmVxdWVzdEZpbGVTeXN0ZW0odW5zaWduZWQgc2hvcnQgdHlwZSwgbG9uZyBsb25nIHNpemUsIG9w
dGlvbmFsIEZpbGVTeXN0ZW1DYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2ssIG9wdGlvbmFsIEVycm9y
Q2FsbGJhY2sgZXJyb3JDYWxsYmFjayk7Ci0gICAgW1JhaXNlc0V4Y2VwdGlvbl0gRE9NRmlsZVN5
c3RlbVN5bmMgd2Via2l0UmVxdWVzdEZpbGVTeXN0ZW1TeW5jKHVuc2lnbmVkIHNob3J0IHR5cGUs
IGxvbmcgbG9uZyBzaXplKTsKLSAgICB2b2lkIHdlYmtpdFJlc29sdmVMb2NhbEZpbGVTeXN0ZW1V
UkwoRE9NU3RyaW5nIHVybCwgRW50cnlDYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2ssIG9wdGlvbmFs
IEVycm9yQ2FsbGJhY2sgZXJyb3JDYWxsYmFjayk7Ci0gICAgW1JhaXNlc0V4Y2VwdGlvbl0gRW50
cnlTeW5jIHdlYmtpdFJlc29sdmVMb2NhbEZpbGVTeXN0ZW1TeW5jVVJMKERPTVN0cmluZyB1cmwp
OwotCi0gICAgYXR0cmlidXRlIEZpbGVFcnJvckNvbnN0cnVjdG9yIEZpbGVFcnJvcjsKLSAgICBh
dHRyaWJ1dGUgRmlsZUV4Y2VwdGlvbkNvbnN0cnVjdG9yIEZpbGVFeGNlcHRpb247Ci19OwotCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vQXN5bmNGaWxlV3JpdGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0FzeW5jRmls
ZVdyaXRlci5oCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zp
bGVzeXN0ZW0vQXN5bmNGaWxlV3JpdGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNjAgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
Ci0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpZm5kZWYgQXN5bmNGaWxlV3JpdGVyX2gKLSNkZWZpbmUgQXN5bmNGaWxlV3JpdGVyX2gKLQot
I2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0j
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
Y2xhc3MgQmxvYjsKLQotY2xhc3MgQXN5bmNGaWxlV3JpdGVyIHsKLXB1YmxpYzoKLSAgICB2aXJ0
dWFsIH5Bc3luY0ZpbGVXcml0ZXIoKSB7IH0KLQotICAgIHZpcnR1YWwgdm9pZCB3cml0ZShsb25n
IGxvbmcgcG9zaXRpb24sIEJsb2IqIGRhdGEpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdHJ1bmNh
dGUobG9uZyBsb25nIGxlbmd0aCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBhYm9ydCgpID0gMDsK
LSAgICB2aXJ0dWFsIGJvb2wgd2FpdEZvck9wZXJhdGlvblRvQ29tcGxldGUoKSAvLyBOZWVkZWQg
Zm9yIEZpbGVXcml0ZXJTeW5jIG9ubHkuCi0gICAgewotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UKLQotI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RF
TSkKLQotI2VuZGlmIC8vIEFzeW5jRmlsZVdyaXRlcl9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZpbGVzeXN0ZW0vQXN5bmNGaWxlV3JpdGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0FzeW5jRmlsZVdyaXRlckNsaWVudC5o
CShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0v
QXN5bmNGaWxlV3JpdGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNTMgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0g
KiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQot
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
Zm5kZWYgQXN5bmNGaWxlV3JpdGVyQ2xpZW50X2gKLSNkZWZpbmUgQXN5bmNGaWxlV3JpdGVyQ2xp
ZW50X2gKLQotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2luY2x1ZGUgIkZpbGVFcnJvci5o
IgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEFzeW5jRmlsZVdyaXRlckNsaWVudCB7
Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+QXN5bmNGaWxlV3JpdGVyQ2xpZW50KCkgeyB9Ci0KLSAg
ICB2aXJ0dWFsIHZvaWQgZGlkV3JpdGUobG9uZyBsb25nIGJ5dGVzLCBib29sIGNvbXBsZXRlKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFRydW5jYXRlKCkgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBkaWRGYWlsKEZpbGVFcnJvcjo6RXJyb3JDb2RlKSA9IDA7Ci19OwotCi19IC8vIG5hbWVzcGFj
ZQotCi0jZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jZW5kaWYgLy8gQXN5bmNGaWxl
V3JpdGVyQ2xpZW50X2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9E
T01GaWxlUGF0aC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxl
c3lzdGVtL0RPTUZpbGVQYXRoLmNwcAkocmV2aXNpb24gMTU2NjkxKQorKysgU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVQYXRoLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MSwxNTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICog
bWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJET01GaWxlUGF0aC5o
IgotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgot
I2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1j
b25zdCBjaGFyIERPTUZpbGVQYXRoOjpzZXBhcmF0b3IgPSAnLyc7Ci1jb25zdCBjaGFyIERPTUZp
bGVQYXRoOjpyb290W10gPSAiLyI7Ci0KLVN0cmluZyBET01GaWxlUGF0aDo6YXBwZW5kKGNvbnN0
IFN0cmluZyYgYmFzZSwgY29uc3QgU3RyaW5nJiBjb21wb25lbnRzKQotewotICAgIHJldHVybiBl
bnN1cmVEaXJlY3RvcnlQYXRoKGJhc2UpICsgY29tcG9uZW50czsKLX0KLQotU3RyaW5nIERPTUZp
bGVQYXRoOjplbnN1cmVEaXJlY3RvcnlQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICBp
ZiAoIURPTUZpbGVQYXRoOjplbmRzV2l0aFNlcGFyYXRvcihwYXRoKSkgewotICAgICAgICBTdHJp
bmcgbmV3UGF0aCA9IHBhdGg7Ci0gICAgICAgIG5ld1BhdGguYXBwZW5kKERPTUZpbGVQYXRoOjpz
ZXBhcmF0b3IpOwotICAgICAgICByZXR1cm4gbmV3UGF0aDsKLSAgICB9Ci0gICAgcmV0dXJuIHBh
dGg7Ci19Ci0KLVN0cmluZyBET01GaWxlUGF0aDo6Z2V0TmFtZShjb25zdCBTdHJpbmcmIHBhdGgp
Ci17Ci0gICAgaW50IGluZGV4ID0gcGF0aC5yZXZlcnNlRmluZChET01GaWxlUGF0aDo6c2VwYXJh
dG9yKTsKLSAgICBpZiAoaW5kZXggIT0gLTEpCi0gICAgICAgIHJldHVybiBwYXRoLnN1YnN0cmlu
ZyhpbmRleCArIDEpOwotICAgIHJldHVybiBwYXRoOwotfQotCi1TdHJpbmcgRE9NRmlsZVBhdGg6
OmdldERpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgaW50IGluZGV4ID0gcGF0
aC5yZXZlcnNlRmluZChET01GaWxlUGF0aDo6c2VwYXJhdG9yKTsKLSAgICBpZiAoIWluZGV4KQot
ICAgICAgICByZXR1cm4gRE9NRmlsZVBhdGg6OnJvb3Q7Ci0gICAgaWYgKGluZGV4ICE9IC0xKQot
ICAgICAgICByZXR1cm4gcGF0aC5zdWJzdHJpbmcoMCwgaW5kZXgpOwotICAgIHJldHVybiAiLiI7
Ci19Ci0KLWJvb2wgRE9NRmlsZVBhdGg6OmlzUGFyZW50T2YoY29uc3QgU3RyaW5nJiBwYXJlbnQs
IGNvbnN0IFN0cmluZyYgbWF5QmVDaGlsZCkKLXsKLSAgICBBU1NFUlQoRE9NRmlsZVBhdGg6Omlz
QWJzb2x1dGUocGFyZW50KSk7Ci0gICAgQVNTRVJUKERPTUZpbGVQYXRoOjppc0Fic29sdXRlKG1h
eUJlQ2hpbGQpKTsKLSAgICBpZiAocGFyZW50ID09IERPTUZpbGVQYXRoOjpyb290ICYmIG1heUJl
Q2hpbGQgIT0gRE9NRmlsZVBhdGg6OnJvb3QpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGlm
IChwYXJlbnQubGVuZ3RoKCkgPj0gbWF5QmVDaGlsZC5sZW5ndGgoKSB8fCAhbWF5QmVDaGlsZC5z
dGFydHNXaXRoKHBhcmVudCwgZmFsc2UpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYg
KG1heUJlQ2hpbGRbcGFyZW50Lmxlbmd0aCgpXSAhPSBET01GaWxlUGF0aDo6c2VwYXJhdG9yKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLVN0cmluZyBET01G
aWxlUGF0aDo6cmVtb3ZlRXh0cmFQYXJlbnRSZWZlcmVuY2VzKGNvbnN0IFN0cmluZyYgcGF0aCkK
LXsKLSAgICBBU1NFUlQoRE9NRmlsZVBhdGg6OmlzQWJzb2x1dGUocGF0aCkpOwotICAgIFZlY3Rv
cjxTdHJpbmc+IGNvbXBvbmVudHM7Ci0gICAgVmVjdG9yPFN0cmluZz4gY2Fub25pY2FsaXplZDsK
LSAgICBwYXRoLnNwbGl0KERPTUZpbGVQYXRoOjpzZXBhcmF0b3IsIGNvbXBvbmVudHMpOwotICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY29tcG9uZW50cy5zaXplKCk7ICsraSkgewotICAgICAg
ICBpZiAoY29tcG9uZW50c1tpXSA9PSAiLiIpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgaWYgKGNvbXBvbmVudHNbaV0gPT0gIi4uIikgewotICAgICAgICAgICAgaWYgKGNhbm9uaWNh
bGl6ZWQuc2l6ZSgpID4gMCkKLSAgICAgICAgICAgICAgICBjYW5vbmljYWxpemVkLnJlbW92ZUxh
c3QoKTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0gICAgICAgIGNhbm9uaWNh
bGl6ZWQuYXBwZW5kKGNvbXBvbmVudHNbaV0pOwotICAgIH0KLSAgICBpZiAoY2Fub25pY2FsaXpl
ZC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBET01GaWxlUGF0aDo6cm9vdDsKLSAgICBTdHJp
bmcgcmVzdWx0OwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2Fub25pY2FsaXplZC5zaXpl
KCk7ICsraSkgewotICAgICAgICByZXN1bHQuYXBwZW5kKERPTUZpbGVQYXRoOjpzZXBhcmF0b3Ip
OwotICAgICAgICByZXN1bHQuYXBwZW5kKGNhbm9uaWNhbGl6ZWRbaV0pOwotICAgIH0KLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotCi1ib29sIERPTUZpbGVQYXRoOjppc1ZhbGlkUGF0aChjb25zdCBT
dHJpbmcmIHBhdGgpCi17Ci0gICAgaWYgKHBhdGguaXNFbXB0eSgpIHx8IHBhdGggPT0gRE9NRmls
ZVBhdGg6OnJvb3QpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgLy8gRW1iZWRkZWQgTlVM
cyBhcmUgbm90IGFsbG93ZWQuCi0gICAgaWYgKHBhdGguZmluZChzdGF0aWNfY2FzdDxVQ2hhcj4o
MCkpICE9IFdURjo6bm90Rm91bmQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIFdo
aWxlIG5vdCBbeWV0XSByZXN0cmljdGVkIGJ5IHRoZSBzcGVjLCAnXFwnIGNvbXBsaWNhdGVzIGlt
cGxlbWVudGF0aW9uIGZvciBDaHJvbWl1bS4KLSAgICBpZiAocGF0aC5maW5kKCdcXCcpICE9IFdU
Rjo6bm90Rm91bmQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIFRoaXMgbWV0aG9k
IGlzIG9ubHkgY2FsbGVkIG9uIGZ1bGx5LWV2YWx1YXRlZCBhYnNvbHV0ZSBwYXRocy4gQW55IHNp
Z24gb2YgIi4uIiBvciAiLiIgaXMgbGlrZWx5IGFuIGF0dGVtcHQgdG8gYnJlYWsgb3V0IG9mIHRo
ZSBzYW5kYm94LgotICAgIFZlY3RvcjxTdHJpbmc+IGNvbXBvbmVudHM7Ci0gICAgcGF0aC5zcGxp
dChET01GaWxlUGF0aDo6c2VwYXJhdG9yLCBjb21wb25lbnRzKTsKLSAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGNvbXBvbmVudHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgaWYgKGNvbXBvbmVu
dHNbaV0gPT0gIi4iKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBpZiAoY29t
cG9uZW50c1tpXSA9PSAiLi4iKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAg
ICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBET01GaWxlUGF0aDo6aXNWYWxpZE5hbWUoY29uc3Qg
U3RyaW5nJiBuYW1lKQotewotICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgLy8gJy8nIGlzIG5vdCBhbGxvd2VkIGluIG5hbWUuCi0gICAgaWYgKG5hbWUu
Y29udGFpbnMoJy8nKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBpc1ZhbGlk
UGF0aChuYW1lKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5B
QkxFKEZJTEVfU1lTVEVNKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVt
L0RPTUZpbGVQYXRoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxl
c3lzdGVtL0RPTUZpbGVQYXRoLmgJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlUGF0aC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDkw
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoK
LSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgot
ICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaWZuZGVmIERPTUZpbGVQYXRoX2gKLSNkZWZpbmUgRE9NRmlsZVBhdGhfaAotCi0j
aWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLS8vIERPTUZpbGVTeXN0ZW0gcGF0aCB1dGlsaXRp
ZXMuIEFsbCBtZXRob2RzIGluIHRoaXMgY2xhc3MgYXJlIHN0YXRpYy4KLWNsYXNzIERPTUZpbGVQ
YXRoIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgY29uc3QgY2hhciBzZXBhcmF0b3I7Ci0gICAgc3Rh
dGljIGNvbnN0IGNoYXIgcm9vdFtdOwotCi0gICAgLy8gUmV0dXJucyB0aGUgbmFtZSBwYXJ0IGZy
b20gdGhlIGdpdmVuIHBhdGguCi0gICAgc3RhdGljIFN0cmluZyBnZXROYW1lKGNvbnN0IFN0cmlu
ZyYgcGF0aCk7Ci0KLSAgICAvLyBSZXR1cm5zIHRoZSBwYXJlbnQgZGlyZWN0b3J5IHBhdGggb2Yg
dGhlIGdpdmVuIHBhdGguCi0gICAgc3RhdGljIFN0cmluZyBnZXREaXJlY3RvcnkoY29uc3QgU3Ry
aW5nJiBwYXRoKTsKLQotICAgIC8vIENoZWNrcyBpZiBhIGdpdmVuIHBhdGggaXMgYSBwYXJlbnQg
b2YgbWF5QmVDaGlsZC4gVGhpcyBtZXRob2QgYXNzdW1lcyBnaXZlbiBwYXRocyBhcmUgYWJzb2x1
dGUgYW5kIGRvIG5vdCBoYXZlIGV4dHJhIHJlZmVyZW5jZXMgdG8gYSBwYXJlbnQgKGkuZS4gIi4u
LyIpLgotICAgIHN0YXRpYyBib29sIGlzUGFyZW50T2YoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25z
dCBTdHJpbmcmIG1heUJlQ2hpbGQpOwotCi0gICAgLy8gQXBwZW5kcyB0aGUgc2VwYXJhdG9yIGF0
IHRoZSBlbmQgb2YgdGhlIHBhdGggaWYgaXQncyBub3QgdGhlcmUgYWxyZWFkeS4KLSAgICBzdGF0
aWMgU3RyaW5nIGVuc3VyZURpcmVjdG9yeVBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKTsKLQotICAg
IC8vIFJldHVybnMgYSBuZXcgcGF0aCBieSBhcHBlbmRpbmcgYSBzZXBhcmF0b3IgYW5kIHRoZSBz
dXBwbGllZCBwYXRoIGNvbXBvbmVudCB0byB0aGUgcGF0aC4KLSAgICBzdGF0aWMgU3RyaW5nIGFw
cGVuZChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY29tcG9uZW50KTsKLQotICAg
IHN0YXRpYyBib29sIGlzQWJzb2x1dGUoY29uc3QgU3RyaW5nJiBwYXRoKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIHBhdGguc3RhcnRzV2l0aChET01GaWxlUGF0aDo6cm9vdCk7Ci0gICAgfQotCi0g
ICAgc3RhdGljIGJvb2wgZW5kc1dpdGhTZXBhcmF0b3IoY29uc3QgU3RyaW5nJiBwYXRoKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIHBhdGhbcGF0aC5sZW5ndGgoKSAtIDFdID09IERPTUZpbGVQYXRo
OjpzZXBhcmF0b3I7Ci0gICAgfQotCi0gICAgLy8gRXZhbHVhdGVzIGFsbCAiLi4vIiBhbmQgIi4v
IiBzZWdtZW50cy4gTm90ZSB0aGF0ICIvLi4vIiBleHBhbmRzIHRvICIvIiwgc28geW91IGNhbid0
IGV2ZXIgcmVmZXIgdG8gYW55dGhpbmcgYWJvdmUgdGhlIHJvb3QgZGlyZWN0b3J5LgotICAgIHN0
YXRpYyBTdHJpbmcgcmVtb3ZlRXh0cmFQYXJlbnRSZWZlcmVuY2VzKGNvbnN0IFN0cmluZyYgcGF0
aCk7Ci0KLSAgICAvLyBDaGVja3MgaWYgdGhlIGdpdmVuIHBhdGggZm9sbG93cyB0aGUgRmlsZVN5
c3RlbSBBUEkgbmFtaW5nIHJlc3RyaWN0aW9ucy4KLSAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkUGF0
aChjb25zdCBTdHJpbmcmIHBhdGgpOwotCi0gICAgLy8gQ2hlY2tzIGlmIHRoZSBnaXZlbiBuYW1l
IGZvbGxvd3MgdGhlIEZpbGVTeXN0ZW0gQVBJIG5hbWluZyByZXN0cmljdGlvbnMuCi0gICAgc3Rh
dGljIGJvb2wgaXNWYWxpZE5hbWUoY29uc3QgU3RyaW5nJiBuYW1lKTsKLQotcHJpdmF0ZToKLSAg
ICBET01GaWxlUGF0aCgpIHsgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5k
aWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jZW5kaWYgLy8gRE9NRmlsZVBhdGhfaApJbmRl
eDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW0uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lz
dGVtLmNwcAkocmV2aXNpb24gMTU2NjkxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxl
c3lzdGVtL0RPTUZpbGVTeXN0ZW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDIxMiArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
LSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
Ci0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkRPTUZpbGVTeXN0ZW0uaCIKLQotI2lmIEVO
QUJMRShGSUxFX1NZU1RFTSkKLQotI2luY2x1ZGUgIkFzeW5jRmlsZVN5c3RlbS5oIgotI2luY2x1
ZGUgIkRPTUZpbGVQYXRoLmgiCi0jaW5jbHVkZSAiRGlyZWN0b3J5RW50cnkuaCIKLSNpbmNsdWRl
ICJFcnJvckNhbGxiYWNrLmgiCi0jaW5jbHVkZSAiRmlsZS5oIgotI2luY2x1ZGUgIkZpbGVDYWxs
YmFjay5oIgotI2luY2x1ZGUgIkZpbGVFbnRyeS5oIgotI2luY2x1ZGUgIkZpbGVNZXRhZGF0YS5o
IgotI2luY2x1ZGUgIkZpbGVTeXN0ZW1DYWxsYmFja3MuaCIKLSNpbmNsdWRlICJGaWxlV3JpdGVy
LmgiCi0jaW5jbHVkZSAiRmlsZVdyaXRlckJhc2VDYWxsYmFjay5oIgotI2luY2x1ZGUgIkZpbGVX
cml0ZXJDYWxsYmFjay5oIgotI2luY2x1ZGUgIk1ldGFkYXRhQ2FsbGJhY2suaCIKLSNpbmNsdWRl
ICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIK
LSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRl
ci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLS8vIHN0YXRpYwotUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtPiBET01GaWxlU3lzdGVt
OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBu
YW1lLCBGaWxlU3lzdGVtVHlwZSB0eXBlLCBjb25zdCBVUkwmIHJvb3RVUkwsIFBhc3NPd25QdHI8
QXN5bmNGaWxlU3lzdGVtPiBhc3luY0ZpbGVTeXN0ZW0pCi17Ci0gICAgUmVmUHRyPERPTUZpbGVT
eXN0ZW0+IGZpbGVTeXN0ZW0oYWRvcHRSZWYobmV3IERPTUZpbGVTeXN0ZW0oY29udGV4dCwgbmFt
ZSwgdHlwZSwgcm9vdFVSTCwgYXN5bmNGaWxlU3lzdGVtKSkpOwotICAgIGZpbGVTeXN0ZW0tPnN1
c3BlbmRJZk5lZWRlZCgpOwotICAgIHJldHVybiBmaWxlU3lzdGVtLnJlbGVhc2UoKTsKLX0KLQot
UGFzc1JlZlB0cjxET01GaWxlU3lzdGVtPiBET01GaWxlU3lzdGVtOjpjcmVhdGVJc29sYXRlZEZp
bGVTeXN0ZW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBm
aWxlc3lzdGVtSWQpCi17Ci0gICAgaWYgKGZpbGVzeXN0ZW1JZC5pc0VtcHR5KCkpCi0gICAgICAg
IHJldHVybiAwOwotCi0gICAgU3RyaW5nQnVpbGRlciBmaWxlc3lzdGVtTmFtZTsKLSAgICBmaWxl
c3lzdGVtTmFtZS5hcHBlbmQoY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKS0+ZGF0YWJhc2VJZGVu
dGlmaWVyKCkpOwotICAgIGZpbGVzeXN0ZW1OYW1lLmFwcGVuZCgiOklzb2xhdGVkXyIpOwotICAg
IGZpbGVzeXN0ZW1OYW1lLmFwcGVuZChmaWxlc3lzdGVtSWQpOwotCi0gICAgLy8gVGhlIHJvb3RV
UkwgY3JlYXRlZCBoZXJlIGlzIGdvaW5nIHRvIGJlIGF0dGFjaGVkIHRvIGVhY2ggZmlsZXN5c3Rl
bSByZXF1ZXN0IGFuZAotICAgIC8vIGlzIHRvIGJlIHZhbGlkYXRlZCBlYWNoIHRpbWUgdGhlIHJl
cXVlc3QgaXMgYmVpbmcgaGFuZGxlZC4KLSAgICBTdHJpbmdCdWlsZGVyIHJvb3RVUkw7Ci0gICAg
cm9vdFVSTC5hcHBlbmQoImZpbGVzeXN0ZW06Iik7Ci0gICAgcm9vdFVSTC5hcHBlbmQoY29udGV4
dC0+c2VjdXJpdHlPcmlnaW4oKS0+dG9TdHJpbmcoKSk7Ci0gICAgcm9vdFVSTC5hcHBlbmQoIi8i
KTsKLSAgICByb290VVJMLmFwcGVuZChpc29sYXRlZFBhdGhQcmVmaXgpOwotICAgIHJvb3RVUkwu
YXBwZW5kKCIvIik7Ci0gICAgcm9vdFVSTC5hcHBlbmQoZmlsZXN5c3RlbUlkKTsKLSAgICByb290
VVJMLmFwcGVuZCgiLyIpOwotCi0gICAgcmV0dXJuIERPTUZpbGVTeXN0ZW06OmNyZWF0ZShjb250
ZXh0LCBmaWxlc3lzdGVtTmFtZS50b1N0cmluZygpLCBGaWxlU3lzdGVtVHlwZUlzb2xhdGVkLCBV
UkwoUGFyc2VkVVJMU3RyaW5nLCByb290VVJMLnRvU3RyaW5nKCkpLCBBc3luY0ZpbGVTeXN0ZW06
OmNyZWF0ZSgpKTsKLX0KLQotRE9NRmlsZVN5c3RlbTo6RE9NRmlsZVN5c3RlbShTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIEZpbGVTeXN0ZW1UeXBl
IHR5cGUsIGNvbnN0IFVSTCYgcm9vdFVSTCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+IGFz
eW5jRmlsZVN5c3RlbSkKLSAgICA6IERPTUZpbGVTeXN0ZW1CYXNlKGNvbnRleHQsIG5hbWUsIHR5
cGUsIHJvb3RVUkwsIGFzeW5jRmlsZVN5c3RlbSkKLSAgICAsIEFjdGl2ZURPTU9iamVjdChjb250
ZXh0KQotewotfQotCi1QYXNzUmVmUHRyPERpcmVjdG9yeUVudHJ5PiBET01GaWxlU3lzdGVtOjpy
b290KCkKLXsKLSAgICByZXR1cm4gRGlyZWN0b3J5RW50cnk6OmNyZWF0ZSh0aGlzLCBET01GaWxl
UGF0aDo6cm9vdCk7Ci19Ci0KLXZvaWQgRE9NRmlsZVN5c3RlbTo6c3RvcCgpCi17Ci0gICAgbV9h
c3luY0ZpbGVTeXN0ZW0tPnN0b3AoKTsKLX0KLQotYm9vbCBET01GaWxlU3lzdGVtOjpoYXNQZW5k
aW5nQWN0aXZpdHkoKSBjb25zdAotewotICAgIHJldHVybiBtX2FzeW5jRmlsZVN5c3RlbS0+aGFz
UGVuZGluZ0FjdGl2aXR5KCk7Ci19Ci0KLXZvaWQgRE9NRmlsZVN5c3RlbTo6Y29udGV4dERlc3Ry
b3llZCgpCi17Ci0gICAgbV9hc3luY0ZpbGVTeXN0ZW0tPnN0b3AoKTsKLSAgICBBY3RpdmVET01P
YmplY3Q6OmNvbnRleHREZXN0cm95ZWQoKTsKLX0KLQotbmFtZXNwYWNlIHsKLQotY2xhc3MgQ29u
dmVydFRvRmlsZVdyaXRlckNhbGxiYWNrIDogcHVibGljIEZpbGVXcml0ZXJCYXNlQ2FsbGJhY2sg
ewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPENvbnZlcnRUb0ZpbGVXcml0ZXJDYWxs
YmFjaz4gY3JlYXRlKFBhc3NSZWZQdHI8RmlsZVdyaXRlckNhbGxiYWNrPiBjYWxsYmFjaykKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ29udmVydFRvRmlsZVdyaXRlckNhbGxi
YWNrKGNhbGxiYWNrKSk7Ci0gICAgfQotCi0gICAgYm9vbCBoYW5kbGVFdmVudChGaWxlV3JpdGVy
QmFzZSogZmlsZVdyaXRlckJhc2UpCi0gICAgewotICAgICAgICByZXR1cm4gbV9jYWxsYmFjay0+
aGFuZGxlRXZlbnQoc3RhdGljX2Nhc3Q8RmlsZVdyaXRlcio+KGZpbGVXcml0ZXJCYXNlKSk7Ci0g
ICAgfQotcHJpdmF0ZToKLSAgICBDb252ZXJ0VG9GaWxlV3JpdGVyQ2FsbGJhY2soUGFzc1JlZlB0
cjxGaWxlV3JpdGVyQ2FsbGJhY2s+IGNhbGxiYWNrKQotICAgICAgICA6IG1fY2FsbGJhY2soY2Fs
bGJhY2spCi0gICAgewotICAgIH0KLSAgICBSZWZQdHI8RmlsZVdyaXRlckNhbGxiYWNrPiBtX2Nh
bGxiYWNrOwotfTsKLQotfQotCi12b2lkIERPTUZpbGVTeXN0ZW06OmNyZWF0ZVdyaXRlcihjb25z
dCBGaWxlRW50cnkqIGZpbGVFbnRyeSwgUGFzc1JlZlB0cjxGaWxlV3JpdGVyQ2FsbGJhY2s+IHN1
Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQot
ewotICAgIEFTU0VSVChmaWxlRW50cnkpOwotCi0gICAgUmVmUHRyPEZpbGVXcml0ZXI+IGZpbGVX
cml0ZXIgPSBGaWxlV3JpdGVyOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKLSAg
ICBSZWZQdHI8RmlsZVdyaXRlckJhc2VDYWxsYmFjaz4gY29udmVyc2lvbkNhbGxiYWNrID0gQ29u
dmVydFRvRmlsZVdyaXRlckNhbGxiYWNrOjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNrKTsKLSAgICBP
d25QdHI8RmlsZVdyaXRlckJhc2VDYWxsYmFja3M+IGNhbGxiYWNrcyA9IEZpbGVXcml0ZXJCYXNl
Q2FsbGJhY2tzOjpjcmVhdGUoZmlsZVdyaXRlciwgY29udmVyc2lvbkNhbGxiYWNrLCBlcnJvckNh
bGxiYWNrKTsKLSAgICBtX2FzeW5jRmlsZVN5c3RlbS0+Y3JlYXRlV3JpdGVyKGZpbGVXcml0ZXIu
Z2V0KCksIGNyZWF0ZUZpbGVTeXN0ZW1VUkwoZmlsZUVudHJ5KSwgY2FsbGJhY2tzLnJlbGVhc2Uo
KSk7Ci19Ci0KLW5hbWVzcGFjZSB7Ci0KLWNsYXNzIFNuYXBzaG90RmlsZUNhbGxiYWNrIDogcHVi
bGljIEZpbGVTeXN0ZW1DYWxsYmFja3NCYXNlIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093
blB0cjxTbmFwc2hvdEZpbGVDYWxsYmFjaz4gY3JlYXRlKFBhc3NSZWZQdHI8RE9NRmlsZVN5c3Rl
bT4gZmlsZXN5c3RlbSwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBVUkwmIHVybCwgUGFzc1Jl
ZlB0cjxGaWxlQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxi
YWNrPiBlcnJvckNhbGxiYWNrKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBT
bmFwc2hvdEZpbGVDYWxsYmFjayhmaWxlc3lzdGVtLCBuYW1lLCB1cmwsIHN1Y2Nlc3NDYWxsYmFj
aywgZXJyb3JDYWxsYmFjaykpOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVT
bmFwc2hvdEZpbGUoY29uc3QgRmlsZU1ldGFkYXRhJiBtZXRhZGF0YSwgUGFzc1JlZlB0cjxCbG9i
RGF0YUhhbmRsZT4gLyogc25hcHNob3QgKi8pCi0gICAgewotICAgICAgICBBU1NFUlQoIW1ldGFk
YXRhLnBsYXRmb3JtUGF0aC5pc0VtcHR5KCkpOwotICAgICAgICBpZiAoIW1fc3VjY2Vzc0NhbGxi
YWNrKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIC8vIFdlIGNhbid0IGRpcmVjdGx5
IHVzZSB0aGUgc25hcHNob3QgYmxvYiBkYXRhIGhhbmRsZSBiZWNhdXNlIHRoZSBjb250ZW50IHR5
cGUgb24gaXQgaGFzbid0IGJlZW4gc2V0LgotICAgICAgICAvLyBUaGUgfHNuYXBzaG90fCBwYXJh
bSBpcyBoZXJlIHRvIHByb3ZpZGUgYSBhIGNoYWluIG9mIGN1c3RvZHkgdGhydSB0aHJlYWQgYnJp
ZGdpbmcgdGhhdCBpcyBoZWxkIG9udG8gdW50aWwKLSAgICAgICAgLy8gKmFmdGVyKiB3ZSd2ZSBj
b2luZWQgYSBGaWxlIHdpdGggYSBuZXcgaGFuZGxlIHRoYXQgaGFzIHRoZSBjb3JyZWN0IHR5cGUg
c2V0IG9uIGl0LiBUaGlzIGFsbG93cyB0aGUKLSAgICAgICAgLy8gYmxvYiBzdG9yYWdlIHN5c3Rl
bSB0byB0cmFjayB3aGVuIGEgdGVtcCBmaWxlIGNhbiBhbmQgY2FuJ3QgYmUgc2FmZWx5IGRlbGV0
ZWQuCi0KLSAgICAgICAgLy8gRm9yIHJlZ3VsYXIgZmlsZXN5c3RlbSB0eXBlcyAodGVtcG9yYXJ5
IG9yIHBlcnNpc3RlbnQpLCB3ZSBzaG91bGQgbm90IGNhY2hlIGZpbGUgbWV0YWRhdGEgYXMgaXQg
Y291bGQgY2hhbmdlIEZpbGUgc2VtYW50aWNzLgotICAgICAgICAvLyBGb3Igb3RoZXIgZmlsZXN5
c3RlbSB0eXBlcyAod2hpY2ggY291bGQgYmUgcGxhdGZvcm0tc3BlY2lmaWMgb25lcyksIHRoZXJl
J3MgYSBjaGFuY2UgdGhhdCB0aGUgZmlsZXMgYXJlIG9uIHJlbW90ZSBmaWxlc3lzdGVtLiBJZiB0
aGUgcG9ydCBoYXMgcmV0dXJuZWQgbWV0YWRhdGEganVzdCBwYXNzIGl0IHRvIEZpbGUgY29uc3Ry
dWN0b3IgKHNvIHdlIG1heSBjYWNoZSB0aGUgbWV0YWRhdGEpLgotICAgICAgICAvLyBGSVhNRTog
V2Ugc2hvdWxkIHVzZSB0aGUgc25hcHNob3QgbWV0YWRhdGEgZm9yIGFsbCBmaWxlcy4KLSAgICAg
ICAgLy8gaHR0cHM6Ly93d3cudzMub3JnL0J1Z3MvUHVibGljL3Nob3dfYnVnLmNnaT9pZD0xNzc0
NgotICAgICAgICBpZiAobV9maWxlc3lzdGVtLT50eXBlKCkgPT0gRmlsZVN5c3RlbVR5cGVUZW1w
b3JhcnkgfHwgbV9maWxlc3lzdGVtLT50eXBlKCkgPT0gRmlsZVN5c3RlbVR5cGVQZXJzaXN0ZW50
KSB7Ci0gICAgICAgICAgICBtX3N1Y2Nlc3NDYWxsYmFjay0+aGFuZGxlRXZlbnQoRmlsZTo6Y3Jl
YXRlV2l0aE5hbWUobWV0YWRhdGEucGxhdGZvcm1QYXRoLCBtX25hbWUpLmdldCgpKTsKLSAgICAg
ICAgfSBlbHNlIGlmICghbWV0YWRhdGEucGxhdGZvcm1QYXRoLmlzRW1wdHkoKSkgewotICAgICAg
ICAgICAgLy8gSWYgdGhlIHBsYXRmb3JtUGF0aCBpbiB0aGUgcmV0dXJuZWQgbWV0YWRhdGEgaXMg
Z2l2ZW4sIHdlIGNyZWF0ZSBhIEZpbGUgb2JqZWN0IGZvciB0aGUgcGF0aC4KLSAgICAgICAgICAg
IG1fc3VjY2Vzc0NhbGxiYWNrLT5oYW5kbGVFdmVudChGaWxlOjpjcmVhdGVGb3JGaWxlU3lzdGVt
RmlsZShtX25hbWUsIG1ldGFkYXRhKS5nZXQoKSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICAvLyBPdGhlcndpc2UgY3JlYXRlIGEgRmlsZSBmcm9tIHRoZSBGaWxlU3lzdGVtIFVSTC4K
LSAgICAgICAgICAgIG1fc3VjY2Vzc0NhbGxiYWNrLT5oYW5kbGVFdmVudChGaWxlOjpjcmVhdGVG
b3JGaWxlU3lzdGVtRmlsZShtX3VybCwgbWV0YWRhdGEpLmdldCgpKTsKLSAgICAgICAgfQotCi0g
ICAgICAgIG1fc3VjY2Vzc0NhbGxiYWNrLnJlbGVhc2UoKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0g
ICAgU25hcHNob3RGaWxlQ2FsbGJhY2soUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtPiBmaWxlc3lz
dGVtLCBjb25zdCBTdHJpbmcmIG5hbWUsICBjb25zdCBVUkwmIHVybCwgUGFzc1JlZlB0cjxGaWxl
Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJv
ckNhbGxiYWNrKQotICAgICAgICA6IEZpbGVTeXN0ZW1DYWxsYmFja3NCYXNlKGVycm9yQ2FsbGJh
Y2spCi0gICAgICAgICwgbV9maWxlc3lzdGVtKGZpbGVzeXN0ZW0pCi0gICAgICAgICwgbV9uYW1l
KG5hbWUpCi0gICAgICAgICwgbV91cmwodXJsKQotICAgICAgICAsIG1fc3VjY2Vzc0NhbGxiYWNr
KHN1Y2Nlc3NDYWxsYmFjaykKLSAgICB7Ci0gICAgfQotCi0gICAgUmVmUHRyPERPTUZpbGVTeXN0
ZW0+IG1fZmlsZXN5c3RlbTsKLSAgICBTdHJpbmcgbV9uYW1lOwotICAgIFVSTCBtX3VybDsKLSAg
ICBSZWZQdHI8RmlsZUNhbGxiYWNrPiBtX3N1Y2Nlc3NDYWxsYmFjazsKLX07Ci0KLX0gLy8gbmFt
ZXNwYWNlCi0KLXZvaWQgRE9NRmlsZVN5c3RlbTo6Y3JlYXRlRmlsZShjb25zdCBGaWxlRW50cnkq
IGZpbGVFbnRyeSwgUGFzc1JlZlB0cjxGaWxlQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFz
c1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQotewotICAgIFVSTCBmaWxlU3lz
dGVtVVJMID0gY3JlYXRlRmlsZVN5c3RlbVVSTChmaWxlRW50cnkpOwotICAgIG1fYXN5bmNGaWxl
U3lzdGVtLT5jcmVhdGVTbmFwc2hvdEZpbGVBbmRSZWFkTWV0YWRhdGEoZmlsZVN5c3RlbVVSTCwg
U25hcHNob3RGaWxlQ2FsbGJhY2s6OmNyZWF0ZSh0aGlzLCBmaWxlRW50cnktPm5hbWUoKSwgZmls
ZVN5c3RlbVVSTCwgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKSk7Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW0u
aAkocmV2aXNpb24gMTU2NjkxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVt
L0RPTUZpbGVTeXN0ZW0uaAkod29ya2luZyBjb3B5KQpAQCAtMSwxMTQgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0
cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0g
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYg
RE9NRmlsZVN5c3RlbV9oCi0jZGVmaW5lIERPTUZpbGVTeXN0ZW1faAotCi0jaWYgRU5BQkxFKEZJ
TEVfU1lTVEVNKQotCi0jaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCi0jaW5jbHVkZSAiRE9N
RmlsZVN5c3RlbUJhc2UuaCIKLSNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgRGlyZWN0b3J5RW50cnk7Ci1jbGFzcyBGaWxl
OwotY2xhc3MgRmlsZUNhbGxiYWNrOwotY2xhc3MgRmlsZUVudHJ5OwotY2xhc3MgRmlsZVdyaXRl
ckNhbGxiYWNrOwotCi1jbGFzcyBET01GaWxlU3lzdGVtIDogcHVibGljIERPTUZpbGVTeXN0ZW1C
YXNlLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxET01GaWxlU3lzdGVtPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0
IFN0cmluZyYgbmFtZSwgRmlsZVN5c3RlbVR5cGUsIGNvbnN0IFVSTCYgcm9vdFVSTCwgUGFzc093
blB0cjxBc3luY0ZpbGVTeXN0ZW0+KTsKLQotICAgIC8vIENyZWF0ZXMgYSBuZXcgaXNvbGF0ZWQg
ZmlsZSBzeXN0ZW0gZm9yIHRoZSBnaXZlbiBmaWxlc3lzdGVtSWQuCi0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8RE9NRmlsZVN5c3RlbT4gY3JlYXRlSXNvbGF0ZWRGaWxlU3lzdGVtKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIGZpbGVzeXN0ZW1JZCk7Ci0KLSAgICBQYXNzUmVm
UHRyPERpcmVjdG9yeUVudHJ5PiByb290KCk7Ci0KLSAgICAvLyBBY3RpdmVET01PYmplY3QgbWV0
aG9kcy4KLSAgICB2aXJ0dWFsIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QgT1ZFUlJJ
REU7Ci0KLSAgICB2b2lkIGNyZWF0ZVdyaXRlcihjb25zdCBGaWxlRW50cnkqLCBQYXNzUmVmUHRy
PEZpbGVXcml0ZXJDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4pOwotICAgIHZv
aWQgY3JlYXRlRmlsZShjb25zdCBGaWxlRW50cnkqLCBQYXNzUmVmUHRyPEZpbGVDYWxsYmFjaz4s
IFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4pOwotCi0gICAgLy8gU2NoZWR1bGUgYSBjYWxsYmFj
ay4gVGhpcyBzaG91bGQgbm90IGNyb3NzIHRocmVhZHMgKHNob3VsZCBiZSBjYWxsZWQgb24gdGhl
IHNhbWUgY29udGV4dCB0aHJlYWQpLgotICAgIC8vIEZJWE1FOiBtb3ZlIHRoaXMgdG8gYSBtb3Jl
IGdlbmVyaWMgcGxhY2UuCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIENCLCB0eXBlbmFtZSBDQkFy
Zz4KLSAgICBzdGF0aWMgdm9pZCBzY2hlZHVsZUNhbGxiYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBQYXNzUmVmUHRyPENCPiwgUGFzc1JlZlB0cjxDQkFyZz4pOwotCi0gICAgdGVtcGxhdGUg
PHR5cGVuYW1lIENCLCB0eXBlbmFtZSBDQkFyZz4KLSAgICB2b2lkIHNjaGVkdWxlQ2FsbGJhY2so
UGFzc1JlZlB0cjxDQj4gY2FsbGJhY2ssIFBhc3NSZWZQdHI8Q0JBcmc+IGNhbGxiYWNrQXJnKQot
ICAgIHsKLSAgICAgICAgc2NoZWR1bGVDYWxsYmFjayhzY3JpcHRFeGVjdXRpb25Db250ZXh0KCks
IGNhbGxiYWNrLCBjYWxsYmFja0FyZyk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIERPTUZpbGVT
eXN0ZW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgbmFtZSwgRmlsZVN5
c3RlbVR5cGUsIGNvbnN0IFVSTCYgcm9vdFVSTCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+
KTsKLQotICAgIC8vIEFjdGl2ZURPTU9iamVjdCBtZXRob2RzLgotICAgIHZpcnR1YWwgdm9pZCBz
dG9wKCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGNvbnRleHREZXN0cm95ZWQoKSBPVkVS
UklERTsKLQotICAgIC8vIEEgaGVscGVyIHRlbXBsYXRlIHRvIHNjaGVkdWxlIGEgY2FsbGJhY2sg
dGFzay4KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ0IsIHR5cGVuYW1lIENCQXJnPgotICAgIGNs
YXNzIERpc3BhdGNoQ2FsbGJhY2tUYXNrIDogcHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OlRhc2sgewotICAgIHB1YmxpYzoKLSAgICAgICAgRGlzcGF0Y2hDYWxsYmFja1Rhc2soUGFzc1Jl
ZlB0cjxDQj4gY2FsbGJhY2ssIFBhc3NSZWZQdHI8Q0JBcmc+IGFyZykKLSAgICAgICAgICAgIDog
bV9jYWxsYmFjayhjYWxsYmFjaykKLSAgICAgICAgICAgICwgbV9jYWxsYmFja0FyZyhhcmcpCi0g
ICAgICAgIHsKLSAgICAgICAgfQotCi0gICAgICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzayhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KikKLSAgICAgICAgewotICAgICAgICAgICAgbV9jYWxsYmFj
ay0+aGFuZGxlRXZlbnQobV9jYWxsYmFja0FyZy5nZXQoKSk7Ci0gICAgICAgIH0KLQotICAgIHBy
aXZhdGU6Ci0gICAgICAgIFJlZlB0cjxDQj4gbV9jYWxsYmFjazsKLSAgICAgICAgUmVmUHRyPENC
QXJnPiBtX2NhbGxiYWNrQXJnOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ0Is
IHR5cGVuYW1lIENCQXJnPgotdm9pZCBET01GaWxlU3lzdGVtOjpzY2hlZHVsZUNhbGxiYWNrKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFBhc3NSZWZQdHI8
Q0I+IGNhbGxiYWNrLCBQYXNzUmVmUHRyPENCQXJnPiBhcmcpCi17Ci0gICAgQVNTRVJUKHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQtPmlzQ29udGV4dFRocmVhZCgpKTsKLSAgICBpZiAoY2FsbGJhY2sp
Ci0gICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKGFkb3B0UHRyKG5ldyBE
aXNwYXRjaENhbGxiYWNrVGFzazxDQiwgQ0JBcmc+KGNhbGxiYWNrLCBhcmcpKSk7Ci19Ci0KLX0g
Ly8gbmFtZXNwYWNlCi0KLSNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNlbmRpZiAv
LyBET01GaWxlU3lzdGVtX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3Rl
bS9ET01GaWxlU3lzdGVtLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3RlbS5pZGwJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtLmlkbAkod29ya2luZyBj
b3B5KQpAQCAtMSw0MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0g
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLVsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKLSAgICBDb25kaXRp
b25hbD1GSUxFX1NZU1RFTSwKLSAgICBBY3RpdmVET01PYmplY3QsCi0gICAgSlNOb1N0YXRpY1Rh
YmxlcwotXSBpbnRlcmZhY2UgRE9NRmlsZVN5c3RlbSB7Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRl
IERPTVN0cmluZyBuYW1lOwotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBEaXJlY3RvcnlFbnRyeSBy
b290OwotfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxl
U3lzdGVtQmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxl
c3lzdGVtL0RPTUZpbGVTeXN0ZW1CYXNlLmNwcAkocmV2aXNpb24gMTU2NjkxKQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW1CYXNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMSwyNjIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0g
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJE
T01GaWxlU3lzdGVtQmFzZS5oIgotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jaW5jbHVk
ZSAiRE9NRmlsZVBhdGguaCIKLSNpbmNsdWRlICJEaXJlY3RvcnlFbnRyeS5oIgotI2luY2x1ZGUg
IkRpcmVjdG9yeVJlYWRlckJhc2UuaCIKLSNpbmNsdWRlICJFbnRyaWVzQ2FsbGJhY2suaCIKLSNp
bmNsdWRlICJFbnRyeUFycmF5LmgiCi0jaW5jbHVkZSAiRW50cnlCYXNlLmgiCi0jaW5jbHVkZSAi
RW50cnlDYWxsYmFjay5oIgotI2luY2x1ZGUgIkVycm9yQ2FsbGJhY2suaCIKLSNpbmNsdWRlICJG
aWxlRXJyb3IuaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtQ2FsbGJhY2tzLmgiCi0jaW5jbHVkZSAi
TWV0YWRhdGFDYWxsYmFjay5oIgotI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIK
LSNpbmNsdWRlICJWb2lkQ2FsbGJhY2suaCIKLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotY29uc3QgY2hhciBET01GaWxlU3lzdGVtQmFzZTo6cGVyc2lz
dGVudFBhdGhQcmVmaXhbXSA9ICJwZXJzaXN0ZW50IjsKLWNvbnN0IHNpemVfdCBET01GaWxlU3lz
dGVtQmFzZTo6cGVyc2lzdGVudFBhdGhQcmVmaXhMZW5ndGggPSBzaXplb2YoRE9NRmlsZVN5c3Rl
bUJhc2U6OnBlcnNpc3RlbnRQYXRoUHJlZml4KSAtIDE7Ci1jb25zdCBjaGFyIERPTUZpbGVTeXN0
ZW1CYXNlOjp0ZW1wb3JhcnlQYXRoUHJlZml4W10gPSAidGVtcG9yYXJ5IjsKLWNvbnN0IHNpemVf
dCBET01GaWxlU3lzdGVtQmFzZTo6dGVtcG9yYXJ5UGF0aFByZWZpeExlbmd0aCA9IHNpemVvZihE
T01GaWxlU3lzdGVtQmFzZTo6dGVtcG9yYXJ5UGF0aFByZWZpeCkgLSAxOwotY29uc3QgY2hhciBE
T01GaWxlU3lzdGVtQmFzZTo6aXNvbGF0ZWRQYXRoUHJlZml4W10gPSAiaXNvbGF0ZWQiOwotY29u
c3Qgc2l6ZV90IERPTUZpbGVTeXN0ZW1CYXNlOjppc29sYXRlZFBhdGhQcmVmaXhMZW5ndGggPSBz
aXplb2YoRE9NRmlsZVN5c3RlbUJhc2U6Omlzb2xhdGVkUGF0aFByZWZpeCkgLSAxOwotCi1ET01G
aWxlU3lzdGVtQmFzZTo6RE9NRmlsZVN5c3RlbUJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBGaWxlU3lzdGVtVHlwZSB0eXBlLCBjb25zdCBV
UkwmIHJvb3RVUkwsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtPiBhc3luY0ZpbGVTeXN0ZW0p
Ci0gICAgOiBtX2NvbnRleHQoY29udGV4dCkKLSAgICAsIG1fbmFtZShuYW1lKQotICAgICwgbV90
eXBlKHR5cGUpCi0gICAgLCBtX2ZpbGVzeXN0ZW1Sb290VVJMKHJvb3RVUkwpCi0gICAgLCBtX2Ns
b25hYmxlKGZhbHNlKQotICAgICwgbV9hc3luY0ZpbGVTeXN0ZW0oYXN5bmNGaWxlU3lzdGVtKQot
ewotfQotCi1ET01GaWxlU3lzdGVtQmFzZTo6fkRPTUZpbGVTeXN0ZW1CYXNlKCkKLXsKLX0KLQot
I2lmICFQTEFURk9STShCTEFDS0JFUlJZKQotLy8gc3RhdGljCi1ib29sIERPTUZpbGVTeXN0ZW1C
YXNlOjppc1ZhbGlkVHlwZShGaWxlU3lzdGVtVHlwZSB0eXBlKQotewotICAgIHJldHVybiB0eXBl
ID09IEZpbGVTeXN0ZW1UeXBlVGVtcG9yYXJ5IHx8IHR5cGUgPT0gRmlsZVN5c3RlbVR5cGVQZXJz
aXN0ZW50OwotfQotCi0vLyBzdGF0aWMKLWJvb2wgRE9NRmlsZVN5c3RlbUJhc2U6OmNyYWNrRmls
ZVN5c3RlbVVSTChjb25zdCBVUkwmIHVybCwgRmlsZVN5c3RlbVR5cGUmIHR5cGUsIFN0cmluZyYg
ZmlsZVBhdGgpCi17Ci0gICAgaWYgKCF1cmwucHJvdG9jb2xJcygiZmlsZXN5c3RlbSIpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoIXVybC5pbm5lclVSTCgpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICBTdHJpbmcgdHlwZVN0cmluZyA9IHVybC5pbm5lclVSTCgpLT5w
YXRoKCkuc3Vic3RyaW5nKDEpOwotICAgIGlmICh0eXBlU3RyaW5nID09IHRlbXBvcmFyeVBhdGhQ
cmVmaXgpCi0gICAgICAgIHR5cGUgPSBGaWxlU3lzdGVtVHlwZVRlbXBvcmFyeTsKLSAgICBlbHNl
IGlmICh0eXBlU3RyaW5nID09IHBlcnNpc3RlbnRQYXRoUHJlZml4KQotICAgICAgICB0eXBlID0g
RmlsZVN5c3RlbVR5cGVQZXJzaXN0ZW50OwotICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgZmlsZVBhdGggPSBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXModXJsLnBhdGgoKSk7
Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgRE9NRmlsZVN5c3RlbUJhc2U6OnN1cHBvcnRz
VG9VUkwoKSBjb25zdAotewotICAgIEFTU0VSVChpc1ZhbGlkVHlwZShtX3R5cGUpKTsKLSAgICBy
ZXR1cm4gdHJ1ZTsKLX0KLQotVVJMIERPTUZpbGVTeXN0ZW1CYXNlOjpjcmVhdGVGaWxlU3lzdGVt
VVJMKGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKERPTUZpbGVQ
YXRoOjppc0Fic29sdXRlKGZ1bGxQYXRoKSk7Ci0gICAgVVJMIHVybCA9IG1fZmlsZXN5c3RlbVJv
b3RVUkw7Ci0gICAgLy8gUmVtb3ZlIHRoZSBleHRyYSBsZWFkaW5nIHNsYXNoLgotICAgIHVybC5z
ZXRQYXRoKHVybC5wYXRoKCkgKyBlbmNvZGVXaXRoVVJMRXNjYXBlU2VxdWVuY2VzKGZ1bGxQYXRo
LnN1YnN0cmluZygxKSkpOwotICAgIHJldHVybiB1cmw7Ci19Ci0jZW5kaWYKLQotU2VjdXJpdHlP
cmlnaW4qIERPTUZpbGVTeXN0ZW1CYXNlOjpzZWN1cml0eU9yaWdpbigpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIG1fY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKTsKLX0KLQotVVJMIERPTUZpbGVTeXN0
ZW1CYXNlOjpjcmVhdGVGaWxlU3lzdGVtVVJMKGNvbnN0IEVudHJ5QmFzZSogZW50cnkpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIGNyZWF0ZUZpbGVTeXN0ZW1VUkwoZW50cnktPmZ1bGxQYXRoKCkpOwot
fQotCi1ib29sIERPTUZpbGVTeXN0ZW1CYXNlOjpnZXRNZXRhZGF0YShjb25zdCBFbnRyeUJhc2Uq
IGVudHJ5LCBQYXNzUmVmUHRyPE1ldGFkYXRhQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFz
c1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQotewotICAgIG1fYXN5bmNGaWxl
U3lzdGVtLT5yZWFkTWV0YWRhdGEoY3JlYXRlRmlsZVN5c3RlbVVSTChlbnRyeSksIE1ldGFkYXRh
Q2FsbGJhY2tzOjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKSk7Ci0gICAg
cmV0dXJuIHRydWU7Ci19Ci0KLXN0YXRpYyBib29sIHZlcmlmeUFuZEdldERlc3RpbmF0aW9uUGF0
aEZvckNvcHlPck1vdmUoY29uc3QgRW50cnlCYXNlKiBzb3VyY2UsIEVudHJ5QmFzZSogcGFyZW50
LCBjb25zdCBTdHJpbmcmIG5ld05hbWUsIFN0cmluZyYgZGVzdGluYXRpb25QYXRoKQotewotICAg
IEFTU0VSVChzb3VyY2UpOwotCi0gICAgaWYgKCFwYXJlbnQgfHwgIXBhcmVudC0+aXNEaXJlY3Rv
cnkoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKCFuZXdOYW1lLmlzRW1wdHko
KSAmJiAhRE9NRmlsZVBhdGg6OmlzVmFsaWROYW1lKG5ld05hbWUpKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICBjb25zdCBib29sIGlzU2FtZUZpbGVTeXN0ZW0gPSAoKnNvdXJjZS0+Zmls
ZXN5c3RlbSgpID09ICpwYXJlbnQtPmZpbGVzeXN0ZW0oKSk7Ci0KLSAgICAvLyBJdCBpcyBhbiBl
cnJvciB0byB0cnkgdG8gY29weSBvciBtb3ZlIGFuIGVudHJ5IGluc2lkZSBpdHNlbGYgYXQgYW55
IGRlcHRoIGlmIGl0IGlzIGEgZGlyZWN0b3J5LgotICAgIGlmIChzb3VyY2UtPmlzRGlyZWN0b3J5
KCkgJiYgaXNTYW1lRmlsZVN5c3RlbSAmJiBET01GaWxlUGF0aDo6aXNQYXJlbnRPZihzb3VyY2Ut
PmZ1bGxQYXRoKCksIHBhcmVudC0+ZnVsbFBhdGgoKSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgIC8vIEl0IGlzIGFuIGVycm9yIHRvIGNvcHkgb3IgbW92ZSBhbiBlbnRyeSBpbnRvIGl0
cyBwYXJlbnQgaWYgYSBuYW1lIGRpZmZlcmVudCBmcm9tIGl0cyBjdXJyZW50IG9uZSBpc24ndCBw
cm92aWRlZC4KLSAgICBpZiAoaXNTYW1lRmlsZVN5c3RlbSAmJiAobmV3TmFtZS5pc0VtcHR5KCkg
fHwgc291cmNlLT5uYW1lKCkgPT0gbmV3TmFtZSkgJiYgRE9NRmlsZVBhdGg6OmdldERpcmVjdG9y
eShzb3VyY2UtPmZ1bGxQYXRoKCkpID09IHBhcmVudC0+ZnVsbFBhdGgoKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgZGVzdGluYXRpb25QYXRoID0gcGFyZW50LT5mdWxsUGF0aCgpOwot
ICAgIGlmICghbmV3TmFtZS5pc0VtcHR5KCkpCi0gICAgICAgIGRlc3RpbmF0aW9uUGF0aCA9IERP
TUZpbGVQYXRoOjphcHBlbmQoZGVzdGluYXRpb25QYXRoLCBuZXdOYW1lKTsKLSAgICBlbHNlCi0g
ICAgICAgIGRlc3RpbmF0aW9uUGF0aCA9IERPTUZpbGVQYXRoOjphcHBlbmQoZGVzdGluYXRpb25Q
YXRoLCBzb3VyY2UtPm5hbWUoKSk7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotc3RhdGljIGJv
b2wgcGF0aFRvQWJzb2x1dGVQYXRoKEZpbGVTeXN0ZW1UeXBlIHR5cGUsIGNvbnN0IEVudHJ5QmFz
ZSogYmFzZSwgU3RyaW5nIHBhdGgsIFN0cmluZyYgYWJzb2x1dGVQYXRoKQotewotICAgIEFTU0VS
VChiYXNlKTsKLQotICAgIGlmICghRE9NRmlsZVBhdGg6OmlzQWJzb2x1dGUocGF0aCkpCi0gICAg
ICAgIHBhdGggPSBET01GaWxlUGF0aDo6YXBwZW5kKGJhc2UtPmZ1bGxQYXRoKCksIHBhdGgpOwot
ICAgIGFic29sdXRlUGF0aCA9IERPTUZpbGVQYXRoOjpyZW1vdmVFeHRyYVBhcmVudFJlZmVyZW5j
ZXMocGF0aCk7Ci0KLSAgICBpZiAoKHR5cGUgPT0gRmlsZVN5c3RlbVR5cGVUZW1wb3JhcnkgfHwg
dHlwZSA9PSBGaWxlU3lzdGVtVHlwZVBlcnNpc3RlbnQpICYmICFET01GaWxlUGF0aDo6aXNWYWxp
ZFBhdGgoYWJzb2x1dGVQYXRoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiB0
cnVlOwotfQotCi1ib29sIERPTUZpbGVTeXN0ZW1CYXNlOjptb3ZlKGNvbnN0IEVudHJ5QmFzZSog
c291cmNlLCBFbnRyeUJhc2UqIHBhcmVudCwgY29uc3QgU3RyaW5nJiBuZXdOYW1lLCBQYXNzUmVm
UHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxi
YWNrPiBlcnJvckNhbGxiYWNrKQotewotICAgIFN0cmluZyBkZXN0aW5hdGlvblBhdGg7Ci0gICAg
aWYgKCF2ZXJpZnlBbmRHZXREZXN0aW5hdGlvblBhdGhGb3JDb3B5T3JNb3ZlKHNvdXJjZSwgcGFy
ZW50LCBuZXdOYW1lLCBkZXN0aW5hdGlvblBhdGgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICBtX2FzeW5jRmlsZVN5c3RlbS0+bW92ZShjcmVhdGVGaWxlU3lzdGVtVVJMKHNvdXJjZSks
IHBhcmVudC0+ZmlsZXN5c3RlbSgpLT5jcmVhdGVGaWxlU3lzdGVtVVJMKGRlc3RpbmF0aW9uUGF0
aCksIEVudHJ5Q2FsbGJhY2tzOjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNr
LCBwYXJlbnQtPmZpbGVzeXN0ZW0oKSwgZGVzdGluYXRpb25QYXRoLCBzb3VyY2UtPmlzRGlyZWN0
b3J5KCkpKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBET01GaWxlU3lzdGVtQmFzZTo6
Y29weShjb25zdCBFbnRyeUJhc2UqIHNvdXJjZSwgRW50cnlCYXNlKiBwYXJlbnQsIGNvbnN0IFN0
cmluZyYgbmV3TmFtZSwgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ss
IFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKLXsKLSAgICBTdHJpbmcg
ZGVzdGluYXRpb25QYXRoOwotICAgIGlmICghdmVyaWZ5QW5kR2V0RGVzdGluYXRpb25QYXRoRm9y
Q29weU9yTW92ZShzb3VyY2UsIHBhcmVudCwgbmV3TmFtZSwgZGVzdGluYXRpb25QYXRoKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgbV9hc3luY0ZpbGVTeXN0ZW0tPmNvcHkoY3JlYXRl
RmlsZVN5c3RlbVVSTChzb3VyY2UpLCBwYXJlbnQtPmZpbGVzeXN0ZW0oKS0+Y3JlYXRlRmlsZVN5
c3RlbVVSTChkZXN0aW5hdGlvblBhdGgpLCBFbnRyeUNhbGxiYWNrczo6Y3JlYXRlKHN1Y2Nlc3ND
YWxsYmFjaywgZXJyb3JDYWxsYmFjaywgcGFyZW50LT5maWxlc3lzdGVtKCksIGRlc3RpbmF0aW9u
UGF0aCwgc291cmNlLT5pc0RpcmVjdG9yeSgpKSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJv
b2wgRE9NRmlsZVN5c3RlbUJhc2U6OnJlbW92ZShjb25zdCBFbnRyeUJhc2UqIGVudHJ5LCBQYXNz
UmVmUHRyPFZvaWRDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2Fs
bGJhY2s+IGVycm9yQ2FsbGJhY2spCi17Ci0gICAgQVNTRVJUKGVudHJ5KTsKLSAgICAvLyBXZSBk
b24ndCBhbGxvdyBjYWxsaW5nIHJlbW92ZSgpIG9uIHRoZSByb290IGRpcmVjdG9yeS4KLSAgICBp
ZiAoZW50cnktPmZ1bGxQYXRoKCkgPT0gU3RyaW5nKERPTUZpbGVQYXRoOjpyb290KSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5yZW1vdmUoY3JlYXRlRmls
ZVN5c3RlbVVSTChlbnRyeSksIFZvaWRDYWxsYmFja3M6OmNyZWF0ZShzdWNjZXNzQ2FsbGJhY2ss
IGVycm9yQ2FsbGJhY2spKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBET01GaWxlU3lz
dGVtQmFzZTo6cmVtb3ZlUmVjdXJzaXZlbHkoY29uc3QgRW50cnlCYXNlKiBlbnRyeSwgUGFzc1Jl
ZlB0cjxWb2lkQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxi
YWNrPiBlcnJvckNhbGxiYWNrKQotewotICAgIEFTU0VSVChlbnRyeSAmJiBlbnRyeS0+aXNEaXJl
Y3RvcnkoKSk7Ci0gICAgLy8gV2UgZG9uJ3QgYWxsb3cgY2FsbGluZyByZW1vdmUoKSBvbiB0aGUg
cm9vdCBkaXJlY3RvcnkuCi0gICAgaWYgKGVudHJ5LT5mdWxsUGF0aCgpID09IFN0cmluZyhET01G
aWxlUGF0aDo6cm9vdCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBtX2FzeW5jRmlsZVN5
c3RlbS0+cmVtb3ZlUmVjdXJzaXZlbHkoY3JlYXRlRmlsZVN5c3RlbVVSTChlbnRyeSksIFZvaWRD
YWxsYmFja3M6OmNyZWF0ZShzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spKTsKLSAgICBy
ZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBET01GaWxlU3lzdGVtQmFzZTo6Z2V0UGFyZW50KGNvbnN0
IEVudHJ5QmFzZSogZW50cnksIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxi
YWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCi17Ci0gICAgQVNT
RVJUKGVudHJ5KTsKLSAgICBTdHJpbmcgcGF0aCA9IERPTUZpbGVQYXRoOjpnZXREaXJlY3Rvcnko
ZW50cnktPmZ1bGxQYXRoKCkpOwotCi0gICAgbV9hc3luY0ZpbGVTeXN0ZW0tPmRpcmVjdG9yeUV4
aXN0cyhjcmVhdGVGaWxlU3lzdGVtVVJMKHBhdGgpLCBFbnRyeUNhbGxiYWNrczo6Y3JlYXRlKHN1
Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaywgdGhpcywgcGF0aCwgdHJ1ZSkpOwotICAgIHJl
dHVybiB0cnVlOwotfQotCi1ib29sIERPTUZpbGVTeXN0ZW1CYXNlOjpnZXRGaWxlKGNvbnN0IEVu
dHJ5QmFzZSogZW50cnksIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgRmlsZVN5c3RlbUZsYWdz
JiBmbGFncywgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NS
ZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKLXsKLSAgICBTdHJpbmcgYWJzb2x1
dGVQYXRoOwotICAgIGlmICghcGF0aFRvQWJzb2x1dGVQYXRoKG1fdHlwZSwgZW50cnksIHBhdGgs
IGFic29sdXRlUGF0aCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIE93blB0cjxFbnRy
eUNhbGxiYWNrcz4gY2FsbGJhY2tzID0gRW50cnlDYWxsYmFja3M6OmNyZWF0ZShzdWNjZXNzQ2Fs
bGJhY2ssIGVycm9yQ2FsbGJhY2ssIHRoaXMsIGFic29sdXRlUGF0aCwgZmFsc2UpOwotICAgIGlm
IChmbGFncy5jcmVhdGUpCi0gICAgICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5jcmVhdGVGaWxlKGNy
ZWF0ZUZpbGVTeXN0ZW1VUkwoYWJzb2x1dGVQYXRoKSwgZmxhZ3MuZXhjbHVzaXZlLCBjYWxsYmFj
a3MucmVsZWFzZSgpKTsKLSAgICBlbHNlCi0gICAgICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5maWxl
RXhpc3RzKGNyZWF0ZUZpbGVTeXN0ZW1VUkwoYWJzb2x1dGVQYXRoKSwgY2FsbGJhY2tzLnJlbGVh
c2UoKSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgRE9NRmlsZVN5c3RlbUJhc2U6Omdl
dERpcmVjdG9yeShjb25zdCBFbnRyeUJhc2UqIGVudHJ5LCBjb25zdCBTdHJpbmcmIHBhdGgsIGNv
bnN0IEZpbGVTeXN0ZW1GbGFncyYgZmxhZ3MsIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3Vj
Y2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCi17
Ci0gICAgU3RyaW5nIGFic29sdXRlUGF0aDsKLSAgICBpZiAoIXBhdGhUb0Fic29sdXRlUGF0aCht
X3R5cGUsIGVudHJ5LCBwYXRoLCBhYnNvbHV0ZVBhdGgpKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICBPd25QdHI8RW50cnlDYWxsYmFja3M+IGNhbGxiYWNrcyA9IEVudHJ5Q2FsbGJhY2tz
OjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCB0aGlzLCBhYnNvbHV0ZVBh
dGgsIHRydWUpOwotICAgIGlmIChmbGFncy5jcmVhdGUpCi0gICAgICAgIG1fYXN5bmNGaWxlU3lz
dGVtLT5jcmVhdGVEaXJlY3RvcnkoY3JlYXRlRmlsZVN5c3RlbVVSTChhYnNvbHV0ZVBhdGgpLCBm
bGFncy5leGNsdXNpdmUsIGNhbGxiYWNrcy5yZWxlYXNlKCkpOwotICAgIGVsc2UKLSAgICAgICAg
bV9hc3luY0ZpbGVTeXN0ZW0tPmRpcmVjdG9yeUV4aXN0cyhjcmVhdGVGaWxlU3lzdGVtVVJMKGFi
c29sdXRlUGF0aCksIGNhbGxiYWNrcy5yZWxlYXNlKCkpOwotICAgIHJldHVybiB0cnVlOwotfQot
Ci1ib29sIERPTUZpbGVTeXN0ZW1CYXNlOjpyZWFkRGlyZWN0b3J5KFBhc3NSZWZQdHI8RGlyZWN0
b3J5UmVhZGVyQmFzZT4gcmVhZGVyLCBjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NSZWZQdHI8RW50
cmllc0NhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4g
ZXJyb3JDYWxsYmFjaykKLXsKLSAgICBBU1NFUlQoRE9NRmlsZVBhdGg6OmlzQWJzb2x1dGUocGF0
aCkpOwotICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5yZWFkRGlyZWN0b3J5KGNyZWF0ZUZpbGVTeXN0
ZW1VUkwocGF0aCksIEVudHJpZXNDYWxsYmFja3M6OmNyZWF0ZShzdWNjZXNzQ2FsbGJhY2ssIGVy
cm9yQ2FsbGJhY2ssIHJlYWRlciwgcGF0aCkpOwotICAgIHJldHVybiB0cnVlOwotfQotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3RlbUJhc2UuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5
c3RlbUJhc2UuaAkocmV2aXNpb24gMTU2NjkxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
aWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW1CYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsMTI0ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAq
Ci0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
LSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaWZuZGVmIERPTUZpbGVTeXN0ZW1CYXNlX2gKLSNkZWZpbmUgRE9NRmlsZVN5c3RlbUJh
c2VfaAotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jaW5jbHVkZSAiQXN5bmNGaWxlU3lz
dGVtLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbUZsYWdzLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3Rl
bVR5cGUuaCIKLSNpbmNsdWRlICJVUkwuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgot
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgRGlyZWN0b3J5RW50cnk7Ci1jbGFz
cyBEaXJlY3RvcnlSZWFkZXJCYXNlOwotY2xhc3MgRW50cmllc0NhbGxiYWNrOwotY2xhc3MgRW50
cnlCYXNlOwotY2xhc3MgRW50cnlDYWxsYmFjazsKLWNsYXNzIEVycm9yQ2FsbGJhY2s7Ci1jbGFz
cyBNZXRhZGF0YUNhbGxiYWNrOwotY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLWNsYXNz
IFNlY3VyaXR5T3JpZ2luOwotY2xhc3MgVm9pZENhbGxiYWNrOwotCi0vLyBBIGNvbW1vbiBiYXNl
IGNsYXNzIGZvciBET01GaWxlU3lzdGVtIGFuZCBET01GaWxlU3lzdGVtU3luYy4KLWNsYXNzIERP
TUZpbGVTeXN0ZW1CYXNlIDogcHVibGljIFJlZkNvdW50ZWQ8RE9NRmlsZVN5c3RlbUJhc2U+IHsK
LXB1YmxpYzoKLSAgICAvLyBQYXRoIHByZWZpeGVzIHRoYXQgYXJlIHVzZWQgaW4gdGhlIGZpbGVz
eXN0ZW0gVVJMcyAodGhhdCBjYW4gYmUgb2J0YWluZWQgYnkgdG9VUkwoKSkuCi0gICAgLy8gaHR0
cDovL3d3dy53My5vcmcvVFIvZmlsZS1zeXN0ZW0tYXBpLyN3aWRsLUVudHJ5LXRvVVJMCi0gICAg
c3RhdGljIGNvbnN0IGNoYXIgcGVyc2lzdGVudFBhdGhQcmVmaXhbXTsKLSAgICBzdGF0aWMgY29u
c3Qgc2l6ZV90IHBlcnNpc3RlbnRQYXRoUHJlZml4TGVuZ3RoOwotICAgIHN0YXRpYyBjb25zdCBj
aGFyIHRlbXBvcmFyeVBhdGhQcmVmaXhbXTsKLSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHRlbXBv
cmFyeVBhdGhQcmVmaXhMZW5ndGg7Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIgaXNvbGF0ZWRQYXRo
UHJlZml4W107Ci0gICAgc3RhdGljIGNvbnN0IHNpemVfdCBpc29sYXRlZFBhdGhQcmVmaXhMZW5n
dGg7Ci0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtQmFzZT4gY3JlYXRlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgRmlsZVN5
c3RlbVR5cGUgdHlwZSwgY29uc3QgVVJMJiByb290VVJMLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5
c3RlbT4gYXN5bmNGaWxlU3lzdGVtKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBET01GaWxlU3lzdGVtQmFzZShjb250ZXh0LCBuYW1lLCB0eXBlLCByb290VVJMLCBhc3luY0Zp
bGVTeXN0ZW0pKTsKLSAgICB9Ci0gICAgdmlydHVhbCB+RE9NRmlsZVN5c3RlbUJhc2UoKTsKLQot
ICAgIGNvbnN0IFN0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQotICAgIEZp
bGVTeXN0ZW1UeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KLSAgICBVUkwgcm9v
dFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fZmlsZXN5c3RlbVJvb3RVUkw7IH0KLSAgICBBc3luY0Zp
bGVTeXN0ZW0qIGFzeW5jRmlsZVN5c3RlbSgpIGNvbnN0IHsgcmV0dXJuIG1fYXN5bmNGaWxlU3lz
dGVtLmdldCgpOyB9Ci0gICAgU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luKCkgY29uc3Q7
Ci0KLSAgICAvLyBUaGUgY2xvbmFibGUgZmxhZyBpcyB1c2VkIGluIHRoZSBzdHJ1Y3R1cmVkIGNs
b25lIGFsZ29yaXRobSB0byB0ZXN0Ci0gICAgLy8gd2hldGhlciB0aGUgRmlsZVN5c3RlbSBBUEkg
b2JqZWN0IGlzIHBlcm1pdHRlZCB0byBiZSBjbG9uZWQuIEl0IGRlZmF1bHRzCi0gICAgLy8gdG8g
ZmFsc2UsIGFuZCBtdXN0IGJlIGV4cGxpY2l0bHkgc2V0IGJ5IGludGVybmFsIGNvZGUgcGVybWl0
IGNsb25pbmcuCi0gICAgdm9pZCBtYWtlQ2xvbmFibGUoKSB7IG1fY2xvbmFibGUgPSB0cnVlOyB9
Ci0gICAgYm9vbCBjbG9uYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2xvbmFibGU7IH0KLQotICAg
IHN0YXRpYyBib29sIGlzVmFsaWRUeXBlKEZpbGVTeXN0ZW1UeXBlKTsKLSAgICBzdGF0aWMgYm9v
bCBjcmFja0ZpbGVTeXN0ZW1VUkwoY29uc3QgVVJMJiwgRmlsZVN5c3RlbVR5cGUmLCBTdHJpbmcm
IGZpbGVQYXRoKTsKLSAgICBib29sIHN1cHBvcnRzVG9VUkwoKSBjb25zdDsKLSAgICBVUkwgY3Jl
YXRlRmlsZVN5c3RlbVVSTChjb25zdCBFbnRyeUJhc2UqKSBjb25zdDsKLSAgICBVUkwgY3JlYXRl
RmlsZVN5c3RlbVVSTChjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKSBjb25zdDsKLQotICAgIC8vIEFj
dHVhbCBGaWxlU3lzdGVtIEFQSSBpbXBsZW1lbnRhdGlvbnMuIEFsbCB0aGUgdmFsaWRpdHkgY2hl
Y2tzIG9uIHZpcnR1YWwgcGF0aHMgYXJlIGRvbmUgYXQgdGhpcyBsZXZlbC4KLSAgICAvLyBUaGV5
IHJldHVybiBmYWxzZSBmb3IgaW1tZWRpYXRlIGVycm9ycyB0aGF0IGRvbid0IGludm9sdmUgbG93
ZXIgQXN5bmNGaWxlU3lzdGVtIGxheWVyIChlLmcuIGZvciBuYW1lIHZhbGlkYXRpb24gZXJyb3Jz
KS4gT3RoZXJ3aXNlIHRoZXkgcmV0dXJuIHRydWUgKGJ1dCBsYXRlciBtYXkgY2FsbCBiYWNrIHdp
dGggYW4gcnVudGltZSBlcnJvcikuCi0gICAgYm9vbCBnZXRNZXRhZGF0YShjb25zdCBFbnRyeUJh
c2UqLCBQYXNzUmVmUHRyPE1ldGFkYXRhQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJh
Y2s+KTsKLSAgICBib29sIG1vdmUoY29uc3QgRW50cnlCYXNlKiBzb3VyY2UsIEVudHJ5QmFzZSog
cGFyZW50LCBjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4sIFBh
c3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4pOwotICAgIGJvb2wgY29weShjb25zdCBFbnRyeUJhc2Uq
IHNvdXJjZSwgRW50cnlCYXNlKiBwYXJlbnQsIGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0
cjxFbnRyeUNhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPik7Ci0gICAgYm9vbCBy
ZW1vdmUoY29uc3QgRW50cnlCYXNlKiwgUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+LCBQYXNzUmVm
UHRyPEVycm9yQ2FsbGJhY2s+KTsKLSAgICBib29sIHJlbW92ZVJlY3Vyc2l2ZWx5KGNvbnN0IEVu
dHJ5QmFzZSosIFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxi
YWNrPik7Ci0gICAgYm9vbCBnZXRQYXJlbnQoY29uc3QgRW50cnlCYXNlKiwgUGFzc1JlZlB0cjxF
bnRyeUNhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPik7Ci0gICAgYm9vbCBnZXRG
aWxlKGNvbnN0IEVudHJ5QmFzZSosIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgRmlsZVN5c3Rl
bUZsYWdzJiwgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxi
YWNrPik7Ci0gICAgYm9vbCBnZXREaXJlY3RvcnkoY29uc3QgRW50cnlCYXNlKiwgY29uc3QgU3Ry
aW5nJiBwYXRoLCBjb25zdCBGaWxlU3lzdGVtRmxhZ3MmLCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJh
Y2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsKLSAgICBib29sIHJlYWREaXJlY3Rvcnko
UGFzc1JlZlB0cjxEaXJlY3RvcnlSZWFkZXJCYXNlPiwgY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNz
UmVmUHRyPEVudHJpZXNDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4pOwotCi1w
cm90ZWN0ZWQ6Ci0gICAgRE9NRmlsZVN5c3RlbUJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IGNvbnN0IFN0cmluZyYgbmFtZSwgRmlsZVN5c3RlbVR5cGUsIGNvbnN0IFVSTCYgcm9vdFVSTCwg
UGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+KTsKLSAgICBmcmllbmQgY2xhc3MgRE9NRmlsZVN5
c3RlbVN5bmM7Ci0KLSAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBtX2NvbnRleHQ7Ci0gICAg
U3RyaW5nIG1fbmFtZTsKLSAgICBGaWxlU3lzdGVtVHlwZSBtX3R5cGU7Ci0gICAgVVJMIG1fZmls
ZXN5c3RlbVJvb3RVUkw7Ci0gICAgYm9vbCBtX2Nsb25hYmxlOwotCi0gICAgbXV0YWJsZSBPd25Q
dHI8QXN5bmNGaWxlU3lzdGVtPiBtX2FzeW5jRmlsZVN5c3RlbTsKLX07Ci0KLWlubGluZSBib29s
IG9wZXJhdG9yPT0oY29uc3QgRE9NRmlsZVN5c3RlbUJhc2UmIGEsIGNvbnN0IERPTUZpbGVTeXN0
ZW1CYXNlJiBiKSB7IHJldHVybiBhLm5hbWUoKSA9PSBiLm5hbWUoKSAmJiBhLnR5cGUoKSA9PSBi
LnR5cGUoKSAmJiBhLnJvb3RVUkwoKSA9PSBiLnJvb3RVUkwoKTsgfQotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNlbmRpZiAvLyBE
T01GaWxlU3lzdGVtQmFzZV9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0
ZW0vRE9NRmlsZVN5c3RlbVN5bmMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtU3luYy5jcHAJKHJldmlzaW9uIDE1NjY5MSkK
KysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtU3luYy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEsMjY2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiRE9NRmlsZVN5c3RlbVN5bmMuaCIKLQotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkK
LQotI2luY2x1ZGUgIkFzeW5jRmlsZVN5c3RlbS5oIgotI2luY2x1ZGUgIkFzeW5jRmlsZVdyaXRl
ci5oIgotI2luY2x1ZGUgIkRPTUZpbGVQYXRoLmgiCi0jaW5jbHVkZSAiRGlyZWN0b3J5RW50cnlT
eW5jLmgiCi0jaW5jbHVkZSAiRXJyb3JDYWxsYmFjay5oIgotI2luY2x1ZGUgIkZpbGUuaCIKLSNp
bmNsdWRlICJGaWxlRW50cnlTeW5jLmgiCi0jaW5jbHVkZSAiRmlsZUVycm9yLmgiCi0jaW5jbHVk
ZSAiRmlsZUV4Y2VwdGlvbi5oIgotI2luY2x1ZGUgIkZpbGVNZXRhZGF0YS5oIgotI2luY2x1ZGUg
IkZpbGVTeXN0ZW1DYWxsYmFja3MuaCIKLSNpbmNsdWRlICJGaWxlV3JpdGVyQmFzZUNhbGxiYWNr
LmgiCi0jaW5jbHVkZSAiRmlsZVdyaXRlclN5bmMuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1jbGFzcyBGaWxlV3JpdGVyQmFzZTsKLQotUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtU3luYz4g
RE9NRmlsZVN5c3RlbVN5bmM6OmNyZWF0ZShET01GaWxlU3lzdGVtQmFzZSogZmlsZVN5c3RlbSkK
LXsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IERPTUZpbGVTeXN0ZW1TeW5jKGZpbGVTeXN0ZW0t
Pm1fY29udGV4dCwgZmlsZVN5c3RlbS0+bmFtZSgpLCBmaWxlU3lzdGVtLT50eXBlKCksIGZpbGVT
eXN0ZW0tPnJvb3RVUkwoKSwgZmlsZVN5c3RlbS0+bV9hc3luY0ZpbGVTeXN0ZW0ucmVsZWFzZSgp
KSk7Ci19Ci0KLURPTUZpbGVTeXN0ZW1TeW5jOjpET01GaWxlU3lzdGVtU3luYyhTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIEZpbGVTeXN0ZW1UeXBl
IHR5cGUsIGNvbnN0IFVSTCYgcm9vdFVSTCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+IGFz
eW5jRmlsZVN5c3RlbSkKLSAgICA6IERPTUZpbGVTeXN0ZW1CYXNlKGNvbnRleHQsIG5hbWUsIHR5
cGUsIHJvb3RVUkwsIGFzeW5jRmlsZVN5c3RlbSkKLXsKLX0KLQotRE9NRmlsZVN5c3RlbVN5bmM6
On5ET01GaWxlU3lzdGVtU3luYygpCi17Ci19Ci0KLVBhc3NSZWZQdHI8RGlyZWN0b3J5RW50cnlT
eW5jPiBET01GaWxlU3lzdGVtU3luYzo6cm9vdCgpCi17Ci0gICAgcmV0dXJuIERpcmVjdG9yeUVu
dHJ5U3luYzo6Y3JlYXRlKHRoaXMsIERPTUZpbGVQYXRoOjpyb290KTsKLX0KLQotbmFtZXNwYWNl
IHsKLQotY2xhc3MgQ3JlYXRlRmlsZUhlbHBlciA6IHB1YmxpYyBBc3luY0ZpbGVTeXN0ZW1DYWxs
YmFja3MgewotcHVibGljOgotICAgIGNsYXNzIENyZWF0ZUZpbGVSZXN1bHQgOiBwdWJsaWMgUmVm
Q291bnRlZDxDcmVhdGVGaWxlUmVzdWx0PiB7Ci0gICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRp
YyBQYXNzUmVmUHRyPENyZWF0ZUZpbGVSZXN1bHQ+IGNyZWF0ZSgpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ3JlYXRlRmlsZVJlc3VsdCgpKTsKLSAgICAgICAg
fQotCi0gICAgICAgIGJvb2wgbV9mYWlsZWQ7Ci0gICAgICAgIGludCBtX2NvZGU7Ci0gICAgICAg
IFJlZlB0cjxGaWxlPiBtX2ZpbGU7Ci0KLSAgICAgIHByaXZhdGU6Ci0gICAgICAgIENyZWF0ZUZp
bGVSZXN1bHQoKQotICAgICAgICAgICAgOiBtX2ZhaWxlZChmYWxzZSkKLSAgICAgICAgICAgICwg
bV9jb2RlKDApCi0gICAgICAgIHsKLSAgICAgICAgfQotCi0gICAgICAgIH5DcmVhdGVGaWxlUmVz
dWx0KCkKLSAgICAgICAgewotICAgICAgICB9Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBXVEY6OlJl
ZkNvdW50ZWQ8Q3JlYXRlRmlsZVJlc3VsdD47Ci0gICAgfTsKLQotICAgIHN0YXRpYyBQYXNzT3du
UHRyPENyZWF0ZUZpbGVIZWxwZXI+IGNyZWF0ZShQYXNzUmVmUHRyPENyZWF0ZUZpbGVSZXN1bHQ+
IHJlc3VsdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBVUkwmIHVybCwgRmlsZVN5c3RlbVR5
cGUgdHlwZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ3JlYXRlRmlsZUhl
bHBlcihyZXN1bHQsIG5hbWUsIHVybCwgdHlwZSkpOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9p
ZCBkaWRGYWlsKGludCBjb2RlKQotICAgIHsKLSAgICAgICAgbV9yZXN1bHQtPm1fZmFpbGVkID0g
dHJ1ZTsKLSAgICAgICAgbV9yZXN1bHQtPm1fY29kZSA9IGNvZGU7Ci0gICAgfQotCi0gICAgdmly
dHVhbCB+Q3JlYXRlRmlsZUhlbHBlcigpCi0gICAgewotICAgIH0KLQotICAgIHZpcnR1YWwgdm9p
ZCBkaWRDcmVhdGVTbmFwc2hvdEZpbGUoY29uc3QgRmlsZU1ldGFkYXRhJiBtZXRhZGF0YSwgUGFz
c1JlZlB0cjxCbG9iRGF0YUhhbmRsZT4gLyogc25hcHNob3QgKi8pCi0gICAgewotICAgICAgICAv
LyBXZSBjYW4ndCBkaXJlY3RseSB1c2UgdGhlIHNuYXBzaG90IGJsb2IgZGF0YSBoYW5kbGUgYmVj
YXVzZSB0aGUgY29udGVudCB0eXBlIG9uIGl0IGhhc24ndCBiZWVuIHNldC4KLSAgICAgICAgLy8g
VGhlIHxzbmFwc2hvdHwgcGFyYW0gaXMgaGVyZSB0byBwcm92aWRlIGEgYSBjaGFpbiBvZiBjdXN0
b2R5IHRocnUgdGhyZWFkIGJyaWRnaW5nIHRoYXQgaXMgaGVsZCBvbnRvIHVudGlsCi0gICAgICAg
IC8vICphZnRlciogd2UndmUgY29pbmVkIGEgRmlsZSB3aXRoIGEgbmV3IGhhbmRsZSB0aGF0IGhh
cyB0aGUgY29ycmVjdCB0eXBlIHNldCBvbiBpdC4gVGhpcyBhbGxvd3MgdGhlCi0gICAgICAgIC8v
IGJsb2Igc3RvcmFnZSBzeXN0ZW0gdG8gdHJhY2sgd2hlbiBhIHRlbXAgZmlsZSBjYW4gYW5kIGNh
bid0IGJlIHNhZmVseSBkZWxldGVkLgotCi0gICAgICAgIC8vIEZvciByZWd1bGFyIGZpbGVzeXN0
ZW0gdHlwZXMgKHRlbXBvcmFyeSBvciBwZXJzaXN0ZW50KSwgd2Ugc2hvdWxkIG5vdCBjYWNoZSBm
aWxlIG1ldGFkYXRhIGFzIGl0IGNvdWxkIGNoYW5nZSBGaWxlIHNlbWFudGljcy4KLSAgICAgICAg
Ly8gRm9yIG90aGVyIGZpbGVzeXN0ZW0gdHlwZXMgKHdoaWNoIGNvdWxkIGJlIHBsYXRmb3JtLXNw
ZWNpZmljIG9uZXMpLCB0aGVyZSdzIGEgY2hhbmNlIHRoYXQgdGhlIGZpbGVzIGFyZSBvbiByZW1v
dGUgZmlsZXN5c3RlbS4KLSAgICAgICAgLy8gSWYgdGhlIHBvcnQgaGFzIHJldHVybmVkIG1ldGFk
YXRhIGp1c3QgcGFzcyBpdCB0byBGaWxlIGNvbnN0cnVjdG9yIChzbyB3ZSBtYXkgY2FjaGUgdGhl
IG1ldGFkYXRhKS4KLSAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCB1c2UgdGhlIHNuYXBzaG90
IG1ldGFkYXRhIGZvciBhbGwgZmlsZXMuCi0gICAgICAgIC8vIGh0dHBzOi8vd3d3LnczLm9yZy9C
dWdzL1B1YmxpYy9zaG93X2J1Zy5jZ2k/aWQ9MTc3NDYKLSAgICAgICAgaWYgKG1fdHlwZSA9PSBG
aWxlU3lzdGVtVHlwZVRlbXBvcmFyeSB8fCBtX3R5cGUgPT0gRmlsZVN5c3RlbVR5cGVQZXJzaXN0
ZW50KSB7Ci0gICAgICAgICAgICBtX3Jlc3VsdC0+bV9maWxlID0gRmlsZTo6Y3JlYXRlV2l0aE5h
bWUobWV0YWRhdGEucGxhdGZvcm1QYXRoLCBtX25hbWUpOwotICAgICAgICB9IGVsc2UgaWYgKCFt
ZXRhZGF0YS5wbGF0Zm9ybVBhdGguaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAvLyBJZiB0aGUg
cGxhdGZvcm1QYXRoIGluIHRoZSByZXR1cm5lZCBtZXRhZGF0YSBpcyBnaXZlbiwgd2UgY3JlYXRl
IGEgRmlsZSBvYmplY3QgZm9yIHRoZSBwYXRoLgotICAgICAgICAgICAgbV9yZXN1bHQtPm1fZmls
ZSA9IEZpbGU6OmNyZWF0ZUZvckZpbGVTeXN0ZW1GaWxlKG1fbmFtZSwgbWV0YWRhdGEpLmdldCgp
OwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLy8gT3RoZXJ3aXNlIGNyZWF0ZSBhIEZp
bGUgZnJvbSB0aGUgRmlsZVN5c3RlbSBVUkwuCi0gICAgICAgICAgICBtX3Jlc3VsdC0+bV9maWxl
ID0gRmlsZTo6Y3JlYXRlRm9yRmlsZVN5c3RlbUZpbGUobV91cmwsIG1ldGFkYXRhKS5nZXQoKTsK
LSAgICAgICAgfQotICAgIH0KLXByaXZhdGU6Ci0gICAgQ3JlYXRlRmlsZUhlbHBlcihQYXNzUmVm
UHRyPENyZWF0ZUZpbGVSZXN1bHQ+IHJlc3VsdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBV
UkwmIHVybCwgRmlsZVN5c3RlbVR5cGUgdHlwZSkKLSAgICAgICAgOiBtX3Jlc3VsdChyZXN1bHQp
Ci0gICAgICAgICwgbV9uYW1lKG5hbWUpCi0gICAgICAgICwgbV91cmwodXJsKQotICAgICAgICAs
IG1fdHlwZSh0eXBlKQotICAgIHsKLSAgICB9Ci0KLSAgICBSZWZQdHI8Q3JlYXRlRmlsZVJlc3Vs
dD4gbV9yZXN1bHQ7Ci0gICAgU3RyaW5nIG1fbmFtZTsKLSAgICBVUkwgbV91cmw7Ci0gICAgRmls
ZVN5c3RlbVR5cGUgbV90eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UKLQotUGFzc1JlZlB0cjxG
aWxlPiBET01GaWxlU3lzdGVtU3luYzo6Y3JlYXRlRmlsZShjb25zdCBGaWxlRW50cnlTeW5jKiBm
aWxlRW50cnksIEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIGVjID0gMDsKLSAgICBVUkwgZmls
ZVN5c3RlbVVSTCA9IGNyZWF0ZUZpbGVTeXN0ZW1VUkwoZmlsZUVudHJ5KTsKLSAgICBSZWZQdHI8
Q3JlYXRlRmlsZUhlbHBlcjo6Q3JlYXRlRmlsZVJlc3VsdD4gcmVzdWx0KENyZWF0ZUZpbGVIZWxw
ZXI6OkNyZWF0ZUZpbGVSZXN1bHQ6OmNyZWF0ZSgpKTsKLSAgICBtX2FzeW5jRmlsZVN5c3RlbS0+
Y3JlYXRlU25hcHNob3RGaWxlQW5kUmVhZE1ldGFkYXRhKGZpbGVTeXN0ZW1VUkwsIENyZWF0ZUZp
bGVIZWxwZXI6OmNyZWF0ZShyZXN1bHQsIGZpbGVFbnRyeS0+bmFtZSgpLCBmaWxlU3lzdGVtVVJM
LCB0eXBlKCkpKTsKLSAgICBpZiAoIW1fYXN5bmNGaWxlU3lzdGVtLT53YWl0Rm9yT3BlcmF0aW9u
VG9Db21wbGV0ZSgpKSB7Ci0gICAgICAgIGVjID0gRmlsZUV4Y2VwdGlvbjo6QUJPUlRfRVJSOwot
ICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgaWYgKHJlc3VsdC0+bV9mYWlsZWQpIHsKLSAg
ICAgICAgZWMgPSByZXN1bHQtPm1fY29kZTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAg
IHJldHVybiByZXN1bHQtPm1fZmlsZTsKLX0KLQotbmFtZXNwYWNlIHsKLQotY2xhc3MgUmVjZWl2
ZUZpbGVXcml0ZXJDYWxsYmFjayA6IHB1YmxpYyBGaWxlV3JpdGVyQmFzZUNhbGxiYWNrIHsKLXB1
YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxSZWNlaXZlRmlsZVdyaXRlckNhbGxiYWNrPiBj
cmVhdGUoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBSZWNlaXZlRmlsZVdy
aXRlckNhbGxiYWNrKCkpOwotICAgIH0KLQotICAgIGJvb2wgaGFuZGxlRXZlbnQoRmlsZVdyaXRl
ckJhc2UqIGZpbGVXcml0ZXJCYXNlKQotICAgIHsKLSNpZm5kZWYgTkRFQlVHCi0gICAgICAgIG1f
ZmlsZVdyaXRlckJhc2UgPSBmaWxlV3JpdGVyQmFzZTsKLSNlbHNlCi0gICAgICAgIEFTU0VSVF9V
TlVTRUQoZmlsZVdyaXRlckJhc2UsIGZpbGVXcml0ZXJCYXNlKTsKLSNlbmRpZgotICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSNpZm5kZWYgTkRFQlVHCi0gICAgRmlsZVdyaXRlckJhc2Uq
IGZpbGVXcml0ZXJCYXNlKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2ZpbGVXcml0ZXJCYXNl
OwotICAgIH0KLSNlbmRpZgotCi1wcml2YXRlOgotICAgIFJlY2VpdmVGaWxlV3JpdGVyQ2FsbGJh
Y2soKQotI2lmbmRlZiBOREVCVUcKLSAgICAgICAgOiBtX2ZpbGVXcml0ZXJCYXNlKDApCi0jZW5k
aWYKLSAgICB7Ci0gICAgfQotCi0jaWZuZGVmIE5ERUJVRwotICAgIEZpbGVXcml0ZXJCYXNlKiBt
X2ZpbGVXcml0ZXJCYXNlOwotI2VuZGlmCi19OwotCi1jbGFzcyBMb2NhbEVycm9yQ2FsbGJhY2sg
OiBwdWJsaWMgRXJyb3JDYWxsYmFjayB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8
TG9jYWxFcnJvckNhbGxiYWNrPiBjcmVhdGUoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBMb2NhbEVycm9yQ2FsbGJhY2soKSk7Ci0gICAgfQotCi0gICAgYm9vbCBoYW5kbGVF
dmVudChGaWxlRXJyb3IqIGVycm9yKQotICAgIHsKLSAgICAgICAgbV9lcnJvciA9IGVycm9yOwot
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBGaWxlRXJyb3IqIGVycm9yKCkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBtX2Vycm9yLmdldCgpOwotICAgIH0KLQotcHJpdmF0ZToKLSAg
ICBMb2NhbEVycm9yQ2FsbGJhY2soKQotICAgIHsKLSAgICB9Ci0gICAgUmVmUHRyPEZpbGVFcnJv
cj4gbV9lcnJvcjsKLX07Ci0KLX0KLQotUGFzc1JlZlB0cjxGaWxlV3JpdGVyU3luYz4gRE9NRmls
ZVN5c3RlbVN5bmM6OmNyZWF0ZVdyaXRlcihjb25zdCBGaWxlRW50cnlTeW5jKiBmaWxlRW50cnks
IEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIEFTU0VSVChmaWxlRW50cnkpOwotICAgIGVjID0g
MDsKLQotCi0gICAgUmVmUHRyPEZpbGVXcml0ZXJTeW5jPiBmaWxlV3JpdGVyID0gRmlsZVdyaXRl
clN5bmM6OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxSZWNlaXZlRmlsZVdyaXRlckNhbGxiYWNrPiBz
dWNjZXNzQ2FsbGJhY2sgPSBSZWNlaXZlRmlsZVdyaXRlckNhbGxiYWNrOjpjcmVhdGUoKTsKLSAg
ICBSZWZQdHI8TG9jYWxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrID0gTG9jYWxFcnJvckNh
bGxiYWNrOjpjcmVhdGUoKTsKLQotICAgIE93blB0cjxGaWxlV3JpdGVyQmFzZUNhbGxiYWNrcz4g
Y2FsbGJhY2tzID0gRmlsZVdyaXRlckJhc2VDYWxsYmFja3M6OmNyZWF0ZShmaWxlV3JpdGVyLCBz
dWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spOwotICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5j
cmVhdGVXcml0ZXIoZmlsZVdyaXRlci5nZXQoKSwgY3JlYXRlRmlsZVN5c3RlbVVSTChmaWxlRW50
cnkpLCBjYWxsYmFja3MucmVsZWFzZSgpKTsKLSAgICBpZiAoIW1fYXN5bmNGaWxlU3lzdGVtLT53
YWl0Rm9yT3BlcmF0aW9uVG9Db21wbGV0ZSgpKSB7Ci0gICAgICAgIGVjID0gRmlsZUV4Y2VwdGlv
bjo6QUJPUlRfRVJSOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgaWYgKGVycm9yQ2Fs
bGJhY2stPmVycm9yKCkpIHsKLSAgICAgICAgQVNTRVJUKCFzdWNjZXNzQ2FsbGJhY2stPmZpbGVX
cml0ZXJCYXNlKCkpOwotICAgICAgICBlYyA9IEZpbGVFeGNlcHRpb246OkVycm9yQ29kZVRvRXhj
ZXB0aW9uQ29kZShlcnJvckNhbGxiYWNrLT5lcnJvcigpLT5jb2RlKCkpOwotICAgICAgICByZXR1
cm4gMDsKLSAgICB9Ci0gICAgQVNTRVJUKHN1Y2Nlc3NDYWxsYmFjay0+ZmlsZVdyaXRlckJhc2Uo
KSk7Ci0gICAgQVNTRVJUKHN0YXRpY19jYXN0PEZpbGVXcml0ZXJTeW5jKj4oc3VjY2Vzc0NhbGxi
YWNrLT5maWxlV3JpdGVyQmFzZSgpKSA9PSBmaWxlV3JpdGVyLmdldCgpKTsKLSAgICByZXR1cm4g
ZmlsZVdyaXRlcjsKLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW1TeW5jLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVT
eXN0ZW1TeW5jLmgJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtU3luYy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcxICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAq
Ci0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
LSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaWZuZGVmIERPTUZpbGVTeXN0ZW1TeW5jX2gKLSNkZWZpbmUgRE9NRmlsZVN5c3RlbVN5
bmNfaAotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jaW5jbHVkZSAiRE9NRmlsZVN5c3Rl
bUJhc2UuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBEaXJlY3RvcnlFbnRyeVN5
bmM7Ci1jbGFzcyBGaWxlOwotY2xhc3MgRmlsZUVudHJ5U3luYzsKLWNsYXNzIEZpbGVXcml0ZXJT
eW5jOwotCi10eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwotCi1jbGFzcyBET01GaWxlU3lzdGVt
U3luYyA6IHB1YmxpYyBET01GaWxlU3lzdGVtQmFzZSB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBh
c3NSZWZQdHI8RE9NRmlsZVN5c3RlbVN5bmM+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIEZpbGVTeXN0ZW1UeXBlIHR5cGUsIGNvbnN0
IFVSTCYgcm9vdFVSTCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+IGFzeW5jRmlsZVN5c3Rl
bSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRE9NRmlsZVN5c3RlbVN5bmMo
Y29udGV4dCwgbmFtZSwgdHlwZSwgcm9vdFVSTCwgYXN5bmNGaWxlU3lzdGVtKSk7Ci0gICAgfQot
Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbVN5bmM+IGNyZWF0ZShET01GaWxl
U3lzdGVtQmFzZSopOwotCi0gICAgdmlydHVhbCB+RE9NRmlsZVN5c3RlbVN5bmMoKTsKLQotICAg
IFBhc3NSZWZQdHI8RGlyZWN0b3J5RW50cnlTeW5jPiByb290KCk7Ci0KLSAgICBQYXNzUmVmUHRy
PEZpbGU+IGNyZWF0ZUZpbGUoY29uc3QgRmlsZUVudHJ5U3luYyosIEV4Y2VwdGlvbkNvZGUmKTsK
LSAgICBQYXNzUmVmUHRyPEZpbGVXcml0ZXJTeW5jPiBjcmVhdGVXcml0ZXIoY29uc3QgRmlsZUVu
dHJ5U3luYyosIEV4Y2VwdGlvbkNvZGUmKTsKLQotcHJpdmF0ZToKLSAgICBET01GaWxlU3lzdGVt
U3luYyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBGaWxlU3lz
dGVtVHlwZSwgY29uc3QgVVJMJiByb290VVJMLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4p
OwotfTsKLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jZW5kaWYgLy8g
RE9NRmlsZVN5c3RlbVN5bmNfaApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lz
dGVtL0RPTUZpbGVTeXN0ZW1TeW5jLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3RlbVN5bmMuaWRsCShyZXZpc2lvbiAxNTY2OTEp
CisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3RlbVN5bmMu
aWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xLDM4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1bCi0gICAgTm9JbnRlcmZhY2VPYmpl
Y3QsCi0gICAgQ29uZGl0aW9uYWw9RklMRV9TWVNURU0sCi0gICAgSlNOb1N0YXRpY1RhYmxlcwot
XSBpbnRlcmZhY2UgRE9NRmlsZVN5c3RlbVN5bmMgewotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBE
T01TdHJpbmcgbmFtZTsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgRGlyZWN0b3J5RW50cnlTeW5j
IHJvb3Q7Ci19OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTVdp
bmRvd0ZpbGVTeXN0ZW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmlsZXN5c3RlbS9ET01XaW5kb3dGaWxlU3lzdGVtLmNwcAkocmV2aXNpb24gMTU2NjkxKQorKysg
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTVdpbmRvd0ZpbGVTeXN0ZW0uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDEwOCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDEyLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZSBtZXQ6Ci0gKgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycgQU5ECi0gKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCi0g
KiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRQotICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSAqIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SCi0gKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCi0gKiBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZCi0gKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gKLSAqIERBTUFHRS4KLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRE9NV2luZG93RmlsZVN5c3RlbS5oIgotCi0jaWYgRU5B
QkxFKEZJTEVfU1lTVEVNKQotCi0jaW5jbHVkZSAiQXN5bmNGaWxlU3lzdGVtLmgiCi0jaW5jbHVk
ZSAiRE9NRmlsZVN5c3RlbS5oIgotI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgotI2luY2x1ZGUgIkRv
Y3VtZW50LmgiCi0jaW5jbHVkZSAiRW50cnlDYWxsYmFjay5oIgotI2luY2x1ZGUgIkVycm9yQ2Fs
bGJhY2suaCIKLSNpbmNsdWRlICJGaWxlRXJyb3IuaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtQ2Fs
bGJhY2suaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtQ2FsbGJhY2tzLmgiCi0jaW5jbHVkZSAiRmls
ZVN5c3RlbVR5cGUuaCIKLSNpbmNsdWRlICJMb2NhbEZpbGVTeXN0ZW0uaCIKLSNpbmNsdWRlICJT
ZWN1cml0eU9yaWdpbi5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLURPTVdpbmRvd0ZpbGVT
eXN0ZW06OkRPTVdpbmRvd0ZpbGVTeXN0ZW0oKQotewotfQotCi1ET01XaW5kb3dGaWxlU3lzdGVt
Ojp+RE9NV2luZG93RmlsZVN5c3RlbSgpCi17Ci19Ci0KLXZvaWQgRE9NV2luZG93RmlsZVN5c3Rl
bTo6d2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0oRE9NV2luZG93KiB3aW5kb3csIGludCB0eXBlLCBs
b25nIGxvbmcgc2l6ZSwgUGFzc1JlZlB0cjxGaWxlU3lzdGVtQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxs
YmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQotewotICAgIGlm
ICghd2luZG93LT5pc0N1cnJlbnRseURpc3BsYXllZEluRnJhbWUoKSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gd2luZG93LT5kb2N1bWVudCgpOwotICAgIGlm
ICghZG9jdW1lbnQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmICghQXN5bmNGaWxlU3lzdGVt
Ojppc0F2YWlsYWJsZSgpIHx8ICFkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNz
RmlsZVN5c3RlbSgpKSB7Ci0gICAgICAgIERPTUZpbGVTeXN0ZW06OnNjaGVkdWxlQ2FsbGJhY2so
ZG9jdW1lbnQsIGVycm9yQ2FsbGJhY2ssIEZpbGVFcnJvcjo6Y3JlYXRlKEZpbGVFcnJvcjo6U0VD
VVJJVFlfRVJSKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBGaWxlU3lzdGVtVHlw
ZSBmaWxlU3lzdGVtVHlwZSA9IHN0YXRpY19jYXN0PEZpbGVTeXN0ZW1UeXBlPih0eXBlKTsKLSAg
ICBpZiAoIURPTUZpbGVTeXN0ZW1CYXNlOjppc1ZhbGlkVHlwZShmaWxlU3lzdGVtVHlwZSkpIHsK
LSAgICAgICAgRE9NRmlsZVN5c3RlbTo6c2NoZWR1bGVDYWxsYmFjayhkb2N1bWVudCwgZXJyb3JD
YWxsYmFjaywgRmlsZUVycm9yOjpjcmVhdGUoRmlsZUVycm9yOjpJTlZBTElEX01PRElGSUNBVElP
Tl9FUlIpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIExvY2FsRmlsZVN5c3RlbTo6
bG9jYWxGaWxlU3lzdGVtKCkucmVxdWVzdEZpbGVTeXN0ZW0oZG9jdW1lbnQsIGZpbGVTeXN0ZW1U
eXBlLCBzaXplLCBGaWxlU3lzdGVtQ2FsbGJhY2tzOjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNrLCBl
cnJvckNhbGxiYWNrLCBkb2N1bWVudCwgZmlsZVN5c3RlbVR5cGUpLCBBc3luY2hyb25vdXNGaWxl
U3lzdGVtKTsKLX0KLQotdm9pZCBET01XaW5kb3dGaWxlU3lzdGVtOjp3ZWJraXRSZXNvbHZlTG9j
YWxGaWxlU3lzdGVtVVJMKERPTVdpbmRvdyogd2luZG93LCBjb25zdCBTdHJpbmcmIHVybCwgUGFz
c1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JD
YWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKLXsKLSAgICBpZiAoIXdpbmRvdy0+aXNDdXJyZW50bHlE
aXNwbGF5ZWRJbkZyYW1lKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIERvY3VtZW50KiBkb2N1
bWVudCA9IHdpbmRvdy0+ZG9jdW1lbnQoKTsKLSAgICBpZiAoIWRvY3VtZW50KQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4gPSBkb2N1bWVudC0+
c2VjdXJpdHlPcmlnaW4oKTsKLSAgICBVUkwgY29tcGxldGVkVVJMID0gZG9jdW1lbnQtPmNvbXBs
ZXRlVVJMKHVybCk7Ci0gICAgaWYgKCFBc3luY0ZpbGVTeXN0ZW06OmlzQXZhaWxhYmxlKCkgfHwg
IXNlY3VyaXR5T3JpZ2luLT5jYW5BY2Nlc3NGaWxlU3lzdGVtKCkgfHwgIXNlY3VyaXR5T3JpZ2lu
LT5jYW5SZXF1ZXN0KGNvbXBsZXRlZFVSTCkpIHsKLSAgICAgICAgRE9NRmlsZVN5c3RlbTo6c2No
ZWR1bGVDYWxsYmFjayhkb2N1bWVudCwgZXJyb3JDYWxsYmFjaywgRmlsZUVycm9yOjpjcmVhdGUo
RmlsZUVycm9yOjpTRUNVUklUWV9FUlIpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IEZpbGVTeXN0ZW1UeXBlIHR5cGU7Ci0gICAgU3RyaW5nIGZpbGVQYXRoOwotICAgIGlmICghY29t
cGxldGVkVVJMLmlzVmFsaWQoKSB8fCAhRE9NRmlsZVN5c3RlbUJhc2U6OmNyYWNrRmlsZVN5c3Rl
bVVSTChjb21wbGV0ZWRVUkwsIHR5cGUsIGZpbGVQYXRoKSkgewotICAgICAgICBET01GaWxlU3lz
dGVtOjpzY2hlZHVsZUNhbGxiYWNrKGRvY3VtZW50LCBlcnJvckNhbGxiYWNrLCBGaWxlRXJyb3I6
OmNyZWF0ZShGaWxlRXJyb3I6OkVOQ09ESU5HX0VSUikpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgTG9jYWxGaWxlU3lzdGVtOjpsb2NhbEZpbGVTeXN0ZW0oKS5yZWFkRmlsZVN5c3Rl
bShkb2N1bWVudCwgdHlwZSwgUmVzb2x2ZVVSSUNhbGxiYWNrczo6Y3JlYXRlKHN1Y2Nlc3NDYWxs
YmFjaywgZXJyb3JDYWxsYmFjaywgZG9jdW1lbnQsIHR5cGUsIGZpbGVQYXRoKSk7Ci19Ci0KLUNP
TVBJTEVfQVNTRVJUKHN0YXRpY19jYXN0PGludD4oRE9NV2luZG93RmlsZVN5c3RlbTo6VEVNUE9S
QVJZKSA9PSBzdGF0aWNfY2FzdDxpbnQ+KEZpbGVTeXN0ZW1UeXBlVGVtcG9yYXJ5KSwgZW51bV9t
aXNtYXRjaCk7Ci1DT01QSUxFX0FTU0VSVChzdGF0aWNfY2FzdDxpbnQ+KERPTVdpbmRvd0ZpbGVT
eXN0ZW06OlBFUlNJU1RFTlQpID09IHN0YXRpY19jYXN0PGludD4oRmlsZVN5c3RlbVR5cGVQZXJz
aXN0ZW50KSwgZW51bV9taXNtYXRjaCk7Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2Vu
ZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmlsZXN5c3RlbS9ET01XaW5kb3dGaWxlU3lzdGVtLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTVdpbmRvd0ZpbGVTeXN0ZW0uaAkocmV2aXNpb24g
MTU2NjkxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTVdpbmRvd0Zp
bGVTeXN0ZW0uaAkod29ya2luZyBjb3B5KQpAQCAtMSw2MyArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDEyLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6Ci0gKgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECi0gKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFCi0gKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQotICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSAqIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SCi0gKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotICogQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCi0gKiBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZCi0gKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gKLSAqIERBTUFHRS4KLSAqLwot
Ci0jaWZuZGVmIERPTVdpbmRvd0ZpbGVTeXN0ZW1faAotI2RlZmluZSBET01XaW5kb3dGaWxlU3lz
dGVtX2gKLQotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2luY2x1ZGUgPHd0Zi9QYXNzUmVm
UHRyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotY2xhc3MgRE9NV2luZG93OwotY2xhc3MgRW50cnlDYWxsYmFjazsKLWNsYXNzIEVy
cm9yQ2FsbGJhY2s7Ci1jbGFzcyBGaWxlU3lzdGVtQ2FsbGJhY2s7Ci0KLWNsYXNzIERPTVdpbmRv
d0ZpbGVTeXN0ZW0gewotcHVibGljOgotCi0gICAgc3RhdGljIHZvaWQgd2Via2l0UmVxdWVzdEZp
bGVTeXN0ZW0oRE9NV2luZG93KiwgaW50IHR5cGUsIGxvbmcgbG9uZyBzaXplLCBQYXNzUmVmUHRy
PEZpbGVTeXN0ZW1DYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4pOwotICAgIHN0
YXRpYyB2b2lkIHdlYmtpdFJlc29sdmVMb2NhbEZpbGVTeXN0ZW1VUkwoRE9NV2luZG93KiwgY29u
c3QgU3RyaW5nJiwgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNh
bGxiYWNrPik7Ci0KLSAgICAvLyBUaGV5IGFyZSBwbGFjZWQgaGVyZSBhbmQgaW4gYWxsIGNhcGl0
YWwgbGV0dGVycyBzbyB0aGV5IGNhbiBiZSBjaGVja2VkIGFnYWluc3QgdGhlIGNvbnN0YW50cyBp
biB0aGUKLSAgICAvLyBJREwgYXQgY29tcGlsZSB0aW1lLgotICAgIGVudW0gewotICAgICAgICBU
RU1QT1JBUlksCi0gICAgICAgIFBFUlNJU1RFTlQsCi0gICAgfTsKLQotcHJpdmF0ZToKLSAgICBE
T01XaW5kb3dGaWxlU3lzdGVtKCk7Ci0gICAgfkRPTVdpbmRvd0ZpbGVTeXN0ZW0oKTsKLX07Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkK
LQotI2VuZGlmIC8vIERPTVdpbmRvd0ZpbGVTeXN0ZW1faApJbmRleDogU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9maWxlc3lzdGVtL0RPTVdpbmRvd0ZpbGVTeXN0ZW0uaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9ET01XaW5kb3dGaWxlU3lzdGVtLmlk
bAkocmV2aXNpb24gMTU2NjkxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVt
L0RPTVdpbmRvd0ZpbGVTeXN0ZW0uaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xLDM4ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotWwotICAgIENvbmRpdGlvbmFsPUZJTEVfU1lTVEVN
LAotXSBwYXJ0aWFsIGludGVyZmFjZSBET01XaW5kb3cgewotICAgIGNvbnN0IHVuc2lnbmVkIHNo
b3J0IFRFTVBPUkFSWSA9IDA7Ci0gICAgY29uc3QgdW5zaWduZWQgc2hvcnQgUEVSU0lTVEVOVCA9
IDE7Ci0KLSAgICB2b2lkIHdlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKHVuc2lnbmVkIHNob3J0IHR5
cGUsIGxvbmcgbG9uZyBzaXplLAotICAgICAgICAgICAgRmlsZVN5c3RlbUNhbGxiYWNrIHN1Y2Nl
c3NDYWxsYmFjaywgb3B0aW9uYWwgRXJyb3JDYWxsYmFjayBlcnJvckNhbGxiYWNrKTsKLSAgICB2
b2lkIHdlYmtpdFJlc29sdmVMb2NhbEZpbGVTeXN0ZW1VUkwoRE9NU3RyaW5nIHVybCwKLSAgICAg
ICAgICAgIEVudHJ5Q2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNrLCBvcHRpb25hbCBFcnJvckNhbGxi
YWNrIGVycm9yQ2FsbGJhY2spOwotfTsKLQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
aWxlc3lzdGVtL0RhdGFUcmFuc2Zlckl0ZW1GaWxlU3lzdGVtLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RhdGFUcmFuc2Zlckl0ZW1GaWxlU3lzdGVt
LmgJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3Rl
bS9EYXRhVHJhbnNmZXJJdGVtRmlsZVN5c3RlbS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDU3ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAq
Ci0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
LSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaWZuZGVmIERhdGFUcmFuc2Zlckl0ZW1GaWxlU3lzdGVtX2gKLSNkZWZpbmUgRGF0YVRy
YW5zZmVySXRlbUZpbGVTeXN0ZW1faAotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jaW5j
bHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBE
YXRhVHJhbnNmZXJJdGVtOwotY2xhc3MgRW50cnk7Ci1jbGFzcyBTY3JpcHRFeGVjdXRpb25Db250
ZXh0OwotCi1jbGFzcyBEYXRhVHJhbnNmZXJJdGVtRmlsZVN5c3RlbSB7Ci1wdWJsaWM6Ci0gICAg
c3RhdGljIFBhc3NSZWZQdHI8RW50cnk+IHdlYmtpdEdldEFzRW50cnkoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIERhdGFUcmFuc2Zlckl0ZW0qKTsKLQotcHJpdmF0ZToKLSAgICBEYXRhVHJhbnNm
ZXJJdGVtRmlsZVN5c3RlbSgpOwotICAgIH5EYXRhVHJhbnNmZXJJdGVtRmlsZVN5c3RlbSgpOwot
fTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lT
VEVNKQotCi0jZW5kaWYgLy8gRGF0YVRyYW5zZmVySXRlbUZpbGVTeXN0ZW1faApJbmRleDogU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RhdGFUcmFuc2Zlckl0ZW1GaWxlU3lzdGVt
LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGF0
YVRyYW5zZmVySXRlbUZpbGVTeXN0ZW0uaWRsCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGF0YVRyYW5zZmVySXRlbUZpbGVTeXN0ZW0uaWRs
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDM2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwot
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAot
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1bCi0gICAgQ29uZGl0aW9uYWw9REFUQV9U
UkFOU0ZFUl9JVEVNUyZGSUxFX1NZU1RFTSwKLV0gcGFydGlhbCBpbnRlcmZhY2UgRGF0YVRyYW5z
ZmVySXRlbSB7Ci0gICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIEVudHJ5IHdl
YmtpdEdldEFzRW50cnkoKTsKLX07Ci0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmls
ZXN5c3RlbS9EaXJlY3RvcnlFbnRyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5LmNwcAkocmV2aXNpb24gMTU2NjkxKQor
KysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMSw3OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEw
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAq
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIkRpcmVjdG9yeUVudHJ5LmgiCi0KLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNpbmNs
dWRlICJEaXJlY3RvcnlSZWFkZXIuaCIKLSNpbmNsdWRlICJFbnRyeUNhbGxiYWNrLmgiCi0jaW5j
bHVkZSAiRXJyb3JDYWxsYmFjay5oIgotI2luY2x1ZGUgIkZpbGVFcnJvci5oIgotI2luY2x1ZGUg
IlZvaWRDYWxsYmFjay5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLURpcmVjdG9yeUVudHJ5
OjpEaXJlY3RvcnlFbnRyeShQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW1CYXNlPiBmaWxlU3lzdGVt
LCBjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKQotICAgIDogRW50cnkoZmlsZVN5c3RlbSwgZnVsbFBh
dGgpCi17Ci19Ci0KLVBhc3NSZWZQdHI8RGlyZWN0b3J5UmVhZGVyPiBEaXJlY3RvcnlFbnRyeTo6
Y3JlYXRlUmVhZGVyKCkKLXsKLSAgICByZXR1cm4gRGlyZWN0b3J5UmVhZGVyOjpjcmVhdGUobV9m
aWxlU3lzdGVtLCBtX2Z1bGxQYXRoKTsKLX0KLQotdm9pZCBEaXJlY3RvcnlFbnRyeTo6Z2V0Rmls
ZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IERpY3Rpb25hcnkmIG9wdGlvbnMsIFBhc3NSZWZQ
dHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJh
Y2s+IGVycm9yQ2FsbGJhY2tSZWYpCi17Ci0gICAgRmlsZVN5c3RlbUZsYWdzIGZsYWdzKG9wdGlv
bnMpOwotICAgIFJlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKGVycm9yQ2FsbGJh
Y2tSZWYpOwotICAgIGlmICghbV9maWxlU3lzdGVtLT5nZXRGaWxlKHRoaXMsIHBhdGgsIGZsYWdz
LCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spKQotICAgICAgICBmaWxlc3lzdGVtKCkt
PnNjaGVkdWxlQ2FsbGJhY2soZXJyb3JDYWxsYmFjay5yZWxlYXNlKCksIEZpbGVFcnJvcjo6Y3Jl
YXRlKEZpbGVFcnJvcjo6SU5WQUxJRF9NT0RJRklDQVRJT05fRVJSKSk7Ci19Ci0KLXZvaWQgRGly
ZWN0b3J5RW50cnk6OmdldERpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IERpY3Rp
b25hcnkmIG9wdGlvbnMsIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNr
LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2tSZWYpCi17Ci0gICAgRmls
ZVN5c3RlbUZsYWdzIGZsYWdzKG9wdGlvbnMpOwotICAgIFJlZlB0cjxFcnJvckNhbGxiYWNrPiBl
cnJvckNhbGxiYWNrKGVycm9yQ2FsbGJhY2tSZWYpOwotICAgIGlmICghbV9maWxlU3lzdGVtLT5n
ZXREaXJlY3RvcnkodGhpcywgcGF0aCwgZmxhZ3MsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxs
YmFjaykpCi0gICAgICAgIGZpbGVzeXN0ZW0oKS0+c2NoZWR1bGVDYWxsYmFjayhlcnJvckNhbGxi
YWNrLnJlbGVhc2UoKSwgRmlsZUVycm9yOjpjcmVhdGUoRmlsZUVycm9yOjpJTlZBTElEX01PRElG
SUNBVElPTl9FUlIpKTsKLX0KLQotdm9pZCBEaXJlY3RvcnlFbnRyeTo6cmVtb3ZlUmVjdXJzaXZl
bHkoUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxF
cnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrUmVmKSBjb25zdAotewotICAgIFJlZlB0cjxFcnJv
ckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKGVycm9yQ2FsbGJhY2tSZWYpOwotICAgIGlmICghbV9m
aWxlU3lzdGVtLT5yZW1vdmVSZWN1cnNpdmVseSh0aGlzLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9y
Q2FsbGJhY2spKQotICAgICAgICBmaWxlc3lzdGVtKCktPnNjaGVkdWxlQ2FsbGJhY2soZXJyb3JD
YWxsYmFjay5yZWxlYXNlKCksIEZpbGVFcnJvcjo6Y3JlYXRlKEZpbGVFcnJvcjo6SU5WQUxJRF9N
T0RJRklDQVRJT05fRVJSKSk7Ci19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RF
TSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRy
eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJl
Y3RvcnlFbnRyeS5oCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZpbGVzeXN0ZW0vRGlyZWN0b3J5RW50cnkuaAkod29ya2luZyBjb3B5KQpAQCAtMSw3MSArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgot
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0g
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2lmbmRlZiBEaXJlY3RvcnlFbnRyeV9oCi0jZGVmaW5lIERpcmVjdG9yeUVudHJ5X2gKLQot
I2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2luY2x1ZGUgIkVudHJ5LmgiCi0jaW5jbHVkZSAi
RmlsZVN5c3RlbUZsYWdzLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIERPTUZpbGVTeXN0ZW1CYXNlOwotY2xhc3MgRGly
ZWN0b3J5UmVhZGVyOwotY2xhc3MgRW50cnlDYWxsYmFjazsKLWNsYXNzIEVycm9yQ2FsbGJhY2s7
Ci1jbGFzcyBWb2lkQ2FsbGJhY2s7Ci0KLWNsYXNzIERpcmVjdG9yeUVudHJ5IDogcHVibGljIEVu
dHJ5IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxEaXJlY3RvcnlFbnRyeT4gY3Jl
YXRlKFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbUJhc2U+IGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmlu
ZyYgZnVsbFBhdGgpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERpcmVjdG9y
eUVudHJ5KGZpbGVTeXN0ZW0sIGZ1bGxQYXRoKSk7Ci0gICAgfQotICAgIHZpcnR1YWwgYm9vbCBp
c0RpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLQotICAgIFBhc3NSZWZQdHI8RGly
ZWN0b3J5UmVhZGVyPiBjcmVhdGVSZWFkZXIoKTsKLSAgICB2b2lkIGdldEZpbGUoY29uc3QgU3Ry
aW5nJiBwYXRoLCBjb25zdCBEaWN0aW9uYXJ5JiwgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiA9
IDAsIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gPSAwKTsKLSAgICB2b2lkIGdldERpcmVjdG9y
eShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IERpY3Rpb25hcnkmLCBQYXNzUmVmUHRyPEVudHJ5
Q2FsbGJhY2s+ID0gMCwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiA9IDApOwotICAgIHZvaWQg
cmVtb3ZlUmVjdXJzaXZlbHkoUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFj
ayA9IDAsIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gPSAwKSBjb25zdDsKLQotcHJpdmF0ZToK
LSAgICBEaXJlY3RvcnlFbnRyeShQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW1CYXNlPiwgY29uc3Qg
U3RyaW5nJiBmdWxsUGF0aCk7Ci19OwotCi19IC8vIG5hbWVzcGFjZQotCi0jZW5kaWYgLy8gRU5B
QkxFKEZJTEVfU1lTVEVNKQotCi0jZW5kaWYgLy8gRGlyZWN0b3J5RW50cnlfaApJbmRleDogU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5LmlkbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5RW50cnku
aWRsCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0
ZW0vRGlyZWN0b3J5RW50cnkuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQyICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICog
ZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1bCi0g
ICAgTm9JbnRlcmZhY2VPYmplY3QsCi0gICAgQ29uZGl0aW9uYWw9RklMRV9TWVNURU0sCi0gICAg
SlNHZW5lcmF0ZVRvTmF0aXZlT2JqZWN0LAotICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0LAotICAg
IEpTTm9TdGF0aWNUYWJsZXMKLV0gaW50ZXJmYWNlIERpcmVjdG9yeUVudHJ5IDogRW50cnkgewot
ICAgIERpcmVjdG9yeVJlYWRlciBjcmVhdGVSZWFkZXIoKTsKLSAgICB2b2lkIGdldEZpbGUoW1Ry
ZWF0TnVsbEFzPU51bGxTdHJpbmcsIFRyZWF0VW5kZWZpbmVkQXM9TnVsbFN0cmluZ10gRE9NU3Ry
aW5nIHBhdGgsIG9wdGlvbmFsIERpY3Rpb25hcnkgb3B0aW9ucywgb3B0aW9uYWwgRW50cnlDYWxs
YmFjayBzdWNjZXNzQ2FsbGJhY2ssIG9wdGlvbmFsIEVycm9yQ2FsbGJhY2sgZXJyb3JDYWxsYmFj
ayk7Ci0gICAgdm9pZCBnZXREaXJlY3RvcnkoW1RyZWF0TnVsbEFzPU51bGxTdHJpbmcsIFRyZWF0
VW5kZWZpbmVkQXM9TnVsbFN0cmluZ10gRE9NU3RyaW5nIHBhdGgsIG9wdGlvbmFsIERpY3Rpb25h
cnkgb3B0aW9ucywgb3B0aW9uYWwgRW50cnlDYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2ssIG9wdGlv
bmFsIEVycm9yQ2FsbGJhY2sgZXJyb3JDYWxsYmFjayk7Ci0gICAgdm9pZCByZW1vdmVSZWN1cnNp
dmVseShWb2lkQ2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNrLCBvcHRpb25hbCBFcnJvckNhbGxiYWNr
IGVycm9yQ2FsbGJhY2spOwotfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5
c3RlbS9EaXJlY3RvcnlFbnRyeVN5bmMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRyeVN5bmMuY3BwCShyZXZpc2lvbiAxNTY2
OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5RW50cnlT
eW5jLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw5MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4K
LSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
Ci0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIkRpcmVjdG9yeUVudHJ5U3luYy5oIgotCi0jaWYgRU5BQkxFKEZJTEVfU1lT
VEVNKQotCi0jaW5jbHVkZSAiRGlyZWN0b3J5UmVhZGVyU3luYy5oIgotI2luY2x1ZGUgIkVudHJ5
U3luYy5oIgotI2luY2x1ZGUgIkZpbGVFbnRyeVN5bmMuaCIKLSNpbmNsdWRlICJGaWxlRXhjZXB0
aW9uLmgiCi0jaW5jbHVkZSAiU3luY0NhbGxiYWNrSGVscGVyLmgiCi0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotRGlyZWN0b3J5RW50cnlTeW5jOjpEaXJlY3RvcnlFbnRyeVN5bmMoUGFzc1JlZlB0
cjxET01GaWxlU3lzdGVtQmFzZT4gZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBmdWxsUGF0aCkK
LSAgICA6IEVudHJ5U3luYyhmaWxlU3lzdGVtLCBmdWxsUGF0aCkKLXsKLX0KLQotUGFzc1JlZlB0
cjxEaXJlY3RvcnlSZWFkZXJTeW5jPiBEaXJlY3RvcnlFbnRyeVN5bmM6OmNyZWF0ZVJlYWRlcihF
eGNlcHRpb25Db2RlJikKLXsKLSAgICByZXR1cm4gRGlyZWN0b3J5UmVhZGVyU3luYzo6Y3JlYXRl
KG1fZmlsZVN5c3RlbSwgbV9mdWxsUGF0aCk7Ci19Ci0KLVBhc3NSZWZQdHI8RmlsZUVudHJ5U3lu
Yz4gRGlyZWN0b3J5RW50cnlTeW5jOjpnZXRGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3Qg
RGljdGlvbmFyeSYgb3B0aW9ucywgRXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0gICAgZWMgPSAwOwot
ICAgIEZpbGVTeXN0ZW1GbGFncyBmbGFncyhvcHRpb25zKTsKLSAgICBFbnRyeVN5bmNDYWxsYmFj
a0hlbHBlciBoZWxwZXIobV9maWxlU3lzdGVtLT5hc3luY0ZpbGVTeXN0ZW0oKSk7Ci0gICAgaWYg
KCFtX2ZpbGVTeXN0ZW0tPmdldEZpbGUodGhpcywgcGF0aCwgZmxhZ3MsIGhlbHBlci5zdWNjZXNz
Q2FsbGJhY2soKSwgaGVscGVyLmVycm9yQ2FsbGJhY2soKSkpIHsKLSAgICAgICAgZWMgPSBGaWxl
RXhjZXB0aW9uOjpJTlZBTElEX01PRElGSUNBVElPTl9FUlI7Ci0gICAgICAgIHJldHVybiAwOwot
ICAgIH0KLSAgICByZXR1cm4gc3RhdGljX3BvaW50ZXJfY2FzdDxGaWxlRW50cnlTeW5jPihoZWxw
ZXIuZ2V0UmVzdWx0KGVjKSk7Ci19Ci0KLVBhc3NSZWZQdHI8RGlyZWN0b3J5RW50cnlTeW5jPiBE
aXJlY3RvcnlFbnRyeVN5bmM6OmdldERpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0
IERpY3Rpb25hcnkmIG9wdGlvbnMsIEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIGVjID0gMDsK
LSAgICBGaWxlU3lzdGVtRmxhZ3MgZmxhZ3Mob3B0aW9ucyk7Ci0gICAgRW50cnlTeW5jQ2FsbGJh
Y2tIZWxwZXIgaGVscGVyKG1fZmlsZVN5c3RlbS0+YXN5bmNGaWxlU3lzdGVtKCkpOwotICAgIGlm
ICghbV9maWxlU3lzdGVtLT5nZXREaXJlY3RvcnkodGhpcywgcGF0aCwgZmxhZ3MsIGhlbHBlci5z
dWNjZXNzQ2FsbGJhY2soKSwgaGVscGVyLmVycm9yQ2FsbGJhY2soKSkpIHsKLSAgICAgICAgZWMg
PSBGaWxlRXhjZXB0aW9uOjpJTlZBTElEX01PRElGSUNBVElPTl9FUlI7Ci0gICAgICAgIHJldHVy
biAwOwotICAgIH0KLSAgICByZXR1cm4gc3RhdGljX3BvaW50ZXJfY2FzdDxEaXJlY3RvcnlFbnRy
eVN5bmM+KGhlbHBlci5nZXRSZXN1bHQoZWMpKTsKLX0KLQotdm9pZCBEaXJlY3RvcnlFbnRyeVN5
bmM6OnJlbW92ZVJlY3Vyc2l2ZWx5KEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIGVjID0gMDsK
LSAgICBWb2lkU3luY0NhbGxiYWNrSGVscGVyIGhlbHBlcihtX2ZpbGVTeXN0ZW0tPmFzeW5jRmls
ZVN5c3RlbSgpKTsKLSAgICBpZiAoIW1fZmlsZVN5c3RlbS0+cmVtb3ZlUmVjdXJzaXZlbHkodGhp
cywgaGVscGVyLnN1Y2Nlc3NDYWxsYmFjaygpLCBoZWxwZXIuZXJyb3JDYWxsYmFjaygpKSkgewot
ICAgICAgICBlYyA9IEZpbGVFeGNlcHRpb246OklOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUjsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBoZWxwZXIuZ2V0UmVzdWx0KGVjKTsKLX0KLQotfQot
Ci0jZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5U3luYy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRyeVN5bmMuaAkocmV2aXNp
b24gMTU2NjkxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9y
eUVudHJ5U3luYy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDY5ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0
aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAot
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIERpcmVj
dG9yeUVudHJ5U3luY19oCi0jZGVmaW5lIERpcmVjdG9yeUVudHJ5U3luY19oCi0KLSNpZiBFTkFC
TEUoRklMRV9TWVNURU0pCi0KLSNpbmNsdWRlICJFbnRyeVN5bmMuaCIKLSNpbmNsdWRlICJGaWxl
U3lzdGVtRmxhZ3MuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgRGlyZWN0b3J5UmVhZGVyU3luYzsKLWNsYXNzIEZpbGVF
bnRyeVN5bmM7Ci0KLWNsYXNzIERpcmVjdG9yeUVudHJ5U3luYyA6IHB1YmxpYyBFbnRyeVN5bmMg
ewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPERpcmVjdG9yeUVudHJ5U3luYz4gY3Jl
YXRlKFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbUJhc2U+IGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmlu
ZyYgZnVsbFBhdGgpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERpcmVjdG9y
eUVudHJ5U3luYyhmaWxlU3lzdGVtLCBmdWxsUGF0aCkpOwotICAgIH0KLSAgICB2aXJ0dWFsIGJv
b2wgaXNEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0KLSAgICBQYXNzUmVmUHRy
PERpcmVjdG9yeVJlYWRlclN5bmM+IGNyZWF0ZVJlYWRlcihFeGNlcHRpb25Db2RlJik7Ci0gICAg
UGFzc1JlZlB0cjxGaWxlRW50cnlTeW5jPiBnZXRGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgY29u
c3QgRGljdGlvbmFyeSYsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBQYXNzUmVmUHRyPERpcmVjdG9y
eUVudHJ5U3luYz4gZ2V0RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgRGljdGlv
bmFyeSYsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIHJlbW92ZVJlY3Vyc2l2ZWx5KEV4Y2Vw
dGlvbkNvZGUmKTsKLQotcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgRW50cnlTeW5jOwotICAg
IERpcmVjdG9yeUVudHJ5U3luYyhQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW1CYXNlPiwgY29uc3Qg
U3RyaW5nJiBmdWxsUGF0aCk7Ci19OwotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNU
RU0pCi0KLSNlbmRpZiAvLyBEaXJlY3RvcnlFbnRyeVN5bmNfaApJbmRleDogU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5U3luYy5pZGwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5U3luYy5p
ZGwJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3Rl
bS9EaXJlY3RvcnlFbnRyeVN5bmMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQyICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQot
ICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
LSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1b
Ci0gICAgTm9JbnRlcmZhY2VPYmplY3QsCi0gICAgQ29uZGl0aW9uYWw9RklMRV9TWVNURU0sCi0g
ICAgSlNHZW5lcmF0ZVRvTmF0aXZlT2JqZWN0LAotICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0LAot
ICAgIEpTTm9TdGF0aWNUYWJsZXMKLV0gaW50ZXJmYWNlIERpcmVjdG9yeUVudHJ5U3luYyA6IEVu
dHJ5U3luYyB7Ci0gICAgW1JhaXNlc0V4Y2VwdGlvbl0gRGlyZWN0b3J5UmVhZGVyU3luYyBjcmVh
dGVSZWFkZXIoKTsKLSAgICBbUmFpc2VzRXhjZXB0aW9uXSBGaWxlRW50cnlTeW5jIGdldEZpbGUo
W1RyZWF0TnVsbEFzPU51bGxTdHJpbmcsIFRyZWF0VW5kZWZpbmVkQXM9TnVsbFN0cmluZ10gRE9N
U3RyaW5nIHBhdGgsIERpY3Rpb25hcnkgZmxhZ3MpOwotICAgIFtSYWlzZXNFeGNlcHRpb25dIERp
cmVjdG9yeUVudHJ5U3luYyBnZXREaXJlY3RvcnkoW1RyZWF0TnVsbEFzPU51bGxTdHJpbmcsIFRy
ZWF0VW5kZWZpbmVkQXM9TnVsbFN0cmluZ10gRE9NU3RyaW5nIHBhdGgsIERpY3Rpb25hcnkgZmxh
Z3MpOwotICAgIFtSYWlzZXNFeGNlcHRpb25dIHZvaWQgcmVtb3ZlUmVjdXJzaXZlbHkoKTsKLX07
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGly
ZWN0b3J5UmVhZGVyLmNwcAkocmV2aXNpb24gMTU2NjkxKQorKysgU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NTkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0
OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
Ci0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJEaXJlY3RvcnlSZWFkZXIu
aCIKLQotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2luY2x1ZGUgIkVudHJpZXNDYWxsYmFj
ay5oIgotI2luY2x1ZGUgIkVudHJ5QXJyYXkuaCIKLSNpbmNsdWRlICJFcnJvckNhbGxiYWNrLmgi
Ci0jaW5jbHVkZSAiRmlsZUVycm9yLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotRGlyZWN0
b3J5UmVhZGVyOjpEaXJlY3RvcnlSZWFkZXIoUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtQmFzZT4g
ZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBmdWxsUGF0aCkKLSAgICA6IERpcmVjdG9yeVJlYWRl
ckJhc2UoZmlsZVN5c3RlbSwgZnVsbFBhdGgpCi17Ci19Ci0KLXZvaWQgRGlyZWN0b3J5UmVhZGVy
OjpyZWFkRW50cmllcyhQYXNzUmVmUHRyPEVudHJpZXNDYWxsYmFjaz4gZW50cmllc0NhbGxiYWNr
LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCi17Ci0gICAgaWYgKCFt
X2hhc01vcmVFbnRyaWVzKSB7Ci0gICAgICAgIGZpbGVzeXN0ZW0oKS0+c2NoZWR1bGVDYWxsYmFj
ayhlbnRyaWVzQ2FsbGJhY2ssIEVudHJ5QXJyYXk6OmNyZWF0ZSgpKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLSAgICBmaWxlc3lzdGVtKCktPnJlYWREaXJlY3RvcnkodGhpcywgbV9mdWxsUGF0
aCwgZW50cmllc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsKLX0KLQotfQotCi0jZW5kaWYgLy8g
RU5BQkxFKEZJTEVfU1lTVEVNKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lz
dGVtL0RpcmVjdG9yeVJlYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFkZXIuaAkocmV2aXNpb24gMTU2NjkxKQorKysgU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDY3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIERpcmVjdG9yeVJlYWRlcl9oCi0jZGVmaW5l
IERpcmVjdG9yeVJlYWRlcl9oCi0KLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNpbmNsdWRl
ICJET01GaWxlU3lzdGVtLmgiCi0jaW5jbHVkZSAiRGlyZWN0b3J5UmVhZGVyQmFzZS5oIgotI2lu
Y2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1j
bGFzcyBFbnRyaWVzQ2FsbGJhY2s7Ci1jbGFzcyBFbnRyaWVzQ2FsbGJhY2tzOwotY2xhc3MgRXJy
b3JDYWxsYmFjazsKLQotY2xhc3MgRGlyZWN0b3J5UmVhZGVyIDogcHVibGljIERpcmVjdG9yeVJl
YWRlckJhc2UgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPERpcmVjdG9yeVJlYWRl
cj4gY3JlYXRlKFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbUJhc2U+IGZpbGVTeXN0ZW0sIGNvbnN0
IFN0cmluZyYgZnVsbFBhdGgpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERp
cmVjdG9yeVJlYWRlcihmaWxlU3lzdGVtLCBmdWxsUGF0aCkpOwotICAgIH0KLQotICAgIHZvaWQg
cmVhZEVudHJpZXMoUGFzc1JlZlB0cjxFbnRyaWVzQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9y
Q2FsbGJhY2s+ID0gMCk7Ci0KLSAgICBET01GaWxlU3lzdGVtKiBmaWxlc3lzdGVtKCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8RE9NRmlsZVN5c3RlbSo+KG1fZmlsZVN5c3RlbS5nZXQoKSk7
IH0KLQotcHJpdmF0ZToKLSAgICBEaXJlY3RvcnlSZWFkZXIoUGFzc1JlZlB0cjxET01GaWxlU3lz
dGVtQmFzZT4sIGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpOwotfTsKLQotfQotCi0jZW5kaWYgLy8g
RU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jZW5kaWYgLy8gRGlyZWN0b3J5UmVhZGVyX2gKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFkZXIuaWRsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlS
ZWFkZXIuaWRsCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zp
bGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMSwzOCArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgot
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0g
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAotICAgIENvbmRpdGlvbmFsPUZJTEVfU1lTVEVN
LAotICAgIEpTTm9TdGF0aWNUYWJsZXMsCi0gICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZQot
XSBpbnRlcmZhY2UgRGlyZWN0b3J5UmVhZGVyIHsKLSAgICB2b2lkIHJlYWRFbnRyaWVzKEVudHJp
ZXNDYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2ssIG9wdGlvbmFsIEVycm9yQ2FsbGJhY2sgZXJyb3JD
YWxsYmFjayk7Ci19OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0Rp
cmVjdG9yeVJlYWRlckJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyQmFzZS5oCShyZXZpc2lvbiAxNTY2OTEpCisrKyBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyQmFzZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDY4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIERpcmVjdG9yeVJlYWRlckJhc2Vf
aAotI2RlZmluZSBEaXJlY3RvcnlSZWFkZXJCYXNlX2gKLQotI2lmIEVOQUJMRShGSUxFX1NZU1RF
TSkKLQotI2luY2x1ZGUgIkRPTUZpbGVTeXN0ZW1CYXNlLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIERpcmVjdG9yeVJl
YWRlckJhc2UgOiBwdWJsaWMgUmVmQ291bnRlZDxEaXJlY3RvcnlSZWFkZXJCYXNlPiB7Ci1wdWJs
aWM6Ci0gICAgRE9NRmlsZVN5c3RlbUJhc2UqIGZpbGVzeXN0ZW0oKSBjb25zdCB7IHJldHVybiBt
X2ZpbGVTeXN0ZW0uZ2V0KCk7IH0KLSAgICB2b2lkIHNldEhhc01vcmVFbnRyaWVzKGJvb2wgaGFz
TW9yZUVudHJpZXMpIHsgbV9oYXNNb3JlRW50cmllcyA9IGhhc01vcmVFbnRyaWVzOyB9Ci0KLXBy
b3RlY3RlZDoKLSAgICBEaXJlY3RvcnlSZWFkZXJCYXNlKFBhc3NSZWZQdHI8RE9NRmlsZVN5c3Rl
bUJhc2U+IGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpCi0gICAgICAgIDogbV9m
aWxlU3lzdGVtKGZpbGVTeXN0ZW0pCi0gICAgICAgICwgbV9mdWxsUGF0aChmdWxsUGF0aCkKLSAg
ICAgICAgLCBtX2hhc01vcmVFbnRyaWVzKHRydWUpCi0gICAgewotICAgIH0KLQotICAgIFJlZlB0
cjxET01GaWxlU3lzdGVtQmFzZT4gbV9maWxlU3lzdGVtOwotCi0gICAgLy8gVGhpcyBpcyBhIHZp
cnR1YWwgcGF0aC4KLSAgICBTdHJpbmcgbV9mdWxsUGF0aDsKLQotICAgIGJvb2wgbV9oYXNNb3Jl
RW50cmllczsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJM
RShGSUxFX1NZU1RFTSkKLQotI2VuZGlmIC8vIERpcmVjdG9yeVJlYWRlckJhc2VfaApJbmRleDog
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlclN5bmMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3Rv
cnlSZWFkZXJTeW5jLmNwcAkocmV2aXNpb24gMTU2NjkxKQorKysgU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlclN5bmMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDY4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAq
IG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0g
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRGlyZWN0b3J5UmVh
ZGVyU3luYy5oIgotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jaW5jbHVkZSAiRGlyZWN0
b3J5RW50cnkuaCIKLSNpbmNsdWRlICJEaXJlY3RvcnlFbnRyeVN5bmMuaCIKLSNpbmNsdWRlICJF
bnRyeUFycmF5U3luYy5oIgotI2luY2x1ZGUgIkVudHJ5U3luYy5oIgotI2luY2x1ZGUgIkZpbGVF
bnRyeVN5bmMuaCIKLSNpbmNsdWRlICJGaWxlRXhjZXB0aW9uLmgiCi0jaW5jbHVkZSAiU3luY0Nh
bGxiYWNrSGVscGVyLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotRGlyZWN0b3J5UmVhZGVy
U3luYzo6RGlyZWN0b3J5UmVhZGVyU3luYyhQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW1CYXNlPiBm
aWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKQotICAgIDogRGlyZWN0b3J5UmVhZGVy
QmFzZShmaWxlU3lzdGVtLCBmdWxsUGF0aCkKLXsKLX0KLQotUGFzc1JlZlB0cjxFbnRyeUFycmF5
U3luYz4gRGlyZWN0b3J5UmVhZGVyU3luYzo6cmVhZEVudHJpZXMoRXhjZXB0aW9uQ29kZSYgZWMp
Ci17Ci0gICAgZWMgPSAwOwotICAgIGlmICghbV9oYXNNb3JlRW50cmllcykKLSAgICAgICAgcmV0
dXJuIEVudHJ5QXJyYXlTeW5jOjpjcmVhdGUoKTsKLQotICAgIEVudHJpZXNTeW5jQ2FsbGJhY2tI
ZWxwZXIgaGVscGVyKG1fZmlsZVN5c3RlbS0+YXN5bmNGaWxlU3lzdGVtKCkpOwotICAgIGlmICgh
bV9maWxlU3lzdGVtLT5yZWFkRGlyZWN0b3J5KHRoaXMsIG1fZnVsbFBhdGgsIGhlbHBlci5zdWNj
ZXNzQ2FsbGJhY2soKSwgaGVscGVyLmVycm9yQ2FsbGJhY2soKSkpIHsKLSAgICAgICAgZWMgPSBG
aWxlRXhjZXB0aW9uOjpJTlZBTElEX01PRElGSUNBVElPTl9FUlI7Ci0gICAgICAgIHNldEhhc01v
cmVFbnRyaWVzKGZhbHNlKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIHJldHVybiBo
ZWxwZXIuZ2V0UmVzdWx0KGVjKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UKLQotI2VuZGlmIC8vIEVO
QUJMRShGSUxFX1NZU1RFTSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3Rl
bS9EaXJlY3RvcnlSZWFkZXJTeW5jLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlclN5bmMuaAkocmV2aXNpb24gMTU2NjkxKQor
KysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlclN5bmMu
aAkod29ya2luZyBjb3B5KQpAQCAtMSw2NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
LSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
LSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBEaXJlY3RvcnlSZWFkZXJT
eW5jX2gKLSNkZWZpbmUgRGlyZWN0b3J5UmVhZGVyU3luY19oCi0KLSNpZiBFTkFCTEUoRklMRV9T
WVNURU0pCi0KLSNpbmNsdWRlICJEaXJlY3RvcnlSZWFkZXJCYXNlLmgiCi0jaW5jbHVkZSA8d3Rm
L1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEVudHJ5
QXJyYXlTeW5jOwotCi10eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwotCi1jbGFzcyBEaXJlY3Rv
cnlSZWFkZXJTeW5jIDogcHVibGljIERpcmVjdG9yeVJlYWRlckJhc2UgewotcHVibGljOgotICAg
IHN0YXRpYyBQYXNzUmVmUHRyPERpcmVjdG9yeVJlYWRlclN5bmM+IGNyZWF0ZShQYXNzUmVmUHRy
PERPTUZpbGVTeXN0ZW1CYXNlPiBmaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBEaXJlY3RvcnlSZWFkZXJTeW5jKGZp
bGVTeXN0ZW0sIGZ1bGxQYXRoKSk7Ci0gICAgfQotCi0gICAgUGFzc1JlZlB0cjxFbnRyeUFycmF5
U3luYz4gcmVhZEVudHJpZXMoRXhjZXB0aW9uQ29kZSYpOwotCi1wcml2YXRlOgotICAgIERpcmVj
dG9yeVJlYWRlclN5bmMoUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtQmFzZT4sIGNvbnN0IFN0cmlu
ZyYgZnVsbFBhdGgpOwotfTsKLQotfSAvLyBuYW1lc3BhY2UKLQotI2VuZGlmIC8vIEVOQUJMRShG
SUxFX1NZU1RFTSkKLQotI2VuZGlmIC8vIERpcmVjdG9yeVJlYWRlclN5bmNfaApJbmRleDogU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlclN5bmMuaWRsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlS
ZWFkZXJTeW5jLmlkbAkocmV2aXNpb24gMTU2NjkxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlclN5bmMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDM4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1l
dDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi1bCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCi0gICAgQ29uZGl0aW9uYWw9RklM
RV9TWVNURU0sCi0gICAgSlNOb1N0YXRpY1RhYmxlcywKLSAgICBJbXBsZW1lbnRhdGlvbkxhY2tz
VlRhYmxlCi1dIGludGVyZmFjZSBEaXJlY3RvcnlSZWFkZXJTeW5jIHsKLSAgICBbUmFpc2VzRXhj
ZXB0aW9uXSBFbnRyeUFycmF5U3luYyByZWFkRW50cmllcygpOwotfTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyaWVzQ2FsbGJhY2suaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cmllc0NhbGxiYWNrLmgJKHJl
dmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRy
aWVzQ2FsbGJhY2suaAkod29ya2luZyBjb3B5KQpAQCAtMSw1MiArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1
dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
LSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBFbnRy
aWVzQ2FsbGJhY2tfaAotI2RlZmluZSBFbnRyaWVzQ2FsbGJhY2tfaAotCi0jaWYgRU5BQkxFKEZJ
TEVfU1lTVEVNKQotCi0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1jbGFzcyBFbnRyeUFycmF5OwotCi1jbGFzcyBFbnRyaWVzQ2FsbGJhY2sgOiBw
dWJsaWMgUmVmQ291bnRlZDxFbnRyaWVzQ2FsbGJhY2s+IHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFs
IH5FbnRyaWVzQ2FsbGJhY2soKSB7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlRXZlbnQoRW50
cnlBcnJheSopID0gMDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlCi0KLSNlbmRpZiAvLyBFTkFCTEUo
RklMRV9TWVNURU0pCi0KLSNlbmRpZiAvLyBFbnRyaWVzQ2FsbGJhY2tfaApJbmRleDogU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0VudHJpZXNDYWxsYmFjay5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0VudHJpZXNDYWxsYmFjay5p
ZGwJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3Rl
bS9FbnRyaWVzQ2FsbGJhY2suaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xLDM1ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICog
ZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1bCi0g
ICAgQ29uZGl0aW9uYWw9RklMRV9TWVNURU0sCi1dIGNhbGxiYWNrIGludGVyZmFjZSBFbnRyaWVz
Q2FsbGJhY2sgewotICAgIGJvb2xlYW4gaGFuZGxlRXZlbnQoRW50cnlBcnJheSBlbnRyaWVzKTsK
LX07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnkuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeS5jcHAJ
KHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9F
bnRyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsOTEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24u
Ci0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiRW50cnkuaCIKLQotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2luY2x1
ZGUgIkFzeW5jRmlsZVN5c3RlbS5oIgotI2luY2x1ZGUgIkRpcmVjdG9yeUVudHJ5LmgiCi0jaW5j
bHVkZSAiRW50cnlDYWxsYmFjay5oIgotI2luY2x1ZGUgIkVycm9yQ2FsbGJhY2suaCIKLSNpbmNs
dWRlICJGaWxlRXJyb3IuaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtQ2FsbGJhY2tzLmgiCi0jaW5j
bHVkZSAiTWV0YWRhdGFDYWxsYmFjay5oIgotI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuaCIKLSNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgotI2luY2x1ZGUgIlZvaWRDYWxsYmFj
ay5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1FbnRyeTo6RW50cnkoUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtQmFzZT4gZmls
ZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBmdWxsUGF0aCkKLSAgICA6IEVudHJ5QmFzZShmaWxlU3lz
dGVtLCBmdWxsUGF0aCkKLXsKLX0KLQotdm9pZCBFbnRyeTo6Z2V0TWV0YWRhdGEoUGFzc1JlZlB0
cjxNZXRhZGF0YUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxs
YmFjaz4gZXJyb3JDYWxsYmFja1JlZikKLXsKLSAgICBSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJy
b3JDYWxsYmFjayhlcnJvckNhbGxiYWNrUmVmKTsKLSAgICBpZiAoIW1fZmlsZVN5c3RlbS0+Z2V0
TWV0YWRhdGEodGhpcywgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKSkKLSAgICAgICAg
ZmlsZXN5c3RlbSgpLT5zY2hlZHVsZUNhbGxiYWNrKGVycm9yQ2FsbGJhY2sucmVsZWFzZSgpLCBG
aWxlRXJyb3I6OmNyZWF0ZShGaWxlRXJyb3I6OklOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUikpOwot
fQotCi12b2lkIEVudHJ5Ojptb3ZlVG8oUGFzc1JlZlB0cjxEaXJlY3RvcnlFbnRyeT4gcGFyZW50
LCBjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0Nh
bGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2tSZWYpIGNvbnN0
Ci17Ci0gICAgUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2soZXJyb3JDYWxsYmFj
a1JlZik7Ci0gICAgaWYgKCFtX2ZpbGVTeXN0ZW0tPm1vdmUodGhpcywgcGFyZW50LmdldCgpLCBu
YW1lLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spKQotICAgICAgICBmaWxlc3lzdGVt
KCktPnNjaGVkdWxlQ2FsbGJhY2soZXJyb3JDYWxsYmFjay5yZWxlYXNlKCksIEZpbGVFcnJvcjo6
Y3JlYXRlKEZpbGVFcnJvcjo6SU5WQUxJRF9NT0RJRklDQVRJT05fRVJSKSk7Ci19Ci0KLXZvaWQg
RW50cnk6OmNvcHlUbyhQYXNzUmVmUHRyPERpcmVjdG9yeUVudHJ5PiBwYXJlbnQsIGNvbnN0IFN0
cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBh
c3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFja1JlZikgY29uc3QKLXsKLSAgICBS
ZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayhlcnJvckNhbGxiYWNrUmVmKTsKLSAg
ICBpZiAoIW1fZmlsZVN5c3RlbS0+Y29weSh0aGlzLCBwYXJlbnQuZ2V0KCksIG5hbWUsIHN1Y2Nl
c3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykpCi0gICAgICAgIGZpbGVzeXN0ZW0oKS0+c2NoZWR1
bGVDYWxsYmFjayhlcnJvckNhbGxiYWNrLnJlbGVhc2UoKSwgRmlsZUVycm9yOjpjcmVhdGUoRmls
ZUVycm9yOjpJTlZBTElEX01PRElGSUNBVElPTl9FUlIpKTsKLX0KLQotdm9pZCBFbnRyeTo6cmVt
b3ZlKFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8
RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFja1JlZikgY29uc3QKLXsKLSAgICBSZWZQdHI8RXJy
b3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayhlcnJvckNhbGxiYWNrUmVmKTsKLSAgICBpZiAoIW1f
ZmlsZVN5c3RlbS0+cmVtb3ZlKHRoaXMsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykp
Ci0gICAgICAgIGZpbGVzeXN0ZW0oKS0+c2NoZWR1bGVDYWxsYmFjayhlcnJvckNhbGxiYWNrLnJl
bGVhc2UoKSwgRmlsZUVycm9yOjpjcmVhdGUoRmlsZUVycm9yOjpJTlZBTElEX01PRElGSUNBVElP
Tl9FUlIpKTsKLX0KLQotdm9pZCBFbnRyeTo6Z2V0UGFyZW50KFBhc3NSZWZQdHI8RW50cnlDYWxs
YmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2Fs
bGJhY2tSZWYpIGNvbnN0Ci17Ci0gICAgUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJh
Y2soZXJyb3JDYWxsYmFja1JlZik7Ci0gICAgaWYgKCFtX2ZpbGVTeXN0ZW0tPmdldFBhcmVudCh0
aGlzLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spKQotICAgICAgICBmaWxlc3lzdGVt
KCktPnNjaGVkdWxlQ2FsbGJhY2soZXJyb3JDYWxsYmFjay5yZWxlYXNlKCksIEZpbGVFcnJvcjo6
Y3JlYXRlKEZpbGVFcnJvcjo6SU5WQUxJRF9NT0RJRklDQVRJT05fRVJSKSk7Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeS5oCShyZXZpc2lvbiAxNTY2
OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnkuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw2OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBFbnRyeV9oCi0jZGVmaW5lIEVudHJ5X2gK
LQotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2luY2x1ZGUgIkRPTUZpbGVTeXN0ZW0uaCIK
LSNpbmNsdWRlICJFbnRyeUJhc2UuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3Mg
RGlyZWN0b3J5RW50cnk7Ci1jbGFzcyBFbnRyeUNhbGxiYWNrOwotY2xhc3MgRW50cnlTeW5jOwot
Y2xhc3MgRXJyb3JDYWxsYmFjazsKLWNsYXNzIE1ldGFkYXRhQ2FsbGJhY2s7Ci1jbGFzcyBWb2lk
Q2FsbGJhY2s7Ci0KLWNsYXNzIEVudHJ5IDogcHVibGljIEVudHJ5QmFzZSB7Ci1wdWJsaWM6Ci0g
ICAgRE9NRmlsZVN5c3RlbSogZmlsZXN5c3RlbSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0
PERPTUZpbGVTeXN0ZW0qPihtX2ZpbGVTeXN0ZW0uZ2V0KCkpOyB9Ci0KLSAgICB2b2lkIGdldE1l
dGFkYXRhKFBhc3NSZWZQdHI8TWV0YWRhdGFDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrID0gMCwg
UGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrID0gMCk7Ci0gICAgdm9pZCBt
b3ZlVG8oUGFzc1JlZlB0cjxEaXJlY3RvcnlFbnRyeT4gcGFyZW50LCBjb25zdCBTdHJpbmcmIG5h
bWUgPSBTdHJpbmcoKSwgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2sg
PSAwLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2sgPSAwKSBjb25zdDsK
LSAgICB2b2lkIGNvcHlUbyhQYXNzUmVmUHRyPERpcmVjdG9yeUVudHJ5PiBwYXJlbnQsIGNvbnN0
IFN0cmluZyYgbmFtZSA9IFN0cmluZygpLCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nl
c3NDYWxsYmFjayA9IDAsIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayA9
IDApIGNvbnN0OwotICAgIHZvaWQgcmVtb3ZlKFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPiBzdWNj
ZXNzQ2FsbGJhY2sgPSAwLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2sg
PSAwKSBjb25zdDsKLSAgICB2b2lkIGdldFBhcmVudChQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+
IHN1Y2Nlc3NDYWxsYmFjayA9IDAsIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxs
YmFjayA9IDApIGNvbnN0OwotCi1wcm90ZWN0ZWQ6Ci0gICAgRW50cnkoUGFzc1JlZlB0cjxET01G
aWxlU3lzdGVtQmFzZT4sIGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpOwotfTsKLQotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jZW5kaWYg
Ly8gRW50cnlfaApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5
LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50
cnkuaWRsCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVz
eXN0ZW0vRW50cnkuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQ5ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJp
YnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1bCi0gICAgTm9J
bnRlcmZhY2VPYmplY3QsCi0gICAgQ29uZGl0aW9uYWw9RklMRV9TWVNURU0sCi0gICAgQ3VzdG9t
VG9KU09iamVjdCwKLSAgICBKU05vU3RhdGljVGFibGVzCi1dIGludGVyZmFjZSBFbnRyeSB7Ci0g
ICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gaXNGaWxlOwotICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBib29sZWFuIGlzRGlyZWN0b3J5OwotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJp
bmcgbmFtZTsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGZ1bGxQYXRoOwotICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBET01GaWxlU3lzdGVtIGZpbGVzeXN0ZW07Ci0KLSAgICB2b2lk
IGdldE1ldGFkYXRhKE1ldGFkYXRhQ2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNrLCBvcHRpb25hbCBF
cnJvckNhbGxiYWNrIGVycm9yQ2FsbGJhY2spOwotICAgIHZvaWQgbW92ZVRvKERpcmVjdG9yeUVu
dHJ5IHBhcmVudCwgW1RyZWF0TnVsbEFzPU51bGxTdHJpbmcsIFRyZWF0VW5kZWZpbmVkQXM9TnVs
bFN0cmluZ10gb3B0aW9uYWwgRE9NU3RyaW5nIG5hbWUsIG9wdGlvbmFsIEVudHJ5Q2FsbGJhY2sg
c3VjY2Vzc0NhbGxiYWNrLCBvcHRpb25hbCBFcnJvckNhbGxiYWNrIGVycm9yQ2FsbGJhY2spOwot
ICAgIHZvaWQgY29weVRvKERpcmVjdG9yeUVudHJ5IHBhcmVudCwgW1RyZWF0TnVsbEFzPU51bGxT
dHJpbmcsIFRyZWF0VW5kZWZpbmVkQXM9TnVsbFN0cmluZ10gb3B0aW9uYWwgRE9NU3RyaW5nIG5h
bWUsIG9wdGlvbmFsIEVudHJ5Q2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNrLCBvcHRpb25hbCBFcnJv
ckNhbGxiYWNrIGVycm9yQ2FsbGJhY2spOwotICAgIERPTVN0cmluZyB0b1VSTCgpOwotICAgIHZv
aWQgcmVtb3ZlKFZvaWRDYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2ssIG9wdGlvbmFsIEVycm9yQ2Fs
bGJhY2sgZXJyb3JDYWxsYmFjayk7Ci0gICAgdm9pZCBnZXRQYXJlbnQob3B0aW9uYWwgRW50cnlD
YWxsYmFjayBzdWNjZXNzQ2FsbGJhY2ssIG9wdGlvbmFsIEVycm9yQ2FsbGJhY2sgZXJyb3JDYWxs
YmFjayk7Ci19OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5
QXJyYXkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3Rl
bS9FbnRyeUFycmF5LmNwcAkocmV2aXNpb24gMTU2NjkxKQorKysgU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9maWxlc3lzdGVtL0VudHJ5QXJyYXkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUxICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAq
Ci0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
LSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRW50cnlBcnJheS5oIgotCi0jaWYg
RU5BQkxFKEZJTEVfU1lTVEVNKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUVudHJ5QXJyYXk6
OkVudHJ5QXJyYXkoKQotewotfQotCi1FbnRyeSogRW50cnlBcnJheTo6aXRlbSh1bnNpZ25lZCBp
bmRleCkgY29uc3QKLXsKLSAgICBpZiAoaW5kZXggPj0gbV9lbnRyaWVzLnNpemUoKSkKLSAgICAg
ICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIG1fZW50cmllc1tpbmRleF0uZ2V0KCk7Ci19Ci0KLX0g
Ly8gbmFtZXNwYWNlCi0KLSNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlBcnJheS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeUFycmF5LmgJKHJldmlzaW9u
IDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeUFycmF5
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNjcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
Ci0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
Ci0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgRW50cnlBcnJheV9oCi0j
ZGVmaW5lIEVudHJ5QXJyYXlfaAotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jaW5jbHVk
ZSAiRW50cnkuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgRW50cnlBcnJheSA6
IHB1YmxpYyBSZWZDb3VudGVkPEVudHJ5QXJyYXk+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxFbnRyeUFycmF5PiBjcmVhdGUoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBFbnRyeUFycmF5KCkpOwotICAgIH0KLQotICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNv
bnN0IHsgcmV0dXJuIG1fZW50cmllcy5zaXplKCk7IH0KLSAgICBFbnRyeSogaXRlbSh1bnNpZ25l
ZCBpbmRleCkgY29uc3Q7Ci0gICAgdm9pZCBzZXQodW5zaWduZWQgaW5kZXgsIFBhc3NSZWZQdHI8
RW50cnk+KTsKLQotICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fZW50cmllcy5p
c0VtcHR5KCk7IH0KLSAgICB2b2lkIGNsZWFyKCkgeyBtX2VudHJpZXMuY2xlYXIoKTsgfQotICAg
IHZvaWQgYXBwZW5kKFBhc3NSZWZQdHI8RW50cnk+IGVudHJ5KSB7IG1fZW50cmllcy5hcHBlbmQo
ZW50cnkpOyB9Ci0KLXByaXZhdGU6Ci0gICAgRW50cnlBcnJheSgpOwotCi0gICAgVmVjdG9yPFJl
ZlB0cjxFbnRyeT4gPiBtX2VudHJpZXM7Ci19OwotCi19IC8vIG5hbWVzcGFjZQotCi0jZW5kaWYg
Ly8gRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jZW5kaWYgLy8gRW50cnlBcnJheV9oCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlBcnJheS5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5QXJyYXkuaWRsCShy
ZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50
cnlBcnJheS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTEsMzkgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRp
b24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0g
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLVsKLSAgICBOb0ludGVy
ZmFjZU9iamVjdCwKLSAgICBDb25kaXRpb25hbD1GSUxFX1NZU1RFTSwKLSAgICBKU05vU3RhdGlj
VGFibGVzLAotICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUKLV0gaW50ZXJmYWNlIEVudHJ5
QXJyYXkgewotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKLSAg
ICBnZXR0ZXIgRW50cnkgaXRlbShbSXNJbmRleF0gdW5zaWduZWQgbG9uZyBpbmRleCk7Ci19OwpJ
bmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5QXJyYXlTeW5jLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlB
cnJheVN5bmMuY3BwCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZpbGVzeXN0ZW0vRW50cnlBcnJheVN5bmMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYzICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAq
Ci0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
LSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRW50cnlBcnJheVN5bmMuaCIKLQot
I2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2luY2x1ZGUgIkVudHJ5QXJyYXkuaCIKLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1QYXNzUmVmUHRyPEVudHJ5QXJyYXlTeW5jPiBFbnRyeUFycmF5
U3luYzo6Y3JlYXRlKEVudHJ5QXJyYXkqIGVudHJpZXMpCi17Ci0gICAgUmVmUHRyPEVudHJ5QXJy
YXlTeW5jPiBlbnRyaWVzU3luYyA9IGFkb3B0UmVmKG5ldyBFbnRyeUFycmF5U3luYygpKTsKLSAg
ICBpZiAoZW50cmllcykgewotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZW50cmll
cy0+bGVuZ3RoKCk7ICsraSkKLSAgICAgICAgICAgIGVudHJpZXNTeW5jLT5hcHBlbmQoRW50cnlT
eW5jOjpjcmVhdGUoZW50cmllcy0+aXRlbShpKSkpOwotICAgIH0KLSAgICByZXR1cm4gZW50cmll
c1N5bmMucmVsZWFzZSgpOwotfQotCi1FbnRyeUFycmF5U3luYzo6RW50cnlBcnJheVN5bmMoKQot
ewotfQotCi1FbnRyeVN5bmMqIEVudHJ5QXJyYXlTeW5jOjppdGVtKHVuc2lnbmVkIGluZGV4KSBj
b25zdAotewotICAgIGlmIChpbmRleCA+PSBtX2VudHJpZXMuc2l6ZSgpKQotICAgICAgICByZXR1
cm4gMDsKLSAgICByZXR1cm4gbV9lbnRyaWVzW2luZGV4XS5nZXQoKTsKLX0KLQotfQotCi0jZW5k
aWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
aWxlc3lzdGVtL0VudHJ5QXJyYXlTeW5jLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5QXJyYXlTeW5jLmgJKHJldmlzaW9uIDE1NjY5MSkKKysr
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeUFycmF5U3luYy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDcwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQot
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEVudHJ5QXJyYXlTeW5jX2gKLSNkZWZp
bmUgRW50cnlBcnJheVN5bmNfaAotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jaW5jbHVk
ZSAiRW50cnlTeW5jLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEVudHJ5QXJy
YXk7Ci0KLWNsYXNzIEVudHJ5QXJyYXlTeW5jIDogcHVibGljIFJlZkNvdW50ZWQ8RW50cnlBcnJh
eVN5bmM+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxFbnRyeUFycmF5U3luYz4g
Y3JlYXRlKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRW50cnlBcnJheVN5
bmMoKSk7Ci0gICAgfQotCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8RW50cnlBcnJheVN5bmM+IGNy
ZWF0ZShFbnRyeUFycmF5Kik7Ci0KLSAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJldHVy
biBtX2VudHJpZXMuc2l6ZSgpOyB9Ci0gICAgRW50cnlTeW5jKiBpdGVtKHVuc2lnbmVkIGluZGV4
KSBjb25zdDsKLQotICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fZW50cmllcy5p
c0VtcHR5KCk7IH0KLSAgICB2b2lkIGNsZWFyKCkgeyBtX2VudHJpZXMuY2xlYXIoKTsgfQotICAg
IHZvaWQgYXBwZW5kKFBhc3NSZWZQdHI8RW50cnlTeW5jPiBlbnRyeSkgeyBtX2VudHJpZXMuYXBw
ZW5kKGVudHJ5KTsgfQotCi1wcml2YXRlOgotICAgIEVudHJ5QXJyYXlTeW5jKCk7Ci0KLSAgICBW
ZWN0b3I8UmVmUHRyPEVudHJ5U3luYz4gPiBtX2VudHJpZXM7Ci19OwotCi19Ci0KLSNlbmRpZiAv
LyBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNlbmRpZiAvLyBFbnRyeUFycmF5U3luY19oCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlBcnJheVN5bmMuaWRsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeUFycmF5
U3luYy5pZGwJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmls
ZXN5c3RlbS9FbnRyeUFycmF5U3luYy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTEsMzkgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
Ci0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LVsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKLSAgICBDb25kaXRpb25hbD1GSUxFX1NZU1RFTSwK
LSAgICBKU05vU3RhdGljVGFibGVzLAotICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUKLV0g
aW50ZXJmYWNlIEVudHJ5QXJyYXlTeW5jIHsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWdu
ZWQgbG9uZyBsZW5ndGg7Ci0gICAgZ2V0dGVyIEVudHJ5U3luYyBpdGVtKFtJc0luZGV4XSB1bnNp
Z25lZCBsb25nIGluZGV4KTsKLX07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVz
eXN0ZW0vRW50cnlCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZpbGVzeXN0ZW0vRW50cnlCYXNlLmNwcAkocmV2aXNpb24gMTU2NjkxKQorKysgU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5QmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNjcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICog
bWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJFbnRyeUJhc2UuaCIK
LQotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2luY2x1ZGUgIkFzeW5jRmlsZVN5c3RlbS5o
IgotI2luY2x1ZGUgIkRPTUZpbGVQYXRoLmgiCi0jaW5jbHVkZSAiRE9NRmlsZVN5c3RlbUJhc2Uu
aCIKLSNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRy
Lmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotRW50cnlCYXNlOjpFbnRyeUJhc2UoUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtQmFzZT4g
ZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBmdWxsUGF0aCkKLSAgICA6IG1fZmlsZVN5c3RlbShm
aWxlU3lzdGVtKQotICAgICwgbV9mdWxsUGF0aChmdWxsUGF0aCkKLSAgICAsIG1fbmFtZShET01G
aWxlUGF0aDo6Z2V0TmFtZShmdWxsUGF0aCkpCi17Ci19Ci0KLUVudHJ5QmFzZTo6fkVudHJ5QmFz
ZSgpCi17Ci19Ci0KLVN0cmluZyBFbnRyeUJhc2U6OnRvVVJMKCkgY29uc3QKLXsKLSAgICAvLyBT
b21lIGZpbGVzeXN0ZW0gdHlwZSBtYXkgbm90IHN1cHBvcnQgdG9VUkwuCi0gICAgaWYgKCFtX2Zp
bGVTeXN0ZW0tPnN1cHBvcnRzVG9VUkwoKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0g
ICAgcmV0dXJuIG1fZmlsZVN5c3RlbS0+Y3JlYXRlRmlsZVN5c3RlbVVSTCh0aGlzKS5zdHJpbmco
KTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKEZJTEVf
U1lTVEVNKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5QmFz
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRy
eUJhc2UuaAkocmV2aXNpb24gMTU2NjkxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxl
c3lzdGVtL0VudHJ5QmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDc1ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlz
dHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwot
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVm
IEVudHJ5QmFzZV9oCi0jZGVmaW5lIEVudHJ5QmFzZV9oCi0KLSNpZiBFTkFCTEUoRklMRV9TWVNU
RU0pCi0KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIERPTUZpbGVTeXN0ZW1C
YXNlOwotY2xhc3MgRW50cnlTeW5jOwotCi0vLyBBIGNvbW1vbiBiYXNlIGNsYXNzIGZvciBFbnRy
eSBhbmQgRW50cnlTeW5jLgotY2xhc3MgRW50cnlCYXNlIDogcHVibGljIFJlZkNvdW50ZWQ8RW50
cnlCYXNlPiB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+RW50cnlCYXNlKCk7Ci0KLSAgICBET01G
aWxlU3lzdGVtQmFzZSogZmlsZXN5c3RlbSgpIGNvbnN0IHsgcmV0dXJuIG1fZmlsZVN5c3RlbS5n
ZXQoKTsgfQotCi0gICAgdmlydHVhbCBib29sIGlzRmlsZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9Ci0gICAgdmlydHVhbCBib29sIGlzRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KLQotICAgIGNvbnN0IFN0cmluZyYgZnVsbFBhdGgoKSBjb25zdCB7IHJldHVybiBtX2Z1bGxQ
YXRoOyB9Ci0gICAgY29uc3QgU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9
Ci0KLSAgICBTdHJpbmcgdG9VUkwoKSBjb25zdDsKLQotcHJvdGVjdGVkOgotICAgIEVudHJ5QmFz
ZShQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW1CYXNlPiwgY29uc3QgU3RyaW5nJiBmdWxsUGF0aCk7
Ci0gICAgZnJpZW5kIGNsYXNzIEVudHJ5U3luYzsKLQotICAgIFJlZlB0cjxET01GaWxlU3lzdGVt
QmFzZT4gbV9maWxlU3lzdGVtOwotCi0gICAgLy8gVGhpcyBpcyBhIHZpcnR1YWwgcGF0aC4KLSAg
ICBTdHJpbmcgbV9mdWxsUGF0aDsKLQotICAgIFN0cmluZyBtX25hbWU7Ci19OwotCi19Ci0KLSNl
bmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNlbmRpZiAvLyBFbnRyeUJhc2VfaApJbmRl
eDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5Q2FsbGJhY2suaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlDYWxsYmFj
ay5oCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0
ZW0vRW50cnlDYWxsYmFjay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUyICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlz
dHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwot
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVm
IEVudHJ5Q2FsbGJhY2tfaAotI2RlZmluZSBFbnRyeUNhbGxiYWNrX2gKLQotI2lmIEVOQUJMRShG
SUxFX1NZU1RFTSkKLQotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotY2xhc3MgRW50cnk7Ci0KLWNsYXNzIEVudHJ5Q2FsbGJhY2sgOiBwdWJsaWMg
UmVmQ291bnRlZDxFbnRyeUNhbGxiYWNrPiB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+RW50cnlD
YWxsYmFjaygpIHsgfQotICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVFdmVudChFbnRyeSopID0gMDsK
LX07Ci0KLX0gLy8gbmFtZXNwYWNlCi0KLSNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCi0K
LSNlbmRpZiAvLyBFbnRyeUNhbGxiYWNrX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmlsZXN5c3RlbS9FbnRyeUNhbGxiYWNrLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlDYWxsYmFjay5pZGwJKHJldmlzaW9uIDE1NjY5MSkK
KysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeUNhbGxiYWNrLmlkbAko
d29ya2luZyBjb3B5KQpAQCAtMSwzNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEw
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAq
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotWwotICAgIENvbmRpdGlvbmFsPUZJTEVfU1lT
VEVNLAotXSBjYWxsYmFjayBpbnRlcmZhY2UgRW50cnlDYWxsYmFjayB7Ci0gICAgYm9vbGVhbiBo
YW5kbGVFdmVudChFbnRyeSBlbnRyeSk7Ci19OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9maWxlc3lzdGVtL0VudHJ5U3luYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5U3luYy5jcHAJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeVN5bmMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDExMiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
LSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkVudHJ5
U3luYy5oIgotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jaW5jbHVkZSAiRE9NRmlsZVBh
dGguaCIKLSNpbmNsdWRlICJET01GaWxlU3lzdGVtU3luYy5oIgotI2luY2x1ZGUgIkRpcmVjdG9y
eUVudHJ5LmgiCi0jaW5jbHVkZSAiRGlyZWN0b3J5RW50cnlTeW5jLmgiCi0jaW5jbHVkZSAiRmls
ZUVudHJ5U3luYy5oIgotI2luY2x1ZGUgIkZpbGVFeGNlcHRpb24uaCIKLSNpbmNsdWRlICJNZXRh
ZGF0YS5oIgotI2luY2x1ZGUgIlN5bmNDYWxsYmFja0hlbHBlci5oIgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLVBhc3NSZWZQdHI8RW50cnlTeW5jPiBFbnRyeVN5bmM6OmNyZWF0ZShFbnRyeUJh
c2UqIGVudHJ5KQotewotICAgIGlmIChlbnRyeS0+aXNGaWxlKCkpCi0gICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgRmlsZUVudHJ5U3luYyhlbnRyeS0+bV9maWxlU3lzdGVtLCBlbnRyeS0+bV9m
dWxsUGF0aCkpOwotICAgIHJldHVybiBhZG9wdFJlZihuZXcgRGlyZWN0b3J5RW50cnlTeW5jKGVu
dHJ5LT5tX2ZpbGVTeXN0ZW0sIGVudHJ5LT5tX2Z1bGxQYXRoKSk7Ci19Ci0KLVBhc3NSZWZQdHI8
TWV0YWRhdGE+IEVudHJ5U3luYzo6Z2V0TWV0YWRhdGEoRXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0g
ICAgZWMgPSAwOwotICAgIE1ldGFkYXRhU3luY0NhbGxiYWNrSGVscGVyIGhlbHBlcihtX2ZpbGVT
eXN0ZW0tPmFzeW5jRmlsZVN5c3RlbSgpKTsKLSAgICBpZiAoIW1fZmlsZVN5c3RlbS0+Z2V0TWV0
YWRhdGEodGhpcywgaGVscGVyLnN1Y2Nlc3NDYWxsYmFjaygpLCBoZWxwZXIuZXJyb3JDYWxsYmFj
aygpKSkgewotICAgICAgICBlYyA9IEZpbGVFeGNlcHRpb246OklOVkFMSURfTU9ESUZJQ0FUSU9O
X0VSUjsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIHJldHVybiBoZWxwZXIuZ2V0UmVz
dWx0KGVjKTsKLX0KLQotUGFzc1JlZlB0cjxFbnRyeVN5bmM+IEVudHJ5U3luYzo6bW92ZVRvKFBh
c3NSZWZQdHI8RGlyZWN0b3J5RW50cnlTeW5jPiBwYXJlbnQsIGNvbnN0IFN0cmluZyYgbmFtZSwg
RXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0Ci17Ci0gICAgZWMgPSAwOwotICAgIEVudHJ5U3luY0Nh
bGxiYWNrSGVscGVyIGhlbHBlcihtX2ZpbGVTeXN0ZW0tPmFzeW5jRmlsZVN5c3RlbSgpKTsKLSAg
ICBpZiAoIW1fZmlsZVN5c3RlbS0+bW92ZSh0aGlzLCBwYXJlbnQuZ2V0KCksIG5hbWUsIGhlbHBl
ci5zdWNjZXNzQ2FsbGJhY2soKSwgaGVscGVyLmVycm9yQ2FsbGJhY2soKSkpIHsKLSAgICAgICAg
ZWMgPSBGaWxlRXhjZXB0aW9uOjpJTlZBTElEX01PRElGSUNBVElPTl9FUlI7Ci0gICAgICAgIHJl
dHVybiAwOwotICAgIH0KLSAgICByZXR1cm4gaGVscGVyLmdldFJlc3VsdChlYyk7Ci19Ci0KLVBh
c3NSZWZQdHI8RW50cnlTeW5jPiBFbnRyeVN5bmM6OmNvcHlUbyhQYXNzUmVmUHRyPERpcmVjdG9y
eUVudHJ5U3luYz4gcGFyZW50LCBjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVj
KSBjb25zdAotewotICAgIGVjID0gMDsKLSAgICBFbnRyeVN5bmNDYWxsYmFja0hlbHBlciBoZWxw
ZXIobV9maWxlU3lzdGVtLT5hc3luY0ZpbGVTeXN0ZW0oKSk7Ci0gICAgaWYgKCFtX2ZpbGVTeXN0
ZW0tPmNvcHkodGhpcywgcGFyZW50LmdldCgpLCBuYW1lLCBoZWxwZXIuc3VjY2Vzc0NhbGxiYWNr
KCksIGhlbHBlci5lcnJvckNhbGxiYWNrKCkpKSB7Ci0gICAgICAgIGVjID0gRmlsZUV4Y2VwdGlv
bjo6SU5WQUxJRF9NT0RJRklDQVRJT05fRVJSOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0g
ICAgcmV0dXJuIGhlbHBlci5nZXRSZXN1bHQoZWMpOwotfQotCi12b2lkIEVudHJ5U3luYzo6cmVt
b3ZlKEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAotewotICAgIGVjID0gMDsKLSAgICBWb2lkU3lu
Y0NhbGxiYWNrSGVscGVyIGhlbHBlcihtX2ZpbGVTeXN0ZW0tPmFzeW5jRmlsZVN5c3RlbSgpKTsK
LSAgICBpZiAoIW1fZmlsZVN5c3RlbS0+cmVtb3ZlKHRoaXMsIGhlbHBlci5zdWNjZXNzQ2FsbGJh
Y2soKSwgaGVscGVyLmVycm9yQ2FsbGJhY2soKSkpIHsKLSAgICAgICAgZWMgPSBGaWxlRXhjZXB0
aW9uOjpJTlZBTElEX01PRElGSUNBVElPTl9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0g
ICAgaGVscGVyLmdldFJlc3VsdChlYyk7Ci19Ci0KLVBhc3NSZWZQdHI8RW50cnlTeW5jPiBFbnRy
eVN5bmM6OmdldFBhcmVudCgpIGNvbnN0Ci17Ci0gICAgLy8gU3luYyB2ZXJpb24gb2YgZ2V0UGFy
ZW50IGRvZXNuJ3QgdGhyb3cgZXhjZXB0aW9ucy4KLSAgICBTdHJpbmcgcGFyZW50UGF0aCA9IERP
TUZpbGVQYXRoOjpnZXREaXJlY3RvcnkoZnVsbFBhdGgoKSk7Ci0gICAgcmV0dXJuIERpcmVjdG9y
eUVudHJ5U3luYzo6Y3JlYXRlKG1fZmlsZVN5c3RlbSwgcGFyZW50UGF0aCk7Ci19Ci0KLUVudHJ5
U3luYzo6RW50cnlTeW5jKFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbUJhc2U+IGZpbGVTeXN0ZW0s
IGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpCi0gICAgOiBFbnRyeUJhc2UoZmlsZVN5c3RlbSwgZnVs
bFBhdGgpCi17Ci19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeVN5bmMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlTeW5jLmgJKHJldmlz
aW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeVN5
bmMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0g
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBFbnRyeVN5bmNfaAot
I2RlZmluZSBFbnRyeVN5bmNfaAotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jaW5jbHVk
ZSAiRE9NRmlsZVN5c3RlbVN5bmMuaCIKLSNpbmNsdWRlICJFbnRyeUJhc2UuaCIKLSNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBEaXJlY3Rv
cnlFbnRyeVN5bmM7Ci1jbGFzcyBNZXRhZGF0YTsKLQotdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29k
ZTsKLQotY2xhc3MgRW50cnlTeW5jIDogcHVibGljIEVudHJ5QmFzZSB7Ci1wdWJsaWM6Ci0gICAg
c3RhdGljIFBhc3NSZWZQdHI8RW50cnlTeW5jPiBjcmVhdGUoRW50cnlCYXNlKik7Ci0KLSAgICBE
T01GaWxlU3lzdGVtU3luYyogZmlsZXN5c3RlbSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0
PERPTUZpbGVTeXN0ZW1TeW5jKj4obV9maWxlU3lzdGVtLmdldCgpKTsgfQotCi0gICAgUGFzc1Jl
ZlB0cjxNZXRhZGF0YT4gZ2V0TWV0YWRhdGEoRXhjZXB0aW9uQ29kZSYpOwotICAgIFBhc3NSZWZQ
dHI8RW50cnlTeW5jPiBtb3ZlVG8oUGFzc1JlZlB0cjxEaXJlY3RvcnlFbnRyeVN5bmM+IHBhcmVu
dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJikgY29uc3Q7Ci0gICAgUGFzc1Jl
ZlB0cjxFbnRyeVN5bmM+IGNvcHlUbyhQYXNzUmVmUHRyPERpcmVjdG9yeUVudHJ5U3luYz4gcGFy
ZW50LCBjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKLSAgICB2b2lk
IHJlbW92ZShFeGNlcHRpb25Db2RlJikgY29uc3Q7Ci0gICAgUGFzc1JlZlB0cjxFbnRyeVN5bmM+
IGdldFBhcmVudCgpIGNvbnN0OwotCi1wcm90ZWN0ZWQ6Ci0gICAgRW50cnlTeW5jKFBhc3NSZWZQ
dHI8RE9NRmlsZVN5c3RlbUJhc2U+LCBjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKTsKLX07Ci0KLX0K
LQotI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2VuZGlmIC8vIEVudHJ5U3luY19o
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlTeW5jLmlkbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlTeW5j
LmlkbAkocmV2aXNpb24gMTU2NjkxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lz
dGVtL0VudHJ5U3luYy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTEsNDkgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0
cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0g
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLVsKLSAgICBO
b0ludGVyZmFjZU9iamVjdCwKLSAgICBDb25kaXRpb25hbD1GSUxFX1NZU1RFTSwKLSAgICBDdXN0
b21Ub0pTT2JqZWN0LAotICAgIEpTTm9TdGF0aWNUYWJsZXMKLV0gaW50ZXJmYWNlIEVudHJ5U3lu
YyB7Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gaXNGaWxlOwotICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBib29sZWFuIGlzRGlyZWN0b3J5OwotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBE
T01TdHJpbmcgbmFtZTsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGZ1bGxQYXRo
OwotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01GaWxlU3lzdGVtU3luYyBmaWxlc3lzdGVtOwot
Ci0gICAgW1JhaXNlc0V4Y2VwdGlvbl0gTWV0YWRhdGEgZ2V0TWV0YWRhdGEoKTsKLSAgICBbUmFp
c2VzRXhjZXB0aW9uXSBFbnRyeVN5bmMgbW92ZVRvKERpcmVjdG9yeUVudHJ5U3luYyBwYXJlbnQs
IFtUcmVhdE51bGxBcz1OdWxsU3RyaW5nLCBUcmVhdFVuZGVmaW5lZEFzPU51bGxTdHJpbmddIERP
TVN0cmluZyBuYW1lKTsKLSAgICBbUmFpc2VzRXhjZXB0aW9uXSBFbnRyeVN5bmMgY29weVRvKERp
cmVjdG9yeUVudHJ5U3luYyBwYXJlbnQsIFtUcmVhdE51bGxBcz1OdWxsU3RyaW5nLCBUcmVhdFVu
ZGVmaW5lZEFzPU51bGxTdHJpbmddIERPTVN0cmluZyBuYW1lKTsKLSAgICBET01TdHJpbmcgdG9V
UkwoKTsKLSAgICBbUmFpc2VzRXhjZXB0aW9uXSB2b2lkIHJlbW92ZSgpOwotICAgIERpcmVjdG9y
eUVudHJ5U3luYyBnZXRQYXJlbnQoKTsKLX07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZpbGVzeXN0ZW0vRXJyb3JDYWxsYmFjay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmlsZXN5c3RlbS9FcnJvckNhbGxiYWNrLmgJKHJldmlzaW9uIDE1NjY5MSkKKysr
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9FcnJvckNhbGxiYWNrLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEsNTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0g
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgRXJyb3JDYWxsYmFja19oCi0jZGVmaW5l
IEVycm9yQ2FsbGJhY2tfaAotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBGaWxlRXJy
b3I7Ci0KLWNsYXNzIEVycm9yQ2FsbGJhY2sgOiBwdWJsaWMgUmVmQ291bnRlZDxFcnJvckNhbGxi
YWNrPiB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+RXJyb3JDYWxsYmFjaygpIHsgfQotICAgIHZp
cnR1YWwgYm9vbCBoYW5kbGVFdmVudChGaWxlRXJyb3IqKSA9IDA7Ci19OwotCi19IC8vIG5hbWVz
cGFjZQotCi0jZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jZW5kaWYgLy8gRXJyb3JD
YWxsYmFja19oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRXJyb3JD
YWxsYmFjay5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lz
dGVtL0Vycm9yQ2FsbGJhY2suaWRsCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRXJyb3JDYWxsYmFjay5pZGwJKHdvcmtpbmcgY29weSkKQEAg
LTEsMzUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICog
bWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLVsKLSAgICBDb25kaXRpb25hbD1GSUxFX1NZU1RFTSwKLV0gY2FsbGJhY2sg
aW50ZXJmYWNlIEVycm9yQ2FsbGJhY2sgewotICAgIGJvb2xlYW4gaGFuZGxlRXZlbnQoRmlsZUVy
cm9yIGVycm9yKTsKLX07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0v
RmlsZUNhbGxiYWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxl
c3lzdGVtL0ZpbGVDYWxsYmFjay5oCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZUNhbGxiYWNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0
OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
Ci0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpZm5kZWYgRmlsZUNhbGxiYWNrX2gKLSNkZWZpbmUgRmlsZUNhbGxiYWNrX2gK
LQotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgRmlsZTsKLQotY2xhc3MgRmlsZUNhbGxi
YWNrIDogcHVibGljIFJlZkNvdW50ZWQ8RmlsZUNhbGxiYWNrPiB7Ci1wdWJsaWM6Ci0gICAgdmly
dHVhbCB+RmlsZUNhbGxiYWNrKCkgeyB9Ci0gICAgdmlydHVhbCBib29sIGhhbmRsZUV2ZW50KEZp
bGUqKSA9IDA7Ci19OwotCi19IC8vIG5hbWVzcGFjZQotCi0jZW5kaWYgLy8gRU5BQkxFKEZJTEVf
U1lTVEVNKQotCi0jZW5kaWYgLy8gRmlsZUNhbGxiYWNrX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlQ2FsbGJhY2suaWRsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlQ2FsbGJhY2suaWRsCShyZXZpc2lvbiAx
NTY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZUNhbGxiYWNr
LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMSwzNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0g
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotWwotICAgIENvbmRpdGlvbmFsPUZJ
TEVfU1lTVEVNLAotXSBjYWxsYmFjayBpbnRlcmZhY2UgRmlsZUNhbGxiYWNrIHsKLSAgICBib29s
ZWFuIGhhbmRsZUV2ZW50KEZpbGUgZmlsZSk7Ci19OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9maWxlc3lzdGVtL0ZpbGVFbnRyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVFbnRyeS5jcHAJKHJldmlzaW9uIDE1NjY5MSkKKysr
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlRW50cnkuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDYxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRmls
ZUVudHJ5LmgiCi0KLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNpbmNsdWRlICJET01GaWxl
U3lzdGVtLmgiCi0jaW5jbHVkZSAiRXJyb3JDYWxsYmFjay5oIgotI2luY2x1ZGUgIkZpbGUuaCIK
LSNpbmNsdWRlICJGaWxlQ2FsbGJhY2suaCIKLSNpbmNsdWRlICJGaWxlV3JpdGVyQ2FsbGJhY2su
aCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1GaWxlRW50cnk6OkZpbGVFbnRyeShQYXNzUmVm
UHRyPERPTUZpbGVTeXN0ZW1CYXNlPiBmaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIGZ1bGxQYXRo
KQotICAgIDogRW50cnkoZmlsZVN5c3RlbSwgZnVsbFBhdGgpCi17Ci19Ci0KLXZvaWQgRmlsZUVu
dHJ5OjpjcmVhdGVXcml0ZXIoUGFzc1JlZlB0cjxGaWxlV3JpdGVyQ2FsbGJhY2s+IHN1Y2Nlc3ND
YWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQotewotICAg
IGZpbGVzeXN0ZW0oKS0+Y3JlYXRlV3JpdGVyKHRoaXMsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JD
YWxsYmFjayk7Ci19Ci0KLXZvaWQgRmlsZUVudHJ5OjpmaWxlKFBhc3NSZWZQdHI8RmlsZUNhbGxi
YWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxs
YmFjaykKLXsKLSAgICBmaWxlc3lzdGVtKCktPmNyZWF0ZUZpbGUodGhpcywgc3VjY2Vzc0NhbGxi
YWNrLCBlcnJvckNhbGxiYWNrKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UKLQotI2VuZGlmIC8vIEVO
QUJMRShGSUxFX1NZU1RFTSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3Rl
bS9GaWxlRW50cnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVz
eXN0ZW0vRmlsZUVudHJ5LmgJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmlsZXN5c3RlbS9GaWxlRW50cnkuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2NCArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgot
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0g
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2lmbmRlZiBGaWxlRW50cnlfaAotI2RlZmluZSBGaWxlRW50cnlfaAotCi0jaWYgRU5BQkxF
KEZJTEVfU1lTVEVNKQotCi0jaW5jbHVkZSAiRW50cnkuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1jbGFzcyBET01GaWxlU3lzdGVtQmFzZTsKLWNsYXNzIEZpbGVDYWxsYmFjazsKLWNsYXNz
IEZpbGVXcml0ZXJDYWxsYmFjazsKLQotY2xhc3MgRmlsZUVudHJ5IDogcHVibGljIEVudHJ5IHsK
LXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxGaWxlRW50cnk+IGNyZWF0ZShQYXNzUmVm
UHRyPERPTUZpbGVTeXN0ZW1CYXNlPiBmaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIGZ1bGxQYXRo
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGaWxlRW50cnkoZmlsZVN5c3Rl
bSwgZnVsbFBhdGgpKTsKLSAgICB9Ci0KLSAgICB2b2lkIGNyZWF0ZVdyaXRlcihQYXNzUmVmUHRy
PEZpbGVXcml0ZXJDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gPSAwKTsKLSAg
ICB2b2lkIGZpbGUoUGFzc1JlZlB0cjxGaWxlQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2Fs
bGJhY2s+ID0gMCk7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgaXNGaWxlKCkgY29uc3QgeyByZXR1cm4g
dHJ1ZTsgfQotCi1wcml2YXRlOgotICAgIEZpbGVFbnRyeShQYXNzUmVmUHRyPERPTUZpbGVTeXN0
ZW1CYXNlPiwgY29uc3QgU3RyaW5nJiBmdWxsUGF0aCk7Ci19OwotCi19IC8vIG5hbWVzcGFjZQot
Ci0jZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jZW5kaWYgLy8gRmlsZUVudHJ5X2gK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlRW50cnkuaWRsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlRW50cnku
aWRsCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0
ZW0vRmlsZUVudHJ5LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMSw0MCArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3Ry
aWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotWwotICAgIE5v
SW50ZXJmYWNlT2JqZWN0LAotICAgIENvbmRpdGlvbmFsPUZJTEVfU1lTVEVNLAotICAgIEpTR2Vu
ZXJhdGVUb05hdGl2ZU9iamVjdCwKLSAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwKLSAgICBKU05v
U3RhdGljVGFibGVzCi1dIGludGVyZmFjZSBGaWxlRW50cnkgOiBFbnRyeSB7Ci0gICAgdm9pZCBj
cmVhdGVXcml0ZXIoRmlsZVdyaXRlckNhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjaywgb3B0aW9uYWwg
RXJyb3JDYWxsYmFjayBlcnJvckNhbGxiYWNrKTsKLSAgICB2b2lkIGZpbGUoRmlsZUNhbGxiYWNr
IHN1Y2Nlc3NDYWxsYmFjaywgb3B0aW9uYWwgRXJyb3JDYWxsYmFjayBlcnJvckNhbGxiYWNrKTsK
LX07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZUVudHJ5U3lu
Yy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0Zp
bGVFbnRyeVN5bmMuY3BwCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZpbGVzeXN0ZW0vRmlsZUVudHJ5U3luYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNTgg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0Ogot
ICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0g
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJGaWxlRW50cnlTeW5jLmgiCi0K
LSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNpbmNsdWRlICJGaWxlLmgiCi0jaW5jbHVkZSAi
RmlsZVdyaXRlclN5bmMuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1GaWxlRW50cnlTeW5j
OjpGaWxlRW50cnlTeW5jKFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbUJhc2U+IGZpbGVTeXN0ZW0s
IGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpCi0gICAgOiBFbnRyeVN5bmMoZmlsZVN5c3RlbSwgZnVs
bFBhdGgpCi17Ci19Ci0KLVBhc3NSZWZQdHI8RmlsZT4gRmlsZUVudHJ5U3luYzo6ZmlsZShFeGNl
cHRpb25Db2RlJiBlYykKLXsKLSAgICByZXR1cm4gZmlsZXN5c3RlbSgpLT5jcmVhdGVGaWxlKHRo
aXMsIGVjKTsKLX0KLQotUGFzc1JlZlB0cjxGaWxlV3JpdGVyU3luYz4gRmlsZUVudHJ5U3luYzo6
Y3JlYXRlV3JpdGVyKEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIHJldHVybiBmaWxlc3lzdGVt
KCktPmNyZWF0ZVdyaXRlcih0aGlzLCBlYyk7Ci19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShG
SUxFX1NZU1RFTSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxl
RW50cnlTeW5jLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lz
dGVtL0ZpbGVFbnRyeVN5bmMuaAkocmV2aXNpb24gMTU2NjkxKQorKysgU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVFbnRyeVN5bmMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2
NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6
Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
LSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2lmbmRlZiBGaWxlRW50cnlTeW5jX2gKLSNkZWZpbmUgRmlsZUVudHJ5U3luY19o
Ci0KLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNpbmNsdWRlICJFbnRyeVN5bmMuaCIKLSNp
bmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0j
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
Y2xhc3MgRmlsZTsKLWNsYXNzIEZpbGVXcml0ZXJTeW5jOwotCi1jbGFzcyBGaWxlRW50cnlTeW5j
IDogcHVibGljIEVudHJ5U3luYyB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8Rmls
ZUVudHJ5U3luYz4gY3JlYXRlKFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbUJhc2U+IGZpbGVTeXN0
ZW0sIGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IEZpbGVFbnRyeVN5bmMoZmlsZVN5c3RlbSwgZnVsbFBhdGgpKTsKLSAgICB9Ci0KLSAg
ICB2aXJ0dWFsIGJvb2wgaXNGaWxlKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotCi0gICAgUGFz
c1JlZlB0cjxGaWxlPiBmaWxlKEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBQYXNzUmVmUHRyPEZpbGVX
cml0ZXJTeW5jPiBjcmVhdGVXcml0ZXIoRXhjZXB0aW9uQ29kZSYpOwotCi1wcml2YXRlOgotICAg
IGZyaWVuZCBjbGFzcyBFbnRyeVN5bmM7Ci0gICAgRmlsZUVudHJ5U3luYyhQYXNzUmVmUHRyPERP
TUZpbGVTeXN0ZW1CYXNlPiwgY29uc3QgU3RyaW5nJiBmdWxsUGF0aCk7Ci19OwotCi19Ci0KLSNl
bmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNlbmRpZiAvLyBGaWxlRW50cnlTeW5jX2gK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlRW50cnlTeW5jLmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZUVu
dHJ5U3luYy5pZGwJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmlsZXN5c3RlbS9GaWxlRW50cnlTeW5jLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMSw0MCArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgot
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0g
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAotICAgIENvbmRpdGlvbmFsPUZJTEVfU1lTVEVN
LAotICAgIEpTR2VuZXJhdGVUb05hdGl2ZU9iamVjdCwKLSAgICBKU0dlbmVyYXRlVG9KU09iamVj
dCwKLSAgICBKU05vU3RhdGljVGFibGVzCi1dIGludGVyZmFjZSBGaWxlRW50cnlTeW5jIDogRW50
cnlTeW5jIHsKLSAgICBbUmFpc2VzRXhjZXB0aW9uXSBGaWxlIGZpbGUoKTsKLSAgICBbUmFpc2Vz
RXhjZXB0aW9uXSBGaWxlV3JpdGVyU3luYyBjcmVhdGVXcml0ZXIoKTsKLX07CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVN5c3RlbUNhbGxiYWNrLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVTeXN0ZW1DYWxs
YmFjay5oCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVz
eXN0ZW0vRmlsZVN5c3RlbUNhbGxiYWNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNTIgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
Ci0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpZm5kZWYgRmlsZVN5c3RlbUNhbGxiYWNrX2gKLSNkZWZpbmUgRmlsZVN5c3RlbUNhbGxiYWNr
X2gKLQotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgRE9NRmlsZVN5c3RlbTsKLQotY2xh
c3MgRmlsZVN5c3RlbUNhbGxiYWNrIDogcHVibGljIFJlZkNvdW50ZWQ8RmlsZVN5c3RlbUNhbGxi
YWNrPiB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+RmlsZVN5c3RlbUNhbGxiYWNrKCkgeyB9Ci0g
ICAgdmlydHVhbCBib29sIGhhbmRsZUV2ZW50KERPTUZpbGVTeXN0ZW0qKSA9IDA7Ci19OwotCi19
IC8vIG5hbWVzcGFjZQotCi0jZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jZW5kaWYg
Ly8gRmlsZVN5c3RlbUNhbGxiYWNrX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmls
ZXN5c3RlbS9GaWxlU3lzdGVtQ2FsbGJhY2suaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlU3lzdGVtQ2FsbGJhY2suaWRsCShyZXZpc2lvbiAx
NTY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVN5c3RlbUNh
bGxiYWNrLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMSwzNSArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlv
bi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotWwotICAgIENvbmRpdGlv
bmFsPUZJTEVfU1lTVEVNLAotXSBjYWxsYmFjayBpbnRlcmZhY2UgRmlsZVN5c3RlbUNhbGxiYWNr
IHsKLSAgICBib29sZWFuIGhhbmRsZUV2ZW50KERPTUZpbGVTeXN0ZW0gZmlsZVN5c3RlbSk7Ci19
OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVTeXN0ZW1DYWxs
YmFja3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3Rl
bS9GaWxlU3lzdGVtQ2FsbGJhY2tzLmNwcAkocmV2aXNpb24gMTU2NjkxKQorKysgU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVTeXN0ZW1DYWxsYmFja3MuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDI4NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkZp
bGVTeXN0ZW1DYWxsYmFja3MuaCIKLQotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2luY2x1
ZGUgIkFzeW5jRmlsZVN5c3RlbS5oIgotI2luY2x1ZGUgIkFzeW5jRmlsZVdyaXRlci5oIgotI2lu
Y2x1ZGUgIkRPTUZpbGVQYXRoLmgiCi0jaW5jbHVkZSAiRE9NRmlsZVN5c3RlbUJhc2UuaCIKLSNp
bmNsdWRlICJEaXJlY3RvcnlFbnRyeS5oIgotI2luY2x1ZGUgIkRpcmVjdG9yeVJlYWRlci5oIgot
I2luY2x1ZGUgIkVudHJpZXNDYWxsYmFjay5oIgotI2luY2x1ZGUgIkVudHJ5QXJyYXkuaCIKLSNp
bmNsdWRlICJFbnRyeUNhbGxiYWNrLmgiCi0jaW5jbHVkZSAiRXJyb3JDYWxsYmFjay5oIgotI2lu
Y2x1ZGUgIkZpbGVFbnRyeS5oIgotI2luY2x1ZGUgIkZpbGVFcnJvci5oIgotI2luY2x1ZGUgIkZp
bGVNZXRhZGF0YS5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW1DYWxsYmFjay5oIgotI2luY2x1ZGUg
IkZpbGVXcml0ZXJCYXNlLmgiCi0jaW5jbHVkZSAiRmlsZVdyaXRlckJhc2VDYWxsYmFjay5oIgot
I2luY2x1ZGUgIk1ldGFkYXRhLmgiCi0jaW5jbHVkZSAiTWV0YWRhdGFDYWxsYmFjay5oIgotI2lu
Y2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJWb2lkQ2FsbGJhY2su
aCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1GaWxlU3lzdGVtQ2FsbGJhY2tzQmFzZTo6Rmls
ZVN5c3RlbUNhbGxiYWNrc0Jhc2UoUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxi
YWNrKQotICAgIDogbV9lcnJvckNhbGxiYWNrKGVycm9yQ2FsbGJhY2spCi17Ci19Ci0KLUZpbGVT
eXN0ZW1DYWxsYmFja3NCYXNlOjp+RmlsZVN5c3RlbUNhbGxiYWNrc0Jhc2UoKQotewotfQotCi12
b2lkIEZpbGVTeXN0ZW1DYWxsYmFja3NCYXNlOjpkaWRGYWlsKGludCBjb2RlKQotewotICAgIGlm
IChtX2Vycm9yQ2FsbGJhY2spIHsKLSAgICAgICAgbV9lcnJvckNhbGxiYWNrLT5oYW5kbGVFdmVu
dChGaWxlRXJyb3I6OmNyZWF0ZShzdGF0aWNfY2FzdDxGaWxlRXJyb3I6OkVycm9yQ29kZT4oY29k
ZSkpLmdldCgpKTsKLSAgICAgICAgbV9lcnJvckNhbGxiYWNrLmNsZWFyKCk7Ci0gICAgfQotfQot
Ci0vLyBFbnRyeUNhbGxiYWNrcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLVBhc3NPd25QdHI8RW50cnlDYWxsYmFja3M+IEVu
dHJ5Q2FsbGJhY2tzOjpjcmVhdGUoUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2Fs
bGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaywgUGFzc1JlZlB0
cjxET01GaWxlU3lzdGVtQmFzZT4gZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBleHBlY3RlZFBh
dGgsIGJvb2wgaXNEaXJlY3RvcnkpCi17Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBFbnRyeUNh
bGxiYWNrcyhzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ssIGZpbGVTeXN0ZW0sIGV4cGVj
dGVkUGF0aCwgaXNEaXJlY3RvcnkpKTsKLX0KLQotRW50cnlDYWxsYmFja3M6OkVudHJ5Q2FsbGJh
Y2tzKFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRy
PEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbUJh
c2U+IGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRQYXRoLCBib29sIGlzRGlyZWN0
b3J5KQotICAgIDogRmlsZVN5c3RlbUNhbGxiYWNrc0Jhc2UoZXJyb3JDYWxsYmFjaykKLSAgICAs
IG1fc3VjY2Vzc0NhbGxiYWNrKHN1Y2Nlc3NDYWxsYmFjaykKLSAgICAsIG1fZmlsZVN5c3RlbShm
aWxlU3lzdGVtKQotICAgICwgbV9leHBlY3RlZFBhdGgoZXhwZWN0ZWRQYXRoKQotICAgICwgbV9p
c0RpcmVjdG9yeShpc0RpcmVjdG9yeSkKLXsKLX0KLQotdm9pZCBFbnRyeUNhbGxiYWNrczo6ZGlk
U3VjY2VlZCgpCi17Ci0gICAgaWYgKG1fc3VjY2Vzc0NhbGxiYWNrKSB7Ci0gICAgICAgIGlmICht
X2lzRGlyZWN0b3J5KQotICAgICAgICAgICAgbV9zdWNjZXNzQ2FsbGJhY2stPmhhbmRsZUV2ZW50
KERpcmVjdG9yeUVudHJ5OjpjcmVhdGUobV9maWxlU3lzdGVtLCBtX2V4cGVjdGVkUGF0aCkuZ2V0
KCkpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3N1Y2Nlc3NDYWxsYmFjay0+aGFuZGxl
RXZlbnQoRmlsZUVudHJ5OjpjcmVhdGUobV9maWxlU3lzdGVtLCBtX2V4cGVjdGVkUGF0aCkuZ2V0
KCkpOwotICAgIH0KLSAgICBtX3N1Y2Nlc3NDYWxsYmFjay5jbGVhcigpOwotfQotCi0vLyBFbnRy
aWVzQ2FsbGJhY2tzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi0KLVBhc3NPd25QdHI8RW50cmllc0NhbGxiYWNrcz4gRW50cmllc0Nh
bGxiYWNrczo6Y3JlYXRlKFBhc3NSZWZQdHI8RW50cmllc0NhbGxiYWNrPiBzdWNjZXNzQ2FsbGJh
Y2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaywgUGFzc1JlZlB0cjxE
aXJlY3RvcnlSZWFkZXJCYXNlPiBkaXJlY3RvcnlSZWFkZXIsIGNvbnN0IFN0cmluZyYgYmFzZVBh
dGgpCi17Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBFbnRyaWVzQ2FsbGJhY2tzKHN1Y2Nlc3ND
YWxsYmFjaywgZXJyb3JDYWxsYmFjaywgZGlyZWN0b3J5UmVhZGVyLCBiYXNlUGF0aCkpOwotfQot
Ci1FbnRyaWVzQ2FsbGJhY2tzOjpFbnRyaWVzQ2FsbGJhY2tzKFBhc3NSZWZQdHI8RW50cmllc0Nh
bGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JD
YWxsYmFjaywgUGFzc1JlZlB0cjxEaXJlY3RvcnlSZWFkZXJCYXNlPiBkaXJlY3RvcnlSZWFkZXIs
IGNvbnN0IFN0cmluZyYgYmFzZVBhdGgpCi0gICAgOiBGaWxlU3lzdGVtQ2FsbGJhY2tzQmFzZShl
cnJvckNhbGxiYWNrKQotICAgICwgbV9zdWNjZXNzQ2FsbGJhY2soc3VjY2Vzc0NhbGxiYWNrKQot
ICAgICwgbV9kaXJlY3RvcnlSZWFkZXIoZGlyZWN0b3J5UmVhZGVyKQotICAgICwgbV9iYXNlUGF0
aChiYXNlUGF0aCkKLSAgICAsIG1fZW50cmllcyhFbnRyeUFycmF5OjpjcmVhdGUoKSkKLXsKLSAg
ICBBU1NFUlQobV9kaXJlY3RvcnlSZWFkZXIpOwotfQotCi12b2lkIEVudHJpZXNDYWxsYmFja3M6
OmRpZFJlYWREaXJlY3RvcnlFbnRyeShjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgaXNEaXJlY3Rv
cnkpCi17Ci0gICAgaWYgKGlzRGlyZWN0b3J5KQotICAgICAgICBtX2VudHJpZXMtPmFwcGVuZChE
aXJlY3RvcnlFbnRyeTo6Y3JlYXRlKG1fZGlyZWN0b3J5UmVhZGVyLT5maWxlc3lzdGVtKCksIERP
TUZpbGVQYXRoOjphcHBlbmQobV9iYXNlUGF0aCwgbmFtZSkpKTsKLSAgICBlbHNlCi0gICAgICAg
IG1fZW50cmllcy0+YXBwZW5kKEZpbGVFbnRyeTo6Y3JlYXRlKG1fZGlyZWN0b3J5UmVhZGVyLT5m
aWxlc3lzdGVtKCksIERPTUZpbGVQYXRoOjphcHBlbmQobV9iYXNlUGF0aCwgbmFtZSkpKTsKLX0K
LQotdm9pZCBFbnRyaWVzQ2FsbGJhY2tzOjpkaWRSZWFkRGlyZWN0b3J5RW50cmllcyhib29sIGhh
c01vcmUpCi17Ci0gICAgbV9kaXJlY3RvcnlSZWFkZXItPnNldEhhc01vcmVFbnRyaWVzKGhhc01v
cmUpOwotICAgIGlmIChtX3N1Y2Nlc3NDYWxsYmFjaykKLSAgICAgICAgbV9zdWNjZXNzQ2FsbGJh
Y2stPmhhbmRsZUV2ZW50KG1fZW50cmllcy5nZXQoKSk7Ci19Ci0KLS8vIEZpbGVTeXN0ZW1DYWxs
YmFja3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KLQotUGFzc093blB0cjxGaWxlU3lzdGVtQ2FsbGJhY2tzPiBGaWxlU3lzdGVtQ2FsbGJh
Y2tzOjpjcmVhdGUoUGFzc1JlZlB0cjxGaWxlU3lzdGVtQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFj
aywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrLCBTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBGaWxlU3lzdGVtVHlwZSB0eXBlKQot
ewotICAgIHJldHVybiBhZG9wdFB0cihuZXcgRmlsZVN5c3RlbUNhbGxiYWNrcyhzdWNjZXNzQ2Fs
bGJhY2ssIGVycm9yQ2FsbGJhY2ssIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHR5cGUpKTsKLX0K
LQotRmlsZVN5c3RlbUNhbGxiYWNrczo6RmlsZVN5c3RlbUNhbGxiYWNrcyhQYXNzUmVmUHRyPEZp
bGVTeXN0ZW1DYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJh
Y2s+IGVycm9yQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEZpbGVT
eXN0ZW1UeXBlIHR5cGUpCi0gICAgOiBGaWxlU3lzdGVtQ2FsbGJhY2tzQmFzZShlcnJvckNhbGxi
YWNrKQotICAgICwgbV9zdWNjZXNzQ2FsbGJhY2soc3VjY2Vzc0NhbGxiYWNrKQotICAgICwgbV9z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KGNvbnRleHQpCi0gICAgLCBtX3R5cGUodHlwZSkKLXsKLX0K
LQotdm9pZCBGaWxlU3lzdGVtQ2FsbGJhY2tzOjpkaWRPcGVuRmlsZVN5c3RlbShjb25zdCBTdHJp
bmcmIG5hbWUsIGNvbnN0IFVSTCYgcm9vdFVSTCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+
IGFzeW5jRmlsZVN5c3RlbSkKLXsKLSAgICBpZiAobV9zdWNjZXNzQ2FsbGJhY2spIHsKLSAgICAg
ICAgQVNTRVJUKGFzeW5jRmlsZVN5c3RlbSk7Ci0gICAgICAgIFJlZlB0cjxET01GaWxlU3lzdGVt
PiBmaWxlU3lzdGVtID0gRE9NRmlsZVN5c3RlbTo6Y3JlYXRlKG1fc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5nZXQoKSwgbmFtZSwgbV90eXBlLCByb290VVJMLCBhc3luY0ZpbGVTeXN0ZW0pOwotICAg
ICAgICBtX3N1Y2Nlc3NDYWxsYmFjay0+aGFuZGxlRXZlbnQoZmlsZVN5c3RlbS5nZXQoKSk7Ci0g
ICAgICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jbGVhcigpOwotICAgIH0KLSAgICBtX3N1
Y2Nlc3NDYWxsYmFjay5jbGVhcigpOwotfQotCi0vLyBSZXNvbHZlVVJJQ2FsbGJhY2tzIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLW5h
bWVzcGFjZSB7Ci0KLWNsYXNzIEVycm9yQ2FsbGJhY2tXcmFwcGVyIDogcHVibGljIEVycm9yQ2Fs
bGJhY2sgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2tXcmFw
cGVyPiBjcmVhdGUoUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBh
c3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaywgUGFzc1JlZlB0cjxEaXJlY3Rv
cnlFbnRyeT4gcm9vdCwgY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgRXJyb3JDYWxsYmFja1dyYXBwZXIoc3VjY2Vzc0NhbGxiYWNrLCBl
cnJvckNhbGxiYWNrLCByb290LCBmaWxlUGF0aCkpOwotICAgIH0KLQotICAgIHZpcnR1YWwgYm9v
bCBoYW5kbGVFdmVudChGaWxlRXJyb3IqIGVycm9yKQotICAgIHsKLSAgICAgICAgQVNTRVJUKGVy
cm9yKTsKLSAgICAgICAgaWYgKGVycm9yLT5jb2RlKCkgPT0gRmlsZUVycm9yOjpUWVBFX01JU01B
VENIX0VSUikKLSAgICAgICAgICAgIG1fcm9vdC0+Z2V0RmlsZShtX2ZpbGVQYXRoLCBEaWN0aW9u
YXJ5KCksIG1fc3VjY2Vzc0NhbGxiYWNrLCBtX2Vycm9yQ2FsbGJhY2spOwotICAgICAgICBlbHNl
IGlmIChtX2Vycm9yQ2FsbGJhY2spCi0gICAgICAgICAgICBtX2Vycm9yQ2FsbGJhY2stPmhhbmRs
ZUV2ZW50KGVycm9yKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi1wcml2YXRlOgot
ICAgIEVycm9yQ2FsbGJhY2tXcmFwcGVyKFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vz
c0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2ssIFBhc3NS
ZWZQdHI8RGlyZWN0b3J5RW50cnk+IHJvb3QsIGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCi0gICAg
ICAgIDogbV9zdWNjZXNzQ2FsbGJhY2soc3VjY2Vzc0NhbGxiYWNrKQotICAgICAgICAsIG1fZXJy
b3JDYWxsYmFjayhlcnJvckNhbGxiYWNrKQotICAgICAgICAsIG1fcm9vdChyb290KQotICAgICAg
ICAsIG1fZmlsZVBhdGgoZmlsZVBhdGgpCi0gICAgewotICAgICAgICBBU1NFUlQobV9yb290KTsK
LSAgICB9Ci0KLSAgICBSZWZQdHI8RW50cnlDYWxsYmFjaz4gbV9zdWNjZXNzQ2FsbGJhY2s7Ci0g
ICAgUmVmUHRyPEVycm9yQ2FsbGJhY2s+IG1fZXJyb3JDYWxsYmFjazsKLSAgICBSZWZQdHI8RGly
ZWN0b3J5RW50cnk+IG1fcm9vdDsKLSAgICBTdHJpbmcgbV9maWxlUGF0aDsKLX07Ci0KLX0gLy8g
bmFtZXNwYWNlCi0KLVBhc3NPd25QdHI8UmVzb2x2ZVVSSUNhbGxiYWNrcz4gUmVzb2x2ZVVSSUNh
bGxiYWNrczo6Y3JlYXRlKFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNr
LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIEZpbGVTeXN0ZW1UeXBlIHR5cGUsIGNv
bnN0IFN0cmluZyYgZmlsZVBhdGgpCi17Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBSZXNvbHZl
VVJJQ2FsbGJhY2tzKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaywgc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCwgdHlwZSwgZmlsZVBhdGgpKTsKLX0KLQotUmVzb2x2ZVVSSUNhbGxiYWNrczo6
UmVzb2x2ZVVSSUNhbGxiYWNrcyhQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxs
YmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrLCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBGaWxlU3lzdGVtVHlwZSB0eXBlLCBjb25zdCBTdHJpbmcm
IGZpbGVQYXRoKQotICAgIDogRmlsZVN5c3RlbUNhbGxiYWNrc0Jhc2UoZXJyb3JDYWxsYmFjaykK
LSAgICAsIG1fc3VjY2Vzc0NhbGxiYWNrKHN1Y2Nlc3NDYWxsYmFjaykKLSAgICAsIG1fc2NyaXB0
RXhlY3V0aW9uQ29udGV4dChjb250ZXh0KQotICAgICwgbV90eXBlKHR5cGUpCi0gICAgLCBtX2Zp
bGVQYXRoKGZpbGVQYXRoKQotewotfQotCi12b2lkIFJlc29sdmVVUklDYWxsYmFja3M6OmRpZE9w
ZW5GaWxlU3lzdGVtKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgVVJMJiByb290VVJMLCBQYXNz
T3duUHRyPEFzeW5jRmlsZVN5c3RlbT4gYXN5bmNGaWxlU3lzdGVtKQotewotICAgIEFTU0VSVChh
c3luY0ZpbGVTeXN0ZW0pOwotICAgIFJlZlB0cjxEaXJlY3RvcnlFbnRyeT4gcm9vdCA9IERPTUZp
bGVTeXN0ZW06OmNyZWF0ZShtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuZ2V0KCksIG5hbWUsIG1f
dHlwZSwgcm9vdFVSTCwgYXN5bmNGaWxlU3lzdGVtKS0+cm9vdCgpOwotICAgIHJvb3QtPmdldERp
cmVjdG9yeShtX2ZpbGVQYXRoLCBEaWN0aW9uYXJ5KCksIG1fc3VjY2Vzc0NhbGxiYWNrLCBFcnJv
ckNhbGxiYWNrV3JhcHBlcjo6Y3JlYXRlKG1fc3VjY2Vzc0NhbGxiYWNrLCBtX2Vycm9yQ2FsbGJh
Y2ssIHJvb3QsIG1fZmlsZVBhdGgpKTsKLX0KLQotLy8gTWV0YWRhdGFDYWxsYmFja3MgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1Q
YXNzT3duUHRyPE1ldGFkYXRhQ2FsbGJhY2tzPiBNZXRhZGF0YUNhbGxiYWNrczo6Y3JlYXRlKFBh
c3NSZWZQdHI8TWV0YWRhdGFDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVy
cm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCi17Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBN
ZXRhZGF0YUNhbGxiYWNrcyhzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spKTsKLX0KLQot
TWV0YWRhdGFDYWxsYmFja3M6Ok1ldGFkYXRhQ2FsbGJhY2tzKFBhc3NSZWZQdHI8TWV0YWRhdGFD
YWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9y
Q2FsbGJhY2spCi0gICAgOiBGaWxlU3lzdGVtQ2FsbGJhY2tzQmFzZShlcnJvckNhbGxiYWNrKQot
ICAgICwgbV9zdWNjZXNzQ2FsbGJhY2soc3VjY2Vzc0NhbGxiYWNrKQotewotfQotCi12b2lkIE1l
dGFkYXRhQ2FsbGJhY2tzOjpkaWRSZWFkTWV0YWRhdGEoY29uc3QgRmlsZU1ldGFkYXRhJiBtZXRh
ZGF0YSkKLXsKLSAgICBpZiAobV9zdWNjZXNzQ2FsbGJhY2spCi0gICAgICAgIG1fc3VjY2Vzc0Nh
bGxiYWNrLT5oYW5kbGVFdmVudChNZXRhZGF0YTo6Y3JlYXRlKG1ldGFkYXRhKS5nZXQoKSk7Ci0g
ICAgbV9zdWNjZXNzQ2FsbGJhY2suY2xlYXIoKTsKLX0KLQotLy8gRmlsZVdyaXRlckJhc2VDYWxs
YmFja3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQotCi1QYXNzT3duUHRyPEZpbGVXcml0ZXJCYXNlQ2FsbGJhY2tzPiBGaWxlV3JpdGVy
QmFzZUNhbGxiYWNrczo6Y3JlYXRlKFBhc3NSZWZQdHI8RmlsZVdyaXRlckJhc2U+IGZpbGVXcml0
ZXIsIFBhc3NSZWZQdHI8RmlsZVdyaXRlckJhc2VDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQ
YXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCi17Ci0gICAgcmV0dXJuIGFk
b3B0UHRyKG5ldyBGaWxlV3JpdGVyQmFzZUNhbGxiYWNrcyhmaWxlV3JpdGVyLCBzdWNjZXNzQ2Fs
bGJhY2ssIGVycm9yQ2FsbGJhY2spKTsKLX0KLQotRmlsZVdyaXRlckJhc2VDYWxsYmFja3M6OkZp
bGVXcml0ZXJCYXNlQ2FsbGJhY2tzKFBhc3NSZWZQdHI8RmlsZVdyaXRlckJhc2U+IGZpbGVXcml0
ZXIsIFBhc3NSZWZQdHI8RmlsZVdyaXRlckJhc2VDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQ
YXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCi0gICAgOiBGaWxlU3lzdGVt
Q2FsbGJhY2tzQmFzZShlcnJvckNhbGxiYWNrKQotICAgICwgbV9maWxlV3JpdGVyKGZpbGVXcml0
ZXIpCi0gICAgLCBtX3N1Y2Nlc3NDYWxsYmFjayhzdWNjZXNzQ2FsbGJhY2spCi17Ci19Ci0KLXZv
aWQgRmlsZVdyaXRlckJhc2VDYWxsYmFja3M6OmRpZENyZWF0ZUZpbGVXcml0ZXIoUGFzc093blB0
cjxBc3luY0ZpbGVXcml0ZXI+IGFzeW5jRmlsZVdyaXRlciwgbG9uZyBsb25nIGxlbmd0aCkKLXsK
LSAgICBtX2ZpbGVXcml0ZXItPmluaXRpYWxpemUoYXN5bmNGaWxlV3JpdGVyLCBsZW5ndGgpOwot
ICAgIGlmIChtX3N1Y2Nlc3NDYWxsYmFjaykKLSAgICAgICAgbV9zdWNjZXNzQ2FsbGJhY2stPmhh
bmRsZUV2ZW50KG1fZmlsZVdyaXRlci5yZWxlYXNlKCkuZ2V0KCkpOwotICAgIG1fc3VjY2Vzc0Nh
bGxiYWNrLmNsZWFyKCk7Ci19Ci0KLS8vIFZvaWRDYWxsYmFja3MgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotUGFzc093blB0
cjxWb2lkQ2FsbGJhY2tzPiBWb2lkQ2FsbGJhY2tzOjpjcmVhdGUoUGFzc1JlZlB0cjxWb2lkQ2Fs
bGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNh
bGxiYWNrKQotewotICAgIHJldHVybiBhZG9wdFB0cihuZXcgVm9pZENhbGxiYWNrcyhzdWNjZXNz
Q2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spKTsKLX0KLQotVm9pZENhbGxiYWNrczo6Vm9pZENhbGxi
YWNrcyhQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRy
PEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCi0gICAgOiBGaWxlU3lzdGVtQ2FsbGJhY2tz
QmFzZShlcnJvckNhbGxiYWNrKQotICAgICwgbV9zdWNjZXNzQ2FsbGJhY2soc3VjY2Vzc0NhbGxi
YWNrKQotewotfQotCi12b2lkIFZvaWRDYWxsYmFja3M6OmRpZFN1Y2NlZWQoKQotewotICAgIGlm
IChtX3N1Y2Nlc3NDYWxsYmFjaykKLSAgICAgICAgbV9zdWNjZXNzQ2FsbGJhY2stPmhhbmRsZUV2
ZW50KCk7Ci0gICAgbV9zdWNjZXNzQ2FsbGJhY2suY2xlYXIoKTsKLX0KLQotfSAvLyBuYW1lc3Bh
Y2UKLQotI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlU3lzdGVtQ2FsbGJhY2tzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVTeXN0ZW1DYWxsYmFja3MuaAko
cmV2aXNpb24gMTU2NjkxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0Zp
bGVTeXN0ZW1DYWxsYmFja3MuaAkod29ya2luZyBjb3B5KQpAQCAtMSwxNjIgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBk
aXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
Ci0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5k
ZWYgRmlsZVN5c3RlbUNhbGxiYWNrc19oCi0jZGVmaW5lIEZpbGVTeXN0ZW1DYWxsYmFja3NfaAot
Ci0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jaW5jbHVkZSAiQXN5bmNGaWxlU3lzdGVtQ2Fs
bGJhY2tzLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbVR5cGUuaCIKLSNpbmNsdWRlIDx3dGYvUGFz
c1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBBc3luY0ZpbGVXcml0
ZXI7Ci1jbGFzcyBET01GaWxlU3lzdGVtQmFzZTsKLWNsYXNzIERpcmVjdG9yeVJlYWRlckJhc2U7
Ci1jbGFzcyBFbnRyaWVzQ2FsbGJhY2s7Ci1jbGFzcyBFbnRyeUFycmF5OwotY2xhc3MgRW50cnlD
YWxsYmFjazsKLWNsYXNzIEVycm9yQ2FsbGJhY2s7Ci1zdHJ1Y3QgRmlsZU1ldGFkYXRhOwotY2xh
c3MgRmlsZVN5c3RlbUNhbGxiYWNrOwotY2xhc3MgRmlsZVdyaXRlckJhc2U7Ci1jbGFzcyBGaWxl
V3JpdGVyQmFzZUNhbGxiYWNrOwotY2xhc3MgTWV0YWRhdGFDYWxsYmFjazsKLWNsYXNzIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ7Ci1jbGFzcyBWb2lkQ2FsbGJhY2s7Ci0KLWNsYXNzIEZpbGVTeXN0
ZW1DYWxsYmFja3NCYXNlIDogcHVibGljIEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyB7Ci1wdWJs
aWM6Ci0gICAgdmlydHVhbCB+RmlsZVN5c3RlbUNhbGxiYWNrc0Jhc2UoKTsKLQotICAgIC8vIEZv
ciBFcnJvckNhbGxiYWNrLgotICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKGludCBjb2RlKTsKLQot
ICAgIC8vIE90aGVyIGNhbGxiYWNrIG1ldGhvZHMgYXJlIGltcGxlbWVudGVkIGJ5IGVhY2ggc3Vi
Y2xhc3MuCi0KLXByb3RlY3RlZDoKLSAgICBGaWxlU3lzdGVtQ2FsbGJhY2tzQmFzZShQYXNzUmVm
UHRyPEVycm9yQ2FsbGJhY2s+KTsKLSAgICBSZWZQdHI8RXJyb3JDYWxsYmFjaz4gbV9lcnJvckNh
bGxiYWNrOwotfTsKLQotLy8gU3ViY2xhc3NlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLWNsYXNzIEVudHJ5Q2FsbGJh
Y2tzIDogcHVibGljIEZpbGVTeXN0ZW1DYWxsYmFja3NCYXNlIHsKLXB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc093blB0cjxFbnRyeUNhbGxiYWNrcz4gY3JlYXRlKFBhc3NSZWZQdHI8RW50cnlDYWxs
YmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RE9NRmlsZVN5c3Rl
bUJhc2U+LCBjb25zdCBTdHJpbmcmIGV4cGVjdGVkUGF0aCwgYm9vbCBpc0RpcmVjdG9yeSk7Ci0g
ICAgdmlydHVhbCB2b2lkIGRpZFN1Y2NlZWQoKTsKLQotcHJpdmF0ZToKLSAgICBFbnRyeUNhbGxi
YWNrcyhQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+
LCBQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW1CYXNlPiwgY29uc3QgU3RyaW5nJiBleHBlY3RlZFBh
dGgsIGJvb2wgaXNEaXJlY3RvcnkpOwotICAgIFJlZlB0cjxFbnRyeUNhbGxiYWNrPiBtX3N1Y2Nl
c3NDYWxsYmFjazsKLSAgICBSZWZQdHI8RE9NRmlsZVN5c3RlbUJhc2U+IG1fZmlsZVN5c3RlbTsK
LSAgICBTdHJpbmcgbV9leHBlY3RlZFBhdGg7Ci0gICAgYm9vbCBtX2lzRGlyZWN0b3J5OwotfTsK
LQotY2xhc3MgRW50cmllc0NhbGxiYWNrcyA6IHB1YmxpYyBGaWxlU3lzdGVtQ2FsbGJhY2tzQmFz
ZSB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8RW50cmllc0NhbGxiYWNrcz4gY3Jl
YXRlKFBhc3NSZWZQdHI8RW50cmllc0NhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNr
PiwgUGFzc1JlZlB0cjxEaXJlY3RvcnlSZWFkZXJCYXNlPiwgY29uc3QgU3RyaW5nJiBiYXNlUGF0
aCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlYWREaXJlY3RvcnlFbnRyeShjb25zdCBTdHJpbmcm
IG5hbWUsIGJvb2wgaXNEaXJlY3RvcnkpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWFkRGlyZWN0
b3J5RW50cmllcyhib29sIGhhc01vcmUpOwotCi1wcml2YXRlOgotICAgIEVudHJpZXNDYWxsYmFj
a3MoUGFzc1JlZlB0cjxFbnRyaWVzQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+
LCBQYXNzUmVmUHRyPERpcmVjdG9yeVJlYWRlckJhc2U+LCBjb25zdCBTdHJpbmcmIGJhc2VQYXRo
KTsKLSAgICBSZWZQdHI8RW50cmllc0NhbGxiYWNrPiBtX3N1Y2Nlc3NDYWxsYmFjazsKLSAgICBS
ZWZQdHI8RGlyZWN0b3J5UmVhZGVyQmFzZT4gbV9kaXJlY3RvcnlSZWFkZXI7Ci0gICAgU3RyaW5n
IG1fYmFzZVBhdGg7Ci0gICAgUmVmUHRyPEVudHJ5QXJyYXk+IG1fZW50cmllczsKLX07Ci0KLWNs
YXNzIEZpbGVTeXN0ZW1DYWxsYmFja3MgOiBwdWJsaWMgRmlsZVN5c3RlbUNhbGxiYWNrc0Jhc2Ug
ewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPEZpbGVTeXN0ZW1DYWxsYmFja3M+IGNy
ZWF0ZShQYXNzUmVmUHRyPEZpbGVTeXN0ZW1DYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxs
YmFjaz4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBGaWxlU3lzdGVtVHlwZSk7Ci0gICAgdmly
dHVhbCB2b2lkIGRpZE9wZW5GaWxlU3lzdGVtKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgVVJM
JiByb290VVJMLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4pOwotCi1wcml2YXRlOgotICAg
IEZpbGVTeXN0ZW1DYWxsYmFja3MoUGFzc1JlZlB0cjxGaWxlU3lzdGVtQ2FsbGJhY2s+LCBQYXNz
UmVmUHRyPEVycm9yQ2FsbGJhY2s+LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRmlsZVN5c3Rl
bVR5cGUpOwotICAgIFJlZlB0cjxGaWxlU3lzdGVtQ2FsbGJhY2s+IG1fc3VjY2Vzc0NhbGxiYWNr
OwotICAgIFJlZlB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0PiBtX3NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ7Ci0gICAgRmlsZVN5c3RlbVR5cGUgbV90eXBlOwotfTsKLQotY2xhc3MgUmVzb2x2ZVVS
SUNhbGxiYWNrcyA6IHB1YmxpYyBGaWxlU3lzdGVtQ2FsbGJhY2tzQmFzZSB7Ci1wdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NPd25QdHI8UmVzb2x2ZVVSSUNhbGxiYWNrcz4gY3JlYXRlKFBhc3NSZWZQ
dHI8RW50cnlDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4sIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBGaWxlU3lzdGVtVHlwZSwgY29uc3QgU3RyaW5nJiBmaWxlUGF0aCk7Ci0g
ICAgdmlydHVhbCB2b2lkIGRpZE9wZW5GaWxlU3lzdGVtKGNvbnN0IFN0cmluZyYgbmFtZSwgY29u
c3QgVVJMJiByb290VVJMLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4pOwotCi1wcml2YXRl
OgotICAgIFJlc29sdmVVUklDYWxsYmFja3MoUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiwgUGFz
c1JlZlB0cjxFcnJvckNhbGxiYWNrPiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEZpbGVTeXN0
ZW1UeXBlLCBjb25zdCBTdHJpbmcmIGZpbGVQYXRoKTsKLSAgICBSZWZQdHI8RW50cnlDYWxsYmFj
az4gbV9zdWNjZXNzQ2FsbGJhY2s7Ci0gICAgUmVmUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ+
IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLSAgICBGaWxlU3lzdGVtVHlwZSBtX3R5cGU7Ci0g
ICAgU3RyaW5nIG1fZmlsZVBhdGg7Ci19OwotCi1jbGFzcyBNZXRhZGF0YUNhbGxiYWNrcyA6IHB1
YmxpYyBGaWxlU3lzdGVtQ2FsbGJhY2tzQmFzZSB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NP
d25QdHI8TWV0YWRhdGFDYWxsYmFja3M+IGNyZWF0ZShQYXNzUmVmUHRyPE1ldGFkYXRhQ2FsbGJh
Y2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVh
ZE1ldGFkYXRhKGNvbnN0IEZpbGVNZXRhZGF0YSYpOwotCi1wcml2YXRlOgotICAgIE1ldGFkYXRh
Q2FsbGJhY2tzKFBhc3NSZWZQdHI8TWV0YWRhdGFDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JD
YWxsYmFjaz4pOwotICAgIFJlZlB0cjxNZXRhZGF0YUNhbGxiYWNrPiBtX3N1Y2Nlc3NDYWxsYmFj
azsKLX07Ci0KLWNsYXNzIEZpbGVXcml0ZXJCYXNlQ2FsbGJhY2tzIDogcHVibGljIEZpbGVTeXN0
ZW1DYWxsYmFja3NCYXNlIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxGaWxlV3Jp
dGVyQmFzZUNhbGxiYWNrcz4gY3JlYXRlKFBhc3NSZWZQdHI8RmlsZVdyaXRlckJhc2U+LCBQYXNz
UmVmUHRyPEZpbGVXcml0ZXJCYXNlQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+
KTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRmlsZVdyaXRlcihQYXNzT3duUHRyPEFzeW5j
RmlsZVdyaXRlcj4sIGxvbmcgbG9uZyBsZW5ndGgpOwotCi1wcml2YXRlOgotICAgIEZpbGVXcml0
ZXJCYXNlQ2FsbGJhY2tzKFBhc3NSZWZQdHI8RmlsZVdyaXRlckJhc2U+LCBQYXNzUmVmUHRyPEZp
bGVXcml0ZXJCYXNlQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsKLSAgICBS
ZWZQdHI8RmlsZVdyaXRlckJhc2U+IG1fZmlsZVdyaXRlcjsKLSAgICBSZWZQdHI8RmlsZVdyaXRl
ckJhc2VDYWxsYmFjaz4gbV9zdWNjZXNzQ2FsbGJhY2s7Ci19OwotCi1jbGFzcyBWb2lkQ2FsbGJh
Y2tzIDogcHVibGljIEZpbGVTeXN0ZW1DYWxsYmFja3NCYXNlIHsKLXB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc093blB0cjxWb2lkQ2FsbGJhY2tzPiBjcmVhdGUoUGFzc1JlZlB0cjxWb2lkQ2FsbGJh
Y2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkU3Vj
Y2VlZCgpOwotCi1wcml2YXRlOgotICAgIFZvaWRDYWxsYmFja3MoUGFzc1JlZlB0cjxWb2lkQ2Fs
bGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsKLSAgICBSZWZQdHI8Vm9pZENhbGxi
YWNrPiBtX3N1Y2Nlc3NDYWxsYmFjazsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlCi0KLSNlbmRpZiAv
LyBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNlbmRpZiAvLyBGaWxlU3lzdGVtQ2FsbGJhY2tzX2gK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlU3lzdGVtRmxhZ3Mu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVN5
c3RlbUZsYWdzLmgJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmlsZXN5c3RlbS9GaWxlU3lzdGVtRmxhZ3MuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1NyArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgot
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0g
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2lmbmRlZiBGaWxlU3lzdGVtRmxhZ3NfaAotI2RlZmluZSBGaWxlU3lzdGVtRmxhZ3NfaAot
Ci0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jaW5jbHVkZSAiRGljdGlvbmFyeS5oIgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBGaWxlU3lzdGVtRmxhZ3MgIHsKLSAgICBleHBs
aWNpdCBGaWxlU3lzdGVtRmxhZ3MoY29uc3QgRGljdGlvbmFyeSYgb3B0aW9ucykKLSAgICAgICAg
OiBjcmVhdGUoZmFsc2UpCi0gICAgICAgICwgZXhjbHVzaXZlKGZhbHNlKQotICAgIHsKLSAgICAg
ICAgb3B0aW9ucy5nZXQoImNyZWF0ZSIsIGNyZWF0ZSk7Ci0gICAgICAgIG9wdGlvbnMuZ2V0KCJl
eGNsdXNpdmUiLCBleGNsdXNpdmUpOwotICAgIH0KLQotICAgIGJvb2wgY3JlYXRlOwotICAgIGJv
b2wgZXhjbHVzaXZlOwotfTsKLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQot
Ci0jZW5kaWYgLy8gRmlsZVN5c3RlbUZsYWdzX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmlsZXN5c3RlbS9GaWxlU3lzdGVtVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlU3lzdGVtVHlwZS5oCShyZXZpc2lvbiAxNTY2OTEp
CisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVN5c3RlbVR5cGUuaAko
d29ya2luZyBjb3B5KQpAQCAtMSw1NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEy
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAq
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBGaWxlU3lzdGVtVHlwZV9oCi0j
ZGVmaW5lIEZpbGVTeXN0ZW1UeXBlX2gKLQotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi0vLyBGb3IgZmlsZSBzeXN0ZW0gdHlwZXMgdXNlZCBpbiBGaWxl
U3lzdGVtIEFQSS4KLWVudW0gRmlsZVN5c3RlbVR5cGUgewotICAgIEZpbGVTeXN0ZW1UeXBlVGVt
cG9yYXJ5LAotICAgIEZpbGVTeXN0ZW1UeXBlUGVyc2lzdGVudCwKLQotICAgIC8vIFRyYW5zaWVu
dCBpc29sYXRlZCBub24tc2FuZGJveGVkIGZpbGVzeXN0ZW0uCi0gICAgRmlsZVN5c3RlbVR5cGVJ
c29sYXRlZCwKLX07Ci0KLWVudW0gRmlsZVN5c3RlbVN5bmNocm9ub3VzVHlwZSB7Ci0gICAgQXN5
bmNocm9ub3VzRmlsZVN5c3RlbSwKLSAgICBTeW5jaHJvbm91c0ZpbGVTeXN0ZW0sCi19OwotCi19
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCi0K
LSNlbmRpZiAvLyBGaWxlU3lzdGVtVHlwZV9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZpbGVzeXN0ZW0vRmlsZVdyaXRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVXcml0ZXIuY3BwCShyZXZpc2lvbiAxNTY2OTEpCisrKyBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVdyaXRlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMzI2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xl
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxF
KEZJTEVfU1lTVEVNKQotCi0jaW5jbHVkZSAiRmlsZVdyaXRlci5oIgotCi0jaW5jbHVkZSAiQXN5
bmNGaWxlV3JpdGVyLmgiCi0jaW5jbHVkZSAiQmxvYi5oIgotI2luY2x1ZGUgIkV4Y2VwdGlvbkNv
ZGUuaCIKLSNpbmNsdWRlICJGaWxlRXJyb3IuaCIKLSNpbmNsdWRlICJGaWxlRXhjZXB0aW9uLmgi
Ci0jaW5jbHVkZSAiUHJvZ3Jlc3NFdmVudC5oIgotI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5o
PgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0YXRpYyBjb25zdCBpbnQga01heFJlY3Vyc2lv
bkRlcHRoID0gMzsKLXN0YXRpYyBjb25zdCBkb3VibGUgcHJvZ3Jlc3NOb3RpZmljYXRpb25JbnRl
cnZhbE1TID0gNTA7Ci0KLVBhc3NSZWZQdHI8RmlsZVdyaXRlcj4gRmlsZVdyaXRlcjo6Y3JlYXRl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCi17Ci0gICAgUmVmUHRyPEZpbGVXcml0
ZXI+IGZpbGVXcml0ZXIoYWRvcHRSZWYobmV3IEZpbGVXcml0ZXIoY29udGV4dCkpKTsKLSAgICBm
aWxlV3JpdGVyLT5zdXNwZW5kSWZOZWVkZWQoKTsKLSAgICByZXR1cm4gZmlsZVdyaXRlci5yZWxl
YXNlKCk7Ci19Ci0KLUZpbGVXcml0ZXI6OkZpbGVXcml0ZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCkKLSAgICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0KQotICAgICwgbV9yZWFk
eVN0YXRlKElOSVQpCi0gICAgLCBtX29wZXJhdGlvbkluUHJvZ3Jlc3MoT3BlcmF0aW9uTm9uZSkK
LSAgICAsIG1fcXVldWVkT3BlcmF0aW9uKE9wZXJhdGlvbk5vbmUpCi0gICAgLCBtX2J5dGVzV3Jp
dHRlbigwKQotICAgICwgbV9ieXRlc1RvV3JpdGUoMCkKLSAgICAsIG1fdHJ1bmNhdGVMZW5ndGgo
LTEpCi0gICAgLCBtX251bUFib3J0cygwKQotICAgICwgbV9yZWN1cnNpb25EZXB0aCgwKQotICAg
ICwgbV9sYXN0UHJvZ3Jlc3NOb3RpZmljYXRpb25UaW1lTVMoMCkKLXsKLX0KLQotRmlsZVdyaXRl
cjo6fkZpbGVXcml0ZXIoKQotewotICAgIEFTU0VSVCghbV9yZWN1cnNpb25EZXB0aCk7Ci0gICAg
aWYgKG1fcmVhZHlTdGF0ZSA9PSBXUklUSU5HKQotICAgICAgICBzdG9wKCk7Ci19Ci0KLWJvb2wg
RmlsZVdyaXRlcjo6Y2FuU3VzcGVuZCgpIGNvbnN0Ci17Ci0gICAgLy8gRklYTUU6IEl0IGlzIG5v
dCBjdXJyZW50bHkgcG9zc2libGUgdG8gc3VzcGVuZCBhIEZpbGVXcml0ZXIsIHNvIHBhZ2VzIHdp
dGggRmlsZVdyaXRlciBjYW4gbm90IGdvIGludG8gcGFnZSBjYWNoZS4KLSAgICByZXR1cm4gZmFs
c2U7Ci19Ci0KLXZvaWQgRmlsZVdyaXRlcjo6c3RvcCgpCi17Ci0gICAgLy8gTWFrZSBzdXJlIHdl
J3ZlIGFjdHVhbGx5IGdvdCBzb21ldGhpbmcgdG8gc3RvcCwgYW5kIGhhdmVuJ3QgYWxyZWFkeSBj
YWxsZWQgYWJvcnQoKS4KLSAgICBpZiAoIXdyaXRlcigpIHx8IG1fcmVhZHlTdGF0ZSAhPSBXUklU
SU5HKQotICAgICAgICByZXR1cm47Ci0gICAgZG9PcGVyYXRpb24oT3BlcmF0aW9uQWJvcnQpOwot
ICAgIG1fcmVhZHlTdGF0ZSA9IERPTkU7Ci19Ci0KLXZvaWQgRmlsZVdyaXRlcjo6d3JpdGUoQmxv
YiogZGF0YSwgRXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0gICAgQVNTRVJUKHdyaXRlcigpKTsKLSAg
ICBBU1NFUlQoZGF0YSk7Ci0gICAgQVNTRVJUKG1fdHJ1bmNhdGVMZW5ndGggPT0gLTEpOwotICAg
IGlmIChtX3JlYWR5U3RhdGUgPT0gV1JJVElORykgewotICAgICAgICBzZXRFcnJvcihGaWxlRXJy
b3I6OklOVkFMSURfU1RBVEVfRVJSLCBlYyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAg
aWYgKCFkYXRhKSB7Ci0gICAgICAgIHNldEVycm9yKEZpbGVFcnJvcjo6VFlQRV9NSVNNQVRDSF9F
UlIsIGVjKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAobV9yZWN1cnNpb25EZXB0
aCA+IGtNYXhSZWN1cnNpb25EZXB0aCkgewotICAgICAgICBzZXRFcnJvcihGaWxlRXJyb3I6OlNF
Q1VSSVRZX0VSUiwgZWMpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgbV9ibG9iQmVp
bmdXcml0dGVuID0gZGF0YTsKLSAgICBtX3JlYWR5U3RhdGUgPSBXUklUSU5HOwotICAgIG1fYnl0
ZXNXcml0dGVuID0gMDsKLSAgICBtX2J5dGVzVG9Xcml0ZSA9IGRhdGEtPnNpemUoKTsKLSAgICBB
U1NFUlQobV9xdWV1ZWRPcGVyYXRpb24gPT0gT3BlcmF0aW9uTm9uZSk7Ci0gICAgaWYgKG1fb3Bl
cmF0aW9uSW5Qcm9ncmVzcyAhPSBPcGVyYXRpb25Ob25lKSB7Ci0gICAgICAgIC8vIFdlIG11c3Qg
YmUgd2FpdGluZyBmb3IgYW4gYWJvcnQgdG8gY29tcGxldGUsIHNpbmNlIG1fcmVhZHlTdGF0ZSB3
YXNuJ3QgV1JJVElORy4KLSAgICAgICAgQVNTRVJUKG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9PSBP
cGVyYXRpb25BYm9ydCk7Ci0gICAgICAgIG1fcXVldWVkT3BlcmF0aW9uID0gT3BlcmF0aW9uV3Jp
dGU7Ci0gICAgfSBlbHNlCi0gICAgICAgIGRvT3BlcmF0aW9uKE9wZXJhdGlvbldyaXRlKTsKLQot
ICAgIGZpcmVFdmVudChldmVudE5hbWVzKCkud3JpdGVzdGFydEV2ZW50KTsKLX0KLQotdm9pZCBG
aWxlV3JpdGVyOjpzZWVrKGxvbmcgbG9uZyBwb3NpdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCi17
Ci0gICAgQVNTRVJUKHdyaXRlcigpKTsKLSAgICBpZiAobV9yZWFkeVN0YXRlID09IFdSSVRJTkcp
IHsKLSAgICAgICAgc2V0RXJyb3IoRmlsZUVycm9yOjpJTlZBTElEX1NUQVRFX0VSUiwgZWMpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUKG1fdHJ1bmNhdGVMZW5ndGggPT0g
LTEpOwotICAgIEFTU0VSVChtX3F1ZXVlZE9wZXJhdGlvbiA9PSBPcGVyYXRpb25Ob25lKTsKLSAg
ICBzZWVrSW50ZXJuYWwocG9zaXRpb24pOwotfQotCi12b2lkIEZpbGVXcml0ZXI6OnRydW5jYXRl
KGxvbmcgbG9uZyBwb3NpdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0gICAgQVNTRVJUKHdy
aXRlcigpKTsKLSAgICBBU1NFUlQobV90cnVuY2F0ZUxlbmd0aCA9PSAtMSk7Ci0gICAgaWYgKG1f
cmVhZHlTdGF0ZSA9PSBXUklUSU5HIHx8IHBvc2l0aW9uIDwgMCkgewotICAgICAgICBzZXRFcnJv
cihGaWxlRXJyb3I6OklOVkFMSURfU1RBVEVfRVJSLCBlYyk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0gICAgaWYgKG1fcmVjdXJzaW9uRGVwdGggPiBrTWF4UmVjdXJzaW9uRGVwdGgpIHsKLSAg
ICAgICAgc2V0RXJyb3IoRmlsZUVycm9yOjpTRUNVUklUWV9FUlIsIGVjKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIG1fcmVhZHlTdGF0ZSA9IFdSSVRJTkc7Ci0gICAgbV9ieXRlc1dy
aXR0ZW4gPSAwOwotICAgIG1fYnl0ZXNUb1dyaXRlID0gMDsKLSAgICBtX3RydW5jYXRlTGVuZ3Ro
ID0gcG9zaXRpb247Ci0gICAgQVNTRVJUKG1fcXVldWVkT3BlcmF0aW9uID09IE9wZXJhdGlvbk5v
bmUpOwotICAgIGlmIChtX29wZXJhdGlvbkluUHJvZ3Jlc3MgIT0gT3BlcmF0aW9uTm9uZSkgewot
ICAgICAgICAvLyBXZSBtdXN0IGJlIHdhaXRpbmcgZm9yIGFuIGFib3J0IHRvIGNvbXBsZXRlLCBz
aW5jZSBtX3JlYWR5U3RhdGUgd2Fzbid0IFdSSVRJTkcuCi0gICAgICAgIEFTU0VSVChtX29wZXJh
dGlvbkluUHJvZ3Jlc3MgPT0gT3BlcmF0aW9uQWJvcnQpOwotICAgICAgICBtX3F1ZXVlZE9wZXJh
dGlvbiA9IE9wZXJhdGlvblRydW5jYXRlOwotICAgIH0gZWxzZQotICAgICAgICBkb09wZXJhdGlv
bihPcGVyYXRpb25UcnVuY2F0ZSk7Ci0gICAgZmlyZUV2ZW50KGV2ZW50TmFtZXMoKS53cml0ZXN0
YXJ0RXZlbnQpOwotfQotCi12b2lkIEZpbGVXcml0ZXI6OmFib3J0KEV4Y2VwdGlvbkNvZGUmKQot
ewotICAgIEFTU0VSVCh3cml0ZXIoKSk7Ci0gICAgaWYgKG1fcmVhZHlTdGF0ZSAhPSBXUklUSU5H
KQotICAgICAgICByZXR1cm47Ci0gICAgKyttX251bUFib3J0czsKLQotICAgIGRvT3BlcmF0aW9u
KE9wZXJhdGlvbkFib3J0KTsKLSAgICBzaWduYWxDb21wbGV0aW9uKEZpbGVFcnJvcjo6QUJPUlRf
RVJSKTsKLX0KLQotdm9pZCBGaWxlV3JpdGVyOjpkaWRXcml0ZShsb25nIGxvbmcgYnl0ZXMsIGJv
b2wgY29tcGxldGUpCi17Ci0gICAgaWYgKG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9PSBPcGVyYXRp
b25BYm9ydCkgewotICAgICAgICBjb21wbGV0ZUFib3J0KCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0gICAgQVNTRVJUKG1fcmVhZHlTdGF0ZSA9PSBXUklUSU5HKTsKLSAgICBBU1NFUlQobV90
cnVuY2F0ZUxlbmd0aCA9PSAtMSk7Ci0gICAgQVNTRVJUKG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9
PSBPcGVyYXRpb25Xcml0ZSk7Ci0gICAgQVNTRVJUKCFtX2J5dGVzVG9Xcml0ZSB8fCBieXRlcyAr
IG1fYnl0ZXNXcml0dGVuID4gMCk7Ci0gICAgQVNTRVJUKGJ5dGVzICsgbV9ieXRlc1dyaXR0ZW4g
PD0gbV9ieXRlc1RvV3JpdGUpOwotICAgIG1fYnl0ZXNXcml0dGVuICs9IGJ5dGVzOwotICAgIEFT
U0VSVCgobV9ieXRlc1dyaXR0ZW4gPT0gbV9ieXRlc1RvV3JpdGUpIHx8ICFjb21wbGV0ZSk7Ci0g
ICAgc2V0UG9zaXRpb24ocG9zaXRpb24oKSArIGJ5dGVzKTsKLSAgICBpZiAocG9zaXRpb24oKSA+
IGxlbmd0aCgpKQotICAgICAgICBzZXRMZW5ndGgocG9zaXRpb24oKSk7Ci0gICAgaWYgKGNvbXBs
ZXRlKSB7Ci0gICAgICAgIG1fYmxvYkJlaW5nV3JpdHRlbi5jbGVhcigpOwotICAgICAgICBtX29w
ZXJhdGlvbkluUHJvZ3Jlc3MgPSBPcGVyYXRpb25Ob25lOwotICAgIH0KLQotICAgIGludCBudW1B
Ym9ydHMgPSBtX251bUFib3J0czsKLSAgICAvLyBXZSBjb3VsZCBnZXQgYW4gYWJvcnQgaW4gdGhl
IGhhbmRsZXIgZm9yIHRoaXMgZXZlbnQuIElmIHdlIGRvLCBpdCdzCi0gICAgLy8gYWxyZWFkeSBo
YW5kbGVkIHRoZSBjbGVhbnVwIGFuZCBzaWduYWxDb21wbGV0aW9uIGNhbGwuCi0gICAgZG91Ymxl
IG5vdyA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZU1TKCk7Ci0gICAgaWYgKGNvbXBsZXRl
IHx8ICFtX2xhc3RQcm9ncmVzc05vdGlmaWNhdGlvblRpbWVNUyB8fCAobm93IC0gbV9sYXN0UHJv
Z3Jlc3NOb3RpZmljYXRpb25UaW1lTVMgPiBwcm9ncmVzc05vdGlmaWNhdGlvbkludGVydmFsTVMp
KSB7Ci0gICAgICAgIG1fbGFzdFByb2dyZXNzTm90aWZpY2F0aW9uVGltZU1TID0gbm93OwotICAg
ICAgICBmaXJlRXZlbnQoZXZlbnROYW1lcygpLnByb2dyZXNzRXZlbnQpOwotICAgIH0KLQotICAg
IGlmIChjb21wbGV0ZSkgewotICAgICAgaWYgKG51bUFib3J0cyA9PSBtX251bUFib3J0cykKLSAg
ICAgICAgICBzaWduYWxDb21wbGV0aW9uKEZpbGVFcnJvcjo6T0spOwotICAgICAgdW5zZXRQZW5k
aW5nQWN0aXZpdHkodGhpcyk7Ci0gICAgfQotfQotCi12b2lkIEZpbGVXcml0ZXI6OmRpZFRydW5j
YXRlKCkKLXsKLSAgICBpZiAobV9vcGVyYXRpb25JblByb2dyZXNzID09IE9wZXJhdGlvbkFib3J0
KSB7Ci0gICAgICAgIGNvbXBsZXRlQWJvcnQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAg
ICBBU1NFUlQobV9vcGVyYXRpb25JblByb2dyZXNzID09IE9wZXJhdGlvblRydW5jYXRlKTsKLSAg
ICBBU1NFUlQobV90cnVuY2F0ZUxlbmd0aCA+PSAwKTsKLSAgICBzZXRMZW5ndGgobV90cnVuY2F0
ZUxlbmd0aCk7Ci0gICAgaWYgKHBvc2l0aW9uKCkgPiBsZW5ndGgoKSkKLSAgICAgICAgc2V0UG9z
aXRpb24obGVuZ3RoKCkpOwotICAgIG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9IE9wZXJhdGlvbk5v
bmU7Ci0gICAgc2lnbmFsQ29tcGxldGlvbihGaWxlRXJyb3I6Ok9LKTsKLSAgICB1bnNldFBlbmRp
bmdBY3Rpdml0eSh0aGlzKTsKLX0KLQotdm9pZCBGaWxlV3JpdGVyOjpkaWRGYWlsKEZpbGVFcnJv
cjo6RXJyb3JDb2RlIGNvZGUpCi17Ci0gICAgQVNTRVJUKG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyAh
PSBPcGVyYXRpb25Ob25lKTsKLSAgICBBU1NFUlQoY29kZSAhPSBGaWxlRXJyb3I6Ok9LKTsKLSAg
ICBpZiAobV9vcGVyYXRpb25JblByb2dyZXNzID09IE9wZXJhdGlvbkFib3J0KSB7Ci0gICAgICAg
IGNvbXBsZXRlQWJvcnQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBBU1NFUlQoY29k
ZSAhPSBGaWxlRXJyb3I6OkFCT1JUX0VSUik7Ci0gICAgQVNTRVJUKG1fcXVldWVkT3BlcmF0aW9u
ID09IE9wZXJhdGlvbk5vbmUpOwotICAgIEFTU0VSVChtX3JlYWR5U3RhdGUgPT0gV1JJVElORyk7
Ci0gICAgbV9ibG9iQmVpbmdXcml0dGVuLmNsZWFyKCk7Ci0gICAgbV9vcGVyYXRpb25JblByb2dy
ZXNzID0gT3BlcmF0aW9uTm9uZTsKLSAgICBzaWduYWxDb21wbGV0aW9uKGNvZGUpOwotICAgIHVu
c2V0UGVuZGluZ0FjdGl2aXR5KHRoaXMpOwotfQotCi12b2lkIEZpbGVXcml0ZXI6OmNvbXBsZXRl
QWJvcnQoKQotewotICAgIEFTU0VSVChtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPT0gT3BlcmF0aW9u
QWJvcnQpOwotICAgIG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9IE9wZXJhdGlvbk5vbmU7Ci0gICAg
T3BlcmF0aW9uIG9wZXJhdGlvbiA9IG1fcXVldWVkT3BlcmF0aW9uOwotICAgIG1fcXVldWVkT3Bl
cmF0aW9uID0gT3BlcmF0aW9uTm9uZTsKLSAgICBkb09wZXJhdGlvbihvcGVyYXRpb24pOwotICAg
IHVuc2V0UGVuZGluZ0FjdGl2aXR5KHRoaXMpOwotfQotCi12b2lkIEZpbGVXcml0ZXI6OmRvT3Bl
cmF0aW9uKE9wZXJhdGlvbiBvcGVyYXRpb24pCi17Ci0gICAgc3dpdGNoIChvcGVyYXRpb24pIHsK
LSAgICBjYXNlIE9wZXJhdGlvbldyaXRlOgotICAgICAgICBBU1NFUlQobV9vcGVyYXRpb25JblBy
b2dyZXNzID09IE9wZXJhdGlvbk5vbmUpOwotICAgICAgICBBU1NFUlQobV90cnVuY2F0ZUxlbmd0
aCA9PSAtMSk7Ci0gICAgICAgIEFTU0VSVChtX2Jsb2JCZWluZ1dyaXR0ZW4uZ2V0KCkpOwotICAg
ICAgICBBU1NFUlQobV9yZWFkeVN0YXRlID09IFdSSVRJTkcpOwotICAgICAgICBzZXRQZW5kaW5n
QWN0aXZpdHkodGhpcyk7Ci0gICAgICAgIHdyaXRlcigpLT53cml0ZShwb3NpdGlvbigpLCBtX2Js
b2JCZWluZ1dyaXR0ZW4uZ2V0KCkpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIE9wZXJhdGlv
blRydW5jYXRlOgotICAgICAgICBBU1NFUlQobV9vcGVyYXRpb25JblByb2dyZXNzID09IE9wZXJh
dGlvbk5vbmUpOwotICAgICAgICBBU1NFUlQobV90cnVuY2F0ZUxlbmd0aCA+PSAwKTsKLSAgICAg
ICAgQVNTRVJUKG1fcmVhZHlTdGF0ZSA9PSBXUklUSU5HKTsKLSAgICAgICAgc2V0UGVuZGluZ0Fj
dGl2aXR5KHRoaXMpOwotICAgICAgICB3cml0ZXIoKS0+dHJ1bmNhdGUobV90cnVuY2F0ZUxlbmd0
aCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgT3BlcmF0aW9uTm9uZToKLSAgICAgICAgQVNT
RVJUKG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9PSBPcGVyYXRpb25Ob25lKTsKLSAgICAgICAgQVNT
RVJUKG1fdHJ1bmNhdGVMZW5ndGggPT0gLTEpOwotICAgICAgICBBU1NFUlQoIW1fYmxvYkJlaW5n
V3JpdHRlbi5nZXQoKSk7Ci0gICAgICAgIEFTU0VSVChtX3JlYWR5U3RhdGUgPT0gRE9ORSk7Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgT3BlcmF0aW9uQWJvcnQ6Ci0gICAgICAgIGlmIChtX29w
ZXJhdGlvbkluUHJvZ3Jlc3MgPT0gT3BlcmF0aW9uV3JpdGUgfHwgbV9vcGVyYXRpb25JblByb2dy
ZXNzID09IE9wZXJhdGlvblRydW5jYXRlKQotICAgICAgICAgICAgd3JpdGVyKCktPmFib3J0KCk7
Ci0gICAgICAgIGVsc2UgaWYgKG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyAhPSBPcGVyYXRpb25BYm9y
dCkKLSAgICAgICAgICAgIG9wZXJhdGlvbiA9IE9wZXJhdGlvbk5vbmU7Ci0gICAgICAgIG1fcXVl
dWVkT3BlcmF0aW9uID0gT3BlcmF0aW9uTm9uZTsKLSAgICAgICAgbV9ibG9iQmVpbmdXcml0dGVu
LmNsZWFyKCk7Ci0gICAgICAgIG1fdHJ1bmNhdGVMZW5ndGggPSAtMTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgfQotICAgIEFTU0VSVChtX3F1ZXVlZE9wZXJhdGlvbiA9PSBPcGVyYXRpb25Ob25lKTsK
LSAgICBtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPSBvcGVyYXRpb247Ci19Ci0KLXZvaWQgRmlsZVdy
aXRlcjo6c2lnbmFsQ29tcGxldGlvbihGaWxlRXJyb3I6OkVycm9yQ29kZSBjb2RlKQotewotICAg
IG1fcmVhZHlTdGF0ZSA9IERPTkU7Ci0gICAgbV90cnVuY2F0ZUxlbmd0aCA9IC0xOwotICAgIGlm
IChGaWxlRXJyb3I6Ok9LICE9IGNvZGUpIHsKLSAgICAgICAgbV9lcnJvciA9IEZpbGVFcnJvcjo6
Y3JlYXRlKGNvZGUpOwotICAgICAgICBpZiAoRmlsZUVycm9yOjpBQk9SVF9FUlIgPT0gY29kZSkK
LSAgICAgICAgICAgIGZpcmVFdmVudChldmVudE5hbWVzKCkuYWJvcnRFdmVudCk7Ci0gICAgICAg
IGVsc2UKLSAgICAgICAgICAgIGZpcmVFdmVudChldmVudE5hbWVzKCkuZXJyb3JFdmVudCk7Ci0g
ICAgfSBlbHNlCi0gICAgICAgIGZpcmVFdmVudChldmVudE5hbWVzKCkud3JpdGVFdmVudCk7Ci0g
ICAgZmlyZUV2ZW50KGV2ZW50TmFtZXMoKS53cml0ZWVuZEV2ZW50KTsKLX0KLQotdm9pZCBGaWxl
V3JpdGVyOjpmaXJlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlKQotewotICAgICsrbV9y
ZWN1cnNpb25EZXB0aDsKLSAgICBkaXNwYXRjaEV2ZW50KFByb2dyZXNzRXZlbnQ6OmNyZWF0ZSh0
eXBlLCB0cnVlLCBtX2J5dGVzV3JpdHRlbiwgbV9ieXRlc1RvV3JpdGUpKTsKLSAgICAtLW1fcmVj
dXJzaW9uRGVwdGg7Ci0gICAgQVNTRVJUKG1fcmVjdXJzaW9uRGVwdGggPj0gMCk7Ci19Ci0KLXZv
aWQgRmlsZVdyaXRlcjo6c2V0RXJyb3IoRmlsZUVycm9yOjpFcnJvckNvZGUgZXJyb3JDb2RlLCBF
eGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICBlYyA9IEZpbGVFeGNlcHRpb246OkVycm9yQ29kZVRv
RXhjZXB0aW9uQ29kZShlcnJvckNvZGUpOwotICAgIG1fZXJyb3IgPSBGaWxlRXJyb3I6OmNyZWF0
ZShlcnJvckNvZGUpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBF
TkFCTEUoRklMRV9TWVNURU0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0
ZW0vRmlsZVdyaXRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmls
ZXN5c3RlbS9GaWxlV3JpdGVyLmgJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlV3JpdGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsMTMz
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6
Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
LSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2lmbmRlZiBGaWxlV3JpdGVyX2gKLSNkZWZpbmUgRmlsZVdyaXRlcl9oCi0KLSNp
ZiBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKLSNp
bmNsdWRlICJBc3luY0ZpbGVXcml0ZXJDbGllbnQuaCIKLSNpbmNsdWRlICJFdmVudFRhcmdldC5o
IgotI2luY2x1ZGUgIkZpbGVXcml0ZXJCYXNlLmgiCi0jaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEJsb2I7Ci1jbGFzcyBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OwotCi0vLyBGSVhNRTogVGhpcyBjbGFzcyBzaG91bGQgYmUgbWFy
a2VkIEZJTkFMIG9uY2UgPGh0dHA6Ly93ZWJraXQub3JnL2IvMTIxNzQ3PiBpcyBmaXhlZC4KLWNs
YXNzIEZpbGVXcml0ZXIgOiBwdWJsaWMgRmlsZVdyaXRlckJhc2UsIHB1YmxpYyBBY3RpdmVET01P
YmplY3QsIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhLCBwdWJsaWMgQXN5bmNGaWxl
V3JpdGVyQ2xpZW50IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxGaWxlV3JpdGVy
PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwotCi0gICAgZW51bSBSZWFkeVN0YXRl
IHsKLSAgICAgICAgSU5JVCA9IDAsCi0gICAgICAgIFdSSVRJTkcgPSAxLAotICAgICAgICBET05F
ID0gMgotICAgIH07Ci0KLSAgICB2b2lkIHdyaXRlKEJsb2IqLCBFeGNlcHRpb25Db2RlJik7Ci0g
ICAgdm9pZCBzZWVrKGxvbmcgbG9uZyBwb3NpdGlvbiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZv
aWQgdHJ1bmNhdGUobG9uZyBsb25nIGxlbmd0aCwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQg
YWJvcnQoRXhjZXB0aW9uQ29kZSYpOwotICAgIFJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fcmVhZHlTdGF0ZTsgfQotICAgIEZpbGVFcnJvciogZXJyb3IoKSBjb25zdCB7
IHJldHVybiBtX2Vycm9yLmdldCgpOyB9Ci0KLSAgICAvLyBBc3luY0ZpbGVXcml0ZXJDbGllbnQK
LSAgICB2b2lkIGRpZFdyaXRlKGxvbmcgbG9uZyBieXRlcywgYm9vbCBjb21wbGV0ZSk7Ci0gICAg
dm9pZCBkaWRUcnVuY2F0ZSgpOwotICAgIHZvaWQgZGlkRmFpbChGaWxlRXJyb3I6OkVycm9yQ29k
ZSk7Ci0KLSAgICAvLyBFdmVudFRhcmdldAotICAgIHZpcnR1YWwgRXZlbnRUYXJnZXRJbnRlcmZh
Y2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBPVkVSUklERSBGSU5BTCB7IHJldHVybiBG
aWxlV3JpdGVyRXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9Ci0gICAgdmlydHVhbCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgT1ZFUlJJREUg
RklOQUwgeyByZXR1cm4gQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7
IH0KLQotICAgIHVzaW5nIFJlZkNvdW50ZWQ8RmlsZVdyaXRlckJhc2U+OjpyZWY7Ci0gICAgdXNp
bmcgUmVmQ291bnRlZDxGaWxlV3JpdGVyQmFzZT46OmRlcmVmOwotCi0gICAgREVGSU5FX0FUVFJJ
QlVURV9FVkVOVF9MSVNURU5FUih3cml0ZXN0YXJ0KTsKLSAgICBERUZJTkVfQVRUUklCVVRFX0VW
RU5UX0xJU1RFTkVSKHByb2dyZXNzKTsKLSAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RF
TkVSKHdyaXRlKTsKLSAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGFib3J0KTsK
LSAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGVycm9yKTsKLSAgICBERUZJTkVf
QVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHdyaXRlZW5kKTsKLQotcHJpdmF0ZToKLSAgICBlbnVt
IE9wZXJhdGlvbiB7Ci0gICAgICAgIE9wZXJhdGlvbk5vbmUsCi0gICAgICAgIE9wZXJhdGlvbldy
aXRlLAotICAgICAgICBPcGVyYXRpb25UcnVuY2F0ZSwKLSAgICAgICAgT3BlcmF0aW9uQWJvcnQK
LSAgICB9OwotCi0gICAgRmlsZVdyaXRlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7Ci0KLSAg
ICB2aXJ0dWFsIH5GaWxlV3JpdGVyKCk7Ci0KLSAgICAvLyBBY3RpdmVET01PYmplY3QKLSAgICB2
aXJ0dWFsIGJvb2wgY2FuU3VzcGVuZCgpIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9p
ZCBzdG9wKCkgT1ZFUlJJREU7Ci0KLSAgICAvLyBFdmVudFRhcmdldAotICAgIHZpcnR1YWwgdm9p
ZCByZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIEZJTkFMIHsgcmVmKCk7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIEZJTkFMIHsgZGVyZWYoKTsgfQotCi0g
ICAgdm9pZCBjb21wbGV0ZUFib3J0KCk7Ci0KLSAgICB2b2lkIGRvT3BlcmF0aW9uKE9wZXJhdGlv
bik7Ci0KLSAgICB2b2lkIHNpZ25hbENvbXBsZXRpb24oRmlsZUVycm9yOjpFcnJvckNvZGUpOwot
Ci0gICAgdm9pZCBmaXJlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlKTsKLQotICAgIHZv
aWQgc2V0RXJyb3IoRmlsZUVycm9yOjpFcnJvckNvZGUsIEV4Y2VwdGlvbkNvZGUmKTsKLQotICAg
IFJlZlB0cjxGaWxlRXJyb3I+IG1fZXJyb3I7Ci0gICAgUmVhZHlTdGF0ZSBtX3JlYWR5U3RhdGU7
Ci0gICAgT3BlcmF0aW9uIG1fb3BlcmF0aW9uSW5Qcm9ncmVzczsKLSAgICBPcGVyYXRpb24gbV9x
dWV1ZWRPcGVyYXRpb247Ci0gICAgbG9uZyBsb25nIG1fYnl0ZXNXcml0dGVuOwotICAgIGxvbmcg
bG9uZyBtX2J5dGVzVG9Xcml0ZTsKLSAgICBsb25nIGxvbmcgbV90cnVuY2F0ZUxlbmd0aDsKLSAg
ICBsb25nIGxvbmcgbV9udW1BYm9ydHM7Ci0gICAgbG9uZyBsb25nIG1fcmVjdXJzaW9uRGVwdGg7
Ci0gICAgZG91YmxlIG1fbGFzdFByb2dyZXNzTm90aWZpY2F0aW9uVGltZU1TOwotICAgIFJlZlB0
cjxCbG9iPiBtX2Jsb2JCZWluZ1dyaXR0ZW47Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Ci0KLSNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNlbmRpZiAvLyBGaWxlV3JpdGVy
X2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlV3JpdGVyLmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVdy
aXRlci5pZGwJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmls
ZXN5c3RlbS9GaWxlV3JpdGVyLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMSw3MSArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICog
ZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1bCi0g
ICAgTm9JbnRlcmZhY2VPYmplY3QsCi0gICAgQ29uZGl0aW9uYWw9RklMRV9TWVNURU0sCi0gICAg
QWN0aXZlRE9NT2JqZWN0LAotICAgIEV2ZW50VGFyZ2V0LAotICAgIEpTTm9TdGF0aWNUYWJsZXMK
LV0gaW50ZXJmYWNlIEZpbGVXcml0ZXIgewotICAgIC8vIHJlYWR5IHN0YXRlcwotICAgIGNvbnN0
IHVuc2lnbmVkIHNob3J0IElOSVQgPSAwOwotICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFdSSVRJ
TkcgPSAxOwotICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IERPTkUgPSAyOwotICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSB1bnNpZ25lZCBzaG9ydCByZWFkeVN0YXRlOwotCi0gICAgLy8gYXN5bmMgd3Jp
dGUvbW9kaWZ5IG1ldGhvZHMKLSAgICBbUmFpc2VzRXhjZXB0aW9uXSB2b2lkIHdyaXRlKEJsb2Ig
ZGF0YSk7Ci0gICAgW1JhaXNlc0V4Y2VwdGlvbl0gdm9pZCBzZWVrKGxvbmcgbG9uZyBwb3NpdGlv
bik7Ci0gICAgW1JhaXNlc0V4Y2VwdGlvbl0gdm9pZCB0cnVuY2F0ZShsb25nIGxvbmcgc2l6ZSk7
Ci0KLSAgICBbUmFpc2VzRXhjZXB0aW9uXSB2b2lkIGFib3J0KCk7Ci0KLSAgICByZWFkb25seSBh
dHRyaWJ1dGUgRmlsZUVycm9yIGVycm9yOwotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25nIGxv
bmcgcG9zaXRpb247Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIGxvbmcgbG9uZyBsZW5ndGg7Ci0K
LSAgICAgICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbndyaXRlc3RhcnQ7Ci0gICAg
ICAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25wcm9ncmVzczsKLSAgICAgICAgICAg
ICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbndyaXRlOwotICAgICAgICAgICAgIGF0dHJpYnV0
ZSBFdmVudExpc3RlbmVyIG9uYWJvcnQ7Ci0gICAgICAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlz
dGVuZXIgb25lcnJvcjsKLSAgICAgICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbndy
aXRlZW5kOwotCi0gICAgLy8gRXZlbnRUYXJnZXQgaW50ZXJmYWNlCi0gICAgdm9pZCBhZGRFdmVu
dExpc3RlbmVyKERPTVN0cmluZyB0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICBFdmVu
dExpc3RlbmVyIGxpc3RlbmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbCBi
b29sZWFuIHVzZUNhcHR1cmUpOwotICAgIHZvaWQgcmVtb3ZlRXZlbnRMaXN0ZW5lcihET01TdHJp
bmcgdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXZlbnRMaXN0ZW5lciBsaXN0
ZW5lciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWwgYm9vbGVhbiB1c2VD
YXB0dXJlKTsKLSAgICBbUmFpc2VzRXhjZXB0aW9uXSBib29sZWFuIGRpc3BhdGNoRXZlbnQoRXZl
bnQgZXZ0KTsKLX07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmls
ZVdyaXRlckJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmls
ZXN5c3RlbS9GaWxlV3JpdGVyQmFzZS5jcHAJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlV3JpdGVyQmFzZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNzYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgot
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoRklM
RV9TWVNURU0pCi0KLSNpbmNsdWRlICJGaWxlV3JpdGVyQmFzZS5oIgotCi0jaW5jbHVkZSAiQXN5
bmNGaWxlV3JpdGVyLmgiCi0jaW5jbHVkZSAiQmxvYi5oIgotI2luY2x1ZGUgIkV4Y2VwdGlvbkNv
ZGUuaCIKLSNpbmNsdWRlICJGaWxlRXJyb3IuaCIKLSNpbmNsdWRlICJGaWxlRXhjZXB0aW9uLmgi
Ci0jaW5jbHVkZSAiUHJvZ3Jlc3NFdmVudC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUZp
bGVXcml0ZXJCYXNlOjp+RmlsZVdyaXRlckJhc2UoKQotewotfQotCi12b2lkIEZpbGVXcml0ZXJC
YXNlOjppbml0aWFsaXplKFBhc3NPd25QdHI8QXN5bmNGaWxlV3JpdGVyPiB3cml0ZXIsIGxvbmcg
bG9uZyBsZW5ndGgpCi17Ci0gICAgQVNTRVJUKCFtX3dyaXRlcik7Ci0gICAgQVNTRVJUKGxlbmd0
aCA+PSAwKTsKLSAgICBtX3dyaXRlciA9IHdyaXRlcjsKLSAgICBtX2xlbmd0aCA9IGxlbmd0aDsK
LX0KLQotRmlsZVdyaXRlckJhc2U6OkZpbGVXcml0ZXJCYXNlKCkKLSAgICA6IG1fcG9zaXRpb24o
MCkKLXsKLX0KLQotdm9pZCBGaWxlV3JpdGVyQmFzZTo6c2Vla0ludGVybmFsKGxvbmcgbG9uZyBw
b3NpdGlvbikKLXsKLSAgICBpZiAocG9zaXRpb24gPiBtX2xlbmd0aCkKLSAgICAgICAgcG9zaXRp
b24gPSBtX2xlbmd0aDsKLSAgICBlbHNlIGlmIChwb3NpdGlvbiA8IDApCi0gICAgICAgIHBvc2l0
aW9uID0gbV9sZW5ndGggKyBwb3NpdGlvbjsKLSAgICBpZiAocG9zaXRpb24gPCAwKQotICAgICAg
ICBwb3NpdGlvbiA9IDA7Ci0gICAgbV9wb3NpdGlvbiA9IHBvc2l0aW9uOwotfQotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVdyaXRlckJhc2UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVdyaXRlckJhc2Uu
aAkocmV2aXNpb24gMTU2NjkxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVt
L0ZpbGVXcml0ZXJCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsOTIgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlz
dHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwot
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVm
IEZpbGVXcml0ZXJCYXNlX2gKLSNkZWZpbmUgRmlsZVdyaXRlckJhc2VfaAotCi0jaWYgRU5BQkxF
KEZJTEVfU1lTVEVNKQotCi0jaW5jbHVkZSA8d3RmL093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9Q
YXNzT3duUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1jbGFzcyBBc3luY0ZpbGVXcml0ZXI7Ci0KLXR5cGVkZWYgaW50IEV4Y2VwdGlv
bkNvZGU7Ci0KLWNsYXNzIEZpbGVXcml0ZXJCYXNlIDogcHVibGljIFJlZkNvdW50ZWQ8RmlsZVdy
aXRlckJhc2U+IHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5GaWxlV3JpdGVyQmFzZSgpOwotICAg
IHZvaWQgaW5pdGlhbGl6ZShQYXNzT3duUHRyPEFzeW5jRmlsZVdyaXRlcj4sIGxvbmcgbG9uZyBs
ZW5ndGgpOwotCi0gICAgbG9uZyBsb25nIHBvc2l0aW9uKCkgY29uc3QKLSAgICB7Ci0gICAgICAg
IHJldHVybiBtX3Bvc2l0aW9uOwotICAgIH0KLSAgICBsb25nIGxvbmcgbGVuZ3RoKCkgY29uc3QK
LSAgICB7Ci0gICAgICAgIHJldHVybiBtX2xlbmd0aDsKLSAgICB9Ci0KLXByb3RlY3RlZDoKLSAg
ICBGaWxlV3JpdGVyQmFzZSgpOwotCi0gICAgQXN5bmNGaWxlV3JpdGVyKiB3cml0ZXIoKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIG1fd3JpdGVyLmdldCgpOwotICAgIH0KLQotICAgIHZvaWQgc2V0
UG9zaXRpb24obG9uZyBsb25nIHBvc2l0aW9uKQotICAgIHsKLSAgICAgICAgbV9wb3NpdGlvbiA9
IHBvc2l0aW9uOwotICAgIH0KLQotICAgIHZvaWQgc2V0TGVuZ3RoKGxvbmcgbG9uZyBsZW5ndGgp
Ci0gICAgewotICAgICAgICBtX2xlbmd0aCA9IGxlbmd0aDsKLSAgICB9Ci0KLSAgICB2b2lkIHNl
ZWtJbnRlcm5hbChsb25nIGxvbmcgcG9zaXRpb24pOwotCi1wcml2YXRlOgotICAgIGZyaWVuZCBj
bGFzcyBXVEY6OlJlZkNvdW50ZWQ8RmlsZVdyaXRlckJhc2U+OwotCi0gICAgT3duUHRyPEFzeW5j
RmlsZVdyaXRlcj4gbV93cml0ZXI7Ci0gICAgbG9uZyBsb25nIG1fcG9zaXRpb247Ci0gICAgbG9u
ZyBsb25nIG1fbGVuZ3RoOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYg
Ly8gRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jZW5kaWYgLy8gRmlsZVdyaXRlckJhc2VfaApJbmRl
eDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVXcml0ZXJCYXNlQ2FsbGJh
Y2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmls
ZVdyaXRlckJhc2VDYWxsYmFjay5oCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVdyaXRlckJhc2VDYWxsYmFjay5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgot
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEZpbGVXcml0ZXJCYXNlQ2FsbGJhY2tfaAotI2Rl
ZmluZSBGaWxlV3JpdGVyQmFzZUNhbGxiYWNrX2gKLQotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkK
LQotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
Y2xhc3MgRmlsZVdyaXRlckJhc2U7Ci0KLWNsYXNzIEZpbGVXcml0ZXJCYXNlQ2FsbGJhY2sgOiBw
dWJsaWMgUmVmQ291bnRlZDxGaWxlV3JpdGVyQmFzZUNhbGxiYWNrPiB7Ci1wdWJsaWM6Ci0gICAg
dmlydHVhbCB+RmlsZVdyaXRlckJhc2VDYWxsYmFjaygpIHsgfQotICAgIHZpcnR1YWwgYm9vbCBo
YW5kbGVFdmVudChGaWxlV3JpdGVyQmFzZSopID0gMDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlCi0K
LSNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNlbmRpZiAvLyBGaWxlV3JpdGVyQmFz
ZUNhbGxiYWNrX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxl
V3JpdGVyQ2FsbGJhY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zp
bGVzeXN0ZW0vRmlsZVdyaXRlckNhbGxiYWNrLmgJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlV3JpdGVyQ2FsbGJhY2suaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBGaWxlV3JpdGVyQ2FsbGJhY2tfaAotI2Rl
ZmluZSBGaWxlV3JpdGVyQ2FsbGJhY2tfaAotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0j
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFz
cyBGaWxlV3JpdGVyOwotCi1jbGFzcyBGaWxlV3JpdGVyQ2FsbGJhY2sgOiBwdWJsaWMgUmVmQ291
bnRlZDxGaWxlV3JpdGVyQ2FsbGJhY2s+IHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5GaWxlV3Jp
dGVyQ2FsbGJhY2soKSB7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlRXZlbnQoRmlsZVdyaXRl
ciopID0gMDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlCi0KLSNlbmRpZiAvLyBFTkFCTEUoRklMRV9T
WVNURU0pCi0KLSNlbmRpZiAvLyBGaWxlV3JpdGVyQ2FsbGJhY2tfaApJbmRleDogU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVXcml0ZXJDYWxsYmFjay5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVXcml0ZXJDYWxsYmFj
ay5pZGwJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5
c3RlbS9GaWxlV3JpdGVyQ2FsbGJhY2suaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xLDM1ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0g
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci1bCi0gICAgQ29uZGl0aW9uYWw9RklMRV9TWVNURU0sCi1dIGNhbGxiYWNrIGludGVyZmFjZSBG
aWxlV3JpdGVyQ2FsbGJhY2sgewotICAgIGJvb2xlYW4gaGFuZGxlRXZlbnQoRmlsZVdyaXRlciBm
aWxlV3JpdGVyKTsKLX07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0v
RmlsZVdyaXRlclN5bmMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmlsZXN5c3RlbS9GaWxlV3JpdGVyU3luYy5jcHAJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlV3JpdGVyU3luYy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMTQ4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xl
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxF
KEZJTEVfU1lTVEVNKQotCi0jaW5jbHVkZSAiRmlsZVdyaXRlclN5bmMuaCIKLQotI2luY2x1ZGUg
IkFzeW5jRmlsZVdyaXRlci5oIgotI2luY2x1ZGUgIkJsb2IuaCIKLSNpbmNsdWRlICJGaWxlRXhj
ZXB0aW9uLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdm9pZCBGaWxlV3JpdGVyU3luYzo6
d3JpdGUoQmxvYiogZGF0YSwgRXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0gICAgQVNTRVJUKHdyaXRl
cigpKTsKLSAgICBBU1NFUlQobV9jb21wbGV0ZSk7Ci0gICAgZWMgPSAwOwotICAgIGlmICghZGF0
YSkgewotICAgICAgICBlYyA9IEZpbGVFeGNlcHRpb246OlRZUEVfTUlTTUFUQ0hfRVJSOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgcHJlcGFyZUZvcldyaXRlKCk7Ci0gICAgd3JpdGVy
KCktPndyaXRlKHBvc2l0aW9uKCksIGRhdGEpOwotICAgIHdyaXRlcigpLT53YWl0Rm9yT3BlcmF0
aW9uVG9Db21wbGV0ZSgpOwotICAgIEFTU0VSVChtX2NvbXBsZXRlKTsKLSAgICBlYyA9IEZpbGVF
eGNlcHRpb246OkVycm9yQ29kZVRvRXhjZXB0aW9uQ29kZShtX2Vycm9yKTsKLSAgICBpZiAoZWMp
Ci0gICAgICAgIHJldHVybjsKLSAgICBzZXRQb3NpdGlvbihwb3NpdGlvbigpICsgZGF0YS0+c2l6
ZSgpKTsKLSAgICBpZiAocG9zaXRpb24oKSA+IGxlbmd0aCgpKQotICAgICAgICBzZXRMZW5ndGgo
cG9zaXRpb24oKSk7Ci19Ci0KLXZvaWQgRmlsZVdyaXRlclN5bmM6OnNlZWsobG9uZyBsb25nIHBv
c2l0aW9uLCBFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICBBU1NFUlQod3JpdGVyKCkpOwotICAg
IEFTU0VSVChtX2NvbXBsZXRlKTsKLSAgICBlYyA9IDA7Ci0gICAgc2Vla0ludGVybmFsKHBvc2l0
aW9uKTsKLX0KLQotdm9pZCBGaWxlV3JpdGVyU3luYzo6dHJ1bmNhdGUobG9uZyBsb25nIG9mZnNl
dCwgRXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0gICAgQVNTRVJUKHdyaXRlcigpKTsKLSAgICBBU1NF
UlQobV9jb21wbGV0ZSk7Ci0gICAgZWMgPSAwOwotICAgIGlmIChvZmZzZXQgPCAwKSB7Ci0gICAg
ICAgIGVjID0gRmlsZUV4Y2VwdGlvbjo6SU5WQUxJRF9TVEFURV9FUlI7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0gICAgcHJlcGFyZUZvcldyaXRlKCk7Ci0gICAgd3JpdGVyKCktPnRydW5jYXRl
KG9mZnNldCk7Ci0gICAgd3JpdGVyKCktPndhaXRGb3JPcGVyYXRpb25Ub0NvbXBsZXRlKCk7Ci0g
ICAgQVNTRVJUKG1fY29tcGxldGUpOwotICAgIGVjID0gRmlsZUV4Y2VwdGlvbjo6RXJyb3JDb2Rl
VG9FeGNlcHRpb25Db2RlKG1fZXJyb3IpOwotICAgIGlmIChlYykKLSAgICAgICAgcmV0dXJuOwot
ICAgIGlmIChvZmZzZXQgPCBwb3NpdGlvbigpKQotICAgICAgICBzZXRQb3NpdGlvbihvZmZzZXQp
OwotICAgIHNldExlbmd0aChvZmZzZXQpOwotfQotCi12b2lkIEZpbGVXcml0ZXJTeW5jOjpkaWRX
cml0ZShsb25nIGxvbmcsIGJvb2wgY29tcGxldGUpCi17Ci0gICAgQVNTRVJUKG1fZXJyb3IgPT0g
RmlsZUVycm9yOjpPSyk7Ci0gICAgQVNTRVJUKCFtX2NvbXBsZXRlKTsKLSNpZm5kZWYgTkRFQlVH
Ci0gICAgbV9jb21wbGV0ZSA9IGNvbXBsZXRlOwotI2Vsc2UKLSAgICBBU1NFUlRfVU5VU0VEKGNv
bXBsZXRlLCBjb21wbGV0ZSk7Ci0jZW5kaWYKLX0KLQotdm9pZCBGaWxlV3JpdGVyU3luYzo6ZGlk
VHJ1bmNhdGUoKQotewotICAgIEFTU0VSVChtX2Vycm9yID09IEZpbGVFcnJvcjo6T0spOwotICAg
IEFTU0VSVCghbV9jb21wbGV0ZSk7Ci0jaWZuZGVmIE5ERUJVRwotICAgIG1fY29tcGxldGUgPSB0
cnVlOwotI2VuZGlmCi19Ci0KLXZvaWQgRmlsZVdyaXRlclN5bmM6OmRpZEZhaWwoRmlsZUVycm9y
OjpFcnJvckNvZGUgZXJyb3IpCi17Ci0gICAgQVNTRVJUKG1fZXJyb3IgPT0gRmlsZUVycm9yOjpP
Syk7Ci0gICAgbV9lcnJvciA9IGVycm9yOwotICAgIEFTU0VSVCghbV9jb21wbGV0ZSk7Ci0jaWZu
ZGVmIE5ERUJVRwotICAgIG1fY29tcGxldGUgPSB0cnVlOwotI2VuZGlmCi19Ci0KLUZpbGVXcml0
ZXJTeW5jOjpGaWxlV3JpdGVyU3luYygpCi0gICAgOiBtX2Vycm9yKEZpbGVFcnJvcjo6T0spCi0j
aWZuZGVmIE5ERUJVRwotICAgICwgbV9jb21wbGV0ZSh0cnVlKQotI2VuZGlmCi17Ci19Ci0KLXZv
aWQgRmlsZVdyaXRlclN5bmM6OnByZXBhcmVGb3JXcml0ZSgpCi17Ci0gICAgQVNTRVJUKG1fY29t
cGxldGUpOwotICAgIG1fZXJyb3IgPSBGaWxlRXJyb3I6Ok9LOwotI2lmbmRlZiBOREVCVUcKLSAg
ICBtX2NvbXBsZXRlID0gZmFsc2U7Ci0jZW5kaWYKLX0KLQotRmlsZVdyaXRlclN5bmM6On5GaWxl
V3JpdGVyU3luYygpCi17Ci19Ci0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYg
Ly8gRU5BQkxFKEZJTEVfU1lTVEVNKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxl
c3lzdGVtL0ZpbGVXcml0ZXJTeW5jLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9maWxlc3lzdGVtL0ZpbGVXcml0ZXJTeW5jLmgJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlV3JpdGVyU3luYy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDc5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xl
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBGaWxlV3JpdGVyU3luY19oCi0jZGVmaW5l
IEZpbGVXcml0ZXJTeW5jX2gKLQotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2luY2x1ZGUg
IkFzeW5jRmlsZVdyaXRlckNsaWVudC5oIgotI2luY2x1ZGUgIkZpbGVFcnJvci5oIgotI2luY2x1
ZGUgIkZpbGVXcml0ZXJCYXNlLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBCbG9iOwotCi10eXBlZGVmIGludCBFeGNlcHRpb25D
b2RlOwotCi1jbGFzcyBGaWxlV3JpdGVyU3luYyA6IHB1YmxpYyBGaWxlV3JpdGVyQmFzZSwgcHVi
bGljIEFzeW5jRmlsZVdyaXRlckNsaWVudCB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8RmlsZVdyaXRlclN5bmM+IGNyZWF0ZSgpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IEZpbGVXcml0ZXJTeW5jKCkpOwotICAgIH0KLSAgICB2aXJ0dWFsIH5GaWxlV3JpdGVy
U3luYygpOwotCi0gICAgLy8gRmlsZVdyaXRlckJhc2UKLSAgICB2b2lkIHdyaXRlKEJsb2IqLCBF
eGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCBzZWVrKGxvbmcgbG9uZyBwb3NpdGlvbiwgRXhjZXB0
aW9uQ29kZSYpOwotICAgIHZvaWQgdHJ1bmNhdGUobG9uZyBsb25nIGxlbmd0aCwgRXhjZXB0aW9u
Q29kZSYpOwotCi0gICAgLy8gQXN5bmNGaWxlV3JpdGVyQ2xpZW50LCB2aWEgRmlsZVdyaXRlckJh
c2UKLSAgICB2b2lkIGRpZFdyaXRlKGxvbmcgbG9uZyBieXRlcywgYm9vbCBjb21wbGV0ZSk7Ci0g
ICAgdm9pZCBkaWRUcnVuY2F0ZSgpOwotICAgIHZvaWQgZGlkRmFpbChGaWxlRXJyb3I6OkVycm9y
Q29kZSk7Ci0KLXByaXZhdGU6Ci0gICAgRmlsZVdyaXRlclN5bmMoKTsKLSAgICB2b2lkIHByZXBh
cmVGb3JXcml0ZSgpOwotCi0gICAgRmlsZUVycm9yOjpFcnJvckNvZGUgbV9lcnJvcjsKLSNpZm5k
ZWYgTkRFQlVHCi0gICAgYm9vbCBtX2NvbXBsZXRlOwotI2VuZGlmCi19OwotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNlbmRpZiAv
LyBGaWxlV3JpdGVyX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9G
aWxlV3JpdGVyU3luYy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
aWxlc3lzdGVtL0ZpbGVXcml0ZXJTeW5jLmlkbAkocmV2aXNpb24gMTU2NjkxKQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVXcml0ZXJTeW5jLmlkbAkod29ya2luZyBj
b3B5KQpAQCAtMSw0MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
Ci0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLVsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKLSAgICBDb25k
aXRpb25hbD1GSUxFX1NZU1RFTSwKLSAgICBKU05vU3RhdGljVGFibGVzCi1dIGludGVyZmFjZSBG
aWxlV3JpdGVyU3luYyB7Ci0gICAgLy8gc3luY2hyb25vdXMgd3JpdGUvbW9kaWZ5IG1ldGhvZHMK
LSAgICBbUmFpc2VzRXhjZXB0aW9uXSB2b2lkIHdyaXRlKEJsb2IgZGF0YSk7Ci0gICAgW1JhaXNl
c0V4Y2VwdGlvbl0gdm9pZCBzZWVrKGxvbmcgbG9uZyBwb3NpdGlvbik7Ci0gICAgW1JhaXNlc0V4
Y2VwdGlvbl0gdm9pZCB0cnVuY2F0ZShsb25nIGxvbmcgc2l6ZSk7Ci0KLSAgICByZWFkb25seSBh
dHRyaWJ1dGUgbG9uZyBsb25nIHBvc2l0aW9uOwotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25n
IGxvbmcgbGVuZ3RoOwotfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3Rl
bS9IVE1MSW5wdXRFbGVtZW50RmlsZVN5c3RlbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0hUTUxJbnB1dEVsZW1lbnRGaWxlU3lzdGVtLmNwcAko
cmV2aXNpb24gMTU2NjkxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0hU
TUxJbnB1dEVsZW1lbnRGaWxlU3lzdGVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw5MSArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgot
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0g
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnRGaWxlU3lz
dGVtLmgiCi0KLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNpbmNsdWRlICJET01GaWxlUGF0
aC5oIgotI2luY2x1ZGUgIkRPTUZpbGVTeXN0ZW0uaCIKLSNpbmNsdWRlICJEaXJlY3RvcnlFbnRy
eS5oIgotI2luY2x1ZGUgIkVudHJ5QXJyYXkuaCIKLSNpbmNsdWRlICJGaWxlRW50cnkuaCIKLSNp
bmNsdWRlICJGaWxlTGlzdC5oIgotI2luY2x1ZGUgIkZpbGVNZXRhZGF0YS5oIgotI2luY2x1ZGUg
IkZpbGVTeXN0ZW0uaCIKLSNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCi0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotLy8gc3RhdGljCi1QYXNzUmVmUHRyPEVudHJ5QXJyYXk+IEhUTUxJbnB1
dEVsZW1lbnRGaWxlU3lzdGVtOjp3ZWJraXRFbnRyaWVzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0KQotewotICAg
IFJlZlB0cjxFbnRyeUFycmF5PiBhcnJheSA9IEVudHJ5QXJyYXk6OmNyZWF0ZSgpOwotICAgIEZp
bGVMaXN0KiBmaWxlcyA9IGlucHV0LT5maWxlcygpOwotCi0gICAgaWYgKCFmaWxlcykKLSAgICAg
ICAgcmV0dXJuIGFycmF5OwotCi0gICAgUmVmUHRyPERPTUZpbGVTeXN0ZW0+IGZpbGVzeXN0ZW0g
PSBET01GaWxlU3lzdGVtOjpjcmVhdGVJc29sYXRlZEZpbGVTeXN0ZW0oc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCwgaW5wdXQtPmRyb3BwZWRGaWxlU3lzdGVtSWQoKSk7Ci0gICAgaWYgKCFmaWxlc3lz
dGVtKSB7Ci0gICAgICAgIC8vIERyYWctZHJvcCBpc29sYXRlZCBmaWxlc3lzdGVtIGlzIG5vdCBh
dmFpbGFibGUuCi0gICAgICAgIHJldHVybiBhcnJheTsKLSAgICB9Ci0KLSAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgZmlsZXMtPmxlbmd0aCgpOyArK2kpIHsKLSAgICAgICAgRmlsZSogZmls
ZSA9IGZpbGVzLT5pdGVtKGkpOwotCi0gICAgICAgIC8vIEZJWE1FOiBUaGlzIGludm9sdmVzIHN5
bmNocm9ub3VzIGZpbGUgb3BlcmF0aW9uLgotICAgICAgICBGaWxlTWV0YWRhdGEgbWV0YWRhdGE7
Ci0gICAgICAgIGlmICghZ2V0RmlsZU1ldGFkYXRhKGZpbGUtPnBhdGgoKSwgbWV0YWRhdGEpKQot
ICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgLy8gVGhlIGRyb3BwZWQgZW50cmllcyBh
cmUgbWFwcGVkIGFzIHRvcC1sZXZlbCBlbnRyaWVzIGluIHRoZSBpc29sYXRlZCBmaWxlc3lzdGVt
LgotICAgICAgICBTdHJpbmcgdmlydHVhbFBhdGggPSBET01GaWxlUGF0aDo6YXBwZW5kKCIvIiwg
ZmlsZS0+bmFtZSgpKTsKLSAgICAgICAgaWYgKG1ldGFkYXRhLnR5cGUgPT0gRmlsZU1ldGFkYXRh
OjpUeXBlRGlyZWN0b3J5KQotICAgICAgICAgICAgYXJyYXktPmFwcGVuZChEaXJlY3RvcnlFbnRy
eTo6Y3JlYXRlKGZpbGVzeXN0ZW0sIHZpcnR1YWxQYXRoKSk7Ci0gICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIGFycmF5LT5hcHBlbmQoRmlsZUVudHJ5OjpjcmVhdGUoZmlsZXN5c3RlbSwgdmlydHVh
bFBhdGgpKTsKLSAgICB9Ci0gICAgcmV0dXJuIGFycmF5OwotfQotCi1IVE1MSW5wdXRFbGVtZW50
RmlsZVN5c3RlbTo6SFRNTElucHV0RWxlbWVudEZpbGVTeXN0ZW0oKQotewotfQotCi1IVE1MSW5w
dXRFbGVtZW50RmlsZVN5c3RlbTo6fkhUTUxJbnB1dEVsZW1lbnRGaWxlU3lzdGVtKCkKLXsKLX0K
LQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVN
KQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0hUTUxJbnB1dEVsZW1l
bnRGaWxlU3lzdGVtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxl
c3lzdGVtL0hUTUxJbnB1dEVsZW1lbnRGaWxlU3lzdGVtLmgJKHJldmlzaW9uIDE1NjY5MSkKKysr
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9IVE1MSW5wdXRFbGVtZW50RmlsZVN5
c3RlbS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgot
ICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
LSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEhUTUxJbnB1dEVs
ZW1lbnRGaWxlU3lzdGVtX2gKLSNkZWZpbmUgSFRNTElucHV0RWxlbWVudEZpbGVTeXN0ZW1faAot
Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1j
bGFzcyBFbnRyeUFycmF5OwotY2xhc3MgSFRNTElucHV0RWxlbWVudDsKLWNsYXNzIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ7Ci0KLWNsYXNzIEhUTUxJbnB1dEVsZW1lbnRGaWxlU3lzdGVtIHsKLXB1
YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxFbnRyeUFycmF5PiB3ZWJraXRFbnRyaWVzKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBIVE1MSW5wdXRFbGVtZW50Kik7Ci0KLXByaXZhdGU6Ci0g
ICAgSFRNTElucHV0RWxlbWVudEZpbGVTeXN0ZW0oKTsKLSAgICB+SFRNTElucHV0RWxlbWVudEZp
bGVTeXN0ZW0oKTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEhU
TUxJbnB1dEVsZW1lbnRGaWxlU3lzdGVtX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmlsZXN5c3RlbS9IVE1MSW5wdXRFbGVtZW50RmlsZVN5c3RlbS5pZGwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0hUTUxJbnB1dEVsZW1lbnRGaWxlU3lz
dGVtLmlkbAkocmV2aXNpb24gMTU2NjkxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxl
c3lzdGVtL0hUTUxJbnB1dEVsZW1lbnRGaWxlU3lzdGVtLmlkbAkod29ya2luZyBjb3B5KQpAQCAt
MSwzNiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBt
ZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotWwotICAgIENvbmRpdGlvbmFsPUZJTEVfU1lTVEVNLAotXSBwYXJ0aWFsIGlu
dGVyZmFjZSBIVE1MSW5wdXRFbGVtZW50IHsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9u
Q29udGV4dF0gcmVhZG9ubHkgYXR0cmlidXRlIEVudHJ5QXJyYXkgd2Via2l0RW50cmllczsKLX07
Ci0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9Mb2NhbEZpbGVTeXN0
ZW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9M
b2NhbEZpbGVTeXN0ZW0uY3BwCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZpbGVzeXN0ZW0vTG9jYWxGaWxlU3lzdGVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MSwxMDYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICog
bWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJMb2NhbEZpbGVTeXN0
ZW0uaCIKLQotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2luY2x1ZGUgIkNyb3NzVGhyZWFk
VGFzay5oIgotI2luY2x1ZGUgIkRPTUZpbGVTeXN0ZW0uaCIKLSNpbmNsdWRlICJFcnJvckNhbGxi
YWNrLmgiCi0jaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgotI2luY2x1ZGUgIkZpbGVFcnJvci5o
IgotI2luY2x1ZGUgIkZpbGVTeXN0ZW1DYWxsYmFjay5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW1D
YWxsYmFja3MuaCIKLSNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVk
ZSAiU2VjdXJpdHlPcmlnaW4uaCIKLSNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgotI2luY2x1
ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotTG9jYWxGaWxl
U3lzdGVtKiBMb2NhbEZpbGVTeXN0ZW06OnNfaW5zdGFuY2UgPSAwOwotCi12b2lkIExvY2FsRmls
ZVN5c3RlbTo6aW5pdGlhbGl6ZUxvY2FsRmlsZVN5c3RlbShjb25zdCBTdHJpbmcmIGJhc2VQYXRo
KQotewotICAgIC8vIEZJWE1FOiBTaG91bGQgaW5pdGlhbGl6ZSB0aGUgcXVvdGEgc2V0dGluZ3Mg
YXMgd2VsbC4KLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIEFTU0VSVCghc19pbnN0
YW5jZSk7Ci0gICAgaWYgKHNfaW5zdGFuY2UpCi0gICAgICAgIHJldHVybjsKLQotICAgIE93blB0
cjxMb2NhbEZpbGVTeXN0ZW0+IGxvY2FsRmlsZVN5c3RlbSA9IGFkb3B0UHRyKG5ldyBMb2NhbEZp
bGVTeXN0ZW0oYmFzZVBhdGgpKTsKLSAgICBzX2luc3RhbmNlID0gbG9jYWxGaWxlU3lzdGVtLmxl
YWtQdHIoKTsKLX0KLQotTG9jYWxGaWxlU3lzdGVtJiBMb2NhbEZpbGVTeXN0ZW06OmxvY2FsRmls
ZVN5c3RlbSgpCi17Ci0gICAgLy8gaW5pdGlhbGl6ZUxvY2FsRmlsZVN5c3RlbSBtdXN0IGJlIGNh
bGxlZCBwcmlvciBjYWxsaW5nIHRoaXMuCi0gICAgQVNTRVJUKHNfaW5zdGFuY2UpOwotICAgIHJl
dHVybiAqc19pbnN0YW5jZTsKLX0KLQotU3RyaW5nIExvY2FsRmlsZVN5c3RlbTo6ZmlsZVN5c3Rl
bUJhc2VQYXRoKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9iYXNlUGF0aDsKLX0KLQotc3RhdGlj
IHZvaWQgb3BlbkZpbGVTeXN0ZW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmlu
ZyYgYmFzZVBhdGgsIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgRmlsZVN5c3RlbVR5cGUgdHlw
ZSwgYm9vbCBjcmVhdGUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxs
YmFja3MpCi17Ci0gICAgQXN5bmNGaWxlU3lzdGVtOjpvcGVuRmlsZVN5c3RlbShiYXNlUGF0aCwg
aWRlbnRpZmllciwgdHlwZSwgY3JlYXRlLCBjYWxsYmFja3MpOwotfQotCi1zdGF0aWMgdm9pZCBw
ZXJmb3JtRGVsZXRlRmlsZVN5c3RlbShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3Ry
aW5nJiBiYXNlUGF0aCwgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBGaWxlU3lzdGVtVHlwZSB0
eXBlLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQotewot
ICAgIEFzeW5jRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZVN5c3RlbShiYXNlUGF0aCwgaWRlbnRpZmll
ciwgdHlwZSwgY2FsbGJhY2tzKTsKLX0KLQotdm9pZCBMb2NhbEZpbGVTeXN0ZW06OnJlYWRGaWxl
U3lzdGVtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEZpbGVTeXN0ZW1UeXBlIHR5
cGUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MsIEZpbGVT
eXN0ZW1TeW5jaHJvbm91c1R5cGUpCi17Ci0gICAgLy8gQXN5bmNGaWxlU3lzdGVtOjpvcGVuRmls
ZVN5c3RlbSBjYWxscyBjYWxsYmFja3Mgc3luY2hyb25vdXNseSwgc28gdGhlIG1ldGhvZCBuZWVk
cyB0byBiZSBjYWxsZWQgYXN5bmNocm9ub3VzbHkuCi0gICAgY29udGV4dC0+cG9zdFRhc2soY3Jl
YXRlQ2FsbGJhY2tUYXNrKCZvcGVuRmlsZVN5c3RlbSwgZmlsZVN5c3RlbUJhc2VQYXRoKCksIGNv
bnRleHQtPnNlY3VyaXR5T3JpZ2luKCktPmRhdGFiYXNlSWRlbnRpZmllcigpLCB0eXBlLCBmYWxz
ZSwgY2FsbGJhY2tzKSk7Ci19Ci0KLXZvaWQgTG9jYWxGaWxlU3lzdGVtOjpyZXF1ZXN0RmlsZVN5
c3RlbShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBGaWxlU3lzdGVtVHlwZSB0eXBl
LCBsb25nIGxvbmcsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFj
a3MsIEZpbGVTeXN0ZW1TeW5jaHJvbm91c1R5cGUpCi17Ci0gICAgLy8gQXN5bmNGaWxlU3lzdGVt
OjpvcGVuRmlsZVN5c3RlbSBjYWxscyBjYWxsYmFja3Mgc3luY2hyb25vdXNseSwgc28gdGhlIG1l
dGhvZCBuZWVkcyB0byBiZSBjYWxsZWQgYXN5bmNocm9ub3VzbHkuCi0gICAgY29udGV4dC0+cG9z
dFRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZvcGVuRmlsZVN5c3RlbSwgZmlsZVN5c3RlbUJhc2VQ
YXRoKCksIGNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCktPmRhdGFiYXNlSWRlbnRpZmllcigpLCB0
eXBlLCB0cnVlLCBjYWxsYmFja3MpKTsKLX0KLQotdm9pZCBMb2NhbEZpbGVTeXN0ZW06OmRlbGV0
ZUZpbGVTeXN0ZW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRmlsZVN5c3RlbVR5
cGUgdHlwZSwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykK
LXsKLSAgICAvLyBBc3luY0ZpbGVTeXN0ZW06OmRlbGV0ZUZpbGVTeXN0ZW0gY2FsbHMgY2FsbGJh
Y2tzIHN5bmNocm9ub3VzbHksIHNvIHRoZSBtZXRob2QgbmVlZHMgdG8gYmUgY2FsbGVkIGFzeW5j
aHJvbm91c2x5LgotICAgIGNvbnRleHQtPnBvc3RUYXNrKGNyZWF0ZUNhbGxiYWNrVGFzaygmcGVy
Zm9ybURlbGV0ZUZpbGVTeXN0ZW0sIGZpbGVTeXN0ZW1CYXNlUGF0aCgpLCBjb250ZXh0LT5zZWN1
cml0eU9yaWdpbigpLT5kYXRhYmFzZUlkZW50aWZpZXIoKSwgdHlwZSwgY2FsbGJhY2tzKSk7Ci19
Ci0KLX0gLy8gbmFtZXNwYWNlCi0KLSNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vTG9jYWxGaWxlU3lzdGVtLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0xvY2FsRmlsZVN5
c3RlbS5oCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVz
eXN0ZW0vTG9jYWxGaWxlU3lzdGVtLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsOTYgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0g
KiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQot
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
Zm5kZWYgTG9jYWxGaWxlU3lzdGVtX2gKLSNkZWZpbmUgTG9jYWxGaWxlU3lzdGVtX2gKLQotI2lm
IEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2luY2x1ZGUgIkRPTUZpbGVTeXN0ZW1CYXNlLmgiCi0j
aW5jbHVkZSAiRmlsZVN5c3RlbVR5cGUuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgot
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgRXJyb3JDYWxsYmFjazsKLWNsYXNz
IEZpbGVTeXN0ZW1DYWxsYmFjazsKLWNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci0KLS8v
IEtlZXBzIHBlci1wcm9jZXNzIGluZm9ybWF0aW9uIGFuZCBwcm92aWRlcyBhbiBlbnRyeSBwb2lu
dCB0byBvcGVuIGEgZmlsZSBzeXN0ZW0uCi1jbGFzcyBMb2NhbEZpbGVTeXN0ZW0gewotICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKExvY2FsRmlsZVN5c3RlbSk7Ci1wdWJsaWM6Ci0gICAgLy8gUmV0
dXJucyBhIHBlci1wcm9jZXNzIGluc3RhbmNlIG9mIExvY2FsRmlsZVN5c3RlbS4KLSAgICAvLyBO
b3RlIHRoYXQgTG9jYWxGaWxlU3lzdGVtOjppbml0aWFsaXplTG9jYWxGaWxlU3lzdGVtIG11c3Qg
YmUgY2FsbGVkIGJlZm9yZQotICAgIC8vIGNhbGxpbmcgdGhpcyBvbmUuCi0gICAgc3RhdGljIExv
Y2FsRmlsZVN5c3RlbSYgbG9jYWxGaWxlU3lzdGVtKCk7Ci0KLSAgICAvLyBEb2VzIG5vdCBjcmVh
dGUgdGhlIHJvb3QgcGF0aCBmb3IgZmlsZSBzeXN0ZW0sIGp1c3QgcmVhZHMgaXQgaWYgYXZhaWxh
YmxlLgotICAgIHZvaWQgcmVhZEZpbGVTeXN0ZW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEZp
bGVTeXN0ZW1UeXBlLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4sIEZpbGVT
eXN0ZW1TeW5jaHJvbm91c1R5cGUgPSBBc3luY2hyb25vdXNGaWxlU3lzdGVtKTsKLQotICAgIHZv
aWQgcmVxdWVzdEZpbGVTeXN0ZW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEZpbGVTeXN0ZW1U
eXBlLCBsb25nIGxvbmcgc2l6ZSwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+
LCBGaWxlU3lzdGVtU3luY2hyb25vdXNUeXBlID0gQXN5bmNocm9ub3VzRmlsZVN5c3RlbSk7Ci0K
LSAgICB2b2lkIGRlbGV0ZUZpbGVTeXN0ZW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEZpbGVT
eXN0ZW1UeXBlLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwotCi0gICAg
Ly8gVGhpcyBjYWxsIGlzIG5vdCB0aHJlYWQtc2FmZTsgbXVzdCBiZSBjYWxsZWQgYmVmb3JlIGFu
eSB3b3JrZXIgdGhyZWFkcyBhcmUgY3JlYXRlZC4KLSAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXpl
TG9jYWxGaWxlU3lzdGVtKGNvbnN0IFN0cmluZyYpOwotCi0gICAgU3RyaW5nIGZpbGVTeXN0ZW1C
YXNlUGF0aCgpIGNvbnN0OwotCi1wcml2YXRlOgotICAgIGV4cGxpY2l0IExvY2FsRmlsZVN5c3Rl
bShjb25zdCBTdHJpbmcmIGJhc2VQYXRoKQotICAgICAgICA6IG1fYmFzZVBhdGgoYmFzZVBhdGgp
Ci0gICAgewotICAgIH0KLQotICAgIHN0YXRpYyBMb2NhbEZpbGVTeXN0ZW0qIHNfaW5zdGFuY2U7
Ci0KLSAgICAvLyBBbiBpbm5lciBjbGFzcyB0aGF0IGVuZm9yY2VzIHRocmVhZC1zYWZlIHN0cmlu
ZyBhY2Nlc3MuCi0gICAgY2xhc3MgU3lzdGVtQmFzZVBhdGggewotICAgIHB1YmxpYzoKLSAgICAg
ICAgZXhwbGljaXQgU3lzdGVtQmFzZVBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKSA6IG1fdmFsdWUo
cGF0aCkgeyB9Ci0gICAgICAgIG9wZXJhdG9yIFN0cmluZygpIGNvbnN0Ci0gICAgICAgIHsKLSAg
ICAgICAgICAgIHJldHVybiBtX3ZhbHVlLmlzb2xhdGVkQ29weSgpOwotICAgICAgICB9Ci0gICAg
cHJpdmF0ZToKLSAgICAgICAgU3RyaW5nIG1fdmFsdWU7Ci0gICAgfTsKLQotICAgIFN5c3RlbUJh
c2VQYXRoIG1fYmFzZVBhdGg7Ci19OwotCi19IC8vIG5hbWVzcGFjZQotCi0jZW5kaWYgLy8gRU5B
QkxFKEZJTEVfU1lTVEVNKQotCi0jZW5kaWYgLy8gTG9jYWxGaWxlU3lzdGVtX2gKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9NZXRhZGF0YS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9NZXRhZGF0YS5oCShyZXZpc2lvbiAx
NTY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vTWV0YWRhdGEuaAko
d29ya2luZyBjb3B5KQpAQCAtMSw3MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEw
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAq
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBNZXRhZGF0YV9oCi0jZGVmaW5l
IE1ldGFkYXRhX2gKLQotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2luY2x1ZGUgIkZpbGVN
ZXRhZGF0YS5oIgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotY2xhc3MgTWV0YWRhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxNZXRhZGF0YT4gewot
cHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1ldGFkYXRhPiBjcmVhdGUoY29uc3QgRmls
ZU1ldGFkYXRhJiBwbGF0Zm9ybU1ldGFkYXRhKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBNZXRhZGF0YShwbGF0Zm9ybU1ldGFkYXRhKSk7Ci0gICAgfQotCi0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8TWV0YWRhdGE+IGNyZWF0ZShNZXRhZGF0YSogbWV0YWRhdGEpCi0gICAgewot
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1ldGFkYXRhKG1ldGFkYXRhLT5tX3BsYXRmb3Jt
TWV0YWRhdGEpKTsKLSAgICB9Ci0KLSAgICAvLyBOZWVkcyB0byByZXR1cm4gZXBvY2ggdGltZSBp
biBtaWxsaXNlY29uZHMgZm9yIERhdGUgd2hpbGUgRmlsZU1ldGFkYXRhJ3MgbW9kaWZpY2F0aW9u
VGltZSBpcyBpbiBzZWNvbmRzLgotICAgIGRvdWJsZSBtb2RpZmljYXRpb25UaW1lKCkgY29uc3Qg
eyByZXR1cm4gbV9wbGF0Zm9ybU1ldGFkYXRhLm1vZGlmaWNhdGlvblRpbWUgKiAxMDAwLjA7IH0K
LSAgICB1bnNpZ25lZCBsb25nIGxvbmcgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0
PHVuc2lnbmVkIGxvbmcgbG9uZz4obV9wbGF0Zm9ybU1ldGFkYXRhLmxlbmd0aCk7IH0KLQotcHJp
dmF0ZToKLSAgICBleHBsaWNpdCBNZXRhZGF0YShjb25zdCBGaWxlTWV0YWRhdGEmIHBsYXRmb3Jt
TWV0YWRhdGEpCi0gICAgICAgIDogbV9wbGF0Zm9ybU1ldGFkYXRhKHBsYXRmb3JtTWV0YWRhdGEp
Ci0gICAgewotICAgIH0KLQotICAgIEZpbGVNZXRhZGF0YSBtX3BsYXRmb3JtTWV0YWRhdGE7Ci19
OwotCi19IC8vIG5hbWVzcGFjZQotCi0jZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0j
ZW5kaWYgLy8gTWV0YWRhdGFfaApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lz
dGVtL01ldGFkYXRhLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zp
bGVzeXN0ZW0vTWV0YWRhdGEuaWRsCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vTWV0YWRhdGEuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xLDM5
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoK
LSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgot
ICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi1bCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCi0gICAgQ29uZGl0aW9uYWw9RklMRV9T
WVNURU0sCi0gICAgSlNOb1N0YXRpY1RhYmxlcywKLSAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRh
YmxlCi1dIGludGVyZmFjZSBNZXRhZGF0YSB7Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIERhdGUg
bW9kaWZpY2F0aW9uVGltZTsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBs
b25nIHNpemU7Ci19OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL01l
dGFkYXRhQ2FsbGJhY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zp
bGVzeXN0ZW0vTWV0YWRhdGFDYWxsYmFjay5oCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vTWV0YWRhdGFDYWxsYmFjay5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgot
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIE1ldGFkYXRhQ2FsbGJhY2tfaAotI2RlZmluZSBN
ZXRhZGF0YUNhbGxiYWNrX2gKLQotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgTWV0YWRh
dGE7Ci0KLWNsYXNzIE1ldGFkYXRhQ2FsbGJhY2sgOiBwdWJsaWMgUmVmQ291bnRlZDxNZXRhZGF0
YUNhbGxiYWNrPiB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+TWV0YWRhdGFDYWxsYmFjaygpIHsg
fQotICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVFdmVudChNZXRhZGF0YSopID0gMDsKLX07Ci0KLX0g
Ly8gbmFtZXNwYWNlCi0KLSNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNlbmRpZiAv
LyBNZXRhZGF0YUNhbGxiYWNrX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5
c3RlbS9NZXRhZGF0YUNhbGxiYWNrLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZpbGVzeXN0ZW0vTWV0YWRhdGFDYWxsYmFjay5pZGwJKHJldmlzaW9uIDE1NjY5MSkK
KysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9NZXRhZGF0YUNhbGxiYWNrLmlk
bAkod29ya2luZyBjb3B5KQpAQCAtMSwzNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
LSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
LSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotWwotICAgIENvbmRpdGlvbmFsPUZJTEVf
U1lTVEVNLAotXSBjYWxsYmFjayBpbnRlcmZhY2UgTWV0YWRhdGFDYWxsYmFjayB7Ci0gICAgYm9v
bGVhbiBoYW5kbGVFdmVudChNZXRhZGF0YSBtZXRhZGF0YSk7Ci19OwpJbmRleDogU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL1N5bmNDYWxsYmFja0hlbHBlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9TeW5jQ2FsbGJhY2tIZWxwZXIu
aAkocmV2aXNpb24gMTU2NjkxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVt
L1N5bmNDYWxsYmFja0hlbHBlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE4OSArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAq
IGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0g
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lm
bmRlZiBTeW5jQ2FsbGJhY2tIZWxwZXJfaAotI2RlZmluZSBTeW5jQ2FsbGJhY2tIZWxwZXJfaAot
Ci0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jaW5jbHVkZSAiRGlyZWN0b3J5RW50cnkuaCIK
LSNpbmNsdWRlICJFbnRyaWVzQ2FsbGJhY2suaCIKLSNpbmNsdWRlICJFbnRyeUFycmF5U3luYy5o
IgotI2luY2x1ZGUgIkVudHJ5Q2FsbGJhY2suaCIKLSNpbmNsdWRlICJFcnJvckNhbGxiYWNrLmgi
Ci0jaW5jbHVkZSAiRmlsZUVudHJ5LmgiCi0jaW5jbHVkZSAiRmlsZUVycm9yLmgiCi0jaW5jbHVk
ZSAiRmlsZUV4Y2VwdGlvbi5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW1DYWxsYmFjay5oIgotI2lu
Y2x1ZGUgIk1ldGFkYXRhQ2FsbGJhY2suaCIKLSNpbmNsdWRlICJWb2lkQ2FsbGJhY2suaCIKLSNp
bmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgQXN5bmNGaWxlU3lzdGVtOwotY2xhc3MgRGly
ZWN0b3J5RW50cnlTeW5jOwotY2xhc3MgRW50cnlBcnJheVN5bmM7Ci1jbGFzcyBFbnRyeVN5bmM7
Ci1jbGFzcyBGaWxlRW50cnlTeW5jOwotCi10eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwotCi0v
LyBBIGhlbHBlciB0ZW1wbGF0ZSBmb3IgRmlsZVN5c3RlbVN5bmMgaW1wbGVtZW50YXRpb24uCi10
ZW1wbGF0ZSA8dHlwZW5hbWUgU3VjY2Vzc0NhbGxiYWNrLCB0eXBlbmFtZSBPYnNlcnZlclR5cGUs
IHR5cGVuYW1lIENhbGxiYWNrQXJnLCB0eXBlbmFtZSBSZXN1bHRUeXBlPgotY2xhc3MgU3luY0Nh
bGxiYWNrSGVscGVyIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTeW5jQ2FsbGJhY2tIZWxw
ZXIpOwotcHVibGljOgotICAgIHR5cGVkZWYgU3luY0NhbGxiYWNrSGVscGVyPFN1Y2Nlc3NDYWxs
YmFjaywgT2JzZXJ2ZXJUeXBlLCBDYWxsYmFja0FyZywgUmVzdWx0VHlwZT4gSGVscGVyVHlwZTsK
LSAgICBTeW5jQ2FsbGJhY2tIZWxwZXIoT2JzZXJ2ZXJUeXBlKiBvYnNlcnZlciA9IDApCi0gICAg
ICAgIDogbV9vYnNlcnZlcihvYnNlcnZlcikKLSAgICAgICAgLCBtX3N1Y2Nlc3NDYWxsYmFjayhT
dWNjZXNzQ2FsbGJhY2tJbXBsOjpjcmVhdGUodGhpcykpCi0gICAgICAgICwgbV9lcnJvckNhbGxi
YWNrKEVycm9yQ2FsbGJhY2tJbXBsOjpjcmVhdGUodGhpcykpCi0gICAgICAgICwgbV9leGNlcHRp
b25Db2RlKDApCi0gICAgICAgICwgbV9jb21wbGV0ZWQoZmFsc2UpCi0gICAgewotICAgIH0KLQot
ICAgIFBhc3NSZWZQdHI8UmVzdWx0VHlwZT4gZ2V0UmVzdWx0KEV4Y2VwdGlvbkNvZGUmIGVjKQot
ICAgIHsKLSAgICAgICAgaWYgKG1fb2JzZXJ2ZXIpIHsKLSAgICAgICAgICAgIHdoaWxlICghbV9j
b21wbGV0ZWQpIHsKLSAgICAgICAgICAgICAgICBpZiAoIW1fb2JzZXJ2ZXItPndhaXRGb3JPcGVy
YXRpb25Ub0NvbXBsZXRlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgbV9leGNlcHRpb25Db2Rl
ID0gRmlsZUV4Y2VwdGlvbjo6QUJPUlRfRVJSOwotICAgICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZWMg
PSBtX2V4Y2VwdGlvbkNvZGU7Ci0gICAgICAgIHJldHVybiBtX3Jlc3VsdC5yZWxlYXNlKCk7Ci0g
ICAgfQotCi0gICAgUGFzc1JlZlB0cjxTdWNjZXNzQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaygp
IHsgcmV0dXJuIG1fc3VjY2Vzc0NhbGxiYWNrOyB9Ci0gICAgUGFzc1JlZlB0cjxFcnJvckNhbGxi
YWNrPiBlcnJvckNhbGxiYWNrKCkgeyByZXR1cm4gbV9lcnJvckNhbGxiYWNrOyB9Ci0KLXByaXZh
dGU6Ci0gICAgY2xhc3MgU3VjY2Vzc0NhbGxiYWNrSW1wbCA6IHB1YmxpYyBTdWNjZXNzQ2FsbGJh
Y2sgewotICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3VjY2Vzc0NhbGxi
YWNrSW1wbD4gY3JlYXRlKEhlbHBlclR5cGUqIGhlbHBlcikKLSAgICAgICAgewotICAgICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdWNjZXNzQ2FsbGJhY2tJbXBsKGhlbHBlcikpOwotICAg
ICAgICB9Ci0KLSAgICAgICAgdmlydHVhbCBib29sIGhhbmRsZUV2ZW50KCkKLSAgICAgICAgewot
ICAgICAgICAgICAgbV9oZWxwZXItPnNldEVycm9yKDApOwotICAgICAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgICAgIH0KLQotICAgICAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlRXZlbnQoQ2FsbGJh
Y2tBcmcqIGFyZykKLSAgICAgICAgewotICAgICAgICAgICAgbV9oZWxwZXItPnNldFJlc3VsdChS
ZXN1bHRUeXBlOjpjcmVhdGUoYXJnKSk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAg
ICAgfQotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgZXhwbGljaXQgU3VjY2Vzc0NhbGxiYWNrSW1w
bChIZWxwZXJUeXBlKiBoZWxwZXIpCi0gICAgICAgICAgICA6IG1faGVscGVyKGhlbHBlcikKLSAg
ICAgICAgewotICAgICAgICB9Ci0gICAgICAgIEhlbHBlclR5cGUqIG1faGVscGVyOwotICAgIH07
Ci0KLSAgICBjbGFzcyBFcnJvckNhbGxiYWNrSW1wbCA6IHB1YmxpYyBFcnJvckNhbGxiYWNrIHsK
LSAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2tJbXBs
PiBjcmVhdGUoSGVscGVyVHlwZSogaGVscGVyKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IEVycm9yQ2FsbGJhY2tJbXBsKGhlbHBlcikpOwotICAgICAgICB9Ci0K
LSAgICAgICAgdmlydHVhbCBib29sIGhhbmRsZUV2ZW50KEZpbGVFcnJvciogZXJyb3IpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChlcnJvcik7Ci0gICAgICAgICAgICBtX2hlbHBlci0+
c2V0RXJyb3IoZXJyb3ItPmNvZGUoKSk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAg
ICAgfQotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgZXhwbGljaXQgRXJyb3JDYWxsYmFja0ltcGwo
SGVscGVyVHlwZSogaGVscGVyKQotICAgICAgICAgICAgOiBtX2hlbHBlcihoZWxwZXIpCi0gICAg
ICAgIHsKLSAgICAgICAgfQotICAgICAgICBIZWxwZXJUeXBlKiBtX2hlbHBlcjsKLSAgICB9Owot
Ci0gICAgZnJpZW5kIGNsYXNzIFN1Y2Nlc3NDYWxsYmFja0ltcGw7Ci0gICAgZnJpZW5kIGNsYXNz
IEVycm9yQ2FsbGJhY2tJbXBsOwotCi0gICAgdm9pZCBzZXRFcnJvcihpbnQgY29kZSkKLSAgICB7
Ci0gICAgICAgIG1fZXhjZXB0aW9uQ29kZSA9IEZpbGVFeGNlcHRpb246OkVycm9yQ29kZVRvRXhj
ZXB0aW9uQ29kZShjb2RlKTsKLSAgICAgICAgbV9jb21wbGV0ZWQgPSB0cnVlOwotICAgIH0KLQot
ICAgIHZvaWQgc2V0UmVzdWx0KFBhc3NSZWZQdHI8UmVzdWx0VHlwZT4gcmVzdWx0KQotICAgIHsK
LSAgICAgICAgbV9yZXN1bHQgPSByZXN1bHQ7Ci0gICAgICAgIG1fY29tcGxldGVkID0gdHJ1ZTsK
LSAgICB9Ci0KLSAgICBPYnNlcnZlclR5cGUqIG1fb2JzZXJ2ZXI7Ci0gICAgUmVmUHRyPFN1Y2Nl
c3NDYWxsYmFja0ltcGw+IG1fc3VjY2Vzc0NhbGxiYWNrOwotICAgIFJlZlB0cjxFcnJvckNhbGxi
YWNrSW1wbD4gbV9lcnJvckNhbGxiYWNrOwotICAgIFJlZlB0cjxSZXN1bHRUeXBlPiBtX3Jlc3Vs
dDsKLSAgICBFeGNlcHRpb25Db2RlIG1fZXhjZXB0aW9uQ29kZTsKLSAgICBib29sIG1fY29tcGxl
dGVkOwotfTsKLQotc3RydWN0IEVtcHR5VHlwZSA6IHB1YmxpYyBSZWZDb3VudGVkPEVtcHR5VHlw
ZT4gewotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEVtcHR5VHlwZT4gY3JlYXRlKEVtcHR5VHlwZSop
Ci0gICAgewotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci19OwotCi1zdHJ1Y3QgRW1wdHlPYnNl
cnZlclR5cGUgewotICAgIGJvb2wgd2FpdEZvck9wZXJhdGlvblRvQ29tcGxldGUoKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLX07Ci0KLXR5cGVkZWYgU3luY0NhbGxiYWNr
SGVscGVyPEVudHJ5Q2FsbGJhY2ssIEFzeW5jRmlsZVN5c3RlbSwgRW50cnksIEVudHJ5U3luYz4g
RW50cnlTeW5jQ2FsbGJhY2tIZWxwZXI7Ci10eXBlZGVmIFN5bmNDYWxsYmFja0hlbHBlcjxFbnRy
aWVzQ2FsbGJhY2ssIEFzeW5jRmlsZVN5c3RlbSwgRW50cnlBcnJheSwgRW50cnlBcnJheVN5bmM+
IEVudHJpZXNTeW5jQ2FsbGJhY2tIZWxwZXI7Ci10eXBlZGVmIFN5bmNDYWxsYmFja0hlbHBlcjxN
ZXRhZGF0YUNhbGxiYWNrLCBBc3luY0ZpbGVTeXN0ZW0sIE1ldGFkYXRhLCBNZXRhZGF0YT4gTWV0
YWRhdGFTeW5jQ2FsbGJhY2tIZWxwZXI7Ci10eXBlZGVmIFN5bmNDYWxsYmFja0hlbHBlcjxWb2lk
Q2FsbGJhY2ssIEFzeW5jRmlsZVN5c3RlbSwgRW1wdHlUeXBlLCBFbXB0eVR5cGU+IFZvaWRTeW5j
Q2FsbGJhY2tIZWxwZXI7Ci10eXBlZGVmIFN5bmNDYWxsYmFja0hlbHBlcjxGaWxlU3lzdGVtQ2Fs
bGJhY2ssIEVtcHR5T2JzZXJ2ZXJUeXBlLCBET01GaWxlU3lzdGVtLCBET01GaWxlU3lzdGVtU3lu
Yz4gRmlsZVN5c3RlbVN5bmNDYWxsYmFja0hlbHBlcjsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQotCi0jZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jZW5kaWYgLy8gU3luY0NhbGxi
YWNrSGVscGVyX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9Xb3Jr
ZXJHbG9iYWxTY29wZUZpbGVTeXN0ZW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmlsZXN5c3RlbS9Xb3JrZXJHbG9iYWxTY29wZUZpbGVTeXN0ZW0uY3BwCShyZXZp
c2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vV29ya2Vy
R2xvYmFsU2NvcGVGaWxlU3lzdGVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSwxNDIgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTEgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCi0gKgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXb3Jr
ZXJHbG9iYWxTY29wZUZpbGVTeXN0ZW0uaCIKLQotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLQot
I2luY2x1ZGUgIkFzeW5jRmlsZVN5c3RlbS5oIgotI2luY2x1ZGUgIkRPTUZpbGVTeXN0ZW1CYXNl
LmgiCi0jaW5jbHVkZSAiRE9NRmlsZVN5c3RlbVN5bmMuaCIKLSNpbmNsdWRlICJEaXJlY3RvcnlF
bnRyeVN5bmMuaCIKLSNpbmNsdWRlICJFcnJvckNhbGxiYWNrLmgiCi0jaW5jbHVkZSAiRmlsZUVu
dHJ5U3luYy5oIgotI2luY2x1ZGUgIkZpbGVFcnJvci5oIgotI2luY2x1ZGUgIkZpbGVFeGNlcHRp
b24uaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtQ2FsbGJhY2suaCIKLSNpbmNsdWRlICJGaWxlU3lz
dGVtQ2FsbGJhY2tzLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbVR5cGUuaCIKLSNpbmNsdWRlICJM
b2NhbEZpbGVTeXN0ZW0uaCIKLSNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgotI2luY2x1ZGUg
IlN5bmNDYWxsYmFja0hlbHBlci5oIgotI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCi0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdm9pZCBXb3JrZXJHbG9iYWxTY29wZUZpbGVTeXN0ZW06
OndlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKFdvcmtlckdsb2JhbFNjb3BlKiB3b3JrZXIsIGludCB0
eXBlLCBsb25nIGxvbmcgc2l6ZSwgUGFzc1JlZlB0cjxGaWxlU3lzdGVtQ2FsbGJhY2s+IHN1Y2Nl
c3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQotewot
ICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNlY3VyZUNvbnRleHQgPSB3b3JrZXItPnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICBpZiAoIUFzeW5jRmlsZVN5c3RlbTo6aXNBdmFpbGFi
bGUoKSB8fCAhc2VjdXJlQ29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzRmlsZVN5
c3RlbSgpKSB7Ci0gICAgICAgIERPTUZpbGVTeXN0ZW06OnNjaGVkdWxlQ2FsbGJhY2sod29ya2Vy
LCBlcnJvckNhbGxiYWNrLCBGaWxlRXJyb3I6OmNyZWF0ZShGaWxlRXJyb3I6OlNFQ1VSSVRZX0VS
UikpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgRmlsZVN5c3RlbVR5cGUgZmlsZVN5
c3RlbVR5cGUgPSBzdGF0aWNfY2FzdDxGaWxlU3lzdGVtVHlwZT4odHlwZSk7Ci0gICAgaWYgKCFE
T01GaWxlU3lzdGVtQmFzZTo6aXNWYWxpZFR5cGUoZmlsZVN5c3RlbVR5cGUpKSB7Ci0gICAgICAg
IERPTUZpbGVTeXN0ZW06OnNjaGVkdWxlQ2FsbGJhY2sod29ya2VyLCBlcnJvckNhbGxiYWNrLCBG
aWxlRXJyb3I6OmNyZWF0ZShGaWxlRXJyb3I6OklOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUikpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgTG9jYWxGaWxlU3lzdGVtOjpsb2NhbEZpbGVT
eXN0ZW0oKS5yZXF1ZXN0RmlsZVN5c3RlbSh3b3JrZXIsIGZpbGVTeXN0ZW1UeXBlLCBzaXplLCBG
aWxlU3lzdGVtQ2FsbGJhY2tzOjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNr
LCB3b3JrZXIsIGZpbGVTeXN0ZW1UeXBlKSwgQXN5bmNocm9ub3VzRmlsZVN5c3RlbSk7Ci19Ci0K
LVBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbVN5bmM+IFdvcmtlckdsb2JhbFNjb3BlRmlsZVN5c3Rl
bTo6d2Via2l0UmVxdWVzdEZpbGVTeXN0ZW1TeW5jKFdvcmtlckdsb2JhbFNjb3BlKiB3b3JrZXIs
IGludCB0eXBlLCBsb25nIGxvbmcgc2l6ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0gICAgZWMg
PSAwOwotICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNlY3VyZUNvbnRleHQgPSB3b3JrZXIt
PnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICBpZiAoIUFzeW5jRmlsZVN5c3RlbTo6aXNB
dmFpbGFibGUoKSB8fCAhc2VjdXJlQ29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNz
RmlsZVN5c3RlbSgpKSB7Ci0gICAgICAgIGVjID0gRmlsZUV4Y2VwdGlvbjo6U0VDVVJJVFlfRVJS
OwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBGaWxlU3lzdGVtVHlwZSBmaWxlU3lz
dGVtVHlwZSA9IHN0YXRpY19jYXN0PEZpbGVTeXN0ZW1UeXBlPih0eXBlKTsKLSAgICBpZiAoIURP
TUZpbGVTeXN0ZW1CYXNlOjppc1ZhbGlkVHlwZShmaWxlU3lzdGVtVHlwZSkpIHsKLSAgICAgICAg
ZWMgPSBGaWxlRXhjZXB0aW9uOjpJTlZBTElEX01PRElGSUNBVElPTl9FUlI7Ci0gICAgICAgIHJl
dHVybiAwOwotICAgIH0KLQotICAgIEZpbGVTeXN0ZW1TeW5jQ2FsbGJhY2tIZWxwZXIgaGVscGVy
OwotICAgIExvY2FsRmlsZVN5c3RlbTo6bG9jYWxGaWxlU3lzdGVtKCkucmVxdWVzdEZpbGVTeXN0
ZW0od29ya2VyLCBmaWxlU3lzdGVtVHlwZSwgc2l6ZSwgRmlsZVN5c3RlbUNhbGxiYWNrczo6Y3Jl
YXRlKGhlbHBlci5zdWNjZXNzQ2FsbGJhY2soKSwgaGVscGVyLmVycm9yQ2FsbGJhY2soKSwgd29y
a2VyLCBmaWxlU3lzdGVtVHlwZSksIFN5bmNocm9ub3VzRmlsZVN5c3RlbSk7Ci0gICAgcmV0dXJu
IGhlbHBlci5nZXRSZXN1bHQoZWMpOwotfQotCi12b2lkIFdvcmtlckdsb2JhbFNjb3BlRmlsZVN5
c3RlbTo6d2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVVSTChXb3JrZXJHbG9iYWxTY29wZSog
d29ya2VyLCBjb25zdCBTdHJpbmcmIHVybCwgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNj
ZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKLXsK
LSAgICBVUkwgY29tcGxldGVkVVJMID0gd29ya2VyLT5jb21wbGV0ZVVSTCh1cmwpOwotICAgIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNlY3VyZUNvbnRleHQgPSB3b3JrZXItPnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKTsKLSAgICBpZiAoIUFzeW5jRmlsZVN5c3RlbTo6aXNBdmFpbGFibGUoKSB8
fCAhc2VjdXJlQ29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzRmlsZVN5c3RlbSgp
IHx8ICFzZWN1cmVDb250ZXh0LT5zZWN1cml0eU9yaWdpbigpLT5jYW5SZXF1ZXN0KGNvbXBsZXRl
ZFVSTCkpIHsKLSAgICAgICAgRE9NRmlsZVN5c3RlbTo6c2NoZWR1bGVDYWxsYmFjayh3b3JrZXIs
IGVycm9yQ2FsbGJhY2ssIEZpbGVFcnJvcjo6Y3JlYXRlKEZpbGVFcnJvcjo6U0VDVVJJVFlfRVJS
KSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBGaWxlU3lzdGVtVHlwZSB0eXBlOwot
ICAgIFN0cmluZyBmaWxlUGF0aDsKLSAgICBpZiAoIWNvbXBsZXRlZFVSTC5pc1ZhbGlkKCkgfHwg
IURPTUZpbGVTeXN0ZW1CYXNlOjpjcmFja0ZpbGVTeXN0ZW1VUkwoY29tcGxldGVkVVJMLCB0eXBl
LCBmaWxlUGF0aCkpIHsKLSAgICAgICAgRE9NRmlsZVN5c3RlbTo6c2NoZWR1bGVDYWxsYmFjayh3
b3JrZXIsIGVycm9yQ2FsbGJhY2ssIEZpbGVFcnJvcjo6Y3JlYXRlKEZpbGVFcnJvcjo6RU5DT0RJ
TkdfRVJSKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBMb2NhbEZpbGVTeXN0ZW06
OmxvY2FsRmlsZVN5c3RlbSgpLnJlYWRGaWxlU3lzdGVtKHdvcmtlciwgdHlwZSwgUmVzb2x2ZVVS
SUNhbGxiYWNrczo6Y3JlYXRlKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaywgd29ya2Vy
LCB0eXBlLCBmaWxlUGF0aCkpOwotfQotCi1QYXNzUmVmUHRyPEVudHJ5U3luYz4gV29ya2VyR2xv
YmFsU2NvcGVGaWxlU3lzdGVtOjp3ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lzdGVtU3luY1VSTChX
b3JrZXJHbG9iYWxTY29wZSogd29ya2VyLCBjb25zdCBTdHJpbmcmIHVybCwgRXhjZXB0aW9uQ29k
ZSYgZWMpCi17Ci0gICAgZWMgPSAwOwotICAgIFVSTCBjb21wbGV0ZWRVUkwgPSB3b3JrZXItPmNv
bXBsZXRlVVJMKHVybCk7Ci0gICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2VjdXJlQ29udGV4
dCA9IHdvcmtlci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgIGlmICghQXN5bmNGaWxl
U3lzdGVtOjppc0F2YWlsYWJsZSgpIHx8ICFzZWN1cmVDb250ZXh0LT5zZWN1cml0eU9yaWdpbigp
LT5jYW5BY2Nlc3NGaWxlU3lzdGVtKCkgfHwgIXNlY3VyZUNvbnRleHQtPnNlY3VyaXR5T3JpZ2lu
KCktPmNhblJlcXVlc3QoY29tcGxldGVkVVJMKSkgewotICAgICAgICBlYyA9IEZpbGVFeGNlcHRp
b246OlNFQ1VSSVRZX0VSUjsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgRmlsZVN5
c3RlbVR5cGUgdHlwZTsKLSAgICBTdHJpbmcgZmlsZVBhdGg7Ci0gICAgaWYgKCFjb21wbGV0ZWRV
UkwuaXNWYWxpZCgpIHx8ICFET01GaWxlU3lzdGVtQmFzZTo6Y3JhY2tGaWxlU3lzdGVtVVJMKGNv
bXBsZXRlZFVSTCwgdHlwZSwgZmlsZVBhdGgpKSB7Ci0gICAgICAgIGVjID0gRmlsZUV4Y2VwdGlv
bjo6RU5DT0RJTkdfRVJSOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBGaWxlU3lz
dGVtU3luY0NhbGxiYWNrSGVscGVyIHJlYWRGaWxlU3lzdGVtSGVscGVyOwotICAgIExvY2FsRmls
ZVN5c3RlbTo6bG9jYWxGaWxlU3lzdGVtKCkucmVhZEZpbGVTeXN0ZW0od29ya2VyLCB0eXBlLCBG
aWxlU3lzdGVtQ2FsbGJhY2tzOjpjcmVhdGUocmVhZEZpbGVTeXN0ZW1IZWxwZXIuc3VjY2Vzc0Nh
bGxiYWNrKCksIHJlYWRGaWxlU3lzdGVtSGVscGVyLmVycm9yQ2FsbGJhY2soKSwgd29ya2VyLCB0
eXBlKSwgU3luY2hyb25vdXNGaWxlU3lzdGVtKTsKLSAgICBSZWZQdHI8RE9NRmlsZVN5c3RlbVN5
bmM+IGZpbGVTeXN0ZW0gPSByZWFkRmlsZVN5c3RlbUhlbHBlci5nZXRSZXN1bHQoZWMpOwotICAg
IGlmICghZmlsZVN5c3RlbSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBSZWZQdHI8RW50cnlT
eW5jPiBlbnRyeSA9IGZpbGVTeXN0ZW0tPnJvb3QoKS0+Z2V0RGlyZWN0b3J5KGZpbGVQYXRoLCBE
aWN0aW9uYXJ5KCksIGVjKTsKLSAgICBpZiAoZWMgPT0gRmlsZUV4Y2VwdGlvbjo6VFlQRV9NSVNN
QVRDSF9FUlIpCi0gICAgICAgIHJldHVybiBmaWxlU3lzdGVtLT5yb290KCktPmdldEZpbGUoZmls
ZVBhdGgsIERpY3Rpb25hcnkoKSwgZWMpOwotCi0gICAgcmV0dXJuIGVudHJ5LnJlbGVhc2UoKTsK
LX0KLQotQ09NUElMRV9BU1NFUlQoc3RhdGljX2Nhc3Q8aW50PihXb3JrZXJHbG9iYWxTY29wZUZp
bGVTeXN0ZW06OlRFTVBPUkFSWSkgPT0gc3RhdGljX2Nhc3Q8aW50PihGaWxlU3lzdGVtVHlwZVRl
bXBvcmFyeSksIGVudW1fbWlzbWF0Y2gpOwotQ09NUElMRV9BU1NFUlQoc3RhdGljX2Nhc3Q8aW50
PihXb3JrZXJHbG9iYWxTY29wZUZpbGVTeXN0ZW06OlBFUlNJU1RFTlQpID09IHN0YXRpY19jYXN0
PGludD4oRmlsZVN5c3RlbVR5cGVQZXJzaXN0ZW50KSwgZW51bV9taXNtYXRjaCk7Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9Xb3JrZXJHbG9iYWxTY29wZUZpbGVT
eXN0ZW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0v
V29ya2VyR2xvYmFsU2NvcGVGaWxlU3lzdGVtLmgJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9Xb3JrZXJHbG9iYWxTY29wZUZpbGVTeXN0ZW0u
aAkod29ya2luZyBjb3B5KQpAQCAtMSw2NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
Ci0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKgotICovCi0KLSNp
Zm5kZWYgV29ya2VyR2xvYmFsU2NvcGVGaWxlU3lzdGVtX2gKLSNkZWZpbmUgV29ya2VyR2xvYmFs
U2NvcGVGaWxlU3lzdGVtX2gKLQotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2luY2x1ZGUg
IkRPTUZpbGVTeXN0ZW1TeW5jLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBFbnRyeUNhbGxiYWNrOwotY2xhc3MgRW50cnlTeW5j
OwotY2xhc3MgRXJyb3JDYWxsYmFjazsKLWNsYXNzIEZpbGVTeXN0ZW1DYWxsYmFjazsKLWNsYXNz
IFdvcmtlckdsb2JhbFNjb3BlOwotCi1jbGFzcyBXb3JrZXJHbG9iYWxTY29wZUZpbGVTeXN0ZW0g
ewotcHVibGljOgotICAgIGVudW0gewotICAgICAgICBURU1QT1JBUlksCi0gICAgICAgIFBFUlNJ
U1RFTlQsCi0gICAgfTsKLQotICAgIHN0YXRpYyB2b2lkIHdlYmtpdFJlcXVlc3RGaWxlU3lzdGVt
KFdvcmtlckdsb2JhbFNjb3BlKiwgaW50IHR5cGUsIGxvbmcgbG9uZyBzaXplLCBQYXNzUmVmUHRy
PEZpbGVTeXN0ZW1DYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2Fs
bGJhY2s+KTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtU3luYz4gd2Via2l0
UmVxdWVzdEZpbGVTeXN0ZW1TeW5jKFdvcmtlckdsb2JhbFNjb3BlKiwgaW50IHR5cGUsIGxvbmcg
bG9uZyBzaXplLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgc3RhdGljIHZvaWQgd2Via2l0UmVzb2x2
ZUxvY2FsRmlsZVN5c3RlbVVSTChXb3JrZXJHbG9iYWxTY29wZSosIGNvbnN0IFN0cmluZyYgdXJs
LCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxF
cnJvckNhbGxiYWNrPik7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8RW50cnlTeW5jPiB3ZWJraXRS
ZXNvbHZlTG9jYWxGaWxlU3lzdGVtU3luY1VSTChXb3JrZXJHbG9iYWxTY29wZSosIGNvbnN0IFN0
cmluZyYgdXJsLCBFeGNlcHRpb25Db2RlJik7Ci0KLXByaXZhdGU6Ci0gICAgV29ya2VyR2xvYmFs
U2NvcGVGaWxlU3lzdGVtKCk7Ci0gICAgfldvcmtlckdsb2JhbFNjb3BlRmlsZVN5c3RlbSgpOwot
fTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lT
VEVNKQotCi0jZW5kaWYgLy8gV29ya2VyR2xvYmFsU2NvcGVGaWxlU3lzdGVtX2gKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9Xb3JrZXJHbG9iYWxTY29wZUZpbGVTeXN0
ZW0uaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9X
b3JrZXJHbG9iYWxTY29wZUZpbGVTeXN0ZW0uaWRsCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vV29ya2VyR2xvYmFsU2NvcGVGaWxlU3lzdGVt
LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMSw0MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0g
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKgotICovCi0KLVsKLSAg
ICBDb25kaXRpb25hbD1GSUxFX1NZU1RFTSwKLV0gcGFydGlhbCBpbnRlcmZhY2UgV29ya2VyR2xv
YmFsU2NvcGUgewotICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFRFTVBPUkFSWSA9IDA7Ci0gICAg
Y29uc3QgdW5zaWduZWQgc2hvcnQgUEVSU0lTVEVOVCA9IDE7Ci0KLSAgICB2b2lkIHdlYmtpdFJl
cXVlc3RGaWxlU3lzdGVtKHVuc2lnbmVkIHNob3J0IHR5cGUsIGxvbmcgbG9uZyBzaXplLCBvcHRp
b25hbCBGaWxlU3lzdGVtQ2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNrLCBvcHRpb25hbCBFcnJvckNh
bGxiYWNrIGVycm9yQ2FsbGJhY2spOwotICAgIFtSYWlzZXNFeGNlcHRpb25dIERPTUZpbGVTeXN0
ZW1TeW5jIHdlYmtpdFJlcXVlc3RGaWxlU3lzdGVtU3luYyh1bnNpZ25lZCBzaG9ydCB0eXBlLCBs
b25nIGxvbmcgc2l6ZSk7Ci0gICAgdm9pZCB3ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lzdGVtVVJM
KERPTVN0cmluZyB1cmwsIEVudHJ5Q2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNrLCBvcHRpb25hbCBF
cnJvckNhbGxiYWNrIGVycm9yQ2FsbGJhY2spOwotICAgIFtSYWlzZXNFeGNlcHRpb25dIEVudHJ5
U3luYyB3ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lzdGVtU3luY1VSTChET01TdHJpbmcgdXJsKTsK
LQotICAgIGF0dHJpYnV0ZSBGaWxlRXJyb3JDb25zdHJ1Y3RvciBGaWxlRXJyb3I7Ci0gICAgYXR0
cmlidXRlIEZpbGVFeGNlcHRpb25Db25zdHJ1Y3RvciBGaWxlRXhjZXB0aW9uOwotfTsKLQpJbmRl
eDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCShy
ZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29y
ZS52Y3hwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMzU5LDM2ICsxMzU5LDYgQEAKICAgICAgIDxF
eGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J1Byb2R1Y3Rpb258V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICAgIDxF
eGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgPC9DbENv
bXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilc
b2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNc
SlNEaXJlY3RvcnlFbnRyeS5jcHAiPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj50cnVlPC9F
eGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPnRydWU8L0V4Y2x1ZGVk
RnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98V2luMzInIj50cnVlPC9FeGNs
dWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnX1dpbkNhaXJvfHg2NCciPnRydWU8L0V4
Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8V2luMzInIj50cnVlPC9F
eGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnU3VmZml4fHg2NCciPnRydWU8L0V4
Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPnRydWU8L0V4Y2x1
ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj50cnVlPC9FeGNsdWRlZEZy
b21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98V2luMzInIj50cnVlPC9FeGNs
dWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98eDY0JyI+dHJ1ZTwv
RXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+dHJ1ZTwv
RXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPnRydWU8L0V4
Y2x1ZGVkRnJvbUJ1aWxkPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQo
UHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRGlyZWN0b3J5RW50cnlTeW5jLmNwcCIgLz4K
LSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBs
YXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0RpcmVj
dG9yeVJlYWRlci5jcHAiPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj50cnVlPC9FeGNsdWRl
ZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1
aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98V2luMzInIj50cnVlPC9FeGNsdWRlZEZy
b21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnX1dpbkNhaXJvfHg2NCciPnRydWU8L0V4Y2x1ZGVk
RnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8V2luMzInIj50cnVlPC9FeGNsdWRl
ZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnU3VmZml4fHg2NCciPnRydWU8L0V4Y2x1ZGVk
RnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJv
bUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWls
ZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98V2luMzInIj50cnVlPC9FeGNsdWRlZEZy
b21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98eDY0JyI+dHJ1ZTwvRXhjbHVk
ZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+dHJ1ZTwvRXhjbHVk
ZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPnRydWU8L0V4Y2x1ZGVk
RnJvbUJ1aWxkPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChD
b25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVj
dE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRGlyZWN0b3J5UmVhZGVyU3luYy5jcHAiIC8+CiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9y
bUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNEb2N1bWVudC5j
cHAiPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4K
ICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgpAQCAtMTQ3
MywyMSArMTQ0Myw2IEBACiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+dHJ1ZTwvRXhj
bHVkZWRGcm9tQnVpbGQ+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPnRydWU8L0V4Y2x1
ZGVkRnJvbUJ1aWxkPgogICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
JChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJv
amVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRE9NRmlsZVN5c3RlbS5jcHAiPgotICAgICAgPEV4
Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nRGVidWd8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRl
ZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0Rl
YnVnfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1
aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdfV2lu
Q2Fpcm98V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZy
b21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVn
X1dpbkNhaXJvfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVk
RnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVi
dWdTdWZmaXh8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRl
ZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0Rl
YnVnU3VmZml4fHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVk
RnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVs
ZWFzZXxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJv
bUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFz
ZXx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWls
ZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2lu
Q2Fpcm98V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZy
b21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVh
c2VfV2luQ2Fpcm98eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVk
ZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQ
cm9kdWN0aW9ufFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVk
ZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQ
cm9kdWN0aW9ufHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgIDwvQ2xDb21waWxl
PgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQo
UGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRE9N
RmlsZVN5c3RlbVN5bmMuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1
cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUp
XERlcml2ZWRTb3VyY2VzXEpTRE9NRm9ybURhdGEuY3BwIj4KICAgICAgIDxFeGNsdWRlZEZyb21C
dWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdp
bjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj50
cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KQEAgLTE3NDAsNzggKzE2OTUsNiBAQAogICAgICAgPEV4
Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUHJvZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgICAgPEV4
Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICA8L0NsQ29t
cGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxv
YmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xK
U0VudHJpZXNDYWxsYmFjay5jcHAiPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj50cnVlPC9F
eGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPnRydWU8L0V4Y2x1ZGVk
RnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98V2luMzInIj50cnVlPC9FeGNs
dWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnX1dpbkNhaXJvfHg2NCciPnRydWU8L0V4
Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8V2luMzInIj50cnVlPC9F
eGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnU3VmZml4fHg2NCciPnRydWU8L0V4
Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPnRydWU8L0V4Y2x1
ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj50cnVlPC9FeGNsdWRlZEZy
b21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98V2luMzInIj50cnVlPC9FeGNs
dWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98eDY0JyI+dHJ1ZTwv
RXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+dHJ1ZTwv
RXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPnRydWU8L0V4
Y2x1ZGVkRnJvbUJ1aWxkPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQo
UHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRW50cnkuY3BwIj4KLSAgICAgIDxFeGNsdWRl
ZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0Rl
YnVnfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9t
QnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4
NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnX1dpbkNhaXJv
fFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVp
bGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19XaW5D
YWlyb3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21C
dWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnU3Vm
Zml4fFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9t
QnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1
ZmZpeHx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21C
dWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8
V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWls
ZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0
JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJv
fFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVp
bGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dp
bkNhaXJvfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJv
bUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVj
dGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJv
bUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVj
dGlvbnx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICA8L0NsQ29tcGlsZT4KLSAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRm
b3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0VudHJ5QXJy
YXkuY3BwIj4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVp
bGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAg
ICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J0RlYnVnX1dpbkNhaXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+
Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWlyb3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWls
ZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J0RlYnVnU3VmZml4fFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVp
bGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWls
ZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4K
LSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAg
ICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+
Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1
aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1
aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWls
ZD4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJh
dGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxE
ZXJpdmVkU291cmNlc1xKU0VudHJ5QXJyYXlTeW5jLmNwcCIgLz4KLSAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJl
KVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0VudHJ5Q2FsbGJhY2suY3BwIj4KLSAg
ICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8
RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdEZWJ1Z3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRl
ZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0Rl
YnVnX1dpbkNhaXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhj
bHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdEZWJ1Z19XaW5DYWlyb3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxF
eGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J0RlYnVnU3VmZml4fFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8
RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdEZWJ1Z1N1ZmZpeHx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxF
eGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J1JlbGVhc2V8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNs
dWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J1JlbGVhc2V8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRG
cm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxl
YXNlX1dpbkNhaXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhj
bHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdSZWxlYXNlX1dpbkNhaXJvfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAg
PEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAg
PEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nUHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICA8L0Ns
Q29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGly
KVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNl
c1xKU0VudHJ5U3luYy5jcHAiIC8+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3Vy
YXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlc
RGVyaXZlZFNvdXJjZXNcSlNFcnJvckNhbGxiYWNrLmNwcCI+Ci0gICAgICA8RXhjbHVkZWRGcm9t
QnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xX
aW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxk
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+
dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWlyb3xXaW4z
MiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98
eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHxX
aW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxk
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8
eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMy
JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPnRy
dWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3xXaW4z
MiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWly
b3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWls
ZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258
V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWls
ZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258
eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgPC9DbENvbXBpbGU+CiAgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFy
Y2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNFcnJvckV2ZW50LmNw
cCI+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgog
ICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CkBAIC0xODk2
LDkgKzE3NzksNiBAQAogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1
ZGVkRnJvbUJ1aWxkPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRl
ZEZyb21CdWlsZD4KICAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQo
Q29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2pl
Y3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0ZpbGVDYWxsYmFjay5jcHAiIC8+Ci0gICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hp
dGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNGaWxlRW50cnkuY3BwIiAv
PgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQo
UGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRmls
ZUVudHJ5U3luYy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRp
b25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVy
aXZlZFNvdXJjZXNcSlNGaWxlRXJyb3IuY3BwIj4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+
dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj50cnVlPC9F
eGNsdWRlZEZyb21CdWlsZD4KQEAgLTE5NDMsNDkgKzE4MjMsNiBAQAogICAgICAgPEV4Y2x1ZGVk
RnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJv
ZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICA8L0NsQ29tcGlsZT4K
ICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBs
YXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0ZpbGVS
ZWFkZXJTeW5jLmNwcCIgLz4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlv
bkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJp
dmVkU291cmNlc1xKU0ZpbGVTeXN0ZW1DYWxsYmFjay5jcHAiPgotICAgICAgPEV4Y2x1ZGVkRnJv
bUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8
V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWls
ZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCci
PnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98V2lu
MzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnX1dpbkNhaXJv
fHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxk
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8
V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWls
ZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnU3VmZml4
fHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxk
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4z
MiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj50
cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98V2lu
MzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fp
cm98eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVp
bGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9u
fFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVp
bGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9u
fHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1B
cmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRmlsZVdyaXRlci5j
cHAiPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4K
LSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAg
PEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nRGVidWdfV2luQ2Fpcm98V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAg
ICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J0RlYnVnX1dpbkNhaXJvfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgot
ICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4K
LSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J0RlYnVnU3VmZml4fHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgot
ICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAg
ICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxF
eGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J1JlbGVhc2VfV2luQ2Fpcm98V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAg
ICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+
Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+
Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgot
ICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9u
QnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2
ZWRTb3VyY2VzXEpTRmlsZVdyaXRlckNhbGxiYWNrLmNwcCIgLz4KLSAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJl
KVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0ZpbGVXcml0ZXJTeW5jLmNwcCI+Ci0g
ICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAg
PEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nRGVidWd8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVk
ZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdE
ZWJ1Z19XaW5DYWlyb3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4
Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nRGVidWdfV2luQ2Fpcm98eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8
RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdEZWJ1Z1N1ZmZpeHxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAg
PEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nRGVidWdTdWZmaXh8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8
RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdSZWxlYXNlfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhj
bHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdSZWxlYXNlfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVk
RnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVs
ZWFzZV9XaW5DYWlyb3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4
Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUmVsZWFzZV9XaW5DYWlyb3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAg
IDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAg
IDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgPC9D
bENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERp
cilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJj
ZXNcSlNGb250TG9hZGVyLmNwcCI+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPnRydWU8L0V4
Y2x1ZGVkRnJvbUJ1aWxkPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRG
cm9tQnVpbGQ+CkBAIC0zNDQyLDM0ICszMjc5LDYgQEAKICAgICAgIDxFeGNsdWRlZEZyb21CdWls
ZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258
V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICAgIDxFeGNsdWRlZEZyb21CdWls
ZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258
eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgPC9DbENvbXBpbGU+Ci0gICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFy
Y2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNNZXRhZGF0YS5jcHAi
PgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAg
ICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J0RlYnVnfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4
Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nRGVidWdfV2luQ2Fpcm98V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAg
IDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J0RlYnVnX1dpbkNhaXJvfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAg
ICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nRGVidWdTdWZmaXh8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAg
ICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J0RlYnVnU3VmZml4fHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAg
ICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAg
PEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nUmVsZWFzZXx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNs
dWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J1JlbGVhc2VfV2luQ2Fpcm98V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAg
IDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0g
ICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0g
ICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAg
IDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVp
bGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRT
b3VyY2VzXEpTTWV0YWRhdGFDYWxsYmFjay5jcHAiPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxk
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzIn
Ij50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPnRydWU8
L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98V2luMzInIj50
cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnX1dpbkNhaXJvfHg2NCci
PnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8V2luMzIn
Ij50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnU3VmZml4fHg2NCci
PnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPnRy
dWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj50cnVlPC9F
eGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98V2luMzInIj50
cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98eDY0
JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMy
JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCci
PnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRl
Y3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTTW91c2VFdmVudC5jcHAiPgog
ICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICAg
IDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J0RlYnVnfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgpAQCAtNjcyNiwyOCAr
NjUzNSw2IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxodG1sXHRyYWNrXFZpZGVvVHJh
Y2suY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caHRtbFx0cmFja1xWaWRlb1Ry
YWNrTGlzdC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxodG1sXHRyYWNrXFdl
YlZUVEVsZW1lbnQuY3BwIiAvPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xm
aWxlc3lzdGVtXERpcmVjdG9yeUVudHJ5LmNwcCIgLz4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXE1vZHVsZXNcZmlsZXN5c3RlbVxEaXJlY3RvcnlFbnRyeVN5bmMuY3BwIiAvPgotICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xmaWxlc3lzdGVtXERpcmVjdG9yeVJlYWRlci5j
cHAiIC8+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGZpbGVzeXN0ZW1cRGly
ZWN0b3J5UmVhZGVyU3luYy5jcHAiIC8+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1
bGVzXGZpbGVzeXN0ZW1cRE9NRmlsZVBhdGguY3BwIiAvPgotICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5cTW9kdWxlc1xmaWxlc3lzdGVtXERPTUZpbGVTeXN0ZW0uY3BwIiAvPgotICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xmaWxlc3lzdGVtXERPTUZpbGVTeXN0ZW1CYXNlLmNw
cCIgLz4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZmlsZXN5c3RlbVxET01G
aWxlU3lzdGVtU3luYy5jcHAiIC8+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVz
XGZpbGVzeXN0ZW1cRE9NV2luZG93RmlsZVN5c3RlbS5jcHAiIC8+Ci0gICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxNb2R1bGVzXGZpbGVzeXN0ZW1cRW50cnkuY3BwIiAvPgotICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xmaWxlc3lzdGVtXEVudHJ5QXJyYXkuY3BwIiAvPgotICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xmaWxlc3lzdGVtXEVudHJ5QXJyYXlTeW5j
LmNwcCIgLz4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZmlsZXN5c3RlbVxF
bnRyeUJhc2UuY3BwIiAvPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xmaWxl
c3lzdGVtXEVudHJ5U3luYy5jcHAiIC8+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1
bGVzXGZpbGVzeXN0ZW1cRmlsZUVudHJ5LmNwcCIgLz4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXE1vZHVsZXNcZmlsZXN5c3RlbVxGaWxlRW50cnlTeW5jLmNwcCIgLz4KLSAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZmlsZXN5c3RlbVxGaWxlU3lzdGVtQ2FsbGJhY2tzLmNw
cCIgLz4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZmlsZXN5c3RlbVxGaWxl
V3JpdGVyLmNwcCIgLz4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZmlsZXN5
c3RlbVxGaWxlV3JpdGVyQmFzZS5jcHAiIC8+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxN
b2R1bGVzXGZpbGVzeXN0ZW1cRmlsZVdyaXRlclN5bmMuY3BwIiAvPgotICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5cTW9kdWxlc1xmaWxlc3lzdGVtXExvY2FsRmlsZVN5c3RlbS5jcHAiIC8+Ci0g
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGZpbGVzeXN0ZW1cV29ya2VyR2xvYmFs
U2NvcGVGaWxlU3lzdGVtLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVs
ZXNcZ2VvbG9jYXRpb25cQ29vcmRpbmF0ZXMuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5cTW9kdWxlc1xnZW9sb2NhdGlvblxHZW9sb2NhdGlvbi5jcHAiIC8+CiAgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGdlb2xvY2F0aW9uXEdlb2xvY2F0aW9uQ29udHJvbGxl
ci5jcHAiIC8+CkBAIC03MzYyLDcgKzcxNDksNiBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5cbG9hZGVyXGNhY2hlXENhY2hlZFhTTFN0eWxlU2hlZXQuY3BwIiAvPgogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5cbG9hZGVyXGNhY2hlXE1lbW9yeUNhY2hlLmNwcCIgLz4KICAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXEFyZW5hLmNwcCIgLz4KLSAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXHBsYXRmb3JtXEFzeW5jRmlsZVN5c3RlbS5jcHAiIC8+CiAgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxDYWxjdWxhdGlvblZhbHVlLmNwcCIgLz4KICAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXENsb2NrLmNwcCIgLz4KICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXENsb2NrR2VuZXJpYy5jcHAiIC8+CkBAIC0xNjE4Niw4
ICsxNTk3Miw2IEBACiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+dHJ1ZTwvRXhjbHVk
ZWRGcm9tQnVpbGQ+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPnRydWU8L0V4Y2x1ZGVk
RnJvbUJ1aWxkPgogICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
YmluZGluZ3NcanNcSlNFbnRyeUN1c3RvbS5jcHAiIC8+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxiaW5kaW5nc1xqc1xKU0VudHJ5U3luY0N1c3RvbS5jcHAiIC8+CiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xKU0Vycm9ySGFuZGxlci5jcHAiPgogICAgICAgPEV4
Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nRGVidWd8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICAgIDxFeGNsdWRl
ZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0Rl
YnVnfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgpAQCAtMTc2NzQsMTQgKzE3NDU4LDYg
QEAKICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWls
ZD4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+
CiAgICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3Jc
SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmNwcCI+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMy
JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPnRy
dWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3xXaW4z
MiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWly
b3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWls
ZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258
V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWls
ZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258
eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgPC9DbENvbXBpbGU+CiAgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2Nh
bC5jcHAiPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1
aWxkPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4K
QEAgLTE4MDY0LDE4ICsxNzg0MCwxMiBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25m
aWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXFdlYkNvcmVcRGVy
aXZlZFNvdXJjZXNcSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oIiAvPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNo
aXRlY3R1cmUpXFdlYkNvcmVcRGVyaXZlZFNvdXJjZXNcSlNEZXZpY2VNb3Rpb25FdmVudC5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQo
UGxhdGZvcm1BcmNoaXRlY3R1cmUpXFdlYkNvcmVcRGVyaXZlZFNvdXJjZXNcSlNEZXZpY2VPcmll
bnRhdGlvbkV2ZW50LmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRp
b25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVy
aXZlZFNvdXJjZXNcSlNEaXJlY3RvcnlFbnRyeS5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQo
UHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRGlyZWN0b3J5RW50cnlTeW5jLmgiIC8+Ci0g
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0
Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNEaXJlY3Rv
cnlSZWFkZXIuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1
aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVk
U291cmNlc1xKU0RpcmVjdG9yeVJlYWRlclN5bmMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwk
KFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0RvY3VtZW50LmgiIC8+CiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hp
dGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNEb2N1bWVudEZyYWdtZW50
LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilc
b2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNc
SlNEb2N1bWVudFR5cGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJh
dGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxE
ZXJpdmVkU291cmNlc1xKU0RPTUFwcGxpY2F0aW9uQ2FjaGUuaCIgLz4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0
dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0RPTUNvcmVFeGNlcHRpb24uaCIg
Lz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmok
KFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0RP
TUVycm9yLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWls
ZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNv
dXJjZXNcSlNET01GaWxlU3lzdGVtLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENv
bmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0
TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNET01GaWxlU3lzdGVtU3luYy5oIiAvPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNo
aXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRE9NRm9ybURhdGEuaCIg
Lz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmok
KFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0RP
TUltcGxlbWVudGF0aW9uLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3Vy
YXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlc
RGVyaXZlZFNvdXJjZXNcSlNET01NaW1lVHlwZS5oIiAvPgpAQCAtMTgwOTQsMzEgKzE3ODY0LDE3
IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2Jq
JChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNF
bGVtZW50LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWls
ZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNv
dXJjZXNcSlNFbnRpdHkuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJh
dGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxE
ZXJpdmVkU291cmNlc1xKU0VudGl0eVJlZmVyZW5jZS5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUp
XCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRW50cmllc0NhbGxiYWNrLmgiIC8+Ci0g
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0
Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNFbnRyeS5o
IiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9i
aiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpT
RW50cnlBcnJheS5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9u
QnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2
ZWRTb3VyY2VzXEpTRW50cnlBcnJheVN5bmMuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFBy
b2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0VudHJ5Q2FsbGJhY2suaCIgLz4KLSAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJj
aGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0VudHJ5U3luYy5oIiAv
PgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQo
UGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRXJy
b3JDYWxsYmFjay5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9u
QnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2
ZWRTb3VyY2VzXEpTRXJyb3JFdmVudC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChD
b25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVj
dE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRXZlbnQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwk
KFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0V2ZW50RXhjZXB0aW9uLmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9y
bUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNFdmVudFNvdXJj
ZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIp
XG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2Vz
XEpTRXZlbnRUYXJnZXQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJh
dGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxE
ZXJpdmVkU291cmNlc1xKU0ZpbGUuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29u
ZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3RO
YW1lKVxEZXJpdmVkU291cmNlc1xKU0ZpbGVDYWxsYmFjay5oIiAvPgotICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1
cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRmlsZUVudHJ5LmgiIC8+Ci0gICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9y
bUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNGaWxlRW50cnlT
eW5jLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERp
cilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJj
ZXNcSlNGaWxlRXJyb3IuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJh
dGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxE
ZXJpdmVkU291cmNlc1xKU0ZpbGVFeGNlcHRpb24uaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwk
KFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0ZpbGVMaXN0LmgiIC8+CiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hp
dGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNGaWxlUmVhZGVyLmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQ
bGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNGaWxl
UmVhZGVyU3luYy5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9u
QnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2
ZWRTb3VyY2VzXEpTRmlsZVN5c3RlbUNhbGxiYWNrLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlc
JChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNGaWxlV3JpdGVyLmgiIC8+Ci0gICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFy
Y2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNGaWxlV3JpdGVyQ2Fs
bGJhY2suaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxk
RGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291
cmNlc1xKU0ZpbGVXcml0ZXJTeW5jLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENv
bmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0
TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNGb250TG9hZGVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVy
ZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNHZW9sb2NhdGlvbi5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZv
cm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTR2VvcG9zaXRp
b24uaCIgLz4KQEAgLTE4MjM1LDggKzE3OTkxLDYgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFBy
b2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU01lc3NhZ2VDaGFubmVsLmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFy
Y2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNNZXNzYWdlRXZlbnQu
aCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxv
YmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xK
U01lc3NhZ2VQb3J0LmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRp
b25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVy
aXZlZFNvdXJjZXNcSlNNZXRhZGF0YS5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChD
b25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVj
dE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTTWV0YWRhdGFDYWxsYmFjay5oIiAvPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNo
aXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTTW91c2VFdmVudC5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQo
UGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTTXV0
YXRpb25FdmVudC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9u
QnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2
ZWRTb3VyY2VzXEpTTXV0YXRpb25PYnNlcnZlci5oIiAvPgpAQCAtMTg1OTksNDMgKzE4MzUzLDYg
QEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGh0bWxcdHJhY2tcVmlkZW9UcmFjay5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caHRtbFx0cmFja1xWaWRlb1RyYWNrTGlzdC5o
IiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caHRtbFx0cmFja1xXZWJWVFRFbGVtZW50
LmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGZpbGVzeXN0ZW1cQXN5
bmNGaWxlV3JpdGVyLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGZp
bGVzeXN0ZW1cQXN5bmNGaWxlV3JpdGVyQ2xpZW50LmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxNb2R1bGVzXGZpbGVzeXN0ZW1cRGlyZWN0b3J5RW50cnkuaCIgLz4KLSAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZmlsZXN5c3RlbVxEaXJlY3RvcnlFbnRyeVN5bmMu
aCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZmlsZXN5c3RlbVxEaXJl
Y3RvcnlSZWFkZXIuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZmls
ZXN5c3RlbVxEaXJlY3RvcnlSZWFkZXJCYXNlLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxNb2R1bGVzXGZpbGVzeXN0ZW1cRGlyZWN0b3J5UmVhZGVyU3luYy5oIiAvPgotICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xmaWxlc3lzdGVtXERPTUZpbGVQYXRoLmgiIC8+
Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGZpbGVzeXN0ZW1cRE9NRmlsZVN5
c3RlbS5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xmaWxlc3lzdGVt
XERPTUZpbGVTeXN0ZW1CYXNlLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1
bGVzXGZpbGVzeXN0ZW1cRE9NRmlsZVN5c3RlbVN5bmMuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXE1vZHVsZXNcZmlsZXN5c3RlbVxET01XaW5kb3dGaWxlU3lzdGVtLmgiIC8+Ci0g
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGZpbGVzeXN0ZW1cRW50cmllc0NhbGxi
YWNrLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGZpbGVzeXN0ZW1c
RW50cnkuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZmlsZXN5c3Rl
bVxFbnRyeUFycmF5LmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGZp
bGVzeXN0ZW1cRW50cnlBcnJheVN5bmMuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XE1vZHVsZXNcZmlsZXN5c3RlbVxFbnRyeUJhc2UuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXE1vZHVsZXNcZmlsZXN5c3RlbVxFbnRyeUNhbGxiYWNrLmgiIC8+Ci0gICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGZpbGVzeXN0ZW1cRW50cnlTeW5jLmgiIC8+Ci0gICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGZpbGVzeXN0ZW1cRXJyb3JDYWxsYmFjay5o
IiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xmaWxlc3lzdGVtXEZpbGVD
YWxsYmFjay5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xmaWxlc3lz
dGVtXEZpbGVFbnRyeS5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xm
aWxlc3lzdGVtXEZpbGVFbnRyeVN5bmMuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XE1vZHVsZXNcZmlsZXN5c3RlbVxGaWxlU3lzdGVtQ2FsbGJhY2suaCIgLz4KLSAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZmlsZXN5c3RlbVxGaWxlU3lzdGVtQ2FsbGJhY2tzLmgi
IC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGZpbGVzeXN0ZW1cRmlsZVN5
c3RlbUZsYWdzLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGZpbGVz
eXN0ZW1cRmlsZVN5c3RlbVR5cGUuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1v
ZHVsZXNcZmlsZXN5c3RlbVxGaWxlV3JpdGVyLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxNb2R1bGVzXGZpbGVzeXN0ZW1cRmlsZVdyaXRlckJhc2UuaCIgLz4KLSAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZmlsZXN5c3RlbVxGaWxlV3JpdGVyQmFzZUNhbGxiYWNr
LmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGZpbGVzeXN0ZW1cRmls
ZVdyaXRlckNhbGxiYWNrLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVz
XGZpbGVzeXN0ZW1cRmlsZVdyaXRlclN5bmMuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXE1vZHVsZXNcZmlsZXN5c3RlbVxMb2NhbEZpbGVTeXN0ZW0uaCIgLz4KLSAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZmlsZXN5c3RlbVxNZXRhZGF0YS5oIiAvPgotICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xmaWxlc3lzdGVtXE1ldGFkYXRhQ2FsbGJhY2su
aCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZmlsZXN5c3RlbVxTeW5j
Q2FsbGJhY2tIZWxwZXIuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNc
ZmlsZXN5c3RlbVxXb3JrZXJHbG9iYWxTY29wZUZpbGVTeXN0ZW0uaCIgLz4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZ2VvbG9jYXRpb25cQ29vcmRpbmF0ZXMuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZ2VvbG9jYXRpb25cR2VvbG9jYXRpb24u
aCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZ2VvbG9jYXRpb25cR2Vv
bG9jYXRpb25DbGllbnQuaCIgLz4KQEAgLTE4OTYwLDggKzE4Njc3LDYgQEAKICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXGxvYWRlclxjYWNoZVxDYWNoZVBvbGljeS5oIiAvPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5cbG9hZGVyXGNhY2hlXE1lbW9yeUNhY2hlLmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxBcmVuYS5oIiAvPgotICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5ccGxhdGZvcm1cQXN5bmNGaWxlU3lzdGVtLmgiIC8+Ci0gICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXENhbGN1bGF0aW9uVmFsdWUuaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXENsb2NrLmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxDbG9ja0dlbmVyaWMuaCIgLz4KQEAgLTIwODM1
LDcgKzIwNTUwLDYgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNw
ZWN0b3JET01BZ2VudC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9y
XEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaCIgLz4KLSAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JGcm9udGVuZENo
YW5uZWwuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0
b3JGcm9udGVuZENsaWVudC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVj
dG9yXEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaCIgLz4KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMJ
KHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJD
b3JlLnZjeHByb2ouZmlsdGVycwkod29ya2luZyBjb3B5KQpAQCAtMzAzLDcyICszMDMsNiBAQAog
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcSlNJREJBbnlDdXN0b20uY3Bw
Ij4KICAgICAgIDxGaWx0ZXI+RGVyaXZlZFNvdXJjZXM8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGls
ZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZmlsZXN5c3RlbVxEaXJlY3Rv
cnlFbnRyeS5jcHAiPgotICAgICAgPEZpbHRlcj5Nb2R1bGVzXGZpbGVzeXN0ZW08L0ZpbHRlcj4K
LSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZmls
ZXN5c3RlbVxEaXJlY3RvcnlFbnRyeVN5bmMuY3BwIj4KLSAgICAgIDxGaWx0ZXI+TW9kdWxlc1xm
aWxlc3lzdGVtPC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxNb2R1bGVzXGZpbGVzeXN0ZW1cRGlyZWN0b3J5UmVhZGVyLmNwcCI+Ci0gICAgICA8
RmlsdGVyPk1vZHVsZXNcZmlsZXN5c3RlbTwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgotICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xmaWxlc3lzdGVtXERpcmVjdG9yeVJlYWRl
clN5bmMuY3BwIj4KLSAgICAgIDxGaWx0ZXI+TW9kdWxlc1xmaWxlc3lzdGVtPC9GaWx0ZXI+Ci0g
ICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGZpbGVz
eXN0ZW1cRE9NRmlsZVBhdGguY3BwIj4KLSAgICAgIDxGaWx0ZXI+TW9kdWxlc1xmaWxlc3lzdGVt
PC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxN
b2R1bGVzXGZpbGVzeXN0ZW1cRE9NRmlsZVN5c3RlbS5jcHAiPgotICAgICAgPEZpbHRlcj5Nb2R1
bGVzXGZpbGVzeXN0ZW08L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXE1vZHVsZXNcZmlsZXN5c3RlbVxET01GaWxlU3lzdGVtQmFzZS5jcHAiPgot
ICAgICAgPEZpbHRlcj5Nb2R1bGVzXGZpbGVzeXN0ZW08L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGls
ZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZmlsZXN5c3RlbVxET01GaWxl
U3lzdGVtU3luYy5jcHAiPgotICAgICAgPEZpbHRlcj5Nb2R1bGVzXGZpbGVzeXN0ZW08L0ZpbHRl
cj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNc
ZmlsZXN5c3RlbVxET01XaW5kb3dGaWxlU3lzdGVtLmNwcCI+Ci0gICAgICA8RmlsdGVyPk1vZHVs
ZXNcZmlsZXN5c3RlbTwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5cTW9kdWxlc1xmaWxlc3lzdGVtXEVudHJ5LmNwcCI+Ci0gICAgICA8RmlsdGVy
Pk1vZHVsZXNcZmlsZXN5c3RlbTwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xmaWxlc3lzdGVtXEVudHJ5QXJyYXkuY3BwIj4KLSAg
ICAgIDxGaWx0ZXI+TW9kdWxlc1xmaWxlc3lzdGVtPC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+
Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGZpbGVzeXN0ZW1cRW50cnlBcnJh
eVN5bmMuY3BwIj4KLSAgICAgIDxGaWx0ZXI+TW9kdWxlc1xmaWxlc3lzdGVtPC9GaWx0ZXI+Ci0g
ICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGZpbGVz
eXN0ZW1cRW50cnlCYXNlLmNwcCI+Ci0gICAgICA8RmlsdGVyPk1vZHVsZXNcZmlsZXN5c3RlbTwv
RmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9k
dWxlc1xmaWxlc3lzdGVtXEVudHJ5U3luYy5jcHAiPgotICAgICAgPEZpbHRlcj5Nb2R1bGVzXGZp
bGVzeXN0ZW08L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXE1vZHVsZXNcZmlsZXN5c3RlbVxGaWxlRW50cnkuY3BwIj4KLSAgICAgIDxGaWx0ZXI+
TW9kdWxlc1xmaWxlc3lzdGVtPC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGZpbGVzeXN0ZW1cRmlsZUVudHJ5U3luYy5jcHAiPgot
ICAgICAgPEZpbHRlcj5Nb2R1bGVzXGZpbGVzeXN0ZW08L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGls
ZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZmlsZXN5c3RlbVxGaWxlU3lz
dGVtQ2FsbGJhY2tzLmNwcCI+Ci0gICAgICA8RmlsdGVyPk1vZHVsZXNcZmlsZXN5c3RlbTwvRmls
dGVyPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxl
c1xmaWxlc3lzdGVtXEZpbGVXcml0ZXIuY3BwIj4KLSAgICAgIDxGaWx0ZXI+TW9kdWxlc1xmaWxl
c3lzdGVtPC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxNb2R1bGVzXGZpbGVzeXN0ZW1cRmlsZVdyaXRlckJhc2UuY3BwIj4KLSAgICAgIDxGaWx0
ZXI+TW9kdWxlc1xmaWxlc3lzdGVtPC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGZpbGVzeXN0ZW1cRmlsZVdyaXRlclN5bmMuY3Bw
Ij4KLSAgICAgIDxGaWx0ZXI+TW9kdWxlc1xmaWxlc3lzdGVtPC9GaWx0ZXI+Ci0gICAgPC9DbENv
bXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGZpbGVzeXN0ZW1cTG9j
YWxGaWxlU3lzdGVtLmNwcCI+Ci0gICAgICA8RmlsdGVyPk1vZHVsZXNcZmlsZXN5c3RlbTwvRmls
dGVyPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxl
c1xmaWxlc3lzdGVtXFdvcmtlckdsb2JhbFNjb3BlRmlsZVN5c3RlbS5jcHAiPgotICAgICAgPEZp
bHRlcj5Nb2R1bGVzXGZpbGVzeXN0ZW08L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KICAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZ2VvbG9jYXRpb25cQ29vcmRpbmF0ZXMuY3Bw
Ij4KICAgICAgIDxGaWx0ZXI+TW9kdWxlc1xnZW9sb2NhdGlvbjwvRmlsdGVyPgogICAgIDwvQ2xD
b21waWxlPgpAQCAtMTA2Miw5ICs5OTYsNiBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
cGxhdGZvcm1cQXJlbmEuY3BwIj4KICAgICAgIDxGaWx0ZXI+cGxhdGZvcm08L0ZpbHRlcj4KICAg
ICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXEFzeW5j
RmlsZVN5c3RlbS5jcHAiPgotICAgICAgPEZpbHRlcj5wbGF0Zm9ybTwvRmlsdGVyPgotICAgIDwv
Q2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cQ2FsY3VsYXRp
b25WYWx1ZS5jcHAiPgogICAgICAgPEZpbHRlcj5wbGF0Zm9ybTwvRmlsdGVyPgogICAgIDwvQ2xD
b21waWxlPgpAQCAtNDQ0Niw5ICs0Mzc3LDYgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XGJpbmRpbmdzXGpzXEpTRE9NU3RyaW5nTWFwQ3VzdG9tLmNwcCI+CiAgICAgICA8RmlsdGVyPmJp
bmRpbmdzXGpzPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxiaW5kaW5nc1xqc1xKU0VudHJ5U3luY0N1c3RvbS5jcHAiPgotICAgICAgPEZpbHRl
cj5iaW5kaW5nc1xqczwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5cYmluZGluZ3NcanNcSlNFcnJvckhhbmRsZXIuY3BwIj4KICAgICAgIDxGaWx0
ZXI+YmluZGluZ3NcanM8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTUyMjMsOSArNTE1
MSw2IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xKU0hUTUxEb2N1
bWVudEN1c3RvbS5jcHAiPgogICAgICAgPEZpbHRlcj5iaW5kaW5nc1xqczwvRmlsdGVyPgogICAg
IDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcSlNF
bnRyeUN1c3RvbS5jcHAiPgotICAgICAgPEZpbHRlcj5iaW5kaW5nc1xqczwvRmlsdGVyPgotICAg
IDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcSlNE
T01XaW5kb3dCYXNlLmNwcCI+CiAgICAgICA8RmlsdGVyPmJpbmRpbmdzXGpzPC9GaWx0ZXI+CiAg
ICAgPC9DbENvbXBpbGU+CkBAIC01NDkxLDE4ICs1NDE2LDYgQEAKICAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJl
KVxXZWJDb3JlXERlcml2ZWRTb3VyY2VzXEpTRGV2aWNlT3JpZW50YXRpb25FdmVudC5jcHAiPgog
ICAgICAgPEZpbHRlcj5EZXJpdmVkU291cmNlczwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgot
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxh
dGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRGlyZWN0
b3J5RW50cnkuY3BwIj4KLSAgICAgIDxGaWx0ZXI+RGVyaXZlZFNvdXJjZXM8L0ZpbHRlcj4KLSAg
ICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1
aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVk
U291cmNlc1xKU0RpcmVjdG9yeUVudHJ5U3luYy5jcHAiPgotICAgICAgPEZpbHRlcj5EZXJpdmVk
U291cmNlczwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQo
UHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRGlyZWN0b3J5UmVhZGVyLmNwcCI+Ci0gICAg
ICA8RmlsdGVyPkRlcml2ZWRTb3VyY2VzPC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9y
bUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNEaXJlY3RvcnlS
ZWFkZXJTeW5jLmNwcCI+Ci0gICAgICA8RmlsdGVyPkRlcml2ZWRTb3VyY2VzPC9GaWx0ZXI+Ci0g
ICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25C
dWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZl
ZFNvdXJjZXNcSlNEb2N1bWVudC5jcHAiPgogICAgICAgPEZpbHRlcj5EZXJpdmVkU291cmNlczwv
RmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAtNTUyMSwxMiArNTQzNCw2IEBACiAgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFy
Y2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNET01FcnJvci5jcHAi
PgogICAgICAgPEZpbHRlcj5EZXJpdmVkU291cmNlczwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxl
PgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQo
UGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRE9N
RmlsZVN5c3RlbS5jcHAiPgotICAgICAgPEZpbHRlcj5EZXJpdmVkU291cmNlczwvRmlsdGVyPgot
ICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9u
QnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2
ZWRTb3VyY2VzXEpTRE9NRmlsZVN5c3RlbVN5bmMuY3BwIj4KLSAgICAgIDxGaWx0ZXI+RGVyaXZl
ZFNvdXJjZXM8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1
ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwk
KFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0RPTUZvcm1EYXRhLmNwcCI+CiAgICAgICA8
RmlsdGVyPkRlcml2ZWRTb3VyY2VzPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC01NTgx
LDI3ICs1NDg4LDYgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1
aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVk
U291cmNlc1xKU0VudGl0eVJlZmVyZW5jZS5jcHAiPgogICAgICAgPEZpbHRlcj5EZXJpdmVkU291
cmNlczwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
JChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJv
amVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRW50cmllc0NhbGxiYWNrLmNwcCI+Ci0gICAgICA8
RmlsdGVyPkRlcml2ZWRTb3VyY2VzPC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFy
Y2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNFbnRyeS5jcHAiPgot
ICAgICAgPEZpbHRlcj5EZXJpdmVkU291cmNlczwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgot
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxh
dGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRW50cnlB
cnJheS5jcHAiPgotICAgICAgPEZpbHRlcj5EZXJpdmVkU291cmNlczwvRmlsdGVyPgotICAgIDwv
Q2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGRE
aXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3Vy
Y2VzXEpTRW50cnlBcnJheVN5bmMuY3BwIj4KLSAgICAgIDxGaWx0ZXI+RGVyaXZlZFNvdXJjZXM8
L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29u
ZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3RO
YW1lKVxEZXJpdmVkU291cmNlc1xKU0VudHJ5Q2FsbGJhY2suY3BwIj4KLSAgICAgIDxGaWx0ZXI+
RGVyaXZlZFNvdXJjZXM8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxl
IEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0
dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0VudHJ5U3luYy5jcHAiPgotICAg
ICAgPEZpbHRlcj5EZXJpdmVkU291cmNlczwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgotICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZv
cm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRXJyb3JDYWxs
YmFjay5jcHAiPgotICAgICAgPEZpbHRlcj5EZXJpdmVkU291cmNlczwvRmlsdGVyPgotICAgIDwv
Q2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGRE
aXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3Vy
Y2VzXEpTRXJyb3JFdmVudC5jcHAiPgogICAgICAgPEZpbHRlcj5EZXJpdmVkU291cmNlczwvRmls
dGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAtNTYyMCwxNSArNTUwNiw2IEBACiAgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hp
dGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNGaWxlLmNwcCI+CiAgICAg
ICA8RmlsdGVyPkRlcml2ZWRTb3VyY2VzPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+Ci0gICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9y
bUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNGaWxlQ2FsbGJh
Y2suY3BwIj4KLSAgICAgIDxGaWx0ZXI+RGVyaXZlZFNvdXJjZXM8L0ZpbHRlcj4KLSAgICA8L0Ns
Q29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGly
KVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNl
c1xKU0ZpbGVFbnRyeS5jcHAiPgotICAgICAgPEZpbHRlcj5EZXJpdmVkU291cmNlczwvRmlsdGVy
PgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0
aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERl
cml2ZWRTb3VyY2VzXEpTRmlsZUVudHJ5U3luYy5jcHAiPgotICAgICAgPEZpbHRlcj5EZXJpdmVk
U291cmNlczwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQo
UHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRmlsZUVycm9yLmNwcCI+CiAgICAgICA8Rmls
dGVyPkRlcml2ZWRTb3VyY2VzPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC01NjQ0LDE4
ICs1NTIxLDYgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxk
RGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291
cmNlc1xKU0ZpbGVSZWFkZXJTeW5jLmNwcCI+CiAgICAgICA8RmlsdGVyPkRlcml2ZWRTb3VyY2Vz
PC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENv
bmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0
TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNGaWxlU3lzdGVtQ2FsbGJhY2suY3BwIj4KLSAgICAgIDxG
aWx0ZXI+RGVyaXZlZFNvdXJjZXM8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xD
b21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJj
aGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0ZpbGVXcml0ZXIuY3Bw
Ij4KLSAgICAgIDxGaWx0ZXI+RGVyaXZlZFNvdXJjZXM8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGls
ZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmok
KFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0Zp
bGVXcml0ZXJDYWxsYmFjay5jcHAiPgotICAgICAgPEZpbHRlcj5EZXJpdmVkU291cmNlczwvRmls
dGVyPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1
cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUp
XERlcml2ZWRTb3VyY2VzXEpTRmlsZVdyaXRlclN5bmMuY3BwIj4KLSAgICAgIDxGaWx0ZXI+RGVy
aXZlZFNvdXJjZXM8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJl
KVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0ZvbnRMb2FkZXIuY3BwIj4KICAgICAg
IDxGaWx0ZXI+RGVyaXZlZFNvdXJjZXM8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTU5
NjgsMTIgKzU4MzMsNiBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9u
QnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2
ZWRTb3VyY2VzXEpTTWVzc2FnZVBvcnQuY3BwIj4KICAgICAgIDxGaWx0ZXI+RGVyaXZlZFNvdXJj
ZXM8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQo
Q29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2pl
Y3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU01ldGFkYXRhLmNwcCI+Ci0gICAgICA8RmlsdGVyPkRl
cml2ZWRTb3VyY2VzPC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVy
ZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNNZXRhZGF0YUNhbGxiYWNrLmNwcCI+
Ci0gICAgICA8RmlsdGVyPkRlcml2ZWRTb3VyY2VzPC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+
CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQ
bGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNNb3Vz
ZUV2ZW50LmNwcCI+CiAgICAgICA8RmlsdGVyPkRlcml2ZWRTb3VyY2VzPC9GaWx0ZXI+CiAgICAg
PC9DbENvbXBpbGU+CkBAIC03MDMyLDExNyArNjg5MSw2IEBACiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxyZW5kZXJpbmdcc2hhcGVzXFNoYXBlSW5mby5jcHAiIC8+CiAgIDwvSXRlbUdyb3Vw
PgogICA8SXRlbUdyb3VwPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xmaWxl
c3lzdGVtXEFzeW5jRmlsZVdyaXRlci5oIj4KLSAgICAgIDxGaWx0ZXI+TW9kdWxlc1xmaWxlc3lz
dGVtPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxNb2R1bGVzXGZpbGVzeXN0ZW1cQXN5bmNGaWxlV3JpdGVyQ2xpZW50LmgiPgotICAgICAgPEZp
bHRlcj5Nb2R1bGVzXGZpbGVzeXN0ZW08L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZmlsZXN5c3RlbVxEaXJlY3RvcnlFbnRyeS5o
Ij4KLSAgICAgIDxGaWx0ZXI+TW9kdWxlc1xmaWxlc3lzdGVtPC9GaWx0ZXI+Ci0gICAgPC9DbElu
Y2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGZpbGVzeXN0ZW1cRGly
ZWN0b3J5RW50cnlTeW5jLmgiPgotICAgICAgPEZpbHRlcj5Nb2R1bGVzXGZpbGVzeXN0ZW08L0Zp
bHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVs
ZXNcZmlsZXN5c3RlbVxEaXJlY3RvcnlSZWFkZXIuaCI+Ci0gICAgICA8RmlsdGVyPk1vZHVsZXNc
ZmlsZXN5c3RlbTwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5cTW9kdWxlc1xmaWxlc3lzdGVtXERpcmVjdG9yeVJlYWRlckJhc2UuaCI+Ci0gICAg
ICA8RmlsdGVyPk1vZHVsZXNcZmlsZXN5c3RlbTwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgot
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xmaWxlc3lzdGVtXERpcmVjdG9yeVJl
YWRlclN5bmMuaCI+Ci0gICAgICA8RmlsdGVyPk1vZHVsZXNcZmlsZXN5c3RlbTwvRmlsdGVyPgot
ICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xmaWxl
c3lzdGVtXERPTUZpbGVQYXRoLmgiPgotICAgICAgPEZpbHRlcj5Nb2R1bGVzXGZpbGVzeXN0ZW08
L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1v
ZHVsZXNcZmlsZXN5c3RlbVxET01GaWxlU3lzdGVtLmgiPgotICAgICAgPEZpbHRlcj5Nb2R1bGVz
XGZpbGVzeXN0ZW08L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXE1vZHVsZXNcZmlsZXN5c3RlbVxET01GaWxlU3lzdGVtQmFzZS5oIj4KLSAgICAg
IDxGaWx0ZXI+TW9kdWxlc1xmaWxlc3lzdGVtPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0g
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGZpbGVzeXN0ZW1cRE9NRmlsZVN5c3Rl
bVN5bmMuaCI+Ci0gICAgICA8RmlsdGVyPk1vZHVsZXNcZmlsZXN5c3RlbTwvRmlsdGVyPgotICAg
IDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xmaWxlc3lz
dGVtXERPTVdpbmRvd0ZpbGVTeXN0ZW0uaCI+Ci0gICAgICA8RmlsdGVyPk1vZHVsZXNcZmlsZXN5
c3RlbTwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5cTW9kdWxlc1xmaWxlc3lzdGVtXEVudHJpZXNDYWxsYmFjay5oIj4KLSAgICAgIDxGaWx0ZXI+
TW9kdWxlc1xmaWxlc3lzdGVtPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGZpbGVzeXN0ZW1cRW50cnkuaCI+Ci0gICAgICA8Rmls
dGVyPk1vZHVsZXNcZmlsZXN5c3RlbTwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xmaWxlc3lzdGVtXEVudHJ5QXJyYXkuaCI+Ci0g
ICAgICA8RmlsdGVyPk1vZHVsZXNcZmlsZXN5c3RlbTwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRl
PgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xmaWxlc3lzdGVtXEVudHJ5QXJy
YXlTeW5jLmgiPgotICAgICAgPEZpbHRlcj5Nb2R1bGVzXGZpbGVzeXN0ZW08L0ZpbHRlcj4KLSAg
ICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZmlsZXN5
c3RlbVxFbnRyeUJhc2UuaCI+Ci0gICAgICA8RmlsdGVyPk1vZHVsZXNcZmlsZXN5c3RlbTwvRmls
dGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxl
c1xmaWxlc3lzdGVtXEVudHJ5Q2FsbGJhY2suaCI+Ci0gICAgICA8RmlsdGVyPk1vZHVsZXNcZmls
ZXN5c3RlbTwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5cTW9kdWxlc1xmaWxlc3lzdGVtXEVudHJ5U3luYy5oIj4KLSAgICAgIDxGaWx0ZXI+TW9k
dWxlc1xmaWxlc3lzdGVtPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGZpbGVzeXN0ZW1cRXJyb3JDYWxsYmFjay5oIj4KLSAgICAg
IDxGaWx0ZXI+TW9kdWxlc1xmaWxlc3lzdGVtPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0g
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGZpbGVzeXN0ZW1cRmlsZUNhbGxiYWNr
LmgiPgotICAgICAgPEZpbHRlcj5Nb2R1bGVzXGZpbGVzeXN0ZW08L0ZpbHRlcj4KLSAgICA8L0Ns
SW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZmlsZXN5c3RlbVxG
aWxlRW50cnkuaCI+Ci0gICAgICA8RmlsdGVyPk1vZHVsZXNcZmlsZXN5c3RlbTwvRmlsdGVyPgot
ICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xmaWxl
c3lzdGVtXEZpbGVFbnRyeVN5bmMuaCI+Ci0gICAgICA8RmlsdGVyPk1vZHVsZXNcZmlsZXN5c3Rl
bTwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
TW9kdWxlc1xmaWxlc3lzdGVtXEZpbGVTeXN0ZW1DYWxsYmFjay5oIj4KLSAgICAgIDxGaWx0ZXI+
TW9kdWxlc1xmaWxlc3lzdGVtPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGZpbGVzeXN0ZW1cRmlsZVN5c3RlbUNhbGxiYWNrcy5o
Ij4KLSAgICAgIDxGaWx0ZXI+TW9kdWxlc1xmaWxlc3lzdGVtPC9GaWx0ZXI+Ci0gICAgPC9DbElu
Y2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGZpbGVzeXN0ZW1cRmls
ZVN5c3RlbUZsYWdzLmgiPgotICAgICAgPEZpbHRlcj5Nb2R1bGVzXGZpbGVzeXN0ZW08L0ZpbHRl
cj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNc
ZmlsZXN5c3RlbVxGaWxlU3lzdGVtVHlwZS5oIj4KLSAgICAgIDxGaWx0ZXI+TW9kdWxlc1xmaWxl
c3lzdGVtPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxNb2R1bGVzXGZpbGVzeXN0ZW1cRmlsZVdyaXRlci5oIj4KLSAgICAgIDxGaWx0ZXI+TW9k
dWxlc1xmaWxlc3lzdGVtPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGZpbGVzeXN0ZW1cRmlsZVdyaXRlckJhc2UuaCI+Ci0gICAg
ICA8RmlsdGVyPk1vZHVsZXNcZmlsZXN5c3RlbTwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgot
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xmaWxlc3lzdGVtXEZpbGVXcml0ZXJC
YXNlQ2FsbGJhY2suaCI+Ci0gICAgICA8RmlsdGVyPk1vZHVsZXNcZmlsZXN5c3RlbTwvRmlsdGVy
PgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xm
aWxlc3lzdGVtXEZpbGVXcml0ZXJDYWxsYmFjay5oIj4KLSAgICAgIDxGaWx0ZXI+TW9kdWxlc1xm
aWxlc3lzdGVtPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxNb2R1bGVzXGZpbGVzeXN0ZW1cRmlsZVdyaXRlclN5bmMuaCI+Ci0gICAgICA8Rmls
dGVyPk1vZHVsZXNcZmlsZXN5c3RlbTwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xmaWxlc3lzdGVtXExvY2FsRmlsZVN5c3RlbS5o
Ij4KLSAgICAgIDxGaWx0ZXI+TW9kdWxlc1xmaWxlc3lzdGVtPC9GaWx0ZXI+Ci0gICAgPC9DbElu
Y2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGZpbGVzeXN0ZW1cTWV0
YWRhdGEuaCI+Ci0gICAgICA8RmlsdGVyPk1vZHVsZXNcZmlsZXN5c3RlbTwvRmlsdGVyPgotICAg
IDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xmaWxlc3lz
dGVtXE1ldGFkYXRhQ2FsbGJhY2suaCI+Ci0gICAgICA8RmlsdGVyPk1vZHVsZXNcZmlsZXN5c3Rl
bTwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
TW9kdWxlc1xmaWxlc3lzdGVtXFN5bmNDYWxsYmFja0hlbHBlci5oIj4KLSAgICAgIDxGaWx0ZXI+
TW9kdWxlc1xmaWxlc3lzdGVtPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGZpbGVzeXN0ZW1cV29ya2VyR2xvYmFsU2NvcGVGaWxl
U3lzdGVtLmgiPgotICAgICAgPEZpbHRlcj5Nb2R1bGVzXGZpbGVzeXN0ZW08L0ZpbHRlcj4KLSAg
ICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZ2VvbG9j
YXRpb25cQ29vcmRpbmF0ZXMuaCI+CiAgICAgICA8RmlsdGVyPk1vZHVsZXNcZ2VvbG9jYXRpb248
L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KQEAgLTgwMjgsMTIgKzc3NzYsNiBAQAogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cQXJlbmEuaCI+CiAgICAgICA8RmlsdGVyPnBs
YXRmb3JtPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxwbGF0Zm9ybVxBc3luY0ZpbGVTeXN0ZW0uaCI+Ci0gICAgICA8RmlsdGVyPnBsYXRmb3Jt
PC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxw
bGF0Zm9ybVxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MuaCI+Ci0gICAgICA8RmlsdGVyPnBsYXRm
b3JtPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxwbGF0Zm9ybVxDYWxjdWxhdGlvblZhbHVlLmgiPgogICAgICAgPEZpbHRlcj5wbGF0Zm9ybTwv
RmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpAQCAtMTMyNTYsMTggKzEyOTk4LDYgQEAKICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3Jt
QXJjaGl0ZWN0dXJlKVxXZWJDb3JlXERlcml2ZWRTb3VyY2VzXEpTRGV2aWNlT3JpZW50YXRpb25F
dmVudC5oIj4KICAgICAgIDxGaWx0ZXI+RGVyaXZlZFNvdXJjZXM8L0ZpbHRlcj4KICAgICA8L0Ns
SW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGly
KVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNl
c1xKU0RpcmVjdG9yeUVudHJ5LmgiPgotICAgICAgPEZpbHRlcj5EZXJpdmVkU291cmNlczwvRmls
dGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1
cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUp
XERlcml2ZWRTb3VyY2VzXEpTRGlyZWN0b3J5RW50cnlTeW5jLmgiPgotICAgICAgPEZpbHRlcj5E
ZXJpdmVkU291cmNlczwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1
cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRGlyZWN0b3J5UmVhZGVyLmgiPgot
ICAgICAgPEZpbHRlcj5EZXJpdmVkU291cmNlczwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgot
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxh
dGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRGlyZWN0
b3J5UmVhZGVyU3luYy5oIj4KLSAgICAgIDxGaWx0ZXI+RGVyaXZlZFNvdXJjZXM8L0ZpbHRlcj4K
LSAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlv
bkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJp
dmVkU291cmNlc1xKU0RvY3VtZW50LmgiPgogICAgICAgPEZpbHRlcj5EZXJpdmVkU291cmNlczwv
RmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpAQCAtMTMyODYsMTIgKzEzMDE2LDYgQEAKICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3Jt
QXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0RPTUVycm9yLmgi
PgogICAgICAgPEZpbHRlcj5EZXJpdmVkU291cmNlczwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRl
PgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQo
UGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRE9N
RmlsZVN5c3RlbS5oIj4KLSAgICAgIDxGaWx0ZXI+RGVyaXZlZFNvdXJjZXM8L0ZpbHRlcj4KLSAg
ICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1
aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVk
U291cmNlc1xKU0RPTUZpbGVTeXN0ZW1TeW5jLmgiPgotICAgICAgPEZpbHRlcj5EZXJpdmVkU291
cmNlczwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
JChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJv
amVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRE9NRm9ybURhdGEuaCI+CiAgICAgICA8RmlsdGVy
PkRlcml2ZWRTb3VyY2VzPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CkBAIC0xMzM0NiwyNyAr
MTMwNzAsNiBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGRE
aXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3Vy
Y2VzXEpTRW50aXR5UmVmZXJlbmNlLmgiPgogICAgICAgPEZpbHRlcj5EZXJpdmVkU291cmNlczwv
RmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25m
aWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5h
bWUpXERlcml2ZWRTb3VyY2VzXEpTRW50cmllc0NhbGxiYWNrLmgiPgotICAgICAgPEZpbHRlcj5E
ZXJpdmVkU291cmNlczwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1
cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRW50cnkuaCI+Ci0gICAgICA8Rmls
dGVyPkRlcml2ZWRTb3VyY2VzPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hp
dGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNFbnRyeUFycmF5LmgiPgot
ICAgICAgPEZpbHRlcj5EZXJpdmVkU291cmNlczwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgot
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxh
dGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRW50cnlB
cnJheVN5bmMuaCI+Ci0gICAgICA8RmlsdGVyPkRlcml2ZWRTb3VyY2VzPC9GaWx0ZXI+Ci0gICAg
PC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWls
ZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNv
dXJjZXNcSlNFbnRyeUNhbGxiYWNrLmgiPgotICAgICAgPEZpbHRlcj5EZXJpdmVkU291cmNlczwv
RmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25m
aWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5h
bWUpXERlcml2ZWRTb3VyY2VzXEpTRW50cnlTeW5jLmgiPgotICAgICAgPEZpbHRlcj5EZXJpdmVk
U291cmNlczwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQo
UHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRXJyb3JDYWxsYmFjay5oIj4KLSAgICAgIDxG
aWx0ZXI+RGVyaXZlZFNvdXJjZXM8L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJj
aGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0Vycm9yRXZlbnQuaCI+
CiAgICAgICA8RmlsdGVyPkRlcml2ZWRTb3VyY2VzPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+
CkBAIC0xMzM4NSwxNSArMTMwODgsNiBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25m
aWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5h
bWUpXERlcml2ZWRTb3VyY2VzXEpTRmlsZS5oIj4KICAgICAgIDxGaWx0ZXI+RGVyaXZlZFNvdXJj
ZXM8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQo
Q29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2pl
Y3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0ZpbGVDYWxsYmFjay5oIj4KLSAgICAgIDxGaWx0ZXI+
RGVyaXZlZFNvdXJjZXM8L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0
dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0ZpbGVFbnRyeS5oIj4KLSAgICAg
IDxGaWx0ZXI+RGVyaXZlZFNvdXJjZXM8L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3Jt
QXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0ZpbGVFbnRyeVN5
bmMuaCI+Ci0gICAgICA8RmlsdGVyPkRlcml2ZWRTb3VyY2VzPC9GaWx0ZXI+Ci0gICAgPC9DbElu
Y2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilc
b2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNc
SlNGaWxlRXJyb3IuaCI+CiAgICAgICA8RmlsdGVyPkRlcml2ZWRTb3VyY2VzPC9GaWx0ZXI+CiAg
ICAgPC9DbEluY2x1ZGU+CkBAIC0xMzQwOSwxOCArMTMxMDMsNiBAQAogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1
cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRmlsZVJlYWRlclN5bmMuaCI+CiAg
ICAgICA8RmlsdGVyPkRlcml2ZWRTb3VyY2VzPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+Ci0g
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0
Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNGaWxlU3lz
dGVtQ2FsbGJhY2suaCI+Ci0gICAgICA8RmlsdGVyPkRlcml2ZWRTb3VyY2VzPC9GaWx0ZXI+Ci0g
ICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25C
dWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZl
ZFNvdXJjZXNcSlNGaWxlV3JpdGVyLmgiPgotICAgICAgPEZpbHRlcj5EZXJpdmVkU291cmNlczwv
RmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25m
aWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5h
bWUpXERlcml2ZWRTb3VyY2VzXEpTRmlsZVdyaXRlckNhbGxiYWNrLmgiPgotICAgICAgPEZpbHRl
cj5EZXJpdmVkU291cmNlczwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRl
Y3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRmlsZVdyaXRlclN5bmMuaCI+
Ci0gICAgICA8RmlsdGVyPkRlcml2ZWRTb3VyY2VzPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQ
bGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNGb250
TG9hZGVyLmgiPgogICAgICAgPEZpbHRlcj5EZXJpdmVkU291cmNlczwvRmlsdGVyPgogICAgIDwv
Q2xJbmNsdWRlPgpAQCAtMTM3MjcsMTIgKzEzNDA5LDYgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwk
KFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU01lc3NhZ2VQb3J0LmgiPgogICAgICAgPEZp
bHRlcj5EZXJpdmVkU291cmNlczwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNo
aXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTTWV0YWRhdGEuaCI+Ci0g
ICAgICA8RmlsdGVyPkRlcml2ZWRTb3VyY2VzPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0g
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0
Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNNZXRhZGF0
YUNhbGxiYWNrLmgiPgotICAgICAgPEZpbHRlcj5EZXJpdmVkU291cmNlczwvRmlsdGVyPgotICAg
IDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVp
bGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRT
b3VyY2VzXEpTTW91c2VFdmVudC5oIj4KICAgICAgIDxGaWx0ZXI+RGVyaXZlZFNvdXJjZXM8L0Zp
bHRlcj4KICAgICA8L0NsSW5jbHVkZT4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtNTE3LDggKzUxNyw2IEBACiAJCTE1Qzc3MDk0MTAwRDNDQTgwMDVCQTI2NyAvKiBKU1Zh
bGlkaXR5U3RhdGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMTVDNzcwOTIxMDBEM0NBODAwNUJBMjY3IC8qIEpTVmFsaWRpdHlTdGF0ZS5jcHAgKi87
IH07CiAJCTE1Qzc3MEE1MTAwRDQxQ0QwMDVCQTI2NyAvKiBET01WYWxpZGl0eVN0YXRlLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTVDNzcwQTMxMDBE
NDFDRDAwNUJBMjY3IC8qIERPTVZhbGlkaXR5U3RhdGUubW0gKi87IH07CiAJCTE1Qzc3MEE2MTAw
RDQxQ0QwMDVCQTI2NyAvKiBET01WYWxpZGl0eVN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNUM3NzBBNDEwMEQ0MUNEMDA1QkEyNjcgLyogRE9N
VmFsaWRpdHlTdGF0ZS5oICovOyB9OwotCQkxNUQxN0QyMTE0NzIzMUVCMDA1RUJDQTYgLyogSW5z
cGVjdG9yRmlsZVN5c3RlbUFnZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDE1RDE3RDFFMTQ3MjMxRUIwMDVFQkNBNiAvKiBJbnNwZWN0b3JGaWxl
U3lzdGVtQWdlbnQuY3BwICovOyB9OwotCQkxNUQxN0QyMjE0NzIzMUVCMDA1RUJDQTYgLyogSW5z
cGVjdG9yRmlsZVN5c3RlbUFnZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxNUQxN0QxRjE0NzIzMUVCMDA1RUJDQTYgLyogSW5zcGVjdG9yRmlsZVN5
c3RlbUFnZW50LmggKi87IH07CiAJCTE2M0U4OEY3MTE4QTM5RDIwMEVEOTIzMSAvKiBTaW1wbGVG
b250RGF0YUNvcmVUZXh0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDE2M0U4OEY1MTE4QTM5RDIwMEVEOTIzMSAvKiBTaW1wbGVGb250RGF0YUNvcmVU
ZXh0LmNwcCAqLzsgfTsKIAkJMTg1QkNGMjgwRjMyNzlDRTAwMEVBMjYyIC8qIFRocmVhZFRpbWVy
cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxODVC
Q0YyNjBGMzI3OUNFMDAwRUEyNjIgLyogVGhyZWFkVGltZXJzLmNwcCAqLzsgfTsKIAkJMTg1QkNG
MjkwRjMyNzlDRTAwMEVBMjYyIC8qIFRocmVhZFRpbWVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTg1QkNGMjcwRjMyNzlDRTAwMEVBMjYyIC8qIFRo
cmVhZFRpbWVycy5oICovOyB9OwpAQCAtMTM2MSwxNCArMTM1OSwxMCBAQAogCQk0NUJBQzJCMDEz
NjBCQkFCMDA1REEyNTggLyogSWNvblVSTC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDVCQUMyQUYxMzYwQkJBQjAwNURBMjU4IC8qIEljb25VUkwuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NUZFQTVD
RjE1NkRERThDMDA2NTQxMDEgLyogRGVjaW1hbC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NUZFQTVDRDE1NkRERThDMDA2NTQxMDEgLyogRGVjaW1h
bC5jcHAgKi87IH07CiAJCTQ1RkVBNUQwMTU2RERFOEMwMDY1NDEwMSAvKiBEZWNpbWFsLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NUZFQTVDRTE1NkRE
RThDMDA2NTQxMDEgLyogRGVjaW1hbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07Ci0JCTQ2NzAwRUQxMTI3Qjk2Q0IwMEY1RDVENiAvKiBGaWxlV3JpdGVy
U3luYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY3
MDBFQ0YxMjdCOTZDQjAwRjVENUQ2IC8qIEZpbGVXcml0ZXJTeW5jLmggKi87IH07CiAJCTQ2ODlG
MUFGMTI2N0JBRTEwMEU4RDM4MCAvKiBGaWxlTWV0YWRhdGEuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODlGMUFFMTI2N0JBRTEwMEU4RDM4MCAvKiBG
aWxlTWV0YWRhdGEuaCAqLzsgfTsKLQkJNDZCQzcyNEYxMjlCMTA0QzAwNzFDMDdFIC8qIEZpbGVX
cml0ZXJCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0NkJDNzI0QzEyOUIxMDRDMDA3MUMwN0UgLyogRmlsZVdyaXRlckJhc2UuaCAqLzsgfTsKLQkJ
NDZCQzcyNTAxMjlCMTA0QzAwNzFDMDdFIC8qIEZpbGVXcml0ZXJCYXNlQ2FsbGJhY2suaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QkM3MjREMTI5QjEw
NEMwMDcxQzA3RSAvKiBGaWxlV3JpdGVyQmFzZUNhbGxiYWNrLmggKi87IH07CiAJCTQ2QkQxNkUz
MEIyNzk0NzMwMDFGMDgzOSAvKiBub25lQ3Vyc29yLnBuZyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCRDE2RTIwQjI3OTQ3MzAwMUYwODM5IC8qIG5v
bmVDdXJzb3IucG5nICovOyB9OwogCQk0NkQ0RjI0OTBBRjk3RTgxMDAzNTM4NUEgLyogY2VsbEN1
cnNvci5wbmcgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ2RDRGMjQ2MEFGOTdFODEwMDM1Mzg1QSAvKiBjZWxsQ3Vyc29yLnBuZyAqLzsgfTsKIAkJNDZE
NEYyNEIwQUY5N0U4MTAwMzUzODVBIC8qIHZlcnRpY2FsVGV4dEN1cnNvci5wbmcgaW4gUmVzb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RDRGMjQ4MEFGOTdFODEw
MDM1Mzg1QSAvKiB2ZXJ0aWNhbFRleHRDdXJzb3IucG5nICovOyB9OwotCQk0NkRBODQ0RTEyMjRB
MDcxMDA2MEQwMDYgLyogSlNGaWxlV3JpdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0NkRBODQ0QzEyMjRBMDcxMDA2MEQwMDYgLyogSlNGaWxlV3Jp
dGVyLmggKi87IH07CiAJCTQ2RjlENUREMEIwRDYwMTcwMDI4RUUzNiAvKiBhbGlhc0N1cnNvci5w
bmcgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RjlE
NURBMEIwRDYwMTcwMDI4RUUzNiAvKiBhbGlhc0N1cnNvci5wbmcgKi87IH07CiAJCTQ2RjlENURG
MEIwRDYwMTcwMDI4RUUzNiAvKiBwcm9ncmVzc0N1cnNvci5wbmcgaW4gUmVzb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RjlENURDMEIwRDYwMTcwMDI4RUUzNiAv
KiBwcm9ncmVzc0N1cnNvci5wbmcgKi87IH07CiAJCTQ5MDcwN0U2MTIxOUMwNDMwMEQ5MEU1MSAv
KiBBTkdMRVdlYktpdEJyaWRnZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0OTA3MDdFNDEyMTlDMDQzMDBEOTBFNTEgLyogQU5HTEVXZWJLaXRCcmlk
Z2UuY3BwICovOyB9OwpAQCAtMjc0MSw2OCArMjczNSwxMyBAQAogCQk4NkQ5ODJGNzEyNUMxNTQw
MDBBRDlFM0QgLyogRG9jdW1lbnRUaW1pbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDg2RDk4MkY2MTI1QzE1NDAwMEFEOUUzRCAvKiBEb2N1bWVudFRp
bWluZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTg2RkY4ODYxMTVERTNEMDcwMEJENkIyOCAvKiBSZW5kZXJUZXh0VHJhY2tDdWUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZGRjg4NUUxNURFM0I4
MjAwQkQ2QjI4IC8qIFJlbmRlclRleHRUcmFja0N1ZS5jcHAgKi87IH07CiAJCTg2RkY4ODYyMTVE
RTNEMDcwMEJENkIyOCAvKiBSZW5kZXJUZXh0VHJhY2tDdWUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RkY4ODVGMTVERTNCODIwMEJENkIyOCAvKiBS
ZW5kZXJUZXh0VHJhY2tDdWUuaCAqLzsgfTsKLQkJODkwQUUwRTExMjU2QTA3OTAwRjU5NjhDIC8q
IERpcmVjdG9yeVJlYWRlckJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDg5MEFFMEUwMTI1NkEwNzkwMEY1OTY4QyAvKiBEaXJlY3RvcnlSZWFkZXJC
YXNlLmggKi87IH07CiAJCTg5MzFERTVCMTRDNDRDNDQwMDBEQzlEMiAvKiBKU0Jsb2JDdXN0b20u
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODkzMURF
NUExNEM0NEM0NDAwMERDOUQyIC8qIEpTQmxvYkN1c3RvbS5jcHAgKi87IH07Ci0JCTg5M0M0N0E3
MTIzODkwOEIwMDJCM0Q4NiAvKiBGaWxlQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg5M0M0N0E1MTIzODkwOEIwMDJCM0Q4NiAvKiBGaWxl
Q2FsbGJhY2suaCAqLzsgfTsKLQkJODkzQzQ3QTgxMjM4OTA4QjAwMkIzRDg2IC8qIEZpbGVXcml0
ZXJDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODkzQzQ3QTYxMjM4OTA4QjAwMkIzRDg2IC8qIEZpbGVXcml0ZXJDYWxsYmFjay5oICovOyB9
OwotCQk4OTNDNDdCODEyMzhBMDk5MDAyQjNEODYgLyogSlNGaWxlQ2FsbGJhY2suaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg5M0M0N0I2MTIzOEEwOTkw
MDJCM0Q4NiAvKiBKU0ZpbGVDYWxsYmFjay5oICovOyB9OwotCQk4OTNDNDdCQjEyMzhBMEE5MDAy
QjNEODYgLyogSlNGaWxlV3JpdGVyQ2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODkzQzQ3QjkxMjM4QTBBOTAwMkIzRDg2IC8qIEpTRmls
ZVdyaXRlckNhbGxiYWNrLmNwcCAqLzsgfTsKLQkJODkzQzQ3QkMxMjM4QTBBOTAwMkIzRDg2IC8q
IEpTRmlsZVdyaXRlckNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4OTNDNDdCQTEyMzhBMEE5MDAyQjNEODYgLyogSlNGaWxlV3JpdGVyQ2Fs
bGJhY2suaCAqLzsgfTsKLQkJODkzQzQ4MDExMjQ4QkQzQTAwMkIzRDg2IC8qIERpcmVjdG9yeUVu
dHJ5U3luYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODkzQzQ3RjExMjQ4QkQzOTAwMkIzRDg2IC8qIERpcmVjdG9yeUVudHJ5U3luYy5oICovOyB9Owot
CQk4OTNDNDgwMjEyNDhCRDNBMDAyQjNEODYgLyogRGlyZWN0b3J5UmVhZGVyU3luYy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4OTNDNDdGMjEyNDhC
RDM5MDAyQjNEODYgLyogRGlyZWN0b3J5UmVhZGVyU3luYy5jcHAgKi87IH07Ci0JCTg5M0M0ODAz
MTI0OEJEM0EwMDJCM0Q4NiAvKiBEaXJlY3RvcnlSZWFkZXJTeW5jLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4OTNDNDdGMzEyNDhCRDM5MDAyQjNEODYg
LyogRGlyZWN0b3J5UmVhZGVyU3luYy5oICovOyB9OwotCQk4OTNDNDgwNTEyNDhCRDNBMDAyQjNE
ODYgLyogRE9NRmlsZVN5c3RlbUJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDg5M0M0N0Y1MTI0OEJEMzkwMDJCM0Q4NiAvKiBET01GaWxlU3lzdGVt
QmFzZS5oICovOyB9OwotCQk4OTNDNDgwNzEyNDhCRDNBMDAyQjNEODYgLyogRE9NRmlsZVN5c3Rl
bVN5bmMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg5
M0M0N0Y3MTI0OEJEMzkwMDJCM0Q4NiAvKiBET01GaWxlU3lzdGVtU3luYy5oICovOyB9OwotCQk4
OTNDNDgwOTEyNDhCRDNBMDAyQjNEODYgLyogRW50cnlBcnJheVN5bmMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg5M0M0N0Y5MTI0OEJEMzkwMDJCM0Q4
NiAvKiBFbnRyeUFycmF5U3luYy5oICovOyB9OwotCQk4OTNDNDgwQjEyNDhCRDNBMDAyQjNEODYg
LyogRW50cnlCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4OTNDNDdGQjEyNDhCRDM5MDAyQjNEODYgLyogRW50cnlCYXNlLmggKi87IH07Ci0JCTg5
M0M0ODBEMTI0OEJEM0EwMDJCM0Q4NiAvKiBFbnRyeVN5bmMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg5M0M0N0ZEMTI0OEJEMzkwMDJCM0Q4NiAvKiBF
bnRyeVN5bmMuaCAqLzsgfTsKLQkJODkzQzQ4MEYxMjQ4QkQzQTAwMkIzRDg2IC8qIEZpbGVFbnRy
eVN5bmMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg5
M0M0N0ZGMTI0OEJEMzkwMDJCM0Q4NiAvKiBGaWxlRW50cnlTeW5jLmggKi87IH07Ci0JCTg5M0M0
ODMzMTI0OTU0NzIwMDJCM0Q4NiAvKiBKU0RpcmVjdG9yeUVudHJ5U3luYy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODkzQzQ4MjcxMjQ5NTQ3MjAwMkIz
RDg2IC8qIEpTRGlyZWN0b3J5RW50cnlTeW5jLmggKi87IH07Ci0JCTg5M0M0ODM0MTI0OTU0NzIw
MDJCM0Q4NiAvKiBKU0RpcmVjdG9yeVJlYWRlclN5bmMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODkzQzQ4MjgxMjQ5NTQ3MjAwMkIzRDg2IC8qIEpT
RGlyZWN0b3J5UmVhZGVyU3luYy5jcHAgKi87IH07Ci0JCTg5M0M0ODM1MTI0OTU0NzIwMDJCM0Q4
NiAvKiBKU0RpcmVjdG9yeVJlYWRlclN5bmMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDg5M0M0ODI5MTI0OTU0NzIwMDJCM0Q4NiAvKiBKU0RpcmVjdG9y
eVJlYWRlclN5bmMuaCAqLzsgfTsKLQkJODkzQzQ4MzcxMjQ5NTQ3MjAwMkIzRDg2IC8qIEpTRE9N
RmlsZVN5c3RlbVN5bmMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDg5M0M0ODJCMTI0OTU0NzIwMDJCM0Q4NiAvKiBKU0RPTUZpbGVTeXN0ZW1TeW5jLmgg
Ki87IH07Ci0JCTg5M0M0ODM5MTI0OTU0NzIwMDJCM0Q4NiAvKiBKU0VudHJ5QXJyYXlTeW5jLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4OTNDNDgyRDEy
NDk1NDcyMDAyQjNEODYgLyogSlNFbnRyeUFycmF5U3luYy5oICovOyB9OwotCQk4OTNDNDgzQjEy
NDk1NDcyMDAyQjNEODYgLyogSlNFbnRyeVN5bmMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg5M0M0ODJGMTI0OTU0NzIwMDJCM0Q4NiAvKiBKU0VudHJ5
U3luYy5oICovOyB9OwotCQk4OTNDNDgzRDEyNDk1NDcyMDAyQjNEODYgLyogSlNGaWxlRW50cnlT
eW5jLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4OTND
NDgzMTEyNDk1NDcyMDAyQjNEODYgLyogSlNGaWxlRW50cnlTeW5jLmggKi87IH07Ci0JCTg5ODc4
NTUzMTIyQ0EwNjQwMDNBQUJEQSAvKiBEaXJlY3RvcnlFbnRyeS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODk4Nzg1M0ExMjJDQTA2NDAwM0FBQkRBIC8q
IERpcmVjdG9yeUVudHJ5LmggKi87IH07Ci0JCTg5ODc4NTU1MTIyQ0EwNjQwMDNBQUJEQSAvKiBE
aXJlY3RvcnlSZWFkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDg5ODc4NTNDMTIyQ0EwNjQwMDNBQUJEQSAvKiBEaXJlY3RvcnlSZWFkZXIuaCAqLzsg
fTsKLQkJODk4Nzg1NTcxMjJDQTA2NDAwM0FBQkRBIC8qIERPTUZpbGVQYXRoLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4OTg3ODUzRTEyMkNBMDY0MDAz
QUFCREEgLyogRE9NRmlsZVBhdGguaCAqLzsgfTsKLQkJODk4Nzg1NTkxMjJDQTA2NDAwM0FBQkRB
IC8qIERPTUZpbGVTeXN0ZW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDg5ODc4NTQwMTIyQ0EwNjQwMDNBQUJEQSAvKiBET01GaWxlU3lzdGVtLmggKi87
IH07Ci0JCTg5ODc4NTVBMTIyQ0EwNjQwMDNBQUJEQSAvKiBFbnRyaWVzQ2FsbGJhY2suaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg5ODc4NTQxMTIyQ0Ew
NjQwMDNBQUJEQSAvKiBFbnRyaWVzQ2FsbGJhY2suaCAqLzsgfTsKLQkJODk4Nzg1NUMxMjJDQTA2
NDAwM0FBQkRBIC8qIEVudHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4OTg3ODU0MzEyMkNBMDY0MDAzQUFCREEgLyogRW50cnkuaCAqLzsgfTsKLQkJ
ODk4Nzg1NUUxMjJDQTA2NDAwM0FBQkRBIC8qIEVudHJ5QXJyYXkuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg5ODc4NTQ1MTIyQ0EwNjQwMDNBQUJEQSAv
KiBFbnRyeUFycmF5LmggKi87IH07Ci0JCTg5ODc4NTVGMTIyQ0EwNjQwMDNBQUJEQSAvKiBFbnRy
eUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4OTg3ODU0NjEyMkNBMDY0MDAzQUFCREEgLyogRW50cnlDYWxsYmFjay5oICovOyB9OwotCQk4
OTg3ODU2MDEyMkNBMDY0MDAzQUFCREEgLyogRXJyb3JDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODk4Nzg1NDcxMjJDQTA2NDAwM0FBQkRB
IC8qIEVycm9yQ2FsbGJhY2suaCAqLzsgfTsKLQkJODk4Nzg1NjIxMjJDQTA2NDAwM0FBQkRBIC8q
IEZpbGVFbnRyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODk4Nzg1NDkxMjJDQTA2NDAwM0FBQkRBIC8qIEZpbGVFbnRyeS5oICovOyB9OwotCQk4OTg3
ODU2MzEyMkNBMDY0MDAzQUFCREEgLyogRmlsZVN5c3RlbUNhbGxiYWNrLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4OTg3ODU0QTEyMkNBMDY0MDAzQUFC
REEgLyogRmlsZVN5c3RlbUNhbGxiYWNrLmggKi87IH07Ci0JCTg5ODc4NTY0MTIyQ0EwNjQwMDNB
QUJEQSAvKiBGaWxlU3lzdGVtQ2FsbGJhY2tzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg5ODc4NTRCMTIyQ0EwNjQwMDNBQUJEQSAvKiBGaWxlU3lz
dGVtQ2FsbGJhY2tzLmNwcCAqLzsgfTsKLQkJODk4Nzg1NjUxMjJDQTA2NDAwM0FBQkRBIC8qIEZp
bGVTeXN0ZW1DYWxsYmFja3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDg5ODc4NTRDMTIyQ0EwNjQwMDNBQUJEQSAvKiBGaWxlU3lzdGVtQ2FsbGJhY2tz
LmggKi87IH07Ci0JCTg5ODc4NTY2MTIyQ0EwNjQwMDNBQUJEQSAvKiBGaWxlU3lzdGVtRmxhZ3Mu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg5ODc4NTRE
MTIyQ0EwNjQwMDNBQUJEQSAvKiBGaWxlU3lzdGVtRmxhZ3MuaCAqLzsgfTsKLQkJODk4Nzg1Njgx
MjJDQTA2NDAwM0FBQkRBIC8qIExvY2FsRmlsZVN5c3RlbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODk4Nzg1NEYxMjJDQTA2NDAwM0FBQkRBIC8qIExv
Y2FsRmlsZVN5c3RlbS5oICovOyB9OwotCQk4OTg3ODU2OTEyMkNBMDY0MDAzQUFCREEgLyogTWV0
YWRhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg5
ODc4NTUwMTIyQ0EwNjQwMDNBQUJEQSAvKiBNZXRhZGF0YS5oICovOyB9OwotCQk4OTg3ODU2QTEy
MkNBMDY0MDAzQUFCREEgLyogTWV0YWRhdGFDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODk4Nzg1NTExMjJDQTA2NDAwM0FBQkRBIC8qIE1l
dGFkYXRhQ2FsbGJhY2suaCAqLzsgfTsKLQkJODk4Nzg1OEIxMjJDQTI2QTAwM0FBQkRBIC8qIEpT
RGlyZWN0b3J5RW50cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDg5ODc4NTg3MTIyQ0EyNkEwMDNBQUJEQSAvKiBKU0RpcmVjdG9yeUVudHJ5LmggKi87
IH07Ci0JCTg5ODc4NThEMTIyQ0EyNkEwMDNBQUJEQSAvKiBKU0RpcmVjdG9yeVJlYWRlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODk4Nzg1ODkxMjJD
QTI2QTAwM0FBQkRBIC8qIEpTRGlyZWN0b3J5UmVhZGVyLmggKi87IH07Ci0JCTg5ODc4NUE1MTIy
Q0EyQTcwMDNBQUJEQSAvKiBKU0RPTUZpbGVTeXN0ZW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg5ODc4NThGMTIyQ0EyQTcwMDNBQUJEQSAvKiBKU0RP
TUZpbGVTeXN0ZW0uaCAqLzsgfTsKLQkJODk4Nzg1QTcxMjJDQTJBNzAwM0FBQkRBIC8qIEpTRW50
cmllc0NhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4OTg3ODU5MTEyMkNBMkE3MDAzQUFCREEgLyogSlNFbnRyaWVzQ2FsbGJhY2suaCAqLzsg
fTsKLQkJODk4Nzg1QTkxMjJDQTJBNzAwM0FBQkRBIC8qIEpTRW50cnkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg5ODc4NTkzMTIyQ0EyQTcwMDNBQUJE
QSAvKiBKU0VudHJ5LmggKi87IH07Ci0JCTg5ODc4NUFCMTIyQ0EyQTcwMDNBQUJEQSAvKiBKU0Vu
dHJ5QXJyYXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDg5ODc4NTk1MTIyQ0EyQTcwMDNBQUJEQSAvKiBKU0VudHJ5QXJyYXkuaCAqLzsgfTsKLQkJODk4
Nzg1QUQxMjJDQTJBNzAwM0FBQkRBIC8qIEpTRW50cnlDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODk4Nzg1OTcxMjJDQTJBNzAwM0FBQkRB
IC8qIEpTRW50cnlDYWxsYmFjay5oICovOyB9OwotCQk4OTg3ODVBRjEyMkNBMkE3MDAzQUFCREEg
LyogSlNFcnJvckNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4OTg3ODU5OTEyMkNBMkE3MDAzQUFCREEgLyogSlNFcnJvckNhbGxiYWNrLmgg
Ki87IH07Ci0JCTg5ODc4NUIxMTIyQ0EyQTcwMDNBQUJEQSAvKiBKU0ZpbGVFbnRyeS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODk4Nzg1OUIxMjJDQTJB
NzAwM0FBQkRBIC8qIEpTRmlsZUVudHJ5LmggKi87IH07Ci0JCTg5ODc4NUIyMTIyQ0EyQTcwMDNB
QUJEQSAvKiBKU0ZpbGVTeXN0ZW1DYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4OTg3ODU5QzEyMkNBMkE3MDAzQUFCREEgLyogSlNGaWxl
U3lzdGVtQ2FsbGJhY2suY3BwICovOyB9OwotCQk4OTg3ODVCMzEyMkNBMkE3MDAzQUFCREEgLyog
SlNGaWxlU3lzdGVtQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDg5ODc4NTlEMTIyQ0EyQTcwMDNBQUJEQSAvKiBKU0ZpbGVTeXN0ZW1DYWxs
YmFjay5oICovOyB9OwotCQk4OTg3ODVCNzEyMkNBMkE3MDAzQUFCREEgLyogSlNNZXRhZGF0YS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODk4Nzg1QTEx
MjJDQTJBNzAwM0FBQkRBIC8qIEpTTWV0YWRhdGEuaCAqLzsgfTsKLQkJODk4Nzg1QjkxMjJDQTJB
NzAwM0FBQkRBIC8qIEpTTWV0YWRhdGFDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODk4Nzg1QTMxMjJDQTJBNzAwM0FBQkRBIC8qIEpTTWV0
YWRhdGFDYWxsYmFjay5oICovOyB9OwogCQk4OTg3ODVGMDEyMkUxRTg3MDAzQUFCREEgLyogSlNG
aWxlRXhjZXB0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDg5ODc4NUVFMTIyRTFFODcwMDNBQUJEQSAvKiBKU0ZpbGVFeGNlcHRpb24uY3BwICov
OyB9OwogCQk4OTg3ODVGMTEyMkUxRTg3MDAzQUFCREEgLyogSlNGaWxlRXhjZXB0aW9uLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4OTg3ODVFRjEyMkUx
RTg3MDAzQUFCREEgLyogSlNGaWxlRXhjZXB0aW9uLmggKi87IH07CiAJCTg5ODc4NUY0MTIyRTFF
QUMwMDNBQUJEQSAvKiBKU0ZpbGVSZWFkZXJTeW5jLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg5ODc4NUYyMTIyRTFFQUMwMDNBQUJEQSAvKiBKU0Zp
bGVSZWFkZXJTeW5jLmNwcCAqLzsgfTsKIAkJODk4Nzg1RjUxMjJFMUVBQzAwM0FBQkRBIC8qIEpT
RmlsZVJlYWRlclN5bmMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDg5ODc4NUYzMTIyRTFFQUMwMDNBQUJEQSAvKiBKU0ZpbGVSZWFkZXJTeW5jLmggKi87
IH07CiAJCTg5QjVFQUExMTFFODAwM0QwMEYyMzY3RSAvKiBMaW5lRW5kaW5nLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg5QjVFQTlGMTFFODAwM0Qw
MEYyMzY3RSAvKiBMaW5lRW5kaW5nLmNwcCAqLzsgfTsKIAkJODlCNUVBQTIxMUU4MDAzRDAwRjIz
NjdFIC8qIExpbmVFbmRpbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDg5QjVFQUEwMTFFODAwM0QwMEYyMzY3RSAvKiBMaW5lRW5kaW5nLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJODlDN0MyRTExNTU4
MDRGNDAwN0Q1QTdCIC8qIEZpbGVTeXN0ZW1UeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4OUM3QzJFMDE1NTgwNEY0MDA3RDVBN0IgLyogRmlsZVN5
c3RlbVR5cGUuaCAqLzsgfTsKLQkJODlEMDhEQTAxMjIyODQ1MTAwMTI0MURGIC8qIEFzeW5jRmls
ZVN5c3RlbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODlEMDhEOUQxMjIyODQ1MTAwMTI0MURGIC8qIEFzeW5jRmlsZVN5c3RlbS5oICovOyB9OwotCQk4
OUQwOERBMTEyMjI4NDUxMDAxMjQxREYgLyogQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4OUQwOEQ5RTEyMjI4
NDUxMDAxMjQxREYgLyogQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzLmggKi87IH07CiAJCTg5RjYw
QjExMTU3RjY4NkUwMDc1RTE1NyAvKiBET01XaW5kb3dRdW90YS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODlGNjBCMEExNTdGNjg2RDAwNzVFMTU3IC8q
IERPTVdpbmRvd1F1b3RhLmggKi87IH07CiAJCTg5RjYwQ0RBMTU4MDlENzYwMDc1RTE1NyAvKiBK
U1N0b3JhZ2VJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4OUY2MENEMjE1ODA5RDc2MDA3NUUxNTcgLyogSlNTdG9yYWdlSW5mby5oICovOyB9Owog
CQk4QTEyRTM1RDExRkEzMzI4MDAyNTgzNkEgLyogRG9jdW1lbnRMb2FkVGltaW5nLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4QTEyRTM1QzExRkEzMzI4
MDAyNTgzNkEgLyogRG9jdW1lbnRMb2FkVGltaW5nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTMyMjAsNyArMzE1OSw2IEBACiAJCTk3NjY1MDRG
MTQ0RkJGRkUwMEY2QkI1MSAvKiBFdmVudEZhY3RvcnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTc2NjUwNEUxNDRGQkZGRTAwRjZCQjUxIC8qIEV2
ZW50RmFjdG9yeS5jcHAgKi87IH07CiAJCTk3NjdDRTBCMTQ1QUJDMTMwMDVFNjREQiAvKiBFeGNl
cHRpb25IZWFkZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5NzY3Q0UwOTE0NUFCQzEyMDA1RTY0REIgLyogRXhjZXB0aW9uSGVhZGVycy5oICovOyB9
OwogCQk5NzY3Q0UwQzE0NUFCQzEzMDA1RTY0REIgLyogRXhjZXB0aW9uSW50ZXJmYWNlcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTc2N0NFMEExNDVB
QkMxMzAwNUU2NERCIC8qIEV4Y2VwdGlvbkludGVyZmFjZXMuaCAqLzsgfTsKLQkJOTc2RDZDNzcx
MjJCOEEzRDAwMUZEMUY3IC8qIEFzeW5jRmlsZVdyaXRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTc2RDZDNTgxMjJCOEEzRDAwMUZEMUY3IC8qIEFz
eW5jRmlsZVdyaXRlci5oICovOyB9OwogCQk5NzZENkM3ODEyMkI4QTNEMDAxRkQxRjcgLyogQmxv
Yi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzZE
NkM1OTEyMkI4QTNEMDAxRkQxRjcgLyogQmxvYi5jcHAgKi87IH07CiAJCTk3NkQ2Qzc5MTIyQjhB
M0QwMDFGRDFGNyAvKiBCbG9iLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5NzZENkM1QTEyMkI4QTNEMDAxRkQxRjcgLyogQmxvYi5oICovOyB9OwogCQk5
NzZENkM3QjEyMkI4QTNEMDAxRkQxRjcgLyogV2ViS2l0QmxvYkJ1aWxkZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTc2RDZDNUMxMjJCOEEzRDAw
MUZEMUY3IC8qIFdlYktpdEJsb2JCdWlsZGVyLmNwcCAqLzsgfTsKQEAgLTMyMzcsOCArMzE3NSw2
IEBACiAJCTk3NkQ2QzhEMTIyQjhBM0QwMDFGRDFGNyAvKiBGaWxlVGhyZWFkLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3NkQ2QzZFMTIyQjhBM0Qw
MDFGRDFGNyAvKiBGaWxlVGhyZWFkLmNwcCAqLzsgfTsKIAkJOTc2RDZDOEUxMjJCOEEzRDAwMUZE
MUY3IC8qIEZpbGVUaHJlYWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDk3NkQ2QzZGMTIyQjhBM0QwMDFGRDFGNyAvKiBGaWxlVGhyZWFkLmggKi87IH07
CiAJCTk3NkQ2QzhGMTIyQjhBM0QwMDFGRDFGNyAvKiBGaWxlVGhyZWFkVGFzay5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTc2RDZDNzAxMjJCOEEzRDAw
MUZEMUY3IC8qIEZpbGVUaHJlYWRUYXNrLmggKi87IH07Ci0JCTk3NkQ2QzkxMTIyQjhBM0QwMDFG
RDFGNyAvKiBGaWxlV3JpdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5NzZENkM3MjEyMkI4QTNEMDAxRkQxRjcgLyogRmlsZVdyaXRlci5oICovOyB9
OwotCQk5NzZENkM5MzEyMkI4QTNEMDAxRkQxRjcgLyogQXN5bmNGaWxlV3JpdGVyQ2xpZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzZENkM3NDEy
MkI4QTNEMDAxRkQxRjcgLyogQXN5bmNGaWxlV3JpdGVyQ2xpZW50LmggKi87IH07CiAJCTk3NkQ2
Qzk0MTIyQjhBM0QwMDFGRDFGNyAvKiBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3NkQ2Qzc1MTIyQjhBM0Qw
MDFGRDFGNyAvKiBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNwcCAqLzsgfTsKIAkJOTc2RDZDOTUx
MjJCOEEzRDAwMUZEMUY3IC8qIFRocmVhZGFibGVCbG9iUmVnaXN0cnkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3NkQ2Qzc2MTIyQjhBM0QwMDFGRDFG
NyAvKiBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmggKi87IH07CiAJCTk3NkYzNkVBMTQ2ODYyMjUw
MDVFOTNCNCAvKiBTZWN1cml0eUNvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTc2RjM2RTgxNDY4NjIyNTAwNUU5M0I0IC8qIFNlY3VyaXR5
Q29udGV4dC5jcHAgKi87IH07CkBAIC02OTMzLDkgKzY4NjksNyBAQAogCQkxNDk5M0JFMzBCMkYy
QjFDMDA1MDQ5N0YgLyogRm9jdXNDb250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBGb2N1c0NvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkxNDk5M0JFNDBCMkYyQjFDMDA1MDQ5N0YgLyogRm9jdXNDb250cm9sbGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGb2N1c0NvbnRyb2xsZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTRBOThFMDUxMzYzODZBMjAwQzlGRUQyIC8qIEJs
b2IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IEJsb2IuaWRsOyBwYXRoID0gZmlsZWFwaS9C
bG9iLmlkbDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwotCQkxNEJERjU5NzEzNjUzOTJD
MDAxNDgzOTMgLyogRE9NRmlsZVN5c3RlbS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gRE9N
RmlsZVN5c3RlbS5pZGw7IHBhdGggPSBNb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3RlbS5p
ZGw7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJMTRCREY1OUExMzY1Mzk5MTAwMTQ4
MzkzIC8qIEZpbGVSZWFkZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IEZpbGVSZWFkZXIu
aWRsOyBwYXRoID0gZmlsZWFwaS9GaWxlUmVhZGVyLmlkbDsgc291cmNlVHJlZSA9IFNPVVJDRV9S
T09UOyB9OwotCQkxNEJERjU5QzEzNjUzOUJFMDAxNDgzOTMgLyogRmlsZVdyaXRlci5pZGwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBuYW1lID0gRmlsZVdyaXRlci5pZGw7IHBhdGggPSBNb2R1bGVzL2ZpbGVz
eXN0ZW0vRmlsZVdyaXRlci5pZGw7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJMTRD
OUE1RTkwQjNEMTA1RjAwNUEwMjMyIC8qIFNldHRpbmdzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBTZXR0aW5ncy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTE0Q0Q4RDgxMTA2QjUyOTAwMEE0NkQyMyAvKiBKU1NoYXJlZFdvcmtlckN1c3RvbS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1NoYXJlZFdvcmtlckN1
c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0Q0Y3ODcxMDlGNTg3Q0Ew
MEVCMzY2NSAvKiBDU1NWYWx1ZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IENTU1ZhbHVl
LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY5NzAsOCArNjkwNCw2IEBACiAJ
CTE1Qzc3MDkyMTAwRDNDQTgwMDVCQTI2NyAvKiBKU1ZhbGlkaXR5U3RhdGUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNWYWxpZGl0eVN0YXRlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTVDNzcwQTMxMDBENDFDRDAwNUJBMjY3IC8qIERPTVZh
bGlkaXR5U3RhdGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBE
T01WYWxpZGl0eVN0YXRlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNUM3NzBB
NDEwMEQ0MUNEMDA1QkEyNjcgLyogRE9NVmFsaWRpdHlTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBET01WYWxpZGl0eVN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTE1RDE3RDFFMTQ3MjMxRUIwMDVFQkNBNiAvKiBJbnNwZWN0b3JGaWxlU3lzdGVt
QWdlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9y
RmlsZVN5c3RlbUFnZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMTVEMTdE
MUYxNDcyMzFFQjAwNUVCQ0E2IC8qIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTYzRTg4RjUxMThBMzlEMjAwRUQ5MjMxIC8qIFNp
bXBsZUZvbnREYXRhQ29yZVRleHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gU2ltcGxlRm9udERhdGFDb3JlVGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTE4NUJDRjI2MEYzMjc5Q0UwMDBFQTI2MiAvKiBUaHJlYWRUaW1lcnMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGhyZWFkVGltZXJzLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTg1QkNGMjcwRjMyNzlDRTAwMEVBMjYyIC8qIFRocmVh
ZFRpbWVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUaHJlYWRUaW1lcnMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc5MTksMTQgKzc4NTEsMTAgQEAKIAkJ
NDVCQUMyQUYxMzYwQkJBQjAwNURBMjU4IC8qIEljb25VUkwuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSWNvblVSTC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
NUZFQTVDRDE1NkRERThDMDA2NTQxMDEgLyogRGVjaW1hbC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBEZWNpbWFsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDVGRUE1Q0UxNTZEREU4QzAwNjU0MTAxIC8qIERlY2ltYWwuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRGVjaW1hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQk0NjcwMEVDRjEyN0I5NkNCMDBGNUQ1RDYgLyogRmlsZVdyaXRlclN5bmMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRmlsZVdyaXRlclN5bmMuaDsgcGF0aCA9IE1vZHVs
ZXMvZmlsZXN5c3RlbS9GaWxlV3JpdGVyU3luYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0Njg5RjFBRTEyNjdCQUUxMDBFOEQzODAgLyogRmlsZU1ldGFkYXRhLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZpbGVNZXRhZGF0YS5oOyBwYXRoID0gcGxhdGZvcm0v
RmlsZU1ldGFkYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ2QkM3MjRDMTI5
QjEwNEMwMDcxQzA3RSAvKiBGaWxlV3JpdGVyQmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBGaWxlV3JpdGVyQmFzZS5oOyBwYXRoID0gTW9kdWxlcy9maWxlc3lzdGVtL0Zp
bGVXcml0ZXJCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ2QkM3MjREMTI5
QjEwNEMwMDcxQzA3RSAvKiBGaWxlV3JpdGVyQmFzZUNhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IEZpbGVXcml0ZXJCYXNlQ2FsbGJhY2suaDsgcGF0aCA9IE1vZHVs
ZXMvZmlsZXN5c3RlbS9GaWxlV3JpdGVyQmFzZUNhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQ2QkQxNkUyMEIyNzk0NzMwMDFGMDgzOSAvKiBub25lQ3Vyc29yLnBuZyAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGltYWdlLnBu
ZzsgcGF0aCA9IG5vbmVDdXJzb3IucG5nOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
NkQ0RjI0NjBBRjk3RTgxMDAzNTM4NUEgLyogY2VsbEN1cnNvci5wbmcgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBpbWFnZS5wbmc7IHBhdGggPSBjZWxs
Q3Vyc29yLnBuZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZENEYyNDgwQUY5N0U4
MTAwMzUzODVBIC8qIHZlcnRpY2FsVGV4dEN1cnNvci5wbmcgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBpbWFnZS5wbmc7IHBhdGggPSB2ZXJ0aWNhbFRl
eHRDdXJzb3IucG5nOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0NkRBODQ0QzEyMjRB
MDcxMDA2MEQwMDYgLyogSlNGaWxlV3JpdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTRmlsZVdyaXRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkY5
RDVEQTBCMEQ2MDE3MDAyOEVFMzYgLyogYWxpYXNDdXJzb3IucG5nICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gaW1hZ2UucG5nOyBwYXRoID0gYWxpYXND
dXJzb3IucG5nOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkY5RDVEQzBCMEQ2MDE3
MDAyOEVFMzYgLyogcHJvZ3Jlc3NDdXJzb3IucG5nICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gaW1hZ2UucG5nOyBwYXRoID0gcHJvZ3Jlc3NDdXJzb3Iu
cG5nOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OTA3MDdFNDEyMTlDMDQzMDBEOTBF
NTEgLyogQU5HTEVXZWJLaXRCcmlkZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gQU5HTEVXZWJLaXRCcmlkZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtOTMyNSw3ICs5MjUzLDYgQEAKIAkJODZEOTgyRjYxMjVDMTU0MDAwQUQ5RTNEIC8qIERv
Y3VtZW50VGltaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERvY3VtZW50
VGltaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2RkY4ODVFMTVERTNCODIw
MEJENkIyOCAvKiBSZW5kZXJUZXh0VHJhY2tDdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUmVuZGVyVGV4dFRyYWNrQ3VlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJODZGRjg4NUYxNURFM0I4MjAwQkQ2QjI4IC8qIFJlbmRlclRleHRUcmFja0N1
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJUZXh0VHJhY2tDdWUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODkwQUUwRTAxMjU2QTA3OTAwRjU5NjhD
IC8qIERpcmVjdG9yeVJlYWRlckJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gRGlyZWN0b3J5UmVhZGVyQmFzZS5oOyBwYXRoID0gTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVj
dG9yeVJlYWRlckJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODkyQUJFNUMx
NkVFRTJBQTAwOUYzNTg3IC8qIEpTTmF2aWdhdG9yU3RvcmFnZVF1b3RhLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEpTTmF2aWdhdG9yU3RvcmFnZVF1b3RhLmNwcDsg
cGF0aCA9IC4uLy4uLy4uLy4uLy4uLy4uL1dlYktpdEJ1aWxkL1JlbGVhc2UvRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU05hdmlnYXRvclN0b3JhZ2VRdW90YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTg5MkFCRTVEMTZFRUUyQUEwMDlGMzU4NyAvKiBKU05hdmlnYXRvclN0b3Jh
Z2VRdW90YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBKU05hdmlnYXRvclN0
b3JhZ2VRdW90YS5oOyBwYXRoID0gLi4vLi4vLi4vLi4vLi4vLi4vV2ViS2l0QnVpbGQvUmVsZWFz
ZS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTmF2aWdhdG9yU3RvcmFnZVF1b3RhLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg5MkFCRTVGMTZFRUUyRTUwMDlGMzU4NyAvKiBKU0RP
TVdpbmRvd1F1b3RhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEpTRE9NV2lu
ZG93UXVvdGEuaDsgcGF0aCA9IC4uLy4uLy4uLy4uLy4uLy4uL1dlYktpdEJ1aWxkL1JlbGVhc2Uv
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0RPTVdpbmRvd1F1b3RhLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC05MzM4LDY2ICs5MjY1LDEyIEBACiAJCTg5MkFCRTY2MTZFRUUyRTUw
MDlGMzU4NyAvKiBKU1N0b3JhZ2VVc2FnZUNhbGxiYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IEpTU3RvcmFnZVVzYWdlQ2FsbGJhY2suY3BwOyBwYXRoID0gLi4v
Li4vLi4vLi4vLi4vLi4vV2ViS2l0QnVpbGQvUmVsZWFzZS9EZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTU3RvcmFnZVVzYWdlQ2FsbGJhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk4OTJBQkU2NzE2RUVFMkU1MDA5RjM1ODcgLyogSlNTdG9yYWdlVXNhZ2VDYWxsYmFjay5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBKU1N0b3JhZ2VVc2FnZUNhbGxiYWNrLmg7
IHBhdGggPSAuLi8uLi8uLi8uLi8uLi8uLi9XZWJLaXRCdWlsZC9SZWxlYXNlL0Rlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNTdG9yYWdlVXNhZ2VDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk4OTMxREU1QTE0QzQ0QzQ0MDAwREM5RDIgLyogSlNCbG9iQ3VzdG9tLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQmxvYkN1c3RvbS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg5M0M0N0E1MTIzODkwOEIwMDJCM0Q4NiAvKiBG
aWxlQ2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRmlsZUNhbGxi
YWNrLmg7IHBhdGggPSBNb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZUNhbGxiYWNrLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg5M0M0N0E2MTIzODkwOEIwMDJCM0Q4NiAvKiBGaWxlV3Jp
dGVyQ2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRmlsZVdyaXRl
ckNhbGxiYWNrLmg7IHBhdGggPSBNb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVdyaXRlckNhbGxiYWNr
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg5M0M0N0I2MTIzOEEwOTkwMDJCM0Q4
NiAvKiBKU0ZpbGVDYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U0ZpbGVDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4OTNDNDdCOTEy
MzhBMEE5MDAyQjNEODYgLyogSlNGaWxlV3JpdGVyQ2FsbGJhY2suY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNGaWxlV3JpdGVyQ2FsbGJhY2suY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQk4OTNDNDdCQTEyMzhBMEE5MDAyQjNEODYgLyogSlNGaWxl
V3JpdGVyQ2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNGaWxl
V3JpdGVyQ2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODkzQzQ3RjEx
MjQ4QkQzOTAwMkIzRDg2IC8qIERpcmVjdG9yeUVudHJ5U3luYy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBEaXJlY3RvcnlFbnRyeVN5bmMuaDsgcGF0aCA9IE1vZHVsZXMvZmls
ZXN5c3RlbS9EaXJlY3RvcnlFbnRyeVN5bmMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJODkzQzQ3RjIxMjQ4QkQzOTAwMkIzRDg2IC8qIERpcmVjdG9yeVJlYWRlclN5bmMuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRGlyZWN0b3J5UmVhZGVyU3luYy5j
cHA7IHBhdGggPSBNb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyU3luYy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg5M0M0N0YzMTI0OEJEMzkwMDJCM0Q4NiAvKiBE
aXJlY3RvcnlSZWFkZXJTeW5jLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERp
cmVjdG9yeVJlYWRlclN5bmMuaDsgcGF0aCA9IE1vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlS
ZWFkZXJTeW5jLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg5M0M0N0Y1MTI0OEJE
MzkwMDJCM0Q4NiAvKiBET01GaWxlU3lzdGVtQmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBET01GaWxlU3lzdGVtQmFzZS5oOyBwYXRoID0gTW9kdWxlcy9maWxlc3lzdGVt
L0RPTUZpbGVTeXN0ZW1CYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg5M0M0
N0Y3MTI0OEJEMzkwMDJCM0Q4NiAvKiBET01GaWxlU3lzdGVtU3luYy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBET01GaWxlU3lzdGVtU3luYy5oOyBwYXRoID0gTW9kdWxlcy9m
aWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW1TeW5jLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTg5M0M0N0Y5MTI0OEJEMzkwMDJCM0Q4NiAvKiBFbnRyeUFycmF5U3luYy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBFbnRyeUFycmF5U3luYy5oOyBwYXRoID0gTW9kdWxl
cy9maWxlc3lzdGVtL0VudHJ5QXJyYXlTeW5jLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTg5M0M0N0ZCMTI0OEJEMzkwMDJCM0Q4NiAvKiBFbnRyeUJhc2UuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gRW50cnlCYXNlLmg7IHBhdGggPSBNb2R1bGVzL2ZpbGVzeXN0
ZW0vRW50cnlCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg5M0M0N0ZEMTI0
OEJEMzkwMDJCM0Q4NiAvKiBFbnRyeVN5bmMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gRW50cnlTeW5jLmg7IHBhdGggPSBNb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlTeW5jLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg5M0M0N0ZGMTI0OEJEMzkwMDJCM0Q4NiAv
KiBGaWxlRW50cnlTeW5jLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZpbGVF
bnRyeVN5bmMuaDsgcGF0aCA9IE1vZHVsZXMvZmlsZXN5c3RlbS9GaWxlRW50cnlTeW5jLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg5M0M0ODI3MTI0OTU0NzIwMDJCM0Q4NiAvKiBK
U0RpcmVjdG9yeUVudHJ5U3luYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U0RpcmVjdG9yeUVudHJ5U3luYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4OTND
NDgyODEyNDk1NDcyMDAyQjNEODYgLyogSlNEaXJlY3RvcnlSZWFkZXJTeW5jLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRGlyZWN0b3J5UmVhZGVyU3luYy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg5M0M0ODI5MTI0OTU0NzIwMDJCM0Q4NiAv
KiBKU0RpcmVjdG9yeVJlYWRlclN5bmMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNEaXJlY3RvcnlSZWFkZXJTeW5jLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTg5M0M0ODJCMTI0OTU0NzIwMDJCM0Q4NiAvKiBKU0RPTUZpbGVTeXN0ZW1TeW5jLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NRmlsZVN5c3RlbVN5bmMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODkzQzQ4MkQxMjQ5NTQ3MjAwMkIzRDg2IC8qIEpTRW50
cnlBcnJheVN5bmMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNFbnRyeUFy
cmF5U3luYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4OTNDNDgyRjEyNDk1NDcy
MDAyQjNEODYgLyogSlNFbnRyeVN5bmMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNFbnRyeVN5bmMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODkzQzQ4MzEx
MjQ5NTQ3MjAwMkIzRDg2IC8qIEpTRmlsZUVudHJ5U3luYy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU0ZpbGVFbnRyeVN5bmMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJODk4Nzg1M0ExMjJDQTA2NDAwM0FBQkRBIC8qIERpcmVjdG9yeUVudHJ5LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERpcmVjdG9yeUVudHJ5Lmg7IHBhdGggPSBNb2R1
bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5RW50cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJODk4Nzg1M0MxMjJDQTA2NDAwM0FBQkRBIC8qIERpcmVjdG9yeVJlYWRlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBEaXJlY3RvcnlSZWFkZXIuaDsgcGF0aCA9IE1v
ZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJODk4Nzg1M0UxMjJDQTA2NDAwM0FBQkRBIC8qIERPTUZpbGVQYXRoLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERPTUZpbGVQYXRoLmg7IHBhdGggPSBNb2R1bGVz
L2ZpbGVzeXN0ZW0vRE9NRmlsZVBhdGguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
ODk4Nzg1NDAxMjJDQTA2NDAwM0FBQkRBIC8qIERPTUZpbGVTeXN0ZW0uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gRE9NRmlsZVN5c3RlbS5oOyBwYXRoID0gTW9kdWxlcy9maWxl
c3lzdGVtL0RPTUZpbGVTeXN0ZW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODk4
Nzg1NDExMjJDQTA2NDAwM0FBQkRBIC8qIEVudHJpZXNDYWxsYmFjay5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBFbnRyaWVzQ2FsbGJhY2suaDsgcGF0aCA9IE1vZHVsZXMvZmls
ZXN5c3RlbS9FbnRyaWVzQ2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
ODk4Nzg1NDMxMjJDQTA2NDAwM0FBQkRBIC8qIEVudHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IEVudHJ5Lmg7IHBhdGggPSBNb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnkuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODk4Nzg1NDUxMjJDQTA2NDAwM0FBQkRBIC8q
IEVudHJ5QXJyYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRW50cnlBcnJh
eS5oOyBwYXRoID0gTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5QXJyYXkuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJODk4Nzg1NDYxMjJDQTA2NDAwM0FBQkRBIC8qIEVudHJ5Q2FsbGJh
Y2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRW50cnlDYWxsYmFjay5oOyBw
YXRoID0gTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5Q2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJODk4Nzg1NDcxMjJDQTA2NDAwM0FBQkRBIC8qIEVycm9yQ2FsbGJhY2su
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRXJyb3JDYWxsYmFjay5oOyBwYXRo
ID0gTW9kdWxlcy9maWxlc3lzdGVtL0Vycm9yQ2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJODk4Nzg1NDkxMjJDQTA2NDAwM0FBQkRBIC8qIEZpbGVFbnRyeS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBGaWxlRW50cnkuaDsgcGF0aCA9IE1vZHVsZXMv
ZmlsZXN5c3RlbS9GaWxlRW50cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODk4
Nzg1NEExMjJDQTA2NDAwM0FBQkRBIC8qIEZpbGVTeXN0ZW1DYWxsYmFjay5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBGaWxlU3lzdGVtQ2FsbGJhY2suaDsgcGF0aCA9IE1vZHVs
ZXMvZmlsZXN5c3RlbS9GaWxlU3lzdGVtQ2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJODk4Nzg1NEIxMjJDQTA2NDAwM0FBQkRBIC8qIEZpbGVTeXN0ZW1DYWxsYmFja3Mu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRmlsZVN5c3RlbUNhbGxi
YWNrcy5jcHA7IHBhdGggPSBNb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVN5c3RlbUNhbGxiYWNrcy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg5ODc4NTRDMTIyQ0EwNjQwMDNBQUJE
QSAvKiBGaWxlU3lzdGVtQ2FsbGJhY2tzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IEZpbGVTeXN0ZW1DYWxsYmFja3MuaDsgcGF0aCA9IE1vZHVsZXMvZmlsZXN5c3RlbS9GaWxl
U3lzdGVtQ2FsbGJhY2tzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg5ODc4NTRE
MTIyQ0EwNjQwMDNBQUJEQSAvKiBGaWxlU3lzdGVtRmxhZ3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gRmlsZVN5c3RlbUZsYWdzLmg7IHBhdGggPSBNb2R1bGVzL2ZpbGVzeXN0
ZW0vRmlsZVN5c3RlbUZsYWdzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg5ODc4
NTRGMTIyQ0EwNjQwMDNBQUJEQSAvKiBMb2NhbEZpbGVTeXN0ZW0uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gTG9jYWxGaWxlU3lzdGVtLmg7IHBhdGggPSBNb2R1bGVzL2ZpbGVz
eXN0ZW0vTG9jYWxGaWxlU3lzdGVtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg5
ODc4NTUwMTIyQ0EwNjQwMDNBQUJEQSAvKiBNZXRhZGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBNZXRhZGF0YS5oOyBwYXRoID0gTW9kdWxlcy9maWxlc3lzdGVtL01ldGFk
YXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg5ODc4NTUxMTIyQ0EwNjQwMDNB
QUJEQSAvKiBNZXRhZGF0YUNhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IE1ldGFkYXRhQ2FsbGJhY2suaDsgcGF0aCA9IE1vZHVsZXMvZmlsZXN5c3RlbS9NZXRhZGF0
YUNhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg5ODc4NTg3MTIyQ0Ey
NkEwMDNBQUJEQSAvKiBKU0RpcmVjdG9yeUVudHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTRGlyZWN0b3J5RW50cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJODk4Nzg1ODkxMjJDQTI2QTAwM0FBQkRBIC8qIEpTRGlyZWN0b3J5UmVhZGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRGlyZWN0b3J5UmVhZGVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg5ODc4NThGMTIyQ0EyQTcwMDNBQUJEQSAvKiBKU0RPTUZp
bGVTeXN0ZW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNET01GaWxlU3lz
dGVtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg5ODc4NTkxMTIyQ0EyQTcwMDNB
QUJEQSAvKiBKU0VudHJpZXNDYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU0VudHJpZXNDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4
OTg3ODU5MzEyMkNBMkE3MDAzQUFCREEgLyogSlNFbnRyeS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU0VudHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg5
ODc4NTk1MTIyQ0EyQTcwMDNBQUJEQSAvKiBKU0VudHJ5QXJyYXkuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSlNFbnRyeUFycmF5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTg5ODc4NTk3MTIyQ0EyQTcwMDNBQUJEQSAvKiBKU0VudHJ5Q2FsbGJhY2suaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNFbnRyeUNhbGxiYWNrLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg5ODc4NTk5MTIyQ0EyQTcwMDNBQUJEQSAvKiBKU0Vycm9y
Q2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNFcnJvckNhbGxi
YWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg5ODc4NTlCMTIyQ0EyQTcwMDNB
QUJEQSAvKiBKU0ZpbGVFbnRyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U0ZpbGVFbnRyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4OTg3ODU5QzEyMkNB
MkE3MDAzQUFCREEgLyogSlNGaWxlU3lzdGVtQ2FsbGJhY2suY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNGaWxlU3lzdGVtQ2FsbGJhY2suY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk4OTg3ODU5RDEyMkNBMkE3MDAzQUFCREEgLyogSlNGaWxlU3lz
dGVtQ2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNGaWxlU3lz
dGVtQ2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODk4Nzg1QTExMjJD
QTJBNzAwM0FBQkRBIC8qIEpTTWV0YWRhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNNZXRhZGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4OTg3ODVB
MzEyMkNBMkE3MDAzQUFCREEgLyogSlNNZXRhZGF0YUNhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTTWV0YWRhdGFDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk4OTg3ODVFRTEyMkUxRTg3MDAzQUFCREEgLyogSlNGaWxlRXhjZXB0aW9u
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRmlsZUV4Y2VwdGlv
bi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg5ODc4NUVGMTIyRTFFODcwMDNB
QUJEQSAvKiBKU0ZpbGVFeGNlcHRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNGaWxlRXhjZXB0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg5ODc4
NUYyMTIyRTFFQUMwMDNBQUJEQSAvKiBKU0ZpbGVSZWFkZXJTeW5jLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRmlsZVJlYWRlclN5bmMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk4OTg3ODVGMzEyMkUxRUFDMDAzQUFCREEgLyogSlNGaWxlUmVh
ZGVyU3luYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0ZpbGVSZWFkZXJT
eW5jLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg5QjVFQTlGMTFFODAwM0QwMEYy
MzY3RSAvKiBMaW5lRW5kaW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IExpbmVFbmRpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4OUI1RUFB
MDExRTgwMDNEMDBGMjM2N0UgLyogTGluZUVuZGluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBMaW5lRW5kaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg5
QzdDMkUwMTU1ODA0RjQwMDdENUE3QiAvKiBGaWxlU3lzdGVtVHlwZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBGaWxlU3lzdGVtVHlwZS5oOyBwYXRoID0gTW9kdWxlcy9maWxl
c3lzdGVtL0ZpbGVTeXN0ZW1UeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg5
RDA4RDlEMTIyMjg0NTEwMDEyNDFERiAvKiBBc3luY0ZpbGVTeXN0ZW0uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQXN5bmNGaWxlU3lzdGVtLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTg5RDA4RDlFMTIyMjg0NTEwMDEyNDFERiAvKiBBc3luY0ZpbGVTeXN0ZW1D
YWxsYmFja3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXN5bmNGaWxlU3lz
dGVtQ2FsbGJhY2tzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg5RjYwQjBBMTU3
RjY4NkQwMDc1RTE1NyAvKiBET01XaW5kb3dRdW90YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBET01XaW5kb3dRdW90YS5oOyBwYXRoID0gTW9kdWxlcy9xdW90YS9ET01XaW5k
b3dRdW90YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4OUY2MENEMjE1ODA5RDc2
MDA3NUUxNTcgLyogSlNTdG9yYWdlSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU1N0b3JhZ2VJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg5RkQ1
OEQ4MTZFRURCRDQwMEUxODNGMCAvKiBOYXZpZ2F0b3JTdG9yYWdlUXVvdGEuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTmF2aWdhdG9yU3RvcmFnZVF1b3RhLmg7IHBhdGggPSBN
b2R1bGVzL3F1b3RhL05hdmlnYXRvclN0b3JhZ2VRdW90YS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtOTg0Nyw3ICs5NzIwLDYgQEAKIAkJOTc2NjUwNEUxNDRGQkZGRTAwRjZCQjUx
IC8qIEV2ZW50RmFjdG9yeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBFdmVudEZhY3RvcnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NzY3Q0Uw
OTE0NUFCQzEyMDA1RTY0REIgLyogRXhjZXB0aW9uSGVhZGVycy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBFeGNlcHRpb25IZWFkZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTk3NjdDRTBBMTQ1QUJDMTMwMDVFNjREQiAvKiBFeGNlcHRpb25JbnRlcmZhY2Vz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4Y2VwdGlvbkludGVyZmFjZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOTc2RDZDNTgxMjJCOEEzRDAwMUZEMUY3
IC8qIEFzeW5jRmlsZVdyaXRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBB
c3luY0ZpbGVXcml0ZXIuaDsgcGF0aCA9IE1vZHVsZXMvZmlsZXN5c3RlbS9Bc3luY0ZpbGVXcml0
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTc2RDZDNTkxMjJCOEEzRDAwMUZE
MUY3IC8qIEJsb2IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQmxv
Yi5jcHA7IHBhdGggPSBmaWxlYXBpL0Jsb2IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk5NzZENkM1QTEyMkI4QTNEMDAxRkQxRjcgLyogQmxvYi5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBCbG9iLmg7IHBhdGggPSBmaWxlYXBpL0Jsb2IuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTc2RDZDNUMxMjJCOEEzRDAwMUZEMUY3IC8qIFdlYktpdEJs
b2JCdWlsZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYktp
dEJsb2JCdWlsZGVyLmNwcDsgcGF0aCA9IGZpbGVhcGkvV2ViS2l0QmxvYkJ1aWxkZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTg2NCw4ICs5NzM2LDYgQEAKIAkJOTc2RDZD
NkUxMjJCOEEzRDAwMUZEMUY3IC8qIEZpbGVUaHJlYWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gRmlsZVRocmVhZC5jcHA7IHBhdGggPSBmaWxlYXBpL0ZpbGVUaHJl
YWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NzZENkM2RjEyMkI4QTNEMDAx
RkQxRjcgLyogRmlsZVRocmVhZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBG
aWxlVGhyZWFkLmg7IHBhdGggPSBmaWxlYXBpL0ZpbGVUaHJlYWQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJOTc2RDZDNzAxMjJCOEEzRDAwMUZEMUY3IC8qIEZpbGVUaHJlYWRUYXNr
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZpbGVUaHJlYWRUYXNrLmg7IHBh
dGggPSBmaWxlYXBpL0ZpbGVUaHJlYWRUYXNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTk3NkQ2QzcyMTIyQjhBM0QwMDFGRDFGNyAvKiBGaWxlV3JpdGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZpbGVXcml0ZXIuaDsgcGF0aCA9IE1vZHVsZXMvZmlsZXN5
c3RlbS9GaWxlV3JpdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTk3NkQ2Qzc0
MTIyQjhBM0QwMDFGRDFGNyAvKiBBc3luY0ZpbGVXcml0ZXJDbGllbnQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gQXN5bmNGaWxlV3JpdGVyQ2xpZW50Lmg7IHBhdGggPSBNb2R1
bGVzL2ZpbGVzeXN0ZW0vQXN5bmNGaWxlV3JpdGVyQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTk3NkQ2Qzc1MTIyQjhBM0QwMDFGRDFGNyAvKiBUaHJlYWRhYmxlQmxvYlJl
Z2lzdHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFRocmVhZGFi
bGVCbG9iUmVnaXN0cnkuY3BwOyBwYXRoID0gZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTc2RDZDNzYxMjJCOEEzRDAwMUZE
MUY3IC8qIFRocmVhZGFibGVCbG9iUmVnaXN0cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oOyBwYXRoID0gZmlsZWFwaS9UaHJlYWRh
YmxlQmxvYlJlZ2lzdHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3NkYzNkU4
MTQ2ODYyMjUwMDVFOTNCNCAvKiBTZWN1cml0eUNvbnRleHQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU2VjdXJpdHlDb250ZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTEyNTQ2LDMwICsxMjQxNiwxMCBAQAogCQlFMUE4RTU2NDE3NTUyQjJB
MDA3NDg4RTcgLyogQ0ZVUkxFeHRyYXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gQ0ZVUkxFeHRyYXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
MUE4RTU2NTE3NTUyQjJBMDA3NDg4RTcgLyogQ0ZVUkxFeHRyYXMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQ0ZVUkxFeHRyYXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRTFBQjFFQTgxNEU5RTI3RDAwNDQ5RTEzIC8qIEZpbGVMaXN0LmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IG5hbWUgPSBGaWxlTGlzdC5pZGw7IHBhdGggPSBmaWxlYXBpL0ZpbGVMaXN0LmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTFBQjFFQUIxNEU5RTJFRjAwNDQ5RTEzIC8q
IERpcmVjdG9yeUVudHJ5LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBEaXJlY3RvcnlFbnRyeS5pZGw7IHBhdGggPSBNb2R1
bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5RW50cnkuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlFMUFCMUVBQzE0RTlFMkY4MDA0NDlFMTMgLyogRGlyZWN0b3J5RW50cnlTeW5jLmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IG5hbWUgPSBEaXJlY3RvcnlFbnRyeVN5bmMuaWRsOyBwYXRoID0gTW9kdWxlcy9maWxlc3lzdGVt
L0RpcmVjdG9yeUVudHJ5U3luYy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUUx
QUIxRUFEMTRFOUUzMDUwMDQ0OUUxMyAvKiBEaXJlY3RvcnlSZWFkZXIuaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IERpcmVj
dG9yeVJlYWRlci5pZGw7IHBhdGggPSBNb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVy
LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTFBQjFFQUUxNEU5RTMwQjAwNDQ5
RTEzIC8qIERpcmVjdG9yeVJlYWRlclN5bmMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IERpcmVjdG9yeVJlYWRlclN5bmMu
aWRsOyBwYXRoID0gTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlclN5bmMuaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlFMUFCMUVBRjE0RTlFMzE3MDA0NDlFMTMgLyog
RE9NRmlsZVN5c3RlbVN5bmMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IERPTUZpbGVTeXN0ZW1TeW5jLmlkbDsgcGF0aCA9
IE1vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtU3luYy5pZGw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUUxQUIxRUIwMTRFOUUzMjMwMDQ0OUUxMyAvKiBFbnRyaWVzQ2FsbGJh
Y2suaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgbmFtZSA9IEVudHJpZXNDYWxsYmFjay5pZGw7IHBhdGggPSBNb2R1bGVzL2ZpbGVzeXN0
ZW0vRW50cmllc0NhbGxiYWNrLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTFB
QjFFQjExNEU5RTMyQTAwNDQ5RTEzIC8qIEVudHJ5LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBFbnRyeS5pZGw7IHBhdGgg
PSBNb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnkuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlFMUFCMUVCMjE0RTlFMzMyMDA0NDlFMTMgLyogRW50cnlBcnJheS5pZGwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gRW50
cnlBcnJheS5pZGw7IHBhdGggPSBNb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlBcnJheS5pZGw7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUUxQUIxRUIzMTRFOUUzMzkwMDQ0OUUxMyAvKiBF
bnRyeUFycmF5U3luYy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gRW50cnlBcnJheVN5bmMuaWRsOyBwYXRoID0gTW9kdWxl
cy9maWxlc3lzdGVtL0VudHJ5QXJyYXlTeW5jLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJRTFBQjFFQjQxNEU5RTM0NTAwNDQ5RTEzIC8qIEVudHJ5Q2FsbGJhY2suaWRsICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9
IEVudHJ5Q2FsbGJhY2suaWRsOyBwYXRoID0gTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5Q2FsbGJh
Y2suaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlFMUFCMUVCNTE0RTlFMzRCMDA0
NDlFMTMgLyogRW50cnlTeW5jLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBFbnRyeVN5bmMuaWRsOyBwYXRoID0gTW9kdWxl
cy9maWxlc3lzdGVtL0VudHJ5U3luYy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUUxQUIxRUI2MTRFOUUzNTIwMDQ0OUUxMyAvKiBFcnJvckNhbGxiYWNrLmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBFcnJv
ckNhbGxiYWNrLmlkbDsgcGF0aCA9IE1vZHVsZXMvZmlsZXN5c3RlbS9FcnJvckNhbGxiYWNrLmlk
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFBQjFFQjcxNEU5RTM1ODAwNDQ5RTEz
IC8qIEZpbGUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgbmFtZSA9IEZpbGUuaWRsOyBwYXRoID0gZmlsZWFwaS9GaWxlLmlkbDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTFBQjFFQjgxNEU5RTM2MjAwNDQ5RTEzIC8qIEZp
bGVDYWxsYmFjay5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBuYW1lID0gRmlsZUNhbGxiYWNrLmlkbDsgcGF0aCA9IE1vZHVsZXMvZmls
ZXN5c3RlbS9GaWxlQ2FsbGJhY2suaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlF
MUFCMUVCOTE0RTlFMzZEMDA0NDlFMTMgLyogRmlsZUVudHJ5LmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBGaWxlRW50cnku
aWRsOyBwYXRoID0gTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVFbnRyeS5pZGw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUUxQUIxRUJBMTRFOUUzNzIwMDQ0OUUxMyAvKiBGaWxlRW50cnlT
eW5jLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IG5hbWUgPSBGaWxlRW50cnlTeW5jLmlkbDsgcGF0aCA9IE1vZHVsZXMvZmlsZXN5c3Rl
bS9GaWxlRW50cnlTeW5jLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFBQjFF
QkIxNEU5RTM3QTAwNDQ5RTEzIC8qIEZpbGVFcnJvci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gRmlsZUVycm9yLmlkbDsg
cGF0aCA9IGZpbGVhcGkvRmlsZUVycm9yLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRTFBQjFFQkMxNEU5RTM5NzAwNDQ5RTEzIC8qIEZpbGVFeGNlcHRpb24uaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IEZp
bGVFeGNlcHRpb24uaWRsOyBwYXRoID0gZmlsZWFwaS9GaWxlRXhjZXB0aW9uLmlkbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFBQjFFQkQxNEU5RTNBODAwNDQ5RTEzIC8qIEZpbGVS
ZWFkZXJTeW5jLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IG5hbWUgPSBGaWxlUmVhZGVyU3luYy5pZGw7IHBhdGggPSBmaWxlYXBpL0Zp
bGVSZWFkZXJTeW5jLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTFBQjFFQkUx
NEU5RTNCMjAwNDQ5RTEzIC8qIEZpbGVTeXN0ZW1DYWxsYmFjay5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gRmlsZVN5c3Rl
bUNhbGxiYWNrLmlkbDsgcGF0aCA9IE1vZHVsZXMvZmlsZXN5c3RlbS9GaWxlU3lzdGVtQ2FsbGJh
Y2suaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlFMUFCMUVCRjE0RTlFM0JFMDA0
NDlFMTMgLyogRmlsZVdyaXRlckNhbGxiYWNrLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBGaWxlV3JpdGVyQ2FsbGJhY2su
aWRsOyBwYXRoID0gTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVXcml0ZXJDYWxsYmFjay5pZGw7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUUxQUIxRUMwMTRFOUUzQzQwMDQ0OUUxMyAvKiBG
aWxlV3JpdGVyU3luYy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gRmlsZVdyaXRlclN5bmMuaWRsOyBwYXRoID0gTW9kdWxl
cy9maWxlc3lzdGVtL0ZpbGVXcml0ZXJTeW5jLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJRTFBQjFFQzExNEU5RTNDQzAwNDQ5RTEzIC8qIE1ldGFkYXRhLmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBNZXRh
ZGF0YS5pZGw7IHBhdGggPSBNb2R1bGVzL2ZpbGVzeXN0ZW0vTWV0YWRhdGEuaWRsOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlFMUFCMUVDMjE0RTlFM0Q1MDA0NDlFMTMgLyogTWV0YWRh
dGFDYWxsYmFjay5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBuYW1lID0gTWV0YWRhdGFDYWxsYmFjay5pZGw7IHBhdGggPSBNb2R1bGVz
L2ZpbGVzeXN0ZW0vTWV0YWRhdGFDYWxsYmFjay5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUUxQUNBRjRBMEU3OTFBQUYwMDg3RDEyQiAvKiBET01NZXNzYWdlUG9ydC5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTU1lc3NhZ2VQb3J0Lm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUFDQUY0QjBFNzkxQUFGMDA4N0QxMkIgLyog
RE9NTWVzc2FnZVBvcnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NTWVz
c2FnZVBvcnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFBRDEzOUExMjk1RDky
NjAwQUNBOTg5IC8qIEpTSFRNTExpbmtFbGVtZW50Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRNTExpbmtFbGVtZW50Q3VzdG9tLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0MTU2LDggKzE0MDA2LDYgQEAKIAkJCQlGM0Q0QzQ3
NzEyRTA3NjYzMDAzREExNTAgLyogSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oICovLAogCQkJ
CTdBNzRFQ0I4MTAxODM5QTUwMEJGOTM5RSAvKiBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3Bw
ICovLAogCQkJCTdBNzRFQ0I5MTAxODM5QTYwMEJGOTM5RSAvKiBJbnNwZWN0b3JET01TdG9yYWdl
QWdlbnQuaCAqLywKLQkJCQkxNUQxN0QxRTE0NzIzMUVCMDA1RUJDQTYgLyogSW5zcGVjdG9yRmls
ZVN5c3RlbUFnZW50LmNwcCAqLywKLQkJCQkxNUQxN0QxRjE0NzIzMUVCMDA1RUJDQTYgLyogSW5z
cGVjdG9yRmlsZVN5c3RlbUFnZW50LmggKi8sCiAJCQkJMjI3Nzc3NUYxMzQ1REVBOTAwOEVBNDU1
IC8qIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oICovLAogCQkJCUYzNDRDNzEyMTEyNUI4MkMw
MEYyNkVFRSAvKiBJbnNwZWN0b3JGcm9udGVuZENsaWVudC5oICovLAogCQkJCUYzNDRDNzU3MTEy
OTRGRjYwMEYyNkVFRSAvKiBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcCAqLywKQEAg
LTE1OTc1LDI1ICsxNTgyMyw4IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQkyRTJEOTlDQjEwRTJC
QkRBMDA0OTYzMzcgLyogSlNCbG9iLmNwcCAqLywKIAkJCQkyRTJEOTlDQzEwRTJCQkRBMDA0OTYz
MzcgLyogSlNCbG9iLmggKi8sCi0JCQkJODk4Nzg1ODcxMjJDQTI2QTAwM0FBQkRBIC8qIEpTRGly
ZWN0b3J5RW50cnkuaCAqLywKLQkJCQk4OTNDNDgyNzEyNDk1NDcyMDAyQjNEODYgLyogSlNEaXJl
Y3RvcnlFbnRyeVN5bmMuaCAqLywKLQkJCQk4OTg3ODU4OTEyMkNBMjZBMDAzQUFCREEgLyogSlNE
aXJlY3RvcnlSZWFkZXIuaCAqLywKLQkJCQk4OTNDNDgyODEyNDk1NDcyMDAyQjNEODYgLyogSlNE
aXJlY3RvcnlSZWFkZXJTeW5jLmNwcCAqLywKLQkJCQk4OTNDNDgyOTEyNDk1NDcyMDAyQjNEODYg
LyogSlNEaXJlY3RvcnlSZWFkZXJTeW5jLmggKi8sCi0JCQkJODk4Nzg1OEYxMjJDQTJBNzAwM0FB
QkRBIC8qIEpTRE9NRmlsZVN5c3RlbS5oICovLAotCQkJCTg5M0M0ODJCMTI0OTU0NzIwMDJCM0Q4
NiAvKiBKU0RPTUZpbGVTeXN0ZW1TeW5jLmggKi8sCi0JCQkJODk4Nzg1OTExMjJDQTJBNzAwM0FB
QkRBIC8qIEpTRW50cmllc0NhbGxiYWNrLmggKi8sCi0JCQkJODk4Nzg1OTMxMjJDQTJBNzAwM0FB
QkRBIC8qIEpTRW50cnkuaCAqLywKLQkJCQk4OTg3ODU5NTEyMkNBMkE3MDAzQUFCREEgLyogSlNF
bnRyeUFycmF5LmggKi8sCi0JCQkJODkzQzQ4MkQxMjQ5NTQ3MjAwMkIzRDg2IC8qIEpTRW50cnlB
cnJheVN5bmMuaCAqLywKLQkJCQk4OTg3ODU5NzEyMkNBMkE3MDAzQUFCREEgLyogSlNFbnRyeUNh
bGxiYWNrLmggKi8sCi0JCQkJODkzQzQ4MkYxMjQ5NTQ3MjAwMkIzRDg2IC8qIEpTRW50cnlTeW5j
LmggKi8sCi0JCQkJODk4Nzg1OTkxMjJDQTJBNzAwM0FBQkRBIC8qIEpTRXJyb3JDYWxsYmFjay5o
ICovLAogCQkJCUJDMDBGMDEwMEUwQTE4OTUwMEZEMDRFMyAvKiBKU0ZpbGUuY3BwICovLAogCQkJ
CUJDMDBGMDExMEUwQTE4OTUwMEZEMDRFMyAvKiBKU0ZpbGUuaCAqLywKLQkJCQk4OTNDNDdCNjEy
MzhBMDk5MDAyQjNEODYgLyogSlNGaWxlQ2FsbGJhY2suaCAqLywKLQkJCQk4OTg3ODU5QjEyMkNB
MkE3MDAzQUFCREEgLyogSlNGaWxlRW50cnkuaCAqLywKLQkJCQk4OTNDNDgzMTEyNDk1NDcyMDAy
QjNEODYgLyogSlNGaWxlRW50cnlTeW5jLmggKi8sCiAJCQkJMkUzQkMwQzgxMTdEM0UwODAwQjk0
MDlBIC8qIEpTRmlsZUVycm9yLmNwcCAqLywKIAkJCQkyRTNCQzBDOTExN0QzRTA4MDBCOTQwOUEg
LyogSlNGaWxlRXJyb3IuaCAqLywKIAkJCQk4OTg3ODVFRTEyMkUxRTg3MDAzQUFCREEgLyogSlNG
aWxlRXhjZXB0aW9uLmNwcCAqLywKQEAgLTE2MDA0LDEzICsxNTgzNSw2IEBACiAJCQkJMkU5NEY0
M0ExMTkyMDdEQTAwQjdGNzVEIC8qIEpTRmlsZVJlYWRlci5oICovLAogCQkJCTg5ODc4NUYyMTIy
RTFFQUMwMDNBQUJEQSAvKiBKU0ZpbGVSZWFkZXJTeW5jLmNwcCAqLywKIAkJCQk4OTg3ODVGMzEy
MkUxRUFDMDAzQUFCREEgLyogSlNGaWxlUmVhZGVyU3luYy5oICovLAotCQkJCTg5ODc4NTlDMTIy
Q0EyQTcwMDNBQUJEQSAvKiBKU0ZpbGVTeXN0ZW1DYWxsYmFjay5jcHAgKi8sCi0JCQkJODk4Nzg1
OUQxMjJDQTJBNzAwM0FBQkRBIC8qIEpTRmlsZVN5c3RlbUNhbGxiYWNrLmggKi8sCi0JCQkJNDZE
QTg0NEMxMjI0QTA3MTAwNjBEMDA2IC8qIEpTRmlsZVdyaXRlci5oICovLAotCQkJCTg5M0M0N0I5
MTIzOEEwQTkwMDJCM0Q4NiAvKiBKU0ZpbGVXcml0ZXJDYWxsYmFjay5jcHAgKi8sCi0JCQkJODkz
QzQ3QkExMjM4QTBBOTAwMkIzRDg2IC8qIEpTRmlsZVdyaXRlckNhbGxiYWNrLmggKi8sCi0JCQkJ
ODk4Nzg1QTExMjJDQTJBNzAwM0FBQkRBIC8qIEpTTWV0YWRhdGEuaCAqLywKLQkJCQk4OTg3ODVB
MzEyMkNBMkE3MDAzQUFCREEgLyogSlNNZXRhZGF0YUNhbGxiYWNrLmggKi8sCiAJCQkpOwogCQkJ
bmFtZSA9IEZpbGVBUEk7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMTY3OTQsNTMg
KzE2NjE4LDE0IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQlFMUNERTkxRjE1MDE4RUQwMDA4NjJD
QzUgLyogQXN5bmNGaWxlU3RyZWFtLmNwcCAqLywKIAkJCQlFMUNERTkyMTE1MDE5MTY5MDA4NjJD
QzUgLyogQXN5bmNGaWxlU3RyZWFtLmggKi8sCi0JCQkJOTc2RDZDNTgxMjJCOEEzRDAwMUZEMUY3
IC8qIEFzeW5jRmlsZVdyaXRlci5oICovLAotCQkJCTk3NkQ2Qzc0MTIyQjhBM0QwMDFGRDFGNyAv
KiBBc3luY0ZpbGVXcml0ZXJDbGllbnQuaCAqLywKIAkJCQk5NzZENkM1OTEyMkI4QTNEMDAxRkQx
RjcgLyogQmxvYi5jcHAgKi8sCiAJCQkJOTc2RDZDNUExMjJCOEEzRDAwMUZEMUY3IC8qIEJsb2Iu
aCAqLywKIAkJCQkxNEE5OEUwNTEzNjM4NkEyMDBDOUZFRDIgLyogQmxvYi5pZGwgKi8sCiAJCQkJ
OTc2RDZDNUYxMjJCOEEzRDAwMUZEMUY3IC8qIEJsb2JVUkwuY3BwICovLAogCQkJCTk3NkQ2QzYw
MTIyQjhBM0QwMDFGRDFGNyAvKiBCbG9iVVJMLmggKi8sCi0JCQkJODk4Nzg1M0ExMjJDQTA2NDAw
M0FBQkRBIC8qIERpcmVjdG9yeUVudHJ5LmggKi8sCi0JCQkJRTFBQjFFQUIxNEU5RTJFRjAwNDQ5
RTEzIC8qIERpcmVjdG9yeUVudHJ5LmlkbCAqLywKLQkJCQk4OTNDNDdGMTEyNDhCRDM5MDAyQjNE
ODYgLyogRGlyZWN0b3J5RW50cnlTeW5jLmggKi8sCi0JCQkJRTFBQjFFQUMxNEU5RTJGODAwNDQ5
RTEzIC8qIERpcmVjdG9yeUVudHJ5U3luYy5pZGwgKi8sCi0JCQkJODk4Nzg1M0MxMjJDQTA2NDAw
M0FBQkRBIC8qIERpcmVjdG9yeVJlYWRlci5oICovLAotCQkJCUUxQUIxRUFEMTRFOUUzMDUwMDQ0
OUUxMyAvKiBEaXJlY3RvcnlSZWFkZXIuaWRsICovLAotCQkJCTg5MEFFMEUwMTI1NkEwNzkwMEY1
OTY4QyAvKiBEaXJlY3RvcnlSZWFkZXJCYXNlLmggKi8sCi0JCQkJODkzQzQ3RjIxMjQ4QkQzOTAw
MkIzRDg2IC8qIERpcmVjdG9yeVJlYWRlclN5bmMuY3BwICovLAotCQkJCTg5M0M0N0YzMTI0OEJE
MzkwMDJCM0Q4NiAvKiBEaXJlY3RvcnlSZWFkZXJTeW5jLmggKi8sCi0JCQkJRTFBQjFFQUUxNEU5
RTMwQjAwNDQ5RTEzIC8qIERpcmVjdG9yeVJlYWRlclN5bmMuaWRsICovLAotCQkJCTg5ODc4NTNF
MTIyQ0EwNjQwMDNBQUJEQSAvKiBET01GaWxlUGF0aC5oICovLAotCQkJCTg5ODc4NTQwMTIyQ0Ew
NjQwMDNBQUJEQSAvKiBET01GaWxlU3lzdGVtLmggKi8sCi0JCQkJMTRCREY1OTcxMzY1MzkyQzAw
MTQ4MzkzIC8qIERPTUZpbGVTeXN0ZW0uaWRsICovLAotCQkJCTg5M0M0N0Y1MTI0OEJEMzkwMDJC
M0Q4NiAvKiBET01GaWxlU3lzdGVtQmFzZS5oICovLAotCQkJCTg5M0M0N0Y3MTI0OEJEMzkwMDJC
M0Q4NiAvKiBET01GaWxlU3lzdGVtU3luYy5oICovLAotCQkJCUUxQUIxRUFGMTRFOUUzMTcwMDQ0
OUUxMyAvKiBET01GaWxlU3lzdGVtU3luYy5pZGwgKi8sCi0JCQkJODk4Nzg1NDExMjJDQTA2NDAw
M0FBQkRBIC8qIEVudHJpZXNDYWxsYmFjay5oICovLAotCQkJCUUxQUIxRUIwMTRFOUUzMjMwMDQ0
OUUxMyAvKiBFbnRyaWVzQ2FsbGJhY2suaWRsICovLAotCQkJCTg5ODc4NTQzMTIyQ0EwNjQwMDNB
QUJEQSAvKiBFbnRyeS5oICovLAotCQkJCUUxQUIxRUIxMTRFOUUzMkEwMDQ0OUUxMyAvKiBFbnRy
eS5pZGwgKi8sCi0JCQkJODk4Nzg1NDUxMjJDQTA2NDAwM0FBQkRBIC8qIEVudHJ5QXJyYXkuaCAq
LywKLQkJCQlFMUFCMUVCMjE0RTlFMzMyMDA0NDlFMTMgLyogRW50cnlBcnJheS5pZGwgKi8sCi0J
CQkJODkzQzQ3RjkxMjQ4QkQzOTAwMkIzRDg2IC8qIEVudHJ5QXJyYXlTeW5jLmggKi8sCi0JCQkJ
RTFBQjFFQjMxNEU5RTMzOTAwNDQ5RTEzIC8qIEVudHJ5QXJyYXlTeW5jLmlkbCAqLywKLQkJCQk4
OTNDNDdGQjEyNDhCRDM5MDAyQjNEODYgLyogRW50cnlCYXNlLmggKi8sCi0JCQkJODk4Nzg1NDYx
MjJDQTA2NDAwM0FBQkRBIC8qIEVudHJ5Q2FsbGJhY2suaCAqLywKLQkJCQlFMUFCMUVCNDE0RTlF
MzQ1MDA0NDlFMTMgLyogRW50cnlDYWxsYmFjay5pZGwgKi8sCi0JCQkJODkzQzQ3RkQxMjQ4QkQz
OTAwMkIzRDg2IC8qIEVudHJ5U3luYy5oICovLAotCQkJCUUxQUIxRUI1MTRFOUUzNEIwMDQ0OUUx
MyAvKiBFbnRyeVN5bmMuaWRsICovLAotCQkJCTg5ODc4NTQ3MTIyQ0EwNjQwMDNBQUJEQSAvKiBF
cnJvckNhbGxiYWNrLmggKi8sCi0JCQkJRTFBQjFFQjYxNEU5RTM1MjAwNDQ5RTEzIC8qIEVycm9y
Q2FsbGJhY2suaWRsICovLAogCQkJCTk3NkQ2QzYxMTIyQjhBM0QwMDFGRDFGNyAvKiBGaWxlLmNw
cCAqLywKIAkJCQk5NzZENkM2MjEyMkI4QTNEMDAxRkQxRjcgLyogRmlsZS5oICovLAogCQkJCUUx
QUIxRUI3MTRFOUUzNTgwMDQ0OUUxMyAvKiBGaWxlLmlkbCAqLywKLQkJCQk4OTNDNDdBNTEyMzg5
MDhCMDAyQjNEODYgLyogRmlsZUNhbGxiYWNrLmggKi8sCi0JCQkJRTFBQjFFQjgxNEU5RTM2MjAw
NDQ5RTEzIC8qIEZpbGVDYWxsYmFjay5pZGwgKi8sCi0JCQkJODk4Nzg1NDkxMjJDQTA2NDAwM0FB
QkRBIC8qIEZpbGVFbnRyeS5oICovLAotCQkJCUUxQUIxRUI5MTRFOUUzNkQwMDQ0OUUxMyAvKiBG
aWxlRW50cnkuaWRsICovLAotCQkJCTg5M0M0N0ZGMTI0OEJEMzkwMDJCM0Q4NiAvKiBGaWxlRW50
cnlTeW5jLmggKi8sCi0JCQkJRTFBQjFFQkExNEU5RTM3MjAwNDQ5RTEzIC8qIEZpbGVFbnRyeVN5
bmMuaWRsICovLAogCQkJCTk3NkQ2QzY0MTIyQjhBM0QwMDFGRDFGNyAvKiBGaWxlRXJyb3IuaCAq
LywKIAkJCQlFMUFCMUVCQjE0RTlFMzdBMDA0NDlFMTMgLyogRmlsZUVycm9yLmlkbCAqLywKIAkJ
CQk5NzhEMDdCNTE0NUEwRjAzMDA5NjkwOEQgLyogRmlsZUV4Y2VwdGlvbi5jcHAgKi8sCkBAIC0x
Njg1OSwyOCArMTY2NDQsOSBAQAogCQkJCTJFREYzNjlBMTIyQzk0QjQwMDJGN0Q0RSAvKiBGaWxl
UmVhZGVyU3luYy5jcHAgKi8sCiAJCQkJMkVERjM2OUIxMjJDOTRCNDAwMkY3RDRFIC8qIEZpbGVS
ZWFkZXJTeW5jLmggKi8sCiAJCQkJRTFBQjFFQkQxNEU5RTNBODAwNDQ5RTEzIC8qIEZpbGVSZWFk
ZXJTeW5jLmlkbCAqLywKLQkJCQk4OTg3ODU0QTEyMkNBMDY0MDAzQUFCREEgLyogRmlsZVN5c3Rl
bUNhbGxiYWNrLmggKi8sCi0JCQkJRTFBQjFFQkUxNEU5RTNCMjAwNDQ5RTEzIC8qIEZpbGVTeXN0
ZW1DYWxsYmFjay5pZGwgKi8sCi0JCQkJODk4Nzg1NEIxMjJDQTA2NDAwM0FBQkRBIC8qIEZpbGVT
eXN0ZW1DYWxsYmFja3MuY3BwICovLAotCQkJCTg5ODc4NTRDMTIyQ0EwNjQwMDNBQUJEQSAvKiBG
aWxlU3lzdGVtQ2FsbGJhY2tzLmggKi8sCi0JCQkJODk4Nzg1NEQxMjJDQTA2NDAwM0FBQkRBIC8q
IEZpbGVTeXN0ZW1GbGFncy5oICovLAotCQkJCTg5QzdDMkUwMTU1ODA0RjQwMDdENUE3QiAvKiBG
aWxlU3lzdGVtVHlwZS5oICovLAogCQkJCTk3NkQ2QzZFMTIyQjhBM0QwMDFGRDFGNyAvKiBGaWxl
VGhyZWFkLmNwcCAqLywKIAkJCQk5NzZENkM2RjEyMkI4QTNEMDAxRkQxRjcgLyogRmlsZVRocmVh
ZC5oICovLAogCQkJCTk3NkQ2QzcwMTIyQjhBM0QwMDFGRDFGNyAvKiBGaWxlVGhyZWFkVGFzay5o
ICovLAotCQkJCTk3NkQ2QzcyMTIyQjhBM0QwMDFGRDFGNyAvKiBGaWxlV3JpdGVyLmggKi8sCi0J
CQkJMTRCREY1OUMxMzY1MzlCRTAwMTQ4MzkzIC8qIEZpbGVXcml0ZXIuaWRsICovLAotCQkJCTQ2
QkM3MjRDMTI5QjEwNEMwMDcxQzA3RSAvKiBGaWxlV3JpdGVyQmFzZS5oICovLAotCQkJCTQ2QkM3
MjREMTI5QjEwNEMwMDcxQzA3RSAvKiBGaWxlV3JpdGVyQmFzZUNhbGxiYWNrLmggKi8sCi0JCQkJ
ODkzQzQ3QTYxMjM4OTA4QjAwMkIzRDg2IC8qIEZpbGVXcml0ZXJDYWxsYmFjay5oICovLAotCQkJ
CUUxQUIxRUJGMTRFOUUzQkUwMDQ0OUUxMyAvKiBGaWxlV3JpdGVyQ2FsbGJhY2suaWRsICovLAot
CQkJCTQ2NzAwRUNGMTI3Qjk2Q0IwMEY1RDVENiAvKiBGaWxlV3JpdGVyU3luYy5oICovLAotCQkJ
CUUxQUIxRUMwMTRFOUUzQzQwMDQ0OUUxMyAvKiBGaWxlV3JpdGVyU3luYy5pZGwgKi8sCi0JCQkJ
ODk4Nzg1NEYxMjJDQTA2NDAwM0FBQkRBIC8qIExvY2FsRmlsZVN5c3RlbS5oICovLAotCQkJCTg5
ODc4NTUwMTIyQ0EwNjQwMDNBQUJEQSAvKiBNZXRhZGF0YS5oICovLAotCQkJCUUxQUIxRUMxMTRF
OUUzQ0MwMDQ0OUUxMyAvKiBNZXRhZGF0YS5pZGwgKi8sCi0JCQkJODk4Nzg1NTExMjJDQTA2NDAw
M0FBQkRBIC8qIE1ldGFkYXRhQ2FsbGJhY2suaCAqLywKLQkJCQlFMUFCMUVDMjE0RTlFM0Q1MDA0
NDlFMTMgLyogTWV0YWRhdGFDYWxsYmFjay5pZGwgKi8sCiAJCQkJOTc2RDZDNzUxMjJCOEEzRDAw
MUZEMUY3IC8qIFRocmVhZGFibGVCbG9iUmVnaXN0cnkuY3BwICovLAogCQkJCTk3NkQ2Qzc2MTIy
QjhBM0QwMDFGRDFGNyAvKiBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmggKi8sCiAJCQkJOTc2RDZD
NUMxMjJCOEEzRDAwMUZEMUY3IC8qIFdlYktpdEJsb2JCdWlsZGVyLmNwcCAqLywKQEAgLTE5ODE3
LDggKzE5NTgzLDYgQEAKIAkJCQlCMkMzRDlFQzBEMDA2QzFEMDBFRjZGMjYgLyogdGV4dCAqLywK
IAkJCQlCQ0ZCMkY3NDA5N0EyRTFBMDBCQTcwM0QgLyogQXJlbmEuY3BwICovLAogCQkJCUJDRkIy
Rjc1MDk3QTJFMUEwMEJBNzAzRCAvKiBBcmVuYS5oICovLAotCQkJCTg5RDA4RDlEMTIyMjg0NTEw
MDEyNDFERiAvKiBBc3luY0ZpbGVTeXN0ZW0uaCAqLywKLQkJCQk4OUQwOEQ5RTEyMjI4NDUxMDAx
MjQxREYgLyogQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzLmggKi8sCiAJCQkJNDlBRTJEOTQxMzRF
RTVGOTAwNzI5MjBBIC8qIENhbGN1bGF0aW9uVmFsdWUuY3BwICovLAogCQkJCTQ5QUUyRDk1MTM0
RUU1RjkwMDcyOTIwQSAvKiBDYWxjdWxhdGlvblZhbHVlLmggKi8sCiAJCQkJQ0RFQTc2MzMxNDYw
QjQ2MjAwOEIzMUYxIC8qIENsb2NrLmNwcCAqLywKQEAgLTIxNTk3LDExICsyMTM2MSw3IEBACiAJ
CQkJNDlCMzc2MEQxNUM2QzY4NDAwNTkxMzFEIC8qIEFycmF5VmFsdWUuaCBpbiBIZWFkZXJzICov
LAogCQkJCUZENTY4NkNBMTNBQzE4MDIwMEI2OUM2OCAvKiBBc3luY0F1ZGlvRGVjb2Rlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRTFDREU5MjIxNTAxOTE2OTAwODYyQ0M1IC8qIEFzeW5jRmlsZVN0
cmVhbS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJODlEMDhEQTAxMjIyODQ1MTAwMTI0MURGIC8qIEFz
eW5jRmlsZVN5c3RlbS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJODlEMDhEQTExMjIyODQ1MTAwMTI0
MURGIC8qIEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0M1
MzQzRkQxN0I3NEI2MzAwNDIzMkYwIC8qIEpTTWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oIGluIEhl
YWRlcnMgKi8sCi0JCQkJOTc2RDZDNzcxMjJCOEEzRDAwMUZEMUY3IC8qIEFzeW5jRmlsZVdyaXRl
ci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJOTc2RDZDOTMxMjJCOEEzRDAwMUZEMUY3IC8qIEFzeW5j
RmlsZVdyaXRlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzdDNjFGMDExMjA5NUM4NzAw
N0EzQzY3IC8qIEF0b21pY1N0cmluZ0tleWVkTVJVQ2FjaGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE4QzRBODBEMDlENTYzMjcwMDAzQUM4RCAvKiBBdHRyLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
OEM0QTgwQjA5RDU2MzI3MDAwM0FDOEQgLyogQXR0cmlidXRlLmggaW4gSGVhZGVycyAqLywKQEAg
LTIxOTc5LDExICsyMTczOSw2IEBACiAJCQkJQ0VDQURGQzkxNTM3NzhGRjAwRTM3MDY4IC8qIERp
Y3RhdGlvbkNvbW1hbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxNjAyM0YwMTUzMkM0MEMwMEQ1
MEZGNCAvKiBEaWN0aW9uYXJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQlGREFGMTk5OTE1MTNEMTMx
MDA4REIwQzMgLyogRGlyZWN0Q29udm9sdmVyLmggaW4gSGVhZGVycyAqLywKLQkJCQk4OTg3ODU1
MzEyMkNBMDY0MDAzQUFCREEgLyogRGlyZWN0b3J5RW50cnkuaCBpbiBIZWFkZXJzICovLAotCQkJ
CTg5M0M0ODAxMTI0OEJEM0EwMDJCM0Q4NiAvKiBEaXJlY3RvcnlFbnRyeVN5bmMuaCBpbiBIZWFk
ZXJzICovLAotCQkJCTg5ODc4NTU1MTIyQ0EwNjQwMDNBQUJEQSAvKiBEaXJlY3RvcnlSZWFkZXIu
aCBpbiBIZWFkZXJzICovLAotCQkJCTg5MEFFMEUxMTI1NkEwNzkwMEY1OTY4QyAvKiBEaXJlY3Rv
cnlSZWFkZXJCYXNlLmggaW4gSGVhZGVycyAqLywKLQkJCQk4OTNDNDgwMzEyNDhCRDNBMDAyQjNE
ODYgLyogRGlyZWN0b3J5UmVhZGVyU3luYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlBRjJENjkx
NDQzNUQwNTAwMTZBNzg0IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNUQ4QzREQzAxNDI4MjIyQzAwMjZDRTcyIC8qIERpc3BsYXlTbGVlcERpc2FibGVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjA5MTEyQjAyNkY3MDBDMUEzNTkgLyogRGlzdGFuY2Uu
aCBpbiBIZWFkZXJzICovLApAQCAtMjIxMDEsMTAgKzIxODU2LDYgQEAKIAkJCQlCQzAwRjAwNjBF
MEExODU1MDBGRDA0RTMgLyogRE9NRmlsZUludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
QzAwRjAwNzBFMEExODU1MDBGRDA0RTMgLyogRE9NRmlsZUxpc3QuaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDMDBGMDA5MEUwQTE4NTUwMEZEMDRFMyAvKiBET01GaWxlTGlzdEludGVybmFsLmggaW4g
SGVhZGVycyAqLywKLQkJCQk4OTg3ODU1NzEyMkNBMDY0MDAzQUFCREEgLyogRE9NRmlsZVBhdGgu
aCBpbiBIZWFkZXJzICovLAotCQkJCTg5ODc4NTU5MTIyQ0EwNjQwMDNBQUJEQSAvKiBET01GaWxl
U3lzdGVtLmggaW4gSGVhZGVycyAqLywKLQkJCQk4OTNDNDgwNTEyNDhCRDNBMDAyQjNEODYgLyog
RE9NRmlsZVN5c3RlbUJhc2UuaCBpbiBIZWFkZXJzICovLAotCQkJCTg5M0M0ODA3MTI0OEJEM0Ew
MDJCM0Q4NiAvKiBET01GaWxlU3lzdGVtU3luYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkVENjA5
QkQxMTQ1QjA3MTAwQzg2ODRFIC8qIERPTUZvcm1EYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
QzFBMzdCNjA5N0M3MTVGMDAxOUYzRDggLyogRE9NSFRNTC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
ODVERjgxMjcwQUE3Nzg3MjAwNDg2QUQ3IC8qIERPTUhUTUxBbmNob3JFbGVtZW50LmggaW4gSGVh
ZGVycyAqLywKQEAgLTIyMzkzLDE1ICsyMjE0NCw3IEBACiAJCQkJQjI1NTk5QTUwRDAwRDhCQTAw
QkI4MjVDIC8qIEVtcHR5Q2xpZW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThFQTdFQzIwQTE5
NDVEMDAwQThFRjVGIC8qIEVudGl0eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThFQTdFQzAwQTE5
NDVEMDAwQThFRjVGIC8qIEVudGl0eVJlZmVyZW5jZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJODk4
Nzg1NUExMjJDQTA2NDAwM0FBQkRBIC8qIEVudHJpZXNDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJODk4Nzg1NUMxMjJDQTA2NDAwM0FBQkRBIC8qIEVudHJ5LmggaW4gSGVhZGVycyAqLywK
LQkJCQk4OTg3ODU1RTEyMkNBMDY0MDAzQUFCREEgLyogRW50cnlBcnJheS5oIGluIEhlYWRlcnMg
Ki8sCi0JCQkJODkzQzQ4MDkxMjQ4QkQzQTAwMkIzRDg2IC8qIEVudHJ5QXJyYXlTeW5jLmggaW4g
SGVhZGVycyAqLywKLQkJCQk4OTNDNDgwQjEyNDhCRDNBMDAyQjNEODYgLyogRW50cnlCYXNlLmgg
aW4gSGVhZGVycyAqLywKLQkJCQk4OTg3ODU1RjEyMkNBMDY0MDAzQUFCREEgLyogRW50cnlDYWxs
YmFjay5oIGluIEhlYWRlcnMgKi8sCi0JCQkJODkzQzQ4MEQxMjQ4QkQzQTAwMkIzRDg2IC8qIEVu
dHJ5U3luYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwOTMxMkIwMjZGNzAwQzFBMzU5IC8q
IEVxdWFsUG93ZXJQYW5uZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTg5ODc4NTYwMTIyQ0EwNjQw
MDNBQUJEQSAvKiBFcnJvckNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRUNGN0FFMjEw
MTYyQjU4MDA0MjdERTcgLyogRXJyb3JFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODUwMzFC
NDIwQTQ0RUZDNzAwRjk5MkUwIC8qIEV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTM4RDMz
NTEyNDQwNTQ4MDAzMjNEMzMgLyogRXZlbnRDb250ZXh0LmggaW4gSGVhZGVycyAqLywKQEAgLTIy
NDYwLDEwICsyMjIwMyw3IEBACiAJCQkJRkQzMTYwOTcxMkIwMjZGNzAwQzFBMzU5IC8qIEZGVEZy
YW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzZENkM4MTEyMkI4QTNEMDAxRkQxRjcgLyogRmls
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDc2MzA2RTMxN0UyMkE0MzAwNUE3QzRFIC8qIE1lZGlh
U3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENsaWVudC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJODkz
QzQ3QTcxMjM4OTA4QjAwMkIzRDg2IC8qIEZpbGVDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMDY2Qzc3MkIwQUI2MDNCNzAwMjM4Q0M0IC8qIEZpbGVDaG9vc2VyLmggaW4gSGVhZGVycyAq
LywKLQkJCQk4OTg3ODU2MjEyMkNBMDY0MDAzQUFCREEgLyogRmlsZUVudHJ5LmggaW4gSGVhZGVy
cyAqLywKLQkJCQk4OTNDNDgwRjEyNDhCRDNBMDAyQjNEODYgLyogRmlsZUVudHJ5U3luYy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTc2RDZDODMxMjJCOEEzRDAwMUZEMUY3IC8qIEZpbGVFcnJvci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMkVERjM2OUYxMjJDOTRDODAwMkY3RDRFIC8qIEZpbGVFeGNl
cHRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMDk5RDA5MTdCOTY4QTEwMEZGODRCOSAvKiBX
ZWJDb3JlVHlwZWRBcnJheUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMjI0NzgsMTgg
KzIyMjE4LDkgQEAKIAkJCQkyRUYxQkZFQjEyMUM5RjQyMDBDMjc2MjcgLyogRmlsZVN0cmVhbS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMkVGMUJGRjkxMjFDQjBDRTAwQzI3NjI3IC8qIEZpbGVTdHJl
YW1DbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNEIzRjczMEM3MjIwNDcwMDA1MzBERiAv
KiBGaWxlU3lzdGVtLmggaW4gSGVhZGVycyAqLywKLQkJCQk4OTg3ODU2MzEyMkNBMDY0MDAzQUFC
REEgLyogRmlsZVN5c3RlbUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKLQkJCQk4OTg3ODU2NTEy
MkNBMDY0MDAzQUFCREEgLyogRmlsZVN5c3RlbUNhbGxiYWNrcy5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJODk4Nzg1NjYxMjJDQTA2NDAwM0FBQkRBIC8qIEZpbGVTeXN0ZW1GbGFncy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMjZDMTdBM0UxNDkxRDJENDAwRDEyQkEyIC8qIEZpbGVTeXN0ZW1JT1MuaCBp
biBIZWFkZXJzICovLAotCQkJCTg5QzdDMkUxMTU1ODA0RjQwMDdENUE3QiAvKiBGaWxlU3lzdGVt
VHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc2RDZDOEUxMjJCOEEzRDAwMUZEMUY3IC8qIEZp
bGVUaHJlYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3NkQ2QzhGMTIyQjhBM0QwMDFGRDFGNyAv
KiBGaWxlVGhyZWFkVGFzay5oIGluIEhlYWRlcnMgKi8sCi0JCQkJOTc2RDZDOTExMjJCOEEzRDAw
MUZEMUY3IC8qIEZpbGVXcml0ZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTQ2QkM3MjRGMTI5QjEw
NEMwMDcxQzA3RSAvKiBGaWxlV3JpdGVyQmFzZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDZCQzcy
NTAxMjlCMTA0QzAwNzFDMDdFIC8qIEZpbGVXcml0ZXJCYXNlQ2FsbGJhY2suaCBpbiBIZWFkZXJz
ICovLAotCQkJCTg5M0M0N0E4MTIzODkwOEIwMDJCM0Q4NiAvKiBGaWxlV3JpdGVyQ2FsbGJhY2su
aCBpbiBIZWFkZXJzICovLAotCQkJCTQ2NzAwRUQxMTI3Qjk2Q0IwMEY1RDVENiAvKiBGaWxlV3Jp
dGVyU3luYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1RUI2OUYwRTgxREFFQjAwQjI1OTY1IC8q
IEZpbGxMYXllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODQ1RTcyRjgwRkQyNjFFRTAwQTg3RDc5
IC8qIEZpbHRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDhDOTI1MUEwRkNDN0M0QTAwNDgwREVD
IC8qIEZpbHRlckVmZmVjdC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMjg0Miw3ICsyMjU3Myw2IEBA
CiAJCQkJN0EyNDU4N0MxMDIxRUFGNDAwMEEwMEFBIC8qIEluc3BlY3RvckRPTUFnZW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQlGM0Q0QzQ3OTEyRTA3NjYzMDAzREExNTAgLyogSW5zcGVjdG9yRE9N
RGVidWdnZXJBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0E3NEVDQkIxMDE4MzlBNjAwQkY5
MzlFIC8qIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMTVE
MTdEMjIxNDcyMzFFQjAwNUVCQ0E2IC8qIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNTc4REEyMEUxNTIwRUI4QzAwNjE0MUMxIC8qIEluc3BlY3RvckZyb250
ZW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQkyMjc3Nzc2MDEzNDVERUE5MDA4RUE0NTUgLyogSW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsLmggaW4gSGVhZGVycyAqLywKIAkJCQlGMzQ0QzcxNDExMjVC
ODJDMDBGMjZFRUUgLyogSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaCBpbiBIZWFkZXJzICovLApA
QCAtMjI5NDksMTAgKzIyNjc5LDYgQEAKIAkJCQk1OUE4NjAwODExOURBRkExMDBERUYxRUYgLyog
SlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0U0Mzg5QzE0
MEIxQkE4MDA1RTQzN0UgLyogSlNEaWN0aW9uYXJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQlFNEFF
N0MxQTE3RDIzMjM1MDAwOUZCMzEgLyogRWxlbWVudEFuY2VzdG9ySXRlcmF0b3IuaCBpbiBIZWFk
ZXJzICovLAotCQkJCTg5ODc4NThCMTIyQ0EyNkEwMDNBQUJEQSAvKiBKU0RpcmVjdG9yeUVudHJ5
LmggaW4gSGVhZGVycyAqLywKLQkJCQk4OTNDNDgzMzEyNDk1NDcyMDAyQjNEODYgLyogSlNEaXJl
Y3RvcnlFbnRyeVN5bmMuaCBpbiBIZWFkZXJzICovLAotCQkJCTg5ODc4NThEMTIyQ0EyNkEwMDNB
QUJEQSAvKiBKU0RpcmVjdG9yeVJlYWRlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJODkzQzQ4MzUx
MjQ5NTQ3MjAwMkIzRDg2IC8qIEpTRGlyZWN0b3J5UmVhZGVyU3luYy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNjU5RERDODMwOUUxOThCQTAwMUJGM0M2IC8qIEpTRG9jdW1lbnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTFBNDk0RURGMEExMjNGNEMwMEZEQUZDMSAvKiBKU0RvY3VtZW50RnJhZ21lbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTY1REYzMUY2MDlEMUNDNjAwMDBCRTMyNSAvKiBKU0RvY3Vt
ZW50VHlwZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMjk2MCw4ICsyMjY4Niw2IEBACiAJCQkJOTNC
NzBENjQwOUVCMEM3QzAwOUQ4NDY4IC8qIEpTRE9NQmluZGluZy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkM2MEQ3QzEwRDI5QTQ2MzAwQjk5MThGIC8qIEpTRE9NQ29yZUV4Y2VwdGlvbi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDBFQ0FFN0UxNkI4QjY3MjAwQzM2MTAzIC8qIEpTRE9NRXJyb3IuaCBp
biBIZWFkZXJzICovLAotCQkJCTg5ODc4NUE1MTIyQ0EyQTcwMDNBQUJEQSAvKiBKU0RPTUZpbGVT
eXN0ZW0uaCBpbiBIZWFkZXJzICovLAotCQkJCTg5M0M0ODM3MTI0OTU0NzIwMDJCM0Q4NiAvKiBK
U0RPTUZpbGVTeXN0ZW1TeW5jLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRTA4ODhENTExNDg4NDhB
MDBBRjQyNjUgLyogSlNET01Gb3JtRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFDMzZDMDMw
RUIwNzZENjAwNzQxMEJDIC8qIEpTRE9NR2xvYmFsT2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk2NURGMzFGODA5RDFDQzYwMDAwQkUzMjUgLyogSlNET01JbXBsZW1lbnRhdGlvbi5oIGluIEhl
YWRlcnMgKi8sCkBAIC0yMjk4OCwxMyArMjI3MTIsNiBAQAogCQkJCTY1REYzMUZBMDlEMUNDNjAw
MDBCRTMyNSAvKiBKU0VsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1REYzMjMwMDlEMURE
QkMwMDBCRTMyNSAvKiBKU0VudGl0eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNGOUI3NzUwQkE1
RkRERDAwODU0MDY0IC8qIEpTRW50aXR5UmVmZXJlbmNlLmggaW4gSGVhZGVycyAqLywKLQkJCQk4
OTg3ODVBNzEyMkNBMkE3MDAzQUFCREEgLyogSlNFbnRyaWVzQ2FsbGJhY2suaCBpbiBIZWFkZXJz
ICovLAotCQkJCTg5ODc4NUE5MTIyQ0EyQTcwMDNBQUJEQSAvKiBKU0VudHJ5LmggaW4gSGVhZGVy
cyAqLywKLQkJCQk4OTg3ODVBQjEyMkNBMkE3MDAzQUFCREEgLyogSlNFbnRyeUFycmF5LmggaW4g
SGVhZGVycyAqLywKLQkJCQk4OTNDNDgzOTEyNDk1NDcyMDAyQjNEODYgLyogSlNFbnRyeUFycmF5
U3luYy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJODk4Nzg1QUQxMjJDQTJBNzAwM0FBQkRBIC8qIEpT
RW50cnlDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCi0JCQkJODkzQzQ4M0IxMjQ5NTQ3MjAwMkIz
RDg2IC8qIEpTRW50cnlTeW5jLmggaW4gSGVhZGVycyAqLywKLQkJCQk4OTg3ODVBRjEyMkNBMkE3
MDAzQUFCREEgLyogSlNFcnJvckNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRUNGN0FE
RDEwMTYyQjM4MDA0MjdERTcgLyogSlNFcnJvckV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlG
M0Q0NjE0OTExNjFENTMyMDBDQTBEMDkgLyogSlNFcnJvckhhbmRsZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTE0RTgzNzhFMDlGODVENEYwMEI4NUFFNCAvKiBKU0V2ZW50LmggaW4gSGVhZGVycyAq
LywKQEAgLTIzMDA2LDE3ICsyMjcyMywxMSBAQAogCQkJCTZFQkYwRTc3MTJBOTg2ODgwMERCMTcw
QSAvKiBKU0VYVERyYXdCdWZmZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQk3NzI4Njk4NDE0RkQ5
QURBMDBGNDg0REMgLyogSlNFWFRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDMDBGMDE1MEUwQTE4OTUwMEZEMDRFMyAvKiBKU0ZpbGUuaCBpbiBIZWFkZXJz
ICovLAotCQkJCTg5M0M0N0I4MTIzOEEwOTkwMDJCM0Q4NiAvKiBKU0ZpbGVDYWxsYmFjay5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJODk4Nzg1QjExMjJDQTJBNzAwM0FBQkRBIC8qIEpTRmlsZUVudHJ5
LmggaW4gSGVhZGVycyAqLywKLQkJCQk4OTNDNDgzRDEyNDk1NDcyMDAyQjNEODYgLyogSlNGaWxl
RW50cnlTeW5jLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRTNCQzBDQjExN0QzRTA4MDBCOTQwOUEg
LyogSlNGaWxlRXJyb3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTg5ODc4NUYxMTIyRTFFODcwMDNB
QUJEQSAvKiBKU0ZpbGVFeGNlcHRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMDBGMDE3MEUw
QTE4OTUwMEZEMDRFMyAvKiBKU0ZpbGVMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRTk0RjQz
QzExOTIwN0RBMDBCN0Y3NUQgLyogSlNGaWxlUmVhZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4
OTg3ODVGNTEyMkUxRUFDMDAzQUFCREEgLyogSlNGaWxlUmVhZGVyU3luYy5oIGluIEhlYWRlcnMg
Ki8sCi0JCQkJODk4Nzg1QjMxMjJDQTJBNzAwM0FBQkRBIC8qIEpTRmlsZVN5c3RlbUNhbGxiYWNr
LmggaW4gSGVhZGVycyAqLywKLQkJCQk0NkRBODQ0RTEyMjRBMDcxMDA2MEQwMDYgLyogSlNGaWxl
V3JpdGVyLmggaW4gSGVhZGVycyAqLywKLQkJCQk4OTNDNDdCQzEyMzhBMEE5MDAyQjNEODYgLyog
SlNGaWxlV3JpdGVyQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUI2RDlEMjdCMTRFQUMw
ODYwMDkwRDc1RSAvKiBKU0ZvY3VzRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQwOUVCREMw
MTZCN0YzOEUwMENCQTNGQyAvKiBKU0ZvbnRMb2FkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUZE
QTE1RUFDMTJCMDNFRTEwMDNBNTgzQSAvKiBKU0dhaW5Ob2RlLmggaW4gSGVhZGVycyAqLywKQEAg
LTIzMTMzLDggKzIyODQ0LDYgQEAKIAkJCQk3NTc5M0VDOTBEMENFNzJEMDA3RkMwQUMgLyogSlNN
ZXNzYWdlRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxQURFRERBMEU3NkJEOTMwMDRBMUE1
RSAvKiBKU01lc3NhZ2VQb3J0LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUY1ODRDNzEwNDY1MkNC
MDA5Q0FBNjQgLyogSlNNZXNzYWdlUG9ydEN1c3RvbS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJODk4
Nzg1QjcxMjJDQTJBNzAwM0FBQkRBIC8qIEpTTWV0YWRhdGEuaCBpbiBIZWFkZXJzICovLAotCQkJ
CTg5ODc4NUI5MTIyQ0EyQTcwMDNBQUJEQSAvKiBKU01ldGFkYXRhQ2FsbGJhY2suaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE4NjYyOUQxMDlEQTJCNDgwMDk2MzNBNSAvKiBKU01vdXNlRXZlbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCUM2RjQyMEEzMTZCNzE2NEUwMDUyQTlGMiAvKiBKU011dGF0aW9u
Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTY1REYzMUZDMDlEMUNDNjAwMDBCRTMyNSAv
KiBKU011dGF0aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjM0ODcsNyArMjMxOTYsNiBA
QAogCQkJCTA2RTgxRUQ3MEFCNUQ1RTkwMEM4NzgzNyAvKiBMb2NhbEN1cnJlbnRHcmFwaGljc0Nv
bnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCUY1OTczREUwMTVDRkIyMDMwMDI3RjgwNCAvKiBM
b2NhbGVNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCTc2MzNBNzI2MTNEOEIzM0EwMDg1MDFCNiAv
KiBMb2NhbGVUb1NjcmlwdE1hcHBpbmcuaCBpbiBIZWFkZXJzICovLAotCQkJCTg5ODc4NTY4MTIy
Q0EwNjQwMDNBQUJEQSAvKiBMb2NhbEZpbGVTeXN0ZW0uaCBpbiBIZWFkZXJzICovLAogCQkJCTkz
NTIwN0JFMDlCRDQxMEEwMEYyMDM4RCAvKiBMb2NhbGl6ZWRTdHJpbmdzLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQ0UxQzQxQjBEOTgyOTgwMDAzQjAyRjIgLyogTG9jYXRpb24uaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE4MjM5RTAxMDlCM0NGOEEwMEI2MDY0MSAvKiBMb2dnaW5nLmggaW4gSGVhZGVy
cyAqLywKQEAgLTIzNTM4LDggKzIzMjQ2LDYgQEAKIAkJCQkwNzhFMDkzRDE3RDE2RTFDMDA0MjBB
QTEgLyogUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlF
MUFERUNCRjBFNzZBQ0YxMDA0QTFBNUUgLyogTWVzc2FnZVBvcnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTQxQkY3MDBDMEZFODZGNDkwMDVFOERFQyAvKiBNZXNzYWdlUG9ydENoYW5uZWwuaCBpbiBI
ZWFkZXJzICovLAotCQkJCTg5ODc4NTY5MTIyQ0EwNjQwMDNBQUJEQSAvKiBNZXRhZGF0YS5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJODk4Nzg1NkExMjJDQTA2NDAwM0FBQkRBIC8qIE1ldGFkYXRhQ2Fs
bGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUE3OEU1MjcwMTM0NkJEMTcwMEFEOUMzMSAvKiBN
ZXRlclNoYWRvd0VsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3RERDREE1MTM4NDUwMUMw
MDA4Qjc5MyAvKiBNSFRNTEFyY2hpdmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3RERDREE3MTM4
NDUwMUMwMDA4Qjc5MyAvKiBNSFRNTFBhcnNlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTQ1Myw3
ICsyNTE1OSw2IEBACiAJCQkJQ0VDQURGQzgxNTM3NzhGRjAwRTM3MDY4IC8qIERpY3RhdGlvbkNv
bW1hbmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzEyRDY3QjExNTM1NjkxRjAwNTYzRDBEIC8q
IERpY3Rpb25hcnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkRBRjE5OTgxNTEzRDEzMTAwOERC
MEMzIC8qIERpcmVjdENvbnZvbHZlci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk4OTNDNDgwMjEy
NDhCRDNBMDAyQjNEODYgLyogRGlyZWN0b3J5UmVhZGVyU3luYy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk0OUZDN0E1MDE0NDRBRjVGMDBBNUQ4NjQgLyogRGlzcGxheVJlZnJlc2hNb25pdG9yLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTQ5QUYyRDZDMTQ0MzVEMjEwMDE2QTc4NCAvKiBEaXNwbGF5
UmVmcmVzaE1vbml0b3JNYWMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUQ4QzREQkYxNDI4MjIy
QzAwMjZDRTcyIC8qIERpc3BsYXlTbGVlcERpc2FibGVyLmNwcCBpbiBTb3VyY2VzICovLApAQCAt
MjU3NTcsNyArMjU0NjIsNiBAQAogCQkJCTJFREYzNjlDMTIyQzk0QjQwMDJGN0Q0RSAvKiBGaWxl
UmVhZGVyU3luYy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRUYxQkZFQTEyMUM5RjQyMDBDMjc2
MjcgLyogRmlsZVN0cmVhbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDNTdGRURFMTEyMTJFRTlD
MDA5N0JFNjUgLyogRmlsZVN5c3RlbS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk4OTg3ODU2NDEy
MkNBMDY0MDAzQUFCREEgLyogRmlsZVN5c3RlbUNhbGxiYWNrcy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk1MTYwMzA2QzBDQzQzNjIzMDBDOEFDMjUgLyogRmlsZVN5c3RlbUNGLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTI2QzE3QTNGMTQ5MUQyRDQwMEQxMkJBMiAvKiBGaWxlU3lzdGVtSU9TLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJQ0QzQTQ5NTQxN0E5Q0M5MDAwMjc0RTQyIC8qIE1lZGlhU291
cmNlQmFzZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI2MDYyLDcgKzI1NzY2LDYgQEAKIAkJCQk3
QTI0NTg3QjEwMjFFQUY0MDAwQTAwQUEgLyogSW5zcGVjdG9yRE9NQWdlbnQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJRjNENEM0NzgxMkUwNzY2MzAwM0RBMTUwIC8qIEluc3BlY3RvckRPTURlYnVn
Z2VyQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0E3NEVDQkExMDE4MzlBNjAwQkY5MzlF
IC8qIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkxNUQx
N0QyMTE0NzIzMUVCMDA1RUJDQTYgLyogSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTRGNEY1RkZCMTFDQkQyRTEwMEExODZCRiAvKiBJbnNwZWN0b3JGcm9u
dGVuZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGMzQ0Qzc1ODExMjk0RkY2MDBGMjZFRUUgLyog
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QTBF
NzcwRTEwQzAwQTg4MDBBMDI3NkUgLyogSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcCBpbiBTb3Vy
Y2VzICovLApAQCAtMjYxODQsNyArMjU4ODcsNiBAQAogCQkJCTU5QTg2MDA2MTE5REFGN0YwMERF
RjFFRiAvKiBKU0RldmljZU9yaWVudGF0aW9uRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NTkwRTFCNEIxMUU0RUY3MDAwNjlGNzg0IC8qIEpTRGV2aWNlT3JpZW50YXRpb25FdmVudEN1c3Rv
bS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0U0MzhBMjE0MEMwREMwMDA1RTQzN0UgLyogSlNE
aWN0aW9uYXJ5LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTg5M0M0ODM0MTI0OTU0NzIwMDJCM0Q4
NiAvKiBKU0RpcmVjdG9yeVJlYWRlclN5bmMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNjU5RERD
ODIwOUUxOThCQTAwMUJGM0M2IC8qIEpTRG9jdW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NDlDN0JBOEQxMDQyRjVCMTAwMDlENDQ3IC8qIEpTRG9jdW1lbnRDdXN0b20uY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMUE0OTRFREUwQTEyM0Y0QzAwRkRBRkMxIC8qIEpTRG9jdW1lbnRGcmFnbWVu
dC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI2MjQ1LDggKzI1OTQ3LDYgQEAKIAkJCQkyRTk0RjQz
QjExOTIwN0RBMDBCN0Y3NUQgLyogSlNGaWxlUmVhZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTJFNzU4MkVFMTI3NjRGMjYwMDYyNjI4QiAvKiBKU0ZpbGVSZWFkZXJDdXN0b20uY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJODk4Nzg1RjQxMjJFMUVBQzAwM0FBQkRBIC8qIEpTRmlsZVJlYWRlclN5
bmMuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJODk4Nzg1QjIxMjJDQTJBNzAwM0FBQkRBIC8qIEpT
RmlsZVN5c3RlbUNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTg5M0M0N0JCMTIzOEEw
QTkwMDJCM0Q4NiAvKiBKU0ZpbGVXcml0ZXJDYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlCNkQ5RDI3QzE0RUFDMDg2MDA5MEQ3NUUgLyogSlNGb2N1c0V2ZW50LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUZEQTE1RUFCMTJCMDNFRTEwMDNBNTgzQSAvKiBKU0dhaW5Ob2RlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTA3OTY5REIzMTdEMTQxNTEwMDdGRjg0MiAvKiBKU1JUQ0Vycm9yQ2Fs
bGJhY2suY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9n
ZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5jcHAJKHJldmlz
aW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVu
YWJsZWRGZWF0dXJlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDEwICszOCw2IEBACiAjaW5j
bHVkZSAiV2ViU29ja2V0LmgiCiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKLSNp
ZiBFTkFCTEUoRklMRV9TWVNURU0pCi0jaW5jbHVkZSAiQXN5bmNGaWxlU3lzdGVtLmgiCi0jZW5k
aWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpSdW50
aW1lRW5hYmxlZEZlYXR1cmVzKCkKQEAgLTc1LDkgKzcxLDYgQEAgUnVudGltZUVuYWJsZWRGZWF0
dXJlczo6UnVudGltZUVuYWJsZWRGZQogI2lmIEVOQUJMRShHQU1FUEFEKQogICAgICwgbV9pc0dh
bWVwYWRFbmFibGVkKGZhbHNlKQogI2VuZGlmCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotICAg
ICwgbV9pc0ZpbGVTeXN0ZW1FbmFibGVkKGZhbHNlKQotI2VuZGlmCiAjaWYgRU5BQkxFKEpBVkFT
Q1JJUFRfSTE4Tl9BUEkpCiAgICAgLCBtX2lzSmF2YVNjcmlwdEkxOE5BUElFbmFibGVkKGZhbHNl
KQogI2VuZGlmCkBAIC0xNDQsMTMgKzEzNyw2IEBAIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMmIFJ1
bnRpbWVFbmFibGVkRmUKICAgICByZXR1cm4gcnVudGltZUVuYWJsZWRGZWF0dXJlczsKIH0KIAot
I2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLWJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6Zmls
ZVN5c3RlbUVuYWJsZWQoKQotewotICAgIHJldHVybiBtX2lzRmlsZVN5c3RlbUVuYWJsZWQgJiYg
QXN5bmNGaWxlU3lzdGVtOjppc0F2YWlsYWJsZSgpOwotfQotI2VuZGlmCi0KICNpZiBFTkFCTEUo
SkFWQVNDUklQVF9JMThOX0FQSSkKIGJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6amF2YVNj
cmlwdEkxOE5BUElFbmFibGVkKCkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dl
bmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oCShyZXZpc2lvbiAx
NTY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVFbmFibGVk
RmVhdHVyZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTgwLDExICsxODAsNiBAQCBwdWJsaWM6CiAg
ICAgYm9vbCB3ZWJraXRTcGVlY2hHcmFtbWFyTGlzdEVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBt
X2lzU2NyaXB0ZWRTcGVlY2hFbmFibGVkOyB9CiAjZW5kaWYKIAotI2lmIEVOQUJMRShGSUxFX1NZ
U1RFTSkKLSAgICBib29sIGZpbGVTeXN0ZW1FbmFibGVkKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRG
aWxlU3lzdGVtRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBtX2lzRmlsZVN5c3RlbUVuYWJsZWQg
PSBpc0VuYWJsZWQ7IH0KLSNlbmRpZgotCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfSTE4Tl9BUEkp
CiAgICAgYm9vbCBqYXZhU2NyaXB0STE4TkFQSUVuYWJsZWQoKSBjb25zdDsKICAgICB2b2lkIHNl
dEphdmFTY3JpcHRJMThOQVBJRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBtX2lzSmF2YVNjcmlw
dEkxOE5BUElFbmFibGVkID0gaXNFbmFibGVkOyB9CkBAIC0zMTQsOSArMzA5LDYgQEAgcHJpdmF0
ZToKICNpZiBFTkFCTEUoU0NSSVBURURfU1BFRUNIKQogICAgIGJvb2wgbV9pc1NjcmlwdGVkU3Bl
ZWNoRW5hYmxlZDsKICNlbmRpZgotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLSAgICBib29sIG1f
aXNGaWxlU3lzdGVtRW5hYmxlZDsKLSNlbmRpZgogCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfSTE4
Tl9BUEkpCiAgICAgYm9vbCBtX2lzSmF2YVNjcmlwdEkxOE5BUElFbmFibGVkOwpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFbnRyeUN1c3RvbS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFbnRyeUN1c3RvbS5jcHAJKHJldmlzaW9uIDE1
NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRW50cnlDdXN0b20uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDYxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBF
TkFCTEUoRklMRV9TWVNURU0pCi0KLSNpbmNsdWRlICJKU0VudHJ5LmgiCi0KLSNpbmNsdWRlICJF
bnRyeS5oIgotI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgotI2luY2x1ZGUgIkpTRGlyZWN0b3J5
RW50cnkuaCIKLSNpbmNsdWRlICJKU0ZpbGVFbnRyeS5oIgotI2luY2x1ZGUgPHd0Zi9Bc3NlcnRp
b25zLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBKU0M7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
SlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgRW50cnkqIGVudHJ5KQotewotICAgIGlmICghZW50cnkpCi0gICAgICAgIHJldHVybiBq
c051bGwoKTsKLQotICAgIGlmIChlbnRyeS0+aXNGaWxlKCkpCi0gICAgICAgIHJldHVybiB3cmFw
PEpTRmlsZUVudHJ5PihleGVjLCBnbG9iYWxPYmplY3QsIHN0YXRpY19jYXN0PEZpbGVFbnRyeSo+
KGVudHJ5KSk7Ci0KLSAgICBBU1NFUlQoZW50cnktPmlzRGlyZWN0b3J5KCkpOwotICAgIHJldHVy
biB3cmFwPEpTRGlyZWN0b3J5RW50cnk+KGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RhdGljX2Nhc3Q8
RGlyZWN0b3J5RW50cnkqPihlbnRyeSkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0K
LSNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0VudHJ5U3luY0N1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNFbnRyeVN5bmNDdXN0b20uY3BwCShyZXZpc2lvbiAxNTY2OTEpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0VudHJ5U3luY0N1c3RvbS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNjEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0g
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIEVOQUJM
RShGSUxFX1NZU1RFTSkKLQotI2luY2x1ZGUgIkpTRW50cnlTeW5jLmgiCi0KLSNpbmNsdWRlICJF
bnRyeVN5bmMuaCIKLSNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKLSNpbmNsdWRlICJKU0RpcmVj
dG9yeUVudHJ5U3luYy5oIgotI2luY2x1ZGUgIkpTRmlsZUVudHJ5U3luYy5oIgotI2luY2x1ZGUg
PHd0Zi9Bc3NlcnRpb25zLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBKU0M7Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgRW50cnlTeW5jKiBlbnRyeSkKLXsKLSAgICBpZiAoIWVudHJ5KQot
ICAgICAgICByZXR1cm4ganNOdWxsKCk7Ci0KLSAgICBpZiAoZW50cnktPmlzRmlsZSgpKQotICAg
ICAgICByZXR1cm4gd3JhcDxKU0ZpbGVFbnRyeVN5bmM+KGV4ZWMsIGdsb2JhbE9iamVjdCwgc3Rh
dGljX2Nhc3Q8RmlsZUVudHJ5U3luYyo+KGVudHJ5KSk7Ci0KLSAgICBBU1NFUlQoZW50cnktPmlz
RGlyZWN0b3J5KCkpOwotICAgIHJldHVybiB3cmFwPEpTRGlyZWN0b3J5RW50cnlTeW5jPihleGVj
LCBnbG9iYWxPYmplY3QsIHN0YXRpY19jYXN0PERpcmVjdG9yeUVudHJ5U3luYyo+KGVudHJ5KSk7
Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZ
U1RFTSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgkocmV2
aXNpb24gMTU2NjkxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5p
bgkod29ya2luZyBjb3B5KQpAQCAtOSw3ICs5LDYgQEAgRE9NQXBwbGljYXRpb25DYWNoZQogRE9N
V2luZG93CiBFdmVudFNvdXJjZQogRmlsZVJlYWRlciBjb25kaXRpb25hbD1CTE9CCi1GaWxlV3Jp
dGVyIGNvbmRpdGlvbmFsPUZJTEVfU1lTVEVNCiBGb250TG9hZGVyIGNvbmRpdGlvbmFsPUZPTlRf
TE9BRF9FVkVOVFMKIElEQkRhdGFiYXNlIGNvbmRpdGlvbmFsPUlOREVYRURfREFUQUJBU0UKIElE
Qk9wZW5EQlJlcXVlc3QgY29uZGl0aW9uYWw9SU5ERVhFRF9EQVRBQkFTRQpJbmRleDogU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL0Jsb2IuY3BwCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0Jsb2IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTksMTQgKzIxOSw5IEBAIFBhc3NSZWZQ
dHI8QmxvYj4gQmxvYjo6c2xpY2UobG9uZyBsb25nIHMKICAgICBsb25nIGxvbmcgbGVuZ3RoID0g
ZW5kIC0gc3RhcnQ7CiAgICAgYXV0byBibG9iRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8QmxvYkRh
dGE+KCk7CiAgICAgYmxvYkRhdGEtPnNldENvbnRlbnRUeXBlKEJsb2I6Om5vcm1hbGl6ZWRDb250
ZW50VHlwZShjb250ZW50VHlwZSkpOwotICAgIGlmIChpc0ZpbGUoKSkgewotI2lmIEVOQUJMRShG
SUxFX1NZU1RFTSkKLSAgICAgICAgaWYgKCF0b0ZpbGUodGhpcyktPmZpbGVTeXN0ZW1VUkwoKS5p
c0VtcHR5KCkpCi0gICAgICAgICAgICBibG9iRGF0YS0+YXBwZW5kVVJMKHRvRmlsZSh0aGlzKS0+
ZmlsZVN5c3RlbVVSTCgpLCBzdGFydCwgbGVuZ3RoLCBtb2RpZmljYXRpb25UaW1lKTsKLSAgICAg
ICAgZWxzZQotI2VuZGlmCisgICAgaWYgKGlzRmlsZSgpKQogICAgICAgICBibG9iRGF0YS0+YXBw
ZW5kRmlsZSh0b0ZpbGUodGhpcyktPnBhdGgoKSwgc3RhcnQsIGxlbmd0aCwgbW9kaWZpY2F0aW9u
VGltZSk7Ci0gICAgfSBlbHNlCisgICAgZWxzZQogICAgICAgICBibG9iRGF0YS0+YXBwZW5kQmxv
YihtX2ludGVybmFsVVJMLCBzdGFydCwgbGVuZ3RoKTsKIAogICAgIHJldHVybiBCbG9iOjpjcmVh
dGUoc3RkOjptb3ZlKGJsb2JEYXRhKSwgbGVuZ3RoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvRmlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxl
LmNwcAkocmV2aXNpb24gMTU2NjkxKQorKysgU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjksMjQgKzY5LDYgQEAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxCbG9iRGF0YT4gY3JlYXRlQgogICAgIHJldHVybiBjcmVhdGVCbG9iRGF0YUZvckZpbGVXaXRo
VHlwZShwYXRoLCBnZXRDb250ZW50VHlwZUZyb21GaWxlTmFtZShmaWxlU3lzdGVtTmFtZSwgcG9s
aWN5KSk7CiB9CiAKLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi1zdGF0aWMgUGFzc093blB0cjxC
bG9iRGF0YT4gY3JlYXRlQmxvYkRhdGFGb3JGaWxlV2l0aE1ldGFkYXRhKGNvbnN0IFN0cmluZyYg
ZmlsZVN5c3RlbU5hbWUsIGNvbnN0IEZpbGVNZXRhZGF0YSYgbWV0YWRhdGEpCi17Ci0gICAgT3du
UHRyPEJsb2JEYXRhPiBibG9iRGF0YSA9IEJsb2JEYXRhOjpjcmVhdGUoKTsKLSAgICBibG9iRGF0
YS0+c2V0Q29udGVudFR5cGUoZ2V0Q29udGVudFR5cGVGcm9tRmlsZU5hbWUoZmlsZVN5c3RlbU5h
bWUsIEZpbGU6OldlbGxLbm93bkNvbnRlbnRUeXBlcykpOwotICAgIGJsb2JEYXRhLT5hcHBlbmRG
aWxlKG1ldGFkYXRhLnBsYXRmb3JtUGF0aCwgMCwgbWV0YWRhdGEubGVuZ3RoLCBtZXRhZGF0YS5t
b2RpZmljYXRpb25UaW1lKTsKLSAgICByZXR1cm4gYmxvYkRhdGEucmVsZWFzZSgpOwotfQotCi1z
dGF0aWMgUGFzc093blB0cjxCbG9iRGF0YT4gY3JlYXRlQmxvYkRhdGFGb3JGaWxlU3lzdGVtVVJM
KGNvbnN0IFVSTCYgZmlsZVN5c3RlbVVSTCwgY29uc3QgRmlsZU1ldGFkYXRhJiBtZXRhZGF0YSkK
LXsKLSAgICBPd25QdHI8QmxvYkRhdGE+IGJsb2JEYXRhID0gQmxvYkRhdGE6OmNyZWF0ZSgpOwot
ICAgIGJsb2JEYXRhLT5zZXRDb250ZW50VHlwZShnZXRDb250ZW50VHlwZUZyb21GaWxlTmFtZShm
aWxlU3lzdGVtVVJMLnBhdGgoKSwgRmlsZTo6V2VsbEtub3duQ29udGVudFR5cGVzKSk7Ci0gICAg
YmxvYkRhdGEtPmFwcGVuZFVSTChmaWxlU3lzdGVtVVJMLCAwLCBtZXRhZGF0YS5sZW5ndGgsIG1l
dGFkYXRhLm1vZGlmaWNhdGlvblRpbWUpOwotICAgIHJldHVybiBibG9iRGF0YS5yZWxlYXNlKCk7
Ci19Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShESVJFQ1RPUllfVVBMT0FEKQogUGFzc1JlZlB0cjxG
aWxlPiBGaWxlOjpjcmVhdGVXaXRoUmVsYXRpdmVQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCwgY29u
c3QgU3RyaW5nJiByZWxhdGl2ZVBhdGgpCiB7CkBAIC0xMDAsMjAgKzgyLDEyIEBAIEZpbGU6OkZp
bGUoY29uc3QgU3RyaW5nJiBwYXRoLCBDb250ZW50VHkKICAgICA6IEJsb2IoY3JlYXRlQmxvYkRh
dGFGb3JGaWxlKHBhdGgsIHBvbGljeSksIC0xKQogICAgICwgbV9wYXRoKHBhdGgpCiAgICAgLCBt
X25hbWUocGF0aEdldEZpbGVOYW1lKHBhdGgpKQotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLSAg
ICAsIG1fc25hcHNob3RTaXplKC0xKQotICAgICwgbV9zbmFwc2hvdE1vZGlmaWNhdGlvblRpbWUo
aW52YWxpZEZpbGVUaW1lKCkpCi0jZW5kaWYKIHsKIH0KIAogRmlsZTo6RmlsZShjb25zdCBTdHJp
bmcmIHBhdGgsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHR5cGUpCiAgICAgOiBCbG9i
KHVybCwgdHlwZSwgLTEpCiAgICAgLCBtX3BhdGgocGF0aCkKLSNpZiBFTkFCTEUoRklMRV9TWVNU
RU0pCi0gICAgLCBtX3NuYXBzaG90U2l6ZSgtMSkKLSAgICAsIG1fc25hcHNob3RNb2RpZmljYXRp
b25UaW1lKGludmFsaWRGaWxlVGltZSgpKQotI2VuZGlmCiB7CiAgICAgbV9uYW1lID0gcGF0aEdl
dEZpbGVOYW1lKHBhdGgpOwogICAgIC8vIEZJWE1FOiBGaWxlIG9iamVjdCBzZXJpYWxpemF0aW9u
L2Rlc2VyaWFsaXphdGlvbiBkb2VzIG5vdCBpbmNsdWRlCkBAIC0xMjUsMzkgKzk5LDExIEBAIEZp
bGU6OkZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHIKICAgICA6IEJsb2IoY3JlYXRl
QmxvYkRhdGFGb3JGaWxlV2l0aE5hbWUocGF0aCwgbmFtZSwgcG9saWN5KSwgLTEpCiAgICAgLCBt
X3BhdGgocGF0aCkKICAgICAsIG1fbmFtZShuYW1lKQotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkK
LSAgICAsIG1fc25hcHNob3RTaXplKC0xKQotICAgICwgbV9zbmFwc2hvdE1vZGlmaWNhdGlvblRp
bWUoaW52YWxpZEZpbGVUaW1lKCkpCi0jZW5kaWYKLXsKLX0KLQotI2lmIEVOQUJMRShGSUxFX1NZ
U1RFTSkKLUZpbGU6OkZpbGUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBGaWxlTWV0YWRhdGEm
IG1ldGFkYXRhKQotICAgIDogQmxvYihjcmVhdGVCbG9iRGF0YUZvckZpbGVXaXRoTWV0YWRhdGEo
bmFtZSwgbWV0YWRhdGEpLCBtZXRhZGF0YS5sZW5ndGgpCi0gICAgLCBtX3BhdGgobWV0YWRhdGEu
cGxhdGZvcm1QYXRoKQotICAgICwgbV9uYW1lKG5hbWUpCi0gICAgLCBtX3NuYXBzaG90U2l6ZSht
ZXRhZGF0YS5sZW5ndGgpCi0gICAgLCBtX3NuYXBzaG90TW9kaWZpY2F0aW9uVGltZShtZXRhZGF0
YS5tb2RpZmljYXRpb25UaW1lKQogewogfQogCi1GaWxlOjpGaWxlKGNvbnN0IFVSTCYgZmlsZVN5
c3RlbVVSTCwgY29uc3QgRmlsZU1ldGFkYXRhJiBtZXRhZGF0YSkKLSAgICA6IEJsb2IoY3JlYXRl
QmxvYkRhdGFGb3JGaWxlU3lzdGVtVVJMKGZpbGVTeXN0ZW1VUkwsIG1ldGFkYXRhKSwgbWV0YWRh
dGEubGVuZ3RoKQotICAgICwgbV9maWxlU3lzdGVtVVJMKGZpbGVTeXN0ZW1VUkwpCi0gICAgLCBt
X3NuYXBzaG90U2l6ZShtZXRhZGF0YS5sZW5ndGgpCi0gICAgLCBtX3NuYXBzaG90TW9kaWZpY2F0
aW9uVGltZShtZXRhZGF0YS5tb2RpZmljYXRpb25UaW1lKQotewotfQotI2VuZGlmCi0KIGRvdWJs
ZSBGaWxlOjpsYXN0TW9kaWZpZWREYXRlKCkgY29uc3QKIHsKLSNpZiBFTkFCTEUoRklMRV9TWVNU
RU0pCi0gICAgaWYgKGhhc1ZhbGlkU25hcHNob3RNZXRhZGF0YSgpICYmIGlzVmFsaWRGaWxlVGlt
ZShtX3NuYXBzaG90TW9kaWZpY2F0aW9uVGltZSkpCi0gICAgICAgIHJldHVybiBtX3NuYXBzaG90
TW9kaWZpY2F0aW9uVGltZSAqIG1zUGVyU2Vjb25kOwotI2VuZGlmCi0KICAgICB0aW1lX3QgbW9k
aWZpY2F0aW9uVGltZTsKICAgICBpZiAoZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUobV9wYXRoLCBt
b2RpZmljYXRpb25UaW1lKSAmJiBpc1ZhbGlkRmlsZVRpbWUobW9kaWZpY2F0aW9uVGltZSkpCiAg
ICAgICAgIHJldHVybiBtb2RpZmljYXRpb25UaW1lICogbXNQZXJTZWNvbmQ7CkBAIC0xNjcsMTEg
KzExMyw2IEBAIGRvdWJsZSBGaWxlOjpsYXN0TW9kaWZpZWREYXRlKCkgY29uc3QKIAogdW5zaWdu
ZWQgbG9uZyBsb25nIEZpbGU6OnNpemUoKSBjb25zdAogewotI2lmIEVOQUJMRShGSUxFX1NZU1RF
TSkKLSAgICBpZiAoaGFzVmFsaWRTbmFwc2hvdE1ldGFkYXRhKCkpCi0gICAgICAgIHJldHVybiBt
X3NuYXBzaG90U2l6ZTsKLSNlbmRpZgotCiAgICAgLy8gRklYTUU6IEphdmFTY3JpcHQgY2Fubm90
IHJlcHJlc2VudCBzaXplcyBhcyBsYXJnZSBhcyB1bnNpZ25lZCBsb25nIGxvbmcsIHdlIG5lZWQg
dG8KICAgICAvLyBjb21lIHVwIHdpdGggYW4gZXhjZXB0aW9uIHRvIHRocm93IGlmIGZpbGUgc2l6
ZSBpcyBub3QgcmVwcmVzZW50YWJsZS4KICAgICBsb25nIGxvbmcgc2l6ZTsKQEAgLTE4MiwxNCAr
MTIzLDYgQEAgdW5zaWduZWQgbG9uZyBsb25nIEZpbGU6OnNpemUoKSBjb25zdAogCiB2b2lkIEZp
bGU6OmNhcHR1cmVTbmFwc2hvdChsb25nIGxvbmcmIHNuYXBzaG90U2l6ZSwgZG91YmxlJiBzbmFw
c2hvdE1vZGlmaWNhdGlvblRpbWUpIGNvbnN0CiB7Ci0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQot
ICAgIGlmIChoYXNWYWxpZFNuYXBzaG90TWV0YWRhdGEoKSkgewotICAgICAgICBzbmFwc2hvdFNp
emUgPSBtX3NuYXBzaG90U2l6ZTsKLSAgICAgICAgc25hcHNob3RNb2RpZmljYXRpb25UaW1lID0g
bV9zbmFwc2hvdE1vZGlmaWNhdGlvblRpbWU7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5k
aWYKLQogICAgIC8vIE9idGFpbnMgYSBzbmFwc2hvdCBvZiB0aGUgZmlsZSBieSBjYXB0dXJpbmcg
aXRzIGN1cnJlbnQgc2l6ZSBhbmQgbW9kaWZpY2F0aW9uIHRpbWUuIFRoaXMgaXMgdXNlZCB3aGVu
IHdlIHNsaWNlIGEgZmlsZSBmb3IgdGhlIGZpcnN0IHRpbWUuCiAgICAgLy8gSWYgd2UgZmFpbCB0
byByZXRyaWV2ZSB0aGUgc2l6ZSBvciBtb2RpZmljYXRpb24gdGltZSwgcHJvYmFibHkgZHVlIHRv
IHRoYXQgdGhlIGZpbGUgaGFzIGJlZW4gZGVsZXRlZCwgMCBzaXplIGlzIHJldHVybmVkLgogICAg
IEZpbGVNZXRhZGF0YSBtZXRhZGF0YTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmls
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5oCShyZXZpc2lv
biAxNTY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuaAkod29ya2luZyBjb3B5
KQpAQCAtNTksMjMgKzU5LDYgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZpbGU+
IGNyZWF0ZVdpdGhSZWxhdGl2ZVBhdGgoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcm
IHJlbGF0aXZlUGF0aCk7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLSAgICAv
LyBJZiBmaWxlc3lzdGVtIGZpbGVzIGxpdmUgaW4gdGhlIHJlbW90ZSBmaWxlc3lzdGVtLCB0aGUg
cG9ydCBtaWdodCBwYXNzIHRoZSB2YWxpZCBtZXRhZGF0YSAod2hvc2UgbGVuZ3RoIGZpZWxkIGlz
IG5vbi1uZWdhdGl2ZSkgYW5kIGNhY2hlIGluIHRoZSBGaWxlIG9iamVjdC4KLSAgICAvLwotICAg
IC8vIE90aGVyd2lzZSBjYWxsaW5nIHNpemUoKSwgbGFzdE1vZGlmaWVkVGltZSgpIGFuZCBzbGlj
ZSgpIHdpbGwgc3luY2hyb25vdXNseSBxdWVyeSB0aGUgZmlsZSBtZXRhZGF0YS4KLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxGaWxlPiBjcmVhdGVGb3JGaWxlU3lzdGVtRmlsZShjb25zdCBTdHJpbmcm
IG5hbWUsIGNvbnN0IEZpbGVNZXRhZGF0YSYgbWV0YWRhdGEpCi0gICAgewotICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IEZpbGUobmFtZSwgbWV0YWRhdGEpKTsKLSAgICB9Ci0KLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxGaWxlPiBjcmVhdGVGb3JGaWxlU3lzdGVtRmlsZShjb25zdCBVUkwmIHVy
bCwgY29uc3QgRmlsZU1ldGFkYXRhJiBtZXRhZGF0YSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgRmlsZSh1cmwsIG1ldGFkYXRhKSk7Ci0gICAgfQotCi0gICAgVVJMIGZpbGVT
eXN0ZW1VUkwoKSBjb25zdCB7IHJldHVybiBtX2ZpbGVTeXN0ZW1VUkw7IH0KLSNlbmRpZgotCiAg
ICAgLy8gQ3JlYXRlIGEgZmlsZSB3aXRoIGEgbmFtZSBleHBvc2VkIHRvIHRoZSBhdXRob3IgKHZp
YSBGaWxlLm5hbWUgYW5kIGFzc29jaWF0ZWQgRE9NIHByb3BlcnRpZXMpIHRoYXQgZGlmZmVycyBm
cm9tIHRoZSBvbmUgcHJvdmlkZWQgaW4gdGhlIHBhdGguCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8
RmlsZT4gY3JlYXRlV2l0aE5hbWUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIG5h
bWUsIENvbnRlbnRUeXBlTG9va3VwUG9saWN5IHBvbGljeSA9IFdlbGxLbm93bkNvbnRlbnRUeXBl
cykKICAgICB7CkBAIC0xMDgsMjYgKzkxLDkgQEAgcHJpdmF0ZToKICAgICBGaWxlKGNvbnN0IFN0
cmluZyYgcGF0aCwgY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgdHlwZSk7CiAgICAg
RmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbmFtZSwgQ29udGVudFR5cGVM
b29rdXBQb2xpY3kpOwogCi0jIGlmIEVOQUJMRShGSUxFX1NZU1RFTSkKLSAgICBGaWxlKGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgRmlsZU1ldGFkYXRhJik7Ci0gICAgRmlsZShjb25zdCBVUkwm
IGZpbGVTeXN0ZW1VUkwsIGNvbnN0IEZpbGVNZXRhZGF0YSYpOwotCi0gICAgLy8gUmV0dXJucyB0
cnVlIGlmIHRoaXMgaGFzIGEgdmFsaWQgc25hcHNob3QgbWV0YWRhdGEgKGkuZS4gbV9zbmFwc2hv
dFNpemUgPj0gMCkuCi0gICAgYm9vbCBoYXNWYWxpZFNuYXBzaG90TWV0YWRhdGEoKSBjb25zdCB7
IHJldHVybiBtX3NuYXBzaG90U2l6ZSA+PSAwOyB9Ci0jZW5kaWYKLQogICAgIFN0cmluZyBtX3Bh
dGg7CiAgICAgU3RyaW5nIG1fbmFtZTsKIAotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLSAgICBV
UkwgbV9maWxlU3lzdGVtVVJMOwotCi0gICAgLy8gSWYgbV9zbmFwc2hvdFNpemUgaXMgbmVnYXRp
dmUgKGluaXRpYWxpemVkIHRvIC0xIGJ5IGRlZmF1bHQpLCB0aGUgc25hcHNob3QgbWV0YWRhdGEg
aXMgaW52YWxpZCBhbmQgd2UgcmV0cmlldmUgdGhlIGxhdGVzdCBtZXRhZGF0YSBzeW5jaHJvbm91
c2x5IGluIHNpemUoKSwgbGFzdE1vZGlmaWVkVGltZSgpIGFuZCBzbGljZSgpLgotICAgIC8vIE90
aGVyd2lzZSwgdGhlIHNuYXBzaG90IG1ldGFkYXRhIGFyZSB1c2VkIGRpcmVjdGx5IGluIHRob3Nl
IG1ldGhvZHMuCi0gICAgY29uc3QgbG9uZyBsb25nIG1fc25hcHNob3RTaXplOwotICAgIGNvbnN0
IGRvdWJsZSBtX3NuYXBzaG90TW9kaWZpY2F0aW9uVGltZTsKLSNlbmRpZgotCiAjaWYgRU5BQkxF
KERJUkVDVE9SWV9VUExPQUQpCiAgICAgU3RyaW5nIG1fcmVsYXRpdmVQYXRoOwogI2VuZGlmCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVFcnJvci5pZGwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlRXJyb3IuaWRsCShyZXZpc2lvbiAxNTY2OTEpCisr
KyBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVFcnJvci5pZGwJKHdvcmtpbmcgY29weSkKQEAg
LTI5LDcgKzI5LDcgQEAKICAqLwogCiBbCi0gICAgQ29uZGl0aW9uYWw9QkxPQnxGSUxFX1NZU1RF
TSwKKyAgICBDb25kaXRpb25hbD1CTE9CLAogICAgIEpTTm9TdGF0aWNUYWJsZXMsCiAgICAgSW1w
bGVtZW50YXRpb25MYWNrc1ZUYWJsZQogXSBpbnRlcmZhY2UgRmlsZUVycm9yIHsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZUV4Y2VwdGlvbi5pZGwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlRXhjZXB0aW9uLmlkbAkocmV2aXNpb24gMTU2NjkxKQor
KysgU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlRXhjZXB0aW9uLmlkbAkod29ya2luZyBjb3B5
KQpAQCAtMzAsNyArMzAsNyBAQAogCiBbCiAgICAgTm9JbnRlcmZhY2VPYmplY3QsCi0gICAgQ29u
ZGl0aW9uYWw9QkxPQnxGSUxFX1NZU1RFTSwKKyAgICBDb25kaXRpb25hbD1CTE9CLAogICAgIERv
Tm90Q2hlY2tDb25zdGFudHMsCiAgICAgSlNOb1N0YXRpY1RhYmxlcywKICAgICBJbXBsZW1lbnRh
dGlvbkxhY2tzVlRhYmxlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL1dlYktpdEJsb2JC
dWlsZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL1dlYktpdEJs
b2JCdWlsZGVyLmNwcAkocmV2aXNpb24gMTU2NjkxKQorKysgU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9XZWJLaXRCbG9iQnVpbGRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMiwxMSArMTIyLDYg
QEAgdm9pZCBCbG9iQnVpbGRlcjo6YXBwZW5kKEJsb2IqIGJsb2IpCiAgICAgICAgIGZpbGUtPmNh
cHR1cmVTbmFwc2hvdChzbmFwc2hvdFNpemUsIHNuYXBzaG90TW9kaWZpY2F0aW9uVGltZSk7CiAK
ICAgICAgICAgbV9zaXplICs9IHNuYXBzaG90U2l6ZTsKLSNpZiBFTkFCTEUoRklMRV9TWVNURU0p
Ci0gICAgICAgIGlmICghZmlsZS0+ZmlsZVN5c3RlbVVSTCgpLmlzRW1wdHkoKSkKLSAgICAgICAg
ICAgIG1faXRlbXMuYXBwZW5kKEJsb2JEYXRhSXRlbShmaWxlLT5maWxlU3lzdGVtVVJMKCksIDAs
IHNuYXBzaG90U2l6ZSwgc25hcHNob3RNb2RpZmljYXRpb25UaW1lKSk7Ci0gICAgICAgIGVsc2UK
LSNlbmRpZgogICAgICAgICBtX2l0ZW1zLmFwcGVuZChCbG9iRGF0YUl0ZW0oZmlsZS0+cGF0aCgp
LCAwLCBzbmFwc2hvdFNpemUsIHNuYXBzaG90TW9kaWZpY2F0aW9uVGltZSkpOwogICAgIH0gZWxz
ZSB7CiAgICAgICAgIGxvbmcgbG9uZyBibG9iU2l6ZSA9IHN0YXRpY19jYXN0PGxvbmcgbG9uZz4o
YmxvYi0+c2l6ZSgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcAko
cmV2aXNpb24gMTU2NjkxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDQ4LDEwICs0NDgsNiBAQCBib29sIEZpbGVJbnB1dFR5cGU6
OnJlY2VpdmVEcm9wcGVkRmlsZXMoCiAgICAgfQogI2VuZGlmCiAKLSNpZiBFTkFCTEUoRklMRV9T
WVNURU0pCi0gICAgbV9kcm9wcGVkRmlsZVN5c3RlbUlkID0gZHJhZ0RhdGEtPmRyb3BwZWRGaWxl
U3lzdGVtSWQoKTsKLSNlbmRpZgotCiAgICAgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+IGZp
bGVzOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYXRocy5zaXplKCk7ICsraSkKICAg
ICAgICAgZmlsZXMuYXBwZW5kKEZpbGVDaG9vc2VyRmlsZUluZm8ocGF0aHNbaV0pKTsKQEAgLTQ2
NiwxMyArNDYyLDYgQEAgYm9vbCBGaWxlSW5wdXRUeXBlOjpyZWNlaXZlRHJvcHBlZEZpbGVzKAog
ICAgIHJldHVybiB0cnVlOwogfQogCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotU3RyaW5nIEZp
bGVJbnB1dFR5cGU6OmRyb3BwZWRGaWxlU3lzdGVtSWQoKQotewotICAgIHJldHVybiBtX2Ryb3Bw
ZWRGaWxlU3lzdGVtSWQ7Ci19Ci0jZW5kaWYKLQogSWNvbiogRmlsZUlucHV0VHlwZTo6aWNvbigp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIG1faWNvbi5nZXQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2h0bWwvRmlsZUlucHV0VHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwv
RmlsZUlucHV0VHlwZS5oCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L0ZpbGVJbnB1dFR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNjgsOSArNjgsNiBAQCBwcml2YXRl
OgogICAgIHZpcnR1YWwgYm9vbCBnZXRUeXBlU3BlY2lmaWNWYWx1ZShTdHJpbmcmKSBPVkVSUklE
RTsgLy8gQ2hlY2tlZCBmaXJzdCwgYmVmb3JlIGludGVybmFsIHN0b3JhZ2Ugb3IgdGhlIHZhbHVl
IGF0dHJpYnV0ZS4KICAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWUoY29uc3QgU3RyaW5nJiwgYm9v
bCB2YWx1ZUNoYW5nZWQsIFRleHRGaWVsZEV2ZW50QmVoYXZpb3IpIE9WRVJSSURFOwogICAgIHZp
cnR1YWwgYm9vbCByZWNlaXZlRHJvcHBlZEZpbGVzKGNvbnN0IERyYWdEYXRhKikgT1ZFUlJJREU7
Ci0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotICAgIHZpcnR1YWwgU3RyaW5nIGRyb3BwZWRGaWxl
U3lzdGVtSWQoKSBPVkVSUklERTsKLSNlbmRpZgogICAgIHZpcnR1YWwgSWNvbiogaWNvbigpIGNv
bnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBpc0ZpbGVVcGxvYWQoKSBjb25zdCBPVkVS
UklERTsKICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlU2hhZG93U3VidHJlZSgpIE9WRVJSSURFOwpA
QCAtOTcsMTAgKzk0LDYgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxGaWxlTGlzdD4gbV9maWxl
TGlzdDsKICAgICBSZWZQdHI8SWNvbj4gbV9pY29uOwotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVN
KQotICAgIFN0cmluZyBtX2Ryb3BwZWRGaWxlU3lzdGVtSWQ7Ci0jZW5kaWYKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVt
ZW50LmNwcAkocmV2aXNpb24gMTU2NjkxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5w
dXRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM2OSwxMyArMTM2OSw2IEBAIGJvb2wg
SFRNTElucHV0RWxlbWVudDo6cmVjZWl2ZURyb3BwZWRGaWwKICAgICByZXR1cm4gbV9pbnB1dFR5
cGUtPnJlY2VpdmVEcm9wcGVkRmlsZXMoZHJhZ0RhdGEpOwogfQogCi0jaWYgRU5BQkxFKEZJTEVf
U1lTVEVNKQotU3RyaW5nIEhUTUxJbnB1dEVsZW1lbnQ6OmRyb3BwZWRGaWxlU3lzdGVtSWQoKQot
ewotICAgIHJldHVybiBtX2lucHV0VHlwZS0+ZHJvcHBlZEZpbGVTeXN0ZW1JZCgpOwotfQotI2Vu
ZGlmCi0KIEljb24qIEhUTUxJbnB1dEVsZW1lbnQ6Omljb24oKSBjb25zdAogewogICAgIHJldHVy
biBtX2lucHV0VHlwZS0+aWNvbigpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5w
dXRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRF
bGVtZW50LmgJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElu
cHV0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMzAsMTAgKzIzMCw2IEBAIHB1YmxpYzoK
ICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIERyYWdEYXRhIGhhcyBtb3JlIHRoYW4g
b25lIGRyb3BwZWQgZmlsZXMuCiAgICAgYm9vbCByZWNlaXZlRHJvcHBlZEZpbGVzKGNvbnN0IERy
YWdEYXRhKik7CiAKLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0gICAgU3RyaW5nIGRyb3BwZWRG
aWxlU3lzdGVtSWQoKTsKLSNlbmRpZgotCiAgICAgSWNvbiogaWNvbigpIGNvbnN0OwogICAgIC8v
IFRoZXNlIGZ1bmN0aW9ucyBhcmUgdXNlZCBmb3IgcmVuZGVyaW5nIHRoZSBpbnB1dCBhY3RpdmUg
ZHVyaW5nIGEKICAgICAvLyBkcmFnLWFuZC1kcm9wIG9wZXJhdGlvbi4KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9o
dG1sL0lucHV0VHlwZS5jcHAJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSW5wdXRUeXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzEyLDE0ICs3MTIsNiBAQCBib29s
IElucHV0VHlwZTo6cmVjZWl2ZURyb3BwZWRGaWxlcyhjb25zCiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotU3RyaW5nIElucHV0VHlwZTo6ZHJvcHBlZEZp
bGVTeXN0ZW1JZCgpCi17Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFN0
cmluZygpOwotfQotI2VuZGlmCi0KIEljb24qIElucHV0VHlwZTo6aWNvbigpIGNvbnN0CiB7CiAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0
VHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgJKHJl
dmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI0OCw5ICsyNDgsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNl
dEZpbGVzKFBhc3NSZWZQdHI8RmlsZUxpc3Q+KTsKICAgICAvLyBTaG91bGQgcmV0dXJuIHRydWUg
aWYgdGhlIGdpdmVuIERyYWdEYXRhIGhhcyBtb3JlIHRoYW4gb25lIGRyb3BwZWQgZmlsZXMuCiAg
ICAgdmlydHVhbCBib29sIHJlY2VpdmVEcm9wcGVkRmlsZXMoY29uc3QgRHJhZ0RhdGEqKTsKLSNp
ZiBFTkFCTEUoRklMRV9TWVNURU0pCi0gICAgdmlydHVhbCBTdHJpbmcgZHJvcHBlZEZpbGVTeXN0
ZW1JZCgpOwotI2VuZGlmCiAgICAgdmlydHVhbCBJY29uKiBpY29uKCkgY29uc3Q7CiAgICAgLy8g
U2hvdWxkIHJldHVybiB0cnVlIGlmIHRoZSBjb3JyZXNwb25kaW5nIHJlbmRlcmVyIGZvciBhIHR5
cGUgY2FuIGRpc3BsYXkgYSBzdWdnZXN0ZWQgdmFsdWUuCiAgICAgdmlydHVhbCBib29sIGNhblNl
dFN1Z2dlc3RlZFZhbHVlKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29kZUdl
bmVyYXRvckluc3BlY3Rvci5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weQkocmV2aXNpb24gMTU2NjkxKQorKysgU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkJKHdvcmtpbmcgY29w
eSkKQEAgLTQ1LDcgKzQ1LDYgQEAgRE9NQUlOX0RFRklORV9OQU1FX01BUCA9IHsKICAgICAiRGF0
YWJhc2UiOiAiU1FMX0RBVEFCQVNFIiwKICAgICAiRGVidWdnZXIiOiAiSkFWQVNDUklQVF9ERUJV
R0dFUiIsCiAgICAgIkRPTURlYnVnZ2VyIjogIkpBVkFTQ1JJUFRfREVCVUdHRVIiLAotICAgICJG
aWxlU3lzdGVtIjogIkZJTEVfU1lTVEVNIiwKICAgICAiSW5kZXhlZERCIjogIklOREVYRURfREFU
QUJBU0UiLAogICAgICJQcm9maWxlciI6ICJKQVZBU0NSSVBUX0RFQlVHR0VSIiwKICAgICAiV29y
a2VyIjogIldPUktFUlMiLApJbmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMTU2NjkxKQorKysgU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
MSw3ICs1MSw2IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmgiCiAjaW5j
bHVkZSAiSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckRlYnVn
Z2VyQWdlbnQuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuaCIKICNpbmNs
dWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kQ2xp
ZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQuaCIKQEAgLTExMiw5
ICsxMTEsNiBAQCBJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JDb250cm9sbGVyCiAgICAg
bV9hZ2VudHMuYXBwZW5kKEluc3BlY3RvckluZGV4ZWREQkFnZW50OjpjcmVhdGUobV9pbnN0cnVt
ZW50aW5nQWdlbnRzLmdldCgpLCBtX3N0YXRlLmdldCgpLCBtX2luamVjdGVkU2NyaXB0TWFuYWdl
ci5nZXQoKSwgcGFnZUFnZW50KSk7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkK
LSAgICBtX2FnZW50cy5hcHBlbmQoSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OjpjcmVhdGUobV9p
bnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBwYWdlQWdlbnQsIG1fc3RhdGUuZ2V0KCkpKTsKLSNl
bmRpZgogICAgIE93blB0cjxJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ+IGRvbVN0b3JhZ2VBZ2Vu
dFB0cihJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmNyZWF0ZShtX2luc3RydW1lbnRpbmdBZ2Vu
dHMuZ2V0KCksIG1fcGFnZUFnZW50LCBtX3N0YXRlLmdldCgpKSk7CiAgICAgSW5zcGVjdG9yRE9N
U3RvcmFnZUFnZW50KiBkb21TdG9yYWdlQWdlbnQgPSBkb21TdG9yYWdlQWdlbnRQdHIuZ2V0KCk7
CiAgICAgbV9hZ2VudHMuYXBwZW5kKGRvbVN0b3JhZ2VBZ2VudFB0ci5yZWxlYXNlKCkpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0
ZW1BZ2VudC5jcHAJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDc0MiAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBt
ZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxFKElOU1BFQ1RPUikg
JiYgRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jaW5jbHVkZSAiSW5zcGVjdG9yRmlsZVN5c3RlbUFn
ZW50LmgiCi0KLSNpbmNsdWRlICJET01GaWxlU3lzdGVtLmgiCi0jaW5jbHVkZSAiRE9NSW1wbGVt
ZW50YXRpb24uaCIKLSNpbmNsdWRlICJEaXJlY3RvcnlFbnRyeS5oIgotI2luY2x1ZGUgIkRpcmVj
dG9yeVJlYWRlci5oIgotI2luY2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiRW50cmllc0Nh
bGxiYWNrLmgiCi0jaW5jbHVkZSAiRW50cnlBcnJheS5oIgotI2luY2x1ZGUgIkVudHJ5Q2FsbGJh
Y2suaCIKLSNpbmNsdWRlICJFcnJvckNhbGxiYWNrLmgiCi0jaW5jbHVkZSAiRXZlbnQuaCIKLSNp
bmNsdWRlICJGaWxlLmgiCi0jaW5jbHVkZSAiRmlsZUNhbGxiYWNrLmgiCi0jaW5jbHVkZSAiRmls
ZUVudHJ5LmgiCi0jaW5jbHVkZSAiRmlsZUVycm9yLmgiCi0jaW5jbHVkZSAiRmlsZVJlYWRlci5o
IgotI2luY2x1ZGUgIkZpbGVTeXN0ZW1DYWxsYmFjay5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW1D
YWxsYmFja3MuaCIKLSNpbmNsdWRlICJGcmFtZS5oIgotI2luY2x1ZGUgIkluc3BlY3RvclBhZ2VB
Z2VudC5oIgotI2luY2x1ZGUgIkluc3BlY3RvclN0YXRlLmgiCi0jaW5jbHVkZSAiSW5zdHJ1bWVu
dGluZ0FnZW50cy5oIgotI2luY2x1ZGUgIlVSTC5oIgotI2luY2x1ZGUgIkxvY2FsRmlsZVN5c3Rl
bS5oIgotI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKLSNpbmNsdWRlICJNZXRhZGF0YS5o
IgotI2luY2x1ZGUgIk1ldGFkYXRhQ2FsbGJhY2suaCIKLSNpbmNsdWRlICJTY3JpcHRFeGVjdXRp
b25Db250ZXh0LmgiCi0jaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKLSNpbmNsdWRlICJUZXh0
RW5jb2RpbmcuaCIKLSNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCi0jaW5jbHVkZSAi
Vm9pZENhbGxiYWNrLmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+Ci0KLXVzaW5nIFdl
YkNvcmU6OlR5cGVCdWlsZGVyOjpBcnJheTsKLQotdHlwZWRlZiBXZWJDb3JlOjpJbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlcjo6RmlsZVN5c3RlbUNvbW1hbmRIYW5kbGVyOjpSZXF1ZXN0RmlsZVN5
c3RlbVJvb3RDYWxsYmFjayBSZXF1ZXN0RmlsZVN5c3RlbVJvb3RDYWxsYmFjazsKLXR5cGVkZWYg
V2ViQ29yZTo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkZpbGVTeXN0ZW1Db21tYW5kSGFu
ZGxlcjo6UmVxdWVzdERpcmVjdG9yeUNvbnRlbnRDYWxsYmFjayBSZXF1ZXN0RGlyZWN0b3J5Q29u
dGVudENhbGxiYWNrOwotdHlwZWRlZiBXZWJDb3JlOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
cjo6RmlsZVN5c3RlbUNvbW1hbmRIYW5kbGVyOjpSZXF1ZXN0TWV0YWRhdGFDYWxsYmFjayBSZXF1
ZXN0TWV0YWRhdGFDYWxsYmFjazsKLXR5cGVkZWYgV2ViQ29yZTo6SW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXI6OkZpbGVTeXN0ZW1Db21tYW5kSGFuZGxlcjo6UmVxdWVzdEZpbGVDb250ZW50Q2Fs
bGJhY2sgUmVxdWVzdEZpbGVDb250ZW50Q2FsbGJhY2s7Ci10eXBlZGVmIFdlYkNvcmU6Okluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyOjpGaWxlU3lzdGVtQ29tbWFuZEhhbmRsZXI6OkRlbGV0ZUVu
dHJ5Q2FsbGJhY2sgRGVsZXRlRW50cnlDYWxsYmFjazsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1uYW1lc3BhY2UgRmlsZVN5c3RlbUFnZW50U3RhdGUgewotc3RhdGljIGNvbnN0IGNoYXIgZmls
ZVN5c3RlbUFnZW50RW5hYmxlZFtdID0gImZpbGVTeXN0ZW1BZ2VudEVuYWJsZWQiOwotfQotCi1u
YW1lc3BhY2UgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBCYXNlQ2FsbGJhY2ssIHR5cGVuYW1lIEhh
bmRsZXIsIHR5cGVuYW1lIEFyZ3VtZW50PgotY2xhc3MgQ2FsbGJhY2tEaXNwYXRjaGVyIDogcHVi
bGljIEJhc2VDYWxsYmFjayB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBib29sIChIYW5kbGVyOjoq
SGFuZGxpbmdNZXRob2QpKEFyZ3VtZW50Kik7Ci0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxDYWxs
YmFja0Rpc3BhdGNoZXI+IGNyZWF0ZShQYXNzUmVmUHRyPEhhbmRsZXI+IGhhbmRsZXIsIEhhbmRs
aW5nTWV0aG9kIGhhbmRsaW5nTWV0aG9kKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBDYWxsYmFja0Rpc3BhdGNoZXIoaGFuZGxlciwgaGFuZGxpbmdNZXRob2QpKTsKLSAgICB9
Ci0KLSAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlRXZlbnQoQXJndW1lbnQqIGFyZ3VtZW50KSBPVkVS
UklERQotICAgIHsKLSAgICAgICAgcmV0dXJuIChtX2hhbmRsZXIuZ2V0KCktPiptX2hhbmRsaW5n
TWV0aG9kKShhcmd1bWVudCk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIENhbGxiYWNrRGlzcGF0
Y2hlcihQYXNzUmVmUHRyPEhhbmRsZXI+IGhhbmRsZXIsIEhhbmRsaW5nTWV0aG9kIGhhbmRsaW5n
TWV0aG9kKQotICAgICAgICA6IG1faGFuZGxlcihoYW5kbGVyKQotICAgICAgICAsIG1faGFuZGxp
bmdNZXRob2QoaGFuZGxpbmdNZXRob2QpIHsgfQotCi0gICAgUmVmUHRyPEhhbmRsZXI+IG1faGFu
ZGxlcjsKLSAgICBIYW5kbGluZ01ldGhvZCBtX2hhbmRsaW5nTWV0aG9kOwotfTsKLQotdGVtcGxh
dGU8dHlwZW5hbWUgQmFzZUNhbGxiYWNrPgotY2xhc3MgQ2FsbGJhY2tEaXNwYXRjaGVyRmFjdG9y
eSB7Ci1wdWJsaWM6Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgSGFuZGxlciwgdHlwZW5hbWUgQXJn
dW1lbnQ+Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8Q2FsbGJhY2tEaXNwYXRjaGVyPEJhc2VDYWxs
YmFjaywgSGFuZGxlciwgQXJndW1lbnQ+ID4gY3JlYXRlKEhhbmRsZXIqIGhhbmRsZXIsIGJvb2wg
KEhhbmRsZXI6OipoYW5kbGluZ01ldGhvZCkoQXJndW1lbnQqKSkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBDYWxsYmFja0Rpc3BhdGNoZXI8QmFzZUNhbGxiYWNrLCBIYW5kbGVyLCBBcmd1bWVudD46
OmNyZWF0ZShQYXNzUmVmUHRyPEhhbmRsZXI+KGhhbmRsZXIpLCBoYW5kbGluZ01ldGhvZCk7Ci0g
ICAgfQotfTsKLQotY2xhc3MgRmlsZVN5c3RlbVJvb3RSZXF1ZXN0IDogcHVibGljIFJlZkNvdW50
ZWQ8RmlsZVN5c3RlbVJvb3RSZXF1ZXN0PiB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRmls
ZVN5c3RlbVJvb3RSZXF1ZXN0KTsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxGaWxl
U3lzdGVtUm9vdFJlcXVlc3Q+IGNyZWF0ZShQYXNzUmVmUHRyPFJlcXVlc3RGaWxlU3lzdGVtUm9v
dENhbGxiYWNrPiByZXF1ZXN0Q2FsbGJhY2ssIGNvbnN0IFN0cmluZyYgdHlwZSkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRmlsZVN5c3RlbVJvb3RSZXF1ZXN0KHJlcXVlc3RD
YWxsYmFjaywgdHlwZSkpOwotICAgIH0KLQotICAgIHZvaWQgc3RhcnQoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCopOwotCi1wcml2YXRlOgotICAgIGJvb2wgZGlkSGl0RXJyb3IoRmlsZUVycm9yKiBl
cnJvcikKLSAgICB7Ci0gICAgICAgIHJlcG9ydFJlc3VsdChlcnJvci0+Y29kZSgpKTsKLSAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgYm9vbCBkaWRHZXRFbnRyeShFbnRyeSopOwot
Ci0gICAgdm9pZCByZXBvcnRSZXN1bHQoRmlsZUVycm9yOjpFcnJvckNvZGUgZXJyb3JDb2RlLCBQ
YXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpGaWxlU3lzdGVtOjpFbnRyeT4gZW50cnkgPSAwKQotICAg
IHsKLSAgICAgICAgbV9yZXF1ZXN0Q2FsbGJhY2stPnNlbmRTdWNjZXNzKHN0YXRpY19jYXN0PGlu
dD4oZXJyb3JDb2RlKSwgZW50cnkpOwotICAgIH0KLQotICAgIEZpbGVTeXN0ZW1Sb290UmVxdWVz
dChQYXNzUmVmUHRyPFJlcXVlc3RGaWxlU3lzdGVtUm9vdENhbGxiYWNrPiByZXF1ZXN0Q2FsbGJh
Y2ssIGNvbnN0IFN0cmluZyYgdHlwZSkKLSAgICAgICAgOiBtX3JlcXVlc3RDYWxsYmFjayhyZXF1
ZXN0Q2FsbGJhY2spCi0gICAgICAgICwgbV90eXBlKHR5cGUpIHsgfQotCi0gICAgUmVmUHRyPFJl
cXVlc3RGaWxlU3lzdGVtUm9vdENhbGxiYWNrPiBtX3JlcXVlc3RDYWxsYmFjazsKLSAgICBTdHJp
bmcgbV90eXBlOwotfTsKLQotdm9pZCBGaWxlU3lzdGVtUm9vdFJlcXVlc3Q6OnN0YXJ0KFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCi17Ci0gICAgQVNTRVJU
KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwotCi0gICAgUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVy
cm9yQ2FsbGJhY2sgPSBDYWxsYmFja0Rpc3BhdGNoZXJGYWN0b3J5PEVycm9yQ2FsbGJhY2s+Ojpj
cmVhdGUodGhpcywgJkZpbGVTeXN0ZW1Sb290UmVxdWVzdDo6ZGlkSGl0RXJyb3IpOwotICAgIEZp
bGVTeXN0ZW1UeXBlIHR5cGU7Ci0gICAgaWYgKG1fdHlwZSA9PSBET01GaWxlU3lzdGVtQmFzZTo6
cGVyc2lzdGVudFBhdGhQcmVmaXgpCi0gICAgICAgIHR5cGUgPSBGaWxlU3lzdGVtVHlwZVBlcnNp
c3RlbnQ7Ci0gICAgZWxzZSBpZiAobV90eXBlID09IERPTUZpbGVTeXN0ZW1CYXNlOjp0ZW1wb3Jh
cnlQYXRoUHJlZml4KQotICAgICAgICB0eXBlID0gRmlsZVN5c3RlbVR5cGVUZW1wb3Jhcnk7Ci0g
ICAgZWxzZSB7Ci0gICAgICAgIGVycm9yQ2FsbGJhY2stPmhhbmRsZUV2ZW50KEZpbGVFcnJvcjo6
Y3JlYXRlKEZpbGVFcnJvcjo6U1lOVEFYX0VSUikuZ2V0KCkpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjayA9IENhbGxi
YWNrRGlzcGF0Y2hlckZhY3Rvcnk8RW50cnlDYWxsYmFjaz46OmNyZWF0ZSh0aGlzLCAmRmlsZVN5
c3RlbVJvb3RSZXF1ZXN0OjpkaWRHZXRFbnRyeSk7Ci0gICAgT3duUHRyPFJlc29sdmVVUklDYWxs
YmFja3M+IGZpbGVTeXN0ZW1DYWxsYmFja3MgPSBSZXNvbHZlVVJJQ2FsbGJhY2tzOjpjcmVhdGUo
c3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCB0
eXBlLCAiLyIpOwotCi0gICAgTG9jYWxGaWxlU3lzdGVtOjpsb2NhbEZpbGVTeXN0ZW0oKS5yZWFk
RmlsZVN5c3RlbShzY3JpcHRFeGVjdXRpb25Db250ZXh0LCB0eXBlLCBmaWxlU3lzdGVtQ2FsbGJh
Y2tzLnJlbGVhc2UoKSk7Ci19Ci0KLWJvb2wgRmlsZVN5c3RlbVJvb3RSZXF1ZXN0OjpkaWRHZXRF
bnRyeShFbnRyeSogZW50cnkpCi17Ci0gICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpGaWxlU3lzdGVt
OjpFbnRyeT4gcmVzdWx0ID0gVHlwZUJ1aWxkZXI6OkZpbGVTeXN0ZW06OkVudHJ5OjpjcmVhdGUo
KQotICAgICAgICAuc2V0VXJsKGVudHJ5LT50b1VSTCgpKQotICAgICAgICAuc2V0TmFtZSgiLyIp
Ci0gICAgICAgIC5zZXRJc0RpcmVjdG9yeSh0cnVlKTsKLSAgICByZXBvcnRSZXN1bHQoc3RhdGlj
X2Nhc3Q8RmlsZUVycm9yOjpFcnJvckNvZGU+KDApLCByZXN1bHQpOwotICAgIHJldHVybiB0cnVl
OwotfQotCi1jbGFzcyBEaXJlY3RvcnlDb250ZW50UmVxdWVzdCA6IHB1YmxpYyBSZWZDb3VudGVk
PERpcmVjdG9yeUNvbnRlbnRSZXF1ZXN0PiB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRGly
ZWN0b3J5Q29udGVudFJlcXVlc3QpOwotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPERp
cmVjdG9yeUNvbnRlbnRSZXF1ZXN0PiBjcmVhdGUoUGFzc1JlZlB0cjxSZXF1ZXN0RGlyZWN0b3J5
Q29udGVudENhbGxiYWNrPiByZXF1ZXN0Q2FsbGJhY2ssIGNvbnN0IFN0cmluZyYgdXJsKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBEaXJlY3RvcnlDb250ZW50UmVxdWVzdChy
ZXF1ZXN0Q2FsbGJhY2ssIHVybCkpOwotICAgIH0KLQotICAgIHZpcnR1YWwgfkRpcmVjdG9yeUNv
bnRlbnRSZXF1ZXN0KCkKLSAgICB7Ci0gICAgICAgIHJlcG9ydFJlc3VsdChGaWxlRXJyb3I6OkFC
T1JUX0VSUik7Ci0gICAgfQotCi0gICAgdm9pZCBzdGFydChTY3JpcHRFeGVjdXRpb25Db250ZXh0
Kik7Ci0KLXByaXZhdGU6Ci0gICAgYm9vbCBkaWRIaXRFcnJvcihGaWxlRXJyb3IqIGVycm9yKQot
ICAgIHsKLSAgICAgICAgcmVwb3J0UmVzdWx0KGVycm9yLT5jb2RlKCkpOwotICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBib29sIGRpZEdldEVudHJ5KEVudHJ5Kik7Ci0gICAgYm9v
bCBkaWRSZWFkRGlyZWN0b3J5RW50cmllcyhFbnRyeUFycmF5Kik7Ci0KLSAgICB2b2lkIHJlcG9y
dFJlc3VsdChGaWxlRXJyb3I6OkVycm9yQ29kZSBlcnJvckNvZGUsIFBhc3NSZWZQdHI8QXJyYXk8
VHlwZUJ1aWxkZXI6OkZpbGVTeXN0ZW06OkVudHJ5PiA+IGVudHJpZXMgPSAwKQotICAgIHsKLSAg
ICAgICAgbV9yZXF1ZXN0Q2FsbGJhY2stPnNlbmRTdWNjZXNzKHN0YXRpY19jYXN0PGludD4oZXJy
b3JDb2RlKSwgZW50cmllcyk7Ci0gICAgfQotCi0gICAgRGlyZWN0b3J5Q29udGVudFJlcXVlc3Qo
UGFzc1JlZlB0cjxSZXF1ZXN0RGlyZWN0b3J5Q29udGVudENhbGxiYWNrPiByZXF1ZXN0Q2FsbGJh
Y2ssIGNvbnN0IFN0cmluZyYgdXJsKQotICAgICAgICA6IG1fcmVxdWVzdENhbGxiYWNrKHJlcXVl
c3RDYWxsYmFjaykKLSAgICAgICAgLCBtX3VybChQYXJzZWRVUkxTdHJpbmcsIHVybCkgeyB9Ci0K
LSAgICB2b2lkIHJlYWREaXJlY3RvcnlFbnRyaWVzKCk7Ci0KLSAgICBSZWZQdHI8UmVxdWVzdERp
cmVjdG9yeUNvbnRlbnRDYWxsYmFjaz4gbV9yZXF1ZXN0Q2FsbGJhY2s7Ci0gICAgVVJMIG1fdXJs
OwotICAgIFJlZlB0cjxBcnJheTxUeXBlQnVpbGRlcjo6RmlsZVN5c3RlbTo6RW50cnk+ID4gbV9l
bnRyaWVzOwotICAgIFJlZlB0cjxEaXJlY3RvcnlSZWFkZXI+IG1fZGlyZWN0b3J5UmVhZGVyOwot
fTsKLQotdm9pZCBEaXJlY3RvcnlDb250ZW50UmVxdWVzdDo6c3RhcnQoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKLXsKLSAgICBBU1NFUlQoc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCk7Ci0KLSAgICBSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFj
ayA9IENhbGxiYWNrRGlzcGF0Y2hlckZhY3Rvcnk8RXJyb3JDYWxsYmFjaz46OmNyZWF0ZSh0aGlz
LCAmRGlyZWN0b3J5Q29udGVudFJlcXVlc3Q6OmRpZEhpdEVycm9yKTsKLSAgICBGaWxlU3lzdGVt
VHlwZSB0eXBlOwotICAgIFN0cmluZyBwYXRoOwotICAgIGlmICghRE9NRmlsZVN5c3RlbUJhc2U6
OmNyYWNrRmlsZVN5c3RlbVVSTChtX3VybCwgdHlwZSwgcGF0aCkpIHsKLSAgICAgICAgZXJyb3JD
YWxsYmFjay0+aGFuZGxlRXZlbnQoRmlsZUVycm9yOjpjcmVhdGUoRmlsZUVycm9yOjpTWU5UQVhf
RVJSKS5nZXQoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBSZWZQdHI8RW50cnlD
YWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrID0gQ2FsbGJhY2tEaXNwYXRjaGVyRmFjdG9yeTxFbnRy
eUNhbGxiYWNrPjo6Y3JlYXRlKHRoaXMsICZEaXJlY3RvcnlDb250ZW50UmVxdWVzdDo6ZGlkR2V0
RW50cnkpOwotICAgIE93blB0cjxSZXNvbHZlVVJJQ2FsbGJhY2tzPiBmaWxlU3lzdGVtQ2FsbGJh
Y2tzID0gUmVzb2x2ZVVSSUNhbGxiYWNrczo6Y3JlYXRlKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JD
YWxsYmFjaywgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgdHlwZSwgcGF0aCk7Ci0KLSAgICBMb2Nh
bEZpbGVTeXN0ZW06OmxvY2FsRmlsZVN5c3RlbSgpLnJlYWRGaWxlU3lzdGVtKHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQsIHR5cGUsIGZpbGVTeXN0ZW1DYWxsYmFja3MucmVsZWFzZSgpKTsKLX0KLQot
Ym9vbCBEaXJlY3RvcnlDb250ZW50UmVxdWVzdDo6ZGlkR2V0RW50cnkoRW50cnkqIGVudHJ5KQot
ewotICAgIGlmICghZW50cnktPmlzRGlyZWN0b3J5KCkpIHsKLSAgICAgICAgcmVwb3J0UmVzdWx0
KEZpbGVFcnJvcjo6VFlQRV9NSVNNQVRDSF9FUlIpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICB9Ci0KLSAgICBtX2RpcmVjdG9yeVJlYWRlciA9IHN0YXRpY19jYXN0PERpcmVjdG9yeUVudHJ5
Kj4oZW50cnkpLT5jcmVhdGVSZWFkZXIoKTsKLSAgICBtX2VudHJpZXMgPSBBcnJheTxUeXBlQnVp
bGRlcjo6RmlsZVN5c3RlbTo6RW50cnk+OjpjcmVhdGUoKTsKLSAgICByZWFkRGlyZWN0b3J5RW50
cmllcygpOwotICAgIHJldHVybiB0cnVlOwotfQotCi12b2lkIERpcmVjdG9yeUNvbnRlbnRSZXF1
ZXN0OjpyZWFkRGlyZWN0b3J5RW50cmllcygpCi17Ci0gICAgaWYgKCFtX2RpcmVjdG9yeVJlYWRl
ci0+ZmlsZXN5c3RlbSgpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpIHsKLSAgICAgICAgcmVw
b3J0UmVzdWx0KEZpbGVFcnJvcjo6QUJPUlRfRVJSKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIFJlZlB0cjxFbnRyaWVzQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjayA9IENhbGxiYWNr
RGlzcGF0Y2hlckZhY3Rvcnk8RW50cmllc0NhbGxiYWNrPjo6Y3JlYXRlKHRoaXMsICZEaXJlY3Rv
cnlDb250ZW50UmVxdWVzdDo6ZGlkUmVhZERpcmVjdG9yeUVudHJpZXMpOwotICAgIFJlZlB0cjxF
cnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrID0gQ2FsbGJhY2tEaXNwYXRjaGVyRmFjdG9yeTxF
cnJvckNhbGxiYWNrPjo6Y3JlYXRlKHRoaXMsICZEaXJlY3RvcnlDb250ZW50UmVxdWVzdDo6ZGlk
SGl0RXJyb3IpOwotICAgIG1fZGlyZWN0b3J5UmVhZGVyLT5yZWFkRW50cmllcyhzdWNjZXNzQ2Fs
bGJhY2ssIGVycm9yQ2FsbGJhY2spOwotfQotCi1ib29sIERpcmVjdG9yeUNvbnRlbnRSZXF1ZXN0
OjpkaWRSZWFkRGlyZWN0b3J5RW50cmllcyhFbnRyeUFycmF5KiBlbnRyaWVzKQotewotICAgIGlm
ICghZW50cmllcy0+bGVuZ3RoKCkpIHsKLSAgICAgICAgcmVwb3J0UmVzdWx0KHN0YXRpY19jYXN0
PEZpbGVFcnJvcjo6RXJyb3JDb2RlPigwKSwgbV9lbnRyaWVzKTsKLSAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgfQotCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGVudHJpZXMtPmxlbmd0
aCgpOyArK2kpIHsKLSAgICAgICAgRW50cnkqIGVudHJ5ID0gZW50cmllcy0+aXRlbShpKTsKLSAg
ICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpGaWxlU3lzdGVtOjpFbnRyeT4gZW50cnlGb3JGcm9u
dGVuZCA9IFR5cGVCdWlsZGVyOjpGaWxlU3lzdGVtOjpFbnRyeTo6Y3JlYXRlKCkKLSAgICAgICAg
ICAgIC5zZXRVcmwoZW50cnktPnRvVVJMKCkpCi0gICAgICAgICAgICAuc2V0TmFtZShlbnRyeS0+
bmFtZSgpKQotICAgICAgICAgICAgLnNldElzRGlyZWN0b3J5KGVudHJ5LT5pc0RpcmVjdG9yeSgp
KTsKLQotICAgICAgICB1c2luZyBUeXBlQnVpbGRlcjo6UGFnZTo6UmVzb3VyY2VUeXBlOwotICAg
ICAgICBpZiAoIWVudHJ5LT5pc0RpcmVjdG9yeSgpKSB7Ci0gICAgICAgICAgICBTdHJpbmcgbWlt
ZVR5cGUgPSBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRNSU1FVHlwZUZvclBhdGgoZW50cnktPm5hbWUo
KSk7Ci0gICAgICAgICAgICBSZXNvdXJjZVR5cGU6OkVudW0gcmVzb3VyY2VUeXBlOwotICAgICAg
ICAgICAgaWYgKE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZShtaW1l
VHlwZSkpIHsKLSAgICAgICAgICAgICAgICByZXNvdXJjZVR5cGUgPSBSZXNvdXJjZVR5cGU6Oklt
YWdlOwotICAgICAgICAgICAgICAgIGVudHJ5Rm9yRnJvbnRlbmQtPnNldElzVGV4dEZpbGUoZmFs
c2UpOwotICAgICAgICAgICAgfSBlbHNlIGlmIChNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRl
ZEphdmFTY3JpcHRNSU1FVHlwZShtaW1lVHlwZSkpIHsKLSAgICAgICAgICAgICAgICByZXNvdXJj
ZVR5cGUgPSBSZXNvdXJjZVR5cGU6OlNjcmlwdDsKLSAgICAgICAgICAgICAgICBlbnRyeUZvckZy
b250ZW5kLT5zZXRJc1RleHRGaWxlKHRydWUpOwotICAgICAgICAgICAgfSBlbHNlIGlmIChNSU1F
VHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGUobWltZVR5cGUpKSB7Ci0g
ICAgICAgICAgICAgICAgcmVzb3VyY2VUeXBlID0gUmVzb3VyY2VUeXBlOjpEb2N1bWVudDsKLSAg
ICAgICAgICAgICAgICBlbnRyeUZvckZyb250ZW5kLT5zZXRJc1RleHRGaWxlKHRydWUpOwotICAg
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICByZXNvdXJjZVR5cGUgPSBSZXNvdXJj
ZVR5cGU6Ok90aGVyOwotICAgICAgICAgICAgICAgIGVudHJ5Rm9yRnJvbnRlbmQtPnNldElzVGV4
dEZpbGUoRE9NSW1wbGVtZW50YXRpb246OmlzWE1MTUlNRVR5cGUobWltZVR5cGUpIHx8IERPTUlt
cGxlbWVudGF0aW9uOjppc1RleHRNSU1FVHlwZShtaW1lVHlwZSkpOwotICAgICAgICAgICAgfQot
Ci0gICAgICAgICAgICBlbnRyeUZvckZyb250ZW5kLT5zZXRNaW1lVHlwZShtaW1lVHlwZSk7Ci0g
ICAgICAgICAgICBlbnRyeUZvckZyb250ZW5kLT5zZXRSZXNvdXJjZVR5cGUocmVzb3VyY2VUeXBl
KTsKLSAgICAgICAgfQotCi0gICAgICAgIG1fZW50cmllcy0+YWRkSXRlbShlbnRyeUZvckZyb250
ZW5kKTsKLSAgICB9Ci0gICAgcmVhZERpcmVjdG9yeUVudHJpZXMoKTsKLSAgICByZXR1cm4gdHJ1
ZTsKLX0KLQotY2xhc3MgTWV0YWRhdGFSZXF1ZXN0IDogcHVibGljIFJlZkNvdW50ZWQ8TWV0YWRh
dGFSZXF1ZXN0PiB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTWV0YWRhdGFSZXF1ZXN0KTsK
LXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZXRhZGF0YVJlcXVlc3Q+IGNyZWF0ZShQ
YXNzUmVmUHRyPFJlcXVlc3RNZXRhZGF0YUNhbGxiYWNrPiByZXF1ZXN0Q2FsbGJhY2ssIGNvbnN0
IFN0cmluZyYgdXJsKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZXRhZGF0
YVJlcXVlc3QocmVxdWVzdENhbGxiYWNrLCB1cmwpKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIH5N
ZXRhZGF0YVJlcXVlc3QoKQotICAgIHsKLSAgICAgICAgcmVwb3J0UmVzdWx0KEZpbGVFcnJvcjo6
QUJPUlRfRVJSKTsKLSAgICB9Ci0KLSAgICB2b2lkIHN0YXJ0KFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqKTsKLQotcHJpdmF0ZToKLSAgICBib29sIGRpZEhpdEVycm9yKEZpbGVFcnJvciogZXJyb3Ip
Ci0gICAgewotICAgICAgICByZXBvcnRSZXN1bHQoZXJyb3ItPmNvZGUoKSk7Ci0gICAgICAgIHJl
dHVybiB0cnVlOwotICAgIH0KLQotICAgIGJvb2wgZGlkR2V0RW50cnkoRW50cnkqKTsKLSAgICBi
b29sIGRpZEdldE1ldGFkYXRhKE1ldGFkYXRhKik7Ci0KLSAgICB2b2lkIHJlcG9ydFJlc3VsdChG
aWxlRXJyb3I6OkVycm9yQ29kZSBlcnJvckNvZGUsIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkZp
bGVTeXN0ZW06Ok1ldGFkYXRhPiBtZXRhZGF0YSA9IDApCi0gICAgewotICAgICAgICBtX3JlcXVl
c3RDYWxsYmFjay0+c2VuZFN1Y2Nlc3Moc3RhdGljX2Nhc3Q8aW50PihlcnJvckNvZGUpLCBtZXRh
ZGF0YSk7Ci0gICAgfQotCi0gICAgTWV0YWRhdGFSZXF1ZXN0KFBhc3NSZWZQdHI8UmVxdWVzdE1l
dGFkYXRhQ2FsbGJhY2s+IHJlcXVlc3RDYWxsYmFjaywgY29uc3QgU3RyaW5nJiB1cmwpCi0gICAg
ICAgIDogbV9yZXF1ZXN0Q2FsbGJhY2socmVxdWVzdENhbGxiYWNrKQotICAgICAgICAsIG1fdXJs
KFBhcnNlZFVSTFN0cmluZywgdXJsKSB7IH0KLQotICAgIFJlZlB0cjxSZXF1ZXN0TWV0YWRhdGFD
YWxsYmFjaz4gbV9yZXF1ZXN0Q2FsbGJhY2s7Ci0gICAgVVJMIG1fdXJsOwotICAgIFN0cmluZyBt
X3BhdGg7Ci0gICAgYm9vbCBtX2lzRGlyZWN0b3J5OwotfTsKLQotdm9pZCBNZXRhZGF0YVJlcXVl
c3Q6OnN0YXJ0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQp
Ci17Ci0gICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwotCi0gICAgUmVmUHRyPEVy
cm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2sgPSBDYWxsYmFja0Rpc3BhdGNoZXJGYWN0b3J5PEVy
cm9yQ2FsbGJhY2s+OjpjcmVhdGUodGhpcywgJk1ldGFkYXRhUmVxdWVzdDo6ZGlkSGl0RXJyb3Ip
OwotCi0gICAgRmlsZVN5c3RlbVR5cGUgdHlwZTsKLSAgICBpZiAoIURPTUZpbGVTeXN0ZW1CYXNl
OjpjcmFja0ZpbGVTeXN0ZW1VUkwobV91cmwsIHR5cGUsIG1fcGF0aCkpIHsKLSAgICAgICAgZXJy
b3JDYWxsYmFjay0+aGFuZGxlRXZlbnQoRmlsZUVycm9yOjpjcmVhdGUoRmlsZUVycm9yOjpTWU5U
QVhfRVJSKS5nZXQoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBSZWZQdHI8RW50
cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrID0gQ2FsbGJhY2tEaXNwYXRjaGVyRmFjdG9yeTxF
bnRyeUNhbGxiYWNrPjo6Y3JlYXRlKHRoaXMsICZNZXRhZGF0YVJlcXVlc3Q6OmRpZEdldEVudHJ5
KTsKLSAgICBPd25QdHI8UmVzb2x2ZVVSSUNhbGxiYWNrcz4gZmlsZVN5c3RlbUNhbGxiYWNrcyA9
IFJlc29sdmVVUklDYWxsYmFja3M6OmNyZWF0ZShzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJh
Y2ssIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHR5cGUsIG1fcGF0aCk7Ci0gICAgTG9jYWxGaWxl
U3lzdGVtOjpsb2NhbEZpbGVTeXN0ZW0oKS5yZWFkRmlsZVN5c3RlbShzY3JpcHRFeGVjdXRpb25D
b250ZXh0LCB0eXBlLCBmaWxlU3lzdGVtQ2FsbGJhY2tzLnJlbGVhc2UoKSk7Ci19Ci0KLWJvb2wg
TWV0YWRhdGFSZXF1ZXN0OjpkaWRHZXRFbnRyeShFbnRyeSogZW50cnkpCi17Ci0gICAgaWYgKCFl
bnRyeS0+ZmlsZXN5c3RlbSgpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpIHsKLSAgICAgICAg
cmVwb3J0UmVzdWx0KEZpbGVFcnJvcjo6QUJPUlRfRVJSKTsKLSAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgfQotCi0gICAgUmVmUHRyPE1ldGFkYXRhQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjayA9
IENhbGxiYWNrRGlzcGF0Y2hlckZhY3Rvcnk8TWV0YWRhdGFDYWxsYmFjaz46OmNyZWF0ZSh0aGlz
LCAmTWV0YWRhdGFSZXF1ZXN0OjpkaWRHZXRNZXRhZGF0YSk7Ci0gICAgUmVmUHRyPEVycm9yQ2Fs
bGJhY2s+IGVycm9yQ2FsbGJhY2sgPSBDYWxsYmFja0Rpc3BhdGNoZXJGYWN0b3J5PEVycm9yQ2Fs
bGJhY2s+OjpjcmVhdGUodGhpcywgJk1ldGFkYXRhUmVxdWVzdDo6ZGlkSGl0RXJyb3IpOwotICAg
IGVudHJ5LT5nZXRNZXRhZGF0YShzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spOwotICAg
IG1faXNEaXJlY3RvcnkgPSBlbnRyeS0+aXNEaXJlY3RvcnkoKTsKLSAgICByZXR1cm4gdHJ1ZTsK
LX0KLQotYm9vbCBNZXRhZGF0YVJlcXVlc3Q6OmRpZEdldE1ldGFkYXRhKE1ldGFkYXRhKiBtZXRh
ZGF0YSkKLXsKLSAgICB1c2luZyBUeXBlQnVpbGRlcjo6RmlsZVN5c3RlbTo6TWV0YWRhdGE7Ci0g
ICAgUmVmUHRyPE1ldGFkYXRhPiByZXN1bHQgPSBNZXRhZGF0YTo6Y3JlYXRlKCkKLSAgICAgICAg
LnNldE1vZGlmaWNhdGlvblRpbWUobWV0YWRhdGEtPm1vZGlmaWNhdGlvblRpbWUoKSkKLSAgICAg
ICAgLnNldFNpemUobWV0YWRhdGEtPnNpemUoKSk7Ci0gICAgcmVwb3J0UmVzdWx0KHN0YXRpY19j
YXN0PEZpbGVFcnJvcjo6RXJyb3JDb2RlPigwKSwgcmVzdWx0KTsKLSAgICByZXR1cm4gdHJ1ZTsK
LX0KLQotY2xhc3MgRmlsZUNvbnRlbnRSZXF1ZXN0IDogcHVibGljIEV2ZW50TGlzdGVuZXIgewot
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEZpbGVDb250ZW50UmVxdWVzdCk7Ci1wdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8RmlsZUNvbnRlbnRSZXF1ZXN0PiBjcmVhdGUoUGFzc1JlZlB0
cjxSZXF1ZXN0RmlsZUNvbnRlbnRDYWxsYmFjaz4gcmVxdWVzdENhbGxiYWNrLCBjb25zdCBTdHJp
bmcmIHVybCwgYm9vbCByZWFkQXNUZXh0LCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBlbmQs
IGNvbnN0IFN0cmluZyYgY2hhcnNldCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgRmlsZUNvbnRlbnRSZXF1ZXN0KHJlcXVlc3RDYWxsYmFjaywgdXJsLCByZWFkQXNUZXh0LCBz
dGFydCwgZW5kLCBjaGFyc2V0KSk7Ci0gICAgfQotCi0gICAgdmlydHVhbCB+RmlsZUNvbnRlbnRS
ZXF1ZXN0KCkKLSAgICB7Ci0gICAgICAgIHJlcG9ydFJlc3VsdChGaWxlRXJyb3I6OkFCT1JUX0VS
Uik7Ci0gICAgfQotCi0gICAgdm9pZCBzdGFydChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7Ci0K
LSAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiBvdGhlcikg
T1ZFUlJJREUKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzID09ICZvdGhlcjsKLSAgICB9Ci0K
LSAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV2
ZW50KiBldmVudCkgT1ZFUlJJREUKLSAgICB7Ci0gICAgICAgIGlmIChldmVudC0+dHlwZSgpID09
IGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQpCi0gICAgICAgICAgICBkaWRSZWFkKCk7Ci0gICAgICAg
IGVsc2UgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmVycm9yRXZlbnQpCi0gICAg
ICAgICAgICBkaWRIaXRFcnJvcihtX3JlYWRlci0+ZXJyb3IoKS5nZXQoKSk7Ci0gICAgfQotCi1w
cml2YXRlOgotICAgIGJvb2wgZGlkSGl0RXJyb3IoRmlsZUVycm9yKiBlcnJvcikKLSAgICB7Ci0g
ICAgICAgIHJlcG9ydFJlc3VsdChlcnJvci0+Y29kZSgpKTsKLSAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgfQotCi0gICAgYm9vbCBkaWRHZXRFbnRyeShFbnRyeSopOwotICAgIGJvb2wgZGlkR2V0
RmlsZShGaWxlKik7Ci0gICAgdm9pZCBkaWRSZWFkKCk7Ci0KLSAgICB2b2lkIHJlcG9ydFJlc3Vs
dChGaWxlRXJyb3I6OkVycm9yQ29kZSBlcnJvckNvZGUsIGNvbnN0IFN0cmluZyogcmVzdWx0ID0g
MCwgY29uc3QgU3RyaW5nKiBjaGFyc2V0ID0gMCkKLSAgICB7Ci0gICAgICAgIG1fcmVxdWVzdENh
bGxiYWNrLT5zZW5kU3VjY2VzcyhzdGF0aWNfY2FzdDxpbnQ+KGVycm9yQ29kZSksIHJlc3VsdCwg
Y2hhcnNldCk7Ci0gICAgfQotCi0gICAgRmlsZUNvbnRlbnRSZXF1ZXN0KFBhc3NSZWZQdHI8UmVx
dWVzdEZpbGVDb250ZW50Q2FsbGJhY2s+IHJlcXVlc3RDYWxsYmFjaywgY29uc3QgU3RyaW5nJiB1
cmwsIGJvb2wgcmVhZEFzVGV4dCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgZW5kLCBjb25z
dCBTdHJpbmcmIGNoYXJzZXQpCi0gICAgICAgIDogRXZlbnRMaXN0ZW5lcihFdmVudExpc3RlbmVy
OjpDUFBFdmVudExpc3RlbmVyVHlwZSkKLSAgICAgICAgLCBtX3JlcXVlc3RDYWxsYmFjayhyZXF1
ZXN0Q2FsbGJhY2spCi0gICAgICAgICwgbV91cmwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpCi0gICAg
ICAgICwgbV9yZWFkQXNUZXh0KHJlYWRBc1RleHQpCi0gICAgICAgICwgbV9zdGFydChzdGFydCkK
LSAgICAgICAgLCBtX2VuZChlbmQpCi0gICAgICAgICwgbV9jaGFyc2V0KGNoYXJzZXQpIHsgfQot
Ci0gICAgUmVmUHRyPFJlcXVlc3RGaWxlQ29udGVudENhbGxiYWNrPiBtX3JlcXVlc3RDYWxsYmFj
azsKLSAgICBVUkwgbV91cmw7Ci0gICAgYm9vbCBtX3JlYWRBc1RleHQ7Ci0gICAgaW50IG1fc3Rh
cnQ7Ci0gICAgbG9uZyBsb25nIG1fZW5kOwotICAgIFN0cmluZyBtX21pbWVUeXBlOwotICAgIFN0
cmluZyBtX2NoYXJzZXQ7Ci0KLSAgICBSZWZQdHI8RmlsZVJlYWRlcj4gbV9yZWFkZXI7Ci19Owot
Ci12b2lkIEZpbGVDb250ZW50UmVxdWVzdDo6c3RhcnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKLXsKLSAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCk7Ci0KLSAgICBSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayA9IENhbGxi
YWNrRGlzcGF0Y2hlckZhY3Rvcnk8RXJyb3JDYWxsYmFjaz46OmNyZWF0ZSh0aGlzLCAmRmlsZUNv
bnRlbnRSZXF1ZXN0OjpkaWRIaXRFcnJvcik7Ci0KLSAgICBGaWxlU3lzdGVtVHlwZSB0eXBlOwot
ICAgIFN0cmluZyBwYXRoOwotICAgIGlmICghRE9NRmlsZVN5c3RlbUJhc2U6OmNyYWNrRmlsZVN5
c3RlbVVSTChtX3VybCwgdHlwZSwgcGF0aCkpIHsKLSAgICAgICAgZXJyb3JDYWxsYmFjay0+aGFu
ZGxlRXZlbnQoRmlsZUVycm9yOjpjcmVhdGUoRmlsZUVycm9yOjpTWU5UQVhfRVJSKS5nZXQoKSk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3Vj
Y2Vzc0NhbGxiYWNrID0gQ2FsbGJhY2tEaXNwYXRjaGVyRmFjdG9yeTxFbnRyeUNhbGxiYWNrPjo6
Y3JlYXRlKHRoaXMsICZGaWxlQ29udGVudFJlcXVlc3Q6OmRpZEdldEVudHJ5KTsKLSAgICBPd25Q
dHI8UmVzb2x2ZVVSSUNhbGxiYWNrcz4gZmlsZVN5c3RlbUNhbGxiYWNrcyA9IFJlc29sdmVVUklD
YWxsYmFja3M6OmNyZWF0ZShzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ssIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQsIHR5cGUsIHBhdGgpOwotCi0gICAgTG9jYWxGaWxlU3lzdGVtOjpsb2Nh
bEZpbGVTeXN0ZW0oKS5yZWFkRmlsZVN5c3RlbShzY3JpcHRFeGVjdXRpb25Db250ZXh0LCB0eXBl
LCBmaWxlU3lzdGVtQ2FsbGJhY2tzLnJlbGVhc2UoKSk7Ci19Ci0KLWJvb2wgRmlsZUNvbnRlbnRS
ZXF1ZXN0OjpkaWRHZXRFbnRyeShFbnRyeSogZW50cnkpCi17Ci0gICAgaWYgKGVudHJ5LT5pc0Rp
cmVjdG9yeSgpKSB7Ci0gICAgICAgIHJlcG9ydFJlc3VsdChGaWxlRXJyb3I6OlRZUEVfTUlTTUFU
Q0hfRVJSKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgaWYgKCFlbnRyeS0+
ZmlsZXN5c3RlbSgpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpIHsKLSAgICAgICAgcmVwb3J0
UmVzdWx0KEZpbGVFcnJvcjo6QUJPUlRfRVJSKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
fQotCi0gICAgUmVmUHRyPEZpbGVDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrID0gQ2FsbGJhY2tE
aXNwYXRjaGVyRmFjdG9yeTxGaWxlQ2FsbGJhY2s+OjpjcmVhdGUodGhpcywgJkZpbGVDb250ZW50
UmVxdWVzdDo6ZGlkR2V0RmlsZSk7Ci0gICAgUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2Fs
bGJhY2sgPSBDYWxsYmFja0Rpc3BhdGNoZXJGYWN0b3J5PEVycm9yQ2FsbGJhY2s+OjpjcmVhdGUo
dGhpcywgJkZpbGVDb250ZW50UmVxdWVzdDo6ZGlkSGl0RXJyb3IpOwotICAgIHN0YXRpY19jYXN0
PEZpbGVFbnRyeSo+KGVudHJ5KS0+ZmlsZShzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2sp
OwotCi0gICAgbV9yZWFkZXIgPSBGaWxlUmVhZGVyOjpjcmVhdGUoZW50cnktPmZpbGVzeXN0ZW0o
KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKLSAgICBtX21pbWVUeXBlID0gTUlNRVR5cGVS
ZWdpc3RyeTo6Z2V0TUlNRVR5cGVGb3JQYXRoKGVudHJ5LT5uYW1lKCkpOwotCi0gICAgcmV0dXJu
IHRydWU7Ci19Ci0KLWJvb2wgRmlsZUNvbnRlbnRSZXF1ZXN0OjpkaWRHZXRGaWxlKEZpbGUqIGZp
bGUpCi17Ci0gICAgUmVmUHRyPEJsb2I+IGJsb2IgPSBmaWxlLT5zbGljZShtX3N0YXJ0LCBtX2Vu
ZCk7Ci0gICAgbV9yZWFkZXItPnNldE9ubG9hZCh0aGlzKTsKLSAgICBtX3JlYWRlci0+c2V0T25l
cnJvcih0aGlzKTsKLQotICAgIG1fcmVhZGVyLT5yZWFkQXNBcnJheUJ1ZmZlcihibG9iLmdldCgp
LCBJR05PUkVfRVhDRVBUSU9OKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCBGaWxlQ29u
dGVudFJlcXVlc3Q6OmRpZFJlYWQoKQotewotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVy
ID0gbV9yZWFkZXItPmFycmF5QnVmZmVyUmVzdWx0KCk7Ci0KLSAgICBpZiAoIW1fcmVhZEFzVGV4
dCkgewotICAgICAgICBTdHJpbmcgcmVzdWx0ID0gYmFzZTY0RW5jb2RlKHN0YXRpY19jYXN0PGNo
YXIqPihidWZmZXItPmRhdGEoKSksIGJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKLSAgICAgICAgcmVw
b3J0UmVzdWx0KHN0YXRpY19jYXN0PEZpbGVFcnJvcjo6RXJyb3JDb2RlPigwKSwgJnJlc3VsdCwg
MCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVj
b2Rlcj4gZGVjb2RlciA9IFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZShtX21pbWVUeXBlLCBt
X2NoYXJzZXQsIHRydWUpOwotICAgIFN0cmluZyByZXN1bHQgPSBkZWNvZGVyLT5kZWNvZGUoc3Rh
dGljX2Nhc3Q8Y2hhcio+KGJ1ZmZlci0+ZGF0YSgpKSwgYnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwot
ICAgIHJlc3VsdC5hcHBlbmQoZGVjb2Rlci0+Zmx1c2goKSk7Ci0gICAgbV9jaGFyc2V0ID0gZGVj
b2Rlci0+ZW5jb2RpbmcoKS5kb21OYW1lKCk7Ci0gICAgcmVwb3J0UmVzdWx0KHN0YXRpY19jYXN0
PEZpbGVFcnJvcjo6RXJyb3JDb2RlPigwKSwgJnJlc3VsdCwgJm1fY2hhcnNldCk7Ci19Ci0KLWNs
YXNzIERlbGV0ZUVudHJ5UmVxdWVzdCA6IHB1YmxpYyBWb2lkQ2FsbGJhY2sgewotcHVibGljOgot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPERlbGV0ZUVudHJ5UmVxdWVzdD4gY3JlYXRlKFBhc3NSZWZQ
dHI8RGVsZXRlRW50cnlDYWxsYmFjaz4gcmVxdWVzdENhbGxiYWNrLCBjb25zdCBVUkwmIHVybCkK
LSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRGVsZXRlRW50cnlSZXF1ZXN0KHJl
cXVlc3RDYWxsYmFjaywgdXJsKSk7Ci0gICAgfQotCi0gICAgdmlydHVhbCB+RGVsZXRlRW50cnlS
ZXF1ZXN0KCkKLSAgICB7Ci0gICAgICAgIHJlcG9ydFJlc3VsdChGaWxlRXJyb3I6OkFCT1JUX0VS
Uik7Ci0gICAgfQotCi0gICAgdmlydHVhbCBib29sIGhhbmRsZUV2ZW50KCkgT1ZFUlJJREUKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBkaWREZWxldGVFbnRyeSgpOwotICAgIH0KLQotICAgIHZvaWQg
c3RhcnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwotCi1wcml2YXRlOgotICAgIGJvb2wgZGlk
SGl0RXJyb3IoRmlsZUVycm9yKiBlcnJvcikKLSAgICB7Ci0gICAgICAgIHJlcG9ydFJlc3VsdChl
cnJvci0+Y29kZSgpKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgYm9vbCBk
aWRHZXRFbnRyeShFbnRyeSopOwotICAgIGJvb2wgZGlkRGVsZXRlRW50cnkoKTsKLQotICAgIHZv
aWQgcmVwb3J0UmVzdWx0KEZpbGVFcnJvcjo6RXJyb3JDb2RlIGVycm9yQ29kZSkKLSAgICB7Ci0g
ICAgICAgIG1fcmVxdWVzdENhbGxiYWNrLT5zZW5kU3VjY2VzcyhzdGF0aWNfY2FzdDxpbnQ+KGVy
cm9yQ29kZSkpOwotICAgIH0KLQotICAgIERlbGV0ZUVudHJ5UmVxdWVzdChQYXNzUmVmUHRyPERl
bGV0ZUVudHJ5Q2FsbGJhY2s+IHJlcXVlc3RDYWxsYmFjaywgY29uc3QgVVJMJiB1cmwpCi0gICAg
ICAgIDogbV9yZXF1ZXN0Q2FsbGJhY2socmVxdWVzdENhbGxiYWNrKQotICAgICAgICAsIG1fdXJs
KHVybCkgeyB9Ci0KLSAgICBSZWZQdHI8RGVsZXRlRW50cnlDYWxsYmFjaz4gbV9yZXF1ZXN0Q2Fs
bGJhY2s7Ci0gICAgVVJMIG1fdXJsOwotfTsKLQotdm9pZCBEZWxldGVFbnRyeVJlcXVlc3Q6OnN0
YXJ0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCi17Ci0g
ICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwotCi0gICAgUmVmUHRyPEVycm9yQ2Fs
bGJhY2s+IGVycm9yQ2FsbGJhY2sgPSBDYWxsYmFja0Rpc3BhdGNoZXJGYWN0b3J5PEVycm9yQ2Fs
bGJhY2s+OjpjcmVhdGUodGhpcywgJkRlbGV0ZUVudHJ5UmVxdWVzdDo6ZGlkSGl0RXJyb3IpOwot
Ci0gICAgRmlsZVN5c3RlbVR5cGUgdHlwZTsKLSAgICBTdHJpbmcgcGF0aDsKLSAgICBpZiAoIURP
TUZpbGVTeXN0ZW1CYXNlOjpjcmFja0ZpbGVTeXN0ZW1VUkwobV91cmwsIHR5cGUsIHBhdGgpKSB7
Ci0gICAgICAgIGVycm9yQ2FsbGJhY2stPmhhbmRsZUV2ZW50KEZpbGVFcnJvcjo6Y3JlYXRlKEZp
bGVFcnJvcjo6U1lOVEFYX0VSUikuZ2V0KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgaWYgKHBhdGggPT0gIi8iKSB7Ci0gICAgICAgIE93blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxs
YmFja3M+IGZpbGVTeXN0ZW1DYWxsYmFja3MgPSBWb2lkQ2FsbGJhY2tzOjpjcmVhdGUodGhpcywg
ZXJyb3JDYWxsYmFjayk7Ci0gICAgICAgIExvY2FsRmlsZVN5c3RlbTo6bG9jYWxGaWxlU3lzdGVt
KCkuZGVsZXRlRmlsZVN5c3RlbShzY3JpcHRFeGVjdXRpb25Db250ZXh0LCB0eXBlLCBmaWxlU3lz
dGVtQ2FsbGJhY2tzLnJlbGVhc2UoKSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgUmVmUHRyPEVu
dHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjayA9IENhbGxiYWNrRGlzcGF0Y2hlckZhY3Rvcnk8
RW50cnlDYWxsYmFjaz46OmNyZWF0ZSh0aGlzLCAmRGVsZXRlRW50cnlSZXF1ZXN0OjpkaWRHZXRF
bnRyeSk7Ci0gICAgICAgIE93blB0cjxSZXNvbHZlVVJJQ2FsbGJhY2tzPiBmaWxlU3lzdGVtQ2Fs
bGJhY2tzID0gUmVzb2x2ZVVSSUNhbGxiYWNrczo6Y3JlYXRlKHN1Y2Nlc3NDYWxsYmFjaywgZXJy
b3JDYWxsYmFjaywgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgdHlwZSwgcGF0aCk7Ci0gICAgICAg
IExvY2FsRmlsZVN5c3RlbTo6bG9jYWxGaWxlU3lzdGVtKCkucmVhZEZpbGVTeXN0ZW0oc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCwgdHlwZSwgZmlsZVN5c3RlbUNhbGxiYWNrcy5yZWxlYXNlKCkpOwot
ICAgIH0KLX0KLQotYm9vbCBEZWxldGVFbnRyeVJlcXVlc3Q6OmRpZEdldEVudHJ5KEVudHJ5KiBl
bnRyeSkKLXsKLSAgICBSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayA9IENhbGxi
YWNrRGlzcGF0Y2hlckZhY3Rvcnk8RXJyb3JDYWxsYmFjaz46OmNyZWF0ZSh0aGlzLCAmRGVsZXRl
RW50cnlSZXF1ZXN0OjpkaWRIaXRFcnJvcik7Ci0gICAgaWYgKGVudHJ5LT5pc0RpcmVjdG9yeSgp
KSB7Ci0gICAgICAgIERpcmVjdG9yeUVudHJ5KiBkaXJlY3RvcnlFbnRyeSA9IHN0YXRpY19jYXN0
PERpcmVjdG9yeUVudHJ5Kj4oZW50cnkpOwotICAgICAgICBkaXJlY3RvcnlFbnRyeS0+cmVtb3Zl
UmVjdXJzaXZlbHkodGhpcywgZXJyb3JDYWxsYmFjayk7Ci0gICAgfSBlbHNlCi0gICAgICAgIGVu
dHJ5LT5yZW1vdmUodGhpcywgZXJyb3JDYWxsYmFjayk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0K
LWJvb2wgRGVsZXRlRW50cnlSZXF1ZXN0OjpkaWREZWxldGVFbnRyeSgpCi17Ci0gICAgcmVwb3J0
UmVzdWx0KHN0YXRpY19jYXN0PEZpbGVFcnJvcjo6RXJyb3JDb2RlPigwKSk7Ci0gICAgcmV0dXJu
IHRydWU7Ci19Ci0KLX0gLy8gYW5vbnltb3VzIG5hbWVzcGFjZQotCi0vLyBzdGF0aWMKLVBhc3NP
d25QdHI8SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50PiBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6
OmNyZWF0ZShJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0
b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCwgSW5zcGVjdG9yQ29tcG9zaXRlU3RhdGUqIHN0YXRlKQot
ewotICAgIHJldHVybiBhZG9wdFB0cihuZXcgSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50KGluc3Ry
dW1lbnRpbmdBZ2VudHMsIHBhZ2VBZ2VudCwgc3RhdGUpKTsKLX0KLQotSW5zcGVjdG9yRmlsZVN5
c3RlbUFnZW50Ojp+SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50KCkKLXsKLSAgICBtX2luc3RydW1l
bnRpbmdBZ2VudHMtPnNldEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudCgwKTsKLX0KLQotdm9pZCBJ
bnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OmVuYWJsZShFcnJvclN0cmluZyopCi17Ci0gICAgaWYg
KG1fZW5hYmxlZCkKLSAgICAgICAgcmV0dXJuOwotICAgIG1fZW5hYmxlZCA9IHRydWU7Ci0gICAg
bV9zdGF0ZS0+c2V0Qm9vbGVhbihGaWxlU3lzdGVtQWdlbnRTdGF0ZTo6ZmlsZVN5c3RlbUFnZW50
RW5hYmxlZCwgbV9lbmFibGVkKTsKLX0KLQotdm9pZCBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6
OmRpc2FibGUoRXJyb3JTdHJpbmcqKQotewotICAgIGlmICghbV9lbmFibGVkKQotICAgICAgICBy
ZXR1cm47Ci0gICAgbV9lbmFibGVkID0gZmFsc2U7Ci0gICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihG
aWxlU3lzdGVtQWdlbnRTdGF0ZTo6ZmlsZVN5c3RlbUFnZW50RW5hYmxlZCwgbV9lbmFibGVkKTsK
LX0KLQotdm9pZCBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OnJlcXVlc3RGaWxlU3lzdGVtUm9v
dChFcnJvclN0cmluZyogZXJyb3IsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcm
IHR5cGUsIFBhc3NSZWZQdHI8UmVxdWVzdEZpbGVTeXN0ZW1Sb290Q2FsbGJhY2s+IHJlcXVlc3RD
YWxsYmFjaykKLXsKLSAgICBpZiAoIWFzc2VydEVuYWJsZWQoZXJyb3IpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0
ID0gYXNzZXJ0U2NyaXB0RXhlY3V0aW9uQ29udGV4dEZvck9yaWdpbihlcnJvciwgU2VjdXJpdHlP
cmlnaW46OmNyZWF0ZUZyb21TdHJpbmcob3JpZ2luKS5nZXQoKSk7Ci0gICAgaWYgKCFzY3JpcHRF
eGVjdXRpb25Db250ZXh0KQotICAgICAgICByZXR1cm47Ci0KLSAgICBGaWxlU3lzdGVtUm9vdFJl
cXVlc3Q6OmNyZWF0ZShyZXF1ZXN0Q2FsbGJhY2ssIHR5cGUpLT5zdGFydChzY3JpcHRFeGVjdXRp
b25Db250ZXh0KTsKLX0KLQotdm9pZCBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OnJlcXVlc3RE
aXJlY3RvcnlDb250ZW50KEVycm9yU3RyaW5nKiBlcnJvciwgY29uc3QgU3RyaW5nJiB1cmwsIFBh
c3NSZWZQdHI8UmVxdWVzdERpcmVjdG9yeUNvbnRlbnRDYWxsYmFjaz4gcmVxdWVzdENhbGxiYWNr
KQotewotICAgIGlmICghYXNzZXJ0RW5hYmxlZChlcnJvcikpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBhc3Nl
cnRTY3JpcHRFeGVjdXRpb25Db250ZXh0Rm9yT3JpZ2luKGVycm9yLCBTZWN1cml0eU9yaWdpbjo6
Y3JlYXRlRnJvbVN0cmluZyh1cmwpLmdldCgpKTsKLSAgICBpZiAoIXNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQpCi0gICAgICAgIHJldHVybjsKLQotICAgIERpcmVjdG9yeUNvbnRlbnRSZXF1ZXN0Ojpj
cmVhdGUocmVxdWVzdENhbGxiYWNrLCB1cmwpLT5zdGFydChzY3JpcHRFeGVjdXRpb25Db250ZXh0
KTsKLX0KLQotdm9pZCBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OnJlcXVlc3RNZXRhZGF0YShF
cnJvclN0cmluZyogZXJyb3IsIGNvbnN0IFN0cmluZyYgdXJsLCBQYXNzUmVmUHRyPFJlcXVlc3RN
ZXRhZGF0YUNhbGxiYWNrPiByZXF1ZXN0Q2FsbGJhY2spCi17Ci0gICAgaWYgKCFhc3NlcnRFbmFi
bGVkKGVycm9yKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGFzc2VydFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRG
b3JPcmlnaW4oZXJyb3IsIFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKHVybCkuZ2V0
KCkpOwotICAgIGlmICghc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgTWV0YWRhdGFSZXF1ZXN0OjpjcmVhdGUocmVxdWVzdENhbGxiYWNrLCB1cmwpLT5zdGFy
dChzY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKLX0KLQotdm9pZCBJbnNwZWN0b3JGaWxlU3lzdGVt
QWdlbnQ6OnJlcXVlc3RGaWxlQ29udGVudChFcnJvclN0cmluZyogZXJyb3IsIGNvbnN0IFN0cmlu
ZyYgdXJsLCBib29sIHJlYWRBc1RleHQsIGNvbnN0IGludCogc3RhcnQsIGNvbnN0IGludCogZW5k
LCBjb25zdCBTdHJpbmcqIGNoYXJzZXQsIFBhc3NSZWZQdHI8UmVxdWVzdEZpbGVDb250ZW50Q2Fs
bGJhY2s+IHJlcXVlc3RDYWxsYmFjaykKLXsKLSAgICBpZiAoIWFzc2VydEVuYWJsZWQoZXJyb3Ip
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRF
eGVjdXRpb25Db250ZXh0ID0gYXNzZXJ0U2NyaXB0RXhlY3V0aW9uQ29udGV4dEZvck9yaWdpbihl
cnJvciwgU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcodXJsKS5nZXQoKSk7Ci0gICAg
aWYgKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0KQotICAgICAgICByZXR1cm47Ci0KLSAgICBsb25n
IGxvbmcgc3RhcnRQb3NpdGlvbiA9IHN0YXJ0ID8gKnN0YXJ0IDogMDsKLSAgICBsb25nIGxvbmcg
ZW5kUG9zaXRpb24gPSBlbmQgPyAqZW5kIDogc3RkOjpudW1lcmljX2xpbWl0czxsb25nIGxvbmc+
OjptYXgoKTsKLSAgICBGaWxlQ29udGVudFJlcXVlc3Q6OmNyZWF0ZShyZXF1ZXN0Q2FsbGJhY2ss
IHVybCwgcmVhZEFzVGV4dCwgc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24sIGNoYXJzZXQgPyAq
Y2hhcnNldCA6ICIiKS0+c3RhcnQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7Ci19Ci0KLXZvaWQg
SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OjpkZWxldGVFbnRyeShFcnJvclN0cmluZyogZXJyb3Is
IGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBQYXNzUmVmUHRyPERlbGV0ZUVudHJ5Q2FsbGJhY2s+
IHJlcXVlc3RDYWxsYmFjaykKLXsKLSAgICBpZiAoIWFzc2VydEVuYWJsZWQoZXJyb3IpKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBVUkwgdXJsKFBhcnNlZFVSTFN0cmluZywgdXJsU3RyaW5nKTsK
LQotICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBh
c3NlcnRTY3JpcHRFeGVjdXRpb25Db250ZXh0Rm9yT3JpZ2luKGVycm9yLCBTZWN1cml0eU9yaWdp
bjo6Y3JlYXRlKHVybCkuZ2V0KCkpOwotICAgIGlmICghc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgRGVsZXRlRW50cnlSZXF1ZXN0OjpjcmVhdGUocmVxdWVz
dENhbGxiYWNrLCB1cmwpLT5zdGFydChzY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKLX0KLQotdm9p
ZCBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OmNsZWFyRnJvbnRlbmQoKQotewotICAgIG1fZW5h
YmxlZCA9IGZhbHNlOwotICAgIG1fc3RhdGUtPnNldEJvb2xlYW4oRmlsZVN5c3RlbUFnZW50U3Rh
dGU6OmZpbGVTeXN0ZW1BZ2VudEVuYWJsZWQsIG1fZW5hYmxlZCk7Ci19Ci0KLXZvaWQgSW5zcGVj
dG9yRmlsZVN5c3RlbUFnZW50OjpyZXN0b3JlKCkKLXsKLSAgICBtX2VuYWJsZWQgPSBtX3N0YXRl
LT5nZXRCb29sZWFuKEZpbGVTeXN0ZW1BZ2VudFN0YXRlOjpmaWxlU3lzdGVtQWdlbnRFbmFibGVk
KTsKLX0KLQotSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OjpJbnNwZWN0b3JGaWxlU3lzdGVtQWdl
bnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yUGFn
ZUFnZW50KiBwYWdlQWdlbnQsIEluc3BlY3RvckNvbXBvc2l0ZVN0YXRlKiBzdGF0ZSkKLSAgICA6
IEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ+KCJGaWxlU3lzdGVt
IiwgaW5zdHJ1bWVudGluZ0FnZW50cywgc3RhdGUpCi0gICAgLCBtX3BhZ2VBZ2VudChwYWdlQWdl
bnQpCi0gICAgLCBtX2VuYWJsZWQoZmFsc2UpCi17Ci0gICAgQVNTRVJUKGluc3RydW1lbnRpbmdB
Z2VudHMpOwotICAgIEFTU0VSVChzdGF0ZSk7Ci0gICAgQVNTRVJUKG1fcGFnZUFnZW50KTsKLSAg
ICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudCh0aGlz
KTsKLX0KLQotYm9vbCBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OmFzc2VydEVuYWJsZWQoRXJy
b3JTdHJpbmcqIGVycm9yKQotewotICAgIGlmICghbV9lbmFibGVkKSB7Ci0gICAgICAgICplcnJv
ciA9ICJGaWxlU3lzdGVtIGFnZW50IGlzIG5vdCBlbmFibGVkLiI7Ci0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLVNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6YXNzZXJ0U2NyaXB0RXhlY3V0aW9uQ29udGV4
dEZvck9yaWdpbihFcnJvclN0cmluZyogZXJyb3IsIFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCi17
Ci0gICAgZm9yIChGcmFtZSogZnJhbWUgPSBtX3BhZ2VBZ2VudC0+bWFpbkZyYW1lKCk7IGZyYW1l
OyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsKLSAgICAgICAgaWYgKGZy
YW1lLT5kb2N1bWVudCgpICYmIGZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT5p
c1NhbWVTY2hlbWVIb3N0UG9ydChvcmlnaW4pKQotICAgICAgICAgICAgcmV0dXJuIGZyYW1lLT5k
b2N1bWVudCgpOwotICAgIH0KLQotICAgICplcnJvciA9ICJObyBmcmFtZSBpcyBhdmFpbGFibGUg
Zm9yIHRoZSByZXF1ZXN0IjsKLSAgICByZXR1cm4gMDsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikgJiYgRU5BQkxFKEZJTEVfU1lTVEVN
KQpJbmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2Vu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGaWxl
U3lzdGVtQWdlbnQuaAkocmV2aXNpb24gMTU2NjkxKQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDc3ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1l
dDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaWZuZGVmIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudF9oCi0jZGVmaW5lIElu
c3BlY3RvckZpbGVTeXN0ZW1BZ2VudF9oCi0KLSNpZiBFTkFCTEUoSU5TUEVDVE9SKSAmJiBFTkFC
TEUoRklMRV9TWVNURU0pCi0KLSNpbmNsdWRlICJJbnNwZWN0b3JCYXNlQWdlbnQuaCIKLQotI2lu
Y2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBJbnNwZWN0b3JGcm9udGVuZDsKLWNsYXNzIElu
c3BlY3RvclBhZ2VBZ2VudDsKLWNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci1jbGFzcyBT
ZWN1cml0eU9yaWdpbjsKLQotY2xhc3MgSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50IDogcHVibGlj
IEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ+LCBwdWJsaWMgSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkZpbGVTeXN0ZW1Db21tYW5kSGFuZGxlciB7Ci1wdWJs
aWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50PiBjcmVh
dGUoSW5zdHJ1bWVudGluZ0FnZW50cyosIEluc3BlY3RvclBhZ2VBZ2VudCosIEluc3BlY3RvckNv
bXBvc2l0ZVN0YXRlKik7Ci0gICAgdmlydHVhbCB+SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50KCk7
Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nKikgT1ZFUlJJREU7Ci0gICAg
dmlydHVhbCB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcqKSBPVkVSUklERTsKLQotICAgIHZpcnR1
YWwgdm9pZCByZXF1ZXN0RmlsZVN5c3RlbVJvb3QoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcm
IG9yaWdpbiwgY29uc3QgU3RyaW5nJiB0eXBlU3RyaW5nLCBQYXNzUmVmUHRyPFJlcXVlc3RGaWxl
U3lzdGVtUm9vdENhbGxiYWNrPikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RE
aXJlY3RvcnlDb250ZW50KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiB1cmwsIFBhc3NSZWZQ
dHI8UmVxdWVzdERpcmVjdG9yeUNvbnRlbnRDYWxsYmFjaz4pIE9WRVJSSURFOwotICAgIHZpcnR1
YWwgdm9pZCByZXF1ZXN0TWV0YWRhdGEoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHVybCwg
UGFzc1JlZlB0cjxSZXF1ZXN0TWV0YWRhdGFDYWxsYmFjaz4pIE9WRVJSSURFOwotICAgIHZpcnR1
YWwgdm9pZCByZXF1ZXN0RmlsZUNvbnRlbnQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHVy
bCwgYm9vbCByZWFkQXNUZXh0LCBjb25zdCBpbnQqIHN0YXJ0LCBjb25zdCBpbnQqIGVuZCwgY29u
c3QgU3RyaW5nKiBjaGFyc2V0LCBQYXNzUmVmUHRyPFJlcXVlc3RGaWxlQ29udGVudENhbGxiYWNr
PikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGRlbGV0ZUVudHJ5KEVycm9yU3RyaW5nKiwg
Y29uc3QgU3RyaW5nJiB1cmwsIFBhc3NSZWZQdHI8RGVsZXRlRW50cnlDYWxsYmFjaz4pIE9WRVJS
SURFOwotCi0gICAgdmlydHVhbCB2b2lkIGNsZWFyRnJvbnRlbmQoKSBPVkVSUklERTsKLSAgICB2
aXJ0dWFsIHZvaWQgcmVzdG9yZSgpIE9WRVJSSURFOwotCi1wcml2YXRlOgotICAgIEluc3BlY3Rv
ckZpbGVTeXN0ZW1BZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9yUGFnZUFnZW50
KiwgSW5zcGVjdG9yQ29tcG9zaXRlU3RhdGUqKTsKLSAgICBib29sIGFzc2VydEVuYWJsZWQoRXJy
b3JTdHJpbmcqKTsKLSAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBhc3NlcnRTY3JpcHRFeGVj
dXRpb25Db250ZXh0Rm9yT3JpZ2luKEVycm9yU3RyaW5nKiwgU2VjdXJpdHlPcmlnaW4qKTsKLQot
ICAgIEluc3BlY3RvclBhZ2VBZ2VudCogbV9wYWdlQWdlbnQ7Ci0gICAgYm9vbCBtX2VuYWJsZWQ7
Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoSU5TUEVD
VE9SKSAmJiBFTkFCTEUoRklMRV9TWVNURU0pCi0jZW5kaWYgLy8gSW5zcGVjdG9yRmlsZVN5c3Rl
bUFnZW50X2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVu
ZEhvc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JGcm9udGVuZEhvc3QuY3BwCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcs
NyArMzcsNiBAQAogI2luY2x1ZGUgIkNvbnRleHRNZW51SXRlbS5oIgogI2luY2x1ZGUgIkNvbnRl
eHRNZW51Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIkNvbnRleHRNZW51UHJvdmlkZXIuaCIKLSNp
bmNsdWRlICJET01GaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiRE9NV3JhcHBlcldvcmxkLmgiCiAj
aW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCkBAIC0zMTgsMTQg
KzMxNyw2IEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRIb3N0OjpyZW1vdmVGaWxlU3kKICAgICAg
ICAgbV9jbGllbnQtPnJlbW92ZUZpbGVTeXN0ZW0oZmlsZVN5c3RlbVBhdGgpOwogfQogCi0jaWYg
RU5BQkxFKEZJTEVfU1lTVEVNKQotUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtPiBJbnNwZWN0b3JG
cm9udGVuZEhvc3Q6Omlzb2xhdGVkRmlsZVN5c3RlbShjb25zdCBTdHJpbmcmIGZpbGVTeXN0ZW1O
YW1lLCBjb25zdCBTdHJpbmcmIHJvb3RVUkwpCi17Ci0gICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCA9IG1fZnJvbnRlbmRQYWdlLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpOwotICAg
IHJldHVybiBET01GaWxlU3lzdGVtOjpjcmVhdGUoY29udGV4dCwgZmlsZVN5c3RlbU5hbWUsIEZp
bGVTeXN0ZW1UeXBlSXNvbGF0ZWQsIFVSTChQYXJzZWRVUkxTdHJpbmcsIHJvb3RVUkwpLCBBc3lu
Y0ZpbGVTeXN0ZW06OmNyZWF0ZSgpKTsKLX0KLSNlbmRpZgotCiBib29sIEluc3BlY3RvckZyb250
ZW5kSG9zdDo6aXNVbmRlclRlc3QoKQogewogICAgIHJldHVybiBtX2NsaWVudCAmJiBtX2NsaWVu
dC0+aXNVbmRlclRlc3QoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JGcm9udGVuZEhvc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRnJvbnRlbmRIb3N0LmgJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaAkod29ya2luZyBjb3B5KQpAQCAt
MzksNyArMzksNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb250ZXh0TWVudUl0
ZW07Ci1jbGFzcyBET01GaWxlU3lzdGVtOwogY2xhc3MgRXZlbnQ7CiBjbGFzcyBGcm9udGVuZE1l
bnVQcm92aWRlcjsKIGNsYXNzIEluc3BlY3RvckZyb250ZW5kQ2xpZW50OwpAQCAtODgsOSArODcs
NiBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXF1ZXN0RmlsZVN5c3RlbXMoKTsKICAgICB2b2lkIGFk
ZEZpbGVTeXN0ZW0oKTsKICAgICB2b2lkIHJlbW92ZUZpbGVTeXN0ZW0oY29uc3QgU3RyaW5nJiBm
aWxlU3lzdGVtUGF0aCk7Ci0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotICAgIFBhc3NSZWZQdHI8
RE9NRmlsZVN5c3RlbT4gaXNvbGF0ZWRGaWxlU3lzdGVtKGNvbnN0IFN0cmluZyYgZmlsZVN5c3Rl
bU5hbWUsIGNvbnN0IFN0cmluZyYgcm9vdFVSTCk7Ci0jZW5kaWYKIAogICAgIGJvb2wgaXNVbmRl
clRlc3QoKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250
ZW5kSG9zdC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckZyb250ZW5kSG9zdC5pZGwJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC03
NCw3ICs3NCw2IEBACiAgICAgdm9pZCByZXF1ZXN0RmlsZVN5c3RlbXMoKTsKICAgICB2b2lkIGFk
ZEZpbGVTeXN0ZW0oKTsKICAgICB2b2lkIHJlbW92ZUZpbGVTeXN0ZW0oRE9NU3RyaW5nIGZpbGVT
eXN0ZW1QYXRoKTsKLSAgICBbQ29uZGl0aW9uYWw9RklMRV9TWVNURU1dIERPTUZpbGVTeXN0ZW0g
aXNvbGF0ZWRGaWxlU3lzdGVtKERPTVN0cmluZyBmaWxlU3lzdGVtSWQsIERPTVN0cmluZyByZWdp
c3RlcmVkTmFtZSk7CiAKICAgICBib29sZWFuIGlzVW5kZXJUZXN0KCk7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnN0cnVtZW50aW5nQWdlbnRzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zdHJ1bWVudGluZ0FnZW50cy5jcHAJKHJldmlz
aW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnN0cnVtZW50aW5nQWdl
bnRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTksOSArNTksNiBAQCBJbnN0cnVtZW50aW5nQWdl
bnRzOjpJbnN0cnVtZW50aW5nQWdlbnRzCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKICAgICAs
IG1faW5zcGVjdG9yRGF0YWJhc2VBZ2VudCgwKQogI2VuZGlmCi0jaWYgRU5BQkxFKEZJTEVfU1lT
VEVNKQotICAgICwgbV9pbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQoMCkKLSNlbmRpZgogICAgICwg
bV9pbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQoMCkKICNpZiBFTkFCTEUoSkFWQVNDUklQ
VF9ERUJVR0dFUikKICAgICAsIG1faW5zcGVjdG9yRGVidWdnZXJBZ2VudCgwKQpAQCAtOTQsOSAr
OTEsNiBAQCB2b2lkIEluc3RydW1lbnRpbmdBZ2VudHM6OnJlc2V0KCkKICNpZiBFTkFCTEUoU1FM
X0RBVEFCQVNFKQogICAgIG1faW5zcGVjdG9yRGF0YWJhc2VBZ2VudCA9IDA7CiAjZW5kaWYKLSNp
ZiBFTkFCTEUoRklMRV9TWVNURU0pCi0gICAgbV9pbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQgPSAw
OwotI2VuZGlmCiAgICAgbV9pbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQgPSAwOwogI2lm
IEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQogICAgIG1faW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dCA9IDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zdHJ1bWVudGluZ0FnZW50
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnN0cnVtZW50aW5n
QWdlbnRzLmgJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnN0cnVtZW50aW5nQWdlbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwOCwxMSArMTA4LDYgQEAg
cHVibGljOgogICAgIHZvaWQgc2V0SW5zcGVjdG9yRGF0YWJhc2VBZ2VudChJbnNwZWN0b3JEYXRh
YmFzZUFnZW50KiBhZ2VudCkgeyBtX2luc3BlY3RvckRhdGFiYXNlQWdlbnQgPSBhZ2VudDsgfQog
I2VuZGlmCiAKLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0gICAgSW5zcGVjdG9yRmlsZVN5c3Rl
bUFnZW50KiBpbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQoKSBjb25zdCB7IHJldHVybiBtX2luc3Bl
Y3RvckZpbGVTeXN0ZW1BZ2VudDsgfQotICAgIHZvaWQgc2V0SW5zcGVjdG9yRmlsZVN5c3RlbUFn
ZW50KEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudCogYWdlbnQpIHsgbV9pbnNwZWN0b3JGaWxlU3lz
dGVtQWdlbnQgPSBhZ2VudDsgfQotI2VuZGlmCi0KICAgICBJbnNwZWN0b3JBcHBsaWNhdGlvbkNh
Y2hlQWdlbnQqIGluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudCgpIGNvbnN0IHsgcmV0dXJu
IG1faW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OyB9CiAgICAgdm9pZCBzZXRJbnNwZWN0
b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQoSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50KiBh
Z2VudCkgeyBtX2luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudCA9IGFnZW50OyB9CiAKQEAg
LTE2NSw5ICsxNjAsNiBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAgICAg
SW5zcGVjdG9yRGF0YWJhc2VBZ2VudCogbV9pbnNwZWN0b3JEYXRhYmFzZUFnZW50OwogI2VuZGlm
Ci0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotICAgIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudCog
bV9pbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ7Ci0jZW5kaWYKICAgICBJbnNwZWN0b3JBcHBsaWNh
dGlvbkNhY2hlQWdlbnQqIG1faW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OwogI2lmIEVO
QUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQogICAgIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQqIG1f
aW5zcGVjdG9yRGVidWdnZXJBZ2VudDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJp
dHlPcmlnaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlP
cmlnaW4uY3BwCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3Vy
aXR5T3JpZ2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTksMTAgKzU5LDYgQEAgYm9vbCBTZWN1
cml0eU9yaWdpbjo6c2hvdWxkVXNlSW5uZXJVUkwoYwogICAgIGlmICh1cmwucHJvdG9jb2xJcygi
YmxvYiIpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgotI2lmIEVOQUJMRShGSUxFX1NZ
U1RFTSkKLSAgICBpZiAodXJsLnByb3RvY29sSXMoImZpbGVzeXN0ZW0iKSkKLSAgICAgICAgcmV0
dXJuIHRydWU7Ci0jZW5kaWYKICAgICBVTlVTRURfUEFSQU0odXJsKTsKICAgICByZXR1cm4gZmFs
c2U7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Bc3luY0ZpbGVTeXN0ZW0uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0FzeW5jRmlsZVN5c3RlbS5j
cHAJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0FzeW5jRmls
ZVN5c3RlbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNjQgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRp
b24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0g
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25m
aWcuaCIKLSNpbmNsdWRlICJBc3luY0ZpbGVTeXN0ZW0uaCIKLQotI2lmIEVOQUJMRShGSUxFX1NZ
U1RFTSkKLQotI2luY2x1ZGUgIkFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcy5oIgotI2luY2x1ZGUg
IkV4Y2VwdGlvbkNvZGUuaCIKLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLSNpZiAhUExBVEZPUk0oR1RLKSAmJiAhUExBVEZPUk0oQkxBQ0tCRVJS
WSkgJiYgIVBMQVRGT1JNKEVGTCkKLWJvb2wgQXN5bmNGaWxlU3lzdGVtOjppc0F2YWlsYWJsZSgp
Ci17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXZvaWQg
QXN5bmNGaWxlU3lzdGVtOjpvcGVuRmlsZVN5c3RlbShjb25zdCBTdHJpbmcmIGJhc2VQYXRoLCBj
b25zdCBTdHJpbmcmIHN0b3JhZ2VJZGVudGlmaWVyLCBGaWxlU3lzdGVtVHlwZSwgYm9vbCwgUGFz
c093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKLXsKLSAgICBub3RJ
bXBsZW1lbnRlZCgpOwotICAgIGNhbGxiYWNrcy0+ZGlkRmFpbChOT1RfU1VQUE9SVEVEX0VSUik7
Ci19Ci0KLXZvaWQgQXN5bmNGaWxlU3lzdGVtOjpkZWxldGVGaWxlU3lzdGVtKGNvbnN0IFN0cmlu
ZyYgYmFzZVBhdGgsIGNvbnN0IFN0cmluZyYgc3RvcmFnZUlkZW50aWZpZXIsIEZpbGVTeXN0ZW1U
eXBlIHR5cGUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3Mp
Ci17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICBjYWxsYmFja3MtPmRpZEZhaWwoTk9UX1NV
UFBPUlRFRF9FUlIpOwotfQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlCi0KLSNlbmRpZiAvLyBF
TkFCTEUoRklMRV9TWVNURU0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Bc3luY0Zp
bGVTeXN0ZW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Bc3luY0Zp
bGVTeXN0ZW0uaAkocmV2aXNpb24gMTU2NjkxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
QXN5bmNGaWxlU3lzdGVtLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsMTQ1ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlz
dHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwot
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVm
IEFzeW5jRmlsZVN5c3RlbV9oCi0jZGVmaW5lIEFzeW5jRmlsZVN5c3RlbV9oCi0KLSNpZiBFTkFC
TEUoRklMRV9TWVNURU0pCi0KLSNpbmNsdWRlICJGaWxlU3lzdGVtVHlwZS5oIgotI2luY2x1ZGUg
IlVSTC5oIgotI2luY2x1ZGUgIlRpbWVyLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4K
LSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1jbGFzcyBBc3luY0ZpbGVTeXN0ZW07Ci1jbGFzcyBBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M7
Ci1jbGFzcyBBc3luY0ZpbGVXcml0ZXJDbGllbnQ7Ci0KLS8vIFRoaXMgY2xhc3MgcHJvdmlkZXMg
YXN5bmMgaW50ZXJmYWNlIGZvciBwbGF0Zm9ybS1zcGVjaWZpYyBmaWxlIHN5c3RlbSBpbXBsZW1l
bnRhdGlvbi4gIE5vdGUgdGhhdCBhbGwgdGhlIG1ldGhvZHMgdGFrZSBwbGF0Zm9ybSBwYXRocy4K
LWNsYXNzIEFzeW5jRmlsZVN5c3RlbSB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQXN5bmNG
aWxlU3lzdGVtKTsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5Bc3luY0ZpbGVTeXN0ZW0oKSB7IH0K
LQotICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgeyB9Ci0gICAgdmlydHVhbCBib29sIGhhc1BlbmRp
bmdBY3Rpdml0eSgpIHsgcmV0dXJuIGZhbHNlOyB9Ci0KLSAgICBzdGF0aWMgYm9vbCBpc0F2YWls
YWJsZSgpOwotCi0gICAgLy8gU3ViY2xhc3MgbXVzdCBpbXBsZW1lbnQgdGhpcyBpZiBpdCBzdXBw
b3J0cyBzeW5jaHJvbm91cyBvcGVyYXRpb25zLgotICAgIC8vIFRoaXMgc2hvdWxkIHJldHVybiBm
YWxzZSBpZiB0aGVyZSBhcmUgbm8gcGVuZGluZyBvcGVyYXRpb25zLgotICAgIHZpcnR1YWwgYm9v
bCB3YWl0Rm9yT3BlcmF0aW9uVG9Db21wbGV0ZSgpIHsgcmV0dXJuIGZhbHNlOyB9Ci0KLSAgICAv
LyBDcmVhdGVzIGFuZCByZXR1cm5zIGEgbmV3IHBsYXRmb3JtLXNwZWNpZmljIEFzeW5jRmlsZVN5
c3RlbSBpbnN0YW5jZSBpZiB0aGUgcGxhdGZvcm0gaGFzIGl0cyBvd24gaW1wbGVtZW50YXRpb24u
Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtPiBjcmVhdGUoKTsKLQotICAg
IC8vIE9wZW5zIGEgbmV3IGZpbGUgc3lzdGVtLiBUaGUgY3JlYXRlIHBhcmFtZXRlciBzcGVjaWZp
ZXMgd2hldGhlciBvciBub3QgdG8gY3JlYXRlIHRoZSBwYXRoIGlmIGl0IGRvZXMgbm90IGFscmVh
ZHkgZXhpc3RzLgotICAgIHN0YXRpYyB2b2lkIG9wZW5GaWxlU3lzdGVtKGNvbnN0IFN0cmluZyYg
YmFzZVBhdGgsIGNvbnN0IFN0cmluZyYgc3RvcmFnZUlkZW50aWZpZXIsIEZpbGVTeXN0ZW1UeXBl
LCBib29sIGNyZWF0ZSwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKLQot
ICAgIC8vIERlbGV0ZXMgdGhlIGZpbGUgc3lzdGVtLgotICAgIHN0YXRpYyB2b2lkIGRlbGV0ZUZp
bGVTeXN0ZW0oY29uc3QgU3RyaW5nJiBiYXNlUGF0aCwgY29uc3QgU3RyaW5nJiBzdG9yYWdlSWRl
bnRpZmllciwgRmlsZVN5c3RlbVR5cGUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJh
Y2tzPik7Ci0KLSAgICAvLyBNb3ZlcyBhIGZpbGUgb3IgZGlyZWN0b3J5IGZyb20gc3JjUGF0aCB0
byBkZXN0UGF0aC4KLSAgICAvLyBBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M6OmRpZFN1Y2NlZWQo
KSBpcyBjYWxsZWQgd2hlbiB0aGUgb3BlcmF0aW9uIGlzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHku
Ci0gICAgLy8gQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzOjpkaWRGYWlsKCkgaXMgY2FsbGVkIG90
aGVyd2lzZS4KLSAgICB2aXJ0dWFsIHZvaWQgbW92ZShjb25zdCBVUkwmIHNyY1BhdGgsIGNvbnN0
IFVSTCYgZGVzdFBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPikgPSAw
OwotCi0gICAgLy8gQ29waWVzIGEgZmlsZSBvciBkaXJlY3RvcnkgZnJvbSBzcmNQYXRoIHRvIGRl
c3RQYXRoLgotICAgIC8vIEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrczo6ZGlkU3VjY2VlZCgpIGlz
IGNhbGxlZCB3aGVuIHRoZSBvcGVyYXRpb24gaXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseS4KLSAg
ICAvLyBBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M6OmRpZEZhaWwoKSBpcyBjYWxsZWQgb3RoZXJ3
aXNlLgotICAgIHZpcnR1YWwgdm9pZCBjb3B5KGNvbnN0IFVSTCYgc3JjUGF0aCwgY29uc3QgVVJM
JiBkZXN0UGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KSA9IDA7Ci0K
LSAgICAvLyBEZWxldGVzIGEgZmlsZSBvciBkaXJlY3RvcnkgYXQgYSBnaXZlbiBwYXRoLgotICAg
IC8vIEl0IGlzIGFuIGVycm9yIHRvIHRyeSB0byByZW1vdmUgYSBkaXJlY3RvcnkgdGhhdCBpcyBu
b3QgZW1wdHkuCi0gICAgLy8gQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzOjpkaWRTdWNjZWVkKCkg
aXMgY2FsbGVkIHdoZW4gdGhlIG9wZXJhdGlvbiBpcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5Lgot
ICAgIC8vIEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrczo6ZGlkRmFpbCgpIGlzIGNhbGxlZCBvdGhl
cndpc2UuCi0gICAgdmlydHVhbCB2b2lkIHJlbW92ZShjb25zdCBVUkwmIHBhdGgsIFBhc3NPd25Q
dHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPikgPSAwOwotCi0gICAgLy8gUmVjdXJzaXZlbHkg
ZGVsZXRlcyBhIGRpcmVjdG9yeSBhdCBhIGdpdmVuIHBhdGguCi0gICAgLy8gQXN5bmNGaWxlU3lz
dGVtQ2FsbGJhY2tzOjpkaWRTdWNjZWVkKCkgaXMgY2FsbGVkIHdoZW4gdGhlIG9wZXJhdGlvbiBp
cyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LgotICAgIC8vIEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNr
czo6ZGlkRmFpbCgpIGlzIGNhbGxlZCBvdGhlcndpc2UuCi0gICAgdmlydHVhbCB2b2lkIHJlbW92
ZVJlY3Vyc2l2ZWx5KGNvbnN0IFVSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1D
YWxsYmFja3M+KSA9IDA7Ci0KLSAgICAvLyBSZXRyaWV2ZXMgdGhlIG1ldGFkYXRhIGluZm9ybWF0
aW9uIG9mIHRoZSBmaWxlIG9yIGRpcmVjdG9yeSBhdCBhIGdpdmVuIHBhdGguCi0gICAgLy8gQXN5
bmNGaWxlU3lzdGVtQ2FsbGJhY2tzOjpkaWRSZWFkTWV0YWRhdGEoKSBpcyBjYWxsZWQgd2hlbiB0
aGUgb3BlcmF0aW9uIGlzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuCi0gICAgLy8gQXN5bmNGaWxl
U3lzdGVtQ2FsbGJhY2tzOjpkaWRGYWlsKCkgaXMgY2FsbGVkIG90aGVyd2lzZS4KLSAgICB2aXJ0
dWFsIHZvaWQgcmVhZE1ldGFkYXRhKGNvbnN0IFVSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0Zp
bGVTeXN0ZW1DYWxsYmFja3M+KSA9IDA7Ci0KLSAgICAvLyBDcmVhdGVzIGEgZmlsZSBhdCBhIGdp
dmVuIHBhdGguICBJZiBleGNsdXNpdmUgZmxhZyBpcyB0cnVlLCBpdCBmYWlscyBpZiB0aGUgcGF0
aCBhbHJlYWR5IGV4aXN0cy4KLSAgICAvLyBBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M6OmRpZFN1
Y2NlZWQoKSBpcyBjYWxsZWQgd2hlbiB0aGUgb3BlcmF0aW9uIGlzIGNvbXBsZXRlZCBzdWNjZXNz
ZnVsbHkuCi0gICAgLy8gQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzOjpkaWRGYWlsKCkgaXMgY2Fs
bGVkIG90aGVyd2lzZS4KLSAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlRmlsZShjb25zdCBVUkwmIHBh
dGgsIGJvb2wgZXhjbHVzaXZlLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4p
ID0gMDsKLQotICAgIC8vIENyZWF0ZXMgYSBkaXJlY3RvcnkgYXQgYSBnaXZlbiBwYXRoLiAgSWYg
ZXhjbHVzaXZlIGZsYWcgaXMgdHJ1ZSwgaXQgZmFpbHMgaWYgdGhlIHBhdGggYWxyZWFkeSBleGlz
dHMuCi0gICAgLy8gQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzOjpkaWRTdWNjZWVkKCkgaXMgY2Fs
bGVkIHdoZW4gdGhlIG9wZXJhdGlvbiBpcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LgotICAgIC8v
IEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrczo6ZGlkRmFpbCgpIGlzIGNhbGxlZCBvdGhlcndpc2Uu
Ci0gICAgdmlydHVhbCB2b2lkIGNyZWF0ZURpcmVjdG9yeShjb25zdCBVUkwmIHBhdGgsIGJvb2wg
ZXhjbHVzaXZlLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pID0gMDsKLQot
ICAgIC8vIENoZWNrcyBpZiBhIGZpbGUgZXhpc3RzIGF0IGEgZ2l2ZW4gcGF0aC4KLSAgICAvLyBB
c3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M6OmRpZFN1Y2NlZWQoKSBpcyBjYWxsZWQgaWYgdGhlIGZp
bGUgZXhpc3RzLgotICAgIC8vIEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrczo6ZGlkRmFpbCgpIGlz
IGNhbGxlZCBvdGhlcndpc2UuCi0gICAgdmlydHVhbCB2b2lkIGZpbGVFeGlzdHMoY29uc3QgVVJM
JiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pID0gMDsKLQotICAg
IC8vIENoZWNrcyBpZiBhIGRpcmVjdG9yeSBleGlzdHMgYXQgYSBnaXZlbiBwYXRoLgotICAgIC8v
IEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrczo6ZGlkU3VjY2VlZCgpIGlzIGNhbGxlZCBpZiB0aGUg
ZGlyZWN0b3J5IGV4aXN0cy4KLSAgICAvLyBBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M6OmRpZEZh
aWwoKSBpcyBjYWxsZWQgb3RoZXJ3aXNlLgotICAgIHZpcnR1YWwgdm9pZCBkaXJlY3RvcnlFeGlz
dHMoY29uc3QgVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4p
ID0gMDsKLQotICAgIC8vIFJlYWRzIGRpcmVjdG9yeSBlbnRyaWVzIG9mIGEgZ2l2ZW4gZGlyZWN0
b3J5IGF0IHBhdGguCi0gICAgLy8gQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzOjpkaWRSZWFkRGly
ZWN0b3J5RW50cnkoKSBpcyBjYWxsZWQgd2hlbiBlYWNoIGRpcmVjdG9yeSBlbnRyeSBpcyBjYWxs
ZWQuIEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrczo6ZGlkUmVhZERpcmVjdG9yeUVudHJpZXMoKSBp
cyBjYWxsZWQgYWZ0ZXIgYSBjaHVuayBvZiBkaXJlY3RvcnkgZW50cmllcyBoYXZlIGJlZW4gcmVh
ZC4KLSAgICAvLyBBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M6OmRpZEZhaWwoKSBpcyB3aGVuIHRo
ZXJlIGlzIGFuIGVycm9yLgotICAgIHZpcnR1YWwgdm9pZCByZWFkRGlyZWN0b3J5KGNvbnN0IFVS
TCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KSA9IDA7Ci0KLSAg
ICAvLyBDcmVhdGVzIGFuIEFzeW5jRmlsZVdyaXRlciBmb3IgYSBnaXZlbiBmaWxlIHBhdGguCi0g
ICAgLy8gQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzOjpkaWRDcmVhdGVGaWxlV3JpdGVyKCkgaXMg
Y2FsbGVkIHdoZW4gYW4gQXN5bmNGaWxlV3JpdGVyIGlzIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5Lgot
ICAgIC8vIEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrczo6ZGlkRmFpbCgpIGlzIGNhbGxlZCBvdGhl
cndpc2UuCi0gICAgdmlydHVhbCB2b2lkIGNyZWF0ZVdyaXRlcihBc3luY0ZpbGVXcml0ZXJDbGll
bnQqLCBjb25zdCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tz
PikgPSAwOwotCi0gICAgLy8gQ3JlYXRlcyBhIHNuYXBzaG90IGZpbGUgYW5kIHJlYWQgaXRzIG1l
dGFkYXRhIGZvciBhIG5ldyBGaWxlIG9iamVjdC4KLSAgICAvLyBJbiBsb2NhbCBmaWxlc3lzdGVt
IGNhc2VzIHRoZSBiYWNrZW5kIG1heSBzaW1wbHkgcmV0dXJuIHRoZSBtZXRhZGF0YSBvZiB0aGUg
ZmlsZSBpdHNlbGYgKGFzIHdlbGwgYXMgcmVhZE1ldGFkYXRhIGRvZXMpLAotICAgIC8vIHdoaWxl
IGluIHJlbW90ZSBmaWxlc3lzdGVtIGNhc2UgdGhlIGJhY2tlbmQgbWF5IGRvd25sb2FkIHRoZSBm
aWxlIGludG8gYSB0ZW1wb3Jhcnkgc25hcHNob3QgZmlsZSBhbmQgcmV0dXJuIHRoZSBtZXRhZGF0
YSBvZiB0aGUgdGVtcG9yYXJ5IGZpbGUuCi0gICAgLy8gQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tz
OjpkaWRSZWFkTWV0YWRhdGEoKSBpcyBjYWxsZWQgd2hlbiB0aGUgbWV0YWRhdGEgZm9yIHRoZSBz
bmFwc2hvdCBmaWxlIGlzIHN1Y2Nlc3NmdWxseSByZXR1cm5lZC4KLSAgICAvLyBBc3luY0ZpbGVT
eXN0ZW1DYWxsYmFja3M6OmRpZEZhaWwoKSBpcyBjYWxsZWQgb3RoZXJ3aXNlLgotICAgIC8vCi0g
ICAgLy8gTm90ZTogdGhlIHJldHVybmVkIG1ldGFkYXRhIGluZm8gaXMgY2FjaGVkIGluIHRoZSBG
aWxlIG9iamVjdCBmb3Igbm9uLXJlZ3VsYXIgZmlsZXN5c3RlbSB0eXBlcyAobmVpdGhlciBUZW1w
b3Jhcnkgbm9yIFBlcnNpc3RlbnQpLiBUaGUgcG9ydCBjb3VsZCByZXR1cm4gdmFsaWQgbWV0YWRh
dGEgaWYgaXQgd2FudHMgRmlsZSBvYmplY3QgdG8gY2FjaGUgbWV0YWRhdGEgKGUuZy4gaWYgdGhl
IGZpbGUgYm9keSBpcyBvbiBhIHJlbW90ZSBzZXJ2ZXIpLCBidXQgb3RoZXJ3aXNlIHNob3VsZCBO
T1QgcmV0dXJuIHZhbGlkIG1ldGFkYXRhLgotICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVTbmFwc2hv
dEZpbGVBbmRSZWFkTWV0YWRhdGEoY29uc3QgVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmls
ZVN5c3RlbUNhbGxiYWNrcz4pID0gMDsKLQotcHJvdGVjdGVkOgotICAgIEFzeW5jRmlsZVN5c3Rl
bSgpIHsgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxF
KEZJTEVfU1lTVEVNKQotCi0jZW5kaWYgLy8gQXN5bmNGaWxlU3lzdGVtX2gKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0FzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0FzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcy5oCShy
ZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Bc3luY0ZpbGVTeXN0
ZW1DYWxsYmFja3MuaAkod29ya2luZyBjb3B5KQpAQCAtMSw4MCArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1
dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
LSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBBc3lu
Y0ZpbGVTeXN0ZW1DYWxsYmFja3NfaAotI2RlZmluZSBBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3Nf
aAotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jaW5jbHVkZSAiQXN5bmNGaWxlU3lzdGVt
LmgiCi0jaW5jbHVkZSAiQXN5bmNGaWxlV3JpdGVyLmgiCi0jaW5jbHVkZSAiQmxvYkRhdGEuaCIK
LSNpbmNsdWRlICJGaWxlTWV0YWRhdGEuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBBc3luY0ZpbGVTeXN0ZW1DYWxsYmFj
a3MgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyk7
Ci1wdWJsaWM6Ci0gICAgQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKCkgeyB9Ci0KLSAgICAvLyBD
YWxsZWQgd2hlbiBhIHJlcXVlc3RlZCBvcGVyYXRpb24gaXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxs
eS4KLSAgICB2aXJ0dWFsIHZvaWQgZGlkU3VjY2VlZCgpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7
IH0KLQotICAgIC8vIENhbGxlZCB3aGVuIGEgcmVxdWVzdGVkIGZpbGUgc3lzdGVtIGlzIG9wZW5l
ZC4KLSAgICB2aXJ0dWFsIHZvaWQgZGlkT3BlbkZpbGVTeXN0ZW0oY29uc3QgU3RyaW5nJiAvKiBu
YW1lICovLCBjb25zdCBVUkwmIC8qIHJvb3RVUkwgKi8sIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lz
dGVtPikgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQotCi0gICAgLy8gQ2FsbGVkIHdoZW4gYSBm
aWxlIG1ldGFkYXRhIGlzIHJlYWQgc3VjY2Vzc2Z1bGx5LgotICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZWFkTWV0YWRhdGEoY29uc3QgRmlsZU1ldGFkYXRhJikgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsg
fQotCi0gICAgLy8gQ2FsbGVkIHdoZW4gYSBzbmFwc2hvdCBmaWxlIGlzIGNyZWF0ZWQgc3VjY2Vz
c2Z1bGx5LgotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVTbmFwc2hvdEZpbGUoY29uc3QgRmls
ZU1ldGFkYXRhJiwgUGFzc1JlZlB0cjxCbG9iRGF0YUhhbmRsZT4gLyogc25hcHNob3QgKi8pIHsg
QVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KLQotICAgIC8vIENhbGxlZCB3aGVuIGEgZGlyZWN0b3J5
IGVudHJ5IGlzIHJlYWQuCi0gICAgdmlydHVhbCB2b2lkIGRpZFJlYWREaXJlY3RvcnlFbnRyeShj
b25zdCBTdHJpbmcmIC8qIG5hbWUgKi8sIGJvb2wgLyogaXNEaXJlY3RvcnkgKi8pIHsgQVNTRVJU
X05PVF9SRUFDSEVEKCk7IH0KLQotICAgIC8vIENhbGxlZCBhZnRlciBhIGNodW5rIG9mIGRpcmVj
dG9yeSBlbnRyaWVzIGhhdmUgYmVlbiByZWFkIChpLmUuIGluZGljYXRlcyBpdCdzIGdvb2QgdGlt
ZSB0byBjYWxsIGJhY2sgdG8gdGhlIGFwcGxpY2F0aW9uKS4gSWYgaGFzTW9yZSBpcyB0cnVlIHRo
ZXJlIGNhbiBiZSBtb3JlIGNodW5rcy4KLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVhZERpcmVjdG9y
eUVudHJpZXMoYm9vbCAvKiBoYXNNb3JlICovKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Ci0K
LSAgICAvLyBDYWxsZWQgd2hlbiBhbiBBc3luY0ZpbGVXcnRlciBoYXMgYmVlbiBjcmVhdGVkIHN1
Y2Nlc3NmdWxseS4KLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRmlsZVdyaXRlcihQYXNzT3du
UHRyPEFzeW5jRmlsZVdyaXRlcj4sIGxvbmcgbG9uZyAvKiBsZW5ndGggKi8pIHsgQVNTRVJUX05P
VF9SRUFDSEVEKCk7IH0KLQotICAgIC8vIENhbGxlZCB3aGVuIHRoZXJlIHdhcyBhbiBlcnJvci4K
LSAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChpbnQgY29kZSkgPSAwOwotCi0gICAgdmlydHVhbCB+
QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKCkgeyB9Ci19OwotCi19IC8vIG5hbWVzcGFjZQotCi0j
ZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jZW5kaWYgLy8gQXN5bmNGaWxlU3lzdGVt
Q2FsbGJhY2tzX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5jcHAJKHJldmlz
aW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzAsMTMgKzcwLDYgQEAgaW50IERyYWdEYXRhOjptb2RpZmllcktleVN0
YXRlKCkgY29uc3QKICAgICByZXR1cm4ga2V5U3RhdGU7CiB9CiAKLSNpZiBFTkFCTEUoRklMRV9T
WVNURU0pCi1TdHJpbmcgRHJhZ0RhdGE6OmRyb3BwZWRGaWxlU3lzdGVtSWQoKSBjb25zdAotewot
ICAgIHJldHVybiBTdHJpbmcoKTsKLX0KLSNlbmRpZgotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5oCShyZXZpc2lvbiAxNTY2OTEp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMjAsMTAgKzEyMCw2IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKCkgY29uc3QgeyByZXR1cm4gbV9wYXN0ZWJvYXJkTmFtZTsgfQogI2VuZGlmCiAKLSNpZiBF
TkFCTEUoRklMRV9TWVNURU0pCi0gICAgU3RyaW5nIGRyb3BwZWRGaWxlU3lzdGVtSWQoKSBjb25z
dDsKLSNlbmRpZgotCiAjaWYgUExBVEZPUk0oUVQpIHx8IFBMQVRGT1JNKEdUSykKICAgICAvLyBU
aGlzIGNvbnN0cnVjdG9yIHNob3VsZCB1c2VkIG9ubHkgYnkgV2ViS2l0MiBJUEMgYmVjYXVzZSBE
cmFnRGF0YQogICAgIC8vIGlzIGluaXRpYWxpemVkIGJ5IHRoZSBkZWNvZGVyIGFuZCBub3QgaW4g
dGhlIGNvbnN0cnVjdG9yLgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZU1ldGFk
YXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZU1ldGFkYXRh
LmgJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVNZXRh
ZGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MywxMCArNTMsNiBAQCBzdHJ1Y3QgRmlsZU1ldGFk
YXRhIHsKIAogICAgIFR5cGUgdHlwZTsKIAotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLSAgICBT
dHJpbmcgcGxhdGZvcm1QYXRoOwotI2VuZGlmCi0KICAgICBGaWxlTWV0YWRhdGEoKSA6IG1vZGlm
aWNhdGlvblRpbWUoaW52YWxpZEZpbGVUaW1lKCkpLCBsZW5ndGgoLTEpLCB0eXBlKFR5cGVVbmtu
b3duKSB7IH0KIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NjaGVtZVJlZ2lz
dHJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY2hlbWVSZWdp
c3RyeS5jcHAJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
aGVtZVJlZ2lzdHJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAzLDkgKzEwMyw2IEBAIHN0YXRp
YyBVUkxTY2hlbWVzTWFwJiBjYW5EaXNwbGF5T25seUlmQ2EKICNpZiBFTkFCTEUoQkxPQikKICAg
ICBpZiAoY2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3RTY2hlbWVzLmlzRW1wdHkoKSkgewogICAg
ICAgICBjYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdFNjaGVtZXMuYWRkKCJibG9iIik7Ci0jaWYg
RU5BQkxFKEZJTEVfU1lTVEVNKQotICAgICAgICBjYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdFNj
aGVtZXMuYWRkKCJmaWxlc3lzdGVtIik7Ci0jZW5kaWYKICAgICB9CiAjZW5kaWYgLy8gRU5BQkxF
KEJMT0IpCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQXN5bmNG
aWxlU3lzdGVtQmxhY2tCZXJyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYmxhY2tiZXJyeS9Bc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5LmNwcAkocmV2aXNpb24g
MTU2NjkxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Bc3luY0ZpbGVT
eXN0ZW1CbGFja0JlcnJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSwxNTIgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxMyBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGVzc2VyIEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0gKiBM
aWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVl
Ci0gKiBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQQotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0jaW5jbHVkZSAiQXN5bmNGaWxlU3lz
dGVtQmxhY2tCZXJyeS5oIgotCi0jaW5jbHVkZSAiQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzLmgi
Ci0jaW5jbHVkZSAiQXN5bmNGaWxlV3JpdGVyQmxhY2tCZXJyeS5oIgotI2luY2x1ZGUgIkFzeW5j
RmlsZVdyaXRlckNsaWVudC5oIgotI2luY2x1ZGUgIkRPTUZpbGVTeXN0ZW1CYXNlLmgiCi0jaW5j
bHVkZSAiRXhjZXB0aW9uQ29kZS5oIgotI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0jaW5j
bHVkZSAiUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MuaCIKLSNpbmNsdWRlICJTY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKLSNpbmNs
dWRlICJVUkwuaCIKLQotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLSNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotYm9vbCBB
c3luY0ZpbGVTeXN0ZW06OmlzQXZhaWxhYmxlKCkKLXsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQot
Ly8gV2UgZG9uJ3QgdXNlIHRoaXMgb25lIQotUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+IEFz
eW5jRmlsZVN5c3RlbTo6Y3JlYXRlKCkKLXsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICByZXR1cm4gUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+KCk7Ci19Ci0KLS8vIFdlIGRvbid0
IHVzZSB0aGlzIG9uZSEKLXZvaWQgQXN5bmNGaWxlU3lzdGVtOjpvcGVuRmlsZVN5c3RlbShjb25z
dCBTdHJpbmcmIGJhc2VQYXRoLCBjb25zdCBTdHJpbmcmIHN0b3JhZ2VJZGVudGlmaWVyLCBGaWxl
U3lzdGVtVHlwZSwgYm9vbCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNh
bGxiYWNrcykKLXsKLSAgICBVTlVTRURfUEFSQU0oYmFzZVBhdGgpOwotICAgIFVOVVNFRF9QQVJB
TShzdG9yYWdlSWRlbnRpZmllcik7Ci0gICAgVU5VU0VEX1BBUkFNKGNhbGxiYWNrcyk7Ci0gICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLXZvaWQgQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJy
eTo6b3BlbkZpbGVTeXN0ZW0oY29uc3QgVVJMJiByb290VVJMLCBjb25zdCBTdHJpbmcmIGJhc2VQ
YXRoLCBjb25zdCBTdHJpbmcmIHN0b3JhZ2VJZGVudGlmaWVyLCBGaWxlU3lzdGVtVHlwZSB0eXBl
LCBsb25nIGxvbmcgc2l6ZSwgYm9vbCBjcmVhdGUsIGludCBwbGF5ZXJJZCwgUGFzc093blB0cjxB
c3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKLXsKLSAgICBCbGFja0JlcnJ5OjpQ
bGF0Zm9ybTo6V2ViRmlsZVN5c3RlbTo6b3BlbkZpbGVTeXN0ZW0oQmxhY2tCZXJyeTo6UGxhdGZv
cm06OndlYktpdFRocmVhZE1lc3NhZ2VDbGllbnQoKSwgYmFzZVBhdGgsIHN0b3JhZ2VJZGVudGlm
aWVyLCBzdGF0aWNfY2FzdDxCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6V2ViRmlsZVN5c3RlbTo6VHlw
ZT4odHlwZSksIHNpemUsIGNyZWF0ZSwgbmV3IFBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJh
Y2tzKGNhbGxiYWNrcywgcm9vdFVSTCksIHBsYXllcklkKTsKLX0KLQotdm9pZCBBc3luY0ZpbGVT
eXN0ZW06OmRlbGV0ZUZpbGVTeXN0ZW0oY29uc3QgU3RyaW5nJiBiYXNlUGF0aCwgY29uc3QgU3Ry
aW5nJiBzdG9yYWdlSWRlbnRpZmllciwgRmlsZVN5c3RlbVR5cGUgdHlwZSwgUGFzc093blB0cjxB
c3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKLXsKLSAgICBCbGFja0JlcnJ5OjpQ
bGF0Zm9ybTo6V2ViRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZVN5c3RlbShCbGFja0JlcnJ5OjpQbGF0
Zm9ybTo6d2ViS2l0VGhyZWFkTWVzc2FnZUNsaWVudCgpLCBiYXNlUGF0aCwgc3RvcmFnZUlkZW50
aWZpZXIsIHN0YXRpY19jYXN0PEJsYWNrQmVycnk6OlBsYXRmb3JtOjpXZWJGaWxlU3lzdGVtOjpU
eXBlPih0eXBlKSwgbmV3IFBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKGNhbGxiYWNr
cykpOwotfQotCi1Bc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpBc3luY0ZpbGVTeXN0ZW1CbGFj
a0JlcnJ5KFBhc3NPd25QdHI8QmxhY2tCZXJyeTo6UGxhdGZvcm06OldlYkZpbGVTeXN0ZW0+IHBs
YXRmb3JtRmlsZVN5c3RlbSkKLSAgICA6IEFzeW5jRmlsZVN5c3RlbSgpIC8vIEZJWE1FOiB0eXBl
ID8/PwotICAgICwgbV9wbGF0Zm9ybUZpbGVTeXN0ZW0ocGxhdGZvcm1GaWxlU3lzdGVtKQotewot
fQotCi1Bc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5Ojp+QXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJy
eSgpCi17Ci19Ci0KLXZvaWQgQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6bW92ZShjb25zdCBV
UkwmIHNvdXJjZVBhdGgsIGNvbnN0IFVSTCYgZGVzdGluYXRpb25QYXRoLCBQYXNzT3duUHRyPEFz
eW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQotewotICAgIG1fcGxhdGZvcm1GaWxl
U3lzdGVtLT5tb3ZlKGZpbGVTeXN0ZW1VUkxUb1BhdGgoc291cmNlUGF0aCksIGZpbGVTeXN0ZW1V
UkxUb1BhdGgoZGVzdGluYXRpb25QYXRoKSwgbmV3IFBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2Fs
bGJhY2tzKGNhbGxiYWNrcykpOwotfQotCi12b2lkIEFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6
OmNvcHkoY29uc3QgVVJMJiBzb3VyY2VQYXRoLCBjb25zdCBVUkwmIGRlc3RpbmF0aW9uUGF0aCwg
UGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKLXsKLSAgICBt
X3BsYXRmb3JtRmlsZVN5c3RlbS0+Y29weShmaWxlU3lzdGVtVVJMVG9QYXRoKHNvdXJjZVBhdGgp
LCBmaWxlU3lzdGVtVVJMVG9QYXRoKGRlc3RpbmF0aW9uUGF0aCksIG5ldyBQbGF0Zm9ybUFzeW5j
RmlsZVN5c3RlbUNhbGxiYWNrcyhjYWxsYmFja3MpKTsKLX0KLQotdm9pZCBBc3luY0ZpbGVTeXN0
ZW1CbGFja0JlcnJ5OjpyZW1vdmUoY29uc3QgVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmls
ZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQotewotICAgIG1fcGxhdGZvcm1GaWxlU3lzdGVt
LT5yZW1vdmUoZmlsZVN5c3RlbVVSTFRvUGF0aChwYXRoKSwgbmV3IFBsYXRmb3JtQXN5bmNGaWxl
U3lzdGVtQ2FsbGJhY2tzKGNhbGxiYWNrcykpOwotfQotCi12b2lkIEFzeW5jRmlsZVN5c3RlbUJs
YWNrQmVycnk6OnJlbW92ZVJlY3Vyc2l2ZWx5KGNvbnN0IFVSTCYgcGF0aCwgUGFzc093blB0cjxB
c3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKLXsKLSAgICBtX3BsYXRmb3JtRmls
ZVN5c3RlbS0+cmVtb3ZlUmVjdXJzaXZlbHkoZmlsZVN5c3RlbVVSTFRvUGF0aChwYXRoKSwgbmV3
IFBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKGNhbGxiYWNrcykpOwotfQotCi12b2lk
IEFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OnJlYWRNZXRhZGF0YShjb25zdCBVUkwmIHBhdGgs
IFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCi17Ci0gICAg
bV9wbGF0Zm9ybUZpbGVTeXN0ZW0tPnJlYWRNZXRhZGF0YShmaWxlU3lzdGVtVVJMVG9QYXRoKHBh
dGgpLCBuZXcgUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MoY2FsbGJhY2tzKSk7Ci19
Ci0KLXZvaWQgQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6Y3JlYXRlRmlsZShjb25zdCBVUkwm
IHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNr
cz4gY2FsbGJhY2tzKQotewotICAgIG1fcGxhdGZvcm1GaWxlU3lzdGVtLT5jcmVhdGVGaWxlKGZp
bGVTeXN0ZW1VUkxUb1BhdGgocGF0aCksIGV4Y2x1c2l2ZSwgbmV3IFBsYXRmb3JtQXN5bmNGaWxl
U3lzdGVtQ2FsbGJhY2tzKGNhbGxiYWNrcykpOwotfQotCi12b2lkIEFzeW5jRmlsZVN5c3RlbUJs
YWNrQmVycnk6OmNyZWF0ZURpcmVjdG9yeShjb25zdCBVUkwmIHBhdGgsIGJvb2wgZXhjbHVzaXZl
LCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQotewotICAg
IG1fcGxhdGZvcm1GaWxlU3lzdGVtLT5jcmVhdGVEaXJlY3RvcnkoZmlsZVN5c3RlbVVSTFRvUGF0
aChwYXRoKSwgZXhjbHVzaXZlLCBuZXcgUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3Mo
Y2FsbGJhY2tzKSk7Ci19Ci0KLXZvaWQgQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6ZmlsZUV4
aXN0cyhjb25zdCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tz
PiBjYWxsYmFja3MpCi17Ci0gICAgbV9wbGF0Zm9ybUZpbGVTeXN0ZW0tPmZpbGVFeGlzdHMoZmls
ZVN5c3RlbVVSTFRvUGF0aChwYXRoKSwgbmV3IFBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJh
Y2tzKGNhbGxiYWNrcykpOwotfQotCi12b2lkIEFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OmRp
cmVjdG9yeUV4aXN0cyhjb25zdCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVt
Q2FsbGJhY2tzPiBjYWxsYmFja3MpCi17Ci0gICAgbV9wbGF0Zm9ybUZpbGVTeXN0ZW0tPmRpcmVj
dG9yeUV4aXN0cyhmaWxlU3lzdGVtVVJMVG9QYXRoKHBhdGgpLCBuZXcgUGxhdGZvcm1Bc3luY0Zp
bGVTeXN0ZW1DYWxsYmFja3MoY2FsbGJhY2tzKSk7Ci19Ci0KLXZvaWQgQXN5bmNGaWxlU3lzdGVt
QmxhY2tCZXJyeTo6cmVhZERpcmVjdG9yeShjb25zdCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5
bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCi17Ci0gICAgbV9wbGF0Zm9ybUZpbGVT
eXN0ZW0tPnJlYWREaXJlY3RvcnkoZmlsZVN5c3RlbVVSTFRvUGF0aChwYXRoKSwgbmV3IFBsYXRm
b3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKGNhbGxiYWNrcykpOwotfQotCi12b2lkIEFzeW5j
RmlsZVN5c3RlbUJsYWNrQmVycnk6OmNyZWF0ZVdyaXRlcihBc3luY0ZpbGVXcml0ZXJDbGllbnQq
IGNsaWVudCwgY29uc3QgVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxi
YWNrcz4gY2FsbGJhY2tzKQotewotICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpXZWJGaWxlV3Jp
dGVyOjpjcmVhdGVXcml0ZXIobV9wbGF0Zm9ybUZpbGVTeXN0ZW0uZ2V0KCksIGZpbGVTeXN0ZW1V
UkxUb1BhdGgocGF0aCksIG5ldyBQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyhjYWxs
YmFja3MsIGNsaWVudCkpOwotfQotCi12b2lkIEFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OmNy
ZWF0ZVNuYXBzaG90RmlsZUFuZFJlYWRNZXRhZGF0YShjb25zdCBVUkwmIHBhdGgsIFBhc3NPd25Q
dHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCi17Ci0gICAgbV9wbGF0Zm9y
bUZpbGVTeXN0ZW0tPmNyZWF0ZVNuYXBzaG90RmlsZUFuZFJlYWRNZXRhZGF0YShmaWxlU3lzdGVt
VVJMVG9QYXRoKHBhdGgpLCBuZXcgUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MoY2Fs
bGJhY2tzKSk7Ci19Ci0KLVN0cmluZyBBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpmaWxlU3lz
dGVtVVJMVG9QYXRoKGNvbnN0IFVSTCYgdXJsKQotewotICAgIEZpbGVTeXN0ZW1UeXBlIHR5cGU7
Ci0gICAgU3RyaW5nIGZ1bGxQYXRoOwotICAgIGJvb2wgcmVzdWx0ID0gRE9NRmlsZVN5c3RlbUJh
c2U6OmNyYWNrRmlsZVN5c3RlbVVSTCh1cmwsIHR5cGUsIGZ1bGxQYXRoKTsKLSAgICBBU1NFUlRf
VU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKLSAgICByZXR1cm4gZnVsbFBhdGg7Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQXN5bmNGaWxlU3lzdGVtQmxhY2tC
ZXJyeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkv
QXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeS5oCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0FzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnkuaAko
d29ya2luZyBjb3B5KQpAQCAtMSw3NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEy
IFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2Vu
ZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
LSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCi0gKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKLSAqIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEw
LTEzMDEgVVNBCi0gKi8KLQotI2lmbmRlZiBBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5X2gKLSNk
ZWZpbmUgQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeV9oCi0KLSNpZiBFTkFCTEUoRklMRV9TWVNU
RU0pCi0jaW5jbHVkZSAiQXN5bmNGaWxlU3lzdGVtLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbVR5
cGUuaCIKLSNpbmNsdWRlICJVUkwuaCIKLQotI2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybVdl
YkZpbGVTeXN0ZW0uaD4KLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXVEYgewotCi10ZW1wbGF0ZSA8PiBpbmxpbmUg
dm9pZCBkZWxldGVPd25lZFB0cjxCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6V2ViRmlsZVN5c3RlbT4o
QmxhY2tCZXJyeTo6UGxhdGZvcm06OldlYkZpbGVTeXN0ZW0qIHB0cikKLXsKLSAgICBCbGFja0Jl
cnJ5OjpQbGF0Zm9ybTo6ZGVsZXRlR3VhcmRlZE9iamVjdChwdHIpOwotfQotCi19Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeSA6IHB1Ymxp
YyBBc3luY0ZpbGVTeXN0ZW0gewotcHVibGljOgotICAgIEFzeW5jRmlsZVN5c3RlbUJsYWNrQmVy
cnkoKTsKLSAgICBzdGF0aWMgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5PiBj
cmVhdGUoUGFzc093blB0cjxCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6V2ViRmlsZVN5c3RlbT4gcGxh
dGZvcm1GaWxlU3lzdGVtKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBBc3lu
Y0ZpbGVTeXN0ZW1CbGFja0JlcnJ5KHBsYXRmb3JtRmlsZVN5c3RlbSkpOwotICAgIH0KLQotICAg
IHN0YXRpYyB2b2lkIG9wZW5GaWxlU3lzdGVtKGNvbnN0IFVSTCYgcm9vdFVSTCwgY29uc3QgU3Ry
aW5nJiBiYXNlUGF0aCwgY29uc3QgU3RyaW5nJiBzdG9yYWdlSWRlbnRpZmllciwgRmlsZVN5c3Rl
bVR5cGUsIGxvbmcgbG9uZyBzaXplLCBib29sIGNyZWF0ZSwgaW50IHBsYXllcklkLCBQYXNzT3du
UHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwotICAgIHZpcnR1YWwgfkFzeW5jRmlsZVN5
c3RlbUJsYWNrQmVycnkoKTsKLSAgICB2aXJ0dWFsIHZvaWQgbW92ZShjb25zdCBVUkwmIHNvdXJj
ZVBhdGgsIGNvbnN0IFVSTCYgZGVzdGluYXRpb25QYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5
c3RlbUNhbGxiYWNrcz4pOwotICAgIHZpcnR1YWwgdm9pZCBjb3B5KGNvbnN0IFVSTCYgc291cmNl
UGF0aCwgY29uc3QgVVJMJiBkZXN0aW5hdGlvblBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lz
dGVtQ2FsbGJhY2tzPik7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZShjb25zdCBVUkwmIHBhdGgs
IFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7Ci0gICAgdmlydHVhbCB2b2lk
IHJlbW92ZVJlY3Vyc2l2ZWx5KGNvbnN0IFVSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVT
eXN0ZW1DYWxsYmFja3M+KTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVhZE1ldGFkYXRhKGNvbnN0IFVS
TCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKLSAgICB2aXJ0
dWFsIHZvaWQgY3JlYXRlRmlsZShjb25zdCBVUkwmIHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBQYXNz
T3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwotICAgIHZpcnR1YWwgdm9pZCBjcmVh
dGVEaXJlY3RvcnkoY29uc3QgVVJMJiBwYXRoLCBib29sIGV4Y2x1c2l2ZSwgUGFzc093blB0cjxB
c3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKLSAgICB2aXJ0dWFsIHZvaWQgZmlsZUV4aXN0cyhj
b25zdCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7Ci0g
ICAgdmlydHVhbCB2b2lkIGRpcmVjdG9yeUV4aXN0cyhjb25zdCBVUkwmIHBhdGgsIFBhc3NPd25Q
dHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7Ci0gICAgdmlydHVhbCB2b2lkIHJlYWREaXJl
Y3RvcnkoY29uc3QgVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNr
cz4pOwotICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVXcml0ZXIoQXN5bmNGaWxlV3JpdGVyQ2xpZW50
KiwgY29uc3QgVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4p
OwotICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVTbmFwc2hvdEZpbGVBbmRSZWFkTWV0YWRhdGEoY29u
c3QgVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwotCi1w
cm90ZWN0ZWQ6Ci0gICAgQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeShQYXNzT3duUHRyPEJsYWNr
QmVycnk6OlBsYXRmb3JtOjpXZWJGaWxlU3lzdGVtPiBwbGF0Zm9ybUZpbGVTeXN0ZW0pOwotICAg
IHN0YXRpYyBTdHJpbmcgZmlsZVN5c3RlbVVSTFRvUGF0aChjb25zdCBVUkwmKTsKLQotICAgIE93
blB0cjxCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6V2ViRmlsZVN5c3RlbT4gbV9wbGF0Zm9ybUZpbGVT
eXN0ZW07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUo
RklMRV9TWVNURU0pCi0KLSNlbmRpZiAvLyBBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5X2gKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQXN5bmNGaWxlV3JpdGVyQmxh
Y2tCZXJyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2ti
ZXJyeS9Bc3luY0ZpbGVXcml0ZXJCbGFja0JlcnJ5LmNwcAkocmV2aXNpb24gMTU2NjkxKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Bc3luY0ZpbGVXcml0ZXJCbGFja0Jl
cnJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw0MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDEyIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAot
ICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKLSAqIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24s
IE1BIDAyMTEwLTEzMDEgVVNBCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lmIEVOQUJM
RShGSUxFX1NZU1RFTSkKLSNpbmNsdWRlICJBc3luY0ZpbGVXcml0ZXJCbGFja0JlcnJ5LmgiCi0K
LSNpbmNsdWRlICJQbGF0Zm9ybUJsb2IuaCIKLQotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi12b2lkIEFzeW5jRmlsZVdyaXRlckJsYWNrQmVy
cnk6OndyaXRlKGxvbmcgbG9uZyBwb3NpdGlvbiwgQmxvYiogYmxvYikKLXsKLSAgICBBU1NFUlQo
YmxvYik7Ci0KLSAgICBiZWdpbldyaXRlT3JUcnVuY2F0ZSgpOwotCi0gICAgLy8gUGxhdGZvcm0g
d3JpdGVyIHdpbGwgdGFrZSB0aGUgb3duZXJzaGlwIG9mIHRoZSBwbGF0Zm9ybSBibG9iIGFuZCB3
aWxsIGRlc3Ryb3kgaXQgb24gdGhlIHRocmVhZCBpbiB3aGljaCB3ZSBhcmUgcnVubmluZy4KLSAg
ICBQbGF0Zm9ybUJsb2IqIHBsYXRmb3JtQmxvYiA9IG5ldyBQbGF0Zm9ybUJsb2IoYmxvYik7Ci0g
ICAgbV9wbGF0Zm9ybVdyaXRlci0+d3JpdGUocG9zaXRpb24sIHBsYXRmb3JtQmxvYik7Ci19Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLSNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYmxhY2tiZXJyeS9Bc3luY0ZpbGVXcml0ZXJCbGFja0JlcnJ5LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Bc3luY0ZpbGVXcml0ZXJCbGFj
a0JlcnJ5LmgJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Js
YWNrYmVycnkvQXN5bmNGaWxlV3JpdGVyQmxhY2tCZXJyeS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDEyMiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIFJlc2VhcmNoIEluIE1vdGlv
biBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
cgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQ
dWJsaWMKLSAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUg
dG8gdGhlIEZyZWUKLSAqIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCi0gKi8KLQot
I2lmbmRlZiBBc3luY0ZpbGVXcml0ZXJCbGFja0JlcnJ5X2gKLSNkZWZpbmUgQXN5bmNGaWxlV3Jp
dGVyQmxhY2tCZXJyeV9oCi0KLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0jaW5jbHVkZSAiQXN5
bmNGaWxlV3JpdGVyLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1GaWxlV3JpdGVyQ2xpZW50LmgiCi0K
LSNpbmNsdWRlIDxCbGFja0JlcnJ5UGxhdGZvcm1XZWJGaWxlU3lzdGVtRmlsZVdyaXRlci5oPgot
I2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0jaW5jbHVkZSA8d3RmL093blB0ci5oPgotI2lu
Y2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotCi1uYW1l
c3BhY2UgV1RGIHsKLQotdGVtcGxhdGUgPD4gaW5saW5lIHZvaWQgZGVsZXRlT3duZWRQdHI8Qmxh
Y2tCZXJyeTo6UGxhdGZvcm06OldlYkZpbGVXcml0ZXI+KEJsYWNrQmVycnk6OlBsYXRmb3JtOjpX
ZWJGaWxlV3JpdGVyKiBwdHIpCi17Ci0gICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OmRlbGV0ZUd1
YXJkZWRPYmplY3QocHRyKTsKLX0KLQotfQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNz
IEFzeW5jRmlsZVdyaXRlckJsYWNrQmVycnk6IHB1YmxpYyBBc3luY0ZpbGVXcml0ZXIgewotcHVi
bGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPEFzeW5jRmlsZVdyaXRlckJsYWNrQmVycnk+IGNy
ZWF0ZShQYXNzT3duUHRyPEJsYWNrQmVycnk6OlBsYXRmb3JtOjpXZWJGaWxlV3JpdGVyPiBwbGF0
Zm9ybVdyaXRlciwgQXN5bmNGaWxlV3JpdGVyQ2xpZW50KiBjbGllbnQpCi0gICAgewotICAgICAg
ICByZXR1cm4gYWRvcHRQdHIobmV3IEFzeW5jRmlsZVdyaXRlckJsYWNrQmVycnkocGxhdGZvcm1X
cml0ZXIsIGNsaWVudCkpOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCB3cml0ZShsb25nIGxv
bmcgcG9zaXRpb24sIEJsb2IqKTsKLQotICAgIHZpcnR1YWwgdm9pZCB0cnVuY2F0ZShsb25nIGxv
bmcgbGVuZ3RoKQotICAgIHsKLSAgICAgICAgYmVnaW5Xcml0ZU9yVHJ1bmNhdGUoKTsKLSAgICAg
ICAgbV9wbGF0Zm9ybVdyaXRlci0+dHJ1bmNhdGUobGVuZ3RoKTsKLSAgICB9Ci0KLSAgICB2aXJ0
dWFsIHZvaWQgYWJvcnQoKQotICAgIHsKLSAgICAgICAgYmVnaW5BYm9ydCgpOwotICAgICAgICBt
X3BsYXRmb3JtV3JpdGVyLT5hYm9ydCgpOwotICAgIH0KLQotICAgIHZpcnR1YWwgYm9vbCB3YWl0
Rm9yT3BlcmF0aW9uVG9Db21wbGV0ZSgpCi0gICAgewotICAgICAgICByZXR1cm4gbV9wbGF0Zm9y
bVdyaXRlci0+d2FpdEZvck9wZXJhdGlvblRvQ29tcGxldGUoKTsKLSAgICB9Ci0KLSAgICBib29s
IGlzQWJvcnRpbmcoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1faXNBYm9ydGluZzsK
LSAgICB9Ci0KLSAgICBib29sIGlzT3BlcmF0aW9uSW5Qcm9ncmVzcygpIGNvbnN0Ci0gICAgewot
ICAgICAgICByZXR1cm4gbV9pc09wZXJhdGlvbkluUHJvZ3Jlc3M7Ci0gICAgfQotCi0gICAgdm9p
ZCBmaW5pc2hPcGVyYXRpb24oKQotICAgIHsKLSAgICAgICAgbV9pc09wZXJhdGlvbkluUHJvZ3Jl
c3MgPSBmYWxzZTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIFBsYXRmb3JtRmlsZVdyaXRlckNsaWVu
dCogcGxhdGZvcm1Xcml0ZXJDbGllbnQoKQotICAgIHsKLSAgICAgICAgaWYgKCFtX3BsYXRmb3Jt
V3JpdGVyQ2xpZW50KQotICAgICAgICAgICAgbV9wbGF0Zm9ybVdyaXRlckNsaWVudCA9IFBsYXRm
b3JtRmlsZVdyaXRlckNsaWVudDo6Y3JlYXRlKG1fY2xpZW50LCB0aGlzKTsKLSAgICAgICAgcmV0
dXJuIG1fcGxhdGZvcm1Xcml0ZXJDbGllbnQuZ2V0KCk7Ci0gICAgfQotCi1wcm90ZWN0ZWQ6Ci0g
ICAgQXN5bmNGaWxlV3JpdGVyQmxhY2tCZXJyeShQYXNzT3duUHRyPEJsYWNrQmVycnk6OlBsYXRm
b3JtOjpXZWJGaWxlV3JpdGVyPiBwbGF0Zm9ybVdyaXRlciwgQXN5bmNGaWxlV3JpdGVyQ2xpZW50
KiBjbGllbnQpCi0gICAgICAgIDogbV9wbGF0Zm9ybVdyaXRlcihwbGF0Zm9ybVdyaXRlcikKLSAg
ICAgICAgLCBtX2NsaWVudChjbGllbnQpCi0gICAgICAgICwgbV9pc0Fib3J0aW5nKGZhbHNlKQot
ICAgICAgICAsIG1faXNPcGVyYXRpb25JblByb2dyZXNzKGZhbHNlKQotICAgIHsKLSAgICB9Ci0K
LSAgICB2b2lkIGJlZ2luV3JpdGVPclRydW5jYXRlKCkKLSAgICB7Ci0gICAgICAgIG1faXNBYm9y
dGluZyA9IGZhbHNlOwotICAgICAgICBtX2lzT3BlcmF0aW9uSW5Qcm9ncmVzcyA9IHRydWU7Ci0g
ICAgfQotCi0gICAgdm9pZCBiZWdpbkFib3J0KCkKLSAgICB7Ci0gICAgICAgIG1faXNBYm9ydGlu
ZyA9IHRydWU7Ci0gICAgICAgIG1faXNPcGVyYXRpb25JblByb2dyZXNzID0gdHJ1ZTsKLSAgICB9
Ci0KLSAgICBPd25QdHI8QmxhY2tCZXJyeTo6UGxhdGZvcm06OldlYkZpbGVXcml0ZXI+IG1fcGxh
dGZvcm1Xcml0ZXI7Ci0gICAgT3duUHRyPFBsYXRmb3JtRmlsZVdyaXRlckNsaWVudD4gbV9wbGF0
Zm9ybVdyaXRlckNsaWVudDsKLSAgICBBc3luY0ZpbGVXcml0ZXJDbGllbnQqIG1fY2xpZW50Owot
ICAgIGJvb2wgbV9pc0Fib3J0aW5nOwotICAgIGJvb2wgbV9pc09wZXJhdGlvbkluUHJvZ3Jlc3M7
Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0jZW5kaWYKLSNlbmRpZgpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9ET01GaWxlU3lzdGVtQmxhY2tCZXJyeS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9ET01G
aWxlU3lzdGVtQmxhY2tCZXJyeS5jcHAJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvRE9NRmlsZVN5c3RlbUJsYWNrQmVycnkuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDkyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgUmVz
ZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
Ci0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwg
UHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQotICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVz
c2VyIEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBp
ZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCi0gKiBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAx
IFVTQQotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpZiBFTkFCTEUoRklMRV9TWVNURU0p
Ci0jaW5jbHVkZSAiRE9NRmlsZVN5c3RlbS5oIgotCi0jaW5jbHVkZSAiRE9NRmlsZVBhdGguaCIK
LSNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0KLSNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1VUkwgRE9NRmlsZVN5c3Rl
bUJhc2U6OmNyZWF0ZUZpbGVTeXN0ZW1VUkwoY29uc3QgU3RyaW5nJiBmdWxsUGF0aCkgY29uc3QK
LXsKLSAgICBBU1NFUlQoRE9NRmlsZVBhdGg6OmlzQWJzb2x1dGUoZnVsbFBhdGgpKTsKLQotICAg
IC8vIEZvciByZWd1bGFyIHR5cGVzIHdlIGNhbiBqdXN0IGFwcGVuZCB0aGUgZW50cnkncyBmdWxs
UGF0aCB0byB0aGUgbV9maWxlc3lzdGVtUm9vdFVSTCB0aGF0IHNob3VsZCBsb29rIGxpa2UgJ2Zp
bGVzeXN0ZW06PG9yaWdpbj4vPHR5cGVQcmVmaXg+Jy4KLSAgICBBU1NFUlQoIW1fZmlsZXN5c3Rl
bVJvb3RVUkwuaXNFbXB0eSgpKTsKLSAgICByZXR1cm4gbV9jb250ZXh0LT5jb21wbGV0ZVVSTCht
X2ZpbGVzeXN0ZW1Sb290VVJMLnN0cmluZygpICsgZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVlbmNl
cyhmdWxsUGF0aCkpOwotfQotCi1ib29sIERPTUZpbGVTeXN0ZW1CYXNlOjpjcmFja0ZpbGVTeXN0
ZW1VUkwoY29uc3QgVVJMJiB1cmwsIEZpbGVTeXN0ZW1UeXBlJiB0eXBlLCBTdHJpbmcmIGZpbGVQ
YXRoKQotewotICAgIGlmICghdXJsLnByb3RvY29sSXMoImZpbGVzeXN0ZW0iKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKHVybC5pbm5lclVSTCgpKSB7Ci0gICAgICAgIFN0cmlu
ZyB0eXBlU3RyaW5nID0gdXJsLmlubmVyVVJMKCktPnBhdGgoKS5zdWJzdHJpbmcoMSk7Ci0gICAg
ICAgIGlmICh0eXBlU3RyaW5nID09IHRlbXBvcmFyeVBhdGhQcmVmaXgpCi0gICAgICAgICAgICB0
eXBlID0gRmlsZVN5c3RlbVR5cGVUZW1wb3Jhcnk7Ci0gICAgICAgIGVsc2UgaWYgKHR5cGVTdHJp
bmcgPT0gcGVyc2lzdGVudFBhdGhQcmVmaXgpCi0gICAgICAgICAgICB0eXBlID0gRmlsZVN5c3Rl
bVR5cGVQZXJzaXN0ZW50OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICAgICAgZmlsZVBhdGggPSBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXModXJsLnBhdGgo
KSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgVVJMIG9yaWdpblVSTChQYXJzZWRVUkxTdHJpbmcs
IHVybC5wYXRoKCkpOwotICAgICAgICBTdHJpbmcgcGF0aCA9IGRlY29kZVVSTEVzY2FwZVNlcXVl
bmNlcyhvcmlnaW5VUkwucGF0aCgpKTsKLSAgICAgICAgaWYgKHBhdGguaXNFbXB0eSgpIHx8IHBh
dGhbMF0gIT0gJy8nKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBwYXRoID0g
cGF0aC5zdWJzdHJpbmcoMSk7Ci0KLSAgICAgICAgaWYgKHBhdGguc3RhcnRzV2l0aCh0ZW1wb3Jh
cnlQYXRoUHJlZml4KSkgewotICAgICAgICAgICAgdHlwZSA9IEZpbGVTeXN0ZW1UeXBlVGVtcG9y
YXJ5OwotICAgICAgICAgICAgcGF0aCA9IHBhdGguc3Vic3RyaW5nKHRlbXBvcmFyeVBhdGhQcmVm
aXhMZW5ndGgpOwotICAgICAgICB9IGVsc2UgaWYgKHBhdGguc3RhcnRzV2l0aChwZXJzaXN0ZW50
UGF0aFByZWZpeCkpIHsKLSAgICAgICAgICAgIHR5cGUgPSBGaWxlU3lzdGVtVHlwZVBlcnNpc3Rl
bnQ7Ci0gICAgICAgICAgICBwYXRoID0gcGF0aC5zdWJzdHJpbmcocGVyc2lzdGVudFBhdGhQcmVm
aXhMZW5ndGgpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQot
ICAgICAgICBpZiAocGF0aC5pc0VtcHR5KCkgfHwgcGF0aFswXSAhPSAnLycpCi0gICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgZmlsZVBhdGguc3dhcChwYXRoKTsKLSAgICB9Ci0g
ICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgRE9NRmlsZVN5c3RlbUJhc2U6OnN1cHBvcnRzVG9V
UkwoKSBjb25zdAotewotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIERPTUZpbGVTeXN0ZW1C
YXNlOjppc1ZhbGlkVHlwZShGaWxlU3lzdGVtVHlwZSB0eXBlKQotewotICAgIHJldHVybiB0eXBl
ID09IEZpbGVTeXN0ZW1UeXBlVGVtcG9yYXJ5IHx8IHR5cGUgPT0gRmlsZVN5c3RlbVR5cGVQZXJz
aXN0ZW50OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUo
RklMRV9TWVNURU0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0Ry
YWdEYXRhQmxhY2tCZXJyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYmxhY2tiZXJyeS9EcmFnRGF0YUJsYWNrQmVycnkuY3BwCShyZXZpc2lvbiAxNTY2OTEpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0RyYWdEYXRhQmxhY2tCZXJyeS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTkyLDEyICs5Miw0IEBAIFBhc3NSZWZQdHI8RG9jdW1lbnRG
cmFnbWVudD4gRHJhZ0RhdGE6OmEKICAgICByZXR1cm4gMDsKIH0KIAotI2lmIEVOQUJMRShGSUxF
X1NZU1RFTSkKLVN0cmluZyBEcmFnRGF0YTo6ZHJvcHBlZEZpbGVTeXN0ZW1JZCgpIGNvbnN0Ci17
Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gU3RyaW5nKCk7Ci19Ci0jZW5kaWYK
LQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YmxhY2tiZXJyeS9Mb2NhbEZpbGVTeXN0ZW1CbGFja0JlcnJ5LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0xvY2FsRmlsZVN5c3RlbUJsYWNrQmVy
cnkuY3BwCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFj
a2JlcnJ5L0xvY2FsRmlsZVN5c3RlbUJsYWNrQmVycnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDE0OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIFJlc2VhcmNoIEluIE1vdGlv
biBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
cgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQ
dWJsaWMKLSAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUg
dG8gdGhlIEZyZWUKLSAqIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCi0gKi8KLQot
I2luY2x1ZGUgImNvbmZpZy5oIgotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLSNpbmNsdWRlICJM
b2NhbEZpbGVTeXN0ZW0uaCIKLQotI2luY2x1ZGUgIkFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnku
aCIKLSNpbmNsdWRlICJBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MuaCIKLSNpbmNsdWRlICJDaHJv
bWUuaCIKLSNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKLSNpbmNsdWRlICJDcm9zc1RocmVhZFRh
c2suaCIKLSNpbmNsdWRlICJET01GaWxlU3lzdGVtLmgiCi0jaW5jbHVkZSAiRG9jdW1lbnQuaCIK
LSNpbmNsdWRlICJFcnJvckNhbGxiYWNrLmgiCi0jaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgot
I2luY2x1ZGUgIkZpbGVFcnJvci5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW1DYWxsYmFjay5oIgot
I2luY2x1ZGUgIkZpbGVTeXN0ZW1DYWxsYmFja3MuaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtVHlw
ZS5oIgotI2luY2x1ZGUgIlVSTC5oIgotI2luY2x1ZGUgIlBhZ2UuaCIKLSNpbmNsdWRlICJQYWdl
Q2xpZW50QmxhY2tCZXJyeS5oIgotI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCi0jaW5jbHVk
ZSAiU2V0dGluZ3MuaCIKLSNpbmNsdWRlICJXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5
LmgiCi0jaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKLSNpbmNsdWRlICJXb3JrZXJUaHJl
YWQuaCIKLQotI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+Ci0jaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotI2lmIEVOQUJM
RShXT1JLRVJTKQotc3RhdGljIGNvbnN0IGNoYXIgb3BlbkZpbGVTeXN0ZW1Nb2RlW10gPSAib3Bl
bkZpbGVTeXN0ZW1Nb2RlIjsKLXN0YXRpYyBjb25zdCBjaGFyIGRlbGV0ZUZpbGVTeXN0ZW1Nb2Rl
W10gPSAiZGVsZXRlRmlsZVN5c3RlbU1vZGUiOwotI2VuZGlmCi0KLXN0YXRpYyBjb25zdCBjaGFy
KiBmaWxlU3lzdGVtVHlwZVN0cmluZyhGaWxlU3lzdGVtVHlwZSB0eXBlKQotewotICAgIHN3aXRj
aCAodHlwZSkgewotICAgIGNhc2UgRmlsZVN5c3RlbVR5cGVQZXJzaXN0ZW50OgotICAgICAgICBy
ZXR1cm4gRE9NRmlsZVN5c3RlbUJhc2U6OnBlcnNpc3RlbnRQYXRoUHJlZml4OwotICAgIGNhc2Ug
RmlsZVN5c3RlbVR5cGVUZW1wb3Jhcnk6Ci0gICAgICAgIHJldHVybiBET01GaWxlU3lzdGVtQmFz
ZTo6dGVtcG9yYXJ5UGF0aFByZWZpeDsKLSAgICBjYXNlIEZpbGVTeXN0ZW1UeXBlSXNvbGF0ZWQ6
Ci0gICAgICAgIHJldHVybiBET01GaWxlU3lzdGVtQmFzZTo6aXNvbGF0ZWRQYXRoUHJlZml4Owot
ICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gMDsKLX0KLQotc3Rh
dGljIHZvaWQgb3BlbkZpbGVTeXN0ZW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
Y29uc3QgU3RyaW5nJiBiYXNlUGF0aCwgRmlsZVN5c3RlbVR5cGUgdHlwZSwgbG9uZyBsb25nIHNp
emUsIGJvb2wgY3JlYXRlLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2Fs
bGJhY2tzLCBGaWxlU3lzdGVtU3luY2hyb25vdXNUeXBlIHN5bmNocm9ub3VzVHlwZSkKLXsKLSAg
ICBBU1NFUlQoY29udGV4dCk7Ci0gICAgQVNTRVJUKHR5cGUgIT0gRmlsZVN5c3RlbVR5cGVJc29s
YXRlZCk7Ci0gICAgaWYgKHR5cGUgPT0gRmlsZVN5c3RlbVR5cGVJc29sYXRlZCkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgVVJMIHVybCA9IGNvbnRleHQtPnVybCgpOwotICAgIGlmICh1cmwuaGFz
RnJhZ21lbnRJZGVudGlmaWVyKCkpCi0gICAgICAgIHVybC5yZW1vdmVGcmFnbWVudElkZW50aWZp
ZXIoKTsKLSAgICB1cmwuc2V0UXVlcnkoU3RyaW5nKCkpOwotICAgIHVybC5zZXRQYXRoKCIvIik7
Ci0gICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgIGJ1aWxkZXIuYXBwZW5kKCJmaWxlc3lz
dGVtOiIpOwotICAgIGJ1aWxkZXIuYXBwZW5kKHVybC5zdHJpbmcoKSk7Ci0gICAgYnVpbGRlci5h
cHBlbmQoZmlsZVN5c3RlbVR5cGVTdHJpbmcodHlwZSkpOwotICAgIFVSTCByb290VVJMID0gY29u
dGV4dC0+Y29tcGxldGVVUkwoYnVpbGRlci50b1N0cmluZygpKTsKLSAgICBBU1NFUlQocm9vdFVS
TC5pc1ZhbGlkKCkpOwotCi0gICAgLy8gVE9ETzogQXNrIHVzZXIgZm9yIGZpbGUgc3lzdGVtIHBl
cm1pc3Npb24uCi0KLSAgICBpZiAoY29udGV4dC0+aXNEb2N1bWVudCgpKSB7Ci0gICAgICAgIGlu
dCBwbGF5ZXJJZCA9IDA7Ci0gICAgICAgIFBhZ2UqIHBhZ2UgPSBzdGF0aWNfY2FzdDxEb2N1bWVu
dCo+KGNvbnRleHQpLT5wYWdlKCk7Ci0gICAgICAgIGlmIChwYWdlKQotICAgICAgICAgICAgcGxh
eWVySWQgPSBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS5wbGF0Zm9ybVBhZ2VDbGllbnQoKS0+cGxh
eWVySUQoKTsKLSAgICAgICAgQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6b3BlbkZpbGVTeXN0
ZW0ocm9vdFVSTCwgYmFzZVBhdGgsIGNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCktPmRhdGFiYXNl
SWRlbnRpZmllcigpLCB0eXBlLCBzaXplLCBjcmVhdGUsIHBsYXllcklkLCBjYWxsYmFja3MpOwot
ICAgIH0gZWxzZSB7Ci0jaWYgRU5BQkxFKFdPUktFUlMpCi0gICAgICAgIFdvcmtlckdsb2JhbFNj
b3BlKiB3b3JrZXJHbG9iYWxTY29wZSA9IHN0YXRpY19jYXN0PFdvcmtlckdsb2JhbFNjb3BlKj4o
Y29udGV4dCk7Ci0gICAgICAgIFN0cmluZyBtb2RlID0gb3BlbkZpbGVTeXN0ZW1Nb2RlOwotICAg
ICAgICBtb2RlLmFwcGVuZChTdHJpbmc6Om51bWJlcih3b3JrZXJHbG9iYWxTY29wZS0+dGhyZWFk
KCktPnJ1bkxvb3AoKS5jcmVhdGVVbmlxdWVJZCgpKSk7Ci0gICAgICAgIFdvcmtlckFzeW5jRmls
ZVN5c3RlbUJsYWNrQmVycnk6Om9wZW5GaWxlU3lzdGVtKHdvcmtlckdsb2JhbFNjb3BlLCByb290
VVJMLCBtb2RlLCBiYXNlUGF0aCwgY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKS0+ZGF0YWJhc2VJ
ZGVudGlmaWVyKCksIHR5cGUsIHNpemUsIGNyZWF0ZSwgY2FsbGJhY2tzKTsKLSAgICAgICAgaWYg
KHN5bmNocm9ub3VzVHlwZSA9PSBTeW5jaHJvbm91c0ZpbGVTeXN0ZW0pCi0gICAgICAgICAgICB3
b3JrZXJHbG9iYWxTY29wZS0+dGhyZWFkKCktPnJ1bkxvb3AoKS5ydW5Jbk1vZGUod29ya2VyR2xv
YmFsU2NvcGUsIG1vZGUpOwotI2Vsc2UKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0j
ZW5kaWYKLSAgICB9Ci19Ci0KLXZvaWQgTG9jYWxGaWxlU3lzdGVtOjpkZWxldGVGaWxlU3lzdGVt
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEZpbGVTeXN0ZW1UeXBlIHR5cGUsIFBh
c3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCi17Ci0gICAgQVNT
RVJUKGNvbnRleHQpOwotICAgIEFTU0VSVCh0eXBlICE9IEZpbGVTeXN0ZW1UeXBlSXNvbGF0ZWQp
OwotICAgIGlmICh0eXBlID09IEZpbGVTeXN0ZW1UeXBlSXNvbGF0ZWQpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIC8vIFRPRE86IEFzayB1c2VyIGZvciBmaWxlIHN5c3RlbSBwZXJtaXNzaW9uLgot
Ci0gICAgaWYgKGNvbnRleHQtPmlzRG9jdW1lbnQoKSkKLSAgICAgICAgQXN5bmNGaWxlU3lzdGVt
QmxhY2tCZXJyeTo6ZGVsZXRlRmlsZVN5c3RlbShmaWxlU3lzdGVtQmFzZVBhdGgoKSwgY29udGV4
dC0+c2VjdXJpdHlPcmlnaW4oKS0+ZGF0YWJhc2VJZGVudGlmaWVyKCksIHR5cGUsIGNhbGxiYWNr
cyk7Ci0gICAgZWxzZSB7Ci0jaWYgRU5BQkxFKFdPUktFUlMpCi0gICAgICAgIFdvcmtlckdsb2Jh
bFNjb3BlKiB3b3JrZXJHbG9iYWxTY29wZSA9IHN0YXRpY19jYXN0PFdvcmtlckdsb2JhbFNjb3Bl
Kj4oY29udGV4dCk7Ci0gICAgICAgIFN0cmluZyBtb2RlID0gZGVsZXRlRmlsZVN5c3RlbU1vZGU7
Ci0gICAgICAgIG1vZGUuYXBwZW5kKFN0cmluZzo6bnVtYmVyKHdvcmtlckdsb2JhbFNjb3BlLT50
aHJlYWQoKS0+cnVuTG9vcCgpLmNyZWF0ZVVuaXF1ZUlkKCkpKTsKLSAgICAgICAgV29ya2VyQXN5
bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6ZGVsZXRlRmlsZVN5c3RlbSh3b3JrZXJHbG9iYWxTY29w
ZSwgbW9kZSwgZmlsZVN5c3RlbUJhc2VQYXRoKCksIGNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCkt
PmRhdGFiYXNlSWRlbnRpZmllcigpLCB0eXBlLCBjYWxsYmFja3MpOwotI2Vsc2UKLSAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0jZW5kaWYKLSAgICB9Ci19Ci0KLQotdm9pZCBMb2NhbEZp
bGVTeXN0ZW06OnJlYWRGaWxlU3lzdGVtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IEZpbGVTeXN0ZW1UeXBlIHR5cGUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tz
PiBjYWxsYmFja3MsIEZpbGVTeXN0ZW1TeW5jaHJvbm91c1R5cGUgc3luY2hyb25vdXNUeXBlKQot
ewotICAgIG9wZW5GaWxlU3lzdGVtKGNvbnRleHQsIGZpbGVTeXN0ZW1CYXNlUGF0aCgpLCB0eXBl
LCAwLCBmYWxzZSwgY2FsbGJhY2tzLCBzeW5jaHJvbm91c1R5cGUpOwotfQotCi12b2lkIExvY2Fs
RmlsZVN5c3RlbTo6cmVxdWVzdEZpbGVTeXN0ZW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgRmlsZVN5c3RlbVR5cGUgdHlwZSwgbG9uZyBsb25nIHNpemUsIFBhc3NPd25QdHI8QXN5
bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MsIEZpbGVTeXN0ZW1TeW5jaHJvbm91c1R5
cGUgc3luY2hyb25vdXNUeXBlKQotewotICAgIG9wZW5GaWxlU3lzdGVtKGNvbnRleHQsIGZpbGVT
eXN0ZW1CYXNlUGF0aCgpLCB0eXBlLCBzaXplLCB0cnVlLCBjYWxsYmFja3MsIHN5bmNocm9ub3Vz
VHlwZSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1BsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2Fs
bGJhY2tzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2Jl
cnJ5L1BsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzLmNwcAkocmV2aXNpb24gMTU2Njkx
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9QbGF0Zm9ybUFzeW5jRmls
ZVN5c3RlbUNhbGxiYWNrcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsMTEzICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0g
KgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExlc3NlciBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICogTGljZW5z
ZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQotICog
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKLSAqLwotCi0jaW5jbHVkZSAiY29uZmln
LmgiCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotI2luY2x1ZGUgIlBsYXRmb3JtQXN5bmNGaWxl
U3lzdGVtQ2FsbGJhY2tzLmgiCi0KLSNpbmNsdWRlICJBc3NlcnRpb25zLmgiCi0jaW5jbHVkZSAi
QXN5bmNGaWxlU3lzdGVtLmgiCi0jaW5jbHVkZSAiQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeS5o
IgotI2luY2x1ZGUgIkFzeW5jRmlsZVdyaXRlckJsYWNrQmVycnkuaCIKLSNpbmNsdWRlICJBc3lu
Y0ZpbGVXcml0ZXJDbGllbnQuaCIKLSNpbmNsdWRlICJGaWxlRXJyb3IuaCIKLSNpbmNsdWRlICJG
aWxlTWV0YWRhdGEuaCIKLQotI2luY2x1ZGUgPEd1YXJkZWRQb2ludGVyRGVsZXRlci5oPgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQgUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFj
a3M6Om5vdGlmeU9wZW5GaWxlU3lzdGVtKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpXZWJGaWxlU3lz
dGVtKiBwbGF0Zm9ybUZpbGVTeXN0ZW0pCi17Ci0gICAgQVNTRVJUKHBsYXRmb3JtRmlsZVN5c3Rl
bSk7Ci0gICAgbV9jYWxsYmFja3MtPmRpZE9wZW5GaWxlU3lzdGVtKFN0cmluZzo6ZnJvbVVURjgo
cGxhdGZvcm1GaWxlU3lzdGVtLT5uYW1lKCkuY19zdHIoKSksIG1fcm9vdFVSTCwgY3JlYXRlQXN5
bmNGaWxlU3lzdGVtKGFkb3B0UHRyKHBsYXRmb3JtRmlsZVN5c3RlbSkpKTsKLSAgICBkZWxldGVN
ZSgpOwotfQotCi12b2lkIFBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzOjpub3RpZnlT
dWNjZWVkKCkKLXsKLSAgICBtX2NhbGxiYWNrcy0+ZGlkU3VjY2VlZCgpOwotICAgIGRlbGV0ZU1l
KCk7Ci19Ci0KLXZvaWQgUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M6Om5vdGlmeUZh
aWwoQmxhY2tCZXJyeTo6UGxhdGZvcm06OldlYkZpbGVFcnJvciBlcnJvcikKLXsKLSAgICBtX2Nh
bGxiYWNrcy0+ZGlkRmFpbChzdGF0aWNfY2FzdDxGaWxlRXJyb3I6OkVycm9yQ29kZT4oZXJyb3Ip
KTsKLSAgICBkZWxldGVNZSgpOwotfQotCi1zdGF0aWMgaW5saW5lIHZvaWQgZ2V0RmlsZU1ldGFk
YXRhKGNvbnN0IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpXZWJGaWxlSW5mbyYgZmlsZUluZm8sIEZp
bGVNZXRhZGF0YSYgZmlsZU1ldGFkYXRhKQotewotICAgIGZpbGVNZXRhZGF0YS5tb2RpZmljYXRp
b25UaW1lID0gZmlsZUluZm8ubV9tb2RpZmljYXRpb25UaW1lOwotICAgIGZpbGVNZXRhZGF0YS5s
ZW5ndGggPSBmaWxlSW5mby5tX2xlbmd0aDsKLSAgICBmaWxlTWV0YWRhdGEudHlwZSA9IHN0YXRp
Y19jYXN0PEZpbGVNZXRhZGF0YTo6VHlwZT4oZmlsZUluZm8ubV90eXBlKTsKLSAgICBmaWxlTWV0
YWRhdGEucGxhdGZvcm1QYXRoID0gU3RyaW5nOjpmcm9tVVRGOChmaWxlSW5mby5tX3BsYXRmb3Jt
UGF0aC5jX3N0cigpKTsKLX0KLQotdm9pZCBQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNr
czo6bm90aWZ5UmVhZE1ldGFkYXRhKGNvbnN0IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpXZWJGaWxl
SW5mbyYgZmlsZUluZm8pCi17Ci0gICAgRmlsZU1ldGFkYXRhIGZpbGVNZXRhZGF0YTsKLSAgICBn
ZXRGaWxlTWV0YWRhdGEoZmlsZUluZm8sIGZpbGVNZXRhZGF0YSk7Ci0gICAgbV9jYWxsYmFja3Mt
PmRpZFJlYWRNZXRhZGF0YShmaWxlTWV0YWRhdGEpOwotICAgIGRlbGV0ZU1lKCk7Ci19Ci0KLXZv
aWQgUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M6Om5vdGlmeUNyZWF0ZVNuYXBzaG90
RmlsZUFuZFJlYWRNZXRhZGF0YShjb25zdCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6V2ViRmlsZUlu
Zm8mIGZpbGVJbmZvKQotewotICAgIEZpbGVNZXRhZGF0YSBmaWxlTWV0YWRhdGE7Ci0gICAgZ2V0
RmlsZU1ldGFkYXRhKGZpbGVJbmZvLCBmaWxlTWV0YWRhdGEpOwotICAgIG1fY2FsbGJhY2tzLT5k
aWRDcmVhdGVTbmFwc2hvdEZpbGUoZmlsZU1ldGFkYXRhLCAwKTsKLSAgICBkZWxldGVNZSgpOwot
fQotCi12b2lkIFBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzOjpub3RpZnlSZWFkRGly
ZWN0b3J5KGNvbnN0IHN0ZDo6dmVjdG9yPEJsYWNrQmVycnk6OlBsYXRmb3JtOjpXZWJGaWxlU3lz
dGVtRW50cnk+JiBlbnRyaWVzLCBib29sIGhhc01vcmUpCi17Ci0gICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBlbnRyaWVzLnNpemUoKTsgKytpKQotICAgICAgICBtX2NhbGxiYWNrcy0+ZGlkUmVh
ZERpcmVjdG9yeUVudHJ5KFN0cmluZzo6ZnJvbVVURjgoZW50cmllc1tpXS5tX25hbWUuY19zdHIo
KSksIGVudHJpZXNbaV0ubV9pc0RpcmVjdG9yeSk7Ci0gICAgbV9jYWxsYmFja3MtPmRpZFJlYWRE
aXJlY3RvcnlFbnRyaWVzKGhhc01vcmUpOwotICAgIGRlbGV0ZU1lKCk7Ci19Ci0KLXZvaWQgUGxh
dGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M6Om5vdGlmeUNyZWF0ZUZpbGVXcml0ZXIoQmxh
Y2tCZXJyeTo6UGxhdGZvcm06OldlYkZpbGVXcml0ZXIqIHBsYXRmb3JtV3JpdGVyLCBsb25nIGxv
bmcgbGVuZ3RoKQotewotICAgIG1fY2FsbGJhY2tzLT5kaWRDcmVhdGVGaWxlV3JpdGVyKGNyZWF0
ZUFzeW5jRmlsZVdyaXRlcihhZG9wdFB0cihwbGF0Zm9ybVdyaXRlcikpLCBsZW5ndGgpOwotICAg
IGRlbGV0ZU1lKCk7Ci19Ci0KLVBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtPiBQbGF0Zm9ybUFz
eW5jRmlsZVN5c3RlbUNhbGxiYWNrczo6Y3JlYXRlQXN5bmNGaWxlU3lzdGVtKFBhc3NPd25QdHI8
QmxhY2tCZXJyeTo6UGxhdGZvcm06OldlYkZpbGVTeXN0ZW0+IHBsYXRmb3JtRmlsZVN5c3RlbSkK
LXsKLSAgICByZXR1cm4gQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6Y3JlYXRlKHBsYXRmb3Jt
RmlsZVN5c3RlbSk7Ci19Ci0KLVBhc3NPd25QdHI8QXN5bmNGaWxlV3JpdGVyPiBQbGF0Zm9ybUFz
eW5jRmlsZVN5c3RlbUNhbGxiYWNrczo6Y3JlYXRlQXN5bmNGaWxlV3JpdGVyKFBhc3NPd25QdHI8
QmxhY2tCZXJyeTo6UGxhdGZvcm06OldlYkZpbGVXcml0ZXI+IHBsYXRmb3JtV3JpdGVyKQotewot
ICAgIEFTU0VSVChtX3dyaXRlckNsaWVudCk7Ci0gICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06Oldl
YkZpbGVXcml0ZXIqIHBsYXRmb3JtV3JpdGVyUHRyID0gcGxhdGZvcm1Xcml0ZXIuZ2V0KCk7Ci0g
ICAgT3duUHRyPEFzeW5jRmlsZVdyaXRlckJsYWNrQmVycnk+IHdyaXRlciA9IEFzeW5jRmlsZVdy
aXRlckJsYWNrQmVycnk6OmNyZWF0ZShwbGF0Zm9ybVdyaXRlciwgbV93cml0ZXJDbGllbnQpOwot
ICAgIHBsYXRmb3JtV3JpdGVyUHRyLT5zZXRDbGllbnQod3JpdGVyLT5wbGF0Zm9ybVdyaXRlckNs
aWVudCgpKTsKLSAgICByZXR1cm4gd3JpdGVyLnJlbGVhc2UoKTsKLX0KLQotdm9pZCBQbGF0Zm9y
bUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrczo6ZGVsZXRlTWUoKQotewotICAgIEJsYWNrQmVycnk6
OlBsYXRmb3JtOjpHdWFyZGVkUG9pbnRlckRlbGV0ZXI6OmRlbGV0ZU9uVGhyZWFkKEJsYWNrQmVy
cnk6OlBsYXRmb3JtOjp3ZWJLaXRUaHJlYWRNZXNzYWdlQ2xpZW50KCksIHRoaXMpOwotfQotCi19
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2JsYWNrYmVycnkvUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1BsYXRmb3JtQXN5bmNG
aWxlU3lzdGVtQ2FsbGJhY2tzLmgJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2JsYWNrYmVycnkvUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MuaAko
d29ya2luZyBjb3B5KQpAQCAtMSw3OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEy
IFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2Vu
ZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
LSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCi0gKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKLSAqIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEw
LTEzMDEgVVNBCi0gKi8KLQotI2lmbmRlZiBQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNr
c19oCi0jZGVmaW5lIFBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzX2gKLQotI2lmIEVO
QUJMRShGSUxFX1NZU1RFTSkKLSNpbmNsdWRlICJBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MuaCIK
LSNpbmNsdWRlICJVUkwuaCIKLQotI2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybVdlYkZpbGVT
eXN0ZW0uaD4KLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25Q
dHIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1TdHJpbmcgcGxhdGZvcm1GaWxlU3lzdGVtVHlwZVRvU3RyaW5nKEJsYWNrQmVycnk6
OlBsYXRmb3JtOjpXZWJGaWxlU3lzdGVtOjpUeXBlKTsKLQotY2xhc3MgQXN5bmNGaWxlU3lzdGVt
OwotY2xhc3MgQXN5bmNGaWxlV3JpdGVyOwotY2xhc3MgQXN5bmNGaWxlV3JpdGVyQ2xpZW50Owot
Ci1jbGFzcyBQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrczogcHVibGljIEJsYWNrQmVy
cnk6OlBsYXRmb3JtOjpXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzIHsKLXB1YmxpYzoKLSAgICBQbGF0
Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyhQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNh
bGxiYWNrcz4gY2FsbGJhY2tzLCBjb25zdCBVUkwmIHJvb3RVUkwgPSBVUkwoKSkKLSAgICAgICAg
OiBtX2NhbGxiYWNrcyhjYWxsYmFja3MpCi0gICAgICAgICwgbV93cml0ZXJDbGllbnQoMCkKLSAg
ICAgICAgLCBtX3Jvb3RVUkwocm9vdFVSTCkKLSAgICB7Ci0gICAgfQotCi0gICAgLy8gRm9yIGNy
ZWF0ZVdyaXRlci4KLSAgICBQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyhQYXNzT3du
UHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzLCBBc3luY0ZpbGVXcml0ZXJD
bGllbnQqIGNsaWVudCkKLSAgICAgICAgOiBtX2NhbGxiYWNrcyhjYWxsYmFja3MpCi0gICAgICAg
ICwgbV93cml0ZXJDbGllbnQoY2xpZW50KQotICAgIHsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZv
aWQgbm90aWZ5T3BlbkZpbGVTeXN0ZW0oQmxhY2tCZXJyeTo6UGxhdGZvcm06OldlYkZpbGVTeXN0
ZW0qIHBsYXRmb3JtRmlsZVN5c3RlbSk7Ci0gICAgdmlydHVhbCB2b2lkIG5vdGlmeVN1Y2NlZWQo
KTsKLSAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5RmFpbChCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6V2Vi
RmlsZUVycm9yKTsKLSAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5UmVhZE1ldGFkYXRhKGNvbnN0IEJs
YWNrQmVycnk6OlBsYXRmb3JtOjpXZWJGaWxlSW5mbyYpOwotICAgIHZpcnR1YWwgdm9pZCBub3Rp
ZnlDcmVhdGVTbmFwc2hvdEZpbGVBbmRSZWFkTWV0YWRhdGEoY29uc3QgQmxhY2tCZXJyeTo6UGxh
dGZvcm06OldlYkZpbGVJbmZvJik7Ci0gICAgdmlydHVhbCB2b2lkIG5vdGlmeVJlYWREaXJlY3Rv
cnkoY29uc3Qgc3RkOjp2ZWN0b3I8QmxhY2tCZXJyeTo6UGxhdGZvcm06OldlYkZpbGVTeXN0ZW1F
bnRyeT4mIGVudHJpZXMsIGJvb2wgaGFzTW9yZSk7Ci0gICAgdmlydHVhbCB2b2lkIG5vdGlmeUNy
ZWF0ZUZpbGVXcml0ZXIoQmxhY2tCZXJyeTo6UGxhdGZvcm06OldlYkZpbGVXcml0ZXIqIHBsYXRm
b3JtV3JpdGVyLCBsb25nIGxvbmcgbGVuZ3RoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlTWUo
KTsKLSAgICB2aXJ0dWFsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtPiBjcmVhdGVBc3luY0Zp
bGVTeXN0ZW0oUGFzc093blB0cjxCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6V2ViRmlsZVN5c3RlbT4g
cGxhdGZvcm1GaWxlU3lzdGVtKTsKLSAgICB2aXJ0dWFsIFBhc3NPd25QdHI8QXN5bmNGaWxlV3Jp
dGVyPiBjcmVhdGVBc3luY0ZpbGVXcml0ZXIoUGFzc093blB0cjxCbGFja0JlcnJ5OjpQbGF0Zm9y
bTo6V2ViRmlsZVdyaXRlcj4gcGxhdGZvcm1Xcml0ZXIpOwotCi1wcm90ZWN0ZWQ6Ci0gICAgflBs
YXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKCkgeyB9Ci0gICAgT3duUHRyPEFzeW5jRmls
ZVN5c3RlbUNhbGxiYWNrcz4gbV9jYWxsYmFja3M7Ci0gICAgQXN5bmNGaWxlV3JpdGVyQ2xpZW50
KiBtX3dyaXRlckNsaWVudDsKLQotcHJpdmF0ZToKLSAgICBVUkwgbV9yb290VVJMOwotfTsKLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotI2VuZGlmCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvUGxhdGZvcm1CbG9iLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1BsYXRmb3JtQmxvYi5jcHAJKHJldmlz
aW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvUGxhdGZv
cm1CbG9iLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw0NSArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDEyIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKLSAqIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0
b24sIE1BIDAyMTEwLTEzMDEgVVNBCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lmIEVO
QUJMRShGSUxFX1NZU1RFTSkKLSNpbmNsdWRlICJQbGF0Zm9ybUJsb2IuaCIKLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1CbGFja0JlcnJ5OjpQbGF0Zm9ybTo6V2ViQmxvYkRhdGFJdGVtKiBQbGF0
Zm9ybUJsb2I6Om5leHREYXRhSXRlbSgpCi17Ci0gICAgaWYgKCFtX2Jsb2JEYXRhIHx8IG1fY3Vy
cmVudEl0ZW0gPj0gbV9ibG9iRGF0YS0+aXRlbXMoKS5zaXplKCkpCi0gICAgICAgIHJldHVybiAw
OwotCi0gICAgY29uc3QgQmxvYkRhdGFJdGVtJiBpdGVtID0gbV9ibG9iRGF0YS0+aXRlbXMoKVtt
X2N1cnJlbnRJdGVtKytdOwotICAgIEFTU0VSVChpdGVtLnR5cGUgPT0gQmxvYkRhdGFJdGVtOjpE
YXRhIHx8IGl0ZW0udHlwZSA9PSBCbG9iRGF0YUl0ZW06OkZpbGUpOwotICAgIG1fcGxhdGZvcm1C
bG9iSXRlbS5tX2lzRGF0YSA9IGl0ZW0udHlwZSA9PSBCbG9iRGF0YUl0ZW06OkRhdGE7Ci0gICAg
bV9wbGF0Zm9ybUJsb2JJdGVtLm1fYnVmZmVyID0gbV9wbGF0Zm9ybUJsb2JJdGVtLm1faXNEYXRh
ID8gaXRlbS5kYXRhLT5kYXRhKCkgKyBzdGF0aWNfY2FzdDxpbnQ+KGl0ZW0ub2Zmc2V0KSA6IDA7
Ci0gICAgbV9wbGF0Zm9ybUJsb2JJdGVtLm1fYnVmZmVyTGVuZ3RoID0gbV9wbGF0Zm9ybUJsb2JJ
dGVtLm1faXNEYXRhID8gc3RhdGljX2Nhc3Q8c2l6ZV90PihpdGVtLmxlbmd0aCkgOiAwOwotICAg
IG1fcGxhdGZvcm1CbG9iSXRlbS5tX2ZpbGVOYW1lID0gbV9wbGF0Zm9ybUJsb2JJdGVtLm1faXNE
YXRhID8gZW1wdHlTdHJpbmcoKSA6IGl0ZW0ucGF0aDsKLSAgICBtX3BsYXRmb3JtQmxvYkl0ZW0u
bV9maWxlU3RhcnQgPSBtX3BsYXRmb3JtQmxvYkl0ZW0ubV9pc0RhdGEgPyAwIDogaXRlbS5vZmZz
ZXQ7Ci0gICAgbV9wbGF0Zm9ybUJsb2JJdGVtLm1fZmlsZUxlbmd0aCA9IG1fcGxhdGZvcm1CbG9i
SXRlbS5tX2lzRGF0YSA/IDAgOiBpdGVtLmxlbmd0aDsKLSAgICBtX3BsYXRmb3JtQmxvYkl0ZW0u
bV9leHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lID0gbV9wbGF0Zm9ybUJsb2JJdGVtLm1faXNE
YXRhID8gQmxhY2tCZXJyeTo6UGxhdGZvcm06OldlYkJsb2JEYXRhSXRlbTo6RE9OT1RDSEVDS0ZJ
TEVDSEFOR0UgOiBpdGVtLmV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZTsKLQotICAgIHJldHVybiAm
bV9wbGF0Zm9ybUJsb2JJdGVtOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0jZW5kaWYK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvUGxhdGZvcm1CbG9iLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9QbGF0Zm9y
bUJsb2IuaAkocmV2aXNpb24gMTU2NjkxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxh
Y2tiZXJyeS9QbGF0Zm9ybUJsb2IuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1NCArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDEyIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgot
ICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMZXNzZXIgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vu
c2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKLSAq
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCi0gKi8KLSNpZm5kZWYgUGxhdGZvcm1C
bG9iX2gKLSNkZWZpbmUgUGxhdGZvcm1CbG9iX2gKLQotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkK
LSNpbmNsdWRlICJBc3NlcnRpb25zLmgiCi0jaW5jbHVkZSAiQmxvYi5oIgotI2luY2x1ZGUgIkJs
b2JSZWdpc3RyeUltcGwuaCIKLSNpbmNsdWRlICJCbG9iU3RvcmFnZURhdGEuaCIKLQotI2luY2x1
ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybVdlYkZpbGVTeXN0ZW1GaWxlV3JpdGVyLmg+Ci0jaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEJsb2I7Ci0K
LWNsYXNzIFBsYXRmb3JtQmxvYjogcHVibGljIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpXZWJCbG9i
IHsKLXB1YmxpYzoKLSAgICBQbGF0Zm9ybUJsb2IoQmxvYiogYmxvYikKLSAgICAgICAgOiBtX2N1
cnJlbnRJdGVtKDApCi0gICAgewotICAgICAgICBBU1NFUlQoYmxvYik7Ci0gICAgICAgIG1fYmxv
YkRhdGEgPSBzdGF0aWNfY2FzdDxCbG9iUmVnaXN0cnlJbXBsJj4oYmxvYlJlZ2lzdHJ5KCkpLmdl
dEJsb2JEYXRhRnJvbVVSTChibG9iLT51cmwoKSk7Ci0gICAgfQotCi0gICAgdmlydHVhbCBCbGFj
a0JlcnJ5OjpQbGF0Zm9ybTo6V2ViQmxvYkRhdGFJdGVtKiBuZXh0RGF0YUl0ZW0oKTsKLQotcHJp
dmF0ZToKLSAgICBSZWZQdHI8QmxvYlN0b3JhZ2VEYXRhPiBtX2Jsb2JEYXRhOwotICAgIEJsYWNr
QmVycnk6OlBsYXRmb3JtOjpXZWJCbG9iRGF0YUl0ZW0gbV9wbGF0Zm9ybUJsb2JJdGVtOwotICAg
IHVuc2lnbmVkIGxvbmcgbG9uZyBtX2N1cnJlbnRJdGVtOwotfTsKLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotI2VuZGlmCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Js
YWNrYmVycnkvUGxhdGZvcm1GaWxlV3JpdGVyQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1BsYXRmb3JtRmlsZVdyaXRlckNsaWVudC5j
cHAJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVy
cnkvUGxhdGZvcm1GaWxlV3JpdGVyQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2NSAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1p
dGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICog
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMZXNzZXIg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMK
LSAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhl
IEZyZWUKLSAqIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCi0gKi8KLSNpbmNsdWRl
ICJjb25maWcuaCIKLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0jaW5jbHVkZSAiUGxhdGZvcm1G
aWxlV3JpdGVyQ2xpZW50LmgiCi0KLSNpbmNsdWRlICJBc3luY0ZpbGVXcml0ZXJCbGFja0JlcnJ5
LmgiCi0jaW5jbHVkZSAiQXN5bmNGaWxlV3JpdGVyQ2xpZW50LmgiCi0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotdm9pZCBQbGF0Zm9ybUZpbGVXcml0ZXJDbGllbnQ6Om5vdGlmeVdyaXRlKGxvbmcg
bG9uZyBieXRlcywgYm9vbCBjb21wbGV0ZSkKLXsKLSAgICBpZiAobV93cml0ZXItPmlzQWJvcnRp
bmcoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKGNvbXBsZXRlKQotICAgICAgICBtX3dy
aXRlci0+ZmluaXNoT3BlcmF0aW9uKCk7Ci0gICAgbV9jbGllbnQtPmRpZFdyaXRlKGJ5dGVzLCBj
b21wbGV0ZSk7Ci19Ci0KLXZvaWQgUGxhdGZvcm1GaWxlV3JpdGVyQ2xpZW50Ojpub3RpZnlUcnVu
Y2F0ZSgpCi17Ci0gICAgaWYgKG1fd3JpdGVyLT5pc0Fib3J0aW5nKCkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIG1fd3JpdGVyLT5maW5pc2hPcGVyYXRpb24oKTsKLSAgICBtX2NsaWVudC0+ZGlk
VHJ1bmNhdGUoKTsKLX0KLQotdm9pZCBQbGF0Zm9ybUZpbGVXcml0ZXJDbGllbnQ6Om5vdGlmeUZh
aWwoQmxhY2tCZXJyeTo6UGxhdGZvcm06OldlYkZpbGVFcnJvciBlcnJvcikKLXsKLSAgICBpZiAo
bV93cml0ZXItPmlzQWJvcnRpbmcoKSAmJiBlcnJvciAhPSBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6
V2ViRmlsZUVycm9yQWJvcnQpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIFdlIGRvbid0IHJl
c2V0IG1faXNBYm9ydGluZyB1bml0bCBuZXcgb3BlcmF0aW9ucyAod3JpdGUsIHRydW5jYXRlKSBh
cnJpdmUuCi0gICAgLy8gbm90aWZ5RmFpbCBmb3IgYWJvcnQgbWF5IG5vdCBiZSBjYWxsZWQgYmVj
YXVzZSB0aGUgcGxhdGZvcm0gd3JpdGVyIG1heSBiZQotICAgIC8vIGluIHN1Y2Nlc3NmdWwgc3Rh
dGUgZm9yIGEgcHJldmlvdXMgb3BlcmF0aW9uICh3cml0ZSBvciB0cnVuY2F0ZSkgYnV0IHRoZQot
ICAgIC8vIG5vdGlmaWNhdGlvbiBoYXNuJ3QgYXJyaXZlZCBpbiB0aGUgdGhyZWFkIHdlIGFyZSBy
dW5uaW5nIGluLiBTbyBpZiB3ZSByZXNldAotICAgIC8vIG1faXNBYm9ydGluZyBoZXJlIGFuZCBB
U1NFUlQoIW1faXNBYm9ydGluZykgaW4gb3RoZXIgb3BlcmF0aW9ucyB3ZSBjb3VsZCBoaXQKLSAg
ICAvLyB0aGUgQVNTRVJUIGJlY2F1c2UgbV9pc0Fib3J0aW5nIG1heSBub3QgYmUgcmVzZXQuCi0K
LSAgICBtX3dyaXRlci0+ZmluaXNoT3BlcmF0aW9uKCk7Ci0gICAgbV9jbGllbnQtPmRpZEZhaWwo
c3RhdGljX2Nhc3Q8RmlsZUVycm9yOjpFcnJvckNvZGU+KGVycm9yKSk7Ci19Ci0KLX0KLQotI2Vu
ZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1BsYXRmb3JtRmls
ZVdyaXRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Js
YWNrYmVycnkvUGxhdGZvcm1GaWxlV3JpdGVyQ2xpZW50LmgJKHJldmlzaW9uIDE1NjY5MSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvUGxhdGZvcm1GaWxlV3JpdGVyQ2xp
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNjggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMiBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVz
c2VyIEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAq
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQotICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCi0gKiBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBN
QSAwMjExMC0xMzAxIFVTQQotICovCi0KLSNpZm5kZWYgUGxhdGZvcm1GaWxlV3JpdGVyQ2xpZW50
X2gKLSNkZWZpbmUgUGxhdGZvcm1GaWxlV3JpdGVyQ2xpZW50X2gKLQotI2lmIEVOQUJMRShGSUxF
X1NZU1RFTSkKLSNpbmNsdWRlIDxCbGFja0JlcnJ5UGxhdGZvcm1XZWJGaWxlU3lzdGVtRmlsZVdy
aXRlci5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotY2xhc3MgQXN5bmNGaWxlV3JpdGVyQmxhY2tCZXJyeTsKLWNsYXNzIEFzeW5jRmlsZVdy
aXRlckNsaWVudDsKLQotY2xhc3MgUGxhdGZvcm1GaWxlV3JpdGVyQ2xpZW50OiBwdWJsaWMgQmxh
Y2tCZXJyeTo6UGxhdGZvcm06OldlYkZpbGVXcml0ZXJDbGllbnQgewotcHVibGljOgotICAgIHN0
YXRpYyBQYXNzT3duUHRyPFBsYXRmb3JtRmlsZVdyaXRlckNsaWVudD4gY3JlYXRlKEFzeW5jRmls
ZVdyaXRlckNsaWVudCogY2xpZW50LCBBc3luY0ZpbGVXcml0ZXJCbGFja0JlcnJ5KiB3cml0ZXIp
Ci0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFBsYXRmb3JtRmlsZVdyaXRlckNs
aWVudChjbGllbnQsIHdyaXRlcikpOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCBub3RpZnlX
cml0ZShsb25nIGxvbmcgYnl0ZXMsIGJvb2wgY29tcGxldGUpOwotICAgIHZpcnR1YWwgdm9pZCBu
b3RpZnlUcnVuY2F0ZSgpOwotICAgIHZpcnR1YWwgdm9pZCBub3RpZnlGYWlsKEJsYWNrQmVycnk6
OlBsYXRmb3JtOjpXZWJGaWxlRXJyb3IpOwotCi1wcm90ZWN0ZWQ6Ci0gICAgUGxhdGZvcm1GaWxl
V3JpdGVyQ2xpZW50KEFzeW5jRmlsZVdyaXRlckNsaWVudCogY2xpZW50LCBBc3luY0ZpbGVXcml0
ZXJCbGFja0JlcnJ5KiB3cml0ZXIpCi0gICAgICAgIDogbV9jbGllbnQoY2xpZW50KQotICAgICAg
ICAsIG1fd3JpdGVyKHdyaXRlcikKLSAgICB7IH0KLQotICAgIH5QbGF0Zm9ybUZpbGVXcml0ZXJD
bGllbnQoKSB7IH0KLQotcHJpdmF0ZToKLSAgICBBc3luY0ZpbGVXcml0ZXJDbGllbnQqIG1fY2xp
ZW50OwotICAgIEFzeW5jRmlsZVdyaXRlckJsYWNrQmVycnkqIG1fd3JpdGVyOwotfTsKLQotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQotCi1uYW1lc3BhY2UgV1RGIHsKLQotdGVtcGxhdGUgPD4gaW5s
aW5lIHZvaWQgZGVsZXRlT3duZWRQdHI8V2ViQ29yZTo6UGxhdGZvcm1GaWxlV3JpdGVyQ2xpZW50
PihXZWJDb3JlOjpQbGF0Zm9ybUZpbGVXcml0ZXJDbGllbnQqIHB0cikKLXsKLSAgICBCbGFja0Jl
cnJ5OjpQbGF0Zm9ybTo6ZGVsZXRlR3VhcmRlZE9iamVjdChwdHIpOwotfQotCi19Ci0KLSNlbmRp
ZgotI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1dvcmtl
ckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeS5j
cHAJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVy
cnkvV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsMjA1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTMgUmVzZWFyY2gg
SW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICog
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1Ymxp
YwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKLSAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0g
KgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBH
ZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90
LCB3cml0ZSB0byB0aGUgRnJlZQotICogU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EK
LSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKSAmJiBF
TkFCTEUoV09SS0VSUykKLSNpbmNsdWRlICJXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5
LmgiCi0KLSNpbmNsdWRlICJBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MuaCIKLSNpbmNsdWRlICJB
c3luY0ZpbGVXcml0ZXJDbGllbnQuaCIKLSNpbmNsdWRlICJDcm9zc1RocmVhZFRhc2suaCIKLSNp
bmNsdWRlICJXb3JrZXJBc3luY0ZpbGVXcml0ZXJCbGFja0JlcnJ5LmgiCi0jaW5jbHVkZSAiV29y
a2VyR2xvYmFsU2NvcGUuaCIKLSNpbmNsdWRlICJXb3JrZXJMb2FkZXJQcm94eS5oIgotI2luY2x1
ZGUgIldvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzLmgiCi0jaW5jbHVkZSAi
V29ya2VyVGhyZWFkLmgiCi0KLSNpbmNsdWRlIDxCbGFja0JlcnJ5UGxhdGZvcm1NZXNzYWdlQ2xp
ZW50Lmg+Ci0jaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgotCi11c2luZyBC
bGFja0JlcnJ5OjpQbGF0Zm9ybTo6V2ViRmlsZVN5c3RlbTsKLXVzaW5nIEJsYWNrQmVycnk6OlBs
YXRmb3JtOjpXZWJGaWxlV3JpdGVyOwotdXNpbmcgQmxhY2tCZXJyeTo6UGxhdGZvcm06OndlYktp
dFRocmVhZE1lc3NhZ2VDbGllbnQ7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotV29ya2VyQXN5
bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6V29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeShX
b3JrZXJHbG9iYWxTY29wZSogY29udGV4dCwgY29uc3QgU3RyaW5nJiBtb2RlLCBQYXNzT3duUHRy
PFdlYkZpbGVTeXN0ZW0+IHBsYXRmb3JtRmlsZVN5c3RlbSkKLSAgICA6IEFzeW5jRmlsZVN5c3Rl
bUJsYWNrQmVycnkocGxhdGZvcm1GaWxlU3lzdGVtKQotICAgICwgbV9jb250ZXh0KGNvbnRleHQp
Ci0gICAgLCBtX21vZGUobW9kZSkKLXsKLX0KLQotV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tC
ZXJyeTo6fldvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnkoKQotewotfQotCi1ib29sIFdv
cmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OndhaXRGb3JPcGVyYXRpb25Ub0NvbXBsZXRl
KCkKLXsKLSAgICBpZiAobV9jb250ZXh0LT50aHJlYWQoKS0+cnVuTG9vcCgpLnJ1bkluTW9kZSht
X2NvbnRleHQsIG1fbW9kZSkgPT0gTWVzc2FnZVF1ZXVlVGVybWluYXRlZCkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIHJldHVybiB0cnVlOwotfQotCi12b2lkIFdvcmtlckFzeW5jRmlsZVN5
c3RlbUJsYWNrQmVycnk6Om9wZW5GaWxlU3lzdGVtT25NYWluVGhyZWFkKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIGJhc2VQYXRoLCBjb25zdCBTdHJpbmcmIHN0b3JhZ2VJ
ZGVudGlmaWVyLCBGaWxlU3lzdGVtVHlwZSB0eXBlLCBsb25nIGxvbmcgc2l6ZSwgYm9vbCBjcmVh
dGUsIFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKiBjYWxsYmFja3MpCi17
Ci0gICAgV2ViRmlsZVN5c3RlbTo6b3BlbkZpbGVTeXN0ZW0od2ViS2l0VGhyZWFkTWVzc2FnZUNs
aWVudCgpLCBiYXNlUGF0aCwgc3RvcmFnZUlkZW50aWZpZXIsIHN0YXRpY19jYXN0PFdlYkZpbGVT
eXN0ZW06OlR5cGU+KHR5cGUpLCBzaXplLCBjcmVhdGUsIGNhbGxiYWNrcywgMCk7Ci19Ci0KLXZv
aWQgV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6ZGVsZXRlRmlsZVN5c3RlbU9uTWFp
blRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBiYXNlUGF0aCwg
Y29uc3QgU3RyaW5nJiBzdG9yYWdlSWRlbnRpZmllciwgRmlsZVN5c3RlbVR5cGUgdHlwZSwgV29y
a2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MqIGNhbGxiYWNrcykKLXsKLSAgICBX
ZWJGaWxlU3lzdGVtOjpkZWxldGVGaWxlU3lzdGVtKHdlYktpdFRocmVhZE1lc3NhZ2VDbGllbnQo
KSwgYmFzZVBhdGgsIHN0b3JhZ2VJZGVudGlmaWVyLCBzdGF0aWNfY2FzdDxXZWJGaWxlU3lzdGVt
OjpUeXBlPih0eXBlKSwgY2FsbGJhY2tzKTsKLX0KLQotdm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0
ZW1CbGFja0JlcnJ5Ojptb3ZlT25NYWluVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBX
ZWJGaWxlU3lzdGVtKiBwbGF0Zm9ybUZpbGVTeXN0ZW0sIGNvbnN0IFVSTCYgc291cmNlUGF0aCwg
Y29uc3QgVVJMJiBkZXN0aW5hdGlvblBhdGgsIFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVt
Q2FsbGJhY2tzKiBjYWxsYmFja3MpCi17Ci0gICAgcGxhdGZvcm1GaWxlU3lzdGVtLT5tb3ZlKGZp
bGVTeXN0ZW1VUkxUb1BhdGgoc291cmNlUGF0aCksIGZpbGVTeXN0ZW1VUkxUb1BhdGgoZGVzdGlu
YXRpb25QYXRoKSwgY2FsbGJhY2tzKTsKLX0KLQotdm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1C
bGFja0JlcnJ5Ojpjb3B5T25NYWluVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJG
aWxlU3lzdGVtKiBwbGF0Zm9ybUZpbGVTeXN0ZW0sIGNvbnN0IFVSTCYgc291cmNlUGF0aCwgY29u
c3QgVVJMJiBkZXN0aW5hdGlvblBhdGgsIFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2Fs
bGJhY2tzKiBjYWxsYmFja3MpCi17Ci0gICAgcGxhdGZvcm1GaWxlU3lzdGVtLT5jb3B5KGZpbGVT
eXN0ZW1VUkxUb1BhdGgoc291cmNlUGF0aCksIGZpbGVTeXN0ZW1VUkxUb1BhdGgoZGVzdGluYXRp
b25QYXRoKSwgY2FsbGJhY2tzKTsKLX0KLQotdm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFj
a0JlcnJ5OjpyZW1vdmVPbk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkZp
bGVTeXN0ZW0qIHBsYXRmb3JtRmlsZVN5c3RlbSwgY29uc3QgVVJMJiBwYXRoLCBXb3JrZXJQbGF0
Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyogY2FsbGJhY2tzKQotewotICAgIHBsYXRmb3Jt
RmlsZVN5c3RlbS0+cmVtb3ZlKGZpbGVTeXN0ZW1VUkxUb1BhdGgocGF0aCksIGNhbGxiYWNrcyk7
Ci19Ci0KLXZvaWQgV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6cmVtb3ZlUmVjdXJz
aXZlbHlPbk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0q
IHBsYXRmb3JtRmlsZVN5c3RlbSwgY29uc3QgVVJMJiBwYXRoLCBXb3JrZXJQbGF0Zm9ybUFzeW5j
RmlsZVN5c3RlbUNhbGxiYWNrcyogY2FsbGJhY2tzKQotewotICAgIHBsYXRmb3JtRmlsZVN5c3Rl
bS0+cmVtb3ZlUmVjdXJzaXZlbHkoZmlsZVN5c3RlbVVSTFRvUGF0aChwYXRoKSwgY2FsbGJhY2tz
KTsKLX0KLQotdm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpyZWFkTWV0YWRh
dGFPbk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0qIHBs
YXRmb3JtRmlsZVN5c3RlbSwgY29uc3QgVVJMJiBwYXRoLCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmls
ZVN5c3RlbUNhbGxiYWNrcyogY2FsbGJhY2tzKQotewotICAgIHBsYXRmb3JtRmlsZVN5c3RlbS0+
cmVhZE1ldGFkYXRhKGZpbGVTeXN0ZW1VUkxUb1BhdGgocGF0aCksIGNhbGxiYWNrcyk7Ci19Ci0K
LXZvaWQgV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6Y3JlYXRlRmlsZU9uTWFpblRo
cmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSogcGxhdGZvcm1GaWxl
U3lzdGVtLCBjb25zdCBVUkwmIHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBXb3JrZXJQbGF0Zm9ybUFz
eW5jRmlsZVN5c3RlbUNhbGxiYWNrcyogY2FsbGJhY2tzKQotewotICAgIHBsYXRmb3JtRmlsZVN5
c3RlbS0+Y3JlYXRlRmlsZShmaWxlU3lzdGVtVVJMVG9QYXRoKHBhdGgpLCBleGNsdXNpdmUsIGNh
bGxiYWNrcyk7Ci19Ci0KLXZvaWQgV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6Y3Jl
YXRlRGlyZWN0b3J5T25NYWluVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxl
U3lzdGVtKiBwbGF0Zm9ybUZpbGVTeXN0ZW0sIGNvbnN0IFVSTCYgcGF0aCwgYm9vbCBleGNsdXNp
dmUsIFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKiBjYWxsYmFja3MpCi17
Ci0gICAgcGxhdGZvcm1GaWxlU3lzdGVtLT5jcmVhdGVEaXJlY3RvcnkoZmlsZVN5c3RlbVVSTFRv
UGF0aChwYXRoKSwgZXhjbHVzaXZlLCBjYWxsYmFja3MpOwotfQotCi12b2lkIFdvcmtlckFzeW5j
RmlsZVN5c3RlbUJsYWNrQmVycnk6OmZpbGVFeGlzdHNPbk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0qIHBsYXRmb3JtRmlsZVN5c3RlbSwgY29uc3QgVVJM
JiBwYXRoLCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyogY2FsbGJhY2tz
KQotewotICAgIHBsYXRmb3JtRmlsZVN5c3RlbS0+ZmlsZUV4aXN0cyhmaWxlU3lzdGVtVVJMVG9Q
YXRoKHBhdGgpLCBjYWxsYmFja3MpOwotfQotCi12b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUJs
YWNrQmVycnk6OmRpcmVjdG9yeUV4aXN0c09uTWFpblRocmVhZChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgV2ViRmlsZVN5c3RlbSogcGxhdGZvcm1GaWxlU3lzdGVtLCBjb25zdCBVUkwmIHBhdGgs
IFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKiBjYWxsYmFja3MpCi17Ci0g
ICAgcGxhdGZvcm1GaWxlU3lzdGVtLT5kaXJlY3RvcnlFeGlzdHMoZmlsZVN5c3RlbVVSTFRvUGF0
aChwYXRoKSwgY2FsbGJhY2tzKTsKLX0KLQotdm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFj
a0JlcnJ5OjpyZWFkRGlyZWN0b3J5T25NYWluVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBXZWJGaWxlU3lzdGVtKiBwbGF0Zm9ybUZpbGVTeXN0ZW0sIGNvbnN0IFVSTCYgcGF0aCwgV29y
a2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MqIGNhbGxiYWNrcykKLXsKLSAgICBw
bGF0Zm9ybUZpbGVTeXN0ZW0tPnJlYWREaXJlY3RvcnkoZmlsZVN5c3RlbVVSTFRvUGF0aChwYXRo
KSwgY2FsbGJhY2tzKTsKLX0KLQotdm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5
OjpjcmVhdGVXcml0ZXJPbk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkZp
bGVTeXN0ZW0qIHBsYXRmb3JtRmlsZVN5c3RlbSwgQXN5bmNGaWxlV3JpdGVyQ2xpZW50KiwgY29u
c3QgVVJMJiBwYXRoLCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyogY2Fs
bGJhY2tzKQotewotICAgIFdlYkZpbGVXcml0ZXI6OmNyZWF0ZVdyaXRlcihwbGF0Zm9ybUZpbGVT
eXN0ZW0sIGZpbGVTeXN0ZW1VUkxUb1BhdGgocGF0aCksIGNhbGxiYWNrcyk7Ci19Ci0KLXZvaWQg
V29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6Y3JlYXRlU25hcHNob3RGaWxlQW5kUmVh
ZE1ldGFkYXRhT25NYWluVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxlU3lz
dGVtKiBwbGF0Zm9ybUZpbGVTeXN0ZW0sIGNvbnN0IFVSTCYgcGF0aCwgV29ya2VyUGxhdGZvcm1B
c3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MqIGNhbGxiYWNrcykKLXsKLSAgICBwbGF0Zm9ybUZpbGVT
eXN0ZW0tPmNyZWF0ZVNuYXBzaG90RmlsZUFuZFJlYWRNZXRhZGF0YShmaWxlU3lzdGVtVVJMVG9Q
YXRoKHBhdGgpLCBjYWxsYmFja3MpOwotfQotCi12b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUJs
YWNrQmVycnk6Om9wZW5GaWxlU3lzdGVtKFdvcmtlckdsb2JhbFNjb3BlKiBjb250ZXh0LCBjb25z
dCBVUkwmIHJvb3RVUkwsIGNvbnN0IFN0cmluZyYgbW9kZSwgY29uc3QgU3RyaW5nJiBiYXNlUGF0
aCwgY29uc3QgU3RyaW5nJiBzdG9yYWdlSWRlbnRpZmllciwgRmlsZVN5c3RlbVR5cGUgdHlwZSwg
bG9uZyBsb25nIHNpemUsIGJvb2wgY3JlYXRlLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNh
bGxiYWNrcz4gY2FsbGJhY2tzKQotewotICAgIEFTU0VSVChjb250ZXh0KTsKLSAgICBwb3N0VGFz
a1RvTWFpblRocmVhZChjcmVhdGVDYWxsYmFja1Rhc2soJldvcmtlckFzeW5jRmlsZVN5c3RlbUJs
YWNrQmVycnk6Om9wZW5GaWxlU3lzdGVtT25NYWluVGhyZWFkLCBiYXNlUGF0aCwgc3RvcmFnZUlk
ZW50aWZpZXIsIHR5cGUsIHNpemUsIGNyZWF0ZSwgbmV3IFdvcmtlclBsYXRmb3JtQXN5bmNGaWxl
U3lzdGVtQ2FsbGJhY2tzKGNhbGxiYWNrcywgY29udGV4dCwgbW9kZSwgcm9vdFVSTCkpKTsKLX0K
LQotdm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpkZWxldGVGaWxlU3lzdGVt
KFdvcmtlckdsb2JhbFNjb3BlKiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG1vZGUsIGNvbnN0IFN0
cmluZyYgYmFzZVBhdGgsIGNvbnN0IFN0cmluZyYgc3RvcmFnZUlkZW50aWZpZXIsIEZpbGVTeXN0
ZW1UeXBlIHR5cGUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFj
a3MpCi17Ci0gICAgQVNTRVJUKGNvbnRleHQpOwotICAgIHBvc3RUYXNrVG9NYWluVGhyZWFkKGNy
ZWF0ZUNhbGxiYWNrVGFzaygmV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6ZGVsZXRl
RmlsZVN5c3RlbU9uTWFpblRocmVhZCwgYmFzZVBhdGgsIHN0b3JhZ2VJZGVudGlmaWVyLCB0eXBl
LCBuZXcgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MoY2FsbGJhY2tzLCBj
b250ZXh0LCBtb2RlKSkpOwotfQotCi12b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVy
cnk6Om1vdmUoY29uc3QgVVJMJiBzb3VyY2VQYXRoLCBjb25zdCBVUkwmIGRlc3RpbmF0aW9uUGF0
aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKLXsKLSAg
ICBwb3N0VGFza1RvTWFpblRocmVhZChjcmVhdGVDYWxsYmFja1Rhc2soJldvcmtlckFzeW5jRmls
ZVN5c3RlbUJsYWNrQmVycnk6Om1vdmVPbk1haW5UaHJlYWQsIG1fcGxhdGZvcm1GaWxlU3lzdGVt
LmdldCgpLCBzb3VyY2VQYXRoLCBkZXN0aW5hdGlvblBhdGgsIG5ldyBXb3JrZXJQbGF0Zm9ybUFz
eW5jRmlsZVN5c3RlbUNhbGxiYWNrcyhjYWxsYmFja3MsIG1fY29udGV4dCwgbV9tb2RlKSkpOwot
fQotCi12b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OmNvcHkoY29uc3QgVVJM
JiBzb3VyY2VQYXRoLCBjb25zdCBVUkwmIGRlc3RpbmF0aW9uUGF0aCwgUGFzc093blB0cjxBc3lu
Y0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKLXsKLSAgICBwb3N0VGFza1RvTWFpblRo
cmVhZChjcmVhdGVDYWxsYmFja1Rhc2soJldvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6
OmNvcHlPbk1haW5UaHJlYWQsIG1fcGxhdGZvcm1GaWxlU3lzdGVtLmdldCgpLCBzb3VyY2VQYXRo
LCBkZXN0aW5hdGlvblBhdGgsIG5ldyBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxi
YWNrcyhjYWxsYmFja3MsIG1fY29udGV4dCwgbV9tb2RlKSkpOwotfQotCi12b2lkIFdvcmtlckFz
eW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OnJlbW92ZShjb25zdCBVUkwmIHBhdGgsIFBhc3NPd25Q
dHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCi17Ci0gICAgcG9zdFRhc2tU
b01haW5UaHJlYWQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFj
a0JlcnJ5OjpyZW1vdmVPbk1haW5UaHJlYWQsIG1fcGxhdGZvcm1GaWxlU3lzdGVtLmdldCgpLCBw
YXRoLCBuZXcgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MoY2FsbGJhY2tz
LCBtX2NvbnRleHQsIG1fbW9kZSkpKTsKLX0KLQotdm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1C
bGFja0JlcnJ5OjpyZW1vdmVSZWN1cnNpdmVseShjb25zdCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8
QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCi17Ci0gICAgcG9zdFRhc2tUb01h
aW5UaHJlYWQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0Jl
cnJ5OjpyZW1vdmVSZWN1cnNpdmVseU9uTWFpblRocmVhZCwgbV9wbGF0Zm9ybUZpbGVTeXN0ZW0u
Z2V0KCksIHBhdGgsIG5ldyBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyhj
YWxsYmFja3MsIG1fY29udGV4dCwgbV9tb2RlKSkpOwotfQotCi12b2lkIFdvcmtlckFzeW5jRmls
ZVN5c3RlbUJsYWNrQmVycnk6OnJlYWRNZXRhZGF0YShjb25zdCBVUkwmIHBhdGgsIFBhc3NPd25Q
dHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCi17Ci0gICAgcG9zdFRhc2tU
b01haW5UaHJlYWQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFj
a0JlcnJ5OjpyZWFkTWV0YWRhdGFPbk1haW5UaHJlYWQsIG1fcGxhdGZvcm1GaWxlU3lzdGVtLmdl
dCgpLCBwYXRoLCBuZXcgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MoY2Fs
bGJhY2tzLCBtX2NvbnRleHQsIG1fbW9kZSkpKTsKLX0KLQotdm9pZCBXb3JrZXJBc3luY0ZpbGVT
eXN0ZW1CbGFja0JlcnJ5OjpjcmVhdGVGaWxlKGNvbnN0IFVSTCYgcGF0aCwgYm9vbCBleGNsdXNp
dmUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCi17Ci0g
ICAgcG9zdFRhc2tUb01haW5UaHJlYWQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZXb3JrZXJBc3luY0Zp
bGVTeXN0ZW1CbGFja0JlcnJ5OjpjcmVhdGVGaWxlT25NYWluVGhyZWFkLCBtX3BsYXRmb3JtRmls
ZVN5c3RlbS5nZXQoKSwgcGF0aCwgZXhjbHVzaXZlLCBuZXcgV29ya2VyUGxhdGZvcm1Bc3luY0Zp
bGVTeXN0ZW1DYWxsYmFja3MoY2FsbGJhY2tzLCBtX2NvbnRleHQsIG1fbW9kZSkpKTsKLX0KLQot
dm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpjcmVhdGVEaXJlY3RvcnkoY29u
c3QgVVJMJiBwYXRoLCBib29sIGV4Y2x1c2l2ZSwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1D
YWxsYmFja3M+IGNhbGxiYWNrcykKLXsKLSAgICBwb3N0VGFza1RvTWFpblRocmVhZChjcmVhdGVD
YWxsYmFja1Rhc2soJldvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OmNyZWF0ZURpcmVj
dG9yeU9uTWFpblRocmVhZCwgbV9wbGF0Zm9ybUZpbGVTeXN0ZW0uZ2V0KCksIHBhdGgsIGV4Y2x1
c2l2ZSwgbmV3IFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKGNhbGxiYWNr
cywgbV9jb250ZXh0LCBtX21vZGUpKSk7Ci19Ci0KLXZvaWQgV29ya2VyQXN5bmNGaWxlU3lzdGVt
QmxhY2tCZXJyeTo6ZmlsZUV4aXN0cyhjb25zdCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNG
aWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCi17Ci0gICAgcG9zdFRhc2tUb01haW5UaHJl
YWQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5Ojpm
aWxlRXhpc3RzT25NYWluVGhyZWFkLCBtX3BsYXRmb3JtRmlsZVN5c3RlbS5nZXQoKSwgcGF0aCwg
bmV3IFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKGNhbGxiYWNrcywgbV9j
b250ZXh0LCBtX21vZGUpKSk7Ci19Ci0KLXZvaWQgV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tC
ZXJyeTo6ZGlyZWN0b3J5RXhpc3RzKGNvbnN0IFVSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0Zp
bGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKLXsKLSAgICBwb3N0VGFza1RvTWFpblRocmVh
ZChjcmVhdGVDYWxsYmFja1Rhc2soJldvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OmRp
cmVjdG9yeUV4aXN0c09uTWFpblRocmVhZCwgbV9wbGF0Zm9ybUZpbGVTeXN0ZW0uZ2V0KCksIHBh
dGgsIG5ldyBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyhjYWxsYmFja3Ms
IG1fY29udGV4dCwgbV9tb2RlKSkpOwotfQotCi12b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUJs
YWNrQmVycnk6OnJlYWREaXJlY3RvcnkoY29uc3QgVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5j
RmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQotewotICAgIHBvc3RUYXNrVG9NYWluVGhy
ZWFkKGNyZWF0ZUNhbGxiYWNrVGFzaygmV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6
cmVhZERpcmVjdG9yeU9uTWFpblRocmVhZCwgbV9wbGF0Zm9ybUZpbGVTeXN0ZW0uZ2V0KCksIHBh
dGgsIG5ldyBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyhjYWxsYmFja3Ms
IG1fY29udGV4dCwgbV9tb2RlKSkpOwotfQotCi12b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUJs
YWNrQmVycnk6OmNyZWF0ZVdyaXRlcihBc3luY0ZpbGVXcml0ZXJDbGllbnQqIGNsaWVudCwgY29u
c3QgVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJh
Y2tzKQotewotICAgIHBvc3RUYXNrVG9NYWluVGhyZWFkKGNyZWF0ZUNhbGxiYWNrVGFzaygmV29y
a2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6Y3JlYXRlV3JpdGVyT25NYWluVGhyZWFkLCBt
X3BsYXRmb3JtRmlsZVN5c3RlbS5nZXQoKSwgY2xpZW50LCBwYXRoLCBuZXcgV29ya2VyUGxhdGZv
cm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MoY2FsbGJhY2tzLCBjbGllbnQsIG1fY29udGV4dCwg
bV9tb2RlKSkpOwotfQotCi12b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OmNy
ZWF0ZVNuYXBzaG90RmlsZUFuZFJlYWRNZXRhZGF0YShjb25zdCBVUkwmIHBhdGgsIFBhc3NPd25Q
dHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCi17Ci0gICAgcG9zdFRhc2tU
b01haW5UaHJlYWQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFj
a0JlcnJ5OjpjcmVhdGVTbmFwc2hvdEZpbGVBbmRSZWFkTWV0YWRhdGFPbk1haW5UaHJlYWQsIG1f
cGxhdGZvcm1GaWxlU3lzdGVtLmdldCgpLCBwYXRoLCBuZXcgV29ya2VyUGxhdGZvcm1Bc3luY0Zp
bGVTeXN0ZW1DYWxsYmFja3MoY2FsbGJhY2tzLCBtX2NvbnRleHQsIG1fbW9kZSkpKTsKLX0KLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkgJiYg
RU5BQkxFKFdPUktFUlMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5
L1dvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnkuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1dvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVy
cnkuaAkocmV2aXNpb24gMTU2NjkxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2ti
ZXJyeS9Xb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5LmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsODYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBSZXNlYXJjaCBJbiBNb3Rp
b24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0gKiBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICog
TGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwg
UHVibGljCi0gKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRl
IHRvIHRoZSBGcmVlCi0gKiBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQQotICovCi0K
LSNpZm5kZWYgV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeV9oCi0jZGVmaW5lIFdvcmtl
ckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnlfaAotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKSAm
JiBFTkFCTEUoV09SS0VSUykKLSNpbmNsdWRlICJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5Lmgi
Ci0KLSNpbmNsdWRlICJGaWxlU3lzdGVtVHlwZS5oIgotCi0jaW5jbHVkZSA8d3RmL1Bhc3NPd25Q
dHIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1jbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwotY2xhc3MgV29ya2VyUGxhdGZv
cm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M7Ci1jbGFzcyBXb3JrZXJHbG9iYWxTY29wZTsKLQot
Y2xhc3MgV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeSA6IHB1YmxpYyBBc3luY0ZpbGVT
eXN0ZW1CbGFja0JlcnJ5IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxXb3JrZXJB
c3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5PiBjcmVhdGUoV29ya2VyR2xvYmFsU2NvcGUqIGNvbnRl
eHQsIGNvbnN0IFN0cmluZyYgbW9kZSwgUGFzc093blB0cjxCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6
V2ViRmlsZVN5c3RlbT4gcGxhdGZvcm1GaWxlU3lzdGVtKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UHRyKG5ldyBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5KGNvbnRleHQsIG1v
ZGUsIHBsYXRmb3JtRmlsZVN5c3RlbSkpOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIG9wZW5G
aWxlU3lzdGVtKFdvcmtlckdsb2JhbFNjb3BlKiwgY29uc3QgVVJMJiByb290VVJMLCBjb25zdCBT
dHJpbmcmIG1vZGUsIGNvbnN0IFN0cmluZyYgYmFzZVBhdGgsIGNvbnN0IFN0cmluZyYgc3RvcmFn
ZUlkZW50aWZpZXIsIEZpbGVTeXN0ZW1UeXBlLCBsb25nIGxvbmcgc2l6ZSwgYm9vbCBjcmVhdGUs
IFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7Ci0gICAgc3RhdGljIHZvaWQg
ZGVsZXRlRmlsZVN5c3RlbShXb3JrZXJHbG9iYWxTY29wZSosIGNvbnN0IFN0cmluZyYgbW9kZSwg
Y29uc3QgU3RyaW5nJiBiYXNlUGF0aCwgY29uc3QgU3RyaW5nJiBzdG9yYWdlSWRlbnRpZmllciwg
RmlsZVN5c3RlbVR5cGUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7Ci0g
ICAgdmlydHVhbCB+V29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeSgpOwotICAgIHZpcnR1
YWwgYm9vbCB3YWl0Rm9yT3BlcmF0aW9uVG9Db21wbGV0ZSgpOwotICAgIHZpcnR1YWwgdm9pZCBt
b3ZlKGNvbnN0IFVSTCYgc291cmNlUGF0aCwgY29uc3QgVVJMJiBkZXN0aW5hdGlvblBhdGgsIFBh
c3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7Ci0gICAgdmlydHVhbCB2b2lkIGNv
cHkoY29uc3QgVVJMJiBzb3VyY2VQYXRoLCBjb25zdCBVUkwmIGRlc3RpbmF0aW9uUGF0aCwgUGFz
c093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVt
b3ZlKGNvbnN0IFVSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+
KTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlUmVjdXJzaXZlbHkoY29uc3QgVVJMJiBwYXRoLCBQ
YXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwotICAgIHZpcnR1YWwgdm9pZCBy
ZWFkTWV0YWRhdGEoY29uc3QgVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNh
bGxiYWNrcz4pOwotICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVGaWxlKGNvbnN0IFVSTCYgcGF0aCwg
Ym9vbCBleGNsdXNpdmUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7Ci0g
ICAgdmlydHVhbCB2b2lkIGNyZWF0ZURpcmVjdG9yeShjb25zdCBVUkwmIHBhdGgsIGJvb2wgZXhj
bHVzaXZlLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwotICAgIHZpcnR1
YWwgdm9pZCBmaWxlRXhpc3RzKGNvbnN0IFVSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVT
eXN0ZW1DYWxsYmFja3M+KTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlyZWN0b3J5RXhpc3RzKGNvbnN0
IFVSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKLSAgICB2
aXJ0dWFsIHZvaWQgcmVhZERpcmVjdG9yeShjb25zdCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5
bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7Ci0gICAgdmlydHVhbCB2b2lkIGNyZWF0ZVdyaXRlcihB
c3luY0ZpbGVXcml0ZXJDbGllbnQqLCBjb25zdCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNG
aWxlU3lzdGVtQ2FsbGJhY2tzPik7Ci0gICAgdmlydHVhbCB2b2lkIGNyZWF0ZVNuYXBzaG90Rmls
ZUFuZFJlYWRNZXRhZGF0YShjb25zdCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lz
dGVtQ2FsbGJhY2tzPik7Ci0KLXByaXZhdGU6Ci0gICAgV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxh
Y2tCZXJyeShXb3JrZXJHbG9iYWxTY29wZSosIGNvbnN0IFN0cmluZyYgbW9kZSwgUGFzc093blB0
cjxCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6V2ViRmlsZVN5c3RlbT4gcGxhdGZvcm1GaWxlU3lzdGVt
KTsKLSAgICBzdGF0aWMgdm9pZCBvcGVuRmlsZVN5c3RlbU9uTWFpblRocmVhZChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBiYXNlUGF0aCwgY29uc3QgU3RyaW5nJiBzdG9y
YWdlSWRlbnRpZmllciwgRmlsZVN5c3RlbVR5cGUsIGxvbmcgbG9uZyBzaXplLCBib29sIGNyZWF0
ZSwgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MqKTsKLSAgICBzdGF0aWMg
dm9pZCBkZWxldGVGaWxlU3lzdGVtT25NYWluVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBjb25zdCBTdHJpbmcmIGJhc2VQYXRoLCBjb25zdCBTdHJpbmcmIHN0b3JhZ2VJZGVudGlmaWVy
LCBGaWxlU3lzdGVtVHlwZSwgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3Mq
KTsKLSAgICBzdGF0aWMgdm9pZCBtb3ZlT25NYWluVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6V2ViRmlsZVN5c3RlbSosIGNvbnN0IFVSTCYgc291
cmNlUGF0aCwgY29uc3QgVVJMJiBkZXN0aW5hdGlvblBhdGgsIFdvcmtlclBsYXRmb3JtQXN5bmNG
aWxlU3lzdGVtQ2FsbGJhY2tzKik7Ci0gICAgc3RhdGljIHZvaWQgY29weU9uTWFpblRocmVhZChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgQmxhY2tCZXJyeTo6UGxhdGZvcm06OldlYkZpbGVTeXN0
ZW0qLCBjb25zdCBVUkwmIHNvdXJjZVBhdGgsIGNvbnN0IFVSTCYgZGVzdGluYXRpb25QYXRoLCBX
b3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyopOwotICAgIHN0YXRpYyB2b2lk
IHJlbW92ZU9uTWFpblRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgQmxhY2tCZXJyeTo6
UGxhdGZvcm06OldlYkZpbGVTeXN0ZW0qLCBjb25zdCBVUkwmIHBhdGgsIFdvcmtlclBsYXRmb3Jt
QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKik7Ci0gICAgc3RhdGljIHZvaWQgcmVtb3ZlUmVjdXJz
aXZlbHlPbk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEJsYWNrQmVycnk6OlBs
YXRmb3JtOjpXZWJGaWxlU3lzdGVtKiwgY29uc3QgVVJMJiBwYXRoLCBXb3JrZXJQbGF0Zm9ybUFz
eW5jRmlsZVN5c3RlbUNhbGxiYWNrcyopOwotICAgIHN0YXRpYyB2b2lkIHJlYWRNZXRhZGF0YU9u
TWFpblRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgQmxhY2tCZXJyeTo6UGxhdGZvcm06
OldlYkZpbGVTeXN0ZW0qLCBjb25zdCBVUkwmIHBhdGgsIFdvcmtlclBsYXRmb3JtQXN5bmNGaWxl
U3lzdGVtQ2FsbGJhY2tzKik7Ci0gICAgc3RhdGljIHZvaWQgY3JlYXRlRmlsZU9uTWFpblRocmVh
ZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgQmxhY2tCZXJyeTo6UGxhdGZvcm06OldlYkZpbGVT
eXN0ZW0qLCBjb25zdCBVUkwmIHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBXb3JrZXJQbGF0Zm9ybUFz
eW5jRmlsZVN5c3RlbUNhbGxiYWNrcyopOwotICAgIHN0YXRpYyB2b2lkIGNyZWF0ZURpcmVjdG9y
eU9uTWFpblRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgQmxhY2tCZXJyeTo6UGxhdGZv
cm06OldlYkZpbGVTeXN0ZW0qLCBjb25zdCBVUkwmIHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBXb3Jr
ZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyopOwotICAgIHN0YXRpYyB2b2lkIGZp
bGVFeGlzdHNPbk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEJsYWNrQmVycnk6
OlBsYXRmb3JtOjpXZWJGaWxlU3lzdGVtKiwgY29uc3QgVVJMJiBwYXRoLCBXb3JrZXJQbGF0Zm9y
bUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyopOwotICAgIHN0YXRpYyB2b2lkIGRpcmVjdG9yeUV4
aXN0c09uTWFpblRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgQmxhY2tCZXJyeTo6UGxh
dGZvcm06OldlYkZpbGVTeXN0ZW0qLCBjb25zdCBVUkwmIHBhdGgsIFdvcmtlclBsYXRmb3JtQXN5
bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKik7Ci0gICAgc3RhdGljIHZvaWQgcmVhZERpcmVjdG9yeU9u
TWFpblRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgQmxhY2tCZXJyeTo6UGxhdGZvcm06
OldlYkZpbGVTeXN0ZW0qLCBjb25zdCBVUkwmIHBhdGgsIFdvcmtlclBsYXRmb3JtQXN5bmNGaWxl
U3lzdGVtQ2FsbGJhY2tzKik7Ci0gICAgc3RhdGljIHZvaWQgY3JlYXRlV3JpdGVyT25NYWluVGhy
ZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6V2ViRmls
ZVN5c3RlbSosIEFzeW5jRmlsZVdyaXRlckNsaWVudCosIGNvbnN0IFVSTCYgcGF0aCwgV29ya2Vy
UGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MqKTsKLSAgICBzdGF0aWMgdm9pZCBjcmVh
dGVTbmFwc2hvdEZpbGVBbmRSZWFkTWV0YWRhdGFPbk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpXZWJGaWxlU3lzdGVtKiwgY29uc3QgVVJM
JiBwYXRoLCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyopOwotCi0gICAg
V29ya2VyR2xvYmFsU2NvcGUqIG1fY29udGV4dDsKLSAgICBTdHJpbmcgbV9tb2RlOwotfTsKLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKSAm
JiBFTkFCTEUoV09SS0VSUykKLQotI2VuZGlmIC8vIFdvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNr
QmVycnlfaApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Xb3JrZXJB
c3luY0ZpbGVXcml0ZXJCbGFja0JlcnJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1dvcmtlckFzeW5jRmlsZVdyaXRlckJsYWNrQmVycnkuY3Bw
CShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5
L1dvcmtlckFzeW5jRmlsZVdyaXRlckJsYWNrQmVycnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDg4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgUmVzZWFyY2ggSW4gTW90aW9u
IExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICogTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
Ci0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExl
c3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1
YmxpYwotICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0
byB0aGUgRnJlZQotICogU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKSAmJiBFTkFCTEUoV09S
S0VSUykKLSNpbmNsdWRlICJXb3JrZXJBc3luY0ZpbGVXcml0ZXJCbGFja0JlcnJ5LmgiCi0KLSNp
bmNsdWRlICJDcm9zc1RocmVhZENvcGllci5oIgotI2luY2x1ZGUgIkNyb3NzVGhyZWFkVGFzay5o
IgotI2luY2x1ZGUgIlBsYXRmb3JtQmxvYi5oIgotI2luY2x1ZGUgIldvcmtlclBsYXRmb3JtQXN5
bmNGaWxlU3lzdGVtQ2FsbGJhY2tzLmgiCi0jaW5jbHVkZSAiV29ya2VyUGxhdGZvcm1GaWxlV3Jp
dGVyQ2xpZW50LmgiCi0jaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCi0KLSNpbmNsdWRlIDx3dGYv
T3duUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLXZvaWQgV29ya2VyQXN5bmNGaWxlV3JpdGVyQmxhY2tCZXJyeTo6d3JpdGVPbk1haW5U
aHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpXZWJG
aWxlV3JpdGVyKiBwbGF0Zm9ybVdyaXRlciwgbG9uZyBsb25nIHBvc2l0aW9uLCBCbG9iKiBibG9i
KQotewotICAgIHBsYXRmb3JtV3JpdGVyLT53cml0ZShwb3NpdGlvbiwgbmV3IFBsYXRmb3JtQmxv
YihibG9iKSk7Ci19Ci0KLXZvaWQgV29ya2VyQXN5bmNGaWxlV3JpdGVyQmxhY2tCZXJyeTo6dHJ1
bmNhdGVPbk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEJsYWNrQmVycnk6OlBs
YXRmb3JtOjpXZWJGaWxlV3JpdGVyKiBwbGF0Zm9ybVdyaXRlciwgbG9uZyBsb25nIGxlbmd0aCkK
LXsKLSAgICBwbGF0Zm9ybVdyaXRlci0+dHJ1bmNhdGUobGVuZ3RoKTsKLX0KLQotdm9pZCBXb3Jr
ZXJBc3luY0ZpbGVXcml0ZXJCbGFja0JlcnJ5OjphYm9ydE9uTWFpblRocmVhZChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgQmxhY2tCZXJyeTo6UGxhdGZvcm06OldlYkZpbGVXcml0ZXIqIHBsYXRm
b3JtV3JpdGVyKQotewotICAgIHBsYXRmb3JtV3JpdGVyLT5hYm9ydCgpOwotfQotCi12b2lkIFdv
cmtlckFzeW5jRmlsZVdyaXRlckJsYWNrQmVycnk6OndyaXRlKGxvbmcgbG9uZyBwb3NpdGlvbiwg
QmxvYiogYmxvYikKLXsKLSAgICBiZWdpbldyaXRlT3JUcnVuY2F0ZSgpOwotICAgIHBvc3RUYXNr
VG9NYWluVGhyZWFkKGNyZWF0ZUNhbGxiYWNrVGFzaygmV29ya2VyQXN5bmNGaWxlV3JpdGVyQmxh
Y2tCZXJyeTo6d3JpdGVPbk1haW5UaHJlYWQsIG1fcGxhdGZvcm1Xcml0ZXIuZ2V0KCksIHBvc2l0
aW9uLCBibG9iKSk7Ci19Ci0KLXZvaWQgV29ya2VyQXN5bmNGaWxlV3JpdGVyQmxhY2tCZXJyeTo6
dHJ1bmNhdGUobG9uZyBsb25nIGxlbmd0aCkKLXsKLSAgICBiZWdpbldyaXRlT3JUcnVuY2F0ZSgp
OwotICAgIHBvc3RUYXNrVG9NYWluVGhyZWFkKGNyZWF0ZUNhbGxiYWNrVGFzaygmV29ya2VyQXN5
bmNGaWxlV3JpdGVyQmxhY2tCZXJyeTo6dHJ1bmNhdGVPbk1haW5UaHJlYWQsIG1fcGxhdGZvcm1X
cml0ZXIuZ2V0KCksIGxlbmd0aCkpOwotfQotCi12b2lkIFdvcmtlckFzeW5jRmlsZVdyaXRlckJs
YWNrQmVycnk6OmFib3J0KCkKLXsKLSAgICBiZWdpbkFib3J0KCk7Ci0gICAgcG9zdFRhc2tUb01h
aW5UaHJlYWQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZXb3JrZXJBc3luY0ZpbGVXcml0ZXJCbGFja0Jl
cnJ5OjphYm9ydE9uTWFpblRocmVhZCwgbV9wbGF0Zm9ybVdyaXRlci5nZXQoKSkpOwotfQotCi1i
b29sIFdvcmtlckFzeW5jRmlsZVdyaXRlckJsYWNrQmVycnk6OndhaXRGb3JPcGVyYXRpb25Ub0Nv
bXBsZXRlKCkKLXsKLSAgICB3aGlsZSAobV9pc09wZXJhdGlvbkluUHJvZ3Jlc3MpIHsKLSAgICAg
ICAgaWYgKG1fY29udGV4dC0+dGhyZWFkKCktPnJ1bkxvb3AoKS5ydW5Jbk1vZGUobV9jb250ZXh0
LCBtX21vZGUpID09IE1lc3NhZ2VRdWV1ZVRlcm1pbmF0ZWQpCi0gICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotfQotCi1QbGF0Zm9ybUZpbGVXcml0ZXJD
bGllbnQqIFdvcmtlckFzeW5jRmlsZVdyaXRlckJsYWNrQmVycnk6OnBsYXRmb3JtV3JpdGVyQ2xp
ZW50KCkKLXsKLSAgICBpZiAoIW1fcGxhdGZvcm1Xcml0ZXJDbGllbnQpCi0gICAgICAgIG1fcGxh
dGZvcm1Xcml0ZXJDbGllbnQgPSBXb3JrZXJQbGF0Zm9ybUZpbGVXcml0ZXJDbGllbnQ6OmNyZWF0
ZShtX2NvbnRleHQsIG1fbW9kZSwgbV9jbGllbnQsIHRoaXMpOwotICAgIHJldHVybiBtX3BsYXRm
b3JtV3JpdGVyQ2xpZW50LmdldCgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0jZW5k
aWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvV29ya2VyQXN5bmNG
aWxlV3JpdGVyQmxhY2tCZXJyeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2JsYWNrYmVycnkvV29ya2VyQXN5bmNGaWxlV3JpdGVyQmxhY2tCZXJyeS5oCShyZXZpc2lv
biAxNTY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1dvcmtlckFz
eW5jRmlsZVdyaXRlckJsYWNrQmVycnkuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2OCArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMZXNzZXIgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqIExp
Y2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUK
LSAqIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCi0gKi8KLQotI2lmbmRlZiBXb3Jr
ZXJBc3luY0ZpbGVXcml0ZXJCbGFja0JlcnJ5X2gKLSNkZWZpbmUgV29ya2VyQXN5bmNGaWxlV3Jp
dGVyQmxhY2tCZXJyeV9oCi0KLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pICYmIEVOQUJMRShXT1JL
RVJTKQotI2luY2x1ZGUgIkFzeW5jRmlsZVdyaXRlckJsYWNrQmVycnkuaCIKLQotI2luY2x1ZGUg
PEJsYWNrQmVycnlQbGF0Zm9ybVdlYkZpbGVTeXN0ZW1GaWxlV3JpdGVyLmg+Ci0jaW5jbHVkZSA8
d3RmL0Fzc2VydGlvbnMuaD4KLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+Ci0jaW5jbHVkZSA8d3Rm
L1Bhc3NPd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1jbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwotY2xhc3MgV29y
a2VyR2xvYmFsU2NvcGU7Ci0KLWNsYXNzIFdvcmtlckFzeW5jRmlsZVdyaXRlckJsYWNrQmVycnk6
IHB1YmxpYyBBc3luY0ZpbGVXcml0ZXJCbGFja0JlcnJ5IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMg
UGFzc093blB0cjxXb3JrZXJBc3luY0ZpbGVXcml0ZXJCbGFja0JlcnJ5PiBjcmVhdGUoV29ya2Vy
R2xvYmFsU2NvcGUqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbW9kZSwgUGFzc093blB0cjxCbGFj
a0JlcnJ5OjpQbGF0Zm9ybTo6V2ViRmlsZVdyaXRlcj4gcGxhdGZvcm1Xcml0ZXIsIEFzeW5jRmls
ZVdyaXRlckNsaWVudCogY2xpZW50KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5l
dyBXb3JrZXJBc3luY0ZpbGVXcml0ZXJCbGFja0JlcnJ5KGNvbnRleHQsIG1vZGUsIHBsYXRmb3Jt
V3JpdGVyLCBjbGllbnQpKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgd3JpdGUobG9uZyBs
b25nIHBvc2l0aW9uLCBCbG9iKik7Ci0gICAgdmlydHVhbCB2b2lkIHRydW5jYXRlKGxvbmcgbG9u
ZyBsZW5ndGgpOwotICAgIHZpcnR1YWwgdm9pZCBhYm9ydCgpOwotICAgIHZpcnR1YWwgYm9vbCB3
YWl0Rm9yT3BlcmF0aW9uVG9Db21wbGV0ZSgpOwotICAgIHZpcnR1YWwgUGxhdGZvcm1GaWxlV3Jp
dGVyQ2xpZW50KiBwbGF0Zm9ybVdyaXRlckNsaWVudCgpOwotCi1wcml2YXRlOgotICAgIFdvcmtl
ckFzeW5jRmlsZVdyaXRlckJsYWNrQmVycnkoV29ya2VyR2xvYmFsU2NvcGUqIGNvbnRleHQsIGNv
bnN0IFN0cmluZyYgbW9kZSwgUGFzc093blB0cjxCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6V2ViRmls
ZVdyaXRlcj4gcGxhdGZvcm1Xcml0ZXIsIEFzeW5jRmlsZVdyaXRlckNsaWVudCogY2xpZW50KQot
ICAgICAgICA6IEFzeW5jRmlsZVdyaXRlckJsYWNrQmVycnkocGxhdGZvcm1Xcml0ZXIsIGNsaWVu
dCkKLSAgICAgICAgLCBtX2NvbnRleHQoY29udGV4dCkKLSAgICAgICAgLCBtX21vZGUobW9kZSkK
LSAgICB7Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgd3JpdGVPbk1haW5UaHJlYWQoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpXZWJGaWxlV3JpdGVyKiBw
bGF0Zm9ybVdyaXRlciwgbG9uZyBsb25nIHBvc2l0aW9uLCBCbG9iKik7Ci0gICAgc3RhdGljIHZv
aWQgdHJ1bmNhdGVPbk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEJsYWNrQmVy
cnk6OlBsYXRmb3JtOjpXZWJGaWxlV3JpdGVyKiBwbGF0Zm9ybVdyaXRlciwgbG9uZyBsb25nIGxl
bmd0aCk7Ci0gICAgc3RhdGljIHZvaWQgYWJvcnRPbk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpXZWJGaWxlV3JpdGVyKiBwbGF0Zm9ybVdy
aXRlcik7Ci0KLSAgICBXb3JrZXJHbG9iYWxTY29wZSogbV9jb250ZXh0OwotICAgIFN0cmluZyBt
X21vZGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0jZW5kaWYKLSNlbmRpZgpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Xb3JrZXJQbGF0Zm9ybUFzeW5j
RmlsZVN5c3RlbUNhbGxiYWNrcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYmxhY2tiZXJyeS9Xb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcy5j
cHAJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVy
cnkvV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDIzMiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIFJlc2VhcmNo
IEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAq
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJs
aWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCi0gKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgot
ICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIg
R2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5v
dCwgd3JpdGUgdG8gdGhlIEZyZWUKLSAqIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNB
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkgJiYg
RU5BQkxFKFdPUktFUlMpCi0jaW5jbHVkZSAiV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1D
YWxsYmFja3MuaCIKLQotI2luY2x1ZGUgIkNyb3NzVGhyZWFkVGFzay5oIgotI2luY2x1ZGUgIldv
cmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnkuaCIKLSNpbmNsdWRlICJXb3JrZXJBc3luY0Zp
bGVXcml0ZXJCbGFja0JlcnJ5LmgiCi0jaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKLSNp
bmNsdWRlICJXb3JrZXJMb2FkZXJQcm94eS5oIgotI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgot
Ci0jaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1z
dGF0aWMgdm9pZCBwZXJmb3JtVGFza09uTWFpblRocmVhZCh2b2lkKiBjb250ZXh0KQotewotICAg
IE93blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiB0YXNrID0gYWRvcHRQdHIoc3Rh
dGljX2Nhc3Q8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayo+KGNvbnRleHQpKTsKLSAgICB0
YXNrLT5wZXJmb3JtVGFzaygwKTsKLX0KLQotdm9pZCBwb3N0VGFza1RvTWFpblRocmVhZChQYXNz
T3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IHRhc2spCi17Ci0gICAgY2FsbE9u
TWFpblRocmVhZCgmcGVyZm9ybVRhc2tPbk1haW5UaHJlYWQsIHRhc2subGVha1B0cigpKTsKLX0K
LQotdGVtcGxhdGU8PiBzdHJ1Y3QgQ3Jvc3NUaHJlYWRDb3BpZXJCYXNlPGZhbHNlLCBmYWxzZSwg
QmxhY2tCZXJyeTo6UGxhdGZvcm06OldlYkZpbGVJbmZvPiB7Ci0gICAgdHlwZWRlZiBCbGFja0Jl
cnJ5OjpQbGF0Zm9ybTo6V2ViRmlsZUluZm8gVHlwZTsKLSAgICBzdGF0aWMgVHlwZSBjb3B5KGNv
bnN0IFR5cGUmIGluZm8pCi0gICAgewotICAgICAgICBUeXBlIHJlc3VsdDsKLSAgICAgICAgcmVz
dWx0Lm1fbW9kaWZpY2F0aW9uVGltZSA9IGluZm8ubV9tb2RpZmljYXRpb25UaW1lOwotICAgICAg
ICByZXN1bHQubV9sZW5ndGggPSBpbmZvLm1fbGVuZ3RoOwotICAgICAgICByZXN1bHQubV90eXBl
ID0gaW5mby5tX3R5cGU7Ci0gICAgICAgIHJlc3VsdC5tX3BsYXRmb3JtUGF0aCA9IGluZm8ubV9w
bGF0Zm9ybVBhdGg7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotfTsKLQotdGVtcGxh
dGUgPD4gc3RydWN0IENyb3NzVGhyZWFkQ29waWVyQmFzZTxmYWxzZSwgZmFsc2UsIHN0ZDo6dmVj
dG9yPEJsYWNrQmVycnk6OlBsYXRmb3JtOjpXZWJGaWxlU3lzdGVtRW50cnk+ID4gewotICAgIHR5
cGVkZWYgc3RkOjp2ZWN0b3I8QmxhY2tCZXJyeTo6UGxhdGZvcm06OldlYkZpbGVTeXN0ZW1FbnRy
eT4gVHlwZTsKLSAgICBzdGF0aWMgVHlwZSBjb3B5KGNvbnN0IFR5cGUmIGVudHJpZXMpCi0gICAg
ewotICAgICAgICBUeXBlIHJlc3VsdChlbnRyaWVzLnNpemUoKSk7Ci0gICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgZW50cmllcy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgcmVzdWx0
W2ldLm1fbmFtZSA9IGVudHJpZXNbaV0ubV9uYW1lOwotICAgICAgICAgICAgcmVzdWx0W2ldLm1f
aXNEaXJlY3RvcnkgPSBlbnRyaWVzW2ldLm1faXNEaXJlY3Rvcnk7Ci0gICAgICAgIH0KLSAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci19OwotCi12b2lkIFdvcmtlclBsYXRmb3JtQXN5bmNG
aWxlU3lzdGVtQ2FsbGJhY2tzOjpub3RpZnlTdG9wKCkKLXsKLSAgICBtX2NhbGxiYWNrcy5jbGVh
cigpOwotICAgIHsKLSAgICAgICAgV1RGOjpNdXRleExvY2tlciBsb2NrZXIobV9tdXRleCk7Ci0g
ICAgICAgIG1fY29udGV4dCA9IDA7Ci0gICAgfQotfQotCi12b2lkIFdvcmtlclBsYXRmb3JtQXN5
bmNGaWxlU3lzdGVtQ2FsbGJhY2tzOjpub3RpZnlPcGVuRmlsZVN5c3RlbShCbGFja0JlcnJ5OjpQ
bGF0Zm9ybTo6V2ViRmlsZVN5c3RlbSogcGxhdGZvcm1GaWxlU3lzdGVtKQotewotICAgIG1fbXV0
ZXgubG9jaygpOwotICAgIGlmICghbV9jb250ZXh0KSB7Ci0gICAgICAgIG1fbXV0ZXgudW5sb2Nr
KCk7Ci0gICAgICAgIFBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzOjpkZWxldGVNZSgp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgcG9zdFRhc2tUb1dvcmtlclRocmVhZChj
cmVhdGVDYWxsYmFja1Rhc2soJm5vdGlmeU9wZW5GaWxlU3lzdGVtT25Xb3JrZXJUaHJlYWQsIHRo
aXMsIHBsYXRmb3JtRmlsZVN5c3RlbSkpOwotICAgIG1fbXV0ZXgudW5sb2NrKCk7Ci19Ci0KLXZv
aWQgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M6Om5vdGlmeVN1Y2NlZWQo
KQotewotICAgIG1fbXV0ZXgubG9jaygpOwotICAgIGlmICghbV9jb250ZXh0KSB7Ci0gICAgICAg
IG1fbXV0ZXgudW5sb2NrKCk7Ci0gICAgICAgIFBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJh
Y2tzOjpkZWxldGVNZSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgcG9zdFRhc2tU
b1dvcmtlclRocmVhZChjcmVhdGVDYWxsYmFja1Rhc2soJm5vdGlmeVN1Y2NlZWRPbldvcmtlclRo
cmVhZCwgdGhpcykpOwotICAgIG1fbXV0ZXgudW5sb2NrKCk7Ci19Ci0KLXZvaWQgV29ya2VyUGxh
dGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M6Om5vdGlmeUZhaWwoQmxhY2tCZXJyeTo6UGxh
dGZvcm06OldlYkZpbGVFcnJvciBlcnJvcikKLXsKLSAgICBtX211dGV4LmxvY2soKTsKLSAgICBp
ZiAoIW1fY29udGV4dCkgewotICAgICAgICBtX211dGV4LnVubG9jaygpOwotICAgICAgICBQbGF0
Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrczo6ZGVsZXRlTWUoKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIHBvc3RUYXNrVG9Xb3JrZXJUaHJlYWQoY3JlYXRlQ2FsbGJhY2tUYXNr
KCZub3RpZnlGYWlsT25Xb3JrZXJUaHJlYWQsIHRoaXMsIGVycm9yKSk7Ci0gICAgbV9tdXRleC51
bmxvY2soKTsKLX0KLQotdm9pZCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNr
czo6bm90aWZ5UmVhZE1ldGFkYXRhKGNvbnN0IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpXZWJGaWxl
SW5mbyYgZmlsZUluZm8pCi17Ci0gICAgbV9tdXRleC5sb2NrKCk7Ci0gICAgaWYgKCFtX2NvbnRl
eHQpIHsKLSAgICAgICAgbV9tdXRleC51bmxvY2soKTsKLSAgICAgICAgUGxhdGZvcm1Bc3luY0Zp
bGVTeXN0ZW1DYWxsYmFja3M6OmRlbGV0ZU1lKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBwb3N0VGFza1RvV29ya2VyVGhyZWFkKGNyZWF0ZUNhbGxiYWNrVGFzaygmbm90aWZ5UmVh
ZE1ldGFkYXRhT25Xb3JrZXJUaHJlYWQsIHRoaXMsIGZpbGVJbmZvKSk7Ci0gICAgbV9tdXRleC51
bmxvY2soKTsKLX0KLQotdm9pZCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNr
czo6bm90aWZ5Q3JlYXRlU25hcHNob3RGaWxlQW5kUmVhZE1ldGFkYXRhKGNvbnN0IEJsYWNrQmVy
cnk6OlBsYXRmb3JtOjpXZWJGaWxlSW5mbyYgZmlsZUluZm8pCi17Ci0gICAgbV9tdXRleC5sb2Nr
KCk7Ci0gICAgaWYgKCFtX2NvbnRleHQpIHsKLSAgICAgICAgbV9tdXRleC51bmxvY2soKTsKLSAg
ICAgICAgUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M6OmRlbGV0ZU1lKCk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBwb3N0VGFza1RvV29ya2VyVGhyZWFkKGNyZWF0ZUNh
bGxiYWNrVGFzaygmbm90aWZ5Q3JlYXRlU25hcHNob3RGaWxlQW5kUmVhZE1ldGFkYXRhT25Xb3Jr
ZXJUaHJlYWQsIHRoaXMsIGZpbGVJbmZvKSk7Ci0gICAgbV9tdXRleC51bmxvY2soKTsKLX0KLQot
dm9pZCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrczo6bm90aWZ5UmVhZERp
cmVjdG9yeShjb25zdCBzdGQ6OnZlY3RvcjxCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6V2ViRmlsZVN5
c3RlbUVudHJ5PiYgZW50cmllcywgYm9vbCBoYXNNb3JlKQotewotICAgIG1fbXV0ZXgubG9jaygp
OwotICAgIGlmICghbV9jb250ZXh0KSB7Ci0gICAgICAgIG1fbXV0ZXgudW5sb2NrKCk7Ci0gICAg
ICAgIFBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzOjpkZWxldGVNZSgpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgcG9zdFRhc2tUb1dvcmtlclRocmVhZChjcmVhdGVDYWxs
YmFja1Rhc2soJm5vdGlmeVJlYWREaXJlY3RvcnlFbnRyeU9uV29ya2VyVGhyZWFkLCB0aGlzLCBl
bnRyaWVzLCBoYXNNb3JlKSk7Ci0gICAgbV9tdXRleC51bmxvY2soKTsKLX0KLQotdm9pZCBXb3Jr
ZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrczo6bm90aWZ5Q3JlYXRlRmlsZVdyaXRl
cihCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6V2ViRmlsZVdyaXRlciogcGxhdGZvcm1Xcml0ZXIsIGxv
bmcgbG9uZyBsZW5ndGgpCi17Ci0gICAgbV9tdXRleC5sb2NrKCk7Ci0gICAgaWYgKCFtX2NvbnRl
eHQpIHsKLSAgICAgICAgbV9tdXRleC51bmxvY2soKTsKLSAgICAgICAgUGxhdGZvcm1Bc3luY0Zp
bGVTeXN0ZW1DYWxsYmFja3M6OmRlbGV0ZU1lKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBwb3N0VGFza1RvV29ya2VyVGhyZWFkKGNyZWF0ZUNhbGxiYWNrVGFzaygmbm90aWZ5Q3Jl
YXRlRmlsZVdyaXRlck9uV29ya2VyVGhyZWFkLCB0aGlzLCBwbGF0Zm9ybVdyaXRlciwgbGVuZ3Ro
KSk7Ci0gICAgbV9tdXRleC51bmxvY2soKTsKLX0KLQotUGFzc093blB0cjxBc3luY0ZpbGVTeXN0
ZW0+IFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzOjpjcmVhdGVBc3luY0Zp
bGVTeXN0ZW0oUGFzc093blB0cjxCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6V2ViRmlsZVN5c3RlbT4g
cGxhdGZvcm1GaWxlU3lzdGVtKQotewotICAgIHJldHVybiBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1C
bGFja0JlcnJ5OjpjcmVhdGUobV9jb250ZXh0LCBtX21vZGUsIHBsYXRmb3JtRmlsZVN5c3RlbSk7
Ci19Ci0KLVBhc3NPd25QdHI8QXN5bmNGaWxlV3JpdGVyPiBXb3JrZXJQbGF0Zm9ybUFzeW5jRmls
ZVN5c3RlbUNhbGxiYWNrczo6Y3JlYXRlQXN5bmNGaWxlV3JpdGVyKFBhc3NPd25QdHI8QmxhY2tC
ZXJyeTo6UGxhdGZvcm06OldlYkZpbGVXcml0ZXI+IHBsYXRmb3JtV3JpdGVyKQotewotICAgIEFT
U0VSVChtX3dyaXRlckNsaWVudCk7Ci0gICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OldlYkZpbGVX
cml0ZXIqIHBsYXRmb3JtV3JpdGVyUHRyID0gcGxhdGZvcm1Xcml0ZXIuZ2V0KCk7Ci0gICAgT3du
UHRyPFdvcmtlckFzeW5jRmlsZVdyaXRlckJsYWNrQmVycnk+IHdyaXRlciA9IFdvcmtlckFzeW5j
RmlsZVdyaXRlckJsYWNrQmVycnk6OmNyZWF0ZShtX2NvbnRleHQsIG1fbW9kZSwgcGxhdGZvcm1X
cml0ZXIsIG1fd3JpdGVyQ2xpZW50KTsKLSAgICBwbGF0Zm9ybVdyaXRlclB0ci0+c2V0Q2xpZW50
KHdyaXRlci0+cGxhdGZvcm1Xcml0ZXJDbGllbnQoKSk7Ci0gICAgcmV0dXJuIHdyaXRlci5yZWxl
YXNlKCk7Ci19Ci0KLXZvaWQgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M6
OmRlbGV0ZU1lKCkKLXsKLSAgICBkZWxldGVHdWFyZGVkT2JqZWN0KHRoaXMpOwotfQotCi12b2lk
IFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzOjpwb3N0VGFza1RvV29ya2Vy
VGhyZWFkKFBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gdGFzaykKLXsK
LSAgICBtX2NvbnRleHQtPnRocmVhZCgpLT53b3JrZXJMb2FkZXJQcm94eSgpLnBvc3RUYXNrRm9y
TW9kZVRvV29ya2VyR2xvYmFsU2NvcGUodGFzaywgbV9tb2RlKTsKLX0KLQotdm9pZCBXb3JrZXJQ
bGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrczo6bm90aWZ5T3BlbkZpbGVTeXN0ZW1Pbldv
cmtlclRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV29ya2VyUGxhdGZvcm1Bc3luY0Zp
bGVTeXN0ZW1DYWxsYmFja3MqIGNhbGxiYWNrcywgQmxhY2tCZXJyeTo6UGxhdGZvcm06OldlYkZp
bGVTeXN0ZW0qIHBsYXRmb3JtRmlsZVN5c3RlbSkKLXsKLSAgICBjYWxsYmFja3MtPlBsYXRmb3Jt
QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzOjpub3RpZnlPcGVuRmlsZVN5c3RlbShwbGF0Zm9ybUZp
bGVTeXN0ZW0pOwotfQotCi12b2lkIFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJh
Y2tzOjpub3RpZnlTdWNjZWVkT25Xb3JrZXJUaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKiBjYWxsYmFja3MpCi17Ci0g
ICAgY2FsbGJhY2tzLT5QbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrczo6bm90aWZ5U3Vj
Y2VlZCgpOwotfQotCi12b2lkIFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tz
Ojpub3RpZnlGYWlsT25Xb3JrZXJUaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdvcmtl
clBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKiBjYWxsYmFja3MsIEJsYWNrQmVycnk6
OlBsYXRmb3JtOjpXZWJGaWxlRXJyb3IgZXJyb3IpCi17Ci0gICAgY2FsbGJhY2tzLT5QbGF0Zm9y
bUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrczo6bm90aWZ5RmFpbChlcnJvcik7Ci19Ci0KLXZvaWQg
V29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M6Om5vdGlmeVJlYWRNZXRhZGF0
YU9uV29ya2VyVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXb3JrZXJQbGF0Zm9ybUFz
eW5jRmlsZVN5c3RlbUNhbGxiYWNrcyogY2FsbGJhY2tzLCBjb25zdCBCbGFja0JlcnJ5OjpQbGF0
Zm9ybTo6V2ViRmlsZUluZm8mIGZpbGVJbmZvKQotewotICAgIGNhbGxiYWNrcy0+UGxhdGZvcm1B
c3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M6Om5vdGlmeVJlYWRNZXRhZGF0YShmaWxlSW5mbyk7Ci19
Ci0KLXZvaWQgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M6Om5vdGlmeUNy
ZWF0ZVNuYXBzaG90RmlsZUFuZFJlYWRNZXRhZGF0YU9uV29ya2VyVGhyZWFkKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyogY2Fs
bGJhY2tzLCBjb25zdCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6V2ViRmlsZUluZm8mIGZpbGVJbmZv
KQotewotICAgIGNhbGxiYWNrcy0+UGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M6Om5v
dGlmeUNyZWF0ZVNuYXBzaG90RmlsZUFuZFJlYWRNZXRhZGF0YShmaWxlSW5mbyk7Ci19Ci0KLXZv
aWQgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M6Om5vdGlmeVJlYWREaXJl
Y3RvcnlFbnRyeU9uV29ya2VyVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXb3JrZXJQ
bGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyogY2FsbGJhY2tzLCBjb25zdCBzdGQ6OnZl
Y3RvcjxCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6V2ViRmlsZVN5c3RlbUVudHJ5PiYgZW50cmllcywg
Ym9vbCBoYXNNb3JlKQotewotICAgIGNhbGxiYWNrcy0+UGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1D
YWxsYmFja3M6Om5vdGlmeVJlYWREaXJlY3RvcnkoZW50cmllcywgaGFzTW9yZSk7Ci19Ci0KLXZv
aWQgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M6Om5vdGlmeUNyZWF0ZUZp
bGVXcml0ZXJPbldvcmtlclRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV29ya2VyUGxh
dGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MqIGNhbGxiYWNrcywgQmxhY2tCZXJyeTo6UGxh
dGZvcm06OldlYkZpbGVXcml0ZXIqIHBsYXRmb3JtV3JpdGVyLCBsb25nIGxvbmcgbGVuZ3RoKQot
ewotICAgIGNhbGxiYWNrcy0+UGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M6Om5vdGlm
eUNyZWF0ZUZpbGVXcml0ZXIocGxhdGZvcm1Xcml0ZXIsIGxlbmd0aCk7Ci19Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKLSNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxh
Y2tiZXJyeS9Xb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvV29ya2VyUGxhdGZvcm1B
c3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MuaAkocmV2aXNpb24gMTU2NjkxKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Xb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNh
bGxiYWNrcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDExMiArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDEyIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKLSAqIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0
b24sIE1BIDAyMTEwLTEzMDEgVVNBCi0gKi8KLQotI2lmbmRlZiBXb3JrZXJQbGF0Zm9ybUFzeW5j
RmlsZVN5c3RlbUNhbGxiYWNrc19oCi0jZGVmaW5lIFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lz
dGVtQ2FsbGJhY2tzX2gKLQotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkgJiYgRU5BQkxFKFdPUktF
UlMpCi0jaW5jbHVkZSAiQ3Jvc3NUaHJlYWRDb3BpZXIuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybUFz
eW5jRmlsZVN5c3RlbUNhbGxiYWNrcy5oIgotI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuaCIKLSNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5oIgotCi0jaW5jbHVkZSA8QmxhY2tC
ZXJyeVBsYXRmb3JtV2ViRmlsZVN5c3RlbUZpbGVXcml0ZXIuaD4KLSNpbmNsdWRlIDxCbGFja0Jl
cnJ5UGxhdGZvcm1XZWJGaWxlU3lzdGVtUHJpbWl0aXZlcy5oPgotI2luY2x1ZGUgPHd0Zi9UaHJl
YWRpbmcuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi10ZW1wbGF0ZTw+IHN0cnVjdCBDcm9zc1RocmVhZENvcGllckJhc2U8ZmFsc2Us
IGZhbHNlLCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6V2ViRmlsZVN5c3RlbSo+IDogcHVibGljIENy
b3NzVGhyZWFkQ29waWVyUGFzc1Rocm91Z2g8QmxhY2tCZXJyeTo6UGxhdGZvcm06OldlYkZpbGVT
eXN0ZW0qPiB7Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBDcm9zc1RocmVhZENvcGllckJhc2U8
ZmFsc2UsIGZhbHNlLCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6V2ViRmlsZVdyaXRlcio+IDogcHVi
bGljIENyb3NzVGhyZWFkQ29waWVyUGFzc1Rocm91Z2g8QmxhY2tCZXJyeTo6UGxhdGZvcm06Oldl
YkZpbGVXcml0ZXIqPiB7Ci19OwotCi1jbGFzcyBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3Rl
bUNhbGxiYWNrczsKLXRlbXBsYXRlPD4gc3RydWN0IENyb3NzVGhyZWFkQ29waWVyQmFzZTxmYWxz
ZSwgZmFsc2UsIFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKj4gOiBwdWJs
aWMgQ3Jvc3NUaHJlYWRDb3BpZXJQYXNzVGhyb3VnaDxXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5
c3RlbUNhbGxiYWNrcyo+IHsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IENyb3NzVGhyZWFkQ29w
aWVyQmFzZTxmYWxzZSwgZmFsc2UsIEJsb2IqPiA6IHB1YmxpYyBDcm9zc1RocmVhZENvcGllclBh
c3NUaHJvdWdoPEJsb2IqPiB7Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBDcm9zc1RocmVhZENv
cGllckJhc2U8ZmFsc2UsIGZhbHNlLCBXb3JrZXJHbG9iYWxTY29wZSo+IDogcHVibGljIENyb3Nz
VGhyZWFkQ29waWVyUGFzc1Rocm91Z2g8V29ya2VyR2xvYmFsU2NvcGUqPiB7Ci19OwotCi10ZW1w
bGF0ZTw+IHN0cnVjdCBDcm9zc1RocmVhZENvcGllckJhc2U8ZmFsc2UsIGZhbHNlLCBBc3luY0Zp
bGVXcml0ZXJDbGllbnQqPiA6IHB1YmxpYyBDcm9zc1RocmVhZENvcGllclBhc3NUaHJvdWdoPEFz
eW5jRmlsZVdyaXRlckNsaWVudCo+IHsKLX07Ci0KLXZvaWQgcG9zdFRhc2tUb01haW5UaHJlYWQo
UGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPik7Ci0KLWNsYXNzIFVSTDsK
LQotY2xhc3MgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M6IHB1YmxpYyBQ
bGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcywgcHVibGljIFdvcmtlckdsb2JhbFNjb3Bl
OjpPYnNlcnZlciB7Ci1wdWJsaWM6Ci0gICAgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1D
YWxsYmFja3MoUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcywg
V29ya2VyR2xvYmFsU2NvcGUqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbW9kZSwgY29uc3QgVVJM
JiByb290VVJMID0gVVJMKCkpCi0gICAgICAgIDogUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxs
YmFja3MoY2FsbGJhY2tzLCByb290VVJMKQotICAgICAgICAsIFdvcmtlckdsb2JhbFNjb3BlOjpP
YnNlcnZlcihjb250ZXh0KQotICAgICAgICAsIG1fY29udGV4dChjb250ZXh0KQotICAgICAgICAs
IG1fbW9kZShtb2RlKQotICAgIHsKLSAgICB9Ci0KLSAgICAvLyBGb3IgY3JlYXRlV3JpdGVyLgot
ICAgIFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKFBhc3NPd25QdHI8QXN5
bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MsIEFzeW5jRmlsZVdyaXRlckNsaWVudCog
Y2xpZW50LCBXb3JrZXJHbG9iYWxTY29wZSogY29udGV4dCwgY29uc3QgU3RyaW5nJiBtb2RlKQot
ICAgICAgICA6IFBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKGNhbGxiYWNrcywgY2xp
ZW50KQotICAgICAgICAsIFdvcmtlckdsb2JhbFNjb3BlOjpPYnNlcnZlcihjb250ZXh0KQotICAg
ICAgICAsIG1fY29udGV4dChjb250ZXh0KQotICAgICAgICAsIG1fbW9kZShtb2RlKQotICAgIHsK
LSAgICB9Ci0KLSAgICB2b2lkIHBvc3RUYXNrVG9Xb3JrZXJUaHJlYWQoUGFzc093blB0cjxTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPik7Ci0KLSAgICAvLyBGcm9tIFdvcmtlckdsb2JhbFNj
b3BlOjpPYnNlcnZlci4gVGhpcyB3aWxsIGJlIGNhbGxlZCBvbiB3b3JrZXIgdGhyZWFkLgotICAg
IHZpcnR1YWwgdm9pZCBub3RpZnlTdG9wKCk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5T3Bl
bkZpbGVTeXN0ZW0oQmxhY2tCZXJyeTo6UGxhdGZvcm06OldlYkZpbGVTeXN0ZW0qIHBsYXRmb3Jt
RmlsZVN5c3RlbSk7Ci0gICAgdmlydHVhbCB2b2lkIG5vdGlmeVN1Y2NlZWQoKTsKLSAgICB2aXJ0
dWFsIHZvaWQgbm90aWZ5RmFpbChCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6V2ViRmlsZUVycm9yKTsK
LSAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5UmVhZE1ldGFkYXRhKGNvbnN0IEJsYWNrQmVycnk6OlBs
YXRmb3JtOjpXZWJGaWxlSW5mbyYpOwotICAgIHZpcnR1YWwgdm9pZCBub3RpZnlDcmVhdGVTbmFw
c2hvdEZpbGVBbmRSZWFkTWV0YWRhdGEoY29uc3QgQmxhY2tCZXJyeTo6UGxhdGZvcm06OldlYkZp
bGVJbmZvJik7Ci0gICAgdmlydHVhbCB2b2lkIG5vdGlmeVJlYWREaXJlY3RvcnkoY29uc3Qgc3Rk
Ojp2ZWN0b3I8QmxhY2tCZXJyeTo6UGxhdGZvcm06OldlYkZpbGVTeXN0ZW1FbnRyeT4mIGVudHJp
ZXMsIGJvb2wgaGFzTW9yZSk7Ci0gICAgdmlydHVhbCB2b2lkIG5vdGlmeUNyZWF0ZUZpbGVXcml0
ZXIoQmxhY2tCZXJyeTo6UGxhdGZvcm06OldlYkZpbGVXcml0ZXIqIHBsYXRmb3JtV3JpdGVyLCBs
b25nIGxvbmcgbGVuZ3RoKTsKLSAgICB2aXJ0dWFsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVt
PiBjcmVhdGVBc3luY0ZpbGVTeXN0ZW0oUGFzc093blB0cjxCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6
V2ViRmlsZVN5c3RlbT4gcGxhdGZvcm1GaWxlU3lzdGVtKTsKLSAgICB2aXJ0dWFsIFBhc3NPd25Q
dHI8QXN5bmNGaWxlV3JpdGVyPiBjcmVhdGVBc3luY0ZpbGVXcml0ZXIoUGFzc093blB0cjxCbGFj
a0JlcnJ5OjpQbGF0Zm9ybTo6V2ViRmlsZVdyaXRlcj4gcGxhdGZvcm1Xcml0ZXIpOwotICAgIHZp
cnR1YWwgdm9pZCBkZWxldGVNZSgpOwotCi1wcml2YXRlOgotICAgIH5Xb3JrZXJQbGF0Zm9ybUFz
eW5jRmlsZVN5c3RlbUNhbGxiYWNrcygpIHsgfQotCi0gICAgc3RhdGljIHZvaWQgbm90aWZ5T3Bl
bkZpbGVTeXN0ZW1PbldvcmtlclRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV29ya2Vy
UGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MqLCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6
V2ViRmlsZVN5c3RlbSogcGxhdGZvcm1GaWxlU3lzdGVtKTsKLSAgICBzdGF0aWMgdm9pZCBub3Rp
ZnlTdWNjZWVkT25Xb3JrZXJUaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdvcmtlclBs
YXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKik7Ci0gICAgc3RhdGljIHZvaWQgbm90aWZ5
RmFpbE9uV29ya2VyVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXb3JrZXJQbGF0Zm9y
bUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyosIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpXZWJGaWxl
RXJyb3IpOwotICAgIHN0YXRpYyB2b2lkIG5vdGlmeVJlYWRNZXRhZGF0YU9uV29ya2VyVGhyZWFk
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNh
bGxiYWNrcyosIGNvbnN0IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpXZWJGaWxlSW5mbyYpOwotICAg
IHN0YXRpYyB2b2lkIG5vdGlmeUNyZWF0ZVNuYXBzaG90RmlsZUFuZFJlYWRNZXRhZGF0YU9uV29y
a2VyVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmls
ZVN5c3RlbUNhbGxiYWNrcyosIGNvbnN0IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpXZWJGaWxlSW5m
byYpOwotICAgIHN0YXRpYyB2b2lkIG5vdGlmeVJlYWREaXJlY3RvcnlFbnRyeU9uV29ya2VyVGhy
ZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3Rl
bUNhbGxiYWNrcyosIGNvbnN0IHN0ZDo6dmVjdG9yPEJsYWNrQmVycnk6OlBsYXRmb3JtOjpXZWJG
aWxlU3lzdGVtRW50cnk+JiBlbnRyaWVzLCBib29sIGhhc01vcmUpOwotICAgIHN0YXRpYyB2b2lk
IG5vdGlmeUNyZWF0ZUZpbGVXcml0ZXJPbldvcmtlclRocmVhZChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MqLCBCbGFja0JlcnJ5
OjpQbGF0Zm9ybTo6V2ViRmlsZVdyaXRlciogcGxhdGZvcm1Xcml0ZXIsIGxvbmcgbG9uZyBsZW5n
dGgpOwotCi0gICAgV29ya2VyR2xvYmFsU2NvcGUqIG1fY29udGV4dDsKLSAgICBTdHJpbmcgbV9t
b2RlOwotICAgIFdURjo6TXV0ZXggbV9tdXRleDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKLSNlbmRpZgotI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2Jl
cnJ5L1dvcmtlclBsYXRmb3JtRmlsZVdyaXRlckNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Xb3JrZXJQbGF0Zm9ybUZpbGVXcml0ZXJD
bGllbnQuY3BwCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9i
bGFja2JlcnJ5L1dvcmtlclBsYXRmb3JtRmlsZVdyaXRlckNsaWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNzcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBSZXNlYXJjaCBJ
biBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGlj
Ci0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQotICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAq
Ci0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdl
bmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3Qs
IHdyaXRlIHRvIHRoZSBGcmVlCi0gKiBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQQot
ICovCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKSAmJiBFTkFC
TEUoV09SS0VSUykKLSNpbmNsdWRlICJXb3JrZXJQbGF0Zm9ybUZpbGVXcml0ZXJDbGllbnQuaCIK
LQotI2luY2x1ZGUgIkFzeW5jRmlsZVdyaXRlckJsYWNrQmVycnkuaCIKLSNpbmNsdWRlICJBc3lu
Y0ZpbGVXcml0ZXJDbGllbnQuaCIKLSNpbmNsdWRlICJDcm9zc1RocmVhZFRhc2suaCIKLSNpbmNs
dWRlICJGaWxlRXJyb3IuaCIKLSNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5oIgotI2luY2x1
ZGUgIldvcmtlckxvYWRlclByb3h5LmgiCi0jaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCi0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgQ3Jvc3NUaHJlYWRDb3BpZXJC
YXNlPGZhbHNlLCBmYWxzZSwgV29ya2VyUGxhdGZvcm1GaWxlV3JpdGVyQ2xpZW50Kj4gOiBwdWJs
aWMgQ3Jvc3NUaHJlYWRDb3BpZXJQYXNzVGhyb3VnaDxXb3JrZXJQbGF0Zm9ybUZpbGVXcml0ZXJD
bGllbnQqPiB7Ci19OwotCi12b2lkIFdvcmtlclBsYXRmb3JtRmlsZVdyaXRlckNsaWVudDo6bm90
aWZ5V3JpdGVPbldvcmtlclRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV29ya2VyUGxh
dGZvcm1GaWxlV3JpdGVyQ2xpZW50KiBwbGF0Zm9ybUNsaWVudCwgbG9uZyBsb25nIGJ5dGVzLCBi
b29sIGNvbXBsZXRlKQotewotICAgIHBsYXRmb3JtQ2xpZW50LT5QbGF0Zm9ybUZpbGVXcml0ZXJD
bGllbnQ6Om5vdGlmeVdyaXRlKGJ5dGVzLCBjb21wbGV0ZSk7Ci19Ci0KLXZvaWQgV29ya2VyUGxh
dGZvcm1GaWxlV3JpdGVyQ2xpZW50Ojpub3RpZnlGYWlsT25Xb3JrZXJUaHJlYWQoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIFdvcmtlclBsYXRmb3JtRmlsZVdyaXRlckNsaWVudCogcGxhdGZvcm1D
bGllbnQsIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpXZWJGaWxlRXJyb3IgZXJyb3IpCi17Ci0gICAg
cGxhdGZvcm1DbGllbnQtPlBsYXRmb3JtRmlsZVdyaXRlckNsaWVudDo6bm90aWZ5RmFpbChlcnJv
cik7Ci19Ci0KLXZvaWQgV29ya2VyUGxhdGZvcm1GaWxlV3JpdGVyQ2xpZW50Ojpub3RpZnlUcnVu
Y2F0ZU9uV29ya2VyVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXb3JrZXJQbGF0Zm9y
bUZpbGVXcml0ZXJDbGllbnQqIHBsYXRmb3JtQ2xpZW50KQotewotICAgIHBsYXRmb3JtQ2xpZW50
LT5QbGF0Zm9ybUZpbGVXcml0ZXJDbGllbnQ6Om5vdGlmeVRydW5jYXRlKCk7Ci19Ci0KLXZvaWQg
V29ya2VyUGxhdGZvcm1GaWxlV3JpdGVyQ2xpZW50Ojpub3RpZnlXcml0ZShsb25nIGxvbmcgYnl0
ZXMsIGJvb2wgY29tcGxldGUpCi17Ci0gICAgcG9zdFRhc2tUb1dvcmtlclRocmVhZElmTmVlZGVk
KGNyZWF0ZUNhbGxiYWNrVGFzaygmbm90aWZ5V3JpdGVPbldvcmtlclRocmVhZCwgdGhpcywgYnl0
ZXMsIGNvbXBsZXRlKSk7Ci19Ci0KLXZvaWQgV29ya2VyUGxhdGZvcm1GaWxlV3JpdGVyQ2xpZW50
Ojpub3RpZnlUcnVuY2F0ZSgpCi17Ci0gICAgcG9zdFRhc2tUb1dvcmtlclRocmVhZElmTmVlZGVk
KGNyZWF0ZUNhbGxiYWNrVGFzaygmbm90aWZ5VHJ1bmNhdGVPbldvcmtlclRocmVhZCwgdGhpcykp
OwotfQotCi12b2lkIFdvcmtlclBsYXRmb3JtRmlsZVdyaXRlckNsaWVudDo6bm90aWZ5RmFpbChC
bGFja0JlcnJ5OjpQbGF0Zm9ybTo6V2ViRmlsZUVycm9yIGVycm9yKQotewotICAgIHBvc3RUYXNr
VG9Xb3JrZXJUaHJlYWRJZk5lZWRlZChjcmVhdGVDYWxsYmFja1Rhc2soJm5vdGlmeUZhaWxPbldv
cmtlclRocmVhZCwgdGhpcywgZXJyb3IpKTsKLX0KLQotdm9pZCBXb3JrZXJQbGF0Zm9ybUZpbGVX
cml0ZXJDbGllbnQ6OnBvc3RUYXNrVG9Xb3JrZXJUaHJlYWRJZk5lZWRlZChQYXNzT3duUHRyPFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IHRhc2spCi17Ci0gICAgV1RGOjpNdXRleExvY2tl
ciBsb2NrZXIobV9tdXRleCk7Ci0gICAgaWYgKCFtX2NvbnRleHQpCi0gICAgICAgIHJldHVybjsK
LQotICAgIG1fY29udGV4dC0+dGhyZWFkKCktPndvcmtlckxvYWRlclByb3h5KCkucG9zdFRhc2tG
b3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZSh0YXNrLCBtX21vZGUpOwotfQotCi19Ci0KLSNlbmRp
ZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Xb3JrZXJQbGF0Zm9y
bUZpbGVXcml0ZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ibGFja2JlcnJ5L1dvcmtlclBsYXRmb3JtRmlsZVdyaXRlckNsaWVudC5oCShyZXZpc2lvbiAx
NTY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1dvcmtlclBsYXRm
b3JtRmlsZVdyaXRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDg2ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0g
KgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExlc3NlciBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICogTGljZW5z
ZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQotICog
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKLSAqLwotCi0jaWZuZGVmIFdvcmtlclBs
YXRmb3JtRmlsZVdyaXRlckNsaWVudF9oCi0jZGVmaW5lIFdvcmtlclBsYXRmb3JtRmlsZVdyaXRl
ckNsaWVudF9oCi0KLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pICYmIEVOQUJMRShXT1JLRVJTKQot
I2luY2x1ZGUgIlBsYXRmb3JtRmlsZVdyaXRlckNsaWVudC5oIgotI2luY2x1ZGUgIlNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJXb3JrZXJBc3luY0ZpbGVXcml0ZXJCbGFja0Jl
cnJ5LmgiCi0jaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKLQotI2luY2x1ZGUgPHd0Zi9Q
YXNzT3duUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgotI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFdvcmtlckds
b2JhbFNjb3BlOwotCi1jbGFzcyBXb3JrZXJQbGF0Zm9ybUZpbGVXcml0ZXJDbGllbnQ6IHB1Ymxp
YyBQbGF0Zm9ybUZpbGVXcml0ZXJDbGllbnQsIHB1YmxpYyBXb3JrZXJHbG9iYWxTY29wZTo6T2Jz
ZXJ2ZXIgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPFdvcmtlclBsYXRmb3JtRmls
ZVdyaXRlckNsaWVudD4gY3JlYXRlKFdvcmtlckdsb2JhbFNjb3BlKiBjb250ZXh0LCBjb25zdCBT
dHJpbmcmIG1vZGUsIEFzeW5jRmlsZVdyaXRlckNsaWVudCogY2xpZW50LCBXb3JrZXJBc3luY0Zp
bGVXcml0ZXJCbGFja0JlcnJ5KiB3cml0ZXIpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRQ
dHIobmV3IFdvcmtlclBsYXRmb3JtRmlsZVdyaXRlckNsaWVudChjb250ZXh0LCBtb2RlLCBjbGll
bnQsIHdyaXRlcikpOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCBub3RpZnlXcml0ZShsb25n
IGxvbmcgYnl0ZXMsIGJvb2wgY29tcGxldGUpOwotICAgIHZpcnR1YWwgdm9pZCBub3RpZnlUcnVu
Y2F0ZSgpOwotICAgIHZpcnR1YWwgdm9pZCBub3RpZnlGYWlsKEJsYWNrQmVycnk6OlBsYXRmb3Jt
OjpXZWJGaWxlRXJyb3IpOwotCi0gICAgLy8gRnJvbSBXb3JrZXJHbG9iYWxTY29wZTo6T2JzZXJ2
ZXIKLSAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5U3RvcCgpCi0gICAgewotICAgICAgICBXVEY6Ok11
dGV4TG9ja2VyIGxvY2tlcihtX211dGV4KTsKLSAgICAgICAgbV9jb250ZXh0ID0gMDsKLSAgICB9
Ci0KLXByaXZhdGU6Ci0gICAgV29ya2VyUGxhdGZvcm1GaWxlV3JpdGVyQ2xpZW50KFdvcmtlckds
b2JhbFNjb3BlKiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG1vZGUsIEFzeW5jRmlsZVdyaXRlckNs
aWVudCogY2xpZW50LCBXb3JrZXJBc3luY0ZpbGVXcml0ZXJCbGFja0JlcnJ5KiB3cml0ZXIpCi0g
ICAgICAgIDogUGxhdGZvcm1GaWxlV3JpdGVyQ2xpZW50KGNsaWVudCwgd3JpdGVyKQotICAgICAg
ICAsIFdvcmtlckdsb2JhbFNjb3BlOjpPYnNlcnZlcihjb250ZXh0KQotICAgICAgICAsIG1fY29u
dGV4dChjb250ZXh0KQotICAgICAgICAsIG1fbW9kZShtb2RlKQotICAgIHsgfQotICAgIH5Xb3Jr
ZXJQbGF0Zm9ybUZpbGVXcml0ZXJDbGllbnQoKSB7IH0KLSAgICB2b2lkIHBvc3RUYXNrVG9Xb3Jr
ZXJUaHJlYWRJZk5lZWRlZChQYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+
KTsKLQotICAgIHN0YXRpYyB2b2lkIG5vdGlmeVdyaXRlT25Xb3JrZXJUaHJlYWQoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIFdvcmtlclBsYXRmb3JtRmlsZVdyaXRlckNsaWVudCogcGxhdGZvcm1D
bGllbnQsIGxvbmcgbG9uZyBieXRlcywgYm9vbCBjb21wbGV0ZSk7Ci0gICAgc3RhdGljIHZvaWQg
bm90aWZ5RmFpbE9uV29ya2VyVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXb3JrZXJQ
bGF0Zm9ybUZpbGVXcml0ZXJDbGllbnQqIHBsYXRmb3JtQ2xpZW50LCBCbGFja0JlcnJ5OjpQbGF0
Zm9ybTo6V2ViRmlsZUVycm9yKTsKLSAgICBzdGF0aWMgdm9pZCBub3RpZnlUcnVuY2F0ZU9uV29y
a2VyVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXb3JrZXJQbGF0Zm9ybUZpbGVXcml0
ZXJDbGllbnQqIHBsYXRmb3JtQ2xpZW50KTsKLQotICAgIFdvcmtlckdsb2JhbFNjb3BlKiBtX2Nv
bnRleHQ7Ci0gICAgU3RyaW5nIG1fbW9kZTsKLSAgICBXVEY6Ok11dGV4IG1fbXV0ZXg7Ci19Owot
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLW5hbWVzcGFjZSBXVEYgewotCi10ZW1wbGF0ZSA8
PiBpbmxpbmUgdm9pZCBkZWxldGVPd25lZFB0cjxXZWJDb3JlOjpXb3JrZXJQbGF0Zm9ybUZpbGVX
cml0ZXJDbGllbnQ+KFdlYkNvcmU6OldvcmtlclBsYXRmb3JtRmlsZVdyaXRlckNsaWVudCogcHRy
KQotewotICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpkZWxldGVHdWFyZGVkT2JqZWN0KHB0cik7
Ci19Ci0KLX0KLQotI2VuZGlmCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VmbC9Bc3luY0ZpbGVTeXN0ZW1FZmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VmbC9Bc3luY0ZpbGVTeXN0ZW1FZmwuY3BwCShyZXZpc2lvbiAxNTY2OTEpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvQXN5bmNGaWxlU3lzdGVtRWZsLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSwxMjggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBT
YW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQXN5bmNGaWxlU3lzdGVtRWZsLmgiCi0KLSNpZiBF
TkFCTEUoRklMRV9TWVNURU0pCi0KLSNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCi0jaW5jbHVk
ZSAiTG9jYWxGaWxlU3lzdGVtLmgiCi0jaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1ib29sIEFzeW5jRmlsZVN5c3RlbTo6aXNBdmFpbGFibGUoKQot
ewotICAgIHJldHVybiBmYWxzZTsKLX0KLQotUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+IEFz
eW5jRmlsZVN5c3RlbTo6Y3JlYXRlKCkKLXsKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IEFzeW5j
RmlsZVN5c3RlbUVmbCgpKTsKLX0KLQotdm9pZCBBc3luY0ZpbGVTeXN0ZW06Om9wZW5GaWxlU3lz
dGVtKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIEZpbGVTeXN0ZW1UeXBlLCBib29sLCBQ
YXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pCi17Ci0gICAgbm90SW1wbGVtZW50
ZWQoKTsKLX0KLQotdm9pZCBBc3luY0ZpbGVTeXN0ZW06OmRlbGV0ZUZpbGVTeXN0ZW0oY29uc3Qg
U3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgRmlsZVN5c3RlbVR5cGUsIFBhc3NPd25QdHI8QXN5bmNG
aWxlU3lzdGVtQ2FsbGJhY2tzPikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi1Bc3lu
Y0ZpbGVTeXN0ZW1FZmw6OkFzeW5jRmlsZVN5c3RlbUVmbCgpCi0gICAgOiBBc3luY0ZpbGVTeXN0
ZW0oKQotewotfQotCi1Bc3luY0ZpbGVTeXN0ZW1FZmw6On5Bc3luY0ZpbGVTeXN0ZW1FZmwoKQot
ewotfQotCi12b2lkIEFzeW5jRmlsZVN5c3RlbUVmbDo6bW92ZShjb25zdCBVUkwmLCBjb25zdCBV
UkwmLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pCi17Ci0gICAgbm90SW1w
bGVtZW50ZWQoKTsKLX0KLQotdm9pZCBBc3luY0ZpbGVTeXN0ZW1FZmw6OmNvcHkoY29uc3QgVVJM
JiwgY29uc3QgVVJMJiwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KQotewot
ICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgQXN5bmNGaWxlU3lzdGVtRWZsOjpyZW1v
dmUoY29uc3QgVVJMJiwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KQotewot
ICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgQXN5bmNGaWxlU3lzdGVtRWZsOjpyZW1v
dmVSZWN1cnNpdmVseShjb25zdCBVUkwmLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxi
YWNrcz4pCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBBc3luY0ZpbGVTeXN0
ZW1FZmw6OnJlYWRNZXRhZGF0YShjb25zdCBVUkwmLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3Rl
bUNhbGxiYWNrcz4pCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBBc3luY0Zp
bGVTeXN0ZW1FZmw6OmNyZWF0ZUZpbGUoY29uc3QgVVJMJiwgYm9vbCwgUGFzc093blB0cjxBc3lu
Y0ZpbGVTeXN0ZW1DYWxsYmFja3M+KQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZv
aWQgQXN5bmNGaWxlU3lzdGVtRWZsOjpjcmVhdGVEaXJlY3RvcnkoY29uc3QgVVJMJiwgYm9vbCwg
UGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KQotewotICAgIG5vdEltcGxlbWVu
dGVkKCk7Ci19Ci0KLXZvaWQgQXN5bmNGaWxlU3lzdGVtRWZsOjpmaWxlRXhpc3RzKGNvbnN0IFVS
TCYsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPikKLXsKLSAgICBub3RJbXBs
ZW1lbnRlZCgpOwotfQotCi12b2lkIEFzeW5jRmlsZVN5c3RlbUVmbDo6ZGlyZWN0b3J5RXhpc3Rz
KGNvbnN0IFVSTCYsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPikKLXsKLSAg
ICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIEFzeW5jRmlsZVN5c3RlbUVmbDo6cmVhZERp
cmVjdG9yeShjb25zdCBVUkwmLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4p
Ci17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBBc3luY0ZpbGVTeXN0ZW1FZmw6
OmNyZWF0ZVdyaXRlcihBc3luY0ZpbGVXcml0ZXJDbGllbnQqLCBjb25zdCBVUkwmLCBQYXNzT3du
UHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsK
LX0KLQotdm9pZCBBc3luY0ZpbGVTeXN0ZW1FZmw6OmNyZWF0ZVNuYXBzaG90RmlsZUFuZFJlYWRN
ZXRhZGF0YShjb25zdCBVUkwmLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4p
Ci17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQot
Ci0jZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9Bc3luY0ZpbGVTeXN0
ZW1FZmwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvQXN5bmNG
aWxlU3lzdGVtRWZsLmgJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2VmbC9Bc3luY0ZpbGVTeXN0ZW1FZmwuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2MSArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgIEFzeW5jRmlsZVN5c3RlbUVmbF9o
Ci0jZGVmaW5lICBBc3luY0ZpbGVTeXN0ZW1FZmxfaAotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVN
KQotCi0jaW5jbHVkZSAiQXN5bmNGaWxlU3lzdGVtLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NPd25Q
dHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBBc3luY0ZpbGVTeXN0ZW1DYWxs
YmFja3M7Ci0KLWNsYXNzIEFzeW5jRmlsZVN5c3RlbUVmbCA6IHB1YmxpYyBBc3luY0ZpbGVTeXN0
ZW0gewotcHVibGljOgotICAgIEFzeW5jRmlsZVN5c3RlbUVmbCgpOwotICAgIHZpcnR1YWwgfkFz
eW5jRmlsZVN5c3RlbUVmbCgpOwotCi0gICAgdmlydHVhbCB2b2lkIG1vdmUoY29uc3QgVVJMJiwg
Y29uc3QgVVJMJiwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKLSAgICB2
aXJ0dWFsIHZvaWQgY29weShjb25zdCBVUkwmLCBjb25zdCBVUkwmLCBQYXNzT3duUHRyPEFzeW5j
RmlsZVN5c3RlbUNhbGxiYWNrcz4pOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmUoY29uc3QgVVJM
JiwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKLSAgICB2aXJ0dWFsIHZv
aWQgcmVtb3ZlUmVjdXJzaXZlbHkoY29uc3QgVVJMJiwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0
ZW1DYWxsYmFja3M+KTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVhZE1ldGFkYXRhKGNvbnN0IFVSTCYs
IFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7Ci0gICAgdmlydHVhbCB2b2lk
IGNyZWF0ZUZpbGUoY29uc3QgVVJMJiwgYm9vbCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1D
YWxsYmFja3M+KTsKLSAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlRGlyZWN0b3J5KGNvbnN0IFVSTCYs
IGJvb2wsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7Ci0gICAgdmlydHVh
bCB2b2lkIGZpbGVFeGlzdHMoY29uc3QgVVJMJiwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1D
YWxsYmFja3M+KTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlyZWN0b3J5RXhpc3RzKGNvbnN0IFVSTCYs
IFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7Ci0gICAgdmlydHVhbCB2b2lk
IHJlYWREaXJlY3RvcnkoY29uc3QgVVJMJiwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxs
YmFja3M+KTsKLSAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlV3JpdGVyKEFzeW5jRmlsZVdyaXRlckNs
aWVudCosIGNvbnN0IFVSTCYsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7
Ci0gICAgdmlydHVhbCB2b2lkIGNyZWF0ZVNuYXBzaG90RmlsZUFuZFJlYWRNZXRhZGF0YShjb25z
dCBVUkwmLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwotfTsKLQotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKLQotI2VuZGlmIC8vICBBc3luY0ZpbGVTeXN0
ZW1FZmxfaApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0FzeW5jRmlsZVN5c3Rl
bUd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0FzeW5j
RmlsZVN5c3RlbUd0ay5jcHAJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9Bc3luY0ZpbGVTeXN0ZW1HdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEy
OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIENoYW5nU2VvayBPaCA8c2hpdmFt
aWRvd0BnbWFpbC5jb20+Ci0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0g
KgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExlc3NlciBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICogTGljZW5z
ZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQotICog
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKLSAqLwotCi0jaW5jbHVkZSAiY29uZmln
LmgiCi0KLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNpbmNsdWRlICJBc3luY0ZpbGVTeXN0
ZW1HdGsuaCIKLQotI2luY2x1ZGUgIkFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcy5oIgotI2luY2x1
ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLWJvb2wgQXN5bmNGaWxlU3lzdGVtOjppc0F2YWlsYWJsZSgpCi17
Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLVBhc3NPd25Q
dHI8QXN5bmNGaWxlU3lzdGVtPiBBc3luY0ZpbGVTeXN0ZW06OmNyZWF0ZSgpCi17Ci0gICAgcmV0
dXJuIGFkb3B0UHRyKG5ldyBBc3luY0ZpbGVTeXN0ZW1HdGsoKSk7Ci19Ci0KLXZvaWQgQXN5bmNG
aWxlU3lzdGVtOjpvcGVuRmlsZVN5c3RlbShjb25zdCBTdHJpbmcmIGJhc2VQYXRoLCBjb25zdCBT
dHJpbmcmIHN0b3JhZ2VJZGVudGlmaWVyLCBGaWxlU3lzdGVtVHlwZSwgYm9vbCwgUGFzc093blB0
cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKLXsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOwotICAgIGNhbGxiYWNrcy0+ZGlkRmFpbChOT1RfU1VQUE9SVEVEX0VSUik7Ci19Ci0K
LXZvaWQgQXN5bmNGaWxlU3lzdGVtOjpkZWxldGVGaWxlU3lzdGVtKGNvbnN0IFN0cmluZyYgYmFz
ZVBhdGgsIGNvbnN0IFN0cmluZyYgc3RvcmFnZUlkZW50aWZpZXIsIEZpbGVTeXN0ZW1UeXBlIHR5
cGUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCi17Ci0g
ICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICBjYWxsYmFja3MtPmRpZEZhaWwoTk9UX1NVUFBPUlRF
RF9FUlIpOwotfQotCi1Bc3luY0ZpbGVTeXN0ZW1HdGs6OkFzeW5jRmlsZVN5c3RlbUd0aygpCi17
Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotQXN5bmNGaWxlU3lzdGVtR3RrOjp+QXN5bmNG
aWxlU3lzdGVtR3RrKCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIEFzeW5j
RmlsZVN5c3RlbUd0azo6bW92ZShjb25zdCBVUkwmIHNvdXJjZVBhdGgsIGNvbnN0IFVSTCYgZGVz
dGluYXRpb25QYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJh
Y2tzKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgQXN5bmNGaWxlU3lzdGVt
R3RrOjpjb3B5KGNvbnN0IFVSTCYgc291cmNlUGF0aCwgY29uc3QgVVJMJiBkZXN0aW5hdGlvblBh
dGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCi17Ci0g
ICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBBc3luY0ZpbGVTeXN0ZW1HdGs6OnJlbW92
ZShjb25zdCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBj
YWxsYmFja3MpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBBc3luY0ZpbGVT
eXN0ZW1HdGs6OnJlbW92ZVJlY3Vyc2l2ZWx5KGNvbnN0IFVSTCYgcGF0aCwgUGFzc093blB0cjxB
c3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKLXsKLSAgICBub3RJbXBsZW1lbnRl
ZCgpOwotfQotCi12b2lkIEFzeW5jRmlsZVN5c3RlbUd0azo6cmVhZE1ldGFkYXRhKGNvbnN0IFVS
TCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykK
LXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIEFzeW5jRmlsZVN5c3RlbUd0azo6
Y3JlYXRlRmlsZShjb25zdCBVUkwmIHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBQYXNzT3duUHRyPEFz
eW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQotewotICAgIG5vdEltcGxlbWVudGVk
KCk7Ci19Ci0KLXZvaWQgQXN5bmNGaWxlU3lzdGVtR3RrOjpjcmVhdGVEaXJlY3RvcnkoY29uc3Qg
VVJMJiBwYXRoLCBib29sIGV4Y2x1c2l2ZSwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxs
YmFja3M+IGNhbGxiYWNrcykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIEFz
eW5jRmlsZVN5c3RlbUd0azo6ZmlsZUV4aXN0cyhjb25zdCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8
QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCi17Ci0gICAgbm90SW1wbGVtZW50
ZWQoKTsKLX0KLQotdm9pZCBBc3luY0ZpbGVTeXN0ZW1HdGs6OmRpcmVjdG9yeUV4aXN0cyhjb25z
dCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFj
a3MpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBBc3luY0ZpbGVTeXN0ZW1H
dGs6OnJlYWREaXJlY3RvcnkoY29uc3QgVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5
c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0K
LQotdm9pZCBBc3luY0ZpbGVTeXN0ZW1HdGs6OmNyZWF0ZVdyaXRlcihBc3luY0ZpbGVXcml0ZXJD
bGllbnQqIGNsaWVudCwgY29uc3QgVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3Rl
bUNhbGxiYWNrcz4gY2FsbGJhY2tzKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZv
aWQgQXN5bmNGaWxlU3lzdGVtR3RrOjpjcmVhdGVTbmFwc2hvdEZpbGVBbmRSZWFkTWV0YWRhdGEo
Y29uc3QgVVJMJiwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KQotewotICAg
IG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlm
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQXN5bmNGaWxlU3lzdGVtR3RrLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0FzeW5jRmlsZVN5c3Rl
bUd0ay5oCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
QXN5bmNGaWxlU3lzdGVtR3RrLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNTQgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMiBDaGFuZ1Nlb2sgT2ggPHNoaXZhbWlkb3dAZ21haWwuY29t
PgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAot
ICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKLSAqIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24s
IE1BIDAyMTEwLTEzMDEgVVNBCi0gKi8KLQotI2lmbmRlZiAgQXN5bmNGaWxlU3lzdGVtR3RrX2gK
LSNkZWZpbmUgIEFzeW5jRmlsZVN5c3RlbUd0a19oCi0KLSNpZiBFTkFCTEUoRklMRV9TWVNURU0p
Ci0KLSNpbmNsdWRlICJBc3luY0ZpbGVTeXN0ZW0uaCIKLSNpbmNsdWRlIDx3dGYvUGFzc093blB0
ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEFzeW5jRmlsZVN5c3RlbUNhbGxi
YWNrczsKLQotY2xhc3MgQXN5bmNGaWxlU3lzdGVtR3RrIDogcHVibGljIEFzeW5jRmlsZVN5c3Rl
bSB7Ci1wdWJsaWM6Ci0gICAgQXN5bmNGaWxlU3lzdGVtR3RrKCk7Ci0gICAgdmlydHVhbCB+QXN5
bmNGaWxlU3lzdGVtR3RrKCk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgbW92ZShjb25zdCBVUkwmIHNv
dXJjZVBhdGgsIGNvbnN0IFVSTCYgZGVzdGluYXRpb25QYXRoLCBQYXNzT3duUHRyPEFzeW5jRmls
ZVN5c3RlbUNhbGxiYWNrcz4pOwotICAgIHZpcnR1YWwgdm9pZCBjb3B5KGNvbnN0IFVSTCYgc291
cmNlUGF0aCwgY29uc3QgVVJMJiBkZXN0aW5hdGlvblBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxl
U3lzdGVtQ2FsbGJhY2tzPik7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZShjb25zdCBVUkwmIHBh
dGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7Ci0gICAgdmlydHVhbCB2
b2lkIHJlbW92ZVJlY3Vyc2l2ZWx5KGNvbnN0IFVSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0Zp
bGVTeXN0ZW1DYWxsYmFja3M+KTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVhZE1ldGFkYXRhKGNvbnN0
IFVSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKLSAgICB2
aXJ0dWFsIHZvaWQgY3JlYXRlRmlsZShjb25zdCBVUkwmIHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBQ
YXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwotICAgIHZpcnR1YWwgdm9pZCBj
cmVhdGVEaXJlY3RvcnkoY29uc3QgVVJMJiBwYXRoLCBib29sIGV4Y2x1c2l2ZSwgUGFzc093blB0
cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKLSAgICB2aXJ0dWFsIHZvaWQgZmlsZUV4aXN0
cyhjb25zdCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7
Ci0gICAgdmlydHVhbCB2b2lkIGRpcmVjdG9yeUV4aXN0cyhjb25zdCBVUkwmIHBhdGgsIFBhc3NP
d25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7Ci0gICAgdmlydHVhbCB2b2lkIHJlYWRE
aXJlY3RvcnkoY29uc3QgVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxi
YWNrcz4pOwotICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVXcml0ZXIoQXN5bmNGaWxlV3JpdGVyQ2xp
ZW50KiwgY29uc3QgVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNr
cz4pOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKLQotI2VuZGlmIC8v
ICBBc3luY0ZpbGVTeXN0ZW1HdGtfaApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9CbG9iRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9CbG9iRGF0YS5jcHAJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NCwxMyAr
OTQsNiBAQCB2b2lkIEJsb2JEYXRhOjphcHBlbmRCbG9iKGNvbnN0IFVSTCYgdXJsCiAgICAgbV9p
dGVtcy5hcHBlbmQoQmxvYkRhdGFJdGVtKHVybCwgb2Zmc2V0LCBsZW5ndGgpKTsKIH0KIAotI2lm
IEVOQUJMRShGSUxFX1NZU1RFTSkKLXZvaWQgQmxvYkRhdGE6OmFwcGVuZFVSTChjb25zdCBVUkwm
IHVybCwgbG9uZyBsb25nIG9mZnNldCwgbG9uZyBsb25nIGxlbmd0aCwgZG91YmxlIGV4cGVjdGVk
TW9kaWZpY2F0aW9uVGltZSkKLXsKLSAgICBtX2l0ZW1zLmFwcGVuZChCbG9iRGF0YUl0ZW0odXJs
LCBvZmZzZXQsIGxlbmd0aCwgZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKSk7Ci19Ci0jZW5kaWYK
LQogdm9pZCBCbG9iRGF0YTo6c3dhcEl0ZW1zKEJsb2JEYXRhSXRlbUxpc3QmIGl0ZW1zKQogewog
ICAgIG1faXRlbXMuc3dhcChpdGVtcyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0Jsb2JEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9CbG9iRGF0YS5oCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTExMSwxOCArMTEx
LDYgQEAgc3RydWN0IEJsb2JEYXRhSXRlbSB7CiAgICAgewogICAgIH0KIAotI2lmIEVOQUJMRShG
SUxFX1NZU1RFTSkKLSAgICAvLyBDb25zdHJ1Y3RvciBmb3IgVVJMIHR5cGUgKGUuZy4gRmlsZVN5
c3RlbSBmaWxlcykuCi0gICAgQmxvYkRhdGFJdGVtKGNvbnN0IFVSTCYgdXJsLCBsb25nIGxvbmcg
b2Zmc2V0LCBsb25nIGxvbmcgbGVuZ3RoLCBkb3VibGUgZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1l
KQotICAgICAgICA6IHR5cGUoVVJMKQotICAgICAgICAsIHVybCh1cmwpCi0gICAgICAgICwgb2Zm
c2V0KG9mZnNldCkKLSAgICAgICAgLCBsZW5ndGgobGVuZ3RoKQotICAgICAgICAsIGV4cGVjdGVk
TW9kaWZpY2F0aW9uVGltZShleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUpCi0gICAgewotICAgIH0K
LSNlbmRpZgotCiAgICAgLy8gRGV0YWNoZXMgZnJvbSBjdXJyZW50IHRocmVhZCBzbyB0aGF0IGl0
IGNhbiBiZSBwYXNzZWQgdG8gYW5vdGhlciB0aHJlYWQuCiAgICAgdm9pZCBkZXRhY2hGcm9tQ3Vy
cmVudFRocmVhZCgpOwogCkBAIC0xMzAsOSArMTE4LDYgQEAgc3RydWN0IEJsb2JEYXRhSXRlbSB7
CiAgICAgICAgIERhdGEsCiAgICAgICAgIEZpbGUsCiAgICAgICAgIEJsb2IKLSNpZiBFTkFCTEUo
RklMRV9TWVNURU0pCi0gICAgICAgICwgVVJMCi0jZW5kaWYKICAgICB9IHR5cGU7CiAKICAgICAv
LyBGb3IgRGF0YSB0eXBlLgpAQCAtMTg1LDkgKzE3MCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGFw
cGVuZEZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKTsKICAgICB2b2lkIGFwcGVuZEZpbGUoY29uc3Qg
U3RyaW5nJiBwYXRoLCBsb25nIGxvbmcgb2Zmc2V0LCBsb25nIGxvbmcgbGVuZ3RoLCBkb3VibGUg
ZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKTsKICAgICB2b2lkIGFwcGVuZEJsb2IoY29uc3QgVVJM
JiwgbG9uZyBsb25nIG9mZnNldCwgbG9uZyBsb25nIGxlbmd0aCk7Ci0jaWYgRU5BQkxFKEZJTEVf
U1lTVEVNKQotICAgIHZvaWQgYXBwZW5kVVJMKGNvbnN0IFVSTCYsIGxvbmcgbG9uZyBvZmZzZXQs
IGxvbmcgbG9uZyBsZW5ndGgsIGRvdWJsZSBleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUpOwotI2Vu
ZGlmCiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEJsb2JSZWdpc3RyeUltcGw7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5
SW1wbC5jcHAJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg1LDEwICs4NSw2
IEBAIHZvaWQgQmxvYlJlZ2lzdHJ5SW1wbDo6YXBwZW5kU3RvcmFnZUl0ZW0KICAgICBmb3IgKEJs
b2JEYXRhSXRlbUxpc3Q6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBpdGVtcy5iZWdpbigpOyBpdGVy
ICE9IGl0ZW1zLmVuZCgpOyArK2l0ZXIpIHsKICAgICAgICAgaWYgKGl0ZXItPnR5cGUgPT0gQmxv
YkRhdGFJdGVtOjpEYXRhKQogICAgICAgICAgICAgYmxvYlN0b3JhZ2VEYXRhLT5tX2RhdGEuYXBw
ZW5kRGF0YShpdGVyLT5kYXRhLCBpdGVyLT5vZmZzZXQsIGl0ZXItPmxlbmd0aCk7Ci0jaWYgRU5B
QkxFKEZJTEVfU1lTVEVNKQotICAgICAgICBlbHNlIGlmIChpdGVyLT50eXBlID09IEJsb2JEYXRh
SXRlbTo6VVJMKQotICAgICAgICAgICAgYmxvYlN0b3JhZ2VEYXRhLT5tX2RhdGEuYXBwZW5kVVJM
KGl0ZXItPnVybCwgaXRlci0+b2Zmc2V0LCBpdGVyLT5sZW5ndGgsIGl0ZXItPmV4cGVjdGVkTW9k
aWZpY2F0aW9uVGltZSk7Ci0jZW5kaWYKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBBU1NF
UlQoaXRlci0+dHlwZSA9PSBCbG9iRGF0YUl0ZW06OkZpbGUpOwogICAgICAgICAgICAgYmxvYlN0
b3JhZ2VEYXRhLT5tX2RhdGEuYXBwZW5kRmlsZShpdGVyLT5wYXRoLCBpdGVyLT5vZmZzZXQsIGl0
ZXItPmxlbmd0aCwgaXRlci0+ZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKTsKQEAgLTExNSwxMCAr
MTExLDYgQEAgdm9pZCBCbG9iUmVnaXN0cnlJbXBsOjphcHBlbmRTdG9yYWdlSXRlbQogICAgICAg
ICBsb25nIGxvbmcgbmV3TGVuZ3RoID0gY3VycmVudExlbmd0aCA+IGxlbmd0aCA/IGxlbmd0aCA6
IGN1cnJlbnRMZW5ndGg7CiAgICAgICAgIGlmIChpdGVyLT50eXBlID09IEJsb2JEYXRhSXRlbTo6
RGF0YSkKICAgICAgICAgICAgIGJsb2JTdG9yYWdlRGF0YS0+bV9kYXRhLmFwcGVuZERhdGEoaXRl
ci0+ZGF0YSwgaXRlci0+b2Zmc2V0ICsgb2Zmc2V0LCBuZXdMZW5ndGgpOwotI2lmIEVOQUJMRShG
SUxFX1NZU1RFTSkKLSAgICAgICAgZWxzZSBpZiAoaXRlci0+dHlwZSA9PSBCbG9iRGF0YUl0ZW06
OlVSTCkKLSAgICAgICAgICAgIGJsb2JTdG9yYWdlRGF0YS0+bV9kYXRhLmFwcGVuZFVSTChpdGVy
LT51cmwsIGl0ZXItPm9mZnNldCArIG9mZnNldCwgbmV3TGVuZ3RoLCBpdGVyLT5leHBlY3RlZE1v
ZGlmaWNhdGlvblRpbWUpOwotI2VuZGlmCiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgQVNT
RVJUKGl0ZXItPnR5cGUgPT0gQmxvYkRhdGFJdGVtOjpGaWxlKTsKICAgICAgICAgICAgIGJsb2JT
dG9yYWdlRGF0YS0+bV9kYXRhLmFwcGVuZEZpbGUoaXRlci0+cGF0aCwgaXRlci0+b2Zmc2V0ICsg
b2Zmc2V0LCBuZXdMZW5ndGgsIGl0ZXItPmV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSk7CkBAIC0x
NDksMTEgKzE0MSw2IEBAIHZvaWQgQmxvYlJlZ2lzdHJ5SW1wbDo6cmVnaXN0ZXJCbG9iVVJMKGMK
ICAgICAgICAgY2FzZSBCbG9iRGF0YUl0ZW06OkZpbGU6CiAgICAgICAgICAgICBibG9iU3RvcmFn
ZURhdGEtPm1fZGF0YS5hcHBlbmRGaWxlKGl0ZXItPnBhdGgsIGl0ZXItPm9mZnNldCwgaXRlci0+
bGVuZ3RoLCBpdGVyLT5leHBlY3RlZE1vZGlmaWNhdGlvblRpbWUpOwogICAgICAgICAgICAgYnJl
YWs7Ci0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotICAgICAgICBjYXNlIEJsb2JEYXRhSXRlbTo6
VVJMOgotICAgICAgICAgICAgYmxvYlN0b3JhZ2VEYXRhLT5tX2RhdGEuYXBwZW5kVVJMKGl0ZXIt
PnVybCwgaXRlci0+b2Zmc2V0LCBpdGVyLT5sZW5ndGgsIGl0ZXItPmV4cGVjdGVkTW9kaWZpY2F0
aW9uVGltZSk7Ci0gICAgICAgICAgICBicmVhazsKLSNlbmRpZgogICAgICAgICBjYXNlIEJsb2JE
YXRhSXRlbTo6QmxvYjoKICAgICAgICAgICAgIGlmIChtX2Jsb2JzLmNvbnRhaW5zKGl0ZXItPnVy
bC5zdHJpbmcoKSkpCiAgICAgICAgICAgICAgICAgYXBwZW5kU3RvcmFnZUl0ZW1zKGJsb2JTdG9y
YWdlRGF0YS5nZXQoKSwgbV9ibG9icy5nZXQoaXRlci0+dXJsLnN0cmluZygpKS0+aXRlbXMoKSwg
aXRlci0+b2Zmc2V0LCBpdGVyLT5sZW5ndGgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NDgsMTEgKzE0OCw2IEBAIFBhc3NSZWZQdHI8Rm9ybURhdGE+IEZvcm1EYXRhOjpkZWVwQ29weSgK
ICAgICAgICAgICAgIGZvcm1EYXRhLT5tX2VsZW1lbnRzLnVuY2hlY2tlZEFwcGVuZChGb3JtRGF0
YUVsZW1lbnQoZS5tX3VybCkpOwogICAgICAgICAgICAgYnJlYWs7CiAjZW5kaWYKLSNpZiBFTkFC
TEUoRklMRV9TWVNURU0pCi0gICAgICAgIGNhc2UgRm9ybURhdGFFbGVtZW50OjplbmNvZGVkVVJM
OgotICAgICAgICAgICAgZm9ybURhdGEtPm1fZWxlbWVudHMudW5jaGVja2VkQXBwZW5kKEZvcm1E
YXRhRWxlbWVudChlLm1fdXJsLCBlLm1fZmlsZVN0YXJ0LCBlLm1fZmlsZUxlbmd0aCwgZS5tX2V4
cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUpKTsKLSAgICAgICAgICAgIGJyZWFrOwotI2VuZGlm
CiAgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIGZvcm1EYXRhLnJlbGVhc2UoKTsKQEAgLTE4
MywxNyArMTc4LDYgQEAgdm9pZCBGb3JtRGF0YTo6YXBwZW5kQmxvYihjb25zdCBVUkwmIGJsbwog
ICAgIG1fZWxlbWVudHMuYXBwZW5kKEZvcm1EYXRhRWxlbWVudChibG9iVVJMKSk7CiB9CiAjZW5k
aWYKLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi12b2lkIEZvcm1EYXRhOjphcHBlbmRVUkwoY29u
c3QgVVJMJiB1cmwpCi17Ci0gICAgbV9lbGVtZW50cy5hcHBlbmQoRm9ybURhdGFFbGVtZW50KHVy
bCwgMCwgQmxvYkRhdGFJdGVtOjp0b0VuZE9mRmlsZSwgaW52YWxpZEZpbGVUaW1lKCkpKTsKLX0K
LQotdm9pZCBGb3JtRGF0YTo6YXBwZW5kVVJMUmFuZ2UoY29uc3QgVVJMJiB1cmwsIGxvbmcgbG9u
ZyBzdGFydCwgbG9uZyBsb25nIGxlbmd0aCwgZG91YmxlIGV4cGVjdGVkTW9kaWZpY2F0aW9uVGlt
ZSkKLXsKLSAgICBtX2VsZW1lbnRzLmFwcGVuZChGb3JtRGF0YUVsZW1lbnQodXJsLCBzdGFydCwg
bGVuZ3RoLCBleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUpKTsKLX0KLSNlbmRpZgogCiB2b2lkIEZv
cm1EYXRhOjphcHBlbmRLZXlWYWx1ZVBhaXJJdGVtcyhjb25zdCBGb3JtRGF0YUxpc3QmIGxpc3Qs
IGNvbnN0IFRleHRFbmNvZGluZyYgZW5jb2RpbmcsIGJvb2wgaXNNdWx0aVBhcnRGb3JtLCBEb2N1
bWVudCogZG9jdW1lbnQsIEVuY29kaW5nVHlwZSBlbmNvZGluZ1R5cGUpCiB7CkBAIC0yNjgsMTAg
KzI1Miw2IEBAIHZvaWQgRm9ybURhdGE6OmFwcGVuZEtleVZhbHVlUGFpckl0ZW1zKGMKICAgICAg
ICAgICAgICAgICAgICAgLy8gRG8gbm90IGFkZCB0aGUgZmlsZSBpZiB0aGUgcGF0aCBpcyBlbXB0
eS4KICAgICAgICAgICAgICAgICAgICAgaWYgKCFmaWxlLT5wYXRoKCkuaXNFbXB0eSgpKQogICAg
ICAgICAgICAgICAgICAgICAgICAgYXBwZW5kRmlsZShmaWxlLT5wYXRoKCksIHNob3VsZEdlbmVy
YXRlRmlsZSk7Ci0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotICAgICAgICAgICAgICAgICAgICBp
ZiAoIWZpbGUtPmZpbGVTeXN0ZW1VUkwoKS5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgICAg
ICAgICBhcHBlbmRVUkwoZmlsZS0+ZmlsZVN5c3RlbVVSTCgpKTsKLSNlbmRpZgogICAgICAgICAg
ICAgICAgIH0KICNpZiBFTkFCTEUoQkxPQikKICAgICAgICAgICAgICAgICBlbHNlCkBAIC00NTgs
MTUgKzQzOCw2IEBAIHN0YXRpYyB2b2lkIGVuY29kZUVsZW1lbnQoRW5jb2RlciYgZW5jb2QKICAg
ICAgICAgZW5jb2Rlci5lbmNvZGVTdHJpbmcoZWxlbWVudC5tX3VybC5zdHJpbmcoKSk7CiAgICAg
ICAgIHJldHVybjsKICNlbmRpZgotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotICAgIGNhc2Ug
Rm9ybURhdGFFbGVtZW50OjplbmNvZGVkVVJMOgotICAgICAgICBlbmNvZGVyLmVuY29kZVN0cmlu
ZyhlbGVtZW50Lm1fdXJsLnN0cmluZygpKTsKLSAgICAgICAgZW5jb2Rlci5lbmNvZGVJbnQ2NChl
bGVtZW50Lm1fZmlsZVN0YXJ0KTsKLSAgICAgICAgZW5jb2Rlci5lbmNvZGVJbnQ2NChlbGVtZW50
Lm1fZmlsZUxlbmd0aCk7Ci0gICAgICAgIGVuY29kZXIuZW5jb2RlRG91YmxlKGVsZW1lbnQubV9l
eHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lKTsKLSAgICAgICAgcmV0dXJuOwotI2VuZGlmCiAg
ICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC00OTEsOSArNDYyLDYgQEAgc3Rh
dGljIGJvb2wgZGVjb2RlRWxlbWVudChEZWNvZGVyJiBkZWNvZAogICAgIH0KIAogICAgIGNhc2Ug
Rm9ybURhdGFFbGVtZW50OjplbmNvZGVkRmlsZToKLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0g
ICAgY2FzZSBGb3JtRGF0YUVsZW1lbnQ6OmVuY29kZWRVUkw6Ci0jZW5kaWYKICAgICB7CiAgICAg
ICAgIGVsZW1lbnQubV90eXBlID0gc3RhdGljX2Nhc3Q8Rm9ybURhdGFFbGVtZW50OjpUeXBlPih0
eXBlKTsKICAgICAgICAgU3RyaW5nIGZpbGVuYW1lT3JVUkw7CkBAIC01MTksMTMgKzQ4Nyw3IEBA
IHN0YXRpYyBib29sIGRlY29kZUVsZW1lbnQoRGVjb2RlciYgZGVjb2QKICAgICAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZURvdWJsZShleHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lKSkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLSAgICAgICAg
aWYgKHR5cGUgPT0gRm9ybURhdGFFbGVtZW50OjplbmNvZGVkVVJMKQotICAgICAgICAgICAgZWxl
bWVudC5tX3VybCA9IFVSTChVUkwoKSwgZmlsZW5hbWVPclVSTCk7Ci0gICAgICAgIGVsc2UKLSNl
bmRpZgogICAgICAgICBlbGVtZW50Lm1fZmlsZW5hbWUgPSBmaWxlbmFtZU9yVVJMOwotCiAjaWYg
RU5BQkxFKEJMT0IpCiAgICAgICAgIGVsZW1lbnQubV9maWxlU3RhcnQgPSBmaWxlU3RhcnQ7CiAg
ICAgICAgIGVsZW1lbnQubV9maWxlTGVuZ3RoID0gZmlsZUxlbmd0aDsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgJKHJldmlzaW9uIDE1NjY5MSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaAkod29ya2luZyBjb3B5
KQpAQCAtNDMsOSArNDMsNiBAQCBwdWJsaWM6CiAjZWxzZQogICAgIEZvcm1EYXRhRWxlbWVudChj
b25zdCBTdHJpbmcmIGZpbGVuYW1lLCBib29sIHNob3VsZEdlbmVyYXRlRmlsZSkgOiBtX3R5cGUo
ZW5jb2RlZEZpbGUpLCBtX2ZpbGVuYW1lKGZpbGVuYW1lKSwgbV9zaG91bGRHZW5lcmF0ZUZpbGUo
c2hvdWxkR2VuZXJhdGVGaWxlKSB7IH0KICNlbmRpZgotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkK
LSAgICBGb3JtRGF0YUVsZW1lbnQoY29uc3QgVVJMJiB1cmwsIGxvbmcgbG9uZyBzdGFydCwgbG9u
ZyBsb25nIGxlbmd0aCwgZG91YmxlIGV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUpIDogbV90
eXBlKGVuY29kZWRVUkwpLCBtX3VybCh1cmwpLCBtX2ZpbGVTdGFydChzdGFydCksIG1fZmlsZUxl
bmd0aChsZW5ndGgpLCBtX2V4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUoZXhwZWN0ZWRGaWxl
TW9kaWZpY2F0aW9uVGltZSksIG1fc2hvdWxkR2VuZXJhdGVGaWxlKGZhbHNlKSB7IH0KLSNlbmRp
ZgogCiAgICAgZW51bSBUeXBlIHsKICAgICAgICAgZGF0YSwKQEAgLTUzLDkgKzUwLDYgQEAgcHVi
bGljOgogI2lmIEVOQUJMRShCTE9CKQogICAgICAgICAsIGVuY29kZWRCbG9iCiAjZW5kaWYKLSNp
ZiBFTkFCTEUoRklMRV9TWVNURU0pCi0gICAgICAgICwgZW5jb2RlZFVSTAotI2VuZGlmCiAgICAg
fSBtX3R5cGU7CiAgICAgVmVjdG9yPGNoYXI+IG1fZGF0YTsKICAgICBTdHJpbmcgbV9maWxlbmFt
ZTsKQEAgLTg2LDEwICs4MCw2IEBAIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgRm9ybURh
dGFFbGUKICNlbHNlCiAgICAgICAgIHJldHVybiBhLm1fZmlsZW5hbWUgPT0gYi5tX2ZpbGVuYW1l
OwogI2VuZGlmCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotICAgIGlmIChhLm1fdHlwZSA9PSBG
b3JtRGF0YUVsZW1lbnQ6OmVuY29kZWRVUkwpCi0gICAgICAgIHJldHVybiBhLm1fdXJsID09IGIu
bV91cmw7Ci0jZW5kaWYKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMTI2LDEwICsxMTYsNiBA
QCBwdWJsaWM6CiAgICAgdm9pZCBhcHBlbmRGaWxlUmFuZ2UoY29uc3QgU3RyaW5nJiBmaWxlbmFt
ZSwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgbGVuZ3RoLCBkb3VibGUgZXhwZWN0ZWRNb2Rp
ZmljYXRpb25UaW1lLCBib29sIHNob3VsZEdlbmVyYXRlRmlsZSA9IGZhbHNlKTsKICAgICB2b2lk
IGFwcGVuZEJsb2IoY29uc3QgVVJMJiBibG9iVVJMKTsKICNlbmRpZgotI2lmIEVOQUJMRShGSUxF
X1NZU1RFTSkKLSAgICB2b2lkIGFwcGVuZFVSTChjb25zdCBVUkwmKTsKLSAgICB2b2lkIGFwcGVu
ZFVSTFJhbmdlKGNvbnN0IFVSTCYsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGxlbmd0aCwg
ZG91YmxlIGV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSk7Ci0jZW5kaWYKICAgICBjaGFyKiBleHBh
bmREYXRhU3RvcmUoc2l6ZV90KTsKIAogICAgIHZvaWQgZmxhdHRlbihWZWN0b3I8Y2hhcj4mKSBj
b25zdDsgLy8gb21pdHMgZmlsZXMKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NjY5MSkKKysr
IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBA
CisyMDEzLTA5LTMwICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVt
b3ZlIHN1cHBvcnQgZm9yIERPTUZpbGVTeXN0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMjEzNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNj
b25maWc6CisKIDIwMTMtMDktMzAgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNv
bT4KIAogICAgICAgICBGaXggYnVpbGQuCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9Db25maWd1cmF0
aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwkocmV2aXNpb24gMTU2Njkx
KQorKysgU291cmNlL1dlYktpdDIvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25m
aWcJKHdvcmtpbmcgY29weSkKQEAgLTgyLDcgKzgyLDYgQEAgRU5BQkxFX0VOQ1JZUFRFRF9NRURJ
QV9WMl9tYWNvc3ggPSAkKEVOQQogRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMl9tYWNvc3hfMTA3
MCA9IDsKIEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjJfbWFjb3N4XzEwODAgPSA7CiBFTkFCTEVf
RU5DUllQVEVEX01FRElBX1YyX21hY29zeF8xMDkwID0gRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9W
MjsKLUVOQUJMRV9GSUxFX1NZU1RFTSA9IDsKIEVOQUJMRV9GSUxURVJTID0gRU5BQkxFX0ZJTFRF
UlM7CiBFTkFCTEVfRk9OVF9MT0FEX0VWRU5UUyA9IDsKIEVOQUJMRV9GVUxMU0NSRUVOX0FQSSA9
ICQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJXyQoUExBVEZPUk1fTkFNRSkpOwpAQCAtMTg3LDQgKzE4
Niw0IEBAIEVOQUJMRV9YU0xUID0gRU5BQkxFX1hTTFQ7CiAKIEVOQUJMRV9GVExfSklUID0gOwog
Ci1GRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV8zRF9SRU5ERVJJTkcpICQoRU5BQkxFX0FDQ0VM
RVJBVEVEXzJEX0NBTlZBUykgJChFTkFCTEVfQkxPQikgJChFTkFCTEVfQ0FDSEVfUEFSVElUSU9O
SU5HKSAkKEVOQUJMRV9DQU5WQVNfUEFUSCkgJChFTkFCTEVfQ0FOVkFTX1BST1hZKSAkKEVOQUJM
RV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVfQ1NQX05FWFQpICQoRU5BQkxFX0NTU19CT1hf
REVDT1JBVElPTl9CUkVBSykgJChFTkFCTEVfQ1NTX0NPTVBPU0lUSU5HKSAkKEVOQUJMRV9DU1Nf
REVWSUNFX0FEQVBUQVRJT04pICQoRU5BQkxFX0NTU19FWENMVVNJT05TKSAkKEVOQUJMRV9DU1Nf
RklMVEVSUykgJChFTkFCTEVfQ1NTX0lNQUdFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9DU1NfSU1B
R0VfUkVTT0xVVElPTikgJChFTkFCTEVfQ1NTX1JFR0lPTlMpICQoRU5BQkxFX0NTU19TSEFERVJT
KSAkKEVOQUJMRV9DU1NfU0hBUEVTKSAkKEVOQUJMRV9DU1NfU1RJQ0tZX1BPU0lUSU9OKSAkKEVO
QUJMRV9DU1NfVFJBTlNGT1JNU19BTklNQVRJT05TX1VOUFJFRklYRUQpICQoRU5BQkxFX0NTU19W
QVJJQUJMRVMpICQoRU5BQkxFX0NTUzNfQ09ORElUSU9OQUxfUlVMRVMpICQoRU5BQkxFX0NTUzNf
VEVYVCkgJChFTkFCTEVfQ1NTM19URVhUX0xJTkVfQlJFQUspICQoRU5BQkxFX0NVUlNPUl9WSVNJ
QklMSVRZKSAkKEVOQUJMRV9DVVNUT01fU0NIRU1FX0hBTkRMRVIpICQoRU5BQkxFX0RBU0hCT0FS
RF9TVVBQT1JUKSAkKEVOQUJMRV9EQVRBTElTVF9FTEVNRU5UKSAkKEVOQUJMRV9EQVRBX1RSQU5T
RkVSX0lURU1TKSAkKEVOQUJMRV9ERVRBSUxTX0VMRU1FTlQpICQoRU5BQkxFX0RFVklDRV9PUklF
TlRBVElPTikgJChFTkFCTEVfRElSRUNUT1JZX1VQTE9BRCkgJChFTkFCTEVfRE9NNF9FVkVOVFNf
Q09OU1RSVUNUT1IpICQoRU5BQkxFX0RSQUdHQUJMRV9SRUdJT04pICQoRU5BQkxFX0VOQ1JZUFRF
RF9NRURJQSkgJChFTkFCTEVfRU5DUllQVEVEX01FRElBX1YyKSAkKEVOQUJMRV9GSUxFX1NZU1RF
TSkgJChFTkFCTEVfRklMVEVSUykgJChFTkFCTEVfRk9OVF9MT0FEX0VWRU5UUykgJChFTkFCTEVf
RlVMTFNDUkVFTl9BUEkpICQoRU5BQkxFX0dBTUVQQUQpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAk
KEVOQUJMRV9ISURERU5fUEFHRV9ET01fVElNRVJfVEhST1RUTElORykgJChFTkFCTEVfSElHSF9E
UElfQ0FOVkFTKSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0lGUkFNRV9TRUFNTEVT
UykgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRSkgJChFTkFCTEVfSU5ESUVfVUkpICQoRU5BQkxF
X0lOUFVUX1NQRUVDSCkgJChFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUikgJChFTkFCTEVfSU5QVVRf
VFlQRV9DT0xPUl9QT1BPVkVSKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEUpICQoRU5BQkxFX0lO
UFVUX1RZUEVfREFURVRJTUVfSU5DT01QTEVURSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElN
RUxPQ0FMKSAkKEVOQUJMRV9JTlBVVF9UWVBFX01PTlRIKSAkKEVOQUJMRV9JTlBVVF9UWVBFX1RJ
TUUpICQoRU5BQkxFX0lOUFVUX1RZUEVfV0VFSykgJChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dF
UikgJChFTkFCTEVfTEVHQUNZX0NTU19WRU5ET1JfUFJFRklYRVMpICQoRU5BQkxFX0xFR0FDWV9O
T1RJRklDQVRJT05TKSAkKEVOQUJMRV9MRUdBQ1lfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9M
RUdBQ1lfV0VCX0FVRElPKSAkKEVOQUJMRV9MSU5LX1BSRUZFVENIKSAkKEVOQUJMRV9NQVRITUwp
ICQoRU5BQkxFX01FRElBX0NPTlRST0xTX1NDUklQVCkgJChFTkFCTEVfTUVESUFfU09VUkNFKSAk
KEVOQUJMRV9NRURJQV9TVEFUSVNUSUNTKSAkKEVOQUJMRV9NRVRFUl9FTEVNRU5UKSAkKEVOQUJM
RV9NSFRNTCkgJChFTkFCTEVfTU9VU0VfQ1VSU09SX1NDQUxFKSAkKEVOQUJMRV9OQVZJR0FUT1Jf
Q09OVEVOVF9VVElMUykgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfUEFHRV9WSVNJ
QklMSVRZX0FQSSkgJChFTkFCTEVfUERGS0lUX1BMVUdJTikgJChFTkFCTEVfUExVR0lOX1BST1hZ
X0ZPUl9WSURFTykgJChFTkFCTEVfUFJPR1JFU1NfRUxFTUVOVCkgJChFTkFCTEVfUFJPTUlTRVMp
ICQoRU5BQkxFX1BST1hJTUlUWV9FVkVOVFMpICQoRU5BQkxFX1BVQkxJQ19TVUZGSVhfTElTVCkg
JChFTkFCTEVfUVVPVEEpICQoRU5BQkxFX1JFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKSAkKEVOQUJM
RV9SRVNPTFVUSU9OX01FRElBX1FVRVJZKSAkKEVOQUJMRV9TQ1JJUFRFRF9TUEVFQ0gpICQoRU5B
QkxFX1NIQURPV19ET00pICQoRU5BQkxFX1NIQVJFRF9XT1JLRVJTKSAkKEVOQUJMRV9TUEVFQ0hf
U1lOVEhFU0lTKSAkKEVOQUJMRV9TUUxfREFUQUJBU0UpICQoRU5BQkxFX1NVQlBJWEVMX0xBWU9V
VCkgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfRk9OVFMpICQoRU5BQkxFX1RFTVBMQVRFX0VM
RU1FTlQpICQoRU5BQkxFX1RFWFRfQVVUT1NJWklORykgJChFTkFCTEVfVEhSRUFERURfSFRNTF9Q
QVJTRVIpICQoRU5BQkxFX1RPVUNIX0lDT05fTE9BRElORykgJChFTkFCTEVfVVNFUlNFTEVDVF9B
TEwpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9WSURFT19UUkFDSykgJChFTkFCTEVfVklFV19N
T0RFX0NTU19NRURJQSkgJChFTkFCTEVfV0VCR0wpICQoRU5BQkxFX1dFQl9BVURJTykgJChFTkFC
TEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxFX1dFQl9USU1JTkcpICQoRU5BQkxFX1dPUktFUlMpICQo
RU5BQkxFX1hIUl9USU1FT1VUKSAkKEVOQUJMRV9YU0xUKSAkKEVOQUJMRV9GVExfSklUKSAkKEZF
QVRVUkVfREVGSU5FU18kKFBMQVRGT1JNX05BTUUpKTsKK0ZFQVRVUkVfREVGSU5FUyA9ICQoRU5B
QkxFXzNEX1JFTkRFUklORykgJChFTkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTKSAkKEVOQUJM
RV9CTE9CKSAkKEVOQUJMRV9DQUNIRV9QQVJUSVRJT05JTkcpICQoRU5BQkxFX0NBTlZBU19QQVRI
KSAkKEVOQUJMRV9DQU5WQVNfUFJPWFkpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVO
QUJMRV9DU1BfTkVYVCkgJChFTkFCTEVfQ1NTX0JPWF9ERUNPUkFUSU9OX0JSRUFLKSAkKEVOQUJM
RV9DU1NfQ09NUE9TSVRJTkcpICQoRU5BQkxFX0NTU19ERVZJQ0VfQURBUFRBVElPTikgJChFTkFC
TEVfQ1NTX0VYQ0xVU0lPTlMpICQoRU5BQkxFX0NTU19GSUxURVJTKSAkKEVOQUJMRV9DU1NfSU1B
R0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0NTU19JTUFHRV9SRVNPTFVUSU9OKSAkKEVOQUJMRV9D
U1NfUkVHSU9OUykgJChFTkFCTEVfQ1NTX1NIQURFUlMpICQoRU5BQkxFX0NTU19TSEFQRVMpICQo
RU5BQkxFX0NTU19TVElDS1lfUE9TSVRJT04pICQoRU5BQkxFX0NTU19UUkFOU0ZPUk1TX0FOSU1B
VElPTlNfVU5QUkVGSVhFRCkgJChFTkFCTEVfQ1NTX1ZBUklBQkxFUykgJChFTkFCTEVfQ1NTM19D
T05ESVRJT05BTF9SVUxFUykgJChFTkFCTEVfQ1NTM19URVhUKSAkKEVOQUJMRV9DU1MzX1RFWFRf
TElORV9CUkVBSykgJChFTkFCTEVfQ1VSU09SX1ZJU0lCSUxJVFkpICQoRU5BQkxFX0NVU1RPTV9T
Q0hFTUVfSEFORExFUikgJChFTkFCTEVfREFTSEJPQVJEX1NVUFBPUlQpICQoRU5BQkxFX0RBVEFM
SVNUX0VMRU1FTlQpICQoRU5BQkxFX0RBVEFfVFJBTlNGRVJfSVRFTVMpICQoRU5BQkxFX0RFVEFJ
TFNfRUxFTUVOVCkgJChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9ESVJFQ1RP
UllfVVBMT0FEKSAkKEVOQUJMRV9ET000X0VWRU5UU19DT05TVFJVQ1RPUikgJChFTkFCTEVfRFJB
R0dBQkxFX1JFR0lPTikgJChFTkFCTEVfRU5DUllQVEVEX01FRElBKSAkKEVOQUJMRV9FTkNSWVBU
RURfTUVESUFfVjIpICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0ZPTlRfTE9BRF9FVkVOVFMp
ICQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJKSAkKEVOQUJMRV9HQU1FUEFEKSAkKEVOQUJMRV9HRU9M
T0NBVElPTikgJChFTkFCTEVfSElEREVOX1BBR0VfRE9NX1RJTUVSX1RIUk9UVExJTkcpICQoRU5B
QkxFX0hJR0hfRFBJX0NBTlZBUykgJChFTkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9JRlJB
TUVfU0VBTUxFU1MpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0UpICQoRU5BQkxFX0lORElFX1VJ
KSAkKEVOQUJMRV9JTlBVVF9TUEVFQ0gpICQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1IpICQoRU5B
QkxFX0lOUFVUX1RZUEVfQ09MT1JfUE9QT1ZFUikgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFKSAk
KEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FX0lOQ09NUExFVEUpICQoRU5BQkxFX0lOUFVUX1RZ
UEVfREFURVRJTUVMT0NBTCkgJChFTkFCTEVfSU5QVVRfVFlQRV9NT05USCkgJChFTkFCTEVfSU5Q
VVRfVFlQRV9USU1FKSAkKEVOQUJMRV9JTlBVVF9UWVBFX1dFRUspICQoRU5BQkxFX0pBVkFTQ1JJ
UFRfREVCVUdHRVIpICQoRU5BQkxFX0xFR0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJM
RV9MRUdBQ1lfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfTEVHQUNZX1ZFTkRPUl9QUkVGSVhFUykg
JChFTkFCTEVfTEVHQUNZX1dFQl9BVURJTykgJChFTkFCTEVfTElOS19QUkVGRVRDSCkgJChFTkFC
TEVfTUFUSE1MKSAkKEVOQUJMRV9NRURJQV9DT05UUk9MU19TQ1JJUFQpICQoRU5BQkxFX01FRElB
X1NPVVJDRSkgJChFTkFCTEVfTUVESUFfU1RBVElTVElDUykgJChFTkFCTEVfTUVURVJfRUxFTUVO
VCkgJChFTkFCTEVfTUhUTUwpICQoRU5BQkxFX01PVVNFX0NVUlNPUl9TQ0FMRSkgJChFTkFCTEVf
TkFWSUdBVE9SX0NPTlRFTlRfVVRJTFMpICQoRU5BQkxFX05PVElGSUNBVElPTlMpICQoRU5BQkxF
X1BBR0VfVklTSUJJTElUWV9BUEkpICQoRU5BQkxFX1BERktJVF9QTFVHSU4pICQoRU5BQkxFX1BM
VUdJTl9QUk9YWV9GT1JfVklERU8pICQoRU5BQkxFX1BST0dSRVNTX0VMRU1FTlQpICQoRU5BQkxF
X1BST01JU0VTKSAkKEVOQUJMRV9QUk9YSU1JVFlfRVZFTlRTKSAkKEVOQUJMRV9QVUJMSUNfU1VG
RklYX0xJU1QpICQoRU5BQkxFX1FVT1RBKSAkKEVOQUJMRV9SRVFVRVNUX0FOSU1BVElPTl9GUkFN
RSkgJChFTkFCTEVfUkVTT0xVVElPTl9NRURJQV9RVUVSWSkgJChFTkFCTEVfU0NSSVBURURfU1BF
RUNIKSAkKEVOQUJMRV9TSEFET1dfRE9NKSAkKEVOQUJMRV9TSEFSRURfV09SS0VSUykgJChFTkFC
TEVfU1BFRUNIX1NZTlRIRVNJUykgJChFTkFCTEVfU1FMX0RBVEFCQVNFKSAkKEVOQUJMRV9TVUJQ
SVhFTF9MQVlPVVQpICQoRU5BQkxFX1NWRykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9U
RU1QTEFURV9FTEVNRU5UKSAkKEVOQUJMRV9URVhUX0FVVE9TSVpJTkcpICQoRU5BQkxFX1RIUkVB
REVEX0hUTUxfUEFSU0VSKSAkKEVOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkcpICQoRU5BQkxFX1VT
RVJTRUxFQ1RfQUxMKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfVklERU9fVFJBQ0spICQoRU5B
QkxFX1ZJRVdfTU9ERV9DU1NfTUVESUEpICQoRU5BQkxFX1dFQkdMKSAkKEVOQUJMRV9XRUJfQVVE
SU8pICQoRU5BQkxFX1dFQl9TT0NLRVRTKSAkKEVOQUJMRV9XRUJfVElNSU5HKSAkKEVOQUJMRV9X
T1JLRVJTKSAkKEVOQUJMRV9YSFJfVElNRU9VVCkgJChFTkFCTEVfWFNMVCkgJChFTkFCTEVfRlRM
X0pJVCkgJChGRUFUVVJFX0RFRklORVNfJChQTEFURk9STV9OQU1FKSk7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
YmxhY2tiZXJyeS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJLaXQv
YmxhY2tiZXJyeS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAx
My0wOS0zMCAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbW92ZSBz
dXBwb3J0IGZvciBET01GaWxlU3lzdGVtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMjIxMzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIEFwaS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKEJsYWNrQmVycnk6
OldlYktpdDo6V2ViUGFnZVByaXZhdGU6OmluaXQpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2Vi
S2l0OjpXZWJQYWdlOjpjbGVhcldlYkZpbGVTeXN0ZW0pOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0Fib3V0RGF0YUVuYWJsZUZlYXR1cmVzLmluOgorCiAyMDEzLTA5LTI4ICBEYXJpbiBBZGxl
ciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgRnJhbWU6Om1haW5GcmFtZSBhbmQg
RnJhbWU6OmlzTWFpbkZyYW1lCkluZGV4OiBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dl
YlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2Vi
UGFnZS5jcHAJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9B
cGkvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0MCwxNCArNjQwLDYgQEAgdm9pZCBX
ZWJQYWdlUHJpdmF0ZTo6aW5pdChjb25zdCBCbGFja0JlcgogICAgIG1fcGFnZS0+d2luZG93U2Ny
ZWVuRGlkQ2hhbmdlKChQbGF0Zm9ybURpc3BsYXlJRCkwKTsKICNlbmRpZgogCi0jaWYgRU5BQkxF
KEZJTEVfU1lTVEVNKQotICAgIHN0YXRpYyBib29sIGxvY2FsRmlsZVN5c3RlbUluaXRpYWxpemVk
ID0gZmFsc2U7Ci0gICAgaWYgKCFsb2NhbEZpbGVTeXN0ZW1Jbml0aWFsaXplZCkgewotICAgICAg
ICBsb2NhbEZpbGVTeXN0ZW1Jbml0aWFsaXplZCA9IHRydWU7Ci0gICAgICAgIFdlYkNvcmU6Okxv
Y2FsRmlsZVN5c3RlbTo6aW5pdGlhbGl6ZUxvY2FsRmlsZVN5c3RlbSgiLyIpOwotICAgIH0KLSNl
bmRpZgotCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIC8vIFRoZSBjb21w
b3NpdG9yIHdpbGwgYmUgbmVlZGVkIGZvciBvdmVybGF5IHJlbmRlcmluZywgc28gY3JlYXRlIGl0
CiAgICAgLy8gdW5jb25kaXRpb25hbGx5LiBJdCB3aWxsIGFsbG9jYXRlIE9wZW5HTCBvYmplY3Rz
IGxhemlseSwgc28gdGhpcyBpbmN1cnMKQEAgLTQ4NTYsOSArNDg0OCw2IEBAIHZvaWQgV2ViUGFn
ZTo6Y2xlYXJOZXZlclJlbWVtYmVyU2l0ZXMoKQogCiB2b2lkIFdlYlBhZ2U6OmNsZWFyV2ViRmls
ZVN5c3RlbSgpCiB7Ci0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotICAgIFBsYXRmb3JtOjpXZWJG
aWxlU3lzdGVtOjpkZWxldGVBbGxGaWxlU3lzdGVtcygpOwotI2VuZGlmCiB9CiAKIHZvaWQgV2Vi
UGFnZTo6Y2xlYXJDYWNoZSgpCkluZGV4OiBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29y
ZVN1cHBvcnQvQWJvdXREYXRhRW5hYmxlRmVhdHVyZXMuaW4KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0Fib3V0RGF0YUVuYWJsZUZlYXR1cmVz
LmluCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29y
ZVN1cHBvcnQvQWJvdXREYXRhRW5hYmxlRmVhdHVyZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTcx
LDcgKzcxLDYgQEAgRVhFQ1VUQUJMRV9BTExPQ0FUT1JfRklYRUQKIEVYUEVSSU1FTlRBTF9GRUFU
VVJFCiBGQVNUX01BTExPQ19NQVRDSF9WQUxJREFUSU9OCiBGQVNUX01PQklMRV9TQ1JPTExJTkcK
LUZJTEVfU1lTVEVNCiBGSUxURVJTCiBGSVhFRF9SRVBPUlRFRF9TSVpFCiBGT05UX0xPQURfRVZF
TlRTCkluZGV4OiBTb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2Vi
S2l0L2VmbC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMy0w
OS0zMCAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbW92ZSBzdXBw
b3J0IGZvciBET01GaWxlU3lzdGVtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMjIxMzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIGV3ay9ld2tfc2V0dGluZ3MuY3BwOgorICAgICAgICAoZXdrX3NldHRp
bmdzX2ZpbGVfc3lzdGVtX3BhdGhfc2V0KToKKwogMjAxMy0wOS0yOCAgRGFyaW4gQWRsZXIgIDxk
YXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIEZyYW1lOjptYWluRnJhbWUgYW5kIEZyYW1l
Ojppc01haW5GcmFtZQpJbmRleDogU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19zZXR0aW5ncy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19zZXR0aW5ncy5jcHAJ
KHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfc2V0dGluZ3Mu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTEsMTEgKzM1MSw3IEBAIGNvbnN0IGNoYXIqIGV3a19z
ZXR0aW5nc19kZWZhdWx0X3VzZXJfYWcKICAqLwogdm9pZCBld2tfc2V0dGluZ3NfZmlsZV9zeXN0
ZW1fcGF0aF9zZXQoY29uc3QgY2hhciogcGF0aCkKIHsKLSNpZiBFTkFCTEUoRklMRV9TWVNURU0p
Ci0gICAgV2ViQ29yZTo6TG9jYWxGaWxlU3lzdGVtOjppbml0aWFsaXplTG9jYWxGaWxlU3lzdGVt
KFN0cmluZzo6ZnJvbVVURjgocGF0aCkpOwotI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ocGF0aCk7
Ci0jZW5kaWYKIH0KIAogdm9pZCBld2tfc2V0dGluZ3NfYXBwbGljYXRpb25fY2FjaGVfcGF0aF9z
ZXQoY29uc3QgY2hhciogcGF0aCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NjY5
MSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDEyIEBACisyMDEzLTA5LTMwICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgUmVtb3ZlIHN1cHBvcnQgZm9yIERPTUZpbGVTeXN0ZW0KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMjEzNworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ29uZmlndXJhdGlvbnMvRmVhdHVyZURl
ZmluZXMueGNjb25maWc6CisKIDIwMTMtMDktMzAgIEJlbmphbWluIFBvdWxhaW4gIDxiZW5qYW1p
bkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlbW92ZSB0aGUgY29kZSBndWFyZGVkIGJ5IFNUWUxF
X1NDT1BFRApJbmRleDogU291cmNlL1dlYktpdC9tYWMvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURl
ZmluZXMueGNjb25maWcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ29uZmlndXJh
dGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJj
ZS9XZWJLaXQvbWFjL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCSh3b3Jr
aW5nIGNvcHkpCkBAIC04Miw3ICs4Miw2IEBAIEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjJfbWFj
b3N4ID0gJChFTkEKIEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjJfbWFjb3N4XzEwNzAgPSA7CiBF
TkFCTEVfRU5DUllQVEVEX01FRElBX1YyX21hY29zeF8xMDgwID0gOwogRU5BQkxFX0VOQ1JZUFRF
RF9NRURJQV9WMl9tYWNvc3hfMTA5MCA9IEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjI7Ci1FTkFC
TEVfRklMRV9TWVNURU0gPSA7CiBFTkFCTEVfRklMVEVSUyA9IEVOQUJMRV9GSUxURVJTOwogRU5B
QkxFX0ZPTlRfTE9BRF9FVkVOVFMgPSA7CiBFTkFCTEVfRlVMTFNDUkVFTl9BUEkgPSAkKEVOQUJM
RV9GVUxMU0NSRUVOX0FQSV8kKFBMQVRGT1JNX05BTUUpKTsKQEAgLTE4Nyw0ICsxODYsNCBAQCBF
TkFCTEVfWFNMVCA9IEVOQUJMRV9YU0xUOwogCiBFTkFCTEVfRlRMX0pJVCA9IDsKIAotRkVBVFVS
RV9ERUZJTkVTID0gJChFTkFCTEVfM0RfUkVOREVSSU5HKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF8y
RF9DQU5WQVMpICQoRU5BQkxFX0JMT0IpICQoRU5BQkxFX0NBQ0hFX1BBUlRJVElPTklORykgJChF
TkFCTEVfQ0FOVkFTX1BBVEgpICQoRU5BQkxFX0NBTlZBU19QUk9YWSkgJChFTkFCTEVfQ0hBTk5F
TF9NRVNTQUdJTkcpICQoRU5BQkxFX0NTUF9ORVhUKSAkKEVOQUJMRV9DU1NfQk9YX0RFQ09SQVRJ
T05fQlJFQUspICQoRU5BQkxFX0NTU19DT01QT1NJVElORykgJChFTkFCTEVfQ1NTX0RFVklDRV9B
REFQVEFUSU9OKSAkKEVOQUJMRV9DU1NfRVhDTFVTSU9OUykgJChFTkFCTEVfQ1NTX0ZJTFRFUlMp
ICQoRU5BQkxFX0NTU19JTUFHRV9PUklFTlRBVElPTikgJChFTkFCTEVfQ1NTX0lNQUdFX1JFU09M
VVRJT04pICQoRU5BQkxFX0NTU19SRUdJT05TKSAkKEVOQUJMRV9DU1NfU0hBREVSUykgJChFTkFC
TEVfQ1NTX1NIQVBFUykgJChFTkFCTEVfQ1NTX1NUSUNLWV9QT1NJVElPTikgJChFTkFCTEVfQ1NT
X1RSQU5TRk9STVNfQU5JTUFUSU9OU19VTlBSRUZJWEVEKSAkKEVOQUJMRV9DU1NfVkFSSUFCTEVT
KSAkKEVOQUJMRV9DU1MzX0NPTkRJVElPTkFMX1JVTEVTKSAkKEVOQUJMRV9DU1MzX1RFWFQpICQo
RU5BQkxFX0NTUzNfVEVYVF9MSU5FX0JSRUFLKSAkKEVOQUJMRV9DVVJTT1JfVklTSUJJTElUWSkg
JChFTkFCTEVfQ1VTVE9NX1NDSEVNRV9IQU5ETEVSKSAkKEVOQUJMRV9EQVNIQk9BUkRfU1VQUE9S
VCkgJChFTkFCTEVfREFUQUxJU1RfRUxFTUVOVCkgJChFTkFCTEVfREFUQV9UUkFOU0ZFUl9JVEVN
UykgJChFTkFCTEVfREVUQUlMU19FTEVNRU5UKSAkKEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04p
ICQoRU5BQkxFX0RJUkVDVE9SWV9VUExPQUQpICQoRU5BQkxFX0RPTTRfRVZFTlRTX0NPTlNUUlVD
VE9SKSAkKEVOQUJMRV9EUkFHR0FCTEVfUkVHSU9OKSAkKEVOQUJMRV9FTkNSWVBURURfTUVESUEp
ICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMikgJChFTkFCTEVfRklMRV9TWVNURU0pICQoRU5B
QkxFX0ZJTFRFUlMpICQoRU5BQkxFX0ZPTlRfTE9BRF9FVkVOVFMpICQoRU5BQkxFX0ZVTExTQ1JF
RU5fQVBJKSAkKEVOQUJMRV9HQU1FUEFEKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVf
SElEREVOX1BBR0VfRE9NX1RJTUVSX1RIUk9UVExJTkcpICQoRU5BQkxFX0hJR0hfRFBJX0NBTlZB
UykgJChFTkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9JRlJBTUVfU0VBTUxFU1MpICQoRU5B
QkxFX0lOREVYRURfREFUQUJBU0UpICQoRU5BQkxFX0lORElFX1VJKSAkKEVOQUJMRV9JTlBVVF9T
UEVFQ0gpICQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1IpICQoRU5BQkxFX0lOUFVUX1RZUEVfQ09M
T1JfUE9QT1ZFUikgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFKSAkKEVOQUJMRV9JTlBVVF9UWVBF
X0RBVEVUSU1FX0lOQ09NUExFVEUpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVMT0NBTCkg
JChFTkFCTEVfSU5QVVRfVFlQRV9NT05USCkgJChFTkFCTEVfSU5QVVRfVFlQRV9USU1FKSAkKEVO
QUJMRV9JTlBVVF9UWVBFX1dFRUspICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQoRU5B
QkxFX0xFR0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MRUdBQ1lfTk9USUZJQ0FU
SU9OUykgJChFTkFCTEVfTEVHQUNZX1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTEVHQUNZX1dF
Ql9BVURJTykgJChFTkFCTEVfTElOS19QUkVGRVRDSCkgJChFTkFCTEVfTUFUSE1MKSAkKEVOQUJM
RV9NRURJQV9DT05UUk9MU19TQ1JJUFQpICQoRU5BQkxFX01FRElBX1NPVVJDRSkgJChFTkFCTEVf
TUVESUFfU1RBVElTVElDUykgJChFTkFCTEVfTUVURVJfRUxFTUVOVCkgJChFTkFCTEVfTUhUTUwp
ICQoRU5BQkxFX01PVVNFX0NVUlNPUl9TQ0FMRSkgJChFTkFCTEVfTkFWSUdBVE9SX0NPTlRFTlRf
VVRJTFMpICQoRU5BQkxFX05PVElGSUNBVElPTlMpICQoRU5BQkxFX1BBR0VfVklTSUJJTElUWV9B
UEkpICQoRU5BQkxFX1BERktJVF9QTFVHSU4pICQoRU5BQkxFX1BMVUdJTl9QUk9YWV9GT1JfVklE
RU8pICQoRU5BQkxFX1BST0dSRVNTX0VMRU1FTlQpICQoRU5BQkxFX1BST01JU0VTKSAkKEVOQUJM
RV9QUk9YSU1JVFlfRVZFTlRTKSAkKEVOQUJMRV9QVUJMSUNfU1VGRklYX0xJU1QpICQoRU5BQkxF
X1FVT1RBKSAkKEVOQUJMRV9SRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkgJChFTkFCTEVfUkVTT0xV
VElPTl9NRURJQV9RVUVSWSkgJChFTkFCTEVfU0NSSVBURURfU1BFRUNIKSAkKEVOQUJMRV9TSEFE
T1dfRE9NKSAkKEVOQUJMRV9TSEFSRURfV09SS0VSUykgJChFTkFCTEVfU1BFRUNIX1NZTlRIRVNJ
UykgJChFTkFCTEVfU1FMX0RBVEFCQVNFKSAkKEVOQUJMRV9TVUJQSVhFTF9MQVlPVVQpICQoRU5B
QkxFX1NWRykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9URU1QTEFURV9FTEVNRU5UKSAk
KEVOQUJMRV9URVhUX0FVVE9TSVpJTkcpICQoRU5BQkxFX1RIUkVBREVEX0hUTUxfUEFSU0VSKSAk
KEVOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkcpICQoRU5BQkxFX1VTRVJTRUxFQ1RfQUxMKSAkKEVO
QUJMRV9WSURFTykgJChFTkFCTEVfVklERU9fVFJBQ0spICQoRU5BQkxFX1ZJRVdfTU9ERV9DU1Nf
TUVESUEpICQoRU5BQkxFX1dFQkdMKSAkKEVOQUJMRV9XRUJfQVVESU8pICQoRU5BQkxFX1dFQl9T
T0NLRVRTKSAkKEVOQUJMRV9XRUJfVElNSU5HKSAkKEVOQUJMRV9XT1JLRVJTKSAkKEVOQUJMRV9Y
SFJfVElNRU9VVCkgJChFTkFCTEVfWFNMVCkgJChFTkFCTEVfRlRMX0pJVCkgJChGRUFUVVJFX0RF
RklORVNfJChQTEFURk9STV9OQU1FKSk7CitGRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV8zRF9S
RU5ERVJJTkcpICQoRU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZBUykgJChFTkFCTEVfQkxPQikg
JChFTkFCTEVfQ0FDSEVfUEFSVElUSU9OSU5HKSAkKEVOQUJMRV9DQU5WQVNfUEFUSCkgJChFTkFC
TEVfQ0FOVkFTX1BST1hZKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVfQ1NQ
X05FWFQpICQoRU5BQkxFX0NTU19CT1hfREVDT1JBVElPTl9CUkVBSykgJChFTkFCTEVfQ1NTX0NP
TVBPU0lUSU5HKSAkKEVOQUJMRV9DU1NfREVWSUNFX0FEQVBUQVRJT04pICQoRU5BQkxFX0NTU19F
WENMVVNJT05TKSAkKEVOQUJMRV9DU1NfRklMVEVSUykgJChFTkFCTEVfQ1NTX0lNQUdFX09SSUVO
VEFUSU9OKSAkKEVOQUJMRV9DU1NfSU1BR0VfUkVTT0xVVElPTikgJChFTkFCTEVfQ1NTX1JFR0lP
TlMpICQoRU5BQkxFX0NTU19TSEFERVJTKSAkKEVOQUJMRV9DU1NfU0hBUEVTKSAkKEVOQUJMRV9D
U1NfU1RJQ0tZX1BPU0lUSU9OKSAkKEVOQUJMRV9DU1NfVFJBTlNGT1JNU19BTklNQVRJT05TX1VO
UFJFRklYRUQpICQoRU5BQkxFX0NTU19WQVJJQUJMRVMpICQoRU5BQkxFX0NTUzNfQ09ORElUSU9O
QUxfUlVMRVMpICQoRU5BQkxFX0NTUzNfVEVYVCkgJChFTkFCTEVfQ1NTM19URVhUX0xJTkVfQlJF
QUspICQoRU5BQkxFX0NVUlNPUl9WSVNJQklMSVRZKSAkKEVOQUJMRV9DVVNUT01fU0NIRU1FX0hB
TkRMRVIpICQoRU5BQkxFX0RBU0hCT0FSRF9TVVBQT1JUKSAkKEVOQUJMRV9EQVRBTElTVF9FTEVN
RU5UKSAkKEVOQUJMRV9EQVRBX1RSQU5TRkVSX0lURU1TKSAkKEVOQUJMRV9ERVRBSUxTX0VMRU1F
TlQpICQoRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTikgJChFTkFCTEVfRElSRUNUT1JZX1VQTE9B
RCkgJChFTkFCTEVfRE9NNF9FVkVOVFNfQ09OU1RSVUNUT1IpICQoRU5BQkxFX0RSQUdHQUJMRV9S
RUdJT04pICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQSkgJChFTkFCTEVfRU5DUllQVEVEX01FRElB
X1YyKSAkKEVOQUJMRV9GSUxURVJTKSAkKEVOQUJMRV9GT05UX0xPQURfRVZFTlRTKSAkKEVOQUJM
RV9GVUxMU0NSRUVOX0FQSSkgJChFTkFCTEVfR0FNRVBBRCkgJChFTkFCTEVfR0VPTE9DQVRJT04p
ICQoRU5BQkxFX0hJRERFTl9QQUdFX0RPTV9USU1FUl9USFJPVFRMSU5HKSAkKEVOQUJMRV9ISUdI
X0RQSV9DQU5WQVMpICQoRU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfSUZSQU1FX1NFQU1M
RVNTKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFKSAkKEVOQUJMRV9JTkRJRV9VSSkgJChFTkFC
TEVfSU5QVVRfU1BFRUNIKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SKSAkKEVOQUJMRV9JTlBV
VF9UWVBFX0NPTE9SX1BPUE9WRVIpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURSkgJChFTkFCTEVf
SU5QVVRfVFlQRV9EQVRFVElNRV9JTkNPTVBMRVRFKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVU
SU1FTE9DQUwpICQoRU5BQkxFX0lOUFVUX1RZUEVfTU9OVEgpICQoRU5BQkxFX0lOUFVUX1RZUEVf
VElNRSkgJChFTkFCTEVfSU5QVVRfVFlQRV9XRUVLKSAkKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVH
R0VSKSAkKEVOQUJMRV9MRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTEVHQUNZ
X05PVElGSUNBVElPTlMpICQoRU5BQkxFX0xFR0FDWV9WRU5ET1JfUFJFRklYRVMpICQoRU5BQkxF
X0xFR0FDWV9XRUJfQVVESU8pICQoRU5BQkxFX0xJTktfUFJFRkVUQ0gpICQoRU5BQkxFX01BVEhN
TCkgJChFTkFCTEVfTUVESUFfQ09OVFJPTFNfU0NSSVBUKSAkKEVOQUJMRV9NRURJQV9TT1VSQ0Up
ICQoRU5BQkxFX01FRElBX1NUQVRJU1RJQ1MpICQoRU5BQkxFX01FVEVSX0VMRU1FTlQpICQoRU5B
QkxFX01IVE1MKSAkKEVOQUJMRV9NT1VTRV9DVVJTT1JfU0NBTEUpICQoRU5BQkxFX05BVklHQVRP
Ul9DT05URU5UX1VUSUxTKSAkKEVOQUJMRV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9QQUdFX1ZJ
U0lCSUxJVFlfQVBJKSAkKEVOQUJMRV9QREZLSVRfUExVR0lOKSAkKEVOQUJMRV9QTFVHSU5fUFJP
WFlfRk9SX1ZJREVPKSAkKEVOQUJMRV9QUk9HUkVTU19FTEVNRU5UKSAkKEVOQUJMRV9QUk9NSVNF
UykgJChFTkFCTEVfUFJPWElNSVRZX0VWRU5UUykgJChFTkFCTEVfUFVCTElDX1NVRkZJWF9MSVNU
KSAkKEVOQUJMRV9RVU9UQSkgJChFTkFCTEVfUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpICQoRU5B
QkxFX1JFU09MVVRJT05fTUVESUFfUVVFUlkpICQoRU5BQkxFX1NDUklQVEVEX1NQRUVDSCkgJChF
TkFCTEVfU0hBRE9XX0RPTSkgJChFTkFCTEVfU0hBUkVEX1dPUktFUlMpICQoRU5BQkxFX1NQRUVD
SF9TWU5USEVTSVMpICQoRU5BQkxFX1NRTF9EQVRBQkFTRSkgJChFTkFCTEVfU1VCUElYRUxfTEFZ
T1VUKSAkKEVOQUJMRV9TVkcpICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVfVEVNUExBVEVf
RUxFTUVOVCkgJChFTkFCTEVfVEVYVF9BVVRPU0laSU5HKSAkKEVOQUJMRV9USFJFQURFRF9IVE1M
X1BBUlNFUikgJChFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5HKSAkKEVOQUJMRV9VU0VSU0VMRUNU
X0FMTCkgJChFTkFCTEVfVklERU8pICQoRU5BQkxFX1ZJREVPX1RSQUNLKSAkKEVOQUJMRV9WSUVX
X01PREVfQ1NTX01FRElBKSAkKEVOQUJMRV9XRUJHTCkgJChFTkFCTEVfV0VCX0FVRElPKSAkKEVO
QUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVfV0VCX1RJTUlORykgJChFTkFCTEVfV09SS0VSUykg
JChFTkFCTEVfWEhSX1RJTUVPVVQpICQoRU5BQkxFX1hTTFQpICQoRU5BQkxFX0ZUTF9KSVQpICQo
RkVBVFVSRV9ERUZJTkVTXyQoUExBVEZPUk1fTkFNRSkpOwpJbmRleDogU291cmNlL2F1dG90b29s
cy9TZXR1cFdlYktpdEZlYXR1cmVzLm00Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9hdXRvdG9vbHMv
U2V0dXBXZWJLaXRGZWF0dXJlcy5tNAkocmV2aXNpb24gMTU2NjkxKQorKysgU291cmNlL2F1dG90
b29scy9TZXR1cFdlYktpdEZlYXR1cmVzLm00CSh3b3JraW5nIGNvcHkpCkBAIC0xMjIsNyArMTIy
LDYgQEAgJHNyY2Rpci9Ub29scy9ndGsvZ2VuZXJhdGUtZmVhdHVyZS1kZWZpbgogICAgIEVOQUJM
RV9ESVJFQ1RPUllfVVBMT0FEPTAgXAogICAgIEVOQUJMRV9ET000X0VWRU5UU19DT05TVFJVQ1RP
Uj0wIFwKICAgICBFTkFCTEVfRE9XTkxPQURfQVRUUklCVVRFPTAgXAotICAgIEVOQUJMRV9GSUxF
X1NZU1RFTT0wIFwKICAgICBFTkFCTEVfRklMVEVSUz0xIFwKICAgICBFTkFCTEVfRlRQRElSPTAg
XAogICAgIEVOQUJMRV9GT05UX0xPQURfRVZFTlRTPTAgXApJbmRleDogU291cmNlL2NtYWtlL09w
dGlvbnNCbGFja0JlcnJ5LmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9jbWFrZS9PcHRpb25z
QmxhY2tCZXJyeS5jbWFrZQkocmV2aXNpb24gMTU2NjkxKQorKysgU291cmNlL2NtYWtlL09wdGlv
bnNCbGFja0JlcnJ5LmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xNjEsNyArMTYxLDYgQEAgV0VC
S0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFXwogV0VCS0lUX09QVElPTl9ERUZB
VUxUX1BPUlRfVkFMVUUoRU5BQkxFX0RSQUdfU1VQUE9SVCBPRkYpCiBXRUJLSVRfT1BUSU9OX0RF
RkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfRE9XTkxPQURfQVRUUklCVVRFIE9OKQogV0VCS0lUX09Q
VElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0ZBU1RfTU9CSUxFX1NDUk9MTElORyBPTikK
LVdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9GSUxFX1NZU1RFTSBPTikK
IFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9GSUxURVJTIE9OKQogV0VC
S0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJIE9OKQog
V0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0dFT0xPQ0FUSU9OIE9OKQpJ
bmRleDogU291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZQkocmV2aXNpb24gMTU2NjkxKQorKysgU291
cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1
MCw2IEBAIG1hY3JvKFdFQktJVF9PUFRJT05fQkVHSU4pCiAgICAgV0VCS0lUX09QVElPTl9ERUZJ
TkUoRU5BQkxFX0RPV05MT0FEX0FUVFJJQlVURSAiVG9nZ2xlIGRvd25sb2FkIGF0dHJpYnV0ZSBz
dXBwb3J0IiBPRkYpCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0RSQUdfU1VQUE9S
VCAiVG9nZ2xlIERyYWcgU3VwcG9ydCIgT0ZGKQogICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVO
QUJMRV9GQVNUX01PQklMRV9TQ1JPTExJTkcgIlRvZ2dsZSBGYXN0IE1vYmlsZSBTY3JvbGxpbmcg
c3VwcG9ydCIgT0ZGKQotICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9GSUxFX1NZU1RF
TSAiVG9nZ2xlIEZpbGVTeXN0ZW0gc3VwcG9ydCIgT0ZGKQogICAgIFdFQktJVF9PUFRJT05fREVG
SU5FKEVOQUJMRV9GSUxURVJTICJUb2dnbGUgU1ZHIEZpbHRlcnMgc3VwcG9ydCIgT0ZGKQogICAg
IFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9GT05UX0xPQURfRVZFTlRTICJUb2dnbGUgRm9u
dCBMb2FkIEV2ZW50cyBzdXBwb3J0IiBPRkYpCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5B
QkxFX0ZUUERJUiAiVG9nZ2xlIEZUUCBkaXJlY3Rvcnkgc3VwcG9ydCIgT04pCkluZGV4OiBUb29s
cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNTY2
OTEpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAor
MjAxMy0wOS0zMCAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbW92
ZSBzdXBwb3J0IGZvciBET01GaWxlU3lzdGVtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMjIxMzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbToK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NwcC5weToKKyAgICAg
ICAgKGNoZWNrX3NwYWNpbmcpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hl
Y2tlcnMvY3BwX3VuaXR0ZXN0LnB5OgorICAgICAgICAoQ3BwU3R5bGVUZXN0LnRlc3Rfc3BhY2lu
Z19mb3JfYmluYXJ5X29wcyk6CisgICAgICAgICogcW1ha2UvbWtzcGVjcy9mZWF0dXJlcy9mZWF0
dXJlcy5wcmk6CisKIDIwMTMtMDktMzAgIE1hcmsgUm93ZSAgPG1yb3dlQGFwcGxlLmNvbT4KIAog
ICAgICAgICBNb3JlIGJ1aWxkIGZpeGFnZSBmb3IgYnVpbGRzIHdpdGggU0RLcy4KSW5kZXg6IFRv
b2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0JKHJldmlzaW9uIDE1NjY5MSkKKysr
IFRvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQkod29ya2luZyBjb3B5KQpA
QCAtNzYsNyArNzYsNiBAQCBteSAoCiAgICAgJGRpcmVjdG9yeVVwbG9hZFN1cHBvcnQsCiAgICAg
JGRvbTRFdmVudHNDb25zdHJ1Y3RvciwKICAgICAkZG93bmxvYWRBdHRyaWJ1dGVTdXBwb3J0LAot
ICAgICRmaWxlU3lzdGVtU3VwcG9ydCwKICAgICAkZmlsdGVyc1N1cHBvcnQsCiAgICAgJGZvbnRM
b2FkRXZlbnRzU3VwcG9ydCwKICAgICAkZnRwRGlyU3VwcG9ydCwKQEAgLTI1Nyw5ICsyNTYsNiBA
QCBteSBAZmVhdHVyZXMgPSAoCiAgICAgeyBvcHRpb24gPT4gImRvd25sb2FkLWF0dHJpYnV0ZSIs
IGRlc2MgPT4gIlRvZ2dsZSBEb3dubG9hZCBBdHRyaWJ1dGUgc3VwcG9ydCIsCiAgICAgICBkZWZp
bmUgPT4gIkVOQUJMRV9ET1dOTE9BRF9BVFRSSUJVVEUiLCBkZWZhdWx0ID0+IChpc0JsYWNrQmVy
cnkoKSB8fCBpc0VmbCgpKSwgdmFsdWUgPT4gXCRkb3dubG9hZEF0dHJpYnV0ZVN1cHBvcnQgfSwK
IAotICAgIHsgb3B0aW9uID0+ICJmaWxlLXN5c3RlbSIsIGRlc2MgPT4gIlRvZ2dsZSBGaWxlIFN5
c3RlbSBzdXBwb3J0IiwKLSAgICAgIGRlZmluZSA9PiAiRU5BQkxFX0ZJTEVfU1lTVEVNIiwgZGVm
YXVsdCA9PiBpc0JsYWNrQmVycnkoKSwgdmFsdWUgPT4gXCRmaWxlU3lzdGVtU3VwcG9ydCB9LAot
CiAgICAgeyBvcHRpb24gPT4gImZpbHRlcnMiLCBkZXNjID0+ICJUb2dnbGUgRmlsdGVycyBzdXBw
b3J0IiwKICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX0ZJTFRFUlMiLCBkZWZhdWx0ID0+IChpc0Fw
cGxlV2ViS2l0KCkgfHwgaXNHdGsoKSB8fCBpc0VmbCgpIHx8IGlzQmxhY2tCZXJyeSgpKSwgdmFs
dWUgPT4gXCRmaWx0ZXJzU3VwcG9ydCB9LAogCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3N0eWxlL2NoZWNrZXJzL2NwcC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtp
dHB5L3N0eWxlL2NoZWNrZXJzL2NwcC5weQkocmV2aXNpb24gMTU2NjkxKQorKysgVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jcHAucHkJKHdvcmtpbmcgY29weSkKQEAgLTE4
MzEsMTAgKzE4MzEsMTAgQEAgZGVmIGNoZWNrX3NwYWNpbmcoZmlsZV9leHRlbnNpb24sIGNsZWFu
XwogICAgICMgRklYTUU6IEl0J3Mgbm90IG9rIHRvIGhhdmUgc3BhY2VzIGFyb3VuZCBiaW5hcnkg
b3BlcmF0b3JzIGxpa2UgLgogCiAgICAgIyBZb3Ugc2hvdWxkIGFsd2F5cyBoYXZlIHdoaXRlc3Bh
Y2UgYXJvdW5kIGJpbmFyeSBvcGVyYXRvcnMuCi0gICAgIyBBbGFzLCB3ZSBjYW4ndCB0ZXN0IDwg
b3IgPiBiZWNhdXNlIHRoZXkncmUgbGVnaXRpbWF0ZWx5IHVzZWQgc2FucyBzcGFjZXMKKyAgICAj
IEFsYXMsIHdlIGNhbid0IHRlc3QgPCwgPiwgPDwsIG9yID4+IGJlY2F1c2UgdGhleSdyZSBsZWdp
dGltYXRlbHkgdXNlZCBzYW5zIHNwYWNlcwogICAgICMgKGEtPmIsIHZlY3RvcjxpbnQ+IGEpLiAg
VGhlIG9ubHkgdGltZSB3ZSBjYW4gdGVsbCBpcyBhIDwgd2l0aCBubyA+LCBhbmQKICAgICAjIG9u
bHkgaWYgaXQncyBub3QgdGVtcGxhdGUgcGFyYW1zIGxpc3Qgc3BpbGxpbmcgaW50byB0aGUgbmV4
dCBsaW5lLgotICAgIG1hdGNoZWQgPSBzZWFyY2gocidbXjw+PSFcc10oPT18IT18XCs9fC09fFwq
PXwvPXwvfFx8PXwmPXw8PD18Pj49fDw9fD49fFx8XHx8XHx8JiZ8Pj58PDwpW148Pj0hXHNdJywg
bGluZSkKKyAgICBtYXRjaGVkID0gc2VhcmNoKHInW148Pj0hXHNdKD09fCE9fFwrPXwtPXxcKj18
Lz18L3xcfD18Jj18PDw9fD4+PXw8PXw+PXxcfFx8fFx8fCYmKVtePD49IVxzXScsIGxpbmUpCiAg
ICAgaWYgbm90IG1hdGNoZWQ6CiAgICAgICAgICMgTm90ZSB0aGF0IHdoaWxlIGl0IHNlZW1zIHRo
YXQgdGhlICc8W148XSonIHRlcm0gaW4gdGhlIGZvbGxvd2luZwogICAgICAgICAjIHJlZ2V4cCBj
b3VsZCBiZSBzaW1wbGlmaWVkIHRvICc8LionLCB3aGljaCB3b3VsZCBpbmRlZWQgbWF0Y2gKSW5k
ZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwX3VuaXR0ZXN0LnB5
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3Bw
X3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAxNTY2OTEpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3N0eWxlL2NoZWNrZXJzL2NwcF91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMTczOCw5
ICsxNzM4LDcgQEAgY2xhc3MgQ3BwU3R5bGVUZXN0KENwcFN0eWxlVGVzdEJhc2UpOgogICAgICAg
ICBzZWxmLmFzc2VydF9saW50KCdhPEZvbyo+IHQgPDw9ICZiICYgJmM7IC8vIFRlc3QnLCAnJykK
ICAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnYTxGb28qPiB0IDw8PSAqYiAvICZjOyAvLyBUZXN0
JywgJycpCiAgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2lmIChhPWIgPT0gMSknLCAnTWlzc2lu
ZyBzcGFjZXMgYXJvdW5kID0gIFt3aGl0ZXNwYWNlL29wZXJhdG9yc10gWzRdJykKLSAgICAgICAg
c2VsZi5hc3NlcnRfbGludCgnYSA9IDE8PDIwJywgJ01pc3Npbmcgc3BhY2VzIGFyb3VuZCA8PCAg
W3doaXRlc3BhY2Uvb3BlcmF0b3JzXSBbM10nKQogICAgICAgICBzZWxmLmFzc2VydF9saW50KCdp
ZiAoYSA9IGIgPT0gMSknLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnYSA9IDEgPDwg
MjAnLCAnJykKICAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KCcjaW5jbHVkZSA8
c3lzL2lvLmg+XG4nLCAnJykKICAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KCcj
aW1wb3J0IDxmb28vYmFyLmg+XG4nLCAnJykKIApJbmRleDogVG9vbHMvcW1ha2UvbWtzcGVjcy9m
ZWF0dXJlcy9mZWF0dXJlcy5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvcW1ha2UvbWtzcGVjcy9m
ZWF0dXJlcy9mZWF0dXJlcy5wcmkJKHJldmlzaW9uIDE1NjY5MSkKKysrIFRvb2xzL3FtYWtlL21r
c3BlY3MvZmVhdHVyZXMvZmVhdHVyZXMucHJpCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw2
IEBAIEZFQVRVUkVfREVGQVVMVFMgPSBcCiAgICAgRU5BQkxFX0RPTTRfRVZFTlRTX0NPTlNUUlVD
VE9SPTAgXAogICAgIEVOQUJMRV9ET1dOTE9BRF9BVFRSSUJVVEU9MCBcCiAgICAgRU5BQkxFX0ZB
U1RfTU9CSUxFX1NDUk9MTElORz0xIFwKLSAgICBFTkFCTEVfRklMRV9TWVNURU09MCBcCiAgICAg
RU5BQkxFX0ZJTFRFUlM9MSBcCiAgICAgRU5BQkxFX0ZPTlRfTE9BRF9FVkVOVFM9MCBcCiAgICAg
RU5BQkxFX0ZUTF9KSVQ9MCBcCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNDQgQEAKKzIwMTMtMDkt
MzAgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZW1vdmUgc3VwcG9y
dCBmb3IgRE9NRmlsZVN5c3RlbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTIyMTM3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBmYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL2ZpbGVzeXN0ZW0tY2FsbGJh
Y2stZGVsaXZlcnktZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIGZhc3QvZG9tL011
dGF0aW9uT2JzZXJ2ZXIvZmlsZXN5c3RlbS1jYWxsYmFjay1kZWxpdmVyeS5odG1sOiBSZW1vdmVk
LgorICAgICAgICAqIGZhc3QvZmlsZXN5c3RlbTogUmVtb3ZlZC4KKyAgICAgICAgKiBmYXN0L2Zp
bGVzeXN0ZW0vYXN5bmMtb3BlcmF0aW9ucy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAg
ICogZmFzdC9maWxlc3lzdGVtL2FzeW5jLW9wZXJhdGlvbnMuaHRtbDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBmYXN0L2ZpbGVzeXN0ZW0vY3Jvc3MtZmlsZXN5c3RlbS1vcC1leHBlY3RlZC50eHQ6IFJl
bW92ZWQuCisgICAgICAgICogZmFzdC9maWxlc3lzdGVtL2Nyb3NzLWZpbGVzeXN0ZW0tb3AuaHRt
bDogUmVtb3ZlZC4KKyAgICAgICAgKiBmYXN0L2ZpbGVzeXN0ZW0vZGlyZWN0b3J5LWVudHJ5LXRv
LXVyaS1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogZmFzdC9maWxlc3lzdGVtL2Rp
cmVjdG9yeS1lbnRyeS10by11cmkuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBmYXN0L2ZpbGVz
eXN0ZW0vZW50cnktcG9pbnRzLW1pc3NpbmctYXJndW1lbnRzLWV4cGVjdGVkLnR4dDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBmYXN0L2ZpbGVzeXN0ZW0vZW50cnktcG9pbnRzLW1pc3NpbmctYXJndW1l
bnRzLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogZmFzdC9maWxlc3lzdGVtL2ZpbGUtYWZ0ZXIt
cmVsb2FkLWNyYXNoLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBmYXN0L2ZpbGVz
eXN0ZW0vZmlsZS1hZnRlci1yZWxvYWQtY3Jhc2guaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBm
YXN0L2ZpbGVzeXN0ZW0vZmlsZS1lbnRyeS10by11cmktZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgor
ICAgICAgICAqIGZhc3QvZmlsZXN5c3RlbS9maWxlLWVudHJ5LXRvLXVyaS5odG1sOiBSZW1vdmVk
LgorICAgICAgICAqIGZhc3QvZmlsZXN5c3RlbS9maWxlLWZyb20tZmlsZS1lbnRyeS1leHBlY3Rl
ZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogZmFzdC9maWxlc3lzdGVtL2ZpbGUtZnJvbS1maWxl
LWVudHJ5Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogZmFzdC9maWxlc3lzdGVtL2ZpbGUtbWV0
YWRhdGEtYWZ0ZXItd3JpdGUtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIGZhc3Qv
ZmlsZXN5c3RlbS9maWxlLW1ldGFkYXRhLWFmdGVyLXdyaXRlLmh0bWw6IFJlbW92ZWQuCisgICAg
ICAgICogZmFzdC9maWxlc3lzdGVtL2ZpbGUtd3JpdGVyLWFib3J0LWNvbnRpbnVlLWV4cGVjdGVk
LnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBmYXN0L2ZpbGVzeXN0ZW0vZmlsZS13cml0ZXItYWJv
cnQtY29udGludWUuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBmYXN0L2ZpbGVzeXN0ZW0vZmls
ZS13cml0ZXItYWJvcnQtZGVwdGgtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIGZh
c3QvZmlsZXN5c3RlbS9maWxlLXdyaXRlci1hYm9ydC1kZXB0aC5odG1sOiBSZW1vdmVkLgorICAg
ICAgICAqIGZhc3QvZmlsZXN5c3RlbS9maWxlLXdyaXRlci1hYm9ydC1leHBlY3RlZC50eHQ6IFJl
bW92ZWQuCisgICAgICAgICogZmFzdC9maWxlc3lzdGVtL2ZpbGUtd3JpdGVyLWFib3J0Lmh0bWw6
IFJlbW92ZWQuCisgICAgICAgICogZmFzdC9maWxlc3lzdGVtL2ZpbGUtd3JpdGVyLWVtcHR5LWJs
b2ItZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIGZhc3QvZmlsZXN5c3RlbS9maWxl
LXdyaXRlci1lbXB0eS1ibG9iLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogZmFzdC9maWxlc3lz
dGVtL2ZpbGUtd3JpdGVyLWV2ZW50cy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICog
ZmFzdC9maWxlc3lzdGVtL2ZpbGUtd3JpdGVyLWV2ZW50cy5odG1sOiBSZW1vdmVkLgorICAgICAg
ICAqIGZhc3QvZmlsZXN5c3RlbS9maWxlLXdyaXRlci1nYy1ibG9iLWV4cGVjdGVkLnR4dDogUmVt
b3ZlZC4KKyAgICAgICAgKiBmYXN0L2ZpbGVzeXN0ZW0vZmlsZS13cml0ZXItZ2MtYmxvYi5odG1s
OiBSZW1vdmVkLgorICAgICAgICAqIGZhc3QvZmlsZXN5c3RlbS9maWxlLXdyaXRlci10cnVuY2F0
ZS1leHRlbmQtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIGZhc3QvZmlsZXN5c3Rl
bS9maWxlLXdyaXRlci10cnVuY2F0ZS1leHRlbmQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBm
YXN0L2ZpbGVzeXN0ZW0vZmlsZS13cml0ZXItd3JpdGUtb3ZlcmxhcHBlZC1leHBlY3RlZC50eHQ6
IFJlbW92ZWQuCisgICAgICAgICogZmFzdC9maWxlc3lzdGVtL2ZpbGUtd3JpdGVyLXdyaXRlLW92
ZXJsYXBwZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBmYXN0L2ZpbGVzeXN0ZW0vZmlsZXN5
c3RlbS1taXNzaW5nLWFyZ3VtZW50cy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICog
ZmFzdC9maWxlc3lzdGVtL2ZpbGVzeXN0ZW0tbWlzc2luZy1hcmd1bWVudHMuaHRtbDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBmYXN0L2ZpbGVzeXN0ZW0vZmlsZXN5c3RlbS1uby1jYWxsYmFjay1udWxs
LXB0ci1jcmFzaC1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogZmFzdC9maWxlc3lz
dGVtL2ZpbGVzeXN0ZW0tbm8tY2FsbGJhY2stbnVsbC1wdHItY3Jhc2guaHRtbDogUmVtb3ZlZC4K
KyAgICAgICAgKiBmYXN0L2ZpbGVzeXN0ZW0vZmlsZXN5c3RlbS1yZWZlcmVuY2UtZXhwZWN0ZWQu
dHh0OiBSZW1vdmVkLgorICAgICAgICAqIGZhc3QvZmlsZXN5c3RlbS9maWxlc3lzdGVtLXJlZmVy
ZW5jZS5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIGZhc3QvZmlsZXN5c3RlbS9maWxlc3lzdGVt
LXVuc2VyaWFsaXphYmxlLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBmYXN0L2Zp
bGVzeXN0ZW0vZmlsZXN5c3RlbS11bnNlcmlhbGl6YWJsZS5odG1sOiBSZW1vdmVkLgorICAgICAg
ICAqIGZhc3QvZmlsZXN5c3RlbS9maWxlc3lzdGVtLXVyaS1vcmlnaW4tZXhwZWN0ZWQudHh0OiBS
ZW1vdmVkLgorICAgICAgICAqIGZhc3QvZmlsZXN5c3RlbS9maWxlc3lzdGVtLXVyaS1vcmlnaW4u
aHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBmYXN0L2ZpbGVzeXN0ZW0vZmxhZ3MtcGFzc2luZy1l
eHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogZmFzdC9maWxlc3lzdGVtL2ZsYWdzLXBh
c3NpbmcuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBmYXN0L2ZpbGVzeXN0ZW0vaW5wdXQtYWNj
ZXNzLWVudHJpZXMtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIGZhc3QvZmlsZXN5
c3RlbS9pbnB1dC1hY2Nlc3MtZW50cmllcy5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIGZhc3Qv
ZmlsZXN5c3RlbS9ub3QtZW5vdWdoLWFyZ3VtZW50cy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisg
ICAgICAgICogZmFzdC9maWxlc3lzdGVtL25vdC1lbm91Z2gtYXJndW1lbnRzLmh0bWw6IFJlbW92
ZWQuCisgICAgICAgICogZmFzdC9maWxlc3lzdGVtL29wLWNvcHktZXhwZWN0ZWQudHh0OiBSZW1v
dmVkLgorICAgICAgICAqIGZhc3QvZmlsZXN5c3RlbS9vcC1jb3B5Lmh0bWw6IFJlbW92ZWQuCisg
ICAgICAgICogZmFzdC9maWxlc3lzdGVtL29wLWdldC1lbnRyeS1leHBlY3RlZC50eHQ6IFJlbW92
ZWQuCisgICAgICAgICogZmFzdC9maWxlc3lzdGVtL29wLWdldC1lbnRyeS5odG1sOiBSZW1vdmVk
LgorICAgICAgICAqIGZhc3QvZmlsZXN5c3RlbS9vcC1nZXQtbWV0YWRhdGEtZXhwZWN0ZWQudHh0
OiBSZW1vdmVkLgorICAgICAgICAqIGZhc3QvZmlsZXN5c3RlbS9vcC1nZXQtbWV0YWRhdGEuaHRt
bDogUmVtb3ZlZC4KKyAgICAgICAgKiBmYXN0L2ZpbGVzeXN0ZW0vb3AtZ2V0LXBhcmVudC1leHBl
Y3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogZmFzdC9maWxlc3lzdGVtL29wLWdldC1wYXJl
bnQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBmYXN0L2ZpbGVzeXN0ZW0vb3AtbW92ZS1leHBl
Y3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogZmFzdC9maWxlc3lzdGVtL29wLW1vdmUuaHRt
bDogUmVtb3ZlZC4KKyAgICAgICAgKiBmYXN0L2ZpbGVzeXN0ZW0vb3AtcmVhZC1kaXJlY3Rvcnkt
ZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIGZhc3QvZmlsZXN5c3RlbS9vcC1yZWFk
LWRpcmVjdG9yeS5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIGZhc3QvZmlsZXN5c3RlbS9vcC1y
ZW1vdmUtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIGZhc3QvZmlsZXN5c3RlbS9v
cC1yZW1vdmUuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBmYXN0L2ZpbGVzeXN0ZW0vb3AtcmVz
dHJpY3RlZC1jaGFycy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogZmFzdC9maWxl
c3lzdGVtL29wLXJlc3RyaWN0ZWQtY2hhcnMuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBmYXN0
L2ZpbGVzeXN0ZW0vb3AtcmVzdHJpY3RlZC1uYW1lcy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisg
ICAgICAgICogZmFzdC9maWxlc3lzdGVtL29wLXJlc3RyaWN0ZWQtbmFtZXMuaHRtbDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBmYXN0L2ZpbGVzeXN0ZW0vb3AtcmVzdHJpY3RlZC11bmljb2RlLWV4cGVj
dGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBmYXN0L2ZpbGVzeXN0ZW0vb3AtcmVzdHJpY3Rl
ZC11bmljb2RlLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogZmFzdC9maWxlc3lzdGVtL3JlYWQt
ZGlyZWN0b3J5LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBmYXN0L2ZpbGVzeXN0
ZW0vcmVhZC1kaXJlY3RvcnkuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBmYXN0L2ZpbGVzeXN0
ZW0vcmVzb3VyY2VzOiBSZW1vdmVkLgorICAgICAgICAqIGZhc3QvZmlsZXN5c3RlbS9yZXNvdXJj
ZXMvYXN5bmMtb3BlcmF0aW9ucy5qczogUmVtb3ZlZC4KKyAgICAgICAgKiBmYXN0L2ZpbGVzeXN0
ZW0vcmVzb3VyY2VzL2RpcmVjdG9yeS1lbnRyeS10by11cmkuanM6IFJlbW92ZWQuCisgICAgICAg
ICogZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9maWxlLWVudHJ5LXRvLXVyaS1zeW5jLmpzOiBS
ZW1vdmVkLgorICAgICAgICAqIGZhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS1lbnRyeS10
by11cmkuanM6IFJlbW92ZWQuCisgICAgICAgICogZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9m
aWxlLWZyb20tZmlsZS1lbnRyeS1zeW5jLmpzOiBSZW1vdmVkLgorICAgICAgICAqIGZhc3QvZmls
ZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS1mcm9tLWZpbGUtZW50cnkuanM6IFJlbW92ZWQuCisgICAg
ICAgICogZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9maWxlLXdyaXRlci1hYm9ydC1jb250aW51
ZS5qczogUmVtb3ZlZC4KKyAgICAgICAgKiBmYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZpbGUt
d3JpdGVyLWFib3J0LWRlcHRoLmpzOiBSZW1vdmVkLgorICAgICAgICAqIGZhc3QvZmlsZXN5c3Rl
bS9yZXNvdXJjZXMvZmlsZS13cml0ZXItYWJvcnQuanM6IFJlbW92ZWQuCisgICAgICAgICogZmFz
dC9maWxlc3lzdGVtL3Jlc291cmNlcy9maWxlLXdyaXRlci1lbXB0eS1ibG9iLmpzOiBSZW1vdmVk
LgorICAgICAgICAqIGZhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS13cml0ZXItZXZlbnRz
LmpzOiBSZW1vdmVkLgorICAgICAgICAqIGZhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS13
cml0ZXItZ2MtYmxvYi5qczogUmVtb3ZlZC4KKyAgICAgICAgKiBmYXN0L2ZpbGVzeXN0ZW0vcmVz
b3VyY2VzL2ZpbGUtd3JpdGVyLXN5bmMtdHJ1bmNhdGUtZXh0ZW5kLmpzOiBSZW1vdmVkLgorICAg
ICAgICAqIGZhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS13cml0ZXItc3luYy13cml0ZS1v
dmVybGFwcGVkLmpzOiBSZW1vdmVkLgorICAgICAgICAqIGZhc3QvZmlsZXN5c3RlbS9yZXNvdXJj
ZXMvZmlsZS13cml0ZXItdHJ1bmNhdGUtZXh0ZW5kLmpzOiBSZW1vdmVkLgorICAgICAgICAqIGZh
c3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS13cml0ZXItdXRpbHMuanM6IFJlbW92ZWQuCisg
ICAgICAgICogZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9maWxlLXdyaXRlci13cml0ZS1vdmVy
bGFwcGVkLmpzOiBSZW1vdmVkLgorICAgICAgICAqIGZhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMv
ZnMtdGVzdC11dGlsLmpzOiBSZW1vdmVkLgorICAgICAgICAqIGZhc3QvZmlsZXN5c3RlbS9yZXNv
dXJjZXMvZnMtd29ya2VyLWNvbW1vbi5qczogUmVtb3ZlZC4KKyAgICAgICAgKiBmYXN0L2ZpbGVz
eXN0ZW0vcmVzb3VyY2VzL29wLWNvcHkuanM6IFJlbW92ZWQuCisgICAgICAgICogZmFzdC9maWxl
c3lzdGVtL3Jlc291cmNlcy9vcC1nZXQtZW50cnkuanM6IFJlbW92ZWQuCisgICAgICAgICogZmFz
dC9maWxlc3lzdGVtL3Jlc291cmNlcy9vcC1nZXQtbWV0YWRhdGEuanM6IFJlbW92ZWQuCisgICAg
ICAgICogZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9vcC1nZXQtcGFyZW50LmpzOiBSZW1vdmVk
LgorICAgICAgICAqIGZhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvb3AtbW92ZS5qczogUmVtb3Zl
ZC4KKyAgICAgICAgKiBmYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL29wLXJlYWQtZGlyZWN0b3J5
LmpzOiBSZW1vdmVkLgorICAgICAgICAqIGZhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvb3AtcmVt
b3ZlLmpzOiBSZW1vdmVkLgorICAgICAgICAqIGZhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvb3At
cmVzdHJpY3RlZC1jaGFycy5qczogUmVtb3ZlZC4KKyAgICAgICAgKiBmYXN0L2ZpbGVzeXN0ZW0v
cmVzb3VyY2VzL29wLXJlc3RyaWN0ZWQtbmFtZXMuanM6IFJlbW92ZWQuCisgICAgICAgICogZmFz
dC9maWxlc3lzdGVtL3Jlc291cmNlcy9vcC1yZXN0cmljdGVkLXVuaWNvZGUuanM6IFJlbW92ZWQu
CisgICAgICAgICogZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9vcC10ZXN0cy1oZWxwZXIuanM6
IFJlbW92ZWQuCisgICAgICAgICogZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9zaGFyZWQtd29y
a2VyLXN0dWIuanM6IFJlbW92ZWQuCisgICAgICAgICogZmFzdC9maWxlc3lzdGVtL3Jlc291cmNl
cy9zaW1wbGUtcGVyc2lzdGVudC1zeW5jLmpzOiBSZW1vdmVkLgorICAgICAgICAqIGZhc3QvZmls
ZXN5c3RlbS9yZXNvdXJjZXMvc2ltcGxlLXBlcnNpc3RlbnQuanM6IFJlbW92ZWQuCisgICAgICAg
ICogZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9zaW1wbGUtcmVhZG9ubHkuanM6IFJlbW92ZWQu
CisgICAgICAgICogZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9zaW1wbGUtcmVxdWlyZWQtYXJn
dW1lbnRzLWdldGRpcmVjdG9yeS5qczogUmVtb3ZlZC4KKyAgICAgICAgKiBmYXN0L2ZpbGVzeXN0
ZW0vcmVzb3VyY2VzL3NpbXBsZS1yZXF1aXJlZC1hcmd1bWVudHMtZ2V0ZmlsZS5qczogUmVtb3Zl
ZC4KKyAgICAgICAgKiBmYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL3NpbXBsZS1yZXF1aXJlZC1h
cmd1bWVudHMtZ2V0bWV0YWRhdGEuanM6IFJlbW92ZWQuCisgICAgICAgICogZmFzdC9maWxlc3lz
dGVtL3Jlc291cmNlcy9zaW1wbGUtcmVxdWlyZWQtYXJndW1lbnRzLXJlbW92ZS5qczogUmVtb3Zl
ZC4KKyAgICAgICAgKiBmYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL3NpbXBsZS10ZW1wb3Jhcnkt
c3luYy5qczogUmVtb3ZlZC4KKyAgICAgICAgKiBmYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL3Np
bXBsZS10ZW1wb3JhcnkuanM6IFJlbW92ZWQuCisgICAgICAgICogZmFzdC9maWxlc3lzdGVtL3Jl
c291cmNlcy9zeW5jLW9wZXJhdGlvbnMuanM6IFJlbW92ZWQuCisgICAgICAgICogZmFzdC9maWxl
c3lzdGVtL3NjcmlwdC10ZXN0czogUmVtb3ZlZC4KKyAgICAgICAgKiBmYXN0L2ZpbGVzeXN0ZW0v
c2NyaXB0LXRlc3RzL1RFTVBMQVRFLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogZmFzdC9maWxl
c3lzdGVtL3NjcmlwdC10ZXN0cy9maWxlc3lzdGVtLXJlZmVyZW5jZS5qczogUmVtb3ZlZC4KKyAg
ICAgICAgKiBmYXN0L2ZpbGVzeXN0ZW0vc2NyaXB0LXRlc3RzL2ZpbGVzeXN0ZW0tdW5zZXJpYWxp
emFibGUuanM6IFJlbW92ZWQuCisgICAgICAgICogZmFzdC9maWxlc3lzdGVtL3NjcmlwdC10ZXN0
cy9mbGFncy1wYXNzaW5nLmpzOiBSZW1vdmVkLgorICAgICAgICAqIGZhc3QvZmlsZXN5c3RlbS9z
Y3JpcHQtdGVzdHMvcmVhZC1kaXJlY3RvcnkuanM6IFJlbW92ZWQuCisgICAgICAgICogZmFzdC9m
aWxlc3lzdGVtL3NpbXBsZS1wZXJzaXN0ZW50LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBmYXN0L2ZpbGVzeXN0ZW0vc2ltcGxlLXBlcnNpc3RlbnQuaHRtbDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBmYXN0L2ZpbGVzeXN0ZW0vc2ltcGxlLXJlYWRvbmx5LWV4cGVjdGVkLnR4dDogUmVt
b3ZlZC4KKyAgICAgICAgKiBmYXN0L2ZpbGVzeXN0ZW0vc2ltcGxlLXJlYWRvbmx5LWZpbGUtb2Jq
ZWN0LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBmYXN0L2ZpbGVzeXN0ZW0vc2lt
cGxlLXJlYWRvbmx5LWZpbGUtb2JqZWN0Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogZmFzdC9m
aWxlc3lzdGVtL3NpbXBsZS1yZWFkb25seS5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIGZhc3Qv
ZmlsZXN5c3RlbS9zaW1wbGUtcmVxdWlyZWQtYXJndW1lbnRzLWdldGRpcmVjdG9yeS1leHBlY3Rl
ZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogZmFzdC9maWxlc3lzdGVtL3NpbXBsZS1yZXF1aXJl
ZC1hcmd1bWVudHMtZ2V0ZGlyZWN0b3J5Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogZmFzdC9m
aWxlc3lzdGVtL3NpbXBsZS1yZXF1aXJlZC1hcmd1bWVudHMtZ2V0ZmlsZS1leHBlY3RlZC50eHQ6
IFJlbW92ZWQuCisgICAgICAgICogZmFzdC9maWxlc3lzdGVtL3NpbXBsZS1yZXF1aXJlZC1hcmd1
bWVudHMtZ2V0ZmlsZS5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIGZhc3QvZmlsZXN5c3RlbS9z
aW1wbGUtcmVxdWlyZWQtYXJndW1lbnRzLWdldG1ldGFkYXRhLWV4cGVjdGVkLnR4dDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBmYXN0L2ZpbGVzeXN0ZW0vc2ltcGxlLXJlcXVpcmVkLWFyZ3VtZW50cy1n
ZXRtZXRhZGF0YS5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIGZhc3QvZmlsZXN5c3RlbS9zaW1w
bGUtcmVxdWlyZWQtYXJndW1lbnRzLXJlbW92ZS1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAg
ICAgICogZmFzdC9maWxlc3lzdGVtL3NpbXBsZS1yZXF1aXJlZC1hcmd1bWVudHMtcmVtb3ZlLmh0
bWw6IFJlbW92ZWQuCisgICAgICAgICogZmFzdC9maWxlc3lzdGVtL3NpbXBsZS10ZW1wb3Jhcnkt
ZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIGZhc3QvZmlsZXN5c3RlbS9zaW1wbGUt
dGVtcG9yYXJ5Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogZmFzdC9maWxlc3lzdGVtL3dvcmtl
cnM6IFJlbW92ZWQuCisgICAgICAgICogZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvYXN5bmMtb3Bl
cmF0aW9ucy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogZmFzdC9maWxlc3lzdGVt
L3dvcmtlcnMvYXN5bmMtb3BlcmF0aW9ucy5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIGZhc3Qv
ZmlsZXN5c3RlbS93b3JrZXJzL2RldGFjaGVkLWZyYW1lLWNyYXNoLWV4cGVjdGVkLnR4dDogUmVt
b3ZlZC4KKyAgICAgICAgKiBmYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9kZXRhY2hlZC1mcmFtZS1j
cmFzaC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIGZhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2Zp
bGUtZW50cnktdG8tdXJpLXN5bmMtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIGZh
c3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtZW50cnktdG8tdXJpLXN5bmMuaHRtbDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBmYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLWZyb20tZmlsZS1lbnRy
eS1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogZmFzdC9maWxlc3lzdGVtL3dvcmtl
cnMvZmlsZS1mcm9tLWZpbGUtZW50cnktc3luYy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAg
ICAgICogZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS1mcm9tLWZpbGUtZW50cnktc3luYy5o
dG1sOiBSZW1vdmVkLgorICAgICAgICAqIGZhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtZnJv
bS1maWxlLWVudHJ5Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogZmFzdC9maWxlc3lzdGVtL3dv
cmtlcnMvZmlsZS13cml0ZXItZW1wdHktYmxvYi1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAg
ICAgICogZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS13cml0ZXItZW1wdHktYmxvYi5odG1s
OiBSZW1vdmVkLgorICAgICAgICAqIGZhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtd3JpdGVy
LWV2ZW50cy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogZmFzdC9maWxlc3lzdGVt
L3dvcmtlcnMvZmlsZS13cml0ZXItZXZlbnRzLXNoYXJlZC13b3JrZXItZXhwZWN0ZWQudHh0OiBS
ZW1vdmVkLgorICAgICAgICAqIGZhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtd3JpdGVyLWV2
ZW50cy1zaGFyZWQtd29ya2VyLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogZmFzdC9maWxlc3lz
dGVtL3dvcmtlcnMvZmlsZS13cml0ZXItZXZlbnRzLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICog
ZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS13cml0ZXItZ2MtYmxvYi1leHBlY3RlZC50eHQ6
IFJlbW92ZWQuCisgICAgICAgICogZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS13cml0ZXIt
Z2MtYmxvYi5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIGZhc3QvZmlsZXN5c3RlbS93b3JrZXJz
L2ZpbGUtd3JpdGVyLXN5bmMtdHJ1bmNhdGUtZXh0ZW5kLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4K
KyAgICAgICAgKiBmYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLXdyaXRlci1zeW5jLXRydW5j
YXRlLWV4dGVuZC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIGZhc3QvZmlsZXN5c3RlbS93b3Jr
ZXJzL2ZpbGUtd3JpdGVyLXN5bmMtd3JpdGUtb3ZlcmxhcHBlZC1leHBlY3RlZC50eHQ6IFJlbW92
ZWQuCisgICAgICAgICogZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS13cml0ZXItc3luYy13
cml0ZS1vdmVybGFwcGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogZmFzdC9maWxlc3lzdGVt
L3dvcmtlcnMvZmlsZS13cml0ZXItdHJ1bmNhdGUtZXh0ZW5kLWV4cGVjdGVkLnR4dDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBmYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLXdyaXRlci10cnVuY2F0
ZS1leHRlbmQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBmYXN0L2ZpbGVzeXN0ZW0vd29ya2Vy
cy9maWxlLXdyaXRlci13cml0ZS1vdmVybGFwcGVkLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBmYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLXdyaXRlci13cml0ZS1vdmVybGFw
cGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvcmVz
b3VyY2VzOiBSZW1vdmVkLgorICAgICAgICAqIGZhc3QvZmlsZXN5c3RlbS93b3JrZXJzL3Jlc291
cmNlcy9kZXRhY2hlZC1mcmFtZS1jcmFzaC1mcmFtZS5odG1sOiBSZW1vdmVkLgorICAgICAgICAq
IGZhc3QvZmlsZXN5c3RlbS93b3JrZXJzL3Jlc291cmNlcy9kZXRhY2hlZC1mcmFtZS1jcmFzaC13
b3JrZXIuanM6IFJlbW92ZWQuCisgICAgICAgICogZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc2lt
cGxlLXBlcnNpc3RlbnQtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIGZhc3QvZmls
ZXN5c3RlbS93b3JrZXJzL3NpbXBsZS1wZXJzaXN0ZW50LXN5bmMtZXhwZWN0ZWQudHh0OiBSZW1v
dmVkLgorICAgICAgICAqIGZhc3QvZmlsZXN5c3RlbS93b3JrZXJzL3NpbXBsZS1wZXJzaXN0ZW50
LXN5bmMuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBmYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9z
aW1wbGUtcGVyc2lzdGVudC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIGZhc3QvZmlsZXN5c3Rl
bS93b3JrZXJzL3NpbXBsZS10ZW1wb3JhcnktZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAg
ICAqIGZhc3QvZmlsZXN5c3RlbS93b3JrZXJzL3NpbXBsZS10ZW1wb3Jhcnktc3luYy1leHBlY3Rl
ZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc2ltcGxl
LXRlbXBvcmFyeS1zeW5jLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogZmFzdC9maWxlc3lzdGVt
L3dvcmtlcnMvc2ltcGxlLXRlbXBvcmFyeS5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIGZhc3Qv
ZmlsZXN5c3RlbS93b3JrZXJzL3N5bmMtb3BlcmF0aW9ucy1leHBlY3RlZC50eHQ6IFJlbW92ZWQu
CisgICAgICAgICogZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc3luYy1vcGVyYXRpb25zLmh0bWw6
IFJlbW92ZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9maWxlL2lucHV0LWZpbGUtZW50cmllcy1l
eHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9maWxlL2lucHV0LWZp
bGUtZW50cmllcy5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvZmlsZXN5c3Rl
bTogUmVtb3ZlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2ZpbGVzeXN0ZW0vbm8tY2FjaGUtZmls
ZXN5c3RlbS11cmwtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIGh0dHAvdGVzdHMv
ZmlsZXN5c3RlbS9uby1jYWNoZS1maWxlc3lzdGVtLXVybC5odG1sOiBSZW1vdmVkLgorICAgICAg
ICAqIGh0dHAvdGVzdHMvZmlsZXN5c3RlbS9yZXNvbHZlLXVyaS1leHBlY3RlZC50eHQ6IFJlbW92
ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9maWxlc3lzdGVtL3Jlc29sdmUtdXJpLmh0bWw6IFJl
bW92ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9maWxlc3lzdGVtL3Jlc291cmNlczogUmVtb3Zl
ZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZzLXRlc3QtdXRp
bC5qczogUmVtb3ZlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2ZpbGVzeXN0ZW0vcmVzb3VyY2Vz
L2ZzLXdvcmtlci1jb21tb24uanM6IFJlbW92ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9maWxl
c3lzdGVtL3Jlc291cmNlcy9mcy13b3JrZXItdGVzdC11dGlsLmpzOiBSZW1vdmVkLgorICAgICAg
ICAqIGh0dHAvdGVzdHMvZmlsZXN5c3RlbS9zY3JpcHQtdGVzdHM6IFJlbW92ZWQuCisgICAgICAg
ICogaHR0cC90ZXN0cy9maWxlc3lzdGVtL3NjcmlwdC10ZXN0cy9URU1QTEFURS5odG1sOiBSZW1v
dmVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvZmlsZXN5c3RlbS9zY3JpcHQtdGVzdHMvcmVzb2x2
ZS11cmkuanM6IFJlbW92ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9maWxlc3lzdGVtL3dvcmtl
cnM6IFJlbW92ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9maWxlc3lzdGVtL3dvcmtlcnMvcmVz
b2x2ZS11cmwtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvZmls
ZXN5c3RlbS93b3JrZXJzL3Jlc29sdmUtdXJsLXN5bmMtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgor
ICAgICAgICAqIGh0dHAvdGVzdHMvZmlsZXN5c3RlbS93b3JrZXJzL3Jlc29sdmUtdXJsLXN5bmMu
aHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2ZpbGVzeXN0ZW0vd29ya2Vycy9y
ZXNvbHZlLXVybC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvZmlsZXN5c3Rl
bS93b3JrZXJzL3NjcmlwdC10ZXN0czogUmVtb3ZlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2Zp
bGVzeXN0ZW0vd29ya2Vycy9zY3JpcHQtdGVzdHMvVEVNUExBVEUuaHRtbDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBodHRwL3Rlc3RzL2ZpbGVzeXN0ZW0vd29ya2Vycy9zY3JpcHQtdGVzdHMvcmVzb2x2
ZS11cmwtc3luYy5qczogUmVtb3ZlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9m
aWxlc3lzdGVtOiBSZW1vdmVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVz
eXN0ZW0vZGVsZXRlLWVudHJ5LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL2RlbGV0ZS1lbnRyeS5odG1sOiBSZW1vdmVkLgor
ICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vZGlyZWN0b3J5LXRyZWUt
ZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2Zp
bGVzeXN0ZW0vZGlyZWN0b3J5LXRyZWUuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBodHRwL3Rl
c3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL2ZpbGVzeXN0ZW0tdGVzdC5qczogUmVtb3ZlZC4KKyAg
ICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL3JlcXVlc3QtZGlyZWN0b3J5
LWNvbnRlbnQtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5z
cGVjdG9yL2ZpbGVzeXN0ZW0vcmVxdWVzdC1kaXJlY3RvcnktY29udGVudC5odG1sOiBSZW1vdmVk
LgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vcmVxdWVzdC1maWxl
LWNvbnRlbnQtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5z
cGVjdG9yL2ZpbGVzeXN0ZW0vcmVxdWVzdC1maWxlLWNvbnRlbnQuaHRtbDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL3JlcXVlc3QtZmlsZXN5c3Rl
bS1yb290LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3Bl
Y3Rvci9maWxlc3lzdGVtL3JlcXVlc3QtZmlsZXN5c3RlbS1yb290Lmh0bWw6IFJlbW92ZWQuCisg
ICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9yZXF1ZXN0LW1ldGFkYXRh
LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9m
aWxlc3lzdGVtL3JlcXVlc3QtbWV0YWRhdGEuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9maWxlc3lzdGVtLXVybHMtbWF0
Y2gtc2VsZi1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1
cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvZmlsZXN5c3RlbS11cmxzLW1hdGNoLXNlbGYuaHRt
bDogUmVtb3ZlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2ZpbGVzeXN0ZW0taWZy
YW1lLWZyb20tcmVtb3RlLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBodHRwL3Rl
c3RzL3NlY3VyaXR5L2ZpbGVzeXN0ZW0taWZyYW1lLWZyb20tcmVtb3RlLmh0bWw6IFJlbW92ZWQu
CisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9taXhlZENvbnRlbnQvZmlsZXN5c3RlbS11
cmwtaW4taWZyYW1lLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBodHRwL3Rlc3Rz
L3NlY3VyaXR5L21peGVkQ29udGVudC9maWxlc3lzdGVtLXVybC1pbi1pZnJhbWUuaHRtbDogUmVt
b3ZlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3NlbmQtZmls
ZS1ibG9iLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNv
Y2tldC90ZXN0cy9oeWJpL3NlbmQtZmlsZS1ibG9iLWZhaWwtZXhwZWN0ZWQudHh0OiBSZW1vdmVk
LgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2VuZC1maWxlLWJs
b2ItZmFpbC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rl
c3RzL2h5Ymkvc2VuZC1maWxlLWJsb2IuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBodHRwL3Rl
c3RzL3dvcmtlcnMvcmVzb3VyY2VzL3N5bmMtb3BlcmF0aW9ucy5qczoKKyAgICAgICAgKG9ubWVz
c2FnZSk6CisgICAgICAgICogaHR0cC90ZXN0cy93b3JrZXJzL3Rlcm1pbmF0ZS1kdXJpbmctc3lu
Yy1vcGVyYXRpb24tZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIGh0dHAvdGVzdHMv
d29ya2Vycy90ZXJtaW5hdGUtZHVyaW5nLXN5bmMtb3BlcmF0aW9uLmh0bWw6IFJlbW92ZWQuCisg
ICAgICAgICogcGxhdGZvcm0vZWZsL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZv
cm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Rlc3RFeHBl
Y3RhdGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vcXQvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAg
ICAgKiBwbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBwbGF0Zm9ybS93
aW5jYWlyby9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDEzLTA5LTMwICBBbGV4ZXkgUHJvc2t1cnlh
a292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSB0aW1lb3V0IGZyb20gc2hvdWxk
QmVjb21lKiBmdW5jdGlvbnMgaW4ganMtdGVzdC1wcmUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
ZmlsZXN5c3RlbS9hc3luYy1vcGVyYXRpb25zLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vYXN5bmMtb3BlcmF0aW9ucy1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9hc3luYy1v
cGVyYXRpb25zLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwxNiArMCwwIEBACi1U
ZXN0IG1ha2luZyBtdWx0aXBsZSBhc3luYyBGaWxlU3lzdGVtIG9wZXJhdGlvbnMuCi0KLU9uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KLQotCi1yZXF1ZXN0ZWQgRmlsZVN5c3RlbS4KLUdvdCBGaWxl
U3lzdGVtOmZpbGVfXzA6VGVtcG9yYXJ5Ci1TdGFydGluZyBhc3luYyB0ZXN0IHN0YWdlIDEuCi1T
dGFydGluZyBhc3luYyB0ZXN0IHN0YWdlIDIuCi1WZXJpZnlpbmcgdGhlIEZpbGVTeXN0ZW0gc3Rh
dHVzLgotUEFTUyAiL2EsL2IsL2MsL2QyLC9lLC9mIiBpcyAiL2EsL2IsL2MsL2QyLC9lLC9mIgot
UEFTUyBkaXJzQ291bnQgaXMgMwotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1U
RVNUIENPTVBMRVRFCi0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9hc3luYy1v
cGVyYXRpb25zLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVt
L2FzeW5jLW9wZXJhdGlvbnMuaHRtbAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9maWxlc3lzdGVtL2FzeW5jLW9wZXJhdGlvbnMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MSwxMCArMCwwIEBACi08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0icmVzb3VyY2VzL2ZzLXRl
c3QtdXRpbC5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvYXN5bmMtb3BlcmF0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+Cklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vY3Jvc3MtZmlsZXN5c3RlbS1vcC1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2Nyb3Nz
LWZpbGVzeXN0ZW0tb3AtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vY3Jvc3MtZmlsZXN5c3RlbS1vcC1leHBlY3RlZC50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTEsMzkgKzAsMCBAQAotVGhpcyB0ZXN0cyBiYXNpYyBjcm9zcy1maWxl
c3lzdGVtIG9wZXJhdGlvbnMuCi1Ecm9wIGZpbGVzIGhlcmUgaWYgeW91IHRlc3QgdGhpcyBtYW51
YWxseQotVmVyaWZ5aW5nIGNvbnRlbnRzIG9mIERhdGFUcmFuc2Zlckl0ZW1zLi4uCi1QQVNTOiAi
MSIgPT0gIjEiCi1QQVNTOiAiZmlsZSIgPT0gImZpbGUiCi1QQVNTOiAidHJ1ZSIgPT0gInRydWUi
Ci1TdWNjZXNzZnVsbHkgc2V0dXAgdGVzdCBlbnZpcm9ubWVudC4KLWZpbGVfXzA6VGVtcG9yYXJ5
OiByZXNldCAvdGVzdAotVGVzdGluZyBjb3B5VG8gYXBwbGUuZ2lmOiAvcmVzb3VyY2VzID0+IC90
ZXN0Ci1QQVNTOiAiYXBwbGUuZ2lmIiA9PSAiYXBwbGUuZ2lmIgotUEFTUzogIjE0NzYiID09ICIx
NDc2IgotVGVzdGluZyBjb3B5VG8gbW96aWxsYS5naWY6IC9yZXNvdXJjZXMgPT4gL3Rlc3QKLVBB
U1M6ICJtb3ppbGxhLmdpZiIgPT0gIm1vemlsbGEuZ2lmIgotUEFTUzogIjI1OTMiID09ICIyNTkz
IgotVGVzdGluZyBjb3B5VG8gZHJvcC1maWxlLXN2Zy5zdmc6IC9yZXNvdXJjZXMgPT4gL3Rlc3QK
LVBBU1M6ICJkcm9wLWZpbGUtc3ZnLnN2ZyIgPT0gImRyb3AtZmlsZS1zdmcuc3ZnIgotUEFTUzog
IjEwOSIgPT0gIjEwOSIKLVRlc3RpbmcgY29weVRvIGNvcHktYmFja3NsYXNoLWV1Yy5odG1sOiAv
cmVzb3VyY2VzID0+IC90ZXN0Ci1QQVNTOiAiY29weS1iYWNrc2xhc2gtZXVjLmh0bWwiID09ICJj
b3B5LWJhY2tzbGFzaC1ldWMuaHRtbCIKLVBBU1M6ICI0NzgiID09ICI0NzgiCi1UZXN0aW5nIGNv
cHlUbyB0ZXN0X2RpcmVjdG9yeS90ZXN0LnR4dDogL3Jlc291cmNlcyA9PiAvdGVzdAotUEFTUzog
InRlc3QudHh0IiA9PSAidGVzdC50eHQiCi1QQVNTOiAiMTMiID09ICIxMyIKLWZpbGVfXzA6VGVt
cG9yYXJ5OiByZXNldCAvdGVzdAotVGVzdGluZyBjb3B5VG8gbW96aWxsYS5naWY6IC9yZXNvdXJj
ZXMgPT4gL3Rlc3QKLVBBU1M6ICJtb3ppbGxhLmdpZiIgPT0gIm1vemlsbGEuZ2lmIgotUEFTUzog
IjI1OTMiID09ICIyNTkzIgotVGVzdGluZyBjb3B5VG8gZHJvcC1maWxlLXN2Zy5zdmc6IC9yZXNv
dXJjZXMgPT4gL3Rlc3QKLVBBU1M6ICJkcm9wLWZpbGUtc3ZnLnN2ZyIgPT0gImRyb3AtZmlsZS1z
dmcuc3ZnIgotUEFTUzogIjEwOSIgPT0gIjEwOSIKLVRlc3RpbmcgY29weVRvIGNvcHktYmFja3Ns
YXNoLWV1Yy5odG1sOiAvcmVzb3VyY2VzID0+IC90ZXN0Ci1QQVNTOiAiY29weS1iYWNrc2xhc2gt
ZXVjLmh0bWwiID09ICJjb3B5LWJhY2tzbGFzaC1ldWMuaHRtbCIKLVBBU1M6ICI0NzgiID09ICI0
NzgiCi1UZXN0aW5nIGNvcHlUbyB0ZXN0X2RpcmVjdG9yeS90ZXN0LnR4dDogL3Jlc291cmNlcyA9
PiAvdGVzdAotUEFTUzogInRlc3QudHh0IiA9PSAidGVzdC50eHQiCi1QQVNTOiAiMTMiID09ICIx
MyIKLVN1Y2Nlc3NmdWxseSByYW4gMiB0ZXN0cy4KLUNsZWFudXAgZG9uZS4KLQpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2Nyb3NzLWZpbGVzeXN0ZW0tb3AuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vY3Jvc3MtZmlsZXN5c3RlbS1vcC5o
dG1sCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vY3Jv
c3MtZmlsZXN5c3RlbS1vcC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDI2NCArMCwwIEBACi08
aHRtbD4KLTxib2R5PgotPGRpdj5UaGlzIHRlc3RzIGJhc2ljIGNyb3NzLWZpbGVzeXN0ZW0gb3Bl
cmF0aW9ucy48L2Rpdj4KLQotPGRpdiBpZD0iZGVzdGluYXRpb24iIHN0eWxlPSJtaW4taGVpZ2h0
OjEwMHB4OyBib3JkZXI6IHNvbGlkIDFweCBibGFjayI+RHJvcCBmaWxlcyBoZXJlIGlmIHlvdSB0
ZXN0IHRoaXMgbWFudWFsbHk8L2Rpdj4KLQotPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Ci0KLTxz
Y3JpcHQ+Ci12YXIgbWV0aG9kcyA9IFsgJ2NvcHlUbycsICdtb3ZlVG8nIF07Ci12YXIgc291cmNl
VGVzdERpcmVjdG9yeSwgZGVzdFRlc3REaXJlY3Rvcnk7Ci0KLXZhciBkZXN0RGlyZWN0b3J5UGF0
aCA9ICcvdGVzdCc7Ci12YXIgc291cmNlRGlyZWN0b3J5UGF0aCA9ICcuLi8uLi9lZGl0aW5nL3Bh
c3RlYm9hcmQvcmVzb3VyY2VzJzsKLQotLy8gQWN0dWFsIGZpbGVzIGluIHRoZSBzb3VyY2VEaXJl
Y3RvcnlQYXRoLgotdmFyIHRlc3RGaWxlcyA9IFsKLSAgICB7IHBhdGg6J2FwcGxlLmdpZicgfSwK
LSAgICB7IHBhdGg6J21vemlsbGEuZ2lmJyB9LAotICAgIHsgcGF0aDonZHJvcC1maWxlLXN2Zy5z
dmcnIH0sCi0gICAgeyBwYXRoOidjb3B5LWJhY2tzbGFzaC1ldWMuaHRtbCcgfSwKLSAgICB7IHBh
dGg6J3Rlc3RfZGlyZWN0b3J5JywgZGlyZWN0b3J5OnRydWUgfSwKLSAgICB7IHBhdGg6J3Rlc3Rf
ZGlyZWN0b3J5L3Rlc3QudHh0JyB9Ci1dOwotCi0vLyBOb3RlOiBmb3Igbm93IHdlIGRvbid0IHJ1
biBtb3ZlVG8gdGVzdCBzaW5jZSBkcmFnLWFuZC1kcm9wIGlzb2xhdGVkCi0vLyBmaWxlc3lzdGVt
LCB3aGljaCB3ZSB1c2UgZm9yIHNvdXJjZSBmaWxlc3lzdGVtLCBpcyByZWFkLW9ubHkuCi0vLyBG
SVhNRTogYWxsb3cgd3JpdGluZyB0byBQRVJTSVNURU5UIGZpbGVzeXN0ZW0gd2l0aG91dCBxdW90
YSBlcnJvciBpbgotLy8gRHVtcFJlbmRlclRyZWUgc28gdGhhdCB3ZSBjYW4gdGVzdCBURU1QT1JB
UlkgPC0+IFBFUlNJU1RFTlQgY3Jvc3Mgb3BlcmF0aW9uCi0vLyBjaGVja3MuCi12YXIgdGVzdHMg
PSBbCi0gICAgdGVzdENvcHlGaWxlLAotICAgIHRlc3RDb3B5RGlyZWN0b3J5LAotXTsKLQotZnVu
Y3Rpb24gbG9nKHRleHQpCi17Ci0gICAgdmFyIGNvbnNvbGUgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnY29uc29sZScpOwotICAgIGNvbnNvbGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRl
VGV4dE5vZGUodGV4dCkpOwotICAgIGNvbnNvbGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnYnInKSk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3QoZXhwZWN0LCBhY3R1YWwpCi17Ci0g
ICAgbG9nKChleHBlY3QgPT0gYWN0dWFsID8gJ1BBU1MnIDogJ0ZBSUwnKSArICc6ICInICsgZXhw
ZWN0ICsgJyIgPT0gIicgKyBhY3R1YWwgKyAnIicpOwotfQotCi0KLWZ1bmN0aW9uIGVycm9yQ2Fs
bGJhY2sobXNnKQotewotICAgIHJldHVybiBmdW5jdGlvbihlKSB7Ci0gICAgICAgIGNvbnNvbGUu
bG9nKGUpOwotICAgICAgICBsb2coJ0VSUk9SOicgKyBtc2cgKyAnOiAnICsgZS5jb2RlKTsKLSAg
ICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3Rp
ZnlEb25lKCk7Ci0gICAgfTsKLX0KLQotZnVuY3Rpb24gc2V0dXBEZXN0RmlsZVN5c3RlbShzdWNj
ZXNzQ2FsbGJhY2spIHsKLSAgICB3ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbSh3aW5kb3cuVEVNUE9S
QVJZLCAxMDI0LCBmdW5jdGlvbiAoZnMpIHsKLSAgICAgICAgZnMucm9vdC5nZXREaXJlY3Rvcnko
Ci0gICAgICAgICAgICBkZXN0RGlyZWN0b3J5UGF0aCwKLSAgICAgICAgICAgIHtjcmVhdGU6dHJ1
ZX0sCi0gICAgICAgICAgICBmdW5jdGlvbiAoZW50cnkpIHsKLSAgICAgICAgICAgICAgICBkZXN0
VGVzdERpcmVjdG9yeSA9IGVudHJ5OwotICAgICAgICAgICAgICAgIHN1Y2Nlc3NDYWxsYmFjaygp
OwotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIGVycm9yQ2FsbGJhY2soJ2Rlc3Q6IGNyZWF0
ZURpcmVjdG9yeSgnICsgZGVzdERpcmVjdG9yeVBhdGggKyAnKScpKTsKLSAgICB9LCBlcnJvckNh
bGxiYWNrKCdkZXN0OiByZXF1ZXN0RmlsZVN5c3RlbSBmb3IgUEVSU0lTVEVOVCcpKTsKLX0KLQot
ZnVuY3Rpb24gcnVuVGVzdHMoaW5kZXgsIHN1Y2Nlc3NDYWxsYmFjaykgewotICAgIGlmIChpbmRl
eCA+PSB0ZXN0cy5sZW5ndGgpIHsKLSAgICAgICAgc3VjY2Vzc0NhbGxiYWNrKCk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0gICAgdmFyIG5leHQgPSBmdW5jdGlvbigpIHsgcnVuVGVzdHMoaW5k
ZXggKyAxLCBzdWNjZXNzQ2FsbGJhY2spOyB9OwotICAgIHJlc2V0RGlyZWN0b3J5KGRlc3RUZXN0
RGlyZWN0b3J5LCBmdW5jdGlvbigpIHsgdGVzdHNbaW5kZXhdKG5leHQpOyB9KTsKLX0KLQotZnVu
Y3Rpb24gdGVzdENvcHlGaWxlKHN1Y2Nlc3NDYWxsYmFjaykgewotICAgIHRlc3RPbkZpbGUoMCwg
J2NvcHlUbycsIHN1Y2Nlc3NDYWxsYmFjayk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RDb3B5RGlyZWN0
b3J5KHN1Y2Nlc3NDYWxsYmFjaykgewotICAgIHRlc3RPbkRpcmVjdG9yeSgwLCAnY29weVRvJywg
c3VjY2Vzc0NhbGxiYWNrKTsKLX0KLQotZnVuY3Rpb24gdGVzdE9uRmlsZShpbmRleCwgbWV0aG9k
LCBzdWNjZXNzQ2FsbGJhY2spIHsKLSAgICBpZiAoaW5kZXggPj0gdGVzdEZpbGVzLmxlbmd0aCkg
ewotICAgICAgICBzdWNjZXNzQ2FsbGJhY2soKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAg
ICB2YXIgbmV4dCA9IGZ1bmN0aW9uKCkgeyB0ZXN0T25GaWxlKGluZGV4ICsgMSwgbWV0aG9kLCBz
dWNjZXNzQ2FsbGJhY2spOyB9OwotICAgIGlmICh0ZXN0RmlsZXNbaW5kZXhdLmRpcmVjdG9yeSkg
ewotICAgICAgICBuZXh0KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgdmFyIGZpbGUg
PSB0ZXN0RmlsZXNbaW5kZXhdOwotICAgIGxvZygnVGVzdGluZyAnICsgbWV0aG9kICsgJyAnICsg
ZmlsZS5wYXRoICsgJzogJyArIHNvdXJjZVRlc3REaXJlY3RvcnkuZnVsbFBhdGggKyAnID0+ICcg
KyBkZXN0VGVzdERpcmVjdG9yeS5mdWxsUGF0aCk7Ci0gICAgc291cmNlVGVzdERpcmVjdG9yeS5n
ZXRGaWxlKAotICAgICAgICBmaWxlLnBhdGgsIHtjcmVhdGU6ZmFsc2V9LCBmdW5jdGlvbihzb3Vy
Y2UpIHsKLSAgICAgICAgICAgIHNvdXJjZVttZXRob2RdKGRlc3RUZXN0RGlyZWN0b3J5LCAnJywg
ZnVuY3Rpb24oZGVzdCkgewotICAgICAgICAgICAgICAgIHZlcmlmeUZpbGUoc291cmNlLCBkZXN0
LCBuZXh0KTsKLSAgICAgICAgICAgIH0sIGVycm9yQ2FsbGJhY2soJ3Rlc3RPbkZpbGU6ICcgKyBt
ZXRob2QgKyAnOicgKyBmaWxlLnBhdGgpKTsKLSAgICAgICAgfSwgZXJyb3JDYWxsYmFjaygndGVz
dE9uRmlsZTogZ2V0RmlsZTonICsgZmlsZS5wYXRoKSk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RPbkRp
cmVjdG9yeShpbmRleCwgbWV0aG9kLCBzdWNjZXNzQ2FsbGJhY2spIHsKLSAgICBpZiAoaW5kZXgg
Pj0gdGVzdEZpbGVzLmxlbmd0aCkgewotICAgICAgICBzdWNjZXNzQ2FsbGJhY2soKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLSAgICB2YXIgbmV4dCA9IGZ1bmN0aW9uKCkgeyB0ZXN0T25GaWxl
KGluZGV4ICsgMSwgbWV0aG9kLCBzdWNjZXNzQ2FsbGJhY2spOyB9OwotICAgIGlmICghdGVzdEZp
bGVzW2luZGV4XS5kaXJlY3RvcnkpIHsKLSAgICAgICAgbmV4dCgpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotICAgIHZhciBmaWxlID0gdGVzdEZpbGVzW2luZGV4XTsKLSAgICBsb2coJ1Rlc3Rp
bmcgJyArIG1ldGhvZCArICcgJyArIGZpbGUucGF0aCArICc6ICcgKyBzb3VyY2VUZXN0RGlyZWN0
b3J5LmZ1bGxQYXRoICsgJyA9PiAnICsgZGVzdFRlc3REaXJlY3RvcnkuZnVsbFBhdGgpOwotICAg
IHNvdXJjZVRlc3REaXJlY3RvcnkuZ2V0RGlyZWN0b3J5KAotICAgICAgICBmaWxlLnBhdGgsIHtj
cmVhdGU6ZmFsc2V9LCBmdW5jdGlvbihzb3VyY2UpIHsKLSAgICAgICAgICAgIHNvdXJjZVttZXRo
b2RdKGRlc3RUZXN0RGlyZWN0b3J5LCAnJywgZnVuY3Rpb24oZGVzdCkgewotICAgICAgICAgICAg
ICAgIHZlcmlmeUZpbGUoc291cmNlLCBkZXN0LCBuZXh0KTsKLSAgICAgICAgICAgIH0sIGVycm9y
Q2FsbGJhY2soJ3Rlc3RPbkRpcmVjdG9yeTogJyArIG1ldGhvZCArICc6JyArIGZpbGUucGF0aCkp
OwotICAgICAgICB9LCBlcnJvckNhbGxiYWNrKCd0ZXN0T25EaXJlY3Rvcnk6IGdldERpcmVjdG9y
eTonICsgZmlsZS5wYXRoKSk7Ci19Ci0KLWZ1bmN0aW9uIHZlcmlmeUZpbGUoc291cmNlLCBkZXN0
LCBzdWNjZXNzQ2FsbGJhY2spIHsKLSAgICB0ZXN0KHNvdXJjZS5uYW1lLCBkZXN0Lm5hbWUpOwot
ICAgIHNvdXJjZS5nZXRNZXRhZGF0YShmdW5jdGlvbihzb3VyY2VNZXRhZGF0YSkgewotICAgICAg
ICB2YXIgZXhwZWN0ZWRTaXplID0gc291cmNlTWV0YWRhdGEuc2l6ZTsKLSAgICAgICAgZGVzdC5n
ZXRNZXRhZGF0YShmdW5jdGlvbihkZXN0TWV0YWRhdGEpIHsKLSAgICAgICAgICAgIHRlc3QoZXhw
ZWN0ZWRTaXplLCBkZXN0TWV0YWRhdGEuc2l6ZSk7Ci0gICAgICAgICAgICBzdWNjZXNzQ2FsbGJh
Y2soKTsKLSAgICAgICAgfSwgZXJyb3JDYWxsYmFjaygnZ2V0TWV0YWRhdGE6JyArIGRlc3QuZnVs
bFBhdGgpKTsKLSAgICB9LCBlcnJvckNhbGxiYWNrKCdnZXRNZXRhZGF0YTonICsgc291cmNlLmZ1
bGxQYXRoKSk7Ci19Ci0KLWZ1bmN0aW9uIHZlcmlmeURpcmVjdG9yeShzb3VyY2UsIGRlc3QsIHN1
Y2Nlc3NDYWxsYmFjaykgewotICAgIGdldERpcmVjdG9yeUVudHJpZXMoc291cmNlLCBmdW5jdGlv
bihzb3VyY2VFbnRyaWVzKSB7Ci0gICAgICAgIGdldERpcmVjdG9yeUVudHJpZXMoZGVzdCwgZnVu
Y3Rpb24oZGVzdEVudHJpZXMpIHsKLSAgICAgICAgICAgIHNvdXJjZUVudHJpZXMuc29ydCgpOwot
ICAgICAgICAgICAgZGVzdEVudHJpZXMuc29ydCgpOwotICAgICAgICAgICAgdGVzdChzb3VyY2VF
bnRyaWVzLmxlbmd0aCwgZGVzdEVudHJpZXMubGVuZ3RoKTsKLSAgICAgICAgICAgIHZhciB2ZXJp
ZnlPbmUgPSBmdW5jdGlvbihpbmRleCkgewotICAgICAgICAgICAgICAgIHZlcmlmeUZpbGUoc291
cmNlRW50cmllc1tpbmRleF0sIGRlc3RFbnRyaWVzW2luZGV4XSwgZnVuY3Rpb24oKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmIChpbmRleCA+PSBzb3VyY2VFbnRyaWVzLmxlbmd0aCkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgc3VjY2Vzc0NhbGxiYWNrKCk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAg
ICAgdmVyaWZ5T25lKGluZGV4ICsgMSk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAg
ICB9OwotICAgICAgICAgICAgdmVyaWZ5T25lKDApOwotICAgICAgICB9KTsKLSAgICB9KTsKLX0K
LQotZnVuY3Rpb24gZ2V0RGlyZWN0b3J5RW50cmllcyhlbnRyeSwgZW50cmllc0NhbGxiYWNrKSB7
Ci0gICAgdmFyIGFsbEVudHJpZXMgPSBbXTsKLSAgICB2YXIgYWRkRW50cmllcyA9IGZ1bmN0aW9u
KGVudHJpZXMsIGNvbnRpbnVlQ2FsbGJhY2spIHsKLSAgICAgICAgaWYgKGVudHJpZXMubGVuZ3Ro
ID09IDApIHsKLSAgICAgICAgICAgIGVudHJpZXNDYWxsYmFjayhhbGxFbnRyaWVzKTsKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBhbGxFbnRyaWVzLmNvbmNhdChlbnRy
aWVzKTsKLSAgICAgICAgaWYgKGVudHJpZXMubGVuZ3RoICE9IDApIGNvbnRpbnVlQ2FsbGJhY2so
KTsKLSAgICB9OwotICAgIHZhciBlbnRyaWVzQ2FsbGJhY2sgPSBmdW5jdGlvbihlbnRyaWVzKSB7
Ci0gICAgICAgIGFkZEVudHJpZXMoZW50cmllcywgc3VjY2Vzc0NhbGxiYWNrLCBmdW5jdGlvbigp
IHsKLSAgICAgICAgICAgIHJlYWRlci5yZWFkRGlyZWN0b3J5KGVudHJpZXNDYWxsYmFjayk7Ci0g
ICAgICAgIH0pOwotICAgIH07Ci0gICAgdmFyIHJlYWRlciA9IGVudHJ5LmNyZWF0ZVJlYWRlcigp
OwotICAgIHJlYWRlci5yZWFkRGlyZWN0b3J5KGVudHJpZXNDYWxsYmFjaywgZXJyb3JDYWxsYmFj
aygncmVhZERpcmVjdG9yeTogJyArIGVudHJ5LmZ1bGxQYXRoKSk7Ci19Ci0KLWZ1bmN0aW9uIGNs
ZWFudXBEaXJlY3RvcnkoZGlyZWN0b3J5LCBzdWNjZXNzQ2FsbGJhY2spIHsKLSAgICBkaXJlY3Rv
cnkucmVtb3ZlUmVjdXJzaXZlbHkoCi0gICAgICAgIHN1Y2Nlc3NDYWxsYmFjaywKLSAgICAgICAg
ZXJyb3JDYWxsYmFjaygncmVtb3ZlUmVjdXJzaXZlbHk6JyArIGRpcmVjdG9yeS5mdWxsUGF0aCkp
OwotfQotCi1mdW5jdGlvbiByZXNldERpcmVjdG9yeShkaXJlY3RvcnksIHN1Y2Nlc3NDYWxsYmFj
aykgewotICAgIHZhciBmcyA9IGRpcmVjdG9yeS5maWxlc3lzdGVtOwotICAgIHZhciBwYXRoID0g
ZGlyZWN0b3J5LmZ1bGxQYXRoOwotICAgIGNsZWFudXBEaXJlY3RvcnkoZGlyZWN0b3J5LCBmdW5j
dGlvbigpIHsKLSAgICAgICAgZnMucm9vdC5nZXREaXJlY3RvcnkocGF0aCwge2NyZWF0ZTp0cnVl
fSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBsb2coZnMubmFtZSArICc6IHJlc2V0ICcgKyBwYXRoKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VjY2Vzc0NhbGxiYWNrKCk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGVycm9yQ2FsbGJhY2soJ2dldERpcmVjdG9yeShj
cmVhdGUpOicgKyBwYXRoKSk7Ci0gICAgfSk7Ci19Ci0KLWZ1bmN0aW9uIHNldHVwRmlsZXMocm9v
dCwgaW5kZXgsIHN1Y2Nlc3NDYWxsYmFjaykKLXsKLSAgICBpZiAoaW5kZXggPj0gdGVzdEZpbGVz
Lmxlbmd0aCkgewotICAgICAgICBzdWNjZXNzQ2FsbGJhY2soKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSAgICB2YXIgZmlsZSA9IHRlc3RGaWxlc1tpbmRleF07Ci0gICAgdmFyIG1zZyA9ICdj
cmVhdGUgdGVzdEZpbGVzWycgKyBpbmRleCArICddOiAnICsgZmlsZS5wYXRoOwotICAgIHZhciBj
YWxsYmFjayA9IGZ1bmN0aW9uKGVudHJ5KSB7IHNldHVwRmlsZXMocm9vdCwgaW5kZXggKyAxLCBz
dWNjZXNzQ2FsbGJhY2spOyB9OwotICAgIGlmIChmaWxlLmRpcmVjdG9yeSkgewotICAgICAgICBy
b290LmdldERpcmVjdG9yeShkZXN0RGlyZWN0b3J5UGF0aCArICcvJyArIGZpbGUucGF0aCwge2Ny
ZWF0ZTp0cnVlfSwgY2FsbGJhY2ssIGVycm9yQ2FsbGJhY2sobXNnKSk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICByb290LmdldEZpbGUoZmlsZS5wYXRoLCB7Y3JlYXRlOnRydWV9LCBm
dW5jdGlvbihlbnRyeSkgewotICAgICAgICBlbnRyeS5jcmVhdGVXcml0ZXIoZnVuY3Rpb24gKHdy
aXRlcikgewotICAgICAgICAgICAgd3JpdGVyLnRydW5jYXRlKGZpbGUuc2l6ZSk7Ci0gICAgICAg
ICAgICB3cml0ZXIub25lcnJvciA9IGVycm9yQ2FsbGJhY2soJ3RydW5jYXRlICcgKyBlbnRyeS5m
dWxsUGF0aCk7Ci0gICAgICAgICAgICB3cml0ZXIub253cml0ZWVuZCA9IGNhbGxiYWNrOwotICAg
ICAgICB9LCBlcnJvckNhbGxiYWNrKCdjcmVhdGUgd3JpdGVyIGZvciAnICsgZW50cnkuZnVsbFBh
dGgpKTsKLSAgICB9LCBlcnJvckNhbGxiYWNrKG1zZykpOwotfQotCi1mdW5jdGlvbiBzdGFydFRl
c3QoZSkgewotICAgIGUuc3RvcFByb3BhZ2F0aW9uKGUpOwotICAgIGUucHJldmVudERlZmF1bHQo
KTsKLQotICAgIGxvZygnVmVyaWZ5aW5nIGNvbnRlbnRzIG9mIERhdGFUcmFuc2Zlckl0ZW1zLi4u
Jyk7Ci0gICAgdmFyIGl0ZW1zID0gZS5kYXRhVHJhbnNmZXIuaXRlbXM7Ci0gICAgdGVzdCgxLCBp
dGVtcy5sZW5ndGgpOwotICAgIHRlc3QoJ2ZpbGUnLCBpdGVtc1swXS5raW5kKTsKLQotICAgIHZh
ciBlbnRyeSA9IGl0ZW1zWzBdLndlYmtpdEdldEFzRW50cnkoKTsKLSAgICB0ZXN0KHRydWUsIGVu
dHJ5LmlzRGlyZWN0b3J5KTsKLSAgICBzb3VyY2VUZXN0RGlyZWN0b3J5ID0gZW50cnk7Ci0gICAg
c2V0dXBEZXN0RmlsZVN5c3RlbShmdW5jdGlvbigpIHsKLSAgICAgICAgbG9nKCdTdWNjZXNzZnVs
bHkgc2V0dXAgdGVzdCBlbnZpcm9ubWVudC4nKTsKLSAgICAgICAgcnVuVGVzdHMoMCwgZnVuY3Rp
b24oKSB7Ci0gICAgICAgICAgICBsb2coJ1N1Y2Nlc3NmdWxseSByYW4gJyArIHRlc3RzLmxlbmd0
aCArICcgdGVzdHMuJyk7Ci0gICAgICAgICAgICBjbGVhbnVwRGlyZWN0b3J5KGRlc3RUZXN0RGly
ZWN0b3J5LCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICBsb2coJ0NsZWFudXAgZG9uZS4n
KTsKLSAgICAgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICAg
ICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAg
IH0pOwotICAgIH0pOwotfQotCi12YXIgZGVzdGluYXRpb24gPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnZGVzdGluYXRpb24nKTsKLWRlc3RpbmF0aW9uLmFkZEV2ZW50TGlzdGVuZXIoJ2RyYWdv
dmVyJywgZnVuY3Rpb24oZSkgewotICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7Ci0gICAgZS5wcmV2
ZW50RGVmYXVsdCgpOwotfSwgZmFsc2UpOwotZGVzdGluYXRpb24uYWRkRXZlbnRMaXN0ZW5lcign
ZHJvcCcsIHN0YXJ0VGVzdCwgZmFsc2UpOwotCi1pZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLSAg
ICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLSAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQo
KTsKLQotICAgIGV2ZW50U2VuZGVyLmJlZ2luRHJhZ1dpdGhGaWxlcyhbc291cmNlRGlyZWN0b3J5
UGF0aF0pOwotICAgIGV2ZW50U2VuZGVyLmxlYXBGb3J3YXJkKDEwMCk7Ci0gICAgZXZlbnRTZW5k
ZXIubW91c2VNb3ZlVG8oZGVzdGluYXRpb24ub2Zmc2V0TGVmdCArIDEwLCBkZXN0aW5hdGlvbi5v
ZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRIZWlnaHQgLyAyKTsKLSAgICBldmVudFNlbmRl
ci5tb3VzZVVwKCk7Ci19Ci0KLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2RpcmVjdG9yeS1lbnRyeS10by11cmktZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9kaXJlY3Rvcnkt
ZW50cnktdG8tdXJpLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9maWxlc3lzdGVtL2RpcmVjdG9yeS1lbnRyeS10by11cmktZXhwZWN0ZWQudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0xLDEwICswLDAgQEAKLU9idGFpbmluZyBVUkwgZnJvbSBEaXJlY3Rv
cnlFbnRyeS4KLQotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgotCi0KLVBBU1MgdGVzdERpcmVj
dG9yeVVSTCBpcyAnZmlsZXN5c3RlbTpmaWxlOi8vL3RlbXBvcmFyeS90ZXN0RGlyZWN0b3J5Jwot
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9kaXJlY3RvcnktZW50cnktdG8tdXJpLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2RpcmVjdG9yeS1lbnRy
eS10by11cmkuaHRtbAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxl
c3lzdGVtL2RpcmVjdG9yeS1lbnRyeS10by11cmkuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwx
MCArMCwwIEBACi08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0icmVzb3VyY2VzL2ZzLXRlc3Qt
dXRpbC5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvZGlyZWN0b3J5LWVudHJ5LXRvLXVyaS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZW50cnktcG9pbnRzLW1pc3Npbmct
YXJndW1lbnRzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zp
bGVzeXN0ZW0vZW50cnktcG9pbnRzLW1pc3NpbmctYXJndW1lbnRzLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2VudHJ5LXBvaW50
cy1taXNzaW5nLWFyZ3VtZW50cy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMTQg
KzAsMCBAQAotRW5zdXJlcyB0aGF0IHdlIGdldCBleGNlcHRpb25zIHdoZW4gd2UgZG8gbm90IGlu
Y2x1ZGUgcmVxdWlyZWQgYXJndW1lbnRzIGZvciB3ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbSBhbmQg
d2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVVSTCBtZXRob2RzLgotCi1PbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCi0KLQotUEFTUyB3ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lzdGVtVVJMKCkg
dGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMuCi1QQVNTIHdl
YmtpdFJlc29sdmVMb2NhbEZpbGVTeXN0ZW1VUkwoIiIpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJy
b3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzLgotUEFTUyB3ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbSgp
IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzLgotUEFTUyB3
ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbShURU1QT1JBUlkpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJy
b3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzLgotUEFTUyB3ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbShU
RU1QT1JBUlksIDEpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1l
bnRzLgotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0K
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9lbnRyeS1wb2ludHMtbWlzc2luZy1h
cmd1bWVudHMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0v
ZW50cnktcG9pbnRzLW1pc3NpbmctYXJndW1lbnRzLmh0bWwJKHJldmlzaW9uIDE1NjY5MSkKKysr
IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9lbnRyeS1wb2ludHMtbWlzc2luZy1hcmd1bWVu
dHMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxNiArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4K
LTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgot
PHNjcmlwdD4KLWRlc2NyaXB0aW9uKCdFbnN1cmVzIHRoYXQgd2UgZ2V0IGV4Y2VwdGlvbnMgd2hl
biB3ZSBkbyBub3QgaW5jbHVkZSByZXF1aXJlZCBhcmd1bWVudHMgZm9yIHdlYmtpdFJlcXVlc3RG
aWxlU3lzdGVtIGFuZCB3ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lzdGVtVVJMIG1ldGhvZHMuJyk7
Ci0KLWlmICh3aW5kb3cud2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVVSTCkgewotICAgIHZh
ciBub3RFbm91Z2hBcmd1bWVudHMgPSAnIlR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMi
JzsKLSAgICBzaG91bGRUaHJvdygnd2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVVSTCgpJywg
bm90RW5vdWdoQXJndW1lbnRzKTsKLSAgICBzaG91bGRUaHJvdygnd2Via2l0UmVzb2x2ZUxvY2Fs
RmlsZVN5c3RlbVVSTCgiIiknLCBub3RFbm91Z2hBcmd1bWVudHMpOwotICAgIHNob3VsZFRocm93
KCd3ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbSgpJywgbm90RW5vdWdoQXJndW1lbnRzKTsKLSAgICBz
aG91bGRUaHJvdygnd2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0oVEVNUE9SQVJZKScsIG5vdEVub3Vn
aEFyZ3VtZW50cyk7Ci0gICAgc2hvdWxkVGhyb3coJ3dlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKFRF
TVBPUkFSWSwgMSknLCBub3RFbm91Z2hBcmd1bWVudHMpOwotfSBlbHNlCi0gICAgZGVidWcoIlRo
aXMgdGVzdCByZXF1aXJlcyB3aW5kb3cud2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVVSTC4i
KTsKLTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGUtYWZ0
ZXItcmVsb2FkLWNyYXNoLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2ZpbGVzeXN0ZW0vZmlsZS1hZnRlci1yZWxvYWQtY3Jhc2gtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZS1hZnRlci1y
ZWxvYWQtY3Jhc2gtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xICswLDAgQEAKLVBB
U1MKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9maWxlLWFmdGVyLXJlbG9hZC1j
cmFzaC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9maWxl
LWFmdGVyLXJlbG9hZC1jcmFzaC5odG1sCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZS1hZnRlci1yZWxvYWQtY3Jhc2guaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMSw0MiArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9IlVU
Ri04Ij4KLTwhLS0gYmFzZWQgb24gY3JidWcuY29tLzk0ODk1I2MyMAotICAgICBodHRwOi8vY3Ji
dWcuY29tLzk0ODk1Ci0gICAgIGh0dHA6Ly93ZWJraXQub3JnL2IvNzY0NjEgLS0+Ci08c2NyaXB0
PgotaWYgKGxvY2F0aW9uLnNlYXJjaCAhPSAnP3JlZW50ZXInKSB7Ci0gIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikgewotICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotICAgIHRlc3RSdW5uZXIu
d2FpdFVudGlsRG9uZSgpOwotICB9Ci0KLSAgd2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0oVEVNUE9S
QVJZLCAxMDI0KjEwMjQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGdvdEZTLCBvbkVycm9y
LmJpbmQobnVsbCwgJ3JlcXVlc3RGaWxlU3lzdGVtJykpOwotfSBlbHNlIHsKLSAgZG9jdW1lbnQu
d3JpdGUoJ1BBU1MnKTsKLQotICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgdGVzdFJ1bm5l
ci5ub3RpZnlEb25lKCk7Ci19Ci0KLWZ1bmN0aW9uIG9uRXJyb3IobXNnLCBlKSB7Ci0gIGRvY3Vt
ZW50LmJvZHkuaW5uZXJUZXh0ID0gJ0ZBSUw6ICcgKyBlLmNvZGUgKyAnIG1zZyA9ICcgKyBtc2c7
Ci0gIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsK
LX0KLQotZnVuY3Rpb24gZ290RlMoZnMpIHsKLSAgZnMucm9vdC5nZXRGaWxlKCdob2dlJywge2Ny
ZWF0ZTogdHJ1ZX0sCi0gICAgICAgICAgICAgICAgICBnb3RFbnRyeSwgb25FcnJvci5iaW5kKG51
bGwsICdnZXRGaWxlJykpOwotfQotCi1mdW5jdGlvbiBnb3RFbnRyeShlbnRyeSkgewotICAvLyBJ
dCBzaG91bGQgbm90IGNhdXNlIGEgY3Jhc2ggdGhhdCBjYWxsaW5nIEZpbGVFbnRyeS5maWxlKCkg
d2hpbGUgdGhlIHBhZ2UgaXMgdW5sb2FkaW5nLgotICBsb2NhdGlvbi5zZWFyY2ggPSAnP3JlZW50
ZXInOwotICBlbnRyeS5maWxlKGdvdEZpbGUsIG9uRXJyb3IuYmluZChudWxsLCAnZmlsZScpKTsK
LX0KLQotZnVuY3Rpb24gZ290RmlsZShmaWxlKSB7Ci0gIC8vIElnbm9yZSB0aGUgcmVzdWx0IG9m
IEZpbGVFbnRyeS5maWxlKCkuCi19Ci08L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
ZmlsZXN5c3RlbS9maWxlLWVudHJ5LXRvLXVyaS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGUtZW50cnktdG8tdXJpLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGUt
ZW50cnktdG8tdXJpLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwxMCArMCwwIEBA
Ci1PYnRhaW5pbmcgVVJMIGZyb20gRmlsZUVudHJ5LgotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCi0KLQotUEFTUyB0ZXN0RmlsZVVSTCBpcyAnZmlsZXN5c3RlbTpmaWxlOi8vL3RlbXBvcmFy
eS90ZXN0RmlsZUVudHJ5LnR4dCcKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQot
VEVTVCBDT01QTEVURQotCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZS1l
bnRyeS10by11cmkuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0
ZW0vZmlsZS1lbnRyeS10by11cmkuaHRtbAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9maWxlc3lzdGVtL2ZpbGUtZW50cnktdG8tdXJpLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTEsMTAgKzAsMCBAQAotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InJlc291cmNlcy9m
cy10ZXN0LXV0aWwuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0IHNyYz0i
cmVzb3VyY2VzL2ZpbGUtZW50cnktdG8tdXJpLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRt
bD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9maWxlLWZyb20tZmlsZS1lbnRy
eS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVt
L2ZpbGUtZnJvbS1maWxlLWVudHJ5LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTU2NjkxKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGUtZnJvbS1maWxlLWVudHJ5LWV4cGVjdGVk
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwxMiArMCwwIEBACi1PYnRhaW5pbmcgRmlsZSBmcm9t
IEZpbGVFbnRyeS4KLQotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgotCi0KLVBBU1MgdGVzdEZp
bGUubmFtZSBpcyB0ZXN0RmlsZUVudHJ5Lm5hbWUKLVBBU1MgdGVzdEZpbGUudHlwZSBpcyAndGV4
dC9wbGFpbicKLVBBU1MgdGVzdEZpbGUuc2l6ZSBpcyAwCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxl
c3lzdGVtL2ZpbGUtZnJvbS1maWxlLWVudHJ5Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9maWxlc3lzdGVtL2ZpbGUtZnJvbS1maWxlLWVudHJ5Lmh0bWwJKHJldmlzaW9uIDE1
NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9maWxlLWZyb20tZmlsZS1lbnRy
eS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEwICswLDAgQEAKLTxodG1sPgotPGhlYWQ+Ci08
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvZnMtdGVzdC11dGlsLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4K
LTxib2R5PgotPHNjcmlwdCBzcmM9InJlc291cmNlcy9maWxlLWZyb20tZmlsZS1lbnRyeS5qcyI+
PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVz
eXN0ZW0vZmlsZS1tZXRhZGF0YS1hZnRlci13cml0ZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGUtbWV0YWRhdGEtYWZ0ZXItd3JpdGUt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVz
eXN0ZW0vZmlsZS1tZXRhZGF0YS1hZnRlci13cml0ZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMTAgKzAsMCBAQAotVGhpcyB2ZXJpZmllcyBGaWxlLnNpemUgKGZvciBhIGZpbGUg
ZnJvbSBGaWxlU3lzdGVtIEFQSSkgYWx3YXlzIHJldHVybnMgdGhlIGZyZXNoIHNpemUgZXZlbiBh
ZnRlciB0aGUgZmlsZSBpcyBtb2RpZmllZC4KLVdyaXRpbmcgMTIzNDU2Nzg5MCB0byB0aGUgZmls
ZS4uLgotQ3JlYXRlZCBhIHdyaXRlci4KLVdyaXRlIHN1Y2NlZWRlZC4KLVBBU1MgdGVzdEZpbGUu
c2l6ZSBpcyB0ZXN0VGV4dDEubGVuZ3RoCi1Xcml0aW5nIGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3
eHl6IHRvIHRoZSBmaWxlLi4uCi1DcmVhdGVkIGEgd3JpdGVyLgotV3JpdGUgc3VjY2VlZGVkLgot
UEFTUyB0ZXN0RmlsZS5zaXplIGlzIHRlc3RUZXh0Mi5sZW5ndGgKLQpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9maWxlc3lzdGVtL2ZpbGUtbWV0YWRhdGEtYWZ0ZXItd3JpdGUuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZS1tZXRhZGF0YS1hZnRlci13
cml0ZS5odG1sCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0
ZW0vZmlsZS1tZXRhZGF0YS1hZnRlci13cml0ZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDg4
ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+
Ci08ZGl2PlRoaXMgdmVyaWZpZXMgRmlsZS5zaXplIChmb3IgYSBmaWxlIGZyb20gRmlsZVN5c3Rl
bSBBUEkpIGFsd2F5cyByZXR1cm5zIHRoZSBmcmVzaCBzaXplIGV2ZW4gYWZ0ZXIgdGhlIGZpbGUg
aXMgbW9kaWZpZWQuPC9kaXY+Ci08ZGl2IGlkPSdjb25zb2xlJz48L2Rpdj4KLTxzY3JpcHQ+Ci0K
LWlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwot
ICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotfQotCi12YXIgZmlsZUVudHJ5Rm9yQ2xl
YW51cDsKLXZhciB0ZXN0RmlsZTsKLXZhciB0ZXN0VGV4dDEgPSAnMTIzNDU2Nzg5MCc7Ci12YXIg
dGVzdFRleHQyID0gJ2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6JzsKLQotd2Via2l0UmVxdWVz
dEZpbGVTeXN0ZW0oCi0gICAgd2luZG93LlRFTVBPUkFSWSwgMTAwLCBmdW5jdGlvbihmcykgewot
ICAgICAgICBmcy5yb290LmdldEZpbGUoJ3Rlc3QnLCB7Y3JlYXRlOnRydWV9LCBmdW5jdGlvbihl
bnRyeSkgewotICAgICAgICAgICAgZmlsZUVudHJ5Rm9yQ2xlYW51cCA9IGVudHJ5OwotICAgICAg
ICAgICAgd3JpdGVUZXh0VG9GaWxlKGVudHJ5LCB0ZXN0VGV4dDEsIGZ1bmN0aW9uKCkgewotICAg
ICAgICAgICAgICAgIGxvZygnV3JpdGUgc3VjY2VlZGVkLicpOwotICAgICAgICAgICAgICAgIGVu
dHJ5LmZpbGUob25Xcml0dGVuRmlsZS5iaW5kKHRoaXMsIGVudHJ5KSwgb25FcnJvcik7Ci0gICAg
ICAgICAgICB9KTsKLSAgICAgICAgfSwgb25FcnJvcik7Ci0gICAgfSwgb25FcnJvcik7Ci0KLWZ1
bmN0aW9uIG9uV3JpdHRlbkZpbGUoZW50cnksIGZpbGUpIHsKLSAgICB0ZXN0RmlsZSA9IGZpbGU7
Ci0gICAgc2hvdWxkQmUoJ3Rlc3RGaWxlLnNpemUnLCAndGVzdFRleHQxLmxlbmd0aCcpOwotICAg
IC8vIFdyaXRlIGludG8gdGhpcyBmaWxlIGFnYWluLgotICAgIHdyaXRlVGV4dFRvRmlsZShlbnRy
eSwgdGVzdFRleHQyLCBmdW5jdGlvbigpIHsKLSAgICAgICAgbG9nKCdXcml0ZSBzdWNjZWVkZWQu
Jyk7Ci0gICAgICAgIGVudHJ5LmZpbGUoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAvLyBUaGUg
ZmlsZSBzaXplIHNob3VsZCBiZSB1cGRhdGVkLgotICAgICAgICAgICAgc2hvdWxkQmUoJ3Rlc3RG
aWxlLnNpemUnLCAndGVzdFRleHQyLmxlbmd0aCcpOwotICAgICAgICAgICAgY2xlYW51cCgpOwot
ICAgICAgICB9LCBvbkVycm9yKTsKLSAgICB9KTsKLX0KLQotZnVuY3Rpb24gd3JpdGVUZXh0VG9G
aWxlKGVudHJ5LCBjb250ZW50cywgc3VjY2Vzc0NhbGxiYWNrKQotewotICAgIGxvZygnV3JpdGlu
ZyAnICsgY29udGVudHMgKyAnIHRvIHRoZSBmaWxlLi4uJyk7Ci0gICAgZW50cnkuY3JlYXRlV3Jp
dGVyKGZ1bmN0aW9uKHdyaXRlcikgewotICAgICAgICBsb2coJ0NyZWF0ZWQgYSB3cml0ZXIuJyk7
Ci0gICAgICAgIHdyaXRlci53cml0ZShuZXcgQmxvYihbY29udGVudHNdLCB7dHlwZToncGxhaW4v
dGV4dCd9KSk7Ci0gICAgICAgIHdyaXRlci5vbndyaXRlZW5kID0gc3VjY2Vzc0NhbGxiYWNrOwot
ICAgICAgICB3cml0ZXIub25lcnJvciA9IG9uRXJyb3I7Ci0gICAgfSk7Ci19Ci0KLWZ1bmN0aW9u
IGxvZyh0ZXh0KQotewotICAgIHZhciBjb25zb2xlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2NvbnNvbGUnKTsKLSAgICBjb25zb2xlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHRO
b2RlKHRleHQpKTsKLSAgICBjb25zb2xlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ2JyJykpOwotfQotCi1mdW5jdGlvbiBvbkVycm9yKGUpCi17Ci0gICAgbG9nKCdFUlJPUjog
JyArIGUuY29kZSk7Ci0gICAgY29uc29sZS5sb2coZSk7Ci0gICAgY2xlYW51cCgpOwotfQotCi1m
dW5jdGlvbiBjbGVhbnVwKCkKLXsKLSAgICBpZiAoZmlsZUVudHJ5Rm9yQ2xlYW51cCkgewotICAg
ICAgICBmaWxlRW50cnlGb3JDbGVhbnVwLnJlbW92ZShlbmRUZXN0LCBlbmRUZXN0KTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLSAgICBlbmRUZXN0KCk7Ci19Ci0KLWZ1bmN0aW9uIGVuZFRlc3Qo
KQotewotICAgIGlmICh0ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUo
KTsKLX0KLQotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2ZpbGVzeXN0ZW0vZmlsZS13cml0ZXItYWJvcnQtY29udGludWUtZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9maWxlLXdyaXRlci1hYm9y
dC1jb250aW51ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3Rz
L2Zhc3QvZmlsZXN5c3RlbS9maWxlLXdyaXRlci1hYm9ydC1jb250aW51ZS1leHBlY3RlZC50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNDEgKzAsMCBAQAotVGVzdCB0aGF0IEZpbGVXcml0ZXIgY2Fu
IGNvbnRpbnVlIGltbWVkaWF0ZWx5IGFmdGVyIGFuIGFib3J0LgotCi1PbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCi0KLVBBU1MgMTEwMDAwMCBpcyBibG9iU2l6ZQotc3RhcnRpbmcgdGVzdAotUEFT
UyBDYWxsaW5nIHdyaXRlLgotUEFTUyBDYWxsaW5nIGFib3J0Ci1QQVNTIFNhdyBhYm9ydAotUEFT
UyB3cml0ZXIubGVuZ3RoIGlzIDAKLVBBU1MgU2F3IHdyaXRlZW5kIDAuCi1QQVNTIENhbGxpbmcg
d3JpdGUuCi1QQVNTIHdyaXRlci5sZW5ndGggaXMgMTEwMDAwMAotUEFTUyBTYXcgd3JpdGVlbmQg
MS4KLVBBU1MgQ2FsbGluZyB0cnVuY2F0ZS4KLVBBU1Mgd3JpdGVyLmxlbmd0aCBpcyAwCi1QQVNT
IFNhdyB3cml0ZWVuZCAyLgotUEFTUyBDYWxsaW5nIHdyaXRlLgotUEFTUyBDYWxsaW5nIGFib3J0
IGF0IHRoZSBlbmQgb2YgdGhlIHdyaXRlCi1QQVNTIFNhdyBhYm9ydAotUEFTUyB3cml0ZXIubGVu
Z3RoIGlzIDExMDAwMDAKLVBBU1MgU2F3IHdyaXRlZW5kIDMuCi1QQVNTIENhbGxpbmcgd3JpdGUu
Ci1QQVNTIHdyaXRlci5sZW5ndGggaXMgMjIwMDAwMAotUEFTUyBTYXcgd3JpdGVlbmQgNC4KLVBB
U1MgQ2FsbGluZyB0cnVuY2F0ZS4KLVBBU1Mgd3JpdGVyLmxlbmd0aCBpcyAwCi1QQVNTIFNhdyB3
cml0ZWVuZCA1LgotUEFTUyBDYWxsaW5nIHdyaXRlLgotUEFTUyBDYWxsaW5nIGFib3J0Ci1QQVNT
IFNhdyBhYm9ydAotUEFTUyB3cml0ZXIubGVuZ3RoIGlzIDAKLVBBU1MgU2F3IHdyaXRlZW5kIDYu
Ci1QQVNTIENhbGxpbmcgdHJ1bmNhdGUuCi1QQVNTIHdyaXRlci5sZW5ndGggaXMgNwotUEFTUyBT
YXcgd3JpdGVlbmQgNy4KLVBBU1MgQWxsIHRlc3RzIGNvbXBsZXRlLgotUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZmlsZXN5c3RlbS9maWxlLXdyaXRlci1hYm9ydC1jb250aW51ZS5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9maWxlLXdyaXRlci1hYm9ydC1jb250aW51
ZS5odG1sCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0v
ZmlsZS13cml0ZXItYWJvcnQtY29udGludWUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxNSAr
MCwwIEBACi08IURPQ1RZUEUgSFRNTD4KLTxodG1sPgotIDxoZWFkPgotICAgIDx0aXRsZT5GaWxl
IFdyaXRlciBBYm9ydCBhbmQgQ29udGludWU8L3RpdGxlPgotICAgIDxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvZmlsZS13cml0ZXItdXRpbHMuanMiPjwvc2NyaXB0PgotIDwvaGVhZD4KLSA8Ym9k
eT4KLSAgICA8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Ci0gICAgPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+Ci0gICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9maWxlLXdyaXRlci1hYm9ydC1j
b250aW51ZS5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotIDwvYm9keT4KLTwvaHRtbD4KLQpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGUtd3JpdGVyLWFib3J0LWRlcHRoLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZS13cml0
ZXItYWJvcnQtZGVwdGgtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZS13cml0ZXItYWJvcnQtZGVwdGgtZXhwZWN0ZWQudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDI5ICswLDAgQEAKLVRlc3QgdGhhdCBGaWxlV3JpdGVyIGRl
ZmVuZHMgYWdhaW5zdCBpbmZpbml0ZSByZWN1cnNpb24gdmlhIGFib3J0LgotCi1PbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCi0KLXN0YXJ0aW5nIHRlc3QKLVBBU1MgQ2FsbGluZyB3cml0ZS4KLVBB
U1MgQ2FsbGluZyBhYm9ydAotUEFTUyBTYXcgYWJvcnQKLVBBU1MgQ2FsbGluZyB3cml0ZS4KLVBB
U1MgQ2FsbGluZyBhYm9ydAotUEFTUyBTYXcgYWJvcnQKLVBBU1MgQ2FsbGluZyB3cml0ZS4KLVBB
U1MgU2F3IHNlY3VyaXR5IGVycm9yCi1QQVNTIFNhdyB3cml0ZWVuZC4KLVBBU1MgU2F3IHdyaXRl
ZW5kLgotUEFTUyBDYWxsaW5nIHRydW5jYXRlLgotUEFTUyBDYWxsaW5nIGFib3J0Ci1QQVNTIFNh
dyBhYm9ydAotUEFTUyBDYWxsaW5nIHRydW5jYXRlLgotUEFTUyBDYWxsaW5nIGFib3J0Ci1QQVNT
IFNhdyBhYm9ydAotUEFTUyBDYWxsaW5nIHRydW5jYXRlLgotUEFTUyBTYXcgc2VjdXJpdHkgZXJy
b3IKLVBBU1MgU2F3IHdyaXRlZW5kLgotUEFTUyBTYXcgd3JpdGVlbmQuCi1QQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9maWxlc3lzdGVtL2ZpbGUtd3JpdGVyLWFib3J0LWRlcHRoLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGUtd3JpdGVyLWFib3J0LWRlcHRoLmh0
bWwJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9maWxl
LXdyaXRlci1hYm9ydC1kZXB0aC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE1ICswLDAgQEAK
LTwhRE9DVFlQRSBIVE1MPgotPGh0bWw+Ci0gPGhlYWQ+Ci0gICAgPHRpdGxlPkZpbGUgV3JpdGVy
IEFib3J0IERlcHRoPC90aXRsZT4KLSAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2ZpbGUt
d3JpdGVyLXV0aWxzLmpzIj48L3NjcmlwdD4KLSA8L2hlYWQ+Ci0gPGJvZHk+Ci0gICAgPGRpdiBp
ZD0iZGVzY3JpcHRpb24iPjwvZGl2PgotICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgotICAg
IDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZmlsZS13cml0ZXItYWJvcnQtZGVwdGguanMiPjwvc2Ny
aXB0PgotICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KLSA8L2JvZHk+Ci08L2h0bWw+Ci0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmls
ZXN5c3RlbS9maWxlLXdyaXRlci1hYm9ydC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGUtd3JpdGVyLWFib3J0LWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGUtd3Jp
dGVyLWFib3J0LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwxMiArMCwwIEBACi1U
ZXN0IHRoYXQgRmlsZVdyaXRlciBoYW5kbGVzIGFib3J0IHByb3Blcmx5LgotCi1PbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCi0KLXN0YXJ0aW5nIHRlc3QKLVBBU1MgQ2FsbGluZyBhYm9ydAotUEFT
UyBTYXcgYWJvcnQKLVBBU1MgU2F3IHdyaXRlZW5kLgotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5
c3RlbS9maWxlLXdyaXRlci1hYm9ydC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZmlsZXN5c3RlbS9maWxlLXdyaXRlci1hYm9ydC5odG1sCShyZXZpc2lvbiAxNTY2OTEpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZS13cml0ZXItYWJvcnQuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMSwxNSArMCwwIEBACi08IURPQ1RZUEUgSFRNTD4KLTxodG1sPgotIDxo
ZWFkPgotICAgIDx0aXRsZT5GaWxlIFdyaXRlciBBYm9ydDwvdGl0bGU+Ci0gICAgPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlw
dCBzcmM9InJlc291cmNlcy9maWxlLXdyaXRlci11dGlscy5qcyI+PC9zY3JpcHQ+Ci0gPC9oZWFk
PgotIDxib2R5PgotICAgIDxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KLSAgICA8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KLSAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2ZpbGUtd3JpdGVy
LWFib3J0LmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci0gPC9ib2R5PgotPC9odG1sPgotCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZS13cml0ZXItZW1wdHktYmxvYi1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGUtd3JpdGVy
LWVtcHR5LWJsb2ItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZS13cml0ZXItZW1wdHktYmxvYi1leHBlY3RlZC50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTEsMTAgKzAsMCBAQAotVGVzdCB0aGF0IEZpbGVXcml0ZXIgd29ya3Mg
d2l0aG91dCBjcmFzaCB3aGVuIHRyeWluZyB0byB3cml0ZSBhbiBlbXB0eSBibG9iLgotCi1PbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLXN0YXJ0aW5nIHRlc3QKLVBBU1MgU3VjY2Vzc2Z1bGx5
IHdyb3RlIGJsb2IuCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09N
UExFVEUKLQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGUtd3JpdGVyLWVt
cHR5LWJsb2IuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0v
ZmlsZS13cml0ZXItZW1wdHktYmxvYi5odG1sCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZS13cml0ZXItZW1wdHktYmxvYi5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDE1ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MPgotPGh0bWw+Ci08aGVhZD4K
LTx0aXRsZT5GaWxlIFdyaXRlciB3aXRoIGVtcHR5IEJsb2I8L3RpdGxlPgotPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0i
cmVzb3VyY2VzL2ZpbGUtd3JpdGVyLXV0aWxzLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5
PgotPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgotPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
Ci08c2NyaXB0IHNyYz0icmVzb3VyY2VzL2ZpbGUtd3JpdGVyLWVtcHR5LWJsb2IuanMiPjwvc2Ny
aXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgotPC9ib2R5PgotPC9odG1sPgotCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0
ZW0vZmlsZS13cml0ZXItZXZlbnRzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZS13cml0ZXItZXZlbnRzLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGUtd3JpdGVy
LWV2ZW50cy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMTAgKzAsMCBAQAotVGVz
dCB0aGF0IEZpbGVXcml0ZXIgcHJvZHVjZXMgcHJvcGVyIHByb2dyZXNzIGV2ZW50cy4KLQotT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgotCi1zdGFydGluZyB0ZXN0Ci1QQVNTIFNhdyBhbGwgdGhl
IHJpZ2h0IGV2ZW50cy4KLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBD
T01QTEVURQotCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZS13cml0ZXIt
ZXZlbnRzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2Zp
bGUtd3JpdGVyLWV2ZW50cy5odG1sCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2ZpbGVzeXN0ZW0vZmlsZS13cml0ZXItZXZlbnRzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTEsMTUgKzAsMCBAQAotPCFET0NUWVBFIEhUTUw+Ci08aHRtbD4KLSA8aGVhZD4KLSAgICA8dGl0
bGU+RmlsZSBXcml0ZXIgRXZlbnRzPC90aXRsZT4KLSAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL2ZpbGUtd3JpdGVyLXV0aWxzLmpzIj48L3NjcmlwdD4KLSA8L2hlYWQ+Ci0gPGJvZHk+Ci0g
ICAgPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgotICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgotICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZmlsZS13cml0ZXItZXZlbnRzLmpzIj48
L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Ci0gPC9ib2R5PgotPC9odG1sPgotCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2ZpbGVzeXN0ZW0vZmlsZS13cml0ZXItZ2MtYmxvYi1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGUtd3JpdGVyLWdjLWJsb2ItZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0v
ZmlsZS13cml0ZXItZ2MtYmxvYi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMTAg
KzAsMCBAQAotVGVzdCB0aGF0IGEgYmxvYiB3b24ndCBnZXQgZ2FyYmFnZS1jb2xsZWN0ZWQgd2hp
bGUgYmVpbmcgd3JpdHRlbiBvdXQgYnkgYSBGaWxlV3JpdGVyLgotCi1PbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCi0KLXN0YXJ0aW5nIHRlc3QKLVBBU1MgU3VjY2Vzc2Z1bGx5IHdyb3RlIGJsb2Iu
Ci1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGUtd3JpdGVyLWdjLWJsb2IuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZS13cml0ZXItZ2Mt
YmxvYi5odG1sCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0
ZW0vZmlsZS13cml0ZXItZ2MtYmxvYi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE0ICswLDAg
QEAKLTwhRE9DVFlQRSBIVE1MPgotPGh0bWw+Ci0gPGhlYWQ+Ci0gICAgPHRpdGxlPkZpbGUgV3Jp
dGVyIEdDIEJsb2I8L3RpdGxlPgotICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZmlsZS13
cml0ZXItdXRpbHMuanMiPjwvc2NyaXB0PgotIDwvaGVhZD4KLSA8Ym9keT4KLSAgICA8ZGl2IGlk
PSJkZXNjcmlwdGlvbiI+PC9kaXY+Ci0gICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Ci0gICAg
PHNjcmlwdCBzcmM9InJlc291cmNlcy9maWxlLXdyaXRlci1nYy1ibG9iLmpzIj48L3NjcmlwdD4K
LSAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+Ci0gPC9ib2R5PgotPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVt
L2ZpbGUtd3JpdGVyLXRydW5jYXRlLWV4dGVuZC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGUtd3JpdGVyLXRydW5jYXRlLWV4dGVuZC1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5
c3RlbS9maWxlLXdyaXRlci10cnVuY2F0ZS1leHRlbmQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC0xLDEwICswLDAgQEAKLVRlc3Qgb2YgZXh0ZW5kaW5nIGEgZmlsZSB1c2luZyB0cnVu
Y2F0ZSgpLgotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLXN0YXJ0aW5nIHRlc3QKLVBB
U1MgVHJ1bmNhdGUgZXh0ZW5zaW9uIHZlcmlmaWVkLgotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5
c3RlbS9maWxlLXdyaXRlci10cnVuY2F0ZS1leHRlbmQuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZS13cml0ZXItdHJ1bmNhdGUtZXh0ZW5kLmh0bWwJ
KHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9maWxlLXdy
aXRlci10cnVuY2F0ZS1leHRlbmQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxNiArMCwwIEBA
Ci08IURPQ1RZUEUgSFRNTD4KLTxodG1sPgotIDxoZWFkPgotICAgIDx0aXRsZT5GaWxlIFdyaXRl
ciBUcnVuY2F0ZS1Uby1FeHRlbmQ8L3RpdGxlPgotICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvZmlsZS13cml0ZXItdXRpbHMuanMiPjwvc2NyaXB0PgotIDwvaGVhZD4KLSA8Ym9keT4KLSAg
ICA8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Ci0gICAgPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Ci0gICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9maWxlLXdyaXRlci10cnVuY2F0ZS1leHRl
bmQuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KLSA8L2JvZHk+Ci08L2h0bWw+Ci0KLQpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGUtd3JpdGVyLXdyaXRlLW92ZXJsYXBwZWQtZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9maWxlLXdy
aXRlci13cml0ZS1vdmVybGFwcGVkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTU2NjkxKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGUtd3JpdGVyLXdyaXRlLW92ZXJsYXBwZWQt
ZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDEzICswLDAgQEAKLVRlc3QgdXNpbmcg
RmlsZVdyaXRlci5zZWVrIHRvIHdyaXRlIG92ZXJsYXBwaW5nIGV4aXN0aW5nIGRhdGEgaW4gYSBm
aWxlLgotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLXN0YXJ0aW5nIHRlc3QKLVBBU1Mg
TmVnYXRpdmUgc2VlayB2YWxpZGF0ZWQuCi1QQVNTIFBvc2l0aXZlIHNlZWsgdmFsaWRhdGVkLgot
UEFTUyBOb25leHRlbmRpbmcgd3JpdGUgdmFsaWRhdGVkLgotUEFTUyBBbGwgd3JpdGVzIHZlcmlm
aWVkLgotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0K
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9maWxlLXdyaXRlci13cml0ZS1vdmVy
bGFwcGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2Zp
bGUtd3JpdGVyLXdyaXRlLW92ZXJsYXBwZWQuaHRtbAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGUtd3JpdGVyLXdyaXRlLW92ZXJsYXBwZWQuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMSwxNCArMCwwIEBACi08IURPQ1RZUEUgSFRNTD4KLTxodG1s
PgotIDxoZWFkPgotICAgIDx0aXRsZT5GaWxlIFdyaXRlciBXcml0ZSBPdmVybGFwcGVkPC90aXRs
ZT4KLSAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KLSAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2ZpbGUtd3JpdGVyLXV0aWxzLmpzIj48
L3NjcmlwdD4KLSA8L2hlYWQ+Ci0gPGJvZHk+Ci0gICAgPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwv
ZGl2PgotICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgotICAgIDxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvZmlsZS13cml0ZXItd3JpdGUtb3ZlcmxhcHBlZC5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotIDwv
Ym9keT4KLTwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9maWxlc3lz
dGVtLW1pc3NpbmctYXJndW1lbnRzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZXN5c3RlbS1taXNzaW5nLWFyZ3VtZW50cy1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9m
aWxlc3lzdGVtLW1pc3NpbmctYXJndW1lbnRzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMSwxMiArMCwwIEBACi1UZXN0IGhvdyBmaWxlIHN5c3RlbSBtZXRob2RzIHJlYWN0IHRvIHRv
byBmZXcgYXJndW1lbnRzLgotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLQotUEFTUyB3
ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbSgpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBl
bm91Z2ggYXJndW1lbnRzLgotUEFTUyB3ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbShURU1QT1JBUlkp
IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzLgotUEFTUyB3
ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lzdGVtVVJMKCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJv
cjogTm90IGVub3VnaCBhcmd1bWVudHMuCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
Ci0KLVRFU1QgQ09NUExFVEUKLQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2Zp
bGVzeXN0ZW0tbWlzc2luZy1hcmd1bWVudHMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZXN5c3RlbS1taXNzaW5nLWFyZ3VtZW50cy5odG1sCShyZXZp
c2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZXN5c3RlbS1t
aXNzaW5nLWFyZ3VtZW50cy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE1ICswLDAgQEAKLTwh
RE9DVFlQRSBIVE1MPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0Pgot
ZGVzY3JpcHRpb24oJ1Rlc3QgaG93IGZpbGUgc3lzdGVtIG1ldGhvZHMgcmVhY3QgdG8gdG9vIGZl
dyBhcmd1bWVudHMuJyk7Ci1zaG91bGRUaHJvdygid2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0oKSIp
Owotc2hvdWxkVGhyb3coIndlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKFRFTVBPUkFSWSkiKTsKLXNo
b3VsZFRocm93KCJ3ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lzdGVtVVJMKCkiKTsKLTwvc2NyaXB0
PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgotPC9ib2R5PgotPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2Zp
bGVzeXN0ZW0tbm8tY2FsbGJhY2stbnVsbC1wdHItY3Jhc2gtZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9maWxlc3lzdGVtLW5vLWNhbGxiYWNr
LW51bGwtcHRyLWNyYXNoLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGVzeXN0ZW0tbm8tY2FsbGJhY2stbnVsbC1wdHItY3Jh
c2gtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xICswLDAgQEAKLVBBU1MKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9maWxlc3lzdGVtLW5vLWNhbGxiYWNrLW51bGwt
cHRyLWNyYXNoLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVt
L2ZpbGVzeXN0ZW0tbm8tY2FsbGJhY2stbnVsbC1wdHItY3Jhc2guaHRtbAkocmV2aXNpb24gMTU2
NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGVzeXN0ZW0tbm8tY2FsbGJh
Y2stbnVsbC1wdHItY3Jhc2guaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxOSArMCwwIEBACi08
IS0tCi0gIGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lk
PTYzMjA0Ci0gIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00OTUzOQot
LS0+Ci08ZGl2IGlkPSJsb2ciPkZBSUw8L2Rpdj4KLTxzY3JpcHQ+Ci0gIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKLSAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotICBpZiAod2luZG93Lndl
YmtpdFJlcXVlc3RGaWxlU3lzdGVtKSB7Ci0gICAgICAvLyBUaGVzZSB0d28gY2FsbHMgc2hvdWxk
IHRocm93IGFuIGV4Y2VwdGlvbiBidXQgc2hvdWxkIE5PVCBjYXVzZSBhIE5VTEwgcG9pbnRlciBj
cmFzaDoKLSAgICAgIHdlYmtpdFJlc29sdmVMb2NhbEZpbGVTeXN0ZW1VUkwoJycsIGZ1bmN0aW9u
KCkge30pOwotICAgICAgdHJ5IHsKLSAgICAgICAgICB3ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbShU
RU1QT1JBUlksIDEwMCk7Ci0gICAgICB9Ci0gICAgICBjYXRjaChlKSB7Ci0gICAgICAgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xvZycpLmlubmVySFRNTCA9ICJQQVNTIjsKLSAgICAgIH0K
LSAgfQotPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZXN5
c3RlbS1yZWZlcmVuY2UtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZmlsZXN5c3RlbS9maWxlc3lzdGVtLXJlZmVyZW5jZS1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9maWxlc3lzdGVtLXJlZmVy
ZW5jZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMTQgKzAsMCBAQAotVGhpcyB0
ZXN0cyBpZiBFbnRyaWVzIHJldHVybmVkIGJ5IGNhbGxiYWNrcyBrZWVwIGZ1bmN0aW9uaW5nIGV2
ZW4gYWZ0ZXIgd2UgbG9zZSBhIHJlZmVyZW5jZSB0byB0aGUgZmlsZXN5c3RlbSBpbiB0aGUgc2Ny
aXB0LgotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLQotUnVubmluZyBydW5UZXN0MSgp
Li4uCi1SdW5uaW5nIHJ1blRlc3QyKCkuLi4KLVJ1bm5pbmcgcnVuVGVzdDMoKS4uLgotUnVubmlu
ZyBydW5UZXN0NCgpLi4uCi1QQVNTIHRlc3RFbnRyaWVzLmxlbmd0aCBpcyA0Ci1QQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9maWxlc3lzdGVtL2ZpbGVzeXN0ZW0tcmVmZXJlbmNlLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGVzeXN0ZW0tcmVmZXJlbmNlLmh0bWwJ
KHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9maWxlc3lz
dGVtLXJlZmVyZW5jZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEwICswLDAgQEAKLTxodG1s
PgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZnMtdGVzdC11dGlsLmpzIj48L3Njcmlw
dD4KLTwvaGVhZD4KLTxib2R5PgotPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9maWxlc3lzdGVt
LXJlZmVyZW5jZS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZXN5c3RlbS11bnNlcmlhbGl6YWJsZS1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGVzeXN0ZW0t
dW5zZXJpYWxpemFibGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZXN5c3RlbS11bnNlcmlhbGl6YWJsZS1leHBlY3RlZC50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMTAgKzAsMCBAQAotVGhpcyB0ZXN0cyBpZiB0aGUgZmls
ZXN5c3RlbSBvYmplY3QgaXMgdW5zZXJpYWxpemFibGUgYnkgZGVmYXVsdAotCi1PbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCi0KLQotRGF0YUNsb25lRXJyb3I6IERPTSBFeGNlcHRpb24gMjUKLVBB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZXN5c3RlbS11bnNlcmlhbGl6YWJsZS5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9maWxlc3lzdGVtLXVu
c2VyaWFsaXphYmxlLmh0bWwJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3Qv
ZmlsZXN5c3RlbS9maWxlc3lzdGVtLXVuc2VyaWFsaXphYmxlLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTEsMTAgKzAsMCBAQAotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InJlc291cmNlcy9m
cy10ZXN0LXV0aWwuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0IHNyYz0i
c2NyaXB0LXRlc3RzL2ZpbGVzeXN0ZW0tdW5zZXJpYWxpemFibGUuanMiPjwvc2NyaXB0PgotPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9i
b2R5PgotPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGVzeXN0
ZW0tdXJpLW9yaWdpbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9maWxlc3lzdGVtL2ZpbGVzeXN0ZW0tdXJpLW9yaWdpbi1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9maWxlc3lzdGVtLXVyaS1v
cmlnaW4tZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xICswLDAgQEAKLVBBU1NFRDog
b3JpZ2luIHdhcyBodHRwOi8vd3d3LndlYmtpdC5vcmc6ODA4MApJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9maWxlc3lzdGVtL2ZpbGVzeXN0ZW0tdXJpLW9yaWdpbi5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9maWxlc3lzdGVtLXVyaS1vcmlnaW4uaHRtbAko
cmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGVzeXN0
ZW0tdXJpLW9yaWdpbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEzICswLDAgQEAKLTxhIHN0
eWxlPSJkaXNwbGF5Om5vbmUiIGhyZWY9ImZpbGVzeXN0ZW06aHR0cDovL3d3dy53ZWJraXQub3Jn
OjgwODAvdGVtcG9yYXJ5L2EvYi9jL2ZpbGUudHh0Ij5mb288L2E+Ci08cD5UaGlzIHRleHQgc2hv
dWxkIG5vdCBiZSB2aXNpYmxlLiBJdCBzaG91bGQgYmUgb3ZlcndyaXR0ZW4gYnkgdGhlIHJ1bm5p
bmcgb2YgdGhlIHRlc3QuPC9wPgotPHNjcmlwdD4KLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
Ci0gICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotICAgIHZhciBleHBlY3RlZE9yaWdp
biA9ICdodHRwOi8vd3d3LndlYmtpdC5vcmc6ODA4MCc7Ci0gICAgdmFyIGFjdHVhbE9yaWdpbiA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdhJylbMF0ub3JpZ2luOwotICAgIHZhciBy
ZXN1bHRFbHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgncCcpWzBdOwotICAgIGlm
IChhY3R1YWxPcmlnaW4gPT0gZXhwZWN0ZWRPcmlnaW4pCi0gICAgICAgIHJlc3VsdEVsdC5pbm5l
clRleHQgPSAnUEFTU0VEOiBvcmlnaW4gd2FzICcgKyBleHBlY3RlZE9yaWdpbjsKLSAgICBlbHNl
Ci0gICAgICAgIHJlc3VsdEVsdC5pbm5lclRleHQgPSAnRkFJTEVEOiBleHBlY3RlZCBvcmlnaW46
ICcgKyBleHBlY3RlZE9yaWdpbiArICcgYnV0IGdvdDogJyArIGFjdHVhbE9yaWdpbjsKLTwvc2Ny
aXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZsYWdzLXBhc3NpbmctZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9mbGFn
cy1wYXNzaW5nLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9maWxlc3lzdGVtL2ZsYWdzLXBhc3NpbmctZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC0xLDE3ICswLDAgQEAKLVBhc3NpbmcgRmxhZ3MgcGFyYW1ldGVyIHRlc3RzLiBUaGlzIHRl
c3QgY2hlY2tzIGlmIHBhc3NpbmcgRmxhZ3MgcGFyYW1ldGVycyB0byBEaXJlY3RvcnlFbnRyeS5n
ZXRGaWxlIGRvZXMgbm90IGNyYXNoIGFuZCB3b3JrcyBhcyBleHBlY3RlZC4KLQotT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgotCi0KLSogUGFzc2luZyBKU09OIEZsYWdzIG9iamVjdC4KLSogUGFz
c2luZyBKU09OIEZsYWdzIG9iamVjdCAod2l0aCBleGNsdXNpdmU9dHJ1ZSkuCi0qIFBhc3Npbmcg
bnVsbCBhcyBhIGZsYWdzIHBhcmFtZXRlci4KLSogUGFzc2luZyBhIG51bWJlciBhcyBhIGZsYWdz
IHBhcmFtZXRlci4KLUNhdWdodCBleGNlcHRpb246IFR5cGVFcnJvcjogTm90IGFuIG9iamVjdC4K
LUZpbmlzaGVkIHJ1bm5pbmcgdGVzdHMuCi1QQVNTIGV4cGVjdGVkQ2FsbGJhY2tzQ291bnQgaXMg
MQotUEFTUyB1bmV4cGVjdGVkQ2FsbGJhY2tzQ291bnQgaXMgMAotUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
ZmlsZXN5c3RlbS9mbGFncy1wYXNzaW5nLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9maWxlc3lzdGVtL2ZsYWdzLXBhc3NpbmcuaHRtbAkocmV2aXNpb24gMTU2NjkxKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZsYWdzLXBhc3NpbmcuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMSwxMCArMCwwIEBACi08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL2ZzLXRlc3QtdXRpbC5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQg
c3JjPSJzY3JpcHQtdGVzdHMvZmxhZ3MtcGFzc2luZy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08
L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vaW5wdXQtYWNjZXNzLWVu
dHJpZXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5
c3RlbS9pbnB1dC1hY2Nlc3MtZW50cmllcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE1NjY5MSkK
KysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9pbnB1dC1hY2Nlc3MtZW50cmllcy1leHBl
Y3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMTAgKzAsMCBAQAotVGVzdHMgYWNjZXNzaW5n
IHdlYmtpdEVudHJpZXMgZG9lcyBub3QgY3Jhc2ggd2hlbiBpbnB1dCB0eXBlIGlzIG5vdCBmaWxl
Ci0KLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQotCi1QQVNTIGlucHV0LndlYmtpdEVudHJp
ZXMubGVuZ3RoIGlzIDAKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBD
T01QTEVURQotCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vaW5wdXQtYWNjZXNz
LWVudHJpZXMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0v
aW5wdXQtYWNjZXNzLWVudHJpZXMuaHRtbAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9maWxlc3lzdGVtL2lucHV0LWFjY2Vzcy1lbnRyaWVzLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMTUgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxib2R5PgotPGlu
cHV0IG5hbWU9ImlucHV0IiBpZD0iaW5wdXQiPjwvaW5wdXQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1kZXNjcmlwdGlv
bignVGVzdHMgYWNjZXNzaW5nIHdlYmtpdEVudHJpZXMgZG9lcyBub3QgY3Jhc2ggd2hlbiBpbnB1
dCB0eXBlIGlzIG5vdCBmaWxlJyk7Ci0KLXZhciBpbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdpbnB1dCcpOwotc2hvdWxkRXZhbHVhdGVUbygnaW5wdXQud2Via2l0RW50cmllcy5sZW5n
dGgnLCAwKTsKLQotPC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2ZpbGVzeXN0ZW0vbm90LWVub3VnaC1hcmd1bWVudHMtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9ub3QtZW5vdWdoLWFyZ3VtZW50
cy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmls
ZXN5c3RlbS9ub3QtZW5vdWdoLWFyZ3VtZW50cy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTEsMjQgKzAsMCBAQAotVGhpcyB0ZXN0IHRyaWVzIGNhbGxpbmcgdmFyaW91cyBmaWxlc3lz
dGVtIGZ1bmN0aW9ucyB3aXRoIHRvbyBmZXcgYXJndW1lbnRzLgotCi1PbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCi0KLQotUEFTUyB3ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lzdGVtVVJMKCkgdGhy
ZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMuCi1QQVNTIHdlYmtp
dFJlcXVlc3RGaWxlU3lzdGVtKCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90IGVub3Vn
aCBhcmd1bWVudHMuCi1QQVNTIHdlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKFBFUlNJU1RFTlQpIHRo
cmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzLgotUEFTUyB3ZWJr
aXRSZXF1ZXN0RmlsZVN5c3RlbShQRVJTSVNURU5ULCAxMDApIHRocmV3IGV4Y2VwdGlvbiBUeXBl
RXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzLgotU3VjY2Vzc2Z1bGx5IG9idGFpbmVkIFBlcnNp
c3RlbnQgRmlsZVN5c3RlbTpmaWxlX18wOlRlbXBvcmFyeQotUEFTUyBmaWxlU3lzdGVtLnJvb3Qu
cmVtb3ZlUmVjdXJzaXZlbHkoKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBOb3QgZW5vdWdo
IGFyZ3VtZW50cy4KLVBBU1MgZmlsZVN5c3RlbS5yb290Lm1vdmVUbygpIHRocmV3IGV4Y2VwdGlv
biBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzLgotUEFTUyBmaWxlU3lzdGVtLnJvb3Qu
Y29weVRvKCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMu
Ci1QQVNTIHJlYWRlci5yZWFkRW50cmllcygpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5v
dCBlbm91Z2ggYXJndW1lbnRzLgotUEFTUyBlbnRyaWVzLml0ZW0oKSB0aHJldyBleGNlcHRpb24g
VHlwZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cy4KLVBBU1MgZW50cnkuY3JlYXRlV3JpdGVy
KCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMuCi1QQVNT
IGVudHJ5LmZpbGUoKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3Vt
ZW50cy4KLVBBU1Mgd3JpdGVyLndyaXRlKCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90
IGVub3VnaCBhcmd1bWVudHMuCi1QQVNTIHdyaXRlci5zZWVrKCkgdGhyZXcgZXhjZXB0aW9uIFR5
cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMuCi1QQVNTIHdyaXRlci50cnVuY2F0ZSgpIHRo
cmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzLgotUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZmlsZXN5c3RlbS9ub3QtZW5vdWdoLWFyZ3VtZW50cy5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9ub3QtZW5vdWdoLWFyZ3VtZW50cy5odG1s
CShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vbm90LWVu
b3VnaC1hcmd1bWVudHMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw2MSArMCwwIEBACi08aHRt
bD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0icmVzb3VyY2VzL2ZzLXRlc3QtdXRpbC5qcyI+PC9zY3Jp
cHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQ+Ci1kZXNjcmlwdGlvbignVGhpcyB0ZXN0IHRy
aWVzIGNhbGxpbmcgdmFyaW91cyBmaWxlc3lzdGVtIGZ1bmN0aW9ucyB3aXRoIHRvbyBmZXcgYXJn
dW1lbnRzLicpOwotCi1mdW5jdGlvbiBlcnJvckNhbGxiYWNrKGVycm9yKQotewotICAgIGRlYnVn
KCJFcnJvciBvY2N1cmVkOiIgKyBlcnJvci5jb2RlKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0K
LQotZnVuY3Rpb24gc3VjY2Vzc0NhbGxiYWNrKGZzKQotewotICAgIGZpbGVTeXN0ZW0gPSBmczsK
LSAgICBkZWJ1ZygiU3VjY2Vzc2Z1bGx5IG9idGFpbmVkIFBlcnNpc3RlbnQgRmlsZVN5c3RlbToi
ICsgZmlsZVN5c3RlbS5uYW1lKTsKLQotICAgIHNob3VsZFRocm93KCJmaWxlU3lzdGVtLnJvb3Qu
cmVtb3ZlUmVjdXJzaXZlbHkoKSIpOwotICAgIHNob3VsZFRocm93KCJmaWxlU3lzdGVtLnJvb3Qu
bW92ZVRvKCkiKTsKLSAgICBzaG91bGRUaHJvdygiZmlsZVN5c3RlbS5yb290LmNvcHlUbygpIik7
Ci0gICAgcmVhZGVyID0gZmlsZVN5c3RlbS5yb290LmNyZWF0ZVJlYWRlcigpOwotICAgIHNob3Vs
ZFRocm93KCJyZWFkZXIucmVhZEVudHJpZXMoKSIpOwotCi0gICAgcmVhZGVyLnJlYWRFbnRyaWVz
KGZ1bmN0aW9uKGVudHJpZXMpIHsKLSAgICAgICAgd2luZG93LmVudHJpZXMgPSBlbnRyaWVzOwot
ICAgICAgICBzaG91bGRUaHJvdygiZW50cmllcy5pdGVtKCkiKTsKLQotICAgICAgICBmaWxlU3lz
dGVtLnJvb3QuZ2V0RmlsZSgiL3Rlc3QiLCB7IGNyZWF0ZTogdHJ1ZSB9LCBmdW5jdGlvbihlbnRy
eSkgewotICAgICAgICAgICAgd2luZG93LmVudHJ5ID0gZW50cnk7Ci0gICAgICAgICAgICBzaG91
bGRUaHJvdygiZW50cnkuY3JlYXRlV3JpdGVyKCkiKTsKLSAgICAgICAgICAgIHNob3VsZFRocm93
KCJlbnRyeS5maWxlKCkiKTsKLQotICAgICAgICAgICAgZW50cnkuY3JlYXRlV3JpdGVyKGZ1bmN0
aW9uKHdyaXRlcikgewotICAgICAgICAgICAgICAgIHdpbmRvdy53cml0ZXIgPSB3cml0ZXI7Ci0K
LSAgICAgICAgICAgICAgICBzaG91bGRUaHJvdygid3JpdGVyLndyaXRlKCkiKTsKLSAgICAgICAg
ICAgICAgICBzaG91bGRUaHJvdygid3JpdGVyLnNlZWsoKSIpOwotICAgICAgICAgICAgICAgIHNo
b3VsZFRocm93KCJ3cml0ZXIudHJ1bmNhdGUoKSIpOwotCi0gICAgICAgICAgICAgICAgZmluaXNo
SlNUZXN0KCk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfSk7Ci0gICAgfSk7Ci19Ci0KLWlm
ICh3aW5kb3cud2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0pIHsKLSAgICBzaG91bGRUaHJvdygid2Vi
a2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVVSTCgpIik7Ci0gICAgc2hvdWxkVGhyb3coIndlYmtp
dFJlcXVlc3RGaWxlU3lzdGVtKCkiKTsKLSAgICBzaG91bGRUaHJvdygid2Via2l0UmVxdWVzdEZp
bGVTeXN0ZW0oUEVSU0lTVEVOVCkiKTsKLSAgICBzaG91bGRUaHJvdygid2Via2l0UmVxdWVzdEZp
bGVTeXN0ZW0oUEVSU0lTVEVOVCwgMTAwKSIpOwotICAgIHdlYmtpdFJlcXVlc3RGaWxlU3lzdGVt
KHdpbmRvdy5URU1QT1JBUlksIDEwMCwgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsK
LSAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Ci19IGVsc2UKLSAgICBkZWJ1ZygiVGhp
cyB0ZXN0IHJlcXVpcmVzIEZpbGVTeXN0ZW0gQVBJIHN1cHBvcnQuIik7Ci08L3NjcmlwdD4KLTxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwv
Ym9keT4KLTwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9vcC1jb3B5
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0v
b3AtY29weS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zh
c3QvZmlsZXN5c3RlbS9vcC1jb3B5LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw4
OCArMCwwIEBACi0qIFJ1bm5pbmc6IENvcHlGaWxlU2ltcGxlCi1QQVNTIFN1Y2NlZWRlZDogIi9h
L2IiLmNvcHlUbygiL2EiLCAiYyIpCi1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDov
YSBuYW1lOmEgdHlwZTpESVJFQ1RPUll9Ci1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0
aDovYS9iIG5hbWU6YiB0eXBlOkZJTEV9Ci1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0
aDovYS9jIG5hbWU6YyB0eXBlOkZJTEV9Ci0qIFJ1bm5pbmc6IENvcHlEaXJlY3RvcnlTaW1wbGUK
LVBBU1MgU3VjY2VlZGVkOiAiL2EvYiIuY29weVRvKCIvYSIsICJjIikKLVBBU1MgVmVyaWZpZWQg
ZW50cnk6IEVOVFJZIHtwYXRoOi9hIG5hbWU6YSB0eXBlOkRJUkVDVE9SWX0KLVBBU1MgVmVyaWZp
ZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9hL2IgbmFtZTpiIHR5cGU6RElSRUNUT1JZfQotUEFTUyBW
ZXJpZmllZCBlbnRyeTogRU5UUlkge3BhdGg6L2EvYyBuYW1lOmMgdHlwZTpESVJFQ1RPUll9Ci0q
IFJ1bm5pbmc6IENvcHlGaWxlVG9EaWZmZXJlbnREaXJlY3RvcnkKLVBBU1MgU3VjY2VlZGVkOiAi
L2EvYiIuY29weVRvKCIvYyIsICJkIikKLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRo
Oi9hIG5hbWU6YSB0eXBlOkRJUkVDVE9SWX0KLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtw
YXRoOi9hL2IgbmFtZTpiIHR5cGU6RklMRX0KLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtw
YXRoOi9jL2QgbmFtZTpkIHR5cGU6RklMRX0KLSogUnVubmluZzogQ29weUZpbGVXaXRoRW1wdHlO
YW1lCi1QQVNTIFN1Y2NlZWRlZDogIi9hL2IiLmNvcHlUbygiL2MiLCAibnVsbCIpCi1QQVNTIFZl
cmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYSBuYW1lOmEgdHlwZTpESVJFQ1RPUll9Ci1QQVNT
IFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYS9iIG5hbWU6YiB0eXBlOkZJTEV9Ci1QQVNT
IFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYy9iIG5hbWU6YiB0eXBlOkZJTEV9Ci0qIFJ1
bm5pbmc6IENvcHlGaWxlV2l0aEVtcHR5TmFtZVRvU2FtZURpcmVjdG9yeQotUEFTUyB0aGlzLmV4
cGVjdGVkRXJyb3JDb2RlICsgIiIgaXMgIjkiCi1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7
cGF0aDovYSBuYW1lOmEgdHlwZTpESVJFQ1RPUll9Ci1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRS
WSB7cGF0aDovYS9iIG5hbWU6YiB0eXBlOkZJTEV9Ci0qIFJ1bm5pbmc6IENvcHlGaWxlV2l0aFNh
bWVOYW1lCi1QQVNTIHRoaXMuZXhwZWN0ZWRFcnJvckNvZGUgKyAiIiBpcyAiOSIKLVBBU1MgVmVy
aWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9hIG5hbWU6YSB0eXBlOkRJUkVDVE9SWX0KLVBBU1Mg
VmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9hL2IgbmFtZTpiIHR5cGU6RklMRX0KLSogUnVu
bmluZzogQ29weUZvck5vbkV4aXN0ZW50RW50cnkKLVBBU1MgU3VjY2VlZGVkOiAiL2EvYiIucmVt
b3ZlKCkKLVBBU1MgdGhpcy5leHBlY3RlZEVycm9yQ29kZSArICIiIGlzICIxIgotUEFTUyBWZXJp
ZmllZCBlbnRyeTogRU5UUlkge3BhdGg6L2EgbmFtZTphIHR5cGU6RElSRUNUT1JZfQotUEFTUyBW
ZXJpZmllZCBlbnRyeTogRU5UUlkge3BhdGg6L2MgbmFtZTpjIHR5cGU6RElSRUNUT1JZfQotKiBS
dW5uaW5nOiBDb3B5RW50cnlUb05vbkV4aXN0ZW50RGlyZWN0b3J5Ci1QQVNTIFN1Y2NlZWRlZDog
Ii9jIi5yZW1vdmUoKQotUEFTUyB0aGlzLmV4cGVjdGVkRXJyb3JDb2RlICsgIiIgaXMgIjEiCi1Q
QVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYSBuYW1lOmEgdHlwZTpESVJFQ1RPUll9
Ci1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYS9iIG5hbWU6YiB0eXBlOkZJTEV9
Ci0qIFJ1bm5pbmc6IENvcHlFbnRyeVRvSXRzQ2hpbGQKLVBBU1MgdGhpcy5leHBlY3RlZEVycm9y
Q29kZSArICIiIGlzICI5IgotUEFTUyB0aGlzLmV4cGVjdGVkRXJyb3JDb2RlICsgIiIgaXMgIjki
Ci1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYSBuYW1lOmEgdHlwZTpESVJFQ1RP
Ull9Ci1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYS9iIG5hbWU6YiB0eXBlOkRJ
UkVDVE9SWX0KLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9hL2IvYyBuYW1lOmMg
dHlwZTpESVJFQ1RPUll9Ci0qIFJ1bm5pbmc6IENvcHlSZWN1cnNpdmUKLVBBU1MgU3VjY2VlZGVk
OiAiL2EiLmNvcHlUbygiL2IiLCAiYSIpCi1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0
aDovYSBuYW1lOmEgdHlwZTpESVJFQ1RPUll9Ci1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7
cGF0aDovYS9iIG5hbWU6YiB0eXBlOkRJUkVDVE9SWX0KLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVO
VFJZIHtwYXRoOi9hL2IvYyBuYW1lOmMgdHlwZTpGSUxFfQotUEFTUyBWZXJpZmllZCBlbnRyeTog
RU5UUlkge3BhdGg6L2EvYi9kIG5hbWU6ZCB0eXBlOkZJTEV9Ci1QQVNTIFZlcmlmaWVkIGVudHJ5
OiBFTlRSWSB7cGF0aDovYi9hIG5hbWU6YSB0eXBlOkRJUkVDVE9SWX0KLVBBU1MgVmVyaWZpZWQg
ZW50cnk6IEVOVFJZIHtwYXRoOi9iL2EvYiBuYW1lOmIgdHlwZTpESVJFQ1RPUll9Ci1QQVNTIFZl
cmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYi9hL2IvYyBuYW1lOmMgdHlwZTpGSUxFfQotUEFT
UyBWZXJpZmllZCBlbnRyeTogRU5UUlkge3BhdGg6L2IvYS9iL2QgbmFtZTpkIHR5cGU6RklMRX0K
LSogUnVubmluZzogT3ZlcndyaXRpbmdDb3B5RmlsZVRvRmlsZQotUEFTUyBTdWNjZWVkZWQ6ICIv
YSIuY29weVRvKCIvIiwgImIiKQotUEFTUyBWZXJpZmllZCBlbnRyeTogRU5UUlkge3BhdGg6L2Eg
bmFtZTphIHR5cGU6RklMRX0KLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9iIG5h
bWU6YiB0eXBlOkZJTEV9Ci0qIFJ1bm5pbmc6IE92ZXJ3cml0aW5nQ29weURpcmVjdG9yeVRvRW1w
dHlEaXJlY3RvcnkKLVBBU1MgU3VjY2VlZGVkOiAiL2EiLmNvcHlUbygiLyIsICJjIikKLVBBU1Mg
VmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9hIG5hbWU6YSB0eXBlOkRJUkVDVE9SWX0KLVBB
U1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9hL2IgbmFtZTpiIHR5cGU6RklMRX0KLVBB
U1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9jIG5hbWU6YyB0eXBlOkRJUkVDVE9SWX0K
LVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9jL2IgbmFtZTpiIHR5cGU6RklMRX0K
LSogUnVubmluZzogT3ZlcndyaXRpbmdDb3B5RmlsZVRvRGlyZWN0b3J5Ci1QQVNTIHRoaXMuZXhw
ZWN0ZWRFcnJvckNvZGUgKyAiIiBpcyAiOSIKLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtw
YXRoOi9hIG5hbWU6YSB0eXBlOkZJTEV9Ci1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0
aDovYiBuYW1lOmIgdHlwZTpESVJFQ1RPUll9Ci0qIFJ1bm5pbmc6IE92ZXJ3cml0aW5nQ29weURp
cmVjdG9yeVRvRmlsZQotUEFTUyB0aGlzLmV4cGVjdGVkRXJyb3JDb2RlICsgIiIgaXMgIjkiCi1Q
QVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYSBuYW1lOmEgdHlwZTpESVJFQ1RPUll9
Ci1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYiBuYW1lOmIgdHlwZTpGSUxFfQot
KiBSdW5uaW5nOiBPdmVyd3JpdGluZ0NvcHlGaWxlVG9Ob25lbXB0eURpcmVjdG9yeQotUEFTUyB0
aGlzLmV4cGVjdGVkRXJyb3JDb2RlICsgIiIgaXMgIjkiCi1QQVNTIFZlcmlmaWVkIGVudHJ5OiBF
TlRSWSB7cGF0aDovYSBuYW1lOmEgdHlwZTpGSUxFfQotUEFTUyBWZXJpZmllZCBlbnRyeTogRU5U
Ulkge3BhdGg6L2IgbmFtZTpiIHR5cGU6RElSRUNUT1JZfQotUEFTUyBWZXJpZmllZCBlbnRyeTog
RU5UUlkge3BhdGg6L2IvYyBuYW1lOmMgdHlwZTpGSUxFfQotKiBSdW5uaW5nOiBPdmVyd3JpdGlu
Z0NvcHlEaXJlY3RvcnlUb05vbmVtcHR5RGlyZWN0b3J5Ci1QQVNTIHRoaXMuZXhwZWN0ZWRFcnJv
ckNvZGUgKyAiIiBpcyAiOSIKLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9hIG5h
bWU6YSB0eXBlOkRJUkVDVE9SWX0KLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9h
L2IgbmFtZTpiIHR5cGU6RklMRX0KLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9j
IG5hbWU6YyB0eXBlOkRJUkVDVE9SWX0KLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRo
Oi9jL2QgbmFtZTpkIHR5cGU6RklMRX0KLUZpbmlzaGVkIHJ1bm5pbmcgdGVzdHMuCi1QQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9maWxlc3lzdGVtL29wLWNvcHkuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vb3AtY29weS5odG1sCShyZXZpc2lvbiAxNTY2OTEpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vb3AtY29weS5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDEyICswLDAgQEAKLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZnMt
dGVzdC11dGlsLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+Ci08c2NyaXB0IHNyYz0icmVzb3VyY2VzL29wLWNvcHkuanMiPjwvc2NyaXB0Pgot
PHNjcmlwdCBzcmM9InJlc291cmNlcy9vcC10ZXN0cy1oZWxwZXIuanMiPjwvc2NyaXB0PgotPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9i
b2R5PgotPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL29wLWdldC1l
bnRyeS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lz
dGVtL29wLWdldC1lbnRyeS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91
dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9vcC1nZXQtZW50cnktZXhwZWN0ZWQudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC0xLDkxICswLDAgQEAKLSogUnVubmluZzogQ3JlYXRlU2ltcGxlCi1QQVNTIFN1
Y2NlZWRlZDogIi8iLmdldERpcmVjdG9yeSgiYSIpCi1QQVNTIFN1Y2NlZWRlZDogIi8iLmdldEZp
bGUoImIiKQotUEFTUyBWZXJpZmllZCBlbnRyeTogRU5UUlkge3BhdGg6L2EgbmFtZTphIHR5cGU6
RElSRUNUT1JZfQotUEFTUyBWZXJpZmllZCBlbnRyeTogRU5UUlkge3BhdGg6L2IgbmFtZTpiIHR5
cGU6RklMRX0KLSogUnVubmluZzogQ3JlYXRlTmVzdGVkCi1QQVNTIFN1Y2NlZWRlZDogIi8iLmdl
dERpcmVjdG9yeSgiYSIpCi1QQVNTIFN1Y2NlZWRlZDogIi9hIi5nZXREaXJlY3RvcnkoImIiKQot
UEFTUyBTdWNjZWVkZWQ6ICIvYS9iIi5nZXREaXJlY3RvcnkoImMiKQotUEFTUyBTdWNjZWVkZWQ6
ICIvYS9iL2MiLmdldERpcmVjdG9yeSgiZCIpCi1QQVNTIFN1Y2NlZWRlZDogIi9hL2IvYy9kIi5n
ZXRGaWxlKCJlIikKLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9hL2IvYy9kL2Ug
bmFtZTplIHR5cGU6RklMRX0KLSogUnVubmluZzogQ3JlYXRlTmVzdGVkV2l0aEFic29sdXRlUGF0
aAotUEFTUyBTdWNjZWVkZWQ6ICIvZHVtbXkiLmdldERpcmVjdG9yeSgiL2EiKQotUEFTUyBTdWNj
ZWVkZWQ6ICIvZHVtbXkiLmdldERpcmVjdG9yeSgiL2EvYiIpCi1QQVNTIFN1Y2NlZWRlZDogIi9k
dW1teSIuZ2V0RGlyZWN0b3J5KCIvYS9iL2MiKQotUEFTUyBTdWNjZWVkZWQ6ICIvZHVtbXkiLmdl
dERpcmVjdG9yeSgiL2EvYi9jL2QiKQotUEFTUyBTdWNjZWVkZWQ6ICIvZHVtbXkiLmdldEZpbGUo
Ii9hL2IvYy9kL2UiKQotUEFTUyBWZXJpZmllZCBlbnRyeTogRU5UUlkge3BhdGg6L2R1bW15IG5h
bWU6ZHVtbXkgdHlwZTpESVJFQ1RPUll9Ci1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0
aDovYS9iL2MvZC9lIG5hbWU6ZSB0eXBlOkZJTEV9Ci0qIFJ1bm5pbmc6IENyZWF0ZU5lc3RlZFdp
dGhSZWxhdGl2ZVBhdGgKLVBBU1MgU3VjY2VlZGVkOiAiL2EiLmdldERpcmVjdG9yeSgiLi9iIikK
LVBBU1MgU3VjY2VlZGVkOiAiL2EiLmdldERpcmVjdG9yeSgiLi8uLi4iKQotUEFTUyBTdWNjZWVk
ZWQ6ICIvYSIuZ2V0RGlyZWN0b3J5KCIuLi9iIikKLVBBU1MgU3VjY2VlZGVkOiAiL2EiLmdldERp
cmVjdG9yeSgiLi4vLi4vYi9jIikKLVBBU1MgU3VjY2VlZGVkOiAiL2EiLmdldERpcmVjdG9yeSgi
L2EvLi4vLi4vZCIpCi1QQVNTIFN1Y2NlZWRlZDogIi9hIi5nZXREaXJlY3RvcnkoIi9hLy4uLy4u
L2IvLi9jLy4uLy4uLy4uLy4uLy4uL2UiKQotUEFTUyBTdWNjZWVkZWQ6ICIvYSIuZ2V0RGlyZWN0
b3J5KCIuLi4vZiIpCi1QQVNTIHRoaXMuZXhwZWN0ZWRFcnJvckNvZGUgKyAiIiBpcyAiMSIKLVBB
U1MgU3VjY2VlZGVkOiAiL2EiLmdldEZpbGUoIi4vYi50eHQiKQotUEFTUyBTdWNjZWVkZWQ6ICIv
YSIuZ2V0RmlsZSgiLi4vYi50eHQiKQotUEFTUyBTdWNjZWVkZWQ6ICIvYSIuZ2V0RmlsZSgiLi4v
Li4vYi9jLnR4dCIpCi1QQVNTIFN1Y2NlZWRlZDogIi9hIi5nZXRGaWxlKCIvYS8uLi8uLi9kLnR4
dCIpCi1QQVNTIFN1Y2NlZWRlZDogIi9hIi5nZXRGaWxlKCIvYS8uLi8uLi9iLy4vYy8uLi8uLi8u
Li8uLi8uLi9lLnR4dCIpCi1QQVNTIFN1Y2NlZWRlZDogIi9hIi5nZXRGaWxlKCIuLi4vZi50eHQi
KQotUEFTUyB0aGlzLmV4cGVjdGVkRXJyb3JDb2RlICsgIiIgaXMgIjEiCi1QQVNTIFZlcmlmaWVk
IGVudHJ5OiBFTlRSWSB7cGF0aDovYSBuYW1lOmEgdHlwZTpESVJFQ1RPUll9Ci1QQVNTIFZlcmlm
aWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYS9iIG5hbWU6YiB0eXBlOkRJUkVDVE9SWX0KLVBBU1Mg
VmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9iIG5hbWU6YiB0eXBlOkRJUkVDVE9SWX0KLVBB
U1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9iL2MgbmFtZTpjIHR5cGU6RElSRUNUT1JZ
fQotUEFTUyBWZXJpZmllZCBlbnRyeTogRU5UUlkge3BhdGg6L2QgbmFtZTpkIHR5cGU6RElSRUNU
T1JZfQotUEFTUyBWZXJpZmllZCBlbnRyeTogRU5UUlkge3BhdGg6L2UgbmFtZTplIHR5cGU6RElS
RUNUT1JZfQotUEFTUyBWZXJpZmllZCBlbnRyeSBkb2VzIE5PVCBleGlzdDogL2YKLVBBU1MgVmVy
aWZpZWQgZW50cnkgZG9lcyBOT1QgZXhpc3Q6IC9hL2YKLVBBU1MgVmVyaWZpZWQgZW50cnkgZG9l
cyBOT1QgZXhpc3Q6IC9nCi1QQVNTIFZlcmlmaWVkIGVudHJ5IGRvZXMgTk9UIGV4aXN0OiAvYS9n
Ci1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYS9iLnR4dCBuYW1lOmIudHh0IHR5
cGU6RklMRX0KLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9iLnR4dCBuYW1lOmIu
dHh0IHR5cGU6RklMRX0KLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9iL2MudHh0
IG5hbWU6Yy50eHQgdHlwZTpGSUxFfQotUEFTUyBWZXJpZmllZCBlbnRyeTogRU5UUlkge3BhdGg6
L2QudHh0IG5hbWU6ZC50eHQgdHlwZTpGSUxFfQotUEFTUyBWZXJpZmllZCBlbnRyeTogRU5UUlkg
e3BhdGg6L2UudHh0IG5hbWU6ZS50eHQgdHlwZTpGSUxFfQotUEFTUyBWZXJpZmllZCBlbnRyeSBk
b2VzIE5PVCBleGlzdDogL2YudHh0Ci1QQVNTIFZlcmlmaWVkIGVudHJ5IGRvZXMgTk9UIGV4aXN0
OiAvYS9mLnR4dAotUEFTUyBWZXJpZmllZCBlbnRyeSBkb2VzIE5PVCBleGlzdDogL2cudHh0Ci1Q
QVNTIFZlcmlmaWVkIGVudHJ5IGRvZXMgTk9UIGV4aXN0OiAvYS9nLnR4dAotKiBSdW5uaW5nOiBH
ZXRFeGlzdGluZ0VudHJ5Ci1QQVNTIFN1Y2NlZWRlZDogIi8iLmdldERpcmVjdG9yeSgiYSIpCi1Q
QVNTIFN1Y2NlZWRlZDogIi8iLmdldEZpbGUoImIiKQotUEFTUyBTdWNjZWVkZWQ6ICIvIi5nZXRE
aXJlY3RvcnkoImEiKQotUEFTUyB0aGlzLmVudmlyb25tZW50W3RoaXMuZW50cnkuZnVsbFBhdGhd
LmZ1bGxQYXRoIGlzICIvYSIKLVBBU1MgdGhpcy5lbnZpcm9ubWVudFt0aGlzLmVudHJ5LmZ1bGxQ
YXRoXS5pc0ZpbGUgKyAiIiBpcyAiZmFsc2UiCi1QQVNTIHRoaXMuZW52aXJvbm1lbnRbdGhpcy5l
bnRyeS5mdWxsUGF0aF0uaXNEaXJlY3RvcnkgKyAiIiBpcyAidHJ1ZSIKLVBBU1MgU3VjY2VlZGVk
OiAiLyIuZ2V0RmlsZSgiYiIpCi1QQVNTIHRoaXMuZW52aXJvbm1lbnRbdGhpcy5lbnRyeS5mdWxs
UGF0aF0uZnVsbFBhdGggaXMgIi9iIgotUEFTUyB0aGlzLmVudmlyb25tZW50W3RoaXMuZW50cnku
ZnVsbFBhdGhdLmlzRmlsZSArICIiIGlzICJ0cnVlIgotUEFTUyB0aGlzLmVudmlyb25tZW50W3Ro
aXMuZW50cnkuZnVsbFBhdGhdLmlzRGlyZWN0b3J5ICsgIiIgaXMgImZhbHNlIgotUEFTUyBWZXJp
ZmllZCBlbnRyeTogRU5UUlkge3BhdGg6L2EgbmFtZTphIHR5cGU6RElSRUNUT1JZfQotUEFTUyBW
ZXJpZmllZCBlbnRyeTogRU5UUlkge3BhdGg6L2IgbmFtZTpiIHR5cGU6RklMRX0KLSogUnVubmlu
ZzogR2V0Tm9uRXhpc3RlbnQKLVBBU1MgdGhpcy5leHBlY3RlZEVycm9yQ29kZSArICIiIGlzICIx
IgotUEFTUyB0aGlzLmV4cGVjdGVkRXJyb3JDb2RlICsgIiIgaXMgIjEiCi1QQVNTIHRoaXMuZXhw
ZWN0ZWRFcnJvckNvZGUgKyAiIiBpcyAiMSIKLVBBU1MgdGhpcy5leHBlY3RlZEVycm9yQ29kZSAr
ICIiIGlzICIxIgotKiBSdW5uaW5nOiBHZXRGaWxlRm9yRGlyZWN0b3J5Ci1QQVNTIHRoaXMuZXhw
ZWN0ZWRFcnJvckNvZGUgKyAiIiBpcyAiMTEiCi1QQVNTIHRoaXMuZXhwZWN0ZWRFcnJvckNvZGUg
KyAiIiBpcyAiMTEiCi1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYSBuYW1lOmEg
dHlwZTpESVJFQ1RPUll9Ci0qIFJ1bm5pbmc6IEdldERpcmVjdG9yeUZvckZpbGUKLVBBU1MgdGhp
cy5leHBlY3RlZEVycm9yQ29kZSArICIiIGlzICIxMSIKLVBBU1MgdGhpcy5leHBlY3RlZEVycm9y
Q29kZSArICIiIGlzICIxMSIKLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9hIG5h
bWU6YSB0eXBlOkZJTEV9Ci0qIFJ1bm5pbmc6IENyZWF0ZVdpdGhFeGNsdXNpdmUKLVBBU1MgdGhp
cy5leHBlY3RlZEVycm9yQ29kZSArICIiIGlzICI5IgotUEFTUyB0aGlzLmV4cGVjdGVkRXJyb3JD
b2RlICsgIiIgaXMgIjkiCi1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYSBuYW1l
OmEgdHlwZTpESVJFQ1RPUll9Ci1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYiBu
YW1lOmIgdHlwZTpGSUxFfQotRmluaXNoZWQgcnVubmluZyB0ZXN0cy4KLVBBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2ZpbGVzeXN0ZW0vb3AtZ2V0LWVudHJ5Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9maWxlc3lzdGVtL29wLWdldC1lbnRyeS5odG1sCShyZXZpc2lvbiAxNTY2OTEpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vb3AtZ2V0LWVudHJ5Lmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMTIgKzAsMCBAQAotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InJlc291
cmNlcy9mcy10ZXN0LXV0aWwuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvb3AtZ2V0LWVudHJ5Lmpz
Ij48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvb3AtdGVzdHMtaGVscGVyLmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5
c3RlbS9vcC1nZXQtbWV0YWRhdGEtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZmlsZXN5c3RlbS9vcC1nZXQtbWV0YWRhdGEtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vb3AtZ2V0LW1ldGFkYXRh
LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwyNiArMCwwIEBACi0qIFJ1bm5pbmc6
IEdldE1ldGFkYXRhCi1QQVNTIFN1Y2NlZWRlZDogIi8iLmdldE1ldGFkYXRhKCkKLVBBU1MgU3Vj
Y2VlZGVkOiAiLyIuZ2V0RGlyZWN0b3J5KCIvYSIpCi1QQVNTIFN1Y2NlZWRlZDogIi9hIi5nZXRN
ZXRhZGF0YSgpCi1QQVNTIHRoaXMuZW52aXJvbm1lbnRbIi9hLnJldHVybmVkLm1vZGlmaWNhdGlv
blRpbWUiXSBpcyA+PSB0aGlzLnJvdW5kZWRTdGFydERhdGUKLVBBU1MgU3VjY2VlZGVkOiAiL2Zp
bGUxIi5nZXRNZXRhZGF0YSgpCi1QQVNTIHRoaXMuZW52aXJvbm1lbnRbIi9maWxlMS5yZXR1cm5l
ZC5tb2RpZmljYXRpb25UaW1lIl0gaXMgPj0gdGhpcy5yb3VuZGVkU3RhcnREYXRlCi1QQVNTIFN1
Y2NlZWRlZDogIi9maWxlMiIuZ2V0TWV0YWRhdGEoKQotUEFTUyB0aGlzLmVudmlyb25tZW50WyIv
ZmlsZTIucmV0dXJuZWQubW9kaWZpY2F0aW9uVGltZSJdIGlzID49IHRoaXMucm91bmRlZFN0YXJ0
RGF0ZQotUEFTUyB0aGlzLmVudmlyb25tZW50WyIvZmlsZTIuc2l6ZSJdIGlzIHRoaXMuZW52aXJv
bm1lbnRbIi9maWxlMi5yZXR1cm5lZC5zaXplIl0KLVBBU1MgU3VjY2VlZGVkOiAiL2ZpbGUzIi5n
ZXRNZXRhZGF0YSgpCi1QQVNTIHRoaXMuZW52aXJvbm1lbnRbIi9maWxlMy5yZXR1cm5lZC5tb2Rp
ZmljYXRpb25UaW1lIl0gaXMgPj0gdGhpcy5yb3VuZGVkU3RhcnREYXRlCi1QQVNTIHRoaXMuZW52
aXJvbm1lbnRbIi9maWxlMy5zaXplIl0gaXMgdGhpcy5lbnZpcm9ubWVudFsiL2ZpbGUzLnJldHVy
bmVkLnNpemUiXQotUEFTUyBTdWNjZWVkZWQ6ICIvIi5nZXRGaWxlKCIvYiIpCi1QQVNTIFN1Y2Nl
ZWRlZDogIi9iIi5nZXRNZXRhZGF0YSgpCi1QQVNTIHRoaXMuZW52aXJvbm1lbnRbIi9iLnJldHVy
bmVkLm1vZGlmaWNhdGlvblRpbWUiXSBpcyA+PSB0aGlzLnJvdW5kZWRTdGFydERhdGUKLVBBU1Mg
U3VjY2VlZGVkOiAiL3RtcCIucmVtb3ZlKCkKLVBBU1MgdGhpcy5leHBlY3RlZEVycm9yQ29kZSAr
ICIiIGlzICIxIgotUEFTUyB0aGlzLmVudmlyb25tZW50WyIvYS5yZXR1cm5lZC5tb2RpZmljYXRp
b25UaW1lIl0gaXMgPj0gdGhpcy5lbnZpcm9ubWVudFsiLy5yZXR1cm5lZC5tb2RpZmljYXRpb25U
aW1lIl0KLVBBU1MgdGhpcy5lbnZpcm9ubWVudFsiL2IucmV0dXJuZWQubW9kaWZpY2F0aW9uVGlt
ZSJdIGlzID49IHRoaXMuZW52aXJvbm1lbnRbIi8ucmV0dXJuZWQubW9kaWZpY2F0aW9uVGltZSJd
Ci1QQVNTIHRoaXMuZW52aXJvbm1lbnRbIi9iLnJldHVybmVkLm1vZGlmaWNhdGlvblRpbWUiXSBp
cyA+PSB0aGlzLmVudmlyb25tZW50WyIvYS5yZXR1cm5lZC5tb2RpZmljYXRpb25UaW1lIl0KLUZp
bmlzaGVkIHJ1bm5pbmcgdGVzdHMuCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0K
LVRFU1QgQ09NUExFVEUKLQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL29wLWdl
dC1tZXRhZGF0YS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3Rl
bS9vcC1nZXQtbWV0YWRhdGEuaHRtbAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9maWxlc3lzdGVtL29wLWdldC1tZXRhZGF0YS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDE0ICswLDAgQEAKLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZnMtdGVz
dC11dGlsLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Ci08c2NyaXB0IHNyYz0icmVzb3VyY2VzL29wLWdldC1tZXRhZGF0YS5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0IHNyYz0icmVzb3VyY2VzL29wLXRlc3RzLWhlbHBlci5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
Ci08L2JvZHk+Ci08L2h0bWw+Ci0KLQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVt
L29wLWdldC1wYXJlbnQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZmlsZXN5c3RlbS9vcC1nZXQtcGFyZW50LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTU2Njkx
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL29wLWdldC1wYXJlbnQtZXhwZWN0ZWQu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDE3ICswLDAgQEAKLSogUnVubmluZzogR2V0UGFyZW50
Ci1QQVNTIFN1Y2NlZWRlZDogIi8iLmdldFBhcmVudCgpCi1QYXJlbnQgZW50cnk6IEVOVFJZIHtw
YXRoOi8gbmFtZTogdHlwZTpESVJFQ1RPUll9Ci1QQVNTIFN1Y2NlZWRlZDogIi9hIi5nZXRQYXJl
bnQoKQotUGFyZW50IGVudHJ5OiBFTlRSWSB7cGF0aDovIG5hbWU6IHR5cGU6RElSRUNUT1JZfQot
UEFTUyBTdWNjZWVkZWQ6ICIvYS9iIi5nZXRQYXJlbnQoKQotUGFyZW50IGVudHJ5OiBFTlRSWSB7
cGF0aDovYSBuYW1lOmEgdHlwZTpESVJFQ1RPUll9Ci1QQVNTIFN1Y2NlZWRlZDogIi9hL2IvYyIu
Z2V0UGFyZW50KCkKLVBhcmVudCBlbnRyeTogRU5UUlkge3BhdGg6L2EvYiBuYW1lOmIgdHlwZTpE
SVJFQ1RPUll9Ci1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYSBuYW1lOmEgdHlw
ZTpESVJFQ1RPUll9Ci1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYS9iIG5hbWU6
YiB0eXBlOkRJUkVDVE9SWX0KLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9hL2Iv
YyBuYW1lOmMgdHlwZTpGSUxFfQotRmluaXNoZWQgcnVubmluZyB0ZXN0cy4KLVBBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2ZpbGVzeXN0ZW0vb3AtZ2V0LXBhcmVudC5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9vcC1nZXQtcGFyZW50Lmh0bWwJKHJldmlzaW9uIDE1NjY5
MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9vcC1nZXQtcGFyZW50Lmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTEsMTQgKzAsMCBAQAotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9
InJlc291cmNlcy9mcy10ZXN0LXV0aWwuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvb3AtZ2V0LXBh
cmVudC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0icmVzb3VyY2VzL29wLXRlc3RzLWhlbHBl
ci5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+Ci0KLQpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9maWxlc3lzdGVtL29wLW1vdmUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9vcC1tb3ZlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTU2
NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL29wLW1vdmUtZXhwZWN0ZWQudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDgzICswLDAgQEAKLSogUnVubmluZzogTW92ZUZpbGVTaW1w
bGUKLVBBU1MgU3VjY2VlZGVkOiAiL2EvYiIubW92ZVRvKCIvYSIsICJjIikKLVBBU1MgVmVyaWZp
ZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9hIG5hbWU6YSB0eXBlOkRJUkVDVE9SWX0KLVBBU1MgVmVy
aWZpZWQgZW50cnkgZG9lcyBOT1QgZXhpc3Q6IC9hL2IKLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVO
VFJZIHtwYXRoOi9hL2MgbmFtZTpjIHR5cGU6RklMRX0KLSogUnVubmluZzogTW92ZURpcmVjdG9y
eVNpbXBsZQotUEFTUyBTdWNjZWVkZWQ6ICIvYS9iIi5tb3ZlVG8oIi9hIiwgImMiKQotUEFTUyBW
ZXJpZmllZCBlbnRyeTogRU5UUlkge3BhdGg6L2EgbmFtZTphIHR5cGU6RElSRUNUT1JZfQotUEFT
UyBWZXJpZmllZCBlbnRyeSBkb2VzIE5PVCBleGlzdDogL2EvYgotUEFTUyBWZXJpZmllZCBlbnRy
eTogRU5UUlkge3BhdGg6L2EvYyBuYW1lOmMgdHlwZTpESVJFQ1RPUll9Ci0qIFJ1bm5pbmc6IE1v
dmVGaWxlVG9EaWZmZXJlbnREaXJlY3RvcnkKLVBBU1MgU3VjY2VlZGVkOiAiL2EvYiIubW92ZVRv
KCIvYyIsICJkIikKLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9hIG5hbWU6YSB0
eXBlOkRJUkVDVE9SWX0KLVBBU1MgVmVyaWZpZWQgZW50cnkgZG9lcyBOT1QgZXhpc3Q6IC9hL2IK
LVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9jL2QgbmFtZTpkIHR5cGU6RklMRX0K
LSogUnVubmluZzogTW92ZUZpbGVXaXRoRW1wdHlOYW1lCi1QQVNTIFN1Y2NlZWRlZDogIi9hL2Ii
Lm1vdmVUbygiL2MiLCAibnVsbCIpCi1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDov
YSBuYW1lOmEgdHlwZTpESVJFQ1RPUll9Ci1QQVNTIFZlcmlmaWVkIGVudHJ5IGRvZXMgTk9UIGV4
aXN0OiAvYS9iCi1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYy9iIG5hbWU6YiB0
eXBlOkZJTEV9Ci0qIFJ1bm5pbmc6IE1vdmVGaWxlV2l0aEVtcHR5TmFtZVRvU2FtZURpcmVjdG9y
eQotUEFTUyB0aGlzLmV4cGVjdGVkRXJyb3JDb2RlICsgIiIgaXMgIjkiCi1QQVNTIFZlcmlmaWVk
IGVudHJ5OiBFTlRSWSB7cGF0aDovYSBuYW1lOmEgdHlwZTpESVJFQ1RPUll9Ci1QQVNTIFZlcmlm
aWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYS9iIG5hbWU6YiB0eXBlOkZJTEV9Ci0qIFJ1bm5pbmc6
IE1vdmVGaWxlV2l0aFNhbWVOYW1lCi1QQVNTIHRoaXMuZXhwZWN0ZWRFcnJvckNvZGUgKyAiIiBp
cyAiOSIKLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9hIG5hbWU6YSB0eXBlOkRJ
UkVDVE9SWX0KLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9hL2IgbmFtZTpiIHR5
cGU6RklMRX0KLSogUnVubmluZzogTW92ZUZvck5vbkV4aXN0ZW50RW50cnkKLVBBU1MgU3VjY2Vl
ZGVkOiAiL2EvYiIucmVtb3ZlKCkKLVBBU1MgdGhpcy5leHBlY3RlZEVycm9yQ29kZSArICIiIGlz
ICIxIgotUEFTUyBWZXJpZmllZCBlbnRyeTogRU5UUlkge3BhdGg6L2EgbmFtZTphIHR5cGU6RElS
RUNUT1JZfQotUEFTUyBWZXJpZmllZCBlbnRyeTogRU5UUlkge3BhdGg6L2MgbmFtZTpjIHR5cGU6
RElSRUNUT1JZfQotKiBSdW5uaW5nOiBNb3ZlRW50cnlUb05vbkV4aXN0ZW50RGlyZWN0b3J5Ci1Q
QVNTIFN1Y2NlZWRlZDogIi9jIi5yZW1vdmUoKQotUEFTUyB0aGlzLmV4cGVjdGVkRXJyb3JDb2Rl
ICsgIiIgaXMgIjEiCi1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYSBuYW1lOmEg
dHlwZTpESVJFQ1RPUll9Ci1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYS9iIG5h
bWU6YiB0eXBlOkZJTEV9Ci0qIFJ1bm5pbmc6IE1vdmVFbnRyeVRvSXRzQ2hpbGQKLVBBU1MgdGhp
cy5leHBlY3RlZEVycm9yQ29kZSArICIiIGlzICI5IgotUEFTUyB0aGlzLmV4cGVjdGVkRXJyb3JD
b2RlICsgIiIgaXMgIjkiCi1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYSBuYW1l
OmEgdHlwZTpESVJFQ1RPUll9Ci1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYS9i
IG5hbWU6YiB0eXBlOkRJUkVDVE9SWX0KLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRo
Oi9hL2IvYyBuYW1lOmMgdHlwZTpESVJFQ1RPUll9Ci0qIFJ1bm5pbmc6IE1vdmVSZWN1cnNpdmUK
LVBBU1MgU3VjY2VlZGVkOiAiL2EiLm1vdmVUbygiL2IiLCAiYSIpCi1QQVNTIFZlcmlmaWVkIGVu
dHJ5IGRvZXMgTk9UIGV4aXN0OiAvYQotUEFTUyBWZXJpZmllZCBlbnRyeTogRU5UUlkge3BhdGg6
L2IvYSBuYW1lOmEgdHlwZTpESVJFQ1RPUll9Ci1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7
cGF0aDovYi9hL2IgbmFtZTpiIHR5cGU6RElSRUNUT1JZfQotUEFTUyBWZXJpZmllZCBlbnRyeTog
RU5UUlkge3BhdGg6L2IvYS9iL2MgbmFtZTpjIHR5cGU6RklMRX0KLVBBU1MgVmVyaWZpZWQgZW50
cnk6IEVOVFJZIHtwYXRoOi9iL2EvYi9kIG5hbWU6ZCB0eXBlOkZJTEV9Ci0qIFJ1bm5pbmc6IE92
ZXJ3cml0aW5nTW92ZUZpbGVUb0ZpbGUKLVBBU1MgU3VjY2VlZGVkOiAiL2EiLm1vdmVUbygiLyIs
ICJiIikKLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9iIG5hbWU6YiB0eXBlOkZJ
TEV9Ci0qIFJ1bm5pbmc6IE92ZXJ3cml0aW5nTW92ZURpcmVjdG9yeVRvRW1wdHlEaXJlY3RvcnkK
LVBBU1MgU3VjY2VlZGVkOiAiL2EiLm1vdmVUbygiLyIsICJjIikKLVBBU1MgVmVyaWZpZWQgZW50
cnk6IEVOVFJZIHtwYXRoOi9jIG5hbWU6YyB0eXBlOkRJUkVDVE9SWX0KLVBBU1MgVmVyaWZpZWQg
ZW50cnk6IEVOVFJZIHtwYXRoOi9jL2IgbmFtZTpiIHR5cGU6RklMRX0KLVBBU1MgVmVyaWZpZWQg
ZW50cnkgZG9lcyBOT1QgZXhpc3Q6IC9hCi0qIFJ1bm5pbmc6IE92ZXJ3cml0aW5nTW92ZUZpbGVU
b0RpcmVjdG9yeQotUEFTUyB0aGlzLmV4cGVjdGVkRXJyb3JDb2RlICsgIiIgaXMgIjkiCi1QQVNT
IFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYSBuYW1lOmEgdHlwZTpGSUxFfQotUEFTUyBW
ZXJpZmllZCBlbnRyeTogRU5UUlkge3BhdGg6L2IgbmFtZTpiIHR5cGU6RElSRUNUT1JZfQotKiBS
dW5uaW5nOiBPdmVyd3JpdGluZ01vdmVEaXJlY3RvcnlUb0ZpbGUKLVBBU1MgdGhpcy5leHBlY3Rl
ZEVycm9yQ29kZSArICIiIGlzICI5IgotUEFTUyBWZXJpZmllZCBlbnRyeTogRU5UUlkge3BhdGg6
L2EgbmFtZTphIHR5cGU6RElSRUNUT1JZfQotUEFTUyBWZXJpZmllZCBlbnRyeTogRU5UUlkge3Bh
dGg6L2IgbmFtZTpiIHR5cGU6RklMRX0KLSogUnVubmluZzogT3ZlcndyaXRpbmdNb3ZlRmlsZVRv
Tm9uZW1wdHlEaXJlY3RvcnkKLVBBU1MgdGhpcy5leHBlY3RlZEVycm9yQ29kZSArICIiIGlzICI5
IgotUEFTUyBWZXJpZmllZCBlbnRyeTogRU5UUlkge3BhdGg6L2EgbmFtZTphIHR5cGU6RklMRX0K
LVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9iIG5hbWU6YiB0eXBlOkRJUkVDVE9S
WX0KLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9iL2MgbmFtZTpjIHR5cGU6RklM
RX0KLSogUnVubmluZzogT3ZlcndyaXRpbmdNb3ZlRGlyZWN0b3J5VG9Ob25lbXB0eURpcmVjdG9y
eQotUEFTUyB0aGlzLmV4cGVjdGVkRXJyb3JDb2RlICsgIiIgaXMgIjkiCi1QQVNTIFZlcmlmaWVk
IGVudHJ5OiBFTlRSWSB7cGF0aDovYSBuYW1lOmEgdHlwZTpESVJFQ1RPUll9Ci1QQVNTIFZlcmlm
aWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYS9iIG5hbWU6YiB0eXBlOkZJTEV9Ci1QQVNTIFZlcmlm
aWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYyBuYW1lOmMgdHlwZTpESVJFQ1RPUll9Ci1QQVNTIFZl
cmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYy9kIG5hbWU6ZCB0eXBlOkZJTEV9Ci1GaW5pc2hl
ZCBydW5uaW5nIHRlc3RzLgotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNU
IENPTVBMRVRFCi0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9vcC1tb3ZlLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL29wLW1vdmUuaHRt
bAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL29wLW1v
dmUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxMiArMCwwIEBACi08aHRtbD4KLTxoZWFkPgot
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0IHNyYz0icmVzb3VyY2VzL2ZzLXRlc3QtdXRpbC5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+
Ci08Ym9keT4KLTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgotPHNjcmlwdCBzcmM9InJlc291cmNl
cy9vcC1tb3ZlLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvb3AtdGVzdHMt
aGVscGVyLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvZmlsZXN5c3RlbS9vcC1yZWFkLWRpcmVjdG9yeS1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL29wLXJlYWQtZGlyZWN0b3J5LWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVt
L29wLXJlYWQtZGlyZWN0b3J5LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwyMiAr
MCwwIEBACi0qIFJ1bm5pbmc6IFJlYWREaXJlY3RvcnkKLVBBU1MgU3VjY2VlZGVkOiAiLyIuY3Jl
YXRlUmVhZGVyKCkucmVhZEVudHJpZXMoKQotRW50cmllczogW0VOVFJZIHtwYXRoOi9hIG5hbWU6
YSB0eXBlOkRJUkVDVE9SWX0sCi0gRU5UUlkge3BhdGg6L2IgbmFtZTpiIHR5cGU6RElSRUNUT1JZ
fSwKLSBFTlRSWSB7cGF0aDovYyBuYW1lOmMgdHlwZTpGSUxFfSwKLSBFTlRSWSB7cGF0aDovZCBu
YW1lOmQgdHlwZTpGSUxFfSwKLSBFTlRSWSB7cGF0aDovZSBuYW1lOmUgdHlwZTpESVJFQ1RPUll9
LAotIEVOVFJZIHtwYXRoOi9mIG5hbWU6ZiB0eXBlOkZJTEV9LAotIEVOVFJZIHtwYXRoOi9nIG5h
bWU6ZyB0eXBlOkRJUkVDVE9SWX1dCi1QQVNTIFN1Y2NlZWRlZDogIi9jIi5yZW1vdmUoKQotUEFT
UyBTdWNjZWVkZWQ6ICIvZSIucmVtb3ZlKCkKLVBBU1MgU3VjY2VlZGVkOiAiL2YiLnJlbW92ZSgp
Ci1QQVNTIFN1Y2NlZWRlZDogIi8iLmNyZWF0ZVJlYWRlcigpLnJlYWRFbnRyaWVzKCkKLUVudHJp
ZXM6IFtFTlRSWSB7cGF0aDovYSBuYW1lOmEgdHlwZTpESVJFQ1RPUll9LAotIEVOVFJZIHtwYXRo
Oi9iIG5hbWU6YiB0eXBlOkRJUkVDVE9SWX0sCi0gRU5UUlkge3BhdGg6L2QgbmFtZTpkIHR5cGU6
RklMRX0sCi0gRU5UUlkge3BhdGg6L2cgbmFtZTpnIHR5cGU6RElSRUNUT1JZfV0KLUZpbmlzaGVk
IHJ1bm5pbmcgdGVzdHMuCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1Qg
Q09NUExFVEUKLQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL29wLXJlYWQtZGly
ZWN0b3J5Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL29w
LXJlYWQtZGlyZWN0b3J5Lmh0bWwJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zh
c3QvZmlsZXN5c3RlbS9vcC1yZWFkLWRpcmVjdG9yeS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDEyICswLDAgQEAKLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZnMtdGVz
dC11dGlsLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Ci08c2NyaXB0IHNyYz0icmVzb3VyY2VzL29wLXJlYWQtZGlyZWN0b3J5LmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvb3AtdGVzdHMtaGVscGVyLmpzIj48L3Njcmlw
dD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KLTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9v
cC1yZW1vdmUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmls
ZXN5c3RlbS9vcC1yZW1vdmUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vb3AtcmVtb3ZlLWV4cGVjdGVkLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtMSwyMyArMCwwIEBACi0qIFJ1bm5pbmc6IFJlbW92ZVNpbXBsZQotUEFTUyBTdWNj
ZWVkZWQ6ICIvYSIucmVtb3ZlKCkKLVBBU1MgU3VjY2VlZGVkOiAiL2IiLnJlbW92ZSgpCi1QQVNT
IHRoaXMuZXhwZWN0ZWRFcnJvckNvZGUgKyAiIiBpcyAiOSIKLVBBU1MgVmVyaWZpZWQgZW50cnkg
ZG9lcyBOT1QgZXhpc3Q6IC9hCi1QQVNTIFZlcmlmaWVkIGVudHJ5IGRvZXMgTk9UIGV4aXN0OiAv
YgotKiBSdW5uaW5nOiBSZW1vdmVOb25SZWN1cnNpdmVXaXRoQ2hpbGRyZW4KLVBBU1MgdGhpcy5l
eHBlY3RlZEVycm9yQ29kZSArICIiIGlzICI5IgotUEFTUyBWZXJpZmllZCBlbnRyeTogRU5UUlkg
e3BhdGg6L2EgbmFtZTphIHR5cGU6RElSRUNUT1JZfQotUEFTUyBWZXJpZmllZCBlbnRyeTogRU5U
Ulkge3BhdGg6L2EvYiBuYW1lOmIgdHlwZTpESVJFQ1RPUll9Ci1QQVNTIFZlcmlmaWVkIGVudHJ5
OiBFTlRSWSB7cGF0aDovYS9jIG5hbWU6YyB0eXBlOkZJTEV9Ci0qIFJ1bm5pbmc6IFJlbW92ZVJl
Y3Vyc2l2ZVdpdGhvdXRDaGlsZHJlbgotUEFTUyBTdWNjZWVkZWQ6ICIvYSIucmVtb3ZlUmVjdXJz
aXZlbHkoKQotUEFTUyBWZXJpZmllZCBlbnRyeSBkb2VzIE5PVCBleGlzdDogL2EKLSogUnVubmlu
ZzogUmVtb3ZlUmVjdXJzaXZlV2l0aENoaWxkcmVuCi1QQVNTIFN1Y2NlZWRlZDogIi9hIi5yZW1v
dmVSZWN1cnNpdmVseSgpCi1QQVNTIHRoaXMuZXhwZWN0ZWRFcnJvckNvZGUgKyAiIiBpcyAiOSIK
LVBBU1MgVmVyaWZpZWQgZW50cnkgZG9lcyBOT1QgZXhpc3Q6IC9hCi1GaW5pc2hlZCBydW5uaW5n
IHRlc3RzLgotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRF
Ci0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9vcC1yZW1vdmUuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vb3AtcmVtb3ZlLmh0bWwJKHJl
dmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9vcC1yZW1vdmUu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxMyArMCwwIEBACi08aHRtbD4KLTxoZWFkPgotPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL2ZzLXRlc3QtdXRpbC5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08
Ym9keT4KLTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgotPHNjcmlwdCBzcmM9InJlc291cmNlcy9v
cC1yZW1vdmUuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InJlc291cmNlcy9vcC10ZXN0cy1o
ZWxwZXIuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgotCkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2ZpbGVzeXN0ZW0vb3AtcmVzdHJpY3RlZC1jaGFycy1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL29wLXJlc3RyaWN0ZWQtY2hhcnMt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVz
eXN0ZW0vb3AtcmVzdHJpY3RlZC1jaGFycy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTEsMzcgKzAsMCBAQAotKiBSdW5uaW5nOiBSZXN0cmljdGVkQ2hhcnMKLVBBU1MgU3VjY2VlZGVk
OiAiLyIuZ2V0RmlsZSgiYTxiIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiYT5iIikK
LVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiYTpiIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIu
Z2V0RmlsZSgiYT9iIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiYSpiIikKLVBBU1Mg
U3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiYSJiIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0Rmls
ZSgiYXxiIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiPGFiIikKLVBBU1MgU3VjY2Vl
ZGVkOiAiLyIuZ2V0RmlsZSgiOmFiIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiP2Fi
IikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiKmFiIikKLVBBU1MgU3VjY2VlZGVkOiAi
LyIuZ2V0RmlsZSgiImFiIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgifGFiIikKLVBB
U1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiYWI8IikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0
RmlsZSgiYWI6IikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiYWI/IikKLVBBU1MgU3Vj
Y2VlZGVkOiAiLyIuZ2V0RmlsZSgiYWIqIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgi
YWIiIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiYWJ8IikKLVBBU1MgdGhpcy5leHBl
Y3RlZEVycm9yQ29kZSArICIiIGlzICI5IgotUEFTUyBTdWNjZWVkZWQ6ICIvYWIiLmNvcHlUbygi
LyIsICIgYTxiIikKLVBBU1MgU3VjY2VlZGVkOiAiL2FiIi5jb3B5VG8oIi8iLCAiIGE6YiIpCi1Q
QVNTIFN1Y2NlZWRlZDogIi9hYiIuY29weVRvKCIvIiwgIiBhP2IiKQotUEFTUyBTdWNjZWVkZWQ6
ICIvYWIiLmNvcHlUbygiLyIsICIgYSpiIikKLVBBU1MgU3VjY2VlZGVkOiAiL2FiIi5jb3B5VG8o
Ii8iLCAiIGEiYiIpCi1QQVNTIFN1Y2NlZWRlZDogIi9hYiIuY29weVRvKCIvIiwgIiBhfGIiKQot
UEFTUyB0aGlzLmV4cGVjdGVkRXJyb3JDb2RlICsgIiIgaXMgIjkiCi1QQVNTIHRoaXMuZXhwZWN0
ZWRFcnJvckNvZGUgKyAiIiBpcyAiOSIKLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRo
Oi9hYiBuYW1lOmFiIHR5cGU6RElSRUNUT1JZfQotUEFTUyBWZXJpZmllZCBlbnRyeTogRU5UUlkg
e3BhdGg6L2E8YiBuYW1lOmE8YiB0eXBlOkZJTEV9Ci1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRS
WSB7cGF0aDovIGF8YiBuYW1lOiBhfGIgdHlwZTpESVJFQ1RPUll9Ci1GaW5pc2hlZCBydW5uaW5n
IHRlc3RzLgotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRF
Ci0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9vcC1yZXN0cmljdGVkLWNoYXJz
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL29wLXJlc3Ry
aWN0ZWQtY2hhcnMuaHRtbAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9m
aWxlc3lzdGVtL29wLXJlc3RyaWN0ZWQtY2hhcnMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwx
MiArMCwwIEBACi08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0icmVzb3VyY2VzL2ZzLXRlc3Qt
dXRpbC5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgotPHNjcmlwdCBzcmM9InJlc291cmNlcy9vcC1yZXN0cmljdGVkLWNoYXJzLmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvb3AtdGVzdHMtaGVscGVyLmpzIj48L3Njcmlw
dD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KLTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9v
cC1yZXN0cmljdGVkLW5hbWVzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2ZpbGVzeXN0ZW0vb3AtcmVzdHJpY3RlZC1uYW1lcy1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9vcC1yZXN0cmljdGVk
LW5hbWVzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw1MSArMCwwIEBACi0qIFJ1
bm5pbmc6IFJlc3RyaWN0ZWROYW1lcwotUEFTUyB0aGlzLmV4cGVjdGVkRXJyb3JDb2RlICsgIiIg
aXMgIjIiCi1QQVNTIHRoaXMuZXhwZWN0ZWRFcnJvckNvZGUgKyAiIiBpcyAiMiIKLVBBU1MgU3Vj
Y2VlZGVkOiAiLyIuZ2V0RmlsZSgiY29uIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgi
Q09OIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiQ29uIikKLVBBU1MgU3VjY2VlZGVk
OiAiLyIuZ2V0RmlsZSgiY09uLnR4dCIpCi1QQVNTIFN1Y2NlZWRlZDogIi8iLmdldEZpbGUoImEv
Y29OIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgicHJuIikKLVBBU1MgU3VjY2VlZGVk
OiAiLyIuZ2V0RmlsZSgiUFJOIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiUHJuIikK
LVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgicFJuLnR4dCIpCi1QQVNTIFN1Y2NlZWRlZDog
Ii8iLmdldEZpbGUoImEvcHJOIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiYXV4IikK
LVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiQVVYIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIu
Z2V0RmlsZSgiQXV4IikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiYVV4LnR4dCIpCi1Q
QVNTIFN1Y2NlZWRlZDogIi8iLmdldEZpbGUoImEvYXVYIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIu
Z2V0RmlsZSgibnVsIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiTlVMIikKLVBBU1Mg
U3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiTnVsIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0Rmls
ZSgiblVsLnR4dCIpCi1QQVNTIFN1Y2NlZWRlZDogIi8iLmdldEZpbGUoImEvbnVMIikKLVBBU1Mg
U3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiY29tMSIpCi1QQVNTIFN1Y2NlZWRlZDogIi8iLmdldEZp
bGUoIkNPTTIiKQotUEFTUyBTdWNjZWVkZWQ6ICIvIi5nZXRGaWxlKCJDb200IikKLVBBU1MgU3Vj
Y2VlZGVkOiAiLyIuZ2V0RmlsZSgiY09NNy5mb28iKQotUEFTUyBTdWNjZWVkZWQ6ICIvIi5nZXRG
aWxlKCJhL2NvTTkiKQotUEFTUyBTdWNjZWVkZWQ6ICIvIi5nZXRGaWxlKCJscHQxIikKLVBBU1Mg
U3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiTFBUMiIpCi1QQVNTIFN1Y2NlZWRlZDogIi8iLmdldEZp
bGUoIkxwdDQiKQotUEFTUyBTdWNjZWVkZWQ6ICIvIi5nZXRGaWxlKCJsUFQ3LmZvbyIpCi1QQVNT
IFN1Y2NlZWRlZDogIi8iLmdldEZpbGUoImEvbHBUOSIpCi1QQVNTIFN1Y2NlZWRlZDogIi8iLmdl
dEZpbGUoImZvbyAiKQotUEFTUyBTdWNjZWVkZWQ6ICIvIi5nZXRGaWxlKCJmb28KLSIpCi1QQVNT
IFN1Y2NlZWRlZDogIi8iLmdldEZpbGUoImZvby4iKQotUEFTUyBTdWNjZWVkZWQ6ICIvYSIuY29w
eVRvKCIvIiwgImZvbyAgIikKLVBBU1MgU3VjY2VlZGVkOiAiL2EiLmNvcHlUbygiLyIsICJmb28J
IikKLVBBU1MgU3VjY2VlZGVkOiAiL2EiLmNvcHlUbygiLyIsICJmb28uLiIpCi1QQVNTIFN1Y2Nl
ZWRlZDogIi9hIi5tb3ZlVG8oIi8iLCAiZm9vICAgICIpCi1QQVNTIFN1Y2NlZWRlZDogIi9iIi5t
b3ZlVG8oIi8iLCAiZm9vCQkiKQotUEFTUyBTdWNjZWVkZWQ6ICIvYyIubW92ZVRvKCIvIiwgImZv
by4uLi4uIikKLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9mb28gICAgIG5hbWU6
Zm9vICAgICB0eXBlOkRJUkVDVE9SWX0KLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRo
Oi9mb28JCSBuYW1lOmZvbwkJIHR5cGU6RElSRUNUT1JZfQotUEFTUyBWZXJpZmllZCBlbnRyeTog
RU5UUlkge3BhdGg6L2Zvby4uLi4uIG5hbWU6Zm9vLi4uLi4gdHlwZTpESVJFQ1RPUll9Ci1GaW5p
c2hlZCBydW5uaW5nIHRlc3RzLgotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1U
RVNUIENPTVBMRVRFCi0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9vcC1yZXN0
cmljdGVkLW5hbWVzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lz
dGVtL29wLXJlc3RyaWN0ZWQtbmFtZXMuaHRtbAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9maWxlc3lzdGVtL29wLXJlc3RyaWN0ZWQtbmFtZXMuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMSwxMiArMCwwIEBACi08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL2ZzLXRlc3QtdXRpbC5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgotPHNjcmlwdCBzcmM9InJlc291cmNlcy9vcC1yZXN0cmljdGVkLW5h
bWVzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvb3AtdGVzdHMtaGVscGVy
LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
ZmlsZXN5c3RlbS9vcC1yZXN0cmljdGVkLXVuaWNvZGUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9vcC1yZXN0cmljdGVkLXVuaWNvZGUtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0
ZW0vb3AtcmVzdHJpY3RlZC11bmljb2RlLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MSw0MSArMCwwIEBACi0qIFJ1bm5pbmc6IFJlc3RyaWN0ZWRVbmljb2RlQ2hhcnMKLVBBU1MgU3Vj
Y2VlZGVkOiAiLyIuZ2V0RmlsZSgiYWIiKQotUEFTUyB0aGlzLmV4cGVjdGVkRXJyb3JDb2RlICsg
IiIgaXMgIjkiCi1QQVNTIFN1Y2NlZWRlZDogIi8iLmdldEZpbGUoImEBYiIpCi1QQVNTIFN1Y2Nl
ZWRlZDogIi8iLmdldEZpbGUoImECYiIpCi1QQVNTIFN1Y2NlZWRlZDogIi8iLmdldEZpbGUoImED
YiIpCi1QQVNTIFN1Y2NlZWRlZDogIi8iLmdldEZpbGUoImEEYiIpCi1QQVNTIFN1Y2NlZWRlZDog
Ii8iLmdldEZpbGUoImEFYiIpCi1QQVNTIFN1Y2NlZWRlZDogIi8iLmdldEZpbGUoImEGYiIpCi1Q
QVNTIFN1Y2NlZWRlZDogIi8iLmdldEZpbGUoImEHYiIpCi1QQVNTIFN1Y2NlZWRlZDogIi8iLmdl
dEZpbGUoImEIYiIpCi1QQVNTIFN1Y2NlZWRlZDogIi8iLmdldEZpbGUoImEJYiIpCi1QQVNTIFN1
Y2NlZWRlZDogIi8iLmdldEZpbGUoImEKLWIiKQotUEFTUyBTdWNjZWVkZWQ6ICIvIi5nZXRGaWxl
KCJhC2IiKQotUEFTUyBTdWNjZWVkZWQ6ICIvIi5nZXRGaWxlKCJhDGIiKQotUEFTUyBTdWNjZWVk
ZWQ6ICIvIi5nZXRGaWxlKCJhCi1iIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiYQ5i
IikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiYQ9iIikKLVBBU1MgU3VjY2VlZGVkOiAi
LyIuZ2V0RmlsZSgiYRBiIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiYRFiIikKLVBB
U1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiYRJiIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0
RmlsZSgiYRNiIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiYRRiIikKLVBBU1MgU3Vj
Y2VlZGVkOiAiLyIuZ2V0RmlsZSgiYRViIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgi
YRZiIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiYRdiIikKLVBBU1MgU3VjY2VlZGVk
OiAiLyIuZ2V0RmlsZSgiYRhiIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiYRliIikK
LVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiYRpiIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIu
Z2V0RmlsZSgiYRtiIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiYRxiIikKLVBBU1Mg
U3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiYR1iIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0Rmls
ZSgiYR5iIikKLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9hYiBuYW1lOmFiIHR5
cGU6RklMRX0KLUZpbmlzaGVkIHJ1bm5pbmcgdGVzdHMuCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxl
c3lzdGVtL29wLXJlc3RyaWN0ZWQtdW5pY29kZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZmlsZXN5c3RlbS9vcC1yZXN0cmljdGVkLXVuaWNvZGUuaHRtbAkocmV2aXNpb24g
MTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL29wLXJlc3RyaWN0ZWQtdW5p
Y29kZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEyICswLDAgQEAKLTxodG1sPgotPGhlYWQ+
Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
LTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZnMtdGVzdC11dGlsLmpzIj48L3NjcmlwdD4KLTwvaGVh
ZD4KLTxib2R5PgotPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Ci08c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL29wLXJlc3RyaWN0ZWQtdW5pY29kZS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0icmVz
b3VyY2VzL29wLXRlc3RzLWhlbHBlci5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+Cklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVhZC1kaXJlY3RvcnktZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZWFkLWRpcmVj
dG9yeS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3Qv
ZmlsZXN5c3RlbS9yZWFkLWRpcmVjdG9yeS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTEsMjQgKzAsMCBAQAotRGlyZWN0b3J5UmVhZGVyLnJlYWRFbnRyaWVzKCkgdGVzdC4KLQotT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgotCi0KLVN1Y2Nlc3NmdWxseSBvYnRhaW5lZCBQZXJzaXN0
ZW50IEZpbGVTeXN0ZW06ZmlsZV9fMDpUZW1wb3JhcnkKLVBBU1MgcmVhZEVudHJpZXNDb3VudCBp
cyBlbnRyaWVzQ2FsbGJhY2tDb3VudAotUEFTUyByZXN1bHRFbnRyaWVzLmxlbmd0aCBpcyB0ZXN0
RW50cmllc0NvdW50Ci1FbnRyeTovYSBpc0RpcmVjdG9yeTp0cnVlCi1QQVNTIHRlc3RFbnRyaWVz
W2VudHJ5LmZ1bGxQYXRoXSBpcyBlbnRyeS5pc0RpcmVjdG9yeQotRW50cnk6L2IgaXNEaXJlY3Rv
cnk6ZmFsc2UKLVBBU1MgdGVzdEVudHJpZXNbZW50cnkuZnVsbFBhdGhdIGlzIGVudHJ5LmlzRGly
ZWN0b3J5Ci1FbnRyeTovYyBpc0RpcmVjdG9yeTp0cnVlCi1QQVNTIHRlc3RFbnRyaWVzW2VudHJ5
LmZ1bGxQYXRoXSBpcyBlbnRyeS5pc0RpcmVjdG9yeQotRW50cnk6L2QgaXNEaXJlY3Rvcnk6ZmFs
c2UKLVBBU1MgdGVzdEVudHJpZXNbZW50cnkuZnVsbFBhdGhdIGlzIGVudHJ5LmlzRGlyZWN0b3J5
Ci1FbnRyeTovZSBpc0RpcmVjdG9yeTpmYWxzZQotUEFTUyB0ZXN0RW50cmllc1tlbnRyeS5mdWxs
UGF0aF0gaXMgZW50cnkuaXNEaXJlY3RvcnkKLUVudHJ5Oi9mIGlzRGlyZWN0b3J5OnRydWUKLVBB
U1MgdGVzdEVudHJpZXNbZW50cnkuZnVsbFBhdGhdIGlzIGVudHJ5LmlzRGlyZWN0b3J5Ci1QQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3JlYWQtZGlyZWN0b3J5Lmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3JlYWQtZGlyZWN0b3J5Lmh0bWwJKHJldmlz
aW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZWFkLWRpcmVjdG9y
eS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEwICswLDAgQEAKLTxodG1sPgotPGhlYWQ+Ci08
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvZnMtdGVzdC11dGlsLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4K
LTxib2R5PgotPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9yZWFkLWRpcmVjdG9yeS5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0
ZW0vcmVzb3VyY2VzL2FzeW5jLW9wZXJhdGlvbnMuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9hc3luYy1vcGVyYXRpb25zLmpzCShyZXZpc2lv
biAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2FzeW5j
LW9wZXJhdGlvbnMuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsMTA2ICswLDAgQEAKLWlmICh0aGlz
LmltcG9ydFNjcmlwdHMpIHsKLSAgICBpbXBvcnRTY3JpcHRzKCcuLi9yZXNvdXJjZXMvZnMtd29y
a2VyLWNvbW1vbi5qcycpOwotICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcycpOwotICAgIGltcG9ydFNjcmlwdHMoJy4uL3Jlc291cmNlcy9mcy10ZXN0
LXV0aWwuanMnKTsKLX0KLQotZGVzY3JpcHRpb24oIlRlc3QgbWFraW5nIG11bHRpcGxlIGFzeW5j
IEZpbGVTeXN0ZW0gb3BlcmF0aW9ucy4iKTsKLQotdmFyIGZpbGVTeXN0ZW0gPSBudWxsOwotCi12
YXIgYTsKLXZhciBiOwotdmFyIGM7Ci12YXIgZDsKLQotdmFyIHBhdGhzID0gW107Ci12YXIgZGly
c0NvdW50ID0gMDsKLXZhciByZWFkZXIgPSBudWxsOwotCi1mdW5jdGlvbiBlcnJvckNhbGxiYWNr
KGVycm9yKSB7Ci0gICAgZGVidWcoIkdvdCBlcnJvcjogIiArIGVycm9yLmNvZGUpOwotICAgIHJl
bW92ZUFsbEluRGlyZWN0b3J5KGZpbGVTeXN0ZW0ucm9vdCk7Ci0gICAgZmluaXNoSlNUZXN0KCk7
Ci19Ci0KLWZ1bmN0aW9uIGVudHJpZXNDYWxsYmFjayhlbnRyaWVzKSB7Ci0gICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBlbnRyaWVzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgIHBhdGhzLnB1c2goZW50
cmllc1tpXS5mdWxsUGF0aCk7Ci0gICAgICAgIGlmIChlbnRyaWVzW2ldLmlzRGlyZWN0b3J5KQot
ICAgICAgICAgICAgZGlyc0NvdW50Kys7Ci0gICAgfQotICAgIGlmICghZW50cmllcy5sZW5ndGgp
IHsKLSAgICAgICAgcmVhZGVyLnJlYWRFbnRyaWVzKGVudHJpZXNDYWxsYmFjaywgZXJyb3JDYWxs
YmFjayk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgcGF0aHMuc29ydCgpOwotICAgICAgICBzaG91
bGRCZSgnIicgKyBwYXRocy5qb2luKCcsJykgKyAnIicsICciL2EsL2IsL2MsL2QyLC9lLC9mIicp
OwotICAgICAgICBzaG91bGRCZSgiZGlyc0NvdW50IiwgIjMiKTsKLSAgICAgICAgcmVtb3ZlQWxs
SW5EaXJlY3RvcnkoZmlsZVN5c3RlbS5yb290KTsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0g
ICAgfQotfQotCi1mdW5jdGlvbiB2ZXJpZnkoKSB7Ci0gICAgZGVidWcoIlZlcmlmeWluZyB0aGUg
RmlsZVN5c3RlbSBzdGF0dXMuIik7Ci0gICAgcmVhZGVyID0gZmlsZVN5c3RlbS5yb290LmNyZWF0
ZVJlYWRlcigpOwotICAgIHJlYWRlci5yZWFkRW50cmllcyhlbnRyaWVzQ2FsbGJhY2ssIGVycm9y
Q2FsbGJhY2spOwotfQotCi1mdW5jdGlvbiBhc3luY1Rlc3QyKCkgewotICAgIGRlYnVnKCJTdGFy
dGluZyBhc3luYyB0ZXN0IHN0YWdlIDIuIik7Ci0KLSAgICB2YXIgaGVscGVyID0gbmV3IEpvaW5I
ZWxwZXIoKTsKLSAgICB2YXIgZG9uZSA9IGZ1bmN0aW9uKCkgeyBoZWxwZXIuZG9uZSgpOyB9Owot
Ci0gICAgaGVscGVyLnJ1bihmdW5jdGlvbigpIHsgYS5jb3B5VG8oYiwgJ3RtcCcsIGRvbmUsIGVy
cm9yQ2FsbGJhY2spOyB9KTsKLSAgICBoZWxwZXIucnVuKGZ1bmN0aW9uKCkgeyBhLmdldE1ldGFk
YXRhKGRvbmUsIGVycm9yQ2FsbGJhY2spOyB9KTsKLSAgICBoZWxwZXIucnVuKGZ1bmN0aW9uKCkg
eyBiLmdldFBhcmVudChkb25lLCBlcnJvckNhbGxiYWNrKTsgfSk7Ci0gICAgaGVscGVyLnJ1bihm
dW5jdGlvbigpIHsgYy5jb3B5VG8oZmlsZVN5c3RlbS5yb290LCAnZicsIGRvbmUsIGVycm9yQ2Fs
bGJhY2spOyB9KTsKLSAgICBoZWxwZXIucnVuKGZ1bmN0aW9uKCkgeyBkLm1vdmVUbyhmaWxlU3lz
dGVtLnJvb3QsICdkMicsIGRvbmUsIGVycm9yQ2FsbGJhY2spOyB9KTsKLSAgICBoZWxwZXIucnVu
KGZ1bmN0aW9uKCkgeyBmaWxlU3lzdGVtLnJvb3QuZ2V0RmlsZSgnZScsIHtjcmVhdGU6dHJ1ZX0s
IGRvbmUsIGVycm9yQ2FsbGJhY2spOyB9KTsKLQotICAgIGhlbHBlci5qb2luKHZlcmlmeSk7Ci19
Ci0KLWZ1bmN0aW9uIGFzeW5jVGVzdDEoKSB7Ci0gICAgZGVidWcoIlN0YXJ0aW5nIGFzeW5jIHRl
c3Qgc3RhZ2UgMS4iKTsKLQotICAgIHZhciBoZWxwZXIgPSBuZXcgSm9pbkhlbHBlcigpOwotICAg
IHZhciByb290ID0gZmlsZVN5c3RlbS5yb290OwotCi0gICAgaGVscGVyLnJ1bihmdW5jdGlvbigp
IHsgcm9vdC5nZXRGaWxlKCdhJywge2NyZWF0ZTp0cnVlfSwgZnVuY3Rpb24oZW50cnkpIHsKLSAg
ICAgICAgYSA9IGVudHJ5OwotICAgICAgICBoZWxwZXIuZG9uZSgpOwotICAgIH0sIGVycm9yQ2Fs
bGJhY2spOyB9KTsKLQotICAgIGhlbHBlci5ydW4oZnVuY3Rpb24oKSB7IHJvb3QuZ2V0RGlyZWN0
b3J5KCdiJywge2NyZWF0ZTp0cnVlfSwgZnVuY3Rpb24oZW50cnkpIHsKLSAgICAgICAgYiA9IGVu
dHJ5OwotICAgICAgICBoZWxwZXIuZG9uZSgpOwotICAgIH0sIGVycm9yQ2FsbGJhY2spOyB9KTsK
LQotICAgIGhlbHBlci5ydW4oZnVuY3Rpb24oKSB7IHJvb3QuZ2V0RGlyZWN0b3J5KCdjJywge2Ny
ZWF0ZTp0cnVlfSwgZnVuY3Rpb24oZW50cnkpIHsKLSAgICAgICAgYyA9IGVudHJ5OwotICAgICAg
ICBoZWxwZXIuZG9uZSgpOwotICAgIH0sIGVycm9yQ2FsbGJhY2spOyB9KTsKLQotICAgIGhlbHBl
ci5ydW4oZnVuY3Rpb24oKSB7IHJvb3QuZ2V0RmlsZSgnZCcsIHtjcmVhdGU6dHJ1ZX0sIGZ1bmN0
aW9uKGVudHJ5KSB7Ci0gICAgICAgIGQgPSBlbnRyeTsKLSAgICAgICAgaGVscGVyLmRvbmUoKTsK
LSAgICB9LCBlcnJvckNhbGxiYWNrKTsgfSk7Ci0KLSAgICBoZWxwZXIuam9pbihhc3luY1Rlc3Qy
KTsKLX0KLQotaWYgKHRoaXMud2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0pIHsKLSAgICBqc1Rlc3RJ
c0FzeW5jID0gdHJ1ZTsKLSAgICB2YXIgaGVscGVyID0gbmV3IEpvaW5IZWxwZXIoKTsKLSAgICBo
ZWxwZXIucnVuKGZ1bmN0aW9uKCkgewotICAgIHdlYmtpdFJlcXVlc3RGaWxlU3lzdGVtLmFwcGx5
KHRoaXMsIFt0aGlzLlRFTVBPUkFSWSwgMTAwLCBmdW5jdGlvbihmcykgewotICAgICAgICBkZWJ1
ZygiR290IEZpbGVTeXN0ZW06IiArIGZzLm5hbWUpOwotICAgICAgICBmaWxlU3lzdGVtID0gZnM7
Ci0gICAgICAgIHJlbW92ZUFsbEluRGlyZWN0b3J5KGZpbGVTeXN0ZW0ucm9vdCwgZnVuY3Rpb24o
KXsgaGVscGVyLmRvbmUoKTsgfSwgZXJyb3JDYWxsYmFjayk7Ci0gICAgfSwgZXJyb3JDYWxsYmFj
a10pOyB9KTsKLSAgICBkZWJ1ZygicmVxdWVzdGVkIEZpbGVTeXN0ZW0uIik7Ci0gICAgaGVscGVy
LmpvaW4oYXN5bmNUZXN0MSk7Ci19IGVsc2UKLSAgICBkZWJ1ZygiVGhpcyB0ZXN0IHJlcXVpcmVz
IEZpbGVTeXN0ZW0gQVBJIHN1cHBvcnQuIik7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVz
eXN0ZW0vcmVzb3VyY2VzL2RpcmVjdG9yeS1lbnRyeS10by11cmkuanMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9kaXJlY3RvcnktZW50cnktdG8t
dXJpLmpzCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0v
cmVzb3VyY2VzL2RpcmVjdG9yeS1lbnRyeS10by11cmkuanMJKHdvcmtpbmcgY29weSkKQEAgLTEs
MzQgKzAsMCBAQAotaWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgewotICAgIGltcG9ydFNjcmlwdHMo
J2ZzLXdvcmtlci1jb21tb24uanMnKTsKLSAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMnKTsKLSAgICBpbXBvcnRTY3JpcHRzKCdmcy10ZXN0LXV0aWwu
anMnKTsKLX0KLQotZGVzY3JpcHRpb24oIk9idGFpbmluZyBVUkwgZnJvbSBEaXJlY3RvcnlFbnRy
eS4iKTsKLQotdmFyIGZpbGVTeXN0ZW0gPSBudWxsOwotdmFyIHRlc3REaXJlY3RvcnlOYW1lID0g
J3Rlc3REaXJlY3RvcnknOwotdmFyIHRlc3REaXJlY3RvcnlVUkkgPSBudWxsOwotCi1mdW5jdGlv
biBlcnJvckNhbGxiYWNrKGVycm9yKSB7Ci0gICAgdGVzdEZhaWxlZCgiRXJyb3Igb2NjdXJlZDoi
ICsgZXJyb3IuY29kZSk7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLWZ1bmN0aW9uIGVudHJ5
VG9VUkwoZW50cnkpIHsKLSAgICB0ZXN0RGlyZWN0b3J5VVJMID0gZW50cnkudG9VUkwoKTsKLSAg
ICBzaG91bGRCZSgidGVzdERpcmVjdG9yeVVSTCIsICInZmlsZXN5c3RlbTpmaWxlOi8vL3RlbXBv
cmFyeS90ZXN0RGlyZWN0b3J5JyIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi1mdW5jdGlv
biBjcmVhdGVUZXN0RGlyZWN0b3J5KCkgewotICAgIGZpbGVTeXN0ZW0ucm9vdC5nZXREaXJlY3Rv
cnkodGVzdERpcmVjdG9yeU5hbWUsIHtjcmVhdGU6dHJ1ZX0sIGVudHJ5VG9VUkwsIGVycm9yQ2Fs
bGJhY2spOwotfQotCi1mdW5jdGlvbiBmaWxlU3lzdGVtQ2FsbGJhY2soZnMpIHsKLSAgICBmaWxl
U3lzdGVtID0gZnM7Ci0gICAgcmVtb3ZlQWxsSW5EaXJlY3RvcnkoZmlsZVN5c3RlbS5yb290LCBj
cmVhdGVUZXN0RGlyZWN0b3J5LCBlcnJvckNhbGxiYWNrKTsKLX0KLQotdmFyIGpzVGVzdElzQXN5
bmMgPSB0cnVlOwotd2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0oVEVNUE9SQVJZLCAxMDAsIGZpbGVT
eXN0ZW1DYWxsYmFjaywgZXJyb3JDYWxsYmFjayk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zp
bGVzeXN0ZW0vcmVzb3VyY2VzL2ZpbGUtZW50cnktdG8tdXJpLXN5bmMuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9maWxlLWVudHJ5LXRvLXVy
aS1zeW5jLmpzCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0
ZW0vcmVzb3VyY2VzL2ZpbGUtZW50cnktdG8tdXJpLXN5bmMuanMJKHdvcmtpbmcgY29weSkKQEAg
LTEsMTUgKzAsMCBAQAotaW1wb3J0U2NyaXB0cygnZnMtd29ya2VyLWNvbW1vbi5qcycpOwotaW1w
b3J0U2NyaXB0cygnLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7Ci0KLWRlc2Ny
aXB0aW9uKCJPYnRhaW5pbmcgVVJMIGZyb20gRmlsZUVudHJ5LiIpOwotCi12YXIgZmlsZVN5c3Rl
bSA9IHdlYmtpdFJlcXVlc3RGaWxlU3lzdGVtU3luYyhURU1QT1JBUlksIDEwMCk7Ci1yZW1vdmVB
bGxJbkRpcmVjdG9yeVN5bmMoZmlsZVN5c3RlbS5yb290KTsKLQotdmFyIHRlc3RGaWxlTmFtZSA9
ICd0ZXN0RmlsZUVudHJ5LnR4dCc7Ci12YXIgdGVzdEZpbGVFbnRyeSA9IGZpbGVTeXN0ZW0ucm9v
dC5nZXRGaWxlKHRlc3RGaWxlTmFtZSwge2NyZWF0ZTp0cnVlfSk7Ci0KLXNob3VsZEJlKCJ0ZXN0
RmlsZUVudHJ5LnRvVVJMKCkiLCAiJ2ZpbGVzeXN0ZW06ZmlsZTovLy90ZW1wb3JhcnkvdGVzdEZp
bGVFbnRyeS50eHQnIik7Ci0KLXJlbW92ZUFsbEluRGlyZWN0b3J5U3luYyhmaWxlU3lzdGVtLnJv
b3QpOwotZmluaXNoSlNUZXN0KCk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0v
cmVzb3VyY2VzL2ZpbGUtZW50cnktdG8tdXJpLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS1lbnRyeS10by11cmkuanMJKHJldmlzaW9u
IDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS1l
bnRyeS10by11cmkuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsMzQgKzAsMCBAQAotaWYgKHRoaXMu
aW1wb3J0U2NyaXB0cykgewotICAgIGltcG9ydFNjcmlwdHMoJ2ZzLXdvcmtlci1jb21tb24uanMn
KTsKLSAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMn
KTsKLSAgICBpbXBvcnRTY3JpcHRzKCdmcy10ZXN0LXV0aWwuanMnKTsKLX0KLQotZGVzY3JpcHRp
b24oIk9idGFpbmluZyBVUkwgZnJvbSBGaWxlRW50cnkuIik7Ci0KLXZhciBmaWxlU3lzdGVtID0g
bnVsbDsKLXZhciB0ZXN0RmlsZU5hbWUgPSAndGVzdEZpbGVFbnRyeS50eHQnOwotdmFyIHRlc3RG
aWxlVVJJID0gbnVsbDsKLQotZnVuY3Rpb24gZXJyb3JDYWxsYmFjayhlcnJvcikgewotICAgIHRl
c3RGYWlsZWQoIkVycm9yIG9jY3VyZWQ6IiArIGVycm9yLmNvZGUpOwotICAgIGZpbmlzaEpTVGVz
dCgpOwotfQotCi1mdW5jdGlvbiBlbnRyeVRvVVJMKGVudHJ5KSB7Ci0gICAgdGVzdEZpbGVVUkwg
PSBlbnRyeS50b1VSTCgpOwotICAgIHNob3VsZEJlKCJ0ZXN0RmlsZVVSTCIsICInZmlsZXN5c3Rl
bTpmaWxlOi8vL3RlbXBvcmFyeS90ZXN0RmlsZUVudHJ5LnR4dCciKTsKLSAgICBmaW5pc2hKU1Rl
c3QoKTsKLX0KLQotZnVuY3Rpb24gY3JlYXRlVGVzdEZpbGUoKSB7Ci0gICAgZmlsZVN5c3RlbS5y
b290LmdldEZpbGUodGVzdEZpbGVOYW1lLCB7Y3JlYXRlOnRydWV9LCBlbnRyeVRvVVJMLCBlcnJv
ckNhbGxiYWNrKTsKLX0KLQotZnVuY3Rpb24gZmlsZVN5c3RlbUNhbGxiYWNrKGZzKSB7Ci0gICAg
ZmlsZVN5c3RlbSA9IGZzOwotICAgIHJlbW92ZUFsbEluRGlyZWN0b3J5KGZpbGVTeXN0ZW0ucm9v
dCwgY3JlYXRlVGVzdEZpbGUsIGVycm9yQ2FsbGJhY2spOwotfQotCi12YXIganNUZXN0SXNBc3lu
YyA9IHRydWU7Ci13ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbShURU1QT1JBUlksIDEwMCwgZmlsZVN5
c3RlbUNhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmls
ZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS1mcm9tLWZpbGUtZW50cnktc3luYy5qcwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZpbGUtZnJvbS1maWxl
LWVudHJ5LXN5bmMuanMJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmls
ZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS1mcm9tLWZpbGUtZW50cnktc3luYy5qcwkod29ya2luZyBj
b3B5KQpAQCAtMSwyMCArMCwwIEBACi0vLyBGSVhNRTogbW92ZSB0aGlzIHVuZGVyIHdvcmtlcnMv
cmVzb3VyY2VzCi1pbXBvcnRTY3JpcHRzKCdmcy13b3JrZXItY29tbW9uLmpzJyk7Ci1pbXBvcnRT
Y3JpcHRzKCcuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKLQotZGVzY3JpcHRp
b24oIk9idGFpbmluZyBGaWxlIGZyb20gRmlsZUVudHJ5U3luYy4iKTsKLQotdmFyIGZpbGVTeXN0
ZW0gPSB3ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbVN5bmModGhpcy5URU1QT1JBUlksIDEwMCk7Ci1y
ZW1vdmVBbGxJbkRpcmVjdG9yeVN5bmMoZmlsZVN5c3RlbS5yb290KTsKLQotdmFyIHRlc3RGaWxl
TmFtZSA9ICcvdGVzdEZpbGVFbnRyeS50eHQnOwotCi12YXIgdGVzdEZpbGVFbnRyeSA9IGZpbGVT
eXN0ZW0ucm9vdC5nZXRGaWxlKHRlc3RGaWxlTmFtZSwge2NyZWF0ZTp0cnVlfSk7Ci12YXIgdGVz
dEZpbGUgPSB0ZXN0RmlsZUVudHJ5LmZpbGUoKTsKLQotc2hvdWxkQmUoInRlc3RGaWxlLm5hbWUi
LCAidGVzdEZpbGVFbnRyeS5uYW1lIik7Ci1zaG91bGRCZSgidGVzdEZpbGUudHlwZSIsICIndGV4
dC9wbGFpbiciKTsKLXNob3VsZEJlKCJ0ZXN0RmlsZS5zaXplIiwgIjAiKTsKLQotcmVtb3ZlQWxs
SW5EaXJlY3RvcnlTeW5jKGZpbGVTeXN0ZW0ucm9vdCk7Ci1maW5pc2hKU1Rlc3QoKTsKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS1mcm9tLWZpbGUtZW50
cnkuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNl
cy9maWxlLWZyb20tZmlsZS1lbnRyeS5qcwkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9maWxlLWZyb20tZmlsZS1lbnRyeS5qcwkod29y
a2luZyBjb3B5KQpAQCAtMSw0MiArMCwwIEBACi1pZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7Ci0g
ICAgaW1wb3J0U2NyaXB0cygnZnMtd29ya2VyLWNvbW1vbi5qcycpOwotICAgIGltcG9ydFNjcmlw
dHMoJy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOwotICAgIGltcG9ydFNjcmlw
dHMoJ2ZzLXRlc3QtdXRpbC5qcycpOwotfQotCi1kZXNjcmlwdGlvbigiT2J0YWluaW5nIEZpbGUg
ZnJvbSBGaWxlRW50cnkuIik7Ci0KLXZhciBmaWxlU3lzdGVtID0gbnVsbDsKLXZhciB0ZXN0Rmls
ZU5hbWUgPSAnL3Rlc3RGaWxlRW50cnkudHh0JzsKLXZhciB0ZXN0RmlsZUVudHJ5ID0gbnVsbDsK
LXZhciB0ZXN0RmlsZSA9IG51bGw7Ci0KLWZ1bmN0aW9uIGVycm9yQ2FsbGJhY2soZXJyb3IpIHsK
LSAgICB0ZXN0RmFpbGVkKCJFcnJvciBvY2N1cmVkOiIgKyBlcnJvci5jb2RlKTsKLSAgICBmaW5p
c2hKU1Rlc3QoKTsKLX0KLQotZnVuY3Rpb24gZmlsZUNhbGxiYWNrKGZpbGUpIHsKLSAgICB0ZXN0
RmlsZSA9IGZpbGU7Ci0gICAgc2hvdWxkQmUoInRlc3RGaWxlLm5hbWUiLCAidGVzdEZpbGVFbnRy
eS5uYW1lIik7Ci0gICAgc2hvdWxkQmUoInRlc3RGaWxlLnR5cGUiLCAiJ3RleHQvcGxhaW4nIik7
Ci0gICAgc2hvdWxkQmUoInRlc3RGaWxlLnNpemUiLCAiMCIpOwotICAgIGZpbmlzaEpTVGVzdCgp
OwotfQotCi1mdW5jdGlvbiBnZXRGaWxlRnJvbUVudHJ5KGVudHJ5KSB7Ci0gICAgdGVzdEZpbGVF
bnRyeSA9IGVudHJ5OwotICAgIGVudHJ5LmZpbGUoZmlsZUNhbGxiYWNrLCBlcnJvckNhbGxiYWNr
KTsKLX0KLQotZnVuY3Rpb24gY3JlYXRlVGVzdEZpbGUoKSB7Ci0gICAgZmlsZVN5c3RlbS5yb290
LmdldEZpbGUodGVzdEZpbGVOYW1lLCB7Y3JlYXRlOnRydWV9LCBnZXRGaWxlRnJvbUVudHJ5LCBl
cnJvckNhbGxiYWNrKTsKLX0KLQotZnVuY3Rpb24gZmlsZVN5c3RlbUNhbGxiYWNrKGZzKSB7Ci0g
ICAgZmlsZVN5c3RlbSA9IGZzOwotICAgIHJlbW92ZUFsbEluRGlyZWN0b3J5KGZpbGVTeXN0ZW0u
cm9vdCwgY3JlYXRlVGVzdEZpbGUsIGVycm9yQ2FsbGJhY2spOwotfQotCi12YXIganNUZXN0SXNB
c3luYyA9IHRydWU7Ci13ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbShURU1QT1JBUlksIDEwMCwgZmls
ZVN5c3RlbUNhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
ZmlsZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS13cml0ZXItYWJvcnQtY29udGludWUuanMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9maWxlLXdyaXRl
ci1hYm9ydC1jb250aW51ZS5qcwkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9maWxlc3lzdGVtL3Jlc291cmNlcy9maWxlLXdyaXRlci1hYm9ydC1jb250aW51ZS5qcwkod29y
a2luZyBjb3B5KQpAQCAtMSwxODggKzAsMCBAQAotaWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgewot
ICAgIGltcG9ydFNjcmlwdHMoJ2ZzLXdvcmtlci1jb21tb24uanMnKTsKLSAgICBpbXBvcnRTY3Jp
cHRzKCcuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKLSAgICBpbXBvcnRTY3Jp
cHRzKCdmaWxlLXdyaXRlci11dGlscy5qcycpOwotfQotCi1kZXNjcmlwdGlvbigiVGVzdCB0aGF0
IEZpbGVXcml0ZXIgY2FuIGNvbnRpbnVlIGltbWVkaWF0ZWx5IGFmdGVyIGFuIGFib3J0LiIpOwot
Ci12YXIgc2F3V3JpdGVTdGFydDsKLXZhciBzYXdBYm9ydDsKLXZhciBzYXdXcml0ZUVuZDsKLXZh
ciB3cml0ZXI7Ci12YXIgZXhwZWN0ZWRMZW5ndGg7Ci12YXIgdHJ1bmNhdGVMZW5ndGg7Ci12YXIg
YmxvYlNpemUgPSAxMTAwMDAwOwotdmFyIGN1cnJlbnRUZXN0ID0gMDsKLXZhciBibG9iID0gZ2V0
QmxvYigpOwotCi0vLyBmaWxlU3lzdGVtT3ZlcmhlYWQgaXMgYW4gZXN0aW1hdGUgb2YgZXh0cmEg
c2l6ZSBuZWVkZWQgdG8gc2F2ZSBhIGZ1bGwgZmlsZQotLy8gc3lzdGVtLCBpdCBuZWVkIHRvIGJl
IGxhcmdlIGVub3VnaCB0byBhdm9pZCB0ZXN0IGZhaWx1cmUgZHVlIHRvIGZpbGUgc3lzdGVtCi0v
LyBxdW90YSBsaW1pdC4KLXZhciBmaWxlU3lzdGVtT3ZlcmhlYWQgPSBibG9iU2l6ZSAqIDUgLyAx
MDAwICsgMTAyNDsKLXZhciBmaWxlU3lzdGVtU2l6ZSA9IGJsb2JTaXplICogMiArIGZpbGVTeXN0
ZW1PdmVyaGVhZDsKLQotdmFyIG1ldGhvZFNldCA9IFsKLSAgeyAgLy8gU2V0dXAgbWV0aG9kIHNl
dCB0aGF0IHdyaXRlcywgdGhlbiBhYm9ydHMgdGhhdCB3cml0ZSBiZWZvcmUgY29tcGxldGlvbi4K
LSAgICBhY3Rpb24gOiBzdGFydFdyaXRlLAotICAgIHZlcmlmeUxlbmd0aCA6IDAsCi0gICAgb253
cml0ZXN0YXJ0IDogYWJvcnRXcml0ZSwKLSAgICBvbnByb2dyZXNzIDogbm9wLAotICAgIG9ud3Jp
dGUgOiBvbkVycm9yLAotICAgIG9uYWJvcnQgOiBsb2dBYm9ydCwKLSAgICBvbndyaXRlZW5kIDog
Y2hlY2tMZW5ndGhBbmRTdGFydE5leHRUZXN0Ci0gIH0sCi0gIHsgIC8vIE1ldGhvZCBzZXQgdGhh
dCBkb2VzIGEgY29tcGxldGUgd3JpdGUuCi0gICAgYWN0aW9uIDogc3RhcnRXcml0ZSwKLSAgICB2
ZXJpZnlMZW5ndGggOiBibG9iU2l6ZSwKLSAgICBvbndyaXRlc3RhcnQgOiBub3AsCi0gICAgb25w
cm9ncmVzcyA6IG5vcCwKLSAgICBvbndyaXRlIDogbm9wLAotICAgIG9uYWJvcnQgOiBvbkVycm9y
LAotICAgIG9ud3JpdGVlbmQgOiBjaGVja0xlbmd0aEFuZFN0YXJ0TmV4dFRlc3QKLSAgfSwKLSAg
eyAvLyBNZXRob2Qgc2V0IHRoYXQgZG9lcyBhIGNvbXBsZXRlIHRydW5jYXRlLCBqdXN0IHRvIGNs
ZWFuIHVwLgotICAgIGFjdGlvbiA6IHN0YXJ0VHJ1bmNhdGUsCi0gICAgdHJ1bmNhdGVMZW5ndGgg
OiAwLAotICAgIHZlcmlmeUxlbmd0aCA6IDAsCi0gICAgb253cml0ZXN0YXJ0IDogbm9wLAotICAg
IG9ucHJvZ3Jlc3MgOiBub3AsCi0gICAgb253cml0ZSA6IG5vcCwKLSAgICBvbmFib3J0IDogb25F
cnJvciwKLSAgICBvbndyaXRlZW5kIDogY2hlY2tMZW5ndGhBbmRTdGFydE5leHRUZXN0Ci0gIH0s
Ci0gIHsgIC8vIFNldHVwIG1ldGhvZCBzZXQgdGhhdCB3cml0ZXMsIHRoZW4gYWJvcnRzIHRoYXQg
d3JpdGUganVzdCBhdCBjb21wbGV0aW9uLgotICAgIGFjdGlvbiA6IHN0YXJ0V3JpdGUsCi0gICAg
dmVyaWZ5TGVuZ3RoIDogYmxvYlNpemUsCi0gICAgb253cml0ZXN0YXJ0IDogbm9wLAotICAgIG9u
cHJvZ3Jlc3MgOiBhYm9ydE9uQ29tcGxldGUsCi0gICAgb253cml0ZSA6IG5vcCwKLSAgICBvbmFi
b3J0IDogbG9nQWJvcnQsCi0gICAgb253cml0ZWVuZCA6IGNoZWNrTGVuZ3RoQW5kU3RhcnROZXh0
VGVzdAotICB9LAotICB7ICAvLyBNZXRob2Qgc2V0IHRoYXQgZG9lcyBhIGNvbXBsZXRlIHdyaXRl
LgotICAgIGFjdGlvbiA6IHN0YXJ0V3JpdGUsCi0gICAgdmVyaWZ5TGVuZ3RoIDogYmxvYlNpemUg
KiAyLCAvLyBBZGQgaW4gbGVmdG92ZXJzIGZyb20gcHJldmlvdXMgbWV0aG9kLgotICAgIG9ud3Jp
dGVzdGFydCA6IG5vcCwKLSAgICBvbnByb2dyZXNzIDogbm9wLAotICAgIG9ud3JpdGUgOiBub3As
Ci0gICAgb25hYm9ydCA6IG9uRXJyb3IsCi0gICAgb253cml0ZWVuZCA6IGNoZWNrTGVuZ3RoQW5k
U3RhcnROZXh0VGVzdAotICB9LAotICB7IC8vIE1ldGhvZCBzZXQgdGhhdCBkb2VzIGEgY29tcGxl
dGUgdHJ1bmNhdGUsIGp1c3QgdG8gY2xlYW4gdXAuCi0gICAgYWN0aW9uIDogc3RhcnRUcnVuY2F0
ZSwKLSAgICB0cnVuY2F0ZUxlbmd0aCA6IDAsCi0gICAgdmVyaWZ5TGVuZ3RoIDogMCwKLSAgICBv
bndyaXRlc3RhcnQgOiBub3AsCi0gICAgb25wcm9ncmVzcyA6IG5vcCwKLSAgICBvbndyaXRlIDog
bm9wLAotICAgIG9uYWJvcnQgOiBvbkVycm9yLAotICAgIG9ud3JpdGVlbmQgOiBjaGVja0xlbmd0
aEFuZFN0YXJ0TmV4dFRlc3QKLSAgfSwKLSAgeyAgLy8gU2V0dXAgbWV0aG9kIHNldCB0aGF0IHdy
aXRlcywgdGhlbiBhYm9ydHMgdGhhdCB3cml0ZSBhcyBpdCBzdGFydHMuCi0gICAgYWN0aW9uIDog
c3RhcnRXcml0ZSwKLSAgICB2ZXJpZnlMZW5ndGggOiAwLAotICAgIG9ud3JpdGVzdGFydCA6IGFi
b3J0V3JpdGUsCi0gICAgb25wcm9ncmVzcyA6IG5vcCwKLSAgICBvbndyaXRlIDogb25FcnJvciwK
LSAgICBvbmFib3J0IDogbG9nQWJvcnQsCi0gICAgb253cml0ZWVuZCA6IGNoZWNrTGVuZ3RoQW5k
U3RhcnROZXh0VGVzdAotICB9LAotICB7IC8vIE1ldGhvZCBzZXQgdGhhdCBkb2VzIGEgY29tcGxl
dGUgdHJ1bmNhdGUuCi0gICAgYWN0aW9uIDogc3RhcnRUcnVuY2F0ZSwKLSAgICB0cnVuY2F0ZUxl
bmd0aCA6IDcsCi0gICAgdmVyaWZ5TGVuZ3RoIDogNywKLSAgICBvbndyaXRlc3RhcnQgOiBub3As
Ci0gICAgb25wcm9ncmVzcyA6IG5vcCwKLSAgICBvbndyaXRlIDogbm9wLAotICAgIG9uYWJvcnQg
OiBvbkVycm9yLAotICAgIG9ud3JpdGVlbmQgOiBjaGVja0xlbmd0aEFuZFN0YXJ0TmV4dFRlc3QK
LSAgfQotXTsKLQotZnVuY3Rpb24gbm9wKCkgewotfQotCi1mdW5jdGlvbiB0ZW5YQmxvYihibG9i
KSB7Ci0gICAgdmFyIGJiID0gW107Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDsgKytpKSB7
Ci0gICAgICAgIGJiLnB1c2goYmxvYik7Ci0gICAgfQotICAgIHJldHVybiBuZXcgQmxvYihiYik7
Ci19Ci0KLWZ1bmN0aW9uIGdldEJsb2IoKSB7Ci0gICAgLy8gTGV0J3MgbWFrZSBpdCBhYm91dCBh
IG1lZ2FieXRlLgotICAgIHZhciBibG9iID0gdGVuWEJsb2IobmV3IEJsb2IoWyJsb3JlbSBpcHN1
bSJdKSk7Ci0gICAgYmxvYiA9IHRlblhCbG9iKGJsb2IpOwotICAgIGJsb2IgPSB0ZW5YQmxvYihi
bG9iKTsKLSAgICBibG9iID0gdGVuWEJsb2IoYmxvYik7Ci0gICAgYmxvYiA9IHRlblhCbG9iKGJs
b2IpOwotICAgIHZhciBzaXplID0gYmxvYi5zaXplOwotICAgIHNob3VsZEJlKCIiICsgc2l6ZSwg
ImJsb2JTaXplIik7Ci0gICAgcmV0dXJuIGJsb2I7Ci19Ci0KLWZ1bmN0aW9uIGFib3J0V3JpdGUo
ZSkgewotICAgIHRlc3RQYXNzZWQoIkNhbGxpbmcgYWJvcnQiKTsKLSAgICB3cml0ZXIuYWJvcnQo
KTsKLX0KLQotZnVuY3Rpb24gYWJvcnRPbkNvbXBsZXRlKGUpIHsKLSAgICBpZiAoZS5sb2FkZWQg
PT0gZS50b3RhbCkgewotICAgICAgICB0ZXN0UGFzc2VkKCJDYWxsaW5nIGFib3J0IGF0IHRoZSBl
bmQgb2YgdGhlIHdyaXRlIik7Ci0gICAgICAgIHdyaXRlci5hYm9ydCgpOwotICAgIH0KLX0KLQot
ZnVuY3Rpb24gbG9nQWJvcnQoZSkgewotICAgIHRlc3RQYXNzZWQoIlNhdyBhYm9ydCIpOwotfQot
Ci1mdW5jdGlvbiBjaGVja0xlbmd0aEFuZFN0YXJ0TmV4dFRlc3QoZSkgewotICAgIHNob3VsZEJl
KCJ3cml0ZXIubGVuZ3RoIiwgIiIgKyBleHBlY3RlZExlbmd0aCk7Ci0gICAgdGVzdFBhc3NlZCgi
U2F3IHdyaXRlZW5kICIgKyBjdXJyZW50VGVzdCArICIuIik7Ci0gICAgKytjdXJyZW50VGVzdDsK
LSAgICBpZiAoY3VycmVudFRlc3QgPCBtZXRob2RTZXQubGVuZ3RoKQotICAgICAgICBydW5UZXN0
KCk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIHRlc3RQYXNzZWQoIkFsbCB0ZXN0cyBjb21wbGV0ZS4i
KTsKLSAgICAgICAgY2xlYW5VcCgpOwotICAgIH0KLX0KLQotZnVuY3Rpb24gc3RhcnRXcml0ZSgp
IHsKLSAgICB0ZXN0UGFzc2VkKCJDYWxsaW5nIHdyaXRlLiIpOwotICAgIHdyaXRlci53cml0ZShi
bG9iKTsKLX0KLQotZnVuY3Rpb24gc3RhcnRUcnVuY2F0ZSgpIHsKLSAgICB0ZXN0UGFzc2VkKCJD
YWxsaW5nIHRydW5jYXRlLiIpOwotICAgIHdyaXRlci50cnVuY2F0ZSh0cnVuY2F0ZUxlbmd0aCk7
Ci19Ci0KLWZ1bmN0aW9uIHNldHVwV3JpdGVyKG1ldGhvZFNldEluZGV4LCB3cml0ZXIpIHsKLSAg
ICB3cml0ZXIub25lcnJvciA9IG9uRXJyb3I7Ci0KLSAgICB2YXIgbWV0aG9kcyA9IG1ldGhvZFNl
dFttZXRob2RTZXRJbmRleF07Ci0gICAgd3JpdGVyLm9uYWJvcnQgPSBtZXRob2RzLm9uYWJvcnQ7
Ci0gICAgd3JpdGVyLm9ud3JpdGVzdGFydCA9IG1ldGhvZHMub253cml0ZXN0YXJ0OwotICAgIHdy
aXRlci5vbnByb2dyZXNzID0gbWV0aG9kcy5vbnByb2dyZXNzOwotICAgIHdyaXRlci5vbndyaXRl
ID0gbWV0aG9kcy5vbndyaXRlOwotICAgIHdyaXRlci5vbndyaXRlZW5kID0gbWV0aG9kcy5vbndy
aXRlZW5kOwotICAgIGV4cGVjdGVkTGVuZ3RoID0gbWV0aG9kcy52ZXJpZnlMZW5ndGg7Ci0gICAg
dHJ1bmNhdGVMZW5ndGggPSBtZXRob2RzLnRydW5jYXRlTGVuZ3RoOwotICAgIG1ldGhvZHMuYWN0
aW9uKCk7Ci19Ci0KLWZ1bmN0aW9uIHJ1blRlc3QoKSB7Ci0gICAgc2V0dXBXcml0ZXIoY3VycmVu
dFRlc3QsIHdyaXRlcik7Ci19Ci0KLXZhciBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLXNldHVwQW5k
UnVuVGVzdChmaWxlU3lzdGVtU2l6ZSwgJ2ZpbGUtd3JpdGVyLWFib3J0JywKLSAgICAgICAgICAg
ICAgICBmdW5jdGlvbiAoZmlsZUVudHJ5LCBmaWxlV3JpdGVyKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGZpbGVFbnRyeUZvckNsZWFudXAgPSBmaWxlRW50cnk7Ci0gICAgICAgICAgICAgICAgICAg
IHdyaXRlciA9IGZpbGVXcml0ZXI7Ci0gICAgICAgICAgICAgICAgICAgIHJ1blRlc3QoKTsKLSAg
ICAgICAgICAgICAgICB9KTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNv
dXJjZXMvZmlsZS13cml0ZXItYWJvcnQtZGVwdGguanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9maWxlLXdyaXRlci1hYm9ydC1kZXB0aC5qcwko
cmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNl
cy9maWxlLXdyaXRlci1hYm9ydC1kZXB0aC5qcwkod29ya2luZyBjb3B5KQpAQCAtMSw3MSArMCww
IEBACi1pZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7Ci0gICAgaW1wb3J0U2NyaXB0cygnZnMtd29y
a2VyLWNvbW1vbi5qcycpOwotICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcycpOwotICAgIGltcG9ydFNjcmlwdHMoJ2ZpbGUtd3JpdGVyLXV0aWxzLmpz
Jyk7Ci19Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IHRoYXQgRmlsZVdyaXRlciBkZWZlbmRzIGFnYWlu
c3QgaW5maW5pdGUgcmVjdXJzaW9uIHZpYSBhYm9ydC4iKTsKLQotdmFyIHNhd1dyaXRlU3RhcnQ7
Ci12YXIgc2F3QWJvcnQ7Ci12YXIgc2F3V3JpdGVFbmQ7Ci12YXIgd3JpdGVyOwotdmFyIGJsb2Ig
PSBuZXcgQmxvYihbImxvcmVtIGlwc3VtIl0pOwotdmFyIHJlY3Vyc2lvbkRlcHRoID0gMDsKLXZh
ciBtZXRob2Q7Ci12YXIgdGVzdHNSdW4gPSAwOwotCi1mdW5jdGlvbiBvbldyaXRlU3RhcnQoZSkg
ewotICAgIHRlc3RQYXNzZWQoIkNhbGxpbmcgYWJvcnQiKTsKLSAgICArK3JlY3Vyc2lvbkRlcHRo
OwotICAgIHdyaXRlci5hYm9ydCgpOwotfQotCi0vLyBXZSBzaG91bGQgYWx3YXlzIGFib3J0IGJl
Zm9yZSBjb21wbGV0aW9uLgotZnVuY3Rpb24gb25Xcml0ZShlKSB7Ci0gICAgdGVzdEZhaWxlZCgi
SW4gb25Xcml0ZS4iKTsKLX0KLQotZnVuY3Rpb24gb25BYm9ydChlKSB7Ci0gICAgdGVzdFBhc3Nl
ZCgiU2F3IGFib3J0Iik7Ci0gICAgdHJ5IHsKLSAgICAgIG1ldGhvZCgpOwotICAgIH0gY2F0Y2gg
KGV4KSB7Ci0gICAgICBhc3NlcnQoZXguY29kZSA9PSAyKTsgIC8vIFNlY3VyaXR5IGVycm9yCi0g
ICAgICB0ZXN0UGFzc2VkKCJTYXcgc2VjdXJpdHkgZXJyb3IiKTsKLSAgICB9Ci19Ci0KLWZ1bmN0
aW9uIG9uV3JpdGVFbmQoZSkgewotICAgIC0tcmVjdXJzaW9uRGVwdGg7Ci0gICAgdGVzdFBhc3Nl
ZCgiU2F3IHdyaXRlZW5kLiIpOwotICAgIGlmICghcmVjdXJzaW9uRGVwdGgpIHsKLSAgICAgICAg
Kyt0ZXN0c1J1bjsKLSAgICAgICAgaWYgKHRlc3RzUnVuID09IDEpIHsKLSAgICAgICAgICAgIG1l
dGhvZCA9IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIkNhbGxpbmcg
dHJ1bmNhdGUuIik7Ci0gICAgICAgICAgICAgICAgd3JpdGVyLnRydW5jYXRlKDcpOwotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgc2V0VGltZW91dChtZXRob2QsIDApOyAgLy8gSW52b2tlIGZy
b20gdGhlIHRvcCBsZXZlbCwgc28gdGhhdCB3ZSdyZSBub3QgYWxyZWFkeSBpbiBhIGhhbmRsZXIu
Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBjbGVhblVwKCk7Ci0gICAgICAgIH0KLSAg
ICB9Ci19Ci0KLWZ1bmN0aW9uIHJ1blRlc3QodW51c2VkRmlsZUVudHJ5LCBmaWxlV3JpdGVyKSB7
Ci0gICAgd3JpdGVyID0gZmlsZVdyaXRlcjsKLSAgICBtZXRob2QgPSBmdW5jdGlvbiAoKSB7Ci0g
ICAgICAgIHRlc3RQYXNzZWQoIkNhbGxpbmcgd3JpdGUuIik7Ci0gICAgICAgIHdyaXRlci53cml0
ZShibG9iKTsKLSAgICB9Ci0gICAgZmlsZVdyaXRlci5vbmVycm9yID0gb25FcnJvcjsKLSAgICBm
aWxlV3JpdGVyLm9uYWJvcnQgPSBvbkFib3J0OwotICAgIGZpbGVXcml0ZXIub253cml0ZXN0YXJ0
ID0gb25Xcml0ZVN0YXJ0OwotICAgIGZpbGVXcml0ZXIub253cml0ZSA9IG9uV3JpdGU7Ci0gICAg
ZmlsZVdyaXRlci5vbndyaXRlZW5kID0gb25Xcml0ZUVuZDsKLSAgICBtZXRob2QoKTsKLX0KLQot
dmFyIGpzVGVzdElzQXN5bmMgPSB0cnVlOwotc2V0dXBBbmRSdW5UZXN0KDIqMTAyNCoxMDI0LCAn
ZmlsZS13cml0ZXItYWJvcnQtZGVwdGgnLCBydW5UZXN0KTsKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS13cml0ZXItYWJvcnQuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9maWxlLXdyaXRlci1hYm9y
dC5qcwkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jl
c291cmNlcy9maWxlLXdyaXRlci1hYm9ydC5qcwkod29ya2luZyBjb3B5KQpAQCAtMSw4NCArMCww
IEBACi1pZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7Ci0gICAgaW1wb3J0U2NyaXB0cygnZnMtd29y
a2VyLWNvbW1vbi5qcycpOwotICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcycpOwotICAgIGltcG9ydFNjcmlwdHMoJ2ZpbGUtd3JpdGVyLXV0aWxzLmpz
Jyk7Ci19Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IHRoYXQgRmlsZVdyaXRlciBoYW5kbGVzIGFib3J0
IHByb3Blcmx5LiIpOwotCi12YXIgc2F3V3JpdGVTdGFydDsKLXZhciBzYXdBYm9ydDsKLXZhciBz
YXdXcml0ZUVuZDsKLXZhciB3cml0ZXI7Ci0KLWZ1bmN0aW9uIHRlblhCbG9iKGJsb2IpIHsKLSAg
ICB2YXIgYmIgPSBbXTsKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwOyArK2kpIHsKLSAgICAg
ICAgYmIucHVzaChibG9iKTsKLSAgICB9Ci0gICAgcmV0dXJuIG5ldyBCbG9iKGJiKTsKLX0KLQot
ZnVuY3Rpb24gb25Xcml0ZVN0YXJ0KGUpIHsKLSAgICBhc3NlcnQod3JpdGVyKTsKLSAgICBhc3Nl
cnQod3JpdGVyLnJlYWR5U3RhdGUgPT0gd3JpdGVyLldSSVRJTkcpOwotICAgIGFzc2VydChlLnR5
cGUgPT0gIndyaXRlc3RhcnQiKTsKLSAgICBhc3NlcnQoIXNhd1dyaXRlU3RhcnQpOwotICAgIGFz
c2VydCghc2F3V3JpdGVFbmQpOwotICAgIGFzc2VydCghZS5sb2FkZWQpOwotICAgIHNhd1dyaXRl
U3RhcnQgPSB0cnVlOwotICAgIHRlc3RQYXNzZWQoIkNhbGxpbmcgYWJvcnQiKTsKLSAgICB3cml0
ZXIuYWJvcnQoKTsKLX0KLQotLy8gV2Ugc2hvdWxkIGFsd2F5cyBhYm9ydCBiZWZvcmUgY29tcGxl
dGlvbi4KLWZ1bmN0aW9uIG9uV3JpdGUoZSkgewotICAgIHRlc3RGYWlsZWQoIkluIG9uV3JpdGUu
Iik7Ci19Ci0KLWZ1bmN0aW9uIG9uQWJvcnQoZSkgewotICAgIGFzc2VydCh3cml0ZXIucmVhZHlT
dGF0ZSA9PSB3cml0ZXIuRE9ORSk7Ci0gICAgYXNzZXJ0KHdyaXRlci5lcnJvci5jb2RlID09IHdy
aXRlci5lcnJvci5BQk9SVF9FUlIpOwotICAgIGFzc2VydChzYXdXcml0ZVN0YXJ0KTsKLSAgICBh
c3NlcnQoIXNhd1dyaXRlRW5kKTsKLSAgICBhc3NlcnQoIXNhd0Fib3J0KTsKLSAgICBhc3NlcnQo
ZS50eXBlID09ICJhYm9ydCIpOwotICAgIHNhd0Fib3J0ID0gdHJ1ZTsKLSAgICB0ZXN0UGFzc2Vk
KCJTYXcgYWJvcnQiKTsKLX0KLQotZnVuY3Rpb24gb25Xcml0ZUVuZChlKSB7Ci0gICAgYXNzZXJ0
KHdyaXRlci5yZWFkeVN0YXRlID09IHdyaXRlci5ET05FKTsKLSAgICBhc3NlcnQod3JpdGVyLmVy
cm9yLmNvZGUgPT0gd3JpdGVyLmVycm9yLkFCT1JUX0VSUik7Ci0gICAgYXNzZXJ0KHNhd1dyaXRl
U3RhcnQpOwotICAgIGFzc2VydChzYXdBYm9ydCk7Ci0gICAgYXNzZXJ0KCFzYXdXcml0ZUVuZCk7
Ci0gICAgYXNzZXJ0KGUudHlwZSA9PSAid3JpdGVlbmQiKTsKLSAgICBzYXdXcml0ZUVuZCA9IHRy
dWU7Ci0gICAgdGVzdFBhc3NlZCgiU2F3IHdyaXRlZW5kLiIpOwotICAgIHdyaXRlci5hYm9ydCgp
OyAgLy8gVmVyaWZ5IHRoYXQgdGhpcyBkb2VzIG5vdGhpbmcgaW4gcmVhZHlTdGF0ZSBET05FLgot
ICAgIGNsZWFuVXAoKTsKLX0KLQotZnVuY3Rpb24gc3RhcnRXcml0ZShmaWxlV3JpdGVyKSB7Ci0g
ICAgLy8gTGV0J3MgbWFrZSBpdCBhYm91dCBhIG1lZ2FieXRlLgotICAgIHZhciBibG9iID0gdGVu
WEJsb2IobmV3IEJsb2IoWyJsb3JlbSBpcHN1bSJdKSk7Ci0gICAgYmxvYiA9IHRlblhCbG9iKGJs
b2IpOwotICAgIGJsb2IgPSB0ZW5YQmxvYihibG9iKTsKLSAgICBibG9iID0gdGVuWEJsb2IoYmxv
Yik7Ci0gICAgYmxvYiA9IHRlblhCbG9iKGJsb2IpOwotICAgIHdyaXRlciA9IGZpbGVXcml0ZXI7
Ci0gICAgZmlsZVdyaXRlci5vbmVycm9yID0gb25FcnJvcjsKLSAgICBmaWxlV3JpdGVyLm9uYWJv
cnQgPSBvbkFib3J0OwotICAgIGZpbGVXcml0ZXIub253cml0ZXN0YXJ0ID0gb25Xcml0ZVN0YXJ0
OwotICAgIGZpbGVXcml0ZXIub253cml0ZSA9IG9uV3JpdGU7Ci0gICAgZmlsZVdyaXRlci5vbndy
aXRlZW5kID0gb25Xcml0ZUVuZDsKLSAgICBmaWxlV3JpdGVyLmFib3J0KCk7ICAvLyBWZXJpZnkg
dGhhdCB0aGlzIGRvZXMgbm90aGluZyBpbiByZWFkeVN0YXRlIElOSVQuCi0gICAgZmlsZVdyaXRl
ci53cml0ZShibG9iKTsKLX0KLQotZnVuY3Rpb24gcnVuVGVzdCh1bnVzZWRGaWxlRW50cnksIGZp
bGVXcml0ZXIpIHsKLSAgICBzdGFydFdyaXRlKGZpbGVXcml0ZXIpOwotfQotdmFyIGpzVGVzdElz
QXN5bmMgPSB0cnVlOwotc2V0dXBBbmRSdW5UZXN0KDIqMTAyNCoxMDI0LCAnZmlsZS13cml0ZXIt
YWJvcnQnLCBydW5UZXN0KTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNv
dXJjZXMvZmlsZS13cml0ZXItZW1wdHktYmxvYi5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZpbGUtd3JpdGVyLWVtcHR5LWJsb2IuanMJKHJl
dmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMv
ZmlsZS13cml0ZXItZW1wdHktYmxvYi5qcwkod29ya2luZyBjb3B5KQpAQCAtMSwyOSArMCwwIEBA
Ci1pZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7Ci0gICAgaW1wb3J0U2NyaXB0cygnZnMtd29ya2Vy
LWNvbW1vbi5qcycpOwotICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcycpOwotICAgIGltcG9ydFNjcmlwdHMoJ2ZpbGUtd3JpdGVyLXV0aWxzLmpzJyk7
Ci19Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IHRoYXQgRmlsZVdyaXRlciB3b3JrcyB3aXRob3V0IGNy
YXNoIHdoZW4gdHJ5aW5nIHRvIHdyaXRlIGFuIGVtcHR5IGJsb2IuIik7Ci0KLXZhciBmaWxlRW50
cnk7Ci0KLWZ1bmN0aW9uIG9uVGVzdFN1Y2Nlc3MoKSB7Ci0gICAgdGVzdFBhc3NlZCgiU3VjY2Vz
c2Z1bGx5IHdyb3RlIGJsb2IuIik7Ci0gICAgY2xlYW5VcCgpOwotfQotCi1mdW5jdGlvbiBzdGFy
dFdyaXRlKHdyaXRlcikgewotICAgIHZhciBibG9iID0gbmV3IEJsb2IoWyIiXSk7Ci0gICAgd3Jp
dGVyLm9uZXJyb3IgPSBvbkVycm9yOwotICAgIHdyaXRlci5vbndyaXRlZW5kID0gb25UZXN0U3Vj
Y2VzczsKLSAgICB3cml0ZXIud3JpdGUoYmxvYik7Ci19Ci0KLWZ1bmN0aW9uIHJ1blRlc3QodW51
c2VkRmlsZUVudHJ5LCBmaWxlV3JpdGVyKSB7Ci0gICAgc3RhcnRXcml0ZShmaWxlV3JpdGVyKTsK
LSAgICBnYygpOwotfQotdmFyIGpzVGVzdElzQXN5bmMgPSB0cnVlOwotc2V0dXBBbmRSdW5UZXN0
KDIgKiAxMDI0ICogMTAyNCwgJ2ZpbGUtd3JpdGVyLWVtcHR5LWJsb2InLCBydW5UZXN0KTsKLQpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9maWxlLXdyaXRlci1l
dmVudHMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291
cmNlcy9maWxlLXdyaXRlci1ldmVudHMuanMJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRl
c3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS13cml0ZXItZXZlbnRzLmpzCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDEwNCArMCwwIEBACi1pZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7Ci0g
ICAgaW1wb3J0U2NyaXB0cygnZnMtd29ya2VyLWNvbW1vbi5qcycpOwotICAgIGlmICghKCdkZXNj
cmlwdGlvbicgaW4gc2VsZikpICAvLyBTaGFyZWQgd29ya2VycyB3aWxsIGFscmVhZHkgaGF2ZSBp
bXBvcnRlZCB0aGlzLCBhbmQgaW1wb3J0aW5nIHR3aWNlIHdvdWxkIGJyZWFrIGl0LgotICAgICAg
ICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKLSAg
ICBpbXBvcnRTY3JpcHRzKCdmaWxlLXdyaXRlci11dGlscy5qcycpOwotfQotCi1kZXNjcmlwdGlv
bigiVGVzdCB0aGF0IEZpbGVXcml0ZXIgcHJvZHVjZXMgcHJvcGVyIHByb2dyZXNzIGV2ZW50cy4i
KTsKLQotdmFyIGZpbGVFbnRyeTsKLXZhciBzYXdXcml0ZVN0YXJ0OwotdmFyIHNhd1dyaXRlOwot
dmFyIHNhd1dyaXRlRW5kOwotdmFyIHNhd1Byb2dyZXNzOwotdmFyIHdyaXRlcjsKLXZhciBsYXN0
UHJvZ3Jlc3MgPSAwOwotdmFyIHRvQmVXcml0dGVuOwotCi1mdW5jdGlvbiB0ZW5YQmxvYihibG9i
KSB7Ci0gICAgdmFyIGJiID0gW107Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDsgKytpKSB7
Ci0gICAgICAgIGJiLnB1c2goYmxvYik7Ci0gICAgfQotICAgIHJldHVybiBuZXcgQmxvYihiYik7
Ci19Ci0KLWZ1bmN0aW9uIG9uV3JpdGVTdGFydChlKSB7Ci0gICAgYXNzZXJ0KHdyaXRlcik7Ci0g
ICAgYXNzZXJ0KHdyaXRlci5yZWFkeVN0YXRlID09IHdyaXRlci5XUklUSU5HKTsKLSAgICBhc3Nl
cnQoZS50eXBlID09ICJ3cml0ZXN0YXJ0Iik7Ci0gICAgYXNzZXJ0KCFzYXdXcml0ZVN0YXJ0KTsK
LSAgICBhc3NlcnQoIXNhd1Byb2dyZXNzKTsKLSAgICBhc3NlcnQoIXNhd1dyaXRlKTsKLSAgICBh
c3NlcnQoIXNhd1dyaXRlRW5kKTsKLSAgICBhc3NlcnQoIWUubG9hZGVkKTsKLSAgICBhc3NlcnQo
ZS50b3RhbCA9PSB0b0JlV3JpdHRlbik7Ci0gICAgc2F3V3JpdGVTdGFydCA9IHRydWU7Ci19Ci0K
LWZ1bmN0aW9uIG9uUHJvZ3Jlc3MoZSkgewotICAgIGFzc2VydCh3cml0ZXIucmVhZHlTdGF0ZSA9
PSB3cml0ZXIuV1JJVElORyk7Ci0gICAgYXNzZXJ0KHNhd1dyaXRlU3RhcnQpOwotICAgIGFzc2Vy
dCghc2F3V3JpdGUpOwotICAgIGFzc2VydCghc2F3V3JpdGVFbmQpOwotICAgIGFzc2VydChlLnR5
cGUgPT0gInByb2dyZXNzIik7Ci0gICAgYXNzZXJ0KGUubG9hZGVkIDw9IGUudG90YWwpOwotICAg
IGFzc2VydChsYXN0UHJvZ3Jlc3MgPCBlLmxvYWRlZCk7Ci0gICAgYXNzZXJ0KGUudG90YWwgPT0g
dG9CZVdyaXR0ZW4pOwotICAgIGxhc3RQcm9ncmVzcyA9IGUubG9hZGVkOwotICAgIHNhd1Byb2dy
ZXNzID0gdHJ1ZTsKLX0KLQotZnVuY3Rpb24gb25Xcml0ZShlKSB7Ci0gICAgYXNzZXJ0KHdyaXRl
ci5yZWFkeVN0YXRlID09IHdyaXRlci5ET05FKTsKLSAgICBhc3NlcnQoc2F3V3JpdGVTdGFydCk7
Ci0gICAgYXNzZXJ0KHNhd1Byb2dyZXNzKTsKLSAgICBhc3NlcnQobGFzdFByb2dyZXNzID09IGUu
dG90YWwpOwotICAgIGFzc2VydCghc2F3V3JpdGUpOwotICAgIGFzc2VydCghc2F3V3JpdGVFbmQp
OwotICAgIGFzc2VydChlLnR5cGUgPT0gIndyaXRlIik7Ci0gICAgYXNzZXJ0KGUubG9hZGVkID09
IGUudG90YWwpOwotICAgIGFzc2VydChlLnRvdGFsID09IHRvQmVXcml0dGVuKTsKLSAgICBzYXdX
cml0ZSA9IHRydWU7Ci19Ci0KLWZ1bmN0aW9uIG9uV3JpdGVFbmQoZSkgewotICAgIGFzc2VydCh3
cml0ZXIucmVhZHlTdGF0ZSA9PSB3cml0ZXIuRE9ORSk7Ci0gICAgYXNzZXJ0KHNhd1dyaXRlU3Rh
cnQpOwotICAgIGFzc2VydChzYXdQcm9ncmVzcyk7Ci0gICAgYXNzZXJ0KHNhd1dyaXRlKTsKLSAg
ICBhc3NlcnQoIXNhd1dyaXRlRW5kKTsKLSAgICBhc3NlcnQoZS50eXBlID09ICJ3cml0ZWVuZCIp
OwotICAgIGFzc2VydChlLmxvYWRlZCA9PSBlLnRvdGFsKTsKLSAgICBhc3NlcnQoZS50b3RhbCA9
PSB0b0JlV3JpdHRlbik7Ci0gICAgc2F3V3JpdGVFbmQgPSB0cnVlOwotICAgIHRlc3RQYXNzZWQo
IlNhdyBhbGwgdGhlIHJpZ2h0IGV2ZW50cy4iKTsKLSAgICBjbGVhblVwKCk7Ci19Ci0KLWZ1bmN0
aW9uIHN0YXJ0V3JpdGUoZmlsZVdyaXRlcikgewotICAgIC8vIExldCdzIG1ha2UgaXQgYWJvdXQg
YSBtZWdhYnl0ZS4KLSAgICB2YXIgYmxvYiA9IHRlblhCbG9iKG5ldyBCbG9iKFsibG9yZW0gaXBz
dW0iXSkpOwotICAgIGJsb2IgPSB0ZW5YQmxvYihibG9iKTsKLSAgICBibG9iID0gdGVuWEJsb2Io
YmxvYik7Ci0gICAgYmxvYiA9IHRlblhCbG9iKGJsb2IpOwotICAgIGJsb2IgPSB0ZW5YQmxvYihi
bG9iKTsKLSAgICB0b0JlV3JpdHRlbiA9IGJsb2Iuc2l6ZTsKLSAgICB3cml0ZXIgPSBmaWxlV3Jp
dGVyOwotICAgIGZpbGVXcml0ZXIub25lcnJvciA9IG9uRXJyb3I7Ci0gICAgZmlsZVdyaXRlci5v
bndyaXRlc3RhcnQgPSBvbldyaXRlU3RhcnQ7Ci0gICAgZmlsZVdyaXRlci5vbnByb2dyZXNzID0g
b25Qcm9ncmVzczsKLSAgICBmaWxlV3JpdGVyLm9ud3JpdGUgPSBvbldyaXRlOwotICAgIGZpbGVX
cml0ZXIub253cml0ZWVuZCA9IG9uV3JpdGVFbmQ7Ci0gICAgZmlsZVdyaXRlci53cml0ZShibG9i
KTsKLX0KLQotZnVuY3Rpb24gcnVuVGVzdCh1bnVzZWRGaWxlRW50cnksIGZpbGVXcml0ZXIpIHsK
LSAgICBhc3NlcnQodHlwZW9mIGZpbGVXcml0ZXIuYWRkRXZlbnRMaXN0ZW5lciA9PT0gJ2Z1bmN0
aW9uJyk7Ci0gICAgYXNzZXJ0KHR5cGVvZiBmaWxlV3JpdGVyLnJlbW92ZUV2ZW50TGlzdGVuZXIg
PT09ICdmdW5jdGlvbicpOwotICAgIGFzc2VydCh0eXBlb2YgZmlsZVdyaXRlci5kaXNwYXRjaEV2
ZW50ID09PSAnZnVuY3Rpb24nKTsKLSAgICBzdGFydFdyaXRlKGZpbGVXcml0ZXIpOwotfQotdmFy
IGpzVGVzdElzQXN5bmMgPSB0cnVlOwotc2V0dXBBbmRSdW5UZXN0KDIqMTAyNCoxMDI0LCAnZmls
ZS13cml0ZXItZXZlbnRzJywgcnVuVGVzdCk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVz
eXN0ZW0vcmVzb3VyY2VzL2ZpbGUtd3JpdGVyLWdjLWJsb2IuanMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9maWxlLXdyaXRlci1nYy1ibG9iLmpz
CShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3Vy
Y2VzL2ZpbGUtd3JpdGVyLWdjLWJsb2IuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsNDEgKzAsMCBA
QAotaWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgewotICAgIGltcG9ydFNjcmlwdHMoJ2ZzLXdvcmtl
ci1jb21tb24uanMnKTsKLSAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMnKTsKLSAgICBpbXBvcnRTY3JpcHRzKCdmaWxlLXdyaXRlci11dGlscy5qcycp
OwotfQotCi1kZXNjcmlwdGlvbigiVGVzdCB0aGF0IGEgYmxvYiB3b24ndCBnZXQgZ2FyYmFnZS1j
b2xsZWN0ZWQgd2hpbGUgYmVpbmcgd3JpdHRlbiBvdXQgYnkgYSBGaWxlV3JpdGVyLiIpOwotCi12
YXIgZmlsZUVudHJ5OwotCi1mdW5jdGlvbiBvblRlc3RTdWNjZXNzKCkgewotICAgIHRlc3RQYXNz
ZWQoIlN1Y2Nlc3NmdWxseSB3cm90ZSBibG9iLiIpOwotICAgIGNsZWFuVXAoKTsKLX0KLQotZnVu
Y3Rpb24gdGVuWEJsb2IoYmxvYikgewotICAgIHZhciBiYiA9IFtdOwotICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgMTA7ICsraSkgewotICAgICAgICBiYi5wdXNoKGJsb2IpOwotICAgIH0KLSAgICBy
ZXR1cm4gbmV3IEJsb2IoYmIpOwotfQotCi1mdW5jdGlvbiBzdGFydFdyaXRlKHdyaXRlcikgewot
ICAgIC8vIExldCdzIG1ha2UgaXQgYWJvdXQgYSBtZWdhYnl0ZS4KLSAgICB2YXIgYmxvYiA9IHRl
blhCbG9iKG5ldyBCbG9iKFsibG9yZW0gaXBzdW0iXSkpOwotICAgIGJsb2IgPSB0ZW5YQmxvYihi
bG9iKTsKLSAgICBibG9iID0gdGVuWEJsb2IoYmxvYik7Ci0gICAgYmxvYiA9IHRlblhCbG9iKGJs
b2IpOwotICAgIGJsb2IgPSB0ZW5YQmxvYihibG9iKTsKLSAgICB3cml0ZXIub25lcnJvciA9IG9u
RXJyb3I7Ci0gICAgd3JpdGVyLm9ud3JpdGVlbmQgPSBvblRlc3RTdWNjZXNzOwotICAgIHdyaXRl
ci53cml0ZShibG9iKTsKLX0KLQotZnVuY3Rpb24gcnVuVGVzdCh1bnVzZWRGaWxlRW50cnksIGZp
bGVXcml0ZXIpIHsKLSAgICBzdGFydFdyaXRlKGZpbGVXcml0ZXIpOwotICAgIGdjKCk7Ci19Ci12
YXIganNUZXN0SXNBc3luYyA9IHRydWU7Ci1zZXR1cEFuZFJ1blRlc3QoMioxMDI0KjEwMjQsICdm
aWxlLXdyaXRlci1nYy1ibG9iJywgcnVuVGVzdCk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zp
bGVzeXN0ZW0vcmVzb3VyY2VzL2ZpbGUtd3JpdGVyLXN5bmMtdHJ1bmNhdGUtZXh0ZW5kLmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS13
cml0ZXItc3luYy10cnVuY2F0ZS1leHRlbmQuanMJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91
dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS13cml0ZXItc3luYy10cnVuY2F0
ZS1leHRlbmQuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsNDAgKzAsMCBAQAotaWYgKHRoaXMuaW1w
b3J0U2NyaXB0cykgewotICAgIGltcG9ydFNjcmlwdHMoJy4uL3Jlc291cmNlcy9mcy13b3JrZXIt
Y29tbW9uLmpzJyk7Ci0gICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzJyk7Ci0gICAgaW1wb3J0U2NyaXB0cygnLi4vcmVzb3VyY2VzL2ZzLXRlc3QtdXRp
bC5qcycpOwotICAgIGltcG9ydFNjcmlwdHMoJy4uL3Jlc291cmNlcy9maWxlLXdyaXRlci11dGls
cy5qcycpOwotfQotCi1kZXNjcmlwdGlvbigiVGVzdCB1c2luZyBGaWxlV3JpdGVyU3luYy50cnVu
Y2F0ZSB0byBleHRlbmQgYSBmaWxlLiIpOwotCi0vLyBTdGFydCB3aXRoIGFuIGVtcHR5IEZpbGVT
eXN0ZW0uCi12YXIgZmlsZVN5c3RlbSA9IHdlYmtpdFJlcXVlc3RGaWxlU3lzdGVtU3luYyh0aGlz
LlRFTVBPUkFSWSwgMTAwKTsKLXJlbW92ZUFsbEluRGlyZWN0b3J5U3luYyhmaWxlU3lzdGVtLnJv
b3QpOwotCi0vLyBQcmVwYXJlIGEgZmlsZSB3aXRoIHNhbXBsZSBjb250ZW50cy4KLXZhciBlbnRy
eSA9IGZpbGVTeXN0ZW0ucm9vdC5nZXRGaWxlKCdhJywge2NyZWF0ZTp0cnVlLCBleGNsdXNpdmU6
dHJ1ZX0pOwotdmFyIHdyaXRlciA9IGVudHJ5LmNyZWF0ZVdyaXRlcigpOwotYXNzZXJ0KCF3cml0
ZXIucG9zaXRpb24pOwotdmFyIHRlc3REYXRhID0gInRlc3QgZGF0YSI7Ci13cml0ZXIud3JpdGUo
bmV3IEJsb2IoW3Rlc3REYXRhXSkpOwotYXNzZXJ0KHdyaXRlci5sZW5ndGggPT0gdGVzdERhdGEu
bGVuZ3RoKTsKLWFzc2VydCh3cml0ZXIucG9zaXRpb24gPT0gd3JpdGVyLmxlbmd0aCk7Ci0KLS8v
IEV4dGVuZCB0aGUgZmlsZSB2aWEgdHJ1bmNhdGUuCi12YXIgZXh0ZW5zaW9uTGVuZ3RoID0gMTA7
Ci13cml0ZXIudHJ1bmNhdGUod3JpdGVyLmxlbmd0aCArIGV4dGVuc2lvbkxlbmd0aCk7Ci0KLS8v
IFZlcmlmeSB0aGUgY29udGVudHMuCi1hc3NlcnQod3JpdGVyLmxlbmd0aCA9PSB0ZXN0RGF0YS5s
ZW5ndGggKyBleHRlbnNpb25MZW5ndGgpOwotYXNzZXJ0KHdyaXRlci5wb3NpdGlvbiA9PSB0ZXN0
RGF0YS5sZW5ndGgpOwotdmFyIGZpbGUgPSBlbnRyeS5maWxlKCk7Ci12YXIgcmVhZGVyID0gbmV3
IEZpbGVSZWFkZXJTeW5jKCk7Ci12YXIgY29udGVudHMgPSByZWFkZXIucmVhZEFzQmluYXJ5U3Ry
aW5nKGZpbGUpOwotdmFyIGk7Ci1mb3IgKGkgPSAwOyBpIDwgdGVzdERhdGEubGVuZ3RoOyArK2kp
Ci0gICAgYXNzZXJ0KGNvbnRlbnRzLmNoYXJDb2RlQXQoaSkgPT0gdGVzdERhdGEuY2hhckNvZGVB
dChpKSk7Ci1mb3IgKDsgaSA8IHdyaXRlci5sZW5ndGg7ICsraSkKLSAgICBhc3NlcnQoIWNvbnRl
bnRzLmNoYXJDb2RlQXQoaSkpOwotCi10ZXN0UGFzc2VkKCJUcnVuY2F0ZSBleHRlbnNpb24gdmVy
aWZpZWQuIik7Ci1maW5pc2hKU1Rlc3QoKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5
c3RlbS9yZXNvdXJjZXMvZmlsZS13cml0ZXItc3luYy13cml0ZS1vdmVybGFwcGVkLmpzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS13cml0
ZXItc3luYy13cml0ZS1vdmVybGFwcGVkLmpzCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZpbGUtd3JpdGVyLXN5bmMtd3JpdGUtb3Zl
cmxhcHBlZC5qcwkod29ya2luZyBjb3B5KQpAQCAtMSw5MSArMCwwIEBACi1pZiAodGhpcy5pbXBv
cnRTY3JpcHRzKSB7Ci0gICAgaW1wb3J0U2NyaXB0cygnLi4vcmVzb3VyY2VzL2ZzLXdvcmtlci1j
b21tb24uanMnKTsKLSAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMnKTsKLSAgICBpbXBvcnRTY3JpcHRzKCcuLi9yZXNvdXJjZXMvZnMtdGVzdC11dGls
LmpzJyk7Ci0gICAgaW1wb3J0U2NyaXB0cygnLi4vcmVzb3VyY2VzL2ZpbGUtd3JpdGVyLXV0aWxz
LmpzJyk7Ci19Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IHVzaW5nIEZpbGVXcml0ZXJTeW5jLnNlZWsg
dG8gd3JpdGUgb3ZlcmxhcHBpbmcgZXhpc3RpbmcgZGF0YSBpbiBhIGZpbGUuIik7Ci0KLS8vIFN0
YXJ0IHdpdGggYW4gZW1wdHkgRmlsZVN5c3RlbS4KLXZhciBmaWxlU3lzdGVtID0gd2Via2l0UmVx
dWVzdEZpbGVTeXN0ZW1TeW5jKHRoaXMuVEVNUE9SQVJZLCAxMDApOwotcmVtb3ZlQWxsSW5EaXJl
Y3RvcnlTeW5jKGZpbGVTeXN0ZW0ucm9vdCk7Ci0KLS8vIFByZXBhcmUgYSBmaWxlIHdpdGggc2Ft
cGxlIGNvbnRlbnRzLgotdmFyIGVudHJ5ID0gZmlsZVN5c3RlbS5yb290LmdldEZpbGUoJ2EnLCB7
Y3JlYXRlOnRydWUsIGV4Y2x1c2l2ZTp0cnVlfSk7Ci12YXIgd3JpdGVyID0gZW50cnkuY3JlYXRl
V3JpdGVyKCk7Ci1hc3NlcnQoIXdyaXRlci5wb3NpdGlvbik7Ci12YXIgdGVzdERhdGEgPSAidGVz
dCBkYXRhIjsKLXZhciBibG9iID0gbmV3IEJsb2IoW3Rlc3REYXRhXSk7Ci13cml0ZXIud3JpdGUo
YmxvYik7Ci1hc3NlcnQod3JpdGVyLmxlbmd0aCA9PSB0ZXN0RGF0YS5sZW5ndGgpOwotYXNzZXJ0
KHdyaXRlci5wb3NpdGlvbiA9PSB3cml0ZXIubGVuZ3RoKTsKLQotLy8gU2VlayBiYWNrIHRvIGZy
b20gdGhlIGVuZCwgdGhlbiBvdmVyd3JpdGUsIGV4dGVuZGluZyB0aGUgZmlsZS4KLXZhciBleHRl
bnNpb25PZmZzZXQgPSAtNDsKLXdyaXRlci5zZWVrKGV4dGVuc2lvbk9mZnNldCk7Ci13cml0ZXIu
d3JpdGUoYmxvYik7Ci0KLS8vIFZlcmlmeSB0aGUgY29udGVudHMuCi1hc3NlcnQod3JpdGVyLmxl
bmd0aCA9PSAyICogdGVzdERhdGEubGVuZ3RoICsgZXh0ZW5zaW9uT2Zmc2V0KTsKLWFzc2VydCh3
cml0ZXIucG9zaXRpb24gPT0gd3JpdGVyLmxlbmd0aCk7Ci12YXIgZmlsZSA9IGVudHJ5LmZpbGUo
KTsKLXZhciByZWFkZXIgPSBuZXcgRmlsZVJlYWRlclN5bmMoKTsKLXZhciBjb250ZW50cyA9IHJl
YWRlci5yZWFkQXNCaW5hcnlTdHJpbmcoZmlsZSk7Ci12YXIgaTsKLWZvciAoaSA9IDA7IGkgPCB0
ZXN0RGF0YS5sZW5ndGggKyBleHRlbnNpb25PZmZzZXQ7ICsraSkKLSAgICBhc3NlcnQoY29udGVu
dHMuY2hhckNvZGVBdChpKSA9PSB0ZXN0RGF0YS5jaGFyQ29kZUF0KGkpKTsKLXZhciBqOwotZm9y
IChqID0gMDsgaSA8IHdyaXRlci5sZW5ndGg7ICsraSwgKytqKQotICAgIGFzc2VydChjb250ZW50
cy5jaGFyQ29kZUF0KGkpID09IHRlc3REYXRhLmNoYXJDb2RlQXQoaikpOwotdGVzdFBhc3NlZCgi
T3ZlcmxhcHBlZCB3cml0ZSAxIHZlcmlmaWVkLiIpOwotCi0vLyBUcnVuY2F0ZSBiYWNrIHRvIGVt
cHR5IGFuZCByZXNldCB0aGUgY29udGVudHMuCi13cml0ZXIudHJ1bmNhdGUoMCk7Ci1hc3NlcnQo
IXdyaXRlci5wb3NpdGlvbik7Ci1hc3NlcnQoIXdyaXRlci5sZW5ndGgpOwotd3JpdGVyLndyaXRl
KGJsb2IpOwotYXNzZXJ0KHdyaXRlci5sZW5ndGggPT0gdGVzdERhdGEubGVuZ3RoKTsKLWFzc2Vy
dCh3cml0ZXIucG9zaXRpb24gPT0gd3JpdGVyLmxlbmd0aCk7Ci0KLS8vIFNlZWsgZm9yd2FyZCBm
cm9tIHRoZSBiZWdpbm5pbmcsIHRoZW4gb3ZlcndyaXRlLCBleHRlbmRpbmcgdGhlIGZpbGUuCi1l
eHRlbnNpb25PZmZzZXQgPSA0Owotd3JpdGVyLnNlZWsoZXh0ZW5zaW9uT2Zmc2V0KTsKLXdyaXRl
ci53cml0ZShibG9iKTsKLWFzc2VydCh3cml0ZXIubGVuZ3RoID09IHRlc3REYXRhLmxlbmd0aCAr
IGV4dGVuc2lvbk9mZnNldCk7Ci1hc3NlcnQod3JpdGVyLnBvc2l0aW9uID09IHdyaXRlci5sZW5n
dGgpOwotCi0vLyBWZXJpZnkgdGhlIGNvbnRlbnRzLgotY29udGVudHMgPSByZWFkZXIucmVhZEFz
QmluYXJ5U3RyaW5nKGZpbGUpOwotZm9yIChpID0gMDsgaSA8IGV4dGVuc2lvbk9mZnNldDsgKytp
KQotICAgIGFzc2VydChjb250ZW50cy5jaGFyQ29kZUF0KGkpID09IHRlc3REYXRhLmNoYXJDb2Rl
QXQoaSkpOwotZm9yIChqID0gMDsgaSA8IHdyaXRlci5sZW5ndGg7ICsraSwgKytqKQotICAgIGFz
c2VydChjb250ZW50cy5jaGFyQ29kZUF0KGkpID09IHRlc3REYXRhLmNoYXJDb2RlQXQoaikpOwot
dGVzdFBhc3NlZCgiT3ZlcmxhcHBlZCB3cml0ZSAyIHZlcmlmaWVkLiIpOwotCi0vLyBUcnVuY2F0
ZSBiYWNrIHRvIGVtcHR5IGFuZCByZXNldCB0aGUgY29udGVudHMuCi13cml0ZXIudHJ1bmNhdGUo
MCk7Ci1hc3NlcnQoIXdyaXRlci5wb3NpdGlvbik7Ci1hc3NlcnQoIXdyaXRlci5sZW5ndGgpOwot
d3JpdGVyLndyaXRlKGJsb2IpOwotd3JpdGVyLndyaXRlKGJsb2IpOwotYXNzZXJ0KHdyaXRlci5s
ZW5ndGggPT0gMiAqIHRlc3REYXRhLmxlbmd0aCk7Ci1hc3NlcnQod3JpdGVyLnBvc2l0aW9uID09
IHdyaXRlci5sZW5ndGgpOwotCi0vLyBTZWVrIGZvcndhcmQgZnJvbSB0aGUgYmVnaW5uaW5nLCB0
aGVuIG92ZXJ3cml0ZSBpbiB0aGUgbWlkZGxlIG9mIHRoZSBmaWxlLgotZXh0ZW5zaW9uT2Zmc2V0
ID0gNDsKLXdyaXRlci5zZWVrKGV4dGVuc2lvbk9mZnNldCk7Ci13cml0ZXIud3JpdGUoYmxvYik7
Ci1hc3NlcnQod3JpdGVyLmxlbmd0aCA9PSAyICogdGVzdERhdGEubGVuZ3RoKTsKLWFzc2VydCh3
cml0ZXIucG9zaXRpb24gPT0gdGVzdERhdGEubGVuZ3RoICsgZXh0ZW5zaW9uT2Zmc2V0KTsKLQot
Ly8gVmVyaWZ5IHRoZSBjb250ZW50cy4KLWNvbnRlbnRzID0gcmVhZGVyLnJlYWRBc0JpbmFyeVN0
cmluZyhmaWxlKTsKLWZvciAoaSA9IDA7IGkgPCBleHRlbnNpb25PZmZzZXQ7ICsraSkKLSAgICBh
c3NlcnQoY29udGVudHMuY2hhckNvZGVBdChpKSA9PSB0ZXN0RGF0YS5jaGFyQ29kZUF0KGkpKTsK
LWZvciAoaiA9IDA7IGkgPCB0ZXN0RGF0YS5sZW5ndGggKyBleHRlbnNpb25PZmZzZXQ7ICsraSwg
KytqKQotICAgIGFzc2VydChjb250ZW50cy5jaGFyQ29kZUF0KGkpID09IHRlc3REYXRhLmNoYXJD
b2RlQXQoaikpOwotZm9yIChqID0gZXh0ZW5zaW9uT2Zmc2V0OyBpIDwgd3JpdGVyLmxlbmd0aDsg
KytpLCArK2opCi0gICAgYXNzZXJ0KGNvbnRlbnRzLmNoYXJDb2RlQXQoaSkgPT0gdGVzdERhdGEu
Y2hhckNvZGVBdChqKSk7Ci10ZXN0UGFzc2VkKCJPdmVybGFwcGVkIHdyaXRlIDMgdmVyaWZpZWQu
Iik7Ci1maW5pc2hKU1Rlc3QoKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9y
ZXNvdXJjZXMvZmlsZS13cml0ZXItdHJ1bmNhdGUtZXh0ZW5kLmpzCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS13cml0ZXItdHJ1bmNhdGUt
ZXh0ZW5kLmpzCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0
ZW0vcmVzb3VyY2VzL2ZpbGUtd3JpdGVyLXRydW5jYXRlLWV4dGVuZC5qcwkod29ya2luZyBjb3B5
KQpAQCAtMSwzOSArMCwwIEBACi1pZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7Ci0gICAgaW1wb3J0
U2NyaXB0cygnZnMtd29ya2VyLWNvbW1vbi5qcycpOwotICAgIGltcG9ydFNjcmlwdHMoJy4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOwotICAgIGltcG9ydFNjcmlwdHMoJ2ZpbGUt
d3JpdGVyLXV0aWxzLmpzJyk7Ci19Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IG9mIGV4dGVuZGluZyBh
IGZpbGUgdXNpbmcgdHJ1bmNhdGUoKS4iKTsKLQotZnVuY3Rpb24gb25UZXN0U3VjY2VlZGVkKCkK
LXsKLSAgICB0ZXN0UGFzc2VkKCJUcnVuY2F0ZSBleHRlbnNpb24gdmVyaWZpZWQuIik7Ci0gICAg
Y2xlYW5VcCgpOwotfQotCi1mdW5jdGlvbiB0cnVuY2F0ZVRvRXh0ZW5kKGZpbGVFbnRyeSwgZmls
ZVdyaXRlciwgY29udGVudHMsIG9uU3VjY2VzcykKLXsKLSAgICB2YXIgZXh0ZW5zaW9uID0gNTsK
LSAgICB2YXIgbGVuZ3RoQ2hlY2tlciA9IGZ1bmN0aW9uKCkgewotICAgICAgICB2ZXJpZnlGaWxl
TGVuZ3RoKGZpbGVFbnRyeSwgY29udGVudHMubGVuZ3RoICsgZXh0ZW5zaW9uLCBvblN1Y2Nlc3Mp
OwotICAgIH07Ci0gICAgdmFyIGV4dGVuc2lvbkNoZWNrZXIgPSBmdW5jdGlvbigpIHsKLSAgICAg
ICAgdmVyaWZ5Qnl0ZVJhbmdlSXNaZXJvZXMoZmlsZUVudHJ5LCBjb250ZW50cy5sZW5ndGgsIGV4
dGVuc2lvbiwgbGVuZ3RoQ2hlY2tlcik7Ci0gICAgfTsKLSAgICBmaWxlV3JpdGVyLm9ud3JpdGUg
PSBmdW5jdGlvbigpIHsKLSAgICAgICAgdmVyaWZ5Qnl0ZVJhbmdlQXNTdHJpbmcoZmlsZUVudHJ5
LCAwLCBjb250ZW50cywgZXh0ZW5zaW9uQ2hlY2tlcik7Ci0gICAgfTsKLSAgICBmaWxlV3JpdGVy
LnRydW5jYXRlKGNvbnRlbnRzLmxlbmd0aCArIGV4dGVuc2lvbik7Ci19Ci0KLWZ1bmN0aW9uIHJ1
blRlc3QoZmlsZUVudHJ5LCBmaWxlV3JpdGVyKSB7Ci0gICAgdmFyIGNvbnRlbnRzID0gIkxvcmVt
IGlwc3VtIjsKLSAgICB3cml0ZVN0cmluZyhmaWxlRW50cnksIGZpbGVXcml0ZXIsIDAsIGNvbnRl
bnRzLAotICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAgICB0
cnVuY2F0ZVRvRXh0ZW5kKGZpbGVFbnRyeSwgZmlsZVdyaXRlciwgY29udGVudHMsIG9uVGVzdFN1
Y2NlZWRlZCk7Ci0gICAgICAgICAgICAgICAgfSk7Ci19Ci0KLXZhciBqc1Rlc3RJc0FzeW5jID0g
dHJ1ZTsKLXNldHVwQW5kUnVuVGVzdCgxMDI0LCAnZmlsZS13cml0ZXItdHJ1bmNhdGUtZXh0ZW5k
JywgcnVuVGVzdCk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2Vz
L2ZpbGUtd3JpdGVyLXV0aWxzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmls
ZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS13cml0ZXItdXRpbHMuanMJKHJldmlzaW9uIDE1NjY5MSkK
KysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS13cml0ZXItdXRp
bHMuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsMTY5ICswLDAgQEAKLWZ1bmN0aW9uIHN0cmluZ2lm
eU9iaihvKQotewotICAgIHMgPSAiIjsKLSAgICBpZiAobykKLSAgICAgICAgZm9yIChpbmRleCBp
biBvKSB7Ci0gICAgICAgICAgICBzICs9IGluZGV4ICsgIjogIiArIG9baW5kZXhdICsgIjsiOwot
ICAgICAgICB9Ci0gICAgcmV0dXJuIHM7Ci19Ci0KLWZ1bmN0aW9uIG9uRXJyb3IoZSkKLXsKLSAg
ICB0ZXN0RmFpbGVkKCJHb3QgZXJyb3I6ICIgKyBzdHJpbmdpZnlPYmooZSkpOwotICAgIGNsZWFu
VXAoKTsKLX0KLQotZnVuY3Rpb24gYXNzZXJ0KHMpCi17Ci0gICAgaWYgKCFzKSB7Ci0gICAgICAg
IHZhciBlID0gbmV3IEVycm9yKCJBc3NlcnRpb24gZmFpbGVkLiAiKTsKLSAgICAgICAgb25FcnJv
cihlKTsKLSAgICAgICAgdGhyb3cgZTsKLSAgICB9Ci19Ci0KLXZhciBmaWxlRW50cnlGb3JDbGVh
bnVwOyAgLy8gU2V0IGFzIHNvb24gYXMgd2UgaGF2ZSBvbmUuCi0KLWZ1bmN0aW9uIGNsZWFuVXAo
KQotewotICAgIGlmIChmaWxlRW50cnlGb3JDbGVhbnVwKSB7Ci0gICAgICAgIHRyeSB7Ci0gICAg
ICAgICAgICBmaWxlRW50cnlGb3JDbGVhbnVwLnJlbW92ZShmaW5pc2hKU1Rlc3QsIGZpbmlzaEpT
VGVzdCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0gY2F0Y2ggKGV4KSB7Ci0gICAg
ICAgIH0KLSAgICB9Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLS8vIEdlbmVyaWMgZnVuY3Rp
b24gdGhhdCBnZXRzIGEgRmlsZSBmcm9tIGEgRmlsZUVudHJ5IGFuZCBjYWxscyBhIGN1c3RvbSB2
ZXJpZmljYXRpb24gZnVuY3Rpb24gb24gaXQuCi1mdW5jdGlvbiB2ZXJpZnlGaWxlQ29udGVudHMo
ZmlsZUVudHJ5LCB2ZXJpZnlGdW5jLCBhcmcwLCBhcmcxLCBvblN1Y2Nlc3MpCi17Ci0gICAgZmls
ZUVudHJ5LmZpbGUoCi0gICAgICAgIGZ1bmN0aW9uKGZpbGUpIHsKLSAgICAgICAgICAgIHZlcmlm
eUZ1bmMoZmlsZSwgYXJnMCwgYXJnMSwgb25TdWNjZXNzKTsKLSAgICAgICAgfSwKLSAgICAgICAg
b25FcnJvcik7Ci19Ci0KLS8vIEhlbHBlciBmdW5jdGlvbiB1c2VkIHdpdGggdmVyaWZ5RmlsZUNv
bnRlbnRzLgotZnVuY3Rpb24gdmVyaWZ5RmlsZUxlbmd0aEhlbHBlcihmaWxlLCBsZW5ndGgsIHVu
dXNlZCwgb25TdWNjZXNzKQotewotICAgIGFzc2VydChmaWxlLnNpemUgPT0gbGVuZ3RoKTsKLSAg
ICBvblN1Y2Nlc3MoKTsKLX0KLQotLy8gVmVyaWZpZXMgdGhhdCB0aGUgY29udGVudHMgb2YgZmls
ZUVudHJ5IGhhdmUgdGhlIHN1cHBsaWVkIGxlbmd0aC4KLWZ1bmN0aW9uIHZlcmlmeUZpbGVMZW5n
dGgoZmlsZUVudHJ5LCBsZW5ndGgsIG9uU3VjY2VzcykKLXsKLSAgICB2ZXJpZnlGaWxlQ29udGVu
dHMoZmlsZUVudHJ5LCB2ZXJpZnlGaWxlTGVuZ3RoSGVscGVyLCBsZW5ndGgsIG51bGwsIG9uU3Vj
Y2Vzcyk7Ci19Ci0KLS8vIEhlbHBlciBmdW5jdGlvbiB1c2VkIHdpdGggdmVyaWZ5RmlsZUNvbnRl
bnRzLgotZnVuY3Rpb24gdmVyaWZ5Qnl0ZVJhbmdlSXNaZXJvZXNIZWxwZXIoZmlsZSwgc3RhcnQs
IGxlbmd0aCwgb25TdWNjZXNzKQotewotICAgIHZhciBmaWxlUmVhZGVyID0gbmV3IEZpbGVSZWFk
ZXIoKTsKLSAgICBmaWxlUmVhZGVyLm9uZXJyb3IgPSBvbkVycm9yOwotICAgIGZpbGVSZWFkZXIu
b25sb2FkID0KLSAgICAgICAgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICB2YXIgcmVzdWx0ID0g
ZmlsZVJlYWRlci5yZXN1bHQ7Ci0gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0
aDsgaSsrKQotICAgICAgICAgICAgICAgIGFzc2VydChyZXN1bHQuY2hhckNvZGVBdChpKSA9PSAw
KTsKLSAgICAgICAgICAgIG9uU3VjY2VzcygpOwotICAgICAgICB9OwotICAgIGZpbGVSZWFkZXIu
cmVhZEFzQmluYXJ5U3RyaW5nKGZpbGUuc2xpY2Uoc3RhcnQsIHN0YXJ0ICsgbGVuZ3RoKSk7Ci19
Ci0KLS8vIFZlcmlmaWVzIHRoYXQgZmlsZUVudHJ5LCBhdCBvZmZzZXQsIGlzIGFsbCB6ZXJvZXMg
Zm9yIGxlbmd0aCBieXRlcy4KLWZ1bmN0aW9uIHZlcmlmeUJ5dGVSYW5nZUlzWmVyb2VzKGZpbGVF
bnRyeSwgb2Zmc2V0LCBsZW5ndGgsIG9uU3VjY2VzcykKLXsKLSAgICB2ZXJpZnlGaWxlQ29udGVu
dHMoZmlsZUVudHJ5LCB2ZXJpZnlCeXRlUmFuZ2VJc1plcm9lc0hlbHBlciwgb2Zmc2V0LCBsZW5n
dGgsIG9uU3VjY2Vzcyk7Ci19Ci0KLS8vIEhlbHBlciBmdW5jdGlvbiB1c2VkIHdpdGggdmVyaWZ5
RmlsZUNvbnRlbnRzLgotZnVuY3Rpb24gdmVyaWZ5Qnl0ZVJhbmdlQXNTdHJpbmdIZWxwZXIoZmls
ZSwgc3RhcnQsIGRhdGEsIG9uU3VjY2VzcykKLXsKLSAgICB2YXIgZmlsZVJlYWRlciA9IG5ldyBG
aWxlUmVhZGVyKCk7Ci0gICAgZmlsZVJlYWRlci5vbmVycm9yID0gb25FcnJvcjsKLSAgICBmaWxl
UmVhZGVyLm9ubG9hZCA9Ci0gICAgICAgIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgYXNzZXJ0
KGZpbGVSZWFkZXIucmVzdWx0ID09IGRhdGEpOwotICAgICAgICAgICAgb25TdWNjZXNzKCk7Ci0g
ICAgICAgIH07Ci0gICAgZmlsZVJlYWRlci5yZWFkQXNUZXh0KGZpbGUuc2xpY2Uoc3RhcnQsIHN0
YXJ0ICsgZGF0YS5sZW5ndGgpKTsKLX0KLQotLy8gVmVyaWZpZXMgdGhhdCB0aGUgY29udGVudHMg
b2YgZmlsZUVudHJ5LCBhdCBvZmZzZXQsIG1hdGNoIGNvbnRlbnRzIFthIHN0cmluZ10uCi1mdW5j
dGlvbiB2ZXJpZnlCeXRlUmFuZ2VBc1N0cmluZyhmaWxlRW50cnksIG9mZnNldCwgY29udGVudHMs
IG9uU3VjY2VzcykKLXsKLSAgICB2ZXJpZnlGaWxlQ29udGVudHMoZmlsZUVudHJ5LCB2ZXJpZnlC
eXRlUmFuZ2VBc1N0cmluZ0hlbHBlciwgb2Zmc2V0LCBjb250ZW50cywgb25TdWNjZXNzKTsKLX0K
LQotLy8gQ3JlYXRlcyBhIGZpbGUgY2FsbGVkIGZpbGVOYW1lIGluIGZpbGVTeXN0ZW0ncyByb290
IGRpcmVjdG9yeSwgdHJ1bmNhdGVzIGl0IHRvIHplcm8gbGVuZ3RoIGp1c3QgaW4gY2FzZSwgYW5k
IGNhbGxzIG9uU3VjY2VzcywgcGFzc2luZyBpdCBhIEZpbGVFbnRyeSBhbmQgRmlsZVdyaXRlciBm
b3IgdGhlIG5ldyBmaWxlLgotZnVuY3Rpb24gY3JlYXRlRW1wdHlGaWxlKGZpbGVTeXN0ZW0sIGZp
bGVOYW1lLCBvblN1Y2Nlc3MpCi17Ci0gICAgZnVuY3Rpb24gZ2V0U3VjY2Vzc0Z1bmMoZmlsZUVu
dHJ5KSB7Ci0gICAgICAgIC8vIENyZWF0ZSBhIGZyZXNoIEZpbGVXcml0ZXIgaGVyZSwgcmF0aGVy
IHRoYW4gcGFzcyBpbiB0aGUgdXNlZCBvbmUuCi0gICAgICAgIC8vIFRoaXMgd2F5IHdlIGRvbid0
IGFjY2lkZW50YWxseSBsZWF2ZSBvdXIgZXZlbnQgaGFuZGxlcnMgYXR0YWNoZWQuCi0gICAgICAg
IHJldHVybiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGZpbGVFbnRyeS5jcmVhdGVXcml0ZXIo
ZnVuY3Rpb24oZncpIHsKLSAgICAgICAgICAgICAgICBvblN1Y2Nlc3MoZmlsZUVudHJ5LCBmdyk7
Ci0gICAgICAgICAgICB9LCBvbkVycm9yKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBmdW5jdGlv
biBnZXRGaWxlV3JpdGVyQ2FsbGJhY2soZmlsZUVudHJ5KSB7Ci0gICAgICAgIHJldHVybiBmdW5j
dGlvbihmaWxlV3JpdGVyKSB7Ci0gICAgICAgICAgICB2YXIgc3VjY2Vzc0Z1bmMgPSBnZXRTdWNj
ZXNzRnVuYyhmaWxlRW50cnkpOwotICAgICAgICAgICAgZmlsZVdyaXRlci5vbkVycm9yID0gb25F
cnJvcjsKLSAgICAgICAgICAgIGZpbGVXcml0ZXIub253cml0ZSA9IGZ1bmN0aW9uKCkgewotICAg
ICAgICAgICAgICAgIGZpbGVXcml0ZXIub253cml0ZSA9IG51bGw7Ci0gICAgICAgICAgICAgICAg
dmVyaWZ5RmlsZUxlbmd0aChmaWxlRW50cnksIDAsIHN1Y2Nlc3NGdW5jKTsKLSAgICAgICAgICAg
IH07Ci0gICAgICAgICAgICBmaWxlV3JpdGVyLnRydW5jYXRlKDApOwotICAgICAgICB9Ci0gICAg
fQotICAgIGZ1bmN0aW9uIG9uRmlsZUVudHJ5KGZpbGVFbnRyeSkgewotICAgICAgICBmaWxlRW50
cnlGb3JDbGVhbnVwID0gZmlsZUVudHJ5OwotICAgICAgICB2YXIgb25GaWxlV3JpdGVyID0gZ2V0
RmlsZVdyaXRlckNhbGxiYWNrKGZpbGVFbnRyeSk7Ci0gICAgICAgIGZpbGVFbnRyeS5jcmVhdGVX
cml0ZXIob25GaWxlV3JpdGVyLCBvbkVycm9yKTsKLSAgICB9Ci0gICAgYXNzZXJ0KGZpbGVTeXN0
ZW0pOwotICAgIGZpbGVTeXN0ZW0ucm9vdC5nZXRGaWxlKGZpbGVOYW1lLCB7Y3JlYXRlOnRydWV9
LCBvbkZpbGVFbnRyeSwgb25FcnJvcik7Ci19Ci0KLWZ1bmN0aW9uIHdyaXRlU3RyaW5nKGZpbGVF
bnRyeSwgZmlsZVdyaXRlciwgb2Zmc2V0LCBkYXRhLCBvblN1Y2Nlc3MpCi17Ci0gICAgdmFyIGJs
b2IgPSBuZXcgQmxvYihbZGF0YV0pOwotICAgIGZpbGVXcml0ZXIuc2VlayhvZmZzZXQpOwotICAg
IGZpbGVXcml0ZXIud3JpdGUoYmxvYik7Ci0gICAgZmlsZVdyaXRlci5vbmVycm9yID0gb25FcnJv
cjsKLSAgICBpZiAob2Zmc2V0IDwgMCkKLSAgICAgICAgb2Zmc2V0ICs9IGZpbGVXcml0ZXIubGVu
Z3RoOwotICAgIGFzc2VydChvZmZzZXQgPj0gMCk7Ci0gICAgZmlsZVdyaXRlci5vbndyaXRlID0g
ZnVuY3Rpb24oKSB7Ci0gICAgICAgIGZpbGVXcml0ZXIub253cml0ZSA9IG51bGw7Ci0gICAgICAg
IHZlcmlmeUJ5dGVSYW5nZUFzU3RyaW5nKGZpbGVFbnRyeSwgb2Zmc2V0LCBkYXRhLCBvblN1Y2Nl
c3MpOwotICAgIH07Ci19Ci0KLWZ1bmN0aW9uIHNldEZpbGVDb250ZW50cyhmaWxlRW50cnksIGZp
bGVXcml0ZXIsIGNvbnRlbnRzLCBvblN1Y2Nlc3MpIHsKLSAgICBmaWxlV3JpdGVyLm9uZXJyb3Ig
PSBvbkVycm9yOwotICAgIGZpbGVXcml0ZXIub253cml0ZSA9IGZ1bmN0aW9uKCkgewotICAgICAg
ICBmaWxlV3JpdGVyLm9ud3JpdGUgPSBudWxsOwotICAgICAgICB3cml0ZVN0cmluZyhmaWxlRW50
cnksIGZpbGVXcml0ZXIsIDAsIGNvbnRlbnRzLCBvblN1Y2Nlc3MpOwotICAgIH07Ci0gICAgZmls
ZVdyaXRlci50cnVuY2F0ZSgwKTsKLX0KLQotZnVuY3Rpb24gc2V0dXBBbmRSdW5UZXN0KHNpemUs
IHRlc3ROYW1lLCB0ZXN0RnVuYykKLXsKLSAgICBpZiAoIXdlYmtpdFJlcXVlc3RGaWxlU3lzdGVt
KSB7Ci0gICAgICAgIGRlYnVnKCJUaGlzIHRlc3QgcmVxdWlyZXMgRmlsZVN5c3RlbSBBUEkgc3Vw
cG9ydC4iKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBkZWJ1Zygic3RhcnRpbmcgdGVz
dCIpOwotICAgIHdlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKFRFTVBPUkFSWSwgc2l6ZSwgZnVuY3Rp
b24oZnMpIHsKLSAgICAgICAgY3JlYXRlRW1wdHlGaWxlKGZzLCB0ZXN0TmFtZSwgdGVzdEZ1bmMp
OwotICAgIH0sIG9uRXJyb3IpOwotfQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVt
L3Jlc291cmNlcy9maWxlLXdyaXRlci13cml0ZS1vdmVybGFwcGVkLmpzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS13cml0ZXItd3JpdGUt
b3ZlcmxhcHBlZC5qcwkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxl
c3lzdGVtL3Jlc291cmNlcy9maWxlLXdyaXRlci13cml0ZS1vdmVybGFwcGVkLmpzCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDczICswLDAgQEAKLWlmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKLSAgICBp
bXBvcnRTY3JpcHRzKCdmcy13b3JrZXItY29tbW9uLmpzJyk7Ci0gICAgaW1wb3J0U2NyaXB0cygn
Li4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7Ci0gICAgaW1wb3J0U2NyaXB0cygn
ZmlsZS13cml0ZXItdXRpbHMuanMnKTsKLX0KLQotZGVzY3JpcHRpb24oIlRlc3QgdXNpbmcgRmls
ZVdyaXRlci5zZWVrIHRvIHdyaXRlIG92ZXJsYXBwaW5nIGV4aXN0aW5nIGRhdGEgaW4gYSBmaWxl
LiIpOwotCi12YXIgZmlsZUVudHJ5OwotdmFyIGZpbGVXcml0ZXI7Ci12YXIgdGVzdERhdGEgPSAi
TG9yZW0gaXBzdW0iOwotdmFyIHNlZWtCYWNrd2FyZE9mZnNldCA9IC00OwotdmFyIHNlZWtGb3J3
YXJkT2Zmc2V0ID0gNDsKLQotZnVuY3Rpb24gb25UZXN0U3VjY2VlZGVkKCkKLXsKLSAgICB0ZXN0
UGFzc2VkKCJBbGwgd3JpdGVzIHZlcmlmaWVkLiIpOwotICAgIGNsZWFuVXAoKTsKLX0KLQotZnVu
Y3Rpb24gdmFsaWRhdGVOb25leHRlbmRpbmdXcml0ZUVuZCgpIHsKLSAgICB2ZXJpZnlCeXRlUmFu
Z2VBc1N0cmluZyhmaWxlRW50cnksIHRlc3REYXRhLmxlbmd0aCArIHNlZWtGb3J3YXJkT2Zmc2V0
LCB0ZXN0RGF0YS5zbGljZShzZWVrRm9yd2FyZE9mZnNldCksIG9uVGVzdFN1Y2NlZWRlZCk7Ci19
Ci0KLWZ1bmN0aW9uIHZhbGlkYXRlTm9uZXh0ZW5kaW5nV3JpdGVTdGFydCgpIHsKLSAgICB0ZXN0
UGFzc2VkKCJOb25leHRlbmRpbmcgd3JpdGUgdmFsaWRhdGVkLiIpOwotICAgIGFzc2VydChmaWxl
V3JpdGVyLmxlbmd0aCA9PSB0ZXN0RGF0YS5sZW5ndGggKiAyKTsKLSAgICB2ZXJpZnlCeXRlUmFu
Z2VBc1N0cmluZyhmaWxlRW50cnksIDAsIHRlc3REYXRhLnNsaWNlKDAsIHNlZWtGb3J3YXJkT2Zm
c2V0KSwgdmFsaWRhdGVOb25leHRlbmRpbmdXcml0ZUVuZCk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RO
b25leHRlbmRpbmdXcml0ZSgpIHsKLSAgICB3cml0ZVN0cmluZyhmaWxlRW50cnksIGZpbGVXcml0
ZXIsIHNlZWtGb3J3YXJkT2Zmc2V0LCB0ZXN0RGF0YSwgdmFsaWRhdGVOb25leHRlbmRpbmdXcml0
ZVN0YXJ0KTsKLX0KLQotZnVuY3Rpb24gc2V0dXBOb25leHRlbmRpbmdXcml0ZSgpIHsKLSAgICB0
ZXN0UGFzc2VkKCJQb3NpdGl2ZSBzZWVrIHZhbGlkYXRlZC4iKTsKLSAgICBzZXRGaWxlQ29udGVu
dHMoZmlsZUVudHJ5LCBmaWxlV3JpdGVyLCB0ZXN0RGF0YSArIHRlc3REYXRhLCB0ZXN0Tm9uZXh0
ZW5kaW5nV3JpdGUpOwotfQotCi1mdW5jdGlvbiB2YWxpZGF0ZVNlZWtGb3J3YXJkKCkgewotICAg
IGFzc2VydChmaWxlV3JpdGVyLmxlbmd0aCA9PSB0ZXN0RGF0YS5sZW5ndGggKyBzZWVrRm9yd2Fy
ZE9mZnNldCk7Ci0gICAgdmVyaWZ5Qnl0ZVJhbmdlQXNTdHJpbmcoZmlsZUVudHJ5LCAwLCB0ZXN0
RGF0YS5zbGljZSgwLCBzZWVrRm9yd2FyZE9mZnNldCksIHNldHVwTm9uZXh0ZW5kaW5nV3JpdGUp
OwotfQotCi1mdW5jdGlvbiB0ZXN0U2Vla0ZvcndhcmQoKSB7Ci0gICAgd3JpdGVTdHJpbmcoZmls
ZUVudHJ5LCBmaWxlV3JpdGVyLCBzZWVrRm9yd2FyZE9mZnNldCwgdGVzdERhdGEsIHZhbGlkYXRl
U2Vla0ZvcndhcmQpOwotfQotCi1mdW5jdGlvbiBzZXR1cFNlZWtGb3J3YXJkKCkgewotICAgIHRl
c3RQYXNzZWQoIk5lZ2F0aXZlIHNlZWsgdmFsaWRhdGVkLiIpOwotICAgIHNldEZpbGVDb250ZW50
cyhmaWxlRW50cnksIGZpbGVXcml0ZXIsIHRlc3REYXRhLCB0ZXN0U2Vla0ZvcndhcmQpOwotfQot
Ci1mdW5jdGlvbiB2YWxpZGF0ZVNlZWtCYWNrd2FyZCgpIHsKLSAgICBhc3NlcnQoZmlsZVdyaXRl
ci5sZW5ndGggPT0gMiAqIHRlc3REYXRhLmxlbmd0aCArIHNlZWtCYWNrd2FyZE9mZnNldCk7Ci0g
ICAgdmVyaWZ5Qnl0ZVJhbmdlQXNTdHJpbmcoZmlsZUVudHJ5LCAwLCB0ZXN0RGF0YS5zbGljZSgw
LCB0ZXN0RGF0YS5sZW5ndGggKyBzZWVrQmFja3dhcmRPZmZzZXQpLCBzZXR1cFNlZWtGb3J3YXJk
KTsKLX0KLQotZnVuY3Rpb24gdGVzdFNlZWtCYWNrd2FyZCgpIHsKLSAgICB3cml0ZVN0cmluZyhm
aWxlRW50cnksIGZpbGVXcml0ZXIsIHNlZWtCYWNrd2FyZE9mZnNldCwgdGVzdERhdGEsIHZhbGlk
YXRlU2Vla0JhY2t3YXJkKTsKLX0KLQotLy8gRWFjaCB0ZXN0IGhhcyAzIHBoYXNlczogc2V0dXAs
IGV4ZWN1dGlvbiwgYW5kIHZhbGlkYXRpb24uICBJbiB0aGUgc2V0dXAgcGhhc2UsIHdlIG1ha2Ug
c3VyZSB0aGF0IHRoZXJlJ3MgYSBGaWxlV3JpdGVyIHBvaW50aW5nIGF0IGEgZmlsZSB3aXRoIGFw
cHJvcHJpYXRlCi0vLyBkYXRhIGZvciB0aGUgdGVzdCB3ZSB3YW50IHRvIHJ1bi4gIEluIHRoZSBl
eGVjdXRpb24gcGhhc2UsIHdlIGRvIGEgc2VlayBhbmQgYSB3cml0ZSwgYW5kIHRoZSB1dGlsaXR5
IGZ1bmN0aW9uIHRoYXQgZG9lcyB0aG9zZSBhbHNvIHZhbGlkYXRlcyB0aGF0IHRoZSBkYXRhCi0v
LyBhY3R1YWxseSBnb3Qgd3JpdHRlbi4gIFNvIGluIHRoZSB2YWxpZGF0aW9uIHBoYXNlLCB3ZSBv
bmx5IGhhdmUgdG8gY2hlY2sgdGhhdCB0aGUgcmVzdCBvZiB0aGUgZmlsZSBkaWRuJ3QgZ2V0IGNv
cnJ1cHRlZCB3aGlsZSB3ZSB3ZXJlIHdyaXRpbmcgb3VyIGJpdC4KLWZ1bmN0aW9uIHJ1blRlc3Qo
ZmlsZUVudHJ5SW4sIGZpbGVXcml0ZXJJbikgewotICAgIGZpbGVFbnRyeSA9IGZpbGVFbnRyeUlu
OwotICAgIGZpbGVXcml0ZXIgPSBmaWxlV3JpdGVySW47Ci0gICAgc2V0RmlsZUNvbnRlbnRzKGZp
bGVFbnRyeSwgZmlsZVdyaXRlciwgdGVzdERhdGEsIHRlc3RTZWVrQmFja3dhcmQpOwotfQotCi12
YXIganNUZXN0SXNBc3luYyA9IHRydWU7Ci1zZXR1cEFuZFJ1blRlc3QoMTAyNCwgJ2ZpbGUtd3Jp
dGVyLXRydW5jYXRlLWV4dGVuZCcsIHJ1blRlc3QpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9m
aWxlc3lzdGVtL3Jlc291cmNlcy9mcy10ZXN0LXV0aWwuanMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9mcy10ZXN0LXV0aWwuanMJKHJldmlzaW9u
IDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZnMtdGVz
dC11dGlsLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDkyICswLDAgQEAKLWZ1bmN0aW9uIGJpbmRD
YWxsYmFjayhvYmosIGNhbGxiYWNrLCBhcmcxLCBhcmcyLCBhcmczKQotewotICAgIHJldHVybiBm
dW5jdGlvbihhcmcpIHsKLSAgICAgICAgaWYgKGFyZyA9PSB1bmRlZmluZWQpCi0gICAgICAgICAg
ICBjYWxsYmFjay5hcHBseShvYmosIFthcmcxLCBhcmcyLCBhcmczXSk7Ci0gICAgICAgIGVsc2UK
LSAgICAgICAgICAgIGNhbGxiYWNrLmFwcGx5KG9iaiwgW2FyZywgYXJnMSwgYXJnMiwgYXJnM10p
OwotICAgIH07Ci19Ci0KLS8vIFVzYWdlOgotLy8gICB2YXIgaGVscGVyID0gbmV3IEpvaW5IZWxw
ZXI7Ci0vLwotLy8gICBoZWxwZXIucnVuKGZ1bmN0aW9uKCkgeyAvKiBkbyBzb21ldGhpbmcgdGhh
dCBldmVudHVhbGx5IGNhbGxzIGhlbHBlci5kb25lKCk7ICovIH0pOwotLy8gICBoZWxwZXIucnVu
KGZ1bmN0aW9uKCkgeyAvKiBkbyBzb21ldGhpbmcgdGhhdCBldmVudHVhbGx5IGNhbGxzIGhlbHBl
ci5kb25lKCk7ICovIH0pOwotLy8gICAuLi4KLS8vICAgaGVscGVyLmpvaW4oam9pbkNhbGxiYWNr
KTsKLS8vCi12YXIgSm9pbkhlbHBlciA9IGZ1bmN0aW9uKCkKLXsKLSAgICB0aGlzLnBlbmRpbmdP
cGVyYXRpb25zID0gW107Ci0gICAgdGhpcy5wZW5kaW5nT3BlcmF0aW9uQ291bnQgPSAwOwotICAg
IHRoaXMuam9pbkNhbGxiYWNrID0gbnVsbDsKLQotICAgIHRoaXMucnVuID0gZnVuY3Rpb24ob3Bl
cmF0aW9uKQotICAgIHsKLSAgICAgICAgdGhpcy5wZW5kaW5nT3BlcmF0aW9uQ291bnQrKzsKLSAg
ICAgICAgb3BlcmF0aW9uKCk7Ci0gICAgfTsKLQotICAgIC8vIENhbGwgdGhpcyB3aGVuIGFuIG9w
ZXJhdGlvbiBpcyBkb25lLgotICAgIHRoaXMuZG9uZSA9IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAg
ICAgIHRoaXMucGVuZGluZ09wZXJhdGlvbkNvdW50LS07Ci0gICAgICAgIGlmICh0aGlzLnBlbmRp
bmdPcGVyYXRpb25Db3VudCA9PSAwICYmIHRoaXMuam9pbkNhbGxiYWNrKQotICAgICAgICAgICAg
dGhpcy5qb2luQ2FsbGJhY2soKTsKLSAgICB9OwotCi0gICAgLy8gVGhpcyBldmVudHVhbGx5IGNh
bGxzIHRoZSBqb2luQ2FsbGJhY2sgd2hlbiBoZWxwZXIuZG9uZSgpIGlzIGNhbGxlZCBhcyBtYW55
IHRpbWVzIGFzIGhlbHBlci5ydW4oKSBpcyBjYWxsZWQuCi0gICAgdGhpcy5qb2luID0gZnVuY3Rp
b24oam9pbkNhbGxiYWNrKQotICAgIHsKLSAgICAgICAgaWYgKHRoaXMucGVuZGluZ09wZXJhdGlv
bkNvdW50ID09IDApCi0gICAgICAgICAgICBqb2luQ2FsbGJhY2soKTsKLSAgICAgICAgZWxzZQot
ICAgICAgICAgICAgdGhpcy5qb2luQ2FsbGJhY2sgPSBqb2luQ2FsbGJhY2s7Ci0gICAgfTsKLX07
Ci0KLS8vIFJlbW92ZSBldmVyeXRoaW5nIGluIHRoZSBnaXZlbiBkaXJlY3RvcnkuCi1mdW5jdGlv
biByZW1vdmVBbGxJbkRpcmVjdG9yeShkaXJlY3RvcnksIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JD
YWxsYmFjaykgewotICAgIHZhciBSZW1vdmVBbGxJbkRpcmVjdG9yeUhlbHBlciA9IGZ1bmN0aW9u
KHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykgewotICAgICAgICB0aGlzLmVudHJpZXND
b3VudCA9IDA7Ci0gICAgICAgIHRoaXMuZG9uZSA9IGZhbHNlOwotICAgICAgICB0aGlzLnJlYWRl
ciA9IG51bGw7Ci0gICAgICAgIHRoaXMuc3VjY2Vzc0NhbGxiYWNrID0gc3VjY2Vzc0NhbGxiYWNr
OwotICAgICAgICB0aGlzLmVycm9yQ2FsbGJhY2sgPSBlcnJvckNhbGxiYWNrOwotCi0gICAgICAg
IHRoaXMuZW50cnlSZW1vdmVkQ2FsbGJhY2sgPSBiaW5kQ2FsbGJhY2sodGhpcywgZnVuY3Rpb24o
ZW50cnkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICgtLXRoaXMuZW50cmllc0NvdW50ID09
IDAgJiYgdGhpcy5zdWNjZXNzQ2FsbGJhY2sgJiYgdGhpcy5kb25lKSB7Ci0gICAgICAgICAgICAg
ICAgdGhpcy5zdWNjZXNzQ2FsbGJhY2soKTsKLSAgICAgICAgICAgICAgICB0aGlzLnN1Y2Nlc3ND
YWxsYmFjayA9IG51bGw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0pOwotCi0gICAgICAgIHRo
aXMuZW50cmllc0NhbGxiYWNrID0gYmluZENhbGxiYWNrKHRoaXMsIGZ1bmN0aW9uKGVudHJpZXMp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZW50cmllcy5sZW5n
dGg7ICsraSkgewotICAgICAgICAgICAgICAgIHRoaXMuZW50cmllc0NvdW50Kys7Ci0gICAgICAg
ICAgICAgICAgaWYgKGVudHJpZXNbaV0uaXNEaXJlY3RvcnkpCi0gICAgICAgICAgICAgICAgICAg
IGVudHJpZXNbaV0ucmVtb3ZlUmVjdXJzaXZlbHkodGhpcy5lbnRyeVJlbW92ZWRDYWxsYmFjaywg
dGhpcy5lcnJvckNhbGxiYWNrKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgICAgIGVudHJpZXNbaV0ucmVtb3ZlKHRoaXMuZW50cnlSZW1vdmVkQ2FsbGJhY2ssIHRoaXMu
ZXJyb3JDYWxsYmFjayk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoZW50cmllcy5s
ZW5ndGgpCi0gICAgICAgICAgICAgICAgdGhpcy5yZWFkZXIucmVhZEVudHJpZXModGhpcy5lbnRy
aWVzQ2FsbGJhY2ssIHRoaXMuZXJyb3JDYWxsYmFjayk7Ci0gICAgICAgICAgICBlbHNlIGlmICh0
aGlzLmVudHJpZXNDb3VudCA+IDApCi0gICAgICAgICAgICAgICAgdGhpcy5kb25lID0gdHJ1ZTsK
LSAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuc3VjY2Vzc0NhbGxiYWNrKQotICAgICAgICAgICAg
ICAgIHRoaXMuc3VjY2Vzc0NhbGxiYWNrKCk7Ci0gICAgICAgIH0pOwotCi0gICAgICAgIHRoaXMu
cmVtb3ZlQWxsSW5EaXJlY3RvcnkgPSBmdW5jdGlvbihkaXJlY3RvcnkpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIHRoaXMucmVhZGVyID0gZGlyZWN0b3J5LmNyZWF0ZVJlYWRlcigpOwotICAgICAg
ICAgICAgdGhpcy5yZWFkZXIucmVhZEVudHJpZXModGhpcy5lbnRyaWVzQ2FsbGJhY2ssIHRoaXMu
ZXJyb3JDYWxsYmFjayk7Ci0gICAgICAgIH07Ci0gICAgfTsKLQotICAgIHZhciBoZWxwZXIgPSBu
ZXcgUmVtb3ZlQWxsSW5EaXJlY3RvcnlIZWxwZXIoc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxi
YWNrKTsKLSAgICBoZWxwZXIucmVtb3ZlQWxsSW5EaXJlY3RvcnkoZGlyZWN0b3J5KTsKLX0KSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZnMtd29ya2VyLWNvbW1v
bi5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2Vz
L2ZzLXdvcmtlci1jb21tb24uanMJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zh
c3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZnMtd29ya2VyLWNvbW1vbi5qcwkod29ya2luZyBjb3B5
KQpAQCAtMSwxOSArMCwwIEBACi1mdW5jdGlvbiByZW1vdmVBbGxJbkRpcmVjdG9yeVN5bmMoZGly
ZWN0b3J5KSB7Ci0gICAgaWYgKCFkaXJlY3RvcnkpCi0gICAgICAgIHJldHVybjsKLSAgICB2YXIg
cmVhZGVyID0gZGlyZWN0b3J5LmNyZWF0ZVJlYWRlcigpOwotICAgIGRvIHsKLSAgICAgICAgdmFy
IGVudHJpZXMgPSByZWFkZXIucmVhZEVudHJpZXMoKTsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBlbnRyaWVzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICBpZiAoZW50cmllc1tpXS5p
c0RpcmVjdG9yeSkKLSAgICAgICAgICAgICAgICBlbnRyaWVzW2ldLnJlbW92ZVJlY3Vyc2l2ZWx5
KCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgZW50cmllc1tpXS5yZW1vdmUo
KTsKLSAgICAgICAgfQotICAgIH0gd2hpbGUgKGVudHJpZXMubGVuZ3RoKTsKLX0KLQotaWYgKHRo
aXMuaW1wb3J0U2NyaXB0cyAmJiAhdGhpcy53ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbSkgewotICAg
IGRlYnVnKCdUaGlzIHRlc3QgcmVxdWlyZXMgRmlsZVN5c3RlbSBBUEkuJyk7Ci0gICAgZmluaXNo
SlNUZXN0KCk7Ci19CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2Vz
L29wLWNvcHkuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jl
c291cmNlcy9vcC1jb3B5LmpzCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL29wLWNvcHkuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsMjU3
ICswLDAgQEAKLXZhciB0ZXN0Q2FzZXMgPSBbCi0gICAgewotICAgICAgICBuYW1lOiAnQ29weUZp
bGVTaW1wbGUnLAotICAgICAgICBwcmVjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0
aDonL2EnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYid9
Ci0gICAgICAgIF0sCi0gICAgICAgIHRlc3RzOiBbCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxw
ZXIpIHsgaGVscGVyLmNvcHkoJy9hL2InLCAnL2EnLCAnYycpOyB9Ci0gICAgICAgIF0sCi0gICAg
ICAgIHBvc3Rjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EnLCBpc0RpcmVj
dG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYid9LAotICAgICAgICAgICAg
e2Z1bGxQYXRoOicvYS9jJ30KLSAgICAgICAgXSwKLSAgICB9LAotICAgIHsKLSAgICAgICAgbmFt
ZTogJ0NvcHlEaXJlY3RvcnlTaW1wbGUnLAotICAgICAgICBwcmVjb25kaXRpb246IFsKLSAgICAg
ICAgICAgIHtmdWxsUGF0aDonL2EnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtm
dWxsUGF0aDonL2EvYicsIGlzRGlyZWN0b3J5OnRydWV9Ci0gICAgICAgIF0sCi0gICAgICAgIHRl
c3RzOiBbCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmNvcHkoJy9hL2In
LCAnL2EnLCAnYycpOyB9LAotICAgICAgICBdLAotICAgICAgICBwb3N0Y29uZGl0aW9uOiBbCi0g
ICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hJywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgICAg
ICB7ZnVsbFBhdGg6Jy9hL2InLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxs
UGF0aDonL2EvYycsIGlzRGlyZWN0b3J5OnRydWV9Ci0gICAgICAgIF0sCi0gICAgfSwKLSAgICB7
Ci0gICAgICAgIG5hbWU6ICdDb3B5RmlsZVRvRGlmZmVyZW50RGlyZWN0b3J5JywKLSAgICAgICAg
cHJlY29uZGl0aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hJywgaXNEaXJlY3Rvcnk6
dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hL2InfSwKLSAgICAgICAgICAgIHtmdWxs
UGF0aDonL2MnLCBpc0RpcmVjdG9yeTp0cnVlfQotICAgICAgICBdLAotICAgICAgICB0ZXN0czog
WwotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5jb3B5KCcvYS9iJywgJy9j
JywgJ2QnKTsgfSwKLSAgICAgICAgXSwKLSAgICAgICAgcG9zdGNvbmRpdGlvbjogWwotICAgICAg
ICAgICAge2Z1bGxQYXRoOicvYScsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1
bGxQYXRoOicvYS9iJ30sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9jL2QnfQotICAgICAgICBd
LAotICAgIH0sCi0gICAgewotICAgICAgICBuYW1lOiAnQ29weUZpbGVXaXRoRW1wdHlOYW1lJywK
LSAgICAgICAgcHJlY29uZGl0aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hJywgaXNE
aXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hL2InfSwKLSAgICAgICAg
ICAgIHtmdWxsUGF0aDonL2MnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgXSwKLSAgICAg
ICAgdGVzdHM6IFsKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuY29weSgn
L2EvYicsICcvYycsIG51bGwpOyB9LAotICAgICAgICBdLAotICAgICAgICBwb3N0Y29uZGl0aW9u
OiBbCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hJywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAg
ICAgICAgICB7ZnVsbFBhdGg6Jy9hL2InfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2MvYid9
Ci0gICAgICAgIF0sCi0gICAgfSwKLSAgICB7Ci0gICAgICAgIG5hbWU6ICdDb3B5RmlsZVdpdGhF
bXB0eU5hbWVUb1NhbWVEaXJlY3RvcnknLAotICAgICAgICBwcmVjb25kaXRpb246IFsKLSAgICAg
ICAgICAgIHtmdWxsUGF0aDonL2EnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtm
dWxsUGF0aDonL2EvYid9LAotICAgICAgICBdLAotICAgICAgICB0ZXN0czogWwotICAgICAgICAg
ICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5jb3B5KCcvYS9iJywgJy9hJywgbnVsbCwgRmls
ZUVycm9yLklOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUik7IH0sCi0gICAgICAgIF0sCi0gICAgICAg
IHBvc3Rjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EnLCBpc0RpcmVjdG9y
eTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYid9LAotICAgICAgICBdLAotICAg
IH0sCi0gICAgewotICAgICAgICBuYW1lOiAnQ29weUZpbGVXaXRoU2FtZU5hbWUnLAotICAgICAg
ICBwcmVjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EnLCBpc0RpcmVjdG9y
eTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYid9LAotICAgICAgICBdLAotICAg
ICAgICB0ZXN0czogWwotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5jb3B5
KCcvYS9iJywgJy9hJywgJ2InLCBGaWxlRXJyb3IuSU5WQUxJRF9NT0RJRklDQVRJT05fRVJSKTsg
fSwKLSAgICAgICAgXSwKLSAgICAgICAgcG9zdGNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1
bGxQYXRoOicvYScsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicv
YS9iJ30sCi0gICAgICAgIF0sCi0gICAgfSwKLSAgICB7Ci0gICAgICAgIG5hbWU6ICdDb3B5Rm9y
Tm9uRXhpc3RlbnRFbnRyeScsCi0gICAgICAgIHByZWNvbmRpdGlvbjogWwotICAgICAgICAgICAg
e2Z1bGxQYXRoOicvYScsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRo
OicvYS9iJ30sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9jJywgaXNEaXJlY3Rvcnk6dHJ1ZX0s
Ci0gICAgICAgIF0sCi0gICAgICAgIHRlc3RzOiBbCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxw
ZXIpIHsgaGVscGVyLnJlbW92ZSgnL2EvYicpOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVs
cGVyKSB7IGhlbHBlci5jb3B5KCcvYS9iJywgJy9jJywgJ2InLCBGaWxlRXJyb3IuTk9UX0ZPVU5E
X0VSUik7IH0sCi0gICAgICAgIF0sCi0gICAgICAgIHBvc3Rjb25kaXRpb246IFsKLSAgICAgICAg
ICAgIHtmdWxsUGF0aDonL2EnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxs
UGF0aDonL2MnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgXSwKLSAgICB9LAotICAgIHsK
LSAgICAgICAgbmFtZTogJ0NvcHlFbnRyeVRvTm9uRXhpc3RlbnREaXJlY3RvcnknLAotICAgICAg
ICBwcmVjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EnLCBpc0RpcmVjdG9y
eTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYid9LAotICAgICAgICAgICAge2Z1
bGxQYXRoOicvYycsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICBdLAotICAgICAgICB0ZXN0
czogWwotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5yZW1vdmUoJy9jJyk7
IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmNvcHkoJy9hL2InLCAn
L2MnLCAnYicsIEZpbGVFcnJvci5OT1RfRk9VTkRfRVJSKTsgfSwKLSAgICAgICAgXSwKLSAgICAg
ICAgcG9zdGNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOicvYScsIGlzRGlyZWN0
b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYS9iJ30sCi0gICAgICAgIF0sCi0g
ICAgfSwKLSAgICB7Ci0gICAgICAgIG5hbWU6ICdDb3B5RW50cnlUb0l0c0NoaWxkJywKLSAgICAg
ICAgcHJlY29uZGl0aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hJywgaXNEaXJlY3Rv
cnk6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hL2InLCBpc0RpcmVjdG9yeTp0cnVl
fSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYi9jJywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0g
ICAgICAgIF0sCi0gICAgICAgIHRlc3RzOiBbCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIp
IHsgaGVscGVyLmNvcHkoJy9hJywgJy9hL2InLCAnZCcsIEZpbGVFcnJvci5JTlZBTElEX01PRElG
SUNBVElPTl9FUlIpOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5j
b3B5KCcvYS9iJywgJy9hL2IvYycsICdkJywgRmlsZUVycm9yLklOVkFMSURfTU9ESUZJQ0FUSU9O
X0VSUik7IH0sCi0gICAgICAgIF0sCi0gICAgICAgIHBvc3Rjb25kaXRpb246IFsKLSAgICAgICAg
ICAgIHtmdWxsUGF0aDonL2EnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxs
UGF0aDonL2EvYicsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicv
YS9iL2MnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgXSwKLSAgICB9LAotICAgIHsKLSAg
ICAgICAgbmFtZTogJ0NvcHlSZWN1cnNpdmUnLAotICAgICAgICBwcmVjb25kaXRpb246IFsKLSAg
ICAgICAgICAgIHtmdWxsUGF0aDonL2EnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAg
IHtmdWxsUGF0aDonL2EvYicsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQ
YXRoOicvYS9iL2MnfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYi9kJ30sCi0gICAgICAg
ICAgICB7ZnVsbFBhdGg6Jy9iJywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgIF0sCi0gICAg
ICAgIHRlc3RzOiBbCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmNvcHko
Jy9hJywgJy9iJywgJ2EnKTsgfSwKLSAgICAgICAgXSwKLSAgICAgICAgcG9zdGNvbmRpdGlvbjog
WwotICAgICAgICAgICAge2Z1bGxQYXRoOicvYScsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAg
ICAgICAge2Z1bGxQYXRoOicvYS9iJywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgICAgICB7
ZnVsbFBhdGg6Jy9hL2IvYyd9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYS9iL2QnfSwKLSAg
ICAgICAgICAgIHtmdWxsUGF0aDonL2IvYScsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICAg
ICAge2Z1bGxQYXRoOicvYi9hL2InLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtm
dWxsUGF0aDonL2IvYS9iL2MnfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2IvYS9iL2QnfSwK
LSAgICAgICAgXSwKLSAgICB9LAotICAgIHsKLSAgICAgICAgbmFtZTogIk92ZXJ3cml0aW5nQ29w
eUZpbGVUb0ZpbGUiLAotICAgICAgICBwcmVjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxs
UGF0aDoiL2EifSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDoiL2IifSwKLSAgICAgICAgXSwKLSAg
ICAgICAgdGVzdHM6IFsKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikge2hlbHBlci5jb3B5
KCIvYSIsIi8iLCJiIik7fQotICAgICAgICBdLAotICAgICAgICBwb3N0Y29uZGl0aW9uOiBbCi0g
ICAgICAgICAgICB7ZnVsbFBhdGg6Ii9hIn0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Ii9iIn0s
Ci0gICAgICAgIF0sCi0gICAgfSwKLSAgICB7Ci0gICAgICAgIG5hbWU6ICJPdmVyd3JpdGluZ0Nv
cHlEaXJlY3RvcnlUb0VtcHR5RGlyZWN0b3J5IiwKLSAgICAgICAgcHJlY29uZGl0aW9uOiBbCi0g
ICAgICAgICAgICB7ZnVsbFBhdGg6Ii9hIiwgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgICAg
ICB7ZnVsbFBhdGg6Ii9hL2IifSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDoiL2MiLCBpc0RpcmVj
dG9yeTp0cnVlfSwKLSAgICAgICAgXSwKLSAgICAgICAgdGVzdHM6IFsKLSAgICAgICAgICAgIGZ1
bmN0aW9uKGhlbHBlcikge2hlbHBlci5jb3B5KCIvYSIsIi8iLCJjIik7fQotICAgICAgICBdLAot
ICAgICAgICBwb3N0Y29uZGl0aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Ii9hIiwgaXNE
aXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Ii9hL2IifSwKLSAgICAgICAg
ICAgIHtmdWxsUGF0aDoiL2MiLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxs
UGF0aDoiL2MvYiJ9LAotICAgICAgICBdLAotICAgIH0sCi0gICAgewotICAgICAgICBuYW1lOiAi
T3ZlcndyaXRpbmdDb3B5RmlsZVRvRGlyZWN0b3J5IiwKLSAgICAgICAgcHJlY29uZGl0aW9uOiBb
Ci0gICAgICAgICAgICB7ZnVsbFBhdGg6Ii9hIn0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Ii9i
IiwgaXNEaXJlY3Rvcnk6IHRydWV9LAotICAgICAgICBdLAotICAgICAgICB0ZXN0czogWwotICAg
ICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7aGVscGVyLmNvcHkoIi9hIiwiLyIsImIiLEZpbGVF
cnJvci5JTlZBTElEX01PRElGSUNBVElPTl9FUlIpO30KLSAgICAgICAgXSwKLSAgICAgICAgcG9z
dGNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOiIvYSJ9LAotICAgICAgICAgICAg
e2Z1bGxQYXRoOiIvYiIsIGlzRGlyZWN0b3J5OiB0cnVlfSwKLSAgICAgICAgXSwKLSAgICB9LAot
ICAgIHsKLSAgICAgICAgbmFtZTogIk92ZXJ3cml0aW5nQ29weURpcmVjdG9yeVRvRmlsZSIsCi0g
ICAgICAgIHByZWNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOiIvYSIsIGlzRGly
ZWN0b3J5OiB0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDoiL2IifSwKLSAgICAgICAgXSwK
LSAgICAgICAgdGVzdHM6IFsKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikge2hlbHBlci5j
b3B5KCIvYSIsIi8iLCJiIixGaWxlRXJyb3IuSU5WQUxJRF9NT0RJRklDQVRJT05fRVJSKTt9Ci0g
ICAgICAgIF0sCi0gICAgICAgIHBvc3Rjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0
aDoiL2EiLCBpc0RpcmVjdG9yeTogdHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Ii9iIn0s
Ci0gICAgICAgIF0sCi0gICAgfSwKLSAgICB7Ci0gICAgICAgIG5hbWU6ICJPdmVyd3JpdGluZ0Nv
cHlGaWxlVG9Ob25lbXB0eURpcmVjdG9yeSIsCi0gICAgICAgIHByZWNvbmRpdGlvbjogWwotICAg
ICAgICAgICAge2Z1bGxQYXRoOiIvYSJ9LAotICAgICAgICAgICAge2Z1bGxQYXRoOiIvYiIsIGlz
RGlyZWN0b3J5OiB0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDoiL2IvYyJ9LAotICAgICAg
ICBdLAotICAgICAgICB0ZXN0czogWwotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7aGVs
cGVyLmNvcHkoIi9hIiwiLyIsImIiLEZpbGVFcnJvci5JTlZBTElEX01PRElGSUNBVElPTl9FUlIp
O30KLSAgICAgICAgXSwKLSAgICAgICAgcG9zdGNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1
bGxQYXRoOiIvYSJ9LAotICAgICAgICAgICAge2Z1bGxQYXRoOiIvYiIsIGlzRGlyZWN0b3J5OiB0
cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDoiL2IvYyJ9LAotICAgICAgICBdLAotICAgIH0s
Ci0gICAgewotICAgICAgICBuYW1lOiAiT3ZlcndyaXRpbmdDb3B5RGlyZWN0b3J5VG9Ob25lbXB0
eURpcmVjdG9yeSIsCi0gICAgICAgIHByZWNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQ
YXRoOiIvYSIsIGlzRGlyZWN0b3J5OiB0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDoiL2Ev
YiJ9LAotICAgICAgICAgICAge2Z1bGxQYXRoOiIvYyIsIGlzRGlyZWN0b3J5OiB0cnVlfSwKLSAg
ICAgICAgICAgIHtmdWxsUGF0aDoiL2MvZCJ9LAotICAgICAgICBdLAotICAgICAgICB0ZXN0czog
WwotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7aGVscGVyLmNvcHkoIi9hIiwiLyIsImMi
LEZpbGVFcnJvci5JTlZBTElEX01PRElGSUNBVElPTl9FUlIpO30KLSAgICAgICAgXSwKLSAgICAg
ICAgcG9zdGNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOiIvYSIsIGlzRGlyZWN0
b3J5OiB0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDoiL2EvYiJ9LAotICAgICAgICAgICAg
e2Z1bGxQYXRoOiIvYyIsIGlzRGlyZWN0b3J5OiB0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0
aDoiL2MvZCJ9LAotICAgICAgICBdLAotICAgIH0sCi1dOwpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9maWxlc3lzdGVtL3Jlc291cmNlcy9vcC1nZXQtZW50cnkuanMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9vcC1nZXQtZW50cnkuanMJKHJldmlz
aW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvb3At
Z2V0LWVudHJ5LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE1NSArMCwwIEBACi12YXIgdGVzdENh
c2VzID0gWwotICAgIHsKLSAgICAgICAgbmFtZTogJ0NyZWF0ZVNpbXBsZScsCi0gICAgICAgIHBy
ZWNvbmRpdGlvbjogWyBdLAotICAgICAgICB0ZXN0czogWwotICAgICAgICAgICAgZnVuY3Rpb24o
aGVscGVyKSB7IGhlbHBlci5nZXREaXJlY3RvcnkoJy8nLCAnYScsIHtjcmVhdGU6dHJ1ZX0pOyB9
LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2In
LCB7Y3JlYXRlOnRydWV9KTsgfQotICAgICAgICBdLAotICAgICAgICBwb3N0Y29uZGl0aW9uOiBb
Ci0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hJywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAg
ICAgICB7ZnVsbFBhdGg6Jy9iJ30sCi0gICAgICAgIF0sCi0gICAgfSwKLSAgICB7Ci0gICAgICAg
IG5hbWU6ICdDcmVhdGVOZXN0ZWQnLAotICAgICAgICBwcmVjb25kaXRpb246IFsgXSwKLSAgICAg
ICAgdGVzdHM6IFsKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RGly
ZWN0b3J5KCcvJywgJ2EnLCB7Y3JlYXRlOnRydWV9KTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9u
KGhlbHBlcikgeyBoZWxwZXIuZ2V0RGlyZWN0b3J5KCcvYScsICdiJywge2NyZWF0ZTp0cnVlfSk7
IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldERpcmVjdG9yeSgn
L2EvYicsICdjJywge2NyZWF0ZTp0cnVlfSk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxw
ZXIpIHsgaGVscGVyLmdldERpcmVjdG9yeSgnL2EvYi9jJywgJ2QnLCB7Y3JlYXRlOnRydWV9KTsg
fSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnL2EvYi9j
L2QnLCAnZScsIHtjcmVhdGU6dHJ1ZX0pOyB9LAotICAgICAgICBdLAotICAgICAgICBwb3N0Y29u
ZGl0aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hL2IvYy9kL2UnfSwKLSAgICAgICAg
XSwKLSAgICB9LAotICAgIHsKLSAgICAgICAgbmFtZTogJ0NyZWF0ZU5lc3RlZFdpdGhBYnNvbHV0
ZVBhdGgnLAotICAgICAgICBwcmVjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDon
L2R1bW15JywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgIF0sCi0gICAgICAgIHRlc3RzOiBb
Ci0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldERpcmVjdG9yeSgnL2R1
bW15JywgJy9hJywge2NyZWF0ZTp0cnVlfSk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxw
ZXIpIHsgaGVscGVyLmdldERpcmVjdG9yeSgnL2R1bW15JywgJy9hL2InLCB7Y3JlYXRlOnRydWV9
KTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RGlyZWN0b3J5
KCcvZHVtbXknLCAnL2EvYi9jJywge2NyZWF0ZTp0cnVlfSk7IH0sCi0gICAgICAgICAgICBmdW5j
dGlvbihoZWxwZXIpIHsgaGVscGVyLmdldERpcmVjdG9yeSgnL2R1bW15JywgJy9hL2IvYy9kJywg
e2NyZWF0ZTp0cnVlfSk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVy
LmdldEZpbGUoJy9kdW1teScsICcvYS9iL2MvZC9lJywge2NyZWF0ZTp0cnVlfSk7IH0KLSAgICAg
ICAgXSwKLSAgICAgICAgcG9zdGNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOicv
ZHVtbXknLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYi9j
L2QvZSd9LAotICAgICAgICBdLAotICAgIH0sCi0gICAgewotICAgICAgICBuYW1lOiAnQ3JlYXRl
TmVzdGVkV2l0aFJlbGF0aXZlUGF0aCcsCi0gICAgICAgIHByZWNvbmRpdGlvbjogWwotICAgICAg
ICAgICAge2Z1bGxQYXRoOicvYScsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICBdLAotICAg
ICAgICB0ZXN0czogWwotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRE
aXJlY3RvcnkoJy9hJywgJy4vYicsIHtjcmVhdGU6dHJ1ZX0pOyB9LAotICAgICAgICAgICAgZnVu
Y3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXREaXJlY3RvcnkoJy9hJywgJy4vLi4uJywge2NyZWF0
ZTp0cnVlfSk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldERp
cmVjdG9yeSgnL2EnLCAnLi4vYicsIHtjcmVhdGU6dHJ1ZX0pOyB9LAotICAgICAgICAgICAgZnVu
Y3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXREaXJlY3RvcnkoJy9hJywgJy4uLy4uL2IvYycsIHtj
cmVhdGU6dHJ1ZX0pOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5n
ZXREaXJlY3RvcnkoJy9hJywgJy9hLy4uLy4uL2QnLCB7Y3JlYXRlOnRydWV9KTsgfSwKLSAgICAg
ICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RGlyZWN0b3J5KCcvYScsICcvYS8u
Li8uLi9iLy4vYy8uLi8uLi8uLi8uLi8uLi9lJywge2NyZWF0ZTp0cnVlfSk7IH0sCi0gICAgICAg
ICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldERpcmVjdG9yeSgnL2EnLCAnLi4uL2Yn
LCB7Y3JlYXRlOnRydWV9KTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxw
ZXIuZ2V0RGlyZWN0b3J5KCcvYScsICcvYS8uLi8uLi4vZycsIHtjcmVhdGU6dHJ1ZX0sIEZpbGVF
cnJvci5OT1RfRk9VTkRfRVJSKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBo
ZWxwZXIuZ2V0RmlsZSgnL2EnLCAnLi9iLnR4dCcsIHtjcmVhdGU6dHJ1ZX0pOyB9LAotICAgICAg
ICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvYScsICcuLi9iLnR4dCcs
IHtjcmVhdGU6dHJ1ZX0pOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBl
ci5nZXRGaWxlKCcvYScsICcuLi8uLi9iL2MudHh0Jywge2NyZWF0ZTp0cnVlfSk7IH0sCi0gICAg
ICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy9hJywgJy9hLy4uLy4u
L2QudHh0Jywge2NyZWF0ZTp0cnVlfSk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIp
IHsgaGVscGVyLmdldEZpbGUoJy9hJywgJy9hLy4uLy4uL2IvLi9jLy4uLy4uLy4uLy4uLy4uL2Uu
dHh0Jywge2NyZWF0ZTp0cnVlfSk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsg
aGVscGVyLmdldEZpbGUoJy9hJywgJy4uLi9mLnR4dCcsIHtjcmVhdGU6dHJ1ZX0pOyB9LAotICAg
ICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvYScsICcvYS8uLi8u
Li4vZy50eHQnLCB7Y3JlYXRlOnRydWV9LCBGaWxlRXJyb3IuTk9UX0ZPVU5EX0VSUik7IH0sCi0g
ICAgICAgIF0sCi0gICAgICAgIHBvc3Rjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0
aDonL2EnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYics
IGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYicsIGlzRGlyZWN0
b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYi9jJywgaXNEaXJlY3Rvcnk6dHJ1
ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9kJywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAg
ICAgICAgICB7ZnVsbFBhdGg6Jy9lJywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgICAgICB7
ZnVsbFBhdGg6Jy9mJywgbm9uZXhpc3RlbnQ6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6
Jy9hL2YnLCBub25leGlzdGVudDp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2cnLCBu
b25leGlzdGVudDp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvZycsIG5vbmV4aXN0
ZW50OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYS9iLnR4dCd9LAotICAgICAgICAg
ICAge2Z1bGxQYXRoOicvYi50eHQnfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2IvYy50eHQn
fSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2QudHh0J30sCi0gICAgICAgICAgICB7ZnVsbFBh
dGg6Jy9lLnR4dCd9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvZi50eHQnLCBub25leGlzdGVu
dDp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvZi50eHQnLCBub25leGlzdGVudDp0
cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2cudHh0Jywgbm9uZXhpc3RlbnQ6dHJ1ZX0s
Ci0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hL2cudHh0Jywgbm9uZXhpc3RlbnQ6dHJ1ZX0sCi0g
ICAgICAgIF0sCi0gICAgfSwKLSAgICB7Ci0gICAgICAgIG5hbWU6ICdHZXRFeGlzdGluZ0VudHJ5
JywKLSAgICAgICAgcHJlY29uZGl0aW9uOiBbIF0sCi0gICAgICAgIHRlc3RzOiBbCi0gICAgICAg
ICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldERpcmVjdG9yeSgnLycsICdhJywge2Ny
ZWF0ZTp0cnVlfSk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdl
dEZpbGUoJy8nLCAnYicsIHtjcmVhdGU6dHJ1ZX0pOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24o
aGVscGVyKSB7IGhlbHBlci5nZXREaXJlY3RvcnkoJy8nLCAnYScpOyB9LAotICAgICAgICAgICAg
ZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2InKTsgfQotICAgICAgICBd
LAotICAgICAgICBwb3N0Y29uZGl0aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hJywg
aXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9iJ30sCi0gICAgICAg
IF0sCi0gICAgfSwKLSAgICB7Ci0gICAgICAgIG5hbWU6ICdHZXROb25FeGlzdGVudCcsCi0gICAg
ICAgIHByZWNvbmRpdGlvbjogWyBdLAotICAgICAgICB0ZXN0czogWwotICAgICAgICAgICAgZnVu
Y3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXREaXJlY3RvcnkoJy8nLCAnYScsIHt9LCBGaWxlRXJy
b3IuTk9UX0ZPVU5EX0VSUik7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVs
cGVyLmdldEZpbGUoJy8nLCAnYicsIHt9LCBGaWxlRXJyb3IuTk9UX0ZPVU5EX0VSUik7IH0sCi0g
ICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldERpcmVjdG9yeSgnLycsICcv
bm9uZXhpc3RlbnQvYScsIHtjcmVhdGU6dHJ1ZX0sIEZpbGVFcnJvci5OT1RfRk9VTkRfRVJSKTsg
fSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICcv
bm9uZXhpc3RlbnQvYicsIHtjcmVhdGU6dHJ1ZX0sIEZpbGVFcnJvci5OT1RfRk9VTkRfRVJSKTsg
fQotICAgICAgICBdLAotICAgICAgICBwb3N0Y29uZGl0aW9uOiBbIF0sCi0gICAgfSwKLSAgICB7
Ci0gICAgICAgIG5hbWU6ICdHZXRGaWxlRm9yRGlyZWN0b3J5JywKLSAgICAgICAgcHJlY29uZGl0
aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hJywgaXNEaXJlY3Rvcnk6dHJ1ZX0KLSAg
ICAgICAgXSwKLSAgICAgICAgdGVzdHM6IFsKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikg
eyBoZWxwZXIuZ2V0RmlsZSgnLycsICdhJywge30sIEZpbGVFcnJvci5UWVBFX01JU01BVENIX0VS
Uik7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8n
LCAnL2EnLCB7fSwgRmlsZUVycm9yLlRZUEVfTUlTTUFUQ0hfRVJSKTsgfSwKLSAgICAgICAgXSwK
LSAgICAgICAgcG9zdGNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOicvYScsIGlz
RGlyZWN0b3J5OnRydWV9Ci0gICAgICAgIF0sCi0gICAgfSwKLSAgICB7Ci0gICAgICAgIG5hbWU6
ICdHZXREaXJlY3RvcnlGb3JGaWxlJywKLSAgICAgICAgcHJlY29uZGl0aW9uOiBbCi0gICAgICAg
ICAgICB7ZnVsbFBhdGg6Jy9hJ30KLSAgICAgICAgXSwKLSAgICAgICAgdGVzdHM6IFsKLSAgICAg
ICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RGlyZWN0b3J5KCcvJywgJ2EnLCB7
fSwgRmlsZUVycm9yLlRZUEVfTUlTTUFUQ0hfRVJSKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9u
KGhlbHBlcikgeyBoZWxwZXIuZ2V0RGlyZWN0b3J5KCcvJywgJy9hJywge30sIEZpbGVFcnJvci5U
WVBFX01JU01BVENIX0VSUik7IH0sCi0gICAgICAgIF0sCi0gICAgICAgIHBvc3Rjb25kaXRpb246
IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EnfQotICAgICAgICBdLAotICAgIH0sCi0gICAg
ewotICAgICAgICBuYW1lOiAnQ3JlYXRlV2l0aEV4Y2x1c2l2ZScsCi0gICAgICAgIHByZWNvbmRp
dGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOicvYScsIGlzRGlyZWN0b3J5OnRydWV9LAot
ICAgICAgICAgICAge2Z1bGxQYXRoOicvYid9Ci0gICAgICAgIF0sCi0gICAgICAgIHRlc3RzOiBb
Ci0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldERpcmVjdG9yeSgnLycs
ICdhJywge2NyZWF0ZTp0cnVlLCBleGNsdXNpdmU6dHJ1ZX0sIEZpbGVFcnJvci5JTlZBTElEX01P
RElGSUNBVElPTl9FUlIpOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBl
ci5nZXRGaWxlKCcvJywgJ2InLCB7Y3JlYXRlOnRydWUsIGV4Y2x1c2l2ZTp0cnVlfSwgRmlsZUVy
cm9yLklOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUik7IH0KLSAgICAgICAgXSwKLSAgICAgICAgcG9z
dGNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOicvYScsIGlzRGlyZWN0b3J5OnRy
dWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYid9Ci0gICAgICAgIF0sCi0gICAgfSwKLV07
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL29wLWdldC1tZXRh
ZGF0YS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3Vy
Y2VzL29wLWdldC1tZXRhZGF0YS5qcwkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9vcC1nZXQtbWV0YWRhdGEuanMJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMjcgKzAsMCBAQAotdmFyIHRlc3RDYXNlcyA9IFsKLSAgICB7Ci0gICAgICAgIG5h
bWU6ICdHZXRNZXRhZGF0YScsCi0gICAgICAgIHByZWNvbmRpdGlvbjogWwotICAgICAgICAgICAg
e2Z1bGxQYXRoOicvdG1wJ30sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9maWxlMScsIHNpemU6
MH0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9maWxlMicsIHNpemU6MTB9LAotICAgICAgICAg
ICAge2Z1bGxQYXRoOicvZmlsZTMnLCBzaXplOjkwfSwKLSAgICAgICAgXSwKLSAgICAgICAgdGVz
dHM6IFsKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0TWV0YWRhdGEo
Jy8nKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RGlyZWN0
b3J5KCcvJywgJy9hJywge2NyZWF0ZTp0cnVlfSk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbiho
ZWxwZXIpIHsgaGVscGVyLmdldE1ldGFkYXRhKCcvYScpOyB9LAotICAgICAgICAgICAgZnVuY3Rp
b24oaGVscGVyKSB7IGhlbHBlci5nZXRNZXRhZGF0YSgnL2ZpbGUxJyk7IH0sCi0gICAgICAgICAg
ICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldE1ldGFkYXRhKCcvZmlsZTInKTsgfSwKLSAg
ICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0TWV0YWRhdGEoJy9maWxlMycp
OyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywg
Jy9iJywge2NyZWF0ZTp0cnVlfSk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsg
aGVscGVyLmdldE1ldGFkYXRhKCcvYicpOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVy
KSB7IGhlbHBlci5yZW1vdmUoJy90bXAnKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBl
cikgeyBoZWxwZXIuZ2V0TWV0YWRhdGEoJy90bXAnLCBGaWxlRXJyb3IuTk9UX0ZPVU5EX0VSUik7
IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLnNob3VsZEJlR3JlYXRl
clRoYW5PckVxdWFsKCcvYS5yZXR1cm5lZC5tb2RpZmljYXRpb25UaW1lJywgJy8ucmV0dXJuZWQu
bW9kaWZpY2F0aW9uVGltZScpOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhl
bHBlci5zaG91bGRCZUdyZWF0ZXJUaGFuT3JFcXVhbCgnL2IucmV0dXJuZWQubW9kaWZpY2F0aW9u
VGltZScsICcvLnJldHVybmVkLm1vZGlmaWNhdGlvblRpbWUnKTsgfSwKLSAgICAgICAgICAgIGZ1
bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuc2hvdWxkQmVHcmVhdGVyVGhhbk9yRXF1YWwoJy9iLnJl
dHVybmVkLm1vZGlmaWNhdGlvblRpbWUnLCAnL2EucmV0dXJuZWQubW9kaWZpY2F0aW9uVGltZScp
OyB9Ci0gICAgICAgIF0sCi0gICAgICAgIHBvc3Rjb25kaXRpb246IFsgXSwKLSAgICB9LAotXTsK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvb3AtZ2V0LXBhcmVu
dC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2Vz
L29wLWdldC1wYXJlbnQuanMJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3Qv
ZmlsZXN5c3RlbS9yZXNvdXJjZXMvb3AtZ2V0LXBhcmVudC5qcwkod29ya2luZyBjb3B5KQpAQCAt
MSwyMSArMCwwIEBACi12YXIgdGVzdENhc2VzID0gWwotICAgIHsKLSAgICAgICAgbmFtZTogJ0dl
dFBhcmVudCcsCi0gICAgICAgIHByZWNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRo
OicvYScsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYS9iJywg
aXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hL2IvYyd9LAotICAg
ICAgICBdLAotICAgICAgICB0ZXN0czogWwotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7
IGhlbHBlci5nZXRQYXJlbnQoJy8nKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikg
eyBoZWxwZXIuZ2V0UGFyZW50KCcvYScpOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVy
KSB7IGhlbHBlci5nZXRQYXJlbnQoJy9hL2InKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhl
bHBlcikgeyBoZWxwZXIuZ2V0UGFyZW50KCcvYS9iL2MnKTsgfQotICAgICAgICBdLAotICAgICAg
ICBwb3N0Y29uZGl0aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hJywgaXNEaXJlY3Rv
cnk6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hL2InLCBpc0RpcmVjdG9yeTp0cnVl
fSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYi9jJ30sCi0gICAgICAgIF0sCi0gICAgfSwK
LV07CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL29wLW1vdmUu
anMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9v
cC1tb3ZlLmpzCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0
ZW0vcmVzb3VyY2VzL29wLW1vdmUuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsMjUyICswLDAgQEAK
LXZhciB0ZXN0Q2FzZXMgPSBbCi0gICAgewotICAgICAgICBuYW1lOiAnTW92ZUZpbGVTaW1wbGUn
LAotICAgICAgICBwcmVjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EnLCBp
c0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYid9Ci0gICAgICAg
IF0sCi0gICAgICAgIHRlc3RzOiBbCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVs
cGVyLm1vdmUoJy9hL2InLCAnL2EnLCAnYycpOyB9Ci0gICAgICAgIF0sCi0gICAgICAgIHBvc3Rj
b25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EnLCBpc0RpcmVjdG9yeTp0cnVl
fSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYicsIG5vbmV4aXN0ZW50OnRydWV9LAotICAg
ICAgICAgICAge2Z1bGxQYXRoOicvYS9jJ30KLSAgICAgICAgXSwKLSAgICB9LAotICAgIHsKLSAg
ICAgICAgbmFtZTogJ01vdmVEaXJlY3RvcnlTaW1wbGUnLAotICAgICAgICBwcmVjb25kaXRpb246
IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAg
ICAgICAgIHtmdWxsUGF0aDonL2EvYicsIGlzRGlyZWN0b3J5OnRydWV9Ci0gICAgICAgIF0sCi0g
ICAgICAgIHRlc3RzOiBbCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLm1v
dmUoJy9hL2InLCAnL2EnLCAnYycpOyB9LAotICAgICAgICBdLAotICAgICAgICBwb3N0Y29uZGl0
aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hJywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0g
ICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hL2InLCBub25leGlzdGVudDp0cnVlfSwKLSAgICAgICAg
ICAgIHtmdWxsUGF0aDonL2EvYycsIGlzRGlyZWN0b3J5OnRydWV9Ci0gICAgICAgIF0sCi0gICAg
fSwKLSAgICB7Ci0gICAgICAgIG5hbWU6ICdNb3ZlRmlsZVRvRGlmZmVyZW50RGlyZWN0b3J5JywK
LSAgICAgICAgcHJlY29uZGl0aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hJywgaXNE
aXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hL2InfSwKLSAgICAgICAg
ICAgIHtmdWxsUGF0aDonL2MnLCBpc0RpcmVjdG9yeTp0cnVlfQotICAgICAgICBdLAotICAgICAg
ICB0ZXN0czogWwotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5tb3ZlKCcv
YS9iJywgJy9jJywgJ2QnKTsgfSwKLSAgICAgICAgXSwKLSAgICAgICAgcG9zdGNvbmRpdGlvbjog
WwotICAgICAgICAgICAge2Z1bGxQYXRoOicvYScsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAg
ICAgICAge2Z1bGxQYXRoOicvYS9iJywgbm9uZXhpc3RlbnQ6dHJ1ZX0sCi0gICAgICAgICAgICB7
ZnVsbFBhdGg6Jy9jL2QnfQotICAgICAgICBdLAotICAgIH0sCi0gICAgewotICAgICAgICBuYW1l
OiAnTW92ZUZpbGVXaXRoRW1wdHlOYW1lJywKLSAgICAgICAgcHJlY29uZGl0aW9uOiBbCi0gICAg
ICAgICAgICB7ZnVsbFBhdGg6Jy9hJywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgICAgICB7
ZnVsbFBhdGg6Jy9hL2InfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2MnLCBpc0RpcmVjdG9y
eTp0cnVlfSwKLSAgICAgICAgXSwKLSAgICAgICAgdGVzdHM6IFsKLSAgICAgICAgICAgIGZ1bmN0
aW9uKGhlbHBlcikgeyBoZWxwZXIubW92ZSgnL2EvYicsICcvYycsIG51bGwpOyB9LAotICAgICAg
ICBdLAotICAgICAgICBwb3N0Y29uZGl0aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9h
JywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hL2InLCBub25l
eGlzdGVudDp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2MvYid9Ci0gICAgICAgIF0s
Ci0gICAgfSwKLSAgICB7Ci0gICAgICAgIG5hbWU6ICdNb3ZlRmlsZVdpdGhFbXB0eU5hbWVUb1Nh
bWVEaXJlY3RvcnknLAotICAgICAgICBwcmVjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxs
UGF0aDonL2EnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2Ev
Yid9LAotICAgICAgICBdLAotICAgICAgICB0ZXN0czogWwotICAgICAgICAgICAgZnVuY3Rpb24o
aGVscGVyKSB7IGhlbHBlci5tb3ZlKCcvYS9iJywgJy9hJywgbnVsbCwgRmlsZUVycm9yLklOVkFM
SURfTU9ESUZJQ0FUSU9OX0VSUik7IH0sCi0gICAgICAgIF0sCi0gICAgICAgIHBvc3Rjb25kaXRp
b246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAg
ICAgICAgICAgIHtmdWxsUGF0aDonL2EvYid9LAotICAgICAgICBdLAotICAgIH0sCi0gICAgewot
ICAgICAgICBuYW1lOiAnTW92ZUZpbGVXaXRoU2FtZU5hbWUnLAotICAgICAgICBwcmVjb25kaXRp
b246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAg
ICAgICAgICAgIHtmdWxsUGF0aDonL2EvYid9LAotICAgICAgICBdLAotICAgICAgICB0ZXN0czog
WwotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5tb3ZlKCcvYS9iJywgJy9h
JywgJ2InLCBGaWxlRXJyb3IuSU5WQUxJRF9NT0RJRklDQVRJT05fRVJSKTsgfSwKLSAgICAgICAg
XSwKLSAgICAgICAgcG9zdGNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOicvYScs
IGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYS9iJ30sCi0gICAg
ICAgIF0sCi0gICAgfSwKLSAgICB7Ci0gICAgICAgIG5hbWU6ICdNb3ZlRm9yTm9uRXhpc3RlbnRF
bnRyeScsCi0gICAgICAgIHByZWNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOicv
YScsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYS9iJ30sCi0g
ICAgICAgICAgICB7ZnVsbFBhdGg6Jy9jJywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgIF0s
Ci0gICAgICAgIHRlc3RzOiBbCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVy
LnJlbW92ZSgnL2EvYicpOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBl
ci5tb3ZlKCcvYS9iJywgJy9jJywgJ2InLCBGaWxlRXJyb3IuTk9UX0ZPVU5EX0VSUik7IH0sCi0g
ICAgICAgIF0sCi0gICAgICAgIHBvc3Rjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0
aDonL2EnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2MnLCBp
c0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgXSwKLSAgICB9LAotICAgIHsKLSAgICAgICAgbmFt
ZTogJ01vdmVFbnRyeVRvTm9uRXhpc3RlbnREaXJlY3RvcnknLAotICAgICAgICBwcmVjb25kaXRp
b246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAg
ICAgICAgICAgIHtmdWxsUGF0aDonL2EvYid9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYycs
IGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICBdLAotICAgICAgICB0ZXN0czogWwotICAgICAg
ICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5yZW1vdmUoJy9jJyk7IH0sCi0gICAgICAg
ICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLm1vdmUoJy9hL2InLCAnL2MnLCAnYicsIEZp
bGVFcnJvci5OT1RfRk9VTkRfRVJSKTsgfSwKLSAgICAgICAgXSwKLSAgICAgICAgcG9zdGNvbmRp
dGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOicvYScsIGlzRGlyZWN0b3J5OnRydWV9LAot
ICAgICAgICAgICAge2Z1bGxQYXRoOicvYS9iJ30sCi0gICAgICAgIF0sCi0gICAgfSwKLSAgICB7
Ci0gICAgICAgIG5hbWU6ICdNb3ZlRW50cnlUb0l0c0NoaWxkJywKLSAgICAgICAgcHJlY29uZGl0
aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hJywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0g
ICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hL2InLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAg
ICAgIHtmdWxsUGF0aDonL2EvYi9jJywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgIF0sCi0g
ICAgICAgIHRlc3RzOiBbCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLm1v
dmUoJy9hJywgJy9hL2InLCAnZCcsIEZpbGVFcnJvci5JTlZBTElEX01PRElGSUNBVElPTl9FUlIp
OyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5tb3ZlKCcvYS9iJywg
Jy9hL2IvYycsICdkJywgRmlsZUVycm9yLklOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUik7IH0sCi0g
ICAgICAgIF0sCi0gICAgICAgIHBvc3Rjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0
aDonL2EnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYics
IGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYS9iL2MnLCBpc0Rp
cmVjdG9yeTp0cnVlfSwKLSAgICAgICAgXSwKLSAgICB9LAotICAgIHsKLSAgICAgICAgbmFtZTog
J01vdmVSZWN1cnNpdmUnLAotICAgICAgICBwcmVjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtm
dWxsUGF0aDonL2EnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDon
L2EvYicsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYS9iL2Mn
fSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYi9kJ30sCi0gICAgICAgICAgICB7ZnVsbFBh
dGg6Jy9iJywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgIF0sCi0gICAgICAgIHRlc3RzOiBb
Ci0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLm1vdmUoJy9hJywgJy9iJywg
J2EnKTsgfSwKLSAgICAgICAgXSwKLSAgICAgICAgcG9zdGNvbmRpdGlvbjogWwotICAgICAgICAg
ICAge2Z1bGxQYXRoOicvYScsIG5vbmV4aXN0ZW50OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQ
YXRoOicvYi9hJywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9i
L2EvYicsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYi9hL2Iv
Yyd9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYi9hL2IvZCd9LAotICAgICAgICBdLAotICAg
IH0sCi0gICAgewotICAgICAgICBuYW1lOiAiT3ZlcndyaXRpbmdNb3ZlRmlsZVRvRmlsZSIsCi0g
ICAgICAgIHByZWNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOiIvYSJ9LAotICAg
ICAgICAgICAge2Z1bGxQYXRoOiIvYiJ9LAotICAgICAgICBdLAotICAgICAgICB0ZXN0czogWwot
ICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7aGVscGVyLm1vdmUoIi9hIiwiLyIsImIiKTt9
Ci0gICAgICAgIF0sCi0gICAgICAgIHBvc3Rjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxs
UGF0aDoiL2IifSwKLSAgICAgICAgXSwKLSAgICB9LAotICAgIHsKLSAgICAgICAgbmFtZTogIk92
ZXJ3cml0aW5nTW92ZURpcmVjdG9yeVRvRW1wdHlEaXJlY3RvcnkiLAotICAgICAgICBwcmVjb25k
aXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDoiL2EiLCBpc0RpcmVjdG9yeTp0cnVlfSwK
LSAgICAgICAgICAgIHtmdWxsUGF0aDoiL2EvYiJ9LAotICAgICAgICAgICAge2Z1bGxQYXRoOiIv
YyIsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICBdLAotICAgICAgICB0ZXN0czogWwotICAg
ICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7aGVscGVyLm1vdmUoIi9hIiwiLyIsImMiKTt9Ci0g
ICAgICAgIF0sCi0gICAgICAgIHBvc3Rjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0
aDoiL2MiLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDoiL2MvYiJ9
LAotICAgICAgICAgICAge2Z1bGxQYXRoOiIvYSIsIG5vbmV4aXN0ZW50OnRydWV9LAotICAgICAg
ICBdLAotICAgIH0sCi0gICAgewotICAgICAgICBuYW1lOiAiT3ZlcndyaXRpbmdNb3ZlRmlsZVRv
RGlyZWN0b3J5IiwKLSAgICAgICAgcHJlY29uZGl0aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBh
dGg6Ii9hIn0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Ii9iIiwgaXNEaXJlY3Rvcnk6IHRydWV9
LAotICAgICAgICBdLAotICAgICAgICB0ZXN0czogWwotICAgICAgICAgICAgZnVuY3Rpb24oaGVs
cGVyKSB7aGVscGVyLm1vdmUoIi9hIiwiLyIsImIiLEZpbGVFcnJvci5JTlZBTElEX01PRElGSUNB
VElPTl9FUlIpO30KLSAgICAgICAgXSwKLSAgICAgICAgcG9zdGNvbmRpdGlvbjogWwotICAgICAg
ICAgICAge2Z1bGxQYXRoOiIvYSJ9LAotICAgICAgICAgICAge2Z1bGxQYXRoOiIvYiIsIGlzRGly
ZWN0b3J5OiB0cnVlfSwKLSAgICAgICAgXSwKLSAgICB9LAotICAgIHsKLSAgICAgICAgbmFtZTog
Ik92ZXJ3cml0aW5nTW92ZURpcmVjdG9yeVRvRmlsZSIsCi0gICAgICAgIHByZWNvbmRpdGlvbjog
WwotICAgICAgICAgICAge2Z1bGxQYXRoOiIvYSIsIGlzRGlyZWN0b3J5OiB0cnVlfSwKLSAgICAg
ICAgICAgIHtmdWxsUGF0aDoiL2IifSwKLSAgICAgICAgXSwKLSAgICAgICAgdGVzdHM6IFsKLSAg
ICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikge2hlbHBlci5tb3ZlKCIvYSIsIi8iLCJiIixGaWxl
RXJyb3IuSU5WQUxJRF9NT0RJRklDQVRJT05fRVJSKTt9Ci0gICAgICAgIF0sCi0gICAgICAgIHBv
c3Rjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDoiL2EiLCBpc0RpcmVjdG9yeTog
dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Ii9iIn0sCi0gICAgICAgIF0sCi0gICAgfSwK
LSAgICB7Ci0gICAgICAgIG5hbWU6ICJPdmVyd3JpdGluZ01vdmVGaWxlVG9Ob25lbXB0eURpcmVj
dG9yeSIsCi0gICAgICAgIHByZWNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOiIv
YSJ9LAotICAgICAgICAgICAge2Z1bGxQYXRoOiIvYiIsIGlzRGlyZWN0b3J5OiB0cnVlfSwKLSAg
ICAgICAgICAgIHtmdWxsUGF0aDoiL2IvYyJ9LAotICAgICAgICBdLAotICAgICAgICB0ZXN0czog
WwotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7aGVscGVyLm1vdmUoIi9hIiwiLyIsImIi
LEZpbGVFcnJvci5JTlZBTElEX01PRElGSUNBVElPTl9FUlIpO30KLSAgICAgICAgXSwKLSAgICAg
ICAgcG9zdGNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOiIvYSJ9LAotICAgICAg
ICAgICAge2Z1bGxQYXRoOiIvYiIsIGlzRGlyZWN0b3J5OiB0cnVlfSwKLSAgICAgICAgICAgIHtm
dWxsUGF0aDoiL2IvYyJ9LAotICAgICAgICBdLAotICAgIH0sCi0gICAgewotICAgICAgICBuYW1l
OiAiT3ZlcndyaXRpbmdNb3ZlRGlyZWN0b3J5VG9Ob25lbXB0eURpcmVjdG9yeSIsCi0gICAgICAg
IHByZWNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOiIvYSIsIGlzRGlyZWN0b3J5
OiB0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDoiL2EvYiJ9LAotICAgICAgICAgICAge2Z1
bGxQYXRoOiIvYyIsIGlzRGlyZWN0b3J5OiB0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDoi
L2MvZCJ9LAotICAgICAgICBdLAotICAgICAgICB0ZXN0czogWwotICAgICAgICAgICAgZnVuY3Rp
b24oaGVscGVyKSB7aGVscGVyLm1vdmUoIi9hIiwiLyIsImMiLEZpbGVFcnJvci5JTlZBTElEX01P
RElGSUNBVElPTl9FUlIpO30KLSAgICAgICAgXSwKLSAgICAgICAgcG9zdGNvbmRpdGlvbjogWwot
ICAgICAgICAgICAge2Z1bGxQYXRoOiIvYSIsIGlzRGlyZWN0b3J5OiB0cnVlfSwKLSAgICAgICAg
ICAgIHtmdWxsUGF0aDoiL2EvYiJ9LAotICAgICAgICAgICAge2Z1bGxQYXRoOiIvYyIsIGlzRGly
ZWN0b3J5OiB0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDoiL2MvZCJ9LAotICAgICAgICBd
LAotICAgIH0sCi1dOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNl
cy9vcC1yZWFkLWRpcmVjdG9yeS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zp
bGVzeXN0ZW0vcmVzb3VyY2VzL29wLXJlYWQtZGlyZWN0b3J5LmpzCShyZXZpc2lvbiAxNTY2OTEp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL29wLXJlYWQtZGlyZWN0
b3J5LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDIzICswLDAgQEAKLXZhciB0ZXN0Q2FzZXMgPSBb
Ci0gICAgewotICAgICAgICBuYW1lOiAnUmVhZERpcmVjdG9yeScsCi0gICAgICAgIHByZWNvbmRp
dGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOicvYScsIGlzRGlyZWN0b3J5OnRydWV9LAot
ICAgICAgICAgICAge2Z1bGxQYXRoOicvYicsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICAg
ICAge2Z1bGxQYXRoOicvYycsIH0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9kJywgfSwKLSAg
ICAgICAgICAgIHtmdWxsUGF0aDonL2UnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAg
IHtmdWxsUGF0aDonL2YnLCB9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvZycsIGlzRGlyZWN0
b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYS9iJ30sCi0gICAgICAgICAgICB7
ZnVsbFBhdGg6Jy9hL2MnfSwKLSAgICAgICAgXSwKLSAgICAgICAgdGVzdHM6IFsKLSAgICAgICAg
ICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIucmVhZERpcmVjdG9yeSgnLycpOyB9LAotICAg
ICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5yZW1vdmUoJy9jJyk7IH0sCi0gICAg
ICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLnJlbW92ZSgnL2UnKTsgfSwKLSAgICAg
ICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIucmVtb3ZlKCcvZicpOyB9LAotICAgICAg
ICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5yZWFkRGlyZWN0b3J5KCcvJyk7IH0KLSAg
ICAgICAgXSwKLSAgICB9LAotXTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9y
ZXNvdXJjZXMvb3AtcmVtb3ZlLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmls
ZXN5c3RlbS9yZXNvdXJjZXMvb3AtcmVtb3ZlLmpzCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL29wLXJlbW92ZS5qcwkod29ya2luZyBj
b3B5KQpAQCAtMSw2MiArMCwwIEBACi12YXIgdGVzdENhc2VzID0gWwotICAgIHsKLSAgICAgICAg
bmFtZTogJ1JlbW92ZVNpbXBsZScsCi0gICAgICAgIHByZWNvbmRpdGlvbjogWwotICAgICAgICAg
ICAge2Z1bGxQYXRoOicvYScsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQ
YXRoOicvYid9Ci0gICAgICAgIF0sCi0gICAgICAgIHRlc3RzOiBbCi0gICAgICAgICAgICBmdW5j
dGlvbihoZWxwZXIpIHsgaGVscGVyLnJlbW92ZSgnL2EnKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0
aW9uKGhlbHBlcikgeyBoZWxwZXIucmVtb3ZlKCcvYicpOyB9LAotICAgICAgICAgICAgZnVuY3Rp
b24oaGVscGVyKSB7IGhlbHBlci5yZW1vdmUoJy8nLCBGaWxlRXJyb3IuSU5WQUxJRF9NT0RJRklD
QVRJT05fRVJSKTsgfQotICAgICAgICBdLAotICAgICAgICBwb3N0Y29uZGl0aW9uOiBbCi0gICAg
ICAgICAgICB7ZnVsbFBhdGg6Jy9hJywgbm9uZXhpc3RlbnQ6dHJ1ZX0sCi0gICAgICAgICAgICB7
ZnVsbFBhdGg6Jy9iJywgbm9uZXhpc3RlbnQ6dHJ1ZX0KLSAgICAgICAgXSwKLSAgICB9LAotICAg
IHsKLSAgICAgICAgbmFtZTogJ1JlbW92ZU5vblJlY3Vyc2l2ZVdpdGhDaGlsZHJlbicsCi0gICAg
ICAgIHByZWNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOicvYScsIGlzRGlyZWN0
b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYS9iJywgaXNEaXJlY3Rvcnk6dHJ1
ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hL2MnLH0KLSAgICAgICAgXSwKLSAgICAgICAg
dGVzdHM6IFsKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIucmVtb3ZlKCcv
YScsIEZpbGVFcnJvci5JTlZBTElEX01PRElGSUNBVElPTl9FUlIpOyB9Ci0gICAgICAgIF0sCi0g
ICAgICAgIHBvc3Rjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EnLCBpc0Rp
cmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYicsIGlzRGlyZWN0b3J5
OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYS9jJyx9Ci0gICAgICAgIF0sCi0gICAg
fSwKLSAgICB7Ci0gICAgICAgIG5hbWU6ICdSZW1vdmVSZWN1cnNpdmVXaXRob3V0Q2hpbGRyZW4n
LAotICAgICAgICBwcmVjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EnLCBp
c0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgXSwKLSAgICAgICAgdGVzdHM6IFsKLSAgICAgICAg
ICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIucmVtb3ZlUmVjdXJzaXZlbHkoJy9hJyk7IH0K
LSAgICAgICAgXSwKLSAgICAgICAgcG9zdGNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQ
YXRoOicvYScsIG5vbmV4aXN0ZW50OnRydWV9LAotICAgICAgICBdLAotICAgIH0sCi0gICAgewot
ICAgICAgICBuYW1lOiAnUmVtb3ZlUmVjdXJzaXZlV2l0aENoaWxkcmVuJywKLSAgICAgICAgcHJl
Y29uZGl0aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hJywgaXNEaXJlY3Rvcnk6dHJ1
ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hL2InLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAg
ICAgICAgICAgIHtmdWxsUGF0aDonL2EvYycsfQotICAgICAgICBdLAotICAgICAgICB0ZXN0czog
WwotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5yZW1vdmVSZWN1cnNpdmVs
eSgnL2EnKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIucmVtb3Zl
UmVjdXJzaXZlbHkoJy8nLCBGaWxlRXJyb3IuSU5WQUxJRF9NT0RJRklDQVRJT05fRVJSKTsgfQot
ICAgICAgICBdLAotICAgICAgICBwb3N0Y29uZGl0aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBh
dGg6Jy9hJywgbm9uZXhpc3RlbnQ6dHJ1ZX0sCi0gICAgICAgIF0sCi0gICAgfSwKLV07Ci0KSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvb3AtcmVzdHJpY3RlZC1j
aGFycy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3Vy
Y2VzL29wLXJlc3RyaWN0ZWQtY2hhcnMuanMJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRl
c3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvb3AtcmVzdHJpY3RlZC1jaGFycy5qcwkod29y
a2luZyBjb3B5KQpAQCAtMSw1MiArMCwwIEBACi12YXIgdGVzdENhc2VzID0gWwotICAgIHsKLSAg
ICAgICAgbmFtZTogJ1Jlc3RyaWN0ZWRDaGFycycsCi0gICAgICAgIHByZWNvbmRpdGlvbjogWwot
ICAgICAgICAgICAge2Z1bGxQYXRoOicvYWInLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAg
XSwKLSAgICAgICAgdGVzdHM6IFsKLSAgICAgICAgICAgIC8vIFRlc3QgZm9yIGRpZmZpY3VsdCBj
aGFyYWN0ZXJzIGluICdwYXRoJyBwYXJhbWV0ZXJzLgotICAgICAgICAgICAgZnVuY3Rpb24oaGVs
cGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2E8YicsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAot
ICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2E+Yics
IHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhl
bHBlci5nZXRGaWxlKCcvJywgJ2E6YicsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotICAgICAgICAg
ICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2E/YicsIHtjcmVhdGU6
dHJ1ZX0sIDApOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRG
aWxlKCcvJywgJ2EqYicsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotICAgICAgICAgICAgZnVuY3Rp
b24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2EiYicsIHtjcmVhdGU6dHJ1ZX0sIDAp
OyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywg
J2F8YicsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxw
ZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnPGFiJywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0g
ICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnOmFiJywg
e2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVs
cGVyLmdldEZpbGUoJy8nLCAnP2FiJywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0gICAgICAgICAg
ICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnKmFiJywge2NyZWF0ZTp0
cnVlfSwgMCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZp
bGUoJy8nLCAnImFiJywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlv
bihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnfGFiJywge2NyZWF0ZTp0cnVlfSwgMCk7
IH0sCi0KLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycs
ICdhYjwnLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBl
cikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdhYjonLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLSAg
ICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdhYj8nLCB7
Y3JlYXRlOnRydWV9LCAwKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxw
ZXIuZ2V0RmlsZSgnLycsICdhYionLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLSAgICAgICAgICAg
IGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdhYiInLCB7Y3JlYXRlOnRy
dWV9LCAwKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0Rmls
ZSgnLycsICdhYnwnLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLQotICAgICAgICAgICAgLy8gT25s
eSAnXFwnIGlzIGRpc2FsbG93ZWQuCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVs
cGVyLmdldEZpbGUoJy8nLCAnYVxcYicsIHtjcmVhdGU6dHJ1ZX0sIEZpbGVFcnJvci5JTlZBTElE
X01PRElGSUNBVElPTl9FUlIpOyB9LAotCi0gICAgICAgICAgICAvLyBUZXN0IGZvciBkaWZmaWN1
bHQgY2hhcmFjdGVycyBpbiAnbmFtZScgcGFyYW1ldGVycy4KLSAgICAgICAgICAgIGZ1bmN0aW9u
KGhlbHBlcikgeyBoZWxwZXIuY29weSgnL2FiJywgJy8nLCAnIGE8YicsIDApOyB9LAotICAgICAg
ICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5jb3B5KCcvYWInLCAnLycsICcgYTpiJywg
MCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmNvcHkoJy9hYics
ICcvJywgJyBhP2InLCAwKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxw
ZXIuY29weSgnL2FiJywgJy8nLCAnIGEqYicsIDApOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24o
aGVscGVyKSB7IGhlbHBlci5jb3B5KCcvYWInLCAnLycsICcgYSJiJywgMCk7IH0sCi0gICAgICAg
ICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmNvcHkoJy9hYicsICcvJywgJyBhfGInLCAw
KTsgfSwKLQotICAgICAgICAgICAgLy8gJ05hbWUnIHBhcmFtZXRlciBjYW5ub3QgY29udGFpbiAn
Lycgb3IgJ1xcJy4KLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuY29weSgn
L2FiJywgJy8nLCAnYS9iJywgRmlsZUVycm9yLklOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUik7IH0s
Ci0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmNvcHkoJy9hYicsICcvJywg
J2FcXGInLCBGaWxlRXJyb3IuSU5WQUxJRF9NT0RJRklDQVRJT05fRVJSKTsgfSwKLSAgICAgICAg
XSwKLSAgICAgICAgcG9zdGNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOicvYWIn
LCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonYTxiJywgaXNEaXJl
Y3Rvcnk6ZmFsc2V9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicgYXxiJywgaXNEaXJlY3Rvcnk6
dHJ1ZX0KLSAgICAgICAgXSwKLSAgICB9LAotXTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmls
ZXN5c3RlbS9yZXNvdXJjZXMvb3AtcmVzdHJpY3RlZC1uYW1lcy5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL29wLXJlc3RyaWN0ZWQtbmFtZXMu
anMJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNv
dXJjZXMvb3AtcmVzdHJpY3RlZC1uYW1lcy5qcwkod29ya2luZyBjb3B5KQpAQCAtMSw2NCArMCww
IEBACi12YXIgdGVzdENhc2VzID0gWwotICAgIHsKLSAgICAgICAgbmFtZTogJ1Jlc3RyaWN0ZWRO
YW1lcycsCi0gICAgICAgIHByZWNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOicv
YScsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYicsIGlzRGly
ZWN0b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYycsIGlzRGlyZWN0b3J5OnRy
dWV9Ci0gICAgICAgIF0sCi0gICAgICAgIHRlc3RzOiBbCi0gICAgICAgICAgICBmdW5jdGlvbiho
ZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnLicsIHtjcmVhdGU6dHJ1ZX0sIEZpbGVFcnJv
ci5TRUNVUklUWV9FUlIpOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBl
ci5nZXRGaWxlKCcvJywgJy4uJywge2NyZWF0ZTp0cnVlfSwgRmlsZUVycm9yLlNFQ1VSSVRZX0VS
Uik7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8n
LCAnY29uJywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxw
ZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnQ09OJywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0g
ICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnQ29uJywg
e2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVs
cGVyLmdldEZpbGUoJy8nLCAnY09uLnR4dCcsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotICAgICAg
ICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2EvY29OJywge2Ny
ZWF0ZTp0cnVlfSwgMCk7IH0sCi0KLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxw
ZXIuZ2V0RmlsZSgnLycsICdwcm4nLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLSAgICAgICAgICAg
IGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdQUk4nLCB7Y3JlYXRlOnRy
dWV9LCAwKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0Rmls
ZSgnLycsICdQcm4nLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9u
KGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdwUm4udHh0Jywge2NyZWF0ZTp0cnVlfSwg
MCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8n
LCAnYS9wck4nLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLQotICAgICAgICAgICAgZnVuY3Rpb24o
aGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2F1eCcsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9
LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ0FV
WCcsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7
IGhlbHBlci5nZXRGaWxlKCcvJywgJ0F1eCcsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotICAgICAg
ICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2FVeC50eHQnLCB7
Y3JlYXRlOnRydWV9LCAwKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxw
ZXIuZ2V0RmlsZSgnLycsICdhL2F1WCcsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotCi0gICAgICAg
ICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnbnVsJywge2NyZWF0
ZTp0cnVlfSwgMCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdl
dEZpbGUoJy8nLCAnTlVMJywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0gICAgICAgICAgICBmdW5j
dGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnTnVsJywge2NyZWF0ZTp0cnVlfSwg
MCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8n
LCAnblVsLnR4dCcsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24o
aGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2EvbnVMJywge2NyZWF0ZTp0cnVlfSwgMCk7
IH0sCi0KLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycs
ICdjb20xJywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxw
ZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnQ09NMicsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAot
ICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ0NvbTQn
LCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBo
ZWxwZXIuZ2V0RmlsZSgnLycsICdjT003LmZvbycsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotICAg
ICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2EvY29NOScs
IHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsg
aGVscGVyLmdldEZpbGUoJy8nLCAnbHB0MScsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotICAgICAg
ICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ0xQVDInLCB7Y3Jl
YXRlOnRydWV9LCAwKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIu
Z2V0RmlsZSgnLycsICdMcHQ0Jywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0gICAgICAgICAgICBm
dW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnbFBUNy5mb28nLCB7Y3JlYXRl
OnRydWV9LCAwKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0
RmlsZSgnLycsICdhL2xwVDknLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLQotICAgICAgICAgICAg
ZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2ZvbyAnLCB7Y3JlYXRlOnRy
dWV9LCAwKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0Rmls
ZSgnLycsICdmb29cbicsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotICAgICAgICAgICAgZnVuY3Rp
b24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2Zvby4nLCB7Y3JlYXRlOnRydWV9LCAw
KTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuY29weSgnL2EnLCAn
LycsICdmb28gICcsIDApOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBl
ci5jb3B5KCcvYScsICcvJywgJ2Zvb1x0JywgMCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbiho
ZWxwZXIpIHsgaGVscGVyLmNvcHkoJy9hJywgJy8nLCAnZm9vLi4nLCAwKTsgfSwKLSAgICAgICAg
ICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIubW92ZSgnL2EnLCAnLycsICdmb28gICAgJywg
MCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLm1vdmUoJy9iJywg
Jy8nLCAnZm9vXHRcdCcsIDApOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhl
bHBlci5tb3ZlKCcvYycsICcvJywgJ2Zvby4uLi4uJywgMCk7IH0sCi0gICAgICAgIF0sCi0gICAg
ICAgIHBvc3Rjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2ZvbyAgICAnLCBp
c0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2Zvb1x0XHQnLCBpc0Rp
cmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2Zvby4uLi4uJywgaXNEaXJl
Y3Rvcnk6dHJ1ZX0KLSAgICAgICAgXSwKLSAgICB9LAotXTsKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvb3AtcmVzdHJpY3RlZC11bmljb2RlLmpzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvb3AtcmVzdHJpY3Rl
ZC11bmljb2RlLmpzCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVz
eXN0ZW0vcmVzb3VyY2VzL29wLXJlc3RyaWN0ZWQtdW5pY29kZS5qcwkod29ya2luZyBjb3B5KQpA
QCAtMSw0NSArMCwwIEBACi12YXIgdGVzdENhc2VzID0gWwotICAgIHsKLSAgICAgICAgbmFtZTog
J1Jlc3RyaWN0ZWRVbmljb2RlQ2hhcnMnLAotICAgICAgICBwcmVjb25kaXRpb246IFsgXSwKLSAg
ICAgICAgdGVzdHM6IFsKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0
RmlsZSgnLycsICdhYicsIHtjcmVhdGU6dHJ1ZX0pOyB9LAotCi0gICAgICAgICAgICAvLyBFbWJl
ZGRlZCBOVUxzIGFyZW4ndCBhbGxvd2VkOyBhbnl0aGluZyBlbHNlIGluIHRoZSBmaXJzdCAzMiBp
cyBmYWlyIGdhbWUuCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZp
bGUoJy8nLCAnYVx1MDAwMGInLCB7Y3JlYXRlOnRydWV9LCBGaWxlRXJyb3IuSU5WQUxJRF9NT0RJ
RklDQVRJT05fRVJSKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIu
Z2V0RmlsZSgnLycsICdhXHUwMDAxYicsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotICAgICAgICAg
ICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2FcdTAwMDJiJywge2Ny
ZWF0ZTp0cnVlfSwgMCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVy
LmdldEZpbGUoJy8nLCAnYVx1MDAwM2InLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLSAgICAgICAg
ICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdhXHUwMDA0YicsIHtj
cmVhdGU6dHJ1ZX0sIDApOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBl
ci5nZXRGaWxlKCcvJywgJ2FcdTAwMDViJywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0gICAgICAg
ICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnYVx1MDAwNmInLCB7
Y3JlYXRlOnRydWV9LCAwKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxw
ZXIuZ2V0RmlsZSgnLycsICdhXHUwMDA3YicsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotICAgICAg
ICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2FcdTAwMDhiJywg
e2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVs
cGVyLmdldEZpbGUoJy8nLCAnYVx1MDAwOWInLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLSAgICAg
ICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdhXHUwMDBhYics
IHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhl
bHBlci5nZXRGaWxlKCcvJywgJ2FcdTAwMGJiJywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0gICAg
ICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnYVx1MDAwY2In
LCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBo
ZWxwZXIuZ2V0RmlsZSgnLycsICdhXHUwMDBkYicsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotICAg
ICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2FcdTAwMGVi
Jywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsg
aGVscGVyLmdldEZpbGUoJy8nLCAnYVx1MDAwZmInLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLSAg
ICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdhXHUwMDEw
YicsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7
IGhlbHBlci5nZXRGaWxlKCcvJywgJ2FcdTAwMTFiJywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0g
ICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnYVx1MDAx
MmInLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikg
eyBoZWxwZXIuZ2V0RmlsZSgnLycsICdhXHUwMDEzYicsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAot
ICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2FcdTAw
MTRiJywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIp
IHsgaGVscGVyLmdldEZpbGUoJy8nLCAnYVx1MDAxNWInLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwK
LSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdhXHUw
MDE2YicsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVy
KSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2FcdTAwMTdiJywge2NyZWF0ZTp0cnVlfSwgMCk7IH0s
Ci0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnYVx1
MDAxOGInLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBl
cikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdhXHUwMDE5YicsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9
LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2Fc
dTAwMWFiJywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxw
ZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnYVx1MDAxYmInLCB7Y3JlYXRlOnRydWV9LCAwKTsg
fSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdh
XHUwMDFjYicsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVs
cGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2FcdTAwMWRiJywge2NyZWF0ZTp0cnVlfSwgMCk7
IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAn
YVx1MDAxZWInLCB7Y3JlYXRlOnRydWV9LCAwKTsgfQotICAgICAgICBdLAotICAgICAgICBwb3N0
Y29uZGl0aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hYid9LAotICAgICAgICBdLAot
ICAgIH0sCi1dOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9v
cC10ZXN0cy1oZWxwZXIuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lz
dGVtL3Jlc291cmNlcy9vcC10ZXN0cy1oZWxwZXIuanMJKHJldmlzaW9uIDE1NjY5MSkKKysrIExh
eW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvb3AtdGVzdHMtaGVscGVyLmpzCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDQxMyArMCwwIEBACi0vLyBIZWxwZXIgcm91dGluZS4KLWZ1bmN0
aW9uIHRvU3RyaW5nKG9iaikgewotICAgIGlmIChvYmogPT0gdW5kZWZpbmVkKSB7Ci0gICAgICAg
IHJldHVybiAidW5kZWZpbmVkIjsKLSAgICB9IGVsc2UgaWYgKHR5cGVvZiBvYmogPT0gJ29iamVj
dCcpIHsKLSAgICAgICAgaWYgKG9iai5sZW5ndGggIT0gdW5kZWZpbmVkKSB7Ci0gICAgICAgICAg
ICB2YXIgc3RyaW5nQXJyYXkgPSBbXTsKLSAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
b2JqLmxlbmd0aDsgKytpKQotICAgICAgICAgICAgICAgIHN0cmluZ0FycmF5LnB1c2godG9TdHJp
bmcob2JqW2ldKSk7Ci0gICAgICAgICAgICBzdHJpbmdBcnJheS5zb3J0KCk7Ci0gICAgICAgICAg
ICByZXR1cm4gJ1snICsgc3RyaW5nQXJyYXkuam9pbignLFxuICcpICsgJ10nOwotICAgICAgICB9
IGVsc2UgaWYgKG9iai5pc0RpcmVjdG9yeSB8fCBvYmouaXNGaWxlKSB7Ci0gICAgICAgICAgICBy
ZXR1cm4gJ0VOVFJZIHtwYXRoOicgKyBvYmouZnVsbFBhdGggKyAnIG5hbWU6JyArIG9iai5uYW1l
ICsgKG9iai5pc0RpcmVjdG9yeSA/ICcgdHlwZTpESVJFQ1RPUlknIDogJyB0eXBlOkZJTEUnKSAr
ICd9JzsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHJldHVybiBvYmogKyAiIjsKLSAg
ICAgICAgfQotICAgIH0gZWxzZQotICAgICAgICByZXR1cm4gb2JqICsgIiI7Ci19Ci0KLS8vIENy
ZWF0ZXMgYSB0ZXN0IGVudmlyb25tZW50IGZvciB0aGUgZ2l2ZW4gZW50cmllcyB3aGVyZSBlbnRy
aWVzIGlzIGFuIGFycmF5IG9mIHtmdWxsUGF0aDpTdHJpbmcsIGlzRGlyZWN0b3J5OmJvb2xlYW59
IG9iamVjdC4KLS8vIFdoZW4gdGhlIHdvcmxkIGlzIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5LCBzdWNj
ZXNzQ2FsbGJhY2sgaXMgY2FsbGVkIHdpdGggYW4gb2JqZWN0IHRoYXQgaG9sZHMgYWxsIHRoZSBj
cmVhdGVkIGVudHJ5IG9iamVjdHMuCi1mdW5jdGlvbiBjcmVhdGVUZXN0RW52aXJvbm1lbnQoZmls
ZVN5c3RlbSwgZW50cmllcywgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKQotewotICAg
IHZhciBIZWxwZXIgPSBmdW5jdGlvbihmaWxlU3lzdGVtLCBlbnRyaWVzLCBzdWNjZXNzQ2FsbGJh
Y2ssIGVycm9yQ2FsbGJhY2spCi0gICAgewotICAgICAgICB0aGlzLmZpbGVTeXN0ZW0gPSBmaWxl
U3lzdGVtOwotICAgICAgICB0aGlzLmVudHJpZXMgPSBlbnRyaWVzOwotICAgICAgICB0aGlzLmN1
cnJlbnQgPSAwOwotICAgICAgICB0aGlzLnN1Y2Nlc3NDYWxsYmFjayA9IHN1Y2Nlc3NDYWxsYmFj
azsKLSAgICAgICAgdGhpcy5lcnJvckNhbGxiYWNrID0gZXJyb3JDYWxsYmFjazsKLSAgICAgICAg
dGhpcy5lbnZpcm9ubWVudCA9IHt9OwotCi0gICAgICAgIHRoaXMuY3JlYXRlU3VjY2Vzc0NhbGxi
YWNrID0gZnVuY3Rpb24oZW50cnksIHNpemUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChl
bnRyeS5pc0ZpbGUgJiYgc2l6ZSA+IDApIHsKLSAgICAgICAgICAgICAgICBlbnRyeS5jcmVhdGVX
cml0ZXIoYmluZENhbGxiYWNrKHRoaXMsIGZ1bmN0aW9uKHdyaXRlcikgewotICAgICAgICAgICAg
ICAgICAgICB3cml0ZXIudHJ1bmNhdGUoc2l6ZSk7Ci0gICAgICAgICAgICAgICAgICAgIHdyaXRl
ci5vbmVycm9yID0gYmluZENhbGxiYWNrKHRoaXMsIHRoaXMuY3JlYXRlRXJyb3JDYWxsYmFjayk7
Ci0gICAgICAgICAgICAgICAgICAgIHdyaXRlci5vbndyaXRlZW5kID0gYmluZENhbGxiYWNrKHRo
aXMsIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5lbnZpcm9ubWVu
dFtlbnRyeS5mdWxsUGF0aF0gPSBlbnRyeTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMu
ZW52aXJvbm1lbnRbZW50cnkuZnVsbFBhdGggKyAnLnNpemUnXSA9IHNpemU7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICB0aGlzLmNyZWF0ZU5leHRFbnRyeSgpOwotICAgICAgICAgICAgICAgICAg
ICB9KTsKLSAgICAgICAgICAgICAgICB9KSwgYmluZENhbGxiYWNrKHRoaXMsIHRoaXMuY3JlYXRl
RXJyb3JDYWxsYmFjaykpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIHRoaXMuZW52aXJvbm1lbnRbZW50cnkuZnVsbFBhdGhdID0gZW50cnk7Ci0g
ICAgICAgICAgICB0aGlzLmVudmlyb25tZW50W2VudHJ5LmZ1bGxQYXRoICsgJy5zaXplJ10gPSAw
OwotICAgICAgICAgICAgdGhpcy5jcmVhdGVOZXh0RW50cnkoKTsKLSAgICAgICAgfQotCi0gICAg
ICAgIHRoaXMuY3JlYXRlRXJyb3JDYWxsYmFjayA9IGZ1bmN0aW9uKGVycm9yLCBlbnRyeSkKLSAg
ICAgICAgewotICAgICAgICAgICAgdGVzdEZhaWxlZCgnR290IHVuZXhwZWN0ZWQgZXJyb3IgJyAr
IGVycm9yLmNvZGUgKyAnIHdoaWxlIGNyZWF0aW5nICcgKyB0b1N0cmluZyhlbnRyeSkpOwotICAg
ICAgICAgICAgdGhpcy5lcnJvckNhbGxiYWNrKGVycm9yKTsKLSAgICAgICAgfQotCi0gICAgICAg
IHRoaXMuY3JlYXRlTmV4dEVudHJ5ID0gZnVuY3Rpb24oKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBpZiAodGhpcy5jdXJyZW50ID49IHRoaXMuZW50cmllcy5sZW5ndGgpIHsKLSAgICAgICAgICAg
ICAgICB0aGlzLnN1Y2Nlc3NDYWxsYmFjayh0aGlzLmVudmlyb25tZW50KTsKLSAgICAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB2YXIgZW50cnkgPSB0aGlz
LmVudHJpZXNbdGhpcy5jdXJyZW50KytdOwotICAgICAgICAgICAgaWYgKGVudHJ5LmlzRGlyZWN0
b3J5KQotICAgICAgICAgICAgICAgIGZpbGVTeXN0ZW0ucm9vdC5nZXREaXJlY3RvcnkoZW50cnku
ZnVsbFBhdGgsIHtjcmVhdGU6dHJ1ZX0sIGJpbmRDYWxsYmFjayh0aGlzLCB0aGlzLmNyZWF0ZVN1
Y2Nlc3NDYWxsYmFjayksIGJpbmRDYWxsYmFjayh0aGlzLCB0aGlzLmNyZWF0ZUVycm9yQ2FsbGJh
Y2spKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBmaWxlU3lzdGVtLnJvb3Qu
Z2V0RmlsZShlbnRyeS5mdWxsUGF0aCwge2NyZWF0ZTp0cnVlfSwgYmluZENhbGxiYWNrKHRoaXMs
IHRoaXMuY3JlYXRlU3VjY2Vzc0NhbGxiYWNrLCBlbnRyeS5zaXplKSwgYmluZENhbGxiYWNrKHRo
aXMsIHRoaXMuY3JlYXRlRXJyb3JDYWxsYmFjaykpOwotICAgICAgICB9OwotICAgIH07Ci0KLSAg
ICBpZiAoIWVudHJpZXMgfHwgIWVudHJpZXMubGVuZ3RoKSB7Ci0gICAgICAgIHN1Y2Nlc3NDYWxs
YmFjayh7fSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgdmFyIGhlbHBlciA9IG5ldyBI
ZWxwZXIoZmlsZVN5c3RlbSwgZW50cmllcywgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNr
KTsKLSAgICBoZWxwZXIuY3JlYXRlTmV4dEVudHJ5KCk7Ci19Ci0KLWZ1bmN0aW9uIHZlcmlmeVRl
c3RFbnZpcm9ubWVudChmaWxlU3lzdGVtLCBlbnRyaWVzLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9y
Q2FsbGJhY2spCi17Ci0gICAgdmFyIEhlbHBlciA9IGZ1bmN0aW9uKGZpbGVTeXN0ZW0sIGVudHJp
ZXMsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykKLSAgICB7Ci0gICAgICAgIHRoaXMu
ZmlsZVN5c3RlbSA9IGZpbGVTeXN0ZW07Ci0gICAgICAgIHRoaXMuZW50cmllcyA9IGVudHJpZXM7
Ci0gICAgICAgIHRoaXMuY3VycmVudCA9IDA7Ci0gICAgICAgIHRoaXMuc3VjY2Vzc0NhbGxiYWNr
ID0gc3VjY2Vzc0NhbGxiYWNrOwotICAgICAgICB0aGlzLmVycm9yQ2FsbGJhY2sgPSBlcnJvckNh
bGxiYWNrOwotICAgICAgICB0aGlzLmV4cGVjdGVkTm9uZXhpc3RlbnQgPSBmYWxzZTsKLQotICAg
ICAgICB0aGlzLnZlcmlmeVN1Y2Nlc3NDYWxsYmFjayA9IGZ1bmN0aW9uKGVudHJ5KQotICAgICAg
ICB7Ci0gICAgICAgICAgICBpZiAodGhpcy5leHBlY3RlZE5vbmV4aXN0ZW50KSB7Ci0gICAgICAg
ICAgICAgICAgdGVzdEZhaWxlZCgnRm91bmQgdW5leHBlY3RlZCBlbnRyeSAnICsgZW50cnkuZnVs
bFBhdGgpOwotICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JDYWxsYmFjaygpOwotICAgICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRlc3RQYXNzZWQoJ1Zl
cmlmaWVkIGVudHJ5OiAnICsgdG9TdHJpbmcoZW50cnkpKTsKLSAgICAgICAgICAgIHRoaXMudmVy
aWZ5TmV4dEVudHJ5KCk7Ci0gICAgICAgIH0KLQotICAgICAgICB0aGlzLnZlcmlmeUVycm9yQ2Fs
bGJhY2sgPSBmdW5jdGlvbihlcnJvciwgZW50cnkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlm
ICh0aGlzLmV4cGVjdGVkTm9uZXhpc3RlbnQpIHsKLSAgICAgICAgICAgICAgICB0ZXN0UGFzc2Vk
KCdWZXJpZmllZCBlbnRyeSBkb2VzIE5PVCBleGlzdDogJyArIGVudHJ5LmZ1bGxQYXRoKTsKLSAg
ICAgICAgICAgICAgICB0aGlzLnZlcmlmeU5leHRFbnRyeSgpOwotICAgICAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChlcnJvciA9PSBGaWxlRXJyb3Iu
Tk9UX0ZPVU5EX0VSUikKLSAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCdOb3QgZm91bmQ6ICcg
KyBlbnRyeS5mdWxsUGF0aCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgdGVz
dEZhaWxlZCgnR290IHVuZXhwZWN0ZWQgZXJyb3IgJyArIGVycm9yLmNvZGUgKyAnIGZvciAnICsg
ZW50cnkuZnVsbFBhdGgpOwotICAgICAgICAgICAgdGhpcy5lcnJvckNhbGxiYWNrKGVycm9yKTsK
LSAgICAgICAgfQotCi0gICAgICAgIHRoaXMudmVyaWZ5TmV4dEVudHJ5ID0gZnVuY3Rpb24oKQot
ICAgICAgICB7Ci0gICAgICAgICAgICBpZiAodGhpcy5jdXJyZW50ID49IHRoaXMuZW50cmllcy5s
ZW5ndGgpIHsKLSAgICAgICAgICAgICAgICB0aGlzLnN1Y2Nlc3NDYWxsYmFjaygpOwotICAgICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHZhciBlbnRyeSA9
IHRoaXMuZW50cmllc1t0aGlzLmN1cnJlbnQrK107Ci0gICAgICAgICAgICB0aGlzLmV4cGVjdGVk
Tm9uZXhpc3RlbnQgPSBlbnRyeS5ub25leGlzdGVudDsKLSAgICAgICAgICAgIGlmIChlbnRyeS5p
c0RpcmVjdG9yeSkKLSAgICAgICAgICAgICAgICBmaWxlU3lzdGVtLnJvb3QuZ2V0RGlyZWN0b3J5
KGVudHJ5LmZ1bGxQYXRoLCB7fSwgYmluZENhbGxiYWNrKHRoaXMsIHRoaXMudmVyaWZ5U3VjY2Vz
c0NhbGxiYWNrKSwgYmluZENhbGxiYWNrKHRoaXMsIHRoaXMudmVyaWZ5RXJyb3JDYWxsYmFjaywg
ZW50cnkpKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBmaWxlU3lzdGVtLnJv
b3QuZ2V0RmlsZShlbnRyeS5mdWxsUGF0aCwge30sIGJpbmRDYWxsYmFjayh0aGlzLCB0aGlzLnZl
cmlmeVN1Y2Nlc3NDYWxsYmFjayksIGJpbmRDYWxsYmFjayh0aGlzLCB0aGlzLnZlcmlmeUVycm9y
Q2FsbGJhY2ssIGVudHJ5KSk7Ci0gICAgICAgIH07Ci0gICAgfTsKLQotICAgIGlmICghZW50cmll
cyB8fCAhZW50cmllcy5sZW5ndGgpIHsKLSAgICAgICAgc3VjY2Vzc0NhbGxiYWNrKCk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0gICAgdmFyIGhlbHBlciA9IG5ldyBIZWxwZXIoZmlsZVN5c3Rl
bSwgZW50cmllcywgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsKLSAgICBoZWxwZXIu
dmVyaWZ5TmV4dEVudHJ5KCk7Ci19Ci0KLS8vIHRlc3RDYXNlIG11c3QgaGF2ZSBwcmVjb25kaXRp
b24sIHBvc3Rjb25kaXRpb24gYW5kIHRlc3QgZnVuY3Rpb24gZmllbGQuCi0vLyAoU2VlIHJlc291
cmNlcy9vcC0qLmpzIGZvciBleGFtcGxlcy4pCi1mdW5jdGlvbiBydW5PcGVyYXRpb25UZXN0KGZp
bGVTeXN0ZW0sIHRlc3RDYXNlLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spCi17Ci0g
ICAgdmFyIE9wZXJhdGlvblRlc3RIZWxwZXIgPSBmdW5jdGlvbihmaWxlU3lzdGVtLCB0ZXN0Q2Fz
ZSwgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKQotICAgIHsKLSAgICAgICAgdGhpcy5m
aWxlU3lzdGVtID0gZmlsZVN5c3RlbTsKLSAgICAgICAgdGhpcy50ZXN0Q2FzZSA9IHRlc3RDYXNl
OwotICAgICAgICB0aGlzLnN1Y2Nlc3NDYWxsYmFjayA9IHN1Y2Nlc3NDYWxsYmFjazsKLSAgICAg
ICAgdGhpcy5lcnJvckNhbGxiYWNrID0gZXJyb3JDYWxsYmFjazsKLSAgICAgICAgdGhpcy5zdGFn
ZSA9ICcnOwotICAgICAgICB0aGlzLmVudmlyb25tZW50ID0ge307Ci0gICAgICAgIHRoaXMuY3Vy
cmVudFRlc3QgPSAwOwotCi0gICAgICAgIHRoaXMuY3VycmVudFJlYWRlciA9IG51bGw7Ci0gICAg
ICAgIHRoaXMucmVhZEVudHJpZXMgPSBbXTsKLQotICAgICAgICB0aGlzLmdldFN5bWJvbFN0cmlu
ZyA9IGZ1bmN0aW9uKHN5bWJvbCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICd0aGlz
LmVudmlyb25tZW50WyInICsgc3ltYm9sICsgJyJdJzsKLSAgICAgICAgfTsKLQotICAgICAgICB0
aGlzLnRlc3RTdWNjZXNzQ2FsbGJhY2sgPSBmdW5jdGlvbigpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIGlmICghdGhpcy5leHBlY3RlZEVycm9yQ29kZSkgewotICAgICAgICAgICAgICAgIHRlc3RQ
YXNzZWQoJ1N1Y2NlZWRlZDogJyArIHRoaXMuc3RhZ2UpOwotICAgICAgICAgICAgICAgIHRoaXMu
cnVuTmV4dFRlc3QoKTsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHRlc3RG
YWlsZWQoJ1VuZXhwZWN0ZWRseSBzdWNjZWVkZWQgd2hpbGUgJyArIHRoaXMuc3RhZ2UpOwotICAg
ICAgICB9OwotCi0gICAgICAgIHRoaXMuZW50cnkgPSBudWxsOwotICAgICAgICB0aGlzLnRlc3RH
ZXRTdWNjZXNzQ2FsbGJhY2sgPSBmdW5jdGlvbihlbnRyeSkKLSAgICAgICAgewotICAgICAgICAg
ICAgaWYgKCF0aGlzLmV4cGVjdGVkRXJyb3JDb2RlKSB7Ci0gICAgICAgICAgICAgICAgdGVzdFBh
c3NlZCgnU3VjY2VlZGVkOiAnICsgdGhpcy5zdGFnZSk7Ci0gICAgICAgICAgICAgICAgdGhpcy5l
bnRyeSA9IGVudHJ5OwotICAgICAgICAgICAgICAgIHNob3VsZEJlLmFwcGx5KHRoaXMsIFsndGhp
cy5lbnZpcm9ubWVudFt0aGlzLmVudHJ5LmZ1bGxQYXRoXS5mdWxsUGF0aCcsICciJyArIGVudHJ5
LmZ1bGxQYXRoICsgJyInXSk7Ci0gICAgICAgICAgICAgICAgc2hvdWxkQmUuYXBwbHkodGhpcywg
Wyd0aGlzLmVudmlyb25tZW50W3RoaXMuZW50cnkuZnVsbFBhdGhdLmlzRmlsZSArICIiJywgJyIn
ICsgZW50cnkuaXNGaWxlICsgJyInXSk7Ci0gICAgICAgICAgICAgICAgc2hvdWxkQmUuYXBwbHko
dGhpcywgWyd0aGlzLmVudmlyb25tZW50W3RoaXMuZW50cnkuZnVsbFBhdGhdLmlzRGlyZWN0b3J5
ICsgIiInLCAnIicgKyBlbnRyeS5pc0RpcmVjdG9yeSArICciJ10pOwotICAgICAgICAgICAgICAg
IHRoaXMucnVuTmV4dFRlc3QoKTsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAg
IHRlc3RGYWlsZWQoJ1VuZXhwZWN0ZWRseSBzdWNjZWVkZWQgd2hpbGUgJyArIHRoaXMuc3RhZ2Up
OwotICAgICAgICB9OwotCi0gICAgICAgIHRoaXMudGVzdENyZWF0ZVN1Y2Nlc3NDYWxsYmFjayA9
IGZ1bmN0aW9uKGVudHJ5KQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIXRoaXMuZXhwZWN0
ZWRFcnJvckNvZGUpIHsKLSAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCdTdWNjZWVkZWQ6ICcg
KyB0aGlzLnN0YWdlKTsKLSAgICAgICAgICAgICAgICB0aGlzLmVudmlyb25tZW50W2VudHJ5LmZ1
bGxQYXRoXSA9IGVudHJ5OwotICAgICAgICAgICAgICAgIHRoaXMucnVuTmV4dFRlc3QoKTsKLSAg
ICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoJ1VuZXhwZWN0ZWRs
eSBzdWNjZWVkZWQgd2hpbGUgJyArIHRoaXMuc3RhZ2UpOwotICAgICAgICB9OwotCi0gICAgICAg
IHRoaXMudGVzdEdldFBhcmVudFN1Y2Nlc3NDYWxsYmFjayA9IGZ1bmN0aW9uKGVudHJ5KQotICAg
ICAgICB7Ci0gICAgICAgICAgICBpZiAoIXRoaXMuZXhwZWN0ZWRFcnJvckNvZGUpIHsKLSAgICAg
ICAgICAgICAgICB0ZXN0UGFzc2VkKCdTdWNjZWVkZWQ6ICcgKyB0aGlzLnN0YWdlKTsKLSAgICAg
ICAgICAgICAgICBkZWJ1ZygnUGFyZW50IGVudHJ5OiAnICsgdG9TdHJpbmcoZW50cnkpKTsKLSAg
ICAgICAgICAgICAgICB0aGlzLnJ1bk5leHRUZXN0KCk7Ci0gICAgICAgICAgICB9IGVsc2UKLSAg
ICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCdVbmV4cGVjdGVkbHkgc3VjY2VlZGVkIHdoaWxlICcg
KyB0aGlzLnN0YWdlKTsKLSAgICAgICAgfTsKLQotICAgICAgICB0aGlzLnRlc3RSZWFkRW50cmll
c1N1Y2Nlc3NDYWxsYmFjayA9IGZ1bmN0aW9uKGVudHJpZXMpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIGlmICh0aGlzLmV4cGVjdGVkRXJyb3JDb2RlKQotICAgICAgICAgICAgICAgIHRlc3RGYWls
ZWQoJ1VuZXhwZWN0ZWRseSBzdWNjZWVkZWQgd2hpbGUgJyArIHRoaXMuc3RhZ2UpOwotCi0gICAg
ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVudHJpZXMubGVuZ3RoOyArK2kpCi0gICAgICAg
ICAgICAgICAgdGhpcy5yZWFkRW50cmllcy5wdXNoKGVudHJpZXNbaV0pOwotCi0gICAgICAgICAg
ICBpZiAoZW50cmllcy5sZW5ndGgpIHsKLSAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRSZWFk
ZXIucmVhZEVudHJpZXMoYmluZENhbGxiYWNrKHRoaXMsIHRoaXMudGVzdFJlYWRFbnRyaWVzU3Vj
Y2Vzc0NhbGxiYWNrKSwgYmluZENhbGxiYWNrKHRoaXMsIHRoaXMudGVzdEVycm9yQ2FsbGJhY2sp
KTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
IHRlc3RQYXNzZWQoJ1N1Y2NlZWRlZDogJyArIHRoaXMuc3RhZ2UpOwotICAgICAgICAgICAgZGVi
dWcoJ0VudHJpZXM6ICcgKyB0b1N0cmluZyh0aGlzLnJlYWRFbnRyaWVzKSk7Ci0gICAgICAgICAg
ICB0aGlzLnJ1bk5leHRUZXN0KCk7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGhpcy50ZXN0TWV0
YWRhdGFTdWNjZXNzQ2FsbGJhY2sgPSBmdW5jdGlvbihtZXRhZGF0YSwgZW50cnkpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIGlmICghdGhpcy5leHBlY3RlZEVycm9yQ29kZSkgewotICAgICAgICAg
ICAgICAgIHRlc3RQYXNzZWQoJ1N1Y2NlZWRlZDogJyArIHRoaXMuc3RhZ2UpOwotICAgICAgICAg
ICAgICAgIHZhciBzeW1ib2wgPSBlbnRyeSArICcucmV0dXJuZWQubW9kaWZpY2F0aW9uVGltZSc7
Ci0gICAgICAgICAgICAgICAgdGhpcy5lbnZpcm9ubWVudFtzeW1ib2xdID0gbWV0YWRhdGEubW9k
aWZpY2F0aW9uVGltZTsKLSAgICAgICAgICAgICAgICB2YXIgZW50cnlNZXRhZGF0YVN0cmluZyA9
IHRoaXMuZ2V0U3ltYm9sU3RyaW5nKHN5bWJvbCk7Ci0gICAgICAgICAgICAgICAgaWYgKGVudHJ5
ICE9ICcvJykgewotICAgICAgICAgICAgICAgICAgICBzaG91bGRCZUdyZWF0ZXJUaGFuT3JFcXVh
bC5hcHBseSh0aGlzLCBbZW50cnlNZXRhZGF0YVN0cmluZywgJ3RoaXMucm91bmRlZFN0YXJ0RGF0
ZSddKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKG1ldGFkYXRhLnNp
emUpIHsKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5lbnZpcm9ubWVudFtlbnRyeSArICcucmV0
dXJuZWQuc2l6ZSddID0gbWV0YWRhdGEuc2l6ZTsKLSAgICAgICAgICAgICAgICAgICAgdmFyIGVu
dHJ5U2l6ZVN0cmluZyA9IHRoaXMuZ2V0U3ltYm9sU3RyaW5nKGVudHJ5ICsgJy5yZXR1cm5lZC5z
aXplJyk7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBleHBlY3RlZFNpemVTdHJpbmcgPSB0aGlz
LmdldFN5bWJvbFN0cmluZyhlbnRyeSArICcuc2l6ZScpOwotICAgICAgICAgICAgICAgICAgICBz
aG91bGRCZS5hcHBseSh0aGlzLCBbZXhwZWN0ZWRTaXplU3RyaW5nLCBlbnRyeVNpemVTdHJpbmdd
KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgdGhpcy5ydW5OZXh0VGVzdCgp
OwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgnVW5leHBl
Y3RlZGx5IHN1Y2NlZWRlZCB3aGlsZSAnICsgdGhpcy5zdGFnZSk7Ci0gICAgICAgIH07Ci0KLSAg
ICAgICAgdGhpcy50ZXN0RXJyb3JDYWxsYmFjayA9IGZ1bmN0aW9uKGVycm9yKQotICAgICAgICB7
Ci0gICAgICAgICAgICBpZiAodGhpcy5leHBlY3RlZEVycm9yQ29kZSkgewotICAgICAgICAgICAg
ICAgIHNob3VsZEJlLmFwcGx5KHRoaXMsIFsndGhpcy5leHBlY3RlZEVycm9yQ29kZSArICIiJywg
JyInICsgZXJyb3IuY29kZSArICciJ10pOwotICAgICAgICAgICAgICAgIHRoaXMucnVuTmV4dFRl
c3QoKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgn
R290IHVuZXhwZWN0ZWQgZXJyb3IgJyArIGVycm9yLmNvZGUgKyAnIHdoaWxlICcgKyB0aGlzLnN0
YWdlKTsKLSAgICAgICAgICAgICAgICB0aGlzLmVycm9yQ2FsbGJhY2soZXJyb3IpOwotICAgICAg
ICAgICAgfQotICAgICAgICB9OwotCi0gICAgICAgIC8vIE9wZXJhdGlvbnMgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSAgICAgICAgdGhpcy5n
ZXRGaWxlID0gZnVuY3Rpb24oZW50cnksIHBhdGgsIGZsYWdzLCBleHBlY3RlZEVycm9yQ29kZSkK
LSAgICAgICAgewotICAgICAgICAgICAgdGhpcy5leHBlY3RlZEVycm9yQ29kZSA9IGV4cGVjdGVk
RXJyb3JDb2RlOwotICAgICAgICAgICAgdGhpcy5zdGFnZSA9ICciJyArIGVudHJ5ICsgJyIuZ2V0
RmlsZSgiJyArIHBhdGggKyAnIiknOwotICAgICAgICAgICAgdmFyIHN1Y2Nlc3NDYWxsYmFjayA9
IChmbGFncyAmJiBmbGFncy5jcmVhdGUpID8gdGhpcy50ZXN0Q3JlYXRlU3VjY2Vzc0NhbGxiYWNr
IDogdGhpcy50ZXN0R2V0U3VjY2Vzc0NhbGxiYWNrOwotICAgICAgICAgICAgdGhpcy5lbnZpcm9u
bWVudFtlbnRyeV0uZ2V0RmlsZShwYXRoLCBmbGFncywgYmluZENhbGxiYWNrKHRoaXMsIHN1Y2Nl
c3NDYWxsYmFjayksIGJpbmRDYWxsYmFjayh0aGlzLCB0aGlzLnRlc3RFcnJvckNhbGxiYWNrKSk7
Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGhpcy5nZXREaXJlY3RvcnkgPSBmdW5jdGlvbihlbnRy
eSwgcGF0aCwgZmxhZ3MsIGV4cGVjdGVkRXJyb3JDb2RlKQotICAgICAgICB7Ci0gICAgICAgICAg
ICB0aGlzLmV4cGVjdGVkRXJyb3JDb2RlID0gZXhwZWN0ZWRFcnJvckNvZGU7Ci0gICAgICAgICAg
ICB0aGlzLnN0YWdlID0gJyInICsgZW50cnkgKyAnIi5nZXREaXJlY3RvcnkoIicgKyBwYXRoICsg
JyIpJzsKLSAgICAgICAgICAgIHZhciBzdWNjZXNzQ2FsbGJhY2sgPSAoZmxhZ3MgJiYgZmxhZ3Mu
Y3JlYXRlKSA/IHRoaXMudGVzdENyZWF0ZVN1Y2Nlc3NDYWxsYmFjayA6IHRoaXMudGVzdEdldFN1
Y2Nlc3NDYWxsYmFjazsKLSAgICAgICAgICAgIHRoaXMuZW52aXJvbm1lbnRbZW50cnldLmdldERp
cmVjdG9yeShwYXRoLCBmbGFncywgYmluZENhbGxiYWNrKHRoaXMsIHN1Y2Nlc3NDYWxsYmFjayks
IGJpbmRDYWxsYmFjayh0aGlzLCB0aGlzLnRlc3RFcnJvckNhbGxiYWNrKSk7Ci0gICAgICAgIH07
Ci0KLSAgICAgICAgdGhpcy5nZXRQYXJlbnQgPSBmdW5jdGlvbihlbnRyeSwgZXhwZWN0ZWRFcnJv
ckNvZGUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRoaXMuZXhwZWN0ZWRFcnJvckNvZGUgPSBl
eHBlY3RlZEVycm9yQ29kZTsKLSAgICAgICAgICAgIHRoaXMuc3RhZ2UgPSAnIicgKyBlbnRyeSAr
ICciLmdldFBhcmVudCgpJzsKLSAgICAgICAgICAgIHRoaXMuZW52aXJvbm1lbnRbZW50cnldLmdl
dFBhcmVudChiaW5kQ2FsbGJhY2sodGhpcywgdGhpcy50ZXN0R2V0UGFyZW50U3VjY2Vzc0NhbGxi
YWNrKSwgYmluZENhbGxiYWNrKHRoaXMsIHRoaXMudGVzdEVycm9yQ2FsbGJhY2spKTsKLSAgICAg
ICAgfTsKLQotICAgICAgICB0aGlzLmdldE1ldGFkYXRhID0gZnVuY3Rpb24oZW50cnksIGV4cGVj
dGVkRXJyb3JDb2RlKQotICAgICAgICB7Ci0gICAgICAgICAgICB0aGlzLmV4cGVjdGVkRXJyb3JD
b2RlID0gZXhwZWN0ZWRFcnJvckNvZGU7Ci0gICAgICAgICAgICB0aGlzLnN0YWdlID0gJyInICsg
ZW50cnkgKyAnIi5nZXRNZXRhZGF0YSgpJzsKLSAgICAgICAgICAgIHRoaXMuZW52aXJvbm1lbnRb
ZW50cnldLmdldE1ldGFkYXRhKGJpbmRDYWxsYmFjayh0aGlzLCB0aGlzLnRlc3RNZXRhZGF0YVN1
Y2Nlc3NDYWxsYmFjaywgZW50cnkpLCBiaW5kQ2FsbGJhY2sodGhpcywgdGhpcy50ZXN0RXJyb3JD
YWxsYmFjaykpOwotICAgICAgICB9OwotCi0gICAgICAgIHRoaXMucmVtb3ZlID0gZnVuY3Rpb24o
ZW50cnksIGV4cGVjdGVkRXJyb3JDb2RlKQotICAgICAgICB7Ci0gICAgICAgICAgICB0aGlzLmV4
cGVjdGVkRXJyb3JDb2RlID0gZXhwZWN0ZWRFcnJvckNvZGU7Ci0gICAgICAgICAgICB0aGlzLnN0
YWdlID0gJyInICsgZW50cnkgKyAnIi5yZW1vdmUoKSc7Ci0gICAgICAgICAgICB0aGlzLmVudmly
b25tZW50W2VudHJ5XS5yZW1vdmUoYmluZENhbGxiYWNrKHRoaXMsIHRoaXMudGVzdFN1Y2Nlc3ND
YWxsYmFjayksIGJpbmRDYWxsYmFjayh0aGlzLCB0aGlzLnRlc3RFcnJvckNhbGxiYWNrKSk7Ci0g
ICAgICAgIH07Ci0KLSAgICAgICAgdGhpcy5yZW1vdmVSZWN1cnNpdmVseSA9IGZ1bmN0aW9uKGVu
dHJ5LCBleHBlY3RlZEVycm9yQ29kZSkKLSAgICAgICAgewotICAgICAgICAgICAgdGhpcy5leHBl
Y3RlZEVycm9yQ29kZSA9IGV4cGVjdGVkRXJyb3JDb2RlOwotICAgICAgICAgICAgdGhpcy5zdGFn
ZSA9ICciJyArIGVudHJ5ICsgJyIucmVtb3ZlUmVjdXJzaXZlbHkoKSc7Ci0gICAgICAgICAgICB0
aGlzLmVudmlyb25tZW50W2VudHJ5XS5yZW1vdmVSZWN1cnNpdmVseShiaW5kQ2FsbGJhY2sodGhp
cywgdGhpcy50ZXN0U3VjY2Vzc0NhbGxiYWNrKSwgYmluZENhbGxiYWNrKHRoaXMsIHRoaXMudGVz
dEVycm9yQ2FsbGJhY2spKTsKLSAgICAgICAgfTsKLQotICAgICAgICB0aGlzLnJlYWREaXJlY3Rv
cnkgPSBmdW5jdGlvbihlbnRyeSwgZXhwZWN0ZWRFcnJvckNvZGUpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIHRoaXMuZXhwZWN0ZWRFcnJvckNvZGUgPSBleHBlY3RlZEVycm9yQ29kZTsKLSAgICAg
ICAgICAgIHRoaXMucmVhZEVudHJpZXMgPSBbXTsKLSAgICAgICAgICAgIHRoaXMuc3RhZ2UgPSAn
IicgKyBlbnRyeSArICciLmNyZWF0ZVJlYWRlcigpLnJlYWRFbnRyaWVzKCknOwotICAgICAgICAg
ICAgdGhpcy5jdXJyZW50UmVhZGVyID0gdGhpcy5lbnZpcm9ubWVudFtlbnRyeV0uY3JlYXRlUmVh
ZGVyKCk7Ci0gICAgICAgICAgICB0aGlzLmN1cnJlbnRSZWFkZXIucmVhZEVudHJpZXMoYmluZENh
bGxiYWNrKHRoaXMsIHRoaXMudGVzdFJlYWRFbnRyaWVzU3VjY2Vzc0NhbGxiYWNrKSwgYmluZENh
bGxiYWNrKHRoaXMsIHRoaXMudGVzdEVycm9yQ2FsbGJhY2spKTsKLSAgICAgICAgfTsKLQotICAg
ICAgICB0aGlzLmNvcHkgPSBmdW5jdGlvbihlbnRyeSwgZGVzdGluYXRpb25QYXJlbnQsIG5ld05h
bWUsIGV4cGVjdGVkRXJyb3JDb2RlKQotICAgICAgICB7Ci0gICAgICAgICAgICB0aGlzLmV4cGVj
dGVkRXJyb3JDb2RlID0gZXhwZWN0ZWRFcnJvckNvZGU7Ci0gICAgICAgICAgICB0aGlzLnN0YWdl
ID0gJyInICsgZW50cnkgKyAnIi5jb3B5VG8oIicgKyBkZXN0aW5hdGlvblBhcmVudCArICciLCAi
JyArIG5ld05hbWUgKyAnIiknOwotICAgICAgICAgICAgdGhpcy5lbnZpcm9ubWVudFtlbnRyeV0u
Y29weVRvKHRoaXMuZW52aXJvbm1lbnRbZGVzdGluYXRpb25QYXJlbnRdLCBuZXdOYW1lLCBiaW5k
Q2FsbGJhY2sodGhpcywgdGhpcy50ZXN0U3VjY2Vzc0NhbGxiYWNrKSwgYmluZENhbGxiYWNrKHRo
aXMsIHRoaXMudGVzdEVycm9yQ2FsbGJhY2spKTsKLSAgICAgICAgfTsKLQotICAgICAgICB0aGlz
Lm1vdmUgPSBmdW5jdGlvbihlbnRyeSwgZGVzdGluYXRpb25QYXJlbnQsIG5ld05hbWUsIGV4cGVj
dGVkRXJyb3JDb2RlKQotICAgICAgICB7Ci0gICAgICAgICAgICB0aGlzLmV4cGVjdGVkRXJyb3JD
b2RlID0gZXhwZWN0ZWRFcnJvckNvZGU7Ci0gICAgICAgICAgICB0aGlzLnN0YWdlID0gJyInICsg
ZW50cnkgKyAnIi5tb3ZlVG8oIicgKyBkZXN0aW5hdGlvblBhcmVudCArICciLCAiJyArIG5ld05h
bWUgKyAnIiknOwotICAgICAgICAgICAgdGhpcy5lbnZpcm9ubWVudFtlbnRyeV0ubW92ZVRvKHRo
aXMuZW52aXJvbm1lbnRbZGVzdGluYXRpb25QYXJlbnRdLCBuZXdOYW1lLCBiaW5kQ2FsbGJhY2so
dGhpcywgdGhpcy50ZXN0U3VjY2Vzc0NhbGxiYWNrKSwgYmluZENhbGxiYWNrKHRoaXMsIHRoaXMu
dGVzdEVycm9yQ2FsbGJhY2spKTsKLSAgICAgICAgfTsKLQotICAgICAgICB0aGlzLnNob3VsZEJl
ID0gZnVuY3Rpb24oc3ltYm9sMSwgc3ltYm9sMikKLSAgICAgICAgewotICAgICAgICAgICAgc2hv
dWxkQmUuYXBwbHkodGhpcywgW3RoaXMuZ2V0U3ltYm9sU3RyaW5nKHN5bWJvbDEpLCB0aGlzLmdl
dFN5bWJvbFN0cmluZyhzeW1ib2wyKV0pOwotICAgICAgICAgICAgdGhpcy5ydW5OZXh0VGVzdCgp
OwotICAgICAgICB9OwotCi0gICAgICAgIHRoaXMuc2hvdWxkQmVHcmVhdGVyVGhhbk9yRXF1YWwg
PSBmdW5jdGlvbihzeW1ib2wxLCBzeW1ib2wyKQotICAgICAgICB7Ci0gICAgICAgICAgICBzaG91
bGRCZUdyZWF0ZXJUaGFuT3JFcXVhbC5hcHBseSh0aGlzLCBbdGhpcy5nZXRTeW1ib2xTdHJpbmco
c3ltYm9sMSksIHRoaXMuZ2V0U3ltYm9sU3RyaW5nKHN5bWJvbDIpXSk7Ci0gICAgICAgICAgICB0
aGlzLnJ1bk5leHRUZXN0KCk7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAg
ICAgdGhpcy5zdGFydCA9IGZ1bmN0aW9uKCkKLSAgICAgICAgewotICAgICAgICAgICAgdGhpcy5l
eHBlY3RlZEVycm9yQ29kZSA9ICcnOwotICAgICAgICAgICAgdGhpcy5zdGFnZSA9ICdyZXNldHRp
bmcgZmlsZXN5c3RlbSc7Ci0gICAgICAgICAgICAvLyBSZWNvcmQgcm91bmRlZCBzdGFydCBkYXRl
IChjdXJyZW50IHRpbWUgbWludXMgOTk5IG1zZWMpIGhlcmUgZm9yIHRoZSBjb21wYXJpc29uLiBF
bnRyeS5nZXRNZXRhZGF0YSgpIG1heSByZXR1cm4gdGhlIGxhc3QgbW9kIHRpbWUgaW4gc2Vjb25k
cyBhY2N1cmFjeSB3aGlsZSBuZXcgRGF0ZSgpIGlzIG1pbGxpc2Vjb25kcyBhY2N1cmFjeS4KLSAg
ICAgICAgICAgIHRoaXMucm91bmRlZFN0YXJ0RGF0ZSA9IG5ldyBEYXRlKChuZXcgRGF0ZSgpKS5n
ZXRUaW1lKCkgLSA5OTkpOwotICAgICAgICAgICAgcmVtb3ZlQWxsSW5EaXJlY3RvcnkodGhpcy5m
aWxlU3lzdGVtLnJvb3QsIGJpbmRDYWxsYmFjayh0aGlzLCB0aGlzLnNldFVwKSwgYmluZENhbGxi
YWNrKHRoaXMsIHRoaXMudGVzdEVycm9yQ2FsbGJhY2spKTsKLSAgICAgICAgfTsKLQotICAgICAg
ICB0aGlzLnNldFVwID0gZnVuY3Rpb24oKQotICAgICAgICB7Ci0gICAgICAgICAgICB0aGlzLmV4
cGVjdGVkRXJyb3JDb2RlID0gJyc7Ci0gICAgICAgICAgICB0aGlzLnN0YWdlID0gJ3NldHRpbmcg
dXAgdGVzdCBwcmVjb25kaXRpb24nOwotICAgICAgICAgICAgY3JlYXRlVGVzdEVudmlyb25tZW50
KHRoaXMuZmlsZVN5c3RlbSwgdGhpcy50ZXN0Q2FzZS5wcmVjb25kaXRpb24sIGJpbmRDYWxsYmFj
ayh0aGlzLCB0aGlzLnJ1blRlc3RzKSwgYmluZENhbGxiYWNrKHRoaXMsIHRoaXMudGVzdEVycm9y
Q2FsbGJhY2spKTsKLSAgICAgICAgfTsKLQotICAgICAgICB0aGlzLnJ1bk5leHRUZXN0ID0gZnVu
Y3Rpb24oKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAodGhpcy5jdXJyZW50VGVzdCA+PSB0
aGlzLnRlc3RDYXNlLnRlc3RzLmxlbmd0aCkgewotICAgICAgICAgICAgICAgIHRoaXMudmVyaWZ5
KCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
dGhpcy50ZXN0Q2FzZS50ZXN0c1t0aGlzLmN1cnJlbnRUZXN0KytdKHRoaXMpOwotICAgICAgICB9
OwotCi0gICAgICAgIHRoaXMucnVuVGVzdHMgPSBmdW5jdGlvbihlbnZpcm9ubWVudCkKLSAgICAg
ICAgewotICAgICAgICAgICAgdGhpcy5lbnZpcm9ubWVudCA9IGVudmlyb25tZW50OwotICAgICAg
ICAgICAgdGhpcy5lbnZpcm9ubWVudFsnLyddID0gdGhpcy5maWxlU3lzdGVtLnJvb3Q7Ci0gICAg
ICAgICAgICB0aGlzLmN1cnJlbnRUZXN0ID0gMDsKLSAgICAgICAgICAgIHRoaXMucnVuTmV4dFRl
c3QoKTsKLSAgICAgICAgfTsKLQotICAgICAgICB0aGlzLnZlcmlmeSA9IGZ1bmN0aW9uKCkKLSAg
ICAgICAgewotICAgICAgICAgICAgdGhpcy5leHBlY3RlZEVycm9yQ29kZSA9ICcnOwotICAgICAg
ICAgICAgaWYgKCF0aGlzLnRlc3RDYXNlLnBvc3Rjb25kaXRpb24pIHsKLSAgICAgICAgICAgICAg
ICB0aGlzLnN1Y2Nlc3NDYWxsYmFjaygpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIHRoaXMuc3RhZ2UgPSAndmVyaWZ5aW5nIHRlc3QgcG9zdGNv
bmRpdGlvbic7Ci0gICAgICAgICAgICB2ZXJpZnlUZXN0RW52aXJvbm1lbnQodGhpcy5maWxlU3lz
dGVtLCB0aGlzLnRlc3RDYXNlLnBvc3Rjb25kaXRpb24sIHRoaXMuc3VjY2Vzc0NhbGxiYWNrLCBi
aW5kQ2FsbGJhY2sodGhpcywgdGhpcy50ZXN0RXJyb3JDYWxsYmFjaykpOwotICAgICAgICB9Owot
ICAgIH07Ci0KLSAgICB2YXIgaGVscGVyID0gbmV3IE9wZXJhdGlvblRlc3RIZWxwZXIoZmlsZVN5
c3RlbSwgdGVzdENhc2UsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjayk7Ci0gICAgaGVs
cGVyLnN0YXJ0KCk7Ci19Ci0KLXZhciBjdXJyZW50VGVzdCA9IDA7Ci12YXIgZmlsZVN5c3RlbSA9
IG51bGw7Ci1mdW5jdGlvbiBydW5OZXh0VGVzdCgpIHsKLSAgICBpZiAoY3VycmVudFRlc3QgPj0g
dGVzdENhc2VzLmxlbmd0aCkgewotICAgICAgICBkZWJ1ZygnRmluaXNoZWQgcnVubmluZyB0ZXN0
cy4nKTsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICB2YXIgdGVzdENhc2UgPSB0ZXN0Q2FzZXNbY3VycmVudFRlc3QrK107Ci0gICAgZGVidWco
JyogUnVubmluZzogJyArIHRlc3RDYXNlLm5hbWUpOwotICAgIHJ1bk9wZXJhdGlvblRlc3QoZmls
ZVN5c3RlbSwgdGVzdENhc2UsIHJ1bk5leHRUZXN0LCBlcnJvckNhbGxiYWNrKTsKLX0KLQotZnVu
Y3Rpb24gZXJyb3JDYWxsYmFjayhlcnJvcikgewotICAgIGlmIChlcnJvciAmJiBlcnJvci5jb2Rl
KQotICAgICAgICB0ZXN0RmFpbGVkKCdHb3QgZXJyb3IgJyArIGVycm9yLmNvZGUpOwotICAgIGZp
bmlzaEpTVGVzdCgpOwotfQotCi1mdW5jdGlvbiBmaWxlU3lzdGVtQ2FsbGJhY2soZnMpCi17Ci0g
ICAgZmlsZVN5c3RlbSA9IGZzOwotICAgIHJ1bk5leHRUZXN0KCk7Ci19Ci0KLXZhciBqc1Rlc3RJ
c0FzeW5jID0gdHJ1ZTsKLXdlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKFRFTVBPUkFSWSwgMTAwLCBm
aWxlU3lzdGVtQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spOwpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9maWxlc3lzdGVtL3Jlc291cmNlcy9zaGFyZWQtd29ya2VyLXN0dWIuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9zaGFyZWQtd29ya2VyLXN0
dWIuanMJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9y
ZXNvdXJjZXMvc2hhcmVkLXdvcmtlci1zdHViLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzAs
MCBAQAotLy8gV2UgZG9uJ3Qgc3RhcnQganMtdGVzdC1wcmUuanMgZGlyZWN0bHkgYXMgdGhlIHdv
cmtlciBzY3JpcHQgYmVjYXVzZSBpdCBzY3Jld3MKLS8vIHVwIHRoZSBiYXNlIG9mIGFsbCByZWxh
dGl2ZSBwYXRocyBwYXNzZWQgdG8gaW1wb3J0U2NyaXB0cy4KLWltcG9ydFNjcmlwdHMoJy4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9m
aWxlc3lzdGVtL3Jlc291cmNlcy9zaW1wbGUtcGVyc2lzdGVudC1zeW5jLmpzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvc2ltcGxlLXBlcnNpc3Rl
bnQtc3luYy5qcwkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lz
dGVtL3Jlc291cmNlcy9zaW1wbGUtcGVyc2lzdGVudC1zeW5jLmpzCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDE0ICswLDAgQEAKLWlmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKLSAgICBpbXBvcnRTY3Jp
cHRzKCcuLi9yZXNvdXJjZXMvZnMtd29ya2VyLWNvbW1vbi5qcycpOwotICAgIGltcG9ydFNjcmlw
dHMoJy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOwotICAgIGltcG9ydFNjcmlw
dHMoJy4uL3Jlc291cmNlcy9mcy10ZXN0LXV0aWwuanMnKTsKLX0KLQotZGVzY3JpcHRpb24oIndl
YmtpdFJlcXVlc3RGaWxlU3lzdGVtU3luYyBQRVJTSVNURU5UIHRlc3QuIik7Ci0KLXZhciBmaWxl
U3lzdGVtID0gd2Via2l0UmVxdWVzdEZpbGVTeXN0ZW1TeW5jKFBFUlNJU1RFTlQsIDEwMCk7Ci0K
LWRlYnVnKCJTdWNjZXNzZnVsbHkgb2J0YWluZWQgUEVSU0lTVEVOVCBGaWxlU3lzdGVtOiIgKyBm
aWxlU3lzdGVtLm5hbWUpOwotc2hvdWxkQmVUcnVlKCJmaWxlU3lzdGVtLm5hbWUubGVuZ3RoID4g
MCIpOwotc2hvdWxkQmUoImZpbGVTeXN0ZW0ucm9vdC5mdWxsUGF0aCIsICciLyInKTsKLWZpbmlz
aEpTVGVzdCgpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9z
aW1wbGUtcGVyc2lzdGVudC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVz
eXN0ZW0vcmVzb3VyY2VzL3NpbXBsZS1wZXJzaXN0ZW50LmpzCShyZXZpc2lvbiAxNTY2OTEpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL3NpbXBsZS1wZXJzaXN0ZW50
LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDI1ICswLDAgQEAKLWlmICh0aGlzLmltcG9ydFNjcmlw
dHMpIHsKLSAgICBpbXBvcnRTY3JpcHRzKCcuLi9yZXNvdXJjZXMvZnMtd29ya2VyLWNvbW1vbi5q
cycpOwotICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cycpOwotICAgIGltcG9ydFNjcmlwdHMoJy4uL3Jlc291cmNlcy9mcy10ZXN0LXV0aWwuanMnKTsK
LX0KLQotZGVzY3JpcHRpb24oInJlcXVlc3RGaWxlU3lzdGVtIFBFUlNJU1RFTlQgdGVzdC4iKTsK
LQotdmFyIGZpbGVTeXN0ZW0gPSBudWxsOwotCi1mdW5jdGlvbiBlcnJvckNhbGxiYWNrKGVycm9y
KSB7Ci0gICAgZGVidWcoIkVycm9yIG9jY3VyZWQgd2hpbGUgcmVxdWVzdGluZyBhIFBFUlNJU1RF
TlQgZmlsZSBzeXN0ZW06IiArIGVycm9yLmNvZGUpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQot
Ci1mdW5jdGlvbiBzdWNjZXNzQ2FsbGJhY2soZnMpIHsKLSAgICBmaWxlU3lzdGVtID0gZnM7Ci0g
ICAgZGVidWcoIlN1Y2Nlc3NmdWxseSBvYnRhaW5lZCBQRVJTSVNURU5UIEZpbGVTeXN0ZW06IiAr
IGZpbGVTeXN0ZW0ubmFtZSk7Ci0gICAgc2hvdWxkQmVUcnVlKCJmaWxlU3lzdGVtLm5hbWUubGVu
Z3RoID4gMCIpOwotICAgIHNob3VsZEJlKCJmaWxlU3lzdGVtLnJvb3QuZnVsbFBhdGgiLCAnIi8i
Jyk7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLXZhciBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsK
LXdlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKFBFUlNJU1RFTlQsIDEwMCwgc3VjY2Vzc0NhbGxiYWNr
LCBlcnJvckNhbGxiYWNrKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNv
dXJjZXMvc2ltcGxlLXJlYWRvbmx5LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
ZmlsZXN5c3RlbS9yZXNvdXJjZXMvc2ltcGxlLXJlYWRvbmx5LmpzCShyZXZpc2lvbiAxNTY2OTEp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL3NpbXBsZS1yZWFkb25s
eS5qcwkod29ya2luZyBjb3B5KQpAQCAtMSw0OSArMCwwIEBACi1pZiAodGhpcy5pbXBvcnRTY3Jp
cHRzKSB7Ci0gICAgaW1wb3J0U2NyaXB0cygnLi4vcmVzb3VyY2VzL2ZzLXdvcmtlci1jb21tb24u
anMnKTsKLSAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMnKTsKLSAgICBpbXBvcnRTY3JpcHRzKCcuLi9yZXNvdXJjZXMvZnMtdGVzdC11dGlsLmpzJyk7
Ci19Ci0KLWRlc2NyaXB0aW9uKCJGaWxlU3lzdGVtIEFQSSByZWFkb25seSBhdHRyaWJ1dGVzIHRl
c3QuIik7Ci0KLXZhciBmaWxlU3lzdGVtOwotdmFyIGZpbGVFbnRyeTsKLXZhciBmaWxlTWV0YWRh
dGE7Ci0KLWZ1bmN0aW9uIHNldFJlYWRvbmx5UHJvcGVydHkocHJvcGVydHksIHZhbHVlKQotewot
ICAgIG9sZFZhbHVlID0gZXZhbChwcm9wZXJ0eSk7Ci0gICAgZGVidWcoInRyeWluZyB0byBzZXQg
cmVhZG9ubHkgcHJvcGVydHkgIiArIHByb3BlcnR5KTsKLSAgICBldmFsQW5kTG9nKHByb3BlcnR5
ICsgIiA9ICIgKyB2YWx1ZSk7Ci0gICAgbmV3VmFsdWUgPSBldmFsKHByb3BlcnR5KTsKLSAgICBp
ZiAob2xkVmFsdWUgPT0gbmV3VmFsdWUpIHsKLSAgICAgICAgdGVzdFBhc3NlZChwcm9wZXJ0eSAr
ICIgaXMgc3RpbGwgIiArIG9sZFZhbHVlKTsKLSAgICB9IGVsc2UgewotICAgICAgICB0ZXN0RmFp
bGVkKHByb3BlcnR5ICsgIiB2YWx1ZSB3YXMgY2hhbmdlZCIpOwotICAgIH0KLX0KLQotZnVuY3Rp
b24gZXJyb3JDYWxsYmFjayhlcnIpIHsKLSAgdGVzdEZhaWxlZChlcnIpOwotICBmaW5pc2hKU1Rl
c3QoKTsKLX0KLQotZnVuY3Rpb24gZ2V0RmlsZUNhbGxiYWNrKGVudHJ5KSB7Ci0gIGZpbGVFbnRy
eSA9IGVudHJ5OwotICBzZXRSZWFkb25seVByb3BlcnR5KCJmaWxlRW50cnkuaXNGaWxlIiwgImZh
bHNlIik7Ci0gIHNldFJlYWRvbmx5UHJvcGVydHkoImZpbGVFbnRyeS5pc0RpcmVjdG9yeSIsICJ0
cnVlIik7Ci0gIHNldFJlYWRvbmx5UHJvcGVydHkoImZpbGVFbnRyeS5uYW1lIiwgIidiYXInIik7
Ci0gIHNldFJlYWRvbmx5UHJvcGVydHkoImZpbGVFbnRyeS5mdWxsUGF0aCIsICInYmFyJyIpOwot
ICBzZXRSZWFkb25seVByb3BlcnR5KCJmaWxlRW50cnkuZmlsZXN5c3RlbSIsICJudWxsIik7Ci0g
IGZpbmlzaEpTVGVzdCgpOwotfQotCi1mdW5jdGlvbiBzdWNjZXNzQ2FsbGJhY2soZnMpIHsKLSAg
ZmlsZVN5c3RlbSA9IGZzOwotICBzZXRSZWFkb25seVByb3BlcnR5KCJmaWxlU3lzdGVtLm5hbWUi
LCAiJ2JhciciKTsKLSAgcm9vdCA9IGV2YWxBbmRMb2coInJvb3QgPSBmaWxlU3lzdGVtLnJvb3Qi
KTsKLSAgZXZhbEFuZExvZygicm9vdC5nZXRGaWxlKCdmb28nLCB7Y3JlYXRlOnRydWV9LCBnZXRG
aWxlQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spIik7Ci19Ci0KLXZhciBqc1Rlc3RJc0FzeW5jID0g
dHJ1ZTsKLWV2YWxBbmRMb2coIndlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKFRFTVBPUkFSWSwgMTAw
LCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spIik7CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL3NpbXBsZS1yZXF1aXJlZC1hcmd1bWVudHMtZ2V0ZGly
ZWN0b3J5LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNv
dXJjZXMvc2ltcGxlLXJlcXVpcmVkLWFyZ3VtZW50cy1nZXRkaXJlY3RvcnkuanMJKHJldmlzaW9u
IDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvc2ltcGxl
LXJlcXVpcmVkLWFyZ3VtZW50cy1nZXRkaXJlY3RvcnkuanMJKHdvcmtpbmcgY29weSkKQEAgLTEs
MjYgKzAsMCBAQAotaWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgewotICAgIGltcG9ydFNjcmlwdHMo
Jy4uL3Jlc291cmNlcy9mcy13b3JrZXItY29tbW9uLmpzJyk7Ci0gICAgaW1wb3J0U2NyaXB0cygn
Li4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7Ci0gICAgaW1wb3J0U2NyaXB0cygn
Li4vcmVzb3VyY2VzL2ZzLXRlc3QtdXRpbC5qcycpOwotfQotCi1kZXNjcmlwdGlvbigiRGlyZWN0
b3J5RW50cnkgcmVxdWlyZWQgYXJndW1lbnRzIHRlc3QuIik7Ci0KLXZhciBmaWxlU3lzdGVtID0g
bnVsbDsKLQotZnVuY3Rpb24gZXJyb3JDYWxsYmFjayhlcnJvcikgewotICAgIGRlYnVnKCJFcnJv
ciBvY2N1cmVkIHdoaWxlIHJlcXVlc3RpbmcgYSBURU1QT1JBUlkgZmlsZSBzeXN0ZW06IiArIGVy
cm9yLmNvZGUpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi1mdW5jdGlvbiBzdWNjZXNzQ2Fs
bGJhY2soZnMpIHsKLSAgICBmaWxlU3lzdGVtID0gZnM7Ci0gICAgZGVidWcoIlN1Y2Nlc3NmdWxs
eSBvYnRhaW5lZCBURU1QT1JBUlkgRmlsZVN5c3RlbToiICsgZmlsZVN5c3RlbS5uYW1lKTsKLSAg
ICByb290ID0gZXZhbEFuZExvZygicm9vdCA9IGZpbGVTeXN0ZW0ucm9vdCIpOwotICAgIHNob3Vs
ZFRocm93KCJyb290LmdldERpcmVjdG9yeSgpIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0K
LXZhciBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLWV2YWxBbmRMb2coIndlYmtpdFJlcXVlc3RGaWxl
U3lzdGVtKFRFTVBPUkFSWSwgMTAwLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spOyIp
OwotdmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL3NpbXBsZS1yZXF1aXJlZC1hcmd1bWVudHMtZ2V0ZmlsZS5q
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL3Np
bXBsZS1yZXF1aXJlZC1hcmd1bWVudHMtZ2V0ZmlsZS5qcwkocmV2aXNpb24gMTU2NjkxKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9zaW1wbGUtcmVxdWlyZWQtYXJn
dW1lbnRzLWdldGZpbGUuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsMjYgKzAsMCBAQAotaWYgKHRo
aXMuaW1wb3J0U2NyaXB0cykgewotICAgIGltcG9ydFNjcmlwdHMoJy4uL3Jlc291cmNlcy9mcy13
b3JrZXItY29tbW9uLmpzJyk7Ci0gICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzJyk7Ci0gICAgaW1wb3J0U2NyaXB0cygnLi4vcmVzb3VyY2VzL2ZzLXRl
c3QtdXRpbC5qcycpOwotfQotCi1kZXNjcmlwdGlvbigiRGlyZWN0b3J5RW50cnkgcmVxdWlyZWQg
YXJndW1lbnRzIHRlc3QuIik7Ci0KLXZhciBmaWxlU3lzdGVtID0gbnVsbDsKLQotZnVuY3Rpb24g
ZXJyb3JDYWxsYmFjayhlcnJvcikgewotICAgIGRlYnVnKCJFcnJvciBvY2N1cmVkIHdoaWxlIHJl
cXVlc3RpbmcgYSBURU1QT1JBUlkgZmlsZSBzeXN0ZW06IiArIGVycm9yLmNvZGUpOwotICAgIGZp
bmlzaEpTVGVzdCgpOwotfQotCi1mdW5jdGlvbiBzdWNjZXNzQ2FsbGJhY2soZnMpIHsKLSAgICBm
aWxlU3lzdGVtID0gZnM7Ci0gICAgZGVidWcoIlN1Y2Nlc3NmdWxseSBvYnRhaW5lZCBURU1QT1JB
UlkgRmlsZVN5c3RlbToiICsgZmlsZVN5c3RlbS5uYW1lKTsKLSAgICByb290ID0gZXZhbEFuZExv
Zygicm9vdCA9IGZpbGVTeXN0ZW0ucm9vdCIpOwotICAgIHNob3VsZFRocm93KCJyb290LmdldEZp
bGUoKSIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi12YXIganNUZXN0SXNBc3luYyA9IHRy
dWU7Ci1ldmFsQW5kTG9nKCJ3ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbShURU1QT1JBUlksIDEwMCwg
c3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsiKTsKLXZhciBzdWNjZXNzZnVsbHlQYXJz
ZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9z
aW1wbGUtcmVxdWlyZWQtYXJndW1lbnRzLWdldG1ldGFkYXRhLmpzCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvc2ltcGxlLXJlcXVpcmVkLWFyZ3Vt
ZW50cy1nZXRtZXRhZGF0YS5qcwkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9maWxlc3lzdGVtL3Jlc291cmNlcy9zaW1wbGUtcmVxdWlyZWQtYXJndW1lbnRzLWdldG1ldGFk
YXRhLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDI2ICswLDAgQEAKLWlmICh0aGlzLmltcG9ydFNj
cmlwdHMpIHsKLSAgICBpbXBvcnRTY3JpcHRzKCcuLi9yZXNvdXJjZXMvZnMtd29ya2VyLWNvbW1v
bi5qcycpOwotICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcycpOwotICAgIGltcG9ydFNjcmlwdHMoJy4uL3Jlc291cmNlcy9mcy10ZXN0LXV0aWwuanMn
KTsKLX0KLQotZGVzY3JpcHRpb24oIkRpcmVjdG9yeUVudHJ5LmdldE1ldGFkYXRhIHJlcXVpcmVk
IGFyZ3VtZW50cyB0ZXN0LiIpOwotCi12YXIgZmlsZVN5c3RlbSA9IG51bGw7Ci0KLWZ1bmN0aW9u
IGVycm9yQ2FsbGJhY2soZXJyb3IpIHsKLSAgICBkZWJ1ZygiRXJyb3Igb2NjdXJlZCB3aGlsZSBy
ZXF1ZXN0aW5nIGEgVEVNUE9SQVJZIGZpbGUgc3lzdGVtOiIgKyBlcnJvci5jb2RlKTsKLSAgICBm
aW5pc2hKU1Rlc3QoKTsKLX0KLQotZnVuY3Rpb24gc3VjY2Vzc0NhbGxiYWNrKGZzKSB7Ci0gICAg
ZmlsZVN5c3RlbSA9IGZzOwotICAgIGRlYnVnKCJTdWNjZXNzZnVsbHkgb2J0YWluZWQgVEVNUE9S
QVJZIEZpbGVTeXN0ZW06IiArIGZpbGVTeXN0ZW0ubmFtZSk7Ci0gICAgcm9vdCA9IGV2YWxBbmRM
b2coInJvb3QgPSBmaWxlU3lzdGVtLnJvb3QiKTsKLSAgICBzaG91bGRUaHJvdygicm9vdC5nZXRN
ZXRhZGF0YSgpIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLXZhciBqc1Rlc3RJc0FzeW5j
ID0gdHJ1ZTsKLWV2YWxBbmRMb2coIndlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKFRFTVBPUkFSWSwg
MTAwLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spOyIpOwotdmFyIHN1Y2Nlc3NmdWxs
eVBhcnNlZCA9IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3Vy
Y2VzL3NpbXBsZS1yZXF1aXJlZC1hcmd1bWVudHMtcmVtb3ZlLmpzCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvc2ltcGxlLXJlcXVpcmVkLWFyZ3Vt
ZW50cy1yZW1vdmUuanMJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmls
ZXN5c3RlbS9yZXNvdXJjZXMvc2ltcGxlLXJlcXVpcmVkLWFyZ3VtZW50cy1yZW1vdmUuanMJKHdv
cmtpbmcgY29weSkKQEAgLTEsMjYgKzAsMCBAQAotaWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgewot
ICAgIGltcG9ydFNjcmlwdHMoJy4uL3Jlc291cmNlcy9mcy13b3JrZXItY29tbW9uLmpzJyk7Ci0g
ICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7Ci0g
ICAgaW1wb3J0U2NyaXB0cygnLi4vcmVzb3VyY2VzL2ZzLXRlc3QtdXRpbC5qcycpOwotfQotCi1k
ZXNjcmlwdGlvbigiRW50cnkucmVtb3ZlKCkgcmVxdWlyZWQgYXJndW1lbnRzIHRlc3QuIik7Ci0K
LXZhciBmaWxlU3lzdGVtID0gbnVsbDsKLQotZnVuY3Rpb24gZXJyb3JDYWxsYmFjayhlcnJvcikg
ewotICAgIGRlYnVnKCJFcnJvciBvY2N1cmVkIHdoaWxlIHJlcXVlc3RpbmcgYSBURU1QT1JBUlkg
ZmlsZSBzeXN0ZW06IiArIGVycm9yLmNvZGUpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi1m
dW5jdGlvbiBzdWNjZXNzQ2FsbGJhY2soZnMpIHsKLSAgICBmaWxlU3lzdGVtID0gZnM7Ci0gICAg
ZGVidWcoIlN1Y2Nlc3NmdWxseSBvYnRhaW5lZCBURU1QT1JBUlkgRmlsZVN5c3RlbToiICsgZmls
ZVN5c3RlbS5uYW1lKTsKLSAgICByb290ID0gZXZhbEFuZExvZygicm9vdCA9IGZpbGVTeXN0ZW0u
cm9vdCIpOwotICAgIHNob3VsZFRocm93KCJyb290LnJlbW92ZSgpIik7Ci0gICAgZmluaXNoSlNU
ZXN0KCk7Ci19Ci0KLXZhciBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLWV2YWxBbmRMb2coIndlYmtp
dFJlcXVlc3RGaWxlU3lzdGVtKFRFTVBPUkFSWSwgMTAwLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9y
Q2FsbGJhY2spOyIpOwotdmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL3NpbXBsZS10ZW1wb3Jhcnktc3luYy5q
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL3Np
bXBsZS10ZW1wb3Jhcnktc3luYy5qcwkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9zaW1wbGUtdGVtcG9yYXJ5LXN5bmMuanMJKHdvcmtp
bmcgY29weSkKQEAgLTEsMTQgKzAsMCBAQAotaWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgewotICAg
IGltcG9ydFNjcmlwdHMoJy4uL3Jlc291cmNlcy9mcy13b3JrZXItY29tbW9uLmpzJyk7Ci0gICAg
aW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7Ci0gICAg
aW1wb3J0U2NyaXB0cygnLi4vcmVzb3VyY2VzL2ZzLXRlc3QtdXRpbC5qcycpOwotfQotCi1kZXNj
cmlwdGlvbigicmVxdWVzdEZpbGVTeXN0ZW1TeW5jIFRFTVBPUkFSWSB0ZXN0LiIpOwotCi12YXIg
ZmlsZVN5c3RlbSA9IHdlYmtpdFJlcXVlc3RGaWxlU3lzdGVtU3luYyhURU1QT1JBUlksIDEwMCk7
Ci0KLWRlYnVnKCJTdWNjZXNzZnVsbHkgb2J0YWluZWQgVEVNUE9SQVJZIEZpbGVTeXN0ZW06IiAr
IGZpbGVTeXN0ZW0ubmFtZSk7Ci1zaG91bGRCZVRydWUoImZpbGVTeXN0ZW0ubmFtZS5sZW5ndGgg
PiAwIik7Ci1zaG91bGRCZSgiZmlsZVN5c3RlbS5yb290LmZ1bGxQYXRoIiwgJyIvIicpOwotZmlu
aXNoSlNUZXN0KCk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2Vz
L3NpbXBsZS10ZW1wb3JhcnkuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxl
c3lzdGVtL3Jlc291cmNlcy9zaW1wbGUtdGVtcG9yYXJ5LmpzCShyZXZpc2lvbiAxNTY2OTEpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL3NpbXBsZS10ZW1wb3Jhcnku
anMJKHdvcmtpbmcgY29weSkKQEAgLTEsMjUgKzAsMCBAQAotaWYgKHRoaXMuaW1wb3J0U2NyaXB0
cykgewotICAgIGltcG9ydFNjcmlwdHMoJy4uL3Jlc291cmNlcy9mcy13b3JrZXItY29tbW9uLmpz
Jyk7Ci0gICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Jyk7Ci0gICAgaW1wb3J0U2NyaXB0cygnLi4vcmVzb3VyY2VzL2ZzLXRlc3QtdXRpbC5qcycpOwot
fQotCi1kZXNjcmlwdGlvbigicmVxdWVzdEZpbGVTeXN0ZW0gVEVNUE9SQVJZIHRlc3QuIik7Ci0K
LXZhciBmaWxlU3lzdGVtID0gbnVsbDsKLQotZnVuY3Rpb24gZXJyb3JDYWxsYmFjayhlcnJvcikg
ewotICAgIGRlYnVnKCdFcnJvciBvY2N1cmVkIHdoaWxlIHJlcXVlc3RpbmcgYSBURU1QT1JBUlkg
ZmlsZSBzeXN0ZW06JyArIGVycm9yLmNvZGUpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi1m
dW5jdGlvbiBzdWNjZXNzQ2FsbGJhY2soZnMpIHsKLSAgICBmaWxlU3lzdGVtID0gZnM7Ci0gICAg
ZGVidWcoIlN1Y2Nlc3NmdWxseSBvYnRhaW5lZCBURU1QT1JBUlkgRmlsZVN5c3RlbToiICsgZmls
ZVN5c3RlbS5uYW1lKTsKLSAgICBzaG91bGRCZVRydWUoImZpbGVTeXN0ZW0ubmFtZS5sZW5ndGgg
PiAwIik7Ci0gICAgc2hvdWxkQmUoImZpbGVTeXN0ZW0ucm9vdC5mdWxsUGF0aCIsICciLyInKTsK
LSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotdmFyIGpzVGVzdElzQXN5bmMgPSB0cnVlOwotd2Vi
a2l0UmVxdWVzdEZpbGVTeXN0ZW0oVEVNUE9SQVJZLCAxMDAsIHN1Y2Nlc3NDYWxsYmFjaywgZXJy
b3JDYWxsYmFjayk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2Vz
L3N5bmMtb3BlcmF0aW9ucy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVz
eXN0ZW0vcmVzb3VyY2VzL3N5bmMtb3BlcmF0aW9ucy5qcwkocmV2aXNpb24gMTU2NjkxKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9zeW5jLW9wZXJhdGlvbnMuanMJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNDMgKzAsMCBAQAotaWYgKHRoaXMuaW1wb3J0U2NyaXB0cykg
ewotICAgIGltcG9ydFNjcmlwdHMoJy4uL3Jlc291cmNlcy9mcy13b3JrZXItY29tbW9uLmpzJyk7
Ci0gICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7
Ci0gICAgaW1wb3J0U2NyaXB0cygnLi4vcmVzb3VyY2VzL2ZzLXRlc3QtdXRpbC5qcycpOwotfQot
Ci1kZXNjcmlwdGlvbigiVGVzdCBtYWtpbmcgbXVsdGlwbGUgc3luY2hyb25vdXMgRmlsZVN5c3Rl
bSBvcGVyYXRpb25zLiIpOwotCi12YXIgZmlsZVN5c3RlbSA9IHdlYmtpdFJlcXVlc3RGaWxlU3lz
dGVtU3luYyh0aGlzLlRFTVBPUkFSWSwgMTAwKTsKLXJlbW92ZUFsbEluRGlyZWN0b3J5U3luYyhm
aWxlU3lzdGVtLnJvb3QpOwotCi0vLyBTdGFnZSAxIChwcmVwYXJlKQotdmFyIGEgPSBmaWxlU3lz
dGVtLnJvb3QuZ2V0RmlsZSgnYScsIHtjcmVhdGU6dHJ1ZX0pOwotdmFyIGIgPSBmaWxlU3lzdGVt
LnJvb3QuZ2V0RGlyZWN0b3J5KCdiJywge2NyZWF0ZTp0cnVlfSk7Ci12YXIgYyA9IGZpbGVTeXN0
ZW0ucm9vdC5nZXREaXJlY3RvcnkoJ2MnLCB7Y3JlYXRlOnRydWV9KTsKLXZhciBkID0gZmlsZVN5
c3RlbS5yb290LmdldEZpbGUoJ2QnLCB7Y3JlYXRlOnRydWV9KTsKLQotLy8gU3RhZ2UgMiAodGVz
dCkKLXZhciBhX2NvcHkgPSBhLmNvcHlUbyhiLCAndG1wJyk7Ci12YXIgbWV0YWRhdGEgPSBhLmdl
dE1ldGFkYXRhKCk7Ci12YXIgYl9wYXJlbnQgPSBiLmdldFBhcmVudCgpOwotdmFyIGNfY29weSA9
IGMuY29weVRvKGZpbGVTeXN0ZW0ucm9vdCwgJ2YnKTsKLXZhciBkX25ldyA9IGQubW92ZVRvKGZp
bGVTeXN0ZW0ucm9vdCwgJ2QyJyk7Ci12YXIgZSA9IGZpbGVTeXN0ZW0ucm9vdC5nZXRGaWxlKCdl
Jywge2NyZWF0ZTp0cnVlfSk7Ci0KLS8vIFZlcmlmeQotdmFyIHJlYWRlciA9IGZpbGVTeXN0ZW0u
cm9vdC5jcmVhdGVSZWFkZXIoKTsKLXZhciBkaXJzQ291bnQgPSAwOwotdmFyIHBhdGhzID0gW107
Ci1kbyB7Ci0gICAgdmFyIGVudHJpZXMgPSByZWFkZXIucmVhZEVudHJpZXMoKTsKLSAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IGVudHJpZXMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgcGF0aHMucHVz
aChlbnRyaWVzW2ldLmZ1bGxQYXRoKTsKLSAgICAgICAgaWYgKGVudHJpZXNbaV0uaXNEaXJlY3Rv
cnkpCi0gICAgICAgICAgICBkaXJzQ291bnQrKzsKLSAgICB9Ci19IHdoaWxlIChlbnRyaWVzLmxl
bmd0aCk7Ci0KLXBhdGhzLnNvcnQoKTsKLXNob3VsZEJlKCciJyArIHBhdGhzLmpvaW4oJywnKSAr
ICciJywgJyIvYSwvYiwvYywvZDIsL2UsL2YiJyk7Ci1zaG91bGRCZSgiZGlyc0NvdW50IiwgIjMi
KTsKLXJlbW92ZUFsbEluRGlyZWN0b3J5U3luYyhmaWxlU3lzdGVtLnJvb3QpOwotZmluaXNoSlNU
ZXN0KCk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vc2NyaXB0LXRlc3RzL1RF
TVBMQVRFLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Nj
cmlwdC10ZXN0cy9URU1QTEFURS5odG1sCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2ZpbGVzeXN0ZW0vc2NyaXB0LXRlc3RzL1RFTVBMQVRFLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMTAgKzAsMCBAQAotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InJlc291cmNl
cy9mcy10ZXN0LXV0aWwuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0IHNy
Yz0iWU9VUl9KU19GSUxFX0hFUkUiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3NjcmlwdC10ZXN0cy9maWxlc3lzdGVtLXJlZmVy
ZW5jZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vc2NyaXB0
LXRlc3RzL2ZpbGVzeXN0ZW0tcmVmZXJlbmNlLmpzCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vc2NyaXB0LXRlc3RzL2ZpbGVzeXN0ZW0tcmVmZXJlbmNl
LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcwICswLDAgQEAKLWRlc2NyaXB0aW9uKCJUaGlzIHRl
c3RzIGlmIEVudHJpZXMgcmV0dXJuZWQgYnkgY2FsbGJhY2tzIGtlZXAgZnVuY3Rpb25pbmcgZXZl
biBhZnRlciB3ZSBsb3NlIGEgcmVmZXJlbmNlIHRvIHRoZSBmaWxlc3lzdGVtIGluIHRoZSBzY3Jp
cHQuIik7Ci0KLXZhciB0ZXN0RGlyZWN0b3J5ID0gbnVsbDsKLXZhciB0ZXN0RW50cmllcyA9IG51
bGw7Ci0KLWZ1bmN0aW9uIGVycm9yQ2FsbGJhY2soZXJyb3IpCi17Ci0gICAgdGVzdEZhaWxlZCgi
RXJyb3Igb2NjdXJyZWQ6ICIgKyBlcnJvci5jb2RlKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0K
LQotZnVuY3Rpb24gcnVuVGVzdDEocm9vdCkKLXsKLSAgICBkZWJ1ZygiUnVubmluZyBydW5UZXN0
MSgpLi4uIik7Ci0gICAgdmFyIGhlbHBlciA9IG5ldyBKb2luSGVscGVyKCk7Ci0gICAgdmFyIGRv
bmUgPSBmdW5jdGlvbigpIHsgaGVscGVyLmRvbmUoKTsgfTsKLQotICAgIGhlbHBlci5ydW4oZnVu
Y3Rpb24oKSB7IHJvb3QuZ2V0RmlsZSgnYScsIHtjcmVhdGU6dHJ1ZX0sIGRvbmUsIGVycm9yQ2Fs
bGJhY2spOyB9KTsKLSAgICBoZWxwZXIucnVuKGZ1bmN0aW9uKCkgeyByb290LmdldERpcmVjdG9y
eSgnYicsIHtjcmVhdGU6dHJ1ZX0sIGRvbmUsIGVycm9yQ2FsbGJhY2spOyB9KTsKLSAgICBoZWxw
ZXIucnVuKGZ1bmN0aW9uKCkgeyByb290LmdldERpcmVjdG9yeSgnYycsIHtjcmVhdGU6dHJ1ZX0s
IGRvbmUsIGVycm9yQ2FsbGJhY2spOyB9KTsKLQotICAgIGdjKCk7Ci0gICAgaGVscGVyLmpvaW4o
ZnVuY3Rpb24oKSB7IHJ1blRlc3QyKHJvb3QpOyB9KTsKLX0KLQotZnVuY3Rpb24gcnVuVGVzdDIo
cm9vdCkKLXsKLSAgICBkZWJ1ZygiUnVubmluZyBydW5UZXN0MigpLi4uIik7Ci0gICAgdmFyIGhl
bHBlciA9IG5ldyBKb2luSGVscGVyKCk7Ci0gICAgdmFyIGRvbmUgPSBmdW5jdGlvbigpIHsgaGVs
cGVyLmRvbmUoKTsgfTsKLQotICAgIGhlbHBlci5ydW4oZnVuY3Rpb24oKSB7IHJvb3QuZ2V0Rmls
ZSgnL2IvMScsIHtjcmVhdGU6dHJ1ZX0sIGRvbmUsIGVycm9yQ2FsbGJhY2spOyB9KTsKLSAgICBo
ZWxwZXIucnVuKGZ1bmN0aW9uKCkgeyByb290LmdldEZpbGUoJy9iLzInLCB7Y3JlYXRlOnRydWV9
LCBkb25lLCBlcnJvckNhbGxiYWNrKTsgfSk7Ci0gICAgaGVscGVyLnJ1bihmdW5jdGlvbigpIHsg
cm9vdC5nZXRGaWxlKCcvYi8zJywge2NyZWF0ZTp0cnVlfSwgZG9uZSwgZXJyb3JDYWxsYmFjayk7
IH0pOwotICAgIGhlbHBlci5ydW4oZnVuY3Rpb24oKSB7IHJvb3QuZ2V0RmlsZSgnL2IvNCcsIHtj
cmVhdGU6dHJ1ZX0sIGRvbmUsIGVycm9yQ2FsbGJhY2spOyB9KTsKLSAgICBoZWxwZXIucnVuKGZ1
bmN0aW9uKCkgeyByb290LmdldERpcmVjdG9yeSgnYicsIHtjcmVhdGU6ZmFsc2V9LCBmdW5jdGlv
bihlbnRyeSkgeyB0ZXN0RGlyZWN0b3J5ID0gZW50cnk7IGhlbHBlci5kb25lKCk7IH0sIGVycm9y
Q2FsbGJhY2spOyB9KTsKLQotICAgIGdjKCk7Ci0gICAgaGVscGVyLmpvaW4oZnVuY3Rpb24oKSB7
IHJ1blRlc3QzKCk7IH0pOwotfQotCi1mdW5jdGlvbiBydW5UZXN0MygpCi17Ci0gICAgZGVidWco
IlJ1bm5pbmcgcnVuVGVzdDMoKS4uLiIpOwotICAgIHRlc3REaXJlY3RvcnkuY3JlYXRlUmVhZGVy
KCkucmVhZEVudHJpZXMoZW50cmllc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsKLSAgICB0ZXN0
RGlyZWN0b3J5ID0gbnVsbDsKLSAgICBnYygpOwotfQotCi1mdW5jdGlvbiBlbnRyaWVzQ2FsbGJh
Y2soZW50cmllcykKLXsKLSAgICBkZWJ1ZygiUnVubmluZyBydW5UZXN0NCgpLi4uIik7Ci0gICAg
dGVzdEVudHJpZXMgPSBlbnRyaWVzOwotICAgIHNob3VsZEJlKCJ0ZXN0RW50cmllcy5sZW5ndGgi
LCAiNCIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi1mdW5jdGlvbiBmaWxlU3lzdGVtQ2Fs
bGJhY2soZnMpCi17Ci0gICAgdmFyIHJvb3QgPSBmcy5yb290OwotICAgIHJlbW92ZUFsbEluRGly
ZWN0b3J5KGZzLnJvb3QsIGZ1bmN0aW9uKCkgeyBydW5UZXN0MShyb290KTsgfSwgZXJyb3JDYWxs
YmFjayk7Ci0gICAgZnMgPSBudWxsOwotICAgIGdjKCk7Ci19Ci0KLWlmICh3aW5kb3cud2Via2l0
UmVxdWVzdEZpbGVTeXN0ZW0pIHsKLSAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Ci0g
ICAgd2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0od2luZG93LlRFTVBPUkFSWSwgMTAwLCBmaWxlU3lz
dGVtQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spOwotfSBlbHNlCi0gICAgZGVidWcoIlRoaXMgdGVz
dCByZXF1aXJlcyBGaWxlU3lzdGVtIEFQSSBzdXBwb3J0LiIpOwpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9maWxlc3lzdGVtL3NjcmlwdC10ZXN0cy9maWxlc3lzdGVtLXVuc2VyaWFsaXphYmxlLmpz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9zY3JpcHQtdGVzdHMv
ZmlsZXN5c3RlbS11bnNlcmlhbGl6YWJsZS5qcwkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9maWxlc3lzdGVtL3NjcmlwdC10ZXN0cy9maWxlc3lzdGVtLXVuc2VyaWFsaXph
YmxlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDI5ICswLDAgQEAKLWRlc2NyaXB0aW9uKCJUaGlz
IHRlc3RzIGlmIHRoZSBmaWxlc3lzdGVtIG9iamVjdCBpcyB1bnNlcmlhbGl6YWJsZSBieSBkZWZh
dWx0Iik7Ci0KLWZ1bmN0aW9uIGVycm9yQ2FsbGJhY2soZXJyb3IpCi17Ci0gICAgdGVzdEZhaWxl
ZCgiRXJyb3Igb2NjdXJyZWQ6ICIgKyBlcnJvci5jb2RlKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsK
LX0KLQotZnVuY3Rpb24gZmlsZVN5c3RlbUNhbGxiYWNrKGZzKQotewotICAgIHRyeSB7Ci0gICAg
ICAgIHBvc3RNZXNzYWdlKGZzLCAnKicpOwotICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgZGVi
dWcoZS5tZXNzYWdlKTsKLSAgICB9Ci0KLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotZnVuY3Rp
b24gb25tZXNzYWdlKCkKLXsKLX0KLQotaWYgKHdpbmRvdy53ZWJraXRSZXF1ZXN0RmlsZVN5c3Rl
bSkgewotICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgb25tZXNzYWdlLCBm
YWxzZSk7Ci0gICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotICAgIHdlYmtpdFJlcXVl
c3RGaWxlU3lzdGVtKHdpbmRvdy5URU1QT1JBUlksIDEwMCwgZmlsZVN5c3RlbUNhbGxiYWNrLCBl
cnJvckNhbGxiYWNrKTsKLX0gZWxzZQotICAgIGRlYnVnKCJUaGlzIHRlc3QgcmVxdWlyZXMgRmls
ZVN5c3RlbSBBUEkgc3VwcG9ydC4iKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3Rl
bS9zY3JpcHQtdGVzdHMvZmxhZ3MtcGFzc2luZy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2ZpbGVzeXN0ZW0vc2NyaXB0LXRlc3RzL2ZsYWdzLXBhc3NpbmcuanMJKHJldmlzaW9u
IDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9zY3JpcHQtdGVzdHMvZmxh
Z3MtcGFzc2luZy5qcwkod29ya2luZyBjb3B5KQpAQCAtMSw5NCArMCwwIEBACi1kZXNjcmlwdGlv
bigiUGFzc2luZyBGbGFncyBwYXJhbWV0ZXIgdGVzdHMuIFRoaXMgdGVzdCBjaGVja3MgaWYgcGFz
c2luZyBGbGFncyBwYXJhbWV0ZXJzIHRvIERpcmVjdG9yeUVudHJ5LmdldEZpbGUgZG9lcyBub3Qg
Y3Jhc2ggYW5kIHdvcmtzIGFzIGV4cGVjdGVkLiIpOwotCi12YXIgdGVzdEZpbGVOYW1lID0gJy9u
b25fZXhpc3RlbnRfZmlsZSc7Ci12YXIgZmlsZVN5c3RlbSA9IG51bGw7Ci12YXIgZXhwZWN0ZWRD
YWxsYmFja3NDb3VudCA9IDA7Ci12YXIgdW5leHBlY3RlZENhbGxiYWNrc0NvdW50ID0gMDsKLXZh
ciBleHBlY3RlZCA9IGZ1bmN0aW9uKGUpIHsgZXhwZWN0ZWRDYWxsYmFja3NDb3VudCsrOyB9Owot
dmFyIHVuZXhwZWN0ZWQgPSBmdW5jdGlvbihlKSB7IHVuZXhwZWN0ZWRDYWxsYmFja3NDb3VudCsr
OyB9OwotCi12YXIgdGVzdHNMaXN0ID0gWwotICAgIHJ1bk9iamVjdFRlc3QsCi0gICAgY2xlYW51
cEFuZFJ1bk5leHQsCi0gICAgcnVuSlNPTlRlc3QsCi0gICAgcnVuSlNPTlRlc3RXaXRoRXhjbHVz
aXZlLAotICAgIHJ1bk51bGxUZXN0LAotICAgIHJ1bk5vbk9iamVjdFRlc3QKLV07Ci12YXIgdGVz
dENvdW50ZXIgPSAwOwotCi1mdW5jdGlvbiBydW5OZXh0VGVzdCh2KSB7Ci0gICAgaWYgKHRlc3RD
b3VudGVyID09IHRlc3RzTGlzdC5sZW5ndGgpIHsKLSAgICAgICAgZGVidWcoIkZpbmlzaGVkIHJ1
bm5pbmcgdGVzdHMuIik7Ci0gICAgICAgIHNob3VsZEJlKCdleHBlY3RlZENhbGxiYWNrc0NvdW50
JywgJzEnKTsKLSAgICAgICAgc2hvdWxkQmUoJ3VuZXhwZWN0ZWRDYWxsYmFja3NDb3VudCcsICcw
Jyk7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0gZWxzZQotICAgICAgICAodGVzdHNM
aXN0W3Rlc3RDb3VudGVyKytdKSgpOwotfQotCi1mdW5jdGlvbiBlcnJvckNhbGxiYWNrKGVycm9y
KSB7Ci0gICAgZGVidWcoIkVycm9yIG9jY3VyZWQgZHVyaW5nIHJlcXVlc3RpbmcgVGVtcG9yYXJ5
IEZpbGVTeXN0ZW06IiArIGVycm9yLmNvZGUpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi0v
LyBUZXN0IGJvZHkgZnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KLWZ1bmN0aW9uIHJ1bk51bGxUZXN0KHYpIHsKLSAgICBkZWJ1Zygi
KiBQYXNzaW5nIG51bGwgYXMgYSBmbGFncyBwYXJhbWV0ZXIuIik7Ci0KLSAgICAvLyBUaGlzIHNo
b3VsZCBiZSBvayBhbmQgd2UgdHJlYXQgaXQgYXMge2ZhbHNlLCBmYWxzZX0gRmxhZ3MuCi0gICAg
ZmlsZVN5c3RlbS5yb290LmdldEZpbGUodGVzdEZpbGVOYW1lLCBudWxsLCBydW5OZXh0VGVzdCwg
ZXJyb3JDYWxsYmFjayk7Ci19Ci0KLWZ1bmN0aW9uIHJ1bk5vbk9iamVjdFRlc3QodikgewotICAg
IGRlYnVnKCIqIFBhc3NpbmcgYSBudW1iZXIgYXMgYSBmbGFncyBwYXJhbWV0ZXIuIik7Ci0KLSAg
ICB0cnkgewotICAgICAgICAvLyBUaGlzIHNob3VsZCBiZSBub3QgYmUgb2sgYmVjYXVzZSA3IGlz
IG5vdCBhbiBvYmplY3QuCi0gICAgICAgIGZpbGVTeXN0ZW0ucm9vdC5nZXRGaWxlKHRlc3RGaWxl
TmFtZSwgNywgZXJyb3JDYWxsYmFjaywgZXJyb3JDYWxsYmFjayk7Ci0gICAgfSBjYXRjaCAoZXgp
IHsKLSAgICAgICAgZGVidWcoIkNhdWdodCBleGNlcHRpb246ICIgKyBleCk7Ci0gICAgICAgIHJ1
bk5leHRUZXN0KCk7Ci0gICAgfQotfQotCi1mdW5jdGlvbiBydW5PYmplY3RUZXN0KHYpIHsKLSAg
ICAvLyBXZWJLaXRGbGFncyBubyBsb25nZXIgaGFzIGEgdmlzaWJsZSBjb25zdHJ1Y3Rvci4KLSAg
ICBpZiAod2luZG93LldlYktpdEZsYWdzKQotICAgICAgICB0aHJvdyAiVGhlcmUgc2hvdWxkIGJl
IG5vIGNvbnN0cnVjdG9yIGZvciBXZWJLaXRGbGFncyEiOwotICAgIHJ1bk5leHRUZXN0KCk7Ci19
Ci0KLWZ1bmN0aW9uIHJ1bkpTT05UZXN0KHYpIHsKLSAgICBkZWJ1ZygiKiBQYXNzaW5nIEpTT04g
RmxhZ3Mgb2JqZWN0LiIpOwotCi0gICAgZmlsZVN5c3RlbS5yb290LmdldEZpbGUodGVzdEZpbGVO
YW1lLCB7Y3JlYXRlOmZhbHNlfSwgdW5leHBlY3RlZCwgZXhwZWN0ZWQpOwotICAgIGZpbGVTeXN0
ZW0ucm9vdC5nZXRGaWxlKHRlc3RGaWxlTmFtZSwge2NyZWF0ZTp0cnVlfSwgcnVuTmV4dFRlc3Qs
IGVycm9yQ2FsbGJhY2spOwotfQotCi1mdW5jdGlvbiBydW5KU09OVGVzdFdpdGhFeGNsdXNpdmUo
dikgewotICAgIGRlYnVnKCIqIFBhc3NpbmcgSlNPTiBGbGFncyBvYmplY3QgKHdpdGggZXhjbHVz
aXZlPXRydWUpLiIpOwotCi0gICAgLy8gVGhpcyBzaG91bGQgZmFpbC4KLSAgICBmaWxlU3lzdGVt
LnJvb3QuZ2V0RmlsZSh0ZXN0RmlsZU5hbWUsIHtjcmVhdGU6dHJ1ZSwgZXhjbHVzaXZlOnRydWV9
LCBlcnJvckNhbGxiYWNrLCBydW5OZXh0VGVzdCk7Ci19Ci0KLS8vIEVuZCBvZiB0ZXN0IGJvZHkg
ZnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQot
Ci1mdW5jdGlvbiBjbGVhbnVwQW5kUnVuTmV4dCh2KSB7Ci0gICAgZmlsZVN5c3RlbS5yb290Lmdl
dEZpbGUodGVzdEZpbGVOYW1lLCB7Y3JlYXRlOmZhbHNlfSwgZnVuY3Rpb24oZW50cnkpIHsKLSAg
ICAgICAgLy8gUmVtb3ZlIHRoZSBlbnRyeSBiZWZvcmUgc3RhcnQgdGVzdGluZy4KLSAgICAgICAg
ZW50cnkucmVtb3ZlKHJ1bk5leHRUZXN0LCBlcnJvckNhbGxiYWNrKTsKLSAgICB9LCBydW5OZXh0
VGVzdCk7Ci19Ci0KLWZ1bmN0aW9uIGZpbGVTeXN0ZW1DYWxsYmFjayhmcykgewotICAgIGZpbGVT
eXN0ZW0gPSBmczsKLSAgICBjbGVhbnVwQW5kUnVuTmV4dCgpOwotfQotCi1pZiAod2luZG93Lndl
YmtpdFJlcXVlc3RGaWxlU3lzdGVtKSB7Ci0gICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVl
OwotICAgIHdlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKHdpbmRvdy5URU1QT1JBUlksIDEwMCwgZmls
ZVN5c3RlbUNhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsKLX0gZWxzZQotICAgIGRlYnVnKCJUaGlz
IHRlc3QgcmVxdWlyZXMgRmlsZVN5c3RlbSBBUEkgc3VwcG9ydC4iKTsKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZmlsZXN5c3RlbS9zY3JpcHQtdGVzdHMvcmVhZC1kaXJlY3RvcnkuanMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3NjcmlwdC10ZXN0cy9yZWFkLWRp
cmVjdG9yeS5qcwkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lz
dGVtL3NjcmlwdC10ZXN0cy9yZWFkLWRpcmVjdG9yeS5qcwkod29ya2luZyBjb3B5KQpAQCAtMSw5
NSArMCwwIEBACi1kZXNjcmlwdGlvbigiRGlyZWN0b3J5UmVhZGVyLnJlYWRFbnRyaWVzKCkgdGVz
dC4iKTsKLXZhciBmaWxlU3lzdGVtID0gbnVsbDsKLXZhciByZWFkZXIgPSBudWxsOwotdmFyIHJl
c3VsdEVudHJpZXMgPSBbXTsKLQotdmFyIHJlYWRFbnRyaWVzQ291bnQgPSAwOwotdmFyIGVudHJp
ZXNDYWxsYmFja0NvdW50ID0gMDsKLQotLy8gcGF0aDogaXNEaXJlY3RvcnkgbWFwLgotdmFyIHRl
c3RFbnRyaWVzID0gewotICAgICcvYSc6IHRydWUsCi0gICAgJy9iJzogZmFsc2UsCi0gICAgJy9j
JzogdHJ1ZSwKLSAgICAnL2QnOiBmYWxzZSwKLSAgICAnL2UnOiBmYWxzZSwKLSAgICAnL2YnOiB0
cnVlLAotfTsKLXZhciB0ZXN0RW50cmllc0NvdW50ID0gMDsKLQotZnVuY3Rpb24gZW5kVGVzdCgp
Ci17Ci0gICAgcmVtb3ZlQWxsSW5EaXJlY3RvcnkoZmlsZVN5c3RlbS5yb290KTsKLSAgICBmaW5p
c2hKU1Rlc3QoKTsKLX0KLQotZnVuY3Rpb24gZXJyb3JDYWxsYmFjayhlcnJvcikKLXsKLSAgICBk
ZWJ1ZygiRXJyb3Igb2NjdXJlZDoiICsgZXJyb3IuY29kZSk7Ci0gICAgZW5kVGVzdCgpOwotfQot
Ci12YXIgZW50cnkgPSBudWxsOwotZnVuY3Rpb24gdmVyaWZ5VGVzdFJlc3VsdCgpCi17Ci0gICAg
c2hvdWxkQmUoJ3JlYWRFbnRyaWVzQ291bnQnLCAnZW50cmllc0NhbGxiYWNrQ291bnQnKTsKLSAg
ICBzaG91bGRCZSgncmVzdWx0RW50cmllcy5sZW5ndGgnLCAndGVzdEVudHJpZXNDb3VudCcpOwot
ICAgIHJlc3VsdEVudHJpZXMuc29ydChmdW5jdGlvbihhLCBiKSB7IHJldHVybiAoYS5mdWxsUGF0
aCA+IGIuZnVsbFBhdGgpID8gMSA6IChhLmZ1bGxQYXRoIDwgYi5mdWxsUGF0aCkgPyAtMSA6IDA7
IH0pOwotICAgIGZvciAoaSA9IDA7IGkgPCByZXN1bHRFbnRyaWVzLmxlbmd0aDsgKytpKSB7Ci0g
ICAgICAgIGVudHJ5ID0gcmVzdWx0RW50cmllc1tpXTsKLSAgICAgICAgZGVidWcoJ0VudHJ5Oicg
KyBlbnRyeS5mdWxsUGF0aCArICcgaXNEaXJlY3Rvcnk6JyArIGVudHJ5LmlzRGlyZWN0b3J5KTsK
LSAgICAgICAgc2hvdWxkQmUoJ3Rlc3RFbnRyaWVzW2VudHJ5LmZ1bGxQYXRoXScsICdlbnRyeS5p
c0RpcmVjdG9yeScpOwotICAgIH0KLX0KLQotZnVuY3Rpb24gZW50cmllc0NhbGxiYWNrKGVudHJp
ZXMpCi17Ci0gICAgZW50cmllc0NhbGxiYWNrQ291bnQrKzsKLQotICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgZW50cmllcy5sZW5ndGg7ICsraSkKLSAgICAgICAgcmVzdWx0RW50cmllcy5wdXNoKGVu
dHJpZXNbaV0pOwotCi0gICAgaWYgKGVudHJpZXMubGVuZ3RoKSB7Ci0gICAgICAgIHJlYWRFbnRy
aWVzQ291bnQrKzsKLSAgICAgICAgcmVhZGVyLnJlYWRFbnRyaWVzKGVudHJpZXNDYWxsYmFjaywg
ZXJyb3JDYWxsYmFjayk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgLy8gTXVzdCBoYXZlIHJlYWQg
YWxsIHRoZSBlbnRyaWVzLgotICAgICAgICB2ZXJpZnlUZXN0UmVzdWx0KCk7Ci0gICAgICAgIGVu
ZFRlc3QoKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHJ1blJlYWREaXJlY3RvcnlUZXN0KCkKLXsK
LSAgICByZWFkRW50cmllc0NvdW50Kys7Ci0gICAgcmVhZGVyID0gZmlsZVN5c3RlbS5yb290LmNy
ZWF0ZVJlYWRlcigpOwotICAgIHJlYWRlci5yZWFkRW50cmllcyhlbnRyaWVzQ2FsbGJhY2ssIGVy
cm9yQ2FsbGJhY2spOwotfQotCi1mdW5jdGlvbiBwcmVwYXJlRm9yVGVzdCgpCi17Ci0gICAgdmFy
IGhlbHBlciA9IG5ldyBKb2luSGVscGVyKCk7Ci0gICAgdmFyIGRvbmUgPSBmdW5jdGlvbigpIHsg
aGVscGVyLmRvbmUoKTsgfTsKLQotICAgIGZvciAodmFyIHBhdGggaW4gdGVzdEVudHJpZXMpIHsK
LSAgICAgICAgdGVzdEVudHJpZXNDb3VudCsrOwotICAgICAgICBpZiAodGVzdEVudHJpZXNbcGF0
aF0pCi0gICAgICAgICAgICBoZWxwZXIucnVuKGZ1bmN0aW9uKCkgeyBmaWxlU3lzdGVtLnJvb3Qu
Z2V0RGlyZWN0b3J5KHBhdGgsIHtjcmVhdGU6dHJ1ZX0sIGRvbmUsIGVycm9yQ2FsbGJhY2spOyB9
KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgaGVscGVyLnJ1bihmdW5jdGlvbigpIHsgZmls
ZVN5c3RlbS5yb290LmdldEZpbGUocGF0aCwge2NyZWF0ZTp0cnVlfSwgZG9uZSwgZXJyb3JDYWxs
YmFjayk7IH0pOwotICAgIH0KLSAgICBoZWxwZXIuam9pbihydW5SZWFkRGlyZWN0b3J5VGVzdCk7
Ci19Ci0KLWZ1bmN0aW9uIHN1Y2Nlc3NDYWxsYmFjayhmcykKLXsKLSAgICBmaWxlU3lzdGVtID0g
ZnM7Ci0gICAgZGVidWcoIlN1Y2Nlc3NmdWxseSBvYnRhaW5lZCBQZXJzaXN0ZW50IEZpbGVTeXN0
ZW06IiArIGZpbGVTeXN0ZW0ubmFtZSk7Ci0gICAgcmVtb3ZlQWxsSW5EaXJlY3RvcnkoZmlsZVN5
c3RlbS5yb290LCBwcmVwYXJlRm9yVGVzdCwgZXJyb3JDYWxsYmFjayk7Ci19Ci0KLWlmICh3aW5k
b3cud2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0pIHsKLSAgICB3ZWJraXRSZXF1ZXN0RmlsZVN5c3Rl
bSh3aW5kb3cuVEVNUE9SQVJZLCAxMDAsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjayk7
Ci0gICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotfSBlbHNlCi0gICAgZGVidWcoIlRo
aXMgdGVzdCByZXF1aXJlcyBGaWxlU3lzdGVtIEFQSSBzdXBwb3J0LiIpOwpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9maWxlc3lzdGVtL3NpbXBsZS1wZXJzaXN0ZW50LWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vc2ltcGxlLXBlcnNpc3RlbnQt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVz
eXN0ZW0vc2ltcGxlLXBlcnNpc3RlbnQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0x
LDEyICswLDAgQEAKLXJlcXVlc3RGaWxlU3lzdGVtIFBFUlNJU1RFTlQgdGVzdC4KLQotT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgotCi0KLVN1Y2Nlc3NmdWxseSBvYnRhaW5lZCBQRVJTSVNURU5U
IEZpbGVTeXN0ZW06ZmlsZV9fMDpQZXJzaXN0ZW50Ci1QQVNTIGZpbGVTeXN0ZW0ubmFtZS5sZW5n
dGggPiAwIGlzIHRydWUKLVBBU1MgZmlsZVN5c3RlbS5yb290LmZ1bGxQYXRoIGlzICIvIgotUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9zaW1wbGUtcGVyc2lzdGVudC5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9zaW1wbGUtcGVyc2lzdGVudC5odG1s
CShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vc2ltcGxl
LXBlcnNpc3RlbnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw5ICswLDAgQEAKLTxodG1sPgot
PGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaW1wbGUtcGVy
c2lzdGVudC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2ZpbGVzeXN0ZW0vc2ltcGxlLXJlYWRvbmx5LWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vc2ltcGxlLXJlYWRvbmx5LWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Np
bXBsZS1yZWFkb25seS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMzAgKzAsMCBA
QAotRmlsZVN5c3RlbSBBUEkgcmVhZG9ubHkgYXR0cmlidXRlcyB0ZXN0LgotCi1PbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCi0KLQotd2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0oVEVNUE9SQVJZLCAx
MDAsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykKLXRyeWluZyB0byBzZXQgcmVhZG9u
bHkgcHJvcGVydHkgZmlsZVN5c3RlbS5uYW1lCi1maWxlU3lzdGVtLm5hbWUgPSAnYmFyJwotUEFT
UyBmaWxlU3lzdGVtLm5hbWUgaXMgc3RpbGwgZmlsZV9fMDpUZW1wb3JhcnkKLXJvb3QgPSBmaWxl
U3lzdGVtLnJvb3QKLXJvb3QuZ2V0RmlsZSgnZm9vJywge2NyZWF0ZTp0cnVlfSwgZ2V0RmlsZUNh
bGxiYWNrLCBlcnJvckNhbGxiYWNrKQotdHJ5aW5nIHRvIHNldCByZWFkb25seSBwcm9wZXJ0eSBm
aWxlRW50cnkuaXNGaWxlCi1maWxlRW50cnkuaXNGaWxlID0gZmFsc2UKLVBBU1MgZmlsZUVudHJ5
LmlzRmlsZSBpcyBzdGlsbCB0cnVlCi10cnlpbmcgdG8gc2V0IHJlYWRvbmx5IHByb3BlcnR5IGZp
bGVFbnRyeS5pc0RpcmVjdG9yeQotZmlsZUVudHJ5LmlzRGlyZWN0b3J5ID0gdHJ1ZQotUEFTUyBm
aWxlRW50cnkuaXNEaXJlY3RvcnkgaXMgc3RpbGwgZmFsc2UKLXRyeWluZyB0byBzZXQgcmVhZG9u
bHkgcHJvcGVydHkgZmlsZUVudHJ5Lm5hbWUKLWZpbGVFbnRyeS5uYW1lID0gJ2JhcicKLVBBU1Mg
ZmlsZUVudHJ5Lm5hbWUgaXMgc3RpbGwgZm9vCi10cnlpbmcgdG8gc2V0IHJlYWRvbmx5IHByb3Bl
cnR5IGZpbGVFbnRyeS5mdWxsUGF0aAotZmlsZUVudHJ5LmZ1bGxQYXRoID0gJ2JhcicKLVBBU1Mg
ZmlsZUVudHJ5LmZ1bGxQYXRoIGlzIHN0aWxsIC9mb28KLXRyeWluZyB0byBzZXQgcmVhZG9ubHkg
cHJvcGVydHkgZmlsZUVudHJ5LmZpbGVzeXN0ZW0KLWZpbGVFbnRyeS5maWxlc3lzdGVtID0gbnVs
bAotUEFTUyBmaWxlRW50cnkuZmlsZXN5c3RlbSBpcyBzdGlsbCBbb2JqZWN0IERPTUZpbGVTeXN0
ZW1dCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3NpbXBsZS1yZWFkb25seS1maWxlLW9i
amVjdC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lz
dGVtL3NpbXBsZS1yZWFkb25seS1maWxlLW9iamVjdC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE1
NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9zaW1wbGUtcmVhZG9ubHktZmls
ZS1vYmplY3QtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDIyICswLDAgQEAKLVRl
c3QgcmVhZG9ubHkgYXR0cmlidXRlcyBvZiBGaWxlLgotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCi0KLQotd2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0oVEVNUE9SQVJZLCAxMDAsIGZpbGVTeXN0
ZW1DYWxsYmFjaywgZXJyb3JDYWxsYmFjayk7Ci1yZW1vdmVBbGxJbkRpcmVjdG9yeShmaWxlU3lz
dGVtLnJvb3QsIGNyZWF0ZVRlc3RGaWxlLCBlcnJvckNhbGxiYWNrKTsKLWZpbGVTeXN0ZW0ucm9v
dC5nZXRGaWxlKHRlc3RGaWxlTmFtZSwge2NyZWF0ZTp0cnVlfSwgZ2V0RmlsZUZyb21FbnRyeSwg
ZXJyb3JDYWxsYmFjayk7Ci10ZXN0RmlsZUVudHJ5LmZpbGUoZmlsZUNhbGxiYWNrLCBlcnJvckNh
bGxiYWNrKTsKLXRyeWluZyB0byBzZXQgcmVhZG9ubHkgcHJvcGVydHkgdGVzdEZpbGUuc2l6ZQot
dGVzdEZpbGUuc2l6ZSA9IDEKLVBBU1MgdGVzdEZpbGUuc2l6ZSBpcyBzdGlsbCAwCi10cnlpbmcg
dG8gc2V0IHJlYWRvbmx5IHByb3BlcnR5IHRlc3RGaWxlLnR5cGUKLXRlc3RGaWxlLnR5cGUgPSAn
YXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJwotUEFTUyB0ZXN0RmlsZS50eXBlIGlzIHN0aWxsIHRl
eHQvcGxhaW4KLXRyeWluZyB0byBzZXQgcmVhZG9ubHkgcHJvcGVydHkgdGVzdEZpbGUubmFtZQot
dGVzdEZpbGUubmFtZSA9ICdiYXInCi1QQVNTIHRlc3RGaWxlLm5hbWUgaXMgc3RpbGwgdGVzdEZp
bGVFbnRyeS50eHQKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01Q
TEVURQotCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vc2ltcGxlLXJlYWRvbmx5
LWZpbGUtb2JqZWN0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lz
dGVtL3NpbXBsZS1yZWFkb25seS1maWxlLW9iamVjdC5odG1sCShyZXZpc2lvbiAxNTY2OTEpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vc2ltcGxlLXJlYWRvbmx5LWZpbGUtb2JqZWN0
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsNjMgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08
aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9InJlc291cmNlcy9mcy10ZXN0LXV0aWwuanMiPjwv
c2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgotPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+Ci08c2NyaXB0PgotZGVzY3JpcHRpb24oIlRlc3QgcmVhZG9ubHkg
YXR0cmlidXRlcyBvZiBGaWxlLiIpOwotCi12YXIgZmlsZVN5c3RlbSA9IG51bGw7Ci12YXIgdGVz
dEZpbGVOYW1lID0gJy90ZXN0RmlsZUVudHJ5LnR4dCc7Ci12YXIgdGVzdEZpbGVFbnRyeSA9IG51
bGw7Ci12YXIgdGVzdEZpbGUgPSBudWxsOwotCi1mdW5jdGlvbiBzZXRSZWFkb25seVByb3BlcnR5
KHByb3BlcnR5LCB2YWx1ZSkKLXsKLSAgICBvbGRWYWx1ZSA9IGV2YWwocHJvcGVydHkpOwotICAg
IGRlYnVnKCJ0cnlpbmcgdG8gc2V0IHJlYWRvbmx5IHByb3BlcnR5ICIgKyBwcm9wZXJ0eSk7Ci0g
ICAgZXZhbEFuZExvZyhwcm9wZXJ0eSArICIgPSAiICsgdmFsdWUpOwotICAgIG5ld1ZhbHVlID0g
ZXZhbChwcm9wZXJ0eSk7Ci0gICAgaWYgKG9sZFZhbHVlID09IG5ld1ZhbHVlKSB7Ci0gICAgICAg
IHRlc3RQYXNzZWQocHJvcGVydHkgKyAiIGlzIHN0aWxsICIgKyBvbGRWYWx1ZSk7Ci0gICAgfSBl
bHNlIHsKLSAgICAgICAgdGVzdEZhaWxlZChwcm9wZXJ0eSArICIgdmFsdWUgd2FzIGNoYW5nZWQi
KTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIGVycm9yQ2FsbGJhY2soZXJyb3IpIHsKLSAgICB0ZXN0
RmFpbGVkKCJFcnJvciBvY2N1cmVkOiIgKyBlcnJvci5jb2RlKTsKLSAgICBmaW5pc2hKU1Rlc3Qo
KTsKLX0KLQotZnVuY3Rpb24gZmlsZUNhbGxiYWNrKGZpbGUpIHsKLSAgICB0ZXN0RmlsZSA9IGZp
bGU7Ci0gICAgc2V0UmVhZG9ubHlQcm9wZXJ0eSgidGVzdEZpbGUuc2l6ZSIsICIxIik7Ci0gICAg
c2V0UmVhZG9ubHlQcm9wZXJ0eSgidGVzdEZpbGUudHlwZSIsICInYXBwbGljYXRpb24vb2N0ZXQt
c3RyZWFtJyIpOwotICAgIHNldFJlYWRvbmx5UHJvcGVydHkoInRlc3RGaWxlLm5hbWUiLCAiJ2Jh
ciciKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotZnVuY3Rpb24gZ2V0RmlsZUZyb21FbnRy
eShlbnRyeSkgewotICAgIHRlc3RGaWxlRW50cnkgPSBlbnRyeTsKLSAgICBldmFsQW5kTG9nKCJ0
ZXN0RmlsZUVudHJ5LmZpbGUoZmlsZUNhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsiKTsKLX0KLQot
ZnVuY3Rpb24gY3JlYXRlVGVzdEZpbGUoKSB7Ci0gICAgZXZhbEFuZExvZygiZmlsZVN5c3RlbS5y
b290LmdldEZpbGUodGVzdEZpbGVOYW1lLCB7Y3JlYXRlOnRydWV9LCBnZXRGaWxlRnJvbUVudHJ5
LCBlcnJvckNhbGxiYWNrKTsiKTsKLX0KLQotZnVuY3Rpb24gZmlsZVN5c3RlbUNhbGxiYWNrKGZz
KSB7Ci0gICAgZmlsZVN5c3RlbSA9IGZzOwotICAgIGV2YWxBbmRMb2coInJlbW92ZUFsbEluRGly
ZWN0b3J5KGZpbGVTeXN0ZW0ucm9vdCwgY3JlYXRlVGVzdEZpbGUsIGVycm9yQ2FsbGJhY2spOyIp
OwotfQotCi12YXIganNUZXN0SXNBc3luYyA9IHRydWU7Ci1ldmFsQW5kTG9nKCJ3ZWJraXRSZXF1
ZXN0RmlsZVN5c3RlbShURU1QT1JBUlksIDEwMCwgZmlsZVN5c3RlbUNhbGxiYWNrLCBlcnJvckNh
bGxiYWNrKTsiKTsKLTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9maWxlc3lzdGVtL3NpbXBsZS1yZWFkb25seS5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9zaW1wbGUtcmVhZG9ubHkuaHRtbAkocmV2aXNpb24g
MTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3NpbXBsZS1yZWFkb25seS5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDExICswLDAgQEAKLTxodG1sPgotPGhlYWQ+Ci08c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVh
ZD4KLTxib2R5PgotPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Ci08ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2ltcGxlLXJlYWRvbmx5LmpzIj48L3Njcmlw
dD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KLTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9z
aW1wbGUtcmVxdWlyZWQtYXJndW1lbnRzLWdldGRpcmVjdG9yeS1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3NpbXBsZS1yZXF1aXJlZC1hcmd1
bWVudHMtZ2V0ZGlyZWN0b3J5LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3NpbXBsZS1yZXF1aXJlZC1hcmd1bWVudHMtZ2V0ZGly
ZWN0b3J5LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwxMyArMCwwIEBACi1EaXJl
Y3RvcnlFbnRyeSByZXF1aXJlZCBhcmd1bWVudHMgdGVzdC4KLQotT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgotCi0KLXdlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKFRFTVBPUkFSWSwgMTAwLCBzdWNj
ZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spOwotU3VjY2Vzc2Z1bGx5IG9idGFpbmVkIFRFTVBP
UkFSWSBGaWxlU3lzdGVtOmZpbGVfXzA6VGVtcG9yYXJ5Ci1yb290ID0gZmlsZVN5c3RlbS5yb290
Ci1QQVNTIHJvb3QuZ2V0RGlyZWN0b3J5KCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90
IGVub3VnaCBhcmd1bWVudHMuCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRF
U1QgQ09NUExFVEUKLQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3NpbXBsZS1y
ZXF1aXJlZC1hcmd1bWVudHMtZ2V0ZGlyZWN0b3J5Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9maWxlc3lzdGVtL3NpbXBsZS1yZXF1aXJlZC1hcmd1bWVudHMtZ2V0ZGlyZWN0
b3J5Lmh0bWwJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3Rl
bS9zaW1wbGUtcmVxdWlyZWQtYXJndW1lbnRzLWdldGRpcmVjdG9yeS5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDExICswLDAgQEAKLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHAg
aWQ9ImRlc2NyaXB0aW9uIj48L3A+Ci08ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KLTxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvc2ltcGxlLXJlcXVpcmVkLWFyZ3VtZW50cy1nZXRkaXJlY3RvcnkuanMi
Pjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxl
c3lzdGVtL3NpbXBsZS1yZXF1aXJlZC1hcmd1bWVudHMtZ2V0ZmlsZS1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3NpbXBsZS1yZXF1aXJlZC1h
cmd1bWVudHMtZ2V0ZmlsZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91
dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9zaW1wbGUtcmVxdWlyZWQtYXJndW1lbnRzLWdldGZpbGUt
ZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDEzICswLDAgQEAKLURpcmVjdG9yeUVu
dHJ5IHJlcXVpcmVkIGFyZ3VtZW50cyB0ZXN0LgotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
Ci0KLQotd2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0oVEVNUE9SQVJZLCAxMDAsIHN1Y2Nlc3NDYWxs
YmFjaywgZXJyb3JDYWxsYmFjayk7Ci1TdWNjZXNzZnVsbHkgb2J0YWluZWQgVEVNUE9SQVJZIEZp
bGVTeXN0ZW06ZmlsZV9fMDpUZW1wb3JhcnkKLXJvb3QgPSBmaWxlU3lzdGVtLnJvb3QKLVBBU1Mg
cm9vdC5nZXRGaWxlKCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1
bWVudHMuCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUK
LQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3NpbXBsZS1yZXF1aXJlZC1hcmd1
bWVudHMtZ2V0ZmlsZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5
c3RlbS9zaW1wbGUtcmVxdWlyZWQtYXJndW1lbnRzLWdldGZpbGUuaHRtbAkocmV2aXNpb24gMTU2
NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3NpbXBsZS1yZXF1aXJlZC1hcmd1
bWVudHMtZ2V0ZmlsZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDExICswLDAgQEAKLTxodG1s
PgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Ci08ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2ltcGxlLXJlcXVp
cmVkLWFyZ3VtZW50cy1nZXRmaWxlLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9zaW1wbGUtcmVxdWlyZWQtYXJndW1lbnRz
LWdldG1ldGFkYXRhLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2ZpbGVzeXN0ZW0vc2ltcGxlLXJlcXVpcmVkLWFyZ3VtZW50cy1nZXRtZXRhZGF0YS1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9z
aW1wbGUtcmVxdWlyZWQtYXJndW1lbnRzLWdldG1ldGFkYXRhLWV4cGVjdGVkLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtMSwxMyArMCwwIEBACi1EaXJlY3RvcnlFbnRyeS5nZXRNZXRhZGF0YSByZXF1
aXJlZCBhcmd1bWVudHMgdGVzdC4KLQotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgotCi0KLXdl
YmtpdFJlcXVlc3RGaWxlU3lzdGVtKFRFTVBPUkFSWSwgMTAwLCBzdWNjZXNzQ2FsbGJhY2ssIGVy
cm9yQ2FsbGJhY2spOwotU3VjY2Vzc2Z1bGx5IG9idGFpbmVkIFRFTVBPUkFSWSBGaWxlU3lzdGVt
OmZpbGVfXzA6VGVtcG9yYXJ5Ci1yb290ID0gZmlsZVN5c3RlbS5yb290Ci1QQVNTIHJvb3QuZ2V0
TWV0YWRhdGEoKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50
cy4KLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vc2ltcGxlLXJlcXVpcmVkLWFyZ3VtZW50
cy1nZXRtZXRhZGF0YS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5
c3RlbS9zaW1wbGUtcmVxdWlyZWQtYXJndW1lbnRzLWdldG1ldGFkYXRhLmh0bWwJKHJldmlzaW9u
IDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9zaW1wbGUtcmVxdWlyZWQt
YXJndW1lbnRzLWdldG1ldGFkYXRhLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTEgKzAsMCBA
QAotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08cCBpZD0iZGVzY3JpcHRpb24iPjwv
cD4KLTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgotPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaW1w
bGUtcmVxdWlyZWQtYXJndW1lbnRzLWdldG1ldGFkYXRhLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4K
LTwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9zaW1wbGUtcmVxdWly
ZWQtYXJndW1lbnRzLXJlbW92ZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9maWxlc3lzdGVtL3NpbXBsZS1yZXF1aXJlZC1hcmd1bWVudHMtcmVtb3ZlLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVt
L3NpbXBsZS1yZXF1aXJlZC1hcmd1bWVudHMtcmVtb3ZlLWV4cGVjdGVkLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtMSwxMyArMCwwIEBACi1FbnRyeS5yZW1vdmUoKSByZXF1aXJlZCBhcmd1bWVudHMg
dGVzdC4KLQotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgotCi0KLXdlYmtpdFJlcXVlc3RGaWxl
U3lzdGVtKFRFTVBPUkFSWSwgMTAwLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spOwot
U3VjY2Vzc2Z1bGx5IG9idGFpbmVkIFRFTVBPUkFSWSBGaWxlU3lzdGVtOmZpbGVfXzA6VGVtcG9y
YXJ5Ci1yb290ID0gZmlsZVN5c3RlbS5yb290Ci1QQVNTIHJvb3QucmVtb3ZlKCkgdGhyZXcgZXhj
ZXB0aW9uIFR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMuCi1QQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9maWxlc3lzdGVtL3NpbXBsZS1yZXF1aXJlZC1hcmd1bWVudHMtcmVtb3ZlLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3NpbXBsZS1yZXF1aXJlZC1hcmd1
bWVudHMtcmVtb3ZlLmh0bWwJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3Qv
ZmlsZXN5c3RlbS9zaW1wbGUtcmVxdWlyZWQtYXJndW1lbnRzLXJlbW92ZS5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDExICswLDAgQEAKLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5Pgot
PHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Ci08ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KLTxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvc2ltcGxlLXJlcXVpcmVkLWFyZ3VtZW50cy1yZW1vdmUuanMiPjwv
c2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lz
dGVtL3NpbXBsZS10ZW1wb3JhcnktZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZmlsZXN5c3RlbS9zaW1wbGUtdGVtcG9yYXJ5LWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3NpbXBsZS10ZW1wb3Jh
cnktZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDEyICswLDAgQEAKLXJlcXVlc3RG
aWxlU3lzdGVtIFRFTVBPUkFSWSB0ZXN0LgotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0K
LQotU3VjY2Vzc2Z1bGx5IG9idGFpbmVkIFRFTVBPUkFSWSBGaWxlU3lzdGVtOmZpbGVfXzA6VGVt
cG9yYXJ5Ci1QQVNTIGZpbGVTeXN0ZW0ubmFtZS5sZW5ndGggPiAwIGlzIHRydWUKLVBBU1MgZmls
ZVN5c3RlbS5yb290LmZ1bGxQYXRoIGlzICIvIgotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3Rl
bS9zaW1wbGUtdGVtcG9yYXJ5Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9m
aWxlc3lzdGVtL3NpbXBsZS10ZW1wb3JhcnkuaHRtbAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3NpbXBsZS10ZW1wb3JhcnkuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMSw5ICswLDAgQEAKLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHNj
cmlwdCBzcmM9InJlc291cmNlcy9zaW1wbGUtdGVtcG9yYXJ5LmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9k
eT4KLTwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2Fz
eW5jLW9wZXJhdGlvbnMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZmlsZXN5c3RlbS93b3JrZXJzL2FzeW5jLW9wZXJhdGlvbnMtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9hc3lu
Yy1vcGVyYXRpb25zLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwxNyArMCwwIEBA
Ci1bV29ya2VyXSBUZXN0IG1ha2luZyBtdWx0aXBsZSBhc3luYyBGaWxlU3lzdGVtIG9wZXJhdGlv
bnMuCi0KLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQotCi1TdGFydGluZyB3b3JrZXI6IC4u
L3Jlc291cmNlcy9hc3luYy1vcGVyYXRpb25zLmpzCi1bV29ya2VyXSByZXF1ZXN0ZWQgRmlsZVN5
c3RlbS4KLVtXb3JrZXJdIEdvdCBGaWxlU3lzdGVtOmZpbGVfXzA6VGVtcG9yYXJ5Ci1bV29ya2Vy
XSBTdGFydGluZyBhc3luYyB0ZXN0IHN0YWdlIDEuCi1bV29ya2VyXSBTdGFydGluZyBhc3luYyB0
ZXN0IHN0YWdlIDIuCi1bV29ya2VyXSBWZXJpZnlpbmcgdGhlIEZpbGVTeXN0ZW0gc3RhdHVzLgot
UEFTUyBbV29ya2VyXSAiL2EsL2IsL2MsL2QyLC9lLC9mIiBpcyAiL2EsL2IsL2MsL2QyLC9lLC9m
IgotUEFTUyBbV29ya2VyXSBkaXJzQ291bnQgaXMgMwotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5
c3RlbS93b3JrZXJzL2FzeW5jLW9wZXJhdGlvbnMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9hc3luYy1vcGVyYXRpb25zLmh0bWwJKHJldmlz
aW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2FzeW5j
LW9wZXJhdGlvbnMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxMiArMCwwIEBACi08aHRtbD4K
LTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQ+Ci13b3JrZXIgPSBzdGFydFdvcmtl
cignLi4vcmVzb3VyY2VzL2FzeW5jLW9wZXJhdGlvbnMuanMnKTsKLTwvc2NyaXB0PgotPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9i
b2R5PgotPC9odG1sPgotCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vy
cy9kZXRhY2hlZC1mcmFtZS1jcmFzaC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZGV0YWNoZWQtZnJhbWUtY3Jhc2gtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0v
d29ya2Vycy9kZXRhY2hlZC1mcmFtZS1jcmFzaC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTEgKzAsMCBAQAotUEFTUwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dv
cmtlcnMvZGV0YWNoZWQtZnJhbWUtY3Jhc2guaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9kZXRhY2hlZC1mcmFtZS1jcmFzaC5odG1sCShyZXZp
c2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9kZXRh
Y2hlZC1mcmFtZS1jcmFzaC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMwICswLDAgQEAKLTwh
RE9DVFlQRSBodG1sPgotPCEtLSBodHRwOi8vY3JidWcuY29tLzE0NzU5MgotICAgICBodHRwOi8v
d2Via2l0Lm9yZy9iLzk2MzU0IC0tPgotPHNjcmlwdD4KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikg
ewotICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotICAgIHRlc3RSdW5uZXIud2FpdFVudGls
RG9uZSgpOwotfQotCi1kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVk
IiwgcnVuVGVzdCk7Ci0KLWZ1bmN0aW9uIHJ1blRlc3QoKQotewotICAgIGFkZEV2ZW50TGlzdGVu
ZXIoIm1lc3NhZ2UiLCBjbGVhcik7Ci19Ci0KLWZ1bmN0aW9uIGNsZWFyKGV2ZW50KQotewotICAg
IGRvY3VtZW50LmJvZHkuaW5uZXJUZXh0ID0gIiI7Ci0gICAgc2V0VGltZW91dChkb25lLCAwKTsK
LX0KLQotZnVuY3Rpb24gZG9uZSgpCi17Ci0gICAgZG9jdW1lbnQuYm9keS5pbm5lclRleHQgPSAi
UEFTUyI7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLm5v
dGlmeURvbmUoKTsKLX0KLTwvc2NyaXB0PgotPGlmcmFtZSBpZD0iZnJhbWUiIHNyYz0icmVzb3Vy
Y2VzL2RldGFjaGVkLWZyYW1lLWNyYXNoLWZyYW1lLmh0bWwiLz4KSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtZW50cnktdG8tdXJpLXN5bmMtZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2Zp
bGUtZW50cnktdG8tdXJpLXN5bmMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNTY2OTEpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLWVudHJ5LXRvLXVyaS1zeW5j
LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwxMSArMCwwIEBACi1bV29ya2VyXSBP
YnRhaW5pbmcgVVJMIGZyb20gRmlsZUVudHJ5LgotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
Ci0KLQotU3RhcnRpbmcgd29ya2VyOiAuLi9yZXNvdXJjZXMvZmlsZS1lbnRyeS10by11cmktc3lu
Yy5qcwotUEFTUyBbV29ya2VyXSB0ZXN0RmlsZUVudHJ5LnRvVVJMKCkgaXMgJ2ZpbGVzeXN0ZW06
ZmlsZTovLy90ZW1wb3JhcnkvdGVzdEZpbGVFbnRyeS50eHQnCi1QQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9m
aWxlc3lzdGVtL3dvcmtlcnMvZmlsZS1lbnRyeS10by11cmktc3luYy5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtZW50cnktdG8tdXJp
LXN5bmMuaHRtbAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lz
dGVtL3dvcmtlcnMvZmlsZS1lbnRyeS10by11cmktc3luYy5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDExICswLDAgQEAKLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHNjcmlw
dD4KLXdvcmtlciA9IHN0YXJ0V29ya2VyKCcuLi9yZXNvdXJjZXMvZmlsZS1lbnRyeS10by11cmkt
c3luYy5qcycpOwotPC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLWZyb20tZmlsZS1lbnRyeS1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMv
ZmlsZS1mcm9tLWZpbGUtZW50cnktZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNTY2OTEpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLWZyb20tZmlsZS1lbnRyeS1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMTMgKzAsMCBAQAotW1dvcmtlcl0gT2J0
YWluaW5nIEZpbGUgZnJvbSBGaWxlRW50cnkuCi0KLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
LQotCi1TdGFydGluZyB3b3JrZXI6IC4uL3Jlc291cmNlcy9maWxlLWZyb20tZmlsZS1lbnRyeS5q
cwotUEFTUyBbV29ya2VyXSB0ZXN0RmlsZS5uYW1lIGlzIHRlc3RGaWxlRW50cnkubmFtZQotUEFT
UyBbV29ya2VyXSB0ZXN0RmlsZS50eXBlIGlzICd0ZXh0L3BsYWluJwotUEFTUyBbV29ya2VyXSB0
ZXN0RmlsZS5zaXplIGlzIDAKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVT
VCBDT01QTEVURQotCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9m
aWxlLWZyb20tZmlsZS1lbnRyeS1zeW5jLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLWZyb20tZmlsZS1lbnRyeS1zeW5j
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxl
c3lzdGVtL3dvcmtlcnMvZmlsZS1mcm9tLWZpbGUtZW50cnktc3luYy1leHBlY3RlZC50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTEsMTMgKzAsMCBAQAotW1dvcmtlcl0gT2J0YWluaW5nIEZpbGUgZnJv
bSBGaWxlRW50cnlTeW5jLgotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLQotU3RhcnRp
bmcgd29ya2VyOiAuLi9yZXNvdXJjZXMvZmlsZS1mcm9tLWZpbGUtZW50cnktc3luYy5qcwotUEFT
UyBbV29ya2VyXSB0ZXN0RmlsZS5uYW1lIGlzIHRlc3RGaWxlRW50cnkubmFtZQotUEFTUyBbV29y
a2VyXSB0ZXN0RmlsZS50eXBlIGlzICd0ZXh0L3BsYWluJwotUEFTUyBbV29ya2VyXSB0ZXN0Rmls
ZS5zaXplIGlzIDAKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01Q
TEVURQotCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLWZy
b20tZmlsZS1lbnRyeS1zeW5jLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9m
aWxlc3lzdGVtL3dvcmtlcnMvZmlsZS1mcm9tLWZpbGUtZW50cnktc3luYy5odG1sCShyZXZpc2lv
biAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLWZy
b20tZmlsZS1lbnRyeS1zeW5jLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTEgKzAsMCBAQAot
PGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0Pgotd29ya2VyID0gc3Rh
cnRXb3JrZXIoJy4uL3Jlc291cmNlcy9maWxlLWZyb20tZmlsZS1lbnRyeS1zeW5jLmpzJyk7Ci08
L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmls
ZXN5c3RlbS93b3JrZXJzL2ZpbGUtZnJvbS1maWxlLWVudHJ5Lmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS1mcm9tLWZpbGUtZW50cnku
aHRtbAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dv
cmtlcnMvZmlsZS1mcm9tLWZpbGUtZW50cnkuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxMSAr
MCwwIEBACi08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQ+Ci13b3Jr
ZXIgPSBzdGFydFdvcmtlcignLi4vcmVzb3VyY2VzL2ZpbGUtZnJvbS1maWxlLWVudHJ5LmpzJyk7
Ci08L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
ZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtd3JpdGVyLWVtcHR5LWJsb2ItZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtd3Jp
dGVyLWVtcHR5LWJsb2ItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLXdyaXRlci1lbXB0eS1ibG9iLWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwxMSArMCwwIEBACi1bV29ya2VyXSBUZXN0IHRo
YXQgRmlsZVdyaXRlciB3b3JrcyB3aXRob3V0IGNyYXNoIHdoZW4gdHJ5aW5nIHRvIHdyaXRlIGFu
IGVtcHR5IGJsb2IuCi0KLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQotU3RhcnRpbmcgd29y
a2VyOiAuLi9yZXNvdXJjZXMvZmlsZS13cml0ZXItZW1wdHktYmxvYi5qcwotW1dvcmtlcl0gc3Rh
cnRpbmcgdGVzdAotUEFTUyBbV29ya2VyXSBTdWNjZXNzZnVsbHkgd3JvdGUgYmxvYi4KLVBBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLXdyaXRlci1lbXB0eS1ibG9iLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmls
ZS13cml0ZXItZW1wdHktYmxvYi5odG1sCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLXdyaXRlci1lbXB0eS1ibG9iLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTEsMTUgKzAsMCBAQAotPCFET0NUWVBFIEhUTUw+Ci08aHRtbD4KLTxo
ZWFkPgotPHRpdGxlPkZpbGUgV3JpdGVyIHdpdGggZW1wdHkgQmxvYiBpbiBXb3JrZXI8L3RpdGxl
PgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KLTxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgotPHNjcmlwdD4KLXdvcmtlciA9IHN0YXJ0V29ya2VyKCIuLi9y
ZXNvdXJjZXMvZmlsZS13cml0ZXItZW1wdHktYmxvYi5qcyIpOwotPC9zY3JpcHQ+Ci08c2NyaXB0
IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2Jv
ZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9m
aWxlLXdyaXRlci1ldmVudHMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtd3JpdGVyLWV2ZW50cy1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJz
L2ZpbGUtd3JpdGVyLWV2ZW50cy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMTEg
KzAsMCBAQAotW1dvcmtlcl0gVGVzdCB0aGF0IEZpbGVXcml0ZXIgcHJvZHVjZXMgcHJvcGVyIHBy
b2dyZXNzIGV2ZW50cy4KLQotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgotCi1TdGFydGluZyB3
b3JrZXI6IC4uL3Jlc291cmNlcy9maWxlLXdyaXRlci1ldmVudHMuanMKLVtXb3JrZXJdIHN0YXJ0
aW5nIHRlc3QKLVBBU1MgW1dvcmtlcl0gU2F3IGFsbCB0aGUgcmlnaHQgZXZlbnRzLgotUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtd3JpdGVyLWV2ZW50cy1zaGFyZWQt
d29ya2VyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVz
eXN0ZW0vd29ya2Vycy9maWxlLXdyaXRlci1ldmVudHMtc2hhcmVkLXdvcmtlci1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3Jr
ZXJzL2ZpbGUtd3JpdGVyLWV2ZW50cy1zaGFyZWQtd29ya2VyLWV4cGVjdGVkLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtMSwxMSArMCwwIEBACi1bV29ya2VyXSBUZXN0IHRoYXQgRmlsZVdyaXRlciBw
cm9kdWNlcyBwcm9wZXIgcHJvZ3Jlc3MgZXZlbnRzLgotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCi0KLVN0YXJ0aW5nIHdvcmtlcjogLi4vcmVzb3VyY2VzL3NoYXJlZC13b3JrZXItc3R1Yi5q
cwotW1dvcmtlcl0gc3RhcnRpbmcgdGVzdAotUEFTUyBbV29ya2VyXSBTYXcgYWxsIHRoZSByaWdo
dCBldmVudHMuCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExF
VEUKLQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS13cml0
ZXItZXZlbnRzLXNoYXJlZC13b3JrZXIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLXdyaXRlci1ldmVudHMtc2hhcmVkLXdvcmtlci5o
dG1sCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29y
a2Vycy9maWxlLXdyaXRlci1ldmVudHMtc2hhcmVkLXdvcmtlci5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDE5ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MPgotPGh0bWw+Ci0gPGhlYWQ+Ci0gICAg
PHRpdGxlPkZpbGUgV3JpdGVyIEV2ZW50cyBTaGFyZWQgV29ya2VyPC90aXRsZT4KLSAgICA8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLSA8
L2hlYWQ+Ci0gPGJvZHk+Ci0gICAgPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgotICAgIDxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgotICAgIDxzY3JpcHQ+Ci0gICAgICAgIHZhciB3b3JrZXIg
PSBzdGFydFdvcmtlcigiLi4vcmVzb3VyY2VzL3NoYXJlZC13b3JrZXItc3R1Yi5qcyIsIHRydWUg
Lyogc2hhcmVkICovKTsKLSAgICAgICAgd29ya2VyLnBvcnQucG9zdE1lc3NhZ2UoIklNUE9SVDpm
aWxlLXdyaXRlci1ldmVudHMuanMiKTsKLSAgICA8L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci0gPC9ib2R5Pgot
PC9odG1sPgotCi0KLQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMv
ZmlsZS13cml0ZXItZXZlbnRzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9m
aWxlc3lzdGVtL3dvcmtlcnMvZmlsZS13cml0ZXItZXZlbnRzLmh0bWwJKHJldmlzaW9uIDE1NjY5
MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtd3JpdGVyLWV2
ZW50cy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE4ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1M
PgotPGh0bWw+Ci0gPGhlYWQ+Ci0gICAgPHRpdGxlPkZpbGUgV3JpdGVyIEV2ZW50cyBXb3JrZXI8
L3RpdGxlPgotICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgotIDwvaGVhZD4KLSA8Ym9keT4KLSAgICA8ZGl2IGlkPSJkZXNjcmlwdGlv
biI+PC9kaXY+Ci0gICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Ci0gICAgPHNjcmlwdD4KLSAg
ICAgICAgd29ya2VyID0gc3RhcnRXb3JrZXIoIi4uL3Jlc291cmNlcy9maWxlLXdyaXRlci1ldmVu
dHMuanMiKTsKLSAgICA8L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci0gPC9ib2R5PgotPC9odG1sPgotCi0KLQpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS13cml0ZXItZ2Mt
YmxvYi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lz
dGVtL3dvcmtlcnMvZmlsZS13cml0ZXItZ2MtYmxvYi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE1
NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtd3JpdGVy
LWdjLWJsb2ItZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDExICswLDAgQEAKLVtX
b3JrZXJdIFRlc3QgdGhhdCBhIGJsb2Igd29uJ3QgZ2V0IGdhcmJhZ2UtY29sbGVjdGVkIHdoaWxl
IGJlaW5nIHdyaXR0ZW4gb3V0IGJ5IGEgRmlsZVdyaXRlci4KLQotT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgotCi1TdGFydGluZyB3b3JrZXI6IC4uL3Jlc291cmNlcy9maWxlLXdyaXRlci1nYy1i
bG9iLmpzCi1bV29ya2VyXSBzdGFydGluZyB0ZXN0Ci1QQVNTIFtXb3JrZXJdIFN1Y2Nlc3NmdWxs
eSB3cm90ZSBibG9iLgotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENP
TVBMRVRFCi0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUt
d3JpdGVyLWdjLWJsb2IuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVz
eXN0ZW0vd29ya2Vycy9maWxlLXdyaXRlci1nYy1ibG9iLmh0bWwJKHJldmlzaW9uIDE1NjY5MSkK
KysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtd3JpdGVyLWdjLWJs
b2IuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxOCArMCwwIEBACi08IURPQ1RZUEUgSFRNTD4K
LTxodG1sPgotIDxoZWFkPgotICAgIDx0aXRsZT5GaWxlIFdyaXRlciBHQyBCbG9iIFdvcmtlcjwv
dGl0bGU+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Ci0gPC9oZWFkPgotIDxib2R5PgotICAgIDxkaXYgaWQ9ImRlc2NyaXB0aW9u
Ij48L2Rpdj4KLSAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KLSAgICA8c2NyaXB0PgotICAg
ICAgICB3b3JrZXIgPSBzdGFydFdvcmtlcigiLi4vcmVzb3VyY2VzL2ZpbGUtd3JpdGVyLWdjLWJs
b2IuanMiKTsKLSAgICA8L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci0gPC9ib2R5PgotPC9odG1sPgotCi0KLQpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS13cml0ZXItc3lu
Yy10cnVuY2F0ZS1leHRlbmQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtd3JpdGVyLXN5bmMtdHJ1bmNhdGUtZXh0ZW5k
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxl
c3lzdGVtL3dvcmtlcnMvZmlsZS13cml0ZXItc3luYy10cnVuY2F0ZS1leHRlbmQtZXhwZWN0ZWQu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDEwICswLDAgQEAKLVtXb3JrZXJdIFRlc3QgdXNpbmcg
RmlsZVdyaXRlclN5bmMudHJ1bmNhdGUgdG8gZXh0ZW5kIGEgZmlsZS4KLQotT24gc3VjY2Vzcywg
eW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRF
U1QgQ09NUExFVEUiLgotCi1TdGFydGluZyB3b3JrZXI6IC4uL3Jlc291cmNlcy9maWxlLXdyaXRl
ci1zeW5jLXRydW5jYXRlLWV4dGVuZC5qcwotUEFTUyBbV29ya2VyXSBUcnVuY2F0ZSBleHRlbnNp
b24gdmVyaWZpZWQuCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09N
UExFVEUKLQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS13
cml0ZXItc3luYy10cnVuY2F0ZS1leHRlbmQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLXdyaXRlci1zeW5jLXRydW5jYXRlLWV4dGVu
ZC5odG1sCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0v
d29ya2Vycy9maWxlLXdyaXRlci1zeW5jLXRydW5jYXRlLWV4dGVuZC5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDE3ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MPgotPGh0bWw+Ci0gPGhlYWQ+Ci0g
ICAgPHRpdGxlPkZpbGUgV3JpdGVyIFN5bmMgVHJ1bmNhdGUtVG8tRXh0ZW5kPC90aXRsZT4KLSAg
ICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KLSA8L2hlYWQ+Ci0gPGJvZHk+Ci0gICAgPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2Pgot
ICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgotICAgIDxzY3JpcHQ+Ci0gICAgICAgIHdvcmtl
ciA9IHN0YXJ0V29ya2VyKCIuLi9yZXNvdXJjZXMvZmlsZS13cml0ZXItc3luYy10cnVuY2F0ZS1l
eHRlbmQuanMiKTsKLSAgICA8L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci0gPC9ib2R5PgotPC9odG1sPgotCi0K
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtd3JpdGVyLXN5
bmMtd3JpdGUtb3ZlcmxhcHBlZC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS13cml0ZXItc3luYy13cml0ZS1vdmVybGFw
cGVkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9m
aWxlc3lzdGVtL3dvcmtlcnMvZmlsZS13cml0ZXItc3luYy13cml0ZS1vdmVybGFwcGVkLWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwxMiArMCwwIEBACi1bV29ya2VyXSBUZXN0IHVz
aW5nIEZpbGVXcml0ZXJTeW5jLnNlZWsgdG8gd3JpdGUgb3ZlcmxhcHBpbmcgZXhpc3RpbmcgZGF0
YSBpbiBhIGZpbGUuCi0KLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQotU3RhcnRpbmcgd29y
a2VyOiAuLi9yZXNvdXJjZXMvZmlsZS13cml0ZXItc3luYy13cml0ZS1vdmVybGFwcGVkLmpzCi1Q
QVNTIFtXb3JrZXJdIE92ZXJsYXBwZWQgd3JpdGUgMSB2ZXJpZmllZC4KLVBBU1MgW1dvcmtlcl0g
T3ZlcmxhcHBlZCB3cml0ZSAyIHZlcmlmaWVkLgotUEFTUyBbV29ya2VyXSBPdmVybGFwcGVkIHdy
aXRlIDMgdmVyaWZpZWQuCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1Qg
Q09NUExFVEUKLQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmls
ZS13cml0ZXItc3luYy13cml0ZS1vdmVybGFwcGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS13cml0ZXItc3luYy13cml0ZS1vdmVy
bGFwcGVkLmh0bWwJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5
c3RlbS93b3JrZXJzL2ZpbGUtd3JpdGVyLXN5bmMtd3JpdGUtb3ZlcmxhcHBlZC5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDE3ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MPgotPGh0bWw+Ci0gPGhl
YWQ+Ci0gICAgPHRpdGxlPkZpbGUgV3JpdGVyIFN5bmMgVHJ1bmNhdGUtVG8tRXh0ZW5kPC90aXRs
ZT4KLSAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KLSA8L2hlYWQ+Ci0gPGJvZHk+Ci0gICAgPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwv
ZGl2PgotICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgotICAgIDxzY3JpcHQ+Ci0gICAgICAg
IHdvcmtlciA9IHN0YXJ0V29ya2VyKCIuLi9yZXNvdXJjZXMvZmlsZS13cml0ZXItc3luYy13cml0
ZS1vdmVybGFwcGVkLmpzIik7Ci0gICAgPC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotIDwvYm9keT4KLTwvaHRt
bD4KLQotCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLXdy
aXRlci10cnVuY2F0ZS1leHRlbmQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtd3JpdGVyLXRydW5jYXRlLWV4dGVuZC1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5
c3RlbS93b3JrZXJzL2ZpbGUtd3JpdGVyLXRydW5jYXRlLWV4dGVuZC1leHBlY3RlZC50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTEsMTEgKzAsMCBAQAotW1dvcmtlcl0gVGVzdCBvZiBleHRlbmRpbmcg
YSBmaWxlIHVzaW5nIHRydW5jYXRlKCkuCi0KLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQot
U3RhcnRpbmcgd29ya2VyOiAuLi9yZXNvdXJjZXMvZmlsZS13cml0ZXItdHJ1bmNhdGUtZXh0ZW5k
LmpzCi1bV29ya2VyXSBzdGFydGluZyB0ZXN0Ci1QQVNTIFtXb3JrZXJdIFRydW5jYXRlIGV4dGVu
c2lvbiB2ZXJpZmllZC4KLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBD
T01QTEVURQotCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxl
LXdyaXRlci10cnVuY2F0ZS1leHRlbmQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLXdyaXRlci10cnVuY2F0ZS1leHRlbmQuaHRtbAko
cmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMv
ZmlsZS13cml0ZXItdHJ1bmNhdGUtZXh0ZW5kLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTcg
KzAsMCBAQAotPCFET0NUWVBFIEhUTUw+Ci08aHRtbD4KLSA8aGVhZD4KLSAgICA8dGl0bGU+Rmls
ZSBXcml0ZXIgVHJ1bmNhdGUtVG8tRXh0ZW5kIFdvcmtlcjwvdGl0bGU+Ci0gICAgPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci0gPC9oZWFk
PgotIDxib2R5PgotICAgIDxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KLSAgICA8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KLSAgICA8c2NyaXB0PgotICAgICAgICB3b3JrZXIgPSBzdGFydFdv
cmtlcigiLi4vcmVzb3VyY2VzL2ZpbGUtd3JpdGVyLXRydW5jYXRlLWV4dGVuZC5qcyIpOwotICAg
IDwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KLSA8L2JvZHk+Ci08L2h0bWw+Ci0KLQpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS13cml0ZXItd3JpdGUtb3ZlcmxhcHBlZC1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dv
cmtlcnMvZmlsZS13cml0ZXItd3JpdGUtb3ZlcmxhcHBlZC1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtd3Jp
dGVyLXdyaXRlLW92ZXJsYXBwZWQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDE0
ICswLDAgQEAKLVtXb3JrZXJdIFRlc3QgdXNpbmcgRmlsZVdyaXRlci5zZWVrIHRvIHdyaXRlIG92
ZXJsYXBwaW5nIGV4aXN0aW5nIGRhdGEgaW4gYSBmaWxlLgotCi1PbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCi0KLVN0YXJ0aW5nIHdvcmtlcjogLi4vcmVzb3VyY2VzL2ZpbGUtd3JpdGVyLXdyaXRl
LW92ZXJsYXBwZWQuanMKLVtXb3JrZXJdIHN0YXJ0aW5nIHRlc3QKLVBBU1MgW1dvcmtlcl0gTmVn
YXRpdmUgc2VlayB2YWxpZGF0ZWQuCi1QQVNTIFtXb3JrZXJdIFBvc2l0aXZlIHNlZWsgdmFsaWRh
dGVkLgotUEFTUyBbV29ya2VyXSBOb25leHRlbmRpbmcgd3JpdGUgdmFsaWRhdGVkLgotUEFTUyBb
V29ya2VyXSBBbGwgd3JpdGVzIHZlcmlmaWVkLgotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3Rl
bS93b3JrZXJzL2ZpbGUtd3JpdGVyLXdyaXRlLW92ZXJsYXBwZWQuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLXdyaXRlci13cml0ZS1v
dmVybGFwcGVkLmh0bWwJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmls
ZXN5c3RlbS93b3JrZXJzL2ZpbGUtd3JpdGVyLXdyaXRlLW92ZXJsYXBwZWQuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMSwxOCArMCwwIEBACi08IURPQ1RZUEUgSFRNTD4KLTxodG1sPgotIDxoZWFk
PgotICAgIDx0aXRsZT5GaWxlIFdyaXRlciBXcml0ZSBPdmVybGFwcGVkIFdvcmtlcjwvdGl0bGU+
Ci0gICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Ci0gPC9oZWFkPgotIDxib2R5PgotICAgIDxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rp
dj4KLSAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KLSAgICA8c2NyaXB0PgotICAgICAgICB3
b3JrZXIgPSBzdGFydFdvcmtlcigiLi4vcmVzb3VyY2VzL2ZpbGUtd3JpdGVyLXdyaXRlLW92ZXJs
YXBwZWQuanMiKTsKLSAgICA8L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci0gPC9ib2R5PgotPC9odG1sPgotCi0K
LQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvcmVzb3VyY2VzL2Rl
dGFjaGVkLWZyYW1lLWNyYXNoLWZyYW1lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvcmVzb3VyY2VzL2RldGFjaGVkLWZyYW1lLWNyYXNoLWZy
YW1lLmh0bWwJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3Rl
bS93b3JrZXJzL3Jlc291cmNlcy9kZXRhY2hlZC1mcmFtZS1jcmFzaC1mcmFtZS5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDEwICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPHNjcmlwdD4KLXZh
ciB3b3JrZXIgPSBuZXcgV29ya2VyKCJkZXRhY2hlZC1mcmFtZS1jcmFzaC13b3JrZXIuanMiKTsK
LXdvcmtlci5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgcmVsYXlNZXNzYWdlKTsKLQotZnVu
Y3Rpb24gcmVsYXlNZXNzYWdlKGV2ZW50KQotewotICAgIHBhcmVudC5wb3N0TWVzc2FnZShldmVu
dC5kYXRhLCBsb2NhdGlvbi5vcmlnaW4pOwotfQotPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9yZXNvdXJjZXMvZGV0YWNoZWQtZnJhbWUtY3Jhc2gt
d29ya2VyLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3Jr
ZXJzL3Jlc291cmNlcy9kZXRhY2hlZC1mcmFtZS1jcmFzaC13b3JrZXIuanMJKHJldmlzaW9uIDE1
NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL3Jlc291cmNlcy9k
ZXRhY2hlZC1mcmFtZS1jcmFzaC13b3JrZXIuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsNyArMCww
IEBACi1wb3N0TWVzc2FnZSgiUmVhZHkiKTsKLXJ1bigpOwotCi1mdW5jdGlvbiBydW4oKQotewot
ICAgIHdlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKFRFTVBPUkFSWSwgMSwgcnVuKTsKLX0KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL3NpbXBsZS1wZXJzaXN0ZW50LWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29y
a2Vycy9zaW1wbGUtcGVyc2lzdGVudC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE1NjY5MSkKKysr
IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL3NpbXBsZS1wZXJzaXN0ZW50LWV4
cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwxMyArMCwwIEBACi1bV29ya2VyXSByZXF1
ZXN0RmlsZVN5c3RlbSBQRVJTSVNURU5UIHRlc3QuCi0KLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KLQotCi1TdGFydGluZyB3b3JrZXI6IC4uL3Jlc291cmNlcy9zaW1wbGUtcGVyc2lzdGVudC5q
cwotW1dvcmtlcl0gU3VjY2Vzc2Z1bGx5IG9idGFpbmVkIFBFUlNJU1RFTlQgRmlsZVN5c3RlbTpm
aWxlX18wOlBlcnNpc3RlbnQKLVBBU1MgW1dvcmtlcl0gZmlsZVN5c3RlbS5uYW1lLmxlbmd0aCA+
IDAgaXMgdHJ1ZQotUEFTUyBbV29ya2VyXSBmaWxlU3lzdGVtLnJvb3QuZnVsbFBhdGggaXMgIi8i
Ci1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc2ltcGxlLXBlcnNpc3RlbnQt
c3luYy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lz
dGVtL3dvcmtlcnMvc2ltcGxlLXBlcnNpc3RlbnQtc3luYy1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL3NpbXBsZS1w
ZXJzaXN0ZW50LXN5bmMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDEzICswLDAg
QEAKLVtXb3JrZXJdIHdlYmtpdFJlcXVlc3RGaWxlU3lzdGVtU3luYyBQRVJTSVNURU5UIHRlc3Qu
Ci0KLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQotCi1TdGFydGluZyB3b3JrZXI6IC4uL3Jl
c291cmNlcy9zaW1wbGUtcGVyc2lzdGVudC1zeW5jLmpzCi1bV29ya2VyXSBTdWNjZXNzZnVsbHkg
b2J0YWluZWQgUEVSU0lTVEVOVCBGaWxlU3lzdGVtOmZpbGVfXzA6UGVyc2lzdGVudAotUEFTUyBb
V29ya2VyXSBmaWxlU3lzdGVtLm5hbWUubGVuZ3RoID4gMCBpcyB0cnVlCi1QQVNTIFtXb3JrZXJd
IGZpbGVTeXN0ZW0ucm9vdC5mdWxsUGF0aCBpcyAiLyIKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVz
eXN0ZW0vd29ya2Vycy9zaW1wbGUtcGVyc2lzdGVudC1zeW5jLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc2ltcGxlLXBlcnNpc3RlbnQtc3lu
Yy5odG1sCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0v
d29ya2Vycy9zaW1wbGUtcGVyc2lzdGVudC1zeW5jLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEs
MTIgKzAsMCBAQAotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0Pgot
d29ya2VyID0gc3RhcnRXb3JrZXIoJy4uL3Jlc291cmNlcy9zaW1wbGUtcGVyc2lzdGVudC1zeW5j
LmpzJyk7Ci08L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KLQpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc2ltcGxlLXBlcnNpc3RlbnQuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zaW1wbGUtcGVyc2lz
dGVudC5odG1sCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0
ZW0vd29ya2Vycy9zaW1wbGUtcGVyc2lzdGVudC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEx
ICswLDAgQEAKLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHNjcmlwdD4KLXdv
cmtlciA9IHN0YXJ0V29ya2VyKCcuLi9yZXNvdXJjZXMvc2ltcGxlLXBlcnNpc3RlbnQuanMnKTsK
LTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9m
aWxlc3lzdGVtL3dvcmtlcnMvc2ltcGxlLXRlbXBvcmFyeS1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc2ltcGxlLXRlbXBvcmFy
eS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmls
ZXN5c3RlbS93b3JrZXJzL3NpbXBsZS10ZW1wb3JhcnktZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC0xLDEzICswLDAgQEAKLVtXb3JrZXJdIHJlcXVlc3RGaWxlU3lzdGVtIFRFTVBPUkFS
WSB0ZXN0LgotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLQotU3RhcnRpbmcgd29ya2Vy
OiAuLi9yZXNvdXJjZXMvc2ltcGxlLXRlbXBvcmFyeS5qcwotW1dvcmtlcl0gU3VjY2Vzc2Z1bGx5
IG9idGFpbmVkIFRFTVBPUkFSWSBGaWxlU3lzdGVtOmZpbGVfXzA6VGVtcG9yYXJ5Ci1QQVNTIFtX
b3JrZXJdIGZpbGVTeXN0ZW0ubmFtZS5sZW5ndGggPiAwIGlzIHRydWUKLVBBU1MgW1dvcmtlcl0g
ZmlsZVN5c3RlbS5yb290LmZ1bGxQYXRoIGlzICIvIgotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5
c3RlbS93b3JrZXJzL3NpbXBsZS10ZW1wb3Jhcnktc3luYy1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc2ltcGxlLXRlbXBvcmFy
eS1zeW5jLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9maWxlc3lzdGVtL3dvcmtlcnMvc2ltcGxlLXRlbXBvcmFyeS1zeW5jLWV4cGVjdGVkLnR4dAko
d29ya2luZyBjb3B5KQpAQCAtMSwxMyArMCwwIEBACi1bV29ya2VyXSByZXF1ZXN0RmlsZVN5c3Rl
bVN5bmMgVEVNUE9SQVJZIHRlc3QuCi0KLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQotCi1T
dGFydGluZyB3b3JrZXI6IC4uL3Jlc291cmNlcy9zaW1wbGUtdGVtcG9yYXJ5LXN5bmMuanMKLVtX
b3JrZXJdIFN1Y2Nlc3NmdWxseSBvYnRhaW5lZCBURU1QT1JBUlkgRmlsZVN5c3RlbTpmaWxlX18w
OlRlbXBvcmFyeQotUEFTUyBbV29ya2VyXSBmaWxlU3lzdGVtLm5hbWUubGVuZ3RoID4gMCBpcyB0
cnVlCi1QQVNTIFtXb3JrZXJdIGZpbGVTeXN0ZW0ucm9vdC5mdWxsUGF0aCBpcyAiLyIKLVBBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zaW1wbGUtdGVtcG9yYXJ5LXN5bmMuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zaW1w
bGUtdGVtcG9yYXJ5LXN5bmMuaHRtbAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc2ltcGxlLXRlbXBvcmFyeS1zeW5jLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTEsMTIgKzAsMCBAQAotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJv
ZHk+Ci08c2NyaXB0Pgotd29ya2VyID0gc3RhcnRXb3JrZXIoJy4uL3Jlc291cmNlcy9zaW1wbGUt
dGVtcG9yYXJ5LXN5bmMuanMnKTsKLTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgotCklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zaW1wbGUtdGVtcG9yYXJ5
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMv
c2ltcGxlLXRlbXBvcmFyeS5odG1sCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zaW1wbGUtdGVtcG9yYXJ5Lmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMTEgKzAsMCBAQAotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08
c2NyaXB0Pgotd29ya2VyID0gc3RhcnRXb3JrZXIoJy4uL3Jlc291cmNlcy9zaW1wbGUtdGVtcG9y
YXJ5LmpzJyk7Ci08L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL3N5bmMtb3BlcmF0aW9ucy1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc3luYy1v
cGVyYXRpb25zLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc3luYy1vcGVyYXRpb25zLWV4cGVjdGVkLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtMSwxMiArMCwwIEBACi1bV29ya2VyXSBUZXN0IG1ha2luZyBtdWx0aXBs
ZSBzeW5jaHJvbm91cyBGaWxlU3lzdGVtIG9wZXJhdGlvbnMuCi0KLU9uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KLQotCi1TdGFydGluZyB3b3JrZXI6IC4uL3Jlc291cmNlcy9zeW5jLW9wZXJhdGlv
bnMuanMKLVBBU1MgW1dvcmtlcl0gIi9hLC9iLC9jLC9kMiwvZSwvZiIgaXMgIi9hLC9iLC9jLC9k
MiwvZSwvZiIKLVBBU1MgW1dvcmtlcl0gZGlyc0NvdW50IGlzIDMKLVBBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2ZpbGVzeXN0ZW0vd29ya2Vycy9zeW5jLW9wZXJhdGlvbnMuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zeW5jLW9wZXJhdGlvbnMuaHRtbAko
cmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMv
c3luYy1vcGVyYXRpb25zLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTIgKzAsMCBAQAotPGh0
bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0Pgotd29ya2VyID0gc3RhcnRX
b3JrZXIoJy4uL3Jlc291cmNlcy9zeW5jLW9wZXJhdGlvbnMuanMnKTsKLTwvc2NyaXB0PgotPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgot
PC9ib2R5PgotPC9odG1sPgotCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9NdXRhdGlvbk9i
c2VydmVyL2ZpbGVzeXN0ZW0tY2FsbGJhY2stZGVsaXZlcnktZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvZmlsZXN5c3RlbS1j
YWxsYmFjay1kZWxpdmVyeS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91
dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvZmlsZXN5c3RlbS1jYWxsYmFjay1kZWxp
dmVyeS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMTYgKzAsMCBAQAotVGVzdCB0
aGF0IE11dGF0aW9uIFJlY29yZHMgYXJlIGRlbGl2ZXJlZCBmb2xsb3dpbmcgRmlsZVN5c3RlbSBj
YWxsYmFja3MuCi0KLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQotCi1QQVNTIG11dGF0aW9u
cy5sZW5ndGggaXMgMQotUEFTUyBtdXRhdGlvbnNbMF0udHlwZSBpcyAiYXR0cmlidXRlcyIKLVBB
U1MgbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWUgaXMgImZvbyIKLVBBU1MgbXV0YXRpb25zLmxl
bmd0aCBpcyAxCi1QQVNTIG11dGF0aW9uc1swXS50eXBlIGlzICJhdHRyaWJ1dGVzIgotUEFTUyBt
dXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZSBpcyAiYmF6IgotCi1QQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9k
b20vTXV0YXRpb25PYnNlcnZlci9maWxlc3lzdGVtLWNhbGxiYWNrLWRlbGl2ZXJ5Lmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9maWxlc3lz
dGVtLWNhbGxiYWNrLWRlbGl2ZXJ5Lmh0bWwJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRl
c3RzL2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvZmlsZXN5c3RlbS1jYWxsYmFjay1kZWxpdmVy
eS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDY1ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgot
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0Pgotd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotdmFyIG11dGF0aW9uczsK
LQotZnVuY3Rpb24gdGVzdEZpbGVzeXN0ZW0oKSB7Ci0gICAgdmFyIGRpdjsKLSAgICB2YXIgZmls
ZUVudHJ5OwotICAgIHZhciBvYnNlcnZlcjsKLQotICAgIGZ1bmN0aW9uIHN0YXJ0KCkgewotICAg
ICAgICBtdXRhdGlvbnMgPSBudWxsOwotICAgICAgICBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdkaXYnKTsKLSAgICAgICAgb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcihmdW5j
dGlvbihtKSB7Ci0gICAgICAgICAgICBtdXRhdGlvbnMgPSBtOwotICAgICAgICB9KTsKLQotICAg
ICAgICBvYnNlcnZlci5vYnNlcnZlKGRpdiwgeyBhdHRyaWJ1dGVzOiB0cnVlLCBjaGFyYWN0ZXJE
YXRhOiB0cnVlIH0pOwotCi0gICAgICAgIHdlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKFRFTVBPUkFS
WSwgNSoxMDI0KjEwMjQsIGZ1bmN0aW9uKGZzKSB7Ci0gICAgICAgICAgICBmcy5yb290LmdldEZp
bGUoJ2Zvby50eHQnLCB7Y3JlYXRlOiB0cnVlLCBleGNsdXNlOiB0cnVlfSwgZnVuY3Rpb24oZW50
cnkpIHsKLSAgICAgICAgICAgICAgICBmaWxlRW50cnkgPSBlbnRyeTsKLSAgICAgICAgICAgICAg
ICBmaWxlRW50cnkuZ2V0UGFyZW50KG11dGF0ZUFmdGVyR2V0UGFyZW50KTsKLSAgICAgICAgICAg
IH0pOwotICAgICAgICB9KTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBtdXRhdGVBZnRlckdldFBh
cmVudCgpIHsKLSAgICAgICAgZGl2LnNldEF0dHJpYnV0ZSgnZm9vJywgJ2JhcicpOwotICAgICAg
ICBmaWxlRW50cnkucmVtb3ZlKG11dGF0ZUFmdGVyUmVtb3ZlKTsKLSAgICB9Ci0KLSAgICBmdW5j
dGlvbiBtdXRhdGVBZnRlclJlbW92ZSgpIHsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9ucy5s
ZW5ndGgnLCAnMScpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLnR5cGUnLCAnImF0
dHJpYnV0ZXMiJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFt
ZScsICciZm9vIicpOwotCi0gICAgICAgIG11dGF0aW9ucyA9IG51bGw7Ci0gICAgICAgIGRpdi5z
ZXRBdHRyaWJ1dGUoJ2JheicsICdiYXQnKTsKLSAgICAgICAgc2V0VGltZW91dChmaW5pc2gsIDAp
OwotICAgIH0KLQotICAgIGZ1bmN0aW9uIGZpbmlzaCgpIHsKLSAgICAgICAgc2hvdWxkQmUoJ211
dGF0aW9ucy5sZW5ndGgnLCAnMScpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLnR5
cGUnLCAnImF0dHJpYnV0ZXMiJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0uYXR0
cmlidXRlTmFtZScsICciYmF6IicpOwotCi0gICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTsK
LSAgICAgICAgZGVidWcoJycpOwotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9Ci0KLSAg
ICBzdGFydCgpOwotfQotCi1kZXNjcmlwdGlvbignVGVzdCB0aGF0IE11dGF0aW9uIFJlY29yZHMg
YXJlIGRlbGl2ZXJlZCBmb2xsb3dpbmcgRmlsZVN5c3RlbSBjYWxsYmFja3MuJyk7Ci0KLWlmICgh
d2luZG93LndlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKSB7Ci0gICAgdGVzdEZhaWxlZCgnVGhpcyB0
ZXN0IHJlcXVpcmVzIEVOQUJMRShGSUxFX1NZU1RFTSknKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsK
LX0gZWxzZQotICAgIHRlc3RGaWxlc3lzdGVtKCk7Ci08L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9hc3luYy1vcGVyYXRpb25zLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vYXN5bmMtb3BlcmF0aW9ucy1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5
c3RlbS9hc3luYy1vcGVyYXRpb25zLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwx
NiArMCwwIEBACi1UZXN0IG1ha2luZyBtdWx0aXBsZSBhc3luYyBGaWxlU3lzdGVtIG9wZXJhdGlv
bnMuCi0KLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQotCi1yZXF1ZXN0ZWQgRmlsZVN5c3Rl
bS4KLUdvdCBGaWxlU3lzdGVtOmZpbGVfXzA6VGVtcG9yYXJ5Ci1TdGFydGluZyBhc3luYyB0ZXN0
IHN0YWdlIDEuCi1TdGFydGluZyBhc3luYyB0ZXN0IHN0YWdlIDIuCi1WZXJpZnlpbmcgdGhlIEZp
bGVTeXN0ZW0gc3RhdHVzLgotUEFTUyAiL2EsL2IsL2MsL2QyLC9lLC9mIiBpcyAiL2EsL2IsL2Ms
L2QyLC9lLC9mIgotUEFTUyBkaXJzQ291bnQgaXMgMwotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5
c3RlbS9hc3luYy1vcGVyYXRpb25zLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9maWxlc3lzdGVtL2FzeW5jLW9wZXJhdGlvbnMuaHRtbAkocmV2aXNpb24gMTU2NjkxKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2FzeW5jLW9wZXJhdGlvbnMuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMSwxMCArMCwwIEBACi08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0icmVz
b3VyY2VzL2ZzLXRlc3QtdXRpbC5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvYXN5bmMtb3BlcmF0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+
Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vY3Jvc3MtZmlsZXN5
c3RlbS1vcC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxl
c3lzdGVtL2Nyb3NzLWZpbGVzeXN0ZW0tb3AtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNTY2OTEp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vY3Jvc3MtZmlsZXN5c3RlbS1vcC1leHBl
Y3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMzkgKzAsMCBAQAotVGhpcyB0ZXN0cyBiYXNp
YyBjcm9zcy1maWxlc3lzdGVtIG9wZXJhdGlvbnMuCi1Ecm9wIGZpbGVzIGhlcmUgaWYgeW91IHRl
c3QgdGhpcyBtYW51YWxseQotVmVyaWZ5aW5nIGNvbnRlbnRzIG9mIERhdGFUcmFuc2Zlckl0ZW1z
Li4uCi1QQVNTOiAiMSIgPT0gIjEiCi1QQVNTOiAiZmlsZSIgPT0gImZpbGUiCi1QQVNTOiAidHJ1
ZSIgPT0gInRydWUiCi1TdWNjZXNzZnVsbHkgc2V0dXAgdGVzdCBlbnZpcm9ubWVudC4KLWZpbGVf
XzA6VGVtcG9yYXJ5OiByZXNldCAvdGVzdAotVGVzdGluZyBjb3B5VG8gYXBwbGUuZ2lmOiAvcmVz
b3VyY2VzID0+IC90ZXN0Ci1QQVNTOiAiYXBwbGUuZ2lmIiA9PSAiYXBwbGUuZ2lmIgotUEFTUzog
IjE0NzYiID09ICIxNDc2IgotVGVzdGluZyBjb3B5VG8gbW96aWxsYS5naWY6IC9yZXNvdXJjZXMg
PT4gL3Rlc3QKLVBBU1M6ICJtb3ppbGxhLmdpZiIgPT0gIm1vemlsbGEuZ2lmIgotUEFTUzogIjI1
OTMiID09ICIyNTkzIgotVGVzdGluZyBjb3B5VG8gZHJvcC1maWxlLXN2Zy5zdmc6IC9yZXNvdXJj
ZXMgPT4gL3Rlc3QKLVBBU1M6ICJkcm9wLWZpbGUtc3ZnLnN2ZyIgPT0gImRyb3AtZmlsZS1zdmcu
c3ZnIgotUEFTUzogIjEwOSIgPT0gIjEwOSIKLVRlc3RpbmcgY29weVRvIGNvcHktYmFja3NsYXNo
LWV1Yy5odG1sOiAvcmVzb3VyY2VzID0+IC90ZXN0Ci1QQVNTOiAiY29weS1iYWNrc2xhc2gtZXVj
Lmh0bWwiID09ICJjb3B5LWJhY2tzbGFzaC1ldWMuaHRtbCIKLVBBU1M6ICI0NzgiID09ICI0Nzgi
Ci1UZXN0aW5nIGNvcHlUbyB0ZXN0X2RpcmVjdG9yeS90ZXN0LnR4dDogL3Jlc291cmNlcyA9PiAv
dGVzdAotUEFTUzogInRlc3QudHh0IiA9PSAidGVzdC50eHQiCi1QQVNTOiAiMTMiID09ICIxMyIK
LWZpbGVfXzA6VGVtcG9yYXJ5OiByZXNldCAvdGVzdAotVGVzdGluZyBjb3B5VG8gbW96aWxsYS5n
aWY6IC9yZXNvdXJjZXMgPT4gL3Rlc3QKLVBBU1M6ICJtb3ppbGxhLmdpZiIgPT0gIm1vemlsbGEu
Z2lmIgotUEFTUzogIjI1OTMiID09ICIyNTkzIgotVGVzdGluZyBjb3B5VG8gZHJvcC1maWxlLXN2
Zy5zdmc6IC9yZXNvdXJjZXMgPT4gL3Rlc3QKLVBBU1M6ICJkcm9wLWZpbGUtc3ZnLnN2ZyIgPT0g
ImRyb3AtZmlsZS1zdmcuc3ZnIgotUEFTUzogIjEwOSIgPT0gIjEwOSIKLVRlc3RpbmcgY29weVRv
IGNvcHktYmFja3NsYXNoLWV1Yy5odG1sOiAvcmVzb3VyY2VzID0+IC90ZXN0Ci1QQVNTOiAiY29w
eS1iYWNrc2xhc2gtZXVjLmh0bWwiID09ICJjb3B5LWJhY2tzbGFzaC1ldWMuaHRtbCIKLVBBU1M6
ICI0NzgiID09ICI0NzgiCi1UZXN0aW5nIGNvcHlUbyB0ZXN0X2RpcmVjdG9yeS90ZXN0LnR4dDog
L3Jlc291cmNlcyA9PiAvdGVzdAotUEFTUzogInRlc3QudHh0IiA9PSAidGVzdC50eHQiCi1QQVNT
OiAiMTMiID09ICIxMyIKLVN1Y2Nlc3NmdWxseSByYW4gMiB0ZXN0cy4KLUNsZWFudXAgZG9uZS4K
LQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2Nyb3NzLWZpbGVzeXN0ZW0tb3Au
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vY3Jvc3MtZmls
ZXN5c3RlbS1vcC5odG1sCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zp
bGVzeXN0ZW0vY3Jvc3MtZmlsZXN5c3RlbS1vcC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDI2
NCArMCwwIEBACi08aHRtbD4KLTxib2R5PgotPGRpdj5UaGlzIHRlc3RzIGJhc2ljIGNyb3NzLWZp
bGVzeXN0ZW0gb3BlcmF0aW9ucy48L2Rpdj4KLQotPGRpdiBpZD0iZGVzdGluYXRpb24iIHN0eWxl
PSJtaW4taGVpZ2h0OjEwMHB4OyBib3JkZXI6IHNvbGlkIDFweCBibGFjayI+RHJvcCBmaWxlcyBo
ZXJlIGlmIHlvdSB0ZXN0IHRoaXMgbWFudWFsbHk8L2Rpdj4KLQotPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Ci0KLTxzY3JpcHQ+Ci12YXIgbWV0aG9kcyA9IFsgJ2NvcHlUbycsICdtb3ZlVG8nIF07
Ci12YXIgc291cmNlVGVzdERpcmVjdG9yeSwgZGVzdFRlc3REaXJlY3Rvcnk7Ci0KLXZhciBkZXN0
RGlyZWN0b3J5UGF0aCA9ICcvdGVzdCc7Ci12YXIgc291cmNlRGlyZWN0b3J5UGF0aCA9ICcuLi8u
Li9lZGl0aW5nL3Bhc3RlYm9hcmQvcmVzb3VyY2VzJzsKLQotLy8gQWN0dWFsIGZpbGVzIGluIHRo
ZSBzb3VyY2VEaXJlY3RvcnlQYXRoLgotdmFyIHRlc3RGaWxlcyA9IFsKLSAgICB7IHBhdGg6J2Fw
cGxlLmdpZicgfSwKLSAgICB7IHBhdGg6J21vemlsbGEuZ2lmJyB9LAotICAgIHsgcGF0aDonZHJv
cC1maWxlLXN2Zy5zdmcnIH0sCi0gICAgeyBwYXRoOidjb3B5LWJhY2tzbGFzaC1ldWMuaHRtbCcg
fSwKLSAgICB7IHBhdGg6J3Rlc3RfZGlyZWN0b3J5JywgZGlyZWN0b3J5OnRydWUgfSwKLSAgICB7
IHBhdGg6J3Rlc3RfZGlyZWN0b3J5L3Rlc3QudHh0JyB9Ci1dOwotCi0vLyBOb3RlOiBmb3Igbm93
IHdlIGRvbid0IHJ1biBtb3ZlVG8gdGVzdCBzaW5jZSBkcmFnLWFuZC1kcm9wIGlzb2xhdGVkCi0v
LyBmaWxlc3lzdGVtLCB3aGljaCB3ZSB1c2UgZm9yIHNvdXJjZSBmaWxlc3lzdGVtLCBpcyByZWFk
LW9ubHkuCi0vLyBGSVhNRTogYWxsb3cgd3JpdGluZyB0byBQRVJTSVNURU5UIGZpbGVzeXN0ZW0g
d2l0aG91dCBxdW90YSBlcnJvciBpbgotLy8gRHVtcFJlbmRlclRyZWUgc28gdGhhdCB3ZSBjYW4g
dGVzdCBURU1QT1JBUlkgPC0+IFBFUlNJU1RFTlQgY3Jvc3Mgb3BlcmF0aW9uCi0vLyBjaGVja3Mu
Ci12YXIgdGVzdHMgPSBbCi0gICAgdGVzdENvcHlGaWxlLAotICAgIHRlc3RDb3B5RGlyZWN0b3J5
LAotXTsKLQotZnVuY3Rpb24gbG9nKHRleHQpCi17Ci0gICAgdmFyIGNvbnNvbGUgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpOwotICAgIGNvbnNvbGUuYXBwZW5kQ2hpbGQoZG9j
dW1lbnQuY3JlYXRlVGV4dE5vZGUodGV4dCkpOwotICAgIGNvbnNvbGUuYXBwZW5kQ2hpbGQoZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnYnInKSk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3QoZXhwZWN0LCBh
Y3R1YWwpCi17Ci0gICAgbG9nKChleHBlY3QgPT0gYWN0dWFsID8gJ1BBU1MnIDogJ0ZBSUwnKSAr
ICc6ICInICsgZXhwZWN0ICsgJyIgPT0gIicgKyBhY3R1YWwgKyAnIicpOwotfQotCi0KLWZ1bmN0
aW9uIGVycm9yQ2FsbGJhY2sobXNnKQotewotICAgIHJldHVybiBmdW5jdGlvbihlKSB7Ci0gICAg
ICAgIGNvbnNvbGUubG9nKGUpOwotICAgICAgICBsb2coJ0VSUk9SOicgKyBtc2cgKyAnOiAnICsg
ZS5jb2RlKTsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVz
dFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfTsKLX0KLQotZnVuY3Rpb24gc2V0dXBEZXN0Rmls
ZVN5c3RlbShzdWNjZXNzQ2FsbGJhY2spIHsKLSAgICB3ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbSh3
aW5kb3cuVEVNUE9SQVJZLCAxMDI0LCBmdW5jdGlvbiAoZnMpIHsKLSAgICAgICAgZnMucm9vdC5n
ZXREaXJlY3RvcnkoCi0gICAgICAgICAgICBkZXN0RGlyZWN0b3J5UGF0aCwKLSAgICAgICAgICAg
IHtjcmVhdGU6dHJ1ZX0sCi0gICAgICAgICAgICBmdW5jdGlvbiAoZW50cnkpIHsKLSAgICAgICAg
ICAgICAgICBkZXN0VGVzdERpcmVjdG9yeSA9IGVudHJ5OwotICAgICAgICAgICAgICAgIHN1Y2Nl
c3NDYWxsYmFjaygpOwotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIGVycm9yQ2FsbGJhY2so
J2Rlc3Q6IGNyZWF0ZURpcmVjdG9yeSgnICsgZGVzdERpcmVjdG9yeVBhdGggKyAnKScpKTsKLSAg
ICB9LCBlcnJvckNhbGxiYWNrKCdkZXN0OiByZXF1ZXN0RmlsZVN5c3RlbSBmb3IgUEVSU0lTVEVO
VCcpKTsKLX0KLQotZnVuY3Rpb24gcnVuVGVzdHMoaW5kZXgsIHN1Y2Nlc3NDYWxsYmFjaykgewot
ICAgIGlmIChpbmRleCA+PSB0ZXN0cy5sZW5ndGgpIHsKLSAgICAgICAgc3VjY2Vzc0NhbGxiYWNr
KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgdmFyIG5leHQgPSBmdW5jdGlvbigpIHsg
cnVuVGVzdHMoaW5kZXggKyAxLCBzdWNjZXNzQ2FsbGJhY2spOyB9OwotICAgIHJlc2V0RGlyZWN0
b3J5KGRlc3RUZXN0RGlyZWN0b3J5LCBmdW5jdGlvbigpIHsgdGVzdHNbaW5kZXhdKG5leHQpOyB9
KTsKLX0KLQotZnVuY3Rpb24gdGVzdENvcHlGaWxlKHN1Y2Nlc3NDYWxsYmFjaykgewotICAgIHRl
c3RPbkZpbGUoMCwgJ2NvcHlUbycsIHN1Y2Nlc3NDYWxsYmFjayk7Ci19Ci0KLWZ1bmN0aW9uIHRl
c3RDb3B5RGlyZWN0b3J5KHN1Y2Nlc3NDYWxsYmFjaykgewotICAgIHRlc3RPbkRpcmVjdG9yeSgw
LCAnY29weVRvJywgc3VjY2Vzc0NhbGxiYWNrKTsKLX0KLQotZnVuY3Rpb24gdGVzdE9uRmlsZShp
bmRleCwgbWV0aG9kLCBzdWNjZXNzQ2FsbGJhY2spIHsKLSAgICBpZiAoaW5kZXggPj0gdGVzdEZp
bGVzLmxlbmd0aCkgewotICAgICAgICBzdWNjZXNzQ2FsbGJhY2soKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLSAgICB2YXIgbmV4dCA9IGZ1bmN0aW9uKCkgeyB0ZXN0T25GaWxlKGluZGV4ICsg
MSwgbWV0aG9kLCBzdWNjZXNzQ2FsbGJhY2spOyB9OwotICAgIGlmICh0ZXN0RmlsZXNbaW5kZXhd
LmRpcmVjdG9yeSkgewotICAgICAgICBuZXh0KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0g
ICAgdmFyIGZpbGUgPSB0ZXN0RmlsZXNbaW5kZXhdOwotICAgIGxvZygnVGVzdGluZyAnICsgbWV0
aG9kICsgJyAnICsgZmlsZS5wYXRoICsgJzogJyArIHNvdXJjZVRlc3REaXJlY3RvcnkuZnVsbFBh
dGggKyAnID0+ICcgKyBkZXN0VGVzdERpcmVjdG9yeS5mdWxsUGF0aCk7Ci0gICAgc291cmNlVGVz
dERpcmVjdG9yeS5nZXRGaWxlKAotICAgICAgICBmaWxlLnBhdGgsIHtjcmVhdGU6ZmFsc2V9LCBm
dW5jdGlvbihzb3VyY2UpIHsKLSAgICAgICAgICAgIHNvdXJjZVttZXRob2RdKGRlc3RUZXN0RGly
ZWN0b3J5LCAnJywgZnVuY3Rpb24oZGVzdCkgewotICAgICAgICAgICAgICAgIHZlcmlmeUZpbGUo
c291cmNlLCBkZXN0LCBuZXh0KTsKLSAgICAgICAgICAgIH0sIGVycm9yQ2FsbGJhY2soJ3Rlc3RP
bkZpbGU6ICcgKyBtZXRob2QgKyAnOicgKyBmaWxlLnBhdGgpKTsKLSAgICAgICAgfSwgZXJyb3JD
YWxsYmFjaygndGVzdE9uRmlsZTogZ2V0RmlsZTonICsgZmlsZS5wYXRoKSk7Ci19Ci0KLWZ1bmN0
aW9uIHRlc3RPbkRpcmVjdG9yeShpbmRleCwgbWV0aG9kLCBzdWNjZXNzQ2FsbGJhY2spIHsKLSAg
ICBpZiAoaW5kZXggPj0gdGVzdEZpbGVzLmxlbmd0aCkgewotICAgICAgICBzdWNjZXNzQ2FsbGJh
Y2soKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICB2YXIgbmV4dCA9IGZ1bmN0aW9uKCkg
eyB0ZXN0T25GaWxlKGluZGV4ICsgMSwgbWV0aG9kLCBzdWNjZXNzQ2FsbGJhY2spOyB9OwotICAg
IGlmICghdGVzdEZpbGVzW2luZGV4XS5kaXJlY3RvcnkpIHsKLSAgICAgICAgbmV4dCgpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotICAgIHZhciBmaWxlID0gdGVzdEZpbGVzW2luZGV4XTsKLSAg
ICBsb2coJ1Rlc3RpbmcgJyArIG1ldGhvZCArICcgJyArIGZpbGUucGF0aCArICc6ICcgKyBzb3Vy
Y2VUZXN0RGlyZWN0b3J5LmZ1bGxQYXRoICsgJyA9PiAnICsgZGVzdFRlc3REaXJlY3RvcnkuZnVs
bFBhdGgpOwotICAgIHNvdXJjZVRlc3REaXJlY3RvcnkuZ2V0RGlyZWN0b3J5KAotICAgICAgICBm
aWxlLnBhdGgsIHtjcmVhdGU6ZmFsc2V9LCBmdW5jdGlvbihzb3VyY2UpIHsKLSAgICAgICAgICAg
IHNvdXJjZVttZXRob2RdKGRlc3RUZXN0RGlyZWN0b3J5LCAnJywgZnVuY3Rpb24oZGVzdCkgewot
ICAgICAgICAgICAgICAgIHZlcmlmeUZpbGUoc291cmNlLCBkZXN0LCBuZXh0KTsKLSAgICAgICAg
ICAgIH0sIGVycm9yQ2FsbGJhY2soJ3Rlc3RPbkRpcmVjdG9yeTogJyArIG1ldGhvZCArICc6JyAr
IGZpbGUucGF0aCkpOwotICAgICAgICB9LCBlcnJvckNhbGxiYWNrKCd0ZXN0T25EaXJlY3Rvcnk6
IGdldERpcmVjdG9yeTonICsgZmlsZS5wYXRoKSk7Ci19Ci0KLWZ1bmN0aW9uIHZlcmlmeUZpbGUo
c291cmNlLCBkZXN0LCBzdWNjZXNzQ2FsbGJhY2spIHsKLSAgICB0ZXN0KHNvdXJjZS5uYW1lLCBk
ZXN0Lm5hbWUpOwotICAgIHNvdXJjZS5nZXRNZXRhZGF0YShmdW5jdGlvbihzb3VyY2VNZXRhZGF0
YSkgewotICAgICAgICB2YXIgZXhwZWN0ZWRTaXplID0gc291cmNlTWV0YWRhdGEuc2l6ZTsKLSAg
ICAgICAgZGVzdC5nZXRNZXRhZGF0YShmdW5jdGlvbihkZXN0TWV0YWRhdGEpIHsKLSAgICAgICAg
ICAgIHRlc3QoZXhwZWN0ZWRTaXplLCBkZXN0TWV0YWRhdGEuc2l6ZSk7Ci0gICAgICAgICAgICBz
dWNjZXNzQ2FsbGJhY2soKTsKLSAgICAgICAgfSwgZXJyb3JDYWxsYmFjaygnZ2V0TWV0YWRhdGE6
JyArIGRlc3QuZnVsbFBhdGgpKTsKLSAgICB9LCBlcnJvckNhbGxiYWNrKCdnZXRNZXRhZGF0YTon
ICsgc291cmNlLmZ1bGxQYXRoKSk7Ci19Ci0KLWZ1bmN0aW9uIHZlcmlmeURpcmVjdG9yeShzb3Vy
Y2UsIGRlc3QsIHN1Y2Nlc3NDYWxsYmFjaykgewotICAgIGdldERpcmVjdG9yeUVudHJpZXMoc291
cmNlLCBmdW5jdGlvbihzb3VyY2VFbnRyaWVzKSB7Ci0gICAgICAgIGdldERpcmVjdG9yeUVudHJp
ZXMoZGVzdCwgZnVuY3Rpb24oZGVzdEVudHJpZXMpIHsKLSAgICAgICAgICAgIHNvdXJjZUVudHJp
ZXMuc29ydCgpOwotICAgICAgICAgICAgZGVzdEVudHJpZXMuc29ydCgpOwotICAgICAgICAgICAg
dGVzdChzb3VyY2VFbnRyaWVzLmxlbmd0aCwgZGVzdEVudHJpZXMubGVuZ3RoKTsKLSAgICAgICAg
ICAgIHZhciB2ZXJpZnlPbmUgPSBmdW5jdGlvbihpbmRleCkgewotICAgICAgICAgICAgICAgIHZl
cmlmeUZpbGUoc291cmNlRW50cmllc1tpbmRleF0sIGRlc3RFbnRyaWVzW2luZGV4XSwgZnVuY3Rp
b24oKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChpbmRleCA+PSBzb3VyY2VFbnRyaWVzLmxl
bmd0aCkgewotICAgICAgICAgICAgICAgICAgICAgICAgc3VjY2Vzc0NhbGxiYWNrKCk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICAgICAgdmVyaWZ5T25lKGluZGV4ICsgMSk7Ci0gICAgICAgICAgICAgICAgfSk7
Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgdmVyaWZ5T25lKDApOwotICAgICAgICB9KTsK
LSAgICB9KTsKLX0KLQotZnVuY3Rpb24gZ2V0RGlyZWN0b3J5RW50cmllcyhlbnRyeSwgZW50cmll
c0NhbGxiYWNrKSB7Ci0gICAgdmFyIGFsbEVudHJpZXMgPSBbXTsKLSAgICB2YXIgYWRkRW50cmll
cyA9IGZ1bmN0aW9uKGVudHJpZXMsIGNvbnRpbnVlQ2FsbGJhY2spIHsKLSAgICAgICAgaWYgKGVu
dHJpZXMubGVuZ3RoID09IDApIHsKLSAgICAgICAgICAgIGVudHJpZXNDYWxsYmFjayhhbGxFbnRy
aWVzKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBhbGxFbnRyaWVz
LmNvbmNhdChlbnRyaWVzKTsKLSAgICAgICAgaWYgKGVudHJpZXMubGVuZ3RoICE9IDApIGNvbnRp
bnVlQ2FsbGJhY2soKTsKLSAgICB9OwotICAgIHZhciBlbnRyaWVzQ2FsbGJhY2sgPSBmdW5jdGlv
bihlbnRyaWVzKSB7Ci0gICAgICAgIGFkZEVudHJpZXMoZW50cmllcywgc3VjY2Vzc0NhbGxiYWNr
LCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHJlYWRlci5yZWFkRGlyZWN0b3J5KGVudHJpZXND
YWxsYmFjayk7Ci0gICAgICAgIH0pOwotICAgIH07Ci0gICAgdmFyIHJlYWRlciA9IGVudHJ5LmNy
ZWF0ZVJlYWRlcigpOwotICAgIHJlYWRlci5yZWFkRGlyZWN0b3J5KGVudHJpZXNDYWxsYmFjaywg
ZXJyb3JDYWxsYmFjaygncmVhZERpcmVjdG9yeTogJyArIGVudHJ5LmZ1bGxQYXRoKSk7Ci19Ci0K
LWZ1bmN0aW9uIGNsZWFudXBEaXJlY3RvcnkoZGlyZWN0b3J5LCBzdWNjZXNzQ2FsbGJhY2spIHsK
LSAgICBkaXJlY3RvcnkucmVtb3ZlUmVjdXJzaXZlbHkoCi0gICAgICAgIHN1Y2Nlc3NDYWxsYmFj
aywKLSAgICAgICAgZXJyb3JDYWxsYmFjaygncmVtb3ZlUmVjdXJzaXZlbHk6JyArIGRpcmVjdG9y
eS5mdWxsUGF0aCkpOwotfQotCi1mdW5jdGlvbiByZXNldERpcmVjdG9yeShkaXJlY3RvcnksIHN1
Y2Nlc3NDYWxsYmFjaykgewotICAgIHZhciBmcyA9IGRpcmVjdG9yeS5maWxlc3lzdGVtOwotICAg
IHZhciBwYXRoID0gZGlyZWN0b3J5LmZ1bGxQYXRoOwotICAgIGNsZWFudXBEaXJlY3RvcnkoZGly
ZWN0b3J5LCBmdW5jdGlvbigpIHsKLSAgICAgICAgZnMucm9vdC5nZXREaXJlY3RvcnkocGF0aCwg
e2NyZWF0ZTp0cnVlfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2coZnMubmFtZSArICc6IHJlc2V0
ICcgKyBwYXRoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VjY2Vzc0NhbGxi
YWNrKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGVycm9yQ2FsbGJhY2soJ2dl
dERpcmVjdG9yeShjcmVhdGUpOicgKyBwYXRoKSk7Ci0gICAgfSk7Ci19Ci0KLWZ1bmN0aW9uIHNl
dHVwRmlsZXMocm9vdCwgaW5kZXgsIHN1Y2Nlc3NDYWxsYmFjaykKLXsKLSAgICBpZiAoaW5kZXgg
Pj0gdGVzdEZpbGVzLmxlbmd0aCkgewotICAgICAgICBzdWNjZXNzQ2FsbGJhY2soKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLSAgICB2YXIgZmlsZSA9IHRlc3RGaWxlc1tpbmRleF07Ci0gICAg
dmFyIG1zZyA9ICdjcmVhdGUgdGVzdEZpbGVzWycgKyBpbmRleCArICddOiAnICsgZmlsZS5wYXRo
OwotICAgIHZhciBjYWxsYmFjayA9IGZ1bmN0aW9uKGVudHJ5KSB7IHNldHVwRmlsZXMocm9vdCwg
aW5kZXggKyAxLCBzdWNjZXNzQ2FsbGJhY2spOyB9OwotICAgIGlmIChmaWxlLmRpcmVjdG9yeSkg
ewotICAgICAgICByb290LmdldERpcmVjdG9yeShkZXN0RGlyZWN0b3J5UGF0aCArICcvJyArIGZp
bGUucGF0aCwge2NyZWF0ZTp0cnVlfSwgY2FsbGJhY2ssIGVycm9yQ2FsbGJhY2sobXNnKSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICByb290LmdldEZpbGUoZmlsZS5wYXRoLCB7Y3Jl
YXRlOnRydWV9LCBmdW5jdGlvbihlbnRyeSkgewotICAgICAgICBlbnRyeS5jcmVhdGVXcml0ZXIo
ZnVuY3Rpb24gKHdyaXRlcikgewotICAgICAgICAgICAgd3JpdGVyLnRydW5jYXRlKGZpbGUuc2l6
ZSk7Ci0gICAgICAgICAgICB3cml0ZXIub25lcnJvciA9IGVycm9yQ2FsbGJhY2soJ3RydW5jYXRl
ICcgKyBlbnRyeS5mdWxsUGF0aCk7Ci0gICAgICAgICAgICB3cml0ZXIub253cml0ZWVuZCA9IGNh
bGxiYWNrOwotICAgICAgICB9LCBlcnJvckNhbGxiYWNrKCdjcmVhdGUgd3JpdGVyIGZvciAnICsg
ZW50cnkuZnVsbFBhdGgpKTsKLSAgICB9LCBlcnJvckNhbGxiYWNrKG1zZykpOwotfQotCi1mdW5j
dGlvbiBzdGFydFRlc3QoZSkgewotICAgIGUuc3RvcFByb3BhZ2F0aW9uKGUpOwotICAgIGUucHJl
dmVudERlZmF1bHQoKTsKLQotICAgIGxvZygnVmVyaWZ5aW5nIGNvbnRlbnRzIG9mIERhdGFUcmFu
c2Zlckl0ZW1zLi4uJyk7Ci0gICAgdmFyIGl0ZW1zID0gZS5kYXRhVHJhbnNmZXIuaXRlbXM7Ci0g
ICAgdGVzdCgxLCBpdGVtcy5sZW5ndGgpOwotICAgIHRlc3QoJ2ZpbGUnLCBpdGVtc1swXS5raW5k
KTsKLQotICAgIHZhciBlbnRyeSA9IGl0ZW1zWzBdLndlYmtpdEdldEFzRW50cnkoKTsKLSAgICB0
ZXN0KHRydWUsIGVudHJ5LmlzRGlyZWN0b3J5KTsKLSAgICBzb3VyY2VUZXN0RGlyZWN0b3J5ID0g
ZW50cnk7Ci0gICAgc2V0dXBEZXN0RmlsZVN5c3RlbShmdW5jdGlvbigpIHsKLSAgICAgICAgbG9n
KCdTdWNjZXNzZnVsbHkgc2V0dXAgdGVzdCBlbnZpcm9ubWVudC4nKTsKLSAgICAgICAgcnVuVGVz
dHMoMCwgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBsb2coJ1N1Y2Nlc3NmdWxseSByYW4gJyAr
IHRlc3RzLmxlbmd0aCArICcgdGVzdHMuJyk7Ci0gICAgICAgICAgICBjbGVhbnVwRGlyZWN0b3J5
KGRlc3RUZXN0RGlyZWN0b3J5LCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICBsb2coJ0Ns
ZWFudXAgZG9uZS4nKTsKLSAgICAgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0g
ICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgICAgICAgICAg
fSk7Ci0gICAgICAgIH0pOwotICAgIH0pOwotfQotCi12YXIgZGVzdGluYXRpb24gPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnZGVzdGluYXRpb24nKTsKLWRlc3RpbmF0aW9uLmFkZEV2ZW50TGlz
dGVuZXIoJ2RyYWdvdmVyJywgZnVuY3Rpb24oZSkgewotICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7
Ci0gICAgZS5wcmV2ZW50RGVmYXVsdCgpOwotfSwgZmFsc2UpOwotZGVzdGluYXRpb24uYWRkRXZl
bnRMaXN0ZW5lcignZHJvcCcsIHN0YXJ0VGVzdCwgZmFsc2UpOwotCi1pZiAod2luZG93LnRlc3RS
dW5uZXIpIHsKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLSAgICB0ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsKLQotICAgIGV2ZW50U2VuZGVyLmJlZ2luRHJhZ1dpdGhGaWxlcyhbc291
cmNlRGlyZWN0b3J5UGF0aF0pOwotICAgIGV2ZW50U2VuZGVyLmxlYXBGb3J3YXJkKDEwMCk7Ci0g
ICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oZGVzdGluYXRpb24ub2Zmc2V0TGVmdCArIDEwLCBk
ZXN0aW5hdGlvbi5vZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRIZWlnaHQgLyAyKTsKLSAg
ICBldmVudFNlbmRlci5tb3VzZVVwKCk7Ci19Ci0KLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1s
PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2RpcmVjdG9yeS1lbnRyeS10by11
cmktZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3Rl
bS9kaXJlY3RvcnktZW50cnktdG8tdXJpLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTU2NjkxKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2RpcmVjdG9yeS1lbnRyeS10by11cmktZXhw
ZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDEwICswLDAgQEAKLU9idGFpbmluZyBVUkwg
ZnJvbSBEaXJlY3RvcnlFbnRyeS4KLQotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgotCi0KLVBB
U1MgdGVzdERpcmVjdG9yeVVSTCBpcyAnZmlsZXN5c3RlbTpmaWxlOi8vL3RlbXBvcmFyeS90ZXN0
RGlyZWN0b3J5JwotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBM
RVRFCi0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9kaXJlY3RvcnktZW50cnkt
dG8tdXJpLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2Rp
cmVjdG9yeS1lbnRyeS10by11cmkuaHRtbAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9maWxlc3lzdGVtL2RpcmVjdG9yeS1lbnRyeS10by11cmkuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMSwxMCArMCwwIEBACi08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL2ZzLXRlc3QtdXRpbC5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvZGlyZWN0b3J5LWVudHJ5LXRvLXVyaS5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2Jv
ZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZW50cnktcG9p
bnRzLW1pc3NpbmctYXJndW1lbnRzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZW50cnktcG9pbnRzLW1pc3NpbmctYXJndW1lbnRzLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVt
L2VudHJ5LXBvaW50cy1taXNzaW5nLWFyZ3VtZW50cy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMTQgKzAsMCBAQAotRW5zdXJlcyB0aGF0IHdlIGdldCBleGNlcHRpb25zIHdoZW4g
d2UgZG8gbm90IGluY2x1ZGUgcmVxdWlyZWQgYXJndW1lbnRzIGZvciB3ZWJraXRSZXF1ZXN0Rmls
ZVN5c3RlbSBhbmQgd2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVVSTCBtZXRob2RzLgotCi1P
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLQotUEFTUyB3ZWJraXRSZXNvbHZlTG9jYWxGaWxl
U3lzdGVtVVJMKCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVu
dHMuCi1QQVNTIHdlYmtpdFJlc29sdmVMb2NhbEZpbGVTeXN0ZW1VUkwoIiIpIHRocmV3IGV4Y2Vw
dGlvbiBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzLgotUEFTUyB3ZWJraXRSZXF1ZXN0
RmlsZVN5c3RlbSgpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1l
bnRzLgotUEFTUyB3ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbShURU1QT1JBUlkpIHRocmV3IGV4Y2Vw
dGlvbiBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzLgotUEFTUyB3ZWJraXRSZXF1ZXN0
RmlsZVN5c3RlbShURU1QT1JBUlksIDEpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBl
bm91Z2ggYXJndW1lbnRzLgotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNU
IENPTVBMRVRFCi0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9lbnRyeS1wb2lu
dHMtbWlzc2luZy1hcmd1bWVudHMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2ZpbGVzeXN0ZW0vZW50cnktcG9pbnRzLW1pc3NpbmctYXJndW1lbnRzLmh0bWwJKHJldmlzaW9u
IDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9lbnRyeS1wb2ludHMtbWlz
c2luZy1hcmd1bWVudHMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxNiArMCwwIEBACi08IURP
Q1RZUEUgaHRtbD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgotPHNjcmlwdD4KLWRlc2NyaXB0aW9uKCdFbnN1cmVzIHRoYXQgd2UgZ2V0IGV4
Y2VwdGlvbnMgd2hlbiB3ZSBkbyBub3QgaW5jbHVkZSByZXF1aXJlZCBhcmd1bWVudHMgZm9yIHdl
YmtpdFJlcXVlc3RGaWxlU3lzdGVtIGFuZCB3ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lzdGVtVVJM
IG1ldGhvZHMuJyk7Ci0KLWlmICh3aW5kb3cud2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVVS
TCkgewotICAgIHZhciBub3RFbm91Z2hBcmd1bWVudHMgPSAnIlR5cGVFcnJvcjogTm90IGVub3Vn
aCBhcmd1bWVudHMiJzsKLSAgICBzaG91bGRUaHJvdygnd2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5
c3RlbVVSTCgpJywgbm90RW5vdWdoQXJndW1lbnRzKTsKLSAgICBzaG91bGRUaHJvdygnd2Via2l0
UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVVSTCgiIiknLCBub3RFbm91Z2hBcmd1bWVudHMpOwotICAg
IHNob3VsZFRocm93KCd3ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbSgpJywgbm90RW5vdWdoQXJndW1l
bnRzKTsKLSAgICBzaG91bGRUaHJvdygnd2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0oVEVNUE9SQVJZ
KScsIG5vdEVub3VnaEFyZ3VtZW50cyk7Ci0gICAgc2hvdWxkVGhyb3coJ3dlYmtpdFJlcXVlc3RG
aWxlU3lzdGVtKFRFTVBPUkFSWSwgMSknLCBub3RFbm91Z2hBcmd1bWVudHMpOwotfSBlbHNlCi0g
ICAgZGVidWcoIlRoaXMgdGVzdCByZXF1aXJlcyB3aW5kb3cud2Via2l0UmVzb2x2ZUxvY2FsRmls
ZVN5c3RlbVVSTC4iKTsKLTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lz
dGVtL2ZpbGUtYWZ0ZXItcmVsb2FkLWNyYXNoLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZS1hZnRlci1yZWxvYWQtY3Jhc2gtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0v
ZmlsZS1hZnRlci1yZWxvYWQtY3Jhc2gtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0x
ICswLDAgQEAKLVBBU1MKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9maWxlLWFm
dGVyLXJlbG9hZC1jcmFzaC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmls
ZXN5c3RlbS9maWxlLWFmdGVyLXJlbG9hZC1jcmFzaC5odG1sCShyZXZpc2lvbiAxNTY2OTEpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZS1hZnRlci1yZWxvYWQtY3Jhc2guaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMSw0MiArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRh
IGNoYXJzZXQ9IlVURi04Ij4KLTwhLS0gYmFzZWQgb24gY3JidWcuY29tLzk0ODk1I2MyMAotICAg
ICBodHRwOi8vY3JidWcuY29tLzk0ODk1Ci0gICAgIGh0dHA6Ly93ZWJraXQub3JnL2IvNzY0NjEg
LS0+Ci08c2NyaXB0PgotaWYgKGxvY2F0aW9uLnNlYXJjaCAhPSAnP3JlZW50ZXInKSB7Ci0gIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotICAg
IHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotICB9Ci0KLSAgd2Via2l0UmVxdWVzdEZpbGVT
eXN0ZW0oVEVNUE9SQVJZLCAxMDI0KjEwMjQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGdv
dEZTLCBvbkVycm9yLmJpbmQobnVsbCwgJ3JlcXVlc3RGaWxlU3lzdGVtJykpOwotfSBlbHNlIHsK
LSAgZG9jdW1lbnQud3JpdGUoJ1BBU1MnKTsKLQotICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0g
ICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19Ci0KLWZ1bmN0aW9uIG9uRXJyb3IobXNnLCBl
KSB7Ci0gIGRvY3VtZW50LmJvZHkuaW5uZXJUZXh0ID0gJ0ZBSUw6ICcgKyBlLmNvZGUgKyAnIG1z
ZyA9ICcgKyBtc2c7Ci0gIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICB0ZXN0UnVubmVyLm5v
dGlmeURvbmUoKTsKLX0KLQotZnVuY3Rpb24gZ290RlMoZnMpIHsKLSAgZnMucm9vdC5nZXRGaWxl
KCdob2dlJywge2NyZWF0ZTogdHJ1ZX0sCi0gICAgICAgICAgICAgICAgICBnb3RFbnRyeSwgb25F
cnJvci5iaW5kKG51bGwsICdnZXRGaWxlJykpOwotfQotCi1mdW5jdGlvbiBnb3RFbnRyeShlbnRy
eSkgewotICAvLyBJdCBzaG91bGQgbm90IGNhdXNlIGEgY3Jhc2ggdGhhdCBjYWxsaW5nIEZpbGVF
bnRyeS5maWxlKCkgd2hpbGUgdGhlIHBhZ2UgaXMgdW5sb2FkaW5nLgotICBsb2NhdGlvbi5zZWFy
Y2ggPSAnP3JlZW50ZXInOwotICBlbnRyeS5maWxlKGdvdEZpbGUsIG9uRXJyb3IuYmluZChudWxs
LCAnZmlsZScpKTsKLX0KLQotZnVuY3Rpb24gZ290RmlsZShmaWxlKSB7Ci0gIC8vIElnbm9yZSB0
aGUgcmVzdWx0IG9mIEZpbGVFbnRyeS5maWxlKCkuCi19Ci08L3NjcmlwdD4KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9maWxlLWVudHJ5LXRvLXVyaS1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGUtZW50cnktdG8tdXJp
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxl
c3lzdGVtL2ZpbGUtZW50cnktdG8tdXJpLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MSwxMCArMCwwIEBACi1PYnRhaW5pbmcgVVJMIGZyb20gRmlsZUVudHJ5LgotCi1PbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCi0KLQotUEFTUyB0ZXN0RmlsZVVSTCBpcyAnZmlsZXN5c3RlbTpmaWxl
Oi8vL3RlbXBvcmFyeS90ZXN0RmlsZUVudHJ5LnR4dCcKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVz
eXN0ZW0vZmlsZS1lbnRyeS10by11cmkuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2ZpbGVzeXN0ZW0vZmlsZS1lbnRyeS10by11cmkuaHRtbAkocmV2aXNpb24gMTU2NjkxKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGUtZW50cnktdG8tdXJpLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTEsMTAgKzAsMCBAQAotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9
InJlc291cmNlcy9mcy10ZXN0LXV0aWwuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08
c2NyaXB0IHNyYz0icmVzb3VyY2VzL2ZpbGUtZW50cnktdG8tdXJpLmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwv
Ym9keT4KLTwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9maWxlLWZy
b20tZmlsZS1lbnRyeS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9maWxlc3lzdGVtL2ZpbGUtZnJvbS1maWxlLWVudHJ5LWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGUtZnJvbS1maWxlLWVu
dHJ5LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwxMiArMCwwIEBACi1PYnRhaW5p
bmcgRmlsZSBmcm9tIEZpbGVFbnRyeS4KLQotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgotCi0K
LVBBU1MgdGVzdEZpbGUubmFtZSBpcyB0ZXN0RmlsZUVudHJ5Lm5hbWUKLVBBU1MgdGVzdEZpbGUu
dHlwZSBpcyAndGV4dC9wbGFpbicKLVBBU1MgdGVzdEZpbGUuc2l6ZSBpcyAwCi1QQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9maWxlc3lzdGVtL2ZpbGUtZnJvbS1maWxlLWVudHJ5Lmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGUtZnJvbS1maWxlLWVudHJ5Lmh0bWwJ
KHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9maWxlLWZy
b20tZmlsZS1lbnRyeS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEwICswLDAgQEAKLTxodG1s
PgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZnMtdGVzdC11dGlsLmpzIj48L3Njcmlw
dD4KLTwvaGVhZD4KLTxib2R5PgotPHNjcmlwdCBzcmM9InJlc291cmNlcy9maWxlLWZyb20tZmls
ZS1lbnRyeS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZS1tZXRhZGF0YS1hZnRlci13cml0ZS1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGUtbWV0YWRhdGEt
YWZ0ZXItd3JpdGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZS1tZXRhZGF0YS1hZnRlci13cml0ZS1leHBlY3RlZC50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMTAgKzAsMCBAQAotVGhpcyB2ZXJpZmllcyBGaWxlLnNpemUg
KGZvciBhIGZpbGUgZnJvbSBGaWxlU3lzdGVtIEFQSSkgYWx3YXlzIHJldHVybnMgdGhlIGZyZXNo
IHNpemUgZXZlbiBhZnRlciB0aGUgZmlsZSBpcyBtb2RpZmllZC4KLVdyaXRpbmcgMTIzNDU2Nzg5
MCB0byB0aGUgZmlsZS4uLgotQ3JlYXRlZCBhIHdyaXRlci4KLVdyaXRlIHN1Y2NlZWRlZC4KLVBB
U1MgdGVzdEZpbGUuc2l6ZSBpcyB0ZXN0VGV4dDEubGVuZ3RoCi1Xcml0aW5nIGFiY2RlZmdoaWpr
bG1ub3BxcnN0dXZ3eHl6IHRvIHRoZSBmaWxlLi4uCi1DcmVhdGVkIGEgd3JpdGVyLgotV3JpdGUg
c3VjY2VlZGVkLgotUEFTUyB0ZXN0RmlsZS5zaXplIGlzIHRlc3RUZXh0Mi5sZW5ndGgKLQpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGUtbWV0YWRhdGEtYWZ0ZXItd3JpdGUu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZS1tZXRh
ZGF0YS1hZnRlci13cml0ZS5odG1sCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2ZpbGVzeXN0ZW0vZmlsZS1tZXRhZGF0YS1hZnRlci13cml0ZS5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDg4ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPC9o
ZWFkPgotPGJvZHk+Ci08ZGl2PlRoaXMgdmVyaWZpZXMgRmlsZS5zaXplIChmb3IgYSBmaWxlIGZy
b20gRmlsZVN5c3RlbSBBUEkpIGFsd2F5cyByZXR1cm5zIHRoZSBmcmVzaCBzaXplIGV2ZW4gYWZ0
ZXIgdGhlIGZpbGUgaXMgbW9kaWZpZWQuPC9kaXY+Ci08ZGl2IGlkPSdjb25zb2xlJz48L2Rpdj4K
LTxzY3JpcHQ+Ci0KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAgIHRlc3RSdW5uZXIuZHVt
cEFzVGV4dCgpOwotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotfQotCi12YXIgZmls
ZUVudHJ5Rm9yQ2xlYW51cDsKLXZhciB0ZXN0RmlsZTsKLXZhciB0ZXN0VGV4dDEgPSAnMTIzNDU2
Nzg5MCc7Ci12YXIgdGVzdFRleHQyID0gJ2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6JzsKLQot
d2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0oCi0gICAgd2luZG93LlRFTVBPUkFSWSwgMTAwLCBmdW5j
dGlvbihmcykgewotICAgICAgICBmcy5yb290LmdldEZpbGUoJ3Rlc3QnLCB7Y3JlYXRlOnRydWV9
LCBmdW5jdGlvbihlbnRyeSkgewotICAgICAgICAgICAgZmlsZUVudHJ5Rm9yQ2xlYW51cCA9IGVu
dHJ5OwotICAgICAgICAgICAgd3JpdGVUZXh0VG9GaWxlKGVudHJ5LCB0ZXN0VGV4dDEsIGZ1bmN0
aW9uKCkgewotICAgICAgICAgICAgICAgIGxvZygnV3JpdGUgc3VjY2VlZGVkLicpOwotICAgICAg
ICAgICAgICAgIGVudHJ5LmZpbGUob25Xcml0dGVuRmlsZS5iaW5kKHRoaXMsIGVudHJ5KSwgb25F
cnJvcik7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfSwgb25FcnJvcik7Ci0gICAgfSwgb25F
cnJvcik7Ci0KLWZ1bmN0aW9uIG9uV3JpdHRlbkZpbGUoZW50cnksIGZpbGUpIHsKLSAgICB0ZXN0
RmlsZSA9IGZpbGU7Ci0gICAgc2hvdWxkQmUoJ3Rlc3RGaWxlLnNpemUnLCAndGVzdFRleHQxLmxl
bmd0aCcpOwotICAgIC8vIFdyaXRlIGludG8gdGhpcyBmaWxlIGFnYWluLgotICAgIHdyaXRlVGV4
dFRvRmlsZShlbnRyeSwgdGVzdFRleHQyLCBmdW5jdGlvbigpIHsKLSAgICAgICAgbG9nKCdXcml0
ZSBzdWNjZWVkZWQuJyk7Ci0gICAgICAgIGVudHJ5LmZpbGUoZnVuY3Rpb24oKSB7Ci0gICAgICAg
ICAgICAvLyBUaGUgZmlsZSBzaXplIHNob3VsZCBiZSB1cGRhdGVkLgotICAgICAgICAgICAgc2hv
dWxkQmUoJ3Rlc3RGaWxlLnNpemUnLCAndGVzdFRleHQyLmxlbmd0aCcpOwotICAgICAgICAgICAg
Y2xlYW51cCgpOwotICAgICAgICB9LCBvbkVycm9yKTsKLSAgICB9KTsKLX0KLQotZnVuY3Rpb24g
d3JpdGVUZXh0VG9GaWxlKGVudHJ5LCBjb250ZW50cywgc3VjY2Vzc0NhbGxiYWNrKQotewotICAg
IGxvZygnV3JpdGluZyAnICsgY29udGVudHMgKyAnIHRvIHRoZSBmaWxlLi4uJyk7Ci0gICAgZW50
cnkuY3JlYXRlV3JpdGVyKGZ1bmN0aW9uKHdyaXRlcikgewotICAgICAgICBsb2coJ0NyZWF0ZWQg
YSB3cml0ZXIuJyk7Ci0gICAgICAgIHdyaXRlci53cml0ZShuZXcgQmxvYihbY29udGVudHNdLCB7
dHlwZToncGxhaW4vdGV4dCd9KSk7Ci0gICAgICAgIHdyaXRlci5vbndyaXRlZW5kID0gc3VjY2Vz
c0NhbGxiYWNrOwotICAgICAgICB3cml0ZXIub25lcnJvciA9IG9uRXJyb3I7Ci0gICAgfSk7Ci19
Ci0KLWZ1bmN0aW9uIGxvZyh0ZXh0KQotewotICAgIHZhciBjb25zb2xlID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKTsKLSAgICBjb25zb2xlLmFwcGVuZENoaWxkKGRvY3VtZW50
LmNyZWF0ZVRleHROb2RlKHRleHQpKTsKLSAgICBjb25zb2xlLmFwcGVuZENoaWxkKGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ2JyJykpOwotfQotCi1mdW5jdGlvbiBvbkVycm9yKGUpCi17Ci0gICAg
bG9nKCdFUlJPUjogJyArIGUuY29kZSk7Ci0gICAgY29uc29sZS5sb2coZSk7Ci0gICAgY2xlYW51
cCgpOwotfQotCi1mdW5jdGlvbiBjbGVhbnVwKCkKLXsKLSAgICBpZiAoZmlsZUVudHJ5Rm9yQ2xl
YW51cCkgewotICAgICAgICBmaWxlRW50cnlGb3JDbGVhbnVwLnJlbW92ZShlbmRUZXN0LCBlbmRU
ZXN0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBlbmRUZXN0KCk7Ci19Ci0KLWZ1bmN0
aW9uIGVuZFRlc3QoKQotewotICAgIGlmICh0ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVy
Lm5vdGlmeURvbmUoKTsKLX0KLQotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZS13cml0ZXItYWJvcnQtY29udGludWUtZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9maWxl
LXdyaXRlci1hYm9ydC1jb250aW51ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE1NjY5MSkKKysr
IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9maWxlLXdyaXRlci1hYm9ydC1jb250aW51ZS1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNDEgKzAsMCBAQAotVGVzdCB0aGF0IEZp
bGVXcml0ZXIgY2FuIGNvbnRpbnVlIGltbWVkaWF0ZWx5IGFmdGVyIGFuIGFib3J0LgotCi1PbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLVBBU1MgMTEwMDAwMCBpcyBibG9iU2l6ZQotc3RhcnRp
bmcgdGVzdAotUEFTUyBDYWxsaW5nIHdyaXRlLgotUEFTUyBDYWxsaW5nIGFib3J0Ci1QQVNTIFNh
dyBhYm9ydAotUEFTUyB3cml0ZXIubGVuZ3RoIGlzIDAKLVBBU1MgU2F3IHdyaXRlZW5kIDAuCi1Q
QVNTIENhbGxpbmcgd3JpdGUuCi1QQVNTIHdyaXRlci5sZW5ndGggaXMgMTEwMDAwMAotUEFTUyBT
YXcgd3JpdGVlbmQgMS4KLVBBU1MgQ2FsbGluZyB0cnVuY2F0ZS4KLVBBU1Mgd3JpdGVyLmxlbmd0
aCBpcyAwCi1QQVNTIFNhdyB3cml0ZWVuZCAyLgotUEFTUyBDYWxsaW5nIHdyaXRlLgotUEFTUyBD
YWxsaW5nIGFib3J0IGF0IHRoZSBlbmQgb2YgdGhlIHdyaXRlCi1QQVNTIFNhdyBhYm9ydAotUEFT
UyB3cml0ZXIubGVuZ3RoIGlzIDExMDAwMDAKLVBBU1MgU2F3IHdyaXRlZW5kIDMuCi1QQVNTIENh
bGxpbmcgd3JpdGUuCi1QQVNTIHdyaXRlci5sZW5ndGggaXMgMjIwMDAwMAotUEFTUyBTYXcgd3Jp
dGVlbmQgNC4KLVBBU1MgQ2FsbGluZyB0cnVuY2F0ZS4KLVBBU1Mgd3JpdGVyLmxlbmd0aCBpcyAw
Ci1QQVNTIFNhdyB3cml0ZWVuZCA1LgotUEFTUyBDYWxsaW5nIHdyaXRlLgotUEFTUyBDYWxsaW5n
IGFib3J0Ci1QQVNTIFNhdyBhYm9ydAotUEFTUyB3cml0ZXIubGVuZ3RoIGlzIDAKLVBBU1MgU2F3
IHdyaXRlZW5kIDYuCi1QQVNTIENhbGxpbmcgdHJ1bmNhdGUuCi1QQVNTIHdyaXRlci5sZW5ndGgg
aXMgNwotUEFTUyBTYXcgd3JpdGVlbmQgNy4KLVBBU1MgQWxsIHRlc3RzIGNvbXBsZXRlLgotUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9maWxlLXdyaXRlci1hYm9ydC1jb250aW51ZS5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9maWxlLXdyaXRlci1h
Ym9ydC1jb250aW51ZS5odG1sCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2ZpbGVzeXN0ZW0vZmlsZS13cml0ZXItYWJvcnQtY29udGludWUuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMSwxNSArMCwwIEBACi08IURPQ1RZUEUgSFRNTD4KLTxodG1sPgotIDxoZWFkPgotICAg
IDx0aXRsZT5GaWxlIFdyaXRlciBBYm9ydCBhbmQgQ29udGludWU8L3RpdGxlPgotICAgIDxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotICAgIDxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvZmlsZS13cml0ZXItdXRpbHMuanMiPjwvc2NyaXB0PgotIDwv
aGVhZD4KLSA8Ym9keT4KLSAgICA8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Ci0gICAgPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+Ci0gICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9maWxlLXdy
aXRlci1hYm9ydC1jb250aW51ZS5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotIDwvYm9keT4KLTwvaHRtbD4K
LQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGUtd3JpdGVyLWFib3J0LWRl
cHRoLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0
ZW0vZmlsZS13cml0ZXItYWJvcnQtZGVwdGgtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNTY2OTEp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZS13cml0ZXItYWJvcnQtZGVwdGgt
ZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDI5ICswLDAgQEAKLVRlc3QgdGhhdCBG
aWxlV3JpdGVyIGRlZmVuZHMgYWdhaW5zdCBpbmZpbml0ZSByZWN1cnNpb24gdmlhIGFib3J0Lgot
Ci1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLXN0YXJ0aW5nIHRlc3QKLVBBU1MgQ2FsbGlu
ZyB3cml0ZS4KLVBBU1MgQ2FsbGluZyBhYm9ydAotUEFTUyBTYXcgYWJvcnQKLVBBU1MgQ2FsbGlu
ZyB3cml0ZS4KLVBBU1MgQ2FsbGluZyBhYm9ydAotUEFTUyBTYXcgYWJvcnQKLVBBU1MgQ2FsbGlu
ZyB3cml0ZS4KLVBBU1MgU2F3IHNlY3VyaXR5IGVycm9yCi1QQVNTIFNhdyB3cml0ZWVuZC4KLVBB
U1MgU2F3IHdyaXRlZW5kLgotUEFTUyBDYWxsaW5nIHRydW5jYXRlLgotUEFTUyBDYWxsaW5nIGFi
b3J0Ci1QQVNTIFNhdyBhYm9ydAotUEFTUyBDYWxsaW5nIHRydW5jYXRlLgotUEFTUyBDYWxsaW5n
IGFib3J0Ci1QQVNTIFNhdyBhYm9ydAotUEFTUyBDYWxsaW5nIHRydW5jYXRlLgotUEFTUyBTYXcg
c2VjdXJpdHkgZXJyb3IKLVBBU1MgU2F3IHdyaXRlZW5kLgotUEFTUyBTYXcgd3JpdGVlbmQuCi1Q
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGUtd3JpdGVyLWFib3J0LWRlcHRoLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGUtd3JpdGVyLWFi
b3J0LWRlcHRoLmh0bWwJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmls
ZXN5c3RlbS9maWxlLXdyaXRlci1hYm9ydC1kZXB0aC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDE1ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MPgotPGh0bWw+Ci0gPGhlYWQ+Ci0gICAgPHRpdGxl
PkZpbGUgV3JpdGVyIEFib3J0IERlcHRoPC90aXRsZT4KLSAgICA8c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL2ZpbGUtd3JpdGVyLXV0aWxzLmpzIj48L3NjcmlwdD4KLSA8L2hlYWQ+Ci0gPGJvZHk+
Ci0gICAgPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgotICAgIDxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgotICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZmlsZS13cml0ZXItYWJvcnQtZGVw
dGguanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KLSA8L2JvZHk+Ci08L2h0bWw+Ci0KSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZmlsZXN5c3RlbS9maWxlLXdyaXRlci1hYm9ydC1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGUtd3JpdGVyLWFib3J0LWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lz
dGVtL2ZpbGUtd3JpdGVyLWFib3J0LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwx
MiArMCwwIEBACi1UZXN0IHRoYXQgRmlsZVdyaXRlciBoYW5kbGVzIGFib3J0IHByb3Blcmx5Lgot
Ci1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLXN0YXJ0aW5nIHRlc3QKLVBBU1MgQ2FsbGlu
ZyBhYm9ydAotUEFTUyBTYXcgYWJvcnQKLVBBU1MgU2F3IHdyaXRlZW5kLgotUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvZmlsZXN5c3RlbS9maWxlLXdyaXRlci1hYm9ydC5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9maWxlLXdyaXRlci1hYm9ydC5odG1sCShyZXZpc2lv
biAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZS13cml0ZXItYWJv
cnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxNSArMCwwIEBACi08IURPQ1RZUEUgSFRNTD4K
LTxodG1sPgotIDxoZWFkPgotICAgIDx0aXRsZT5GaWxlIFdyaXRlciBBYm9ydDwvdGl0bGU+Ci0g
ICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Ci0gICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9maWxlLXdyaXRlci11dGlscy5qcyI+PC9zY3Jp
cHQ+Ci0gPC9oZWFkPgotIDxib2R5PgotICAgIDxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4K
LSAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KLSAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L2ZpbGUtd3JpdGVyLWFib3J0LmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci0gPC9ib2R5PgotPC9odG1sPgot
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZS13cml0ZXItZW1wdHktYmxv
Yi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVt
L2ZpbGUtd3JpdGVyLWVtcHR5LWJsb2ItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNTY2OTEpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZS13cml0ZXItZW1wdHktYmxvYi1leHBl
Y3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMTAgKzAsMCBAQAotVGVzdCB0aGF0IEZpbGVX
cml0ZXIgd29ya3Mgd2l0aG91dCBjcmFzaCB3aGVuIHRyeWluZyB0byB3cml0ZSBhbiBlbXB0eSBi
bG9iLgotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLXN0YXJ0aW5nIHRlc3QKLVBBU1Mg
U3VjY2Vzc2Z1bGx5IHdyb3RlIGJsb2IuCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
Ci0KLVRFU1QgQ09NUExFVEUKLQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2Zp
bGUtd3JpdGVyLWVtcHR5LWJsb2IuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2ZpbGVzeXN0ZW0vZmlsZS13cml0ZXItZW1wdHktYmxvYi5odG1sCShyZXZpc2lvbiAxNTY2OTEp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZS13cml0ZXItZW1wdHktYmxvYi5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE1ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MPgotPGh0
bWw+Ci08aGVhZD4KLTx0aXRsZT5GaWxlIFdyaXRlciB3aXRoIGVtcHR5IEJsb2I8L3RpdGxlPgot
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0IHNyYz0icmVzb3VyY2VzL2ZpbGUtd3JpdGVyLXV0aWxzLmpzIj48L3NjcmlwdD4KLTwv
aGVhZD4KLTxib2R5PgotPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgotPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+Ci08c2NyaXB0IHNyYz0icmVzb3VyY2VzL2ZpbGUtd3JpdGVyLWVtcHR5LWJs
b2IuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgotCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2ZpbGVzeXN0ZW0vZmlsZS13cml0ZXItZXZlbnRzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZS13cml0ZXItZXZlbnRzLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVt
L2ZpbGUtd3JpdGVyLWV2ZW50cy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMTAg
KzAsMCBAQAotVGVzdCB0aGF0IEZpbGVXcml0ZXIgcHJvZHVjZXMgcHJvcGVyIHByb2dyZXNzIGV2
ZW50cy4KLQotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgotCi1zdGFydGluZyB0ZXN0Ci1QQVNT
IFNhdyBhbGwgdGhlIHJpZ2h0IGV2ZW50cy4KLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKLQotVEVTVCBDT01QTEVURQotCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0v
ZmlsZS13cml0ZXItZXZlbnRzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9m
aWxlc3lzdGVtL2ZpbGUtd3JpdGVyLWV2ZW50cy5odG1sCShyZXZpc2lvbiAxNTY2OTEpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZS13cml0ZXItZXZlbnRzLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTEsMTUgKzAsMCBAQAotPCFET0NUWVBFIEhUTUw+Ci08aHRtbD4KLSA8aGVh
ZD4KLSAgICA8dGl0bGU+RmlsZSBXcml0ZXIgRXZlbnRzPC90aXRsZT4KLSAgICA8c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL2ZpbGUtd3JpdGVyLXV0aWxzLmpzIj48L3NjcmlwdD4KLSA8L2hlYWQ+
Ci0gPGJvZHk+Ci0gICAgPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgotICAgIDxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgotICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZmlsZS13cml0ZXIt
ZXZlbnRzLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci0gPC9ib2R5PgotPC9odG1sPgotCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZS13cml0ZXItZ2MtYmxvYi1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGUtd3JpdGVyLWdj
LWJsb2ItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2ZpbGVzeXN0ZW0vZmlsZS13cml0ZXItZ2MtYmxvYi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMTAgKzAsMCBAQAotVGVzdCB0aGF0IGEgYmxvYiB3b24ndCBnZXQgZ2FyYmFnZS1j
b2xsZWN0ZWQgd2hpbGUgYmVpbmcgd3JpdHRlbiBvdXQgYnkgYSBGaWxlV3JpdGVyLgotCi1PbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLXN0YXJ0aW5nIHRlc3QKLVBBU1MgU3VjY2Vzc2Z1bGx5
IHdyb3RlIGJsb2IuCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09N
UExFVEUKLQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGUtd3JpdGVyLWdj
LWJsb2IuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmls
ZS13cml0ZXItZ2MtYmxvYi5odG1sCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2ZpbGVzeXN0ZW0vZmlsZS13cml0ZXItZ2MtYmxvYi5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDE0ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MPgotPGh0bWw+Ci0gPGhlYWQ+Ci0gICAgPHRp
dGxlPkZpbGUgV3JpdGVyIEdDIEJsb2I8L3RpdGxlPgotICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvZmlsZS13cml0ZXItdXRpbHMuanMiPjwvc2NyaXB0PgotIDwvaGVhZD4KLSA8Ym9keT4K
LSAgICA8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Ci0gICAgPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Ci0gICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9maWxlLXdyaXRlci1nYy1ibG9iLmpz
Ij48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+Ci0gPC9ib2R5PgotPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9maWxlc3lzdGVtL2ZpbGUtd3JpdGVyLXRydW5jYXRlLWV4dGVuZC1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGUtd3JpdGVyLXRydW5j
YXRlLWV4dGVuZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3Rz
L2Zhc3QvZmlsZXN5c3RlbS9maWxlLXdyaXRlci10cnVuY2F0ZS1leHRlbmQtZXhwZWN0ZWQudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDEwICswLDAgQEAKLVRlc3Qgb2YgZXh0ZW5kaW5nIGEgZmls
ZSB1c2luZyB0cnVuY2F0ZSgpLgotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLXN0YXJ0
aW5nIHRlc3QKLVBBU1MgVHJ1bmNhdGUgZXh0ZW5zaW9uIHZlcmlmaWVkLgotUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvZmlsZXN5c3RlbS9maWxlLXdyaXRlci10cnVuY2F0ZS1leHRlbmQuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZS13cml0ZXItdHJ1bmNhdGUt
ZXh0ZW5kLmh0bWwJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5
c3RlbS9maWxlLXdyaXRlci10cnVuY2F0ZS1leHRlbmQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MSwxNiArMCwwIEBACi08IURPQ1RZUEUgSFRNTD4KLTxodG1sPgotIDxoZWFkPgotICAgIDx0aXRs
ZT5GaWxlIFdyaXRlciBUcnVuY2F0ZS1Uby1FeHRlbmQ8L3RpdGxlPgotICAgIDxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvZmlsZS13cml0ZXItdXRpbHMuanMiPjwvc2NyaXB0PgotIDwvaGVhZD4K
LSA8Ym9keT4KLSAgICA8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Ci0gICAgPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Ci0gICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9maWxlLXdyaXRlci10
cnVuY2F0ZS1leHRlbmQuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLSA8L2JvZHk+Ci08L2h0bWw+Ci0KLQpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGUtd3JpdGVyLXdyaXRlLW92ZXJs
YXBwZWQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5
c3RlbS9maWxlLXdyaXRlci13cml0ZS1vdmVybGFwcGVkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGUtd3JpdGVyLXdyaXRl
LW92ZXJsYXBwZWQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDEzICswLDAgQEAK
LVRlc3QgdXNpbmcgRmlsZVdyaXRlci5zZWVrIHRvIHdyaXRlIG92ZXJsYXBwaW5nIGV4aXN0aW5n
IGRhdGEgaW4gYSBmaWxlLgotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLXN0YXJ0aW5n
IHRlc3QKLVBBU1MgTmVnYXRpdmUgc2VlayB2YWxpZGF0ZWQuCi1QQVNTIFBvc2l0aXZlIHNlZWsg
dmFsaWRhdGVkLgotUEFTUyBOb25leHRlbmRpbmcgd3JpdGUgdmFsaWRhdGVkLgotUEFTUyBBbGwg
d3JpdGVzIHZlcmlmaWVkLgotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNU
IENPTVBMRVRFCi0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9maWxlLXdyaXRl
ci13cml0ZS1vdmVybGFwcGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9m
aWxlc3lzdGVtL2ZpbGUtd3JpdGVyLXdyaXRlLW92ZXJsYXBwZWQuaHRtbAkocmV2aXNpb24gMTU2
NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGUtd3JpdGVyLXdyaXRlLW92
ZXJsYXBwZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxNCArMCwwIEBACi08IURPQ1RZUEUg
SFRNTD4KLTxodG1sPgotIDxoZWFkPgotICAgIDx0aXRsZT5GaWxlIFdyaXRlciBXcml0ZSBPdmVy
bGFwcGVkPC90aXRsZT4KLSAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2ZpbGUtd3JpdGVy
LXV0aWxzLmpzIj48L3NjcmlwdD4KLSA8L2hlYWQ+Ci0gPGJvZHk+Ci0gICAgPGRpdiBpZD0iZGVz
Y3JpcHRpb24iPjwvZGl2PgotICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgotICAgIDxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvZmlsZS13cml0ZXItd3JpdGUtb3ZlcmxhcHBlZC5qcyI+PC9zY3Jp
cHQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgotIDwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5
c3RlbS9maWxlc3lzdGVtLW1pc3NpbmctYXJndW1lbnRzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZXN5c3RlbS1taXNzaW5nLWFyZ3Vt
ZW50cy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3Qv
ZmlsZXN5c3RlbS9maWxlc3lzdGVtLW1pc3NpbmctYXJndW1lbnRzLWV4cGVjdGVkLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtMSwxMiArMCwwIEBACi1UZXN0IGhvdyBmaWxlIHN5c3RlbSBtZXRob2Rz
IHJlYWN0IHRvIHRvbyBmZXcgYXJndW1lbnRzLgotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
Ci0KLQotUEFTUyB3ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbSgpIHRocmV3IGV4Y2VwdGlvbiBUeXBl
RXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzLgotUEFTUyB3ZWJraXRSZXF1ZXN0RmlsZVN5c3Rl
bShURU1QT1JBUlkpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1l
bnRzLgotUEFTUyB3ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lzdGVtVVJMKCkgdGhyZXcgZXhjZXB0
aW9uIFR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMuCi1QQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9m
aWxlc3lzdGVtL2ZpbGVzeXN0ZW0tbWlzc2luZy1hcmd1bWVudHMuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZXN5c3RlbS1taXNzaW5nLWFyZ3VtZW50
cy5odG1sCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0v
ZmlsZXN5c3RlbS1taXNzaW5nLWFyZ3VtZW50cy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE1
ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+
Ci08c2NyaXB0PgotZGVzY3JpcHRpb24oJ1Rlc3QgaG93IGZpbGUgc3lzdGVtIG1ldGhvZHMgcmVh
Y3QgdG8gdG9vIGZldyBhcmd1bWVudHMuJyk7Ci1zaG91bGRUaHJvdygid2Via2l0UmVxdWVzdEZp
bGVTeXN0ZW0oKSIpOwotc2hvdWxkVGhyb3coIndlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKFRFTVBP
UkFSWSkiKTsKLXNob3VsZFRocm93KCJ3ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lzdGVtVVJMKCki
KTsKLTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9m
aWxlc3lzdGVtL2ZpbGVzeXN0ZW0tbm8tY2FsbGJhY2stbnVsbC1wdHItY3Jhc2gtZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9maWxlc3lzdGVt
LW5vLWNhbGxiYWNrLW51bGwtcHRyLWNyYXNoLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTU2Njkx
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGVzeXN0ZW0tbm8tY2FsbGJhY2st
bnVsbC1wdHItY3Jhc2gtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xICswLDAgQEAK
LVBBU1MKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9maWxlc3lzdGVtLW5vLWNh
bGxiYWNrLW51bGwtcHRyLWNyYXNoLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9maWxlc3lzdGVtL2ZpbGVzeXN0ZW0tbm8tY2FsbGJhY2stbnVsbC1wdHItY3Jhc2guaHRtbAko
cmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGVzeXN0
ZW0tbm8tY2FsbGJhY2stbnVsbC1wdHItY3Jhc2guaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwx
OSArMCwwIEBACi08IS0tCi0gIGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9jaHJvbWl1bS9pc3N1
ZXMvZGV0YWlsP2lkPTYzMjA0Ci0gIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD00OTUzOQotLS0+Ci08ZGl2IGlkPSJsb2ciPkZBSUw8L2Rpdj4KLTxzY3JpcHQ+Ci0gIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotICBp
ZiAod2luZG93LndlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKSB7Ci0gICAgICAvLyBUaGVzZSB0d28g
Y2FsbHMgc2hvdWxkIHRocm93IGFuIGV4Y2VwdGlvbiBidXQgc2hvdWxkIE5PVCBjYXVzZSBhIE5V
TEwgcG9pbnRlciBjcmFzaDoKLSAgICAgIHdlYmtpdFJlc29sdmVMb2NhbEZpbGVTeXN0ZW1VUkwo
JycsIGZ1bmN0aW9uKCkge30pOwotICAgICAgdHJ5IHsKLSAgICAgICAgICB3ZWJraXRSZXF1ZXN0
RmlsZVN5c3RlbShURU1QT1JBUlksIDEwMCk7Ci0gICAgICB9Ci0gICAgICBjYXRjaChlKSB7Ci0g
ICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xvZycpLmlubmVySFRNTCA9ICJQQVNT
IjsKLSAgICAgIH0KLSAgfQotPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVz
eXN0ZW0vZmlsZXN5c3RlbS1yZWZlcmVuY2UtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9maWxlc3lzdGVtLXJlZmVyZW5jZS1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9maWxl
c3lzdGVtLXJlZmVyZW5jZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMTQgKzAs
MCBAQAotVGhpcyB0ZXN0cyBpZiBFbnRyaWVzIHJldHVybmVkIGJ5IGNhbGxiYWNrcyBrZWVwIGZ1
bmN0aW9uaW5nIGV2ZW4gYWZ0ZXIgd2UgbG9zZSBhIHJlZmVyZW5jZSB0byB0aGUgZmlsZXN5c3Rl
bSBpbiB0aGUgc2NyaXB0LgotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLQotUnVubmlu
ZyBydW5UZXN0MSgpLi4uCi1SdW5uaW5nIHJ1blRlc3QyKCkuLi4KLVJ1bm5pbmcgcnVuVGVzdDMo
KS4uLgotUnVubmluZyBydW5UZXN0NCgpLi4uCi1QQVNTIHRlc3RFbnRyaWVzLmxlbmd0aCBpcyA0
Ci1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGVzeXN0ZW0tcmVmZXJlbmNlLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGVzeXN0ZW0tcmVm
ZXJlbmNlLmh0bWwJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5
c3RlbS9maWxlc3lzdGVtLXJlZmVyZW5jZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEwICsw
LDAgQEAKLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZnMtdGVzdC11dGls
LmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0
cy9maWxlc3lzdGVtLXJlZmVyZW5jZS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+Cklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZXN5c3RlbS11bnNlcmlhbGl6YWJs
ZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVt
L2ZpbGVzeXN0ZW0tdW5zZXJpYWxpemFibGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNTY2OTEp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZXN5c3RlbS11bnNlcmlhbGl6YWJs
ZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMTAgKzAsMCBAQAotVGhpcyB0ZXN0
cyBpZiB0aGUgZmlsZXN5c3RlbSBvYmplY3QgaXMgdW5zZXJpYWxpemFibGUgYnkgZGVmYXVsdAot
Ci1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLQotRGF0YUNsb25lRXJyb3I6IERPTSBFeGNl
cHRpb24gMjUKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVU
RQotCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZXN5c3RlbS11bnNlcmlh
bGl6YWJsZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9m
aWxlc3lzdGVtLXVuc2VyaWFsaXphYmxlLmh0bWwJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91
dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9maWxlc3lzdGVtLXVuc2VyaWFsaXphYmxlLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTEsMTAgKzAsMCBAQAotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9
InJlc291cmNlcy9mcy10ZXN0LXV0aWwuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08
c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL2ZpbGVzeXN0ZW0tdW5zZXJpYWxpemFibGUuanMiPjwv
c2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lz
dGVtL2ZpbGVzeXN0ZW0tdXJpLW9yaWdpbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGVzeXN0ZW0tdXJpLW9yaWdpbi1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9maWxl
c3lzdGVtLXVyaS1vcmlnaW4tZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xICswLDAg
QEAKLVBBU1NFRDogb3JpZ2luIHdhcyBodHRwOi8vd3d3LndlYmtpdC5vcmc6ODA4MApJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGVzeXN0ZW0tdXJpLW9yaWdpbi5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9maWxlc3lzdGVtLXVyaS1v
cmlnaW4uaHRtbAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lz
dGVtL2ZpbGVzeXN0ZW0tdXJpLW9yaWdpbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEzICsw
LDAgQEAKLTxhIHN0eWxlPSJkaXNwbGF5Om5vbmUiIGhyZWY9ImZpbGVzeXN0ZW06aHR0cDovL3d3
dy53ZWJraXQub3JnOjgwODAvdGVtcG9yYXJ5L2EvYi9jL2ZpbGUudHh0Ij5mb288L2E+Ci08cD5U
aGlzIHRleHQgc2hvdWxkIG5vdCBiZSB2aXNpYmxlLiBJdCBzaG91bGQgYmUgb3ZlcndyaXR0ZW4g
YnkgdGhlIHJ1bm5pbmcgb2YgdGhlIHRlc3QuPC9wPgotPHNjcmlwdD4KLSAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotICAgIHZhciBl
eHBlY3RlZE9yaWdpbiA9ICdodHRwOi8vd3d3LndlYmtpdC5vcmc6ODA4MCc7Ci0gICAgdmFyIGFj
dHVhbE9yaWdpbiA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdhJylbMF0ub3JpZ2lu
OwotICAgIHZhciByZXN1bHRFbHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgncCcp
WzBdOwotICAgIGlmIChhY3R1YWxPcmlnaW4gPT0gZXhwZWN0ZWRPcmlnaW4pCi0gICAgICAgIHJl
c3VsdEVsdC5pbm5lclRleHQgPSAnUEFTU0VEOiBvcmlnaW4gd2FzICcgKyBleHBlY3RlZE9yaWdp
bjsKLSAgICBlbHNlCi0gICAgICAgIHJlc3VsdEVsdC5pbm5lclRleHQgPSAnRkFJTEVEOiBleHBl
Y3RlZCBvcmlnaW46ICcgKyBleHBlY3RlZE9yaWdpbiArICcgYnV0IGdvdDogJyArIGFjdHVhbE9y
aWdpbjsKLTwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZsYWdz
LXBhc3NpbmctZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmls
ZXN5c3RlbS9mbGFncy1wYXNzaW5nLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTU2NjkxKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZsYWdzLXBhc3NpbmctZXhwZWN0ZWQudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0xLDE3ICswLDAgQEAKLVBhc3NpbmcgRmxhZ3MgcGFyYW1ldGVyIHRl
c3RzLiBUaGlzIHRlc3QgY2hlY2tzIGlmIHBhc3NpbmcgRmxhZ3MgcGFyYW1ldGVycyB0byBEaXJl
Y3RvcnlFbnRyeS5nZXRGaWxlIGRvZXMgbm90IGNyYXNoIGFuZCB3b3JrcyBhcyBleHBlY3RlZC4K
LQotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywg
Zm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgotCi0KLSogUGFzc2luZyBKU09OIEZsYWdzIG9i
amVjdC4KLSogUGFzc2luZyBKU09OIEZsYWdzIG9iamVjdCAod2l0aCBleGNsdXNpdmU9dHJ1ZSku
Ci0qIFBhc3NpbmcgbnVsbCBhcyBhIGZsYWdzIHBhcmFtZXRlci4KLSogUGFzc2luZyBhIG51bWJl
ciBhcyBhIGZsYWdzIHBhcmFtZXRlci4KLUNhdWdodCBleGNlcHRpb246IFR5cGVFcnJvcjogTm90
IGFuIG9iamVjdC4KLUZpbmlzaGVkIHJ1bm5pbmcgdGVzdHMuCi1QQVNTIGV4cGVjdGVkQ2FsbGJh
Y2tzQ291bnQgaXMgMQotUEFTUyB1bmV4cGVjdGVkQ2FsbGJhY2tzQ291bnQgaXMgMAotUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9mbGFncy1wYXNzaW5nLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZsYWdzLXBhc3NpbmcuaHRtbAkocmV2aXNpb24g
MTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZsYWdzLXBhc3NpbmcuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMSwxMCArMCwwIEBACi08aHRtbD4KLTxoZWFkPgotPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0
IHNyYz0icmVzb3VyY2VzL2ZzLXRlc3QtdXRpbC5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9k
eT4KLTxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvZmxhZ3MtcGFzc2luZy5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vaW5w
dXQtYWNjZXNzLWVudHJpZXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvZmlsZXN5c3RlbS9pbnB1dC1hY2Nlc3MtZW50cmllcy1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9pbnB1dC1hY2Nlc3Mt
ZW50cmllcy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMTAgKzAsMCBAQAotVGVz
dHMgYWNjZXNzaW5nIHdlYmtpdEVudHJpZXMgZG9lcyBub3QgY3Jhc2ggd2hlbiBpbnB1dCB0eXBl
IGlzIG5vdCBmaWxlCi0KLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQotCi1QQVNTIGlucHV0
LndlYmtpdEVudHJpZXMubGVuZ3RoIGlzIDAKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKLQotVEVTVCBDT01QTEVURQotCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0v
aW5wdXQtYWNjZXNzLWVudHJpZXMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2ZpbGVzeXN0ZW0vaW5wdXQtYWNjZXNzLWVudHJpZXMuaHRtbAkocmV2aXNpb24gMTU2NjkxKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2lucHV0LWFjY2Vzcy1lbnRyaWVzLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMTUgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4K
LTxib2R5PgotPGlucHV0IG5hbWU9ImlucHV0IiBpZD0iaW5wdXQiPjwvaW5wdXQ+Ci08c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+
Ci1kZXNjcmlwdGlvbignVGVzdHMgYWNjZXNzaW5nIHdlYmtpdEVudHJpZXMgZG9lcyBub3QgY3Jh
c2ggd2hlbiBpbnB1dCB0eXBlIGlzIG5vdCBmaWxlJyk7Ci0KLXZhciBpbnB1dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdpbnB1dCcpOwotc2hvdWxkRXZhbHVhdGVUbygnaW5wdXQud2Via2l0
RW50cmllcy5sZW5ndGgnLCAwKTsKLQotPC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vbm90LWVub3VnaC1hcmd1bWVudHMtZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9ub3QtZW5v
dWdoLWFyZ3VtZW50cy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRl
c3RzL2Zhc3QvZmlsZXN5c3RlbS9ub3QtZW5vdWdoLWFyZ3VtZW50cy1leHBlY3RlZC50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTEsMjQgKzAsMCBAQAotVGhpcyB0ZXN0IHRyaWVzIGNhbGxpbmcgdmFy
aW91cyBmaWxlc3lzdGVtIGZ1bmN0aW9ucyB3aXRoIHRvbyBmZXcgYXJndW1lbnRzLgotCi1PbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLQotUEFTUyB3ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lz
dGVtVVJMKCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMu
Ci1QQVNTIHdlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJv
cjogTm90IGVub3VnaCBhcmd1bWVudHMuCi1QQVNTIHdlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKFBF
UlNJU1RFTlQpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRz
LgotUEFTUyB3ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbShQRVJTSVNURU5ULCAxMDApIHRocmV3IGV4
Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzLgotU3VjY2Vzc2Z1bGx5IG9i
dGFpbmVkIFBlcnNpc3RlbnQgRmlsZVN5c3RlbTpmaWxlX18wOlRlbXBvcmFyeQotUEFTUyBmaWxl
U3lzdGVtLnJvb3QucmVtb3ZlUmVjdXJzaXZlbHkoKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9y
OiBOb3QgZW5vdWdoIGFyZ3VtZW50cy4KLVBBU1MgZmlsZVN5c3RlbS5yb290Lm1vdmVUbygpIHRo
cmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzLgotUEFTUyBmaWxl
U3lzdGVtLnJvb3QuY29weVRvKCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90IGVub3Vn
aCBhcmd1bWVudHMuCi1QQVNTIHJlYWRlci5yZWFkRW50cmllcygpIHRocmV3IGV4Y2VwdGlvbiBU
eXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzLgotUEFTUyBlbnRyaWVzLml0ZW0oKSB0aHJl
dyBleGNlcHRpb24gVHlwZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cy4KLVBBU1MgZW50cnku
Y3JlYXRlV3JpdGVyKCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1
bWVudHMuCi1QQVNTIGVudHJ5LmZpbGUoKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBOb3Qg
ZW5vdWdoIGFyZ3VtZW50cy4KLVBBU1Mgd3JpdGVyLndyaXRlKCkgdGhyZXcgZXhjZXB0aW9uIFR5
cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMuCi1QQVNTIHdyaXRlci5zZWVrKCkgdGhyZXcg
ZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMuCi1QQVNTIHdyaXRlci50
cnVuY2F0ZSgpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRz
LgotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9ub3QtZW5vdWdoLWFyZ3VtZW50cy5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9ub3QtZW5vdWdoLWFy
Z3VtZW50cy5odG1sCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVz
eXN0ZW0vbm90LWVub3VnaC1hcmd1bWVudHMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw2MSAr
MCwwIEBACi08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0icmVzb3VyY2VzL2ZzLXRlc3QtdXRp
bC5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQ+Ci1kZXNjcmlwdGlvbign
VGhpcyB0ZXN0IHRyaWVzIGNhbGxpbmcgdmFyaW91cyBmaWxlc3lzdGVtIGZ1bmN0aW9ucyB3aXRo
IHRvbyBmZXcgYXJndW1lbnRzLicpOwotCi1mdW5jdGlvbiBlcnJvckNhbGxiYWNrKGVycm9yKQot
ewotICAgIGRlYnVnKCJFcnJvciBvY2N1cmVkOiIgKyBlcnJvci5jb2RlKTsKLSAgICBmaW5pc2hK
U1Rlc3QoKTsKLX0KLQotZnVuY3Rpb24gc3VjY2Vzc0NhbGxiYWNrKGZzKQotewotICAgIGZpbGVT
eXN0ZW0gPSBmczsKLSAgICBkZWJ1ZygiU3VjY2Vzc2Z1bGx5IG9idGFpbmVkIFBlcnNpc3RlbnQg
RmlsZVN5c3RlbToiICsgZmlsZVN5c3RlbS5uYW1lKTsKLQotICAgIHNob3VsZFRocm93KCJmaWxl
U3lzdGVtLnJvb3QucmVtb3ZlUmVjdXJzaXZlbHkoKSIpOwotICAgIHNob3VsZFRocm93KCJmaWxl
U3lzdGVtLnJvb3QubW92ZVRvKCkiKTsKLSAgICBzaG91bGRUaHJvdygiZmlsZVN5c3RlbS5yb290
LmNvcHlUbygpIik7Ci0gICAgcmVhZGVyID0gZmlsZVN5c3RlbS5yb290LmNyZWF0ZVJlYWRlcigp
OwotICAgIHNob3VsZFRocm93KCJyZWFkZXIucmVhZEVudHJpZXMoKSIpOwotCi0gICAgcmVhZGVy
LnJlYWRFbnRyaWVzKGZ1bmN0aW9uKGVudHJpZXMpIHsKLSAgICAgICAgd2luZG93LmVudHJpZXMg
PSBlbnRyaWVzOwotICAgICAgICBzaG91bGRUaHJvdygiZW50cmllcy5pdGVtKCkiKTsKLQotICAg
ICAgICBmaWxlU3lzdGVtLnJvb3QuZ2V0RmlsZSgiL3Rlc3QiLCB7IGNyZWF0ZTogdHJ1ZSB9LCBm
dW5jdGlvbihlbnRyeSkgewotICAgICAgICAgICAgd2luZG93LmVudHJ5ID0gZW50cnk7Ci0gICAg
ICAgICAgICBzaG91bGRUaHJvdygiZW50cnkuY3JlYXRlV3JpdGVyKCkiKTsKLSAgICAgICAgICAg
IHNob3VsZFRocm93KCJlbnRyeS5maWxlKCkiKTsKLQotICAgICAgICAgICAgZW50cnkuY3JlYXRl
V3JpdGVyKGZ1bmN0aW9uKHdyaXRlcikgewotICAgICAgICAgICAgICAgIHdpbmRvdy53cml0ZXIg
PSB3cml0ZXI7Ci0KLSAgICAgICAgICAgICAgICBzaG91bGRUaHJvdygid3JpdGVyLndyaXRlKCki
KTsKLSAgICAgICAgICAgICAgICBzaG91bGRUaHJvdygid3JpdGVyLnNlZWsoKSIpOwotICAgICAg
ICAgICAgICAgIHNob3VsZFRocm93KCJ3cml0ZXIudHJ1bmNhdGUoKSIpOwotCi0gICAgICAgICAg
ICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfSk7Ci0gICAg
fSk7Ci19Ci0KLWlmICh3aW5kb3cud2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0pIHsKLSAgICBzaG91
bGRUaHJvdygid2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVVSTCgpIik7Ci0gICAgc2hvdWxk
VGhyb3coIndlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKCkiKTsKLSAgICBzaG91bGRUaHJvdygid2Vi
a2l0UmVxdWVzdEZpbGVTeXN0ZW0oUEVSU0lTVEVOVCkiKTsKLSAgICBzaG91bGRUaHJvdygid2Vi
a2l0UmVxdWVzdEZpbGVTeXN0ZW0oUEVSU0lTVEVOVCwgMTAwKSIpOwotICAgIHdlYmtpdFJlcXVl
c3RGaWxlU3lzdGVtKHdpbmRvdy5URU1QT1JBUlksIDEwMCwgc3VjY2Vzc0NhbGxiYWNrLCBlcnJv
ckNhbGxiYWNrKTsKLSAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Ci19IGVsc2UKLSAg
ICBkZWJ1ZygiVGhpcyB0ZXN0IHJlcXVpcmVzIEZpbGVTeXN0ZW0gQVBJIHN1cHBvcnQuIik7Ci08
L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5
c3RlbS9vcC1jb3B5LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2ZpbGVzeXN0ZW0vb3AtY29weS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE1NjY5MSkKKysrIExh
eW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9vcC1jb3B5LWV4cGVjdGVkLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtMSw4OCArMCwwIEBACi0qIFJ1bm5pbmc6IENvcHlGaWxlU2ltcGxlCi1QQVNTIFN1
Y2NlZWRlZDogIi9hL2IiLmNvcHlUbygiL2EiLCAiYyIpCi1QQVNTIFZlcmlmaWVkIGVudHJ5OiBF
TlRSWSB7cGF0aDovYSBuYW1lOmEgdHlwZTpESVJFQ1RPUll9Ci1QQVNTIFZlcmlmaWVkIGVudHJ5
OiBFTlRSWSB7cGF0aDovYS9iIG5hbWU6YiB0eXBlOkZJTEV9Ci1QQVNTIFZlcmlmaWVkIGVudHJ5
OiBFTlRSWSB7cGF0aDovYS9jIG5hbWU6YyB0eXBlOkZJTEV9Ci0qIFJ1bm5pbmc6IENvcHlEaXJl
Y3RvcnlTaW1wbGUKLVBBU1MgU3VjY2VlZGVkOiAiL2EvYiIuY29weVRvKCIvYSIsICJjIikKLVBB
U1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9hIG5hbWU6YSB0eXBlOkRJUkVDVE9SWX0K
LVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9hL2IgbmFtZTpiIHR5cGU6RElSRUNU
T1JZfQotUEFTUyBWZXJpZmllZCBlbnRyeTogRU5UUlkge3BhdGg6L2EvYyBuYW1lOmMgdHlwZTpE
SVJFQ1RPUll9Ci0qIFJ1bm5pbmc6IENvcHlGaWxlVG9EaWZmZXJlbnREaXJlY3RvcnkKLVBBU1Mg
U3VjY2VlZGVkOiAiL2EvYiIuY29weVRvKCIvYyIsICJkIikKLVBBU1MgVmVyaWZpZWQgZW50cnk6
IEVOVFJZIHtwYXRoOi9hIG5hbWU6YSB0eXBlOkRJUkVDVE9SWX0KLVBBU1MgVmVyaWZpZWQgZW50
cnk6IEVOVFJZIHtwYXRoOi9hL2IgbmFtZTpiIHR5cGU6RklMRX0KLVBBU1MgVmVyaWZpZWQgZW50
cnk6IEVOVFJZIHtwYXRoOi9jL2QgbmFtZTpkIHR5cGU6RklMRX0KLSogUnVubmluZzogQ29weUZp
bGVXaXRoRW1wdHlOYW1lCi1QQVNTIFN1Y2NlZWRlZDogIi9hL2IiLmNvcHlUbygiL2MiLCAibnVs
bCIpCi1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYSBuYW1lOmEgdHlwZTpESVJF
Q1RPUll9Ci1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYS9iIG5hbWU6YiB0eXBl
OkZJTEV9Ci1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYy9iIG5hbWU6YiB0eXBl
OkZJTEV9Ci0qIFJ1bm5pbmc6IENvcHlGaWxlV2l0aEVtcHR5TmFtZVRvU2FtZURpcmVjdG9yeQot
UEFTUyB0aGlzLmV4cGVjdGVkRXJyb3JDb2RlICsgIiIgaXMgIjkiCi1QQVNTIFZlcmlmaWVkIGVu
dHJ5OiBFTlRSWSB7cGF0aDovYSBuYW1lOmEgdHlwZTpESVJFQ1RPUll9Ci1QQVNTIFZlcmlmaWVk
IGVudHJ5OiBFTlRSWSB7cGF0aDovYS9iIG5hbWU6YiB0eXBlOkZJTEV9Ci0qIFJ1bm5pbmc6IENv
cHlGaWxlV2l0aFNhbWVOYW1lCi1QQVNTIHRoaXMuZXhwZWN0ZWRFcnJvckNvZGUgKyAiIiBpcyAi
OSIKLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9hIG5hbWU6YSB0eXBlOkRJUkVD
VE9SWX0KLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9hL2IgbmFtZTpiIHR5cGU6
RklMRX0KLSogUnVubmluZzogQ29weUZvck5vbkV4aXN0ZW50RW50cnkKLVBBU1MgU3VjY2VlZGVk
OiAiL2EvYiIucmVtb3ZlKCkKLVBBU1MgdGhpcy5leHBlY3RlZEVycm9yQ29kZSArICIiIGlzICIx
IgotUEFTUyBWZXJpZmllZCBlbnRyeTogRU5UUlkge3BhdGg6L2EgbmFtZTphIHR5cGU6RElSRUNU
T1JZfQotUEFTUyBWZXJpZmllZCBlbnRyeTogRU5UUlkge3BhdGg6L2MgbmFtZTpjIHR5cGU6RElS
RUNUT1JZfQotKiBSdW5uaW5nOiBDb3B5RW50cnlUb05vbkV4aXN0ZW50RGlyZWN0b3J5Ci1QQVNT
IFN1Y2NlZWRlZDogIi9jIi5yZW1vdmUoKQotUEFTUyB0aGlzLmV4cGVjdGVkRXJyb3JDb2RlICsg
IiIgaXMgIjEiCi1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYSBuYW1lOmEgdHlw
ZTpESVJFQ1RPUll9Ci1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYS9iIG5hbWU6
YiB0eXBlOkZJTEV9Ci0qIFJ1bm5pbmc6IENvcHlFbnRyeVRvSXRzQ2hpbGQKLVBBU1MgdGhpcy5l
eHBlY3RlZEVycm9yQ29kZSArICIiIGlzICI5IgotUEFTUyB0aGlzLmV4cGVjdGVkRXJyb3JDb2Rl
ICsgIiIgaXMgIjkiCi1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYSBuYW1lOmEg
dHlwZTpESVJFQ1RPUll9Ci1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYS9iIG5h
bWU6YiB0eXBlOkRJUkVDVE9SWX0KLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9h
L2IvYyBuYW1lOmMgdHlwZTpESVJFQ1RPUll9Ci0qIFJ1bm5pbmc6IENvcHlSZWN1cnNpdmUKLVBB
U1MgU3VjY2VlZGVkOiAiL2EiLmNvcHlUbygiL2IiLCAiYSIpCi1QQVNTIFZlcmlmaWVkIGVudHJ5
OiBFTlRSWSB7cGF0aDovYSBuYW1lOmEgdHlwZTpESVJFQ1RPUll9Ci1QQVNTIFZlcmlmaWVkIGVu
dHJ5OiBFTlRSWSB7cGF0aDovYS9iIG5hbWU6YiB0eXBlOkRJUkVDVE9SWX0KLVBBU1MgVmVyaWZp
ZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9hL2IvYyBuYW1lOmMgdHlwZTpGSUxFfQotUEFTUyBWZXJp
ZmllZCBlbnRyeTogRU5UUlkge3BhdGg6L2EvYi9kIG5hbWU6ZCB0eXBlOkZJTEV9Ci1QQVNTIFZl
cmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYi9hIG5hbWU6YSB0eXBlOkRJUkVDVE9SWX0KLVBB
U1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9iL2EvYiBuYW1lOmIgdHlwZTpESVJFQ1RP
Ull9Ci1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYi9hL2IvYyBuYW1lOmMgdHlw
ZTpGSUxFfQotUEFTUyBWZXJpZmllZCBlbnRyeTogRU5UUlkge3BhdGg6L2IvYS9iL2QgbmFtZTpk
IHR5cGU6RklMRX0KLSogUnVubmluZzogT3ZlcndyaXRpbmdDb3B5RmlsZVRvRmlsZQotUEFTUyBT
dWNjZWVkZWQ6ICIvYSIuY29weVRvKCIvIiwgImIiKQotUEFTUyBWZXJpZmllZCBlbnRyeTogRU5U
Ulkge3BhdGg6L2EgbmFtZTphIHR5cGU6RklMRX0KLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZ
IHtwYXRoOi9iIG5hbWU6YiB0eXBlOkZJTEV9Ci0qIFJ1bm5pbmc6IE92ZXJ3cml0aW5nQ29weURp
cmVjdG9yeVRvRW1wdHlEaXJlY3RvcnkKLVBBU1MgU3VjY2VlZGVkOiAiL2EiLmNvcHlUbygiLyIs
ICJjIikKLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9hIG5hbWU6YSB0eXBlOkRJ
UkVDVE9SWX0KLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9hL2IgbmFtZTpiIHR5
cGU6RklMRX0KLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9jIG5hbWU6YyB0eXBl
OkRJUkVDVE9SWX0KLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9jL2IgbmFtZTpi
IHR5cGU6RklMRX0KLSogUnVubmluZzogT3ZlcndyaXRpbmdDb3B5RmlsZVRvRGlyZWN0b3J5Ci1Q
QVNTIHRoaXMuZXhwZWN0ZWRFcnJvckNvZGUgKyAiIiBpcyAiOSIKLVBBU1MgVmVyaWZpZWQgZW50
cnk6IEVOVFJZIHtwYXRoOi9hIG5hbWU6YSB0eXBlOkZJTEV9Ci1QQVNTIFZlcmlmaWVkIGVudHJ5
OiBFTlRSWSB7cGF0aDovYiBuYW1lOmIgdHlwZTpESVJFQ1RPUll9Ci0qIFJ1bm5pbmc6IE92ZXJ3
cml0aW5nQ29weURpcmVjdG9yeVRvRmlsZQotUEFTUyB0aGlzLmV4cGVjdGVkRXJyb3JDb2RlICsg
IiIgaXMgIjkiCi1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYSBuYW1lOmEgdHlw
ZTpESVJFQ1RPUll9Ci1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYiBuYW1lOmIg
dHlwZTpGSUxFfQotKiBSdW5uaW5nOiBPdmVyd3JpdGluZ0NvcHlGaWxlVG9Ob25lbXB0eURpcmVj
dG9yeQotUEFTUyB0aGlzLmV4cGVjdGVkRXJyb3JDb2RlICsgIiIgaXMgIjkiCi1QQVNTIFZlcmlm
aWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYSBuYW1lOmEgdHlwZTpGSUxFfQotUEFTUyBWZXJpZmll
ZCBlbnRyeTogRU5UUlkge3BhdGg6L2IgbmFtZTpiIHR5cGU6RElSRUNUT1JZfQotUEFTUyBWZXJp
ZmllZCBlbnRyeTogRU5UUlkge3BhdGg6L2IvYyBuYW1lOmMgdHlwZTpGSUxFfQotKiBSdW5uaW5n
OiBPdmVyd3JpdGluZ0NvcHlEaXJlY3RvcnlUb05vbmVtcHR5RGlyZWN0b3J5Ci1QQVNTIHRoaXMu
ZXhwZWN0ZWRFcnJvckNvZGUgKyAiIiBpcyAiOSIKLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZ
IHtwYXRoOi9hIG5hbWU6YSB0eXBlOkRJUkVDVE9SWX0KLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVO
VFJZIHtwYXRoOi9hL2IgbmFtZTpiIHR5cGU6RklMRX0KLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVO
VFJZIHtwYXRoOi9jIG5hbWU6YyB0eXBlOkRJUkVDVE9SWX0KLVBBU1MgVmVyaWZpZWQgZW50cnk6
IEVOVFJZIHtwYXRoOi9jL2QgbmFtZTpkIHR5cGU6RklMRX0KLUZpbmlzaGVkIHJ1bm5pbmcgdGVz
dHMuCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL29wLWNvcHkuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vb3AtY29weS5odG1sCShyZXZpc2lvbiAx
NTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vb3AtY29weS5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDEyICswLDAgQEAKLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvZnMtdGVzdC11dGlsLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+Ci08c2NyaXB0IHNyYz0icmVzb3VyY2VzL29wLWNvcHkuanMi
Pjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InJlc291cmNlcy9vcC10ZXN0cy1oZWxwZXIuanMiPjwv
c2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lz
dGVtL29wLWdldC1lbnRyeS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9maWxlc3lzdGVtL29wLWdldC1lbnRyeS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE1NjY5
MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9vcC1nZXQtZW50cnktZXhwZWN0ZWQu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDkxICswLDAgQEAKLSogUnVubmluZzogQ3JlYXRlU2lt
cGxlCi1QQVNTIFN1Y2NlZWRlZDogIi8iLmdldERpcmVjdG9yeSgiYSIpCi1QQVNTIFN1Y2NlZWRl
ZDogIi8iLmdldEZpbGUoImIiKQotUEFTUyBWZXJpZmllZCBlbnRyeTogRU5UUlkge3BhdGg6L2Eg
bmFtZTphIHR5cGU6RElSRUNUT1JZfQotUEFTUyBWZXJpZmllZCBlbnRyeTogRU5UUlkge3BhdGg6
L2IgbmFtZTpiIHR5cGU6RklMRX0KLSogUnVubmluZzogQ3JlYXRlTmVzdGVkCi1QQVNTIFN1Y2Nl
ZWRlZDogIi8iLmdldERpcmVjdG9yeSgiYSIpCi1QQVNTIFN1Y2NlZWRlZDogIi9hIi5nZXREaXJl
Y3RvcnkoImIiKQotUEFTUyBTdWNjZWVkZWQ6ICIvYS9iIi5nZXREaXJlY3RvcnkoImMiKQotUEFT
UyBTdWNjZWVkZWQ6ICIvYS9iL2MiLmdldERpcmVjdG9yeSgiZCIpCi1QQVNTIFN1Y2NlZWRlZDog
Ii9hL2IvYy9kIi5nZXRGaWxlKCJlIikKLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRo
Oi9hL2IvYy9kL2UgbmFtZTplIHR5cGU6RklMRX0KLSogUnVubmluZzogQ3JlYXRlTmVzdGVkV2l0
aEFic29sdXRlUGF0aAotUEFTUyBTdWNjZWVkZWQ6ICIvZHVtbXkiLmdldERpcmVjdG9yeSgiL2Ei
KQotUEFTUyBTdWNjZWVkZWQ6ICIvZHVtbXkiLmdldERpcmVjdG9yeSgiL2EvYiIpCi1QQVNTIFN1
Y2NlZWRlZDogIi9kdW1teSIuZ2V0RGlyZWN0b3J5KCIvYS9iL2MiKQotUEFTUyBTdWNjZWVkZWQ6
ICIvZHVtbXkiLmdldERpcmVjdG9yeSgiL2EvYi9jL2QiKQotUEFTUyBTdWNjZWVkZWQ6ICIvZHVt
bXkiLmdldEZpbGUoIi9hL2IvYy9kL2UiKQotUEFTUyBWZXJpZmllZCBlbnRyeTogRU5UUlkge3Bh
dGg6L2R1bW15IG5hbWU6ZHVtbXkgdHlwZTpESVJFQ1RPUll9Ci1QQVNTIFZlcmlmaWVkIGVudHJ5
OiBFTlRSWSB7cGF0aDovYS9iL2MvZC9lIG5hbWU6ZSB0eXBlOkZJTEV9Ci0qIFJ1bm5pbmc6IENy
ZWF0ZU5lc3RlZFdpdGhSZWxhdGl2ZVBhdGgKLVBBU1MgU3VjY2VlZGVkOiAiL2EiLmdldERpcmVj
dG9yeSgiLi9iIikKLVBBU1MgU3VjY2VlZGVkOiAiL2EiLmdldERpcmVjdG9yeSgiLi8uLi4iKQot
UEFTUyBTdWNjZWVkZWQ6ICIvYSIuZ2V0RGlyZWN0b3J5KCIuLi9iIikKLVBBU1MgU3VjY2VlZGVk
OiAiL2EiLmdldERpcmVjdG9yeSgiLi4vLi4vYi9jIikKLVBBU1MgU3VjY2VlZGVkOiAiL2EiLmdl
dERpcmVjdG9yeSgiL2EvLi4vLi4vZCIpCi1QQVNTIFN1Y2NlZWRlZDogIi9hIi5nZXREaXJlY3Rv
cnkoIi9hLy4uLy4uL2IvLi9jLy4uLy4uLy4uLy4uLy4uL2UiKQotUEFTUyBTdWNjZWVkZWQ6ICIv
YSIuZ2V0RGlyZWN0b3J5KCIuLi4vZiIpCi1QQVNTIHRoaXMuZXhwZWN0ZWRFcnJvckNvZGUgKyAi
IiBpcyAiMSIKLVBBU1MgU3VjY2VlZGVkOiAiL2EiLmdldEZpbGUoIi4vYi50eHQiKQotUEFTUyBT
dWNjZWVkZWQ6ICIvYSIuZ2V0RmlsZSgiLi4vYi50eHQiKQotUEFTUyBTdWNjZWVkZWQ6ICIvYSIu
Z2V0RmlsZSgiLi4vLi4vYi9jLnR4dCIpCi1QQVNTIFN1Y2NlZWRlZDogIi9hIi5nZXRGaWxlKCIv
YS8uLi8uLi9kLnR4dCIpCi1QQVNTIFN1Y2NlZWRlZDogIi9hIi5nZXRGaWxlKCIvYS8uLi8uLi9i
Ly4vYy8uLi8uLi8uLi8uLi8uLi9lLnR4dCIpCi1QQVNTIFN1Y2NlZWRlZDogIi9hIi5nZXRGaWxl
KCIuLi4vZi50eHQiKQotUEFTUyB0aGlzLmV4cGVjdGVkRXJyb3JDb2RlICsgIiIgaXMgIjEiCi1Q
QVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYSBuYW1lOmEgdHlwZTpESVJFQ1RPUll9
Ci1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYS9iIG5hbWU6YiB0eXBlOkRJUkVD
VE9SWX0KLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9iIG5hbWU6YiB0eXBlOkRJ
UkVDVE9SWX0KLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9iL2MgbmFtZTpjIHR5
cGU6RElSRUNUT1JZfQotUEFTUyBWZXJpZmllZCBlbnRyeTogRU5UUlkge3BhdGg6L2QgbmFtZTpk
IHR5cGU6RElSRUNUT1JZfQotUEFTUyBWZXJpZmllZCBlbnRyeTogRU5UUlkge3BhdGg6L2UgbmFt
ZTplIHR5cGU6RElSRUNUT1JZfQotUEFTUyBWZXJpZmllZCBlbnRyeSBkb2VzIE5PVCBleGlzdDog
L2YKLVBBU1MgVmVyaWZpZWQgZW50cnkgZG9lcyBOT1QgZXhpc3Q6IC9hL2YKLVBBU1MgVmVyaWZp
ZWQgZW50cnkgZG9lcyBOT1QgZXhpc3Q6IC9nCi1QQVNTIFZlcmlmaWVkIGVudHJ5IGRvZXMgTk9U
IGV4aXN0OiAvYS9nCi1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYS9iLnR4dCBu
YW1lOmIudHh0IHR5cGU6RklMRX0KLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9i
LnR4dCBuYW1lOmIudHh0IHR5cGU6RklMRX0KLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtw
YXRoOi9iL2MudHh0IG5hbWU6Yy50eHQgdHlwZTpGSUxFfQotUEFTUyBWZXJpZmllZCBlbnRyeTog
RU5UUlkge3BhdGg6L2QudHh0IG5hbWU6ZC50eHQgdHlwZTpGSUxFfQotUEFTUyBWZXJpZmllZCBl
bnRyeTogRU5UUlkge3BhdGg6L2UudHh0IG5hbWU6ZS50eHQgdHlwZTpGSUxFfQotUEFTUyBWZXJp
ZmllZCBlbnRyeSBkb2VzIE5PVCBleGlzdDogL2YudHh0Ci1QQVNTIFZlcmlmaWVkIGVudHJ5IGRv
ZXMgTk9UIGV4aXN0OiAvYS9mLnR4dAotUEFTUyBWZXJpZmllZCBlbnRyeSBkb2VzIE5PVCBleGlz
dDogL2cudHh0Ci1QQVNTIFZlcmlmaWVkIGVudHJ5IGRvZXMgTk9UIGV4aXN0OiAvYS9nLnR4dAot
KiBSdW5uaW5nOiBHZXRFeGlzdGluZ0VudHJ5Ci1QQVNTIFN1Y2NlZWRlZDogIi8iLmdldERpcmVj
dG9yeSgiYSIpCi1QQVNTIFN1Y2NlZWRlZDogIi8iLmdldEZpbGUoImIiKQotUEFTUyBTdWNjZWVk
ZWQ6ICIvIi5nZXREaXJlY3RvcnkoImEiKQotUEFTUyB0aGlzLmVudmlyb25tZW50W3RoaXMuZW50
cnkuZnVsbFBhdGhdLmZ1bGxQYXRoIGlzICIvYSIKLVBBU1MgdGhpcy5lbnZpcm9ubWVudFt0aGlz
LmVudHJ5LmZ1bGxQYXRoXS5pc0ZpbGUgKyAiIiBpcyAiZmFsc2UiCi1QQVNTIHRoaXMuZW52aXJv
bm1lbnRbdGhpcy5lbnRyeS5mdWxsUGF0aF0uaXNEaXJlY3RvcnkgKyAiIiBpcyAidHJ1ZSIKLVBB
U1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiYiIpCi1QQVNTIHRoaXMuZW52aXJvbm1lbnRbdGhp
cy5lbnRyeS5mdWxsUGF0aF0uZnVsbFBhdGggaXMgIi9iIgotUEFTUyB0aGlzLmVudmlyb25tZW50
W3RoaXMuZW50cnkuZnVsbFBhdGhdLmlzRmlsZSArICIiIGlzICJ0cnVlIgotUEFTUyB0aGlzLmVu
dmlyb25tZW50W3RoaXMuZW50cnkuZnVsbFBhdGhdLmlzRGlyZWN0b3J5ICsgIiIgaXMgImZhbHNl
IgotUEFTUyBWZXJpZmllZCBlbnRyeTogRU5UUlkge3BhdGg6L2EgbmFtZTphIHR5cGU6RElSRUNU
T1JZfQotUEFTUyBWZXJpZmllZCBlbnRyeTogRU5UUlkge3BhdGg6L2IgbmFtZTpiIHR5cGU6RklM
RX0KLSogUnVubmluZzogR2V0Tm9uRXhpc3RlbnQKLVBBU1MgdGhpcy5leHBlY3RlZEVycm9yQ29k
ZSArICIiIGlzICIxIgotUEFTUyB0aGlzLmV4cGVjdGVkRXJyb3JDb2RlICsgIiIgaXMgIjEiCi1Q
QVNTIHRoaXMuZXhwZWN0ZWRFcnJvckNvZGUgKyAiIiBpcyAiMSIKLVBBU1MgdGhpcy5leHBlY3Rl
ZEVycm9yQ29kZSArICIiIGlzICIxIgotKiBSdW5uaW5nOiBHZXRGaWxlRm9yRGlyZWN0b3J5Ci1Q
QVNTIHRoaXMuZXhwZWN0ZWRFcnJvckNvZGUgKyAiIiBpcyAiMTEiCi1QQVNTIHRoaXMuZXhwZWN0
ZWRFcnJvckNvZGUgKyAiIiBpcyAiMTEiCi1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0
aDovYSBuYW1lOmEgdHlwZTpESVJFQ1RPUll9Ci0qIFJ1bm5pbmc6IEdldERpcmVjdG9yeUZvckZp
bGUKLVBBU1MgdGhpcy5leHBlY3RlZEVycm9yQ29kZSArICIiIGlzICIxMSIKLVBBU1MgdGhpcy5l
eHBlY3RlZEVycm9yQ29kZSArICIiIGlzICIxMSIKLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZ
IHtwYXRoOi9hIG5hbWU6YSB0eXBlOkZJTEV9Ci0qIFJ1bm5pbmc6IENyZWF0ZVdpdGhFeGNsdXNp
dmUKLVBBU1MgdGhpcy5leHBlY3RlZEVycm9yQ29kZSArICIiIGlzICI5IgotUEFTUyB0aGlzLmV4
cGVjdGVkRXJyb3JDb2RlICsgIiIgaXMgIjkiCi1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7
cGF0aDovYSBuYW1lOmEgdHlwZTpESVJFQ1RPUll9Ci1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRS
WSB7cGF0aDovYiBuYW1lOmIgdHlwZTpGSUxFfQotRmluaXNoZWQgcnVubmluZyB0ZXN0cy4KLVBB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vb3AtZ2V0LWVudHJ5Lmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL29wLWdldC1lbnRyeS5odG1sCShyZXZpc2lv
biAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vb3AtZ2V0LWVudHJ5Lmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTIgKzAsMCBAQAotPGh0bWw+Ci08aGVhZD4KLTxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPHNjcmlw
dCBzcmM9InJlc291cmNlcy9mcy10ZXN0LXV0aWwuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJv
ZHk+Ci08ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvb3At
Z2V0LWVudHJ5LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvb3AtdGVzdHMt
aGVscGVyLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvZmlsZXN5c3RlbS9vcC1nZXQtbWV0YWRhdGEtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9vcC1nZXQtbWV0YWRhdGEtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vb3At
Z2V0LW1ldGFkYXRhLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwyNiArMCwwIEBA
Ci0qIFJ1bm5pbmc6IEdldE1ldGFkYXRhCi1QQVNTIFN1Y2NlZWRlZDogIi8iLmdldE1ldGFkYXRh
KCkKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RGlyZWN0b3J5KCIvYSIpCi1QQVNTIFN1Y2NlZWRl
ZDogIi9hIi5nZXRNZXRhZGF0YSgpCi1QQVNTIHRoaXMuZW52aXJvbm1lbnRbIi9hLnJldHVybmVk
Lm1vZGlmaWNhdGlvblRpbWUiXSBpcyA+PSB0aGlzLnJvdW5kZWRTdGFydERhdGUKLVBBU1MgU3Vj
Y2VlZGVkOiAiL2ZpbGUxIi5nZXRNZXRhZGF0YSgpCi1QQVNTIHRoaXMuZW52aXJvbm1lbnRbIi9m
aWxlMS5yZXR1cm5lZC5tb2RpZmljYXRpb25UaW1lIl0gaXMgPj0gdGhpcy5yb3VuZGVkU3RhcnRE
YXRlCi1QQVNTIFN1Y2NlZWRlZDogIi9maWxlMiIuZ2V0TWV0YWRhdGEoKQotUEFTUyB0aGlzLmVu
dmlyb25tZW50WyIvZmlsZTIucmV0dXJuZWQubW9kaWZpY2F0aW9uVGltZSJdIGlzID49IHRoaXMu
cm91bmRlZFN0YXJ0RGF0ZQotUEFTUyB0aGlzLmVudmlyb25tZW50WyIvZmlsZTIuc2l6ZSJdIGlz
IHRoaXMuZW52aXJvbm1lbnRbIi9maWxlMi5yZXR1cm5lZC5zaXplIl0KLVBBU1MgU3VjY2VlZGVk
OiAiL2ZpbGUzIi5nZXRNZXRhZGF0YSgpCi1QQVNTIHRoaXMuZW52aXJvbm1lbnRbIi9maWxlMy5y
ZXR1cm5lZC5tb2RpZmljYXRpb25UaW1lIl0gaXMgPj0gdGhpcy5yb3VuZGVkU3RhcnREYXRlCi1Q
QVNTIHRoaXMuZW52aXJvbm1lbnRbIi9maWxlMy5zaXplIl0gaXMgdGhpcy5lbnZpcm9ubWVudFsi
L2ZpbGUzLnJldHVybmVkLnNpemUiXQotUEFTUyBTdWNjZWVkZWQ6ICIvIi5nZXRGaWxlKCIvYiIp
Ci1QQVNTIFN1Y2NlZWRlZDogIi9iIi5nZXRNZXRhZGF0YSgpCi1QQVNTIHRoaXMuZW52aXJvbm1l
bnRbIi9iLnJldHVybmVkLm1vZGlmaWNhdGlvblRpbWUiXSBpcyA+PSB0aGlzLnJvdW5kZWRTdGFy
dERhdGUKLVBBU1MgU3VjY2VlZGVkOiAiL3RtcCIucmVtb3ZlKCkKLVBBU1MgdGhpcy5leHBlY3Rl
ZEVycm9yQ29kZSArICIiIGlzICIxIgotUEFTUyB0aGlzLmVudmlyb25tZW50WyIvYS5yZXR1cm5l
ZC5tb2RpZmljYXRpb25UaW1lIl0gaXMgPj0gdGhpcy5lbnZpcm9ubWVudFsiLy5yZXR1cm5lZC5t
b2RpZmljYXRpb25UaW1lIl0KLVBBU1MgdGhpcy5lbnZpcm9ubWVudFsiL2IucmV0dXJuZWQubW9k
aWZpY2F0aW9uVGltZSJdIGlzID49IHRoaXMuZW52aXJvbm1lbnRbIi8ucmV0dXJuZWQubW9kaWZp
Y2F0aW9uVGltZSJdCi1QQVNTIHRoaXMuZW52aXJvbm1lbnRbIi9iLnJldHVybmVkLm1vZGlmaWNh
dGlvblRpbWUiXSBpcyA+PSB0aGlzLmVudmlyb25tZW50WyIvYS5yZXR1cm5lZC5tb2RpZmljYXRp
b25UaW1lIl0KLUZpbmlzaGVkIHJ1bm5pbmcgdGVzdHMuCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxl
c3lzdGVtL29wLWdldC1tZXRhZGF0YS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZmlsZXN5c3RlbS9vcC1nZXQtbWV0YWRhdGEuaHRtbAkocmV2aXNpb24gMTU2NjkxKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL29wLWdldC1tZXRhZGF0YS5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDE0ICswLDAgQEAKLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvZnMtdGVzdC11dGlsLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+Ci08c2NyaXB0IHNyYz0icmVzb3VyY2VzL29wLWdldC1tZXRhZGF0
YS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0icmVzb3VyY2VzL29wLXRlc3RzLWhlbHBlci5q
cyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+Ci0KLQpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9maWxlc3lzdGVtL29wLWdldC1wYXJlbnQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9vcC1nZXQtcGFyZW50LWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL29wLWdldC1wYXJl
bnQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDE3ICswLDAgQEAKLSogUnVubmlu
ZzogR2V0UGFyZW50Ci1QQVNTIFN1Y2NlZWRlZDogIi8iLmdldFBhcmVudCgpCi1QYXJlbnQgZW50
cnk6IEVOVFJZIHtwYXRoOi8gbmFtZTogdHlwZTpESVJFQ1RPUll9Ci1QQVNTIFN1Y2NlZWRlZDog
Ii9hIi5nZXRQYXJlbnQoKQotUGFyZW50IGVudHJ5OiBFTlRSWSB7cGF0aDovIG5hbWU6IHR5cGU6
RElSRUNUT1JZfQotUEFTUyBTdWNjZWVkZWQ6ICIvYS9iIi5nZXRQYXJlbnQoKQotUGFyZW50IGVu
dHJ5OiBFTlRSWSB7cGF0aDovYSBuYW1lOmEgdHlwZTpESVJFQ1RPUll9Ci1QQVNTIFN1Y2NlZWRl
ZDogIi9hL2IvYyIuZ2V0UGFyZW50KCkKLVBhcmVudCBlbnRyeTogRU5UUlkge3BhdGg6L2EvYiBu
YW1lOmIgdHlwZTpESVJFQ1RPUll9Ci1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDov
YSBuYW1lOmEgdHlwZTpESVJFQ1RPUll9Ci1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0
aDovYS9iIG5hbWU6YiB0eXBlOkRJUkVDVE9SWX0KLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZ
IHtwYXRoOi9hL2IvYyBuYW1lOmMgdHlwZTpGSUxFfQotRmluaXNoZWQgcnVubmluZyB0ZXN0cy4K
LVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vb3AtZ2V0LXBhcmVudC5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9vcC1nZXQtcGFyZW50Lmh0bWwJKHJl
dmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9vcC1nZXQtcGFy
ZW50Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTQgKzAsMCBAQAotPGh0bWw+Ci08aGVhZD4K
LTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgot
PHNjcmlwdCBzcmM9InJlc291cmNlcy9mcy10ZXN0LXV0aWwuanMiPjwvc2NyaXB0PgotPC9oZWFk
PgotPGJvZHk+Ci08ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KLTxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvb3AtZ2V0LXBhcmVudC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0icmVzb3VyY2VzL29w
LXRlc3RzLWhlbHBlci5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+Ci0KLQpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL29wLW1vdmUtZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9vcC1tb3ZlLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL29wLW1vdmUt
ZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDgzICswLDAgQEAKLSogUnVubmluZzog
TW92ZUZpbGVTaW1wbGUKLVBBU1MgU3VjY2VlZGVkOiAiL2EvYiIubW92ZVRvKCIvYSIsICJjIikK
LVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9hIG5hbWU6YSB0eXBlOkRJUkVDVE9S
WX0KLVBBU1MgVmVyaWZpZWQgZW50cnkgZG9lcyBOT1QgZXhpc3Q6IC9hL2IKLVBBU1MgVmVyaWZp
ZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9hL2MgbmFtZTpjIHR5cGU6RklMRX0KLSogUnVubmluZzog
TW92ZURpcmVjdG9yeVNpbXBsZQotUEFTUyBTdWNjZWVkZWQ6ICIvYS9iIi5tb3ZlVG8oIi9hIiwg
ImMiKQotUEFTUyBWZXJpZmllZCBlbnRyeTogRU5UUlkge3BhdGg6L2EgbmFtZTphIHR5cGU6RElS
RUNUT1JZfQotUEFTUyBWZXJpZmllZCBlbnRyeSBkb2VzIE5PVCBleGlzdDogL2EvYgotUEFTUyBW
ZXJpZmllZCBlbnRyeTogRU5UUlkge3BhdGg6L2EvYyBuYW1lOmMgdHlwZTpESVJFQ1RPUll9Ci0q
IFJ1bm5pbmc6IE1vdmVGaWxlVG9EaWZmZXJlbnREaXJlY3RvcnkKLVBBU1MgU3VjY2VlZGVkOiAi
L2EvYiIubW92ZVRvKCIvYyIsICJkIikKLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRo
Oi9hIG5hbWU6YSB0eXBlOkRJUkVDVE9SWX0KLVBBU1MgVmVyaWZpZWQgZW50cnkgZG9lcyBOT1Qg
ZXhpc3Q6IC9hL2IKLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9jL2QgbmFtZTpk
IHR5cGU6RklMRX0KLSogUnVubmluZzogTW92ZUZpbGVXaXRoRW1wdHlOYW1lCi1QQVNTIFN1Y2Nl
ZWRlZDogIi9hL2IiLm1vdmVUbygiL2MiLCAibnVsbCIpCi1QQVNTIFZlcmlmaWVkIGVudHJ5OiBF
TlRSWSB7cGF0aDovYSBuYW1lOmEgdHlwZTpESVJFQ1RPUll9Ci1QQVNTIFZlcmlmaWVkIGVudHJ5
IGRvZXMgTk9UIGV4aXN0OiAvYS9iCi1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDov
Yy9iIG5hbWU6YiB0eXBlOkZJTEV9Ci0qIFJ1bm5pbmc6IE1vdmVGaWxlV2l0aEVtcHR5TmFtZVRv
U2FtZURpcmVjdG9yeQotUEFTUyB0aGlzLmV4cGVjdGVkRXJyb3JDb2RlICsgIiIgaXMgIjkiCi1Q
QVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYSBuYW1lOmEgdHlwZTpESVJFQ1RPUll9
Ci1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYS9iIG5hbWU6YiB0eXBlOkZJTEV9
Ci0qIFJ1bm5pbmc6IE1vdmVGaWxlV2l0aFNhbWVOYW1lCi1QQVNTIHRoaXMuZXhwZWN0ZWRFcnJv
ckNvZGUgKyAiIiBpcyAiOSIKLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9hIG5h
bWU6YSB0eXBlOkRJUkVDVE9SWX0KLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9h
L2IgbmFtZTpiIHR5cGU6RklMRX0KLSogUnVubmluZzogTW92ZUZvck5vbkV4aXN0ZW50RW50cnkK
LVBBU1MgU3VjY2VlZGVkOiAiL2EvYiIucmVtb3ZlKCkKLVBBU1MgdGhpcy5leHBlY3RlZEVycm9y
Q29kZSArICIiIGlzICIxIgotUEFTUyBWZXJpZmllZCBlbnRyeTogRU5UUlkge3BhdGg6L2EgbmFt
ZTphIHR5cGU6RElSRUNUT1JZfQotUEFTUyBWZXJpZmllZCBlbnRyeTogRU5UUlkge3BhdGg6L2Mg
bmFtZTpjIHR5cGU6RElSRUNUT1JZfQotKiBSdW5uaW5nOiBNb3ZlRW50cnlUb05vbkV4aXN0ZW50
RGlyZWN0b3J5Ci1QQVNTIFN1Y2NlZWRlZDogIi9jIi5yZW1vdmUoKQotUEFTUyB0aGlzLmV4cGVj
dGVkRXJyb3JDb2RlICsgIiIgaXMgIjEiCi1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0
aDovYSBuYW1lOmEgdHlwZTpESVJFQ1RPUll9Ci1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7
cGF0aDovYS9iIG5hbWU6YiB0eXBlOkZJTEV9Ci0qIFJ1bm5pbmc6IE1vdmVFbnRyeVRvSXRzQ2hp
bGQKLVBBU1MgdGhpcy5leHBlY3RlZEVycm9yQ29kZSArICIiIGlzICI5IgotUEFTUyB0aGlzLmV4
cGVjdGVkRXJyb3JDb2RlICsgIiIgaXMgIjkiCi1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7
cGF0aDovYSBuYW1lOmEgdHlwZTpESVJFQ1RPUll9Ci1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRS
WSB7cGF0aDovYS9iIG5hbWU6YiB0eXBlOkRJUkVDVE9SWX0KLVBBU1MgVmVyaWZpZWQgZW50cnk6
IEVOVFJZIHtwYXRoOi9hL2IvYyBuYW1lOmMgdHlwZTpESVJFQ1RPUll9Ci0qIFJ1bm5pbmc6IE1v
dmVSZWN1cnNpdmUKLVBBU1MgU3VjY2VlZGVkOiAiL2EiLm1vdmVUbygiL2IiLCAiYSIpCi1QQVNT
IFZlcmlmaWVkIGVudHJ5IGRvZXMgTk9UIGV4aXN0OiAvYQotUEFTUyBWZXJpZmllZCBlbnRyeTog
RU5UUlkge3BhdGg6L2IvYSBuYW1lOmEgdHlwZTpESVJFQ1RPUll9Ci1QQVNTIFZlcmlmaWVkIGVu
dHJ5OiBFTlRSWSB7cGF0aDovYi9hL2IgbmFtZTpiIHR5cGU6RElSRUNUT1JZfQotUEFTUyBWZXJp
ZmllZCBlbnRyeTogRU5UUlkge3BhdGg6L2IvYS9iL2MgbmFtZTpjIHR5cGU6RklMRX0KLVBBU1Mg
VmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9iL2EvYi9kIG5hbWU6ZCB0eXBlOkZJTEV9Ci0q
IFJ1bm5pbmc6IE92ZXJ3cml0aW5nTW92ZUZpbGVUb0ZpbGUKLVBBU1MgU3VjY2VlZGVkOiAiL2Ei
Lm1vdmVUbygiLyIsICJiIikKLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9iIG5h
bWU6YiB0eXBlOkZJTEV9Ci0qIFJ1bm5pbmc6IE92ZXJ3cml0aW5nTW92ZURpcmVjdG9yeVRvRW1w
dHlEaXJlY3RvcnkKLVBBU1MgU3VjY2VlZGVkOiAiL2EiLm1vdmVUbygiLyIsICJjIikKLVBBU1Mg
VmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9jIG5hbWU6YyB0eXBlOkRJUkVDVE9SWX0KLVBB
U1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9jL2IgbmFtZTpiIHR5cGU6RklMRX0KLVBB
U1MgVmVyaWZpZWQgZW50cnkgZG9lcyBOT1QgZXhpc3Q6IC9hCi0qIFJ1bm5pbmc6IE92ZXJ3cml0
aW5nTW92ZUZpbGVUb0RpcmVjdG9yeQotUEFTUyB0aGlzLmV4cGVjdGVkRXJyb3JDb2RlICsgIiIg
aXMgIjkiCi1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYSBuYW1lOmEgdHlwZTpG
SUxFfQotUEFTUyBWZXJpZmllZCBlbnRyeTogRU5UUlkge3BhdGg6L2IgbmFtZTpiIHR5cGU6RElS
RUNUT1JZfQotKiBSdW5uaW5nOiBPdmVyd3JpdGluZ01vdmVEaXJlY3RvcnlUb0ZpbGUKLVBBU1Mg
dGhpcy5leHBlY3RlZEVycm9yQ29kZSArICIiIGlzICI5IgotUEFTUyBWZXJpZmllZCBlbnRyeTog
RU5UUlkge3BhdGg6L2EgbmFtZTphIHR5cGU6RElSRUNUT1JZfQotUEFTUyBWZXJpZmllZCBlbnRy
eTogRU5UUlkge3BhdGg6L2IgbmFtZTpiIHR5cGU6RklMRX0KLSogUnVubmluZzogT3ZlcndyaXRp
bmdNb3ZlRmlsZVRvTm9uZW1wdHlEaXJlY3RvcnkKLVBBU1MgdGhpcy5leHBlY3RlZEVycm9yQ29k
ZSArICIiIGlzICI5IgotUEFTUyBWZXJpZmllZCBlbnRyeTogRU5UUlkge3BhdGg6L2EgbmFtZTph
IHR5cGU6RklMRX0KLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9iIG5hbWU6YiB0
eXBlOkRJUkVDVE9SWX0KLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9iL2MgbmFt
ZTpjIHR5cGU6RklMRX0KLSogUnVubmluZzogT3ZlcndyaXRpbmdNb3ZlRGlyZWN0b3J5VG9Ob25l
bXB0eURpcmVjdG9yeQotUEFTUyB0aGlzLmV4cGVjdGVkRXJyb3JDb2RlICsgIiIgaXMgIjkiCi1Q
QVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYSBuYW1lOmEgdHlwZTpESVJFQ1RPUll9
Ci1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYS9iIG5hbWU6YiB0eXBlOkZJTEV9
Ci1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYyBuYW1lOmMgdHlwZTpESVJFQ1RP
Ull9Ci1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYy9kIG5hbWU6ZCB0eXBlOkZJ
TEV9Ci1GaW5pc2hlZCBydW5uaW5nIHRlc3RzLgotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3Rl
bS9vcC1tb3ZlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVt
L29wLW1vdmUuaHRtbAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxl
c3lzdGVtL29wLW1vdmUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxMiArMCwwIEBACi08aHRt
bD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0icmVzb3VyY2VzL2ZzLXRlc3QtdXRpbC5qcyI+PC9zY3Jp
cHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgotPHNjcmlwdCBz
cmM9InJlc291cmNlcy9vcC1tb3ZlLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvb3AtdGVzdHMtaGVscGVyLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9vcC1yZWFkLWRpcmVjdG9yeS1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL29wLXJlYWQtZGly
ZWN0b3J5LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9maWxlc3lzdGVtL29wLXJlYWQtZGlyZWN0b3J5LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtMSwyMiArMCwwIEBACi0qIFJ1bm5pbmc6IFJlYWREaXJlY3RvcnkKLVBBU1MgU3VjY2Vl
ZGVkOiAiLyIuY3JlYXRlUmVhZGVyKCkucmVhZEVudHJpZXMoKQotRW50cmllczogW0VOVFJZIHtw
YXRoOi9hIG5hbWU6YSB0eXBlOkRJUkVDVE9SWX0sCi0gRU5UUlkge3BhdGg6L2IgbmFtZTpiIHR5
cGU6RElSRUNUT1JZfSwKLSBFTlRSWSB7cGF0aDovYyBuYW1lOmMgdHlwZTpGSUxFfSwKLSBFTlRS
WSB7cGF0aDovZCBuYW1lOmQgdHlwZTpGSUxFfSwKLSBFTlRSWSB7cGF0aDovZSBuYW1lOmUgdHlw
ZTpESVJFQ1RPUll9LAotIEVOVFJZIHtwYXRoOi9mIG5hbWU6ZiB0eXBlOkZJTEV9LAotIEVOVFJZ
IHtwYXRoOi9nIG5hbWU6ZyB0eXBlOkRJUkVDVE9SWX1dCi1QQVNTIFN1Y2NlZWRlZDogIi9jIi5y
ZW1vdmUoKQotUEFTUyBTdWNjZWVkZWQ6ICIvZSIucmVtb3ZlKCkKLVBBU1MgU3VjY2VlZGVkOiAi
L2YiLnJlbW92ZSgpCi1QQVNTIFN1Y2NlZWRlZDogIi8iLmNyZWF0ZVJlYWRlcigpLnJlYWRFbnRy
aWVzKCkKLUVudHJpZXM6IFtFTlRSWSB7cGF0aDovYSBuYW1lOmEgdHlwZTpESVJFQ1RPUll9LAot
IEVOVFJZIHtwYXRoOi9iIG5hbWU6YiB0eXBlOkRJUkVDVE9SWX0sCi0gRU5UUlkge3BhdGg6L2Qg
bmFtZTpkIHR5cGU6RklMRX0sCi0gRU5UUlkge3BhdGg6L2cgbmFtZTpnIHR5cGU6RElSRUNUT1JZ
fV0KLUZpbmlzaGVkIHJ1bm5pbmcgdGVzdHMuCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVt
L29wLXJlYWQtZGlyZWN0b3J5Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9m
aWxlc3lzdGVtL29wLXJlYWQtZGlyZWN0b3J5Lmh0bWwJKHJldmlzaW9uIDE1NjY5MSkKKysrIExh
eW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9vcC1yZWFkLWRpcmVjdG9yeS5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDEyICswLDAgQEAKLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvZnMtdGVzdC11dGlsLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+Ci08c2NyaXB0IHNyYz0icmVzb3VyY2VzL29wLXJlYWQtZGlyZWN0
b3J5LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvb3AtdGVzdHMtaGVscGVy
LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
ZmlsZXN5c3RlbS9vcC1yZW1vdmUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZmlsZXN5c3RlbS9vcC1yZW1vdmUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNTY2
OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vb3AtcmVtb3ZlLWV4cGVjdGVkLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtMSwyMyArMCwwIEBACi0qIFJ1bm5pbmc6IFJlbW92ZVNpbXBs
ZQotUEFTUyBTdWNjZWVkZWQ6ICIvYSIucmVtb3ZlKCkKLVBBU1MgU3VjY2VlZGVkOiAiL2IiLnJl
bW92ZSgpCi1QQVNTIHRoaXMuZXhwZWN0ZWRFcnJvckNvZGUgKyAiIiBpcyAiOSIKLVBBU1MgVmVy
aWZpZWQgZW50cnkgZG9lcyBOT1QgZXhpc3Q6IC9hCi1QQVNTIFZlcmlmaWVkIGVudHJ5IGRvZXMg
Tk9UIGV4aXN0OiAvYgotKiBSdW5uaW5nOiBSZW1vdmVOb25SZWN1cnNpdmVXaXRoQ2hpbGRyZW4K
LVBBU1MgdGhpcy5leHBlY3RlZEVycm9yQ29kZSArICIiIGlzICI5IgotUEFTUyBWZXJpZmllZCBl
bnRyeTogRU5UUlkge3BhdGg6L2EgbmFtZTphIHR5cGU6RElSRUNUT1JZfQotUEFTUyBWZXJpZmll
ZCBlbnRyeTogRU5UUlkge3BhdGg6L2EvYiBuYW1lOmIgdHlwZTpESVJFQ1RPUll9Ci1QQVNTIFZl
cmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYS9jIG5hbWU6YyB0eXBlOkZJTEV9Ci0qIFJ1bm5p
bmc6IFJlbW92ZVJlY3Vyc2l2ZVdpdGhvdXRDaGlsZHJlbgotUEFTUyBTdWNjZWVkZWQ6ICIvYSIu
cmVtb3ZlUmVjdXJzaXZlbHkoKQotUEFTUyBWZXJpZmllZCBlbnRyeSBkb2VzIE5PVCBleGlzdDog
L2EKLSogUnVubmluZzogUmVtb3ZlUmVjdXJzaXZlV2l0aENoaWxkcmVuCi1QQVNTIFN1Y2NlZWRl
ZDogIi9hIi5yZW1vdmVSZWN1cnNpdmVseSgpCi1QQVNTIHRoaXMuZXhwZWN0ZWRFcnJvckNvZGUg
KyAiIiBpcyAiOSIKLVBBU1MgVmVyaWZpZWQgZW50cnkgZG9lcyBOT1QgZXhpc3Q6IC9hCi1GaW5p
c2hlZCBydW5uaW5nIHRlc3RzLgotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1U
RVNUIENPTVBMRVRFCi0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9vcC1yZW1v
dmUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vb3AtcmVt
b3ZlLmh0bWwJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3Rl
bS9vcC1yZW1vdmUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxMyArMCwwIEBACi08aHRtbD4K
LTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0IHNyYz0icmVzb3VyY2VzL2ZzLXRlc3QtdXRpbC5qcyI+PC9zY3JpcHQ+
Ci08L2hlYWQ+Ci08Ym9keT4KLTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgotPHNjcmlwdCBzcmM9
InJlc291cmNlcy9vcC1yZW1vdmUuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InJlc291cmNl
cy9vcC10ZXN0cy1oZWxwZXIuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgotCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vb3AtcmVzdHJpY3RlZC1jaGFycy1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL29wLXJlc3Ry
aWN0ZWQtY2hhcnMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2ZpbGVzeXN0ZW0vb3AtcmVzdHJpY3RlZC1jaGFycy1leHBlY3RlZC50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTEsMzcgKzAsMCBAQAotKiBSdW5uaW5nOiBSZXN0cmljdGVkQ2hhcnMKLVBB
U1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiYTxiIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0
RmlsZSgiYT5iIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiYTpiIikKLVBBU1MgU3Vj
Y2VlZGVkOiAiLyIuZ2V0RmlsZSgiYT9iIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgi
YSpiIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiYSJiIikKLVBBU1MgU3VjY2VlZGVk
OiAiLyIuZ2V0RmlsZSgiYXxiIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiPGFiIikK
LVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiOmFiIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIu
Z2V0RmlsZSgiP2FiIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiKmFiIikKLVBBU1Mg
U3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiImFiIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0Rmls
ZSgifGFiIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiYWI8IikKLVBBU1MgU3VjY2Vl
ZGVkOiAiLyIuZ2V0RmlsZSgiYWI6IikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiYWI/
IikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiYWIqIikKLVBBU1MgU3VjY2VlZGVkOiAi
LyIuZ2V0RmlsZSgiYWIiIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiYWJ8IikKLVBB
U1MgdGhpcy5leHBlY3RlZEVycm9yQ29kZSArICIiIGlzICI5IgotUEFTUyBTdWNjZWVkZWQ6ICIv
YWIiLmNvcHlUbygiLyIsICIgYTxiIikKLVBBU1MgU3VjY2VlZGVkOiAiL2FiIi5jb3B5VG8oIi8i
LCAiIGE6YiIpCi1QQVNTIFN1Y2NlZWRlZDogIi9hYiIuY29weVRvKCIvIiwgIiBhP2IiKQotUEFT
UyBTdWNjZWVkZWQ6ICIvYWIiLmNvcHlUbygiLyIsICIgYSpiIikKLVBBU1MgU3VjY2VlZGVkOiAi
L2FiIi5jb3B5VG8oIi8iLCAiIGEiYiIpCi1QQVNTIFN1Y2NlZWRlZDogIi9hYiIuY29weVRvKCIv
IiwgIiBhfGIiKQotUEFTUyB0aGlzLmV4cGVjdGVkRXJyb3JDb2RlICsgIiIgaXMgIjkiCi1QQVNT
IHRoaXMuZXhwZWN0ZWRFcnJvckNvZGUgKyAiIiBpcyAiOSIKLVBBU1MgVmVyaWZpZWQgZW50cnk6
IEVOVFJZIHtwYXRoOi9hYiBuYW1lOmFiIHR5cGU6RElSRUNUT1JZfQotUEFTUyBWZXJpZmllZCBl
bnRyeTogRU5UUlkge3BhdGg6L2E8YiBuYW1lOmE8YiB0eXBlOkZJTEV9Ci1QQVNTIFZlcmlmaWVk
IGVudHJ5OiBFTlRSWSB7cGF0aDovIGF8YiBuYW1lOiBhfGIgdHlwZTpESVJFQ1RPUll9Ci1GaW5p
c2hlZCBydW5uaW5nIHRlc3RzLgotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1U
RVNUIENPTVBMRVRFCi0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9vcC1yZXN0
cmljdGVkLWNoYXJzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lz
dGVtL29wLXJlc3RyaWN0ZWQtY2hhcnMuaHRtbAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9maWxlc3lzdGVtL29wLXJlc3RyaWN0ZWQtY2hhcnMuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMSwxMiArMCwwIEBACi08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL2ZzLXRlc3QtdXRpbC5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgotPHNjcmlwdCBzcmM9InJlc291cmNlcy9vcC1yZXN0cmljdGVkLWNo
YXJzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvb3AtdGVzdHMtaGVscGVy
LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
ZmlsZXN5c3RlbS9vcC1yZXN0cmljdGVkLW5hbWVzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vb3AtcmVzdHJpY3RlZC1uYW1lcy1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9v
cC1yZXN0cmljdGVkLW5hbWVzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw1MSAr
MCwwIEBACi0qIFJ1bm5pbmc6IFJlc3RyaWN0ZWROYW1lcwotUEFTUyB0aGlzLmV4cGVjdGVkRXJy
b3JDb2RlICsgIiIgaXMgIjIiCi1QQVNTIHRoaXMuZXhwZWN0ZWRFcnJvckNvZGUgKyAiIiBpcyAi
MiIKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiY29uIikKLVBBU1MgU3VjY2VlZGVkOiAi
LyIuZ2V0RmlsZSgiQ09OIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiQ29uIikKLVBB
U1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiY09uLnR4dCIpCi1QQVNTIFN1Y2NlZWRlZDogIi8i
LmdldEZpbGUoImEvY29OIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgicHJuIikKLVBB
U1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiUFJOIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0
RmlsZSgiUHJuIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgicFJuLnR4dCIpCi1QQVNT
IFN1Y2NlZWRlZDogIi8iLmdldEZpbGUoImEvcHJOIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0
RmlsZSgiYXV4IikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiQVVYIikKLVBBU1MgU3Vj
Y2VlZGVkOiAiLyIuZ2V0RmlsZSgiQXV4IikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgi
YVV4LnR4dCIpCi1QQVNTIFN1Y2NlZWRlZDogIi8iLmdldEZpbGUoImEvYXVYIikKLVBBU1MgU3Vj
Y2VlZGVkOiAiLyIuZ2V0RmlsZSgibnVsIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgi
TlVMIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiTnVsIikKLVBBU1MgU3VjY2VlZGVk
OiAiLyIuZ2V0RmlsZSgiblVsLnR4dCIpCi1QQVNTIFN1Y2NlZWRlZDogIi8iLmdldEZpbGUoImEv
bnVMIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiY29tMSIpCi1QQVNTIFN1Y2NlZWRl
ZDogIi8iLmdldEZpbGUoIkNPTTIiKQotUEFTUyBTdWNjZWVkZWQ6ICIvIi5nZXRGaWxlKCJDb200
IikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiY09NNy5mb28iKQotUEFTUyBTdWNjZWVk
ZWQ6ICIvIi5nZXRGaWxlKCJhL2NvTTkiKQotUEFTUyBTdWNjZWVkZWQ6ICIvIi5nZXRGaWxlKCJs
cHQxIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiTFBUMiIpCi1QQVNTIFN1Y2NlZWRl
ZDogIi8iLmdldEZpbGUoIkxwdDQiKQotUEFTUyBTdWNjZWVkZWQ6ICIvIi5nZXRGaWxlKCJsUFQ3
LmZvbyIpCi1QQVNTIFN1Y2NlZWRlZDogIi8iLmdldEZpbGUoImEvbHBUOSIpCi1QQVNTIFN1Y2Nl
ZWRlZDogIi8iLmdldEZpbGUoImZvbyAiKQotUEFTUyBTdWNjZWVkZWQ6ICIvIi5nZXRGaWxlKCJm
b28KLSIpCi1QQVNTIFN1Y2NlZWRlZDogIi8iLmdldEZpbGUoImZvby4iKQotUEFTUyBTdWNjZWVk
ZWQ6ICIvYSIuY29weVRvKCIvIiwgImZvbyAgIikKLVBBU1MgU3VjY2VlZGVkOiAiL2EiLmNvcHlU
bygiLyIsICJmb28JIikKLVBBU1MgU3VjY2VlZGVkOiAiL2EiLmNvcHlUbygiLyIsICJmb28uLiIp
Ci1QQVNTIFN1Y2NlZWRlZDogIi9hIi5tb3ZlVG8oIi8iLCAiZm9vICAgICIpCi1QQVNTIFN1Y2Nl
ZWRlZDogIi9iIi5tb3ZlVG8oIi8iLCAiZm9vCQkiKQotUEFTUyBTdWNjZWVkZWQ6ICIvYyIubW92
ZVRvKCIvIiwgImZvby4uLi4uIikKLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9m
b28gICAgIG5hbWU6Zm9vICAgICB0eXBlOkRJUkVDVE9SWX0KLVBBU1MgVmVyaWZpZWQgZW50cnk6
IEVOVFJZIHtwYXRoOi9mb28JCSBuYW1lOmZvbwkJIHR5cGU6RElSRUNUT1JZfQotUEFTUyBWZXJp
ZmllZCBlbnRyeTogRU5UUlkge3BhdGg6L2Zvby4uLi4uIG5hbWU6Zm9vLi4uLi4gdHlwZTpESVJF
Q1RPUll9Ci1GaW5pc2hlZCBydW5uaW5nIHRlc3RzLgotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5
c3RlbS9vcC1yZXN0cmljdGVkLW5hbWVzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9maWxlc3lzdGVtL29wLXJlc3RyaWN0ZWQtbmFtZXMuaHRtbAkocmV2aXNpb24gMTU2Njkx
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL29wLXJlc3RyaWN0ZWQtbmFtZXMuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMSwxMiArMCwwIEBACi08aHRtbD4KLTxoZWFkPgotPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0
IHNyYz0icmVzb3VyY2VzL2ZzLXRlc3QtdXRpbC5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9k
eT4KLTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgotPHNjcmlwdCBzcmM9InJlc291cmNlcy9vcC1y
ZXN0cmljdGVkLW5hbWVzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvb3At
dGVzdHMtaGVscGVyLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9vcC1yZXN0cmljdGVkLXVuaWNvZGUtZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9vcC1yZXN0cmljdGVk
LXVuaWNvZGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2ZpbGVzeXN0ZW0vb3AtcmVzdHJpY3RlZC11bmljb2RlLWV4cGVjdGVkLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw0MSArMCwwIEBACi0qIFJ1bm5pbmc6IFJlc3RyaWN0ZWRVbmljb2RlQ2hh
cnMKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiYWIiKQotUEFTUyB0aGlzLmV4cGVjdGVk
RXJyb3JDb2RlICsgIiIgaXMgIjkiCi1QQVNTIFN1Y2NlZWRlZDogIi8iLmdldEZpbGUoImEBYiIp
Ci1QQVNTIFN1Y2NlZWRlZDogIi8iLmdldEZpbGUoImECYiIpCi1QQVNTIFN1Y2NlZWRlZDogIi8i
LmdldEZpbGUoImEDYiIpCi1QQVNTIFN1Y2NlZWRlZDogIi8iLmdldEZpbGUoImEEYiIpCi1QQVNT
IFN1Y2NlZWRlZDogIi8iLmdldEZpbGUoImEFYiIpCi1QQVNTIFN1Y2NlZWRlZDogIi8iLmdldEZp
bGUoImEGYiIpCi1QQVNTIFN1Y2NlZWRlZDogIi8iLmdldEZpbGUoImEHYiIpCi1QQVNTIFN1Y2Nl
ZWRlZDogIi8iLmdldEZpbGUoImEIYiIpCi1QQVNTIFN1Y2NlZWRlZDogIi8iLmdldEZpbGUoImEJ
YiIpCi1QQVNTIFN1Y2NlZWRlZDogIi8iLmdldEZpbGUoImEKLWIiKQotUEFTUyBTdWNjZWVkZWQ6
ICIvIi5nZXRGaWxlKCJhC2IiKQotUEFTUyBTdWNjZWVkZWQ6ICIvIi5nZXRGaWxlKCJhDGIiKQot
UEFTUyBTdWNjZWVkZWQ6ICIvIi5nZXRGaWxlKCJhCi1iIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIu
Z2V0RmlsZSgiYQ5iIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiYQ9iIikKLVBBU1Mg
U3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiYRBiIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0Rmls
ZSgiYRFiIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiYRJiIikKLVBBU1MgU3VjY2Vl
ZGVkOiAiLyIuZ2V0RmlsZSgiYRNiIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiYRRi
IikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiYRViIikKLVBBU1MgU3VjY2VlZGVkOiAi
LyIuZ2V0RmlsZSgiYRZiIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiYRdiIikKLVBB
U1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiYRhiIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0
RmlsZSgiYRliIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiYRpiIikKLVBBU1MgU3Vj
Y2VlZGVkOiAiLyIuZ2V0RmlsZSgiYRtiIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgi
YRxiIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiYR1iIikKLVBBU1MgU3VjY2VlZGVk
OiAiLyIuZ2V0RmlsZSgiYR5iIikKLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9h
YiBuYW1lOmFiIHR5cGU6RklMRX0KLUZpbmlzaGVkIHJ1bm5pbmcgdGVzdHMuCi1QQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9maWxlc3lzdGVtL29wLXJlc3RyaWN0ZWQtdW5pY29kZS5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9vcC1yZXN0cmljdGVkLXVuaWNvZGUuaHRt
bAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL29wLXJl
c3RyaWN0ZWQtdW5pY29kZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEyICswLDAgQEAKLTxo
dG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZnMtdGVzdC11dGlsLmpzIj48L3Nj
cmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Ci08c2NyaXB0
IHNyYz0icmVzb3VyY2VzL29wLXJlc3RyaWN0ZWQtdW5pY29kZS5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL29wLXRlc3RzLWhlbHBlci5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+
Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVhZC1kaXJlY3Rv
cnktZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3Rl
bS9yZWFkLWRpcmVjdG9yeS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91
dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZWFkLWRpcmVjdG9yeS1leHBlY3RlZC50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTEsMjQgKzAsMCBAQAotRGlyZWN0b3J5UmVhZGVyLnJlYWRFbnRyaWVzKCkg
dGVzdC4KLQotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgotCi0KLVN1Y2Nlc3NmdWxseSBvYnRh
aW5lZCBQZXJzaXN0ZW50IEZpbGVTeXN0ZW06ZmlsZV9fMDpUZW1wb3JhcnkKLVBBU1MgcmVhZEVu
dHJpZXNDb3VudCBpcyBlbnRyaWVzQ2FsbGJhY2tDb3VudAotUEFTUyByZXN1bHRFbnRyaWVzLmxl
bmd0aCBpcyB0ZXN0RW50cmllc0NvdW50Ci1FbnRyeTovYSBpc0RpcmVjdG9yeTp0cnVlCi1QQVNT
IHRlc3RFbnRyaWVzW2VudHJ5LmZ1bGxQYXRoXSBpcyBlbnRyeS5pc0RpcmVjdG9yeQotRW50cnk6
L2IgaXNEaXJlY3Rvcnk6ZmFsc2UKLVBBU1MgdGVzdEVudHJpZXNbZW50cnkuZnVsbFBhdGhdIGlz
IGVudHJ5LmlzRGlyZWN0b3J5Ci1FbnRyeTovYyBpc0RpcmVjdG9yeTp0cnVlCi1QQVNTIHRlc3RF
bnRyaWVzW2VudHJ5LmZ1bGxQYXRoXSBpcyBlbnRyeS5pc0RpcmVjdG9yeQotRW50cnk6L2QgaXNE
aXJlY3Rvcnk6ZmFsc2UKLVBBU1MgdGVzdEVudHJpZXNbZW50cnkuZnVsbFBhdGhdIGlzIGVudHJ5
LmlzRGlyZWN0b3J5Ci1FbnRyeTovZSBpc0RpcmVjdG9yeTpmYWxzZQotUEFTUyB0ZXN0RW50cmll
c1tlbnRyeS5mdWxsUGF0aF0gaXMgZW50cnkuaXNEaXJlY3RvcnkKLUVudHJ5Oi9mIGlzRGlyZWN0
b3J5OnRydWUKLVBBU1MgdGVzdEVudHJpZXNbZW50cnkuZnVsbFBhdGhdIGlzIGVudHJ5LmlzRGly
ZWN0b3J5Ci1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUK
LQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3JlYWQtZGlyZWN0b3J5Lmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3JlYWQtZGlyZWN0b3J5
Lmh0bWwJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9y
ZWFkLWRpcmVjdG9yeS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEwICswLDAgQEAKLTxodG1s
PgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZnMtdGVzdC11dGlsLmpzIj48L3Njcmlw
dD4KLTwvaGVhZD4KLTxib2R5PgotPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9yZWFkLWRpcmVj
dG9yeS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2FzeW5jLW9wZXJhdGlvbnMuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9hc3luYy1vcGVyYXRpb25z
LmpzCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVz
b3VyY2VzL2FzeW5jLW9wZXJhdGlvbnMuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsMTA2ICswLDAg
QEAKLWlmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKLSAgICBpbXBvcnRTY3JpcHRzKCcuLi9yZXNv
dXJjZXMvZnMtd29ya2VyLWNvbW1vbi5qcycpOwotICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOwotICAgIGltcG9ydFNjcmlwdHMoJy4uL3Jlc291
cmNlcy9mcy10ZXN0LXV0aWwuanMnKTsKLX0KLQotZGVzY3JpcHRpb24oIlRlc3QgbWFraW5nIG11
bHRpcGxlIGFzeW5jIEZpbGVTeXN0ZW0gb3BlcmF0aW9ucy4iKTsKLQotdmFyIGZpbGVTeXN0ZW0g
PSBudWxsOwotCi12YXIgYTsKLXZhciBiOwotdmFyIGM7Ci12YXIgZDsKLQotdmFyIHBhdGhzID0g
W107Ci12YXIgZGlyc0NvdW50ID0gMDsKLXZhciByZWFkZXIgPSBudWxsOwotCi1mdW5jdGlvbiBl
cnJvckNhbGxiYWNrKGVycm9yKSB7Ci0gICAgZGVidWcoIkdvdCBlcnJvcjogIiArIGVycm9yLmNv
ZGUpOwotICAgIHJlbW92ZUFsbEluRGlyZWN0b3J5KGZpbGVTeXN0ZW0ucm9vdCk7Ci0gICAgZmlu
aXNoSlNUZXN0KCk7Ci19Ci0KLWZ1bmN0aW9uIGVudHJpZXNDYWxsYmFjayhlbnRyaWVzKSB7Ci0g
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbnRyaWVzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgIHBh
dGhzLnB1c2goZW50cmllc1tpXS5mdWxsUGF0aCk7Ci0gICAgICAgIGlmIChlbnRyaWVzW2ldLmlz
RGlyZWN0b3J5KQotICAgICAgICAgICAgZGlyc0NvdW50Kys7Ci0gICAgfQotICAgIGlmICghZW50
cmllcy5sZW5ndGgpIHsKLSAgICAgICAgcmVhZGVyLnJlYWRFbnRyaWVzKGVudHJpZXNDYWxsYmFj
aywgZXJyb3JDYWxsYmFjayk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgcGF0aHMuc29ydCgpOwot
ICAgICAgICBzaG91bGRCZSgnIicgKyBwYXRocy5qb2luKCcsJykgKyAnIicsICciL2EsL2IsL2Ms
L2QyLC9lLC9mIicpOwotICAgICAgICBzaG91bGRCZSgiZGlyc0NvdW50IiwgIjMiKTsKLSAgICAg
ICAgcmVtb3ZlQWxsSW5EaXJlY3RvcnkoZmlsZVN5c3RlbS5yb290KTsKLSAgICAgICAgZmluaXNo
SlNUZXN0KCk7Ci0gICAgfQotfQotCi1mdW5jdGlvbiB2ZXJpZnkoKSB7Ci0gICAgZGVidWcoIlZl
cmlmeWluZyB0aGUgRmlsZVN5c3RlbSBzdGF0dXMuIik7Ci0gICAgcmVhZGVyID0gZmlsZVN5c3Rl
bS5yb290LmNyZWF0ZVJlYWRlcigpOwotICAgIHJlYWRlci5yZWFkRW50cmllcyhlbnRyaWVzQ2Fs
bGJhY2ssIGVycm9yQ2FsbGJhY2spOwotfQotCi1mdW5jdGlvbiBhc3luY1Rlc3QyKCkgewotICAg
IGRlYnVnKCJTdGFydGluZyBhc3luYyB0ZXN0IHN0YWdlIDIuIik7Ci0KLSAgICB2YXIgaGVscGVy
ID0gbmV3IEpvaW5IZWxwZXIoKTsKLSAgICB2YXIgZG9uZSA9IGZ1bmN0aW9uKCkgeyBoZWxwZXIu
ZG9uZSgpOyB9OwotCi0gICAgaGVscGVyLnJ1bihmdW5jdGlvbigpIHsgYS5jb3B5VG8oYiwgJ3Rt
cCcsIGRvbmUsIGVycm9yQ2FsbGJhY2spOyB9KTsKLSAgICBoZWxwZXIucnVuKGZ1bmN0aW9uKCkg
eyBhLmdldE1ldGFkYXRhKGRvbmUsIGVycm9yQ2FsbGJhY2spOyB9KTsKLSAgICBoZWxwZXIucnVu
KGZ1bmN0aW9uKCkgeyBiLmdldFBhcmVudChkb25lLCBlcnJvckNhbGxiYWNrKTsgfSk7Ci0gICAg
aGVscGVyLnJ1bihmdW5jdGlvbigpIHsgYy5jb3B5VG8oZmlsZVN5c3RlbS5yb290LCAnZicsIGRv
bmUsIGVycm9yQ2FsbGJhY2spOyB9KTsKLSAgICBoZWxwZXIucnVuKGZ1bmN0aW9uKCkgeyBkLm1v
dmVUbyhmaWxlU3lzdGVtLnJvb3QsICdkMicsIGRvbmUsIGVycm9yQ2FsbGJhY2spOyB9KTsKLSAg
ICBoZWxwZXIucnVuKGZ1bmN0aW9uKCkgeyBmaWxlU3lzdGVtLnJvb3QuZ2V0RmlsZSgnZScsIHtj
cmVhdGU6dHJ1ZX0sIGRvbmUsIGVycm9yQ2FsbGJhY2spOyB9KTsKLQotICAgIGhlbHBlci5qb2lu
KHZlcmlmeSk7Ci19Ci0KLWZ1bmN0aW9uIGFzeW5jVGVzdDEoKSB7Ci0gICAgZGVidWcoIlN0YXJ0
aW5nIGFzeW5jIHRlc3Qgc3RhZ2UgMS4iKTsKLQotICAgIHZhciBoZWxwZXIgPSBuZXcgSm9pbkhl
bHBlcigpOwotICAgIHZhciByb290ID0gZmlsZVN5c3RlbS5yb290OwotCi0gICAgaGVscGVyLnJ1
bihmdW5jdGlvbigpIHsgcm9vdC5nZXRGaWxlKCdhJywge2NyZWF0ZTp0cnVlfSwgZnVuY3Rpb24o
ZW50cnkpIHsKLSAgICAgICAgYSA9IGVudHJ5OwotICAgICAgICBoZWxwZXIuZG9uZSgpOwotICAg
IH0sIGVycm9yQ2FsbGJhY2spOyB9KTsKLQotICAgIGhlbHBlci5ydW4oZnVuY3Rpb24oKSB7IHJv
b3QuZ2V0RGlyZWN0b3J5KCdiJywge2NyZWF0ZTp0cnVlfSwgZnVuY3Rpb24oZW50cnkpIHsKLSAg
ICAgICAgYiA9IGVudHJ5OwotICAgICAgICBoZWxwZXIuZG9uZSgpOwotICAgIH0sIGVycm9yQ2Fs
bGJhY2spOyB9KTsKLQotICAgIGhlbHBlci5ydW4oZnVuY3Rpb24oKSB7IHJvb3QuZ2V0RGlyZWN0
b3J5KCdjJywge2NyZWF0ZTp0cnVlfSwgZnVuY3Rpb24oZW50cnkpIHsKLSAgICAgICAgYyA9IGVu
dHJ5OwotICAgICAgICBoZWxwZXIuZG9uZSgpOwotICAgIH0sIGVycm9yQ2FsbGJhY2spOyB9KTsK
LQotICAgIGhlbHBlci5ydW4oZnVuY3Rpb24oKSB7IHJvb3QuZ2V0RmlsZSgnZCcsIHtjcmVhdGU6
dHJ1ZX0sIGZ1bmN0aW9uKGVudHJ5KSB7Ci0gICAgICAgIGQgPSBlbnRyeTsKLSAgICAgICAgaGVs
cGVyLmRvbmUoKTsKLSAgICB9LCBlcnJvckNhbGxiYWNrKTsgfSk7Ci0KLSAgICBoZWxwZXIuam9p
bihhc3luY1Rlc3QyKTsKLX0KLQotaWYgKHRoaXMud2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0pIHsK
LSAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLSAgICB2YXIgaGVscGVyID0gbmV3IEpvaW5IZWxw
ZXIoKTsKLSAgICBoZWxwZXIucnVuKGZ1bmN0aW9uKCkgewotICAgIHdlYmtpdFJlcXVlc3RGaWxl
U3lzdGVtLmFwcGx5KHRoaXMsIFt0aGlzLlRFTVBPUkFSWSwgMTAwLCBmdW5jdGlvbihmcykgewot
ICAgICAgICBkZWJ1ZygiR290IEZpbGVTeXN0ZW06IiArIGZzLm5hbWUpOwotICAgICAgICBmaWxl
U3lzdGVtID0gZnM7Ci0gICAgICAgIHJlbW92ZUFsbEluRGlyZWN0b3J5KGZpbGVTeXN0ZW0ucm9v
dCwgZnVuY3Rpb24oKXsgaGVscGVyLmRvbmUoKTsgfSwgZXJyb3JDYWxsYmFjayk7Ci0gICAgfSwg
ZXJyb3JDYWxsYmFja10pOyB9KTsKLSAgICBkZWJ1ZygicmVxdWVzdGVkIEZpbGVTeXN0ZW0uIik7
Ci0gICAgaGVscGVyLmpvaW4oYXN5bmNUZXN0MSk7Ci19IGVsc2UKLSAgICBkZWJ1ZygiVGhpcyB0
ZXN0IHJlcXVpcmVzIEZpbGVTeXN0ZW0gQVBJIHN1cHBvcnQuIik7CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2RpcmVjdG9yeS1lbnRyeS10by11cmkuanMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9kaXJlY3Rv
cnktZW50cnktdG8tdXJpLmpzCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2RpcmVjdG9yeS1lbnRyeS10by11cmkuanMJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMzQgKzAsMCBAQAotaWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgewotICAgIGlt
cG9ydFNjcmlwdHMoJ2ZzLXdvcmtlci1jb21tb24uanMnKTsKLSAgICBpbXBvcnRTY3JpcHRzKCcu
Li8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKLSAgICBpbXBvcnRTY3JpcHRzKCdm
cy10ZXN0LXV0aWwuanMnKTsKLX0KLQotZGVzY3JpcHRpb24oIk9idGFpbmluZyBVUkwgZnJvbSBE
aXJlY3RvcnlFbnRyeS4iKTsKLQotdmFyIGZpbGVTeXN0ZW0gPSBudWxsOwotdmFyIHRlc3REaXJl
Y3RvcnlOYW1lID0gJ3Rlc3REaXJlY3RvcnknOwotdmFyIHRlc3REaXJlY3RvcnlVUkkgPSBudWxs
OwotCi1mdW5jdGlvbiBlcnJvckNhbGxiYWNrKGVycm9yKSB7Ci0gICAgdGVzdEZhaWxlZCgiRXJy
b3Igb2NjdXJlZDoiICsgZXJyb3IuY29kZSk7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLWZ1
bmN0aW9uIGVudHJ5VG9VUkwoZW50cnkpIHsKLSAgICB0ZXN0RGlyZWN0b3J5VVJMID0gZW50cnku
dG9VUkwoKTsKLSAgICBzaG91bGRCZSgidGVzdERpcmVjdG9yeVVSTCIsICInZmlsZXN5c3RlbTpm
aWxlOi8vL3RlbXBvcmFyeS90ZXN0RGlyZWN0b3J5JyIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwot
fQotCi1mdW5jdGlvbiBjcmVhdGVUZXN0RGlyZWN0b3J5KCkgewotICAgIGZpbGVTeXN0ZW0ucm9v
dC5nZXREaXJlY3RvcnkodGVzdERpcmVjdG9yeU5hbWUsIHtjcmVhdGU6dHJ1ZX0sIGVudHJ5VG9V
UkwsIGVycm9yQ2FsbGJhY2spOwotfQotCi1mdW5jdGlvbiBmaWxlU3lzdGVtQ2FsbGJhY2soZnMp
IHsKLSAgICBmaWxlU3lzdGVtID0gZnM7Ci0gICAgcmVtb3ZlQWxsSW5EaXJlY3RvcnkoZmlsZVN5
c3RlbS5yb290LCBjcmVhdGVUZXN0RGlyZWN0b3J5LCBlcnJvckNhbGxiYWNrKTsKLX0KLQotdmFy
IGpzVGVzdElzQXN5bmMgPSB0cnVlOwotd2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0oVEVNUE9SQVJZ
LCAxMDAsIGZpbGVTeXN0ZW1DYWxsYmFjaywgZXJyb3JDYWxsYmFjayk7CkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZpbGUtZW50cnktdG8tdXJpLXN5bmMuanMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9maWxl
LWVudHJ5LXRvLXVyaS1zeW5jLmpzCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZpbGUtZW50cnktdG8tdXJpLXN5bmMuanMJKHdvcmtp
bmcgY29weSkKQEAgLTEsMTUgKzAsMCBAQAotaW1wb3J0U2NyaXB0cygnZnMtd29ya2VyLWNvbW1v
bi5qcycpOwotaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Jyk7Ci0KLWRlc2NyaXB0aW9uKCJPYnRhaW5pbmcgVVJMIGZyb20gRmlsZUVudHJ5LiIpOwotCi12
YXIgZmlsZVN5c3RlbSA9IHdlYmtpdFJlcXVlc3RGaWxlU3lzdGVtU3luYyhURU1QT1JBUlksIDEw
MCk7Ci1yZW1vdmVBbGxJbkRpcmVjdG9yeVN5bmMoZmlsZVN5c3RlbS5yb290KTsKLQotdmFyIHRl
c3RGaWxlTmFtZSA9ICd0ZXN0RmlsZUVudHJ5LnR4dCc7Ci12YXIgdGVzdEZpbGVFbnRyeSA9IGZp
bGVTeXN0ZW0ucm9vdC5nZXRGaWxlKHRlc3RGaWxlTmFtZSwge2NyZWF0ZTp0cnVlfSk7Ci0KLXNo
b3VsZEJlKCJ0ZXN0RmlsZUVudHJ5LnRvVVJMKCkiLCAiJ2ZpbGVzeXN0ZW06ZmlsZTovLy90ZW1w
b3JhcnkvdGVzdEZpbGVFbnRyeS50eHQnIik7Ci0KLXJlbW92ZUFsbEluRGlyZWN0b3J5U3luYyhm
aWxlU3lzdGVtLnJvb3QpOwotZmluaXNoSlNUZXN0KCk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZpbGUtZW50cnktdG8tdXJpLmpzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS1lbnRyeS10by11cmku
anMJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNv
dXJjZXMvZmlsZS1lbnRyeS10by11cmkuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsMzQgKzAsMCBA
QAotaWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgewotICAgIGltcG9ydFNjcmlwdHMoJ2ZzLXdvcmtl
ci1jb21tb24uanMnKTsKLSAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMnKTsKLSAgICBpbXBvcnRTY3JpcHRzKCdmcy10ZXN0LXV0aWwuanMnKTsKLX0K
LQotZGVzY3JpcHRpb24oIk9idGFpbmluZyBVUkwgZnJvbSBGaWxlRW50cnkuIik7Ci0KLXZhciBm
aWxlU3lzdGVtID0gbnVsbDsKLXZhciB0ZXN0RmlsZU5hbWUgPSAndGVzdEZpbGVFbnRyeS50eHQn
OwotdmFyIHRlc3RGaWxlVVJJID0gbnVsbDsKLQotZnVuY3Rpb24gZXJyb3JDYWxsYmFjayhlcnJv
cikgewotICAgIHRlc3RGYWlsZWQoIkVycm9yIG9jY3VyZWQ6IiArIGVycm9yLmNvZGUpOwotICAg
IGZpbmlzaEpTVGVzdCgpOwotfQotCi1mdW5jdGlvbiBlbnRyeVRvVVJMKGVudHJ5KSB7Ci0gICAg
dGVzdEZpbGVVUkwgPSBlbnRyeS50b1VSTCgpOwotICAgIHNob3VsZEJlKCJ0ZXN0RmlsZVVSTCIs
ICInZmlsZXN5c3RlbTpmaWxlOi8vL3RlbXBvcmFyeS90ZXN0RmlsZUVudHJ5LnR4dCciKTsKLSAg
ICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotZnVuY3Rpb24gY3JlYXRlVGVzdEZpbGUoKSB7Ci0gICAg
ZmlsZVN5c3RlbS5yb290LmdldEZpbGUodGVzdEZpbGVOYW1lLCB7Y3JlYXRlOnRydWV9LCBlbnRy
eVRvVVJMLCBlcnJvckNhbGxiYWNrKTsKLX0KLQotZnVuY3Rpb24gZmlsZVN5c3RlbUNhbGxiYWNr
KGZzKSB7Ci0gICAgZmlsZVN5c3RlbSA9IGZzOwotICAgIHJlbW92ZUFsbEluRGlyZWN0b3J5KGZp
bGVTeXN0ZW0ucm9vdCwgY3JlYXRlVGVzdEZpbGUsIGVycm9yQ2FsbGJhY2spOwotfQotCi12YXIg
anNUZXN0SXNBc3luYyA9IHRydWU7Ci13ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbShURU1QT1JBUlks
IDEwMCwgZmlsZVN5c3RlbUNhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS1mcm9tLWZpbGUtZW50cnktc3luYy5q
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2Zp
bGUtZnJvbS1maWxlLWVudHJ5LXN5bmMuanMJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRl
c3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS1mcm9tLWZpbGUtZW50cnktc3luYy5q
cwkod29ya2luZyBjb3B5KQpAQCAtMSwyMCArMCwwIEBACi0vLyBGSVhNRTogbW92ZSB0aGlzIHVu
ZGVyIHdvcmtlcnMvcmVzb3VyY2VzCi1pbXBvcnRTY3JpcHRzKCdmcy13b3JrZXItY29tbW9uLmpz
Jyk7Ci1pbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsK
LQotZGVzY3JpcHRpb24oIk9idGFpbmluZyBGaWxlIGZyb20gRmlsZUVudHJ5U3luYy4iKTsKLQot
dmFyIGZpbGVTeXN0ZW0gPSB3ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbVN5bmModGhpcy5URU1QT1JB
UlksIDEwMCk7Ci1yZW1vdmVBbGxJbkRpcmVjdG9yeVN5bmMoZmlsZVN5c3RlbS5yb290KTsKLQot
dmFyIHRlc3RGaWxlTmFtZSA9ICcvdGVzdEZpbGVFbnRyeS50eHQnOwotCi12YXIgdGVzdEZpbGVF
bnRyeSA9IGZpbGVTeXN0ZW0ucm9vdC5nZXRGaWxlKHRlc3RGaWxlTmFtZSwge2NyZWF0ZTp0cnVl
fSk7Ci12YXIgdGVzdEZpbGUgPSB0ZXN0RmlsZUVudHJ5LmZpbGUoKTsKLQotc2hvdWxkQmUoInRl
c3RGaWxlLm5hbWUiLCAidGVzdEZpbGVFbnRyeS5uYW1lIik7Ci1zaG91bGRCZSgidGVzdEZpbGUu
dHlwZSIsICIndGV4dC9wbGFpbiciKTsKLXNob3VsZEJlKCJ0ZXN0RmlsZS5zaXplIiwgIjAiKTsK
LQotcmVtb3ZlQWxsSW5EaXJlY3RvcnlTeW5jKGZpbGVTeXN0ZW0ucm9vdCk7Ci1maW5pc2hKU1Rl
c3QoKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS1m
cm9tLWZpbGUtZW50cnkuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lz
dGVtL3Jlc291cmNlcy9maWxlLWZyb20tZmlsZS1lbnRyeS5qcwkocmV2aXNpb24gMTU2NjkxKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9maWxlLWZyb20tZmlsZS1l
bnRyeS5qcwkod29ya2luZyBjb3B5KQpAQCAtMSw0MiArMCwwIEBACi1pZiAodGhpcy5pbXBvcnRT
Y3JpcHRzKSB7Ci0gICAgaW1wb3J0U2NyaXB0cygnZnMtd29ya2VyLWNvbW1vbi5qcycpOwotICAg
IGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOwotICAg
IGltcG9ydFNjcmlwdHMoJ2ZzLXRlc3QtdXRpbC5qcycpOwotfQotCi1kZXNjcmlwdGlvbigiT2J0
YWluaW5nIEZpbGUgZnJvbSBGaWxlRW50cnkuIik7Ci0KLXZhciBmaWxlU3lzdGVtID0gbnVsbDsK
LXZhciB0ZXN0RmlsZU5hbWUgPSAnL3Rlc3RGaWxlRW50cnkudHh0JzsKLXZhciB0ZXN0RmlsZUVu
dHJ5ID0gbnVsbDsKLXZhciB0ZXN0RmlsZSA9IG51bGw7Ci0KLWZ1bmN0aW9uIGVycm9yQ2FsbGJh
Y2soZXJyb3IpIHsKLSAgICB0ZXN0RmFpbGVkKCJFcnJvciBvY2N1cmVkOiIgKyBlcnJvci5jb2Rl
KTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotZnVuY3Rpb24gZmlsZUNhbGxiYWNrKGZpbGUp
IHsKLSAgICB0ZXN0RmlsZSA9IGZpbGU7Ci0gICAgc2hvdWxkQmUoInRlc3RGaWxlLm5hbWUiLCAi
dGVzdEZpbGVFbnRyeS5uYW1lIik7Ci0gICAgc2hvdWxkQmUoInRlc3RGaWxlLnR5cGUiLCAiJ3Rl
eHQvcGxhaW4nIik7Ci0gICAgc2hvdWxkQmUoInRlc3RGaWxlLnNpemUiLCAiMCIpOwotICAgIGZp
bmlzaEpTVGVzdCgpOwotfQotCi1mdW5jdGlvbiBnZXRGaWxlRnJvbUVudHJ5KGVudHJ5KSB7Ci0g
ICAgdGVzdEZpbGVFbnRyeSA9IGVudHJ5OwotICAgIGVudHJ5LmZpbGUoZmlsZUNhbGxiYWNrLCBl
cnJvckNhbGxiYWNrKTsKLX0KLQotZnVuY3Rpb24gY3JlYXRlVGVzdEZpbGUoKSB7Ci0gICAgZmls
ZVN5c3RlbS5yb290LmdldEZpbGUodGVzdEZpbGVOYW1lLCB7Y3JlYXRlOnRydWV9LCBnZXRGaWxl
RnJvbUVudHJ5LCBlcnJvckNhbGxiYWNrKTsKLX0KLQotZnVuY3Rpb24gZmlsZVN5c3RlbUNhbGxi
YWNrKGZzKSB7Ci0gICAgZmlsZVN5c3RlbSA9IGZzOwotICAgIHJlbW92ZUFsbEluRGlyZWN0b3J5
KGZpbGVTeXN0ZW0ucm9vdCwgY3JlYXRlVGVzdEZpbGUsIGVycm9yQ2FsbGJhY2spOwotfQotCi12
YXIganNUZXN0SXNBc3luYyA9IHRydWU7Ci13ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbShURU1QT1JB
UlksIDEwMCwgZmlsZVN5c3RlbUNhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS13cml0ZXItYWJvcnQtY29udGlu
dWUuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNl
cy9maWxlLXdyaXRlci1hYm9ydC1jb250aW51ZS5qcwkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9maWxlLXdyaXRlci1hYm9ydC1jb250
aW51ZS5qcwkod29ya2luZyBjb3B5KQpAQCAtMSwxODggKzAsMCBAQAotaWYgKHRoaXMuaW1wb3J0
U2NyaXB0cykgewotICAgIGltcG9ydFNjcmlwdHMoJ2ZzLXdvcmtlci1jb21tb24uanMnKTsKLSAg
ICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKLSAg
ICBpbXBvcnRTY3JpcHRzKCdmaWxlLXdyaXRlci11dGlscy5qcycpOwotfQotCi1kZXNjcmlwdGlv
bigiVGVzdCB0aGF0IEZpbGVXcml0ZXIgY2FuIGNvbnRpbnVlIGltbWVkaWF0ZWx5IGFmdGVyIGFu
IGFib3J0LiIpOwotCi12YXIgc2F3V3JpdGVTdGFydDsKLXZhciBzYXdBYm9ydDsKLXZhciBzYXdX
cml0ZUVuZDsKLXZhciB3cml0ZXI7Ci12YXIgZXhwZWN0ZWRMZW5ndGg7Ci12YXIgdHJ1bmNhdGVM
ZW5ndGg7Ci12YXIgYmxvYlNpemUgPSAxMTAwMDAwOwotdmFyIGN1cnJlbnRUZXN0ID0gMDsKLXZh
ciBibG9iID0gZ2V0QmxvYigpOwotCi0vLyBmaWxlU3lzdGVtT3ZlcmhlYWQgaXMgYW4gZXN0aW1h
dGUgb2YgZXh0cmEgc2l6ZSBuZWVkZWQgdG8gc2F2ZSBhIGZ1bGwgZmlsZQotLy8gc3lzdGVtLCBp
dCBuZWVkIHRvIGJlIGxhcmdlIGVub3VnaCB0byBhdm9pZCB0ZXN0IGZhaWx1cmUgZHVlIHRvIGZp
bGUgc3lzdGVtCi0vLyBxdW90YSBsaW1pdC4KLXZhciBmaWxlU3lzdGVtT3ZlcmhlYWQgPSBibG9i
U2l6ZSAqIDUgLyAxMDAwICsgMTAyNDsKLXZhciBmaWxlU3lzdGVtU2l6ZSA9IGJsb2JTaXplICog
MiArIGZpbGVTeXN0ZW1PdmVyaGVhZDsKLQotdmFyIG1ldGhvZFNldCA9IFsKLSAgeyAgLy8gU2V0
dXAgbWV0aG9kIHNldCB0aGF0IHdyaXRlcywgdGhlbiBhYm9ydHMgdGhhdCB3cml0ZSBiZWZvcmUg
Y29tcGxldGlvbi4KLSAgICBhY3Rpb24gOiBzdGFydFdyaXRlLAotICAgIHZlcmlmeUxlbmd0aCA6
IDAsCi0gICAgb253cml0ZXN0YXJ0IDogYWJvcnRXcml0ZSwKLSAgICBvbnByb2dyZXNzIDogbm9w
LAotICAgIG9ud3JpdGUgOiBvbkVycm9yLAotICAgIG9uYWJvcnQgOiBsb2dBYm9ydCwKLSAgICBv
bndyaXRlZW5kIDogY2hlY2tMZW5ndGhBbmRTdGFydE5leHRUZXN0Ci0gIH0sCi0gIHsgIC8vIE1l
dGhvZCBzZXQgdGhhdCBkb2VzIGEgY29tcGxldGUgd3JpdGUuCi0gICAgYWN0aW9uIDogc3RhcnRX
cml0ZSwKLSAgICB2ZXJpZnlMZW5ndGggOiBibG9iU2l6ZSwKLSAgICBvbndyaXRlc3RhcnQgOiBu
b3AsCi0gICAgb25wcm9ncmVzcyA6IG5vcCwKLSAgICBvbndyaXRlIDogbm9wLAotICAgIG9uYWJv
cnQgOiBvbkVycm9yLAotICAgIG9ud3JpdGVlbmQgOiBjaGVja0xlbmd0aEFuZFN0YXJ0TmV4dFRl
c3QKLSAgfSwKLSAgeyAvLyBNZXRob2Qgc2V0IHRoYXQgZG9lcyBhIGNvbXBsZXRlIHRydW5jYXRl
LCBqdXN0IHRvIGNsZWFuIHVwLgotICAgIGFjdGlvbiA6IHN0YXJ0VHJ1bmNhdGUsCi0gICAgdHJ1
bmNhdGVMZW5ndGggOiAwLAotICAgIHZlcmlmeUxlbmd0aCA6IDAsCi0gICAgb253cml0ZXN0YXJ0
IDogbm9wLAotICAgIG9ucHJvZ3Jlc3MgOiBub3AsCi0gICAgb253cml0ZSA6IG5vcCwKLSAgICBv
bmFib3J0IDogb25FcnJvciwKLSAgICBvbndyaXRlZW5kIDogY2hlY2tMZW5ndGhBbmRTdGFydE5l
eHRUZXN0Ci0gIH0sCi0gIHsgIC8vIFNldHVwIG1ldGhvZCBzZXQgdGhhdCB3cml0ZXMsIHRoZW4g
YWJvcnRzIHRoYXQgd3JpdGUganVzdCBhdCBjb21wbGV0aW9uLgotICAgIGFjdGlvbiA6IHN0YXJ0
V3JpdGUsCi0gICAgdmVyaWZ5TGVuZ3RoIDogYmxvYlNpemUsCi0gICAgb253cml0ZXN0YXJ0IDog
bm9wLAotICAgIG9ucHJvZ3Jlc3MgOiBhYm9ydE9uQ29tcGxldGUsCi0gICAgb253cml0ZSA6IG5v
cCwKLSAgICBvbmFib3J0IDogbG9nQWJvcnQsCi0gICAgb253cml0ZWVuZCA6IGNoZWNrTGVuZ3Ro
QW5kU3RhcnROZXh0VGVzdAotICB9LAotICB7ICAvLyBNZXRob2Qgc2V0IHRoYXQgZG9lcyBhIGNv
bXBsZXRlIHdyaXRlLgotICAgIGFjdGlvbiA6IHN0YXJ0V3JpdGUsCi0gICAgdmVyaWZ5TGVuZ3Ro
IDogYmxvYlNpemUgKiAyLCAvLyBBZGQgaW4gbGVmdG92ZXJzIGZyb20gcHJldmlvdXMgbWV0aG9k
LgotICAgIG9ud3JpdGVzdGFydCA6IG5vcCwKLSAgICBvbnByb2dyZXNzIDogbm9wLAotICAgIG9u
d3JpdGUgOiBub3AsCi0gICAgb25hYm9ydCA6IG9uRXJyb3IsCi0gICAgb253cml0ZWVuZCA6IGNo
ZWNrTGVuZ3RoQW5kU3RhcnROZXh0VGVzdAotICB9LAotICB7IC8vIE1ldGhvZCBzZXQgdGhhdCBk
b2VzIGEgY29tcGxldGUgdHJ1bmNhdGUsIGp1c3QgdG8gY2xlYW4gdXAuCi0gICAgYWN0aW9uIDog
c3RhcnRUcnVuY2F0ZSwKLSAgICB0cnVuY2F0ZUxlbmd0aCA6IDAsCi0gICAgdmVyaWZ5TGVuZ3Ro
IDogMCwKLSAgICBvbndyaXRlc3RhcnQgOiBub3AsCi0gICAgb25wcm9ncmVzcyA6IG5vcCwKLSAg
ICBvbndyaXRlIDogbm9wLAotICAgIG9uYWJvcnQgOiBvbkVycm9yLAotICAgIG9ud3JpdGVlbmQg
OiBjaGVja0xlbmd0aEFuZFN0YXJ0TmV4dFRlc3QKLSAgfSwKLSAgeyAgLy8gU2V0dXAgbWV0aG9k
IHNldCB0aGF0IHdyaXRlcywgdGhlbiBhYm9ydHMgdGhhdCB3cml0ZSBhcyBpdCBzdGFydHMuCi0g
ICAgYWN0aW9uIDogc3RhcnRXcml0ZSwKLSAgICB2ZXJpZnlMZW5ndGggOiAwLAotICAgIG9ud3Jp
dGVzdGFydCA6IGFib3J0V3JpdGUsCi0gICAgb25wcm9ncmVzcyA6IG5vcCwKLSAgICBvbndyaXRl
IDogb25FcnJvciwKLSAgICBvbmFib3J0IDogbG9nQWJvcnQsCi0gICAgb253cml0ZWVuZCA6IGNo
ZWNrTGVuZ3RoQW5kU3RhcnROZXh0VGVzdAotICB9LAotICB7IC8vIE1ldGhvZCBzZXQgdGhhdCBk
b2VzIGEgY29tcGxldGUgdHJ1bmNhdGUuCi0gICAgYWN0aW9uIDogc3RhcnRUcnVuY2F0ZSwKLSAg
ICB0cnVuY2F0ZUxlbmd0aCA6IDcsCi0gICAgdmVyaWZ5TGVuZ3RoIDogNywKLSAgICBvbndyaXRl
c3RhcnQgOiBub3AsCi0gICAgb25wcm9ncmVzcyA6IG5vcCwKLSAgICBvbndyaXRlIDogbm9wLAot
ICAgIG9uYWJvcnQgOiBvbkVycm9yLAotICAgIG9ud3JpdGVlbmQgOiBjaGVja0xlbmd0aEFuZFN0
YXJ0TmV4dFRlc3QKLSAgfQotXTsKLQotZnVuY3Rpb24gbm9wKCkgewotfQotCi1mdW5jdGlvbiB0
ZW5YQmxvYihibG9iKSB7Ci0gICAgdmFyIGJiID0gW107Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkg
PCAxMDsgKytpKSB7Ci0gICAgICAgIGJiLnB1c2goYmxvYik7Ci0gICAgfQotICAgIHJldHVybiBu
ZXcgQmxvYihiYik7Ci19Ci0KLWZ1bmN0aW9uIGdldEJsb2IoKSB7Ci0gICAgLy8gTGV0J3MgbWFr
ZSBpdCBhYm91dCBhIG1lZ2FieXRlLgotICAgIHZhciBibG9iID0gdGVuWEJsb2IobmV3IEJsb2Io
WyJsb3JlbSBpcHN1bSJdKSk7Ci0gICAgYmxvYiA9IHRlblhCbG9iKGJsb2IpOwotICAgIGJsb2Ig
PSB0ZW5YQmxvYihibG9iKTsKLSAgICBibG9iID0gdGVuWEJsb2IoYmxvYik7Ci0gICAgYmxvYiA9
IHRlblhCbG9iKGJsb2IpOwotICAgIHZhciBzaXplID0gYmxvYi5zaXplOwotICAgIHNob3VsZEJl
KCIiICsgc2l6ZSwgImJsb2JTaXplIik7Ci0gICAgcmV0dXJuIGJsb2I7Ci19Ci0KLWZ1bmN0aW9u
IGFib3J0V3JpdGUoZSkgewotICAgIHRlc3RQYXNzZWQoIkNhbGxpbmcgYWJvcnQiKTsKLSAgICB3
cml0ZXIuYWJvcnQoKTsKLX0KLQotZnVuY3Rpb24gYWJvcnRPbkNvbXBsZXRlKGUpIHsKLSAgICBp
ZiAoZS5sb2FkZWQgPT0gZS50b3RhbCkgewotICAgICAgICB0ZXN0UGFzc2VkKCJDYWxsaW5nIGFi
b3J0IGF0IHRoZSBlbmQgb2YgdGhlIHdyaXRlIik7Ci0gICAgICAgIHdyaXRlci5hYm9ydCgpOwot
ICAgIH0KLX0KLQotZnVuY3Rpb24gbG9nQWJvcnQoZSkgewotICAgIHRlc3RQYXNzZWQoIlNhdyBh
Ym9ydCIpOwotfQotCi1mdW5jdGlvbiBjaGVja0xlbmd0aEFuZFN0YXJ0TmV4dFRlc3QoZSkgewot
ICAgIHNob3VsZEJlKCJ3cml0ZXIubGVuZ3RoIiwgIiIgKyBleHBlY3RlZExlbmd0aCk7Ci0gICAg
dGVzdFBhc3NlZCgiU2F3IHdyaXRlZW5kICIgKyBjdXJyZW50VGVzdCArICIuIik7Ci0gICAgKytj
dXJyZW50VGVzdDsKLSAgICBpZiAoY3VycmVudFRlc3QgPCBtZXRob2RTZXQubGVuZ3RoKQotICAg
ICAgICBydW5UZXN0KCk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIHRlc3RQYXNzZWQoIkFsbCB0ZXN0
cyBjb21wbGV0ZS4iKTsKLSAgICAgICAgY2xlYW5VcCgpOwotICAgIH0KLX0KLQotZnVuY3Rpb24g
c3RhcnRXcml0ZSgpIHsKLSAgICB0ZXN0UGFzc2VkKCJDYWxsaW5nIHdyaXRlLiIpOwotICAgIHdy
aXRlci53cml0ZShibG9iKTsKLX0KLQotZnVuY3Rpb24gc3RhcnRUcnVuY2F0ZSgpIHsKLSAgICB0
ZXN0UGFzc2VkKCJDYWxsaW5nIHRydW5jYXRlLiIpOwotICAgIHdyaXRlci50cnVuY2F0ZSh0cnVu
Y2F0ZUxlbmd0aCk7Ci19Ci0KLWZ1bmN0aW9uIHNldHVwV3JpdGVyKG1ldGhvZFNldEluZGV4LCB3
cml0ZXIpIHsKLSAgICB3cml0ZXIub25lcnJvciA9IG9uRXJyb3I7Ci0KLSAgICB2YXIgbWV0aG9k
cyA9IG1ldGhvZFNldFttZXRob2RTZXRJbmRleF07Ci0gICAgd3JpdGVyLm9uYWJvcnQgPSBtZXRo
b2RzLm9uYWJvcnQ7Ci0gICAgd3JpdGVyLm9ud3JpdGVzdGFydCA9IG1ldGhvZHMub253cml0ZXN0
YXJ0OwotICAgIHdyaXRlci5vbnByb2dyZXNzID0gbWV0aG9kcy5vbnByb2dyZXNzOwotICAgIHdy
aXRlci5vbndyaXRlID0gbWV0aG9kcy5vbndyaXRlOwotICAgIHdyaXRlci5vbndyaXRlZW5kID0g
bWV0aG9kcy5vbndyaXRlZW5kOwotICAgIGV4cGVjdGVkTGVuZ3RoID0gbWV0aG9kcy52ZXJpZnlM
ZW5ndGg7Ci0gICAgdHJ1bmNhdGVMZW5ndGggPSBtZXRob2RzLnRydW5jYXRlTGVuZ3RoOwotICAg
IG1ldGhvZHMuYWN0aW9uKCk7Ci19Ci0KLWZ1bmN0aW9uIHJ1blRlc3QoKSB7Ci0gICAgc2V0dXBX
cml0ZXIoY3VycmVudFRlc3QsIHdyaXRlcik7Ci19Ci0KLXZhciBqc1Rlc3RJc0FzeW5jID0gdHJ1
ZTsKLXNldHVwQW5kUnVuVGVzdChmaWxlU3lzdGVtU2l6ZSwgJ2ZpbGUtd3JpdGVyLWFib3J0JywK
LSAgICAgICAgICAgICAgICBmdW5jdGlvbiAoZmlsZUVudHJ5LCBmaWxlV3JpdGVyKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGZpbGVFbnRyeUZvckNsZWFudXAgPSBmaWxlRW50cnk7Ci0gICAgICAg
ICAgICAgICAgICAgIHdyaXRlciA9IGZpbGVXcml0ZXI7Ci0gICAgICAgICAgICAgICAgICAgIHJ1
blRlc3QoKTsKLSAgICAgICAgICAgICAgICB9KTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmls
ZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS13cml0ZXItYWJvcnQtZGVwdGguanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9maWxlLXdyaXRlci1hYm9y
dC1kZXB0aC5qcwkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lz
dGVtL3Jlc291cmNlcy9maWxlLXdyaXRlci1hYm9ydC1kZXB0aC5qcwkod29ya2luZyBjb3B5KQpA
QCAtMSw3MSArMCwwIEBACi1pZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7Ci0gICAgaW1wb3J0U2Ny
aXB0cygnZnMtd29ya2VyLWNvbW1vbi5qcycpOwotICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOwotICAgIGltcG9ydFNjcmlwdHMoJ2ZpbGUtd3Jp
dGVyLXV0aWxzLmpzJyk7Ci19Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IHRoYXQgRmlsZVdyaXRlciBk
ZWZlbmRzIGFnYWluc3QgaW5maW5pdGUgcmVjdXJzaW9uIHZpYSBhYm9ydC4iKTsKLQotdmFyIHNh
d1dyaXRlU3RhcnQ7Ci12YXIgc2F3QWJvcnQ7Ci12YXIgc2F3V3JpdGVFbmQ7Ci12YXIgd3JpdGVy
OwotdmFyIGJsb2IgPSBuZXcgQmxvYihbImxvcmVtIGlwc3VtIl0pOwotdmFyIHJlY3Vyc2lvbkRl
cHRoID0gMDsKLXZhciBtZXRob2Q7Ci12YXIgdGVzdHNSdW4gPSAwOwotCi1mdW5jdGlvbiBvbldy
aXRlU3RhcnQoZSkgewotICAgIHRlc3RQYXNzZWQoIkNhbGxpbmcgYWJvcnQiKTsKLSAgICArK3Jl
Y3Vyc2lvbkRlcHRoOwotICAgIHdyaXRlci5hYm9ydCgpOwotfQotCi0vLyBXZSBzaG91bGQgYWx3
YXlzIGFib3J0IGJlZm9yZSBjb21wbGV0aW9uLgotZnVuY3Rpb24gb25Xcml0ZShlKSB7Ci0gICAg
dGVzdEZhaWxlZCgiSW4gb25Xcml0ZS4iKTsKLX0KLQotZnVuY3Rpb24gb25BYm9ydChlKSB7Ci0g
ICAgdGVzdFBhc3NlZCgiU2F3IGFib3J0Iik7Ci0gICAgdHJ5IHsKLSAgICAgIG1ldGhvZCgpOwot
ICAgIH0gY2F0Y2ggKGV4KSB7Ci0gICAgICBhc3NlcnQoZXguY29kZSA9PSAyKTsgIC8vIFNlY3Vy
aXR5IGVycm9yCi0gICAgICB0ZXN0UGFzc2VkKCJTYXcgc2VjdXJpdHkgZXJyb3IiKTsKLSAgICB9
Ci19Ci0KLWZ1bmN0aW9uIG9uV3JpdGVFbmQoZSkgewotICAgIC0tcmVjdXJzaW9uRGVwdGg7Ci0g
ICAgdGVzdFBhc3NlZCgiU2F3IHdyaXRlZW5kLiIpOwotICAgIGlmICghcmVjdXJzaW9uRGVwdGgp
IHsKLSAgICAgICAgKyt0ZXN0c1J1bjsKLSAgICAgICAgaWYgKHRlc3RzUnVuID09IDEpIHsKLSAg
ICAgICAgICAgIG1ldGhvZCA9IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIHRlc3RQYXNz
ZWQoIkNhbGxpbmcgdHJ1bmNhdGUuIik7Ci0gICAgICAgICAgICAgICAgd3JpdGVyLnRydW5jYXRl
KDcpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgc2V0VGltZW91dChtZXRob2QsIDApOyAg
Ly8gSW52b2tlIGZyb20gdGhlIHRvcCBsZXZlbCwgc28gdGhhdCB3ZSdyZSBub3QgYWxyZWFkeSBp
biBhIGhhbmRsZXIuCi0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBjbGVhblVwKCk7Ci0g
ICAgICAgIH0KLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHJ1blRlc3QodW51c2VkRmlsZUVudHJ5LCBm
aWxlV3JpdGVyKSB7Ci0gICAgd3JpdGVyID0gZmlsZVdyaXRlcjsKLSAgICBtZXRob2QgPSBmdW5j
dGlvbiAoKSB7Ci0gICAgICAgIHRlc3RQYXNzZWQoIkNhbGxpbmcgd3JpdGUuIik7Ci0gICAgICAg
IHdyaXRlci53cml0ZShibG9iKTsKLSAgICB9Ci0gICAgZmlsZVdyaXRlci5vbmVycm9yID0gb25F
cnJvcjsKLSAgICBmaWxlV3JpdGVyLm9uYWJvcnQgPSBvbkFib3J0OwotICAgIGZpbGVXcml0ZXIu
b253cml0ZXN0YXJ0ID0gb25Xcml0ZVN0YXJ0OwotICAgIGZpbGVXcml0ZXIub253cml0ZSA9IG9u
V3JpdGU7Ci0gICAgZmlsZVdyaXRlci5vbndyaXRlZW5kID0gb25Xcml0ZUVuZDsKLSAgICBtZXRo
b2QoKTsKLX0KLQotdmFyIGpzVGVzdElzQXN5bmMgPSB0cnVlOwotc2V0dXBBbmRSdW5UZXN0KDIq
MTAyNCoxMDI0LCAnZmlsZS13cml0ZXItYWJvcnQtZGVwdGgnLCBydW5UZXN0KTsKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS13cml0ZXItYWJvcnQuanMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9maWxl
LXdyaXRlci1hYm9ydC5qcwkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9m
aWxlc3lzdGVtL3Jlc291cmNlcy9maWxlLXdyaXRlci1hYm9ydC5qcwkod29ya2luZyBjb3B5KQpA
QCAtMSw4NCArMCwwIEBACi1pZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7Ci0gICAgaW1wb3J0U2Ny
aXB0cygnZnMtd29ya2VyLWNvbW1vbi5qcycpOwotICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOwotICAgIGltcG9ydFNjcmlwdHMoJ2ZpbGUtd3Jp
dGVyLXV0aWxzLmpzJyk7Ci19Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IHRoYXQgRmlsZVdyaXRlciBo
YW5kbGVzIGFib3J0IHByb3Blcmx5LiIpOwotCi12YXIgc2F3V3JpdGVTdGFydDsKLXZhciBzYXdB
Ym9ydDsKLXZhciBzYXdXcml0ZUVuZDsKLXZhciB3cml0ZXI7Ci0KLWZ1bmN0aW9uIHRlblhCbG9i
KGJsb2IpIHsKLSAgICB2YXIgYmIgPSBbXTsKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwOyAr
K2kpIHsKLSAgICAgICAgYmIucHVzaChibG9iKTsKLSAgICB9Ci0gICAgcmV0dXJuIG5ldyBCbG9i
KGJiKTsKLX0KLQotZnVuY3Rpb24gb25Xcml0ZVN0YXJ0KGUpIHsKLSAgICBhc3NlcnQod3JpdGVy
KTsKLSAgICBhc3NlcnQod3JpdGVyLnJlYWR5U3RhdGUgPT0gd3JpdGVyLldSSVRJTkcpOwotICAg
IGFzc2VydChlLnR5cGUgPT0gIndyaXRlc3RhcnQiKTsKLSAgICBhc3NlcnQoIXNhd1dyaXRlU3Rh
cnQpOwotICAgIGFzc2VydCghc2F3V3JpdGVFbmQpOwotICAgIGFzc2VydCghZS5sb2FkZWQpOwot
ICAgIHNhd1dyaXRlU3RhcnQgPSB0cnVlOwotICAgIHRlc3RQYXNzZWQoIkNhbGxpbmcgYWJvcnQi
KTsKLSAgICB3cml0ZXIuYWJvcnQoKTsKLX0KLQotLy8gV2Ugc2hvdWxkIGFsd2F5cyBhYm9ydCBi
ZWZvcmUgY29tcGxldGlvbi4KLWZ1bmN0aW9uIG9uV3JpdGUoZSkgewotICAgIHRlc3RGYWlsZWQo
IkluIG9uV3JpdGUuIik7Ci19Ci0KLWZ1bmN0aW9uIG9uQWJvcnQoZSkgewotICAgIGFzc2VydCh3
cml0ZXIucmVhZHlTdGF0ZSA9PSB3cml0ZXIuRE9ORSk7Ci0gICAgYXNzZXJ0KHdyaXRlci5lcnJv
ci5jb2RlID09IHdyaXRlci5lcnJvci5BQk9SVF9FUlIpOwotICAgIGFzc2VydChzYXdXcml0ZVN0
YXJ0KTsKLSAgICBhc3NlcnQoIXNhd1dyaXRlRW5kKTsKLSAgICBhc3NlcnQoIXNhd0Fib3J0KTsK
LSAgICBhc3NlcnQoZS50eXBlID09ICJhYm9ydCIpOwotICAgIHNhd0Fib3J0ID0gdHJ1ZTsKLSAg
ICB0ZXN0UGFzc2VkKCJTYXcgYWJvcnQiKTsKLX0KLQotZnVuY3Rpb24gb25Xcml0ZUVuZChlKSB7
Ci0gICAgYXNzZXJ0KHdyaXRlci5yZWFkeVN0YXRlID09IHdyaXRlci5ET05FKTsKLSAgICBhc3Nl
cnQod3JpdGVyLmVycm9yLmNvZGUgPT0gd3JpdGVyLmVycm9yLkFCT1JUX0VSUik7Ci0gICAgYXNz
ZXJ0KHNhd1dyaXRlU3RhcnQpOwotICAgIGFzc2VydChzYXdBYm9ydCk7Ci0gICAgYXNzZXJ0KCFz
YXdXcml0ZUVuZCk7Ci0gICAgYXNzZXJ0KGUudHlwZSA9PSAid3JpdGVlbmQiKTsKLSAgICBzYXdX
cml0ZUVuZCA9IHRydWU7Ci0gICAgdGVzdFBhc3NlZCgiU2F3IHdyaXRlZW5kLiIpOwotICAgIHdy
aXRlci5hYm9ydCgpOyAgLy8gVmVyaWZ5IHRoYXQgdGhpcyBkb2VzIG5vdGhpbmcgaW4gcmVhZHlT
dGF0ZSBET05FLgotICAgIGNsZWFuVXAoKTsKLX0KLQotZnVuY3Rpb24gc3RhcnRXcml0ZShmaWxl
V3JpdGVyKSB7Ci0gICAgLy8gTGV0J3MgbWFrZSBpdCBhYm91dCBhIG1lZ2FieXRlLgotICAgIHZh
ciBibG9iID0gdGVuWEJsb2IobmV3IEJsb2IoWyJsb3JlbSBpcHN1bSJdKSk7Ci0gICAgYmxvYiA9
IHRlblhCbG9iKGJsb2IpOwotICAgIGJsb2IgPSB0ZW5YQmxvYihibG9iKTsKLSAgICBibG9iID0g
dGVuWEJsb2IoYmxvYik7Ci0gICAgYmxvYiA9IHRlblhCbG9iKGJsb2IpOwotICAgIHdyaXRlciA9
IGZpbGVXcml0ZXI7Ci0gICAgZmlsZVdyaXRlci5vbmVycm9yID0gb25FcnJvcjsKLSAgICBmaWxl
V3JpdGVyLm9uYWJvcnQgPSBvbkFib3J0OwotICAgIGZpbGVXcml0ZXIub253cml0ZXN0YXJ0ID0g
b25Xcml0ZVN0YXJ0OwotICAgIGZpbGVXcml0ZXIub253cml0ZSA9IG9uV3JpdGU7Ci0gICAgZmls
ZVdyaXRlci5vbndyaXRlZW5kID0gb25Xcml0ZUVuZDsKLSAgICBmaWxlV3JpdGVyLmFib3J0KCk7
ICAvLyBWZXJpZnkgdGhhdCB0aGlzIGRvZXMgbm90aGluZyBpbiByZWFkeVN0YXRlIElOSVQuCi0g
ICAgZmlsZVdyaXRlci53cml0ZShibG9iKTsKLX0KLQotZnVuY3Rpb24gcnVuVGVzdCh1bnVzZWRG
aWxlRW50cnksIGZpbGVXcml0ZXIpIHsKLSAgICBzdGFydFdyaXRlKGZpbGVXcml0ZXIpOwotfQot
dmFyIGpzVGVzdElzQXN5bmMgPSB0cnVlOwotc2V0dXBBbmRSdW5UZXN0KDIqMTAyNCoxMDI0LCAn
ZmlsZS13cml0ZXItYWJvcnQnLCBydW5UZXN0KTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmls
ZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS13cml0ZXItZW1wdHktYmxvYi5qcwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZpbGUtd3JpdGVyLWVtcHR5
LWJsb2IuanMJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3Rl
bS9yZXNvdXJjZXMvZmlsZS13cml0ZXItZW1wdHktYmxvYi5qcwkod29ya2luZyBjb3B5KQpAQCAt
MSwyOSArMCwwIEBACi1pZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7Ci0gICAgaW1wb3J0U2NyaXB0
cygnZnMtd29ya2VyLWNvbW1vbi5qcycpOwotICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcycpOwotICAgIGltcG9ydFNjcmlwdHMoJ2ZpbGUtd3JpdGVy
LXV0aWxzLmpzJyk7Ci19Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IHRoYXQgRmlsZVdyaXRlciB3b3Jr
cyB3aXRob3V0IGNyYXNoIHdoZW4gdHJ5aW5nIHRvIHdyaXRlIGFuIGVtcHR5IGJsb2IuIik7Ci0K
LXZhciBmaWxlRW50cnk7Ci0KLWZ1bmN0aW9uIG9uVGVzdFN1Y2Nlc3MoKSB7Ci0gICAgdGVzdFBh
c3NlZCgiU3VjY2Vzc2Z1bGx5IHdyb3RlIGJsb2IuIik7Ci0gICAgY2xlYW5VcCgpOwotfQotCi1m
dW5jdGlvbiBzdGFydFdyaXRlKHdyaXRlcikgewotICAgIHZhciBibG9iID0gbmV3IEJsb2IoWyIi
XSk7Ci0gICAgd3JpdGVyLm9uZXJyb3IgPSBvbkVycm9yOwotICAgIHdyaXRlci5vbndyaXRlZW5k
ID0gb25UZXN0U3VjY2VzczsKLSAgICB3cml0ZXIud3JpdGUoYmxvYik7Ci19Ci0KLWZ1bmN0aW9u
IHJ1blRlc3QodW51c2VkRmlsZUVudHJ5LCBmaWxlV3JpdGVyKSB7Ci0gICAgc3RhcnRXcml0ZShm
aWxlV3JpdGVyKTsKLSAgICBnYygpOwotfQotdmFyIGpzVGVzdElzQXN5bmMgPSB0cnVlOwotc2V0
dXBBbmRSdW5UZXN0KDIgKiAxMDI0ICogMTAyNCwgJ2ZpbGUtd3JpdGVyLWVtcHR5LWJsb2InLCBy
dW5UZXN0KTsKLQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9m
aWxlLXdyaXRlci1ldmVudHMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxl
c3lzdGVtL3Jlc291cmNlcy9maWxlLXdyaXRlci1ldmVudHMuanMJKHJldmlzaW9uIDE1NjY5MSkK
KysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS13cml0ZXItZXZl
bnRzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEwNCArMCwwIEBACi1pZiAodGhpcy5pbXBvcnRT
Y3JpcHRzKSB7Ci0gICAgaW1wb3J0U2NyaXB0cygnZnMtd29ya2VyLWNvbW1vbi5qcycpOwotICAg
IGlmICghKCdkZXNjcmlwdGlvbicgaW4gc2VsZikpICAvLyBTaGFyZWQgd29ya2VycyB3aWxsIGFs
cmVhZHkgaGF2ZSBpbXBvcnRlZCB0aGlzLCBhbmQgaW1wb3J0aW5nIHR3aWNlIHdvdWxkIGJyZWFr
IGl0LgotICAgICAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMnKTsKLSAgICBpbXBvcnRTY3JpcHRzKCdmaWxlLXdyaXRlci11dGlscy5qcycpOwotfQot
Ci1kZXNjcmlwdGlvbigiVGVzdCB0aGF0IEZpbGVXcml0ZXIgcHJvZHVjZXMgcHJvcGVyIHByb2dy
ZXNzIGV2ZW50cy4iKTsKLQotdmFyIGZpbGVFbnRyeTsKLXZhciBzYXdXcml0ZVN0YXJ0OwotdmFy
IHNhd1dyaXRlOwotdmFyIHNhd1dyaXRlRW5kOwotdmFyIHNhd1Byb2dyZXNzOwotdmFyIHdyaXRl
cjsKLXZhciBsYXN0UHJvZ3Jlc3MgPSAwOwotdmFyIHRvQmVXcml0dGVuOwotCi1mdW5jdGlvbiB0
ZW5YQmxvYihibG9iKSB7Ci0gICAgdmFyIGJiID0gW107Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkg
PCAxMDsgKytpKSB7Ci0gICAgICAgIGJiLnB1c2goYmxvYik7Ci0gICAgfQotICAgIHJldHVybiBu
ZXcgQmxvYihiYik7Ci19Ci0KLWZ1bmN0aW9uIG9uV3JpdGVTdGFydChlKSB7Ci0gICAgYXNzZXJ0
KHdyaXRlcik7Ci0gICAgYXNzZXJ0KHdyaXRlci5yZWFkeVN0YXRlID09IHdyaXRlci5XUklUSU5H
KTsKLSAgICBhc3NlcnQoZS50eXBlID09ICJ3cml0ZXN0YXJ0Iik7Ci0gICAgYXNzZXJ0KCFzYXdX
cml0ZVN0YXJ0KTsKLSAgICBhc3NlcnQoIXNhd1Byb2dyZXNzKTsKLSAgICBhc3NlcnQoIXNhd1dy
aXRlKTsKLSAgICBhc3NlcnQoIXNhd1dyaXRlRW5kKTsKLSAgICBhc3NlcnQoIWUubG9hZGVkKTsK
LSAgICBhc3NlcnQoZS50b3RhbCA9PSB0b0JlV3JpdHRlbik7Ci0gICAgc2F3V3JpdGVTdGFydCA9
IHRydWU7Ci19Ci0KLWZ1bmN0aW9uIG9uUHJvZ3Jlc3MoZSkgewotICAgIGFzc2VydCh3cml0ZXIu
cmVhZHlTdGF0ZSA9PSB3cml0ZXIuV1JJVElORyk7Ci0gICAgYXNzZXJ0KHNhd1dyaXRlU3RhcnQp
OwotICAgIGFzc2VydCghc2F3V3JpdGUpOwotICAgIGFzc2VydCghc2F3V3JpdGVFbmQpOwotICAg
IGFzc2VydChlLnR5cGUgPT0gInByb2dyZXNzIik7Ci0gICAgYXNzZXJ0KGUubG9hZGVkIDw9IGUu
dG90YWwpOwotICAgIGFzc2VydChsYXN0UHJvZ3Jlc3MgPCBlLmxvYWRlZCk7Ci0gICAgYXNzZXJ0
KGUudG90YWwgPT0gdG9CZVdyaXR0ZW4pOwotICAgIGxhc3RQcm9ncmVzcyA9IGUubG9hZGVkOwot
ICAgIHNhd1Byb2dyZXNzID0gdHJ1ZTsKLX0KLQotZnVuY3Rpb24gb25Xcml0ZShlKSB7Ci0gICAg
YXNzZXJ0KHdyaXRlci5yZWFkeVN0YXRlID09IHdyaXRlci5ET05FKTsKLSAgICBhc3NlcnQoc2F3
V3JpdGVTdGFydCk7Ci0gICAgYXNzZXJ0KHNhd1Byb2dyZXNzKTsKLSAgICBhc3NlcnQobGFzdFBy
b2dyZXNzID09IGUudG90YWwpOwotICAgIGFzc2VydCghc2F3V3JpdGUpOwotICAgIGFzc2VydCgh
c2F3V3JpdGVFbmQpOwotICAgIGFzc2VydChlLnR5cGUgPT0gIndyaXRlIik7Ci0gICAgYXNzZXJ0
KGUubG9hZGVkID09IGUudG90YWwpOwotICAgIGFzc2VydChlLnRvdGFsID09IHRvQmVXcml0dGVu
KTsKLSAgICBzYXdXcml0ZSA9IHRydWU7Ci19Ci0KLWZ1bmN0aW9uIG9uV3JpdGVFbmQoZSkgewot
ICAgIGFzc2VydCh3cml0ZXIucmVhZHlTdGF0ZSA9PSB3cml0ZXIuRE9ORSk7Ci0gICAgYXNzZXJ0
KHNhd1dyaXRlU3RhcnQpOwotICAgIGFzc2VydChzYXdQcm9ncmVzcyk7Ci0gICAgYXNzZXJ0KHNh
d1dyaXRlKTsKLSAgICBhc3NlcnQoIXNhd1dyaXRlRW5kKTsKLSAgICBhc3NlcnQoZS50eXBlID09
ICJ3cml0ZWVuZCIpOwotICAgIGFzc2VydChlLmxvYWRlZCA9PSBlLnRvdGFsKTsKLSAgICBhc3Nl
cnQoZS50b3RhbCA9PSB0b0JlV3JpdHRlbik7Ci0gICAgc2F3V3JpdGVFbmQgPSB0cnVlOwotICAg
IHRlc3RQYXNzZWQoIlNhdyBhbGwgdGhlIHJpZ2h0IGV2ZW50cy4iKTsKLSAgICBjbGVhblVwKCk7
Ci19Ci0KLWZ1bmN0aW9uIHN0YXJ0V3JpdGUoZmlsZVdyaXRlcikgewotICAgIC8vIExldCdzIG1h
a2UgaXQgYWJvdXQgYSBtZWdhYnl0ZS4KLSAgICB2YXIgYmxvYiA9IHRlblhCbG9iKG5ldyBCbG9i
KFsibG9yZW0gaXBzdW0iXSkpOwotICAgIGJsb2IgPSB0ZW5YQmxvYihibG9iKTsKLSAgICBibG9i
ID0gdGVuWEJsb2IoYmxvYik7Ci0gICAgYmxvYiA9IHRlblhCbG9iKGJsb2IpOwotICAgIGJsb2Ig
PSB0ZW5YQmxvYihibG9iKTsKLSAgICB0b0JlV3JpdHRlbiA9IGJsb2Iuc2l6ZTsKLSAgICB3cml0
ZXIgPSBmaWxlV3JpdGVyOwotICAgIGZpbGVXcml0ZXIub25lcnJvciA9IG9uRXJyb3I7Ci0gICAg
ZmlsZVdyaXRlci5vbndyaXRlc3RhcnQgPSBvbldyaXRlU3RhcnQ7Ci0gICAgZmlsZVdyaXRlci5v
bnByb2dyZXNzID0gb25Qcm9ncmVzczsKLSAgICBmaWxlV3JpdGVyLm9ud3JpdGUgPSBvbldyaXRl
OwotICAgIGZpbGVXcml0ZXIub253cml0ZWVuZCA9IG9uV3JpdGVFbmQ7Ci0gICAgZmlsZVdyaXRl
ci53cml0ZShibG9iKTsKLX0KLQotZnVuY3Rpb24gcnVuVGVzdCh1bnVzZWRGaWxlRW50cnksIGZp
bGVXcml0ZXIpIHsKLSAgICBhc3NlcnQodHlwZW9mIGZpbGVXcml0ZXIuYWRkRXZlbnRMaXN0ZW5l
ciA9PT0gJ2Z1bmN0aW9uJyk7Ci0gICAgYXNzZXJ0KHR5cGVvZiBmaWxlV3JpdGVyLnJlbW92ZUV2
ZW50TGlzdGVuZXIgPT09ICdmdW5jdGlvbicpOwotICAgIGFzc2VydCh0eXBlb2YgZmlsZVdyaXRl
ci5kaXNwYXRjaEV2ZW50ID09PSAnZnVuY3Rpb24nKTsKLSAgICBzdGFydFdyaXRlKGZpbGVXcml0
ZXIpOwotfQotdmFyIGpzVGVzdElzQXN5bmMgPSB0cnVlOwotc2V0dXBBbmRSdW5UZXN0KDIqMTAy
NCoxMDI0LCAnZmlsZS13cml0ZXItZXZlbnRzJywgcnVuVGVzdCk7CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZpbGUtd3JpdGVyLWdjLWJsb2IuanMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9maWxlLXdyaXRl
ci1nYy1ibG9iLmpzCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVz
eXN0ZW0vcmVzb3VyY2VzL2ZpbGUtd3JpdGVyLWdjLWJsb2IuanMJKHdvcmtpbmcgY29weSkKQEAg
LTEsNDEgKzAsMCBAQAotaWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgewotICAgIGltcG9ydFNjcmlw
dHMoJ2ZzLXdvcmtlci1jb21tb24uanMnKTsKLSAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKLSAgICBpbXBvcnRTY3JpcHRzKCdmaWxlLXdyaXRl
ci11dGlscy5qcycpOwotfQotCi1kZXNjcmlwdGlvbigiVGVzdCB0aGF0IGEgYmxvYiB3b24ndCBn
ZXQgZ2FyYmFnZS1jb2xsZWN0ZWQgd2hpbGUgYmVpbmcgd3JpdHRlbiBvdXQgYnkgYSBGaWxlV3Jp
dGVyLiIpOwotCi12YXIgZmlsZUVudHJ5OwotCi1mdW5jdGlvbiBvblRlc3RTdWNjZXNzKCkgewot
ICAgIHRlc3RQYXNzZWQoIlN1Y2Nlc3NmdWxseSB3cm90ZSBibG9iLiIpOwotICAgIGNsZWFuVXAo
KTsKLX0KLQotZnVuY3Rpb24gdGVuWEJsb2IoYmxvYikgewotICAgIHZhciBiYiA9IFtdOwotICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgMTA7ICsraSkgewotICAgICAgICBiYi5wdXNoKGJsb2IpOwot
ICAgIH0KLSAgICByZXR1cm4gbmV3IEJsb2IoYmIpOwotfQotCi1mdW5jdGlvbiBzdGFydFdyaXRl
KHdyaXRlcikgewotICAgIC8vIExldCdzIG1ha2UgaXQgYWJvdXQgYSBtZWdhYnl0ZS4KLSAgICB2
YXIgYmxvYiA9IHRlblhCbG9iKG5ldyBCbG9iKFsibG9yZW0gaXBzdW0iXSkpOwotICAgIGJsb2Ig
PSB0ZW5YQmxvYihibG9iKTsKLSAgICBibG9iID0gdGVuWEJsb2IoYmxvYik7Ci0gICAgYmxvYiA9
IHRlblhCbG9iKGJsb2IpOwotICAgIGJsb2IgPSB0ZW5YQmxvYihibG9iKTsKLSAgICB3cml0ZXIu
b25lcnJvciA9IG9uRXJyb3I7Ci0gICAgd3JpdGVyLm9ud3JpdGVlbmQgPSBvblRlc3RTdWNjZXNz
OwotICAgIHdyaXRlci53cml0ZShibG9iKTsKLX0KLQotZnVuY3Rpb24gcnVuVGVzdCh1bnVzZWRG
aWxlRW50cnksIGZpbGVXcml0ZXIpIHsKLSAgICBzdGFydFdyaXRlKGZpbGVXcml0ZXIpOwotICAg
IGdjKCk7Ci19Ci12YXIganNUZXN0SXNBc3luYyA9IHRydWU7Ci1zZXR1cEFuZFJ1blRlc3QoMiox
MDI0KjEwMjQsICdmaWxlLXdyaXRlci1nYy1ibG9iJywgcnVuVGVzdCk7CkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZpbGUtd3JpdGVyLXN5bmMtdHJ1bmNhdGUt
ZXh0ZW5kLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNv
dXJjZXMvZmlsZS13cml0ZXItc3luYy10cnVuY2F0ZS1leHRlbmQuanMJKHJldmlzaW9uIDE1NjY5
MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS13cml0ZXIt
c3luYy10cnVuY2F0ZS1leHRlbmQuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsNDAgKzAsMCBAQAot
aWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgewotICAgIGltcG9ydFNjcmlwdHMoJy4uL3Jlc291cmNl
cy9mcy13b3JrZXItY29tbW9uLmpzJyk7Ci0gICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7Ci0gICAgaW1wb3J0U2NyaXB0cygnLi4vcmVzb3VyY2Vz
L2ZzLXRlc3QtdXRpbC5qcycpOwotICAgIGltcG9ydFNjcmlwdHMoJy4uL3Jlc291cmNlcy9maWxl
LXdyaXRlci11dGlscy5qcycpOwotfQotCi1kZXNjcmlwdGlvbigiVGVzdCB1c2luZyBGaWxlV3Jp
dGVyU3luYy50cnVuY2F0ZSB0byBleHRlbmQgYSBmaWxlLiIpOwotCi0vLyBTdGFydCB3aXRoIGFu
IGVtcHR5IEZpbGVTeXN0ZW0uCi12YXIgZmlsZVN5c3RlbSA9IHdlYmtpdFJlcXVlc3RGaWxlU3lz
dGVtU3luYyh0aGlzLlRFTVBPUkFSWSwgMTAwKTsKLXJlbW92ZUFsbEluRGlyZWN0b3J5U3luYyhm
aWxlU3lzdGVtLnJvb3QpOwotCi0vLyBQcmVwYXJlIGEgZmlsZSB3aXRoIHNhbXBsZSBjb250ZW50
cy4KLXZhciBlbnRyeSA9IGZpbGVTeXN0ZW0ucm9vdC5nZXRGaWxlKCdhJywge2NyZWF0ZTp0cnVl
LCBleGNsdXNpdmU6dHJ1ZX0pOwotdmFyIHdyaXRlciA9IGVudHJ5LmNyZWF0ZVdyaXRlcigpOwot
YXNzZXJ0KCF3cml0ZXIucG9zaXRpb24pOwotdmFyIHRlc3REYXRhID0gInRlc3QgZGF0YSI7Ci13
cml0ZXIud3JpdGUobmV3IEJsb2IoW3Rlc3REYXRhXSkpOwotYXNzZXJ0KHdyaXRlci5sZW5ndGgg
PT0gdGVzdERhdGEubGVuZ3RoKTsKLWFzc2VydCh3cml0ZXIucG9zaXRpb24gPT0gd3JpdGVyLmxl
bmd0aCk7Ci0KLS8vIEV4dGVuZCB0aGUgZmlsZSB2aWEgdHJ1bmNhdGUuCi12YXIgZXh0ZW5zaW9u
TGVuZ3RoID0gMTA7Ci13cml0ZXIudHJ1bmNhdGUod3JpdGVyLmxlbmd0aCArIGV4dGVuc2lvbkxl
bmd0aCk7Ci0KLS8vIFZlcmlmeSB0aGUgY29udGVudHMuCi1hc3NlcnQod3JpdGVyLmxlbmd0aCA9
PSB0ZXN0RGF0YS5sZW5ndGggKyBleHRlbnNpb25MZW5ndGgpOwotYXNzZXJ0KHdyaXRlci5wb3Np
dGlvbiA9PSB0ZXN0RGF0YS5sZW5ndGgpOwotdmFyIGZpbGUgPSBlbnRyeS5maWxlKCk7Ci12YXIg
cmVhZGVyID0gbmV3IEZpbGVSZWFkZXJTeW5jKCk7Ci12YXIgY29udGVudHMgPSByZWFkZXIucmVh
ZEFzQmluYXJ5U3RyaW5nKGZpbGUpOwotdmFyIGk7Ci1mb3IgKGkgPSAwOyBpIDwgdGVzdERhdGEu
bGVuZ3RoOyArK2kpCi0gICAgYXNzZXJ0KGNvbnRlbnRzLmNoYXJDb2RlQXQoaSkgPT0gdGVzdERh
dGEuY2hhckNvZGVBdChpKSk7Ci1mb3IgKDsgaSA8IHdyaXRlci5sZW5ndGg7ICsraSkKLSAgICBh
c3NlcnQoIWNvbnRlbnRzLmNoYXJDb2RlQXQoaSkpOwotCi10ZXN0UGFzc2VkKCJUcnVuY2F0ZSBl
eHRlbnNpb24gdmVyaWZpZWQuIik7Ci1maW5pc2hKU1Rlc3QoKTsKSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS13cml0ZXItc3luYy13cml0ZS1vdmVybGFw
cGVkLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJj
ZXMvZmlsZS13cml0ZXItc3luYy13cml0ZS1vdmVybGFwcGVkLmpzCShyZXZpc2lvbiAxNTY2OTEp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZpbGUtd3JpdGVyLXN5
bmMtd3JpdGUtb3ZlcmxhcHBlZC5qcwkod29ya2luZyBjb3B5KQpAQCAtMSw5MSArMCwwIEBACi1p
ZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7Ci0gICAgaW1wb3J0U2NyaXB0cygnLi4vcmVzb3VyY2Vz
L2ZzLXdvcmtlci1jb21tb24uanMnKTsKLSAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMnKTsKLSAgICBpbXBvcnRTY3JpcHRzKCcuLi9yZXNvdXJjZXMv
ZnMtdGVzdC11dGlsLmpzJyk7Ci0gICAgaW1wb3J0U2NyaXB0cygnLi4vcmVzb3VyY2VzL2ZpbGUt
d3JpdGVyLXV0aWxzLmpzJyk7Ci19Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IHVzaW5nIEZpbGVXcml0
ZXJTeW5jLnNlZWsgdG8gd3JpdGUgb3ZlcmxhcHBpbmcgZXhpc3RpbmcgZGF0YSBpbiBhIGZpbGUu
Iik7Ci0KLS8vIFN0YXJ0IHdpdGggYW4gZW1wdHkgRmlsZVN5c3RlbS4KLXZhciBmaWxlU3lzdGVt
ID0gd2Via2l0UmVxdWVzdEZpbGVTeXN0ZW1TeW5jKHRoaXMuVEVNUE9SQVJZLCAxMDApOwotcmVt
b3ZlQWxsSW5EaXJlY3RvcnlTeW5jKGZpbGVTeXN0ZW0ucm9vdCk7Ci0KLS8vIFByZXBhcmUgYSBm
aWxlIHdpdGggc2FtcGxlIGNvbnRlbnRzLgotdmFyIGVudHJ5ID0gZmlsZVN5c3RlbS5yb290Lmdl
dEZpbGUoJ2EnLCB7Y3JlYXRlOnRydWUsIGV4Y2x1c2l2ZTp0cnVlfSk7Ci12YXIgd3JpdGVyID0g
ZW50cnkuY3JlYXRlV3JpdGVyKCk7Ci1hc3NlcnQoIXdyaXRlci5wb3NpdGlvbik7Ci12YXIgdGVz
dERhdGEgPSAidGVzdCBkYXRhIjsKLXZhciBibG9iID0gbmV3IEJsb2IoW3Rlc3REYXRhXSk7Ci13
cml0ZXIud3JpdGUoYmxvYik7Ci1hc3NlcnQod3JpdGVyLmxlbmd0aCA9PSB0ZXN0RGF0YS5sZW5n
dGgpOwotYXNzZXJ0KHdyaXRlci5wb3NpdGlvbiA9PSB3cml0ZXIubGVuZ3RoKTsKLQotLy8gU2Vl
ayBiYWNrIHRvIGZyb20gdGhlIGVuZCwgdGhlbiBvdmVyd3JpdGUsIGV4dGVuZGluZyB0aGUgZmls
ZS4KLXZhciBleHRlbnNpb25PZmZzZXQgPSAtNDsKLXdyaXRlci5zZWVrKGV4dGVuc2lvbk9mZnNl
dCk7Ci13cml0ZXIud3JpdGUoYmxvYik7Ci0KLS8vIFZlcmlmeSB0aGUgY29udGVudHMuCi1hc3Nl
cnQod3JpdGVyLmxlbmd0aCA9PSAyICogdGVzdERhdGEubGVuZ3RoICsgZXh0ZW5zaW9uT2Zmc2V0
KTsKLWFzc2VydCh3cml0ZXIucG9zaXRpb24gPT0gd3JpdGVyLmxlbmd0aCk7Ci12YXIgZmlsZSA9
IGVudHJ5LmZpbGUoKTsKLXZhciByZWFkZXIgPSBuZXcgRmlsZVJlYWRlclN5bmMoKTsKLXZhciBj
b250ZW50cyA9IHJlYWRlci5yZWFkQXNCaW5hcnlTdHJpbmcoZmlsZSk7Ci12YXIgaTsKLWZvciAo
aSA9IDA7IGkgPCB0ZXN0RGF0YS5sZW5ndGggKyBleHRlbnNpb25PZmZzZXQ7ICsraSkKLSAgICBh
c3NlcnQoY29udGVudHMuY2hhckNvZGVBdChpKSA9PSB0ZXN0RGF0YS5jaGFyQ29kZUF0KGkpKTsK
LXZhciBqOwotZm9yIChqID0gMDsgaSA8IHdyaXRlci5sZW5ndGg7ICsraSwgKytqKQotICAgIGFz
c2VydChjb250ZW50cy5jaGFyQ29kZUF0KGkpID09IHRlc3REYXRhLmNoYXJDb2RlQXQoaikpOwot
dGVzdFBhc3NlZCgiT3ZlcmxhcHBlZCB3cml0ZSAxIHZlcmlmaWVkLiIpOwotCi0vLyBUcnVuY2F0
ZSBiYWNrIHRvIGVtcHR5IGFuZCByZXNldCB0aGUgY29udGVudHMuCi13cml0ZXIudHJ1bmNhdGUo
MCk7Ci1hc3NlcnQoIXdyaXRlci5wb3NpdGlvbik7Ci1hc3NlcnQoIXdyaXRlci5sZW5ndGgpOwot
d3JpdGVyLndyaXRlKGJsb2IpOwotYXNzZXJ0KHdyaXRlci5sZW5ndGggPT0gdGVzdERhdGEubGVu
Z3RoKTsKLWFzc2VydCh3cml0ZXIucG9zaXRpb24gPT0gd3JpdGVyLmxlbmd0aCk7Ci0KLS8vIFNl
ZWsgZm9yd2FyZCBmcm9tIHRoZSBiZWdpbm5pbmcsIHRoZW4gb3ZlcndyaXRlLCBleHRlbmRpbmcg
dGhlIGZpbGUuCi1leHRlbnNpb25PZmZzZXQgPSA0Owotd3JpdGVyLnNlZWsoZXh0ZW5zaW9uT2Zm
c2V0KTsKLXdyaXRlci53cml0ZShibG9iKTsKLWFzc2VydCh3cml0ZXIubGVuZ3RoID09IHRlc3RE
YXRhLmxlbmd0aCArIGV4dGVuc2lvbk9mZnNldCk7Ci1hc3NlcnQod3JpdGVyLnBvc2l0aW9uID09
IHdyaXRlci5sZW5ndGgpOwotCi0vLyBWZXJpZnkgdGhlIGNvbnRlbnRzLgotY29udGVudHMgPSBy
ZWFkZXIucmVhZEFzQmluYXJ5U3RyaW5nKGZpbGUpOwotZm9yIChpID0gMDsgaSA8IGV4dGVuc2lv
bk9mZnNldDsgKytpKQotICAgIGFzc2VydChjb250ZW50cy5jaGFyQ29kZUF0KGkpID09IHRlc3RE
YXRhLmNoYXJDb2RlQXQoaSkpOwotZm9yIChqID0gMDsgaSA8IHdyaXRlci5sZW5ndGg7ICsraSwg
KytqKQotICAgIGFzc2VydChjb250ZW50cy5jaGFyQ29kZUF0KGkpID09IHRlc3REYXRhLmNoYXJD
b2RlQXQoaikpOwotdGVzdFBhc3NlZCgiT3ZlcmxhcHBlZCB3cml0ZSAyIHZlcmlmaWVkLiIpOwot
Ci0vLyBUcnVuY2F0ZSBiYWNrIHRvIGVtcHR5IGFuZCByZXNldCB0aGUgY29udGVudHMuCi13cml0
ZXIudHJ1bmNhdGUoMCk7Ci1hc3NlcnQoIXdyaXRlci5wb3NpdGlvbik7Ci1hc3NlcnQoIXdyaXRl
ci5sZW5ndGgpOwotd3JpdGVyLndyaXRlKGJsb2IpOwotd3JpdGVyLndyaXRlKGJsb2IpOwotYXNz
ZXJ0KHdyaXRlci5sZW5ndGggPT0gMiAqIHRlc3REYXRhLmxlbmd0aCk7Ci1hc3NlcnQod3JpdGVy
LnBvc2l0aW9uID09IHdyaXRlci5sZW5ndGgpOwotCi0vLyBTZWVrIGZvcndhcmQgZnJvbSB0aGUg
YmVnaW5uaW5nLCB0aGVuIG92ZXJ3cml0ZSBpbiB0aGUgbWlkZGxlIG9mIHRoZSBmaWxlLgotZXh0
ZW5zaW9uT2Zmc2V0ID0gNDsKLXdyaXRlci5zZWVrKGV4dGVuc2lvbk9mZnNldCk7Ci13cml0ZXIu
d3JpdGUoYmxvYik7Ci1hc3NlcnQod3JpdGVyLmxlbmd0aCA9PSAyICogdGVzdERhdGEubGVuZ3Ro
KTsKLWFzc2VydCh3cml0ZXIucG9zaXRpb24gPT0gdGVzdERhdGEubGVuZ3RoICsgZXh0ZW5zaW9u
T2Zmc2V0KTsKLQotLy8gVmVyaWZ5IHRoZSBjb250ZW50cy4KLWNvbnRlbnRzID0gcmVhZGVyLnJl
YWRBc0JpbmFyeVN0cmluZyhmaWxlKTsKLWZvciAoaSA9IDA7IGkgPCBleHRlbnNpb25PZmZzZXQ7
ICsraSkKLSAgICBhc3NlcnQoY29udGVudHMuY2hhckNvZGVBdChpKSA9PSB0ZXN0RGF0YS5jaGFy
Q29kZUF0KGkpKTsKLWZvciAoaiA9IDA7IGkgPCB0ZXN0RGF0YS5sZW5ndGggKyBleHRlbnNpb25P
ZmZzZXQ7ICsraSwgKytqKQotICAgIGFzc2VydChjb250ZW50cy5jaGFyQ29kZUF0KGkpID09IHRl
c3REYXRhLmNoYXJDb2RlQXQoaikpOwotZm9yIChqID0gZXh0ZW5zaW9uT2Zmc2V0OyBpIDwgd3Jp
dGVyLmxlbmd0aDsgKytpLCArK2opCi0gICAgYXNzZXJ0KGNvbnRlbnRzLmNoYXJDb2RlQXQoaSkg
PT0gdGVzdERhdGEuY2hhckNvZGVBdChqKSk7Ci10ZXN0UGFzc2VkKCJPdmVybGFwcGVkIHdyaXRl
IDMgdmVyaWZpZWQuIik7Ci1maW5pc2hKU1Rlc3QoKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
ZmlsZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS13cml0ZXItdHJ1bmNhdGUtZXh0ZW5kLmpzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS13cml0
ZXItdHJ1bmNhdGUtZXh0ZW5kLmpzCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZpbGUtd3JpdGVyLXRydW5jYXRlLWV4dGVuZC5qcwko
d29ya2luZyBjb3B5KQpAQCAtMSwzOSArMCwwIEBACi1pZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7
Ci0gICAgaW1wb3J0U2NyaXB0cygnZnMtd29ya2VyLWNvbW1vbi5qcycpOwotICAgIGltcG9ydFNj
cmlwdHMoJy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOwotICAgIGltcG9ydFNj
cmlwdHMoJ2ZpbGUtd3JpdGVyLXV0aWxzLmpzJyk7Ci19Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IG9m
IGV4dGVuZGluZyBhIGZpbGUgdXNpbmcgdHJ1bmNhdGUoKS4iKTsKLQotZnVuY3Rpb24gb25UZXN0
U3VjY2VlZGVkKCkKLXsKLSAgICB0ZXN0UGFzc2VkKCJUcnVuY2F0ZSBleHRlbnNpb24gdmVyaWZp
ZWQuIik7Ci0gICAgY2xlYW5VcCgpOwotfQotCi1mdW5jdGlvbiB0cnVuY2F0ZVRvRXh0ZW5kKGZp
bGVFbnRyeSwgZmlsZVdyaXRlciwgY29udGVudHMsIG9uU3VjY2VzcykKLXsKLSAgICB2YXIgZXh0
ZW5zaW9uID0gNTsKLSAgICB2YXIgbGVuZ3RoQ2hlY2tlciA9IGZ1bmN0aW9uKCkgewotICAgICAg
ICB2ZXJpZnlGaWxlTGVuZ3RoKGZpbGVFbnRyeSwgY29udGVudHMubGVuZ3RoICsgZXh0ZW5zaW9u
LCBvblN1Y2Nlc3MpOwotICAgIH07Ci0gICAgdmFyIGV4dGVuc2lvbkNoZWNrZXIgPSBmdW5jdGlv
bigpIHsKLSAgICAgICAgdmVyaWZ5Qnl0ZVJhbmdlSXNaZXJvZXMoZmlsZUVudHJ5LCBjb250ZW50
cy5sZW5ndGgsIGV4dGVuc2lvbiwgbGVuZ3RoQ2hlY2tlcik7Ci0gICAgfTsKLSAgICBmaWxlV3Jp
dGVyLm9ud3JpdGUgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgdmVyaWZ5Qnl0ZVJhbmdlQXNTdHJp
bmcoZmlsZUVudHJ5LCAwLCBjb250ZW50cywgZXh0ZW5zaW9uQ2hlY2tlcik7Ci0gICAgfTsKLSAg
ICBmaWxlV3JpdGVyLnRydW5jYXRlKGNvbnRlbnRzLmxlbmd0aCArIGV4dGVuc2lvbik7Ci19Ci0K
LWZ1bmN0aW9uIHJ1blRlc3QoZmlsZUVudHJ5LCBmaWxlV3JpdGVyKSB7Ci0gICAgdmFyIGNvbnRl
bnRzID0gIkxvcmVtIGlwc3VtIjsKLSAgICB3cml0ZVN0cmluZyhmaWxlRW50cnksIGZpbGVXcml0
ZXIsIDAsIGNvbnRlbnRzLAotICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgewotICAgICAgICAg
ICAgICAgICAgICB0cnVuY2F0ZVRvRXh0ZW5kKGZpbGVFbnRyeSwgZmlsZVdyaXRlciwgY29udGVu
dHMsIG9uVGVzdFN1Y2NlZWRlZCk7Ci0gICAgICAgICAgICAgICAgfSk7Ci19Ci0KLXZhciBqc1Rl
c3RJc0FzeW5jID0gdHJ1ZTsKLXNldHVwQW5kUnVuVGVzdCgxMDI0LCAnZmlsZS13cml0ZXItdHJ1
bmNhdGUtZXh0ZW5kJywgcnVuVGVzdCk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0
ZW0vcmVzb3VyY2VzL2ZpbGUtd3JpdGVyLXV0aWxzLmpzCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS13cml0ZXItdXRpbHMuanMJKHJldmlz
aW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZmls
ZS13cml0ZXItdXRpbHMuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsMTY5ICswLDAgQEAKLWZ1bmN0
aW9uIHN0cmluZ2lmeU9iaihvKQotewotICAgIHMgPSAiIjsKLSAgICBpZiAobykKLSAgICAgICAg
Zm9yIChpbmRleCBpbiBvKSB7Ci0gICAgICAgICAgICBzICs9IGluZGV4ICsgIjogIiArIG9baW5k
ZXhdICsgIjsiOwotICAgICAgICB9Ci0gICAgcmV0dXJuIHM7Ci19Ci0KLWZ1bmN0aW9uIG9uRXJy
b3IoZSkKLXsKLSAgICB0ZXN0RmFpbGVkKCJHb3QgZXJyb3I6ICIgKyBzdHJpbmdpZnlPYmooZSkp
OwotICAgIGNsZWFuVXAoKTsKLX0KLQotZnVuY3Rpb24gYXNzZXJ0KHMpCi17Ci0gICAgaWYgKCFz
KSB7Ci0gICAgICAgIHZhciBlID0gbmV3IEVycm9yKCJBc3NlcnRpb24gZmFpbGVkLiAiKTsKLSAg
ICAgICAgb25FcnJvcihlKTsKLSAgICAgICAgdGhyb3cgZTsKLSAgICB9Ci19Ci0KLXZhciBmaWxl
RW50cnlGb3JDbGVhbnVwOyAgLy8gU2V0IGFzIHNvb24gYXMgd2UgaGF2ZSBvbmUuCi0KLWZ1bmN0
aW9uIGNsZWFuVXAoKQotewotICAgIGlmIChmaWxlRW50cnlGb3JDbGVhbnVwKSB7Ci0gICAgICAg
IHRyeSB7Ci0gICAgICAgICAgICBmaWxlRW50cnlGb3JDbGVhbnVwLnJlbW92ZShmaW5pc2hKU1Rl
c3QsIGZpbmlzaEpTVGVzdCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0gY2F0Y2gg
KGV4KSB7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLS8vIEdl
bmVyaWMgZnVuY3Rpb24gdGhhdCBnZXRzIGEgRmlsZSBmcm9tIGEgRmlsZUVudHJ5IGFuZCBjYWxs
cyBhIGN1c3RvbSB2ZXJpZmljYXRpb24gZnVuY3Rpb24gb24gaXQuCi1mdW5jdGlvbiB2ZXJpZnlG
aWxlQ29udGVudHMoZmlsZUVudHJ5LCB2ZXJpZnlGdW5jLCBhcmcwLCBhcmcxLCBvblN1Y2Nlc3Mp
Ci17Ci0gICAgZmlsZUVudHJ5LmZpbGUoCi0gICAgICAgIGZ1bmN0aW9uKGZpbGUpIHsKLSAgICAg
ICAgICAgIHZlcmlmeUZ1bmMoZmlsZSwgYXJnMCwgYXJnMSwgb25TdWNjZXNzKTsKLSAgICAgICAg
fSwKLSAgICAgICAgb25FcnJvcik7Ci19Ci0KLS8vIEhlbHBlciBmdW5jdGlvbiB1c2VkIHdpdGgg
dmVyaWZ5RmlsZUNvbnRlbnRzLgotZnVuY3Rpb24gdmVyaWZ5RmlsZUxlbmd0aEhlbHBlcihmaWxl
LCBsZW5ndGgsIHVudXNlZCwgb25TdWNjZXNzKQotewotICAgIGFzc2VydChmaWxlLnNpemUgPT0g
bGVuZ3RoKTsKLSAgICBvblN1Y2Nlc3MoKTsKLX0KLQotLy8gVmVyaWZpZXMgdGhhdCB0aGUgY29u
dGVudHMgb2YgZmlsZUVudHJ5IGhhdmUgdGhlIHN1cHBsaWVkIGxlbmd0aC4KLWZ1bmN0aW9uIHZl
cmlmeUZpbGVMZW5ndGgoZmlsZUVudHJ5LCBsZW5ndGgsIG9uU3VjY2VzcykKLXsKLSAgICB2ZXJp
ZnlGaWxlQ29udGVudHMoZmlsZUVudHJ5LCB2ZXJpZnlGaWxlTGVuZ3RoSGVscGVyLCBsZW5ndGgs
IG51bGwsIG9uU3VjY2Vzcyk7Ci19Ci0KLS8vIEhlbHBlciBmdW5jdGlvbiB1c2VkIHdpdGggdmVy
aWZ5RmlsZUNvbnRlbnRzLgotZnVuY3Rpb24gdmVyaWZ5Qnl0ZVJhbmdlSXNaZXJvZXNIZWxwZXIo
ZmlsZSwgc3RhcnQsIGxlbmd0aCwgb25TdWNjZXNzKQotewotICAgIHZhciBmaWxlUmVhZGVyID0g
bmV3IEZpbGVSZWFkZXIoKTsKLSAgICBmaWxlUmVhZGVyLm9uZXJyb3IgPSBvbkVycm9yOwotICAg
IGZpbGVSZWFkZXIub25sb2FkID0KLSAgICAgICAgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICB2
YXIgcmVzdWx0ID0gZmlsZVJlYWRlci5yZXN1bHQ7Ci0gICAgICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IGxlbmd0aDsgaSsrKQotICAgICAgICAgICAgICAgIGFzc2VydChyZXN1bHQuY2hhckNv
ZGVBdChpKSA9PSAwKTsKLSAgICAgICAgICAgIG9uU3VjY2VzcygpOwotICAgICAgICB9OwotICAg
IGZpbGVSZWFkZXIucmVhZEFzQmluYXJ5U3RyaW5nKGZpbGUuc2xpY2Uoc3RhcnQsIHN0YXJ0ICsg
bGVuZ3RoKSk7Ci19Ci0KLS8vIFZlcmlmaWVzIHRoYXQgZmlsZUVudHJ5LCBhdCBvZmZzZXQsIGlz
IGFsbCB6ZXJvZXMgZm9yIGxlbmd0aCBieXRlcy4KLWZ1bmN0aW9uIHZlcmlmeUJ5dGVSYW5nZUlz
WmVyb2VzKGZpbGVFbnRyeSwgb2Zmc2V0LCBsZW5ndGgsIG9uU3VjY2VzcykKLXsKLSAgICB2ZXJp
ZnlGaWxlQ29udGVudHMoZmlsZUVudHJ5LCB2ZXJpZnlCeXRlUmFuZ2VJc1plcm9lc0hlbHBlciwg
b2Zmc2V0LCBsZW5ndGgsIG9uU3VjY2Vzcyk7Ci19Ci0KLS8vIEhlbHBlciBmdW5jdGlvbiB1c2Vk
IHdpdGggdmVyaWZ5RmlsZUNvbnRlbnRzLgotZnVuY3Rpb24gdmVyaWZ5Qnl0ZVJhbmdlQXNTdHJp
bmdIZWxwZXIoZmlsZSwgc3RhcnQsIGRhdGEsIG9uU3VjY2VzcykKLXsKLSAgICB2YXIgZmlsZVJl
YWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7Ci0gICAgZmlsZVJlYWRlci5vbmVycm9yID0gb25FcnJv
cjsKLSAgICBmaWxlUmVhZGVyLm9ubG9hZCA9Ci0gICAgICAgIGZ1bmN0aW9uKCkgewotICAgICAg
ICAgICAgYXNzZXJ0KGZpbGVSZWFkZXIucmVzdWx0ID09IGRhdGEpOwotICAgICAgICAgICAgb25T
dWNjZXNzKCk7Ci0gICAgICAgIH07Ci0gICAgZmlsZVJlYWRlci5yZWFkQXNUZXh0KGZpbGUuc2xp
Y2Uoc3RhcnQsIHN0YXJ0ICsgZGF0YS5sZW5ndGgpKTsKLX0KLQotLy8gVmVyaWZpZXMgdGhhdCB0
aGUgY29udGVudHMgb2YgZmlsZUVudHJ5LCBhdCBvZmZzZXQsIG1hdGNoIGNvbnRlbnRzIFthIHN0
cmluZ10uCi1mdW5jdGlvbiB2ZXJpZnlCeXRlUmFuZ2VBc1N0cmluZyhmaWxlRW50cnksIG9mZnNl
dCwgY29udGVudHMsIG9uU3VjY2VzcykKLXsKLSAgICB2ZXJpZnlGaWxlQ29udGVudHMoZmlsZUVu
dHJ5LCB2ZXJpZnlCeXRlUmFuZ2VBc1N0cmluZ0hlbHBlciwgb2Zmc2V0LCBjb250ZW50cywgb25T
dWNjZXNzKTsKLX0KLQotLy8gQ3JlYXRlcyBhIGZpbGUgY2FsbGVkIGZpbGVOYW1lIGluIGZpbGVT
eXN0ZW0ncyByb290IGRpcmVjdG9yeSwgdHJ1bmNhdGVzIGl0IHRvIHplcm8gbGVuZ3RoIGp1c3Qg
aW4gY2FzZSwgYW5kIGNhbGxzIG9uU3VjY2VzcywgcGFzc2luZyBpdCBhIEZpbGVFbnRyeSBhbmQg
RmlsZVdyaXRlciBmb3IgdGhlIG5ldyBmaWxlLgotZnVuY3Rpb24gY3JlYXRlRW1wdHlGaWxlKGZp
bGVTeXN0ZW0sIGZpbGVOYW1lLCBvblN1Y2Nlc3MpCi17Ci0gICAgZnVuY3Rpb24gZ2V0U3VjY2Vz
c0Z1bmMoZmlsZUVudHJ5KSB7Ci0gICAgICAgIC8vIENyZWF0ZSBhIGZyZXNoIEZpbGVXcml0ZXIg
aGVyZSwgcmF0aGVyIHRoYW4gcGFzcyBpbiB0aGUgdXNlZCBvbmUuCi0gICAgICAgIC8vIFRoaXMg
d2F5IHdlIGRvbid0IGFjY2lkZW50YWxseSBsZWF2ZSBvdXIgZXZlbnQgaGFuZGxlcnMgYXR0YWNo
ZWQuCi0gICAgICAgIHJldHVybiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGZpbGVFbnRyeS5j
cmVhdGVXcml0ZXIoZnVuY3Rpb24oZncpIHsKLSAgICAgICAgICAgICAgICBvblN1Y2Nlc3MoZmls
ZUVudHJ5LCBmdyk7Ci0gICAgICAgICAgICB9LCBvbkVycm9yKTsKLSAgICAgICAgfQotICAgIH0K
LSAgICBmdW5jdGlvbiBnZXRGaWxlV3JpdGVyQ2FsbGJhY2soZmlsZUVudHJ5KSB7Ci0gICAgICAg
IHJldHVybiBmdW5jdGlvbihmaWxlV3JpdGVyKSB7Ci0gICAgICAgICAgICB2YXIgc3VjY2Vzc0Z1
bmMgPSBnZXRTdWNjZXNzRnVuYyhmaWxlRW50cnkpOwotICAgICAgICAgICAgZmlsZVdyaXRlci5v
bkVycm9yID0gb25FcnJvcjsKLSAgICAgICAgICAgIGZpbGVXcml0ZXIub253cml0ZSA9IGZ1bmN0
aW9uKCkgewotICAgICAgICAgICAgICAgIGZpbGVXcml0ZXIub253cml0ZSA9IG51bGw7Ci0gICAg
ICAgICAgICAgICAgdmVyaWZ5RmlsZUxlbmd0aChmaWxlRW50cnksIDAsIHN1Y2Nlc3NGdW5jKTsK
LSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICBmaWxlV3JpdGVyLnRydW5jYXRlKDApOwotICAg
ICAgICB9Ci0gICAgfQotICAgIGZ1bmN0aW9uIG9uRmlsZUVudHJ5KGZpbGVFbnRyeSkgewotICAg
ICAgICBmaWxlRW50cnlGb3JDbGVhbnVwID0gZmlsZUVudHJ5OwotICAgICAgICB2YXIgb25GaWxl
V3JpdGVyID0gZ2V0RmlsZVdyaXRlckNhbGxiYWNrKGZpbGVFbnRyeSk7Ci0gICAgICAgIGZpbGVF
bnRyeS5jcmVhdGVXcml0ZXIob25GaWxlV3JpdGVyLCBvbkVycm9yKTsKLSAgICB9Ci0gICAgYXNz
ZXJ0KGZpbGVTeXN0ZW0pOwotICAgIGZpbGVTeXN0ZW0ucm9vdC5nZXRGaWxlKGZpbGVOYW1lLCB7
Y3JlYXRlOnRydWV9LCBvbkZpbGVFbnRyeSwgb25FcnJvcik7Ci19Ci0KLWZ1bmN0aW9uIHdyaXRl
U3RyaW5nKGZpbGVFbnRyeSwgZmlsZVdyaXRlciwgb2Zmc2V0LCBkYXRhLCBvblN1Y2Nlc3MpCi17
Ci0gICAgdmFyIGJsb2IgPSBuZXcgQmxvYihbZGF0YV0pOwotICAgIGZpbGVXcml0ZXIuc2Vlayhv
ZmZzZXQpOwotICAgIGZpbGVXcml0ZXIud3JpdGUoYmxvYik7Ci0gICAgZmlsZVdyaXRlci5vbmVy
cm9yID0gb25FcnJvcjsKLSAgICBpZiAob2Zmc2V0IDwgMCkKLSAgICAgICAgb2Zmc2V0ICs9IGZp
bGVXcml0ZXIubGVuZ3RoOwotICAgIGFzc2VydChvZmZzZXQgPj0gMCk7Ci0gICAgZmlsZVdyaXRl
ci5vbndyaXRlID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgIGZpbGVXcml0ZXIub253cml0ZSA9IG51
bGw7Ci0gICAgICAgIHZlcmlmeUJ5dGVSYW5nZUFzU3RyaW5nKGZpbGVFbnRyeSwgb2Zmc2V0LCBk
YXRhLCBvblN1Y2Nlc3MpOwotICAgIH07Ci19Ci0KLWZ1bmN0aW9uIHNldEZpbGVDb250ZW50cyhm
aWxlRW50cnksIGZpbGVXcml0ZXIsIGNvbnRlbnRzLCBvblN1Y2Nlc3MpIHsKLSAgICBmaWxlV3Jp
dGVyLm9uZXJyb3IgPSBvbkVycm9yOwotICAgIGZpbGVXcml0ZXIub253cml0ZSA9IGZ1bmN0aW9u
KCkgewotICAgICAgICBmaWxlV3JpdGVyLm9ud3JpdGUgPSBudWxsOwotICAgICAgICB3cml0ZVN0
cmluZyhmaWxlRW50cnksIGZpbGVXcml0ZXIsIDAsIGNvbnRlbnRzLCBvblN1Y2Nlc3MpOwotICAg
IH07Ci0gICAgZmlsZVdyaXRlci50cnVuY2F0ZSgwKTsKLX0KLQotZnVuY3Rpb24gc2V0dXBBbmRS
dW5UZXN0KHNpemUsIHRlc3ROYW1lLCB0ZXN0RnVuYykKLXsKLSAgICBpZiAoIXdlYmtpdFJlcXVl
c3RGaWxlU3lzdGVtKSB7Ci0gICAgICAgIGRlYnVnKCJUaGlzIHRlc3QgcmVxdWlyZXMgRmlsZVN5
c3RlbSBBUEkgc3VwcG9ydC4iKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBkZWJ1Zygi
c3RhcnRpbmcgdGVzdCIpOwotICAgIHdlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKFRFTVBPUkFSWSwg
c2l6ZSwgZnVuY3Rpb24oZnMpIHsKLSAgICAgICAgY3JlYXRlRW1wdHlGaWxlKGZzLCB0ZXN0TmFt
ZSwgdGVzdEZ1bmMpOwotICAgIH0sIG9uRXJyb3IpOwotfQpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9maWxlc3lzdGVtL3Jlc291cmNlcy9maWxlLXdyaXRlci13cml0ZS1vdmVybGFwcGVkLmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS13
cml0ZXItd3JpdGUtb3ZlcmxhcHBlZC5qcwkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9maWxlLXdyaXRlci13cml0ZS1vdmVybGFwcGVk
LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDczICswLDAgQEAKLWlmICh0aGlzLmltcG9ydFNjcmlw
dHMpIHsKLSAgICBpbXBvcnRTY3JpcHRzKCdmcy13b3JrZXItY29tbW9uLmpzJyk7Ci0gICAgaW1w
b3J0U2NyaXB0cygnLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7Ci0gICAgaW1w
b3J0U2NyaXB0cygnZmlsZS13cml0ZXItdXRpbHMuanMnKTsKLX0KLQotZGVzY3JpcHRpb24oIlRl
c3QgdXNpbmcgRmlsZVdyaXRlci5zZWVrIHRvIHdyaXRlIG92ZXJsYXBwaW5nIGV4aXN0aW5nIGRh
dGEgaW4gYSBmaWxlLiIpOwotCi12YXIgZmlsZUVudHJ5OwotdmFyIGZpbGVXcml0ZXI7Ci12YXIg
dGVzdERhdGEgPSAiTG9yZW0gaXBzdW0iOwotdmFyIHNlZWtCYWNrd2FyZE9mZnNldCA9IC00Owot
dmFyIHNlZWtGb3J3YXJkT2Zmc2V0ID0gNDsKLQotZnVuY3Rpb24gb25UZXN0U3VjY2VlZGVkKCkK
LXsKLSAgICB0ZXN0UGFzc2VkKCJBbGwgd3JpdGVzIHZlcmlmaWVkLiIpOwotICAgIGNsZWFuVXAo
KTsKLX0KLQotZnVuY3Rpb24gdmFsaWRhdGVOb25leHRlbmRpbmdXcml0ZUVuZCgpIHsKLSAgICB2
ZXJpZnlCeXRlUmFuZ2VBc1N0cmluZyhmaWxlRW50cnksIHRlc3REYXRhLmxlbmd0aCArIHNlZWtG
b3J3YXJkT2Zmc2V0LCB0ZXN0RGF0YS5zbGljZShzZWVrRm9yd2FyZE9mZnNldCksIG9uVGVzdFN1
Y2NlZWRlZCk7Ci19Ci0KLWZ1bmN0aW9uIHZhbGlkYXRlTm9uZXh0ZW5kaW5nV3JpdGVTdGFydCgp
IHsKLSAgICB0ZXN0UGFzc2VkKCJOb25leHRlbmRpbmcgd3JpdGUgdmFsaWRhdGVkLiIpOwotICAg
IGFzc2VydChmaWxlV3JpdGVyLmxlbmd0aCA9PSB0ZXN0RGF0YS5sZW5ndGggKiAyKTsKLSAgICB2
ZXJpZnlCeXRlUmFuZ2VBc1N0cmluZyhmaWxlRW50cnksIDAsIHRlc3REYXRhLnNsaWNlKDAsIHNl
ZWtGb3J3YXJkT2Zmc2V0KSwgdmFsaWRhdGVOb25leHRlbmRpbmdXcml0ZUVuZCk7Ci19Ci0KLWZ1
bmN0aW9uIHRlc3ROb25leHRlbmRpbmdXcml0ZSgpIHsKLSAgICB3cml0ZVN0cmluZyhmaWxlRW50
cnksIGZpbGVXcml0ZXIsIHNlZWtGb3J3YXJkT2Zmc2V0LCB0ZXN0RGF0YSwgdmFsaWRhdGVOb25l
eHRlbmRpbmdXcml0ZVN0YXJ0KTsKLX0KLQotZnVuY3Rpb24gc2V0dXBOb25leHRlbmRpbmdXcml0
ZSgpIHsKLSAgICB0ZXN0UGFzc2VkKCJQb3NpdGl2ZSBzZWVrIHZhbGlkYXRlZC4iKTsKLSAgICBz
ZXRGaWxlQ29udGVudHMoZmlsZUVudHJ5LCBmaWxlV3JpdGVyLCB0ZXN0RGF0YSArIHRlc3REYXRh
LCB0ZXN0Tm9uZXh0ZW5kaW5nV3JpdGUpOwotfQotCi1mdW5jdGlvbiB2YWxpZGF0ZVNlZWtGb3J3
YXJkKCkgewotICAgIGFzc2VydChmaWxlV3JpdGVyLmxlbmd0aCA9PSB0ZXN0RGF0YS5sZW5ndGgg
KyBzZWVrRm9yd2FyZE9mZnNldCk7Ci0gICAgdmVyaWZ5Qnl0ZVJhbmdlQXNTdHJpbmcoZmlsZUVu
dHJ5LCAwLCB0ZXN0RGF0YS5zbGljZSgwLCBzZWVrRm9yd2FyZE9mZnNldCksIHNldHVwTm9uZXh0
ZW5kaW5nV3JpdGUpOwotfQotCi1mdW5jdGlvbiB0ZXN0U2Vla0ZvcndhcmQoKSB7Ci0gICAgd3Jp
dGVTdHJpbmcoZmlsZUVudHJ5LCBmaWxlV3JpdGVyLCBzZWVrRm9yd2FyZE9mZnNldCwgdGVzdERh
dGEsIHZhbGlkYXRlU2Vla0ZvcndhcmQpOwotfQotCi1mdW5jdGlvbiBzZXR1cFNlZWtGb3J3YXJk
KCkgewotICAgIHRlc3RQYXNzZWQoIk5lZ2F0aXZlIHNlZWsgdmFsaWRhdGVkLiIpOwotICAgIHNl
dEZpbGVDb250ZW50cyhmaWxlRW50cnksIGZpbGVXcml0ZXIsIHRlc3REYXRhLCB0ZXN0U2Vla0Zv
cndhcmQpOwotfQotCi1mdW5jdGlvbiB2YWxpZGF0ZVNlZWtCYWNrd2FyZCgpIHsKLSAgICBhc3Nl
cnQoZmlsZVdyaXRlci5sZW5ndGggPT0gMiAqIHRlc3REYXRhLmxlbmd0aCArIHNlZWtCYWNrd2Fy
ZE9mZnNldCk7Ci0gICAgdmVyaWZ5Qnl0ZVJhbmdlQXNTdHJpbmcoZmlsZUVudHJ5LCAwLCB0ZXN0
RGF0YS5zbGljZSgwLCB0ZXN0RGF0YS5sZW5ndGggKyBzZWVrQmFja3dhcmRPZmZzZXQpLCBzZXR1
cFNlZWtGb3J3YXJkKTsKLX0KLQotZnVuY3Rpb24gdGVzdFNlZWtCYWNrd2FyZCgpIHsKLSAgICB3
cml0ZVN0cmluZyhmaWxlRW50cnksIGZpbGVXcml0ZXIsIHNlZWtCYWNrd2FyZE9mZnNldCwgdGVz
dERhdGEsIHZhbGlkYXRlU2Vla0JhY2t3YXJkKTsKLX0KLQotLy8gRWFjaCB0ZXN0IGhhcyAzIHBo
YXNlczogc2V0dXAsIGV4ZWN1dGlvbiwgYW5kIHZhbGlkYXRpb24uICBJbiB0aGUgc2V0dXAgcGhh
c2UsIHdlIG1ha2Ugc3VyZSB0aGF0IHRoZXJlJ3MgYSBGaWxlV3JpdGVyIHBvaW50aW5nIGF0IGEg
ZmlsZSB3aXRoIGFwcHJvcHJpYXRlCi0vLyBkYXRhIGZvciB0aGUgdGVzdCB3ZSB3YW50IHRvIHJ1
bi4gIEluIHRoZSBleGVjdXRpb24gcGhhc2UsIHdlIGRvIGEgc2VlayBhbmQgYSB3cml0ZSwgYW5k
IHRoZSB1dGlsaXR5IGZ1bmN0aW9uIHRoYXQgZG9lcyB0aG9zZSBhbHNvIHZhbGlkYXRlcyB0aGF0
IHRoZSBkYXRhCi0vLyBhY3R1YWxseSBnb3Qgd3JpdHRlbi4gIFNvIGluIHRoZSB2YWxpZGF0aW9u
IHBoYXNlLCB3ZSBvbmx5IGhhdmUgdG8gY2hlY2sgdGhhdCB0aGUgcmVzdCBvZiB0aGUgZmlsZSBk
aWRuJ3QgZ2V0IGNvcnJ1cHRlZCB3aGlsZSB3ZSB3ZXJlIHdyaXRpbmcgb3VyIGJpdC4KLWZ1bmN0
aW9uIHJ1blRlc3QoZmlsZUVudHJ5SW4sIGZpbGVXcml0ZXJJbikgewotICAgIGZpbGVFbnRyeSA9
IGZpbGVFbnRyeUluOwotICAgIGZpbGVXcml0ZXIgPSBmaWxlV3JpdGVySW47Ci0gICAgc2V0Rmls
ZUNvbnRlbnRzKGZpbGVFbnRyeSwgZmlsZVdyaXRlciwgdGVzdERhdGEsIHRlc3RTZWVrQmFja3dh
cmQpOwotfQotCi12YXIganNUZXN0SXNBc3luYyA9IHRydWU7Ci1zZXR1cEFuZFJ1blRlc3QoMTAy
NCwgJ2ZpbGUtd3JpdGVyLXRydW5jYXRlLWV4dGVuZCcsIHJ1blRlc3QpOwpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9mcy10ZXN0LXV0aWwuanMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9mcy10ZXN0LXV0aWwu
anMJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNv
dXJjZXMvZnMtdGVzdC11dGlsLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDkyICswLDAgQEAKLWZ1
bmN0aW9uIGJpbmRDYWxsYmFjayhvYmosIGNhbGxiYWNrLCBhcmcxLCBhcmcyLCBhcmczKQotewot
ICAgIHJldHVybiBmdW5jdGlvbihhcmcpIHsKLSAgICAgICAgaWYgKGFyZyA9PSB1bmRlZmluZWQp
Ci0gICAgICAgICAgICBjYWxsYmFjay5hcHBseShvYmosIFthcmcxLCBhcmcyLCBhcmczXSk7Ci0g
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNhbGxiYWNrLmFwcGx5KG9iaiwgW2FyZywgYXJnMSwg
YXJnMiwgYXJnM10pOwotICAgIH07Ci19Ci0KLS8vIFVzYWdlOgotLy8gICB2YXIgaGVscGVyID0g
bmV3IEpvaW5IZWxwZXI7Ci0vLwotLy8gICBoZWxwZXIucnVuKGZ1bmN0aW9uKCkgeyAvKiBkbyBz
b21ldGhpbmcgdGhhdCBldmVudHVhbGx5IGNhbGxzIGhlbHBlci5kb25lKCk7ICovIH0pOwotLy8g
ICBoZWxwZXIucnVuKGZ1bmN0aW9uKCkgeyAvKiBkbyBzb21ldGhpbmcgdGhhdCBldmVudHVhbGx5
IGNhbGxzIGhlbHBlci5kb25lKCk7ICovIH0pOwotLy8gICAuLi4KLS8vICAgaGVscGVyLmpvaW4o
am9pbkNhbGxiYWNrKTsKLS8vCi12YXIgSm9pbkhlbHBlciA9IGZ1bmN0aW9uKCkKLXsKLSAgICB0
aGlzLnBlbmRpbmdPcGVyYXRpb25zID0gW107Ci0gICAgdGhpcy5wZW5kaW5nT3BlcmF0aW9uQ291
bnQgPSAwOwotICAgIHRoaXMuam9pbkNhbGxiYWNrID0gbnVsbDsKLQotICAgIHRoaXMucnVuID0g
ZnVuY3Rpb24ob3BlcmF0aW9uKQotICAgIHsKLSAgICAgICAgdGhpcy5wZW5kaW5nT3BlcmF0aW9u
Q291bnQrKzsKLSAgICAgICAgb3BlcmF0aW9uKCk7Ci0gICAgfTsKLQotICAgIC8vIENhbGwgdGhp
cyB3aGVuIGFuIG9wZXJhdGlvbiBpcyBkb25lLgotICAgIHRoaXMuZG9uZSA9IGZ1bmN0aW9uKCkK
LSAgICB7Ci0gICAgICAgIHRoaXMucGVuZGluZ09wZXJhdGlvbkNvdW50LS07Ci0gICAgICAgIGlm
ICh0aGlzLnBlbmRpbmdPcGVyYXRpb25Db3VudCA9PSAwICYmIHRoaXMuam9pbkNhbGxiYWNrKQot
ICAgICAgICAgICAgdGhpcy5qb2luQ2FsbGJhY2soKTsKLSAgICB9OwotCi0gICAgLy8gVGhpcyBl
dmVudHVhbGx5IGNhbGxzIHRoZSBqb2luQ2FsbGJhY2sgd2hlbiBoZWxwZXIuZG9uZSgpIGlzIGNh
bGxlZCBhcyBtYW55IHRpbWVzIGFzIGhlbHBlci5ydW4oKSBpcyBjYWxsZWQuCi0gICAgdGhpcy5q
b2luID0gZnVuY3Rpb24oam9pbkNhbGxiYWNrKQotICAgIHsKLSAgICAgICAgaWYgKHRoaXMucGVu
ZGluZ09wZXJhdGlvbkNvdW50ID09IDApCi0gICAgICAgICAgICBqb2luQ2FsbGJhY2soKTsKLSAg
ICAgICAgZWxzZQotICAgICAgICAgICAgdGhpcy5qb2luQ2FsbGJhY2sgPSBqb2luQ2FsbGJhY2s7
Ci0gICAgfTsKLX07Ci0KLS8vIFJlbW92ZSBldmVyeXRoaW5nIGluIHRoZSBnaXZlbiBkaXJlY3Rv
cnkuCi1mdW5jdGlvbiByZW1vdmVBbGxJbkRpcmVjdG9yeShkaXJlY3RvcnksIHN1Y2Nlc3NDYWxs
YmFjaywgZXJyb3JDYWxsYmFjaykgewotICAgIHZhciBSZW1vdmVBbGxJbkRpcmVjdG9yeUhlbHBl
ciA9IGZ1bmN0aW9uKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykgewotICAgICAgICB0
aGlzLmVudHJpZXNDb3VudCA9IDA7Ci0gICAgICAgIHRoaXMuZG9uZSA9IGZhbHNlOwotICAgICAg
ICB0aGlzLnJlYWRlciA9IG51bGw7Ci0gICAgICAgIHRoaXMuc3VjY2Vzc0NhbGxiYWNrID0gc3Vj
Y2Vzc0NhbGxiYWNrOwotICAgICAgICB0aGlzLmVycm9yQ2FsbGJhY2sgPSBlcnJvckNhbGxiYWNr
OwotCi0gICAgICAgIHRoaXMuZW50cnlSZW1vdmVkQ2FsbGJhY2sgPSBiaW5kQ2FsbGJhY2sodGhp
cywgZnVuY3Rpb24oZW50cnkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICgtLXRoaXMuZW50
cmllc0NvdW50ID09IDAgJiYgdGhpcy5zdWNjZXNzQ2FsbGJhY2sgJiYgdGhpcy5kb25lKSB7Ci0g
ICAgICAgICAgICAgICAgdGhpcy5zdWNjZXNzQ2FsbGJhY2soKTsKLSAgICAgICAgICAgICAgICB0
aGlzLnN1Y2Nlc3NDYWxsYmFjayA9IG51bGw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0pOwot
Ci0gICAgICAgIHRoaXMuZW50cmllc0NhbGxiYWNrID0gYmluZENhbGxiYWNrKHRoaXMsIGZ1bmN0
aW9uKGVudHJpZXMpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
ZW50cmllcy5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgICAgIHRoaXMuZW50cmllc0NvdW50
Kys7Ci0gICAgICAgICAgICAgICAgaWYgKGVudHJpZXNbaV0uaXNEaXJlY3RvcnkpCi0gICAgICAg
ICAgICAgICAgICAgIGVudHJpZXNbaV0ucmVtb3ZlUmVjdXJzaXZlbHkodGhpcy5lbnRyeVJlbW92
ZWRDYWxsYmFjaywgdGhpcy5lcnJvckNhbGxiYWNrKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgICAgIGVudHJpZXNbaV0ucmVtb3ZlKHRoaXMuZW50cnlSZW1vdmVkQ2Fs
bGJhY2ssIHRoaXMuZXJyb3JDYWxsYmFjayk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBp
ZiAoZW50cmllcy5sZW5ndGgpCi0gICAgICAgICAgICAgICAgdGhpcy5yZWFkZXIucmVhZEVudHJp
ZXModGhpcy5lbnRyaWVzQ2FsbGJhY2ssIHRoaXMuZXJyb3JDYWxsYmFjayk7Ci0gICAgICAgICAg
ICBlbHNlIGlmICh0aGlzLmVudHJpZXNDb3VudCA+IDApCi0gICAgICAgICAgICAgICAgdGhpcy5k
b25lID0gdHJ1ZTsKLSAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuc3VjY2Vzc0NhbGxiYWNrKQot
ICAgICAgICAgICAgICAgIHRoaXMuc3VjY2Vzc0NhbGxiYWNrKCk7Ci0gICAgICAgIH0pOwotCi0g
ICAgICAgIHRoaXMucmVtb3ZlQWxsSW5EaXJlY3RvcnkgPSBmdW5jdGlvbihkaXJlY3RvcnkpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIHRoaXMucmVhZGVyID0gZGlyZWN0b3J5LmNyZWF0ZVJlYWRl
cigpOwotICAgICAgICAgICAgdGhpcy5yZWFkZXIucmVhZEVudHJpZXModGhpcy5lbnRyaWVzQ2Fs
bGJhY2ssIHRoaXMuZXJyb3JDYWxsYmFjayk7Ci0gICAgICAgIH07Ci0gICAgfTsKLQotICAgIHZh
ciBoZWxwZXIgPSBuZXcgUmVtb3ZlQWxsSW5EaXJlY3RvcnlIZWxwZXIoc3VjY2Vzc0NhbGxiYWNr
LCBlcnJvckNhbGxiYWNrKTsKLSAgICBoZWxwZXIucmVtb3ZlQWxsSW5EaXJlY3RvcnkoZGlyZWN0
b3J5KTsKLX0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZnMt
d29ya2VyLWNvbW1vbi5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0
ZW0vcmVzb3VyY2VzL2ZzLXdvcmtlci1jb21tb24uanMJKHJldmlzaW9uIDE1NjY5MSkKKysrIExh
eW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZnMtd29ya2VyLWNvbW1vbi5qcwko
d29ya2luZyBjb3B5KQpAQCAtMSwxOSArMCwwIEBACi1mdW5jdGlvbiByZW1vdmVBbGxJbkRpcmVj
dG9yeVN5bmMoZGlyZWN0b3J5KSB7Ci0gICAgaWYgKCFkaXJlY3RvcnkpCi0gICAgICAgIHJldHVy
bjsKLSAgICB2YXIgcmVhZGVyID0gZGlyZWN0b3J5LmNyZWF0ZVJlYWRlcigpOwotICAgIGRvIHsK
LSAgICAgICAgdmFyIGVudHJpZXMgPSByZWFkZXIucmVhZEVudHJpZXMoKTsKLSAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBlbnRyaWVzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICBpZiAo
ZW50cmllc1tpXS5pc0RpcmVjdG9yeSkKLSAgICAgICAgICAgICAgICBlbnRyaWVzW2ldLnJlbW92
ZVJlY3Vyc2l2ZWx5KCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgZW50cmll
c1tpXS5yZW1vdmUoKTsKLSAgICAgICAgfQotICAgIH0gd2hpbGUgKGVudHJpZXMubGVuZ3RoKTsK
LX0KLQotaWYgKHRoaXMuaW1wb3J0U2NyaXB0cyAmJiAhdGhpcy53ZWJraXRSZXF1ZXN0RmlsZVN5
c3RlbSkgewotICAgIGRlYnVnKCdUaGlzIHRlc3QgcmVxdWlyZXMgRmlsZVN5c3RlbSBBUEkuJyk7
Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0
ZW0vcmVzb3VyY2VzL29wLWNvcHkuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9m
aWxlc3lzdGVtL3Jlc291cmNlcy9vcC1jb3B5LmpzCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL29wLWNvcHkuanMJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMjU3ICswLDAgQEAKLXZhciB0ZXN0Q2FzZXMgPSBbCi0gICAgewotICAgICAgICBu
YW1lOiAnQ29weUZpbGVTaW1wbGUnLAotICAgICAgICBwcmVjb25kaXRpb246IFsKLSAgICAgICAg
ICAgIHtmdWxsUGF0aDonL2EnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxs
UGF0aDonL2EvYid9Ci0gICAgICAgIF0sCi0gICAgICAgIHRlc3RzOiBbCi0gICAgICAgICAgICBm
dW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmNvcHkoJy9hL2InLCAnL2EnLCAnYycpOyB9Ci0gICAg
ICAgIF0sCi0gICAgICAgIHBvc3Rjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDon
L2EnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYid9LAot
ICAgICAgICAgICAge2Z1bGxQYXRoOicvYS9jJ30KLSAgICAgICAgXSwKLSAgICB9LAotICAgIHsK
LSAgICAgICAgbmFtZTogJ0NvcHlEaXJlY3RvcnlTaW1wbGUnLAotICAgICAgICBwcmVjb25kaXRp
b246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAg
ICAgICAgICAgIHtmdWxsUGF0aDonL2EvYicsIGlzRGlyZWN0b3J5OnRydWV9Ci0gICAgICAgIF0s
Ci0gICAgICAgIHRlc3RzOiBbCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVy
LmNvcHkoJy9hL2InLCAnL2EnLCAnYycpOyB9LAotICAgICAgICBdLAotICAgICAgICBwb3N0Y29u
ZGl0aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hJywgaXNEaXJlY3Rvcnk6dHJ1ZX0s
Ci0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hL2InLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAg
ICAgICAgIHtmdWxsUGF0aDonL2EvYycsIGlzRGlyZWN0b3J5OnRydWV9Ci0gICAgICAgIF0sCi0g
ICAgfSwKLSAgICB7Ci0gICAgICAgIG5hbWU6ICdDb3B5RmlsZVRvRGlmZmVyZW50RGlyZWN0b3J5
JywKLSAgICAgICAgcHJlY29uZGl0aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hJywg
aXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hL2InfSwKLSAgICAg
ICAgICAgIHtmdWxsUGF0aDonL2MnLCBpc0RpcmVjdG9yeTp0cnVlfQotICAgICAgICBdLAotICAg
ICAgICB0ZXN0czogWwotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5jb3B5
KCcvYS9iJywgJy9jJywgJ2QnKTsgfSwKLSAgICAgICAgXSwKLSAgICAgICAgcG9zdGNvbmRpdGlv
bjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOicvYScsIGlzRGlyZWN0b3J5OnRydWV9LAotICAg
ICAgICAgICAge2Z1bGxQYXRoOicvYS9iJ30sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9jL2Qn
fQotICAgICAgICBdLAotICAgIH0sCi0gICAgewotICAgICAgICBuYW1lOiAnQ29weUZpbGVXaXRo
RW1wdHlOYW1lJywKLSAgICAgICAgcHJlY29uZGl0aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBh
dGg6Jy9hJywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hL2In
fSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2MnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAg
ICAgXSwKLSAgICAgICAgdGVzdHM6IFsKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBo
ZWxwZXIuY29weSgnL2EvYicsICcvYycsIG51bGwpOyB9LAotICAgICAgICBdLAotICAgICAgICBw
b3N0Y29uZGl0aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hJywgaXNEaXJlY3Rvcnk6
dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hL2InfSwKLSAgICAgICAgICAgIHtmdWxs
UGF0aDonL2MvYid9Ci0gICAgICAgIF0sCi0gICAgfSwKLSAgICB7Ci0gICAgICAgIG5hbWU6ICdD
b3B5RmlsZVdpdGhFbXB0eU5hbWVUb1NhbWVEaXJlY3RvcnknLAotICAgICAgICBwcmVjb25kaXRp
b246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAg
ICAgICAgICAgIHtmdWxsUGF0aDonL2EvYid9LAotICAgICAgICBdLAotICAgICAgICB0ZXN0czog
WwotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5jb3B5KCcvYS9iJywgJy9h
JywgbnVsbCwgRmlsZUVycm9yLklOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUik7IH0sCi0gICAgICAg
IF0sCi0gICAgICAgIHBvc3Rjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2En
LCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYid9LAotICAg
ICAgICBdLAotICAgIH0sCi0gICAgewotICAgICAgICBuYW1lOiAnQ29weUZpbGVXaXRoU2FtZU5h
bWUnLAotICAgICAgICBwcmVjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2En
LCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYid9LAotICAg
ICAgICBdLAotICAgICAgICB0ZXN0czogWwotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7
IGhlbHBlci5jb3B5KCcvYS9iJywgJy9hJywgJ2InLCBGaWxlRXJyb3IuSU5WQUxJRF9NT0RJRklD
QVRJT05fRVJSKTsgfSwKLSAgICAgICAgXSwKLSAgICAgICAgcG9zdGNvbmRpdGlvbjogWwotICAg
ICAgICAgICAge2Z1bGxQYXRoOicvYScsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICAgICAg
e2Z1bGxQYXRoOicvYS9iJ30sCi0gICAgICAgIF0sCi0gICAgfSwKLSAgICB7Ci0gICAgICAgIG5h
bWU6ICdDb3B5Rm9yTm9uRXhpc3RlbnRFbnRyeScsCi0gICAgICAgIHByZWNvbmRpdGlvbjogWwot
ICAgICAgICAgICAge2Z1bGxQYXRoOicvYScsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICAg
ICAge2Z1bGxQYXRoOicvYS9iJ30sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9jJywgaXNEaXJl
Y3Rvcnk6dHJ1ZX0sCi0gICAgICAgIF0sCi0gICAgICAgIHRlc3RzOiBbCi0gICAgICAgICAgICBm
dW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLnJlbW92ZSgnL2EvYicpOyB9LAotICAgICAgICAgICAg
ZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5jb3B5KCcvYS9iJywgJy9jJywgJ2InLCBGaWxlRXJy
b3IuTk9UX0ZPVU5EX0VSUik7IH0sCi0gICAgICAgIF0sCi0gICAgICAgIHBvc3Rjb25kaXRpb246
IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAg
ICAgICAgIHtmdWxsUGF0aDonL2MnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgXSwKLSAg
ICB9LAotICAgIHsKLSAgICAgICAgbmFtZTogJ0NvcHlFbnRyeVRvTm9uRXhpc3RlbnREaXJlY3Rv
cnknLAotICAgICAgICBwcmVjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2En
LCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYid9LAotICAg
ICAgICAgICAge2Z1bGxQYXRoOicvYycsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICBdLAot
ICAgICAgICB0ZXN0czogWwotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5y
ZW1vdmUoJy9jJyk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmNv
cHkoJy9hL2InLCAnL2MnLCAnYicsIEZpbGVFcnJvci5OT1RfRk9VTkRfRVJSKTsgfSwKLSAgICAg
ICAgXSwKLSAgICAgICAgcG9zdGNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOicv
YScsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYS9iJ30sCi0g
ICAgICAgIF0sCi0gICAgfSwKLSAgICB7Ci0gICAgICAgIG5hbWU6ICdDb3B5RW50cnlUb0l0c0No
aWxkJywKLSAgICAgICAgcHJlY29uZGl0aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9h
JywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hL2InLCBpc0Rp
cmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYi9jJywgaXNEaXJlY3Rv
cnk6dHJ1ZX0sCi0gICAgICAgIF0sCi0gICAgICAgIHRlc3RzOiBbCi0gICAgICAgICAgICBmdW5j
dGlvbihoZWxwZXIpIHsgaGVscGVyLmNvcHkoJy9hJywgJy9hL2InLCAnZCcsIEZpbGVFcnJvci5J
TlZBTElEX01PRElGSUNBVElPTl9FUlIpOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVy
KSB7IGhlbHBlci5jb3B5KCcvYS9iJywgJy9hL2IvYycsICdkJywgRmlsZUVycm9yLklOVkFMSURf
TU9ESUZJQ0FUSU9OX0VSUik7IH0sCi0gICAgICAgIF0sCi0gICAgICAgIHBvc3Rjb25kaXRpb246
IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAg
ICAgICAgIHtmdWxsUGF0aDonL2EvYicsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICAgICAg
e2Z1bGxQYXRoOicvYS9iL2MnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgXSwKLSAgICB9
LAotICAgIHsKLSAgICAgICAgbmFtZTogJ0NvcHlSZWN1cnNpdmUnLAotICAgICAgICBwcmVjb25k
aXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EnLCBpc0RpcmVjdG9yeTp0cnVlfSwK
LSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYicsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAg
ICAgICAge2Z1bGxQYXRoOicvYS9iL2MnfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYi9k
J30sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9iJywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAg
ICAgIF0sCi0gICAgICAgIHRlc3RzOiBbCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsg
aGVscGVyLmNvcHkoJy9hJywgJy9iJywgJ2EnKTsgfSwKLSAgICAgICAgXSwKLSAgICAgICAgcG9z
dGNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOicvYScsIGlzRGlyZWN0b3J5OnRy
dWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYS9iJywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0g
ICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hL2IvYyd9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicv
YS9iL2QnfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2IvYScsIGlzRGlyZWN0b3J5OnRydWV9
LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYi9hL2InLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAg
ICAgICAgICAgIHtmdWxsUGF0aDonL2IvYS9iL2MnfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDon
L2IvYS9iL2QnfSwKLSAgICAgICAgXSwKLSAgICB9LAotICAgIHsKLSAgICAgICAgbmFtZTogIk92
ZXJ3cml0aW5nQ29weUZpbGVUb0ZpbGUiLAotICAgICAgICBwcmVjb25kaXRpb246IFsKLSAgICAg
ICAgICAgIHtmdWxsUGF0aDoiL2EifSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDoiL2IifSwKLSAg
ICAgICAgXSwKLSAgICAgICAgdGVzdHM6IFsKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikg
e2hlbHBlci5jb3B5KCIvYSIsIi8iLCJiIik7fQotICAgICAgICBdLAotICAgICAgICBwb3N0Y29u
ZGl0aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Ii9hIn0sCi0gICAgICAgICAgICB7ZnVs
bFBhdGg6Ii9iIn0sCi0gICAgICAgIF0sCi0gICAgfSwKLSAgICB7Ci0gICAgICAgIG5hbWU6ICJP
dmVyd3JpdGluZ0NvcHlEaXJlY3RvcnlUb0VtcHR5RGlyZWN0b3J5IiwKLSAgICAgICAgcHJlY29u
ZGl0aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Ii9hIiwgaXNEaXJlY3Rvcnk6dHJ1ZX0s
Ci0gICAgICAgICAgICB7ZnVsbFBhdGg6Ii9hL2IifSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDoi
L2MiLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgXSwKLSAgICAgICAgdGVzdHM6IFsKLSAg
ICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikge2hlbHBlci5jb3B5KCIvYSIsIi8iLCJjIik7fQot
ICAgICAgICBdLAotICAgICAgICBwb3N0Y29uZGl0aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBh
dGg6Ii9hIiwgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Ii9hL2Ii
fSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDoiL2MiLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAg
ICAgICAgIHtmdWxsUGF0aDoiL2MvYiJ9LAotICAgICAgICBdLAotICAgIH0sCi0gICAgewotICAg
ICAgICBuYW1lOiAiT3ZlcndyaXRpbmdDb3B5RmlsZVRvRGlyZWN0b3J5IiwKLSAgICAgICAgcHJl
Y29uZGl0aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Ii9hIn0sCi0gICAgICAgICAgICB7
ZnVsbFBhdGg6Ii9iIiwgaXNEaXJlY3Rvcnk6IHRydWV9LAotICAgICAgICBdLAotICAgICAgICB0
ZXN0czogWwotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7aGVscGVyLmNvcHkoIi9hIiwi
LyIsImIiLEZpbGVFcnJvci5JTlZBTElEX01PRElGSUNBVElPTl9FUlIpO30KLSAgICAgICAgXSwK
LSAgICAgICAgcG9zdGNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOiIvYSJ9LAot
ICAgICAgICAgICAge2Z1bGxQYXRoOiIvYiIsIGlzRGlyZWN0b3J5OiB0cnVlfSwKLSAgICAgICAg
XSwKLSAgICB9LAotICAgIHsKLSAgICAgICAgbmFtZTogIk92ZXJ3cml0aW5nQ29weURpcmVjdG9y
eVRvRmlsZSIsCi0gICAgICAgIHByZWNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRo
OiIvYSIsIGlzRGlyZWN0b3J5OiB0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDoiL2IifSwK
LSAgICAgICAgXSwKLSAgICAgICAgdGVzdHM6IFsKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBl
cikge2hlbHBlci5jb3B5KCIvYSIsIi8iLCJiIixGaWxlRXJyb3IuSU5WQUxJRF9NT0RJRklDQVRJ
T05fRVJSKTt9Ci0gICAgICAgIF0sCi0gICAgICAgIHBvc3Rjb25kaXRpb246IFsKLSAgICAgICAg
ICAgIHtmdWxsUGF0aDoiL2EiLCBpc0RpcmVjdG9yeTogdHJ1ZX0sCi0gICAgICAgICAgICB7ZnVs
bFBhdGg6Ii9iIn0sCi0gICAgICAgIF0sCi0gICAgfSwKLSAgICB7Ci0gICAgICAgIG5hbWU6ICJP
dmVyd3JpdGluZ0NvcHlGaWxlVG9Ob25lbXB0eURpcmVjdG9yeSIsCi0gICAgICAgIHByZWNvbmRp
dGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOiIvYSJ9LAotICAgICAgICAgICAge2Z1bGxQ
YXRoOiIvYiIsIGlzRGlyZWN0b3J5OiB0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDoiL2Iv
YyJ9LAotICAgICAgICBdLAotICAgICAgICB0ZXN0czogWwotICAgICAgICAgICAgZnVuY3Rpb24o
aGVscGVyKSB7aGVscGVyLmNvcHkoIi9hIiwiLyIsImIiLEZpbGVFcnJvci5JTlZBTElEX01PRElG
SUNBVElPTl9FUlIpO30KLSAgICAgICAgXSwKLSAgICAgICAgcG9zdGNvbmRpdGlvbjogWwotICAg
ICAgICAgICAge2Z1bGxQYXRoOiIvYSJ9LAotICAgICAgICAgICAge2Z1bGxQYXRoOiIvYiIsIGlz
RGlyZWN0b3J5OiB0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDoiL2IvYyJ9LAotICAgICAg
ICBdLAotICAgIH0sCi0gICAgewotICAgICAgICBuYW1lOiAiT3ZlcndyaXRpbmdDb3B5RGlyZWN0
b3J5VG9Ob25lbXB0eURpcmVjdG9yeSIsCi0gICAgICAgIHByZWNvbmRpdGlvbjogWwotICAgICAg
ICAgICAge2Z1bGxQYXRoOiIvYSIsIGlzRGlyZWN0b3J5OiB0cnVlfSwKLSAgICAgICAgICAgIHtm
dWxsUGF0aDoiL2EvYiJ9LAotICAgICAgICAgICAge2Z1bGxQYXRoOiIvYyIsIGlzRGlyZWN0b3J5
OiB0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDoiL2MvZCJ9LAotICAgICAgICBdLAotICAg
ICAgICB0ZXN0czogWwotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7aGVscGVyLmNvcHko
Ii9hIiwiLyIsImMiLEZpbGVFcnJvci5JTlZBTElEX01PRElGSUNBVElPTl9FUlIpO30KLSAgICAg
ICAgXSwKLSAgICAgICAgcG9zdGNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOiIv
YSIsIGlzRGlyZWN0b3J5OiB0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDoiL2EvYiJ9LAot
ICAgICAgICAgICAge2Z1bGxQYXRoOiIvYyIsIGlzRGlyZWN0b3J5OiB0cnVlfSwKLSAgICAgICAg
ICAgIHtmdWxsUGF0aDoiL2MvZCJ9LAotICAgICAgICBdLAotICAgIH0sCi1dOwpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9vcC1nZXQtZW50cnkuanMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9vcC1nZXQtZW50
cnkuanMJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9y
ZXNvdXJjZXMvb3AtZ2V0LWVudHJ5LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE1NSArMCwwIEBA
Ci12YXIgdGVzdENhc2VzID0gWwotICAgIHsKLSAgICAgICAgbmFtZTogJ0NyZWF0ZVNpbXBsZScs
Ci0gICAgICAgIHByZWNvbmRpdGlvbjogWyBdLAotICAgICAgICB0ZXN0czogWwotICAgICAgICAg
ICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXREaXJlY3RvcnkoJy8nLCAnYScsIHtjcmVh
dGU6dHJ1ZX0pOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRG
aWxlKCcvJywgJ2InLCB7Y3JlYXRlOnRydWV9KTsgfQotICAgICAgICBdLAotICAgICAgICBwb3N0
Y29uZGl0aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hJywgaXNEaXJlY3Rvcnk6dHJ1
ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9iJ30sCi0gICAgICAgIF0sCi0gICAgfSwKLSAg
ICB7Ci0gICAgICAgIG5hbWU6ICdDcmVhdGVOZXN0ZWQnLAotICAgICAgICBwcmVjb25kaXRpb246
IFsgXSwKLSAgICAgICAgdGVzdHM6IFsKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBo
ZWxwZXIuZ2V0RGlyZWN0b3J5KCcvJywgJ2EnLCB7Y3JlYXRlOnRydWV9KTsgfSwKLSAgICAgICAg
ICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RGlyZWN0b3J5KCcvYScsICdiJywge2Ny
ZWF0ZTp0cnVlfSk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdl
dERpcmVjdG9yeSgnL2EvYicsICdjJywge2NyZWF0ZTp0cnVlfSk7IH0sCi0gICAgICAgICAgICBm
dW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldERpcmVjdG9yeSgnL2EvYi9jJywgJ2QnLCB7Y3Jl
YXRlOnRydWV9KTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0
RmlsZSgnL2EvYi9jL2QnLCAnZScsIHtjcmVhdGU6dHJ1ZX0pOyB9LAotICAgICAgICBdLAotICAg
ICAgICBwb3N0Y29uZGl0aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hL2IvYy9kL2Un
fSwKLSAgICAgICAgXSwKLSAgICB9LAotICAgIHsKLSAgICAgICAgbmFtZTogJ0NyZWF0ZU5lc3Rl
ZFdpdGhBYnNvbHV0ZVBhdGgnLAotICAgICAgICBwcmVjb25kaXRpb246IFsKLSAgICAgICAgICAg
IHtmdWxsUGF0aDonL2R1bW15JywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgIF0sCi0gICAg
ICAgIHRlc3RzOiBbCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldERp
cmVjdG9yeSgnL2R1bW15JywgJy9hJywge2NyZWF0ZTp0cnVlfSk7IH0sCi0gICAgICAgICAgICBm
dW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldERpcmVjdG9yeSgnL2R1bW15JywgJy9hL2InLCB7
Y3JlYXRlOnRydWV9KTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIu
Z2V0RGlyZWN0b3J5KCcvZHVtbXknLCAnL2EvYi9jJywge2NyZWF0ZTp0cnVlfSk7IH0sCi0gICAg
ICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldERpcmVjdG9yeSgnL2R1bW15Jywg
Jy9hL2IvYy9kJywge2NyZWF0ZTp0cnVlfSk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxw
ZXIpIHsgaGVscGVyLmdldEZpbGUoJy9kdW1teScsICcvYS9iL2MvZC9lJywge2NyZWF0ZTp0cnVl
fSk7IH0KLSAgICAgICAgXSwKLSAgICAgICAgcG9zdGNvbmRpdGlvbjogWwotICAgICAgICAgICAg
e2Z1bGxQYXRoOicvZHVtbXknLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxs
UGF0aDonL2EvYi9jL2QvZSd9LAotICAgICAgICBdLAotICAgIH0sCi0gICAgewotICAgICAgICBu
YW1lOiAnQ3JlYXRlTmVzdGVkV2l0aFJlbGF0aXZlUGF0aCcsCi0gICAgICAgIHByZWNvbmRpdGlv
bjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOicvYScsIGlzRGlyZWN0b3J5OnRydWV9LAotICAg
ICAgICBdLAotICAgICAgICB0ZXN0czogWwotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7
IGhlbHBlci5nZXREaXJlY3RvcnkoJy9hJywgJy4vYicsIHtjcmVhdGU6dHJ1ZX0pOyB9LAotICAg
ICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXREaXJlY3RvcnkoJy9hJywgJy4v
Li4uJywge2NyZWF0ZTp0cnVlfSk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsg
aGVscGVyLmdldERpcmVjdG9yeSgnL2EnLCAnLi4vYicsIHtjcmVhdGU6dHJ1ZX0pOyB9LAotICAg
ICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXREaXJlY3RvcnkoJy9hJywgJy4u
Ly4uL2IvYycsIHtjcmVhdGU6dHJ1ZX0pOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVy
KSB7IGhlbHBlci5nZXREaXJlY3RvcnkoJy9hJywgJy9hLy4uLy4uL2QnLCB7Y3JlYXRlOnRydWV9
KTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RGlyZWN0b3J5
KCcvYScsICcvYS8uLi8uLi9iLy4vYy8uLi8uLi8uLi8uLi8uLi9lJywge2NyZWF0ZTp0cnVlfSk7
IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldERpcmVjdG9yeSgn
L2EnLCAnLi4uL2YnLCB7Y3JlYXRlOnRydWV9KTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhl
bHBlcikgeyBoZWxwZXIuZ2V0RGlyZWN0b3J5KCcvYScsICcvYS8uLi8uLi4vZycsIHtjcmVhdGU6
dHJ1ZX0sIEZpbGVFcnJvci5OT1RfRk9VTkRfRVJSKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9u
KGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnL2EnLCAnLi9iLnR4dCcsIHtjcmVhdGU6dHJ1ZX0p
OyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvYScs
ICcuLi9iLnR4dCcsIHtjcmVhdGU6dHJ1ZX0pOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVs
cGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvYScsICcuLi8uLi9iL2MudHh0Jywge2NyZWF0ZTp0cnVl
fSk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy9h
JywgJy9hLy4uLy4uL2QudHh0Jywge2NyZWF0ZTp0cnVlfSk7IH0sCi0gICAgICAgICAgICBmdW5j
dGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy9hJywgJy9hLy4uLy4uL2IvLi9jLy4uLy4u
Ly4uLy4uLy4uL2UudHh0Jywge2NyZWF0ZTp0cnVlfSk7IH0sCi0gICAgICAgICAgICBmdW5jdGlv
bihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy9hJywgJy4uLi9mLnR4dCcsIHtjcmVhdGU6dHJ1
ZX0pOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcv
YScsICcvYS8uLi8uLi4vZy50eHQnLCB7Y3JlYXRlOnRydWV9LCBGaWxlRXJyb3IuTk9UX0ZPVU5E
X0VSUik7IH0sCi0gICAgICAgIF0sCi0gICAgICAgIHBvc3Rjb25kaXRpb246IFsKLSAgICAgICAg
ICAgIHtmdWxsUGF0aDonL2EnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxs
UGF0aDonL2EvYicsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicv
YicsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYi9jJywgaXNE
aXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9kJywgaXNEaXJlY3Rvcnk6
dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9lJywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0g
ICAgICAgICAgICB7ZnVsbFBhdGg6Jy9mJywgbm9uZXhpc3RlbnQ6dHJ1ZX0sCi0gICAgICAgICAg
ICB7ZnVsbFBhdGg6Jy9hL2YnLCBub25leGlzdGVudDp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxs
UGF0aDonL2cnLCBub25leGlzdGVudDp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2Ev
ZycsIG5vbmV4aXN0ZW50OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYS9iLnR4dCd9
LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYi50eHQnfSwKLSAgICAgICAgICAgIHtmdWxsUGF0
aDonL2IvYy50eHQnfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2QudHh0J30sCi0gICAgICAg
ICAgICB7ZnVsbFBhdGg6Jy9lLnR4dCd9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvZi50eHQn
LCBub25leGlzdGVudDp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvZi50eHQnLCBu
b25leGlzdGVudDp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2cudHh0Jywgbm9uZXhp
c3RlbnQ6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hL2cudHh0Jywgbm9uZXhpc3Rl
bnQ6dHJ1ZX0sCi0gICAgICAgIF0sCi0gICAgfSwKLSAgICB7Ci0gICAgICAgIG5hbWU6ICdHZXRF
eGlzdGluZ0VudHJ5JywKLSAgICAgICAgcHJlY29uZGl0aW9uOiBbIF0sCi0gICAgICAgIHRlc3Rz
OiBbCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldERpcmVjdG9yeSgn
LycsICdhJywge2NyZWF0ZTp0cnVlfSk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIp
IHsgaGVscGVyLmdldEZpbGUoJy8nLCAnYicsIHtjcmVhdGU6dHJ1ZX0pOyB9LAotICAgICAgICAg
ICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXREaXJlY3RvcnkoJy8nLCAnYScpOyB9LAot
ICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2InKTsg
fQotICAgICAgICBdLAotICAgICAgICBwb3N0Y29uZGl0aW9uOiBbCi0gICAgICAgICAgICB7ZnVs
bFBhdGg6Jy9hJywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9i
J30sCi0gICAgICAgIF0sCi0gICAgfSwKLSAgICB7Ci0gICAgICAgIG5hbWU6ICdHZXROb25FeGlz
dGVudCcsCi0gICAgICAgIHByZWNvbmRpdGlvbjogWyBdLAotICAgICAgICB0ZXN0czogWwotICAg
ICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXREaXJlY3RvcnkoJy8nLCAnYScs
IHt9LCBGaWxlRXJyb3IuTk9UX0ZPVU5EX0VSUik7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbiho
ZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnYicsIHt9LCBGaWxlRXJyb3IuTk9UX0ZPVU5E
X0VSUik7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldERpcmVj
dG9yeSgnLycsICcvbm9uZXhpc3RlbnQvYScsIHtjcmVhdGU6dHJ1ZX0sIEZpbGVFcnJvci5OT1Rf
Rk9VTkRfRVJSKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0
RmlsZSgnLycsICcvbm9uZXhpc3RlbnQvYicsIHtjcmVhdGU6dHJ1ZX0sIEZpbGVFcnJvci5OT1Rf
Rk9VTkRfRVJSKTsgfQotICAgICAgICBdLAotICAgICAgICBwb3N0Y29uZGl0aW9uOiBbIF0sCi0g
ICAgfSwKLSAgICB7Ci0gICAgICAgIG5hbWU6ICdHZXRGaWxlRm9yRGlyZWN0b3J5JywKLSAgICAg
ICAgcHJlY29uZGl0aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hJywgaXNEaXJlY3Rv
cnk6dHJ1ZX0KLSAgICAgICAgXSwKLSAgICAgICAgdGVzdHM6IFsKLSAgICAgICAgICAgIGZ1bmN0
aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdhJywge30sIEZpbGVFcnJvci5UWVBF
X01JU01BVENIX0VSUik7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVy
LmdldEZpbGUoJy8nLCAnL2EnLCB7fSwgRmlsZUVycm9yLlRZUEVfTUlTTUFUQ0hfRVJSKTsgfSwK
LSAgICAgICAgXSwKLSAgICAgICAgcG9zdGNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQ
YXRoOicvYScsIGlzRGlyZWN0b3J5OnRydWV9Ci0gICAgICAgIF0sCi0gICAgfSwKLSAgICB7Ci0g
ICAgICAgIG5hbWU6ICdHZXREaXJlY3RvcnlGb3JGaWxlJywKLSAgICAgICAgcHJlY29uZGl0aW9u
OiBbCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hJ30KLSAgICAgICAgXSwKLSAgICAgICAgdGVz
dHM6IFsKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RGlyZWN0b3J5
KCcvJywgJ2EnLCB7fSwgRmlsZUVycm9yLlRZUEVfTUlTTUFUQ0hfRVJSKTsgfSwKLSAgICAgICAg
ICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RGlyZWN0b3J5KCcvJywgJy9hJywge30s
IEZpbGVFcnJvci5UWVBFX01JU01BVENIX0VSUik7IH0sCi0gICAgICAgIF0sCi0gICAgICAgIHBv
c3Rjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EnfQotICAgICAgICBdLAot
ICAgIH0sCi0gICAgewotICAgICAgICBuYW1lOiAnQ3JlYXRlV2l0aEV4Y2x1c2l2ZScsCi0gICAg
ICAgIHByZWNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOicvYScsIGlzRGlyZWN0
b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYid9Ci0gICAgICAgIF0sCi0gICAg
ICAgIHRlc3RzOiBbCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldERp
cmVjdG9yeSgnLycsICdhJywge2NyZWF0ZTp0cnVlLCBleGNsdXNpdmU6dHJ1ZX0sIEZpbGVFcnJv
ci5JTlZBTElEX01PRElGSUNBVElPTl9FUlIpOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVs
cGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2InLCB7Y3JlYXRlOnRydWUsIGV4Y2x1c2l2ZTp0
cnVlfSwgRmlsZUVycm9yLklOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUik7IH0KLSAgICAgICAgXSwK
LSAgICAgICAgcG9zdGNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOicvYScsIGlz
RGlyZWN0b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYid9Ci0gICAgICAgIF0s
Ci0gICAgfSwKLV07CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2Vz
L29wLWdldC1tZXRhZGF0YS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVz
eXN0ZW0vcmVzb3VyY2VzL29wLWdldC1tZXRhZGF0YS5qcwkocmV2aXNpb24gMTU2NjkxKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9vcC1nZXQtbWV0YWRhdGEuanMJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMjcgKzAsMCBAQAotdmFyIHRlc3RDYXNlcyA9IFsKLSAgICB7
Ci0gICAgICAgIG5hbWU6ICdHZXRNZXRhZGF0YScsCi0gICAgICAgIHByZWNvbmRpdGlvbjogWwot
ICAgICAgICAgICAge2Z1bGxQYXRoOicvdG1wJ30sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9m
aWxlMScsIHNpemU6MH0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9maWxlMicsIHNpemU6MTB9
LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvZmlsZTMnLCBzaXplOjkwfSwKLSAgICAgICAgXSwK
LSAgICAgICAgdGVzdHM6IFsKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIu
Z2V0TWV0YWRhdGEoJy8nKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxw
ZXIuZ2V0RGlyZWN0b3J5KCcvJywgJy9hJywge2NyZWF0ZTp0cnVlfSk7IH0sCi0gICAgICAgICAg
ICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldE1ldGFkYXRhKCcvYScpOyB9LAotICAgICAg
ICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRNZXRhZGF0YSgnL2ZpbGUxJyk7IH0s
Ci0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldE1ldGFkYXRhKCcvZmls
ZTInKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0TWV0YWRh
dGEoJy9maWxlMycpOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5n
ZXRGaWxlKCcvJywgJy9iJywge2NyZWF0ZTp0cnVlfSk7IH0sCi0gICAgICAgICAgICBmdW5jdGlv
bihoZWxwZXIpIHsgaGVscGVyLmdldE1ldGFkYXRhKCcvYicpOyB9LAotICAgICAgICAgICAgZnVu
Y3Rpb24oaGVscGVyKSB7IGhlbHBlci5yZW1vdmUoJy90bXAnKTsgfSwKLSAgICAgICAgICAgIGZ1
bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0TWV0YWRhdGEoJy90bXAnLCBGaWxlRXJyb3IuTk9U
X0ZPVU5EX0VSUik7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLnNo
b3VsZEJlR3JlYXRlclRoYW5PckVxdWFsKCcvYS5yZXR1cm5lZC5tb2RpZmljYXRpb25UaW1lJywg
Jy8ucmV0dXJuZWQubW9kaWZpY2F0aW9uVGltZScpOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24o
aGVscGVyKSB7IGhlbHBlci5zaG91bGRCZUdyZWF0ZXJUaGFuT3JFcXVhbCgnL2IucmV0dXJuZWQu
bW9kaWZpY2F0aW9uVGltZScsICcvLnJldHVybmVkLm1vZGlmaWNhdGlvblRpbWUnKTsgfSwKLSAg
ICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuc2hvdWxkQmVHcmVhdGVyVGhhbk9y
RXF1YWwoJy9iLnJldHVybmVkLm1vZGlmaWNhdGlvblRpbWUnLCAnL2EucmV0dXJuZWQubW9kaWZp
Y2F0aW9uVGltZScpOyB9Ci0gICAgICAgIF0sCi0gICAgICAgIHBvc3Rjb25kaXRpb246IFsgXSwK
LSAgICB9LAotXTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMv
b3AtZ2V0LXBhcmVudC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0
ZW0vcmVzb3VyY2VzL29wLWdldC1wYXJlbnQuanMJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91
dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvb3AtZ2V0LXBhcmVudC5qcwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwyMSArMCwwIEBACi12YXIgdGVzdENhc2VzID0gWwotICAgIHsKLSAgICAg
ICAgbmFtZTogJ0dldFBhcmVudCcsCi0gICAgICAgIHByZWNvbmRpdGlvbjogWwotICAgICAgICAg
ICAge2Z1bGxQYXRoOicvYScsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQ
YXRoOicvYS9iJywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9h
L2IvYyd9LAotICAgICAgICBdLAotICAgICAgICB0ZXN0czogWwotICAgICAgICAgICAgZnVuY3Rp
b24oaGVscGVyKSB7IGhlbHBlci5nZXRQYXJlbnQoJy8nKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0
aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0UGFyZW50KCcvYScpOyB9LAotICAgICAgICAgICAgZnVu
Y3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRQYXJlbnQoJy9hL2InKTsgfSwKLSAgICAgICAgICAg
IGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0UGFyZW50KCcvYS9iL2MnKTsgfQotICAgICAg
ICBdLAotICAgICAgICBwb3N0Y29uZGl0aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9h
JywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hL2InLCBpc0Rp
cmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYi9jJ30sCi0gICAgICAg
IF0sCi0gICAgfSwKLV07CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3Vy
Y2VzL29wLW1vdmUuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVt
L3Jlc291cmNlcy9vcC1tb3ZlLmpzCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL29wLW1vdmUuanMJKHdvcmtpbmcgY29weSkKQEAgLTEs
MjUyICswLDAgQEAKLXZhciB0ZXN0Q2FzZXMgPSBbCi0gICAgewotICAgICAgICBuYW1lOiAnTW92
ZUZpbGVTaW1wbGUnLAotICAgICAgICBwcmVjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxs
UGF0aDonL2EnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2Ev
Yid9Ci0gICAgICAgIF0sCi0gICAgICAgIHRlc3RzOiBbCi0gICAgICAgICAgICBmdW5jdGlvbiho
ZWxwZXIpIHsgaGVscGVyLm1vdmUoJy9hL2InLCAnL2EnLCAnYycpOyB9Ci0gICAgICAgIF0sCi0g
ICAgICAgIHBvc3Rjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EnLCBpc0Rp
cmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYicsIG5vbmV4aXN0ZW50
OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYS9jJ30KLSAgICAgICAgXSwKLSAgICB9
LAotICAgIHsKLSAgICAgICAgbmFtZTogJ01vdmVEaXJlY3RvcnlTaW1wbGUnLAotICAgICAgICBw
cmVjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EnLCBpc0RpcmVjdG9yeTp0
cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYicsIGlzRGlyZWN0b3J5OnRydWV9Ci0g
ICAgICAgIF0sCi0gICAgICAgIHRlc3RzOiBbCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIp
IHsgaGVscGVyLm1vdmUoJy9hL2InLCAnL2EnLCAnYycpOyB9LAotICAgICAgICBdLAotICAgICAg
ICBwb3N0Y29uZGl0aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hJywgaXNEaXJlY3Rv
cnk6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hL2InLCBub25leGlzdGVudDp0cnVl
fSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYycsIGlzRGlyZWN0b3J5OnRydWV9Ci0gICAg
ICAgIF0sCi0gICAgfSwKLSAgICB7Ci0gICAgICAgIG5hbWU6ICdNb3ZlRmlsZVRvRGlmZmVyZW50
RGlyZWN0b3J5JywKLSAgICAgICAgcHJlY29uZGl0aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBh
dGg6Jy9hJywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hL2In
fSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2MnLCBpc0RpcmVjdG9yeTp0cnVlfQotICAgICAg
ICBdLAotICAgICAgICB0ZXN0czogWwotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhl
bHBlci5tb3ZlKCcvYS9iJywgJy9jJywgJ2QnKTsgfSwKLSAgICAgICAgXSwKLSAgICAgICAgcG9z
dGNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOicvYScsIGlzRGlyZWN0b3J5OnRy
dWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYS9iJywgbm9uZXhpc3RlbnQ6dHJ1ZX0sCi0g
ICAgICAgICAgICB7ZnVsbFBhdGg6Jy9jL2QnfQotICAgICAgICBdLAotICAgIH0sCi0gICAgewot
ICAgICAgICBuYW1lOiAnTW92ZUZpbGVXaXRoRW1wdHlOYW1lJywKLSAgICAgICAgcHJlY29uZGl0
aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hJywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0g
ICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hL2InfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2Mn
LCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgXSwKLSAgICAgICAgdGVzdHM6IFsKLSAgICAg
ICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIubW92ZSgnL2EvYicsICcvYycsIG51bGwp
OyB9LAotICAgICAgICBdLAotICAgICAgICBwb3N0Y29uZGl0aW9uOiBbCi0gICAgICAgICAgICB7
ZnVsbFBhdGg6Jy9hJywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6
Jy9hL2InLCBub25leGlzdGVudDp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2MvYid9
Ci0gICAgICAgIF0sCi0gICAgfSwKLSAgICB7Ci0gICAgICAgIG5hbWU6ICdNb3ZlRmlsZVdpdGhF
bXB0eU5hbWVUb1NhbWVEaXJlY3RvcnknLAotICAgICAgICBwcmVjb25kaXRpb246IFsKLSAgICAg
ICAgICAgIHtmdWxsUGF0aDonL2EnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtm
dWxsUGF0aDonL2EvYid9LAotICAgICAgICBdLAotICAgICAgICB0ZXN0czogWwotICAgICAgICAg
ICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5tb3ZlKCcvYS9iJywgJy9hJywgbnVsbCwgRmls
ZUVycm9yLklOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUik7IH0sCi0gICAgICAgIF0sCi0gICAgICAg
IHBvc3Rjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EnLCBpc0RpcmVjdG9y
eTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYid9LAotICAgICAgICBdLAotICAg
IH0sCi0gICAgewotICAgICAgICBuYW1lOiAnTW92ZUZpbGVXaXRoU2FtZU5hbWUnLAotICAgICAg
ICBwcmVjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EnLCBpc0RpcmVjdG9y
eTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYid9LAotICAgICAgICBdLAotICAg
ICAgICB0ZXN0czogWwotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5tb3Zl
KCcvYS9iJywgJy9hJywgJ2InLCBGaWxlRXJyb3IuSU5WQUxJRF9NT0RJRklDQVRJT05fRVJSKTsg
fSwKLSAgICAgICAgXSwKLSAgICAgICAgcG9zdGNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1
bGxQYXRoOicvYScsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicv
YS9iJ30sCi0gICAgICAgIF0sCi0gICAgfSwKLSAgICB7Ci0gICAgICAgIG5hbWU6ICdNb3ZlRm9y
Tm9uRXhpc3RlbnRFbnRyeScsCi0gICAgICAgIHByZWNvbmRpdGlvbjogWwotICAgICAgICAgICAg
e2Z1bGxQYXRoOicvYScsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRo
OicvYS9iJ30sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9jJywgaXNEaXJlY3Rvcnk6dHJ1ZX0s
Ci0gICAgICAgIF0sCi0gICAgICAgIHRlc3RzOiBbCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxw
ZXIpIHsgaGVscGVyLnJlbW92ZSgnL2EvYicpOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVs
cGVyKSB7IGhlbHBlci5tb3ZlKCcvYS9iJywgJy9jJywgJ2InLCBGaWxlRXJyb3IuTk9UX0ZPVU5E
X0VSUik7IH0sCi0gICAgICAgIF0sCi0gICAgICAgIHBvc3Rjb25kaXRpb246IFsKLSAgICAgICAg
ICAgIHtmdWxsUGF0aDonL2EnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxs
UGF0aDonL2MnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgXSwKLSAgICB9LAotICAgIHsK
LSAgICAgICAgbmFtZTogJ01vdmVFbnRyeVRvTm9uRXhpc3RlbnREaXJlY3RvcnknLAotICAgICAg
ICBwcmVjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EnLCBpc0RpcmVjdG9y
eTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYid9LAotICAgICAgICAgICAge2Z1
bGxQYXRoOicvYycsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICBdLAotICAgICAgICB0ZXN0
czogWwotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5yZW1vdmUoJy9jJyk7
IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLm1vdmUoJy9hL2InLCAn
L2MnLCAnYicsIEZpbGVFcnJvci5OT1RfRk9VTkRfRVJSKTsgfSwKLSAgICAgICAgXSwKLSAgICAg
ICAgcG9zdGNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOicvYScsIGlzRGlyZWN0
b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYS9iJ30sCi0gICAgICAgIF0sCi0g
ICAgfSwKLSAgICB7Ci0gICAgICAgIG5hbWU6ICdNb3ZlRW50cnlUb0l0c0NoaWxkJywKLSAgICAg
ICAgcHJlY29uZGl0aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hJywgaXNEaXJlY3Rv
cnk6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hL2InLCBpc0RpcmVjdG9yeTp0cnVl
fSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYi9jJywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0g
ICAgICAgIF0sCi0gICAgICAgIHRlc3RzOiBbCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIp
IHsgaGVscGVyLm1vdmUoJy9hJywgJy9hL2InLCAnZCcsIEZpbGVFcnJvci5JTlZBTElEX01PRElG
SUNBVElPTl9FUlIpOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5t
b3ZlKCcvYS9iJywgJy9hL2IvYycsICdkJywgRmlsZUVycm9yLklOVkFMSURfTU9ESUZJQ0FUSU9O
X0VSUik7IH0sCi0gICAgICAgIF0sCi0gICAgICAgIHBvc3Rjb25kaXRpb246IFsKLSAgICAgICAg
ICAgIHtmdWxsUGF0aDonL2EnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxs
UGF0aDonL2EvYicsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicv
YS9iL2MnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgXSwKLSAgICB9LAotICAgIHsKLSAg
ICAgICAgbmFtZTogJ01vdmVSZWN1cnNpdmUnLAotICAgICAgICBwcmVjb25kaXRpb246IFsKLSAg
ICAgICAgICAgIHtmdWxsUGF0aDonL2EnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAg
IHtmdWxsUGF0aDonL2EvYicsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQ
YXRoOicvYS9iL2MnfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYi9kJ30sCi0gICAgICAg
ICAgICB7ZnVsbFBhdGg6Jy9iJywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgIF0sCi0gICAg
ICAgIHRlc3RzOiBbCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLm1vdmUo
Jy9hJywgJy9iJywgJ2EnKTsgfSwKLSAgICAgICAgXSwKLSAgICAgICAgcG9zdGNvbmRpdGlvbjog
WwotICAgICAgICAgICAge2Z1bGxQYXRoOicvYScsIG5vbmV4aXN0ZW50OnRydWV9LAotICAgICAg
ICAgICAge2Z1bGxQYXRoOicvYi9hJywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgICAgICB7
ZnVsbFBhdGg6Jy9iL2EvYicsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQ
YXRoOicvYi9hL2IvYyd9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYi9hL2IvZCd9LAotICAg
ICAgICBdLAotICAgIH0sCi0gICAgewotICAgICAgICBuYW1lOiAiT3ZlcndyaXRpbmdNb3ZlRmls
ZVRvRmlsZSIsCi0gICAgICAgIHByZWNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRo
OiIvYSJ9LAotICAgICAgICAgICAge2Z1bGxQYXRoOiIvYiJ9LAotICAgICAgICBdLAotICAgICAg
ICB0ZXN0czogWwotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7aGVscGVyLm1vdmUoIi9h
IiwiLyIsImIiKTt9Ci0gICAgICAgIF0sCi0gICAgICAgIHBvc3Rjb25kaXRpb246IFsKLSAgICAg
ICAgICAgIHtmdWxsUGF0aDoiL2IifSwKLSAgICAgICAgXSwKLSAgICB9LAotICAgIHsKLSAgICAg
ICAgbmFtZTogIk92ZXJ3cml0aW5nTW92ZURpcmVjdG9yeVRvRW1wdHlEaXJlY3RvcnkiLAotICAg
ICAgICBwcmVjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDoiL2EiLCBpc0RpcmVj
dG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDoiL2EvYiJ9LAotICAgICAgICAgICAg
e2Z1bGxQYXRoOiIvYyIsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICBdLAotICAgICAgICB0
ZXN0czogWwotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7aGVscGVyLm1vdmUoIi9hIiwi
LyIsImMiKTt9Ci0gICAgICAgIF0sCi0gICAgICAgIHBvc3Rjb25kaXRpb246IFsKLSAgICAgICAg
ICAgIHtmdWxsUGF0aDoiL2MiLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxs
UGF0aDoiL2MvYiJ9LAotICAgICAgICAgICAge2Z1bGxQYXRoOiIvYSIsIG5vbmV4aXN0ZW50OnRy
dWV9LAotICAgICAgICBdLAotICAgIH0sCi0gICAgewotICAgICAgICBuYW1lOiAiT3ZlcndyaXRp
bmdNb3ZlRmlsZVRvRGlyZWN0b3J5IiwKLSAgICAgICAgcHJlY29uZGl0aW9uOiBbCi0gICAgICAg
ICAgICB7ZnVsbFBhdGg6Ii9hIn0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Ii9iIiwgaXNEaXJl
Y3Rvcnk6IHRydWV9LAotICAgICAgICBdLAotICAgICAgICB0ZXN0czogWwotICAgICAgICAgICAg
ZnVuY3Rpb24oaGVscGVyKSB7aGVscGVyLm1vdmUoIi9hIiwiLyIsImIiLEZpbGVFcnJvci5JTlZB
TElEX01PRElGSUNBVElPTl9FUlIpO30KLSAgICAgICAgXSwKLSAgICAgICAgcG9zdGNvbmRpdGlv
bjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOiIvYSJ9LAotICAgICAgICAgICAge2Z1bGxQYXRo
OiIvYiIsIGlzRGlyZWN0b3J5OiB0cnVlfSwKLSAgICAgICAgXSwKLSAgICB9LAotICAgIHsKLSAg
ICAgICAgbmFtZTogIk92ZXJ3cml0aW5nTW92ZURpcmVjdG9yeVRvRmlsZSIsCi0gICAgICAgIHBy
ZWNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOiIvYSIsIGlzRGlyZWN0b3J5OiB0
cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDoiL2IifSwKLSAgICAgICAgXSwKLSAgICAgICAg
dGVzdHM6IFsKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikge2hlbHBlci5tb3ZlKCIvYSIs
Ii8iLCJiIixGaWxlRXJyb3IuSU5WQUxJRF9NT0RJRklDQVRJT05fRVJSKTt9Ci0gICAgICAgIF0s
Ci0gICAgICAgIHBvc3Rjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDoiL2EiLCBp
c0RpcmVjdG9yeTogdHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Ii9iIn0sCi0gICAgICAg
IF0sCi0gICAgfSwKLSAgICB7Ci0gICAgICAgIG5hbWU6ICJPdmVyd3JpdGluZ01vdmVGaWxlVG9O
b25lbXB0eURpcmVjdG9yeSIsCi0gICAgICAgIHByZWNvbmRpdGlvbjogWwotICAgICAgICAgICAg
e2Z1bGxQYXRoOiIvYSJ9LAotICAgICAgICAgICAge2Z1bGxQYXRoOiIvYiIsIGlzRGlyZWN0b3J5
OiB0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDoiL2IvYyJ9LAotICAgICAgICBdLAotICAg
ICAgICB0ZXN0czogWwotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7aGVscGVyLm1vdmUo
Ii9hIiwiLyIsImIiLEZpbGVFcnJvci5JTlZBTElEX01PRElGSUNBVElPTl9FUlIpO30KLSAgICAg
ICAgXSwKLSAgICAgICAgcG9zdGNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOiIv
YSJ9LAotICAgICAgICAgICAge2Z1bGxQYXRoOiIvYiIsIGlzRGlyZWN0b3J5OiB0cnVlfSwKLSAg
ICAgICAgICAgIHtmdWxsUGF0aDoiL2IvYyJ9LAotICAgICAgICBdLAotICAgIH0sCi0gICAgewot
ICAgICAgICBuYW1lOiAiT3ZlcndyaXRpbmdNb3ZlRGlyZWN0b3J5VG9Ob25lbXB0eURpcmVjdG9y
eSIsCi0gICAgICAgIHByZWNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOiIvYSIs
IGlzRGlyZWN0b3J5OiB0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDoiL2EvYiJ9LAotICAg
ICAgICAgICAge2Z1bGxQYXRoOiIvYyIsIGlzRGlyZWN0b3J5OiB0cnVlfSwKLSAgICAgICAgICAg
IHtmdWxsUGF0aDoiL2MvZCJ9LAotICAgICAgICBdLAotICAgICAgICB0ZXN0czogWwotICAgICAg
ICAgICAgZnVuY3Rpb24oaGVscGVyKSB7aGVscGVyLm1vdmUoIi9hIiwiLyIsImMiLEZpbGVFcnJv
ci5JTlZBTElEX01PRElGSUNBVElPTl9FUlIpO30KLSAgICAgICAgXSwKLSAgICAgICAgcG9zdGNv
bmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOiIvYSIsIGlzRGlyZWN0b3J5OiB0cnVl
fSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDoiL2EvYiJ9LAotICAgICAgICAgICAge2Z1bGxQYXRo
OiIvYyIsIGlzRGlyZWN0b3J5OiB0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDoiL2MvZCJ9
LAotICAgICAgICBdLAotICAgIH0sCi1dOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lz
dGVtL3Jlc291cmNlcy9vcC1yZWFkLWRpcmVjdG9yeS5qcwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL29wLXJlYWQtZGlyZWN0b3J5LmpzCShyZXZp
c2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL29w
LXJlYWQtZGlyZWN0b3J5LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDIzICswLDAgQEAKLXZhciB0
ZXN0Q2FzZXMgPSBbCi0gICAgewotICAgICAgICBuYW1lOiAnUmVhZERpcmVjdG9yeScsCi0gICAg
ICAgIHByZWNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOicvYScsIGlzRGlyZWN0
b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYicsIGlzRGlyZWN0b3J5OnRydWV9
LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYycsIH0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6
Jy9kJywgfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2UnLCBpc0RpcmVjdG9yeTp0cnVlfSwK
LSAgICAgICAgICAgIHtmdWxsUGF0aDonL2YnLCB9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicv
ZycsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYS9iJ30sCi0g
ICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hL2MnfSwKLSAgICAgICAgXSwKLSAgICAgICAgdGVzdHM6
IFsKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIucmVhZERpcmVjdG9yeSgn
LycpOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5yZW1vdmUoJy9j
Jyk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLnJlbW92ZSgnL2Un
KTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIucmVtb3ZlKCcvZicp
OyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5yZWFkRGlyZWN0b3J5
KCcvJyk7IH0KLSAgICAgICAgXSwKLSAgICB9LAotXTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
ZmlsZXN5c3RlbS9yZXNvdXJjZXMvb3AtcmVtb3ZlLmpzCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvb3AtcmVtb3ZlLmpzCShyZXZpc2lvbiAxNTY2
OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL29wLXJlbW92ZS5q
cwkod29ya2luZyBjb3B5KQpAQCAtMSw2MiArMCwwIEBACi12YXIgdGVzdENhc2VzID0gWwotICAg
IHsKLSAgICAgICAgbmFtZTogJ1JlbW92ZVNpbXBsZScsCi0gICAgICAgIHByZWNvbmRpdGlvbjog
WwotICAgICAgICAgICAge2Z1bGxQYXRoOicvYScsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAg
ICAgICAge2Z1bGxQYXRoOicvYid9Ci0gICAgICAgIF0sCi0gICAgICAgIHRlc3RzOiBbCi0gICAg
ICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLnJlbW92ZSgnL2EnKTsgfSwKLSAgICAg
ICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIucmVtb3ZlKCcvYicpOyB9LAotICAgICAg
ICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5yZW1vdmUoJy8nLCBGaWxlRXJyb3IuSU5W
QUxJRF9NT0RJRklDQVRJT05fRVJSKTsgfQotICAgICAgICBdLAotICAgICAgICBwb3N0Y29uZGl0
aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hJywgbm9uZXhpc3RlbnQ6dHJ1ZX0sCi0g
ICAgICAgICAgICB7ZnVsbFBhdGg6Jy9iJywgbm9uZXhpc3RlbnQ6dHJ1ZX0KLSAgICAgICAgXSwK
LSAgICB9LAotICAgIHsKLSAgICAgICAgbmFtZTogJ1JlbW92ZU5vblJlY3Vyc2l2ZVdpdGhDaGls
ZHJlbicsCi0gICAgICAgIHByZWNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOicv
YScsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYS9iJywgaXNE
aXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hL2MnLH0KLSAgICAgICAg
XSwKLSAgICAgICAgdGVzdHM6IFsKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxw
ZXIucmVtb3ZlKCcvYScsIEZpbGVFcnJvci5JTlZBTElEX01PRElGSUNBVElPTl9FUlIpOyB9Ci0g
ICAgICAgIF0sCi0gICAgICAgIHBvc3Rjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0
aDonL2EnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYics
IGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYS9jJyx9Ci0gICAg
ICAgIF0sCi0gICAgfSwKLSAgICB7Ci0gICAgICAgIG5hbWU6ICdSZW1vdmVSZWN1cnNpdmVXaXRo
b3V0Q2hpbGRyZW4nLAotICAgICAgICBwcmVjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxs
UGF0aDonL2EnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgXSwKLSAgICAgICAgdGVzdHM6
IFsKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIucmVtb3ZlUmVjdXJzaXZl
bHkoJy9hJyk7IH0KLSAgICAgICAgXSwKLSAgICAgICAgcG9zdGNvbmRpdGlvbjogWwotICAgICAg
ICAgICAge2Z1bGxQYXRoOicvYScsIG5vbmV4aXN0ZW50OnRydWV9LAotICAgICAgICBdLAotICAg
IH0sCi0gICAgewotICAgICAgICBuYW1lOiAnUmVtb3ZlUmVjdXJzaXZlV2l0aENoaWxkcmVuJywK
LSAgICAgICAgcHJlY29uZGl0aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hJywgaXNE
aXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hL2InLCBpc0RpcmVjdG9y
eTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYycsfQotICAgICAgICBdLAotICAg
ICAgICB0ZXN0czogWwotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5yZW1v
dmVSZWN1cnNpdmVseSgnL2EnKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBo
ZWxwZXIucmVtb3ZlUmVjdXJzaXZlbHkoJy8nLCBGaWxlRXJyb3IuSU5WQUxJRF9NT0RJRklDQVRJ
T05fRVJSKTsgfQotICAgICAgICBdLAotICAgICAgICBwb3N0Y29uZGl0aW9uOiBbCi0gICAgICAg
ICAgICB7ZnVsbFBhdGg6Jy9hJywgbm9uZXhpc3RlbnQ6dHJ1ZX0sCi0gICAgICAgIF0sCi0gICAg
fSwKLV07Ci0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvb3At
cmVzdHJpY3RlZC1jaGFycy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVz
eXN0ZW0vcmVzb3VyY2VzL29wLXJlc3RyaWN0ZWQtY2hhcnMuanMJKHJldmlzaW9uIDE1NjY5MSkK
KysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvb3AtcmVzdHJpY3RlZC1j
aGFycy5qcwkod29ya2luZyBjb3B5KQpAQCAtMSw1MiArMCwwIEBACi12YXIgdGVzdENhc2VzID0g
WwotICAgIHsKLSAgICAgICAgbmFtZTogJ1Jlc3RyaWN0ZWRDaGFycycsCi0gICAgICAgIHByZWNv
bmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOicvYWInLCBpc0RpcmVjdG9yeTp0cnVl
fSwKLSAgICAgICAgXSwKLSAgICAgICAgdGVzdHM6IFsKLSAgICAgICAgICAgIC8vIFRlc3QgZm9y
IGRpZmZpY3VsdCBjaGFyYWN0ZXJzIGluICdwYXRoJyBwYXJhbWV0ZXJzLgotICAgICAgICAgICAg
ZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2E8YicsIHtjcmVhdGU6dHJ1
ZX0sIDApOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxl
KCcvJywgJ2E+YicsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24o
aGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2E6YicsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9
LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2E/
YicsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7
IGhlbHBlci5nZXRGaWxlKCcvJywgJ2EqYicsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotICAgICAg
ICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2EiYicsIHtjcmVh
dGU6dHJ1ZX0sIDApOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5n
ZXRGaWxlKCcvJywgJ2F8YicsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotCi0gICAgICAgICAgICBm
dW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnPGFiJywge2NyZWF0ZTp0cnVl
fSwgMCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUo
Jy8nLCAnOmFiJywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbiho
ZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnP2FiJywge2NyZWF0ZTp0cnVlfSwgMCk7IH0s
Ci0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnKmFi
Jywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsg
aGVscGVyLmdldEZpbGUoJy8nLCAnImFiJywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0gICAgICAg
ICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnfGFiJywge2NyZWF0
ZTp0cnVlfSwgMCk7IH0sCi0KLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIu
Z2V0RmlsZSgnLycsICdhYjwnLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLSAgICAgICAgICAgIGZ1
bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdhYjonLCB7Y3JlYXRlOnRydWV9
LCAwKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgn
LycsICdhYj8nLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhl
bHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdhYionLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwK
LSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdhYiIn
LCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBo
ZWxwZXIuZ2V0RmlsZSgnLycsICdhYnwnLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLQotICAgICAg
ICAgICAgLy8gT25seSAnXFwnIGlzIGRpc2FsbG93ZWQuCi0gICAgICAgICAgICBmdW5jdGlvbiho
ZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnYVxcYicsIHtjcmVhdGU6dHJ1ZX0sIEZpbGVF
cnJvci5JTlZBTElEX01PRElGSUNBVElPTl9FUlIpOyB9LAotCi0gICAgICAgICAgICAvLyBUZXN0
IGZvciBkaWZmaWN1bHQgY2hhcmFjdGVycyBpbiAnbmFtZScgcGFyYW1ldGVycy4KLSAgICAgICAg
ICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuY29weSgnL2FiJywgJy8nLCAnIGE8YicsIDAp
OyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5jb3B5KCcvYWInLCAn
LycsICcgYTpiJywgMCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVy
LmNvcHkoJy9hYicsICcvJywgJyBhP2InLCAwKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhl
bHBlcikgeyBoZWxwZXIuY29weSgnL2FiJywgJy8nLCAnIGEqYicsIDApOyB9LAotICAgICAgICAg
ICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5jb3B5KCcvYWInLCAnLycsICcgYSJiJywgMCk7
IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmNvcHkoJy9hYicsICcv
JywgJyBhfGInLCAwKTsgfSwKLQotICAgICAgICAgICAgLy8gJ05hbWUnIHBhcmFtZXRlciBjYW5u
b3QgY29udGFpbiAnLycgb3IgJ1xcJy4KLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBo
ZWxwZXIuY29weSgnL2FiJywgJy8nLCAnYS9iJywgRmlsZUVycm9yLklOVkFMSURfTU9ESUZJQ0FU
SU9OX0VSUik7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmNvcHko
Jy9hYicsICcvJywgJ2FcXGInLCBGaWxlRXJyb3IuSU5WQUxJRF9NT0RJRklDQVRJT05fRVJSKTsg
fSwKLSAgICAgICAgXSwKLSAgICAgICAgcG9zdGNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1
bGxQYXRoOicvYWInLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDon
YTxiJywgaXNEaXJlY3Rvcnk6ZmFsc2V9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicgYXxiJywg
aXNEaXJlY3Rvcnk6dHJ1ZX0KLSAgICAgICAgXSwKLSAgICB9LAotXTsKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvb3AtcmVzdHJpY3RlZC1uYW1lcy5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL29wLXJlc3Ry
aWN0ZWQtbmFtZXMuanMJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmls
ZXN5c3RlbS9yZXNvdXJjZXMvb3AtcmVzdHJpY3RlZC1uYW1lcy5qcwkod29ya2luZyBjb3B5KQpA
QCAtMSw2NCArMCwwIEBACi12YXIgdGVzdENhc2VzID0gWwotICAgIHsKLSAgICAgICAgbmFtZTog
J1Jlc3RyaWN0ZWROYW1lcycsCi0gICAgICAgIHByZWNvbmRpdGlvbjogWwotICAgICAgICAgICAg
e2Z1bGxQYXRoOicvYScsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRo
OicvYicsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYycsIGlz
RGlyZWN0b3J5OnRydWV9Ci0gICAgICAgIF0sCi0gICAgICAgIHRlc3RzOiBbCi0gICAgICAgICAg
ICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnLicsIHtjcmVhdGU6dHJ1
ZX0sIEZpbGVFcnJvci5TRUNVUklUWV9FUlIpOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVs
cGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJy4uJywge2NyZWF0ZTp0cnVlfSwgRmlsZUVycm9y
LlNFQ1VSSVRZX0VSUik7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVy
LmdldEZpbGUoJy8nLCAnY29uJywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0gICAgICAgICAgICBm
dW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnQ09OJywge2NyZWF0ZTp0cnVl
fSwgMCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUo
Jy8nLCAnQ29uJywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbiho
ZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnY09uLnR4dCcsIHtjcmVhdGU6dHJ1ZX0sIDAp
OyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywg
J2EvY29OJywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0KLSAgICAgICAgICAgIGZ1bmN0aW9uKGhl
bHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdwcm4nLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwK
LSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdQUk4n
LCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBo
ZWxwZXIuZ2V0RmlsZSgnLycsICdQcm4nLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLSAgICAgICAg
ICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdwUm4udHh0Jywge2Ny
ZWF0ZTp0cnVlfSwgMCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVy
LmdldEZpbGUoJy8nLCAnYS9wck4nLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLQotICAgICAgICAg
ICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2F1eCcsIHtjcmVhdGU6
dHJ1ZX0sIDApOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRG
aWxlKCcvJywgJ0FVWCcsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotICAgICAgICAgICAgZnVuY3Rp
b24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ0F1eCcsIHtjcmVhdGU6dHJ1ZX0sIDAp
OyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywg
J2FVeC50eHQnLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhl
bHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdhL2F1WCcsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9
LAotCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAn
bnVsJywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIp
IHsgaGVscGVyLmdldEZpbGUoJy8nLCAnTlVMJywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0gICAg
ICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnTnVsJywge2Ny
ZWF0ZTp0cnVlfSwgMCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVy
LmdldEZpbGUoJy8nLCAnblVsLnR4dCcsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotICAgICAgICAg
ICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2EvbnVMJywge2NyZWF0
ZTp0cnVlfSwgMCk7IH0sCi0KLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIu
Z2V0RmlsZSgnLycsICdjb20xJywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0gICAgICAgICAgICBm
dW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnQ09NMicsIHtjcmVhdGU6dHJ1
ZX0sIDApOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxl
KCcvJywgJ0NvbTQnLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9u
KGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdjT003LmZvbycsIHtjcmVhdGU6dHJ1ZX0s
IDApOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcv
JywgJ2EvY29NOScsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotCi0gICAgICAgICAgICBmdW5jdGlv
bihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnbHB0MScsIHtjcmVhdGU6dHJ1ZX0sIDAp
OyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywg
J0xQVDInLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBl
cikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdMcHQ0Jywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0g
ICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnbFBUNy5m
b28nLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikg
eyBoZWxwZXIuZ2V0RmlsZSgnLycsICdhL2xwVDknLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLQot
ICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2ZvbyAn
LCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBo
ZWxwZXIuZ2V0RmlsZSgnLycsICdmb29cbicsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotICAgICAg
ICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2Zvby4nLCB7Y3Jl
YXRlOnRydWV9LCAwKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIu
Y29weSgnL2EnLCAnLycsICdmb28gICcsIDApOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVs
cGVyKSB7IGhlbHBlci5jb3B5KCcvYScsICcvJywgJ2Zvb1x0JywgMCk7IH0sCi0gICAgICAgICAg
ICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmNvcHkoJy9hJywgJy8nLCAnZm9vLi4nLCAwKTsg
fSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIubW92ZSgnL2EnLCAnLycs
ICdmb28gICAgJywgMCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVy
Lm1vdmUoJy9iJywgJy8nLCAnZm9vXHRcdCcsIDApOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24o
aGVscGVyKSB7IGhlbHBlci5tb3ZlKCcvYycsICcvJywgJ2Zvby4uLi4uJywgMCk7IH0sCi0gICAg
ICAgIF0sCi0gICAgICAgIHBvc3Rjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDon
L2ZvbyAgICAnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2Zv
b1x0XHQnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2Zvby4u
Li4uJywgaXNEaXJlY3Rvcnk6dHJ1ZX0KLSAgICAgICAgXSwKLSAgICB9LAotXTsKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvb3AtcmVzdHJpY3RlZC11bmljb2Rl
LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMv
b3AtcmVzdHJpY3RlZC11bmljb2RlLmpzCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL29wLXJlc3RyaWN0ZWQtdW5pY29kZS5qcwkod29y
a2luZyBjb3B5KQpAQCAtMSw0NSArMCwwIEBACi12YXIgdGVzdENhc2VzID0gWwotICAgIHsKLSAg
ICAgICAgbmFtZTogJ1Jlc3RyaWN0ZWRVbmljb2RlQ2hhcnMnLAotICAgICAgICBwcmVjb25kaXRp
b246IFsgXSwKLSAgICAgICAgdGVzdHM6IFsKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikg
eyBoZWxwZXIuZ2V0RmlsZSgnLycsICdhYicsIHtjcmVhdGU6dHJ1ZX0pOyB9LAotCi0gICAgICAg
ICAgICAvLyBFbWJlZGRlZCBOVUxzIGFyZW4ndCBhbGxvd2VkOyBhbnl0aGluZyBlbHNlIGluIHRo
ZSBmaXJzdCAzMiBpcyBmYWlyIGdhbWUuCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsg
aGVscGVyLmdldEZpbGUoJy8nLCAnYVx1MDAwMGInLCB7Y3JlYXRlOnRydWV9LCBGaWxlRXJyb3Iu
SU5WQUxJRF9NT0RJRklDQVRJT05fRVJSKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBl
cikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdhXHUwMDAxYicsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9
LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2Fc
dTAwMDJiJywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxw
ZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnYVx1MDAwM2InLCB7Y3JlYXRlOnRydWV9LCAwKTsg
fSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdh
XHUwMDA0YicsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVs
cGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2FcdTAwMDViJywge2NyZWF0ZTp0cnVlfSwgMCk7
IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAn
YVx1MDAwNmInLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhl
bHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdhXHUwMDA3YicsIHtjcmVhdGU6dHJ1ZX0sIDAp
OyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywg
J2FcdTAwMDhiJywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbiho
ZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnYVx1MDAwOWInLCB7Y3JlYXRlOnRydWV9LCAw
KTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycs
ICdhXHUwMDBhYicsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24o
aGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2FcdTAwMGJiJywge2NyZWF0ZTp0cnVlfSwg
MCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8n
LCAnYVx1MDAwY2InLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9u
KGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdhXHUwMDBkYicsIHtjcmVhdGU6dHJ1ZX0s
IDApOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcv
JywgJ2FcdTAwMGViJywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlv
bihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnYVx1MDAwZmInLCB7Y3JlYXRlOnRydWV9
LCAwKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgn
LycsICdhXHUwMDEwYicsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotICAgICAgICAgICAgZnVuY3Rp
b24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2FcdTAwMTFiJywge2NyZWF0ZTp0cnVl
fSwgMCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUo
Jy8nLCAnYVx1MDAxMmInLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0
aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdhXHUwMDEzYicsIHtjcmVhdGU6dHJ1
ZX0sIDApOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxl
KCcvJywgJ2FcdTAwMTRiJywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0gICAgICAgICAgICBmdW5j
dGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnYVx1MDAxNWInLCB7Y3JlYXRlOnRy
dWV9LCAwKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0Rmls
ZSgnLycsICdhXHUwMDE2YicsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotICAgICAgICAgICAgZnVu
Y3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2FcdTAwMTdiJywge2NyZWF0ZTp0
cnVlfSwgMCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZp
bGUoJy8nLCAnYVx1MDAxOGInLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLSAgICAgICAgICAgIGZ1
bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdhXHUwMDE5YicsIHtjcmVhdGU6
dHJ1ZX0sIDApOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRG
aWxlKCcvJywgJ2FcdTAwMWFiJywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0gICAgICAgICAgICBm
dW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnYVx1MDAxYmInLCB7Y3JlYXRl
OnRydWV9LCAwKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0
RmlsZSgnLycsICdhXHUwMDFjYicsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotICAgICAgICAgICAg
ZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2FcdTAwMWRiJywge2NyZWF0
ZTp0cnVlfSwgMCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdl
dEZpbGUoJy8nLCAnYVx1MDAxZWInLCB7Y3JlYXRlOnRydWV9LCAwKTsgfQotICAgICAgICBdLAot
ICAgICAgICBwb3N0Y29uZGl0aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hYid9LAot
ICAgICAgICBdLAotICAgIH0sCi1dOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVt
L3Jlc291cmNlcy9vcC10ZXN0cy1oZWxwZXIuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9vcC10ZXN0cy1oZWxwZXIuanMJKHJldmlzaW9uIDE1
NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvb3AtdGVzdHMt
aGVscGVyLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQxMyArMCwwIEBACi0vLyBIZWxwZXIgcm91
dGluZS4KLWZ1bmN0aW9uIHRvU3RyaW5nKG9iaikgewotICAgIGlmIChvYmogPT0gdW5kZWZpbmVk
KSB7Ci0gICAgICAgIHJldHVybiAidW5kZWZpbmVkIjsKLSAgICB9IGVsc2UgaWYgKHR5cGVvZiBv
YmogPT0gJ29iamVjdCcpIHsKLSAgICAgICAgaWYgKG9iai5sZW5ndGggIT0gdW5kZWZpbmVkKSB7
Ci0gICAgICAgICAgICB2YXIgc3RyaW5nQXJyYXkgPSBbXTsKLSAgICAgICAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgb2JqLmxlbmd0aDsgKytpKQotICAgICAgICAgICAgICAgIHN0cmluZ0FycmF5
LnB1c2godG9TdHJpbmcob2JqW2ldKSk7Ci0gICAgICAgICAgICBzdHJpbmdBcnJheS5zb3J0KCk7
Ci0gICAgICAgICAgICByZXR1cm4gJ1snICsgc3RyaW5nQXJyYXkuam9pbignLFxuICcpICsgJ10n
OwotICAgICAgICB9IGVsc2UgaWYgKG9iai5pc0RpcmVjdG9yeSB8fCBvYmouaXNGaWxlKSB7Ci0g
ICAgICAgICAgICByZXR1cm4gJ0VOVFJZIHtwYXRoOicgKyBvYmouZnVsbFBhdGggKyAnIG5hbWU6
JyArIG9iai5uYW1lICsgKG9iai5pc0RpcmVjdG9yeSA/ICcgdHlwZTpESVJFQ1RPUlknIDogJyB0
eXBlOkZJTEUnKSArICd9JzsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHJldHVybiBv
YmogKyAiIjsKLSAgICAgICAgfQotICAgIH0gZWxzZQotICAgICAgICByZXR1cm4gb2JqICsgIiI7
Ci19Ci0KLS8vIENyZWF0ZXMgYSB0ZXN0IGVudmlyb25tZW50IGZvciB0aGUgZ2l2ZW4gZW50cmll
cyB3aGVyZSBlbnRyaWVzIGlzIGFuIGFycmF5IG9mIHtmdWxsUGF0aDpTdHJpbmcsIGlzRGlyZWN0
b3J5OmJvb2xlYW59IG9iamVjdC4KLS8vIFdoZW4gdGhlIHdvcmxkIGlzIGNyZWF0ZWQgc3VjY2Vz
c2Z1bGx5LCBzdWNjZXNzQ2FsbGJhY2sgaXMgY2FsbGVkIHdpdGggYW4gb2JqZWN0IHRoYXQgaG9s
ZHMgYWxsIHRoZSBjcmVhdGVkIGVudHJ5IG9iamVjdHMuCi1mdW5jdGlvbiBjcmVhdGVUZXN0RW52
aXJvbm1lbnQoZmlsZVN5c3RlbSwgZW50cmllcywgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxi
YWNrKQotewotICAgIHZhciBIZWxwZXIgPSBmdW5jdGlvbihmaWxlU3lzdGVtLCBlbnRyaWVzLCBz
dWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spCi0gICAgewotICAgICAgICB0aGlzLmZpbGVT
eXN0ZW0gPSBmaWxlU3lzdGVtOwotICAgICAgICB0aGlzLmVudHJpZXMgPSBlbnRyaWVzOwotICAg
ICAgICB0aGlzLmN1cnJlbnQgPSAwOwotICAgICAgICB0aGlzLnN1Y2Nlc3NDYWxsYmFjayA9IHN1
Y2Nlc3NDYWxsYmFjazsKLSAgICAgICAgdGhpcy5lcnJvckNhbGxiYWNrID0gZXJyb3JDYWxsYmFj
azsKLSAgICAgICAgdGhpcy5lbnZpcm9ubWVudCA9IHt9OwotCi0gICAgICAgIHRoaXMuY3JlYXRl
U3VjY2Vzc0NhbGxiYWNrID0gZnVuY3Rpb24oZW50cnksIHNpemUpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGlmIChlbnRyeS5pc0ZpbGUgJiYgc2l6ZSA+IDApIHsKLSAgICAgICAgICAgICAgICBl
bnRyeS5jcmVhdGVXcml0ZXIoYmluZENhbGxiYWNrKHRoaXMsIGZ1bmN0aW9uKHdyaXRlcikgewot
ICAgICAgICAgICAgICAgICAgICB3cml0ZXIudHJ1bmNhdGUoc2l6ZSk7Ci0gICAgICAgICAgICAg
ICAgICAgIHdyaXRlci5vbmVycm9yID0gYmluZENhbGxiYWNrKHRoaXMsIHRoaXMuY3JlYXRlRXJy
b3JDYWxsYmFjayk7Ci0gICAgICAgICAgICAgICAgICAgIHdyaXRlci5vbndyaXRlZW5kID0gYmlu
ZENhbGxiYWNrKHRoaXMsIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAgICAgICAgdGhp
cy5lbnZpcm9ubWVudFtlbnRyeS5mdWxsUGF0aF0gPSBlbnRyeTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHRoaXMuZW52aXJvbm1lbnRbZW50cnkuZnVsbFBhdGggKyAnLnNpemUnXSA9IHNpemU7
Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZU5leHRFbnRyeSgpOwotICAgICAg
ICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICB9KSwgYmluZENhbGxiYWNrKHRoaXMs
IHRoaXMuY3JlYXRlRXJyb3JDYWxsYmFjaykpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIHRoaXMuZW52aXJvbm1lbnRbZW50cnkuZnVsbFBhdGhd
ID0gZW50cnk7Ci0gICAgICAgICAgICB0aGlzLmVudmlyb25tZW50W2VudHJ5LmZ1bGxQYXRoICsg
Jy5zaXplJ10gPSAwOwotICAgICAgICAgICAgdGhpcy5jcmVhdGVOZXh0RW50cnkoKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIHRoaXMuY3JlYXRlRXJyb3JDYWxsYmFjayA9IGZ1bmN0aW9uKGVycm9y
LCBlbnRyeSkKLSAgICAgICAgewotICAgICAgICAgICAgdGVzdEZhaWxlZCgnR290IHVuZXhwZWN0
ZWQgZXJyb3IgJyArIGVycm9yLmNvZGUgKyAnIHdoaWxlIGNyZWF0aW5nICcgKyB0b1N0cmluZyhl
bnRyeSkpOwotICAgICAgICAgICAgdGhpcy5lcnJvckNhbGxiYWNrKGVycm9yKTsKLSAgICAgICAg
fQotCi0gICAgICAgIHRoaXMuY3JlYXRlTmV4dEVudHJ5ID0gZnVuY3Rpb24oKQotICAgICAgICB7
Ci0gICAgICAgICAgICBpZiAodGhpcy5jdXJyZW50ID49IHRoaXMuZW50cmllcy5sZW5ndGgpIHsK
LSAgICAgICAgICAgICAgICB0aGlzLnN1Y2Nlc3NDYWxsYmFjayh0aGlzLmVudmlyb25tZW50KTsK
LSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB2YXIg
ZW50cnkgPSB0aGlzLmVudHJpZXNbdGhpcy5jdXJyZW50KytdOwotICAgICAgICAgICAgaWYgKGVu
dHJ5LmlzRGlyZWN0b3J5KQotICAgICAgICAgICAgICAgIGZpbGVTeXN0ZW0ucm9vdC5nZXREaXJl
Y3RvcnkoZW50cnkuZnVsbFBhdGgsIHtjcmVhdGU6dHJ1ZX0sIGJpbmRDYWxsYmFjayh0aGlzLCB0
aGlzLmNyZWF0ZVN1Y2Nlc3NDYWxsYmFjayksIGJpbmRDYWxsYmFjayh0aGlzLCB0aGlzLmNyZWF0
ZUVycm9yQ2FsbGJhY2spKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBmaWxl
U3lzdGVtLnJvb3QuZ2V0RmlsZShlbnRyeS5mdWxsUGF0aCwge2NyZWF0ZTp0cnVlfSwgYmluZENh
bGxiYWNrKHRoaXMsIHRoaXMuY3JlYXRlU3VjY2Vzc0NhbGxiYWNrLCBlbnRyeS5zaXplKSwgYmlu
ZENhbGxiYWNrKHRoaXMsIHRoaXMuY3JlYXRlRXJyb3JDYWxsYmFjaykpOwotICAgICAgICB9Owot
ICAgIH07Ci0KLSAgICBpZiAoIWVudHJpZXMgfHwgIWVudHJpZXMubGVuZ3RoKSB7Ci0gICAgICAg
IHN1Y2Nlc3NDYWxsYmFjayh7fSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgdmFyIGhl
bHBlciA9IG5ldyBIZWxwZXIoZmlsZVN5c3RlbSwgZW50cmllcywgc3VjY2Vzc0NhbGxiYWNrLCBl
cnJvckNhbGxiYWNrKTsKLSAgICBoZWxwZXIuY3JlYXRlTmV4dEVudHJ5KCk7Ci19Ci0KLWZ1bmN0
aW9uIHZlcmlmeVRlc3RFbnZpcm9ubWVudChmaWxlU3lzdGVtLCBlbnRyaWVzLCBzdWNjZXNzQ2Fs
bGJhY2ssIGVycm9yQ2FsbGJhY2spCi17Ci0gICAgdmFyIEhlbHBlciA9IGZ1bmN0aW9uKGZpbGVT
eXN0ZW0sIGVudHJpZXMsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykKLSAgICB7Ci0g
ICAgICAgIHRoaXMuZmlsZVN5c3RlbSA9IGZpbGVTeXN0ZW07Ci0gICAgICAgIHRoaXMuZW50cmll
cyA9IGVudHJpZXM7Ci0gICAgICAgIHRoaXMuY3VycmVudCA9IDA7Ci0gICAgICAgIHRoaXMuc3Vj
Y2Vzc0NhbGxiYWNrID0gc3VjY2Vzc0NhbGxiYWNrOwotICAgICAgICB0aGlzLmVycm9yQ2FsbGJh
Y2sgPSBlcnJvckNhbGxiYWNrOwotICAgICAgICB0aGlzLmV4cGVjdGVkTm9uZXhpc3RlbnQgPSBm
YWxzZTsKLQotICAgICAgICB0aGlzLnZlcmlmeVN1Y2Nlc3NDYWxsYmFjayA9IGZ1bmN0aW9uKGVu
dHJ5KQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAodGhpcy5leHBlY3RlZE5vbmV4aXN0ZW50
KSB7Ci0gICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgnRm91bmQgdW5leHBlY3RlZCBlbnRyeSAn
ICsgZW50cnkuZnVsbFBhdGgpOwotICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JDYWxsYmFjaygp
OwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRl
c3RQYXNzZWQoJ1ZlcmlmaWVkIGVudHJ5OiAnICsgdG9TdHJpbmcoZW50cnkpKTsKLSAgICAgICAg
ICAgIHRoaXMudmVyaWZ5TmV4dEVudHJ5KCk7Ci0gICAgICAgIH0KLQotICAgICAgICB0aGlzLnZl
cmlmeUVycm9yQ2FsbGJhY2sgPSBmdW5jdGlvbihlcnJvciwgZW50cnkpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIGlmICh0aGlzLmV4cGVjdGVkTm9uZXhpc3RlbnQpIHsKLSAgICAgICAgICAgICAg
ICB0ZXN0UGFzc2VkKCdWZXJpZmllZCBlbnRyeSBkb2VzIE5PVCBleGlzdDogJyArIGVudHJ5LmZ1
bGxQYXRoKTsKLSAgICAgICAgICAgICAgICB0aGlzLnZlcmlmeU5leHRFbnRyeSgpOwotICAgICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChlcnJvciA9
PSBGaWxlRXJyb3IuTk9UX0ZPVU5EX0VSUikKLSAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCdO
b3QgZm91bmQ6ICcgKyBlbnRyeS5mdWxsUGF0aCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgdGVzdEZhaWxlZCgnR290IHVuZXhwZWN0ZWQgZXJyb3IgJyArIGVycm9yLmNvZGUg
KyAnIGZvciAnICsgZW50cnkuZnVsbFBhdGgpOwotICAgICAgICAgICAgdGhpcy5lcnJvckNhbGxi
YWNrKGVycm9yKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRoaXMudmVyaWZ5TmV4dEVudHJ5ID0g
ZnVuY3Rpb24oKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAodGhpcy5jdXJyZW50ID49IHRo
aXMuZW50cmllcy5sZW5ndGgpIHsKLSAgICAgICAgICAgICAgICB0aGlzLnN1Y2Nlc3NDYWxsYmFj
aygpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IHZhciBlbnRyeSA9IHRoaXMuZW50cmllc1t0aGlzLmN1cnJlbnQrK107Ci0gICAgICAgICAgICB0
aGlzLmV4cGVjdGVkTm9uZXhpc3RlbnQgPSBlbnRyeS5ub25leGlzdGVudDsKLSAgICAgICAgICAg
IGlmIChlbnRyeS5pc0RpcmVjdG9yeSkKLSAgICAgICAgICAgICAgICBmaWxlU3lzdGVtLnJvb3Qu
Z2V0RGlyZWN0b3J5KGVudHJ5LmZ1bGxQYXRoLCB7fSwgYmluZENhbGxiYWNrKHRoaXMsIHRoaXMu
dmVyaWZ5U3VjY2Vzc0NhbGxiYWNrKSwgYmluZENhbGxiYWNrKHRoaXMsIHRoaXMudmVyaWZ5RXJy
b3JDYWxsYmFjaywgZW50cnkpKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBm
aWxlU3lzdGVtLnJvb3QuZ2V0RmlsZShlbnRyeS5mdWxsUGF0aCwge30sIGJpbmRDYWxsYmFjayh0
aGlzLCB0aGlzLnZlcmlmeVN1Y2Nlc3NDYWxsYmFjayksIGJpbmRDYWxsYmFjayh0aGlzLCB0aGlz
LnZlcmlmeUVycm9yQ2FsbGJhY2ssIGVudHJ5KSk7Ci0gICAgICAgIH07Ci0gICAgfTsKLQotICAg
IGlmICghZW50cmllcyB8fCAhZW50cmllcy5sZW5ndGgpIHsKLSAgICAgICAgc3VjY2Vzc0NhbGxi
YWNrKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgdmFyIGhlbHBlciA9IG5ldyBIZWxw
ZXIoZmlsZVN5c3RlbSwgZW50cmllcywgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsK
LSAgICBoZWxwZXIudmVyaWZ5TmV4dEVudHJ5KCk7Ci19Ci0KLS8vIHRlc3RDYXNlIG11c3QgaGF2
ZSBwcmVjb25kaXRpb24sIHBvc3Rjb25kaXRpb24gYW5kIHRlc3QgZnVuY3Rpb24gZmllbGQuCi0v
LyAoU2VlIHJlc291cmNlcy9vcC0qLmpzIGZvciBleGFtcGxlcy4pCi1mdW5jdGlvbiBydW5PcGVy
YXRpb25UZXN0KGZpbGVTeXN0ZW0sIHRlc3RDYXNlLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2Fs
bGJhY2spCi17Ci0gICAgdmFyIE9wZXJhdGlvblRlc3RIZWxwZXIgPSBmdW5jdGlvbihmaWxlU3lz
dGVtLCB0ZXN0Q2FzZSwgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKQotICAgIHsKLSAg
ICAgICAgdGhpcy5maWxlU3lzdGVtID0gZmlsZVN5c3RlbTsKLSAgICAgICAgdGhpcy50ZXN0Q2Fz
ZSA9IHRlc3RDYXNlOwotICAgICAgICB0aGlzLnN1Y2Nlc3NDYWxsYmFjayA9IHN1Y2Nlc3NDYWxs
YmFjazsKLSAgICAgICAgdGhpcy5lcnJvckNhbGxiYWNrID0gZXJyb3JDYWxsYmFjazsKLSAgICAg
ICAgdGhpcy5zdGFnZSA9ICcnOwotICAgICAgICB0aGlzLmVudmlyb25tZW50ID0ge307Ci0gICAg
ICAgIHRoaXMuY3VycmVudFRlc3QgPSAwOwotCi0gICAgICAgIHRoaXMuY3VycmVudFJlYWRlciA9
IG51bGw7Ci0gICAgICAgIHRoaXMucmVhZEVudHJpZXMgPSBbXTsKLQotICAgICAgICB0aGlzLmdl
dFN5bWJvbFN0cmluZyA9IGZ1bmN0aW9uKHN5bWJvbCkKLSAgICAgICAgewotICAgICAgICAgICAg
cmV0dXJuICd0aGlzLmVudmlyb25tZW50WyInICsgc3ltYm9sICsgJyJdJzsKLSAgICAgICAgfTsK
LQotICAgICAgICB0aGlzLnRlc3RTdWNjZXNzQ2FsbGJhY2sgPSBmdW5jdGlvbigpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIGlmICghdGhpcy5leHBlY3RlZEVycm9yQ29kZSkgewotICAgICAgICAg
ICAgICAgIHRlc3RQYXNzZWQoJ1N1Y2NlZWRlZDogJyArIHRoaXMuc3RhZ2UpOwotICAgICAgICAg
ICAgICAgIHRoaXMucnVuTmV4dFRlc3QoKTsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAg
ICAgICAgIHRlc3RGYWlsZWQoJ1VuZXhwZWN0ZWRseSBzdWNjZWVkZWQgd2hpbGUgJyArIHRoaXMu
c3RhZ2UpOwotICAgICAgICB9OwotCi0gICAgICAgIHRoaXMuZW50cnkgPSBudWxsOwotICAgICAg
ICB0aGlzLnRlc3RHZXRTdWNjZXNzQ2FsbGJhY2sgPSBmdW5jdGlvbihlbnRyeSkKLSAgICAgICAg
ewotICAgICAgICAgICAgaWYgKCF0aGlzLmV4cGVjdGVkRXJyb3JDb2RlKSB7Ci0gICAgICAgICAg
ICAgICAgdGVzdFBhc3NlZCgnU3VjY2VlZGVkOiAnICsgdGhpcy5zdGFnZSk7Ci0gICAgICAgICAg
ICAgICAgdGhpcy5lbnRyeSA9IGVudHJ5OwotICAgICAgICAgICAgICAgIHNob3VsZEJlLmFwcGx5
KHRoaXMsIFsndGhpcy5lbnZpcm9ubWVudFt0aGlzLmVudHJ5LmZ1bGxQYXRoXS5mdWxsUGF0aCcs
ICciJyArIGVudHJ5LmZ1bGxQYXRoICsgJyInXSk7Ci0gICAgICAgICAgICAgICAgc2hvdWxkQmUu
YXBwbHkodGhpcywgWyd0aGlzLmVudmlyb25tZW50W3RoaXMuZW50cnkuZnVsbFBhdGhdLmlzRmls
ZSArICIiJywgJyInICsgZW50cnkuaXNGaWxlICsgJyInXSk7Ci0gICAgICAgICAgICAgICAgc2hv
dWxkQmUuYXBwbHkodGhpcywgWyd0aGlzLmVudmlyb25tZW50W3RoaXMuZW50cnkuZnVsbFBhdGhd
LmlzRGlyZWN0b3J5ICsgIiInLCAnIicgKyBlbnRyeS5pc0RpcmVjdG9yeSArICciJ10pOwotICAg
ICAgICAgICAgICAgIHRoaXMucnVuTmV4dFRlc3QoKTsKLSAgICAgICAgICAgIH0gZWxzZQotICAg
ICAgICAgICAgICAgIHRlc3RGYWlsZWQoJ1VuZXhwZWN0ZWRseSBzdWNjZWVkZWQgd2hpbGUgJyAr
IHRoaXMuc3RhZ2UpOwotICAgICAgICB9OwotCi0gICAgICAgIHRoaXMudGVzdENyZWF0ZVN1Y2Nl
c3NDYWxsYmFjayA9IGZ1bmN0aW9uKGVudHJ5KQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAo
IXRoaXMuZXhwZWN0ZWRFcnJvckNvZGUpIHsKLSAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCdT
dWNjZWVkZWQ6ICcgKyB0aGlzLnN0YWdlKTsKLSAgICAgICAgICAgICAgICB0aGlzLmVudmlyb25t
ZW50W2VudHJ5LmZ1bGxQYXRoXSA9IGVudHJ5OwotICAgICAgICAgICAgICAgIHRoaXMucnVuTmV4
dFRlc3QoKTsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQo
J1VuZXhwZWN0ZWRseSBzdWNjZWVkZWQgd2hpbGUgJyArIHRoaXMuc3RhZ2UpOwotICAgICAgICB9
OwotCi0gICAgICAgIHRoaXMudGVzdEdldFBhcmVudFN1Y2Nlc3NDYWxsYmFjayA9IGZ1bmN0aW9u
KGVudHJ5KQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIXRoaXMuZXhwZWN0ZWRFcnJvckNv
ZGUpIHsKLSAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCdTdWNjZWVkZWQ6ICcgKyB0aGlzLnN0
YWdlKTsKLSAgICAgICAgICAgICAgICBkZWJ1ZygnUGFyZW50IGVudHJ5OiAnICsgdG9TdHJpbmco
ZW50cnkpKTsKLSAgICAgICAgICAgICAgICB0aGlzLnJ1bk5leHRUZXN0KCk7Ci0gICAgICAgICAg
ICB9IGVsc2UKLSAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCdVbmV4cGVjdGVkbHkgc3VjY2Vl
ZGVkIHdoaWxlICcgKyB0aGlzLnN0YWdlKTsKLSAgICAgICAgfTsKLQotICAgICAgICB0aGlzLnRl
c3RSZWFkRW50cmllc1N1Y2Nlc3NDYWxsYmFjayA9IGZ1bmN0aW9uKGVudHJpZXMpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIGlmICh0aGlzLmV4cGVjdGVkRXJyb3JDb2RlKQotICAgICAgICAgICAg
ICAgIHRlc3RGYWlsZWQoJ1VuZXhwZWN0ZWRseSBzdWNjZWVkZWQgd2hpbGUgJyArIHRoaXMuc3Rh
Z2UpOwotCi0gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVudHJpZXMubGVuZ3RoOyAr
K2kpCi0gICAgICAgICAgICAgICAgdGhpcy5yZWFkRW50cmllcy5wdXNoKGVudHJpZXNbaV0pOwot
Ci0gICAgICAgICAgICBpZiAoZW50cmllcy5sZW5ndGgpIHsKLSAgICAgICAgICAgICAgICB0aGlz
LmN1cnJlbnRSZWFkZXIucmVhZEVudHJpZXMoYmluZENhbGxiYWNrKHRoaXMsIHRoaXMudGVzdFJl
YWRFbnRyaWVzU3VjY2Vzc0NhbGxiYWNrKSwgYmluZENhbGxiYWNrKHRoaXMsIHRoaXMudGVzdEVy
cm9yQ2FsbGJhY2spKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0K
LSAgICAgICAgICAgIHRlc3RQYXNzZWQoJ1N1Y2NlZWRlZDogJyArIHRoaXMuc3RhZ2UpOwotICAg
ICAgICAgICAgZGVidWcoJ0VudHJpZXM6ICcgKyB0b1N0cmluZyh0aGlzLnJlYWRFbnRyaWVzKSk7
Ci0gICAgICAgICAgICB0aGlzLnJ1bk5leHRUZXN0KCk7Ci0gICAgICAgIH07Ci0KLSAgICAgICAg
dGhpcy50ZXN0TWV0YWRhdGFTdWNjZXNzQ2FsbGJhY2sgPSBmdW5jdGlvbihtZXRhZGF0YSwgZW50
cnkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghdGhpcy5leHBlY3RlZEVycm9yQ29kZSkg
ewotICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoJ1N1Y2NlZWRlZDogJyArIHRoaXMuc3RhZ2Up
OwotICAgICAgICAgICAgICAgIHZhciBzeW1ib2wgPSBlbnRyeSArICcucmV0dXJuZWQubW9kaWZp
Y2F0aW9uVGltZSc7Ci0gICAgICAgICAgICAgICAgdGhpcy5lbnZpcm9ubWVudFtzeW1ib2xdID0g
bWV0YWRhdGEubW9kaWZpY2F0aW9uVGltZTsKLSAgICAgICAgICAgICAgICB2YXIgZW50cnlNZXRh
ZGF0YVN0cmluZyA9IHRoaXMuZ2V0U3ltYm9sU3RyaW5nKHN5bWJvbCk7Ci0gICAgICAgICAgICAg
ICAgaWYgKGVudHJ5ICE9ICcvJykgewotICAgICAgICAgICAgICAgICAgICBzaG91bGRCZUdyZWF0
ZXJUaGFuT3JFcXVhbC5hcHBseSh0aGlzLCBbZW50cnlNZXRhZGF0YVN0cmluZywgJ3RoaXMucm91
bmRlZFN0YXJ0RGF0ZSddKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYg
KG1ldGFkYXRhLnNpemUpIHsKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5lbnZpcm9ubWVudFtl
bnRyeSArICcucmV0dXJuZWQuc2l6ZSddID0gbWV0YWRhdGEuc2l6ZTsKLSAgICAgICAgICAgICAg
ICAgICAgdmFyIGVudHJ5U2l6ZVN0cmluZyA9IHRoaXMuZ2V0U3ltYm9sU3RyaW5nKGVudHJ5ICsg
Jy5yZXR1cm5lZC5zaXplJyk7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBleHBlY3RlZFNpemVT
dHJpbmcgPSB0aGlzLmdldFN5bWJvbFN0cmluZyhlbnRyeSArICcuc2l6ZScpOwotICAgICAgICAg
ICAgICAgICAgICBzaG91bGRCZS5hcHBseSh0aGlzLCBbZXhwZWN0ZWRTaXplU3RyaW5nLCBlbnRy
eVNpemVTdHJpbmddKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgdGhpcy5y
dW5OZXh0VGVzdCgpOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgdGVzdEZh
aWxlZCgnVW5leHBlY3RlZGx5IHN1Y2NlZWRlZCB3aGlsZSAnICsgdGhpcy5zdGFnZSk7Ci0gICAg
ICAgIH07Ci0KLSAgICAgICAgdGhpcy50ZXN0RXJyb3JDYWxsYmFjayA9IGZ1bmN0aW9uKGVycm9y
KQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAodGhpcy5leHBlY3RlZEVycm9yQ29kZSkgewot
ICAgICAgICAgICAgICAgIHNob3VsZEJlLmFwcGx5KHRoaXMsIFsndGhpcy5leHBlY3RlZEVycm9y
Q29kZSArICIiJywgJyInICsgZXJyb3IuY29kZSArICciJ10pOwotICAgICAgICAgICAgICAgIHRo
aXMucnVuTmV4dFRlc3QoKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAg
dGVzdEZhaWxlZCgnR290IHVuZXhwZWN0ZWQgZXJyb3IgJyArIGVycm9yLmNvZGUgKyAnIHdoaWxl
ICcgKyB0aGlzLnN0YWdlKTsKLSAgICAgICAgICAgICAgICB0aGlzLmVycm9yQ2FsbGJhY2soZXJy
b3IpOwotICAgICAgICAgICAgfQotICAgICAgICB9OwotCi0gICAgICAgIC8vIE9wZXJhdGlvbnMg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSAg
ICAgICAgdGhpcy5nZXRGaWxlID0gZnVuY3Rpb24oZW50cnksIHBhdGgsIGZsYWdzLCBleHBlY3Rl
ZEVycm9yQ29kZSkKLSAgICAgICAgewotICAgICAgICAgICAgdGhpcy5leHBlY3RlZEVycm9yQ29k
ZSA9IGV4cGVjdGVkRXJyb3JDb2RlOwotICAgICAgICAgICAgdGhpcy5zdGFnZSA9ICciJyArIGVu
dHJ5ICsgJyIuZ2V0RmlsZSgiJyArIHBhdGggKyAnIiknOwotICAgICAgICAgICAgdmFyIHN1Y2Nl
c3NDYWxsYmFjayA9IChmbGFncyAmJiBmbGFncy5jcmVhdGUpID8gdGhpcy50ZXN0Q3JlYXRlU3Vj
Y2Vzc0NhbGxiYWNrIDogdGhpcy50ZXN0R2V0U3VjY2Vzc0NhbGxiYWNrOwotICAgICAgICAgICAg
dGhpcy5lbnZpcm9ubWVudFtlbnRyeV0uZ2V0RmlsZShwYXRoLCBmbGFncywgYmluZENhbGxiYWNr
KHRoaXMsIHN1Y2Nlc3NDYWxsYmFjayksIGJpbmRDYWxsYmFjayh0aGlzLCB0aGlzLnRlc3RFcnJv
ckNhbGxiYWNrKSk7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGhpcy5nZXREaXJlY3RvcnkgPSBm
dW5jdGlvbihlbnRyeSwgcGF0aCwgZmxhZ3MsIGV4cGVjdGVkRXJyb3JDb2RlKQotICAgICAgICB7
Ci0gICAgICAgICAgICB0aGlzLmV4cGVjdGVkRXJyb3JDb2RlID0gZXhwZWN0ZWRFcnJvckNvZGU7
Ci0gICAgICAgICAgICB0aGlzLnN0YWdlID0gJyInICsgZW50cnkgKyAnIi5nZXREaXJlY3Rvcnko
IicgKyBwYXRoICsgJyIpJzsKLSAgICAgICAgICAgIHZhciBzdWNjZXNzQ2FsbGJhY2sgPSAoZmxh
Z3MgJiYgZmxhZ3MuY3JlYXRlKSA/IHRoaXMudGVzdENyZWF0ZVN1Y2Nlc3NDYWxsYmFjayA6IHRo
aXMudGVzdEdldFN1Y2Nlc3NDYWxsYmFjazsKLSAgICAgICAgICAgIHRoaXMuZW52aXJvbm1lbnRb
ZW50cnldLmdldERpcmVjdG9yeShwYXRoLCBmbGFncywgYmluZENhbGxiYWNrKHRoaXMsIHN1Y2Nl
c3NDYWxsYmFjayksIGJpbmRDYWxsYmFjayh0aGlzLCB0aGlzLnRlc3RFcnJvckNhbGxiYWNrKSk7
Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGhpcy5nZXRQYXJlbnQgPSBmdW5jdGlvbihlbnRyeSwg
ZXhwZWN0ZWRFcnJvckNvZGUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRoaXMuZXhwZWN0ZWRF
cnJvckNvZGUgPSBleHBlY3RlZEVycm9yQ29kZTsKLSAgICAgICAgICAgIHRoaXMuc3RhZ2UgPSAn
IicgKyBlbnRyeSArICciLmdldFBhcmVudCgpJzsKLSAgICAgICAgICAgIHRoaXMuZW52aXJvbm1l
bnRbZW50cnldLmdldFBhcmVudChiaW5kQ2FsbGJhY2sodGhpcywgdGhpcy50ZXN0R2V0UGFyZW50
U3VjY2Vzc0NhbGxiYWNrKSwgYmluZENhbGxiYWNrKHRoaXMsIHRoaXMudGVzdEVycm9yQ2FsbGJh
Y2spKTsKLSAgICAgICAgfTsKLQotICAgICAgICB0aGlzLmdldE1ldGFkYXRhID0gZnVuY3Rpb24o
ZW50cnksIGV4cGVjdGVkRXJyb3JDb2RlKQotICAgICAgICB7Ci0gICAgICAgICAgICB0aGlzLmV4
cGVjdGVkRXJyb3JDb2RlID0gZXhwZWN0ZWRFcnJvckNvZGU7Ci0gICAgICAgICAgICB0aGlzLnN0
YWdlID0gJyInICsgZW50cnkgKyAnIi5nZXRNZXRhZGF0YSgpJzsKLSAgICAgICAgICAgIHRoaXMu
ZW52aXJvbm1lbnRbZW50cnldLmdldE1ldGFkYXRhKGJpbmRDYWxsYmFjayh0aGlzLCB0aGlzLnRl
c3RNZXRhZGF0YVN1Y2Nlc3NDYWxsYmFjaywgZW50cnkpLCBiaW5kQ2FsbGJhY2sodGhpcywgdGhp
cy50ZXN0RXJyb3JDYWxsYmFjaykpOwotICAgICAgICB9OwotCi0gICAgICAgIHRoaXMucmVtb3Zl
ID0gZnVuY3Rpb24oZW50cnksIGV4cGVjdGVkRXJyb3JDb2RlKQotICAgICAgICB7Ci0gICAgICAg
ICAgICB0aGlzLmV4cGVjdGVkRXJyb3JDb2RlID0gZXhwZWN0ZWRFcnJvckNvZGU7Ci0gICAgICAg
ICAgICB0aGlzLnN0YWdlID0gJyInICsgZW50cnkgKyAnIi5yZW1vdmUoKSc7Ci0gICAgICAgICAg
ICB0aGlzLmVudmlyb25tZW50W2VudHJ5XS5yZW1vdmUoYmluZENhbGxiYWNrKHRoaXMsIHRoaXMu
dGVzdFN1Y2Nlc3NDYWxsYmFjayksIGJpbmRDYWxsYmFjayh0aGlzLCB0aGlzLnRlc3RFcnJvckNh
bGxiYWNrKSk7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGhpcy5yZW1vdmVSZWN1cnNpdmVseSA9
IGZ1bmN0aW9uKGVudHJ5LCBleHBlY3RlZEVycm9yQ29kZSkKLSAgICAgICAgewotICAgICAgICAg
ICAgdGhpcy5leHBlY3RlZEVycm9yQ29kZSA9IGV4cGVjdGVkRXJyb3JDb2RlOwotICAgICAgICAg
ICAgdGhpcy5zdGFnZSA9ICciJyArIGVudHJ5ICsgJyIucmVtb3ZlUmVjdXJzaXZlbHkoKSc7Ci0g
ICAgICAgICAgICB0aGlzLmVudmlyb25tZW50W2VudHJ5XS5yZW1vdmVSZWN1cnNpdmVseShiaW5k
Q2FsbGJhY2sodGhpcywgdGhpcy50ZXN0U3VjY2Vzc0NhbGxiYWNrKSwgYmluZENhbGxiYWNrKHRo
aXMsIHRoaXMudGVzdEVycm9yQ2FsbGJhY2spKTsKLSAgICAgICAgfTsKLQotICAgICAgICB0aGlz
LnJlYWREaXJlY3RvcnkgPSBmdW5jdGlvbihlbnRyeSwgZXhwZWN0ZWRFcnJvckNvZGUpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIHRoaXMuZXhwZWN0ZWRFcnJvckNvZGUgPSBleHBlY3RlZEVycm9y
Q29kZTsKLSAgICAgICAgICAgIHRoaXMucmVhZEVudHJpZXMgPSBbXTsKLSAgICAgICAgICAgIHRo
aXMuc3RhZ2UgPSAnIicgKyBlbnRyeSArICciLmNyZWF0ZVJlYWRlcigpLnJlYWRFbnRyaWVzKCkn
OwotICAgICAgICAgICAgdGhpcy5jdXJyZW50UmVhZGVyID0gdGhpcy5lbnZpcm9ubWVudFtlbnRy
eV0uY3JlYXRlUmVhZGVyKCk7Ci0gICAgICAgICAgICB0aGlzLmN1cnJlbnRSZWFkZXIucmVhZEVu
dHJpZXMoYmluZENhbGxiYWNrKHRoaXMsIHRoaXMudGVzdFJlYWRFbnRyaWVzU3VjY2Vzc0NhbGxi
YWNrKSwgYmluZENhbGxiYWNrKHRoaXMsIHRoaXMudGVzdEVycm9yQ2FsbGJhY2spKTsKLSAgICAg
ICAgfTsKLQotICAgICAgICB0aGlzLmNvcHkgPSBmdW5jdGlvbihlbnRyeSwgZGVzdGluYXRpb25Q
YXJlbnQsIG5ld05hbWUsIGV4cGVjdGVkRXJyb3JDb2RlKQotICAgICAgICB7Ci0gICAgICAgICAg
ICB0aGlzLmV4cGVjdGVkRXJyb3JDb2RlID0gZXhwZWN0ZWRFcnJvckNvZGU7Ci0gICAgICAgICAg
ICB0aGlzLnN0YWdlID0gJyInICsgZW50cnkgKyAnIi5jb3B5VG8oIicgKyBkZXN0aW5hdGlvblBh
cmVudCArICciLCAiJyArIG5ld05hbWUgKyAnIiknOwotICAgICAgICAgICAgdGhpcy5lbnZpcm9u
bWVudFtlbnRyeV0uY29weVRvKHRoaXMuZW52aXJvbm1lbnRbZGVzdGluYXRpb25QYXJlbnRdLCBu
ZXdOYW1lLCBiaW5kQ2FsbGJhY2sodGhpcywgdGhpcy50ZXN0U3VjY2Vzc0NhbGxiYWNrKSwgYmlu
ZENhbGxiYWNrKHRoaXMsIHRoaXMudGVzdEVycm9yQ2FsbGJhY2spKTsKLSAgICAgICAgfTsKLQot
ICAgICAgICB0aGlzLm1vdmUgPSBmdW5jdGlvbihlbnRyeSwgZGVzdGluYXRpb25QYXJlbnQsIG5l
d05hbWUsIGV4cGVjdGVkRXJyb3JDb2RlKQotICAgICAgICB7Ci0gICAgICAgICAgICB0aGlzLmV4
cGVjdGVkRXJyb3JDb2RlID0gZXhwZWN0ZWRFcnJvckNvZGU7Ci0gICAgICAgICAgICB0aGlzLnN0
YWdlID0gJyInICsgZW50cnkgKyAnIi5tb3ZlVG8oIicgKyBkZXN0aW5hdGlvblBhcmVudCArICci
LCAiJyArIG5ld05hbWUgKyAnIiknOwotICAgICAgICAgICAgdGhpcy5lbnZpcm9ubWVudFtlbnRy
eV0ubW92ZVRvKHRoaXMuZW52aXJvbm1lbnRbZGVzdGluYXRpb25QYXJlbnRdLCBuZXdOYW1lLCBi
aW5kQ2FsbGJhY2sodGhpcywgdGhpcy50ZXN0U3VjY2Vzc0NhbGxiYWNrKSwgYmluZENhbGxiYWNr
KHRoaXMsIHRoaXMudGVzdEVycm9yQ2FsbGJhY2spKTsKLSAgICAgICAgfTsKLQotICAgICAgICB0
aGlzLnNob3VsZEJlID0gZnVuY3Rpb24oc3ltYm9sMSwgc3ltYm9sMikKLSAgICAgICAgewotICAg
ICAgICAgICAgc2hvdWxkQmUuYXBwbHkodGhpcywgW3RoaXMuZ2V0U3ltYm9sU3RyaW5nKHN5bWJv
bDEpLCB0aGlzLmdldFN5bWJvbFN0cmluZyhzeW1ib2wyKV0pOwotICAgICAgICAgICAgdGhpcy5y
dW5OZXh0VGVzdCgpOwotICAgICAgICB9OwotCi0gICAgICAgIHRoaXMuc2hvdWxkQmVHcmVhdGVy
VGhhbk9yRXF1YWwgPSBmdW5jdGlvbihzeW1ib2wxLCBzeW1ib2wyKQotICAgICAgICB7Ci0gICAg
ICAgICAgICBzaG91bGRCZUdyZWF0ZXJUaGFuT3JFcXVhbC5hcHBseSh0aGlzLCBbdGhpcy5nZXRT
eW1ib2xTdHJpbmcoc3ltYm9sMSksIHRoaXMuZ2V0U3ltYm9sU3RyaW5nKHN5bWJvbDIpXSk7Ci0g
ICAgICAgICAgICB0aGlzLnJ1bk5leHRUZXN0KCk7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgLy8t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KLSAgICAgICAgdGhpcy5zdGFydCA9IGZ1bmN0aW9uKCkKLSAgICAgICAgewotICAgICAg
ICAgICAgdGhpcy5leHBlY3RlZEVycm9yQ29kZSA9ICcnOwotICAgICAgICAgICAgdGhpcy5zdGFn
ZSA9ICdyZXNldHRpbmcgZmlsZXN5c3RlbSc7Ci0gICAgICAgICAgICAvLyBSZWNvcmQgcm91bmRl
ZCBzdGFydCBkYXRlIChjdXJyZW50IHRpbWUgbWludXMgOTk5IG1zZWMpIGhlcmUgZm9yIHRoZSBj
b21wYXJpc29uLiBFbnRyeS5nZXRNZXRhZGF0YSgpIG1heSByZXR1cm4gdGhlIGxhc3QgbW9kIHRp
bWUgaW4gc2Vjb25kcyBhY2N1cmFjeSB3aGlsZSBuZXcgRGF0ZSgpIGlzIG1pbGxpc2Vjb25kcyBh
Y2N1cmFjeS4KLSAgICAgICAgICAgIHRoaXMucm91bmRlZFN0YXJ0RGF0ZSA9IG5ldyBEYXRlKChu
ZXcgRGF0ZSgpKS5nZXRUaW1lKCkgLSA5OTkpOwotICAgICAgICAgICAgcmVtb3ZlQWxsSW5EaXJl
Y3RvcnkodGhpcy5maWxlU3lzdGVtLnJvb3QsIGJpbmRDYWxsYmFjayh0aGlzLCB0aGlzLnNldFVw
KSwgYmluZENhbGxiYWNrKHRoaXMsIHRoaXMudGVzdEVycm9yQ2FsbGJhY2spKTsKLSAgICAgICAg
fTsKLQotICAgICAgICB0aGlzLnNldFVwID0gZnVuY3Rpb24oKQotICAgICAgICB7Ci0gICAgICAg
ICAgICB0aGlzLmV4cGVjdGVkRXJyb3JDb2RlID0gJyc7Ci0gICAgICAgICAgICB0aGlzLnN0YWdl
ID0gJ3NldHRpbmcgdXAgdGVzdCBwcmVjb25kaXRpb24nOwotICAgICAgICAgICAgY3JlYXRlVGVz
dEVudmlyb25tZW50KHRoaXMuZmlsZVN5c3RlbSwgdGhpcy50ZXN0Q2FzZS5wcmVjb25kaXRpb24s
IGJpbmRDYWxsYmFjayh0aGlzLCB0aGlzLnJ1blRlc3RzKSwgYmluZENhbGxiYWNrKHRoaXMsIHRo
aXMudGVzdEVycm9yQ2FsbGJhY2spKTsKLSAgICAgICAgfTsKLQotICAgICAgICB0aGlzLnJ1bk5l
eHRUZXN0ID0gZnVuY3Rpb24oKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAodGhpcy5jdXJy
ZW50VGVzdCA+PSB0aGlzLnRlc3RDYXNlLnRlc3RzLmxlbmd0aCkgewotICAgICAgICAgICAgICAg
IHRoaXMudmVyaWZ5KCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgdGhpcy50ZXN0Q2FzZS50ZXN0c1t0aGlzLmN1cnJlbnRUZXN0KytdKHRoaXMp
OwotICAgICAgICB9OwotCi0gICAgICAgIHRoaXMucnVuVGVzdHMgPSBmdW5jdGlvbihlbnZpcm9u
bWVudCkKLSAgICAgICAgewotICAgICAgICAgICAgdGhpcy5lbnZpcm9ubWVudCA9IGVudmlyb25t
ZW50OwotICAgICAgICAgICAgdGhpcy5lbnZpcm9ubWVudFsnLyddID0gdGhpcy5maWxlU3lzdGVt
LnJvb3Q7Ci0gICAgICAgICAgICB0aGlzLmN1cnJlbnRUZXN0ID0gMDsKLSAgICAgICAgICAgIHRo
aXMucnVuTmV4dFRlc3QoKTsKLSAgICAgICAgfTsKLQotICAgICAgICB0aGlzLnZlcmlmeSA9IGZ1
bmN0aW9uKCkKLSAgICAgICAgewotICAgICAgICAgICAgdGhpcy5leHBlY3RlZEVycm9yQ29kZSA9
ICcnOwotICAgICAgICAgICAgaWYgKCF0aGlzLnRlc3RDYXNlLnBvc3Rjb25kaXRpb24pIHsKLSAg
ICAgICAgICAgICAgICB0aGlzLnN1Y2Nlc3NDYWxsYmFjaygpOwotICAgICAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRoaXMuc3RhZ2UgPSAndmVyaWZ5aW5n
IHRlc3QgcG9zdGNvbmRpdGlvbic7Ci0gICAgICAgICAgICB2ZXJpZnlUZXN0RW52aXJvbm1lbnQo
dGhpcy5maWxlU3lzdGVtLCB0aGlzLnRlc3RDYXNlLnBvc3Rjb25kaXRpb24sIHRoaXMuc3VjY2Vz
c0NhbGxiYWNrLCBiaW5kQ2FsbGJhY2sodGhpcywgdGhpcy50ZXN0RXJyb3JDYWxsYmFjaykpOwot
ICAgICAgICB9OwotICAgIH07Ci0KLSAgICB2YXIgaGVscGVyID0gbmV3IE9wZXJhdGlvblRlc3RI
ZWxwZXIoZmlsZVN5c3RlbSwgdGVzdENhc2UsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFj
ayk7Ci0gICAgaGVscGVyLnN0YXJ0KCk7Ci19Ci0KLXZhciBjdXJyZW50VGVzdCA9IDA7Ci12YXIg
ZmlsZVN5c3RlbSA9IG51bGw7Ci1mdW5jdGlvbiBydW5OZXh0VGVzdCgpIHsKLSAgICBpZiAoY3Vy
cmVudFRlc3QgPj0gdGVzdENhc2VzLmxlbmd0aCkgewotICAgICAgICBkZWJ1ZygnRmluaXNoZWQg
cnVubmluZyB0ZXN0cy4nKTsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICB2YXIgdGVzdENhc2UgPSB0ZXN0Q2FzZXNbY3VycmVudFRlc3QrK107
Ci0gICAgZGVidWcoJyogUnVubmluZzogJyArIHRlc3RDYXNlLm5hbWUpOwotICAgIHJ1bk9wZXJh
dGlvblRlc3QoZmlsZVN5c3RlbSwgdGVzdENhc2UsIHJ1bk5leHRUZXN0LCBlcnJvckNhbGxiYWNr
KTsKLX0KLQotZnVuY3Rpb24gZXJyb3JDYWxsYmFjayhlcnJvcikgewotICAgIGlmIChlcnJvciAm
JiBlcnJvci5jb2RlKQotICAgICAgICB0ZXN0RmFpbGVkKCdHb3QgZXJyb3IgJyArIGVycm9yLmNv
ZGUpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi1mdW5jdGlvbiBmaWxlU3lzdGVtQ2FsbGJh
Y2soZnMpCi17Ci0gICAgZmlsZVN5c3RlbSA9IGZzOwotICAgIHJ1bk5leHRUZXN0KCk7Ci19Ci0K
LXZhciBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLXdlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKFRFTVBP
UkFSWSwgMTAwLCBmaWxlU3lzdGVtQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spOwpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9zaGFyZWQtd29ya2VyLXN0dWIuanMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9zaGFy
ZWQtd29ya2VyLXN0dWIuanMJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3Qv
ZmlsZXN5c3RlbS9yZXNvdXJjZXMvc2hhcmVkLXdvcmtlci1zdHViLmpzCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzAsMCBAQAotLy8gV2UgZG9uJ3Qgc3RhcnQganMtdGVzdC1wcmUuanMgZGlyZWN0
bHkgYXMgdGhlIHdvcmtlciBzY3JpcHQgYmVjYXVzZSBpdCBzY3Jld3MKLS8vIHVwIHRoZSBiYXNl
IG9mIGFsbCByZWxhdGl2ZSBwYXRocyBwYXNzZWQgdG8gaW1wb3J0U2NyaXB0cy4KLWltcG9ydFNj
cmlwdHMoJy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOwpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9zaW1wbGUtcGVyc2lzdGVudC1zeW5jLmpz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvc2lt
cGxlLXBlcnNpc3RlbnQtc3luYy5qcwkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9zaW1wbGUtcGVyc2lzdGVudC1zeW5jLmpzCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDE0ICswLDAgQEAKLWlmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKLSAg
ICBpbXBvcnRTY3JpcHRzKCcuLi9yZXNvdXJjZXMvZnMtd29ya2VyLWNvbW1vbi5qcycpOwotICAg
IGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOwotICAg
IGltcG9ydFNjcmlwdHMoJy4uL3Jlc291cmNlcy9mcy10ZXN0LXV0aWwuanMnKTsKLX0KLQotZGVz
Y3JpcHRpb24oIndlYmtpdFJlcXVlc3RGaWxlU3lzdGVtU3luYyBQRVJTSVNURU5UIHRlc3QuIik7
Ci0KLXZhciBmaWxlU3lzdGVtID0gd2Via2l0UmVxdWVzdEZpbGVTeXN0ZW1TeW5jKFBFUlNJU1RF
TlQsIDEwMCk7Ci0KLWRlYnVnKCJTdWNjZXNzZnVsbHkgb2J0YWluZWQgUEVSU0lTVEVOVCBGaWxl
U3lzdGVtOiIgKyBmaWxlU3lzdGVtLm5hbWUpOwotc2hvdWxkQmVUcnVlKCJmaWxlU3lzdGVtLm5h
bWUubGVuZ3RoID4gMCIpOwotc2hvdWxkQmUoImZpbGVTeXN0ZW0ucm9vdC5mdWxsUGF0aCIsICci
LyInKTsKLWZpbmlzaEpTVGVzdCgpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVt
L3Jlc291cmNlcy9zaW1wbGUtcGVyc2lzdGVudC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL3NpbXBsZS1wZXJzaXN0ZW50LmpzCShyZXZpc2lv
biAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL3NpbXBs
ZS1wZXJzaXN0ZW50LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDI1ICswLDAgQEAKLWlmICh0aGlz
LmltcG9ydFNjcmlwdHMpIHsKLSAgICBpbXBvcnRTY3JpcHRzKCcuLi9yZXNvdXJjZXMvZnMtd29y
a2VyLWNvbW1vbi5qcycpOwotICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcycpOwotICAgIGltcG9ydFNjcmlwdHMoJy4uL3Jlc291cmNlcy9mcy10ZXN0
LXV0aWwuanMnKTsKLX0KLQotZGVzY3JpcHRpb24oInJlcXVlc3RGaWxlU3lzdGVtIFBFUlNJU1RF
TlQgdGVzdC4iKTsKLQotdmFyIGZpbGVTeXN0ZW0gPSBudWxsOwotCi1mdW5jdGlvbiBlcnJvckNh
bGxiYWNrKGVycm9yKSB7Ci0gICAgZGVidWcoIkVycm9yIG9jY3VyZWQgd2hpbGUgcmVxdWVzdGlu
ZyBhIFBFUlNJU1RFTlQgZmlsZSBzeXN0ZW06IiArIGVycm9yLmNvZGUpOwotICAgIGZpbmlzaEpT
VGVzdCgpOwotfQotCi1mdW5jdGlvbiBzdWNjZXNzQ2FsbGJhY2soZnMpIHsKLSAgICBmaWxlU3lz
dGVtID0gZnM7Ci0gICAgZGVidWcoIlN1Y2Nlc3NmdWxseSBvYnRhaW5lZCBQRVJTSVNURU5UIEZp
bGVTeXN0ZW06IiArIGZpbGVTeXN0ZW0ubmFtZSk7Ci0gICAgc2hvdWxkQmVUcnVlKCJmaWxlU3lz
dGVtLm5hbWUubGVuZ3RoID4gMCIpOwotICAgIHNob3VsZEJlKCJmaWxlU3lzdGVtLnJvb3QuZnVs
bFBhdGgiLCAnIi8iJyk7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLXZhciBqc1Rlc3RJc0Fz
eW5jID0gdHJ1ZTsKLXdlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKFBFUlNJU1RFTlQsIDEwMCwgc3Vj
Y2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmls
ZXN5c3RlbS9yZXNvdXJjZXMvc2ltcGxlLXJlYWRvbmx5LmpzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvc2ltcGxlLXJlYWRvbmx5LmpzCShyZXZp
c2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL3Np
bXBsZS1yZWFkb25seS5qcwkod29ya2luZyBjb3B5KQpAQCAtMSw0OSArMCwwIEBACi1pZiAodGhp
cy5pbXBvcnRTY3JpcHRzKSB7Ci0gICAgaW1wb3J0U2NyaXB0cygnLi4vcmVzb3VyY2VzL2ZzLXdv
cmtlci1jb21tb24uanMnKTsKLSAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMnKTsKLSAgICBpbXBvcnRTY3JpcHRzKCcuLi9yZXNvdXJjZXMvZnMtdGVz
dC11dGlsLmpzJyk7Ci19Ci0KLWRlc2NyaXB0aW9uKCJGaWxlU3lzdGVtIEFQSSByZWFkb25seSBh
dHRyaWJ1dGVzIHRlc3QuIik7Ci0KLXZhciBmaWxlU3lzdGVtOwotdmFyIGZpbGVFbnRyeTsKLXZh
ciBmaWxlTWV0YWRhdGE7Ci0KLWZ1bmN0aW9uIHNldFJlYWRvbmx5UHJvcGVydHkocHJvcGVydHks
IHZhbHVlKQotewotICAgIG9sZFZhbHVlID0gZXZhbChwcm9wZXJ0eSk7Ci0gICAgZGVidWcoInRy
eWluZyB0byBzZXQgcmVhZG9ubHkgcHJvcGVydHkgIiArIHByb3BlcnR5KTsKLSAgICBldmFsQW5k
TG9nKHByb3BlcnR5ICsgIiA9ICIgKyB2YWx1ZSk7Ci0gICAgbmV3VmFsdWUgPSBldmFsKHByb3Bl
cnR5KTsKLSAgICBpZiAob2xkVmFsdWUgPT0gbmV3VmFsdWUpIHsKLSAgICAgICAgdGVzdFBhc3Nl
ZChwcm9wZXJ0eSArICIgaXMgc3RpbGwgIiArIG9sZFZhbHVlKTsKLSAgICB9IGVsc2UgewotICAg
ICAgICB0ZXN0RmFpbGVkKHByb3BlcnR5ICsgIiB2YWx1ZSB3YXMgY2hhbmdlZCIpOwotICAgIH0K
LX0KLQotZnVuY3Rpb24gZXJyb3JDYWxsYmFjayhlcnIpIHsKLSAgdGVzdEZhaWxlZChlcnIpOwot
ICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotZnVuY3Rpb24gZ2V0RmlsZUNhbGxiYWNrKGVudHJ5KSB7
Ci0gIGZpbGVFbnRyeSA9IGVudHJ5OwotICBzZXRSZWFkb25seVByb3BlcnR5KCJmaWxlRW50cnku
aXNGaWxlIiwgImZhbHNlIik7Ci0gIHNldFJlYWRvbmx5UHJvcGVydHkoImZpbGVFbnRyeS5pc0Rp
cmVjdG9yeSIsICJ0cnVlIik7Ci0gIHNldFJlYWRvbmx5UHJvcGVydHkoImZpbGVFbnRyeS5uYW1l
IiwgIidiYXInIik7Ci0gIHNldFJlYWRvbmx5UHJvcGVydHkoImZpbGVFbnRyeS5mdWxsUGF0aCIs
ICInYmFyJyIpOwotICBzZXRSZWFkb25seVByb3BlcnR5KCJmaWxlRW50cnkuZmlsZXN5c3RlbSIs
ICJudWxsIik7Ci0gIGZpbmlzaEpTVGVzdCgpOwotfQotCi1mdW5jdGlvbiBzdWNjZXNzQ2FsbGJh
Y2soZnMpIHsKLSAgZmlsZVN5c3RlbSA9IGZzOwotICBzZXRSZWFkb25seVByb3BlcnR5KCJmaWxl
U3lzdGVtLm5hbWUiLCAiJ2JhciciKTsKLSAgcm9vdCA9IGV2YWxBbmRMb2coInJvb3QgPSBmaWxl
U3lzdGVtLnJvb3QiKTsKLSAgZXZhbEFuZExvZygicm9vdC5nZXRGaWxlKCdmb28nLCB7Y3JlYXRl
OnRydWV9LCBnZXRGaWxlQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spIik7Ci19Ci0KLXZhciBqc1Rl
c3RJc0FzeW5jID0gdHJ1ZTsKLWV2YWxBbmRMb2coIndlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKFRF
TVBPUkFSWSwgMTAwLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spIik7CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL3NpbXBsZS1yZXF1aXJlZC1hcmd1
bWVudHMtZ2V0ZGlyZWN0b3J5LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmls
ZXN5c3RlbS9yZXNvdXJjZXMvc2ltcGxlLXJlcXVpcmVkLWFyZ3VtZW50cy1nZXRkaXJlY3Rvcnku
anMJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNv
dXJjZXMvc2ltcGxlLXJlcXVpcmVkLWFyZ3VtZW50cy1nZXRkaXJlY3RvcnkuanMJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMjYgKzAsMCBAQAotaWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgewotICAgIGlt
cG9ydFNjcmlwdHMoJy4uL3Jlc291cmNlcy9mcy13b3JrZXItY29tbW9uLmpzJyk7Ci0gICAgaW1w
b3J0U2NyaXB0cygnLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7Ci0gICAgaW1w
b3J0U2NyaXB0cygnLi4vcmVzb3VyY2VzL2ZzLXRlc3QtdXRpbC5qcycpOwotfQotCi1kZXNjcmlw
dGlvbigiRGlyZWN0b3J5RW50cnkgcmVxdWlyZWQgYXJndW1lbnRzIHRlc3QuIik7Ci0KLXZhciBm
aWxlU3lzdGVtID0gbnVsbDsKLQotZnVuY3Rpb24gZXJyb3JDYWxsYmFjayhlcnJvcikgewotICAg
IGRlYnVnKCJFcnJvciBvY2N1cmVkIHdoaWxlIHJlcXVlc3RpbmcgYSBURU1QT1JBUlkgZmlsZSBz
eXN0ZW06IiArIGVycm9yLmNvZGUpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi1mdW5jdGlv
biBzdWNjZXNzQ2FsbGJhY2soZnMpIHsKLSAgICBmaWxlU3lzdGVtID0gZnM7Ci0gICAgZGVidWco
IlN1Y2Nlc3NmdWxseSBvYnRhaW5lZCBURU1QT1JBUlkgRmlsZVN5c3RlbToiICsgZmlsZVN5c3Rl
bS5uYW1lKTsKLSAgICByb290ID0gZXZhbEFuZExvZygicm9vdCA9IGZpbGVTeXN0ZW0ucm9vdCIp
OwotICAgIHNob3VsZFRocm93KCJyb290LmdldERpcmVjdG9yeSgpIik7Ci0gICAgZmluaXNoSlNU
ZXN0KCk7Ci19Ci0KLXZhciBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLWV2YWxBbmRMb2coIndlYmtp
dFJlcXVlc3RGaWxlU3lzdGVtKFRFTVBPUkFSWSwgMTAwLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9y
Q2FsbGJhY2spOyIpOwotdmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL3NpbXBsZS1yZXF1aXJlZC1hcmd1bWVu
dHMtZ2V0ZmlsZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0v
cmVzb3VyY2VzL3NpbXBsZS1yZXF1aXJlZC1hcmd1bWVudHMtZ2V0ZmlsZS5qcwkocmV2aXNpb24g
MTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9zaW1wbGUt
cmVxdWlyZWQtYXJndW1lbnRzLWdldGZpbGUuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsMjYgKzAs
MCBAQAotaWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgewotICAgIGltcG9ydFNjcmlwdHMoJy4uL3Jl
c291cmNlcy9mcy13b3JrZXItY29tbW9uLmpzJyk7Ci0gICAgaW1wb3J0U2NyaXB0cygnLi4vLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7Ci0gICAgaW1wb3J0U2NyaXB0cygnLi4vcmVz
b3VyY2VzL2ZzLXRlc3QtdXRpbC5qcycpOwotfQotCi1kZXNjcmlwdGlvbigiRGlyZWN0b3J5RW50
cnkgcmVxdWlyZWQgYXJndW1lbnRzIHRlc3QuIik7Ci0KLXZhciBmaWxlU3lzdGVtID0gbnVsbDsK
LQotZnVuY3Rpb24gZXJyb3JDYWxsYmFjayhlcnJvcikgewotICAgIGRlYnVnKCJFcnJvciBvY2N1
cmVkIHdoaWxlIHJlcXVlc3RpbmcgYSBURU1QT1JBUlkgZmlsZSBzeXN0ZW06IiArIGVycm9yLmNv
ZGUpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi1mdW5jdGlvbiBzdWNjZXNzQ2FsbGJhY2so
ZnMpIHsKLSAgICBmaWxlU3lzdGVtID0gZnM7Ci0gICAgZGVidWcoIlN1Y2Nlc3NmdWxseSBvYnRh
aW5lZCBURU1QT1JBUlkgRmlsZVN5c3RlbToiICsgZmlsZVN5c3RlbS5uYW1lKTsKLSAgICByb290
ID0gZXZhbEFuZExvZygicm9vdCA9IGZpbGVTeXN0ZW0ucm9vdCIpOwotICAgIHNob3VsZFRocm93
KCJyb290LmdldEZpbGUoKSIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi12YXIganNUZXN0
SXNBc3luYyA9IHRydWU7Ci1ldmFsQW5kTG9nKCJ3ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbShURU1Q
T1JBUlksIDEwMCwgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsiKTsKLXZhciBzdWNj
ZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVt
L3Jlc291cmNlcy9zaW1wbGUtcmVxdWlyZWQtYXJndW1lbnRzLWdldG1ldGFkYXRhLmpzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvc2ltcGxlLXJl
cXVpcmVkLWFyZ3VtZW50cy1nZXRtZXRhZGF0YS5qcwkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9zaW1wbGUtcmVxdWlyZWQtYXJndW1l
bnRzLWdldG1ldGFkYXRhLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDI2ICswLDAgQEAKLWlmICh0
aGlzLmltcG9ydFNjcmlwdHMpIHsKLSAgICBpbXBvcnRTY3JpcHRzKCcuLi9yZXNvdXJjZXMvZnMt
d29ya2VyLWNvbW1vbi5qcycpOwotICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcycpOwotICAgIGltcG9ydFNjcmlwdHMoJy4uL3Jlc291cmNlcy9mcy10
ZXN0LXV0aWwuanMnKTsKLX0KLQotZGVzY3JpcHRpb24oIkRpcmVjdG9yeUVudHJ5LmdldE1ldGFk
YXRhIHJlcXVpcmVkIGFyZ3VtZW50cyB0ZXN0LiIpOwotCi12YXIgZmlsZVN5c3RlbSA9IG51bGw7
Ci0KLWZ1bmN0aW9uIGVycm9yQ2FsbGJhY2soZXJyb3IpIHsKLSAgICBkZWJ1ZygiRXJyb3Igb2Nj
dXJlZCB3aGlsZSByZXF1ZXN0aW5nIGEgVEVNUE9SQVJZIGZpbGUgc3lzdGVtOiIgKyBlcnJvci5j
b2RlKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotZnVuY3Rpb24gc3VjY2Vzc0NhbGxiYWNr
KGZzKSB7Ci0gICAgZmlsZVN5c3RlbSA9IGZzOwotICAgIGRlYnVnKCJTdWNjZXNzZnVsbHkgb2J0
YWluZWQgVEVNUE9SQVJZIEZpbGVTeXN0ZW06IiArIGZpbGVTeXN0ZW0ubmFtZSk7Ci0gICAgcm9v
dCA9IGV2YWxBbmRMb2coInJvb3QgPSBmaWxlU3lzdGVtLnJvb3QiKTsKLSAgICBzaG91bGRUaHJv
dygicm9vdC5nZXRNZXRhZGF0YSgpIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLXZhciBq
c1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLWV2YWxBbmRMb2coIndlYmtpdFJlcXVlc3RGaWxlU3lzdGVt
KFRFTVBPUkFSWSwgMTAwLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spOyIpOwotdmFy
IHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVz
eXN0ZW0vcmVzb3VyY2VzL3NpbXBsZS1yZXF1aXJlZC1hcmd1bWVudHMtcmVtb3ZlLmpzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvc2ltcGxlLXJl
cXVpcmVkLWFyZ3VtZW50cy1yZW1vdmUuanMJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRl
c3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvc2ltcGxlLXJlcXVpcmVkLWFyZ3VtZW50cy1y
ZW1vdmUuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsMjYgKzAsMCBAQAotaWYgKHRoaXMuaW1wb3J0
U2NyaXB0cykgewotICAgIGltcG9ydFNjcmlwdHMoJy4uL3Jlc291cmNlcy9mcy13b3JrZXItY29t
bW9uLmpzJyk7Ci0gICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzJyk7Ci0gICAgaW1wb3J0U2NyaXB0cygnLi4vcmVzb3VyY2VzL2ZzLXRlc3QtdXRpbC5q
cycpOwotfQotCi1kZXNjcmlwdGlvbigiRW50cnkucmVtb3ZlKCkgcmVxdWlyZWQgYXJndW1lbnRz
IHRlc3QuIik7Ci0KLXZhciBmaWxlU3lzdGVtID0gbnVsbDsKLQotZnVuY3Rpb24gZXJyb3JDYWxs
YmFjayhlcnJvcikgewotICAgIGRlYnVnKCJFcnJvciBvY2N1cmVkIHdoaWxlIHJlcXVlc3Rpbmcg
YSBURU1QT1JBUlkgZmlsZSBzeXN0ZW06IiArIGVycm9yLmNvZGUpOwotICAgIGZpbmlzaEpTVGVz
dCgpOwotfQotCi1mdW5jdGlvbiBzdWNjZXNzQ2FsbGJhY2soZnMpIHsKLSAgICBmaWxlU3lzdGVt
ID0gZnM7Ci0gICAgZGVidWcoIlN1Y2Nlc3NmdWxseSBvYnRhaW5lZCBURU1QT1JBUlkgRmlsZVN5
c3RlbToiICsgZmlsZVN5c3RlbS5uYW1lKTsKLSAgICByb290ID0gZXZhbEFuZExvZygicm9vdCA9
IGZpbGVTeXN0ZW0ucm9vdCIpOwotICAgIHNob3VsZFRocm93KCJyb290LnJlbW92ZSgpIik7Ci0g
ICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLXZhciBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLWV2YWxB
bmRMb2coIndlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKFRFTVBPUkFSWSwgMTAwLCBzdWNjZXNzQ2Fs
bGJhY2ssIGVycm9yQ2FsbGJhY2spOyIpOwotdmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL3NpbXBsZS10ZW1w
b3Jhcnktc3luYy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0v
cmVzb3VyY2VzL3NpbXBsZS10ZW1wb3Jhcnktc3luYy5qcwkocmV2aXNpb24gMTU2NjkxKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9zaW1wbGUtdGVtcG9yYXJ5LXN5
bmMuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsMTQgKzAsMCBAQAotaWYgKHRoaXMuaW1wb3J0U2Ny
aXB0cykgewotICAgIGltcG9ydFNjcmlwdHMoJy4uL3Jlc291cmNlcy9mcy13b3JrZXItY29tbW9u
LmpzJyk7Ci0gICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzJyk7Ci0gICAgaW1wb3J0U2NyaXB0cygnLi4vcmVzb3VyY2VzL2ZzLXRlc3QtdXRpbC5qcycp
OwotfQotCi1kZXNjcmlwdGlvbigicmVxdWVzdEZpbGVTeXN0ZW1TeW5jIFRFTVBPUkFSWSB0ZXN0
LiIpOwotCi12YXIgZmlsZVN5c3RlbSA9IHdlYmtpdFJlcXVlc3RGaWxlU3lzdGVtU3luYyhURU1Q
T1JBUlksIDEwMCk7Ci0KLWRlYnVnKCJTdWNjZXNzZnVsbHkgb2J0YWluZWQgVEVNUE9SQVJZIEZp
bGVTeXN0ZW06IiArIGZpbGVTeXN0ZW0ubmFtZSk7Ci1zaG91bGRCZVRydWUoImZpbGVTeXN0ZW0u
bmFtZS5sZW5ndGggPiAwIik7Ci1zaG91bGRCZSgiZmlsZVN5c3RlbS5yb290LmZ1bGxQYXRoIiwg
JyIvIicpOwotZmluaXNoSlNUZXN0KCk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0
ZW0vcmVzb3VyY2VzL3NpbXBsZS10ZW1wb3JhcnkuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9zaW1wbGUtdGVtcG9yYXJ5LmpzCShyZXZpc2lv
biAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL3NpbXBs
ZS10ZW1wb3JhcnkuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsMjUgKzAsMCBAQAotaWYgKHRoaXMu
aW1wb3J0U2NyaXB0cykgewotICAgIGltcG9ydFNjcmlwdHMoJy4uL3Jlc291cmNlcy9mcy13b3Jr
ZXItY29tbW9uLmpzJyk7Ci0gICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzJyk7Ci0gICAgaW1wb3J0U2NyaXB0cygnLi4vcmVzb3VyY2VzL2ZzLXRlc3Qt
dXRpbC5qcycpOwotfQotCi1kZXNjcmlwdGlvbigicmVxdWVzdEZpbGVTeXN0ZW0gVEVNUE9SQVJZ
IHRlc3QuIik7Ci0KLXZhciBmaWxlU3lzdGVtID0gbnVsbDsKLQotZnVuY3Rpb24gZXJyb3JDYWxs
YmFjayhlcnJvcikgewotICAgIGRlYnVnKCdFcnJvciBvY2N1cmVkIHdoaWxlIHJlcXVlc3Rpbmcg
YSBURU1QT1JBUlkgZmlsZSBzeXN0ZW06JyArIGVycm9yLmNvZGUpOwotICAgIGZpbmlzaEpTVGVz
dCgpOwotfQotCi1mdW5jdGlvbiBzdWNjZXNzQ2FsbGJhY2soZnMpIHsKLSAgICBmaWxlU3lzdGVt
ID0gZnM7Ci0gICAgZGVidWcoIlN1Y2Nlc3NmdWxseSBvYnRhaW5lZCBURU1QT1JBUlkgRmlsZVN5
c3RlbToiICsgZmlsZVN5c3RlbS5uYW1lKTsKLSAgICBzaG91bGRCZVRydWUoImZpbGVTeXN0ZW0u
bmFtZS5sZW5ndGggPiAwIik7Ci0gICAgc2hvdWxkQmUoImZpbGVTeXN0ZW0ucm9vdC5mdWxsUGF0
aCIsICciLyInKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotdmFyIGpzVGVzdElzQXN5bmMg
PSB0cnVlOwotd2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0oVEVNUE9SQVJZLCAxMDAsIHN1Y2Nlc3ND
YWxsYmFjaywgZXJyb3JDYWxsYmFjayk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0
ZW0vcmVzb3VyY2VzL3N5bmMtb3BlcmF0aW9ucy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL3N5bmMtb3BlcmF0aW9ucy5qcwkocmV2aXNpb24g
MTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9zeW5jLW9w
ZXJhdGlvbnMuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsNDMgKzAsMCBAQAotaWYgKHRoaXMuaW1w
b3J0U2NyaXB0cykgewotICAgIGltcG9ydFNjcmlwdHMoJy4uL3Jlc291cmNlcy9mcy13b3JrZXIt
Y29tbW9uLmpzJyk7Ci0gICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzJyk7Ci0gICAgaW1wb3J0U2NyaXB0cygnLi4vcmVzb3VyY2VzL2ZzLXRlc3QtdXRp
bC5qcycpOwotfQotCi1kZXNjcmlwdGlvbigiVGVzdCBtYWtpbmcgbXVsdGlwbGUgc3luY2hyb25v
dXMgRmlsZVN5c3RlbSBvcGVyYXRpb25zLiIpOwotCi12YXIgZmlsZVN5c3RlbSA9IHdlYmtpdFJl
cXVlc3RGaWxlU3lzdGVtU3luYyh0aGlzLlRFTVBPUkFSWSwgMTAwKTsKLXJlbW92ZUFsbEluRGly
ZWN0b3J5U3luYyhmaWxlU3lzdGVtLnJvb3QpOwotCi0vLyBTdGFnZSAxIChwcmVwYXJlKQotdmFy
IGEgPSBmaWxlU3lzdGVtLnJvb3QuZ2V0RmlsZSgnYScsIHtjcmVhdGU6dHJ1ZX0pOwotdmFyIGIg
PSBmaWxlU3lzdGVtLnJvb3QuZ2V0RGlyZWN0b3J5KCdiJywge2NyZWF0ZTp0cnVlfSk7Ci12YXIg
YyA9IGZpbGVTeXN0ZW0ucm9vdC5nZXREaXJlY3RvcnkoJ2MnLCB7Y3JlYXRlOnRydWV9KTsKLXZh
ciBkID0gZmlsZVN5c3RlbS5yb290LmdldEZpbGUoJ2QnLCB7Y3JlYXRlOnRydWV9KTsKLQotLy8g
U3RhZ2UgMiAodGVzdCkKLXZhciBhX2NvcHkgPSBhLmNvcHlUbyhiLCAndG1wJyk7Ci12YXIgbWV0
YWRhdGEgPSBhLmdldE1ldGFkYXRhKCk7Ci12YXIgYl9wYXJlbnQgPSBiLmdldFBhcmVudCgpOwot
dmFyIGNfY29weSA9IGMuY29weVRvKGZpbGVTeXN0ZW0ucm9vdCwgJ2YnKTsKLXZhciBkX25ldyA9
IGQubW92ZVRvKGZpbGVTeXN0ZW0ucm9vdCwgJ2QyJyk7Ci12YXIgZSA9IGZpbGVTeXN0ZW0ucm9v
dC5nZXRGaWxlKCdlJywge2NyZWF0ZTp0cnVlfSk7Ci0KLS8vIFZlcmlmeQotdmFyIHJlYWRlciA9
IGZpbGVTeXN0ZW0ucm9vdC5jcmVhdGVSZWFkZXIoKTsKLXZhciBkaXJzQ291bnQgPSAwOwotdmFy
IHBhdGhzID0gW107Ci1kbyB7Ci0gICAgdmFyIGVudHJpZXMgPSByZWFkZXIucmVhZEVudHJpZXMo
KTsKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVudHJpZXMubGVuZ3RoOyArK2kpIHsKLSAgICAg
ICAgcGF0aHMucHVzaChlbnRyaWVzW2ldLmZ1bGxQYXRoKTsKLSAgICAgICAgaWYgKGVudHJpZXNb
aV0uaXNEaXJlY3RvcnkpCi0gICAgICAgICAgICBkaXJzQ291bnQrKzsKLSAgICB9Ci19IHdoaWxl
IChlbnRyaWVzLmxlbmd0aCk7Ci0KLXBhdGhzLnNvcnQoKTsKLXNob3VsZEJlKCciJyArIHBhdGhz
LmpvaW4oJywnKSArICciJywgJyIvYSwvYiwvYywvZDIsL2UsL2YiJyk7Ci1zaG91bGRCZSgiZGly
c0NvdW50IiwgIjMiKTsKLXJlbW92ZUFsbEluRGlyZWN0b3J5U3luYyhmaWxlU3lzdGVtLnJvb3Qp
OwotZmluaXNoSlNUZXN0KCk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vc2Ny
aXB0LXRlc3RzL1RFTVBMQVRFLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9m
aWxlc3lzdGVtL3NjcmlwdC10ZXN0cy9URU1QTEFURS5odG1sCShyZXZpc2lvbiAxNTY2OTEpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vc2NyaXB0LXRlc3RzL1RFTVBMQVRFLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMTAgKzAsMCBAQAotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBz
cmM9InJlc291cmNlcy9mcy10ZXN0LXV0aWwuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+
Ci08c2NyaXB0IHNyYz0iWU9VUl9KU19GSUxFX0hFUkUiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9o
dG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3NjcmlwdC10ZXN0cy9maWxl
c3lzdGVtLXJlZmVyZW5jZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVz
eXN0ZW0vc2NyaXB0LXRlc3RzL2ZpbGVzeXN0ZW0tcmVmZXJlbmNlLmpzCShyZXZpc2lvbiAxNTY2
OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vc2NyaXB0LXRlc3RzL2ZpbGVzeXN0
ZW0tcmVmZXJlbmNlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcwICswLDAgQEAKLWRlc2NyaXB0
aW9uKCJUaGlzIHRlc3RzIGlmIEVudHJpZXMgcmV0dXJuZWQgYnkgY2FsbGJhY2tzIGtlZXAgZnVu
Y3Rpb25pbmcgZXZlbiBhZnRlciB3ZSBsb3NlIGEgcmVmZXJlbmNlIHRvIHRoZSBmaWxlc3lzdGVt
IGluIHRoZSBzY3JpcHQuIik7Ci0KLXZhciB0ZXN0RGlyZWN0b3J5ID0gbnVsbDsKLXZhciB0ZXN0
RW50cmllcyA9IG51bGw7Ci0KLWZ1bmN0aW9uIGVycm9yQ2FsbGJhY2soZXJyb3IpCi17Ci0gICAg
dGVzdEZhaWxlZCgiRXJyb3Igb2NjdXJyZWQ6ICIgKyBlcnJvci5jb2RlKTsKLSAgICBmaW5pc2hK
U1Rlc3QoKTsKLX0KLQotZnVuY3Rpb24gcnVuVGVzdDEocm9vdCkKLXsKLSAgICBkZWJ1ZygiUnVu
bmluZyBydW5UZXN0MSgpLi4uIik7Ci0gICAgdmFyIGhlbHBlciA9IG5ldyBKb2luSGVscGVyKCk7
Ci0gICAgdmFyIGRvbmUgPSBmdW5jdGlvbigpIHsgaGVscGVyLmRvbmUoKTsgfTsKLQotICAgIGhl
bHBlci5ydW4oZnVuY3Rpb24oKSB7IHJvb3QuZ2V0RmlsZSgnYScsIHtjcmVhdGU6dHJ1ZX0sIGRv
bmUsIGVycm9yQ2FsbGJhY2spOyB9KTsKLSAgICBoZWxwZXIucnVuKGZ1bmN0aW9uKCkgeyByb290
LmdldERpcmVjdG9yeSgnYicsIHtjcmVhdGU6dHJ1ZX0sIGRvbmUsIGVycm9yQ2FsbGJhY2spOyB9
KTsKLSAgICBoZWxwZXIucnVuKGZ1bmN0aW9uKCkgeyByb290LmdldERpcmVjdG9yeSgnYycsIHtj
cmVhdGU6dHJ1ZX0sIGRvbmUsIGVycm9yQ2FsbGJhY2spOyB9KTsKLQotICAgIGdjKCk7Ci0gICAg
aGVscGVyLmpvaW4oZnVuY3Rpb24oKSB7IHJ1blRlc3QyKHJvb3QpOyB9KTsKLX0KLQotZnVuY3Rp
b24gcnVuVGVzdDIocm9vdCkKLXsKLSAgICBkZWJ1ZygiUnVubmluZyBydW5UZXN0MigpLi4uIik7
Ci0gICAgdmFyIGhlbHBlciA9IG5ldyBKb2luSGVscGVyKCk7Ci0gICAgdmFyIGRvbmUgPSBmdW5j
dGlvbigpIHsgaGVscGVyLmRvbmUoKTsgfTsKLQotICAgIGhlbHBlci5ydW4oZnVuY3Rpb24oKSB7
IHJvb3QuZ2V0RmlsZSgnL2IvMScsIHtjcmVhdGU6dHJ1ZX0sIGRvbmUsIGVycm9yQ2FsbGJhY2sp
OyB9KTsKLSAgICBoZWxwZXIucnVuKGZ1bmN0aW9uKCkgeyByb290LmdldEZpbGUoJy9iLzInLCB7
Y3JlYXRlOnRydWV9LCBkb25lLCBlcnJvckNhbGxiYWNrKTsgfSk7Ci0gICAgaGVscGVyLnJ1bihm
dW5jdGlvbigpIHsgcm9vdC5nZXRGaWxlKCcvYi8zJywge2NyZWF0ZTp0cnVlfSwgZG9uZSwgZXJy
b3JDYWxsYmFjayk7IH0pOwotICAgIGhlbHBlci5ydW4oZnVuY3Rpb24oKSB7IHJvb3QuZ2V0Rmls
ZSgnL2IvNCcsIHtjcmVhdGU6dHJ1ZX0sIGRvbmUsIGVycm9yQ2FsbGJhY2spOyB9KTsKLSAgICBo
ZWxwZXIucnVuKGZ1bmN0aW9uKCkgeyByb290LmdldERpcmVjdG9yeSgnYicsIHtjcmVhdGU6ZmFs
c2V9LCBmdW5jdGlvbihlbnRyeSkgeyB0ZXN0RGlyZWN0b3J5ID0gZW50cnk7IGhlbHBlci5kb25l
KCk7IH0sIGVycm9yQ2FsbGJhY2spOyB9KTsKLQotICAgIGdjKCk7Ci0gICAgaGVscGVyLmpvaW4o
ZnVuY3Rpb24oKSB7IHJ1blRlc3QzKCk7IH0pOwotfQotCi1mdW5jdGlvbiBydW5UZXN0MygpCi17
Ci0gICAgZGVidWcoIlJ1bm5pbmcgcnVuVGVzdDMoKS4uLiIpOwotICAgIHRlc3REaXJlY3Rvcnku
Y3JlYXRlUmVhZGVyKCkucmVhZEVudHJpZXMoZW50cmllc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNr
KTsKLSAgICB0ZXN0RGlyZWN0b3J5ID0gbnVsbDsKLSAgICBnYygpOwotfQotCi1mdW5jdGlvbiBl
bnRyaWVzQ2FsbGJhY2soZW50cmllcykKLXsKLSAgICBkZWJ1ZygiUnVubmluZyBydW5UZXN0NCgp
Li4uIik7Ci0gICAgdGVzdEVudHJpZXMgPSBlbnRyaWVzOwotICAgIHNob3VsZEJlKCJ0ZXN0RW50
cmllcy5sZW5ndGgiLCAiNCIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi1mdW5jdGlvbiBm
aWxlU3lzdGVtQ2FsbGJhY2soZnMpCi17Ci0gICAgdmFyIHJvb3QgPSBmcy5yb290OwotICAgIHJl
bW92ZUFsbEluRGlyZWN0b3J5KGZzLnJvb3QsIGZ1bmN0aW9uKCkgeyBydW5UZXN0MShyb290KTsg
fSwgZXJyb3JDYWxsYmFjayk7Ci0gICAgZnMgPSBudWxsOwotICAgIGdjKCk7Ci19Ci0KLWlmICh3
aW5kb3cud2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0pIHsKLSAgICB3aW5kb3cuanNUZXN0SXNBc3lu
YyA9IHRydWU7Ci0gICAgd2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0od2luZG93LlRFTVBPUkFSWSwg
MTAwLCBmaWxlU3lzdGVtQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spOwotfSBlbHNlCi0gICAgZGVi
dWcoIlRoaXMgdGVzdCByZXF1aXJlcyBGaWxlU3lzdGVtIEFQSSBzdXBwb3J0LiIpOwpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3NjcmlwdC10ZXN0cy9maWxlc3lzdGVtLXVuc2Vy
aWFsaXphYmxlLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9z
Y3JpcHQtdGVzdHMvZmlsZXN5c3RlbS11bnNlcmlhbGl6YWJsZS5qcwkocmV2aXNpb24gMTU2Njkx
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3NjcmlwdC10ZXN0cy9maWxlc3lzdGVt
LXVuc2VyaWFsaXphYmxlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDI5ICswLDAgQEAKLWRlc2Ny
aXB0aW9uKCJUaGlzIHRlc3RzIGlmIHRoZSBmaWxlc3lzdGVtIG9iamVjdCBpcyB1bnNlcmlhbGl6
YWJsZSBieSBkZWZhdWx0Iik7Ci0KLWZ1bmN0aW9uIGVycm9yQ2FsbGJhY2soZXJyb3IpCi17Ci0g
ICAgdGVzdEZhaWxlZCgiRXJyb3Igb2NjdXJyZWQ6ICIgKyBlcnJvci5jb2RlKTsKLSAgICBmaW5p
c2hKU1Rlc3QoKTsKLX0KLQotZnVuY3Rpb24gZmlsZVN5c3RlbUNhbGxiYWNrKGZzKQotewotICAg
IHRyeSB7Ci0gICAgICAgIHBvc3RNZXNzYWdlKGZzLCAnKicpOwotICAgIH0gY2F0Y2ggKGUpIHsK
LSAgICAgICAgZGVidWcoZS5tZXNzYWdlKTsKLSAgICB9Ci0KLSAgICBmaW5pc2hKU1Rlc3QoKTsK
LX0KLQotZnVuY3Rpb24gb25tZXNzYWdlKCkKLXsKLX0KLQotaWYgKHdpbmRvdy53ZWJraXRSZXF1
ZXN0RmlsZVN5c3RlbSkgewotICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywg
b25tZXNzYWdlLCBmYWxzZSk7Ci0gICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotICAg
IHdlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKHdpbmRvdy5URU1QT1JBUlksIDEwMCwgZmlsZVN5c3Rl
bUNhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsKLX0gZWxzZQotICAgIGRlYnVnKCJUaGlzIHRlc3Qg
cmVxdWlyZXMgRmlsZVN5c3RlbSBBUEkgc3VwcG9ydC4iKTsKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZmlsZXN5c3RlbS9zY3JpcHQtdGVzdHMvZmxhZ3MtcGFzc2luZy5qcwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vc2NyaXB0LXRlc3RzL2ZsYWdzLXBhc3Npbmcu
anMJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9zY3Jp
cHQtdGVzdHMvZmxhZ3MtcGFzc2luZy5qcwkod29ya2luZyBjb3B5KQpAQCAtMSw5NCArMCwwIEBA
Ci1kZXNjcmlwdGlvbigiUGFzc2luZyBGbGFncyBwYXJhbWV0ZXIgdGVzdHMuIFRoaXMgdGVzdCBj
aGVja3MgaWYgcGFzc2luZyBGbGFncyBwYXJhbWV0ZXJzIHRvIERpcmVjdG9yeUVudHJ5LmdldEZp
bGUgZG9lcyBub3QgY3Jhc2ggYW5kIHdvcmtzIGFzIGV4cGVjdGVkLiIpOwotCi12YXIgdGVzdEZp
bGVOYW1lID0gJy9ub25fZXhpc3RlbnRfZmlsZSc7Ci12YXIgZmlsZVN5c3RlbSA9IG51bGw7Ci12
YXIgZXhwZWN0ZWRDYWxsYmFja3NDb3VudCA9IDA7Ci12YXIgdW5leHBlY3RlZENhbGxiYWNrc0Nv
dW50ID0gMDsKLXZhciBleHBlY3RlZCA9IGZ1bmN0aW9uKGUpIHsgZXhwZWN0ZWRDYWxsYmFja3ND
b3VudCsrOyB9OwotdmFyIHVuZXhwZWN0ZWQgPSBmdW5jdGlvbihlKSB7IHVuZXhwZWN0ZWRDYWxs
YmFja3NDb3VudCsrOyB9OwotCi12YXIgdGVzdHNMaXN0ID0gWwotICAgIHJ1bk9iamVjdFRlc3Qs
Ci0gICAgY2xlYW51cEFuZFJ1bk5leHQsCi0gICAgcnVuSlNPTlRlc3QsCi0gICAgcnVuSlNPTlRl
c3RXaXRoRXhjbHVzaXZlLAotICAgIHJ1bk51bGxUZXN0LAotICAgIHJ1bk5vbk9iamVjdFRlc3QK
LV07Ci12YXIgdGVzdENvdW50ZXIgPSAwOwotCi1mdW5jdGlvbiBydW5OZXh0VGVzdCh2KSB7Ci0g
ICAgaWYgKHRlc3RDb3VudGVyID09IHRlc3RzTGlzdC5sZW5ndGgpIHsKLSAgICAgICAgZGVidWco
IkZpbmlzaGVkIHJ1bm5pbmcgdGVzdHMuIik7Ci0gICAgICAgIHNob3VsZEJlKCdleHBlY3RlZENh
bGxiYWNrc0NvdW50JywgJzEnKTsKLSAgICAgICAgc2hvdWxkQmUoJ3VuZXhwZWN0ZWRDYWxsYmFj
a3NDb3VudCcsICcwJyk7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0gZWxzZQotICAg
ICAgICAodGVzdHNMaXN0W3Rlc3RDb3VudGVyKytdKSgpOwotfQotCi1mdW5jdGlvbiBlcnJvckNh
bGxiYWNrKGVycm9yKSB7Ci0gICAgZGVidWcoIkVycm9yIG9jY3VyZWQgZHVyaW5nIHJlcXVlc3Rp
bmcgVGVtcG9yYXJ5IEZpbGVTeXN0ZW06IiArIGVycm9yLmNvZGUpOwotICAgIGZpbmlzaEpTVGVz
dCgpOwotfQotCi0vLyBUZXN0IGJvZHkgZnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLWZ1bmN0aW9uIHJ1bk51bGxUZXN0KHYpIHsK
LSAgICBkZWJ1ZygiKiBQYXNzaW5nIG51bGwgYXMgYSBmbGFncyBwYXJhbWV0ZXIuIik7Ci0KLSAg
ICAvLyBUaGlzIHNob3VsZCBiZSBvayBhbmQgd2UgdHJlYXQgaXQgYXMge2ZhbHNlLCBmYWxzZX0g
RmxhZ3MuCi0gICAgZmlsZVN5c3RlbS5yb290LmdldEZpbGUodGVzdEZpbGVOYW1lLCBudWxsLCBy
dW5OZXh0VGVzdCwgZXJyb3JDYWxsYmFjayk7Ci19Ci0KLWZ1bmN0aW9uIHJ1bk5vbk9iamVjdFRl
c3QodikgewotICAgIGRlYnVnKCIqIFBhc3NpbmcgYSBudW1iZXIgYXMgYSBmbGFncyBwYXJhbWV0
ZXIuIik7Ci0KLSAgICB0cnkgewotICAgICAgICAvLyBUaGlzIHNob3VsZCBiZSBub3QgYmUgb2sg
YmVjYXVzZSA3IGlzIG5vdCBhbiBvYmplY3QuCi0gICAgICAgIGZpbGVTeXN0ZW0ucm9vdC5nZXRG
aWxlKHRlc3RGaWxlTmFtZSwgNywgZXJyb3JDYWxsYmFjaywgZXJyb3JDYWxsYmFjayk7Ci0gICAg
fSBjYXRjaCAoZXgpIHsKLSAgICAgICAgZGVidWcoIkNhdWdodCBleGNlcHRpb246ICIgKyBleCk7
Ci0gICAgICAgIHJ1bk5leHRUZXN0KCk7Ci0gICAgfQotfQotCi1mdW5jdGlvbiBydW5PYmplY3RU
ZXN0KHYpIHsKLSAgICAvLyBXZWJLaXRGbGFncyBubyBsb25nZXIgaGFzIGEgdmlzaWJsZSBjb25z
dHJ1Y3Rvci4KLSAgICBpZiAod2luZG93LldlYktpdEZsYWdzKQotICAgICAgICB0aHJvdyAiVGhl
cmUgc2hvdWxkIGJlIG5vIGNvbnN0cnVjdG9yIGZvciBXZWJLaXRGbGFncyEiOwotICAgIHJ1bk5l
eHRUZXN0KCk7Ci19Ci0KLWZ1bmN0aW9uIHJ1bkpTT05UZXN0KHYpIHsKLSAgICBkZWJ1ZygiKiBQ
YXNzaW5nIEpTT04gRmxhZ3Mgb2JqZWN0LiIpOwotCi0gICAgZmlsZVN5c3RlbS5yb290LmdldEZp
bGUodGVzdEZpbGVOYW1lLCB7Y3JlYXRlOmZhbHNlfSwgdW5leHBlY3RlZCwgZXhwZWN0ZWQpOwot
ICAgIGZpbGVTeXN0ZW0ucm9vdC5nZXRGaWxlKHRlc3RGaWxlTmFtZSwge2NyZWF0ZTp0cnVlfSwg
cnVuTmV4dFRlc3QsIGVycm9yQ2FsbGJhY2spOwotfQotCi1mdW5jdGlvbiBydW5KU09OVGVzdFdp
dGhFeGNsdXNpdmUodikgewotICAgIGRlYnVnKCIqIFBhc3NpbmcgSlNPTiBGbGFncyBvYmplY3Qg
KHdpdGggZXhjbHVzaXZlPXRydWUpLiIpOwotCi0gICAgLy8gVGhpcyBzaG91bGQgZmFpbC4KLSAg
ICBmaWxlU3lzdGVtLnJvb3QuZ2V0RmlsZSh0ZXN0RmlsZU5hbWUsIHtjcmVhdGU6dHJ1ZSwgZXhj
bHVzaXZlOnRydWV9LCBlcnJvckNhbGxiYWNrLCBydW5OZXh0VGVzdCk7Ci19Ci0KLS8vIEVuZCBv
ZiB0ZXN0IGJvZHkgZnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQotCi1mdW5jdGlvbiBjbGVhbnVwQW5kUnVuTmV4dCh2KSB7Ci0gICAgZmlsZVN5
c3RlbS5yb290LmdldEZpbGUodGVzdEZpbGVOYW1lLCB7Y3JlYXRlOmZhbHNlfSwgZnVuY3Rpb24o
ZW50cnkpIHsKLSAgICAgICAgLy8gUmVtb3ZlIHRoZSBlbnRyeSBiZWZvcmUgc3RhcnQgdGVzdGlu
Zy4KLSAgICAgICAgZW50cnkucmVtb3ZlKHJ1bk5leHRUZXN0LCBlcnJvckNhbGxiYWNrKTsKLSAg
ICB9LCBydW5OZXh0VGVzdCk7Ci19Ci0KLWZ1bmN0aW9uIGZpbGVTeXN0ZW1DYWxsYmFjayhmcykg
ewotICAgIGZpbGVTeXN0ZW0gPSBmczsKLSAgICBjbGVhbnVwQW5kUnVuTmV4dCgpOwotfQotCi1p
ZiAod2luZG93LndlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKSB7Ci0gICAgd2luZG93LmpzVGVzdElz
QXN5bmMgPSB0cnVlOwotICAgIHdlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKHdpbmRvdy5URU1QT1JB
UlksIDEwMCwgZmlsZVN5c3RlbUNhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsKLX0gZWxzZQotICAg
IGRlYnVnKCJUaGlzIHRlc3QgcmVxdWlyZXMgRmlsZVN5c3RlbSBBUEkgc3VwcG9ydC4iKTsKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9zY3JpcHQtdGVzdHMvcmVhZC1kaXJlY3Rv
cnkuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3NjcmlwdC10
ZXN0cy9yZWFkLWRpcmVjdG9yeS5qcwkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9maWxlc3lzdGVtL3NjcmlwdC10ZXN0cy9yZWFkLWRpcmVjdG9yeS5qcwkod29ya2luZyBj
b3B5KQpAQCAtMSw5NSArMCwwIEBACi1kZXNjcmlwdGlvbigiRGlyZWN0b3J5UmVhZGVyLnJlYWRF
bnRyaWVzKCkgdGVzdC4iKTsKLXZhciBmaWxlU3lzdGVtID0gbnVsbDsKLXZhciByZWFkZXIgPSBu
dWxsOwotdmFyIHJlc3VsdEVudHJpZXMgPSBbXTsKLQotdmFyIHJlYWRFbnRyaWVzQ291bnQgPSAw
OwotdmFyIGVudHJpZXNDYWxsYmFja0NvdW50ID0gMDsKLQotLy8gcGF0aDogaXNEaXJlY3Rvcnkg
bWFwLgotdmFyIHRlc3RFbnRyaWVzID0gewotICAgICcvYSc6IHRydWUsCi0gICAgJy9iJzogZmFs
c2UsCi0gICAgJy9jJzogdHJ1ZSwKLSAgICAnL2QnOiBmYWxzZSwKLSAgICAnL2UnOiBmYWxzZSwK
LSAgICAnL2YnOiB0cnVlLAotfTsKLXZhciB0ZXN0RW50cmllc0NvdW50ID0gMDsKLQotZnVuY3Rp
b24gZW5kVGVzdCgpCi17Ci0gICAgcmVtb3ZlQWxsSW5EaXJlY3RvcnkoZmlsZVN5c3RlbS5yb290
KTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotZnVuY3Rpb24gZXJyb3JDYWxsYmFjayhlcnJv
cikKLXsKLSAgICBkZWJ1ZygiRXJyb3Igb2NjdXJlZDoiICsgZXJyb3IuY29kZSk7Ci0gICAgZW5k
VGVzdCgpOwotfQotCi12YXIgZW50cnkgPSBudWxsOwotZnVuY3Rpb24gdmVyaWZ5VGVzdFJlc3Vs
dCgpCi17Ci0gICAgc2hvdWxkQmUoJ3JlYWRFbnRyaWVzQ291bnQnLCAnZW50cmllc0NhbGxiYWNr
Q291bnQnKTsKLSAgICBzaG91bGRCZSgncmVzdWx0RW50cmllcy5sZW5ndGgnLCAndGVzdEVudHJp
ZXNDb3VudCcpOwotICAgIHJlc3VsdEVudHJpZXMuc29ydChmdW5jdGlvbihhLCBiKSB7IHJldHVy
biAoYS5mdWxsUGF0aCA+IGIuZnVsbFBhdGgpID8gMSA6IChhLmZ1bGxQYXRoIDwgYi5mdWxsUGF0
aCkgPyAtMSA6IDA7IH0pOwotICAgIGZvciAoaSA9IDA7IGkgPCByZXN1bHRFbnRyaWVzLmxlbmd0
aDsgKytpKSB7Ci0gICAgICAgIGVudHJ5ID0gcmVzdWx0RW50cmllc1tpXTsKLSAgICAgICAgZGVi
dWcoJ0VudHJ5OicgKyBlbnRyeS5mdWxsUGF0aCArICcgaXNEaXJlY3Rvcnk6JyArIGVudHJ5Lmlz
RGlyZWN0b3J5KTsKLSAgICAgICAgc2hvdWxkQmUoJ3Rlc3RFbnRyaWVzW2VudHJ5LmZ1bGxQYXRo
XScsICdlbnRyeS5pc0RpcmVjdG9yeScpOwotICAgIH0KLX0KLQotZnVuY3Rpb24gZW50cmllc0Nh
bGxiYWNrKGVudHJpZXMpCi17Ci0gICAgZW50cmllc0NhbGxiYWNrQ291bnQrKzsKLQotICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgZW50cmllcy5sZW5ndGg7ICsraSkKLSAgICAgICAgcmVzdWx0RW50
cmllcy5wdXNoKGVudHJpZXNbaV0pOwotCi0gICAgaWYgKGVudHJpZXMubGVuZ3RoKSB7Ci0gICAg
ICAgIHJlYWRFbnRyaWVzQ291bnQrKzsKLSAgICAgICAgcmVhZGVyLnJlYWRFbnRyaWVzKGVudHJp
ZXNDYWxsYmFjaywgZXJyb3JDYWxsYmFjayk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgLy8gTXVz
dCBoYXZlIHJlYWQgYWxsIHRoZSBlbnRyaWVzLgotICAgICAgICB2ZXJpZnlUZXN0UmVzdWx0KCk7
Ci0gICAgICAgIGVuZFRlc3QoKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHJ1blJlYWREaXJlY3Rv
cnlUZXN0KCkKLXsKLSAgICByZWFkRW50cmllc0NvdW50Kys7Ci0gICAgcmVhZGVyID0gZmlsZVN5
c3RlbS5yb290LmNyZWF0ZVJlYWRlcigpOwotICAgIHJlYWRlci5yZWFkRW50cmllcyhlbnRyaWVz
Q2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spOwotfQotCi1mdW5jdGlvbiBwcmVwYXJlRm9yVGVzdCgp
Ci17Ci0gICAgdmFyIGhlbHBlciA9IG5ldyBKb2luSGVscGVyKCk7Ci0gICAgdmFyIGRvbmUgPSBm
dW5jdGlvbigpIHsgaGVscGVyLmRvbmUoKTsgfTsKLQotICAgIGZvciAodmFyIHBhdGggaW4gdGVz
dEVudHJpZXMpIHsKLSAgICAgICAgdGVzdEVudHJpZXNDb3VudCsrOwotICAgICAgICBpZiAodGVz
dEVudHJpZXNbcGF0aF0pCi0gICAgICAgICAgICBoZWxwZXIucnVuKGZ1bmN0aW9uKCkgeyBmaWxl
U3lzdGVtLnJvb3QuZ2V0RGlyZWN0b3J5KHBhdGgsIHtjcmVhdGU6dHJ1ZX0sIGRvbmUsIGVycm9y
Q2FsbGJhY2spOyB9KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgaGVscGVyLnJ1bihmdW5j
dGlvbigpIHsgZmlsZVN5c3RlbS5yb290LmdldEZpbGUocGF0aCwge2NyZWF0ZTp0cnVlfSwgZG9u
ZSwgZXJyb3JDYWxsYmFjayk7IH0pOwotICAgIH0KLSAgICBoZWxwZXIuam9pbihydW5SZWFkRGly
ZWN0b3J5VGVzdCk7Ci19Ci0KLWZ1bmN0aW9uIHN1Y2Nlc3NDYWxsYmFjayhmcykKLXsKLSAgICBm
aWxlU3lzdGVtID0gZnM7Ci0gICAgZGVidWcoIlN1Y2Nlc3NmdWxseSBvYnRhaW5lZCBQZXJzaXN0
ZW50IEZpbGVTeXN0ZW06IiArIGZpbGVTeXN0ZW0ubmFtZSk7Ci0gICAgcmVtb3ZlQWxsSW5EaXJl
Y3RvcnkoZmlsZVN5c3RlbS5yb290LCBwcmVwYXJlRm9yVGVzdCwgZXJyb3JDYWxsYmFjayk7Ci19
Ci0KLWlmICh3aW5kb3cud2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0pIHsKLSAgICB3ZWJraXRSZXF1
ZXN0RmlsZVN5c3RlbSh3aW5kb3cuVEVNUE9SQVJZLCAxMDAsIHN1Y2Nlc3NDYWxsYmFjaywgZXJy
b3JDYWxsYmFjayk7Ci0gICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotfSBlbHNlCi0g
ICAgZGVidWcoIlRoaXMgdGVzdCByZXF1aXJlcyBGaWxlU3lzdGVtIEFQSSBzdXBwb3J0LiIpOwpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3NpbXBsZS1wZXJzaXN0ZW50LWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vc2ltcGxl
LXBlcnNpc3RlbnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2ZpbGVzeXN0ZW0vc2ltcGxlLXBlcnNpc3RlbnQtZXhwZWN0ZWQudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC0xLDEyICswLDAgQEAKLXJlcXVlc3RGaWxlU3lzdGVtIFBFUlNJU1RFTlQgdGVz
dC4KLQotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgotCi0KLVN1Y2Nlc3NmdWxseSBvYnRhaW5l
ZCBQRVJTSVNURU5UIEZpbGVTeXN0ZW06ZmlsZV9fMDpQZXJzaXN0ZW50Ci1QQVNTIGZpbGVTeXN0
ZW0ubmFtZS5sZW5ndGggPiAwIGlzIHRydWUKLVBBU1MgZmlsZVN5c3RlbS5yb290LmZ1bGxQYXRo
IGlzICIvIgotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRF
Ci0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9zaW1wbGUtcGVyc2lzdGVudC5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9zaW1wbGUtcGVy
c2lzdGVudC5odG1sCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVz
eXN0ZW0vc2ltcGxlLXBlcnNpc3RlbnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw5ICswLDAg
QEAKLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHNjcmlwdCBzcmM9InJlc291cmNl
cy9zaW1wbGUtcGVyc2lzdGVudC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vc2ltcGxlLXJlYWRvbmx5LWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vc2ltcGxlLXJlYWRv
bmx5LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9m
aWxlc3lzdGVtL3NpbXBsZS1yZWFkb25seS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTEsMzAgKzAsMCBAQAotRmlsZVN5c3RlbSBBUEkgcmVhZG9ubHkgYXR0cmlidXRlcyB0ZXN0Lgot
Ci1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLQotd2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0o
VEVNUE9SQVJZLCAxMDAsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykKLXRyeWluZyB0
byBzZXQgcmVhZG9ubHkgcHJvcGVydHkgZmlsZVN5c3RlbS5uYW1lCi1maWxlU3lzdGVtLm5hbWUg
PSAnYmFyJwotUEFTUyBmaWxlU3lzdGVtLm5hbWUgaXMgc3RpbGwgZmlsZV9fMDpUZW1wb3JhcnkK
LXJvb3QgPSBmaWxlU3lzdGVtLnJvb3QKLXJvb3QuZ2V0RmlsZSgnZm9vJywge2NyZWF0ZTp0cnVl
fSwgZ2V0RmlsZUNhbGxiYWNrLCBlcnJvckNhbGxiYWNrKQotdHJ5aW5nIHRvIHNldCByZWFkb25s
eSBwcm9wZXJ0eSBmaWxlRW50cnkuaXNGaWxlCi1maWxlRW50cnkuaXNGaWxlID0gZmFsc2UKLVBB
U1MgZmlsZUVudHJ5LmlzRmlsZSBpcyBzdGlsbCB0cnVlCi10cnlpbmcgdG8gc2V0IHJlYWRvbmx5
IHByb3BlcnR5IGZpbGVFbnRyeS5pc0RpcmVjdG9yeQotZmlsZUVudHJ5LmlzRGlyZWN0b3J5ID0g
dHJ1ZQotUEFTUyBmaWxlRW50cnkuaXNEaXJlY3RvcnkgaXMgc3RpbGwgZmFsc2UKLXRyeWluZyB0
byBzZXQgcmVhZG9ubHkgcHJvcGVydHkgZmlsZUVudHJ5Lm5hbWUKLWZpbGVFbnRyeS5uYW1lID0g
J2JhcicKLVBBU1MgZmlsZUVudHJ5Lm5hbWUgaXMgc3RpbGwgZm9vCi10cnlpbmcgdG8gc2V0IHJl
YWRvbmx5IHByb3BlcnR5IGZpbGVFbnRyeS5mdWxsUGF0aAotZmlsZUVudHJ5LmZ1bGxQYXRoID0g
J2JhcicKLVBBU1MgZmlsZUVudHJ5LmZ1bGxQYXRoIGlzIHN0aWxsIC9mb28KLXRyeWluZyB0byBz
ZXQgcmVhZG9ubHkgcHJvcGVydHkgZmlsZUVudHJ5LmZpbGVzeXN0ZW0KLWZpbGVFbnRyeS5maWxl
c3lzdGVtID0gbnVsbAotUEFTUyBmaWxlRW50cnkuZmlsZXN5c3RlbSBpcyBzdGlsbCBbb2JqZWN0
IERPTUZpbGVTeXN0ZW1dCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1Qg
Q09NUExFVEUKLQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3NpbXBsZS1yZWFk
b25seS1maWxlLW9iamVjdC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9maWxlc3lzdGVtL3NpbXBsZS1yZWFkb25seS1maWxlLW9iamVjdC1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9zaW1wbGUt
cmVhZG9ubHktZmlsZS1vYmplY3QtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDIy
ICswLDAgQEAKLVRlc3QgcmVhZG9ubHkgYXR0cmlidXRlcyBvZiBGaWxlLgotCi1PbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCi0KLQotd2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0oVEVNUE9SQVJZLCAx
MDAsIGZpbGVTeXN0ZW1DYWxsYmFjaywgZXJyb3JDYWxsYmFjayk7Ci1yZW1vdmVBbGxJbkRpcmVj
dG9yeShmaWxlU3lzdGVtLnJvb3QsIGNyZWF0ZVRlc3RGaWxlLCBlcnJvckNhbGxiYWNrKTsKLWZp
bGVTeXN0ZW0ucm9vdC5nZXRGaWxlKHRlc3RGaWxlTmFtZSwge2NyZWF0ZTp0cnVlfSwgZ2V0Rmls
ZUZyb21FbnRyeSwgZXJyb3JDYWxsYmFjayk7Ci10ZXN0RmlsZUVudHJ5LmZpbGUoZmlsZUNhbGxi
YWNrLCBlcnJvckNhbGxiYWNrKTsKLXRyeWluZyB0byBzZXQgcmVhZG9ubHkgcHJvcGVydHkgdGVz
dEZpbGUuc2l6ZQotdGVzdEZpbGUuc2l6ZSA9IDEKLVBBU1MgdGVzdEZpbGUuc2l6ZSBpcyBzdGls
bCAwCi10cnlpbmcgdG8gc2V0IHJlYWRvbmx5IHByb3BlcnR5IHRlc3RGaWxlLnR5cGUKLXRlc3RG
aWxlLnR5cGUgPSAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJwotUEFTUyB0ZXN0RmlsZS50eXBl
IGlzIHN0aWxsIHRleHQvcGxhaW4KLXRyeWluZyB0byBzZXQgcmVhZG9ubHkgcHJvcGVydHkgdGVz
dEZpbGUubmFtZQotdGVzdEZpbGUubmFtZSA9ICdiYXInCi1QQVNTIHRlc3RGaWxlLm5hbWUgaXMg
c3RpbGwgdGVzdEZpbGVFbnRyeS50eHQKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
LQotVEVTVCBDT01QTEVURQotCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vc2lt
cGxlLXJlYWRvbmx5LWZpbGUtb2JqZWN0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9maWxlc3lzdGVtL3NpbXBsZS1yZWFkb25seS1maWxlLW9iamVjdC5odG1sCShyZXZpc2lv
biAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vc2ltcGxlLXJlYWRvbmx5
LWZpbGUtb2JqZWN0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsNjMgKzAsMCBAQAotPCFET0NU
WVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9InJlc291cmNlcy9mcy10ZXN0
LXV0aWwuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxwIGlkPSJkZXNjcmlwdGlvbiI+
PC9wPgotPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Ci08c2NyaXB0PgotZGVzY3JpcHRpb24oIlRl
c3QgcmVhZG9ubHkgYXR0cmlidXRlcyBvZiBGaWxlLiIpOwotCi12YXIgZmlsZVN5c3RlbSA9IG51
bGw7Ci12YXIgdGVzdEZpbGVOYW1lID0gJy90ZXN0RmlsZUVudHJ5LnR4dCc7Ci12YXIgdGVzdEZp
bGVFbnRyeSA9IG51bGw7Ci12YXIgdGVzdEZpbGUgPSBudWxsOwotCi1mdW5jdGlvbiBzZXRSZWFk
b25seVByb3BlcnR5KHByb3BlcnR5LCB2YWx1ZSkKLXsKLSAgICBvbGRWYWx1ZSA9IGV2YWwocHJv
cGVydHkpOwotICAgIGRlYnVnKCJ0cnlpbmcgdG8gc2V0IHJlYWRvbmx5IHByb3BlcnR5ICIgKyBw
cm9wZXJ0eSk7Ci0gICAgZXZhbEFuZExvZyhwcm9wZXJ0eSArICIgPSAiICsgdmFsdWUpOwotICAg
IG5ld1ZhbHVlID0gZXZhbChwcm9wZXJ0eSk7Ci0gICAgaWYgKG9sZFZhbHVlID09IG5ld1ZhbHVl
KSB7Ci0gICAgICAgIHRlc3RQYXNzZWQocHJvcGVydHkgKyAiIGlzIHN0aWxsICIgKyBvbGRWYWx1
ZSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgdGVzdEZhaWxlZChwcm9wZXJ0eSArICIgdmFsdWUg
d2FzIGNoYW5nZWQiKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIGVycm9yQ2FsbGJhY2soZXJyb3Ip
IHsKLSAgICB0ZXN0RmFpbGVkKCJFcnJvciBvY2N1cmVkOiIgKyBlcnJvci5jb2RlKTsKLSAgICBm
aW5pc2hKU1Rlc3QoKTsKLX0KLQotZnVuY3Rpb24gZmlsZUNhbGxiYWNrKGZpbGUpIHsKLSAgICB0
ZXN0RmlsZSA9IGZpbGU7Ci0gICAgc2V0UmVhZG9ubHlQcm9wZXJ0eSgidGVzdEZpbGUuc2l6ZSIs
ICIxIik7Ci0gICAgc2V0UmVhZG9ubHlQcm9wZXJ0eSgidGVzdEZpbGUudHlwZSIsICInYXBwbGlj
YXRpb24vb2N0ZXQtc3RyZWFtJyIpOwotICAgIHNldFJlYWRvbmx5UHJvcGVydHkoInRlc3RGaWxl
Lm5hbWUiLCAiJ2JhciciKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotZnVuY3Rpb24gZ2V0
RmlsZUZyb21FbnRyeShlbnRyeSkgewotICAgIHRlc3RGaWxlRW50cnkgPSBlbnRyeTsKLSAgICBl
dmFsQW5kTG9nKCJ0ZXN0RmlsZUVudHJ5LmZpbGUoZmlsZUNhbGxiYWNrLCBlcnJvckNhbGxiYWNr
KTsiKTsKLX0KLQotZnVuY3Rpb24gY3JlYXRlVGVzdEZpbGUoKSB7Ci0gICAgZXZhbEFuZExvZygi
ZmlsZVN5c3RlbS5yb290LmdldEZpbGUodGVzdEZpbGVOYW1lLCB7Y3JlYXRlOnRydWV9LCBnZXRG
aWxlRnJvbUVudHJ5LCBlcnJvckNhbGxiYWNrKTsiKTsKLX0KLQotZnVuY3Rpb24gZmlsZVN5c3Rl
bUNhbGxiYWNrKGZzKSB7Ci0gICAgZmlsZVN5c3RlbSA9IGZzOwotICAgIGV2YWxBbmRMb2coInJl
bW92ZUFsbEluRGlyZWN0b3J5KGZpbGVTeXN0ZW0ucm9vdCwgY3JlYXRlVGVzdEZpbGUsIGVycm9y
Q2FsbGJhY2spOyIpOwotfQotCi12YXIganNUZXN0SXNBc3luYyA9IHRydWU7Ci1ldmFsQW5kTG9n
KCJ3ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbShURU1QT1JBUlksIDEwMCwgZmlsZVN5c3RlbUNhbGxi
YWNrLCBlcnJvckNhbGxiYWNrKTsiKTsKLTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3NpbXBsZS1yZWFkb25seS5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9zaW1wbGUtcmVhZG9ubHkuaHRt
bAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3NpbXBs
ZS1yZWFkb25seS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDExICswLDAgQEAKLTxodG1sPgot
PGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Ci08ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2ltcGxlLXJlYWRvbmx5
LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
ZmlsZXN5c3RlbS9zaW1wbGUtcmVxdWlyZWQtYXJndW1lbnRzLWdldGRpcmVjdG9yeS1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3NpbXBsZS1y
ZXF1aXJlZC1hcmd1bWVudHMtZ2V0ZGlyZWN0b3J5LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTU2
NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3NpbXBsZS1yZXF1aXJlZC1hcmd1
bWVudHMtZ2V0ZGlyZWN0b3J5LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwxMyAr
MCwwIEBACi1EaXJlY3RvcnlFbnRyeSByZXF1aXJlZCBhcmd1bWVudHMgdGVzdC4KLQotT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgotCi0KLXdlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKFRFTVBPUkFS
WSwgMTAwLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spOwotU3VjY2Vzc2Z1bGx5IG9i
dGFpbmVkIFRFTVBPUkFSWSBGaWxlU3lzdGVtOmZpbGVfXzA6VGVtcG9yYXJ5Ci1yb290ID0gZmls
ZVN5c3RlbS5yb290Ci1QQVNTIHJvb3QuZ2V0RGlyZWN0b3J5KCkgdGhyZXcgZXhjZXB0aW9uIFR5
cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMuCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lz
dGVtL3NpbXBsZS1yZXF1aXJlZC1hcmd1bWVudHMtZ2V0ZGlyZWN0b3J5Lmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3NpbXBsZS1yZXF1aXJlZC1hcmd1bWVu
dHMtZ2V0ZGlyZWN0b3J5Lmh0bWwJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zh
c3QvZmlsZXN5c3RlbS9zaW1wbGUtcmVxdWlyZWQtYXJndW1lbnRzLWdldGRpcmVjdG9yeS5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDExICswLDAgQEAKLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4K
LTxib2R5PgotPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Ci08ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2ltcGxlLXJlcXVpcmVkLWFyZ3VtZW50cy1nZXRk
aXJlY3RvcnkuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9maWxlc3lzdGVtL3NpbXBsZS1yZXF1aXJlZC1hcmd1bWVudHMtZ2V0ZmlsZS1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3NpbXBs
ZS1yZXF1aXJlZC1hcmd1bWVudHMtZ2V0ZmlsZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE1NjY5
MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9zaW1wbGUtcmVxdWlyZWQtYXJndW1l
bnRzLWdldGZpbGUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDEzICswLDAgQEAK
LURpcmVjdG9yeUVudHJ5IHJlcXVpcmVkIGFyZ3VtZW50cyB0ZXN0LgotCi1PbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCi0KLQotd2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0oVEVNUE9SQVJZLCAxMDAs
IHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjayk7Ci1TdWNjZXNzZnVsbHkgb2J0YWluZWQg
VEVNUE9SQVJZIEZpbGVTeXN0ZW06ZmlsZV9fMDpUZW1wb3JhcnkKLXJvb3QgPSBmaWxlU3lzdGVt
LnJvb3QKLVBBU1Mgcm9vdC5nZXRGaWxlKCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90
IGVub3VnaCBhcmd1bWVudHMuCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRF
U1QgQ09NUExFVEUKLQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3NpbXBsZS1y
ZXF1aXJlZC1hcmd1bWVudHMtZ2V0ZmlsZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvZmlsZXN5c3RlbS9zaW1wbGUtcmVxdWlyZWQtYXJndW1lbnRzLWdldGZpbGUuaHRtbAko
cmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3NpbXBsZS1y
ZXF1aXJlZC1hcmd1bWVudHMtZ2V0ZmlsZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDExICsw
LDAgQEAKLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHAgaWQ9ImRlc2NyaXB0aW9u
Ij48L3A+Ci08ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
c2ltcGxlLXJlcXVpcmVkLWFyZ3VtZW50cy1nZXRmaWxlLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4K
LTwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9zaW1wbGUtcmVxdWly
ZWQtYXJndW1lbnRzLWdldG1ldGFkYXRhLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vc2ltcGxlLXJlcXVpcmVkLWFyZ3VtZW50cy1nZXRtZXRh
ZGF0YS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3Qv
ZmlsZXN5c3RlbS9zaW1wbGUtcmVxdWlyZWQtYXJndW1lbnRzLWdldG1ldGFkYXRhLWV4cGVjdGVk
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwxMyArMCwwIEBACi1EaXJlY3RvcnlFbnRyeS5nZXRN
ZXRhZGF0YSByZXF1aXJlZCBhcmd1bWVudHMgdGVzdC4KLQotT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUiLgotCi0KLXdlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKFRFTVBPUkFSWSwgMTAwLCBzdWNjZXNz
Q2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spOwotU3VjY2Vzc2Z1bGx5IG9idGFpbmVkIFRFTVBPUkFS
WSBGaWxlU3lzdGVtOmZpbGVfXzA6VGVtcG9yYXJ5Ci1yb290ID0gZmlsZVN5c3RlbS5yb290Ci1Q
QVNTIHJvb3QuZ2V0TWV0YWRhdGEoKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBOb3QgZW5v
dWdoIGFyZ3VtZW50cy4KLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBD
T01QTEVURQotCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vc2ltcGxlLXJlcXVp
cmVkLWFyZ3VtZW50cy1nZXRtZXRhZGF0YS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvZmlsZXN5c3RlbS9zaW1wbGUtcmVxdWlyZWQtYXJndW1lbnRzLWdldG1ldGFkYXRhLmh0
bWwJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9zaW1w
bGUtcmVxdWlyZWQtYXJndW1lbnRzLWdldG1ldGFkYXRhLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTEsMTEgKzAsMCBAQAotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08cCBpZD0iZGVz
Y3JpcHRpb24iPjwvcD4KLTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgotPHNjcmlwdCBzcmM9InJl
c291cmNlcy9zaW1wbGUtcmVxdWlyZWQtYXJndW1lbnRzLWdldG1ldGFkYXRhLmpzIj48L3Njcmlw
dD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KLTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9z
aW1wbGUtcmVxdWlyZWQtYXJndW1lbnRzLXJlbW92ZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3NpbXBsZS1yZXF1aXJlZC1hcmd1bWVudHMt
cmVtb3ZlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9maWxlc3lzdGVtL3NpbXBsZS1yZXF1aXJlZC1hcmd1bWVudHMtcmVtb3ZlLWV4cGVjdGVkLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtMSwxMyArMCwwIEBACi1FbnRyeS5yZW1vdmUoKSByZXF1aXJl
ZCBhcmd1bWVudHMgdGVzdC4KLQotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgotCi0KLXdlYmtp
dFJlcXVlc3RGaWxlU3lzdGVtKFRFTVBPUkFSWSwgMTAwLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9y
Q2FsbGJhY2spOwotU3VjY2Vzc2Z1bGx5IG9idGFpbmVkIFRFTVBPUkFSWSBGaWxlU3lzdGVtOmZp
bGVfXzA6VGVtcG9yYXJ5Ci1yb290ID0gZmlsZVN5c3RlbS5yb290Ci1QQVNTIHJvb3QucmVtb3Zl
KCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMuCi1QQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3NpbXBsZS1yZXF1aXJlZC1hcmd1bWVudHMtcmVtb3Zl
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3NpbXBsZS1y
ZXF1aXJlZC1hcmd1bWVudHMtcmVtb3ZlLmh0bWwJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91
dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9zaW1wbGUtcmVxdWlyZWQtYXJndW1lbnRzLXJlbW92ZS5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDExICswLDAgQEAKLTxodG1sPgotPGhlYWQ+Ci08c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVh
ZD4KLTxib2R5PgotPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Ci08ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2ltcGxlLXJlcXVpcmVkLWFyZ3VtZW50cy1y
ZW1vdmUuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9maWxlc3lzdGVtL3NpbXBsZS10ZW1wb3JhcnktZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9zaW1wbGUtdGVtcG9yYXJ5LWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Np
bXBsZS10ZW1wb3JhcnktZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDEyICswLDAg
QEAKLXJlcXVlc3RGaWxlU3lzdGVtIFRFTVBPUkFSWSB0ZXN0LgotCi1PbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCi0KLQotU3VjY2Vzc2Z1bGx5IG9idGFpbmVkIFRFTVBPUkFSWSBGaWxlU3lzdGVt
OmZpbGVfXzA6VGVtcG9yYXJ5Ci1QQVNTIGZpbGVTeXN0ZW0ubmFtZS5sZW5ndGggPiAwIGlzIHRy
dWUKLVBBU1MgZmlsZVN5c3RlbS5yb290LmZ1bGxQYXRoIGlzICIvIgotUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZmlsZXN5c3RlbS9zaW1wbGUtdGVtcG9yYXJ5Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9maWxlc3lzdGVtL3NpbXBsZS10ZW1wb3JhcnkuaHRtbAkocmV2aXNpb24gMTU2
NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3NpbXBsZS10ZW1wb3JhcnkuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMSw5ICswLDAgQEAKLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4K
LTxib2R5PgotPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaW1wbGUtdGVtcG9yYXJ5LmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3Rl
bS93b3JrZXJzL2FzeW5jLW9wZXJhdGlvbnMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2FzeW5jLW9wZXJhdGlvbnMtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0v
d29ya2Vycy9hc3luYy1vcGVyYXRpb25zLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MSwxNyArMCwwIEBACi1bV29ya2VyXSBUZXN0IG1ha2luZyBtdWx0aXBsZSBhc3luYyBGaWxlU3lz
dGVtIG9wZXJhdGlvbnMuCi0KLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQotCi1TdGFydGlu
ZyB3b3JrZXI6IC4uL3Jlc291cmNlcy9hc3luYy1vcGVyYXRpb25zLmpzCi1bV29ya2VyXSByZXF1
ZXN0ZWQgRmlsZVN5c3RlbS4KLVtXb3JrZXJdIEdvdCBGaWxlU3lzdGVtOmZpbGVfXzA6VGVtcG9y
YXJ5Ci1bV29ya2VyXSBTdGFydGluZyBhc3luYyB0ZXN0IHN0YWdlIDEuCi1bV29ya2VyXSBTdGFy
dGluZyBhc3luYyB0ZXN0IHN0YWdlIDIuCi1bV29ya2VyXSBWZXJpZnlpbmcgdGhlIEZpbGVTeXN0
ZW0gc3RhdHVzLgotUEFTUyBbV29ya2VyXSAiL2EsL2IsL2MsL2QyLC9lLC9mIiBpcyAiL2EsL2Is
L2MsL2QyLC9lLC9mIgotUEFTUyBbV29ya2VyXSBkaXJzQ291bnQgaXMgMwotUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2FzeW5jLW9wZXJhdGlvbnMuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9hc3luYy1vcGVyYXRpb25z
Lmh0bWwJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93
b3JrZXJzL2FzeW5jLW9wZXJhdGlvbnMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxMiArMCww
IEBACi08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQ+Ci13b3JrZXIg
PSBzdGFydFdvcmtlcignLi4vcmVzb3VyY2VzL2FzeW5jLW9wZXJhdGlvbnMuanMnKTsKLTwvc2Ny
aXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgotCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVz
eXN0ZW0vd29ya2Vycy9kZXRhY2hlZC1mcmFtZS1jcmFzaC1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZGV0YWNoZWQtZnJhbWUt
Y3Jhc2gtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2ZpbGVzeXN0ZW0vd29ya2Vycy9kZXRhY2hlZC1mcmFtZS1jcmFzaC1leHBlY3RlZC50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTEgKzAsMCBAQAotUEFTUwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9m
aWxlc3lzdGVtL3dvcmtlcnMvZGV0YWNoZWQtZnJhbWUtY3Jhc2guaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9kZXRhY2hlZC1mcmFtZS1jcmFz
aC5odG1sCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0v
d29ya2Vycy9kZXRhY2hlZC1mcmFtZS1jcmFzaC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMw
ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPCEtLSBodHRwOi8vY3JidWcuY29tLzE0NzU5Mgot
ICAgICBodHRwOi8vd2Via2l0Lm9yZy9iLzk2MzU0IC0tPgotPHNjcmlwdD4KLWlmICh3aW5kb3cu
dGVzdFJ1bm5lcikgewotICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotICAgIHRlc3RSdW5u
ZXIud2FpdFVudGlsRG9uZSgpOwotfQotCi1kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01D
b250ZW50TG9hZGVkIiwgcnVuVGVzdCk7Ci0KLWZ1bmN0aW9uIHJ1blRlc3QoKQotewotICAgIGFk
ZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCBjbGVhcik7Ci19Ci0KLWZ1bmN0aW9uIGNsZWFyKGV2
ZW50KQotewotICAgIGRvY3VtZW50LmJvZHkuaW5uZXJUZXh0ID0gIiI7Ci0gICAgc2V0VGltZW91
dChkb25lLCAwKTsKLX0KLQotZnVuY3Rpb24gZG9uZSgpCi17Ci0gICAgZG9jdW1lbnQuYm9keS5p
bm5lclRleHQgPSAiUEFTUyI7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0
ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0KLTwvc2NyaXB0PgotPGlmcmFtZSBpZD0iZnJhbWUi
IHNyYz0icmVzb3VyY2VzL2RldGFjaGVkLWZyYW1lLWNyYXNoLWZyYW1lLmh0bWwiLz4KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtZW50cnktdG8tdXJpLXN5
bmMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3Rl
bS93b3JrZXJzL2ZpbGUtZW50cnktdG8tdXJpLXN5bmMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAx
NTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLWVudHJ5
LXRvLXVyaS1zeW5jLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwxMSArMCwwIEBA
Ci1bV29ya2VyXSBPYnRhaW5pbmcgVVJMIGZyb20gRmlsZUVudHJ5LgotCi1PbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCi0KLQotU3RhcnRpbmcgd29ya2VyOiAuLi9yZXNvdXJjZXMvZmlsZS1lbnRy
eS10by11cmktc3luYy5qcwotUEFTUyBbV29ya2VyXSB0ZXN0RmlsZUVudHJ5LnRvVVJMKCkgaXMg
J2ZpbGVzeXN0ZW06ZmlsZTovLy90ZW1wb3JhcnkvdGVzdEZpbGVFbnRyeS50eHQnCi1QQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS1lbnRyeS10by11cmktc3luYy5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUt
ZW50cnktdG8tdXJpLXN5bmMuaHRtbAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS1lbnRyeS10by11cmktc3luYy5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDExICswLDAgQEAKLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0i
Li4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxi
b2R5PgotPHNjcmlwdD4KLXdvcmtlciA9IHN0YXJ0V29ya2VyKCcuLi9yZXNvdXJjZXMvZmlsZS1l
bnRyeS10by11cmktc3luYy5qcycpOwotPC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+Cklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLWZyb20tZmlsZS1l
bnRyeS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lz
dGVtL3dvcmtlcnMvZmlsZS1mcm9tLWZpbGUtZW50cnktZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAx
NTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLWZyb20t
ZmlsZS1lbnRyeS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMTMgKzAsMCBAQAot
W1dvcmtlcl0gT2J0YWluaW5nIEZpbGUgZnJvbSBGaWxlRW50cnkuCi0KLU9uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KLQotCi1TdGFydGluZyB3b3JrZXI6IC4uL3Jlc291cmNlcy9maWxlLWZyb20t
ZmlsZS1lbnRyeS5qcwotUEFTUyBbV29ya2VyXSB0ZXN0RmlsZS5uYW1lIGlzIHRlc3RGaWxlRW50
cnkubmFtZQotUEFTUyBbV29ya2VyXSB0ZXN0RmlsZS50eXBlIGlzICd0ZXh0L3BsYWluJwotUEFT
UyBbV29ya2VyXSB0ZXN0RmlsZS5zaXplIGlzIDAKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKLQotVEVTVCBDT01QTEVURQotCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0
ZW0vd29ya2Vycy9maWxlLWZyb20tZmlsZS1lbnRyeS1zeW5jLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLWZyb20tZmls
ZS1lbnRyeS1zeW5jLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS1mcm9tLWZpbGUtZW50cnktc3luYy1leHBl
Y3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMTMgKzAsMCBAQAotW1dvcmtlcl0gT2J0YWlu
aW5nIEZpbGUgZnJvbSBGaWxlRW50cnlTeW5jLgotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
Ci0KLQotU3RhcnRpbmcgd29ya2VyOiAuLi9yZXNvdXJjZXMvZmlsZS1mcm9tLWZpbGUtZW50cnkt
c3luYy5qcwotUEFTUyBbV29ya2VyXSB0ZXN0RmlsZS5uYW1lIGlzIHRlc3RGaWxlRW50cnkubmFt
ZQotUEFTUyBbV29ya2VyXSB0ZXN0RmlsZS50eXBlIGlzICd0ZXh0L3BsYWluJwotUEFTUyBbV29y
a2VyXSB0ZXN0RmlsZS5zaXplIGlzIDAKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
LQotVEVTVCBDT01QTEVURQotCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29y
a2Vycy9maWxlLWZyb20tZmlsZS1lbnRyeS1zeW5jLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS1mcm9tLWZpbGUtZW50cnktc3luYy5o
dG1sCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29y
a2Vycy9maWxlLWZyb20tZmlsZS1lbnRyeS1zeW5jLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEs
MTEgKzAsMCBAQAotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0Pgot
d29ya2VyID0gc3RhcnRXb3JrZXIoJy4uL3Jlc291cmNlcy9maWxlLWZyb20tZmlsZS1lbnRyeS1z
eW5jLmpzJyk7Ci08L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtZnJvbS1maWxlLWVudHJ5Lmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS1mcm9t
LWZpbGUtZW50cnkuaHRtbAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9m
aWxlc3lzdGVtL3dvcmtlcnMvZmlsZS1mcm9tLWZpbGUtZW50cnkuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMSwxMSArMCwwIEBACi08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxz
Y3JpcHQ+Ci13b3JrZXIgPSBzdGFydFdvcmtlcignLi4vcmVzb3VyY2VzL2ZpbGUtZnJvbS1maWxl
LWVudHJ5LmpzJyk7Ci08L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtd3JpdGVyLWVtcHR5LWJsb2ItZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3Jr
ZXJzL2ZpbGUtd3JpdGVyLWVtcHR5LWJsb2ItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNTY2OTEp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLXdyaXRlci1lbXB0
eS1ibG9iLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwxMSArMCwwIEBACi1bV29y
a2VyXSBUZXN0IHRoYXQgRmlsZVdyaXRlciB3b3JrcyB3aXRob3V0IGNyYXNoIHdoZW4gdHJ5aW5n
IHRvIHdyaXRlIGFuIGVtcHR5IGJsb2IuCi0KLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQot
U3RhcnRpbmcgd29ya2VyOiAuLi9yZXNvdXJjZXMvZmlsZS13cml0ZXItZW1wdHktYmxvYi5qcwot
W1dvcmtlcl0gc3RhcnRpbmcgdGVzdAotUEFTUyBbV29ya2VyXSBTdWNjZXNzZnVsbHkgd3JvdGUg
YmxvYi4KLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQot
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLXdyaXRlci1l
bXB0eS1ibG9iLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVt
L3dvcmtlcnMvZmlsZS13cml0ZXItZW1wdHktYmxvYi5odG1sCShyZXZpc2lvbiAxNTY2OTEpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLXdyaXRlci1lbXB0eS1i
bG9iLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTUgKzAsMCBAQAotPCFET0NUWVBFIEhUTUw+
Ci08aHRtbD4KLTxoZWFkPgotPHRpdGxlPkZpbGUgV3JpdGVyIHdpdGggZW1wdHkgQmxvYiBpbiBX
b3JrZXI8L3RpdGxlPgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48
L2Rpdj4KLTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgotPHNjcmlwdD4KLXdvcmtlciA9IHN0YXJ0
V29ya2VyKCIuLi9yZXNvdXJjZXMvZmlsZS13cml0ZXItZW1wdHktYmxvYi5qcyIpOwotPC9zY3Jp
cHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0
ZW0vd29ya2Vycy9maWxlLXdyaXRlci1ldmVudHMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtd3JpdGVyLWV2ZW50cy1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5
c3RlbS93b3JrZXJzL2ZpbGUtd3JpdGVyLWV2ZW50cy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMTEgKzAsMCBAQAotW1dvcmtlcl0gVGVzdCB0aGF0IEZpbGVXcml0ZXIgcHJvZHVj
ZXMgcHJvcGVyIHByb2dyZXNzIGV2ZW50cy4KLQotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgot
Ci1TdGFydGluZyB3b3JrZXI6IC4uL3Jlc291cmNlcy9maWxlLXdyaXRlci1ldmVudHMuanMKLVtX
b3JrZXJdIHN0YXJ0aW5nIHRlc3QKLVBBU1MgW1dvcmtlcl0gU2F3IGFsbCB0aGUgcmlnaHQgZXZl
bnRzLgotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0K
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtd3JpdGVyLWV2
ZW50cy1zaGFyZWQtd29ya2VyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLXdyaXRlci1ldmVudHMtc2hhcmVkLXdvcmtl
ci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmls
ZXN5c3RlbS93b3JrZXJzL2ZpbGUtd3JpdGVyLWV2ZW50cy1zaGFyZWQtd29ya2VyLWV4cGVjdGVk
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwxMSArMCwwIEBACi1bV29ya2VyXSBUZXN0IHRoYXQg
RmlsZVdyaXRlciBwcm9kdWNlcyBwcm9wZXIgcHJvZ3Jlc3MgZXZlbnRzLgotCi1PbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCi0KLVN0YXJ0aW5nIHdvcmtlcjogLi4vcmVzb3VyY2VzL3NoYXJlZC13
b3JrZXItc3R1Yi5qcwotW1dvcmtlcl0gc3RhcnRpbmcgdGVzdAotUEFTUyBbV29ya2VyXSBTYXcg
YWxsIHRoZSByaWdodCBldmVudHMuCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0K
LVRFU1QgQ09NUExFVEUKLQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtl
cnMvZmlsZS13cml0ZXItZXZlbnRzLXNoYXJlZC13b3JrZXIuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLXdyaXRlci1ldmVudHMtc2hh
cmVkLXdvcmtlci5odG1sCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zp
bGVzeXN0ZW0vd29ya2Vycy9maWxlLXdyaXRlci1ldmVudHMtc2hhcmVkLXdvcmtlci5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDE5ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MPgotPGh0bWw+Ci0g
PGhlYWQ+Ci0gICAgPHRpdGxlPkZpbGUgV3JpdGVyIEV2ZW50cyBTaGFyZWQgV29ya2VyPC90aXRs
ZT4KLSAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KLSA8L2hlYWQ+Ci0gPGJvZHk+Ci0gICAgPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwv
ZGl2PgotICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgotICAgIDxzY3JpcHQ+Ci0gICAgICAg
IHZhciB3b3JrZXIgPSBzdGFydFdvcmtlcigiLi4vcmVzb3VyY2VzL3NoYXJlZC13b3JrZXItc3R1
Yi5qcyIsIHRydWUgLyogc2hhcmVkICovKTsKLSAgICAgICAgd29ya2VyLnBvcnQucG9zdE1lc3Nh
Z2UoIklNUE9SVDpmaWxlLXdyaXRlci1ldmVudHMuanMiKTsKLSAgICA8L3NjcmlwdD4KLSAgICA8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
Ci0gPC9ib2R5PgotPC9odG1sPgotCi0KLQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lz
dGVtL3dvcmtlcnMvZmlsZS13cml0ZXItZXZlbnRzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS13cml0ZXItZXZlbnRzLmh0bWwJKHJl
dmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2Zp
bGUtd3JpdGVyLWV2ZW50cy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE4ICswLDAgQEAKLTwh
RE9DVFlQRSBIVE1MPgotPGh0bWw+Ci0gPGhlYWQ+Ci0gICAgPHRpdGxlPkZpbGUgV3JpdGVyIEV2
ZW50cyBXb3JrZXI8L3RpdGxlPgotICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotIDwvaGVhZD4KLSA8Ym9keT4KLSAgICA8ZGl2IGlk
PSJkZXNjcmlwdGlvbiI+PC9kaXY+Ci0gICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Ci0gICAg
PHNjcmlwdD4KLSAgICAgICAgd29ya2VyID0gc3RhcnRXb3JrZXIoIi4uL3Jlc291cmNlcy9maWxl
LXdyaXRlci1ldmVudHMuanMiKTsKLSAgICA8L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci0gPC9ib2R5PgotPC9o
dG1sPgotCi0KLQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmls
ZS13cml0ZXItZ2MtYmxvYi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS13cml0ZXItZ2MtYmxvYi1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJz
L2ZpbGUtd3JpdGVyLWdjLWJsb2ItZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDEx
ICswLDAgQEAKLVtXb3JrZXJdIFRlc3QgdGhhdCBhIGJsb2Igd29uJ3QgZ2V0IGdhcmJhZ2UtY29s
bGVjdGVkIHdoaWxlIGJlaW5nIHdyaXR0ZW4gb3V0IGJ5IGEgRmlsZVdyaXRlci4KLQotT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgotCi1TdGFydGluZyB3b3JrZXI6IC4uL3Jlc291cmNlcy9maWxl
LXdyaXRlci1nYy1ibG9iLmpzCi1bV29ya2VyXSBzdGFydGluZyB0ZXN0Ci1QQVNTIFtXb3JrZXJd
IFN1Y2Nlc3NmdWxseSB3cm90ZSBibG9iLgotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQotCi1URVNUIENPTVBMRVRFCi0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93
b3JrZXJzL2ZpbGUtd3JpdGVyLWdjLWJsb2IuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLXdyaXRlci1nYy1ibG9iLmh0bWwJKHJldmlz
aW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUt
d3JpdGVyLWdjLWJsb2IuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxOCArMCwwIEBACi08IURP
Q1RZUEUgSFRNTD4KLTxodG1sPgotIDxoZWFkPgotICAgIDx0aXRsZT5GaWxlIFdyaXRlciBHQyBC
bG9iIFdvcmtlcjwvdGl0bGU+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci0gPC9oZWFkPgotIDxib2R5PgotICAgIDxkaXYgaWQ9
ImRlc2NyaXB0aW9uIj48L2Rpdj4KLSAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KLSAgICA8
c2NyaXB0PgotICAgICAgICB3b3JrZXIgPSBzdGFydFdvcmtlcigiLi4vcmVzb3VyY2VzL2ZpbGUt
d3JpdGVyLWdjLWJsb2IuanMiKTsKLSAgICA8L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci0gPC9ib2R5PgotPC9o
dG1sPgotCi0KLQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmls
ZS13cml0ZXItc3luYy10cnVuY2F0ZS1leHRlbmQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtd3JpdGVyLXN5bmMtdHJ1
bmNhdGUtZXh0ZW5kLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS13cml0ZXItc3luYy10cnVuY2F0ZS1leHRl
bmQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDEwICswLDAgQEAKLVtXb3JrZXJd
IFRlc3QgdXNpbmcgRmlsZVdyaXRlclN5bmMudHJ1bmNhdGUgdG8gZXh0ZW5kIGEgZmlsZS4KLQot
T24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9s
bG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgotCi1TdGFydGluZyB3b3JrZXI6IC4uL3Jlc291cmNl
cy9maWxlLXdyaXRlci1zeW5jLXRydW5jYXRlLWV4dGVuZC5qcwotUEFTUyBbV29ya2VyXSBUcnVu
Y2F0ZSBleHRlbnNpb24gdmVyaWZpZWQuCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
Ci0KLVRFU1QgQ09NUExFVEUKLQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dv
cmtlcnMvZmlsZS13cml0ZXItc3luYy10cnVuY2F0ZS1leHRlbmQuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLXdyaXRlci1zeW5jLXRy
dW5jYXRlLWV4dGVuZC5odG1sCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLXdyaXRlci1zeW5jLXRydW5jYXRlLWV4dGVuZC5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDE3ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MPgotPGh0bWw+
Ci0gPGhlYWQ+Ci0gICAgPHRpdGxlPkZpbGUgV3JpdGVyIFN5bmMgVHJ1bmNhdGUtVG8tRXh0ZW5k
PC90aXRsZT4KLSAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KLSA8L2hlYWQ+Ci0gPGJvZHk+Ci0gICAgPGRpdiBpZD0iZGVzY3JpcHRp
b24iPjwvZGl2PgotICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgotICAgIDxzY3JpcHQ+Ci0g
ICAgICAgIHdvcmtlciA9IHN0YXJ0V29ya2VyKCIuLi9yZXNvdXJjZXMvZmlsZS13cml0ZXItc3lu
Yy10cnVuY2F0ZS1leHRlbmQuanMiKTsKLSAgICA8L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci0gPC9ib2R5Pgot
PC9odG1sPgotCi0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2Zp
bGUtd3JpdGVyLXN5bmMtd3JpdGUtb3ZlcmxhcHBlZC1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS13cml0ZXItc3luYy13
cml0ZS1vdmVybGFwcGVkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS13cml0ZXItc3luYy13cml0ZS1vdmVy
bGFwcGVkLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwxMiArMCwwIEBACi1bV29y
a2VyXSBUZXN0IHVzaW5nIEZpbGVXcml0ZXJTeW5jLnNlZWsgdG8gd3JpdGUgb3ZlcmxhcHBpbmcg
ZXhpc3RpbmcgZGF0YSBpbiBhIGZpbGUuCi0KLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQot
U3RhcnRpbmcgd29ya2VyOiAuLi9yZXNvdXJjZXMvZmlsZS13cml0ZXItc3luYy13cml0ZS1vdmVy
bGFwcGVkLmpzCi1QQVNTIFtXb3JrZXJdIE92ZXJsYXBwZWQgd3JpdGUgMSB2ZXJpZmllZC4KLVBB
U1MgW1dvcmtlcl0gT3ZlcmxhcHBlZCB3cml0ZSAyIHZlcmlmaWVkLgotUEFTUyBbV29ya2VyXSBP
dmVybGFwcGVkIHdyaXRlIDMgdmVyaWZpZWQuCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVt
L3dvcmtlcnMvZmlsZS13cml0ZXItc3luYy13cml0ZS1vdmVybGFwcGVkLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS13cml0ZXItc3lu
Yy13cml0ZS1vdmVybGFwcGVkLmh0bWwJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3Rz
L2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtd3JpdGVyLXN5bmMtd3JpdGUtb3ZlcmxhcHBl
ZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE3ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MPgot
PGh0bWw+Ci0gPGhlYWQ+Ci0gICAgPHRpdGxlPkZpbGUgV3JpdGVyIFN5bmMgVHJ1bmNhdGUtVG8t
RXh0ZW5kPC90aXRsZT4KLSAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KLSA8L2hlYWQ+Ci0gPGJvZHk+Ci0gICAgPGRpdiBpZD0iZGVz
Y3JpcHRpb24iPjwvZGl2PgotICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgotICAgIDxzY3Jp
cHQ+Ci0gICAgICAgIHdvcmtlciA9IHN0YXJ0V29ya2VyKCIuLi9yZXNvdXJjZXMvZmlsZS13cml0
ZXItc3luYy13cml0ZS1vdmVybGFwcGVkLmpzIik7Ci0gICAgPC9zY3JpcHQ+Ci0gICAgPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotIDwv
Ym9keT4KLTwvaHRtbD4KLQotCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29y
a2Vycy9maWxlLXdyaXRlci10cnVuY2F0ZS1leHRlbmQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtd3JpdGVyLXRydW5j
YXRlLWV4dGVuZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3Rz
L2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtd3JpdGVyLXRydW5jYXRlLWV4dGVuZC1leHBl
Y3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMTEgKzAsMCBAQAotW1dvcmtlcl0gVGVzdCBv
ZiBleHRlbmRpbmcgYSBmaWxlIHVzaW5nIHRydW5jYXRlKCkuCi0KLU9uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KLQotU3RhcnRpbmcgd29ya2VyOiAuLi9yZXNvdXJjZXMvZmlsZS13cml0ZXItdHJ1
bmNhdGUtZXh0ZW5kLmpzCi1bV29ya2VyXSBzdGFydGluZyB0ZXN0Ci1QQVNTIFtXb3JrZXJdIFRy
dW5jYXRlIGV4dGVuc2lvbiB2ZXJpZmllZC4KLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKLQotVEVTVCBDT01QTEVURQotCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0v
d29ya2Vycy9maWxlLXdyaXRlci10cnVuY2F0ZS1leHRlbmQuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLXdyaXRlci10cnVuY2F0ZS1l
eHRlbmQuaHRtbAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lz
dGVtL3dvcmtlcnMvZmlsZS13cml0ZXItdHJ1bmNhdGUtZXh0ZW5kLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMTcgKzAsMCBAQAotPCFET0NUWVBFIEhUTUw+Ci08aHRtbD4KLSA8aGVhZD4KLSAg
ICA8dGl0bGU+RmlsZSBXcml0ZXIgVHJ1bmNhdGUtVG8tRXh0ZW5kIFdvcmtlcjwvdGl0bGU+Ci0g
ICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Ci0gPC9oZWFkPgotIDxib2R5PgotICAgIDxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4K
LSAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KLSAgICA8c2NyaXB0PgotICAgICAgICB3b3Jr
ZXIgPSBzdGFydFdvcmtlcigiLi4vcmVzb3VyY2VzL2ZpbGUtd3JpdGVyLXRydW5jYXRlLWV4dGVu
ZC5qcyIpOwotICAgIDwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLSA8L2JvZHk+Ci08L2h0bWw+Ci0KLQpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS13cml0ZXItd3JpdGUt
b3ZlcmxhcHBlZC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9m
aWxlc3lzdGVtL3dvcmtlcnMvZmlsZS13cml0ZXItd3JpdGUtb3ZlcmxhcHBlZC1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3Jr
ZXJzL2ZpbGUtd3JpdGVyLXdyaXRlLW92ZXJsYXBwZWQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC0xLDE0ICswLDAgQEAKLVtXb3JrZXJdIFRlc3QgdXNpbmcgRmlsZVdyaXRlci5zZWVr
IHRvIHdyaXRlIG92ZXJsYXBwaW5nIGV4aXN0aW5nIGRhdGEgaW4gYSBmaWxlLgotCi1PbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCi0KLVN0YXJ0aW5nIHdvcmtlcjogLi4vcmVzb3VyY2VzL2ZpbGUt
d3JpdGVyLXdyaXRlLW92ZXJsYXBwZWQuanMKLVtXb3JrZXJdIHN0YXJ0aW5nIHRlc3QKLVBBU1Mg
W1dvcmtlcl0gTmVnYXRpdmUgc2VlayB2YWxpZGF0ZWQuCi1QQVNTIFtXb3JrZXJdIFBvc2l0aXZl
IHNlZWsgdmFsaWRhdGVkLgotUEFTUyBbV29ya2VyXSBOb25leHRlbmRpbmcgd3JpdGUgdmFsaWRh
dGVkLgotUEFTUyBbV29ya2VyXSBBbGwgd3JpdGVzIHZlcmlmaWVkLgotUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtd3JpdGVyLXdyaXRlLW92ZXJsYXBwZWQuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLXdy
aXRlci13cml0ZS1vdmVybGFwcGVkLmh0bWwJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRl
c3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtd3JpdGVyLXdyaXRlLW92ZXJsYXBwZWQu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxOCArMCwwIEBACi08IURPQ1RZUEUgSFRNTD4KLTxo
dG1sPgotIDxoZWFkPgotICAgIDx0aXRsZT5GaWxlIFdyaXRlciBXcml0ZSBPdmVybGFwcGVkIFdv
cmtlcjwvdGl0bGU+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Ci0gPC9oZWFkPgotIDxib2R5PgotICAgIDxkaXYgaWQ9ImRlc2Ny
aXB0aW9uIj48L2Rpdj4KLSAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KLSAgICA8c2NyaXB0
PgotICAgICAgICB3b3JrZXIgPSBzdGFydFdvcmtlcigiLi4vcmVzb3VyY2VzL2ZpbGUtd3JpdGVy
LXdyaXRlLW92ZXJsYXBwZWQuanMiKTsKLSAgICA8L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci0gPC9ib2R5Pgot
PC9odG1sPgotCi0KLQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMv
cmVzb3VyY2VzL2RldGFjaGVkLWZyYW1lLWNyYXNoLWZyYW1lLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvcmVzb3VyY2VzL2RldGFjaGVkLWZy
YW1lLWNyYXNoLWZyYW1lLmh0bWwJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zh
c3QvZmlsZXN5c3RlbS93b3JrZXJzL3Jlc291cmNlcy9kZXRhY2hlZC1mcmFtZS1jcmFzaC1mcmFt
ZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEwICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgot
PHNjcmlwdD4KLXZhciB3b3JrZXIgPSBuZXcgV29ya2VyKCJkZXRhY2hlZC1mcmFtZS1jcmFzaC13
b3JrZXIuanMiKTsKLXdvcmtlci5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgcmVsYXlNZXNz
YWdlKTsKLQotZnVuY3Rpb24gcmVsYXlNZXNzYWdlKGV2ZW50KQotewotICAgIHBhcmVudC5wb3N0
TWVzc2FnZShldmVudC5kYXRhLCBsb2NhdGlvbi5vcmlnaW4pOwotfQotPC9zY3JpcHQ+CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9yZXNvdXJjZXMvZGV0YWNoZWQt
ZnJhbWUtY3Jhc2gtd29ya2VyLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmls
ZXN5c3RlbS93b3JrZXJzL3Jlc291cmNlcy9kZXRhY2hlZC1mcmFtZS1jcmFzaC13b3JrZXIuanMJ
KHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJz
L3Jlc291cmNlcy9kZXRhY2hlZC1mcmFtZS1jcmFzaC13b3JrZXIuanMJKHdvcmtpbmcgY29weSkK
QEAgLTEsNyArMCwwIEBACi1wb3N0TWVzc2FnZSgiUmVhZHkiKTsKLXJ1bigpOwotCi1mdW5jdGlv
biBydW4oKQotewotICAgIHdlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKFRFTVBPUkFSWSwgMSwgcnVu
KTsKLX0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL3NpbXBsZS1w
ZXJzaXN0ZW50LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zp
bGVzeXN0ZW0vd29ya2Vycy9zaW1wbGUtcGVyc2lzdGVudC1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL3NpbXBsZS1w
ZXJzaXN0ZW50LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwxMyArMCwwIEBACi1b
V29ya2VyXSByZXF1ZXN0RmlsZVN5c3RlbSBQRVJTSVNURU5UIHRlc3QuCi0KLU9uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KLQotCi1TdGFydGluZyB3b3JrZXI6IC4uL3Jlc291cmNlcy9zaW1wbGUt
cGVyc2lzdGVudC5qcwotW1dvcmtlcl0gU3VjY2Vzc2Z1bGx5IG9idGFpbmVkIFBFUlNJU1RFTlQg
RmlsZVN5c3RlbTpmaWxlX18wOlBlcnNpc3RlbnQKLVBBU1MgW1dvcmtlcl0gZmlsZVN5c3RlbS5u
YW1lLmxlbmd0aCA+IDAgaXMgdHJ1ZQotUEFTUyBbV29ya2VyXSBmaWxlU3lzdGVtLnJvb3QuZnVs
bFBhdGggaXMgIi8iCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09N
UExFVEUKLQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc2ltcGxl
LXBlcnNpc3RlbnQtc3luYy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc2ltcGxlLXBlcnNpc3RlbnQtc3luYy1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3Jr
ZXJzL3NpbXBsZS1wZXJzaXN0ZW50LXN5bmMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC0xLDEzICswLDAgQEAKLVtXb3JrZXJdIHdlYmtpdFJlcXVlc3RGaWxlU3lzdGVtU3luYyBQRVJT
SVNURU5UIHRlc3QuCi0KLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQotCi1TdGFydGluZyB3
b3JrZXI6IC4uL3Jlc291cmNlcy9zaW1wbGUtcGVyc2lzdGVudC1zeW5jLmpzCi1bV29ya2VyXSBT
dWNjZXNzZnVsbHkgb2J0YWluZWQgUEVSU0lTVEVOVCBGaWxlU3lzdGVtOmZpbGVfXzA6UGVyc2lz
dGVudAotUEFTUyBbV29ya2VyXSBmaWxlU3lzdGVtLm5hbWUubGVuZ3RoID4gMCBpcyB0cnVlCi1Q
QVNTIFtXb3JrZXJdIGZpbGVTeXN0ZW0ucm9vdC5mdWxsUGF0aCBpcyAiLyIKLVBBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zaW1wbGUtcGVyc2lzdGVudC1zeW5jLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc2ltcGxlLXBl
cnNpc3RlbnQtc3luYy5odG1sCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2ZpbGVzeXN0ZW0vd29ya2Vycy9zaW1wbGUtcGVyc2lzdGVudC1zeW5jLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMTIgKzAsMCBAQAotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+
Ci08c2NyaXB0Pgotd29ya2VyID0gc3RhcnRXb3JrZXIoJy4uL3Jlc291cmNlcy9zaW1wbGUtcGVy
c2lzdGVudC1zeW5jLmpzJyk7Ci08L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KLQpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc2ltcGxlLXBlcnNpc3RlbnQu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9z
aW1wbGUtcGVyc2lzdGVudC5odG1sCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zaW1wbGUtcGVyc2lzdGVudC5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDExICswLDAgQEAKLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5Pgot
PHNjcmlwdD4KLXdvcmtlciA9IHN0YXJ0V29ya2VyKCcuLi9yZXNvdXJjZXMvc2ltcGxlLXBlcnNp
c3RlbnQuanMnKTsKLTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc2ltcGxlLXRlbXBvcmFyeS1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc2lt
cGxlLXRlbXBvcmFyeS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRl
c3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL3NpbXBsZS10ZW1wb3JhcnktZXhwZWN0ZWQudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDEzICswLDAgQEAKLVtXb3JrZXJdIHJlcXVlc3RGaWxlU3lz
dGVtIFRFTVBPUkFSWSB0ZXN0LgotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLQotU3Rh
cnRpbmcgd29ya2VyOiAuLi9yZXNvdXJjZXMvc2ltcGxlLXRlbXBvcmFyeS5qcwotW1dvcmtlcl0g
U3VjY2Vzc2Z1bGx5IG9idGFpbmVkIFRFTVBPUkFSWSBGaWxlU3lzdGVtOmZpbGVfXzA6VGVtcG9y
YXJ5Ci1QQVNTIFtXb3JrZXJdIGZpbGVTeXN0ZW0ubmFtZS5sZW5ndGggPiAwIGlzIHRydWUKLVBB
U1MgW1dvcmtlcl0gZmlsZVN5c3RlbS5yb290LmZ1bGxQYXRoIGlzICIvIgotUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL3NpbXBsZS10ZW1wb3Jhcnktc3luYy1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc2lt
cGxlLXRlbXBvcmFyeS1zeW5jLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc2ltcGxlLXRlbXBvcmFyeS1zeW5jLWV4
cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwxMyArMCwwIEBACi1bV29ya2VyXSByZXF1
ZXN0RmlsZVN5c3RlbVN5bmMgVEVNUE9SQVJZIHRlc3QuCi0KLU9uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KLQotCi1TdGFydGluZyB3b3JrZXI6IC4uL3Jlc291cmNlcy9zaW1wbGUtdGVtcG9yYXJ5
LXN5bmMuanMKLVtXb3JrZXJdIFN1Y2Nlc3NmdWxseSBvYnRhaW5lZCBURU1QT1JBUlkgRmlsZVN5
c3RlbTpmaWxlX18wOlRlbXBvcmFyeQotUEFTUyBbV29ya2VyXSBmaWxlU3lzdGVtLm5hbWUubGVu
Z3RoID4gMCBpcyB0cnVlCi1QQVNTIFtXb3JrZXJdIGZpbGVTeXN0ZW0ucm9vdC5mdWxsUGF0aCBp
cyAiLyIKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQot
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zaW1wbGUtdGVtcG9y
YXJ5LXN5bmMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0v
d29ya2Vycy9zaW1wbGUtdGVtcG9yYXJ5LXN5bmMuaHRtbAkocmV2aXNpb24gMTU2NjkxKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc2ltcGxlLXRlbXBvcmFyeS1zeW5j
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTIgKzAsMCBAQAotPGh0bWw+Ci08aGVhZD4KLTxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgot
PC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0Pgotd29ya2VyID0gc3RhcnRXb3JrZXIoJy4uL3Jlc291
cmNlcy9zaW1wbGUtdGVtcG9yYXJ5LXN5bmMuanMnKTsKLTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5Pgot
PC9odG1sPgotCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zaW1w
bGUtdGVtcG9yYXJ5Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lz
dGVtL3dvcmtlcnMvc2ltcGxlLXRlbXBvcmFyeS5odG1sCShyZXZpc2lvbiAxNTY2OTEpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zaW1wbGUtdGVtcG9yYXJ5Lmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMTEgKzAsMCBAQAotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPC9oZWFk
PgotPGJvZHk+Ci08c2NyaXB0Pgotd29ya2VyID0gc3RhcnRXb3JrZXIoJy4uL3Jlc291cmNlcy9z
aW1wbGUtdGVtcG9yYXJ5LmpzJyk7Ci08L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL3N5bmMtb3BlcmF0aW9ucy1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dv
cmtlcnMvc3luYy1vcGVyYXRpb25zLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTU2NjkxKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc3luYy1vcGVyYXRpb25zLWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwxMiArMCwwIEBACi1bV29ya2VyXSBUZXN0IG1h
a2luZyBtdWx0aXBsZSBzeW5jaHJvbm91cyBGaWxlU3lzdGVtIG9wZXJhdGlvbnMuCi0KLU9uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KLQotCi1TdGFydGluZyB3b3JrZXI6IC4uL3Jlc291cmNlcy9z
eW5jLW9wZXJhdGlvbnMuanMKLVBBU1MgW1dvcmtlcl0gIi9hLC9iLC9jLC9kMiwvZSwvZiIgaXMg
Ii9hLC9iLC9jLC9kMiwvZSwvZiIKLVBBU1MgW1dvcmtlcl0gZGlyc0NvdW50IGlzIDMKLVBBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zeW5jLW9wZXJhdGlvbnMuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zeW5jLW9wZXJh
dGlvbnMuaHRtbAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lz
dGVtL3dvcmtlcnMvc3luYy1vcGVyYXRpb25zLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTIg
KzAsMCBAQAotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0Pgotd29y
a2VyID0gc3RhcnRXb3JrZXIoJy4uL3Jlc291cmNlcy9zeW5jLW9wZXJhdGlvbnMuanMnKTsKLTwv
c2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgotCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zp
bGVzeXN0ZW0vcmVzb3VyY2VzL2FzeW5jLW9wZXJhdGlvbnMuanMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9hc3luYy1vcGVyYXRpb25zLmpzCShy
ZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2Vz
L2FzeW5jLW9wZXJhdGlvbnMuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsMTA2ICswLDAgQEAKLWlm
ICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKLSAgICBpbXBvcnRTY3JpcHRzKCcuLi9yZXNvdXJjZXMv
ZnMtd29ya2VyLWNvbW1vbi5qcycpOwotICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcycpOwotICAgIGltcG9ydFNjcmlwdHMoJy4uL3Jlc291cmNlcy9m
cy10ZXN0LXV0aWwuanMnKTsKLX0KLQotZGVzY3JpcHRpb24oIlRlc3QgbWFraW5nIG11bHRpcGxl
IGFzeW5jIEZpbGVTeXN0ZW0gb3BlcmF0aW9ucy4iKTsKLQotdmFyIGZpbGVTeXN0ZW0gPSBudWxs
OwotCi12YXIgYTsKLXZhciBiOwotdmFyIGM7Ci12YXIgZDsKLQotdmFyIHBhdGhzID0gW107Ci12
YXIgZGlyc0NvdW50ID0gMDsKLXZhciByZWFkZXIgPSBudWxsOwotCi1mdW5jdGlvbiBlcnJvckNh
bGxiYWNrKGVycm9yKSB7Ci0gICAgZGVidWcoIkdvdCBlcnJvcjogIiArIGVycm9yLmNvZGUpOwot
ICAgIHJlbW92ZUFsbEluRGlyZWN0b3J5KGZpbGVTeXN0ZW0ucm9vdCk7Ci0gICAgZmluaXNoSlNU
ZXN0KCk7Ci19Ci0KLWZ1bmN0aW9uIGVudHJpZXNDYWxsYmFjayhlbnRyaWVzKSB7Ci0gICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBlbnRyaWVzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgIHBhdGhzLnB1
c2goZW50cmllc1tpXS5mdWxsUGF0aCk7Ci0gICAgICAgIGlmIChlbnRyaWVzW2ldLmlzRGlyZWN0
b3J5KQotICAgICAgICAgICAgZGlyc0NvdW50Kys7Ci0gICAgfQotICAgIGlmICghZW50cmllcy5s
ZW5ndGgpIHsKLSAgICAgICAgcmVhZGVyLnJlYWRFbnRyaWVzKGVudHJpZXNDYWxsYmFjaywgZXJy
b3JDYWxsYmFjayk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgcGF0aHMuc29ydCgpOwotICAgICAg
ICBzaG91bGRCZSgnIicgKyBwYXRocy5qb2luKCcsJykgKyAnIicsICciL2EsL2IsL2MsL2QyLC9l
LC9mIicpOwotICAgICAgICBzaG91bGRCZSgiZGlyc0NvdW50IiwgIjMiKTsKLSAgICAgICAgcmVt
b3ZlQWxsSW5EaXJlY3RvcnkoZmlsZVN5c3RlbS5yb290KTsKLSAgICAgICAgZmluaXNoSlNUZXN0
KCk7Ci0gICAgfQotfQotCi1mdW5jdGlvbiB2ZXJpZnkoKSB7Ci0gICAgZGVidWcoIlZlcmlmeWlu
ZyB0aGUgRmlsZVN5c3RlbSBzdGF0dXMuIik7Ci0gICAgcmVhZGVyID0gZmlsZVN5c3RlbS5yb290
LmNyZWF0ZVJlYWRlcigpOwotICAgIHJlYWRlci5yZWFkRW50cmllcyhlbnRyaWVzQ2FsbGJhY2ss
IGVycm9yQ2FsbGJhY2spOwotfQotCi1mdW5jdGlvbiBhc3luY1Rlc3QyKCkgewotICAgIGRlYnVn
KCJTdGFydGluZyBhc3luYyB0ZXN0IHN0YWdlIDIuIik7Ci0KLSAgICB2YXIgaGVscGVyID0gbmV3
IEpvaW5IZWxwZXIoKTsKLSAgICB2YXIgZG9uZSA9IGZ1bmN0aW9uKCkgeyBoZWxwZXIuZG9uZSgp
OyB9OwotCi0gICAgaGVscGVyLnJ1bihmdW5jdGlvbigpIHsgYS5jb3B5VG8oYiwgJ3RtcCcsIGRv
bmUsIGVycm9yQ2FsbGJhY2spOyB9KTsKLSAgICBoZWxwZXIucnVuKGZ1bmN0aW9uKCkgeyBhLmdl
dE1ldGFkYXRhKGRvbmUsIGVycm9yQ2FsbGJhY2spOyB9KTsKLSAgICBoZWxwZXIucnVuKGZ1bmN0
aW9uKCkgeyBiLmdldFBhcmVudChkb25lLCBlcnJvckNhbGxiYWNrKTsgfSk7Ci0gICAgaGVscGVy
LnJ1bihmdW5jdGlvbigpIHsgYy5jb3B5VG8oZmlsZVN5c3RlbS5yb290LCAnZicsIGRvbmUsIGVy
cm9yQ2FsbGJhY2spOyB9KTsKLSAgICBoZWxwZXIucnVuKGZ1bmN0aW9uKCkgeyBkLm1vdmVUbyhm
aWxlU3lzdGVtLnJvb3QsICdkMicsIGRvbmUsIGVycm9yQ2FsbGJhY2spOyB9KTsKLSAgICBoZWxw
ZXIucnVuKGZ1bmN0aW9uKCkgeyBmaWxlU3lzdGVtLnJvb3QuZ2V0RmlsZSgnZScsIHtjcmVhdGU6
dHJ1ZX0sIGRvbmUsIGVycm9yQ2FsbGJhY2spOyB9KTsKLQotICAgIGhlbHBlci5qb2luKHZlcmlm
eSk7Ci19Ci0KLWZ1bmN0aW9uIGFzeW5jVGVzdDEoKSB7Ci0gICAgZGVidWcoIlN0YXJ0aW5nIGFz
eW5jIHRlc3Qgc3RhZ2UgMS4iKTsKLQotICAgIHZhciBoZWxwZXIgPSBuZXcgSm9pbkhlbHBlcigp
OwotICAgIHZhciByb290ID0gZmlsZVN5c3RlbS5yb290OwotCi0gICAgaGVscGVyLnJ1bihmdW5j
dGlvbigpIHsgcm9vdC5nZXRGaWxlKCdhJywge2NyZWF0ZTp0cnVlfSwgZnVuY3Rpb24oZW50cnkp
IHsKLSAgICAgICAgYSA9IGVudHJ5OwotICAgICAgICBoZWxwZXIuZG9uZSgpOwotICAgIH0sIGVy
cm9yQ2FsbGJhY2spOyB9KTsKLQotICAgIGhlbHBlci5ydW4oZnVuY3Rpb24oKSB7IHJvb3QuZ2V0
RGlyZWN0b3J5KCdiJywge2NyZWF0ZTp0cnVlfSwgZnVuY3Rpb24oZW50cnkpIHsKLSAgICAgICAg
YiA9IGVudHJ5OwotICAgICAgICBoZWxwZXIuZG9uZSgpOwotICAgIH0sIGVycm9yQ2FsbGJhY2sp
OyB9KTsKLQotICAgIGhlbHBlci5ydW4oZnVuY3Rpb24oKSB7IHJvb3QuZ2V0RGlyZWN0b3J5KCdj
Jywge2NyZWF0ZTp0cnVlfSwgZnVuY3Rpb24oZW50cnkpIHsKLSAgICAgICAgYyA9IGVudHJ5Owot
ICAgICAgICBoZWxwZXIuZG9uZSgpOwotICAgIH0sIGVycm9yQ2FsbGJhY2spOyB9KTsKLQotICAg
IGhlbHBlci5ydW4oZnVuY3Rpb24oKSB7IHJvb3QuZ2V0RmlsZSgnZCcsIHtjcmVhdGU6dHJ1ZX0s
IGZ1bmN0aW9uKGVudHJ5KSB7Ci0gICAgICAgIGQgPSBlbnRyeTsKLSAgICAgICAgaGVscGVyLmRv
bmUoKTsKLSAgICB9LCBlcnJvckNhbGxiYWNrKTsgfSk7Ci0KLSAgICBoZWxwZXIuam9pbihhc3lu
Y1Rlc3QyKTsKLX0KLQotaWYgKHRoaXMud2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0pIHsKLSAgICBq
c1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLSAgICB2YXIgaGVscGVyID0gbmV3IEpvaW5IZWxwZXIoKTsK
LSAgICBoZWxwZXIucnVuKGZ1bmN0aW9uKCkgewotICAgIHdlYmtpdFJlcXVlc3RGaWxlU3lzdGVt
LmFwcGx5KHRoaXMsIFt0aGlzLlRFTVBPUkFSWSwgMTAwLCBmdW5jdGlvbihmcykgewotICAgICAg
ICBkZWJ1ZygiR290IEZpbGVTeXN0ZW06IiArIGZzLm5hbWUpOwotICAgICAgICBmaWxlU3lzdGVt
ID0gZnM7Ci0gICAgICAgIHJlbW92ZUFsbEluRGlyZWN0b3J5KGZpbGVTeXN0ZW0ucm9vdCwgZnVu
Y3Rpb24oKXsgaGVscGVyLmRvbmUoKTsgfSwgZXJyb3JDYWxsYmFjayk7Ci0gICAgfSwgZXJyb3JD
YWxsYmFja10pOyB9KTsKLSAgICBkZWJ1ZygicmVxdWVzdGVkIEZpbGVTeXN0ZW0uIik7Ci0gICAg
aGVscGVyLmpvaW4oYXN5bmNUZXN0MSk7Ci19IGVsc2UKLSAgICBkZWJ1ZygiVGhpcyB0ZXN0IHJl
cXVpcmVzIEZpbGVTeXN0ZW0gQVBJIHN1cHBvcnQuIik7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2RpcmVjdG9yeS1lbnRyeS10by11cmkuanMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9kaXJlY3RvcnktZW50
cnktdG8tdXJpLmpzCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVz
eXN0ZW0vcmVzb3VyY2VzL2RpcmVjdG9yeS1lbnRyeS10by11cmkuanMJKHdvcmtpbmcgY29weSkK
QEAgLTEsMzQgKzAsMCBAQAotaWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgewotICAgIGltcG9ydFNj
cmlwdHMoJ2ZzLXdvcmtlci1jb21tb24uanMnKTsKLSAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKLSAgICBpbXBvcnRTY3JpcHRzKCdmcy10ZXN0
LXV0aWwuanMnKTsKLX0KLQotZGVzY3JpcHRpb24oIk9idGFpbmluZyBVUkwgZnJvbSBEaXJlY3Rv
cnlFbnRyeS4iKTsKLQotdmFyIGZpbGVTeXN0ZW0gPSBudWxsOwotdmFyIHRlc3REaXJlY3RvcnlO
YW1lID0gJ3Rlc3REaXJlY3RvcnknOwotdmFyIHRlc3REaXJlY3RvcnlVUkkgPSBudWxsOwotCi1m
dW5jdGlvbiBlcnJvckNhbGxiYWNrKGVycm9yKSB7Ci0gICAgdGVzdEZhaWxlZCgiRXJyb3Igb2Nj
dXJlZDoiICsgZXJyb3IuY29kZSk7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLWZ1bmN0aW9u
IGVudHJ5VG9VUkwoZW50cnkpIHsKLSAgICB0ZXN0RGlyZWN0b3J5VVJMID0gZW50cnkudG9VUkwo
KTsKLSAgICBzaG91bGRCZSgidGVzdERpcmVjdG9yeVVSTCIsICInZmlsZXN5c3RlbTpmaWxlOi8v
L3RlbXBvcmFyeS90ZXN0RGlyZWN0b3J5JyIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi1m
dW5jdGlvbiBjcmVhdGVUZXN0RGlyZWN0b3J5KCkgewotICAgIGZpbGVTeXN0ZW0ucm9vdC5nZXRE
aXJlY3RvcnkodGVzdERpcmVjdG9yeU5hbWUsIHtjcmVhdGU6dHJ1ZX0sIGVudHJ5VG9VUkwsIGVy
cm9yQ2FsbGJhY2spOwotfQotCi1mdW5jdGlvbiBmaWxlU3lzdGVtQ2FsbGJhY2soZnMpIHsKLSAg
ICBmaWxlU3lzdGVtID0gZnM7Ci0gICAgcmVtb3ZlQWxsSW5EaXJlY3RvcnkoZmlsZVN5c3RlbS5y
b290LCBjcmVhdGVUZXN0RGlyZWN0b3J5LCBlcnJvckNhbGxiYWNrKTsKLX0KLQotdmFyIGpzVGVz
dElzQXN5bmMgPSB0cnVlOwotd2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0oVEVNUE9SQVJZLCAxMDAs
IGZpbGVTeXN0ZW1DYWxsYmFjaywgZXJyb3JDYWxsYmFjayk7CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZpbGUtZW50cnktdG8tdXJpLXN5bmMuanMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9maWxlLWVudHJ5
LXRvLXVyaS1zeW5jLmpzCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zp
bGVzeXN0ZW0vcmVzb3VyY2VzL2ZpbGUtZW50cnktdG8tdXJpLXN5bmMuanMJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMTUgKzAsMCBAQAotaW1wb3J0U2NyaXB0cygnZnMtd29ya2VyLWNvbW1vbi5qcycp
OwotaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7Ci0K
LWRlc2NyaXB0aW9uKCJPYnRhaW5pbmcgVVJMIGZyb20gRmlsZUVudHJ5LiIpOwotCi12YXIgZmls
ZVN5c3RlbSA9IHdlYmtpdFJlcXVlc3RGaWxlU3lzdGVtU3luYyhURU1QT1JBUlksIDEwMCk7Ci1y
ZW1vdmVBbGxJbkRpcmVjdG9yeVN5bmMoZmlsZVN5c3RlbS5yb290KTsKLQotdmFyIHRlc3RGaWxl
TmFtZSA9ICd0ZXN0RmlsZUVudHJ5LnR4dCc7Ci12YXIgdGVzdEZpbGVFbnRyeSA9IGZpbGVTeXN0
ZW0ucm9vdC5nZXRGaWxlKHRlc3RGaWxlTmFtZSwge2NyZWF0ZTp0cnVlfSk7Ci0KLXNob3VsZEJl
KCJ0ZXN0RmlsZUVudHJ5LnRvVVJMKCkiLCAiJ2ZpbGVzeXN0ZW06ZmlsZTovLy90ZW1wb3Jhcnkv
dGVzdEZpbGVFbnRyeS50eHQnIik7Ci0KLXJlbW92ZUFsbEluRGlyZWN0b3J5U3luYyhmaWxlU3lz
dGVtLnJvb3QpOwotZmluaXNoSlNUZXN0KCk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVz
eXN0ZW0vcmVzb3VyY2VzL2ZpbGUtZW50cnktdG8tdXJpLmpzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS1lbnRyeS10by11cmkuanMJKHJl
dmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMv
ZmlsZS1lbnRyeS10by11cmkuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsMzQgKzAsMCBAQAotaWYg
KHRoaXMuaW1wb3J0U2NyaXB0cykgewotICAgIGltcG9ydFNjcmlwdHMoJ2ZzLXdvcmtlci1jb21t
b24uanMnKTsKLSAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMnKTsKLSAgICBpbXBvcnRTY3JpcHRzKCdmcy10ZXN0LXV0aWwuanMnKTsKLX0KLQotZGVz
Y3JpcHRpb24oIk9idGFpbmluZyBVUkwgZnJvbSBGaWxlRW50cnkuIik7Ci0KLXZhciBmaWxlU3lz
dGVtID0gbnVsbDsKLXZhciB0ZXN0RmlsZU5hbWUgPSAndGVzdEZpbGVFbnRyeS50eHQnOwotdmFy
IHRlc3RGaWxlVVJJID0gbnVsbDsKLQotZnVuY3Rpb24gZXJyb3JDYWxsYmFjayhlcnJvcikgewot
ICAgIHRlc3RGYWlsZWQoIkVycm9yIG9jY3VyZWQ6IiArIGVycm9yLmNvZGUpOwotICAgIGZpbmlz
aEpTVGVzdCgpOwotfQotCi1mdW5jdGlvbiBlbnRyeVRvVVJMKGVudHJ5KSB7Ci0gICAgdGVzdEZp
bGVVUkwgPSBlbnRyeS50b1VSTCgpOwotICAgIHNob3VsZEJlKCJ0ZXN0RmlsZVVSTCIsICInZmls
ZXN5c3RlbTpmaWxlOi8vL3RlbXBvcmFyeS90ZXN0RmlsZUVudHJ5LnR4dCciKTsKLSAgICBmaW5p
c2hKU1Rlc3QoKTsKLX0KLQotZnVuY3Rpb24gY3JlYXRlVGVzdEZpbGUoKSB7Ci0gICAgZmlsZVN5
c3RlbS5yb290LmdldEZpbGUodGVzdEZpbGVOYW1lLCB7Y3JlYXRlOnRydWV9LCBlbnRyeVRvVVJM
LCBlcnJvckNhbGxiYWNrKTsKLX0KLQotZnVuY3Rpb24gZmlsZVN5c3RlbUNhbGxiYWNrKGZzKSB7
Ci0gICAgZmlsZVN5c3RlbSA9IGZzOwotICAgIHJlbW92ZUFsbEluRGlyZWN0b3J5KGZpbGVTeXN0
ZW0ucm9vdCwgY3JlYXRlVGVzdEZpbGUsIGVycm9yQ2FsbGJhY2spOwotfQotCi12YXIganNUZXN0
SXNBc3luYyA9IHRydWU7Ci13ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbShURU1QT1JBUlksIDEwMCwg
ZmlsZVN5c3RlbUNhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS1mcm9tLWZpbGUtZW50cnktc3luYy5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZpbGUtZnJv
bS1maWxlLWVudHJ5LXN5bmMuanMJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zh
c3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS1mcm9tLWZpbGUtZW50cnktc3luYy5qcwkod29y
a2luZyBjb3B5KQpAQCAtMSwyMCArMCwwIEBACi0vLyBGSVhNRTogbW92ZSB0aGlzIHVuZGVyIHdv
cmtlcnMvcmVzb3VyY2VzCi1pbXBvcnRTY3JpcHRzKCdmcy13b3JrZXItY29tbW9uLmpzJyk7Ci1p
bXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKLQotZGVz
Y3JpcHRpb24oIk9idGFpbmluZyBGaWxlIGZyb20gRmlsZUVudHJ5U3luYy4iKTsKLQotdmFyIGZp
bGVTeXN0ZW0gPSB3ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbVN5bmModGhpcy5URU1QT1JBUlksIDEw
MCk7Ci1yZW1vdmVBbGxJbkRpcmVjdG9yeVN5bmMoZmlsZVN5c3RlbS5yb290KTsKLQotdmFyIHRl
c3RGaWxlTmFtZSA9ICcvdGVzdEZpbGVFbnRyeS50eHQnOwotCi12YXIgdGVzdEZpbGVFbnRyeSA9
IGZpbGVTeXN0ZW0ucm9vdC5nZXRGaWxlKHRlc3RGaWxlTmFtZSwge2NyZWF0ZTp0cnVlfSk7Ci12
YXIgdGVzdEZpbGUgPSB0ZXN0RmlsZUVudHJ5LmZpbGUoKTsKLQotc2hvdWxkQmUoInRlc3RGaWxl
Lm5hbWUiLCAidGVzdEZpbGVFbnRyeS5uYW1lIik7Ci1zaG91bGRCZSgidGVzdEZpbGUudHlwZSIs
ICIndGV4dC9wbGFpbiciKTsKLXNob3VsZEJlKCJ0ZXN0RmlsZS5zaXplIiwgIjAiKTsKLQotcmVt
b3ZlQWxsSW5EaXJlY3RvcnlTeW5jKGZpbGVTeXN0ZW0ucm9vdCk7Ci1maW5pc2hKU1Rlc3QoKTsK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS1mcm9tLWZp
bGUtZW50cnkuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jl
c291cmNlcy9maWxlLWZyb20tZmlsZS1lbnRyeS5qcwkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9maWxlLWZyb20tZmlsZS1lbnRyeS5q
cwkod29ya2luZyBjb3B5KQpAQCAtMSw0MiArMCwwIEBACi1pZiAodGhpcy5pbXBvcnRTY3JpcHRz
KSB7Ci0gICAgaW1wb3J0U2NyaXB0cygnZnMtd29ya2VyLWNvbW1vbi5qcycpOwotICAgIGltcG9y
dFNjcmlwdHMoJy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOwotICAgIGltcG9y
dFNjcmlwdHMoJ2ZzLXRlc3QtdXRpbC5qcycpOwotfQotCi1kZXNjcmlwdGlvbigiT2J0YWluaW5n
IEZpbGUgZnJvbSBGaWxlRW50cnkuIik7Ci0KLXZhciBmaWxlU3lzdGVtID0gbnVsbDsKLXZhciB0
ZXN0RmlsZU5hbWUgPSAnL3Rlc3RGaWxlRW50cnkudHh0JzsKLXZhciB0ZXN0RmlsZUVudHJ5ID0g
bnVsbDsKLXZhciB0ZXN0RmlsZSA9IG51bGw7Ci0KLWZ1bmN0aW9uIGVycm9yQ2FsbGJhY2soZXJy
b3IpIHsKLSAgICB0ZXN0RmFpbGVkKCJFcnJvciBvY2N1cmVkOiIgKyBlcnJvci5jb2RlKTsKLSAg
ICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotZnVuY3Rpb24gZmlsZUNhbGxiYWNrKGZpbGUpIHsKLSAg
ICB0ZXN0RmlsZSA9IGZpbGU7Ci0gICAgc2hvdWxkQmUoInRlc3RGaWxlLm5hbWUiLCAidGVzdEZp
bGVFbnRyeS5uYW1lIik7Ci0gICAgc2hvdWxkQmUoInRlc3RGaWxlLnR5cGUiLCAiJ3RleHQvcGxh
aW4nIik7Ci0gICAgc2hvdWxkQmUoInRlc3RGaWxlLnNpemUiLCAiMCIpOwotICAgIGZpbmlzaEpT
VGVzdCgpOwotfQotCi1mdW5jdGlvbiBnZXRGaWxlRnJvbUVudHJ5KGVudHJ5KSB7Ci0gICAgdGVz
dEZpbGVFbnRyeSA9IGVudHJ5OwotICAgIGVudHJ5LmZpbGUoZmlsZUNhbGxiYWNrLCBlcnJvckNh
bGxiYWNrKTsKLX0KLQotZnVuY3Rpb24gY3JlYXRlVGVzdEZpbGUoKSB7Ci0gICAgZmlsZVN5c3Rl
bS5yb290LmdldEZpbGUodGVzdEZpbGVOYW1lLCB7Y3JlYXRlOnRydWV9LCBnZXRGaWxlRnJvbUVu
dHJ5LCBlcnJvckNhbGxiYWNrKTsKLX0KLQotZnVuY3Rpb24gZmlsZVN5c3RlbUNhbGxiYWNrKGZz
KSB7Ci0gICAgZmlsZVN5c3RlbSA9IGZzOwotICAgIHJlbW92ZUFsbEluRGlyZWN0b3J5KGZpbGVT
eXN0ZW0ucm9vdCwgY3JlYXRlVGVzdEZpbGUsIGVycm9yQ2FsbGJhY2spOwotfQotCi12YXIganNU
ZXN0SXNBc3luYyA9IHRydWU7Ci13ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbShURU1QT1JBUlksIDEw
MCwgZmlsZVN5c3RlbUNhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsKSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS13cml0ZXItYWJvcnQtY29udGludWUuanMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9maWxl
LXdyaXRlci1hYm9ydC1jb250aW51ZS5qcwkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9maWxlLXdyaXRlci1hYm9ydC1jb250aW51ZS5q
cwkod29ya2luZyBjb3B5KQpAQCAtMSwxODggKzAsMCBAQAotaWYgKHRoaXMuaW1wb3J0U2NyaXB0
cykgewotICAgIGltcG9ydFNjcmlwdHMoJ2ZzLXdvcmtlci1jb21tb24uanMnKTsKLSAgICBpbXBv
cnRTY3JpcHRzKCcuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKLSAgICBpbXBv
cnRTY3JpcHRzKCdmaWxlLXdyaXRlci11dGlscy5qcycpOwotfQotCi1kZXNjcmlwdGlvbigiVGVz
dCB0aGF0IEZpbGVXcml0ZXIgY2FuIGNvbnRpbnVlIGltbWVkaWF0ZWx5IGFmdGVyIGFuIGFib3J0
LiIpOwotCi12YXIgc2F3V3JpdGVTdGFydDsKLXZhciBzYXdBYm9ydDsKLXZhciBzYXdXcml0ZUVu
ZDsKLXZhciB3cml0ZXI7Ci12YXIgZXhwZWN0ZWRMZW5ndGg7Ci12YXIgdHJ1bmNhdGVMZW5ndGg7
Ci12YXIgYmxvYlNpemUgPSAxMTAwMDAwOwotdmFyIGN1cnJlbnRUZXN0ID0gMDsKLXZhciBibG9i
ID0gZ2V0QmxvYigpOwotCi0vLyBmaWxlU3lzdGVtT3ZlcmhlYWQgaXMgYW4gZXN0aW1hdGUgb2Yg
ZXh0cmEgc2l6ZSBuZWVkZWQgdG8gc2F2ZSBhIGZ1bGwgZmlsZQotLy8gc3lzdGVtLCBpdCBuZWVk
IHRvIGJlIGxhcmdlIGVub3VnaCB0byBhdm9pZCB0ZXN0IGZhaWx1cmUgZHVlIHRvIGZpbGUgc3lz
dGVtCi0vLyBxdW90YSBsaW1pdC4KLXZhciBmaWxlU3lzdGVtT3ZlcmhlYWQgPSBibG9iU2l6ZSAq
IDUgLyAxMDAwICsgMTAyNDsKLXZhciBmaWxlU3lzdGVtU2l6ZSA9IGJsb2JTaXplICogMiArIGZp
bGVTeXN0ZW1PdmVyaGVhZDsKLQotdmFyIG1ldGhvZFNldCA9IFsKLSAgeyAgLy8gU2V0dXAgbWV0
aG9kIHNldCB0aGF0IHdyaXRlcywgdGhlbiBhYm9ydHMgdGhhdCB3cml0ZSBiZWZvcmUgY29tcGxl
dGlvbi4KLSAgICBhY3Rpb24gOiBzdGFydFdyaXRlLAotICAgIHZlcmlmeUxlbmd0aCA6IDAsCi0g
ICAgb253cml0ZXN0YXJ0IDogYWJvcnRXcml0ZSwKLSAgICBvbnByb2dyZXNzIDogbm9wLAotICAg
IG9ud3JpdGUgOiBvbkVycm9yLAotICAgIG9uYWJvcnQgOiBsb2dBYm9ydCwKLSAgICBvbndyaXRl
ZW5kIDogY2hlY2tMZW5ndGhBbmRTdGFydE5leHRUZXN0Ci0gIH0sCi0gIHsgIC8vIE1ldGhvZCBz
ZXQgdGhhdCBkb2VzIGEgY29tcGxldGUgd3JpdGUuCi0gICAgYWN0aW9uIDogc3RhcnRXcml0ZSwK
LSAgICB2ZXJpZnlMZW5ndGggOiBibG9iU2l6ZSwKLSAgICBvbndyaXRlc3RhcnQgOiBub3AsCi0g
ICAgb25wcm9ncmVzcyA6IG5vcCwKLSAgICBvbndyaXRlIDogbm9wLAotICAgIG9uYWJvcnQgOiBv
bkVycm9yLAotICAgIG9ud3JpdGVlbmQgOiBjaGVja0xlbmd0aEFuZFN0YXJ0TmV4dFRlc3QKLSAg
fSwKLSAgeyAvLyBNZXRob2Qgc2V0IHRoYXQgZG9lcyBhIGNvbXBsZXRlIHRydW5jYXRlLCBqdXN0
IHRvIGNsZWFuIHVwLgotICAgIGFjdGlvbiA6IHN0YXJ0VHJ1bmNhdGUsCi0gICAgdHJ1bmNhdGVM
ZW5ndGggOiAwLAotICAgIHZlcmlmeUxlbmd0aCA6IDAsCi0gICAgb253cml0ZXN0YXJ0IDogbm9w
LAotICAgIG9ucHJvZ3Jlc3MgOiBub3AsCi0gICAgb253cml0ZSA6IG5vcCwKLSAgICBvbmFib3J0
IDogb25FcnJvciwKLSAgICBvbndyaXRlZW5kIDogY2hlY2tMZW5ndGhBbmRTdGFydE5leHRUZXN0
Ci0gIH0sCi0gIHsgIC8vIFNldHVwIG1ldGhvZCBzZXQgdGhhdCB3cml0ZXMsIHRoZW4gYWJvcnRz
IHRoYXQgd3JpdGUganVzdCBhdCBjb21wbGV0aW9uLgotICAgIGFjdGlvbiA6IHN0YXJ0V3JpdGUs
Ci0gICAgdmVyaWZ5TGVuZ3RoIDogYmxvYlNpemUsCi0gICAgb253cml0ZXN0YXJ0IDogbm9wLAot
ICAgIG9ucHJvZ3Jlc3MgOiBhYm9ydE9uQ29tcGxldGUsCi0gICAgb253cml0ZSA6IG5vcCwKLSAg
ICBvbmFib3J0IDogbG9nQWJvcnQsCi0gICAgb253cml0ZWVuZCA6IGNoZWNrTGVuZ3RoQW5kU3Rh
cnROZXh0VGVzdAotICB9LAotICB7ICAvLyBNZXRob2Qgc2V0IHRoYXQgZG9lcyBhIGNvbXBsZXRl
IHdyaXRlLgotICAgIGFjdGlvbiA6IHN0YXJ0V3JpdGUsCi0gICAgdmVyaWZ5TGVuZ3RoIDogYmxv
YlNpemUgKiAyLCAvLyBBZGQgaW4gbGVmdG92ZXJzIGZyb20gcHJldmlvdXMgbWV0aG9kLgotICAg
IG9ud3JpdGVzdGFydCA6IG5vcCwKLSAgICBvbnByb2dyZXNzIDogbm9wLAotICAgIG9ud3JpdGUg
OiBub3AsCi0gICAgb25hYm9ydCA6IG9uRXJyb3IsCi0gICAgb253cml0ZWVuZCA6IGNoZWNrTGVu
Z3RoQW5kU3RhcnROZXh0VGVzdAotICB9LAotICB7IC8vIE1ldGhvZCBzZXQgdGhhdCBkb2VzIGEg
Y29tcGxldGUgdHJ1bmNhdGUsIGp1c3QgdG8gY2xlYW4gdXAuCi0gICAgYWN0aW9uIDogc3RhcnRU
cnVuY2F0ZSwKLSAgICB0cnVuY2F0ZUxlbmd0aCA6IDAsCi0gICAgdmVyaWZ5TGVuZ3RoIDogMCwK
LSAgICBvbndyaXRlc3RhcnQgOiBub3AsCi0gICAgb25wcm9ncmVzcyA6IG5vcCwKLSAgICBvbndy
aXRlIDogbm9wLAotICAgIG9uYWJvcnQgOiBvbkVycm9yLAotICAgIG9ud3JpdGVlbmQgOiBjaGVj
a0xlbmd0aEFuZFN0YXJ0TmV4dFRlc3QKLSAgfSwKLSAgeyAgLy8gU2V0dXAgbWV0aG9kIHNldCB0
aGF0IHdyaXRlcywgdGhlbiBhYm9ydHMgdGhhdCB3cml0ZSBhcyBpdCBzdGFydHMuCi0gICAgYWN0
aW9uIDogc3RhcnRXcml0ZSwKLSAgICB2ZXJpZnlMZW5ndGggOiAwLAotICAgIG9ud3JpdGVzdGFy
dCA6IGFib3J0V3JpdGUsCi0gICAgb25wcm9ncmVzcyA6IG5vcCwKLSAgICBvbndyaXRlIDogb25F
cnJvciwKLSAgICBvbmFib3J0IDogbG9nQWJvcnQsCi0gICAgb253cml0ZWVuZCA6IGNoZWNrTGVu
Z3RoQW5kU3RhcnROZXh0VGVzdAotICB9LAotICB7IC8vIE1ldGhvZCBzZXQgdGhhdCBkb2VzIGEg
Y29tcGxldGUgdHJ1bmNhdGUuCi0gICAgYWN0aW9uIDogc3RhcnRUcnVuY2F0ZSwKLSAgICB0cnVu
Y2F0ZUxlbmd0aCA6IDcsCi0gICAgdmVyaWZ5TGVuZ3RoIDogNywKLSAgICBvbndyaXRlc3RhcnQg
OiBub3AsCi0gICAgb25wcm9ncmVzcyA6IG5vcCwKLSAgICBvbndyaXRlIDogbm9wLAotICAgIG9u
YWJvcnQgOiBvbkVycm9yLAotICAgIG9ud3JpdGVlbmQgOiBjaGVja0xlbmd0aEFuZFN0YXJ0TmV4
dFRlc3QKLSAgfQotXTsKLQotZnVuY3Rpb24gbm9wKCkgewotfQotCi1mdW5jdGlvbiB0ZW5YQmxv
YihibG9iKSB7Ci0gICAgdmFyIGJiID0gW107Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDsg
KytpKSB7Ci0gICAgICAgIGJiLnB1c2goYmxvYik7Ci0gICAgfQotICAgIHJldHVybiBuZXcgQmxv
YihiYik7Ci19Ci0KLWZ1bmN0aW9uIGdldEJsb2IoKSB7Ci0gICAgLy8gTGV0J3MgbWFrZSBpdCBh
Ym91dCBhIG1lZ2FieXRlLgotICAgIHZhciBibG9iID0gdGVuWEJsb2IobmV3IEJsb2IoWyJsb3Jl
bSBpcHN1bSJdKSk7Ci0gICAgYmxvYiA9IHRlblhCbG9iKGJsb2IpOwotICAgIGJsb2IgPSB0ZW5Y
QmxvYihibG9iKTsKLSAgICBibG9iID0gdGVuWEJsb2IoYmxvYik7Ci0gICAgYmxvYiA9IHRlblhC
bG9iKGJsb2IpOwotICAgIHZhciBzaXplID0gYmxvYi5zaXplOwotICAgIHNob3VsZEJlKCIiICsg
c2l6ZSwgImJsb2JTaXplIik7Ci0gICAgcmV0dXJuIGJsb2I7Ci19Ci0KLWZ1bmN0aW9uIGFib3J0
V3JpdGUoZSkgewotICAgIHRlc3RQYXNzZWQoIkNhbGxpbmcgYWJvcnQiKTsKLSAgICB3cml0ZXIu
YWJvcnQoKTsKLX0KLQotZnVuY3Rpb24gYWJvcnRPbkNvbXBsZXRlKGUpIHsKLSAgICBpZiAoZS5s
b2FkZWQgPT0gZS50b3RhbCkgewotICAgICAgICB0ZXN0UGFzc2VkKCJDYWxsaW5nIGFib3J0IGF0
IHRoZSBlbmQgb2YgdGhlIHdyaXRlIik7Ci0gICAgICAgIHdyaXRlci5hYm9ydCgpOwotICAgIH0K
LX0KLQotZnVuY3Rpb24gbG9nQWJvcnQoZSkgewotICAgIHRlc3RQYXNzZWQoIlNhdyBhYm9ydCIp
OwotfQotCi1mdW5jdGlvbiBjaGVja0xlbmd0aEFuZFN0YXJ0TmV4dFRlc3QoZSkgewotICAgIHNo
b3VsZEJlKCJ3cml0ZXIubGVuZ3RoIiwgIiIgKyBleHBlY3RlZExlbmd0aCk7Ci0gICAgdGVzdFBh
c3NlZCgiU2F3IHdyaXRlZW5kICIgKyBjdXJyZW50VGVzdCArICIuIik7Ci0gICAgKytjdXJyZW50
VGVzdDsKLSAgICBpZiAoY3VycmVudFRlc3QgPCBtZXRob2RTZXQubGVuZ3RoKQotICAgICAgICBy
dW5UZXN0KCk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIHRlc3RQYXNzZWQoIkFsbCB0ZXN0cyBjb21w
bGV0ZS4iKTsKLSAgICAgICAgY2xlYW5VcCgpOwotICAgIH0KLX0KLQotZnVuY3Rpb24gc3RhcnRX
cml0ZSgpIHsKLSAgICB0ZXN0UGFzc2VkKCJDYWxsaW5nIHdyaXRlLiIpOwotICAgIHdyaXRlci53
cml0ZShibG9iKTsKLX0KLQotZnVuY3Rpb24gc3RhcnRUcnVuY2F0ZSgpIHsKLSAgICB0ZXN0UGFz
c2VkKCJDYWxsaW5nIHRydW5jYXRlLiIpOwotICAgIHdyaXRlci50cnVuY2F0ZSh0cnVuY2F0ZUxl
bmd0aCk7Ci19Ci0KLWZ1bmN0aW9uIHNldHVwV3JpdGVyKG1ldGhvZFNldEluZGV4LCB3cml0ZXIp
IHsKLSAgICB3cml0ZXIub25lcnJvciA9IG9uRXJyb3I7Ci0KLSAgICB2YXIgbWV0aG9kcyA9IG1l
dGhvZFNldFttZXRob2RTZXRJbmRleF07Ci0gICAgd3JpdGVyLm9uYWJvcnQgPSBtZXRob2RzLm9u
YWJvcnQ7Ci0gICAgd3JpdGVyLm9ud3JpdGVzdGFydCA9IG1ldGhvZHMub253cml0ZXN0YXJ0Owot
ICAgIHdyaXRlci5vbnByb2dyZXNzID0gbWV0aG9kcy5vbnByb2dyZXNzOwotICAgIHdyaXRlci5v
bndyaXRlID0gbWV0aG9kcy5vbndyaXRlOwotICAgIHdyaXRlci5vbndyaXRlZW5kID0gbWV0aG9k
cy5vbndyaXRlZW5kOwotICAgIGV4cGVjdGVkTGVuZ3RoID0gbWV0aG9kcy52ZXJpZnlMZW5ndGg7
Ci0gICAgdHJ1bmNhdGVMZW5ndGggPSBtZXRob2RzLnRydW5jYXRlTGVuZ3RoOwotICAgIG1ldGhv
ZHMuYWN0aW9uKCk7Ci19Ci0KLWZ1bmN0aW9uIHJ1blRlc3QoKSB7Ci0gICAgc2V0dXBXcml0ZXIo
Y3VycmVudFRlc3QsIHdyaXRlcik7Ci19Ci0KLXZhciBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLXNl
dHVwQW5kUnVuVGVzdChmaWxlU3lzdGVtU2l6ZSwgJ2ZpbGUtd3JpdGVyLWFib3J0JywKLSAgICAg
ICAgICAgICAgICBmdW5jdGlvbiAoZmlsZUVudHJ5LCBmaWxlV3JpdGVyKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGZpbGVFbnRyeUZvckNsZWFudXAgPSBmaWxlRW50cnk7Ci0gICAgICAgICAgICAg
ICAgICAgIHdyaXRlciA9IGZpbGVXcml0ZXI7Ci0gICAgICAgICAgICAgICAgICAgIHJ1blRlc3Qo
KTsKLSAgICAgICAgICAgICAgICB9KTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3Rl
bS9yZXNvdXJjZXMvZmlsZS13cml0ZXItYWJvcnQtZGVwdGguanMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9maWxlLXdyaXRlci1hYm9ydC1kZXB0
aC5qcwkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jl
c291cmNlcy9maWxlLXdyaXRlci1hYm9ydC1kZXB0aC5qcwkod29ya2luZyBjb3B5KQpAQCAtMSw3
MSArMCwwIEBACi1pZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7Ci0gICAgaW1wb3J0U2NyaXB0cygn
ZnMtd29ya2VyLWNvbW1vbi5qcycpOwotICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcycpOwotICAgIGltcG9ydFNjcmlwdHMoJ2ZpbGUtd3JpdGVyLXV0
aWxzLmpzJyk7Ci19Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IHRoYXQgRmlsZVdyaXRlciBkZWZlbmRz
IGFnYWluc3QgaW5maW5pdGUgcmVjdXJzaW9uIHZpYSBhYm9ydC4iKTsKLQotdmFyIHNhd1dyaXRl
U3RhcnQ7Ci12YXIgc2F3QWJvcnQ7Ci12YXIgc2F3V3JpdGVFbmQ7Ci12YXIgd3JpdGVyOwotdmFy
IGJsb2IgPSBuZXcgQmxvYihbImxvcmVtIGlwc3VtIl0pOwotdmFyIHJlY3Vyc2lvbkRlcHRoID0g
MDsKLXZhciBtZXRob2Q7Ci12YXIgdGVzdHNSdW4gPSAwOwotCi1mdW5jdGlvbiBvbldyaXRlU3Rh
cnQoZSkgewotICAgIHRlc3RQYXNzZWQoIkNhbGxpbmcgYWJvcnQiKTsKLSAgICArK3JlY3Vyc2lv
bkRlcHRoOwotICAgIHdyaXRlci5hYm9ydCgpOwotfQotCi0vLyBXZSBzaG91bGQgYWx3YXlzIGFi
b3J0IGJlZm9yZSBjb21wbGV0aW9uLgotZnVuY3Rpb24gb25Xcml0ZShlKSB7Ci0gICAgdGVzdEZh
aWxlZCgiSW4gb25Xcml0ZS4iKTsKLX0KLQotZnVuY3Rpb24gb25BYm9ydChlKSB7Ci0gICAgdGVz
dFBhc3NlZCgiU2F3IGFib3J0Iik7Ci0gICAgdHJ5IHsKLSAgICAgIG1ldGhvZCgpOwotICAgIH0g
Y2F0Y2ggKGV4KSB7Ci0gICAgICBhc3NlcnQoZXguY29kZSA9PSAyKTsgIC8vIFNlY3VyaXR5IGVy
cm9yCi0gICAgICB0ZXN0UGFzc2VkKCJTYXcgc2VjdXJpdHkgZXJyb3IiKTsKLSAgICB9Ci19Ci0K
LWZ1bmN0aW9uIG9uV3JpdGVFbmQoZSkgewotICAgIC0tcmVjdXJzaW9uRGVwdGg7Ci0gICAgdGVz
dFBhc3NlZCgiU2F3IHdyaXRlZW5kLiIpOwotICAgIGlmICghcmVjdXJzaW9uRGVwdGgpIHsKLSAg
ICAgICAgKyt0ZXN0c1J1bjsKLSAgICAgICAgaWYgKHRlc3RzUnVuID09IDEpIHsKLSAgICAgICAg
ICAgIG1ldGhvZCA9IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIkNh
bGxpbmcgdHJ1bmNhdGUuIik7Ci0gICAgICAgICAgICAgICAgd3JpdGVyLnRydW5jYXRlKDcpOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgc2V0VGltZW91dChtZXRob2QsIDApOyAgLy8gSW52
b2tlIGZyb20gdGhlIHRvcCBsZXZlbCwgc28gdGhhdCB3ZSdyZSBub3QgYWxyZWFkeSBpbiBhIGhh
bmRsZXIuCi0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBjbGVhblVwKCk7Ci0gICAgICAg
IH0KLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHJ1blRlc3QodW51c2VkRmlsZUVudHJ5LCBmaWxlV3Jp
dGVyKSB7Ci0gICAgd3JpdGVyID0gZmlsZVdyaXRlcjsKLSAgICBtZXRob2QgPSBmdW5jdGlvbiAo
KSB7Ci0gICAgICAgIHRlc3RQYXNzZWQoIkNhbGxpbmcgd3JpdGUuIik7Ci0gICAgICAgIHdyaXRl
ci53cml0ZShibG9iKTsKLSAgICB9Ci0gICAgZmlsZVdyaXRlci5vbmVycm9yID0gb25FcnJvcjsK
LSAgICBmaWxlV3JpdGVyLm9uYWJvcnQgPSBvbkFib3J0OwotICAgIGZpbGVXcml0ZXIub253cml0
ZXN0YXJ0ID0gb25Xcml0ZVN0YXJ0OwotICAgIGZpbGVXcml0ZXIub253cml0ZSA9IG9uV3JpdGU7
Ci0gICAgZmlsZVdyaXRlci5vbndyaXRlZW5kID0gb25Xcml0ZUVuZDsKLSAgICBtZXRob2QoKTsK
LX0KLQotdmFyIGpzVGVzdElzQXN5bmMgPSB0cnVlOwotc2V0dXBBbmRSdW5UZXN0KDIqMTAyNCox
MDI0LCAnZmlsZS13cml0ZXItYWJvcnQtZGVwdGgnLCBydW5UZXN0KTsKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS13cml0ZXItYWJvcnQuanMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9maWxlLXdyaXRl
ci1hYm9ydC5qcwkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lz
dGVtL3Jlc291cmNlcy9maWxlLXdyaXRlci1hYm9ydC5qcwkod29ya2luZyBjb3B5KQpAQCAtMSw4
NCArMCwwIEBACi1pZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7Ci0gICAgaW1wb3J0U2NyaXB0cygn
ZnMtd29ya2VyLWNvbW1vbi5qcycpOwotICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcycpOwotICAgIGltcG9ydFNjcmlwdHMoJ2ZpbGUtd3JpdGVyLXV0
aWxzLmpzJyk7Ci19Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IHRoYXQgRmlsZVdyaXRlciBoYW5kbGVz
IGFib3J0IHByb3Blcmx5LiIpOwotCi12YXIgc2F3V3JpdGVTdGFydDsKLXZhciBzYXdBYm9ydDsK
LXZhciBzYXdXcml0ZUVuZDsKLXZhciB3cml0ZXI7Ci0KLWZ1bmN0aW9uIHRlblhCbG9iKGJsb2Ip
IHsKLSAgICB2YXIgYmIgPSBbXTsKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwOyArK2kpIHsK
LSAgICAgICAgYmIucHVzaChibG9iKTsKLSAgICB9Ci0gICAgcmV0dXJuIG5ldyBCbG9iKGJiKTsK
LX0KLQotZnVuY3Rpb24gb25Xcml0ZVN0YXJ0KGUpIHsKLSAgICBhc3NlcnQod3JpdGVyKTsKLSAg
ICBhc3NlcnQod3JpdGVyLnJlYWR5U3RhdGUgPT0gd3JpdGVyLldSSVRJTkcpOwotICAgIGFzc2Vy
dChlLnR5cGUgPT0gIndyaXRlc3RhcnQiKTsKLSAgICBhc3NlcnQoIXNhd1dyaXRlU3RhcnQpOwot
ICAgIGFzc2VydCghc2F3V3JpdGVFbmQpOwotICAgIGFzc2VydCghZS5sb2FkZWQpOwotICAgIHNh
d1dyaXRlU3RhcnQgPSB0cnVlOwotICAgIHRlc3RQYXNzZWQoIkNhbGxpbmcgYWJvcnQiKTsKLSAg
ICB3cml0ZXIuYWJvcnQoKTsKLX0KLQotLy8gV2Ugc2hvdWxkIGFsd2F5cyBhYm9ydCBiZWZvcmUg
Y29tcGxldGlvbi4KLWZ1bmN0aW9uIG9uV3JpdGUoZSkgewotICAgIHRlc3RGYWlsZWQoIkluIG9u
V3JpdGUuIik7Ci19Ci0KLWZ1bmN0aW9uIG9uQWJvcnQoZSkgewotICAgIGFzc2VydCh3cml0ZXIu
cmVhZHlTdGF0ZSA9PSB3cml0ZXIuRE9ORSk7Ci0gICAgYXNzZXJ0KHdyaXRlci5lcnJvci5jb2Rl
ID09IHdyaXRlci5lcnJvci5BQk9SVF9FUlIpOwotICAgIGFzc2VydChzYXdXcml0ZVN0YXJ0KTsK
LSAgICBhc3NlcnQoIXNhd1dyaXRlRW5kKTsKLSAgICBhc3NlcnQoIXNhd0Fib3J0KTsKLSAgICBh
c3NlcnQoZS50eXBlID09ICJhYm9ydCIpOwotICAgIHNhd0Fib3J0ID0gdHJ1ZTsKLSAgICB0ZXN0
UGFzc2VkKCJTYXcgYWJvcnQiKTsKLX0KLQotZnVuY3Rpb24gb25Xcml0ZUVuZChlKSB7Ci0gICAg
YXNzZXJ0KHdyaXRlci5yZWFkeVN0YXRlID09IHdyaXRlci5ET05FKTsKLSAgICBhc3NlcnQod3Jp
dGVyLmVycm9yLmNvZGUgPT0gd3JpdGVyLmVycm9yLkFCT1JUX0VSUik7Ci0gICAgYXNzZXJ0KHNh
d1dyaXRlU3RhcnQpOwotICAgIGFzc2VydChzYXdBYm9ydCk7Ci0gICAgYXNzZXJ0KCFzYXdXcml0
ZUVuZCk7Ci0gICAgYXNzZXJ0KGUudHlwZSA9PSAid3JpdGVlbmQiKTsKLSAgICBzYXdXcml0ZUVu
ZCA9IHRydWU7Ci0gICAgdGVzdFBhc3NlZCgiU2F3IHdyaXRlZW5kLiIpOwotICAgIHdyaXRlci5h
Ym9ydCgpOyAgLy8gVmVyaWZ5IHRoYXQgdGhpcyBkb2VzIG5vdGhpbmcgaW4gcmVhZHlTdGF0ZSBE
T05FLgotICAgIGNsZWFuVXAoKTsKLX0KLQotZnVuY3Rpb24gc3RhcnRXcml0ZShmaWxlV3JpdGVy
KSB7Ci0gICAgLy8gTGV0J3MgbWFrZSBpdCBhYm91dCBhIG1lZ2FieXRlLgotICAgIHZhciBibG9i
ID0gdGVuWEJsb2IobmV3IEJsb2IoWyJsb3JlbSBpcHN1bSJdKSk7Ci0gICAgYmxvYiA9IHRlblhC
bG9iKGJsb2IpOwotICAgIGJsb2IgPSB0ZW5YQmxvYihibG9iKTsKLSAgICBibG9iID0gdGVuWEJs
b2IoYmxvYik7Ci0gICAgYmxvYiA9IHRlblhCbG9iKGJsb2IpOwotICAgIHdyaXRlciA9IGZpbGVX
cml0ZXI7Ci0gICAgZmlsZVdyaXRlci5vbmVycm9yID0gb25FcnJvcjsKLSAgICBmaWxlV3JpdGVy
Lm9uYWJvcnQgPSBvbkFib3J0OwotICAgIGZpbGVXcml0ZXIub253cml0ZXN0YXJ0ID0gb25Xcml0
ZVN0YXJ0OwotICAgIGZpbGVXcml0ZXIub253cml0ZSA9IG9uV3JpdGU7Ci0gICAgZmlsZVdyaXRl
ci5vbndyaXRlZW5kID0gb25Xcml0ZUVuZDsKLSAgICBmaWxlV3JpdGVyLmFib3J0KCk7ICAvLyBW
ZXJpZnkgdGhhdCB0aGlzIGRvZXMgbm90aGluZyBpbiByZWFkeVN0YXRlIElOSVQuCi0gICAgZmls
ZVdyaXRlci53cml0ZShibG9iKTsKLX0KLQotZnVuY3Rpb24gcnVuVGVzdCh1bnVzZWRGaWxlRW50
cnksIGZpbGVXcml0ZXIpIHsKLSAgICBzdGFydFdyaXRlKGZpbGVXcml0ZXIpOwotfQotdmFyIGpz
VGVzdElzQXN5bmMgPSB0cnVlOwotc2V0dXBBbmRSdW5UZXN0KDIqMTAyNCoxMDI0LCAnZmlsZS13
cml0ZXItYWJvcnQnLCBydW5UZXN0KTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3Rl
bS9yZXNvdXJjZXMvZmlsZS13cml0ZXItZW1wdHktYmxvYi5qcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZpbGUtd3JpdGVyLWVtcHR5LWJsb2Iu
anMJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNv
dXJjZXMvZmlsZS13cml0ZXItZW1wdHktYmxvYi5qcwkod29ya2luZyBjb3B5KQpAQCAtMSwyOSAr
MCwwIEBACi1pZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7Ci0gICAgaW1wb3J0U2NyaXB0cygnZnMt
d29ya2VyLWNvbW1vbi5qcycpOwotICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcycpOwotICAgIGltcG9ydFNjcmlwdHMoJ2ZpbGUtd3JpdGVyLXV0aWxz
LmpzJyk7Ci19Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IHRoYXQgRmlsZVdyaXRlciB3b3JrcyB3aXRo
b3V0IGNyYXNoIHdoZW4gdHJ5aW5nIHRvIHdyaXRlIGFuIGVtcHR5IGJsb2IuIik7Ci0KLXZhciBm
aWxlRW50cnk7Ci0KLWZ1bmN0aW9uIG9uVGVzdFN1Y2Nlc3MoKSB7Ci0gICAgdGVzdFBhc3NlZCgi
U3VjY2Vzc2Z1bGx5IHdyb3RlIGJsb2IuIik7Ci0gICAgY2xlYW5VcCgpOwotfQotCi1mdW5jdGlv
biBzdGFydFdyaXRlKHdyaXRlcikgewotICAgIHZhciBibG9iID0gbmV3IEJsb2IoWyIiXSk7Ci0g
ICAgd3JpdGVyLm9uZXJyb3IgPSBvbkVycm9yOwotICAgIHdyaXRlci5vbndyaXRlZW5kID0gb25U
ZXN0U3VjY2VzczsKLSAgICB3cml0ZXIud3JpdGUoYmxvYik7Ci19Ci0KLWZ1bmN0aW9uIHJ1blRl
c3QodW51c2VkRmlsZUVudHJ5LCBmaWxlV3JpdGVyKSB7Ci0gICAgc3RhcnRXcml0ZShmaWxlV3Jp
dGVyKTsKLSAgICBnYygpOwotfQotdmFyIGpzVGVzdElzQXN5bmMgPSB0cnVlOwotc2V0dXBBbmRS
dW5UZXN0KDIgKiAxMDI0ICogMTAyNCwgJ2ZpbGUtd3JpdGVyLWVtcHR5LWJsb2InLCBydW5UZXN0
KTsKLQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9maWxlLXdy
aXRlci1ldmVudHMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVt
L3Jlc291cmNlcy9maWxlLXdyaXRlci1ldmVudHMuanMJKHJldmlzaW9uIDE1NjY5MSkKKysrIExh
eW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS13cml0ZXItZXZlbnRzLmpz
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDEwNCArMCwwIEBACi1pZiAodGhpcy5pbXBvcnRTY3JpcHRz
KSB7Ci0gICAgaW1wb3J0U2NyaXB0cygnZnMtd29ya2VyLWNvbW1vbi5qcycpOwotICAgIGlmICgh
KCdkZXNjcmlwdGlvbicgaW4gc2VsZikpICAvLyBTaGFyZWQgd29ya2VycyB3aWxsIGFscmVhZHkg
aGF2ZSBpbXBvcnRlZCB0aGlzLCBhbmQgaW1wb3J0aW5nIHR3aWNlIHdvdWxkIGJyZWFrIGl0Lgot
ICAgICAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMn
KTsKLSAgICBpbXBvcnRTY3JpcHRzKCdmaWxlLXdyaXRlci11dGlscy5qcycpOwotfQotCi1kZXNj
cmlwdGlvbigiVGVzdCB0aGF0IEZpbGVXcml0ZXIgcHJvZHVjZXMgcHJvcGVyIHByb2dyZXNzIGV2
ZW50cy4iKTsKLQotdmFyIGZpbGVFbnRyeTsKLXZhciBzYXdXcml0ZVN0YXJ0OwotdmFyIHNhd1dy
aXRlOwotdmFyIHNhd1dyaXRlRW5kOwotdmFyIHNhd1Byb2dyZXNzOwotdmFyIHdyaXRlcjsKLXZh
ciBsYXN0UHJvZ3Jlc3MgPSAwOwotdmFyIHRvQmVXcml0dGVuOwotCi1mdW5jdGlvbiB0ZW5YQmxv
YihibG9iKSB7Ci0gICAgdmFyIGJiID0gW107Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDsg
KytpKSB7Ci0gICAgICAgIGJiLnB1c2goYmxvYik7Ci0gICAgfQotICAgIHJldHVybiBuZXcgQmxv
YihiYik7Ci19Ci0KLWZ1bmN0aW9uIG9uV3JpdGVTdGFydChlKSB7Ci0gICAgYXNzZXJ0KHdyaXRl
cik7Ci0gICAgYXNzZXJ0KHdyaXRlci5yZWFkeVN0YXRlID09IHdyaXRlci5XUklUSU5HKTsKLSAg
ICBhc3NlcnQoZS50eXBlID09ICJ3cml0ZXN0YXJ0Iik7Ci0gICAgYXNzZXJ0KCFzYXdXcml0ZVN0
YXJ0KTsKLSAgICBhc3NlcnQoIXNhd1Byb2dyZXNzKTsKLSAgICBhc3NlcnQoIXNhd1dyaXRlKTsK
LSAgICBhc3NlcnQoIXNhd1dyaXRlRW5kKTsKLSAgICBhc3NlcnQoIWUubG9hZGVkKTsKLSAgICBh
c3NlcnQoZS50b3RhbCA9PSB0b0JlV3JpdHRlbik7Ci0gICAgc2F3V3JpdGVTdGFydCA9IHRydWU7
Ci19Ci0KLWZ1bmN0aW9uIG9uUHJvZ3Jlc3MoZSkgewotICAgIGFzc2VydCh3cml0ZXIucmVhZHlT
dGF0ZSA9PSB3cml0ZXIuV1JJVElORyk7Ci0gICAgYXNzZXJ0KHNhd1dyaXRlU3RhcnQpOwotICAg
IGFzc2VydCghc2F3V3JpdGUpOwotICAgIGFzc2VydCghc2F3V3JpdGVFbmQpOwotICAgIGFzc2Vy
dChlLnR5cGUgPT0gInByb2dyZXNzIik7Ci0gICAgYXNzZXJ0KGUubG9hZGVkIDw9IGUudG90YWwp
OwotICAgIGFzc2VydChsYXN0UHJvZ3Jlc3MgPCBlLmxvYWRlZCk7Ci0gICAgYXNzZXJ0KGUudG90
YWwgPT0gdG9CZVdyaXR0ZW4pOwotICAgIGxhc3RQcm9ncmVzcyA9IGUubG9hZGVkOwotICAgIHNh
d1Byb2dyZXNzID0gdHJ1ZTsKLX0KLQotZnVuY3Rpb24gb25Xcml0ZShlKSB7Ci0gICAgYXNzZXJ0
KHdyaXRlci5yZWFkeVN0YXRlID09IHdyaXRlci5ET05FKTsKLSAgICBhc3NlcnQoc2F3V3JpdGVT
dGFydCk7Ci0gICAgYXNzZXJ0KHNhd1Byb2dyZXNzKTsKLSAgICBhc3NlcnQobGFzdFByb2dyZXNz
ID09IGUudG90YWwpOwotICAgIGFzc2VydCghc2F3V3JpdGUpOwotICAgIGFzc2VydCghc2F3V3Jp
dGVFbmQpOwotICAgIGFzc2VydChlLnR5cGUgPT0gIndyaXRlIik7Ci0gICAgYXNzZXJ0KGUubG9h
ZGVkID09IGUudG90YWwpOwotICAgIGFzc2VydChlLnRvdGFsID09IHRvQmVXcml0dGVuKTsKLSAg
ICBzYXdXcml0ZSA9IHRydWU7Ci19Ci0KLWZ1bmN0aW9uIG9uV3JpdGVFbmQoZSkgewotICAgIGFz
c2VydCh3cml0ZXIucmVhZHlTdGF0ZSA9PSB3cml0ZXIuRE9ORSk7Ci0gICAgYXNzZXJ0KHNhd1dy
aXRlU3RhcnQpOwotICAgIGFzc2VydChzYXdQcm9ncmVzcyk7Ci0gICAgYXNzZXJ0KHNhd1dyaXRl
KTsKLSAgICBhc3NlcnQoIXNhd1dyaXRlRW5kKTsKLSAgICBhc3NlcnQoZS50eXBlID09ICJ3cml0
ZWVuZCIpOwotICAgIGFzc2VydChlLmxvYWRlZCA9PSBlLnRvdGFsKTsKLSAgICBhc3NlcnQoZS50
b3RhbCA9PSB0b0JlV3JpdHRlbik7Ci0gICAgc2F3V3JpdGVFbmQgPSB0cnVlOwotICAgIHRlc3RQ
YXNzZWQoIlNhdyBhbGwgdGhlIHJpZ2h0IGV2ZW50cy4iKTsKLSAgICBjbGVhblVwKCk7Ci19Ci0K
LWZ1bmN0aW9uIHN0YXJ0V3JpdGUoZmlsZVdyaXRlcikgewotICAgIC8vIExldCdzIG1ha2UgaXQg
YWJvdXQgYSBtZWdhYnl0ZS4KLSAgICB2YXIgYmxvYiA9IHRlblhCbG9iKG5ldyBCbG9iKFsibG9y
ZW0gaXBzdW0iXSkpOwotICAgIGJsb2IgPSB0ZW5YQmxvYihibG9iKTsKLSAgICBibG9iID0gdGVu
WEJsb2IoYmxvYik7Ci0gICAgYmxvYiA9IHRlblhCbG9iKGJsb2IpOwotICAgIGJsb2IgPSB0ZW5Y
QmxvYihibG9iKTsKLSAgICB0b0JlV3JpdHRlbiA9IGJsb2Iuc2l6ZTsKLSAgICB3cml0ZXIgPSBm
aWxlV3JpdGVyOwotICAgIGZpbGVXcml0ZXIub25lcnJvciA9IG9uRXJyb3I7Ci0gICAgZmlsZVdy
aXRlci5vbndyaXRlc3RhcnQgPSBvbldyaXRlU3RhcnQ7Ci0gICAgZmlsZVdyaXRlci5vbnByb2dy
ZXNzID0gb25Qcm9ncmVzczsKLSAgICBmaWxlV3JpdGVyLm9ud3JpdGUgPSBvbldyaXRlOwotICAg
IGZpbGVXcml0ZXIub253cml0ZWVuZCA9IG9uV3JpdGVFbmQ7Ci0gICAgZmlsZVdyaXRlci53cml0
ZShibG9iKTsKLX0KLQotZnVuY3Rpb24gcnVuVGVzdCh1bnVzZWRGaWxlRW50cnksIGZpbGVXcml0
ZXIpIHsKLSAgICBhc3NlcnQodHlwZW9mIGZpbGVXcml0ZXIuYWRkRXZlbnRMaXN0ZW5lciA9PT0g
J2Z1bmN0aW9uJyk7Ci0gICAgYXNzZXJ0KHR5cGVvZiBmaWxlV3JpdGVyLnJlbW92ZUV2ZW50TGlz
dGVuZXIgPT09ICdmdW5jdGlvbicpOwotICAgIGFzc2VydCh0eXBlb2YgZmlsZVdyaXRlci5kaXNw
YXRjaEV2ZW50ID09PSAnZnVuY3Rpb24nKTsKLSAgICBzdGFydFdyaXRlKGZpbGVXcml0ZXIpOwot
fQotdmFyIGpzVGVzdElzQXN5bmMgPSB0cnVlOwotc2V0dXBBbmRSdW5UZXN0KDIqMTAyNCoxMDI0
LCAnZmlsZS13cml0ZXItZXZlbnRzJywgcnVuVGVzdCk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZpbGUtd3JpdGVyLWdjLWJsb2IuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9maWxlLXdyaXRlci1nYy1i
bG9iLmpzCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0v
cmVzb3VyY2VzL2ZpbGUtd3JpdGVyLWdjLWJsb2IuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsNDEg
KzAsMCBAQAotaWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgewotICAgIGltcG9ydFNjcmlwdHMoJ2Zz
LXdvcmtlci1jb21tb24uanMnKTsKLSAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMnKTsKLSAgICBpbXBvcnRTY3JpcHRzKCdmaWxlLXdyaXRlci11dGls
cy5qcycpOwotfQotCi1kZXNjcmlwdGlvbigiVGVzdCB0aGF0IGEgYmxvYiB3b24ndCBnZXQgZ2Fy
YmFnZS1jb2xsZWN0ZWQgd2hpbGUgYmVpbmcgd3JpdHRlbiBvdXQgYnkgYSBGaWxlV3JpdGVyLiIp
OwotCi12YXIgZmlsZUVudHJ5OwotCi1mdW5jdGlvbiBvblRlc3RTdWNjZXNzKCkgewotICAgIHRl
c3RQYXNzZWQoIlN1Y2Nlc3NmdWxseSB3cm90ZSBibG9iLiIpOwotICAgIGNsZWFuVXAoKTsKLX0K
LQotZnVuY3Rpb24gdGVuWEJsb2IoYmxvYikgewotICAgIHZhciBiYiA9IFtdOwotICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgMTA7ICsraSkgewotICAgICAgICBiYi5wdXNoKGJsb2IpOwotICAgIH0K
LSAgICByZXR1cm4gbmV3IEJsb2IoYmIpOwotfQotCi1mdW5jdGlvbiBzdGFydFdyaXRlKHdyaXRl
cikgewotICAgIC8vIExldCdzIG1ha2UgaXQgYWJvdXQgYSBtZWdhYnl0ZS4KLSAgICB2YXIgYmxv
YiA9IHRlblhCbG9iKG5ldyBCbG9iKFsibG9yZW0gaXBzdW0iXSkpOwotICAgIGJsb2IgPSB0ZW5Y
QmxvYihibG9iKTsKLSAgICBibG9iID0gdGVuWEJsb2IoYmxvYik7Ci0gICAgYmxvYiA9IHRlblhC
bG9iKGJsb2IpOwotICAgIGJsb2IgPSB0ZW5YQmxvYihibG9iKTsKLSAgICB3cml0ZXIub25lcnJv
ciA9IG9uRXJyb3I7Ci0gICAgd3JpdGVyLm9ud3JpdGVlbmQgPSBvblRlc3RTdWNjZXNzOwotICAg
IHdyaXRlci53cml0ZShibG9iKTsKLX0KLQotZnVuY3Rpb24gcnVuVGVzdCh1bnVzZWRGaWxlRW50
cnksIGZpbGVXcml0ZXIpIHsKLSAgICBzdGFydFdyaXRlKGZpbGVXcml0ZXIpOwotICAgIGdjKCk7
Ci19Ci12YXIganNUZXN0SXNBc3luYyA9IHRydWU7Ci1zZXR1cEFuZFJ1blRlc3QoMioxMDI0KjEw
MjQsICdmaWxlLXdyaXRlci1nYy1ibG9iJywgcnVuVGVzdCk7CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZpbGUtd3JpdGVyLXN5bmMtdHJ1bmNhdGUtZXh0ZW5k
LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMv
ZmlsZS13cml0ZXItc3luYy10cnVuY2F0ZS1leHRlbmQuanMJKHJldmlzaW9uIDE1NjY5MSkKKysr
IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS13cml0ZXItc3luYy10
cnVuY2F0ZS1leHRlbmQuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsNDAgKzAsMCBAQAotaWYgKHRo
aXMuaW1wb3J0U2NyaXB0cykgewotICAgIGltcG9ydFNjcmlwdHMoJy4uL3Jlc291cmNlcy9mcy13
b3JrZXItY29tbW9uLmpzJyk7Ci0gICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzJyk7Ci0gICAgaW1wb3J0U2NyaXB0cygnLi4vcmVzb3VyY2VzL2ZzLXRl
c3QtdXRpbC5qcycpOwotICAgIGltcG9ydFNjcmlwdHMoJy4uL3Jlc291cmNlcy9maWxlLXdyaXRl
ci11dGlscy5qcycpOwotfQotCi1kZXNjcmlwdGlvbigiVGVzdCB1c2luZyBGaWxlV3JpdGVyU3lu
Yy50cnVuY2F0ZSB0byBleHRlbmQgYSBmaWxlLiIpOwotCi0vLyBTdGFydCB3aXRoIGFuIGVtcHR5
IEZpbGVTeXN0ZW0uCi12YXIgZmlsZVN5c3RlbSA9IHdlYmtpdFJlcXVlc3RGaWxlU3lzdGVtU3lu
Yyh0aGlzLlRFTVBPUkFSWSwgMTAwKTsKLXJlbW92ZUFsbEluRGlyZWN0b3J5U3luYyhmaWxlU3lz
dGVtLnJvb3QpOwotCi0vLyBQcmVwYXJlIGEgZmlsZSB3aXRoIHNhbXBsZSBjb250ZW50cy4KLXZh
ciBlbnRyeSA9IGZpbGVTeXN0ZW0ucm9vdC5nZXRGaWxlKCdhJywge2NyZWF0ZTp0cnVlLCBleGNs
dXNpdmU6dHJ1ZX0pOwotdmFyIHdyaXRlciA9IGVudHJ5LmNyZWF0ZVdyaXRlcigpOwotYXNzZXJ0
KCF3cml0ZXIucG9zaXRpb24pOwotdmFyIHRlc3REYXRhID0gInRlc3QgZGF0YSI7Ci13cml0ZXIu
d3JpdGUobmV3IEJsb2IoW3Rlc3REYXRhXSkpOwotYXNzZXJ0KHdyaXRlci5sZW5ndGggPT0gdGVz
dERhdGEubGVuZ3RoKTsKLWFzc2VydCh3cml0ZXIucG9zaXRpb24gPT0gd3JpdGVyLmxlbmd0aCk7
Ci0KLS8vIEV4dGVuZCB0aGUgZmlsZSB2aWEgdHJ1bmNhdGUuCi12YXIgZXh0ZW5zaW9uTGVuZ3Ro
ID0gMTA7Ci13cml0ZXIudHJ1bmNhdGUod3JpdGVyLmxlbmd0aCArIGV4dGVuc2lvbkxlbmd0aCk7
Ci0KLS8vIFZlcmlmeSB0aGUgY29udGVudHMuCi1hc3NlcnQod3JpdGVyLmxlbmd0aCA9PSB0ZXN0
RGF0YS5sZW5ndGggKyBleHRlbnNpb25MZW5ndGgpOwotYXNzZXJ0KHdyaXRlci5wb3NpdGlvbiA9
PSB0ZXN0RGF0YS5sZW5ndGgpOwotdmFyIGZpbGUgPSBlbnRyeS5maWxlKCk7Ci12YXIgcmVhZGVy
ID0gbmV3IEZpbGVSZWFkZXJTeW5jKCk7Ci12YXIgY29udGVudHMgPSByZWFkZXIucmVhZEFzQmlu
YXJ5U3RyaW5nKGZpbGUpOwotdmFyIGk7Ci1mb3IgKGkgPSAwOyBpIDwgdGVzdERhdGEubGVuZ3Ro
OyArK2kpCi0gICAgYXNzZXJ0KGNvbnRlbnRzLmNoYXJDb2RlQXQoaSkgPT0gdGVzdERhdGEuY2hh
ckNvZGVBdChpKSk7Ci1mb3IgKDsgaSA8IHdyaXRlci5sZW5ndGg7ICsraSkKLSAgICBhc3NlcnQo
IWNvbnRlbnRzLmNoYXJDb2RlQXQoaSkpOwotCi10ZXN0UGFzc2VkKCJUcnVuY2F0ZSBleHRlbnNp
b24gdmVyaWZpZWQuIik7Ci1maW5pc2hKU1Rlc3QoKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
ZmlsZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS13cml0ZXItc3luYy13cml0ZS1vdmVybGFwcGVkLmpz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZmls
ZS13cml0ZXItc3luYy13cml0ZS1vdmVybGFwcGVkLmpzCShyZXZpc2lvbiAxNTY2OTEpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZpbGUtd3JpdGVyLXN5bmMtd3Jp
dGUtb3ZlcmxhcHBlZC5qcwkod29ya2luZyBjb3B5KQpAQCAtMSw5MSArMCwwIEBACi1pZiAodGhp
cy5pbXBvcnRTY3JpcHRzKSB7Ci0gICAgaW1wb3J0U2NyaXB0cygnLi4vcmVzb3VyY2VzL2ZzLXdv
cmtlci1jb21tb24uanMnKTsKLSAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMnKTsKLSAgICBpbXBvcnRTY3JpcHRzKCcuLi9yZXNvdXJjZXMvZnMtdGVz
dC11dGlsLmpzJyk7Ci0gICAgaW1wb3J0U2NyaXB0cygnLi4vcmVzb3VyY2VzL2ZpbGUtd3JpdGVy
LXV0aWxzLmpzJyk7Ci19Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IHVzaW5nIEZpbGVXcml0ZXJTeW5j
LnNlZWsgdG8gd3JpdGUgb3ZlcmxhcHBpbmcgZXhpc3RpbmcgZGF0YSBpbiBhIGZpbGUuIik7Ci0K
LS8vIFN0YXJ0IHdpdGggYW4gZW1wdHkgRmlsZVN5c3RlbS4KLXZhciBmaWxlU3lzdGVtID0gd2Vi
a2l0UmVxdWVzdEZpbGVTeXN0ZW1TeW5jKHRoaXMuVEVNUE9SQVJZLCAxMDApOwotcmVtb3ZlQWxs
SW5EaXJlY3RvcnlTeW5jKGZpbGVTeXN0ZW0ucm9vdCk7Ci0KLS8vIFByZXBhcmUgYSBmaWxlIHdp
dGggc2FtcGxlIGNvbnRlbnRzLgotdmFyIGVudHJ5ID0gZmlsZVN5c3RlbS5yb290LmdldEZpbGUo
J2EnLCB7Y3JlYXRlOnRydWUsIGV4Y2x1c2l2ZTp0cnVlfSk7Ci12YXIgd3JpdGVyID0gZW50cnku
Y3JlYXRlV3JpdGVyKCk7Ci1hc3NlcnQoIXdyaXRlci5wb3NpdGlvbik7Ci12YXIgdGVzdERhdGEg
PSAidGVzdCBkYXRhIjsKLXZhciBibG9iID0gbmV3IEJsb2IoW3Rlc3REYXRhXSk7Ci13cml0ZXIu
d3JpdGUoYmxvYik7Ci1hc3NlcnQod3JpdGVyLmxlbmd0aCA9PSB0ZXN0RGF0YS5sZW5ndGgpOwot
YXNzZXJ0KHdyaXRlci5wb3NpdGlvbiA9PSB3cml0ZXIubGVuZ3RoKTsKLQotLy8gU2VlayBiYWNr
IHRvIGZyb20gdGhlIGVuZCwgdGhlbiBvdmVyd3JpdGUsIGV4dGVuZGluZyB0aGUgZmlsZS4KLXZh
ciBleHRlbnNpb25PZmZzZXQgPSAtNDsKLXdyaXRlci5zZWVrKGV4dGVuc2lvbk9mZnNldCk7Ci13
cml0ZXIud3JpdGUoYmxvYik7Ci0KLS8vIFZlcmlmeSB0aGUgY29udGVudHMuCi1hc3NlcnQod3Jp
dGVyLmxlbmd0aCA9PSAyICogdGVzdERhdGEubGVuZ3RoICsgZXh0ZW5zaW9uT2Zmc2V0KTsKLWFz
c2VydCh3cml0ZXIucG9zaXRpb24gPT0gd3JpdGVyLmxlbmd0aCk7Ci12YXIgZmlsZSA9IGVudHJ5
LmZpbGUoKTsKLXZhciByZWFkZXIgPSBuZXcgRmlsZVJlYWRlclN5bmMoKTsKLXZhciBjb250ZW50
cyA9IHJlYWRlci5yZWFkQXNCaW5hcnlTdHJpbmcoZmlsZSk7Ci12YXIgaTsKLWZvciAoaSA9IDA7
IGkgPCB0ZXN0RGF0YS5sZW5ndGggKyBleHRlbnNpb25PZmZzZXQ7ICsraSkKLSAgICBhc3NlcnQo
Y29udGVudHMuY2hhckNvZGVBdChpKSA9PSB0ZXN0RGF0YS5jaGFyQ29kZUF0KGkpKTsKLXZhciBq
OwotZm9yIChqID0gMDsgaSA8IHdyaXRlci5sZW5ndGg7ICsraSwgKytqKQotICAgIGFzc2VydChj
b250ZW50cy5jaGFyQ29kZUF0KGkpID09IHRlc3REYXRhLmNoYXJDb2RlQXQoaikpOwotdGVzdFBh
c3NlZCgiT3ZlcmxhcHBlZCB3cml0ZSAxIHZlcmlmaWVkLiIpOwotCi0vLyBUcnVuY2F0ZSBiYWNr
IHRvIGVtcHR5IGFuZCByZXNldCB0aGUgY29udGVudHMuCi13cml0ZXIudHJ1bmNhdGUoMCk7Ci1h
c3NlcnQoIXdyaXRlci5wb3NpdGlvbik7Ci1hc3NlcnQoIXdyaXRlci5sZW5ndGgpOwotd3JpdGVy
LndyaXRlKGJsb2IpOwotYXNzZXJ0KHdyaXRlci5sZW5ndGggPT0gdGVzdERhdGEubGVuZ3RoKTsK
LWFzc2VydCh3cml0ZXIucG9zaXRpb24gPT0gd3JpdGVyLmxlbmd0aCk7Ci0KLS8vIFNlZWsgZm9y
d2FyZCBmcm9tIHRoZSBiZWdpbm5pbmcsIHRoZW4gb3ZlcndyaXRlLCBleHRlbmRpbmcgdGhlIGZp
bGUuCi1leHRlbnNpb25PZmZzZXQgPSA0Owotd3JpdGVyLnNlZWsoZXh0ZW5zaW9uT2Zmc2V0KTsK
LXdyaXRlci53cml0ZShibG9iKTsKLWFzc2VydCh3cml0ZXIubGVuZ3RoID09IHRlc3REYXRhLmxl
bmd0aCArIGV4dGVuc2lvbk9mZnNldCk7Ci1hc3NlcnQod3JpdGVyLnBvc2l0aW9uID09IHdyaXRl
ci5sZW5ndGgpOwotCi0vLyBWZXJpZnkgdGhlIGNvbnRlbnRzLgotY29udGVudHMgPSByZWFkZXIu
cmVhZEFzQmluYXJ5U3RyaW5nKGZpbGUpOwotZm9yIChpID0gMDsgaSA8IGV4dGVuc2lvbk9mZnNl
dDsgKytpKQotICAgIGFzc2VydChjb250ZW50cy5jaGFyQ29kZUF0KGkpID09IHRlc3REYXRhLmNo
YXJDb2RlQXQoaSkpOwotZm9yIChqID0gMDsgaSA8IHdyaXRlci5sZW5ndGg7ICsraSwgKytqKQot
ICAgIGFzc2VydChjb250ZW50cy5jaGFyQ29kZUF0KGkpID09IHRlc3REYXRhLmNoYXJDb2RlQXQo
aikpOwotdGVzdFBhc3NlZCgiT3ZlcmxhcHBlZCB3cml0ZSAyIHZlcmlmaWVkLiIpOwotCi0vLyBU
cnVuY2F0ZSBiYWNrIHRvIGVtcHR5IGFuZCByZXNldCB0aGUgY29udGVudHMuCi13cml0ZXIudHJ1
bmNhdGUoMCk7Ci1hc3NlcnQoIXdyaXRlci5wb3NpdGlvbik7Ci1hc3NlcnQoIXdyaXRlci5sZW5n
dGgpOwotd3JpdGVyLndyaXRlKGJsb2IpOwotd3JpdGVyLndyaXRlKGJsb2IpOwotYXNzZXJ0KHdy
aXRlci5sZW5ndGggPT0gMiAqIHRlc3REYXRhLmxlbmd0aCk7Ci1hc3NlcnQod3JpdGVyLnBvc2l0
aW9uID09IHdyaXRlci5sZW5ndGgpOwotCi0vLyBTZWVrIGZvcndhcmQgZnJvbSB0aGUgYmVnaW5u
aW5nLCB0aGVuIG92ZXJ3cml0ZSBpbiB0aGUgbWlkZGxlIG9mIHRoZSBmaWxlLgotZXh0ZW5zaW9u
T2Zmc2V0ID0gNDsKLXdyaXRlci5zZWVrKGV4dGVuc2lvbk9mZnNldCk7Ci13cml0ZXIud3JpdGUo
YmxvYik7Ci1hc3NlcnQod3JpdGVyLmxlbmd0aCA9PSAyICogdGVzdERhdGEubGVuZ3RoKTsKLWFz
c2VydCh3cml0ZXIucG9zaXRpb24gPT0gdGVzdERhdGEubGVuZ3RoICsgZXh0ZW5zaW9uT2Zmc2V0
KTsKLQotLy8gVmVyaWZ5IHRoZSBjb250ZW50cy4KLWNvbnRlbnRzID0gcmVhZGVyLnJlYWRBc0Jp
bmFyeVN0cmluZyhmaWxlKTsKLWZvciAoaSA9IDA7IGkgPCBleHRlbnNpb25PZmZzZXQ7ICsraSkK
LSAgICBhc3NlcnQoY29udGVudHMuY2hhckNvZGVBdChpKSA9PSB0ZXN0RGF0YS5jaGFyQ29kZUF0
KGkpKTsKLWZvciAoaiA9IDA7IGkgPCB0ZXN0RGF0YS5sZW5ndGggKyBleHRlbnNpb25PZmZzZXQ7
ICsraSwgKytqKQotICAgIGFzc2VydChjb250ZW50cy5jaGFyQ29kZUF0KGkpID09IHRlc3REYXRh
LmNoYXJDb2RlQXQoaikpOwotZm9yIChqID0gZXh0ZW5zaW9uT2Zmc2V0OyBpIDwgd3JpdGVyLmxl
bmd0aDsgKytpLCArK2opCi0gICAgYXNzZXJ0KGNvbnRlbnRzLmNoYXJDb2RlQXQoaSkgPT0gdGVz
dERhdGEuY2hhckNvZGVBdChqKSk7Ci10ZXN0UGFzc2VkKCJPdmVybGFwcGVkIHdyaXRlIDMgdmVy
aWZpZWQuIik7Ci1maW5pc2hKU1Rlc3QoKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5
c3RlbS9yZXNvdXJjZXMvZmlsZS13cml0ZXItdHJ1bmNhdGUtZXh0ZW5kLmpzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS13cml0ZXItdHJ1
bmNhdGUtZXh0ZW5kLmpzCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zp
bGVzeXN0ZW0vcmVzb3VyY2VzL2ZpbGUtd3JpdGVyLXRydW5jYXRlLWV4dGVuZC5qcwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzOSArMCwwIEBACi1pZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7Ci0gICAg
aW1wb3J0U2NyaXB0cygnZnMtd29ya2VyLWNvbW1vbi5qcycpOwotICAgIGltcG9ydFNjcmlwdHMo
Jy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOwotICAgIGltcG9ydFNjcmlwdHMo
J2ZpbGUtd3JpdGVyLXV0aWxzLmpzJyk7Ci19Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IG9mIGV4dGVu
ZGluZyBhIGZpbGUgdXNpbmcgdHJ1bmNhdGUoKS4iKTsKLQotZnVuY3Rpb24gb25UZXN0U3VjY2Vl
ZGVkKCkKLXsKLSAgICB0ZXN0UGFzc2VkKCJUcnVuY2F0ZSBleHRlbnNpb24gdmVyaWZpZWQuIik7
Ci0gICAgY2xlYW5VcCgpOwotfQotCi1mdW5jdGlvbiB0cnVuY2F0ZVRvRXh0ZW5kKGZpbGVFbnRy
eSwgZmlsZVdyaXRlciwgY29udGVudHMsIG9uU3VjY2VzcykKLXsKLSAgICB2YXIgZXh0ZW5zaW9u
ID0gNTsKLSAgICB2YXIgbGVuZ3RoQ2hlY2tlciA9IGZ1bmN0aW9uKCkgewotICAgICAgICB2ZXJp
ZnlGaWxlTGVuZ3RoKGZpbGVFbnRyeSwgY29udGVudHMubGVuZ3RoICsgZXh0ZW5zaW9uLCBvblN1
Y2Nlc3MpOwotICAgIH07Ci0gICAgdmFyIGV4dGVuc2lvbkNoZWNrZXIgPSBmdW5jdGlvbigpIHsK
LSAgICAgICAgdmVyaWZ5Qnl0ZVJhbmdlSXNaZXJvZXMoZmlsZUVudHJ5LCBjb250ZW50cy5sZW5n
dGgsIGV4dGVuc2lvbiwgbGVuZ3RoQ2hlY2tlcik7Ci0gICAgfTsKLSAgICBmaWxlV3JpdGVyLm9u
d3JpdGUgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgdmVyaWZ5Qnl0ZVJhbmdlQXNTdHJpbmcoZmls
ZUVudHJ5LCAwLCBjb250ZW50cywgZXh0ZW5zaW9uQ2hlY2tlcik7Ci0gICAgfTsKLSAgICBmaWxl
V3JpdGVyLnRydW5jYXRlKGNvbnRlbnRzLmxlbmd0aCArIGV4dGVuc2lvbik7Ci19Ci0KLWZ1bmN0
aW9uIHJ1blRlc3QoZmlsZUVudHJ5LCBmaWxlV3JpdGVyKSB7Ci0gICAgdmFyIGNvbnRlbnRzID0g
IkxvcmVtIGlwc3VtIjsKLSAgICB3cml0ZVN0cmluZyhmaWxlRW50cnksIGZpbGVXcml0ZXIsIDAs
IGNvbnRlbnRzLAotICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAg
ICAgICB0cnVuY2F0ZVRvRXh0ZW5kKGZpbGVFbnRyeSwgZmlsZVdyaXRlciwgY29udGVudHMsIG9u
VGVzdFN1Y2NlZWRlZCk7Ci0gICAgICAgICAgICAgICAgfSk7Ci19Ci0KLXZhciBqc1Rlc3RJc0Fz
eW5jID0gdHJ1ZTsKLXNldHVwQW5kUnVuVGVzdCgxMDI0LCAnZmlsZS13cml0ZXItdHJ1bmNhdGUt
ZXh0ZW5kJywgcnVuVGVzdCk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVz
b3VyY2VzL2ZpbGUtd3JpdGVyLXV0aWxzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS13cml0ZXItdXRpbHMuanMJKHJldmlzaW9uIDE1
NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS13cml0
ZXItdXRpbHMuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsMTY5ICswLDAgQEAKLWZ1bmN0aW9uIHN0
cmluZ2lmeU9iaihvKQotewotICAgIHMgPSAiIjsKLSAgICBpZiAobykKLSAgICAgICAgZm9yIChp
bmRleCBpbiBvKSB7Ci0gICAgICAgICAgICBzICs9IGluZGV4ICsgIjogIiArIG9baW5kZXhdICsg
IjsiOwotICAgICAgICB9Ci0gICAgcmV0dXJuIHM7Ci19Ci0KLWZ1bmN0aW9uIG9uRXJyb3IoZSkK
LXsKLSAgICB0ZXN0RmFpbGVkKCJHb3QgZXJyb3I6ICIgKyBzdHJpbmdpZnlPYmooZSkpOwotICAg
IGNsZWFuVXAoKTsKLX0KLQotZnVuY3Rpb24gYXNzZXJ0KHMpCi17Ci0gICAgaWYgKCFzKSB7Ci0g
ICAgICAgIHZhciBlID0gbmV3IEVycm9yKCJBc3NlcnRpb24gZmFpbGVkLiAiKTsKLSAgICAgICAg
b25FcnJvcihlKTsKLSAgICAgICAgdGhyb3cgZTsKLSAgICB9Ci19Ci0KLXZhciBmaWxlRW50cnlG
b3JDbGVhbnVwOyAgLy8gU2V0IGFzIHNvb24gYXMgd2UgaGF2ZSBvbmUuCi0KLWZ1bmN0aW9uIGNs
ZWFuVXAoKQotewotICAgIGlmIChmaWxlRW50cnlGb3JDbGVhbnVwKSB7Ci0gICAgICAgIHRyeSB7
Ci0gICAgICAgICAgICBmaWxlRW50cnlGb3JDbGVhbnVwLnJlbW92ZShmaW5pc2hKU1Rlc3QsIGZp
bmlzaEpTVGVzdCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0gY2F0Y2ggKGV4KSB7
Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLS8vIEdlbmVyaWMg
ZnVuY3Rpb24gdGhhdCBnZXRzIGEgRmlsZSBmcm9tIGEgRmlsZUVudHJ5IGFuZCBjYWxscyBhIGN1
c3RvbSB2ZXJpZmljYXRpb24gZnVuY3Rpb24gb24gaXQuCi1mdW5jdGlvbiB2ZXJpZnlGaWxlQ29u
dGVudHMoZmlsZUVudHJ5LCB2ZXJpZnlGdW5jLCBhcmcwLCBhcmcxLCBvblN1Y2Nlc3MpCi17Ci0g
ICAgZmlsZUVudHJ5LmZpbGUoCi0gICAgICAgIGZ1bmN0aW9uKGZpbGUpIHsKLSAgICAgICAgICAg
IHZlcmlmeUZ1bmMoZmlsZSwgYXJnMCwgYXJnMSwgb25TdWNjZXNzKTsKLSAgICAgICAgfSwKLSAg
ICAgICAgb25FcnJvcik7Ci19Ci0KLS8vIEhlbHBlciBmdW5jdGlvbiB1c2VkIHdpdGggdmVyaWZ5
RmlsZUNvbnRlbnRzLgotZnVuY3Rpb24gdmVyaWZ5RmlsZUxlbmd0aEhlbHBlcihmaWxlLCBsZW5n
dGgsIHVudXNlZCwgb25TdWNjZXNzKQotewotICAgIGFzc2VydChmaWxlLnNpemUgPT0gbGVuZ3Ro
KTsKLSAgICBvblN1Y2Nlc3MoKTsKLX0KLQotLy8gVmVyaWZpZXMgdGhhdCB0aGUgY29udGVudHMg
b2YgZmlsZUVudHJ5IGhhdmUgdGhlIHN1cHBsaWVkIGxlbmd0aC4KLWZ1bmN0aW9uIHZlcmlmeUZp
bGVMZW5ndGgoZmlsZUVudHJ5LCBsZW5ndGgsIG9uU3VjY2VzcykKLXsKLSAgICB2ZXJpZnlGaWxl
Q29udGVudHMoZmlsZUVudHJ5LCB2ZXJpZnlGaWxlTGVuZ3RoSGVscGVyLCBsZW5ndGgsIG51bGws
IG9uU3VjY2Vzcyk7Ci19Ci0KLS8vIEhlbHBlciBmdW5jdGlvbiB1c2VkIHdpdGggdmVyaWZ5Rmls
ZUNvbnRlbnRzLgotZnVuY3Rpb24gdmVyaWZ5Qnl0ZVJhbmdlSXNaZXJvZXNIZWxwZXIoZmlsZSwg
c3RhcnQsIGxlbmd0aCwgb25TdWNjZXNzKQotewotICAgIHZhciBmaWxlUmVhZGVyID0gbmV3IEZp
bGVSZWFkZXIoKTsKLSAgICBmaWxlUmVhZGVyLm9uZXJyb3IgPSBvbkVycm9yOwotICAgIGZpbGVS
ZWFkZXIub25sb2FkID0KLSAgICAgICAgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICB2YXIgcmVz
dWx0ID0gZmlsZVJlYWRlci5yZXN1bHQ7Ci0gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IGxlbmd0aDsgaSsrKQotICAgICAgICAgICAgICAgIGFzc2VydChyZXN1bHQuY2hhckNvZGVBdChp
KSA9PSAwKTsKLSAgICAgICAgICAgIG9uU3VjY2VzcygpOwotICAgICAgICB9OwotICAgIGZpbGVS
ZWFkZXIucmVhZEFzQmluYXJ5U3RyaW5nKGZpbGUuc2xpY2Uoc3RhcnQsIHN0YXJ0ICsgbGVuZ3Ro
KSk7Ci19Ci0KLS8vIFZlcmlmaWVzIHRoYXQgZmlsZUVudHJ5LCBhdCBvZmZzZXQsIGlzIGFsbCB6
ZXJvZXMgZm9yIGxlbmd0aCBieXRlcy4KLWZ1bmN0aW9uIHZlcmlmeUJ5dGVSYW5nZUlzWmVyb2Vz
KGZpbGVFbnRyeSwgb2Zmc2V0LCBsZW5ndGgsIG9uU3VjY2VzcykKLXsKLSAgICB2ZXJpZnlGaWxl
Q29udGVudHMoZmlsZUVudHJ5LCB2ZXJpZnlCeXRlUmFuZ2VJc1plcm9lc0hlbHBlciwgb2Zmc2V0
LCBsZW5ndGgsIG9uU3VjY2Vzcyk7Ci19Ci0KLS8vIEhlbHBlciBmdW5jdGlvbiB1c2VkIHdpdGgg
dmVyaWZ5RmlsZUNvbnRlbnRzLgotZnVuY3Rpb24gdmVyaWZ5Qnl0ZVJhbmdlQXNTdHJpbmdIZWxw
ZXIoZmlsZSwgc3RhcnQsIGRhdGEsIG9uU3VjY2VzcykKLXsKLSAgICB2YXIgZmlsZVJlYWRlciA9
IG5ldyBGaWxlUmVhZGVyKCk7Ci0gICAgZmlsZVJlYWRlci5vbmVycm9yID0gb25FcnJvcjsKLSAg
ICBmaWxlUmVhZGVyLm9ubG9hZCA9Ci0gICAgICAgIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAg
YXNzZXJ0KGZpbGVSZWFkZXIucmVzdWx0ID09IGRhdGEpOwotICAgICAgICAgICAgb25TdWNjZXNz
KCk7Ci0gICAgICAgIH07Ci0gICAgZmlsZVJlYWRlci5yZWFkQXNUZXh0KGZpbGUuc2xpY2Uoc3Rh
cnQsIHN0YXJ0ICsgZGF0YS5sZW5ndGgpKTsKLX0KLQotLy8gVmVyaWZpZXMgdGhhdCB0aGUgY29u
dGVudHMgb2YgZmlsZUVudHJ5LCBhdCBvZmZzZXQsIG1hdGNoIGNvbnRlbnRzIFthIHN0cmluZ10u
Ci1mdW5jdGlvbiB2ZXJpZnlCeXRlUmFuZ2VBc1N0cmluZyhmaWxlRW50cnksIG9mZnNldCwgY29u
dGVudHMsIG9uU3VjY2VzcykKLXsKLSAgICB2ZXJpZnlGaWxlQ29udGVudHMoZmlsZUVudHJ5LCB2
ZXJpZnlCeXRlUmFuZ2VBc1N0cmluZ0hlbHBlciwgb2Zmc2V0LCBjb250ZW50cywgb25TdWNjZXNz
KTsKLX0KLQotLy8gQ3JlYXRlcyBhIGZpbGUgY2FsbGVkIGZpbGVOYW1lIGluIGZpbGVTeXN0ZW0n
cyByb290IGRpcmVjdG9yeSwgdHJ1bmNhdGVzIGl0IHRvIHplcm8gbGVuZ3RoIGp1c3QgaW4gY2Fz
ZSwgYW5kIGNhbGxzIG9uU3VjY2VzcywgcGFzc2luZyBpdCBhIEZpbGVFbnRyeSBhbmQgRmlsZVdy
aXRlciBmb3IgdGhlIG5ldyBmaWxlLgotZnVuY3Rpb24gY3JlYXRlRW1wdHlGaWxlKGZpbGVTeXN0
ZW0sIGZpbGVOYW1lLCBvblN1Y2Nlc3MpCi17Ci0gICAgZnVuY3Rpb24gZ2V0U3VjY2Vzc0Z1bmMo
ZmlsZUVudHJ5KSB7Ci0gICAgICAgIC8vIENyZWF0ZSBhIGZyZXNoIEZpbGVXcml0ZXIgaGVyZSwg
cmF0aGVyIHRoYW4gcGFzcyBpbiB0aGUgdXNlZCBvbmUuCi0gICAgICAgIC8vIFRoaXMgd2F5IHdl
IGRvbid0IGFjY2lkZW50YWxseSBsZWF2ZSBvdXIgZXZlbnQgaGFuZGxlcnMgYXR0YWNoZWQuCi0g
ICAgICAgIHJldHVybiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGZpbGVFbnRyeS5jcmVhdGVX
cml0ZXIoZnVuY3Rpb24oZncpIHsKLSAgICAgICAgICAgICAgICBvblN1Y2Nlc3MoZmlsZUVudHJ5
LCBmdyk7Ci0gICAgICAgICAgICB9LCBvbkVycm9yKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBm
dW5jdGlvbiBnZXRGaWxlV3JpdGVyQ2FsbGJhY2soZmlsZUVudHJ5KSB7Ci0gICAgICAgIHJldHVy
biBmdW5jdGlvbihmaWxlV3JpdGVyKSB7Ci0gICAgICAgICAgICB2YXIgc3VjY2Vzc0Z1bmMgPSBn
ZXRTdWNjZXNzRnVuYyhmaWxlRW50cnkpOwotICAgICAgICAgICAgZmlsZVdyaXRlci5vbkVycm9y
ID0gb25FcnJvcjsKLSAgICAgICAgICAgIGZpbGVXcml0ZXIub253cml0ZSA9IGZ1bmN0aW9uKCkg
ewotICAgICAgICAgICAgICAgIGZpbGVXcml0ZXIub253cml0ZSA9IG51bGw7Ci0gICAgICAgICAg
ICAgICAgdmVyaWZ5RmlsZUxlbmd0aChmaWxlRW50cnksIDAsIHN1Y2Nlc3NGdW5jKTsKLSAgICAg
ICAgICAgIH07Ci0gICAgICAgICAgICBmaWxlV3JpdGVyLnRydW5jYXRlKDApOwotICAgICAgICB9
Ci0gICAgfQotICAgIGZ1bmN0aW9uIG9uRmlsZUVudHJ5KGZpbGVFbnRyeSkgewotICAgICAgICBm
aWxlRW50cnlGb3JDbGVhbnVwID0gZmlsZUVudHJ5OwotICAgICAgICB2YXIgb25GaWxlV3JpdGVy
ID0gZ2V0RmlsZVdyaXRlckNhbGxiYWNrKGZpbGVFbnRyeSk7Ci0gICAgICAgIGZpbGVFbnRyeS5j
cmVhdGVXcml0ZXIob25GaWxlV3JpdGVyLCBvbkVycm9yKTsKLSAgICB9Ci0gICAgYXNzZXJ0KGZp
bGVTeXN0ZW0pOwotICAgIGZpbGVTeXN0ZW0ucm9vdC5nZXRGaWxlKGZpbGVOYW1lLCB7Y3JlYXRl
OnRydWV9LCBvbkZpbGVFbnRyeSwgb25FcnJvcik7Ci19Ci0KLWZ1bmN0aW9uIHdyaXRlU3RyaW5n
KGZpbGVFbnRyeSwgZmlsZVdyaXRlciwgb2Zmc2V0LCBkYXRhLCBvblN1Y2Nlc3MpCi17Ci0gICAg
dmFyIGJsb2IgPSBuZXcgQmxvYihbZGF0YV0pOwotICAgIGZpbGVXcml0ZXIuc2VlayhvZmZzZXQp
OwotICAgIGZpbGVXcml0ZXIud3JpdGUoYmxvYik7Ci0gICAgZmlsZVdyaXRlci5vbmVycm9yID0g
b25FcnJvcjsKLSAgICBpZiAob2Zmc2V0IDwgMCkKLSAgICAgICAgb2Zmc2V0ICs9IGZpbGVXcml0
ZXIubGVuZ3RoOwotICAgIGFzc2VydChvZmZzZXQgPj0gMCk7Ci0gICAgZmlsZVdyaXRlci5vbndy
aXRlID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgIGZpbGVXcml0ZXIub253cml0ZSA9IG51bGw7Ci0g
ICAgICAgIHZlcmlmeUJ5dGVSYW5nZUFzU3RyaW5nKGZpbGVFbnRyeSwgb2Zmc2V0LCBkYXRhLCBv
blN1Y2Nlc3MpOwotICAgIH07Ci19Ci0KLWZ1bmN0aW9uIHNldEZpbGVDb250ZW50cyhmaWxlRW50
cnksIGZpbGVXcml0ZXIsIGNvbnRlbnRzLCBvblN1Y2Nlc3MpIHsKLSAgICBmaWxlV3JpdGVyLm9u
ZXJyb3IgPSBvbkVycm9yOwotICAgIGZpbGVXcml0ZXIub253cml0ZSA9IGZ1bmN0aW9uKCkgewot
ICAgICAgICBmaWxlV3JpdGVyLm9ud3JpdGUgPSBudWxsOwotICAgICAgICB3cml0ZVN0cmluZyhm
aWxlRW50cnksIGZpbGVXcml0ZXIsIDAsIGNvbnRlbnRzLCBvblN1Y2Nlc3MpOwotICAgIH07Ci0g
ICAgZmlsZVdyaXRlci50cnVuY2F0ZSgwKTsKLX0KLQotZnVuY3Rpb24gc2V0dXBBbmRSdW5UZXN0
KHNpemUsIHRlc3ROYW1lLCB0ZXN0RnVuYykKLXsKLSAgICBpZiAoIXdlYmtpdFJlcXVlc3RGaWxl
U3lzdGVtKSB7Ci0gICAgICAgIGRlYnVnKCJUaGlzIHRlc3QgcmVxdWlyZXMgRmlsZVN5c3RlbSBB
UEkgc3VwcG9ydC4iKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBkZWJ1Zygic3RhcnRp
bmcgdGVzdCIpOwotICAgIHdlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKFRFTVBPUkFSWSwgc2l6ZSwg
ZnVuY3Rpb24oZnMpIHsKLSAgICAgICAgY3JlYXRlRW1wdHlGaWxlKGZzLCB0ZXN0TmFtZSwgdGVz
dEZ1bmMpOwotICAgIH0sIG9uRXJyb3IpOwotfQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxl
c3lzdGVtL3Jlc291cmNlcy9maWxlLXdyaXRlci13cml0ZS1vdmVybGFwcGVkLmpzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS13cml0ZXIt
d3JpdGUtb3ZlcmxhcHBlZC5qcwkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9maWxlc3lzdGVtL3Jlc291cmNlcy9maWxlLXdyaXRlci13cml0ZS1vdmVybGFwcGVkLmpzCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDczICswLDAgQEAKLWlmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsK
LSAgICBpbXBvcnRTY3JpcHRzKCdmcy13b3JrZXItY29tbW9uLmpzJyk7Ci0gICAgaW1wb3J0U2Ny
aXB0cygnLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7Ci0gICAgaW1wb3J0U2Ny
aXB0cygnZmlsZS13cml0ZXItdXRpbHMuanMnKTsKLX0KLQotZGVzY3JpcHRpb24oIlRlc3QgdXNp
bmcgRmlsZVdyaXRlci5zZWVrIHRvIHdyaXRlIG92ZXJsYXBwaW5nIGV4aXN0aW5nIGRhdGEgaW4g
YSBmaWxlLiIpOwotCi12YXIgZmlsZUVudHJ5OwotdmFyIGZpbGVXcml0ZXI7Ci12YXIgdGVzdERh
dGEgPSAiTG9yZW0gaXBzdW0iOwotdmFyIHNlZWtCYWNrd2FyZE9mZnNldCA9IC00OwotdmFyIHNl
ZWtGb3J3YXJkT2Zmc2V0ID0gNDsKLQotZnVuY3Rpb24gb25UZXN0U3VjY2VlZGVkKCkKLXsKLSAg
ICB0ZXN0UGFzc2VkKCJBbGwgd3JpdGVzIHZlcmlmaWVkLiIpOwotICAgIGNsZWFuVXAoKTsKLX0K
LQotZnVuY3Rpb24gdmFsaWRhdGVOb25leHRlbmRpbmdXcml0ZUVuZCgpIHsKLSAgICB2ZXJpZnlC
eXRlUmFuZ2VBc1N0cmluZyhmaWxlRW50cnksIHRlc3REYXRhLmxlbmd0aCArIHNlZWtGb3J3YXJk
T2Zmc2V0LCB0ZXN0RGF0YS5zbGljZShzZWVrRm9yd2FyZE9mZnNldCksIG9uVGVzdFN1Y2NlZWRl
ZCk7Ci19Ci0KLWZ1bmN0aW9uIHZhbGlkYXRlTm9uZXh0ZW5kaW5nV3JpdGVTdGFydCgpIHsKLSAg
ICB0ZXN0UGFzc2VkKCJOb25leHRlbmRpbmcgd3JpdGUgdmFsaWRhdGVkLiIpOwotICAgIGFzc2Vy
dChmaWxlV3JpdGVyLmxlbmd0aCA9PSB0ZXN0RGF0YS5sZW5ndGggKiAyKTsKLSAgICB2ZXJpZnlC
eXRlUmFuZ2VBc1N0cmluZyhmaWxlRW50cnksIDAsIHRlc3REYXRhLnNsaWNlKDAsIHNlZWtGb3J3
YXJkT2Zmc2V0KSwgdmFsaWRhdGVOb25leHRlbmRpbmdXcml0ZUVuZCk7Ci19Ci0KLWZ1bmN0aW9u
IHRlc3ROb25leHRlbmRpbmdXcml0ZSgpIHsKLSAgICB3cml0ZVN0cmluZyhmaWxlRW50cnksIGZp
bGVXcml0ZXIsIHNlZWtGb3J3YXJkT2Zmc2V0LCB0ZXN0RGF0YSwgdmFsaWRhdGVOb25leHRlbmRp
bmdXcml0ZVN0YXJ0KTsKLX0KLQotZnVuY3Rpb24gc2V0dXBOb25leHRlbmRpbmdXcml0ZSgpIHsK
LSAgICB0ZXN0UGFzc2VkKCJQb3NpdGl2ZSBzZWVrIHZhbGlkYXRlZC4iKTsKLSAgICBzZXRGaWxl
Q29udGVudHMoZmlsZUVudHJ5LCBmaWxlV3JpdGVyLCB0ZXN0RGF0YSArIHRlc3REYXRhLCB0ZXN0
Tm9uZXh0ZW5kaW5nV3JpdGUpOwotfQotCi1mdW5jdGlvbiB2YWxpZGF0ZVNlZWtGb3J3YXJkKCkg
ewotICAgIGFzc2VydChmaWxlV3JpdGVyLmxlbmd0aCA9PSB0ZXN0RGF0YS5sZW5ndGggKyBzZWVr
Rm9yd2FyZE9mZnNldCk7Ci0gICAgdmVyaWZ5Qnl0ZVJhbmdlQXNTdHJpbmcoZmlsZUVudHJ5LCAw
LCB0ZXN0RGF0YS5zbGljZSgwLCBzZWVrRm9yd2FyZE9mZnNldCksIHNldHVwTm9uZXh0ZW5kaW5n
V3JpdGUpOwotfQotCi1mdW5jdGlvbiB0ZXN0U2Vla0ZvcndhcmQoKSB7Ci0gICAgd3JpdGVTdHJp
bmcoZmlsZUVudHJ5LCBmaWxlV3JpdGVyLCBzZWVrRm9yd2FyZE9mZnNldCwgdGVzdERhdGEsIHZh
bGlkYXRlU2Vla0ZvcndhcmQpOwotfQotCi1mdW5jdGlvbiBzZXR1cFNlZWtGb3J3YXJkKCkgewot
ICAgIHRlc3RQYXNzZWQoIk5lZ2F0aXZlIHNlZWsgdmFsaWRhdGVkLiIpOwotICAgIHNldEZpbGVD
b250ZW50cyhmaWxlRW50cnksIGZpbGVXcml0ZXIsIHRlc3REYXRhLCB0ZXN0U2Vla0ZvcndhcmQp
OwotfQotCi1mdW5jdGlvbiB2YWxpZGF0ZVNlZWtCYWNrd2FyZCgpIHsKLSAgICBhc3NlcnQoZmls
ZVdyaXRlci5sZW5ndGggPT0gMiAqIHRlc3REYXRhLmxlbmd0aCArIHNlZWtCYWNrd2FyZE9mZnNl
dCk7Ci0gICAgdmVyaWZ5Qnl0ZVJhbmdlQXNTdHJpbmcoZmlsZUVudHJ5LCAwLCB0ZXN0RGF0YS5z
bGljZSgwLCB0ZXN0RGF0YS5sZW5ndGggKyBzZWVrQmFja3dhcmRPZmZzZXQpLCBzZXR1cFNlZWtG
b3J3YXJkKTsKLX0KLQotZnVuY3Rpb24gdGVzdFNlZWtCYWNrd2FyZCgpIHsKLSAgICB3cml0ZVN0
cmluZyhmaWxlRW50cnksIGZpbGVXcml0ZXIsIHNlZWtCYWNrd2FyZE9mZnNldCwgdGVzdERhdGEs
IHZhbGlkYXRlU2Vla0JhY2t3YXJkKTsKLX0KLQotLy8gRWFjaCB0ZXN0IGhhcyAzIHBoYXNlczog
c2V0dXAsIGV4ZWN1dGlvbiwgYW5kIHZhbGlkYXRpb24uICBJbiB0aGUgc2V0dXAgcGhhc2UsIHdl
IG1ha2Ugc3VyZSB0aGF0IHRoZXJlJ3MgYSBGaWxlV3JpdGVyIHBvaW50aW5nIGF0IGEgZmlsZSB3
aXRoIGFwcHJvcHJpYXRlCi0vLyBkYXRhIGZvciB0aGUgdGVzdCB3ZSB3YW50IHRvIHJ1bi4gIElu
IHRoZSBleGVjdXRpb24gcGhhc2UsIHdlIGRvIGEgc2VlayBhbmQgYSB3cml0ZSwgYW5kIHRoZSB1
dGlsaXR5IGZ1bmN0aW9uIHRoYXQgZG9lcyB0aG9zZSBhbHNvIHZhbGlkYXRlcyB0aGF0IHRoZSBk
YXRhCi0vLyBhY3R1YWxseSBnb3Qgd3JpdHRlbi4gIFNvIGluIHRoZSB2YWxpZGF0aW9uIHBoYXNl
LCB3ZSBvbmx5IGhhdmUgdG8gY2hlY2sgdGhhdCB0aGUgcmVzdCBvZiB0aGUgZmlsZSBkaWRuJ3Qg
Z2V0IGNvcnJ1cHRlZCB3aGlsZSB3ZSB3ZXJlIHdyaXRpbmcgb3VyIGJpdC4KLWZ1bmN0aW9uIHJ1
blRlc3QoZmlsZUVudHJ5SW4sIGZpbGVXcml0ZXJJbikgewotICAgIGZpbGVFbnRyeSA9IGZpbGVF
bnRyeUluOwotICAgIGZpbGVXcml0ZXIgPSBmaWxlV3JpdGVySW47Ci0gICAgc2V0RmlsZUNvbnRl
bnRzKGZpbGVFbnRyeSwgZmlsZVdyaXRlciwgdGVzdERhdGEsIHRlc3RTZWVrQmFja3dhcmQpOwot
fQotCi12YXIganNUZXN0SXNBc3luYyA9IHRydWU7Ci1zZXR1cEFuZFJ1blRlc3QoMTAyNCwgJ2Zp
bGUtd3JpdGVyLXRydW5jYXRlLWV4dGVuZCcsIHJ1blRlc3QpOwpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9mcy10ZXN0LXV0aWwuanMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9mcy10ZXN0LXV0aWwuanMJKHJl
dmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMv
ZnMtdGVzdC11dGlsLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDkyICswLDAgQEAKLWZ1bmN0aW9u
IGJpbmRDYWxsYmFjayhvYmosIGNhbGxiYWNrLCBhcmcxLCBhcmcyLCBhcmczKQotewotICAgIHJl
dHVybiBmdW5jdGlvbihhcmcpIHsKLSAgICAgICAgaWYgKGFyZyA9PSB1bmRlZmluZWQpCi0gICAg
ICAgICAgICBjYWxsYmFjay5hcHBseShvYmosIFthcmcxLCBhcmcyLCBhcmczXSk7Ci0gICAgICAg
IGVsc2UKLSAgICAgICAgICAgIGNhbGxiYWNrLmFwcGx5KG9iaiwgW2FyZywgYXJnMSwgYXJnMiwg
YXJnM10pOwotICAgIH07Ci19Ci0KLS8vIFVzYWdlOgotLy8gICB2YXIgaGVscGVyID0gbmV3IEpv
aW5IZWxwZXI7Ci0vLwotLy8gICBoZWxwZXIucnVuKGZ1bmN0aW9uKCkgeyAvKiBkbyBzb21ldGhp
bmcgdGhhdCBldmVudHVhbGx5IGNhbGxzIGhlbHBlci5kb25lKCk7ICovIH0pOwotLy8gICBoZWxw
ZXIucnVuKGZ1bmN0aW9uKCkgeyAvKiBkbyBzb21ldGhpbmcgdGhhdCBldmVudHVhbGx5IGNhbGxz
IGhlbHBlci5kb25lKCk7ICovIH0pOwotLy8gICAuLi4KLS8vICAgaGVscGVyLmpvaW4oam9pbkNh
bGxiYWNrKTsKLS8vCi12YXIgSm9pbkhlbHBlciA9IGZ1bmN0aW9uKCkKLXsKLSAgICB0aGlzLnBl
bmRpbmdPcGVyYXRpb25zID0gW107Ci0gICAgdGhpcy5wZW5kaW5nT3BlcmF0aW9uQ291bnQgPSAw
OwotICAgIHRoaXMuam9pbkNhbGxiYWNrID0gbnVsbDsKLQotICAgIHRoaXMucnVuID0gZnVuY3Rp
b24ob3BlcmF0aW9uKQotICAgIHsKLSAgICAgICAgdGhpcy5wZW5kaW5nT3BlcmF0aW9uQ291bnQr
KzsKLSAgICAgICAgb3BlcmF0aW9uKCk7Ci0gICAgfTsKLQotICAgIC8vIENhbGwgdGhpcyB3aGVu
IGFuIG9wZXJhdGlvbiBpcyBkb25lLgotICAgIHRoaXMuZG9uZSA9IGZ1bmN0aW9uKCkKLSAgICB7
Ci0gICAgICAgIHRoaXMucGVuZGluZ09wZXJhdGlvbkNvdW50LS07Ci0gICAgICAgIGlmICh0aGlz
LnBlbmRpbmdPcGVyYXRpb25Db3VudCA9PSAwICYmIHRoaXMuam9pbkNhbGxiYWNrKQotICAgICAg
ICAgICAgdGhpcy5qb2luQ2FsbGJhY2soKTsKLSAgICB9OwotCi0gICAgLy8gVGhpcyBldmVudHVh
bGx5IGNhbGxzIHRoZSBqb2luQ2FsbGJhY2sgd2hlbiBoZWxwZXIuZG9uZSgpIGlzIGNhbGxlZCBh
cyBtYW55IHRpbWVzIGFzIGhlbHBlci5ydW4oKSBpcyBjYWxsZWQuCi0gICAgdGhpcy5qb2luID0g
ZnVuY3Rpb24oam9pbkNhbGxiYWNrKQotICAgIHsKLSAgICAgICAgaWYgKHRoaXMucGVuZGluZ09w
ZXJhdGlvbkNvdW50ID09IDApCi0gICAgICAgICAgICBqb2luQ2FsbGJhY2soKTsKLSAgICAgICAg
ZWxzZQotICAgICAgICAgICAgdGhpcy5qb2luQ2FsbGJhY2sgPSBqb2luQ2FsbGJhY2s7Ci0gICAg
fTsKLX07Ci0KLS8vIFJlbW92ZSBldmVyeXRoaW5nIGluIHRoZSBnaXZlbiBkaXJlY3RvcnkuCi1m
dW5jdGlvbiByZW1vdmVBbGxJbkRpcmVjdG9yeShkaXJlY3RvcnksIHN1Y2Nlc3NDYWxsYmFjaywg
ZXJyb3JDYWxsYmFjaykgewotICAgIHZhciBSZW1vdmVBbGxJbkRpcmVjdG9yeUhlbHBlciA9IGZ1
bmN0aW9uKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykgewotICAgICAgICB0aGlzLmVu
dHJpZXNDb3VudCA9IDA7Ci0gICAgICAgIHRoaXMuZG9uZSA9IGZhbHNlOwotICAgICAgICB0aGlz
LnJlYWRlciA9IG51bGw7Ci0gICAgICAgIHRoaXMuc3VjY2Vzc0NhbGxiYWNrID0gc3VjY2Vzc0Nh
bGxiYWNrOwotICAgICAgICB0aGlzLmVycm9yQ2FsbGJhY2sgPSBlcnJvckNhbGxiYWNrOwotCi0g
ICAgICAgIHRoaXMuZW50cnlSZW1vdmVkQ2FsbGJhY2sgPSBiaW5kQ2FsbGJhY2sodGhpcywgZnVu
Y3Rpb24oZW50cnkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICgtLXRoaXMuZW50cmllc0Nv
dW50ID09IDAgJiYgdGhpcy5zdWNjZXNzQ2FsbGJhY2sgJiYgdGhpcy5kb25lKSB7Ci0gICAgICAg
ICAgICAgICAgdGhpcy5zdWNjZXNzQ2FsbGJhY2soKTsKLSAgICAgICAgICAgICAgICB0aGlzLnN1
Y2Nlc3NDYWxsYmFjayA9IG51bGw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0pOwotCi0gICAg
ICAgIHRoaXMuZW50cmllc0NhbGxiYWNrID0gYmluZENhbGxiYWNrKHRoaXMsIGZ1bmN0aW9uKGVu
dHJpZXMpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZW50cmll
cy5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgICAgIHRoaXMuZW50cmllc0NvdW50Kys7Ci0g
ICAgICAgICAgICAgICAgaWYgKGVudHJpZXNbaV0uaXNEaXJlY3RvcnkpCi0gICAgICAgICAgICAg
ICAgICAgIGVudHJpZXNbaV0ucmVtb3ZlUmVjdXJzaXZlbHkodGhpcy5lbnRyeVJlbW92ZWRDYWxs
YmFjaywgdGhpcy5lcnJvckNhbGxiYWNrKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgICAgIGVudHJpZXNbaV0ucmVtb3ZlKHRoaXMuZW50cnlSZW1vdmVkQ2FsbGJhY2ss
IHRoaXMuZXJyb3JDYWxsYmFjayk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoZW50
cmllcy5sZW5ndGgpCi0gICAgICAgICAgICAgICAgdGhpcy5yZWFkZXIucmVhZEVudHJpZXModGhp
cy5lbnRyaWVzQ2FsbGJhY2ssIHRoaXMuZXJyb3JDYWxsYmFjayk7Ci0gICAgICAgICAgICBlbHNl
IGlmICh0aGlzLmVudHJpZXNDb3VudCA+IDApCi0gICAgICAgICAgICAgICAgdGhpcy5kb25lID0g
dHJ1ZTsKLSAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuc3VjY2Vzc0NhbGxiYWNrKQotICAgICAg
ICAgICAgICAgIHRoaXMuc3VjY2Vzc0NhbGxiYWNrKCk7Ci0gICAgICAgIH0pOwotCi0gICAgICAg
IHRoaXMucmVtb3ZlQWxsSW5EaXJlY3RvcnkgPSBmdW5jdGlvbihkaXJlY3RvcnkpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIHRoaXMucmVhZGVyID0gZGlyZWN0b3J5LmNyZWF0ZVJlYWRlcigpOwot
ICAgICAgICAgICAgdGhpcy5yZWFkZXIucmVhZEVudHJpZXModGhpcy5lbnRyaWVzQ2FsbGJhY2ss
IHRoaXMuZXJyb3JDYWxsYmFjayk7Ci0gICAgICAgIH07Ci0gICAgfTsKLQotICAgIHZhciBoZWxw
ZXIgPSBuZXcgUmVtb3ZlQWxsSW5EaXJlY3RvcnlIZWxwZXIoc3VjY2Vzc0NhbGxiYWNrLCBlcnJv
ckNhbGxiYWNrKTsKLSAgICBoZWxwZXIucmVtb3ZlQWxsSW5EaXJlY3RvcnkoZGlyZWN0b3J5KTsK
LX0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZnMtd29ya2Vy
LWNvbW1vbi5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVz
b3VyY2VzL2ZzLXdvcmtlci1jb21tb24uanMJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRl
c3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZnMtd29ya2VyLWNvbW1vbi5qcwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwxOSArMCwwIEBACi1mdW5jdGlvbiByZW1vdmVBbGxJbkRpcmVjdG9yeVN5
bmMoZGlyZWN0b3J5KSB7Ci0gICAgaWYgKCFkaXJlY3RvcnkpCi0gICAgICAgIHJldHVybjsKLSAg
ICB2YXIgcmVhZGVyID0gZGlyZWN0b3J5LmNyZWF0ZVJlYWRlcigpOwotICAgIGRvIHsKLSAgICAg
ICAgdmFyIGVudHJpZXMgPSByZWFkZXIucmVhZEVudHJpZXMoKTsKLSAgICAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBlbnRyaWVzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICBpZiAoZW50cmll
c1tpXS5pc0RpcmVjdG9yeSkKLSAgICAgICAgICAgICAgICBlbnRyaWVzW2ldLnJlbW92ZVJlY3Vy
c2l2ZWx5KCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgZW50cmllc1tpXS5y
ZW1vdmUoKTsKLSAgICAgICAgfQotICAgIH0gd2hpbGUgKGVudHJpZXMubGVuZ3RoKTsKLX0KLQot
aWYgKHRoaXMuaW1wb3J0U2NyaXB0cyAmJiAhdGhpcy53ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbSkg
ewotICAgIGRlYnVnKCdUaGlzIHRlc3QgcmVxdWlyZXMgRmlsZVN5c3RlbSBBUEkuJyk7Ci0gICAg
ZmluaXNoSlNUZXN0KCk7Ci19CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVz
b3VyY2VzL29wLWNvcHkuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lz
dGVtL3Jlc291cmNlcy9vcC1jb3B5LmpzCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL29wLWNvcHkuanMJKHdvcmtpbmcgY29weSkKQEAg
LTEsMjU3ICswLDAgQEAKLXZhciB0ZXN0Q2FzZXMgPSBbCi0gICAgewotICAgICAgICBuYW1lOiAn
Q29weUZpbGVTaW1wbGUnLAotICAgICAgICBwcmVjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtm
dWxsUGF0aDonL2EnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDon
L2EvYid9Ci0gICAgICAgIF0sCi0gICAgICAgIHRlc3RzOiBbCi0gICAgICAgICAgICBmdW5jdGlv
bihoZWxwZXIpIHsgaGVscGVyLmNvcHkoJy9hL2InLCAnL2EnLCAnYycpOyB9Ci0gICAgICAgIF0s
Ci0gICAgICAgIHBvc3Rjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EnLCBp
c0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYid9LAotICAgICAg
ICAgICAge2Z1bGxQYXRoOicvYS9jJ30KLSAgICAgICAgXSwKLSAgICB9LAotICAgIHsKLSAgICAg
ICAgbmFtZTogJ0NvcHlEaXJlY3RvcnlTaW1wbGUnLAotICAgICAgICBwcmVjb25kaXRpb246IFsK
LSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAg
ICAgIHtmdWxsUGF0aDonL2EvYicsIGlzRGlyZWN0b3J5OnRydWV9Ci0gICAgICAgIF0sCi0gICAg
ICAgIHRlc3RzOiBbCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmNvcHko
Jy9hL2InLCAnL2EnLCAnYycpOyB9LAotICAgICAgICBdLAotICAgICAgICBwb3N0Y29uZGl0aW9u
OiBbCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hJywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAg
ICAgICAgICB7ZnVsbFBhdGg6Jy9hL2InLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAg
IHtmdWxsUGF0aDonL2EvYycsIGlzRGlyZWN0b3J5OnRydWV9Ci0gICAgICAgIF0sCi0gICAgfSwK
LSAgICB7Ci0gICAgICAgIG5hbWU6ICdDb3B5RmlsZVRvRGlmZmVyZW50RGlyZWN0b3J5JywKLSAg
ICAgICAgcHJlY29uZGl0aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hJywgaXNEaXJl
Y3Rvcnk6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hL2InfSwKLSAgICAgICAgICAg
IHtmdWxsUGF0aDonL2MnLCBpc0RpcmVjdG9yeTp0cnVlfQotICAgICAgICBdLAotICAgICAgICB0
ZXN0czogWwotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5jb3B5KCcvYS9i
JywgJy9jJywgJ2QnKTsgfSwKLSAgICAgICAgXSwKLSAgICAgICAgcG9zdGNvbmRpdGlvbjogWwot
ICAgICAgICAgICAge2Z1bGxQYXRoOicvYScsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICAg
ICAge2Z1bGxQYXRoOicvYS9iJ30sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9jL2QnfQotICAg
ICAgICBdLAotICAgIH0sCi0gICAgewotICAgICAgICBuYW1lOiAnQ29weUZpbGVXaXRoRW1wdHlO
YW1lJywKLSAgICAgICAgcHJlY29uZGl0aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9h
JywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hL2InfSwKLSAg
ICAgICAgICAgIHtmdWxsUGF0aDonL2MnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgXSwK
LSAgICAgICAgdGVzdHM6IFsKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIu
Y29weSgnL2EvYicsICcvYycsIG51bGwpOyB9LAotICAgICAgICBdLAotICAgICAgICBwb3N0Y29u
ZGl0aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hJywgaXNEaXJlY3Rvcnk6dHJ1ZX0s
Ci0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hL2InfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDon
L2MvYid9Ci0gICAgICAgIF0sCi0gICAgfSwKLSAgICB7Ci0gICAgICAgIG5hbWU6ICdDb3B5Rmls
ZVdpdGhFbXB0eU5hbWVUb1NhbWVEaXJlY3RvcnknLAotICAgICAgICBwcmVjb25kaXRpb246IFsK
LSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAg
ICAgIHtmdWxsUGF0aDonL2EvYid9LAotICAgICAgICBdLAotICAgICAgICB0ZXN0czogWwotICAg
ICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5jb3B5KCcvYS9iJywgJy9hJywgbnVs
bCwgRmlsZUVycm9yLklOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUik7IH0sCi0gICAgICAgIF0sCi0g
ICAgICAgIHBvc3Rjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EnLCBpc0Rp
cmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYid9LAotICAgICAgICBd
LAotICAgIH0sCi0gICAgewotICAgICAgICBuYW1lOiAnQ29weUZpbGVXaXRoU2FtZU5hbWUnLAot
ICAgICAgICBwcmVjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EnLCBpc0Rp
cmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYid9LAotICAgICAgICBd
LAotICAgICAgICB0ZXN0czogWwotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBl
ci5jb3B5KCcvYS9iJywgJy9hJywgJ2InLCBGaWxlRXJyb3IuSU5WQUxJRF9NT0RJRklDQVRJT05f
RVJSKTsgfSwKLSAgICAgICAgXSwKLSAgICAgICAgcG9zdGNvbmRpdGlvbjogWwotICAgICAgICAg
ICAge2Z1bGxQYXRoOicvYScsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQ
YXRoOicvYS9iJ30sCi0gICAgICAgIF0sCi0gICAgfSwKLSAgICB7Ci0gICAgICAgIG5hbWU6ICdD
b3B5Rm9yTm9uRXhpc3RlbnRFbnRyeScsCi0gICAgICAgIHByZWNvbmRpdGlvbjogWwotICAgICAg
ICAgICAge2Z1bGxQYXRoOicvYScsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1
bGxQYXRoOicvYS9iJ30sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9jJywgaXNEaXJlY3Rvcnk6
dHJ1ZX0sCi0gICAgICAgIF0sCi0gICAgICAgIHRlc3RzOiBbCi0gICAgICAgICAgICBmdW5jdGlv
bihoZWxwZXIpIHsgaGVscGVyLnJlbW92ZSgnL2EvYicpOyB9LAotICAgICAgICAgICAgZnVuY3Rp
b24oaGVscGVyKSB7IGhlbHBlci5jb3B5KCcvYS9iJywgJy9jJywgJ2InLCBGaWxlRXJyb3IuTk9U
X0ZPVU5EX0VSUik7IH0sCi0gICAgICAgIF0sCi0gICAgICAgIHBvc3Rjb25kaXRpb246IFsKLSAg
ICAgICAgICAgIHtmdWxsUGF0aDonL2EnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAg
IHtmdWxsUGF0aDonL2MnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgXSwKLSAgICB9LAot
ICAgIHsKLSAgICAgICAgbmFtZTogJ0NvcHlFbnRyeVRvTm9uRXhpc3RlbnREaXJlY3RvcnknLAot
ICAgICAgICBwcmVjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EnLCBpc0Rp
cmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYid9LAotICAgICAgICAg
ICAge2Z1bGxQYXRoOicvYycsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICBdLAotICAgICAg
ICB0ZXN0czogWwotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5yZW1vdmUo
Jy9jJyk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmNvcHkoJy9h
L2InLCAnL2MnLCAnYicsIEZpbGVFcnJvci5OT1RfRk9VTkRfRVJSKTsgfSwKLSAgICAgICAgXSwK
LSAgICAgICAgcG9zdGNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOicvYScsIGlz
RGlyZWN0b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYS9iJ30sCi0gICAgICAg
IF0sCi0gICAgfSwKLSAgICB7Ci0gICAgICAgIG5hbWU6ICdDb3B5RW50cnlUb0l0c0NoaWxkJywK
LSAgICAgICAgcHJlY29uZGl0aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hJywgaXNE
aXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hL2InLCBpc0RpcmVjdG9y
eTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYi9jJywgaXNEaXJlY3Rvcnk6dHJ1
ZX0sCi0gICAgICAgIF0sCi0gICAgICAgIHRlc3RzOiBbCi0gICAgICAgICAgICBmdW5jdGlvbiho
ZWxwZXIpIHsgaGVscGVyLmNvcHkoJy9hJywgJy9hL2InLCAnZCcsIEZpbGVFcnJvci5JTlZBTElE
X01PRElGSUNBVElPTl9FUlIpOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhl
bHBlci5jb3B5KCcvYS9iJywgJy9hL2IvYycsICdkJywgRmlsZUVycm9yLklOVkFMSURfTU9ESUZJ
Q0FUSU9OX0VSUik7IH0sCi0gICAgICAgIF0sCi0gICAgICAgIHBvc3Rjb25kaXRpb246IFsKLSAg
ICAgICAgICAgIHtmdWxsUGF0aDonL2EnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAg
IHtmdWxsUGF0aDonL2EvYicsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQ
YXRoOicvYS9iL2MnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgXSwKLSAgICB9LAotICAg
IHsKLSAgICAgICAgbmFtZTogJ0NvcHlSZWN1cnNpdmUnLAotICAgICAgICBwcmVjb25kaXRpb246
IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAg
ICAgICAgIHtmdWxsUGF0aDonL2EvYicsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICAgICAg
e2Z1bGxQYXRoOicvYS9iL2MnfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYi9kJ30sCi0g
ICAgICAgICAgICB7ZnVsbFBhdGg6Jy9iJywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgIF0s
Ci0gICAgICAgIHRlc3RzOiBbCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVy
LmNvcHkoJy9hJywgJy9iJywgJ2EnKTsgfSwKLSAgICAgICAgXSwKLSAgICAgICAgcG9zdGNvbmRp
dGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOicvYScsIGlzRGlyZWN0b3J5OnRydWV9LAot
ICAgICAgICAgICAge2Z1bGxQYXRoOicvYS9iJywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAg
ICAgICB7ZnVsbFBhdGg6Jy9hL2IvYyd9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYS9iL2Qn
fSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2IvYScsIGlzRGlyZWN0b3J5OnRydWV9LAotICAg
ICAgICAgICAge2Z1bGxQYXRoOicvYi9hL2InLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAg
ICAgIHtmdWxsUGF0aDonL2IvYS9iL2MnfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2IvYS9i
L2QnfSwKLSAgICAgICAgXSwKLSAgICB9LAotICAgIHsKLSAgICAgICAgbmFtZTogIk92ZXJ3cml0
aW5nQ29weUZpbGVUb0ZpbGUiLAotICAgICAgICBwcmVjb25kaXRpb246IFsKLSAgICAgICAgICAg
IHtmdWxsUGF0aDoiL2EifSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDoiL2IifSwKLSAgICAgICAg
XSwKLSAgICAgICAgdGVzdHM6IFsKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikge2hlbHBl
ci5jb3B5KCIvYSIsIi8iLCJiIik7fQotICAgICAgICBdLAotICAgICAgICBwb3N0Y29uZGl0aW9u
OiBbCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Ii9hIn0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6
Ii9iIn0sCi0gICAgICAgIF0sCi0gICAgfSwKLSAgICB7Ci0gICAgICAgIG5hbWU6ICJPdmVyd3Jp
dGluZ0NvcHlEaXJlY3RvcnlUb0VtcHR5RGlyZWN0b3J5IiwKLSAgICAgICAgcHJlY29uZGl0aW9u
OiBbCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Ii9hIiwgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAg
ICAgICAgICB7ZnVsbFBhdGg6Ii9hL2IifSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDoiL2MiLCBp
c0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgXSwKLSAgICAgICAgdGVzdHM6IFsKLSAgICAgICAg
ICAgIGZ1bmN0aW9uKGhlbHBlcikge2hlbHBlci5jb3B5KCIvYSIsIi8iLCJjIik7fQotICAgICAg
ICBdLAotICAgICAgICBwb3N0Y29uZGl0aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Ii9h
IiwgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Ii9hL2IifSwKLSAg
ICAgICAgICAgIHtmdWxsUGF0aDoiL2MiLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAg
IHtmdWxsUGF0aDoiL2MvYiJ9LAotICAgICAgICBdLAotICAgIH0sCi0gICAgewotICAgICAgICBu
YW1lOiAiT3ZlcndyaXRpbmdDb3B5RmlsZVRvRGlyZWN0b3J5IiwKLSAgICAgICAgcHJlY29uZGl0
aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Ii9hIn0sCi0gICAgICAgICAgICB7ZnVsbFBh
dGg6Ii9iIiwgaXNEaXJlY3Rvcnk6IHRydWV9LAotICAgICAgICBdLAotICAgICAgICB0ZXN0czog
WwotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7aGVscGVyLmNvcHkoIi9hIiwiLyIsImIi
LEZpbGVFcnJvci5JTlZBTElEX01PRElGSUNBVElPTl9FUlIpO30KLSAgICAgICAgXSwKLSAgICAg
ICAgcG9zdGNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOiIvYSJ9LAotICAgICAg
ICAgICAge2Z1bGxQYXRoOiIvYiIsIGlzRGlyZWN0b3J5OiB0cnVlfSwKLSAgICAgICAgXSwKLSAg
ICB9LAotICAgIHsKLSAgICAgICAgbmFtZTogIk92ZXJ3cml0aW5nQ29weURpcmVjdG9yeVRvRmls
ZSIsCi0gICAgICAgIHByZWNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOiIvYSIs
IGlzRGlyZWN0b3J5OiB0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDoiL2IifSwKLSAgICAg
ICAgXSwKLSAgICAgICAgdGVzdHM6IFsKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikge2hl
bHBlci5jb3B5KCIvYSIsIi8iLCJiIixGaWxlRXJyb3IuSU5WQUxJRF9NT0RJRklDQVRJT05fRVJS
KTt9Ci0gICAgICAgIF0sCi0gICAgICAgIHBvc3Rjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtm
dWxsUGF0aDoiL2EiLCBpc0RpcmVjdG9yeTogdHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6
Ii9iIn0sCi0gICAgICAgIF0sCi0gICAgfSwKLSAgICB7Ci0gICAgICAgIG5hbWU6ICJPdmVyd3Jp
dGluZ0NvcHlGaWxlVG9Ob25lbXB0eURpcmVjdG9yeSIsCi0gICAgICAgIHByZWNvbmRpdGlvbjog
WwotICAgICAgICAgICAge2Z1bGxQYXRoOiIvYSJ9LAotICAgICAgICAgICAge2Z1bGxQYXRoOiIv
YiIsIGlzRGlyZWN0b3J5OiB0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDoiL2IvYyJ9LAot
ICAgICAgICBdLAotICAgICAgICB0ZXN0czogWwotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVy
KSB7aGVscGVyLmNvcHkoIi9hIiwiLyIsImIiLEZpbGVFcnJvci5JTlZBTElEX01PRElGSUNBVElP
Tl9FUlIpO30KLSAgICAgICAgXSwKLSAgICAgICAgcG9zdGNvbmRpdGlvbjogWwotICAgICAgICAg
ICAge2Z1bGxQYXRoOiIvYSJ9LAotICAgICAgICAgICAge2Z1bGxQYXRoOiIvYiIsIGlzRGlyZWN0
b3J5OiB0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDoiL2IvYyJ9LAotICAgICAgICBdLAot
ICAgIH0sCi0gICAgewotICAgICAgICBuYW1lOiAiT3ZlcndyaXRpbmdDb3B5RGlyZWN0b3J5VG9O
b25lbXB0eURpcmVjdG9yeSIsCi0gICAgICAgIHByZWNvbmRpdGlvbjogWwotICAgICAgICAgICAg
e2Z1bGxQYXRoOiIvYSIsIGlzRGlyZWN0b3J5OiB0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0
aDoiL2EvYiJ9LAotICAgICAgICAgICAge2Z1bGxQYXRoOiIvYyIsIGlzRGlyZWN0b3J5OiB0cnVl
fSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDoiL2MvZCJ9LAotICAgICAgICBdLAotICAgICAgICB0
ZXN0czogWwotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7aGVscGVyLmNvcHkoIi9hIiwi
LyIsImMiLEZpbGVFcnJvci5JTlZBTElEX01PRElGSUNBVElPTl9FUlIpO30KLSAgICAgICAgXSwK
LSAgICAgICAgcG9zdGNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOiIvYSIsIGlz
RGlyZWN0b3J5OiB0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDoiL2EvYiJ9LAotICAgICAg
ICAgICAge2Z1bGxQYXRoOiIvYyIsIGlzRGlyZWN0b3J5OiB0cnVlfSwKLSAgICAgICAgICAgIHtm
dWxsUGF0aDoiL2MvZCJ9LAotICAgICAgICBdLAotICAgIH0sCi1dOwpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9vcC1nZXQtZW50cnkuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9vcC1nZXQtZW50cnkuanMJ
KHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJj
ZXMvb3AtZ2V0LWVudHJ5LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE1NSArMCwwIEBACi12YXIg
dGVzdENhc2VzID0gWwotICAgIHsKLSAgICAgICAgbmFtZTogJ0NyZWF0ZVNpbXBsZScsCi0gICAg
ICAgIHByZWNvbmRpdGlvbjogWyBdLAotICAgICAgICB0ZXN0czogWwotICAgICAgICAgICAgZnVu
Y3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXREaXJlY3RvcnkoJy8nLCAnYScsIHtjcmVhdGU6dHJ1
ZX0pOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcv
JywgJ2InLCB7Y3JlYXRlOnRydWV9KTsgfQotICAgICAgICBdLAotICAgICAgICBwb3N0Y29uZGl0
aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hJywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0g
ICAgICAgICAgICB7ZnVsbFBhdGg6Jy9iJ30sCi0gICAgICAgIF0sCi0gICAgfSwKLSAgICB7Ci0g
ICAgICAgIG5hbWU6ICdDcmVhdGVOZXN0ZWQnLAotICAgICAgICBwcmVjb25kaXRpb246IFsgXSwK
LSAgICAgICAgdGVzdHM6IFsKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIu
Z2V0RGlyZWN0b3J5KCcvJywgJ2EnLCB7Y3JlYXRlOnRydWV9KTsgfSwKLSAgICAgICAgICAgIGZ1
bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RGlyZWN0b3J5KCcvYScsICdiJywge2NyZWF0ZTp0
cnVlfSk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldERpcmVj
dG9yeSgnL2EvYicsICdjJywge2NyZWF0ZTp0cnVlfSk7IH0sCi0gICAgICAgICAgICBmdW5jdGlv
bihoZWxwZXIpIHsgaGVscGVyLmdldERpcmVjdG9yeSgnL2EvYi9jJywgJ2QnLCB7Y3JlYXRlOnRy
dWV9KTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgn
L2EvYi9jL2QnLCAnZScsIHtjcmVhdGU6dHJ1ZX0pOyB9LAotICAgICAgICBdLAotICAgICAgICBw
b3N0Y29uZGl0aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hL2IvYy9kL2UnfSwKLSAg
ICAgICAgXSwKLSAgICB9LAotICAgIHsKLSAgICAgICAgbmFtZTogJ0NyZWF0ZU5lc3RlZFdpdGhB
YnNvbHV0ZVBhdGgnLAotICAgICAgICBwcmVjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxs
UGF0aDonL2R1bW15JywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgIF0sCi0gICAgICAgIHRl
c3RzOiBbCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldERpcmVjdG9y
eSgnL2R1bW15JywgJy9hJywge2NyZWF0ZTp0cnVlfSk7IH0sCi0gICAgICAgICAgICBmdW5jdGlv
bihoZWxwZXIpIHsgaGVscGVyLmdldERpcmVjdG9yeSgnL2R1bW15JywgJy9hL2InLCB7Y3JlYXRl
OnRydWV9KTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RGly
ZWN0b3J5KCcvZHVtbXknLCAnL2EvYi9jJywge2NyZWF0ZTp0cnVlfSk7IH0sCi0gICAgICAgICAg
ICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldERpcmVjdG9yeSgnL2R1bW15JywgJy9hL2Iv
Yy9kJywge2NyZWF0ZTp0cnVlfSk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsg
aGVscGVyLmdldEZpbGUoJy9kdW1teScsICcvYS9iL2MvZC9lJywge2NyZWF0ZTp0cnVlfSk7IH0K
LSAgICAgICAgXSwKLSAgICAgICAgcG9zdGNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQ
YXRoOicvZHVtbXknLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDon
L2EvYi9jL2QvZSd9LAotICAgICAgICBdLAotICAgIH0sCi0gICAgewotICAgICAgICBuYW1lOiAn
Q3JlYXRlTmVzdGVkV2l0aFJlbGF0aXZlUGF0aCcsCi0gICAgICAgIHByZWNvbmRpdGlvbjogWwot
ICAgICAgICAgICAge2Z1bGxQYXRoOicvYScsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICBd
LAotICAgICAgICB0ZXN0czogWwotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBl
ci5nZXREaXJlY3RvcnkoJy9hJywgJy4vYicsIHtjcmVhdGU6dHJ1ZX0pOyB9LAotICAgICAgICAg
ICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXREaXJlY3RvcnkoJy9hJywgJy4vLi4uJywg
e2NyZWF0ZTp0cnVlfSk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVy
LmdldERpcmVjdG9yeSgnL2EnLCAnLi4vYicsIHtjcmVhdGU6dHJ1ZX0pOyB9LAotICAgICAgICAg
ICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXREaXJlY3RvcnkoJy9hJywgJy4uLy4uL2Iv
YycsIHtjcmVhdGU6dHJ1ZX0pOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhl
bHBlci5nZXREaXJlY3RvcnkoJy9hJywgJy9hLy4uLy4uL2QnLCB7Y3JlYXRlOnRydWV9KTsgfSwK
LSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RGlyZWN0b3J5KCcvYScs
ICcvYS8uLi8uLi9iLy4vYy8uLi8uLi8uLi8uLi8uLi9lJywge2NyZWF0ZTp0cnVlfSk7IH0sCi0g
ICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldERpcmVjdG9yeSgnL2EnLCAn
Li4uL2YnLCB7Y3JlYXRlOnRydWV9KTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikg
eyBoZWxwZXIuZ2V0RGlyZWN0b3J5KCcvYScsICcvYS8uLi8uLi4vZycsIHtjcmVhdGU6dHJ1ZX0s
IEZpbGVFcnJvci5OT1RfRk9VTkRfRVJSKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBl
cikgeyBoZWxwZXIuZ2V0RmlsZSgnL2EnLCAnLi9iLnR4dCcsIHtjcmVhdGU6dHJ1ZX0pOyB9LAot
ICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvYScsICcuLi9i
LnR4dCcsIHtjcmVhdGU6dHJ1ZX0pOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7
IGhlbHBlci5nZXRGaWxlKCcvYScsICcuLi8uLi9iL2MudHh0Jywge2NyZWF0ZTp0cnVlfSk7IH0s
Ci0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy9hJywgJy9h
Ly4uLy4uL2QudHh0Jywge2NyZWF0ZTp0cnVlfSk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbiho
ZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy9hJywgJy9hLy4uLy4uL2IvLi9jLy4uLy4uLy4uLy4u
Ly4uL2UudHh0Jywge2NyZWF0ZTp0cnVlfSk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxw
ZXIpIHsgaGVscGVyLmdldEZpbGUoJy9hJywgJy4uLi9mLnR4dCcsIHtjcmVhdGU6dHJ1ZX0pOyB9
LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvYScsICcv
YS8uLi8uLi4vZy50eHQnLCB7Y3JlYXRlOnRydWV9LCBGaWxlRXJyb3IuTk9UX0ZPVU5EX0VSUik7
IH0sCi0gICAgICAgIF0sCi0gICAgICAgIHBvc3Rjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtm
dWxsUGF0aDonL2EnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDon
L2EvYicsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYicsIGlz
RGlyZWN0b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYi9jJywgaXNEaXJlY3Rv
cnk6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9kJywgaXNEaXJlY3Rvcnk6dHJ1ZX0s
Ci0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9lJywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAg
ICAgICB7ZnVsbFBhdGg6Jy9mJywgbm9uZXhpc3RlbnQ6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVs
bFBhdGg6Jy9hL2YnLCBub25leGlzdGVudDp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDon
L2cnLCBub25leGlzdGVudDp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvZycsIG5v
bmV4aXN0ZW50OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYS9iLnR4dCd9LAotICAg
ICAgICAgICAge2Z1bGxQYXRoOicvYi50eHQnfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2Iv
Yy50eHQnfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2QudHh0J30sCi0gICAgICAgICAgICB7
ZnVsbFBhdGg6Jy9lLnR4dCd9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvZi50eHQnLCBub25l
eGlzdGVudDp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvZi50eHQnLCBub25leGlz
dGVudDp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2cudHh0Jywgbm9uZXhpc3RlbnQ6
dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hL2cudHh0Jywgbm9uZXhpc3RlbnQ6dHJ1
ZX0sCi0gICAgICAgIF0sCi0gICAgfSwKLSAgICB7Ci0gICAgICAgIG5hbWU6ICdHZXRFeGlzdGlu
Z0VudHJ5JywKLSAgICAgICAgcHJlY29uZGl0aW9uOiBbIF0sCi0gICAgICAgIHRlc3RzOiBbCi0g
ICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldERpcmVjdG9yeSgnLycsICdh
Jywge2NyZWF0ZTp0cnVlfSk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVs
cGVyLmdldEZpbGUoJy8nLCAnYicsIHtjcmVhdGU6dHJ1ZX0pOyB9LAotICAgICAgICAgICAgZnVu
Y3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXREaXJlY3RvcnkoJy8nLCAnYScpOyB9LAotICAgICAg
ICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2InKTsgfQotICAg
ICAgICBdLAotICAgICAgICBwb3N0Y29uZGl0aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBhdGg6
Jy9hJywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9iJ30sCi0g
ICAgICAgIF0sCi0gICAgfSwKLSAgICB7Ci0gICAgICAgIG5hbWU6ICdHZXROb25FeGlzdGVudCcs
Ci0gICAgICAgIHByZWNvbmRpdGlvbjogWyBdLAotICAgICAgICB0ZXN0czogWwotICAgICAgICAg
ICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXREaXJlY3RvcnkoJy8nLCAnYScsIHt9LCBG
aWxlRXJyb3IuTk9UX0ZPVU5EX0VSUik7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIp
IHsgaGVscGVyLmdldEZpbGUoJy8nLCAnYicsIHt9LCBGaWxlRXJyb3IuTk9UX0ZPVU5EX0VSUik7
IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldERpcmVjdG9yeSgn
LycsICcvbm9uZXhpc3RlbnQvYScsIHtjcmVhdGU6dHJ1ZX0sIEZpbGVFcnJvci5OT1RfRk9VTkRf
RVJSKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgn
LycsICcvbm9uZXhpc3RlbnQvYicsIHtjcmVhdGU6dHJ1ZX0sIEZpbGVFcnJvci5OT1RfRk9VTkRf
RVJSKTsgfQotICAgICAgICBdLAotICAgICAgICBwb3N0Y29uZGl0aW9uOiBbIF0sCi0gICAgfSwK
LSAgICB7Ci0gICAgICAgIG5hbWU6ICdHZXRGaWxlRm9yRGlyZWN0b3J5JywKLSAgICAgICAgcHJl
Y29uZGl0aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hJywgaXNEaXJlY3Rvcnk6dHJ1
ZX0KLSAgICAgICAgXSwKLSAgICAgICAgdGVzdHM6IFsKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhl
bHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdhJywge30sIEZpbGVFcnJvci5UWVBFX01JU01B
VENIX0VSUik7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZp
bGUoJy8nLCAnL2EnLCB7fSwgRmlsZUVycm9yLlRZUEVfTUlTTUFUQ0hfRVJSKTsgfSwKLSAgICAg
ICAgXSwKLSAgICAgICAgcG9zdGNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOicv
YScsIGlzRGlyZWN0b3J5OnRydWV9Ci0gICAgICAgIF0sCi0gICAgfSwKLSAgICB7Ci0gICAgICAg
IG5hbWU6ICdHZXREaXJlY3RvcnlGb3JGaWxlJywKLSAgICAgICAgcHJlY29uZGl0aW9uOiBbCi0g
ICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hJ30KLSAgICAgICAgXSwKLSAgICAgICAgdGVzdHM6IFsK
LSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RGlyZWN0b3J5KCcvJywg
J2EnLCB7fSwgRmlsZUVycm9yLlRZUEVfTUlTTUFUQ0hfRVJSKTsgfSwKLSAgICAgICAgICAgIGZ1
bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RGlyZWN0b3J5KCcvJywgJy9hJywge30sIEZpbGVF
cnJvci5UWVBFX01JU01BVENIX0VSUik7IH0sCi0gICAgICAgIF0sCi0gICAgICAgIHBvc3Rjb25k
aXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EnfQotICAgICAgICBdLAotICAgIH0s
Ci0gICAgewotICAgICAgICBuYW1lOiAnQ3JlYXRlV2l0aEV4Y2x1c2l2ZScsCi0gICAgICAgIHBy
ZWNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOicvYScsIGlzRGlyZWN0b3J5OnRy
dWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYid9Ci0gICAgICAgIF0sCi0gICAgICAgIHRl
c3RzOiBbCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldERpcmVjdG9y
eSgnLycsICdhJywge2NyZWF0ZTp0cnVlLCBleGNsdXNpdmU6dHJ1ZX0sIEZpbGVFcnJvci5JTlZB
TElEX01PRElGSUNBVElPTl9FUlIpOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7
IGhlbHBlci5nZXRGaWxlKCcvJywgJ2InLCB7Y3JlYXRlOnRydWUsIGV4Y2x1c2l2ZTp0cnVlfSwg
RmlsZUVycm9yLklOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUik7IH0KLSAgICAgICAgXSwKLSAgICAg
ICAgcG9zdGNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOicvYScsIGlzRGlyZWN0
b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYid9Ci0gICAgICAgIF0sCi0gICAg
fSwKLV07CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL29wLWdl
dC1tZXRhZGF0YS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0v
cmVzb3VyY2VzL29wLWdldC1tZXRhZGF0YS5qcwkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9vcC1nZXQtbWV0YWRhdGEuanMJKHdvcmtp
bmcgY29weSkKQEAgLTEsMjcgKzAsMCBAQAotdmFyIHRlc3RDYXNlcyA9IFsKLSAgICB7Ci0gICAg
ICAgIG5hbWU6ICdHZXRNZXRhZGF0YScsCi0gICAgICAgIHByZWNvbmRpdGlvbjogWwotICAgICAg
ICAgICAge2Z1bGxQYXRoOicvdG1wJ30sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9maWxlMScs
IHNpemU6MH0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9maWxlMicsIHNpemU6MTB9LAotICAg
ICAgICAgICAge2Z1bGxQYXRoOicvZmlsZTMnLCBzaXplOjkwfSwKLSAgICAgICAgXSwKLSAgICAg
ICAgdGVzdHM6IFsKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0TWV0
YWRhdGEoJy8nKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0
RGlyZWN0b3J5KCcvJywgJy9hJywge2NyZWF0ZTp0cnVlfSk7IH0sCi0gICAgICAgICAgICBmdW5j
dGlvbihoZWxwZXIpIHsgaGVscGVyLmdldE1ldGFkYXRhKCcvYScpOyB9LAotICAgICAgICAgICAg
ZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRNZXRhZGF0YSgnL2ZpbGUxJyk7IH0sCi0gICAg
ICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldE1ldGFkYXRhKCcvZmlsZTInKTsg
fSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0TWV0YWRhdGEoJy9m
aWxlMycpOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxl
KCcvJywgJy9iJywge2NyZWF0ZTp0cnVlfSk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxw
ZXIpIHsgaGVscGVyLmdldE1ldGFkYXRhKCcvYicpOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24o
aGVscGVyKSB7IGhlbHBlci5yZW1vdmUoJy90bXAnKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9u
KGhlbHBlcikgeyBoZWxwZXIuZ2V0TWV0YWRhdGEoJy90bXAnLCBGaWxlRXJyb3IuTk9UX0ZPVU5E
X0VSUik7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLnNob3VsZEJl
R3JlYXRlclRoYW5PckVxdWFsKCcvYS5yZXR1cm5lZC5tb2RpZmljYXRpb25UaW1lJywgJy8ucmV0
dXJuZWQubW9kaWZpY2F0aW9uVGltZScpOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVy
KSB7IGhlbHBlci5zaG91bGRCZUdyZWF0ZXJUaGFuT3JFcXVhbCgnL2IucmV0dXJuZWQubW9kaWZp
Y2F0aW9uVGltZScsICcvLnJldHVybmVkLm1vZGlmaWNhdGlvblRpbWUnKTsgfSwKLSAgICAgICAg
ICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuc2hvdWxkQmVHcmVhdGVyVGhhbk9yRXF1YWwo
Jy9iLnJldHVybmVkLm1vZGlmaWNhdGlvblRpbWUnLCAnL2EucmV0dXJuZWQubW9kaWZpY2F0aW9u
VGltZScpOyB9Ci0gICAgICAgIF0sCi0gICAgICAgIHBvc3Rjb25kaXRpb246IFsgXSwKLSAgICB9
LAotXTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvb3AtZ2V0
LXBhcmVudC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVz
b3VyY2VzL29wLWdldC1wYXJlbnQuanMJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3Rz
L2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvb3AtZ2V0LXBhcmVudC5qcwkod29ya2luZyBjb3B5
KQpAQCAtMSwyMSArMCwwIEBACi12YXIgdGVzdENhc2VzID0gWwotICAgIHsKLSAgICAgICAgbmFt
ZTogJ0dldFBhcmVudCcsCi0gICAgICAgIHByZWNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1
bGxQYXRoOicvYScsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicv
YS9iJywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hL2IvYyd9
LAotICAgICAgICBdLAotICAgICAgICB0ZXN0czogWwotICAgICAgICAgICAgZnVuY3Rpb24oaGVs
cGVyKSB7IGhlbHBlci5nZXRQYXJlbnQoJy8nKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhl
bHBlcikgeyBoZWxwZXIuZ2V0UGFyZW50KCcvYScpOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24o
aGVscGVyKSB7IGhlbHBlci5nZXRQYXJlbnQoJy9hL2InKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0
aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0UGFyZW50KCcvYS9iL2MnKTsgfQotICAgICAgICBdLAot
ICAgICAgICBwb3N0Y29uZGl0aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hJywgaXNE
aXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hL2InLCBpc0RpcmVjdG9y
eTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYi9jJ30sCi0gICAgICAgIF0sCi0g
ICAgfSwKLV07CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL29w
LW1vdmUuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291
cmNlcy9vcC1tb3ZlLmpzCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zp
bGVzeXN0ZW0vcmVzb3VyY2VzL29wLW1vdmUuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsMjUyICsw
LDAgQEAKLXZhciB0ZXN0Q2FzZXMgPSBbCi0gICAgewotICAgICAgICBuYW1lOiAnTW92ZUZpbGVT
aW1wbGUnLAotICAgICAgICBwcmVjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDon
L2EnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYid9Ci0g
ICAgICAgIF0sCi0gICAgICAgIHRlc3RzOiBbCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIp
IHsgaGVscGVyLm1vdmUoJy9hL2InLCAnL2EnLCAnYycpOyB9Ci0gICAgICAgIF0sCi0gICAgICAg
IHBvc3Rjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EnLCBpc0RpcmVjdG9y
eTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYicsIG5vbmV4aXN0ZW50OnRydWV9
LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYS9jJ30KLSAgICAgICAgXSwKLSAgICB9LAotICAg
IHsKLSAgICAgICAgbmFtZTogJ01vdmVEaXJlY3RvcnlTaW1wbGUnLAotICAgICAgICBwcmVjb25k
aXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EnLCBpc0RpcmVjdG9yeTp0cnVlfSwK
LSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYicsIGlzRGlyZWN0b3J5OnRydWV9Ci0gICAgICAg
IF0sCi0gICAgICAgIHRlc3RzOiBbCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVs
cGVyLm1vdmUoJy9hL2InLCAnL2EnLCAnYycpOyB9LAotICAgICAgICBdLAotICAgICAgICBwb3N0
Y29uZGl0aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hJywgaXNEaXJlY3Rvcnk6dHJ1
ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hL2InLCBub25leGlzdGVudDp0cnVlfSwKLSAg
ICAgICAgICAgIHtmdWxsUGF0aDonL2EvYycsIGlzRGlyZWN0b3J5OnRydWV9Ci0gICAgICAgIF0s
Ci0gICAgfSwKLSAgICB7Ci0gICAgICAgIG5hbWU6ICdNb3ZlRmlsZVRvRGlmZmVyZW50RGlyZWN0
b3J5JywKLSAgICAgICAgcHJlY29uZGl0aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9h
JywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hL2InfSwKLSAg
ICAgICAgICAgIHtmdWxsUGF0aDonL2MnLCBpc0RpcmVjdG9yeTp0cnVlfQotICAgICAgICBdLAot
ICAgICAgICB0ZXN0czogWwotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5t
b3ZlKCcvYS9iJywgJy9jJywgJ2QnKTsgfSwKLSAgICAgICAgXSwKLSAgICAgICAgcG9zdGNvbmRp
dGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOicvYScsIGlzRGlyZWN0b3J5OnRydWV9LAot
ICAgICAgICAgICAge2Z1bGxQYXRoOicvYS9iJywgbm9uZXhpc3RlbnQ6dHJ1ZX0sCi0gICAgICAg
ICAgICB7ZnVsbFBhdGg6Jy9jL2QnfQotICAgICAgICBdLAotICAgIH0sCi0gICAgewotICAgICAg
ICBuYW1lOiAnTW92ZUZpbGVXaXRoRW1wdHlOYW1lJywKLSAgICAgICAgcHJlY29uZGl0aW9uOiBb
Ci0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hJywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAg
ICAgICB7ZnVsbFBhdGg6Jy9hL2InfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2MnLCBpc0Rp
cmVjdG9yeTp0cnVlfSwKLSAgICAgICAgXSwKLSAgICAgICAgdGVzdHM6IFsKLSAgICAgICAgICAg
IGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIubW92ZSgnL2EvYicsICcvYycsIG51bGwpOyB9LAot
ICAgICAgICBdLAotICAgICAgICBwb3N0Y29uZGl0aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBh
dGg6Jy9hJywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hL2In
LCBub25leGlzdGVudDp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2MvYid9Ci0gICAg
ICAgIF0sCi0gICAgfSwKLSAgICB7Ci0gICAgICAgIG5hbWU6ICdNb3ZlRmlsZVdpdGhFbXB0eU5h
bWVUb1NhbWVEaXJlY3RvcnknLAotICAgICAgICBwcmVjb25kaXRpb246IFsKLSAgICAgICAgICAg
IHtmdWxsUGF0aDonL2EnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0
aDonL2EvYid9LAotICAgICAgICBdLAotICAgICAgICB0ZXN0czogWwotICAgICAgICAgICAgZnVu
Y3Rpb24oaGVscGVyKSB7IGhlbHBlci5tb3ZlKCcvYS9iJywgJy9hJywgbnVsbCwgRmlsZUVycm9y
LklOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUik7IH0sCi0gICAgICAgIF0sCi0gICAgICAgIHBvc3Rj
b25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EnLCBpc0RpcmVjdG9yeTp0cnVl
fSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYid9LAotICAgICAgICBdLAotICAgIH0sCi0g
ICAgewotICAgICAgICBuYW1lOiAnTW92ZUZpbGVXaXRoU2FtZU5hbWUnLAotICAgICAgICBwcmVj
b25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EnLCBpc0RpcmVjdG9yeTp0cnVl
fSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYid9LAotICAgICAgICBdLAotICAgICAgICB0
ZXN0czogWwotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5tb3ZlKCcvYS9i
JywgJy9hJywgJ2InLCBGaWxlRXJyb3IuSU5WQUxJRF9NT0RJRklDQVRJT05fRVJSKTsgfSwKLSAg
ICAgICAgXSwKLSAgICAgICAgcG9zdGNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRo
OicvYScsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYS9iJ30s
Ci0gICAgICAgIF0sCi0gICAgfSwKLSAgICB7Ci0gICAgICAgIG5hbWU6ICdNb3ZlRm9yTm9uRXhp
c3RlbnRFbnRyeScsCi0gICAgICAgIHByZWNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQ
YXRoOicvYScsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYS9i
J30sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9jJywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAg
ICAgIF0sCi0gICAgICAgIHRlc3RzOiBbCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsg
aGVscGVyLnJlbW92ZSgnL2EvYicpOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7
IGhlbHBlci5tb3ZlKCcvYS9iJywgJy9jJywgJ2InLCBGaWxlRXJyb3IuTk9UX0ZPVU5EX0VSUik7
IH0sCi0gICAgICAgIF0sCi0gICAgICAgIHBvc3Rjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtm
dWxsUGF0aDonL2EnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDon
L2MnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgXSwKLSAgICB9LAotICAgIHsKLSAgICAg
ICAgbmFtZTogJ01vdmVFbnRyeVRvTm9uRXhpc3RlbnREaXJlY3RvcnknLAotICAgICAgICBwcmVj
b25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EnLCBpc0RpcmVjdG9yeTp0cnVl
fSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYid9LAotICAgICAgICAgICAge2Z1bGxQYXRo
OicvYycsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICBdLAotICAgICAgICB0ZXN0czogWwot
ICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5yZW1vdmUoJy9jJyk7IH0sCi0g
ICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLm1vdmUoJy9hL2InLCAnL2MnLCAn
YicsIEZpbGVFcnJvci5OT1RfRk9VTkRfRVJSKTsgfSwKLSAgICAgICAgXSwKLSAgICAgICAgcG9z
dGNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOicvYScsIGlzRGlyZWN0b3J5OnRy
dWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYS9iJ30sCi0gICAgICAgIF0sCi0gICAgfSwK
LSAgICB7Ci0gICAgICAgIG5hbWU6ICdNb3ZlRW50cnlUb0l0c0NoaWxkJywKLSAgICAgICAgcHJl
Y29uZGl0aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hJywgaXNEaXJlY3Rvcnk6dHJ1
ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hL2InLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAg
ICAgICAgICAgIHtmdWxsUGF0aDonL2EvYi9jJywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAg
IF0sCi0gICAgICAgIHRlc3RzOiBbCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVs
cGVyLm1vdmUoJy9hJywgJy9hL2InLCAnZCcsIEZpbGVFcnJvci5JTlZBTElEX01PRElGSUNBVElP
Tl9FUlIpOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5tb3ZlKCcv
YS9iJywgJy9hL2IvYycsICdkJywgRmlsZUVycm9yLklOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUik7
IH0sCi0gICAgICAgIF0sCi0gICAgICAgIHBvc3Rjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtm
dWxsUGF0aDonL2EnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDon
L2EvYicsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYS9iL2Mn
LCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgXSwKLSAgICB9LAotICAgIHsKLSAgICAgICAg
bmFtZTogJ01vdmVSZWN1cnNpdmUnLAotICAgICAgICBwcmVjb25kaXRpb246IFsKLSAgICAgICAg
ICAgIHtmdWxsUGF0aDonL2EnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxs
UGF0aDonL2EvYicsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicv
YS9iL2MnfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYi9kJ30sCi0gICAgICAgICAgICB7
ZnVsbFBhdGg6Jy9iJywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgIF0sCi0gICAgICAgIHRl
c3RzOiBbCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLm1vdmUoJy9hJywg
Jy9iJywgJ2EnKTsgfSwKLSAgICAgICAgXSwKLSAgICAgICAgcG9zdGNvbmRpdGlvbjogWwotICAg
ICAgICAgICAge2Z1bGxQYXRoOicvYScsIG5vbmV4aXN0ZW50OnRydWV9LAotICAgICAgICAgICAg
e2Z1bGxQYXRoOicvYi9hJywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBh
dGg6Jy9iL2EvYicsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicv
Yi9hL2IvYyd9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYi9hL2IvZCd9LAotICAgICAgICBd
LAotICAgIH0sCi0gICAgewotICAgICAgICBuYW1lOiAiT3ZlcndyaXRpbmdNb3ZlRmlsZVRvRmls
ZSIsCi0gICAgICAgIHByZWNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOiIvYSJ9
LAotICAgICAgICAgICAge2Z1bGxQYXRoOiIvYiJ9LAotICAgICAgICBdLAotICAgICAgICB0ZXN0
czogWwotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7aGVscGVyLm1vdmUoIi9hIiwiLyIs
ImIiKTt9Ci0gICAgICAgIF0sCi0gICAgICAgIHBvc3Rjb25kaXRpb246IFsKLSAgICAgICAgICAg
IHtmdWxsUGF0aDoiL2IifSwKLSAgICAgICAgXSwKLSAgICB9LAotICAgIHsKLSAgICAgICAgbmFt
ZTogIk92ZXJ3cml0aW5nTW92ZURpcmVjdG9yeVRvRW1wdHlEaXJlY3RvcnkiLAotICAgICAgICBw
cmVjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDoiL2EiLCBpc0RpcmVjdG9yeTp0
cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDoiL2EvYiJ9LAotICAgICAgICAgICAge2Z1bGxQ
YXRoOiIvYyIsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICBdLAotICAgICAgICB0ZXN0czog
WwotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7aGVscGVyLm1vdmUoIi9hIiwiLyIsImMi
KTt9Ci0gICAgICAgIF0sCi0gICAgICAgIHBvc3Rjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtm
dWxsUGF0aDoiL2MiLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDoi
L2MvYiJ9LAotICAgICAgICAgICAge2Z1bGxQYXRoOiIvYSIsIG5vbmV4aXN0ZW50OnRydWV9LAot
ICAgICAgICBdLAotICAgIH0sCi0gICAgewotICAgICAgICBuYW1lOiAiT3ZlcndyaXRpbmdNb3Zl
RmlsZVRvRGlyZWN0b3J5IiwKLSAgICAgICAgcHJlY29uZGl0aW9uOiBbCi0gICAgICAgICAgICB7
ZnVsbFBhdGg6Ii9hIn0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Ii9iIiwgaXNEaXJlY3Rvcnk6
IHRydWV9LAotICAgICAgICBdLAotICAgICAgICB0ZXN0czogWwotICAgICAgICAgICAgZnVuY3Rp
b24oaGVscGVyKSB7aGVscGVyLm1vdmUoIi9hIiwiLyIsImIiLEZpbGVFcnJvci5JTlZBTElEX01P
RElGSUNBVElPTl9FUlIpO30KLSAgICAgICAgXSwKLSAgICAgICAgcG9zdGNvbmRpdGlvbjogWwot
ICAgICAgICAgICAge2Z1bGxQYXRoOiIvYSJ9LAotICAgICAgICAgICAge2Z1bGxQYXRoOiIvYiIs
IGlzRGlyZWN0b3J5OiB0cnVlfSwKLSAgICAgICAgXSwKLSAgICB9LAotICAgIHsKLSAgICAgICAg
bmFtZTogIk92ZXJ3cml0aW5nTW92ZURpcmVjdG9yeVRvRmlsZSIsCi0gICAgICAgIHByZWNvbmRp
dGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOiIvYSIsIGlzRGlyZWN0b3J5OiB0cnVlfSwK
LSAgICAgICAgICAgIHtmdWxsUGF0aDoiL2IifSwKLSAgICAgICAgXSwKLSAgICAgICAgdGVzdHM6
IFsKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikge2hlbHBlci5tb3ZlKCIvYSIsIi8iLCJi
IixGaWxlRXJyb3IuSU5WQUxJRF9NT0RJRklDQVRJT05fRVJSKTt9Ci0gICAgICAgIF0sCi0gICAg
ICAgIHBvc3Rjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDoiL2EiLCBpc0RpcmVj
dG9yeTogdHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Ii9iIn0sCi0gICAgICAgIF0sCi0g
ICAgfSwKLSAgICB7Ci0gICAgICAgIG5hbWU6ICJPdmVyd3JpdGluZ01vdmVGaWxlVG9Ob25lbXB0
eURpcmVjdG9yeSIsCi0gICAgICAgIHByZWNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQ
YXRoOiIvYSJ9LAotICAgICAgICAgICAge2Z1bGxQYXRoOiIvYiIsIGlzRGlyZWN0b3J5OiB0cnVl
fSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDoiL2IvYyJ9LAotICAgICAgICBdLAotICAgICAgICB0
ZXN0czogWwotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7aGVscGVyLm1vdmUoIi9hIiwi
LyIsImIiLEZpbGVFcnJvci5JTlZBTElEX01PRElGSUNBVElPTl9FUlIpO30KLSAgICAgICAgXSwK
LSAgICAgICAgcG9zdGNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOiIvYSJ9LAot
ICAgICAgICAgICAge2Z1bGxQYXRoOiIvYiIsIGlzRGlyZWN0b3J5OiB0cnVlfSwKLSAgICAgICAg
ICAgIHtmdWxsUGF0aDoiL2IvYyJ9LAotICAgICAgICBdLAotICAgIH0sCi0gICAgewotICAgICAg
ICBuYW1lOiAiT3ZlcndyaXRpbmdNb3ZlRGlyZWN0b3J5VG9Ob25lbXB0eURpcmVjdG9yeSIsCi0g
ICAgICAgIHByZWNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOiIvYSIsIGlzRGly
ZWN0b3J5OiB0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDoiL2EvYiJ9LAotICAgICAgICAg
ICAge2Z1bGxQYXRoOiIvYyIsIGlzRGlyZWN0b3J5OiB0cnVlfSwKLSAgICAgICAgICAgIHtmdWxs
UGF0aDoiL2MvZCJ9LAotICAgICAgICBdLAotICAgICAgICB0ZXN0czogWwotICAgICAgICAgICAg
ZnVuY3Rpb24oaGVscGVyKSB7aGVscGVyLm1vdmUoIi9hIiwiLyIsImMiLEZpbGVFcnJvci5JTlZB
TElEX01PRElGSUNBVElPTl9FUlIpO30KLSAgICAgICAgXSwKLSAgICAgICAgcG9zdGNvbmRpdGlv
bjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOiIvYSIsIGlzRGlyZWN0b3J5OiB0cnVlfSwKLSAg
ICAgICAgICAgIHtmdWxsUGF0aDoiL2EvYiJ9LAotICAgICAgICAgICAge2Z1bGxQYXRoOiIvYyIs
IGlzRGlyZWN0b3J5OiB0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDoiL2MvZCJ9LAotICAg
ICAgICBdLAotICAgIH0sCi1dOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jl
c291cmNlcy9vcC1yZWFkLWRpcmVjdG9yeS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL29wLXJlYWQtZGlyZWN0b3J5LmpzCShyZXZpc2lvbiAx
NTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL29wLXJlYWQt
ZGlyZWN0b3J5LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDIzICswLDAgQEAKLXZhciB0ZXN0Q2Fz
ZXMgPSBbCi0gICAgewotICAgICAgICBuYW1lOiAnUmVhZERpcmVjdG9yeScsCi0gICAgICAgIHBy
ZWNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOicvYScsIGlzRGlyZWN0b3J5OnRy
dWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYicsIGlzRGlyZWN0b3J5OnRydWV9LAotICAg
ICAgICAgICAge2Z1bGxQYXRoOicvYycsIH0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9kJywg
fSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2UnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAg
ICAgICAgIHtmdWxsUGF0aDonL2YnLCB9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvZycsIGlz
RGlyZWN0b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYS9iJ30sCi0gICAgICAg
ICAgICB7ZnVsbFBhdGg6Jy9hL2MnfSwKLSAgICAgICAgXSwKLSAgICAgICAgdGVzdHM6IFsKLSAg
ICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIucmVhZERpcmVjdG9yeSgnLycpOyB9
LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5yZW1vdmUoJy9jJyk7IH0s
Ci0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLnJlbW92ZSgnL2UnKTsgfSwK
LSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIucmVtb3ZlKCcvZicpOyB9LAot
ICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5yZWFkRGlyZWN0b3J5KCcvJyk7
IH0KLSAgICAgICAgXSwKLSAgICB9LAotXTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5
c3RlbS9yZXNvdXJjZXMvb3AtcmVtb3ZlLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvb3AtcmVtb3ZlLmpzCShyZXZpc2lvbiAxNTY2OTEpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL29wLXJlbW92ZS5qcwkod29y
a2luZyBjb3B5KQpAQCAtMSw2MiArMCwwIEBACi12YXIgdGVzdENhc2VzID0gWwotICAgIHsKLSAg
ICAgICAgbmFtZTogJ1JlbW92ZVNpbXBsZScsCi0gICAgICAgIHByZWNvbmRpdGlvbjogWwotICAg
ICAgICAgICAge2Z1bGxQYXRoOicvYScsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICAgICAg
e2Z1bGxQYXRoOicvYid9Ci0gICAgICAgIF0sCi0gICAgICAgIHRlc3RzOiBbCi0gICAgICAgICAg
ICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLnJlbW92ZSgnL2EnKTsgfSwKLSAgICAgICAgICAg
IGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIucmVtb3ZlKCcvYicpOyB9LAotICAgICAgICAgICAg
ZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5yZW1vdmUoJy8nLCBGaWxlRXJyb3IuSU5WQUxJRF9N
T0RJRklDQVRJT05fRVJSKTsgfQotICAgICAgICBdLAotICAgICAgICBwb3N0Y29uZGl0aW9uOiBb
Ci0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hJywgbm9uZXhpc3RlbnQ6dHJ1ZX0sCi0gICAgICAg
ICAgICB7ZnVsbFBhdGg6Jy9iJywgbm9uZXhpc3RlbnQ6dHJ1ZX0KLSAgICAgICAgXSwKLSAgICB9
LAotICAgIHsKLSAgICAgICAgbmFtZTogJ1JlbW92ZU5vblJlY3Vyc2l2ZVdpdGhDaGlsZHJlbics
Ci0gICAgICAgIHByZWNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOicvYScsIGlz
RGlyZWN0b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYS9iJywgaXNEaXJlY3Rv
cnk6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hL2MnLH0KLSAgICAgICAgXSwKLSAg
ICAgICAgdGVzdHM6IFsKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIucmVt
b3ZlKCcvYScsIEZpbGVFcnJvci5JTlZBTElEX01PRElGSUNBVElPTl9FUlIpOyB9Ci0gICAgICAg
IF0sCi0gICAgICAgIHBvc3Rjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2En
LCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYicsIGlzRGly
ZWN0b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYS9jJyx9Ci0gICAgICAgIF0s
Ci0gICAgfSwKLSAgICB7Ci0gICAgICAgIG5hbWU6ICdSZW1vdmVSZWN1cnNpdmVXaXRob3V0Q2hp
bGRyZW4nLAotICAgICAgICBwcmVjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDon
L2EnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgXSwKLSAgICAgICAgdGVzdHM6IFsKLSAg
ICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIucmVtb3ZlUmVjdXJzaXZlbHkoJy9h
Jyk7IH0KLSAgICAgICAgXSwKLSAgICAgICAgcG9zdGNvbmRpdGlvbjogWwotICAgICAgICAgICAg
e2Z1bGxQYXRoOicvYScsIG5vbmV4aXN0ZW50OnRydWV9LAotICAgICAgICBdLAotICAgIH0sCi0g
ICAgewotICAgICAgICBuYW1lOiAnUmVtb3ZlUmVjdXJzaXZlV2l0aENoaWxkcmVuJywKLSAgICAg
ICAgcHJlY29uZGl0aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hJywgaXNEaXJlY3Rv
cnk6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hL2InLCBpc0RpcmVjdG9yeTp0cnVl
fSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYycsfQotICAgICAgICBdLAotICAgICAgICB0
ZXN0czogWwotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5yZW1vdmVSZWN1
cnNpdmVseSgnL2EnKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIu
cmVtb3ZlUmVjdXJzaXZlbHkoJy8nLCBGaWxlRXJyb3IuSU5WQUxJRF9NT0RJRklDQVRJT05fRVJS
KTsgfQotICAgICAgICBdLAotICAgICAgICBwb3N0Y29uZGl0aW9uOiBbCi0gICAgICAgICAgICB7
ZnVsbFBhdGg6Jy9hJywgbm9uZXhpc3RlbnQ6dHJ1ZX0sCi0gICAgICAgIF0sCi0gICAgfSwKLV07
Ci0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvb3AtcmVzdHJp
Y3RlZC1jaGFycy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0v
cmVzb3VyY2VzL29wLXJlc3RyaWN0ZWQtY2hhcnMuanMJKHJldmlzaW9uIDE1NjY5MSkKKysrIExh
eW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvb3AtcmVzdHJpY3RlZC1jaGFycy5q
cwkod29ya2luZyBjb3B5KQpAQCAtMSw1MiArMCwwIEBACi12YXIgdGVzdENhc2VzID0gWwotICAg
IHsKLSAgICAgICAgbmFtZTogJ1Jlc3RyaWN0ZWRDaGFycycsCi0gICAgICAgIHByZWNvbmRpdGlv
bjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOicvYWInLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAg
ICAgICAgXSwKLSAgICAgICAgdGVzdHM6IFsKLSAgICAgICAgICAgIC8vIFRlc3QgZm9yIGRpZmZp
Y3VsdCBjaGFyYWN0ZXJzIGluICdwYXRoJyBwYXJhbWV0ZXJzLgotICAgICAgICAgICAgZnVuY3Rp
b24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2E8YicsIHtjcmVhdGU6dHJ1ZX0sIDAp
OyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywg
J2E+YicsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVy
KSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2E6YicsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotICAg
ICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2E/YicsIHtj
cmVhdGU6dHJ1ZX0sIDApOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBl
ci5nZXRGaWxlKCcvJywgJ2EqYicsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotICAgICAgICAgICAg
ZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2EiYicsIHtjcmVhdGU6dHJ1
ZX0sIDApOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxl
KCcvJywgJ2F8YicsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotCi0gICAgICAgICAgICBmdW5jdGlv
bihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnPGFiJywge2NyZWF0ZTp0cnVlfSwgMCk7
IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAn
OmFiJywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIp
IHsgaGVscGVyLmdldEZpbGUoJy8nLCAnP2FiJywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0gICAg
ICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnKmFiJywge2Ny
ZWF0ZTp0cnVlfSwgMCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVy
LmdldEZpbGUoJy8nLCAnImFiJywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0gICAgICAgICAgICBm
dW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnfGFiJywge2NyZWF0ZTp0cnVl
fSwgMCk7IH0sCi0KLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0Rmls
ZSgnLycsICdhYjwnLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9u
KGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdhYjonLCB7Y3JlYXRlOnRydWV9LCAwKTsg
fSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdh
Yj8nLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikg
eyBoZWxwZXIuZ2V0RmlsZSgnLycsICdhYionLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLSAgICAg
ICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdhYiInLCB7Y3Jl
YXRlOnRydWV9LCAwKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIu
Z2V0RmlsZSgnLycsICdhYnwnLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLQotICAgICAgICAgICAg
Ly8gT25seSAnXFwnIGlzIGRpc2FsbG93ZWQuCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIp
IHsgaGVscGVyLmdldEZpbGUoJy8nLCAnYVxcYicsIHtjcmVhdGU6dHJ1ZX0sIEZpbGVFcnJvci5J
TlZBTElEX01PRElGSUNBVElPTl9FUlIpOyB9LAotCi0gICAgICAgICAgICAvLyBUZXN0IGZvciBk
aWZmaWN1bHQgY2hhcmFjdGVycyBpbiAnbmFtZScgcGFyYW1ldGVycy4KLSAgICAgICAgICAgIGZ1
bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuY29weSgnL2FiJywgJy8nLCAnIGE8YicsIDApOyB9LAot
ICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5jb3B5KCcvYWInLCAnLycsICcg
YTpiJywgMCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmNvcHko
Jy9hYicsICcvJywgJyBhP2InLCAwKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikg
eyBoZWxwZXIuY29weSgnL2FiJywgJy8nLCAnIGEqYicsIDApOyB9LAotICAgICAgICAgICAgZnVu
Y3Rpb24oaGVscGVyKSB7IGhlbHBlci5jb3B5KCcvYWInLCAnLycsICcgYSJiJywgMCk7IH0sCi0g
ICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmNvcHkoJy9hYicsICcvJywgJyBh
fGInLCAwKTsgfSwKLQotICAgICAgICAgICAgLy8gJ05hbWUnIHBhcmFtZXRlciBjYW5ub3QgY29u
dGFpbiAnLycgb3IgJ1xcJy4KLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIu
Y29weSgnL2FiJywgJy8nLCAnYS9iJywgRmlsZUVycm9yLklOVkFMSURfTU9ESUZJQ0FUSU9OX0VS
Uik7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmNvcHkoJy9hYics
ICcvJywgJ2FcXGInLCBGaWxlRXJyb3IuSU5WQUxJRF9NT0RJRklDQVRJT05fRVJSKTsgfSwKLSAg
ICAgICAgXSwKLSAgICAgICAgcG9zdGNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRo
OicvYWInLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonYTxiJywg
aXNEaXJlY3Rvcnk6ZmFsc2V9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicgYXxiJywgaXNEaXJl
Y3Rvcnk6dHJ1ZX0KLSAgICAgICAgXSwKLSAgICB9LAotXTsKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvb3AtcmVzdHJpY3RlZC1uYW1lcy5qcwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL29wLXJlc3RyaWN0ZWQt
bmFtZXMuanMJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3Rl
bS9yZXNvdXJjZXMvb3AtcmVzdHJpY3RlZC1uYW1lcy5qcwkod29ya2luZyBjb3B5KQpAQCAtMSw2
NCArMCwwIEBACi12YXIgdGVzdENhc2VzID0gWwotICAgIHsKLSAgICAgICAgbmFtZTogJ1Jlc3Ry
aWN0ZWROYW1lcycsCi0gICAgICAgIHByZWNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQ
YXRoOicvYScsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYics
IGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYycsIGlzRGlyZWN0
b3J5OnRydWV9Ci0gICAgICAgIF0sCi0gICAgICAgIHRlc3RzOiBbCi0gICAgICAgICAgICBmdW5j
dGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnLicsIHtjcmVhdGU6dHJ1ZX0sIEZp
bGVFcnJvci5TRUNVUklUWV9FUlIpOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7
IGhlbHBlci5nZXRGaWxlKCcvJywgJy4uJywge2NyZWF0ZTp0cnVlfSwgRmlsZUVycm9yLlNFQ1VS
SVRZX0VSUik7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZp
bGUoJy8nLCAnY29uJywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlv
bihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnQ09OJywge2NyZWF0ZTp0cnVlfSwgMCk7
IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAn
Q29uJywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIp
IHsgaGVscGVyLmdldEZpbGUoJy8nLCAnY09uLnR4dCcsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAot
ICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2EvY29O
Jywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0KLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikg
eyBoZWxwZXIuZ2V0RmlsZSgnLycsICdwcm4nLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLSAgICAg
ICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdQUk4nLCB7Y3Jl
YXRlOnRydWV9LCAwKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIu
Z2V0RmlsZSgnLycsICdQcm4nLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLSAgICAgICAgICAgIGZ1
bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdwUm4udHh0Jywge2NyZWF0ZTp0
cnVlfSwgMCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZp
bGUoJy8nLCAnYS9wck4nLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLQotICAgICAgICAgICAgZnVu
Y3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2F1eCcsIHtjcmVhdGU6dHJ1ZX0s
IDApOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcv
JywgJ0FVWCcsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVs
cGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ0F1eCcsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAot
ICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2FVeC50
eHQnLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikg
eyBoZWxwZXIuZ2V0RmlsZSgnLycsICdhL2F1WCcsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotCi0g
ICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnbnVsJywg
e2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVs
cGVyLmdldEZpbGUoJy8nLCAnTlVMJywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0gICAgICAgICAg
ICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnTnVsJywge2NyZWF0ZTp0
cnVlfSwgMCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZp
bGUoJy8nLCAnblVsLnR4dCcsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotICAgICAgICAgICAgZnVu
Y3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2EvbnVMJywge2NyZWF0ZTp0cnVl
fSwgMCk7IH0sCi0KLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0Rmls
ZSgnLycsICdjb20xJywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlv
bihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnQ09NMicsIHtjcmVhdGU6dHJ1ZX0sIDAp
OyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywg
J0NvbTQnLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBl
cikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdjT003LmZvbycsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9
LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2Ev
Y29NOScsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxw
ZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnbHB0MScsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAot
ICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ0xQVDIn
LCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBo
ZWxwZXIuZ2V0RmlsZSgnLycsICdMcHQ0Jywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0gICAgICAg
ICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnbFBUNy5mb28nLCB7
Y3JlYXRlOnRydWV9LCAwKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxw
ZXIuZ2V0RmlsZSgnLycsICdhL2xwVDknLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLQotICAgICAg
ICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2ZvbyAnLCB7Y3Jl
YXRlOnRydWV9LCAwKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIu
Z2V0RmlsZSgnLycsICdmb29cbicsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotICAgICAgICAgICAg
ZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2Zvby4nLCB7Y3JlYXRlOnRy
dWV9LCAwKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuY29weSgn
L2EnLCAnLycsICdmb28gICcsIDApOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7
IGhlbHBlci5jb3B5KCcvYScsICcvJywgJ2Zvb1x0JywgMCk7IH0sCi0gICAgICAgICAgICBmdW5j
dGlvbihoZWxwZXIpIHsgaGVscGVyLmNvcHkoJy9hJywgJy8nLCAnZm9vLi4nLCAwKTsgfSwKLSAg
ICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIubW92ZSgnL2EnLCAnLycsICdmb28g
ICAgJywgMCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLm1vdmUo
Jy9iJywgJy8nLCAnZm9vXHRcdCcsIDApOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVy
KSB7IGhlbHBlci5tb3ZlKCcvYycsICcvJywgJ2Zvby4uLi4uJywgMCk7IH0sCi0gICAgICAgIF0s
Ci0gICAgICAgIHBvc3Rjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2ZvbyAg
ICAnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2Zvb1x0XHQn
LCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2Zvby4uLi4uJywg
aXNEaXJlY3Rvcnk6dHJ1ZX0KLSAgICAgICAgXSwKLSAgICB9LAotXTsKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvb3AtcmVzdHJpY3RlZC11bmljb2RlLmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvb3AtcmVz
dHJpY3RlZC11bmljb2RlLmpzCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL29wLXJlc3RyaWN0ZWQtdW5pY29kZS5qcwkod29ya2luZyBj
b3B5KQpAQCAtMSw0NSArMCwwIEBACi12YXIgdGVzdENhc2VzID0gWwotICAgIHsKLSAgICAgICAg
bmFtZTogJ1Jlc3RyaWN0ZWRVbmljb2RlQ2hhcnMnLAotICAgICAgICBwcmVjb25kaXRpb246IFsg
XSwKLSAgICAgICAgdGVzdHM6IFsKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxw
ZXIuZ2V0RmlsZSgnLycsICdhYicsIHtjcmVhdGU6dHJ1ZX0pOyB9LAotCi0gICAgICAgICAgICAv
LyBFbWJlZGRlZCBOVUxzIGFyZW4ndCBhbGxvd2VkOyBhbnl0aGluZyBlbHNlIGluIHRoZSBmaXJz
dCAzMiBpcyBmYWlyIGdhbWUuCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVy
LmdldEZpbGUoJy8nLCAnYVx1MDAwMGInLCB7Y3JlYXRlOnRydWV9LCBGaWxlRXJyb3IuSU5WQUxJ
RF9NT0RJRklDQVRJT05fRVJSKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBo
ZWxwZXIuZ2V0RmlsZSgnLycsICdhXHUwMDAxYicsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotICAg
ICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2FcdTAwMDJi
Jywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsg
aGVscGVyLmdldEZpbGUoJy8nLCAnYVx1MDAwM2InLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLSAg
ICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdhXHUwMDA0
YicsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7
IGhlbHBlci5nZXRGaWxlKCcvJywgJ2FcdTAwMDViJywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0g
ICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnYVx1MDAw
NmInLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikg
eyBoZWxwZXIuZ2V0RmlsZSgnLycsICdhXHUwMDA3YicsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAot
ICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2FcdTAw
MDhiJywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIp
IHsgaGVscGVyLmdldEZpbGUoJy8nLCAnYVx1MDAwOWInLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwK
LSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdhXHUw
MDBhYicsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVy
KSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2FcdTAwMGJiJywge2NyZWF0ZTp0cnVlfSwgMCk7IH0s
Ci0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnYVx1
MDAwY2InLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBl
cikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdhXHUwMDBkYicsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9
LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2Fc
dTAwMGViJywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxw
ZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnYVx1MDAwZmInLCB7Y3JlYXRlOnRydWV9LCAwKTsg
fSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdh
XHUwMDEwYicsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVs
cGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2FcdTAwMTFiJywge2NyZWF0ZTp0cnVlfSwgMCk7
IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAn
YVx1MDAxMmInLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhl
bHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdhXHUwMDEzYicsIHtjcmVhdGU6dHJ1ZX0sIDAp
OyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywg
J2FcdTAwMTRiJywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbiho
ZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnYVx1MDAxNWInLCB7Y3JlYXRlOnRydWV9LCAw
KTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycs
ICdhXHUwMDE2YicsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24o
aGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2FcdTAwMTdiJywge2NyZWF0ZTp0cnVlfSwg
MCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8n
LCAnYVx1MDAxOGInLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9u
KGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdhXHUwMDE5YicsIHtjcmVhdGU6dHJ1ZX0s
IDApOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcv
JywgJ2FcdTAwMWFiJywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlv
bihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnYVx1MDAxYmInLCB7Y3JlYXRlOnRydWV9
LCAwKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgn
LycsICdhXHUwMDFjYicsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotICAgICAgICAgICAgZnVuY3Rp
b24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2FcdTAwMWRiJywge2NyZWF0ZTp0cnVl
fSwgMCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUo
Jy8nLCAnYVx1MDAxZWInLCB7Y3JlYXRlOnRydWV9LCAwKTsgfQotICAgICAgICBdLAotICAgICAg
ICBwb3N0Y29uZGl0aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hYid9LAotICAgICAg
ICBdLAotICAgIH0sCi1dOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291
cmNlcy9vcC10ZXN0cy1oZWxwZXIuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9m
aWxlc3lzdGVtL3Jlc291cmNlcy9vcC10ZXN0cy1oZWxwZXIuanMJKHJldmlzaW9uIDE1NjY5MSkK
KysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvb3AtdGVzdHMtaGVscGVy
LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQxMyArMCwwIEBACi0vLyBIZWxwZXIgcm91dGluZS4K
LWZ1bmN0aW9uIHRvU3RyaW5nKG9iaikgewotICAgIGlmIChvYmogPT0gdW5kZWZpbmVkKSB7Ci0g
ICAgICAgIHJldHVybiAidW5kZWZpbmVkIjsKLSAgICB9IGVsc2UgaWYgKHR5cGVvZiBvYmogPT0g
J29iamVjdCcpIHsKLSAgICAgICAgaWYgKG9iai5sZW5ndGggIT0gdW5kZWZpbmVkKSB7Ci0gICAg
ICAgICAgICB2YXIgc3RyaW5nQXJyYXkgPSBbXTsKLSAgICAgICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgb2JqLmxlbmd0aDsgKytpKQotICAgICAgICAgICAgICAgIHN0cmluZ0FycmF5LnB1c2go
dG9TdHJpbmcob2JqW2ldKSk7Ci0gICAgICAgICAgICBzdHJpbmdBcnJheS5zb3J0KCk7Ci0gICAg
ICAgICAgICByZXR1cm4gJ1snICsgc3RyaW5nQXJyYXkuam9pbignLFxuICcpICsgJ10nOwotICAg
ICAgICB9IGVsc2UgaWYgKG9iai5pc0RpcmVjdG9yeSB8fCBvYmouaXNGaWxlKSB7Ci0gICAgICAg
ICAgICByZXR1cm4gJ0VOVFJZIHtwYXRoOicgKyBvYmouZnVsbFBhdGggKyAnIG5hbWU6JyArIG9i
ai5uYW1lICsgKG9iai5pc0RpcmVjdG9yeSA/ICcgdHlwZTpESVJFQ1RPUlknIDogJyB0eXBlOkZJ
TEUnKSArICd9JzsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHJldHVybiBvYmogKyAi
IjsKLSAgICAgICAgfQotICAgIH0gZWxzZQotICAgICAgICByZXR1cm4gb2JqICsgIiI7Ci19Ci0K
LS8vIENyZWF0ZXMgYSB0ZXN0IGVudmlyb25tZW50IGZvciB0aGUgZ2l2ZW4gZW50cmllcyB3aGVy
ZSBlbnRyaWVzIGlzIGFuIGFycmF5IG9mIHtmdWxsUGF0aDpTdHJpbmcsIGlzRGlyZWN0b3J5OmJv
b2xlYW59IG9iamVjdC4KLS8vIFdoZW4gdGhlIHdvcmxkIGlzIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5
LCBzdWNjZXNzQ2FsbGJhY2sgaXMgY2FsbGVkIHdpdGggYW4gb2JqZWN0IHRoYXQgaG9sZHMgYWxs
IHRoZSBjcmVhdGVkIGVudHJ5IG9iamVjdHMuCi1mdW5jdGlvbiBjcmVhdGVUZXN0RW52aXJvbm1l
bnQoZmlsZVN5c3RlbSwgZW50cmllcywgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKQot
ewotICAgIHZhciBIZWxwZXIgPSBmdW5jdGlvbihmaWxlU3lzdGVtLCBlbnRyaWVzLCBzdWNjZXNz
Q2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spCi0gICAgewotICAgICAgICB0aGlzLmZpbGVTeXN0ZW0g
PSBmaWxlU3lzdGVtOwotICAgICAgICB0aGlzLmVudHJpZXMgPSBlbnRyaWVzOwotICAgICAgICB0
aGlzLmN1cnJlbnQgPSAwOwotICAgICAgICB0aGlzLnN1Y2Nlc3NDYWxsYmFjayA9IHN1Y2Nlc3ND
YWxsYmFjazsKLSAgICAgICAgdGhpcy5lcnJvckNhbGxiYWNrID0gZXJyb3JDYWxsYmFjazsKLSAg
ICAgICAgdGhpcy5lbnZpcm9ubWVudCA9IHt9OwotCi0gICAgICAgIHRoaXMuY3JlYXRlU3VjY2Vz
c0NhbGxiYWNrID0gZnVuY3Rpb24oZW50cnksIHNpemUpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGlmIChlbnRyeS5pc0ZpbGUgJiYgc2l6ZSA+IDApIHsKLSAgICAgICAgICAgICAgICBlbnRyeS5j
cmVhdGVXcml0ZXIoYmluZENhbGxiYWNrKHRoaXMsIGZ1bmN0aW9uKHdyaXRlcikgewotICAgICAg
ICAgICAgICAgICAgICB3cml0ZXIudHJ1bmNhdGUoc2l6ZSk7Ci0gICAgICAgICAgICAgICAgICAg
IHdyaXRlci5vbmVycm9yID0gYmluZENhbGxiYWNrKHRoaXMsIHRoaXMuY3JlYXRlRXJyb3JDYWxs
YmFjayk7Ci0gICAgICAgICAgICAgICAgICAgIHdyaXRlci5vbndyaXRlZW5kID0gYmluZENhbGxi
YWNrKHRoaXMsIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5lbnZp
cm9ubWVudFtlbnRyeS5mdWxsUGF0aF0gPSBlbnRyeTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IHRoaXMuZW52aXJvbm1lbnRbZW50cnkuZnVsbFBhdGggKyAnLnNpemUnXSA9IHNpemU7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZU5leHRFbnRyeSgpOwotICAgICAgICAgICAg
ICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICB9KSwgYmluZENhbGxiYWNrKHRoaXMsIHRoaXMu
Y3JlYXRlRXJyb3JDYWxsYmFjaykpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIHRoaXMuZW52aXJvbm1lbnRbZW50cnkuZnVsbFBhdGhdID0gZW50
cnk7Ci0gICAgICAgICAgICB0aGlzLmVudmlyb25tZW50W2VudHJ5LmZ1bGxQYXRoICsgJy5zaXpl
J10gPSAwOwotICAgICAgICAgICAgdGhpcy5jcmVhdGVOZXh0RW50cnkoKTsKLSAgICAgICAgfQot
Ci0gICAgICAgIHRoaXMuY3JlYXRlRXJyb3JDYWxsYmFjayA9IGZ1bmN0aW9uKGVycm9yLCBlbnRy
eSkKLSAgICAgICAgewotICAgICAgICAgICAgdGVzdEZhaWxlZCgnR290IHVuZXhwZWN0ZWQgZXJy
b3IgJyArIGVycm9yLmNvZGUgKyAnIHdoaWxlIGNyZWF0aW5nICcgKyB0b1N0cmluZyhlbnRyeSkp
OwotICAgICAgICAgICAgdGhpcy5lcnJvckNhbGxiYWNrKGVycm9yKTsKLSAgICAgICAgfQotCi0g
ICAgICAgIHRoaXMuY3JlYXRlTmV4dEVudHJ5ID0gZnVuY3Rpb24oKQotICAgICAgICB7Ci0gICAg
ICAgICAgICBpZiAodGhpcy5jdXJyZW50ID49IHRoaXMuZW50cmllcy5sZW5ndGgpIHsKLSAgICAg
ICAgICAgICAgICB0aGlzLnN1Y2Nlc3NDYWxsYmFjayh0aGlzLmVudmlyb25tZW50KTsKLSAgICAg
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB2YXIgZW50cnkg
PSB0aGlzLmVudHJpZXNbdGhpcy5jdXJyZW50KytdOwotICAgICAgICAgICAgaWYgKGVudHJ5Lmlz
RGlyZWN0b3J5KQotICAgICAgICAgICAgICAgIGZpbGVTeXN0ZW0ucm9vdC5nZXREaXJlY3Rvcnko
ZW50cnkuZnVsbFBhdGgsIHtjcmVhdGU6dHJ1ZX0sIGJpbmRDYWxsYmFjayh0aGlzLCB0aGlzLmNy
ZWF0ZVN1Y2Nlc3NDYWxsYmFjayksIGJpbmRDYWxsYmFjayh0aGlzLCB0aGlzLmNyZWF0ZUVycm9y
Q2FsbGJhY2spKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBmaWxlU3lzdGVt
LnJvb3QuZ2V0RmlsZShlbnRyeS5mdWxsUGF0aCwge2NyZWF0ZTp0cnVlfSwgYmluZENhbGxiYWNr
KHRoaXMsIHRoaXMuY3JlYXRlU3VjY2Vzc0NhbGxiYWNrLCBlbnRyeS5zaXplKSwgYmluZENhbGxi
YWNrKHRoaXMsIHRoaXMuY3JlYXRlRXJyb3JDYWxsYmFjaykpOwotICAgICAgICB9OwotICAgIH07
Ci0KLSAgICBpZiAoIWVudHJpZXMgfHwgIWVudHJpZXMubGVuZ3RoKSB7Ci0gICAgICAgIHN1Y2Nl
c3NDYWxsYmFjayh7fSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgdmFyIGhlbHBlciA9
IG5ldyBIZWxwZXIoZmlsZVN5c3RlbSwgZW50cmllcywgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNh
bGxiYWNrKTsKLSAgICBoZWxwZXIuY3JlYXRlTmV4dEVudHJ5KCk7Ci19Ci0KLWZ1bmN0aW9uIHZl
cmlmeVRlc3RFbnZpcm9ubWVudChmaWxlU3lzdGVtLCBlbnRyaWVzLCBzdWNjZXNzQ2FsbGJhY2ss
IGVycm9yQ2FsbGJhY2spCi17Ci0gICAgdmFyIEhlbHBlciA9IGZ1bmN0aW9uKGZpbGVTeXN0ZW0s
IGVudHJpZXMsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykKLSAgICB7Ci0gICAgICAg
IHRoaXMuZmlsZVN5c3RlbSA9IGZpbGVTeXN0ZW07Ci0gICAgICAgIHRoaXMuZW50cmllcyA9IGVu
dHJpZXM7Ci0gICAgICAgIHRoaXMuY3VycmVudCA9IDA7Ci0gICAgICAgIHRoaXMuc3VjY2Vzc0Nh
bGxiYWNrID0gc3VjY2Vzc0NhbGxiYWNrOwotICAgICAgICB0aGlzLmVycm9yQ2FsbGJhY2sgPSBl
cnJvckNhbGxiYWNrOwotICAgICAgICB0aGlzLmV4cGVjdGVkTm9uZXhpc3RlbnQgPSBmYWxzZTsK
LQotICAgICAgICB0aGlzLnZlcmlmeVN1Y2Nlc3NDYWxsYmFjayA9IGZ1bmN0aW9uKGVudHJ5KQot
ICAgICAgICB7Ci0gICAgICAgICAgICBpZiAodGhpcy5leHBlY3RlZE5vbmV4aXN0ZW50KSB7Ci0g
ICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgnRm91bmQgdW5leHBlY3RlZCBlbnRyeSAnICsgZW50
cnkuZnVsbFBhdGgpOwotICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JDYWxsYmFjaygpOwotICAg
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRlc3RQYXNz
ZWQoJ1ZlcmlmaWVkIGVudHJ5OiAnICsgdG9TdHJpbmcoZW50cnkpKTsKLSAgICAgICAgICAgIHRo
aXMudmVyaWZ5TmV4dEVudHJ5KCk7Ci0gICAgICAgIH0KLQotICAgICAgICB0aGlzLnZlcmlmeUVy
cm9yQ2FsbGJhY2sgPSBmdW5jdGlvbihlcnJvciwgZW50cnkpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIGlmICh0aGlzLmV4cGVjdGVkTm9uZXhpc3RlbnQpIHsKLSAgICAgICAgICAgICAgICB0ZXN0
UGFzc2VkKCdWZXJpZmllZCBlbnRyeSBkb2VzIE5PVCBleGlzdDogJyArIGVudHJ5LmZ1bGxQYXRo
KTsKLSAgICAgICAgICAgICAgICB0aGlzLnZlcmlmeU5leHRFbnRyeSgpOwotICAgICAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChlcnJvciA9PSBGaWxl
RXJyb3IuTk9UX0ZPVU5EX0VSUikKLSAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCdOb3QgZm91
bmQ6ICcgKyBlbnRyeS5mdWxsUGF0aCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgdGVzdEZhaWxlZCgnR290IHVuZXhwZWN0ZWQgZXJyb3IgJyArIGVycm9yLmNvZGUgKyAnIGZv
ciAnICsgZW50cnkuZnVsbFBhdGgpOwotICAgICAgICAgICAgdGhpcy5lcnJvckNhbGxiYWNrKGVy
cm9yKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRoaXMudmVyaWZ5TmV4dEVudHJ5ID0gZnVuY3Rp
b24oKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAodGhpcy5jdXJyZW50ID49IHRoaXMuZW50
cmllcy5sZW5ndGgpIHsKLSAgICAgICAgICAgICAgICB0aGlzLnN1Y2Nlc3NDYWxsYmFjaygpOwot
ICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHZhciBl
bnRyeSA9IHRoaXMuZW50cmllc1t0aGlzLmN1cnJlbnQrK107Ci0gICAgICAgICAgICB0aGlzLmV4
cGVjdGVkTm9uZXhpc3RlbnQgPSBlbnRyeS5ub25leGlzdGVudDsKLSAgICAgICAgICAgIGlmIChl
bnRyeS5pc0RpcmVjdG9yeSkKLSAgICAgICAgICAgICAgICBmaWxlU3lzdGVtLnJvb3QuZ2V0RGly
ZWN0b3J5KGVudHJ5LmZ1bGxQYXRoLCB7fSwgYmluZENhbGxiYWNrKHRoaXMsIHRoaXMudmVyaWZ5
U3VjY2Vzc0NhbGxiYWNrKSwgYmluZENhbGxiYWNrKHRoaXMsIHRoaXMudmVyaWZ5RXJyb3JDYWxs
YmFjaywgZW50cnkpKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBmaWxlU3lz
dGVtLnJvb3QuZ2V0RmlsZShlbnRyeS5mdWxsUGF0aCwge30sIGJpbmRDYWxsYmFjayh0aGlzLCB0
aGlzLnZlcmlmeVN1Y2Nlc3NDYWxsYmFjayksIGJpbmRDYWxsYmFjayh0aGlzLCB0aGlzLnZlcmlm
eUVycm9yQ2FsbGJhY2ssIGVudHJ5KSk7Ci0gICAgICAgIH07Ci0gICAgfTsKLQotICAgIGlmICgh
ZW50cmllcyB8fCAhZW50cmllcy5sZW5ndGgpIHsKLSAgICAgICAgc3VjY2Vzc0NhbGxiYWNrKCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgdmFyIGhlbHBlciA9IG5ldyBIZWxwZXIoZmls
ZVN5c3RlbSwgZW50cmllcywgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsKLSAgICBo
ZWxwZXIudmVyaWZ5TmV4dEVudHJ5KCk7Ci19Ci0KLS8vIHRlc3RDYXNlIG11c3QgaGF2ZSBwcmVj
b25kaXRpb24sIHBvc3Rjb25kaXRpb24gYW5kIHRlc3QgZnVuY3Rpb24gZmllbGQuCi0vLyAoU2Vl
IHJlc291cmNlcy9vcC0qLmpzIGZvciBleGFtcGxlcy4pCi1mdW5jdGlvbiBydW5PcGVyYXRpb25U
ZXN0KGZpbGVTeXN0ZW0sIHRlc3RDYXNlLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2sp
Ci17Ci0gICAgdmFyIE9wZXJhdGlvblRlc3RIZWxwZXIgPSBmdW5jdGlvbihmaWxlU3lzdGVtLCB0
ZXN0Q2FzZSwgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKQotICAgIHsKLSAgICAgICAg
dGhpcy5maWxlU3lzdGVtID0gZmlsZVN5c3RlbTsKLSAgICAgICAgdGhpcy50ZXN0Q2FzZSA9IHRl
c3RDYXNlOwotICAgICAgICB0aGlzLnN1Y2Nlc3NDYWxsYmFjayA9IHN1Y2Nlc3NDYWxsYmFjazsK
LSAgICAgICAgdGhpcy5lcnJvckNhbGxiYWNrID0gZXJyb3JDYWxsYmFjazsKLSAgICAgICAgdGhp
cy5zdGFnZSA9ICcnOwotICAgICAgICB0aGlzLmVudmlyb25tZW50ID0ge307Ci0gICAgICAgIHRo
aXMuY3VycmVudFRlc3QgPSAwOwotCi0gICAgICAgIHRoaXMuY3VycmVudFJlYWRlciA9IG51bGw7
Ci0gICAgICAgIHRoaXMucmVhZEVudHJpZXMgPSBbXTsKLQotICAgICAgICB0aGlzLmdldFN5bWJv
bFN0cmluZyA9IGZ1bmN0aW9uKHN5bWJvbCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJu
ICd0aGlzLmVudmlyb25tZW50WyInICsgc3ltYm9sICsgJyJdJzsKLSAgICAgICAgfTsKLQotICAg
ICAgICB0aGlzLnRlc3RTdWNjZXNzQ2FsbGJhY2sgPSBmdW5jdGlvbigpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIGlmICghdGhpcy5leHBlY3RlZEVycm9yQ29kZSkgewotICAgICAgICAgICAgICAg
IHRlc3RQYXNzZWQoJ1N1Y2NlZWRlZDogJyArIHRoaXMuc3RhZ2UpOwotICAgICAgICAgICAgICAg
IHRoaXMucnVuTmV4dFRlc3QoKTsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAg
IHRlc3RGYWlsZWQoJ1VuZXhwZWN0ZWRseSBzdWNjZWVkZWQgd2hpbGUgJyArIHRoaXMuc3RhZ2Up
OwotICAgICAgICB9OwotCi0gICAgICAgIHRoaXMuZW50cnkgPSBudWxsOwotICAgICAgICB0aGlz
LnRlc3RHZXRTdWNjZXNzQ2FsbGJhY2sgPSBmdW5jdGlvbihlbnRyeSkKLSAgICAgICAgewotICAg
ICAgICAgICAgaWYgKCF0aGlzLmV4cGVjdGVkRXJyb3JDb2RlKSB7Ci0gICAgICAgICAgICAgICAg
dGVzdFBhc3NlZCgnU3VjY2VlZGVkOiAnICsgdGhpcy5zdGFnZSk7Ci0gICAgICAgICAgICAgICAg
dGhpcy5lbnRyeSA9IGVudHJ5OwotICAgICAgICAgICAgICAgIHNob3VsZEJlLmFwcGx5KHRoaXMs
IFsndGhpcy5lbnZpcm9ubWVudFt0aGlzLmVudHJ5LmZ1bGxQYXRoXS5mdWxsUGF0aCcsICciJyAr
IGVudHJ5LmZ1bGxQYXRoICsgJyInXSk7Ci0gICAgICAgICAgICAgICAgc2hvdWxkQmUuYXBwbHko
dGhpcywgWyd0aGlzLmVudmlyb25tZW50W3RoaXMuZW50cnkuZnVsbFBhdGhdLmlzRmlsZSArICIi
JywgJyInICsgZW50cnkuaXNGaWxlICsgJyInXSk7Ci0gICAgICAgICAgICAgICAgc2hvdWxkQmUu
YXBwbHkodGhpcywgWyd0aGlzLmVudmlyb25tZW50W3RoaXMuZW50cnkuZnVsbFBhdGhdLmlzRGly
ZWN0b3J5ICsgIiInLCAnIicgKyBlbnRyeS5pc0RpcmVjdG9yeSArICciJ10pOwotICAgICAgICAg
ICAgICAgIHRoaXMucnVuTmV4dFRlc3QoKTsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAg
ICAgICAgIHRlc3RGYWlsZWQoJ1VuZXhwZWN0ZWRseSBzdWNjZWVkZWQgd2hpbGUgJyArIHRoaXMu
c3RhZ2UpOwotICAgICAgICB9OwotCi0gICAgICAgIHRoaXMudGVzdENyZWF0ZVN1Y2Nlc3NDYWxs
YmFjayA9IGZ1bmN0aW9uKGVudHJ5KQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIXRoaXMu
ZXhwZWN0ZWRFcnJvckNvZGUpIHsKLSAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCdTdWNjZWVk
ZWQ6ICcgKyB0aGlzLnN0YWdlKTsKLSAgICAgICAgICAgICAgICB0aGlzLmVudmlyb25tZW50W2Vu
dHJ5LmZ1bGxQYXRoXSA9IGVudHJ5OwotICAgICAgICAgICAgICAgIHRoaXMucnVuTmV4dFRlc3Qo
KTsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoJ1VuZXhw
ZWN0ZWRseSBzdWNjZWVkZWQgd2hpbGUgJyArIHRoaXMuc3RhZ2UpOwotICAgICAgICB9OwotCi0g
ICAgICAgIHRoaXMudGVzdEdldFBhcmVudFN1Y2Nlc3NDYWxsYmFjayA9IGZ1bmN0aW9uKGVudHJ5
KQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIXRoaXMuZXhwZWN0ZWRFcnJvckNvZGUpIHsK
LSAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCdTdWNjZWVkZWQ6ICcgKyB0aGlzLnN0YWdlKTsK
LSAgICAgICAgICAgICAgICBkZWJ1ZygnUGFyZW50IGVudHJ5OiAnICsgdG9TdHJpbmcoZW50cnkp
KTsKLSAgICAgICAgICAgICAgICB0aGlzLnJ1bk5leHRUZXN0KCk7Ci0gICAgICAgICAgICB9IGVs
c2UKLSAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCdVbmV4cGVjdGVkbHkgc3VjY2VlZGVkIHdo
aWxlICcgKyB0aGlzLnN0YWdlKTsKLSAgICAgICAgfTsKLQotICAgICAgICB0aGlzLnRlc3RSZWFk
RW50cmllc1N1Y2Nlc3NDYWxsYmFjayA9IGZ1bmN0aW9uKGVudHJpZXMpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIGlmICh0aGlzLmV4cGVjdGVkRXJyb3JDb2RlKQotICAgICAgICAgICAgICAgIHRl
c3RGYWlsZWQoJ1VuZXhwZWN0ZWRseSBzdWNjZWVkZWQgd2hpbGUgJyArIHRoaXMuc3RhZ2UpOwot
Ci0gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVudHJpZXMubGVuZ3RoOyArK2kpCi0g
ICAgICAgICAgICAgICAgdGhpcy5yZWFkRW50cmllcy5wdXNoKGVudHJpZXNbaV0pOwotCi0gICAg
ICAgICAgICBpZiAoZW50cmllcy5sZW5ndGgpIHsKLSAgICAgICAgICAgICAgICB0aGlzLmN1cnJl
bnRSZWFkZXIucmVhZEVudHJpZXMoYmluZENhbGxiYWNrKHRoaXMsIHRoaXMudGVzdFJlYWRFbnRy
aWVzU3VjY2Vzc0NhbGxiYWNrKSwgYmluZENhbGxiYWNrKHRoaXMsIHRoaXMudGVzdEVycm9yQ2Fs
bGJhY2spKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgIHRlc3RQYXNzZWQoJ1N1Y2NlZWRlZDogJyArIHRoaXMuc3RhZ2UpOwotICAgICAgICAg
ICAgZGVidWcoJ0VudHJpZXM6ICcgKyB0b1N0cmluZyh0aGlzLnJlYWRFbnRyaWVzKSk7Ci0gICAg
ICAgICAgICB0aGlzLnJ1bk5leHRUZXN0KCk7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGhpcy50
ZXN0TWV0YWRhdGFTdWNjZXNzQ2FsbGJhY2sgPSBmdW5jdGlvbihtZXRhZGF0YSwgZW50cnkpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGlmICghdGhpcy5leHBlY3RlZEVycm9yQ29kZSkgewotICAg
ICAgICAgICAgICAgIHRlc3RQYXNzZWQoJ1N1Y2NlZWRlZDogJyArIHRoaXMuc3RhZ2UpOwotICAg
ICAgICAgICAgICAgIHZhciBzeW1ib2wgPSBlbnRyeSArICcucmV0dXJuZWQubW9kaWZpY2F0aW9u
VGltZSc7Ci0gICAgICAgICAgICAgICAgdGhpcy5lbnZpcm9ubWVudFtzeW1ib2xdID0gbWV0YWRh
dGEubW9kaWZpY2F0aW9uVGltZTsKLSAgICAgICAgICAgICAgICB2YXIgZW50cnlNZXRhZGF0YVN0
cmluZyA9IHRoaXMuZ2V0U3ltYm9sU3RyaW5nKHN5bWJvbCk7Ci0gICAgICAgICAgICAgICAgaWYg
KGVudHJ5ICE9ICcvJykgewotICAgICAgICAgICAgICAgICAgICBzaG91bGRCZUdyZWF0ZXJUaGFu
T3JFcXVhbC5hcHBseSh0aGlzLCBbZW50cnlNZXRhZGF0YVN0cmluZywgJ3RoaXMucm91bmRlZFN0
YXJ0RGF0ZSddKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKG1ldGFk
YXRhLnNpemUpIHsKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5lbnZpcm9ubWVudFtlbnRyeSAr
ICcucmV0dXJuZWQuc2l6ZSddID0gbWV0YWRhdGEuc2l6ZTsKLSAgICAgICAgICAgICAgICAgICAg
dmFyIGVudHJ5U2l6ZVN0cmluZyA9IHRoaXMuZ2V0U3ltYm9sU3RyaW5nKGVudHJ5ICsgJy5yZXR1
cm5lZC5zaXplJyk7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBleHBlY3RlZFNpemVTdHJpbmcg
PSB0aGlzLmdldFN5bWJvbFN0cmluZyhlbnRyeSArICcuc2l6ZScpOwotICAgICAgICAgICAgICAg
ICAgICBzaG91bGRCZS5hcHBseSh0aGlzLCBbZXhwZWN0ZWRTaXplU3RyaW5nLCBlbnRyeVNpemVT
dHJpbmddKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgdGhpcy5ydW5OZXh0
VGVzdCgpOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgn
VW5leHBlY3RlZGx5IHN1Y2NlZWRlZCB3aGlsZSAnICsgdGhpcy5zdGFnZSk7Ci0gICAgICAgIH07
Ci0KLSAgICAgICAgdGhpcy50ZXN0RXJyb3JDYWxsYmFjayA9IGZ1bmN0aW9uKGVycm9yKQotICAg
ICAgICB7Ci0gICAgICAgICAgICBpZiAodGhpcy5leHBlY3RlZEVycm9yQ29kZSkgewotICAgICAg
ICAgICAgICAgIHNob3VsZEJlLmFwcGx5KHRoaXMsIFsndGhpcy5leHBlY3RlZEVycm9yQ29kZSAr
ICIiJywgJyInICsgZXJyb3IuY29kZSArICciJ10pOwotICAgICAgICAgICAgICAgIHRoaXMucnVu
TmV4dFRlc3QoKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgdGVzdEZh
aWxlZCgnR290IHVuZXhwZWN0ZWQgZXJyb3IgJyArIGVycm9yLmNvZGUgKyAnIHdoaWxlICcgKyB0
aGlzLnN0YWdlKTsKLSAgICAgICAgICAgICAgICB0aGlzLmVycm9yQ2FsbGJhY2soZXJyb3IpOwot
ICAgICAgICAgICAgfQotICAgICAgICB9OwotCi0gICAgICAgIC8vIE9wZXJhdGlvbnMgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSAgICAgICAg
dGhpcy5nZXRGaWxlID0gZnVuY3Rpb24oZW50cnksIHBhdGgsIGZsYWdzLCBleHBlY3RlZEVycm9y
Q29kZSkKLSAgICAgICAgewotICAgICAgICAgICAgdGhpcy5leHBlY3RlZEVycm9yQ29kZSA9IGV4
cGVjdGVkRXJyb3JDb2RlOwotICAgICAgICAgICAgdGhpcy5zdGFnZSA9ICciJyArIGVudHJ5ICsg
JyIuZ2V0RmlsZSgiJyArIHBhdGggKyAnIiknOwotICAgICAgICAgICAgdmFyIHN1Y2Nlc3NDYWxs
YmFjayA9IChmbGFncyAmJiBmbGFncy5jcmVhdGUpID8gdGhpcy50ZXN0Q3JlYXRlU3VjY2Vzc0Nh
bGxiYWNrIDogdGhpcy50ZXN0R2V0U3VjY2Vzc0NhbGxiYWNrOwotICAgICAgICAgICAgdGhpcy5l
bnZpcm9ubWVudFtlbnRyeV0uZ2V0RmlsZShwYXRoLCBmbGFncywgYmluZENhbGxiYWNrKHRoaXMs
IHN1Y2Nlc3NDYWxsYmFjayksIGJpbmRDYWxsYmFjayh0aGlzLCB0aGlzLnRlc3RFcnJvckNhbGxi
YWNrKSk7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGhpcy5nZXREaXJlY3RvcnkgPSBmdW5jdGlv
bihlbnRyeSwgcGF0aCwgZmxhZ3MsIGV4cGVjdGVkRXJyb3JDb2RlKQotICAgICAgICB7Ci0gICAg
ICAgICAgICB0aGlzLmV4cGVjdGVkRXJyb3JDb2RlID0gZXhwZWN0ZWRFcnJvckNvZGU7Ci0gICAg
ICAgICAgICB0aGlzLnN0YWdlID0gJyInICsgZW50cnkgKyAnIi5nZXREaXJlY3RvcnkoIicgKyBw
YXRoICsgJyIpJzsKLSAgICAgICAgICAgIHZhciBzdWNjZXNzQ2FsbGJhY2sgPSAoZmxhZ3MgJiYg
ZmxhZ3MuY3JlYXRlKSA/IHRoaXMudGVzdENyZWF0ZVN1Y2Nlc3NDYWxsYmFjayA6IHRoaXMudGVz
dEdldFN1Y2Nlc3NDYWxsYmFjazsKLSAgICAgICAgICAgIHRoaXMuZW52aXJvbm1lbnRbZW50cnld
LmdldERpcmVjdG9yeShwYXRoLCBmbGFncywgYmluZENhbGxiYWNrKHRoaXMsIHN1Y2Nlc3NDYWxs
YmFjayksIGJpbmRDYWxsYmFjayh0aGlzLCB0aGlzLnRlc3RFcnJvckNhbGxiYWNrKSk7Ci0gICAg
ICAgIH07Ci0KLSAgICAgICAgdGhpcy5nZXRQYXJlbnQgPSBmdW5jdGlvbihlbnRyeSwgZXhwZWN0
ZWRFcnJvckNvZGUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRoaXMuZXhwZWN0ZWRFcnJvckNv
ZGUgPSBleHBlY3RlZEVycm9yQ29kZTsKLSAgICAgICAgICAgIHRoaXMuc3RhZ2UgPSAnIicgKyBl
bnRyeSArICciLmdldFBhcmVudCgpJzsKLSAgICAgICAgICAgIHRoaXMuZW52aXJvbm1lbnRbZW50
cnldLmdldFBhcmVudChiaW5kQ2FsbGJhY2sodGhpcywgdGhpcy50ZXN0R2V0UGFyZW50U3VjY2Vz
c0NhbGxiYWNrKSwgYmluZENhbGxiYWNrKHRoaXMsIHRoaXMudGVzdEVycm9yQ2FsbGJhY2spKTsK
LSAgICAgICAgfTsKLQotICAgICAgICB0aGlzLmdldE1ldGFkYXRhID0gZnVuY3Rpb24oZW50cnks
IGV4cGVjdGVkRXJyb3JDb2RlKQotICAgICAgICB7Ci0gICAgICAgICAgICB0aGlzLmV4cGVjdGVk
RXJyb3JDb2RlID0gZXhwZWN0ZWRFcnJvckNvZGU7Ci0gICAgICAgICAgICB0aGlzLnN0YWdlID0g
JyInICsgZW50cnkgKyAnIi5nZXRNZXRhZGF0YSgpJzsKLSAgICAgICAgICAgIHRoaXMuZW52aXJv
bm1lbnRbZW50cnldLmdldE1ldGFkYXRhKGJpbmRDYWxsYmFjayh0aGlzLCB0aGlzLnRlc3RNZXRh
ZGF0YVN1Y2Nlc3NDYWxsYmFjaywgZW50cnkpLCBiaW5kQ2FsbGJhY2sodGhpcywgdGhpcy50ZXN0
RXJyb3JDYWxsYmFjaykpOwotICAgICAgICB9OwotCi0gICAgICAgIHRoaXMucmVtb3ZlID0gZnVu
Y3Rpb24oZW50cnksIGV4cGVjdGVkRXJyb3JDb2RlKQotICAgICAgICB7Ci0gICAgICAgICAgICB0
aGlzLmV4cGVjdGVkRXJyb3JDb2RlID0gZXhwZWN0ZWRFcnJvckNvZGU7Ci0gICAgICAgICAgICB0
aGlzLnN0YWdlID0gJyInICsgZW50cnkgKyAnIi5yZW1vdmUoKSc7Ci0gICAgICAgICAgICB0aGlz
LmVudmlyb25tZW50W2VudHJ5XS5yZW1vdmUoYmluZENhbGxiYWNrKHRoaXMsIHRoaXMudGVzdFN1
Y2Nlc3NDYWxsYmFjayksIGJpbmRDYWxsYmFjayh0aGlzLCB0aGlzLnRlc3RFcnJvckNhbGxiYWNr
KSk7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGhpcy5yZW1vdmVSZWN1cnNpdmVseSA9IGZ1bmN0
aW9uKGVudHJ5LCBleHBlY3RlZEVycm9yQ29kZSkKLSAgICAgICAgewotICAgICAgICAgICAgdGhp
cy5leHBlY3RlZEVycm9yQ29kZSA9IGV4cGVjdGVkRXJyb3JDb2RlOwotICAgICAgICAgICAgdGhp
cy5zdGFnZSA9ICciJyArIGVudHJ5ICsgJyIucmVtb3ZlUmVjdXJzaXZlbHkoKSc7Ci0gICAgICAg
ICAgICB0aGlzLmVudmlyb25tZW50W2VudHJ5XS5yZW1vdmVSZWN1cnNpdmVseShiaW5kQ2FsbGJh
Y2sodGhpcywgdGhpcy50ZXN0U3VjY2Vzc0NhbGxiYWNrKSwgYmluZENhbGxiYWNrKHRoaXMsIHRo
aXMudGVzdEVycm9yQ2FsbGJhY2spKTsKLSAgICAgICAgfTsKLQotICAgICAgICB0aGlzLnJlYWRE
aXJlY3RvcnkgPSBmdW5jdGlvbihlbnRyeSwgZXhwZWN0ZWRFcnJvckNvZGUpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIHRoaXMuZXhwZWN0ZWRFcnJvckNvZGUgPSBleHBlY3RlZEVycm9yQ29kZTsK
LSAgICAgICAgICAgIHRoaXMucmVhZEVudHJpZXMgPSBbXTsKLSAgICAgICAgICAgIHRoaXMuc3Rh
Z2UgPSAnIicgKyBlbnRyeSArICciLmNyZWF0ZVJlYWRlcigpLnJlYWRFbnRyaWVzKCknOwotICAg
ICAgICAgICAgdGhpcy5jdXJyZW50UmVhZGVyID0gdGhpcy5lbnZpcm9ubWVudFtlbnRyeV0uY3Jl
YXRlUmVhZGVyKCk7Ci0gICAgICAgICAgICB0aGlzLmN1cnJlbnRSZWFkZXIucmVhZEVudHJpZXMo
YmluZENhbGxiYWNrKHRoaXMsIHRoaXMudGVzdFJlYWRFbnRyaWVzU3VjY2Vzc0NhbGxiYWNrKSwg
YmluZENhbGxiYWNrKHRoaXMsIHRoaXMudGVzdEVycm9yQ2FsbGJhY2spKTsKLSAgICAgICAgfTsK
LQotICAgICAgICB0aGlzLmNvcHkgPSBmdW5jdGlvbihlbnRyeSwgZGVzdGluYXRpb25QYXJlbnQs
IG5ld05hbWUsIGV4cGVjdGVkRXJyb3JDb2RlKQotICAgICAgICB7Ci0gICAgICAgICAgICB0aGlz
LmV4cGVjdGVkRXJyb3JDb2RlID0gZXhwZWN0ZWRFcnJvckNvZGU7Ci0gICAgICAgICAgICB0aGlz
LnN0YWdlID0gJyInICsgZW50cnkgKyAnIi5jb3B5VG8oIicgKyBkZXN0aW5hdGlvblBhcmVudCAr
ICciLCAiJyArIG5ld05hbWUgKyAnIiknOwotICAgICAgICAgICAgdGhpcy5lbnZpcm9ubWVudFtl
bnRyeV0uY29weVRvKHRoaXMuZW52aXJvbm1lbnRbZGVzdGluYXRpb25QYXJlbnRdLCBuZXdOYW1l
LCBiaW5kQ2FsbGJhY2sodGhpcywgdGhpcy50ZXN0U3VjY2Vzc0NhbGxiYWNrKSwgYmluZENhbGxi
YWNrKHRoaXMsIHRoaXMudGVzdEVycm9yQ2FsbGJhY2spKTsKLSAgICAgICAgfTsKLQotICAgICAg
ICB0aGlzLm1vdmUgPSBmdW5jdGlvbihlbnRyeSwgZGVzdGluYXRpb25QYXJlbnQsIG5ld05hbWUs
IGV4cGVjdGVkRXJyb3JDb2RlKQotICAgICAgICB7Ci0gICAgICAgICAgICB0aGlzLmV4cGVjdGVk
RXJyb3JDb2RlID0gZXhwZWN0ZWRFcnJvckNvZGU7Ci0gICAgICAgICAgICB0aGlzLnN0YWdlID0g
JyInICsgZW50cnkgKyAnIi5tb3ZlVG8oIicgKyBkZXN0aW5hdGlvblBhcmVudCArICciLCAiJyAr
IG5ld05hbWUgKyAnIiknOwotICAgICAgICAgICAgdGhpcy5lbnZpcm9ubWVudFtlbnRyeV0ubW92
ZVRvKHRoaXMuZW52aXJvbm1lbnRbZGVzdGluYXRpb25QYXJlbnRdLCBuZXdOYW1lLCBiaW5kQ2Fs
bGJhY2sodGhpcywgdGhpcy50ZXN0U3VjY2Vzc0NhbGxiYWNrKSwgYmluZENhbGxiYWNrKHRoaXMs
IHRoaXMudGVzdEVycm9yQ2FsbGJhY2spKTsKLSAgICAgICAgfTsKLQotICAgICAgICB0aGlzLnNo
b3VsZEJlID0gZnVuY3Rpb24oc3ltYm9sMSwgc3ltYm9sMikKLSAgICAgICAgewotICAgICAgICAg
ICAgc2hvdWxkQmUuYXBwbHkodGhpcywgW3RoaXMuZ2V0U3ltYm9sU3RyaW5nKHN5bWJvbDEpLCB0
aGlzLmdldFN5bWJvbFN0cmluZyhzeW1ib2wyKV0pOwotICAgICAgICAgICAgdGhpcy5ydW5OZXh0
VGVzdCgpOwotICAgICAgICB9OwotCi0gICAgICAgIHRoaXMuc2hvdWxkQmVHcmVhdGVyVGhhbk9y
RXF1YWwgPSBmdW5jdGlvbihzeW1ib2wxLCBzeW1ib2wyKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBzaG91bGRCZUdyZWF0ZXJUaGFuT3JFcXVhbC5hcHBseSh0aGlzLCBbdGhpcy5nZXRTeW1ib2xT
dHJpbmcoc3ltYm9sMSksIHRoaXMuZ2V0U3ltYm9sU3RyaW5nKHN5bWJvbDIpXSk7Ci0gICAgICAg
ICAgICB0aGlzLnJ1bk5leHRUZXN0KCk7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
LSAgICAgICAgdGhpcy5zdGFydCA9IGZ1bmN0aW9uKCkKLSAgICAgICAgewotICAgICAgICAgICAg
dGhpcy5leHBlY3RlZEVycm9yQ29kZSA9ICcnOwotICAgICAgICAgICAgdGhpcy5zdGFnZSA9ICdy
ZXNldHRpbmcgZmlsZXN5c3RlbSc7Ci0gICAgICAgICAgICAvLyBSZWNvcmQgcm91bmRlZCBzdGFy
dCBkYXRlIChjdXJyZW50IHRpbWUgbWludXMgOTk5IG1zZWMpIGhlcmUgZm9yIHRoZSBjb21wYXJp
c29uLiBFbnRyeS5nZXRNZXRhZGF0YSgpIG1heSByZXR1cm4gdGhlIGxhc3QgbW9kIHRpbWUgaW4g
c2Vjb25kcyBhY2N1cmFjeSB3aGlsZSBuZXcgRGF0ZSgpIGlzIG1pbGxpc2Vjb25kcyBhY2N1cmFj
eS4KLSAgICAgICAgICAgIHRoaXMucm91bmRlZFN0YXJ0RGF0ZSA9IG5ldyBEYXRlKChuZXcgRGF0
ZSgpKS5nZXRUaW1lKCkgLSA5OTkpOwotICAgICAgICAgICAgcmVtb3ZlQWxsSW5EaXJlY3Rvcnko
dGhpcy5maWxlU3lzdGVtLnJvb3QsIGJpbmRDYWxsYmFjayh0aGlzLCB0aGlzLnNldFVwKSwgYmlu
ZENhbGxiYWNrKHRoaXMsIHRoaXMudGVzdEVycm9yQ2FsbGJhY2spKTsKLSAgICAgICAgfTsKLQot
ICAgICAgICB0aGlzLnNldFVwID0gZnVuY3Rpb24oKQotICAgICAgICB7Ci0gICAgICAgICAgICB0
aGlzLmV4cGVjdGVkRXJyb3JDb2RlID0gJyc7Ci0gICAgICAgICAgICB0aGlzLnN0YWdlID0gJ3Nl
dHRpbmcgdXAgdGVzdCBwcmVjb25kaXRpb24nOwotICAgICAgICAgICAgY3JlYXRlVGVzdEVudmly
b25tZW50KHRoaXMuZmlsZVN5c3RlbSwgdGhpcy50ZXN0Q2FzZS5wcmVjb25kaXRpb24sIGJpbmRD
YWxsYmFjayh0aGlzLCB0aGlzLnJ1blRlc3RzKSwgYmluZENhbGxiYWNrKHRoaXMsIHRoaXMudGVz
dEVycm9yQ2FsbGJhY2spKTsKLSAgICAgICAgfTsKLQotICAgICAgICB0aGlzLnJ1bk5leHRUZXN0
ID0gZnVuY3Rpb24oKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAodGhpcy5jdXJyZW50VGVz
dCA+PSB0aGlzLnRlc3RDYXNlLnRlc3RzLmxlbmd0aCkgewotICAgICAgICAgICAgICAgIHRoaXMu
dmVyaWZ5KCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgdGhpcy50ZXN0Q2FzZS50ZXN0c1t0aGlzLmN1cnJlbnRUZXN0KytdKHRoaXMpOwotICAg
ICAgICB9OwotCi0gICAgICAgIHRoaXMucnVuVGVzdHMgPSBmdW5jdGlvbihlbnZpcm9ubWVudCkK
LSAgICAgICAgewotICAgICAgICAgICAgdGhpcy5lbnZpcm9ubWVudCA9IGVudmlyb25tZW50Owot
ICAgICAgICAgICAgdGhpcy5lbnZpcm9ubWVudFsnLyddID0gdGhpcy5maWxlU3lzdGVtLnJvb3Q7
Ci0gICAgICAgICAgICB0aGlzLmN1cnJlbnRUZXN0ID0gMDsKLSAgICAgICAgICAgIHRoaXMucnVu
TmV4dFRlc3QoKTsKLSAgICAgICAgfTsKLQotICAgICAgICB0aGlzLnZlcmlmeSA9IGZ1bmN0aW9u
KCkKLSAgICAgICAgewotICAgICAgICAgICAgdGhpcy5leHBlY3RlZEVycm9yQ29kZSA9ICcnOwot
ICAgICAgICAgICAgaWYgKCF0aGlzLnRlc3RDYXNlLnBvc3Rjb25kaXRpb24pIHsKLSAgICAgICAg
ICAgICAgICB0aGlzLnN1Y2Nlc3NDYWxsYmFjaygpOwotICAgICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRoaXMuc3RhZ2UgPSAndmVyaWZ5aW5nIHRlc3Qg
cG9zdGNvbmRpdGlvbic7Ci0gICAgICAgICAgICB2ZXJpZnlUZXN0RW52aXJvbm1lbnQodGhpcy5m
aWxlU3lzdGVtLCB0aGlzLnRlc3RDYXNlLnBvc3Rjb25kaXRpb24sIHRoaXMuc3VjY2Vzc0NhbGxi
YWNrLCBiaW5kQ2FsbGJhY2sodGhpcywgdGhpcy50ZXN0RXJyb3JDYWxsYmFjaykpOwotICAgICAg
ICB9OwotICAgIH07Ci0KLSAgICB2YXIgaGVscGVyID0gbmV3IE9wZXJhdGlvblRlc3RIZWxwZXIo
ZmlsZVN5c3RlbSwgdGVzdENhc2UsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjayk7Ci0g
ICAgaGVscGVyLnN0YXJ0KCk7Ci19Ci0KLXZhciBjdXJyZW50VGVzdCA9IDA7Ci12YXIgZmlsZVN5
c3RlbSA9IG51bGw7Ci1mdW5jdGlvbiBydW5OZXh0VGVzdCgpIHsKLSAgICBpZiAoY3VycmVudFRl
c3QgPj0gdGVzdENhc2VzLmxlbmd0aCkgewotICAgICAgICBkZWJ1ZygnRmluaXNoZWQgcnVubmlu
ZyB0ZXN0cy4nKTsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICB2YXIgdGVzdENhc2UgPSB0ZXN0Q2FzZXNbY3VycmVudFRlc3QrK107Ci0gICAg
ZGVidWcoJyogUnVubmluZzogJyArIHRlc3RDYXNlLm5hbWUpOwotICAgIHJ1bk9wZXJhdGlvblRl
c3QoZmlsZVN5c3RlbSwgdGVzdENhc2UsIHJ1bk5leHRUZXN0LCBlcnJvckNhbGxiYWNrKTsKLX0K
LQotZnVuY3Rpb24gZXJyb3JDYWxsYmFjayhlcnJvcikgewotICAgIGlmIChlcnJvciAmJiBlcnJv
ci5jb2RlKQotICAgICAgICB0ZXN0RmFpbGVkKCdHb3QgZXJyb3IgJyArIGVycm9yLmNvZGUpOwot
ICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi1mdW5jdGlvbiBmaWxlU3lzdGVtQ2FsbGJhY2soZnMp
Ci17Ci0gICAgZmlsZVN5c3RlbSA9IGZzOwotICAgIHJ1bk5leHRUZXN0KCk7Ci19Ci0KLXZhciBq
c1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLXdlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKFRFTVBPUkFSWSwg
MTAwLCBmaWxlU3lzdGVtQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spOwpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9zaGFyZWQtd29ya2VyLXN0dWIuanMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9zaGFyZWQtd29y
a2VyLXN0dWIuanMJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5
c3RlbS9yZXNvdXJjZXMvc2hhcmVkLXdvcmtlci1zdHViLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzAsMCBAQAotLy8gV2UgZG9uJ3Qgc3RhcnQganMtdGVzdC1wcmUuanMgZGlyZWN0bHkgYXMg
dGhlIHdvcmtlciBzY3JpcHQgYmVjYXVzZSBpdCBzY3Jld3MKLS8vIHVwIHRoZSBiYXNlIG9mIGFs
bCByZWxhdGl2ZSBwYXRocyBwYXNzZWQgdG8gaW1wb3J0U2NyaXB0cy4KLWltcG9ydFNjcmlwdHMo
Jy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOwpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9zaW1wbGUtcGVyc2lzdGVudC1zeW5jLmpzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvc2ltcGxlLXBl
cnNpc3RlbnQtc3luYy5qcwkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9m
aWxlc3lzdGVtL3Jlc291cmNlcy9zaW1wbGUtcGVyc2lzdGVudC1zeW5jLmpzCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDE0ICswLDAgQEAKLWlmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKLSAgICBpbXBv
cnRTY3JpcHRzKCcuLi9yZXNvdXJjZXMvZnMtd29ya2VyLWNvbW1vbi5qcycpOwotICAgIGltcG9y
dFNjcmlwdHMoJy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOwotICAgIGltcG9y
dFNjcmlwdHMoJy4uL3Jlc291cmNlcy9mcy10ZXN0LXV0aWwuanMnKTsKLX0KLQotZGVzY3JpcHRp
b24oIndlYmtpdFJlcXVlc3RGaWxlU3lzdGVtU3luYyBQRVJTSVNURU5UIHRlc3QuIik7Ci0KLXZh
ciBmaWxlU3lzdGVtID0gd2Via2l0UmVxdWVzdEZpbGVTeXN0ZW1TeW5jKFBFUlNJU1RFTlQsIDEw
MCk7Ci0KLWRlYnVnKCJTdWNjZXNzZnVsbHkgb2J0YWluZWQgUEVSU0lTVEVOVCBGaWxlU3lzdGVt
OiIgKyBmaWxlU3lzdGVtLm5hbWUpOwotc2hvdWxkQmVUcnVlKCJmaWxlU3lzdGVtLm5hbWUubGVu
Z3RoID4gMCIpOwotc2hvdWxkQmUoImZpbGVTeXN0ZW0ucm9vdC5mdWxsUGF0aCIsICciLyInKTsK
LWZpbmlzaEpTVGVzdCgpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291
cmNlcy9zaW1wbGUtcGVyc2lzdGVudC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL3NpbXBsZS1wZXJzaXN0ZW50LmpzCShyZXZpc2lvbiAxNTY2
OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL3NpbXBsZS1wZXJz
aXN0ZW50LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDI1ICswLDAgQEAKLWlmICh0aGlzLmltcG9y
dFNjcmlwdHMpIHsKLSAgICBpbXBvcnRTY3JpcHRzKCcuLi9yZXNvdXJjZXMvZnMtd29ya2VyLWNv
bW1vbi5qcycpOwotICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcycpOwotICAgIGltcG9ydFNjcmlwdHMoJy4uL3Jlc291cmNlcy9mcy10ZXN0LXV0aWwu
anMnKTsKLX0KLQotZGVzY3JpcHRpb24oInJlcXVlc3RGaWxlU3lzdGVtIFBFUlNJU1RFTlQgdGVz
dC4iKTsKLQotdmFyIGZpbGVTeXN0ZW0gPSBudWxsOwotCi1mdW5jdGlvbiBlcnJvckNhbGxiYWNr
KGVycm9yKSB7Ci0gICAgZGVidWcoIkVycm9yIG9jY3VyZWQgd2hpbGUgcmVxdWVzdGluZyBhIFBF
UlNJU1RFTlQgZmlsZSBzeXN0ZW06IiArIGVycm9yLmNvZGUpOwotICAgIGZpbmlzaEpTVGVzdCgp
OwotfQotCi1mdW5jdGlvbiBzdWNjZXNzQ2FsbGJhY2soZnMpIHsKLSAgICBmaWxlU3lzdGVtID0g
ZnM7Ci0gICAgZGVidWcoIlN1Y2Nlc3NmdWxseSBvYnRhaW5lZCBQRVJTSVNURU5UIEZpbGVTeXN0
ZW06IiArIGZpbGVTeXN0ZW0ubmFtZSk7Ci0gICAgc2hvdWxkQmVUcnVlKCJmaWxlU3lzdGVtLm5h
bWUubGVuZ3RoID4gMCIpOwotICAgIHNob3VsZEJlKCJmaWxlU3lzdGVtLnJvb3QuZnVsbFBhdGgi
LCAnIi8iJyk7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLXZhciBqc1Rlc3RJc0FzeW5jID0g
dHJ1ZTsKLXdlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKFBFUlNJU1RFTlQsIDEwMCwgc3VjY2Vzc0Nh
bGxiYWNrLCBlcnJvckNhbGxiYWNrKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3Rl
bS9yZXNvdXJjZXMvc2ltcGxlLXJlYWRvbmx5LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvc2ltcGxlLXJlYWRvbmx5LmpzCShyZXZpc2lvbiAx
NTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL3NpbXBsZS1y
ZWFkb25seS5qcwkod29ya2luZyBjb3B5KQpAQCAtMSw0OSArMCwwIEBACi1pZiAodGhpcy5pbXBv
cnRTY3JpcHRzKSB7Ci0gICAgaW1wb3J0U2NyaXB0cygnLi4vcmVzb3VyY2VzL2ZzLXdvcmtlci1j
b21tb24uanMnKTsKLSAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMnKTsKLSAgICBpbXBvcnRTY3JpcHRzKCcuLi9yZXNvdXJjZXMvZnMtdGVzdC11dGls
LmpzJyk7Ci19Ci0KLWRlc2NyaXB0aW9uKCJGaWxlU3lzdGVtIEFQSSByZWFkb25seSBhdHRyaWJ1
dGVzIHRlc3QuIik7Ci0KLXZhciBmaWxlU3lzdGVtOwotdmFyIGZpbGVFbnRyeTsKLXZhciBmaWxl
TWV0YWRhdGE7Ci0KLWZ1bmN0aW9uIHNldFJlYWRvbmx5UHJvcGVydHkocHJvcGVydHksIHZhbHVl
KQotewotICAgIG9sZFZhbHVlID0gZXZhbChwcm9wZXJ0eSk7Ci0gICAgZGVidWcoInRyeWluZyB0
byBzZXQgcmVhZG9ubHkgcHJvcGVydHkgIiArIHByb3BlcnR5KTsKLSAgICBldmFsQW5kTG9nKHBy
b3BlcnR5ICsgIiA9ICIgKyB2YWx1ZSk7Ci0gICAgbmV3VmFsdWUgPSBldmFsKHByb3BlcnR5KTsK
LSAgICBpZiAob2xkVmFsdWUgPT0gbmV3VmFsdWUpIHsKLSAgICAgICAgdGVzdFBhc3NlZChwcm9w
ZXJ0eSArICIgaXMgc3RpbGwgIiArIG9sZFZhbHVlKTsKLSAgICB9IGVsc2UgewotICAgICAgICB0
ZXN0RmFpbGVkKHByb3BlcnR5ICsgIiB2YWx1ZSB3YXMgY2hhbmdlZCIpOwotICAgIH0KLX0KLQot
ZnVuY3Rpb24gZXJyb3JDYWxsYmFjayhlcnIpIHsKLSAgdGVzdEZhaWxlZChlcnIpOwotICBmaW5p
c2hKU1Rlc3QoKTsKLX0KLQotZnVuY3Rpb24gZ2V0RmlsZUNhbGxiYWNrKGVudHJ5KSB7Ci0gIGZp
bGVFbnRyeSA9IGVudHJ5OwotICBzZXRSZWFkb25seVByb3BlcnR5KCJmaWxlRW50cnkuaXNGaWxl
IiwgImZhbHNlIik7Ci0gIHNldFJlYWRvbmx5UHJvcGVydHkoImZpbGVFbnRyeS5pc0RpcmVjdG9y
eSIsICJ0cnVlIik7Ci0gIHNldFJlYWRvbmx5UHJvcGVydHkoImZpbGVFbnRyeS5uYW1lIiwgIidi
YXInIik7Ci0gIHNldFJlYWRvbmx5UHJvcGVydHkoImZpbGVFbnRyeS5mdWxsUGF0aCIsICInYmFy
JyIpOwotICBzZXRSZWFkb25seVByb3BlcnR5KCJmaWxlRW50cnkuZmlsZXN5c3RlbSIsICJudWxs
Iik7Ci0gIGZpbmlzaEpTVGVzdCgpOwotfQotCi1mdW5jdGlvbiBzdWNjZXNzQ2FsbGJhY2soZnMp
IHsKLSAgZmlsZVN5c3RlbSA9IGZzOwotICBzZXRSZWFkb25seVByb3BlcnR5KCJmaWxlU3lzdGVt
Lm5hbWUiLCAiJ2JhciciKTsKLSAgcm9vdCA9IGV2YWxBbmRMb2coInJvb3QgPSBmaWxlU3lzdGVt
LnJvb3QiKTsKLSAgZXZhbEFuZExvZygicm9vdC5nZXRGaWxlKCdmb28nLCB7Y3JlYXRlOnRydWV9
LCBnZXRGaWxlQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spIik7Ci19Ci0KLXZhciBqc1Rlc3RJc0Fz
eW5jID0gdHJ1ZTsKLWV2YWxBbmRMb2coIndlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKFRFTVBPUkFS
WSwgMTAwLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spIik7CkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL3NpbXBsZS1yZXF1aXJlZC1hcmd1bWVudHMt
Z2V0ZGlyZWN0b3J5LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3Rl
bS9yZXNvdXJjZXMvc2ltcGxlLXJlcXVpcmVkLWFyZ3VtZW50cy1nZXRkaXJlY3RvcnkuanMJKHJl
dmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMv
c2ltcGxlLXJlcXVpcmVkLWFyZ3VtZW50cy1nZXRkaXJlY3RvcnkuanMJKHdvcmtpbmcgY29weSkK
QEAgLTEsMjYgKzAsMCBAQAotaWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgewotICAgIGltcG9ydFNj
cmlwdHMoJy4uL3Jlc291cmNlcy9mcy13b3JrZXItY29tbW9uLmpzJyk7Ci0gICAgaW1wb3J0U2Ny
aXB0cygnLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7Ci0gICAgaW1wb3J0U2Ny
aXB0cygnLi4vcmVzb3VyY2VzL2ZzLXRlc3QtdXRpbC5qcycpOwotfQotCi1kZXNjcmlwdGlvbigi
RGlyZWN0b3J5RW50cnkgcmVxdWlyZWQgYXJndW1lbnRzIHRlc3QuIik7Ci0KLXZhciBmaWxlU3lz
dGVtID0gbnVsbDsKLQotZnVuY3Rpb24gZXJyb3JDYWxsYmFjayhlcnJvcikgewotICAgIGRlYnVn
KCJFcnJvciBvY2N1cmVkIHdoaWxlIHJlcXVlc3RpbmcgYSBURU1QT1JBUlkgZmlsZSBzeXN0ZW06
IiArIGVycm9yLmNvZGUpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi1mdW5jdGlvbiBzdWNj
ZXNzQ2FsbGJhY2soZnMpIHsKLSAgICBmaWxlU3lzdGVtID0gZnM7Ci0gICAgZGVidWcoIlN1Y2Nl
c3NmdWxseSBvYnRhaW5lZCBURU1QT1JBUlkgRmlsZVN5c3RlbToiICsgZmlsZVN5c3RlbS5uYW1l
KTsKLSAgICByb290ID0gZXZhbEFuZExvZygicm9vdCA9IGZpbGVTeXN0ZW0ucm9vdCIpOwotICAg
IHNob3VsZFRocm93KCJyb290LmdldERpcmVjdG9yeSgpIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7
Ci19Ci0KLXZhciBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLWV2YWxBbmRMb2coIndlYmtpdFJlcXVl
c3RGaWxlU3lzdGVtKFRFTVBPUkFSWSwgMTAwLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJh
Y2spOyIpOwotdmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL3NpbXBsZS1yZXF1aXJlZC1hcmd1bWVudHMtZ2V0
ZmlsZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3Vy
Y2VzL3NpbXBsZS1yZXF1aXJlZC1hcmd1bWVudHMtZ2V0ZmlsZS5qcwkocmV2aXNpb24gMTU2Njkx
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9zaW1wbGUtcmVxdWly
ZWQtYXJndW1lbnRzLWdldGZpbGUuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsMjYgKzAsMCBAQAot
aWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgewotICAgIGltcG9ydFNjcmlwdHMoJy4uL3Jlc291cmNl
cy9mcy13b3JrZXItY29tbW9uLmpzJyk7Ci0gICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7Ci0gICAgaW1wb3J0U2NyaXB0cygnLi4vcmVzb3VyY2Vz
L2ZzLXRlc3QtdXRpbC5qcycpOwotfQotCi1kZXNjcmlwdGlvbigiRGlyZWN0b3J5RW50cnkgcmVx
dWlyZWQgYXJndW1lbnRzIHRlc3QuIik7Ci0KLXZhciBmaWxlU3lzdGVtID0gbnVsbDsKLQotZnVu
Y3Rpb24gZXJyb3JDYWxsYmFjayhlcnJvcikgewotICAgIGRlYnVnKCJFcnJvciBvY2N1cmVkIHdo
aWxlIHJlcXVlc3RpbmcgYSBURU1QT1JBUlkgZmlsZSBzeXN0ZW06IiArIGVycm9yLmNvZGUpOwot
ICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi1mdW5jdGlvbiBzdWNjZXNzQ2FsbGJhY2soZnMpIHsK
LSAgICBmaWxlU3lzdGVtID0gZnM7Ci0gICAgZGVidWcoIlN1Y2Nlc3NmdWxseSBvYnRhaW5lZCBU
RU1QT1JBUlkgRmlsZVN5c3RlbToiICsgZmlsZVN5c3RlbS5uYW1lKTsKLSAgICByb290ID0gZXZh
bEFuZExvZygicm9vdCA9IGZpbGVTeXN0ZW0ucm9vdCIpOwotICAgIHNob3VsZFRocm93KCJyb290
LmdldEZpbGUoKSIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi12YXIganNUZXN0SXNBc3lu
YyA9IHRydWU7Ci1ldmFsQW5kTG9nKCJ3ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbShURU1QT1JBUlks
IDEwMCwgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsiKTsKLXZhciBzdWNjZXNzZnVs
bHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291
cmNlcy9zaW1wbGUtcmVxdWlyZWQtYXJndW1lbnRzLWdldG1ldGFkYXRhLmpzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvc2ltcGxlLXJlcXVpcmVk
LWFyZ3VtZW50cy1nZXRtZXRhZGF0YS5qcwkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9zaW1wbGUtcmVxdWlyZWQtYXJndW1lbnRzLWdl
dG1ldGFkYXRhLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDI2ICswLDAgQEAKLWlmICh0aGlzLmlt
cG9ydFNjcmlwdHMpIHsKLSAgICBpbXBvcnRTY3JpcHRzKCcuLi9yZXNvdXJjZXMvZnMtd29ya2Vy
LWNvbW1vbi5qcycpOwotICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcycpOwotICAgIGltcG9ydFNjcmlwdHMoJy4uL3Jlc291cmNlcy9mcy10ZXN0LXV0
aWwuanMnKTsKLX0KLQotZGVzY3JpcHRpb24oIkRpcmVjdG9yeUVudHJ5LmdldE1ldGFkYXRhIHJl
cXVpcmVkIGFyZ3VtZW50cyB0ZXN0LiIpOwotCi12YXIgZmlsZVN5c3RlbSA9IG51bGw7Ci0KLWZ1
bmN0aW9uIGVycm9yQ2FsbGJhY2soZXJyb3IpIHsKLSAgICBkZWJ1ZygiRXJyb3Igb2NjdXJlZCB3
aGlsZSByZXF1ZXN0aW5nIGEgVEVNUE9SQVJZIGZpbGUgc3lzdGVtOiIgKyBlcnJvci5jb2RlKTsK
LSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotZnVuY3Rpb24gc3VjY2Vzc0NhbGxiYWNrKGZzKSB7
Ci0gICAgZmlsZVN5c3RlbSA9IGZzOwotICAgIGRlYnVnKCJTdWNjZXNzZnVsbHkgb2J0YWluZWQg
VEVNUE9SQVJZIEZpbGVTeXN0ZW06IiArIGZpbGVTeXN0ZW0ubmFtZSk7Ci0gICAgcm9vdCA9IGV2
YWxBbmRMb2coInJvb3QgPSBmaWxlU3lzdGVtLnJvb3QiKTsKLSAgICBzaG91bGRUaHJvdygicm9v
dC5nZXRNZXRhZGF0YSgpIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLXZhciBqc1Rlc3RJ
c0FzeW5jID0gdHJ1ZTsKLWV2YWxBbmRMb2coIndlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKFRFTVBP
UkFSWSwgMTAwLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spOyIpOwotdmFyIHN1Y2Nl
c3NmdWxseVBhcnNlZCA9IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0v
cmVzb3VyY2VzL3NpbXBsZS1yZXF1aXJlZC1hcmd1bWVudHMtcmVtb3ZlLmpzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvc2ltcGxlLXJlcXVpcmVk
LWFyZ3VtZW50cy1yZW1vdmUuanMJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zh
c3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvc2ltcGxlLXJlcXVpcmVkLWFyZ3VtZW50cy1yZW1vdmUu
anMJKHdvcmtpbmcgY29weSkKQEAgLTEsMjYgKzAsMCBAQAotaWYgKHRoaXMuaW1wb3J0U2NyaXB0
cykgewotICAgIGltcG9ydFNjcmlwdHMoJy4uL3Jlc291cmNlcy9mcy13b3JrZXItY29tbW9uLmpz
Jyk7Ci0gICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Jyk7Ci0gICAgaW1wb3J0U2NyaXB0cygnLi4vcmVzb3VyY2VzL2ZzLXRlc3QtdXRpbC5qcycpOwot
fQotCi1kZXNjcmlwdGlvbigiRW50cnkucmVtb3ZlKCkgcmVxdWlyZWQgYXJndW1lbnRzIHRlc3Qu
Iik7Ci0KLXZhciBmaWxlU3lzdGVtID0gbnVsbDsKLQotZnVuY3Rpb24gZXJyb3JDYWxsYmFjayhl
cnJvcikgewotICAgIGRlYnVnKCJFcnJvciBvY2N1cmVkIHdoaWxlIHJlcXVlc3RpbmcgYSBURU1Q
T1JBUlkgZmlsZSBzeXN0ZW06IiArIGVycm9yLmNvZGUpOwotICAgIGZpbmlzaEpTVGVzdCgpOwot
fQotCi1mdW5jdGlvbiBzdWNjZXNzQ2FsbGJhY2soZnMpIHsKLSAgICBmaWxlU3lzdGVtID0gZnM7
Ci0gICAgZGVidWcoIlN1Y2Nlc3NmdWxseSBvYnRhaW5lZCBURU1QT1JBUlkgRmlsZVN5c3RlbToi
ICsgZmlsZVN5c3RlbS5uYW1lKTsKLSAgICByb290ID0gZXZhbEFuZExvZygicm9vdCA9IGZpbGVT
eXN0ZW0ucm9vdCIpOwotICAgIHNob3VsZFRocm93KCJyb290LnJlbW92ZSgpIik7Ci0gICAgZmlu
aXNoSlNUZXN0KCk7Ci19Ci0KLXZhciBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLWV2YWxBbmRMb2co
IndlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKFRFTVBPUkFSWSwgMTAwLCBzdWNjZXNzQ2FsbGJhY2ss
IGVycm9yQ2FsbGJhY2spOyIpOwotdmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL3NpbXBsZS10ZW1wb3Jhcnkt
c3luYy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3Vy
Y2VzL3NpbXBsZS10ZW1wb3Jhcnktc3luYy5qcwkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9zaW1wbGUtdGVtcG9yYXJ5LXN5bmMuanMJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMTQgKzAsMCBAQAotaWYgKHRoaXMuaW1wb3J0U2NyaXB0cykg
ewotICAgIGltcG9ydFNjcmlwdHMoJy4uL3Jlc291cmNlcy9mcy13b3JrZXItY29tbW9uLmpzJyk7
Ci0gICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7
Ci0gICAgaW1wb3J0U2NyaXB0cygnLi4vcmVzb3VyY2VzL2ZzLXRlc3QtdXRpbC5qcycpOwotfQot
Ci1kZXNjcmlwdGlvbigicmVxdWVzdEZpbGVTeXN0ZW1TeW5jIFRFTVBPUkFSWSB0ZXN0LiIpOwot
Ci12YXIgZmlsZVN5c3RlbSA9IHdlYmtpdFJlcXVlc3RGaWxlU3lzdGVtU3luYyhURU1QT1JBUlks
IDEwMCk7Ci0KLWRlYnVnKCJTdWNjZXNzZnVsbHkgb2J0YWluZWQgVEVNUE9SQVJZIEZpbGVTeXN0
ZW06IiArIGZpbGVTeXN0ZW0ubmFtZSk7Ci1zaG91bGRCZVRydWUoImZpbGVTeXN0ZW0ubmFtZS5s
ZW5ndGggPiAwIik7Ci1zaG91bGRCZSgiZmlsZVN5c3RlbS5yb290LmZ1bGxQYXRoIiwgJyIvIicp
OwotZmluaXNoSlNUZXN0KCk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVz
b3VyY2VzL3NpbXBsZS10ZW1wb3JhcnkuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9maWxlc3lzdGVtL3Jlc291cmNlcy9zaW1wbGUtdGVtcG9yYXJ5LmpzCShyZXZpc2lvbiAxNTY2
OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL3NpbXBsZS10ZW1w
b3JhcnkuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsMjUgKzAsMCBAQAotaWYgKHRoaXMuaW1wb3J0
U2NyaXB0cykgewotICAgIGltcG9ydFNjcmlwdHMoJy4uL3Jlc291cmNlcy9mcy13b3JrZXItY29t
bW9uLmpzJyk7Ci0gICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzJyk7Ci0gICAgaW1wb3J0U2NyaXB0cygnLi4vcmVzb3VyY2VzL2ZzLXRlc3QtdXRpbC5q
cycpOwotfQotCi1kZXNjcmlwdGlvbigicmVxdWVzdEZpbGVTeXN0ZW0gVEVNUE9SQVJZIHRlc3Qu
Iik7Ci0KLXZhciBmaWxlU3lzdGVtID0gbnVsbDsKLQotZnVuY3Rpb24gZXJyb3JDYWxsYmFjayhl
cnJvcikgewotICAgIGRlYnVnKCdFcnJvciBvY2N1cmVkIHdoaWxlIHJlcXVlc3RpbmcgYSBURU1Q
T1JBUlkgZmlsZSBzeXN0ZW06JyArIGVycm9yLmNvZGUpOwotICAgIGZpbmlzaEpTVGVzdCgpOwot
fQotCi1mdW5jdGlvbiBzdWNjZXNzQ2FsbGJhY2soZnMpIHsKLSAgICBmaWxlU3lzdGVtID0gZnM7
Ci0gICAgZGVidWcoIlN1Y2Nlc3NmdWxseSBvYnRhaW5lZCBURU1QT1JBUlkgRmlsZVN5c3RlbToi
ICsgZmlsZVN5c3RlbS5uYW1lKTsKLSAgICBzaG91bGRCZVRydWUoImZpbGVTeXN0ZW0ubmFtZS5s
ZW5ndGggPiAwIik7Ci0gICAgc2hvdWxkQmUoImZpbGVTeXN0ZW0ucm9vdC5mdWxsUGF0aCIsICci
LyInKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotdmFyIGpzVGVzdElzQXN5bmMgPSB0cnVl
Owotd2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0oVEVNUE9SQVJZLCAxMDAsIHN1Y2Nlc3NDYWxsYmFj
aywgZXJyb3JDYWxsYmFjayk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVz
b3VyY2VzL3N5bmMtb3BlcmF0aW9ucy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL3N5bmMtb3BlcmF0aW9ucy5qcwkocmV2aXNpb24gMTU2Njkx
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9zeW5jLW9wZXJhdGlv
bnMuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsNDMgKzAsMCBAQAotaWYgKHRoaXMuaW1wb3J0U2Ny
aXB0cykgewotICAgIGltcG9ydFNjcmlwdHMoJy4uL3Jlc291cmNlcy9mcy13b3JrZXItY29tbW9u
LmpzJyk7Ci0gICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzJyk7Ci0gICAgaW1wb3J0U2NyaXB0cygnLi4vcmVzb3VyY2VzL2ZzLXRlc3QtdXRpbC5qcycp
OwotfQotCi1kZXNjcmlwdGlvbigiVGVzdCBtYWtpbmcgbXVsdGlwbGUgc3luY2hyb25vdXMgRmls
ZVN5c3RlbSBvcGVyYXRpb25zLiIpOwotCi12YXIgZmlsZVN5c3RlbSA9IHdlYmtpdFJlcXVlc3RG
aWxlU3lzdGVtU3luYyh0aGlzLlRFTVBPUkFSWSwgMTAwKTsKLXJlbW92ZUFsbEluRGlyZWN0b3J5
U3luYyhmaWxlU3lzdGVtLnJvb3QpOwotCi0vLyBTdGFnZSAxIChwcmVwYXJlKQotdmFyIGEgPSBm
aWxlU3lzdGVtLnJvb3QuZ2V0RmlsZSgnYScsIHtjcmVhdGU6dHJ1ZX0pOwotdmFyIGIgPSBmaWxl
U3lzdGVtLnJvb3QuZ2V0RGlyZWN0b3J5KCdiJywge2NyZWF0ZTp0cnVlfSk7Ci12YXIgYyA9IGZp
bGVTeXN0ZW0ucm9vdC5nZXREaXJlY3RvcnkoJ2MnLCB7Y3JlYXRlOnRydWV9KTsKLXZhciBkID0g
ZmlsZVN5c3RlbS5yb290LmdldEZpbGUoJ2QnLCB7Y3JlYXRlOnRydWV9KTsKLQotLy8gU3RhZ2Ug
MiAodGVzdCkKLXZhciBhX2NvcHkgPSBhLmNvcHlUbyhiLCAndG1wJyk7Ci12YXIgbWV0YWRhdGEg
PSBhLmdldE1ldGFkYXRhKCk7Ci12YXIgYl9wYXJlbnQgPSBiLmdldFBhcmVudCgpOwotdmFyIGNf
Y29weSA9IGMuY29weVRvKGZpbGVTeXN0ZW0ucm9vdCwgJ2YnKTsKLXZhciBkX25ldyA9IGQubW92
ZVRvKGZpbGVTeXN0ZW0ucm9vdCwgJ2QyJyk7Ci12YXIgZSA9IGZpbGVTeXN0ZW0ucm9vdC5nZXRG
aWxlKCdlJywge2NyZWF0ZTp0cnVlfSk7Ci0KLS8vIFZlcmlmeQotdmFyIHJlYWRlciA9IGZpbGVT
eXN0ZW0ucm9vdC5jcmVhdGVSZWFkZXIoKTsKLXZhciBkaXJzQ291bnQgPSAwOwotdmFyIHBhdGhz
ID0gW107Ci1kbyB7Ci0gICAgdmFyIGVudHJpZXMgPSByZWFkZXIucmVhZEVudHJpZXMoKTsKLSAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IGVudHJpZXMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgcGF0
aHMucHVzaChlbnRyaWVzW2ldLmZ1bGxQYXRoKTsKLSAgICAgICAgaWYgKGVudHJpZXNbaV0uaXNE
aXJlY3RvcnkpCi0gICAgICAgICAgICBkaXJzQ291bnQrKzsKLSAgICB9Ci19IHdoaWxlIChlbnRy
aWVzLmxlbmd0aCk7Ci0KLXBhdGhzLnNvcnQoKTsKLXNob3VsZEJlKCciJyArIHBhdGhzLmpvaW4o
JywnKSArICciJywgJyIvYSwvYiwvYywvZDIsL2UsL2YiJyk7Ci1zaG91bGRCZSgiZGlyc0NvdW50
IiwgIjMiKTsKLXJlbW92ZUFsbEluRGlyZWN0b3J5U3luYyhmaWxlU3lzdGVtLnJvb3QpOwotZmlu
aXNoSlNUZXN0KCk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vc2NyaXB0LXRl
c3RzL1RFTVBMQVRFLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lz
dGVtL3NjcmlwdC10ZXN0cy9URU1QTEFURS5odG1sCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vc2NyaXB0LXRlc3RzL1RFTVBMQVRFLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTEsMTAgKzAsMCBAQAotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InJl
c291cmNlcy9mcy10ZXN0LXV0aWwuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08c2Ny
aXB0IHNyYz0iWU9VUl9KU19GSUxFX0hFUkUiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3NjcmlwdC10ZXN0cy9maWxlc3lzdGVt
LXJlZmVyZW5jZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0v
c2NyaXB0LXRlc3RzL2ZpbGVzeXN0ZW0tcmVmZXJlbmNlLmpzCShyZXZpc2lvbiAxNTY2OTEpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vc2NyaXB0LXRlc3RzL2ZpbGVzeXN0ZW0tcmVm
ZXJlbmNlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcwICswLDAgQEAKLWRlc2NyaXB0aW9uKCJU
aGlzIHRlc3RzIGlmIEVudHJpZXMgcmV0dXJuZWQgYnkgY2FsbGJhY2tzIGtlZXAgZnVuY3Rpb25p
bmcgZXZlbiBhZnRlciB3ZSBsb3NlIGEgcmVmZXJlbmNlIHRvIHRoZSBmaWxlc3lzdGVtIGluIHRo
ZSBzY3JpcHQuIik7Ci0KLXZhciB0ZXN0RGlyZWN0b3J5ID0gbnVsbDsKLXZhciB0ZXN0RW50cmll
cyA9IG51bGw7Ci0KLWZ1bmN0aW9uIGVycm9yQ2FsbGJhY2soZXJyb3IpCi17Ci0gICAgdGVzdEZh
aWxlZCgiRXJyb3Igb2NjdXJyZWQ6ICIgKyBlcnJvci5jb2RlKTsKLSAgICBmaW5pc2hKU1Rlc3Qo
KTsKLX0KLQotZnVuY3Rpb24gcnVuVGVzdDEocm9vdCkKLXsKLSAgICBkZWJ1ZygiUnVubmluZyBy
dW5UZXN0MSgpLi4uIik7Ci0gICAgdmFyIGhlbHBlciA9IG5ldyBKb2luSGVscGVyKCk7Ci0gICAg
dmFyIGRvbmUgPSBmdW5jdGlvbigpIHsgaGVscGVyLmRvbmUoKTsgfTsKLQotICAgIGhlbHBlci5y
dW4oZnVuY3Rpb24oKSB7IHJvb3QuZ2V0RmlsZSgnYScsIHtjcmVhdGU6dHJ1ZX0sIGRvbmUsIGVy
cm9yQ2FsbGJhY2spOyB9KTsKLSAgICBoZWxwZXIucnVuKGZ1bmN0aW9uKCkgeyByb290LmdldERp
cmVjdG9yeSgnYicsIHtjcmVhdGU6dHJ1ZX0sIGRvbmUsIGVycm9yQ2FsbGJhY2spOyB9KTsKLSAg
ICBoZWxwZXIucnVuKGZ1bmN0aW9uKCkgeyByb290LmdldERpcmVjdG9yeSgnYycsIHtjcmVhdGU6
dHJ1ZX0sIGRvbmUsIGVycm9yQ2FsbGJhY2spOyB9KTsKLQotICAgIGdjKCk7Ci0gICAgaGVscGVy
LmpvaW4oZnVuY3Rpb24oKSB7IHJ1blRlc3QyKHJvb3QpOyB9KTsKLX0KLQotZnVuY3Rpb24gcnVu
VGVzdDIocm9vdCkKLXsKLSAgICBkZWJ1ZygiUnVubmluZyBydW5UZXN0MigpLi4uIik7Ci0gICAg
dmFyIGhlbHBlciA9IG5ldyBKb2luSGVscGVyKCk7Ci0gICAgdmFyIGRvbmUgPSBmdW5jdGlvbigp
IHsgaGVscGVyLmRvbmUoKTsgfTsKLQotICAgIGhlbHBlci5ydW4oZnVuY3Rpb24oKSB7IHJvb3Qu
Z2V0RmlsZSgnL2IvMScsIHtjcmVhdGU6dHJ1ZX0sIGRvbmUsIGVycm9yQ2FsbGJhY2spOyB9KTsK
LSAgICBoZWxwZXIucnVuKGZ1bmN0aW9uKCkgeyByb290LmdldEZpbGUoJy9iLzInLCB7Y3JlYXRl
OnRydWV9LCBkb25lLCBlcnJvckNhbGxiYWNrKTsgfSk7Ci0gICAgaGVscGVyLnJ1bihmdW5jdGlv
bigpIHsgcm9vdC5nZXRGaWxlKCcvYi8zJywge2NyZWF0ZTp0cnVlfSwgZG9uZSwgZXJyb3JDYWxs
YmFjayk7IH0pOwotICAgIGhlbHBlci5ydW4oZnVuY3Rpb24oKSB7IHJvb3QuZ2V0RmlsZSgnL2Iv
NCcsIHtjcmVhdGU6dHJ1ZX0sIGRvbmUsIGVycm9yQ2FsbGJhY2spOyB9KTsKLSAgICBoZWxwZXIu
cnVuKGZ1bmN0aW9uKCkgeyByb290LmdldERpcmVjdG9yeSgnYicsIHtjcmVhdGU6ZmFsc2V9LCBm
dW5jdGlvbihlbnRyeSkgeyB0ZXN0RGlyZWN0b3J5ID0gZW50cnk7IGhlbHBlci5kb25lKCk7IH0s
IGVycm9yQ2FsbGJhY2spOyB9KTsKLQotICAgIGdjKCk7Ci0gICAgaGVscGVyLmpvaW4oZnVuY3Rp
b24oKSB7IHJ1blRlc3QzKCk7IH0pOwotfQotCi1mdW5jdGlvbiBydW5UZXN0MygpCi17Ci0gICAg
ZGVidWcoIlJ1bm5pbmcgcnVuVGVzdDMoKS4uLiIpOwotICAgIHRlc3REaXJlY3RvcnkuY3JlYXRl
UmVhZGVyKCkucmVhZEVudHJpZXMoZW50cmllc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsKLSAg
ICB0ZXN0RGlyZWN0b3J5ID0gbnVsbDsKLSAgICBnYygpOwotfQotCi1mdW5jdGlvbiBlbnRyaWVz
Q2FsbGJhY2soZW50cmllcykKLXsKLSAgICBkZWJ1ZygiUnVubmluZyBydW5UZXN0NCgpLi4uIik7
Ci0gICAgdGVzdEVudHJpZXMgPSBlbnRyaWVzOwotICAgIHNob3VsZEJlKCJ0ZXN0RW50cmllcy5s
ZW5ndGgiLCAiNCIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi1mdW5jdGlvbiBmaWxlU3lz
dGVtQ2FsbGJhY2soZnMpCi17Ci0gICAgdmFyIHJvb3QgPSBmcy5yb290OwotICAgIHJlbW92ZUFs
bEluRGlyZWN0b3J5KGZzLnJvb3QsIGZ1bmN0aW9uKCkgeyBydW5UZXN0MShyb290KTsgfSwgZXJy
b3JDYWxsYmFjayk7Ci0gICAgZnMgPSBudWxsOwotICAgIGdjKCk7Ci19Ci0KLWlmICh3aW5kb3cu
d2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0pIHsKLSAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRy
dWU7Ci0gICAgd2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0od2luZG93LlRFTVBPUkFSWSwgMTAwLCBm
aWxlU3lzdGVtQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spOwotfSBlbHNlCi0gICAgZGVidWcoIlRo
aXMgdGVzdCByZXF1aXJlcyBGaWxlU3lzdGVtIEFQSSBzdXBwb3J0LiIpOwpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9maWxlc3lzdGVtL3NjcmlwdC10ZXN0cy9maWxlc3lzdGVtLXVuc2VyaWFsaXph
YmxlLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9zY3JpcHQt
dGVzdHMvZmlsZXN5c3RlbS11bnNlcmlhbGl6YWJsZS5qcwkocmV2aXNpb24gMTU2NjkxKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3NjcmlwdC10ZXN0cy9maWxlc3lzdGVtLXVuc2Vy
aWFsaXphYmxlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDI5ICswLDAgQEAKLWRlc2NyaXB0aW9u
KCJUaGlzIHRlc3RzIGlmIHRoZSBmaWxlc3lzdGVtIG9iamVjdCBpcyB1bnNlcmlhbGl6YWJsZSBi
eSBkZWZhdWx0Iik7Ci0KLWZ1bmN0aW9uIGVycm9yQ2FsbGJhY2soZXJyb3IpCi17Ci0gICAgdGVz
dEZhaWxlZCgiRXJyb3Igb2NjdXJyZWQ6ICIgKyBlcnJvci5jb2RlKTsKLSAgICBmaW5pc2hKU1Rl
c3QoKTsKLX0KLQotZnVuY3Rpb24gZmlsZVN5c3RlbUNhbGxiYWNrKGZzKQotewotICAgIHRyeSB7
Ci0gICAgICAgIHBvc3RNZXNzYWdlKGZzLCAnKicpOwotICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAg
ICAgZGVidWcoZS5tZXNzYWdlKTsKLSAgICB9Ci0KLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQot
ZnVuY3Rpb24gb25tZXNzYWdlKCkKLXsKLX0KLQotaWYgKHdpbmRvdy53ZWJraXRSZXF1ZXN0Rmls
ZVN5c3RlbSkgewotICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgb25tZXNz
YWdlLCBmYWxzZSk7Ci0gICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotICAgIHdlYmtp
dFJlcXVlc3RGaWxlU3lzdGVtKHdpbmRvdy5URU1QT1JBUlksIDEwMCwgZmlsZVN5c3RlbUNhbGxi
YWNrLCBlcnJvckNhbGxiYWNrKTsKLX0gZWxzZQotICAgIGRlYnVnKCJUaGlzIHRlc3QgcmVxdWly
ZXMgRmlsZVN5c3RlbSBBUEkgc3VwcG9ydC4iKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmls
ZXN5c3RlbS9zY3JpcHQtdGVzdHMvZmxhZ3MtcGFzc2luZy5qcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vc2NyaXB0LXRlc3RzL2ZsYWdzLXBhc3NpbmcuanMJKHJl
dmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9zY3JpcHQtdGVz
dHMvZmxhZ3MtcGFzc2luZy5qcwkod29ya2luZyBjb3B5KQpAQCAtMSw5NCArMCwwIEBACi1kZXNj
cmlwdGlvbigiUGFzc2luZyBGbGFncyBwYXJhbWV0ZXIgdGVzdHMuIFRoaXMgdGVzdCBjaGVja3Mg
aWYgcGFzc2luZyBGbGFncyBwYXJhbWV0ZXJzIHRvIERpcmVjdG9yeUVudHJ5LmdldEZpbGUgZG9l
cyBub3QgY3Jhc2ggYW5kIHdvcmtzIGFzIGV4cGVjdGVkLiIpOwotCi12YXIgdGVzdEZpbGVOYW1l
ID0gJy9ub25fZXhpc3RlbnRfZmlsZSc7Ci12YXIgZmlsZVN5c3RlbSA9IG51bGw7Ci12YXIgZXhw
ZWN0ZWRDYWxsYmFja3NDb3VudCA9IDA7Ci12YXIgdW5leHBlY3RlZENhbGxiYWNrc0NvdW50ID0g
MDsKLXZhciBleHBlY3RlZCA9IGZ1bmN0aW9uKGUpIHsgZXhwZWN0ZWRDYWxsYmFja3NDb3VudCsr
OyB9OwotdmFyIHVuZXhwZWN0ZWQgPSBmdW5jdGlvbihlKSB7IHVuZXhwZWN0ZWRDYWxsYmFja3ND
b3VudCsrOyB9OwotCi12YXIgdGVzdHNMaXN0ID0gWwotICAgIHJ1bk9iamVjdFRlc3QsCi0gICAg
Y2xlYW51cEFuZFJ1bk5leHQsCi0gICAgcnVuSlNPTlRlc3QsCi0gICAgcnVuSlNPTlRlc3RXaXRo
RXhjbHVzaXZlLAotICAgIHJ1bk51bGxUZXN0LAotICAgIHJ1bk5vbk9iamVjdFRlc3QKLV07Ci12
YXIgdGVzdENvdW50ZXIgPSAwOwotCi1mdW5jdGlvbiBydW5OZXh0VGVzdCh2KSB7Ci0gICAgaWYg
KHRlc3RDb3VudGVyID09IHRlc3RzTGlzdC5sZW5ndGgpIHsKLSAgICAgICAgZGVidWcoIkZpbmlz
aGVkIHJ1bm5pbmcgdGVzdHMuIik7Ci0gICAgICAgIHNob3VsZEJlKCdleHBlY3RlZENhbGxiYWNr
c0NvdW50JywgJzEnKTsKLSAgICAgICAgc2hvdWxkQmUoJ3VuZXhwZWN0ZWRDYWxsYmFja3NDb3Vu
dCcsICcwJyk7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0gZWxzZQotICAgICAgICAo
dGVzdHNMaXN0W3Rlc3RDb3VudGVyKytdKSgpOwotfQotCi1mdW5jdGlvbiBlcnJvckNhbGxiYWNr
KGVycm9yKSB7Ci0gICAgZGVidWcoIkVycm9yIG9jY3VyZWQgZHVyaW5nIHJlcXVlc3RpbmcgVGVt
cG9yYXJ5IEZpbGVTeXN0ZW06IiArIGVycm9yLmNvZGUpOwotICAgIGZpbmlzaEpTVGVzdCgpOwot
fQotCi0vLyBUZXN0IGJvZHkgZnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLWZ1bmN0aW9uIHJ1bk51bGxUZXN0KHYpIHsKLSAgICBk
ZWJ1ZygiKiBQYXNzaW5nIG51bGwgYXMgYSBmbGFncyBwYXJhbWV0ZXIuIik7Ci0KLSAgICAvLyBU
aGlzIHNob3VsZCBiZSBvayBhbmQgd2UgdHJlYXQgaXQgYXMge2ZhbHNlLCBmYWxzZX0gRmxhZ3Mu
Ci0gICAgZmlsZVN5c3RlbS5yb290LmdldEZpbGUodGVzdEZpbGVOYW1lLCBudWxsLCBydW5OZXh0
VGVzdCwgZXJyb3JDYWxsYmFjayk7Ci19Ci0KLWZ1bmN0aW9uIHJ1bk5vbk9iamVjdFRlc3Qodikg
ewotICAgIGRlYnVnKCIqIFBhc3NpbmcgYSBudW1iZXIgYXMgYSBmbGFncyBwYXJhbWV0ZXIuIik7
Ci0KLSAgICB0cnkgewotICAgICAgICAvLyBUaGlzIHNob3VsZCBiZSBub3QgYmUgb2sgYmVjYXVz
ZSA3IGlzIG5vdCBhbiBvYmplY3QuCi0gICAgICAgIGZpbGVTeXN0ZW0ucm9vdC5nZXRGaWxlKHRl
c3RGaWxlTmFtZSwgNywgZXJyb3JDYWxsYmFjaywgZXJyb3JDYWxsYmFjayk7Ci0gICAgfSBjYXRj
aCAoZXgpIHsKLSAgICAgICAgZGVidWcoIkNhdWdodCBleGNlcHRpb246ICIgKyBleCk7Ci0gICAg
ICAgIHJ1bk5leHRUZXN0KCk7Ci0gICAgfQotfQotCi1mdW5jdGlvbiBydW5PYmplY3RUZXN0KHYp
IHsKLSAgICAvLyBXZWJLaXRGbGFncyBubyBsb25nZXIgaGFzIGEgdmlzaWJsZSBjb25zdHJ1Y3Rv
ci4KLSAgICBpZiAod2luZG93LldlYktpdEZsYWdzKQotICAgICAgICB0aHJvdyAiVGhlcmUgc2hv
dWxkIGJlIG5vIGNvbnN0cnVjdG9yIGZvciBXZWJLaXRGbGFncyEiOwotICAgIHJ1bk5leHRUZXN0
KCk7Ci19Ci0KLWZ1bmN0aW9uIHJ1bkpTT05UZXN0KHYpIHsKLSAgICBkZWJ1ZygiKiBQYXNzaW5n
IEpTT04gRmxhZ3Mgb2JqZWN0LiIpOwotCi0gICAgZmlsZVN5c3RlbS5yb290LmdldEZpbGUodGVz
dEZpbGVOYW1lLCB7Y3JlYXRlOmZhbHNlfSwgdW5leHBlY3RlZCwgZXhwZWN0ZWQpOwotICAgIGZp
bGVTeXN0ZW0ucm9vdC5nZXRGaWxlKHRlc3RGaWxlTmFtZSwge2NyZWF0ZTp0cnVlfSwgcnVuTmV4
dFRlc3QsIGVycm9yQ2FsbGJhY2spOwotfQotCi1mdW5jdGlvbiBydW5KU09OVGVzdFdpdGhFeGNs
dXNpdmUodikgewotICAgIGRlYnVnKCIqIFBhc3NpbmcgSlNPTiBGbGFncyBvYmplY3QgKHdpdGgg
ZXhjbHVzaXZlPXRydWUpLiIpOwotCi0gICAgLy8gVGhpcyBzaG91bGQgZmFpbC4KLSAgICBmaWxl
U3lzdGVtLnJvb3QuZ2V0RmlsZSh0ZXN0RmlsZU5hbWUsIHtjcmVhdGU6dHJ1ZSwgZXhjbHVzaXZl
OnRydWV9LCBlcnJvckNhbGxiYWNrLCBydW5OZXh0VGVzdCk7Ci19Ci0KLS8vIEVuZCBvZiB0ZXN0
IGJvZHkgZnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotCi1mdW5jdGlvbiBjbGVhbnVwQW5kUnVuTmV4dCh2KSB7Ci0gICAgZmlsZVN5c3RlbS5y
b290LmdldEZpbGUodGVzdEZpbGVOYW1lLCB7Y3JlYXRlOmZhbHNlfSwgZnVuY3Rpb24oZW50cnkp
IHsKLSAgICAgICAgLy8gUmVtb3ZlIHRoZSBlbnRyeSBiZWZvcmUgc3RhcnQgdGVzdGluZy4KLSAg
ICAgICAgZW50cnkucmVtb3ZlKHJ1bk5leHRUZXN0LCBlcnJvckNhbGxiYWNrKTsKLSAgICB9LCBy
dW5OZXh0VGVzdCk7Ci19Ci0KLWZ1bmN0aW9uIGZpbGVTeXN0ZW1DYWxsYmFjayhmcykgewotICAg
IGZpbGVTeXN0ZW0gPSBmczsKLSAgICBjbGVhbnVwQW5kUnVuTmV4dCgpOwotfQotCi1pZiAod2lu
ZG93LndlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKSB7Ci0gICAgd2luZG93LmpzVGVzdElzQXN5bmMg
PSB0cnVlOwotICAgIHdlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKHdpbmRvdy5URU1QT1JBUlksIDEw
MCwgZmlsZVN5c3RlbUNhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsKLX0gZWxzZQotICAgIGRlYnVn
KCJUaGlzIHRlc3QgcmVxdWlyZXMgRmlsZVN5c3RlbSBBUEkgc3VwcG9ydC4iKTsKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9zY3JpcHQtdGVzdHMvcmVhZC1kaXJlY3RvcnkuanMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3NjcmlwdC10ZXN0cy9y
ZWFkLWRpcmVjdG9yeS5qcwkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9m
aWxlc3lzdGVtL3NjcmlwdC10ZXN0cy9yZWFkLWRpcmVjdG9yeS5qcwkod29ya2luZyBjb3B5KQpA
QCAtMSw5NSArMCwwIEBACi1kZXNjcmlwdGlvbigiRGlyZWN0b3J5UmVhZGVyLnJlYWRFbnRyaWVz
KCkgdGVzdC4iKTsKLXZhciBmaWxlU3lzdGVtID0gbnVsbDsKLXZhciByZWFkZXIgPSBudWxsOwot
dmFyIHJlc3VsdEVudHJpZXMgPSBbXTsKLQotdmFyIHJlYWRFbnRyaWVzQ291bnQgPSAwOwotdmFy
IGVudHJpZXNDYWxsYmFja0NvdW50ID0gMDsKLQotLy8gcGF0aDogaXNEaXJlY3RvcnkgbWFwLgot
dmFyIHRlc3RFbnRyaWVzID0gewotICAgICcvYSc6IHRydWUsCi0gICAgJy9iJzogZmFsc2UsCi0g
ICAgJy9jJzogdHJ1ZSwKLSAgICAnL2QnOiBmYWxzZSwKLSAgICAnL2UnOiBmYWxzZSwKLSAgICAn
L2YnOiB0cnVlLAotfTsKLXZhciB0ZXN0RW50cmllc0NvdW50ID0gMDsKLQotZnVuY3Rpb24gZW5k
VGVzdCgpCi17Ci0gICAgcmVtb3ZlQWxsSW5EaXJlY3RvcnkoZmlsZVN5c3RlbS5yb290KTsKLSAg
ICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotZnVuY3Rpb24gZXJyb3JDYWxsYmFjayhlcnJvcikKLXsK
LSAgICBkZWJ1ZygiRXJyb3Igb2NjdXJlZDoiICsgZXJyb3IuY29kZSk7Ci0gICAgZW5kVGVzdCgp
OwotfQotCi12YXIgZW50cnkgPSBudWxsOwotZnVuY3Rpb24gdmVyaWZ5VGVzdFJlc3VsdCgpCi17
Ci0gICAgc2hvdWxkQmUoJ3JlYWRFbnRyaWVzQ291bnQnLCAnZW50cmllc0NhbGxiYWNrQ291bnQn
KTsKLSAgICBzaG91bGRCZSgncmVzdWx0RW50cmllcy5sZW5ndGgnLCAndGVzdEVudHJpZXNDb3Vu
dCcpOwotICAgIHJlc3VsdEVudHJpZXMuc29ydChmdW5jdGlvbihhLCBiKSB7IHJldHVybiAoYS5m
dWxsUGF0aCA+IGIuZnVsbFBhdGgpID8gMSA6IChhLmZ1bGxQYXRoIDwgYi5mdWxsUGF0aCkgPyAt
MSA6IDA7IH0pOwotICAgIGZvciAoaSA9IDA7IGkgPCByZXN1bHRFbnRyaWVzLmxlbmd0aDsgKytp
KSB7Ci0gICAgICAgIGVudHJ5ID0gcmVzdWx0RW50cmllc1tpXTsKLSAgICAgICAgZGVidWcoJ0Vu
dHJ5OicgKyBlbnRyeS5mdWxsUGF0aCArICcgaXNEaXJlY3Rvcnk6JyArIGVudHJ5LmlzRGlyZWN0
b3J5KTsKLSAgICAgICAgc2hvdWxkQmUoJ3Rlc3RFbnRyaWVzW2VudHJ5LmZ1bGxQYXRoXScsICdl
bnRyeS5pc0RpcmVjdG9yeScpOwotICAgIH0KLX0KLQotZnVuY3Rpb24gZW50cmllc0NhbGxiYWNr
KGVudHJpZXMpCi17Ci0gICAgZW50cmllc0NhbGxiYWNrQ291bnQrKzsKLQotICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgZW50cmllcy5sZW5ndGg7ICsraSkKLSAgICAgICAgcmVzdWx0RW50cmllcy5w
dXNoKGVudHJpZXNbaV0pOwotCi0gICAgaWYgKGVudHJpZXMubGVuZ3RoKSB7Ci0gICAgICAgIHJl
YWRFbnRyaWVzQ291bnQrKzsKLSAgICAgICAgcmVhZGVyLnJlYWRFbnRyaWVzKGVudHJpZXNDYWxs
YmFjaywgZXJyb3JDYWxsYmFjayk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgLy8gTXVzdCBoYXZl
IHJlYWQgYWxsIHRoZSBlbnRyaWVzLgotICAgICAgICB2ZXJpZnlUZXN0UmVzdWx0KCk7Ci0gICAg
ICAgIGVuZFRlc3QoKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHJ1blJlYWREaXJlY3RvcnlUZXN0
KCkKLXsKLSAgICByZWFkRW50cmllc0NvdW50Kys7Ci0gICAgcmVhZGVyID0gZmlsZVN5c3RlbS5y
b290LmNyZWF0ZVJlYWRlcigpOwotICAgIHJlYWRlci5yZWFkRW50cmllcyhlbnRyaWVzQ2FsbGJh
Y2ssIGVycm9yQ2FsbGJhY2spOwotfQotCi1mdW5jdGlvbiBwcmVwYXJlRm9yVGVzdCgpCi17Ci0g
ICAgdmFyIGhlbHBlciA9IG5ldyBKb2luSGVscGVyKCk7Ci0gICAgdmFyIGRvbmUgPSBmdW5jdGlv
bigpIHsgaGVscGVyLmRvbmUoKTsgfTsKLQotICAgIGZvciAodmFyIHBhdGggaW4gdGVzdEVudHJp
ZXMpIHsKLSAgICAgICAgdGVzdEVudHJpZXNDb3VudCsrOwotICAgICAgICBpZiAodGVzdEVudHJp
ZXNbcGF0aF0pCi0gICAgICAgICAgICBoZWxwZXIucnVuKGZ1bmN0aW9uKCkgeyBmaWxlU3lzdGVt
LnJvb3QuZ2V0RGlyZWN0b3J5KHBhdGgsIHtjcmVhdGU6dHJ1ZX0sIGRvbmUsIGVycm9yQ2FsbGJh
Y2spOyB9KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgaGVscGVyLnJ1bihmdW5jdGlvbigp
IHsgZmlsZVN5c3RlbS5yb290LmdldEZpbGUocGF0aCwge2NyZWF0ZTp0cnVlfSwgZG9uZSwgZXJy
b3JDYWxsYmFjayk7IH0pOwotICAgIH0KLSAgICBoZWxwZXIuam9pbihydW5SZWFkRGlyZWN0b3J5
VGVzdCk7Ci19Ci0KLWZ1bmN0aW9uIHN1Y2Nlc3NDYWxsYmFjayhmcykKLXsKLSAgICBmaWxlU3lz
dGVtID0gZnM7Ci0gICAgZGVidWcoIlN1Y2Nlc3NmdWxseSBvYnRhaW5lZCBQZXJzaXN0ZW50IEZp
bGVTeXN0ZW06IiArIGZpbGVTeXN0ZW0ubmFtZSk7Ci0gICAgcmVtb3ZlQWxsSW5EaXJlY3Rvcnko
ZmlsZVN5c3RlbS5yb290LCBwcmVwYXJlRm9yVGVzdCwgZXJyb3JDYWxsYmFjayk7Ci19Ci0KLWlm
ICh3aW5kb3cud2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0pIHsKLSAgICB3ZWJraXRSZXF1ZXN0Rmls
ZVN5c3RlbSh3aW5kb3cuVEVNUE9SQVJZLCAxMDAsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxs
YmFjayk7Ci0gICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotfSBlbHNlCi0gICAgZGVi
dWcoIlRoaXMgdGVzdCByZXF1aXJlcyBGaWxlU3lzdGVtIEFQSSBzdXBwb3J0LiIpOwpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvYXN5bmMtb3BlcmF0aW9ucy1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtl
cnMvYXN5bmMtb3BlcmF0aW9ucy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE1NjY5MSkKKysrIExh
eW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2FzeW5jLW9wZXJhdGlvbnMtZXhwZWN0
ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDE3ICswLDAgQEAKLVtXb3JrZXJdIFRlc3QgbWFr
aW5nIG11bHRpcGxlIGFzeW5jIEZpbGVTeXN0ZW0gb3BlcmF0aW9ucy4KLQotT24gc3VjY2Vzcywg
eW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRF
U1QgQ09NUExFVEUiLgotCi0KLVN0YXJ0aW5nIHdvcmtlcjogLi4vcmVzb3VyY2VzL2FzeW5jLW9w
ZXJhdGlvbnMuanMKLVtXb3JrZXJdIHJlcXVlc3RlZCBGaWxlU3lzdGVtLgotW1dvcmtlcl0gR290
IEZpbGVTeXN0ZW06ZmlsZV9fMDpUZW1wb3JhcnkKLVtXb3JrZXJdIFN0YXJ0aW5nIGFzeW5jIHRl
c3Qgc3RhZ2UgMS4KLVtXb3JrZXJdIFN0YXJ0aW5nIGFzeW5jIHRlc3Qgc3RhZ2UgMi4KLVtXb3Jr
ZXJdIFZlcmlmeWluZyB0aGUgRmlsZVN5c3RlbSBzdGF0dXMuCi1QQVNTIFtXb3JrZXJdICIvYSwv
YiwvYywvZDIsL2UsL2YiIGlzICIvYSwvYiwvYywvZDIsL2UsL2YiCi1QQVNTIFtXb3JrZXJdIGRp
cnNDb3VudCBpcyAzCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09N
UExFVEUKLQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvYXN5bmMt
b3BlcmF0aW9ucy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3Rl
bS93b3JrZXJzL2FzeW5jLW9wZXJhdGlvbnMuaHRtbAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvYXN5bmMtb3BlcmF0aW9ucy5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDEyICswLDAgQEAKLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4K
LTxib2R5PgotPHNjcmlwdD4KLXdvcmtlciA9IHN0YXJ0V29ya2VyKCcuLi9yZXNvdXJjZXMvYXN5
bmMtb3BlcmF0aW9ucy5qcycpOwotPC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+Ci0KSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2RldGFjaGVkLWZyYW1lLWNy
YXNoLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0
ZW0vd29ya2Vycy9kZXRhY2hlZC1mcmFtZS1jcmFzaC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE1
NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2RldGFjaGVkLWZy
YW1lLWNyYXNoLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSArMCwwIEBACi1QQVNT
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9kZXRhY2hlZC1mcmFt
ZS1jcmFzaC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93
b3JrZXJzL2RldGFjaGVkLWZyYW1lLWNyYXNoLmh0bWwJKHJldmlzaW9uIDE1NjY5MSkKKysrIExh
eW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2RldGFjaGVkLWZyYW1lLWNyYXNoLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMzAgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08IS0t
IGh0dHA6Ly9jcmJ1Zy5jb20vMTQ3NTkyCi0gICAgIGh0dHA6Ly93ZWJraXQub3JnL2IvOTYzNTQg
LS0+Ci08c2NyaXB0PgotaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgdGVzdFJ1bm5lci5k
dW1wQXNUZXh0KCk7Ci0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci19Ci0KLWRvY3Vt
ZW50LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLCBydW5UZXN0KTsKLQotZnVu
Y3Rpb24gcnVuVGVzdCgpCi17Ci0gICAgYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIGNsZWFy
KTsKLX0KLQotZnVuY3Rpb24gY2xlYXIoZXZlbnQpCi17Ci0gICAgZG9jdW1lbnQuYm9keS5pbm5l
clRleHQgPSAiIjsKLSAgICBzZXRUaW1lb3V0KGRvbmUsIDApOwotfQotCi1mdW5jdGlvbiBkb25l
KCkKLXsKLSAgICBkb2N1bWVudC5ib2R5LmlubmVyVGV4dCA9ICJQQVNTIjsKLSAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotfQotPC9z
Y3JpcHQ+Ci08aWZyYW1lIGlkPSJmcmFtZSIgc3JjPSJyZXNvdXJjZXMvZGV0YWNoZWQtZnJhbWUt
Y3Jhc2gtZnJhbWUuaHRtbCIvPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dv
cmtlcnMvZmlsZS1lbnRyeS10by11cmktc3luYy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS1lbnRyeS10by11cmktc3lu
Yy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmls
ZXN5c3RlbS93b3JrZXJzL2ZpbGUtZW50cnktdG8tdXJpLXN5bmMtZXhwZWN0ZWQudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDExICswLDAgQEAKLVtXb3JrZXJdIE9idGFpbmluZyBVUkwgZnJvbSBG
aWxlRW50cnkuCi0KLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQotCi1TdGFydGluZyB3b3Jr
ZXI6IC4uL3Jlc291cmNlcy9maWxlLWVudHJ5LXRvLXVyaS1zeW5jLmpzCi1QQVNTIFtXb3JrZXJd
IHRlc3RGaWxlRW50cnkudG9VUkwoKSBpcyAnZmlsZXN5c3RlbTpmaWxlOi8vL3RlbXBvcmFyeS90
ZXN0RmlsZUVudHJ5LnR4dCcKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVT
VCBDT01QTEVURQotCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9m
aWxlLWVudHJ5LXRvLXVyaS1zeW5jLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS1lbnRyeS10by11cmktc3luYy5odG1sCShyZXZpc2lv
biAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLWVu
dHJ5LXRvLXVyaS1zeW5jLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTEgKzAsMCBAQAotPGh0
bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0Pgotd29ya2VyID0gc3RhcnRX
b3JrZXIoJy4uL3Jlc291cmNlcy9maWxlLWVudHJ5LXRvLXVyaS1zeW5jLmpzJyk7Ci08L3Njcmlw
dD4KLTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3Rl
bS93b3JrZXJzL2ZpbGUtZnJvbS1maWxlLWVudHJ5LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLWZyb20tZmlsZS1lbnRy
eS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmls
ZXN5c3RlbS93b3JrZXJzL2ZpbGUtZnJvbS1maWxlLWVudHJ5LWV4cGVjdGVkLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtMSwxMyArMCwwIEBACi1bV29ya2VyXSBPYnRhaW5pbmcgRmlsZSBmcm9tIEZp
bGVFbnRyeS4KLQotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgotCi0KLVN0YXJ0aW5nIHdvcmtl
cjogLi4vcmVzb3VyY2VzL2ZpbGUtZnJvbS1maWxlLWVudHJ5LmpzCi1QQVNTIFtXb3JrZXJdIHRl
c3RGaWxlLm5hbWUgaXMgdGVzdEZpbGVFbnRyeS5uYW1lCi1QQVNTIFtXb3JrZXJdIHRlc3RGaWxl
LnR5cGUgaXMgJ3RleHQvcGxhaW4nCi1QQVNTIFtXb3JrZXJdIHRlc3RGaWxlLnNpemUgaXMgMAot
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtZnJvbS1maWxlLWVudHJ5
LXN5bmMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5
c3RlbS93b3JrZXJzL2ZpbGUtZnJvbS1maWxlLWVudHJ5LXN5bmMtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxl
LWZyb20tZmlsZS1lbnRyeS1zeW5jLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwx
MyArMCwwIEBACi1bV29ya2VyXSBPYnRhaW5pbmcgRmlsZSBmcm9tIEZpbGVFbnRyeVN5bmMuCi0K
LU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQotCi1TdGFydGluZyB3b3JrZXI6IC4uL3Jlc291
cmNlcy9maWxlLWZyb20tZmlsZS1lbnRyeS1zeW5jLmpzCi1QQVNTIFtXb3JrZXJdIHRlc3RGaWxl
Lm5hbWUgaXMgdGVzdEZpbGVFbnRyeS5uYW1lCi1QQVNTIFtXb3JrZXJdIHRlc3RGaWxlLnR5cGUg
aXMgJ3RleHQvcGxhaW4nCi1QQVNTIFtXb3JrZXJdIHRlc3RGaWxlLnNpemUgaXMgMAotUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtZnJvbS1maWxlLWVudHJ5LXN5bmMu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9m
aWxlLWZyb20tZmlsZS1lbnRyeS1zeW5jLmh0bWwJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91
dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtZnJvbS1maWxlLWVudHJ5LXN5bmMu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxMSArMCwwIEBACi08aHRtbD4KLTxoZWFkPgotPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08
L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQ+Ci13b3JrZXIgPSBzdGFydFdvcmtlcignLi4vcmVzb3Vy
Y2VzL2ZpbGUtZnJvbS1maWxlLWVudHJ5LXN5bmMuanMnKTsKLTwvc2NyaXB0PgotPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5
PgotPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmls
ZS1mcm9tLWZpbGUtZW50cnkuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zp
bGVzeXN0ZW0vd29ya2Vycy9maWxlLWZyb20tZmlsZS1lbnRyeS5odG1sCShyZXZpc2lvbiAxNTY2
OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLWZyb20tZmls
ZS1lbnRyeS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDExICswLDAgQEAKLTxodG1sPgotPGhl
YWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHNjcmlwdD4KLXdvcmtlciA9IHN0YXJ0V29ya2VyKCcu
Li9yZXNvdXJjZXMvZmlsZS1mcm9tLWZpbGUtZW50cnkuanMnKTsKLTwvc2NyaXB0PgotPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9i
b2R5PgotPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMv
ZmlsZS13cml0ZXItZW1wdHktYmxvYi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS13cml0ZXItZW1wdHktYmxvYi1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3Rl
bS93b3JrZXJzL2ZpbGUtd3JpdGVyLWVtcHR5LWJsb2ItZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC0xLDExICswLDAgQEAKLVtXb3JrZXJdIFRlc3QgdGhhdCBGaWxlV3JpdGVyIHdvcmtz
IHdpdGhvdXQgY3Jhc2ggd2hlbiB0cnlpbmcgdG8gd3JpdGUgYW4gZW1wdHkgYmxvYi4KLQotT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgotCi1TdGFydGluZyB3b3JrZXI6IC4uL3Jlc291cmNlcy9m
aWxlLXdyaXRlci1lbXB0eS1ibG9iLmpzCi1bV29ya2VyXSBzdGFydGluZyB0ZXN0Ci1QQVNTIFtX
b3JrZXJdIFN1Y2Nlc3NmdWxseSB3cm90ZSBibG9iLgotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5
c3RlbS93b3JrZXJzL2ZpbGUtd3JpdGVyLWVtcHR5LWJsb2IuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLXdyaXRlci1lbXB0eS1ibG9i
Lmh0bWwJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93
b3JrZXJzL2ZpbGUtd3JpdGVyLWVtcHR5LWJsb2IuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwx
NSArMCwwIEBACi08IURPQ1RZUEUgSFRNTD4KLTxodG1sPgotPGhlYWQ+Ci08dGl0bGU+RmlsZSBX
cml0ZXIgd2l0aCBlbXB0eSBCbG9iIGluIFdvcmtlcjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0iLi4v
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5
PgotPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgotPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
Ci08c2NyaXB0Pgotd29ya2VyID0gc3RhcnRXb3JrZXIoIi4uL3Jlc291cmNlcy9maWxlLXdyaXRl
ci1lbXB0eS1ibG9iLmpzIik7Ci08L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtd3JpdGVyLWV2ZW50cy1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dv
cmtlcnMvZmlsZS13cml0ZXItZXZlbnRzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTU2NjkxKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS13cml0ZXItZXZlbnRz
LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwxMSArMCwwIEBACi1bV29ya2VyXSBU
ZXN0IHRoYXQgRmlsZVdyaXRlciBwcm9kdWNlcyBwcm9wZXIgcHJvZ3Jlc3MgZXZlbnRzLgotCi1P
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLVN0YXJ0aW5nIHdvcmtlcjogLi4vcmVzb3VyY2Vz
L2ZpbGUtd3JpdGVyLWV2ZW50cy5qcwotW1dvcmtlcl0gc3RhcnRpbmcgdGVzdAotUEFTUyBbV29y
a2VyXSBTYXcgYWxsIHRoZSByaWdodCBldmVudHMuCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lz
dGVtL3dvcmtlcnMvZmlsZS13cml0ZXItZXZlbnRzLXNoYXJlZC13b3JrZXItZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUt
d3JpdGVyLWV2ZW50cy1zaGFyZWQtd29ya2VyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTU2Njkx
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS13cml0ZXItZXZl
bnRzLXNoYXJlZC13b3JrZXItZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDExICsw
LDAgQEAKLVtXb3JrZXJdIFRlc3QgdGhhdCBGaWxlV3JpdGVyIHByb2R1Y2VzIHByb3BlciBwcm9n
cmVzcyBldmVudHMuCi0KLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQotU3RhcnRpbmcgd29y
a2VyOiAuLi9yZXNvdXJjZXMvc2hhcmVkLXdvcmtlci1zdHViLmpzCi1bV29ya2VyXSBzdGFydGlu
ZyB0ZXN0Ci1QQVNTIFtXb3JrZXJdIFNhdyBhbGwgdGhlIHJpZ2h0IGV2ZW50cy4KLVBBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLXdyaXRlci1ldmVudHMtc2hhcmVkLXdv
cmtlci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3Jr
ZXJzL2ZpbGUtd3JpdGVyLWV2ZW50cy1zaGFyZWQtd29ya2VyLmh0bWwJKHJldmlzaW9uIDE1NjY5
MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtd3JpdGVyLWV2
ZW50cy1zaGFyZWQtd29ya2VyLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTkgKzAsMCBAQAot
PCFET0NUWVBFIEhUTUw+Ci08aHRtbD4KLSA8aGVhZD4KLSAgICA8dGl0bGU+RmlsZSBXcml0ZXIg
RXZlbnRzIFNoYXJlZCBXb3JrZXI8L3RpdGxlPgotICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotIDwvaGVhZD4KLSA8Ym9keT4KLSAg
ICA8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Ci0gICAgPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Ci0gICAgPHNjcmlwdD4KLSAgICAgICAgdmFyIHdvcmtlciA9IHN0YXJ0V29ya2VyKCIuLi9y
ZXNvdXJjZXMvc2hhcmVkLXdvcmtlci1zdHViLmpzIiwgdHJ1ZSAvKiBzaGFyZWQgKi8pOwotICAg
ICAgICB3b3JrZXIucG9ydC5wb3N0TWVzc2FnZSgiSU1QT1JUOmZpbGUtd3JpdGVyLWV2ZW50cy5q
cyIpOwotICAgIDwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLSA8L2JvZHk+Ci08L2h0bWw+Ci0KLQotCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLXdyaXRlci1ldmVudHMu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9m
aWxlLXdyaXRlci1ldmVudHMuaHRtbAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS13cml0ZXItZXZlbnRzLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMTggKzAsMCBAQAotPCFET0NUWVBFIEhUTUw+Ci08aHRtbD4KLSA8aGVhZD4K
LSAgICA8dGl0bGU+RmlsZSBXcml0ZXIgRXZlbnRzIFdvcmtlcjwvdGl0bGU+Ci0gICAgPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci0gPC9o
ZWFkPgotIDxib2R5PgotICAgIDxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KLSAgICA8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KLSAgICA8c2NyaXB0PgotICAgICAgICB3b3JrZXIgPSBzdGFy
dFdvcmtlcigiLi4vcmVzb3VyY2VzL2ZpbGUtd3JpdGVyLWV2ZW50cy5qcyIpOwotICAgIDwvc2Ny
aXB0PgotICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KLSA8L2JvZHk+Ci08L2h0bWw+Ci0KLQotCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLXdyaXRlci1nYy1ibG9iLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLXdy
aXRlci1nYy1ibG9iLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS13cml0ZXItZ2MtYmxvYi1leHBlY3RlZC50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMTEgKzAsMCBAQAotW1dvcmtlcl0gVGVzdCB0aGF0IGEg
YmxvYiB3b24ndCBnZXQgZ2FyYmFnZS1jb2xsZWN0ZWQgd2hpbGUgYmVpbmcgd3JpdHRlbiBvdXQg
YnkgYSBGaWxlV3JpdGVyLgotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLVN0YXJ0aW5n
IHdvcmtlcjogLi4vcmVzb3VyY2VzL2ZpbGUtd3JpdGVyLWdjLWJsb2IuanMKLVtXb3JrZXJdIHN0
YXJ0aW5nIHRlc3QKLVBBU1MgW1dvcmtlcl0gU3VjY2Vzc2Z1bGx5IHdyb3RlIGJsb2IuCi1QQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS13cml0ZXItZ2MtYmxvYi5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUt
d3JpdGVyLWdjLWJsb2IuaHRtbAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS13cml0ZXItZ2MtYmxvYi5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDE4ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MPgotPGh0bWw+Ci0gPGhlYWQ+Ci0g
ICAgPHRpdGxlPkZpbGUgV3JpdGVyIEdDIEJsb2IgV29ya2VyPC90aXRsZT4KLSAgICA8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLSA8L2hl
YWQ+Ci0gPGJvZHk+Ci0gICAgPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgotICAgIDxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgotICAgIDxzY3JpcHQ+Ci0gICAgICAgIHdvcmtlciA9IHN0YXJ0
V29ya2VyKCIuLi9yZXNvdXJjZXMvZmlsZS13cml0ZXItZ2MtYmxvYi5qcyIpOwotICAgIDwvc2Ny
aXB0PgotICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KLSA8L2JvZHk+Ci08L2h0bWw+Ci0KLQotCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLXdyaXRlci1zeW5jLXRydW5jYXRlLWV4dGVuZC1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dv
cmtlcnMvZmlsZS13cml0ZXItc3luYy10cnVuY2F0ZS1leHRlbmQtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxl
LXdyaXRlci1zeW5jLXRydW5jYXRlLWV4dGVuZC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTEsMTAgKzAsMCBAQAotW1dvcmtlcl0gVGVzdCB1c2luZyBGaWxlV3JpdGVyU3luYy50cnVu
Y2F0ZSB0byBleHRlbmQgYSBmaWxlLgotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLVN0
YXJ0aW5nIHdvcmtlcjogLi4vcmVzb3VyY2VzL2ZpbGUtd3JpdGVyLXN5bmMtdHJ1bmNhdGUtZXh0
ZW5kLmpzCi1QQVNTIFtXb3JrZXJdIFRydW5jYXRlIGV4dGVuc2lvbiB2ZXJpZmllZC4KLVBBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLXdyaXRlci1zeW5jLXRydW5jYXRl
LWV4dGVuZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93
b3JrZXJzL2ZpbGUtd3JpdGVyLXN5bmMtdHJ1bmNhdGUtZXh0ZW5kLmh0bWwJKHJldmlzaW9uIDE1
NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtd3JpdGVy
LXN5bmMtdHJ1bmNhdGUtZXh0ZW5kLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTcgKzAsMCBA
QAotPCFET0NUWVBFIEhUTUw+Ci08aHRtbD4KLSA8aGVhZD4KLSAgICA8dGl0bGU+RmlsZSBXcml0
ZXIgU3luYyBUcnVuY2F0ZS1Uby1FeHRlbmQ8L3RpdGxlPgotICAgIDxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotIDwvaGVhZD4KLSA8Ym9k
eT4KLSAgICA8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Ci0gICAgPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+Ci0gICAgPHNjcmlwdD4KLSAgICAgICAgd29ya2VyID0gc3RhcnRXb3JrZXIoIi4u
L3Jlc291cmNlcy9maWxlLXdyaXRlci1zeW5jLXRydW5jYXRlLWV4dGVuZC5qcyIpOwotICAgIDwv
c2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KLSA8L2JvZHk+Ci08L2h0bWw+Ci0KLQpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS13cml0ZXItc3luYy13cml0ZS1vdmVybGFwcGVk
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0v
d29ya2Vycy9maWxlLXdyaXRlci1zeW5jLXdyaXRlLW92ZXJsYXBwZWQtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9m
aWxlLXdyaXRlci1zeW5jLXdyaXRlLW92ZXJsYXBwZWQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC0xLDEyICswLDAgQEAKLVtXb3JrZXJdIFRlc3QgdXNpbmcgRmlsZVdyaXRlclN5bmMu
c2VlayB0byB3cml0ZSBvdmVybGFwcGluZyBleGlzdGluZyBkYXRhIGluIGEgZmlsZS4KLQotT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgotCi1TdGFydGluZyB3b3JrZXI6IC4uL3Jlc291cmNlcy9m
aWxlLXdyaXRlci1zeW5jLXdyaXRlLW92ZXJsYXBwZWQuanMKLVBBU1MgW1dvcmtlcl0gT3Zlcmxh
cHBlZCB3cml0ZSAxIHZlcmlmaWVkLgotUEFTUyBbV29ya2VyXSBPdmVybGFwcGVkIHdyaXRlIDIg
dmVyaWZpZWQuCi1QQVNTIFtXb3JrZXJdIE92ZXJsYXBwZWQgd3JpdGUgMyB2ZXJpZmllZC4KLVBB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLXdyaXRlci1zeW5jLXdyaXRl
LW92ZXJsYXBwZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0
ZW0vd29ya2Vycy9maWxlLXdyaXRlci1zeW5jLXdyaXRlLW92ZXJsYXBwZWQuaHRtbAkocmV2aXNp
b24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS13
cml0ZXItc3luYy13cml0ZS1vdmVybGFwcGVkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTcg
KzAsMCBAQAotPCFET0NUWVBFIEhUTUw+Ci08aHRtbD4KLSA8aGVhZD4KLSAgICA8dGl0bGU+Rmls
ZSBXcml0ZXIgU3luYyBUcnVuY2F0ZS1Uby1FeHRlbmQ8L3RpdGxlPgotICAgIDxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotIDwvaGVhZD4K
LSA8Ym9keT4KLSAgICA8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Ci0gICAgPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Ci0gICAgPHNjcmlwdD4KLSAgICAgICAgd29ya2VyID0gc3RhcnRXb3Jr
ZXIoIi4uL3Jlc291cmNlcy9maWxlLXdyaXRlci1zeW5jLXdyaXRlLW92ZXJsYXBwZWQuanMiKTsK
LSAgICA8L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci0gPC9ib2R5PgotPC9odG1sPgotCi0KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtd3JpdGVyLXRydW5jYXRlLWV4dGVu
ZC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVt
L3dvcmtlcnMvZmlsZS13cml0ZXItdHJ1bmNhdGUtZXh0ZW5kLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS13
cml0ZXItdHJ1bmNhdGUtZXh0ZW5kLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwx
MSArMCwwIEBACi1bV29ya2VyXSBUZXN0IG9mIGV4dGVuZGluZyBhIGZpbGUgdXNpbmcgdHJ1bmNh
dGUoKS4KLQotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgotCi1TdGFydGluZyB3b3JrZXI6IC4u
L3Jlc291cmNlcy9maWxlLXdyaXRlci10cnVuY2F0ZS1leHRlbmQuanMKLVtXb3JrZXJdIHN0YXJ0
aW5nIHRlc3QKLVBBU1MgW1dvcmtlcl0gVHJ1bmNhdGUgZXh0ZW5zaW9uIHZlcmlmaWVkLgotUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtd3JpdGVyLXRydW5jYXRlLWV4
dGVuZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3Jr
ZXJzL2ZpbGUtd3JpdGVyLXRydW5jYXRlLWV4dGVuZC5odG1sCShyZXZpc2lvbiAxNTY2OTEpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLXdyaXRlci10cnVuY2F0
ZS1leHRlbmQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxNyArMCwwIEBACi08IURPQ1RZUEUg
SFRNTD4KLTxodG1sPgotIDxoZWFkPgotICAgIDx0aXRsZT5GaWxlIFdyaXRlciBUcnVuY2F0ZS1U
by1FeHRlbmQgV29ya2VyPC90aXRsZT4KLSAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLSA8L2hlYWQ+Ci0gPGJvZHk+Ci0gICAgPGRp
diBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgotICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgot
ICAgIDxzY3JpcHQ+Ci0gICAgICAgIHdvcmtlciA9IHN0YXJ0V29ya2VyKCIuLi9yZXNvdXJjZXMv
ZmlsZS13cml0ZXItdHJ1bmNhdGUtZXh0ZW5kLmpzIik7Ci0gICAgPC9zY3JpcHQ+Ci0gICAgPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgot
IDwvYm9keT4KLTwvaHRtbD4KLQotCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0v
d29ya2Vycy9maWxlLXdyaXRlci13cml0ZS1vdmVybGFwcGVkLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLXdyaXRlci13
cml0ZS1vdmVybGFwcGVkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS13cml0ZXItd3JpdGUtb3ZlcmxhcHBl
ZC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMTQgKzAsMCBAQAotW1dvcmtlcl0g
VGVzdCB1c2luZyBGaWxlV3JpdGVyLnNlZWsgdG8gd3JpdGUgb3ZlcmxhcHBpbmcgZXhpc3Rpbmcg
ZGF0YSBpbiBhIGZpbGUuCi0KLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQotU3RhcnRpbmcg
d29ya2VyOiAuLi9yZXNvdXJjZXMvZmlsZS13cml0ZXItd3JpdGUtb3ZlcmxhcHBlZC5qcwotW1dv
cmtlcl0gc3RhcnRpbmcgdGVzdAotUEFTUyBbV29ya2VyXSBOZWdhdGl2ZSBzZWVrIHZhbGlkYXRl
ZC4KLVBBU1MgW1dvcmtlcl0gUG9zaXRpdmUgc2VlayB2YWxpZGF0ZWQuCi1QQVNTIFtXb3JrZXJd
IE5vbmV4dGVuZGluZyB3cml0ZSB2YWxpZGF0ZWQuCi1QQVNTIFtXb3JrZXJdIEFsbCB3cml0ZXMg
dmVyaWZpZWQuCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExF
VEUKLQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS13cml0
ZXItd3JpdGUtb3ZlcmxhcHBlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
ZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtd3JpdGVyLXdyaXRlLW92ZXJsYXBwZWQuaHRtbAkocmV2
aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmls
ZS13cml0ZXItd3JpdGUtb3ZlcmxhcHBlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE4ICsw
LDAgQEAKLTwhRE9DVFlQRSBIVE1MPgotPGh0bWw+Ci0gPGhlYWQ+Ci0gICAgPHRpdGxlPkZpbGUg
V3JpdGVyIFdyaXRlIE92ZXJsYXBwZWQgV29ya2VyPC90aXRsZT4KLSAgICA8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLSA8L2hlYWQ+Ci0g
PGJvZHk+Ci0gICAgPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgotICAgIDxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgotICAgIDxzY3JpcHQ+Ci0gICAgICAgIHdvcmtlciA9IHN0YXJ0V29ya2Vy
KCIuLi9yZXNvdXJjZXMvZmlsZS13cml0ZXItd3JpdGUtb3ZlcmxhcHBlZC5qcyIpOwotICAgIDwv
c2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KLSA8L2JvZHk+Ci08L2h0bWw+Ci0KLQotCkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9yZXNvdXJjZXMvZGV0YWNoZWQtZnJhbWUtY3Jhc2gt
ZnJhbWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29y
a2Vycy9yZXNvdXJjZXMvZGV0YWNoZWQtZnJhbWUtY3Jhc2gtZnJhbWUuaHRtbAkocmV2aXNpb24g
MTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvcmVzb3VyY2Vz
L2RldGFjaGVkLWZyYW1lLWNyYXNoLWZyYW1lLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTAg
KzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08c2NyaXB0PgotdmFyIHdvcmtlciA9IG5ldyBXb3Jr
ZXIoImRldGFjaGVkLWZyYW1lLWNyYXNoLXdvcmtlci5qcyIpOwotd29ya2VyLmFkZEV2ZW50TGlz
dGVuZXIoIm1lc3NhZ2UiLCByZWxheU1lc3NhZ2UpOwotCi1mdW5jdGlvbiByZWxheU1lc3NhZ2Uo
ZXZlbnQpCi17Ci0gICAgcGFyZW50LnBvc3RNZXNzYWdlKGV2ZW50LmRhdGEsIGxvY2F0aW9uLm9y
aWdpbik7Ci19Ci08L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93
b3JrZXJzL3Jlc291cmNlcy9kZXRhY2hlZC1mcmFtZS1jcmFzaC13b3JrZXIuanMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvcmVzb3VyY2VzL2RldGFj
aGVkLWZyYW1lLWNyYXNoLXdvcmtlci5qcwkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvcmVzb3VyY2VzL2RldGFjaGVkLWZyYW1lLWNyYXNo
LXdvcmtlci5qcwkod29ya2luZyBjb3B5KQpAQCAtMSw3ICswLDAgQEAKLXBvc3RNZXNzYWdlKCJS
ZWFkeSIpOwotcnVuKCk7Ci0KLWZ1bmN0aW9uIHJ1bigpCi17Ci0gICAgd2Via2l0UmVxdWVzdEZp
bGVTeXN0ZW0oVEVNUE9SQVJZLCAxLCBydW4pOwotfQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9m
aWxlc3lzdGVtL3dvcmtlcnMvc2ltcGxlLXBlcnNpc3RlbnQtZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL3NpbXBsZS1wZXJzaXN0
ZW50LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9m
aWxlc3lzdGVtL3dvcmtlcnMvc2ltcGxlLXBlcnNpc3RlbnQtZXhwZWN0ZWQudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC0xLDEzICswLDAgQEAKLVtXb3JrZXJdIHJlcXVlc3RGaWxlU3lzdGVtIFBFUlNJ
U1RFTlQgdGVzdC4KLQotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgotCi0KLVN0YXJ0aW5nIHdv
cmtlcjogLi4vcmVzb3VyY2VzL3NpbXBsZS1wZXJzaXN0ZW50LmpzCi1bV29ya2VyXSBTdWNjZXNz
ZnVsbHkgb2J0YWluZWQgUEVSU0lTVEVOVCBGaWxlU3lzdGVtOmZpbGVfXzA6UGVyc2lzdGVudAot
UEFTUyBbV29ya2VyXSBmaWxlU3lzdGVtLm5hbWUubGVuZ3RoID4gMCBpcyB0cnVlCi1QQVNTIFtX
b3JrZXJdIGZpbGVTeXN0ZW0ucm9vdC5mdWxsUGF0aCBpcyAiLyIKLVBBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2ZpbGVzeXN0ZW0vd29ya2Vycy9zaW1wbGUtcGVyc2lzdGVudC1zeW5jLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zaW1wbGUt
cGVyc2lzdGVudC1zeW5jLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc2ltcGxlLXBlcnNpc3RlbnQtc3luYy1leHBl
Y3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMTMgKzAsMCBAQAotW1dvcmtlcl0gd2Via2l0
UmVxdWVzdEZpbGVTeXN0ZW1TeW5jIFBFUlNJU1RFTlQgdGVzdC4KLQotT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgotCi0KLVN0YXJ0aW5nIHdvcmtlcjogLi4vcmVzb3VyY2VzL3NpbXBsZS1wZXJz
aXN0ZW50LXN5bmMuanMKLVtXb3JrZXJdIFN1Y2Nlc3NmdWxseSBvYnRhaW5lZCBQRVJTSVNURU5U
IEZpbGVTeXN0ZW06ZmlsZV9fMDpQZXJzaXN0ZW50Ci1QQVNTIFtXb3JrZXJdIGZpbGVTeXN0ZW0u
bmFtZS5sZW5ndGggPiAwIGlzIHRydWUKLVBBU1MgW1dvcmtlcl0gZmlsZVN5c3RlbS5yb290LmZ1
bGxQYXRoIGlzICIvIgotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENP
TVBMRVRFCi0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL3NpbXBs
ZS1wZXJzaXN0ZW50LXN5bmMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zp
bGVzeXN0ZW0vd29ya2Vycy9zaW1wbGUtcGVyc2lzdGVudC1zeW5jLmh0bWwJKHJldmlzaW9uIDE1
NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL3NpbXBsZS1wZXJz
aXN0ZW50LXN5bmMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxMiArMCwwIEBACi08aHRtbD4K
LTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQ+Ci13b3JrZXIgPSBzdGFydFdvcmtl
cignLi4vcmVzb3VyY2VzL3NpbXBsZS1wZXJzaXN0ZW50LXN5bmMuanMnKTsKLTwvc2NyaXB0Pgot
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgotPC9ib2R5PgotPC9odG1sPgotCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0v
d29ya2Vycy9zaW1wbGUtcGVyc2lzdGVudC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL3NpbXBsZS1wZXJzaXN0ZW50Lmh0bWwJKHJldmlzaW9u
IDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL3NpbXBsZS1w
ZXJzaXN0ZW50Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTEgKzAsMCBAQAotPGh0bWw+Ci08
aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0Pgotd29ya2VyID0gc3RhcnRXb3JrZXIo
Jy4uL3Jlc291cmNlcy9zaW1wbGUtcGVyc2lzdGVudC5qcycpOwotPC9zY3JpcHQ+Ci08c2NyaXB0
IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2Jv
ZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9z
aW1wbGUtdGVtcG9yYXJ5LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zaW1wbGUtdGVtcG9yYXJ5LWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc2lt
cGxlLXRlbXBvcmFyeS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMTMgKzAsMCBA
QAotW1dvcmtlcl0gcmVxdWVzdEZpbGVTeXN0ZW0gVEVNUE9SQVJZIHRlc3QuCi0KLU9uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KLQotCi1TdGFydGluZyB3b3JrZXI6IC4uL3Jlc291cmNlcy9zaW1w
bGUtdGVtcG9yYXJ5LmpzCi1bV29ya2VyXSBTdWNjZXNzZnVsbHkgb2J0YWluZWQgVEVNUE9SQVJZ
IEZpbGVTeXN0ZW06ZmlsZV9fMDpUZW1wb3JhcnkKLVBBU1MgW1dvcmtlcl0gZmlsZVN5c3RlbS5u
YW1lLmxlbmd0aCA+IDAgaXMgdHJ1ZQotUEFTUyBbV29ya2VyXSBmaWxlU3lzdGVtLnJvb3QuZnVs
bFBhdGggaXMgIi8iCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09N
UExFVEUKLQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc2ltcGxl
LXRlbXBvcmFyeS1zeW5jLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zaW1wbGUtdGVtcG9yYXJ5LXN5bmMtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vy
cy9zaW1wbGUtdGVtcG9yYXJ5LXN5bmMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0x
LDEzICswLDAgQEAKLVtXb3JrZXJdIHJlcXVlc3RGaWxlU3lzdGVtU3luYyBURU1QT1JBUlkgdGVz
dC4KLQotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgotCi0KLVN0YXJ0aW5nIHdvcmtlcjogLi4v
cmVzb3VyY2VzL3NpbXBsZS10ZW1wb3Jhcnktc3luYy5qcwotW1dvcmtlcl0gU3VjY2Vzc2Z1bGx5
IG9idGFpbmVkIFRFTVBPUkFSWSBGaWxlU3lzdGVtOmZpbGVfXzA6VGVtcG9yYXJ5Ci1QQVNTIFtX
b3JrZXJdIGZpbGVTeXN0ZW0ubmFtZS5sZW5ndGggPiAwIGlzIHRydWUKLVBBU1MgW1dvcmtlcl0g
ZmlsZVN5c3RlbS5yb290LmZ1bGxQYXRoIGlzICIvIgotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5
c3RlbS93b3JrZXJzL3NpbXBsZS10ZW1wb3Jhcnktc3luYy5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL3NpbXBsZS10ZW1wb3Jhcnktc3luYy5o
dG1sCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29y
a2Vycy9zaW1wbGUtdGVtcG9yYXJ5LXN5bmMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxMiAr
MCwwIEBACi08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQ+Ci13b3Jr
ZXIgPSBzdGFydFdvcmtlcignLi4vcmVzb3VyY2VzL3NpbXBsZS10ZW1wb3Jhcnktc3luYy5qcycp
OwotPC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+Ci0KSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZmlsZXN5c3RlbS93b3JrZXJzL3NpbXBsZS10ZW1wb3JhcnkuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zaW1wbGUtdGVtcG9yYXJ5Lmh0
bWwJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3Jr
ZXJzL3NpbXBsZS10ZW1wb3JhcnkuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxMSArMCwwIEBA
Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQ+Ci13b3JrZXIgPSBz
dGFydFdvcmtlcignLi4vcmVzb3VyY2VzL3NpbXBsZS10ZW1wb3JhcnkuanMnKTsKLTwvc2NyaXB0
PgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgotPC9ib2R5PgotPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVt
L3dvcmtlcnMvc3luYy1vcGVyYXRpb25zLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zeW5jLW9wZXJhdGlvbnMtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29y
a2Vycy9zeW5jLW9wZXJhdGlvbnMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDEy
ICswLDAgQEAKLVtXb3JrZXJdIFRlc3QgbWFraW5nIG11bHRpcGxlIHN5bmNocm9ub3VzIEZpbGVT
eXN0ZW0gb3BlcmF0aW9ucy4KLQotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgotCi0KLVN0YXJ0
aW5nIHdvcmtlcjogLi4vcmVzb3VyY2VzL3N5bmMtb3BlcmF0aW9ucy5qcwotUEFTUyBbV29ya2Vy
XSAiL2EsL2IsL2MsL2QyLC9lLC9mIiBpcyAiL2EsL2IsL2MsL2QyLC9lLC9mIgotUEFTUyBbV29y
a2VyXSBkaXJzQ291bnQgaXMgMwotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1U
RVNUIENPTVBMRVRFCi0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJz
L3N5bmMtb3BlcmF0aW9ucy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmls
ZXN5c3RlbS93b3JrZXJzL3N5bmMtb3BlcmF0aW9ucy5odG1sCShyZXZpc2lvbiAxNTY2OTEpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zeW5jLW9wZXJhdGlvbnMuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMSwxMiArMCwwIEBACi08aHRtbD4KLTxoZWFkPgotPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08L2hl
YWQ+Ci08Ym9keT4KLTxzY3JpcHQ+Ci13b3JrZXIgPSBzdGFydFdvcmtlcignLi4vcmVzb3VyY2Vz
L3N5bmMtb3BlcmF0aW9ucy5qcycpOwotPC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+Ci0K
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL3Jlc291cmNlcy9kZXRh
Y2hlZC1mcmFtZS1jcmFzaC1mcmFtZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZmlsZXN5c3RlbS93b3JrZXJzL3Jlc291cmNlcy9kZXRhY2hlZC1mcmFtZS1jcmFzaC1mcmFt
ZS5odG1sCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0v
d29ya2Vycy9yZXNvdXJjZXMvZGV0YWNoZWQtZnJhbWUtY3Jhc2gtZnJhbWUuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMSwxMCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxzY3JpcHQ+Ci12YXIg
d29ya2VyID0gbmV3IFdvcmtlcigiZGV0YWNoZWQtZnJhbWUtY3Jhc2gtd29ya2VyLmpzIik7Ci13
b3JrZXIuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIHJlbGF5TWVzc2FnZSk7Ci0KLWZ1bmN0
aW9uIHJlbGF5TWVzc2FnZShldmVudCkKLXsKLSAgICBwYXJlbnQucG9zdE1lc3NhZ2UoZXZlbnQu
ZGF0YSwgbG9jYXRpb24ub3JpZ2luKTsKLX0KLTwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvcmVzb3VyY2VzL2RldGFjaGVkLWZyYW1lLWNyYXNoLXdv
cmtlci5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vy
cy9yZXNvdXJjZXMvZGV0YWNoZWQtZnJhbWUtY3Jhc2gtd29ya2VyLmpzCShyZXZpc2lvbiAxNTY2
OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9yZXNvdXJjZXMvZGV0
YWNoZWQtZnJhbWUtY3Jhc2gtd29ya2VyLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzAsMCBA
QAotcG9zdE1lc3NhZ2UoIlJlYWR5Iik7Ci1ydW4oKTsKLQotZnVuY3Rpb24gcnVuKCkKLXsKLSAg
ICB3ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbShURU1QT1JBUlksIDEsIHJ1bik7Ci19CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpbGUvaW5wdXQtZmlsZS1lbnRyaWVzLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpbGUvaW5wdXQtZmlsZS1l
bnRyaWVzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9mb3Jtcy9maWxlL2lucHV0LWZpbGUtZW50cmllcy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTEsODMgKzAsMCBAQAotCi1UZXN0cyB0aGUgd2Via2l0RW50cmllcyBhdHRyaWJ1dGUg
b2YgPGlucHV0IHR5cGU9ImZpbGUiPgotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLQot
KiBUZXN0aW5nIHRlc3RDYXNlc1swXQotUEFTUyBkcm9wcGVkRW50cmllcy5sZW5ndGggaXMgMQot
VmVyaWZ5aW5nIGVudHJ5ICgwLzEpOi9VVEY4LnR4dAotUEFTUyB2ZXJpZnlpbmdFbnRyeS5mdWxs
UGF0aCBpcyAiL1VURjgudHh0IgotUEFTUyB0eXBlb2YgdmVyaWZ5aW5nRW50cnkuaXNEaXJlY3Rv
cnkgaXMgJ2Jvb2xlYW4nCi1QQVNTIHZlcmlmeWluZ0VudHJ5LmlzRGlyZWN0b3J5IGlzIGZhbHNl
Ci1QQVNTIHJldHVybmVkTWV0YWRhdGEuc2l6ZSBpcyA1Ci0qIFRlc3RpbmcgdGVzdENhc2VzWzFd
Ci1QQVNTIGRyb3BwZWRFbnRyaWVzLmxlbmd0aCBpcyAxCi1WZXJpZnlpbmcgZW50cnkgKDAvMSk6
L2RpcjEKLVBBU1MgdmVyaWZ5aW5nRW50cnkuZnVsbFBhdGggaXMgIi9kaXIxIgotUEFTUyB0eXBl
b2YgdmVyaWZ5aW5nRW50cnkuaXNEaXJlY3RvcnkgaXMgJ2Jvb2xlYW4nCi1QQVNTIHZlcmlmeWlu
Z0VudHJ5LmlzRGlyZWN0b3J5IGlzIHRydWUKLVBBU1MgcmV0dXJuZWRFbnRyaWVzLmxlbmd0aCBp
cyAyCi0vZGlyMS9VVEY4LTIudHh0Ci0vZGlyMS9VVEY4LnR4dAotKiBUZXN0aW5nIHRlc3RDYXNl
c1syXQotUEFTUyBkcm9wcGVkRW50cmllcy5sZW5ndGggaXMgMwotVmVyaWZ5aW5nIGVudHJ5ICgw
LzMpOi9hcHBsZS5naWYKLVBBU1MgdmVyaWZ5aW5nRW50cnkuZnVsbFBhdGggaXMgIi9hcHBsZS5n
aWYiCi1QQVNTIHR5cGVvZiB2ZXJpZnlpbmdFbnRyeS5pc0RpcmVjdG9yeSBpcyAnYm9vbGVhbicK
LVBBU1MgdmVyaWZ5aW5nRW50cnkuaXNEaXJlY3RvcnkgaXMgZmFsc2UKLVBBU1MgcmV0dXJuZWRN
ZXRhZGF0YS5zaXplIGlzIDMzNDAKLVZlcmlmeWluZyBlbnRyeSAoMS8zKTovVVRGOC50eHQKLVBB
U1MgdmVyaWZ5aW5nRW50cnkuZnVsbFBhdGggaXMgIi9VVEY4LnR4dCIKLVBBU1MgdHlwZW9mIHZl
cmlmeWluZ0VudHJ5LmlzRGlyZWN0b3J5IGlzICdib29sZWFuJwotUEFTUyB2ZXJpZnlpbmdFbnRy
eS5pc0RpcmVjdG9yeSBpcyBmYWxzZQotUEFTUyByZXR1cm5lZE1ldGFkYXRhLnNpemUgaXMgNQot
VmVyaWZ5aW5nIGVudHJ5ICgyLzMpOi9ncmVlbi5qcGcKLVBBU1MgdmVyaWZ5aW5nRW50cnkuZnVs
bFBhdGggaXMgIi9ncmVlbi5qcGciCi1QQVNTIHR5cGVvZiB2ZXJpZnlpbmdFbnRyeS5pc0RpcmVj
dG9yeSBpcyAnYm9vbGVhbicKLVBBU1MgdmVyaWZ5aW5nRW50cnkuaXNEaXJlY3RvcnkgaXMgZmFs
c2UKLVBBU1MgcmV0dXJuZWRNZXRhZGF0YS5zaXplIGlzIDc2NAotKiBUZXN0aW5nIHRlc3RDYXNl
c1szXQotUEFTUyBkcm9wcGVkRW50cmllcy5sZW5ndGggaXMgMgotVmVyaWZ5aW5nIGVudHJ5ICgw
LzIpOi9kaXIxCi1QQVNTIHZlcmlmeWluZ0VudHJ5LmZ1bGxQYXRoIGlzICIvZGlyMSIKLVBBU1Mg
dHlwZW9mIHZlcmlmeWluZ0VudHJ5LmlzRGlyZWN0b3J5IGlzICdib29sZWFuJwotUEFTUyB2ZXJp
ZnlpbmdFbnRyeS5pc0RpcmVjdG9yeSBpcyB0cnVlCi1QQVNTIHJldHVybmVkRW50cmllcy5sZW5n
dGggaXMgMgotL2RpcjEvVVRGOC0yLnR4dAotL2RpcjEvVVRGOC50eHQKLVZlcmlmeWluZyBlbnRy
eSAoMS8yKTovZGlyMgotUEFTUyB2ZXJpZnlpbmdFbnRyeS5mdWxsUGF0aCBpcyAiL2RpcjIiCi1Q
QVNTIHR5cGVvZiB2ZXJpZnlpbmdFbnRyeS5pc0RpcmVjdG9yeSBpcyAnYm9vbGVhbicKLVBBU1Mg
dmVyaWZ5aW5nRW50cnkuaXNEaXJlY3RvcnkgaXMgdHJ1ZQotUEFTUyByZXR1cm5lZEVudHJpZXMu
bGVuZ3RoIGlzIDEKLS9kaXIyL2dyZWVuLmpwZwotKiBUZXN0aW5nIHRlc3RDYXNlc1s0XQotUEFT
UyBkcm9wcGVkRW50cmllcy5sZW5ndGggaXMgNAotVmVyaWZ5aW5nIGVudHJ5ICgwLzQpOi9kaXIx
Ci1QQVNTIHZlcmlmeWluZ0VudHJ5LmZ1bGxQYXRoIGlzICIvZGlyMSIKLVBBU1MgdHlwZW9mIHZl
cmlmeWluZ0VudHJ5LmlzRGlyZWN0b3J5IGlzICdib29sZWFuJwotUEFTUyB2ZXJpZnlpbmdFbnRy
eS5pc0RpcmVjdG9yeSBpcyB0cnVlCi1QQVNTIHJldHVybmVkRW50cmllcy5sZW5ndGggaXMgMgot
L2RpcjEvVVRGOC0yLnR4dAotL2RpcjEvVVRGOC50eHQKLVZlcmlmeWluZyBlbnRyeSAoMS80KTov
VVRGOC50eHQKLVBBU1MgdmVyaWZ5aW5nRW50cnkuZnVsbFBhdGggaXMgIi9VVEY4LnR4dCIKLVBB
U1MgdHlwZW9mIHZlcmlmeWluZ0VudHJ5LmlzRGlyZWN0b3J5IGlzICdib29sZWFuJwotUEFTUyB2
ZXJpZnlpbmdFbnRyeS5pc0RpcmVjdG9yeSBpcyBmYWxzZQotUEFTUyByZXR1cm5lZE1ldGFkYXRh
LnNpemUgaXMgNQotVmVyaWZ5aW5nIGVudHJ5ICgyLzQpOi90ZXN0LnR4dAotUEFTUyB2ZXJpZnlp
bmdFbnRyeS5mdWxsUGF0aCBpcyAiL3Rlc3QudHh0IgotUEFTUyB0eXBlb2YgdmVyaWZ5aW5nRW50
cnkuaXNEaXJlY3RvcnkgaXMgJ2Jvb2xlYW4nCi1QQVNTIHZlcmlmeWluZ0VudHJ5LmlzRGlyZWN0
b3J5IGlzIGZhbHNlCi1QQVNTIHJldHVybmVkTWV0YWRhdGEuc2l6ZSBpcyA1Ci1WZXJpZnlpbmcg
ZW50cnkgKDMvNCk6L2RpcjIKLVBBU1MgdmVyaWZ5aW5nRW50cnkuZnVsbFBhdGggaXMgIi9kaXIy
IgotUEFTUyB0eXBlb2YgdmVyaWZ5aW5nRW50cnkuaXNEaXJlY3RvcnkgaXMgJ2Jvb2xlYW4nCi1Q
QVNTIHZlcmlmeWluZ0VudHJ5LmlzRGlyZWN0b3J5IGlzIHRydWUKLVBBU1MgcmV0dXJuZWRFbnRy
aWVzLmxlbmd0aCBpcyAxCi0vZGlyMi9ncmVlbi5qcGcKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L2ZpbGUvaW5wdXQtZmlsZS1lbnRyaWVzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9mb3Jtcy9maWxlL2lucHV0LWZpbGUtZW50cmllcy5odG1sCShyZXZpc2lvbiAxNTY2OTEp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpbGUvaW5wdXQtZmlsZS1lbnRyaWVzLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMTM2ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+
Ci08Ym9keT4KLTxpbnB1dCB0eXBlPSJmaWxlIiBuYW1lPSJmaWxlcyIgaWQ9ImZpbGVzIj4KLTxw
cmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotZGVzY3JpcHRpb24oJ1Rlc3RzIHRo
ZSB3ZWJraXRFbnRyaWVzIGF0dHJpYnV0ZSBvZiAmbHQ7aW5wdXQgdHlwZT0iZmlsZSImZ3Q7Jyk7
Ci0KLXZhciB0ZXN0Q2FzZXMgPSBbCi0gIC8vIFNpbmdsZSBmaWxlLgotICBbJ2RpcjEvVVRGOC50
eHQnXSwKLSAgLy8gU2luZ2xlIGRpcmVjdG9yeS4KLSAgWydkaXIxJ10sCi0gIC8vIE11bHRpcGxl
IGZpbGVzLgotICBbJ2FwcGxlLmdpZicsICdkaXIxL1VURjgudHh0JywgJ2RpcjIvZ3JlZW4uanBn
J10sCi0gIC8vIE11bHRpcGxlIGRpcmVjdG9yaWVzLgotICBbJ2RpcjEnLCAnZGlyMiddLAotICAv
LyBNaXhlZCBjYXNlLgotICBbJ2RpcjEnLCAnZGlyMS9VVEY4LnR4dCcsICd0ZXN0LnR4dCcsICdk
aXIyJ10KLV07Ci0KLS8vIFRoZSBleHBlY3RlZCBkaXJlY3Rvcmllcy9maWxlcyBpbmZvIGluIHRo
ZSBhY3R1YWwgcmVzb3VyY2VzIGRpcmVjdG9yeS4KLXZhciBleHBlY3RlZEZpbGVBdHRyaWJ1dGVz
ID0gewotICAnZGlyMSc6IHsgJ2RpcmVjdG9yeSc6IHRydWUsICdmaWxlcyc6WyAnL2RpcjEvVVRG
OC50eHQnLCAnL2RpcjEvVVRGOC0yLnR4dCcgXSB9LAotICAnZGlyMic6IHsgJ2RpcmVjdG9yeSc6
IHRydWUsICdmaWxlcyc6WyAnL2RpcjIvZ3JlZW4uanBnJyBdIH0sCi0gICdhcHBsZS5naWYnOiAg
ICAgICB7ICdkaXJlY3RvcnknOiBmYWxzZSwgJ3NpemUnOiAzMzQwIH0sCi0gICd0ZXN0LnR4dCc6
ICAgICAgICB7ICdkaXJlY3RvcnknOiBmYWxzZSwgJ3NpemUnOiA1IH0sCi0gICdkaXIxL1VURjgu
dHh0JzogICB7ICdkaXJlY3RvcnknOiBmYWxzZSwgJ3NpemUnOiA1IH0sCi0gICdkaXIxL1VURjgt
Mi50eHQnOiB7ICdkaXJlY3RvcnknOiBmYWxzZSwgJ3NpemUnOiA5IH0sCi0gICdkaXIyL2dyZWVu
LmpwZyc6ICB7ICdkaXJlY3RvcnknOiBmYWxzZSwgJ3NpemUnOiA3NjQgfQotfTsKLQotdmFyIGRy
b3BwZWRFbnRyaWVzLCB2ZXJpZnlpbmdFbnRyeSwgcmV0dXJuZWRNZXRhZGF0YSwgcmV0dXJuZWRF
bnRyaWVzOwotCi12YXIganNUZXN0SXNBc3luYyA9IHRydWU7Ci1pZiAod2luZG93LnRlc3RSdW5u
ZXIpIHsKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLSAgICBkb1Rlc3QoMCk7Ci19
Ci0KLWZ1bmN0aW9uIGRvVGVzdChpbmRleCkKLXsKLSAgICBpZiAoaW5kZXggPj0gdGVzdENhc2Vz
Lmxlbmd0aCkgewotICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgZGVidWcoJyogVGVzdGluZyB0ZXN0Q2FzZXNbJyArIGluZGV4ICsgJ10nKTsKLSAgICB2
YXIgcGF0aHMgPSB0ZXN0Q2FzZXNbaW5kZXhdOwotICAgIHZhciBpbnB1dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdmaWxlcycpOwotICAgIGlucHV0Lm9uY2hhbmdlID0gZnVuY3Rpb24oKSB7
IG9uSW5wdXRGaWxlQ2hhbmdlKGluZGV4KTsgfTsKLSAgICBpZiAocGF0aHMubGVuZ3RoID4gMSkK
LSAgICAgICAgaW5wdXQuc2V0QXR0cmlidXRlKCdtdWx0aXBsZScsICdtdWx0aXBsZScpCi0gICAg
ZWxzZQotICAgICAgICBpbnB1dC5yZW1vdmVBdHRyaWJ1dGUoJ211bHRpcGxlJykKLSAgICB2YXIg
dGVzdFBhdGhzID0gcGF0aHMubWFwKGZ1bmN0aW9uKHBhdGgpIHsgcmV0dXJuICcuLi9yZXNvdXJj
ZXMvJyArIHBhdGggfSk7Ci0gICAgZXZlbnRTZW5kZXIuYmVnaW5EcmFnV2l0aEZpbGVzKHRlc3RQ
YXRocyk7Ci0gICAgdmFyIGNlbnRlclggPSBpbnB1dC5vZmZzZXRMZWZ0ICsgaW5wdXQub2Zmc2V0
V2lkdGggLyAyOwotICAgIHZhciBjZW50ZXJZID0gaW5wdXQub2Zmc2V0VG9wICsgaW5wdXQub2Zm
c2V0SGVpZ2h0IC8gMjsKLSAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhjZW50ZXJYLCBjZW50
ZXJZKTsKLSAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7Ci19Ci0KLWZ1bmN0aW9uIG9uSW5wdXRG
aWxlQ2hhbmdlKGluZGV4KQotewotICAgIGRyb3BwZWRFbnRyaWVzID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2ZpbGVzJykud2Via2l0RW50cmllczsKLSAgICBzaG91bGRFdmFsdWF0ZVRvKCdk
cm9wcGVkRW50cmllcy5sZW5ndGgnLCB0ZXN0Q2FzZXNbaW5kZXhdLmxlbmd0aCk7Ci0gICAgdmVy
aWZ5RW50cnkoaW5kZXgsIDApOwotfQotCi1mdW5jdGlvbiB2ZXJpZnlFbnRyeSh0ZXN0SW5kZXgs
IGVudHJ5SW5kZXgpCi17Ci0gICAgaWYgKGVudHJ5SW5kZXggPT0gdGVzdENhc2VzW3Rlc3RJbmRl
eF0ubGVuZ3RoKSB7Ci0gICAgICAgIGRvVGVzdCh0ZXN0SW5kZXggKyAxKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIHZhciBlbnRyeSA9IHZlcmlmeWluZ0VudHJ5ID0gZHJvcHBlZEVu
dHJpZXNbZW50cnlJbmRleF07Ci0gICAgZGVidWcoJ1ZlcmlmeWluZyBlbnRyeSAoJyArIGVudHJ5
SW5kZXggKyAnLycgKyB0ZXN0Q2FzZXNbdGVzdEluZGV4XS5sZW5ndGggKyAnKTonICsgZW50cnku
ZnVsbFBhdGgpOwotCi0gICAgdmFyIHBhdGggPSB0ZXN0Q2FzZXNbdGVzdEluZGV4XVtlbnRyeUlu
ZGV4XTsKLSAgICB2YXIgZXhwZWN0ZWQgPSBleHBlY3RlZEZpbGVBdHRyaWJ1dGVzW3BhdGhdOwot
ICAgIHZhciBleHBlY3RlZFBhdGggPSAnLycgKyBnZXRCYXNlTmFtZShwYXRoKTsKLQotICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygndmVyaWZ5aW5nRW50cnkuZnVsbFBhdGgnLCBleHBlY3RlZFBh
dGgpOwotICAgIHNob3VsZEV2YWx1YXRlVG8oJ3ZlcmlmeWluZ0VudHJ5LmlzRGlyZWN0b3J5Jywg
ZXhwZWN0ZWQuZGlyZWN0b3J5KTsKLQotICAgIHZhciBjYWxsYmFjayA9IGZ1bmN0aW9uKCkgeyB2
ZXJpZnlFbnRyeSh0ZXN0SW5kZXgsIGVudHJ5SW5kZXggKyAxKTsgfTsKLSAgICBpZiAoZW50cnku
aXNGaWxlKSB7Ci0gICAgICAgIGVudHJ5LmdldE1ldGFkYXRhKHZlcmlmeUZpbGUuYmluZCh0aGlz
LCBleHBlY3RlZCwgY2FsbGJhY2spLCBvbkVycm9yKTsKLSAgICB9IGVsc2UgewotICAgICAgICB2
YXIgcmVhZGVyID0gZW50cnkuY3JlYXRlUmVhZGVyKCk7Ci0gICAgICAgIHJlYWRlci5yZWFkRW50
cmllcyh2ZXJpZnlEaXJlY3RvcnkuYmluZCh0aGlzLCBleHBlY3RlZCwgY2FsbGJhY2spLCBvbkVy
cm9yKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHZlcmlmeUZpbGUoZXhwZWN0ZWQsIGNhbGxiYWNr
LCBtZXRhZGF0YSkKLXsKLSAgICByZXR1cm5lZE1ldGFkYXRhID0gbWV0YWRhdGE7Ci0gICAgc2hv
dWxkRXZhbHVhdGVUbygncmV0dXJuZWRNZXRhZGF0YS5zaXplJywgZXhwZWN0ZWQuc2l6ZSk7Ci0g
ICAgY2FsbGJhY2soKTsKLX0KLQotZnVuY3Rpb24gdmVyaWZ5RGlyZWN0b3J5KGV4cGVjdGVkLCBj
YWxsYmFjaywgZW50cmllcykKLXsKLSAgICByZXR1cm5lZEVudHJpZXMgPSBbXTsKLSAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IGVudHJpZXMubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgLy8gU2tpcCB0
aGUgZW50cmllcyB0aGF0IHN0YXJ0IHdpdGggJy4nIChzbyB0aGF0IHdlIGRvIG5vdCBnZXQgJy5z
dm4nIGV0YykKLSAgICAgICAgaWYgKGVudHJpZXNbaV0ubmFtZS5pbmRleE9mKCcuJykgPT0gMCkK
LSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICByZXR1cm5lZEVudHJpZXMucHVzaChlbnRy
aWVzW2ldLmZ1bGxQYXRoKTsKLSAgICB9Ci0gICAgcmV0dXJuZWRFbnRyaWVzLnNvcnQoKTsKLSAg
ICBzaG91bGRFdmFsdWF0ZVRvKCdyZXR1cm5lZEVudHJpZXMubGVuZ3RoJywgZXhwZWN0ZWQuZmls
ZXMubGVuZ3RoKTsKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJldHVybmVkRW50cmllcy5sZW5n
dGg7IGkrKykKLSAgICAgICAgZGVidWcocmV0dXJuZWRFbnRyaWVzW2ldKTsKLSAgICBjYWxsYmFj
aygpOwotfQotCi1mdW5jdGlvbiBnZXRCYXNlTmFtZShwYXRoKQotewotICAgIHZhciBjb21wb25l
bnRzID0gcGF0aC5zcGxpdCgnLycpOwotICAgIHJldHVybiBjb21wb25lbnRzW2NvbXBvbmVudHMu
bGVuZ3RoIC0gMV07Ci19Ci0KLWZ1bmN0aW9uIG9uRXJyb3IoZXJyb3IpCi17Ci0gICAgdGVzdEZh
aWxlZCgnVGVzdCBmaW5pc2hlZCB3aXRoIHVuZXhwZWN0ZWQgZXJyb3I6ICcgKyBlcnJvci5jb2Rl
KTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotPC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4v
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0
bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2ZpbGVzeXN0ZW0vbm8tY2FjaGUtZmls
ZXN5c3RlbS11cmwtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvZmlsZXN5c3RlbS9uby1jYWNoZS1maWxlc3lzdGVtLXVybC1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvZmlsZXN5c3RlbS9uby1j
YWNoZS1maWxlc3lzdGVtLXVybC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEgKzAs
MCBAQAotU1VDQ0VTUwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9maWxlc3lzdGVtL25v
LWNhY2hlLWZpbGVzeXN0ZW0tdXJsLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9maWxlc3lzdGVtL25vLWNhY2hlLWZpbGVzeXN0ZW0tdXJsLmh0bWwJKHJldmlzaW9u
IDE1NjY5MSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvZmlsZXN5c3RlbS9uby1jYWNoZS1m
aWxlc3lzdGVtLXVybC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDU4ICswLDAgQEAKLTwhRE9D
VFlQRSBodG1sPgotPGh0bWw+Ci0gIDxib2R5PgotICAgIDxwIGlkPSJyZXN1bHQiPgotICAgIDwv
cD4KLSAgICA8c2NyaXB0PgotICAgIHZhciBleHBlY3RlZCA9IC0xOwotICAgIGZ1bmN0aW9uIGdl
dEZpbGVXcml0ZXIoY2FsbGJhY2spIHsKLSAgICAgIHdlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKFBF
UlNJU1RFTlQsIDEwMjQsIGZ1bmN0aW9uKGZzKSB7Ci0gICAgICAgIGZzLnJvb3QuZ2V0RmlsZSgi
L2NhY2hpbmctdGVzdC5qcyIsIHtjcmVhdGU6dHJ1ZX0sIGZ1bmN0aW9uKGZpbGUpIHsKLSAgICAg
ICAgICBmaWxlLmNyZWF0ZVdyaXRlcihmdW5jdGlvbih3cml0ZXIpIHsKLSAgICAgICAgICAgIHdy
aXRlci5vbndyaXRlZW5kID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgIHdyaXRlci5vbndy
aXRlZW5kID0gdW5kZWZpbmVkOwotICAgICAgICAgICAgICBjYWxsYmFjayhmaWxlLCB3cml0ZXIp
OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgd3JpdGVyLnRydW5jYXRlKDApOwotICAgICAg
ICAgIH0pOwotICAgICAgICB9KTsKLSAgICAgIH0pOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIHdy
aXRlUmFuZFRvRmlsZSh3cml0ZXIsIGNhbGxiYWNrKSB7Ci0gICAgICB2YXIgcmFuZCA9IE1hdGgu
cm91bmQoTWF0aC5yYW5kb20oKSAqIDEwMDApOwotICAgICAgd3JpdGVyLm9ud3JpdGVlbmQgPSBm
dW5jdGlvbigpIHsKLSAgICAgICAgY2FsbGJhY2socmFuZCk7Ci0gICAgICB9OwotICAgICAgd3Jp
dGVyLndyaXRlKG5ldyBCbG9iKFsnZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmlu
bmVySFRNTCA9IChleHBlY3RlZCA9PSAnICsgcmFuZCArICcpID8gIlNVQ0NFU1MiIDogIkZBSUxV
UkUiOyddLCB7dHlwZTondGV4dC9wbGFpbid9KSk7Ci0gICAgfQotCi0gICAgZ2V0RmlsZVdyaXRl
cihmdW5jdGlvbihmaWxlLCB3cml0ZXIpIHsKLSAgICAgIHdyaXRlUmFuZFRvRmlsZSh3cml0ZXIs
IGZ1bmN0aW9uKHJhbmQpIHsKLSAgICAgICAgdmFyIHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ3NjcmlwdCcpOwotICAgICAgICBzY3JpcHQuc3JjID0gZmlsZS50b1VSTCgpOwotICAg
ICAgICBpZiAod2luZG93LmxvY2F0aW9uLnNlYXJjaCAhPSAnP3JlbG9hZD0xJykgewotICAgICAg
ICAgIHNjcmlwdC5vbmxvYWQgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHdpbmRvdy5sb2Nh
dGlvbi5ocmVmID0gd2luZG93LmxvY2F0aW9uLmhyZWYgKyAnP3JlbG9hZD0xJwotICAgICAgICAg
IH07Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgc2NyaXB0Lm9ubG9hZCA9IGZ1bmN0aW9u
KCkgewotICAgICAgICAgICAgZmlsZS5yZW1vdmUoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90
aWZ5RG9uZSgpOwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgICB9
OwotICAgICAgICB9Ci0gICAgICAgIGV4cGVjdGVkID0gcmFuZDsKLSAgICAgICAgZG9jdW1lbnQu
Ym9keS5hcHBlbmRDaGlsZChzY3JpcHQpOwotICAgICAgfSk7Ci0gICAgfSk7Ci0KLSAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpIHsKLSAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotICAg
ICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci0gICAgfQotICAgIDwvc2NyaXB0PgotICA8
L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2ZpbGVzeXN0ZW0v
cmVzb2x2ZS11cmktZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvZmlsZXN5c3RlbS9yZXNvbHZlLXVyaS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE1NjY5
MSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvZmlsZXN5c3RlbS9yZXNvbHZlLXVyaS1leHBl
Y3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNDIgKzAsMCBAQAotVGVzdHMgdXNpbmcgd2Vi
a2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVVSTCB0byBvYnRhaW4gYW4gRW50cnkgZnJvbSBhIFVS
TAotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLQotKiBSZXNvbHZpbmcgYSBnZW5lcmF0
ZWQgVVJMLgotUEFTUyBleHBlY3RlZFBhdGggaXMgYWN0dWFsUGF0aAotUEFTUyBpc0ZpbGUgaXMg
dHJ1ZQotKiBSZXNvbHZpbmcgdGVzdCBmaWxlIGJ5IGhhbmQKLVBBU1MgZXhwZWN0ZWRQYXRoIGlz
IGFjdHVhbFBhdGgKLVBBU1MgaXNGaWxlIGlzIHRydWUKLSogUmVzb2x2aW5nIGEgVVJMIHdpdGgg
dGhlIHdyb25nIHNlY3VyaXR5IG9yaWdpbiAoZG9tYWluKQotUEFTUyBGaWxlRXJyb3IuU0VDVVJJ
VFlfRVJSIGlzIGVycm9yQ29kZQotKiBSZXNvbHZpbmcgYSBVUkwgd2l0aCB0aGUgd3Jvbmcgc2Vj
dXJpdHkgb3JpZ2luIChwb3J0KQotUEFTUyBGaWxlRXJyb3IuU0VDVVJJVFlfRVJSIGlzIGVycm9y
Q29kZQotKiBSZXNvbHZpbmcgYSBVUkwgd2l0aCB0aGUgd3Jvbmcgc2VjdXJpdHkgb3JpZ2luIChz
Y2hlbWUpCi1QQVNTIEZpbGVFcnJvci5TRUNVUklUWV9FUlIgaXMgZXJyb3JDb2RlCi0qIFJlc29s
dmluZyBhIGNvbXBsZXRlbHkgYm9ndXMgVVJMLgotUEFTUyBGaWxlRXJyb3IuRU5DT0RJTkdfRVJS
IGlzIGVycm9yQ29kZQotKiBSZXNvbHZpbmcgYSBVUkwgd2l0aCB0aGUgd3JvbmcgcHJvdG9jb2wK
LVBBU1MgRmlsZUVycm9yLkVOQ09ESU5HX0VSUiBpcyBlcnJvckNvZGUKLSogUmVzb2x2aW5nIGEg
VVJMIHdpdGggbm8gc2xhc2ggYmV0d2VlbiB0eXBlIGFuZCBmaWxlCi1QQVNTIEZpbGVFcnJvci5F
TkNPRElOR19FUlIgaXMgZXJyb3JDb2RlCi0qIFJlc29sdmluZyBhIFVSTCB3aXRoIG5vIHNsYXNo
IGJldHdlZW4gcHJvdG9jb2wgYW5kIHR5cGUgKGJvZ3VzIHBvcnQpCi1QQVNTIEZpbGVFcnJvci5T
RUNVUklUWV9FUlIgaXMgZXJyb3JDb2RlCi0qIFJlc29sdmUgYSBwYXRoIHVzaW5nIGJhY2tzbGFz
aGVzCi1QQVNTIGV4cGVjdGVkUGF0aCBpcyBhY3R1YWxQYXRoCi1QQVNTIGlzRmlsZSBpcyB0cnVl
Ci0qIFJlc29sdmUgYSBkaXJlY3RvcnkKLVBBU1MgZXhwZWN0ZWRQYXRoIGlzIGFjdHVhbFBhdGgK
LVBBU1MgaXNEaXJlY3RvcnkgaXMgdHJ1ZQotKiBSZXNvbHZlIGEgcGF0aCB1c2luZyBhIHRyYWls
aW5nIHNsYXNoCi1QQVNTIGV4cGVjdGVkUGF0aCBpcyBhY3R1YWxQYXRoCi1QQVNTIGlzRGlyZWN0
b3J5IGlzIHRydWUKLSogUmVzb2x2aW5nIGEgcGVyc2lzdGVudCBVUkwuCi1QQVNTIGV4cGVjdGVk
UGF0aCBpcyBhY3R1YWxQYXRoCi1QQVNTIGlzRGlyZWN0b3J5IGlzIHRydWUKLUZpbmlzaGVkIHJ1
bm5pbmcgdGVzdHMuCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09N
UExFVEUKLQpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9maWxlc3lzdGVtL3Jlc29sdmUt
dXJpLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9maWxlc3lzdGVt
L3Jlc29sdmUtdXJpLmh0bWwJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvZmlsZXN5c3RlbS9yZXNvbHZlLXVyaS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEy
ICswLDAgQEAKLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZnMtdGVz
dC11dGlsLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHAgaWQ9ImRlc2NyaXB0aW9u
Ij48L3A+Ci08ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KLTxzY3JpcHQgc3JjPSJzY3JpcHQtdGVz
dHMvcmVzb2x2ZS11cmkuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpJbmRleDog
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9maWxlc3lzdGVtL3Jlc291cmNlcy9mcy10ZXN0LXV0aWwu
anMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9maWxlc3lzdGVtL3Jlc291
cmNlcy9mcy10ZXN0LXV0aWwuanMJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZnMtdGVzdC11dGlsLmpzCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDU0ICswLDAgQEAKLWZ1bmN0aW9uIGJpbmRDYWxsYmFjayhvYmosIGNhbGxiYWNr
LCBhcmcxLCBhcmcyLCBhcmczKQotewotICAgIHJldHVybiBmdW5jdGlvbihhcmcpIHsKLSAgICAg
ICAgaWYgKGFyZyA9PSB1bmRlZmluZWQpCi0gICAgICAgICAgICBjYWxsYmFjay5hcHBseShvYmos
IFthcmcxLCBhcmcyLCBhcmczXSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNhbGxiYWNr
LmFwcGx5KG9iaiwgW2FyZywgYXJnMSwgYXJnMiwgYXJnM10pOwotICAgIH07Ci19Ci0KLS8vIFJl
bW92ZSBldmVyeXRoaW5nIGluIHRoZSBnaXZlbiBkaXJlY3RvcnkuCi1mdW5jdGlvbiByZW1vdmVB
bGxJbkRpcmVjdG9yeShkaXJlY3RvcnksIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykg
ewotICAgIHZhciBSZW1vdmVBbGxJbkRpcmVjdG9yeUhlbHBlciA9IGZ1bmN0aW9uKHN1Y2Nlc3ND
YWxsYmFjaywgZXJyb3JDYWxsYmFjaykgewotICAgICAgICB0aGlzLmVudHJpZXNDb3VudCA9IDA7
Ci0gICAgICAgIHRoaXMuZG9uZSA9IGZhbHNlOwotICAgICAgICB0aGlzLnJlYWRlciA9IG51bGw7
Ci0gICAgICAgIHRoaXMuc3VjY2Vzc0NhbGxiYWNrID0gc3VjY2Vzc0NhbGxiYWNrOwotICAgICAg
ICB0aGlzLmVycm9yQ2FsbGJhY2sgPSBlcnJvckNhbGxiYWNrOwotCi0gICAgICAgIHRoaXMuZW50
cnlSZW1vdmVkQ2FsbGJhY2sgPSBiaW5kQ2FsbGJhY2sodGhpcywgZnVuY3Rpb24oZW50cnkpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGlmICgtLXRoaXMuZW50cmllc0NvdW50ID09IDAgJiYgdGhp
cy5zdWNjZXNzQ2FsbGJhY2sgJiYgdGhpcy5kb25lKSB7Ci0gICAgICAgICAgICAgICAgdGhpcy5z
dWNjZXNzQ2FsbGJhY2soKTsKLSAgICAgICAgICAgICAgICB0aGlzLnN1Y2Nlc3NDYWxsYmFjayA9
IG51bGw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0pOwotCi0gICAgICAgIHRoaXMuZW50cmll
c0NhbGxiYWNrID0gYmluZENhbGxiYWNrKHRoaXMsIGZ1bmN0aW9uKGVudHJpZXMpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZW50cmllcy5sZW5ndGg7ICsraSkg
ewotICAgICAgICAgICAgICAgIHRoaXMuZW50cmllc0NvdW50Kys7Ci0gICAgICAgICAgICAgICAg
aWYgKGVudHJpZXNbaV0uaXNEaXJlY3RvcnkpCi0gICAgICAgICAgICAgICAgICAgIGVudHJpZXNb
aV0ucmVtb3ZlUmVjdXJzaXZlbHkodGhpcy5lbnRyeVJlbW92ZWRDYWxsYmFjaywgdGhpcy5lcnJv
ckNhbGxiYWNrKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGVu
dHJpZXNbaV0ucmVtb3ZlKHRoaXMuZW50cnlSZW1vdmVkQ2FsbGJhY2ssIHRoaXMuZXJyb3JDYWxs
YmFjayk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoZW50cmllcy5sZW5ndGgpCi0g
ICAgICAgICAgICAgICAgdGhpcy5yZWFkZXIucmVhZEVudHJpZXModGhpcy5lbnRyaWVzQ2FsbGJh
Y2ssIHRoaXMuZXJyb3JDYWxsYmFjayk7Ci0gICAgICAgICAgICBlbHNlIGlmICh0aGlzLmVudHJp
ZXNDb3VudCA+IDApCi0gICAgICAgICAgICAgICAgdGhpcy5kb25lID0gdHJ1ZTsKLSAgICAgICAg
ICAgIGVsc2UgaWYgKHRoaXMuc3VjY2Vzc0NhbGxiYWNrKQotICAgICAgICAgICAgICAgIHRoaXMu
c3VjY2Vzc0NhbGxiYWNrKCk7Ci0gICAgICAgIH0pOwotCi0gICAgICAgIHRoaXMucmVtb3ZlQWxs
SW5EaXJlY3RvcnkgPSBmdW5jdGlvbihkaXJlY3RvcnkpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IHRoaXMucmVhZGVyID0gZGlyZWN0b3J5LmNyZWF0ZVJlYWRlcigpOwotICAgICAgICAgICAgdGhp
cy5yZWFkZXIucmVhZEVudHJpZXModGhpcy5lbnRyaWVzQ2FsbGJhY2ssIHRoaXMuZXJyb3JDYWxs
YmFjayk7Ci0gICAgICAgIH07Ci0gICAgfTsKLQotICAgIHZhciBoZWxwZXIgPSBuZXcgUmVtb3Zl
QWxsSW5EaXJlY3RvcnlIZWxwZXIoc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsKLSAg
ICBoZWxwZXIucmVtb3ZlQWxsSW5EaXJlY3RvcnkoZGlyZWN0b3J5KTsKLX0KSW5kZXg6IExheW91
dFRlc3RzL2h0dHAvdGVzdHMvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZnMtd29ya2VyLWNvbW1vbi5q
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2ZpbGVzeXN0ZW0vcmVzb3Vy
Y2VzL2ZzLXdvcmtlci1jb21tb24uanMJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZnMtd29ya2VyLWNvbW1vbi5qcwkod29y
a2luZyBjb3B5KQpAQCAtMSw1NiArMCwwIEBACi1mdW5jdGlvbiBkZWJ1ZyhtZXNzYWdlKQotewot
ICAgIHBvc3RNZXNzYWdlKCJNRVNHOiIgKyBtZXNzYWdlKTsKLX0KLQotZnVuY3Rpb24gZmluaXNo
SlNUZXN0KCkKLXsKLSAgICBwb3N0TWVzc2FnZSgiRE9ORToiKTsKLX0KLQotZnVuY3Rpb24gZGVz
Y3JpcHRpb24obWVzc2FnZSkKLXsKLSAgICBwb3N0TWVzc2FnZSgnREVTQzonICsgbWVzc2FnZSk7
Ci19Ci0KLWZ1bmN0aW9uIHRlc3RQYXNzZWQobXNnKSB7Ci0gICAgcG9zdE1lc3NhZ2UoIlBBU1M6
IiArIG1zZyk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RGYWlsZWQobXNnKSB7Ci0gICAgcG9zdE1lc3Nh
Z2UoIkZBSUw6IiArIG1zZyk7Ci19Ci0KLWZ1bmN0aW9uIHNob3VsZEJlKF9hLCBfYikKLXsKLSAg
aWYgKHR5cGVvZiBfYSAhPSAic3RyaW5nIiB8fCB0eXBlb2YgX2IgIT0gInN0cmluZyIpCi0gICAg
ZGVidWcoIldBUk46IHNob3VsZEJlKCkgZXhwZWN0cyBzdHJpbmcgYXJndW1lbnRzIik7Ci0gIHZh
ciBfYXYgPSBldmFsKF9hKTsKLSAgdmFyIF9idiA9IGV2YWwoX2IpOwotICBpZiAoX2F2ID09PSBf
YnYpCi0gICAgdGVzdFBhc3NlZChfYSArICIgaXMgIiArIF9iKTsKLSAgZWxzZQotICAgIHRlc3RG
YWlsZWQoX2EgKyAiIHNob3VsZCBiZSAiICsgX2J2ICsgIiAob2YgdHlwZSAiICsgdHlwZW9mIF9i
diArICIpLiBXYXMgIiArIF9hdiArICIgKG9mIHR5cGUgIiArIHR5cGVvZiBfYXYgKyAiKS4iKTsK
LX0KLQotZnVuY3Rpb24gc2hvdWxkQmVUcnVlKF9hKSB7IHNob3VsZEJlKF9hLCAidHJ1ZSIpOyB9
Ci0KLWZ1bmN0aW9uIHJlbW92ZUFsbEluRGlyZWN0b3J5U3luYyhkaXJlY3RvcnkpIHsKLSAgICBp
ZiAoIWRpcmVjdG9yeSkKLSAgICAgICAgcmV0dXJuOwotICAgIHZhciByZWFkZXIgPSBkaXJlY3Rv
cnkuY3JlYXRlUmVhZGVyKCk7Ci0gICAgZG8gewotICAgICAgICB2YXIgZW50cmllcyA9IHJlYWRl
ci5yZWFkRW50cmllcygpOwotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVudHJpZXMubGVu
Z3RoOyArK2kpIHsKLSAgICAgICAgICAgIGlmIChlbnRyaWVzW2ldLmlzRGlyZWN0b3J5KQotICAg
ICAgICAgICAgICAgIGVudHJpZXNbaV0ucmVtb3ZlUmVjdXJzaXZlbHkoKTsKLSAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICBlbnRyaWVzW2ldLnJlbW92ZSgpOwotICAgICAgICB9Ci0g
ICAgfSB3aGlsZSAoZW50cmllcy5sZW5ndGgpOwotfQotCi1pZiAodGhpcy5pbXBvcnRTY3JpcHRz
ICYmICF0aGlzLnJlcXVlc3RGaWxlU3lzdGVtICYmICF0aGlzLndlYmtpdFJlcXVlc3RGaWxlU3lz
dGVtKSB7Ci0gICAgZGVidWcoJ1RoaXMgdGVzdCByZXF1aXJlcyBGaWxlU3lzdGVtIEFQSS4nKTsK
LSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvZmls
ZXN5c3RlbS9yZXNvdXJjZXMvZnMtd29ya2VyLXRlc3QtdXRpbC5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZzLXdvcmtlci10ZXN0
LXV0aWwuanMJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvZmls
ZXN5c3RlbS9yZXNvdXJjZXMvZnMtd29ya2VyLXRlc3QtdXRpbC5qcwkod29ya2luZyBjb3B5KQpA
QCAtMSwzMiArMCwwIEBACi13aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Ci0KLWZ1bmN0aW9u
IHN0YXJ0V29ya2VyKHRlc3RTY3JpcHRVUkwpCi17Ci0gICAgZGVidWcoJ1N0YXJ0aW5nIHdvcmtl
cjogJyArIHRlc3RTY3JpcHRVUkwpOwotICAgIHZhciB3b3JrZXIgPSBuZXcgV29ya2VyKHRlc3RT
Y3JpcHRVUkwpOwotICAgIHdvcmtlci5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldmVudCkKLSAgICB7
Ci0gICAgICAgIGlmIChldmVudC5kYXRhLmxlbmd0aCA8IDUgfHwgZXZlbnQuZGF0YS5jaGFyQXQo
NCkgIT0gJzonKSB7Ci0gICAgICAgICAgICBkZWJ1ZygiR290IGludmFsaWQgbWVzc2FnZSBmcm9t
IHdvcmtlcjoiICsgKGV2ZW50LmRhdGEgPyBldmVudC5kYXRhIDogIm51bGwiKSk7Ci0gICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICB2YXIgY29kZSA9IGV2ZW50LmRhdGEuc3Vic3RyaW5nKDAs
IDQpOwotICAgICAgICAgICAgdmFyIHBheWxvYWQgPSAiW1dvcmtlcl0gIiArIGV2ZW50LmRhdGEu
c3Vic3RyaW5nKDUpOwotICAgICAgICAgICAgaWYgKGNvZGUgPT0gIlBBU1MiKQotICAgICAgICAg
ICAgICAgIHRlc3RQYXNzZWQocGF5bG9hZCk7Ci0gICAgICAgICAgICBlbHNlIGlmIChjb2RlID09
ICJGQUlMIikKLSAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKHBheWxvYWQpOwotICAgICAgICAg
ICAgZWxzZSBpZiAoY29kZSA9PSAiREVTQyIpCi0gICAgICAgICAgICAgICAgZGVzY3JpcHRpb24o
cGF5bG9hZCk7Ci0gICAgICAgICAgICBlbHNlIGlmIChjb2RlID09ICJET05FIikKLSAgICAgICAg
ICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGNvZGUgPT0gIk1F
U0ciKQotICAgICAgICAgICAgICAgIGRlYnVnKHBheWxvYWQpOwotICAgICAgICB9Ci0gICAgfTsK
LQotICAgIHdvcmtlci5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpCi0gICAgewotICAgICAgICBk
ZWJ1ZygnR290IGVycm9yIGZyb20gd29ya2VyOiAnICsgZXZlbnQubWVzc2FnZSk7Ci0gICAgICAg
IGZpbmlzaEpTVGVzdCgpOwotICAgIH0KLX0KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMv
ZmlsZXN5c3RlbS9zY3JpcHQtdGVzdHMvVEVNUExBVEUuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2ZpbGVzeXN0ZW0vc2NyaXB0LXRlc3RzL1RFTVBMQVRFLmh0bWwJ
KHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvZmlsZXN5c3RlbS9z
Y3JpcHQtdGVzdHMvVEVNUExBVEUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxMiArMCwwIEBA
Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0icmVzb3VyY2VzL2ZzLXRlc3QtdXRpbC5q
cyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgot
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Ci08c2NyaXB0IHNyYz0iWU9VUl9KU19GSUxFX0hFUkUi
Pjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9maWxlc3lzdGVtL3NjcmlwdC10ZXN0cy9yZXNvbHZlLXVyaS5qcwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2ZpbGVzeXN0ZW0vc2NyaXB0LXRlc3RzL3Jlc29sdmUt
dXJpLmpzCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2ZpbGVz
eXN0ZW0vc2NyaXB0LXRlc3RzL3Jlc29sdmUtdXJpLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDIw
NiArMCwwIEBACi1pZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7Ci0gICAgaW1wb3J0U2NyaXB0cygn
Li4vcmVzb3VyY2VzL2ZzLXdvcmtlci1jb21tb24uanMnKTsKLSAgICBpbXBvcnRTY3JpcHRzKCcu
Li9yZXNvdXJjZXMvZnMtdGVzdC11dGlsLmpzJyk7Ci19Ci0KLWRlc2NyaXB0aW9uKCJUZXN0cyB1
c2luZyB3ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lzdGVtVVJMIHRvIG9idGFpbiBhbiBFbnRyeSBm
cm9tIGEgVVJMIik7Ci0KLXZhciB0ZXN0RmlsZU5hbWUgPSAnL3Rlc3RGaWxlJzsKLXZhciBmaWxl
U3lzdGVtID0gbnVsbDsKLXZhciBleHBlY3RlZFBhdGggPSBudWxsOwotdmFyIGFjdHVhbFBhdGgg
PSBudWxsOwotdmFyIGVycm9yQ29kZSA9IG51bGw7Ci0KLWZ1bmN0aW9uIGVycm9yQ2FsbGJhY2so
ZXJyb3IpIHsKLSAgICBpZiAoZXJyb3IgJiYgZXJyb3IuY29kZSkKLSAgICAgICAgZGVidWcoIkVy
cm9yIG9jY3VycmVkOiAiICsgZXJyb3IuY29kZSk7Ci0gICAgdGVzdEZhaWxlZCgiQmFpbGluZyBv
dXQgZWFybHkiKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotZnVuY3Rpb24gZXhwZWN0U2Vj
dXJpdHlFcnJBbmRSdW5OZXh0KGVycm9yKSB7Ci0gICAgZXJyb3JDb2RlID0gZXJyb3IuY29kZTsK
LSAgICBzaG91bGRCZSgiRmlsZUVycm9yLlNFQ1VSSVRZX0VSUiIsICJlcnJvckNvZGUiKTsKLSAg
ICBjbGVhbnVwQW5kUnVuTmV4dCgpOwotfQotCi1mdW5jdGlvbiBleHBlY3RFbmNvZGluZ0VyckFu
ZFJ1bk5leHQoZXJyb3IpIHsKLSAgICBlcnJvckNvZGUgPSBlcnJvci5jb2RlOwotICAgIHNob3Vs
ZEJlKCJGaWxlRXJyb3IuRU5DT0RJTkdfRVJSIiwgImVycm9yQ29kZSIpOwotICAgIGNsZWFudXBB
bmRSdW5OZXh0KCk7Ci19Ci0KLWZ1bmN0aW9uIGNyZWF0ZVRlc3RGaWxlKGNhbGxiYWNrKSB7Ci0g
ICAgZmlsZVN5c3RlbS5yb290LmdldEZpbGUodGVzdEZpbGVOYW1lLCB7Y3JlYXRlOnRydWV9LCBj
YWxsYmFjaywgZXJyb3JDYWxsYmFjayk7Ci19Ci0KLWZ1bmN0aW9uIGFzc2VydFBhdGhzTWF0Y2go
ZXhwZWN0ZWQsIGFjdHVhbCkgewotICAgIGV4cGVjdGVkUGF0aCA9IGV4cGVjdGVkOwotICAgIGFj
dHVhbFBhdGggPSBhY3R1YWw7Ci0gICAgc2hvdWxkQmUoImV4cGVjdGVkUGF0aCIsICJhY3R1YWxQ
YXRoIik7Ci19Ci0KLXZhciBpc0RpcmVjdG9yeSA9IGZhbHNlOwotZnVuY3Rpb24gYXNzZXJ0SXNE
aXJlY3RvcnkoZW50cnkpIHsKLSAgICBpc0RpcmVjdG9yeSA9IGVudHJ5LmlzRGlyZWN0b3J5Owot
ICAgIHNob3VsZEJlVHJ1ZSgiaXNEaXJlY3RvcnkiKTsKLX0KLQotdmFyIGlzRmlsZSA9IGZhbHNl
OwotZnVuY3Rpb24gYXNzZXJ0SXNGaWxlKGVudHJ5KSB7Ci0gICAgaXNGaWxlID0gZW50cnkuaXNG
aWxlOwotICAgIHNob3VsZEJlVHJ1ZSgiaXNGaWxlIik7Ci19Ci0KLS8vIFRlc3QgYm9keSBmdW5j
dGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQotCi1mdW5jdGlvbiBydW5CYXNpY1Rlc3QoKSB7Ci0gICAgZGVidWcoIiogUmVzb2x2aW5nIGEg
Z2VuZXJhdGVkIFVSTC4iKTsKLSAgICBjcmVhdGVUZXN0RmlsZShmdW5jdGlvbihlbnRyeSkgewot
ICAgICAgICB3ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lzdGVtVVJMKGVudHJ5LnRvVVJMKCksIGZ1
bmN0aW9uKGUpIHsKLSAgICAgICAgICAgIGFzc2VydFBhdGhzTWF0Y2goZW50cnkuZnVsbFBhdGgs
IGUuZnVsbFBhdGgpOwotICAgICAgICAgICAgYXNzZXJ0SXNGaWxlKGUpOwotICAgICAgICAgICAg
Y2xlYW51cEFuZFJ1bk5leHQoKTsKLSAgICAgICAgfSwgZXJyb3JDYWxsYmFjayk7Ci0gICAgfSk7
Ci19Ci0KLWZ1bmN0aW9uIHJ1bkhhbmRtYWRlVVJMKCkgewotICAgIGRlYnVnKCIqIFJlc29sdmlu
ZyB0ZXN0IGZpbGUgYnkgaGFuZCIpOwotICAgIGNyZWF0ZVRlc3RGaWxlKGZ1bmN0aW9uKGVudHJ5
KSB7Ci0gICAgICAgIHdlYmtpdFJlc29sdmVMb2NhbEZpbGVTeXN0ZW1VUkwoImZpbGVzeXN0ZW06
aHR0cDovLzEyNy4wLjAuMTo4MDAwL3RlbXBvcmFyeS90ZXN0RmlsZSIsIGZ1bmN0aW9uKGUpIHsK
LSAgICAgICAgICAgIGFzc2VydFBhdGhzTWF0Y2godGVzdEZpbGVOYW1lLCBlLmZ1bGxQYXRoKTsK
LSAgICAgICAgICAgIGFzc2VydElzRmlsZShlKTsKLSAgICAgICAgICAgIGNsZWFudXBBbmRSdW5O
ZXh0KCk7Ci0gICAgICAgIH0sIGVycm9yQ2FsbGJhY2spOwotICAgIH0pOwotfQotCi1mdW5jdGlv
biBydW5Xcm9uZ0RvbWFpbigpIHsKLSAgICBkZWJ1ZygiKiBSZXNvbHZpbmcgYSBVUkwgd2l0aCB0
aGUgd3Jvbmcgc2VjdXJpdHkgb3JpZ2luIChkb21haW4pIik7Ci0gICAgd2Via2l0UmVzb2x2ZUxv
Y2FsRmlsZVN5c3RlbVVSTCgiZmlsZXN5c3RlbTpodHRwOi8vbG9jYWxob3N0OjgwMDAvdGVtcG9y
YXJ5L2ZvbyIsIGVycm9yQ2FsbGJhY2ssIGV4cGVjdFNlY3VyaXR5RXJyQW5kUnVuTmV4dCk7Ci19
Ci0KLWZ1bmN0aW9uIHJ1bldyb25nUG9ydCgpIHsKLSAgICBkZWJ1ZygiKiBSZXNvbHZpbmcgYSBV
Ukwgd2l0aCB0aGUgd3Jvbmcgc2VjdXJpdHkgb3JpZ2luIChwb3J0KSIpOwotICAgIHdlYmtpdFJl
c29sdmVMb2NhbEZpbGVTeXN0ZW1VUkwoImZpbGVzeXN0ZW06aHR0cDovLzEyNy4wLjAuMTo4MDgw
L3RlbXBvcmFyeS9mb28iLCBlcnJvckNhbGxiYWNrLCBleHBlY3RTZWN1cml0eUVyckFuZFJ1bk5l
eHQpOwotfQotCi1mdW5jdGlvbiBydW5Xcm9uZ1NjaGVtZSgpIHsKLSAgICBkZWJ1ZygiKiBSZXNv
bHZpbmcgYSBVUkwgd2l0aCB0aGUgd3Jvbmcgc2VjdXJpdHkgb3JpZ2luIChzY2hlbWUpIik7Ci0g
ICAgd2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVVSTCgiZmlsZXN5c3RlbTpodHRwczovLzEy
Ny4wLjAuMTo4MDAwL3RlbXBvcmFyeS9mb28iLCBlcnJvckNhbGxiYWNrLCBleHBlY3RTZWN1cml0
eUVyckFuZFJ1bk5leHQpOwotfQotCi1mdW5jdGlvbiBydW5Cb2d1c1VSTCgpIHsKLSAgICBkZWJ1
ZygiKiBSZXNvbHZpbmcgYSBjb21wbGV0ZWx5IGJvZ3VzIFVSTC4iKTsKLSAgICB3ZWJraXRSZXNv
bHZlTG9jYWxGaWxlU3lzdGVtVVJMKCJmb28iLCBlcnJvckNhbGxiYWNrLCBleHBlY3RFbmNvZGlu
Z0VyckFuZFJ1bk5leHQpOwotfQotCi1mdW5jdGlvbiBydW5Xcm9uZ1Byb3RvY29sKCkgewotICAg
IGRlYnVnKCIqIFJlc29sdmluZyBhIFVSTCB3aXRoIHRoZSB3cm9uZyBwcm90b2NvbCIpOwotICAg
IHdlYmtpdFJlc29sdmVMb2NhbEZpbGVTeXN0ZW1VUkwoImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9m
b28vYmFyL2JheiIsIGVycm9yQ2FsbGJhY2ssIGV4cGVjdEVuY29kaW5nRXJyQW5kUnVuTmV4dCk7
Ci19Ci0KLWZ1bmN0aW9uIHJ1bk5vdEVub3VnaFNsYXNoZXMoKSB7Ci0gICAgZGVidWcoIiogUmVz
b2x2aW5nIGEgVVJMIHdpdGggbm8gc2xhc2ggYmV0d2VlbiB0eXBlIGFuZCBmaWxlIik7Ci0gICAg
Y3JlYXRlVGVzdEZpbGUoZnVuY3Rpb24oZW50cnkpIHsKLSAgICAgICAgd2Via2l0UmVzb2x2ZUxv
Y2FsRmlsZVN5c3RlbVVSTCgiZmlsZXN5c3RlbTpodHRwOi8vMTI3LjAuMC4xOjgwMDAvdGVtcG9y
YXJ5dGVzdEZpbGUiLCBlcnJvckNhbGxiYWNrLCBleHBlY3RFbmNvZGluZ0VyckFuZFJ1bk5leHQp
OwotICAgIH0pOwotfQotCi1mdW5jdGlvbiBydW5Ob3RFbm91Z2hTbGFzaGVzMigpIHsKLSAgICBk
ZWJ1ZygiKiBSZXNvbHZpbmcgYSBVUkwgd2l0aCBubyBzbGFzaCBiZXR3ZWVuIHByb3RvY29sIGFu
ZCB0eXBlIChib2d1cyBwb3J0KSIpOwotICAgIGNyZWF0ZVRlc3RGaWxlKGZ1bmN0aW9uKGVudHJ5
KSB7Ci0gICAgICAgIHdlYmtpdFJlc29sdmVMb2NhbEZpbGVTeXN0ZW1VUkwoImZpbGVzeXN0ZW06
aHR0cDovLzEyNy4wLjAuMTo4MDAwdGVtcG9yYXJ5L3Rlc3RGaWxlIiwgZXJyb3JDYWxsYmFjaywg
ZXhwZWN0U2VjdXJpdHlFcnJBbmRSdW5OZXh0KTsKLSAgICB9KTsKLX0KLQotZnVuY3Rpb24gcnVu
VXNlQmFja1NsYXNoZXMoKSB7Ci0gICAgZGVidWcoIiogUmVzb2x2ZSBhIHBhdGggdXNpbmcgYmFj
a3NsYXNoZXMiKTsKLSAgICBmaWxlU3lzdGVtLnJvb3QuZ2V0RGlyZWN0b3J5KCJmb28iLCB7Y3Jl
YXRlOnRydWV9LCBmdW5jdGlvbihlbnRyeSkgewotICAgICAgICBlbnRyeS5nZXRGaWxlKCJ0ZXN0
RmlsZSIsIHtjcmVhdGU6dHJ1ZX0sIGZ1bmN0aW9uKGYpIHsKLSAgICAgICAgICAgIHdlYmtpdFJl
c29sdmVMb2NhbEZpbGVTeXN0ZW1VUkwoImZpbGVzeXN0ZW06aHR0cDovLzEyNy4wLjAuMTo4MDAw
L3RlbXBvcmFyeS9mb29cXHRlc3RGaWxlIiwgZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgICAg
IGFzc2VydFBhdGhzTWF0Y2goIi9mb28vdGVzdEZpbGUiLCBlLmZ1bGxQYXRoKTsKLSAgICAgICAg
ICAgICAgICBhc3NlcnRJc0ZpbGUoZSk7Ci0gICAgICAgICAgICAgICAgY2xlYW51cEFuZFJ1bk5l
eHQoKTsKLSAgICAgICAgICAgIH0sIGVycm9yQ2FsbGJhY2spOwotICAgICAgICB9LCBlcnJvckNh
bGxiYWNrKTsKLSAgICB9LCBlcnJvckNhbGxiYWNrKTsKLX0KLQotZnVuY3Rpb24gcnVuRGlyZWN0
b3J5KCkgewotICAgIGRlYnVnKCIqIFJlc29sdmUgYSBkaXJlY3RvcnkiKTsKLSAgICBmaWxlU3lz
dGVtLnJvb3QuZ2V0RGlyZWN0b3J5KCJmb28iLCB7Y3JlYXRlOnRydWV9LCBmdW5jdGlvbihlbnRy
eSkgewotICAgICAgICB3ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lzdGVtVVJMKCJmaWxlc3lzdGVt
Omh0dHA6Ly8xMjcuMC4wLjE6ODAwMC90ZW1wb3JhcnkvZm9vIiwgZnVuY3Rpb24oZSkgewotICAg
ICAgICAgICAgYXNzZXJ0UGF0aHNNYXRjaCgiL2ZvbyIsIGUuZnVsbFBhdGgpOwotICAgICAgICAg
ICAgYXNzZXJ0SXNEaXJlY3RvcnkoZSk7Ci0gICAgICAgICAgICBjbGVhbnVwQW5kUnVuTmV4dCgp
OwotICAgICAgICB9LCBlcnJvckNhbGxiYWNrKTsKLSAgICB9LCBlcnJvckNhbGxiYWNrKTsKLX0K
LQotZnVuY3Rpb24gcnVuV2l0aFRyYWlsaW5nU2xhc2goKSB7Ci0gICAgZGVidWcoIiogUmVzb2x2
ZSBhIHBhdGggdXNpbmcgYSB0cmFpbGluZyBzbGFzaCIpOwotICAgIGZpbGVTeXN0ZW0ucm9vdC5n
ZXREaXJlY3RvcnkoImZvbyIsIHtjcmVhdGU6dHJ1ZX0sIGZ1bmN0aW9uKGVudHJ5KSB7Ci0gICAg
ICAgIHdlYmtpdFJlc29sdmVMb2NhbEZpbGVTeXN0ZW1VUkwoImZpbGVzeXN0ZW06aHR0cDovLzEy
Ny4wLjAuMTo4MDAwL3RlbXBvcmFyeS9mb28vIiwgZnVuY3Rpb24oZSkgewotICAgICAgICAgICAg
YXNzZXJ0UGF0aHNNYXRjaCgiL2ZvbyIsIGUuZnVsbFBhdGgpOwotICAgICAgICAgICAgYXNzZXJ0
SXNEaXJlY3RvcnkoZSk7Ci0gICAgICAgICAgICBjbGVhbnVwQW5kUnVuTmV4dCgpOwotICAgICAg
ICB9LCBlcnJvckNhbGxiYWNrKTsKLSAgICB9LCBlcnJvckNhbGxiYWNrKTsKLX0KLQotZnVuY3Rp
b24gcnVuUGVyc2lzdGVudFRlc3QoKSB7Ci0gICAgZGVidWcoIiogUmVzb2x2aW5nIGEgcGVyc2lz
dGVudCBVUkwuIik7Ci0gICAgd2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0oUEVSU0lTVEVOVCwgMTAw
LCBmdW5jdGlvbihmcykgewotICAgICAgICB3ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lzdGVtVVJM
KGZzLnJvb3QudG9VUkwoKSwgZnVuY3Rpb24oZW50cnkpIHsKLSAgICAgICAgICAgIGFzc2VydFBh
dGhzTWF0Y2goIi8iLCBlbnRyeS5mdWxsUGF0aCk7Ci0gICAgICAgICAgICBhc3NlcnRJc0RpcmVj
dG9yeShlbnRyeSk7Ci0gICAgICAgICAgICBjbGVhbnVwQW5kUnVuTmV4dCgpOwotICAgICAgICB9
LCBlcnJvckNhbGxiYWNrKTsKLSAgICB9KTsKLX0KLQotLy8gRW5kIG9mIHRlc3QgYm9keSBmdW5j
dGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLXZh
ciB0ZXN0c0xpc3QgPSBbCi0gICAgcnVuQmFzaWNUZXN0LAotICAgIHJ1bkhhbmRtYWRlVVJMLAot
ICAgIHJ1bldyb25nRG9tYWluLAotICAgIHJ1bldyb25nUG9ydCwKLSAgICBydW5Xcm9uZ1NjaGVt
ZSwKLSAgICBydW5Cb2d1c1VSTCwKLSAgICBydW5Xcm9uZ1Byb3RvY29sLAotICAgIHJ1bk5vdEVu
b3VnaFNsYXNoZXMsCi0gICAgcnVuTm90RW5vdWdoU2xhc2hlczIsCi0gICAgcnVuVXNlQmFja1Ns
YXNoZXMsCi0gICAgcnVuRGlyZWN0b3J5LAotICAgIHJ1bldpdGhUcmFpbGluZ1NsYXNoLAotICAg
IHJ1blBlcnNpc3RlbnRUZXN0LAotXTsKLXZhciB0ZXN0Q291bnRlciA9IDA7Ci0KLWZ1bmN0aW9u
IHJ1bk5leHRUZXN0KCkgewotICAgIGlmICh0ZXN0Q291bnRlciA9PSB0ZXN0c0xpc3QubGVuZ3Ro
KSB7Ci0gICAgICAgIGRlYnVnKCJGaW5pc2hlZCBydW5uaW5nIHRlc3RzLiIpOwotICAgICAgICBm
aW5pc2hKU1Rlc3QoKTsKLSAgICB9IGVsc2UKLSAgICAgICAgdGVzdHNMaXN0W3Rlc3RDb3VudGVy
KytdKCk7Ci19Ci0KLWZ1bmN0aW9uIGNsZWFudXBBbmRSdW5OZXh0KCkgewotICAgIHJlbW92ZUFs
bEluRGlyZWN0b3J5KGZpbGVTeXN0ZW0ucm9vdCwgcnVuTmV4dFRlc3QsIHJ1bk5leHRUZXN0KTsK
LX0KLQotZnVuY3Rpb24gZmlsZVN5c3RlbUNhbGxiYWNrKGZzKSB7Ci0gICAgZmlsZVN5c3RlbSA9
IGZzOwotICAgIGNsZWFudXBBbmRSdW5OZXh0KCk7Ci19Ci0KLWlmICh0aGlzLndlYmtpdFJlcXVl
c3RGaWxlU3lzdGVtKSB7Ci0gICAganNUZXN0SXNBc3luYyA9IHRydWU7Ci0gICAgd2Via2l0UmVx
dWVzdEZpbGVTeXN0ZW0odGhpcy5URU1QT1JBUlksIDEwMCwgZmlsZVN5c3RlbUNhbGxiYWNrLCBl
cnJvckNhbGxiYWNrKTsKLX0gZWxzZQotICAgIGRlYnVnKCJUaGlzIHRlc3QgcmVxdWlyZXMgRmls
ZVN5c3RlbSBBUEkgc3VwcG9ydC4iKTsKLQotdmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7
CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2ZpbGVzeXN0ZW0vd29ya2Vycy9yZXNvbHZl
LXVybC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9m
aWxlc3lzdGVtL3dvcmtlcnMvcmVzb2x2ZS11cmwtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNTY2
OTEpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2ZpbGVzeXN0ZW0vd29ya2Vycy9yZXNvbHZl
LXVybC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNDMgKzAsMCBAQAotW1dvcmtl
cl0gVGVzdHMgdXNpbmcgd2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVVSTCB0byBvYnRhaW4g
YW4gRW50cnkgZnJvbSBhIFVSTAotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLQotU3Rh
cnRpbmcgd29ya2VyOiAuLi9zY3JpcHQtdGVzdHMvcmVzb2x2ZS11cmkuanMKLVtXb3JrZXJdICog
UmVzb2x2aW5nIGEgZ2VuZXJhdGVkIFVSTC4KLVBBU1MgW1dvcmtlcl0gZXhwZWN0ZWRQYXRoIGlz
IGFjdHVhbFBhdGgKLVBBU1MgW1dvcmtlcl0gaXNGaWxlIGlzIHRydWUKLVtXb3JrZXJdICogUmVz
b2x2aW5nIHRlc3QgZmlsZSBieSBoYW5kCi1QQVNTIFtXb3JrZXJdIGV4cGVjdGVkUGF0aCBpcyBh
Y3R1YWxQYXRoCi1QQVNTIFtXb3JrZXJdIGlzRmlsZSBpcyB0cnVlCi1bV29ya2VyXSAqIFJlc29s
dmluZyBhIFVSTCB3aXRoIHRoZSB3cm9uZyBzZWN1cml0eSBvcmlnaW4gKGRvbWFpbikKLVBBU1Mg
W1dvcmtlcl0gRmlsZUVycm9yLlNFQ1VSSVRZX0VSUiBpcyBlcnJvckNvZGUKLVtXb3JrZXJdICog
UmVzb2x2aW5nIGEgVVJMIHdpdGggdGhlIHdyb25nIHNlY3VyaXR5IG9yaWdpbiAocG9ydCkKLVBB
U1MgW1dvcmtlcl0gRmlsZUVycm9yLlNFQ1VSSVRZX0VSUiBpcyBlcnJvckNvZGUKLVtXb3JrZXJd
ICogUmVzb2x2aW5nIGEgVVJMIHdpdGggdGhlIHdyb25nIHNlY3VyaXR5IG9yaWdpbiAoc2NoZW1l
KQotUEFTUyBbV29ya2VyXSBGaWxlRXJyb3IuU0VDVVJJVFlfRVJSIGlzIGVycm9yQ29kZQotW1dv
cmtlcl0gKiBSZXNvbHZpbmcgYSBjb21wbGV0ZWx5IGJvZ3VzIFVSTC4KLVBBU1MgW1dvcmtlcl0g
RmlsZUVycm9yLkVOQ09ESU5HX0VSUiBpcyBlcnJvckNvZGUKLVtXb3JrZXJdICogUmVzb2x2aW5n
IGEgVVJMIHdpdGggdGhlIHdyb25nIHByb3RvY29sCi1QQVNTIFtXb3JrZXJdIEZpbGVFcnJvci5F
TkNPRElOR19FUlIgaXMgZXJyb3JDb2RlCi1bV29ya2VyXSAqIFJlc29sdmluZyBhIFVSTCB3aXRo
IG5vIHNsYXNoIGJldHdlZW4gdHlwZSBhbmQgZmlsZQotUEFTUyBbV29ya2VyXSBGaWxlRXJyb3Iu
RU5DT0RJTkdfRVJSIGlzIGVycm9yQ29kZQotW1dvcmtlcl0gKiBSZXNvbHZpbmcgYSBVUkwgd2l0
aCBubyBzbGFzaCBiZXR3ZWVuIHByb3RvY29sIGFuZCB0eXBlIChib2d1cyBwb3J0KQotUEFTUyBb
V29ya2VyXSBGaWxlRXJyb3IuU0VDVVJJVFlfRVJSIGlzIGVycm9yQ29kZQotW1dvcmtlcl0gKiBS
ZXNvbHZlIGEgcGF0aCB1c2luZyBiYWNrc2xhc2hlcwotUEFTUyBbV29ya2VyXSBleHBlY3RlZFBh
dGggaXMgYWN0dWFsUGF0aAotUEFTUyBbV29ya2VyXSBpc0ZpbGUgaXMgdHJ1ZQotW1dvcmtlcl0g
KiBSZXNvbHZlIGEgZGlyZWN0b3J5Ci1QQVNTIFtXb3JrZXJdIGV4cGVjdGVkUGF0aCBpcyBhY3R1
YWxQYXRoCi1QQVNTIFtXb3JrZXJdIGlzRGlyZWN0b3J5IGlzIHRydWUKLVtXb3JrZXJdICogUmVz
b2x2ZSBhIHBhdGggdXNpbmcgYSB0cmFpbGluZyBzbGFzaAotUEFTUyBbV29ya2VyXSBleHBlY3Rl
ZFBhdGggaXMgYWN0dWFsUGF0aAotUEFTUyBbV29ya2VyXSBpc0RpcmVjdG9yeSBpcyB0cnVlCi1b
V29ya2VyXSAqIFJlc29sdmluZyBhIHBlcnNpc3RlbnQgVVJMLgotUEFTUyBbV29ya2VyXSBleHBl
Y3RlZFBhdGggaXMgYWN0dWFsUGF0aAotUEFTUyBbV29ya2VyXSBpc0RpcmVjdG9yeSBpcyB0cnVl
Ci1bV29ya2VyXSBGaW5pc2hlZCBydW5uaW5nIHRlc3RzLgotUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVz
dHMvZmlsZXN5c3RlbS93b3JrZXJzL3Jlc29sdmUtdXJsLXN5bmMtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvZmlsZXN5c3RlbS93b3JrZXJzL3Jlc29s
dmUtdXJsLXN5bmMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2ZpbGVzeXN0ZW0vd29ya2Vycy9yZXNvbHZlLXVybC1zeW5jLWV4cGVjdGVk
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw0MyArMCwwIEBACi1bV29ya2VyXSBUZXN0cyB1c2lu
ZyB3ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lzdGVtU3luY1VSTCB0byBvYnRhaW4gYW4gRW50cnkg
ZnJvbSBhIFVSTAotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLQotU3RhcnRpbmcgd29y
a2VyOiBzY3JpcHQtdGVzdHMvcmVzb2x2ZS11cmwtc3luYy5qcwotW1dvcmtlcl0gKiBSZXNvbHZp
bmcgYSBnZW5lcmF0ZWQgVVJMLgotUEFTUyBbV29ya2VyXSBleHBlY3RlZFBhdGggaXMgYWN0dWFs
UGF0aAotUEFTUyBbV29ya2VyXSBpc0ZpbGUgaXMgdHJ1ZQotW1dvcmtlcl0gKiBSZXNvbHZpbmcg
dGVzdCBmaWxlIGJ5IGhhbmQKLVBBU1MgW1dvcmtlcl0gZXhwZWN0ZWRQYXRoIGlzIGFjdHVhbFBh
dGgKLVBBU1MgW1dvcmtlcl0gaXNGaWxlIGlzIHRydWUKLVtXb3JrZXJdICogUmVzb2x2aW5nIGEg
VVJMIHdpdGggdGhlIHdyb25nIHNlY3VyaXR5IG9yaWdpbiAoZG9tYWluKQotUEFTUyBbV29ya2Vy
XSBGaWxlRXhjZXB0aW9uLlNFQ1VSSVRZX0VSUiBpcyBlcnJvckNvZGUKLVtXb3JrZXJdICogUmVz
b2x2aW5nIGEgVVJMIHdpdGggdGhlIHdyb25nIHNlY3VyaXR5IG9yaWdpbiAocG9ydCkKLVBBU1Mg
W1dvcmtlcl0gRmlsZUV4Y2VwdGlvbi5TRUNVUklUWV9FUlIgaXMgZXJyb3JDb2RlCi1bV29ya2Vy
XSAqIFJlc29sdmluZyBhIFVSTCB3aXRoIHRoZSB3cm9uZyBzZWN1cml0eSBvcmlnaW4gKHNjaGVt
ZSkKLVBBU1MgW1dvcmtlcl0gRmlsZUV4Y2VwdGlvbi5TRUNVUklUWV9FUlIgaXMgZXJyb3JDb2Rl
Ci1bV29ya2VyXSAqIFJlc29sdmluZyBhIGNvbXBsZXRlbHkgYm9ndXMgVVJMLgotUEFTUyBbV29y
a2VyXSBGaWxlRXhjZXB0aW9uLkVOQ09ESU5HX0VSUiBpcyBlcnJvckNvZGUKLVtXb3JrZXJdICog
UmVzb2x2aW5nIGEgVVJMIHdpdGggdGhlIHdyb25nIHByb3RvY29sCi1QQVNTIFtXb3JrZXJdIEZp
bGVFeGNlcHRpb24uRU5DT0RJTkdfRVJSIGlzIGVycm9yQ29kZQotW1dvcmtlcl0gKiBSZXNvbHZp
bmcgYSBVUkwgd2l0aCBubyBzbGFzaCBiZXR3ZWVuIHR5cGUgYW5kIGZpbGUKLVBBU1MgW1dvcmtl
cl0gRmlsZUV4Y2VwdGlvbi5FTkNPRElOR19FUlIgaXMgZXJyb3JDb2RlCi1bV29ya2VyXSAqIFJl
c29sdmluZyBhIFVSTCB3aXRoIG5vIHNsYXNoIGJldHdlZW4gcHJvdG9jb2wgYW5kIHR5cGUgKGJv
Z3VzIHBvcnQpCi1QQVNTIFtXb3JrZXJdIEZpbGVFeGNlcHRpb24uU0VDVVJJVFlfRVJSIGlzIGVy
cm9yQ29kZQotW1dvcmtlcl0gKiBSZXNvbHZlIGEgcGF0aCB1c2luZyBiYWNrc2xhc2hlcwotUEFT
UyBbV29ya2VyXSBleHBlY3RlZFBhdGggaXMgYWN0dWFsUGF0aAotUEFTUyBbV29ya2VyXSBpc0Zp
bGUgaXMgdHJ1ZQotW1dvcmtlcl0gKiBSZXNvbHZlIGEgZGlyZWN0b3J5Ci1QQVNTIFtXb3JrZXJd
IGV4cGVjdGVkUGF0aCBpcyBhY3R1YWxQYXRoCi1QQVNTIFtXb3JrZXJdIGlzRGlyZWN0b3J5IGlz
IHRydWUKLVtXb3JrZXJdICogUmVzb2x2ZSBhIHBhdGggdXNpbmcgYSB0cmFpbGluZyBzbGFzaAot
UEFTUyBbV29ya2VyXSBleHBlY3RlZFBhdGggaXMgYWN0dWFsUGF0aAotUEFTUyBbV29ya2VyXSBp
c0RpcmVjdG9yeSBpcyB0cnVlCi1bV29ya2VyXSAqIFJlc29sdmluZyBhIHBlcnNpc3RlbnQgVVJM
LgotUEFTUyBbV29ya2VyXSBleHBlY3RlZFBhdGggaXMgYWN0dWFsUGF0aAotUEFTUyBbV29ya2Vy
XSBpc0RpcmVjdG9yeSBpcyB0cnVlCi1bV29ya2VyXSBGaW5pc2hlZCBydW5uaW5nIHRlc3RzLgot
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KSW5kZXg6
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvZmlsZXN5c3RlbS93b3JrZXJzL3Jlc29sdmUtdXJsLXN5
bmMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2ZpbGVzeXN0ZW0v
d29ya2Vycy9yZXNvbHZlLXVybC1zeW5jLmh0bWwJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvZmlsZXN5c3RlbS93b3JrZXJzL3Jlc29sdmUtdXJsLXN5bmMuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMSwxNCArMCwwIEBACi08aHRtbD4KLTxoZWFkPgotPHNjcmlw
dCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0IHNyYz0iLi4vcmVzb3VyY2VzL2ZzLXdvcmtlci10ZXN0LXV0aWwuanMiPjwvc2NyaXB0Pgot
PC9oZWFkPgotPGJvZHk+Ci08cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KLTxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgotPHNjcmlwdD4KLXN0YXJ0V29ya2VyKCdzY3JpcHQtdGVzdHMvcmVzb2x2ZS11
cmwtc3luYy5qcycpOwotPC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2ZpbGVzeXN0ZW0vd29ya2Vycy9yZXNvbHZlLXVybC5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvZmlsZXN5c3RlbS93b3JrZXJzL3Jl
c29sdmUtdXJsLmh0bWwJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvZmlsZXN5c3RlbS93b3JrZXJzL3Jlc29sdmUtdXJsLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTEsMTQgKzAsMCBAQAotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNl
cy9mcy13b3JrZXItdGVzdC11dGlsLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHAg
aWQ9ImRlc2NyaXB0aW9uIj48L3A+Ci08ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KLTxzY3JpcHQ+
Ci1zdGFydFdvcmtlcignLi4vc2NyaXB0LXRlc3RzL3Jlc29sdmUtdXJpLmpzJyk7Ci08L3Njcmlw
dD4KLTxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvZmls
ZXN5c3RlbS93b3JrZXJzL3NjcmlwdC10ZXN0cy9URU1QTEFURS5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvZmlsZXN5c3RlbS93b3JrZXJzL3NjcmlwdC10ZXN0cy9U
RU1QTEFURS5odG1sCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2ZpbGVzeXN0ZW0vd29ya2Vycy9zY3JpcHQtdGVzdHMvVEVNUExBVEUuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMSwxNCArMCwwIEBACi08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii9qcy10
ZXN0LXJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4v
cmVzb3VyY2VzL2ZzLXdvcmtlci10ZXN0LXV0aWwuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJv
ZHk+Ci08cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KLTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgot
PHNjcmlwdD4KLXN0YXJ0V29ya2VyKCdZT1VSX0pTX0ZJTEVfSEVSRScpOwotPC9zY3JpcHQ+Ci08
c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2ZpbGVzeXN0
ZW0vd29ya2Vycy9zY3JpcHQtdGVzdHMvcmVzb2x2ZS11cmwtc3luYy5qcwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2ZpbGVzeXN0ZW0vd29ya2Vycy9zY3JpcHQtdGVzdHMv
cmVzb2x2ZS11cmwtc3luYy5qcwkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9maWxlc3lzdGVtL3dvcmtlcnMvc2NyaXB0LXRlc3RzL3Jlc29sdmUtdXJsLXN5bmMu
anMJKHdvcmtpbmcgY29weSkKQEAgLTEsMTk5ICswLDAgQEAKLWlmICh0aGlzLmltcG9ydFNjcmlw
dHMpIHsKLSAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi9yZXNvdXJjZXMvZnMtd29ya2VyLWNvbW1v
bi5qcycpOwotICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uL3Jlc291cmNlcy9mcy10ZXN0LXV0aWwu
anMnKTsKLX0KLQotZGVzY3JpcHRpb24oIlRlc3RzIHVzaW5nIHdlYmtpdFJlc29sdmVMb2NhbEZp
bGVTeXN0ZW1TeW5jVVJMIHRvIG9idGFpbiBhbiBFbnRyeSBmcm9tIGEgVVJMIik7Ci0KLXZhciB0
ZXN0RmlsZU5hbWUgPSAnL3Rlc3RGaWxlJzsKLXZhciBmaWxlU3lzdGVtID0gbnVsbDsKLQotdmFy
IGV4cGVjdGVkUGF0aCA9IG51bGw7Ci12YXIgYWN0dWFsUGF0aCA9IG51bGw7Ci12YXIgZXJyb3JD
b2RlID0gbnVsbDsKLQotZnVuY3Rpb24gY3JlYXRlVGVzdEZpbGUoKSB7Ci0gICAgcmV0dXJuIGZp
bGVTeXN0ZW0ucm9vdC5nZXRGaWxlKHRlc3RGaWxlTmFtZSwge2NyZWF0ZTp0cnVlfSk7Ci19Ci0K
LWZ1bmN0aW9uIGFzc2VydEVuY29kaW5nRXJyKGNvZGUpIHsKLSAgICBlcnJvckNvZGUgPSBjb2Rl
OwotICAgIHNob3VsZEJlKCJGaWxlRXhjZXB0aW9uLkVOQ09ESU5HX0VSUiIsICJlcnJvckNvZGUi
KTsKLX0KLQotZnVuY3Rpb24gYXNzZXJ0U2VjdXJpdHlFcnIoY29kZSkgewotICAgIGVycm9yQ29k
ZSA9IGNvZGU7Ci0gICAgc2hvdWxkQmUoIkZpbGVFeGNlcHRpb24uU0VDVVJJVFlfRVJSIiwgImVy
cm9yQ29kZSIpOwotfQotCi1mdW5jdGlvbiBhc3NlcnRQYXRoc01hdGNoKGV4cGVjdGVkLCBhY3R1
YWwpIHsKLSAgICBleHBlY3RlZFBhdGggPSBleHBlY3RlZDsKLSAgICBhY3R1YWxQYXRoID0gYWN0
dWFsOwotICAgIHNob3VsZEJlKCJleHBlY3RlZFBhdGgiLCAiYWN0dWFsUGF0aCIpOwotfQotCi12
YXIgaXNEaXJlY3RvcnkgPSBmYWxzZTsKLWZ1bmN0aW9uIGFzc2VydElzRGlyZWN0b3J5KGVudHJ5
KSB7Ci0gICAgaXNEaXJlY3RvcnkgPSBlbnRyeS5pc0RpcmVjdG9yeTsKLSAgICBzaG91bGRCZVRy
dWUoImlzRGlyZWN0b3J5Iik7Ci19Ci0KLXZhciBpc0ZpbGUgPSBmYWxzZTsKLWZ1bmN0aW9uIGFz
c2VydElzRmlsZShlbnRyeSkgewotICAgIGlzRmlsZSA9IGVudHJ5LmlzRmlsZTsKLSAgICBzaG91
bGRCZVRydWUoImlzRmlsZSIpOwotfQotCi0vLyBUZXN0IGJvZHkgZnVuY3Rpb25zIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotZnVuY3Rpb24g
cnVuQmFzaWNUZXN0KCkgewotICAgIGRlYnVnKCIqIFJlc29sdmluZyBhIGdlbmVyYXRlZCBVUkwu
Iik7Ci0gICAgZW50cnkgPSBjcmVhdGVUZXN0RmlsZSgpOwotICAgIHZhciBlID0gd2Via2l0UmVz
b2x2ZUxvY2FsRmlsZVN5c3RlbVN5bmNVUkwoZW50cnkudG9VUkwoKSk7Ci0gICAgYXNzZXJ0UGF0
aHNNYXRjaChlbnRyeS5mdWxsUGF0aCwgZS5mdWxsUGF0aCk7Ci0gICAgYXNzZXJ0SXNGaWxlKGUp
OwotfQotCi1mdW5jdGlvbiBydW5IYW5kbWFkZVVSTCgpIHsKLSAgICBkZWJ1ZygiKiBSZXNvbHZp
bmcgdGVzdCBmaWxlIGJ5IGhhbmQiKTsKLSAgICBlbnRyeSA9IGNyZWF0ZVRlc3RGaWxlKCk7Ci0g
ICAgdmFyIGUgPSB3ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lzdGVtU3luY1VSTCgiZmlsZXN5c3Rl
bTpodHRwOi8vMTI3LjAuMC4xOjgwMDAvdGVtcG9yYXJ5L3Rlc3RGaWxlIik7Ci0gICAgYXNzZXJ0
UGF0aHNNYXRjaCh0ZXN0RmlsZU5hbWUsIGUuZnVsbFBhdGgpOwotICAgIGFzc2VydElzRmlsZShl
KTsKLX0KLQotZnVuY3Rpb24gcnVuV3JvbmdEb21haW4oKSB7Ci0gICAgZGVidWcoIiogUmVzb2x2
aW5nIGEgVVJMIHdpdGggdGhlIHdyb25nIHNlY3VyaXR5IG9yaWdpbiAoZG9tYWluKSIpOwotICAg
IHRyeSB7Ci0gICAgICAgIHdlYmtpdFJlc29sdmVMb2NhbEZpbGVTeXN0ZW1TeW5jVVJMKCJmaWxl
c3lzdGVtOmh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC90ZW1wb3JhcnkvZm9vIik7Ci0gICAgICAgIHRl
c3RGYWlsZWQoKTsKLSAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgIGFzc2VydFNlY3VyaXR5RXJy
KGUuY29kZSk7Ci0gICAgfQotfQotCi1mdW5jdGlvbiBydW5Xcm9uZ1BvcnQoKSB7Ci0gICAgZGVi
dWcoIiogUmVzb2x2aW5nIGEgVVJMIHdpdGggdGhlIHdyb25nIHNlY3VyaXR5IG9yaWdpbiAocG9y
dCkiKTsKLSAgICB0cnkgewotICAgICAgICB3ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lzdGVtU3lu
Y1VSTCgiZmlsZXN5c3RlbTpodHRwOi8vMTI3LjAuMC4xOjgwODAvdGVtcG9yYXJ5L2ZvbyIpOwot
ICAgICAgICB0ZXN0RmFpbGVkKCk7Ci0gICAgfSBjYXRjaCAoZSkgewotICAgICAgICBhc3NlcnRT
ZWN1cml0eUVycihlLmNvZGUpOwotICAgIH0KLX0KLQotZnVuY3Rpb24gcnVuV3JvbmdTY2hlbWUo
KSB7Ci0gICAgZGVidWcoIiogUmVzb2x2aW5nIGEgVVJMIHdpdGggdGhlIHdyb25nIHNlY3VyaXR5
IG9yaWdpbiAoc2NoZW1lKSIpOwotICAgIHRyeSB7Ci0gICAgICAgIHdlYmtpdFJlc29sdmVMb2Nh
bEZpbGVTeXN0ZW1TeW5jVVJMKCJmaWxlc3lzdGVtOmh0dHBzOi8vMTI3LjAuMC4xOjgwMDAvdGVt
cG9yYXJ5L2ZvbyIpOwotICAgICAgICB0ZXN0RmFpbGVkKCk7Ci0gICAgfSBjYXRjaCAoZSkgewot
ICAgICAgICBhc3NlcnRTZWN1cml0eUVycihlLmNvZGUpOwotICAgIH0KLX0KLQotZnVuY3Rpb24g
cnVuQm9ndXNVUkwoKSB7Ci0gICAgZGVidWcoIiogUmVzb2x2aW5nIGEgY29tcGxldGVseSBib2d1
cyBVUkwuIik7Ci0gICAgdHJ5IHsKLSAgICAgICAgd2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3Rl
bVN5bmNVUkwoImZvbyIpOwotICAgICAgICB0ZXN0RmFpbGVkKCk7Ci0gICAgfSBjYXRjaCAoZSkg
ewotICAgICAgICBhc3NlcnRFbmNvZGluZ0VycihlLmNvZGUpOwotICAgIH0KLX0KLQotZnVuY3Rp
b24gcnVuV3JvbmdQcm90b2NvbCgpIHsKLSAgICBkZWJ1ZygiKiBSZXNvbHZpbmcgYSBVUkwgd2l0
aCB0aGUgd3JvbmcgcHJvdG9jb2wiKTsKLSAgICB0cnkgewotICAgICAgICB3ZWJraXRSZXNvbHZl
TG9jYWxGaWxlU3lzdGVtU3luY1VSTCgiaHR0cDovLzEyNy4wLjAuMTo4MDAwL2Zvby9iYXIvYmF6
Iik7Ci0gICAgICAgIHRlc3RGYWlsZWQoKTsKLSAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgIGFz
c2VydEVuY29kaW5nRXJyKGUuY29kZSk7Ci0gICAgfQotfQotCi1mdW5jdGlvbiBydW5Ob3RFbm91
Z2hTbGFzaGVzKCkgewotICAgIGRlYnVnKCIqIFJlc29sdmluZyBhIFVSTCB3aXRoIG5vIHNsYXNo
IGJldHdlZW4gdHlwZSBhbmQgZmlsZSIpOwotICAgIGVudHJ5ID0gY3JlYXRlVGVzdEZpbGUoKTsK
LSAgICB0cnkgewotICAgICAgICB3ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lzdGVtU3luY1VSTCgi
ZmlsZXN5c3RlbTpodHRwOi8vMTI3LjAuMC4xOjgwMDAvdGVtcG9yYXJ5dGVzdEZpbGUiKTsKLSAg
ICAgICAgdGVzdEZhaWxlZCgpOwotICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgYXNzZXJ0RW5j
b2RpbmdFcnIoZS5jb2RlKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHJ1bk5vdEVub3VnaFNsYXNo
ZXMyKCkgewotICAgIGRlYnVnKCIqIFJlc29sdmluZyBhIFVSTCB3aXRoIG5vIHNsYXNoIGJldHdl
ZW4gcHJvdG9jb2wgYW5kIHR5cGUgKGJvZ3VzIHBvcnQpIik7Ci0gICAgZW50cnkgPSBjcmVhdGVU
ZXN0RmlsZSgpOwotICAgIHRyeSB7Ci0gICAgICAgIHdlYmtpdFJlc29sdmVMb2NhbEZpbGVTeXN0
ZW1TeW5jVVJMKCJmaWxlc3lzdGVtOmh0dHA6Ly8xMjcuMC4wLjE6ODAwMHRlbXBvcmFyeS90ZXN0
RmlsZSIpOwotICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgYXNzZXJ0U2VjdXJpdHlFcnIoZS5j
b2RlKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHJ1blVzZUJhY2tTbGFzaGVzKCkgewotICAgIGRl
YnVnKCIqIFJlc29sdmUgYSBwYXRoIHVzaW5nIGJhY2tzbGFzaGVzIik7Ci0gICAgZW50cnkgPSBm
aWxlU3lzdGVtLnJvb3QuZ2V0RGlyZWN0b3J5KCJmb28iLCB7Y3JlYXRlOnRydWV9KS5nZXRGaWxl
KCJ0ZXN0RmlsZSIsIHtjcmVhdGU6dHJ1ZX0pOwotICAgIHZhciBlID0gd2Via2l0UmVzb2x2ZUxv
Y2FsRmlsZVN5c3RlbVN5bmNVUkwoImZpbGVzeXN0ZW06aHR0cDovLzEyNy4wLjAuMTo4MDAwL3Rl
bXBvcmFyeS9mb29cXHRlc3RGaWxlIik7Ci0gICAgYXNzZXJ0UGF0aHNNYXRjaCgiL2Zvby90ZXN0
RmlsZSIsIGUuZnVsbFBhdGgpOwotICAgIGFzc2VydElzRmlsZShlKTsKLX0KLQotZnVuY3Rpb24g
cnVuRGlyZWN0b3J5KCkgewotICAgIGRlYnVnKCIqIFJlc29sdmUgYSBkaXJlY3RvcnkiKTsKLSAg
ICBlbnRyeSA9IGZpbGVTeXN0ZW0ucm9vdC5nZXREaXJlY3RvcnkoImZvbyIsIHtjcmVhdGU6dHJ1
ZX0pOwotICAgIHZhciBlID0gd2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVN5bmNVUkwoImZp
bGVzeXN0ZW06aHR0cDovLzEyNy4wLjAuMTo4MDAwL3RlbXBvcmFyeS9mb28iKTsKLSAgICBhc3Nl
cnRQYXRoc01hdGNoKCIvZm9vIiwgZS5mdWxsUGF0aCk7Ci0gICAgYXNzZXJ0SXNEaXJlY3Rvcnko
ZSk7Ci19Ci0KLWZ1bmN0aW9uIHJ1bldpdGhUcmFpbGluZ1NsYXNoKCkgewotICAgIGRlYnVnKCIq
IFJlc29sdmUgYSBwYXRoIHVzaW5nIGEgdHJhaWxpbmcgc2xhc2giKTsKLSAgICBlbnRyeSA9IGZp
bGVTeXN0ZW0ucm9vdC5nZXREaXJlY3RvcnkoImZvbyIsIHtjcmVhdGU6dHJ1ZX0pOwotICAgIHZh
ciBlID0gd2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVN5bmNVUkwoImZpbGVzeXN0ZW06aHR0
cDovLzEyNy4wLjAuMTo4MDAwL3RlbXBvcmFyeS9mb28vIik7Ci0gICAgYXNzZXJ0UGF0aHNNYXRj
aCgiL2ZvbyIsIGUuZnVsbFBhdGgpOwotICAgIGFzc2VydElzRGlyZWN0b3J5KGUpOwotfQotCi1m
dW5jdGlvbiBydW5QZXJzaXN0ZW50VGVzdCgpIHsKLSAgICBkZWJ1ZygiKiBSZXNvbHZpbmcgYSBw
ZXJzaXN0ZW50IFVSTC4iKTsKLSAgICB2YXIgZnMgPSB3ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbVN5
bmMoUEVSU0lTVEVOVCwgMTAwKTsKLSAgICBlbnRyeSA9IHdlYmtpdFJlc29sdmVMb2NhbEZpbGVT
eXN0ZW1TeW5jVVJMKGZzLnJvb3QudG9VUkwoKSk7Ci0gICAgYXNzZXJ0UGF0aHNNYXRjaCgiLyIs
IGVudHJ5LmZ1bGxQYXRoKTsKLSAgICBhc3NlcnRJc0RpcmVjdG9yeShlbnRyeSk7Ci19Ci0KLS8v
IEVuZCBvZiB0ZXN0IGJvZHkgZnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQotCi12YXIgdGVzdHNMaXN0ID0gWwotICAgIHJ1bkJhc2ljVGVzdCwK
LSAgICBydW5IYW5kbWFkZVVSTCwKLSAgICBydW5Xcm9uZ0RvbWFpbiwKLSAgICBydW5Xcm9uZ1Bv
cnQsCi0gICAgcnVuV3JvbmdTY2hlbWUsCi0gICAgcnVuQm9ndXNVUkwsCi0gICAgcnVuV3JvbmdQ
cm90b2NvbCwKLSAgICBydW5Ob3RFbm91Z2hTbGFzaGVzLAotICAgIHJ1bk5vdEVub3VnaFNsYXNo
ZXMyLAotICAgIHJ1blVzZUJhY2tTbGFzaGVzLAotICAgIHJ1bkRpcmVjdG9yeSwKLSAgICBydW5X
aXRoVHJhaWxpbmdTbGFzaCwKLSAgICBydW5QZXJzaXN0ZW50VGVzdCwKLV07Ci12YXIgdGVzdENv
dW50ZXIgPSAwOwotCi1pZiAodGhpcy53ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbSkgewotICAgIGZp
bGVTeXN0ZW0gPSB3ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbVN5bmModGhpcy5URU1QT1JBUlksIDEw
MCk7Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0ZXN0c0xpc3QubGVuZ3RoOyArK2kpIHsKLSAg
ICAgIHRlc3RzTGlzdFtpXSgpOwotICAgICAgcmVtb3ZlQWxsSW5EaXJlY3RvcnlTeW5jKGZpbGVT
eXN0ZW0ucm9vdCk7Ci0gICAgICBlbnRyeSA9IG51bGw7Ci0gICAgfQotICAgIGRlYnVnKCJGaW5p
c2hlZCBydW5uaW5nIHRlc3RzLiIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfSBlbHNlCi0gICAg
ZGVidWcoIlRoaXMgdGVzdCByZXF1aXJlcyBGaWxlU3lzdGVtIEFQSSBzdXBwb3J0LiIpOwotCi12
YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVz
dHMvZmlsZXN5c3RlbS9uby1jYWNoZS1maWxlc3lzdGVtLXVybC1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9maWxlc3lzdGVtL25vLWNhY2hlLWZpbGVz
eXN0ZW0tdXJsLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9maWxlc3lzdGVtL25vLWNhY2hlLWZpbGVzeXN0ZW0tdXJsLWV4cGVjdGVkLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtMSArMCwwIEBACi1TVUNDRVNTCkluZGV4OiBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2ZpbGVzeXN0ZW0vbm8tY2FjaGUtZmlsZXN5c3RlbS11cmwuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2ZpbGVzeXN0ZW0vbm8tY2FjaGUtZmls
ZXN5c3RlbS11cmwuaHRtbAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9maWxlc3lzdGVtL25vLWNhY2hlLWZpbGVzeXN0ZW0tdXJsLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNTggKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLSAgPGJvZHk+Ci0g
ICAgPHAgaWQ9InJlc3VsdCI+Ci0gICAgPC9wPgotICAgIDxzY3JpcHQ+Ci0gICAgdmFyIGV4cGVj
dGVkID0gLTE7Ci0gICAgZnVuY3Rpb24gZ2V0RmlsZVdyaXRlcihjYWxsYmFjaykgewotICAgICAg
d2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0oUEVSU0lTVEVOVCwgMTAyNCwgZnVuY3Rpb24oZnMpIHsK
LSAgICAgICAgZnMucm9vdC5nZXRGaWxlKCIvY2FjaGluZy10ZXN0LmpzIiwge2NyZWF0ZTp0cnVl
fSwgZnVuY3Rpb24oZmlsZSkgewotICAgICAgICAgIGZpbGUuY3JlYXRlV3JpdGVyKGZ1bmN0aW9u
KHdyaXRlcikgewotICAgICAgICAgICAgd3JpdGVyLm9ud3JpdGVlbmQgPSBmdW5jdGlvbigpIHsK
LSAgICAgICAgICAgICAgd3JpdGVyLm9ud3JpdGVlbmQgPSB1bmRlZmluZWQ7Ci0gICAgICAgICAg
ICAgIGNhbGxiYWNrKGZpbGUsIHdyaXRlcik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB3
cml0ZXIudHJ1bmNhdGUoMCk7Ci0gICAgICAgICAgfSk7Ci0gICAgICAgIH0pOwotICAgICAgfSk7
Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gd3JpdGVSYW5kVG9GaWxlKHdyaXRlciwgY2FsbGJhY2sp
IHsKLSAgICAgIHZhciByYW5kID0gTWF0aC5yb3VuZChNYXRoLnJhbmRvbSgpICogMTAwMCk7Ci0g
ICAgICB3cml0ZXIub253cml0ZWVuZCA9IGZ1bmN0aW9uKCkgewotICAgICAgICBjYWxsYmFjayhy
YW5kKTsKLSAgICAgIH07Ci0gICAgICB3cml0ZXIud3JpdGUobmV3IEJsb2IoWydkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgicmVzdWx0IikuaW5uZXJIVE1MID0gKGV4cGVjdGVkID09ICcgKyByYW5k
ICsgJykgPyAiU1VDQ0VTUyIgOiAiRkFJTFVSRSI7J10sIHt0eXBlOid0ZXh0L3BsYWluJ30pKTsK
LSAgICB9Ci0KLSAgICBnZXRGaWxlV3JpdGVyKGZ1bmN0aW9uKGZpbGUsIHdyaXRlcikgewotICAg
ICAgd3JpdGVSYW5kVG9GaWxlKHdyaXRlciwgZnVuY3Rpb24ocmFuZCkgewotICAgICAgICB2YXIg
c2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7Ci0gICAgICAgIHNjcmlw
dC5zcmMgPSBmaWxlLnRvVVJMKCk7Ci0gICAgICAgIGlmICh3aW5kb3cubG9jYXRpb24uc2VhcmNo
ICE9ICc/cmVsb2FkPTEnKSB7Ci0gICAgICAgICAgc2NyaXB0Lm9ubG9hZCA9IGZ1bmN0aW9uKCkg
ewotICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSB3aW5kb3cubG9jYXRpb24uaHJl
ZiArICc/cmVsb2FkPTEnCi0gICAgICAgICAgfTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICBzY3JpcHQub25sb2FkID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBmaWxlLnJlbW92ZShm
dW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAg
ICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIH0pOwotICAgICAgICAgIH07Ci0gICAgICAgIH0KLSAgICAgICAgZXhwZWN0ZWQg
PSByYW5kOwotICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHNjcmlwdCk7Ci0gICAg
ICB9KTsKLSAgICB9KTsKLQotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci0gICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsK
LSAgICB9Ci0gICAgPC9zY3JpcHQ+Ci0gIDwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IExheW91dFRl
c3RzL2h0dHAvdGVzdHMvZmlsZXN5c3RlbS9yZXNvbHZlLXVyaS1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9maWxlc3lzdGVtL3Jlc29sdmUtdXJpLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9m
aWxlc3lzdGVtL3Jlc29sdmUtdXJpLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw0
MiArMCwwIEBACi1UZXN0cyB1c2luZyB3ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lzdGVtVVJMIHRv
IG9idGFpbiBhbiBFbnRyeSBmcm9tIGEgVVJMCi0KLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
LQotCi0qIFJlc29sdmluZyBhIGdlbmVyYXRlZCBVUkwuCi1QQVNTIGV4cGVjdGVkUGF0aCBpcyBh
Y3R1YWxQYXRoCi1QQVNTIGlzRmlsZSBpcyB0cnVlCi0qIFJlc29sdmluZyB0ZXN0IGZpbGUgYnkg
aGFuZAotUEFTUyBleHBlY3RlZFBhdGggaXMgYWN0dWFsUGF0aAotUEFTUyBpc0ZpbGUgaXMgdHJ1
ZQotKiBSZXNvbHZpbmcgYSBVUkwgd2l0aCB0aGUgd3Jvbmcgc2VjdXJpdHkgb3JpZ2luIChkb21h
aW4pCi1QQVNTIEZpbGVFcnJvci5TRUNVUklUWV9FUlIgaXMgZXJyb3JDb2RlCi0qIFJlc29sdmlu
ZyBhIFVSTCB3aXRoIHRoZSB3cm9uZyBzZWN1cml0eSBvcmlnaW4gKHBvcnQpCi1QQVNTIEZpbGVF
cnJvci5TRUNVUklUWV9FUlIgaXMgZXJyb3JDb2RlCi0qIFJlc29sdmluZyBhIFVSTCB3aXRoIHRo
ZSB3cm9uZyBzZWN1cml0eSBvcmlnaW4gKHNjaGVtZSkKLVBBU1MgRmlsZUVycm9yLlNFQ1VSSVRZ
X0VSUiBpcyBlcnJvckNvZGUKLSogUmVzb2x2aW5nIGEgY29tcGxldGVseSBib2d1cyBVUkwuCi1Q
QVNTIEZpbGVFcnJvci5FTkNPRElOR19FUlIgaXMgZXJyb3JDb2RlCi0qIFJlc29sdmluZyBhIFVS
TCB3aXRoIHRoZSB3cm9uZyBwcm90b2NvbAotUEFTUyBGaWxlRXJyb3IuRU5DT0RJTkdfRVJSIGlz
IGVycm9yQ29kZQotKiBSZXNvbHZpbmcgYSBVUkwgd2l0aCBubyBzbGFzaCBiZXR3ZWVuIHR5cGUg
YW5kIGZpbGUKLVBBU1MgRmlsZUVycm9yLkVOQ09ESU5HX0VSUiBpcyBlcnJvckNvZGUKLSogUmVz
b2x2aW5nIGEgVVJMIHdpdGggbm8gc2xhc2ggYmV0d2VlbiBwcm90b2NvbCBhbmQgdHlwZSAoYm9n
dXMgcG9ydCkKLVBBU1MgRmlsZUVycm9yLlNFQ1VSSVRZX0VSUiBpcyBlcnJvckNvZGUKLSogUmVz
b2x2ZSBhIHBhdGggdXNpbmcgYmFja3NsYXNoZXMKLVBBU1MgZXhwZWN0ZWRQYXRoIGlzIGFjdHVh
bFBhdGgKLVBBU1MgaXNGaWxlIGlzIHRydWUKLSogUmVzb2x2ZSBhIGRpcmVjdG9yeQotUEFTUyBl
eHBlY3RlZFBhdGggaXMgYWN0dWFsUGF0aAotUEFTUyBpc0RpcmVjdG9yeSBpcyB0cnVlCi0qIFJl
c29sdmUgYSBwYXRoIHVzaW5nIGEgdHJhaWxpbmcgc2xhc2gKLVBBU1MgZXhwZWN0ZWRQYXRoIGlz
IGFjdHVhbFBhdGgKLVBBU1MgaXNEaXJlY3RvcnkgaXMgdHJ1ZQotKiBSZXNvbHZpbmcgYSBwZXJz
aXN0ZW50IFVSTC4KLVBBU1MgZXhwZWN0ZWRQYXRoIGlzIGFjdHVhbFBhdGgKLVBBU1MgaXNEaXJl
Y3RvcnkgaXMgdHJ1ZQotRmluaXNoZWQgcnVubmluZyB0ZXN0cy4KLVBBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCkluZGV4OiBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2ZpbGVzeXN0ZW0vcmVzb2x2ZS11cmkuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2ZpbGVzeXN0ZW0vcmVzb2x2ZS11cmkuaHRtbAkocmV2aXNpb24gMTU2
NjkxKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9maWxlc3lzdGVtL3Jlc29sdmUtdXJpLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTIgKzAsMCBAQAotPGh0bWw+Ci08aGVhZD4KLTxzY3Jp
cHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPHNj
cmlwdCBzcmM9InJlc291cmNlcy9mcy10ZXN0LXV0aWwuanMiPjwvc2NyaXB0PgotPC9oZWFkPgot
PGJvZHk+Ci08cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KLTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgotPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9yZXNvbHZlLXVyaS5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2ZpbGVzeXN0
ZW0vcmVzb3VyY2VzL2ZzLXRlc3QtdXRpbC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZzLXRlc3QtdXRpbC5qcwkocmV2aXNpb24g
MTU2NjkxKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9maWxlc3lzdGVtL3Jlc291cmNlcy9m
cy10ZXN0LXV0aWwuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsNTQgKzAsMCBAQAotZnVuY3Rpb24g
YmluZENhbGxiYWNrKG9iaiwgY2FsbGJhY2ssIGFyZzEsIGFyZzIsIGFyZzMpCi17Ci0gICAgcmV0
dXJuIGZ1bmN0aW9uKGFyZykgewotICAgICAgICBpZiAoYXJnID09IHVuZGVmaW5lZCkKLSAgICAg
ICAgICAgIGNhbGxiYWNrLmFwcGx5KG9iaiwgW2FyZzEsIGFyZzIsIGFyZzNdKTsKLSAgICAgICAg
ZWxzZQotICAgICAgICAgICAgY2FsbGJhY2suYXBwbHkob2JqLCBbYXJnLCBhcmcxLCBhcmcyLCBh
cmczXSk7Ci0gICAgfTsKLX0KLQotLy8gUmVtb3ZlIGV2ZXJ5dGhpbmcgaW4gdGhlIGdpdmVuIGRp
cmVjdG9yeS4KLWZ1bmN0aW9uIHJlbW92ZUFsbEluRGlyZWN0b3J5KGRpcmVjdG9yeSwgc3VjY2Vz
c0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKSB7Ci0gICAgdmFyIFJlbW92ZUFsbEluRGlyZWN0b3J5
SGVscGVyID0gZnVuY3Rpb24oc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKSB7Ci0gICAg
ICAgIHRoaXMuZW50cmllc0NvdW50ID0gMDsKLSAgICAgICAgdGhpcy5kb25lID0gZmFsc2U7Ci0g
ICAgICAgIHRoaXMucmVhZGVyID0gbnVsbDsKLSAgICAgICAgdGhpcy5zdWNjZXNzQ2FsbGJhY2sg
PSBzdWNjZXNzQ2FsbGJhY2s7Ci0gICAgICAgIHRoaXMuZXJyb3JDYWxsYmFjayA9IGVycm9yQ2Fs
bGJhY2s7Ci0KLSAgICAgICAgdGhpcy5lbnRyeVJlbW92ZWRDYWxsYmFjayA9IGJpbmRDYWxsYmFj
ayh0aGlzLCBmdW5jdGlvbihlbnRyeSkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKC0tdGhp
cy5lbnRyaWVzQ291bnQgPT0gMCAmJiB0aGlzLnN1Y2Nlc3NDYWxsYmFjayAmJiB0aGlzLmRvbmUp
IHsKLSAgICAgICAgICAgICAgICB0aGlzLnN1Y2Nlc3NDYWxsYmFjaygpOwotICAgICAgICAgICAg
ICAgIHRoaXMuc3VjY2Vzc0NhbGxiYWNrID0gbnVsbDsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fSk7Ci0KLSAgICAgICAgdGhpcy5lbnRyaWVzQ2FsbGJhY2sgPSBiaW5kQ2FsbGJhY2sodGhpcywg
ZnVuY3Rpb24oZW50cmllcykKLSAgICAgICAgewotICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBlbnRyaWVzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICAgICAgdGhpcy5lbnRyaWVz
Q291bnQrKzsKLSAgICAgICAgICAgICAgICBpZiAoZW50cmllc1tpXS5pc0RpcmVjdG9yeSkKLSAg
ICAgICAgICAgICAgICAgICAgZW50cmllc1tpXS5yZW1vdmVSZWN1cnNpdmVseSh0aGlzLmVudHJ5
UmVtb3ZlZENhbGxiYWNrLCB0aGlzLmVycm9yQ2FsbGJhY2spOwotICAgICAgICAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgICAgICAgICAgZW50cmllc1tpXS5yZW1vdmUodGhpcy5lbnRyeVJlbW92
ZWRDYWxsYmFjaywgdGhpcy5lcnJvckNhbGxiYWNrKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIGlmIChlbnRyaWVzLmxlbmd0aCkKLSAgICAgICAgICAgICAgICB0aGlzLnJlYWRlci5yZWFk
RW50cmllcyh0aGlzLmVudHJpZXNDYWxsYmFjaywgdGhpcy5lcnJvckNhbGxiYWNrKTsKLSAgICAg
ICAgICAgIGVsc2UgaWYgKHRoaXMuZW50cmllc0NvdW50ID4gMCkKLSAgICAgICAgICAgICAgICB0
aGlzLmRvbmUgPSB0cnVlOwotICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5zdWNjZXNzQ2FsbGJh
Y2spCi0gICAgICAgICAgICAgICAgdGhpcy5zdWNjZXNzQ2FsbGJhY2soKTsKLSAgICAgICAgfSk7
Ci0KLSAgICAgICAgdGhpcy5yZW1vdmVBbGxJbkRpcmVjdG9yeSA9IGZ1bmN0aW9uKGRpcmVjdG9y
eSkKLSAgICAgICAgewotICAgICAgICAgICAgdGhpcy5yZWFkZXIgPSBkaXJlY3RvcnkuY3JlYXRl
UmVhZGVyKCk7Ci0gICAgICAgICAgICB0aGlzLnJlYWRlci5yZWFkRW50cmllcyh0aGlzLmVudHJp
ZXNDYWxsYmFjaywgdGhpcy5lcnJvckNhbGxiYWNrKTsKLSAgICAgICAgfTsKLSAgICB9OwotCi0g
ICAgdmFyIGhlbHBlciA9IG5ldyBSZW1vdmVBbGxJbkRpcmVjdG9yeUhlbHBlcihzdWNjZXNzQ2Fs
bGJhY2ssIGVycm9yQ2FsbGJhY2spOwotICAgIGhlbHBlci5yZW1vdmVBbGxJbkRpcmVjdG9yeShk
aXJlY3RvcnkpOwotfQpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9maWxlc3lzdGVtL3Jl
c291cmNlcy9mcy13b3JrZXItY29tbW9uLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZnMtd29ya2VyLWNvbW1vbi5qcwkocmV2aXNp
b24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9maWxlc3lzdGVtL3Jlc291cmNl
cy9mcy13b3JrZXItY29tbW9uLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDU2ICswLDAgQEAKLWZ1
bmN0aW9uIGRlYnVnKG1lc3NhZ2UpCi17Ci0gICAgcG9zdE1lc3NhZ2UoIk1FU0c6IiArIG1lc3Nh
Z2UpOwotfQotCi1mdW5jdGlvbiBmaW5pc2hKU1Rlc3QoKQotewotICAgIHBvc3RNZXNzYWdlKCJE
T05FOiIpOwotfQotCi1mdW5jdGlvbiBkZXNjcmlwdGlvbihtZXNzYWdlKQotewotICAgIHBvc3RN
ZXNzYWdlKCdERVNDOicgKyBtZXNzYWdlKTsKLX0KLQotZnVuY3Rpb24gdGVzdFBhc3NlZChtc2cp
IHsKLSAgICBwb3N0TWVzc2FnZSgiUEFTUzoiICsgbXNnKTsKLX0KLQotZnVuY3Rpb24gdGVzdEZh
aWxlZChtc2cpIHsKLSAgICBwb3N0TWVzc2FnZSgiRkFJTDoiICsgbXNnKTsKLX0KLQotZnVuY3Rp
b24gc2hvdWxkQmUoX2EsIF9iKQotewotICBpZiAodHlwZW9mIF9hICE9ICJzdHJpbmciIHx8IHR5
cGVvZiBfYiAhPSAic3RyaW5nIikKLSAgICBkZWJ1ZygiV0FSTjogc2hvdWxkQmUoKSBleHBlY3Rz
IHN0cmluZyBhcmd1bWVudHMiKTsKLSAgdmFyIF9hdiA9IGV2YWwoX2EpOwotICB2YXIgX2J2ID0g
ZXZhbChfYik7Ci0gIGlmIChfYXYgPT09IF9idikKLSAgICB0ZXN0UGFzc2VkKF9hICsgIiBpcyAi
ICsgX2IpOwotICBlbHNlCi0gICAgdGVzdEZhaWxlZChfYSArICIgc2hvdWxkIGJlICIgKyBfYnYg
KyAiIChvZiB0eXBlICIgKyB0eXBlb2YgX2J2ICsgIikuIFdhcyAiICsgX2F2ICsgIiAob2YgdHlw
ZSAiICsgdHlwZW9mIF9hdiArICIpLiIpOwotfQotCi1mdW5jdGlvbiBzaG91bGRCZVRydWUoX2Ep
IHsgc2hvdWxkQmUoX2EsICJ0cnVlIik7IH0KLQotZnVuY3Rpb24gcmVtb3ZlQWxsSW5EaXJlY3Rv
cnlTeW5jKGRpcmVjdG9yeSkgewotICAgIGlmICghZGlyZWN0b3J5KQotICAgICAgICByZXR1cm47
Ci0gICAgdmFyIHJlYWRlciA9IGRpcmVjdG9yeS5jcmVhdGVSZWFkZXIoKTsKLSAgICBkbyB7Ci0g
ICAgICAgIHZhciBlbnRyaWVzID0gcmVhZGVyLnJlYWRFbnRyaWVzKCk7Ci0gICAgICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgZW50cmllcy5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgaWYgKGVu
dHJpZXNbaV0uaXNEaXJlY3RvcnkpCi0gICAgICAgICAgICAgICAgZW50cmllc1tpXS5yZW1vdmVS
ZWN1cnNpdmVseSgpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGVudHJpZXNb
aV0ucmVtb3ZlKCk7Ci0gICAgICAgIH0KLSAgICB9IHdoaWxlIChlbnRyaWVzLmxlbmd0aCk7Ci19
Ci0KLWlmICh0aGlzLmltcG9ydFNjcmlwdHMgJiYgIXRoaXMucmVxdWVzdEZpbGVTeXN0ZW0gJiYg
IXRoaXMud2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0pIHsKLSAgICBkZWJ1ZygnVGhpcyB0ZXN0IHJl
cXVpcmVzIEZpbGVTeXN0ZW0gQVBJLicpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQpJbmRleDog
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9maWxlc3lzdGVtL3Jlc291cmNlcy9mcy13b3JrZXItdGVz
dC11dGlsLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvZmlsZXN5c3Rl
bS9yZXNvdXJjZXMvZnMtd29ya2VyLXRlc3QtdXRpbC5qcwkocmV2aXNpb24gMTU2NjkxKQorKysg
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9maWxlc3lzdGVtL3Jlc291cmNlcy9mcy13b3JrZXItdGVz
dC11dGlsLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMyICswLDAgQEAKLXdpbmRvdy5qc1Rlc3RJ
c0FzeW5jID0gdHJ1ZTsKLQotZnVuY3Rpb24gc3RhcnRXb3JrZXIodGVzdFNjcmlwdFVSTCkKLXsK
LSAgICBkZWJ1ZygnU3RhcnRpbmcgd29ya2VyOiAnICsgdGVzdFNjcmlwdFVSTCk7Ci0gICAgdmFy
IHdvcmtlciA9IG5ldyBXb3JrZXIodGVzdFNjcmlwdFVSTCk7Ci0gICAgd29ya2VyLm9ubWVzc2Fn
ZSA9IGZ1bmN0aW9uKGV2ZW50KQotICAgIHsKLSAgICAgICAgaWYgKGV2ZW50LmRhdGEubGVuZ3Ro
IDwgNSB8fCBldmVudC5kYXRhLmNoYXJBdCg0KSAhPSAnOicpIHsKLSAgICAgICAgICAgIGRlYnVn
KCJHb3QgaW52YWxpZCBtZXNzYWdlIGZyb20gd29ya2VyOiIgKyAoZXZlbnQuZGF0YSA/IGV2ZW50
LmRhdGEgOiAibnVsbCIpKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHZhciBjb2Rl
ID0gZXZlbnQuZGF0YS5zdWJzdHJpbmcoMCwgNCk7Ci0gICAgICAgICAgICB2YXIgcGF5bG9hZCA9
ICJbV29ya2VyXSAiICsgZXZlbnQuZGF0YS5zdWJzdHJpbmcoNSk7Ci0gICAgICAgICAgICBpZiAo
Y29kZSA9PSAiUEFTUyIpCi0gICAgICAgICAgICAgICAgdGVzdFBhc3NlZChwYXlsb2FkKTsKLSAg
ICAgICAgICAgIGVsc2UgaWYgKGNvZGUgPT0gIkZBSUwiKQotICAgICAgICAgICAgICAgIHRlc3RG
YWlsZWQocGF5bG9hZCk7Ci0gICAgICAgICAgICBlbHNlIGlmIChjb2RlID09ICJERVNDIikKLSAg
ICAgICAgICAgICAgICBkZXNjcmlwdGlvbihwYXlsb2FkKTsKLSAgICAgICAgICAgIGVsc2UgaWYg
KGNvZGUgPT0gIkRPTkUiKQotICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgICAg
ICAgICAgZWxzZSBpZiAoY29kZSA9PSAiTUVTRyIpCi0gICAgICAgICAgICAgICAgZGVidWcocGF5
bG9hZCk7Ci0gICAgICAgIH0KLSAgICB9OwotCi0gICAgd29ya2VyLm9uZXJyb3IgPSBmdW5jdGlv
bihldmVudCkKLSAgICB7Ci0gICAgICAgIGRlYnVnKCdHb3QgZXJyb3IgZnJvbSB3b3JrZXI6ICcg
KyBldmVudC5tZXNzYWdlKTsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfQotfQpJbmRl
eDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9maWxlc3lzdGVtL3NjcmlwdC10ZXN0cy9URU1QTEFU
RS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvZmlsZXN5c3RlbS9z
Y3JpcHQtdGVzdHMvVEVNUExBVEUuaHRtbAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9maWxlc3lzdGVtL3NjcmlwdC10ZXN0cy9URU1QTEFURS5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDEyICswLDAgQEAKLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0i
L2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvZnMtdGVzdC11dGlsLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5Pgot
PHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Ci08ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KLTxzY3Jp
cHQgc3JjPSJZT1VSX0pTX0ZJTEVfSEVSRSI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL2pzLXRl
c3QtcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+
CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2ZpbGVzeXN0ZW0vc2NyaXB0LXRlc3RzL3Jl
c29sdmUtdXJpLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvZmlsZXN5
c3RlbS9zY3JpcHQtdGVzdHMvcmVzb2x2ZS11cmkuanMJKHJldmlzaW9uIDE1NjY5MSkKKysrIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvZmlsZXN5c3RlbS9zY3JpcHQtdGVzdHMvcmVzb2x2ZS11cmku
anMJKHdvcmtpbmcgY29weSkKQEAgLTEsMjA2ICswLDAgQEAKLWlmICh0aGlzLmltcG9ydFNjcmlw
dHMpIHsKLSAgICBpbXBvcnRTY3JpcHRzKCcuLi9yZXNvdXJjZXMvZnMtd29ya2VyLWNvbW1vbi5q
cycpOwotICAgIGltcG9ydFNjcmlwdHMoJy4uL3Jlc291cmNlcy9mcy10ZXN0LXV0aWwuanMnKTsK
LX0KLQotZGVzY3JpcHRpb24oIlRlc3RzIHVzaW5nIHdlYmtpdFJlc29sdmVMb2NhbEZpbGVTeXN0
ZW1VUkwgdG8gb2J0YWluIGFuIEVudHJ5IGZyb20gYSBVUkwiKTsKLQotdmFyIHRlc3RGaWxlTmFt
ZSA9ICcvdGVzdEZpbGUnOwotdmFyIGZpbGVTeXN0ZW0gPSBudWxsOwotdmFyIGV4cGVjdGVkUGF0
aCA9IG51bGw7Ci12YXIgYWN0dWFsUGF0aCA9IG51bGw7Ci12YXIgZXJyb3JDb2RlID0gbnVsbDsK
LQotZnVuY3Rpb24gZXJyb3JDYWxsYmFjayhlcnJvcikgewotICAgIGlmIChlcnJvciAmJiBlcnJv
ci5jb2RlKQotICAgICAgICBkZWJ1ZygiRXJyb3Igb2NjdXJyZWQ6ICIgKyBlcnJvci5jb2RlKTsK
LSAgICB0ZXN0RmFpbGVkKCJCYWlsaW5nIG91dCBlYXJseSIpOwotICAgIGZpbmlzaEpTVGVzdCgp
OwotfQotCi1mdW5jdGlvbiBleHBlY3RTZWN1cml0eUVyckFuZFJ1bk5leHQoZXJyb3IpIHsKLSAg
ICBlcnJvckNvZGUgPSBlcnJvci5jb2RlOwotICAgIHNob3VsZEJlKCJGaWxlRXJyb3IuU0VDVVJJ
VFlfRVJSIiwgImVycm9yQ29kZSIpOwotICAgIGNsZWFudXBBbmRSdW5OZXh0KCk7Ci19Ci0KLWZ1
bmN0aW9uIGV4cGVjdEVuY29kaW5nRXJyQW5kUnVuTmV4dChlcnJvcikgewotICAgIGVycm9yQ29k
ZSA9IGVycm9yLmNvZGU7Ci0gICAgc2hvdWxkQmUoIkZpbGVFcnJvci5FTkNPRElOR19FUlIiLCAi
ZXJyb3JDb2RlIik7Ci0gICAgY2xlYW51cEFuZFJ1bk5leHQoKTsKLX0KLQotZnVuY3Rpb24gY3Jl
YXRlVGVzdEZpbGUoY2FsbGJhY2spIHsKLSAgICBmaWxlU3lzdGVtLnJvb3QuZ2V0RmlsZSh0ZXN0
RmlsZU5hbWUsIHtjcmVhdGU6dHJ1ZX0sIGNhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsKLX0KLQot
ZnVuY3Rpb24gYXNzZXJ0UGF0aHNNYXRjaChleHBlY3RlZCwgYWN0dWFsKSB7Ci0gICAgZXhwZWN0
ZWRQYXRoID0gZXhwZWN0ZWQ7Ci0gICAgYWN0dWFsUGF0aCA9IGFjdHVhbDsKLSAgICBzaG91bGRC
ZSgiZXhwZWN0ZWRQYXRoIiwgImFjdHVhbFBhdGgiKTsKLX0KLQotdmFyIGlzRGlyZWN0b3J5ID0g
ZmFsc2U7Ci1mdW5jdGlvbiBhc3NlcnRJc0RpcmVjdG9yeShlbnRyeSkgewotICAgIGlzRGlyZWN0
b3J5ID0gZW50cnkuaXNEaXJlY3Rvcnk7Ci0gICAgc2hvdWxkQmVUcnVlKCJpc0RpcmVjdG9yeSIp
OwotfQotCi12YXIgaXNGaWxlID0gZmFsc2U7Ci1mdW5jdGlvbiBhc3NlcnRJc0ZpbGUoZW50cnkp
IHsKLSAgICBpc0ZpbGUgPSBlbnRyeS5pc0ZpbGU7Ci0gICAgc2hvdWxkQmVUcnVlKCJpc0ZpbGUi
KTsKLX0KLQotLy8gVGVzdCBib2R5IGZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLWZ1bmN0aW9uIHJ1bkJhc2ljVGVzdCgpIHsK
LSAgICBkZWJ1ZygiKiBSZXNvbHZpbmcgYSBnZW5lcmF0ZWQgVVJMLiIpOwotICAgIGNyZWF0ZVRl
c3RGaWxlKGZ1bmN0aW9uKGVudHJ5KSB7Ci0gICAgICAgIHdlYmtpdFJlc29sdmVMb2NhbEZpbGVT
eXN0ZW1VUkwoZW50cnkudG9VUkwoKSwgZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgYXNzZXJ0
UGF0aHNNYXRjaChlbnRyeS5mdWxsUGF0aCwgZS5mdWxsUGF0aCk7Ci0gICAgICAgICAgICBhc3Nl
cnRJc0ZpbGUoZSk7Ci0gICAgICAgICAgICBjbGVhbnVwQW5kUnVuTmV4dCgpOwotICAgICAgICB9
LCBlcnJvckNhbGxiYWNrKTsKLSAgICB9KTsKLX0KLQotZnVuY3Rpb24gcnVuSGFuZG1hZGVVUkwo
KSB7Ci0gICAgZGVidWcoIiogUmVzb2x2aW5nIHRlc3QgZmlsZSBieSBoYW5kIik7Ci0gICAgY3Jl
YXRlVGVzdEZpbGUoZnVuY3Rpb24oZW50cnkpIHsKLSAgICAgICAgd2Via2l0UmVzb2x2ZUxvY2Fs
RmlsZVN5c3RlbVVSTCgiZmlsZXN5c3RlbTpodHRwOi8vMTI3LjAuMC4xOjgwMDAvdGVtcG9yYXJ5
L3Rlc3RGaWxlIiwgZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgYXNzZXJ0UGF0aHNNYXRjaCh0
ZXN0RmlsZU5hbWUsIGUuZnVsbFBhdGgpOwotICAgICAgICAgICAgYXNzZXJ0SXNGaWxlKGUpOwot
ICAgICAgICAgICAgY2xlYW51cEFuZFJ1bk5leHQoKTsKLSAgICAgICAgfSwgZXJyb3JDYWxsYmFj
ayk7Ci0gICAgfSk7Ci19Ci0KLWZ1bmN0aW9uIHJ1bldyb25nRG9tYWluKCkgewotICAgIGRlYnVn
KCIqIFJlc29sdmluZyBhIFVSTCB3aXRoIHRoZSB3cm9uZyBzZWN1cml0eSBvcmlnaW4gKGRvbWFp
bikiKTsKLSAgICB3ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lzdGVtVVJMKCJmaWxlc3lzdGVtOmh0
dHA6Ly9sb2NhbGhvc3Q6ODAwMC90ZW1wb3JhcnkvZm9vIiwgZXJyb3JDYWxsYmFjaywgZXhwZWN0
U2VjdXJpdHlFcnJBbmRSdW5OZXh0KTsKLX0KLQotZnVuY3Rpb24gcnVuV3JvbmdQb3J0KCkgewot
ICAgIGRlYnVnKCIqIFJlc29sdmluZyBhIFVSTCB3aXRoIHRoZSB3cm9uZyBzZWN1cml0eSBvcmln
aW4gKHBvcnQpIik7Ci0gICAgd2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVVSTCgiZmlsZXN5
c3RlbTpodHRwOi8vMTI3LjAuMC4xOjgwODAvdGVtcG9yYXJ5L2ZvbyIsIGVycm9yQ2FsbGJhY2ss
IGV4cGVjdFNlY3VyaXR5RXJyQW5kUnVuTmV4dCk7Ci19Ci0KLWZ1bmN0aW9uIHJ1bldyb25nU2No
ZW1lKCkgewotICAgIGRlYnVnKCIqIFJlc29sdmluZyBhIFVSTCB3aXRoIHRoZSB3cm9uZyBzZWN1
cml0eSBvcmlnaW4gKHNjaGVtZSkiKTsKLSAgICB3ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lzdGVt
VVJMKCJmaWxlc3lzdGVtOmh0dHBzOi8vMTI3LjAuMC4xOjgwMDAvdGVtcG9yYXJ5L2ZvbyIsIGVy
cm9yQ2FsbGJhY2ssIGV4cGVjdFNlY3VyaXR5RXJyQW5kUnVuTmV4dCk7Ci19Ci0KLWZ1bmN0aW9u
IHJ1bkJvZ3VzVVJMKCkgewotICAgIGRlYnVnKCIqIFJlc29sdmluZyBhIGNvbXBsZXRlbHkgYm9n
dXMgVVJMLiIpOwotICAgIHdlYmtpdFJlc29sdmVMb2NhbEZpbGVTeXN0ZW1VUkwoImZvbyIsIGVy
cm9yQ2FsbGJhY2ssIGV4cGVjdEVuY29kaW5nRXJyQW5kUnVuTmV4dCk7Ci19Ci0KLWZ1bmN0aW9u
IHJ1bldyb25nUHJvdG9jb2woKSB7Ci0gICAgZGVidWcoIiogUmVzb2x2aW5nIGEgVVJMIHdpdGgg
dGhlIHdyb25nIHByb3RvY29sIik7Ci0gICAgd2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVVS
TCgiaHR0cDovLzEyNy4wLjAuMTo4MDAwL2Zvby9iYXIvYmF6IiwgZXJyb3JDYWxsYmFjaywgZXhw
ZWN0RW5jb2RpbmdFcnJBbmRSdW5OZXh0KTsKLX0KLQotZnVuY3Rpb24gcnVuTm90RW5vdWdoU2xh
c2hlcygpIHsKLSAgICBkZWJ1ZygiKiBSZXNvbHZpbmcgYSBVUkwgd2l0aCBubyBzbGFzaCBiZXR3
ZWVuIHR5cGUgYW5kIGZpbGUiKTsKLSAgICBjcmVhdGVUZXN0RmlsZShmdW5jdGlvbihlbnRyeSkg
ewotICAgICAgICB3ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lzdGVtVVJMKCJmaWxlc3lzdGVtOmh0
dHA6Ly8xMjcuMC4wLjE6ODAwMC90ZW1wb3Jhcnl0ZXN0RmlsZSIsIGVycm9yQ2FsbGJhY2ssIGV4
cGVjdEVuY29kaW5nRXJyQW5kUnVuTmV4dCk7Ci0gICAgfSk7Ci19Ci0KLWZ1bmN0aW9uIHJ1bk5v
dEVub3VnaFNsYXNoZXMyKCkgewotICAgIGRlYnVnKCIqIFJlc29sdmluZyBhIFVSTCB3aXRoIG5v
IHNsYXNoIGJldHdlZW4gcHJvdG9jb2wgYW5kIHR5cGUgKGJvZ3VzIHBvcnQpIik7Ci0gICAgY3Jl
YXRlVGVzdEZpbGUoZnVuY3Rpb24oZW50cnkpIHsKLSAgICAgICAgd2Via2l0UmVzb2x2ZUxvY2Fs
RmlsZVN5c3RlbVVSTCgiZmlsZXN5c3RlbTpodHRwOi8vMTI3LjAuMC4xOjgwMDB0ZW1wb3Jhcnkv
dGVzdEZpbGUiLCBlcnJvckNhbGxiYWNrLCBleHBlY3RTZWN1cml0eUVyckFuZFJ1bk5leHQpOwot
ICAgIH0pOwotfQotCi1mdW5jdGlvbiBydW5Vc2VCYWNrU2xhc2hlcygpIHsKLSAgICBkZWJ1Zygi
KiBSZXNvbHZlIGEgcGF0aCB1c2luZyBiYWNrc2xhc2hlcyIpOwotICAgIGZpbGVTeXN0ZW0ucm9v
dC5nZXREaXJlY3RvcnkoImZvbyIsIHtjcmVhdGU6dHJ1ZX0sIGZ1bmN0aW9uKGVudHJ5KSB7Ci0g
ICAgICAgIGVudHJ5LmdldEZpbGUoInRlc3RGaWxlIiwge2NyZWF0ZTp0cnVlfSwgZnVuY3Rpb24o
ZikgewotICAgICAgICAgICAgd2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVVSTCgiZmlsZXN5
c3RlbTpodHRwOi8vMTI3LjAuMC4xOjgwMDAvdGVtcG9yYXJ5L2Zvb1xcdGVzdEZpbGUiLCBmdW5j
dGlvbihlKSB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0UGF0aHNNYXRjaCgiL2Zvby90ZXN0Rmls
ZSIsIGUuZnVsbFBhdGgpOwotICAgICAgICAgICAgICAgIGFzc2VydElzRmlsZShlKTsKLSAgICAg
ICAgICAgICAgICBjbGVhbnVwQW5kUnVuTmV4dCgpOwotICAgICAgICAgICAgfSwgZXJyb3JDYWxs
YmFjayk7Ci0gICAgICAgIH0sIGVycm9yQ2FsbGJhY2spOwotICAgIH0sIGVycm9yQ2FsbGJhY2sp
OwotfQotCi1mdW5jdGlvbiBydW5EaXJlY3RvcnkoKSB7Ci0gICAgZGVidWcoIiogUmVzb2x2ZSBh
IGRpcmVjdG9yeSIpOwotICAgIGZpbGVTeXN0ZW0ucm9vdC5nZXREaXJlY3RvcnkoImZvbyIsIHtj
cmVhdGU6dHJ1ZX0sIGZ1bmN0aW9uKGVudHJ5KSB7Ci0gICAgICAgIHdlYmtpdFJlc29sdmVMb2Nh
bEZpbGVTeXN0ZW1VUkwoImZpbGVzeXN0ZW06aHR0cDovLzEyNy4wLjAuMTo4MDAwL3RlbXBvcmFy
eS9mb28iLCBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICBhc3NlcnRQYXRoc01hdGNoKCIvZm9v
IiwgZS5mdWxsUGF0aCk7Ci0gICAgICAgICAgICBhc3NlcnRJc0RpcmVjdG9yeShlKTsKLSAgICAg
ICAgICAgIGNsZWFudXBBbmRSdW5OZXh0KCk7Ci0gICAgICAgIH0sIGVycm9yQ2FsbGJhY2spOwot
ICAgIH0sIGVycm9yQ2FsbGJhY2spOwotfQotCi1mdW5jdGlvbiBydW5XaXRoVHJhaWxpbmdTbGFz
aCgpIHsKLSAgICBkZWJ1ZygiKiBSZXNvbHZlIGEgcGF0aCB1c2luZyBhIHRyYWlsaW5nIHNsYXNo
Iik7Ci0gICAgZmlsZVN5c3RlbS5yb290LmdldERpcmVjdG9yeSgiZm9vIiwge2NyZWF0ZTp0cnVl
fSwgZnVuY3Rpb24oZW50cnkpIHsKLSAgICAgICAgd2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3Rl
bVVSTCgiZmlsZXN5c3RlbTpodHRwOi8vMTI3LjAuMC4xOjgwMDAvdGVtcG9yYXJ5L2Zvby8iLCBm
dW5jdGlvbihlKSB7Ci0gICAgICAgICAgICBhc3NlcnRQYXRoc01hdGNoKCIvZm9vIiwgZS5mdWxs
UGF0aCk7Ci0gICAgICAgICAgICBhc3NlcnRJc0RpcmVjdG9yeShlKTsKLSAgICAgICAgICAgIGNs
ZWFudXBBbmRSdW5OZXh0KCk7Ci0gICAgICAgIH0sIGVycm9yQ2FsbGJhY2spOwotICAgIH0sIGVy
cm9yQ2FsbGJhY2spOwotfQotCi1mdW5jdGlvbiBydW5QZXJzaXN0ZW50VGVzdCgpIHsKLSAgICBk
ZWJ1ZygiKiBSZXNvbHZpbmcgYSBwZXJzaXN0ZW50IFVSTC4iKTsKLSAgICB3ZWJraXRSZXF1ZXN0
RmlsZVN5c3RlbShQRVJTSVNURU5ULCAxMDAsIGZ1bmN0aW9uKGZzKSB7Ci0gICAgICAgIHdlYmtp
dFJlc29sdmVMb2NhbEZpbGVTeXN0ZW1VUkwoZnMucm9vdC50b1VSTCgpLCBmdW5jdGlvbihlbnRy
eSkgewotICAgICAgICAgICAgYXNzZXJ0UGF0aHNNYXRjaCgiLyIsIGVudHJ5LmZ1bGxQYXRoKTsK
LSAgICAgICAgICAgIGFzc2VydElzRGlyZWN0b3J5KGVudHJ5KTsKLSAgICAgICAgICAgIGNsZWFu
dXBBbmRSdW5OZXh0KCk7Ci0gICAgICAgIH0sIGVycm9yQ2FsbGJhY2spOwotICAgIH0pOwotfQot
Ci0vLyBFbmQgb2YgdGVzdCBib2R5IGZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotdmFyIHRlc3RzTGlzdCA9IFsKLSAgICBydW5CYXNpY1Rl
c3QsCi0gICAgcnVuSGFuZG1hZGVVUkwsCi0gICAgcnVuV3JvbmdEb21haW4sCi0gICAgcnVuV3Jv
bmdQb3J0LAotICAgIHJ1bldyb25nU2NoZW1lLAotICAgIHJ1bkJvZ3VzVVJMLAotICAgIHJ1bldy
b25nUHJvdG9jb2wsCi0gICAgcnVuTm90RW5vdWdoU2xhc2hlcywKLSAgICBydW5Ob3RFbm91Z2hT
bGFzaGVzMiwKLSAgICBydW5Vc2VCYWNrU2xhc2hlcywKLSAgICBydW5EaXJlY3RvcnksCi0gICAg
cnVuV2l0aFRyYWlsaW5nU2xhc2gsCi0gICAgcnVuUGVyc2lzdGVudFRlc3QsCi1dOwotdmFyIHRl
c3RDb3VudGVyID0gMDsKLQotZnVuY3Rpb24gcnVuTmV4dFRlc3QoKSB7Ci0gICAgaWYgKHRlc3RD
b3VudGVyID09IHRlc3RzTGlzdC5sZW5ndGgpIHsKLSAgICAgICAgZGVidWcoIkZpbmlzaGVkIHJ1
bm5pbmcgdGVzdHMuIik7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0gZWxzZQotICAg
ICAgICB0ZXN0c0xpc3RbdGVzdENvdW50ZXIrK10oKTsKLX0KLQotZnVuY3Rpb24gY2xlYW51cEFu
ZFJ1bk5leHQoKSB7Ci0gICAgcmVtb3ZlQWxsSW5EaXJlY3RvcnkoZmlsZVN5c3RlbS5yb290LCBy
dW5OZXh0VGVzdCwgcnVuTmV4dFRlc3QpOwotfQotCi1mdW5jdGlvbiBmaWxlU3lzdGVtQ2FsbGJh
Y2soZnMpIHsKLSAgICBmaWxlU3lzdGVtID0gZnM7Ci0gICAgY2xlYW51cEFuZFJ1bk5leHQoKTsK
LX0KLQotaWYgKHRoaXMud2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0pIHsKLSAgICBqc1Rlc3RJc0Fz
eW5jID0gdHJ1ZTsKLSAgICB3ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbSh0aGlzLlRFTVBPUkFSWSwg
MTAwLCBmaWxlU3lzdGVtQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spOwotfSBlbHNlCi0gICAgZGVi
dWcoIlRoaXMgdGVzdCByZXF1aXJlcyBGaWxlU3lzdGVtIEFQSSBzdXBwb3J0LiIpOwotCi12YXIg
c3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMv
ZmlsZXN5c3RlbS93b3JrZXJzL3Jlc29sdmUtdXJsLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2ZpbGVzeXN0ZW0vd29ya2Vycy9yZXNvbHZlLXVybC1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
ZmlsZXN5c3RlbS93b3JrZXJzL3Jlc29sdmUtdXJsLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtMSw0MyArMCwwIEBACi1bV29ya2VyXSBUZXN0cyB1c2luZyB3ZWJraXRSZXNvbHZlTG9j
YWxGaWxlU3lzdGVtVVJMIHRvIG9idGFpbiBhbiBFbnRyeSBmcm9tIGEgVVJMCi0KLU9uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KLQotCi1TdGFydGluZyB3b3JrZXI6IC4uL3NjcmlwdC10ZXN0cy9y
ZXNvbHZlLXVyaS5qcwotW1dvcmtlcl0gKiBSZXNvbHZpbmcgYSBnZW5lcmF0ZWQgVVJMLgotUEFT
UyBbV29ya2VyXSBleHBlY3RlZFBhdGggaXMgYWN0dWFsUGF0aAotUEFTUyBbV29ya2VyXSBpc0Zp
bGUgaXMgdHJ1ZQotW1dvcmtlcl0gKiBSZXNvbHZpbmcgdGVzdCBmaWxlIGJ5IGhhbmQKLVBBU1Mg
W1dvcmtlcl0gZXhwZWN0ZWRQYXRoIGlzIGFjdHVhbFBhdGgKLVBBU1MgW1dvcmtlcl0gaXNGaWxl
IGlzIHRydWUKLVtXb3JrZXJdICogUmVzb2x2aW5nIGEgVVJMIHdpdGggdGhlIHdyb25nIHNlY3Vy
aXR5IG9yaWdpbiAoZG9tYWluKQotUEFTUyBbV29ya2VyXSBGaWxlRXJyb3IuU0VDVVJJVFlfRVJS
IGlzIGVycm9yQ29kZQotW1dvcmtlcl0gKiBSZXNvbHZpbmcgYSBVUkwgd2l0aCB0aGUgd3Jvbmcg
c2VjdXJpdHkgb3JpZ2luIChwb3J0KQotUEFTUyBbV29ya2VyXSBGaWxlRXJyb3IuU0VDVVJJVFlf
RVJSIGlzIGVycm9yQ29kZQotW1dvcmtlcl0gKiBSZXNvbHZpbmcgYSBVUkwgd2l0aCB0aGUgd3Jv
bmcgc2VjdXJpdHkgb3JpZ2luIChzY2hlbWUpCi1QQVNTIFtXb3JrZXJdIEZpbGVFcnJvci5TRUNV
UklUWV9FUlIgaXMgZXJyb3JDb2RlCi1bV29ya2VyXSAqIFJlc29sdmluZyBhIGNvbXBsZXRlbHkg
Ym9ndXMgVVJMLgotUEFTUyBbV29ya2VyXSBGaWxlRXJyb3IuRU5DT0RJTkdfRVJSIGlzIGVycm9y
Q29kZQotW1dvcmtlcl0gKiBSZXNvbHZpbmcgYSBVUkwgd2l0aCB0aGUgd3JvbmcgcHJvdG9jb2wK
LVBBU1MgW1dvcmtlcl0gRmlsZUVycm9yLkVOQ09ESU5HX0VSUiBpcyBlcnJvckNvZGUKLVtXb3Jr
ZXJdICogUmVzb2x2aW5nIGEgVVJMIHdpdGggbm8gc2xhc2ggYmV0d2VlbiB0eXBlIGFuZCBmaWxl
Ci1QQVNTIFtXb3JrZXJdIEZpbGVFcnJvci5FTkNPRElOR19FUlIgaXMgZXJyb3JDb2RlCi1bV29y
a2VyXSAqIFJlc29sdmluZyBhIFVSTCB3aXRoIG5vIHNsYXNoIGJldHdlZW4gcHJvdG9jb2wgYW5k
IHR5cGUgKGJvZ3VzIHBvcnQpCi1QQVNTIFtXb3JrZXJdIEZpbGVFcnJvci5TRUNVUklUWV9FUlIg
aXMgZXJyb3JDb2RlCi1bV29ya2VyXSAqIFJlc29sdmUgYSBwYXRoIHVzaW5nIGJhY2tzbGFzaGVz
Ci1QQVNTIFtXb3JrZXJdIGV4cGVjdGVkUGF0aCBpcyBhY3R1YWxQYXRoCi1QQVNTIFtXb3JrZXJd
IGlzRmlsZSBpcyB0cnVlCi1bV29ya2VyXSAqIFJlc29sdmUgYSBkaXJlY3RvcnkKLVBBU1MgW1dv
cmtlcl0gZXhwZWN0ZWRQYXRoIGlzIGFjdHVhbFBhdGgKLVBBU1MgW1dvcmtlcl0gaXNEaXJlY3Rv
cnkgaXMgdHJ1ZQotW1dvcmtlcl0gKiBSZXNvbHZlIGEgcGF0aCB1c2luZyBhIHRyYWlsaW5nIHNs
YXNoCi1QQVNTIFtXb3JrZXJdIGV4cGVjdGVkUGF0aCBpcyBhY3R1YWxQYXRoCi1QQVNTIFtXb3Jr
ZXJdIGlzRGlyZWN0b3J5IGlzIHRydWUKLVtXb3JrZXJdICogUmVzb2x2aW5nIGEgcGVyc2lzdGVu
dCBVUkwuCi1QQVNTIFtXb3JrZXJdIGV4cGVjdGVkUGF0aCBpcyBhY3R1YWxQYXRoCi1QQVNTIFtX
b3JrZXJdIGlzRGlyZWN0b3J5IGlzIHRydWUKLVtXb3JrZXJdIEZpbmlzaGVkIHJ1bm5pbmcgdGVz
dHMuCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpJ
bmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9maWxlc3lzdGVtL3dvcmtlcnMvcmVzb2x2ZS11
cmwtc3luYy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9maWxlc3lzdGVtL3dvcmtlcnMvcmVzb2x2ZS11cmwtc3luYy1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvZmlsZXN5c3RlbS93b3JrZXJz
L3Jlc29sdmUtdXJsLXN5bmMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDQzICsw
LDAgQEAKLVtXb3JrZXJdIFRlc3RzIHVzaW5nIHdlYmtpdFJlc29sdmVMb2NhbEZpbGVTeXN0ZW1T
eW5jVVJMIHRvIG9idGFpbiBhbiBFbnRyeSBmcm9tIGEgVVJMCi0KLU9uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KLQotCi1TdGFydGluZyB3b3JrZXI6IHNjcmlwdC10ZXN0cy9yZXNvbHZlLXVybC1z
eW5jLmpzCi1bV29ya2VyXSAqIFJlc29sdmluZyBhIGdlbmVyYXRlZCBVUkwuCi1QQVNTIFtXb3Jr
ZXJdIGV4cGVjdGVkUGF0aCBpcyBhY3R1YWxQYXRoCi1QQVNTIFtXb3JrZXJdIGlzRmlsZSBpcyB0
cnVlCi1bV29ya2VyXSAqIFJlc29sdmluZyB0ZXN0IGZpbGUgYnkgaGFuZAotUEFTUyBbV29ya2Vy
XSBleHBlY3RlZFBhdGggaXMgYWN0dWFsUGF0aAotUEFTUyBbV29ya2VyXSBpc0ZpbGUgaXMgdHJ1
ZQotW1dvcmtlcl0gKiBSZXNvbHZpbmcgYSBVUkwgd2l0aCB0aGUgd3Jvbmcgc2VjdXJpdHkgb3Jp
Z2luIChkb21haW4pCi1QQVNTIFtXb3JrZXJdIEZpbGVFeGNlcHRpb24uU0VDVVJJVFlfRVJSIGlz
IGVycm9yQ29kZQotW1dvcmtlcl0gKiBSZXNvbHZpbmcgYSBVUkwgd2l0aCB0aGUgd3Jvbmcgc2Vj
dXJpdHkgb3JpZ2luIChwb3J0KQotUEFTUyBbV29ya2VyXSBGaWxlRXhjZXB0aW9uLlNFQ1VSSVRZ
X0VSUiBpcyBlcnJvckNvZGUKLVtXb3JrZXJdICogUmVzb2x2aW5nIGEgVVJMIHdpdGggdGhlIHdy
b25nIHNlY3VyaXR5IG9yaWdpbiAoc2NoZW1lKQotUEFTUyBbV29ya2VyXSBGaWxlRXhjZXB0aW9u
LlNFQ1VSSVRZX0VSUiBpcyBlcnJvckNvZGUKLVtXb3JrZXJdICogUmVzb2x2aW5nIGEgY29tcGxl
dGVseSBib2d1cyBVUkwuCi1QQVNTIFtXb3JrZXJdIEZpbGVFeGNlcHRpb24uRU5DT0RJTkdfRVJS
IGlzIGVycm9yQ29kZQotW1dvcmtlcl0gKiBSZXNvbHZpbmcgYSBVUkwgd2l0aCB0aGUgd3Jvbmcg
cHJvdG9jb2wKLVBBU1MgW1dvcmtlcl0gRmlsZUV4Y2VwdGlvbi5FTkNPRElOR19FUlIgaXMgZXJy
b3JDb2RlCi1bV29ya2VyXSAqIFJlc29sdmluZyBhIFVSTCB3aXRoIG5vIHNsYXNoIGJldHdlZW4g
dHlwZSBhbmQgZmlsZQotUEFTUyBbV29ya2VyXSBGaWxlRXhjZXB0aW9uLkVOQ09ESU5HX0VSUiBp
cyBlcnJvckNvZGUKLVtXb3JrZXJdICogUmVzb2x2aW5nIGEgVVJMIHdpdGggbm8gc2xhc2ggYmV0
d2VlbiBwcm90b2NvbCBhbmQgdHlwZSAoYm9ndXMgcG9ydCkKLVBBU1MgW1dvcmtlcl0gRmlsZUV4
Y2VwdGlvbi5TRUNVUklUWV9FUlIgaXMgZXJyb3JDb2RlCi1bV29ya2VyXSAqIFJlc29sdmUgYSBw
YXRoIHVzaW5nIGJhY2tzbGFzaGVzCi1QQVNTIFtXb3JrZXJdIGV4cGVjdGVkUGF0aCBpcyBhY3R1
YWxQYXRoCi1QQVNTIFtXb3JrZXJdIGlzRmlsZSBpcyB0cnVlCi1bV29ya2VyXSAqIFJlc29sdmUg
YSBkaXJlY3RvcnkKLVBBU1MgW1dvcmtlcl0gZXhwZWN0ZWRQYXRoIGlzIGFjdHVhbFBhdGgKLVBB
U1MgW1dvcmtlcl0gaXNEaXJlY3RvcnkgaXMgdHJ1ZQotW1dvcmtlcl0gKiBSZXNvbHZlIGEgcGF0
aCB1c2luZyBhIHRyYWlsaW5nIHNsYXNoCi1QQVNTIFtXb3JrZXJdIGV4cGVjdGVkUGF0aCBpcyBh
Y3R1YWxQYXRoCi1QQVNTIFtXb3JrZXJdIGlzRGlyZWN0b3J5IGlzIHRydWUKLVtXb3JrZXJdICog
UmVzb2x2aW5nIGEgcGVyc2lzdGVudCBVUkwuCi1QQVNTIFtXb3JrZXJdIGV4cGVjdGVkUGF0aCBp
cyBhY3R1YWxQYXRoCi1QQVNTIFtXb3JrZXJdIGlzRGlyZWN0b3J5IGlzIHRydWUKLVtXb3JrZXJd
IEZpbmlzaGVkIHJ1bm5pbmcgdGVzdHMuCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
Ci0KLVRFU1QgQ09NUExFVEUKLQpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9maWxlc3lz
dGVtL3dvcmtlcnMvcmVzb2x2ZS11cmwtc3luYy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvZmlsZXN5c3RlbS93b3JrZXJzL3Jlc29sdmUtdXJsLXN5bmMuaHRtbAko
cmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9maWxlc3lzdGVtL3dv
cmtlcnMvcmVzb2x2ZS11cmwtc3luYy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE0ICswLDAg
QEAKLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvZnMtd29ya2Vy
LXRlc3QtdXRpbC5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxwIGlkPSJkZXNjcmlw
dGlvbiI+PC9wPgotPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Ci08c2NyaXB0Pgotc3RhcnRXb3Jr
ZXIoJ3NjcmlwdC10ZXN0cy9yZXNvbHZlLXVybC1zeW5jLmpzJyk7Ci08L3NjcmlwdD4KLTxzY3Jp
cHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwv
Ym9keT4KLTwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvZmlsZXN5c3RlbS93
b3JrZXJzL3Jlc29sdmUtdXJsLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9maWxlc3lzdGVtL3dvcmtlcnMvcmVzb2x2ZS11cmwuaHRtbAkocmV2aXNpb24gMTU2Njkx
KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9maWxlc3lzdGVtL3dvcmtlcnMvcmVzb2x2ZS11
cmwuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxNCArMCwwIEBACi08aHRtbD4KLTxoZWFkPgot
PHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2ZzLXdvcmtlci10ZXN0LXV0aWwuanMiPjwvc2Ny
aXB0PgotPC9oZWFkPgotPGJvZHk+Ci08cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KLTxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgotPHNjcmlwdD4KLXN0YXJ0V29ya2VyKCcuLi9zY3JpcHQtdGVzdHMv
cmVzb2x2ZS11cmkuanMnKTsKLTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpJbmRleDog
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9maWxlc3lzdGVtL3dvcmtlcnMvc2NyaXB0LXRlc3RzL1RF
TVBMQVRFLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9maWxlc3lz
dGVtL3dvcmtlcnMvc2NyaXB0LXRlc3RzL1RFTVBMQVRFLmh0bWwJKHJldmlzaW9uIDE1NjY5MSkK
KysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvZmlsZXN5c3RlbS93b3JrZXJzL3NjcmlwdC10ZXN0
cy9URU1QTEFURS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE0ICswLDAgQEAKLTxodG1sPgot
PGhlYWQ+Ci08c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvZnMtd29ya2VyLXRlc3QtdXRpbC5q
cyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgot
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Ci08c2NyaXB0Pgotc3RhcnRXb3JrZXIoJ1lPVVJfSlNf
RklMRV9IRVJFJyk7Ci08L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IExheW91
dFRlc3RzL2h0dHAvdGVzdHMvZmlsZXN5c3RlbS93b3JrZXJzL3NjcmlwdC10ZXN0cy9yZXNvbHZl
LXVybC1zeW5jLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvZmlsZXN5
c3RlbS93b3JrZXJzL3NjcmlwdC10ZXN0cy9yZXNvbHZlLXVybC1zeW5jLmpzCShyZXZpc2lvbiAx
NTY2OTEpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2ZpbGVzeXN0ZW0vd29ya2Vycy9zY3Jp
cHQtdGVzdHMvcmVzb2x2ZS11cmwtc3luYy5qcwkod29ya2luZyBjb3B5KQpAQCAtMSwxOTkgKzAs
MCBAQAotaWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgewotICAgIGltcG9ydFNjcmlwdHMoJy4uLy4u
L3Jlc291cmNlcy9mcy13b3JrZXItY29tbW9uLmpzJyk7Ci0gICAgaW1wb3J0U2NyaXB0cygnLi4v
Li4vcmVzb3VyY2VzL2ZzLXRlc3QtdXRpbC5qcycpOwotfQotCi1kZXNjcmlwdGlvbigiVGVzdHMg
dXNpbmcgd2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVN5bmNVUkwgdG8gb2J0YWluIGFuIEVu
dHJ5IGZyb20gYSBVUkwiKTsKLQotdmFyIHRlc3RGaWxlTmFtZSA9ICcvdGVzdEZpbGUnOwotdmFy
IGZpbGVTeXN0ZW0gPSBudWxsOwotCi12YXIgZXhwZWN0ZWRQYXRoID0gbnVsbDsKLXZhciBhY3R1
YWxQYXRoID0gbnVsbDsKLXZhciBlcnJvckNvZGUgPSBudWxsOwotCi1mdW5jdGlvbiBjcmVhdGVU
ZXN0RmlsZSgpIHsKLSAgICByZXR1cm4gZmlsZVN5c3RlbS5yb290LmdldEZpbGUodGVzdEZpbGVO
YW1lLCB7Y3JlYXRlOnRydWV9KTsKLX0KLQotZnVuY3Rpb24gYXNzZXJ0RW5jb2RpbmdFcnIoY29k
ZSkgewotICAgIGVycm9yQ29kZSA9IGNvZGU7Ci0gICAgc2hvdWxkQmUoIkZpbGVFeGNlcHRpb24u
RU5DT0RJTkdfRVJSIiwgImVycm9yQ29kZSIpOwotfQotCi1mdW5jdGlvbiBhc3NlcnRTZWN1cml0
eUVycihjb2RlKSB7Ci0gICAgZXJyb3JDb2RlID0gY29kZTsKLSAgICBzaG91bGRCZSgiRmlsZUV4
Y2VwdGlvbi5TRUNVUklUWV9FUlIiLCAiZXJyb3JDb2RlIik7Ci19Ci0KLWZ1bmN0aW9uIGFzc2Vy
dFBhdGhzTWF0Y2goZXhwZWN0ZWQsIGFjdHVhbCkgewotICAgIGV4cGVjdGVkUGF0aCA9IGV4cGVj
dGVkOwotICAgIGFjdHVhbFBhdGggPSBhY3R1YWw7Ci0gICAgc2hvdWxkQmUoImV4cGVjdGVkUGF0
aCIsICJhY3R1YWxQYXRoIik7Ci19Ci0KLXZhciBpc0RpcmVjdG9yeSA9IGZhbHNlOwotZnVuY3Rp
b24gYXNzZXJ0SXNEaXJlY3RvcnkoZW50cnkpIHsKLSAgICBpc0RpcmVjdG9yeSA9IGVudHJ5Lmlz
RGlyZWN0b3J5OwotICAgIHNob3VsZEJlVHJ1ZSgiaXNEaXJlY3RvcnkiKTsKLX0KLQotdmFyIGlz
RmlsZSA9IGZhbHNlOwotZnVuY3Rpb24gYXNzZXJ0SXNGaWxlKGVudHJ5KSB7Ci0gICAgaXNGaWxl
ID0gZW50cnkuaXNGaWxlOwotICAgIHNob3VsZEJlVHJ1ZSgiaXNGaWxlIik7Ci19Ci0KLS8vIFRl
c3QgYm9keSBmdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQotCi1mdW5jdGlvbiBydW5CYXNpY1Rlc3QoKSB7Ci0gICAgZGVidWcoIiog
UmVzb2x2aW5nIGEgZ2VuZXJhdGVkIFVSTC4iKTsKLSAgICBlbnRyeSA9IGNyZWF0ZVRlc3RGaWxl
KCk7Ci0gICAgdmFyIGUgPSB3ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lzdGVtU3luY1VSTChlbnRy
eS50b1VSTCgpKTsKLSAgICBhc3NlcnRQYXRoc01hdGNoKGVudHJ5LmZ1bGxQYXRoLCBlLmZ1bGxQ
YXRoKTsKLSAgICBhc3NlcnRJc0ZpbGUoZSk7Ci19Ci0KLWZ1bmN0aW9uIHJ1bkhhbmRtYWRlVVJM
KCkgewotICAgIGRlYnVnKCIqIFJlc29sdmluZyB0ZXN0IGZpbGUgYnkgaGFuZCIpOwotICAgIGVu
dHJ5ID0gY3JlYXRlVGVzdEZpbGUoKTsKLSAgICB2YXIgZSA9IHdlYmtpdFJlc29sdmVMb2NhbEZp
bGVTeXN0ZW1TeW5jVVJMKCJmaWxlc3lzdGVtOmh0dHA6Ly8xMjcuMC4wLjE6ODAwMC90ZW1wb3Jh
cnkvdGVzdEZpbGUiKTsKLSAgICBhc3NlcnRQYXRoc01hdGNoKHRlc3RGaWxlTmFtZSwgZS5mdWxs
UGF0aCk7Ci0gICAgYXNzZXJ0SXNGaWxlKGUpOwotfQotCi1mdW5jdGlvbiBydW5Xcm9uZ0RvbWFp
bigpIHsKLSAgICBkZWJ1ZygiKiBSZXNvbHZpbmcgYSBVUkwgd2l0aCB0aGUgd3Jvbmcgc2VjdXJp
dHkgb3JpZ2luIChkb21haW4pIik7Ci0gICAgdHJ5IHsKLSAgICAgICAgd2Via2l0UmVzb2x2ZUxv
Y2FsRmlsZVN5c3RlbVN5bmNVUkwoImZpbGVzeXN0ZW06aHR0cDovL2xvY2FsaG9zdDo4MDAwL3Rl
bXBvcmFyeS9mb28iKTsKLSAgICAgICAgdGVzdEZhaWxlZCgpOwotICAgIH0gY2F0Y2ggKGUpIHsK
LSAgICAgICAgYXNzZXJ0U2VjdXJpdHlFcnIoZS5jb2RlKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9u
IHJ1bldyb25nUG9ydCgpIHsKLSAgICBkZWJ1ZygiKiBSZXNvbHZpbmcgYSBVUkwgd2l0aCB0aGUg
d3Jvbmcgc2VjdXJpdHkgb3JpZ2luIChwb3J0KSIpOwotICAgIHRyeSB7Ci0gICAgICAgIHdlYmtp
dFJlc29sdmVMb2NhbEZpbGVTeXN0ZW1TeW5jVVJMKCJmaWxlc3lzdGVtOmh0dHA6Ly8xMjcuMC4w
LjE6ODA4MC90ZW1wb3JhcnkvZm9vIik7Ci0gICAgICAgIHRlc3RGYWlsZWQoKTsKLSAgICB9IGNh
dGNoIChlKSB7Ci0gICAgICAgIGFzc2VydFNlY3VyaXR5RXJyKGUuY29kZSk7Ci0gICAgfQotfQot
Ci1mdW5jdGlvbiBydW5Xcm9uZ1NjaGVtZSgpIHsKLSAgICBkZWJ1ZygiKiBSZXNvbHZpbmcgYSBV
Ukwgd2l0aCB0aGUgd3Jvbmcgc2VjdXJpdHkgb3JpZ2luIChzY2hlbWUpIik7Ci0gICAgdHJ5IHsK
LSAgICAgICAgd2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVN5bmNVUkwoImZpbGVzeXN0ZW06
aHR0cHM6Ly8xMjcuMC4wLjE6ODAwMC90ZW1wb3JhcnkvZm9vIik7Ci0gICAgICAgIHRlc3RGYWls
ZWQoKTsKLSAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgIGFzc2VydFNlY3VyaXR5RXJyKGUuY29k
ZSk7Ci0gICAgfQotfQotCi1mdW5jdGlvbiBydW5Cb2d1c1VSTCgpIHsKLSAgICBkZWJ1ZygiKiBS
ZXNvbHZpbmcgYSBjb21wbGV0ZWx5IGJvZ3VzIFVSTC4iKTsKLSAgICB0cnkgewotICAgICAgICB3
ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lzdGVtU3luY1VSTCgiZm9vIik7Ci0gICAgICAgIHRlc3RG
YWlsZWQoKTsKLSAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgIGFzc2VydEVuY29kaW5nRXJyKGUu
Y29kZSk7Ci0gICAgfQotfQotCi1mdW5jdGlvbiBydW5Xcm9uZ1Byb3RvY29sKCkgewotICAgIGRl
YnVnKCIqIFJlc29sdmluZyBhIFVSTCB3aXRoIHRoZSB3cm9uZyBwcm90b2NvbCIpOwotICAgIHRy
eSB7Ci0gICAgICAgIHdlYmtpdFJlc29sdmVMb2NhbEZpbGVTeXN0ZW1TeW5jVVJMKCJodHRwOi8v
MTI3LjAuMC4xOjgwMDAvZm9vL2Jhci9iYXoiKTsKLSAgICAgICAgdGVzdEZhaWxlZCgpOwotICAg
IH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgYXNzZXJ0RW5jb2RpbmdFcnIoZS5jb2RlKTsKLSAgICB9
Ci19Ci0KLWZ1bmN0aW9uIHJ1bk5vdEVub3VnaFNsYXNoZXMoKSB7Ci0gICAgZGVidWcoIiogUmVz
b2x2aW5nIGEgVVJMIHdpdGggbm8gc2xhc2ggYmV0d2VlbiB0eXBlIGFuZCBmaWxlIik7Ci0gICAg
ZW50cnkgPSBjcmVhdGVUZXN0RmlsZSgpOwotICAgIHRyeSB7Ci0gICAgICAgIHdlYmtpdFJlc29s
dmVMb2NhbEZpbGVTeXN0ZW1TeW5jVVJMKCJmaWxlc3lzdGVtOmh0dHA6Ly8xMjcuMC4wLjE6ODAw
MC90ZW1wb3Jhcnl0ZXN0RmlsZSIpOwotICAgICAgICB0ZXN0RmFpbGVkKCk7Ci0gICAgfSBjYXRj
aCAoZSkgewotICAgICAgICBhc3NlcnRFbmNvZGluZ0VycihlLmNvZGUpOwotICAgIH0KLX0KLQot
ZnVuY3Rpb24gcnVuTm90RW5vdWdoU2xhc2hlczIoKSB7Ci0gICAgZGVidWcoIiogUmVzb2x2aW5n
IGEgVVJMIHdpdGggbm8gc2xhc2ggYmV0d2VlbiBwcm90b2NvbCBhbmQgdHlwZSAoYm9ndXMgcG9y
dCkiKTsKLSAgICBlbnRyeSA9IGNyZWF0ZVRlc3RGaWxlKCk7Ci0gICAgdHJ5IHsKLSAgICAgICAg
d2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVN5bmNVUkwoImZpbGVzeXN0ZW06aHR0cDovLzEy
Ny4wLjAuMTo4MDAwdGVtcG9yYXJ5L3Rlc3RGaWxlIik7Ci0gICAgfSBjYXRjaCAoZSkgewotICAg
ICAgICBhc3NlcnRTZWN1cml0eUVycihlLmNvZGUpOwotICAgIH0KLX0KLQotZnVuY3Rpb24gcnVu
VXNlQmFja1NsYXNoZXMoKSB7Ci0gICAgZGVidWcoIiogUmVzb2x2ZSBhIHBhdGggdXNpbmcgYmFj
a3NsYXNoZXMiKTsKLSAgICBlbnRyeSA9IGZpbGVTeXN0ZW0ucm9vdC5nZXREaXJlY3RvcnkoImZv
byIsIHtjcmVhdGU6dHJ1ZX0pLmdldEZpbGUoInRlc3RGaWxlIiwge2NyZWF0ZTp0cnVlfSk7Ci0g
ICAgdmFyIGUgPSB3ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lzdGVtU3luY1VSTCgiZmlsZXN5c3Rl
bTpodHRwOi8vMTI3LjAuMC4xOjgwMDAvdGVtcG9yYXJ5L2Zvb1xcdGVzdEZpbGUiKTsKLSAgICBh
c3NlcnRQYXRoc01hdGNoKCIvZm9vL3Rlc3RGaWxlIiwgZS5mdWxsUGF0aCk7Ci0gICAgYXNzZXJ0
SXNGaWxlKGUpOwotfQotCi1mdW5jdGlvbiBydW5EaXJlY3RvcnkoKSB7Ci0gICAgZGVidWcoIiog
UmVzb2x2ZSBhIGRpcmVjdG9yeSIpOwotICAgIGVudHJ5ID0gZmlsZVN5c3RlbS5yb290LmdldERp
cmVjdG9yeSgiZm9vIiwge2NyZWF0ZTp0cnVlfSk7Ci0gICAgdmFyIGUgPSB3ZWJraXRSZXNvbHZl
TG9jYWxGaWxlU3lzdGVtU3luY1VSTCgiZmlsZXN5c3RlbTpodHRwOi8vMTI3LjAuMC4xOjgwMDAv
dGVtcG9yYXJ5L2ZvbyIpOwotICAgIGFzc2VydFBhdGhzTWF0Y2goIi9mb28iLCBlLmZ1bGxQYXRo
KTsKLSAgICBhc3NlcnRJc0RpcmVjdG9yeShlKTsKLX0KLQotZnVuY3Rpb24gcnVuV2l0aFRyYWls
aW5nU2xhc2goKSB7Ci0gICAgZGVidWcoIiogUmVzb2x2ZSBhIHBhdGggdXNpbmcgYSB0cmFpbGlu
ZyBzbGFzaCIpOwotICAgIGVudHJ5ID0gZmlsZVN5c3RlbS5yb290LmdldERpcmVjdG9yeSgiZm9v
Iiwge2NyZWF0ZTp0cnVlfSk7Ci0gICAgdmFyIGUgPSB3ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lz
dGVtU3luY1VSTCgiZmlsZXN5c3RlbTpodHRwOi8vMTI3LjAuMC4xOjgwMDAvdGVtcG9yYXJ5L2Zv
by8iKTsKLSAgICBhc3NlcnRQYXRoc01hdGNoKCIvZm9vIiwgZS5mdWxsUGF0aCk7Ci0gICAgYXNz
ZXJ0SXNEaXJlY3RvcnkoZSk7Ci19Ci0KLWZ1bmN0aW9uIHJ1blBlcnNpc3RlbnRUZXN0KCkgewot
ICAgIGRlYnVnKCIqIFJlc29sdmluZyBhIHBlcnNpc3RlbnQgVVJMLiIpOwotICAgIHZhciBmcyA9
IHdlYmtpdFJlcXVlc3RGaWxlU3lzdGVtU3luYyhQRVJTSVNURU5ULCAxMDApOwotICAgIGVudHJ5
ID0gd2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVN5bmNVUkwoZnMucm9vdC50b1VSTCgpKTsK
LSAgICBhc3NlcnRQYXRoc01hdGNoKCIvIiwgZW50cnkuZnVsbFBhdGgpOwotICAgIGFzc2VydElz
RGlyZWN0b3J5KGVudHJ5KTsKLX0KLQotLy8gRW5kIG9mIHRlc3QgYm9keSBmdW5jdGlvbnMgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLXZhciB0ZXN0c0xp
c3QgPSBbCi0gICAgcnVuQmFzaWNUZXN0LAotICAgIHJ1bkhhbmRtYWRlVVJMLAotICAgIHJ1bldy
b25nRG9tYWluLAotICAgIHJ1bldyb25nUG9ydCwKLSAgICBydW5Xcm9uZ1NjaGVtZSwKLSAgICBy
dW5Cb2d1c1VSTCwKLSAgICBydW5Xcm9uZ1Byb3RvY29sLAotICAgIHJ1bk5vdEVub3VnaFNsYXNo
ZXMsCi0gICAgcnVuTm90RW5vdWdoU2xhc2hlczIsCi0gICAgcnVuVXNlQmFja1NsYXNoZXMsCi0g
ICAgcnVuRGlyZWN0b3J5LAotICAgIHJ1bldpdGhUcmFpbGluZ1NsYXNoLAotICAgIHJ1blBlcnNp
c3RlbnRUZXN0LAotXTsKLXZhciB0ZXN0Q291bnRlciA9IDA7Ci0KLWlmICh0aGlzLndlYmtpdFJl
cXVlc3RGaWxlU3lzdGVtKSB7Ci0gICAgZmlsZVN5c3RlbSA9IHdlYmtpdFJlcXVlc3RGaWxlU3lz
dGVtU3luYyh0aGlzLlRFTVBPUkFSWSwgMTAwKTsKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRl
c3RzTGlzdC5sZW5ndGg7ICsraSkgewotICAgICAgdGVzdHNMaXN0W2ldKCk7Ci0gICAgICByZW1v
dmVBbGxJbkRpcmVjdG9yeVN5bmMoZmlsZVN5c3RlbS5yb290KTsKLSAgICAgIGVudHJ5ID0gbnVs
bDsKLSAgICB9Ci0gICAgZGVidWcoIkZpbmlzaGVkIHJ1bm5pbmcgdGVzdHMuIik7Ci0gICAgZmlu
aXNoSlNUZXN0KCk7Ci19IGVsc2UKLSAgICBkZWJ1ZygiVGhpcyB0ZXN0IHJlcXVpcmVzIEZpbGVT
eXN0ZW0gQVBJIHN1cHBvcnQuIik7Ci0KLXZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJ
bmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9maWxlc3lzdGVtL3Jlc291cmNlcy9mcy10ZXN0
LXV0aWwuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9maWxlc3lzdGVt
L3Jlc291cmNlcy9mcy10ZXN0LXV0aWwuanMJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZnMtdGVzdC11dGlsLmpzCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDU0ICswLDAgQEAKLWZ1bmN0aW9uIGJpbmRDYWxsYmFjayhvYmosIGNh
bGxiYWNrLCBhcmcxLCBhcmcyLCBhcmczKQotewotICAgIHJldHVybiBmdW5jdGlvbihhcmcpIHsK
LSAgICAgICAgaWYgKGFyZyA9PSB1bmRlZmluZWQpCi0gICAgICAgICAgICBjYWxsYmFjay5hcHBs
eShvYmosIFthcmcxLCBhcmcyLCBhcmczXSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNh
bGxiYWNrLmFwcGx5KG9iaiwgW2FyZywgYXJnMSwgYXJnMiwgYXJnM10pOwotICAgIH07Ci19Ci0K
LS8vIFJlbW92ZSBldmVyeXRoaW5nIGluIHRoZSBnaXZlbiBkaXJlY3RvcnkuCi1mdW5jdGlvbiBy
ZW1vdmVBbGxJbkRpcmVjdG9yeShkaXJlY3RvcnksIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxs
YmFjaykgewotICAgIHZhciBSZW1vdmVBbGxJbkRpcmVjdG9yeUhlbHBlciA9IGZ1bmN0aW9uKHN1
Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykgewotICAgICAgICB0aGlzLmVudHJpZXNDb3Vu
dCA9IDA7Ci0gICAgICAgIHRoaXMuZG9uZSA9IGZhbHNlOwotICAgICAgICB0aGlzLnJlYWRlciA9
IG51bGw7Ci0gICAgICAgIHRoaXMuc3VjY2Vzc0NhbGxiYWNrID0gc3VjY2Vzc0NhbGxiYWNrOwot
ICAgICAgICB0aGlzLmVycm9yQ2FsbGJhY2sgPSBlcnJvckNhbGxiYWNrOwotCi0gICAgICAgIHRo
aXMuZW50cnlSZW1vdmVkQ2FsbGJhY2sgPSBiaW5kQ2FsbGJhY2sodGhpcywgZnVuY3Rpb24oZW50
cnkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICgtLXRoaXMuZW50cmllc0NvdW50ID09IDAg
JiYgdGhpcy5zdWNjZXNzQ2FsbGJhY2sgJiYgdGhpcy5kb25lKSB7Ci0gICAgICAgICAgICAgICAg
dGhpcy5zdWNjZXNzQ2FsbGJhY2soKTsKLSAgICAgICAgICAgICAgICB0aGlzLnN1Y2Nlc3NDYWxs
YmFjayA9IG51bGw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0pOwotCi0gICAgICAgIHRoaXMu
ZW50cmllc0NhbGxiYWNrID0gYmluZENhbGxiYWNrKHRoaXMsIGZ1bmN0aW9uKGVudHJpZXMpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZW50cmllcy5sZW5ndGg7
ICsraSkgewotICAgICAgICAgICAgICAgIHRoaXMuZW50cmllc0NvdW50Kys7Ci0gICAgICAgICAg
ICAgICAgaWYgKGVudHJpZXNbaV0uaXNEaXJlY3RvcnkpCi0gICAgICAgICAgICAgICAgICAgIGVu
dHJpZXNbaV0ucmVtb3ZlUmVjdXJzaXZlbHkodGhpcy5lbnRyeVJlbW92ZWRDYWxsYmFjaywgdGhp
cy5lcnJvckNhbGxiYWNrKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAg
ICAgIGVudHJpZXNbaV0ucmVtb3ZlKHRoaXMuZW50cnlSZW1vdmVkQ2FsbGJhY2ssIHRoaXMuZXJy
b3JDYWxsYmFjayk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoZW50cmllcy5sZW5n
dGgpCi0gICAgICAgICAgICAgICAgdGhpcy5yZWFkZXIucmVhZEVudHJpZXModGhpcy5lbnRyaWVz
Q2FsbGJhY2ssIHRoaXMuZXJyb3JDYWxsYmFjayk7Ci0gICAgICAgICAgICBlbHNlIGlmICh0aGlz
LmVudHJpZXNDb3VudCA+IDApCi0gICAgICAgICAgICAgICAgdGhpcy5kb25lID0gdHJ1ZTsKLSAg
ICAgICAgICAgIGVsc2UgaWYgKHRoaXMuc3VjY2Vzc0NhbGxiYWNrKQotICAgICAgICAgICAgICAg
IHRoaXMuc3VjY2Vzc0NhbGxiYWNrKCk7Ci0gICAgICAgIH0pOwotCi0gICAgICAgIHRoaXMucmVt
b3ZlQWxsSW5EaXJlY3RvcnkgPSBmdW5jdGlvbihkaXJlY3RvcnkpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIHRoaXMucmVhZGVyID0gZGlyZWN0b3J5LmNyZWF0ZVJlYWRlcigpOwotICAgICAgICAg
ICAgdGhpcy5yZWFkZXIucmVhZEVudHJpZXModGhpcy5lbnRyaWVzQ2FsbGJhY2ssIHRoaXMuZXJy
b3JDYWxsYmFjayk7Ci0gICAgICAgIH07Ci0gICAgfTsKLQotICAgIHZhciBoZWxwZXIgPSBuZXcg
UmVtb3ZlQWxsSW5EaXJlY3RvcnlIZWxwZXIoc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNr
KTsKLSAgICBoZWxwZXIucmVtb3ZlQWxsSW5EaXJlY3RvcnkoZGlyZWN0b3J5KTsKLX0KSW5kZXg6
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZnMtd29ya2VyLWNv
bW1vbi5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2ZpbGVzeXN0ZW0v
cmVzb3VyY2VzL2ZzLXdvcmtlci1jb21tb24uanMJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZnMtd29ya2VyLWNvbW1vbi5q
cwkod29ya2luZyBjb3B5KQpAQCAtMSw1NiArMCwwIEBACi1mdW5jdGlvbiBkZWJ1ZyhtZXNzYWdl
KQotewotICAgIHBvc3RNZXNzYWdlKCJNRVNHOiIgKyBtZXNzYWdlKTsKLX0KLQotZnVuY3Rpb24g
ZmluaXNoSlNUZXN0KCkKLXsKLSAgICBwb3N0TWVzc2FnZSgiRE9ORToiKTsKLX0KLQotZnVuY3Rp
b24gZGVzY3JpcHRpb24obWVzc2FnZSkKLXsKLSAgICBwb3N0TWVzc2FnZSgnREVTQzonICsgbWVz
c2FnZSk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RQYXNzZWQobXNnKSB7Ci0gICAgcG9zdE1lc3NhZ2Uo
IlBBU1M6IiArIG1zZyk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RGYWlsZWQobXNnKSB7Ci0gICAgcG9z
dE1lc3NhZ2UoIkZBSUw6IiArIG1zZyk7Ci19Ci0KLWZ1bmN0aW9uIHNob3VsZEJlKF9hLCBfYikK
LXsKLSAgaWYgKHR5cGVvZiBfYSAhPSAic3RyaW5nIiB8fCB0eXBlb2YgX2IgIT0gInN0cmluZyIp
Ci0gICAgZGVidWcoIldBUk46IHNob3VsZEJlKCkgZXhwZWN0cyBzdHJpbmcgYXJndW1lbnRzIik7
Ci0gIHZhciBfYXYgPSBldmFsKF9hKTsKLSAgdmFyIF9idiA9IGV2YWwoX2IpOwotICBpZiAoX2F2
ID09PSBfYnYpCi0gICAgdGVzdFBhc3NlZChfYSArICIgaXMgIiArIF9iKTsKLSAgZWxzZQotICAg
IHRlc3RGYWlsZWQoX2EgKyAiIHNob3VsZCBiZSAiICsgX2J2ICsgIiAob2YgdHlwZSAiICsgdHlw
ZW9mIF9idiArICIpLiBXYXMgIiArIF9hdiArICIgKG9mIHR5cGUgIiArIHR5cGVvZiBfYXYgKyAi
KS4iKTsKLX0KLQotZnVuY3Rpb24gc2hvdWxkQmVUcnVlKF9hKSB7IHNob3VsZEJlKF9hLCAidHJ1
ZSIpOyB9Ci0KLWZ1bmN0aW9uIHJlbW92ZUFsbEluRGlyZWN0b3J5U3luYyhkaXJlY3RvcnkpIHsK
LSAgICBpZiAoIWRpcmVjdG9yeSkKLSAgICAgICAgcmV0dXJuOwotICAgIHZhciByZWFkZXIgPSBk
aXJlY3RvcnkuY3JlYXRlUmVhZGVyKCk7Ci0gICAgZG8gewotICAgICAgICB2YXIgZW50cmllcyA9
IHJlYWRlci5yZWFkRW50cmllcygpOwotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVudHJp
ZXMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIGlmIChlbnRyaWVzW2ldLmlzRGlyZWN0b3J5
KQotICAgICAgICAgICAgICAgIGVudHJpZXNbaV0ucmVtb3ZlUmVjdXJzaXZlbHkoKTsKLSAgICAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBlbnRyaWVzW2ldLnJlbW92ZSgpOwotICAgICAg
ICB9Ci0gICAgfSB3aGlsZSAoZW50cmllcy5sZW5ndGgpOwotfQotCi1pZiAodGhpcy5pbXBvcnRT
Y3JpcHRzICYmICF0aGlzLnJlcXVlc3RGaWxlU3lzdGVtICYmICF0aGlzLndlYmtpdFJlcXVlc3RG
aWxlU3lzdGVtKSB7Ci0gICAgZGVidWcoJ1RoaXMgdGVzdCByZXF1aXJlcyBGaWxlU3lzdGVtIEFQ
SS4nKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVz
dHMvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZnMtd29ya2VyLXRlc3QtdXRpbC5qcwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZzLXdvcmtl
ci10ZXN0LXV0aWwuanMJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZnMtd29ya2VyLXRlc3QtdXRpbC5qcwkod29ya2luZyBj
b3B5KQpAQCAtMSwzMiArMCwwIEBACi13aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Ci0KLWZ1
bmN0aW9uIHN0YXJ0V29ya2VyKHRlc3RTY3JpcHRVUkwpCi17Ci0gICAgZGVidWcoJ1N0YXJ0aW5n
IHdvcmtlcjogJyArIHRlc3RTY3JpcHRVUkwpOwotICAgIHZhciB3b3JrZXIgPSBuZXcgV29ya2Vy
KHRlc3RTY3JpcHRVUkwpOwotICAgIHdvcmtlci5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldmVudCkK
LSAgICB7Ci0gICAgICAgIGlmIChldmVudC5kYXRhLmxlbmd0aCA8IDUgfHwgZXZlbnQuZGF0YS5j
aGFyQXQoNCkgIT0gJzonKSB7Ci0gICAgICAgICAgICBkZWJ1ZygiR290IGludmFsaWQgbWVzc2Fn
ZSBmcm9tIHdvcmtlcjoiICsgKGV2ZW50LmRhdGEgPyBldmVudC5kYXRhIDogIm51bGwiKSk7Ci0g
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICB2YXIgY29kZSA9IGV2ZW50LmRhdGEuc3Vic3Ry
aW5nKDAsIDQpOwotICAgICAgICAgICAgdmFyIHBheWxvYWQgPSAiW1dvcmtlcl0gIiArIGV2ZW50
LmRhdGEuc3Vic3RyaW5nKDUpOwotICAgICAgICAgICAgaWYgKGNvZGUgPT0gIlBBU1MiKQotICAg
ICAgICAgICAgICAgIHRlc3RQYXNzZWQocGF5bG9hZCk7Ci0gICAgICAgICAgICBlbHNlIGlmIChj
b2RlID09ICJGQUlMIikKLSAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKHBheWxvYWQpOwotICAg
ICAgICAgICAgZWxzZSBpZiAoY29kZSA9PSAiREVTQyIpCi0gICAgICAgICAgICAgICAgZGVzY3Jp
cHRpb24ocGF5bG9hZCk7Ci0gICAgICAgICAgICBlbHNlIGlmIChjb2RlID09ICJET05FIikKLSAg
ICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGNvZGUg
PT0gIk1FU0ciKQotICAgICAgICAgICAgICAgIGRlYnVnKHBheWxvYWQpOwotICAgICAgICB9Ci0g
ICAgfTsKLQotICAgIHdvcmtlci5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpCi0gICAgewotICAg
ICAgICBkZWJ1ZygnR290IGVycm9yIGZyb20gd29ya2VyOiAnICsgZXZlbnQubWVzc2FnZSk7Ci0g
ICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0KLX0KSW5kZXg6IExheW91dFRlc3RzL2h0dHAv
dGVzdHMvZmlsZXN5c3RlbS9zY3JpcHQtdGVzdHMvVEVNUExBVEUuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2ZpbGVzeXN0ZW0vc2NyaXB0LXRlc3RzL1RFTVBMQVRF
Lmh0bWwJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvZmlsZXN5
c3RlbS9zY3JpcHQtdGVzdHMvVEVNUExBVEUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxMiAr
MCwwIEBACi08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0icmVzb3VyY2VzL2ZzLXRlc3Qt
dXRpbC5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxwIGlkPSJkZXNjcmlwdGlvbiI+
PC9wPgotPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Ci08c2NyaXB0IHNyYz0iWU9VUl9KU19GSUxF
X0hFUkUiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9maWxlc3lzdGVtL3NjcmlwdC10ZXN0cy9yZXNvbHZlLXVyaS5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2ZpbGVzeXN0ZW0vc2NyaXB0LXRlc3RzL3Jl
c29sdmUtdXJpLmpzCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2ZpbGVzeXN0ZW0vc2NyaXB0LXRlc3RzL3Jlc29sdmUtdXJpLmpzCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDIwNiArMCwwIEBACi1pZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7Ci0gICAgaW1wb3J0U2Ny
aXB0cygnLi4vcmVzb3VyY2VzL2ZzLXdvcmtlci1jb21tb24uanMnKTsKLSAgICBpbXBvcnRTY3Jp
cHRzKCcuLi9yZXNvdXJjZXMvZnMtdGVzdC11dGlsLmpzJyk7Ci19Ci0KLWRlc2NyaXB0aW9uKCJU
ZXN0cyB1c2luZyB3ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lzdGVtVVJMIHRvIG9idGFpbiBhbiBF
bnRyeSBmcm9tIGEgVVJMIik7Ci0KLXZhciB0ZXN0RmlsZU5hbWUgPSAnL3Rlc3RGaWxlJzsKLXZh
ciBmaWxlU3lzdGVtID0gbnVsbDsKLXZhciBleHBlY3RlZFBhdGggPSBudWxsOwotdmFyIGFjdHVh
bFBhdGggPSBudWxsOwotdmFyIGVycm9yQ29kZSA9IG51bGw7Ci0KLWZ1bmN0aW9uIGVycm9yQ2Fs
bGJhY2soZXJyb3IpIHsKLSAgICBpZiAoZXJyb3IgJiYgZXJyb3IuY29kZSkKLSAgICAgICAgZGVi
dWcoIkVycm9yIG9jY3VycmVkOiAiICsgZXJyb3IuY29kZSk7Ci0gICAgdGVzdEZhaWxlZCgiQmFp
bGluZyBvdXQgZWFybHkiKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotZnVuY3Rpb24gZXhw
ZWN0U2VjdXJpdHlFcnJBbmRSdW5OZXh0KGVycm9yKSB7Ci0gICAgZXJyb3JDb2RlID0gZXJyb3Iu
Y29kZTsKLSAgICBzaG91bGRCZSgiRmlsZUVycm9yLlNFQ1VSSVRZX0VSUiIsICJlcnJvckNvZGUi
KTsKLSAgICBjbGVhbnVwQW5kUnVuTmV4dCgpOwotfQotCi1mdW5jdGlvbiBleHBlY3RFbmNvZGlu
Z0VyckFuZFJ1bk5leHQoZXJyb3IpIHsKLSAgICBlcnJvckNvZGUgPSBlcnJvci5jb2RlOwotICAg
IHNob3VsZEJlKCJGaWxlRXJyb3IuRU5DT0RJTkdfRVJSIiwgImVycm9yQ29kZSIpOwotICAgIGNs
ZWFudXBBbmRSdW5OZXh0KCk7Ci19Ci0KLWZ1bmN0aW9uIGNyZWF0ZVRlc3RGaWxlKGNhbGxiYWNr
KSB7Ci0gICAgZmlsZVN5c3RlbS5yb290LmdldEZpbGUodGVzdEZpbGVOYW1lLCB7Y3JlYXRlOnRy
dWV9LCBjYWxsYmFjaywgZXJyb3JDYWxsYmFjayk7Ci19Ci0KLWZ1bmN0aW9uIGFzc2VydFBhdGhz
TWF0Y2goZXhwZWN0ZWQsIGFjdHVhbCkgewotICAgIGV4cGVjdGVkUGF0aCA9IGV4cGVjdGVkOwot
ICAgIGFjdHVhbFBhdGggPSBhY3R1YWw7Ci0gICAgc2hvdWxkQmUoImV4cGVjdGVkUGF0aCIsICJh
Y3R1YWxQYXRoIik7Ci19Ci0KLXZhciBpc0RpcmVjdG9yeSA9IGZhbHNlOwotZnVuY3Rpb24gYXNz
ZXJ0SXNEaXJlY3RvcnkoZW50cnkpIHsKLSAgICBpc0RpcmVjdG9yeSA9IGVudHJ5LmlzRGlyZWN0
b3J5OwotICAgIHNob3VsZEJlVHJ1ZSgiaXNEaXJlY3RvcnkiKTsKLX0KLQotdmFyIGlzRmlsZSA9
IGZhbHNlOwotZnVuY3Rpb24gYXNzZXJ0SXNGaWxlKGVudHJ5KSB7Ci0gICAgaXNGaWxlID0gZW50
cnkuaXNGaWxlOwotICAgIHNob3VsZEJlVHJ1ZSgiaXNGaWxlIik7Ci19Ci0KLS8vIFRlc3QgYm9k
eSBmdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQotCi1mdW5jdGlvbiBydW5CYXNpY1Rlc3QoKSB7Ci0gICAgZGVidWcoIiogUmVzb2x2
aW5nIGEgZ2VuZXJhdGVkIFVSTC4iKTsKLSAgICBjcmVhdGVUZXN0RmlsZShmdW5jdGlvbihlbnRy
eSkgewotICAgICAgICB3ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lzdGVtVVJMKGVudHJ5LnRvVVJM
KCksIGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgIGFzc2VydFBhdGhzTWF0Y2goZW50cnkuZnVs
bFBhdGgsIGUuZnVsbFBhdGgpOwotICAgICAgICAgICAgYXNzZXJ0SXNGaWxlKGUpOwotICAgICAg
ICAgICAgY2xlYW51cEFuZFJ1bk5leHQoKTsKLSAgICAgICAgfSwgZXJyb3JDYWxsYmFjayk7Ci0g
ICAgfSk7Ci19Ci0KLWZ1bmN0aW9uIHJ1bkhhbmRtYWRlVVJMKCkgewotICAgIGRlYnVnKCIqIFJl
c29sdmluZyB0ZXN0IGZpbGUgYnkgaGFuZCIpOwotICAgIGNyZWF0ZVRlc3RGaWxlKGZ1bmN0aW9u
KGVudHJ5KSB7Ci0gICAgICAgIHdlYmtpdFJlc29sdmVMb2NhbEZpbGVTeXN0ZW1VUkwoImZpbGVz
eXN0ZW06aHR0cDovLzEyNy4wLjAuMTo4MDAwL3RlbXBvcmFyeS90ZXN0RmlsZSIsIGZ1bmN0aW9u
KGUpIHsKLSAgICAgICAgICAgIGFzc2VydFBhdGhzTWF0Y2godGVzdEZpbGVOYW1lLCBlLmZ1bGxQ
YXRoKTsKLSAgICAgICAgICAgIGFzc2VydElzRmlsZShlKTsKLSAgICAgICAgICAgIGNsZWFudXBB
bmRSdW5OZXh0KCk7Ci0gICAgICAgIH0sIGVycm9yQ2FsbGJhY2spOwotICAgIH0pOwotfQotCi1m
dW5jdGlvbiBydW5Xcm9uZ0RvbWFpbigpIHsKLSAgICBkZWJ1ZygiKiBSZXNvbHZpbmcgYSBVUkwg
d2l0aCB0aGUgd3Jvbmcgc2VjdXJpdHkgb3JpZ2luIChkb21haW4pIik7Ci0gICAgd2Via2l0UmVz
b2x2ZUxvY2FsRmlsZVN5c3RlbVVSTCgiZmlsZXN5c3RlbTpodHRwOi8vbG9jYWxob3N0OjgwMDAv
dGVtcG9yYXJ5L2ZvbyIsIGVycm9yQ2FsbGJhY2ssIGV4cGVjdFNlY3VyaXR5RXJyQW5kUnVuTmV4
dCk7Ci19Ci0KLWZ1bmN0aW9uIHJ1bldyb25nUG9ydCgpIHsKLSAgICBkZWJ1ZygiKiBSZXNvbHZp
bmcgYSBVUkwgd2l0aCB0aGUgd3Jvbmcgc2VjdXJpdHkgb3JpZ2luIChwb3J0KSIpOwotICAgIHdl
YmtpdFJlc29sdmVMb2NhbEZpbGVTeXN0ZW1VUkwoImZpbGVzeXN0ZW06aHR0cDovLzEyNy4wLjAu
MTo4MDgwL3RlbXBvcmFyeS9mb28iLCBlcnJvckNhbGxiYWNrLCBleHBlY3RTZWN1cml0eUVyckFu
ZFJ1bk5leHQpOwotfQotCi1mdW5jdGlvbiBydW5Xcm9uZ1NjaGVtZSgpIHsKLSAgICBkZWJ1Zygi
KiBSZXNvbHZpbmcgYSBVUkwgd2l0aCB0aGUgd3Jvbmcgc2VjdXJpdHkgb3JpZ2luIChzY2hlbWUp
Iik7Ci0gICAgd2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVVSTCgiZmlsZXN5c3RlbTpodHRw
czovLzEyNy4wLjAuMTo4MDAwL3RlbXBvcmFyeS9mb28iLCBlcnJvckNhbGxiYWNrLCBleHBlY3RT
ZWN1cml0eUVyckFuZFJ1bk5leHQpOwotfQotCi1mdW5jdGlvbiBydW5Cb2d1c1VSTCgpIHsKLSAg
ICBkZWJ1ZygiKiBSZXNvbHZpbmcgYSBjb21wbGV0ZWx5IGJvZ3VzIFVSTC4iKTsKLSAgICB3ZWJr
aXRSZXNvbHZlTG9jYWxGaWxlU3lzdGVtVVJMKCJmb28iLCBlcnJvckNhbGxiYWNrLCBleHBlY3RF
bmNvZGluZ0VyckFuZFJ1bk5leHQpOwotfQotCi1mdW5jdGlvbiBydW5Xcm9uZ1Byb3RvY29sKCkg
ewotICAgIGRlYnVnKCIqIFJlc29sdmluZyBhIFVSTCB3aXRoIHRoZSB3cm9uZyBwcm90b2NvbCIp
OwotICAgIHdlYmtpdFJlc29sdmVMb2NhbEZpbGVTeXN0ZW1VUkwoImh0dHA6Ly8xMjcuMC4wLjE6
ODAwMC9mb28vYmFyL2JheiIsIGVycm9yQ2FsbGJhY2ssIGV4cGVjdEVuY29kaW5nRXJyQW5kUnVu
TmV4dCk7Ci19Ci0KLWZ1bmN0aW9uIHJ1bk5vdEVub3VnaFNsYXNoZXMoKSB7Ci0gICAgZGVidWco
IiogUmVzb2x2aW5nIGEgVVJMIHdpdGggbm8gc2xhc2ggYmV0d2VlbiB0eXBlIGFuZCBmaWxlIik7
Ci0gICAgY3JlYXRlVGVzdEZpbGUoZnVuY3Rpb24oZW50cnkpIHsKLSAgICAgICAgd2Via2l0UmVz
b2x2ZUxvY2FsRmlsZVN5c3RlbVVSTCgiZmlsZXN5c3RlbTpodHRwOi8vMTI3LjAuMC4xOjgwMDAv
dGVtcG9yYXJ5dGVzdEZpbGUiLCBlcnJvckNhbGxiYWNrLCBleHBlY3RFbmNvZGluZ0VyckFuZFJ1
bk5leHQpOwotICAgIH0pOwotfQotCi1mdW5jdGlvbiBydW5Ob3RFbm91Z2hTbGFzaGVzMigpIHsK
LSAgICBkZWJ1ZygiKiBSZXNvbHZpbmcgYSBVUkwgd2l0aCBubyBzbGFzaCBiZXR3ZWVuIHByb3Rv
Y29sIGFuZCB0eXBlIChib2d1cyBwb3J0KSIpOwotICAgIGNyZWF0ZVRlc3RGaWxlKGZ1bmN0aW9u
KGVudHJ5KSB7Ci0gICAgICAgIHdlYmtpdFJlc29sdmVMb2NhbEZpbGVTeXN0ZW1VUkwoImZpbGVz
eXN0ZW06aHR0cDovLzEyNy4wLjAuMTo4MDAwdGVtcG9yYXJ5L3Rlc3RGaWxlIiwgZXJyb3JDYWxs
YmFjaywgZXhwZWN0U2VjdXJpdHlFcnJBbmRSdW5OZXh0KTsKLSAgICB9KTsKLX0KLQotZnVuY3Rp
b24gcnVuVXNlQmFja1NsYXNoZXMoKSB7Ci0gICAgZGVidWcoIiogUmVzb2x2ZSBhIHBhdGggdXNp
bmcgYmFja3NsYXNoZXMiKTsKLSAgICBmaWxlU3lzdGVtLnJvb3QuZ2V0RGlyZWN0b3J5KCJmb28i
LCB7Y3JlYXRlOnRydWV9LCBmdW5jdGlvbihlbnRyeSkgewotICAgICAgICBlbnRyeS5nZXRGaWxl
KCJ0ZXN0RmlsZSIsIHtjcmVhdGU6dHJ1ZX0sIGZ1bmN0aW9uKGYpIHsKLSAgICAgICAgICAgIHdl
YmtpdFJlc29sdmVMb2NhbEZpbGVTeXN0ZW1VUkwoImZpbGVzeXN0ZW06aHR0cDovLzEyNy4wLjAu
MTo4MDAwL3RlbXBvcmFyeS9mb29cXHRlc3RGaWxlIiwgZnVuY3Rpb24oZSkgewotICAgICAgICAg
ICAgICAgIGFzc2VydFBhdGhzTWF0Y2goIi9mb28vdGVzdEZpbGUiLCBlLmZ1bGxQYXRoKTsKLSAg
ICAgICAgICAgICAgICBhc3NlcnRJc0ZpbGUoZSk7Ci0gICAgICAgICAgICAgICAgY2xlYW51cEFu
ZFJ1bk5leHQoKTsKLSAgICAgICAgICAgIH0sIGVycm9yQ2FsbGJhY2spOwotICAgICAgICB9LCBl
cnJvckNhbGxiYWNrKTsKLSAgICB9LCBlcnJvckNhbGxiYWNrKTsKLX0KLQotZnVuY3Rpb24gcnVu
RGlyZWN0b3J5KCkgewotICAgIGRlYnVnKCIqIFJlc29sdmUgYSBkaXJlY3RvcnkiKTsKLSAgICBm
aWxlU3lzdGVtLnJvb3QuZ2V0RGlyZWN0b3J5KCJmb28iLCB7Y3JlYXRlOnRydWV9LCBmdW5jdGlv
bihlbnRyeSkgewotICAgICAgICB3ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lzdGVtVVJMKCJmaWxl
c3lzdGVtOmh0dHA6Ly8xMjcuMC4wLjE6ODAwMC90ZW1wb3JhcnkvZm9vIiwgZnVuY3Rpb24oZSkg
ewotICAgICAgICAgICAgYXNzZXJ0UGF0aHNNYXRjaCgiL2ZvbyIsIGUuZnVsbFBhdGgpOwotICAg
ICAgICAgICAgYXNzZXJ0SXNEaXJlY3RvcnkoZSk7Ci0gICAgICAgICAgICBjbGVhbnVwQW5kUnVu
TmV4dCgpOwotICAgICAgICB9LCBlcnJvckNhbGxiYWNrKTsKLSAgICB9LCBlcnJvckNhbGxiYWNr
KTsKLX0KLQotZnVuY3Rpb24gcnVuV2l0aFRyYWlsaW5nU2xhc2goKSB7Ci0gICAgZGVidWcoIiog
UmVzb2x2ZSBhIHBhdGggdXNpbmcgYSB0cmFpbGluZyBzbGFzaCIpOwotICAgIGZpbGVTeXN0ZW0u
cm9vdC5nZXREaXJlY3RvcnkoImZvbyIsIHtjcmVhdGU6dHJ1ZX0sIGZ1bmN0aW9uKGVudHJ5KSB7
Ci0gICAgICAgIHdlYmtpdFJlc29sdmVMb2NhbEZpbGVTeXN0ZW1VUkwoImZpbGVzeXN0ZW06aHR0
cDovLzEyNy4wLjAuMTo4MDAwL3RlbXBvcmFyeS9mb28vIiwgZnVuY3Rpb24oZSkgewotICAgICAg
ICAgICAgYXNzZXJ0UGF0aHNNYXRjaCgiL2ZvbyIsIGUuZnVsbFBhdGgpOwotICAgICAgICAgICAg
YXNzZXJ0SXNEaXJlY3RvcnkoZSk7Ci0gICAgICAgICAgICBjbGVhbnVwQW5kUnVuTmV4dCgpOwot
ICAgICAgICB9LCBlcnJvckNhbGxiYWNrKTsKLSAgICB9LCBlcnJvckNhbGxiYWNrKTsKLX0KLQot
ZnVuY3Rpb24gcnVuUGVyc2lzdGVudFRlc3QoKSB7Ci0gICAgZGVidWcoIiogUmVzb2x2aW5nIGEg
cGVyc2lzdGVudCBVUkwuIik7Ci0gICAgd2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0oUEVSU0lTVEVO
VCwgMTAwLCBmdW5jdGlvbihmcykgewotICAgICAgICB3ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lz
dGVtVVJMKGZzLnJvb3QudG9VUkwoKSwgZnVuY3Rpb24oZW50cnkpIHsKLSAgICAgICAgICAgIGFz
c2VydFBhdGhzTWF0Y2goIi8iLCBlbnRyeS5mdWxsUGF0aCk7Ci0gICAgICAgICAgICBhc3NlcnRJ
c0RpcmVjdG9yeShlbnRyeSk7Ci0gICAgICAgICAgICBjbGVhbnVwQW5kUnVuTmV4dCgpOwotICAg
ICAgICB9LCBlcnJvckNhbGxiYWNrKTsKLSAgICB9KTsKLX0KLQotLy8gRW5kIG9mIHRlc3QgYm9k
eSBmdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ci0KLXZhciB0ZXN0c0xpc3QgPSBbCi0gICAgcnVuQmFzaWNUZXN0LAotICAgIHJ1bkhhbmRtYWRl
VVJMLAotICAgIHJ1bldyb25nRG9tYWluLAotICAgIHJ1bldyb25nUG9ydCwKLSAgICBydW5Xcm9u
Z1NjaGVtZSwKLSAgICBydW5Cb2d1c1VSTCwKLSAgICBydW5Xcm9uZ1Byb3RvY29sLAotICAgIHJ1
bk5vdEVub3VnaFNsYXNoZXMsCi0gICAgcnVuTm90RW5vdWdoU2xhc2hlczIsCi0gICAgcnVuVXNl
QmFja1NsYXNoZXMsCi0gICAgcnVuRGlyZWN0b3J5LAotICAgIHJ1bldpdGhUcmFpbGluZ1NsYXNo
LAotICAgIHJ1blBlcnNpc3RlbnRUZXN0LAotXTsKLXZhciB0ZXN0Q291bnRlciA9IDA7Ci0KLWZ1
bmN0aW9uIHJ1bk5leHRUZXN0KCkgewotICAgIGlmICh0ZXN0Q291bnRlciA9PSB0ZXN0c0xpc3Qu
bGVuZ3RoKSB7Ci0gICAgICAgIGRlYnVnKCJGaW5pc2hlZCBydW5uaW5nIHRlc3RzLiIpOwotICAg
ICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9IGVsc2UKLSAgICAgICAgdGVzdHNMaXN0W3Rlc3RD
b3VudGVyKytdKCk7Ci19Ci0KLWZ1bmN0aW9uIGNsZWFudXBBbmRSdW5OZXh0KCkgewotICAgIHJl
bW92ZUFsbEluRGlyZWN0b3J5KGZpbGVTeXN0ZW0ucm9vdCwgcnVuTmV4dFRlc3QsIHJ1bk5leHRU
ZXN0KTsKLX0KLQotZnVuY3Rpb24gZmlsZVN5c3RlbUNhbGxiYWNrKGZzKSB7Ci0gICAgZmlsZVN5
c3RlbSA9IGZzOwotICAgIGNsZWFudXBBbmRSdW5OZXh0KCk7Ci19Ci0KLWlmICh0aGlzLndlYmtp
dFJlcXVlc3RGaWxlU3lzdGVtKSB7Ci0gICAganNUZXN0SXNBc3luYyA9IHRydWU7Ci0gICAgd2Vi
a2l0UmVxdWVzdEZpbGVTeXN0ZW0odGhpcy5URU1QT1JBUlksIDEwMCwgZmlsZVN5c3RlbUNhbGxi
YWNrLCBlcnJvckNhbGxiYWNrKTsKLX0gZWxzZQotICAgIGRlYnVnKCJUaGlzIHRlc3QgcmVxdWly
ZXMgRmlsZVN5c3RlbSBBUEkgc3VwcG9ydC4iKTsKLQotdmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9
IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2ZpbGVzeXN0ZW0vd29ya2Vycy9y
ZXNvbHZlLXVybC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9maWxlc3lzdGVtL3dvcmtlcnMvcmVzb2x2ZS11cmwtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2ZpbGVzeXN0ZW0vd29ya2Vycy9y
ZXNvbHZlLXVybC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNDMgKzAsMCBAQAot
W1dvcmtlcl0gVGVzdHMgdXNpbmcgd2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVVSTCB0byBv
YnRhaW4gYW4gRW50cnkgZnJvbSBhIFVSTAotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0K
LQotU3RhcnRpbmcgd29ya2VyOiAuLi9zY3JpcHQtdGVzdHMvcmVzb2x2ZS11cmkuanMKLVtXb3Jr
ZXJdICogUmVzb2x2aW5nIGEgZ2VuZXJhdGVkIFVSTC4KLVBBU1MgW1dvcmtlcl0gZXhwZWN0ZWRQ
YXRoIGlzIGFjdHVhbFBhdGgKLVBBU1MgW1dvcmtlcl0gaXNGaWxlIGlzIHRydWUKLVtXb3JrZXJd
ICogUmVzb2x2aW5nIHRlc3QgZmlsZSBieSBoYW5kCi1QQVNTIFtXb3JrZXJdIGV4cGVjdGVkUGF0
aCBpcyBhY3R1YWxQYXRoCi1QQVNTIFtXb3JrZXJdIGlzRmlsZSBpcyB0cnVlCi1bV29ya2VyXSAq
IFJlc29sdmluZyBhIFVSTCB3aXRoIHRoZSB3cm9uZyBzZWN1cml0eSBvcmlnaW4gKGRvbWFpbikK
LVBBU1MgW1dvcmtlcl0gRmlsZUVycm9yLlNFQ1VSSVRZX0VSUiBpcyBlcnJvckNvZGUKLVtXb3Jr
ZXJdICogUmVzb2x2aW5nIGEgVVJMIHdpdGggdGhlIHdyb25nIHNlY3VyaXR5IG9yaWdpbiAocG9y
dCkKLVBBU1MgW1dvcmtlcl0gRmlsZUVycm9yLlNFQ1VSSVRZX0VSUiBpcyBlcnJvckNvZGUKLVtX
b3JrZXJdICogUmVzb2x2aW5nIGEgVVJMIHdpdGggdGhlIHdyb25nIHNlY3VyaXR5IG9yaWdpbiAo
c2NoZW1lKQotUEFTUyBbV29ya2VyXSBGaWxlRXJyb3IuU0VDVVJJVFlfRVJSIGlzIGVycm9yQ29k
ZQotW1dvcmtlcl0gKiBSZXNvbHZpbmcgYSBjb21wbGV0ZWx5IGJvZ3VzIFVSTC4KLVBBU1MgW1dv
cmtlcl0gRmlsZUVycm9yLkVOQ09ESU5HX0VSUiBpcyBlcnJvckNvZGUKLVtXb3JrZXJdICogUmVz
b2x2aW5nIGEgVVJMIHdpdGggdGhlIHdyb25nIHByb3RvY29sCi1QQVNTIFtXb3JrZXJdIEZpbGVF
cnJvci5FTkNPRElOR19FUlIgaXMgZXJyb3JDb2RlCi1bV29ya2VyXSAqIFJlc29sdmluZyBhIFVS
TCB3aXRoIG5vIHNsYXNoIGJldHdlZW4gdHlwZSBhbmQgZmlsZQotUEFTUyBbV29ya2VyXSBGaWxl
RXJyb3IuRU5DT0RJTkdfRVJSIGlzIGVycm9yQ29kZQotW1dvcmtlcl0gKiBSZXNvbHZpbmcgYSBV
Ukwgd2l0aCBubyBzbGFzaCBiZXR3ZWVuIHByb3RvY29sIGFuZCB0eXBlIChib2d1cyBwb3J0KQot
UEFTUyBbV29ya2VyXSBGaWxlRXJyb3IuU0VDVVJJVFlfRVJSIGlzIGVycm9yQ29kZQotW1dvcmtl
cl0gKiBSZXNvbHZlIGEgcGF0aCB1c2luZyBiYWNrc2xhc2hlcwotUEFTUyBbV29ya2VyXSBleHBl
Y3RlZFBhdGggaXMgYWN0dWFsUGF0aAotUEFTUyBbV29ya2VyXSBpc0ZpbGUgaXMgdHJ1ZQotW1dv
cmtlcl0gKiBSZXNvbHZlIGEgZGlyZWN0b3J5Ci1QQVNTIFtXb3JrZXJdIGV4cGVjdGVkUGF0aCBp
cyBhY3R1YWxQYXRoCi1QQVNTIFtXb3JrZXJdIGlzRGlyZWN0b3J5IGlzIHRydWUKLVtXb3JrZXJd
ICogUmVzb2x2ZSBhIHBhdGggdXNpbmcgYSB0cmFpbGluZyBzbGFzaAotUEFTUyBbV29ya2VyXSBl
eHBlY3RlZFBhdGggaXMgYWN0dWFsUGF0aAotUEFTUyBbV29ya2VyXSBpc0RpcmVjdG9yeSBpcyB0
cnVlCi1bV29ya2VyXSAqIFJlc29sdmluZyBhIHBlcnNpc3RlbnQgVVJMLgotUEFTUyBbV29ya2Vy
XSBleHBlY3RlZFBhdGggaXMgYWN0dWFsUGF0aAotUEFTUyBbV29ya2VyXSBpc0RpcmVjdG9yeSBp
cyB0cnVlCi1bV29ya2VyXSBGaW5pc2hlZCBydW5uaW5nIHRlc3RzLgotUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KSW5kZXg6IExheW91dFRlc3RzL2h0
dHAvdGVzdHMvZmlsZXN5c3RlbS93b3JrZXJzL3Jlc29sdmUtdXJsLXN5bmMtZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvZmlsZXN5c3RlbS93b3JrZXJz
L3Jlc29sdmUtdXJsLXN5bmMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2ZpbGVzeXN0ZW0vd29ya2Vycy9yZXNvbHZlLXVybC1zeW5jLWV4
cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw0MyArMCwwIEBACi1bV29ya2VyXSBUZXN0
cyB1c2luZyB3ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lzdGVtU3luY1VSTCB0byBvYnRhaW4gYW4g
RW50cnkgZnJvbSBhIFVSTAotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLQotU3RhcnRp
bmcgd29ya2VyOiBzY3JpcHQtdGVzdHMvcmVzb2x2ZS11cmwtc3luYy5qcwotW1dvcmtlcl0gKiBS
ZXNvbHZpbmcgYSBnZW5lcmF0ZWQgVVJMLgotUEFTUyBbV29ya2VyXSBleHBlY3RlZFBhdGggaXMg
YWN0dWFsUGF0aAotUEFTUyBbV29ya2VyXSBpc0ZpbGUgaXMgdHJ1ZQotW1dvcmtlcl0gKiBSZXNv
bHZpbmcgdGVzdCBmaWxlIGJ5IGhhbmQKLVBBU1MgW1dvcmtlcl0gZXhwZWN0ZWRQYXRoIGlzIGFj
dHVhbFBhdGgKLVBBU1MgW1dvcmtlcl0gaXNGaWxlIGlzIHRydWUKLVtXb3JrZXJdICogUmVzb2x2
aW5nIGEgVVJMIHdpdGggdGhlIHdyb25nIHNlY3VyaXR5IG9yaWdpbiAoZG9tYWluKQotUEFTUyBb
V29ya2VyXSBGaWxlRXhjZXB0aW9uLlNFQ1VSSVRZX0VSUiBpcyBlcnJvckNvZGUKLVtXb3JrZXJd
ICogUmVzb2x2aW5nIGEgVVJMIHdpdGggdGhlIHdyb25nIHNlY3VyaXR5IG9yaWdpbiAocG9ydCkK
LVBBU1MgW1dvcmtlcl0gRmlsZUV4Y2VwdGlvbi5TRUNVUklUWV9FUlIgaXMgZXJyb3JDb2RlCi1b
V29ya2VyXSAqIFJlc29sdmluZyBhIFVSTCB3aXRoIHRoZSB3cm9uZyBzZWN1cml0eSBvcmlnaW4g
KHNjaGVtZSkKLVBBU1MgW1dvcmtlcl0gRmlsZUV4Y2VwdGlvbi5TRUNVUklUWV9FUlIgaXMgZXJy
b3JDb2RlCi1bV29ya2VyXSAqIFJlc29sdmluZyBhIGNvbXBsZXRlbHkgYm9ndXMgVVJMLgotUEFT
UyBbV29ya2VyXSBGaWxlRXhjZXB0aW9uLkVOQ09ESU5HX0VSUiBpcyBlcnJvckNvZGUKLVtXb3Jr
ZXJdICogUmVzb2x2aW5nIGEgVVJMIHdpdGggdGhlIHdyb25nIHByb3RvY29sCi1QQVNTIFtXb3Jr
ZXJdIEZpbGVFeGNlcHRpb24uRU5DT0RJTkdfRVJSIGlzIGVycm9yQ29kZQotW1dvcmtlcl0gKiBS
ZXNvbHZpbmcgYSBVUkwgd2l0aCBubyBzbGFzaCBiZXR3ZWVuIHR5cGUgYW5kIGZpbGUKLVBBU1Mg
W1dvcmtlcl0gRmlsZUV4Y2VwdGlvbi5FTkNPRElOR19FUlIgaXMgZXJyb3JDb2RlCi1bV29ya2Vy
XSAqIFJlc29sdmluZyBhIFVSTCB3aXRoIG5vIHNsYXNoIGJldHdlZW4gcHJvdG9jb2wgYW5kIHR5
cGUgKGJvZ3VzIHBvcnQpCi1QQVNTIFtXb3JrZXJdIEZpbGVFeGNlcHRpb24uU0VDVVJJVFlfRVJS
IGlzIGVycm9yQ29kZQotW1dvcmtlcl0gKiBSZXNvbHZlIGEgcGF0aCB1c2luZyBiYWNrc2xhc2hl
cwotUEFTUyBbV29ya2VyXSBleHBlY3RlZFBhdGggaXMgYWN0dWFsUGF0aAotUEFTUyBbV29ya2Vy
XSBpc0ZpbGUgaXMgdHJ1ZQotW1dvcmtlcl0gKiBSZXNvbHZlIGEgZGlyZWN0b3J5Ci1QQVNTIFtX
b3JrZXJdIGV4cGVjdGVkUGF0aCBpcyBhY3R1YWxQYXRoCi1QQVNTIFtXb3JrZXJdIGlzRGlyZWN0
b3J5IGlzIHRydWUKLVtXb3JrZXJdICogUmVzb2x2ZSBhIHBhdGggdXNpbmcgYSB0cmFpbGluZyBz
bGFzaAotUEFTUyBbV29ya2VyXSBleHBlY3RlZFBhdGggaXMgYWN0dWFsUGF0aAotUEFTUyBbV29y
a2VyXSBpc0RpcmVjdG9yeSBpcyB0cnVlCi1bV29ya2VyXSAqIFJlc29sdmluZyBhIHBlcnNpc3Rl
bnQgVVJMLgotUEFTUyBbV29ya2VyXSBleHBlY3RlZFBhdGggaXMgYWN0dWFsUGF0aAotUEFTUyBb
V29ya2VyXSBpc0RpcmVjdG9yeSBpcyB0cnVlCi1bV29ya2VyXSBGaW5pc2hlZCBydW5uaW5nIHRl
c3RzLgotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0K
SW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvZmlsZXN5c3RlbS93b3JrZXJzL3Jlc29sdmUt
dXJsLXN5bmMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2ZpbGVz
eXN0ZW0vd29ya2Vycy9yZXNvbHZlLXVybC1zeW5jLmh0bWwJKHJldmlzaW9uIDE1NjY5MSkKKysr
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvZmlsZXN5c3RlbS93b3JrZXJzL3Jlc29sdmUtdXJsLXN5
bmMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxNCArMCwwIEBACi08aHRtbD4KLTxoZWFkPgot
PHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2ZzLXdvcmtlci10ZXN0LXV0aWwuanMiPjwvc2Ny
aXB0PgotPC9oZWFkPgotPGJvZHk+Ci08cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KLTxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgotPHNjcmlwdD4KLXN0YXJ0V29ya2VyKCdzY3JpcHQtdGVzdHMvcmVz
b2x2ZS11cmwtc3luYy5qcycpOwotPC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4
OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2ZpbGVzeXN0ZW0vd29ya2Vycy9yZXNvbHZlLXVybC5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvZmlsZXN5c3RlbS93b3Jr
ZXJzL3Jlc29sdmUtdXJsLmh0bWwJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvZmlsZXN5c3RlbS93b3JrZXJzL3Jlc29sdmUtdXJsLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMTQgKzAsMCBAQAotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIvanMtdGVz
dC1yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL3Jl
c291cmNlcy9mcy13b3JrZXItdGVzdC11dGlsLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5
PgotPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Ci08ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KLTxz
Y3JpcHQ+Ci1zdGFydFdvcmtlcignLi4vc2NyaXB0LXRlc3RzL3Jlc29sdmUtdXJpLmpzJyk7Ci08
L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVz
dHMvZmlsZXN5c3RlbS93b3JrZXJzL3NjcmlwdC10ZXN0cy9URU1QTEFURS5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvZmlsZXN5c3RlbS93b3JrZXJzL3NjcmlwdC10
ZXN0cy9URU1QTEFURS5odG1sCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2ZpbGVzeXN0ZW0vd29ya2Vycy9zY3JpcHQtdGVzdHMvVEVNUExBVEUuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMSwxNCArMCwwIEBACi08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9
Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNy
Yz0iLi4vcmVzb3VyY2VzL2ZzLXdvcmtlci10ZXN0LXV0aWwuanMiPjwvc2NyaXB0PgotPC9oZWFk
PgotPGJvZHk+Ci08cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KLTxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgotPHNjcmlwdD4KLXN0YXJ0V29ya2VyKCdZT1VSX0pTX0ZJTEVfSEVSRScpOwotPC9zY3Jp
cHQ+Ci08c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Zp
bGVzeXN0ZW0vd29ya2Vycy9zY3JpcHQtdGVzdHMvcmVzb2x2ZS11cmwtc3luYy5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2ZpbGVzeXN0ZW0vd29ya2Vycy9zY3JpcHQt
dGVzdHMvcmVzb2x2ZS11cmwtc3luYy5qcwkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9maWxlc3lzdGVtL3dvcmtlcnMvc2NyaXB0LXRlc3RzL3Jlc29sdmUtdXJs
LXN5bmMuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsMTk5ICswLDAgQEAKLWlmICh0aGlzLmltcG9y
dFNjcmlwdHMpIHsKLSAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi9yZXNvdXJjZXMvZnMtd29ya2Vy
LWNvbW1vbi5qcycpOwotICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uL3Jlc291cmNlcy9mcy10ZXN0
LXV0aWwuanMnKTsKLX0KLQotZGVzY3JpcHRpb24oIlRlc3RzIHVzaW5nIHdlYmtpdFJlc29sdmVM
b2NhbEZpbGVTeXN0ZW1TeW5jVVJMIHRvIG9idGFpbiBhbiBFbnRyeSBmcm9tIGEgVVJMIik7Ci0K
LXZhciB0ZXN0RmlsZU5hbWUgPSAnL3Rlc3RGaWxlJzsKLXZhciBmaWxlU3lzdGVtID0gbnVsbDsK
LQotdmFyIGV4cGVjdGVkUGF0aCA9IG51bGw7Ci12YXIgYWN0dWFsUGF0aCA9IG51bGw7Ci12YXIg
ZXJyb3JDb2RlID0gbnVsbDsKLQotZnVuY3Rpb24gY3JlYXRlVGVzdEZpbGUoKSB7Ci0gICAgcmV0
dXJuIGZpbGVTeXN0ZW0ucm9vdC5nZXRGaWxlKHRlc3RGaWxlTmFtZSwge2NyZWF0ZTp0cnVlfSk7
Ci19Ci0KLWZ1bmN0aW9uIGFzc2VydEVuY29kaW5nRXJyKGNvZGUpIHsKLSAgICBlcnJvckNvZGUg
PSBjb2RlOwotICAgIHNob3VsZEJlKCJGaWxlRXhjZXB0aW9uLkVOQ09ESU5HX0VSUiIsICJlcnJv
ckNvZGUiKTsKLX0KLQotZnVuY3Rpb24gYXNzZXJ0U2VjdXJpdHlFcnIoY29kZSkgewotICAgIGVy
cm9yQ29kZSA9IGNvZGU7Ci0gICAgc2hvdWxkQmUoIkZpbGVFeGNlcHRpb24uU0VDVVJJVFlfRVJS
IiwgImVycm9yQ29kZSIpOwotfQotCi1mdW5jdGlvbiBhc3NlcnRQYXRoc01hdGNoKGV4cGVjdGVk
LCBhY3R1YWwpIHsKLSAgICBleHBlY3RlZFBhdGggPSBleHBlY3RlZDsKLSAgICBhY3R1YWxQYXRo
ID0gYWN0dWFsOwotICAgIHNob3VsZEJlKCJleHBlY3RlZFBhdGgiLCAiYWN0dWFsUGF0aCIpOwot
fQotCi12YXIgaXNEaXJlY3RvcnkgPSBmYWxzZTsKLWZ1bmN0aW9uIGFzc2VydElzRGlyZWN0b3J5
KGVudHJ5KSB7Ci0gICAgaXNEaXJlY3RvcnkgPSBlbnRyeS5pc0RpcmVjdG9yeTsKLSAgICBzaG91
bGRCZVRydWUoImlzRGlyZWN0b3J5Iik7Ci19Ci0KLXZhciBpc0ZpbGUgPSBmYWxzZTsKLWZ1bmN0
aW9uIGFzc2VydElzRmlsZShlbnRyeSkgewotICAgIGlzRmlsZSA9IGVudHJ5LmlzRmlsZTsKLSAg
ICBzaG91bGRCZVRydWUoImlzRmlsZSIpOwotfQotCi0vLyBUZXN0IGJvZHkgZnVuY3Rpb25zIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotZnVu
Y3Rpb24gcnVuQmFzaWNUZXN0KCkgewotICAgIGRlYnVnKCIqIFJlc29sdmluZyBhIGdlbmVyYXRl
ZCBVUkwuIik7Ci0gICAgZW50cnkgPSBjcmVhdGVUZXN0RmlsZSgpOwotICAgIHZhciBlID0gd2Vi
a2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVN5bmNVUkwoZW50cnkudG9VUkwoKSk7Ci0gICAgYXNz
ZXJ0UGF0aHNNYXRjaChlbnRyeS5mdWxsUGF0aCwgZS5mdWxsUGF0aCk7Ci0gICAgYXNzZXJ0SXNG
aWxlKGUpOwotfQotCi1mdW5jdGlvbiBydW5IYW5kbWFkZVVSTCgpIHsKLSAgICBkZWJ1ZygiKiBS
ZXNvbHZpbmcgdGVzdCBmaWxlIGJ5IGhhbmQiKTsKLSAgICBlbnRyeSA9IGNyZWF0ZVRlc3RGaWxl
KCk7Ci0gICAgdmFyIGUgPSB3ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lzdGVtU3luY1VSTCgiZmls
ZXN5c3RlbTpodHRwOi8vMTI3LjAuMC4xOjgwMDAvdGVtcG9yYXJ5L3Rlc3RGaWxlIik7Ci0gICAg
YXNzZXJ0UGF0aHNNYXRjaCh0ZXN0RmlsZU5hbWUsIGUuZnVsbFBhdGgpOwotICAgIGFzc2VydElz
RmlsZShlKTsKLX0KLQotZnVuY3Rpb24gcnVuV3JvbmdEb21haW4oKSB7Ci0gICAgZGVidWcoIiog
UmVzb2x2aW5nIGEgVVJMIHdpdGggdGhlIHdyb25nIHNlY3VyaXR5IG9yaWdpbiAoZG9tYWluKSIp
OwotICAgIHRyeSB7Ci0gICAgICAgIHdlYmtpdFJlc29sdmVMb2NhbEZpbGVTeXN0ZW1TeW5jVVJM
KCJmaWxlc3lzdGVtOmh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC90ZW1wb3JhcnkvZm9vIik7Ci0gICAg
ICAgIHRlc3RGYWlsZWQoKTsKLSAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgIGFzc2VydFNlY3Vy
aXR5RXJyKGUuY29kZSk7Ci0gICAgfQotfQotCi1mdW5jdGlvbiBydW5Xcm9uZ1BvcnQoKSB7Ci0g
ICAgZGVidWcoIiogUmVzb2x2aW5nIGEgVVJMIHdpdGggdGhlIHdyb25nIHNlY3VyaXR5IG9yaWdp
biAocG9ydCkiKTsKLSAgICB0cnkgewotICAgICAgICB3ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lz
dGVtU3luY1VSTCgiZmlsZXN5c3RlbTpodHRwOi8vMTI3LjAuMC4xOjgwODAvdGVtcG9yYXJ5L2Zv
byIpOwotICAgICAgICB0ZXN0RmFpbGVkKCk7Ci0gICAgfSBjYXRjaCAoZSkgewotICAgICAgICBh
c3NlcnRTZWN1cml0eUVycihlLmNvZGUpOwotICAgIH0KLX0KLQotZnVuY3Rpb24gcnVuV3JvbmdT
Y2hlbWUoKSB7Ci0gICAgZGVidWcoIiogUmVzb2x2aW5nIGEgVVJMIHdpdGggdGhlIHdyb25nIHNl
Y3VyaXR5IG9yaWdpbiAoc2NoZW1lKSIpOwotICAgIHRyeSB7Ci0gICAgICAgIHdlYmtpdFJlc29s
dmVMb2NhbEZpbGVTeXN0ZW1TeW5jVVJMKCJmaWxlc3lzdGVtOmh0dHBzOi8vMTI3LjAuMC4xOjgw
MDAvdGVtcG9yYXJ5L2ZvbyIpOwotICAgICAgICB0ZXN0RmFpbGVkKCk7Ci0gICAgfSBjYXRjaCAo
ZSkgewotICAgICAgICBhc3NlcnRTZWN1cml0eUVycihlLmNvZGUpOwotICAgIH0KLX0KLQotZnVu
Y3Rpb24gcnVuQm9ndXNVUkwoKSB7Ci0gICAgZGVidWcoIiogUmVzb2x2aW5nIGEgY29tcGxldGVs
eSBib2d1cyBVUkwuIik7Ci0gICAgdHJ5IHsKLSAgICAgICAgd2Via2l0UmVzb2x2ZUxvY2FsRmls
ZVN5c3RlbVN5bmNVUkwoImZvbyIpOwotICAgICAgICB0ZXN0RmFpbGVkKCk7Ci0gICAgfSBjYXRj
aCAoZSkgewotICAgICAgICBhc3NlcnRFbmNvZGluZ0VycihlLmNvZGUpOwotICAgIH0KLX0KLQot
ZnVuY3Rpb24gcnVuV3JvbmdQcm90b2NvbCgpIHsKLSAgICBkZWJ1ZygiKiBSZXNvbHZpbmcgYSBV
Ukwgd2l0aCB0aGUgd3JvbmcgcHJvdG9jb2wiKTsKLSAgICB0cnkgewotICAgICAgICB3ZWJraXRS
ZXNvbHZlTG9jYWxGaWxlU3lzdGVtU3luY1VSTCgiaHR0cDovLzEyNy4wLjAuMTo4MDAwL2Zvby9i
YXIvYmF6Iik7Ci0gICAgICAgIHRlc3RGYWlsZWQoKTsKLSAgICB9IGNhdGNoIChlKSB7Ci0gICAg
ICAgIGFzc2VydEVuY29kaW5nRXJyKGUuY29kZSk7Ci0gICAgfQotfQotCi1mdW5jdGlvbiBydW5O
b3RFbm91Z2hTbGFzaGVzKCkgewotICAgIGRlYnVnKCIqIFJlc29sdmluZyBhIFVSTCB3aXRoIG5v
IHNsYXNoIGJldHdlZW4gdHlwZSBhbmQgZmlsZSIpOwotICAgIGVudHJ5ID0gY3JlYXRlVGVzdEZp
bGUoKTsKLSAgICB0cnkgewotICAgICAgICB3ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lzdGVtU3lu
Y1VSTCgiZmlsZXN5c3RlbTpodHRwOi8vMTI3LjAuMC4xOjgwMDAvdGVtcG9yYXJ5dGVzdEZpbGUi
KTsKLSAgICAgICAgdGVzdEZhaWxlZCgpOwotICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgYXNz
ZXJ0RW5jb2RpbmdFcnIoZS5jb2RlKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHJ1bk5vdEVub3Vn
aFNsYXNoZXMyKCkgewotICAgIGRlYnVnKCIqIFJlc29sdmluZyBhIFVSTCB3aXRoIG5vIHNsYXNo
IGJldHdlZW4gcHJvdG9jb2wgYW5kIHR5cGUgKGJvZ3VzIHBvcnQpIik7Ci0gICAgZW50cnkgPSBj
cmVhdGVUZXN0RmlsZSgpOwotICAgIHRyeSB7Ci0gICAgICAgIHdlYmtpdFJlc29sdmVMb2NhbEZp
bGVTeXN0ZW1TeW5jVVJMKCJmaWxlc3lzdGVtOmh0dHA6Ly8xMjcuMC4wLjE6ODAwMHRlbXBvcmFy
eS90ZXN0RmlsZSIpOwotICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgYXNzZXJ0U2VjdXJpdHlF
cnIoZS5jb2RlKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHJ1blVzZUJhY2tTbGFzaGVzKCkgewot
ICAgIGRlYnVnKCIqIFJlc29sdmUgYSBwYXRoIHVzaW5nIGJhY2tzbGFzaGVzIik7Ci0gICAgZW50
cnkgPSBmaWxlU3lzdGVtLnJvb3QuZ2V0RGlyZWN0b3J5KCJmb28iLCB7Y3JlYXRlOnRydWV9KS5n
ZXRGaWxlKCJ0ZXN0RmlsZSIsIHtjcmVhdGU6dHJ1ZX0pOwotICAgIHZhciBlID0gd2Via2l0UmVz
b2x2ZUxvY2FsRmlsZVN5c3RlbVN5bmNVUkwoImZpbGVzeXN0ZW06aHR0cDovLzEyNy4wLjAuMTo4
MDAwL3RlbXBvcmFyeS9mb29cXHRlc3RGaWxlIik7Ci0gICAgYXNzZXJ0UGF0aHNNYXRjaCgiL2Zv
by90ZXN0RmlsZSIsIGUuZnVsbFBhdGgpOwotICAgIGFzc2VydElzRmlsZShlKTsKLX0KLQotZnVu
Y3Rpb24gcnVuRGlyZWN0b3J5KCkgewotICAgIGRlYnVnKCIqIFJlc29sdmUgYSBkaXJlY3Rvcnki
KTsKLSAgICBlbnRyeSA9IGZpbGVTeXN0ZW0ucm9vdC5nZXREaXJlY3RvcnkoImZvbyIsIHtjcmVh
dGU6dHJ1ZX0pOwotICAgIHZhciBlID0gd2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVN5bmNV
UkwoImZpbGVzeXN0ZW06aHR0cDovLzEyNy4wLjAuMTo4MDAwL3RlbXBvcmFyeS9mb28iKTsKLSAg
ICBhc3NlcnRQYXRoc01hdGNoKCIvZm9vIiwgZS5mdWxsUGF0aCk7Ci0gICAgYXNzZXJ0SXNEaXJl
Y3RvcnkoZSk7Ci19Ci0KLWZ1bmN0aW9uIHJ1bldpdGhUcmFpbGluZ1NsYXNoKCkgewotICAgIGRl
YnVnKCIqIFJlc29sdmUgYSBwYXRoIHVzaW5nIGEgdHJhaWxpbmcgc2xhc2giKTsKLSAgICBlbnRy
eSA9IGZpbGVTeXN0ZW0ucm9vdC5nZXREaXJlY3RvcnkoImZvbyIsIHtjcmVhdGU6dHJ1ZX0pOwot
ICAgIHZhciBlID0gd2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVN5bmNVUkwoImZpbGVzeXN0
ZW06aHR0cDovLzEyNy4wLjAuMTo4MDAwL3RlbXBvcmFyeS9mb28vIik7Ci0gICAgYXNzZXJ0UGF0
aHNNYXRjaCgiL2ZvbyIsIGUuZnVsbFBhdGgpOwotICAgIGFzc2VydElzRGlyZWN0b3J5KGUpOwot
fQotCi1mdW5jdGlvbiBydW5QZXJzaXN0ZW50VGVzdCgpIHsKLSAgICBkZWJ1ZygiKiBSZXNvbHZp
bmcgYSBwZXJzaXN0ZW50IFVSTC4iKTsKLSAgICB2YXIgZnMgPSB3ZWJraXRSZXF1ZXN0RmlsZVN5
c3RlbVN5bmMoUEVSU0lTVEVOVCwgMTAwKTsKLSAgICBlbnRyeSA9IHdlYmtpdFJlc29sdmVMb2Nh
bEZpbGVTeXN0ZW1TeW5jVVJMKGZzLnJvb3QudG9VUkwoKSk7Ci0gICAgYXNzZXJ0UGF0aHNNYXRj
aCgiLyIsIGVudHJ5LmZ1bGxQYXRoKTsKLSAgICBhc3NlcnRJc0RpcmVjdG9yeShlbnRyeSk7Ci19
Ci0KLS8vIEVuZCBvZiB0ZXN0IGJvZHkgZnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi12YXIgdGVzdHNMaXN0ID0gWwotICAgIHJ1bkJhc2lj
VGVzdCwKLSAgICBydW5IYW5kbWFkZVVSTCwKLSAgICBydW5Xcm9uZ0RvbWFpbiwKLSAgICBydW5X
cm9uZ1BvcnQsCi0gICAgcnVuV3JvbmdTY2hlbWUsCi0gICAgcnVuQm9ndXNVUkwsCi0gICAgcnVu
V3JvbmdQcm90b2NvbCwKLSAgICBydW5Ob3RFbm91Z2hTbGFzaGVzLAotICAgIHJ1bk5vdEVub3Vn
aFNsYXNoZXMyLAotICAgIHJ1blVzZUJhY2tTbGFzaGVzLAotICAgIHJ1bkRpcmVjdG9yeSwKLSAg
ICBydW5XaXRoVHJhaWxpbmdTbGFzaCwKLSAgICBydW5QZXJzaXN0ZW50VGVzdCwKLV07Ci12YXIg
dGVzdENvdW50ZXIgPSAwOwotCi1pZiAodGhpcy53ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbSkgewot
ICAgIGZpbGVTeXN0ZW0gPSB3ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbVN5bmModGhpcy5URU1QT1JB
UlksIDEwMCk7Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0ZXN0c0xpc3QubGVuZ3RoOyArK2kp
IHsKLSAgICAgIHRlc3RzTGlzdFtpXSgpOwotICAgICAgcmVtb3ZlQWxsSW5EaXJlY3RvcnlTeW5j
KGZpbGVTeXN0ZW0ucm9vdCk7Ci0gICAgICBlbnRyeSA9IG51bGw7Ci0gICAgfQotICAgIGRlYnVn
KCJGaW5pc2hlZCBydW5uaW5nIHRlc3RzLiIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfSBlbHNl
Ci0gICAgZGVidWcoIlRoaXMgdGVzdCByZXF1aXJlcyBGaWxlU3lzdGVtIEFQSSBzdXBwb3J0LiIp
OwotCi12YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKSW5kZXg6IExheW91dFRlc3RzL2h0
dHAvdGVzdHMvZmlsZXN5c3RlbS93b3JrZXJzL3NjcmlwdC10ZXN0cy9URU1QTEFURS5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvZmlsZXN5c3RlbS93b3JrZXJzL3Nj
cmlwdC10ZXN0cy9URU1QTEFURS5odG1sCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2ZpbGVzeXN0ZW0vd29ya2Vycy9zY3JpcHQtdGVzdHMvVEVNUExBVEUuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMSwxNCArMCwwIEBACi08aHRtbD4KLTxoZWFkPgotPHNjcmlw
dCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0IHNyYz0iLi4vcmVzb3VyY2VzL2ZzLXdvcmtlci10ZXN0LXV0aWwuanMiPjwvc2NyaXB0Pgot
PC9oZWFkPgotPGJvZHk+Ci08cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KLTxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgotPHNjcmlwdD4KLXN0YXJ0V29ya2VyKCdZT1VSX0pTX0ZJTEVfSEVSRScpOwot
PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2ZpbGVzeXN0ZW0vd29ya2Vycy9zY3JpcHQtdGVzdHMvcmVzb2x2ZS11cmwtc3luYy5qcwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2ZpbGVzeXN0ZW0vd29ya2Vycy9z
Y3JpcHQtdGVzdHMvcmVzb2x2ZS11cmwtc3luYy5qcwkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9maWxlc3lzdGVtL3dvcmtlcnMvc2NyaXB0LXRlc3RzL3Jlc29s
dmUtdXJsLXN5bmMuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsMTk5ICswLDAgQEAKLWlmICh0aGlz
LmltcG9ydFNjcmlwdHMpIHsKLSAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi9yZXNvdXJjZXMvZnMt
d29ya2VyLWNvbW1vbi5qcycpOwotICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uL3Jlc291cmNlcy9m
cy10ZXN0LXV0aWwuanMnKTsKLX0KLQotZGVzY3JpcHRpb24oIlRlc3RzIHVzaW5nIHdlYmtpdFJl
c29sdmVMb2NhbEZpbGVTeXN0ZW1TeW5jVVJMIHRvIG9idGFpbiBhbiBFbnRyeSBmcm9tIGEgVVJM
Iik7Ci0KLXZhciB0ZXN0RmlsZU5hbWUgPSAnL3Rlc3RGaWxlJzsKLXZhciBmaWxlU3lzdGVtID0g
bnVsbDsKLQotdmFyIGV4cGVjdGVkUGF0aCA9IG51bGw7Ci12YXIgYWN0dWFsUGF0aCA9IG51bGw7
Ci12YXIgZXJyb3JDb2RlID0gbnVsbDsKLQotZnVuY3Rpb24gY3JlYXRlVGVzdEZpbGUoKSB7Ci0g
ICAgcmV0dXJuIGZpbGVTeXN0ZW0ucm9vdC5nZXRGaWxlKHRlc3RGaWxlTmFtZSwge2NyZWF0ZTp0
cnVlfSk7Ci19Ci0KLWZ1bmN0aW9uIGFzc2VydEVuY29kaW5nRXJyKGNvZGUpIHsKLSAgICBlcnJv
ckNvZGUgPSBjb2RlOwotICAgIHNob3VsZEJlKCJGaWxlRXhjZXB0aW9uLkVOQ09ESU5HX0VSUiIs
ICJlcnJvckNvZGUiKTsKLX0KLQotZnVuY3Rpb24gYXNzZXJ0U2VjdXJpdHlFcnIoY29kZSkgewot
ICAgIGVycm9yQ29kZSA9IGNvZGU7Ci0gICAgc2hvdWxkQmUoIkZpbGVFeGNlcHRpb24uU0VDVVJJ
VFlfRVJSIiwgImVycm9yQ29kZSIpOwotfQotCi1mdW5jdGlvbiBhc3NlcnRQYXRoc01hdGNoKGV4
cGVjdGVkLCBhY3R1YWwpIHsKLSAgICBleHBlY3RlZFBhdGggPSBleHBlY3RlZDsKLSAgICBhY3R1
YWxQYXRoID0gYWN0dWFsOwotICAgIHNob3VsZEJlKCJleHBlY3RlZFBhdGgiLCAiYWN0dWFsUGF0
aCIpOwotfQotCi12YXIgaXNEaXJlY3RvcnkgPSBmYWxzZTsKLWZ1bmN0aW9uIGFzc2VydElzRGly
ZWN0b3J5KGVudHJ5KSB7Ci0gICAgaXNEaXJlY3RvcnkgPSBlbnRyeS5pc0RpcmVjdG9yeTsKLSAg
ICBzaG91bGRCZVRydWUoImlzRGlyZWN0b3J5Iik7Ci19Ci0KLXZhciBpc0ZpbGUgPSBmYWxzZTsK
LWZ1bmN0aW9uIGFzc2VydElzRmlsZShlbnRyeSkgewotICAgIGlzRmlsZSA9IGVudHJ5LmlzRmls
ZTsKLSAgICBzaG91bGRCZVRydWUoImlzRmlsZSIpOwotfQotCi0vLyBUZXN0IGJvZHkgZnVuY3Rp
b25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
LQotZnVuY3Rpb24gcnVuQmFzaWNUZXN0KCkgewotICAgIGRlYnVnKCIqIFJlc29sdmluZyBhIGdl
bmVyYXRlZCBVUkwuIik7Ci0gICAgZW50cnkgPSBjcmVhdGVUZXN0RmlsZSgpOwotICAgIHZhciBl
ID0gd2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVN5bmNVUkwoZW50cnkudG9VUkwoKSk7Ci0g
ICAgYXNzZXJ0UGF0aHNNYXRjaChlbnRyeS5mdWxsUGF0aCwgZS5mdWxsUGF0aCk7Ci0gICAgYXNz
ZXJ0SXNGaWxlKGUpOwotfQotCi1mdW5jdGlvbiBydW5IYW5kbWFkZVVSTCgpIHsKLSAgICBkZWJ1
ZygiKiBSZXNvbHZpbmcgdGVzdCBmaWxlIGJ5IGhhbmQiKTsKLSAgICBlbnRyeSA9IGNyZWF0ZVRl
c3RGaWxlKCk7Ci0gICAgdmFyIGUgPSB3ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lzdGVtU3luY1VS
TCgiZmlsZXN5c3RlbTpodHRwOi8vMTI3LjAuMC4xOjgwMDAvdGVtcG9yYXJ5L3Rlc3RGaWxlIik7
Ci0gICAgYXNzZXJ0UGF0aHNNYXRjaCh0ZXN0RmlsZU5hbWUsIGUuZnVsbFBhdGgpOwotICAgIGFz
c2VydElzRmlsZShlKTsKLX0KLQotZnVuY3Rpb24gcnVuV3JvbmdEb21haW4oKSB7Ci0gICAgZGVi
dWcoIiogUmVzb2x2aW5nIGEgVVJMIHdpdGggdGhlIHdyb25nIHNlY3VyaXR5IG9yaWdpbiAoZG9t
YWluKSIpOwotICAgIHRyeSB7Ci0gICAgICAgIHdlYmtpdFJlc29sdmVMb2NhbEZpbGVTeXN0ZW1T
eW5jVVJMKCJmaWxlc3lzdGVtOmh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC90ZW1wb3JhcnkvZm9vIik7
Ci0gICAgICAgIHRlc3RGYWlsZWQoKTsKLSAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgIGFzc2Vy
dFNlY3VyaXR5RXJyKGUuY29kZSk7Ci0gICAgfQotfQotCi1mdW5jdGlvbiBydW5Xcm9uZ1BvcnQo
KSB7Ci0gICAgZGVidWcoIiogUmVzb2x2aW5nIGEgVVJMIHdpdGggdGhlIHdyb25nIHNlY3VyaXR5
IG9yaWdpbiAocG9ydCkiKTsKLSAgICB0cnkgewotICAgICAgICB3ZWJraXRSZXNvbHZlTG9jYWxG
aWxlU3lzdGVtU3luY1VSTCgiZmlsZXN5c3RlbTpodHRwOi8vMTI3LjAuMC4xOjgwODAvdGVtcG9y
YXJ5L2ZvbyIpOwotICAgICAgICB0ZXN0RmFpbGVkKCk7Ci0gICAgfSBjYXRjaCAoZSkgewotICAg
ICAgICBhc3NlcnRTZWN1cml0eUVycihlLmNvZGUpOwotICAgIH0KLX0KLQotZnVuY3Rpb24gcnVu
V3JvbmdTY2hlbWUoKSB7Ci0gICAgZGVidWcoIiogUmVzb2x2aW5nIGEgVVJMIHdpdGggdGhlIHdy
b25nIHNlY3VyaXR5IG9yaWdpbiAoc2NoZW1lKSIpOwotICAgIHRyeSB7Ci0gICAgICAgIHdlYmtp
dFJlc29sdmVMb2NhbEZpbGVTeXN0ZW1TeW5jVVJMKCJmaWxlc3lzdGVtOmh0dHBzOi8vMTI3LjAu
MC4xOjgwMDAvdGVtcG9yYXJ5L2ZvbyIpOwotICAgICAgICB0ZXN0RmFpbGVkKCk7Ci0gICAgfSBj
YXRjaCAoZSkgewotICAgICAgICBhc3NlcnRTZWN1cml0eUVycihlLmNvZGUpOwotICAgIH0KLX0K
LQotZnVuY3Rpb24gcnVuQm9ndXNVUkwoKSB7Ci0gICAgZGVidWcoIiogUmVzb2x2aW5nIGEgY29t
cGxldGVseSBib2d1cyBVUkwuIik7Ci0gICAgdHJ5IHsKLSAgICAgICAgd2Via2l0UmVzb2x2ZUxv
Y2FsRmlsZVN5c3RlbVN5bmNVUkwoImZvbyIpOwotICAgICAgICB0ZXN0RmFpbGVkKCk7Ci0gICAg
fSBjYXRjaCAoZSkgewotICAgICAgICBhc3NlcnRFbmNvZGluZ0VycihlLmNvZGUpOwotICAgIH0K
LX0KLQotZnVuY3Rpb24gcnVuV3JvbmdQcm90b2NvbCgpIHsKLSAgICBkZWJ1ZygiKiBSZXNvbHZp
bmcgYSBVUkwgd2l0aCB0aGUgd3JvbmcgcHJvdG9jb2wiKTsKLSAgICB0cnkgewotICAgICAgICB3
ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lzdGVtU3luY1VSTCgiaHR0cDovLzEyNy4wLjAuMTo4MDAw
L2Zvby9iYXIvYmF6Iik7Ci0gICAgICAgIHRlc3RGYWlsZWQoKTsKLSAgICB9IGNhdGNoIChlKSB7
Ci0gICAgICAgIGFzc2VydEVuY29kaW5nRXJyKGUuY29kZSk7Ci0gICAgfQotfQotCi1mdW5jdGlv
biBydW5Ob3RFbm91Z2hTbGFzaGVzKCkgewotICAgIGRlYnVnKCIqIFJlc29sdmluZyBhIFVSTCB3
aXRoIG5vIHNsYXNoIGJldHdlZW4gdHlwZSBhbmQgZmlsZSIpOwotICAgIGVudHJ5ID0gY3JlYXRl
VGVzdEZpbGUoKTsKLSAgICB0cnkgewotICAgICAgICB3ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lz
dGVtU3luY1VSTCgiZmlsZXN5c3RlbTpodHRwOi8vMTI3LjAuMC4xOjgwMDAvdGVtcG9yYXJ5dGVz
dEZpbGUiKTsKLSAgICAgICAgdGVzdEZhaWxlZCgpOwotICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAg
ICAgYXNzZXJ0RW5jb2RpbmdFcnIoZS5jb2RlKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHJ1bk5v
dEVub3VnaFNsYXNoZXMyKCkgewotICAgIGRlYnVnKCIqIFJlc29sdmluZyBhIFVSTCB3aXRoIG5v
IHNsYXNoIGJldHdlZW4gcHJvdG9jb2wgYW5kIHR5cGUgKGJvZ3VzIHBvcnQpIik7Ci0gICAgZW50
cnkgPSBjcmVhdGVUZXN0RmlsZSgpOwotICAgIHRyeSB7Ci0gICAgICAgIHdlYmtpdFJlc29sdmVM
b2NhbEZpbGVTeXN0ZW1TeW5jVVJMKCJmaWxlc3lzdGVtOmh0dHA6Ly8xMjcuMC4wLjE6ODAwMHRl
bXBvcmFyeS90ZXN0RmlsZSIpOwotICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgYXNzZXJ0U2Vj
dXJpdHlFcnIoZS5jb2RlKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHJ1blVzZUJhY2tTbGFzaGVz
KCkgewotICAgIGRlYnVnKCIqIFJlc29sdmUgYSBwYXRoIHVzaW5nIGJhY2tzbGFzaGVzIik7Ci0g
ICAgZW50cnkgPSBmaWxlU3lzdGVtLnJvb3QuZ2V0RGlyZWN0b3J5KCJmb28iLCB7Y3JlYXRlOnRy
dWV9KS5nZXRGaWxlKCJ0ZXN0RmlsZSIsIHtjcmVhdGU6dHJ1ZX0pOwotICAgIHZhciBlID0gd2Vi
a2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVN5bmNVUkwoImZpbGVzeXN0ZW06aHR0cDovLzEyNy4w
LjAuMTo4MDAwL3RlbXBvcmFyeS9mb29cXHRlc3RGaWxlIik7Ci0gICAgYXNzZXJ0UGF0aHNNYXRj
aCgiL2Zvby90ZXN0RmlsZSIsIGUuZnVsbFBhdGgpOwotICAgIGFzc2VydElzRmlsZShlKTsKLX0K
LQotZnVuY3Rpb24gcnVuRGlyZWN0b3J5KCkgewotICAgIGRlYnVnKCIqIFJlc29sdmUgYSBkaXJl
Y3RvcnkiKTsKLSAgICBlbnRyeSA9IGZpbGVTeXN0ZW0ucm9vdC5nZXREaXJlY3RvcnkoImZvbyIs
IHtjcmVhdGU6dHJ1ZX0pOwotICAgIHZhciBlID0gd2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3Rl
bVN5bmNVUkwoImZpbGVzeXN0ZW06aHR0cDovLzEyNy4wLjAuMTo4MDAwL3RlbXBvcmFyeS9mb28i
KTsKLSAgICBhc3NlcnRQYXRoc01hdGNoKCIvZm9vIiwgZS5mdWxsUGF0aCk7Ci0gICAgYXNzZXJ0
SXNEaXJlY3RvcnkoZSk7Ci19Ci0KLWZ1bmN0aW9uIHJ1bldpdGhUcmFpbGluZ1NsYXNoKCkgewot
ICAgIGRlYnVnKCIqIFJlc29sdmUgYSBwYXRoIHVzaW5nIGEgdHJhaWxpbmcgc2xhc2giKTsKLSAg
ICBlbnRyeSA9IGZpbGVTeXN0ZW0ucm9vdC5nZXREaXJlY3RvcnkoImZvbyIsIHtjcmVhdGU6dHJ1
ZX0pOwotICAgIHZhciBlID0gd2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVN5bmNVUkwoImZp
bGVzeXN0ZW06aHR0cDovLzEyNy4wLjAuMTo4MDAwL3RlbXBvcmFyeS9mb28vIik7Ci0gICAgYXNz
ZXJ0UGF0aHNNYXRjaCgiL2ZvbyIsIGUuZnVsbFBhdGgpOwotICAgIGFzc2VydElzRGlyZWN0b3J5
KGUpOwotfQotCi1mdW5jdGlvbiBydW5QZXJzaXN0ZW50VGVzdCgpIHsKLSAgICBkZWJ1ZygiKiBS
ZXNvbHZpbmcgYSBwZXJzaXN0ZW50IFVSTC4iKTsKLSAgICB2YXIgZnMgPSB3ZWJraXRSZXF1ZXN0
RmlsZVN5c3RlbVN5bmMoUEVSU0lTVEVOVCwgMTAwKTsKLSAgICBlbnRyeSA9IHdlYmtpdFJlc29s
dmVMb2NhbEZpbGVTeXN0ZW1TeW5jVVJMKGZzLnJvb3QudG9VUkwoKSk7Ci0gICAgYXNzZXJ0UGF0
aHNNYXRjaCgiLyIsIGVudHJ5LmZ1bGxQYXRoKTsKLSAgICBhc3NlcnRJc0RpcmVjdG9yeShlbnRy
eSk7Ci19Ci0KLS8vIEVuZCBvZiB0ZXN0IGJvZHkgZnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi12YXIgdGVzdHNMaXN0ID0gWwotICAgIHJ1
bkJhc2ljVGVzdCwKLSAgICBydW5IYW5kbWFkZVVSTCwKLSAgICBydW5Xcm9uZ0RvbWFpbiwKLSAg
ICBydW5Xcm9uZ1BvcnQsCi0gICAgcnVuV3JvbmdTY2hlbWUsCi0gICAgcnVuQm9ndXNVUkwsCi0g
ICAgcnVuV3JvbmdQcm90b2NvbCwKLSAgICBydW5Ob3RFbm91Z2hTbGFzaGVzLAotICAgIHJ1bk5v
dEVub3VnaFNsYXNoZXMyLAotICAgIHJ1blVzZUJhY2tTbGFzaGVzLAotICAgIHJ1bkRpcmVjdG9y
eSwKLSAgICBydW5XaXRoVHJhaWxpbmdTbGFzaCwKLSAgICBydW5QZXJzaXN0ZW50VGVzdCwKLV07
Ci12YXIgdGVzdENvdW50ZXIgPSAwOwotCi1pZiAodGhpcy53ZWJraXRSZXF1ZXN0RmlsZVN5c3Rl
bSkgewotICAgIGZpbGVTeXN0ZW0gPSB3ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbVN5bmModGhpcy5U
RU1QT1JBUlksIDEwMCk7Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0ZXN0c0xpc3QubGVuZ3Ro
OyArK2kpIHsKLSAgICAgIHRlc3RzTGlzdFtpXSgpOwotICAgICAgcmVtb3ZlQWxsSW5EaXJlY3Rv
cnlTeW5jKGZpbGVTeXN0ZW0ucm9vdCk7Ci0gICAgICBlbnRyeSA9IG51bGw7Ci0gICAgfQotICAg
IGRlYnVnKCJGaW5pc2hlZCBydW5uaW5nIHRlc3RzLiIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwot
fSBlbHNlCi0gICAgZGVidWcoIlRoaXMgdGVzdCByZXF1aXJlcyBGaWxlU3lzdGVtIEFQSSBzdXBw
b3J0LiIpOwotCi12YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKSW5kZXg6IExheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vZGVsZXRlLWVudHJ5LWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxl
c3lzdGVtL2RlbGV0ZS1lbnRyeS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE1NjY5MSkKKysrIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vZGVsZXRlLWVudHJ5LWV4
cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwxMSArMCwwIEBACi1UZXN0cyBkZWxldGVF
bnRyeSBjb21tYW5kLgotCi1lcnJvckNvZGU6IDIKLWVycm9yQ29kZTogOAotZXJyb3JDb2RlOiAw
Ci1lcnJvckNvZGU6IDAKLWVycm9yQ29kZTogMAotZXJyb3JDb2RlOiAxCi1iYWNrZW5kUm9vdEVu
dHJ5OiAobnVsbCkKLQotCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9m
aWxlc3lzdGVtL2RlbGV0ZS1lbnRyeS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vZGVsZXRlLWVudHJ5Lmh0bWwJKHJldmlzaW9u
IDE1NjY5MSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0v
ZGVsZXRlLWVudHJ5Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsODMgKzAsMCBAQAotPCFET0NU
WVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPG1ldGEgY2hhcnNldD0iVVRGLTgiPgotPHNjcmlw
dCBzcmM9Ii4uL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJmaWxl
c3lzdGVtLXRlc3QuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWRvY3VtZW50LmFkZEV2ZW50TGlz
dGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLCBydW5UZXN0KTsKLWZ1bmN0aW9uIHRlc3QoKQotewot
ICAgIHZhciBmaWxlU3lzdGVtTW9kZWwgPSBuZXcgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2Rl
bDsKLQotICAgIHZhciB0ZXN0U3RlcCA9IFsKLSAgICAgICAgZnVuY3Rpb24oKQotICAgICAgICB7
Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNyZWF0ZUZpbGUoIi9ob2dlIiwgdGVzdFN0ZXAu
c2hpZnQoKSk7Ci0gICAgICAgIH0sCi0KLSAgICAgICAgZnVuY3Rpb24oKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNyZWF0ZURpcmVjdG9yeSgiL2Z1Z2EiLCB0ZXN0U3Rl
cC5zaGlmdCgpKTsKLSAgICAgICAgfSwKLQotICAgICAgICBmdW5jdGlvbigpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY3JlYXRlRmlsZSgiL2Z1Z2EvcGl5byIsIHRlc3RT
dGVwLnNoaWZ0KCkpOwotICAgICAgICB9LAotCi0gICAgICAgIGZ1bmN0aW9uKCkKLSAgICAgICAg
ewotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jcmVhdGVEaXJlY3RvcnkoIi9mb28iLCB0ZXN0
U3RlcC5zaGlmdCgpKTsKLSAgICAgICAgfSwKLQotICAgICAgICBmdW5jdGlvbigpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIGZpbGVTeXN0ZW1Nb2RlbC5fZGVsZXRlRW50cnkoIkludmFsaWRVUkwi
LCB0ZXN0U3RlcC5zaGlmdCgpKTsKLSAgICAgICAgfSwKLQotICAgICAgICBmdW5jdGlvbihlcnJv
ckNvZGUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJl
cnJvckNvZGU6ICIgKyBlcnJvckNvZGUpOwotICAgICAgICAgICAgZmlsZVN5c3RlbU1vZGVsLl9k
ZWxldGVFbnRyeSgiZmlsZXN5c3RlbTpodHRwOi8vMTI3LjAuMC4xOjgwMDAvSW52YWxpZFR5cGUv
ZnVnYSIsIHRlc3RTdGVwLnNoaWZ0KCkpOwotICAgICAgICB9LAotCi0gICAgICAgIGZ1bmN0aW9u
KGVycm9yQ29kZSkKLSAgICAgICAgewotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1
bHQoImVycm9yQ29kZTogIiArIGVycm9yQ29kZSk7Ci0gICAgICAgICAgICBmaWxlU3lzdGVtTW9k
ZWwuX2RlbGV0ZUVudHJ5KCJmaWxlc3lzdGVtOmh0dHA6Ly8xMjcuMC4wLjE6ODAwMC90ZW1wb3Jh
cnkvaG9nZSIsIHRlc3RTdGVwLnNoaWZ0KCkpOwotICAgICAgICB9LAotCi0gICAgICAgIGZ1bmN0
aW9uKGVycm9yQ29kZSkKLSAgICAgICAgewotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRS
ZXN1bHQoImVycm9yQ29kZTogIiArIGVycm9yQ29kZSk7Ci0gICAgICAgICAgICBmaWxlU3lzdGVt
TW9kZWwuX2RlbGV0ZUVudHJ5KCJmaWxlc3lzdGVtOmh0dHA6Ly8xMjcuMC4wLjE6ODAwMC90ZW1w
b3JhcnkvZnVnYSIsIHRlc3RTdGVwLnNoaWZ0KCkpOwotICAgICAgICB9LAotCi0gICAgICAgIGZ1
bmN0aW9uKGVycm9yQ29kZSkKLSAgICAgICAgewotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5h
ZGRSZXN1bHQoImVycm9yQ29kZTogIiArIGVycm9yQ29kZSk7Ci0gICAgICAgICAgICBmaWxlU3lz
dGVtTW9kZWwuX2RlbGV0ZUVudHJ5KCJmaWxlc3lzdGVtOmh0dHA6Ly8xMjcuMC4wLjE6ODAwMC90
ZW1wb3JhcnkvIiwgdGVzdFN0ZXAuc2hpZnQoKSk7Ci0gICAgICAgIH0sCi0KLSAgICAgICAgZnVu
Y3Rpb24oZXJyb3JDb2RlKQotICAgICAgICB7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFk
ZFJlc3VsdCgiZXJyb3JDb2RlOiAiICsgZXJyb3JDb2RlKTsKLSAgICAgICAgICAgIGZpbGVTeXN0
ZW1Nb2RlbC5fcmVxdWVzdEZpbGVTeXN0ZW1Sb290KCJodHRwOi8vMTI3LjAuMC4xOjgwMDAiLCAi
dGVtcG9yYXJ5IiwgdGVzdFN0ZXAuc2hpZnQoKSk7Ci0gICAgICAgIH0sCi0KLSAgICAgICAgZnVu
Y3Rpb24oZXJyb3JDb2RlLCBiYWNrZW5kUm9vdEVudHJ5KQotICAgICAgICB7Ci0gICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmR1bXBGaWxlU3lzdGVtUm9vdFJlcXVlc3RSZXN1bHQoZXJyb3JDb2Rl
LCBiYWNrZW5kUm9vdEVudHJ5KTsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVU
ZXN0KCk7Ci0gICAgICAgIH0KLSAgICBdOwotCi0gICAgSW5zcGVjdG9yVGVzdC5jbGVhckZpbGVT
eXN0ZW0odGVzdFN0ZXAuc2hpZnQoKSk7Ci19Ci08L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5Pgot
PHA+VGVzdHMgZGVsZXRlRW50cnkgY29tbWFuZC48L3A+Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4
OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL2RpcmVjdG9yeS10
cmVlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9maWxlc3lzdGVtL2RpcmVjdG9yeS10cmVlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MTU2NjkxKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9k
aXJlY3RvcnktdHJlZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMzIgKzAsMCBA
QAotVGVzdHMgZGlyZWN0b3J5IHRyZWUgb24gRmlsZVN5c3RlbVZpZXcuCi0KLVtkaXJlY3Rvcnkg
dHJlZSBub2RlXQotZXhwYW5kZWQ6IHRydWUKLWVudHJ5OiAobnVsbCkKLSNjaGlsZHJlbjogMQot
ICBbZGlyZWN0b3J5IHRyZWUgbm9kZV0KLSAgZXhwYW5kZWQ6IHRydWUKLSAgZW50cnk6IGZpbGVz
eXN0ZW06aHR0cDovLzEyNy4wLjAuMTo4MDAwL3RlbXBvcmFyeS8KLSAgI2NoaWxkcmVuOiAxCi0g
ICAgW2RpcmVjdG9yeSB0cmVlIG5vZGVdCi0gICAgZXhwYW5kZWQ6IGZhbHNlCi0gICAgZW50cnk6
IGZpbGVzeXN0ZW06aHR0cDovLzEyNy4wLjAuMTo4MDAwL3RlbXBvcmFyeS9ob2dlCi0gICAgI2No
aWxkcmVuOiAwCi0KLVtkaXJlY3RvcnkgdHJlZSBub2RlXQotZXhwYW5kZWQ6IHRydWUKLWVudHJ5
OiAobnVsbCkKLSNjaGlsZHJlbjogMQotICBbZGlyZWN0b3J5IHRyZWUgbm9kZV0KLSAgZXhwYW5k
ZWQ6IHRydWUKLSAgZW50cnk6IGZpbGVzeXN0ZW06aHR0cDovLzEyNy4wLjAuMTo4MDAwL3RlbXBv
cmFyeS8KLSAgI2NoaWxkcmVuOiAxCi0gICAgW2RpcmVjdG9yeSB0cmVlIG5vZGVdCi0gICAgZXhw
YW5kZWQ6IHRydWUKLSAgICBlbnRyeTogZmlsZXN5c3RlbTpodHRwOi8vMTI3LjAuMC4xOjgwMDAv
dGVtcG9yYXJ5L2hvZ2UKLSAgICAjY2hpbGRyZW46IDEKLSAgICAgIFtkaXJlY3RvcnkgdHJlZSBu
b2RlXQotICAgICAgZXhwYW5kZWQ6IGZhbHNlCi0gICAgICBlbnRyeTogZmlsZXN5c3RlbTpodHRw
Oi8vMTI3LjAuMC4xOjgwMDAvdGVtcG9yYXJ5L2hvZ2UvZnVnYQotICAgICAgI2NoaWxkcmVuOiAw
Ci0KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vZGly
ZWN0b3J5LXRyZWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9maWxlc3lzdGVtL2RpcmVjdG9yeS10cmVlLmh0bWwJKHJldmlzaW9uIDE1NjY5MSkK
KysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vZGlyZWN0b3J5
LXRyZWUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxMTAgKzAsMCBAQAotPCFET0NUWVBFIGh0
bWw+Ci08aHRtbD4KLTxoZWFkPgotPG1ldGEgY2hhcnNldD0iVVRGLTgiPgotPHNjcmlwdCBzcmM9
Ii4uL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJmaWxlc3lzdGVt
LXRlc3QuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIo
IkRPTUNvbnRlbnRMb2FkZWQiLCBydW5UZXN0KTsKLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHZh
ciByZXNvdXJjZXNQYW5lbCA9IFdlYkluc3BlY3Rvci5zaG93UGFuZWwoInJlc291cmNlcyIpOwot
ICAgIHZhciBmaWxlU3lzdGVtTGlzdFRyZWVFbGVtZW50ID0gcmVzb3VyY2VzUGFuZWwuZmlsZVN5
c3RlbUxpc3RUcmVlRWxlbWVudDsKLSAgICBpZiAoIWZpbGVTeXN0ZW1MaXN0VHJlZUVsZW1lbnQp
IHsKLSAgICAgICAgZmlsZVN5c3RlbUxpc3RUcmVlRWxlbWVudCA9IG5ldyBXZWJJbnNwZWN0b3Iu
RmlsZVN5c3RlbUxpc3RUcmVlRWxlbWVudChyZXNvdXJjZXNQYW5lbCk7Ci0gICAgICAgIHJlc291
cmNlc1BhbmVsLmZpbGVTeXN0ZW1MaXN0VHJlZUVsZW1lbnQgPSBmaWxlU3lzdGVtTGlzdFRyZWVF
bGVtZW50OwotICAgICAgICByZXNvdXJjZXNQYW5lbC5zaWRlYmFyVHJlZS5hcHBlbmRDaGlsZChm
aWxlU3lzdGVtTGlzdFRyZWVFbGVtZW50KTsKLSAgICB9Ci0KLSAgICB2YXIgZmlsZVN5c3RlbUl0
ZW0gPSBudWxsOwotICAgIHZhciBmaWxlU3lzdGVtVmlldyA9IG51bGw7Ci0gICAgdmFyIGRpcmVj
dG9yeVRyZWUgPSBudWxsOwotCi0gICAgdmFyIHJlcXVlc3RzTGVmdCA9IDA7Ci0gICAgdmFyIHRl
c3RTdGVwID0gWwotICAgICAgICBmdW5jdGlvbigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuY3JlYXRlRGlyZWN0b3J5KCIvaG9nZSIsIHRlc3RTdGVwLnNoaWZ0KCkpOwot
ICAgICAgICB9LAotCi0gICAgICAgIGZ1bmN0aW9uKCkKLSAgICAgICAgewotICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5jcmVhdGVEaXJlY3RvcnkoIi9ob2dlL2Z1Z2EiLCB0ZXN0U3RlcC5zaGlm
dCgpKTsKLSAgICAgICAgfSwKLQotICAgICAgICBmdW5jdGlvbigpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuY3JlYXRlRmlsZSgiL2hvZ2UvZnVnYS9waXlvIiwgdGVzdFN0
ZXAuc2hpZnQoKSk7Ci0gICAgICAgIH0sCi0KLSAgICAgICAgZnVuY3Rpb24oKQotICAgICAgICB7
Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFNuaWZmZXIoV2ViSW5zcGVjdG9yLkZpbGVT
eXN0ZW1MaXN0VHJlZUVsZW1lbnQucHJvdG90eXBlLCAiX2ZpbGVTeXN0ZW1BZGRlZCIsIHRlc3RT
dGVwLnNoaWZ0KCksIGZhbHNlKTsKLSAgICAgICAgICAgIGZpbGVTeXN0ZW1MaXN0VHJlZUVsZW1l
bnQuX3JlZnJlc2hGaWxlU3lzdGVtKCk7Ci0gICAgICAgIH0sCi0KLSAgICAgICAgZnVuY3Rpb24o
ZXZlbnQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChldmVudC5kYXRhLm5hbWUgIT09ICJm
aWxlc3lzdGVtOmh0dHA6Ly8xMjcuMC4wLjE6ODAwMC90ZW1wb3JhcnkiKQotICAgICAgICAgICAg
ICAgIHJldHVybjsKLQotICAgICAgICAgICAgZmlsZVN5c3RlbUl0ZW0gPSBmaWxlU3lzdGVtTGlz
dFRyZWVFbGVtZW50Ll9maWxlU3lzdGVtVHJlZUVsZW1lbnRCeU5hbWUoImZpbGVzeXN0ZW06aHR0
cDovLzEyNy4wLjAuMTo4MDAwL3RlbXBvcmFyeSIpOwotCi0gICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmFkZFNuaWZmZXIoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5wcm90b3R5cGUsICJf
ZGlyZWN0b3J5Q29udGVudFJlY2VpdmVkIiwgdGVzdFN0ZXAuc2hpZnQoKSwgZmFsc2UpOwotICAg
ICAgICAgICAgZmlsZVN5c3RlbUl0ZW0uc2VsZWN0KCk7Ci0gICAgICAgICAgICBmaWxlU3lzdGVt
VmlldyA9IGZpbGVTeXN0ZW1JdGVtLl9maWxlU3lzdGVtVmlldzsKLSAgICAgICAgICAgIGRpcmVj
dG9yeVRyZWUgPSBmaWxlU3lzdGVtVmlldy5fZGlyZWN0b3J5VHJlZTsKLSAgICAgICAgfSwKLQot
ICAgICAgICBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGR1bXBEaXJlY3RvcnlUcmVlKGRpcmVj
dG9yeVRyZWUpOwotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIiIpOwotCi0g
ICAgICAgICAgICBmdW5jdGlvbiByZXF1ZXN0U2VudCgpCi0gICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgKytyZXF1ZXN0c0xlZnQ7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuYWRkU25pZmZlcihXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLnByb3Rv
dHlwZSwgIl9kaXJlY3RvcnlDb250ZW50UmVjZWl2ZWQiLCB0ZXN0U3RlcC5zaGlmdCgpLCB0cnVl
KTsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkU25pZmZlcihXZWJJbnNwZWN0b3IuRmls
ZVN5c3RlbU1vZGVsLnByb3RvdHlwZSwgInJlcXVlc3REaXJlY3RvcnlDb250ZW50IiwgcmVxdWVz
dFNlbnQsIHRydWUpOwotCi0gICAgICAgICAgICBkaXJlY3RvcnlUcmVlLmNoaWxkcmVuWzBdLmV4
cGFuZFJlY3Vyc2l2ZWx5KCk7Ci0gICAgICAgIH0sCi0KLSAgICAgICAgZnVuY3Rpb24oKSB7Ci0g
ICAgICAgICAgICBpZiAoLS1yZXF1ZXN0c0xlZnQpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICAgICAgZHVtcERpcmVjdG9yeVRyZWUoZGlyZWN0b3J5VHJlZSk7Ci0KLSAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuY2xlYXJGaWxlU3lzdGVtKHRlc3RTdGVwLnNoaWZ0KCkpOwotICAg
ICAgICB9LAotCi0gICAgICAgIGZ1bmN0aW9uKCkKLSAgICAgICAgewotICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKLSAgICAgICAgfQotICAgIF07Ci0KLSAgICBJbnNw
ZWN0b3JUZXN0LmNsZWFyRmlsZVN5c3RlbSh0ZXN0U3RlcC5zaGlmdCgpKTsKLQotICAgIGZ1bmN0
aW9uIGR1bXBEaXJlY3RvcnlUcmVlKHRyZWVOb2RlLCBpbmRlbnQpCi0gICAgewotICAgICAgICBp
bmRlbnQgPSBpbmRlbnQgfHwgIiI7Ci0gICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KGlu
ZGVudCArICJbZGlyZWN0b3J5IHRyZWUgbm9kZV0iKTsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5h
ZGRSZXN1bHQoaW5kZW50ICsgImV4cGFuZGVkOiAiICsgdHJlZU5vZGUuZXhwYW5kZWQpOwotICAg
ICAgICBpZiAodHJlZU5vZGUuX2VudHJ5KQotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRS
ZXN1bHQoaW5kZW50ICsgImVudHJ5OiAiICsgdHJlZU5vZGUuX2VudHJ5LnVybCkKLSAgICAgICAg
ZWxzZQotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoaW5kZW50ICsgImVudHJ5
OiAobnVsbCkiKQotICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChpbmRlbnQgKyAiI2No
aWxkcmVuOiAiICsgdHJlZU5vZGUuY2hpbGRyZW4ubGVuZ3RoKTsKLQotICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IHRyZWVOb2RlLmNoaWxkcmVuLmxlbmd0aDsgKytpKQotICAgICAgICAgICAg
ZHVtcERpcmVjdG9yeVRyZWUodHJlZU5vZGUuY2hpbGRyZW5baV0sIGluZGVudCArICIgICIpOwot
ICAgIH0KLX0KLTwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08cD5UZXN0cyBkaXJlY3Rvcnkg
dHJlZSBvbiBGaWxlU3lzdGVtVmlldy48L3A+Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL2ZpbGVzeXN0ZW0tdGVzdC5q
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lz
dGVtL2ZpbGVzeXN0ZW0tdGVzdC5qcwkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9maWxlc3lzdGVtLXRlc3QuanMJKHdvcmtp
bmcgY29weSkKQEAgLTEsMTk3ICswLDAgQEAKLXZhciBpbml0aWFsaXplX0ZpbGVTeXN0ZW1UZXN0
ID0gZnVuY3Rpb24oKQotewotICAgIHZhciBuZXh0Q2FsbGJhY2tJZCA9IDA7Ci0gICAgdmFyIGNh
bGxiYWNrcyA9IHt9OwotCi0gICAgSW5zcGVjdG9yVGVzdC5Nb2NrRW50cnkgPSBmdW5jdGlvbih1
cmwpCi0gICAgewotICAgICAgICB0aGlzLnVybCA9IHVybDsKLSAgICB9Ci0KLSAgICBJbnNwZWN0
b3JUZXN0LnJlZ2lzdGVyQ2FsbGJhY2sgPSBmdW5jdGlvbihjYWxsYmFjaykKLSAgICB7Ci0gICAg
ICAgIHZhciBjYWxsYmFja0lkID0gKytuZXh0Q2FsbGJhY2tJZDsKLSAgICAgICAgY2FsbGJhY2tz
W2NhbGxiYWNrSWRdID0gY2FsbGJhY2s7Ci0gICAgICAgIHJldHVybiAiZGlzcGF0Y2hDYWxsYmFj
ay5iaW5kKG51bGwsICIgKyBjYWxsYmFja0lkICsgIikiOwotICAgIH07Ci0KLSAgICBJbnNwZWN0
b3JUZXN0LmRpc3BhdGNoQ2FsbGJhY2sgPSBmdW5jdGlvbihwYWNrZWRBcmdzKQotICAgIHsKLSAg
ICAgICAgdmFyIGFyZ3MgPSBKU09OLnBhcnNlKHBhY2tlZEFyZ3MpOwotICAgICAgICB2YXIgY2Fs
bGJhY2tJZCA9IGFyZ3Muc2hpZnQoKTsKLSAgICAgICAgdmFyIGNhbGxiYWNrID0gY2FsbGJhY2tz
W2NhbGxiYWNrSWRdOwotICAgICAgICBkZWxldGUgY2FsbGJhY2tzW2NhbGxiYWNrSWRdOwotICAg
ICAgICBjYWxsYmFjay5hcHBseShudWxsLCBhcmdzKTsKLSAgICB9OwotCi0gICAgSW5zcGVjdG9y
VGVzdC5jcmVhdGVEaXJlY3RvcnkgPSBmdW5jdGlvbihwYXRoLCBjYWxsYmFjaykKLSAgICB7Ci0g
ICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoImNyZWF0ZURpcmVjdG9yeShlc2Nh
cGUoXCIiICsgZXNjYXBlKHBhdGgpICsgIlwiKSwgIiArIEluc3BlY3RvclRlc3QucmVnaXN0ZXJD
YWxsYmFjayhjYWxsYmFjaykgKyAiKSIpOwotICAgIH07Ci0KLSAgICBJbnNwZWN0b3JUZXN0LmNy
ZWF0ZUZpbGUgPSBmdW5jdGlvbihwYXRoLCBjYWxsYmFjaykKLSAgICB7Ci0gICAgICAgIEluc3Bl
Y3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoImNyZWF0ZUZpbGUodW5lc2NhcGUoXCIiICsgZXNjYXBl
KHBhdGgpICsgIlwiKSwgIiArIEluc3BlY3RvclRlc3QucmVnaXN0ZXJDYWxsYmFjayhjYWxsYmFj
aykgKyAiKSIpOwotICAgIH07Ci0KLSAgICBJbnNwZWN0b3JUZXN0LndyaXRlRmlsZSA9IGZ1bmN0
aW9uKHBhdGgsIGNvbnRlbnQsIGNhbGxiYWNrKQotICAgIHsKLSAgICAgICAgSW5zcGVjdG9yVGVz
dC5ldmFsdWF0ZUluUGFnZSgid3JpdGVGaWxlKHVuZXNjYXBlKFwiIiArIGVzY2FwZShwYXRoKSAr
ICJcIiksIHVuZXNjYXBlKFwiIiArIGVzY2FwZShjb250ZW50KSArICJcIiksICIgKyBJbnNwZWN0
b3JUZXN0LnJlZ2lzdGVyQ2FsbGJhY2soY2FsbGJhY2spICsgIikiKTsKLSAgICB9OwotCi0gICAg
SW5zcGVjdG9yVGVzdC5jbGVhckZpbGVTeXN0ZW0gPSBmdW5jdGlvbihjYWxsYmFjaykKLSAgICB7
Ci0gICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoImNsZWFyRmlsZVN5c3RlbSgi
ICsgSW5zcGVjdG9yVGVzdC5yZWdpc3RlckNhbGxiYWNrKGNhbGxiYWNrKSArICIpIik7Ci0gICAg
fTsKLQotICAgIEluc3BlY3RvclRlc3QuZHVtcEZpbGVTeXN0ZW1Sb290UmVxdWVzdFJlc3VsdCA9
IGZ1bmN0aW9uKGVycm9yQ29kZSwgYmFja2VuZFJvb3RFbnRyeSkKLSAgICB7Ci0gICAgICAgIElu
c3BlY3RvclRlc3QuYWRkUmVzdWx0KCJlcnJvckNvZGU6ICIgKyBlcnJvckNvZGUpOwotICAgICAg
ICBpZiAoYmFja2VuZFJvb3RFbnRyeSkKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVz
dWx0KCJiYWNrZW5kUm9vdEVudHJ5LnVybDogIiArIGJhY2tlbmRSb290RW50cnkudXJsKTsKLSAg
ICAgICAgZWxzZQotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoImJhY2tlbmRS
b290RW50cnk6IChudWxsKSIpOwotICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiIik7
Ci0gICAgfTsKLQotICAgIEluc3BlY3RvclRlc3QuZHVtcERpcmVjdG9yeUNvbnRlbnRSZXF1ZXN0
UmVzdWx0ID0gZnVuY3Rpb24oZXJyb3JDb2RlLCBlbnRyaWVzKQotICAgIHsKLSAgICAgICAgSW5z
cGVjdG9yVGVzdC5hZGRSZXN1bHQoImVycm9yQ29kZTogIiArIGVycm9yQ29kZSk7Ci0KLSAgICAg
ICAgaWYgKCFlbnRyaWVzKSB7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgi
ZW50cmllczogKG51bGwpIik7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgi
Iik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBJbnNwZWN0b3JU
ZXN0LmFkZFJlc3VsdCgiZW50cmllczoiKTsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBl
bnRyaWVzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQo
IiAgIiArIGkgKyAiOiIpOwotICAgICAgICAgIGZvciAodmFyIGogaW4gZW50cmllc1tpXSkKLSAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCIgICAgIiArIGogKyAiOiAiICsgZW50
cmllc1tpXVtqXSk7Ci0gICAgICAgIH0KLSAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQo
IiIpOwotICAgIH07Ci0KLSAgICBJbnNwZWN0b3JUZXN0LmR1bXBNZXRhZGF0YVJlcXVlc3RSZXN1
bHQgPSBmdW5jdGlvbihlcnJvckNvZGUsIG1ldGFkYXRhKQotICAgIHsKLSAgICAgICAgSW5zcGVj
dG9yVGVzdC5hZGRSZXN1bHQoImVycm9yQ29kZTogIiArIGVycm9yQ29kZSk7Ci0gICAgICAgIGlm
IChtZXRhZGF0YSkgewotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIm1ldGFk
YXRhOiIpOwotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIiAgbW9kaWZpY2F0
aW9uVGltZTogIiArICgibW9kaWZpY2F0aW9uVGltZSIgaW4gbWV0YWRhdGEgPyAiKGV4aXN0cyki
IDogIihudWxsKSIpKTsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCIgIHNp
emU6ICIgKyAoInNpemUiIGluIG1ldGFkYXRhID8gbWV0YWRhdGEuc2l6ZSA6ICIobnVsbCkiKSk7
Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgi
bWV0YWRhdGE6IChudWxsKSIpOwotICAgICAgICB9Ci0gICAgICAgIEluc3BlY3RvclRlc3QuYWRk
UmVzdWx0KCIiKTsKLSAgICB9OwotCi0gICAgSW5zcGVjdG9yVGVzdC5kdW1wRmlsZUNvbnRlbnRS
ZXF1ZXN0UmVzdWx0ID0gZnVuY3Rpb24oZXJyb3JDb2RlLCBjb250ZW50LCBjaGFyc2V0KQotICAg
IHsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoImVycm9yQ29kZTogIiArIGVycm9y
Q29kZSk7Ci0KLSAgICAgICAgaWYgKGNvbnRlbnQpCi0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmFkZFJlc3VsdCgiY29udGVudDogXCIiICsgY29udGVudCArICJcIiIpOwotICAgICAgICBlbHNl
Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiY29udGVudDogKG51bGwpIik7
Ci0KLSAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoImNoYXJzZXQ6ICIgKyBjaGFyc2V0
KTsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIiIpOwotICAgIH07Ci19Ci0KLWZ1
bmN0aW9uIGRpc3BhdGNoQ2FsbGJhY2soKQotewotICAgIHZhciBhcmdzID0gSlNPTi5zdHJpbmdp
ZnkoQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKSk7Ci0gICAgdGVzdFJ1bm5l
ci5ldmFsdWF0ZUluV2ViSW5zcGVjdG9yKDk5OSwgIkluc3BlY3RvclRlc3QuZGlzcGF0Y2hDYWxs
YmFjayh1bmVzY2FwZShcIiIgKyBlc2NhcGUoYXJncykgKyAiXCIpKSIpOwotfQotCi1mdW5jdGlv
biBjcmVhdGVEaXJlY3RvcnkocGF0aCwgY2FsbGJhY2spCi17Ci0gICAgd2Via2l0UmVxdWVzdEZp
bGVTeXN0ZW0oVEVNUE9SQVJZLCAxLCBkaWRHZXRGaWxlU3lzdGVtKTsKLQotICAgIGZ1bmN0aW9u
IGRpZEdldEZpbGVTeXN0ZW0oZmlsZVN5c3RlbSkKLSAgICB7Ci0gICAgICAgIGZpbGVTeXN0ZW0u
cm9vdC5nZXREaXJlY3RvcnkocGF0aCwge2NyZWF0ZTp0cnVlfSwgZnVuY3Rpb24oZW50cnkpIHsK
LSAgICAgICAgICAgIGNhbGxiYWNrKCk7Ci0gICAgICAgIH0pOwotICAgIH0KLX0KLQotZnVuY3Rp
b24gY3JlYXRlRmlsZShwYXRoLCBjYWxsYmFjaykKLXsKLSAgICB3ZWJraXRSZXF1ZXN0RmlsZVN5
c3RlbShURU1QT1JBUlksIDEsIGRpZEdldEZpbGVTeXN0ZW0pOwotCi0gICAgZnVuY3Rpb24gZGlk
R2V0RmlsZVN5c3RlbShmaWxlU3lzdGVtKQotICAgIHsKLSAgICAgICAgZmlsZVN5c3RlbS5yb290
LmdldEZpbGUocGF0aCwge2NyZWF0ZTp0cnVlfSwgZnVuY3Rpb24oZW50cnkpIHsKLSAgICAgICAg
ICAgIGNhbGxiYWNrKCk7Ci0gICAgICAgIH0pOwotICAgIH0KLX0KLQotZnVuY3Rpb24gd3JpdGVG
aWxlKHBhdGgsIGNvbnRlbnQsIGNhbGxiYWNrKQotewotICAgIHdlYmtpdFJlcXVlc3RGaWxlU3lz
dGVtKFRFTVBPUkFSWSwgMSwgZGlkR2V0RmlsZVN5c3RlbSk7Ci0KLSAgICBmdW5jdGlvbiBkaWRH
ZXRGaWxlU3lzdGVtKGZpbGVTeXN0ZW0pCi0gICAgewotICAgICAgICBmaWxlU3lzdGVtLnJvb3Qu
Z2V0RmlsZShwYXRoLCB7Y3JlYXRlOnRydWV9LCBkaWRHZXRGaWxlRW50cnkpOwotICAgIH0KLQot
ICAgIGZ1bmN0aW9uIGRpZEdldEZpbGVFbnRyeShmaWxlRW50cnkpCi0gICAgewotICAgICAgICBm
aWxlRW50cnkuY3JlYXRlV3JpdGVyKGRpZEdldFdyaXRlcik7Ci0gICAgfQotCi0gICAgZnVuY3Rp
b24gZGlkR2V0V3JpdGVyKHdyaXRlcikKLSAgICB7Ci0gICAgICAgIHdyaXRlci53cml0ZShuZXcg
QmxvYihbY29udGVudF0pKTsKLSAgICAgICAgd3JpdGVyLm9ud3JpdGUgPSBmdW5jdGlvbigpIHsK
LSAgICAgICAgICAgIGlmICh3cml0ZXIucmVhZHlTdGF0ZSA9PT0gd3JpdGVyLkRPTkUpCi0gICAg
ICAgICAgICAgICAgY2FsbGJhY2soKTsKLSAgICAgICAgfTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9u
IGNsZWFyRmlsZVN5c3RlbShjYWxsYmFjaykKLXsKLSAgICB3ZWJraXRSZXNvbHZlTG9jYWxGaWxl
U3lzdGVtVVJMKCJmaWxlc3lzdGVtOiIgKyBsb2NhdGlvbi5vcmlnaW4gKyAiL3RlbXBvcmFyeS8i
LCBkaWRHZXRSb290LCBvbkVycm9yKTsKLQotICAgIGZ1bmN0aW9uIGRpZEdldFJvb3Qocm9vdCkK
LSAgICB7Ci0gICAgICAgIHZhciByZWFkZXIgPSByb290LmNyZWF0ZVJlYWRlcigpOwotICAgICAg
ICByZWFkZXIucmVhZEVudHJpZXMoZGlkUmVhZEVudHJpZXMpOwotCi0gICAgICAgIHZhciBlbnRy
aWVzID0gW107Ci0gICAgICAgIGZ1bmN0aW9uIGRpZFJlYWRFbnRyaWVzKG5ld0VudHJpZXMpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGlmIChuZXdFbnRyaWVzLmxlbmd0aCA9PT0gMCkgewotICAg
ICAgICAgICAgICAgIHJlbW92ZUFsbCgpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmV3RW50cmllcy5sZW5n
dGg7ICsraSkKLSAgICAgICAgICAgICAgICBlbnRyaWVzLnB1c2gobmV3RW50cmllc1tpXSk7Ci0g
ICAgICAgICAgICByZWFkZXIucmVhZEVudHJpZXMoZGlkUmVhZEVudHJpZXMpOwotICAgICAgICB9
Ci0KLSAgICAgICAgZnVuY3Rpb24gcmVtb3ZlQWxsKCkKLSAgICAgICAgewotICAgICAgICAgICAg
aWYgKGVudHJpZXMubGVuZ3RoID09PSAwKSB7Ci0gICAgICAgICAgICAgICAgY2FsbGJhY2soKTsK
LSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB2YXIg
ZW50cnkgPSBlbnRyaWVzLnNoaWZ0KCk7Ci0gICAgICAgICAgICBpZiAoZW50cnkuaXNEaXJlY3Rv
cnkpCi0gICAgICAgICAgICAgICAgZW50cnkucmVtb3ZlUmVjdXJzaXZlbHkocmVtb3ZlQWxsKTsK
LSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBlbnRyeS5yZW1vdmUocmVtb3ZlQWxs
KTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGZ1bmN0aW9uIG9uRXJyb3IoKQotICAgIHsKLSAg
ICAgICAgLy8gQXNzdW1lIHRoZSBGaWxlU3lzdGVtIGlzIHVuaW5pdGlhbGl6ZWQgYW5kIHRoZXJl
Zm9yZSBlbXB0eS4KLSAgICAgICAgY2FsbGJhY2soKTsKLSAgICB9Ci19CkluZGV4OiBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL3JlcXVlc3QtZGlyZWN0b3J5LWNv
bnRlbnQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL2ZpbGVzeXN0ZW0vcmVxdWVzdC1kaXJlY3RvcnktY29udGVudC1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L2ZpbGVzeXN0ZW0vcmVxdWVzdC1kaXJlY3RvcnktY29udGVudC1leHBlY3RlZC50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTEsMzAgKzAsMCBAQAotVGVzdHMgcmVxdWVzdERpcmVjdG9yeUNvbnRlbnQg
Y29tbWFuZC4KLQotZXJyb3JDb2RlOiAyCi1lbnRyaWVzOiAobnVsbCkKLQotZXJyb3JDb2RlOiA4
Ci1lbnRyaWVzOiAobnVsbCkKLQotZXJyb3JDb2RlOiAwCi1lbnRyaWVzOgotICAwOgotICAgIHVy
bDogZmlsZXN5c3RlbTpodHRwOi8vMTI3LjAuMC4xOjgwMDAvdGVtcG9yYXJ5L2hvZ2UvcGl5by5o
dG1sCi0gICAgbmFtZTogcGl5by5odG1sCi0gICAgaXNEaXJlY3Rvcnk6IGZhbHNlCi0gICAgaXNU
ZXh0RmlsZTogdHJ1ZQotICAgIG1pbWVUeXBlOiB0ZXh0L2h0bWwKLSAgICByZXNvdXJjZVR5cGU6
IERvY3VtZW50Ci0gIDE6Ci0gICAgdXJsOiBmaWxlc3lzdGVtOmh0dHA6Ly8xMjcuMC4wLjE6ODAw
MC90ZW1wb3JhcnkvaG9nZS9mdWdhCi0gICAgbmFtZTogZnVnYQotICAgIGlzRGlyZWN0b3J5OiB0
cnVlCi0KLWVycm9yQ29kZTogMQotZW50cmllczogKG51bGwpCi0KLWVycm9yQ29kZTogMgotZW50
cmllczogKG51bGwpCi0KLUFsbCB0ZXN0cyBoYXZlIGRvbmUuCi0KSW5kZXg6IExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vcmVxdWVzdC1kaXJlY3RvcnktY29udGVu
dC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2Zp
bGVzeXN0ZW0vcmVxdWVzdC1kaXJlY3RvcnktY29udGVudC5odG1sCShyZXZpc2lvbiAxNTY2OTEp
CisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL3JlcXVlc3Qt
ZGlyZWN0b3J5LWNvbnRlbnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw3NyArMCwwIEBACi08
IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08bWV0YSBjaGFyc2V0PSJVVEYtOCI+Ci08
c2NyaXB0IHNyYz0iLi4vaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9
ImZpbGVzeXN0ZW0tdGVzdC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotZG9jdW1lbnQuYWRkRXZl
bnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIHJ1blRlc3QpOwotZnVuY3Rpb24gdGVzdCgp
Ci17Ci0gICAgdmFyIGZpbGVTeXN0ZW1Nb2RlbCA9IG5ldyBXZWJJbnNwZWN0b3IuRmlsZVN5c3Rl
bU1vZGVsOwotCi0gICAgdmFyIHRlc3RTdGVwID0gWwotICAgICAgICBmdW5jdGlvbigpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY3JlYXRlRGlyZWN0b3J5KCIvaG9nZSIs
IHRlc3RTdGVwLnNoaWZ0KCkpOwotICAgICAgICB9LAotCi0gICAgICAgIGZ1bmN0aW9uKCkKLSAg
ICAgICAgewotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jcmVhdGVEaXJlY3RvcnkoIi9ob2dl
L2Z1Z2EiLCB0ZXN0U3RlcC5zaGlmdCgpKTsKLSAgICAgICAgfSwKLQotICAgICAgICBmdW5jdGlv
bigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY3JlYXRlRmlsZSgiL2hv
Z2UvcGl5by5odG1sIiwgdGVzdFN0ZXAuc2hpZnQoKSk7Ci0gICAgICAgIH0sCi0KLSAgICAgICAg
ZnVuY3Rpb24oKQotICAgICAgICB7Ci0gICAgICAgICAgICBmaWxlU3lzdGVtTW9kZWwuX3JlcXVl
c3REaXJlY3RvcnlDb250ZW50KCJJbnZhbGlkVVJMIiwgdGVzdFN0ZXAuc2hpZnQoKSk7Ci0gICAg
ICAgIH0sCi0KLSAgICAgICAgZnVuY3Rpb24oZXJyb3JDb2RlLCBlbnRyaWVzKQotICAgICAgICB7
Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBEaXJlY3RvcnlDb250ZW50UmVxdWVzdFJl
c3VsdChlcnJvckNvZGUsIGVudHJpZXMpOwotICAgICAgICAgICAgZmlsZVN5c3RlbU1vZGVsLl9y
ZXF1ZXN0RGlyZWN0b3J5Q29udGVudCgiZmlsZXN5c3RlbTpodHRwOi8vMTI3LjAuMC4xOjgwMDAv
SW52YWxpZFR5cGUvIiwgdGVzdFN0ZXAuc2hpZnQoKSk7Ci0gICAgICAgIH0sCi0KLSAgICAgICAg
ZnVuY3Rpb24oZXJyb3JDb2RlLCBlbnRyaWVzKQotICAgICAgICB7Ci0gICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmR1bXBEaXJlY3RvcnlDb250ZW50UmVxdWVzdFJlc3VsdChlcnJvckNvZGUsIGVu
dHJpZXMpOwotICAgICAgICAgICAgZmlsZVN5c3RlbU1vZGVsLl9yZXF1ZXN0RGlyZWN0b3J5Q29u
dGVudCgiZmlsZXN5c3RlbTpodHRwOi8vMTI3LjAuMC4xOjgwMDAvdGVtcG9yYXJ5L2hvZ2UiLCB0
ZXN0U3RlcC5zaGlmdCgpKTsKLSAgICAgICAgfSwKLQotICAgICAgICBmdW5jdGlvbihlcnJvckNv
ZGUsIGVudHJpZXMpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcERp
cmVjdG9yeUNvbnRlbnRSZXF1ZXN0UmVzdWx0KGVycm9yQ29kZSwgZW50cmllcyk7Ci0gICAgICAg
ICAgICBmaWxlU3lzdGVtTW9kZWwuX3JlcXVlc3REaXJlY3RvcnlDb250ZW50KCJmaWxlc3lzdGVt
Omh0dHA6Ly8xMjcuMC4wLjE6ODAwMC90ZW1wb3JhcnkvZm9vIiwgdGVzdFN0ZXAuc2hpZnQoKSk7
Ci0gICAgICAgIH0sCi0KLSAgICAgICAgZnVuY3Rpb24oZXJyb3JDb2RlLCBlbnRyaWVzKQotICAg
ICAgICB7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBEaXJlY3RvcnlDb250ZW50UmVx
dWVzdFJlc3VsdChlcnJvckNvZGUsIGVudHJpZXMpOwotICAgICAgICAgICAgZmlsZVN5c3RlbU1v
ZGVsLl9yZXF1ZXN0RGlyZWN0b3J5Q29udGVudCgiZmlsZXN5c3RlbTpodHRwOi8vZXhhbXBsZS5j
b20vdGVtcG9yYXJ5LyIsIHRlc3RTdGVwLnNoaWZ0KCkpOwotICAgICAgICB9LAotCi0gICAgICAg
IGZ1bmN0aW9uKGVycm9yQ29kZSwgZW50cmllcykgewotICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5kdW1wRGlyZWN0b3J5Q29udGVudFJlcXVlc3RSZXN1bHQoZXJyb3JDb2RlLCBlbnRyaWVzKTsK
LSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY2xlYXJGaWxlU3lzdGVtKHRlc3RTdGVwLnNoaWZ0
KCkpOwotICAgICAgICB9LAotCi0gICAgICAgIGZ1bmN0aW9uKCkKLSAgICAgICAgewotICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIkFsbCB0ZXN0cyBoYXZlIGRvbmUuIik7Ci0g
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOwotICAgICAgICB9Ci0gICAg
XTsKLQotICAgIEluc3BlY3RvclRlc3QuY2xlYXJGaWxlU3lzdGVtKHRlc3RTdGVwLnNoaWZ0KCkp
OwotfQotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxwPlRlc3RzIHJlcXVlc3REaXJlY3Rv
cnlDb250ZW50IGNvbW1hbmQuPC9wPgotPC9ib2R5PgotPC9odG1sPgpJbmRleDogTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9yZXF1ZXN0LWZpbGUtY29udGVudC1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0
b3IvZmlsZXN5c3RlbS9yZXF1ZXN0LWZpbGUtY29udGVudC1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDE1NjY5MSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0v
cmVxdWVzdC1maWxlLWNvbnRlbnQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDI4
ICswLDAgQEAKLVRlc3RzIHJlcXVlc3RGaWxlQ29udGVudCBjb21tYW5kLgotCi1lcnJvckNvZGU6
IDIKLWNvbnRlbnQ6IChudWxsKQotY2hhcnNldDogdW5kZWZpbmVkCi0KLWVycm9yQ29kZTogOAot
Y29udGVudDogKG51bGwpCi1jaGFyc2V0OiB1bmRlZmluZWQKLQotZXJyb3JDb2RlOiAwCi1jb250
ZW50OiAiUEFTUyIKLWNoYXJzZXQ6IFVURi04Ci0KLWVycm9yQ29kZTogMTEKLWNvbnRlbnQ6IChu
dWxsKQotY2hhcnNldDogdW5kZWZpbmVkCi0KLWVycm9yQ29kZTogMQotY29udGVudDogKG51bGwp
Ci1jaGFyc2V0OiB1bmRlZmluZWQKLQotZXJyb3JDb2RlOiAyCi1jb250ZW50OiAobnVsbCkKLWNo
YXJzZXQ6IHVuZGVmaW5lZAotCi1BbGwgdGVzdHMgaGF2ZSBkb25lLgotCkluZGV4OiBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL3JlcXVlc3QtZmlsZS1jb250ZW50
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmls
ZXN5c3RlbS9yZXF1ZXN0LWZpbGUtY29udGVudC5odG1sCShyZXZpc2lvbiAxNTY2OTEpCisrKyBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL3JlcXVlc3QtZmlsZS1j
b250ZW50Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsNzkgKzAsMCBAQAotPCFET0NUWVBFIGh0
bWw+Ci08aHRtbD4KLTxoZWFkPgotPG1ldGEgY2hhcnNldD0iVVRGLTgiPgotPHNjcmlwdCBzcmM9
Ii4uL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJmaWxlc3lzdGVt
LXRlc3QuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIo
IkRPTUNvbnRlbnRMb2FkZWQiLCBydW5UZXN0KTsKLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHZh
ciBmaWxlU3lzdGVtTW9kZWwgPSBuZXcgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbDsKLQot
ICAgIHZhciB0ZXN0U3RlcCA9IFsKLSAgICAgICAgZnVuY3Rpb24oKQotICAgICAgICB7Ci0gICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmNyZWF0ZURpcmVjdG9yeSgiL2hvZ2UiLCB0ZXN0U3RlcC5z
aGlmdCgpKTsKLSAgICAgICAgfSwKLQotICAgICAgICBmdW5jdGlvbigpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIEluc3BlY3RvclRlc3Qud3JpdGVGaWxlKCIvaG9nZS9mdWdhLnR4dCIsICJwaVBB
U1N5byIsIHRlc3RTdGVwLnNoaWZ0KCkpOwotICAgICAgICB9LAotCi0gICAgICAgIGZ1bmN0aW9u
KCkKLSAgICAgICAgewotICAgICAgICAgICAgZmlsZVN5c3RlbU1vZGVsLl9yZXF1ZXN0RmlsZUNv
bnRlbnQoIkludmFsaWRVUkwiLCB0cnVlLCAyLCA2LCAiVVRGLTgiLCB0ZXN0U3RlcC5zaGlmdCgp
KTsKLSAgICAgICAgfSwKLQotICAgICAgICBmdW5jdGlvbihlcnJvckNvZGUsIGNvbnRlbnQsIGNo
YXJzZXQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcEZpbGVDb250
ZW50UmVxdWVzdFJlc3VsdChlcnJvckNvZGUsIGNvbnRlbnQsIGNoYXJzZXQpOwotICAgICAgICAg
ICAgZmlsZVN5c3RlbU1vZGVsLl9yZXF1ZXN0RmlsZUNvbnRlbnQoImZpbGVzeXN0ZW06aHR0cDov
LzEyNy4wLjAuMTo4MDAwL0ludmFsaWRUeXBlL2hvZ2UvZnVnYS50eHQiLCB0cnVlLCAyLCA2LCAi
VVRGLTgiLCB0ZXN0U3RlcC5zaGlmdCgpKTsKLSAgICAgICAgfSwKLQotICAgICAgICBmdW5jdGlv
bihlcnJvckNvZGUsIGNvbnRlbnQsIGNoYXJzZXQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuZHVtcEZpbGVDb250ZW50UmVxdWVzdFJlc3VsdChlcnJvckNvZGUsIGNvbnRl
bnQsIGNoYXJzZXQpOwotICAgICAgICAgICAgZmlsZVN5c3RlbU1vZGVsLl9yZXF1ZXN0RmlsZUNv
bnRlbnQoImZpbGVzeXN0ZW06aHR0cDovLzEyNy4wLjAuMTo4MDAwL3RlbXBvcmFyeS9ob2dlL2Z1
Z2EudHh0IiwgdHJ1ZSwgMiwgNiwgIlVURi04IiwgdGVzdFN0ZXAuc2hpZnQoKSk7Ci0gICAgICAg
IH0sCi0KLSAgICAgICAgZnVuY3Rpb24oZXJyb3JDb2RlLCBjb250ZW50LCBjaGFyc2V0KQotICAg
ICAgICB7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBGaWxlQ29udGVudFJlcXVlc3RS
ZXN1bHQoZXJyb3JDb2RlLCBjb250ZW50LCBjaGFyc2V0KTsKLSAgICAgICAgICAgIGZpbGVTeXN0
ZW1Nb2RlbC5fcmVxdWVzdEZpbGVDb250ZW50KCJmaWxlc3lzdGVtOmh0dHA6Ly8xMjcuMC4wLjE6
ODAwMC90ZW1wb3JhcnkvaG9nZSIsIHRydWUsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCAiIiwgdGVz
dFN0ZXAuc2hpZnQoKSk7Ci0gICAgICAgIH0sCi0KLSAgICAgICAgZnVuY3Rpb24oZXJyb3JDb2Rl
LCBjb250ZW50LCBjaGFyc2V0KQotICAgICAgICB7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmR1bXBGaWxlQ29udGVudFJlcXVlc3RSZXN1bHQoZXJyb3JDb2RlLCBjb250ZW50LCBjaGFyc2V0
KTsKLSAgICAgICAgICAgIGZpbGVTeXN0ZW1Nb2RlbC5fcmVxdWVzdEZpbGVDb250ZW50KCJmaWxl
c3lzdGVtOmh0dHA6Ly8xMjcuMC4wLjE6ODAwMC90ZW1wb3JhcnkvZm9vIiwgdHJ1ZSwgdW5kZWZp
bmVkLCB1bmRlZmluZWQsICIiLCB0ZXN0U3RlcC5zaGlmdCgpKTsKLSAgICAgICAgfSwKLQotICAg
ICAgICBmdW5jdGlvbihlcnJvckNvZGUsIGNvbnRlbnQsIGNoYXJzZXQpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcEZpbGVDb250ZW50UmVxdWVzdFJlc3VsdChlcnJv
ckNvZGUsIGNvbnRlbnQsIGNoYXJzZXQpOwotICAgICAgICAgICAgZmlsZVN5c3RlbU1vZGVsLl9y
ZXF1ZXN0RmlsZUNvbnRlbnQoImZpbGVzeXN0ZW06aHR0cDovL2V4YW1wbGUuY29tL3RlbXBvcmFy
eS9mb28udHh0IiwgdHJ1ZSwgdW5kZWZpbmVkLCB1bmRlZmluZWQsICIiLCB0ZXN0U3RlcC5zaGlm
dCgpKTsKLSAgICAgICAgfSwKLQotICAgICAgICBmdW5jdGlvbihlcnJvckNvZGUsIGNvbnRlbnQs
IGNoYXJzZXQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcEZpbGVD
b250ZW50UmVxdWVzdFJlc3VsdChlcnJvckNvZGUsIGNvbnRlbnQsIGNoYXJzZXQpOwotICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5jbGVhckZpbGVTeXN0ZW0odGVzdFN0ZXAuc2hpZnQoKSk7Ci0g
ICAgICAgIH0sCi0KLSAgICAgICAgZnVuY3Rpb24oKQotICAgICAgICB7Ci0gICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiQWxsIHRlc3RzIGhhdmUgZG9uZS4iKTsKLSAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7Ci0gICAgICAgIH0KLSAgICBdOwotCi0g
ICAgSW5zcGVjdG9yVGVzdC5jbGVhckZpbGVTeXN0ZW0odGVzdFN0ZXAuc2hpZnQoKSk7Ci19Ci08
L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHA+VGVzdHMgcmVxdWVzdEZpbGVDb250ZW50IGNv
bW1hbmQuPC9wPgotPC9ib2R5PgotPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9yZXF1ZXN0LWZpbGVzeXN0ZW0tcm9vdC1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5
c3RlbS9yZXF1ZXN0LWZpbGVzeXN0ZW0tcm9vdC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE1NjY5
MSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vcmVxdWVz
dC1maWxlc3lzdGVtLXJvb3QtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDEzICsw
LDAgQEAKLVRlc3RzIHJlcXVlc3RGaWxlU3lzdGVtUm9vdCBjb21tYW5kLgotCi1lcnJvckNvZGU6
IDAKLWJhY2tlbmRSb290RW50cnkudXJsOiBmaWxlc3lzdGVtOmh0dHA6Ly8xMjcuMC4wLjE6ODAw
MC90ZW1wb3JhcnkvCi0KLWVycm9yQ29kZTogOAotYmFja2VuZFJvb3RFbnRyeTogKG51bGwpCi0K
LWVycm9yQ29kZTogMgotYmFja2VuZFJvb3RFbnRyeTogKG51bGwpCi0KLUFsbCB0ZXN0cyBoYXZl
IGRvbmUuCi0KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0
ZW0vcmVxdWVzdC1maWxlc3lzdGVtLXJvb3QuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL3JlcXVlc3QtZmlsZXN5c3RlbS1yb290
Lmh0bWwJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL2ZpbGVzeXN0ZW0vcmVxdWVzdC1maWxlc3lzdGVtLXJvb3QuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMSw1OCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08bWV0
YSBjaGFyc2V0PSJVVEYtOCI+Ci08c2NyaXB0IHNyYz0iLi4vaW5zcGVjdG9yLXRlc3QuanMiPjwv
c2NyaXB0PgotPHNjcmlwdCBzcmM9ImZpbGVzeXN0ZW0tdGVzdC5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0PgotZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIHJ1blRl
c3QpOwotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgdmFyIGZpbGVTeXN0ZW1Nb2RlbCA9IG5ldyBX
ZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsOwotCi0gICAgdmFyIHRlc3RTdGVwID0gWwotICAg
ICAgICBmdW5jdGlvbigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBBZGQgQVBJ
IHRvIGRlbGV0ZSBhIEZpbGVTeXN0ZW0gY29tcGxldGVseSBhbmQgdGVzdCBnZXRGaWxlU3lzdGVt
Um9vdCBmb3IKLSAgICAgICAgICAgIC8vIHVuaW5pdGlhbGl6ZWQgRmlsZVN5c3RlbS4KLSAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuY3JlYXRlRmlsZSgiL2hvZ2UiLCB0ZXN0U3RlcC5zaGlmdCgp
KTsKLSAgICAgICAgfSwKLQotICAgICAgICBmdW5jdGlvbigpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIGZpbGVTeXN0ZW1Nb2RlbC5fcmVxdWVzdEZpbGVTeXN0ZW1Sb290KCJodHRwOi8vMTI3LjAu
MC4xOjgwMDAiLCAidGVtcG9yYXJ5IiwgdGVzdFN0ZXAuc2hpZnQoKSk7Ci0gICAgICAgIH0sCi0K
LSAgICAgICAgZnVuY3Rpb24oZXJyb3JDb2RlLCBiYWNrZW5kUm9vdEVudHJ5KQotICAgICAgICB7
Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBGaWxlU3lzdGVtUm9vdFJlcXVlc3RSZXN1
bHQoZXJyb3JDb2RlLCBiYWNrZW5kUm9vdEVudHJ5KTsKLSAgICAgICAgICAgIGZpbGVTeXN0ZW1N
b2RlbC5fcmVxdWVzdEZpbGVTeXN0ZW1Sb290KCJodHRwOi8vMTI3LjAuMC4xOjgwMDAiLCAiZml6
emJ1enoiLCB0ZXN0U3RlcC5zaGlmdCgpKTsKLSAgICAgICAgfSwKLQotICAgICAgICBmdW5jdGlv
bihlcnJvckNvZGUsIGJhY2tlbmRSb290RW50cnkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuZHVtcEZpbGVTeXN0ZW1Sb290UmVxdWVzdFJlc3VsdChlcnJvckNvZGUsIGJh
Y2tlbmRSb290RW50cnkpOwotICAgICAgICAgICAgZmlsZVN5c3RlbU1vZGVsLl9yZXF1ZXN0Rmls
ZVN5c3RlbVJvb3QoImh0dHA6Ly9leGFtcGxlLmNvbSIsICJ0ZW1wb3JhcnkiLCB0ZXN0U3RlcC5z
aGlmdCgpKTsKLSAgICAgICAgfSwKLQotICAgICAgICBmdW5jdGlvbihlcnJvckNvZGUsIGJhY2tl
bmRSb290RW50cnkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcEZp
bGVTeXN0ZW1Sb290UmVxdWVzdFJlc3VsdChlcnJvckNvZGUsIGJhY2tlbmRSb290RW50cnkpOwot
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jbGVhckZpbGVTeXN0ZW0odGVzdFN0ZXAuc2hpZnQo
KSk7Ci0gICAgICAgIH0sCi0KLSAgICAgICAgZnVuY3Rpb24oKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiQWxsIHRlc3RzIGhhdmUgZG9uZS4iKTsKLSAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7Ci0gICAgICAgIH0KLSAgICBd
OwotCi0gICAgSW5zcGVjdG9yVGVzdC5jbGVhckZpbGVTeXN0ZW0odGVzdFN0ZXAuc2hpZnQoKSk7
Ci19Ci08L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHA+VGVzdHMgcmVxdWVzdEZpbGVTeXN0
ZW1Sb290IGNvbW1hbmQuPC9wPgotPC9ib2R5PgotPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9yZXF1ZXN0LW1ldGFkYXRhLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxl
c3lzdGVtL3JlcXVlc3QtbWV0YWRhdGEtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNTY2OTEpCisr
KyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL3JlcXVlc3QtbWV0
YWRhdGEtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDIzICswLDAgQEAKLVRlc3Rz
IHJlcXVlc3RNZXRhZGF0YSBjb21tYW5kLgotCi1lcnJvckNvZGU6IDIKLW1ldGFkYXRhOiAobnVs
bCkKLQotZXJyb3JDb2RlOiA4Ci1tZXRhZGF0YTogKG51bGwpCi0KLWVycm9yQ29kZTogMAotbWV0
YWRhdGE6Ci0gIG1vZGlmaWNhdGlvblRpbWU6IChleGlzdHMpCi0gIHNpemU6IDQKLQotZXJyb3JD
b2RlOiAwCi1tZXRhZGF0YToKLSAgbW9kaWZpY2F0aW9uVGltZTogKGV4aXN0cykKLSAgc2l6ZTog
MAotCi1lcnJvckNvZGU6IDEKLW1ldGFkYXRhOiAobnVsbCkKLQotQWxsIHRlc3RzIGhhdmUgZG9u
ZS4KLQpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9y
ZXF1ZXN0LW1ldGFkYXRhLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9yZXF1ZXN0LW1ldGFkYXRhLmh0bWwJKHJldmlzaW9uIDE1
NjY5MSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vcmVx
dWVzdC1tZXRhZGF0YS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDc4ICswLDAgQEAKLTwhRE9D
VFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KLTxzY3Jp
cHQgc3JjPSIuLi9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iZmls
ZXN5c3RlbS10ZXN0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1kb2N1bWVudC5hZGRFdmVudExp
c3RlbmVyKCJET01Db250ZW50TG9hZGVkIiwgcnVuVGVzdCk7Ci1mdW5jdGlvbiB0ZXN0KCkKLXsK
LSAgICB2YXIgZmlsZVN5c3RlbU1vZGVsID0gbmV3IFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9k
ZWw7Ci0KLSAgICB2YXIgdGVzdFN0ZXAgPSBbCi0gICAgICAgIGZ1bmN0aW9uKCkKLSAgICAgICAg
ewotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC53cml0ZUZpbGUoIi9ob2dlIiwgImZ1Z2EiLCB0
ZXN0U3RlcC5zaGlmdCgpKTsKLSAgICAgICAgfSwKLQotICAgICAgICBmdW5jdGlvbigpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIGZpbGVTeXN0ZW1Nb2RlbC5yZXF1ZXN0TWV0YWRhdGEobmV3IElu
c3BlY3RvclRlc3QuTW9ja0VudHJ5KCJJbnZhbGlkVVJMIiksIHRlc3RTdGVwLnNoaWZ0KCkpOwot
ICAgICAgICB9LAotCi0gICAgICAgIGZ1bmN0aW9uKGVycm9yQ29kZSwgbWV0YWRhdGEpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcE1ldGFkYXRhUmVxdWVzdFJlc3Vs
dChlcnJvckNvZGUsIG1ldGFkYXRhKTsKLSAgICAgICAgICAgIGZpbGVTeXN0ZW1Nb2RlbC5yZXF1
ZXN0TWV0YWRhdGEobmV3IEluc3BlY3RvclRlc3QuTW9ja0VudHJ5KCJmaWxlc3lzdGVtOmh0dHA6
Ly8xMjcuMC4wLjE6ODAwMC9JbnZhbGlkVHlwZSIpLCB0ZXN0U3RlcC5zaGlmdCgpKTsKLSAgICAg
ICAgfSwKLQotICAgICAgICBmdW5jdGlvbihlcnJvckNvZGUsIG1ldGFkYXRhKQotICAgICAgICB7
Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBNZXRhZGF0YVJlcXVlc3RSZXN1bHQoZXJy
b3JDb2RlLCBtZXRhZGF0YSk7Ci0gICAgICAgICAgICBmaWxlU3lzdGVtTW9kZWwucmVxdWVzdE1l
dGFkYXRhKG5ldyBJbnNwZWN0b3JUZXN0Lk1vY2tFbnRyeSgiZmlsZXN5c3RlbTpodHRwOi8vMTI3
LjAuMC4xOjgwMDAvdGVtcG9yYXJ5L2hvZ2UiKSwgdGVzdFN0ZXAuc2hpZnQoKSk7Ci0gICAgICAg
IH0sCi0KLSAgICAgICAgZnVuY3Rpb24oZXJyb3JDb2RlLCBtZXRhZGF0YSkKLSAgICAgICAgewot
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wTWV0YWRhdGFSZXF1ZXN0UmVzdWx0KGVycm9y
Q29kZSwgbWV0YWRhdGEpOwotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jcmVhdGVEaXJlY3Rv
cnkoIi9waXlvIiwgdGVzdFN0ZXAuc2hpZnQoKSk7Ci0gICAgICAgIH0sCi0KLSAgICAgICAgZnVu
Y3Rpb24oKQotICAgICAgICB7Ci0gICAgICAgICAgICBmaWxlU3lzdGVtTW9kZWwucmVxdWVzdE1l
dGFkYXRhKG5ldyBJbnNwZWN0b3JUZXN0Lk1vY2tFbnRyeSgiZmlsZXN5c3RlbTpodHRwOi8vMTI3
LjAuMC4xOjgwMDAvdGVtcG9yYXJ5L3BpeW8iKSwgdGVzdFN0ZXAuc2hpZnQoKSk7Ci0gICAgICAg
IH0sCi0KLSAgICAgICAgZnVuY3Rpb24oZXJyb3JDb2RlLCBtZXRhZGF0YSkKLSAgICAgICAgewot
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wTWV0YWRhdGFSZXF1ZXN0UmVzdWx0KGVycm9y
Q29kZSwgbWV0YWRhdGEpOwotICAgICAgICAgICAgZmlsZVN5c3RlbU1vZGVsLnJlcXVlc3RNZXRh
ZGF0YShuZXcgSW5zcGVjdG9yVGVzdC5Nb2NrRW50cnkoImZpbGVzeXN0ZW06aHR0cDovLzEyNy4w
LjAuMTo4MDAwL3RlbXBvcmFyeS9mb28iKSwgdGVzdFN0ZXAuc2hpZnQoKSk7Ci0gICAgICAgIH0s
Ci0KLSAgICAgICAgZnVuY3Rpb24oZXJyb3JDb2RlLCBtZXRhZGF0YSkKLSAgICAgICAgewotICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wTWV0YWRhdGFSZXF1ZXN0UmVzdWx0KGVycm9yQ29k
ZSwgbWV0YWRhdGEpOwotICAgICAgICAgICAgZmlsZVN5c3RlbU1vZGVsLnJlcXVlc3RNZXRhZGF0
YShuZXcgSW5zcGVjdG9yVGVzdC5Nb2NrRW50cnkoImZpbGVzeXN0ZW06aHR0cDovL2V4YW1wbGUu
Y29tL3RlbXBvcmFyeS9iYXIiKSwgdGVzdFN0ZXAuc2hpZnQoKSk7Ci0gICAgICAgIH0sCi0KLSAg
ICAgICAgZnVuY3Rpb24oZXJyb3JDb2RlKQotICAgICAgICB7Ci0gICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmNsZWFyRmlsZVN5c3RlbSh0ZXN0U3RlcC5zaGlmdCgpKTsKLSAgICAgICAgfSwKLQot
ICAgICAgICBmdW5jdGlvbigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
YWRkUmVzdWx0KCJBbGwgdGVzdHMgaGF2ZSBkb25lLiIpOwotICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5jb21wbGV0ZVRlc3QoKTsKLSAgICAgICAgfQotICAgIF07Ci0KLSAgICBJbnNwZWN0b3JU
ZXN0LmNsZWFyRmlsZVN5c3RlbSh0ZXN0U3RlcC5zaGlmdCgpKTsKLX0KLTwvc2NyaXB0PgotPC9o
ZWFkPgotPGJvZHk+Ci08cD5UZXN0cyByZXF1ZXN0TWV0YWRhdGEgY29tbWFuZC48L3A+Ci08L2Jv
ZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxl
c3lzdGVtL2RlbGV0ZS1lbnRyeS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9kZWxldGUtZW50cnktZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9maWxlc3lzdGVtL2RlbGV0ZS1lbnRyeS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTEsMTEgKzAsMCBAQAotVGVzdHMgZGVsZXRlRW50cnkgY29tbWFuZC4KLQotZXJyb3JDb2RlOiAy
Ci1lcnJvckNvZGU6IDgKLWVycm9yQ29kZTogMAotZXJyb3JDb2RlOiAwCi1lcnJvckNvZGU6IDAK
LWVycm9yQ29kZTogMQotYmFja2VuZFJvb3RFbnRyeTogKG51bGwpCi0KLQpJbmRleDogTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9kZWxldGUtZW50cnkuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVt
L2RlbGV0ZS1lbnRyeS5odG1sCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL2RlbGV0ZS1lbnRyeS5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDgzICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxt
ZXRhIGNoYXJzZXQ9IlVURi04Ij4KLTxzY3JpcHQgc3JjPSIuLi9pbnNwZWN0b3ItdGVzdC5qcyI+
PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iZmlsZXN5c3RlbS10ZXN0LmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQ+Ci1kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIiwgcnVu
VGVzdCk7Ci1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICB2YXIgZmlsZVN5c3RlbU1vZGVsID0gbmV3
IFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWw7Ci0KLSAgICB2YXIgdGVzdFN0ZXAgPSBbCi0g
ICAgICAgIGZ1bmN0aW9uKCkKLSAgICAgICAgewotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5j
cmVhdGVGaWxlKCIvaG9nZSIsIHRlc3RTdGVwLnNoaWZ0KCkpOwotICAgICAgICB9LAotCi0gICAg
ICAgIGZ1bmN0aW9uKCkKLSAgICAgICAgewotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jcmVh
dGVEaXJlY3RvcnkoIi9mdWdhIiwgdGVzdFN0ZXAuc2hpZnQoKSk7Ci0gICAgICAgIH0sCi0KLSAg
ICAgICAgZnVuY3Rpb24oKQotICAgICAgICB7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNy
ZWF0ZUZpbGUoIi9mdWdhL3BpeW8iLCB0ZXN0U3RlcC5zaGlmdCgpKTsKLSAgICAgICAgfSwKLQot
ICAgICAgICBmdW5jdGlvbigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
Y3JlYXRlRGlyZWN0b3J5KCIvZm9vIiwgdGVzdFN0ZXAuc2hpZnQoKSk7Ci0gICAgICAgIH0sCi0K
LSAgICAgICAgZnVuY3Rpb24oKQotICAgICAgICB7Ci0gICAgICAgICAgICBmaWxlU3lzdGVtTW9k
ZWwuX2RlbGV0ZUVudHJ5KCJJbnZhbGlkVVJMIiwgdGVzdFN0ZXAuc2hpZnQoKSk7Ci0gICAgICAg
IH0sCi0KLSAgICAgICAgZnVuY3Rpb24oZXJyb3JDb2RlKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiZXJyb3JDb2RlOiAiICsgZXJyb3JDb2RlKTsKLSAg
ICAgICAgICAgIGZpbGVTeXN0ZW1Nb2RlbC5fZGVsZXRlRW50cnkoImZpbGVzeXN0ZW06aHR0cDov
LzEyNy4wLjAuMTo4MDAwL0ludmFsaWRUeXBlL2Z1Z2EiLCB0ZXN0U3RlcC5zaGlmdCgpKTsKLSAg
ICAgICAgfSwKLQotICAgICAgICBmdW5jdGlvbihlcnJvckNvZGUpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJlcnJvckNvZGU6ICIgKyBlcnJvckNvZGUp
OwotICAgICAgICAgICAgZmlsZVN5c3RlbU1vZGVsLl9kZWxldGVFbnRyeSgiZmlsZXN5c3RlbTpo
dHRwOi8vMTI3LjAuMC4xOjgwMDAvdGVtcG9yYXJ5L2hvZ2UiLCB0ZXN0U3RlcC5zaGlmdCgpKTsK
LSAgICAgICAgfSwKLQotICAgICAgICBmdW5jdGlvbihlcnJvckNvZGUpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJlcnJvckNvZGU6ICIgKyBlcnJvckNv
ZGUpOwotICAgICAgICAgICAgZmlsZVN5c3RlbU1vZGVsLl9kZWxldGVFbnRyeSgiZmlsZXN5c3Rl
bTpodHRwOi8vMTI3LjAuMC4xOjgwMDAvdGVtcG9yYXJ5L2Z1Z2EiLCB0ZXN0U3RlcC5zaGlmdCgp
KTsKLSAgICAgICAgfSwKLQotICAgICAgICBmdW5jdGlvbihlcnJvckNvZGUpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJlcnJvckNvZGU6ICIgKyBlcnJv
ckNvZGUpOwotICAgICAgICAgICAgZmlsZVN5c3RlbU1vZGVsLl9kZWxldGVFbnRyeSgiZmlsZXN5
c3RlbTpodHRwOi8vMTI3LjAuMC4xOjgwMDAvdGVtcG9yYXJ5LyIsIHRlc3RTdGVwLnNoaWZ0KCkp
OwotICAgICAgICB9LAotCi0gICAgICAgIGZ1bmN0aW9uKGVycm9yQ29kZSkKLSAgICAgICAgewot
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoImVycm9yQ29kZTogIiArIGVycm9y
Q29kZSk7Ci0gICAgICAgICAgICBmaWxlU3lzdGVtTW9kZWwuX3JlcXVlc3RGaWxlU3lzdGVtUm9v
dCgiaHR0cDovLzEyNy4wLjAuMTo4MDAwIiwgInRlbXBvcmFyeSIsIHRlc3RTdGVwLnNoaWZ0KCkp
OwotICAgICAgICB9LAotCi0gICAgICAgIGZ1bmN0aW9uKGVycm9yQ29kZSwgYmFja2VuZFJvb3RF
bnRyeSkKLSAgICAgICAgewotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wRmlsZVN5c3Rl
bVJvb3RSZXF1ZXN0UmVzdWx0KGVycm9yQ29kZSwgYmFja2VuZFJvb3RFbnRyeSk7Ci0gICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOwotICAgICAgICB9Ci0gICAgXTsKLQot
ICAgIEluc3BlY3RvclRlc3QuY2xlYXJGaWxlU3lzdGVtKHRlc3RTdGVwLnNoaWZ0KCkpOwotfQot
PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxwPlRlc3RzIGRlbGV0ZUVudHJ5IGNvbW1hbmQu
PC9wPgotPC9ib2R5PgotPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvZmlsZXN5c3RlbS9kaXJlY3RvcnktdHJlZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9kaXJlY3Rvcnkt
dHJlZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vZGlyZWN0b3J5LXRyZWUtZXhwZWN0ZWQudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMyICswLDAgQEAKLVRlc3RzIGRpcmVjdG9yeSB0cmVlIG9uIEZp
bGVTeXN0ZW1WaWV3LgotCi1bZGlyZWN0b3J5IHRyZWUgbm9kZV0KLWV4cGFuZGVkOiB0cnVlCi1l
bnRyeTogKG51bGwpCi0jY2hpbGRyZW46IDEKLSAgW2RpcmVjdG9yeSB0cmVlIG5vZGVdCi0gIGV4
cGFuZGVkOiB0cnVlCi0gIGVudHJ5OiBmaWxlc3lzdGVtOmh0dHA6Ly8xMjcuMC4wLjE6ODAwMC90
ZW1wb3JhcnkvCi0gICNjaGlsZHJlbjogMQotICAgIFtkaXJlY3RvcnkgdHJlZSBub2RlXQotICAg
IGV4cGFuZGVkOiBmYWxzZQotICAgIGVudHJ5OiBmaWxlc3lzdGVtOmh0dHA6Ly8xMjcuMC4wLjE6
ODAwMC90ZW1wb3JhcnkvaG9nZQotICAgICNjaGlsZHJlbjogMAotCi1bZGlyZWN0b3J5IHRyZWUg
bm9kZV0KLWV4cGFuZGVkOiB0cnVlCi1lbnRyeTogKG51bGwpCi0jY2hpbGRyZW46IDEKLSAgW2Rp
cmVjdG9yeSB0cmVlIG5vZGVdCi0gIGV4cGFuZGVkOiB0cnVlCi0gIGVudHJ5OiBmaWxlc3lzdGVt
Omh0dHA6Ly8xMjcuMC4wLjE6ODAwMC90ZW1wb3JhcnkvCi0gICNjaGlsZHJlbjogMQotICAgIFtk
aXJlY3RvcnkgdHJlZSBub2RlXQotICAgIGV4cGFuZGVkOiB0cnVlCi0gICAgZW50cnk6IGZpbGVz
eXN0ZW06aHR0cDovLzEyNy4wLjAuMTo4MDAwL3RlbXBvcmFyeS9ob2dlCi0gICAgI2NoaWxkcmVu
OiAxCi0gICAgICBbZGlyZWN0b3J5IHRyZWUgbm9kZV0KLSAgICAgIGV4cGFuZGVkOiBmYWxzZQot
ICAgICAgZW50cnk6IGZpbGVzeXN0ZW06aHR0cDovLzEyNy4wLjAuMTo4MDAwL3RlbXBvcmFyeS9o
b2dlL2Z1Z2EKLSAgICAgICNjaGlsZHJlbjogMAotCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL2RpcmVjdG9yeS10cmVlLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9kaXJlY3Rvcnkt
dHJlZS5odG1sCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9maWxlc3lzdGVtL2RpcmVjdG9yeS10cmVlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTEsMTEwICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxtZXRhIGNo
YXJzZXQ9IlVURi04Ij4KLTxzY3JpcHQgc3JjPSIuLi9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0IHNyYz0iZmlsZXN5c3RlbS10ZXN0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+
Ci1kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIiwgcnVuVGVzdCk7
Ci1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICB2YXIgcmVzb3VyY2VzUGFuZWwgPSBXZWJJbnNwZWN0
b3Iuc2hvd1BhbmVsKCJyZXNvdXJjZXMiKTsKLSAgICB2YXIgZmlsZVN5c3RlbUxpc3RUcmVlRWxl
bWVudCA9IHJlc291cmNlc1BhbmVsLmZpbGVTeXN0ZW1MaXN0VHJlZUVsZW1lbnQ7Ci0gICAgaWYg
KCFmaWxlU3lzdGVtTGlzdFRyZWVFbGVtZW50KSB7Ci0gICAgICAgIGZpbGVTeXN0ZW1MaXN0VHJl
ZUVsZW1lbnQgPSBuZXcgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1MaXN0VHJlZUVsZW1lbnQocmVz
b3VyY2VzUGFuZWwpOwotICAgICAgICByZXNvdXJjZXNQYW5lbC5maWxlU3lzdGVtTGlzdFRyZWVF
bGVtZW50ID0gZmlsZVN5c3RlbUxpc3RUcmVlRWxlbWVudDsKLSAgICAgICAgcmVzb3VyY2VzUGFu
ZWwuc2lkZWJhclRyZWUuYXBwZW5kQ2hpbGQoZmlsZVN5c3RlbUxpc3RUcmVlRWxlbWVudCk7Ci0g
ICAgfQotCi0gICAgdmFyIGZpbGVTeXN0ZW1JdGVtID0gbnVsbDsKLSAgICB2YXIgZmlsZVN5c3Rl
bVZpZXcgPSBudWxsOwotICAgIHZhciBkaXJlY3RvcnlUcmVlID0gbnVsbDsKLQotICAgIHZhciBy
ZXF1ZXN0c0xlZnQgPSAwOwotICAgIHZhciB0ZXN0U3RlcCA9IFsKLSAgICAgICAgZnVuY3Rpb24o
KQotICAgICAgICB7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNyZWF0ZURpcmVjdG9yeSgi
L2hvZ2UiLCB0ZXN0U3RlcC5zaGlmdCgpKTsKLSAgICAgICAgfSwKLQotICAgICAgICBmdW5jdGlv
bigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY3JlYXRlRGlyZWN0b3J5
KCIvaG9nZS9mdWdhIiwgdGVzdFN0ZXAuc2hpZnQoKSk7Ci0gICAgICAgIH0sCi0KLSAgICAgICAg
ZnVuY3Rpb24oKQotICAgICAgICB7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNyZWF0ZUZp
bGUoIi9ob2dlL2Z1Z2EvcGl5byIsIHRlc3RTdGVwLnNoaWZ0KCkpOwotICAgICAgICB9LAotCi0g
ICAgICAgIGZ1bmN0aW9uKCkKLSAgICAgICAgewotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5h
ZGRTbmlmZmVyKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTGlzdFRyZWVFbGVtZW50LnByb3RvdHlw
ZSwgIl9maWxlU3lzdGVtQWRkZWQiLCB0ZXN0U3RlcC5zaGlmdCgpLCBmYWxzZSk7Ci0gICAgICAg
ICAgICBmaWxlU3lzdGVtTGlzdFRyZWVFbGVtZW50Ll9yZWZyZXNoRmlsZVN5c3RlbSgpOwotICAg
ICAgICB9LAotCi0gICAgICAgIGZ1bmN0aW9uKGV2ZW50KQotICAgICAgICB7Ci0gICAgICAgICAg
ICBpZiAoZXZlbnQuZGF0YS5uYW1lICE9PSAiZmlsZXN5c3RlbTpodHRwOi8vMTI3LjAuMC4xOjgw
MDAvdGVtcG9yYXJ5IikKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgIGZp
bGVTeXN0ZW1JdGVtID0gZmlsZVN5c3RlbUxpc3RUcmVlRWxlbWVudC5fZmlsZVN5c3RlbVRyZWVF
bGVtZW50QnlOYW1lKCJmaWxlc3lzdGVtOmh0dHA6Ly8xMjcuMC4wLjE6ODAwMC90ZW1wb3Jhcnki
KTsKLQotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRTbmlmZmVyKFdlYkluc3BlY3Rvci5G
aWxlU3lzdGVtTW9kZWwucHJvdG90eXBlLCAiX2RpcmVjdG9yeUNvbnRlbnRSZWNlaXZlZCIsIHRl
c3RTdGVwLnNoaWZ0KCksIGZhbHNlKTsKLSAgICAgICAgICAgIGZpbGVTeXN0ZW1JdGVtLnNlbGVj
dCgpOwotICAgICAgICAgICAgZmlsZVN5c3RlbVZpZXcgPSBmaWxlU3lzdGVtSXRlbS5fZmlsZVN5
c3RlbVZpZXc7Ci0gICAgICAgICAgICBkaXJlY3RvcnlUcmVlID0gZmlsZVN5c3RlbVZpZXcuX2Rp
cmVjdG9yeVRyZWU7Ci0gICAgICAgIH0sCi0KLSAgICAgICAgZnVuY3Rpb24oKSB7Ci0gICAgICAg
ICAgICBkdW1wRGlyZWN0b3J5VHJlZShkaXJlY3RvcnlUcmVlKTsKLSAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuYWRkUmVzdWx0KCIiKTsKLQotICAgICAgICAgICAgZnVuY3Rpb24gcmVxdWVzdFNl
bnQoKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICsrcmVxdWVzdHNMZWZ0OwotICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFNuaWZmZXIoV2ViSW5z
cGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5wcm90b3R5cGUsICJfZGlyZWN0b3J5Q29udGVudFJlY2Vp
dmVkIiwgdGVzdFN0ZXAuc2hpZnQoKSwgdHJ1ZSk7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmFkZFNuaWZmZXIoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5wcm90b3R5cGUsICJyZXF1
ZXN0RGlyZWN0b3J5Q29udGVudCIsIHJlcXVlc3RTZW50LCB0cnVlKTsKLQotICAgICAgICAgICAg
ZGlyZWN0b3J5VHJlZS5jaGlsZHJlblswXS5leHBhbmRSZWN1cnNpdmVseSgpOwotICAgICAgICB9
LAotCi0gICAgICAgIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgaWYgKC0tcmVxdWVzdHNMZWZ0
KQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIGR1bXBEaXJlY3RvcnlUcmVl
KGRpcmVjdG9yeVRyZWUpOwotCi0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNsZWFyRmlsZVN5
c3RlbSh0ZXN0U3RlcC5zaGlmdCgpKTsKLSAgICAgICAgfSwKLQotICAgICAgICBmdW5jdGlvbigp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7Ci0g
ICAgICAgIH0KLSAgICBdOwotCi0gICAgSW5zcGVjdG9yVGVzdC5jbGVhckZpbGVTeXN0ZW0odGVz
dFN0ZXAuc2hpZnQoKSk7Ci0KLSAgICBmdW5jdGlvbiBkdW1wRGlyZWN0b3J5VHJlZSh0cmVlTm9k
ZSwgaW5kZW50KQotICAgIHsKLSAgICAgICAgaW5kZW50ID0gaW5kZW50IHx8ICIiOwotICAgICAg
ICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChpbmRlbnQgKyAiW2RpcmVjdG9yeSB0cmVlIG5vZGVd
Iik7Ci0gICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KGluZGVudCArICJleHBhbmRlZDog
IiArIHRyZWVOb2RlLmV4cGFuZGVkKTsKLSAgICAgICAgaWYgKHRyZWVOb2RlLl9lbnRyeSkKLSAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KGluZGVudCArICJlbnRyeTogIiArIHRy
ZWVOb2RlLl9lbnRyeS51cmwpCi0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuYWRkUmVzdWx0KGluZGVudCArICJlbnRyeTogKG51bGwpIikKLSAgICAgICAgSW5zcGVjdG9y
VGVzdC5hZGRSZXN1bHQoaW5kZW50ICsgIiNjaGlsZHJlbjogIiArIHRyZWVOb2RlLmNoaWxkcmVu
Lmxlbmd0aCk7Ci0KLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0cmVlTm9kZS5jaGlsZHJl
bi5sZW5ndGg7ICsraSkKLSAgICAgICAgICAgIGR1bXBEaXJlY3RvcnlUcmVlKHRyZWVOb2RlLmNo
aWxkcmVuW2ldLCBpbmRlbnQgKyAiICAiKTsKLSAgICB9Ci19Ci08L3NjcmlwdD4KLTwvaGVhZD4K
LTxib2R5PgotPHA+VGVzdHMgZGlyZWN0b3J5IHRyZWUgb24gRmlsZVN5c3RlbVZpZXcuPC9wPgot
PC9ib2R5PgotPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
ZmlsZXN5c3RlbS9maWxlc3lzdGVtLXRlc3QuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9maWxlc3lzdGVtLXRlc3QuanMJKHJldmlz
aW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0
ZW0vZmlsZXN5c3RlbS10ZXN0LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE5NyArMCwwIEBACi12
YXIgaW5pdGlhbGl6ZV9GaWxlU3lzdGVtVGVzdCA9IGZ1bmN0aW9uKCkKLXsKLSAgICB2YXIgbmV4
dENhbGxiYWNrSWQgPSAwOwotICAgIHZhciBjYWxsYmFja3MgPSB7fTsKLQotICAgIEluc3BlY3Rv
clRlc3QuTW9ja0VudHJ5ID0gZnVuY3Rpb24odXJsKQotICAgIHsKLSAgICAgICAgdGhpcy51cmwg
PSB1cmw7Ci0gICAgfQotCi0gICAgSW5zcGVjdG9yVGVzdC5yZWdpc3RlckNhbGxiYWNrID0gZnVu
Y3Rpb24oY2FsbGJhY2spCi0gICAgewotICAgICAgICB2YXIgY2FsbGJhY2tJZCA9ICsrbmV4dENh
bGxiYWNrSWQ7Ci0gICAgICAgIGNhbGxiYWNrc1tjYWxsYmFja0lkXSA9IGNhbGxiYWNrOwotICAg
ICAgICByZXR1cm4gImRpc3BhdGNoQ2FsbGJhY2suYmluZChudWxsLCAiICsgY2FsbGJhY2tJZCAr
ICIpIjsKLSAgICB9OwotCi0gICAgSW5zcGVjdG9yVGVzdC5kaXNwYXRjaENhbGxiYWNrID0gZnVu
Y3Rpb24ocGFja2VkQXJncykKLSAgICB7Ci0gICAgICAgIHZhciBhcmdzID0gSlNPTi5wYXJzZShw
YWNrZWRBcmdzKTsKLSAgICAgICAgdmFyIGNhbGxiYWNrSWQgPSBhcmdzLnNoaWZ0KCk7Ci0gICAg
ICAgIHZhciBjYWxsYmFjayA9IGNhbGxiYWNrc1tjYWxsYmFja0lkXTsKLSAgICAgICAgZGVsZXRl
IGNhbGxiYWNrc1tjYWxsYmFja0lkXTsKLSAgICAgICAgY2FsbGJhY2suYXBwbHkobnVsbCwgYXJn
cyk7Ci0gICAgfTsKLQotICAgIEluc3BlY3RvclRlc3QuY3JlYXRlRGlyZWN0b3J5ID0gZnVuY3Rp
b24ocGF0aCwgY2FsbGJhY2spCi0gICAgewotICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRl
SW5QYWdlKCJjcmVhdGVEaXJlY3RvcnkoZXNjYXBlKFwiIiArIGVzY2FwZShwYXRoKSArICJcIiks
ICIgKyBJbnNwZWN0b3JUZXN0LnJlZ2lzdGVyQ2FsbGJhY2soY2FsbGJhY2spICsgIikiKTsKLSAg
ICB9OwotCi0gICAgSW5zcGVjdG9yVGVzdC5jcmVhdGVGaWxlID0gZnVuY3Rpb24ocGF0aCwgY2Fs
bGJhY2spCi0gICAgewotICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJjcmVh
dGVGaWxlKHVuZXNjYXBlKFwiIiArIGVzY2FwZShwYXRoKSArICJcIiksICIgKyBJbnNwZWN0b3JU
ZXN0LnJlZ2lzdGVyQ2FsbGJhY2soY2FsbGJhY2spICsgIikiKTsKLSAgICB9OwotCi0gICAgSW5z
cGVjdG9yVGVzdC53cml0ZUZpbGUgPSBmdW5jdGlvbihwYXRoLCBjb250ZW50LCBjYWxsYmFjaykK
LSAgICB7Ci0gICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoIndyaXRlRmlsZSh1
bmVzY2FwZShcIiIgKyBlc2NhcGUocGF0aCkgKyAiXCIpLCB1bmVzY2FwZShcIiIgKyBlc2NhcGUo
Y29udGVudCkgKyAiXCIpLCAiICsgSW5zcGVjdG9yVGVzdC5yZWdpc3RlckNhbGxiYWNrKGNhbGxi
YWNrKSArICIpIik7Ci0gICAgfTsKLQotICAgIEluc3BlY3RvclRlc3QuY2xlYXJGaWxlU3lzdGVt
ID0gZnVuY3Rpb24oY2FsbGJhY2spCi0gICAgewotICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1
YXRlSW5QYWdlKCJjbGVhckZpbGVTeXN0ZW0oIiArIEluc3BlY3RvclRlc3QucmVnaXN0ZXJDYWxs
YmFjayhjYWxsYmFjaykgKyAiKSIpOwotICAgIH07Ci0KLSAgICBJbnNwZWN0b3JUZXN0LmR1bXBG
aWxlU3lzdGVtUm9vdFJlcXVlc3RSZXN1bHQgPSBmdW5jdGlvbihlcnJvckNvZGUsIGJhY2tlbmRS
b290RW50cnkpCi0gICAgewotICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiZXJyb3JD
b2RlOiAiICsgZXJyb3JDb2RlKTsKLSAgICAgICAgaWYgKGJhY2tlbmRSb290RW50cnkpCi0gICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiYmFja2VuZFJvb3RFbnRyeS51cmw6ICIg
KyBiYWNrZW5kUm9vdEVudHJ5LnVybCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuYWRkUmVzdWx0KCJiYWNrZW5kUm9vdEVudHJ5OiAobnVsbCkiKTsKLSAgICAgICAg
SW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIiIpOwotICAgIH07Ci0KLSAgICBJbnNwZWN0b3JUZXN0
LmR1bXBEaXJlY3RvcnlDb250ZW50UmVxdWVzdFJlc3VsdCA9IGZ1bmN0aW9uKGVycm9yQ29kZSwg
ZW50cmllcykKLSAgICB7Ci0gICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJlcnJvckNv
ZGU6ICIgKyBlcnJvckNvZGUpOwotCi0gICAgICAgIGlmICghZW50cmllcykgewotICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoImVudHJpZXM6IChudWxsKSIpOwotICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIiIpOwotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICB9Ci0KLSAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoImVudHJpZXM6Iik7Ci0g
ICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZW50cmllcy5sZW5ndGg7ICsraSkgewotICAgICAg
ICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCIgICIgKyBpICsgIjoiKTsKLSAgICAgICAgICBm
b3IgKHZhciBqIGluIGVudHJpZXNbaV0pCi0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJl
c3VsdCgiICAgICIgKyBqICsgIjogIiArIGVudHJpZXNbaV1bal0pOwotICAgICAgICB9Ci0gICAg
ICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCIiKTsKLSAgICB9OwotCi0gICAgSW5zcGVjdG9y
VGVzdC5kdW1wTWV0YWRhdGFSZXF1ZXN0UmVzdWx0ID0gZnVuY3Rpb24oZXJyb3JDb2RlLCBtZXRh
ZGF0YSkKLSAgICB7Ci0gICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJlcnJvckNvZGU6
ICIgKyBlcnJvckNvZGUpOwotICAgICAgICBpZiAobWV0YWRhdGEpIHsKLSAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuYWRkUmVzdWx0KCJtZXRhZGF0YToiKTsKLSAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuYWRkUmVzdWx0KCIgIG1vZGlmaWNhdGlvblRpbWU6ICIgKyAoIm1vZGlmaWNhdGlvblRp
bWUiIGluIG1ldGFkYXRhID8gIihleGlzdHMpIiA6ICIobnVsbCkiKSk7Ci0gICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiICBzaXplOiAiICsgKCJzaXplIiBpbiBtZXRhZGF0YSA/
IG1ldGFkYXRhLnNpemUgOiAiKG51bGwpIikpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIm1ldGFkYXRhOiAobnVsbCkiKTsKLSAgICAgICAg
fQotICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiIik7Ci0gICAgfTsKLQotICAgIElu
c3BlY3RvclRlc3QuZHVtcEZpbGVDb250ZW50UmVxdWVzdFJlc3VsdCA9IGZ1bmN0aW9uKGVycm9y
Q29kZSwgY29udGVudCwgY2hhcnNldCkKLSAgICB7Ci0gICAgICAgIEluc3BlY3RvclRlc3QuYWRk
UmVzdWx0KCJlcnJvckNvZGU6ICIgKyBlcnJvckNvZGUpOwotCi0gICAgICAgIGlmIChjb250ZW50
KQotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoImNvbnRlbnQ6IFwiIiArIGNv
bnRlbnQgKyAiXCIiKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5h
ZGRSZXN1bHQoImNvbnRlbnQ6IChudWxsKSIpOwotCi0gICAgICAgIEluc3BlY3RvclRlc3QuYWRk
UmVzdWx0KCJjaGFyc2V0OiAiICsgY2hhcnNldCk7Ci0gICAgICAgIEluc3BlY3RvclRlc3QuYWRk
UmVzdWx0KCIiKTsKLSAgICB9OwotfQotCi1mdW5jdGlvbiBkaXNwYXRjaENhbGxiYWNrKCkKLXsK
LSAgICB2YXIgYXJncyA9IEpTT04uc3RyaW5naWZ5KEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxs
KGFyZ3VtZW50cykpOwotICAgIHRlc3RSdW5uZXIuZXZhbHVhdGVJbldlYkluc3BlY3Rvcig5OTks
ICJJbnNwZWN0b3JUZXN0LmRpc3BhdGNoQ2FsbGJhY2sodW5lc2NhcGUoXCIiICsgZXNjYXBlKGFy
Z3MpICsgIlwiKSkiKTsKLX0KLQotZnVuY3Rpb24gY3JlYXRlRGlyZWN0b3J5KHBhdGgsIGNhbGxi
YWNrKQotewotICAgIHdlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKFRFTVBPUkFSWSwgMSwgZGlkR2V0
RmlsZVN5c3RlbSk7Ci0KLSAgICBmdW5jdGlvbiBkaWRHZXRGaWxlU3lzdGVtKGZpbGVTeXN0ZW0p
Ci0gICAgewotICAgICAgICBmaWxlU3lzdGVtLnJvb3QuZ2V0RGlyZWN0b3J5KHBhdGgsIHtjcmVh
dGU6dHJ1ZX0sIGZ1bmN0aW9uKGVudHJ5KSB7Ci0gICAgICAgICAgICBjYWxsYmFjaygpOwotICAg
ICAgICB9KTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIGNyZWF0ZUZpbGUocGF0aCwgY2FsbGJhY2sp
Ci17Ci0gICAgd2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0oVEVNUE9SQVJZLCAxLCBkaWRHZXRGaWxl
U3lzdGVtKTsKLQotICAgIGZ1bmN0aW9uIGRpZEdldEZpbGVTeXN0ZW0oZmlsZVN5c3RlbSkKLSAg
ICB7Ci0gICAgICAgIGZpbGVTeXN0ZW0ucm9vdC5nZXRGaWxlKHBhdGgsIHtjcmVhdGU6dHJ1ZX0s
IGZ1bmN0aW9uKGVudHJ5KSB7Ci0gICAgICAgICAgICBjYWxsYmFjaygpOwotICAgICAgICB9KTsK
LSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHdyaXRlRmlsZShwYXRoLCBjb250ZW50LCBjYWxsYmFjaykK
LXsKLSAgICB3ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbShURU1QT1JBUlksIDEsIGRpZEdldEZpbGVT
eXN0ZW0pOwotCi0gICAgZnVuY3Rpb24gZGlkR2V0RmlsZVN5c3RlbShmaWxlU3lzdGVtKQotICAg
IHsKLSAgICAgICAgZmlsZVN5c3RlbS5yb290LmdldEZpbGUocGF0aCwge2NyZWF0ZTp0cnVlfSwg
ZGlkR2V0RmlsZUVudHJ5KTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBkaWRHZXRGaWxlRW50cnko
ZmlsZUVudHJ5KQotICAgIHsKLSAgICAgICAgZmlsZUVudHJ5LmNyZWF0ZVdyaXRlcihkaWRHZXRX
cml0ZXIpOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIGRpZEdldFdyaXRlcih3cml0ZXIpCi0gICAg
ewotICAgICAgICB3cml0ZXIud3JpdGUobmV3IEJsb2IoW2NvbnRlbnRdKSk7Ci0gICAgICAgIHdy
aXRlci5vbndyaXRlID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBpZiAod3JpdGVyLnJlYWR5
U3RhdGUgPT09IHdyaXRlci5ET05FKQotICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7Ci0gICAg
ICAgIH07Ci0gICAgfQotfQotCi1mdW5jdGlvbiBjbGVhckZpbGVTeXN0ZW0oY2FsbGJhY2spCi17
Ci0gICAgd2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVVSTCgiZmlsZXN5c3RlbToiICsgbG9j
YXRpb24ub3JpZ2luICsgIi90ZW1wb3JhcnkvIiwgZGlkR2V0Um9vdCwgb25FcnJvcik7Ci0KLSAg
ICBmdW5jdGlvbiBkaWRHZXRSb290KHJvb3QpCi0gICAgewotICAgICAgICB2YXIgcmVhZGVyID0g
cm9vdC5jcmVhdGVSZWFkZXIoKTsKLSAgICAgICAgcmVhZGVyLnJlYWRFbnRyaWVzKGRpZFJlYWRF
bnRyaWVzKTsKLQotICAgICAgICB2YXIgZW50cmllcyA9IFtdOwotICAgICAgICBmdW5jdGlvbiBk
aWRSZWFkRW50cmllcyhuZXdFbnRyaWVzKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAobmV3
RW50cmllcy5sZW5ndGggPT09IDApIHsKLSAgICAgICAgICAgICAgICByZW1vdmVBbGwoKTsKLSAg
ICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IG5ld0VudHJpZXMubGVuZ3RoOyArK2kpCi0gICAgICAgICAgICAgICAgZW50
cmllcy5wdXNoKG5ld0VudHJpZXNbaV0pOwotICAgICAgICAgICAgcmVhZGVyLnJlYWRFbnRyaWVz
KGRpZFJlYWRFbnRyaWVzKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIHJlbW92ZUFs
bCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChlbnRyaWVzLmxlbmd0aCA9PT0gMCkgewot
ICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgdmFyIGVudHJ5ID0gZW50cmllcy5zaGlmdCgpOwotICAg
ICAgICAgICAgaWYgKGVudHJ5LmlzRGlyZWN0b3J5KQotICAgICAgICAgICAgICAgIGVudHJ5LnJl
bW92ZVJlY3Vyc2l2ZWx5KHJlbW92ZUFsbCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgZW50cnkucmVtb3ZlKHJlbW92ZUFsbCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBm
dW5jdGlvbiBvbkVycm9yKCkKLSAgICB7Ci0gICAgICAgIC8vIEFzc3VtZSB0aGUgRmlsZVN5c3Rl
bSBpcyB1bmluaXRpYWxpemVkIGFuZCB0aGVyZWZvcmUgZW1wdHkuCi0gICAgICAgIGNhbGxiYWNr
KCk7Ci0gICAgfQotfQpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmls
ZXN5c3RlbS9yZXF1ZXN0LWRpcmVjdG9yeS1jb250ZW50LWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL3JlcXVlc3Qt
ZGlyZWN0b3J5LWNvbnRlbnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL3JlcXVlc3QtZGlyZWN0b3J5
LWNvbnRlbnQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMwICswLDAgQEAKLVRl
c3RzIHJlcXVlc3REaXJlY3RvcnlDb250ZW50IGNvbW1hbmQuCi0KLWVycm9yQ29kZTogMgotZW50
cmllczogKG51bGwpCi0KLWVycm9yQ29kZTogOAotZW50cmllczogKG51bGwpCi0KLWVycm9yQ29k
ZTogMAotZW50cmllczoKLSAgMDoKLSAgICB1cmw6IGZpbGVzeXN0ZW06aHR0cDovLzEyNy4wLjAu
MTo4MDAwL3RlbXBvcmFyeS9ob2dlL3BpeW8uaHRtbAotICAgIG5hbWU6IHBpeW8uaHRtbAotICAg
IGlzRGlyZWN0b3J5OiBmYWxzZQotICAgIGlzVGV4dEZpbGU6IHRydWUKLSAgICBtaW1lVHlwZTog
dGV4dC9odG1sCi0gICAgcmVzb3VyY2VUeXBlOiBEb2N1bWVudAotICAxOgotICAgIHVybDogZmls
ZXN5c3RlbTpodHRwOi8vMTI3LjAuMC4xOjgwMDAvdGVtcG9yYXJ5L2hvZ2UvZnVnYQotICAgIG5h
bWU6IGZ1Z2EKLSAgICBpc0RpcmVjdG9yeTogdHJ1ZQotCi1lcnJvckNvZGU6IDEKLWVudHJpZXM6
IChudWxsKQotCi1lcnJvckNvZGU6IDIKLWVudHJpZXM6IChudWxsKQotCi1BbGwgdGVzdHMgaGF2
ZSBkb25lLgotCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lz
dGVtL3JlcXVlc3QtZGlyZWN0b3J5LWNvbnRlbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL3JlcXVlc3QtZGlyZWN0b3J5LWNv
bnRlbnQuaHRtbAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9p
bnNwZWN0b3IvZmlsZXN5c3RlbS9yZXF1ZXN0LWRpcmVjdG9yeS1jb250ZW50Lmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTEsNzcgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFk
PgotPG1ldGEgY2hhcnNldD0iVVRGLTgiPgotPHNjcmlwdCBzcmM9Ii4uL2luc3BlY3Rvci10ZXN0
LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJmaWxlc3lzdGVtLXRlc3QuanMiPjwvc2NyaXB0
PgotPHNjcmlwdD4KLWRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQi
LCBydW5UZXN0KTsKLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHZhciBmaWxlU3lzdGVtTW9kZWwg
PSBuZXcgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbDsKLQotICAgIHZhciB0ZXN0U3RlcCA9
IFsKLSAgICAgICAgZnVuY3Rpb24oKQotICAgICAgICB7Ci0gICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmNyZWF0ZURpcmVjdG9yeSgiL2hvZ2UiLCB0ZXN0U3RlcC5zaGlmdCgpKTsKLSAgICAgICAg
fSwKLQotICAgICAgICBmdW5jdGlvbigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuY3JlYXRlRGlyZWN0b3J5KCIvaG9nZS9mdWdhIiwgdGVzdFN0ZXAuc2hpZnQoKSk7Ci0g
ICAgICAgIH0sCi0KLSAgICAgICAgZnVuY3Rpb24oKQotICAgICAgICB7Ci0gICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmNyZWF0ZUZpbGUoIi9ob2dlL3BpeW8uaHRtbCIsIHRlc3RTdGVwLnNoaWZ0
KCkpOwotICAgICAgICB9LAotCi0gICAgICAgIGZ1bmN0aW9uKCkKLSAgICAgICAgewotICAgICAg
ICAgICAgZmlsZVN5c3RlbU1vZGVsLl9yZXF1ZXN0RGlyZWN0b3J5Q29udGVudCgiSW52YWxpZFVS
TCIsIHRlc3RTdGVwLnNoaWZ0KCkpOwotICAgICAgICB9LAotCi0gICAgICAgIGZ1bmN0aW9uKGVy
cm9yQ29kZSwgZW50cmllcykKLSAgICAgICAgewotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5k
dW1wRGlyZWN0b3J5Q29udGVudFJlcXVlc3RSZXN1bHQoZXJyb3JDb2RlLCBlbnRyaWVzKTsKLSAg
ICAgICAgICAgIGZpbGVTeXN0ZW1Nb2RlbC5fcmVxdWVzdERpcmVjdG9yeUNvbnRlbnQoImZpbGVz
eXN0ZW06aHR0cDovLzEyNy4wLjAuMTo4MDAwL0ludmFsaWRUeXBlLyIsIHRlc3RTdGVwLnNoaWZ0
KCkpOwotICAgICAgICB9LAotCi0gICAgICAgIGZ1bmN0aW9uKGVycm9yQ29kZSwgZW50cmllcykK
LSAgICAgICAgewotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wRGlyZWN0b3J5Q29udGVu
dFJlcXVlc3RSZXN1bHQoZXJyb3JDb2RlLCBlbnRyaWVzKTsKLSAgICAgICAgICAgIGZpbGVTeXN0
ZW1Nb2RlbC5fcmVxdWVzdERpcmVjdG9yeUNvbnRlbnQoImZpbGVzeXN0ZW06aHR0cDovLzEyNy4w
LjAuMTo4MDAwL3RlbXBvcmFyeS9ob2dlIiwgdGVzdFN0ZXAuc2hpZnQoKSk7Ci0gICAgICAgIH0s
Ci0KLSAgICAgICAgZnVuY3Rpb24oZXJyb3JDb2RlLCBlbnRyaWVzKQotICAgICAgICB7Ci0gICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBEaXJlY3RvcnlDb250ZW50UmVxdWVzdFJlc3VsdChl
cnJvckNvZGUsIGVudHJpZXMpOwotICAgICAgICAgICAgZmlsZVN5c3RlbU1vZGVsLl9yZXF1ZXN0
RGlyZWN0b3J5Q29udGVudCgiZmlsZXN5c3RlbTpodHRwOi8vMTI3LjAuMC4xOjgwMDAvdGVtcG9y
YXJ5L2ZvbyIsIHRlc3RTdGVwLnNoaWZ0KCkpOwotICAgICAgICB9LAotCi0gICAgICAgIGZ1bmN0
aW9uKGVycm9yQ29kZSwgZW50cmllcykKLSAgICAgICAgewotICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5kdW1wRGlyZWN0b3J5Q29udGVudFJlcXVlc3RSZXN1bHQoZXJyb3JDb2RlLCBlbnRyaWVz
KTsKLSAgICAgICAgICAgIGZpbGVTeXN0ZW1Nb2RlbC5fcmVxdWVzdERpcmVjdG9yeUNvbnRlbnQo
ImZpbGVzeXN0ZW06aHR0cDovL2V4YW1wbGUuY29tL3RlbXBvcmFyeS8iLCB0ZXN0U3RlcC5zaGlm
dCgpKTsKLSAgICAgICAgfSwKLQotICAgICAgICBmdW5jdGlvbihlcnJvckNvZGUsIGVudHJpZXMp
IHsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcERpcmVjdG9yeUNvbnRlbnRSZXF1ZXN0
UmVzdWx0KGVycm9yQ29kZSwgZW50cmllcyk7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNs
ZWFyRmlsZVN5c3RlbSh0ZXN0U3RlcC5zaGlmdCgpKTsKLSAgICAgICAgfSwKLQotICAgICAgICBm
dW5jdGlvbigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0
KCJBbGwgdGVzdHMgaGF2ZSBkb25lLiIpOwotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21w
bGV0ZVRlc3QoKTsKLSAgICAgICAgfQotICAgIF07Ci0KLSAgICBJbnNwZWN0b3JUZXN0LmNsZWFy
RmlsZVN5c3RlbSh0ZXN0U3RlcC5zaGlmdCgpKTsKLX0KLTwvc2NyaXB0PgotPC9oZWFkPgotPGJv
ZHk+Ci08cD5UZXN0cyByZXF1ZXN0RGlyZWN0b3J5Q29udGVudCBjb21tYW5kLjwvcD4KLTwvYm9k
eT4KLTwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVz
eXN0ZW0vcmVxdWVzdC1maWxlLWNvbnRlbnQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vcmVxdWVzdC1maWxlLWNv
bnRlbnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL3JlcXVlc3QtZmlsZS1jb250ZW50LWV4cGVjdGVk
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwyOCArMCwwIEBACi1UZXN0cyByZXF1ZXN0RmlsZUNv
bnRlbnQgY29tbWFuZC4KLQotZXJyb3JDb2RlOiAyCi1jb250ZW50OiAobnVsbCkKLWNoYXJzZXQ6
IHVuZGVmaW5lZAotCi1lcnJvckNvZGU6IDgKLWNvbnRlbnQ6IChudWxsKQotY2hhcnNldDogdW5k
ZWZpbmVkCi0KLWVycm9yQ29kZTogMAotY29udGVudDogIlBBU1MiCi1jaGFyc2V0OiBVVEYtOAot
Ci1lcnJvckNvZGU6IDExCi1jb250ZW50OiAobnVsbCkKLWNoYXJzZXQ6IHVuZGVmaW5lZAotCi1l
cnJvckNvZGU6IDEKLWNvbnRlbnQ6IChudWxsKQotY2hhcnNldDogdW5kZWZpbmVkCi0KLWVycm9y
Q29kZTogMgotY29udGVudDogKG51bGwpCi1jaGFyc2V0OiB1bmRlZmluZWQKLQotQWxsIHRlc3Rz
IGhhdmUgZG9uZS4KLQpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmls
ZXN5c3RlbS9yZXF1ZXN0LWZpbGUtY29udGVudC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vcmVxdWVzdC1maWxlLWNvbnRlbnQu
aHRtbAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0
b3IvZmlsZXN5c3RlbS9yZXF1ZXN0LWZpbGUtY29udGVudC5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDc5ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxtZXRhIGNo
YXJzZXQ9IlVURi04Ij4KLTxzY3JpcHQgc3JjPSIuLi9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0IHNyYz0iZmlsZXN5c3RlbS10ZXN0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+
Ci1kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIiwgcnVuVGVzdCk7
Ci1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICB2YXIgZmlsZVN5c3RlbU1vZGVsID0gbmV3IFdlYklu
c3BlY3Rvci5GaWxlU3lzdGVtTW9kZWw7Ci0KLSAgICB2YXIgdGVzdFN0ZXAgPSBbCi0gICAgICAg
IGZ1bmN0aW9uKCkKLSAgICAgICAgewotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jcmVhdGVE
aXJlY3RvcnkoIi9ob2dlIiwgdGVzdFN0ZXAuc2hpZnQoKSk7Ci0gICAgICAgIH0sCi0KLSAgICAg
ICAgZnVuY3Rpb24oKQotICAgICAgICB7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LndyaXRl
RmlsZSgiL2hvZ2UvZnVnYS50eHQiLCAicGlQQVNTeW8iLCB0ZXN0U3RlcC5zaGlmdCgpKTsKLSAg
ICAgICAgfSwKLQotICAgICAgICBmdW5jdGlvbigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZp
bGVTeXN0ZW1Nb2RlbC5fcmVxdWVzdEZpbGVDb250ZW50KCJJbnZhbGlkVVJMIiwgdHJ1ZSwgMiwg
NiwgIlVURi04IiwgdGVzdFN0ZXAuc2hpZnQoKSk7Ci0gICAgICAgIH0sCi0KLSAgICAgICAgZnVu
Y3Rpb24oZXJyb3JDb2RlLCBjb250ZW50LCBjaGFyc2V0KQotICAgICAgICB7Ci0gICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmR1bXBGaWxlQ29udGVudFJlcXVlc3RSZXN1bHQoZXJyb3JDb2RlLCBj
b250ZW50LCBjaGFyc2V0KTsKLSAgICAgICAgICAgIGZpbGVTeXN0ZW1Nb2RlbC5fcmVxdWVzdEZp
bGVDb250ZW50KCJmaWxlc3lzdGVtOmh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9JbnZhbGlkVHlwZS9o
b2dlL2Z1Z2EudHh0IiwgdHJ1ZSwgMiwgNiwgIlVURi04IiwgdGVzdFN0ZXAuc2hpZnQoKSk7Ci0g
ICAgICAgIH0sCi0KLSAgICAgICAgZnVuY3Rpb24oZXJyb3JDb2RlLCBjb250ZW50LCBjaGFyc2V0
KQotICAgICAgICB7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBGaWxlQ29udGVudFJl
cXVlc3RSZXN1bHQoZXJyb3JDb2RlLCBjb250ZW50LCBjaGFyc2V0KTsKLSAgICAgICAgICAgIGZp
bGVTeXN0ZW1Nb2RlbC5fcmVxdWVzdEZpbGVDb250ZW50KCJmaWxlc3lzdGVtOmh0dHA6Ly8xMjcu
MC4wLjE6ODAwMC90ZW1wb3JhcnkvaG9nZS9mdWdhLnR4dCIsIHRydWUsIDIsIDYsICJVVEYtOCIs
IHRlc3RTdGVwLnNoaWZ0KCkpOwotICAgICAgICB9LAotCi0gICAgICAgIGZ1bmN0aW9uKGVycm9y
Q29kZSwgY29udGVudCwgY2hhcnNldCkKLSAgICAgICAgewotICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5kdW1wRmlsZUNvbnRlbnRSZXF1ZXN0UmVzdWx0KGVycm9yQ29kZSwgY29udGVudCwgY2hh
cnNldCk7Ci0gICAgICAgICAgICBmaWxlU3lzdGVtTW9kZWwuX3JlcXVlc3RGaWxlQ29udGVudCgi
ZmlsZXN5c3RlbTpodHRwOi8vMTI3LjAuMC4xOjgwMDAvdGVtcG9yYXJ5L2hvZ2UiLCB0cnVlLCB1
bmRlZmluZWQsIHVuZGVmaW5lZCwgIiIsIHRlc3RTdGVwLnNoaWZ0KCkpOwotICAgICAgICB9LAot
Ci0gICAgICAgIGZ1bmN0aW9uKGVycm9yQ29kZSwgY29udGVudCwgY2hhcnNldCkKLSAgICAgICAg
ewotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wRmlsZUNvbnRlbnRSZXF1ZXN0UmVzdWx0
KGVycm9yQ29kZSwgY29udGVudCwgY2hhcnNldCk7Ci0gICAgICAgICAgICBmaWxlU3lzdGVtTW9k
ZWwuX3JlcXVlc3RGaWxlQ29udGVudCgiZmlsZXN5c3RlbTpodHRwOi8vMTI3LjAuMC4xOjgwMDAv
dGVtcG9yYXJ5L2ZvbyIsIHRydWUsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCAiIiwgdGVzdFN0ZXAu
c2hpZnQoKSk7Ci0gICAgICAgIH0sCi0KLSAgICAgICAgZnVuY3Rpb24oZXJyb3JDb2RlLCBjb250
ZW50LCBjaGFyc2V0KQotICAgICAgICB7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBG
aWxlQ29udGVudFJlcXVlc3RSZXN1bHQoZXJyb3JDb2RlLCBjb250ZW50LCBjaGFyc2V0KTsKLSAg
ICAgICAgICAgIGZpbGVTeXN0ZW1Nb2RlbC5fcmVxdWVzdEZpbGVDb250ZW50KCJmaWxlc3lzdGVt
Omh0dHA6Ly9leGFtcGxlLmNvbS90ZW1wb3JhcnkvZm9vLnR4dCIsIHRydWUsIHVuZGVmaW5lZCwg
dW5kZWZpbmVkLCAiIiwgdGVzdFN0ZXAuc2hpZnQoKSk7Ci0gICAgICAgIH0sCi0KLSAgICAgICAg
ZnVuY3Rpb24oZXJyb3JDb2RlLCBjb250ZW50LCBjaGFyc2V0KQotICAgICAgICB7Ci0gICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmR1bXBGaWxlQ29udGVudFJlcXVlc3RSZXN1bHQoZXJyb3JDb2Rl
LCBjb250ZW50LCBjaGFyc2V0KTsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY2xlYXJGaWxl
U3lzdGVtKHRlc3RTdGVwLnNoaWZ0KCkpOwotICAgICAgICB9LAotCi0gICAgICAgIGZ1bmN0aW9u
KCkKLSAgICAgICAgewotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIkFsbCB0
ZXN0cyBoYXZlIGRvbmUuIik7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVz
dCgpOwotICAgICAgICB9Ci0gICAgXTsKLQotICAgIEluc3BlY3RvclRlc3QuY2xlYXJGaWxlU3lz
dGVtKHRlc3RTdGVwLnNoaWZ0KCkpOwotfQotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxw
PlRlc3RzIHJlcXVlc3RGaWxlQ29udGVudCBjb21tYW5kLjwvcD4KLTwvYm9keT4KLTwvaHRtbD4K
SW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vcmVxdWVz
dC1maWxlc3lzdGVtLXJvb3QtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vcmVxdWVzdC1maWxlc3lzdGVtLXJvb3Qt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9maWxlc3lzdGVtL3JlcXVlc3QtZmlsZXN5c3RlbS1yb290LWV4cGVjdGVkLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtMSwxMyArMCwwIEBACi1UZXN0cyByZXF1ZXN0RmlsZVN5c3Rl
bVJvb3QgY29tbWFuZC4KLQotZXJyb3JDb2RlOiAwCi1iYWNrZW5kUm9vdEVudHJ5LnVybDogZmls
ZXN5c3RlbTpodHRwOi8vMTI3LjAuMC4xOjgwMDAvdGVtcG9yYXJ5LwotCi1lcnJvckNvZGU6IDgK
LWJhY2tlbmRSb290RW50cnk6IChudWxsKQotCi1lcnJvckNvZGU6IDIKLWJhY2tlbmRSb290RW50
cnk6IChudWxsKQotCi1BbGwgdGVzdHMgaGF2ZSBkb25lLgotCkluZGV4OiBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL3JlcXVlc3QtZmlsZXN5c3RlbS1yb290Lmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5
c3RlbS9yZXF1ZXN0LWZpbGVzeXN0ZW0tcm9vdC5odG1sCShyZXZpc2lvbiAxNTY2OTEpCisrKyBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL3JlcXVlc3QtZmlsZXN5
c3RlbS1yb290Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsNTggKzAsMCBAQAotPCFET0NUWVBF
IGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPG1ldGEgY2hhcnNldD0iVVRGLTgiPgotPHNjcmlwdCBz
cmM9Ii4uL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJmaWxlc3lz
dGVtLXRlc3QuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWRvY3VtZW50LmFkZEV2ZW50TGlzdGVu
ZXIoIkRPTUNvbnRlbnRMb2FkZWQiLCBydW5UZXN0KTsKLWZ1bmN0aW9uIHRlc3QoKQotewotICAg
IHZhciBmaWxlU3lzdGVtTW9kZWwgPSBuZXcgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbDsK
LQotICAgIHZhciB0ZXN0U3RlcCA9IFsKLSAgICAgICAgZnVuY3Rpb24oKQotICAgICAgICB7Ci0g
ICAgICAgICAgICAvLyBGSVhNRTogQWRkIEFQSSB0byBkZWxldGUgYSBGaWxlU3lzdGVtIGNvbXBs
ZXRlbHkgYW5kIHRlc3QgZ2V0RmlsZVN5c3RlbVJvb3QgZm9yCi0gICAgICAgICAgICAvLyB1bmlu
aXRpYWxpemVkIEZpbGVTeXN0ZW0uCi0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNyZWF0ZUZp
bGUoIi9ob2dlIiwgdGVzdFN0ZXAuc2hpZnQoKSk7Ci0gICAgICAgIH0sCi0KLSAgICAgICAgZnVu
Y3Rpb24oKQotICAgICAgICB7Ci0gICAgICAgICAgICBmaWxlU3lzdGVtTW9kZWwuX3JlcXVlc3RG
aWxlU3lzdGVtUm9vdCgiaHR0cDovLzEyNy4wLjAuMTo4MDAwIiwgInRlbXBvcmFyeSIsIHRlc3RT
dGVwLnNoaWZ0KCkpOwotICAgICAgICB9LAotCi0gICAgICAgIGZ1bmN0aW9uKGVycm9yQ29kZSwg
YmFja2VuZFJvb3RFbnRyeSkKLSAgICAgICAgewotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5k
dW1wRmlsZVN5c3RlbVJvb3RSZXF1ZXN0UmVzdWx0KGVycm9yQ29kZSwgYmFja2VuZFJvb3RFbnRy
eSk7Ci0gICAgICAgICAgICBmaWxlU3lzdGVtTW9kZWwuX3JlcXVlc3RGaWxlU3lzdGVtUm9vdCgi
aHR0cDovLzEyNy4wLjAuMTo4MDAwIiwgImZpenpidXp6IiwgdGVzdFN0ZXAuc2hpZnQoKSk7Ci0g
ICAgICAgIH0sCi0KLSAgICAgICAgZnVuY3Rpb24oZXJyb3JDb2RlLCBiYWNrZW5kUm9vdEVudHJ5
KQotICAgICAgICB7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBGaWxlU3lzdGVtUm9v
dFJlcXVlc3RSZXN1bHQoZXJyb3JDb2RlLCBiYWNrZW5kUm9vdEVudHJ5KTsKLSAgICAgICAgICAg
IGZpbGVTeXN0ZW1Nb2RlbC5fcmVxdWVzdEZpbGVTeXN0ZW1Sb290KCJodHRwOi8vZXhhbXBsZS5j
b20iLCAidGVtcG9yYXJ5IiwgdGVzdFN0ZXAuc2hpZnQoKSk7Ci0gICAgICAgIH0sCi0KLSAgICAg
ICAgZnVuY3Rpb24oZXJyb3JDb2RlLCBiYWNrZW5kUm9vdEVudHJ5KQotICAgICAgICB7Ci0gICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBGaWxlU3lzdGVtUm9vdFJlcXVlc3RSZXN1bHQoZXJy
b3JDb2RlLCBiYWNrZW5kUm9vdEVudHJ5KTsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY2xl
YXJGaWxlU3lzdGVtKHRlc3RTdGVwLnNoaWZ0KCkpOwotICAgICAgICB9LAotCi0gICAgICAgIGZ1
bmN0aW9uKCkKLSAgICAgICAgewotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQo
IkFsbCB0ZXN0cyBoYXZlIGRvbmUuIik7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBs
ZXRlVGVzdCgpOwotICAgICAgICB9Ci0gICAgXTsKLQotICAgIEluc3BlY3RvclRlc3QuY2xlYXJG
aWxlU3lzdGVtKHRlc3RTdGVwLnNoaWZ0KCkpOwotfQotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9k
eT4KLTxwPlRlc3RzIHJlcXVlc3RGaWxlU3lzdGVtUm9vdCBjb21tYW5kLjwvcD4KLTwvYm9keT4K
LTwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0
ZW0vcmVxdWVzdC1tZXRhZGF0YS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9yZXF1ZXN0LW1ldGFkYXRhLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvZmlsZXN5c3RlbS9yZXF1ZXN0LW1ldGFkYXRhLWV4cGVjdGVkLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtMSwyMyArMCwwIEBACi1UZXN0cyByZXF1ZXN0TWV0YWRhdGEgY29tbWFuZC4KLQot
ZXJyb3JDb2RlOiAyCi1tZXRhZGF0YTogKG51bGwpCi0KLWVycm9yQ29kZTogOAotbWV0YWRhdGE6
IChudWxsKQotCi1lcnJvckNvZGU6IDAKLW1ldGFkYXRhOgotICBtb2RpZmljYXRpb25UaW1lOiAo
ZXhpc3RzKQotICBzaXplOiA0Ci0KLWVycm9yQ29kZTogMAotbWV0YWRhdGE6Ci0gIG1vZGlmaWNh
dGlvblRpbWU6IChleGlzdHMpCi0gIHNpemU6IDAKLQotZXJyb3JDb2RlOiAxCi1tZXRhZGF0YTog
KG51bGwpCi0KLUFsbCB0ZXN0cyBoYXZlIGRvbmUuCi0KSW5kZXg6IExheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vcmVxdWVzdC1tZXRhZGF0YS5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vcmVxdWVz
dC1tZXRhZGF0YS5odG1sCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL3JlcXVlc3QtbWV0YWRhdGEuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMSw3OCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08
bWV0YSBjaGFyc2V0PSJVVEYtOCI+Ci08c2NyaXB0IHNyYz0iLi4vaW5zcGVjdG9yLXRlc3QuanMi
Pjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9ImZpbGVzeXN0ZW0tdGVzdC5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0PgotZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIHJ1
blRlc3QpOwotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgdmFyIGZpbGVTeXN0ZW1Nb2RlbCA9IG5l
dyBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsOwotCi0gICAgdmFyIHRlc3RTdGVwID0gWwot
ICAgICAgICBmdW5jdGlvbigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
d3JpdGVGaWxlKCIvaG9nZSIsICJmdWdhIiwgdGVzdFN0ZXAuc2hpZnQoKSk7Ci0gICAgICAgIH0s
Ci0KLSAgICAgICAgZnVuY3Rpb24oKQotICAgICAgICB7Ci0gICAgICAgICAgICBmaWxlU3lzdGVt
TW9kZWwucmVxdWVzdE1ldGFkYXRhKG5ldyBJbnNwZWN0b3JUZXN0Lk1vY2tFbnRyeSgiSW52YWxp
ZFVSTCIpLCB0ZXN0U3RlcC5zaGlmdCgpKTsKLSAgICAgICAgfSwKLQotICAgICAgICBmdW5jdGlv
bihlcnJvckNvZGUsIG1ldGFkYXRhKQotICAgICAgICB7Ci0gICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmR1bXBNZXRhZGF0YVJlcXVlc3RSZXN1bHQoZXJyb3JDb2RlLCBtZXRhZGF0YSk7Ci0gICAg
ICAgICAgICBmaWxlU3lzdGVtTW9kZWwucmVxdWVzdE1ldGFkYXRhKG5ldyBJbnNwZWN0b3JUZXN0
Lk1vY2tFbnRyeSgiZmlsZXN5c3RlbTpodHRwOi8vMTI3LjAuMC4xOjgwMDAvSW52YWxpZFR5cGUi
KSwgdGVzdFN0ZXAuc2hpZnQoKSk7Ci0gICAgICAgIH0sCi0KLSAgICAgICAgZnVuY3Rpb24oZXJy
b3JDb2RlLCBtZXRhZGF0YSkKLSAgICAgICAgewotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5k
dW1wTWV0YWRhdGFSZXF1ZXN0UmVzdWx0KGVycm9yQ29kZSwgbWV0YWRhdGEpOwotICAgICAgICAg
ICAgZmlsZVN5c3RlbU1vZGVsLnJlcXVlc3RNZXRhZGF0YShuZXcgSW5zcGVjdG9yVGVzdC5Nb2Nr
RW50cnkoImZpbGVzeXN0ZW06aHR0cDovLzEyNy4wLjAuMTo4MDAwL3RlbXBvcmFyeS9ob2dlIiks
IHRlc3RTdGVwLnNoaWZ0KCkpOwotICAgICAgICB9LAotCi0gICAgICAgIGZ1bmN0aW9uKGVycm9y
Q29kZSwgbWV0YWRhdGEpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZHVt
cE1ldGFkYXRhUmVxdWVzdFJlc3VsdChlcnJvckNvZGUsIG1ldGFkYXRhKTsKLSAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuY3JlYXRlRGlyZWN0b3J5KCIvcGl5byIsIHRlc3RTdGVwLnNoaWZ0KCkp
OwotICAgICAgICB9LAotCi0gICAgICAgIGZ1bmN0aW9uKCkKLSAgICAgICAgewotICAgICAgICAg
ICAgZmlsZVN5c3RlbU1vZGVsLnJlcXVlc3RNZXRhZGF0YShuZXcgSW5zcGVjdG9yVGVzdC5Nb2Nr
RW50cnkoImZpbGVzeXN0ZW06aHR0cDovLzEyNy4wLjAuMTo4MDAwL3RlbXBvcmFyeS9waXlvIiks
IHRlc3RTdGVwLnNoaWZ0KCkpOwotICAgICAgICB9LAotCi0gICAgICAgIGZ1bmN0aW9uKGVycm9y
Q29kZSwgbWV0YWRhdGEpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZHVt
cE1ldGFkYXRhUmVxdWVzdFJlc3VsdChlcnJvckNvZGUsIG1ldGFkYXRhKTsKLSAgICAgICAgICAg
IGZpbGVTeXN0ZW1Nb2RlbC5yZXF1ZXN0TWV0YWRhdGEobmV3IEluc3BlY3RvclRlc3QuTW9ja0Vu
dHJ5KCJmaWxlc3lzdGVtOmh0dHA6Ly8xMjcuMC4wLjE6ODAwMC90ZW1wb3JhcnkvZm9vIiksIHRl
c3RTdGVwLnNoaWZ0KCkpOwotICAgICAgICB9LAotCi0gICAgICAgIGZ1bmN0aW9uKGVycm9yQ29k
ZSwgbWV0YWRhdGEpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcE1l
dGFkYXRhUmVxdWVzdFJlc3VsdChlcnJvckNvZGUsIG1ldGFkYXRhKTsKLSAgICAgICAgICAgIGZp
bGVTeXN0ZW1Nb2RlbC5yZXF1ZXN0TWV0YWRhdGEobmV3IEluc3BlY3RvclRlc3QuTW9ja0VudHJ5
KCJmaWxlc3lzdGVtOmh0dHA6Ly9leGFtcGxlLmNvbS90ZW1wb3JhcnkvYmFyIiksIHRlc3RTdGVw
LnNoaWZ0KCkpOwotICAgICAgICB9LAotCi0gICAgICAgIGZ1bmN0aW9uKGVycm9yQ29kZSkKLSAg
ICAgICAgewotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jbGVhckZpbGVTeXN0ZW0odGVzdFN0
ZXAuc2hpZnQoKSk7Ci0gICAgICAgIH0sCi0KLSAgICAgICAgZnVuY3Rpb24oKQotICAgICAgICB7
Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiQWxsIHRlc3RzIGhhdmUgZG9u
ZS4iKTsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7Ci0gICAgICAg
IH0KLSAgICBdOwotCi0gICAgSW5zcGVjdG9yVGVzdC5jbGVhckZpbGVTeXN0ZW0odGVzdFN0ZXAu
c2hpZnQoKSk7Ci19Ci08L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHA+VGVzdHMgcmVxdWVz
dE1ldGFkYXRhIGNvbW1hbmQuPC9wPgotPC9ib2R5PgotPC9odG1sPgpJbmRleDogTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zZWN1cml0eS9maWxlc3lzdGVtLWlmcmFtZS1mcm9tLXJlbW90ZS1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9m
aWxlc3lzdGVtLWlmcmFtZS1mcm9tLXJlbW90ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE1NjY5
MSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvZmlsZXN5c3RlbS1pZnJhbWUt
ZnJvbS1yZW1vdGUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzAsMCBAQAot
Q09OU09MRSBNRVNTQUdFOiBsaW5lIDk6IGZpbGVzeXN0ZW06aHR0cDovL2xvY2FsaG9zdDo4MDAw
L3RlbXBvcmFyeS9wYWdlLmh0bWwgY3JlYXRlZC4KLUNPTlNPTEUgTUVTU0FHRTogTm90IGFsbG93
ZWQgdG8gbG9hZCBsb2NhbCByZXNvdXJjZTogZmlsZXN5c3RlbTpodHRwOi8vbG9jYWxob3N0Ojgw
MDAvdGVtcG9yYXJ5L3BhZ2UuaHRtbAotVGhpcyB0ZXN0IGlzIHRvIHNlZSBpZiBhIHJlbW90ZSBm
aWxlIGNhbiBpbmNsdWRlIGEgbG9jYWwgcGFnZSB2aWEgYSBmaWxlc3lzdGVtOiBVUkkgaW4gYW4g
aUZyYW1lLgotCi1UZXN0IFBhc3NlZC4gTG9jYWwgcGFnZSBub3QgcmVtb3RlbHkgbG9hZGVkIGlu
dG8gaUZyYW1lLgotICAKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvZmls
ZXN5c3RlbS1pZnJhbWUtZnJvbS1yZW1vdGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZpbGVzeXN0ZW0taWZyYW1lLWZyb20tcmVtb3RlLmh0bWwJ
KHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvZmls
ZXN5c3RlbS1pZnJhbWUtZnJvbS1yZW1vdGUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw0MiAr
MCwwIEBACi08aHRtbD4gPGhlYWQ+Ci0gICAgPHNjcmlwdD4KLSAgICAgICAgZnVuY3Rpb24gZG9u
ZSgpIHsKLSAgICAgICAgICAgIHZhciBwYWdlTG9jYXRpb24gPSAiZmlsZXN5c3RlbTpodHRwOi8v
bG9jYWxob3N0OjgwMDAvdGVtcG9yYXJ5L3BhZ2UuaHRtbCI7Ci0gICAgICAgICAgICB2YXIgbG9j
YWxJZnJhbWVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7Ci0gICAg
ICAgICAgICBsb2NhbElmcmFtZUVsZW1lbnQuc2V0QXR0cmlidXRlKCJpZCIsICJteUZyYW1lIik7
Ci0gICAgICAgICAgICBsb2NhbElmcmFtZUVsZW1lbnQuc2V0QXR0cmlidXRlKCJzcmMiLCBwYWdl
TG9jYXRpb24pOwotICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChsb2NhbElm
cmFtZUVsZW1lbnQpOwotCi0gICAgICAgICAgICB2YXIgcmVzdWx0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInJlc3VsdCIpOwotICAgICAgICAgICAgdmFyIG15RnJhbWVEb2N1bWVudCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJteUZyYW1lIikuY29udGVudERvY3VtZW50OwotICAgICAg
ICAgICAgaWYgKG15RnJhbWVEb2N1bWVudCkKLSAgICAgICAgICAgICAgICByZXN1bHQuaW5uZXJI
VE1MID0gIlRlc3QgRmFpbGVkOiBMb2NhbCBwYWdlIHJlbW90ZWx5IGxvYWRlZCBpbnRvIGlGcmFt
ZS4iOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJlc3VsdC5pbm5lckhUTUwg
PSAiVGVzdCBQYXNzZWQuIExvY2FsIHBhZ2Ugbm90IHJlbW90ZWx5IGxvYWRlZCBpbnRvIGlGcmFt
ZS4iOwotCi0gICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICAg
ICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlv
biBydW5UZXN0KCkgewotICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAg
ICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgICAgICAgICAgdGVz
dFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAvLyBO
ZWVkIHRvIHdhaXQgZm9yIHRoZSBpZnJhbWUgdG8gZG8gaXRzIGFzeW5jIHdvcmsuCi0gICAgICAg
ICAgICBzZXRUaW1lb3V0KGRvbmUsIDEwMDApOwotICAgICAgICB9Ci0KLSAgICA8L3NjcmlwdD4K
LTwvaGVhZD4KLTxib2R5PgotICAgIDxkaXYgaWQ9ImRpdjAiPgotICAgICAgICBUaGlzIHRlc3Qg
aXMgdG8gc2VlIGlmIGEgcmVtb3RlIGZpbGUgY2FuIGluY2x1ZGUgYSBsb2NhbCBwYWdlIHZpYSBh
IGZpbGVzeXN0ZW06IFVSSSBpbiBhbiBpRnJhbWUuCi0gICAgPC9kaXY+Ci0gICAgPGJyPgotICAg
IDxkaXYgaWQ9InJlc3VsdCI+Ci0gICAgICAgIFRlc3Qgbm90IHJ1biBjb3JyZWN0bHkuCi0gICAg
PC9kaXY+Ci0gICAgPGlmcmFtZSBzcmM9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9y
ZXNvdXJjZXMvY3JlYXRlLWZpbGVzeXN0ZW0tZmlsZS5odG1sIiBvbmxvYWQ9InJ1blRlc3QoKSI+
PC9pZnJhbWU+Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9maWxlc3lzdGVtLXVybHMtbWF0Y2gtc2Vs
Zi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1
cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvZmlsZXN5c3RlbS11cmxzLW1hdGNoLXNlbGYtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Nl
Y3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9maWxlc3lzdGVtLXVybHMtbWF0Y2gtc2VsZi1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMiArMCwwIEBACi1BTEVSVDogUEFTUyAo
MS8xKSEKLWZpbGVzeXN0ZW06IFVSTHMgYXJlIHNhbWUtb3JpZ2luIHdpdGggdGhlIHBhZ2UgaW4g
d2hpY2ggdGhleSB3ZXJlIGNyZWF0ZWQsIGFuZCBzaG91bGQgdGhlcmVmb3JlIG1hdGNoIHRoZSAn
c2VsZicgc291cmNlIGluIENTUCBkaXJlY3RpdmVzLgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvZmlsZXN5c3RlbS11cmxzLW1hdGNo
LXNlbGYuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5
L2NvbnRlbnRTZWN1cml0eVBvbGljeS9maWxlc3lzdGVtLXVybHMtbWF0Y2gtc2VsZi5odG1sCShy
ZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRl
bnRTZWN1cml0eVBvbGljeS9maWxlc3lzdGVtLXVybHMtbWF0Y2gtc2VsZi5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDQxICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci0gICAgPGhl
YWQ+Ci0gICAgICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtU2VjdXJpdHktUG9saWN5IiBj
b250ZW50PSJzY3JpcHQtc3JjICd1bnNhZmUtaW5saW5lJyAnc2VsZiciPgotICAgIDwvaGVhZD4K
LSAgICA8Ym9keT4KLSAgICAgICAgPHA+Ci0gICAgICAgICAgICBmaWxlc3lzdGVtOiBVUkxzIGFy
ZSBzYW1lLW9yaWdpbiB3aXRoIHRoZSBwYWdlIGluIHdoaWNoIHRoZXkgd2VyZQotICAgICAgICAg
ICAgY3JlYXRlZCwgYW5kIHNob3VsZCB0aGVyZWZvcmUgbWF0Y2ggdGhlICdzZWxmJyBzb3VyY2Ug
aW4gQ1NQCi0gICAgICAgICAgICBkaXJlY3RpdmVzLgotICAgICAgICA8L3A+Ci0KLSAgICAgICAg
PHNjcmlwdD4KLSAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAgICAgICAg
ICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICAgICAgICAgIHRlc3RSdW5u
ZXIud2FpdFVudGlsRG9uZSgpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZnVuY3Rpb24g
cGFzcygpIHsKLSAgICAgICAgICAgICAgICBhbGVydCgiUEFTUyAoMS8xKSEiKTsKLSAgICAgICAg
ICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICAgICAgICAgIHRlc3RS
dW5uZXIubm90aWZ5RG9uZSgpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB3aW5kb3cu
d2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0oVEVNUE9SQVJZLCAxMDI0KjEwMjQgLyoxTUIqLywgZnVu
Y3Rpb24oZnMpIHsKLSAgICAgICAgICAgICAgICBmcy5yb290LmdldEZpbGUoJ3Bhc3MuanMnLCB7
Y3JlYXRlOiB0cnVlfSwgZnVuY3Rpb24oZmlsZUVudHJ5KSB7Ci0gICAgICAgICAgICAgICAgICAg
IGZpbGVFbnRyeS5jcmVhdGVXcml0ZXIoZnVuY3Rpb24oZmlsZVdyaXRlcikgewotICAgICAgICAg
ICAgICAgICAgICAgICAgZmlsZVdyaXRlci5vbndyaXRlZW5kID0gZnVuY3Rpb24oZSkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdzY3JpcHQnKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHQuc3JjID1m
aWxlRW50cnkudG9VUkwoJ2FwcGxpY2F0aW9uL2phdmFzY3JpcHQnKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHNjcmlwdCk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICB9OwotCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBDcmVhdGUg
YSBuZXcgQmxvYiBhbmQgd3JpdGUgaXQgdG8gcGFzcy5qcy4KLSAgICAgICAgICAgICAgICAgICAg
ICAgIHZhciBiID0gbmV3IEJsb2IoWydwYXNzKCk7J10sIHt0eXBlOiAnYXBwbGljYXRpb24vamF2
YXNjcmlwdCd9KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVXcml0ZXIud3JpdGUoYik7
Ci0gICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAg
ICAgfSk7Ci0gICAgICAgIDwvc2NyaXB0PgotICAgIDwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvbWl4ZWRDb250ZW50L2ZpbGVzeXN0ZW0tdXJs
LWluLWlmcmFtZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zZWN1cml0eS9taXhlZENvbnRlbnQvZmlsZXN5c3RlbS11cmwtaW4taWZyYW1lLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1
cml0eS9taXhlZENvbnRlbnQvZmlsZXN5c3RlbS11cmwtaW4taWZyYW1lLWV4cGVjdGVkLnR4dAko
d29ya2luZyBjb3B5KQpAQCAtMSw4ICswLDAgQEAKLUFMRVJUOiBQQVNTICgxLzIpOiBGaWxlIHdy
aXR0ZW4KLQotVGhpcyB0ZXN0cyB0aGF0IGZpbGVzeXN0ZW0gVVJMcyBjcmVhdGVkIGluIGEgc2Vj
dXJlIGNvbnRleHQgYXJlIHRyZWF0ZWQgYXMgc2VjdXJlIG9yaWdpbnMuIFRoaXMgdGVzdCBwYXNz
ZXMgaWYgdGhlIGlmcmFtZSByZW5kZXJzIFBBU1MgY29ycmVjdGx5LCBhbmQgbm8gY29uc29sZSB3
YXJuaW5nIGFwcGVhcnMuCi0KLS0tLS0tLS0tCi1GcmFtZTogJzwhLS1mcmFtZVBhdGggLy88IS0t
ZnJhbWUwLS0+LS0+JwotLS0tLS0tLS0KLVBBU1MgKDIvMik6IEZpbGUgZGlzcGxheWVkCkluZGV4
OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L21peGVkQ29udGVudC9maWxlc3lzdGVt
LXVybC1pbi1pZnJhbWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3NlY3VyaXR5L21peGVkQ29udGVudC9maWxlc3lzdGVtLXVybC1pbi1pZnJhbWUuaHRtbAkocmV2
aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9taXhlZENv
bnRlbnQvZmlsZXN5c3RlbS11cmwtaW4taWZyYW1lLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEs
NDUgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxib2R5PgotPGlmcmFtZT48L2lm
cmFtZT4KLTxwPgotICBUaGlzIHRlc3RzIHRoYXQgZmlsZXN5c3RlbSBVUkxzIGNyZWF0ZWQgaW4g
YSBzZWN1cmUgY29udGV4dCBhcmUgdHJlYXRlZCBhcwotICBzZWN1cmUgb3JpZ2lucy4gVGhpcyB0
ZXN0IHBhc3NlcyBpZiB0aGUgaWZyYW1lIHJlbmRlcnMgUEFTUyBjb3JyZWN0bHksIGFuZCBubwot
ICBjb25zb2xlIHdhcm5pbmcgYXBwZWFycy4KLTwvcD4KLQotPHNjcmlwdD4KLWlmICh3aW5kb3cu
dGVzdFJ1bm5lcikgewotICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotICAgIHRlc3RSdW5u
ZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7Ci0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25l
KCk7Ci19Ci0KLWlmIChsb2NhdGlvbi5wcm90b2NvbCAhPSAnaHR0cHM6JykKLSAgICBsb2NhdGlv
biA9ICdodHRwczovLzEyNy4wLjAuMTo4NDQzL3NlY3VyaXR5L21peGVkQ29udGVudC9maWxlc3lz
dGVtLXVybC1pbi1pZnJhbWUuaHRtbCc7Ci1lbHNlIHsKLSAgICB2YXIgaWZyYW1lID0gZG9jdW1l
bnQucXVlcnlTZWxlY3RvcignaWZyYW1lJyk7Ci0gICAgaWZyYW1lLm9ubG9hZCA9IGZ1bmN0aW9u
ICgpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1
bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfTsKLQotICAgIC8vIE9wZW5pbmcgYSBmaWxlIHN5c3Rl
bSB3aXRoIHRlbXBvcmFyeSBzdG9yYWdlCi0gICAgd2luZG93LndlYmtpdFJlcXVlc3RGaWxlU3lz
dGVtKFRFTVBPUkFSWSwgMTAyNCoxMDI0IC8qMU1CKi8sIGZ1bmN0aW9uKGZzKSB7Ci0gICAgICAg
IGZzLnJvb3QuZ2V0RmlsZSgndGVzdC5odG1sJywge2NyZWF0ZTogdHJ1ZX0sIGZ1bmN0aW9uKGZp
bGVFbnRyeSkgewotICAgICAgICAgICAgZmlsZUVudHJ5LmNyZWF0ZVdyaXRlcihmdW5jdGlvbihm
aWxlV3JpdGVyKSB7Ci0gICAgICAgICAgICAgICAgZmlsZVdyaXRlci5vbndyaXRlZW5kID0gZnVu
Y3Rpb24oZSkgewotICAgICAgICAgICAgICAgICAgICBhbGVydCgnUEFTUyAoMS8yKTogRmlsZSB3
cml0dGVuJyk7Ci0gICAgICAgICAgICAgICAgICAgIGlmcmFtZS5zcmMgPSBmaWxlRW50cnkudG9V
UkwoJ3RleHQvaHRtbCcpOwotICAgICAgICAgICAgICAgIH07Ci0KLSAgICAgICAgICAgICAgICAv
LyBDcmVhdGUgYSBuZXcgQmxvYiBhbmQgd3JpdGUgaXQgdG8gbG9nLnR4dC4KLSAgICAgICAgICAg
ICAgICB2YXIgYiA9IG5ldyBCbG9iKFsnUEFTUyAoMi8yKTogRmlsZSBkaXNwbGF5ZWQnXSwgeyB0
eXBlOiAndGV4dC9odG1sJyB9KTsKLSAgICAgICAgICAgICAgICBmaWxlV3JpdGVyLndyaXRlKGIp
OwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0pOwotICAgIH0pOwotfQotPC9zY3JpcHQ+Ci08
L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90
ZXN0cy9oeWJpL3NlbmQtZmlsZS1ibG9iLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3NlbmQtZmlsZS1ibG9iLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93
ZWJzb2NrZXQvdGVzdHMvaHliaS9zZW5kLWZpbGUtYmxvYi1leHBlY3RlZC50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMTYgKzAsMCBAQAotV2ViU29ja2V0OiBTZW5kIGEgRmlsZS4KLQotT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgotCi1Hb3QgRmlsZVN5c3RlbSBvYmplY3QuCi1GaWxlIGNyZWF0
ZWQuCi1QQVNTIGZpbGVFbnRyeS5pc0ZpbGUgaXMgdHJ1ZQotV3JvdGUgdG8gZmlsZS4KLUdvdCBG
aWxlIG9iamVjdC4KLVBBU1MgUEFTUzogTWVzc2FnZSAjMC4KLVBBU1MgY2xvc2VFdmVudC53YXND
bGVhbiBpcyB0cnVlCi1EZWxldGluZyB0aGUgZmlsZS4KLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dlYnNvY2tldC90ZXN0cy9oeWJpL3NlbmQtZmlsZS1ibG9iLWZhaWwtZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkv
c2VuZC1maWxlLWJsb2ItZmFpbC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE1NjY5MSkKKysrIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2VuZC1maWxlLWJsb2It
ZmFpbC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMTYgKzAsMCBAQAotQ09OU09M
RSBNRVNTQUdFOiBXZWJTb2NrZXQgY29ubmVjdGlvbiB0byAnd3M6Ly8xMjcuMC4wLjE6ODg4MC93
ZWJzb2NrZXQvdGVzdHMvaHliaS9lY2hvJyBmYWlsZWQ6IEZhaWxlZCB0byBsb2FkIEJsb2I6IGVy
cm9yIGNvZGUgPSAxCi1XZWJTb2NrZXQgc2hvdWxkIGZhaWwgdGhlIGNvbm5lY3Rpb24gaWYgaXQg
aGFzIGZhaWxlZCB0byByZWFkIGEgQmxvYi4KLQotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgot
Ci1Hb3QgRmlsZVN5c3RlbSBvYmplY3QuCi1GaWxlIGNyZWF0ZWQuCi1QQVNTIGZpbGVFbnRyeS5p
c0ZpbGUgaXMgdHJ1ZQotV3JvdGUgdG8gZmlsZS4KLUdvdCBGaWxlIG9iamVjdC4KLUZpbGUgZGVs
ZXRlZC4KLVBBU1MgY2xvc2VFdmVudC53YXNDbGVhbiBpcyBmYWxzZQotUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KSW5kZXg6IExheW91dFRlc3RzL2h0
dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2VuZC1maWxlLWJsb2ItZmFpbC5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkv
c2VuZC1maWxlLWJsb2ItZmFpbC5odG1sCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3NlbmQtZmlsZS1ibG9iLWZhaWwuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMSwxMjAgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRt
bD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGRpdiBpZD0iZGVzY3Jp
cHRpb24iPjwvZGl2PgotPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Ci08c2NyaXB0IHR5cGU9InRl
eHQvamF2YXNjcmlwdCI+Ci1kZXNjcmlwdGlvbigiV2ViU29ja2V0IHNob3VsZCBmYWlsIHRoZSBj
b25uZWN0aW9uIGlmIGl0IGhhcyBmYWlsZWQgdG8gcmVhZCBhIEJsb2IuIik7Ci0KLXdpbmRvdy5q
c1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLQotZnVuY3Rpb24gc3RhcnRzV2l0aCh0YXJnZXQsIHByZWZp
eCkKLXsKLSAgICByZXR1cm4gdGFyZ2V0LmluZGV4T2YocHJlZml4KSA9PT0gMDsKLX0KLQotdmFy
IGZpbGVTeXN0ZW1TaXplID0gMTAyNDsKLXZhciBmaWxlTmFtZSA9ICJ3ZWJzb2NrZXQtc2VuZC1m
aWxlLWJsb2ItZmFpbC50eHQiOwotdmFyIG1lc3NhZ2VUb1dyaXRlID0gIlRoaXMgbWVzc2FnZSBz
aG91bGRuJ3QgYmUgc2VudC4iOwotCi1mdW5jdGlvbiBydW5UZXN0KCkKLXsKLSAgICBpZiAoIXdp
bmRvdy53ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbSkgewotICAgICAgICB0ZXN0RmFpbGVkKCJ3aW5k
b3cud2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0gaXMgbm90IGF2YWlsYWJsZS4iKTsKLSAgICAgICAg
ZmluaXNoSlNUZXN0KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICB3ZWJraXRSZXF1
ZXN0RmlsZVN5c3RlbShURU1QT1JBUlksIGZpbGVTeXN0ZW1TaXplLCBkaWRHZXRGaWxlU3lzdGVt
LCBkaWRGYWlsKTsKLX0KLQotZnVuY3Rpb24gZGlkR2V0RmlsZVN5c3RlbShmaWxlU3lzdGVtKQot
ewotICAgIGRlYnVnKCJHb3QgRmlsZVN5c3RlbSBvYmplY3QuIik7Ci0gICAgZmlsZVN5c3RlbS5y
b290LmdldEZpbGUoZmlsZU5hbWUsIHtjcmVhdGU6IHRydWV9LCBkaWRDcmVhdGVGaWxlLCBkaWRG
YWlsKTsKLX0KLQotdmFyIGZpbGVFbnRyeTsKLQotZnVuY3Rpb24gZGlkQ3JlYXRlRmlsZShlbnRy
eSkKLXsKLSAgICBkZWJ1ZygiRmlsZSBjcmVhdGVkLiIpOwotICAgIGZpbGVFbnRyeSA9IGVudHJ5
OwotICAgIHNob3VsZEJlVHJ1ZSgiZmlsZUVudHJ5LmlzRmlsZSIpOwotICAgIGZpbGVFbnRyeS5j
cmVhdGVXcml0ZXIoZGlkR2V0RmlsZVdyaXRlciwgZGlkRmFpbCk7Ci19Ci0KLWZ1bmN0aW9uIGRp
ZEdldEZpbGVXcml0ZXIod3JpdGVyKQotewotICAgIHdyaXRlci50cnVuY2F0ZSgwKTsKLSAgICB3
cml0ZXIub25lcnJvciA9IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHRlc3RGYWlsZWQoIkZp
bGVXcml0ZXIgb3BlcmF0aW9uIGZhaWxlZC4iKTsKLSAgICAgICAgZW5kVGVzdCgpOwotICAgIH07
Ci0gICAgd3JpdGVyLm9ud3JpdGUgPSBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB3cml0ZXIu
d3JpdGUobmV3IEJsb2IoW21lc3NhZ2VUb1dyaXRlXSkpOwotICAgICAgICB3cml0ZXIub253cml0
ZSA9IGRpZFdyaXRlRmlsZTsKLSAgICB9OwotfQotCi1mdW5jdGlvbiBkaWRXcml0ZUZpbGUoKQot
ewotICAgIGRlYnVnKCJXcm90ZSB0byBmaWxlLiIpOwotICAgIGZpbGVFbnRyeS5maWxlKGRpZEdl
dEZpbGUsIGRpZEZhaWwpOwotfQotCi12YXIgZmlsZU9iamVjdDsKLQotZnVuY3Rpb24gZGlkR2V0
RmlsZShmaWxlKQotewotICAgIGRlYnVnKCJHb3QgRmlsZSBvYmplY3QuIik7Ci0gICAgZmlsZU9i
amVjdCA9IGZpbGU7Ci0KLSAgICAvLyBEZWxldGUgdGhlIGZpbGUgb2JqZWN0IGJlZm9yZSBpdCBp
cyByZWFkLiBUaGlzIHNob3VsZCBjYXVzZSB0aGUgc3Vic2VxdWVudCByZWFkIG9wZXJhdGlvbgot
ICAgIC8vIHRvIGZhaWwgcmVsaWFibHkuCi0gICAgZmlsZUVudHJ5LnJlbW92ZShkaWRSZW1vdmVG
aWxlLCBkaWRGYWlsKTsKLX0KLQotZnVuY3Rpb24gZGlkUmVtb3ZlRmlsZSgpCi17Ci0gICAgZGVi
dWcoIkZpbGUgZGVsZXRlZC4iKTsKLSAgICBmaWxlRW50cnkgPSBudWxsOyAvLyBUbyBwcmV2ZW50
IHRoZSBmaWxlIGZyb20gZ2V0dGluZyBkZWxldGVkIGFnYWluLgotICAgIHZhciB3cyA9IG5ldyBX
ZWJTb2NrZXQoIndzOi8vMTI3LjAuMC4xOjg4ODAvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZWNobyIp
OwotICAgIHdzLm9ub3BlbiA9IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHdzLnNlbmQoZmls
ZU9iamVjdCk7IC8vIFRoaXMgb3BlcmF0aW9uIHNob3VsZCBmYWlsIGFuZCB0aGUgY29ubmVjdGlv
biBzaG91bGQgYmUgYWJvcnRlZC4KLSAgICB9OwotICAgIHdzLm9uY2xvc2UgPSBmdW5jdGlvbihl
dmVudCkKLSAgICB7Ci0gICAgICAgIGNsb3NlRXZlbnQgPSBldmVudDsKLSAgICAgICAgc2hvdWxk
QmVGYWxzZSgiY2xvc2VFdmVudC53YXNDbGVhbiIpOwotICAgICAgICBlbmRUZXN0KCk7Ci0gICAg
fTsKLX0KLQotZnVuY3Rpb24gZGlkRmFpbChmaWxlRXJyb3IpCi17Ci0gICAgdGVzdEZhaWxlZCgi
RmlsZVN5c3RlbSBBUEkgb3BlcmF0aW9uIGZhaWxlZDogZXJyb3IgY29kZSA9ICIgKyBmaWxlRXJy
b3IuY29kZSk7Ci0gICAgZW5kVGVzdCgpOwotfQotCi1mdW5jdGlvbiBlbmRUZXN0KCkKLXsKLSAg
ICBpZiAoZmlsZUVudHJ5KSB7Ci0gICAgICAgIGRlYnVnKCJEZWxldGluZyB0aGUgZmlsZS4iKTsK
LSAgICAgICAgZmlsZUVudHJ5LnJlbW92ZShmaW5pc2hKU1Rlc3QsIGZpbmlzaEpTVGVzdCk7Ci0g
ICAgfSBlbHNlCi0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi1ydW5UZXN0KCk7Ci0KLTwv
c2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3NlbmQtZmlsZS1ibG9iLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9z
ZW5kLWZpbGUtYmxvYi5odG1sCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3NlbmQtZmlsZS1ibG9iLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMTE3ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4K
LTxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rp
dj4KLTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgotPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3Jp
cHQiPgotZGVzY3JpcHRpb24oIldlYlNvY2tldDogU2VuZCBhIEZpbGUuIik7Ci0KLXdpbmRvdy5q
c1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLQotZnVuY3Rpb24gc3RhcnRzV2l0aCh0YXJnZXQsIHByZWZp
eCkKLXsKLSAgICByZXR1cm4gdGFyZ2V0LmluZGV4T2YocHJlZml4KSA9PT0gMDsKLX0KLQotdmFy
IGZpbGVTeXN0ZW1TaXplID0gMTAyNDsKLXZhciBmaWxlTmFtZSA9ICJ3ZWJzb2NrZXQtc2VuZC1m
aWxlLWJsb2IudHh0IjsKLXZhciBtZXNzYWdlVG9Xcml0ZSA9ICJIZWxsbywgd29ybGQhIjsKLQot
ZnVuY3Rpb24gcnVuVGVzdCgpCi17Ci0gICAgaWYgKCF3aW5kb3cud2Via2l0UmVxdWVzdEZpbGVT
eXN0ZW0pIHsKLSAgICAgICAgdGVzdEZhaWxlZCgid2luZG93LndlYmtpdFJlcXVlc3RGaWxlU3lz
dGVtIGlzIG5vdCBhdmFpbGFibGUuIik7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgd2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0oVEVNUE9SQVJZ
LCBmaWxlU3lzdGVtU2l6ZSwgZGlkR2V0RmlsZVN5c3RlbSwgZGlkRmFpbCk7Ci19Ci0KLWZ1bmN0
aW9uIGRpZEdldEZpbGVTeXN0ZW0oZmlsZVN5c3RlbSkKLXsKLSAgICBkZWJ1ZygiR290IEZpbGVT
eXN0ZW0gb2JqZWN0LiIpOwotICAgIGZpbGVTeXN0ZW0ucm9vdC5nZXRGaWxlKGZpbGVOYW1lLCB7
Y3JlYXRlOiB0cnVlfSwgZGlkQ3JlYXRlRmlsZSwgZGlkRmFpbCk7Ci19Ci0KLXZhciBmaWxlRW50
cnk7Ci0KLWZ1bmN0aW9uIGRpZENyZWF0ZUZpbGUoZW50cnkpCi17Ci0gICAgZGVidWcoIkZpbGUg
Y3JlYXRlZC4iKTsKLSAgICBmaWxlRW50cnkgPSBlbnRyeTsKLSAgICBzaG91bGRCZVRydWUoImZp
bGVFbnRyeS5pc0ZpbGUiKTsKLSAgICBmaWxlRW50cnkuY3JlYXRlV3JpdGVyKGRpZEdldEZpbGVX
cml0ZXIsIGRpZEZhaWwpOwotfQotCi1mdW5jdGlvbiBkaWRHZXRGaWxlV3JpdGVyKHdyaXRlcikK
LXsKLSAgICB3cml0ZXIudHJ1bmNhdGUoMCk7Ci0gICAgd3JpdGVyLm9uZXJyb3IgPSBmdW5jdGlv
bigpCi0gICAgewotICAgICAgICB0ZXN0RmFpbGVkKCJGaWxlV3JpdGVyIG9wZXJhdGlvbiBmYWls
ZWQuIik7Ci0gICAgICAgIGVuZFRlc3QoKTsKLSAgICB9OwotICAgIHdyaXRlci5vbndyaXRlID0g
ZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgd3JpdGVyLndyaXRlKG5ldyBCbG9iKFttZXNzYWdl
VG9Xcml0ZV0pKTsKLSAgICAgICAgd3JpdGVyLm9ud3JpdGUgPSBkaWRXcml0ZUZpbGU7Ci0gICAg
fTsKLX0KLQotZnVuY3Rpb24gZGlkV3JpdGVGaWxlKCkKLXsKLSAgICBkZWJ1ZygiV3JvdGUgdG8g
ZmlsZS4iKTsKLSAgICBmaWxlRW50cnkuZmlsZShkaWRHZXRGaWxlLCBkaWRGYWlsKTsKLX0KLQot
dmFyIGNsb3NlRXZlbnQ7Ci0KLWZ1bmN0aW9uIGRpZEdldEZpbGUoZmlsZSkKLXsKLSAgICBkZWJ1
ZygiR290IEZpbGUgb2JqZWN0LiIpOwotICAgIHZhciB3cyA9IG5ldyBXZWJTb2NrZXQoIndzOi8v
MTI3LjAuMC4xOjg4ODAvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2VuZC1maWxlLWJsb2IiKTsKLSAg
ICB3cy5vbm9wZW4gPSBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB3cy5zZW5kKGZpbGUpOwot
ICAgIH07Ci0gICAgd3Mub25tZXNzYWdlID0gZnVuY3Rpb24oZXZlbnQpCi0gICAgewotICAgICAg
ICB2YXIgbWVzc2FnZSA9IGV2ZW50LmRhdGE7Ci0gICAgICAgIGlmIChzdGFydHNXaXRoKG1lc3Nh
Z2UsICJQQVNTIikpCi0gICAgICAgICAgICB0ZXN0UGFzc2VkKG1lc3NhZ2UpOwotICAgICAgICBl
bHNlCi0gICAgICAgICAgICB0ZXN0RmFpbGVkKG1lc3NhZ2UpOwotICAgIH07Ci0gICAgd3Mub25j
bG9zZSA9IGZ1bmN0aW9uKGV2ZW50KQotICAgIHsKLSAgICAgICAgY2xvc2VFdmVudCA9IGV2ZW50
OwotICAgICAgICBzaG91bGRCZVRydWUoImNsb3NlRXZlbnQud2FzQ2xlYW4iKTsKLSAgICAgICAg
ZW5kVGVzdCgpOwotICAgIH07Ci19Ci0KLWZ1bmN0aW9uIGRpZEZhaWwoZmlsZUVycm9yKQotewot
ICAgIHRlc3RGYWlsZWQoIkZpbGVTeXN0ZW0gQVBJIG9wZXJhdGlvbiBmYWlsZWQ6IGVycm9yIGNv
ZGUgPSAiICsgZmlsZUVycm9yLmNvZGUpOwotICAgIGVuZFRlc3QoKTsKLX0KLQotZnVuY3Rpb24g
ZW5kVGVzdCgpCi17Ci0gICAgaWYgKGZpbGVFbnRyeSkgewotICAgICAgICBkZWJ1ZygiRGVsZXRp
bmcgdGhlIGZpbGUuIik7Ci0gICAgICAgIGZpbGVFbnRyeS5yZW1vdmUoZmluaXNoSlNUZXN0LCBm
aW5pc2hKU1Rlc3QpOwotICAgIH0gZWxzZQotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQot
cnVuVGVzdCgpOwotCi08L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy10ZXN0
LXJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpJ
bmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3Rlcm1pbmF0ZS1kdXJpbmctc3lu
Yy1vcGVyYXRpb24tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvd29ya2Vycy90ZXJtaW5hdGUtZHVyaW5nLXN5bmMtb3BlcmF0aW9uLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3Rl
cm1pbmF0ZS1kdXJpbmctc3luYy1vcGVyYXRpb24tZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC0xLDE5OCArMCwwIEBACi1UZXN0IHRoYXQgdGVybWluYXRpbmcgdGhlIHdvcmtlciB3aGls
ZSBpdCBpcyBwZXJmb3JtaW5nIHN5bmNocm9ub3VzIGZpbGUgb3IgZGF0YWJhc2Ugb3BlcmF0aW9u
cyB3aWxsIG5vdCBjYXVzZSBhbnkgY3Jhc2hlcywgYXNzZXJ0cywgZXRjLgotCi1TdGFydGluZyB0
ZXN0IHJ1bi4KLVdhaXRpbmcgZm9yIGFsbCB3b3JrZXJzIHRvIGV4aXQuCi1UZXN0aW5nIGludGVy
cnVwdGluZzogb3BlbkRhdGFiYXNlU3luYwotU3RhcnRpbmcgd29ya2Vycy4KLVN0YXJ0ZWQgd29y
a2VyIGNvdW50OiAxCi1TdGFydGVkIHdvcmtlciBjb3VudDogMgotU3RhcnRlZCB3b3JrZXIgY291
bnQ6IDMKLVN0YXJ0ZWQgd29ya2VyIGNvdW50OiA0Ci1TdGFydGVkIHdvcmtlciBjb3VudDogNQot
U3RhcnRlZCB3b3JrZXIgY291bnQ6IDYKLVN0YXJ0ZWQgd29ya2VyIGNvdW50OiA3Ci1TdGFydGVk
IHdvcmtlciBjb3VudDogOAotU3RhcnRlZCB3b3JrZXIgY291bnQ6IDkKLVN0YXJ0ZWQgd29ya2Vy
IGNvdW50OiAxMAotU3RhcnRlZCB3b3JrZXIgY291bnQ6IDExCi1TdGFydGVkIHdvcmtlciBjb3Vu
dDogMTIKLVN0YXJ0ZWQgd29ya2VyIGNvdW50OiAxMwotU3RhcnRlZCB3b3JrZXIgY291bnQ6IDE0
Ci1TdGFydGVkIHdvcmtlciBjb3VudDogMTUKLVN0YXJ0ZWQgd29ya2VyIGNvdW50OiAxNgotU3Rh
cnRlZCB3b3JrZXIgY291bnQ6IDE3Ci1TdGFydGVkIHdvcmtlciBjb3VudDogMTgKLVN0YXJ0ZWQg
d29ya2VyIGNvdW50OiAxOQotU3RhcnRlZCB3b3JrZXIgY291bnQ6IDIwCi1TdGFydGVkIHdvcmtl
ciBjb3VudDogMjEKLVN0YXJ0ZWQgd29ya2VyIGNvdW50OiAyMgotU3RhcnRlZCB3b3JrZXIgY291
bnQ6IDIzCi1TdGFydGVkIHdvcmtlciBjb3VudDogMjQKLVN0YXJ0ZWQgd29ya2VyIGNvdW50OiAy
NQotU3RhcnRlZCB3b3JrZXIgY291bnQ6IDI2Ci1TdGFydGVkIHdvcmtlciBjb3VudDogMjcKLVN0
YXJ0ZWQgd29ya2VyIGNvdW50OiAyOAotU3RhcnRlZCB3b3JrZXIgY291bnQ6IDI5Ci1TdGFydGVk
IHdvcmtlciBjb3VudDogMzAKLVJ1bm5pbmcgb3BlcmF0aW9uLgotQ2xvc2VkIHdvcmtlciBjb3Vu
dDogMQotQ2xvc2VkIHdvcmtlciBjb3VudDogMgotQ2xvc2VkIHdvcmtlciBjb3VudDogMwotQ2xv
c2VkIHdvcmtlciBjb3VudDogNAotQ2xvc2VkIHdvcmtlciBjb3VudDogNQotQ2xvc2VkIHdvcmtl
ciBjb3VudDogNgotQ2xvc2VkIHdvcmtlciBjb3VudDogNwotQ2xvc2VkIHdvcmtlciBjb3VudDog
OAotQ2xvc2VkIHdvcmtlciBjb3VudDogOQotQ2xvc2VkIHdvcmtlciBjb3VudDogMTAKLUNsb3Nl
ZCB3b3JrZXIgY291bnQ6IDExCi1DbG9zZWQgd29ya2VyIGNvdW50OiAxMgotQ2xvc2VkIHdvcmtl
ciBjb3VudDogMTMKLUNsb3NlZCB3b3JrZXIgY291bnQ6IDE0Ci1DbG9zZWQgd29ya2VyIGNvdW50
OiAxNQotQ2xvc2VkIHdvcmtlciBjb3VudDogMTYKLUNsb3NlZCB3b3JrZXIgY291bnQ6IDE3Ci1D
bG9zZWQgd29ya2VyIGNvdW50OiAxOAotQ2xvc2VkIHdvcmtlciBjb3VudDogMTkKLUNsb3NlZCB3
b3JrZXIgY291bnQ6IDIwCi1DbG9zZWQgd29ya2VyIGNvdW50OiAyMQotQ2xvc2VkIHdvcmtlciBj
b3VudDogMjIKLUNsb3NlZCB3b3JrZXIgY291bnQ6IDIzCi1DbG9zZWQgd29ya2VyIGNvdW50OiAy
NAotQ2xvc2VkIHdvcmtlciBjb3VudDogMjUKLUNsb3NlZCB3b3JrZXIgY291bnQ6IDI2Ci1DbG9z
ZWQgd29ya2VyIGNvdW50OiAyNwotQ2xvc2VkIHdvcmtlciBjb3VudDogMjgKLUNsb3NlZCB3b3Jr
ZXIgY291bnQ6IDI5Ci1DbG9zZWQgd29ya2VyIGNvdW50OiAzMAotV2FpdGluZyBmb3IgYWxsIHdv
cmtlcnMgdG8gZXhpdC4KLVRlc3RpbmcgaW50ZXJydXB0aW5nOiByZXF1ZXN0RmlsZVN5c3RlbVN5
bmMKLVN0YXJ0aW5nIHdvcmtlcnMuCi1TdGFydGVkIHdvcmtlciBjb3VudDogMQotU3RhcnRlZCB3
b3JrZXIgY291bnQ6IDIKLVN0YXJ0ZWQgd29ya2VyIGNvdW50OiAzCi1TdGFydGVkIHdvcmtlciBj
b3VudDogNAotU3RhcnRlZCB3b3JrZXIgY291bnQ6IDUKLVN0YXJ0ZWQgd29ya2VyIGNvdW50OiA2
Ci1TdGFydGVkIHdvcmtlciBjb3VudDogNwotU3RhcnRlZCB3b3JrZXIgY291bnQ6IDgKLVN0YXJ0
ZWQgd29ya2VyIGNvdW50OiA5Ci1TdGFydGVkIHdvcmtlciBjb3VudDogMTAKLVN0YXJ0ZWQgd29y
a2VyIGNvdW50OiAxMQotU3RhcnRlZCB3b3JrZXIgY291bnQ6IDEyCi1TdGFydGVkIHdvcmtlciBj
b3VudDogMTMKLVN0YXJ0ZWQgd29ya2VyIGNvdW50OiAxNAotU3RhcnRlZCB3b3JrZXIgY291bnQ6
IDE1Ci1TdGFydGVkIHdvcmtlciBjb3VudDogMTYKLVN0YXJ0ZWQgd29ya2VyIGNvdW50OiAxNwot
U3RhcnRlZCB3b3JrZXIgY291bnQ6IDE4Ci1TdGFydGVkIHdvcmtlciBjb3VudDogMTkKLVN0YXJ0
ZWQgd29ya2VyIGNvdW50OiAyMAotU3RhcnRlZCB3b3JrZXIgY291bnQ6IDIxCi1TdGFydGVkIHdv
cmtlciBjb3VudDogMjIKLVN0YXJ0ZWQgd29ya2VyIGNvdW50OiAyMwotU3RhcnRlZCB3b3JrZXIg
Y291bnQ6IDI0Ci1TdGFydGVkIHdvcmtlciBjb3VudDogMjUKLVN0YXJ0ZWQgd29ya2VyIGNvdW50
OiAyNgotU3RhcnRlZCB3b3JrZXIgY291bnQ6IDI3Ci1TdGFydGVkIHdvcmtlciBjb3VudDogMjgK
LVN0YXJ0ZWQgd29ya2VyIGNvdW50OiAyOQotU3RhcnRlZCB3b3JrZXIgY291bnQ6IDMwCi1SdW5u
aW5nIG9wZXJhdGlvbi4KLUNsb3NlZCB3b3JrZXIgY291bnQ6IDEKLUNsb3NlZCB3b3JrZXIgY291
bnQ6IDIKLUNsb3NlZCB3b3JrZXIgY291bnQ6IDMKLUNsb3NlZCB3b3JrZXIgY291bnQ6IDQKLUNs
b3NlZCB3b3JrZXIgY291bnQ6IDUKLUNsb3NlZCB3b3JrZXIgY291bnQ6IDYKLUNsb3NlZCB3b3Jr
ZXIgY291bnQ6IDcKLUNsb3NlZCB3b3JrZXIgY291bnQ6IDgKLUNsb3NlZCB3b3JrZXIgY291bnQ6
IDkKLUNsb3NlZCB3b3JrZXIgY291bnQ6IDEwCi1DbG9zZWQgd29ya2VyIGNvdW50OiAxMQotQ2xv
c2VkIHdvcmtlciBjb3VudDogMTIKLUNsb3NlZCB3b3JrZXIgY291bnQ6IDEzCi1DbG9zZWQgd29y
a2VyIGNvdW50OiAxNAotQ2xvc2VkIHdvcmtlciBjb3VudDogMTUKLUNsb3NlZCB3b3JrZXIgY291
bnQ6IDE2Ci1DbG9zZWQgd29ya2VyIGNvdW50OiAxNwotQ2xvc2VkIHdvcmtlciBjb3VudDogMTgK
LUNsb3NlZCB3b3JrZXIgY291bnQ6IDE5Ci1DbG9zZWQgd29ya2VyIGNvdW50OiAyMAotQ2xvc2Vk
IHdvcmtlciBjb3VudDogMjEKLUNsb3NlZCB3b3JrZXIgY291bnQ6IDIyCi1DbG9zZWQgd29ya2Vy
IGNvdW50OiAyMwotQ2xvc2VkIHdvcmtlciBjb3VudDogMjQKLUNsb3NlZCB3b3JrZXIgY291bnQ6
IDI1Ci1DbG9zZWQgd29ya2VyIGNvdW50OiAyNgotQ2xvc2VkIHdvcmtlciBjb3VudDogMjcKLUNs
b3NlZCB3b3JrZXIgY291bnQ6IDI4Ci1DbG9zZWQgd29ya2VyIGNvdW50OiAyOQotQ2xvc2VkIHdv
cmtlciBjb3VudDogMzAKLVdhaXRpbmcgZm9yIGFsbCB3b3JrZXJzIHRvIGV4aXQuCi1UZXN0aW5n
IGludGVycnVwdGluZzogZmlsZVN5bmNPcGVyYXRpb25zCi1TdGFydGluZyB3b3JrZXJzLgotU3Rh
cnRlZCB3b3JrZXIgY291bnQ6IDEKLVN0YXJ0ZWQgd29ya2VyIGNvdW50OiAyCi1TdGFydGVkIHdv
cmtlciBjb3VudDogMwotU3RhcnRlZCB3b3JrZXIgY291bnQ6IDQKLVN0YXJ0ZWQgd29ya2VyIGNv
dW50OiA1Ci1TdGFydGVkIHdvcmtlciBjb3VudDogNgotU3RhcnRlZCB3b3JrZXIgY291bnQ6IDcK
LVN0YXJ0ZWQgd29ya2VyIGNvdW50OiA4Ci1TdGFydGVkIHdvcmtlciBjb3VudDogOQotU3RhcnRl
ZCB3b3JrZXIgY291bnQ6IDEwCi1TdGFydGVkIHdvcmtlciBjb3VudDogMTEKLVN0YXJ0ZWQgd29y
a2VyIGNvdW50OiAxMgotU3RhcnRlZCB3b3JrZXIgY291bnQ6IDEzCi1TdGFydGVkIHdvcmtlciBj
b3VudDogMTQKLVN0YXJ0ZWQgd29ya2VyIGNvdW50OiAxNQotU3RhcnRlZCB3b3JrZXIgY291bnQ6
IDE2Ci1TdGFydGVkIHdvcmtlciBjb3VudDogMTcKLVN0YXJ0ZWQgd29ya2VyIGNvdW50OiAxOAot
U3RhcnRlZCB3b3JrZXIgY291bnQ6IDE5Ci1TdGFydGVkIHdvcmtlciBjb3VudDogMjAKLVN0YXJ0
ZWQgd29ya2VyIGNvdW50OiAyMQotU3RhcnRlZCB3b3JrZXIgY291bnQ6IDIyCi1TdGFydGVkIHdv
cmtlciBjb3VudDogMjMKLVN0YXJ0ZWQgd29ya2VyIGNvdW50OiAyNAotU3RhcnRlZCB3b3JrZXIg
Y291bnQ6IDI1Ci1TdGFydGVkIHdvcmtlciBjb3VudDogMjYKLVN0YXJ0ZWQgd29ya2VyIGNvdW50
OiAyNwotU3RhcnRlZCB3b3JrZXIgY291bnQ6IDI4Ci1TdGFydGVkIHdvcmtlciBjb3VudDogMjkK
LVN0YXJ0ZWQgd29ya2VyIGNvdW50OiAzMAotUnVubmluZyBvcGVyYXRpb24uCi1DbG9zZWQgd29y
a2VyIGNvdW50OiAxCi1DbG9zZWQgd29ya2VyIGNvdW50OiAyCi1DbG9zZWQgd29ya2VyIGNvdW50
OiAzCi1DbG9zZWQgd29ya2VyIGNvdW50OiA0Ci1DbG9zZWQgd29ya2VyIGNvdW50OiA1Ci1DbG9z
ZWQgd29ya2VyIGNvdW50OiA2Ci1DbG9zZWQgd29ya2VyIGNvdW50OiA3Ci1DbG9zZWQgd29ya2Vy
IGNvdW50OiA4Ci1DbG9zZWQgd29ya2VyIGNvdW50OiA5Ci1DbG9zZWQgd29ya2VyIGNvdW50OiAx
MAotQ2xvc2VkIHdvcmtlciBjb3VudDogMTEKLUNsb3NlZCB3b3JrZXIgY291bnQ6IDEyCi1DbG9z
ZWQgd29ya2VyIGNvdW50OiAxMwotQ2xvc2VkIHdvcmtlciBjb3VudDogMTQKLUNsb3NlZCB3b3Jr
ZXIgY291bnQ6IDE1Ci1DbG9zZWQgd29ya2VyIGNvdW50OiAxNgotQ2xvc2VkIHdvcmtlciBjb3Vu
dDogMTcKLUNsb3NlZCB3b3JrZXIgY291bnQ6IDE4Ci1DbG9zZWQgd29ya2VyIGNvdW50OiAxOQot
Q2xvc2VkIHdvcmtlciBjb3VudDogMjAKLUNsb3NlZCB3b3JrZXIgY291bnQ6IDIxCi1DbG9zZWQg
d29ya2VyIGNvdW50OiAyMgotQ2xvc2VkIHdvcmtlciBjb3VudDogMjMKLUNsb3NlZCB3b3JrZXIg
Y291bnQ6IDI0Ci1DbG9zZWQgd29ya2VyIGNvdW50OiAyNQotQ2xvc2VkIHdvcmtlciBjb3VudDog
MjYKLUNsb3NlZCB3b3JrZXIgY291bnQ6IDI3Ci1DbG9zZWQgd29ya2VyIGNvdW50OiAyOAotQ2xv
c2VkIHdvcmtlciBjb3VudDogMjkKLUNsb3NlZCB3b3JrZXIgY291bnQ6IDMwCi1XYWl0aW5nIGZv
ciBhbGwgd29ya2VycyB0byBleGl0LgotRE9ORQotCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3dvcmtlcnMvdGVybWluYXRlLWR1cmluZy1zeW5jLW9wZXJhdGlvbi5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy90ZXJtaW5hdGUtZHVyaW5nLXN5
bmMtb3BlcmF0aW9uLmh0bWwJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvd29ya2Vycy90ZXJtaW5hdGUtZHVyaW5nLXN5bmMtb3BlcmF0aW9uLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTEsODIgKzAsMCBAQAotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSdy
ZXNvdXJjZXMvd29ya2VyLXV0aWwuanMnPjwvc2NyaXB0PgotPHNjcmlwdD4KLXZhciB3b3JrZXJz
U3RhcnRlZDsKLXZhciB3b3JrZXJzQ2xvc2VkOwotCi12YXIgdGVzdE51bWJlciA9IC0xOwotdmFy
IHN5bmNPcGVyYXRpb25UZXN0cyA9IG5ldyBBcnJheSgnb3BlbkRhdGFiYXNlU3luYycsICdyZXF1
ZXN0RmlsZVN5c3RlbVN5bmMnLCAnZmlsZVN5bmNPcGVyYXRpb25zJyk7Ci0KLS8vIDMwIHdvcmtl
cnMgc2VlbWVkIHRvIGNhdXNlIHRoZSBjcmFzaCB0byBoYXBwZW4gZnJlcXVlbnRseS4KLXZhciB3
b3JrZXJzID0gbmV3IEFycmF5KDMwKTsKLQotZnVuY3Rpb24gc3RhcnROZXh0VGVzdCgpCi17Ci0g
ICAgdGVzdE51bWJlcisrOwotICAgIGxvZygnV2FpdGluZyBmb3IgYWxsIHdvcmtlcnMgdG8gZXhp
dC4nKTsKLSAgICBpZiAodGVzdE51bWJlciA+PSBzeW5jT3BlcmF0aW9uVGVzdHMubGVuZ3RoKSB7
Ci0gICAgICAgIHdhaXRVbnRpbFdvcmtlclRocmVhZHNFeGl0KGRvbmUpCi0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0gICAgd2FpdFVudGlsV29ya2VyVGhyZWFkc0V4aXQoc3RhcnRXb3JrZXJzKQot
fQotCi1mdW5jdGlvbiBzdGFydFdvcmtlcnMoKQotewotICAgIGxvZygnVGVzdGluZyBpbnRlcnJ1
cHRpbmc6ICcgKyAgc3luY09wZXJhdGlvblRlc3RzW3Rlc3ROdW1iZXJdKTsKLSAgICBsb2coJ1N0
YXJ0aW5nIHdvcmtlcnMuJyk7Ci0gICAgd29ya2Vyc1N0YXJ0ZWQgPSAwOwotICAgIHdvcmtlcnND
bG9zZWQgPSAwOwotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgd29ya2Vycy5sZW5ndGg7ICsraSkg
ewotICAgICAgICB3b3JrZXJzW2ldID0gbmV3IFdvcmtlcigncmVzb3VyY2VzL3N5bmMtb3BlcmF0
aW9ucy5qcz9hcmc9JyArIGkpCi0gICAgICAgIHdvcmtlcnNbaV0ub25tZXNzYWdlID0gb25Xb3Jr
ZXJTdGFydGVkOwotICAgIH0KLX0KLQotLy8gRG8gb3VyIGJlc3QgdG8gdHJ5IHRvIGludGVycnVw
dCB0aGUgZGF0YWJhc2Ugb3BlbgotLy8gY2FsbCBieSB3YWl0aW5nIGZvciB0aGUgd29ya2VyIHRv
IHN0YXJ0IGFuZCB0aGVuCi0vLyB0ZWxsaW5nIGl0IHRvIGRvIHRoZSBvcGVuIGRhdGFiYXNlIGNh
bGwgKGFuZAotLy8gdGhlbiB0ZXJtaW5hdGUgdGhlIHdvcmtlcikuCi1mdW5jdGlvbiBvbldvcmtl
clN0YXJ0ZWQoKQotewotICAgIHdvcmtlcnNTdGFydGVkKys7Ci0gICAgbG9nKCdTdGFydGVkIHdv
cmtlciBjb3VudDogJyArIHdvcmtlcnNTdGFydGVkKTsKLSAgICBpZiAod29ya2Vyc1N0YXJ0ZWQg
PCB3b3JrZXJzLmxlbmd0aCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbG9nKCdSdW5uaW5nIG9w
ZXJhdGlvbi4nKTsKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IHdvcmtlcnMubGVuZ3RoOyArK2kp
Ci0gICAgICAgIHdvcmtlcnNbaV0ucG9zdE1lc3NhZ2Uoc3luY09wZXJhdGlvblRlc3RzW3Rlc3RO
dW1iZXJdKTsKLQotICAgIHNldFRpbWVvdXQoJ2Nsb3NlV29ya2VyKCknLCAwKTsKLX0KLQotZnVu
Y3Rpb24gY2xvc2VXb3JrZXIoKQotewotICAgIHdvcmtlcnNbd29ya2Vyc0Nsb3NlZF0udGVybWlu
YXRlKCk7Ci0gICAgd29ya2Vyc0Nsb3NlZCsrOwotICAgIGxvZygnQ2xvc2VkIHdvcmtlciBjb3Vu
dDogJyArIHdvcmtlcnNDbG9zZWQpOwotICAgIGlmICh3b3JrZXJzQ2xvc2VkIDwgd29ya2Vycy5s
ZW5ndGgpCi0gICAgICAgIHNldFRpbWVvdXQoJ2Nsb3NlV29ya2VyKCknLCAzKTsKLSAgICBlbHNl
Ci0gICAgICAgIHN0YXJ0TmV4dFRlc3QoKTsKLX0KLQotZnVuY3Rpb24gcnVuVGVzdCgpCi17Ci0g
ICAgbG9nKCdTdGFydGluZyB0ZXN0IHJ1bi4nKTsKLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
IHsKLSAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgIHRlc3RSdW5uZXIu
d2FpdFVudGlsRG9uZSgpOwotICAgIH0KLSAgICBzdGFydE5leHRUZXN0KCk7Ci19Ci08L3Njcmlw
dD4KLTwvaGVhZD4KLTxib2R5IG9ubG9hZD0ncnVuVGVzdCgpJz4KLTxwPlRlc3QgdGhhdCB0ZXJt
aW5hdGluZyB0aGUgd29ya2VyIHdoaWxlIGl0IGlzIHBlcmZvcm1pbmcgc3luY2hyb25vdXMgZmls
ZSBvciBkYXRhYmFzZSBvcGVyYXRpb25zIHdpbGwgbm90IGNhdXNlIGFueSBjcmFzaGVzLCBhc3Nl
cnRzLCBldGMuPC9wPgotPGRpdiBpZD0ncmVzdWx0Jz4KLTwvZGl2PgotPC9ib2R5PgotPC9odG1s
PgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3Jlc291cmNlcy9zeW5jLW9w
ZXJhdGlvbnMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJz
L3Jlc291cmNlcy9zeW5jLW9wZXJhdGlvbnMuanMJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9yZXNvdXJjZXMvc3luYy1vcGVyYXRpb25zLmpzCSh3
b3JraW5nIGNvcHkpCkBAIC0yMiw0OCArMjIsNiBAQCBvbm1lc3NhZ2UgPSBmdW5jdGlvbihldnQp
CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTA7ICsraSkgewogICAgICAgICAgICAgaWYg
KGV2dC5kYXRhID09ICdvcGVuRGF0YWJhc2VTeW5jJykKICAgICAgICAgICAgICAgICBvcGVuRGF0
YWJhc2VTeW5jKCcnLCAnJywgJycsIDEpOwotICAgICAgICAgICAgZWxzZSBpZiAoZXZ0LmRhdGEg
PT0gJ3JlcXVlc3RGaWxlU3lzdGVtU3luYycpIHsKLSAgICAgICAgICAgICAgICBpZiAoIXRoaXMu
d2Via2l0UmVxdWVzdEZpbGVTeXN0ZW1TeW5jKQotICAgICAgICAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgICAgICAgICAgd2Via2l0UmVxdWVzdEZpbGVTeXN0ZW1TeW5jKHRoaXMuVEVNUE9S
QVJZLCAxMDApOwotICAgICAgICAgICAgfSBlbHNlIGlmIChldnQuZGF0YSA9PSAnZmlsZVN5bmNP
cGVyYXRpb25zJykgewotICAgICAgICAgICAgICAgIGlmICghdGhpcy53ZWJraXRSZXF1ZXN0Rmls
ZVN5c3RlbVN5bmMpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAg
ICAvLyBEbyBtYW55IGRpZmZlcmVudCBzeW5jIGZpbGVzeXN0ZW0gb3BlcmF0aW9ucy4gSWYgdGhp
cyBzdGFydHMgY3Jhc2hpbmcsCi0gICAgICAgICAgICAgICAgLy8gdGhlbiBhIHNpbXBsZSBpbnZl
c3RpZ2F0aW9uIHdvdWxkIGJlIHRvIGlzb2xhdGUgdGhlc2UgY29tbWFuZHMuCi0gICAgICAgICAg
ICAgICAgdmFyIGZpbGVTeXN0ZW0gPSB3ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbVN5bmModGhpcy5U
RU1QT1JBUlksIDEwMCk7Ci0KLSAgICAgICAgICAgICAgICByZW1vdmVBbGxJbkRpcmVjdG9yeVN5
bmMoZmlsZVN5c3RlbS5yb290KTsKLQotICAgICAgICAgICAgICAgIC8vIFN0YWdlIDEgKHByZXBh
cmUpCi0gICAgICAgICAgICAgICAgdmFyIGEgPSBmaWxlU3lzdGVtLnJvb3QuZ2V0RmlsZSgnYScs
IHtjcmVhdGU6dHJ1ZX0pOwotICAgICAgICAgICAgICAgIHZhciBiID0gZmlsZVN5c3RlbS5yb290
LmdldERpcmVjdG9yeSgnYicsIHtjcmVhdGU6dHJ1ZX0pOwotICAgICAgICAgICAgICAgIHZhciBj
ID0gZmlsZVN5c3RlbS5yb290LmdldERpcmVjdG9yeSgnYycsIHtjcmVhdGU6dHJ1ZX0pOwotICAg
ICAgICAgICAgICAgIHZhciBkID0gZmlsZVN5c3RlbS5yb290LmdldEZpbGUoJ2QnLCB7Y3JlYXRl
OnRydWV9KTsKLQotICAgICAgICAgICAgICAgIC8vIFN0YWdlIDIgKHRlc3QpCi0gICAgICAgICAg
ICAgICAgdmFyIGFfY29weSA9IGEuY29weVRvKGIsICd0bXAnKTsKLSAgICAgICAgICAgICAgICB2
YXIgbWV0YWRhdGEgPSBhLmdldE1ldGFkYXRhKCk7Ci0gICAgICAgICAgICAgICAgdmFyIGJfcGFy
ZW50ID0gYi5nZXRQYXJlbnQoKTsKLSAgICAgICAgICAgICAgICB2YXIgY19jb3B5ID0gYy5jb3B5
VG8oZmlsZVN5c3RlbS5yb290LCAnZicpOwotICAgICAgICAgICAgICAgIHZhciBkX25ldyA9IGQu
bW92ZVRvKGZpbGVTeXN0ZW0ucm9vdCwgJ2QyJyk7Ci0gICAgICAgICAgICAgICAgdmFyIGUgPSBm
aWxlU3lzdGVtLnJvb3QuZ2V0RmlsZSgnZScsIHtjcmVhdGU6dHJ1ZX0pOwotCi0gICAgICAgICAg
ICAgICAgLy8gVmVyaWZ5Ci0gICAgICAgICAgICAgICAgdmFyIHJlYWRlciA9IGZpbGVTeXN0ZW0u
cm9vdC5jcmVhdGVSZWFkZXIoKTsKLSAgICAgICAgICAgICAgICB2YXIgZGlyc0NvdW50ID0gMDsK
LSAgICAgICAgICAgICAgICB2YXIgcGF0aHMgPSBbXTsKLSAgICAgICAgICAgICAgICBkbyB7Ci0g
ICAgICAgICAgICAgICAgICAgIHZhciBlbnRyaWVzID0gcmVhZGVyLnJlYWRFbnRyaWVzKCk7Ci0g
ICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZW50cmllcy5sZW5ndGg7ICsr
aSkgewotICAgICAgICAgICAgICAgICAgICBwYXRocy5wdXNoKGVudHJpZXNbaV0uZnVsbFBhdGgp
OwotICAgICAgICAgICAgICAgICAgICBpZiAoZW50cmllc1tpXS5pc0RpcmVjdG9yeSkKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGRpcnNDb3VudCsrOwotICAgICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgfSB3aGlsZSAoZW50cmllcy5sZW5ndGgpOwotCi0gICAgICAgICAgICAg
ICAgcmVtb3ZlQWxsSW5EaXJlY3RvcnlTeW5jKGZpbGVTeXN0ZW0ucm9vdCk7Ci0gICAgICAgICAg
ICB9CiAgICAgICAgIH0KICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgIC8vIFB1cnBvc2VseSBp
Z25vcmUgYW55IGV4Y2VwdGlvbnMuIFNpbmNlIHRoZSB3aG9sZSBwdXJwb3NlIG9mIHRoaXMgdGVz
dCBpcyB0byB0cnkKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9UZXN0RXhwZWN0YXRp
b25zCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9UZXN0RXhwZWN0YXRp
b25zCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvVGVzdEV4
cGVjdGF0aW9ucwkod29ya2luZyBjb3B5KQpAQCAtMjY4LDEwICsyNjgsNiBAQCBlZGl0aW5nL3Vu
c3VwcG9ydGVkLWNvbnRlbnQvdGFibGUtZGVsZXRlCiBmYXN0L2RvbS9ydGwtc2Nyb2xsLXRvLWxl
ZnRtb3N0LWFuZC1yZXNpemUuaHRtbAogZmFzdC90ZXh0L3VuaWNvZGUtdmFyaWF0aW9uLXNlbGVj
dG9yLmh0bWwKIAotIyBSZXF1aXJlcyBFTkFCTEUoRklMRV9TWVNURU0pCi1mYXN0L2Zvcm1zL2Zp
bGUvaW5wdXQtZmlsZS1lbnRyaWVzLmh0bWwKLWh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNl
Y3VyaXR5UG9saWN5L2ZpbGVzeXN0ZW0tdXJscy1tYXRjaC1zZWxmLmh0bWwKLQogIyBYLUNvbnRl
bnQtVHlwZS1PcHRpb25zIChFTkFCTEVfTk9TTklGRikgaXMgbm90IGVuYWJsZWQuCiBodHRwL3Rl
c3RzL3NlY3VyaXR5L2NvbnRlbnRUeXBlT3B0aW9ucwogCkBAIC0xMTk0LDE2ICsxMTkwLDYgQEAg
d2Via2l0Lm9yZy9iLzg4MTkxIGZhc3Qvdmlld3BvcnQvdmlld3Bvcgogd2Via2l0Lm9yZy9iLzg4
MTkxIGZhc3Qvdmlld3BvcnQvdmlld3BvcnQtbGVnYWN5LXhodG1sbXAuaHRtbCBbIEZhaWx1cmUg
XQogd2Via2l0Lm9yZy9iLzg4MTkxIGZhc3Qvdmlld3BvcnQvdmlld3BvcnQtbGVnYWN5LXhodG1s
bXAtcmVtb3ZlLWFuZC1hZGQuaHRtbCBbIEZhaWx1cmUgXQogCi0jIFRoZSBFRkwgcG9ydCBoYXMg
bm8gc3VwcG9ydCBmb3IgdGhlIEZpbGVTeXN0ZW0gQVBJCi13ZWJraXQub3JnL2IvNjg1OTEgZmFz
dC9maWxlc3lzdGVtCi13ZWJraXQub3JnL2IvNjg1OTEgZmFzdC9kb20vTXV0YXRpb25PYnNlcnZl
ci9maWxlc3lzdGVtLWNhbGxiYWNrLWRlbGl2ZXJ5Lmh0bWwKLXdlYmtpdC5vcmcvYi82ODU5MSBo
dHRwL3Rlc3RzL2ZpbGVzeXN0ZW0KLXdlYmtpdC5vcmcvYi82ODU5MSBodHRwL3Rlc3RzL3NlY3Vy
aXR5L2ZpbGVzeXN0ZW0taWZyYW1lLWZyb20tcmVtb3RlLmh0bWwKLXdlYmtpdC5vcmcvYi82ODU5
MSBodHRwL3Rlc3RzL3NlY3VyaXR5L21peGVkQ29udGVudC9maWxlc3lzdGVtLXVybC1pbi1pZnJh
bWUuaHRtbAotd2Via2l0Lm9yZy9iLzY4NTkxIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0
ZW0KLXdlYmtpdC5vcmcvYi82ODU5MSBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3Nl
bmQtZmlsZS1ibG9iLWZhaWwuaHRtbAotd2Via2l0Lm9yZy9iLzY4NTkxIGh0dHAvdGVzdHMvd2Vi
c29ja2V0L3Rlc3RzL2h5Ymkvc2VuZC1maWxlLWJsb2IuaHRtbAotCiAjIFdLVFIgLyBFRkwncyBE
UlQgZG8gbm90IHN1cHBvcnQgc2V0Vmlld01vZGVNZWRpYUZlYXR1cmUoKS4KIEJ1ZyhFRkwpIGZh
c3QvbWVkaWEvdmlldy1tb2RlLW1lZGlhLWZlYXR1cmUuaHRtbCBbIEltYWdlT25seUZhaWx1cmUg
XQogQnVnKEVGTCkgZmFzdC9tZWRpYS9tZWRpYS1xdWVyeS1saXN0LTAyLmh0bWwgWyBGYWlsdXJl
IF0KSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCShyZXZp
c2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9u
cwkod29ya2luZyBjb3B5KQpAQCAtMTgwLDE5ICsxODAsNiBAQCB3ZWJraXQub3JnL2IvOTg5Mzgg
ZmFzdC9ldmVudHMvY29uc3RydWN0CiAjIFJlcXVpcmVzIElORElFX1VJIHN1cHBvcnQKIHdlYmtp
dC5vcmcvYi8xMTE0NDYgaW5kaWV1aSBbIFNraXAgXQogCi0jIEZpbGVTeXN0ZW0gQVBJIGlzIG5v
dCBzdXBwb3J0ZWQuCi13ZWJraXQub3JnL2IvNTg0NDMgZmFzdC9maWxlc3lzdGVtIFsgU2tpcCBd
Ci13ZWJraXQub3JnL2IvNTg0NDMgaHR0cC90ZXN0cy9maWxlc3lzdGVtIFsgU2tpcCBdCi13ZWJr
aXQub3JnL2IvNTg0NDMgaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbSBbIFNraXAgXQot
d2Via2l0Lm9yZy9iLzU4NDQzIGh0dHAvdGVzdHMvc2VjdXJpdHkvZmlsZXN5c3RlbS1pZnJhbWUt
ZnJvbS1yZW1vdGUuaHRtbCBbIFNraXAgXQotd2Via2l0Lm9yZy9iLzU4NDQzIGh0dHAvdGVzdHMv
c2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L2ZpbGVzeXN0ZW0tdXJscy1tYXRjaC1zZWxm
Lmh0bWwgWyBTa2lwIF0KLXdlYmtpdC5vcmcvYi81ODQ0MyBodHRwL3Rlc3RzL3NlY3VyaXR5L21p
eGVkQ29udGVudC9maWxlc3lzdGVtLXVybC1pbi1pZnJhbWUuaHRtbCBbIFNraXAgXQotd2Via2l0
Lm9yZy9iLzU4NDQzIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2VuZC1maWxlLWJs
b2IuaHRtbCBbIFNraXAgXQotd2Via2l0Lm9yZy9iLzU4NDQzIGh0dHAvdGVzdHMvd2Vic29ja2V0
L3Rlc3RzL2h5Ymkvc2VuZC1maWxlLWJsb2ItZmFpbC5odG1sIFsgU2tpcCBdCi13ZWJraXQub3Jn
L2IvNTg0NDMgaHR0cC90ZXN0cy93b3JrZXJzL3Rlcm1pbmF0ZS1kdXJpbmctc3luYy1vcGVyYXRp
b24uaHRtbCBbIFNraXAgXQotd2Via2l0Lm9yZy9iLzU4NDQzIGZhc3QvZG9tL011dGF0aW9uT2Jz
ZXJ2ZXIvZmlsZXN5c3RlbS1jYWxsYmFjay1kZWxpdmVyeS5odG1sIFsgU2tpcCBdCi13ZWJraXQu
b3JnL2IvNTg0NDMgZmFzdC9mb3Jtcy9maWxlL2lucHV0LWZpbGUtZW50cmllcy5odG1sIFsgU2tp
cCBdCi0KICMgUmVxdWlyZXMgV2ViUCBzdXBwb3J0Lgogd2Via2l0Lm9yZy9iLzk4OTM5IGZhc3Qv
Y2FudmFzL2NhbnZhcy10b0RhdGFVUkwtd2VicC5odG1sIFsgU2tpcCBdCiAjIFJlcXVpcmVzIFdl
YlAgMC4yIHN1cHBvcnQuCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVj
dGF0aW9ucwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVj
dGF0aW9ucwkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rl
c3RFeHBlY3RhdGlvbnMJKHdvcmtpbmcgY29weSkKQEAgLTI4NSwxNyArMjg1LDYgQEAgd2Via2l0
Lm9yZy9iLzExNjY1MSBtZWRpYS9jb250ZXh0LW1lbnUtYQogIyByZXF1aXJlcyB2aWRlby5idWZm
ZXJlZCB0byBiZSBhYmxlIHRvIHJldHVybiBtdWx0aXBsZSB0aW1lcmFuZ2VzCiBodHRwL3Rlc3Rz
L21lZGlhL3ZpZGVvLWJ1ZmZlcmVkLmh0bWwKIAotIyBGaWxlU3lzdGVtIEFQSSBpcyBub3Qgc3Vw
cG9ydGVkLgotZmFzdC9maWxlc3lzdGVtCi1odHRwL3Rlc3RzL2ZpbGVzeXN0ZW0KLWh0dHAvdGVz
dHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0KLWh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3Vy
aXR5UG9saWN5L2ZpbGVzeXN0ZW0tdXJscy1tYXRjaC1zZWxmLmh0bWwKLWh0dHAvdGVzdHMvc2Vj
dXJpdHkvZmlsZXN5c3RlbS1pZnJhbWUtZnJvbS1yZW1vdGUuaHRtbAotaHR0cC90ZXN0cy9zZWN1
cml0eS9taXhlZENvbnRlbnQvZmlsZXN5c3RlbS11cmwtaW4taWZyYW1lLmh0bWwKLWh0dHAvdGVz
dHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2VuZC1maWxlLWJsb2IuaHRtbAotaHR0cC90ZXN0cy93
ZWJzb2NrZXQvdGVzdHMvaHliaS9zZW5kLWZpbGUtYmxvYi1mYWlsLmh0bWwKLWZhc3QvZG9tL011
dGF0aW9uT2JzZXJ2ZXIvZmlsZXN5c3RlbS1jYWxsYmFjay1kZWxpdmVyeS5odG1sCi0KICMgVGhl
IFdlYktpdCBwbHVnaW4gaW1wbGVtZW50YXRpb24gZG9lcyBub3Qgc3VwcG9ydCBpZnJhbWUgc2hp
bXMuCiB3ZWJraXQub3JnL2IvNDYyMjMgcGx1Z2lucy9pZnJhbWUtc2hpbXMuaHRtbAogCkluZGV4
OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9UZXN0RXhwZWN0YXRpb25zCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL3BsYXRmb3JtL3F0L1Rlc3RFeHBlY3RhdGlvbnMJKHJldmlzaW9uIDE1NjY5
MSkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL3F0L1Rlc3RFeHBlY3RhdGlvbnMJKHdvcmtpbmcg
Y29weSkKQEAgLTEzMywxOCArMTMzLDYgQEAgaHR0cC90ZXN0cy93ZWJhcmNoaXZlCiB3ZWJhcmNo
aXZlCiBzdmcvd2ViYXJjaGl2ZQogCi0jIEVOQUJMRShGSUxFX1NZU1RFTSkgaXMgZGlzYWJsZWQu
Ci1mYXN0L2ZpbGVzeXN0ZW0KLWZhc3QvZm9ybXMvZmlsZS9pbnB1dC1maWxlLWVudHJpZXMuaHRt
bAotaHR0cC90ZXN0cy9maWxlc3lzdGVtCi1odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVt
Ci1odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9maWxlc3lzdGVtLXVy
bHMtbWF0Y2gtc2VsZi5odG1sCi1odHRwL3Rlc3RzL3NlY3VyaXR5L2ZpbGVzeXN0ZW0taWZyYW1l
LWZyb20tcmVtb3RlLmh0bWwKLWh0dHAvdGVzdHMvc2VjdXJpdHkvbWl4ZWRDb250ZW50L2ZpbGVz
eXN0ZW0tdXJsLWluLWlmcmFtZS5odG1sCi1odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJp
L3NlbmQtZmlsZS1ibG9iLmh0bWwKLWh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2Vu
ZC1maWxlLWJsb2ItZmFpbC5odG1sCi1mYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL2ZpbGVzeXN0
ZW0tY2FsbGJhY2stZGVsaXZlcnkuaHRtbAotCiAjIEVOQUJMRShRVU9UQSkgaXMgZGlzYWJsZWQu
CiBzdG9yYWdlL3N0b3JhZ2VpbmZvLW1pc3NpbmctYXJndW1lbnRzLmh0bWwKIHN0b3JhZ2Uvc3Rv
cmFnZWluZm8tbm8tY2FsbGJhY2tzLmh0bWwKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL3dp
bi9UZXN0RXhwZWN0YXRpb25zCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL3dp
bi9UZXN0RXhwZWN0YXRpb25zCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucwkod29ya2luZyBjb3B5KQpAQCAtMTMzMywxNiArMTMz
Myw2IEBAIGh0dHAvdGVzdHMvbWVkaWEvdmlkZW8tc2VydmVkLWFzLXRleHQuaHQKICMgUHJlLUhN
VEw1IHBhcnNlciBxdWlya3Mgb25seSBhcHBseSB0byB0aGUgbWFjIHBvcnQgZm9yIG5vdy4KIGZh
c3QvcGFyc2VyL3ByZS1odG1sNS1wYXJzZXItcXVpcmtzLmh0bWwKIAotIyBGaWxlU3lzdGVtIEFQ
SSBpcyBub3Qgc3VwcG9ydGVkLgotZmFzdC9maWxlc3lzdGVtCi1odHRwL3Rlc3RzL2ZpbGVzeXN0
ZW0KLWh0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0KLWh0dHAvdGVzdHMvc2VjdXJpdHkv
Y29udGVudFNlY3VyaXR5UG9saWN5L2ZpbGVzeXN0ZW0tdXJscy1tYXRjaC1zZWxmLmh0bWwKLWh0
dHAvdGVzdHMvc2VjdXJpdHkvZmlsZXN5c3RlbS1pZnJhbWUtZnJvbS1yZW1vdGUuaHRtbAotaHR0
cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9zZW5kLWZpbGUtYmxvYi5odG1sCi1odHRwL3Rl
c3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3NlbmQtZmlsZS1ibG9iLWZhaWwuaHRtbAotZmFzdC9k
b20vTXV0YXRpb25PYnNlcnZlci9maWxlc3lzdGVtLWNhbGxiYWNrLWRlbGl2ZXJ5Lmh0bWwKLQog
IyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDYyMjMKICMgVGhlIFdl
YktpdCBwbHVnaW4gaW1wbGVtZW50YXRpb24gZG9lcyBub3Qgc3VwcG9ydCBpZnJhbWUgc2hpbXMu
CiBwbHVnaW5zL2lmcmFtZS1zaGltcy5odG1sCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93
aW5jYWlyby9UZXN0RXhwZWN0YXRpb25zCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRm
b3JtL3dpbmNhaXJvL1Rlc3RFeHBlY3RhdGlvbnMJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91
dFRlc3RzL3BsYXRmb3JtL3dpbmNhaXJvL1Rlc3RFeHBlY3RhdGlvbnMJKHdvcmtpbmcgY29weSkK
QEAgLTE4NTQsMTYgKzE4NTQsNiBAQCBodHRwL3Rlc3RzL21lZGlhL3ZpZGVvLXNlcnZlZC1hcy10
ZXh0Lmh0CiAjIFByZS1ITVRMNSBwYXJzZXIgcXVpcmtzIG9ubHkgYXBwbHkgdG8gdGhlIG1hYyBw
b3J0IGZvciBub3cuCiBmYXN0L3BhcnNlci9wcmUtaHRtbDUtcGFyc2VyLXF1aXJrcy5odG1sCiAK
LSMgRmlsZVN5c3RlbSBBUEkgaXMgbm90IHN1cHBvcnRlZC4KLWZhc3QvZmlsZXN5c3RlbQotaHR0
cC90ZXN0cy9maWxlc3lzdGVtCi1odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtCi1odHRw
L3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9maWxlc3lzdGVtLXVybHMtbWF0
Y2gtc2VsZi5odG1sCi1odHRwL3Rlc3RzL3NlY3VyaXR5L2ZpbGVzeXN0ZW0taWZyYW1lLWZyb20t
cmVtb3RlLmh0bWwKLWh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2VuZC1maWxlLWJs
b2IuaHRtbAotaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9zZW5kLWZpbGUtYmxvYi1m
YWlsLmh0bWwKLWZhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvZmlsZXN5c3RlbS1jYWxsYmFjay1k
ZWxpdmVyeS5odG1sCi0KICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTQ2MjIzCiAjIFRoZSBXZWJLaXQgcGx1Z2luIGltcGxlbWVudGF0aW9uIGRvZXMgbm90IHN1cHBv
cnQgaWZyYW1lIHNoaW1zLgogcGx1Z2lucy9pZnJhbWUtc2hpbXMuaHRtbAo=
</data>
<flag name="review"
          id="235351"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>