<?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>18421</bug_id>
          
          <creation_ts>2008-04-10 22:02:58 -0700</creation_ts>
          <short_desc>XMLHttpRequest does not properly encode &amp; and &lt; in outgoing messages</short_desc>
          <delta_ts>2008-05-19 12:14:10 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>XML</component>
          <version>525.x (Safari 3.1)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://bdash.net.nz/files/bug-18421.html</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Keith Kowalczykowski">keith</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          <cc>ap</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>77238</commentid>
    <comment_count>0</comment_count>
    <who name="Keith Kowalczykowski">keith</who>
    <bug_when>2008-04-10 22:02:58 -0700</bug_when>
    <thetext>This bug is evident on both mac and windows version of Safari 3.1. I have not tested previous versions, as I do not have access to them. The following is the contents of an email I sent to the dev list regarding the issue:

I&apos;m having a little problem with Safari (3.1) and the escaping of XML
when using XmlHttpRequest. The behavior that I&apos;m seeing is that
Safari/Webkit is not properly escaping &amp; and &lt; when sending an XML document
to the server. For example, if I have the following XML document:

&lt;foo foo=&quot;a&amp;b&quot;&gt;a&amp;b&lt;/foo&gt;

On Firefox/IE, the value sent to the server is:

&lt;foo foo&quot;a&amp;amp;b&quot;&gt;a&amp;amp;b&lt;/foo&gt;

However, on Safari, the value is:

&lt;foo foo=&quot;a&amp;b&quot;&gt;a&amp;b&lt;/foo&gt;

I have included some proof-of-concept code at the end of this email. Please
let me know if there is something obvious that I&apos;m doing wrong, or if this
is really a bug in Safari/Webkit. Thanks.

    -Keith

Sample Code:

This code simply creates an XML document that is the same as the example I
gave above. It then creates an XHR object and sends it to the server. The
server simply sends the received value back to the client, which is then
displayed using an alert dialog. Under IE and FF, this code works fine.
Under Safari, however, it does not.

test.html

&lt;html&gt;
    &lt;head&gt;
    &lt;/head&gt;

    &lt;body&gt;
    &lt;/body&gt;
    &lt;script type=&quot;text/javascript&quot;&gt;
        // Create a new document
        var dom = document.implementation.createDocument(&quot;&quot;,&quot;&quot;, null);
        
        // Create the root node
        var root = dom.appendChild(dom.createElement(&quot;foo&quot;));
        
        // Add an attribute
        root.setAttribute(&quot;foo&quot;, &quot;a&amp;b&quot;);

        // Add a text node
        var txt = dom.createTextNode(&quot;a&amp;b&quot;);

        // Append it
        root.appendChild(txt);
            
        // Create the XHR object
        var xhr = new XMLHttpRequest();
        xhr.open(&quot;POST&quot;, &quot;test.php&quot;, true);
        xhr.onreadystatechange = function()
        {
            if (xhr.readyState == 4 &amp;&amp; xhr.status == 200)
            {
                alert(xhr.responseText);
            }
        };
        xhr.send(dom);


            
    &lt;/script&gt;

&lt;/html&gt;

test.php

&lt;?php
    print @file_get_contents(&apos;php://input&apos;);
?&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>77240</commentid>
    <comment_count>1</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2008-04-10 22:27:29 -0700</bug_when>
    <thetext>Confirmed with 3.1 and TOT WebKit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>77241</commentid>
    <comment_count>2</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2008-04-10 22:28:08 -0700</bug_when>
    <thetext>&lt;rdar://problem/5857369&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>77242</commentid>
    <comment_count>3</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2008-04-10 22:31:23 -0700</bug_when>
    <thetext>I uploaded the test case to &lt;http://bdash.net.nz/files/bug-18421.html&gt; for easy access.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>77246</commentid>
    <comment_count>4</comment_count>
    <who name="Keith Kowalczykowski">keith</who>
    <bug_when>2008-04-10 22:46:04 -0700</bug_when>
    <thetext>Here is some additional discussion that occurred on the dev list, for future reference:

Erik Seidel:

The FF/IE behavior looks to be in disagreement with the spec:

http://www.w3.org/TR/XMLHttpRequest/#send

So it seems like both the spec and our code should be changed.

Please file a bug:
http://webkit.org/quality/reporting.html

Bugs reported on the mailing list are unlikely to be fixed unless also
added to the bugs database.

-eric




Me:

Hi Eric,

    Thanks for the quick response. Based upon the way I interpret the spec, it seems as though FF and IE are in agreement. Specifically, the spec states that send() should &quot;Serialize data into a namespace well-formed XML document and encoded using the encoding given by data.xmlEncoding, if specified, or UTF-8 otherwise.&quot; Looking at the XML spec ( http://www.w3.org/TR/2006/REC-xml-20060816/#sec-well-formed), a well formed document should exclude &lt; and &amp; from attribute and entity values. Therefore, it seems as though FF/IE are doing the correct thing in escaping these characters, where-as Safari is not. Maybe I&apos;m interpreting something wrong, though?

    I have filed a bug #18421 about the issue. What is the general processes for looking at/prioritizing bugs within WebKit?

    Thanks,
        Keith




Eric Seidel:

My apologies.

I misread your message.  You are correct.  Our behavior seems wrong to
me too.  Please file a bug.

-eric</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>80880</commentid>
    <comment_count>5</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-05-18 22:19:55 -0700</bug_when>
    <thetext>See also: bug 19122.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>80900</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-05-19 10:17:26 -0700</bug_when>
    <thetext>*** Bug 19122 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>80901</commentid>
    <comment_count>7</comment_count>
      <attachid>21228</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-05-19 10:26:08 -0700</bug_when>
    <thetext>Created attachment 21228
proposed fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>80902</commentid>
    <comment_count>8</comment_count>
      <attachid>21228</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-05-19 10:35:29 -0700</bug_when>
    <thetext>Comment on attachment 21228
proposed fix

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>80909</commentid>
    <comment_count>9</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-05-19 12:14:10 -0700</bug_when>
    <thetext>Committed revision 33577.
</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>21228</attachid>
            <date>2008-05-19 10:26:08 -0700</date>
            <delta_ts>2008-05-19 10:35:29 -0700</delta_ts>
            <desc>proposed fix</desc>
            <filename>18421r1_patch.txt</filename>
            <type>text/plain</type>
            <size>15316</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzMzU3MykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzYgQEAKKzIwMDgtMDUtMTkgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEB3ZWJr
aXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQyMQorICAgICAgICBY
TUxIdHRwUmVxdWVzdCBkb2VzIG5vdCBwcm9wZXJseSBlbmNvZGUgJiBhbmQgPCBpbiBvdXRnb2lu
ZyBtZXNzYWdlcworCisgICAgICAgIFRlc3Q6IGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvc2Vy
aWFsaXplLWRvY3VtZW50Lmh0bWwKKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTWE1MSHR0cFJl
cXVlc3RDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNYTUxIdHRwUmVxdWVzdDo6c2Vu
ZCk6IFVzZSBjcmVhdGVNYXJrdXAoKSBpbnN0ZWFkIG9mIERvY3VtZW50Ojp0b1N0cmluZygpLgor
CisgICAgICAgICogZG9tL0F0dHIuY3BwOgorICAgICAgICAqIGRvbS9BdHRyLmg6CisgICAgICAg
ICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAg
KiBkb20vRG9jdW1lbnRGcmFnbWVudC5jcHA6CisgICAgICAgICogZG9tL0RvY3VtZW50RnJhZ21l
bnQuaDoKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgICogZG9tL0VsZW1lbnQu
aDoKKyAgICAgICAgKiBkb20vRW50aXR5LmNwcDoKKyAgICAgICAgKiBkb20vRW50aXR5Lmg6Cisg
ICAgICAgICogZG9tL0VudGl0eVJlZmVyZW5jZS5jcHA6CisgICAgICAgICogZG9tL0VudGl0eVJl
ZmVyZW5jZS5oOgorICAgICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAgICogZG9tL1RleHQuY3Bw
OgorICAgICAgICAqIGRvbS9UZXh0Lmg6CisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5jcHA6
CisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5oOgorICAgICAgICBSZW1vdmVkIG1vc3QgTm9k
ZTo6dG9TdHJpbmcoKSBtZXRob2RzLCB3aGljaCB3ZXJlIG1hc3NpdmVseSB3cm9uZywgYW5kIG9u
bHkgdXNlZCBmb3IKKyAgICAgICAgWE1MSHR0cFJlcXVlc3Q6OnNlbmQoKS4gVGhlIHJlbWFuaW5p
bmcgb25lcyBhcmUgc3RpbGwgdXNlZCBpbiBtYXJrdXAuY3BwLCBidXQgc2hvdWxkIHByb2JhYmx5
CisgICAgICAgIGJlIGZvbGRlZCBpbnRvIGl0IGZvciBjb25zaXN0ZW5jeS4KKwogMjAwOC0wNS0x
OSAgY2hyaXMgZmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IERhcmluIEFkbGVyCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTWE1MSHR0cFJl
cXVlc3RDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNYTUxI
dHRwUmVxdWVzdEN1c3RvbS5jcHAJKHJldmlzaW9uIDMzNTY4KQorKysgV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiAr
NDAsNyBAQAogI2luY2x1ZGUgIkpTRG9jdW1lbnQuaCIKICNpbmNsdWRlICJKU0V2ZW50LmgiCiAj
aW5jbHVkZSAia2pzX2V2ZW50cy5oIgorI2luY2x1ZGUgIm1hcmt1cC5oIgogCiB1c2luZyBuYW1l
c3BhY2UgS0pTOwogCkBAIC0xNjYsNyArMTY3LDcgQEAgSlNWYWx1ZSogSlNYTUxIdHRwUmVxdWVz
dDo6c2VuZChFeGVjU3RhdAogICAgIFN0cmluZyBib2R5OwogICAgIGlmIChhcmdzLnNpemUoKSA+
PSAxKSB7CiAgICAgICAgIGlmIChhcmdzWzBdLT50b09iamVjdChleGVjKS0+aW5oZXJpdHMoJkpT
RG9jdW1lbnQ6OnNfaW5mbykpCi0gICAgICAgICAgICBib2R5ID0gc3RhdGljX2Nhc3Q8RG9jdW1l
bnQqPihzdGF0aWNfY2FzdDxKU0RvY3VtZW50Kj4oYXJnc1swXS0+dG9PYmplY3QoZXhlYykpLT5p
bXBsKCkpLT50b1N0cmluZygpOworICAgICAgICAgICAgYm9keSA9IGNyZWF0ZU1hcmt1cChzdGF0
aWNfY2FzdDxEb2N1bWVudCo+KHN0YXRpY19jYXN0PEpTRG9jdW1lbnQqPihhcmdzWzBdLT50b09i
amVjdChleGVjKSktPmltcGwoKSkpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIC8vIGNv
bnZlcnRpbmcgY2VydGFpbiB2YWx1ZXMgKGxpa2UgbnVsbCkgdG8gb2JqZWN0IGNhbiBzZXQgYW4g
ZXhjZXB0aW9uCiAgICAgICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCkluZGV4OiBX
ZWJDb3JlL2RvbS9BdHRyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9BdHRyLmNwcAko
cmV2aXNpb24gMzM1NjgpCisrKyBXZWJDb3JlL2RvbS9BdHRyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTY4LDI3ICsxNjgsNCBAQCB2b2lkIEF0dHI6OmNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5n
ZWRCCiAgICAgICAgIG1fZWxlbWVudC0+YXR0cmlidXRlQ2hhbmdlZChtX2F0dHJpYnV0ZS5nZXQo
KSk7CiB9CiAKLVN0cmluZyBBdHRyOjp0b1N0cmluZygpIGNvbnN0Ci17Ci0gICAgU3RyaW5nIHJl
c3VsdDsKLQotICAgIHJlc3VsdCArPSBub2RlTmFtZSgpOwotCi0gICAgLy8gRklYTUU6IHN1YnN0
aXR1dGUgZW50aXRpZXMgZm9yIGFueSBpbnN0YW5jZXMgb2YgIiBvciAnIC0tCi0gICAgLy8gbWF5
YmUgZWFzaWVyIHRvIGp1c3QgdXNlIHRleHQgdmFsdWUgYW5kIGlnbm9yZSBleGlzdGluZwotICAg
IC8vIGVudGl0eSByZWZzPwotCi0gICAgaWYgKGZpcnN0Q2hpbGQoKSAhPSBOVUxMKSB7Ci0gICAg
ICAgIHJlc3VsdCArPSAiPVwiIjsKLQotICAgICAgICBmb3IgKE5vZGUgKmNoaWxkID0gZmlyc3RD
aGlsZCgpOyBjaGlsZCAhPSBOVUxMOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7Ci0g
ICAgICAgICAgICByZXN1bHQgKz0gY2hpbGQtPnRvU3RyaW5nKCk7Ci0gICAgICAgIH0KLSAgICAg
ICAgCi0gICAgICAgIHJlc3VsdCArPSAiXCIiOwotICAgIH0KLQotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci0KIH0KSW5kZXg6IFdlYkNvcmUvZG9tL0F0dHIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2RvbS9BdHRyLmgJKHJldmlzaW9uIDMzNTY4KQorKysgV2ViQ29yZS9kb20vQXR0ci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC03OCw3ICs3OCw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgY2hp
bGRUeXBlQWxsb3dlZChOb2RlVHlwZSk7CiAKICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFu
Z2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyID0gZmFsc2UsIE5vZGUqIGJlZm9yZUNoYW5nZSA9IDAs
IE5vZGUqIGFmdGVyQ2hhbmdlID0gMCwgaW50IGNoaWxkQ291bnREZWx0YSA9IDApOwotICAgIHZp
cnR1YWwgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3Q7CiAKICAgICBBdHRyaWJ1dGUqIGF0dHIoKSBj
b25zdCB7IHJldHVybiBtX2F0dHJpYnV0ZS5nZXQoKTsgfQogICAgIGNvbnN0IFF1YWxpZmllZE5h
bWUmIHF1YWxpZmllZE5hbWUoKSBjb25zdCB7IHJldHVybiBtX2F0dHJpYnV0ZS0+bmFtZSgpOyB9
CkluZGV4OiBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiAzMzU2OCkKKysrIFdlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzA3NiwxNyArMzA3Niw2IEBAIGJvb2wgRG9jdW1lbnQ6
OnNob3VsZENyZWF0ZVJlbmRlcmVycygpCiAgICAgcmV0dXJuIG1fY3JlYXRlUmVuZGVyZXJzOwog
fQogCi1TdHJpbmcgRG9jdW1lbnQ6OnRvU3RyaW5nKCkgY29uc3QKLXsKLSAgICBTdHJpbmcgcmVz
dWx0OwotCi0gICAgZm9yIChOb2RlICpjaGlsZCA9IGZpcnN0Q2hpbGQoKTsgY2hpbGQgIT0gTlVM
TDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgewotICAgICAgICByZXN1bHQgKz0gY2hp
bGQtPnRvU3RyaW5nKCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQogLy8gU3Vw
cG9ydCBmb3IgSmF2YXNjcmlwdCBleGVjQ29tbWFuZCwgYW5kIHJlbGF0ZWQgbWV0aG9kcwogCiBz
dGF0aWMgRWRpdG9yOjpDb21tYW5kIGNvbW1hbmQoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBT
dHJpbmcmIGNvbW1hbmROYW1lLCBib29sIHVzZXJJbnRlcmZhY2UgPSBmYWxzZSkKSW5kZXg6IFdl
YkNvcmUvZG9tL0RvY3VtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRG9jdW1lbnQu
aAkocmV2aXNpb24gMzM1NjgpCisrKyBXZWJDb3JlL2RvbS9Eb2N1bWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC02MzYsOCArNjM2LDYgQEAgcHVibGljOgogCiAgICAgSFRNTEhlYWRFbGVtZW50KiBo
ZWFkKCk7CiAKLSAgICBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdDsKLSAgICAKICAgICBib29sIGV4
ZWNDb21tYW5kKGNvbnN0IFN0cmluZyYgY29tbWFuZCwgYm9vbCB1c2VySW50ZXJmYWNlID0gZmFs
c2UsIGNvbnN0IFN0cmluZyYgdmFsdWUgPSBTdHJpbmcoKSk7CiAgICAgYm9vbCBxdWVyeUNvbW1h
bmRFbmFibGVkKGNvbnN0IFN0cmluZyYgY29tbWFuZCk7CiAgICAgYm9vbCBxdWVyeUNvbW1hbmRJ
bmRldGVybShjb25zdCBTdHJpbmcmIGNvbW1hbmQpOwpJbmRleDogV2ViQ29yZS9kb20vRG9jdW1l
bnRGcmFnbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVu
dC5jcHAJKHJldmlzaW9uIDMzNTY4KQorKysgV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTU4LDE0ICs1OCw2IEBAIGJvb2wgRG9jdW1lbnRGcmFnbWVu
dDo6Y2hpbGRUeXBlQWxsb3dlZCgKICAgICB9CiB9CiAKLVN0cmluZyBEb2N1bWVudEZyYWdtZW50
Ojp0b1N0cmluZygpIGNvbnN0Ci17Ci0gICAgU3RyaW5nIHJlc3VsdDsKLSAgICBmb3IgKE5vZGUg
KmNoaWxkID0gZmlyc3RDaGlsZCgpOyBjaGlsZCAhPSBOVUxMOyBjaGlsZCA9IGNoaWxkLT5uZXh0
U2libGluZygpKQotICAgICAgICByZXN1bHQgKz0gY2hpbGQtPnRvU3RyaW5nKCk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLQogUGFzc1JlZlB0cjxOb2RlPiBEb2N1bWVudEZyYWdtZW50OjpjbG9u
ZU5vZGUoYm9vbCBkZWVwKQogewogICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjbG9uZSA9
IG5ldyBEb2N1bWVudEZyYWdtZW50KGRvY3VtZW50KCkpOwpJbmRleDogV2ViQ29yZS9kb20vRG9j
dW1lbnRGcmFnbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21l
bnQuaAkocmV2aXNpb24gMzM1NjgpCisrKyBXZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgTm9k
ZVR5cGUgbm9kZVR5cGUoKSBjb25zdDsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Tm9kZT4gY2xv
bmVOb2RlKGJvb2wgZGVlcCk7CiAgICAgdmlydHVhbCBib29sIGNoaWxkVHlwZUFsbG93ZWQoTm9k
ZVR5cGUpOwotICAgIHZpcnR1YWwgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3Q7CiB9OwogCiB9IC8v
bmFtZXNwYWNlCkluZGV4OiBXZWJDb3JlL2RvbS9FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2RvbS9FbGVtZW50LmNwcAkocmV2aXNpb24gMzM1NjgpCisrKyBXZWJDb3JlL2RvbS9F
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTk3LDI3ICs5OTcsNiBAQCBTdHJpbmcgRWxl
bWVudDo6b3BlblRhZ1N0YXJ0VG9TdHJpbmcoKSBjCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAot
U3RyaW5nIEVsZW1lbnQ6OnRvU3RyaW5nKCkgY29uc3QKLXsKLSAgICBTdHJpbmcgcmVzdWx0ID0g
b3BlblRhZ1N0YXJ0VG9TdHJpbmcoKTsKLQotICAgIGlmIChoYXNDaGlsZE5vZGVzKCkpIHsKLSAg
ICAgICAgcmVzdWx0ICs9ICI+IjsKLQotICAgICAgICBmb3IgKE5vZGUgKmNoaWxkID0gZmlyc3RD
aGlsZCgpOyBjaGlsZCAhPSBOVUxMOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7Ci0g
ICAgICAgICAgICByZXN1bHQgKz0gY2hpbGQtPnRvU3RyaW5nKCk7Ci0gICAgICAgIH0KLQotICAg
ICAgICByZXN1bHQgKz0gIjwvIjsKLSAgICAgICAgcmVzdWx0ICs9IG5vZGVOYW1lKCk7Ci0gICAg
ICAgIHJlc3VsdCArPSAiPiI7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgcmVzdWx0ICs9ICIgLz4i
OwotICAgIH0KLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KIHZvaWQgRWxlbWVudDo6dXBkYXRl
SWQoY29uc3QgQXRvbWljU3RyaW5nJiBvbGRJZCwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdJZCkK
IHsKICAgICBpZiAoIWluRG9jdW1lbnQoKSkKSW5kZXg6IFdlYkNvcmUvZG9tL0VsZW1lbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9FbGVtZW50LmgJKHJldmlzaW9uIDMzNTY4KQorKysg
V2ViQ29yZS9kb20vRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTYsOCArMTU2LDYgQEAg
cHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGFjY2Vzc0tleUFjdGlvbihib29sIHNlbmRUb0Fu
eUV2ZW50KSB7IH0KIAotICAgIHZpcnR1YWwgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3Q7Ci0KICAg
ICB2aXJ0dWFsIGJvb2wgaXNVUkxBdHRyaWJ1dGUoQXR0cmlidXRlKikgY29uc3Q7CiAgICAgdmly
dHVhbCBjb25zdCBRdWFsaWZpZWROYW1lJiBpbWFnZVNvdXJjZUF0dHJpYnV0ZU5hbWUoKSBjb25z
dDsKICAgICB2aXJ0dWFsIFN0cmluZyB0YXJnZXQoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsg
fQpJbmRleDogV2ViQ29yZS9kb20vRW50aXR5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Rv
bS9FbnRpdHkuY3BwCShyZXZpc2lvbiAzMzU2OCkKKysrIFdlYkNvcmUvZG9tL0VudGl0eS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTc2LDM1ICs3Niw0IEBAIGJvb2wgRW50aXR5OjpjaGlsZFR5cGVB
bGxvd2VkKE5vZGVUeXBlIHQKICAgICB9CiB9CiAKLVN0cmluZyBFbnRpdHk6OnRvU3RyaW5nKCkg
Y29uc3QKLXsKLSAgICBTdHJpbmcgcmVzdWx0ID0gIjwhRU5USVRZJyAiOwotCi0gICAgaWYgKCFt
X25hbWUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHJlc3VsdCArPSAiICI7Ci0gICAgICAgIHJlc3Vs
dCArPSBtX25hbWU7Ci0gICAgfQotCi0gICAgaWYgKCFtX3B1YmxpY0lkLmlzRW1wdHkoKSkgewot
ICAgICAgICByZXN1bHQgKz0gIiBQVUJMSUMgXCIiOwotICAgICAgICByZXN1bHQgKz0gbV9wdWJs
aWNJZDsKLSAgICAgICAgcmVzdWx0ICs9ICJcIiBcIiI7Ci0gICAgICAgIHJlc3VsdCArPSBtX3N5
c3RlbUlkOwotICAgICAgICByZXN1bHQgKz0gIlwiIjsKLSAgICB9IGVsc2UgaWYgKCFtX3N5c3Rl
bUlkLmlzRW1wdHkoKSkgewotICAgICAgICByZXN1bHQgKz0gIiBTWVNURU0gXCIiOwotICAgICAg
ICByZXN1bHQgKz0gbV9zeXN0ZW1JZDsKLSAgICAgICAgcmVzdWx0ICs9ICJcIiI7Ci0gICAgfQot
Ci0gICAgaWYgKCFtX25vdGF0aW9uTmFtZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgcmVzdWx0ICs9
ICIgTkRBVEEgIjsKLSAgICAgICAgcmVzdWx0ICs9IG1fbm90YXRpb25OYW1lOwotICAgIH0KLQot
ICAgIHJlc3VsdCArPSAiPiI7Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCiB9IC8vIG5hbWVz
cGFjZQpJbmRleDogV2ViQ29yZS9kb20vRW50aXR5LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9k
b20vRW50aXR5LmgJKHJldmlzaW9uIDMzNTY4KQorKysgV2ViQ29yZS9kb20vRW50aXR5LmgJKHdv
cmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgTm9kZVR5
cGUgbm9kZVR5cGUoKSBjb25zdDsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Tm9kZT4gY2xvbmVO
b2RlKGJvb2wgZGVlcCk7CiAgICAgdmlydHVhbCBib29sIGNoaWxkVHlwZUFsbG93ZWQoTm9kZVR5
cGUpOwotICAgIHZpcnR1YWwgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3Q7CiAKIHByaXZhdGU6CiAg
ICAgU3RyaW5nIG1fcHVibGljSWQ7CkluZGV4OiBXZWJDb3JlL2RvbS9FbnRpdHlSZWZlcmVuY2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0VudGl0eVJlZmVyZW5jZS5jcHAJKHJldmlz
aW9uIDMzNTY4KQorKysgV2ViQ29yZS9kb20vRW50aXR5UmVmZXJlbmNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNzIsMTMgKzcyLDQgQEAgYm9vbCBFbnRpdHlSZWZlcmVuY2U6OmNoaWxkVHlwZUFs
bG93ZWQoTgogICAgIH0KIH0KIAotU3RyaW5nIEVudGl0eVJlZmVyZW5jZTo6dG9TdHJpbmcoKSBj
b25zdAotewotICAgIFN0cmluZyByZXN1bHQgPSAiJiI7Ci0gICAgcmVzdWx0ICs9IG1fZW50aXR5
TmFtZTsKLSAgICByZXN1bHQgKz0gIjsiOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQogfSAv
LyBuYW1lc3BhY2UKSW5kZXg6IFdlYkNvcmUvZG9tL0VudGl0eVJlZmVyZW5jZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvZG9tL0VudGl0eVJlZmVyZW5jZS5oCShyZXZpc2lvbiAzMzU2OCkKKysr
IFdlYkNvcmUvZG9tL0VudGl0eVJlZmVyZW5jZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICsz
OCw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIE5vZGVUeXBlIG5vZGVUeXBlKCkgY29uc3Q7CiAg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPE5vZGU+IGNsb25lTm9kZShib29sIGRlZXApOwogICAgIHZp
cnR1YWwgYm9vbCBjaGlsZFR5cGVBbGxvd2VkKE5vZGVUeXBlKTsKLSAgICB2aXJ0dWFsIFN0cmlu
ZyB0b1N0cmluZygpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIFN0cmluZyBtX2VudGl0eU5hbWU7
CkluZGV4OiBXZWJDb3JlL2RvbS9Ob2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vTm9k
ZS5oCShyZXZpc2lvbiAzMzU2OCkKKysrIFdlYkNvcmUvZG9tL05vZGUuaAkod29ya2luZyBjb3B5
KQpAQCAtNDM4LDggKzQzOCw2IEBAIHB1YmxpYzoKICAgICAgKi8KICAgICB2aXJ0dWFsIHZvaWQg
Y2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyID0gZmFsc2UsIE5vZGUqIGJlZm9y
ZUNoYW5nZSA9IDAsIE5vZGUqIGFmdGVyQ2hhbmdlID0gMCwgaW50IGNoaWxkQ291bnREZWx0YSA9
IDApIHt9OwogCi0gICAgdmlydHVhbCBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdCA9IDA7Ci0KICNp
Zm5kZWYgTkRFQlVHCiAgICAgdmlydHVhbCB2b2lkIGZvcm1hdEZvckRlYnVnZ2VyKGNoYXIqIGJ1
ZmZlciwgdW5zaWduZWQgbGVuZ3RoKSBjb25zdDsKIApJbmRleDogV2ViQ29yZS9kb20vVGV4dC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vVGV4dC5jcHAJKHJldmlzaW9uIDMzNTY4KQor
KysgV2ViQ29yZS9kb20vVGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3MywxMSArMjczLDYg
QEAgUGFzc1JlZlB0cjxUZXh0PiBUZXh0OjpjcmVhdGVOZXcoUGFzc1JlZgogICAgIHJldHVybiBu
ZXcgVGV4dChkb2N1bWVudCgpLCBzdHJpbmcpOwogfQogCi1TdHJpbmcgVGV4dDo6dG9TdHJpbmco
KSBjb25zdAotewotICAgIHJldHVybiBub2RlVmFsdWUoKTsKLX0KLQogUGFzc1JlZlB0cjxUZXh0
PiBUZXh0OjpjcmVhdGVXaXRoTGVuZ3RoTGltaXQoRG9jdW1lbnQqIGRvYywgY29uc3QgU3RyaW5n
JiB0ZXh0LCB1bnNpZ25lZCYgY2hhcnNMZWZ0LCB1bnNpZ25lZCBtYXhDaGFycykKIHsKICAgICBp
ZiAoY2hhcnNMZWZ0ID09IHRleHQubGVuZ3RoKCkgJiYgY2hhcnNMZWZ0IDw9IG1heENoYXJzKSB7
CkluZGV4OiBXZWJDb3JlL2RvbS9UZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vVGV4
dC5oCShyZXZpc2lvbiAzMzU2OCkKKysrIFdlYkNvcmUvZG9tL1RleHQuaAkod29ya2luZyBjb3B5
KQpAQCAtNTgsOCArNTgsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlY2FsY1N0eWxl
KFN0eWxlQ2hhbmdlID0gTm9DaGFuZ2UpOwogICAgIHZpcnR1YWwgYm9vbCBjaGlsZFR5cGVBbGxv
d2VkKE5vZGVUeXBlKTsKIAotICAgIHZpcnR1YWwgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3Q7Ci0g
ICAgCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8VGV4dD4gY3JlYXRlV2l0aExlbmd0aExpbWl0KERv
Y3VtZW50KiwgY29uc3QgU3RyaW5nJiwgdW5zaWduZWQmIGNoYXJzTGVmdCwgdW5zaWduZWQgbWF4
Q2hhcnMgPSBjVGV4dE5vZGVMZW5ndGhMaW1pdCk7CiAKICNpZm5kZWYgTkRFQlVHCkluZGV4OiBX
ZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9I
VE1MRWxlbWVudC5jcHAJKHJldmlzaW9uIDMzNTY4KQorKysgV2ViQ29yZS9odG1sL0hUTUxFbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjM5LDI0ICs2MzksNiBAQCB2b2lkIEhUTUxFbGVt
ZW50OjphY2Nlc3NLZXlBY3Rpb24oYm9vbCBzCiAgICAgICAgIGRpc3BhdGNoU2ltdWxhdGVkQ2xp
Y2soMCwgdHJ1ZSk7CiB9CiAKLVN0cmluZyBIVE1MRWxlbWVudDo6dG9TdHJpbmcoKSBjb25zdAot
ewotICAgIGlmICghaGFzQ2hpbGROb2RlcygpICYmIGRvY3VtZW50KCktPmlzSFRNTERvY3VtZW50
KCkpIHsKLSAgICAgICAgU3RyaW5nIHJlc3VsdCA9IG9wZW5UYWdTdGFydFRvU3RyaW5nKCk7Ci0g
ICAgICAgIHJlc3VsdCArPSAiPiI7Ci0KLSAgICAgICAgaWYgKGVuZFRhZ1JlcXVpcmVtZW50KCkg
PT0gVGFnU3RhdHVzUmVxdWlyZWQpIHsKLSAgICAgICAgICAgIHJlc3VsdCArPSAiPC8iOwotICAg
ICAgICAgICAgcmVzdWx0ICs9IG5vZGVOYW1lKCk7Ci0gICAgICAgICAgICByZXN1bHQgKz0gIj4i
OwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0KLSAgICByZXR1
cm4gRWxlbWVudDo6dG9TdHJpbmcoKTsKLX0KLQogU3RyaW5nIEhUTUxFbGVtZW50OjppZCgpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIGdldEF0dHJpYnV0ZShpZEF0dHIpOwpJbmRleDogV2ViQ29yZS9o
dG1sL0hUTUxFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50
LmgJKHJldmlzaW9uIDMzNTY4KQorKysgV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTgzLDggKzgzLDYgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGlz
R2VuZXJpY0Zvcm1FbGVtZW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIHZpcnR1
YWwgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3Q7Ci0KICAgICB2aXJ0dWFsIEhUTUxUYWdTdGF0dXMg
ZW5kVGFnUmVxdWlyZW1lbnQoKSBjb25zdDsKICAgICB2aXJ0dWFsIGludCB0YWdQcmlvcml0eSgp
IGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBjaGlsZEFsbG93ZWQoTm9kZSogbmV3Q2hpbGQpOyAv
LyBFcnJvci1jaGVja2luZyBkdXJpbmcgcGFyc2luZyB0aGF0IGNoZWNrcyB0aGUgRFRECkluZGV4
OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCShyZXZpc2lvbiAzMzU3MykKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDA4LTA1LTE5ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8
YXBAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg0MjEKKyAg
ICAgICAgWE1MSHR0cFJlcXVlc3QgZG9lcyBub3QgcHJvcGVybHkgZW5jb2RlICYgYW5kIDwgaW4g
b3V0Z29pbmcgbWVzc2FnZXMKKworICAgICAgICAqIGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qv
c2VyaWFsaXplLWRvY3VtZW50LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90
ZXN0cy94bWxodHRwcmVxdWVzdC9zZXJpYWxpemUtZG9jdW1lbnQuaHRtbDogQWRkZWQuCisKIDIw
MDgtMDUtMTggIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IFNhbS4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qv
c2VyaWFsaXplLWRvY3VtZW50LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3NlcmlhbGl6ZS1kb2N1bWVudC1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0
L3NlcmlhbGl6ZS1kb2N1bWVudC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MyBAQAorVGVzdCBmb3IgYnVnIDE4NDIxOiBYTUxIdHRwUmVxdWVzdCBkb2VzIG5vdCBwcm9wZXJs
eSBlbmNvZGUgJiBhbmQgPCBpbiBvdXRnb2luZyBtZXNzYWdlcy4KKworUEFTUwoKUHJvcGVydHkg
Y2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9zZXJpYWxp
emUtZG9jdW1lbnQtZXhwZWN0ZWQudHh0Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTmFtZTogc3ZuOm1pbWUtdHlwZQog
ICArIHRleHQvcGxhaW4KTmFtZTogc3ZuOmVvbC1zdHlsZQogICArIG5hdGl2ZQoKSW5kZXg6IExh
eW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvc2VyaWFsaXplLWRvY3VtZW50Lmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9z
ZXJpYWxpemUtZG9jdW1lbnQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAv
dGVzdHMveG1saHR0cHJlcXVlc3Qvc2VyaWFsaXplLWRvY3VtZW50Lmh0bWwJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMzkgQEAKKzxodG1sPgorICAgPGhlYWQ+CisgICA8L2hlYWQ+CisKKyAgIDxi
b2R5PgorICAgPHA+VGVzdCBmb3IgPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE4NDIxIj5idWcgMTg0MjE8L2E+OgorICAgWE1MSHR0cFJlcXVlc3QgZG9l
cyBub3QgcHJvcGVybHkgZW5jb2RlICZhbXA7IGFuZCAmbHQ7IGluIG91dGdvaW5nIG1lc3NhZ2Vz
LjwvcD4KKyAgIDwvYm9keT4KKyAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAg
ICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgICAgIC8vIENyZWF0ZSBhIG5ldyBkb2N1
bWVudAorICAgICAgIHZhciBkb20gPSBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVEb2N1
bWVudCgiIiwiIiwgbnVsbCk7CisKKyAgICAgICAvLyBDcmVhdGUgdGhlIHJvb3Qgbm9kZQorICAg
ICAgIHZhciByb290ID0gZG9tLmFwcGVuZENoaWxkKGRvbS5jcmVhdGVFbGVtZW50KCJmb28iKSk7
CisKKyAgICAgICAvLyBBZGQgYW4gYXR0cmlidXRlCisgICAgICAgcm9vdC5zZXRBdHRyaWJ1dGUo
ImZvbyIsICJhJmIiKTsKKworICAgICAgIC8vIEFkZCBhIHRleHQgbm9kZQorICAgICAgIHZhciB0
eHQgPSBkb20uY3JlYXRlVGV4dE5vZGUoImEmYiIpOworCisgICAgICAgLy8gQXBwZW5kIGl0Cisg
ICAgICAgcm9vdC5hcHBlbmRDaGlsZCh0eHQpOworCisgICAgICAgLy8gQ3JlYXRlIHRoZSBYSFIg
b2JqZWN0CisgICAgICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOworICAgICAgIHho
ci5vcGVuKCJQT1NUIiwgInJlc291cmNlcy9wb3N0LWVjaG8uY2dpIiwgZmFsc2UpOworICAgICAg
IHhoci5zZW5kKGRvbSk7CisKKyAgICAgICBpZiAoeGhyLnJlc3BvbnNlVGV4dCA9PSAnPGZvbyBm
b289ImEmYW1wO2IiPmEmYW1wO2I8L2Zvbz4nKQorICAgICAgICAgIGRvY3VtZW50LmJvZHkuaW5u
ZXJIVE1MICs9IlBBU1MiOworICAgICAgIGVsc2UKKyAgICAgICAgICBkb2N1bWVudC5ib2R5Lmlu
bmVySFRNTCArPSJGQUlMOiA8eG1wPiIgKyB4aHIucmVzcG9uc2VUZXh0ICsgIjwveG1wPiI7Cisg
ICA8L3NjcmlwdD4KKworPC9odG1sPgoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9zZXJpYWxpemUtZG9jdW1lbnQuaHRtbApfX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fCk5hbWU6IHN2bjptaW1lLXR5cGUKICAgKyB0ZXh0L2h0bWwKCg==
</data>
<flag name="review"
          id="9276"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>