<?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>33223</bug_id>
          
          <creation_ts>2010-01-05 11:28:44 -0800</creation_ts>
          <short_desc>[V8] Remove V8CustomBinding.cpp</short_desc>
          <delta_ts>2010-01-07 09:39:36 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>
          
          <blocked>32638</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Nate Chapin">japhet</reporter>
          <assigned_to name="Nate Chapin">japhet</assigned_to>
          <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>177261</commentid>
    <comment_count>0</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2010-01-05 11:28:44 -0800</bug_when>
    <thetext>There are a few functions declared in V8CustomBinding.h and implemented in V8CustomBinding.cpp that should find other homes.  This is also as good a time as any to generate the custom access check header declarations, since some of those are implemented in V8CustomBinding.cpp and it&apos;s pretty straightforward to generate headers for them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177347</commentid>
    <comment_count>1</comment_count>
      <attachid>45926</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2010-01-05 13:21:51 -0800</bug_when>
    <thetext>Created attachment 45926
patch

FYI, this change will break the Chromium downstream canaries.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177354</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-05 13:28:32 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 45926 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177402</commentid>
    <comment_count>3</comment_count>
      <attachid>45926</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-01-05 14:34:30 -0800</bug_when>
    <thetext>Comment on attachment 45926
patch

Rocking!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178231</commentid>
    <comment_count>4</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2010-01-07 09:39:36 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/52867</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45926</attachid>
            <date>2010-01-05 13:21:51 -0800</date>
            <delta_ts>2010-01-05 14:34:30 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>27064</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MjgxOCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzggQEAKKzIwMTAtMDEtMDUgIE5hdGUgQ2hhcGluICA8amFwaGV0QGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBH
ZW5lcmF0ZSBoZWFkZXIgZGVjbGFyYXRpb25zIGZvciBWOCBiaW5kaW5nIHNlY3VyaXR5IGNoZWNr
cworICAgICAgICBhbmQgZGVsZXRlIFY4Q3VzdG9tQmluZGluZy5jcHAKKworICAgICAgICAqIEFu
ZHJvaWQudjhiaW5kaW5ncy5tazogUmVtb3ZlZCBWOEN1c3RvbUJpbmRpbmcuY3BwLgorICAgICAg
ICAqIFdlYkNvcmUuZ3lwaTogUmVtb3ZlZCBWOEN1c3RvbUJpbmRpbmcuY3BwLgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtOiBHZW5lcmF0ZSBzZWN1cml0eSBj
aGVjayBkZWNsYXJhdGlvbnMuCisgICAgICAgICogYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVs
bC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRUYXJnZXRGcmFtZSk6IE1vdmVkIGZyb20gVjhD
dXN0b21CaW5kaW5nLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OnJlcG9ydFVuc2FmZUphdmFTY3Jp
cHRBY2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6VjhET01XaW5kb3dTaGVsbDo6Y3JlYXRlTmV3
Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdpbmRvd1NoZWxsOjpzZXRMb2NhdGlv
bik6IE1vdmVkIGZyb20gVjhDdXN0b21CaW5kaW5nLmNwcC4KKyAgICAgICAgKiBiaW5kaW5ncy92
OC9WOERPTVdpbmRvd1NoZWxsLmg6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhET01XcmFwcGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRvd25jYXN0U1ZHUGF0aFNlZyk6IE1vdmVkIGZyb20g
VjhDdXN0b21CaW5kaW5nLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV3JhcHBlcjo6Y29u
dmVydFNWR09iamVjdFdpdGhDb250ZXh0VG9WOE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpW
OERPTVdyYXBwZXI6OmdldFRlbXBsYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20v
VjhDdXN0b21CaW5kaW5nLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0
b20vVjhDdXN0b21CaW5kaW5nLmg6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9N
V2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV2luZG93Ojpsb2NhdGlv
bkFjY2Vzc29yU2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV2luZG93OjpuYW1lZFNl
Y3VyaXR5Q2hlY2spOgorICAgICAgICAoV2ViQ29yZTo6VjhET01XaW5kb3c6OmluZGV4ZWRTZWN1
cml0eUNoZWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhEb2N1bWVudExvY2F0
aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4RG9jdW1lbnQ6OmxvY2F0aW9uQWNj
ZXNzb3JTZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhpc3RvcnlDdXN0
b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhIaXN0b3J5OjppbmRleGVkU2VjdXJpdHlDaGVj
ayk6CisgICAgICAgIChXZWJDb3JlOjpWOEhpc3Rvcnk6Om5hbWVkU2VjdXJpdHlDaGVjayk6Cisg
ICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4TG9jYXRpb25DdXN0b20uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VjhMb2NhdGlvbjo6aW5kZXhlZFNlY3VyaXR5Q2hlY2spOgorICAgICAgICAo
V2ViQ29yZTo6VjhMb2NhdGlvbjo6bmFtZWRTZWN1cml0eUNoZWNrKToKKwogMjAxMC0wMS0wNSAg
WWFlbCBBaGFyb24gIDx5YWVsLmFoYXJvbkBub2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUuZ3lw
aQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNpb24gNTI4MTUpCisr
KyBXZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtNjU5LDcgKzY1OSw2IEBA
CiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q29vcmRpbmF0ZXNDdXN0b20uY3Bw
JywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhDU1NTdHlsZURlY2xhcmF0aW9u
Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q29uc29sZUN1
c3RvbS5jcHAnLAotICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbUJpbmRp
bmcuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21CaW5kaW5n
LmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbUV2ZW50TGlzdGVu
ZXIuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21FdmVudExp
c3RlbmVyLmgnLApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JW
OC5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
clY4LnBtCShyZXZpc2lvbiA1MjgxNSkKKysrIFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9yVjgucG0JKHdvcmtpbmcgY29weSkKQEAgLTMxNyw2ICszMTcsMTMgQEAKIAogICAg
IEdlbmVyYXRlSGVhZGVyUnVudGltZUVuYWJsZXJEZWNsYXJhdGlvbnMoQGVuYWJsZWRBdFJ1bnRp
bWUpOwogICAgIEdlbmVyYXRlSGVhZGVyQ3VzdG9tQ2FsbCgkZGF0YU5vZGUpOworICAgIAorICAg
IGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDaGVja0RvbWFpblNlY3VyaXR5
In0pIHsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgPDxFTkQpOworICBzdGF0aWMgYm9v
bCBuYW1lZFNlY3VyaXR5Q2hlY2sodjg6OkxvY2FsPHY4OjpPYmplY3Q+IGhvc3QsIHY4OjpMb2Nh
bDx2ODo6VmFsdWU+IGtleSwgdjg6OkFjY2Vzc1R5cGUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IGRh
dGEpOworICBzdGF0aWMgYm9vbCBpbmRleGVkU2VjdXJpdHlDaGVjayh2ODo6TG9jYWw8djg6Ok9i
amVjdD4gaG9zdCwgdWludDMyX3QgaW5kZXgsIHY4OjpBY2Nlc3NUeXBlLCB2ODo6TG9jYWw8djg6
OlZhbHVlPiBkYXRhKTsKK0VORAorICAgIH0KIAogICAgIHB1c2goQGhlYWRlckNvbnRlbnQsIDw8
RU5EKTsKIApAQCAtMTU2Nyw3ICsxNTc0LDcgQEAKIAogICAgIG15ICRhY2Nlc3NfY2hlY2sgPSAi
IjsKICAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2hlY2tEb21haW5T
ZWN1cml0eSJ9ICYmICEoJGludGVyZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyIpKSB7Ci0gICAgICAg
ICRhY2Nlc3NfY2hlY2sgPSAiaW5zdGFuY2UtPlNldEFjY2Vzc0NoZWNrQ2FsbGJhY2tzKFY4Q3Vz
dG9tOjp2OCR7aW50ZXJmYWNlTmFtZX1OYW1lZFNlY3VyaXR5Q2hlY2ssIFY4Q3VzdG9tOjp2OCR7
aW50ZXJmYWNlTmFtZX1JbmRleGVkU2VjdXJpdHlDaGVjaywgdjg6OkludGVnZXI6Ok5ldyhWOENs
YXNzSW5kZXg6OlRvSW50KFY4Q2xhc3NJbmRleDo6JHtjbGFzc0luZGV4fSkpKTsiOworICAgICAg
ICAkYWNjZXNzX2NoZWNrID0gImluc3RhbmNlLT5TZXRBY2Nlc3NDaGVja0NhbGxiYWNrcyhWOCR7
aW50ZXJmYWNlTmFtZX06Om5hbWVkU2VjdXJpdHlDaGVjaywgVjgke2ludGVyZmFjZU5hbWV9Ojpp
bmRleGVkU2VjdXJpdHlDaGVjaywgdjg6OkludGVnZXI6Ok5ldyhWOENsYXNzSW5kZXg6OlRvSW50
KFY4Q2xhc3NJbmRleDo6JHtjbGFzc0luZGV4fSkpKTsiOwogICAgIH0KIAogICAgICMgRm9yIHRo
ZSBET01XaW5kb3cgaW50ZXJmYWNlLCBnZW5lcmF0ZSB0aGUgc2hhZG93IG9iamVjdCB0ZW1wbGF0
ZQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcAkocmV2aXNpb24gNTI4MTUp
CisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTU3LDYgKzU3LDEwIEBACiAjaW5jbHVkZSAiV2ViR0xVbmlmb3JtTG9jYXRpb24uaCIKICNp
bmNsdWRlICJXb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuaCIKIAorI2lmIEVOQUJMRShTVkcp
CisjaW5jbHVkZSAiU1ZHUGF0aFNlZy5oIgorI2VuZGlmCisKICNpbmNsdWRlIDxhbGdvcml0aG0+
CiAjaW5jbHVkZSA8dXRpbGl0eT4KICNpbmNsdWRlIDx2OC5oPgpAQCAtOTcsNiArMTAxLDM1IEBA
CiB9CiAKICNpZiBFTkFCTEUoU1ZHKQorCitzdGF0aWMgVjhDbGFzc0luZGV4OjpWOFdyYXBwZXJU
eXBlIGRvd25jYXN0U1ZHUGF0aFNlZyh2b2lkKiBwYXRoU2VnKQoreworICAgIFNWR1BhdGhTZWcq
IHJlYWxQYXRoU2VnID0gcmVpbnRlcnByZXRfY2FzdDxTVkdQYXRoU2VnKj4ocGF0aFNlZyk7CisK
KyAgICBzd2l0Y2ggKHJlYWxQYXRoU2VnLT5wYXRoU2VnVHlwZSgpKSB7CisgICAgY2FzZSBTVkdQ
YXRoU2VnOjpQQVRIU0VHX0NMT1NFUEFUSDogICAgICAgICAgICAgICAgICAgIHJldHVybiBWOENs
YXNzSW5kZXg6OlNWR1BBVEhTRUdDTE9TRVBBVEg7CisgICAgY2FzZSBTVkdQYXRoU2VnOjpQQVRI
U0VHX01PVkVUT19BQlM6ICAgICAgICAgICAgICAgICAgIHJldHVybiBWOENsYXNzSW5kZXg6OlNW
R1BBVEhTRUdNT1ZFVE9BQlM7CisgICAgY2FzZSBTVkdQYXRoU2VnOjpQQVRIU0VHX01PVkVUT19S
RUw6ICAgICAgICAgICAgICAgICAgIHJldHVybiBWOENsYXNzSW5kZXg6OlNWR1BBVEhTRUdNT1ZF
VE9SRUw7CisgICAgY2FzZSBTVkdQYXRoU2VnOjpQQVRIU0VHX0xJTkVUT19BQlM6ICAgICAgICAg
ICAgICAgICAgIHJldHVybiBWOENsYXNzSW5kZXg6OlNWR1BBVEhTRUdMSU5FVE9BQlM7CisgICAg
Y2FzZSBTVkdQYXRoU2VnOjpQQVRIU0VHX0xJTkVUT19SRUw6ICAgICAgICAgICAgICAgICAgIHJl
dHVybiBWOENsYXNzSW5kZXg6OlNWR1BBVEhTRUdMSU5FVE9SRUw7CisgICAgY2FzZSBTVkdQYXRo
U2VnOjpQQVRIU0VHX0NVUlZFVE9fQ1VCSUNfQUJTOiAgICAgICAgICAgIHJldHVybiBWOENsYXNz
SW5kZXg6OlNWR1BBVEhTRUdDVVJWRVRPQ1VCSUNBQlM7CisgICAgY2FzZSBTVkdQYXRoU2VnOjpQ
QVRIU0VHX0NVUlZFVE9fQ1VCSUNfUkVMOiAgICAgICAgICAgIHJldHVybiBWOENsYXNzSW5kZXg6
OlNWR1BBVEhTRUdDVVJWRVRPQ1VCSUNSRUw7CisgICAgY2FzZSBTVkdQYXRoU2VnOjpQQVRIU0VH
X0NVUlZFVE9fUVVBRFJBVElDX0FCUzogICAgICAgIHJldHVybiBWOENsYXNzSW5kZXg6OlNWR1BB
VEhTRUdDVVJWRVRPUVVBRFJBVElDQUJTOworICAgIGNhc2UgU1ZHUGF0aFNlZzo6UEFUSFNFR19D
VVJWRVRPX1FVQURSQVRJQ19SRUw6ICAgICAgICByZXR1cm4gVjhDbGFzc0luZGV4OjpTVkdQQVRI
U0VHQ1VSVkVUT1FVQURSQVRJQ1JFTDsKKyAgICBjYXNlIFNWR1BhdGhTZWc6OlBBVEhTRUdfQVJD
X0FCUzogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFY4Q2xhc3NJbmRleDo6U1ZHUEFUSFNF
R0FSQ0FCUzsKKyAgICBjYXNlIFNWR1BhdGhTZWc6OlBBVEhTRUdfQVJDX1JFTDogICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIFY4Q2xhc3NJbmRleDo6U1ZHUEFUSFNFR0FSQ1JFTDsKKyAgICBj
YXNlIFNWR1BhdGhTZWc6OlBBVEhTRUdfTElORVRPX0hPUklaT05UQUxfQUJTOiAgICAgICAgcmV0
dXJuIFY4Q2xhc3NJbmRleDo6U1ZHUEFUSFNFR0xJTkVUT0hPUklaT05UQUxBQlM7CisgICAgY2Fz
ZSBTVkdQYXRoU2VnOjpQQVRIU0VHX0xJTkVUT19IT1JJWk9OVEFMX1JFTDogICAgICAgIHJldHVy
biBWOENsYXNzSW5kZXg6OlNWR1BBVEhTRUdMSU5FVE9IT1JJWk9OVEFMUkVMOworICAgIGNhc2Ug
U1ZHUGF0aFNlZzo6UEFUSFNFR19MSU5FVE9fVkVSVElDQUxfQUJTOiAgICAgICAgICByZXR1cm4g
VjhDbGFzc0luZGV4OjpTVkdQQVRIU0VHTElORVRPVkVSVElDQUxBQlM7CisgICAgY2FzZSBTVkdQ
YXRoU2VnOjpQQVRIU0VHX0xJTkVUT19WRVJUSUNBTF9SRUw6ICAgICAgICAgIHJldHVybiBWOENs
YXNzSW5kZXg6OlNWR1BBVEhTRUdMSU5FVE9WRVJUSUNBTFJFTDsKKyAgICBjYXNlIFNWR1BhdGhT
ZWc6OlBBVEhTRUdfQ1VSVkVUT19DVUJJQ19TTU9PVEhfQUJTOiAgICAgcmV0dXJuIFY4Q2xhc3NJ
bmRleDo6U1ZHUEFUSFNFR0NVUlZFVE9DVUJJQ1NNT09USEFCUzsKKyAgICBjYXNlIFNWR1BhdGhT
ZWc6OlBBVEhTRUdfQ1VSVkVUT19DVUJJQ19TTU9PVEhfUkVMOiAgICAgcmV0dXJuIFY4Q2xhc3NJ
bmRleDo6U1ZHUEFUSFNFR0NVUlZFVE9DVUJJQ1NNT09USFJFTDsKKyAgICBjYXNlIFNWR1BhdGhT
ZWc6OlBBVEhTRUdfQ1VSVkVUT19RVUFEUkFUSUNfU01PT1RIX0FCUzogcmV0dXJuIFY4Q2xhc3NJ
bmRleDo6U1ZHUEFUSFNFR0NVUlZFVE9RVUFEUkFUSUNTTU9PVEhBQlM7CisgICAgY2FzZSBTVkdQ
YXRoU2VnOjpQQVRIU0VHX0NVUlZFVE9fUVVBRFJBVElDX1NNT09USF9SRUw6IHJldHVybiBWOENs
YXNzSW5kZXg6OlNWR1BBVEhTRUdDVVJWRVRPUVVBRFJBVElDU01PT1RIUkVMOworICAgIGRlZmF1
bHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
VjhDbGFzc0luZGV4OjpJTlZBTElEX0NMQVNTX0lOREVYOworICAgIH0KK30KKwogdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IFY4RE9NV3JhcHBlcjo6Y29udmVydFNWR0VsZW1lbnRJbnN0YW5jZVRvVjhP
YmplY3QoU1ZHRWxlbWVudEluc3RhbmNlKiBpbnN0YW5jZSkKIHsKICAgICBpZiAoIWluc3RhbmNl
KQpAQCAtMTI4LDcgKzE2MSw3IEBACiAKICAgICAvLyBTcGVjaWFsIGNhc2U6IFNWR1BhdGhTZWdz
IG5lZWQgdG8gYmUgZG93bmNhc3QgdG8gdGhlaXIgcmVhbCB0eXBlCiAgICAgaWYgKHR5cGUgPT0g
VjhDbGFzc0luZGV4OjpTVkdQQVRIU0VHKQotICAgICAgICB0eXBlID0gVjhDdXN0b206OkRvd25j
YXN0U1ZHUGF0aFNlZyhvYmplY3QpOworICAgICAgICB0eXBlID0gZG93bmNhc3RTVkdQYXRoU2Vn
KG9iamVjdCk7CiAKICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gdjhPYmplY3QgPSBpbnN0YW50
aWF0ZVY4T2JqZWN0KHR5cGUsIHR5cGUsIG9iamVjdCk7CiAgICAgaWYgKCF2OE9iamVjdC5Jc0Vt
cHR5KCkpIHsKQEAgLTE1Miw3ICsxODUsNyBAQAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLSNl
bmRpZgorI2VuZGlmIC8vIEVOQUJMRShTVkcpCiAKICNpZiBFTkFCTEUoM0RfQ0FOVkFTKQogdm9p
ZCBWOERPTVdyYXBwZXI6OnNldEluZGV4ZWRQcm9wZXJ0aWVzVG9FeHRlcm5hbEFycmF5KHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciwKQEAgLTMwOSw3ICszNDIsNyBAQAogICAgICAgICAv
LyBTZXQgYWNjZXNzIGNoZWNrIGNhbGxiYWNrcywgYnV0IHR1cm5lZCBvZmYgaW5pdGlhbGx5Lgog
ICAgICAgICAvLyBXaGVuIGEgY29udGV4dCBpcyBkZXRhY2hlZCBmcm9tIGEgZnJhbWUsIHR1cm4g
b24gdGhlIGFjY2VzcyBjaGVjay4KICAgICAgICAgLy8gVHVybmluZyBvbiBjaGVja3MgYWxzbyBp
bnZhbGlkYXRlcyBpbmxpbmUgY2FjaGVzIG9mIHRoZSBvYmplY3QuCi0gICAgICAgIGluc3RhbmNl
VGVtcGxhdGUtPlNldEFjY2Vzc0NoZWNrQ2FsbGJhY2tzKFY4Q3VzdG9tOjp2OERPTVdpbmRvd05h
bWVkU2VjdXJpdHlDaGVjaywgVjhDdXN0b206OnY4RE9NV2luZG93SW5kZXhlZFNlY3VyaXR5Q2hl
Y2ssIHY4OjpJbnRlZ2VyOjpOZXcoVjhDbGFzc0luZGV4OjpET01XSU5ET1cpLCBmYWxzZSk7Cisg
ICAgICAgIGluc3RhbmNlVGVtcGxhdGUtPlNldEFjY2Vzc0NoZWNrQ2FsbGJhY2tzKFY4RE9NV2lu
ZG93OjpuYW1lZFNlY3VyaXR5Q2hlY2ssIFY4RE9NV2luZG93OjppbmRleGVkU2VjdXJpdHlDaGVj
aywgdjg6OkludGVnZXI6Ok5ldyhWOENsYXNzSW5kZXg6OkRPTVdJTkRPVyksIGZhbHNlKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgVjhDbGFzc0luZGV4OjpMT0NBVElPTjogewpJ
bmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmgJKHJldmlzaW9uIDUyODE1
KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTgyLDYgKzgyLDggQEAKICAgICAgICAgcmV0dXJuIGNsb25lLklzRW1wdHkoKSA/IGNy
ZWF0ZVdyYXBwZXJGcm9tQ2FjaGVTbG93Q2FzZSh0eXBlKSA6IGNsb25lOwogICAgIH0KIAorICAg
IHN0YXRpYyB2b2lkIHNldExvY2F0aW9uKERPTVdpbmRvdyosIGNvbnN0IFN0cmluZyYgcmVsYXRp
dmVVUkwpOworCiBwcml2YXRlOgogICAgIFY4RE9NV2luZG93U2hlbGwoRnJhbWUqKTsKIApJbmRl
eDogV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwCShyZXZpc2lvbiA1Mjgx
NSkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJEYXRlRXh0ZW5zaW9uLmgiCiAjaW5j
bHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKICNpbmNsdWRlICJET01PYmplY3RzSW5jbHVkZS5oIgor
I2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKICNpbmNs
dWRlICJJbnNwZWN0b3JUaW1lbGluZUFnZW50LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgpAQCAtODMs
OSArODQsNDAgQEAKICAgICBoYW5kbGVGYXRhbEVycm9ySW5WOCgpOwogfQogCisvLyBSZXR1cm5z
IHRoZSBvd25lciBmcmFtZSBwb2ludGVyIG9mIGEgRE9NIHdyYXBwZXIgb2JqZWN0LiBJdCBvbmx5
IHdvcmtzIGZvcgorLy8gdGhlc2UgRE9NIG9iamVjdHMgcmVxdWlyaW5nIGNyb3NzLWRvbWFpbiBh
Y2Nlc3MgY2hlY2suCitzdGF0aWMgRnJhbWUqIGdldFRhcmdldEZyYW1lKHY4OjpMb2NhbDx2ODo6
T2JqZWN0PiBob3N0LCB2ODo6TG9jYWw8djg6OlZhbHVlPiBkYXRhKQoreworICAgIEZyYW1lKiB0
YXJnZXQgPSAwOworICAgIHN3aXRjaCAoVjhDbGFzc0luZGV4OjpGcm9tSW50KGRhdGEtPkludDMy
VmFsdWUoKSkpIHsKKyAgICBjYXNlIFY4Q2xhc3NJbmRleDo6RE9NV0lORE9XOiB7CisgICAgICAg
IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd2luZG93ID0gVjhET01XcmFwcGVyOjpsb29rdXBET01X
cmFwcGVyKFY4Q2xhc3NJbmRleDo6RE9NV0lORE9XLCBob3N0KTsKKyAgICAgICAgaWYgKHdpbmRv
dy5Jc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4gdGFyZ2V0OworCisgICAgICAgIERPTVdp
bmRvdyogdGFyZ2V0V2luZG93ID0gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9OYXRpdmVPYmplY3Q8
RE9NV2luZG93PihWOENsYXNzSW5kZXg6OkRPTVdJTkRPVywgd2luZG93KTsKKyAgICAgICAgdGFy
Z2V0ID0gdGFyZ2V0V2luZG93LT5mcmFtZSgpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAg
Y2FzZSBWOENsYXNzSW5kZXg6OkxPQ0FUSU9OOiB7CisgICAgICAgIEhpc3RvcnkqIGhpc3Rvcnkg
PSBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxIaXN0b3J5PihWOENsYXNzSW5k
ZXg6OkhJU1RPUlksIGhvc3QpOworICAgICAgICB0YXJnZXQgPSBoaXN0b3J5LT5mcmFtZSgpOwor
ICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBWOENsYXNzSW5kZXg6OkhJU1RPUlk6IHsK
KyAgICAgICAgTG9jYXRpb24qIGxvY2F0aW9uID0gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9OYXRp
dmVPYmplY3Q8TG9jYXRpb24+KFY4Q2xhc3NJbmRleDo6TE9DQVRJT04sIGhvc3QpOworICAgICAg
ICB0YXJnZXQgPSBsb2NhdGlvbi0+ZnJhbWUoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAg
IGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gdGFyZ2V0OworfQor
CiBzdGF0aWMgdm9pZCByZXBvcnRVbnNhZmVKYXZhU2NyaXB0QWNjZXNzKHY4OjpMb2NhbDx2ODo6
T2JqZWN0PiBob3N0LCB2ODo6QWNjZXNzVHlwZSB0eXBlLCB2ODo6TG9jYWw8djg6OlZhbHVlPiBk
YXRhKQogewotICAgIEZyYW1lKiB0YXJnZXQgPSBWOEN1c3RvbTo6R2V0VGFyZ2V0RnJhbWUoaG9z
dCwgZGF0YSk7CisgICAgRnJhbWUqIHRhcmdldCA9IGdldFRhcmdldEZyYW1lKGhvc3QsIGRhdGEp
OwogICAgIGlmICh0YXJnZXQpCiAgICAgICAgIFY4UHJveHk6OnJlcG9ydFVuc2FmZUFjY2Vzc1Rv
KHRhcmdldCwgVjhQcm94eTo6UmVwb3J0TGF0ZXIpOwogfQpAQCAtMjk1LDcgKzMyNyw3IEBACiAg
ICAgICAgIHJldHVybiByZXN1bHQ7CiAKICAgICAvLyBJbnN0YWxsIGEgc2VjdXJpdHkgaGFuZGxl
ciB3aXRoIFY4LgotICAgIGdsb2JhbFRlbXBsYXRlLT5TZXRBY2Nlc3NDaGVja0NhbGxiYWNrcyhW
OEN1c3RvbTo6djhET01XaW5kb3dOYW1lZFNlY3VyaXR5Q2hlY2ssIFY4Q3VzdG9tOjp2OERPTVdp
bmRvd0luZGV4ZWRTZWN1cml0eUNoZWNrLCB2ODo6SW50ZWdlcjo6TmV3KFY4Q2xhc3NJbmRleDo6
RE9NV0lORE9XKSk7CisgICAgZ2xvYmFsVGVtcGxhdGUtPlNldEFjY2Vzc0NoZWNrQ2FsbGJhY2tz
KFY4RE9NV2luZG93OjpuYW1lZFNlY3VyaXR5Q2hlY2ssIFY4RE9NV2luZG93OjppbmRleGVkU2Vj
dXJpdHlDaGVjaywgdjg6OkludGVnZXI6Ok5ldyhWOENsYXNzSW5kZXg6OkRPTVdJTkRPVykpOwog
ICAgIGdsb2JhbFRlbXBsYXRlLT5TZXRJbnRlcm5hbEZpZWxkQ291bnQoVjhDdXN0b206OmtET01X
aW5kb3dJbnRlcm5hbEZpZWxkQ291bnQpOwogCiAgICAgLy8gVXNlZCB0byBhdm9pZCBzbGVlcCBj
YWxscyBpbiB1bmxvYWQgaGFuZGxlcnMuCkBAIC01MDgsNiArNTQwLDIwIEBACiAgICAgcmV0dXJu
IG5vdEhhbmRsZWRCeUludGVyY2VwdG9yKCk7CiB9CiAKK3ZvaWQgVjhET01XaW5kb3dTaGVsbDo6
c2V0TG9jYXRpb24oRE9NV2luZG93KiB3aW5kb3csIGNvbnN0IFN0cmluZyYgcmVsYXRpdmVVUkwp
Cit7CisgICAgRnJhbWUqIGZyYW1lID0gd2luZG93LT5mcmFtZSgpOworICAgIGlmICghZnJhbWUp
CisgICAgICAgIHJldHVybjsKIAorICAgIEtVUkwgdXJsID0gY29tcGxldGVVUkwocmVsYXRpdmVV
UkwpOworICAgIGlmICh1cmwuaXNOdWxsKCkpCisgICAgICAgIHJldHVybjsKIAorICAgIGlmICgh
c2hvdWxkQWxsb3dOYXZpZ2F0aW9uKGZyYW1lKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbmF2
aWdhdGVJZkFsbG93ZWQoZnJhbWUsIHVybCwgZmFsc2UsIGZhbHNlKTsKK30KKwogfSAvLyBXZWJD
b3JlCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dD
dXN0b20uY3BwCShyZXZpc2lvbiA1MjgxNSkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4RE9NV2luZG93Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE1LDcgKzIxNSw3IEBA
CiB2b2lkIFY4RE9NV2luZG93Ojpsb2NhdGlvbkFjY2Vzc29yU2V0dGVyKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vz
c29ySW5mbyYgaW5mbykKIHsKICAgICBET01XaW5kb3cqIGltcCA9IFY4RE9NV3JhcHBlcjo6Y29u
dmVydFRvTmF0aXZlT2JqZWN0PERPTVdpbmRvdz4oVjhDbGFzc0luZGV4OjpET01XSU5ET1csIGlu
Zm8uSG9sZGVyKCkpOwotICAgIFY4Q3VzdG9tOjpXaW5kb3dTZXRMb2NhdGlvbihpbXAsIHRvV2Vi
Q29yZVN0cmluZyh2YWx1ZSkpOworICAgIFY4RE9NV2luZG93U2hlbGw6OnNldExvY2F0aW9uKGlt
cCwgdG9XZWJDb3JlU3RyaW5nKHZhbHVlKSk7CiB9CiAKIApAQCAtODI2LDIzICs4MjYsNiBAQAog
fQogCiAKLXZvaWQgVjhDdXN0b206OldpbmRvd1NldExvY2F0aW9uKERPTVdpbmRvdyogd2luZG93
LCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlVVJMKQotewotICAgIEZyYW1lKiBmcmFtZSA9IHdpbmRv
dy0+ZnJhbWUoKTsKLSAgICBpZiAoIWZyYW1lKQotICAgICAgICByZXR1cm47Ci0KLSAgICBLVVJM
IHVybCA9IGNvbXBsZXRlVVJMKHJlbGF0aXZlVVJMKTsKLSAgICBpZiAodXJsLmlzTnVsbCgpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoIXNob3VsZEFsbG93TmF2aWdhdGlvbihmcmFtZSkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIG5hdmlnYXRlSWZBbGxvd2VkKGZyYW1lLCB1cmwsIGZh
bHNlLCBmYWxzZSk7Ci19Ci0KLQogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93Ojpz
ZXRUaW1lb3V0Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNf
U1RBVFMoIkRPTS5ET01XaW5kb3cuc2V0VGltZW91dCgpIik7CkBAIC04ODYsNyArODY5LDcgQEAK
ICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogfQogCi1OQU1FRF9BQ0NFU1NfQ0hFQ0soRE9N
V2luZG93KQorYm9vbCBWOERPTVdpbmRvdzo6bmFtZWRTZWN1cml0eUNoZWNrKHY4OjpMb2NhbDx2
ODo6T2JqZWN0PiBob3N0LCB2ODo6TG9jYWw8djg6OlZhbHVlPiBrZXksIHY4OjpBY2Nlc3NUeXBl
IHR5cGUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IGRhdGEpCiB7CiAgICAgQVNTRVJUKFY4Q2xhc3NJ
bmRleDo6RnJvbUludChkYXRhLT5JbnQzMlZhbHVlKCkpID09IFY4Q2xhc3NJbmRleDo6RE9NV0lO
RE9XKTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdpbmRvdyA9IFY4RE9NV3JhcHBlcjo6
bG9va3VwRE9NV3JhcHBlcihWOENsYXNzSW5kZXg6OkRPTVdJTkRPVywgaG9zdCk7CkBAIC05MTIs
NyArODk1LDcgQEAKICAgICByZXR1cm4gVjhCaW5kaW5nU2VjdXJpdHk6OmNhbkFjY2Vzc0ZyYW1l
KFY4QmluZGluZ1N0YXRlOjpPbmx5KCksIHRhcmdldCwgZmFsc2UpOwogfQogCi1JTkRFWEVEX0FD
Q0VTU19DSEVDSyhET01XaW5kb3cpCitib29sIFY4RE9NV2luZG93OjppbmRleGVkU2VjdXJpdHlD
aGVjayh2ODo6TG9jYWw8djg6Ok9iamVjdD4gaG9zdCwgdWludDMyX3QgaW5kZXgsIHY4OjpBY2Nl
c3NUeXBlIHR5cGUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IGRhdGEpCiB7CiAgICAgQVNTRVJUKFY4
Q2xhc3NJbmRleDo6RnJvbUludChkYXRhLT5JbnQzMlZhbHVlKCkpID09IFY4Q2xhc3NJbmRleDo6
RE9NV0lORE9XKTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdpbmRvdyA9IFY4RE9NV3Jh
cHBlcjo6bG9va3VwRE9NV3JhcHBlcihWOENsYXNzSW5kZXg6OkRPTVdJTkRPVywgaG9zdCk7Cklu
ZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbUJpbmRpbmcuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbUJpbmRpbmcuaAkocmV2
aXNpb24gNTI4MTUpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbUJpbmRp
bmcuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsOCArMzQsNiBAQAogI2luY2x1ZGUgIlY4SW5kZXgu
aCIKICNpbmNsdWRlIDx2OC5oPgogCi1zdHJ1Y3QgTlBPYmplY3Q7Ci0KICNkZWZpbmUgSU5ERVhF
RF9QUk9QRVJUWV9HRVRURVIoTkFNRSkgXAogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEN1
c3RvbTo6djgjI05BTUUjI0luZGV4ZWRQcm9wZXJ0eUdldHRlciggXAogICAgICAgICB1aW50MzJf
dCBpbmRleCwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKQEAgLTYwLDI0ICs1OCw3IEBA
CiAgICAgdjg6OkhhbmRsZTx2ODo6Qm9vbGVhbj4gVjhDdXN0b206OnY4IyNOQU1FIyNOYW1lZFBy
b3BlcnR5RGVsZXRlciggXAogICAgICAgICB2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29u
c3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIAotI2RlZmluZSBOQU1FRF9BQ0NFU1NfQ0hFQ0so
TkFNRSkgXAotICAgIGJvb2wgVjhDdXN0b206OnY4IyNOQU1FIyNOYW1lZFNlY3VyaXR5Q2hlY2so
djg6OkxvY2FsPHY4OjpPYmplY3Q+IGhvc3QsIFwKLSAgICAgICAgdjg6OkxvY2FsPHY4OjpWYWx1
ZT4ga2V5LCB2ODo6QWNjZXNzVHlwZSB0eXBlLCB2ODo6TG9jYWw8djg6OlZhbHVlPiBkYXRhKQot
Ci0jZGVmaW5lIElOREVYRURfQUNDRVNTX0NIRUNLKE5BTUUpIFwKLSAgICBib29sIFY4Q3VzdG9t
Ojp2OCMjTkFNRSMjSW5kZXhlZFNlY3VyaXR5Q2hlY2sodjg6OkxvY2FsPHY4OjpPYmplY3Q+IGhv
c3QsIFwKLSAgICAgICAgdWludDMyX3QgaW5kZXgsIHY4OjpBY2Nlc3NUeXBlIHR5cGUsIHY4OjpM
b2NhbDx2ODo6VmFsdWU+IGRhdGEpCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKLQotICAgIGNsYXNz
IERPTVdpbmRvdzsKLSAgICBjbGFzcyBFbGVtZW50OwotICAgIGNsYXNzIEZyYW1lOwotICAgIGNs
YXNzIEhUTUxDb2xsZWN0aW9uOwotICAgIGNsYXNzIEhUTUxGcmFtZUVsZW1lbnRCYXNlOwotICAg
IGNsYXNzIFN0cmluZzsKLSAgICBjbGFzcyBWOFByb3h5OwotCiAgICAgY2xhc3MgVjhDdXN0b20g
ewogICAgIHB1YmxpYzoKICAgICAgICAgLy8gQ29uc3RhbnRzLgpAQCAtMjExLDIwICsxOTIsNiBA
QAogCiAjZGVmaW5lIFVTRV9DQUxMQkFDSyhOQU1FKSBWOEN1c3RvbTo6djgjI05BTUUjI0NhbGxi
YWNrCiAKLSNkZWZpbmUgREVDTEFSRV9OQU1FRF9BQ0NFU1NfQ0hFQ0soTkFNRSkgXAotICAgIHN0
YXRpYyBib29sIHY4IyNOQU1FIyNOYW1lZFNlY3VyaXR5Q2hlY2sodjg6OkxvY2FsPHY4OjpPYmpl
Y3Q+IGhvc3QsIFwKLSAgICAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4ga2V5LCB2ODo6QWNjZXNz
VHlwZSB0eXBlLCB2ODo6TG9jYWw8djg6OlZhbHVlPiBkYXRhKQotCi0jZGVmaW5lIERFQ0xBUkVf
SU5ERVhFRF9BQ0NFU1NfQ0hFQ0soTkFNRSkgXAotICAgIHN0YXRpYyBib29sIHY4IyNOQU1FIyNJ
bmRleGVkU2VjdXJpdHlDaGVjayh2ODo6TG9jYWw8djg6Ok9iamVjdD4gaG9zdCwgXAotICAgICAg
ICB1aW50MzJfdCBpbmRleCwgdjg6OkFjY2Vzc1R5cGUgdHlwZSwgdjg6OkxvY2FsPHY4OjpWYWx1
ZT4gZGF0YSkKLQotICAgICAgICBERUNMQVJFX05BTUVEX0FDQ0VTU19DSEVDSyhMb2NhdGlvbik7
Ci0gICAgICAgIERFQ0xBUkVfSU5ERVhFRF9BQ0NFU1NfQ0hFQ0soSGlzdG9yeSk7Ci0KLSAgICAg
ICAgREVDTEFSRV9OQU1FRF9BQ0NFU1NfQ0hFQ0soSGlzdG9yeSk7Ci0gICAgICAgIERFQ0xBUkVf
SU5ERVhFRF9BQ0NFU1NfQ0hFQ0soTG9jYXRpb24pOwotCiAgICAgICAgIERFQ0xBUkVfTkFNRURf
UFJPUEVSVFlfR0VUVEVSKEhUTUxEb2N1bWVudCk7CiAgICAgICAgIERFQ0xBUkVfTkFNRURfUFJP
UEVSVFlfREVMRVRFUihIVE1MRG9jdW1lbnQpOwogCkBAIC0yNTMsOCArMjIwLDYgQEAKIAogICAg
ICAgICBERUNMQVJFX05BTUVEX1BST1BFUlRZX0dFVFRFUihET01XaW5kb3cpOwogICAgICAgICBE
RUNMQVJFX0lOREVYRURfUFJPUEVSVFlfR0VUVEVSKERPTVdpbmRvdyk7Ci0gICAgICAgIERFQ0xB
UkVfTkFNRURfQUNDRVNTX0NIRUNLKERPTVdpbmRvdyk7Ci0gICAgICAgIERFQ0xBUkVfSU5ERVhF
RF9BQ0NFU1NfQ0hFQ0soRE9NV2luZG93KTsKIAogICAgICAgICBERUNMQVJFX05BTUVEX1BST1BF
UlRZX0dFVFRFUihIVE1MRnJhbWVTZXRFbGVtZW50KTsKICAgICAgICAgREVDTEFSRV9OQU1FRF9Q
Uk9QRVJUWV9HRVRURVIoSFRNTEZvcm1FbGVtZW50KTsKQEAgLTMzNSw5ICszMDAsNiBAQAogICAg
ICAgICBERUNMQVJFX0NBTExCQUNLKFdlYlNvY2tldENvbnN0cnVjdG9yKTsKICNlbmRpZgogCi0j
dW5kZWYgREVDTEFSRV9JTkRFWEVEX0FDQ0VTU19DSEVDSwotI3VuZGVmIERFQ0xBUkVfTkFNRURf
QUNDRVNTX0NIRUNLCi0KICN1bmRlZiBERUNMQVJFX05BTUVEX1BST1BFUlRZX0dFVFRFUgogI3Vu
ZGVmIERFQ0xBUkVfTkFNRURfUFJPUEVSVFlfU0VUVEVSCiAjdW5kZWYgREVDTEFSRV9OQU1FRF9Q
Uk9QRVJUWV9ERUxFVEVSCkBAIC0zNDcsMTkgKzMwOSw2IEBACiAjdW5kZWYgREVDTEFSRV9JTkRF
WEVEX1BST1BFUlRZX0RFTEVURVIKIAogI3VuZGVmIERFQ0xBUkVfQ0FMTEJBQ0sKLQotICAgICAg
ICAvLyBSZXR1cm5zIHRoZSBOUE9iamVjdCBjb3JyZXNwb25kaW5nIHRvIGFuIEhUTUxFbGVtZW50
IG9iamVjdC4KLSAgICAgICAgc3RhdGljIE5QT2JqZWN0KiBHZXRIVE1MUGx1Z0luRWxlbWVudE5Q
T2JqZWN0KHY4OjpIYW5kbGU8djg6Ok9iamVjdD4pOwotCi0gICAgICAgIC8vIFJldHVybnMgdGhl
IG93bmVyIGZyYW1lIHBvaW50ZXIgb2YgYSBET00gd3JhcHBlciBvYmplY3QuIEl0IG9ubHkgd29y
a3MgZm9yCi0gICAgICAgIC8vIHRoZXNlIERPTSBvYmplY3RzIHJlcXVpcmluZyBjcm9zcy1kb21h
aW4gYWNjZXNzIGNoZWNrLgotICAgICAgICBzdGF0aWMgRnJhbWUqIEdldFRhcmdldEZyYW1lKHY4
OjpMb2NhbDx2ODo6T2JqZWN0PiBob3N0LCB2ODo6TG9jYWw8djg6OlZhbHVlPiBkYXRhKTsKLQot
ICAgICAgICAvLyBTcGVjaWFsIGNhc2UgZm9yIGRvd25jYXN0aW5nIFNWRyBwYXRoIHNlZ21lbnRz
LgotI2lmIEVOQUJMRShTVkcpCi0gICAgICAgIHN0YXRpYyBWOENsYXNzSW5kZXg6OlY4V3JhcHBl
clR5cGUgRG93bmNhc3RTVkdQYXRoU2VnKHZvaWQqIHBhdGhTZWcpOwotI2VuZGlmCi0gICAgICAg
IHN0YXRpYyB2b2lkIFdpbmRvd1NldExvY2F0aW9uKERPTVdpbmRvdyosIGNvbnN0IFN0cmluZyYp
OwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4RG9jdW1lbnRMb2NhdGlvbkN1c3RvbS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEb2N1bWVudExvY2F0aW9uQ3VzdG9tLmNwcAko
cmV2aXNpb24gNTI4MTUpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERvY3VtZW50
TG9jYXRpb25DdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw4ICs1MCw4IEBACiAgICAg
ICAgIHJldHVybjsKIAogICAgIERPTVdpbmRvdyogd2luZG93ID0gZG9jdW1lbnQtPmZyYW1lKCkt
PmRvbVdpbmRvdygpOwotICAgIC8vIFdpbmRvd1NldExvY2F0aW9uIGRvZXMgc2VjdXJpdHkgY2hl
Y2tzLiAvLyBYWFhNQi0gdmVyaWZ5IQotICAgIFY4Q3VzdG9tOjpXaW5kb3dTZXRMb2NhdGlvbih3
aW5kb3csIHRvV2ViQ29yZVN0cmluZyh2YWx1ZSkpOworICAgIC8vIHNldExvY2F0aW9uIGRvZXMg
c2VjdXJpdHkgY2hlY2tzLiAvLyBYWFhNQi0gdmVyaWZ5IQorICAgIFY4RE9NV2luZG93U2hlbGw6
OnNldExvY2F0aW9uKHdpbmRvdywgdG9XZWJDb3JlU3RyaW5nKHZhbHVlKSk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TG9j
YXRpb25DdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4TG9jYXRpb25DdXN0b20uY3BwCShyZXZpc2lvbiA1MjgxNSkKKysrIFdlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4TG9jYXRpb25DdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNDIs
NyArMzQyLDcgQEAKICAgICByZXR1cm4gdjhTdHJpbmcocmVzdWx0KTsKIH0KIAotSU5ERVhFRF9B
Q0NFU1NfQ0hFQ0soTG9jYXRpb24pCitib29sIFY4TG9jYXRpb246OmluZGV4ZWRTZWN1cml0eUNo
ZWNrKHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBob3N0LCB1aW50MzJfdCBpbmRleCwgdjg6OkFjY2Vz
c1R5cGUgdHlwZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gZGF0YSkKIHsKICAgICBBU1NFUlQoVjhD
bGFzc0luZGV4OjpGcm9tSW50KGRhdGEtPkludDMyVmFsdWUoKSkgPT0gVjhDbGFzc0luZGV4OjpM
T0NBVElPTik7CiAgICAgLy8gT25seSBhbGxvdyBzYW1lIG9yaWdpbiBhY2Nlc3MKQEAgLTM1MCw3
ICszNTAsNyBAQAogICAgIHJldHVybiBWOEJpbmRpbmdTZWN1cml0eTo6Y2FuQWNjZXNzRnJhbWUo
VjhCaW5kaW5nU3RhdGU6Ok9ubHkoKSwgaW1wLT5mcmFtZSgpLCBmYWxzZSk7CiB9CiAKLU5BTUVE
X0FDQ0VTU19DSEVDSyhMb2NhdGlvbikKK2Jvb2wgVjhMb2NhdGlvbjo6bmFtZWRTZWN1cml0eUNo
ZWNrKHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBob3N0LCB2ODo6TG9jYWw8djg6OlZhbHVlPiBrZXks
IHY4OjpBY2Nlc3NUeXBlIHR5cGUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IGRhdGEpCiB7CiAgICAg
QVNTRVJUKFY4Q2xhc3NJbmRleDo6RnJvbUludChkYXRhLT5JbnQzMlZhbHVlKCkpID09IFY4Q2xh
c3NJbmRleDo6TE9DQVRJT04pOwogICAgIC8vIE9ubHkgYWxsb3cgc2FtZSBvcmlnaW4gYWNjZXNz
CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbUJpbmRpbmcuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tQmluZGluZy5j
cHAJKHJldmlzaW9uIDUyODE1KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0
b21CaW5kaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSwxNDAgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwNy0yMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRp
c3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
LSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1
ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlY4Q3VzdG9tQmluZGluZy5oIgotCi0jaW5jbHVkZSAi
Q1NTSGVscGVyLmgiCi0jaW5jbHVkZSAiRWxlbWVudC5oIgotI2luY2x1ZGUgIkRvY3VtZW50Lmgi
Ci0jaW5jbHVkZSAiRE9NV2luZG93LmgiCi0jaW5jbHVkZSAiSGlzdG9yeS5oIgotI2luY2x1ZGUg
IkhUTUxOYW1lcy5oIgotI2luY2x1ZGUgIkhUTUxGcmFtZUVsZW1lbnRCYXNlLmgiCi0jaW5jbHVk
ZSAiTG9jYXRpb24uaCIKLSNpbmNsdWRlICJWOEJpbmRpbmcuaCIKLSNpbmNsdWRlICJWOEJpbmRp
bmdTdGF0ZS5oIgotI2luY2x1ZGUgIlY4UHJveHkuaCIKLQotI2lmIEVOQUJMRShTVkcpCi0jaW5j
bHVkZSAiU1ZHUGF0aFNlZy5oIgotI2VuZGlmCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotLy8g
LS0tLS0tLS0tLS0tLS0tIFNlY3VyaXR5IENoZWNrcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ci1JTkRFWEVEX0FDQ0VTU19DSEVDSyhIaXN0b3J5KQotewotICAgIEFTU0VSVChWOENsYXNzSW5k
ZXg6OkZyb21JbnQoZGF0YS0+SW50MzJWYWx1ZSgpKSA9PSBWOENsYXNzSW5kZXg6OkhJU1RPUlkp
OwotICAgIC8vIE9ubHkgYWxsb3cgc2FtZSBvcmlnaW4gYWNjZXNzLgotICAgIEhpc3RvcnkqIGhp
c3RvcnkgPSBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxIaXN0b3J5PihWOENs
YXNzSW5kZXg6OkhJU1RPUlksIGhvc3QpOwotICAgIHJldHVybiBWOEJpbmRpbmdTZWN1cml0eTo6
Y2FuQWNjZXNzRnJhbWUoVjhCaW5kaW5nU3RhdGU6Ok9ubHkoKSwgaGlzdG9yeS0+ZnJhbWUoKSwg
ZmFsc2UpOwotfQotCi1OQU1FRF9BQ0NFU1NfQ0hFQ0soSGlzdG9yeSkKLXsKLSAgICBBU1NFUlQo
VjhDbGFzc0luZGV4OjpGcm9tSW50KGRhdGEtPkludDMyVmFsdWUoKSkgPT0gVjhDbGFzc0luZGV4
OjpISVNUT1JZKTsKLSAgICAvLyBPbmx5IGFsbG93IHNhbWUgb3JpZ2luIGFjY2Vzcy4KLSAgICBI
aXN0b3J5KiBoaXN0b3J5ID0gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9OYXRpdmVPYmplY3Q8SGlz
dG9yeT4oVjhDbGFzc0luZGV4OjpISVNUT1JZLCBob3N0KTsKLSAgICByZXR1cm4gVjhCaW5kaW5n
U2VjdXJpdHk6OmNhbkFjY2Vzc0ZyYW1lKFY4QmluZGluZ1N0YXRlOjpPbmx5KCksIGhpc3Rvcnkt
PmZyYW1lKCksIGZhbHNlKTsKLX0KLQotI3VuZGVmIElOREVYRURfQUNDRVNTX0NIRUNLCi0jdW5k
ZWYgTkFNRURfQUNDRVNTX0NIRUNLCi0jdW5kZWYgTkFNRURfUFJPUEVSVFlfR0VUVEVSCi0jdW5k
ZWYgTkFNRURfUFJPUEVSVFlfU0VUVEVSCi0KLUZyYW1lKiBWOEN1c3RvbTo6R2V0VGFyZ2V0RnJh
bWUodjg6OkxvY2FsPHY4OjpPYmplY3Q+IGhvc3QsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IGRhdGEp
Ci17Ci0gICAgRnJhbWUqIHRhcmdldCA9IDA7Ci0gICAgc3dpdGNoIChWOENsYXNzSW5kZXg6OkZy
b21JbnQoZGF0YS0+SW50MzJWYWx1ZSgpKSkgewotICAgIGNhc2UgVjhDbGFzc0luZGV4OjpET01X
SU5ET1c6IHsKLSAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3aW5kb3cgPSBWOERPTVdy
YXBwZXI6Omxvb2t1cERPTVdyYXBwZXIoVjhDbGFzc0luZGV4OjpET01XSU5ET1csIGhvc3QpOwot
ICAgICAgICBpZiAod2luZG93LklzRW1wdHkoKSkKLSAgICAgICAgICAgIHJldHVybiB0YXJnZXQ7
Ci0KLSAgICAgICAgRE9NV2luZG93KiB0YXJnZXRXaW5kb3cgPSBWOERPTVdyYXBwZXI6OmNvbnZl
cnRUb05hdGl2ZU9iamVjdDxET01XaW5kb3c+KFY4Q2xhc3NJbmRleDo6RE9NV0lORE9XLCB3aW5k
b3cpOwotICAgICAgICB0YXJnZXQgPSB0YXJnZXRXaW5kb3ctPmZyYW1lKCk7Ci0gICAgICAgIGJy
ZWFrOwotICAgIH0KLSAgICBjYXNlIFY4Q2xhc3NJbmRleDo6TE9DQVRJT046IHsKLSAgICAgICAg
SGlzdG9yeSogaGlzdG9yeSA9IFY4RE9NV3JhcHBlcjo6Y29udmVydFRvTmF0aXZlT2JqZWN0PEhp
c3Rvcnk+KFY4Q2xhc3NJbmRleDo6SElTVE9SWSwgaG9zdCk7Ci0gICAgICAgIHRhcmdldCA9IGhp
c3RvcnktPmZyYW1lKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIFY4Q2xhc3NJ
bmRleDo6SElTVE9SWTogewotICAgICAgICBMb2NhdGlvbiogbG9jYXRpb24gPSBWOERPTVdyYXBw
ZXI6OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxMb2NhdGlvbj4oVjhDbGFzc0luZGV4OjpMT0NBVElP
TiwgaG9zdCk7Ci0gICAgICAgIHRhcmdldCA9IGxvY2F0aW9uLT5mcmFtZSgpOwotICAgICAgICBi
cmVhazsKLSAgICB9Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIHJl
dHVybiB0YXJnZXQ7Ci19Ci0KLSNpZiBFTkFCTEUoU1ZHKQotVjhDbGFzc0luZGV4OjpWOFdyYXBw
ZXJUeXBlIFY4Q3VzdG9tOjpEb3duY2FzdFNWR1BhdGhTZWcodm9pZCogcGF0aFNlZykKLXsKLSAg
ICBXZWJDb3JlOjpTVkdQYXRoU2VnKiByZWFsUGF0aFNlZyA9IHJlaW50ZXJwcmV0X2Nhc3Q8V2Vi
Q29yZTo6U1ZHUGF0aFNlZyo+KHBhdGhTZWcpOwotCi0gICAgc3dpdGNoIChyZWFsUGF0aFNlZy0+
cGF0aFNlZ1R5cGUoKSkgewotI2RlZmluZSBNQUtFX0NBU0Uoc3ZnVmFsdWUsIHY4VmFsdWUpIGNh
c2UgV2ViQ29yZTo6U1ZHUGF0aFNlZzo6c3ZnVmFsdWU6IHJldHVybiBWOENsYXNzSW5kZXg6OnY4
VmFsdWUKLQotICAgIE1BS0VfQ0FTRShQQVRIU0VHX0NMT1NFUEFUSCwgICAgICAgICAgICAgICAg
ICAgIFNWR1BBVEhTRUdDTE9TRVBBVEgpOwotICAgIE1BS0VfQ0FTRShQQVRIU0VHX01PVkVUT19B
QlMsICAgICAgICAgICAgICAgICAgIFNWR1BBVEhTRUdNT1ZFVE9BQlMpOwotICAgIE1BS0VfQ0FT
RShQQVRIU0VHX01PVkVUT19SRUwsICAgICAgICAgICAgICAgICAgIFNWR1BBVEhTRUdNT1ZFVE9S
RUwpOwotICAgIE1BS0VfQ0FTRShQQVRIU0VHX0xJTkVUT19BQlMsICAgICAgICAgICAgICAgICAg
IFNWR1BBVEhTRUdMSU5FVE9BQlMpOwotICAgIE1BS0VfQ0FTRShQQVRIU0VHX0xJTkVUT19SRUws
ICAgICAgICAgICAgICAgICAgIFNWR1BBVEhTRUdMSU5FVE9SRUwpOwotICAgIE1BS0VfQ0FTRShQ
QVRIU0VHX0NVUlZFVE9fQ1VCSUNfQUJTLCAgICAgICAgICAgIFNWR1BBVEhTRUdDVVJWRVRPQ1VC
SUNBQlMpOwotICAgIE1BS0VfQ0FTRShQQVRIU0VHX0NVUlZFVE9fQ1VCSUNfUkVMLCAgICAgICAg
ICAgIFNWR1BBVEhTRUdDVVJWRVRPQ1VCSUNSRUwpOwotICAgIE1BS0VfQ0FTRShQQVRIU0VHX0NV
UlZFVE9fUVVBRFJBVElDX0FCUywgICAgICAgIFNWR1BBVEhTRUdDVVJWRVRPUVVBRFJBVElDQUJT
KTsKLSAgICBNQUtFX0NBU0UoUEFUSFNFR19DVVJWRVRPX1FVQURSQVRJQ19SRUwsICAgICAgICBT
VkdQQVRIU0VHQ1VSVkVUT1FVQURSQVRJQ1JFTCk7Ci0gICAgTUFLRV9DQVNFKFBBVEhTRUdfQVJD
X0FCUywgICAgICAgICAgICAgICAgICAgICAgU1ZHUEFUSFNFR0FSQ0FCUyk7Ci0gICAgTUFLRV9D
QVNFKFBBVEhTRUdfQVJDX1JFTCwgICAgICAgICAgICAgICAgICAgICAgU1ZHUEFUSFNFR0FSQ1JF
TCk7Ci0gICAgTUFLRV9DQVNFKFBBVEhTRUdfTElORVRPX0hPUklaT05UQUxfQUJTLCAgICAgICAg
U1ZHUEFUSFNFR0xJTkVUT0hPUklaT05UQUxBQlMpOwotICAgIE1BS0VfQ0FTRShQQVRIU0VHX0xJ
TkVUT19IT1JJWk9OVEFMX1JFTCwgICAgICAgIFNWR1BBVEhTRUdMSU5FVE9IT1JJWk9OVEFMUkVM
KTsKLSAgICBNQUtFX0NBU0UoUEFUSFNFR19MSU5FVE9fVkVSVElDQUxfQUJTLCAgICAgICAgICBT
VkdQQVRIU0VHTElORVRPVkVSVElDQUxBQlMpOwotICAgIE1BS0VfQ0FTRShQQVRIU0VHX0xJTkVU
T19WRVJUSUNBTF9SRUwsICAgICAgICAgIFNWR1BBVEhTRUdMSU5FVE9WRVJUSUNBTFJFTCk7Ci0g
ICAgTUFLRV9DQVNFKFBBVEhTRUdfQ1VSVkVUT19DVUJJQ19TTU9PVEhfQUJTLCAgICAgU1ZHUEFU
SFNFR0NVUlZFVE9DVUJJQ1NNT09USEFCUyk7Ci0gICAgTUFLRV9DQVNFKFBBVEhTRUdfQ1VSVkVU
T19DVUJJQ19TTU9PVEhfUkVMLCAgICAgU1ZHUEFUSFNFR0NVUlZFVE9DVUJJQ1NNT09USFJFTCk7
Ci0gICAgTUFLRV9DQVNFKFBBVEhTRUdfQ1VSVkVUT19RVUFEUkFUSUNfU01PT1RIX0FCUywgU1ZH
UEFUSFNFR0NVUlZFVE9RVUFEUkFUSUNTTU9PVEhBQlMpOwotICAgIE1BS0VfQ0FTRShQQVRIU0VH
X0NVUlZFVE9fUVVBRFJBVElDX1NNT09USF9SRUwsIFNWR1BBVEhTRUdDVVJWRVRPUVVBRFJBVElD
U01PT1RIUkVMKTsKLQotI3VuZGVmIE1BS0VfQ0FTRQotCi0gICAgZGVmYXVsdDoKLSAgICAgICAg
cmV0dXJuIFY4Q2xhc3NJbmRleDo6SU5WQUxJRF9DTEFTU19JTkRFWDsKLSAgICB9Ci19Ci0KLSNl
bmRpZiAvLyBFTkFCTEUoU1ZHKQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhpc3RvcnlDdXN0b20uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SGlzdG9yeUN1c3RvbS5jcHAJKHJldmlzaW9u
IDUyODE1KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIaXN0b3J5Q3VzdG9tLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkhpc3RvcnkuaCIK
ICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJWOEJpbmRpbmcu
aCIKKyNpbmNsdWRlICJWOEJpbmRpbmdTdGF0ZS5oIgogI2luY2x1ZGUgIlY4Q3VzdG9tQmluZGlu
Zy5oIgogI2luY2x1ZGUgIlY4UHJveHkuaCIKIApAQCAtODIsNCArODMsMjAgQEAKICAgICByZXR1
cm4gdGhyb3dFcnJvcihlYyk7CiB9CiAKK2Jvb2wgVjhIaXN0b3J5OjppbmRleGVkU2VjdXJpdHlD
aGVjayh2ODo6TG9jYWw8djg6Ok9iamVjdD4gaG9zdCwgdWludDMyX3QgaW5kZXgsIHY4OjpBY2Nl
c3NUeXBlIHR5cGUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IGRhdGEpCit7CisgICAgQVNTRVJUKFY4
Q2xhc3NJbmRleDo6RnJvbUludChkYXRhLT5JbnQzMlZhbHVlKCkpID09IFY4Q2xhc3NJbmRleDo6
SElTVE9SWSk7CisgICAgLy8gT25seSBhbGxvdyBzYW1lIG9yaWdpbiBhY2Nlc3MuCisgICAgSGlz
dG9yeSogaGlzdG9yeSA9IFY4RE9NV3JhcHBlcjo6Y29udmVydFRvTmF0aXZlT2JqZWN0PEhpc3Rv
cnk+KFY4Q2xhc3NJbmRleDo6SElTVE9SWSwgaG9zdCk7CisgICAgcmV0dXJuIFY4QmluZGluZ1Nl
Y3VyaXR5OjpjYW5BY2Nlc3NGcmFtZShWOEJpbmRpbmdTdGF0ZTo6T25seSgpLCBoaXN0b3J5LT5m
cmFtZSgpLCBmYWxzZSk7Cit9CisKK2Jvb2wgVjhIaXN0b3J5OjpuYW1lZFNlY3VyaXR5Q2hlY2so
djg6OkxvY2FsPHY4OjpPYmplY3Q+IGhvc3QsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IGtleSwgdjg6
OkFjY2Vzc1R5cGUgdHlwZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gZGF0YSkKK3sKKyAgICBBU1NF
UlQoVjhDbGFzc0luZGV4OjpGcm9tSW50KGRhdGEtPkludDMyVmFsdWUoKSkgPT0gVjhDbGFzc0lu
ZGV4OjpISVNUT1JZKTsKKyAgICAvLyBPbmx5IGFsbG93IHNhbWUgb3JpZ2luIGFjY2Vzcy4KKyAg
ICBIaXN0b3J5KiBoaXN0b3J5ID0gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9OYXRpdmVPYmplY3Q8
SGlzdG9yeT4oVjhDbGFzc0luZGV4OjpISVNUT1JZLCBob3N0KTsKKyAgICByZXR1cm4gVjhCaW5k
aW5nU2VjdXJpdHk6OmNhbkFjY2Vzc0ZyYW1lKFY4QmluZGluZ1N0YXRlOjpPbmx5KCksIGhpc3Rv
cnktPmZyYW1lKCksIGZhbHNlKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDog
V2ViQ29yZS9BbmRyb2lkLnY4YmluZGluZ3MubWsKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9BbmRy
b2lkLnY4YmluZGluZ3MubWsJKHJldmlzaW9uIDUyODE1KQorKysgV2ViQ29yZS9BbmRyb2lkLnY4
YmluZGluZ3MubWsJKHdvcmtpbmcgY29weSkKQEAgLTkyLDcgKzkyLDYgQEAKIAliaW5kaW5ncy92
OC9jdXN0b20vVjhDbGllbnRSZWN0TGlzdEN1c3RvbS5jcHAgXAogCWJpbmRpbmdzL3Y4L2N1c3Rv
bS9WOENsaXBib2FyZEN1c3RvbS5jcHAgXAogCWJpbmRpbmdzL3Y4L2N1c3RvbS9WOENvb3JkaW5h
dGVzQ3VzdG9tLmNwcCBcCi0JYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tQmluZGluZy5jcHAg
XAogCWJpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbUV2ZW50TGlzdGVuZXIuY3BwIFwKIAliaW5k
aW5ncy92OC9jdXN0b20vVjhDdXN0b21Qb3NpdGlvbkNhbGxiYWNrLmNwcCBcCiAJYmluZGluZ3Mv
djgvY3VzdG9tL1Y4Q3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNrLmNwcCBcCg==
</data>
<flag name="review"
          id="28093"
          type_id="1"
          status="+"
          setter="dglazkov"
    />
    <flag name="commit-queue"
          id="28094"
          type_id="3"
          status="-"
          setter="japhet"
    />
          </attachment>
      

    </bug>

</bugzilla>