<?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>24128</bug_id>
          
          <creation_ts>2009-02-24 11:19:01 -0800</creation_ts>
          <short_desc>Upstream more V8 custom bindings</short_desc>
          <delta_ts>2009-02-24 15:51:55 -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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dimitri Glazkov (Google)">dglazkov</reporter>
          <assigned_to name="Dimitri Glazkov (Google)">dglazkov</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>110776</commentid>
    <comment_count>0</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-02-24 11:19:01 -0800</bug_when>
    <thetext>Mostly uninteresting constructors and XSLTProcessor bits.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>110782</commentid>
    <comment_count>1</comment_count>
      <attachid>27924</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-02-24 11:26:53 -0800</bug_when>
    <thetext>Created attachment 27924
Upstream move V8 custom bindings, v1

 WebCore/ChangeLog                                  |   20 +++
 .../bindings/v8/custom/V8DOMParserConstructor.cpp  |   45 ++++++
 .../v8/custom/V8MessageChannelConstructor.cpp      |   77 ++++++++++
 .../v8/custom/V8WebKitCSSMatrixConstructor.cpp     |   66 +++++++++
 .../v8/custom/V8XMLSerializerConstructor.cpp       |   45 ++++++
 .../v8/custom/V8XPathEvaluatorConstructor.cpp      |   45 ++++++
 .../bindings/v8/custom/V8XSLTProcessorCustom.cpp   |  153 ++++++++++++++++++++
 7 files changed, 451 insertions(+), 0 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>110788</commentid>
    <comment_count>2</comment_count>
      <attachid>27924</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-02-24 11:56:27 -0800</bug_when>
    <thetext>Comment on attachment 27924
Upstream move V8 custom bindings, v1

It looks fine so long as all your return v8:Undefined() calls have been checked to make sure they shouldn&apos;t be return doNotIntercept() or whatever the current name is.

Also, you&apos;re missing a newline at end of file in at least one file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>110845</commentid>
    <comment_count>3</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-02-24 15:51:55 -0800</bug_when>
    <thetext>Landed as http://trac.webkit.org/changeset/41186.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27924</attachid>
            <date>2009-02-24 11:26:53 -0800</date>
            <delta_ts>2009-02-24 11:56:27 -0800</delta_ts>
            <desc>Upstream move V8 custom bindings, v1</desc>
            <filename>Upstream-move-V8-custom-bindings-v1.patch</filename>
            <type>text/plain</type>
            <size>19793</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">ZjFmNDI5MmQyNWNhMTZmNzkwY2Y4YWI1MWFjNDM2ODFmZjA1ZThmYgpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlYjZkZmI4Li4wOWNiZDgz
IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDIzIEBACisyMDA5LTAyLTI0ICBEaW1pdHJpIEdsYXprb3YgIDxkZ2xhemtvdkBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0MTI4CisgICAg
ICAgIFVwc3RyZWFtIG1vcmUgVjggY3VzdG9tIGJpbmRpbmdzOiBjb25zdHJ1Y3RvcnMsIFhTTFRQ
cm9jZXNzb3IuCisKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhET01QYXJzZXJDb25z
dHJ1Y3Rvci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q0FMTEJBQ0tfRlVOQ19ERUNM
KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdlQ2hhbm5lbENvbnN0cnVj
dG9yLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDQUxMQkFDS19GVU5DX0RFQ0wpOgor
ICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYktpdENTU01hdHJpeENvbnN0cnVjdG9y
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDQUxMQkFDS19GVU5DX0RFQ0wpOgorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFhNTFNlcmlhbGl6ZXJDb25zdHJ1Y3Rvci5jcHA6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q0FMTEJBQ0tfRlVOQ19ERUNMKToKKyAgICAgICAg
KiBiaW5kaW5ncy92OC9jdXN0b20vVjhYUGF0aEV2YWx1YXRvckNvbnN0cnVjdG9yLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpDQUxMQkFDS19GVU5DX0RFQ0wpOgorICAgICAgICAqIGJp
bmRpbmdzL3Y4L2N1c3RvbS9WOFhTTFRQcm9jZXNzb3JDdXN0b20uY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkNBTExCQUNLX0ZVTkNfREVDTCk6CisKIDIwMDktMDItMjQgIERhdmlkIExl
dmluICA8bGV2aW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFsZXhleSBQ
cm9za3VyeWFrb3YuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERP
TVBhcnNlckNvbnN0cnVjdG9yLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9N
UGFyc2VyQ29uc3RydWN0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LmY5NmI4ODkKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OERPTVBhcnNlckNvbnN0cnVjdG9yLmNwcApAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlv
bi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisg
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJET01QYXJzZXIuaCIKKworI2luY2x1ZGUgIlY4QmluZGluZy5oIgor
I2luY2x1ZGUgIlY4UHJveHkuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitDQUxMQkFDS19G
VU5DX0RFQ0woRE9NUGFyc2VyQ29uc3RydWN0b3IpCit7CisgICAgSU5DX1NUQVRTKCJET00uRE9N
UGFyc2VyLkNvbnRydWN0b3IiKTsKKyAgICByZXR1cm4gVjhQcm94eTo6Q29uc3RydWN0RE9NT2Jq
ZWN0PFY4Q2xhc3NJbmRleDo6RE9NUEFSU0VSLCBET01QYXJzZXI+KGFyZ3MpOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOE1lc3NhZ2VDaGFubmVsQ29uc3RydWN0b3IuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhNZXNzYWdlQ2hhbm5lbENvbnN0cnVjdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi4zYTQxNDY3Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhNZXNzYWdlQ2hhbm5lbENvbnN0cnVjdG9yLmNwcApAQCAtMCwwICsx
LDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6Cisg
KgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAq
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICogCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNZXNzYWdlQ2hhbm5lbC5oIgor
CisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgorCisjaW5jbHVkZSAi
VjhCaW5kaW5nLmgiCisjaW5jbHVkZSAiVjhQcm94eS5oIgorCisjaW5jbHVkZSA8d3RmL1JlZlB0
ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0NBTExCQUNLX0ZVTkNfREVDTChNZXNzYWdl
Q2hhbm5lbENvbnN0cnVjdG9yKQoreworICAgIElOQ19TVEFUUygiRE9NLk1lc3NhZ2VDaGFubmVs
LkNvbnN0cnVjdG9yIik7CisgICAgLy8gRklYTUU6IFRoZSBsb2dpYyBoZXJlIGlzIGFsbW9zdCBl
eGFjdCBkdXBsaWNhdGUgb2YgVjg6OkNvbnN0cnVjdERPTU9iamVjdC4KKyAgICAvLyBDb25zaWRl
ciByZWZhY3RvcmluZyB0byByZWR1Y2UgZHVwbGljYXRpb24uCisgICAgaWYgKCFhcmdzLklzQ29u
c3RydWN0Q2FsbCgpKQorICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiRE9NIG9iamVjdCBjb25z
dHJ1Y3RvciBjYW5ub3QgYmUgY2FsbGVkIGFzIGEgZnVuY3Rpb24uIik7CisKKyAgICAvLyBHZXQg
dGhlIGRvY3VtZW50LgorICAgIEZyYW1lKiBmcmFtZSA9IFY4UHJveHk6OnJldHJpZXZlRnJhbWUo
KTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworCisg
ICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gZnJhbWUtPmRvY3VtZW50KCk7CisKKyAgICAvLyBOb3Rl
OiBpdCdzIE9LIHRvIGxldCB0aGlzIFJlZlB0ciBnbyBvdXQgb2Ygc2NvcGUgYmVjYXVzZSB3ZSBh
bHNvIGNhbGwKKyAgICAvLyBTZXRET01XcmFwcGVyKCksIHdoaWNoIGVmZmVjdGl2ZWx5IGhvbGRz
IGEgcmVmZXJlbmNlIHRvIG9iai4KKyAgICBSZWZQdHI8TWVzc2FnZUNoYW5uZWw+IG9iaiA9IE1l
c3NhZ2VDaGFubmVsOjpjcmVhdGUoZG9jdW1lbnQpOworCisgICAgdjg6OkxvY2FsPHY4OjpPYmpl
Y3Q+IG1lc3NhZ2VDaGFubmVsID0gYXJncy5Ib2xkZXIoKTsKKworICAgIC8vIENyZWF0ZSByZWZl
cmVuY2VzIGZyb20gdGhlIE1lc3NhZ2VDaGFubmVsIHdyYXBwZXIgdG8gdGhlIHR3bworICAgIC8v
IE1lc3NhZ2VQb3J0IHdyYXBwZXJzIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBNZXNzYWdlUG9ydCB3
cmFwcGVycworICAgIC8vIHN0YXkgYWxpdmUgYXMgbG9uZyBhcyB0aGUgTWVzc2FnZUNoYW5uZWwg
d3JhcHBlciBpcyBhcm91bmQuCisgICAgbWVzc2FnZUNoYW5uZWwtPlNldEludGVybmFsRmllbGQo
a01lc3NhZ2VDaGFubmVsUG9ydDFJbmRleCwgVjhQcm94eTo6VG9WOE9iamVjdChWOENsYXNzSW5k
ZXg6Ok1FU1NBR0VQT1JULCBvYmotPnBvcnQxKCkpKTsKKyAgICBtZXNzYWdlQ2hhbm5lbC0+U2V0
SW50ZXJuYWxGaWVsZChrTWVzc2FnZUNoYW5uZWxQb3J0MkluZGV4LCBWOFByb3h5OjpUb1Y4T2Jq
ZWN0KFY4Q2xhc3NJbmRleDo6TUVTU0FHRVBPUlQsIG9iai0+cG9ydDIoKSkpOworCisgICAgLy8g
U2V0dXAgdGhlIHN0YW5kYXJkIHdyYXBwZXIgb2JqZWN0IGludGVybmFsIGZpZWxkcy4KKyAgICBW
OFByb3h5OjpTZXRET01XcmFwcGVyKG1lc3NhZ2VDaGFubmVsLCBWOENsYXNzSW5kZXg6Ok1FU1NB
R0VDSEFOTkVMLCBvYmouZ2V0KCkpOworICAgIHJldHVybiB0b1Y4KG9iai5yZWxlYXNlKCksIG1l
c3NhZ2VDaGFubmVsKTsKK30KKworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYktpdENTU01hdHJpeENvbnN0cnVjdG9y
LmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViS2l0Q1NTTWF0cml4Q29uc3Ry
dWN0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIwN2QyODgKLS0t
IC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYktpdENTU01h
dHJpeENvbnN0cnVjdG9yLmNwcApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJXZWJLaXRDU1NNYXRyaXguaCIKKworI2luY2x1ZGUgIkRvY3VtZW50LmgiCisj
aW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgorI2luY2x1ZGUgIk5vZGUuaCIKKworI2luY2x1
ZGUgIlY4QmluZGluZy5oIgorI2luY2x1ZGUgIlY4RG9jdW1lbnQuaCIKKyNpbmNsdWRlICJWOE5v
ZGUuaCIKKyNpbmNsdWRlICJWOFByb3h5LmgiCisKKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworQ0FMTEJBQ0tfRlVOQ19ERUNMKFdlYktpdENTU01hdHJp
eENvbnN0cnVjdG9yKQoreworICAgIElOQ19TVEFUUygiRE9NLldlYktpdENTU01hdHJpeC5Db25z
dHJ1Y3RvciIpOworICAgIC8vIEZJWE1FOiBUaGUgbG9naWMgaGVyZSBpcyBhbG1vc3QgZXhhY3Qg
ZHVwbGljYXRlIG9mIFY4OjpDb25zdHJ1Y3RET01PYmplY3QuCisgICAgLy8gQ29uc2lkZXIgcmVm
YWN0b3JpbmcgdG8gcmVkdWNlIGR1cGxpY2F0aW9uLgorICAgIFN0cmluZyBjc3NWYWx1ZTsKKyAg
ICBpZiAoYXJncy5MZW5ndGgoKSA+PSAxKQorICAgICAgICBjc3NWYWx1ZSA9IHRvV2ViQ29yZVN0
cmluZyhhcmdzWzBdKTsKKworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFJlZlB0cjxX
ZWJLaXRDU1NNYXRyaXg+IG1hdHJpeCA9IFdlYktpdENTU01hdHJpeDo6Y3JlYXRlKGNzc1ZhbHVl
LCBlYyk7CisgICAgaWYgKGVjKQorICAgICAgICB0aHJvd0Vycm9yKGVjKTsKKworICAgIC8vIFRy
YW5zZm9ybSB0aGUgaG9sZGVyIGludG8gYSB3cmFwcGVyIG9iamVjdCBmb3IgdGhlIG1hdHJpeC4K
KyAgICBWOFByb3h5OjpTZXRET01XcmFwcGVyKGFyZ3MuSG9sZGVyKCksIFY4Q2xhc3NJbmRleDo6
VG9JbnQoVjhDbGFzc0luZGV4OjpXRUJLSVRDU1NNQVRSSVgpLCBtYXRyaXguZ2V0KCkpOworICAg
IHJldHVybiB0b1Y4KG1hdHJpeC5yZWxlYXNlKCksIGFyZ3MuSG9sZGVyKCkpOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOFhNTFNlcmlhbGl6ZXJDb25zdHJ1Y3Rvci5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOFhNTFNlcmlhbGl6ZXJDb25zdHJ1Y3Rvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uN2IyMDI5MwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4WE1MU2VyaWFsaXplckNvbnN0cnVjdG9yLmNwcApAQCAtMCwwICsxLDQ1
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICogCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJYTUxTZXJpYWxpemVyLmgiCisKKyNp
bmNsdWRlICJWOEJpbmRpbmcuaCIKKyNpbmNsdWRlICJWOFByb3h5LmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworQ0FMTEJBQ0tfRlVOQ19ERUNMKFhNTFNlcmlhbGl6ZXJDb25zdHJ1Y3RvcikK
K3sKKyAgICBJTkNfU1RBVFMoIkRPTS5YTUxTZXJpYWxpemVyLkNvbnN0cnVjdG9yIik7CisgICAg
cmV0dXJuIFY4UHJveHk6OkNvbnN0cnVjdERPTU9iamVjdDxWOENsYXNzSW5kZXg6OlhNTFNFUklB
TElaRVIsIFhNTFNlcmlhbGl6ZXI+KGFyZ3MpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhQYXRoRXZhbHVhdG9y
Q29uc3RydWN0b3IuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhYUGF0aEV2YWx1
YXRvckNvbnN0cnVjdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44
NGQ3NWRiCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhY
UGF0aEV2YWx1YXRvckNvbnN0cnVjdG9yLmNwcApAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1
dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJYUGF0aEV2YWx1YXRvci5oIgorCisjaW5jbHVkZSAiVjhCaW5k
aW5nLmgiCisjaW5jbHVkZSAiVjhQcm94eS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0NB
TExCQUNLX0ZVTkNfREVDTChYUGF0aEV2YWx1YXRvckNvbnN0cnVjdG9yKQoreworICAgIElOQ19T
VEFUUygiRE9NLlhQYXRoRXZhbHVhdG9yLkNvbnN0cnVjdG9yIik7CisgICAgcmV0dXJuIFY4UHJv
eHk6OkNvbnN0cnVjdERPTU9iamVjdDxWOENsYXNzSW5kZXg6OlhQQVRIRVZBTFVBVE9SLCBYUGF0
aEV2YWx1YXRvcj4oYXJncyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4WFNMVFByb2Nlc3NvckN1c3RvbS5jcHAg
Yi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhTTFRQcm9jZXNzb3JDdXN0b20uY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkwYTc3MGIKLS0tIC9kZXYvbnVsbAor
KysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhTTFRQcm9jZXNzb3JDdXN0b20uY3Bw
CkBAIC0wLDAgKzEsMTUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJYU0xUUHJv
Y2Vzc29yLmgiCisKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkRvY3VtZW50RnJh
Z21lbnQuaCIKKyNpbmNsdWRlICJOb2RlLmgiCisKKyNpbmNsdWRlICJWOEJpbmRpbmcuaCIKKyNp
bmNsdWRlICJWOEN1c3RvbUJpbmRpbmcuaCIKKyNpbmNsdWRlICJWOERvY3VtZW50LmgiCisjaW5j
bHVkZSAiVjhOb2RlLmgiCisjaW5jbHVkZSAiVjhQcm94eS5oIgorCisjaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0NBTExCQUNLX0ZVTkNfREVDTChYU0xU
UHJvY2Vzc29yQ29uc3RydWN0b3IpCit7CisgICAgSU5DX1NUQVRTKCJET00uWFNMVFByb2Nlc3Nv
ci5Db25zdHJ1Y3RvciIpOworICAgIHJldHVybiBWOFByb3h5OjpDb25zdHJ1Y3RET01PYmplY3Q8
VjhDbGFzc0luZGV4OjpYU0xUUFJPQ0VTU09SLCBYU0xUUHJvY2Vzc29yPihhcmdzKTsKK30KKwor
CitDQUxMQkFDS19GVU5DX0RFQ0woWFNMVFByb2Nlc3NvckltcG9ydFN0eWxlc2hlZXQpCit7Cisg
ICAgSU5DX1NUQVRTKCJET00uWFNMVFByb2Nlc3Nvci5pbXBvcnRTdHlsZXNoZWV0Iik7CisgICAg
aWYgKCFWOE5vZGU6Okhhc0luc3RhbmNlKGFyZ3NbMF0pKQorICAgICAgICByZXR1cm4gdjg6OlVu
ZGVmaW5lZCgpOworCisgICAgWFNMVFByb2Nlc3NvciogaW1wID0gVjhQcm94eTo6VG9OYXRpdmVP
YmplY3Q8WFNMVFByb2Nlc3Nvcj4oVjhDbGFzc0luZGV4OjpYU0xUUFJPQ0VTU09SLCBhcmdzLkhv
bGRlcigpKTsKKworICAgIE5vZGUqIG5vZGUgPSBWOFByb3h5OjpET01XcmFwcGVyVG9Ob2RlPE5v
ZGU+KGFyZ3NbMF0pOworICAgIGltcC0+aW1wb3J0U3R5bGVzaGVldChub2RlKTsKKyAgICByZXR1
cm4gdjg6OlVuZGVmaW5lZCgpOworfQorCisKK0NBTExCQUNLX0ZVTkNfREVDTChYU0xUUHJvY2Vz
c29yVHJhbnNmb3JtVG9GcmFnbWVudCkKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5YU0xUUHJvY2Vz
c29yLnRyYW5zZm9ybVRvRnJhZ21lbnQiKTsKKyAgICBpZiAoIVY4Tm9kZTo6SGFzSW5zdGFuY2Uo
YXJnc1swXSkgfHwgIVY4RG9jdW1lbnQ6Okhhc0luc3RhbmNlKGFyZ3NbMV0pKQorICAgICAgICBy
ZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworCisgICAgWFNMVFByb2Nlc3NvciogaW1wID0gVjhQcm94
eTo6VG9OYXRpdmVPYmplY3Q8WFNMVFByb2Nlc3Nvcj4oVjhDbGFzc0luZGV4OjpYU0xUUFJPQ0VT
U09SLCBhcmdzLkhvbGRlcigpKTsKKworICAgIE5vZGUqIHNvdXJjZSA9IFY4UHJveHk6OkRPTVdy
YXBwZXJUb05vZGU8Tm9kZT4oYXJnc1swXSk7CisgICAgRG9jdW1lbnQqIG93bmVyID0gVjhQcm94
eTo6RE9NV3JhcHBlclRvTm9kZTxEb2N1bWVudD4oYXJnc1sxXSk7CisgICAgUmVmUHRyPERvY3Vt
ZW50RnJhZ21lbnQ+IHJlc3VsdCA9IGltcC0+dHJhbnNmb3JtVG9GcmFnbWVudChzb3VyY2UsIG93
bmVyKTsKKyAgICByZXR1cm4gVjhQcm94eTo6Tm9kZVRvVjhPYmplY3QocmVzdWx0LmdldCgpKTsK
K30KKworCitDQUxMQkFDS19GVU5DX0RFQ0woWFNMVFByb2Nlc3NvclRyYW5zZm9ybVRvRG9jdW1l
bnQpCit7CisgICAgSU5DX1NUQVRTKCJET00uWFNMVFByb2Nlc3Nvci50cmFuc2Zvcm1Ub0RvY3Vt
ZW50Iik7CisKKyAgICBpZiAoIVY4Tm9kZTo6SGFzSW5zdGFuY2UoYXJnc1swXSkpCisgICAgICAg
IHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisKKyAgICBYU0xUUHJvY2Vzc29yKiBpbXAgPSBWOFBy
b3h5OjpUb05hdGl2ZU9iamVjdDxYU0xUUHJvY2Vzc29yPihWOENsYXNzSW5kZXg6OlhTTFRQUk9D
RVNTT1IsIGFyZ3MuSG9sZGVyKCkpOworCisgICAgTm9kZSogc291cmNlID0gVjhQcm94eTo6RE9N
V3JhcHBlclRvTm9kZTxOb2RlPihhcmdzWzBdKTsKKyAgICBpZiAoIXNvdXJjZSkKKyAgICAgICAg
cmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKworICAgIFJlZlB0cjxEb2N1bWVudD4gcmVzdWx0ID0g
aW1wLT50cmFuc2Zvcm1Ub0RvY3VtZW50KHNvdXJjZSk7CisgICAgaWYgKCFyZXN1bHQpCisgICAg
ICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisKKyAgICByZXR1cm4gVjhQcm94eTo6Tm9kZVRv
VjhPYmplY3QocmVzdWx0LmdldCgpKTsKK30KKworCitDQUxMQkFDS19GVU5DX0RFQ0woWFNMVFBy
b2Nlc3NvclNldFBhcmFtZXRlcikKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5YU0xUUHJvY2Vzc29y
LnNldFBhcmFtZXRlciIpOworICAgIGlmIChpc1VuZGVmaW5lZE9yTnVsbChhcmdzWzFdKSB8fCBp
c1VuZGVmaW5lZE9yTnVsbChhcmdzWzJdKSkKKyAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQo
KTsKKworICAgIFhTTFRQcm9jZXNzb3IqIGltcCA9IFY4UHJveHk6OlRvTmF0aXZlT2JqZWN0PFhT
TFRQcm9jZXNzb3I+KFY4Q2xhc3NJbmRleDo6WFNMVFBST0NFU1NPUiwgYXJncy5Ib2xkZXIoKSk7
CisKKyAgICBTdHJpbmcgbmFtZXNwYWNlVVJJID0gdG9XZWJDb3JlU3RyaW5nKGFyZ3NbMF0pOwor
ICAgIFN0cmluZyBsb2NhbE5hbWUgPSB0b1dlYkNvcmVTdHJpbmcoYXJnc1sxXSk7CisgICAgU3Ry
aW5nIHZhbHVlID0gdG9XZWJDb3JlU3RyaW5nKGFyZ3NbMl0pOworICAgIGltcC0+c2V0UGFyYW1l
dGVyKG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lLCB2YWx1ZSk7CisKKyAgICByZXR1cm4gdjg6OlVu
ZGVmaW5lZCgpOworfQorCisKK0NBTExCQUNLX0ZVTkNfREVDTChYU0xUUHJvY2Vzc29yR2V0UGFy
YW1ldGVyKQoreworICAgIElOQ19TVEFUUygiRE9NLlhTTFRQcm9jZXNzb3IuZ2V0UGFyYW1ldGVy
Iik7CisgICAgaWYgKGlzVW5kZWZpbmVkT3JOdWxsKGFyZ3NbMV0pKQorICAgICAgICByZXR1cm4g
djg6OlVuZGVmaW5lZCgpOworCisgICAgWFNMVFByb2Nlc3NvciogaW1wID0gVjhQcm94eTo6VG9O
YXRpdmVPYmplY3Q8WFNMVFByb2Nlc3Nvcj4oVjhDbGFzc0luZGV4OjpYU0xUUFJPQ0VTU09SLCBh
cmdzLkhvbGRlcigpKTsKKworICAgIFN0cmluZyBuYW1lc3BhY2VVUkkgPSB0b1dlYkNvcmVTdHJp
bmcoYXJnc1swXSk7CisgICAgU3RyaW5nIGxvY2FsTmFtZSA9IHRvV2ViQ29yZVN0cmluZyhhcmdz
WzFdKTsKKyAgICBTdHJpbmcgcmVzdWx0ID0gaW1wLT5nZXRQYXJhbWV0ZXIobmFtZXNwYWNlVVJJ
LCBsb2NhbE5hbWUpOworICAgIGlmIChyZXN1bHQuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiB2
ODo6VW5kZWZpbmVkKCk7CisKKyAgICByZXR1cm4gdjhTdHJpbmcocmVzdWx0KTsKK30KKworQ0FM
TEJBQ0tfRlVOQ19ERUNMKFhTTFRQcm9jZXNzb3JSZW1vdmVQYXJhbWV0ZXIpCit7CisgICAgSU5D
X1NUQVRTKCJET00uWFNMVFByb2Nlc3Nvci5yZW1vdmVQYXJhbWV0ZXIiKTsKKyAgICBpZiAoaXNV
bmRlZmluZWRPck51bGwoYXJnc1sxXSkpCisgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7
CisKKyAgICBYU0xUUHJvY2Vzc29yKiBpbXAgPSBWOFByb3h5OjpUb05hdGl2ZU9iamVjdDxYU0xU
UHJvY2Vzc29yPihWOENsYXNzSW5kZXg6OlhTTFRQUk9DRVNTT1IsIGFyZ3MuSG9sZGVyKCkpOwor
CisgICAgU3RyaW5nIG5hbWVzcGFjZVVSSSA9IHRvV2ViQ29yZVN0cmluZyhhcmdzWzBdKTsKKyAg
ICBTdHJpbmcgbG9jYWxOYW1lID0gdG9XZWJDb3JlU3RyaW5nKGFyZ3NbMV0pOworICAgIGltcC0+
cmVtb3ZlUGFyYW1ldGVyKG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lKTsKKyAgICByZXR1cm4gdjg6
OlVuZGVmaW5lZCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQo=
</data>
<flag name="review"
          id="13596"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>