<?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>53859</bug_id>
          
          <creation_ts>2011-02-05 14:29:45 -0800</creation_ts>
          <short_desc>Delete XSSAuditor</short_desc>
          <delta_ts>2011-02-05 14:55:34 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>dbates</cc>
    
    <cc>eric</cc>
    
    <cc>webkit-ews</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>346191</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-02-05 14:29:45 -0800</bug_when>
    <thetext>Delete XSSAuditor</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>346192</commentid>
    <comment_count>1</comment_count>
      <attachid>81375</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-02-05 14:30:52 -0800</bug_when>
    <thetext>Created attachment 81375
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>346194</commentid>
    <comment_count>2</comment_count>
      <attachid>81375</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-02-05 14:42:29 -0800</bug_when>
    <thetext>Comment on attachment 81375
Patch

OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>346197</commentid>
    <comment_count>3</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-02-05 14:54:23 -0800</bug_when>
    <thetext>Attachment 81375 did not build on qt:
Build output: http://queues.webkit.org/results/7698910</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>346198</commentid>
    <comment_count>4</comment_count>
      <attachid>81375</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-02-05 14:55:30 -0800</bug_when>
    <thetext>Comment on attachment 81375
Patch

Clearing flags on attachment: 81375

Committed r77752: &lt;http://trac.webkit.org/changeset/77752&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>346199</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-02-05 14:55:34 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>81375</attachid>
            <date>2011-02-05 14:30:52 -0800</date>
            <delta_ts>2011-02-05 14:55:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-53859-20110205143051.patch</filename>
            <type>text/plain</type>
            <size>49721</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0FuZHJvaWQubWsgYi9Tb3VyY2UvV2ViQ29yZS9B
bmRyb2lkLm1rCmluZGV4IDk2YzYzMDlhYzM0ZWM5NzJlNmFkYmUwZDk3YWJhY2ZlYzVjY2MxY2Eu
LmFhOTgzYjRlZjY4YzkxZWQ3NTFhM2RiOTg4YjYzNGFmZTFiNzExM2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0FuZHJvaWQubWsKKysrIGIvU291cmNlL1dlYkNvcmUvQW5kcm9pZC5tawpA
QCAtNDQ1LDcgKzQ0NSw2IEBAIExPQ0FMX1NSQ19GSUxFUyA6PSAkKExPQ0FMX1NSQ19GSUxFUykg
XAogCXBhZ2UvVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcCBcCiAJcGFnZS9XaW5kb3dGZWF0dXJl
cy5jcHAgXAogCXBhZ2UvV29ya2VyTmF2aWdhdG9yLmNwcCBcCi0JcGFnZS9YU1NBdWRpdG9yLmNw
cCBcCiAJXAogCXBhZ2UvYW5kcm9pZC9EcmFnQ29udHJvbGxlckFuZHJvaWQuY3BwIFwKIAlwYWdl
L2FuZHJvaWQvRXZlbnRIYW5kbGVyQW5kcm9pZC5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRl
eCA0MDZhNWJmNTI2YTU0OWRlOGRiNDNjYTUxM2I3OTk2YjkzODBlZWJhLi5kMTc4MmJiNjkyZTRj
NjFlNzI5Mzg3MjNlMmFlZGNlMDRlZjY0YTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTI4
OCw3ICsxMjg4LDYgQEAgU0VUKFdlYkNvcmVfU09VUkNFUwogICAgIHBhZ2UvVXNlckNvbnRlbnRV
UkxQYXR0ZXJuLmNwcAogICAgIHBhZ2UvV2luZG93RmVhdHVyZXMuY3BwCiAgICAgcGFnZS9Xb3Jr
ZXJOYXZpZ2F0b3IuY3BwCi0gICAgcGFnZS9YU1NBdWRpdG9yLmNwcAogCiAgICAgcGFnZS9hbmlt
YXRpb24vQW5pbWF0aW9uQmFzZS5jcHAKICAgICBwYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250
cm9sbGVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGVhYzQyZGE0NzNhM2Y2MDkxMGVmMjBjMDYwNjE3MGFk
MTNjZDJiY2UuLjNkNTdiNjU4ZDljMWYxN2I0MzNkZmNlMzBiNWZkOThkOGM5NzM3Y2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw0OCBAQAorMjAxMS0wMi0wNSAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3
ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIERlbGV0ZSBYU1NBdWRpdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01Mzg1OQorCisgICAgICAgIFRoZSBqb2Igb2YgdGhlIFhTU0F1ZGl0b3Ig
aXMgbm93IGRvbmUgYnkgdGhlIFhTU0ZpbHRlci4gIEluIHRoZSBmdXR1cmUsCisgICAgICAgIHdl
IG1pZ2h0IHJlbmFtZSBYU1NGaWx0ZXIgdG8gWFNTQXVkaXRvci4KKworICAgICAgICAqIEFuZHJv
aWQubWs6CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUu
YW06CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBiaW5kaW5ncy9TY3JpcHRDb250cm9sbGVyQmFzZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlSWZKYXZhU2NyaXB0VVJMKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9TY3JpcHRDb250cm9sbGVyQmFzZS5oOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29u
dHJvbGxlcjo6U2NyaXB0Q29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250
cm9sbGVyOjpldmFsdWF0ZUluV29ybGQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENv
bnRyb2xsZXIuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRFdmVudExpc3RlbmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIpOgorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0Q29udHJvbGxlcjo6U2NyaXB0Q29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvU2Ny
aXB0Q29udHJvbGxlci5oOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdEV2ZW50TGlzdGVu
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcik6
CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
OjppbXBsaWNpdE9wZW4pOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnByb2Nlc3NCYXNl
RWxlbWVudCk6CisgICAgICAgICogZG9tL1NjcmlwdGFibGVEb2N1bWVudFBhcnNlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXI6OlNjcmlwdGFibGVEb2N1
bWVudFBhcnNlcik6CisgICAgICAgICogZG9tL1NjcmlwdGFibGVEb2N1bWVudFBhcnNlci5oOgor
ICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6OnNob3VsZExvYWRFeHRlcm5hbFNjcmlwdEZyb21T
cmMpOgorICAgICAgICAqIGxvYWRlci9TdWJmcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTdWJmcmFtZUxvYWRlcjo6cmVxdWVzdE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpT
dWJmcmFtZUxvYWRlcjo6bG9hZE1lZGlhUGxheWVyUHJveHlQbHVnaW4pOgorICAgICAgICAqIHBh
Z2UvWFNTQXVkaXRvci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcGFnZS9YU1NBdWRpdG9yLmg6
IFJlbW92ZWQuCisKIDIwMTEtMDItMDUgIFJvYmVydCBIb2dhbiAgPHJvYmVydEB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFudG9uaW8gR29tZXMuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFt
CmluZGV4IGEwYzU5ZGI2OTk2MGFlM2Q5ZjcwODE5ZjdkNjJkZTcwMzczYWY0YWMuLmMwMWQ3OTc4
NGVlOGRhNzkyY2YzNGMxYWUxYTJjNjk5M2IwN2RjZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBA
IC0yMjk0LDggKzIyOTQsNiBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3Jl
L3BhZ2UvV2luZG93RmVhdHVyZXMuaCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9Xb3JrZXJOYXZp
Z2F0b3IuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL1dvcmtlck5hdmlnYXRvci5oIFwKLQlT
b3VyY2UvV2ViQ29yZS9wYWdlL1hTU0F1ZGl0b3IuY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9wYWdl
L1hTU0F1ZGl0b3IuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1h
dGlvbi5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRpb24u
aCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvbkxpc3QuY3Bw
IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQppbmRleCA2NWNiOGY3Yjg4MTVkNGU1NGU1MDYxYTk5ZjViNmU2ZWZi
MTdlMzIyLi5kZTEwNzIzYjE3NjEzOTEyN2VjMTUxMzUxYzgzNmRjYjVjNjU0NjcyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCkBAIC0yMzg3LDggKzIzODcsNiBAQAogICAgICAgICAgICAgJ3BhZ2UvV2luZG93
RmVhdHVyZXMuaCcsCiAgICAgICAgICAgICAncGFnZS9Xb3JrZXJOYXZpZ2F0b3IuY3BwJywKICAg
ICAgICAgICAgICdwYWdlL1dvcmtlck5hdmlnYXRvci5oJywKLSAgICAgICAgICAgICdwYWdlL1hT
U0F1ZGl0b3IuY3BwJywKLSAgICAgICAgICAgICdwYWdlL1hTU0F1ZGl0b3IuaCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vYXVkaW8vQXVkaW9BcnJheS5oJywKICAgICAgICAgICAgICdwbGF0Zm9y
bS9hdWRpby9BdWRpb0J1cy5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9hdWRpby9BdWRpb0J1
cy5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpp
bmRleCBkYjM0OWUxYmE4ZGRjOTIyZTdjZjUyNTY4MWM1MGNiMTlmZDljYmUxLi44NTJjYTQxM2Iw
NTIwYzQ4ZTg3N2I3MzM4YzJiMTgyNTMwMzM4OWE4IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtMjQ4MjUsMTQgKzI0ODI1LDYgQEAKIAkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXHBhZ2VcV29ya2VyTmF2aWdhdG9yLmgiCiAJCQkJPgogCQkJPC9GaWxl
PgotCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBhZ2VcWFNTQXVkaXRvci5jcHAiCi0J
CQkJPgotCQkJPC9GaWxlPgotCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBhZ2VcWFNT
QXVkaXRvci5oIgotCQkJCT4KLQkJCTwvRmlsZT4KIAkJCTxGaWx0ZXIKIAkJCQlOYW1lPSJ3aW4i
CiAJCQkJPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IGM0NTI4YTkyYWE3MTI2ZmYxZWZmNjc1Mjk5MmExZjRhYzE2Nzc2YmMuLjVm
NzUzZDRlMTk0YTRiNjk4M2Q5MzQ4Zjg2MmZhMTMzZmZhYzVlNTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTMxMTksOCArMzEx
OSw2IEBACiAJCTk3QzQ3MURDMTJGOTI1QkQwMDg2MzU0QiAvKiBDb250ZW50U2VjdXJpdHlQb2xp
Y3kuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3QzQ3
MURBMTJGOTI1QkQwMDg2MzU0QiAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3kuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5N0RDRTIwMTEwODA3Qzc1
MDA1N0QzOTQgLyogSGlzdG9yeUNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdEQ0UxRkYxMDgwN0M3NTAwNTdEMzk0IC8qIEhpc3Rv
cnlDb250cm9sbGVyLmNwcCAqLzsgfTsKIAkJOTdEQ0UyMDIxMDgwN0M3NTAwNTdEMzk0IC8qIEhp
c3RvcnlDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5N0RDRTIwMDEwODA3Qzc1MDA1N0QzOTQgLyogSGlzdG9yeUNvbnRyb2xsZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk5N0RENEQ4
NjBGREY0RDZFMDBFQ0Y5QTQgLyogWFNTQXVkaXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5N0RENEQ4NDBGREY0RDZEMDBFQ0Y5QTQgLyogWFNT
QXVkaXRvci5jcHAgKi87IH07Ci0JCTk3REQ0RDg3MEZERjRENkUwMEVDRjlBNCAvKiBYU1NBdWRp
dG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5N0RE
NEQ4NTBGREY0RDZFMDBFQ0Y5QTQgLyogWFNTQXVkaXRvci5oICovOyB9OwogCQk5N0VGN0RGRTEw
N0U1NUI3MDBEN0M0OUMgLyogU2NyaXB0Q29udHJvbGxlckJhc2UuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdFRjdERkQxMDdFNTVCNzAwRDdDNDlD
IC8qIFNjcmlwdENvbnRyb2xsZXJCYXNlLmNwcCAqLzsgfTsKIAkJOUI0MTcwNjQxMjU2NjJCMzAw
NkIyOEZDIC8qIEFwcGx5QmxvY2tFbGVtZW50Q29tbWFuZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUI0MTcwNjIxMjU2NjJCMzAwNkIyOEZDIC8qIEFw
cGx5QmxvY2tFbGVtZW50Q29tbWFuZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTlCNDE3MDY1MTI1NjYyQjMwMDZCMjhGQyAvKiBBcHBseUJsb2Nr
RWxlbWVudENvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOUI0MTcwNjMxMjU2NjJCMzAwNkIyOEZDIC8qIEFwcGx5QmxvY2tFbGVtZW50Q29t
bWFuZC5jcHAgKi87IH07CkBAIC05NTIxLDggKzk1MTksNiBAQAogCQk5N0M0NzFEQTEyRjkyNUJE
MDA4NjM1NEIgLyogQ29udGVudFNlY3VyaXR5UG9saWN5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IENvbnRlbnRTZWN1cml0eVBvbGljeS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5N0RDRTFGRjEwODA3Qzc1MDA1N0QzOTQgLyogSGlzdG9yeUNvbnRyb2xsZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSGlzdG9yeUNvbnRyb2xs
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5N0RDRTIwMDEwODA3Qzc1MDA1
N0QzOTQgLyogSGlzdG9yeUNvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSGlzdG9yeUNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
OTdERDREODQwRkRGNEQ2RDAwRUNGOUE0IC8qIFhTU0F1ZGl0b3IuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gWFNTQXVkaXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTk3REQ0RDg1MEZERjRENkUwMEVDRjlBNCAvKiBYU1NBdWRpdG9yLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFhTU0F1ZGl0b3IuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOTdFRjdERkQxMDdFNTVCNzAwRDdDNDlDIC8qIFNjcmlwdENvbnRy
b2xsZXJCYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlw
dENvbnRyb2xsZXJCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUI0MTcw
NjIxMjU2NjJCMzAwNkIyOEZDIC8qIEFwcGx5QmxvY2tFbGVtZW50Q29tbWFuZC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcHBseUJsb2NrRWxlbWVudENvbW1hbmQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUI0MTcwNjMxMjU2NjJCMzAwNkIyOEZDIC8qIEFw
cGx5QmxvY2tFbGVtZW50Q29tbWFuZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBBcHBseUJsb2NrRWxlbWVudENvbW1hbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTQxMzQsOCArMTQxMzAsNiBAQAogCQkJCUUxMjcxQTEzMEVFRUM4MDQwMEY2
MTIxMyAvKiBXb3JrZXJOYXZpZ2F0b3IuY3BwICovLAogCQkJCUUxMjcxQTBBMEVFRUM3N0EwMEY2
MTIxMyAvKiBXb3JrZXJOYXZpZ2F0b3IuaCAqLywKIAkJCQlFMTI3MUE1MTBFRUVDRDFDMDBGNjEy
MTMgLyogV29ya2VyTmF2aWdhdG9yLmlkbCAqLywKLQkJCQk5N0RENEQ4NDBGREY0RDZEMDBFQ0Y5
QTQgLyogWFNTQXVkaXRvci5jcHAgKi8sCi0JCQkJOTdERDREODUwRkRGNEQ2RTAwRUNGOUE0IC8q
IFhTU0F1ZGl0b3IuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gcGFnZTsKIAkJCXNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7CkBAIC0yMjQ3OSw3ICsyMjQ3Myw2IEBACiAJCQkJRTFGMUU4MzAwQzNDMkJC
OTAwNkRCMzkxIC8qIFhTTFRFeHRlbnNpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0YxOTlF
RDA4MjQ1RTU5MDAxRTlBQkMgLyogWFNMVFByb2Nlc3Nvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RTFCRTUxMkUwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRVbmljb2RlU29ydC5oIGluIEhlYWRlcnMg
Ki8sCi0JCQkJOTdERDREODcwRkRGNEQ2RTAwRUNGOUE0IC8qIFhTU0F1ZGl0b3IuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDOEFFMzRGMTJFQTA5NkEwMEVCM0FFNiAvKiBTY3JvbGxhYmxlQXJlYS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNEYyRDIwNTQxMkVBRTdCMzAwNUMyODc0IC8qIEluc3BlY3Rv
ckFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzk1ODVFMTEyRjA5ODk1MDA3NTU4MjEgLyog
UGxhdGZvcm1HZXN0dXJlRXZlbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjUxODQsNyArMjUxNzcs
NiBAQAogCQkJCTkzRjE5QjA0MDgyNDVFNTkwMDFFOUFCQyAvKiBYU0xUUHJvY2Vzc29yLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTkzRjE5QjA1MDgyNDVFNTkwMDFFOUFCQyAvKiBYU0xUUHJvY2Vz
c29yTGlieHNsdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMUJFNTEyRDBDRjZDNTEyMDAyRUE5
NTkgLyogWFNMVFVuaWNvZGVTb3J0LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTk3REQ0RDg2MEZE
RjRENkUwMEVDRjlBNCAvKiBYU1NBdWRpdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDOEFF
MzRFMTJFQTA5NkEwMEVCM0FFNiAvKiBTY3JvbGxhYmxlQXJlYS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk0RjJEMjA1NTEyRUFFN0IzMDA1QzI4NzQgLyogSW5zcGVjdG9yQWdlbnQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJOTc3RTJEQ0QxMkYwRTI4MzAwQzEzMzc5IC8qIEhUTUxTb3VyY2VUcmFj
a2VyLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvU2NyaXB0Q29udHJvbGxlckJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvU2Ny
aXB0Q29udHJvbGxlckJhc2UuY3BwCmluZGV4IDg1ZThiMGM2ZWY3YTY1NzQ4NzMzY2YzNGZkM2Nl
OWYxZmNiZDE0ODIuLjc4NzFlMGU3NDdkZWYwMjgxZDhhYzQ4OWE1YmE0NjA1MDI3ZjZiNzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL1NjcmlwdENvbnRyb2xsZXJCYXNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9TY3JpcHRDb250cm9sbGVyQmFzZS5jcHAK
QEAgLTI3LDcgKzI3LDYgQEAKICNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCiAjaW5jbHVk
ZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgotI2luY2x1ZGUgIlhTU0F1
ZGl0b3IuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC04OCw5ICs4Nyw3IEBAIGJvb2wg
U2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZUlmSmF2YVNjcmlwdFVSTChjb25zdCBLVVJMJiB1cmws
IFNob3VsZFJlcGxhY2VEb2N1CiAgICAgY29uc3QgaW50IGphdmFzY3JpcHRTY2hlbWVMZW5ndGgg
PSBzaXplb2YoImphdmFzY3JpcHQ6IikgLSAxOwogCiAgICAgU3RyaW5nIGRlY29kZWRVUkwgPSBk
ZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXModXJsLnN0cmluZygpKTsKLSAgICBTY3JpcHRWYWx1ZSBy
ZXN1bHQ7Ci0gICAgaWYgKHhzc0F1ZGl0b3IoKS0+Y2FuRXZhbHVhdGVKYXZhU2NyaXB0VVJMKGRl
Y29kZWRVUkwpKQotICAgICAgICByZXN1bHQgPSBleGVjdXRlU2NyaXB0KGRlY29kZWRVUkwuc3Vi
c3RyaW5nKGphdmFzY3JpcHRTY2hlbWVMZW5ndGgpLCBmYWxzZSwgQWxsb3dYU1MpOworICAgIFNj
cmlwdFZhbHVlIHJlc3VsdCA9IGV4ZWN1dGVTY3JpcHQoZGVjb2RlZFVSTC5zdWJzdHJpbmcoamF2
YXNjcmlwdFNjaGVtZUxlbmd0aCksIGZhbHNlLCBBbGxvd1hTUyk7CiAKICAgICAvLyBJZiBleGVj
dXRpbmcgc2NyaXB0IGNhdXNlZCB0aGlzIGZyYW1lIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUgcGFn
ZSwgd2UKICAgICAvLyBkb24ndCB3YW50IHRvIHRyeSB0byByZXBsYWNlIGl0cyBkb2N1bWVudCEK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL1NjcmlwdENvbnRyb2xsZXJCYXNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9TY3JpcHRDb250cm9sbGVyQmFzZS5oCmluZGV4
IGVkNmNhNjIwOTE1MDI2Yzk4Yzg4OGY4NTg3MGYzOGYzNTA1Y2VmNDUuLjcwMDMxYzk0NjI5OTRm
M2VmNGNkYTBjZDdiMjUwZWNhM2Y3M2IzZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL1NjcmlwdENvbnRyb2xsZXJCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvU2NyaXB0Q29udHJvbGxlckJhc2UuaApAQCAtMzcsNyArMzcsNyBAQCBlbnVtIFJlYXNvbkZv
ckNhbGxpbmdDYW5FeGVjdXRlU2NyaXB0cyB7CiAgICAgTm90QWJvdXRUb0V4ZWN1dGVTY3JpcHQK
IH07CiAKLS8vIFdoZXRoZXIgdG8gY2FsbCB0aGUgWFNTQXVkaXRvciB0byBhdWRpdCBhIHNjcmlw
dCBiZWZvcmUgcGFzc2luZyBpdCB0byB0aGUgSmF2YVNjcmlwdCBlbmdpbmUuCisvLyBGSVhNRTog
UmVtb3ZlIHRoaXMgZW51bSBhbmQgYWxsIHJlZmVyZW5jZXMgdG8gaXQuCiBlbnVtIFNob3VsZEFs
bG93WFNTIHsKICAgICBBbGxvd1hTUywKICAgICBEb05vdEFsbG93WFNTCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IGNmNTUwODBiM2Yy
OTViODViMTQ2OTYwZGNhYjBmMzIyNTkwMmZmZjAuLjg0NjA4YjExYTkyNDgxYWZkNDBjMTdiYTIy
Yjc5MWZlYTY5MDZlZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dENvbnRyb2xsZXIuY3BwCkBAIC00MCw3ICs0MCw2IEBACiAjaW5jbHVkZSAiU3RvcmFnZU5hbWVz
cGFjZS5oIgogI2luY2x1ZGUgIlVzZXJHZXN0dXJlSW5kaWNhdG9yLmgiCiAjaW5jbHVkZSAiV2Vi
Q29yZUpTQ2xpZW50RGF0YS5oIgotI2luY2x1ZGUgIlhTU0F1ZGl0b3IuaCIKICNpbmNsdWRlICJu
cHJ1bnRpbWVfaW1wbC5oIgogI2luY2x1ZGUgInJ1bnRpbWVfcm9vdC5oIgogI2luY2x1ZGUgPGRl
YnVnZ2VyL0RlYnVnZ2VyLmg+CkBAIC03Miw3ICs3MSw2IEBAIFNjcmlwdENvbnRyb2xsZXI6OlNj
cmlwdENvbnRyb2xsZXIoRnJhbWUqIGZyYW1lKQogI2lmIFBMQVRGT1JNKE1BQykKICAgICAsIG1f
d2luZG93U2NyaXB0T2JqZWN0KDApCiAjZW5kaWYKLSAgICAsIG1fWFNTQXVkaXRvcihuZXcgWFNT
QXVkaXRvcihmcmFtZSkpCiB7CiAjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoSkFWQV9CUklE
R0UpCiAgICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWRKYXZhSlNCaW5kaW5nczsKQEAgLTExNiwx
NiArMTE0LDExIEBAIEpTRE9NV2luZG93U2hlbGwqIFNjcmlwdENvbnRyb2xsZXI6OmNyZWF0ZVdp
bmRvd1NoZWxsKERPTVdyYXBwZXJXb3JsZCogd29ybGQpCiAgICAgcmV0dXJuIHdpbmRvd1NoZWxs
OwogfQogCi1TY3JpcHRWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZUluV29ybGQoY29u
c3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSwgRE9NV3JhcHBlcldvcmxkKiB3b3JsZCwg
U2hvdWxkQWxsb3dYU1Mgc2hvdWxkQWxsb3dYU1MpCitTY3JpcHRWYWx1ZSBTY3JpcHRDb250cm9s
bGVyOjpldmFsdWF0ZUluV29ybGQoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSwg
RE9NV3JhcHBlcldvcmxkKiB3b3JsZCwgU2hvdWxkQWxsb3dYU1MpCiB7CiAgICAgY29uc3QgU291
cmNlQ29kZSYganNTb3VyY2VDb2RlID0gc291cmNlQ29kZS5qc1NvdXJjZUNvZGUoKTsKICAgICBT
dHJpbmcgc291cmNlVVJMID0gdXN0cmluZ1RvU3RyaW5nKGpzU291cmNlQ29kZS5wcm92aWRlcigp
LT51cmwoKSk7CiAKLSAgICBpZiAoc2hvdWxkQWxsb3dYU1MgPT0gRG9Ob3RBbGxvd1hTUyAmJiAh
bV9YU1NBdWRpdG9yLT5jYW5FdmFsdWF0ZShzb3VyY2VDb2RlLnNvdXJjZSgpKSkgewotICAgICAg
ICAvLyBUaGlzIHNjcmlwdCBpcyBub3Qgc2FmZSB0byBiZSBldmFsdWF0ZWQuCi0gICAgICAgIHJl
dHVybiBKU1ZhbHVlKCk7Ci0gICAgfQotCiAgICAgLy8gZXZhbHVhdGUgY29kZS4gUmV0dXJucyB0
aGUgSlMgcmV0dXJuIHZhbHVlIG9yIDAKICAgICAvLyBpZiB0aGVyZSB3YXMgbm9uZSwgYW4gZXJy
b3Igb2NjdXJyZWQgb3IgdGhlIHR5cGUgY291bGRuJ3QgYmUgY29udmVydGVkLgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKaW5kZXggNDEzYjg4YWJk
N2Y5N2ZkYjMxYTE2MDEwMWQwZTg0Y2FmMjY2OWMwZC4uZTViZDUwMjNmNTc4M2Q2MjlmMDhkMTRh
YTU1NDBkZWFlMzJmMjFhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dENvbnRyb2xsZXIuaApAQCAtNTksNyArNTksNiBAQCBjbGFzcyBOb2RlOwogY2xhc3MgU2NyaXB0
U291cmNlQ29kZTsKIGNsYXNzIFNjcmlwdFZhbHVlOwogY2xhc3MgV2lkZ2V0OwotY2xhc3MgWFNT
QXVkaXRvcjsKIAogdHlwZWRlZiBIYXNoTWFwPHZvaWQqLCBSZWZQdHI8SlNDOjpCaW5kaW5nczo6
Um9vdE9iamVjdD4gPiBSb290T2JqZWN0TWFwOwogCkBAIC0xNjgsOCArMTY3LDYgQEAgcHVibGlj
OgogICAgIE5QT2JqZWN0KiBjcmVhdGVTY3JpcHRPYmplY3RGb3JQbHVnaW5FbGVtZW50KEhUTUxQ
bHVnSW5FbGVtZW50Kik7CiAgICAgTlBPYmplY3QqIHdpbmRvd1NjcmlwdE5QT2JqZWN0KCk7CiAj
ZW5kaWYKLSAgICAKLSAgICBYU1NBdWRpdG9yKiB4c3NBdWRpdG9yKCkgeyByZXR1cm4gbV9YU1NB
dWRpdG9yLmdldCgpOyB9CiAKIHByaXZhdGU6CiAgICAgSlNET01XaW5kb3dTaGVsbCogaW5pdFNj
cmlwdChET01XcmFwcGVyV29ybGQqIHdvcmxkKTsKQEAgLTIwMiw5ICsxOTksNiBAQCBwcml2YXRl
OgogI2lmIFBMQVRGT1JNKE1BQykKICAgICBSZXRhaW5QdHI8V2ViU2NyaXB0T2JqZWN0PiBtX3dp
bmRvd1NjcmlwdE9iamVjdDsKICNlbmRpZgotICAgIAotICAgIC8vIFRoZSBYU1NBdWRpdG9yIGFz
c29jaWF0ZWQgd2l0aCB0aGlzIFNjcmlwdENvbnRyb2xsZXIuCi0gICAgT3duUHRyPFhTU0F1ZGl0
b3I+IG1fWFNTQXVkaXRvcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEV2ZW50TGlzdGVuZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RXZlbnRMaXN0ZW5lci5jcHAKaW5kZXgg
ZDJiYWY4MmUzMjFhY2ZmYzI5YWZkZjdjMDE1OWQzNmVkMDQzZDZmMC4uM2EwM2Y1OTJjMWEyYTdh
ZmIyMTQ4NTYwMzI5MmI4YjkwYjJmM2Y5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0RXZlbnRMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0RXZlbnRMaXN0ZW5lci5jcHAKQEAgLTM2LDcgKzM2LDYgQEAKICNpbmNs
dWRlICJFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiSlNOb2RlLmgiCiAjaW5jbHVkZSAiRnJh
bWUuaCIKLSNpbmNsdWRlICJYU1NBdWRpdG9yLmgiCiAjaW5jbHVkZSA8cnVudGltZS9KU0xvY2su
aD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKQEAgLTY2LDExICs2NSw2IEBAIFBhc3NSZWZQdHI8
SlNMYXp5RXZlbnRMaXN0ZW5lcj4gY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcihOb2RlKiBu
b2RlLCBBdHRyaWJ1CiAgICAgICAgIGlmICghc2NyaXB0Q29udHJvbGxlci0+Y2FuRXhlY3V0ZVNj
cmlwdHMoQWJvdXRUb0V4ZWN1dGVTY3JpcHQpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAKLSAg
ICAgICAgaWYgKCFzY3JpcHRDb250cm9sbGVyLT54c3NBdWRpdG9yKCktPmNhbkNyZWF0ZUlubGlu
ZUV2ZW50TGlzdGVuZXIoYXR0ci0+bG9jYWxOYW1lKCkuc3RyaW5nKCksIGF0dHItPnZhbHVlKCkp
KSB7Ci0gICAgICAgICAgICAvLyBUaGlzIHNjcmlwdCBpcyBub3Qgc2FmZSB0byBleGVjdXRlLgot
ICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KLQogICAgICAgICBsaW5lTnVtYmVyID0g
c2NyaXB0Q29udHJvbGxlci0+ZXZlbnRIYW5kbGVyTGluZU51bWJlcigpOwogICAgICAgICBzb3Vy
Y2VVUkwgPSBub2RlLT5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmcoKTsKICAgICB9CkBAIC05NCwx
MSArODgsNiBAQCBQYXNzUmVmUHRyPEpTTGF6eUV2ZW50TGlzdGVuZXI+IGNyZWF0ZUF0dHJpYnV0
ZUV2ZW50TGlzdGVuZXIoRnJhbWUqIGZyYW1lLCBBdHRyaQogICAgIGlmICghc2NyaXB0Q29udHJv
bGxlci0+Y2FuRXhlY3V0ZVNjcmlwdHMoQWJvdXRUb0V4ZWN1dGVTY3JpcHQpKQogICAgICAgICBy
ZXR1cm4gMDsKIAotICAgIGlmICghc2NyaXB0Q29udHJvbGxlci0+eHNzQXVkaXRvcigpLT5jYW5D
cmVhdGVJbmxpbmVFdmVudExpc3RlbmVyKGF0dHItPmxvY2FsTmFtZSgpLnN0cmluZygpLCBhdHRy
LT52YWx1ZSgpKSkgewotICAgICAgICAvLyBUaGlzIHNjcmlwdCBpcyBub3Qgc2FmZSB0byBleGVj
dXRlLgotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KICAgICBsaW5lTnVtYmVyID0gc2NyaXB0
Q29udHJvbGxlci0+ZXZlbnRIYW5kbGVyTGluZU51bWJlcigpOwogICAgIHNvdXJjZVVSTCA9IGZy
YW1lLT5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmcoKTsKICAgICBKU09iamVjdCogd3JhcHBlciA9
IHRvSlNET01XaW5kb3coZnJhbWUsIG1haW5UaHJlYWROb3JtYWxXb3JsZCgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggNzAxYmQx
OTdkNzNlNmNkYmE3MzA2YmE1NjcxZWQxN2I4MzkwNWNkNC4uNTMxM2YxY2YyOGJhYzRjNjM0NDNm
NzY5ZjQxNGRjZmU3MjkzNmE4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
U2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTYxLDcgKzYxLDYgQEAKICNpbmNsdWRlICJWOE5QT2Jq
ZWN0LmgiCiAjaW5jbHVkZSAiVjhQcm94eS5oIgogI2luY2x1ZGUgIldpZGdldC5oIgotI2luY2x1
ZGUgIlhTU0F1ZGl0b3IuaCIKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCkBAIC0xMTcsNyArMTE2LDYgQEAgU2NyaXB0Q29udHJv
bGxlcjo6U2NyaXB0Q29udHJvbGxlcihGcmFtZSogZnJhbWUpCiAjaWYgRU5BQkxFKE5FVFNDQVBF
X1BMVUdJTl9BUEkpCiAgICAgLCBtX3dpbmRvd1NjcmlwdE5QT2JqZWN0KDApCiAjZW5kaWYKLSAg
ICAsIG1fWFNTQXVkaXRvcihuZXcgWFNTQXVkaXRvcihmcmFtZSkpCiB7CiB9CiAKQEAgLTIxOSwx
NyArMjE3LDEyIEBAIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGVJbklzb2xhdGVkV29y
bGQodW5zaWduZWQgd29ybGRJRCwgY29uc3QgVmVjdG9yPFNjCiB9CiAKIC8vIEV2YWx1YXRlIGEg
c2NyaXB0IGZpbGUgaW4gdGhlIGVudmlyb25tZW50IG9mIHRoaXMgcHJveHkuCi1TY3JpcHRWYWx1
ZSBTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3Vy
Y2VDb2RlLCBTaG91bGRBbGxvd1hTUyBzaG91bGRBbGxvd1hTUykKK1NjcmlwdFZhbHVlIFNjcmlw
dENvbnRyb2xsZXI6OmV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUs
IFNob3VsZEFsbG93WFNTKQogewogICAgIFN0cmluZyBzb3VyY2VVUkwgPSBzb3VyY2VDb2RlLnVy
bCgpOwogICAgIGNvbnN0IFN0cmluZyogc2F2ZWRTb3VyY2VVUkwgPSBtX3NvdXJjZVVSTDsKICAg
ICBtX3NvdXJjZVVSTCA9ICZzb3VyY2VVUkw7CiAKLSAgICBpZiAoc2hvdWxkQWxsb3dYU1MgPT0g
RG9Ob3RBbGxvd1hTUyAmJiAhbV9YU1NBdWRpdG9yLT5jYW5FdmFsdWF0ZShzb3VyY2VDb2RlLnNv
dXJjZSgpKSkgewotICAgICAgICAvLyBUaGlzIHNjcmlwdCBpcyBub3Qgc2FmZSB0byBiZSBldmFs
dWF0ZWQuCi0gICAgICAgIHJldHVybiBTY3JpcHRWYWx1ZSgpOwotICAgIH0KLQogICAgIHY4OjpI
YW5kbGVTY29wZSBoYW5kbGVTY29wZTsKICAgICB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiB2OENv
bnRleHQgPSBWOFByb3h5OjptYWluV29ybGRDb250ZXh0KG1fcHJveHktPmZyYW1lKCkpOwogICAg
IGlmICh2OENvbnRleHQuSXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
U2NyaXB0Q29udHJvbGxlci5oCmluZGV4IDc2NjQ4NDZlZWIyOTllNWEzOTE1MTlmMGJhYWI2MDQ2
NTFlMjBiODYuLjk4MjljM2ExMjQ2MWRlMjZhZDRiODkzMDE1YjM3YWIwNDY4MTEyMjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmgKQEAgLTYxLDcg
KzYxLDYgQEAgY2xhc3MgRnJhbWU7CiBjbGFzcyBIVE1MUGx1Z0luRWxlbWVudDsKIGNsYXNzIFNj
cmlwdFNvdXJjZUNvZGU7CiBjbGFzcyBXaWRnZXQ7Ci1jbGFzcyBYU1NBdWRpdG9yOwogCiBjbGFz
cyBTY3JpcHRDb250cm9sbGVyIHsKIHB1YmxpYzoKQEAgLTEwNiw4ICsxMDUsNiBAQCBwdWJsaWM6
CiAgICAgU2NyaXB0Q29udHJvbGxlciogd2luZG93U2hlbGwoRE9NV3JhcHBlcldvcmxkKikgeyBy
ZXR1cm4gdGhpczsgfQogICAgIFNjcmlwdENvbnRyb2xsZXIqIGV4aXN0aW5nV2luZG93U2hlbGwo
RE9NV3JhcHBlcldvcmxkKikgeyByZXR1cm4gdGhpczsgfQogCi0gICAgWFNTQXVkaXRvciogeHNz
QXVkaXRvcigpIHsgcmV0dXJuIG1fWFNTQXVkaXRvci5nZXQoKTsgfQotCiAgICAgdm9pZCBjb2xs
ZWN0R2FyYmFnZSgpOwogCiAgICAgLy8gTm90aWZ5IFY4IHRoYXQgdGhlIHN5c3RlbSBpcyBydW5u
aW5nIGxvdyBvbiBtZW1vcnkuCkBAIC0yMTUsOCArMjEyLDYgQEAgcHJpdmF0ZToKICNpZiBFTkFC
TEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICBOUE9iamVjdCogbV93aW5kb3dTY3JpcHROUE9i
amVjdDsKICNlbmRpZgotICAgIC8vIFRoZSBYU1NBdWRpdG9yIGFzc29jaWF0ZWQgd2l0aCB0aGlz
IFNjcmlwdENvbnRyb2xsZXIuCi0gICAgT3duUHRyPFhTU0F1ZGl0b3I+IG1fWFNTQXVkaXRvcjsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1NjcmlwdEV2ZW50TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvU2NyaXB0RXZlbnRMaXN0ZW5lci5jcHAKaW5kZXggYjQ2ZmM1YTZkNTYzYmM5ZDZk
NGQ0ZTZmNjMzYTEyOWNmOTkxMzZlMS4uMGQ3NThkOTQ2YzYxMmZjZGIwMDAyNTU3ZmZkNDNjNmRh
NTNlYmJkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RXZl
bnRMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RXZl
bnRMaXN0ZW5lci5jcHAKQEAgLTM5LDcgKzM5LDYgQEAKICNpbmNsdWRlICJEb2N1bWVudFBhcnNl
ci5oIgogI2luY2x1ZGUgIlY4QWJzdHJhY3RFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiVjhC
aW5kaW5nLmgiCi0jaW5jbHVkZSAiWFNTQXVkaXRvci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKQEAgLTU5LDExICs1OCw2IEBAIFBhc3NSZWZQdHI8VjhMYXp5RXZlbnRMaXN0ZW5lcj4gY3Jl
YXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcihOb2RlKiBub2RlLCBBdHRyaWJ1CiAgICAgICAgIGlm
ICghc2NyaXB0Q29udHJvbGxlci0+Y2FuRXhlY3V0ZVNjcmlwdHMoQWJvdXRUb0V4ZWN1dGVTY3Jp
cHQpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICAgICAgaWYgKCFzY3JpcHRDb250cm9s
bGVyLT54c3NBdWRpdG9yKCktPmNhbkNyZWF0ZUlubGluZUV2ZW50TGlzdGVuZXIoYXR0ci0+bG9j
YWxOYW1lKCkuc3RyaW5nKCksIGF0dHItPnZhbHVlKCkpKSB7Ci0gICAgICAgICAgICAvLyBUaGlz
IHNjcmlwdCBpcyBub3Qgc2FmZSB0byBleGVjdXRlLgotICAgICAgICAgICAgcmV0dXJuIDA7Ci0g
ICAgICAgIH0KLQogICAgICAgICBwb3NpdGlvbiA9IHNjcmlwdENvbnRyb2xsZXItPmV2ZW50SGFu
ZGxlclBvc2l0aW9uKCk7CiAgICAgICAgIHNvdXJjZVVSTCA9IG5vZGUtPmRvY3VtZW50KCktPnVy
bCgpLnN0cmluZygpOwogICAgIH0KQEAgLTg0LDExICs3OCw2IEBAIFBhc3NSZWZQdHI8VjhMYXp5
RXZlbnRMaXN0ZW5lcj4gY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcihGcmFtZSogZnJhbWUs
IEF0dHJpCiAgICAgaWYgKCFzY3JpcHRDb250cm9sbGVyLT5jYW5FeGVjdXRlU2NyaXB0cyhBYm91
dFRvRXhlY3V0ZVNjcmlwdCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgaWYgKCFzY3JpcHRD
b250cm9sbGVyLT54c3NBdWRpdG9yKCktPmNhbkNyZWF0ZUlubGluZUV2ZW50TGlzdGVuZXIoYXR0
ci0+bG9jYWxOYW1lKCkuc3RyaW5nKCksIGF0dHItPnZhbHVlKCkpKSB7Ci0gICAgICAgIC8vIFRo
aXMgc2NyaXB0IGlzIG5vdCBzYWZlIHRvIGV4ZWN1dGUuCi0gICAgICAgIHJldHVybiAwOwotICAg
IH0KLQogICAgIFRleHRQb3NpdGlvbjAgcG9zaXRpb24gPSBzY3JpcHRDb250cm9sbGVyLT5ldmVu
dEhhbmRsZXJQb3NpdGlvbigpOwogICAgIFN0cmluZyBzb3VyY2VVUkwgPSBmcmFtZS0+ZG9jdW1l
bnQoKS0+dXJsKCkuc3RyaW5nKCk7CiAgICAgcmV0dXJuIFY4TGF6eUV2ZW50TGlzdGVuZXI6OmNy
ZWF0ZShhdHRyLT5sb2NhbE5hbWUoKS5zdHJpbmcoKSwgZnJhbWUtPmRvY3VtZW50KCktPmlzU1ZH
RG9jdW1lbnQoKSwgYXR0ci0+dmFsdWUoKSwgc291cmNlVVJMLCBwb3NpdGlvbiwgV29ybGRDb250
ZXh0SGFuZGxlKFVzZU1haW5Xb3JsZCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggMjUy
MGFlOGMyY2ViZmRlMDc1OTMzYTNlMjk0ZmVmOTFiNDc1YTFmYS4uMTA3OTJmY2Y2YjRlMjNjNjlm
NjY5MjEwYmM5NjgzNGZlYjAyMzFiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0xNDQs
NyArMTQ0LDYgQEAKICNpbmNsdWRlICJYTUxIdHRwUmVxdWVzdC5oIgogI2luY2x1ZGUgIlhNTE5T
TmFtZXMuaCIKICNpbmNsdWRlICJYTUxOYW1lcy5oIgotI2luY2x1ZGUgIlhTU0F1ZGl0b3IuaCIK
ICNpbmNsdWRlICJodG1sZWRpdGluZy5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgog
I2luY2x1ZGUgPHd0Zi9IYXNoRnVuY3Rpb25zLmg+CkBAIC0xOTUyLDEwICsxOTUxLDYgQEAgdm9p
ZCBEb2N1bWVudDo6aW1wbGljaXRPcGVuKCkKICAgICBzZXRQYXJzaW5nKHRydWUpOwogICAgIHNl
dFJlYWR5U3RhdGUoTG9hZGluZyk7CiAKLSAgICBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIqIHBh
cnNlciA9IHNjcmlwdGFibGVEb2N1bWVudFBhcnNlcigpOwotICAgIGlmIChtX2ZyYW1lICYmIHBh
cnNlcikKLSAgICAgICAgcGFyc2VyLT5zZXRYU1NBdWRpdG9yKG1fZnJhbWUtPnNjcmlwdCgpLT54
c3NBdWRpdG9yKCkpOwotCiAgICAgLy8gSWYgd2UgcmVsb2FkLCB0aGUgYW5pbWF0aW9uIGNvbnRy
b2xsZXIgc3RpY2tzIGFyb3VuZCBhbmQgaGFzCiAgICAgLy8gYSBzdGFsZSBhbmltYXRpb24gdGlt
ZS4gV2UgbmVlZCB0byB1cGRhdGUgaXQgaGVyZS4KICAgICBpZiAobV9mcmFtZSAmJiBtX2ZyYW1l
LT5hbmltYXRpb24oKSkKQEAgLTIzMDMsNyArMjI5OCw3IEBAIHZvaWQgRG9jdW1lbnQ6OnByb2Nl
c3NCYXNlRWxlbWVudCgpCiAgICAgS1VSTCBiYXNlRWxlbWVudFVSTDsKICAgICBpZiAoaHJlZikg
ewogICAgICAgICBTdHJpbmcgc3RyaXBwZWRIcmVmID0gc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdI
VE1MU3BhY2VzKCpocmVmKTsKLSAgICAgICAgaWYgKCFzdHJpcHBlZEhyZWYuaXNFbXB0eSgpICYm
ICghZnJhbWUoKSB8fCBmcmFtZSgpLT5zY3JpcHQoKS0+eHNzQXVkaXRvcigpLT5jYW5TZXRCYXNl
RWxlbWVudFVSTCgqaHJlZikpKQorICAgICAgICBpZiAoIXN0cmlwcGVkSHJlZi5pc0VtcHR5KCkp
CiAgICAgICAgICAgICBiYXNlRWxlbWVudFVSTCA9IEtVUkwodXJsKCksIHN0cmlwcGVkSHJlZik7
CiAgICAgfQogICAgIGlmIChtX2Jhc2VFbGVtZW50VVJMICE9IGJhc2VFbGVtZW50VVJMKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4
IDA3MTJhMTViZWZhMDczYjQ1MDE1NTdhODQ2NmYyNTkxODc4YmNhZTcuLjkxYTEzODU0N2RjYmJj
OWM3YjlkZDQwM2U0OTdlN2ZmYTU2MWRmMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9T
Y3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIuY3BwCkBAIC0zMCw3ICszMCw2IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyOjpTY3JpcHRhYmxlRG9jdW1lbnRQ
YXJzZXIoRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogRGVjb2RlZERhdGFEb2N1bWVudFBhcnNl
cihkb2N1bWVudCkKLSAgICAsIG1feHNzQXVkaXRvcigwKQogewogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyLmgKaW5kZXggZDliZjg1Y2FiZjQ1NTMz
Yzk4MWJlNjBmYzViYTk2OTc3NWU0MjQzYy4uMWUzNGRkZTkwOGU4YjM1YmU0OTI3N2Y5MTk2YzVm
MjIxNGU1NGMxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdGFibGVEb2N1
bWVudFBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRhYmxlRG9jdW1lbnRQ
YXJzZXIuaApAQCAtMzEsOCArMzEsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNz
IFhTU0F1ZGl0b3I7Ci0KIGNsYXNzIFNjcmlwdGFibGVEb2N1bWVudFBhcnNlciA6IHB1YmxpYyBE
ZWNvZGVkRGF0YURvY3VtZW50UGFyc2VyIHsKIHB1YmxpYzoKICAgICAvLyBPbmx5IHVzZWQgYnkg
RG9jdW1lbnQ6Om9wZW4gZm9yIGRlY2lkaW5nIGlmIGl0cyBzYWZlIHRvIGFjdCBvbiBhCkBAIC00
OSwxNyArNDcsMTEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgaW50IGxpbmVOdW1iZXIoKSBjb25z
dCA9IDA7CiAgICAgdmlydHVhbCBUZXh0UG9zaXRpb24wIHRleHRQb3NpdGlvbigpIGNvbnN0ID0g
MDsKIAotICAgIFhTU0F1ZGl0b3IqIHhzc0F1ZGl0b3IoKSBjb25zdCB7IHJldHVybiBtX3hzc0F1
ZGl0b3I7IH0KLSAgICB2b2lkIHNldFhTU0F1ZGl0b3IoWFNTQXVkaXRvciogYXVkaXRvcikgeyBt
X3hzc0F1ZGl0b3IgPSBhdWRpdG9yOyB9Ci0KIHByb3RlY3RlZDoKICAgICBleHBsaWNpdCBTY3Jp
cHRhYmxlRG9jdW1lbnRQYXJzZXIoRG9jdW1lbnQqKTsKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFs
IFNjcmlwdGFibGVEb2N1bWVudFBhcnNlciogYXNTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIoKSB7
IHJldHVybiB0aGlzOyB9Ci0KLSAgICAvLyBUaGUgWFNTQXVkaXRvciBhc3NvY2lhdGVkIHdpdGgg
dGhpcyBkb2N1bWVudCBwYXJzZXIuCi0gICAgWFNTQXVkaXRvciogbV94c3NBdWRpdG9yOwogfTsK
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50
UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNl
ci5jcHAKaW5kZXggN2MyMjNiMjIzZTZiYjJkMjAxOGMwZTc4YTQyZmVkNmMyZjFjOTk2NC4uZWJi
ZTFiNmM0N2I1ZjYzNDlkYWIwMDljMTMyMjRiYWMxM2NkZTM2MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCkBAIC0zOSw3ICszOSw2
IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiTmVz
dGluZ0xldmVsSW5jcmVtZW50ZXIuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgotI2luY2x1ZGUg
IlhTU0F1ZGl0b3IuaCIKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtNDU2LDExICs0NTUsMTAgQEAgdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6
OnN0b3BXYXRjaGluZ0ZvckxvYWQoQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFNjcmlwdCkKICAgICBj
YWNoZWRTY3JpcHQtPnJlbW92ZUNsaWVudCh0aGlzKTsKIH0KIAotYm9vbCBIVE1MRG9jdW1lbnRQ
YXJzZXI6OnNob3VsZExvYWRFeHRlcm5hbFNjcmlwdEZyb21TcmMoY29uc3QgQXRvbWljU3RyaW5n
JiBzcmNWYWx1ZSkKK2Jvb2wgSFRNTERvY3VtZW50UGFyc2VyOjpzaG91bGRMb2FkRXh0ZXJuYWxT
Y3JpcHRGcm9tU3JjKGNvbnN0IEF0b21pY1N0cmluZyYpCiB7Ci0gICAgaWYgKCF4c3NBdWRpdG9y
KCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIHJldHVybiB4c3NBdWRpdG9yKCktPmNhbkxv
YWRFeHRlcm5hbFNjcmlwdEZyb21TcmMoc3JjVmFsdWUpOworICAgIC8vIEZJWE1FOiBBZGQgQ29u
dGVudC1TZWN1cml0eS1Qb2xpY3kgaG9vayBoZXJlLgorICAgIHJldHVybiB0cnVlOwogfQogCiB2
b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqIGNh
Y2hlZFJlc291cmNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YmZyYW1l
TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJmcmFtZUxvYWRlci5jcHAKaW5k
ZXggYWU4Y2U5OGIwMDJkMjcwMzgxMzMwYTZjNWQ0OTczZThhNGZlOWNiNi4uOGJmZDQ3NDRhOTRh
NTI5MzM0YzE5MzE4MzJkZjA0Y2Q4NzgwZGYyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1N1YmZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vi
ZnJhbWVMb2FkZXIuY3BwCkBAIC00Niw3ICs0Niw2IEBACiAjaW5jbHVkZSAiUmVuZGVyRW1iZWRk
ZWRPYmplY3QuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3Mu
aCIKLSNpbmNsdWRlICJYU1NBdWRpdG9yLmgiCiAKICNpZiBFTkFCTEUoUExVR0lOX1BST1hZX0ZP
Ul9WSURFTykKICNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCkBAIC0xMDMsMTEgKzEwMiw2
IEBAIGJvb2wgU3ViZnJhbWVMb2FkZXI6OnJlcXVlc3RPYmplY3QoSFRNTFBsdWdJbkltYWdlRWxl
bWVudCogb3duZXJFbGVtZW50LCBjb25zdCBTCiB7CiAgICAgaWYgKHVybC5pc0VtcHR5KCkgJiYg
bWltZVR5cGUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCi0gICAgaWYg
KCFtX2ZyYW1lLT5zY3JpcHQoKS0+eHNzQXVkaXRvcigpLT5jYW5Mb2FkT2JqZWN0KHVybCkpIHsK
LSAgICAgICAgLy8gSXQgaXMgdW5zYWZlIHRvIGhvbm9yIHRoZSByZXF1ZXN0IGZvciB0aGlzIG9i
amVjdC4KLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KIAogICAgIC8vIEZJWE1FOiBOb25l
IG9mIHRoaXMgY29kZSBzaG91bGQgdXNlIHJlbmRlcmVycyEKICAgICBSZW5kZXJFbWJlZGRlZE9i
amVjdCogcmVuZGVyZXIgPSBvd25lckVsZW1lbnQtPnJlbmRlckVtYmVkZGVkT2JqZWN0KCk7CkBA
IC0xNTAsOSArMTQ0LDYgQEAgUGFzc1JlZlB0cjxXaWRnZXQ+IFN1YmZyYW1lTG9hZGVyOjpsb2Fk
TWVkaWFQbGF5ZXJQcm94eVBsdWdpbihOb2RlKiBub2RlLCBjb25zdAogewogICAgIEFTU0VSVChu
b2RlLT5oYXNUYWdOYW1lKHZpZGVvVGFnKSB8fCBub2RlLT5oYXNUYWdOYW1lKGF1ZGlvVGFnKSk7
CiAKLSAgICBpZiAoIW1fZnJhbWUtPnNjcmlwdCgpLT54c3NBdWRpdG9yKCktPmNhbkxvYWRPYmpl
Y3QodXJsLnN0cmluZygpKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KICAgICBLVVJMIGNvbXBsZXRl
ZFVSTDsKICAgICBpZiAoIXVybC5pc0VtcHR5KCkpCiAgICAgICAgIGNvbXBsZXRlZFVSTCA9IGNv
bXBsZXRlVVJMKHVybCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1hTU0F1ZGl0
b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9YU1NBdWRpdG9yLmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggOTRlNWY1N2NlNzdhNTIyOThiYjc4Mjk3ZDAyMWEzYzFlMGIxMTE1
Yi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1hTU0F1ZGl0b3IuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDMyICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgRGFuaWVsIEJhdGVzIChkYmF0ZXNA
aW50dWRhdGEuY29tKQotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJYU1NBdWRpdG9yLmgiCi0KLSNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+
Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi0jaW5jbHVkZSAiQ29uc29sZS5oIgotI2luY2x1
ZGUgIkRvY3VtZW50TG9hZGVyLmgiCi0jaW5jbHVkZSAiRE9NV2luZG93LmgiCi0jaW5jbHVkZSAi
RnJhbWUuaCIKLSNpbmNsdWRlICJIVE1MRW50aXR5UGFyc2VyLmgiCi0jaW5jbHVkZSAiS1VSTC5o
IgotI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2VCYXNlLmgiCi0jaW5jbHVkZSAiU2NyaXB0U291
cmNlQ29kZS5oIgotI2luY2x1ZGUgIlNldHRpbmdzLmgiCi0jaW5jbHVkZSAiVGV4dFJlc291cmNl
RGVjb2Rlci5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0YXRp
YyBib29sIGlzTm9uQ2Fub25pY2FsQ2hhcmFjdGVyKFVDaGFyIGMpCi17Ci0gICAgLy8gV2UgcmVt
b3ZlIGFsbCBub24tQVNDSUkgY2hhcmFjdGVycywgaW5jbHVkaW5nIG5vbi1wcmludGFibGUgQVND
SUkgY2hhcmFjdGVycy4KLSAgICAvLwotICAgIC8vIE5vdGUsIHdlIGRvbid0IHJlbW92ZSBiYWNr
c2xhc2hlcyBsaWtlIFBIUCBzdHJpcHNsYXNoZXMoKSwgd2hpY2ggYW1vbmcgb3RoZXIgdGhpbmdz
IGNvbnZlcnRzICJcXDAiIHRvIHRoZSBcMCBjaGFyYWN0ZXIuCi0gICAgLy8gSW5zdGVhZCwgd2Ug
cmVtb3ZlIGJhY2tzbGFzaGVzIGFuZCB6ZXJvcyAoc2luY2UgdGhlIHN0cmluZyAiXFwwIiA9KHJl
bW92ZSBiYWNrc2xhc2hlcyk9PiAiMCIpLiBIb3dldmVyLCB0aGlzIGhhcyB0aGUgCi0gICAgLy8g
YWR2ZXJzZSBlZmZlY3QgdGhhdCB3ZSByZW1vdmUgYW55IGxlZ2l0aW1hdGUgemVyb3MgZnJvbSBh
IHN0cmluZy4KLSAgICAvLwotICAgIC8vIEZvciBpbnN0YW5jZTogbmV3IFN0cmluZygiaHR0cDov
L2xvY2FsaG9zdDo4MDAwIikgPT4gbmV3IFN0cmluZygiaHR0cDovL2xvY2FsaG9zdDo4IikuCi0g
ICAgcmV0dXJuIChjID09ICdcXCcgfHwgYyA9PSAnMCcgfHwgYyA8ICcgJyB8fCBjID49IDEyNyk7
Ci19Ci0KLXN0YXRpYyBib29sIGlzSWxsZWdhbFVSSUNoYXJhY3RlcihVQ2hhciBjKQotewotICAg
IC8vIFRoZSBjaGFyYWN0ZXJzIGRlc2NyaWJlZCBpbiBzZWN0aW9uIDIuNC4zIG9mIFJGQyAyMzk2
IDxodHRwOi8vd3d3LmZhcXMub3JnL3JmY3MvcmZjMjM5Ni5odG1sPiBpbiBhZGRpdGlvbiB0byB0
aGUgCi0gICAgLy8gc2luZ2xlIHF1b3RlIGNoYXJhY3RlciAiJyIgYXJlIGNvbnNpZGVyZWQgaWxs
ZWdhbCBVUkkgY2hhcmFjdGVycy4gVGhhdCBpcywgdGhlIGZvbGxvd2luZyBjaGFyYWN0ZXJzIGNh
bm5vdCBhcHBlYXIKLSAgICAvLyBpbiBhIHZhbGlkIFVSSTogJywgIiwgPCwgPgotICAgIC8vCi0g
ICAgLy8gSWYgdGhlIHJlcXVlc3QgZG9lcyBub3QgY29udGFpbiB0aGVzZSBjaGFyYWN0ZXJzIHRo
ZW4gd2UgY2FuIGFzc3VtZSB0aGF0IG5vIGlubGluZSBzY3JpcHRzIGhhdmUgYmVlbiBpbmplY3Rl
ZCAKLSAgICAvLyBpbnRvIHRoZSByZXNwb25zZSBwYWdlLCBiZWNhdXNlIGl0IGlzIGltcG9zc2li
bGUgdG8gd3JpdGUgYW4gaW5saW5lIHNjcmlwdCBvZiB0aGUgZm9ybSA8c2NyaXB0Pi4uLjwvc2Ny
aXB0PgotICAgIC8vIHdpdGhvdXQgIjwiLCAiPiIuCi0gICAgcmV0dXJuIChjID09ICdcJycgfHwg
YyA9PSAnIicgfHwgYyA9PSAnPCcgfHwgYyA9PSAnPicpOwotfQotCi1TdHJpbmcgWFNTQXVkaXRv
cjo6Q2FjaGluZ1VSTENhbm9uaWNhbGl6ZXI6OmNhbm9uaWNhbGl6ZVVSTChGb3JtRGF0YSogZm9y
bURhdGEsIGNvbnN0IFRleHRFbmNvZGluZyYgZW5jb2RpbmcsIGJvb2wgZGVjb2RlRW50aXRpZXMs
IAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYm9vbCBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXNUd2ljZSkKLXsKLSAgICBpZiAoZGVj
b2RlRW50aXRpZXMgPT0gbV9kZWNvZGVFbnRpdGllcyAmJiBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5j
ZXNUd2ljZSA9PSBtX2RlY29kZVVSTEVzY2FwZVNlcXVlbmNlc1R3aWNlIAotICAgICAgICAmJiBl
bmNvZGluZyA9PSBtX2VuY29kaW5nICYmIGZvcm1EYXRhID09IG1fZm9ybURhdGEpCi0gICAgICAg
IHJldHVybiBtX2NhY2hlZENhbm9uaWNhbGl6ZWRVUkw7Ci0gICAgbV9mb3JtRGF0YSA9IGZvcm1E
YXRhOwotICAgIHJldHVybiBjYW5vbmljYWxpemVVUkwoZm9ybURhdGEtPmZsYXR0ZW5Ub1N0cmlu
ZygpLCBlbmNvZGluZywgZGVjb2RlRW50aXRpZXMsIGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlc1R3
aWNlKTsKLX0KLQotU3RyaW5nIFhTU0F1ZGl0b3I6OkNhY2hpbmdVUkxDYW5vbmljYWxpemVyOjpj
YW5vbmljYWxpemVVUkwoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFRleHRFbmNvZGluZyYgZW5j
b2RpbmcsIGJvb2wgZGVjb2RlRW50aXRpZXMsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBkZWNvZGVVUkxFc2NhcGVTZXF1
ZW5jZXNUd2ljZSkKLXsKLSAgICBpZiAoZGVjb2RlRW50aXRpZXMgPT0gbV9kZWNvZGVFbnRpdGll
cyAmJiBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXNUd2ljZSA9PSBtX2RlY29kZVVSTEVzY2FwZVNl
cXVlbmNlc1R3aWNlIAotICAgICAgICAmJiBlbmNvZGluZyA9PSBtX2VuY29kaW5nICYmIHVybCA9
PSBtX2lucHV0VVJMKQotICAgICAgICByZXR1cm4gbV9jYWNoZWRDYW5vbmljYWxpemVkVVJMOwot
Ci0gICAgbV9jYWNoZWRDYW5vbmljYWxpemVkVVJMID0gY2Fub25pY2FsaXplKGRlY29kZVVSTCh1
cmwsIGVuY29kaW5nLCBkZWNvZGVFbnRpdGllcywgZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzVHdp
Y2UpKTsKLSAgICBtX2lucHV0VVJMID0gdXJsOwotICAgIG1fZW5jb2RpbmcgPSBlbmNvZGluZzsK
LSAgICBtX2RlY29kZUVudGl0aWVzID0gZGVjb2RlRW50aXRpZXM7Ci0gICAgbV9kZWNvZGVVUkxF
c2NhcGVTZXF1ZW5jZXNUd2ljZSA9IGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlc1R3aWNlOwotICAg
ICsrbV9nZW5lcmF0aW9uOwotICAgIHJldHVybiBtX2NhY2hlZENhbm9uaWNhbGl6ZWRVUkw7Ci19
Ci0KLXZvaWQgWFNTQXVkaXRvcjo6Q2FjaGluZ1VSTENhbm9uaWNhbGl6ZXI6OmNsZWFyKCkKLXsK
LSAgICBtX2Zvcm1EYXRhLmNsZWFyKCk7Ci0gICAgbV9pbnB1dFVSTCA9IFN0cmluZygpOwotfQot
Ci1YU1NBdWRpdG9yOjpYU1NBdWRpdG9yKEZyYW1lKiBmcmFtZSkKLSAgICA6IG1fZnJhbWUoZnJh
bWUpCi0gICAgLCBtX2dlbmVyYXRpb25PZlN1ZmZpeFRyZWUoLTEpCi17Ci19Ci0KLVhTU0F1ZGl0
b3I6On5YU1NBdWRpdG9yKCkKLXsKLX0KLQotYm9vbCBYU1NBdWRpdG9yOjppc0VuYWJsZWQoKSBj
b25zdAotewotICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBjbGFzcyBpZiB0aGUgdHJhbnNpdGlv
biB0byBYU1NGaWx0ZXIgZ29lcyBzbW9vdGhseS4KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJv
b2wgWFNTQXVkaXRvcjo6Y2FuRXZhbHVhdGUoY29uc3QgU3RyaW5nJiBjb2RlKSBjb25zdAotewot
ICAgIGlmICghaXNFbmFibGVkKCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgRmluZFRh
c2sgdGFzazsKLSAgICB0YXNrLnN0cmluZyA9IGNvZGU7Ci0gICAgdGFzay5kZWNvZGVFbnRpdGll
cyA9IGZhbHNlOwotICAgIHRhc2suYWxsb3dSZXF1ZXN0SWZOb0lsbGVnYWxVUklDaGFyYWN0ZXJz
ID0gdHJ1ZTsKLQotICAgIGlmIChmaW5kSW5SZXF1ZXN0KHRhc2spKSB7Ci0gICAgICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBjb25zb2xlTWVzc2FnZSwgKCJSZWZ1c2VkIHRvIGV4ZWN1
dGUgYSBKYXZhU2NyaXB0IHNjcmlwdC4gU291cmNlIGNvZGUgb2Ygc2NyaXB0IGZvdW5kIHdpdGhp
biByZXF1ZXN0LlxuIikpOwotICAgICAgICBtX2ZyYW1lLT5kb21XaW5kb3coKS0+Y29uc29sZSgp
LT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2Fn
ZUxldmVsLCBjb25zb2xlTWVzc2FnZSwgMSwgU3RyaW5nKCkpOwotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIFhTU0F1ZGl0b3I6OmNhbkV2
YWx1YXRlSmF2YVNjcmlwdFVSTChjb25zdCBTdHJpbmcmIGNvZGUpIGNvbnN0Ci17Ci0gICAgaWYg
KCFpc0VuYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBGaW5kVGFzayB0YXNr
OwotICAgIHRhc2suc3RyaW5nID0gY29kZTsKLSAgICB0YXNrLmRlY29kZVVSTEVzY2FwZVNlcXVl
bmNlc1R3aWNlID0gdHJ1ZTsKLQotICAgIGlmIChmaW5kSW5SZXF1ZXN0KHRhc2spKSB7Ci0gICAg
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBjb25zb2xlTWVzc2FnZSwgKCJSZWZ1c2Vk
IHRvIGV4ZWN1dGUgYSBKYXZhU2NyaXB0IHNjcmlwdC4gU291cmNlIGNvZGUgb2Ygc2NyaXB0IGZv
dW5kIHdpdGhpbiByZXF1ZXN0LlxuIikpOwotICAgICAgICBtX2ZyYW1lLT5kb21XaW5kb3coKS0+
Y29uc29sZSgpLT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVy
cm9yTWVzc2FnZUxldmVsLCBjb25zb2xlTWVzc2FnZSwgMSwgU3RyaW5nKCkpOwotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIFhTU0F1ZGl0
b3I6OmNhbkNyZWF0ZUlubGluZUV2ZW50TGlzdGVuZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiBjb2RlKSBjb25zdAotewotICAgIGlmICghaXNFbmFibGVkKCkpCi0gICAgICAgIHJldHVy
biB0cnVlOwotCi0gICAgRmluZFRhc2sgdGFzazsKLSAgICB0YXNrLnN0cmluZyA9IGNvZGU7Ci0g
ICAgdGFzay5hbGxvd1JlcXVlc3RJZk5vSWxsZWdhbFVSSUNoYXJhY3RlcnMgPSB0cnVlOwotCi0g
ICAgaWYgKGZpbmRJblJlcXVlc3QodGFzaykpIHsKLSAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChTdHJpbmcsIGNvbnNvbGVNZXNzYWdlLCAoIlJlZnVzZWQgdG8gZXhlY3V0ZSBhIEphdmFTY3Jp
cHQgc2NyaXB0LiBTb3VyY2UgY29kZSBvZiBzY3JpcHQgZm91bmQgd2l0aGluIHJlcXVlc3QuXG4i
KSk7Ci0gICAgICAgIG1fZnJhbWUtPmRvbVdpbmRvdygpLT5jb25zb2xlKCktPmFkZE1lc3NhZ2Uo
SlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIGNvbnNv
bGVNZXNzYWdlLCAxLCBTdHJpbmcoKSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0g
ICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgWFNTQXVkaXRvcjo6Y2FuTG9hZEV4dGVybmFsU2Ny
aXB0RnJvbVNyYyhjb25zdCBTdHJpbmcmIHVybCkgY29uc3QKLXsKLSAgICBpZiAoIWlzRW5hYmxl
ZCgpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIGlmIChpc1NhbWVPcmlnaW5SZXNvdXJj
ZSh1cmwpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIEZpbmRUYXNrIHRhc2s7Ci0gICAg
dGFzay5zdHJpbmcgPSB1cmw7Ci0gICAgdGFzay5hbGxvd1JlcXVlc3RJZk5vSWxsZWdhbFVSSUNo
YXJhY3RlcnMgPSB0cnVlOwotCi0gICAgaWYgKGZpbmRJblJlcXVlc3QodGFzaykpIHsKLSAgICAg
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGNvbnNvbGVNZXNzYWdlLCAoIlJlZnVzZWQg
dG8gZXhlY3V0ZSBhIEphdmFTY3JpcHQgc2NyaXB0LiBTb3VyY2UgY29kZSBvZiBzY3JpcHQgZm91
bmQgd2l0aGluIHJlcXVlc3QuXG4iKSk7Ci0gICAgICAgIG1fZnJhbWUtPmRvbVdpbmRvdygpLT5j
b25zb2xlKCktPmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJy
b3JNZXNzYWdlTGV2ZWwsIGNvbnNvbGVNZXNzYWdlLCAxLCBTdHJpbmcoKSk7Ci0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgWFNTQXVkaXRv
cjo6Y2FuTG9hZE9iamVjdChjb25zdCBTdHJpbmcmIHVybCkgY29uc3QKLXsKLSAgICBpZiAoIWlz
RW5hYmxlZCgpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIGlmIChpc1NhbWVPcmlnaW5S
ZXNvdXJjZSh1cmwpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIEZpbmRUYXNrIHRhc2s7
Ci0gICAgdGFzay5zdHJpbmcgPSB1cmw7Ci0gICAgdGFzay5hbGxvd1JlcXVlc3RJZk5vSWxsZWdh
bFVSSUNoYXJhY3RlcnMgPSB0cnVlOwotCi0gICAgaWYgKGZpbmRJblJlcXVlc3QodGFzaykpIHsK
LSAgICAgICAgU3RyaW5nIGNvbnNvbGVNZXNzYWdlID0gbWFrZVN0cmluZygiUmVmdXNlZCB0byBs
b2FkIGFuIG9iamVjdC4gVVJMIGZvdW5kIHdpdGhpbiByZXF1ZXN0OiBcIiIsIHVybCwgIlwiLlxu
Iik7Ci0gICAgICAgIG1fZnJhbWUtPmRvbVdpbmRvdygpLT5jb25zb2xlKCktPmFkZE1lc3NhZ2Uo
SlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIGNvbnNv
bGVNZXNzYWdlLCAxLCBTdHJpbmcoKSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0g
ICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgWFNTQXVkaXRvcjo6Y2FuU2V0QmFzZUVsZW1lbnRV
UkwoY29uc3QgU3RyaW5nJiB1cmwpIGNvbnN0Ci17Ci0gICAgaWYgKCFpc0VuYWJsZWQoKSkKLSAg
ICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBpZiAoaXNTYW1lT3JpZ2luUmVzb3VyY2UodXJsKSkK
LSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBGaW5kVGFzayB0YXNrOwotICAgIHRhc2suc3Ry
aW5nID0gdXJsOwotICAgIHRhc2suYWxsb3dSZXF1ZXN0SWZOb0lsbGVnYWxVUklDaGFyYWN0ZXJz
ID0gdHJ1ZTsKLQotICAgIGlmIChmaW5kSW5SZXF1ZXN0KHRhc2spKSB7Ci0gICAgICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBjb25zb2xlTWVzc2FnZSwgKCJSZWZ1c2VkIHRvIGxvYWQg
ZnJvbSBkb2N1bWVudCBiYXNlIFVSTC4gVVJMIGZvdW5kIHdpdGhpbiByZXF1ZXN0LlxuIikpOwot
ICAgICAgICBtX2ZyYW1lLT5kb21XaW5kb3coKS0+Y29uc29sZSgpLT5hZGRNZXNzYWdlKEpTTWVz
c2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCBjb25zb2xlTWVz
c2FnZSwgMSwgU3RyaW5nKCkpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHJl
dHVybiB0cnVlOwotfQotCi1TdHJpbmcgWFNTQXVkaXRvcjo6Y2Fub25pY2FsaXplKGNvbnN0IFN0
cmluZyYgc3RyaW5nKQotewotICAgIFN0cmluZyByZXN1bHQgPSBkZWNvZGVIVE1MRW50aXRpZXMo
c3RyaW5nKTsKLSAgICByZXR1cm4gcmVzdWx0LnJlbW92ZUNoYXJhY3RlcnMoJmlzTm9uQ2Fub25p
Y2FsQ2hhcmFjdGVyKTsKLX0KLQotU3RyaW5nIFhTU0F1ZGl0b3I6OmRlY29kZVVSTChjb25zdCBT
dHJpbmcmIHN0cmluZywgY29uc3QgVGV4dEVuY29kaW5nJiBlbmNvZGluZywgYm9vbCBkZWNvZGVF
bnRpdGllcywgYm9vbCBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXNUd2ljZSkKLXsKLSAgICBTdHJp
bmcgcmVzdWx0OwotICAgIFN0cmluZyB1cmwgPSBzdHJpbmc7Ci0KLSAgICB1cmwucmVwbGFjZSgn
KycsICcgJyk7Ci0gICAgcmVzdWx0ID0gZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKHVybCk7Ci0g
ICAgQ1N0cmluZyB1dGY4VXJsID0gcmVzdWx0LnV0ZjgoKTsKLSAgICBTdHJpbmcgZGVjb2RlZFJl
c3VsdCA9IGVuY29kaW5nLmRlY29kZSh1dGY4VXJsLmRhdGEoKSwgdXRmOFVybC5sZW5ndGgoKSk7
Ci0gICAgaWYgKCFkZWNvZGVkUmVzdWx0LmlzRW1wdHkoKSkKLSAgICAgICAgcmVzdWx0ID0gZGVj
b2RlZFJlc3VsdDsKLSAgICBpZiAoZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzVHdpY2UpIHsKLSAg
ICAgICAgcmVzdWx0ID0gZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKHJlc3VsdCk7Ci0gICAgICAg
IHV0ZjhVcmwgPSByZXN1bHQudXRmOCgpOwotICAgICAgICBkZWNvZGVkUmVzdWx0ID0gZW5jb2Rp
bmcuZGVjb2RlKHV0ZjhVcmwuZGF0YSgpLCB1dGY4VXJsLmxlbmd0aCgpKTsKLSAgICAgICAgaWYg
KCFkZWNvZGVkUmVzdWx0LmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJlc3VsdCA9IGRlY29kZWRS
ZXN1bHQ7Ci0gICAgfQotICAgIGlmIChkZWNvZGVFbnRpdGllcykKLSAgICAgICAgcmVzdWx0ID0g
ZGVjb2RlSFRNTEVudGl0aWVzKHJlc3VsdCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotU3Ry
aW5nIFhTU0F1ZGl0b3I6OmRlY29kZUhUTUxFbnRpdGllcyhjb25zdCBTdHJpbmcmIHN0cmluZywg
Ym9vbCBsZWF2ZVVuZGVjb2RhYmxlRW50aXRpZXNVbnRvdWNoZWQpCi17Ci0gICAgU2VnbWVudGVk
U3RyaW5nIHNvdXJjZShzdHJpbmcpOwotICAgIFNlZ21lbnRlZFN0cmluZyBzb3VyY2VTaGFkb3c7
Ci0gICAgVmVjdG9yPFVDaGFyPiByZXN1bHQ7Ci0gICAgCi0gICAgd2hpbGUgKCFzb3VyY2UuaXNF
bXB0eSgpKSB7Ci0gICAgICAgIFVDaGFyIGNjID0gKnNvdXJjZTsKLSAgICAgICAgc291cmNlLmFk
dmFuY2UoKTsKLSAgICAgICAgCi0gICAgICAgIGlmIChjYyAhPSAnJicpIHsKLSAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmQoY2MpOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLSAg
ICAgICAgCi0gICAgICAgIGlmIChsZWF2ZVVuZGVjb2RhYmxlRW50aXRpZXNVbnRvdWNoZWQpCi0g
ICAgICAgICAgICBzb3VyY2VTaGFkb3cgPSBzb3VyY2U7Ci0gICAgICAgIGJvb2wgbm90RW5vdWdo
Q2hhcmFjdGVycyA9IGZhbHNlOwotICAgICAgICBWZWN0b3I8VUNoYXIsIDE2PiBkZWNvZGVkRW50
aXR5OwotICAgICAgICBib29sIHN1Y2Nlc3MgPSBjb25zdW1lSFRNTEVudGl0eShzb3VyY2UsIGRl
Y29kZWRFbnRpdHksIG5vdEVub3VnaENoYXJhY3RlcnMpOwotICAgICAgICAvLyBXZSBpZ25vcmUg
bm90RW5vdWdoQ2hhcmFjdGVycyBiZWNhdXNlIHdlIG1pZ2h0IGFzIHdlbGwgdXNlIHRoaXMgbG9v
cAotICAgICAgICAvLyB0byBjb3B5IHRoZSByZW1haW5pbmcgY2hhcmFjdGVycyBpbnRvIHxyZXN1
bHR8LgotICAgICAgICBpZiAoIXN1Y2Nlc3MgfHwgKCFsZWF2ZVVuZGVjb2RhYmxlRW50aXRpZXNV
bnRvdWNoZWQgJiYgZGVjb2RlZEVudGl0eS5zaXplKCkgPT0gMSAmJiBkZWNvZGVkRW50aXR5WzBd
ID09IDB4RkZGRCkpIHsKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyYnKTsKLSAgICAgICAg
ICAgIGlmIChsZWF2ZVVuZGVjb2RhYmxlRW50aXRpZXNVbnRvdWNoZWQpCi0gICAgICAgICAgICAg
ICAgc291cmNlID0gc291cmNlU2hhZG93OwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
VmVjdG9yPFVDaGFyPjo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IGRlY29kZWRFbnRpdHkuYmVnaW4o
KTsKLSAgICAgICAgICAgIGZvciAoOyBpdGVyICE9IGRlY29kZWRFbnRpdHkuZW5kKCk7ICsraXRl
cikKLSAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCppdGVyKTsKLSAgICAgICAgfQotICAg
IH0KLSAgICAKLSAgICByZXR1cm4gU3RyaW5nOjphZG9wdChyZXN1bHQpOwotfQotCi1ib29sIFhT
U0F1ZGl0b3I6OmlzU2FtZU9yaWdpblJlc291cmNlKGNvbnN0IFN0cmluZyYgdXJsKSBjb25zdAot
ewotICAgIC8vIElmIHRoZSByZXNvdXJjZSBpcyBsb2FkZWQgZnJvbSB0aGUgc2FtZSBVUkwgYXMg
dGhlIGVuY2xvc2luZyBwYWdlLCBpdCdzCi0gICAgLy8gcHJvYmFibHkgbm90IGFuIFhTUyBhdHRh
Y2ssIHNvIHdlIHJlZHVjZSBmYWxzZSBwb3NpdGl2ZXMgYnkgYWxsb3dpbmcgdGhlCi0gICAgLy8g
cmVxdWVzdC4gSWYgdGhlIHJlc291cmNlIGhhcyBhIHF1ZXJ5IHN0cmluZywgd2UncmUgbW9yZSBz
dXNwaWNpb3VzLAotICAgIC8vIGhvd2V2ZXIsIGJlY2F1c2UgdGhhdCdzIHByZXR0eSByYXJlIGFu
ZCB0aGUgYXR0YWNrZXIgbWlnaHQgYmUgYWJsZSB0bwotICAgIC8vIHRyaWNrIGEgc2VydmVyLXNp
ZGUgc2NyaXB0IGludG8gZG9pbmcgc29tZXRoaW5nIGRhbmdlcm91cyB3aXRoIHRoZSBxdWVyeQot
ICAgIC8vIHN0cmluZy4KLSAgICBLVVJMIHJlc291cmNlVVJMKG1fZnJhbWUtPmRvY3VtZW50KCkt
PnVybCgpLCB1cmwpOwotICAgIHJldHVybiAobV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkuaG9z
dCgpID09IHJlc291cmNlVVJMLmhvc3QoKSAmJiByZXNvdXJjZVVSTC5xdWVyeSgpLmlzRW1wdHko
KSk7Ci19Ci0KLVhTU1Byb3RlY3Rpb25EaXNwb3NpdGlvbiBYU1NBdWRpdG9yOjp4c3NQcm90ZWN0
aW9uKCkgY29uc3QKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgWFNTUHJvdGVj
dGlvbkhlYWRlciwgKCJYLVhTUy1Qcm90ZWN0aW9uIikpOwotCi0gICAgRnJhbWUqIGZyYW1lID0g
bV9mcmFtZTsKLSAgICBpZiAoZnJhbWUtPmRvY3VtZW50KCktPnVybCgpID09IGJsYW5rVVJMKCkp
Ci0gICAgICAgIGZyYW1lID0gbV9mcmFtZS0+dHJlZSgpLT5wYXJlbnQoKTsKLQotICAgIHJldHVy
biBwYXJzZVhTU1Byb3RlY3Rpb25IZWFkZXIoZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRl
cigpLT5yZXNwb25zZSgpLmh0dHBIZWFkZXJGaWVsZChYU1NQcm90ZWN0aW9uSGVhZGVyKSk7Ci19
Ci0KLWJvb2wgWFNTQXVkaXRvcjo6ZmluZEluUmVxdWVzdChjb25zdCBGaW5kVGFzayYgdGFzaykg
Y29uc3QKLXsKLSAgICBib29sIHJlc3VsdCA9IGZhbHNlOwotICAgIEZyYW1lKiBwYXJlbnRGcmFt
ZSA9IG1fZnJhbWUtPnRyZWUoKS0+cGFyZW50KCk7Ci0gICAgRnJhbWUqIGJsb2NrRnJhbWUgPSBw
YXJlbnRGcmFtZTsKLSAgICBpZiAocGFyZW50RnJhbWUgJiYgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+
dXJsKCkgPT0gYmxhbmtVUkwoKSkKLSAgICAgICAgcmVzdWx0ID0gZmluZEluUmVxdWVzdChwYXJl
bnRGcmFtZSwgdGFzayk7Ci0gICAgaWYgKCFyZXN1bHQpIHsKLSAgICAgICAgcmVzdWx0ID0gZmlu
ZEluUmVxdWVzdChtX2ZyYW1lLCB0YXNrKTsKLSAgICAgICAgYmxvY2tGcmFtZSA9IG1fZnJhbWU7
Ci0gICAgfQotICAgIGlmICghcmVzdWx0KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBz
d2l0Y2ggKHhzc1Byb3RlY3Rpb24oKSkgewotICAgIGNhc2UgWFNTUHJvdGVjdGlvbkRpc2FibGVk
OgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgY2FzZSBYU1NQcm90ZWN0aW9uRW5hYmxlZDoK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBYU1NQcm90ZWN0aW9uQmxvY2tFbmFibGVkOgotICAg
ICAgICBpZiAoYmxvY2tGcmFtZSkgewotICAgICAgICAgICAgYmxvY2tGcmFtZS0+bG9hZGVyKCkt
PnN0b3BBbGxMb2FkZXJzKCk7Ci0gICAgICAgICAgICBibG9ja0ZyYW1lLT5uYXZpZ2F0aW9uU2No
ZWR1bGVyKCktPnNjaGVkdWxlTG9jYXRpb25DaGFuZ2UoYmxvY2tGcmFtZS0+ZG9jdW1lbnQoKS0+
c2VjdXJpdHlPcmlnaW4oKSwgYmxhbmtVUkwoKSwgU3RyaW5nKCkpOwotICAgICAgICB9Ci0gICAg
ICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBYU1NBdWRpdG9yOjpmaW5kSW5SZXF1
ZXN0KEZyYW1lKiBmcmFtZSwgY29uc3QgRmluZFRhc2smIHRhc2spIGNvbnN0Ci17Ci0gICAgQVNT
RVJUKGZyYW1lLT5kb2N1bWVudCgpKTsKLQotICAgIGlmICghZnJhbWUtPmRvY3VtZW50KCktPmRl
Y29kZXIoKSkgewotICAgICAgICAvLyBOb3RlLCBKYXZhU2NyaXB0IFVSTHMgZG8gbm90IGhhdmUg
YSBjaGFyc2V0LgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgaWYgKHRhc2su
c3RyaW5nLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgRG9jdW1lbnRM
b2FkZXIgKmRvY3VtZW50TG9hZGVyID0gZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigp
OwotICAgIGlmICghZG9jdW1lbnRMb2FkZXIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
IEZvcm1EYXRhKiBmb3JtRGF0YU9iaiA9IGRvY3VtZW50TG9hZGVyLT5vcmlnaW5hbFJlcXVlc3Qo
KS5odHRwQm9keSgpOwotICAgIGNvbnN0IGJvb2wgaGFzRm9ybURhdGEgPSBmb3JtRGF0YU9iaiAm
JiAhZm9ybURhdGFPYmotPmlzRW1wdHkoKTsKLSAgICBTdHJpbmcgcGFnZVVSTCA9IGZyYW1lLT5k
b2N1bWVudCgpLT51cmwoKS5zdHJpbmcoKTsKLQotICAgIGlmICghaGFzRm9ybURhdGEpIHsKLSAg
ICAgICAgLy8gV2UgY2xlYXIgb3V0IG91ciBmb3JtIGRhdGEgY2FjaGVzLCBpbiBjYXNlIHdlJ3Jl
IGhvbGRpbmcgb250byBhIGJ1bmNoIG9mIG1lbW9yeS4KLSAgICAgICAgbV9mb3JtRGF0YUNhY2hl
LmNsZWFyKCk7Ci0gICAgICAgIG1fZm9ybURhdGFTdWZmaXhUcmVlLmNsZWFyKCk7Ci0gICAgfQot
Ci0gICAgU3RyaW5nIGNhbm9uaWNhbGl6ZWRTdHJpbmc7Ci0gICAgaWYgKCFoYXNGb3JtRGF0YSAm
JiB0YXNrLnN0cmluZy5sZW5ndGgoKSA+IDIgKiBwYWdlVVJMLmxlbmd0aCgpKSB7Ci0gICAgICAg
IC8vIFE6IFdoeSBkbyB3ZSBib3RoZXIgdG8gZG8gdGhpcyBjaGVjayBhdCBhbGw/Ci0gICAgICAg
IC8vIEE6IENhbm9uaWNhbGl6aW5nIGxhcmdlIGlubGluZSBzY3JpcHRzIGNhbiBiZSBleHBlbnNp
dmUuICBXZSB3YW50IHRvCi0gICAgICAgIC8vICAgIHJlZHVjZSB0aGUgc2l6ZSBvZiB0aGUgc3Ry
aW5nIGJlZm9yZSB3ZSBjYWxsIGNhbm9uaWNhbGl6ZSBiZWxvdywKLSAgICAgICAgLy8gICAgc2lu
Y2UgaXQgY291bGQgcmVzdWx0IGluIGFuIHVubmVlZGVkIGFsbG9jYXRpb24gYW5kIG1lbWNweS4K
LSAgICAgICAgLy8KLSAgICAgICAgLy8gUTogV2h5IGRvIHdlIG11bHRpcGx5IGJ5IHR3byBoZXJl
PwotICAgICAgICAvLyBBOiBXZSBhdHRlbXB0IHRvIGRldGVjdCByZWZsZWN0ZWQgWFNTIGV2ZW4g
d2hlbiB0aGUgc2VydmVyCi0gICAgICAgIC8vICAgIHRyYW5zZm9ybXMgdGhlIGF0dGFja2VyJ3Mg
aW5wdXQgd2l0aCBhZGRTbGFzaGVzLiAgVGhlIGJlc3QgdGhlCi0gICAgICAgIC8vICAgIGF0dGFj
a2VyIGNhbiBkbyBnZXQgdGhlIHNlcnZlciB0byBpbmZsYXRlIGhpcy9oZXIgaW5wdXQgYnkgYQot
ICAgICAgICAvLyAgICBmYWN0b3Igb2YgdHdvIGJ5IHNlbmRpbmcgIiBjaGFyYWN0ZXJzLCB3aGlj
aCB0aGUgc2VydmVyCi0gICAgICAgIC8vICAgIHRyYW5zZm9ybXMgdG8gXCIuCi0gICAgICAgIGNh
bm9uaWNhbGl6ZWRTdHJpbmcgPSB0YXNrLnN0cmluZy5zdWJzdHJpbmcoMCwgMiAqIHBhZ2VVUkwu
bGVuZ3RoKCkpOwotICAgIH0gZWxzZQotICAgICAgICBjYW5vbmljYWxpemVkU3RyaW5nID0gdGFz
ay5zdHJpbmc7Ci0KLSAgICBpZiAoZnJhbWUtPmRvY3VtZW50KCktPnVybCgpLnByb3RvY29sSXNE
YXRhKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGNhbm9uaWNhbGl6ZWRTdHJpbmcg
PSBjYW5vbmljYWxpemUoY2Fub25pY2FsaXplZFN0cmluZyk7Ci0gICAgaWYgKGNhbm9uaWNhbGl6
ZWRTdHJpbmcuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoIXRh
c2suY29udGV4dC5pc0VtcHR5KCkpCi0gICAgICAgIGNhbm9uaWNhbGl6ZWRTdHJpbmcgPSB0YXNr
LmNvbnRleHQgKyBjYW5vbmljYWxpemVkU3RyaW5nOwotCi0gICAgU3RyaW5nIGRlY29kZWRQYWdl
VVJMID0gbV9wYWdlVVJMQ2FjaGUuY2Fub25pY2FsaXplVVJMKHBhZ2VVUkwsIGZyYW1lLT5kb2N1
bWVudCgpLT5kZWNvZGVyKCktPmVuY29kaW5nKCksIHRhc2suZGVjb2RlRW50aXRpZXMsIHRhc2su
ZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzVHdpY2UpOwotCi0gICAgaWYgKHRhc2suYWxsb3dSZXF1
ZXN0SWZOb0lsbGVnYWxVUklDaGFyYWN0ZXJzICYmICFoYXNGb3JtRGF0YSAmJiBkZWNvZGVkUGFn
ZVVSTC5maW5kKCZpc0lsbGVnYWxVUklDaGFyYWN0ZXIsIDApID09IG5vdEZvdW5kKQotICAgICAg
ICByZXR1cm4gZmFsc2U7IC8vIEluamVjdGlvbiBpcyBpbXBvc3NpYmxlIGJlY2F1c2UgdGhlIHJl
cXVlc3QgZG9lcyBub3QgY29udGFpbiBhbnkgaWxsZWdhbCBVUkkgY2hhcmFjdGVycy4KLQotICAg
IGlmIChkZWNvZGVkUGFnZVVSTC5maW5kKGNhbm9uaWNhbGl6ZWRTdHJpbmcsIDAsIGZhbHNlKSAh
PSBub3RGb3VuZCkKLSAgICAgICAgcmV0dXJuIHRydWU7IC8vIFdlJ3ZlIGZvdW5kIHRoZSBzdHJp
bmcgaW4gdGhlIEdFVCBkYXRhLgotCi0gICAgaWYgKGhhc0Zvcm1EYXRhKSB7Ci0gICAgICAgIFN0
cmluZyBkZWNvZGVkRm9ybURhdGEgPSBtX2Zvcm1EYXRhQ2FjaGUuY2Fub25pY2FsaXplVVJMKGZv
cm1EYXRhT2JqLCBmcmFtZS0+ZG9jdW1lbnQoKS0+ZGVjb2RlcigpLT5lbmNvZGluZygpLCB0YXNr
LmRlY29kZUVudGl0aWVzLCB0YXNrLmRlY29kZVVSTEVzY2FwZVNlcXVlbmNlc1R3aWNlKTsKLQot
ICAgICAgICBpZiAobV9nZW5lcmF0aW9uT2ZTdWZmaXhUcmVlICE9IG1fZm9ybURhdGFDYWNoZS5n
ZW5lcmF0aW9uKCkpIHsKLSAgICAgICAgICAgIG1fZm9ybURhdGFTdWZmaXhUcmVlID0gbmV3IFN1
ZmZpeFRyZWU8QVNDSUlDb2RlYm9vaz4oZGVjb2RlZEZvcm1EYXRhLCA1KTsKLSAgICAgICAgICAg
IG1fZ2VuZXJhdGlvbk9mU3VmZml4VHJlZSA9IG1fZm9ybURhdGFDYWNoZS5nZW5lcmF0aW9uKCk7
Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBUcnkgYSBmYXN0LXJlamVjdCB2aWEgdGhlIHN1ZmZp
eFRyZWUuCi0gICAgICAgIGlmIChtX2Zvcm1EYXRhU3VmZml4VHJlZSAmJiAhbV9mb3JtRGF0YVN1
ZmZpeFRyZWUtPm1pZ2h0Q29udGFpbihjYW5vbmljYWxpemVkU3RyaW5nKSkKLSAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLQotICAgICAgICBpZiAoZGVjb2RlZEZvcm1EYXRhLmZpbmQoY2Fub25p
Y2FsaXplZFN0cmluZywgMCwgZmFsc2UpICE9IG5vdEZvdW5kKQotICAgICAgICAgICAgcmV0dXJu
IHRydWU7IC8vIFdlIGZvdW5kIHRoZSBzdHJpbmcgaW4gdGhlIFBPU1QgZGF0YS4KLSAgICB9Ci0K
LSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9YU1NBdWRpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1hTU0F1ZGl0b3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWJlZWQ2MTJj
YzI3MGQ2ZjRmMmIyZDgyNzFhMmExOWIzNWE1M2NjZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1hTU0F1ZGl0b3IuaAor
KysgL2Rldi9udWxsCkBAIC0xLDE4MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4
LCAyMDA5IERhbmllbCBCYXRlcyAoZGJhdGVzQGludHVkYXRhLmNvbSkKLSAqIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVU
RVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
Ci0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaWZuZGVmIFhTU0F1ZGl0b3JfaAotI2RlZmluZSBYU1NBdWRpdG9yX2gKLQotI2lu
Y2x1ZGUgIkhUVFBQYXJzZXJzLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKLSNpbmNs
dWRlICJTdWZmaXhUcmVlLmgiCi0jaW5jbHVkZSAiVGV4dEVuY29kaW5nLmgiCi0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotICAgIGNsYXNzIEZvcm1EYXRhOwotICAgIGNsYXNzIEZyYW1lOwotICAg
IGNsYXNzIFNjcmlwdFNvdXJjZUNvZGU7Ci0KLSAgICAvLyBUaGUgWFNTQXVkaXRvciBjbGFzcyBp
cyB1c2VkIHRvIHByZXZlbnQgdHlwZSAxIGNyb3NzLXNpdGUgc2NyaXB0aW5nCi0gICAgLy8gdnVs
bmVyYWJpbGl0aWVzIChhbHNvIGtub3duIGFzIHJlZmxlY3RlZCB2dWxuZXJhYmlsaXRpZXMpLgot
ICAgIC8vCi0gICAgLy8gTW9yZSBzcGVjaWZpY2FsbHksIHRoZSBYU1NBdWRpdG9yIGNsYXNzIGRl
Y2lkZXMgd2hldGhlciB0aGUgZXhlY3V0aW9uIG9mCi0gICAgLy8gYSBzY3JpcHQgaXMgdG8gYmUg
YWxsb3dlZCBvciBkZW5pZWQgYmFzZWQgb24gdGhlIGNvbnRlbnQgb2YgYW55Ci0gICAgLy8gdXNl
ci1zdWJtaXR0ZWQgZGF0YSwgaW5jbHVkaW5nOgotICAgIC8vCi0gICAgLy8gKiB0aGUgVVJMLgot
ICAgIC8vICogdGhlIEhUVFAtUE9TVCBkYXRhLgotICAgIC8vCi0gICAgLy8gSWYgdGhlIHNvdXJj
ZSBjb2RlIG9mIGEgc2NyaXB0IHJlc2VtYmxlcyBhbnkgdXNlci1zdWJtaXR0ZWQgZGF0YSB0aGVu
IGl0Ci0gICAgLy8gaXMgZGVuaWVkIGV4ZWN1dGlvbi4KLSAgICAvLwotICAgIC8vIFdoZW4geW91
IGluc3RhbnRpYXRlIHRoZSBYU1NBdWRpdG9yIHlvdSBtdXN0IHNwZWNpZnkgdGhlIEZyYW1lIG9m
IHRoZQotICAgIC8vIHBhZ2UgdGhhdCB5b3Ugd2lzaCB0byBhdWRpdC4KLSAgICAvLwotICAgIC8v
IEJpbmRpbmdzCi0gICAgLy8KLSAgICAvLyBBbiBYU1NBdWRpdG9yIGlzIGluc3RhbnRpYXRlZCB3
aXRoaW4gdGhlIGNvbnN0cnVjdG9yIG9mIGEKLSAgICAvLyBTY3JpcHRDb250cm9sbGVyIG9iamVj
dCBhbmQgcGFzc2VkIHRoZSBGcmFtZSB0aGUgc2NyaXB0IG9yaWdpbmF0ZWQuIFRoZQotICAgIC8v
IFNjcmlwdENvbnRyb2xsZXIgY2FsbHMgYmFjayB0byB0aGUgWFNTQXVkaXRvciB0byBkZXRlcm1p
bmUgd2hldGhlciBhCi0gICAgLy8gSmF2YVNjcmlwdCBzY3JpcHQgaXMgc2FmZSB0byBleGVjdXRl
IGJlZm9yZSBleGVjdXRpbmcgaXQuIFRoZSBmb2xsb3dpbmcKLSAgICAvLyBtZXRob2RzIGNhbGwg
aW50byBYU1NBdWRpdG9yOgotICAgIC8vCi0gICAgLy8gKiBTY3JpcHRDb250cm9sbGVyOjpldmFs
dWF0ZUluV29ybGQgLSB1c2VkIHRvIGV2YWx1YXRlIEphdmFTY3JpcHQgc2NyaXB0cy4KLSAgICAv
LyAqIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVJZkphdmFTY3JpcHRVUkwgLSB1c2VkIHRvIGV2
YWx1YXRlIEphdmFTY3JpcHQgVVJMcy4KLSAgICAvLyAqIFNjcmlwdEV2ZW50TGlzdGVuZXI6OmNy
ZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIgLSB1c2VkIHRvIGNyZWF0ZSBKYXZhU2NyaXB0IGV2
ZW50IGhhbmRsZXJzLgotICAgIC8vICogSFRNTEJhc2VFbGVtZW50Ojpwcm9jZXNzIC0gdXNlZCB0
byBzZXQgdGhlIGRvY3VtZW50IGJhc2UgVVJMLgotICAgIC8vICogSFRNTERvY3VtZW50UGFyc2Vy
OjpzaG91bGRMb2FkRXh0ZXJuYWxTY3JpcHRGcm9tU3JjIC0gdXNlZCB0byBsb2FkIGV4dGVybmFs
IEphdmFTY3JpcHQgc2NyaXB0cy4KLSAgICAvLyAqIFN1YmZyYW1lTG9hZGVyOjpyZXF1ZXN0T2Jq
ZWN0IC0gdXNlZCB0byBsb2FkIDxvYmplY3Q+LzxlbWJlZD4gZWxlbWVudHMuCi0gICAgLy8KLSAg
ICBjbGFzcyBYU1NBdWRpdG9yIHsKLSAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoWFNTQXVk
aXRvcik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotICAgIHB1YmxpYzoKLSAgICAgICAgWFNT
QXVkaXRvcihGcmFtZSopOwotICAgICAgICB+WFNTQXVkaXRvcigpOwotCi0gICAgICAgIGJvb2wg
aXNFbmFibGVkKCkgY29uc3Q7Ci0KLSAgICAgICAgLy8gRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBz
Y3JpcHQgc2hvdWxkIGJlIGFsbG93ZWQgb3IgZGVuaWVkIGV4ZWN1dGlvbgotICAgICAgICAvLyBi
YXNlZCBvbiB0aGUgY29udGVudCBvZiBhbnkgdXNlci1zdWJtaXR0ZWQgZGF0YS4KLSAgICAgICAg
Ym9vbCBjYW5FdmFsdWF0ZShjb25zdCBTdHJpbmcmIGNvZGUpIGNvbnN0OwotCi0gICAgICAgIC8v
IERldGVybWluZXMgd2hldGhlciB0aGUgSmF2YVNjcmlwdCBVUkwgc2hvdWxkIGJlIGFsbG93ZWQg
b3IgZGVuaWVkIGV4ZWN1dGlvbgotICAgICAgICAvLyBiYXNlZCBvbiB0aGUgY29udGVudCBvZiBh
bnkgdXNlci1zdWJtaXR0ZWQgZGF0YS4KLSAgICAgICAgYm9vbCBjYW5FdmFsdWF0ZUphdmFTY3Jp
cHRVUkwoY29uc3QgU3RyaW5nJiBjb2RlKSBjb25zdDsKLQotICAgICAgICAvLyBEZXRlcm1pbmVz
IHdoZXRoZXIgdGhlIGV2ZW50IGxpc3RlbmVyIHNob3VsZCBiZSBjcmVhdGVkIGJhc2VkIG9uIHRo
ZQotICAgICAgICAvLyBjb250ZW50IG9mIGFueSB1c2VyLXN1Ym1pdHRlZCBkYXRhLgotICAgICAg
ICBib29sIGNhbkNyZWF0ZUlubGluZUV2ZW50TGlzdGVuZXIoY29uc3QgU3RyaW5nJiBmdW5jdGlv
bk5hbWUsIGNvbnN0IFN0cmluZyYgY29kZSkgY29uc3Q7Ci0KLSAgICAgICAgLy8gRGV0ZXJtaW5l
cyB3aGV0aGVyIHRoZSBleHRlcm5hbCBzY3JpcHQgc2hvdWxkIGJlIGxvYWRlZCBiYXNlZCBvbiB0
aGUKLSAgICAgICAgLy8gY29udGVudCBvZiBhbnkgdXNlci1zdWJtaXR0ZWQgZGF0YS4KLSAgICAg
ICAgYm9vbCBjYW5Mb2FkRXh0ZXJuYWxTY3JpcHRGcm9tU3JjKGNvbnN0IFN0cmluZyYgdXJsKSBj
b25zdDsKLQotICAgICAgICAvLyBEZXRlcm1pbmVzIHdoZXRoZXIgb2JqZWN0IHNob3VsZCBiZSBs
b2FkZWQgYmFzZWQgb24gdGhlIGNvbnRlbnQgb2YKLSAgICAgICAgLy8gYW55IHVzZXItc3VibWl0
dGVkIGRhdGEuCi0gICAgICAgIC8vCi0gICAgICAgIC8vIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBi
eSBTdWJmcmFtZUxvYWRlcjo6cmVxdWVzdE9iamVjdC4KLSAgICAgICAgYm9vbCBjYW5Mb2FkT2Jq
ZWN0KGNvbnN0IFN0cmluZyYgdXJsKSBjb25zdDsKLQotICAgICAgICAvLyBEZXRlcm1pbmVzIHdo
ZXRoZXIgdGhlIGJhc2UgVVJMIHNob3VsZCBiZSBjaGFuZ2VkIGJhc2VkIG9uIHRoZSBjb250ZW50
Ci0gICAgICAgIC8vIG9mIGFueSB1c2VyLXN1Ym1pdHRlZCBkYXRhLgotICAgICAgICAvLwotICAg
ICAgICAvLyBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgYnkgSFRNTEJhc2VFbGVtZW50Ojpwcm9jZXNz
LgotICAgICAgICBib29sIGNhblNldEJhc2VFbGVtZW50VVJMKGNvbnN0IFN0cmluZyYgdXJsKSBj
b25zdDsKLQotICAgIHByaXZhdGU6Ci0gICAgICAgIGNsYXNzIENhY2hpbmdVUkxDYW5vbmljYWxp
emVyCi0gICAgICAgIHsKLSAgICAgICAgcHVibGljOgotICAgICAgICAgICAgQ2FjaGluZ1VSTENh
bm9uaWNhbGl6ZXIoKSA6IG1fZGVjb2RlRW50aXRpZXMoZmFsc2UpLCBtX2RlY29kZVVSTEVzY2Fw
ZVNlcXVlbmNlc1R3aWNlKGZhbHNlKSwgbV9nZW5lcmF0aW9uKDApIHsgfQotICAgICAgICAgICAg
U3RyaW5nIGNhbm9uaWNhbGl6ZVVSTChGb3JtRGF0YSosIGNvbnN0IFRleHRFbmNvZGluZyYgZW5j
b2RpbmcsIGJvb2wgZGVjb2RlRW50aXRpZXMsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBib29sIGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlc1R3aWNlKTsKLSAgICAgICAgICAg
IFN0cmluZyBjYW5vbmljYWxpemVVUkwoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFRleHRFbmNv
ZGluZyYgZW5jb2RpbmcsIGJvb2wgZGVjb2RlRW50aXRpZXMsIAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBib29sIGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlc1R3aWNlKTsKLQot
ICAgICAgICAgICAgdm9pZCBjbGVhcigpOwotCi0gICAgICAgICAgICBpbnQgZ2VuZXJhdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fZ2VuZXJhdGlvbjsgfQotCi0gICAgICAgIHByaXZhdGU6Ci0gICAg
ICAgICAgICAvLyBUaGUgcGFyYW1ldGVycyB3ZSB3ZXJlIGNhbGxlZCB3aXRoIGxhc3QuCi0gICAg
ICAgICAgICBTdHJpbmcgbV9pbnB1dFVSTDsKLSAgICAgICAgICAgIFRleHRFbmNvZGluZyBtX2Vu
Y29kaW5nOwotICAgICAgICAgICAgYm9vbCBtX2RlY29kZUVudGl0aWVzOwotICAgICAgICAgICAg
Ym9vbCBtX2RlY29kZVVSTEVzY2FwZVNlcXVlbmNlc1R3aWNlOwotICAgICAgICAgICAgUmVmUHRy
PEZvcm1EYXRhPiBtX2Zvcm1EYXRhOwotCi0gICAgICAgICAgICAvLyBJbmNyZW1lbnRlZCBldmVy
eSB0aW1lIHdlIHNlZSBhIG5ldyBVUkwuCi0gICAgICAgICAgICBpbnQgbV9nZW5lcmF0aW9uOwot
Ci0gICAgICAgICAgICAvLyBUaGUgY2FjaGVkIHJlc3VsdC4KLSAgICAgICAgICAgIFN0cmluZyBt
X2NhY2hlZENhbm9uaWNhbGl6ZWRVUkw7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgc3RydWN0IEZp
bmRUYXNrIHsKLSAgICAgICAgICAgIEZpbmRUYXNrKCkKLSAgICAgICAgICAgICAgICA6IGRlY29k
ZUVudGl0aWVzKHRydWUpCi0gICAgICAgICAgICAgICAgLCBhbGxvd1JlcXVlc3RJZk5vSWxsZWdh
bFVSSUNoYXJhY3RlcnMoZmFsc2UpCi0gICAgICAgICAgICAgICAgLCBkZWNvZGVVUkxFc2NhcGVT
ZXF1ZW5jZXNUd2ljZShmYWxzZSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgU3RyaW5nIGNvbnRleHQ7Ci0gICAgICAgICAgICBTdHJpbmcgc3RyaW5nOwotICAg
ICAgICAgICAgYm9vbCBkZWNvZGVFbnRpdGllczsKLSAgICAgICAgICAgIGJvb2wgYWxsb3dSZXF1
ZXN0SWZOb0lsbGVnYWxVUklDaGFyYWN0ZXJzOwotICAgICAgICAgICAgYm9vbCBkZWNvZGVVUkxF
c2NhcGVTZXF1ZW5jZXNUd2ljZTsKLSAgICAgICAgfTsKLQotICAgICAgICBzdGF0aWMgU3RyaW5n
IGNhbm9uaWNhbGl6ZShjb25zdCBTdHJpbmcmKTsKLSAgICAgICAgc3RhdGljIFN0cmluZyBkZWNv
ZGVVUkwoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFRleHRFbmNvZGluZyYgZW5jb2RpbmcsIGJv
b2wgZGVjb2RlRW50aXRpZXMsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29s
IGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlc1R3aWNlID0gZmFsc2UpOwotICAgICAgICBzdGF0aWMg
U3RyaW5nIGRlY29kZUhUTUxFbnRpdGllcyhjb25zdCBTdHJpbmcmLCBib29sIGxlYXZlVW5kZWNv
ZGFibGVFbnRpdGllc1VudG91Y2hlZCA9IHRydWUpOwotCi0gICAgICAgIGJvb2wgaXNTYW1lT3Jp
Z2luUmVzb3VyY2UoY29uc3QgU3RyaW5nJiB1cmwpIGNvbnN0OwotICAgICAgICBib29sIGZpbmRJ
blJlcXVlc3QoY29uc3QgRmluZFRhc2smKSBjb25zdDsKLSAgICAgICAgYm9vbCBmaW5kSW5SZXF1
ZXN0KEZyYW1lKiwgY29uc3QgRmluZFRhc2smKSBjb25zdDsKLQotICAgICAgICBYU1NQcm90ZWN0
aW9uRGlzcG9zaXRpb24geHNzUHJvdGVjdGlvbigpIGNvbnN0OwotCi0gICAgICAgIC8vIFRoZSBm
cmFtZSB0byBhdWRpdC4KLSAgICAgICAgRnJhbWUqIG1fZnJhbWU7Ci0KLSAgICAgICAgLy8gQSBz
dGF0ZSBzdG9yZSB0byBoZWxwIHVzIGF2b2lkIGNhbm9uaWNhbGl6aW5nIHRoZSBzYW1lIFVSTCBy
ZXBlYXRlZC4KLSAgICAgICAgLy8gV2hlbiBhIHBhZ2UgaGFzIGZvcm0gZGF0YSwgd2UgbmVlZCB0
d28gY2FjaGVzOiBvbmUgdG8gc3RvcmUgdGhlCi0gICAgICAgIC8vIGNhbm9uaWNhbGl6ZWQgVVJM
IGFuZCBhbm90aGVyIHRvIHN0b3JlIHRoZSBjYW5ub25pY2FsaXplZCBmb3JtCi0gICAgICAgIC8v
IGRhdGEuIElmIHdlIG9ubHkgaGFkIG9uZSBjYWNoZSwgd2UnZCBhbHdheXMgZ2VuZXJhdGUgYSBj
YWNoZSBtaXNzCi0gICAgICAgIC8vIGFuZCBsb2FkIHNvbWUgcGFnZXMgZXh0cmVtZWx5IHNsb3ds
eS4KLSAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM1
MzczCi0gICAgICAgIG11dGFibGUgQ2FjaGluZ1VSTENhbm9uaWNhbGl6ZXIgbV9wYWdlVVJMQ2Fj
aGU7Ci0gICAgICAgIG11dGFibGUgQ2FjaGluZ1VSTENhbm9uaWNhbGl6ZXIgbV9mb3JtRGF0YUNh
Y2hlOwotCi0gICAgICAgIG11dGFibGUgT3duUHRyPFN1ZmZpeFRyZWU8QVNDSUlDb2RlYm9vaz4g
PiBtX2Zvcm1EYXRhU3VmZml4VHJlZTsKLSAgICAgICAgbXV0YWJsZSBpbnQgbV9nZW5lcmF0aW9u
T2ZTdWZmaXhUcmVlOwotICAgIH07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlm
IC8vIFhTU0F1ZGl0b3JfaAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>