<?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>179025</bug_id>
          
          <creation_ts>2017-10-30 12:21:35 -0700</creation_ts>
          <short_desc>Eliminate Basic compiler test from RexBench</short_desc>
          <delta_ts>2017-10-30 13:00:23 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Saboff">msaboff</reporter>
          <assigned_to name="Michael Saboff">msaboff</assigned_to>
          <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>lforschler</cc>
    
    <cc>rniwa</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1366120</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2017-10-30 12:21:35 -0700</bug_when>
    <thetext>Given that I can&apos;t find a wealth of public domain BASIC source to compile, this test is not useful.  Therefore it should be removed.  We can always add it back in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1366121</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-10-30 12:22:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/35255574&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1366124</commentid>
    <comment_count>2</comment_count>
      <attachid>325367</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2017-10-30 12:27:42 -0700</bug_when>
    <thetext>Created attachment 325367
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1366138</commentid>
    <comment_count>3</comment_count>
      <attachid>325367</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-30 13:00:21 -0700</bug_when>
    <thetext>Comment on attachment 325367
Patch

Clearing flags on attachment: 325367

Committed r224197: &lt;https://trac.webkit.org/changeset/224197&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1366139</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-30 13:00:23 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>325367</attachid>
            <date>2017-10-30 12:27:42 -0700</date>
            <delta_ts>2017-10-30 13:00:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>179025.patch</filename>
            <type>text/plain</type>
            <size>63892</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1h
bmNlVGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjQxOTQpCisrKyBQZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBACisyMDE3LTEwLTMwICBN
aWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAgICAgIEVsaW1pbmF0ZSBC
YXNpYyBjb21waWxlciB0ZXN0IGZyb20gUmV4QmVuY2gKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3OTAyNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogUmV4QmVuY2gvQmFzaWM6IFJlbW92ZWQuCisgICAg
ICAgICogUmV4QmVuY2gvQmFzaWMvYXN0LmpzOiBSZW1vdmVkLgorICAgICAgICAqIFJleEJlbmNo
L0Jhc2ljL2Jhc2ljLmpzOiBSZW1vdmVkLgorICAgICAgICAqIFJleEJlbmNoL0Jhc2ljL2JlbmNo
bWFyay5qczogUmVtb3ZlZC4KKyAgICAgICAgKiBSZXhCZW5jaC9CYXNpYy9jYXNlbGVzc19tYXAu
anM6IFJlbW92ZWQuCisgICAgICAgICogUmV4QmVuY2gvQmFzaWMvbGV4ZXIuanM6IFJlbW92ZWQu
CisgICAgICAgICogUmV4QmVuY2gvQmFzaWMvbnVtYmVyLmpzOiBSZW1vdmVkLgorICAgICAgICAq
IFJleEJlbmNoL0Jhc2ljL3BhcnNlci5qczogUmVtb3ZlZC4KKyAgICAgICAgKiBSZXhCZW5jaC9C
YXNpYy9yYW5kb20uanM6IFJlbW92ZWQuCisgICAgICAgICogUmV4QmVuY2gvQmFzaWMvc3RhdGUu
anM6IFJlbW92ZWQuCisgICAgICAgICogUmV4QmVuY2gvQmFzaWMvc3RyZXNzLXRlc3QuanM6IFJl
bW92ZWQuCisgICAgICAgICogUmV4QmVuY2gvQmFzaWMvdXRpbC5qczogUmVtb3ZlZC4KKyAgICAg
ICAgKiBSZXhCZW5jaC9iYXNpY19iZW5jaG1hcmsuanM6IFJlbW92ZWQuCisgICAgICAgICogUmV4
QmVuY2gvYWJvdXQuaHRtbDoKKyAgICAgICAgKiBSZXhCZW5jaC9jbGkuanM6CisgICAgICAgICog
UmV4QmVuY2gvZ2x1ZS5qczoKKyAgICAgICAgKiBSZXhCZW5jaC9pbmRleC5odG1sOgorCiAyMDE3
LTEwLTI1ICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CiAKICAgICAgICAg
U3VwcG9ydCB0aGUgVGFpbEJlbmNoOTAwMCBiZW5jaG1hcmsgaW4gcnVuLWpzYy1iZW5jaG1hcmtz
CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL1JleEJlbmNoL0Jhc2ljL2FzdC5qcwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL1JleEJlbmNoL0Jhc2ljL2FzdC5qcwkocmV2aXNpb24gMjI0
MDc0KQorKysgUGVyZm9ybWFuY2VUZXN0cy9SZXhCZW5jaC9CYXNpYy9hc3QuanMJKG5vbmV4aXN0
ZW50KQpAQCAtMSwyNzMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAotICovCi0idXNlIHN0cmljdCI7Ci0KLWNvbnN0IEJhc2ljID0ge307Ci0KLUJh
c2ljLk51bWJlckFwcGx5ID0gZnVuY3Rpb24oc3RhdGUpCi17Ci0gICAgLy8gSSdkIGNhbGwgdGhp
cyBhcmd1bWVudHMgYnV0IHdlJ3JlIGluIHN0cmljdCBtb2RlLgotICAgIGxldCBwYXJhbWV0ZXJz
ID0gdGhpcy5wYXJhbWV0ZXJzLm1hcCh2YWx1ZSA9PiB2YWx1ZS5ldmFsdWF0ZShzdGF0ZSkpOwot
ICAgIAotICAgIHJldHVybiBzdGF0ZS5nZXRWYWx1ZSh0aGlzLm5hbWUsIHBhcmFtZXRlcnMubGVu
Z3RoKS5hcHBseShzdGF0ZSwgcGFyYW1ldGVycyk7Ci19OwotCi1CYXNpYy5WYXJpYWJsZSA9IGZ1
bmN0aW9uKHN0YXRlKQotewotICAgIGxldCBwYXJhbWV0ZXJzID0gdGhpcy5wYXJhbWV0ZXJzLm1h
cCh2YWx1ZSA9PiB2YWx1ZS5ldmFsdWF0ZShzdGF0ZSkpOwotICAgIAotICAgIHJldHVybiBzdGF0
ZS5nZXRWYWx1ZSh0aGlzLm5hbWUsIHBhcmFtZXRlcnMubGVuZ3RoKS5sZWZ0QXBwbHkoc3RhdGUs
IHBhcmFtZXRlcnMpOwotfQotCi1CYXNpYy5Db25zdCA9IGZ1bmN0aW9uKHN0YXRlKQotewotICAg
IHJldHVybiB0aGlzLnZhbHVlOwotfQotCi1CYXNpYy5OdW1iZXJQb3cgPSBmdW5jdGlvbihzdGF0
ZSkKLXsKLSAgICByZXR1cm4gTWF0aC5wb3codGhpcy5sZWZ0LmV2YWx1YXRlKHN0YXRlKSwgdGhp
cy5yaWdodC5ldmFsdWF0ZShzdGF0ZSkpOwotfQotCi1CYXNpYy5OdW1iZXJNdWwgPSBmdW5jdGlv
bihzdGF0ZSkKLXsKLSAgICByZXR1cm4gdGhpcy5sZWZ0LmV2YWx1YXRlKHN0YXRlKSAqIHRoaXMu
cmlnaHQuZXZhbHVhdGUoc3RhdGUpOwotfQotCi1CYXNpYy5OdW1iZXJEaXYgPSBmdW5jdGlvbihz
dGF0ZSkKLXsKLSAgICByZXR1cm4gdGhpcy5sZWZ0LmV2YWx1YXRlKHN0YXRlKSAvIHRoaXMucmln
aHQuZXZhbHVhdGUoc3RhdGUpOwotfQotCi1CYXNpYy5OdW1iZXJOZWcgPSBmdW5jdGlvbihzdGF0
ZSkKLXsKLSAgICByZXR1cm4gLXRoaXMudGVybS5ldmFsdWF0ZShzdGF0ZSk7Ci19Ci0KLUJhc2lj
Lk51bWJlckFkZCA9IGZ1bmN0aW9uKHN0YXRlKQotewotICAgIHJldHVybiB0aGlzLmxlZnQuZXZh
bHVhdGUoc3RhdGUpICsgdGhpcy5yaWdodC5ldmFsdWF0ZShzdGF0ZSk7Ci19Ci0KLUJhc2ljLk51
bWJlclN1YiA9IGZ1bmN0aW9uKHN0YXRlKQotewotICAgIHJldHVybiB0aGlzLmxlZnQuZXZhbHVh
dGUoc3RhdGUpIC0gdGhpcy5yaWdodC5ldmFsdWF0ZShzdGF0ZSk7Ci19Ci0KLUJhc2ljLlN0cmlu
Z1ZhciA9IGZ1bmN0aW9uKHN0YXRlKQotewotICAgIGxldCB2YWx1ZSA9IHN0YXRlLnN0cmluZ1Zh
bHVlcy5nZXQodGhpcy5uYW1lKTsKLSAgICBpZiAodmFsdWUgPT0gbnVsbCkKLSAgICAgICAgc3Rh
dGUuYWJvcnQoIkNvdWxkIG5vdCBmaW5kIHN0cmluZyB2YXJpYWJsZSAiICsgdGhpcy5uYW1lKTsK
LSAgICByZXR1cm4gdmFsdWU7Ci19Ci0KLUJhc2ljLkVxdWFscyA9IGZ1bmN0aW9uKHN0YXRlKQot
ewotICAgIHJldHVybiB0aGlzLmxlZnQuZXZhbHVhdGUoc3RhdGUpID09IHRoaXMucmlnaHQuZXZh
bHVhdGUoc3RhdGUpOwotfQotCi1CYXNpYy5Ob3RFcXVhbHMgPSBmdW5jdGlvbihzdGF0ZSkKLXsK
LSAgICByZXR1cm4gdGhpcy5sZWZ0LmV2YWx1YXRlKHN0YXRlKSAhPSB0aGlzLnJpZ2h0LmV2YWx1
YXRlKHN0YXRlKTsKLX0KLQotQmFzaWMuTGVzc1RoYW4gPSBmdW5jdGlvbihzdGF0ZSkKLXsKLSAg
ICByZXR1cm4gdGhpcy5sZWZ0LmV2YWx1YXRlKHN0YXRlKSA8IHRoaXMucmlnaHQuZXZhbHVhdGUo
c3RhdGUpOwotfQotCi1CYXNpYy5HcmVhdGVyVGhhbiA9IGZ1bmN0aW9uKHN0YXRlKQotewotICAg
IHJldHVybiB0aGlzLmxlZnQuZXZhbHVhdGUoc3RhdGUpID4gdGhpcy5yaWdodC5ldmFsdWF0ZShz
dGF0ZSk7Ci19Ci0KLUJhc2ljLkxlc3NFcXVhbCA9IGZ1bmN0aW9uKHN0YXRlKQotewotICAgIHJl
dHVybiB0aGlzLmxlZnQuZXZhbHVhdGUoc3RhdGUpIDw9IHRoaXMucmlnaHQuZXZhbHVhdGUoc3Rh
dGUpOwotfQotCi1CYXNpYy5HcmVhdGVyRXF1YWwgPSBmdW5jdGlvbihzdGF0ZSkKLXsKLSAgICBy
ZXR1cm4gdGhpcy5sZWZ0LmV2YWx1YXRlKHN0YXRlKSA+PSB0aGlzLnJpZ2h0LmV2YWx1YXRlKHN0
YXRlKTsKLX0KLQotQmFzaWMuR29UbyA9IGZ1bmN0aW9uKihzdGF0ZSkKLXsKLSAgICBzdGF0ZS5u
ZXh0TGluZU51bWJlciA9IHRoaXMudGFyZ2V0OwotfQotCi1CYXNpYy5Hb1N1YiA9IGZ1bmN0aW9u
KihzdGF0ZSkKLXsKLSAgICBzdGF0ZS5zdWJTdGFjay5wdXNoKHN0YXRlLm5leHRMaW5lTnVtYmVy
KTsKLSAgICBzdGF0ZS5uZXh0TGluZU51bWJlciA9IHRoaXMudGFyZ2V0OwotfQotCi1CYXNpYy5E
ZWYgPSBmdW5jdGlvbiooc3RhdGUpCi17Ci0gICAgc3RhdGUudmFsaWRhdGUoIXN0YXRlLnZhbHVl
cy5oYXModGhpcy5uYW1lKSwgIkNhbm5vdCByZWRlZmluZSBmdW5jdGlvbiIpOwotICAgIHN0YXRl
LnZhbHVlcy5zZXQodGhpcy5uYW1lLCBuZXcgTnVtYmVyRnVuY3Rpb24odGhpcy5wYXJhbWV0ZXJz
LCB0aGlzLmV4cHJlc3Npb24pKTsKLX0KLQotQmFzaWMuTGV0ID0gZnVuY3Rpb24qKHN0YXRlKQot
ewotICAgIHRoaXMudmFyaWFibGUuZXZhbHVhdGUoc3RhdGUpLmFzc2lnbih0aGlzLmV4cHJlc3Np
b24uZXZhbHVhdGUoc3RhdGUpKTsKLX0KLQotQmFzaWMuSWYgPSBmdW5jdGlvbiooc3RhdGUpCi17
Ci0gICAgaWYgKHRoaXMuY29uZGl0aW9uLmV2YWx1YXRlKHN0YXRlKSkKLSAgICAgICAgc3RhdGUu
bmV4dExpbmVOdW1iZXIgPSB0aGlzLnRhcmdldDsKLX0KLQotQmFzaWMuUmV0dXJuID0gZnVuY3Rp
b24qKHN0YXRlKQotewotICAgIHRoaXMudmFsaWRhdGUoc3RhdGUuc3ViU3RhY2subGVuZ3RoLCAi
Tm90IGluIGEgc3Vicm91dGluZSIpOwotICAgIHRoaXMubmV4dExpbmVOdW1iZXIgPSBzdGF0ZS5z
dWJTdGFjay5wb3AoKTsKLX0KLQotQmFzaWMuU3RvcCA9IGZ1bmN0aW9uKihzdGF0ZSkKLXsKLSAg
ICBzdGF0ZS5uZXh0TGluZU51bWJlciA9IG51bGw7Ci19Ci0KLUJhc2ljLk9uID0gZnVuY3Rpb24q
KHN0YXRlKQotewotICAgIGxldCBpbmRleCA9IHRoaXMuZXhwcmVzc2lvbi5ldmFsdWF0ZShzdGF0
ZSk7Ci0gICAgaWYgKCEoaW5kZXggPj0gMSkgfHwgIShpbmRleCA8PSB0aGlzLnRhcmdldHMubGVu
Z3RoKSkKLSAgICAgICAgc3RhdGUuYWJvcnQoIkluZGV4IG91dCBvZiBib3VuZHM6ICIgKyBpbmRl
eCk7Ci0gICAgdGhpcy5uZXh0TGluZU51bWJlciA9IHRoaXMudGFyZ2V0c1tNYXRoLmZsb29yKGlu
ZGV4KV07Ci19Ci0KLUJhc2ljLkZvciA9IGZ1bmN0aW9uKihzdGF0ZSkKLXsKLSAgICBsZXQgc2lk
ZVN0YXRlID0gc3RhdGUuZ2V0U2lkZVN0YXRlKHRoaXMpOwotICAgIHNpZGVTdGF0ZS52YXJpYWJs
ZSA9IHN0YXRlLmdldFZhbHVlKHRoaXMudmFyaWFibGUsIDApLmxlZnRBcHBseShzdGF0ZSwgW10p
OwotICAgIHNpZGVTdGF0ZS5pbml0aWFsVmFsdWUgPSB0aGlzLmluaXRpYWwuZXZhbHVhdGUoc3Rh
dGUpOwotICAgIHNpZGVTdGF0ZS5saW1pdFZhbHVlID0gdGhpcy5saW1pdC5ldmFsdWF0ZShzdGF0
ZSk7Ci0gICAgc2lkZVN0YXRlLnN0ZXBWYWx1ZSA9IHRoaXMuc3RlcC5ldmFsdWF0ZShzdGF0ZSk7
Ci0gICAgc2lkZVN0YXRlLnZhcmlhYmxlLmFzc2lnbihzaWRlU3RhdGUuaW5pdGlhbFZhbHVlKTsK
LSAgICBzaWRlU3RhdGUuc2hvdWxkU3RvcCA9IGZ1bmN0aW9uKCkgewotICAgICAgICByZXR1cm4g
KHNpZGVTdGF0ZS52YXJpYWJsZS52YWx1ZSAtIHNpZGVTdGF0ZS5saW1pdFZhbHVlKSAqIE1hdGgu
c2lnbihzaWRlU3RhdGUuc3RlcFZhbHVlKSA+IDA7Ci0gICAgfTsKLSAgICBpZiAoc2lkZVN0YXRl
LnNob3VsZFN0b3AoKSkKLSAgICAgICAgdGhpcy5uZXh0TGluZU51bWJlciA9IHRoaXMudGFyZ2V0
LmxpbmVOdW1iZXIgKyAxOwotfQotCi1CYXNpYy5OZXh0ID0gZnVuY3Rpb24qKHN0YXRlKQotewot
ICAgIGxldCBzaWRlU3RhdGUgPSBzdGF0ZS5nZXRTaWRlU3RhdGUodGhpcy50YXJnZXQpOwotICAg
IHNpZGVTdGF0ZS52YXJpYWJsZS5hc3NpZ24oc2lkZVN0YXRlLnZhcmlhYmxlLnZhbHVlICsgc2lk
ZVN0YXRlLnN0ZXBWYWx1ZSk7Ci0gICAgaWYgKHNpZGVTdGF0ZS5zaG91bGRTdG9wKCkpCi0gICAg
ICAgIHJldHVybjsKLSAgICBzdGF0ZS5uZXh0TGluZU51bWJlciA9IHRoaXMudGFyZ2V0LmxpbmVO
dW1iZXIgKyAxOwotfQotCi1CYXNpYy5OZXh0LmlzQmxvY2tFbmQgPSB0cnVlOwotCi1CYXNpYy5Q
cmludCA9IGZ1bmN0aW9uKihzdGF0ZSkKLXsKLSAgICBsZXQgc3RyaW5nID0gIiI7Ci0gICAgZm9y
IChsZXQgaXRlbSBvZiB0aGlzLml0ZW1zKSB7Ci0gICAgICAgIHN3aXRjaCAoaXRlbS5raW5kKSB7
Ci0gICAgICAgIGNhc2UgImNvbW1hIjoKLSAgICAgICAgICAgIHdoaWxlIChzdHJpbmcubGVuZ3Ro
ICUgMTQpCi0gICAgICAgICAgICAgICAgc3RyaW5nICs9ICIgIjsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBjYXNlICJ0YWIiOiB7Ci0gICAgICAgICAgICBsZXQgdmFsdWUgPSBpdGVtLnZh
bHVlLmV2YWx1YXRlKHN0YXRlKTsKLSAgICAgICAgICAgIHZhbHVlID0gTWF0aC5tYXgoTWF0aC5y
b3VuZCh2YWx1ZSksIDEpOwotICAgICAgICAgICAgd2hpbGUgKHN0cmluZy5sZW5ndGggJSB2YWx1
ZSkKLSAgICAgICAgICAgICAgICBzdHJpbmcgKz0gIiAiOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIH0KLSAgICAgICAgY2FzZSAic3RyaW5nIjoKLSAgICAgICAgY2FzZSAibnVtYmVyIjoK
LSAgICAgICAgICAgIHN0cmluZyArPSBpdGVtLnZhbHVlLmV2YWx1YXRlKHN0YXRlKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCJCYWQgaXRlbSBraW5kOiAiICsgaXRlbS5raW5kKTsKLSAgICAgICAgfQotICAgIH0KLSAg
ICAKLSAgICB5aWVsZCB7a2luZDogIm91dHB1dCIsIHN0cmluZ307Ci19Ci0KLUJhc2ljLklucHV0
ID0gZnVuY3Rpb24qKHN0YXRlKQotewotICAgIGxldCByZXN1bHRzID0geWllbGQge2tpbmQ6ICJp
bnB1dCIsIG51bUl0ZW1zOiB0aGlzLml0ZW1zLmxlbmd0aH07Ci0gICAgc3RhdGUudmFsaWRhdGUo
cmVzdWx0cyAhPSBudWxsICYmIHJlc3VsdHMubGVuZ3RoID09IHRoaXMuaXRlbXMubGVuZ3RoLCAi
SW5wdXQgZGlkIG5vdCBnZXQgdGhlIHJpZ2h0IG51bWJlciBvZiBpdGVtcyIpOwotICAgIGZvciAo
bGV0IGkgPSAwOyBpIDwgcmVzdWx0cy5sZW5ndGg7ICsraSkKLSAgICAgICAgdGhpcy5pdGVtc1tp
XS5ldmFsdWF0ZShzdGF0ZSkuYXNzaWduKHJlc3VsdHNbaV0pOwotfQotCi1CYXNpYy5SZWFkID0g
ZnVuY3Rpb24qKHN0YXRlKQotewotICAgIGZvciAobGV0IGl0ZW0gb2YgdGhpcy5pdGVtcykgewot
ICAgICAgICBzdGF0ZS52YWxpZGF0ZShzdGF0ZS5kYXRhSW5kZXggPCBzdGF0ZS5wcm9ncmFtLmRh
dGEubGVuZ3RoLCAiQXR0ZW1wdGluZyB0byByZWFkIHBhc3QgdGhlIGVuZCBvZiBkYXRhIik7Ci0g
ICAgICAgIGl0ZW0uYXNzaWduKHN0YXRlLnByb2dyYW0uZGF0YVtzdGF0ZS5kYXRhSW5kZXgrK10p
OwotICAgIH0KLX0KLQotQmFzaWMuUmVzdG9yZSA9IGZ1bmN0aW9uKihzdGF0ZSkKLXsKLSAgICBz
dGF0ZS5kYXRhSW5kZXggPSAwOwotfQotCi1CYXNpYy5EaW0gPSBmdW5jdGlvbiooc3RhdGUpCi17
Ci0gICAgZm9yIChsZXQgaXRlbSBvZiB0aGlzLml0ZW1zKSB7Ci0gICAgICAgIHN0YXRlLnZhbGlk
YXRlKCFzdGF0ZS52YWx1ZXMuaGFzKGl0ZW0ubmFtZSksICJWYXJpYWJsZSAiICsgaXRlbS5uYW1l
ICsgIiBhbHJlYWR5IGV4aXN0cyIpOwotICAgICAgICBzdGF0ZS52YWxpZGF0ZShpdGVtLmJvdW5k
cy5sZW5ndGgsICJEaW0gc3RhdGVtZW50IGlzIGZvciBhcnJheXMiKTsKLSAgICAgICAgc3RhdGUu
dmFsdWVzLnNldChpdGVtLm5hbWUsIG5ldyBOdW1iZXJBcnJheShpdGVtLmJvdW5kcy5tYXAoYm91
bmQgPT4gYm91bmQgKyAxKSkpOwotICAgIH0KLX0KLQotQmFzaWMuUmFuZG9taXplID0gZnVuY3Rp
b24qKHN0YXRlKQotewotICAgIHN0YXRlLnJuZyA9IGNyZWF0ZVJOR1dpdGhSYW5kb21TZWVkKCk7
Ci19Ci0KLUJhc2ljLkVuZCA9IGZ1bmN0aW9uKihzdGF0ZSkKLXsKLSAgICBzdGF0ZS5uZXh0TGlu
ZU51bWJlciA9IG51bGw7Ci19Ci0KLUJhc2ljLkVuZC5pc0Jsb2NrRW5kID0gdHJ1ZTsKLQotQmFz
aWMuUHJvZ3JhbSA9IGZ1bmN0aW9uKiBwcm9ncmFtR2VuZXJhdG9yKHN0YXRlKQotewotICAgIHN0
YXRlLnZhbGlkYXRlKHN0YXRlLnByb2dyYW0gPT0gdGhpcywgIlN0YXRlIG11c3QgbWF0Y2ggcHJv
Z3JhbSIpOwotICAgIGxldCBtYXhMaW5lTnVtYmVyID0gTWF0aC5tYXgoLi4udGhpcy5zdGF0ZW1l
bnRzLmtleXMoKSk7Ci0gICAgd2hpbGUgKHN0YXRlLm5leHRMaW5lTnVtYmVyICE9IG51bGwpIHsK
LSAgICAgICAgc3RhdGUudmFsaWRhdGUoc3RhdGUubmV4dExpbmVOdW1iZXIgPD0gbWF4TGluZU51
bWJlciwgIldlbnQgb3V0IG9mIGJvdW5kcyBvZiB0aGUgcHJvZ3JhbSIpOwotICAgICAgICBsZXQg
c3RhdGVtZW50ID0gdGhpcy5zdGF0ZW1lbnRzLmdldChzdGF0ZS5uZXh0TGluZU51bWJlcisrKTsK
LSAgICAgICAgaWYgKHN0YXRlbWVudCA9PSBudWxsIHx8IHN0YXRlbWVudC5wcm9jZXNzID09IG51
bGwpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgc3RhdGUuc3RhdGVtZW50ID0gc3Rh
dGVtZW50OwotICAgICAgICB5aWVsZCogc3RhdGVtZW50LnByb2Nlc3Moc3RhdGUpOwotICAgIH0K
LX0KLQpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9SZXhCZW5jaC9CYXNpYy9iYXNpYy5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL1JleEJlbmNoL0Jhc2ljL2Jhc2ljLmpzCShyZXZp
c2lvbiAyMjQwNzQpCisrKyBQZXJmb3JtYW5jZVRlc3RzL1JleEJlbmNoL0Jhc2ljL2Jhc2ljLmpz
CShub25leGlzdGVudCkKQEAgLTEsNTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
Ni0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0idXNlIHN0cmljdCI7Ci0KLWZ1bmN0aW9uIHByZXBh
cmUoc3RyaW5nKQotewotICAgIGxldCBwcm9ncmFtID0gcGFyc2UobGV4KHN0cmluZykpLnByb2dy
YW0oKTsKLSAgICByZXR1cm4gcHJvZ3JhbS5wcm9jZXNzKG5ldyBTdGF0ZShwcm9ncmFtKSk7Ci19
Ci0KLWZ1bmN0aW9uIHNpbXVsYXRlKHByb2dyYW0sIGlucHV0cyA9IFtdKQotewotICAgIGxldCBy
ZXN1bHQgPSAiIjsKLSAgICBsZXQgYXJncyA9IFtdOwotICAgIGZvciAoOzspIHsKLSAgICAgICAg
bGV0IG5leHQgPSBwcm9ncmFtLm5leHQoLi4uYXJncyk7Ci0gICAgICAgIGFyZ3MgPSBbXTsKLSAg
ICAgICAgaWYgKG5leHQuZG9uZSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBpZiAobmV4
dC52YWx1ZS5raW5kID09ICJvdXRwdXQiKSB7Ci0gICAgICAgICAgICByZXN1bHQgKz0gbmV4dC52
YWx1ZS5zdHJpbmcgKyAiXG4iOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLSAg
ICAgICAgaWYgKG5leHQudmFsdWUua2luZCA9PSAiaW5wdXQiKSB7Ci0gICAgICAgICAgICBhcmdz
ID0gaW5wdXRzLnNwbGljZSgwLCBuZXh0LnZhbHVlLm51bUl0ZW1zKTsKLSAgICAgICAgICAgIGNv
bnRpbnVlOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KSW5kZXg6
IFBlcmZvcm1hbmNlVGVzdHMvUmV4QmVuY2gvQmFzaWMvYmVuY2htYXJrLmpzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFBlcmZvcm1hbmNlVGVzdHMvUmV4QmVuY2gvQmFzaWMvYmVuY2htYXJrLmpzCShyZXZpc2lv
biAyMjQwNzQpCisrKyBQZXJmb3JtYW5jZVRlc3RzL1JleEJlbmNoL0Jhc2ljL2JlbmNobWFyay5q
cwkobm9uZXhpc3RlbnQpCkBAIC0xLDQyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotInVzZSBzdHJpY3QiOwotCi1jbGFzcyBCYXNpY0Jl
bmNobWFyayBleHRlbmRzIEJlbmNobWFyayB7Ci0gICAgY29uc3RydWN0b3IodmVyYm9zZSA9IDAp
Ci0gICAgewotICAgICAgICBzdXBlcih2ZXJib3NlKTsKLSAgICB9Ci0gICAgCi0gICAgcnVuT25j
ZSgpCi0gICAgewotICAgICAgICBwcmVwYXJlKCIxMCBwcmludCBcImhlbGxvLCB3b3JsZCFcIlxu
MjAgZW5kIik7Ci0gICAgICAgIHByZXBhcmUoIjEwIGxldCB4ID0gMFxuMjAgbGV0IHggPSB4ICsg
MVxuMzAgcHJpbnQgeFxuNDAgaWYgeCA8IDEwIHRoZW4gMjBcbjUwIGVuZCIpOwotICAgICAgICBw
cmVwYXJlKCIxMCBwcmludCBpbnQocm5kICogMTAwKVxuMjAgZW5kXG4iKTsKLSAgICAgICAgcHJl
cGFyZSgiMTAgbGV0IHZhbHVlID0gaW50KHJuZCAqIDIwMDApXG4yMCBwcmludCB2YWx1ZVxuMzAg
aWYgdmFsdWUgPD4gMTAwIHRoZW4gMTBcbjQwIGVuZCIpOwotICAgIGZvciAobGV0IGkgPSAwOyBp
IDwgMTAwOyArK2kpCi0gICAgICAgIHByZXBhcmUoIjEwIGRpbSBhKDIwMDApXG4yMCBmb3IgaSA9
IDIgdG8gMjAwMFxuMzAgbGV0IGEoaSkgPSAxXG40MCBuZXh0IGlcbjUwIGZvciBpID0gMiB0byBz
cXIoMjAwMClcbjYwIGlmIGEoaSkgPSAwIHRoZW4gMTAwXG43MCBmb3IgaiA9IGkgXiAyIHRvIDIw
MDAgc3RlcCBpXG44MCBsZXQgYShqKSA9IDBcbjkwIG5leHQgalxuMTAwIG5leHQgaVxuMTEwIGZv
ciBpID0gMiB0byAyMDAwXG4xMjAgaWYgYShpKSA9IDAgdGhlbiAxNDBcbjEzMCBwcmludCBpXG4x
NDAgbmV4dCBpXG4xNTAgZW5kXG4iKTsKLSAgICB9Ci19CkluZGV4OiBQZXJmb3JtYW5jZVRlc3Rz
L1JleEJlbmNoL0Jhc2ljL2Nhc2VsZXNzX21hcC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5j
ZVRlc3RzL1JleEJlbmNoL0Jhc2ljL2Nhc2VsZXNzX21hcC5qcwkocmV2aXNpb24gMjI0MDc0KQor
KysgUGVyZm9ybWFuY2VUZXN0cy9SZXhCZW5jaC9CYXNpYy9jYXNlbGVzc19tYXAuanMJKG5vbmV4
aXN0ZW50KQpAQCAtMSw1NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCi0gKi8KLSJ1c2Ugc3RyaWN0IjsKLQotY2xhc3MgQ2FzZWxlc3NNYXAgewot
ICAgIGNvbnN0cnVjdG9yKG90aGVyTWFwKQotICAgIHsKLSAgICAgICAgaWYgKG90aGVyTWFwID09
IG51bGwpCi0gICAgICAgICAgICB0aGlzLl9tYXAgPSBuZXcgTWFwKCk7Ci0gICAgICAgIGVsc2UK
LSAgICAgICAgICAgIHRoaXMuX21hcCA9IG5ldyBNYXAob3RoZXJNYXAuX21hcCk7Ci0gICAgfQot
ICAgIAotICAgIHNldChrZXksIHZhbHVlKQotICAgIHsKLSAgICAgICAgdGhpcy5fbWFwLnNldChr
ZXkudG9Mb3dlckNhc2UoKSwgdmFsdWUpOwotICAgIH0KLSAgICAKLSAgICBoYXMoa2V5KQotICAg
IHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX21hcC5oYXMoa2V5LnRvTG93ZXJDYXNlKCkpOwotICAg
IH0KLSAgICAKLSAgICBnZXQoa2V5KQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX21hcC5n
ZXQoa2V5LnRvTG93ZXJDYXNlKCkpOwotICAgIH0KLQotICAgIFtTeW1ib2wuaXRlcmF0b3JdKCkK
LSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9tYXBbU3ltYm9sLml0ZXJhdG9yXSgpOwotICAg
IH0KLX0KLQpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9SZXhCZW5jaC9CYXNpYy9sZXhlci5qcwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL1JleEJlbmNoL0Jhc2ljL2xleGVyLmpzCShy
ZXZpc2lvbiAyMjQwNzQpCisrKyBQZXJmb3JtYW5jZVRlc3RzL1JleEJlbmNoL0Jhc2ljL2xleGVy
LmpzCShub25leGlzdGVudCkKQEAgLTEsOTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0idXNlIHN0cmljdCI7Ci0KLS8vIExvb3NlbHkg
YmFzZWQgb24gRUNNQSA1NSBzZWN0aW9ucyA0LTgsIGJ1dCBsb29zZW5lZCB0byBhbGxvdyBmb3Ig
bW9kZXJuIGNvbnZlbnRpb25zLCBsaWtlCi0vLyBtdWx0aS1jaGFyYWN0ZXIgdmFyaWFibGUgbmFt
ZXMuIEJ1dCB0aGlzIGRvZXNuJ3QgZ28gdG9vIGZhciAtIGluIHBhcnRpY3VsYXIsIHRoaXMgZG9l
c24ndCBkbwotLy8gdW5pY29kZSwgYmVjYXVzZSB0aGF0IHdvdWxkIHJlcXVpcmUgbW9yZSB0aG91
Z2h0LgotZnVuY3Rpb24qIGxleChzdHJpbmcpCi17Ci0gICAgbGV0IHNvdXJjZUxpbmVOdW1iZXIg
PSAwOwotICAgIGZvciAobGV0IGxpbmUgb2Ygc3RyaW5nLnNwbGl0KCJcbiIpKSB7Ci0gICAgICAg
ICsrc291cmNlTGluZU51bWJlcjsKLSAgICAgICAgCi0gICAgICAgIGZ1bmN0aW9uIGNvbnN1bWVX
aGl0ZXNwYWNlKCkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKC9eXHMrLy50ZXN0KGxpbmUp
KQotICAgICAgICAgICAgICAgIGxpbmUgPSBSZWdFeHAucmlnaHRDb250ZXh0OwotICAgICAgICB9
Ci0gICAKLSAgICAgICAgZnVuY3Rpb24gY29uc3VtZShraW5kKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBsaW5lID0gUmVnRXhwLnJpZ2h0Q29udGV4dDsKLSAgICAgICAgICAgIHJldHVybiB7a2lu
ZCwgc3RyaW5nOiBSZWdFeHAubGFzdE1hdGNoLCBzb3VyY2VMaW5lTnVtYmVyLCB1c2VyTGluZU51
bWJlcn07Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGNvbnN0IGlzSWRlbnRpZmllciA9
IC9eW2Etel9dKFthLXowLTlfXSopL2k7Ci0gICAgICAgIGNvbnN0IGlzTnVtYmVyID0gL14oKFsw
LTldKyhcLihbMC05XSopKT8pfChcLlswLTldKykoZShbKy1dPykoWzAtOV0rKSk/KS9pOwotICAg
ICAgICBjb25zdCBpc1N0cmluZyA9IC9eXCIoW15cIl18KFwiXCIpKSpcIi87Ci0gICAgICAgIGNv
bnN0IGlzS2V5d29yZCA9IC9eKChiYXNlKXwoZGF0YSl8KGRlZil8KGRpbSl8KGVuZCl8KGZvcil8
KGdvKXwoZ29zdWIpfChnb3RvKXwoaWYpfChpbnB1dCl8KGxldCl8KG5leHQpfChvbil8KG9wdGlv
bil8KHByaW50KXwocmFuZG9taXplKXwocmVhZCl8KHJlc3RvcmUpfChyZXR1cm4pfChzdGVwKXwo
c3RvcCl8KHN1Yil8KHRoZW4pfCh0bykpL2k7Ci0gICAgICAgIGNvbnN0IGlzT3BlcmF0b3IgPSAv
XigtfFwrfFwqfFwvfFxefFwofFwpfCg8Wz49XT8pfCg+PT8pfD18LHxcJHw7KS87Ci0gICAgICAg
IGNvbnN0IGlzUmVtID0gL15yZW1ccy4qLzsKLSAgICAgICAgCi0gICAgICAgIGNvbnN1bWVXaGl0
ZXNwYWNlKCk7Ci0gICAgICAgIAotICAgICAgICBpZiAoIS9eWzAtOV0rLy50ZXN0KGxpbmUpKQot
ICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJBdCBsaW5lICIgKyBzb3VyY2VMaW5lTnVtYmVy
ICsgIjogRXhwZWN0IGxpbmUgbnVtYmVyOiAiICsgbGluZSk7Ci0gICAgICAgIGxldCB1c2VyTGlu
ZU51bWJlciA9ICtSZWdFeHAubGFzdE1hdGNoOwotICAgICAgICBsaW5lID0gUmVnRXhwLnJpZ2h0
Q29udGV4dDsKLSAgICAgICAgeWllbGQge2tpbmQ6ICJ1c2VyTGluZU51bWJlciIsIHN0cmluZzog
UmVnRXhwLmxhc3RNYXRjaCwgc291cmNlTGluZU51bWJlciwgdXNlckxpbmVOdW1iZXJ9OwotICAg
ICAgICAKLSAgICAgICAgY29uc3VtZVdoaXRlc3BhY2UoKTsKLSAgICAgICAgCi0gICAgICAgIHdo
aWxlIChsaW5lLmxlbmd0aCkgewotICAgICAgICAgICAgaWYgKGlzS2V5d29yZC50ZXN0KGxpbmUp
KQotICAgICAgICAgICAgICAgIHlpZWxkIGNvbnN1bWUoImtleXdvcmQiKTsKLSAgICAgICAgICAg
IGVsc2UgaWYgKGlzSWRlbnRpZmllci50ZXN0KGxpbmUpKQotICAgICAgICAgICAgICAgIHlpZWxk
IGNvbnN1bWUoImlkZW50aWZpZXIiKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGlzTnVtYmVyLnRl
c3QobGluZSkpIHsKLSAgICAgICAgICAgICAgICBsZXQgdG9rZW4gPSBjb25zdW1lKCJudW1iZXIi
KTsKLSAgICAgICAgICAgICAgICB0b2tlbi52YWx1ZSA9ICt0b2tlbi5zdHJpbmc7Ci0gICAgICAg
ICAgICAgICAgeWllbGQgdG9rZW47Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGlzU3RyaW5nLnRl
c3QobGluZSkpIHsKLSAgICAgICAgICAgICAgICBsZXQgdG9rZW4gPSBjb25zdW1lKCJzdHJpbmci
KTsKLSAgICAgICAgICAgICAgICB0b2tlbi52YWx1ZSA9ICIiOwotICAgICAgICAgICAgICAgIGZv
ciAobGV0IGkgPSAxOyBpIDwgdG9rZW4uc3RyaW5nLmxlbmd0aCAtIDE7ICsraSkgewotICAgICAg
ICAgICAgICAgICAgICBsZXQgY2hhciA9IHRva2VuLnN0cmluZy5jaGFyQXQoaSk7Ci0gICAgICAg
ICAgICAgICAgICAgIGlmIChjaGFyID09ICJcIiIpCi0gICAgICAgICAgICAgICAgICAgICAgICBp
Kys7Ci0gICAgICAgICAgICAgICAgICAgIHRva2VuLnZhbHVlICs9IGNoYXI7Ci0gICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgIHlpZWxkIHRva2VuOwotICAgICAgICAgICAgfSBlbHNl
IGlmIChpc09wZXJhdG9yLnRlc3QobGluZSkpCi0gICAgICAgICAgICAgICAgeWllbGQgY29uc3Vt
ZSgib3BlcmF0b3IiKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGlzUmVtLnRlc3QobGluZSkpCi0g
ICAgICAgICAgICAgICAgeWllbGQgY29uc3VtZSgicmVtYXJrIik7Ci0gICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJBdCBsaW5lICIgKyBzb3VyY2VMaW5l
TnVtYmVyICsgIjogQ2Fubm90IGxleCB0b2tlbjogIiArIGxpbmUpOwotICAgICAgICAgICAgY29u
c3VtZVdoaXRlc3BhY2UoKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgLy8gTm90ZTog
dGhpcyBpcyBuZWNlc3NhcnkgZm9yIHRoZSBwYXJzZXIsIHdoaWNoIG1heSBsb29rLWFoZWFkIHdp
dGhvdXQgY2hlY2tpbmcgaWYgd2UncmUKLSAgICAgICAgLy8gZG9uZS4gRm9ydHVuYXRlbHksIGl0
IHdvbid0IGxvb2stYWhlYWQgcGFzdCBhIG5ld0xpbmUuCi0gICAgICAgIHlpZWxkIHtraW5kOiAi
bmV3TGluZSIsIHN0cmluZzoiXG4iLCBzb3VyY2VMaW5lTnVtYmVyLCB1c2VyTGluZU51bWJlcn07
Ci0gICAgfQotfQpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9SZXhCZW5jaC9CYXNpYy9udW1iZXIu
anMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9SZXhCZW5jaC9CYXNpYy9udW1iZXIu
anMJKHJldmlzaW9uIDIyNDA3NCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvUmV4QmVuY2gvQmFzaWMv
bnVtYmVyLmpzCShub25leGlzdGVudCkKQEAgLTEsMTM3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotInVzZSBzdHJpY3QiOwotCi1jbGFz
cyBOdW1iZXJWYWx1ZSB7Ci0gICAgY29uc3RydWN0b3IodmFsdWUgPSAwKQotICAgIHsKLSAgICAg
ICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTsKLSAgICB9Ci0gICAgCi0gICAgZ2V0IHZhbHVlKCkgeyBy
ZXR1cm4gdGhpcy5fdmFsdWU7IH0KLSAgICAKLSAgICBhcHBseShzdGF0ZSwgcGFyYW1ldGVycykK
LSAgICB7Ci0gICAgICAgIHN0YXRlLnZhbGlkYXRlKHBhcmFtZXRlcnMubGVuZ3RoID09IDAsICJT
aG91bGQgbm90IHBhc3MgYXJndW1lbnRzIHRvIHNpbXBsZSBudW1lcmljIHZhcmlhYmxlcyIpOwot
ICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWU7Ci0gICAgfQotICAgIAotICAgIGxlZnRBcHBseShz
dGF0ZSwgcGFyYW1ldGVycykKLSAgICB7Ci0gICAgICAgIHN0YXRlLnZhbGlkYXRlKHBhcmFtZXRl
cnMubGVuZ3RoID09IDAsICJTaG91bGQgbm90IHBhc3MgYXJndW1lbnRzIHRvIHNpbXBsZSBudW1l
cmljIHZhcmlhYmxlcyIpOwotICAgICAgICByZXR1cm4gdGhpczsKLSAgICB9Ci0gICAgCi0gICAg
YXNzaWduKHZhbHVlKQotICAgIHsKLSAgICAgICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTsKLSAgICB9
Ci19Ci0KLWNsYXNzIE51bWJlckFycmF5IHsKLSAgICBjb25zdHJ1Y3RvcihkaW0gPSBbMTFdKQot
ICAgIHsKLSAgICAgICAgZnVuY3Rpb24gYWxsb2NhdGVEaW0oaW5kZXgpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIGxldCByZXN1bHQgPSBuZXcgQXJyYXkoZGltW2luZGV4XSk7Ci0gICAgICAgICAg
ICBpZiAoaW5kZXggKyAxIDwgZGltLmxlbmd0aCkgewotICAgICAgICAgICAgICAgIGZvciAobGV0
IGkgPSAwOyBpIDwgZGltW2luZGV4XTsgKytpKQotICAgICAgICAgICAgICAgICAgICByZXN1bHRb
aV0gPSBhbGxvY2F0ZURpbShpbmRleCArIDEpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRpbVtpbmRleF07ICsraSkKLSAgICAgICAg
ICAgICAgICAgICAgcmVzdWx0W2ldID0gbmV3IE51bWJlclZhbHVlKCk7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAg
ICB0aGlzLl9hcnJheSA9IGFsbG9jYXRlRGltKDApOwotICAgICAgICB0aGlzLl9kaW0gPSBkaW07
Ci0gICAgfQotICAgIAotICAgIGFwcGx5KHN0YXRlLCBwYXJhbWV0ZXJzKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIHRoaXMubGVmdEFwcGx5KHN0YXRlLCBwYXJhbWV0ZXJzKS5hcHBseShzdGF0ZSwg
W10pOwotICAgIH0KLSAgICAKLSAgICBsZWZ0QXBwbHkoc3RhdGUsIHBhcmFtZXRlcnMpCi0gICAg
ewotICAgICAgICBpZiAodGhpcy5fZGltLmxlbmd0aCAhPSBwYXJhbWV0ZXJzLmxlbmd0aCkKLSAg
ICAgICAgICAgIHN0YXRlLmFib3J0KCJFeHBlY3RlZCAiICsgdGhpcy5fZGltLmxlbmd0aCArICIg
YXJndW1lbnRzIGJ1dCAiICsgcGFyYW1ldGVycy5sZW5ndGggKyAiIHdlcmUgcGFzc2VkLiIpOwot
ICAgICAgICBsZXQgcmVzdWx0ID0gdGhpcy5fYXJyYXk7Ci0gICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgcGFyYW1ldGVycy5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgbGV0IGluZGV4ID0g
TWF0aC5mbG9vcihwYXJhbWV0ZXJzW2ldKTsKLSAgICAgICAgICAgIGlmICghKGluZGV4ID49IHN0
YXRlLnByb2dyYW0uYmFzZSkgfHwgIShpbmRleCA8IHJlc3VsdC5sZW5ndGgpKQotICAgICAgICAg
ICAgICAgIHN0YXRlLmFib3J0KCJJbmRleCBvdXQgb2YgYm91bmRzOiAiICsgaW5kZXgpOwotICAg
ICAgICAgICAgcmVzdWx0ID0gcmVzdWx0W2luZGV4XTsKLSAgICAgICAgfQotICAgICAgICByZXR1
cm4gcmVzdWx0OwotICAgIH0KLX0KLQotY2xhc3MgTnVtYmVyRnVuY3Rpb24gewotICAgIGNvbnN0
cnVjdG9yKHBhcmFtZXRlcnMsIGNvZGUpCi0gICAgewotICAgICAgICB0aGlzLl9wYXJhbWV0ZXJz
ID0gcGFyYW1ldGVyczsKLSAgICAgICAgdGhpcy5fY29kZSA9IGNvZGU7Ci0gICAgfQotICAgIAot
ICAgIGFwcGx5KHN0YXRlLCBwYXJhbWV0ZXJzKQotICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX3Bh
cmFtZXRlcnMubGVuZ3RoICE9IHBhcmFtZXRlcnMubGVuZ3RoKQotICAgICAgICAgICAgc3RhdGUu
YWJvcnQoIkV4cGVjdGVkICIgKyB0aGlzLl9wYXJhbWV0ZXJzLmxlbmd0aCArICIgYXJndW1lbnRz
IGJ1dCAiICsgcGFyYW1ldGVycy5sZW5ndGggKyAiIHdlcmUgcGFzc2VkIik7Ci0gICAgICAgIGxl
dCBvbGRWYWx1ZXMgPSBzdGF0ZS52YWx1ZXM7Ci0gICAgICAgIHN0YXRlLnZhbHVlcyA9IG5ldyBN
YXAob2xkVmFsdWVzKTsKLSAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwYXJhbWV0ZXJzLmxl
bmd0aDsgKytpKQotICAgICAgICAgICAgc3RhdGUudmFsdWVzLnNldCh0aGlzLl9wYXJhbWV0ZXJz
W2ldLCBwYXJhbWV0ZXJzW2ldKTsKLSAgICAgICAgbGV0IHJlc3VsdCA9IHRoaXMuY29kZS5ldmFs
dWF0ZShzdGF0ZSk7Ci0gICAgICAgIHN0YXRlLnZhbHVlcyA9IG9sZFZhbHVlczsKLSAgICAgICAg
cmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0gICAgCi0gICAgbGVmdEFwcGx5KHN0YXRlLCBwYXJhbWV0
ZXJzKQotICAgIHsKLSAgICAgICAgc3RhdGUuYWJvcnQoIkNhbm5vdCB1c2UgYSBmdW5jdGlvbiBh
cyBhbiBsdmFsdWUiKTsKLSAgICB9Ci19Ci0KLWNsYXNzIE5hdGl2ZUZ1bmN0aW9uIHsKLSAgICBj
b25zdHJ1Y3RvcihjYWxsYmFjaykKLSAgICB7Ci0gICAgICAgIHRoaXMuX2NhbGxiYWNrID0gY2Fs
bGJhY2s7Ci0gICAgfQotICAgIAotICAgIGFwcGx5KHN0YXRlLCBwYXJhbWV0ZXJzKQotICAgIHsK
LSAgICAgICAgaWYgKHRoaXMuX2NhbGxiYWNrLmxlbmd0aCAhPSBwYXJhbWV0ZXJzLmxlbmd0aCkK
LSAgICAgICAgICAgIHN0YXRlLmFib3J0KCJFeHBlY3RlZCAiICsgdGhpcy5fY2FsbGJhY2subGVu
Z3RoICsgIiBhcmd1bWVudHMgYnV0ICIgKyBwYXJhbWV0ZXJzLmxlbmd0aCArICIgd2VyZSBwYXNz
ZWQiKTsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2NhbGxiYWNrKC4uLnBhcmFtZXRlcnMpOwotICAg
IH0KLSAgICAKLSAgICBsZWZ0QXBwbHkoc3RhdGUsIHBhcmFtZXRlcnMpCi0gICAgewotICAgICAg
ICBzdGF0ZS5hYm9ydCgiQ2Fubm90IHVzZSBhIG5hdGl2ZSBmdW5jdGlvbiBhcyBhbiBsdmFsdWUi
KTsKLSAgICB9Ci19Ci0KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvUmV4QmVuY2gvQmFzaWMvcGFy
c2VyLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvUmV4QmVuY2gvQmFzaWMvcGFy
c2VyLmpzCShyZXZpc2lvbiAyMjQwNzQpCisrKyBQZXJmb3JtYW5jZVRlc3RzL1JleEJlbmNoL0Jh
c2ljL3BhcnNlci5qcwkobm9uZXhpc3RlbnQpCkBAIC0xLDU1OCArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLSJ1c2Ugc3RyaWN0IjsKLQot
ZnVuY3Rpb24gcGFyc2UodG9rZW5pemVyKQotewotICAgIGxldCBwcm9ncmFtOwotICAgIAotICAg
IGxldCBwdXNoQmFja0J1ZmZlciA9IFtdOwotICAgIAotICAgIGZ1bmN0aW9uIG5leHRUb2tlbigp
Ci0gICAgewotICAgICAgICBpZiAocHVzaEJhY2tCdWZmZXIubGVuZ3RoKQotICAgICAgICAgICAg
cmV0dXJuIHB1c2hCYWNrQnVmZmVyLnBvcCgpOwotICAgICAgICBsZXQgcmVzdWx0ID0gdG9rZW5p
emVyLm5leHQoKTsKLSAgICAgICAgaWYgKHJlc3VsdC5kb25lKQotICAgICAgICAgICAgcmV0dXJu
IHtraW5kOiAiZW5kT2ZGaWxlIiwgc3RyaW5nOiAiPGVuZCBvZiBmaWxlPiJ9OwotICAgICAgICBy
ZXR1cm4gcmVzdWx0LnZhbHVlOwotICAgIH0KLSAgICAKLSAgICBmdW5jdGlvbiBwdXNoVG9rZW4o
dG9rZW4pCi0gICAgewotICAgICAgICBwdXNoQmFja0J1ZmZlci5wdXNoKHRva2VuKTsKLSAgICB9
Ci0gICAgCi0gICAgZnVuY3Rpb24gcGVla1Rva2VuKCkKLSAgICB7Ci0gICAgICAgIGxldCByZXN1
bHQgPSBuZXh0VG9rZW4oKTsKLSAgICAgICAgcHVzaFRva2VuKHJlc3VsdCk7Ci0gICAgICAgIHJl
dHVybiByZXN1bHQ7Ci0gICAgfQotICAgIAotICAgIGZ1bmN0aW9uIGNvbnN1bWVLaW5kKGtpbmQp
Ci0gICAgewotICAgICAgICBsZXQgdG9rZW4gPSBuZXh0VG9rZW4oKTsKLSAgICAgICAgaWYgKHRv
a2VuLmtpbmQgIT0ga2luZCkgewotICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJBdCAiICsg
dG9rZW4uc291cmNlTGluZU51bWJlciArICI6IGV4cGVjdGVkICIgKyBraW5kICsgIiBidXQgZ290
OiAiICsgdG9rZW4uc3RyaW5nKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdG9rZW47Ci0g
ICAgfQotICAgIAotICAgIGZ1bmN0aW9uIGNvbnN1bWVUb2tlbihzdHJpbmcpCi0gICAgewotICAg
ICAgICBsZXQgdG9rZW4gPSBuZXh0VG9rZW4oKTsKLSAgICAgICAgaWYgKHRva2VuLnN0cmluZy50
b0xvd2VyQ2FzZSgpICE9IHN0cmluZy50b0xvd2VyQ2FzZSgpKQotICAgICAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCJBdCAiICsgdG9rZW4uc291cmNlTGluZU51bWJlciArICI6IGV4cGVjdGVkICIg
KyBzdHJpbmcgKyAiIGJ1dCBnb3Q6ICIgKyB0b2tlbi5zdHJpbmcpOwotICAgICAgICByZXR1cm4g
dG9rZW47Ci0gICAgfQotICAgIAotICAgIGZ1bmN0aW9uIHBhcnNlVmFyaWFibGUoKQotICAgIHsK
LSAgICAgICAgbGV0IG5hbWUgPSBjb25zdW1lS2luZCgiaWRlbnRpZmllciIpLnN0cmluZzsKLSAg
ICAgICAgbGV0IHJlc3VsdCA9IHtldmFsdWF0ZTogQmFzaWMuVmFyaWFibGUsIG5hbWUsIHBhcmFt
ZXRlcnM6IFtdfTsKLSAgICAgICAgaWYgKHBlZWtUb2tlbigpLnN0cmluZyA9PSAiKCIpIHsKLSAg
ICAgICAgICAgIGRvIHsKLSAgICAgICAgICAgICAgICBuZXh0VG9rZW4oKTsKLSAgICAgICAgICAg
ICAgICByZXN1bHQucGFyYW1ldGVycy5wdXNoKHBhcnNlTnVtZXJpY0V4cHJlc3Npb24oKSk7Ci0g
ICAgICAgICAgICB9IHdoaWxlIChwZWVrVG9rZW4oKS5zdHJpbmcgPT0gIiwiKTsKLSAgICAgICAg
ICAgIGNvbnN1bWVUb2tlbigiKSIpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiByZXN1bHQ7
Ci0gICAgfQotICAgIAotICAgIGZ1bmN0aW9uIHBhcnNlTnVtZXJpY0V4cHJlc3Npb24oKQotICAg
IHsKLSAgICAgICAgZnVuY3Rpb24gcGFyc2VQcmltYXJ5KCkKLSAgICAgICAgewotICAgICAgICAg
ICAgbGV0IHRva2VuID0gbmV4dFRva2VuKCk7Ci0gICAgICAgICAgICBzd2l0Y2ggKHRva2VuLmtp
bmQpIHsKLSAgICAgICAgICAgIGNhc2UgImlkZW50aWZpZXIiOiB7Ci0gICAgICAgICAgICAgICAg
bGV0IHJlc3VsdCA9IHtldmFsdWF0ZTogQmFzaWMuTnVtYmVyQXBwbHksIG5hbWU6IHRva2VuLnN0
cmluZywgcGFyYW1ldGVyczogW119OwotICAgICAgICAgICAgICAgIGlmIChwZWVrVG9rZW4oKS5z
dHJpbmcgPT0gIigiKSB7Ci0gICAgICAgICAgICAgICAgICAgIGRvIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIG5leHRUb2tlbigpOwotICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnBh
cmFtZXRlcnMucHVzaChwYXJzZU51bWVyaWNFeHByZXNzaW9uKCkpOwotICAgICAgICAgICAgICAg
ICAgICB9IHdoaWxlIChwZWVrVG9rZW4oKS5zdHJpbmcgPT0gIiwiKTsKLSAgICAgICAgICAgICAg
ICAgICAgY29uc3VtZVRva2VuKCIpIik7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgCi0gICAg
ICAgICAgICBjYXNlICJudW1iZXIiOgotICAgICAgICAgICAgICAgIHJldHVybiB7ZXZhbHVhdGU6
IEJhc2ljLkNvbnN0LCB2YWx1ZTogdG9rZW4udmFsdWV9OwotICAgICAgICAgICAgICAgIAotICAg
ICAgICAgICAgY2FzZSAib3BlcmF0b3IiOgotICAgICAgICAgICAgICAgIHN3aXRjaCAodG9rZW4u
c3RyaW5nKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSAiKCI6IHsKLSAgICAgICAgICAgICAgICAg
ICAgbGV0IHJlc3VsdCA9IHBhcnNlTnVtZXJpY0V4cHJlc3Npb24oKTsKLSAgICAgICAgICAgICAg
ICAgICAgY29uc3VtZVRva2VuKCIpIik7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1
bHQ7Ci0gICAgICAgICAgICAgICAgfSB9Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkF0ICIgKyB0b2tlbi5zb3VyY2VM
aW5lTnVtYmVyICsgIjogZXhwZWN0ZWQgaWRlbnRpZmllciwgbnVtYmVyLCBvciAoLCBidXQgZ290
OiAiICsgdG9rZW4uc3RyaW5nKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgZnVuY3Rp
b24gcGFyc2VGYWN0b3IoKQotICAgICAgICB7Ci0gICAgICAgICAgICBsZXQgcHJpbWFyeSA9IHBh
cnNlUHJpbWFyeSgpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBsZXQgb2sgPSB0cnVlOwot
ICAgICAgICAgICAgd2hpbGUgKG9rKSB7Ci0gICAgICAgICAgICAgICAgc3dpdGNoIChwZWVrVG9r
ZW4oKS5zdHJpbmcpIHsKLSAgICAgICAgICAgICAgICBjYXNlICJeIjoKLSAgICAgICAgICAgICAg
ICAgICAgbmV4dFRva2VuKCk7Ci0gICAgICAgICAgICAgICAgICAgIHByaW1hcnkgPSB7ZXZhbHVh
dGU6IEJhc2ljLk51bWJlclBvdywgbGVmdDogcHJpbWFyeSwgcmlnaHQ6IHBhcnNlUHJpbWFyeSgp
fTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgZGVmYXVsdDoK
LSAgICAgICAgICAgICAgICAgICAgb2sgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAg
ICAgICAgICByZXR1cm4gcHJpbWFyeTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgZnVu
Y3Rpb24gcGFyc2VUZXJtKCkKLSAgICAgICAgewotICAgICAgICAgICAgbGV0IGZhY3RvciA9IHBh
cnNlRmFjdG9yKCk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGxldCBvayA9IHRydWU7Ci0g
ICAgICAgICAgICB3aGlsZSAob2spIHsKLSAgICAgICAgICAgICAgICBzd2l0Y2ggKHBlZWtUb2tl
bigpLnN0cmluZykgewotICAgICAgICAgICAgICAgIGNhc2UgIioiOgotICAgICAgICAgICAgICAg
ICAgICBuZXh0VG9rZW4oKTsKLSAgICAgICAgICAgICAgICAgICAgZmFjdG9yID0ge2V2YWx1YXRl
OiBCYXNpYy5OdW1iZXJNdWwsIGxlZnQ6IGZhY3RvciwgcmlnaHQ6IHBhcnNlRmFjdG9yKCl9Owot
ICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlICIvIjoKLSAg
ICAgICAgICAgICAgICAgICAgbmV4dFRva2VuKCk7Ci0gICAgICAgICAgICAgICAgICAgIGZhY3Rv
ciA9IHtldmFsdWF0ZTogQmFzaWMuTnVtYmVyRGl2LCBsZWZ0OiBmYWN0b3IsIHJpZ2h0OiBwYXJz
ZUZhY3RvcigpfTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
ZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgb2sgPSBmYWxzZTsKLSAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgCi0gICAgICAgICAgICByZXR1cm4gZmFjdG9yOwotICAgICAgICB9Ci0gICAgICAgIAotICAg
ICAgICAvLyBPbmx5IHRoZSBsZWFkaW5nIHRlcm0gaW4gQmFzaWMgY2FuIGhhdmUgYSBzaWduLgot
ICAgICAgICBsZXQgbmVnYXRlID0gZmFsc2U7Ci0gICAgICAgIHN3aXRjaCAocGVla1Rva2VuKCku
c3RyaW5nKSB7Ci0gICAgICAgIGNhc2UgIisiOgotICAgICAgICAgICAgbmV4dFRva2VuKCk7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSAiLSI6Ci0gICAgICAgICAgICBuZWdhdGUg
PSB0cnVlOwotICAgICAgICAgICAgbmV4dFRva2VuKCkKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICB9Ci0gICAgICAgIAotICAgICAgICBsZXQgdGVybSA9IHBhcnNlVGVybSgpOwotICAgICAg
ICBpZiAobmVnYXRlKQotICAgICAgICAgICAgdGVybSA9IHtldmFsdWF0ZTogQmFzaWMuTnVtYmVy
TmVnLCB0ZXJtOiB0ZXJtfTsKLSAgICAgICAgCi0gICAgICAgIGxldCBvayA9IHRydWU7Ci0gICAg
ICAgIHdoaWxlIChvaykgewotICAgICAgICAgICAgc3dpdGNoIChwZWVrVG9rZW4oKS5zdHJpbmcp
IHsKLSAgICAgICAgICAgIGNhc2UgIisiOgotICAgICAgICAgICAgICAgIG5leHRUb2tlbigpOwot
ICAgICAgICAgICAgICAgIHRlcm0gPSB7ZXZhbHVhdGU6IEJhc2ljLk51bWJlckFkZCwgbGVmdDog
dGVybSwgcmlnaHQ6IHBhcnNlVGVybSgpfTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIGNhc2UgIi0iOgotICAgICAgICAgICAgICAgIG5leHRUb2tlbigpOwotICAgICAgICAg
ICAgICAgIHRlcm0gPSB7ZXZhbHVhdGU6IEJhc2ljLk51bWJlclN1YiwgbGVmdDogdGVybSwgcmln
aHQ6IHBhcnNlVGVybSgpfTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGRl
ZmF1bHQ6Ci0gICAgICAgICAgICAgICAgb2sgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgcmV0dXJuIHRl
cm07Ci0gICAgfQotICAgIAotICAgIGZ1bmN0aW9uIHBhcnNlQ29uc3RhbnQoKQotICAgIHsKLSAg
ICAgICAgc3dpdGNoIChwZWVrVG9rZW4oKS5zdHJpbmcpIHsKLSAgICAgICAgY2FzZSAiKyI6Ci0g
ICAgICAgICAgICBuZXh0VG9rZW4oKTsKLSAgICAgICAgICAgIHJldHVybiBjb25zdW1lS2luZCgi
bnVtYmVyIikudmFsdWU7Ci0gICAgICAgIGNhc2UgIi0iOgotICAgICAgICAgICAgbmV4dFRva2Vu
KCk7Ci0gICAgICAgICAgICByZXR1cm4gLWNvbnN1bWVLaW5kKCJudW1iZXIiKS52YWx1ZTsKLSAg
ICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGlmIChpc1N0cmluZ0V4cHJlc3Npb24oKSkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gY29uc3VtZUtpbmQoInN0cmluZyIpLnZhbHVlOwotICAgICAg
ICAgICAgcmV0dXJuIGNvbnN1bWVLaW5kKCJudW1iZXIiKS52YWx1ZTsKLSAgICAgICAgfQotICAg
IH0KLSAgICAKLSAgICBmdW5jdGlvbiBwYXJzZVN0cmluZ0V4cHJlc3Npb24oKQotICAgIHsKLSAg
ICAgICAgbGV0IHRva2VuID0gbmV4dFRva2VuKCk7Ci0gICAgICAgIHN3aXRjaCAodG9rZW4ua2lu
ZCkgewotICAgICAgICBjYXNlICJzdHJpbmciOgotICAgICAgICAgICAgcmV0dXJuIHtldmFsdWF0
ZTogQmFzaWMuQ29uc3QsIHZhbHVlOiB0b2tlbi52YWx1ZX07Ci0gICAgICAgIGNhc2UgImlkZW50
aWZpZXIiOgotICAgICAgICAgICAgY29uc3VtZVRva2VuKCIkIik7Ci0gICAgICAgICAgICByZXR1
cm4ge2V2YWx1YXRlOiBCYXNpYy5TdHJpbmdWYXIsIG5hbWU6IHRva2VuLnN0cmluZ307Ci0gICAg
ICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkF0ICIgKyB0b2tlbi5z
b3VyY2VMaW5lTnVtYmVyICsgIjogZXhwZWN0ZWQgc3RyaW5nIGV4cHJlc3Npb24gYnV0IGdvdCAi
ICsgdG9rZW4uc3RyaW5nKTsKLSAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICBmdW5jdGlvbiBp
c1N0cmluZ0V4cHJlc3Npb24oKQotICAgIHsKLSAgICAgICAgLy8gQSBzdHJpbmcgZXhwcmVzc2lv
biBtdXN0IHN0YXJ0IHdpdGggYSBzdHJpbmcgdmFyaWFibGUgb3IgYSBzdHJpbmcgY29uc3RhbnQu
Ci0gICAgICAgIGxldCB0b2tlbiA9IG5leHRUb2tlbigpOwotICAgICAgICBpZiAodG9rZW4ua2lu
ZCA9PSAic3RyaW5nIikgewotICAgICAgICAgICAgcHVzaFRva2VuKHRva2VuKTsKLSAgICAgICAg
ICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIGlmICh0b2tlbi5raW5kID09ICJp
ZGVudGlmaWVyIikgewotICAgICAgICAgICAgbGV0IHJlc3VsdCA9IHBlZWtUb2tlbigpLnN0cmlu
ZyA9PSAiJCI7Ci0gICAgICAgICAgICBwdXNoVG9rZW4odG9rZW4pOwotICAgICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKLSAgICAgICAgfQotICAgICAgICBwdXNoVG9rZW4odG9rZW4pOwotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIAotICAgIGZ1bmN0aW9uIHBhcnNlUmVsYXRpb25h
bEV4cHJlc3Npb24oKQotICAgIHsKLSAgICAgICAgaWYgKGlzU3RyaW5nRXhwcmVzc2lvbigpKSB7
Ci0gICAgICAgICAgICBsZXQgbGVmdCA9IHBhcnNlU3RyaW5nRXhwcmVzc2lvbigpOwotICAgICAg
ICAgICAgbGV0IG9wZXJhdG9yID0gbmV4dFRva2VuKCk7Ci0gICAgICAgICAgICBsZXQgZXZhbHVh
dGU7Ci0gICAgICAgICAgICBzd2l0Y2ggKG9wZXJhdG9yLnN0cmluZykgewotICAgICAgICAgICAg
Y2FzZSAiPSI6Ci0gICAgICAgICAgICAgICAgZXZhbHVhdGUgPSBCYXNpYy5FcXVhbHM7Ci0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlICI8PiI6Ci0gICAgICAgICAgICAg
ICAgZXZhbHVhdGUgPSBCYXNpYy5Ob3RFcXVhbHM7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiQXQg
IiArIG9wZXJhdG9yLnNvdXJjZUxpbmVOdW1iZXIgKyAiOiBleHBlY3RlZCBhIHN0cmluZyBjb21w
YXJpc29uIG9wZXJhdG9yIGJ1dCBnb3Q6ICIgKyBvcGVyYXRvci5zdHJpbmcpOwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgcmV0dXJuIHtldmFsdWF0ZSwgbGVmdCwgcmlnaHQ6IHBhcnNlU3Ry
aW5nRXhwcmVzc2lvbigpfTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgbGV0IGxlZnQg
PSBwYXJzZU51bWVyaWNFeHByZXNzaW9uKCk7Ci0gICAgICAgIGxldCBvcGVyYXRvciA9IG5leHRU
b2tlbigpOwotICAgICAgICBsZXQgZXZhbHVhdGU7Ci0gICAgICAgIHN3aXRjaCAob3BlcmF0b3Iu
c3RyaW5nKSB7Ci0gICAgICAgIGNhc2UgIj0iOgotICAgICAgICAgICAgZXZhbHVhdGUgPSBCYXNp
Yy5FcXVhbHM7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSAiPD4iOgotICAgICAg
ICAgICAgZXZhbHVhdGUgPSBCYXNpYy5Ob3RFcXVhbHM7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSAiPCI6Ci0gICAgICAgICAgICBldmFsdWF0ZSA9IEJhc2ljLkxlc3NUaGFuOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgIj4iOgotICAgICAgICAgICAgZXZhbHVh
dGUgPSBCYXNpYy5HcmVhdGVyVGhhbjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNl
ICI8PSI6Ci0gICAgICAgICAgICBldmFsdWF0ZSA9IEJhc2ljLkxlc3NFcXVhbDsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBjYXNlICI+PSI6Ci0gICAgICAgICAgICBldmFsdWF0ZSA9IEJh
c2ljLkdyZWF0ZXJFcXVhbDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0Ogot
ICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJBdCAiICsgb3BlcmF0b3Iuc291cmNlTGluZU51
bWJlciArICI6IGV4cGVjdGVkIGEgbnVtZXJpYyBjb21wYXJpc29uIG9wZXJhdG9yIGJ1dCBnb3Q6
ICIgKyBvcGVyYXRvci5zdHJpbmcpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB7ZXZhbHVh
dGUsIGxlZnQsIHJpZ2h0OiBwYXJzZU51bWVyaWNFeHByZXNzaW9uKCl9OwotICAgIH0KLSAgICAK
LSAgICBmdW5jdGlvbiBwYXJzZU5vbk5lZ2F0aXZlSW50ZWdlcigpCi0gICAgewotICAgICAgICBs
ZXQgdG9rZW4gPSBuZXh0VG9rZW4oKTsKLSAgICAgICAgaWYgKCEvXlswLTldKyQvLnRlc3QodG9r
ZW4uc3RyaW5nKSkKLSAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiQXQgIiwgdG9rZW4uc291
cmNlTGluZU51bWJlciArICI6IGV4cGVjdGVkIGEgbGluZSBudW1iZXIgYnV0IGdvdDogIiArIHRv
a2VuLnN0cmluZyk7Ci0gICAgICAgIHJldHVybiB0b2tlbi52YWx1ZTsKLSAgICB9Ci0gICAgCi0g
ICAgZnVuY3Rpb24gcGFyc2VHb1RvU3RhdGVtZW50KCkKLSAgICB7Ci0gICAgICAgIHN0YXRlbWVu
dC5raW5kID0gQmFzaWMuR29UbzsKLSAgICAgICAgc3RhdGVtZW50LnRhcmdldCA9IHBhcnNlTm9u
TmVnYXRpdmVJbnRlZ2VyKCk7Ci0gICAgfQotICAgIAotICAgIGZ1bmN0aW9uIHBhcnNlR29TdWJT
dGF0ZW1lbnQoKQotICAgIHsKLSAgICAgICAgc3RhdGVtZW50LmtpbmQgPSBCYXNpYy5Hb1N1YjsK
LSAgICAgICAgc3RhdGVtZW50LnRhcmdldCA9IHBhcnNlTm9uTmVnYXRpdmVJbnRlZ2VyKCk7Ci0g
ICAgfQotICAgIAotICAgIGZ1bmN0aW9uIHBhcnNlU3RhdGVtZW50KCkKLSAgICB7Ci0gICAgICAg
IGxldCBzdGF0ZW1lbnQgPSB7fTsKLSAgICAgICAgc3RhdGVtZW50LmxpbmVOdW1iZXIgPSBjb25z
dW1lS2luZCgidXNlckxpbmVOdW1iZXIiKS51c2VyTGluZU51bWJlcjsKLSAgICAgICAgcHJvZ3Jh
bS5zdGF0ZW1lbnRzLnNldChzdGF0ZW1lbnQubGluZU51bWJlciwgc3RhdGVtZW50KTsKLSAgICAg
ICAgCi0gICAgICAgIGxldCBjb21tYW5kID0gbmV4dFRva2VuKCk7Ci0gICAgICAgIHN0YXRlbWVu
dC5zb3VyY2VMaW5lTnVtYmVyID0gY29tbWFuZC5zb3VyY2VMaW5lTnVtYmVyOwotICAgICAgICBz
d2l0Y2ggKGNvbW1hbmQua2luZCkgewotICAgICAgICBjYXNlICJrZXl3b3JkIjoKLSAgICAgICAg
ICAgIHN3aXRjaCAoY29tbWFuZC5zdHJpbmcudG9Mb3dlckNhc2UoKSkgewotICAgICAgICAgICAg
Y2FzZSAiZGVmIjoKLSAgICAgICAgICAgICAgICBzdGF0ZW1lbnQucHJvY2VzcyA9IEJhc2ljLkRl
ZjsKLSAgICAgICAgICAgICAgICBzdGF0ZW1lbnQubmFtZSA9IGNvbnN1bWVLaW5kKCJpZGVudGlm
aWVyIik7Ci0gICAgICAgICAgICAgICAgc3RhdGVtZW50LnBhcmFtZXRlcnMgPSBbXTsKLSAgICAg
ICAgICAgICAgICBpZiAocGVla1Rva2VuKCkuc3RyaW5nID09ICIoIikgewotICAgICAgICAgICAg
ICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBuZXh0VG9rZW4oKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHN0YXRlbWVudC5wYXJhbWV0ZXJzLnB1c2goY29uc3VtZUtpbmQo
ImlkZW50aWZpZXIiKSk7Ci0gICAgICAgICAgICAgICAgICAgIH0gd2hpbGUgKHBlZWtUb2tlbigp
LnN0cmluZyA9PSAiLCIpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBzdGF0
ZW1lbnQuZXhwcmVzc2lvbiA9IHBhcnNlTnVtZXJpY0V4cHJlc3Npb24oKTsKLSAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgImxldCI6Ci0gICAgICAgICAgICAgICAgc3Rh
dGVtZW50LnByb2Nlc3MgPSBCYXNpYy5MZXQ7Ci0gICAgICAgICAgICAgICAgc3RhdGVtZW50LnZh
cmlhYmxlID0gcGFyc2VWYXJpYWJsZSgpOwotICAgICAgICAgICAgICAgIGNvbnN1bWVUb2tlbigi
PSIpOwotICAgICAgICAgICAgICAgIGlmIChzdGF0ZW1lbnQucHJvY2VzcyA9PSBCYXNpYy5MZXQp
Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRlbWVudC5leHByZXNzaW9uID0gcGFyc2VOdW1lcmlj
RXhwcmVzc2lvbigpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAg
c3RhdGVtZW50LmV4cHJlc3Npb24gPSBwYXJzZVN0cmluZ0V4cHJlc3Npb24oKTsKLSAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgImdvIjogewotICAgICAgICAgICAgICAg
IGxldCBuZXh0ID0gbmV4dFRva2VuKCk7Ci0gICAgICAgICAgICAgICAgaWYgKG5leHQuc3RyaW5n
ID09ICJ0byIpCi0gICAgICAgICAgICAgICAgICAgIHBhcnNlR29Ub1N0YXRlbWVudCgpOwotICAg
ICAgICAgICAgICAgIGVsc2UgaWYgKG5leHQuc3RyaW5nID09ICJzdWIiKQotICAgICAgICAgICAg
ICAgICAgICBwYXJzZUdvU3ViU3RhdGVtZW50KCk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkF0ICIgKyBuZXh0LnNvdXJjZUxpbmVO
dW1iZXIgKyAiOiBleHBlY3RlZCB0byBvciBzdWIgYnV0IGdvdDogIiArIG5leHQuc3RyaW5nKTsK
LSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNhc2Ug
ImdvdG8iOgotICAgICAgICAgICAgICAgIHBhcnNlR29Ub1N0YXRlbWVudCgpOwotICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSAiZ29zdWIiOgotICAgICAgICAgICAgICAg
IHBhcnNlR29TdWJTdGF0ZW1lbnQoKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgIGNhc2UgImlmIjoKLSAgICAgICAgICAgICAgICBzdGF0ZW1lbnQucHJvY2VzcyA9IEJhc2lj
LklmOwotICAgICAgICAgICAgICAgIHN0YXRlbWVudC5jb25kaXRpb24gPSBwYXJzZVJlbGF0aW9u
YWxFeHByZXNzaW9uKCk7Ci0gICAgICAgICAgICAgICAgY29uc3VtZVRva2VuKCJ0aGVuIik7Ci0g
ICAgICAgICAgICAgICAgc3RhdGVtZW50LnRhcmdldCA9IHBhcnNlTm9uTmVnYXRpdmVJbnRlZ2Vy
KCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlICJyZXR1cm4iOgot
ICAgICAgICAgICAgICAgIHN0YXRlbWVudC5wcm9jZXNzID0gQmFzaWMuUmV0dXJuOwotICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSAic3RvcCI6Ci0gICAgICAgICAgICAg
ICAgc3RhdGVtZW50LnByb2Nlc3MgPSBCYXNpYy5TdG9wOwotICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgY2FzZSAib24iOgotICAgICAgICAgICAgICAgIHN0YXRlbWVudC5wcm9j
ZXNzID0gQmFzaWMuT247Ci0gICAgICAgICAgICAgICAgc3RhdGVtZW50LmV4cHJlc3Npb24gPSBw
YXJzZU51bWVyaWNFeHByZXNzaW9uKCk7Ci0gICAgICAgICAgICAgICAgaWYgKHBlZWtUb2tlbigp
LnN0cmluZyA9PSAiZ28iKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnN1bWVUb2tlbigiZ28i
KTsKLSAgICAgICAgICAgICAgICAgICAgY29uc3VtZVRva2VuKCJ0byIpOwotICAgICAgICAgICAg
ICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAgICBjb25zdW1lVG9rZW4oImdvdG8iKTsKLSAg
ICAgICAgICAgICAgICBzdGF0ZW1lbnQudGFyZ2V0cyA9IFtdOwotICAgICAgICAgICAgICAgIGZv
ciAoOzspIHsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGVtZW50LnRhcmdldHMucHVzaChwYXJz
ZU5vbk5lZ2F0aXZlSW50ZWdlcigpKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHBlZWtUb2tl
bigpLnN0cmluZyAhPSAiLCIpCi0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgICAgICAgICAgbmV4dFRva2VuKCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSAiZm9yIjoKLSAgICAgICAgICAgICAgICBz
dGF0ZW1lbnQucHJvY2VzcyA9IEJhc2ljLkZvcjsKLSAgICAgICAgICAgICAgICBzdGF0ZW1lbnQu
dmFyaWFibGUgPSBjb25zdW1lS2luZCgiaWRlbnRpZmllciIpLnN0cmluZzsKLSAgICAgICAgICAg
ICAgICBjb25zdW1lVG9rZW4oIj0iKTsKLSAgICAgICAgICAgICAgICBzdGF0ZW1lbnQuaW5pdGlh
bCA9IHBhcnNlTnVtZXJpY0V4cHJlc3Npb24oKTsKLSAgICAgICAgICAgICAgICBjb25zdW1lVG9r
ZW4oInRvIik7Ci0gICAgICAgICAgICAgICAgc3RhdGVtZW50LmxpbWl0ID0gcGFyc2VOdW1lcmlj
RXhwcmVzc2lvbigpOwotICAgICAgICAgICAgICAgIGlmIChwZWVrVG9rZW4oKS5zdHJpbmcgPT0g
InN0ZXAiKSB7Ci0gICAgICAgICAgICAgICAgICAgIG5leHRUb2tlbigpOwotICAgICAgICAgICAg
ICAgICAgICBzdGF0ZW1lbnQuc3RlcCA9IHBhcnNlTnVtZXJpY0V4cHJlc3Npb24oKTsKLSAgICAg
ICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgc3RhdGVtZW50LnN0ZXAgPSB7
ZXZhbHVhdGU6IEJhc2ljLkNvbnN0LCB2YWx1ZTogMX07Ci0gICAgICAgICAgICAgICAgY29uc3Vt
ZUtpbmQoIm5ld0xpbmUiKTsKLSAgICAgICAgICAgICAgICBsZXQgbGFzdFN0YXRlbWVudCA9IHBh
cnNlU3RhdGVtZW50cygpOwotICAgICAgICAgICAgICAgIGlmIChsYXN0U3RhdGVtZW50LnByb2Nl
c3MgIT0gQmFzaWMuTmV4dCkKLSAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJB
dCAiICsgbGFzdFN0YXRlbWVudC5zb3VyY2VMaW5lTnVtYmVyICsgIjogZXhwZWN0ZWQgbmV4dCBz
dGF0ZW1lbnQiKTsKLSAgICAgICAgICAgICAgICBpZiAobGFzdFN0YXRlbWVudC52YXJpYWJsZSAh
PSBzdGF0ZW1lbnQudmFyaWFibGUpCi0gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJv
cigiQXQgIiArIGxhc3RTdGF0ZW1lbnQuc291cmNlTGluZU51bWJlciArICI6IGV4cGVjdGVkIG5l
eHQgZm9yICIgKyBzdGF0ZW1lbnQudmFyaWFibGUgKyAiIGJ1dCBnb3QgIiArIGxhc3RTdGF0ZW1l
bnQudmFyaWFibGUpOwotICAgICAgICAgICAgICAgIGxhc3RTdGF0ZW1lbnQudGFyZ2V0ID0gc3Rh
dGVtZW50OwotICAgICAgICAgICAgICAgIHN0YXRlbWVudC50YXJnZXQgPSBsYXN0U3RhdGVtZW50
OwotICAgICAgICAgICAgICAgIHJldHVybiBzdGF0ZW1lbnQ7Ci0gICAgICAgICAgICBjYXNlICJu
ZXh0IjoKLSAgICAgICAgICAgICAgICBzdGF0ZW1lbnQucHJvY2VzcyA9IEJhc2ljLk5leHQ7Ci0g
ICAgICAgICAgICAgICAgc3RhdGVtZW50LnZhcmlhYmxlID0gY29uc3VtZUtpbmQoImlkZW50aWZp
ZXIiKS5zdHJpbmc7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlICJw
cmludCI6IHsKLSAgICAgICAgICAgICAgICBzdGF0ZW1lbnQucHJvY2VzcyA9IEJhc2ljLlByaW50
OwotICAgICAgICAgICAgICAgIHN0YXRlbWVudC5pdGVtcyA9IFtdOwotICAgICAgICAgICAgICAg
IGxldCBvayA9IHRydWU7Ci0gICAgICAgICAgICAgICAgd2hpbGUgKG9rKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIHN3aXRjaCAocGVla1Rva2VuKCkuc3RyaW5nKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGNhc2UgIiwiOgotICAgICAgICAgICAgICAgICAgICAgICAgbmV4dFRva2VuKCk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBzdGF0ZW1lbnQuaXRlbXMucHVzaCh7a2luZDogImNvbW1hIn0p
OwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNh
c2UgIjsiOgotICAgICAgICAgICAgICAgICAgICAgICAgbmV4dFRva2VuKCk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAidGFiIjoKLSAg
ICAgICAgICAgICAgICAgICAgICAgIG5leHRUb2tlbigpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3VtZVRva2VuKCIoIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZW1lbnQu
aXRlbXMucHVzaCh7a2luZDogInRhYiIsIHZhbHVlOiBwYXJzZU51bWVyaWNFeHByZXNzaW9uKCl9
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBj
YXNlICJcbiI6Ci0gICAgICAgICAgICAgICAgICAgICAgICBvayA9IGZhbHNlOwotICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoaXNTdHJpbmdFeHByZXNzaW9uKCkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdGF0ZW1lbnQuaXRlbXMucHVzaCh7a2luZDogInN0cmluZyIs
IHZhbHVlOiBwYXJzZVN0cmluZ0V4cHJlc3Npb24oKX0pOwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
ICAgICAgICAgc3RhdGVtZW50Lml0ZW1zLnB1c2goe2tpbmQ6ICJudW1iZXIiLCB2YWx1ZTogcGFy
c2VOdW1lcmljRXhwcmVzc2lvbigpfSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNhc2UgImlucHV0IjoKLSAgICAg
ICAgICAgICAgICBzdGF0ZW1lbnQucHJvY2VzcyA9IEJhc2ljLklucHV0OwotICAgICAgICAgICAg
ICAgIHN0YXRlbWVudC5pdGVtcyA9IFtdOwotICAgICAgICAgICAgICAgIGZvciAoOzspIHsKLSAg
ICAgICAgICAgICAgICAgICAgc3RhdGVtZW50Lml0ZW1zLnB1c2gocGFyc2VWYXJpYWJsZSgpKTsK
LSAgICAgICAgICAgICAgICAgICAgaWYgKHBlZWtUb2tlbigpLnN0cmluZyAhPSAiLCIpCi0gICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgbmV4dFRva2Vu
KCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgY2FzZSAicmVhZCI6Ci0gICAgICAgICAgICAgICAgc3RhdGVtZW50LnByb2Nlc3MgPSBCYXNp
Yy5SZWFkOwotICAgICAgICAgICAgICAgIHN0YXRlbWVudC5pdGVtcyA9IFtdOwotICAgICAgICAg
ICAgICAgIGZvciAoOzspIHsKLSAgICAgICAgICAgICAgICAgICAgc3RhbWVudC5pdGVtcy5wdXNo
KHBhcnNlVmFyaWFibGUoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChwZWVrVG9rZW4oKS5z
dHJpbmcgIT0gIiwiKQotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICAgICAgICAgIG5leHRUb2tlbigpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgInJlc3RvcmUiOgotICAgICAgICAgICAgICAgIHN0
YXRlbWVudC5wcm9jZXNzID0gQmFzaWMuUmVzdG9yZTsKLSAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgIGNhc2UgImRhdGEiOgotICAgICAgICAgICAgICAgIGZvciAoOzspIHsKLSAg
ICAgICAgICAgICAgICAgICAgcHJvZ3JhbS5kYXRhLnB1c2gocGFyc2VDb25zdGFudCgpKTsKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKHBlZWtUb2tlbigpLnN0cmluZyAhPSAiLCIpCi0gICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgbmV4dFRva2VuKCk7
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
Y2FzZSAiZGltIjoKLSAgICAgICAgICAgICAgICBzdGF0ZW1lbnQucHJvY2VzcyA9IEJhc2ljLkRp
bTsKLSAgICAgICAgICAgICAgICBzdGF0ZW1lbnQuaXRlbXMgPSBbXTsKLSAgICAgICAgICAgICAg
ICBmb3IgKDs7KSB7Ci0gICAgICAgICAgICAgICAgICAgIGxldCBuYW1lID0gY29uc3VtZUtpbmQo
ImlkZW50aWZpZXIiKS5zdHJpbmc7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnN1bWVUb2tlbigi
KCIpOwotICAgICAgICAgICAgICAgICAgICBsZXQgYm91bmRzID0gW107Ci0gICAgICAgICAgICAg
ICAgICAgIGJvdW5kcy5wdXNoKHBhcnNlTm9uTmVnYXRpdmVJbnRlZ2VyKCkpOwotICAgICAgICAg
ICAgICAgICAgICBpZiAocGVla1Rva2VuKCkuc3RyaW5nID09ICIsIikgewotICAgICAgICAgICAg
ICAgICAgICAgICAgbmV4dFRva2VuKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBib3VuZHMu
cHVzaChwYXJzZU5vbk5lZ2F0aXZlSW50ZWdlcigpKTsKLSAgICAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgICAgICBjb25zdW1lVG9rZW4oIikiKTsKLSAgICAgICAgICAgICAgICAg
ICAgc3RhdGVtZW50Lml0ZW1zLnB1c2goe25hbWUsIGJvdW5kc30pOwotICAgICAgICAgICAgICAg
ICAgICAKLSAgICAgICAgICAgICAgICAgICAgaWYgKHBlZWtUb2tlbigpLnN0cmluZyAhPSAiLCIp
Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY29u
c3VtZVRva2VuKCIsIik7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgY2FzZSAib3B0aW9uIjogewotICAgICAgICAgICAgICAgIGNvbnN1bWVU
b2tlbigiYmFzZSIpOwotICAgICAgICAgICAgICAgIGxldCBiYXNlID0gcGFyc2VOb25OZWdhdGl2
ZUludGVnZXIoKTsKLSAgICAgICAgICAgICAgICBpZiAoYmFzZSAhPSAwICYmIGJhc2UgIT0gMSkK
LSAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJBdCAiICsgY29tbWFuZC5zb3Vy
Y2VMaW5lTnVtYmVyICsgIjogdW5leHBlY3RlZCBiYXNlOiAiICsgYmFzZSk7Ci0gICAgICAgICAg
ICAgICAgcHJvZ3JhbS5iYXNlID0gYmFzZTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIGNhc2UgInJhbmRvbWl6ZSI6Ci0gICAgICAgICAgICAgICAg
c3RhdGVtZW50LnByb2Nlc3MgPSBCYXNpYy5SYW5kb21pemU7Ci0gICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICBjYXNlICJlbmQiOgotICAgICAgICAgICAgICAgIHN0YXRlbWVudC5w
cm9jZXNzID0gQmFzaWMuRW5kOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ZGVmYXVsdDoKLSAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkF0ICIgKyBjb21tYW5k
LnNvdXJjZUxpbmVOdW1iZXIgKyAiOiB1bmV4cGVjdGVkIGNvbW1hbmQgYnV0IGdvdDogIiArIGNv
bW1hbmQuc3RyaW5nKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlICJyZW1hcmsiOgotICAgICAgICAgICAgLy8gSnVzdCBpZ25vcmUgaXQuCi0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHRocm93IG5ldyBFcnJv
cigiQXQgIiArIGNvbW1hbmQuc291cmNlTGluZU51bWJlciArICI6IGV4cGVjdGVkIGNvbW1hbmQg
YnV0IGdvdDogIiArIGNvbW1hbmQuc3RyaW5nICsgIiAob2Yga2luZCAiICsgY29tbWFuZC5raW5k
ICsgIikiKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgY29uc3VtZUtpbmQoIm5ld0xp
bmUiKTsKLSAgICAgICAgcmV0dXJuIHN0YXRlbWVudDsKLSAgICB9Ci0gICAgCi0gICAgZnVuY3Rp
b24gcGFyc2VTdGF0ZW1lbnRzKCkKLSAgICB7Ci0gICAgICAgIGxldCBzdGF0ZW1lbnQ7Ci0gICAg
ICAgIGRvIHsKLSAgICAgICAgICAgIHN0YXRlbWVudCA9IHBhcnNlU3RhdGVtZW50KCk7Ci0gICAg
ICAgIH0gd2hpbGUgKCFzdGF0ZW1lbnQucHJvY2VzcyB8fCAhc3RhdGVtZW50LnByb2Nlc3MuaXNC
bG9ja0VuZCk7Ci0gICAgICAgIHJldHVybiBzdGF0ZW1lbnQ7Ci0gICAgfQotICAgIAotICAgIHJl
dHVybiB7Ci0gICAgICAgIHByb2dyYW0oKQotICAgICAgICB7Ci0gICAgICAgICAgICBwcm9ncmFt
ID0gewotICAgICAgICAgICAgICAgIHByb2Nlc3M6IEJhc2ljLlByb2dyYW0sCi0gICAgICAgICAg
ICAgICAgc3RhdGVtZW50czogbmV3IE1hcCgpLAotICAgICAgICAgICAgICAgIGRhdGE6IFtdLAot
ICAgICAgICAgICAgICAgIGJhc2U6IDAKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICBsZXQg
bGFzdFN0YXRlbWVudCA9IHBhcnNlU3RhdGVtZW50cyhwcm9ncmFtLnN0YXRlbWVudHMpOwotICAg
ICAgICAgICAgaWYgKGxhc3RTdGF0ZW1lbnQucHJvY2VzcyAhPSBCYXNpYy5FbmQpCi0gICAgICAg
ICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJBdCAiICsgbGFzdFN0YXRlbWVudC5zb3VyY2VMaW5l
TnVtYmVyICsgIjogZXhwZWN0ZWQgZW5kIik7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIHJl
dHVybiBwcm9ncmFtOwotICAgICAgICB9LAotICAgICAgICAKLSAgICAgICAgc3RhdGVtZW50KHBy
b2dyYW1fKQotICAgICAgICB7Ci0gICAgICAgICAgICBwcm9ncmFtID0gcHJvZ3JhbV87Ci0gICAg
ICAgICAgICByZXR1cm4gcGFyc2VTdGF0ZW1lbnQoKTsKLSAgICAgICAgfQotICAgIH07Ci19Ci0K
SW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvUmV4QmVuY2gvQmFzaWMvcmFuZG9tLmpzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvUmV4QmVuY2gvQmFzaWMvcmFuZG9tLmpzCShyZXZpc2lv
biAyMjQwNzQpCisrKyBQZXJmb3JtYW5jZVRlc3RzL1JleEJlbmNoL0Jhc2ljL3JhbmRvbS5qcwko
bm9uZXhpc3RlbnQpCkBAIC0xLDU0ICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDEzIHRoZSBWOCBw
cm9qZWN0IGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBDb3B5cmlnaHQgKEMpIDIw
MTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8v
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gICAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQotLy8gICAgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKLS8vICAgICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZAotLy8gICAgICAgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gICAgICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0vLyAgICAgICBmcm9tIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0v
LwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSJ1c2Ugc3RyaWN0IjsKLQotLy8gVGhpcyBpcyBiYXNlZCBvbiBPY3RhbmUncyBSTkcuCi1m
dW5jdGlvbiBjcmVhdGVSTkcoc2VlZCkKLXsKLSAgICByZXR1cm4gZnVuY3Rpb24oKSB7Ci0gICAg
ICAgIC8vIFJvYmVydCBKZW5raW5zJyAzMiBiaXQgaW50ZWdlciBoYXNoIGZ1bmN0aW9uLgotICAg
ICAgICBzZWVkID0gKChzZWVkICsgMHg3ZWQ1NWQxNikgKyAoc2VlZCA8PCAxMikpICAmIDB4ZmZm
ZmZmZmY7Ci0gICAgICAgIHNlZWQgPSAoKHNlZWQgXiAweGM3NjFjMjNjKSBeIChzZWVkID4+PiAx
OSkpICYgMHhmZmZmZmZmZjsKLSAgICAgICAgc2VlZCA9ICgoc2VlZCArIDB4MTY1NjY3YjEpICsg
KHNlZWQgPDwgNSkpICAgJiAweGZmZmZmZmZmOwotICAgICAgICBzZWVkID0gKChzZWVkICsgMHhk
M2EyNjQ2YykgXiAoc2VlZCA8PCA5KSkgICAmIDB4ZmZmZmZmZmY7Ci0gICAgICAgIHNlZWQgPSAo
KHNlZWQgKyAweGZkNzA0NmM1KSArIChzZWVkIDw8IDMpKSAgICYgMHhmZmZmZmZmZjsKLSAgICAg
ICAgc2VlZCA9ICgoc2VlZCBeIDB4YjU1YTRmMDkpIF4gKHNlZWQgPj4+IDE2KSkgJiAweGZmZmZm
ZmZmOwotICAgICAgICByZXR1cm4gKHNlZWQgJiAweGZmZmZmZmYpIC8gMHgxMDAwMDAwMDsKLSAg
ICB9OwotfQotCi1mdW5jdGlvbiBjcmVhdGVSTkdXaXRoRml4ZWRTZWVkKCkKLXsKLSAgICAvLyBU
aGlzIHVzZXMgT2N0YW5lJ3MgaW5pdGlhbCBzZWVkLgotICAgIHJldHVybiBjcmVhdGVSTkcoNDk3
MzQzMjEpOwotfQotCi1mdW5jdGlvbiBjcmVhdGVSTkdXaXRoUmFuZG9tU2VlZCgpCi17Ci0gICAg
cmV0dXJuIGNyZWF0ZVJORygoTWF0aC5yYW5kb20oKSAqIDQyOTQ5NjcyOTYpIHwgMCk7Ci19Cklu
ZGV4OiBQZXJmb3JtYW5jZVRlc3RzL1JleEJlbmNoL0Jhc2ljL3N0YXRlLmpzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFBlcmZvcm1hbmNlVGVzdHMvUmV4QmVuY2gvQmFzaWMvc3RhdGUuanMJKHJldmlzaW9uIDIy
NDA3NCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvUmV4QmVuY2gvQmFzaWMvc3RhdGUuanMJKG5vbmV4
aXN0ZW50KQpAQCAtMSw5OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCi0gKi8KLSJ1c2Ugc3RyaWN0IjsKLQotY2xhc3MgU3RhdGUgewotICAgIGNv
bnN0cnVjdG9yKHByb2dyYW0pCi0gICAgewotICAgICAgICB0aGlzLnZhbHVlcyA9IG5ldyBDYXNl
bGVzc01hcCgpOwotICAgICAgICB0aGlzLnN0cmluZ1ZhbHVlcyA9IG5ldyBDYXNlbGVzc01hcCgp
OwotICAgICAgICB0aGlzLnNpZGVTdGF0ZSA9IG5ldyBXZWFrTWFwKCk7Ci0gICAgICAgIHRoaXMu
c3RhdGVtZW50ID0gbnVsbDsKLSAgICAgICAgdGhpcy5uZXh0TGluZU51bWJlciA9IDA7Ci0gICAg
ICAgIHRoaXMuc3ViU3RhY2sgPSBbXTsKLSAgICAgICAgdGhpcy5kYXRhSW5kZXggPSAwOwotICAg
ICAgICB0aGlzLnByb2dyYW0gPSBwcm9ncmFtOwotICAgICAgICB0aGlzLnJuZyA9IGNyZWF0ZVJO
R1dpdGhGaXhlZFNlZWQoKTsKLSAgICAgICAgCi0gICAgICAgIGxldCBhZGROYXRpdmUgPSAobmFt
ZSwgY2FsbGJhY2spID0+IHsKLSAgICAgICAgICAgIHRoaXMudmFsdWVzLnNldChuYW1lLCBuZXcg
TmF0aXZlRnVuY3Rpb24oY2FsbGJhY2spKTsKLSAgICAgICAgfTsKLSAgICAgICAgCi0gICAgICAg
IGFkZE5hdGl2ZSgiYWJzIiwgeCA9PiBNYXRoLmFicyh4KSk7Ci0gICAgICAgIGFkZE5hdGl2ZSgi
YXRuIiwgeCA9PiBNYXRoLmF0YW4oeCkpOwotICAgICAgICBhZGROYXRpdmUoImNvcyIsIHggPT4g
TWF0aC5jb3MoeCkpOwotICAgICAgICBhZGROYXRpdmUoImV4cCIsIHggPT4gTWF0aC5leHAoeCkp
OwotICAgICAgICBhZGROYXRpdmUoImludCIsIHggPT4gTWF0aC5mbG9vcih4KSk7Ci0gICAgICAg
IGFkZE5hdGl2ZSgibG9nIiwgeCA9PiBNYXRoLmxvZyh4KSk7Ci0gICAgICAgIGFkZE5hdGl2ZSgi
cm5kIiwgKCkgPT4gdGhpcy5ybmcoKSk7Ci0gICAgICAgIGFkZE5hdGl2ZSgic2duIiwgeCA9PiBN
YXRoLnNpZ24oeCkpOwotICAgICAgICBhZGROYXRpdmUoInNpbiIsIHggPT4gTWF0aC5zaW4oeCkp
OwotICAgICAgICBhZGROYXRpdmUoInNxciIsIHggPT4gTWF0aC5zcXJ0KHgpKTsKLSAgICAgICAg
YWRkTmF0aXZlKCJ0YW4iLCB4ID0+IE1hdGgudGFuKHgpKTsKLSAgICB9Ci0gICAgCi0gICAgZ2V0
VmFsdWUobmFtZSwgbnVtUGFyYW1ldGVycykKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLnZhbHVl
cy5oYXMobmFtZSkpCi0gICAgICAgICAgICByZXR1cm4gdGhpcy52YWx1ZXMuZ2V0KG5hbWUpOwot
Ci0gICAgICAgIGxldCByZXN1bHQ7Ci0gICAgICAgIGlmIChudW1QYXJhbWV0ZXJzID09IDApCi0g
ICAgICAgICAgICByZXN1bHQgPSBuZXcgTnVtYmVyVmFsdWUoKTsKLSAgICAgICAgZWxzZSB7Ci0g
ICAgICAgICAgICBsZXQgZGltID0gW107Ci0gICAgICAgICAgICB3aGlsZSAobnVtUGFyYW1ldGVy
cy0tKQotICAgICAgICAgICAgICAgIGRpbS5wdXNoKDExKTsKLSAgICAgICAgICAgIHJlc3VsdCA9
IG5ldyBOdW1iZXJBcnJheShkaW0pOwotICAgICAgICB9Ci0gICAgICAgIHRoaXMudmFsdWVzLnNl
dChuYW1lLCByZXN1bHQpOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLSAgICAKLSAg
ICBnZXRTaWRlU3RhdGUoa2V5KQotICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLnNpZGVTdGF0ZS5o
YXMoa2V5KSkgewotICAgICAgICAgICAgbGV0IHJlc3VsdCA9IHt9OwotICAgICAgICAgICAgdGhp
cy5zaWRlU3RhdGUuc2V0KGtleSwgcmVzdWx0KTsKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQ7
Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRoaXMuc2lkZVN0YXRlLmdldChrZXkpOwotICAg
IH0KLSAgICAKLSAgICBhYm9ydCh0ZXh0KQotICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLnN0YXRl
bWVudCkKLSAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiQXQgYmVnaW5uaW5nIG9mIGV4ZWN1
dGlvbjogIiArIHRleHQpOwotICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkF0ICIgKyB0aGlzLnN0
YXRlbWVudC5zb3VyY2VMaW5lTnVtYmVyICsgIjogIiArIHRleHQpOwotICAgIH0KLSAgICAKLSAg
ICB2YWxpZGF0ZShwcmVkaWNhdGUsIHRleHQpCi0gICAgewotICAgICAgICBpZiAoIXByZWRpY2F0
ZSkKLSAgICAgICAgICAgIHRoaXMuYWJvcnQodGV4dCk7Ci0gICAgfQotfQotCkluZGV4OiBQZXJm
b3JtYW5jZVRlc3RzL1JleEJlbmNoL0Jhc2ljL3N0cmVzcy10ZXN0LmpzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFBlcmZvcm1hbmNlVGVzdHMvUmV4QmVuY2gvQmFzaWMvc3RyZXNzLXRlc3QuanMJKHJldmlzaW9u
IDIyNDA3NCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvUmV4QmVuY2gvQmFzaWMvc3RyZXNzLXRlc3Qu
anMJKG5vbmV4aXN0ZW50KQpAQCAtMSw1NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLSJ1c2Ugc3RyaWN0IjsKLQotbG9hZCgiYXN0Lmpz
Iik7Ci1sb2FkKCJiYXNpYy5qcyIpOwotbG9hZCgiY2FzZWxlc3NfbWFwLmpzIik7Ci1sb2FkKCJs
ZXhlci5qcyIpOwotbG9hZCgibnVtYmVyLmpzIik7Ci1sb2FkKCJwYXJzZXIuanMiKTsKLWxvYWQo
InJhbmRvbS5qcyIpOwotbG9hZCgic3RhdGUuanMiKTsKLWxvYWQoInV0aWwuanMiKTsKLWxvYWQo
ImJlbmNobWFyay5qcyIpOwotCi1sZXQgYmVuY2htYXJrID0gbmV3IEJhc2ljQmVuY2htYXJrKCk7
Ci1sZXQgYmVmb3JlID0gcHJlY2lzZVRpbWUoKTsKLQotLy8gUnVuIGZvciBhdCBsZWFzdCAxMCBp
dGVyYXRpb25zLgotZm9yIChsZXQgaSA9IDA7IGkgPCAxMDsgKytpKSB7Ci0gICAgcHJpbnQoIlJ1
bm5pbmcgbWFuZGF0b3J5IGl0ZXJhdGlvbiAjIiArIChpICsgMSkgKyAiOiIpOwotICAgIGJlbmNo
bWFyay5ydW5JdGVyYXRpb24oKTsKLX0KLQotLy8gUnVuIHVudGlsIHdlIGhhdmUgYmVlbiBydW5u
aW5nIGZvciB0d28gc2Vjb25kcy4KLXdoaWxlIChwcmVjaXNlVGltZSgpIDwgYmVmb3JlICsgMikg
ewotICAgIHByaW50KCJSdW5uaW5nIGJvbnVzIGl0ZXJhdGlvbjoiKTsKLSAgICBiZW5jaG1hcmsu
cnVuSXRlcmF0aW9uKCk7Ci19Ci0KLXByaW50KCJTdWNjZXNzISIpOwotCkluZGV4OiBQZXJmb3Jt
YW5jZVRlc3RzL1JleEJlbmNoL0Jhc2ljL3V0aWwuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFu
Y2VUZXN0cy9SZXhCZW5jaC9CYXNpYy91dGlsLmpzCShyZXZpc2lvbiAyMjQwNzQpCisrKyBQZXJm
b3JtYW5jZVRlc3RzL1JleEJlbmNoL0Jhc2ljL3V0aWwuanMJKG5vbmV4aXN0ZW50KQpAQCAtMSwz
NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0g
Ki8KLSJ1c2Ugc3RyaWN0IjsKLQotbGV0IGN1cnJlbnRUaW1lOwotaWYgKHRoaXMucGVyZm9ybWFu
Y2UgJiYgcGVyZm9ybWFuY2Uubm93KQotICAgIGN1cnJlbnRUaW1lID0gZnVuY3Rpb24oKSB7IHJl
dHVybiBwZXJmb3JtYW5jZS5ub3coKSB9OwotZWxzZSBpZiAodGhpcy5wcmVjaXNlVGltZSkKLSAg
ICBjdXJyZW50VGltZSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gcHJlY2lzZVRpbWUoKSAqIDEwMDA7
IH07Ci1lbHNlCi0gICAgY3VycmVudFRpbWUgPSBmdW5jdGlvbigpIHsgcmV0dXJuICtuZXcgRGF0
ZSgpOyB9OwotCkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL1JleEJlbmNoL2Fib3V0Lmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9SZXhCZW5jaC9hYm91dC5odG1sCShyZXZpc2lv
biAyMjQwNzQpCisrKyBQZXJmb3JtYW5jZVRlc3RzL1JleEJlbmNoL2Fib3V0Lmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTIwLDggKzIwLDYgQEAKIAogICAgICAgICA8cD5PY3RhbmUgUmVnRXhwIGlz
IHRoZSByZWd1bGFyLWV4cHJlc3Npb24gYmVuY2htYXJrIHRlc3QgZnJvbSA8YSBocmVmPSJodHRw
czovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9vY3RhbmUvIj5PY3RhbmU8L2E+LiAgSXQgaXMgYSBj
b2xsZWN0aW9uIG9mIHJlZ3VsYXItZXhwcmVzc2lvbnMgdGFrZW4gZnJvbSB0aGUgNTAgbW9zdCBw
b3B1bGFyIHdlYiBwYWdlcyB3aGVuIE9jdGFuZSB3YXMgd3JpdHRlbi48L3A+CiAKLSAgICAgICAg
PHA+QmFzaWMgaXMgdGhlIGxleGVyIC8gcGFyc2VyIHBhcnQgb2YgdGhlIGJlbmNobWFyayB0ZXN0
IG9mIHRoZSBzYW1lIG5hbWUgZnJvbSB0aGUgPGEgaHJlZj0iaHR0cDovL2Jyb3dzZXJiZW5jaC5v
cmcvQVJFUy02LyI+QVJFUy02PC9hPiBiZW5jaG1hcmsuPC9wPgotCiAgICAgICAgIDxwPk9mZmxp
bmUgQXNzZW1ibGVyIGlzIHRoZSBsZXhlciwgcGFyc2VyIGFuZCBBU1QgbGF5ZXIgb2YgdGhlIG9m
ZmxpbmUgYXNzZW1ibGVyIGZvciBKYXZhU2NyaXB0Q29yZS4gIEl0IGhhcyBiZWVuIHBvcnRlZCB0
byBKYXZhU2NyaXB0IGZyb20gdGhlIG9yaWdpbmFsIFJ1YnkuPC9wPgogCiAgICAgICAgIDxwPlVu
aVBva2VyIGlzIGEgNSBjYXJkIHN0dWQgcG9rZXIgc2ltdWxhdGlvbiB1c2luZyB0aGUgVW5pY29k
ZSBwbGF5aW5nIGNhcmRzIGNvZGUgcG9pbnRzLCBVKzFGMEExLi5VKzFGMERFLCBhcyB0aGUgY2Fy
ZCByZXByZXNlbnRhdGlvbiBpbiB0aGUgY29kZS4gIFNjb3Jpbmcgb2YgaGFuZHMgaXMgZG9uZSB3
aXRoIHRocmVlIHJlZ3VsYXIgZXhwcmVzc2lvbnMsIG9uZSB0byBjaGVjayBmb3IgYSBmbHVzaCwg
b25lIHRvIGNoZWNrIGZvciBzdHJhaWdodHMsIGFuZCBvbmUgdG8gY2hlY2sgZm9yIHBhaXJzLCB0
aHJlZSBvZiBhIGtpbmQgYW5kIGZvdXIgb2YgYSBraW5kLiAgVGhlIGxhc3QgcmVndWxhciBleHBy
ZXNzaW9uIGlzIHVzZWQgdHdpY2UgYXMgbmVlZGVkIHRvIGZpbmQgaGFuZHMgd2l0aCAyIHBhaXJz
IG9yIGEgZnVsbCBob3VzZS4KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvUmV4QmVuY2gvYmFzaWNf
YmVuY2htYXJrLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvUmV4QmVuY2gvYmFz
aWNfYmVuY2htYXJrLmpzCShyZXZpc2lvbiAyMjQwNzQpCisrKyBQZXJmb3JtYW5jZVRlc3RzL1Jl
eEJlbmNoL2Jhc2ljX2JlbmNobWFyay5qcwkobm9uZXhpc3RlbnQpCkBAIC0xLDgwICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgot
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotInVzZSBz
dHJpY3QiOwotCi1jb25zdCBCYXNpY0JlbmNobWFya0NvZGUgPSBTdHJpbmcucmF3YAotPHNjcmlw
dCBzcmM9ImJlbmNobWFyay5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iQmFzaWMvYXN0Lmpz
Ij48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJCYXNpYy9iYXNpYy5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0IHNyYz0iQmFzaWMvY2FzZWxlc3NfbWFwLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJC
YXNpYy9sZXhlci5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iQmFzaWMvbnVtYmVyLmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJCYXNpYy9wYXJzZXIuanMiPjwvc2NyaXB0PgotPHNjcmlw
dCBzcmM9IkJhc2ljL3JhbmRvbS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iQmFzaWMvc3Rh
dGUuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9IkJhc2ljL2JlbmNobWFyay5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0PgotInVzZSBzdHJpY3QiOwotdmFyIHJlc3VsdHMgPSBbXTsKLXZhciBiZW5j
aG1hcmsgPSBuZXcgQmFzaWNCZW5jaG1hcmsoKTsKLXZhciBudW1JdGVyYXRpb25zID0gMjAwOwot
YmVuY2htYXJrLnJ1bkl0ZXJhdGlvbnMobnVtSXRlcmF0aW9ucywgcmVzdWx0cyk7Ci1yZXBvcnRS
ZXN1bHQocmVzdWx0cyk7Ci08L3NjcmlwdD5gOwotCi0KLWxldCBydW5CYXNpY0JlbmNobWFyayA9
IG51bGw7Ci1pZiAoIWlzSW5Ccm93c2VyKSB7Ci0gICAgbGV0IHNvdXJjZXMgPSBbCi0gICAgICAg
ICJiZW5jaG1hcmsuanMiCi0gICAgICAgICwgIkJhc2ljL2FzdC5qcyIKLSAgICAgICAgLCAiQmFz
aWMvYmFzaWMuanMiCi0gICAgICAgICwgIkJhc2ljL2Nhc2VsZXNzX21hcC5qcyIKLSAgICAgICAg
LCAiQmFzaWMvbGV4ZXIuanMiCi0gICAgICAgICwgIkJhc2ljL251bWJlci5qcyIKLSAgICAgICAg
LCAiQmFzaWMvcGFyc2VyLmpzIgotICAgICAgICAsICJCYXNpYy9yYW5kb20uanMiCi0gICAgICAg
ICwgIkJhc2ljL3N0YXRlLmpzIgotICAgICAgICAsICJCYXNpYy9iZW5jaG1hcmsuanMiCi0gICAg
XTsKLQotICAgIHJ1bkJhc2ljQmVuY2htYXJrID0gbWFrZUJlbmNobWFya1J1bm5lcihzb3VyY2Vz
LCAiQmFzaWNCZW5jaG1hcmsiLCAyMDApOwotfQotCi1jb25zdCBCYXNpY0JlbmNobWFya1J1bm5l
ciA9IHsKLSAgICBuYW1lOiAiQmFzaWMiLAotICAgIGNvZGU6IEJhc2ljQmVuY2htYXJrQ29kZSwK
LSAgICBydW46IHJ1bkJhc2ljQmVuY2htYXJrLAotICAgIGNlbGxzOiB7fQotfTsKLQotaWYgKGlz
SW5Ccm93c2VyKSB7Ci0gICAgQmFzaWNCZW5jaG1hcmtSdW5uZXIuY2VsbHMgPSB7Ci0gICAgICAg
IGZpcnN0SXRlcmF0aW9uOiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiQmFzaWNGaXJzdEl0ZXJh
dGlvbiIpLAotICAgICAgICBhdmVyYWdlV29yc3RDYXNlOiBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgiQmFzaWNBdmVyYWdlV29yc3RDYXNlIiksCi0gICAgICAgIHN0ZWFkeVN0YXRlOiBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgiQmFzaWNTdGVhZHlTdGF0ZSIpLAotICAgICAgICBtZXNzYWdlOiBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiQmFzaWNNZXNzYWdlIikKLSAgICB9OwotfQpJbmRleDog
UGVyZm9ybWFuY2VUZXN0cy9SZXhCZW5jaC9jbGkuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFu
Y2VUZXN0cy9SZXhCZW5jaC9jbGkuanMJKHJldmlzaW9uIDIyNDA3NCkKKysrIFBlcmZvcm1hbmNl
VGVzdHMvUmV4QmVuY2gvY2xpLmpzCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw2IEBAIGxv
YWQoInJlc3VsdHMuanMiKTsKIGxvYWQoInN0YXRzLmpzIik7CiBsb2FkKCJzdW5zcGlkZXJfYmVu
Y2htYXJrLmpzIik7CiBsb2FkKCJvY3RhbmUyX2JlbmNobWFyay5qcyIpOwotbG9hZCgiYmFzaWNf
YmVuY2htYXJrLmpzIik7CiBsb2FkKCJvZmZsaW5lX2Fzc2VtYmxlcl9iZW5jaG1hcmsuanMiKTsK
IGxvYWQoInVuaXBva2VyX2JlbmNobWFyay5qcyIpOwogbG9hZCgiZmxpZ2h0cGxhbl9iZW5jaG1h
cmsuanMiKTsKSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvUmV4QmVuY2gvZ2x1ZS5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL1JleEJlbmNoL2dsdWUuanMJKHJldmlzaW9uIDIyNDA3
NCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvUmV4QmVuY2gvZ2x1ZS5qcwkod29ya2luZyBjb3B5KQpA
QCAtNDksNyArNDksNiBAQCBmdW5jdGlvbiByZXBvcnRSZXN1bHQoLi4uYXJncykgewogCiBkcml2
ZXIuYWRkQmVuY2htYXJrKFJlZ2V4RE5BQmVuY2htYXJrUnVubmVyKTsKIGRyaXZlci5hZGRCZW5j
aG1hcmsoT2N0YW5lMlJlZ0V4cEJlbmNobWFya1J1bm5lcik7Ci1kcml2ZXIuYWRkQmVuY2htYXJr
KEJhc2ljQmVuY2htYXJrUnVubmVyKTsKIGRyaXZlci5hZGRCZW5jaG1hcmsoT2ZmbGluZUFzc2Vt
YmxlckJlbmNobWFya1J1bm5lcik7CiBkcml2ZXIuYWRkQmVuY2htYXJrKFVuaVBva2VyQmVuY2ht
YXJrUnVubmVyKTsKIGRyaXZlci5hZGRCZW5jaG1hcmsoRmxpZ2h0UGxhbm5lckJlbmNobWFya1J1
bm5lcik7CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL1JleEJlbmNoL2luZGV4Lmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9SZXhCZW5jaC9pbmRleC5odG1sCShyZXZpc2lvbiAy
MjQwNzQpCisrKyBQZXJmb3JtYW5jZVRlc3RzL1JleEJlbmNoL2luZGV4Lmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTg5LDMxICs4OSw2IEBACiAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAg
ICAgICAgPC9kaXY+CiAgICAgICAgIDwvZGl2PgotICAgICAgICAKLSAgICAgICAgPGRpdiBjbGFz
cz0iYmFzaWMgdGVzdCI+Ci0gICAgICAgICAgICA8aDIgaWQ9IkJhc2ljTWVzc2FnZSI+QmFzaWMg
UGFyc2VyPC9oMj4gCi0gICAgICAgICAgICAKLSAgICAgICAgICAgIDxkaXYgY2xhc3M9InNjb3Jl
Ij4KLSAgICAgICAgICAgICAgICA8bGFiZWw+Rmlyc3QgSXRlcmF0aW9uPC9sYWJlbD4KLSAgICAg
ICAgICAgICAgICA8c3BhbiBpZD0iQmFzaWNGaXJzdEl0ZXJhdGlvbiI+Ci0gICAgICAgICAgICAg
ICAgICAgIDxzcGFuIGNsYXNzPSJ2YWx1ZSI+MDwvc3Bhbj48c3BhbiBjbGFzcz0idW5pdHMiPm1z
PC9zcGFuPiAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgPC9zcGFuPgotICAg
ICAgICAgICAgPC9kaXY+Ci0gCi0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJzY29yZSI+Ci0gICAg
ICAgICAgICAgICAgPGxhYmVsPldvcnN0IDQgSXRlcmF0b25zPC9sYWJlbD4KLSAgICAgICAgICAg
ICAgICA8c3BhbiBpZD0iQmFzaWNBdmVyYWdlV29yc3RDYXNlIj4KLSAgICAgICAgICAgICAgICAg
ICAgPHNwYW4gY2xhc3M9InZhbHVlIj4wPC9zcGFuPjxzcGFuIGNsYXNzPSJ1bml0cyI+bXM8L3Nw
YW4+ICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICA8L3NwYW4+Ci0gICAgICAg
ICAgICA8L2Rpdj4KLQotICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2NvcmUiPgotICAgICAgICAg
ICAgICAgIDxsYWJlbD5BdmVyYWdlPC9sYWJlbD4KLSAgICAgICAgICAgICAgICA8c3BhbiBpZD0i
QmFzaWNTdGVhZHlTdGF0ZSI+Ci0gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ2YWx1
ZSI+MDwvc3Bhbj48c3BhbiBjbGFzcz0idW5pdHMiPm1zPC9zcGFuPiAgICAgICAgICAgICAgICAg
ICAgCi0gICAgICAgICAgICAgICAgPC9zcGFuPgotICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAg
IDwvZGl2PgogCiAgICAgICAgIDxkaXYgY2xhc3M9Im9mZmxpbmUgYXNzZW1ibGVyIHRlc3QiPgog
ICAgICAgICAgICAgPGgyIGlkPSJPZmZsaW5lQXNzZW1ibGVyTWVzc2FnZSI+T2ZmbGluZSBBc3Nl
bWJsZXI8L2gyPiAKQEAgLTIyMSw3ICsxOTYsNiBAQAogICAgIDxpZnJhbWUgaWQ9Im1hZ2ljIiBm
cmFtZUJvcmRlcj0wPjwvaWZyYW1lPgogICAgIDxzY3JpcHQgc3JjPSJzdW5zcGlkZXJfYmVuY2ht
YXJrLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0ib2N0YW5lMl9iZW5jaG1hcmsuanMi
Pjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJiYXNpY19iZW5jaG1hcmsuanMiPjwvc2NyaXB0
PgogICAgIDxzY3JpcHQgc3JjPSJvZmZsaW5lX2Fzc2VtYmxlcl9iZW5jaG1hcmsuanMiPjwvc2Ny
aXB0PgogICAgIDxzY3JpcHQgc3JjPSJ1bmlwb2tlcl9iZW5jaG1hcmsuanMiPjwvc2NyaXB0Pgog
ICAgIDxzY3JpcHQgc3JjPSJmbGlnaHRwbGFuX2JlbmNobWFyay5qcyI+PC9zY3JpcHQ+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>