<?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>30033</bug_id>
          
          <creation_ts>2009-10-02 16:23:56 -0700</creation_ts>
          <short_desc>[chromium] DateExtension has reliability bot crashes</short_desc>
          <delta_ts>2009-10-05 22:28:24 -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>WebCore JavaScript</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="John Abd-El-Malek">jam</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>152017</commentid>
    <comment_count>0</comment_count>
    <who name="John Abd-El-Malek">jam</who>
    <bug_when>2009-10-02 16:23:56 -0700</bug_when>
    <thetext>See http://code.google.com/p/chromium/issues/detail?id=23043

Mads helped me track this down, looks like the weak persistent handle approach is problematic since the JS function has no one else grabbing a reference to it, so it can be destroyed during GC when the other JS enableSleepDetection function pointers are being called.  This leads to problem since during iteration the vector can change.

A simpler solution is to add the function pointer as a hidden value on the Date constructor.  This patch achieves that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>152021</commentid>
    <comment_count>1</comment_count>
      <attachid>40557</attachid>
    <who name="John Abd-El-Malek">jam</who>
    <bug_when>2009-10-02 16:32:18 -0700</bug_when>
    <thetext>Created attachment 40557
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>152335</commentid>
    <comment_count>2</comment_count>
      <attachid>40557</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-10-05 10:11:45 -0700</bug_when>
    <thetext>Comment on attachment 40557
Proposed patch

Please use V8HiddenPropertyName to avoid hidden property name collisions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>152348</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-10-05 10:44:49 -0700</bug_when>
    <thetext>Also, we need a test.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>152350</commentid>
    <comment_count>4</comment_count>
      <attachid>40642</attachid>
    <who name="John Abd-El-Malek">jam</who>
    <bug_when>2009-10-05 10:51:22 -0700</bug_when>
    <thetext>Created attachment 40642
Updated per review comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>152356</commentid>
    <comment_count>5</comment_count>
    <who name="John Abd-El-Malek">jam</who>
    <bug_when>2009-10-05 10:55:20 -0700</bug_when>
    <thetext>This code is already tested by slow_unload_handler.html.  The crash happened on the reliability bot sporadically, and I couldn&apos;t repro it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>152359</commentid>
    <comment_count>6</comment_count>
      <attachid>40642</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-10-05 10:57:53 -0700</bug_when>
    <thetext>Comment on attachment 40642
Updated per review comments

We should add a test for the crash.

+ v8::Local&lt;v8::Value&gt; result = V8Proxy::retrieve()-&gt;evaluate(WebCore::ScriptSourceCode(&quot;Date&quot;), 0);

This seems overly complicated.  Why not just get the &quot;Date&quot; property of the context&apos;s global object?

Other than those two issue, this looks reasonable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>152361</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-10-05 10:58:36 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; This code is already tested by slow_unload_handler.html.  The crash happened on
&gt; the reliability bot sporadically, and I couldn&apos;t repro it.

Ah, didn&apos;t see this comment before.  Have you tried forcing a GC while running the test?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>152365</commentid>
    <comment_count>8</comment_count>
    <who name="John Abd-El-Malek">jam</who>
    <bug_when>2009-10-05 11:01:18 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 40642 [details])
&gt; We should add a test for the crash.

This wasn&apos;t a reproducible crash.  I&apos;m open to suggestions on how this crash can be reproduced.

&gt; 
&gt; + v8::Local&lt;v8::Value&gt; result =
&gt; V8Proxy::retrieve()-&gt;evaluate(WebCore::ScriptSourceCode(&quot;Date&quot;), 0);
&gt; 
&gt; This seems overly complicated.  Why not just get the &quot;Date&quot; property of the
&gt; context&apos;s global object?

Mads had suggested this.  It&apos;s useful in case the page replaced the Date object, in which case we don&apos;t want to override getTime since they could have changed its functionality (i.e. added extra parameters).

&gt; 
&gt; Other than those two issue, this looks reasonable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>152423</commentid>
    <comment_count>9</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-10-05 13:10:30 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; This wasn&apos;t a reproducible crash.  I&apos;m open to suggestions on how this crash
&gt; can be reproduced.

Did you try running GC explicitly at an opportune moment?  I think there&apos;s a function to force GC around somewhere in LayoutTests.

&gt; &gt; + v8::Local&lt;v8::Value&gt; result =
&gt; &gt; V8Proxy::retrieve()-&gt;evaluate(WebCore::ScriptSourceCode(&quot;Date&quot;), 0);
&gt; &gt; 
&gt; &gt; This seems overly complicated.  Why not just get the &quot;Date&quot; property of the
&gt; &gt; context&apos;s global object?
&gt; 
&gt; Mads had suggested this.  It&apos;s useful in case the page replaced the Date
&gt; object, in which case we don&apos;t want to override getTime since they could have
&gt; changed its functionality (i.e. added extra parameters).

How does this solve that problem?  Won&apos;t evaling &quot;Date&quot; just give you the modified object?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>152433</commentid>
    <comment_count>10</comment_count>
    <who name="John Abd-El-Malek">jam</who>
    <bug_when>2009-10-05 13:31:30 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; This wasn&apos;t a reproducible crash.  I&apos;m open to suggestions on how this crash
&gt; &gt; can be reproduced.
&gt; 
&gt; Did you try running GC explicitly at an opportune moment?  I think there&apos;s a
&gt; function to force GC around somewhere in LayoutTests.

Yeah I tried that, but the crash only happens if GC happens during the call to the enableSleepDetection function that&apos;s in the closure.  Trying to simulate gc in the unload handlers themselves doesn&apos;t trigger this.

&gt; 
&gt; &gt; &gt; + v8::Local&lt;v8::Value&gt; result =
&gt; &gt; &gt; V8Proxy::retrieve()-&gt;evaluate(WebCore::ScriptSourceCode(&quot;Date&quot;), 0);
&gt; &gt; &gt; 
&gt; &gt; &gt; This seems overly complicated.  Why not just get the &quot;Date&quot; property of the
&gt; &gt; &gt; context&apos;s global object?
&gt; &gt; 
&gt; &gt; Mads had suggested this.  It&apos;s useful in case the page replaced the Date
&gt; &gt; object, in which case we don&apos;t want to override getTime since they could have
&gt; &gt; changed its functionality (i.e. added extra parameters).
&gt; 
&gt; How does this solve that problem?  Won&apos;t evaling &quot;Date&quot; just give you the
&gt; modified object?

It prevents this problem because the modified &quot;Date&quot; object won&apos;t have the hidden property on it, so the code will early return.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>152490</commentid>
    <comment_count>11</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-10-05 15:27:44 -0700</bug_when>
    <thetext>&gt; &gt; &gt; &gt; This seems overly complicated.  Why not just get the &quot;Date&quot; property of the
&gt; &gt; &gt; &gt; context&apos;s global object?
&gt; 
&gt; It prevents this problem because the modified &quot;Date&quot; object won&apos;t have the
&gt; hidden property on it, so the code will early return.

Oh, I&apos;m just saying that you replace the &quot;eval the string Date&quot; code with &quot;get the Date property of the global object&quot;.  I agree that you should continue to store the hidden property on the Date object itself.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>152568</commentid>
    <comment_count>12</comment_count>
      <attachid>40684</attachid>
    <who name="John Abd-El-Malek">jam</who>
    <bug_when>2009-10-05 21:38:17 -0700</bug_when>
    <thetext>Created attachment 40684
Updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>152572</commentid>
    <comment_count>13</comment_count>
      <attachid>40684</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-10-05 21:45:57 -0700</bug_when>
    <thetext>Comment on attachment 40684
Updated patch

Thanks John.

Normally we check the result of V8Proxy::retrieve()-&gt;context() to see if the context is empty (e.g., because JavaScript is disabled).  I don&apos;t think we can get into that situation here, however.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>152573</commentid>
    <comment_count>14</comment_count>
      <attachid>40684</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-10-05 21:48:30 -0700</bug_when>
    <thetext>Comment on attachment 40684
Updated patch

Rejecting patch 40684 from commit-queue.

Patch https://bugs.webkit.org/attachment.cgi?id=40684 from bug 30033 failed to download and apply.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>152575</commentid>
    <comment_count>15</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-10-05 21:49:34 -0700</bug_when>
    <thetext>I&apos;ll land this by hand.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>152576</commentid>
    <comment_count>16</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-10-05 21:55:23 -0700</bug_when>
    <thetext>Committed r49148: &lt;http://trac.webkit.org/changeset/49148&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>152582</commentid>
    <comment_count>17</comment_count>
    <who name="John Abd-El-Malek">jam</who>
    <bug_when>2009-10-05 22:23:51 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; Committed r49148: &lt;http://trac.webkit.org/changeset/49148&gt;

Thanks, btw for future reference I&apos;m a committer so I don&apos;t need to burden anyone anymore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>152585</commentid>
    <comment_count>18</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-10-05 22:28:24 -0700</bug_when>
    <thetext>&gt; Thanks, btw for future reference I&apos;m a committer so I don&apos;t need to burden
&gt; anyone anymore.

Ah, I knew that, but forgot.  You might want to add yourself to this page:

http://trac.webkit.org/wiki/WebKit%20Team

In any case, I knew what the merge conflict was because I r+ed the conflicting change, so it was easy for me to fix.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>40557</attachid>
            <date>2009-10-02 16:32:18 -0700</date>
            <delta_ts>2009-10-05 10:51:22 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>date.txt</filename>
            <type>text/plain</type>
            <size>6359</size>
            <attacher name="John Abd-El-Malek">jam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0OTA1NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjAgQEAKKzIwMDktMTAtMDIgIEpvaG4gQWJkLUVsLU1hbGVrICA8amFtQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBGaXggcmVsaWFibGl0eSBib3QgY3Jhc2ggaW4gRGF0ZUV4dGVuc2lvbi4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMwMDMzCisKKyAgICAgICAgVGhl
cmUgd2VyZSBhIGZldyBwcm9ibGVtcyB1c2luZyB0aGUgd2VhayBwZXJzaXN0ZW50IHBvaW50ZXJz
IGJlY2F1c2Ugbm8gb25lIGVsc2UgaGFkIGEKKyAgICAgICAgaGFuZGxlIHRvIHRoZW0uICBUaGUg
bmV3IGFwcHJvYWNoIHN0b3JlcyB0aGVtIGFzIGEgaGlkZGVuIHZhbHVlIG9uIHRoZSBEYXRlIGNv
bnN0cnVjdG9yLgorCisgICAgICAgICogYmluZGluZ3MvdjgvRGF0ZUV4dGVuc2lvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEYXRlRXh0ZW5zaW9uOjpzZXRBbGxvd1NsZWVwKToKKyAgICAgICAg
KFdlYkNvcmU6OkRhdGVFeHRlbnNpb246OkdldE5hdGl2ZUZ1bmN0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGVFeHRlbnNpb246OlNldHVwKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGVFeHRl
bnNpb246Ok9uU2xlZXBEZXRlY3RlZCk6CisgICAgICAgICogYmluZGluZ3MvdjgvRGF0ZUV4dGVu
c2lvbi5oOgorCiAyMDA5LTEwLTAyICBKb2NlbHluIFR1cmNvdHRlICA8am9jZWx5bi50dXJjb3R0
ZUBub2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgVG9yIEFybmUgVmVzdGLDuC4KSW5k
ZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvRGF0ZUV4dGVuc2lvbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9iaW5kaW5ncy92OC9EYXRlRXh0ZW5zaW9uLmNwcAkocmV2aXNpb24gNDkwNTMpCisr
KyBXZWJDb3JlL2JpbmRpbmdzL3Y4L0RhdGVFeHRlbnNpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01Niw5ICs1Niw5IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBkYXRlRXh0ZW5zaW9uU2NyaXB0ID0K
ICAgICAiICAgICAgRGF0ZS5wcm90b3R5cGUuZ2V0VGltZSA9IG9yaWdfZ2V0VGltZTsiCiAgICAg
IiAgICB9IgogICAgICIgIH07IgorICAgICIgIG5hdGl2ZSBmdW5jdGlvbiBTZXR1cCgpOyIKICAg
ICAiICBuYXRpdmUgZnVuY3Rpb24gT25TbGVlcERldGVjdGVkKCk7IgotICAgICIgIG5hdGl2ZSBm
dW5jdGlvbiBHaXZlRW5hYmxlU2xlZXBEZXRlY3Rpb25GdW5jdGlvbigpOyIKLSAgICAiICBHaXZl
RW5hYmxlU2xlZXBEZXRlY3Rpb25GdW5jdGlvbihlbmFibGVTbGVlcERldGVjdGlvbik7IgorICAg
ICIgIFNldHVwKERhdGUsIGVuYWJsZVNsZWVwRGV0ZWN0aW9uKTsiCiAgICAgIn0pKCkiOwogCiBE
YXRlRXh0ZW5zaW9uOjpEYXRlRXh0ZW5zaW9uKCkgOiB2ODo6RXh0ZW5zaW9uKGRhdGVFeHRlbnNp
b25OYW1lLCBkYXRlRXh0ZW5zaW9uU2NyaXB0KQpAQCAtNzQsNTcgKzc0LDQ5IEBAIERhdGVFeHRl
bnNpb24qIERhdGVFeHRlbnNpb246OmdldCgpCiAKIHZvaWQgRGF0ZUV4dGVuc2lvbjo6c2V0QWxs
b3dTbGVlcChib29sIGFsbG93KQogeworICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHJlc3VsdCA9
IFY4UHJveHk6OnJldHJpZXZlKCktPmV2YWx1YXRlKFdlYkNvcmU6OlNjcmlwdFNvdXJjZUNvZGUo
IkRhdGUiKSwgMCk7CisgICAgaWYgKHJlc3VsdC5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsK
KworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gZGF0ZU9iamVjdCA9IHY4OjpIYW5kbGU8djg6
Ok9iamVjdD46OkNhc3QocmVzdWx0KTsKKyAgICBpZiAoZGF0ZU9iamVjdC5Jc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBzbGVlcEZ1bmN0aW9u
U3ltYm9sID0gdjg6OlN0cmluZzo6TmV3U3ltYm9sKCJzbGVlcEZ1bmN0aW9uIik7CisgICAgdjg6
OkxvY2FsPHY4OjpWYWx1ZT4gc2xlZXBGdW5jdGlvbkhhbmRsZSA9IGRhdGVPYmplY3QtPkdldEhp
ZGRlblZhbHVlKHNsZWVwRnVuY3Rpb25TeW1ib2wpOworICAgIGlmIChzbGVlcEZ1bmN0aW9uSGFu
ZGxlLklzRW1wdHkoKSB8fCAhc2xlZXBGdW5jdGlvbkhhbmRsZS0+SXNGdW5jdGlvbigpKQorICAg
ICAgICByZXR1cm47CisKICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJndlsxXTsKICAgICBh
cmd2WzBdID0gdjg6OlN0cmluZzo6TmV3KGFsbG93ID8gImZhbHNlIiA6ICJ0cnVlIik7Ci0gICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBjYWxsRW5hYmxlU2xlZXBEZXRlY3Rpb25GdW5jdGlvblBv
aW50ZXJzLnNpemUoKTsgKytpKQotICAgICAgICBjYWxsRW5hYmxlU2xlZXBEZXRlY3Rpb25GdW5j
dGlvblBvaW50ZXJzW2ldLT5DYWxsKHY4OjpPYmplY3Q6Ok5ldygpLCAxLCBhcmd2KTsKKyAgICB2
ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj46OkNhc3Qoc2xlZXBGdW5jdGlvbkhhbmRsZSktPkNhbGwo
djg6Ok9iamVjdDo6TmV3KCksIDEsIGFyZ3YpOwogfQogCiB2ODo6SGFuZGxlPHY4OjpGdW5jdGlv
blRlbXBsYXRlPiBEYXRlRXh0ZW5zaW9uOjpHZXROYXRpdmVGdW5jdGlvbih2ODo6SGFuZGxlPHY4
OjpTdHJpbmc+IG5hbWUpCiB7Ci0gICAgaWYgKG5hbWUtPkVxdWFscyh2ODo6U3RyaW5nOjpOZXco
IkdpdmVFbmFibGVTbGVlcERldGVjdGlvbkZ1bmN0aW9uIikpKQotICAgICAgICByZXR1cm4gdjg6
OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhHaXZlRW5hYmxlU2xlZXBEZXRlY3Rpb25GdW5jdGlvbik7
CisgICAgaWYgKG5hbWUtPkVxdWFscyh2ODo6U3RyaW5nOjpOZXcoIlNldHVwIikpKQorICAgICAg
ICByZXR1cm4gdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhTZXR1cCk7CiAgICAgaWYgKG5hbWUt
PkVxdWFscyh2ODo6U3RyaW5nOjpOZXcoIk9uU2xlZXBEZXRlY3RlZCIpKSkKICAgICAgICAgcmV0
dXJuIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoT25TbGVlcERldGVjdGVkKTsKIAogICAgIHJl
dHVybiB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPigpOwogfQogCi12b2lkIERhdGVF
eHRlbnNpb246OndlYWtDYWxsYmFjayh2ODo6UGVyc2lzdGVudDx2ODo6VmFsdWU+IG9iamVjdCwg
dm9pZCogcGFyYW0pCi17Ci0gICAgRGF0ZUV4dGVuc2lvbiogZXh0ZW5zaW9uID0gZ2V0KCk7Ci0g
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBleHRlbnNpb24tPmNhbGxFbmFibGVTbGVlcERldGVj
dGlvbkZ1bmN0aW9uUG9pbnRlcnMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgaWYgKGV4dGVuc2lv
bi0+Y2FsbEVuYWJsZVNsZWVwRGV0ZWN0aW9uRnVuY3Rpb25Qb2ludGVyc1tpXSA9PSBvYmplY3Qp
IHsKLSAgICAgICAgICAgIG9iamVjdC5EaXNwb3NlKCk7Ci0gICAgICAgICAgICBleHRlbnNpb24t
PmNhbGxFbmFibGVTbGVlcERldGVjdGlvbkZ1bmN0aW9uUG9pbnRlcnMucmVtb3ZlKGkpOwotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfQotICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotfQotCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gRGF0ZUV4dGVuc2lvbjo6R2l2ZUVuYWJs
ZVNsZWVwRGV0ZWN0aW9uRnVuY3Rpb24oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3Y4OjpI
YW5kbGU8djg6OlZhbHVlPiBEYXRlRXh0ZW5zaW9uOjpTZXR1cChjb25zdCB2ODo6QXJndW1lbnRz
JiBhcmdzKQogewotICAgIGlmIChhcmdzLkxlbmd0aCgpICE9IDEgfHwgIWFyZ3NbMF0tPklzRnVu
Y3Rpb24oKSkKKyAgICBpZiAoYXJncy5MZW5ndGgoKSAhPSAyIHx8ICFhcmdzWzBdLT5Jc09iamVj
dCgpIHx8ICFhcmdzWzFdLT5Jc0Z1bmN0aW9uKCkpCiAgICAgICAgIHJldHVybiB2ODo6VW5kZWZp
bmVkKCk7CiAKLSAgICAvLyBJZGVhbGx5LCB3ZSB3b3VsZCBnZXQgdGhlIEZyYW1lKiBoZXJlIGFu
ZCBhc3NvY2lhdGUgaXQgd2l0aCB0aGUgZnVuY3Rpb24gcG9pbnRlciwgc28gdGhhdAotICAgIC8v
IGVhY2ggdGltZSB3ZSBnbyBpbnRvIGFuIHVubG9hZCBoYW5kbGVyIHdlIGp1c3QgY2FsbCB0aGF0
IGZyYW1lJ3MgZnVuY3Rpb24uICBIb3dldmVyIHRoZXJlJ3MKLSAgICAvLyBubyB3YXkgdG8gZ2V0
IHRoZSBGcmFtZSogYXQgdGhpcyBwb2ludCwgc28gd2UganVzdCBzdG9yZSBhbGwgdGhlIGZ1bmN0
aW9uIHBvaW50ZXJzIGFuZCBjYWxsCi0gICAgLy8gdGhlbSBhbGwgZWFjaCB0aW1lLgotICAgIERh
dGVFeHRlbnNpb24qIGV4dGVuc2lvbiA9IGdldCgpOwotICAgIGV4dGVuc2lvbi0+Y2FsbEVuYWJs
ZVNsZWVwRGV0ZWN0aW9uRnVuY3Rpb25Qb2ludGVycy5hcHBlbmQoCi0gICAgICAgIHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvbj46Ok5ldyh2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj46OkNhc3Qo
YXJnc1swXSkpKTsKLSAgICBleHRlbnNpb24tPmNhbGxFbmFibGVTbGVlcERldGVjdGlvbkZ1bmN0
aW9uUG9pbnRlcnMubGFzdCgpLk1ha2VXZWFrKE5VTEwsIHdlYWtDYWxsYmFjayk7CisgICAgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiBkYXRlT2JqZWN0ID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6
Q2FzdChhcmdzWzBdKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4gZW5hYmxlU2xlZXBE
ZXRlY3Rpb25GdW5jdGlvbiA9IHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPjo6Q2FzdChhcmdzWzFd
KTsKKworICAgIHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBzbGVlcEZ1bmN0aW9uU3ltYm9sID0gdjg6
OlN0cmluZzo6TmV3U3ltYm9sKCJzbGVlcEZ1bmN0aW9uIik7CisgICAgZGF0ZU9iamVjdC0+U2V0
SGlkZGVuVmFsdWUoc2xlZXBGdW5jdGlvblN5bWJvbCwgZW5hYmxlU2xlZXBEZXRlY3Rpb25GdW5j
dGlvbik7CiAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIH0KIAogdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IERhdGVFeHRlbnNpb246Ok9uU2xlZXBEZXRlY3RlZChjb25zdCB2ODo6QXJndW1lbnRz
JikKIHsKLSAgICAvLyBBZnRlciB3ZSBjYWxsIFRlcm1pbmF0ZUV4ZWN1dGlvbigpLCB3ZSBjYW4n
dCBjYWxsIGJhY2sgaW50byBKYXZhU2NyaXB0IGFnYWluLCBzbwotICAgIC8vIHJlc2V0IGFsbCB0
aGUgb3RoZXIgZnJhbWVzIGZpcnN0LgotICAgIGdldCgpLT5zZXRBbGxvd1NsZWVwKHRydWUpOwot
CiAgICAgdjg6OlY4OjpUZXJtaW5hdGVFeGVjdXRpb24oKTsKICAgICByZXR1cm4gdjg6OlVuZGVm
aW5lZCgpOwogfQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9EYXRlRXh0ZW5zaW9uLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9EYXRlRXh0ZW5zaW9uLmgJKHJldmlzaW9u
IDQ5MDUzKQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9EYXRlRXh0ZW5zaW9uLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMzLDggKzMzLDYgQEAKIAogI2luY2x1ZGUgPHY4Lmg+CiAKLSNpbmNsdWRlICJW
ZWN0b3IuaCIKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBQcmV2ZW50ICJzbGVlcCIgY2Fs
bHMgaW4gdW5sb2FkIGhhbmRsZXJzLgpAQCAtNDYsMTIgKzQ0LDggQEAgcHVibGljOgogcHJpdmF0
ZToKICAgICBEYXRlRXh0ZW5zaW9uKCk7CiAgICAgdmlydHVhbCB2ODo6SGFuZGxlPHY4OjpGdW5j
dGlvblRlbXBsYXRlPiBHZXROYXRpdmVGdW5jdGlvbih2ODo6SGFuZGxlPHY4OjpTdHJpbmc+KTsK
LSAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IEdpdmVFbmFibGVTbGVlcERldGVjdGlv
bkZ1bmN0aW9uKGNvbnN0IHY4OjpBcmd1bWVudHMmKTsKKyAgICBzdGF0aWMgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IFNldHVwKGNvbnN0IHY4OjpBcmd1bWVudHMmKTsKICAgICBzdGF0aWMgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IE9uU2xlZXBEZXRlY3RlZChjb25zdCB2ODo6QXJndW1lbnRzJik7Ci0g
ICAgc3RhdGljIHZvaWQgd2Vha0NhbGxiYWNrKHY4OjpQZXJzaXN0ZW50PHY4OjpWYWx1ZT4gb2Jq
ZWN0LCB2b2lkKiBwYXJhbSk7Ci0KLSAgICB0eXBlZGVmIFdURjo6VmVjdG9yPHY4OjpQZXJzaXN0
ZW50PHY4OjpGdW5jdGlvbj4gPiBGdW5jdGlvblBvaW50ZXJzOwotICAgIEZ1bmN0aW9uUG9pbnRl
cnMgY2FsbEVuYWJsZVNsZWVwRGV0ZWN0aW9uRnVuY3Rpb25Qb2ludGVyczsKIAogICAgIHN0YXRp
YyBEYXRlRXh0ZW5zaW9uKiBleHRlbnNpb247CiB9Owo=
</data>
<flag name="review"
          id="21801"
          type_id="1"
          status="-"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>40642</attachid>
            <date>2009-10-05 10:51:22 -0700</date>
            <delta_ts>2009-10-05 21:38:17 -0700</delta_ts>
            <desc>Updated per review comments</desc>
            <filename>date2.txt</filename>
            <type>text/plain</type>
            <size>7738</size>
            <attacher name="John Abd-El-Malek">jam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0OTEwMSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjMgQEAKKzIwMDktMTAtMDUgIEpvaG4gQWJkLUVsLU1hbGVrICA8amFtQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBGaXggcmVsaWFibGl0eSBib3QgY3Jhc2ggaW4gRGF0ZUV4dGVuc2lvbi4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMwMDMzCisKKyAgICAgICAgVGhl
cmUgd2VyZSBhIGZldyBwcm9ibGVtcyB1c2luZyB0aGUgd2VhayBwZXJzaXN0ZW50IHBvaW50ZXJz
IGJlY2F1c2Ugbm8gb25lIGVsc2UgaGFkIGEKKyAgICAgICAgaGFuZGxlIHRvIHRoZW0uICBUaGUg
bmV3IGFwcHJvYWNoIHN0b3JlcyB0aGVtIGFzIGEgaGlkZGVuIHZhbHVlIG9uIHRoZSBEYXRlIGNv
bnN0cnVjdG9yLgorCisgICAgICAgICogYmluZGluZ3MvdjgvRGF0ZUV4dGVuc2lvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEYXRlRXh0ZW5zaW9uOjpzZXRBbGxvd1NsZWVwKToKKyAgICAgICAg
KFdlYkNvcmU6OkRhdGVFeHRlbnNpb246OkdldE5hdGl2ZUZ1bmN0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGVFeHRlbnNpb246OlNldHVwKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGVFeHRl
bnNpb246Ok9uU2xlZXBEZXRlY3RlZCk6CisgICAgICAgICogYmluZGluZ3MvdjgvRGF0ZUV4dGVu
c2lvbi5oOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4SGlkZGVuUHJvcGVydHlOYW1lLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlY4SGlkZGVuUHJvcGVydHlOYW1lOjpzbGVlcEZ1bmN0aW9uKToK
KyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEhpZGRlblByb3BlcnR5TmFtZS5oOgorCiAyMDA5LTEw
LTA1ICBCcmlhbiBXZWluc3RlaW4gIDxid2VpbnN0ZWluQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBUaW1vdGh5IEhhdGNoZXIuCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L0Rh
dGVFeHRlbnNpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvRGF0ZUV4
dGVuc2lvbi5jcHAJKHJldmlzaW9uIDQ5MDUzKQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9EYXRl
RXh0ZW5zaW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUg
IkRhdGVFeHRlbnNpb24uaCIKIAogI2luY2x1ZGUgIlY4UHJveHkuaCIKKyNpbmNsdWRlICJWOEhp
ZGRlblByb3BlcnR5TmFtZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTU2LDkgKzU3
LDkgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGRhdGVFeHRlbnNpb25TY3JpcHQgPQogICAgICIgICAg
ICBEYXRlLnByb3RvdHlwZS5nZXRUaW1lID0gb3JpZ19nZXRUaW1lOyIKICAgICAiICAgIH0iCiAg
ICAgIiAgfTsiCisgICAgIiAgbmF0aXZlIGZ1bmN0aW9uIFNldHVwKCk7IgogICAgICIgIG5hdGl2
ZSBmdW5jdGlvbiBPblNsZWVwRGV0ZWN0ZWQoKTsiCi0gICAgIiAgbmF0aXZlIGZ1bmN0aW9uIEdp
dmVFbmFibGVTbGVlcERldGVjdGlvbkZ1bmN0aW9uKCk7IgotICAgICIgIEdpdmVFbmFibGVTbGVl
cERldGVjdGlvbkZ1bmN0aW9uKGVuYWJsZVNsZWVwRGV0ZWN0aW9uKTsiCisgICAgIiAgU2V0dXAo
RGF0ZSwgZW5hYmxlU2xlZXBEZXRlY3Rpb24pOyIKICAgICAifSkoKSI7CiAKIERhdGVFeHRlbnNp
b246OkRhdGVFeHRlbnNpb24oKSA6IHY4OjpFeHRlbnNpb24oZGF0ZUV4dGVuc2lvbk5hbWUsIGRh
dGVFeHRlbnNpb25TY3JpcHQpCkBAIC03NCw1NyArNzUsNDcgQEAgRGF0ZUV4dGVuc2lvbiogRGF0
ZUV4dGVuc2lvbjo6Z2V0KCkKIAogdm9pZCBEYXRlRXh0ZW5zaW9uOjpzZXRBbGxvd1NsZWVwKGJv
b2wgYWxsb3cpCiB7CisgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gcmVzdWx0ID0gVjhQcm94eTo6
cmV0cmlldmUoKS0+ZXZhbHVhdGUoV2ViQ29yZTo6U2NyaXB0U291cmNlQ29kZSgiRGF0ZSIpLCAw
KTsKKyAgICBpZiAocmVzdWx0LklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiBkYXRlT2JqZWN0ID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6
Q2FzdChyZXN1bHQpOworICAgIGlmIChkYXRlT2JqZWN0LklzRW1wdHkoKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gc2xlZXBGdW5jdGlvbkhhbmRsZSA9IGRh
dGVPYmplY3QtPkdldEhpZGRlblZhbHVlKFY4SGlkZGVuUHJvcGVydHlOYW1lOjpzbGVlcEZ1bmN0
aW9uKCkpOworICAgIGlmIChzbGVlcEZ1bmN0aW9uSGFuZGxlLklzRW1wdHkoKSB8fCAhc2xlZXBG
dW5jdGlvbkhhbmRsZS0+SXNGdW5jdGlvbigpKQorICAgICAgICByZXR1cm47CisKICAgICB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gYXJndlsxXTsKICAgICBhcmd2WzBdID0gdjg6OlN0cmluZzo6TmV3
KGFsbG93ID8gImZhbHNlIiA6ICJ0cnVlIik7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBj
YWxsRW5hYmxlU2xlZXBEZXRlY3Rpb25GdW5jdGlvblBvaW50ZXJzLnNpemUoKTsgKytpKQotICAg
ICAgICBjYWxsRW5hYmxlU2xlZXBEZXRlY3Rpb25GdW5jdGlvblBvaW50ZXJzW2ldLT5DYWxsKHY4
OjpPYmplY3Q6Ok5ldygpLCAxLCBhcmd2KTsKKyAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj46
OkNhc3Qoc2xlZXBGdW5jdGlvbkhhbmRsZSktPkNhbGwodjg6Ok9iamVjdDo6TmV3KCksIDEsIGFy
Z3YpOwogfQogCiB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBEYXRlRXh0ZW5zaW9u
OjpHZXROYXRpdmVGdW5jdGlvbih2ODo6SGFuZGxlPHY4OjpTdHJpbmc+IG5hbWUpCiB7Ci0gICAg
aWYgKG5hbWUtPkVxdWFscyh2ODo6U3RyaW5nOjpOZXcoIkdpdmVFbmFibGVTbGVlcERldGVjdGlv
bkZ1bmN0aW9uIikpKQotICAgICAgICByZXR1cm4gdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhH
aXZlRW5hYmxlU2xlZXBEZXRlY3Rpb25GdW5jdGlvbik7CisgICAgaWYgKG5hbWUtPkVxdWFscyh2
ODo6U3RyaW5nOjpOZXcoIlNldHVwIikpKQorICAgICAgICByZXR1cm4gdjg6OkZ1bmN0aW9uVGVt
cGxhdGU6Ok5ldyhTZXR1cCk7CiAgICAgaWYgKG5hbWUtPkVxdWFscyh2ODo6U3RyaW5nOjpOZXco
Ik9uU2xlZXBEZXRlY3RlZCIpKSkKICAgICAgICAgcmV0dXJuIHY4OjpGdW5jdGlvblRlbXBsYXRl
OjpOZXcoT25TbGVlcERldGVjdGVkKTsKIAogICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpGdW5j
dGlvblRlbXBsYXRlPigpOwogfQogCi12b2lkIERhdGVFeHRlbnNpb246OndlYWtDYWxsYmFjayh2
ODo6UGVyc2lzdGVudDx2ODo6VmFsdWU+IG9iamVjdCwgdm9pZCogcGFyYW0pCi17Ci0gICAgRGF0
ZUV4dGVuc2lvbiogZXh0ZW5zaW9uID0gZ2V0KCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBleHRlbnNpb24tPmNhbGxFbmFibGVTbGVlcERldGVjdGlvbkZ1bmN0aW9uUG9pbnRlcnMuc2l6
ZSgpOyArK2kpIHsKLSAgICAgICAgaWYgKGV4dGVuc2lvbi0+Y2FsbEVuYWJsZVNsZWVwRGV0ZWN0
aW9uRnVuY3Rpb25Qb2ludGVyc1tpXSA9PSBvYmplY3QpIHsKLSAgICAgICAgICAgIG9iamVjdC5E
aXNwb3NlKCk7Ci0gICAgICAgICAgICBleHRlbnNpb24tPmNhbGxFbmFibGVTbGVlcERldGVjdGlv
bkZ1bmN0aW9uUG9pbnRlcnMucmVtb3ZlKGkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB9Ci0gICAgfQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi12ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gRGF0ZUV4dGVuc2lvbjo6R2l2ZUVuYWJsZVNsZWVwRGV0ZWN0aW9uRnVuY3Rpb24o
Y29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBEYXRlRXh0
ZW5zaW9uOjpTZXR1cChjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIGlmIChhcmdz
Lkxlbmd0aCgpICE9IDEgfHwgIWFyZ3NbMF0tPklzRnVuY3Rpb24oKSkKKyAgICBpZiAoYXJncy5M
ZW5ndGgoKSAhPSAyIHx8ICFhcmdzWzBdLT5Jc09iamVjdCgpIHx8ICFhcmdzWzFdLT5Jc0Z1bmN0
aW9uKCkpCiAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiAKLSAgICAvLyBJZGVhbGx5
LCB3ZSB3b3VsZCBnZXQgdGhlIEZyYW1lKiBoZXJlIGFuZCBhc3NvY2lhdGUgaXQgd2l0aCB0aGUg
ZnVuY3Rpb24gcG9pbnRlciwgc28gdGhhdAotICAgIC8vIGVhY2ggdGltZSB3ZSBnbyBpbnRvIGFu
IHVubG9hZCBoYW5kbGVyIHdlIGp1c3QgY2FsbCB0aGF0IGZyYW1lJ3MgZnVuY3Rpb24uICBIb3dl
dmVyIHRoZXJlJ3MKLSAgICAvLyBubyB3YXkgdG8gZ2V0IHRoZSBGcmFtZSogYXQgdGhpcyBwb2lu
dCwgc28gd2UganVzdCBzdG9yZSBhbGwgdGhlIGZ1bmN0aW9uIHBvaW50ZXJzIGFuZCBjYWxsCi0g
ICAgLy8gdGhlbSBhbGwgZWFjaCB0aW1lLgotICAgIERhdGVFeHRlbnNpb24qIGV4dGVuc2lvbiA9
IGdldCgpOwotICAgIGV4dGVuc2lvbi0+Y2FsbEVuYWJsZVNsZWVwRGV0ZWN0aW9uRnVuY3Rpb25Q
b2ludGVycy5hcHBlbmQoCi0gICAgICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvbj46Ok5l
dyh2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj46OkNhc3QoYXJnc1swXSkpKTsKLSAgICBleHRlbnNp
b24tPmNhbGxFbmFibGVTbGVlcERldGVjdGlvbkZ1bmN0aW9uUG9pbnRlcnMubGFzdCgpLk1ha2VX
ZWFrKE5VTEwsIHdlYWtDYWxsYmFjayk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBkYXRl
T2JqZWN0ID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzWzBdKTsKKyAgICB2ODo6
SGFuZGxlPHY4OjpGdW5jdGlvbj4gZW5hYmxlU2xlZXBEZXRlY3Rpb25GdW5jdGlvbiA9IHY4OjpI
YW5kbGU8djg6OkZ1bmN0aW9uPjo6Q2FzdChhcmdzWzFdKTsKKworICAgIGRhdGVPYmplY3QtPlNl
dEhpZGRlblZhbHVlKFY4SGlkZGVuUHJvcGVydHlOYW1lOjpzbGVlcEZ1bmN0aW9uKCksIGVuYWJs
ZVNsZWVwRGV0ZWN0aW9uRnVuY3Rpb24pOwogICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiB9
CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBEYXRlRXh0ZW5zaW9uOjpPblNsZWVwRGV0ZWN0ZWQo
Y29uc3Qgdjg6OkFyZ3VtZW50cyYpCiB7Ci0gICAgLy8gQWZ0ZXIgd2UgY2FsbCBUZXJtaW5hdGVF
eGVjdXRpb24oKSwgd2UgY2FuJ3QgY2FsbCBiYWNrIGludG8gSmF2YVNjcmlwdCBhZ2Fpbiwgc28K
LSAgICAvLyByZXNldCBhbGwgdGhlIG90aGVyIGZyYW1lcyBmaXJzdC4KLSAgICBnZXQoKS0+c2V0
QWxsb3dTbGVlcCh0cnVlKTsKLQogICAgIHY4OjpWODo6VGVybWluYXRlRXhlY3V0aW9uKCk7CiAg
ICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIH0KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvdjgv
RGF0ZUV4dGVuc2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvRGF0ZUV4
dGVuc2lvbi5oCShyZXZpc2lvbiA0OTA1MykKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvRGF0ZUV4
dGVuc2lvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw4ICszMyw2IEBACiAKICNpbmNsdWRlIDx2
OC5oPgogCi0jaW5jbHVkZSAiVmVjdG9yLmgiCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8g
UHJldmVudCAic2xlZXAiIGNhbGxzIGluIHVubG9hZCBoYW5kbGVycy4KQEAgLTQ2LDEyICs0NCw4
IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgRGF0ZUV4dGVuc2lvbigpOwogICAgIHZpcnR1YWwg
djg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0TmF0aXZlRnVuY3Rpb24odjg6Okhh
bmRsZTx2ODo6U3RyaW5nPik7Ci0gICAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBHaXZl
RW5hYmxlU2xlZXBEZXRlY3Rpb25GdW5jdGlvbihjb25zdCB2ODo6QXJndW1lbnRzJik7CisgICAg
c3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBTZXR1cChjb25zdCB2ODo6QXJndW1lbnRzJik7
CiAgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBPblNsZWVwRGV0ZWN0ZWQoY29uc3Qg
djg6OkFyZ3VtZW50cyYpOwotICAgIHN0YXRpYyB2b2lkIHdlYWtDYWxsYmFjayh2ODo6UGVyc2lz
dGVudDx2ODo6VmFsdWU+IG9iamVjdCwgdm9pZCogcGFyYW0pOwotCi0gICAgdHlwZWRlZiBXVEY6
OlZlY3Rvcjx2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb24+ID4gRnVuY3Rpb25Qb2ludGVyczsK
LSAgICBGdW5jdGlvblBvaW50ZXJzIGNhbGxFbmFibGVTbGVlcERldGVjdGlvbkZ1bmN0aW9uUG9p
bnRlcnM7CiAKICAgICBzdGF0aWMgRGF0ZUV4dGVuc2lvbiogZXh0ZW5zaW9uOwogfTsKSW5kZXg6
IFdlYkNvcmUvYmluZGluZ3MvdjgvVjhIaWRkZW5Qcm9wZXJ0eU5hbWUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhIaWRkZW5Qcm9wZXJ0eU5hbWUuY3BwCShyZXZpc2lv
biA0OTA1MykKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhIaWRkZW5Qcm9wZXJ0eU5hbWUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01Nyw2ICs1NywxMiBAQCB2ODo6SGFuZGxlPHY4OjpTdHJpbmc+
IFY4SGlkZGVuUHJvcGVydHlOCiAgICAgcmV0dXJuICpzdHJpbmc7CiB9CiAKK3Y4OjpIYW5kbGU8
djg6OlN0cmluZz4gVjhIaWRkZW5Qcm9wZXJ0eU5hbWU6OnNsZWVwRnVuY3Rpb24oKQoreworICAg
IHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6U3RyaW5nPiogc3RyaW5nID0gY3JlYXRlU3RyaW5n
KCJXZWJDb3JlOjpWOEhpZGRlblByb3BlcnR5TmFtZTo6c2xlZXBGdW5jdGlvbiIpOworICAgIHJl
dHVybiAqc3RyaW5nOworfQorCiB2ODo6UGVyc2lzdGVudDx2ODo6U3RyaW5nPiogVjhIaWRkZW5Q
cm9wZXJ0eU5hbWU6OmNyZWF0ZVN0cmluZyhjb25zdCBjaGFyKiBrZXkpCiB7CiAgICAgdjg6Okhh
bmRsZVNjb3BlIHNjb3BlOwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9WOEhpZGRlblByb3Bl
cnR5TmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhIaWRkZW5Qcm9w
ZXJ0eU5hbWUuaAkocmV2aXNpb24gNDkwNTMpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SGlk
ZGVuUHJvcGVydHlOYW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDYgKzQxLDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6U3RyaW5nPiBpc29s
YXRlZFdvcmxkKCk7CiAgICAgICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpTdHJpbmc+IGxpc3Rl
bmVyKCk7CiAgICAgICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpTdHJpbmc+IGF0dHJpYnV0ZUxp
c3RlbmVyKCk7CisgICAgICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpTdHJpbmc+IHNsZWVwRnVu
Y3Rpb24oKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2
ODo6U3RyaW5nPiogY3JlYXRlU3RyaW5nKGNvbnN0IGNoYXIqIGtleSk7Cg==
</data>
<flag name="review"
          id="21884"
          type_id="1"
          status="-"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>40684</attachid>
            <date>2009-10-05 21:38:17 -0700</date>
            <delta_ts>2009-10-05 21:48:30 -0700</delta_ts>
            <desc>Updated patch</desc>
            <filename>date3.txt</filename>
            <type>text/plain</type>
            <size>7741</size>
            <attacher name="John Abd-El-Malek">jam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0OTEwMSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjMgQEAKKzIwMDktMTAtMDUgIEpvaG4gQWJkLUVsLU1hbGVrICA8amFtQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBGaXggcmVsaWFibGl0eSBib3QgY3Jhc2ggaW4gRGF0ZUV4dGVuc2lvbi4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMwMDMzCisKKyAgICAgICAgVGhl
cmUgd2VyZSBhIGZldyBwcm9ibGVtcyB1c2luZyB0aGUgd2VhayBwZXJzaXN0ZW50IHBvaW50ZXJz
IGJlY2F1c2Ugbm8gb25lIGVsc2UgaGFkIGEKKyAgICAgICAgaGFuZGxlIHRvIHRoZW0uICBUaGUg
bmV3IGFwcHJvYWNoIHN0b3JlcyB0aGVtIGFzIGEgaGlkZGVuIHZhbHVlIG9uIHRoZSBEYXRlIGNv
bnN0cnVjdG9yLgorCisgICAgICAgICogYmluZGluZ3MvdjgvRGF0ZUV4dGVuc2lvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEYXRlRXh0ZW5zaW9uOjpzZXRBbGxvd1NsZWVwKToKKyAgICAgICAg
KFdlYkNvcmU6OkRhdGVFeHRlbnNpb246OkdldE5hdGl2ZUZ1bmN0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGVFeHRlbnNpb246OlNldHVwKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGVFeHRl
bnNpb246Ok9uU2xlZXBEZXRlY3RlZCk6CisgICAgICAgICogYmluZGluZ3MvdjgvRGF0ZUV4dGVu
c2lvbi5oOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4SGlkZGVuUHJvcGVydHlOYW1lLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlY4SGlkZGVuUHJvcGVydHlOYW1lOjpzbGVlcEZ1bmN0aW9uKToK
KyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEhpZGRlblByb3BlcnR5TmFtZS5oOgorCiAyMDA5LTEw
LTA1ICBCcmlhbiBXZWluc3RlaW4gIDxid2VpbnN0ZWluQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBUaW1vdGh5IEhhdGNoZXIuCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L0Rh
dGVFeHRlbnNpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvRGF0ZUV4
dGVuc2lvbi5jcHAJKHJldmlzaW9uIDQ5MDUzKQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9EYXRl
RXh0ZW5zaW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUg
IkRhdGVFeHRlbnNpb24uaCIKIAogI2luY2x1ZGUgIlY4UHJveHkuaCIKKyNpbmNsdWRlICJWOEhp
ZGRlblByb3BlcnR5TmFtZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTU2LDkgKzU3
LDkgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGRhdGVFeHRlbnNpb25TY3JpcHQgPQogICAgICIgICAg
ICBEYXRlLnByb3RvdHlwZS5nZXRUaW1lID0gb3JpZ19nZXRUaW1lOyIKICAgICAiICAgIH0iCiAg
ICAgIiAgfTsiCisgICAgIiAgbmF0aXZlIGZ1bmN0aW9uIFNldHVwKCk7IgogICAgICIgIG5hdGl2
ZSBmdW5jdGlvbiBPblNsZWVwRGV0ZWN0ZWQoKTsiCi0gICAgIiAgbmF0aXZlIGZ1bmN0aW9uIEdp
dmVFbmFibGVTbGVlcERldGVjdGlvbkZ1bmN0aW9uKCk7IgotICAgICIgIEdpdmVFbmFibGVTbGVl
cERldGVjdGlvbkZ1bmN0aW9uKGVuYWJsZVNsZWVwRGV0ZWN0aW9uKTsiCisgICAgIiAgU2V0dXAo
RGF0ZSwgZW5hYmxlU2xlZXBEZXRlY3Rpb24pOyIKICAgICAifSkoKSI7CiAKIERhdGVFeHRlbnNp
b246OkRhdGVFeHRlbnNpb24oKSA6IHY4OjpFeHRlbnNpb24oZGF0ZUV4dGVuc2lvbk5hbWUsIGRh
dGVFeHRlbnNpb25TY3JpcHQpCkBAIC03NCw1NyArNzUsNDcgQEAgRGF0ZUV4dGVuc2lvbiogRGF0
ZUV4dGVuc2lvbjo6Z2V0KCkKIAogdm9pZCBEYXRlRXh0ZW5zaW9uOjpzZXRBbGxvd1NsZWVwKGJv
b2wgYWxsb3cpCiB7CisgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gcmVzdWx0ID0gVjhQcm94eTo6
cmV0cmlldmUoKS0+Y29udGV4dCgpLT5HbG9iYWwoKS0+R2V0KHY4OjpTdHJpbmc6Ok5ldygiRGF0
ZSIpKTsKKyAgICBpZiAocmVzdWx0LklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiBkYXRlT2JqZWN0ID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0
Pjo6Q2FzdChyZXN1bHQpOworICAgIGlmIChkYXRlT2JqZWN0LklzRW1wdHkoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gc2xlZXBGdW5jdGlvbkhhbmRsZSA9
IGRhdGVPYmplY3QtPkdldEhpZGRlblZhbHVlKFY4SGlkZGVuUHJvcGVydHlOYW1lOjpzbGVlcEZ1
bmN0aW9uKCkpOworICAgIGlmIChzbGVlcEZ1bmN0aW9uSGFuZGxlLklzRW1wdHkoKSB8fCAhc2xl
ZXBGdW5jdGlvbkhhbmRsZS0+SXNGdW5jdGlvbigpKQorICAgICAgICByZXR1cm47CisKICAgICB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJndlsxXTsKICAgICBhcmd2WzBdID0gdjg6OlN0cmluZzo6
TmV3KGFsbG93ID8gImZhbHNlIiA6ICJ0cnVlIik7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBjYWxsRW5hYmxlU2xlZXBEZXRlY3Rpb25GdW5jdGlvblBvaW50ZXJzLnNpemUoKTsgKytpKQot
ICAgICAgICBjYWxsRW5hYmxlU2xlZXBEZXRlY3Rpb25GdW5jdGlvblBvaW50ZXJzW2ldLT5DYWxs
KHY4OjpPYmplY3Q6Ok5ldygpLCAxLCBhcmd2KTsKKyAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlv
bj46OkNhc3Qoc2xlZXBGdW5jdGlvbkhhbmRsZSktPkNhbGwodjg6Ok9iamVjdDo6TmV3KCksIDEs
IGFyZ3YpOwogfQogCiB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBEYXRlRXh0ZW5z
aW9uOjpHZXROYXRpdmVGdW5jdGlvbih2ODo6SGFuZGxlPHY4OjpTdHJpbmc+IG5hbWUpCiB7Ci0g
ICAgaWYgKG5hbWUtPkVxdWFscyh2ODo6U3RyaW5nOjpOZXcoIkdpdmVFbmFibGVTbGVlcERldGVj
dGlvbkZ1bmN0aW9uIikpKQotICAgICAgICByZXR1cm4gdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5l
dyhHaXZlRW5hYmxlU2xlZXBEZXRlY3Rpb25GdW5jdGlvbik7CisgICAgaWYgKG5hbWUtPkVxdWFs
cyh2ODo6U3RyaW5nOjpOZXcoIlNldHVwIikpKQorICAgICAgICByZXR1cm4gdjg6OkZ1bmN0aW9u
VGVtcGxhdGU6Ok5ldyhTZXR1cCk7CiAgICAgaWYgKG5hbWUtPkVxdWFscyh2ODo6U3RyaW5nOjpO
ZXcoIk9uU2xlZXBEZXRlY3RlZCIpKSkKICAgICAgICAgcmV0dXJuIHY4OjpGdW5jdGlvblRlbXBs
YXRlOjpOZXcoT25TbGVlcERldGVjdGVkKTsKIAogICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpG
dW5jdGlvblRlbXBsYXRlPigpOwogfQogCi12b2lkIERhdGVFeHRlbnNpb246OndlYWtDYWxsYmFj
ayh2ODo6UGVyc2lzdGVudDx2ODo6VmFsdWU+IG9iamVjdCwgdm9pZCogcGFyYW0pCi17Ci0gICAg
RGF0ZUV4dGVuc2lvbiogZXh0ZW5zaW9uID0gZ2V0KCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBleHRlbnNpb24tPmNhbGxFbmFibGVTbGVlcERldGVjdGlvbkZ1bmN0aW9uUG9pbnRlcnMu
c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgaWYgKGV4dGVuc2lvbi0+Y2FsbEVuYWJsZVNsZWVwRGV0
ZWN0aW9uRnVuY3Rpb25Qb2ludGVyc1tpXSA9PSBvYmplY3QpIHsKLSAgICAgICAgICAgIG9iamVj
dC5EaXNwb3NlKCk7Ci0gICAgICAgICAgICBleHRlbnNpb24tPmNhbGxFbmFibGVTbGVlcERldGVj
dGlvbkZ1bmN0aW9uUG9pbnRlcnMucmVtb3ZlKGkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICB9Ci0gICAgfQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi12ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gRGF0ZUV4dGVuc2lvbjo6R2l2ZUVuYWJsZVNsZWVwRGV0ZWN0aW9uRnVuY3Rp
b24oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBEYXRl
RXh0ZW5zaW9uOjpTZXR1cChjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIGlmIChh
cmdzLkxlbmd0aCgpICE9IDEgfHwgIWFyZ3NbMF0tPklzRnVuY3Rpb24oKSkKKyAgICBpZiAoYXJn
cy5MZW5ndGgoKSAhPSAyIHx8ICFhcmdzWzBdLT5Jc09iamVjdCgpIHx8ICFhcmdzWzFdLT5Jc0Z1
bmN0aW9uKCkpCiAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiAKLSAgICAvLyBJZGVh
bGx5LCB3ZSB3b3VsZCBnZXQgdGhlIEZyYW1lKiBoZXJlIGFuZCBhc3NvY2lhdGUgaXQgd2l0aCB0
aGUgZnVuY3Rpb24gcG9pbnRlciwgc28gdGhhdAotICAgIC8vIGVhY2ggdGltZSB3ZSBnbyBpbnRv
IGFuIHVubG9hZCBoYW5kbGVyIHdlIGp1c3QgY2FsbCB0aGF0IGZyYW1lJ3MgZnVuY3Rpb24uICBI
b3dldmVyIHRoZXJlJ3MKLSAgICAvLyBubyB3YXkgdG8gZ2V0IHRoZSBGcmFtZSogYXQgdGhpcyBw
b2ludCwgc28gd2UganVzdCBzdG9yZSBhbGwgdGhlIGZ1bmN0aW9uIHBvaW50ZXJzIGFuZCBjYWxs
Ci0gICAgLy8gdGhlbSBhbGwgZWFjaCB0aW1lLgotICAgIERhdGVFeHRlbnNpb24qIGV4dGVuc2lv
biA9IGdldCgpOwotICAgIGV4dGVuc2lvbi0+Y2FsbEVuYWJsZVNsZWVwRGV0ZWN0aW9uRnVuY3Rp
b25Qb2ludGVycy5hcHBlbmQoCi0gICAgICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvbj46
Ok5ldyh2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj46OkNhc3QoYXJnc1swXSkpKTsKLSAgICBleHRl
bnNpb24tPmNhbGxFbmFibGVTbGVlcERldGVjdGlvbkZ1bmN0aW9uUG9pbnRlcnMubGFzdCgpLk1h
a2VXZWFrKE5VTEwsIHdlYWtDYWxsYmFjayk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBk
YXRlT2JqZWN0ID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzWzBdKTsKKyAgICB2
ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4gZW5hYmxlU2xlZXBEZXRlY3Rpb25GdW5jdGlvbiA9IHY4
OjpIYW5kbGU8djg6OkZ1bmN0aW9uPjo6Q2FzdChhcmdzWzFdKTsKKworICAgIGRhdGVPYmplY3Qt
PlNldEhpZGRlblZhbHVlKFY4SGlkZGVuUHJvcGVydHlOYW1lOjpzbGVlcEZ1bmN0aW9uKCksIGVu
YWJsZVNsZWVwRGV0ZWN0aW9uRnVuY3Rpb24pOwogICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7
CiB9CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBEYXRlRXh0ZW5zaW9uOjpPblNsZWVwRGV0ZWN0
ZWQoY29uc3Qgdjg6OkFyZ3VtZW50cyYpCiB7Ci0gICAgLy8gQWZ0ZXIgd2UgY2FsbCBUZXJtaW5h
dGVFeGVjdXRpb24oKSwgd2UgY2FuJ3QgY2FsbCBiYWNrIGludG8gSmF2YVNjcmlwdCBhZ2Fpbiwg
c28KLSAgICAvLyByZXNldCBhbGwgdGhlIG90aGVyIGZyYW1lcyBmaXJzdC4KLSAgICBnZXQoKS0+
c2V0QWxsb3dTbGVlcCh0cnVlKTsKLQogICAgIHY4OjpWODo6VGVybWluYXRlRXhlY3V0aW9uKCk7
CiAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIH0KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mv
djgvRGF0ZUV4dGVuc2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvRGF0
ZUV4dGVuc2lvbi5oCShyZXZpc2lvbiA0OTA1MykKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvRGF0
ZUV4dGVuc2lvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw4ICszMyw2IEBACiAKICNpbmNsdWRl
IDx2OC5oPgogCi0jaW5jbHVkZSAiVmVjdG9yLmgiCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Ly8gUHJldmVudCAic2xlZXAiIGNhbGxzIGluIHVubG9hZCBoYW5kbGVycy4KQEAgLTQ2LDEyICs0
NCw4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgRGF0ZUV4dGVuc2lvbigpOwogICAgIHZpcnR1
YWwgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0TmF0aXZlRnVuY3Rpb24odjg6
OkhhbmRsZTx2ODo6U3RyaW5nPik7Ci0gICAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBH
aXZlRW5hYmxlU2xlZXBEZXRlY3Rpb25GdW5jdGlvbihjb25zdCB2ODo6QXJndW1lbnRzJik7Cisg
ICAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBTZXR1cChjb25zdCB2ODo6QXJndW1lbnRz
Jik7CiAgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBPblNsZWVwRGV0ZWN0ZWQoY29u
c3Qgdjg6OkFyZ3VtZW50cyYpOwotICAgIHN0YXRpYyB2b2lkIHdlYWtDYWxsYmFjayh2ODo6UGVy
c2lzdGVudDx2ODo6VmFsdWU+IG9iamVjdCwgdm9pZCogcGFyYW0pOwotCi0gICAgdHlwZWRlZiBX
VEY6OlZlY3Rvcjx2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb24+ID4gRnVuY3Rpb25Qb2ludGVy
czsKLSAgICBGdW5jdGlvblBvaW50ZXJzIGNhbGxFbmFibGVTbGVlcERldGVjdGlvbkZ1bmN0aW9u
UG9pbnRlcnM7CiAKICAgICBzdGF0aWMgRGF0ZUV4dGVuc2lvbiogZXh0ZW5zaW9uOwogfTsKSW5k
ZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvVjhIaWRkZW5Qcm9wZXJ0eU5hbWUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhIaWRkZW5Qcm9wZXJ0eU5hbWUuY3BwCShyZXZp
c2lvbiA0OTA1MykKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhIaWRkZW5Qcm9wZXJ0eU5hbWUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw2ICs1NywxMiBAQCB2ODo6SGFuZGxlPHY4OjpTdHJp
bmc+IFY4SGlkZGVuUHJvcGVydHlOCiAgICAgcmV0dXJuICpzdHJpbmc7CiB9CiAKK3Y4OjpIYW5k
bGU8djg6OlN0cmluZz4gVjhIaWRkZW5Qcm9wZXJ0eU5hbWU6OnNsZWVwRnVuY3Rpb24oKQorewor
ICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6U3RyaW5nPiogc3RyaW5nID0gY3JlYXRlU3Ry
aW5nKCJXZWJDb3JlOjpWOEhpZGRlblByb3BlcnR5TmFtZTo6c2xlZXBGdW5jdGlvbiIpOworICAg
IHJldHVybiAqc3RyaW5nOworfQorCiB2ODo6UGVyc2lzdGVudDx2ODo6U3RyaW5nPiogVjhIaWRk
ZW5Qcm9wZXJ0eU5hbWU6OmNyZWF0ZVN0cmluZyhjb25zdCBjaGFyKiBrZXkpCiB7CiAgICAgdjg6
OkhhbmRsZVNjb3BlIHNjb3BlOwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9WOEhpZGRlblBy
b3BlcnR5TmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhIaWRkZW5Q
cm9wZXJ0eU5hbWUuaAkocmV2aXNpb24gNDkwNTMpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
SGlkZGVuUHJvcGVydHlOYW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDYgKzQxLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6U3RyaW5nPiBp
c29sYXRlZFdvcmxkKCk7CiAgICAgICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpTdHJpbmc+IGxp
c3RlbmVyKCk7CiAgICAgICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpTdHJpbmc+IGF0dHJpYnV0
ZUxpc3RlbmVyKCk7CisgICAgICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpTdHJpbmc+IHNsZWVw
RnVuY3Rpb24oKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVu
dDx2ODo6U3RyaW5nPiogY3JlYXRlU3RyaW5nKGNvbnN0IGNoYXIqIGtleSk7Cg==
</data>
<flag name="review"
          id="21937"
          type_id="1"
          status="+"
          setter="abarth"
    />
    <flag name="commit-queue"
          id="21939"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
      

    </bug>

</bugzilla>