<?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>19215</bug_id>
          
          <creation_ts>2008-05-23 08:18:59 -0700</creation_ts>
          <short_desc>REGRESSION: transformToDocument fails when xsl includes &amp;#160;</short_desc>
          <delta_ts>2008-07-07 04:43:51 -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>528+ (Nightly build)</version>
          <rep_platform>Mac (Intel)</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>Regression</keywords>
          <priority>P1</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Duncan Booth">kupuguy</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          <cc>ap</cc>
    
    <cc>grahamperrin</cc>
    
    <cc>mail</cc>
    
    <cc>oliver</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>81307</commentid>
    <comment_count>0</comment_count>
    <who name="Duncan Booth">kupuguy</who>
    <bug_when>2008-05-23 08:18:59 -0700</bug_when>
    <thetext>I have an XSL stylesheet which includes an entity escape for a non-break space. Prior to webkit nightly build r32877 this worked, but from r32901 onwards it fails (transformToDocument returns null). Simply removing the &amp;#160; from the XSL file makes it work again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>81308</commentid>
    <comment_count>1</comment_count>
      <attachid>21311</attachid>
    <who name="Duncan Booth">kupuguy</who>
    <bug_when>2008-05-23 08:20:09 -0700</bug_when>
    <thetext>Created attachment 21311
Javascript to create xml and xsl and demonstrate the problem</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>81310</commentid>
    <comment_count>2</comment_count>
      <attachid>21312</attachid>
    <who name="Duncan Booth">kupuguy</who>
    <bug_when>2008-05-23 08:20:40 -0700</bug_when>
    <thetext>Created attachment 21312
HTML to load the previously attached javascript</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>81311</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-05-23 08:27:37 -0700</bug_when>
    <thetext>Sounds related to &lt;http://trac.webkit.org/projects/webkit/changeset/32879&gt;.

Confirming (although I haven&apos;t attempted to actually reproduce yet).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>81520</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-05-26 03:28:49 -0700</bug_when>
    <thetext>The problem is that we replace &amp;#160; with &amp;nbsp; when re-serializing the stylesheet for XSLT, which makes it invalid.

We shouldn&apos;t do this for XML. Maybe we should match Firefox and also avoid doing this for HTML in cases other than innerHTML, but so far, we&apos;ve been able to get away with having innerHTML behave identically to XMLSerializer, XSLT and XMLHttpRequest serialization etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>81567</commentid>
    <comment_count>5</comment_count>
      <attachid>21358</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-05-27 00:08:29 -0700</bug_when>
    <thetext>Created attachment 21358
proposed fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>81611</commentid>
    <comment_count>6</comment_count>
      <attachid>21358</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-05-27 09:20:29 -0700</bug_when>
    <thetext>Comment on attachment 21358
proposed fix

+    Vector&lt;UChar&gt; s;
+    appendEscapedContent(s, make_pair(in.characters(), in.length()), escapeNBSP);
+    return String::adopt(s);

I would use a longer name than &quot;s&quot; for the string buffer.

Do we want to have a path where we reuse the string when there is no text to escape?

+            // FIXME: Comment content is not escaped, but some APIs calling this should raise an exception if it includes &quot;--&gt;&quot;.

I don&apos;t know what &quot;some APIs calling this&quot; refers to.

+        case Node::DOCUMENT_TYPE_NODE: {
+            const DocumentType* n = static_cast&lt;const DocumentType*&gt;(node);

Moving the code inside this file seems fine, but putting it all inside the case statement instead of factored into a separate function seems like a step backwards.

     if (Document *doc = document())
         if (DocumentType *doctype = doc-&gt;doctype())
-            return doctype-&gt;toString();
+            return createMarkup(doctype);
 
     return String();

Should use early returns instead of nested ifs. Or add braces if leaving this nested.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>81819</commentid>
    <comment_count>7</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-05-29 02:48:39 -0700</bug_when>
    <thetext>Committed &lt;http://trac.webkit.org/changeset/34197&gt;.

(In reply to comment #6)
&gt; Do we want to have a path where we reuse the string when there is no text to
&gt; escape?

As far as I can tell, this function is not used in any hot code paths - although I&apos;m not sure if I know all of its uses.

&gt; I don&apos;t know what &quot;some APIs calling this&quot; refers to.

Reworded to mention one.

&gt; Moving the code inside this file seems fine, but putting it all inside the case
&gt; statement instead of factored into a separate function seems like a step
&gt; backwards.

Factored out document type case into a separate function - the others seem small enough to stay inside the switch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>85322</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-07-07 04:43:51 -0700</bug_when>
    <thetext>*** Bug 19916 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>21311</attachid>
            <date>2008-05-23 08:20:09 -0700</date>
            <delta_ts>2008-05-23 08:20:09 -0700</delta_ts>
            <desc>Javascript to create xml and xsl and demonstrate the problem</desc>
            <filename>testxsl.js</filename>
            <type>text/javascript</type>
            <size>1105</size>
            <attacher name="Duncan Booth">kupuguy</attacher>
            
              <data encoding="base64">dmFyIFhNTCA9ICc8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCIgPz4nKwogICAg
ICAgICAgJzxsaWJyYXJpZXMgeG1sbnM6eGh0bWw9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0
bWwiPicrCiAgICAgICAgICAnPC9saWJyYXJpZXM+JzsKCnZhciBYU0wgPSAnPD94bWwgdmVyc2lv
bj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+JysKJzx4c2w6c3R5bGVzaGVldCB4bWxuczp4c2w9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvWFNML1RyYW5zZm9ybSInKwonICAgICAgICAgICAgICAg
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIicrCicgICAgICAgICAgICAgICAg
dmVyc2lvbj0iMS4wIj4nKwonICAgIDx4c2w6dGVtcGxhdGUgbWF0Y2g9Ii8iPicrCicgICAgICAg
IDxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBsYW5nPSJlbiInKwon
ICAgICAgICAgICAgICB4bWw6bGFuZz0iZW4iPicrCicgICAgICAgICAgICA8aGVhZD4nKwonICAg
ICAgICAgICAgICAgIDx0aXRsZT4nKwonICAgICAgICAgICAgICAgICAgICA8eHNsOnZhbHVlLW9m
IHNlbGVjdD0iJGkxOG5fZHJhd2VydGl0bGUiLz4nKwonICAgICAgICAgICAgICAgIDwvdGl0bGU+
JysKJyAgICAgICAgICAgIDwvaGVhZD4nKwonICAgICAgICAgICAgPGJvZHk+JysKICAgICAgICAg
ICcmIzE2MDsnKwonICAgICAgICAgICAgPC9ib2R5PicrCicgICAgICAgIDwvaHRtbD4nKwonICAg
IDwveHNsOnRlbXBsYXRlPicrCic8L3hzbDpzdHlsZXNoZWV0Pic7CgpmdW5jdGlvbiBydW5tZSgp
IHsKdmFyIHBhcnNlciA9IG5ldyBET01QYXJzZXIoKTsKdmFyIGQgPSBwYXJzZXIucGFyc2VGcm9t
U3RyaW5nKFhNTCwgInRleHQveG1sIik7CnZhciBwYXJzZXIgPSBuZXcgRE9NUGFyc2VyKCk7CnZh
ciB4c2wgPSBwYXJzZXIucGFyc2VGcm9tU3RyaW5nKFhTTCwgInRleHQveG1sIik7Cgp2YXIgeHNs
dHByb2MgPSAgbmV3IFhTTFRQcm9jZXNzb3IoKTsKeHNsdHByb2MuaW1wb3J0U3R5bGVzaGVldCh4
c2wpOwp2YXIgcmVzdWx0ID0geHNsdHByb2MudHJhbnNmb3JtVG9Eb2N1bWVudChkKTsKYWxlcnQo
InJlc3VsdD0iK3Jlc3VsdCk7Cn07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>21312</attachid>
            <date>2008-05-23 08:20:40 -0700</date>
            <delta_ts>2008-05-23 08:20:40 -0700</delta_ts>
            <desc>HTML to load the previously attached javascript</desc>
            <filename>testxsl.html</filename>
            <type>text/html</type>
            <size>158</size>
            <attacher name="Duncan Booth">kupuguy</attacher>
            
              <data encoding="base64">PGh0bWw+CjxoZWFkPgogICA8dGl0bGU+WFNMIHByb2JsZW1zPC90aXRsZT4KICAgPHNjcmlwdCB0
eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0idGVzdHhzbC5qcyI+CiAgIDwvc2NyaXB0Pgo8L2hl
YWQ+Cjxib2R5IG9ubG9hZD0icnVubWUoKSI+CjwvYm9keT4KPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>21358</attachid>
            <date>2008-05-27 00:08:29 -0700</date>
            <delta_ts>2008-05-27 09:20:29 -0700</delta_ts>
            <desc>proposed fix</desc>
            <filename>19215r1_patch.txt</filename>
            <type>text/plain</type>
            <size>21300</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzNDE0NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzYgQEAKKzIwMDgtMDUtMjcgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEB3ZWJr
aXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTIxNQorICAgICAgICBS
RUdSRVNTSU9OOiB0cmFuc2Zvcm1Ub0RvY3VtZW50IGZhaWxzIHdoZW4geHNsIGluY2x1ZGVzICYj
MTYwOworCisgICAgICAgIFRlc3Q6IGZhc3QveHNsL25ic3AtaW4tc3R5bGVzaGVldC5odG1sCisK
KyAgICAgICAgKiBlZGl0aW5nL21hcmt1cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjphcHBlbmRB
dHRyaWJ1dGVWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjphcHBlbmRFc2NhcGVkQ29udGVudCk6
CisgICAgICAgIChXZWJDb3JlOjplc2NhcGVDb250ZW50VGV4dCk6CisgICAgICAgIChXZWJDb3Jl
OjphcHBlbmRRdW90ZWRVUkxBdHRyaWJ1dGVWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjphcHBl
bmROYW1lc3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6YXBwZW5kU3RhcnRNYXJrdXApOgorICAg
ICAgICAoV2ViQ29yZTo6Y3JlYXRlTWFya3VwKToKKyAgICAgICAgT25seSBlc2NhcGUgbm9uLWJy
ZWFraW5nIHNwYWNlcyBpbiBIVE1MIGRvY3VtZW50cy4gSW4gRmlyZWZveCwgdGhpcyBiZWhhdmlv
ciBpcyBhbHNvIGxpbWl0ZWQKKyAgICAgICAgdG8gaW5uZXJIVE1MLCBidXQgd2UgZG9uJ3QgaGF2
ZSBhIHNlcGFyYXRlIGNvZGUgcGF0aCBmb3IgaXQsIGFuZCBkbyBub3QgbmVjZXNzYXJpbHkgd2Fu
dCB0by4KKworICAgICAgICAqIHBhZ2UvRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWU6OmRvY3VtZW50VHlwZVN0cmluZyk6CisgICAgICAgICogZG9tL0NEQVRBU2VjdGlvbi5jcHA6
CisgICAgICAgICogZG9tL0NEQVRBU2VjdGlvbi5oOgorICAgICAgICAqIGRvbS9Db21tZW50LmNw
cDoKKyAgICAgICAgKiBkb20vQ29tbWVudC5oOgorICAgICAgICAqIGRvbS9Eb2N1bWVudFR5cGUu
Y3BwOgorICAgICAgICAqIGRvbS9Eb2N1bWVudFR5cGUuaDoKKyAgICAgICAgKiBkb20vUHJvY2Vz
c2luZ0luc3RydWN0aW9uLmNwcDoKKyAgICAgICAgKiBkb20vUHJvY2Vzc2luZ0luc3RydWN0aW9u
Lmg6CisgICAgICAgIFdoaWxlIGF0IGl0LCBJIGFsc28gd2FudGVkIHRvIGZpeCBlc2NhcGluZyBm
b3IgdGhlc2Ugbm9kZXMsIGJ1dCBpdCB0dXJuZWQgb3V0IHRoYXQgRklYTUVzIHdlcmUKKyAgICAg
ICAgaW5jb3JyZWN0LiBTbywgSSBqdXN0IG1vdmVkIHRoZWlyIHNlcmlhbGl6YXRpb24gdG8gbWFy
a3VwLmNwcCBmb3IgY29uc2lzdGVuY3kuCisKIDIwMDgtMDUtMjYgIEFscCBUb2tlciAgPGFscEBu
dWFudGkuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFuZGVycy4KSW5kZXg6IFdlYkNvcmUv
ZG9tL0NEQVRBU2VjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vQ0RBVEFTZWN0
aW9uLmNwcAkocmV2aXNpb24gMzQxMzApCisrKyBXZWJDb3JlL2RvbS9DREFUQVNlY3Rpb24uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02MSwxMCArNjEsNSBAQCBQYXNzUmVmUHRyPFRleHQ+IENEQVRB
U2VjdGlvbjo6Y3JlYXRlTmV3CiAgICAgcmV0dXJuIG5ldyBDREFUQVNlY3Rpb24oZG9jdW1lbnQo
KSwgc3RyaW5nKTsKIH0KIAotU3RyaW5nIENEQVRBU2VjdGlvbjo6dG9TdHJpbmcoKSBjb25zdAot
ewotICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIHN1YnN0aXR1dGUgZW50aXR5IHJlZmVyZW5jZXMu
Ci0gICAgcmV0dXJuICI8IVtDREFUQVsiICsgZGF0YSgpICsgIl1dPiI7Ci19CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvZG9tL0NEQVRBU2VjdGlvbi5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvZG9tL0NEQVRBU2VjdGlvbi5oCShyZXZpc2lvbiAzNDEzMCkKKysrIFdl
YkNvcmUvZG9tL0NEQVRBU2VjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw2IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIE5vZGVUeXBlIG5vZGVUeXBlKCkgY29uc3Q7CiAgICAgdmly
dHVhbCBQYXNzUmVmUHRyPE5vZGU+IGNsb25lTm9kZShib29sIGRlZXApOwogICAgIHZpcnR1YWwg
Ym9vbCBjaGlsZFR5cGVBbGxvd2VkKE5vZGVUeXBlKTsKLSAgICB2aXJ0dWFsIFN0cmluZyB0b1N0
cmluZygpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFRleHQ+
IGNyZWF0ZU5ldyhQYXNzUmVmUHRyPFN0cmluZ0ltcGw+KTsKSW5kZXg6IFdlYkNvcmUvZG9tL0Nv
bW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0NvbW1lbnQuY3BwCShyZXZpc2lv
biAzNDEzMCkKKysrIFdlYkNvcmUvZG9tL0NvbW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02
MywxMCArNjMsNCBAQCBib29sIENvbW1lbnQ6OmNoaWxkVHlwZUFsbG93ZWQoTm9kZVR5cGUpCiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCi1TdHJpbmcgQ29tbWVudDo6dG9TdHJpbmcoKSBjb25zdAot
ewotICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIHN1YnN0aXR1dGUgZW50aXR5IHJlZmVyZW5jZXMg
aGVyZS4KLSAgICByZXR1cm4gIjwhLS0iICsgbm9kZVZhbHVlKCkgKyAiLS0+IjsKLX0KLQogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9kb20vQ29tbWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvZG9tL0NvbW1lbnQuaAkocmV2aXNpb24gMzQxMzApCisrKyBXZWJDb3Jl
L2RvbS9Db21tZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDggKzQ0LDYgQEAgcHVibGljOgog
ICAgIC8vIE90aGVyIG1ldGhvZHMgKG5vdCBwYXJ0IG9mIERPTSkKICAgICB2aXJ0dWFsIGJvb2wg
aXNDb21tZW50Tm9kZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGJvb2wg
Y2hpbGRUeXBlQWxsb3dlZChOb2RlVHlwZSk7Ci0KLSAgICB2aXJ0dWFsIFN0cmluZyB0b1N0cmlu
ZygpIGNvbnN0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9k
b20vRG9jdW1lbnRUeXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Eb2N1bWVudFR5
cGUuY3BwCShyZXZpc2lvbiAzNDEzMCkKKysrIFdlYkNvcmUvZG9tL0RvY3VtZW50VHlwZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTU2LDM2ICs1Niw2IEBAIERvY3VtZW50VHlwZTo6RG9jdW1lbnRU
eXBlKERvY3VtZW50KiBkb2MKIHsKIH0KIAotU3RyaW5nIERvY3VtZW50VHlwZTo6dG9TdHJpbmco
KSBjb25zdAotewotICAgIGlmIChtX25hbWUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gIiI7
Ci0KLSAgICBTdHJpbmcgcmVzdWx0ID0gIjwhRE9DVFlQRSAiOwotICAgIHJlc3VsdCArPSBtX25h
bWU7Ci0gICAgaWYgKCFtX3B1YmxpY0lkLmlzRW1wdHkoKSkgewotICAgICAgICByZXN1bHQgKz0g
IiBQVUJMSUMgXCIiOwotICAgICAgICByZXN1bHQgKz0gbV9wdWJsaWNJZDsKLSAgICAgICAgcmVz
dWx0ICs9ICJcIiI7Ci0gICAgICAgIGlmICghbV9zeXN0ZW1JZC5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgICAgIHJlc3VsdCArPSAiIFwiIjsKLSAgICAgICAgICAgIHJlc3VsdCArPSBtX3N5c3RlbUlk
OwotICAgICAgICAgICAgcmVzdWx0ICs9ICJcIiI7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgaWYg
KCFtX3N5c3RlbUlkLmlzRW1wdHkoKSkgewotICAgICAgICByZXN1bHQgKz0gIiBTWVNURU0gXCIi
OwotICAgICAgICByZXN1bHQgKz0gbV9zeXN0ZW1JZDsKLSAgICAgICAgcmVzdWx0ICs9ICJcIiI7
Ci0gICAgfQotICAgIGlmICghbV9zdWJzZXQuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHJlc3VsdCAr
PSAiIFsiOwotICAgICAgICByZXN1bHQgKz0gbV9zdWJzZXQ7Ci0gICAgICAgIHJlc3VsdCArPSAi
XSI7Ci0gICAgfQotICAgIHJlc3VsdCArPSAiPiI7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQog
S1VSTCBEb2N1bWVudFR5cGU6OmJhc2VVUkkoKSBjb25zdAogewogICAgIHJldHVybiBLVVJMKCk7
CkluZGV4OiBXZWJDb3JlL2RvbS9Eb2N1bWVudFR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2RvbS9Eb2N1bWVudFR5cGUuaAkocmV2aXNpb24gMzQxMzApCisrKyBXZWJDb3JlL2RvbS9Eb2N1
bWVudFR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNiBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBTdHJpbmcgbm9kZU5hbWUoKSBjb25zdDsKICAgICB2aXJ0dWFsIE5vZGVUeXBlIG5v
ZGVUeXBlKCkgY29uc3Q7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPE5vZGU+IGNsb25lTm9kZShi
b29sIGRlZXApOwotICAgIHZpcnR1YWwgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3Q7CiAKICAgICB2
aXJ0dWFsIHZvaWQgaW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVt
b3ZlZEZyb21Eb2N1bWVudCgpOwpJbmRleDogV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0
aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24u
Y3BwCShyZXZpc2lvbiAzNDEzMCkKKysrIFdlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlv
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzOCwxNiArMjM4LDYgQEAgdm9pZCBQcm9jZXNzaW5n
SW5zdHJ1Y3Rpb246OnBhcnNlU3R5bGVTaAogICAgIG1fc2hlZXQtPmNoZWNrTG9hZGVkKCk7CiB9
CiAKLVN0cmluZyBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OnRvU3RyaW5nKCkgY29uc3QKLXsKLSAg
ICBTdHJpbmcgcmVzdWx0ID0gIjw/IjsKLSAgICByZXN1bHQgKz0gbV90YXJnZXQ7Ci0gICAgcmVz
dWx0ICs9ICIgIjsKLSAgICByZXN1bHQgKz0gbV9kYXRhOwotICAgIHJlc3VsdCArPSAiPz4iOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KIHZvaWQgUHJvY2Vzc2luZ0luc3RydWN0aW9uOjpzZXRD
U1NTdHlsZVNoZWV0KENTU1N0eWxlU2hlZXQqIHNoZWV0KQogewogICAgIEFTU0VSVCghbV9jYWNo
ZWRTaGVldCk7CkluZGV4OiBXZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaAkocmV2aXNpb24g
MzQxMzApCisrKyBXZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaAkod29ya2luZyBj
b3B5KQpAQCAtNjQsNyArNjQsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDU1NTdHlsZVNoZWV0
KENTU1N0eWxlU2hlZXQqKTsKICAgICBib29sIGlzTG9hZGluZygpIGNvbnN0OwogICAgIHZpcnR1
YWwgYm9vbCBzaGVldExvYWRlZCgpOwotICAgIHZpcnR1YWwgU3RyaW5nIHRvU3RyaW5nKCkgY29u
c3Q7CiAKICNpZiBFTkFCTEUoWFNMVCkKICAgICBib29sIGlzWFNMKCkgY29uc3QgeyByZXR1cm4g
bV9pc1hTTDsgfQpJbmRleDogV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAJKHJldmlzaW9uIDM0MTMwKQorKysgV2ViQ29y
ZS9lZGl0aW5nL21hcmt1cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg4LDcgKzg4LDcgQEAgcHJp
dmF0ZToKICAgICBTdHJpbmcgbV92YWx1ZTsKIH07CiAKLXN0YXRpYyB2b2lkIGFwcGVuZEF0dHJp
YnV0ZVZhbHVlKFZlY3RvcjxVQ2hhcj4mIHJlc3VsdCwgY29uc3QgU3RyaW5nJiBhdHRyKQorc3Rh
dGljIHZvaWQgYXBwZW5kQXR0cmlidXRlVmFsdWUoVmVjdG9yPFVDaGFyPiYgcmVzdWx0LCBjb25z
dCBTdHJpbmcmIGF0dHIsIGJvb2wgZXNjYXBlTkJTUCkKIHsKICAgICBjb25zdCBVQ2hhciogdWNo
YXJzID0gYXR0ci5jaGFyYWN0ZXJzKCk7CiAgICAgdW5zaWduZWQgbGVuID0gYXR0ci5sZW5ndGgo
KTsKQEAgLTEyNCw5ICsxMjQsMTEgQEAgc3RhdGljIHZvaWQgYXBwZW5kQXR0cmlidXRlVmFsdWUo
VmVjdG9yPAogICAgICAgICAgICAgICAgIGxhc3RDb3BpZWRGcm9tID0gaSArIDE7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIG5vQnJlYWtTcGFjZToKLSAgICAgICAg
ICAgICAgICByZXN1bHQuYXBwZW5kKHVjaGFycyArIGxhc3RDb3BpZWRGcm9tLCBpIC0gbGFzdENv
cGllZEZyb20pOwotICAgICAgICAgICAgICAgIGFwcGVuZChyZXN1bHQsIG5ic3BFbnRpdHkpOwot
ICAgICAgICAgICAgICAgIGxhc3RDb3BpZWRGcm9tID0gaSArIDE7CisgICAgICAgICAgICAgICAg
aWYgKGVzY2FwZU5CU1ApIHsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCh1Y2hh
cnMgKyBsYXN0Q29waWVkRnJvbSwgaSAtIGxhc3RDb3BpZWRGcm9tKTsKKyAgICAgICAgICAgICAg
ICAgICAgYXBwZW5kKHJlc3VsdCwgbmJzcEVudGl0eSk7CisgICAgICAgICAgICAgICAgICAgIGxh
c3RDb3BpZWRGcm9tID0gaSArIDE7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAgICAgfQpAQCAtMTM0LDU0ICsxMzYsNyBAQCBzdGF0aWMgdm9p
ZCBhcHBlbmRBdHRyaWJ1dGVWYWx1ZShWZWN0b3I8CiAgICAgcmVzdWx0LmFwcGVuZCh1Y2hhcnMg
KyBsYXN0Q29waWVkRnJvbSwgbGVuIC0gbGFzdENvcGllZEZyb20pOwogfQogCi1zdGF0aWMgU3Ry
aW5nIGVzY2FwZUNvbnRlbnRUZXh0KGNvbnN0IFN0cmluZyYgaW4pCi17Ci0gICAgVmVjdG9yPFVD
aGFyPiBzOwotCi0gICAgdW5zaWduZWQgbGVuID0gaW4ubGVuZ3RoKCk7Ci0gICAgdW5zaWduZWQg
bGFzdENvcGllZEZyb20gPSAwOwotCi0gICAgc3RhdGljIGNvbnN0IFN0cmluZyBhbXBFbnRpdHko
IiZhbXA7Iik7Ci0gICAgc3RhdGljIGNvbnN0IFN0cmluZyBndEVudGl0eSgiJmd0OyIpOwotICAg
IHN0YXRpYyBjb25zdCBTdHJpbmcgbHRFbnRpdHkoIiZsdDsiKTsKLSAgICBzdGF0aWMgY29uc3Qg
U3RyaW5nIG5ic3BFbnRpdHkoIiZuYnNwOyIpOwotCi0gICAgcy5yZXNlcnZlQ2FwYWNpdHkobGVu
KTsKLQotICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzID0gaW4uY2hhcmFjdGVycygpOwotCi0g
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbjsgKytpKSB7Ci0gICAgICAgIFVDaGFyIGMg
PSBjaGFyYWN0ZXJzW2ldOwotICAgICAgICBzd2l0Y2ggKGMpIHsKLSAgICAgICAgICAgIGNhc2Ug
JyYnOgotICAgICAgICAgICAgICAgIHMuYXBwZW5kKGNoYXJhY3RlcnMgKyBsYXN0Q29waWVkRnJv
bSwgaSAtIGxhc3RDb3BpZWRGcm9tKTsKLSAgICAgICAgICAgICAgICBhcHBlbmQocywgYW1wRW50
aXR5KTsKLSAgICAgICAgICAgICAgICBsYXN0Q29waWVkRnJvbSA9IGkgKyAxOwotICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSAnPCc6Ci0gICAgICAgICAgICAgICAgcy5h
cHBlbmQoY2hhcmFjdGVycyArIGxhc3RDb3BpZWRGcm9tLCBpIC0gbGFzdENvcGllZEZyb20pOwot
ICAgICAgICAgICAgICAgIGFwcGVuZChzLCBsdEVudGl0eSk7Ci0gICAgICAgICAgICAgICAgbGFz
dENvcGllZEZyb20gPSBpICsgMTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
IGNhc2UgJz4nOgotICAgICAgICAgICAgICAgIHMuYXBwZW5kKGNoYXJhY3RlcnMgKyBsYXN0Q29w
aWVkRnJvbSwgaSAtIGxhc3RDb3BpZWRGcm9tKTsKLSAgICAgICAgICAgICAgICBhcHBlbmQocywg
Z3RFbnRpdHkpOwotICAgICAgICAgICAgICAgIGxhc3RDb3BpZWRGcm9tID0gaSArIDE7Ci0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIG5vQnJlYWtTcGFjZToKLSAgICAg
ICAgICAgICAgICBzLmFwcGVuZChjaGFyYWN0ZXJzICsgbGFzdENvcGllZEZyb20sIGkgLSBsYXN0
Q29waWVkRnJvbSk7Ci0gICAgICAgICAgICAgICAgYXBwZW5kKHMsIG5ic3BFbnRpdHkpOwotICAg
ICAgICAgICAgICAgIGxhc3RDb3BpZWRGcm9tID0gaSArIDE7Ci0gICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBzLmFwcGVuZChjaGFyYWN0ZXJzICsgbGFzdENv
cGllZEZyb20sIGxlbiAtIGxhc3RDb3BpZWRGcm9tKTsKLQotICAgIHJldHVybiBTdHJpbmc6OmFk
b3B0KHMpOwotfQotICAgIAotc3RhdGljIHZvaWQgYXBwZW5kRXNjYXBlZENvbnRlbnQoVmVjdG9y
PFVDaGFyPiYgcmVzdWx0LCBwYWlyPGNvbnN0IFVDaGFyKiwgc2l6ZV90PiByYW5nZSkKK3N0YXRp
YyB2b2lkIGFwcGVuZEVzY2FwZWRDb250ZW50KFZlY3RvcjxVQ2hhcj4mIHJlc3VsdCwgcGFpcjxj
b25zdCBVQ2hhciosIHNpemVfdD4gcmFuZ2UsIGJvb2wgZXNjYXBlTkJTUCkKIHsKICAgICBjb25z
dCBVQ2hhciogdWNoYXJzID0gcmFuZ2UuZmlyc3Q7CiAgICAgdW5zaWduZWQgbGVuID0gcmFuZ2Uu
c2Vjb25kOwpAQCAtMjExLDkgKzE2NiwxMSBAQCBzdGF0aWMgdm9pZCBhcHBlbmRFc2NhcGVkQ29u
dGVudChWZWN0b3I8CiAgICAgICAgICAgICAgICAgbGFzdENvcGllZEZyb20gPSBpICsgMTsKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2Ugbm9CcmVha1NwYWNlOgotICAg
ICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQodWNoYXJzICsgbGFzdENvcGllZEZyb20sIGkgLSBs
YXN0Q29waWVkRnJvbSk7Ci0gICAgICAgICAgICAgICAgYXBwZW5kKHJlc3VsdCwgbmJzcEVudGl0
eSk7Ci0gICAgICAgICAgICAgICAgbGFzdENvcGllZEZyb20gPSBpICsgMTsKKyAgICAgICAgICAg
ICAgICBpZiAoZXNjYXBlTkJTUCkgeworICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5k
KHVjaGFycyArIGxhc3RDb3BpZWRGcm9tLCBpIC0gbGFzdENvcGllZEZyb20pOworICAgICAgICAg
ICAgICAgICAgICBhcHBlbmQocmVzdWx0LCBuYnNwRW50aXR5KTsKKyAgICAgICAgICAgICAgICAg
ICAgbGFzdENvcGllZEZyb20gPSBpICsgMTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CkBAIC0yMjEsNiArMTc4LDEzIEBAIHN0YXRp
YyB2b2lkIGFwcGVuZEVzY2FwZWRDb250ZW50KFZlY3RvcjwKICAgICByZXN1bHQuYXBwZW5kKHVj
aGFycyArIGxhc3RDb3BpZWRGcm9tLCBsZW4gLSBsYXN0Q29waWVkRnJvbSk7CiB9ICAgIAogCitz
dGF0aWMgU3RyaW5nIGVzY2FwZUNvbnRlbnRUZXh0KGNvbnN0IFN0cmluZyYgaW4sIGJvb2wgZXNj
YXBlTkJTUCkKK3sKKyAgICBWZWN0b3I8VUNoYXI+IHM7CisgICAgYXBwZW5kRXNjYXBlZENvbnRl
bnQocywgbWFrZV9wYWlyKGluLmNoYXJhY3RlcnMoKSwgaW4ubGVuZ3RoKCkpLCBlc2NhcGVOQlNQ
KTsKKyAgICByZXR1cm4gU3RyaW5nOjphZG9wdChzKTsKK30KKyAgICAKIHN0YXRpYyB2b2lkIGFw
cGVuZFF1b3RlZFVSTEF0dHJpYnV0ZVZhbHVlKFZlY3RvcjxVQ2hhcj4mIHJlc3VsdCwgY29uc3Qg
U3RyaW5nJiB1cmxTdHJpbmcpCiB7CiAgICAgVUNoYXIgcXVvdGVDaGFyID0gJ1wiJzsKQEAgLTIz
OSw5ICsyMDMsOSBAQCBzdGF0aWMgdm9pZCBhcHBlbmRRdW90ZWRVUkxBdHRyaWJ1dGVWYWx1CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICAvLyBGSVhNRTogVGhpcyBkb2VzIG5vdCBmdWxs
eSBtYXRjaCBvdGhlciBicm93c2Vycy4gRmlyZWZveCBlc2NhcGVzIHNwYWNlcyBhbmQgb3RoZXIg
c3BlY2lhbCBjaGFyYWN0ZXJzLgorICAgIC8vIEZJWE1FOiBUaGlzIGRvZXMgbm90IGZ1bGx5IG1h
dGNoIG90aGVyIGJyb3dzZXJzLiBGaXJlZm94IHBlcmNlbnQtZXNjYXBlcyBub24tQVNDSUkgY2hh
cmFjdGVycyBmb3IgaW5uZXJIVE1MLgogICAgIHJlc3VsdC5hcHBlbmQocXVvdGVDaGFyKTsKLSAg
ICBhcHBlbmRBdHRyaWJ1dGVWYWx1ZShyZXN1bHQsIHVybFN0cmluZyk7CisgICAgYXBwZW5kQXR0
cmlidXRlVmFsdWUocmVzdWx0LCB1cmxTdHJpbmcsIGZhbHNlKTsKICAgICByZXN1bHQuYXBwZW5k
KHF1b3RlQ2hhcik7ICAgIAogfQogICAgIApAQCAtMzg4LDcgKzM1Miw3IEBAIHN0YXRpYyB2b2lk
IGFwcGVuZE5hbWVzcGFjZShWZWN0b3I8VUNoYXIKIAogICAgICAgICByZXN1bHQuYXBwZW5kKCc9
Jyk7CiAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyInKTsKLSAgICAgICAgYXBwZW5kQXR0cmlidXRl
VmFsdWUocmVzdWx0LCBucyk7CisgICAgICAgIGFwcGVuZEF0dHJpYnV0ZVZhbHVlKHJlc3VsdCwg
bnMsIGZhbHNlKTsKICAgICAgICAgcmVzdWx0LmFwcGVuZCgnIicpOwogICAgIH0KIH0KQEAgLTQw
OSwyOSArMzczLDY1IEBAIHN0YXRpYyB2b2lkIGFwcGVuZFN0YXJ0TWFya3VwKFZlY3RvcjxVQ2gK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoIWFubm90
YXRlKSB7Ci0gICAgICAgICAgICAgICAgYXBwZW5kRXNjYXBlZENvbnRlbnQocmVzdWx0LCB1Y2hh
clJhbmdlKG5vZGUsIHJhbmdlKSk7CisgICAgICAgICAgICAgICAgYXBwZW5kRXNjYXBlZENvbnRl
bnQocmVzdWx0LCB1Y2hhclJhbmdlKG5vZGUsIHJhbmdlKSwgZG9jdW1lbnRJc0hUTUwpOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAg
ICAgICBib29sIHVzZVJlbmRlcmVkVGV4dCA9ICFlbmNsb3NpbmdOb2RlV2l0aFRhZyhQb3NpdGlv
bihjb25zdF9jYXN0PE5vZGUqPihub2RlKSwgMCksIHNlbGVjdFRhZyk7Ci0gICAgICAgICAgICBT
dHJpbmcgbWFya3VwID0gZXNjYXBlQ29udGVudFRleHQodXNlUmVuZGVyZWRUZXh0ID8gcmVuZGVy
ZWRUZXh0KG5vZGUsIHJhbmdlKSA6IHN0cmluZ1ZhbHVlRm9yUmFuZ2Uobm9kZSwgcmFuZ2UpKTsK
KyAgICAgICAgICAgIFN0cmluZyBtYXJrdXAgPSBlc2NhcGVDb250ZW50VGV4dCh1c2VSZW5kZXJl
ZFRleHQgPyByZW5kZXJlZFRleHQobm9kZSwgcmFuZ2UpIDogc3RyaW5nVmFsdWVGb3JSYW5nZShu
b2RlLCByYW5nZSksIGZhbHNlKTsKICAgICAgICAgICAgIGlmIChhbm5vdGF0ZSkKICAgICAgICAg
ICAgICAgICBtYXJrdXAgPSBjb252ZXJ0SFRNTFRleHRUb0ludGVyY2hhbmdlRm9ybWF0KG1hcmt1
cCwgc3RhdGljX2Nhc3Q8Y29uc3QgVGV4dCo+KG5vZGUpKTsKICAgICAgICAgICAgIGFwcGVuZChy
ZXN1bHQsIG1hcmt1cCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBj
YXNlIE5vZGU6OkNPTU1FTlRfTk9ERToKLSAgICAgICAgICAgIGFwcGVuZChyZXN1bHQsIHN0YXRp
Y19jYXN0PGNvbnN0IENvbW1lbnQqPihub2RlKS0+dG9TdHJpbmcoKSk7CisgICAgICAgICAgICAv
LyBGSVhNRTogQ29tbWVudCBjb250ZW50IGlzIG5vdCBlc2NhcGVkLCBidXQgc29tZSBBUElzIGNh
bGxpbmcgdGhpcyBzaG91bGQgcmFpc2UgYW4gZXhjZXB0aW9uIGlmIGl0IGluY2x1ZGVzICItLT4i
LgorICAgICAgICAgICAgYXBwZW5kKHJlc3VsdCwgIjwhLS0iKTsKKyAgICAgICAgICAgIGFwcGVu
ZChyZXN1bHQsIHN0YXRpY19jYXN0PGNvbnN0IENvbW1lbnQqPihub2RlKS0+bm9kZVZhbHVlKCkp
OworICAgICAgICAgICAgYXBwZW5kKHJlc3VsdCwgIi0tPiIpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgTm9kZTo6RE9DVU1FTlRfTk9ERToKICAgICAgICAgY2FzZSBOb2RlOjpE
T0NVTUVOVF9GUkFHTUVOVF9OT0RFOgogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ug
Tm9kZTo6RE9DVU1FTlRfVFlQRV9OT0RFOgotICAgICAgICAgICAgYXBwZW5kKHJlc3VsdCwgc3Rh
dGljX2Nhc3Q8Y29uc3QgRG9jdW1lbnRUeXBlKj4obm9kZSktPnRvU3RyaW5nKCkpOworICAgICAg
ICBjYXNlIE5vZGU6OkRPQ1VNRU5UX1RZUEVfTk9ERTogeworICAgICAgICAgICAgY29uc3QgRG9j
dW1lbnRUeXBlKiBuID0gc3RhdGljX2Nhc3Q8Y29uc3QgRG9jdW1lbnRUeXBlKj4obm9kZSk7Cisg
ICAgICAgICAgICBpZiAobi0+bmFtZSgpLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICBicmVh
azsKKworICAgICAgICAgICAgYXBwZW5kKHJlc3VsdCwgIjwhRE9DVFlQRSAiKTsKKyAgICAgICAg
ICAgIGFwcGVuZChyZXN1bHQsIG4tPm5hbWUoKSk7CisgICAgICAgICAgICBpZiAoIW4tPnB1Ymxp
Y0lkKCkuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgYXBwZW5kKHJlc3VsdCwgIiBQVUJM
SUMgXCIiKTsKKyAgICAgICAgICAgICAgICBhcHBlbmQocmVzdWx0LCBuLT5wdWJsaWNJZCgpKTsK
KyAgICAgICAgICAgICAgICBhcHBlbmQocmVzdWx0LCAiXCIiKTsKKyAgICAgICAgICAgICAgICBp
ZiAoIW4tPnN5c3RlbUlkKCkuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgICAgIGFwcGVu
ZChyZXN1bHQsICIgXCIiKTsKKyAgICAgICAgICAgICAgICAgICAgYXBwZW5kKHJlc3VsdCwgbi0+
c3lzdGVtSWQoKSk7CisgICAgICAgICAgICAgICAgICAgIGFwcGVuZChyZXN1bHQsICJcIiIpOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSBpZiAoIW4tPnN5c3RlbUlkKCku
aXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgYXBwZW5kKHJlc3VsdCwgIiBTWVNURU0gXCIi
KTsKKyAgICAgICAgICAgICAgICBhcHBlbmQocmVzdWx0LCBuLT5zeXN0ZW1JZCgpKTsKKyAgICAg
ICAgICAgICAgICBhcHBlbmQocmVzdWx0LCAiXCIiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGlmICghbi0+aW50ZXJuYWxTdWJzZXQoKS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAg
ICBhcHBlbmQocmVzdWx0LCAiIFsiKTsKKyAgICAgICAgICAgICAgICBhcHBlbmQocmVzdWx0LCBu
LT5pbnRlcm5hbFN1YnNldCgpKTsKKyAgICAgICAgICAgICAgICBhcHBlbmQocmVzdWx0LCAiXSIp
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgYXBwZW5kKHJlc3VsdCwgIj4iKTsKICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE5vZGU6OlBST0NFU1NJTkdfSU5TVFJVQ1RJT05f
Tk9ERToKLSAgICAgICAgICAgIGFwcGVuZChyZXN1bHQsIHN0YXRpY19jYXN0PGNvbnN0IFByb2Nl
c3NpbmdJbnN0cnVjdGlvbio+KG5vZGUpLT50b1N0cmluZygpKTsKKyAgICAgICAgfQorICAgICAg
ICBjYXNlIE5vZGU6OlBST0NFU1NJTkdfSU5TVFJVQ1RJT05fTk9ERTogeworICAgICAgICAgICAg
Ly8gRklYTUU6IFBJIGRhdGEgaXMgbm90IGVzY2FwZWQsIGJ1dCBzb21lIEFQSXMgY2FsbGluZyB0
aGlzIHNob3VsZCByYWlzZSBhbiBleGNlcHRpb24gaWYgaXQgaW5jbHVkZXMgIj8+Ii4KKyAgICAg
ICAgICAgIGNvbnN0IFByb2Nlc3NpbmdJbnN0cnVjdGlvbiogbiA9IHN0YXRpY19jYXN0PGNvbnN0
IFByb2Nlc3NpbmdJbnN0cnVjdGlvbio+KG5vZGUpOworICAgICAgICAgICAgYXBwZW5kKHJlc3Vs
dCwgIjw/Iik7CisgICAgICAgICAgICBhcHBlbmQocmVzdWx0LCBuLT50YXJnZXQoKSk7CisgICAg
ICAgICAgICBhcHBlbmQocmVzdWx0LCAiICIpOworICAgICAgICAgICAgYXBwZW5kKHJlc3VsdCwg
bi0+ZGF0YSgpKTsKKyAgICAgICAgICAgIGFwcGVuZChyZXN1bHQsICI/PiIpOwogICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgY2FzZSBOb2RlOjpFTEVNRU5UX05PREU6IHsK
ICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJzwnKTsKICAgICAgICAgICAgIGNvbnN0IEVsZW1l
bnQqIGVsID0gc3RhdGljX2Nhc3Q8Y29uc3QgRWxlbWVudCo+KG5vZGUpOwpAQCAtNDYwLDcgKzQ2
MCw3IEBAIHN0YXRpYyB2b2lkIGFwcGVuZFN0YXJ0TWFya3VwKFZlY3RvcjxVQ2gKICAgICAgICAg
ICAgICAgICAgICAgYXBwZW5kUXVvdGVkVVJMQXR0cmlidXRlVmFsdWUocmVzdWx0LCBhdHRyLT52
YWx1ZSgpKTsKICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZCgnXCInKTsKLSAgICAgICAgICAgICAgICAgICAgYXBwZW5kQXR0cmlidXRlVmFs
dWUocmVzdWx0LCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgYXBwZW5kQXR0
cmlidXRlVmFsdWUocmVzdWx0LCBhdHRyLT52YWx1ZSgpLCBkb2N1bWVudElzSFRNTCk7CiAgICAg
ICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ1wiJyk7CiAgICAgICAgICAgICAgICAgfQog
CkBAIC01MDEsNyArNTAxLDcgQEAgc3RhdGljIHZvaWQgYXBwZW5kU3RhcnRNYXJrdXAoVmVjdG9y
PFVDaAogICAgICAgICAgICAgICAgIGlmIChzdHlsZS0+bGVuZ3RoKCkgPiAwKSB7CiAgICAgICAg
ICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBTdHJpbmcgc3R5bGVQcmVmaXgoIiBzdHlsZT1cIiIp
OwogICAgICAgICAgICAgICAgICAgICBhcHBlbmQocmVzdWx0LCBzdHlsZVByZWZpeCk7Ci0gICAg
ICAgICAgICAgICAgICAgIGFwcGVuZEF0dHJpYnV0ZVZhbHVlKHJlc3VsdCwgc3R5bGUtPmNzc1Rl
eHQoKSk7CisgICAgICAgICAgICAgICAgICAgIGFwcGVuZEF0dHJpYnV0ZVZhbHVlKHJlc3VsdCwg
c3R5bGUtPmNzc1RleHQoKSwgZG9jdW1lbnRJc0hUTUwpOwogICAgICAgICAgICAgICAgICAgICBy
ZXN1bHQuYXBwZW5kKCdcIicpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAg
LTUxNCw5ICs1MTQsMTQgQEAgc3RhdGljIHZvaWQgYXBwZW5kU3RhcnRNYXJrdXAoVmVjdG9yPFVD
aAogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnPicpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KLSAgICAgICAgY2FzZSBOb2RlOjpDREFUQV9TRUNUSU9OX05PREU6Ci0gICAgICAg
ICAgICBhcHBlbmQocmVzdWx0LCBzdGF0aWNfY2FzdDxjb25zdCBDREFUQVNlY3Rpb24qPihub2Rl
KS0+dG9TdHJpbmcoKSk7CisgICAgICAgIGNhc2UgTm9kZTo6Q0RBVEFfU0VDVElPTl9OT0RFOiB7
CisgICAgICAgICAgICAvLyBGSVhNRTogQ0RBVEEgY29udGVudCBpcyBub3QgZXNjYXBlZCwgYnV0
IHNvbWUgQVBJcyBjYWxsaW5nIHRoaXMgc2hvdWxkIHJhaXNlIGFuIGV4Y2VwdGlvbiBpZiBpdCBp
bmNsdWRlcyAiXV0+Ii4KKyAgICAgICAgICAgIGNvbnN0IENEQVRBU2VjdGlvbiogbiA9IHN0YXRp
Y19jYXN0PGNvbnN0IENEQVRBU2VjdGlvbio+KG5vZGUpOworICAgICAgICAgICAgYXBwZW5kKHJl
c3VsdCwgIjwhW0NEQVRBWyIpOworICAgICAgICAgICAgYXBwZW5kKHJlc3VsdCwgbi0+ZGF0YSgp
KTsKKyAgICAgICAgICAgIGFwcGVuZChyZXN1bHQsICJdXT4iKTsKICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CiAgICAgICAgIGNhc2UgTm9kZTo6QVRUUklCVVRFX05PREU6CiAgICAgICAg
IGNhc2UgTm9kZTo6RU5USVRZX05PREU6CiAgICAgICAgIGNhc2UgTm9kZTo6RU5USVRZX1JFRkVS
RU5DRV9OT0RFOgpAQCAtNzA0LDYgKzcwOSw4IEBAIFN0cmluZyBjcmVhdGVNYXJrdXAoY29uc3Qg
UmFuZ2UqIHJhbmdlLCAKICAgICBpZiAoIWRvY3VtZW50KQogICAgICAgICByZXR1cm4gIiI7CiAK
KyAgICBib29sIGRvY3VtZW50SXNIVE1MID0gZG9jdW1lbnQtPmlzSFRNTERvY3VtZW50KCk7CisK
ICAgICAvLyBEaXNhYmxlIHRoZSBkZWxldGUgYnV0dG9uIHNvIGl0J3MgZWxlbWVudHMgYXJlIG5v
dCBzZXJpYWxpemVkIGludG8gdGhlIG1hcmt1cCwKICAgICAvLyBidXQgbWFrZSBzdXJlIG5laXRo
ZXIgZW5kcG9pbnQgaXMgaW5zaWRlIHRoZSBkZWxldGUgdXNlciBpbnRlcmZhY2UuCiAgICAgRnJh
bWUqIGZyYW1lID0gZG9jdW1lbnQtPmZyYW1lKCk7CkBAIC04OTgsNyArOTA1LDcgQEAgU3RyaW5n
IGNyZWF0ZU1hcmt1cChjb25zdCBSYW5nZSogcmFuZ2UsIAogICAgICAgICAgICAgICAgICAgICBW
ZWN0b3I8VUNoYXI+IG9wZW5UYWc7CiAgICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBT
dHJpbmcgZGl2U3R5bGUoIjxkaXYgc3R5bGU9XCIiKTsKICAgICAgICAgICAgICAgICAgICAgYXBw
ZW5kKG9wZW5UYWcsIGRpdlN0eWxlKTsKLSAgICAgICAgICAgICAgICAgICAgYXBwZW5kQXR0cmli
dXRlVmFsdWUob3BlblRhZywgc3R5bGUtPmNzc1RleHQoKSk7CisgICAgICAgICAgICAgICAgICAg
IGFwcGVuZEF0dHJpYnV0ZVZhbHVlKG9wZW5UYWcsIHN0eWxlLT5jc3NUZXh0KCksIGRvY3VtZW50
SXNIVE1MKTsKICAgICAgICAgICAgICAgICAgICAgb3BlblRhZy5hcHBlbmQoJ1wiJyk7CiAgICAg
ICAgICAgICAgICAgICAgIG9wZW5UYWcuYXBwZW5kKCc+Jyk7CiAgICAgICAgICAgICAgICAgICAg
IHByZU1hcmt1cHMuYXBwZW5kKFN0cmluZzo6YWRvcHQob3BlblRhZykpOwpAQCAtOTQ1LDcgKzk1
Miw3IEBAIFN0cmluZyBjcmVhdGVNYXJrdXAoY29uc3QgUmFuZ2UqIHJhbmdlLCAKICAgICAgICAg
aWYgKHN0eWxlLT5sZW5ndGgoKSA+IDApIHsKICAgICAgICAgICAgIFZlY3RvcjxVQ2hhcj4gb3Bl
blRhZzsKICAgICAgICAgICAgIGFwcGVuZChvcGVuVGFnLCBzdHlsZVNwYW5PcGVuKTsKLSAgICAg
ICAgICAgIGFwcGVuZEF0dHJpYnV0ZVZhbHVlKG9wZW5UYWcsIHN0eWxlLT5jc3NUZXh0KCkpOwor
ICAgICAgICAgICAgYXBwZW5kQXR0cmlidXRlVmFsdWUob3BlblRhZywgc3R5bGUtPmNzc1RleHQo
KSwgZG9jdW1lbnRJc0hUTUwpOwogICAgICAgICAgICAgb3BlblRhZy5hcHBlbmQoJ1wiJyk7CiAg
ICAgICAgICAgICBvcGVuVGFnLmFwcGVuZCgnPicpOwogICAgICAgICAgICAgcHJlTWFya3Vwcy5h
cHBlbmQoU3RyaW5nOjphZG9wdChvcGVuVGFnKSk7CkBAIC05NjMsNyArOTcwLDcgQEAgU3RyaW5n
IGNyZWF0ZU1hcmt1cChjb25zdCBSYW5nZSogcmFuZ2UsIAogICAgICAgICBpZiAoZGVmYXVsdFN0
eWxlLT5sZW5ndGgoKSA+IDApIHsKICAgICAgICAgICAgIFZlY3RvcjxVQ2hhcj4gb3BlblRhZzsK
ICAgICAgICAgICAgIGFwcGVuZChvcGVuVGFnLCBzdHlsZVNwYW5PcGVuKTsKLSAgICAgICAgICAg
IGFwcGVuZEF0dHJpYnV0ZVZhbHVlKG9wZW5UYWcsIGRlZmF1bHRTdHlsZS0+Y3NzVGV4dCgpKTsK
KyAgICAgICAgICAgIGFwcGVuZEF0dHJpYnV0ZVZhbHVlKG9wZW5UYWcsIGRlZmF1bHRTdHlsZS0+
Y3NzVGV4dCgpLCBkb2N1bWVudElzSFRNTCk7CiAgICAgICAgICAgICBvcGVuVGFnLmFwcGVuZCgn
XCInKTsKICAgICAgICAgICAgIG9wZW5UYWcuYXBwZW5kKCc+Jyk7CiAgICAgICAgICAgICBwcmVN
YXJrdXBzLmFwcGVuZChTdHJpbmc6OmFkb3B0KG9wZW5UYWcpKTsKSW5kZXg6IFdlYkNvcmUvcGFn
ZS9GcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAkocmV2aXNp
b24gMzQxMzApCisrKyBXZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
NCw2ICs1NCw3IEBACiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIkpTRE9N
V2luZG93U2hlbGwuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAibWFya3VwLmgi
CiAjaW5jbHVkZSAiTWVkaWFGZWF0dXJlTmFtZXMuaCIKICNpbmNsdWRlICJOUF9qc29iamVjdC5o
IgogI2luY2x1ZGUgIk5hdmlnYXRvci5oIgpAQCAtMTc1MSw3ICsxNzUyLDcgQEAgU3RyaW5nIEZy
YW1lOjpkb2N1bWVudFR5cGVTdHJpbmcoKSBjb25zdAogewogICAgIGlmIChEb2N1bWVudCAqZG9j
ID0gZG9jdW1lbnQoKSkKICAgICAgICAgaWYgKERvY3VtZW50VHlwZSAqZG9jdHlwZSA9IGRvYy0+
ZG9jdHlwZSgpKQotICAgICAgICAgICAgcmV0dXJuIGRvY3R5cGUtPnRvU3RyaW5nKCk7CisgICAg
ICAgICAgICByZXR1cm4gY3JlYXRlTWFya3VwKGRvY3R5cGUpOwogCiAgICAgcmV0dXJuIFN0cmlu
ZygpOwogfQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMzQxNDUpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMCBAQAorMjAwOC0wNS0yNyAgQWxleGV5IFBy
b3NrdXJ5YWtvdiAgPGFwQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L3hzbC9uYnNwLWluLXN0eWxlc2hlZXQtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3hzbC9uYnNwLWluLXN0eWxlc2hlZXQuaHRt
bDogQWRkZWQuCisKIDIwMDgtMDUtMjYgIE1hY2llaiBTdGFjaG93aWFrICA8bWpzQGFwcGxlLmNv
bT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbmRlcnMuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L3hzbC9uYnNwLWluLXN0eWxlc2hlZXQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QveHNsL25ic3AtaW4tc3R5bGVzaGVldC1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L3hzbC9uYnNwLWluLXN0eWxlc2hlZXQtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMgQEAKK1Rlc3QgZm9yIGJ1ZyAxOTIxNTogWFNM
VCB0cmFuc2Zvcm1Ub0RvY3VtZW50IGZhaWxzIHdoZW4gc3R5bGVzaGVldCBjb250YWlucyAmIzE2
MDsKKworU1VDQ0VTUwoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvZmFzdC94c2wv
bmJzcC1pbi1zdHlsZXNoZWV0LWV4cGVjdGVkLnR4dApfX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk5hbWU6IHN2bjptaW1l
LXR5cGUKICAgKyB0ZXh0L3BsYWluCk5hbWU6IHN2bjplb2wtc3R5bGUKICAgKyBuYXRpdmUKCklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3hzbC9uYnNwLWluLXN0eWxlc2hlZXQuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3hzbC9uYnNwLWluLXN0eWxlc2hlZXQuaHRtbAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QveHNsL25ic3AtaW4tc3R5bGVzaGVldC5odG1s
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ1IEBACis8Ym9keT4KKzxwPlRlc3QgZm9yIDxhIGhy
ZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTIxNSI+YnVnIDE5
MjE1PC9hPjoKK1hTTFQgdHJhbnNmb3JtVG9Eb2N1bWVudCBmYWlscyB3aGVuIHN0eWxlc2hlZXQg
Y29udGFpbnMgJmFtcDsjMTYwOzwvcD4KKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKwordHJ5
IHsKKyAgICB2YXIgWE1MID0gJzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04IiA/
PicrCisgICAgICAgICAgICAgICc8bGlicmFyaWVzIHhtbG5zOnhodG1sPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hodG1sIj4nKworICAgICAgICAgICAgICAnPC9saWJyYXJpZXM+JzsKKyAgICAK
KyAgICB2YXIgWFNMID0gJzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/Picr
CisgICAgJzx4c2w6c3R5bGVzaGVldCB4bWxuczp4c2w9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
WFNML1RyYW5zZm9ybSInKworICAgICcgICAgICAgICAgICAgICAgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGh0bWwiJysKKyAgICAnICAgICAgICAgICAgICAgIHZlcnNpb249IjEuMCI+
JysKKyAgICAnICAgIDx4c2w6dGVtcGxhdGUgbWF0Y2g9Ii8iPicrCisgICAgJyAgICAgICAgPGh0
bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIGxhbmc9ImVuIicrCisgICAg
JyAgICAgICAgICAgICAgeG1sOmxhbmc9ImVuIj4nKworICAgICcgICAgICAgICAgICA8aGVhZD4n
KworICAgICcgICAgICAgICAgICAgICAgPHRpdGxlPicrCisgICAgJyAgICAgICAgICAgICAgICA8
L3RpdGxlPicrCisgICAgJyAgICAgICAgICAgIDwvaGVhZD4nKworICAgICcgICAgICAgICAgICA8
Ym9keSBmb289IiYjMTYwOyI+JysKKyAgICAgICAgICAgICAgJyYjMTYwOycrCisgICAgJyAgICAg
ICAgICAgIDwvYm9keT4nKworICAgICcgICAgICAgIDwvaHRtbD4nKworICAgICcgICAgPC94c2w6
dGVtcGxhdGU+JysKKyAgICAnPC94c2w6c3R5bGVzaGVldD4nOworICAgIAorICAgIHZhciBwYXJz
ZXIgPSBuZXcgRE9NUGFyc2VyKCk7CisgICAgdmFyIGQgPSBwYXJzZXIucGFyc2VGcm9tU3RyaW5n
KFhNTCwgInRleHQveG1sIik7CisgICAgdmFyIHBhcnNlciA9IG5ldyBET01QYXJzZXIoKTsKKyAg
ICB2YXIgeHNsID0gcGFyc2VyLnBhcnNlRnJvbVN0cmluZyhYU0wsICJ0ZXh0L3htbCIpOworICAg
IAorICAgIHZhciB4c2x0cHJvYyA9ICBuZXcgWFNMVFByb2Nlc3NvcigpOworICAgIHhzbHRwcm9j
LmltcG9ydFN0eWxlc2hlZXQoeHNsKTsKKyAgICB2YXIgcmVzdWx0ID0geHNsdHByb2MudHJhbnNm
b3JtVG9Eb2N1bWVudChkKTsKKworICAgIGRvY3VtZW50LndyaXRlKHJlc3VsdCA/ICJTVUNDRVNT
IiA6ICJGQUlMVVJFIik7Cit9IGNhdGNoIChleCkgeworICAgIGRvY3VtZW50LndyaXRlKCJFeGNl
cHRpb246ICIgKyBleCk7Cit9Cis8L3NjcmlwdD4KKzwvYm9keT4KClByb3BlcnR5IGNoYW5nZXMg
b246IExheW91dFRlc3RzL2Zhc3QveHNsL25ic3AtaW4tc3R5bGVzaGVldC5odG1sCl9fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X18KTmFtZTogc3ZuOm1pbWUtdHlwZQogICArIHRleHQvaHRtbAoK
</data>
<flag name="review"
          id="9331"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>