<?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>54271</bug_id>
          
          <creation_ts>2011-02-10 21:51:19 -0800</creation_ts>
          <short_desc>Safari Extensions broken due to KURL canonicalization added in r78044</short_desc>
          <delta_ts>2011-02-12 11:30:36 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WORKSFORME</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P1</priority>
          <bug_severity>Blocker</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>aroben</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>jeffm</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-ews</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>349637</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-02-10 21:51:19 -0800</bug_when>
    <thetext>safari-extension: scheme needs special case-sensitive treatment in KURL

safari-extensions broke after http://trac.webkit.org/changeset/78044 (or so I&apos;m told).

See further discussion in:
https://bugs.webkit.org/show_bug.cgi?id=54084#c4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>349706</commentid>
    <comment_count>1</comment_count>
      <attachid>82120</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-02-11 04:02:23 -0800</bug_when>
    <thetext>Created attachment 82120
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>349708</commentid>
    <comment_count>2</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-02-11 04:17:04 -0800</bug_when>
    <thetext>Attachment 82120 did not build on qt:
Build output: http://queues.webkit.org/results/7884571</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>349709</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-02-11 04:24:06 -0800</bug_when>
    <thetext>append() was never used on non-apple ports.  Fixing it now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>349710</commentid>
    <comment_count>4</comment_count>
      <attachid>82121</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-02-11 04:33:56 -0800</bug_when>
    <thetext>Created attachment 82121
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>349780</commentid>
    <comment_count>5</comment_count>
      <attachid>82121</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2011-02-11 08:02:55 -0800</bug_when>
    <thetext>Comment on attachment 82121
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=82121&amp;action=review

&gt; Source/WebCore/platform/KURL.cpp:1354
&gt; +            // safari-extension: host contents are case sensitive (in violation of RFC 2396).
&gt; +            // https://bugs.webkit.org/show_bug.cgi?id=54271

No where in RFC 2396 do I see that safari-extension is in violation.

&gt; This authority component is typically defined by an Internet-based
&gt; server or a scheme-specific registry of naming authorities.

And:

&gt; The structure of a registry-based naming authority is specific to the
&gt; URI scheme, but constrained to the allowed characters for an
&gt; authority component.
&gt;
&gt;     reg_name      = 1*( unreserved | escaped | &quot;$&quot; | &quot;,&quot; |
&gt;                          &quot;;&quot; | &quot;:&quot; | &quot;@&quot; | &quot;&amp;&quot; | &quot;=&quot; | &quot;+&quot; )

And &quot;unreserved&quot; is defined as (expanded) &quot;lowalpha | upalpha | digit | mark&quot;.

Only if the scheme uses &quot;Server-based Naming Authority&quot; does the case-insensitive domain name logic apply.

&gt; Hostnames take the form described in Section 3 of [RFC1034] and section 2.1 of [RFC1123]

So I disagree that &quot;safari-extension&quot; is in violation, and that any domain canonicalization should only apply to schemes we know treat the athority as server-based. I would also argue that this should apply to security origin too. Only the scheme is called out as being case-insensitive for all URIs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>349781</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-02-11 08:11:17 -0800</bug_when>
    <thetext>Section 6 &quot;URI Normalization and Equivalence&quot; seems relevant:

In many cases, different URI strings may actually identify the
identical resource. For example, the host names used in URL are
actually case insensitive, and the URL &lt;http://www.XEROX.com&gt; is
equivalent to &lt;http://www.xerox.com&gt;. In general, the rules for
equivalence and definition of a normal form, if any, are scheme
dependent. When a scheme uses elements of the common syntax, it will
also use the common syntax equivalence rules, namely that the scheme
and hostname are case insensitive and a URL with an explicit &quot;:port&quot;,
where the port is the default for the scheme, is equivalent to one
where the port is elided.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>349782</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-02-11 08:23:03 -0800</bug_when>
    <thetext>I guess Tim is arguing that the authority part of safari-extension: URLs falls under &quot;Registry-based Naming Authority&quot;, not &quot;Server-based Naming Authority&quot;. I think I agree with him. Here&apos;s my attempt to clarify the argument.

From section 3.2 &quot;Authority Component&quot;:

&gt; Many URI schemes include a top hierarchical element for a naming
&gt; authority, such that the namespace defined by the remainder of the
&gt; URI is governed by that authority. 

This certainly applies to safari-extension: URLs.

&gt; This authority component is typically defined by an Internet-based
&gt; server or a scheme-specific registry of naming authorities.

safari-extension: URLs definitely don&apos;t use an &quot;Internet-based server&quot;, and they do use a &quot;scheme-specific registry of naming authorities&quot;.

In addition, section 3.2.2 &quot;Server-based Naming Authority&quot; specifically mentions &quot;URL schemes that involve the direct use of an IP-based protocol to a specified server on the Internet&quot;, which does not describe safari-extension: URLs.

So, given that safari-extension: URLs do not use a server-based naming authority, what rules apply to their syntax? Section 3.2.1 &quot;Registry-based Naming Authority&quot; says only this:

&gt; The structure of a registry-based naming authority is specific to the
&gt; URI scheme, but constrained to the allowed characters for an
&gt; authority component.
&gt;
&gt;    reg_name      = 1*( unreserved | escaped | &quot;$&quot; | &quot;,&quot; |
&gt;                        &quot;;&quot; | &quot;:&quot; | &quot;@&quot; | &quot;&amp;&quot; | &quot;=&quot; | &quot;+&quot; )

Note that &quot;hostname&quot; isn&apos;t defined here at all; it&apos;s only defined for URIs that use a server-based naming authority. So presumably the prose in section 6 that mentions hostnames being case-insensitive doesn&apos;t apply here; safari-extension: URLs have no hostnames at all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>349832</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-02-11 10:37:40 -0800</bug_when>
    <thetext>+        * platform/mac/fast/url/script-tests/TEMPLATE.html: Added.
+        * platform/mac/fast/url/script-tests/safari-extension.js: Added.

Please don&apos;t add a script-tests directory.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>349895</commentid>
    <comment_count>9</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2011-02-11 11:55:22 -0800</bug_when>
    <thetext>Should we revert this KURL change so we can take our time considering the right fix?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>349911</commentid>
    <comment_count>10</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-02-11 12:22:41 -0800</bug_when>
    <thetext>I would encourage reverting if we cannot come up with a solution very quickly. We should also take a closer look at other schemes that may be affected by this change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>349987</commentid>
    <comment_count>11</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-02-11 13:47:02 -0800</bug_when>
    <thetext>I&apos;m confused by the r-.  Was it for the comment?

It seems there were no negative comments about the code change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350020</commentid>
    <comment_count>12</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-02-11 14:14:39 -0800</bug_when>
    <thetext>As discussed with Eric, this issue is coupled with the fact that KURL don&apos;t have a notion of a hierarchal URI scheme.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350022</commentid>
    <comment_count>13</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-02-11 14:15:38 -0800</bug_when>
    <thetext>More specifically, it attempts to infer whether a scheme is hierarchical based on its structure, which is different from how other browsers behave.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350036</commentid>
    <comment_count>14</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-02-11 14:24:29 -0800</bug_when>
    <thetext>I&apos;m working on a new patch which only lowers the host name for schemes which are known to be &quot;standard&quot;.
http://www.google.com/codesearch/p?hl=en#R_oU-jn3RFk/trunk/src/url_util.cc&amp;q=standardurl%20package:http://google-url%5C.googlecode%5C.com&amp;l=62</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350039</commentid>
    <comment_count>15</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-02-11 14:28:56 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; More specifically, it attempts to infer whether a scheme is hierarchical based on its structure, which is different from how other browsers behave.

An example of what Adam is referring to:
https://bugs.webkit.org/show_bug.cgi?id=10323</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350050</commentid>
    <comment_count>16</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2011-02-11 14:40:40 -0800</bug_when>
    <thetext>The r- was not for the comment specifically — though the comment is incorrect according to my interpretation of the RFCs.

The r- was because special casing the &quot;safari-extension&quot; scheme is not the right solution. It sounds like you are working on the right solution now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350275</commentid>
    <comment_count>17</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2011-02-12 09:28:08 -0800</bug_when>
    <thetext>The original change that broke this was rolled out by Eric in r78395. Should we close this then?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350284</commentid>
    <comment_count>18</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-02-12 11:30:36 -0800</bug_when>
    <thetext>Sure.  This patch in this bug will likely be useful when we re-land hostname canonicalization, but this issue is resolved.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82120</attachid>
            <date>2011-02-11 04:02:23 -0800</date>
            <delta_ts>2011-02-11 04:33:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-54271-20110211040222.patch</filename>
            <type>text/plain</type>
            <size>9702</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogNzgzMTcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBhNDEyYzJkYjU4NmZhZmExNDViYWI0
MTBjYWE4OTUzZjlhY2IyMzFmLi5iNmFiYWMyM2ZjMjk4ZmRiODcxYThhZGY0ZjczYmNmMDBhYjgw
MDZkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEtMDItMTEgIEVyaWMgU2VpZGVsICA8ZXJp
Y0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIHNhZmFyaS1leHRlbnNpb246IHNjaGVtZSBuZWVkcyBzcGVjaWFsIGNhc2Utc2Vuc2l0
aXZlIHRyZWF0bWVudCBpbiBLVVJMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01NDI3MQorCisgICAgICAgIEFsc28gbW92ZWQgYSBjb3VwbGUgcmVzdWx0
cyB3aGljaCB3ZXJlIGluIHRoZSB3cm9uZyBwbGFjZQorICAgICAgICBkdWUgdG8gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU0MjgxCisgICAgICAgIChJIGhpdCB0aGUg
c2FtZSBidWcsIGFuZCB0aHVzIG5vdGljZSB0aGUgbWlzcGxhY2UgcmVzdWx0cy4pCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tYWMvZmFzdC91cmwvc2FmYXJpLWV4dGVuc2lvbi1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9mYXN0L3VybC9zYWZhcmktZXh0ZW5zaW9u
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9mYXN0L3VybC9zY3JpcHQtdGVz
dHMvVEVNUExBVEUuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2Zhc3QvdXJs
L3NjcmlwdC10ZXN0cy9zYWZhcmktZXh0ZW5zaW9uLmpzOiBBZGRlZC4KKwogMjAxMS0wMi0xMCAg
TWFkcyBBZ2VyICA8YWdlckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTmF0
ZSBDaGFwaW4uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC91cmwv
c2FmYXJpLWV4dGVuc2lvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
ZmFzdC91cmwvc2FmYXJpLWV4dGVuc2lvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTkxODli
YjQ5M2U2NGIzNDFlOWYwZjcyNTUzN2VhZTYzY2U1NTY5MAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L3VybC9zYWZhcmktZXh0ZW5zaW9uLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDEwIEBACitDYW5vbmljYWxpemF0aW9uIG9mIHNhZmFyaS1leHRlbnNp
b24gdXJscy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgY2Fub25pY2Fs
aXplKCdzYWZhcmktZXh0ZW5zaW9uOi8vY29tLmFwcGxlLlNhZmFyaS5UZXN0LThZM0NEUzczUjgv
Y2YwM2ZjNDcvdGVzdC5odG1sJykgaXMgJ3NhZmFyaS1leHRlbnNpb246Ly9jb20uYXBwbGUuU2Fm
YXJpLlRlc3QtOFkzQ0RTNzNSOC9jZjAzZmM0Ny90ZXN0Lmh0bWwnCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjL2Zhc3QvdXJsL3NhZmFyaS1leHRlbnNpb24uaHRtbCBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy9mYXN0L3VybC9zYWZhcmktZXh0ZW5zaW9uLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMWRmODM5ZjBkZGNkYzA5NGVkZWU3ZjljZDg4N2FlMWYyZmRjM2RhMwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L3VybC9zYWZhcmktZXh0ZW5zaW9u
Lmh0bWwKQEAgLTAsMCArMSwxNCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9E
VEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0iLi4vLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9mYXN0L3VybC9yZXNvdXJjZXMvdXRp
bGl0aWVzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9u
Ij48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVz
dHMvc2FmYXJpLWV4dGVuc2lvbi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L3VybC9z
Y3JpcHQtdGVzdHMvVEVNUExBVEUuaHRtbCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0
L3VybC9zY3JpcHQtdGVzdHMvVEVNUExBVEUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZDI1NjFjNWRjN2U2
NDkyYTRiOGU1OTNjNjJhMjRlN2YwNTE0ODAzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjL2Zhc3QvdXJsL3NjcmlwdC10ZXN0cy9URU1QTEFURS5odG1sCkBAIC0w
LDAgKzEsMTQgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VO
Ij4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vZmFzdC91cmwvcmVzb3VyY2VzL3V0aWxpdGllcy5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0iWU9VUl9KU19GSUxFX0hFUkUiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC91cmwvc2NyaXB0LXRlc3RzL3NhZmFyaS1leHRlbnNp
b24uanMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC91cmwvc2NyaXB0LXRlc3RzL3Nh
ZmFyaS1leHRlbnNpb24uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTNhZDdlYTBhZWQyN2E5MjY0NTg5M2UzYjZh
OTQ2YTliOGFlZTc2MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy9mYXN0L3VybC9zY3JpcHQtdGVzdHMvc2FmYXJpLWV4dGVuc2lvbi5qcwpAQCAtMCwwICsxLDE1
IEBACitkZXNjcmlwdGlvbigiQ2Fub25pY2FsaXphdGlvbiBvZiBzYWZhcmktZXh0ZW5zaW9uIHVy
bHMuIik7CisKK2Nhc2VzID0gWyAKKyAgLy8gc2FmYXJpLWV4dGVuc2lvbjogbGlua3MgcmVzcGVj
dCBjYXNlIChpbiB2aW9sYXRpb24gb2YgUkZDIDIzOTYpCisgIFsiY29tLmFwcGxlLlNhZmFyaS5U
ZXN0LThZM0NEUzczUjgvY2YwM2ZjNDcvdGVzdC5odG1sIiwgImNvbS5hcHBsZS5TYWZhcmkuVGVz
dC04WTNDRFM3M1I4L2NmMDNmYzQ3L3Rlc3QuaHRtbCJdLAorXTsKKworZm9yICh2YXIgaSA9IDA7
IGkgPCBjYXNlcy5sZW5ndGg7ICsraSkgeworICB0ZXN0X3ZlY3RvciA9IGNhc2VzW2ldWzBdOwor
ICBleHBlY3RlZF9yZXN1bHQgPSBjYXNlc1tpXVsxXTsKKyAgc2hvdWxkQmUoImNhbm9uaWNhbGl6
ZSgnc2FmYXJpLWV4dGVuc2lvbjovLyIgKyB0ZXN0X3ZlY3RvciArICInKSIsCisgICAgICAgICAg
ICInc2FmYXJpLWV4dGVuc2lvbjovLyIgKyBleHBlY3RlZF9yZXN1bHQgKyAiJyIpOworfQorCit2
YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyODcxOTAwZjBmNzk1
ZmM2OGUyNmE3ZWIyYjlkNDFkM2Y0YmI4ZGU0Li41NmQxOThhYjUxODU1NzM2YmY0NDZhMjM2NDFl
OGVlZjVhYzI2M2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTEtMDItMTEgIEVy
aWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIHNhZmFyaS1leHRlbnNpb246IHNjaGVtZSBuZWVkcyBzcGVj
aWFsIGNhc2Utc2Vuc2l0aXZlIHRyZWF0bWVudCBpbiBLVVJMCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NDI3MQorCisgICAgICAgIFRlc3Q6IHBsYXRm
b3JtL21hYy9mYXN0L3VybC9zYWZhcmktZXh0ZW5zaW9uLmh0bWwKKworICAgICAgICBEaWQgYSBs
aXR0bGUgY2xlYW51cCB0byBob3cgd2Ugd2VyZSBtYXRjaGluZyBwcm90b2NvbHMuCisgICAgICAg
IFRoaXMgc2hvdWxkIGJlIGp1c3QgYXMgZmFzdCBhbmQgd2F5IGVhc2llciB0byByZWFkCisgICAg
ICAgIChhbmQgbXVjaCBsZXNzIGVycm9yLXByb25lKS4KKworICAgICAgICAqIHBsYXRmb3JtL0tV
UkwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bWF0Y2hMZXR0ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6bWF0Y2hlc1Byb3RvY29sKToKKyAgICAgICAgKFdlYkNvcmU6OmFwcGVuZCk6CisgICAgICAg
IChXZWJDb3JlOjphcHBlbmRMb3dlcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OktVUkw6OnBhcnNl
KToKKwogMjAxMS0wMi0xMCAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9LVVJMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tVUkwuY3BwCmluZGV4
IGNmNDRjMDI3N2MyNDNiZDg2NjFjMzFhZDgwZDY0YzBhNTJmYWMyZmMuLjgxNDU2MGM1NGVmNzU2
YTk1Zjk4ZDUxNDZhNDNhY2ZlZTA5MmU4MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0tVUkwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tVUkwuY3BwCkBA
IC0xMDg1LDExICsxMDg1LDYgQEAgc3RhdGljIGlubGluZSBib29sIGhhc1NsYXNoRG90T3JEb3RE
b3QoY29uc3QgY2hhciogc3RyKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotc3RhdGljIGlubGlu
ZSBib29sIG1hdGNoTGV0dGVyKGNoYXIgYywgY2hhciBsb3dlcmNhc2VMZXR0ZXIpCi17Ci0gICAg
cmV0dXJuIChjIHwgMHgyMCkgPT0gbG93ZXJjYXNlTGV0dGVyOwotfQotCiB2b2lkIEtVUkw6OnBh
cnNlKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewogICAgIGNoZWNrRW5jb2RlZFN0cmluZyhzdHJp
bmcpOwpAQCAtMTEwMCw2ICsxMDk1LDM0IEBAIHZvaWQgS1VSTDo6cGFyc2UoY29uc3QgU3RyaW5n
JiBzdHJpbmcpCiAgICAgcGFyc2UoYnVmZmVyLmRhdGEoKSwgJnN0cmluZyk7CiB9CiAKK3N0YXRp
YyBpbmxpbmUgYm9vbCBtYXRjaExldHRlcihjaGFyIGMsIGNoYXIgbG93ZXJjYXNlTGV0dGVyKQor
eworICAgIHJldHVybiAoYyB8IDB4MjApID09IGxvd2VyY2FzZUxldHRlcjsKK30KKworc3RhdGlj
IGlubGluZSBib29sIG1hdGNoZXNQcm90b2NvbChjb25zdCBjaGFyKiB1cmwsIHNpemVfdCBzY2hl
bWVFbmQsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpCit7CisgICAgaWYgKHNjaGVtZUVuZCAhPSBw
cm90b2NvbC5sZW5ndGgoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBlcXVh
bElnbm9yaW5nQ2FzZShwcm90b2NvbC5jaGFyYWN0ZXJzKCksIHVybCwgc2NoZW1lRW5kKTsKK30K
KworLy8gQ2F1dGlvbjogdGhpcyBkb2VzIG5vdCBib3VuZHMgY2hlY2sgYnVmZmVyLgorc3RhdGlj
IHZvaWQgYXBwZW5kKGNoYXIqJiBidWZmZXIsIGNvbnN0IGNoYXIqIHN0clB0ciwgc2l6ZV90IGxl
bmd0aCkKK3sKKyAgICBjb25zdCBjaGFyKiBzdHJFbmRQdHIgPSBzdHJQdHIgKyBsZW5ndGg7Cisg
ICAgd2hpbGUgKHN0clB0ciA8IHN0ckVuZFB0cikKKyAgICAgICAgKmJ1ZmZlcisrID0gKnN0clB0
cisrOworfQorCisvLyBDYXV0aW9uOiB0aGlzIGRvZXMgbm90IGJvdW5kcyBjaGVjayBidWZmZXIu
CitzdGF0aWMgdm9pZCBhcHBlbmRMb3dlcmVkKGNoYXIqJiBidWZmZXIsIGNvbnN0IGNoYXIqIHN0
clB0ciwgc2l6ZV90IGxlbmd0aCkKK3sKKyAgICBjb25zdCBjaGFyKiBzdHJFbmRQdHIgPSBzdHJQ
dHIgKyBsZW5ndGg7CisgICAgd2hpbGUgKHN0clB0ciA8IHN0ckVuZFB0cikKKyAgICAgICAgKmJ1
ZmZlcisrID0gdG9BU0NJSUxvd2VyKCpzdHJQdHIrKyk7Cit9CisKIHZvaWQgS1VSTDo6cGFyc2Uo
Y29uc3QgY2hhciogdXJsLCBjb25zdCBTdHJpbmcqIG9yaWdpbmFsU3RyaW5nKQogewogICAgIGlm
ICghdXJsIHx8IHVybFswXSA9PSAnXDAnKSB7CkBAIC0xMTM3LDExICsxMTYwLDggQEAgdm9pZCBL
VVJMOjpwYXJzZShjb25zdCBjaGFyKiB1cmwsIGNvbnN0IFN0cmluZyogb3JpZ2luYWxTdHJpbmcp
CiAKICAgICBib29sIGhpZXJhcmNoaWNhbCA9IHVybFtzY2hlbWVFbmQgKyAxXSA9PSAnLyc7CiAK
LSAgICBib29sIGlzRmlsZSA9IHNjaGVtZUVuZCA9PSA0Ci0gICAgICAgICYmIG1hdGNoTGV0dGVy
KHVybFswXSwgJ2YnKQotICAgICAgICAmJiBtYXRjaExldHRlcih1cmxbMV0sICdpJykKLSAgICAg
ICAgJiYgbWF0Y2hMZXR0ZXIodXJsWzJdLCAnbCcpCi0gICAgICAgICYmIG1hdGNoTGV0dGVyKHVy
bFszXSwgJ2UnKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgZmlsZVByb3RvY29s
LCAoImZpbGUiKSk7CisgICAgYm9vbCBpc0ZpbGUgPSBtYXRjaGVzUHJvdG9jb2wodXJsLCBzY2hl
bWVFbmQsIGZpbGVQcm90b2NvbCk7CiAKICAgICBtX3Byb3RvY29sSW5IVFRQRmFtaWx5ID0gbWF0
Y2hMZXR0ZXIodXJsWzBdLCAnaCcpCiAgICAgICAgICYmIG1hdGNoTGV0dGVyKHVybFsxXSwgJ3Qn
KQpAQCAtMTE0OSw2ICsxMTY5LDEyIEBAIHZvaWQgS1VSTDo6cGFyc2UoY29uc3QgY2hhciogdXJs
LCBjb25zdCBTdHJpbmcqIG9yaWdpbmFsU3RyaW5nKQogICAgICAgICAmJiBtYXRjaExldHRlcih1
cmxbM10sICdwJykKICAgICAgICAgJiYgKHVybFs0XSA9PSAnOicgfHwgKG1hdGNoTGV0dGVyKHVy
bFs0XSwgJ3MnKSAmJiB1cmxbNV0gPT0gJzonKSk7CiAKKyAgICAvLyBGSVhNRTogVGhpcyBzaG91
bGQgYmUgc29tZSBzb3J0IG9mIFBMQVRGT1JNKEFQUExFKSwgYnV0IHRoYXQgZG9lbnMndCBleGlz
dCB5ZXQuCisjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShXSU4pCisgICAgREVGSU5FX1NU
QVRJQ19MT0NBTChTdHJpbmcsIHNhZmFyaUV4dGVuc2lvblByb3RvY29sLCAoInNhZmFyaS1leHRl
bnNpb24iKSk7CisgICAgYm9vbCBpc1NhZmFyaUV4dGVuc2lvbiA9IG1hdGNoZXNQcm90b2NvbCh1
cmwsIHNjaGVtZUVuZCwgc2FmYXJpRXh0ZW5zaW9uUHJvdG9jb2wpOworI2VuZGlmCisKICAgICBp
ZiAoaGllcmFyY2hpY2FsICYmIHVybFtzY2hlbWVFbmQgKyAyXSA9PSAnLycpIHsKICAgICAgICAg
Ly8gVGhlIHBhcnQgYWZ0ZXIgdGhlIHNjaGVtZSBpcyBlaXRoZXIgYSBuZXRfcGF0aCBvciBhbiBh
YnNfcGF0aCB3aG9zZSBmaXJzdCBwYXRoIHNlZ21lbnQgaXMgZW1wdHkuCiAgICAgICAgIC8vIEF0
dGVtcHQgdG8gZmluZCBhbiBhdXRob3JpdHkuCkBAIC0xMjcwLDEzICsxMjk2LDExIEBAIHZvaWQg
S1VSTDo6cGFyc2UoY29uc3QgY2hhciogdXJsLCBjb25zdCBTdHJpbmcqIG9yaWdpbmFsU3RyaW5n
KQogCiAgICAgVmVjdG9yPGNoYXIsIDQwOTY+IGJ1ZmZlcihmcmFnbWVudEVuZCAqIDMgKyAxKTsK
IAotICAgIGNoYXIgKnAgPSBidWZmZXIuZGF0YSgpOwotICAgIGNvbnN0IGNoYXIgKnN0clB0ciA9
IHVybDsKKyAgICBjaGFyKiBwID0gYnVmZmVyLmRhdGEoKTsKKyAgICBjb25zdCBjaGFyKiBzdHJQ
dHIgPSB1cmw7IC8vIEZJWE1FOiBFYWNoIGJsb2NrIHNob3VsZCBkZWZpbmUgdGhlaXIgb3duIGJl
dHRlci1uYW1lZCBsb2NhbCBzdHJQdHIuCiAKICAgICAvLyBjb3B5IGluIHRoZSBzY2hlbWUKLSAg
ICBjb25zdCBjaGFyICpzY2hlbWVFbmRQdHIgPSB1cmwgKyBzY2hlbWVFbmQ7Ci0gICAgd2hpbGUg
KHN0clB0ciA8IHNjaGVtZUVuZFB0cikKLSAgICAgICAgKnArKyA9IHRvQVNDSUlMb3dlcigqc3Ry
UHRyKyspOworICAgIGFwcGVuZExvd2VyZWQocCwgdXJsLCBzY2hlbWVFbmQpOwogICAgIG1fc2No
ZW1lRW5kID0gcCAtIGJ1ZmZlci5kYXRhKCk7CiAKICAgICBib29sIGhvc3RJc0xvY2FsSG9zdCA9
IHBvcnRFbmQgLSB1c2VyU3RhcnQgPT0gOQpAQCAtMTMyOCwxMCArMTM1MiwxNiBAQCB2b2lkIEtV
Ukw6OnBhcnNlKGNvbnN0IGNoYXIqIHVybCwgY29uc3QgU3RyaW5nKiBvcmlnaW5hbFN0cmluZykK
IAogICAgICAgICAvLyBjb3B5IGluIHRoZSBob3N0LCBleGNlcHQgaW4gdGhlIGNhc2Ugb2YgYSBm
aWxlIFVSTCB3aXRoIGF1dGhvcml0eT0ibG9jYWxob3N0IgogICAgICAgICBpZiAoIShpc0ZpbGUg
JiYgaG9zdElzTG9jYWxIb3N0ICYmICFoYXZlTm9uSG9zdEF1dGhvcml0eVBhcnQpKSB7Ci0gICAg
ICAgICAgICBzdHJQdHIgPSB1cmwgKyBob3N0U3RhcnQ7Ci0gICAgICAgICAgICBjb25zdCBjaGFy
KiBob3N0RW5kUHRyID0gdXJsICsgaG9zdEVuZDsKLSAgICAgICAgICAgIHdoaWxlIChzdHJQdHIg
PCBob3N0RW5kUHRyKQotICAgICAgICAgICAgICAgICpwKysgPSB0b0FTQ0lJTG93ZXIoKnN0clB0
cisrKTsKKyAgICAgICAgICAgIGNvbnN0IGNoYXIqIGhvc3RQdHIgPSB1cmwgKyBob3N0U3RhcnQ7
CisgICAgICAgICAgICBzaXplX3QgaG9zdExlbmd0aCA9IGhvc3RFbmQgLSBob3N0U3RhcnQ7Cisj
aWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShXSU4pCisgICAgICAgICAgICAvLyBzYWZhcmkt
ZXh0ZW5zaW9uOiBob3N0IGNvbnRlbnRzIGFyZSBjYXNlIHNlbnNpdGl2ZSAoaW4gdmlvbGF0aW9u
IG9mIFJGQyAyMzk2KS4KKyAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01NDI3MQorICAgICAgICAgICAgaWYgKGlzU2FmYXJpRXh0ZW5zaW9uKQor
ICAgICAgICAgICAgICAgIGFwcGVuZChwLCBob3N0UHRyLCBob3N0TGVuZ3RoKTsKKyAgICAgICAg
ICAgIGVsc2UKKyNlbmRpZgorICAgICAgICAgICAgICAgIGFwcGVuZExvd2VyZWQocCwgaG9zdFB0
ciwgaG9zdExlbmd0aCk7CiAgICAgICAgIH0KICAgICAgICAgbV9ob3N0RW5kID0gcCAtIGJ1ZmZl
ci5kYXRhKCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82121</attachid>
            <date>2011-02-11 04:33:56 -0800</date>
            <delta_ts>2011-02-11 08:02:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-54271-20110211043355.patch</filename>
            <type>text/plain</type>
            <size>10785</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogNzgzMzAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA1YzVhMzFhYWIzNzkwMmNiYTRhMDgy
ODA1Mjk2Nzk4NjI3MDVjZDBhLi4xZjE5NTk4M2FlOGU5M2ViOTQ2YmQyNGQzOGEyZWViZDZhOWM5
YzBhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDItMTEgIEVyaWMgU2VpZGVsICA8ZXJp
Y0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIHNhZmFyaS1leHRlbnNpb246IHNjaGVtZSBuZWVkcyBzcGVjaWFsIGNhc2Utc2Vuc2l0
aXZlIHRyZWF0bWVudCBpbiBLVVJMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01NDI3MQorCisgICAgICAgICogcGxhdGZvcm0vbWFjL2Zhc3QvdXJsL3Nh
ZmFyaS1leHRlbnNpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9t
YWMvZmFzdC91cmwvc2FmYXJpLWV4dGVuc2lvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvZmFzdC91cmwvc2NyaXB0LXRlc3RzL1RFTVBMQVRFLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL21hYy9mYXN0L3VybC9zY3JpcHQtdGVzdHMvc2FmYXJpLWV4dGVuc2lv
bi5qczogQWRkZWQuCisKIDIwMTEtMDItMTEgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBUdXJucyBvdXQgdGhhdCBleHBlY3RhdGlvbiBpc24ndCBRdCBzcGVjaWZp
Yy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L3VybC9zYWZhcmkt
ZXh0ZW5zaW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L3Vy
bC9zYWZhcmktZXh0ZW5zaW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lOTE4OWJiNDkzZTY0
YjM0MWU5ZjBmNzI1NTM3ZWFlNjNjZTU1NjkwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjL2Zhc3QvdXJsL3NhZmFyaS1leHRlbnNpb24tZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMTAgQEAKK0Nhbm9uaWNhbGl6YXRpb24gb2Ygc2FmYXJpLWV4dGVuc2lvbiB1cmxz
LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBjYW5vbmljYWxpemUoJ3Nh
ZmFyaS1leHRlbnNpb246Ly9jb20uYXBwbGUuU2FmYXJpLlRlc3QtOFkzQ0RTNzNSOC9jZjAzZmM0
Ny90ZXN0Lmh0bWwnKSBpcyAnc2FmYXJpLWV4dGVuc2lvbjovL2NvbS5hcHBsZS5TYWZhcmkuVGVz
dC04WTNDRFM3M1I4L2NmMDNmYzQ3L3Rlc3QuaHRtbCcKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMvZmFzdC91cmwvc2FmYXJpLWV4dGVuc2lvbi5odG1sIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjL2Zhc3QvdXJsL3NhZmFyaS1leHRlbnNpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZGY4
MzlmMGRkY2RjMDk0ZWRlZTdmOWNkODg3YWUxZjJmZGMzZGEzCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvdXJsL3NhZmFyaS1leHRlbnNpb24uaHRtbApA
QCAtMCwwICsxLDE0IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1M
Ly9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8u
Li8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Zhc3QvdXJsL3Jlc291cmNlcy91dGlsaXRpZXMu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4K
KzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9zYWZh
cmktZXh0ZW5zaW9uLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvdXJsL3NjcmlwdC10
ZXN0cy9URU1QTEFURS5odG1sIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvdXJsL3Nj
cmlwdC10ZXN0cy9URU1QTEFURS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlkMjU2MWM1ZGM3ZTY0OTJhNGI4
ZTU5M2M2MmEyNGU3ZjA1MTQ4MDMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMvZmFzdC91cmwvc2NyaXB0LXRlc3RzL1RFTVBMQVRFLmh0bWwKQEAgLTAsMCArMSwx
NCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0
bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi8uLi9mYXN0L3VybC9yZXNvdXJjZXMvdXRpbGl0aWVzLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJZT1VSX0pTX0ZJTEVfSEVSRSI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9mYXN0L3VybC9zY3JpcHQtdGVzdHMvc2FmYXJpLWV4dGVuc2lvbi5qcyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L3VybC9zY3JpcHQtdGVzdHMvc2FmYXJpLWV4
dGVuc2lvbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45M2FkN2VhMGFlZDI3YTkyNjQ1ODkzZTNiNmE5NDZhOWI4
YWVlNzYzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3Qv
dXJsL3NjcmlwdC10ZXN0cy9zYWZhcmktZXh0ZW5zaW9uLmpzCkBAIC0wLDAgKzEsMTUgQEAKK2Rl
c2NyaXB0aW9uKCJDYW5vbmljYWxpemF0aW9uIG9mIHNhZmFyaS1leHRlbnNpb24gdXJscy4iKTsK
KworY2FzZXMgPSBbIAorICAvLyBzYWZhcmktZXh0ZW5zaW9uOiBsaW5rcyByZXNwZWN0IGNhc2Ug
KGluIHZpb2xhdGlvbiBvZiBSRkMgMjM5NikKKyAgWyJjb20uYXBwbGUuU2FmYXJpLlRlc3QtOFkz
Q0RTNzNSOC9jZjAzZmM0Ny90ZXN0Lmh0bWwiLCAiY29tLmFwcGxlLlNhZmFyaS5UZXN0LThZM0NE
UzczUjgvY2YwM2ZjNDcvdGVzdC5odG1sIl0sCitdOworCitmb3IgKHZhciBpID0gMDsgaSA8IGNh
c2VzLmxlbmd0aDsgKytpKSB7CisgIHRlc3RfdmVjdG9yID0gY2FzZXNbaV1bMF07CisgIGV4cGVj
dGVkX3Jlc3VsdCA9IGNhc2VzW2ldWzFdOworICBzaG91bGRCZSgiY2Fub25pY2FsaXplKCdzYWZh
cmktZXh0ZW5zaW9uOi8vIiArIHRlc3RfdmVjdG9yICsgIicpIiwKKyAgICAgICAgICAgIidzYWZh
cmktZXh0ZW5zaW9uOi8vIiArIGV4cGVjdGVkX3Jlc3VsdCArICInIik7Cit9CisKK3ZhciBzdWNj
ZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDllYTM1NTQ1NmRlZDQyZTRjMGQ2
NWJjZDdlNjJiNzllZjY0NmQ2ZWUuLjBiN2IzMjdhYmNjOGY2YzkxZDc2ZjQ2YWRjZjk4NTM0ZmJi
Njc5NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxMS0wMi0xMSAgRXJpYyBTZWlk
ZWwgIDxlcmljQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgc2FmYXJpLWV4dGVuc2lvbjogc2NoZW1lIG5lZWRzIHNwZWNpYWwgY2Fz
ZS1zZW5zaXRpdmUgdHJlYXRtZW50IGluIEtVUkwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTU0MjcxCisKKyAgICAgICAgVGVzdDogcGxhdGZvcm0vbWFj
L2Zhc3QvdXJsL3NhZmFyaS1leHRlbnNpb24uaHRtbAorCisgICAgICAgIERpZCBhIGxpdHRsZSBj
bGVhbnVwIHRvIGhvdyB3ZSB3ZXJlIG1hdGNoaW5nIHByb3RvY29scy4KKyAgICAgICAgVGhpcyBz
aG91bGQgYmUganVzdCBhcyBmYXN0IGFuZCB3YXkgZWFzaWVyIHRvIHJlYWQKKyAgICAgICAgKGFu
ZCBtdWNoIGxlc3MgZXJyb3ItcHJvbmUpLgorCisgICAgICAgICogcGxhdGZvcm0vS1VSTC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjptYXRjaExldHRlcik6CisgICAgICAgIChXZWJDb3JlOjptYXRj
aGVzUHJvdG9jb2wpOgorICAgICAgICAoV2ViQ29yZTo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNv
cmU6OmFwcGVuZExvd2VyZWQpOgorICAgICAgICAoV2ViQ29yZTo6S1VSTDo6cGFyc2UpOgorCiAy
MDExLTAyLTExICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IFl1cnkgU2VtaWtoYXRza3kuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9LVVJMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tVUkwuY3Bw
CmluZGV4IGNmNDRjMDI3N2MyNDNiZDg2NjFjMzFhZDgwZDY0YzBhNTJmYWMyZmMuLjU4ZGQzZDJm
ZTlkYjZkZjFlNDMzOGYzYjJkZjczNGZlMDVjNjU2ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0tVUkwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tVUkwu
Y3BwCkBAIC0xMDg1LDExICsxMDg1LDYgQEAgc3RhdGljIGlubGluZSBib29sIGhhc1NsYXNoRG90
T3JEb3REb3QoY29uc3QgY2hhciogc3RyKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotc3RhdGlj
IGlubGluZSBib29sIG1hdGNoTGV0dGVyKGNoYXIgYywgY2hhciBsb3dlcmNhc2VMZXR0ZXIpCi17
Ci0gICAgcmV0dXJuIChjIHwgMHgyMCkgPT0gbG93ZXJjYXNlTGV0dGVyOwotfQotCiB2b2lkIEtV
Ukw6OnBhcnNlKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewogICAgIGNoZWNrRW5jb2RlZFN0cmlu
ZyhzdHJpbmcpOwpAQCAtMTEwMCw2ICsxMDk1LDM0IEBAIHZvaWQgS1VSTDo6cGFyc2UoY29uc3Qg
U3RyaW5nJiBzdHJpbmcpCiAgICAgcGFyc2UoYnVmZmVyLmRhdGEoKSwgJnN0cmluZyk7CiB9CiAK
K3N0YXRpYyBpbmxpbmUgYm9vbCBtYXRjaExldHRlcihjaGFyIGMsIGNoYXIgbG93ZXJjYXNlTGV0
dGVyKQoreworICAgIHJldHVybiAoYyB8IDB4MjApID09IGxvd2VyY2FzZUxldHRlcjsKK30KKwor
c3RhdGljIGlubGluZSBib29sIG1hdGNoZXNQcm90b2NvbChjb25zdCBjaGFyKiB1cmwsIHNpemVf
dCBzY2hlbWVFbmQsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpCit7CisgICAgaWYgKHNjaGVtZUVu
ZCAhPSBwcm90b2NvbC5sZW5ndGgoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVy
biBlcXVhbElnbm9yaW5nQ2FzZShwcm90b2NvbC5jaGFyYWN0ZXJzKCksIHVybCwgc2NoZW1lRW5k
KTsKK30KKworLy8gQ2F1dGlvbjogdGhpcyBkb2VzIG5vdCBib3VuZHMgY2hlY2sgYnVmZmVyLgor
c3RhdGljIHZvaWQgYXBwZW5kKGNoYXIqJiBidWZmZXIsIGNvbnN0IGNoYXIqIHN0clB0ciwgc2l6
ZV90IGxlbmd0aCkKK3sKKyAgICBjb25zdCBjaGFyKiBzdHJFbmRQdHIgPSBzdHJQdHIgKyBsZW5n
dGg7CisgICAgd2hpbGUgKHN0clB0ciA8IHN0ckVuZFB0cikKKyAgICAgICAgKmJ1ZmZlcisrID0g
KnN0clB0cisrOworfQorCisvLyBDYXV0aW9uOiB0aGlzIGRvZXMgbm90IGJvdW5kcyBjaGVjayBi
dWZmZXIuCitzdGF0aWMgdm9pZCBhcHBlbmRMb3dlcmVkKGNoYXIqJiBidWZmZXIsIGNvbnN0IGNo
YXIqIHN0clB0ciwgc2l6ZV90IGxlbmd0aCkKK3sKKyAgICBjb25zdCBjaGFyKiBzdHJFbmRQdHIg
PSBzdHJQdHIgKyBsZW5ndGg7CisgICAgd2hpbGUgKHN0clB0ciA8IHN0ckVuZFB0cikKKyAgICAg
ICAgKmJ1ZmZlcisrID0gdG9BU0NJSUxvd2VyKCpzdHJQdHIrKyk7Cit9CisKIHZvaWQgS1VSTDo6
cGFyc2UoY29uc3QgY2hhciogdXJsLCBjb25zdCBTdHJpbmcqIG9yaWdpbmFsU3RyaW5nKQogewog
ICAgIGlmICghdXJsIHx8IHVybFswXSA9PSAnXDAnKSB7CkBAIC0xMTM3LDExICsxMTYwLDggQEAg
dm9pZCBLVVJMOjpwYXJzZShjb25zdCBjaGFyKiB1cmwsIGNvbnN0IFN0cmluZyogb3JpZ2luYWxT
dHJpbmcpCiAKICAgICBib29sIGhpZXJhcmNoaWNhbCA9IHVybFtzY2hlbWVFbmQgKyAxXSA9PSAn
Lyc7CiAKLSAgICBib29sIGlzRmlsZSA9IHNjaGVtZUVuZCA9PSA0Ci0gICAgICAgICYmIG1hdGNo
TGV0dGVyKHVybFswXSwgJ2YnKQotICAgICAgICAmJiBtYXRjaExldHRlcih1cmxbMV0sICdpJykK
LSAgICAgICAgJiYgbWF0Y2hMZXR0ZXIodXJsWzJdLCAnbCcpCi0gICAgICAgICYmIG1hdGNoTGV0
dGVyKHVybFszXSwgJ2UnKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgZmlsZVBy
b3RvY29sLCAoImZpbGUiKSk7CisgICAgYm9vbCBpc0ZpbGUgPSBtYXRjaGVzUHJvdG9jb2wodXJs
LCBzY2hlbWVFbmQsIGZpbGVQcm90b2NvbCk7CiAKICAgICBtX3Byb3RvY29sSW5IVFRQRmFtaWx5
ID0gbWF0Y2hMZXR0ZXIodXJsWzBdLCAnaCcpCiAgICAgICAgICYmIG1hdGNoTGV0dGVyKHVybFsx
XSwgJ3QnKQpAQCAtMTE0OSw2ICsxMTY5LDEyIEBAIHZvaWQgS1VSTDo6cGFyc2UoY29uc3QgY2hh
ciogdXJsLCBjb25zdCBTdHJpbmcqIG9yaWdpbmFsU3RyaW5nKQogICAgICAgICAmJiBtYXRjaExl
dHRlcih1cmxbM10sICdwJykKICAgICAgICAgJiYgKHVybFs0XSA9PSAnOicgfHwgKG1hdGNoTGV0
dGVyKHVybFs0XSwgJ3MnKSAmJiB1cmxbNV0gPT0gJzonKSk7CiAKKyAgICAvLyBGSVhNRTogVGhp
cyBzaG91bGQgYmUgc29tZSBzb3J0IG9mIFBMQVRGT1JNKEFQUExFKSwgYnV0IHRoYXQgZG9lc24n
dCBleGlzdCB5ZXQuCisjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShXSU4pCisgICAgREVG
SU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHNhZmFyaUV4dGVuc2lvblByb3RvY29sLCAoInNhZmFy
aS1leHRlbnNpb24iKSk7CisgICAgYm9vbCBpc1NhZmFyaUV4dGVuc2lvbiA9IG1hdGNoZXNQcm90
b2NvbCh1cmwsIHNjaGVtZUVuZCwgc2FmYXJpRXh0ZW5zaW9uUHJvdG9jb2wpOworI2VuZGlmCisK
ICAgICBpZiAoaGllcmFyY2hpY2FsICYmIHVybFtzY2hlbWVFbmQgKyAyXSA9PSAnLycpIHsKICAg
ICAgICAgLy8gVGhlIHBhcnQgYWZ0ZXIgdGhlIHNjaGVtZSBpcyBlaXRoZXIgYSBuZXRfcGF0aCBv
ciBhbiBhYnNfcGF0aCB3aG9zZSBmaXJzdCBwYXRoIHNlZ21lbnQgaXMgZW1wdHkuCiAgICAgICAg
IC8vIEF0dGVtcHQgdG8gZmluZCBhbiBhdXRob3JpdHkuCkBAIC0xMjcwLDEzICsxMjk2LDEwIEBA
IHZvaWQgS1VSTDo6cGFyc2UoY29uc3QgY2hhciogdXJsLCBjb25zdCBTdHJpbmcqIG9yaWdpbmFs
U3RyaW5nKQogCiAgICAgVmVjdG9yPGNoYXIsIDQwOTY+IGJ1ZmZlcihmcmFnbWVudEVuZCAqIDMg
KyAxKTsKIAotICAgIGNoYXIgKnAgPSBidWZmZXIuZGF0YSgpOwotICAgIGNvbnN0IGNoYXIgKnN0
clB0ciA9IHVybDsKKyAgICBjaGFyKiBwID0gYnVmZmVyLmRhdGEoKTsKIAogICAgIC8vIGNvcHkg
aW4gdGhlIHNjaGVtZQotICAgIGNvbnN0IGNoYXIgKnNjaGVtZUVuZFB0ciA9IHVybCArIHNjaGVt
ZUVuZDsKLSAgICB3aGlsZSAoc3RyUHRyIDwgc2NoZW1lRW5kUHRyKQotICAgICAgICAqcCsrID0g
dG9BU0NJSUxvd2VyKCpzdHJQdHIrKyk7CisgICAgYXBwZW5kTG93ZXJlZChwLCB1cmwsIHNjaGVt
ZUVuZCk7CiAgICAgbV9zY2hlbWVFbmQgPSBwIC0gYnVmZmVyLmRhdGEoKTsKIAogICAgIGJvb2wg
aG9zdElzTG9jYWxIb3N0ID0gcG9ydEVuZCAtIHVzZXJTdGFydCA9PSA5CkBAIC0xMzA2LDE5ICsx
MzI5LDE1IEBAIHZvaWQgS1VSTDo6cGFyc2UoY29uc3QgY2hhciogdXJsLCBjb25zdCBTdHJpbmcq
IG9yaWdpbmFsU3RyaW5nKQogICAgICAgICBtX3VzZXJTdGFydCA9IHAgLSBidWZmZXIuZGF0YSgp
OwogCiAgICAgICAgIC8vIGNvcHkgaW4gdGhlIHVzZXIKLSAgICAgICAgc3RyUHRyID0gdXJsICsg
dXNlclN0YXJ0OwotICAgICAgICBjb25zdCBjaGFyKiB1c2VyRW5kUHRyID0gdXJsICsgdXNlckVu
ZDsKLSAgICAgICAgd2hpbGUgKHN0clB0ciA8IHVzZXJFbmRQdHIpCi0gICAgICAgICAgICAqcCsr
ID0gKnN0clB0cisrOworICAgICAgICBjb25zdCBjaGFyKiB1c2VyUHRyID0gdXJsICsgdXNlclN0
YXJ0OworICAgICAgICBhcHBlbmQocCwgdXNlclB0ciwgdXNlckVuZCAtIHVzZXJTdGFydCk7CiAg
ICAgICAgIG1fdXNlckVuZCA9IHAgLSBidWZmZXIuZGF0YSgpOwogCiAgICAgICAgIC8vIGNvcHkg
aW4gdGhlIHBhc3N3b3JkCiAgICAgICAgIGlmIChwYXNzd29yZEVuZCAhPSBwYXNzd29yZFN0YXJ0
KSB7CiAgICAgICAgICAgICAqcCsrID0gJzonOwotICAgICAgICAgICAgc3RyUHRyID0gdXJsICsg
cGFzc3dvcmRTdGFydDsKLSAgICAgICAgICAgIGNvbnN0IGNoYXIqIHBhc3N3b3JkRW5kUHRyID0g
dXJsICsgcGFzc3dvcmRFbmQ7Ci0gICAgICAgICAgICB3aGlsZSAoc3RyUHRyIDwgcGFzc3dvcmRF
bmRQdHIpCi0gICAgICAgICAgICAgICAgKnArKyA9ICpzdHJQdHIrKzsKKyAgICAgICAgICAgIGNv
bnN0IGNoYXIqIHBhc3N3b3JkUHRyID0gdXJsICsgcGFzc3dvcmRTdGFydDsKKyAgICAgICAgICAg
IGFwcGVuZChwLCBwYXNzd29yZFB0ciwgcGFzc3dvcmRFbmQgLSBwYXNzd29yZFN0YXJ0KTsKICAg
ICAgICAgfQogICAgICAgICBtX3Bhc3N3b3JkRW5kID0gcCAtIGJ1ZmZlci5kYXRhKCk7CiAKQEAg
LTEzMjgsMjAgKzEzNDcsMjQgQEAgdm9pZCBLVVJMOjpwYXJzZShjb25zdCBjaGFyKiB1cmwsIGNv
bnN0IFN0cmluZyogb3JpZ2luYWxTdHJpbmcpCiAKICAgICAgICAgLy8gY29weSBpbiB0aGUgaG9z
dCwgZXhjZXB0IGluIHRoZSBjYXNlIG9mIGEgZmlsZSBVUkwgd2l0aCBhdXRob3JpdHk9ImxvY2Fs
aG9zdCIKICAgICAgICAgaWYgKCEoaXNGaWxlICYmIGhvc3RJc0xvY2FsSG9zdCAmJiAhaGF2ZU5v
bkhvc3RBdXRob3JpdHlQYXJ0KSkgewotICAgICAgICAgICAgc3RyUHRyID0gdXJsICsgaG9zdFN0
YXJ0OwotICAgICAgICAgICAgY29uc3QgY2hhciogaG9zdEVuZFB0ciA9IHVybCArIGhvc3RFbmQ7
Ci0gICAgICAgICAgICB3aGlsZSAoc3RyUHRyIDwgaG9zdEVuZFB0cikKLSAgICAgICAgICAgICAg
ICAqcCsrID0gdG9BU0NJSUxvd2VyKCpzdHJQdHIrKyk7CisgICAgICAgICAgICBjb25zdCBjaGFy
KiBob3N0UHRyID0gdXJsICsgaG9zdFN0YXJ0OworICAgICAgICAgICAgc2l6ZV90IGhvc3RMZW5n
dGggPSBob3N0RW5kIC0gaG9zdFN0YXJ0OworI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0o
V0lOKQorICAgICAgICAgICAgLy8gc2FmYXJpLWV4dGVuc2lvbjogaG9zdCBjb250ZW50cyBhcmUg
Y2FzZSBzZW5zaXRpdmUgKGluIHZpb2xhdGlvbiBvZiBSRkMgMjM5NikuCisgICAgICAgICAgICAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQyNzEKKyAgICAgICAg
ICAgIGlmIChpc1NhZmFyaUV4dGVuc2lvbikKKyAgICAgICAgICAgICAgICBhcHBlbmQocCwgaG9z
dFB0ciwgaG9zdExlbmd0aCk7CisgICAgICAgICAgICBlbHNlCisjZW5kaWYKKyAgICAgICAgICAg
ICAgICBhcHBlbmRMb3dlcmVkKHAsIGhvc3RQdHIsIGhvc3RMZW5ndGgpOwogICAgICAgICB9CiAg
ICAgICAgIG1faG9zdEVuZCA9IHAgLSBidWZmZXIuZGF0YSgpOwogCiAgICAgICAgIC8vIGNvcHkg
aW4gdGhlIHBvcnQKICAgICAgICAgaWYgKGhvc3RFbmQgIT0gcG9ydFN0YXJ0KSB7CiAgICAgICAg
ICAgICAqcCsrID0gJzonOwotICAgICAgICAgICAgc3RyUHRyID0gdXJsICsgcG9ydFN0YXJ0Owot
ICAgICAgICAgICAgY29uc3QgY2hhciAqcG9ydEVuZFB0ciA9IHVybCArIHBvcnRFbmQ7Ci0gICAg
ICAgICAgICB3aGlsZSAoc3RyUHRyIDwgcG9ydEVuZFB0cikKLSAgICAgICAgICAgICAgICAqcCsr
ID0gKnN0clB0cisrOworICAgICAgICAgICAgY29uc3QgY2hhciogcG9ydFB0ciA9IHVybCArIHBv
cnRTdGFydDsKKyAgICAgICAgICAgIGFwcGVuZChwLCBwb3J0UHRyLCBwb3J0RW5kIC0gcG9ydFN0
YXJ0KTsKICAgICAgICAgfQogICAgICAgICBtX3BvcnRFbmQgPSBwIC0gYnVmZmVyLmRhdGEoKTsK
ICAgICB9IGVsc2UK
</data>
<flag name="review"
          id="73763"
          type_id="1"
          status="-"
          setter="timothy"
    />
          </attachment>
      

    </bug>

</bugzilla>