<?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>190027</bug_id>
          
          <creation_ts>2018-09-26 21:49:44 -0700</creation_ts>
          <short_desc>URLParser should use TextEncoding through an abstract class</short_desc>
          <delta_ts>2018-09-27 13:07:24 -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>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>aestes</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1463876</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-09-26 21:49:44 -0700</bug_when>
    <thetext>URLParser should use TextEncoding through an abstract class</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1463880</commentid>
    <comment_count>1</comment_count>
      <attachid>350940</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-09-26 22:22:26 -0700</bug_when>
    <thetext>Created attachment 350940
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1464100</commentid>
    <comment_count>2</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-09-27 13:06:07 -0700</bug_when>
    <thetext>http://trac.webkit.org/r236565</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1464101</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-09-27 13:07:24 -0700</bug_when>
    <thetext>&lt;rdar://problem/44840899&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>350940</attachid>
            <date>2018-09-26 22:22:26 -0700</date>
            <delta_ts>2018-09-27 12:14:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190027-20180926222225.patch</filename>
            <type>text/plain</type>
            <size>45230</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzNjUzOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYxIEBACisyMDE4LTA5LTI2ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVVJMUGFyc2Vy
IHNob3VsZCB1c2UgVGV4dEVuY29kaW5nIHRocm91Z2ggYW4gYWJzdHJhY3QgY2xhc3MKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDAyNworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVSTFBhcnNlciB1c2Vz
IFRleHRFbmNvZGluZyBmb3Igb25lIGNhbGwgdG8gZW5jb2RlLCB3aGljaCBpcyBvbmx5IHVzZWQg
Zm9yIGVuY29kaW5nIHRoZSBxdWVyeSBvZiBVUkxzIGluIGRvY3VtZW50cyB3aXRoIG5vbi1VVEYg
ZW5jb2RpbmdzLgorICAgICAgICBUaGVyZSBhcmUgMyBjYWxsIHNpdGVzIHRoYXQgc3BlY2lmeSB0
aGUgVGV4dEVuY29kaW5nIHRvIHVzZSBmcm9tIHRoZSBEb2N1bWVudCwgYW5kIGV2ZW4gdGhvc2Ug
Y2FsbCBzaXRlcyB1c2UgYSBVVEYgZW5jb2RpbmcgbW9zdCBvZiB0aGUgdGltZS4KKyAgICAgICAg
QWxsIG90aGVyIFVSTCBwYXJzaW5nIGlzIGRvbmUgdXNpbmcgYSB3ZWxsLW9wdGltaXplZCBwYXRo
IHdoaWNoIGFzc3VtZXMgVVRGLTggZW5jb2RpbmcgYW5kIHVzZXMgbWFjcm9zIGZyb20gSUNVIGhl
YWRlcnMsIG5vdCBhIFRleHRFbmNvZGluZy4KKyAgICAgICAgTW92aW5nIHRoZSBsb2dpYyBpbiB0
aGlzIHdheSBicmVha3MgVVJMIGFuZCBVUkxQYXJzZXIncyBkZXBlbmRlbmN5IG9uIFRleHRFbmNv
ZGluZywgd2hpY2ggbWFrZXMgaXQgcG9zc2libGUgdG8gdXNlIGluIGEgbG93ZXItbGV2ZWwgcHJv
amVjdAorICAgICAgICB3aXRob3V0IGFsc28gbW92aW5nIFRleHRFbmNvZGluZywgVGV4dENvZGVj
LCBUZXh0Q29kZWNJQ1UsIFRocmVhZEdsb2JhbERhdGEsIGFuZCB0aGUgcmVzdCBvZiBXZWJDb3Jl
IGFuZCBKYXZhU2NyaXB0Q29yZS4KKworICAgICAgICBUaGVyZSBpcyBubyBvYnNlcnZhYmxlIGNo
YW5nZSBpbiBiZWhhdmlvci4gIFRoZXJlIGlzIG5vdyBvbmUgdmlydHVhbCBmdW5jdGlvbiBjYWxs
IGluIGEgY29kZSBwYXRoIGluIFVSTFBhcnNlciB0aGF0IGlzIG5vdCBwZXJmb3JtYW5jZS1zZW5z
aXRpdmUsCisgICAgICAgIGFuZCBUZXh0RW5jb2RpbmdzIG5vdyBoYXZlIGEgdnRhYmxlLCB3aGlj
aCB1c2VzIGEgZmV3IG1vcmUgYnl0ZXMgb2YgbWVtb3J5IHRvdGFsIGZvciBXZWJLaXQuCisKKyAg
ICAgICAgKiBjc3MvcGFyc2VyL0NTU1BhcnNlckNvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1BhcnNlckNvbnRleHQ6OmNvbXBsZXRlVVJMIGNvbnN0KToKKyAgICAgICAgKiBjc3MvcGFy
c2VyL0NTU1BhcnNlcklkaW9tcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb21wbGV0ZVVSTCk6
CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
Ojpjb21wbGV0ZVVSTCBjb25zdCk6CisgICAgICAgICogaHRtbC9IVE1MQmFzZUVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTEJhc2VFbGVtZW50OjpocmVmIGNvbnN0KToKKyAgICAg
ICAgTW92ZSB0aGUgY2FsbCB0byBlbmNvZGluZ0ZvckZvcm1TdWJtaXNzaW9uIGZyb20gdGhlIFVS
TCBjb25zdHJ1Y3RvciB0byB0aGUgMyBjYWxsIHNpdGVzIHRoYXQgc3BlY2lmeSB0aGUgZW5jb2Rp
bmcgZnJvbSB0aGUgRG9jdW1lbnQuCisgICAgICAgICogbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1TdWJtaXNzaW9uOjpjcmVhdGUpOgorICAgICAgICAq
IGxvYWRlci9UZXh0UmVzb3VyY2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRS
ZXNvdXJjZURlY29kZXI6OmVuY29kaW5nRm9yVVJMUGFyc2luZyk6CisgICAgICAgICogbG9hZGVy
L1RleHRSZXNvdXJjZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9VUkwuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VVJMOjpVUkwpOgorICAgICAgICAqIHBsYXRmb3JtL1VSTC5oOgorICAg
ICAgICAoV2ViQ29yZTo6VVJMVGV4dEVuY29kaW5nOjp+VVJMVGV4dEVuY29kaW5nKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9VUkxQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VVJMUGFyc2Vy
OjplbmNvZGVOb25VVEY4UXVlcnkpOgorICAgICAgICAoV2ViQ29yZTo6VVJMUGFyc2VyOjpjb3B5
VVJMUGFydHNVbnRpbCk6CisgICAgICAgIChXZWJDb3JlOjpVUkxQYXJzZXI6OlVSTFBhcnNlcik6
CisgICAgICAgIChXZWJDb3JlOjpVUkxQYXJzZXI6OnBhcnNlKToKKyAgICAgICAgKFdlYkNvcmU6
OlVSTFBhcnNlcjo6ZW5jb2RlUXVlcnkpOiBEZWxldGVkLgorICAgICAgICBBIHBvaW50ZXIgcmVw
bGFjZXMgdGhlIGJvb2xlYW4gaXNVVEY4RW5jb2RpbmcgYW5kIHRoZSBUZXh0RW5jb2RpbmcmIHdo
aWNoIGhhZCBhIGRlZmF1bHQgdmFsdWUgb2YgVVRGOEVuY29kaW5nLgorICAgICAgICBOb3cgdGhl
IHBvaW50ZXIgYmVpbmcgbnVsbCBtZWFucyB0aGF0IHdlIHVzZSBVVEY4LCBhbmQgdGhlIHBvaW50
ZXIgYmVpbmcgbm9uLW51bGwgbWVhbnMgd2UgdXNlIHRoYXQgZW5jb2RpbmcuCisgICAgICAgICog
cGxhdGZvcm0vVVJMUGFyc2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpVUkxQYXJzZXI6OlVSTFBh
cnNlcik6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2RpbmcuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VVRGN0VuY29kaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRFbmNvZGlu
Zzo6ZW5jb2RpbmdGb3JGb3JtU3VibWlzc2lvbk9yVVJMUGFyc2luZyBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpBU0NJSUVuY29kaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkxhdGluMUVuY29k
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlVURjE2QmlnRW5kaWFuRW5jb2RpbmcpOgorICAgICAg
ICAoV2ViQ29yZTo6VVRGMTZMaXR0bGVFbmRpYW5FbmNvZGluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpVVEY4RW5jb2RpbmcpOgorICAgICAgICAoV2ViQ29yZTo6V2luZG93c0xhdGluMUVuY29kaW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRFbmNvZGluZzo6ZW5jb2RpbmdGb3JGb3JtU3VibWlz
c2lvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIFVzZSBOZXZlckRlc3Ryb3llZCBiZWNhdXNl
IFRleHRFbmNvZGluZyBub3cgaGFzIGEgdmlydHVhbCBkZXN0cnVjdG9yLgorICAgICAgICAqIHBs
YXRmb3JtL3RleHQvVGV4dEVuY29kaW5nLmg6CisgICAgICAgIFJlbmFtZSBlbmNvZGluZ0ZvckZv
cm1TdWJtaXNzaW9uIHRvIGVuY29kaW5nRm9yRm9ybVN1Ym1pc3Npb25PclVSTFBhcnNpbmcgdG8g
bWFrZSBpdCBtb3JlIGNsZWFyIHRoYXQgd2UgYXJlIGludGVudGlvbmFsbHkgdXNpbmcgaXQgZm9y
IGJvdGguCisKIDIwMTgtMDktMjYgIFlVSEFOIFdVICA8eXVoYW5fd3VAYXBwbGUuY29tPgogCiAg
ICAgICAgIFZpZGVvIHRyYWNrIGNsb25lIGNhbm5vdCBwcmVzZXJ2ZSBvcmlnaW5hbCBwcm9wZXJ0
eQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJDb250ZXh0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJDb250ZXh0LmgJ
KHJldmlzaW9uIDIzNjUzMikKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2Vy
Q29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC02OSw3ICs2OSw5IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgIHJldHVybiBVUkwoKTsKICAgICAgICAgaWYgKGNoYXJzZXQuaXNFbXB0eSgpKQogICAg
ICAgICAgICAgcmV0dXJuIFVSTChiYXNlVVJMLCB1cmwpOwotICAgICAgICByZXR1cm4gVVJMKGJh
c2VVUkwsIHVybCwgVGV4dEVuY29kaW5nKGNoYXJzZXQpKTsKKyAgICAgICAgVGV4dEVuY29kaW5n
IGVuY29kaW5nKGNoYXJzZXQpOworICAgICAgICBhdXRvJiBlbmNvZGluZ0ZvclVSTFBhcnNpbmcg
PSBlbmNvZGluZy5lbmNvZGluZ0ZvckZvcm1TdWJtaXNzaW9uT3JVUkxQYXJzaW5nKCk7CisgICAg
ICAgIHJldHVybiBVUkwoYmFzZVVSTCwgdXJsLCBlbmNvZGluZ0ZvclVSTFBhcnNpbmcgPT0gVVRG
OEVuY29kaW5nKCkgPyBudWxscHRyIDogJmVuY29kaW5nRm9yVVJMUGFyc2luZyk7CiAgICAgfQog
fTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJJZGlvbXMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VySWRpb21z
LmNwcAkocmV2aXNpb24gMjM2NTMyKQorKysgU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQ
YXJzZXJJZGlvbXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NywxMSArNDcsNyBAQCBib29sIGlz
VmFsdWVBbGxvd2VkSW5Nb2RlKHVuc2lnbmVkIHNob3J0CiAKIFVSTCBjb21wbGV0ZVVSTChjb25z
dCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHVybCkKIHsKLSAgICBp
ZiAodXJsLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gVVJMKCk7Ci0gICAgaWYgKGNvbnRleHQu
Y2hhcnNldC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBVUkwoY29udGV4dC5iYXNlVVJMLCB1
cmwpOwotICAgIHJldHVybiBVUkwoY29udGV4dC5iYXNlVVJMLCB1cmwsIGNvbnRleHQuY2hhcnNl
dCk7CisgICAgcmV0dXJuIGNvbnRleHQuY29tcGxldGVVUkwodXJsKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiAyMzY1
MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00ODc1LDcgKzQ4NzUsNyBAQCBVUkwgRG9jdW1lbnQ6OmNvbXBsZXRlVVJMKGNvbnN0IFN0cmlu
ZyYgCiAgICAgY29uc3QgVVJMJiBiYXNlVVJMID0gKChiYXNlVVJMT3ZlcnJpZGUuaXNFbXB0eSgp
IHx8IGJhc2VVUkxPdmVycmlkZSA9PSBibGFua1VSTCgpKSAmJiBwYXJlbnREb2N1bWVudCgpKSA/
IHBhcmVudERvY3VtZW50KCktPmJhc2VVUkwoKSA6IGJhc2VVUkxPdmVycmlkZTsKICAgICBpZiAo
IW1fZGVjb2RlcikKICAgICAgICAgcmV0dXJuIFVSTChiYXNlVVJMLCB1cmwpOwotICAgIHJldHVy
biBVUkwoYmFzZVVSTCwgdXJsLCBtX2RlY29kZXItPmVuY29kaW5nKCkpOworICAgIHJldHVybiBV
UkwoYmFzZVVSTCwgdXJsLCBtX2RlY29kZXItPmVuY29kaW5nRm9yVVJMUGFyc2luZygpKTsKIH0K
IAogVVJMIERvY3VtZW50Ojpjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcmIHVybCkgY29uc3QKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJhc2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCYXNlRWxlbWVudC5jcHAJKHJldmlzaW9uIDIzNjUz
MikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJhc2VFbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtODksOSArODksOCBAQCBVUkwgSFRNTEJhc2VFbGVtZW50OjpocmVmKCkgY29uc3QK
ICAgICBpZiAoYXR0cmlidXRlVmFsdWUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBkb2N1bWVu
dCgpLnVybCgpOwogCi0gICAgVVJMIHVybCA9ICFkb2N1bWVudCgpLmRlY29kZXIoKSA/Ci0gICAg
ICAgIFVSTChkb2N1bWVudCgpLnVybCgpLCBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFj
ZXMoYXR0cmlidXRlVmFsdWUpKSA6Ci0gICAgICAgIFVSTChkb2N1bWVudCgpLnVybCgpLCBzdHJp
cExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMoYXR0cmlidXRlVmFsdWUpLCBkb2N1bWVudCgp
LmRlY29kZXIoKS0+ZW5jb2RpbmcoKSk7CisgICAgYXV0byogZW5jb2RpbmcgPSBkb2N1bWVudCgp
LmRlY29kZXIoKSA/IGRvY3VtZW50KCkuZGVjb2RlcigpLT5lbmNvZGluZ0ZvclVSTFBhcnNpbmco
KSA6IG51bGxwdHI7CisgICAgVVJMIHVybChkb2N1bWVudCgpLnVybCgpLCBzdHJpcExlYWRpbmdB
bmRUcmFpbGluZ0hUTUxTcGFjZXMoYXR0cmlidXRlVmFsdWUpLCBlbmNvZGluZyk7CiAKICAgICBp
ZiAoIXVybC5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBVUkwoKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmNwcAkocmV2aXNpb24gMjM2NTMyKQorKysgU291
cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTc1LDcgKzE3NSw3IEBAIFJlZjxGb3JtU3VibWlzc2lvbj4gRm9ybVN1Ym1pc3Npb246OmNyZWEK
ICAgICB9CiAKICAgICBhdXRvIGRhdGFFbmNvZGluZyA9IGlzTWFpbHRvRm9ybSA/IFVURjhFbmNv
ZGluZygpIDogZW5jb2RpbmdGcm9tQWNjZXB0Q2hhcnNldChjb3BpZWRBdHRyaWJ1dGVzLmFjY2Vw
dENoYXJzZXQoKSwgZG9jdW1lbnQpOwotICAgIGF1dG8gZG9tRm9ybURhdGEgPSBET01Gb3JtRGF0
YTo6Y3JlYXRlKGRhdGFFbmNvZGluZy5lbmNvZGluZ0ZvckZvcm1TdWJtaXNzaW9uKCkpOworICAg
IGF1dG8gZG9tRm9ybURhdGEgPSBET01Gb3JtRGF0YTo6Y3JlYXRlKGRhdGFFbmNvZGluZy5lbmNv
ZGluZ0ZvckZvcm1TdWJtaXNzaW9uT3JVUkxQYXJzaW5nKCkpOwogICAgIFN0cmluZ1BhaXJWZWN0
b3IgZm9ybVZhbHVlczsKIAogICAgIGJvb2wgY29udGFpbnNQYXNzd29yZERhdGEgPSBmYWxzZTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0UmVzb3VyY2VEZWNvZGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFJlc291cmNlRGVjb2Rlci5jcHAJ
KHJldmlzaW9uIDIzNjUzMikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0UmVzb3VyY2VE
ZWNvZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjU5LDQgKzY1OSwxNiBAQCBTdHJpbmcgVGV4
dFJlc291cmNlRGVjb2Rlcjo6ZGVjb2RlQW5kRmx1CiAgICAgcmV0dXJuIGRlY29kZWQgKyBmbHVz
aCgpOwogfQogCitjb25zdCBUZXh0RW5jb2RpbmcqIFRleHRSZXNvdXJjZURlY29kZXI6OmVuY29k
aW5nRm9yVVJMUGFyc2luZygpCit7CisgICAgLy8gRm9yIFVURi17NywxNiwzMn0sIHdlIHdhbnQg
dG8gdXNlIFVURi04IGZvciB0aGUgcXVlcnkgcGFydCBhcworICAgIC8vIHdlIGRvIHdoZW4gc3Vi
bWl0dGluZyBhIGZvcm0uIEEgZm9ybSB3aXRoIEdFVCBtZXRob2QKKyAgICAvLyBoYXMgaXRzIGNv
bnRlbnRzIGFkZGVkIHRvIGEgVVJMIGFzIHF1ZXJ5IHBhcmFtcyBhbmQgaXQgbWFrZXMgc2Vuc2UK
KyAgICAvLyB0byBiZSBjb25zaXN0ZW50LgorICAgIGF1dG8mIGVuY29kaW5nID0gbV9lbmNvZGlu
Zy5lbmNvZGluZ0ZvckZvcm1TdWJtaXNzaW9uT3JVUkxQYXJzaW5nKCk7CisgICAgaWYgKGVuY29k
aW5nID09IFVURjhFbmNvZGluZygpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1
cm4gJmVuY29kaW5nOworfQorCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFJl
c291cmNlRGVjb2Rlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0
UmVzb3VyY2VEZWNvZGVyLmgJKHJldmlzaW9uIDIzNjUzMikKKysrIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9UZXh0UmVzb3VyY2VEZWNvZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDcg
QEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBUZXh0RW5jb2RpbmcmLCBF
bmNvZGluZ1NvdXJjZSk7CiAgICAgY29uc3QgVGV4dEVuY29kaW5nJiBlbmNvZGluZygpIGNvbnN0
IHsgcmV0dXJuIG1fZW5jb2Rpbmc7IH0KKyAgICBjb25zdCBUZXh0RW5jb2RpbmcqIGVuY29kaW5n
Rm9yVVJMUGFyc2luZygpOwogCiAgICAgYm9vbCBoYXNFcXVhbEVuY29kaW5nRm9yQ2hhcnNldChj
b25zdCBTdHJpbmcmIGNoYXJzZXQpIGNvbnN0OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9VUkwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5j
cHAJKHJldmlzaW9uIDIzNjUzMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEwMywxOSArMTAzLDkgQEAgVVJMOjpVUkwoUGFyc2VkVVJMU3Ry
aW5nVGFnLCBjb25zdCBTdHJpbgogI2VuZGlmCiB9CiAKLVVSTDo6VVJMKGNvbnN0IFVSTCYgYmFz
ZSwgY29uc3QgU3RyaW5nJiByZWxhdGl2ZSkKK1VSTDo6VVJMKGNvbnN0IFVSTCYgYmFzZSwgY29u
c3QgU3RyaW5nJiByZWxhdGl2ZSwgY29uc3QgVVJMVGV4dEVuY29kaW5nKiBlbmNvZGluZykKIHsK
LSAgICBVUkxQYXJzZXIgcGFyc2VyKHJlbGF0aXZlLCBiYXNlKTsKLSAgICAqdGhpcyA9IHBhcnNl
ci5yZXN1bHQoKTsKLX0KLQotVVJMOjpVUkwoY29uc3QgVVJMJiBiYXNlLCBjb25zdCBTdHJpbmcm
IHJlbGF0aXZlLCBjb25zdCBUZXh0RW5jb2RpbmcmIGVuY29kaW5nKQotewotICAgIC8vIEZvciBV
VEYtezcsMTYsMzJ9LCB3ZSB3YW50IHRvIHVzZSBVVEYtOCBmb3IgdGhlIHF1ZXJ5IHBhcnQgYXMK
LSAgICAvLyB3ZSBkbyB3aGVuIHN1Ym1pdHRpbmcgYSBmb3JtLiBBIGZvcm0gd2l0aCBHRVQgbWV0
aG9kCi0gICAgLy8gaGFzIGl0cyBjb250ZW50cyBhZGRlZCB0byBhIFVSTCBhcyBxdWVyeSBwYXJh
bXMgYW5kIGl0IG1ha2VzIHNlbnNlCi0gICAgLy8gdG8gYmUgY29uc2lzdGVudC4KLSAgICBVUkxQ
YXJzZXIgcGFyc2VyKHJlbGF0aXZlLCBiYXNlLCBlbmNvZGluZy5lbmNvZGluZ0ZvckZvcm1TdWJt
aXNzaW9uKCkpOworICAgIFVSTFBhcnNlciBwYXJzZXIocmVsYXRpdmUsIGJhc2UsIGVuY29kaW5n
KTsKICAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vVVJMLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
VVJMLmgJKHJldmlzaW9uIDIzNjUzMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5o
CSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0NywxMyBAQCBjbGFzcyBUZXh0U3RyZWFtOwogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFRleHRFbmNvZGluZzsKK2VudW0gY2xhc3MgVW5l
bmNvZGFibGVIYW5kbGluZzsKK2NsYXNzIFVSTFRleHRFbmNvZGluZyB7CitwdWJsaWM6CisgICAg
dmlydHVhbCBWZWN0b3I8dWludDhfdD4gZW5jb2RlRm9yVVJMUGFyc2luZyhTdHJpbmdWaWV3LCBV
bmVuY29kYWJsZUhhbmRsaW5nKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB+VVJMVGV4dEVuY29k
aW5nKCkgeyB9OworfTsKKwogc3RydWN0IFVSTEhhc2g7CiAKIGVudW0gUGFyc2VkVVJMU3RyaW5n
VGFnIHsgUGFyc2VkVVJMU3RyaW5nIH07CkBAIC02NSwxNCArNzEsMTMgQEAgcHVibGljOgogICAg
IGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBzdHJpbmcoKS5p
c0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOyB9CiAKICAgICAvLyBSZXNvbHZlcyB0aGUgcmVsYXRp
dmUgVVJMIHdpdGggdGhlIGdpdmVuIGJhc2UgVVJMLiBJZiBwcm92aWRlZCwgdGhlCi0gICAgLy8g
VGV4dEVuY29kaW5nIGlzIHVzZWQgdG8gZW5jb2RlIG5vbi1BU0NJSSBjaGFyYWNlcnMuIFRoZSBi
YXNlIFVSTCBjYW4gYmUKKyAgICAvLyBVUkxUZXh0RW5jb2RpbmcgaXMgdXNlZCB0byBlbmNvZGUg
bm9uLUFTQ0lJIGNoYXJhY2Vycy4gVGhlIGJhc2UgVVJMIGNhbiBiZQogICAgIC8vIG51bGwgb3Ig
ZW1wdHksIGluIHdoaWNoIGNhc2UgdGhlIHJlbGF0aXZlIFVSTCB3aWxsIGJlIGludGVycHJldGVk
IGFzCiAgICAgLy8gYWJzb2x1dGUuCiAgICAgLy8gRklYTUU6IElmIHRoZSBiYXNlIFVSTCBpcyBp
bnZhbGlkLCB0aGlzIGFsd2F5cyBjcmVhdGVzIGFuIGludmFsaWQKICAgICAvLyBVUkwuIEluc3Rl
YWQgSSB0aGluayBpdCB3b3VsZCBiZSBiZXR0ZXIgdG8gdHJlYXQgYWxsIGludmFsaWQgYmFzZSBV
UkxzCiAgICAgLy8gdGhlIHNhbWUgd2F5IHdlIHRyZWF0ZSBudWxsIGFuZCBlbXB0eSBiYXNlIFVS
THMuCi0gICAgV0VCQ09SRV9FWFBPUlQgVVJMKGNvbnN0IFVSTCYgYmFzZSwgY29uc3QgU3RyaW5n
JiByZWxhdGl2ZSk7Ci0gICAgVVJMKGNvbnN0IFVSTCYgYmFzZSwgY29uc3QgU3RyaW5nJiByZWxh
dGl2ZSwgY29uc3QgVGV4dEVuY29kaW5nJik7CisgICAgV0VCQ09SRV9FWFBPUlQgVVJMKGNvbnN0
IFVSTCYgYmFzZSwgY29uc3QgU3RyaW5nJiByZWxhdGl2ZSwgY29uc3QgVVJMVGV4dEVuY29kaW5n
KiA9IG51bGxwdHIpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFVSTCBmYWtlVVJMV2l0
aFJlbGF0aXZlUGFydChjb25zdCBTdHJpbmcmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
VVJMIGZpbGVVUkxXaXRoRmlsZVN5c3RlbVBhdGgoY29uc3QgU3RyaW5nJik7CkBAIC0yMDgsNyAr
MjEzLDYgQEAgcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgVVJMUGFyc2VyOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgaW52YWxpZGF0ZSgpOwogICAgIHN0YXRpYyBib29sIHByb3RvY29sSXMo
Y29uc3QgU3RyaW5nJiwgY29uc3QgY2hhciopOwotICAgIHZvaWQgaW5pdChjb25zdCBVUkwmLCBj
b25zdCBTdHJpbmcmLCBjb25zdCBUZXh0RW5jb2RpbmcmKTsKICAgICB2b2lkIGNvcHlUb0J1ZmZl
cihWZWN0b3I8Y2hhciwgNTEyPiYgYnVmZmVyKSBjb25zdDsKICAgICB1bnNpZ25lZCBob3N0U3Rh
cnQoKSBjb25zdDsKIApAQCAtMzAzLDYgKzMwNyw3IEBAIFN0cmluZyBtaW1lVHlwZUZyb21EYXRh
VVJMKGNvbnN0IFN0cmluZyYKIC8vIGVuY29kaW5nIChkZWZhdWx0aW5nIHRvIFVURi04IG90aGVy
d2lzZSkuIERBTkdFUjogSWYgdGhlIFVSTCBoYXMgIiUwMCIKIC8vIGluIGl0LCB0aGUgcmVzdWx0
aW5nIHN0cmluZyB3aWxsIGhhdmUgZW1iZWRkZWQgbnVsbCBjaGFyYWN0ZXJzIQogV0VCQ09SRV9F
WFBPUlQgU3RyaW5nIGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcyhjb25zdCBTdHJpbmcmKTsKK2Ns
YXNzIFRleHRFbmNvZGluZzsKIFN0cmluZyBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXMoY29uc3Qg
U3RyaW5nJiwgY29uc3QgVGV4dEVuY29kaW5nJik7CiAKIC8vIEZJWE1FOiBUaGlzIGlzIGEgd3Jv
bmcgY29uY2VwdCB0byBleHBvc2UsIGRpZmZlcmVudCBwYXJ0cyBvZiBhIFVSTCBuZWVkIGRpZmZl
cmVudCBlc2NhcGluZyBwZXIgdGhlIFVSTCBTdGFuZGFyZC4KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1VSTFBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vVVJMUGFyc2VyLmNwcAkocmV2aXNpb24gMjM2NTMyKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vVVJMUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjE4LDkgKzYxOCw5IEBA
IEFMV0FZU19JTkxJTkUgdm9pZCBVUkxQYXJzZXI6OnV0ZjhRdWVyeUUKIH0KIAogdGVtcGxhdGU8
dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLXZvaWQgVVJMUGFyc2VyOjplbmNvZGVRdWVyeShjb25z
dCBWZWN0b3I8VUNoYXI+JiBzb3VyY2UsIGNvbnN0IFRleHRFbmNvZGluZyYgZW5jb2RpbmcsIENv
ZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+IGl0ZXJhdG9yKQordm9pZCBVUkxQYXJzZXI6
OmVuY29kZU5vblVURjhRdWVyeShjb25zdCBWZWN0b3I8VUNoYXI+JiBzb3VyY2UsIGNvbnN0IFVS
TFRleHRFbmNvZGluZyYgZW5jb2RpbmcsIENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+
IGl0ZXJhdG9yKQogewotICAgIGF1dG8gZW5jb2RlZCA9IGVuY29kaW5nLmVuY29kZShTdHJpbmdW
aWV3KHNvdXJjZS5kYXRhKCksIHNvdXJjZS5zaXplKCkpLCBVbmVuY29kYWJsZUhhbmRsaW5nOjpV
UkxFbmNvZGVkRW50aXRpZXMpOworICAgIGF1dG8gZW5jb2RlZCA9IGVuY29kaW5nLmVuY29kZUZv
clVSTFBhcnNpbmcoU3RyaW5nVmlldyhzb3VyY2UuZGF0YSgpLCBzb3VyY2Uuc2l6ZSgpKSwgVW5l
bmNvZGFibGVIYW5kbGluZzo6VVJMRW5jb2RlZEVudGl0aWVzKTsKICAgICBhdXRvKiBkYXRhID0g
ZW5jb2RlZC5kYXRhKCk7CiAgICAgc2l6ZV90IGxlbmd0aCA9IGVuY29kZWQuc2l6ZSgpOwogICAg
IApAQCAtODgwLDcgKzg4MCw3IEBAIHZvaWQgVVJMUGFyc2VyOjpjb3B5QVNDSUlTdHJpbmdVbnRp
bChjb24KIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLXZvaWQgVVJMUGFy
c2VyOjpjb3B5VVJMUGFydHNVbnRpbChjb25zdCBVUkwmIGJhc2UsIFVSTFBhcnQgcGFydCwgY29u
c3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yLCBib29sJiBpc1VU
RjhFbmNvZGluZykKK3ZvaWQgVVJMUGFyc2VyOjpjb3B5VVJMUGFydHNVbnRpbChjb25zdCBVUkwm
IGJhc2UsIFVSTFBhcnQgcGFydCwgY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlw
ZT4mIGl0ZXJhdG9yLCBjb25zdCBVUkxUZXh0RW5jb2RpbmcqJiBub25VVEY4UXVlcnlFbmNvZGlu
ZykKIHsKICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3IpOwogCkBAIC05MTksNyArOTE5LDcg
QEAgdm9pZCBVUkxQYXJzZXI6OmNvcHlVUkxQYXJ0c1VudGlsKGNvbnN0IAogICAgIHN3aXRjaCAo
c2NoZW1lKFN0cmluZ1ZpZXcobV9hc2NpaUJ1ZmZlci5kYXRhKCksIG1fdXJsLm1fc2NoZW1lRW5k
KSkpIHsKICAgICBjYXNlIFNjaGVtZTo6V1M6CiAgICAgY2FzZSBTY2hlbWU6OldTUzoKLSAgICAg
ICAgaXNVVEY4RW5jb2RpbmcgPSB0cnVlOworICAgICAgICBub25VVEY4UXVlcnlFbmNvZGluZyA9
IG51bGxwdHI7CiAgICAgICAgIG1fdXJsSXNTcGVjaWFsID0gdHJ1ZTsKICAgICAgICAgcmV0dXJu
OwogICAgIGNhc2UgU2NoZW1lOjpGaWxlOgpAQCAtOTMzLDcgKzkzMyw3IEBAIHZvaWQgVVJMUGFy
c2VyOjpjb3B5VVJMUGFydHNVbnRpbChjb25zdCAKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2Ug
U2NoZW1lOjpOb25TcGVjaWFsOgogICAgICAgICBtX3VybElzU3BlY2lhbCA9IGZhbHNlOwotICAg
ICAgICBpc1VURjhFbmNvZGluZyA9IHRydWU7CisgICAgICAgIG5vblVURjhRdWVyeUVuY29kaW5n
ID0gbnVsbHB0cjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKQEAgLTExNTIsNyArMTE1Miw3IEBAIEFMV0FZU19JTkxJTkUgc2l6ZV90IFVSTFBhcnNl
cjo6Y3VycmVudFAKICAgICByZXR1cm4gaXRlcmF0b3IuY29kZVVuaXRzU2luY2UocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBDaGFyYWN0ZXJUeXBlKj4obV9pbnB1dEJlZ2luKSk7CiB9CiAKLVVSTFBh
cnNlcjo6VVJMUGFyc2VyKGNvbnN0IFN0cmluZyYgaW5wdXQsIGNvbnN0IFVSTCYgYmFzZSwgY29u
c3QgVGV4dEVuY29kaW5nJiBlbmNvZGluZykKK1VSTFBhcnNlcjo6VVJMUGFyc2VyKGNvbnN0IFN0
cmluZyYgaW5wdXQsIGNvbnN0IFVSTCYgYmFzZSwgY29uc3QgVVJMVGV4dEVuY29kaW5nKiBub25V
VEY4UXVlcnlFbmNvZGluZykKICAgICA6IG1faW5wdXRTdHJpbmcoaW5wdXQpCiB7CiAgICAgaWYg
KGlucHV0LmlzTnVsbCgpKSB7CkBAIC0xMTY1LDEwICsxMTY1LDEwIEBAIFVSTFBhcnNlcjo6VVJM
UGFyc2VyKGNvbnN0IFN0cmluZyYgaW5wdXQKIAogICAgIGlmIChpbnB1dC5pczhCaXQoKSkgewog
ICAgICAgICBtX2lucHV0QmVnaW4gPSBpbnB1dC5jaGFyYWN0ZXJzOCgpOwotICAgICAgICBwYXJz
ZShpbnB1dC5jaGFyYWN0ZXJzOCgpLCBpbnB1dC5sZW5ndGgoKSwgYmFzZSwgZW5jb2RpbmcpOwor
ICAgICAgICBwYXJzZShpbnB1dC5jaGFyYWN0ZXJzOCgpLCBpbnB1dC5sZW5ndGgoKSwgYmFzZSwg
bm9uVVRGOFF1ZXJ5RW5jb2RpbmcpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1faW5wdXRCZWdp
biA9IGlucHV0LmNoYXJhY3RlcnMxNigpOwotICAgICAgICBwYXJzZShpbnB1dC5jaGFyYWN0ZXJz
MTYoKSwgaW5wdXQubGVuZ3RoKCksIGJhc2UsIGVuY29kaW5nKTsKKyAgICAgICAgcGFyc2UoaW5w
dXQuY2hhcmFjdGVyczE2KCksIGlucHV0Lmxlbmd0aCgpLCBiYXNlLCBub25VVEY4UXVlcnlFbmNv
ZGluZyk7CiAgICAgfQogCiAgICAgQVNTRVJUKCFtX3VybC5tX2lzVmFsaWQKQEAgLTExNzksNyAr
MTE3OSw3IEBAIFVSTFBhcnNlcjo6VVJMUGFyc2VyKGNvbnN0IFN0cmluZyYgaW5wdXQKICNpZiAh
QVNTRVJUX0RJU0FCTEVECiAgICAgaWYgKCFtX2RpZFNlZVN5bnRheFZpb2xhdGlvbikgewogICAg
ICAgICAvLyBGb3JjZSBhIHN5bnRheCB2aW9sYXRpb24gYXQgdGhlIGJlZ2lubmluZyB0byBtYWtl
IHN1cmUgd2UgZ2V0IHRoZSBzYW1lIHJlc3VsdC4KLSAgICAgICAgVVJMUGFyc2VyIHBhcnNlciht
YWtlU3RyaW5nKCIgIiwgaW5wdXQpLCBiYXNlLCBlbmNvZGluZyk7CisgICAgICAgIFVSTFBhcnNl
ciBwYXJzZXIobWFrZVN0cmluZygiICIsIGlucHV0KSwgYmFzZSwgbm9uVVRGOFF1ZXJ5RW5jb2Rp
bmcpOwogICAgICAgICBVUkwgcGFyc2VkID0gcGFyc2VyLnJlc3VsdCgpOwogICAgICAgICBpZiAo
cGFyc2VkLmlzVmFsaWQoKSkKICAgICAgICAgICAgIEFTU0VSVChhbGxWYWx1ZXNFcXVhbChwYXJz
ZXIucmVzdWx0KCksIG1fdXJsKSk7CkBAIC0xMTg4LDEzICsxMTg4LDEyIEBAIFVSTFBhcnNlcjo6
VVJMUGFyc2VyKGNvbnN0IFN0cmluZyYgaW5wdXQKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ2hh
cmFjdGVyVHlwZT4KLXZvaWQgVVJMUGFyc2VyOjpwYXJzZShjb25zdCBDaGFyYWN0ZXJUeXBlKiBp
bnB1dCwgY29uc3QgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBVUkwmIGJhc2UsIGNvbnN0IFRleHRF
bmNvZGluZyYgZW5jb2RpbmcpCit2b2lkIFVSTFBhcnNlcjo6cGFyc2UoY29uc3QgQ2hhcmFjdGVy
VHlwZSogaW5wdXQsIGNvbnN0IHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgVVJMJiBiYXNlLCBjb25z
dCBVUkxUZXh0RW5jb2RpbmcqIG5vblVURjhRdWVyeUVuY29kaW5nKQogewotICAgIFVSTF9QQVJT
RVJfTE9HKCJQYXJzaW5nIFVSTCA8JXM+IGJhc2UgPCVzPiBlbmNvZGluZyA8JXM+IiwgU3RyaW5n
KGlucHV0LCBsZW5ndGgpLnV0ZjgoKS5kYXRhKCksIGJhc2Uuc3RyaW5nKCkudXRmOCgpLmRhdGEo
KSwgZW5jb2RpbmcubmFtZSgpKTsKKyAgICBVUkxfUEFSU0VSX0xPRygiUGFyc2luZyBVUkwgPCVz
PiBiYXNlIDwlcz4iLCBTdHJpbmcoaW5wdXQsIGxlbmd0aCkudXRmOCgpLmRhdGEoKSwgYmFzZS5z
dHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICBtX3VybCA9IHsgfTsKICAgICBBU1NFUlQobV9h
c2NpaUJ1ZmZlci5pc0VtcHR5KCkpOwotICAgIAotICAgIGJvb2wgaXNVVEY4RW5jb2RpbmcgPSBl
bmNvZGluZyA9PSBVVEY4RW5jb2RpbmcoKTsKKwogICAgIFZlY3RvcjxVQ2hhcj4gcXVlcnlCdWZm
ZXI7CiAKICAgICB1bnNpZ25lZCBlbmRJbmRleCA9IGxlbmd0aDsKQEAgLTEyODcsNyArMTI4Niw3
IEBAIHZvaWQgVVJMUGFyc2VyOjpwYXJzZShjb25zdCBDaGFyYWN0ZXJUeXAKICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgY2FzZSBTY2hlbWU6OldTOgogICAgICAg
ICAgICAgICAgIGNhc2UgU2NoZW1lOjpXU1M6Ci0gICAgICAgICAgICAgICAgICAgIGlzVVRGOEVu
Y29kaW5nID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgbm9uVVRGOFF1ZXJ5RW5jb2Rpbmcg
PSBudWxscHRyOwogICAgICAgICAgICAgICAgICAgICBtX3VybElzU3BlY2lhbCA9IHRydWU7CiAg
ICAgICAgICAgICAgICAgICAgIGlmIChiYXNlLnByb3RvY29sSXModXJsU2NoZW1lKSkKICAgICAg
ICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlNwZWNpYWxSZWxhdGl2ZU9yQXV0aG9y
aXR5OwpAQCAtMTMwOSw3ICsxMzA4LDcgQEAgdm9pZCBVUkxQYXJzZXI6OnBhcnNlKGNvbnN0IENo
YXJhY3RlclR5cAogICAgICAgICAgICAgICAgICAgICArK2M7CiAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgICAgIGNhc2UgU2NoZW1lOjpOb25TcGVjaWFsOgotICAgICAg
ICAgICAgICAgICAgICBpc1VURjhFbmNvZGluZyA9IHRydWU7CisgICAgICAgICAgICAgICAgICAg
IG5vblVURjhRdWVyeUVuY29kaW5nID0gbnVsbHB0cjsKICAgICAgICAgICAgICAgICAgICAgYXV0
byBtYXliZVNsYXNoID0gYzsKICAgICAgICAgICAgICAgICAgICAgYWR2YW5jZShtYXliZVNsYXNo
KTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFtYXliZVNsYXNoLmF0RW5kKCkgJiYgKm1heWJl
U2xhc2ggPT0gJy8nKSB7CkBAIC0xMzUzLDcgKzEzNTIsNyBAQCB2b2lkIFVSTFBhcnNlcjo6cGFy
c2UoY29uc3QgQ2hhcmFjdGVyVHlwCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgaWYgKGJhc2UubV9jYW5ub3RCZUFCYXNlVVJMICYmICpjID09ICcj
JykgewotICAgICAgICAgICAgICAgIGNvcHlVUkxQYXJ0c1VudGlsKGJhc2UsIFVSTFBhcnQ6OlF1
ZXJ5RW5kLCBjLCBpc1VURjhFbmNvZGluZyk7CisgICAgICAgICAgICAgICAgY29weVVSTFBhcnRz
VW50aWwoYmFzZSwgVVJMUGFydDo6UXVlcnlFbmQsIGMsIG5vblVURjhRdWVyeUVuY29kaW5nKTsK
ICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpGcmFnbWVudDsKICAgICAgICAgICAgICAg
ICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcjJyk7CiAgICAgICAgICAgICAgICAgKytjOwpAQCAtMTM2
Myw3ICsxMzYyLDcgQEAgdm9pZCBVUkxQYXJzZXI6OnBhcnNlKGNvbnN0IENoYXJhY3RlclR5cAog
ICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlJlbGF0aXZlOwogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgY29weVVSTFBhcnRzVW50aWwoYmFz
ZSwgVVJMUGFydDo6U2NoZW1lRW5kLCBjLCBpc1VURjhFbmNvZGluZyk7CisgICAgICAgICAgICBj
b3B5VVJMUGFydHNVbnRpbChiYXNlLCBVUkxQYXJ0OjpTY2hlbWVFbmQsIGMsIG5vblVURjhRdWVy
eUVuY29kaW5nKTsKICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJzonKTsKICAgICAg
ICAgICAgIHN0YXRlID0gU3RhdGU6OkZpbGU7CiAgICAgICAgICAgICBicmVhazsKQEAgLTE0MTMs
MjQgKzE0MTIsMjMgQEAgdm9pZCBVUkxQYXJzZXI6OnBhcnNlKGNvbnN0IENoYXJhY3RlclR5cAog
ICAgICAgICAgICAgICAgICsrYzsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IGNhc2UgJz8nOgotICAgICAgICAgICAgICAgIGNvcHlVUkxQYXJ0c1VudGlsKGJhc2UsIFVSTFBh
cnQ6OlBhdGhFbmQsIGMsIGlzVVRGOEVuY29kaW5nKTsKKyAgICAgICAgICAgICAgICBjb3B5VVJM
UGFydHNVbnRpbChiYXNlLCBVUkxQYXJ0OjpQYXRoRW5kLCBjLCBub25VVEY4UXVlcnlFbmNvZGlu
Zyk7CiAgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignPycpOwogICAgICAgICAg
ICAgICAgICsrYzsKLSAgICAgICAgICAgICAgICBpZiAoaXNVVEY4RW5jb2RpbmcpCi0gICAgICAg
ICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlVURjhRdWVyeTsKLSAgICAgICAgICAgICAgICBl
bHNlIHsKKyAgICAgICAgICAgICAgICBpZiAobm9uVVRGOFF1ZXJ5RW5jb2RpbmcpIHsKICAgICAg
ICAgICAgICAgICAgICAgcXVlcnlCZWdpbiA9IGM7CiAgICAgICAgICAgICAgICAgICAgIHN0YXRl
ID0gU3RhdGU6Ok5vblVURjhRdWVyeTsKLSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlVURjhRdWVyeTsK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgJyMnOgotICAgICAgICAg
ICAgICAgIGNvcHlVUkxQYXJ0c1VudGlsKGJhc2UsIFVSTFBhcnQ6OlF1ZXJ5RW5kLCBjLCBpc1VU
RjhFbmNvZGluZyk7CisgICAgICAgICAgICAgICAgY29weVVSTFBhcnRzVW50aWwoYmFzZSwgVVJM
UGFydDo6UXVlcnlFbmQsIGMsIG5vblVURjhRdWVyeUVuY29kaW5nKTsKICAgICAgICAgICAgICAg
ICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcjJyk7CiAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0
ZTo6RnJhZ21lbnQ7CiAgICAgICAgICAgICAgICAgKytjOwogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBjb3B5VVJMUGFydHNVbnRp
bChiYXNlLCBVUkxQYXJ0OjpQYXRoQWZ0ZXJMYXN0U2xhc2gsIGMsIGlzVVRGOEVuY29kaW5nKTsK
KyAgICAgICAgICAgICAgICBjb3B5VVJMUGFydHNVbnRpbChiYXNlLCBVUkxQYXJ0OjpQYXRoQWZ0
ZXJMYXN0U2xhc2gsIGMsIG5vblVURjhRdWVyeUVuY29kaW5nKTsKICAgICAgICAgICAgICAgICBp
ZiAoY3VycmVudFBvc2l0aW9uKGMpICYmIHBhcnNlZERhdGFWaWV3KGN1cnJlbnRQb3NpdGlvbihj
KSAtIDEpICE9ICcvJykgewogICAgICAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVy
KCcvJyk7CiAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0g
Y3VycmVudFBvc2l0aW9uKGMpOwpAQCAtMTQ0Myw3ICsxNDQxLDcgQEAgdm9pZCBVUkxQYXJzZXI6
OnBhcnNlKGNvbnN0IENoYXJhY3RlclR5cAogICAgICAgICAgICAgTE9HX1NUQVRFKCJSZWxhdGl2
ZVNsYXNoIik7CiAgICAgICAgICAgICBpZiAoKmMgPT0gJy8nIHx8ICpjID09ICdcXCcpIHsKICAg
ICAgICAgICAgICAgICArK2M7Ci0gICAgICAgICAgICAgICAgY29weVVSTFBhcnRzVW50aWwoYmFz
ZSwgVVJMUGFydDo6U2NoZW1lRW5kLCBjLCBpc1VURjhFbmNvZGluZyk7CisgICAgICAgICAgICAg
ICAgY29weVVSTFBhcnRzVW50aWwoYmFzZSwgVVJMUGFydDo6U2NoZW1lRW5kLCBjLCBub25VVEY4
UXVlcnlFbmNvZGluZyk7CiAgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcigiOi8v
IiwgMyk7CiAgICAgICAgICAgICAgICAgaWYgKG1fdXJsSXNTcGVjaWFsKQogICAgICAgICAgICAg
ICAgICAgICBzdGF0ZSA9IFN0YXRlOjpTcGVjaWFsQXV0aG9yaXR5SWdub3JlU2xhc2hlczsKQEAg
LTE0NTMsNyArMTQ1MSw3IEBAIHZvaWQgVVJMUGFyc2VyOjpwYXJzZShjb25zdCBDaGFyYWN0ZXJU
eXAKICAgICAgICAgICAgICAgICAgICAgYXV0aG9yaXR5T3JIb3N0QmVnaW4gPSBjOwogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgY29weVVS
TFBhcnRzVW50aWwoYmFzZSwgVVJMUGFydDo6UG9ydEVuZCwgYywgaXNVVEY4RW5jb2RpbmcpOwor
ICAgICAgICAgICAgICAgIGNvcHlVUkxQYXJ0c1VudGlsKGJhc2UsIFVSTFBhcnQ6OlBvcnRFbmQs
IGMsIG5vblVURjhRdWVyeUVuY29kaW5nKTsKICAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJ
QnVmZmVyKCcvJyk7CiAgICAgICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2gg
PSBiYXNlLm1faG9zdEVuZCArIGJhc2UubV9wb3J0TGVuZ3RoICsgMTsKICAgICAgICAgICAgICAg
ICBzdGF0ZSA9IFN0YXRlOjpQYXRoOwpAQCAtMTU4NCw3ICsxNTgyLDcgQEAgdm9pZCBVUkxQYXJz
ZXI6OnBhcnNlKGNvbnN0IENoYXJhY3RlclR5cAogICAgICAgICAgICAgY2FzZSAnPyc6CiAgICAg
ICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwogICAgICAgICAgICAgICAgIGlmIChiYXNl
LmlzVmFsaWQoKSAmJiBiYXNlLnByb3RvY29sSXMoImZpbGUiKSkgewotICAgICAgICAgICAgICAg
ICAgICBjb3B5VVJMUGFydHNVbnRpbChiYXNlLCBVUkxQYXJ0OjpQYXRoRW5kLCBjLCBpc1VURjhF
bmNvZGluZyk7CisgICAgICAgICAgICAgICAgICAgIGNvcHlVUkxQYXJ0c1VudGlsKGJhc2UsIFVS
TFBhcnQ6OlBhdGhFbmQsIGMsIG5vblVURjhRdWVyeUVuY29kaW5nKTsKICAgICAgICAgICAgICAg
ICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignPycpOwogICAgICAgICAgICAgICAgICAgICArK2M7
CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKQEAgLTE1OTgsMTcgKzE1OTYsMTYgQEAgdm9pZCBV
UkxQYXJzZXI6OnBhcnNlKGNvbnN0IENoYXJhY3RlclR5cAogICAgICAgICAgICAgICAgICAgICBt
X3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0ICsgMTsKICAgICAg
ICAgICAgICAgICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xh
c2g7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChpc1VURjhFbmNvZGlu
ZykKLSAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6VVRGOFF1ZXJ5OwotICAgICAg
ICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGlmIChub25VVEY4UXVlcnlFbmNvZGlu
ZykgewogICAgICAgICAgICAgICAgICAgICBxdWVyeUJlZ2luID0gYzsKICAgICAgICAgICAgICAg
ICAgICAgc3RhdGUgPSBTdGF0ZTo6Tm9uVVRGOFF1ZXJ5OwotICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6
VVRGOFF1ZXJ5OwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSAnIyc6
CiAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwogICAgICAgICAgICAgICAgIGlm
IChiYXNlLmlzVmFsaWQoKSAmJiBiYXNlLnByb3RvY29sSXMoImZpbGUiKSkgewotICAgICAgICAg
ICAgICAgICAgICBjb3B5VVJMUGFydHNVbnRpbChiYXNlLCBVUkxQYXJ0OjpRdWVyeUVuZCwgYywg
aXNVVEY4RW5jb2RpbmcpOworICAgICAgICAgICAgICAgICAgICBjb3B5VVJMUGFydHNVbnRpbChi
YXNlLCBVUkxQYXJ0OjpRdWVyeUVuZCwgYywgbm9uVVRGOFF1ZXJ5RW5jb2RpbmcpOwogICAgICAg
ICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcjJyk7CiAgICAgICAgICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcigiLy8vIyIs
IDQpOwpAQCAtMTYyNyw3ICsxNjI0LDcgQEAgdm9pZCBVUkxQYXJzZXI6OnBhcnNlKGNvbnN0IENo
YXJhY3RlclR5cAogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBzeW50YXhW
aW9sYXRpb24oYyk7CiAgICAgICAgICAgICAgICAgaWYgKGJhc2UuaXNWYWxpZCgpICYmIGJhc2Uu
cHJvdG9jb2xJcygiZmlsZSIpICYmIHNob3VsZENvcHlGaWxlVVJMKGMpKQotICAgICAgICAgICAg
ICAgICAgICBjb3B5VVJMUGFydHNVbnRpbChiYXNlLCBVUkxQYXJ0OjpQYXRoQWZ0ZXJMYXN0U2xh
c2gsIGMsIGlzVVRGOEVuY29kaW5nKTsKKyAgICAgICAgICAgICAgICAgICAgY29weVVSTFBhcnRz
VW50aWwoYmFzZSwgVVJMUGFydDo6UGF0aEFmdGVyTGFzdFNsYXNoLCBjLCBub25VVEY4UXVlcnlF
bmNvZGluZyk7CiAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIGFw
cGVuZFRvQVNDSUlCdWZmZXIoIi8vLyIsIDMpOwogICAgICAgICAgICAgICAgICAgICBtX3VybC5t
X3VzZXJTdGFydCA9IGN1cnJlbnRQb3NpdGlvbihjKSAtIDE7CkBAIC0xNjkzLDEyICsxNjkwLDEx
IEBAIHZvaWQgVVJMUGFyc2VyOjpwYXJzZShjb25zdCBDaGFyYWN0ZXJUeXAKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcigiLz8iLCAyKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICArK2M7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzVVRGOEVu
Y29kaW5nKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpV
VEY4UXVlcnk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKG5vblVURjhRdWVyeUVuY29kaW5nKSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5QmVnaW4gPSBjOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpOb25VVEY4UXVlcnk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpVVEY4UXVlcnk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBj
dXJyZW50UG9zaXRpb24oYykgLSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJs
Lm1fcGF0aEVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTc3MSwxMiArMTc2NywxMSBAQCB2b2lkIFVSTFBhcnNl
cjo6cGFyc2UoY29uc3QgQ2hhcmFjdGVyVHlwCiAgICAgICAgICAgICAgICAgbV91cmwubV9wYXRo
RW5kID0gY3VycmVudFBvc2l0aW9uKGMpOwogICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlC
dWZmZXIoJz8nKTsKICAgICAgICAgICAgICAgICArK2M7Ci0gICAgICAgICAgICAgICAgaWYgKGlz
VVRGOEVuY29kaW5nKQotICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpVVEY4UXVl
cnk7Ci0gICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKG5vblVURjhR
dWVyeUVuY29kaW5nKSB7CiAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5QmVnaW4gPSBjOwogICAg
ICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpOb25VVEY4UXVlcnk7Ci0gICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAgICBzdGF0
ZSA9IFN0YXRlOjpVVEY4UXVlcnk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBpZiAoKmMgPT0gJyMnKSB7CkBAIC0xNzk0LDEyICsxNzg5LDExIEBA
IHZvaWQgVVJMUGFyc2VyOjpwYXJzZShjb25zdCBDaGFyYWN0ZXJUeXAKICAgICAgICAgICAgICAg
ICBtX3VybC5tX3BhdGhFbmQgPSBjdXJyZW50UG9zaXRpb24oYyk7CiAgICAgICAgICAgICAgICAg
YXBwZW5kVG9BU0NJSUJ1ZmZlcignPycpOwogICAgICAgICAgICAgICAgICsrYzsKLSAgICAgICAg
ICAgICAgICBpZiAoaXNVVEY4RW5jb2RpbmcpCi0gICAgICAgICAgICAgICAgICAgIHN0YXRlID0g
U3RhdGU6OlVURjhRdWVyeTsKLSAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAg
ICBpZiAobm9uVVRGOFF1ZXJ5RW5jb2RpbmcpIHsKICAgICAgICAgICAgICAgICAgICAgcXVlcnlC
ZWdpbiA9IGM7CiAgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6Ok5vblVURjhRdWVy
eTsKLSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAg
ICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlVURjhRdWVyeTsKICAgICAgICAgICAgIH0gZWxzZSBp
ZiAoKmMgPT0gJyMnKSB7CiAgICAgICAgICAgICAgICAgbV91cmwubV9wYXRoRW5kID0gY3VycmVu
dFBvc2l0aW9uKGMpOwogICAgICAgICAgICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBtX3VybC5t
X3BhdGhFbmQ7CkBAIC0xODIxLDEwICsxODE1LDggQEAgdm9pZCBVUkxQYXJzZXI6OnBhcnNlKGNv
bnN0IENoYXJhY3RlclR5cAogICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkZyYWdtZW50
OwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYg
KGlzVVRGOEVuY29kaW5nKQotICAgICAgICAgICAgICAgIHV0ZjhRdWVyeUVuY29kZShjKTsKLSAg
ICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBhcHBlbmRDb2RlUG9pbnQocXVlcnlCdWZm
ZXIsICpjKTsKKyAgICAgICAgICAgIEFTU0VSVCghbm9uVVRGOFF1ZXJ5RW5jb2RpbmcpOworICAg
ICAgICAgICAgdXRmOFF1ZXJ5RW5jb2RlKGMpOwogICAgICAgICAgICAgKytjOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgU3RhdGU6Ok5vblVURjhRdWVyeToKQEAgLTE4MzIsNyAr
MTgyNCw3IEBAIHZvaWQgVVJMUGFyc2VyOjpwYXJzZShjb25zdCBDaGFyYWN0ZXJUeXAKICAgICAg
ICAgICAgICAgICBMT0dfU1RBVEUoIk5vblVURjhRdWVyeSIpOwogICAgICAgICAgICAgICAgIEFT
U0VSVChxdWVyeUJlZ2luICE9IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KCkpOwog
ICAgICAgICAgICAgICAgIGlmICgqYyA9PSAnIycpIHsKLSAgICAgICAgICAgICAgICAgICAgZW5j
b2RlUXVlcnkocXVlcnlCdWZmZXIsIGVuY29kaW5nLCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0
ZXJUeXBlPihxdWVyeUJlZ2luLCBjKSk7CisgICAgICAgICAgICAgICAgICAgIGVuY29kZU5vblVU
RjhRdWVyeShxdWVyeUJ1ZmZlciwgKm5vblVURjhRdWVyeUVuY29kaW5nLCBDb2RlUG9pbnRJdGVy
YXRvcjxDaGFyYWN0ZXJUeXBlPihxdWVyeUJlZ2luLCBjKSk7CiAgICAgICAgICAgICAgICAgICAg
IG1fdXJsLm1fcXVlcnlFbmQgPSBjdXJyZW50UG9zaXRpb24oYyk7CiAgICAgICAgICAgICAgICAg
ICAgIHN0YXRlID0gU3RhdGU6OkZyYWdtZW50OwogICAgICAgICAgICAgICAgICAgICBicmVhazsK
QEAgLTE4NjgsNyArMTg2MCw3IEBAIHZvaWQgVVJMUGFyc2VyOjpwYXJzZShjb25zdCBDaGFyYWN0
ZXJUeXAKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICBjYXNlIFN0
YXRlOjpTcGVjaWFsUmVsYXRpdmVPckF1dGhvcml0eToKICAgICAgICAgTE9HX0ZJTkFMX1NUQVRF
KCJTcGVjaWFsUmVsYXRpdmVPckF1dGhvcml0eSIpOwotICAgICAgICBjb3B5VVJMUGFydHNVbnRp
bChiYXNlLCBVUkxQYXJ0OjpRdWVyeUVuZCwgYywgaXNVVEY4RW5jb2RpbmcpOworICAgICAgICBj
b3B5VVJMUGFydHNVbnRpbChiYXNlLCBVUkxQYXJ0OjpRdWVyeUVuZCwgYywgbm9uVVRGOFF1ZXJ5
RW5jb2RpbmcpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFN0YXRlOjpQYXRoT3JBdXRob3Jp
dHk6CiAgICAgICAgIExPR19GSU5BTF9TVEFURSgiUGF0aE9yQXV0aG9yaXR5Iik7CkBAIC0xODg5
LDcgKzE4ODEsNyBAQCB2b2lkIFVSTFBhcnNlcjo6cGFyc2UoY29uc3QgQ2hhcmFjdGVyVHlwCiAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgY2FzZSBTdGF0ZTo6UmVs
YXRpdmVTbGFzaDoKICAgICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJSZWxhdGl2ZVNsYXNoIik7Ci0g
ICAgICAgIGNvcHlVUkxQYXJ0c1VudGlsKGJhc2UsIFVSTFBhcnQ6OlBvcnRFbmQsIGMsIGlzVVRG
OEVuY29kaW5nKTsKKyAgICAgICAgY29weVVSTFBhcnRzVW50aWwoYmFzZSwgVVJMUGFydDo6UG9y
dEVuZCwgYywgbm9uVVRGOFF1ZXJ5RW5jb2RpbmcpOwogICAgICAgICBhcHBlbmRUb0FTQ0lJQnVm
ZmVyKCcvJyk7CiAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV9o
b3N0RW5kICsgbV91cmwubV9wb3J0TGVuZ3RoICsgMTsKICAgICAgICAgbV91cmwubV9wYXRoRW5k
ID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7CkBAIC0xOTUyLDcgKzE5NDQsNyBAQCB2b2lk
IFVSTFBhcnNlcjo6cGFyc2UoY29uc3QgQ2hhcmFjdGVyVHlwCiAgICAgY2FzZSBTdGF0ZTo6Rmls
ZToKICAgICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJGaWxlIik7CiAgICAgICAgIGlmIChiYXNlLmlz
VmFsaWQoKSAmJiBiYXNlLnByb3RvY29sSXMoImZpbGUiKSkgewotICAgICAgICAgICAgY29weVVS
TFBhcnRzVW50aWwoYmFzZSwgVVJMUGFydDo6UXVlcnlFbmQsIGMsIGlzVVRGOEVuY29kaW5nKTsK
KyAgICAgICAgICAgIGNvcHlVUkxQYXJ0c1VudGlsKGJhc2UsIFVSTFBhcnQ6OlF1ZXJ5RW5kLCBj
LCBub25VVEY4UXVlcnlFbmNvZGluZyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7CkBAIC0yMDQ3LDcgKzIwMzksNyBAQCB2b2lkIFVS
TFBhcnNlcjo6cGFyc2UoY29uc3QgQ2hhcmFjdGVyVHlwCiAgICAgY2FzZSBTdGF0ZTo6Tm9uVVRG
OFF1ZXJ5OgogICAgICAgICBMT0dfRklOQUxfU1RBVEUoIk5vblVURjhRdWVyeSIpOwogICAgICAg
ICBBU1NFUlQocXVlcnlCZWdpbiAhPSBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPigp
KTsKLSAgICAgICAgZW5jb2RlUXVlcnkocXVlcnlCdWZmZXIsIGVuY29kaW5nLCBDb2RlUG9pbnRJ
dGVyYXRvcjxDaGFyYWN0ZXJUeXBlPihxdWVyeUJlZ2luLCBjKSk7CisgICAgICAgIGVuY29kZU5v
blVURjhRdWVyeShxdWVyeUJ1ZmZlciwgKm5vblVURjhRdWVyeUVuY29kaW5nLCBDb2RlUG9pbnRJ
dGVyYXRvcjxDaGFyYWN0ZXJUeXBlPihxdWVyeUJlZ2luLCBjKSk7CiAgICAgICAgIG1fdXJsLm1f
cXVlcnlFbmQgPSBjdXJyZW50UG9zaXRpb24oYyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
U3RhdGU6OkZyYWdtZW50OgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMUGFyc2Vy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMUGFyc2VyLmgJKHJl
dmlzaW9uIDIzNjUzMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTFBhcnNlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVk
ZSAiVGV4dEVuY29kaW5nLmgiCiAjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL0V4cGVj
dGVkLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTM4LDcgKzM3LDcgQEAgdGVtcGxh
dGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gY2xhc3MgQwogCiBjbGFzcyBVUkxQYXJzZXIgewog
cHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIFVSTFBhcnNlcihjb25zdCBTdHJpbmcmLCBjb25z
dCBVUkwmID0geyB9LCBjb25zdCBUZXh0RW5jb2RpbmcmID0gVVRGOEVuY29kaW5nKCkpOworICAg
IFdFQkNPUkVfRVhQT1JUIFVSTFBhcnNlcihjb25zdCBTdHJpbmcmLCBjb25zdCBVUkwmID0geyB9
LCBjb25zdCBVUkxUZXh0RW5jb2RpbmcqID0gbnVsbHB0cik7CiAgICAgVVJMIHJlc3VsdCgpIHsg
cmV0dXJuIG1fdXJsOyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBhbGxWYWx1
ZXNFcXVhbChjb25zdCBVUkwmLCBjb25zdCBVUkwmKTsKQEAgLTcwLDcgKzY5LDcgQEAgcHJpdmF0
ZToKICAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBkZWZhdWx0SW5saW5lQnVmZmVyU2l6ZSA9
IDIwNDg7CiAgICAgdXNpbmcgTENoYXJCdWZmZXIgPSBWZWN0b3I8TENoYXIsIGRlZmF1bHRJbmxp
bmVCdWZmZXJTaXplPjsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZv
aWQgcGFyc2UoY29uc3QgQ2hhcmFjdGVyVHlwZSosIGNvbnN0IHVuc2lnbmVkIGxlbmd0aCwgY29u
c3QgVVJMJiwgY29uc3QgVGV4dEVuY29kaW5nJik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hh
cmFjdGVyVHlwZT4gdm9pZCBwYXJzZShjb25zdCBDaGFyYWN0ZXJUeXBlKiwgY29uc3QgdW5zaWdu
ZWQgbGVuZ3RoLCBjb25zdCBVUkwmLCBjb25zdCBVUkxUZXh0RW5jb2RpbmcqKTsKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIHBhcnNlQXV0aG9yaXR5KENvZGVQb2lu
dEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0
ZXJUeXBlPiBib29sIHBhcnNlSG9zdEFuZFBvcnQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVy
VHlwZT4pOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGJvb2wgcGFyc2VQ
b3J0KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+Jik7CkBAIC0xMDcsNyArMTA2LDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGFwcGVuZFRvQVNDSUlCdWZmZXIoVUNoYXIzMik7CiAgICAg
dm9pZCBhcHBlbmRUb0FTQ0lJQnVmZmVyKGNvbnN0IGNoYXIqLCBzaXplX3QpOwogICAgIHZvaWQg
YXBwZW5kVG9BU0NJSUJ1ZmZlcihjb25zdCBMQ2hhciogY2hhcmFjdGVycywgc2l6ZV90IHNpemUp
IHsgYXBwZW5kVG9BU0NJSUJ1ZmZlcihyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihjaGFy
YWN0ZXJzKSwgc2l6ZSk7IH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2
b2lkIGVuY29kZVF1ZXJ5KGNvbnN0IFZlY3RvcjxVQ2hhcj4mIHNvdXJjZSwgY29uc3QgVGV4dEVu
Y29kaW5nJiwgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4pOworICAgIHRlbXBsYXRl
PHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgZW5jb2RlTm9uVVRGOFF1ZXJ5KGNvbnN0IFZl
Y3RvcjxVQ2hhcj4mIHNvdXJjZSwgY29uc3QgVVJMVGV4dEVuY29kaW5nJiwgQ29kZVBvaW50SXRl
cmF0b3I8Q2hhcmFjdGVyVHlwZT4pOwogICAgIHZvaWQgY29weUFTQ0lJU3RyaW5nVW50aWwoY29u
c3QgU3RyaW5nJiwgc2l6ZV90IGxlbmd0aCk7CiAgICAgYm9vbCBjb3B5QmFzZVdpbmRvd3NEcml2
ZUxldHRlcihjb25zdCBVUkwmKTsKICAgICBTdHJpbmdWaWV3IHBhcnNlZERhdGFWaWV3KHNpemVf
dCBzdGFydCwgc2l6ZV90IGxlbmd0aCk7CkBAIC0xMjcsNyArMTI2LDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHNlcmlhbGl6ZUlQdjYoSVB2NkFkZHJlc3MpOwogCiAgICAgZW51bSBjbGFzcyBVUkxQ
YXJ0OwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgY29weVVSTFBh
cnRzVW50aWwoY29uc3QgVVJMJiBiYXNlLCBVUkxQYXJ0LCBjb25zdCBDb2RlUG9pbnRJdGVyYXRv
cjxDaGFyYWN0ZXJUeXBlPiYsIGJvb2wmIGlzVVRGOEVuY29kaW5nKTsKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIGNvcHlVUkxQYXJ0c1VudGlsKGNvbnN0IFVSTCYg
YmFzZSwgVVJMUGFydCwgY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mLCBj
b25zdCBVUkxUZXh0RW5jb2RpbmcqJik7CiAgICAgc3RhdGljIHNpemVfdCB1cmxMZW5ndGhVbnRp
bFBhcnQoY29uc3QgVVJMJiwgVVJMUGFydCk7CiAgICAgdm9pZCBwb3BQYXRoKCk7CiAgICAgYm9v
bCBzaG91bGRQb3BQYXRoKHVuc2lnbmVkKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvVGV4dEVuY29kaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L1RleHRFbmNvZGluZy5jcHAJKHJldmlzaW9uIDIzNjUzMikKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEVuY29kaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIlRleHRDb2RlYy5oIgogI2luY2x1ZGUgIlRleHRFbmNv
ZGluZ1JlZ2lzdHJ5LmgiCiAjaW5jbHVkZSA8dW5pY29kZS91bm9ybS5oPgorI2luY2x1ZGUgPHd0
Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5o
PgpAQCAtMzksNyArNDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBjb25zdCBU
ZXh0RW5jb2RpbmcmIFVURjdFbmNvZGluZygpCiB7Ci0gICAgc3RhdGljIFRleHRFbmNvZGluZyBn
bG9iYWxVVEY3RW5jb2RpbmcoIlVURi03Iik7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFRl
eHRFbmNvZGluZz4gZ2xvYmFsVVRGN0VuY29kaW5nKCJVVEYtNyIpOwogICAgIHJldHVybiBnbG9i
YWxVVEY3RW5jb2Rpbmc7CiB9CiAKQEAgLTE3Myw3ICsxNzQsNyBAQCBjb25zdCBUZXh0RW5jb2Rp
bmcmIFRleHRFbmNvZGluZzo6Y2xvc2VzCiAvLyBieXRlLWJhc2VkIGVuY29kaW5nIGFuZCBjYW4g
Y29udGFpbiAweDAwLiBCeSBleHRlbnNpb24sIHRoZSBzYW1lCiAvLyBzaG91bGQgYmUgZG9uZSBm
b3IgVVRGLTMyLiBJbiBjYXNlIG9mIFVURi03LCBpdCBpcyBhIGJ5dGUtYmFzZWQgZW5jb2Rpbmcs
CiAvLyBidXQgaXQncyBmcmF1Z2h0IHdpdGggcHJvYmxlbXMgYW5kIHdlJ2QgcmF0aGVyIHN0ZWVy
IGNsZWFyIG9mIGl0LgotY29uc3QgVGV4dEVuY29kaW5nJiBUZXh0RW5jb2Rpbmc6OmVuY29kaW5n
Rm9yRm9ybVN1Ym1pc3Npb24oKSBjb25zdAorY29uc3QgVGV4dEVuY29kaW5nJiBUZXh0RW5jb2Rp
bmc6OmVuY29kaW5nRm9yRm9ybVN1Ym1pc3Npb25PclVSTFBhcnNpbmcoKSBjb25zdAogewogICAg
IGlmIChpc05vbkJ5dGVCYXNlZEVuY29kaW5nKCkgfHwgaXNVVEY3RW5jb2RpbmcoKSkKICAgICAg
ICAgcmV0dXJuIFVURjhFbmNvZGluZygpOwpAQCAtMTgyLDM4ICsxODMsMzggQEAgY29uc3QgVGV4
dEVuY29kaW5nJiBUZXh0RW5jb2Rpbmc6OmVuY29kaQogCiBjb25zdCBUZXh0RW5jb2RpbmcmIEFT
Q0lJRW5jb2RpbmcoKQogewotICAgIHN0YXRpYyBUZXh0RW5jb2RpbmcgZ2xvYmFsQVNDSUlFbmNv
ZGluZygiQVNDSUkiKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VGV4dEVuY29kaW5nPiBn
bG9iYWxBU0NJSUVuY29kaW5nKCJBU0NJSSIpOwogICAgIHJldHVybiBnbG9iYWxBU0NJSUVuY29k
aW5nOwogfQogCiBjb25zdCBUZXh0RW5jb2RpbmcmIExhdGluMUVuY29kaW5nKCkKIHsKLSAgICBz
dGF0aWMgVGV4dEVuY29kaW5nIGdsb2JhbExhdGluMUVuY29kaW5nKCJsYXRpbjEiKTsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VGV4dEVuY29kaW5nPiBnbG9iYWxMYXRpbjFFbmNvZGluZygi
bGF0aW4xIik7CiAgICAgcmV0dXJuIGdsb2JhbExhdGluMUVuY29kaW5nOwogfQogCiBjb25zdCBU
ZXh0RW5jb2RpbmcmIFVURjE2QmlnRW5kaWFuRW5jb2RpbmcoKQogewotICAgIHN0YXRpYyBUZXh0
RW5jb2RpbmcgZ2xvYmFsVVRGMTZCaWdFbmRpYW5FbmNvZGluZygiVVRGLTE2QkUiKTsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VGV4dEVuY29kaW5nPiBnbG9iYWxVVEYxNkJpZ0VuZGlhbkVu
Y29kaW5nKCJVVEYtMTZCRSIpOwogICAgIHJldHVybiBnbG9iYWxVVEYxNkJpZ0VuZGlhbkVuY29k
aW5nOwogfQogCiBjb25zdCBUZXh0RW5jb2RpbmcmIFVURjE2TGl0dGxlRW5kaWFuRW5jb2Rpbmco
KQogewotICAgIHN0YXRpYyBUZXh0RW5jb2RpbmcgZ2xvYmFsVVRGMTZMaXR0bGVFbmRpYW5FbmNv
ZGluZygiVVRGLTE2TEUiKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VGV4dEVuY29kaW5n
PiBnbG9iYWxVVEYxNkxpdHRsZUVuZGlhbkVuY29kaW5nKCJVVEYtMTZMRSIpOwogICAgIHJldHVy
biBnbG9iYWxVVEYxNkxpdHRsZUVuZGlhbkVuY29kaW5nOwogfQogCiBjb25zdCBUZXh0RW5jb2Rp
bmcmIFVURjhFbmNvZGluZygpCiB7Ci0gICAgc3RhdGljIFRleHRFbmNvZGluZyBnbG9iYWxVVEY4
RW5jb2RpbmcoIlVURi04Iik7Ci0gICAgQVNTRVJUKGdsb2JhbFVURjhFbmNvZGluZy5pc1ZhbGlk
KCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxUZXh0RW5jb2Rpbmc+IGdsb2JhbFVURjhF
bmNvZGluZygiVVRGLTgiKTsKKyAgICBBU1NFUlQoZ2xvYmFsVVRGOEVuY29kaW5nLmdldCgpLmlz
VmFsaWQoKSk7CiAgICAgcmV0dXJuIGdsb2JhbFVURjhFbmNvZGluZzsKIH0KIAogY29uc3QgVGV4
dEVuY29kaW5nJiBXaW5kb3dzTGF0aW4xRW5jb2RpbmcoKQogewotICAgIHN0YXRpYyBUZXh0RW5j
b2RpbmcgZ2xvYmFsV2luZG93c0xhdGluMUVuY29kaW5nKCJXaW5MYXRpbi0xIik7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPFRleHRFbmNvZGluZz4gZ2xvYmFsV2luZG93c0xhdGluMUVuY29k
aW5nKCJXaW5MYXRpbi0xIik7CiAgICAgcmV0dXJuIGdsb2JhbFdpbmRvd3NMYXRpbjFFbmNvZGlu
ZzsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2Rpbmcu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGlu
Zy5oCShyZXZpc2lvbiAyMzY1MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1Rl
eHRFbmNvZGluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSwxMiArMjUsMTMgQEAKIAogI3ByYWdt
YSBvbmNlCiAKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxwYWwvdGV4dC9VbmVuY29kYWJs
ZUhhbmRsaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotY2xhc3MgVGV4dEVuY29kaW5nIHsKK2NsYXNzIFRleHRFbmNvZGluZyA6
IHB1YmxpYyBVUkxUZXh0RW5jb2RpbmcgewogcHVibGljOgogICAgIFRleHRFbmNvZGluZygpID0g
ZGVmYXVsdDsKICAgICBXRUJDT1JFX0VYUE9SVCBUZXh0RW5jb2RpbmcoY29uc3QgY2hhciogbmFt
ZSk7CkBAIC00MywxMSArNDQsMTIgQEAgcHVibGljOgogICAgIGJvb2wgaXNKYXBhbmVzZSgpIGNv
bnN0OwogCiAgICAgY29uc3QgVGV4dEVuY29kaW5nJiBjbG9zZXN0Qnl0ZUJhc2VkRXF1aXZhbGVu
dCgpIGNvbnN0OwotICAgIGNvbnN0IFRleHRFbmNvZGluZyYgZW5jb2RpbmdGb3JGb3JtU3VibWlz
c2lvbigpIGNvbnN0OworICAgIGNvbnN0IFRleHRFbmNvZGluZyYgZW5jb2RpbmdGb3JGb3JtU3Vi
bWlzc2lvbk9yVVJMUGFyc2luZygpIGNvbnN0OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5n
IGRlY29kZShjb25zdCBjaGFyKiwgc2l6ZV90IGxlbmd0aCwgYm9vbCBzdG9wT25FcnJvciwgYm9v
bCYgc2F3RXJyb3IpIGNvbnN0OwogICAgIFN0cmluZyBkZWNvZGUoY29uc3QgY2hhciosIHNpemVf
dCBsZW5ndGgpIGNvbnN0OwotICAgIFZlY3Rvcjx1aW50OF90PiBlbmNvZGUoU3RyaW5nVmlldywg
VW5lbmNvZGFibGVIYW5kbGluZykgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVp
bnQ4X3Q+IGVuY29kZShTdHJpbmdWaWV3LCBVbmVuY29kYWJsZUhhbmRsaW5nKSBjb25zdDsKKyAg
ICBWZWN0b3I8dWludDhfdD4gZW5jb2RlRm9yVVJMUGFyc2luZyhTdHJpbmdWaWV3IHN0cmluZywg
VW5lbmNvZGFibGVIYW5kbGluZyBoYW5kbGluZykgY29uc3QgZmluYWwgeyByZXR1cm4gZW5jb2Rl
KHN0cmluZywgaGFuZGxpbmcpOyB9CiAKICAgICBVQ2hhciBiYWNrc2xhc2hBc0N1cnJlbmN5U3lt
Ym9sKCkgY29uc3Q7CiAgICAgYm9vbCBpc0J5dGVCYXNlZEVuY29kaW5nKCkgY29uc3QgeyByZXR1
cm4gIWlzTm9uQnl0ZUJhc2VkRW5jb2RpbmcoKTsgfQpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjM2NTM4KQorKysgVG9vbHMv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTgtMDktMjYgIEFs
ZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBVUkxQ
YXJzZXIgc2hvdWxkIHVzZSBUZXh0RW5jb2RpbmcgdGhyb3VnaCBhbiBhYnN0cmFjdCBjbGFzcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwMDI3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvVVJMUGFyc2VyLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OmNoZWNrVVJMKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisKIDIwMTgt
MDktMjYgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAg
ICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjM2NTI0LgpJbmRleDogVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL1VSTFBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VSTFBhcnNlci5jcHAJKHJldmlzaW9uIDIzNjUz
MikKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VUkxQYXJzZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsyNSw3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJXVEZTdHJpbmdVdGlsaXRpZXMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1RleHRFbmNv
ZGluZy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVVJMUGFyc2VyLmg+CiAjaW5jbHVkZSA8d3RmL01h
aW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CkBAIC0yMTAs
NyArMjExLDcgQEAgc3RhdGljIHZvaWQgc2hvdWxkRmFpbChjb25zdCBTdHJpbmcmIHVybAogICAg
IGNoZWNrUmVsYXRpdmVVUkwodXJsU3RyaW5nLCBiYXNlU3RyaW5nLCB7IiIsICIiLCAiIiwgIiIs
IDAsICIiLCAiIiwgIiIsIHVybFN0cmluZ30pOwogfQogCi1zdGF0aWMgdm9pZCBjaGVja1VSTChj
b25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgVGV4dEVuY29kaW5nJiBlbmNvZGluZywgY29u
c3QgRXhwZWN0ZWRQYXJ0cyYgcGFydHMsIFRlc3RUYWJzIHRlc3RUYWJzID0gVGVzdFRhYnM6Olll
cykKK3N0YXRpYyB2b2lkIGNoZWNrVVJMKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBU
ZXh0RW5jb2RpbmcqIGVuY29kaW5nLCBjb25zdCBFeHBlY3RlZFBhcnRzJiBwYXJ0cywgVGVzdFRh
YnMgdGVzdFRhYnMgPSBUZXN0VGFiczo6WWVzKQogewogICAgIFVSTFBhcnNlciBwYXJzZXIodXJs
U3RyaW5nLCB7IH0sIGVuY29kaW5nKTsKICAgICBhdXRvIHVybCA9IHBhcnNlci5yZXN1bHQoKTsK
QEAgLTIzNSw3ICsyMzYsNyBAQCBzdGF0aWMgdm9pZCBjaGVja1VSTChjb25zdCBTdHJpbmcmIHVy
bFN0CiAgICAgfQogfQogCi1zdGF0aWMgdm9pZCBjaGVja1VSTChjb25zdCBTdHJpbmcmIHVybFN0
cmluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMU3RyaW5nLCBjb25zdCBUZXh0RW5jb2RpbmcmIGVu
Y29kaW5nLCBjb25zdCBFeHBlY3RlZFBhcnRzJiBwYXJ0cywgVGVzdFRhYnMgdGVzdFRhYnMgPSBU
ZXN0VGFiczo6WWVzKQorc3RhdGljIHZvaWQgY2hlY2tVUkwoY29uc3QgU3RyaW5nJiB1cmxTdHJp
bmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTFN0cmluZywgY29uc3QgVGV4dEVuY29kaW5nKiBlbmNv
ZGluZywgY29uc3QgRXhwZWN0ZWRQYXJ0cyYgcGFydHMsIFRlc3RUYWJzIHRlc3RUYWJzID0gVGVz
dFRhYnM6OlllcykKIHsKICAgICBVUkxQYXJzZXIgYmFzZVBhcnNlcihiYXNlVVJMU3RyaW5nLCB7
IH0sIGVuY29kaW5nKTsKICAgICBVUkxQYXJzZXIgcGFyc2VyKHVybFN0cmluZywgYmFzZVBhcnNl
ci5yZXN1bHQoKSwgZW5jb2RpbmcpOwpAQCAtMTI4NSwzNyArMTI4NiwzNyBAQCBURVNUX0YoVVJM
UGFyc2VyVGVzdCwgQWRkaXRpb25hbFRlc3RzKQogCiBURVNUX0YoVVJMUGFyc2VyVGVzdCwgUXVl
cnlFbmNvZGluZykKIHsKLSAgICBjaGVja1VSTCh1dGYxNlN0cmluZyh1Imh0dHA6Ly9ob3N0P8Of
8J+YjSPDn/CfmI0iKSwgVVRGOEVuY29kaW5nKCksIHsiaHR0cCIsICIiLCAiIiwgImhvc3QiLCAw
LCAiLyIsICIlQzMlOUYlRjAlOUYlOTglOEQiLCAiJUMzJTlGJUYwJTlGJTk4JThEIiwgdXRmMTZT
dHJpbmcodSJodHRwOi8vaG9zdC8/JUMzJTlGJUYwJTlGJTk4JThEIyVDMyU5RiVGMCU5RiU5OCU4
RCIpfSwgdGVzdFRhYnNWYWx1ZUZvclN1cnJvZ2F0ZVBhaXJzKTsKKyAgICBjaGVja1VSTCh1dGYx
NlN0cmluZyh1Imh0dHA6Ly9ob3N0P8Of8J+YjSPDn/CfmI0iKSwgbnVsbHB0ciwgeyJodHRwIiwg
IiIsICIiLCAiaG9zdCIsIDAsICIvIiwgIiVDMyU5RiVGMCU5RiU5OCU4RCIsICIlQzMlOUYlRjAl
OUYlOTglOEQiLCB1dGYxNlN0cmluZyh1Imh0dHA6Ly9ob3N0Lz8lQzMlOUYlRjAlOUYlOTglOEQj
JUMzJTlGJUYwJTlGJTk4JThEIil9LCB0ZXN0VGFic1ZhbHVlRm9yU3Vycm9nYXRlUGFpcnMpOwog
CiAgICAgVGV4dEVuY29kaW5nIGxhdGluMShTdHJpbmcoImxhdGluMSIpKTsKLSAgICBjaGVja1VS
TCgiaHR0cDovL2hvc3QvP3F1ZXJ5IHdpdGglMjBzcGFjZXMiLCBsYXRpbjEsIHsiaHR0cCIsICIi
LCAiIiwgImhvc3QiLCAwLCAiLyIsICJxdWVyeSUyMHdpdGglMjBzcGFjZXMiLCAiIiwgImh0dHA6
Ly9ob3N0Lz9xdWVyeSUyMHdpdGglMjBzcGFjZXMifSk7Ci0gICAgY2hlY2tVUkwoImh0dHA6Ly9o
b3N0Lz9xdWVyeSIsIGxhdGluMSwgeyJodHRwIiwgIiIsICIiLCAiaG9zdCIsIDAsICIvIiwgInF1
ZXJ5IiwgIiIsICJodHRwOi8vaG9zdC8/cXVlcnkifSk7Ci0gICAgY2hlY2tVUkwoImh0dHA6Ly9o
b3N0Lz9cdHF1ZXJ5IiwgbGF0aW4xLCB7Imh0dHAiLCAiIiwgIiIsICJob3N0IiwgMCwgIi8iLCAi
cXVlcnkiLCAiIiwgImh0dHA6Ly9ob3N0Lz9xdWVyeSJ9KTsKLSAgICBjaGVja1VSTCgiaHR0cDov
L2hvc3QvP3FcdHVlcnkiLCBsYXRpbjEsIHsiaHR0cCIsICIiLCAiIiwgImhvc3QiLCAwLCAiLyIs
ICJxdWVyeSIsICIiLCAiaHR0cDovL2hvc3QvP3F1ZXJ5In0pOwotICAgIGNoZWNrVVJMKCJodHRw
Oi8vaG9zdC8/cXVlcnkgd2l0aCBTcEFjRXMjZnJhZ21lbnQiLCBsYXRpbjEsIHsiaHR0cCIsICIi
LCAiIiwgImhvc3QiLCAwLCAiLyIsICJxdWVyeSUyMHdpdGglMjBTcEFjRXMiLCAiZnJhZ21lbnQi
LCAiaHR0cDovL2hvc3QvP3F1ZXJ5JTIwd2l0aCUyMFNwQWNFcyNmcmFnbWVudCJ9KTsKLSAgICBj
aGVja1VSTCgiaHR0cDovL2hvc3QvP3F1ZVxycnlcdFxyXG4jZnJhZ21lbnQiLCBsYXRpbjEsIHsi
aHR0cCIsICIiLCAiIiwgImhvc3QiLCAwLCAiLyIsICJxdWVyeSIsICJmcmFnbWVudCIsICJodHRw
Oi8vaG9zdC8/cXVlcnkjZnJhZ21lbnQifSk7CisgICAgY2hlY2tVUkwoImh0dHA6Ly9ob3N0Lz9x
dWVyeSB3aXRoJTIwc3BhY2VzIiwgJmxhdGluMSwgeyJodHRwIiwgIiIsICIiLCAiaG9zdCIsIDAs
ICIvIiwgInF1ZXJ5JTIwd2l0aCUyMHNwYWNlcyIsICIiLCAiaHR0cDovL2hvc3QvP3F1ZXJ5JTIw
d2l0aCUyMHNwYWNlcyJ9KTsKKyAgICBjaGVja1VSTCgiaHR0cDovL2hvc3QvP3F1ZXJ5IiwgJmxh
dGluMSwgeyJodHRwIiwgIiIsICIiLCAiaG9zdCIsIDAsICIvIiwgInF1ZXJ5IiwgIiIsICJodHRw
Oi8vaG9zdC8/cXVlcnkifSk7CisgICAgY2hlY2tVUkwoImh0dHA6Ly9ob3N0Lz9cdHF1ZXJ5Iiwg
JmxhdGluMSwgeyJodHRwIiwgIiIsICIiLCAiaG9zdCIsIDAsICIvIiwgInF1ZXJ5IiwgIiIsICJo
dHRwOi8vaG9zdC8/cXVlcnkifSk7CisgICAgY2hlY2tVUkwoImh0dHA6Ly9ob3N0Lz9xXHR1ZXJ5
IiwgJmxhdGluMSwgeyJodHRwIiwgIiIsICIiLCAiaG9zdCIsIDAsICIvIiwgInF1ZXJ5IiwgIiIs
ICJodHRwOi8vaG9zdC8/cXVlcnkifSk7CisgICAgY2hlY2tVUkwoImh0dHA6Ly9ob3N0Lz9xdWVy
eSB3aXRoIFNwQWNFcyNmcmFnbWVudCIsICZsYXRpbjEsIHsiaHR0cCIsICIiLCAiIiwgImhvc3Qi
LCAwLCAiLyIsICJxdWVyeSUyMHdpdGglMjBTcEFjRXMiLCAiZnJhZ21lbnQiLCAiaHR0cDovL2hv
c3QvP3F1ZXJ5JTIwd2l0aCUyMFNwQWNFcyNmcmFnbWVudCJ9KTsKKyAgICBjaGVja1VSTCgiaHR0
cDovL2hvc3QvP3F1ZVxycnlcdFxyXG4jZnJhZ21lbnQiLCAmbGF0aW4xLCB7Imh0dHAiLCAiIiwg
IiIsICJob3N0IiwgMCwgIi8iLCAicXVlcnkiLCAiZnJhZ21lbnQiLCAiaHR0cDovL2hvc3QvP3F1
ZXJ5I2ZyYWdtZW50In0pOwogCiAgICAgVGV4dEVuY29kaW5nIHVucmVjb2duaXplZChTdHJpbmco
InVucmVjb2duaXplZCBpbnZhbGlkIGVuY29kaW5nIG5hbWUiKSk7Ci0gICAgY2hlY2tVUkwoImh0
dHA6Ly9ob3N0Lz9xdWVyeSIsIHVucmVjb2duaXplZCwgeyJodHRwIiwgIiIsICIiLCAiaG9zdCIs
IDAsICIvIiwgIiIsICIiLCAiaHR0cDovL2hvc3QvPyJ9KTsKLSAgICBjaGVja1VSTCgiaHR0cDov
L2hvc3QvPyIsIHVucmVjb2duaXplZCwgeyJodHRwIiwgIiIsICIiLCAiaG9zdCIsIDAsICIvIiwg
IiIsICIiLCAiaHR0cDovL2hvc3QvPyJ9KTsKKyAgICBjaGVja1VSTCgiaHR0cDovL2hvc3QvP3F1
ZXJ5IiwgJnVucmVjb2duaXplZCwgeyJodHRwIiwgIiIsICIiLCAiaG9zdCIsIDAsICIvIiwgIiIs
ICIiLCAiaHR0cDovL2hvc3QvPyJ9KTsKKyAgICBjaGVja1VSTCgiaHR0cDovL2hvc3QvPyIsICZ1
bnJlY29nbml6ZWQsIHsiaHR0cCIsICIiLCAiIiwgImhvc3QiLCAwLCAiLyIsICIiLCAiIiwgImh0
dHA6Ly9ob3N0Lz8ifSk7CiAKICAgICBUZXh0RW5jb2RpbmcgaXNvODg1OTEoU3RyaW5nKCJJU08t
ODg1OS0xIikpOwogICAgIFN0cmluZyB3aXRoVW1sYXV0cyA9IHV0ZjE2U3RyaW5nPDQ+KHsweERD
LCAweDQzMCwgMHg0NTEsICdcMCd9KTsKLSAgICBjaGVja1VSTChtYWtlU3RyaW5nKCJ3czovL2hv
c3QvcGF0aD8iLCB3aXRoVW1sYXV0cyksIGlzbzg4NTkxLCB7IndzIiwgIiIsICIiLCAiaG9zdCIs
IDAsICIvcGF0aCIsICIlQzMlOUMlRDAlQjAlRDElOTEiLCAiIiwgIndzOi8vaG9zdC9wYXRoPyVD
MyU5QyVEMCVCMCVEMSU5MSJ9KTsKLSAgICBjaGVja1VSTChtYWtlU3RyaW5nKCJ3c3M6Ly9ob3N0
L3BhdGg/Iiwgd2l0aFVtbGF1dHMpLCBpc284ODU5MSwgeyJ3c3MiLCAiIiwgIiIsICJob3N0Iiwg
MCwgIi9wYXRoIiwgIiVDMyU5QyVEMCVCMCVEMSU5MSIsICIiLCAid3NzOi8vaG9zdC9wYXRoPyVD
MyU5QyVEMCVCMCVEMSU5MSJ9KTsKLSAgICBjaGVja1VSTChtYWtlU3RyaW5nKCJhc2RmOi8vaG9z
dC9wYXRoPyIsIHdpdGhVbWxhdXRzKSwgaXNvODg1OTEsIHsiYXNkZiIsICIiLCAiIiwgImhvc3Qi
LCAwLCAiL3BhdGgiLCAiJUMzJTlDJUQwJUIwJUQxJTkxIiwgIiIsICJhc2RmOi8vaG9zdC9wYXRo
PyVDMyU5QyVEMCVCMCVEMSU5MSJ9KTsKLSAgICBjaGVja1VSTChtYWtlU3RyaW5nKCJodHRwczov
L2hvc3QvcGF0aD8iLCB3aXRoVW1sYXV0cyksIGlzbzg4NTkxLCB7Imh0dHBzIiwgIiIsICIiLCAi
aG9zdCIsIDAsICIvcGF0aCIsICIlREMlMjYlMjMxMDcyJTNCJTI2JTIzMTEwNSUzQiIsICIiLCAi
aHR0cHM6Ly9ob3N0L3BhdGg/JURDJTI2JTIzMTA3MiUzQiUyNiUyMzExMDUlM0IifSk7Ci0gICAg
Y2hlY2tVUkwobWFrZVN0cmluZygiZ29waGVyOi8vaG9zdC9wYXRoPyIsIHdpdGhVbWxhdXRzKSwg
aXNvODg1OTEsIHsiZ29waGVyIiwgIiIsICIiLCAiaG9zdCIsIDAsICIvcGF0aCIsICIlREMlMjYl
MjMxMDcyJTNCJTI2JTIzMTEwNSUzQiIsICIiLCAiZ29waGVyOi8vaG9zdC9wYXRoPyVEQyUyNiUy
MzEwNzIlM0IlMjYlMjMxMTA1JTNCIn0pOwotICAgIGNoZWNrVVJMKG1ha2VTdHJpbmcoIi9wYXRo
PyIsIHdpdGhVbWxhdXRzLCAiI2ZyYWdtZW50IiksICJ3czovL2V4YW1wbGUuY29tLyIsIGlzbzg4
NTkxLCB7IndzIiwgIiIsICIiLCAiZXhhbXBsZS5jb20iLCAwLCAiL3BhdGgiLCAiJUMzJTlDJUQw
JUIwJUQxJTkxIiwgImZyYWdtZW50IiwgIndzOi8vZXhhbXBsZS5jb20vcGF0aD8lQzMlOUMlRDAl
QjAlRDElOTEjZnJhZ21lbnQifSk7Ci0gICAgY2hlY2tVUkwobWFrZVN0cmluZygiL3BhdGg/Iiwg
d2l0aFVtbGF1dHMsICIjZnJhZ21lbnQiKSwgIndzczovL2V4YW1wbGUuY29tLyIsIGlzbzg4NTkx
LCB7IndzcyIsICIiLCAiIiwgImV4YW1wbGUuY29tIiwgMCwgIi9wYXRoIiwgIiVDMyU5QyVEMCVC
MCVEMSU5MSIsICJmcmFnbWVudCIsICJ3c3M6Ly9leGFtcGxlLmNvbS9wYXRoPyVDMyU5QyVEMCVC
MCVEMSU5MSNmcmFnbWVudCJ9KTsKLSAgICBjaGVja1VSTChtYWtlU3RyaW5nKCIvcGF0aD8iLCB3
aXRoVW1sYXV0cywgIiNmcmFnbWVudCIpLCAiYXNkZjovL2V4YW1wbGUuY29tLyIsIGlzbzg4NTkx
LCB7ImFzZGYiLCAiIiwgIiIsICJleGFtcGxlLmNvbSIsIDAsICIvcGF0aCIsICIlQzMlOUMlRDAl
QjAlRDElOTEiLCAiZnJhZ21lbnQiLCAiYXNkZjovL2V4YW1wbGUuY29tL3BhdGg/JUMzJTlDJUQw
JUIwJUQxJTkxI2ZyYWdtZW50In0pOwotICAgIGNoZWNrVVJMKG1ha2VTdHJpbmcoIi9wYXRoPyIs
IHdpdGhVbWxhdXRzLCAiI2ZyYWdtZW50IiksICJodHRwczovL2V4YW1wbGUuY29tLyIsIGlzbzg4
NTkxLCB7Imh0dHBzIiwgIiIsICIiLCAiZXhhbXBsZS5jb20iLCAwLCAiL3BhdGgiLCAiJURDJTI2
JTIzMTA3MiUzQiUyNiUyMzExMDUlM0IiLCAiZnJhZ21lbnQiLCAiaHR0cHM6Ly9leGFtcGxlLmNv
bS9wYXRoPyVEQyUyNiUyMzEwNzIlM0IlMjYlMjMxMTA1JTNCI2ZyYWdtZW50In0pOwotICAgIGNo
ZWNrVVJMKG1ha2VTdHJpbmcoIi9wYXRoPyIsIHdpdGhVbWxhdXRzLCAiI2ZyYWdtZW50IiksICJn
b3BoZXI6Ly9leGFtcGxlLmNvbS8iLCBpc284ODU5MSwgeyJnb3BoZXIiLCAiIiwgIiIsICJleGFt
cGxlLmNvbSIsIDAsICIvcGF0aCIsICIlREMlMjYlMjMxMDcyJTNCJTI2JTIzMTEwNSUzQiIsICJm
cmFnbWVudCIsICJnb3BoZXI6Ly9leGFtcGxlLmNvbS9wYXRoPyVEQyUyNiUyMzEwNzIlM0IlMjYl
MjMxMTA1JTNCI2ZyYWdtZW50In0pOwotICAgIGNoZWNrVVJMKG1ha2VTdHJpbmcoImdvcGhlcjov
L2hvc3QvcGF0aD8iLCB3aXRoVW1sYXV0cywgIiNmcmFnbWVudCIpLCAiYXNkZjovL2V4YW1wbGUu
Y29tLz9kb2VzbnRtYXR0ZXIiLCBpc284ODU5MSwgeyJnb3BoZXIiLCAiIiwgIiIsICJob3N0Iiwg
MCwgIi9wYXRoIiwgIiVEQyUyNiUyMzEwNzIlM0IlMjYlMjMxMTA1JTNCIiwgImZyYWdtZW50Iiwg
ImdvcGhlcjovL2hvc3QvcGF0aD8lREMlMjYlMjMxMDcyJTNCJTI2JTIzMTEwNSUzQiNmcmFnbWVu
dCJ9KTsKLSAgICBjaGVja1VSTChtYWtlU3RyaW5nKCJhc2RmOi8vaG9zdC9wYXRoPyIsIHdpdGhV
bWxhdXRzLCAiI2ZyYWdtZW50IiksICJodHRwOi8vZXhhbXBsZS5jb20vP2RvZXNudG1hdHRlciIs
IGlzbzg4NTkxLCB7ImFzZGYiLCAiIiwgIiIsICJob3N0IiwgMCwgIi9wYXRoIiwgIiVDMyU5QyVE
MCVCMCVEMSU5MSIsICJmcmFnbWVudCIsICJhc2RmOi8vaG9zdC9wYXRoPyVDMyU5QyVEMCVCMCVE
MSU5MSNmcmFnbWVudCJ9KTsKKyAgICBjaGVja1VSTChtYWtlU3RyaW5nKCJ3czovL2hvc3QvcGF0
aD8iLCB3aXRoVW1sYXV0cyksICZpc284ODU5MSwgeyJ3cyIsICIiLCAiIiwgImhvc3QiLCAwLCAi
L3BhdGgiLCAiJUMzJTlDJUQwJUIwJUQxJTkxIiwgIiIsICJ3czovL2hvc3QvcGF0aD8lQzMlOUMl
RDAlQjAlRDElOTEifSk7CisgICAgY2hlY2tVUkwobWFrZVN0cmluZygid3NzOi8vaG9zdC9wYXRo
PyIsIHdpdGhVbWxhdXRzKSwgJmlzbzg4NTkxLCB7IndzcyIsICIiLCAiIiwgImhvc3QiLCAwLCAi
L3BhdGgiLCAiJUMzJTlDJUQwJUIwJUQxJTkxIiwgIiIsICJ3c3M6Ly9ob3N0L3BhdGg/JUMzJTlD
JUQwJUIwJUQxJTkxIn0pOworICAgIGNoZWNrVVJMKG1ha2VTdHJpbmcoImFzZGY6Ly9ob3N0L3Bh
dGg/Iiwgd2l0aFVtbGF1dHMpLCAmaXNvODg1OTEsIHsiYXNkZiIsICIiLCAiIiwgImhvc3QiLCAw
LCAiL3BhdGgiLCAiJUMzJTlDJUQwJUIwJUQxJTkxIiwgIiIsICJhc2RmOi8vaG9zdC9wYXRoPyVD
MyU5QyVEMCVCMCVEMSU5MSJ9KTsKKyAgICBjaGVja1VSTChtYWtlU3RyaW5nKCJodHRwczovL2hv
c3QvcGF0aD8iLCB3aXRoVW1sYXV0cyksICZpc284ODU5MSwgeyJodHRwcyIsICIiLCAiIiwgImhv
c3QiLCAwLCAiL3BhdGgiLCAiJURDJTI2JTIzMTA3MiUzQiUyNiUyMzExMDUlM0IiLCAiIiwgImh0
dHBzOi8vaG9zdC9wYXRoPyVEQyUyNiUyMzEwNzIlM0IlMjYlMjMxMTA1JTNCIn0pOworICAgIGNo
ZWNrVVJMKG1ha2VTdHJpbmcoImdvcGhlcjovL2hvc3QvcGF0aD8iLCB3aXRoVW1sYXV0cyksICZp
c284ODU5MSwgeyJnb3BoZXIiLCAiIiwgIiIsICJob3N0IiwgMCwgIi9wYXRoIiwgIiVEQyUyNiUy
MzEwNzIlM0IlMjYlMjMxMTA1JTNCIiwgIiIsICJnb3BoZXI6Ly9ob3N0L3BhdGg/JURDJTI2JTIz
MTA3MiUzQiUyNiUyMzExMDUlM0IifSk7CisgICAgY2hlY2tVUkwobWFrZVN0cmluZygiL3BhdGg/
Iiwgd2l0aFVtbGF1dHMsICIjZnJhZ21lbnQiKSwgIndzOi8vZXhhbXBsZS5jb20vIiwgJmlzbzg4
NTkxLCB7IndzIiwgIiIsICIiLCAiZXhhbXBsZS5jb20iLCAwLCAiL3BhdGgiLCAiJUMzJTlDJUQw
JUIwJUQxJTkxIiwgImZyYWdtZW50IiwgIndzOi8vZXhhbXBsZS5jb20vcGF0aD8lQzMlOUMlRDAl
QjAlRDElOTEjZnJhZ21lbnQifSk7CisgICAgY2hlY2tVUkwobWFrZVN0cmluZygiL3BhdGg/Iiwg
d2l0aFVtbGF1dHMsICIjZnJhZ21lbnQiKSwgIndzczovL2V4YW1wbGUuY29tLyIsICZpc284ODU5
MSwgeyJ3c3MiLCAiIiwgIiIsICJleGFtcGxlLmNvbSIsIDAsICIvcGF0aCIsICIlQzMlOUMlRDAl
QjAlRDElOTEiLCAiZnJhZ21lbnQiLCAid3NzOi8vZXhhbXBsZS5jb20vcGF0aD8lQzMlOUMlRDAl
QjAlRDElOTEjZnJhZ21lbnQifSk7CisgICAgY2hlY2tVUkwobWFrZVN0cmluZygiL3BhdGg/Iiwg
d2l0aFVtbGF1dHMsICIjZnJhZ21lbnQiKSwgImFzZGY6Ly9leGFtcGxlLmNvbS8iLCAmaXNvODg1
OTEsIHsiYXNkZiIsICIiLCAiIiwgImV4YW1wbGUuY29tIiwgMCwgIi9wYXRoIiwgIiVDMyU5QyVE
MCVCMCVEMSU5MSIsICJmcmFnbWVudCIsICJhc2RmOi8vZXhhbXBsZS5jb20vcGF0aD8lQzMlOUMl
RDAlQjAlRDElOTEjZnJhZ21lbnQifSk7CisgICAgY2hlY2tVUkwobWFrZVN0cmluZygiL3BhdGg/
Iiwgd2l0aFVtbGF1dHMsICIjZnJhZ21lbnQiKSwgImh0dHBzOi8vZXhhbXBsZS5jb20vIiwgJmlz
bzg4NTkxLCB7Imh0dHBzIiwgIiIsICIiLCAiZXhhbXBsZS5jb20iLCAwLCAiL3BhdGgiLCAiJURD
JTI2JTIzMTA3MiUzQiUyNiUyMzExMDUlM0IiLCAiZnJhZ21lbnQiLCAiaHR0cHM6Ly9leGFtcGxl
LmNvbS9wYXRoPyVEQyUyNiUyMzEwNzIlM0IlMjYlMjMxMTA1JTNCI2ZyYWdtZW50In0pOworICAg
IGNoZWNrVVJMKG1ha2VTdHJpbmcoIi9wYXRoPyIsIHdpdGhVbWxhdXRzLCAiI2ZyYWdtZW50Iiks
ICJnb3BoZXI6Ly9leGFtcGxlLmNvbS8iLCAmaXNvODg1OTEsIHsiZ29waGVyIiwgIiIsICIiLCAi
ZXhhbXBsZS5jb20iLCAwLCAiL3BhdGgiLCAiJURDJTI2JTIzMTA3MiUzQiUyNiUyMzExMDUlM0Ii
LCAiZnJhZ21lbnQiLCAiZ29waGVyOi8vZXhhbXBsZS5jb20vcGF0aD8lREMlMjYlMjMxMDcyJTNC
JTI2JTIzMTEwNSUzQiNmcmFnbWVudCJ9KTsKKyAgICBjaGVja1VSTChtYWtlU3RyaW5nKCJnb3Bo
ZXI6Ly9ob3N0L3BhdGg/Iiwgd2l0aFVtbGF1dHMsICIjZnJhZ21lbnQiKSwgImFzZGY6Ly9leGFt
cGxlLmNvbS8/ZG9lc250bWF0dGVyIiwgJmlzbzg4NTkxLCB7ImdvcGhlciIsICIiLCAiIiwgImhv
c3QiLCAwLCAiL3BhdGgiLCAiJURDJTI2JTIzMTA3MiUzQiUyNiUyMzExMDUlM0IiLCAiZnJhZ21l
bnQiLCAiZ29waGVyOi8vaG9zdC9wYXRoPyVEQyUyNiUyMzEwNzIlM0IlMjYlMjMxMTA1JTNCI2Zy
YWdtZW50In0pOworICAgIGNoZWNrVVJMKG1ha2VTdHJpbmcoImFzZGY6Ly9ob3N0L3BhdGg/Iiwg
d2l0aFVtbGF1dHMsICIjZnJhZ21lbnQiKSwgImh0dHA6Ly9leGFtcGxlLmNvbS8/ZG9lc250bWF0
dGVyIiwgJmlzbzg4NTkxLCB7ImFzZGYiLCAiIiwgIiIsICJob3N0IiwgMCwgIi9wYXRoIiwgIiVD
MyU5QyVEMCVCMCVEMSU5MSIsICJmcmFnbWVudCIsICJhc2RmOi8vaG9zdC9wYXRoPyVDMyU5QyVE
MCVCMCVEMSU5MSNmcmFnbWVudCJ9KTsKIAotICAgIGNoZWNrVVJMKCJodHRwOi8vaG9zdC9wYSd0
aD9xdSdlcnkjZnInYWdtZW50IiwgVVRGOEVuY29kaW5nKCksIHsiaHR0cCIsICIiLCAiIiwgImhv
c3QiLCAwLCAiL3BhJ3RoIiwgInF1JTI3ZXJ5IiwgImZyJ2FnbWVudCIsICJodHRwOi8vaG9zdC9w
YSd0aD9xdSUyN2VyeSNmcidhZ21lbnQifSk7Ci0gICAgY2hlY2tVUkwoImFzZGY6Ly9ob3N0L3Bh
J3RoP3F1J2VyeSNmcidhZ21lbnQiLCBVVEY4RW5jb2RpbmcoKSwgeyJhc2RmIiwgIiIsICIiLCAi
aG9zdCIsIDAsICIvcGEndGgiLCAicXUnZXJ5IiwgImZyJ2FnbWVudCIsICJhc2RmOi8vaG9zdC9w
YSd0aD9xdSdlcnkjZnInYWdtZW50In0pOworICAgIGNoZWNrVVJMKCJodHRwOi8vaG9zdC9wYSd0
aD9xdSdlcnkjZnInYWdtZW50IiwgbnVsbHB0ciwgeyJodHRwIiwgIiIsICIiLCAiaG9zdCIsIDAs
ICIvcGEndGgiLCAicXUlMjdlcnkiLCAiZnInYWdtZW50IiwgImh0dHA6Ly9ob3N0L3BhJ3RoP3F1
JTI3ZXJ5I2ZyJ2FnbWVudCJ9KTsKKyAgICBjaGVja1VSTCgiYXNkZjovL2hvc3QvcGEndGg/cXUn
ZXJ5I2ZyJ2FnbWVudCIsIG51bGxwdHIsIHsiYXNkZiIsICIiLCAiIiwgImhvc3QiLCAwLCAiL3Bh
J3RoIiwgInF1J2VyeSIsICJmcidhZ21lbnQiLCAiYXNkZjovL2hvc3QvcGEndGg/cXUnZXJ5I2Zy
J2FnbWVudCJ9KTsKICAgICAvLyBGSVhNRTogQWRkIG1vcmUgdGVzdHMgd2l0aCBvdGhlciBlbmNv
ZGluZ3MgYW5kIHRoaW5ncyBsaWtlIG5vbi1hc2NpaSBjaGFyYWN0ZXJzLCBlbW9qaSBhbmQgdW5t
YXRjaGVkIHN1cnJvZ2F0ZSBwYWlycy4KIH0KIAo=
</data>
<flag name="review"
          id="368312"
          type_id="1"
          status="+"
          setter="aestes"
    />
          </attachment>
      

    </bug>

</bugzilla>