<?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>23106</bug_id>
          
          <creation_ts>2009-01-04 10:29:08 -0800</creation_ts>
          <short_desc>HTMLFormCollection::namedItem ignores caseSensitive argument</short_desc>
          <delta_ts>2009-01-05 09:41:41 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</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="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>104359</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-01-04 10:29:08 -0800</bug_when>
    <thetext>I noticed this while looking at unused variable warnings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>104403</commentid>
    <comment_count>1</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-01-04 23:36:33 -0800</bug_when>
    <thetext>It turns out this has no effect because the only collection that ever gets passed false for caseSensitive is the anchors collection. A much better way to do that would be to add a findAnchor function to Document for the two call sites that need it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>104404</commentid>
    <comment_count>2</comment_count>
      <attachid>26426</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-01-05 00:12:39 -0800</bug_when>
    <thetext>Created attachment 26426
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>104439</commentid>
    <comment_count>3</comment_count>
      <attachid>26426</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2009-01-05 09:14:00 -0800</bug_when>
    <thetext>Comment on attachment 26426
patch

r=me!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>104448</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-01-05 09:32:25 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/39603</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>104450</commentid>
    <comment_count>5</comment_count>
      <attachid>26426</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2009-01-05 09:39:14 -0800</bug_when>
    <thetext>Comment on attachment 26426
patch

&gt; +Element* Document::findAnchor(const String&amp; name)
&gt; +{
&gt; +    if (name.isEmpty())
&gt; +        return 0;
&gt; +    if (Element* element = getElementById(name))
&gt; +        return element;

Couldn&apos;t this return something other than an anchor element?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>104451</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-01-05 09:41:41 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; Couldn&apos;t this return something other than an anchor element?

Yes. This function finds an &quot;anchor&quot;, which is the site that a &quot;#xxx&quot; fragment navigates to; nowadays that can be any element with an ID although historically it could only be an anchor element.

If this function returned only anchor elements, I would have made its return type be HTMLAnchorElement instead of Element.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26426</attachid>
            <date>2009-01-05 00:12:39 -0800</date>
            <delta_ts>2009-01-05 09:14:00 -0800</delta_ts>
            <desc>patch</desc>
            <filename>FindAnchorPatch.txt</filename>
            <type>text/plain</type>
            <size>25153</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzOTU5NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNjkgQEAKKzIwMDktMDEtMDUgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJ1ZyAy
MzEwNjogSFRNTEZvcm1Db2xsZWN0aW9uOjpuYW1lZEl0ZW0gaWdub3JlcyBjYXNlU2Vuc2l0aXZl
IGFyZ3VtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzEwNgorCisgICAgICAgIFRoaXMgbGVkIG1lIHRvIGEgYnVuY2ggb2YgZGVhZCBjb2RlLiBJ
dCB0dXJucyBvdXQgdGhhdCBIVE1MIGNvbGxlY3Rpb25zCisgICAgICAgIHdlcmUgY2Fycnlpbmcg
dGhlIGNhc2UtaW5zZW5zaXRpdmUgY29kZSBqdXN0IHNvIHRoZXkgY291bGQgYmUgdXNlZCB0bwor
ICAgICAgICBmaW5kIGFuY2hvcnMsIHNvbWV0aGluZyB3ZSBjYW4gZG8gbW9yZSBzaW1wbHkgYW5k
IGVmZmljaWVudGx5IHdpdGhvdXQKKyAgICAgICAgY3JlYXRpbmcgYSBET00gSFRNTENvbGxlY3Rp
b24gb2JqZWN0LgorCisgICAgICAgIE5vIGJlaGF2aW9yIGNoYW5nZS4gSnVzdCBhZGRpbmcgYSBu
ZXcgZnVuY3Rpb24gZmluZEFuY2hvciBmdW5jdGlvbiBhbmQKKyAgICAgICAgcmVtb3Zpbmcgc29t
ZSBkZWFkIGNvZGUuCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6OmZpbmRBbmNob3IpOiBBZGRlZC4KKyAgICAgICAgKiBkb20vRG9jdW1l
bnQuaDogRGl0dG8uCisKKyAgICAgICAgKiBodG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxBbmNob3JFbGVtZW50OjphY2Nlc3NLZXkpOiBUYWtlIGFuZCBy
ZXR1cm4gQXRvbWljU3RyaW5nCisgICAgICAgIHJlZmVyZW5jZXMgZm9yIGJldHRlciBlZmZpY2ll
bmN5LgorICAgICAgICAoV2ViQ29yZTo6SFRNTEFuY2hvckVsZW1lbnQ6OnNldEFjY2Vzc0tleSk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTEFuY2hvckVsZW1lbnQ6OmNoYXJzZXQpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBbmNob3JFbGVtZW50OjpzZXRDaGFyc2V0KTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MQW5jaG9yRWxlbWVudDo6Y29vcmRzKTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MQW5jaG9yRWxlbWVudDo6c2V0Q29vcmRzKTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MQW5jaG9yRWxlbWVudDo6c2V0SHJlZik6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6SFRNTEFuY2hvckVsZW1lbnQ6OmhyZWZsYW5nKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpIVE1MQW5jaG9yRWxlbWVudDo6c2V0SHJlZmxhbmcpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBbmNob3JFbGVtZW50OjpuYW1lKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpIVE1MQW5jaG9yRWxlbWVudDo6c2V0TmFtZSk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTEFuY2hvckVsZW1lbnQ6OnJlbCk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6SFRNTEFuY2hvckVsZW1lbnQ6OnNldFJlbCk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTEFuY2hvckVsZW1lbnQ6OnJldik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
SFRNTEFuY2hvckVsZW1lbnQ6OnNldFJldik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRN
TEFuY2hvckVsZW1lbnQ6OnNoYXBlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MQW5j
aG9yRWxlbWVudDo6c2V0U2hhcGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBbmNo
b3JFbGVtZW50OjpzZXRUYXJnZXQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBbmNo
b3JFbGVtZW50Ojp0eXBlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MQW5jaG9yRWxl
bWVudDo6c2V0VHlwZSk6IERpdHRvLgorICAgICAgICAqIGh0bWwvSFRNTEFuY2hvckVsZW1lbnQu
aDogRGl0dG8uCisKKyAgICAgICAgKiBodG1sL0hUTUxDb2xsZWN0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxDb2xsZWN0aW9uOjpjaGVja0Zvck5hbWVNYXRjaCk6IENoYW5nZWQgYXJn
dW1lbnQgdG8gYW4KKyAgICAgICAgQXRvbWljU3RyaW5nIGFuZCByZW1vdmVkIHRoZSBjYXNlU2Vu
c2l0aXZlIGJvb2xlYW4sIHNpbmNlIHdlJ3JlIG5vdyBhbHdheXMKKyAgICAgICAgY2FzZSBzZW5z
aXRpdmUuCisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29sbGVjdGlvbjo6bmFtZWRJdGVtKTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29sbGVjdGlvbjo6bmV4dE5hbWVkSXRlbSk6IERp
dHRvLgorICAgICAgICAqIGh0bWwvSFRNTENvbGxlY3Rpb24uaDogRGl0dG8uCisgICAgICAgICog
aHRtbC9IVE1MRm9ybUNvbGxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1D
b2xsZWN0aW9uOjpnZXROYW1lZEl0ZW0pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxG
b3JtQ29sbGVjdGlvbjo6Z2V0TmFtZWRGb3JtSXRlbSk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTEZvcm1Db2xsZWN0aW9uOjpuZXh0TmFtZWRJdGVtSW50ZXJuYWwpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29sbGVjdGlvbjo6bmFtZWRJdGVtKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbGxlY3Rpb246Om5leHROYW1lZEl0ZW0pOiBEaXR0
by4KKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29sbGVjdGlvbi5oOiBEaXR0by4KKyAgICAgICAg
KiBodG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxl
Y3RFbGVtZW50OjpuYW1lZEl0ZW0pOiBEaXR0by4KKyAgICAgICAgKiBodG1sL0hUTUxTZWxlY3RF
bGVtZW50Lmg6IERpdHRvLgorCisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpnb3RvQW5jaG9yKTogVXNlIHRoZSBuZXcgZmlu
ZEFuY2hvciBmdW5jdGlvbi4KKyAgICAgICAgKiBwYWdlL0FjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aW50
ZXJuYWxMaW5rRWxlbWVudCk6IERpdHRvLgorCiAyMDA5LTAxLTA0ICBEYXJpbiBBZGxlciAgPGRh
cmluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBPbGl2ZXIgSHVudC4KSW5kZXg6
IFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAJKHJldmlzaW9uIDM5NTkzKQorKysgV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01OCw2ICs1OCw3IEBACiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIK
ICNpbmNsdWRlICJGcmFtZVRyZWUuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRl
ICJIVE1MQW5jaG9yRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxCb2R5RWxlbWVudC5oIgogI2lu
Y2x1ZGUgIkhUTUxDYW52YXNFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTERvY3VtZW50LmgiCkBA
IC00MzQ3LDQgKzQzNDgsMjcgQEAgdm9pZCBEb2N1bWVudDo6cG9zdFRhc2soUGFzc1JlZlB0cjxU
YXNrPgogICAgIH0KIH0KIAorRWxlbWVudCogRG9jdW1lbnQ6OmZpbmRBbmNob3IoY29uc3QgU3Ry
aW5nJiBuYW1lKQoreworICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIDA7
CisgICAgaWYgKEVsZW1lbnQqIGVsZW1lbnQgPSBnZXRFbGVtZW50QnlJZChuYW1lKSkKKyAgICAg
ICAgcmV0dXJuIGVsZW1lbnQ7CisgICAgZm9yIChOb2RlKiBub2RlID0gdGhpczsgbm9kZTsgbm9k
ZSA9IHRyYXZlcnNlTmV4dE5vZGUoKSkgeworICAgICAgICBpZiAobm9kZS0+aGFzVGFnTmFtZShh
VGFnKSkgeworICAgICAgICAgICAgSFRNTEFuY2hvckVsZW1lbnQqIGFuY2hvciA9IHN0YXRpY19j
YXN0PEhUTUxBbmNob3JFbGVtZW50Kj4obm9kZSk7CisgICAgICAgICAgICBpZiAoaW5Db21wYXRN
b2RlKCkpIHsKKyAgICAgICAgICAgICAgICAvLyBRdWlya3MgbW9kZSwgY2FzZSBpbnNlbnNpdGl2
ZSBjb21wYXJpc29uIG9mIG5hbWVzLgorICAgICAgICAgICAgICAgIGlmIChlcXVhbElnbm9yaW5n
Q2FzZShhbmNob3ItPm5hbWUoKSwgbmFtZSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBh
bmNob3I7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8vIFN0cmljdCBt
b2RlLCBuYW1lcyBuZWVkIHRvIG1hdGNoIGV4YWN0bHkuCisgICAgICAgICAgICAgICAgaWYgKGFu
Y2hvci0+bmFtZSgpID09IG5hbWUpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBhbmNob3I7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkocmV2aXNpb24gMzk1OTMpCisrKyBXZWJD
b3JlL2RvbS9Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNzIsNiArMjcyLDEyIEBAIHB1
YmxpYzoKICAgICBQYXNzUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiB3aW5kb3dOYW1lZEl0ZW1zKGNv
bnN0IFN0cmluZyYgbmFtZSk7CiAgICAgUGFzc1JlZlB0cjxIVE1MQ29sbGVjdGlvbj4gZG9jdW1l
bnROYW1lZEl0ZW1zKGNvbnN0IFN0cmluZyYgbmFtZSk7CiAKKyAgICAvLyBGaW5kIGZpcnN0IGFu
Y2hvciB3aXRoIHRoZSBnaXZlbiBuYW1lLgorICAgIC8vIEZpcnN0IHNlYXJjaGVzIGZvciBhbiBl
bGVtZW50IHdpdGggdGhlIGdpdmVuIElELCBidXQgaWYgdGhhdCBmYWlscywgdGhlbiBsb29rcwor
ICAgIC8vIGZvciBhbiBhbmNob3Igd2l0aCB0aGUgZ2l2ZW4gbmFtZS4gQW5jaG9yIG5hbWUgbWF0
Y2hpbmcgaXMgc2Vuc2l0aXZlIG9yIG5vdAorICAgIC8vIGRlcGVuZGluZyBvbiB3aGV0aGVyIGRv
Y3VtZW50IGlzIGluIHN0cmljdCBvciBxdWlya3MgbW9kZS4KKyAgICBFbGVtZW50KiBmaW5kQW5j
aG9yKGNvbnN0IFN0cmluZyYgbmFtZSk7CisKICAgICBIVE1MQ29sbGVjdGlvbjo6Q29sbGVjdGlv
bkluZm8qIGNvbGxlY3Rpb25JbmZvKEhUTUxDb2xsZWN0aW9uOjpUeXBlIHR5cGUpCiAgICAgewog
ICAgICAgICBBU1NFUlQodHlwZSA+PSBIVE1MQ29sbGVjdGlvbjo6Rmlyc3RVbm5hbWVkRG9jdW1l
bnRDYWNoZWRUeXBlKTsKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcAkocmV2aXNp
b24gMzk1OTMpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMTAsMzIgKzMxMCwzMiBAQCBib29sIEhUTUxBbmNob3JFbGVtZW50OjpjYW5T
dGFydFNlbGVjdGlvCiAgICAgcmV0dXJuIGlzQ29udGVudEVkaXRhYmxlKCk7CiB9CiAKLVN0cmlu
ZyBIVE1MQW5jaG9yRWxlbWVudDo6YWNjZXNzS2V5KCkgY29uc3QKK2NvbnN0IEF0b21pY1N0cmlu
ZyYgSFRNTEFuY2hvckVsZW1lbnQ6OmFjY2Vzc0tleSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGdl
dEF0dHJpYnV0ZShhY2Nlc3NrZXlBdHRyKTsKIH0KIAotdm9pZCBIVE1MQW5jaG9yRWxlbWVudDo6
c2V0QWNjZXNzS2V5KGNvbnN0IFN0cmluZyAmdmFsdWUpCit2b2lkIEhUTUxBbmNob3JFbGVtZW50
OjpzZXRBY2Nlc3NLZXkoY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBzZXRBdHRy
aWJ1dGUoYWNjZXNza2V5QXR0ciwgdmFsdWUpOwogfQogCi1TdHJpbmcgSFRNTEFuY2hvckVsZW1l
bnQ6OmNoYXJzZXQoKSBjb25zdAorY29uc3QgQXRvbWljU3RyaW5nJiBIVE1MQW5jaG9yRWxlbWVu
dDo6Y2hhcnNldCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGdldEF0dHJpYnV0ZShjaGFyc2V0QXR0
cik7CiB9CiAKLXZvaWQgSFRNTEFuY2hvckVsZW1lbnQ6OnNldENoYXJzZXQoY29uc3QgU3RyaW5n
ICZ2YWx1ZSkKK3ZvaWQgSFRNTEFuY2hvckVsZW1lbnQ6OnNldENoYXJzZXQoY29uc3QgQXRvbWlj
U3RyaW5nJiB2YWx1ZSkKIHsKICAgICBzZXRBdHRyaWJ1dGUoY2hhcnNldEF0dHIsIHZhbHVlKTsK
IH0KIAotU3RyaW5nIEhUTUxBbmNob3JFbGVtZW50Ojpjb29yZHMoKSBjb25zdAorY29uc3QgQXRv
bWljU3RyaW5nJiBIVE1MQW5jaG9yRWxlbWVudDo6Y29vcmRzKCkgY29uc3QKIHsKICAgICByZXR1
cm4gZ2V0QXR0cmlidXRlKGNvb3Jkc0F0dHIpOwogfQogCi12b2lkIEhUTUxBbmNob3JFbGVtZW50
OjpzZXRDb29yZHMoY29uc3QgU3RyaW5nICZ2YWx1ZSkKK3ZvaWQgSFRNTEFuY2hvckVsZW1lbnQ6
OnNldENvb3Jkcyhjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewogICAgIHNldEF0dHJpYnV0
ZShjb29yZHNBdHRyLCB2YWx1ZSk7CiB9CkBAIC0zNDUsNTcgKzM0NSw1NyBAQCBLVVJMIEhUTUxB
bmNob3JFbGVtZW50OjpocmVmKCkgY29uc3QKICAgICByZXR1cm4gZG9jdW1lbnQoKS0+Y29tcGxl
dGVVUkwoZ2V0QXR0cmlidXRlKGhyZWZBdHRyKSk7CiB9CiAKLXZvaWQgSFRNTEFuY2hvckVsZW1l
bnQ6OnNldEhyZWYoY29uc3QgU3RyaW5nICZ2YWx1ZSkKK3ZvaWQgSFRNTEFuY2hvckVsZW1lbnQ6
OnNldEhyZWYoY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBzZXRBdHRyaWJ1dGUo
aHJlZkF0dHIsIHZhbHVlKTsKIH0KIAotU3RyaW5nIEhUTUxBbmNob3JFbGVtZW50OjpocmVmbGFu
ZygpIGNvbnN0Citjb25zdCBBdG9taWNTdHJpbmcmIEhUTUxBbmNob3JFbGVtZW50OjpocmVmbGFu
ZygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGdldEF0dHJpYnV0ZShocmVmbGFuZ0F0dHIpOwogfQog
Ci12b2lkIEhUTUxBbmNob3JFbGVtZW50OjpzZXRIcmVmbGFuZyhjb25zdCBTdHJpbmcgJnZhbHVl
KQordm9pZCBIVE1MQW5jaG9yRWxlbWVudDo6c2V0SHJlZmxhbmcoY29uc3QgQXRvbWljU3RyaW5n
JiB2YWx1ZSkKIHsKICAgICBzZXRBdHRyaWJ1dGUoaHJlZmxhbmdBdHRyLCB2YWx1ZSk7CiB9CiAK
LVN0cmluZyBIVE1MQW5jaG9yRWxlbWVudDo6bmFtZSgpIGNvbnN0Citjb25zdCBBdG9taWNTdHJp
bmcmIEhUTUxBbmNob3JFbGVtZW50OjpuYW1lKCkgY29uc3QKIHsKICAgICByZXR1cm4gZ2V0QXR0
cmlidXRlKG5hbWVBdHRyKTsKIH0KIAotdm9pZCBIVE1MQW5jaG9yRWxlbWVudDo6c2V0TmFtZShj
b25zdCBTdHJpbmcgJnZhbHVlKQordm9pZCBIVE1MQW5jaG9yRWxlbWVudDo6c2V0TmFtZShjb25z
dCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewogICAgIHNldEF0dHJpYnV0ZShuYW1lQXR0ciwgdmFs
dWUpOwogfQogCi1TdHJpbmcgSFRNTEFuY2hvckVsZW1lbnQ6OnJlbCgpIGNvbnN0Citjb25zdCBB
dG9taWNTdHJpbmcmIEhUTUxBbmNob3JFbGVtZW50OjpyZWwoKSBjb25zdAogewogICAgIHJldHVy
biBnZXRBdHRyaWJ1dGUocmVsQXR0cik7CiB9CiAKLXZvaWQgSFRNTEFuY2hvckVsZW1lbnQ6OnNl
dFJlbChjb25zdCBTdHJpbmcgJnZhbHVlKQordm9pZCBIVE1MQW5jaG9yRWxlbWVudDo6c2V0UmVs
KGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7CiAgICAgc2V0QXR0cmlidXRlKHJlbEF0dHIs
IHZhbHVlKTsKIH0KIAotU3RyaW5nIEhUTUxBbmNob3JFbGVtZW50OjpyZXYoKSBjb25zdAorY29u
c3QgQXRvbWljU3RyaW5nJiBIVE1MQW5jaG9yRWxlbWVudDo6cmV2KCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gZ2V0QXR0cmlidXRlKHJldkF0dHIpOwogfQogCi12b2lkIEhUTUxBbmNob3JFbGVtZW50
OjpzZXRSZXYoY29uc3QgU3RyaW5nICZ2YWx1ZSkKK3ZvaWQgSFRNTEFuY2hvckVsZW1lbnQ6OnNl
dFJldihjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewogICAgIHNldEF0dHJpYnV0ZShyZXZB
dHRyLCB2YWx1ZSk7CiB9CiAKLVN0cmluZyBIVE1MQW5jaG9yRWxlbWVudDo6c2hhcGUoKSBjb25z
dAorY29uc3QgQXRvbWljU3RyaW5nJiBIVE1MQW5jaG9yRWxlbWVudDo6c2hhcGUoKSBjb25zdAog
ewogICAgIHJldHVybiBnZXRBdHRyaWJ1dGUoc2hhcGVBdHRyKTsKIH0KIAotdm9pZCBIVE1MQW5j
aG9yRWxlbWVudDo6c2V0U2hhcGUoY29uc3QgU3RyaW5nICZ2YWx1ZSkKK3ZvaWQgSFRNTEFuY2hv
ckVsZW1lbnQ6OnNldFNoYXBlKGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7CiAgICAgc2V0
QXR0cmlidXRlKHNoYXBlQXR0ciwgdmFsdWUpOwogfQpAQCAtNDExLDE3ICs0MTEsMTcgQEAgU3Ry
aW5nIEhUTUxBbmNob3JFbGVtZW50Ojp0YXJnZXQoKSBjb25zdAogICAgIHJldHVybiBnZXRBdHRy
aWJ1dGUodGFyZ2V0QXR0cik7CiB9CiAKLXZvaWQgSFRNTEFuY2hvckVsZW1lbnQ6OnNldFRhcmdl
dChjb25zdCBTdHJpbmcgJnZhbHVlKQordm9pZCBIVE1MQW5jaG9yRWxlbWVudDo6c2V0VGFyZ2V0
KGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7CiAgICAgc2V0QXR0cmlidXRlKHRhcmdldEF0
dHIsIHZhbHVlKTsKIH0KIAotU3RyaW5nIEhUTUxBbmNob3JFbGVtZW50Ojp0eXBlKCkgY29uc3QK
K2NvbnN0IEF0b21pY1N0cmluZyYgSFRNTEFuY2hvckVsZW1lbnQ6OnR5cGUoKSBjb25zdAogewog
ICAgIHJldHVybiBnZXRBdHRyaWJ1dGUodHlwZUF0dHIpOwogfQogCi12b2lkIEhUTUxBbmNob3JF
bGVtZW50OjpzZXRUeXBlKGNvbnN0IFN0cmluZyAmdmFsdWUpCit2b2lkIEhUTUxBbmNob3JFbGVt
ZW50OjpzZXRUeXBlKGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7CiAgICAgc2V0QXR0cmli
dXRlKHR5cGVBdHRyLCB2YWx1ZSk7CiB9CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVs
ZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuaAko
cmV2aXNpb24gMzk1OTMpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtNDksNDAgKzQ5LDQwIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9v
bCBjYW5TdGFydFNlbGVjdGlvbigpIGNvbnN0OwogCi0gICAgU3RyaW5nIGFjY2Vzc0tleSgpIGNv
bnN0OwotICAgIHZvaWQgc2V0QWNjZXNzS2V5KGNvbnN0IFN0cmluZyYpOworICAgIGNvbnN0IEF0
b21pY1N0cmluZyYgYWNjZXNzS2V5KCkgY29uc3Q7CisgICAgdm9pZCBzZXRBY2Nlc3NLZXkoY29u
c3QgQXRvbWljU3RyaW5nJik7CiAKLSAgICBTdHJpbmcgY2hhcnNldCgpIGNvbnN0OwotICAgIHZv
aWQgc2V0Q2hhcnNldChjb25zdCBTdHJpbmcmKTsKKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIGNo
YXJzZXQoKSBjb25zdDsKKyAgICB2b2lkIHNldENoYXJzZXQoY29uc3QgQXRvbWljU3RyaW5nJik7
CiAKLSAgICBTdHJpbmcgY29vcmRzKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRDb29yZHMoY29uc3Qg
U3RyaW5nJik7CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBjb29yZHMoKSBjb25zdDsKKyAgICB2
b2lkIHNldENvb3Jkcyhjb25zdCBBdG9taWNTdHJpbmcmKTsKIAogICAgIEtVUkwgaHJlZigpIGNv
bnN0OwotICAgIHZvaWQgc2V0SHJlZihjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHNldEhyZWYo
Y29uc3QgQXRvbWljU3RyaW5nJik7CiAKLSAgICBTdHJpbmcgaHJlZmxhbmcoKSBjb25zdDsKLSAg
ICB2b2lkIHNldEhyZWZsYW5nKGNvbnN0IFN0cmluZyYpOworICAgIGNvbnN0IEF0b21pY1N0cmlu
ZyYgaHJlZmxhbmcoKSBjb25zdDsKKyAgICB2b2lkIHNldEhyZWZsYW5nKGNvbnN0IEF0b21pY1N0
cmluZyYpOwogCi0gICAgU3RyaW5nIG5hbWUoKSBjb25zdDsKLSAgICB2b2lkIHNldE5hbWUoY29u
c3QgU3RyaW5nJik7CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKCkgY29uc3Q7CisgICAg
dm9pZCBzZXROYW1lKGNvbnN0IEF0b21pY1N0cmluZyYpOwogCi0gICAgU3RyaW5nIHJlbCgpIGNv
bnN0OwotICAgIHZvaWQgc2V0UmVsKGNvbnN0IFN0cmluZyYpOworICAgIGNvbnN0IEF0b21pY1N0
cmluZyYgcmVsKCkgY29uc3Q7CisgICAgdm9pZCBzZXRSZWwoY29uc3QgQXRvbWljU3RyaW5nJik7
CiAKLSAgICBTdHJpbmcgcmV2KCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRSZXYoY29uc3QgU3RyaW5n
Jik7CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiByZXYoKSBjb25zdDsKKyAgICB2b2lkIHNldFJl
dihjb25zdCBBdG9taWNTdHJpbmcmKTsKIAotICAgIFN0cmluZyBzaGFwZSgpIGNvbnN0OwotICAg
IHZvaWQgc2V0U2hhcGUoY29uc3QgU3RyaW5nJik7CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBz
aGFwZSgpIGNvbnN0OworICAgIHZvaWQgc2V0U2hhcGUoY29uc3QgQXRvbWljU3RyaW5nJik7CiAK
ICAgICB2aXJ0dWFsIHNob3J0IHRhYkluZGV4KCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIFN0cmlu
ZyB0YXJnZXQoKSBjb25zdDsKLSAgICB2b2lkIHNldFRhcmdldChjb25zdCBTdHJpbmcmKTsKKyAg
ICB2b2lkIHNldFRhcmdldChjb25zdCBBdG9taWNTdHJpbmcmKTsKIAotICAgIFN0cmluZyB0eXBl
KCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRUeXBlKGNvbnN0IFN0cmluZyYpOworICAgIGNvbnN0IEF0
b21pY1N0cmluZyYgdHlwZSgpIGNvbnN0OworICAgIHZvaWQgc2V0VHlwZShjb25zdCBBdG9taWNT
dHJpbmcmKTsKIAogICAgIFN0cmluZyBoYXNoKCkgY29uc3Q7CiAgICAgU3RyaW5nIGhvc3QoKSBj
b25zdDsKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmNwcAkocmV2aXNpb24gMzk1OTMpCisrKyBX
ZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTIsNDYg
KzMxMiwyOCBAQCBOb2RlKiBIVE1MQ29sbGVjdGlvbjo6bmV4dEl0ZW0oKSBjb25zdAogICAgICBy
ZXR1cm4gcmV0dmFsOwogfQogCi1ib29sIEhUTUxDb2xsZWN0aW9uOjpjaGVja0Zvck5hbWVNYXRj
aChFbGVtZW50KiBlbGVtZW50LCBib29sIGNoZWNrTmFtZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBi
b29sIGNhc2VTZW5zaXRpdmUpIGNvbnN0Citib29sIEhUTUxDb2xsZWN0aW9uOjpjaGVja0Zvck5h
bWVNYXRjaChFbGVtZW50KiBlbGVtZW50LCBib29sIGNoZWNrTmFtZSwgY29uc3QgQXRvbWljU3Ry
aW5nJiBuYW1lKSBjb25zdAogewogICAgIGlmICghZWxlbWVudC0+aXNIVE1MRWxlbWVudCgpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCiAgICAgSFRNTEVsZW1lbnQqIGUgPSBzdGF0aWNf
Y2FzdDxIVE1MRWxlbWVudCo+KGVsZW1lbnQpOwotICAgIGlmIChjYXNlU2Vuc2l0aXZlKSB7Ci0g
ICAgICAgIGlmIChjaGVja05hbWUpIHsKLSAgICAgICAgICAgIC8vIGRvY3VtZW50LmFsbCByZXR1
cm5zIG9ubHkgaW1hZ2VzLCBmb3JtcywgYXBwbGV0cywgb2JqZWN0cyBhbmQgZW1iZWRzCi0gICAg
ICAgICAgICAvLyBieSBuYW1lICh0aG91Z2ggZXZlcnl0aGluZyBieSBpZCkKLSAgICAgICAgICAg
IGlmIChtX3R5cGUgPT0gRG9jQWxsICYmIAotICAgICAgICAgICAgICAgICEoZS0+aGFzTG9jYWxO
YW1lKGltZ1RhZykgfHwgZS0+aGFzTG9jYWxOYW1lKGZvcm1UYWcpIHx8Ci0gICAgICAgICAgICAg
ICAgICBlLT5oYXNMb2NhbE5hbWUoYXBwbGV0VGFnKSB8fCBlLT5oYXNMb2NhbE5hbWUob2JqZWN0
VGFnKSB8fAotICAgICAgICAgICAgICAgICAgZS0+aGFzTG9jYWxOYW1lKGVtYmVkVGFnKSB8fCBl
LT5oYXNMb2NhbE5hbWUoaW5wdXRUYWcpIHx8Ci0gICAgICAgICAgICAgICAgICBlLT5oYXNMb2Nh
bE5hbWUoc2VsZWN0VGFnKSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAg
ICAgICAgICByZXR1cm4gZS0+Z2V0QXR0cmlidXRlKG5hbWVBdHRyKSA9PSBuYW1lICYmIGUtPmdl
dEF0dHJpYnV0ZShpZEF0dHIpICE9IG5hbWU7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAg
cmV0dXJuIGUtPmdldEF0dHJpYnV0ZShpZEF0dHIpID09IG5hbWU7Ci0gICAgfSBlbHNlIHsKLSAg
ICAgICAgaWYgKGNoZWNrTmFtZSkgewotICAgICAgICAgICAgLy8gZG9jdW1lbnQuYWxsIHJldHVy
bnMgb25seSBpbWFnZXMsIGZvcm1zLCBhcHBsZXRzLCBvYmplY3RzIGFuZCBlbWJlZHMKLSAgICAg
ICAgICAgIC8vIGJ5IG5hbWUgKHRob3VnaCBldmVyeXRoaW5nIGJ5IGlkKQotICAgICAgICAgICAg
aWYgKG1fdHlwZSA9PSBEb2NBbGwgJiYgCi0gICAgICAgICAgICAgICAgIShlLT5oYXNMb2NhbE5h
bWUoaW1nVGFnKSB8fCBlLT5oYXNMb2NhbE5hbWUoZm9ybVRhZykgfHwKLSAgICAgICAgICAgICAg
ICAgIGUtPmhhc0xvY2FsTmFtZShhcHBsZXRUYWcpIHx8IGUtPmhhc0xvY2FsTmFtZShvYmplY3RU
YWcpIHx8Ci0gICAgICAgICAgICAgICAgICBlLT5oYXNMb2NhbE5hbWUoZW1iZWRUYWcpIHx8IGUt
Pmhhc0xvY2FsTmFtZShpbnB1dFRhZykgfHwKLSAgICAgICAgICAgICAgICAgIGUtPmhhc0xvY2Fs
TmFtZShzZWxlY3RUYWcpKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAg
ICAgICAgIHJldHVybiBlcXVhbElnbm9yaW5nQ2FzZShlLT5nZXRBdHRyaWJ1dGUobmFtZUF0dHIp
LCBuYW1lKQotICAgICAgICAgICAgICAgICYmICFlcXVhbElnbm9yaW5nQ2FzZShlLT5nZXRBdHRy
aWJ1dGUoaWRBdHRyKSwgbmFtZSk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgcmV0dXJu
IGVxdWFsSWdub3JpbmdDYXNlKGUtPmdldEF0dHJpYnV0ZShpZEF0dHIpLCBuYW1lKTsKLSAgICB9
Ci19CisgICAgaWYgKCFjaGVja05hbWUpCisgICAgICAgIHJldHVybiBlLT5nZXRBdHRyaWJ1dGUo
aWRBdHRyKSA9PSBuYW1lOwogCisgICAgLy8gZG9jdW1lbnQuYWxsIHJldHVybnMgb25seSBpbWFn
ZXMsIGZvcm1zLCBhcHBsZXRzLCBvYmplY3RzIGFuZCBlbWJlZHMKKyAgICAvLyBieSBuYW1lICh0
aG91Z2ggZXZlcnl0aGluZyBieSBpZCkKKyAgICBpZiAobV90eXBlID09IERvY0FsbCAmJiAKKyAg
ICAgICAgIShlLT5oYXNMb2NhbE5hbWUoaW1nVGFnKSB8fCBlLT5oYXNMb2NhbE5hbWUoZm9ybVRh
ZykgfHwKKyAgICAgICAgICBlLT5oYXNMb2NhbE5hbWUoYXBwbGV0VGFnKSB8fCBlLT5oYXNMb2Nh
bE5hbWUob2JqZWN0VGFnKSB8fAorICAgICAgICAgIGUtPmhhc0xvY2FsTmFtZShlbWJlZFRhZykg
fHwgZS0+aGFzTG9jYWxOYW1lKGlucHV0VGFnKSB8fAorICAgICAgICAgIGUtPmhhc0xvY2FsTmFt
ZShzZWxlY3RUYWcpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIGUtPmdl
dEF0dHJpYnV0ZShuYW1lQXR0cikgPT0gbmFtZSAmJiBlLT5nZXRBdHRyaWJ1dGUoaWRBdHRyKSAh
PSBuYW1lOworfQogCi1Ob2RlICpIVE1MQ29sbGVjdGlvbjo6bmFtZWRJdGVtKGNvbnN0IFN0cmlu
ZyAmbmFtZSwgYm9vbCBjYXNlU2Vuc2l0aXZlKSBjb25zdAorTm9kZSogSFRNTENvbGxlY3Rpb246
Om5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0CiB7CiAgICAgLy8gaHR0
cDovL21zZG4ubWljcm9zb2Z0LmNvbS93b3Jrc2hvcC9hdXRob3IvZGh0bWwvcmVmZXJlbmNlL21l
dGhvZHMvbmFtZWRpdGVtLmFzcAogICAgIC8vIFRoaXMgbWV0aG9kIGZpcnN0IHNlYXJjaGVzIGZv
ciBhbiBvYmplY3Qgd2l0aCBhIG1hdGNoaW5nIGlkCkBAIC0zNjIsNyArMzQ0LDcgQEAgTm9kZSAq
SFRNTENvbGxlY3Rpb246Om5hbWVkSXRlbShjb25zdCBTdAogICAgIG1faWRzRG9uZSA9IGZhbHNl
OwogCiAgICAgZm9yIChFbGVtZW50KiBlID0gaXRlbUFmdGVyKDApOyBlOyBlID0gaXRlbUFmdGVy
KGUpKSB7Ci0gICAgICAgIGlmIChjaGVja0Zvck5hbWVNYXRjaChlLCBtX2lkc0RvbmUsIG5hbWUs
IGNhc2VTZW5zaXRpdmUpKSB7CisgICAgICAgIGlmIChjaGVja0Zvck5hbWVNYXRjaChlLCBtX2lk
c0RvbmUsIG5hbWUpKSB7CiAgICAgICAgICAgICBtX2luZm8tPmN1cnJlbnQgPSBlOwogICAgICAg
ICAgICAgcmV0dXJuIGU7CiAgICAgICAgIH0KQEAgLTM3MSw3ICszNTMsNyBAQCBOb2RlICpIVE1M
Q29sbGVjdGlvbjo6bmFtZWRJdGVtKGNvbnN0IFN0CiAgICAgbV9pZHNEb25lID0gdHJ1ZTsKIAog
ICAgIGZvciAoRWxlbWVudCogZSA9IGl0ZW1BZnRlcigwKTsgZTsgZSA9IGl0ZW1BZnRlcihlKSkg
ewotICAgICAgICBpZiAoY2hlY2tGb3JOYW1lTWF0Y2goZSwgbV9pZHNEb25lLCBuYW1lLCBjYXNl
U2Vuc2l0aXZlKSkgeworICAgICAgICBpZiAoY2hlY2tGb3JOYW1lTWF0Y2goZSwgbV9pZHNEb25l
LCBuYW1lKSkgewogICAgICAgICAgICAgbV9pbmZvLT5jdXJyZW50ID0gZTsKICAgICAgICAgICAg
IHJldHVybiBlOwogICAgICAgICB9CkBAIC00NDEsMTIgKzQyMywxMiBAQCB2b2lkIEhUTUxDb2xs
ZWN0aW9uOjpuYW1lZEl0ZW1zKGNvbnN0IEF0CiB9CiAKIAotTm9kZSogSFRNTENvbGxlY3Rpb246
Om5leHROYW1lZEl0ZW0oY29uc3QgU3RyaW5nJiBuYW1lKSBjb25zdAorTm9kZSogSFRNTENvbGxl
Y3Rpb246Om5leHROYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdAogewog
ICAgIHJlc2V0Q29sbGVjdGlvbkluZm8oKTsKIAogICAgIGZvciAoRWxlbWVudCogZSA9IGl0ZW1B
ZnRlcihtX2luZm8tPmN1cnJlbnQpOyBlOyBlID0gaXRlbUFmdGVyKGUpKSB7Ci0gICAgICAgIGlm
IChjaGVja0Zvck5hbWVNYXRjaChlLCBtX2lkc0RvbmUsIG5hbWUsIHRydWUpKSB7CisgICAgICAg
IGlmIChjaGVja0Zvck5hbWVNYXRjaChlLCBtX2lkc0RvbmUsIG5hbWUpKSB7CiAgICAgICAgICAg
ICBtX2luZm8tPmN1cnJlbnQgPSBlOwogICAgICAgICAgICAgcmV0dXJuIGU7CiAgICAgICAgIH0K
QEAgLTQ1OSw3ICs0NDEsNyBAQCBOb2RlKiBIVE1MQ29sbGVjdGlvbjo6bmV4dE5hbWVkSXRlbShj
b25zCiAgICAgbV9pZHNEb25lID0gdHJ1ZTsKIAogICAgIGZvciAoRWxlbWVudCogZSA9IGl0ZW1B
ZnRlcihtX2luZm8tPmN1cnJlbnQpOyBlOyBlID0gaXRlbUFmdGVyKGUpKSB7Ci0gICAgICAgIGlm
IChjaGVja0Zvck5hbWVNYXRjaChlLCBtX2lkc0RvbmUsIG5hbWUsIHRydWUpKSB7CisgICAgICAg
IGlmIChjaGVja0Zvck5hbWVNYXRjaChlLCBtX2lkc0RvbmUsIG5hbWUpKSB7CiAgICAgICAgICAg
ICBtX2luZm8tPmN1cnJlbnQgPSBlOwogICAgICAgICAgICAgcmV0dXJuIGU7CiAgICAgICAgIH0K
SW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5oCShyZXZpc2lvbiAzOTU5MykKKysrIFdlYkNvcmUvaHRt
bC9IVE1MQ29sbGVjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC04NCw4ICs4NCw4IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIE5vZGUqIGl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0OwogICAgIHZp
cnR1YWwgTm9kZSogbmV4dEl0ZW0oKSBjb25zdDsKIAotICAgIHZpcnR1YWwgTm9kZSogbmFtZWRJ
dGVtKGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCBjYXNlU2Vuc2l0aXZlID0gdHJ1ZSkgY29uc3Q7
Ci0gICAgdmlydHVhbCBOb2RlKiBuZXh0TmFtZWRJdGVtKGNvbnN0IFN0cmluZyYgbmFtZSkgY29u
c3Q7IC8vIEluIGNhc2Ugb2YgbXVsdGlwbGUgaXRlbXMgbmFtZWQgdGhlIHNhbWUgd2F5CisgICAg
dmlydHVhbCBOb2RlKiBuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdDsK
KyAgICB2aXJ0dWFsIE5vZGUqIG5leHROYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBuYW1l
KSBjb25zdDsgLy8gSW4gY2FzZSBvZiBtdWx0aXBsZSBpdGVtcyBuYW1lZCB0aGUgc2FtZSB3YXkK
IAogICAgIE5vZGUqIGZpcnN0SXRlbSgpIGNvbnN0OwogCkBAIC0xNDUsNyArMTQ1LDcgQEAgcHJp
dmF0ZToKICAgICB2aXJ0dWFsIHVuc2lnbmVkIGNhbGNMZW5ndGgoKSBjb25zdDsKICAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlTmFtZUNhY2hlKCkgY29uc3Q7CiAKLSAgICBib29sIGNoZWNrRm9yTmFt
ZU1hdGNoKEVsZW1lbnQqLCBib29sIGNoZWNrTmFtZSwgY29uc3QgU3RyaW5nICZuYW1lLCBib29s
IGNhc2VTZW5zaXRpdmUpIGNvbnN0OworICAgIGJvb2wgY2hlY2tGb3JOYW1lTWF0Y2goRWxlbWVu
dCosIGJvb2wgY2hlY2tOYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0OwogCiAg
ICAgUmVmUHRyPE5vZGU+IG1fYmFzZTsKICAgICBUeXBlIG1fdHlwZTsKSW5kZXg6IFdlYkNvcmUv
aHRtbC9IVE1MRm9ybUNvbGxlY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9I
VE1MRm9ybUNvbGxlY3Rpb24uY3BwCShyZXZpc2lvbiAzOTU5MykKKysrIFdlYkNvcmUvaHRtbC9I
VE1MRm9ybUNvbGxlY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Niw0MyArOTYsMzEgQEAg
Tm9kZSogSFRNTEZvcm1Db2xsZWN0aW9uOjppdGVtKHVuc2lnbmVkIAogICAgIHJldHVybiAwOwog
fQogCi1FbGVtZW50KiBIVE1MRm9ybUNvbGxlY3Rpb246OmdldE5hbWVkSXRlbShjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyTmFtZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBib29sIGNhc2VTZW5zaXRp
dmUpIGNvbnN0CitFbGVtZW50KiBIVE1MRm9ybUNvbGxlY3Rpb246OmdldE5hbWVkSXRlbShjb25z
dCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25z
dAogewogICAgIGluZm8oKS0+cG9zaXRpb24gPSAwOwotICAgIHJldHVybiBnZXROYW1lZEZvcm1J
dGVtKGF0dHJOYW1lLCBuYW1lLCAwLCBjYXNlU2Vuc2l0aXZlKTsKKyAgICByZXR1cm4gZ2V0TmFt
ZWRGb3JtSXRlbShhdHRyTmFtZSwgbmFtZSwgMCk7CiB9CiAKLUVsZW1lbnQqIEhUTUxGb3JtQ29s
bGVjdGlvbjo6Z2V0TmFtZWRGb3JtSXRlbShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBpbnQgZHVwbGljYXRlTnVtYmVyLCBib29sIGNhc2VTZW5zaXRp
dmUpIGNvbnN0CitFbGVtZW50KiBIVE1MRm9ybUNvbGxlY3Rpb246OmdldE5hbWVkRm9ybUl0ZW0o
Y29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUsIGNvbnN0IFN0cmluZyYgbmFtZSwgaW50IGR1
cGxpY2F0ZU51bWJlcikgY29uc3QKIHsKICAgICBIVE1MRm9ybUVsZW1lbnQqIGZvcm0gPSBzdGF0
aWNfY2FzdDxIVE1MRm9ybUVsZW1lbnQqPihiYXNlKCkpOwogCiAgICAgYm9vbCBmb3VuZElucHV0
RWxlbWVudHMgPSBmYWxzZTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZm9ybS0+Zm9y
bUVsZW1lbnRzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQq
IGUgPSBmb3JtLT5mb3JtRWxlbWVudHNbaV07Ci0gICAgICAgIGlmIChlLT5pc0VudW1lcmF0YWJs
ZSgpKSB7Ci0gICAgICAgICAgICBib29sIGZvdW5kOwotICAgICAgICAgICAgaWYgKGNhc2VTZW5z
aXRpdmUpCi0gICAgICAgICAgICAgICAgZm91bmQgPSBlLT5nZXRBdHRyaWJ1dGUoYXR0ck5hbWUp
ID09IG5hbWU7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgZm91bmQgPSBlcXVh
bElnbm9yaW5nQ2FzZShlLT5nZXRBdHRyaWJ1dGUoYXR0ck5hbWUpLCBuYW1lKTsKLSAgICAgICAg
ICAgIGlmIChmb3VuZCkgewotICAgICAgICAgICAgICAgIGZvdW5kSW5wdXRFbGVtZW50cyA9IHRy
dWU7Ci0gICAgICAgICAgICAgICAgaWYgKCFkdXBsaWNhdGVOdW1iZXIpCi0gICAgICAgICAgICAg
ICAgICAgIHJldHVybiBlOwotICAgICAgICAgICAgICAgIC0tZHVwbGljYXRlTnVtYmVyOwotICAg
ICAgICAgICAgfQorICAgICAgICBpZiAoZS0+aXNFbnVtZXJhdGFibGUoKSAmJiBlLT5nZXRBdHRy
aWJ1dGUoYXR0ck5hbWUpID09IG5hbWUpIHsKKyAgICAgICAgICAgIGZvdW5kSW5wdXRFbGVtZW50
cyA9IHRydWU7CisgICAgICAgICAgICBpZiAoIWR1cGxpY2F0ZU51bWJlcikKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZTsKKyAgICAgICAgICAgIC0tZHVwbGljYXRlTnVtYmVyOwogICAgICAgICB9
CiAgICAgfQogCiAgICAgaWYgKCFmb3VuZElucHV0RWxlbWVudHMpIHsKICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IGZvcm0tPmltZ0VsZW1lbnRzLnNpemUoKTsgKytpKSB7CiAgICAg
ICAgICAgICBIVE1MSW1hZ2VFbGVtZW50KiBlID0gZm9ybS0+aW1nRWxlbWVudHNbaV07Ci0gICAg
ICAgICAgICBib29sIGZvdW5kOwotICAgICAgICAgICAgaWYgKGNhc2VTZW5zaXRpdmUpCi0gICAg
ICAgICAgICAgICAgZm91bmQgPSBlLT5nZXRBdHRyaWJ1dGUoYXR0ck5hbWUpID09IG5hbWU7Ci0g
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgZm91bmQgPSBlcXVhbElnbm9yaW5nQ2Fz
ZShlLT5nZXRBdHRyaWJ1dGUoYXR0ck5hbWUpLCBuYW1lKTsKLSAgICAgICAgICAgIGlmIChmb3Vu
ZCkgeworICAgICAgICAgICAgaWYgKGUtPmdldEF0dHJpYnV0ZShhdHRyTmFtZSkgPT0gbmFtZSkg
ewogICAgICAgICAgICAgICAgIGlmICghZHVwbGljYXRlTnVtYmVyKQogICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZTsKICAgICAgICAgICAgICAgICAtLWR1cGxpY2F0ZU51bWJlcjsKQEAgLTE1
MCwxNyArMTM4LDE3IEBAIE5vZGUqIEhUTUxGb3JtQ29sbGVjdGlvbjo6bmV4dEl0ZW0oKSBjb24K
IAogRWxlbWVudCogSFRNTEZvcm1Db2xsZWN0aW9uOjpuZXh0TmFtZWRJdGVtSW50ZXJuYWwoY29u
c3QgU3RyaW5nICZuYW1lKSBjb25zdAogewotICAgIEVsZW1lbnQqIHJldHZhbCA9IGdldE5hbWVk
Rm9ybUl0ZW0obV9pZHNEb25lID8gbmFtZUF0dHIgOiBpZEF0dHIsIG5hbWUsICsraW5mbygpLT5w
b3NpdGlvbiwgdHJ1ZSk7CisgICAgRWxlbWVudCogcmV0dmFsID0gZ2V0TmFtZWRGb3JtSXRlbSht
X2lkc0RvbmUgPyBuYW1lQXR0ciA6IGlkQXR0ciwgbmFtZSwgKytpbmZvKCktPnBvc2l0aW9uKTsK
ICAgICBpZiAocmV0dmFsKQogICAgICAgICByZXR1cm4gcmV0dmFsOwogICAgIGlmIChtX2lkc0Rv
bmUpIC8vIHdlJ3JlIGRvbmUKICAgICAgICAgcmV0dXJuIDA7CiAgICAgLy8gQWZ0ZXIgZG9pbmcg
aWQsIGRvIG5hbWUKICAgICBtX2lkc0RvbmUgPSB0cnVlOwotICAgIHJldHVybiBnZXROYW1lZEl0
ZW0obmFtZUF0dHIsIG5hbWUsIHRydWUpOworICAgIHJldHVybiBnZXROYW1lZEl0ZW0obmFtZUF0
dHIsIG5hbWUpOwogfQogCi1Ob2RlKiBIVE1MRm9ybUNvbGxlY3Rpb246Om5hbWVkSXRlbShjb25z
dCBTdHJpbmcmIG5hbWUsIGJvb2wgY2FzZVNlbnNpdGl2ZSkgY29uc3QKK05vZGUqIEhUTUxGb3Jt
Q29sbGVjdGlvbjo6bmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3QKIHsK
ICAgICAvLyBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL3dvcmtzaG9wL2F1dGhvci9kaHRtbC9y
ZWZlcmVuY2UvbWV0aG9kcy9uYW1lZGl0ZW0uYXNwCiAgICAgLy8gVGhpcyBtZXRob2QgZmlyc3Qg
c2VhcmNoZXMgZm9yIGFuIG9iamVjdCB3aXRoIGEgbWF0Y2hpbmcgaWQKQEAgLTE2OSwxNSArMTU3
LDE1IEBAIE5vZGUqIEhUTUxGb3JtQ29sbGVjdGlvbjo6bmFtZWRJdGVtKGNvbnMKICAgICAvLyB0
aGF0IGFyZSBhbGxvd2VkIGEgbmFtZSBhdHRyaWJ1dGUuCiAgICAgcmVzZXRDb2xsZWN0aW9uSW5m
bygpOwogICAgIG1faWRzRG9uZSA9IGZhbHNlOwotICAgIGluZm8oKS0+Y3VycmVudCA9IGdldE5h
bWVkSXRlbShpZEF0dHIsIG5hbWUsIHRydWUpOworICAgIGluZm8oKS0+Y3VycmVudCA9IGdldE5h
bWVkSXRlbShpZEF0dHIsIG5hbWUpOwogICAgIGlmIChpbmZvKCktPmN1cnJlbnQpCiAgICAgICAg
IHJldHVybiBpbmZvKCktPmN1cnJlbnQ7CiAgICAgbV9pZHNEb25lID0gdHJ1ZTsKLSAgICBpbmZv
KCktPmN1cnJlbnQgPSBnZXROYW1lZEl0ZW0obmFtZUF0dHIsIG5hbWUsIHRydWUpOworICAgIGlu
Zm8oKS0+Y3VycmVudCA9IGdldE5hbWVkSXRlbShuYW1lQXR0ciwgbmFtZSk7CiAgICAgcmV0dXJu
IGluZm8oKS0+Y3VycmVudDsKIH0KIAotTm9kZSogSFRNTEZvcm1Db2xsZWN0aW9uOjpuZXh0TmFt
ZWRJdGVtKGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3QKK05vZGUqIEhUTUxGb3JtQ29sbGVjdGlv
bjo6bmV4dE5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0CiB7CiAgICAg
Ly8gVGhlIG5leHROYW1lZEl0ZW1JbnRlcm5hbCBmdW5jdGlvbiBjYW4gcmV0dXJuIHRoZSBzYW1l
IGl0ZW0gdHdpY2UgaWYgaXQgaGFzCiAgICAgLy8gYm90aCBhbiBpZCBhbmQgbmFtZSB0aGF0IGFy
ZSBlcXVhbCB0byB0aGUgbmFtZSBwYXJhbWV0ZXIuIFNvIHRoaXMgZnVuY3Rpb24KSW5kZXg6IFdl
YkNvcmUvaHRtbC9IVE1MRm9ybUNvbGxlY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0
bWwvSFRNTEZvcm1Db2xsZWN0aW9uLmgJKHJldmlzaW9uIDM5NTkzKQorKysgV2ViQ29yZS9odG1s
L0hUTUxGb3JtQ29sbGVjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw4ICs0Miw4IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIE5vZGUqIGl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0OwogICAg
IHZpcnR1YWwgTm9kZSogbmV4dEl0ZW0oKSBjb25zdDsKIAotICAgIHZpcnR1YWwgTm9kZSogbmFt
ZWRJdGVtKGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCBjYXNlU2Vuc2l0aXZlID0gdHJ1ZSkgY29u
c3Q7Ci0gICAgdmlydHVhbCBOb2RlKiBuZXh0TmFtZWRJdGVtKGNvbnN0IFN0cmluZyYgbmFtZSkg
Y29uc3Q7CisgICAgdmlydHVhbCBOb2RlKiBuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBu
YW1lKSBjb25zdDsKKyAgICB2aXJ0dWFsIE5vZGUqIG5leHROYW1lZEl0ZW0oY29uc3QgQXRvbWlj
U3RyaW5nJiBuYW1lKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBIVE1MRm9ybUNvbGxlY3Rpb24o
UGFzc1JlZlB0cjxIVE1MRm9ybUVsZW1lbnQ+KTsKQEAgLTUzLDEwICs1MywxMCBAQCBwcml2YXRl
OgogCiAgICAgc3RhdGljIENvbGxlY3Rpb25JbmZvKiBmb3JtQ29sbGVjdGlvbkluZm8oSFRNTEZv
cm1FbGVtZW50Kik7CiAKLSAgICBFbGVtZW50KiBnZXROYW1lZEl0ZW0oY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0ck5hbWUsIGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCBjYXNlU2Vuc2l0aXZlKSBj
b25zdDsKKyAgICBFbGVtZW50KiBnZXROYW1lZEl0ZW0oY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0
ck5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3Q7CiAgICAgRWxlbWVudCogbmV4
dE5hbWVkSXRlbUludGVybmFsKGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3Q7CiAKLSAgICBFbGVt
ZW50KiBnZXROYW1lZEZvcm1JdGVtKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lLCBjb25z
dCBTdHJpbmcmIG5hbWUsIGludCBkdXBsaWNhdGVOdW1iZXIsIGJvb2wgY2FzZVNlbnNpdGl2ZSkg
Y29uc3Q7CisgICAgRWxlbWVudCogZ2V0TmFtZWRGb3JtSXRlbShjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyTmFtZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBpbnQgZHVwbGljYXRlTnVtYmVyKSBjb25z
dDsKIAogICAgIG11dGFibGUgaW50IGN1cnJlbnRQb3M7CiB9OwpJbmRleDogV2ViQ29yZS9odG1s
L0hUTUxTZWxlY3RFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTFNl
bGVjdEVsZW1lbnQuY3BwCShyZXZpc2lvbiAzOTU5MykKKysrIFdlYkNvcmUvaHRtbC9IVE1MU2Vs
ZWN0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNDksOSArMTA0OSw5IEBAIHZvaWQg
SFRNTFNlbGVjdEVsZW1lbnQ6OnNldFNpemUoaW50IHNpemUKICAgICBzZXRBdHRyaWJ1dGUoc2l6
ZUF0dHIsIFN0cmluZzo6bnVtYmVyKHNpemUpKTsKIH0KIAotTm9kZSogSFRNTFNlbGVjdEVsZW1l
bnQ6Om5hbWVkSXRlbShjb25zdCBTdHJpbmcgJm5hbWUsIGJvb2wgY2FzZVNlbnNpdGl2ZSkKK05v
ZGUqIEhUTUxTZWxlY3RFbGVtZW50OjpuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBuYW1l
KQogewotICAgIHJldHVybiBvcHRpb25zKCktPm5hbWVkSXRlbShuYW1lLCBjYXNlU2Vuc2l0aXZl
KTsKKyAgICByZXR1cm4gb3B0aW9ucygpLT5uYW1lZEl0ZW0obmFtZSk7CiB9CiAKIE5vZGUqIEhU
TUxTZWxlY3RFbGVtZW50OjppdGVtKHVuc2lnbmVkIGluZGV4KQpJbmRleDogV2ViQ29yZS9odG1s
L0hUTUxTZWxlY3RFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxTZWxl
Y3RFbGVtZW50LmgJKHJldmlzaW9uIDM5NTkzKQorKysgV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RF
bGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMSw3ICsxMjEsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzZXRPcHRpb24odW5zaWduZWQgaW5kZXgsIEhUTUxPcHRpb25FbGVtZW50KiwgRXhjZXB0
aW9uQ29kZSYpOwogICAgIHZvaWQgc2V0TGVuZ3RoKHVuc2lnbmVkLCBFeGNlcHRpb25Db2RlJik7
CiAKLSAgICBOb2RlKiBuYW1lZEl0ZW0oY29uc3QgU3RyaW5nJiBuYW1lLCBib29sIGNhc2VTZW5z
aXRpdmUgPSB0cnVlKTsKKyAgICBOb2RlKiBuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBu
YW1lKTsKICAgICBOb2RlKiBpdGVtKHVuc2lnbmVkIGluZGV4KTsKIAogICAgIEhUTUxDb2xsZWN0
aW9uOjpDb2xsZWN0aW9uSW5mbyogY29sbGVjdGlvbkluZm8oKSB7IHJldHVybiAmbV9jb2xsZWN0
aW9uSW5mbzsgfQpJbmRleDogV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkocmV2aXNpb24gMzk1OTMpCisr
KyBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1LDYg
KzU1LDcgQEAKICNpbmNsdWRlICJGcmFtZVByaXZhdGUuaCIKICNpbmNsdWRlICJGcmFtZVRyZWUu
aCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJIVE1MQW5jaG9yRWxlbWVudC5o
IgogI2luY2x1ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxGcmFtZUVsZW1l
bnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKQEAgLTE2MTEsOSArMTYxMiw3IEBAIGJvb2wg
RnJhbWVMb2FkZXI6OmdvdG9BbmNob3IoY29uc3QgU3RyaW4KIAogICAgIG1fZnJhbWUtPmRvY3Vt
ZW50KCktPnNldEdvdG9BbmNob3JOZWVkZWRBZnRlclN0eWxlc2hlZXRzTG9hZChmYWxzZSk7CiAK
LSAgICBOb2RlKiBhbmNob3JOb2RlID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+Z2V0RWxlbWVudEJ5
SWQoQXRvbWljU3RyaW5nKG5hbWUpKTsKLSAgICBpZiAoIWFuY2hvck5vZGUgJiYgIW5hbWUuaXNF
bXB0eSgpKQotICAgICAgICBhbmNob3JOb2RlID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+YW5jaG9y
cygpLT5uYW1lZEl0ZW0obmFtZSwgIW1fZnJhbWUtPmRvY3VtZW50KCktPmluQ29tcGF0TW9kZSgp
KTsKKyAgICBFbGVtZW50KiBhbmNob3JOb2RlID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZmluZEFu
Y2hvcihuYW1lKTsKIAogI2lmIEVOQUJMRShTVkcpCiAgICAgaWYgKG1fZnJhbWUtPmRvY3VtZW50
KCktPmlzU1ZHRG9jdW1lbnQoKSkgewpJbmRleDogV2ViQ29yZS9wYWdlL0FjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9BY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0LmNwcAkocmV2aXNpb24gMzk1OTMpCisrKyBXZWJDb3JlL3BhZ2UvQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk5NCwxMiArOTk0LDkg
QEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eVJlbmRlcgogICAgIGlmIChtX3Jl
bmRlcmVyLT5kb2N1bWVudCgpLT51cmwoKSAhPSBsaW5rVVJMKQogICAgICAgICByZXR1cm4gMDsK
ICAgICAKLSAgICBOb2RlKiBsaW5rZWROb2RlID0gbV9yZW5kZXJlci0+ZG9jdW1lbnQoKS0+Z2V0
RWxlbWVudEJ5SWQocmVmKTsKLSAgICBpZiAoIWxpbmtlZE5vZGUpIHsKLSAgICAgICAgbGlua2Vk
Tm9kZSA9IG1fcmVuZGVyZXItPmRvY3VtZW50KCktPmFuY2hvcnMoKS0+bmFtZWRJdGVtKHJlZiwg
IW1fcmVuZGVyZXItPmRvY3VtZW50KCktPmluQ29tcGF0TW9kZSgpKTsKLSAgICAgICAgaWYgKCFs
aW5rZWROb2RlKQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQorICAgIE5vZGUqIGxpbmtl
ZE5vZGUgPSBtX3JlbmRlcmVyLT5kb2N1bWVudCgpLT5maW5kQW5jaG9yKHJlZik7CisgICAgaWYg
KCFsaW5rZWROb2RlKQorICAgICAgICByZXR1cm4gMDsKICAgICAKICAgICAvLyB0aGUgZWxlbWVu
dCB3ZSBmaW5kIG1heSBub3QgYmUgYWNjZXNzaWJsZSwga2VlcCBzZWFyY2hpbmcgdW50aWwgd2Ug
ZmluZCBhIGdvb2Qgb25lCiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogbGlua2VkQVhFbGVtZW50
ID0gbV9yZW5kZXJlci0+ZG9jdW1lbnQoKS0+YXhPYmplY3RDYWNoZSgpLT5nZXQobGlua2VkTm9k
ZS0+cmVuZGVyZXIoKSk7Cg==
</data>
<flag name="review"
          id="12530"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>