<?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>57079</bug_id>
          
          <creation_ts>2011-03-24 21:57:08 -0700</creation_ts>
          <short_desc>DeleteSelectionCommand::removeNode tries to insert block placeholder in non-editable table cell positions</short_desc>
          <delta_ts>2011-03-31 02:09:08 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Benjamin (Ben) Kalman">kalman</reporter>
          <assigned_to name="Benjamin (Ben) Kalman">kalman</assigned_to>
          <cc>abarth</cc>
    
    <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>ojan</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>373306</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin (Ben) Kalman">kalman</who>
    <bug_when>2011-03-24 21:57:08 -0700</bug_when>
    <thetext>DeleteSelectionCommand::removeNode tries to insert block placeholder in non-editable table cell positions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373309</commentid>
    <comment_count>1</comment_count>
      <attachid>86881</attachid>
    <who name="Benjamin (Ben) Kalman">kalman</who>
    <bug_when>2011-03-24 22:06:00 -0700</bug_when>
    <thetext>Created attachment 86881
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373317</commentid>
    <comment_count>2</comment_count>
      <attachid>86881</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-03-24 22:28:37 -0700</bug_when>
    <thetext>Comment on attachment 86881
Patch

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

&gt; Source/WebCore/editing/DeleteSelectionCommand.cpp:346
&gt; +        Position firstEditablePositionInChild = firstEditablePositionInNode(child);
&gt; +        if (firstEditablePositionInChild.isNotNull())
&gt; +            return firstEditablePositionInChild;
&gt; +        child = child-&gt;nextSibling();

I don&apos;t think this function needs be recursive.  Can&apos;t you just traverseNextNode(node)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373318</commentid>
    <comment_count>3</comment_count>
      <attachid>86884</attachid>
    <who name="Benjamin (Ben) Kalman">kalman</who>
    <bug_when>2011-03-24 22:33:58 -0700</bug_when>
    <thetext>Created attachment 86884
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373322</commentid>
    <comment_count>4</comment_count>
      <attachid>86884</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-03-24 22:46:02 -0700</bug_when>
    <thetext>Comment on attachment 86884
Patch

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

&gt; LayoutTests/editing/execCommand/delete-table-with-empty-contents-expected.txt:1
&gt; +PASS

It&apos;ll be nice if you explain what this test is testing.

It&apos;ll be even nicer if you added some label next to each PASS/FAIL so that when a test fail, we can easily tell which one failed without having to count.
You can probably add a title attribute to each div and extract &amp; print that in runTestForContainer.

&gt; LayoutTests/editing/execCommand/delete-table-with-empty-contents.html:61
&gt; +  var console = document.getElementsByTagName(&apos;pre&apos;)[0];

No need to indent these.

&gt; LayoutTests/editing/execCommand/delete-table-with-empty-contents.html:75
&gt; +  Array.prototype.slice.call(document.getElementsByTagName(&apos;div&apos;)).forEach(runTestForContainer);

Ah, this is really neat.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373337</commentid>
    <comment_count>5</comment_count>
      <attachid>86891</attachid>
    <who name="Benjamin (Ben) Kalman">kalman</who>
    <bug_when>2011-03-24 23:13:10 -0700</bug_when>
    <thetext>Created attachment 86891
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373340</commentid>
    <comment_count>6</comment_count>
    <who name="Benjamin (Ben) Kalman">kalman</who>
    <bug_when>2011-03-24 23:16:48 -0700</bug_when>
    <thetext>Comment I was writing initially, but collided with your review :-)

---

As I&apos;ve commented in the changelog, this bug is only observable in debug builds since it causes an ASSERT fail.

In any case, it&apos;s caused by the deletion of a non-editable table, when a cell&apos;s contents has no height.  This includes
 - no content
 - children amounting to no content (e.g. empty span(s))
 - editable children such that their contents is deleted, but due to one of the nodes being an editing root, not being deleted

An example of the latter case is:

&lt;div contenteditable&gt;
  &lt;table contenteditable=false&gt;&lt;tr&gt;&lt;td&gt;
    &lt;span contenteditable=true&gt;Deleting the whole table will crash a debug build&lt;/span&gt;
  &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;

Currently, removeNode inserts a placeholder when a table cell has no height after deletion.  However, it should only try to insert a placeholder if there actually is somewhere to insert one, and in which case, actually in that editable node rather than on the table cell itself.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373361</commentid>
    <comment_count>7</comment_count>
      <attachid>86891</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-03-25 00:06:12 -0700</bug_when>
    <thetext>Comment on attachment 86891
Patch

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

&gt; LayoutTests/editing/execCommand/delete-table-with-empty-contents-expected.txt:1
&gt; +Tests that tables with inevitably empty content are deleted correctly.

I&apos;m not sure if &quot;inevitably empty content&quot; is self-explanatory.  I wouldn&apos;t mind it be a little more verbose.

&gt; LayoutTests/editing/execCommand/delete-table-with-empty-contents.html:2
&gt; +&lt;div contenteditable tests=&apos;empty&apos;&gt;

I&apos;m not sure if it&apos;s really desirable to have custom &quot;tests&quot; attribute.  Is it allowed in HTML5 spec?  I mean what if in the future we decided to add tests attribute for whatever purpose in HTMLx.  Wouldn&apos;t this collide with that?  Ideally, we wouldn&apos;t need to worry about this test when that happens.

&gt; LayoutTests/editing/execCommand/delete-table-with-empty-contents.html:73
&gt; +      &apos;FAIL (&apos; + testDescription + &apos;), should be empty but was &apos; + container.innerText;

Not necessarily &quot;empty&quot;, right?  How about &apos;should contain exactly one LF but was&apos; or &apos;should be &quot;\n&quot; but was&apos;

&gt; Source/WebCore/editing/DeleteSelectionCommand.cpp:344
&gt; +    Node* next = node;
&gt; +    while (next) {
&gt; +        if (next-&gt;isContentEditable())
&gt; +            return firstPositionInNode(next);
&gt; +        next = next-&gt;traverseNextNode(node);
&gt; +    }

First off, it&apos;s wrong to always return firstPositionInNode because next could be img element with width &amp; height 0px. r- because of this.

I would make it a for loop as in:
for (Node* next = node; next &amp;&amp; !next-&gt;isContentEditable(); next = next-&gt;traverseNextNode(node)) {}
return firstPositionInOrBeforeNode(next);

&gt; Source/WebCore/editing/DeleteSelectionCommand.cpp:389
&gt; +            Position firstEditablePosition = firstEditablePositionInNode(node.get());

Presumably firstEditablePosition is visually coinciding with firstPositionInOrBeforeNode(node).  Can we assert that by e.g. comparing that the canonicalized visible positions created by those two positions are identical?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>374202</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-27 12:39:15 -0700</bug_when>
    <thetext>Attachment 86891 did not build on chromium:
Build output: http://queues.webkit.org/results/8266503</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>374301</commentid>
    <comment_count>9</comment_count>
      <attachid>86891</attachid>
    <who name="Benjamin (Ben) Kalman">kalman</who>
    <bug_when>2011-03-27 23:47:52 -0700</bug_when>
    <thetext>Comment on attachment 86891
Patch

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

&gt;&gt; LayoutTests/editing/execCommand/delete-table-with-empty-contents.html:2
&gt;&gt; +&lt;div contenteditable tests=&apos;empty&apos;&gt;
&gt; 
&gt; I&apos;m not sure if it&apos;s really desirable to have custom &quot;tests&quot; attribute.  Is it allowed in HTML5 spec?  I mean what if in the future we decided to add tests attribute for whatever purpose in HTMLx.  Wouldn&apos;t this collide with that?  Ideally, we wouldn&apos;t need to worry about this test when that happens.

I used &quot;tests&quot; to match junit terminology (for lack of any other), though it should actually be &quot;test&quot;.  As in &quot;testWithEmptySpan&quot;, &quot;testWithEditableNonEmptySpan&quot;, etc.  It really makes no difference to me either way what is used, though I highly doubt that HTML5 will add a test or tests attribute.  And that if it did, it would collide.

&gt;&gt; Source/WebCore/editing/DeleteSelectionCommand.cpp:344
&gt;&gt; +    }
&gt; 
&gt; First off, it&apos;s wrong to always return firstPositionInNode because next could be img element with width &amp; height 0px. r- because of this.
&gt; 
&gt; I would make it a for loop as in:
&gt; for (Node* next = node; next &amp;&amp; !next-&gt;isContentEditable(); next = next-&gt;traverseNextNode(node)) {}
&gt; return firstPositionInOrBeforeNode(next);

Images can be contenteditable?  Really?  Wow.

&gt;&gt; Source/WebCore/editing/DeleteSelectionCommand.cpp:389
&gt;&gt; +            Position firstEditablePosition = firstEditablePositionInNode(node.get());
&gt; 
&gt; Presumably firstEditablePosition is visually coinciding with firstPositionInOrBeforeNode(node).  Can we assert that by e.g. comparing that the canonicalized visible positions created by those two positions are identical?

Yes and no.  Yes, they should be visually coinciding.  No, it can&apos;t be asserted that they&apos;re canonicalised the same, since editability affects canonicalisation.  The following positions
&lt;td&gt;|&lt;span contenteditable&gt;&lt;/span&gt;&lt;/td&gt;
and
&lt;td&gt;&lt;span contenteditable&gt;|&lt;/span&gt;&lt;/td&gt;
are... kind of visually coinciding, but certainly not canonicalised identically.  And this is one of the cases that has a bug, fixed by this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>374302</commentid>
    <comment_count>10</comment_count>
      <attachid>87104</attachid>
    <who name="Benjamin (Ben) Kalman">kalman</who>
    <bug_when>2011-03-27 23:49:10 -0700</bug_when>
    <thetext>Created attachment 87104
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>374303</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-27 23:52:02 -0700</bug_when>
    <thetext>Attachment 87104 did not build on chromium:
Build output: http://queues.webkit.org/results/8266953</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>374307</commentid>
    <comment_count>12</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-03-27 23:58:48 -0700</bug_when>
    <thetext>Attachment 87104 did not build on qt:
Build output: http://queues.webkit.org/results/8270710</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>374311</commentid>
    <comment_count>13</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-03-28 00:11:17 -0700</bug_when>
    <thetext>Attachment 87104 did not build on win:
Build output: http://queues.webkit.org/results/8267864</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>374339</commentid>
    <comment_count>14</comment_count>
    <who name="Benjamin (Ben) Kalman">kalman</who>
    <bug_when>2011-03-28 01:24:36 -0700</bug_when>
    <thetext>Erm, am I missing something?  Why are all these bots saying

DeleteSelectionCommand.cpp:342: error: ‘class WebCore::Node’ has no member named ‘isContentEditable’

Since (a) Node definitely does have isContentEditable, and (b) that line doesn&apos;t appear on line 342 of the patch, and (c) it compiles locally.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>374651</commentid>
    <comment_count>15</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-03-28 11:50:53 -0700</bug_when>
    <thetext>http://trac.webkit.org/browser/trunk/Source/WebCore/dom/Node.h#L322

#if PLATFORM(MAC)
    // Objective-C extensions
    bool isContentEditable() const { return rendererIsEditable(Editable); }
#endif

Those bots do not build with PLATFORM(MAC) because they do not run Mac OS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>374826</commentid>
    <comment_count>16</comment_count>
    <who name="Benjamin (Ben) Kalman">kalman</who>
    <bug_when>2011-03-28 15:19:39 -0700</bug_when>
    <thetext>Ah, I didn&apos;t realise that isContentEditable had been renamed recently to renderIsEditable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>374983</commentid>
    <comment_count>17</comment_count>
      <attachid>87257</attachid>
    <who name="Benjamin (Ben) Kalman">kalman</who>
    <bug_when>2011-03-28 21:28:43 -0700</bug_when>
    <thetext>Created attachment 87257
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376979</commentid>
    <comment_count>18</comment_count>
      <attachid>87257</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-03-31 00:38:32 -0700</bug_when>
    <thetext>Comment on attachment 87257
Patch

Clearing flags on attachment: 87257

Committed r82550: &lt;http://trac.webkit.org/changeset/82550&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376980</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-03-31 00:38:38 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376997</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-31 02:09:08 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/82550 might have broken GTK Linux 32-bit Debug</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86881</attachid>
            <date>2011-03-24 22:06:00 -0700</date>
            <delta_ts>2011-03-24 22:33:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-57079-20110325160557.patch</filename>
            <type>text/plain</type>
            <size>5759</size>
            <attacher name="Benjamin (Ben) Kalman">kalman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODA2MTgKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBlNjQ1NzZjMjYzMGU3YmYwOTM5MWE1
YWE3Y2QwODg1N2UxNzdmZmIwLi42NDJkZWJlZjJmZWZmZjU3ZjEzMDAzODhjMWVkOWFjNDc2Njhi
NjdiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDMtMjQgIEJlbmphbWluIEthbG1hbiAg
PGthbG1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgRGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6cmVtb3ZlTm9kZSB0cmllcyB0
byBpbnNlcnQgYmxvY2sgcGxhY2Vob2xkZXIgaW4gbm9uLWVkaXRhYmxlIHRhYmxlIGNlbGwgcG9z
aXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01
NzA3OQorCisgICAgICAgIEFkZCByZWdyZXNzaW9uIHRlc3QuCisKKyAgICAgICAgKiBlZGl0aW5n
L2V4ZWNDb21tYW5kL2RlbGV0ZS10YWJsZS13aXRoLWVkaXRhYmxlLXNwYW4tZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL2V4ZWNDb21tYW5kL2RlbGV0ZS10YWJsZS13aXRo
LWVkaXRhYmxlLXNwYW4uaHRtbDogQWRkZWQuCisKIDIwMTEtMDMtMDggIE1paGFpIFBhcnBhcml0
YSAgPG1paGFpcEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQWRkIGZhaWxpbmcgZXhwZWN0YXRp
b24gZm9yIGNvbXBvc2l0aW5nL3dlYmdsLwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGlu
Zy9leGVjQ29tbWFuZC9kZWxldGUtdGFibGUtd2l0aC1lZGl0YWJsZS1zcGFuLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvZGVsZXRlLXRhYmxlLXdpdGgtZWRp
dGFibGUtc3Bhbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzhkNmJjMDU4ZDczYTIwNmU4OTYy
YzlhZGQ2NWJiZGExOGIxNmMyMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRp
bmcvZXhlY0NvbW1hbmQvZGVsZXRlLXRhYmxlLXdpdGgtZWRpdGFibGUtc3Bhbi1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSw2IEBACitQQVNTCitQQVNTCitQQVNTCitQQVNTCitQQVNTCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvZGVsZXRlLXRhYmxlLXdpdGgt
ZWRpdGFibGUtc3Bhbi5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9kZWxl
dGUtdGFibGUtd2l0aC1lZGl0YWJsZS1zcGFuLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzc3ZTUxNjBlZjRl
MTMzZjRiY2FiY2JmYjI1MGYyZWQ3MzcwNGUyYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvZGVsZXRlLXRhYmxlLXdpdGgtZWRpdGFibGUtc3Bhbi5o
dG1sCkBAIC0wLDAgKzEsNjEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGRpdiBjb250ZW50ZWRpdGFi
bGU+CisgIDx0YWJsZSBjb250ZW50ZWRpdGFibGU9ZmFsc2U+CisgICAgPHRyPjx0ZD48c3BhbiBj
b250ZW50ZWRpdGFibGU+VGVzdCAxLjwvc3Bhbj48L3RkPjwvdHI+CisgIDwvdGFibGU+Cis8L2Rp
dj4KKworPGRpdiBjb250ZW50ZWRpdGFibGU+CisgIDx0YWJsZSBjb250ZW50ZWRpdGFibGU9ZmFs
c2U+CisgICAgPHRyPjx0ZD48c3BhbiBjb250ZW50ZWRpdGFibGU+PHNwYW4+VGVzdCAyLjwvc3Bh
bj48L3NwYW4+PC90ZD48L3RyPgorICA8L3RhYmxlPgorPC9kaXY+CisKKzxkaXYgY29udGVudGVk
aXRhYmxlPgorICA8dGFibGUgY29udGVudGVkaXRhYmxlPWZhbHNlPgorICAgIDx0cj48dGQ+PHNw
YW4gY29udGVudGVkaXRhYmxlPlRlc3QgMy48L3NwYW4+PHNwYW4gY29udGVudGVkaXRhYmxlPk1v
cmUgdGVzdCAzLjwvc3Bhbj48L3RkPjwvdHI+CisgIDwvdGFibGU+Cis8L2Rpdj4KKworPGRpdiBj
b250ZW50ZWRpdGFibGU+CisgIDx0YWJsZSBjb250ZW50ZWRpdGFibGU9ZmFsc2U+CisgICAgPHRy
Pjx0ZD48c3BhbiBjb250ZW50ZWRpdGFibGU+CisgICAgICA8dGFibGUgY29udGVudGVkaXRhYmxl
PWZhbHNlPgorICAgICAgICA8dHI+PHRkPlRlc3QgNC48L3RkPjwvdHI+CisgICAgICA8L3RhYmxl
PgorICAgIDwvc3Bhbj48L3RkPjwvdHI+CisgIDwvdGFibGU+Cis8L2Rpdj4KKworPGRpdiBjb250
ZW50ZWRpdGFibGU+CisgIDx0YWJsZSBjb250ZW50ZWRpdGFibGU9ZmFsc2U+CisgICAgPHRyPjx0
ZD48c3BhbiBjb250ZW50ZWRpdGFibGU+CisgICAgICA8dGFibGUgY29udGVudGVkaXRhYmxlPWZh
bHNlPgorICAgICAgICA8dHI+PHRkPjxzcGFuIGNvbnRlbnRlZGl0YWJsZT5UZXN0IDUuPC9zcGFu
PjwvdGQ+PC90cj4KKyAgICAgIDwvdGFibGU+CisgICAgPC9zcGFuPjwvdGQ+PC90cj4KKyAgPC90
YWJsZT4KKzwvZGl2PgorCis8cHJlPjwvcHJlPgorCis8c2NyaXB0PgorICB2YXIgY29uc29sZSA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdwcmUnKVswXTsKKworICBmdW5jdGlvbiBy
dW5UZXN0Rm9yQ29udGFpbmVyKGNvbnRhaW5lcikgeworICAgIGNvbnRhaW5lci5mb2N1cygpOwor
ICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCdTZWxlY3RBbGwnKTsKKyAgICBkb2N1bWVudC5leGVj
Q29tbWFuZCgnRGVsZXRlJyk7CisKKyAgICBjb25zb2xlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNy
ZWF0ZVRleHROb2RlKGNvbnRhaW5lci5pbm5lclRleHQgPT09ICdcbicgPworICAgICdQQVNTXG4n
IDogJ0ZBSUwsIGRpdiBzaG91bGQgYmUgZW1wdHkgYnV0IHdhcyAnICsgY29udGFpbmVyLmlubmVy
VGV4dCArICdcbicpKTsKKworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisg
ICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChjb250YWluZXIpOworICB9CisKKyAgQXJyYXku
cHJvdG90eXBlLnNsaWNlLmNhbGwoZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2Rpdicp
KS5mb3JFYWNoKHJ1blRlc3RGb3JDb250YWluZXIpOworCisgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCisgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKzwvc2Ny
aXB0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IGMzNWI5M2RkMGExNmEzYWYwNmMwMDdjYTcyN2RhZjA5MjQxMGM5
ZmEuLjA0NjVmZDRjOTI4ZDFlYjRlZDAzYTAxYWI3NjY4NzZmM2YyYzFjODQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyMCBAQAorMjAxMS0wMy0yNCAgQmVuamFtaW4gS2FsbWFuICA8a2FsbWFuQGNo
cm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBEZWxldGVTZWxlY3Rpb25Db21tYW5kOjpyZW1vdmVOb2RlIHRyaWVzIHRvIGluc2VydCBi
bG9jayBwbGFjZWhvbGRlciBpbiBub24tZWRpdGFibGUgdGFibGUgY2VsbCBwb3NpdGlvbnMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU3MDc5CisKKyAg
ICAgICAgVGVzdDogZWRpdGluZy9leGVjQ29tbWFuZC9kZWxldGUtdGFibGUtd2l0aC1lZGl0YWJs
ZS1zcGFuLmh0bWwKKworICAgICAgICBUaGlzIGJ1ZyByZXN1bHRzIGluIGFuIEFTU0VSVCBmYWls
IGluIENvbXBvc2l0ZUVkaXRDb21tYW5kOjppbnNlcnROb2RlQXQsIHNvIGlzIG9ubHkgb2JzZXJ2
YWJsZSBpbiBkZWJ1ZyBidWlsZHMKKyAgICAgICAgb2YgV2ViS2l0LgorCisgICAgICAgICogZWRp
dGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZpcnN0
RWRpdGFibGVQb3NpdGlvbkluTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpEZWxldGVTZWxlY3Rp
b25Db21tYW5kOjpyZW1vdmVOb2RlKTogVXNlIGZpcnN0RWRpdGFibGVQb3NpdGlvbkluTm9kZSBy
YXRoZXIgdGhhbiBmaXJzdFBvc2l0aW9uSW5Ob2RlCisgICAgICAgIHRvIGZpbmQgYW5jaG9yIG5v
ZGUgZm9yIHRoZSBwbGFjZWhvbGRlcidzIHBvc2l0aW9uLgorCiAyMDExLTAzLTA4ICBFbnJpY2Eg
Q2FzdWNjaSAgPGVucmljYUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4g
QWRsZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlv
bkNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21t
YW5kLmNwcAppbmRleCA4OTdjMzA1OGNjZGM3NzQ2NTU2MzI0ZTJmZjlhNDExYjUxNDhmNWRhLi41
YTdjNDJkZTRjNTQ0ODE3Yjc3NmZjZWZhMjM3MmMwYzEwMTFiMDQxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHAKQEAgLTMzMyw2ICsz
MzMsMjEgQEAgc3RhdGljIHZvaWQgdXBkYXRlUG9zaXRpb25Gb3JOb2RlUmVtb3ZhbChOb2RlKiBu
b2RlLCBQb3NpdGlvbiYgcG9zaXRpb24pCiAgICAgfQogfQogCitzdGF0aWMgUG9zaXRpb24gZmly
c3RFZGl0YWJsZVBvc2l0aW9uSW5Ob2RlKE5vZGUqIG5vZGUpCit7CisgICAgQVNTRVJUKG5vZGUp
OworICAgIGlmIChub2RlLT5pc0NvbnRlbnRFZGl0YWJsZSgpKQorICAgICAgICByZXR1cm4gZmly
c3RQb3NpdGlvbkluTm9kZShub2RlKTsKKyAgICBOb2RlKiBjaGlsZCA9IG5vZGUtPmZpcnN0Q2hp
bGQoKTsKKyAgICB3aGlsZSAoY2hpbGQpIHsKKyAgICAgICAgUG9zaXRpb24gZmlyc3RFZGl0YWJs
ZVBvc2l0aW9uSW5DaGlsZCA9IGZpcnN0RWRpdGFibGVQb3NpdGlvbkluTm9kZShjaGlsZCk7Cisg
ICAgICAgIGlmIChmaXJzdEVkaXRhYmxlUG9zaXRpb25JbkNoaWxkLmlzTm90TnVsbCgpKQorICAg
ICAgICAgICAgcmV0dXJuIGZpcnN0RWRpdGFibGVQb3NpdGlvbkluQ2hpbGQ7CisgICAgICAgIGNo
aWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCk7CisgICAgfQorICAgIHJldHVybiBmaXJzdFBvc2l0
aW9uSW5Ob2RlKDApOworfQorCiB2b2lkIERlbGV0ZVNlbGVjdGlvbkNvbW1hbmQ6OnJlbW92ZU5v
ZGUoUGFzc1JlZlB0cjxOb2RlPiBub2RlKQogewogICAgIGlmICghbm9kZSkKQEAgLTM3NCw3ICsz
ODksNyBAQCB2b2lkIERlbGV0ZVNlbGVjdGlvbkNvbW1hbmQ6OnJlbW92ZU5vZGUoUGFzc1JlZlB0
cjxOb2RlPiBub2RlKQogICAgICAgICB1cGRhdGVMYXlvdXQoKTsKICAgICAgICAgUmVuZGVyT2Jq
ZWN0ICpyID0gbm9kZS0+cmVuZGVyZXIoKTsKICAgICAgICAgaWYgKHIgJiYgci0+aXNUYWJsZUNl
bGwoKSAmJiB0b1JlbmRlclRhYmxlQ2VsbChyKS0+Y29udGVudEhlaWdodCgpIDw9IDApCi0gICAg
ICAgICAgICBpbnNlcnRCbG9ja1BsYWNlaG9sZGVyKGZpcnN0UG9zaXRpb25Jbk5vZGUobm9kZS5n
ZXQoKSkpOworICAgICAgICAgICAgaW5zZXJ0QmxvY2tQbGFjZWhvbGRlcihmaXJzdEVkaXRhYmxl
UG9zaXRpb25Jbk5vZGUobm9kZS5nZXQoKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAg
IAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86884</attachid>
            <date>2011-03-24 22:33:58 -0700</date>
            <delta_ts>2011-03-24 23:13:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-57079-20110325163355.patch</filename>
            <type>text/plain</type>
            <size>6559</size>
            <attacher name="Benjamin (Ben) Kalman">kalman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODA2MTgKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBlNjQ1NzZjMjYzMGU3YmYwOTM5MWE1
YWE3Y2QwODg1N2UxNzdmZmIwLi5lNTkyNmIwMGFhMTFhMDdmY2UwOTdkYTllODkzNzQyODBkYzM3
NWVjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDMtMjQgIEJlbmphbWluIEthbG1hbiAg
PGthbG1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgRGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6cmVtb3ZlTm9kZSB0cmllcyB0
byBpbnNlcnQgYmxvY2sgcGxhY2Vob2xkZXIgaW4gbm9uLWVkaXRhYmxlIHRhYmxlIGNlbGwgcG9z
aXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01
NzA3OQorCisgICAgICAgIEFkZCByZWdyZXNzaW9uIHRlc3QuCisKKyAgICAgICAgKiBlZGl0aW5n
L2V4ZWNDb21tYW5kL2RlbGV0ZS10YWJsZS13aXRoLWVtcHR5LWNvbnRlbnRzLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9leGVjQ29tbWFuZC9kZWxldGUtdGFibGUtd2l0
aC1lbXB0eS1jb250ZW50cy5odG1sOiBBZGRlZC4KKwogMjAxMS0wMy0wOCAgTWloYWkgUGFycGFy
aXRhICA8bWloYWlwQGNocm9taXVtLm9yZz4KIAogICAgICAgICBBZGQgZmFpbGluZyBleHBlY3Rh
dGlvbiBmb3IgY29tcG9zaXRpbmcvd2ViZ2wvCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0
aW5nL2V4ZWNDb21tYW5kL2RlbGV0ZS10YWJsZS13aXRoLWVtcHR5LWNvbnRlbnRzLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvZGVsZXRlLXRhYmxlLXdpdGgt
ZW1wdHktY29udGVudHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM5NTIyYjRjZDliYTY1NTcy
NDA1OTcwNTI2NDc4OTFmMmQyMjA0NTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9l
ZGl0aW5nL2V4ZWNDb21tYW5kL2RlbGV0ZS10YWJsZS13aXRoLWVtcHR5LWNvbnRlbnRzLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDkgQEAKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BB
U1MKK1BBU1MKK1BBU1MKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29t
bWFuZC9kZWxldGUtdGFibGUtd2l0aC1lbXB0eS1jb250ZW50cy5odG1sIGIvTGF5b3V0VGVzdHMv
ZWRpdGluZy9leGVjQ29tbWFuZC9kZWxldGUtdGFibGUtd2l0aC1lbXB0eS1jb250ZW50cy5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmFlM2E2NjQ0NGUyMmRmNTExMDRkNzdmZDQ5ZWUzMDFlZWM1ODRiZTAKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL2RlbGV0ZS10
YWJsZS13aXRoLWVtcHR5LWNvbnRlbnRzLmh0bWwKQEAgLTAsMCArMSw3OSBAQAorPCFET0NUWVBF
IGh0bWw+Cis8ZGl2IGNvbnRlbnRlZGl0YWJsZT4KKyAgPHRhYmxlIGNvbnRlbnRlZGl0YWJsZT1m
YWxzZT4KKyAgICA8dHI+PHRkPjwvdGQ+PC90cj4KKyAgPC90YWJsZT4KKzwvZGl2PgorCis8ZGl2
IGNvbnRlbnRlZGl0YWJsZT4KKyAgPHRhYmxlIGNvbnRlbnRlZGl0YWJsZT1mYWxzZT4KKyAgICA8
dHI+PHRkPjxzcGFuPjwvc3Bhbj48L3RkPjwvdHI+CisgIDwvdGFibGU+Cis8L2Rpdj4KKworPGRp
diBjb250ZW50ZWRpdGFibGU+CisgIDx0YWJsZSBjb250ZW50ZWRpdGFibGU9ZmFsc2U+CisgICAg
PHRyPjx0ZD48c3BhbiBjb250ZW50ZWRpdGFibGU+PC9zcGFuPjwvdGQ+PC90cj4KKyAgPC90YWJs
ZT4KKzwvZGl2PgorCis8ZGl2IGNvbnRlbnRlZGl0YWJsZT4KKyAgPHRhYmxlIGNvbnRlbnRlZGl0
YWJsZT1mYWxzZT4KKyAgICA8dHI+PHRkPjxzcGFuIGNvbnRlbnRlZGl0YWJsZT5UZXN0IDQuPC9z
cGFuPjwvdGQ+PC90cj4KKyAgPC90YWJsZT4KKzwvZGl2PgorCis8ZGl2IGNvbnRlbnRlZGl0YWJs
ZT4KKyAgPHRhYmxlIGNvbnRlbnRlZGl0YWJsZT1mYWxzZT4KKyAgICA8dHI+PHRkPjxzcGFuIGNv
bnRlbnRlZGl0YWJsZT48c3Bhbj5UZXN0IDUuPC9zcGFuPjwvc3Bhbj48L3RkPjwvdHI+CisgIDwv
dGFibGU+Cis8L2Rpdj4KKworPGRpdiBjb250ZW50ZWRpdGFibGU+CisgIDx0YWJsZSBjb250ZW50
ZWRpdGFibGU9ZmFsc2U+CisgICAgPHRyPjx0ZD48c3BhbiBjb250ZW50ZWRpdGFibGU+VGVzdCA2
Ljwvc3Bhbj48c3BhbiBjb250ZW50ZWRpdGFibGU+TW9yZSB0ZXN0IDYuPC9zcGFuPjwvdGQ+PC90
cj4KKyAgPC90YWJsZT4KKzwvZGl2PgorCis8ZGl2IGNvbnRlbnRlZGl0YWJsZT4KKyAgPHRhYmxl
IGNvbnRlbnRlZGl0YWJsZT1mYWxzZT4KKyAgICA8dHI+PHRkPjxzcGFuIGNvbnRlbnRlZGl0YWJs
ZT4KKyAgICAgIDx0YWJsZSBjb250ZW50ZWRpdGFibGU9ZmFsc2U+CisgICAgICAgIDx0cj48dGQ+
VGVzdCA3LjwvdGQ+PC90cj4KKyAgICAgIDwvdGFibGU+CisgICAgPC9zcGFuPjwvdGQ+PC90cj4K
KyAgPC90YWJsZT4KKzwvZGl2PgorCis8ZGl2IGNvbnRlbnRlZGl0YWJsZT4KKyAgPHRhYmxlIGNv
bnRlbnRlZGl0YWJsZT1mYWxzZT4KKyAgICA8dHI+PHRkPjxzcGFuIGNvbnRlbnRlZGl0YWJsZT4K
KyAgICAgIDx0YWJsZSBjb250ZW50ZWRpdGFibGU9ZmFsc2U+CisgICAgICAgIDx0cj48dGQ+PHNw
YW4gY29udGVudGVkaXRhYmxlPlRlc3QgOC48L3NwYW4+PC90ZD48L3RyPgorICAgICAgPC90YWJs
ZT4KKyAgICA8L3NwYW4+PC90ZD48L3RyPgorICA8L3RhYmxlPgorPC9kaXY+CisKKzxwcmU+PC9w
cmU+CisKKzxzY3JpcHQ+CisgIHZhciBjb25zb2xlID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoJ3ByZScpWzBdOworCisgIGZ1bmN0aW9uIHJ1blRlc3RGb3JDb250YWluZXIoY29udGFp
bmVyKSB7CisgICAgY29udGFpbmVyLmZvY3VzKCk7CisgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQo
J1NlbGVjdEFsbCcpOworICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCdEZWxldGUnKTsKKworICAg
IGNvbnNvbGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY29udGFpbmVyLmlu
bmVyVGV4dCA9PT0gJ1xuJyA/CisgICAgICAgICdQQVNTXG4nIDogJ0ZBSUwsIGRpdiBzaG91bGQg
YmUgZW1wdHkgYnV0IHdhcyAnICsgY29udGFpbmVyLmlubmVyVGV4dCArICdcbicpKTsKKworICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICBkb2N1bWVudC5ib2R5LnJl
bW92ZUNoaWxkKGNvbnRhaW5lcik7CisgIH0KKworICBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2Fs
bChkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnZGl2JykpLmZvckVhY2gocnVuVGVzdEZv
ckNvbnRhaW5lcik7CisKKyAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCBjMzViOTNkZDBhMTZhM2FmMDZjMDA3Y2E3MjdkYWYwOTI0MTBjOWZhLi4yOGE0MGI3NzRhMDNi
YTEyNmJjZTk1YTg2Y2E3M2JjZmE4MDEyZDg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAK
KzIwMTEtMDMtMjQgIEJlbmphbWluIEthbG1hbiAgPGthbG1hbkBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRGVsZXRlU2VsZWN0
aW9uQ29tbWFuZDo6cmVtb3ZlTm9kZSB0cmllcyB0byBpbnNlcnQgYmxvY2sgcGxhY2Vob2xkZXIg
aW4gbm9uLWVkaXRhYmxlIHRhYmxlIGNlbGwgcG9zaXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NzA3OQorCisgICAgICAgIFRlc3Q6IGVkaXRp
bmcvZXhlY0NvbW1hbmQvZGVsZXRlLXRhYmxlLXdpdGgtZW1wdHktY29udGVudHMuaHRtbAorCisg
ICAgICAgIFRoaXMgYnVnIHJlc3VsdHMgaW4gYW4gQVNTRVJUIGZhaWwgaW4gQ29tcG9zaXRlRWRp
dENvbW1hbmQ6Omluc2VydE5vZGVBdCwgc28gaXMgb25seSBvYnNlcnZhYmxlIGluIGRlYnVnIGJ1
aWxkcworICAgICAgICBvZiBXZWJLaXQuCisKKyAgICAgICAgKiBlZGl0aW5nL0RlbGV0ZVNlbGVj
dGlvbkNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Zmlyc3RFZGl0YWJsZVBvc2l0aW9u
SW5Ob2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkRlbGV0ZVNlbGVjdGlvbkNvbW1hbmQ6OnJlbW92
ZU5vZGUpOiBVc2UgZmlyc3RFZGl0YWJsZVBvc2l0aW9uSW5Ob2RlIHJhdGhlciB0aGFuIGZpcnN0
UG9zaXRpb25Jbk5vZGUKKyAgICAgICAgdG8gZmluZCBhbmNob3Igbm9kZSBmb3IgdGhlIHBsYWNl
aG9sZGVyJ3MgcG9zaXRpb24sIGlmIGFueS4KKwogMjAxMS0wMy0wOCAgRW5yaWNhIENhc3VjY2kg
IDxlbnJpY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5k
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHAK
aW5kZXggODk3YzMwNThjY2RjNzc0NjU1NjMyNGUyZmY5YTQxMWI1MTQ4ZjVkYS4uOGE2Mzc4NzBk
OWEyNWY3MWQ5ODkzZGJmZjk3ZTRiY2Q3Mjk0OTVmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCkBAIC0zMzMsNiArMzMzLDIxIEBA
IHN0YXRpYyB2b2lkIHVwZGF0ZVBvc2l0aW9uRm9yTm9kZVJlbW92YWwoTm9kZSogbm9kZSwgUG9z
aXRpb24mIHBvc2l0aW9uKQogICAgIH0KIH0KIAorc3RhdGljIFBvc2l0aW9uIGZpcnN0RWRpdGFi
bGVQb3NpdGlvbkluTm9kZShOb2RlKiBub2RlKQoreworICAgIEFTU0VSVChub2RlKTsKKyAgICBp
ZiAobm9kZS0+aXNDb250ZW50RWRpdGFibGUoKSkKKyAgICAgICAgcmV0dXJuIGZpcnN0UG9zaXRp
b25Jbk5vZGUobm9kZSk7CisgICAgTm9kZSogY2hpbGQgPSBub2RlLT5maXJzdENoaWxkKCk7Cisg
ICAgd2hpbGUgKGNoaWxkKSB7CisgICAgICAgIFBvc2l0aW9uIGZpcnN0RWRpdGFibGVQb3NpdGlv
bkluQ2hpbGQgPSBmaXJzdEVkaXRhYmxlUG9zaXRpb25Jbk5vZGUoY2hpbGQpOworICAgICAgICBp
ZiAoZmlyc3RFZGl0YWJsZVBvc2l0aW9uSW5DaGlsZC5pc05vdE51bGwoKSkKKyAgICAgICAgICAg
IHJldHVybiBmaXJzdEVkaXRhYmxlUG9zaXRpb25JbkNoaWxkOworICAgICAgICBjaGlsZCA9IGNo
aWxkLT5uZXh0U2libGluZygpOworICAgIH0KKyAgICByZXR1cm4gZmlyc3RQb3NpdGlvbkluTm9k
ZSgwKTsKK30KKwogdm9pZCBEZWxldGVTZWxlY3Rpb25Db21tYW5kOjpyZW1vdmVOb2RlKFBhc3NS
ZWZQdHI8Tm9kZT4gbm9kZSkKIHsKICAgICBpZiAoIW5vZGUpCkBAIC0zNzAsMTEgKzM4NSwxNCBA
QCB2b2lkIERlbGV0ZVNlbGVjdGlvbkNvbW1hbmQ6OnJlbW92ZU5vZGUoUGFzc1JlZlB0cjxOb2Rl
PiBub2RlKQogICAgICAgICAgICAgcmVtb3ZlTm9kZShyZW1vdmUpOwogICAgICAgICB9CiAgICAg
ICAgIAotICAgICAgICAvLyBtYWtlIHN1cmUgZW1wdHkgY2VsbCBoYXMgc29tZSBoZWlnaHQKKyAg
ICAgICAgLy8gTWFrZSBzdXJlIGVtcHR5IGNlbGwgaGFzIHNvbWUgaGVpZ2h0LCBpZiBhIHBsYWNl
aG9sZGVyIGNhbiBiZSBpbnNlcnRlZC4KICAgICAgICAgdXBkYXRlTGF5b3V0KCk7CiAgICAgICAg
IFJlbmRlck9iamVjdCAqciA9IG5vZGUtPnJlbmRlcmVyKCk7Ci0gICAgICAgIGlmIChyICYmIHIt
PmlzVGFibGVDZWxsKCkgJiYgdG9SZW5kZXJUYWJsZUNlbGwociktPmNvbnRlbnRIZWlnaHQoKSA8
PSAwKQotICAgICAgICAgICAgaW5zZXJ0QmxvY2tQbGFjZWhvbGRlcihmaXJzdFBvc2l0aW9uSW5O
b2RlKG5vZGUuZ2V0KCkpKTsKKyAgICAgICAgaWYgKHIgJiYgci0+aXNUYWJsZUNlbGwoKSAmJiB0
b1JlbmRlclRhYmxlQ2VsbChyKS0+Y29udGVudEhlaWdodCgpIDw9IDApIHsKKyAgICAgICAgICAg
IFBvc2l0aW9uIGZpcnN0RWRpdGFibGVQb3NpdGlvbiA9IGZpcnN0RWRpdGFibGVQb3NpdGlvbklu
Tm9kZShub2RlLmdldCgpKTsKKyAgICAgICAgICAgIGlmIChmaXJzdEVkaXRhYmxlUG9zaXRpb24u
aXNOb3ROdWxsKCkpCisgICAgICAgICAgICAgICAgaW5zZXJ0QmxvY2tQbGFjZWhvbGRlcihmaXJz
dEVkaXRhYmxlUG9zaXRpb24pOworICAgICAgICB9CiAgICAgICAgIHJldHVybjsKICAgICB9CiAg
ICAgCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86891</attachid>
            <date>2011-03-24 23:13:10 -0700</date>
            <delta_ts>2011-03-27 23:49:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-57079-20110325171307.patch</filename>
            <type>text/plain</type>
            <size>7151</size>
            <attacher name="Benjamin (Ben) Kalman">kalman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODA2MTgKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBlNjQ1NzZjMjYzMGU3YmYwOTM5MWE1
YWE3Y2QwODg1N2UxNzdmZmIwLi5lNTkyNmIwMGFhMTFhMDdmY2UwOTdkYTllODkzNzQyODBkYzM3
NWVjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDMtMjQgIEJlbmphbWluIEthbG1hbiAg
PGthbG1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgRGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6cmVtb3ZlTm9kZSB0cmllcyB0
byBpbnNlcnQgYmxvY2sgcGxhY2Vob2xkZXIgaW4gbm9uLWVkaXRhYmxlIHRhYmxlIGNlbGwgcG9z
aXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01
NzA3OQorCisgICAgICAgIEFkZCByZWdyZXNzaW9uIHRlc3QuCisKKyAgICAgICAgKiBlZGl0aW5n
L2V4ZWNDb21tYW5kL2RlbGV0ZS10YWJsZS13aXRoLWVtcHR5LWNvbnRlbnRzLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9leGVjQ29tbWFuZC9kZWxldGUtdGFibGUtd2l0
aC1lbXB0eS1jb250ZW50cy5odG1sOiBBZGRlZC4KKwogMjAxMS0wMy0wOCAgTWloYWkgUGFycGFy
aXRhICA8bWloYWlwQGNocm9taXVtLm9yZz4KIAogICAgICAgICBBZGQgZmFpbGluZyBleHBlY3Rh
dGlvbiBmb3IgY29tcG9zaXRpbmcvd2ViZ2wvCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0
aW5nL2V4ZWNDb21tYW5kL2RlbGV0ZS10YWJsZS13aXRoLWVtcHR5LWNvbnRlbnRzLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvZGVsZXRlLXRhYmxlLXdpdGgt
ZW1wdHktY29udGVudHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU0ZWQzZjRjODJhODhmZmVm
Njc2ZGI4ZjA3MjAxYmRhZjFlZjQzOGQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9l
ZGl0aW5nL2V4ZWNDb21tYW5kL2RlbGV0ZS10YWJsZS13aXRoLWVtcHR5LWNvbnRlbnRzLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitUZXN0cyB0aGF0IHRhYmxlcyB3aXRoIGluZXZpdGFi
bHkgZW1wdHkgY29udGVudCBhcmUgZGVsZXRlZCBjb3JyZWN0bHkuCisKK1BBU1MgKGVtcHR5KQor
UEFTUyAod2l0aCBlbXB0eSBzcGFuKQorUEFTUyAod2l0aCBlZGl0YWJsZSBlbXB0eSBzcGFuKQor
UEFTUyAod2l0aCBlZGl0YWJsZSBub24tZW1wdHkgc3BhbikKK1BBU1MgKHdpdGggbmVzdGVkIGVk
aXRhYmxlIG5vbi1lbXB0eSBzcGFucykKK1BBU1MgKHdpdGggbXVsdGlwbGUgZWRpdGFibGUgbm9u
LWVtcHR5IHNwYW5zKQorUEFTUyAod2l0aCBuZXN0ZWQgdGFibGUpCitQQVNTICh3aXRoIG5lc3Rl
ZCB0YWJsZSBjb250YWluaW5nIGVkaXRhYmxlIG5vbi1lbXB0eSBzcGFuKQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9kZWxldGUtdGFibGUtd2l0aC1lbXB0eS1j
b250ZW50cy5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9kZWxldGUtdGFi
bGUtd2l0aC1lbXB0eS1jb250ZW50cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFkYmM5ZjdiOWIwMmUwMzk5
MjA4YjUyMTJhMWE3MDEzYjUzNmE0Y2EKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9l
ZGl0aW5nL2V4ZWNDb21tYW5kL2RlbGV0ZS10YWJsZS13aXRoLWVtcHR5LWNvbnRlbnRzLmh0bWwK
QEAgLTAsMCArMSw4NCBAQAorPCFET0NUWVBFIGh0bWw+Cis8ZGl2IGNvbnRlbnRlZGl0YWJsZSB0
ZXN0cz0nZW1wdHknPgorICA8dGFibGUgY29udGVudGVkaXRhYmxlPWZhbHNlPgorICAgIDx0cj48
dGQ+PC90ZD48L3RyPgorICA8L3RhYmxlPgorPC9kaXY+CisKKzxkaXYgY29udGVudGVkaXRhYmxl
IHRlc3RzPSd3aXRoIGVtcHR5IHNwYW4nPgorICA8dGFibGUgY29udGVudGVkaXRhYmxlPWZhbHNl
PgorICAgIDx0cj48dGQ+PHNwYW4+PC9zcGFuPjwvdGQ+PC90cj4KKyAgPC90YWJsZT4KKzwvZGl2
PgorCis8ZGl2IGNvbnRlbnRlZGl0YWJsZSB0ZXN0cz0nd2l0aCBlZGl0YWJsZSBlbXB0eSBzcGFu
Jz4KKyAgPHRhYmxlIGNvbnRlbnRlZGl0YWJsZT1mYWxzZT4KKyAgICA8dHI+PHRkPjxzcGFuIGNv
bnRlbnRlZGl0YWJsZT48L3NwYW4+PC90ZD48L3RyPgorICA8L3RhYmxlPgorPC9kaXY+CisKKzxk
aXYgY29udGVudGVkaXRhYmxlIHRlc3RzPSd3aXRoIGVkaXRhYmxlIG5vbi1lbXB0eSBzcGFuJz4K
KyAgPHRhYmxlIGNvbnRlbnRlZGl0YWJsZT1mYWxzZT4KKyAgICA8dHI+PHRkPjxzcGFuIGNvbnRl
bnRlZGl0YWJsZT5UZXN0IDQuPC9zcGFuPjwvdGQ+PC90cj4KKyAgPC90YWJsZT4KKzwvZGl2Pgor
Cis8ZGl2IGNvbnRlbnRlZGl0YWJsZSB0ZXN0cz0nd2l0aCBuZXN0ZWQgZWRpdGFibGUgbm9uLWVt
cHR5IHNwYW5zJz4KKyAgPHRhYmxlIGNvbnRlbnRlZGl0YWJsZT1mYWxzZT4KKyAgICA8dHI+PHRk
PjxzcGFuIGNvbnRlbnRlZGl0YWJsZT48c3Bhbj5UZXN0IDUuPC9zcGFuPjwvc3Bhbj48L3RkPjwv
dHI+CisgIDwvdGFibGU+Cis8L2Rpdj4KKworPGRpdiBjb250ZW50ZWRpdGFibGUgdGVzdHM9J3dp
dGggbXVsdGlwbGUgZWRpdGFibGUgbm9uLWVtcHR5IHNwYW5zJz4KKyAgPHRhYmxlIGNvbnRlbnRl
ZGl0YWJsZT1mYWxzZT4KKyAgICA8dHI+PHRkPjxzcGFuIGNvbnRlbnRlZGl0YWJsZT5UZXN0IDYu
PC9zcGFuPjxzcGFuIGNvbnRlbnRlZGl0YWJsZT5Nb3JlIHRlc3QgNi48L3NwYW4+PC90ZD48L3Ry
PgorICA8L3RhYmxlPgorPC9kaXY+CisKKzxkaXYgY29udGVudGVkaXRhYmxlIHRlc3RzPSd3aXRo
IG5lc3RlZCB0YWJsZSc+CisgIDx0YWJsZSBjb250ZW50ZWRpdGFibGU9ZmFsc2U+CisgICAgPHRy
Pjx0ZD48c3BhbiBjb250ZW50ZWRpdGFibGU+CisgICAgICA8dGFibGUgY29udGVudGVkaXRhYmxl
PWZhbHNlPgorICAgICAgICA8dHI+PHRkPlRlc3QgNy48L3RkPjwvdHI+CisgICAgICA8L3RhYmxl
PgorICAgIDwvc3Bhbj48L3RkPjwvdHI+CisgIDwvdGFibGU+Cis8L2Rpdj4KKworPGRpdiBjb250
ZW50ZWRpdGFibGUgdGVzdHM9J3dpdGggbmVzdGVkIHRhYmxlIGNvbnRhaW5pbmcgZWRpdGFibGUg
bm9uLWVtcHR5IHNwYW4nPgorICA8dGFibGUgY29udGVudGVkaXRhYmxlPWZhbHNlPgorICAgIDx0
cj48dGQ+PHNwYW4gY29udGVudGVkaXRhYmxlPgorICAgICAgPHRhYmxlIGNvbnRlbnRlZGl0YWJs
ZT1mYWxzZT4KKyAgICAgICAgPHRyPjx0ZD48c3BhbiBjb250ZW50ZWRpdGFibGU+VGVzdCA4Ljwv
c3Bhbj48L3RkPjwvdHI+CisgICAgICA8L3RhYmxlPgorICAgIDwvc3Bhbj48L3RkPjwvdHI+Cisg
IDwvdGFibGU+Cis8L2Rpdj4KKworPHByZT4KK1Rlc3RzIHRoYXQgdGFibGVzIHdpdGggaW5ldml0
YWJseSBlbXB0eSBjb250ZW50IGFyZSBkZWxldGVkIGNvcnJlY3RseS4KKzwvcHJlPgorCis8c2Ny
aXB0PgordmFyIGNvbnNvbGUgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgncHJlJylb
MF07CisKK2Z1bmN0aW9uIHJ1blRlc3RGb3JDb250YWluZXIoY29udGFpbmVyKSB7CisgIGNvbnRh
aW5lci5mb2N1cygpOworICBkb2N1bWVudC5leGVjQ29tbWFuZCgnU2VsZWN0QWxsJyk7CisgIGRv
Y3VtZW50LmV4ZWNDb21tYW5kKCdEZWxldGUnKTsKKworICB2YXIgdGVzdERlc2NyaXB0aW9uID0g
Y29udGFpbmVyLmdldEF0dHJpYnV0ZSgndGVzdHMnKTsKKyAgdmFyIHJlc3VsdCA9IGNvbnRhaW5l
ci5pbm5lclRleHQgPT09ICdcbicgPworICAgICAgJ1BBU1MgKCcgICsgdGVzdERlc2NyaXB0aW9u
ICsgJyknIDoKKyAgICAgICdGQUlMICgnICsgdGVzdERlc2NyaXB0aW9uICsgJyksIHNob3VsZCBi
ZSBlbXB0eSBidXQgd2FzICcgKyBjb250YWluZXIuaW5uZXJUZXh0OworICBjb25zb2xlLmFwcGVu
ZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdcbicgKyByZXN1bHQpKTsKKworICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hp
bGQoY29udGFpbmVyKTsKK30KKworQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoJ2RpdicpKS5mb3JFYWNoKHJ1blRlc3RGb3JDb250YWluZXIp
OworCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjMzViOTNkZDBhMTZh
M2FmMDZjMDA3Y2E3MjdkYWYwOTI0MTBjOWZhLi4yOGE0MGI3NzRhMDNiYTEyNmJjZTk1YTg2Y2E3
M2JjZmE4MDEyZDg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTEtMDMtMjQgIEJl
bmphbWluIEthbG1hbiAgPGthbG1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6cmVt
b3ZlTm9kZSB0cmllcyB0byBpbnNlcnQgYmxvY2sgcGxhY2Vob2xkZXIgaW4gbm9uLWVkaXRhYmxl
IHRhYmxlIGNlbGwgcG9zaXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01NzA3OQorCisgICAgICAgIFRlc3Q6IGVkaXRpbmcvZXhlY0NvbW1hbmQv
ZGVsZXRlLXRhYmxlLXdpdGgtZW1wdHktY29udGVudHMuaHRtbAorCisgICAgICAgIFRoaXMgYnVn
IHJlc3VsdHMgaW4gYW4gQVNTRVJUIGZhaWwgaW4gQ29tcG9zaXRlRWRpdENvbW1hbmQ6Omluc2Vy
dE5vZGVBdCwgc28gaXMgb25seSBvYnNlcnZhYmxlIGluIGRlYnVnIGJ1aWxkcworICAgICAgICBv
ZiBXZWJLaXQuCisKKyAgICAgICAgKiBlZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Zmlyc3RFZGl0YWJsZVBvc2l0aW9uSW5Ob2RlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRlbGV0ZVNlbGVjdGlvbkNvbW1hbmQ6OnJlbW92ZU5vZGUpOiBVc2UgZmly
c3RFZGl0YWJsZVBvc2l0aW9uSW5Ob2RlIHJhdGhlciB0aGFuIGZpcnN0UG9zaXRpb25Jbk5vZGUK
KyAgICAgICAgdG8gZmluZCBhbmNob3Igbm9kZSBmb3IgdGhlIHBsYWNlaG9sZGVyJ3MgcG9zaXRp
b24sIGlmIGFueS4KKwogMjAxMS0wMy0wOCAgRW5yaWNhIENhc3VjY2kgIDxlbnJpY2FAYXBwbGUu
Y29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHAKaW5kZXggODk3YzMwNThj
Y2RjNzc0NjU1NjMyNGUyZmY5YTQxMWI1MTQ4ZjVkYS4uNjFiMWRmOTlmZDhiODk3MTkzMzdkNjg1
NzQ0YTE0MWNhMjQyMTcyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxl
dGVTZWxlY3Rpb25Db21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0
ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCkBAIC0zMzMsNiArMzMzLDE4IEBAIHN0YXRpYyB2b2lkIHVw
ZGF0ZVBvc2l0aW9uRm9yTm9kZVJlbW92YWwoTm9kZSogbm9kZSwgUG9zaXRpb24mIHBvc2l0aW9u
KQogICAgIH0KIH0KIAorc3RhdGljIFBvc2l0aW9uIGZpcnN0RWRpdGFibGVQb3NpdGlvbkluTm9k
ZShOb2RlKiBub2RlKQoreworICAgIEFTU0VSVChub2RlKTsKKyAgICBOb2RlKiBuZXh0ID0gbm9k
ZTsKKyAgICB3aGlsZSAobmV4dCkgeworICAgICAgICBpZiAobmV4dC0+aXNDb250ZW50RWRpdGFi
bGUoKSkKKyAgICAgICAgICAgIHJldHVybiBmaXJzdFBvc2l0aW9uSW5Ob2RlKG5leHQpOworICAg
ICAgICBuZXh0ID0gbmV4dC0+dHJhdmVyc2VOZXh0Tm9kZShub2RlKTsKKyAgICB9CisgICAgcmV0
dXJuIGZpcnN0UG9zaXRpb25Jbk5vZGUoMCk7Cit9CisKIHZvaWQgRGVsZXRlU2VsZWN0aW9uQ29t
bWFuZDo6cmVtb3ZlTm9kZShQYXNzUmVmUHRyPE5vZGU+IG5vZGUpCiB7CiAgICAgaWYgKCFub2Rl
KQpAQCAtMzcwLDExICszODIsMTQgQEAgdm9pZCBEZWxldGVTZWxlY3Rpb25Db21tYW5kOjpyZW1v
dmVOb2RlKFBhc3NSZWZQdHI8Tm9kZT4gbm9kZSkKICAgICAgICAgICAgIHJlbW92ZU5vZGUocmVt
b3ZlKTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgLy8gbWFrZSBzdXJlIGVtcHR5IGNl
bGwgaGFzIHNvbWUgaGVpZ2h0CisgICAgICAgIC8vIE1ha2Ugc3VyZSBlbXB0eSBjZWxsIGhhcyBz
b21lIGhlaWdodCwgaWYgYSBwbGFjZWhvbGRlciBjYW4gYmUgaW5zZXJ0ZWQuCiAgICAgICAgIHVw
ZGF0ZUxheW91dCgpOwogICAgICAgICBSZW5kZXJPYmplY3QgKnIgPSBub2RlLT5yZW5kZXJlcigp
OwotICAgICAgICBpZiAociAmJiByLT5pc1RhYmxlQ2VsbCgpICYmIHRvUmVuZGVyVGFibGVDZWxs
KHIpLT5jb250ZW50SGVpZ2h0KCkgPD0gMCkKLSAgICAgICAgICAgIGluc2VydEJsb2NrUGxhY2Vo
b2xkZXIoZmlyc3RQb3NpdGlvbkluTm9kZShub2RlLmdldCgpKSk7CisgICAgICAgIGlmIChyICYm
IHItPmlzVGFibGVDZWxsKCkgJiYgdG9SZW5kZXJUYWJsZUNlbGwociktPmNvbnRlbnRIZWlnaHQo
KSA8PSAwKSB7CisgICAgICAgICAgICBQb3NpdGlvbiBmaXJzdEVkaXRhYmxlUG9zaXRpb24gPSBm
aXJzdEVkaXRhYmxlUG9zaXRpb25Jbk5vZGUobm9kZS5nZXQoKSk7CisgICAgICAgICAgICBpZiAo
Zmlyc3RFZGl0YWJsZVBvc2l0aW9uLmlzTm90TnVsbCgpKQorICAgICAgICAgICAgICAgIGluc2Vy
dEJsb2NrUGxhY2Vob2xkZXIoZmlyc3RFZGl0YWJsZVBvc2l0aW9uKTsKKyAgICAgICAgfQogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87104</attachid>
            <date>2011-03-27 23:49:10 -0700</date>
            <delta_ts>2011-03-28 21:28:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-57079-20110328174908.patch</filename>
            <type>text/plain</type>
            <size>7533</size>
            <attacher name="Benjamin (Ben) Kalman">kalman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODA2MTgKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBlNjQ1NzZjMjYzMGU3YmYwOTM5MWE1
YWE3Y2QwODg1N2UxNzdmZmIwLi5lNTkyNmIwMGFhMTFhMDdmY2UwOTdkYTllODkzNzQyODBkYzM3
NWVjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDMtMjQgIEJlbmphbWluIEthbG1hbiAg
PGthbG1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgRGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6cmVtb3ZlTm9kZSB0cmllcyB0
byBpbnNlcnQgYmxvY2sgcGxhY2Vob2xkZXIgaW4gbm9uLWVkaXRhYmxlIHRhYmxlIGNlbGwgcG9z
aXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01
NzA3OQorCisgICAgICAgIEFkZCByZWdyZXNzaW9uIHRlc3QuCisKKyAgICAgICAgKiBlZGl0aW5n
L2V4ZWNDb21tYW5kL2RlbGV0ZS10YWJsZS13aXRoLWVtcHR5LWNvbnRlbnRzLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9leGVjQ29tbWFuZC9kZWxldGUtdGFibGUtd2l0
aC1lbXB0eS1jb250ZW50cy5odG1sOiBBZGRlZC4KKwogMjAxMS0wMy0wOCAgTWloYWkgUGFycGFy
aXRhICA8bWloYWlwQGNocm9taXVtLm9yZz4KIAogICAgICAgICBBZGQgZmFpbGluZyBleHBlY3Rh
dGlvbiBmb3IgY29tcG9zaXRpbmcvd2ViZ2wvCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0
aW5nL2V4ZWNDb21tYW5kL2RlbGV0ZS10YWJsZS13aXRoLWVtcHR5LWNvbnRlbnRzLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvZGVsZXRlLXRhYmxlLXdpdGgt
ZW1wdHktY29udGVudHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM5YzM3NDRiMzA2NGYwOGMx
MTc1OGMzZjE2MGRkN2ZiNWI3MTgwOGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9l
ZGl0aW5nL2V4ZWNDb21tYW5kL2RlbGV0ZS10YWJsZS13aXRoLWVtcHR5LWNvbnRlbnRzLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDEzIEBACitUZXN0cyB0aGF0IHRhYmxlcyB0aGF0IGhhdmUgZW1w
dHktcmVuZGVyZWQgY2VsbHMgZHVyaW5nIGRlbGV0aW9uIGFyZSBkZWxldGVkCitjb3JyZWN0bHku
ICBFbXB0eS1yZW5kZXJlZCBjZWxscyBjYW4gYmUgY2F1c2VkIGJ5IGVtcHR5IGNlbGxzLCBjZWxs
cyB3aXRoCitjb250ZW50IHRoYXQgaGFzIG5vIGhlaWdodCwgb3IgY2VsbHMgd2l0aCBlZGl0YWJs
ZSBjb250ZW50IHN1Y2ggdGhhdCB0aGUKK2NvbnRlbnQgaXMgZGVsZXRlZCBwcmlvciB0byB0aGUg
dGFibGUncyBkZWxldGlvbi4KKworUEFTUyAoZW1wdHkpCitQQVNTICh3aXRoIGVtcHR5IHNwYW4p
CitQQVNTICh3aXRoIGVkaXRhYmxlIGVtcHR5IHNwYW4pCitQQVNTICh3aXRoIGVkaXRhYmxlIG5v
bi1lbXB0eSBzcGFuKQorUEFTUyAod2l0aCBuZXN0ZWQgZWRpdGFibGUgbm9uLWVtcHR5IHNwYW5z
KQorUEFTUyAod2l0aCBtdWx0aXBsZSBlZGl0YWJsZSBub24tZW1wdHkgc3BhbnMpCitQQVNTICh3
aXRoIG5lc3RlZCB0YWJsZSkKK1BBU1MgKHdpdGggbmVzdGVkIHRhYmxlIGNvbnRhaW5pbmcgZWRp
dGFibGUgbm9uLWVtcHR5IHNwYW4pCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL2V4
ZWNDb21tYW5kL2RlbGV0ZS10YWJsZS13aXRoLWVtcHR5LWNvbnRlbnRzLmh0bWwgYi9MYXlvdXRU
ZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL2RlbGV0ZS10YWJsZS13aXRoLWVtcHR5LWNvbnRlbnRz
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMDM5ZGMxZmYwOWU1Y2Q0NTA4MjA2NzQ4NWZmOTc5MGNmNmMwOTMy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvZGVs
ZXRlLXRhYmxlLXdpdGgtZW1wdHktY29udGVudHMuaHRtbApAQCAtMCwwICsxLDg3IEBACis8IURP
Q1RZUEUgaHRtbD4KKzxkaXYgY29udGVudGVkaXRhYmxlIHRlc3Q9J2VtcHR5Jz4KKyAgPHRhYmxl
IGNvbnRlbnRlZGl0YWJsZT1mYWxzZT4KKyAgICA8dHI+PHRkPjwvdGQ+PC90cj4KKyAgPC90YWJs
ZT4KKzwvZGl2PgorCis8ZGl2IGNvbnRlbnRlZGl0YWJsZSB0ZXN0PSd3aXRoIGVtcHR5IHNwYW4n
PgorICA8dGFibGUgY29udGVudGVkaXRhYmxlPWZhbHNlPgorICAgIDx0cj48dGQ+PHNwYW4+PC9z
cGFuPjwvdGQ+PC90cj4KKyAgPC90YWJsZT4KKzwvZGl2PgorCis8ZGl2IGNvbnRlbnRlZGl0YWJs
ZSB0ZXN0PSd3aXRoIGVkaXRhYmxlIGVtcHR5IHNwYW4nPgorICA8dGFibGUgY29udGVudGVkaXRh
YmxlPWZhbHNlPgorICAgIDx0cj48dGQ+PHNwYW4gY29udGVudGVkaXRhYmxlPjwvc3Bhbj48L3Rk
PjwvdHI+CisgIDwvdGFibGU+Cis8L2Rpdj4KKworPGRpdiBjb250ZW50ZWRpdGFibGUgdGVzdD0n
d2l0aCBlZGl0YWJsZSBub24tZW1wdHkgc3Bhbic+CisgIDx0YWJsZSBjb250ZW50ZWRpdGFibGU9
ZmFsc2U+CisgICAgPHRyPjx0ZD48c3BhbiBjb250ZW50ZWRpdGFibGU+VGVzdCA0Ljwvc3Bhbj48
L3RkPjwvdHI+CisgIDwvdGFibGU+Cis8L2Rpdj4KKworPGRpdiBjb250ZW50ZWRpdGFibGUgdGVz
dD0nd2l0aCBuZXN0ZWQgZWRpdGFibGUgbm9uLWVtcHR5IHNwYW5zJz4KKyAgPHRhYmxlIGNvbnRl
bnRlZGl0YWJsZT1mYWxzZT4KKyAgICA8dHI+PHRkPjxzcGFuIGNvbnRlbnRlZGl0YWJsZT48c3Bh
bj5UZXN0IDUuPC9zcGFuPjwvc3Bhbj48L3RkPjwvdHI+CisgIDwvdGFibGU+Cis8L2Rpdj4KKwor
PGRpdiBjb250ZW50ZWRpdGFibGUgdGVzdD0nd2l0aCBtdWx0aXBsZSBlZGl0YWJsZSBub24tZW1w
dHkgc3BhbnMnPgorICA8dGFibGUgY29udGVudGVkaXRhYmxlPWZhbHNlPgorICAgIDx0cj48dGQ+
PHNwYW4gY29udGVudGVkaXRhYmxlPlRlc3QgNi48L3NwYW4+PHNwYW4gY29udGVudGVkaXRhYmxl
Pk1vcmUgdGVzdCA2Ljwvc3Bhbj48L3RkPjwvdHI+CisgIDwvdGFibGU+Cis8L2Rpdj4KKworPGRp
diBjb250ZW50ZWRpdGFibGUgdGVzdD0nd2l0aCBuZXN0ZWQgdGFibGUnPgorICA8dGFibGUgY29u
dGVudGVkaXRhYmxlPWZhbHNlPgorICAgIDx0cj48dGQ+PHNwYW4gY29udGVudGVkaXRhYmxlPgor
ICAgICAgPHRhYmxlIGNvbnRlbnRlZGl0YWJsZT1mYWxzZT4KKyAgICAgICAgPHRyPjx0ZD5UZXN0
IDcuPC90ZD48L3RyPgorICAgICAgPC90YWJsZT4KKyAgICA8L3NwYW4+PC90ZD48L3RyPgorICA8
L3RhYmxlPgorPC9kaXY+CisKKzxkaXYgY29udGVudGVkaXRhYmxlIHRlc3Q9J3dpdGggbmVzdGVk
IHRhYmxlIGNvbnRhaW5pbmcgZWRpdGFibGUgbm9uLWVtcHR5IHNwYW4nPgorICA8dGFibGUgY29u
dGVudGVkaXRhYmxlPWZhbHNlPgorICAgIDx0cj48dGQ+PHNwYW4gY29udGVudGVkaXRhYmxlPgor
ICAgICAgPHRhYmxlIGNvbnRlbnRlZGl0YWJsZT1mYWxzZT4KKyAgICAgICAgPHRyPjx0ZD48c3Bh
biBjb250ZW50ZWRpdGFibGU+VGVzdCA4Ljwvc3Bhbj48L3RkPjwvdHI+CisgICAgICA8L3RhYmxl
PgorICAgIDwvc3Bhbj48L3RkPjwvdHI+CisgIDwvdGFibGU+Cis8L2Rpdj4KKworPHByZT4KK1Rl
c3RzIHRoYXQgdGFibGVzIHRoYXQgaGF2ZSBlbXB0eS1yZW5kZXJlZCBjZWxscyBkdXJpbmcgZGVs
ZXRpb24gYXJlIGRlbGV0ZWQKK2NvcnJlY3RseS4gIEVtcHR5LXJlbmRlcmVkIGNlbGxzIGNhbiBi
ZSBjYXVzZWQgYnkgZW1wdHkgY2VsbHMsIGNlbGxzIHdpdGgKK2NvbnRlbnQgdGhhdCBoYXMgbm8g
aGVpZ2h0LCBvciBjZWxscyB3aXRoIGVkaXRhYmxlIGNvbnRlbnQgc3VjaCB0aGF0IHRoZQorY29u
dGVudCBpcyBkZWxldGVkIHByaW9yIHRvIHRoZSB0YWJsZSdzIGRlbGV0aW9uLgorPC9wcmU+CisK
KzxzY3JpcHQ+Cit2YXIgY29uc29sZSA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdw
cmUnKVswXTsKKworZnVuY3Rpb24gcnVuVGVzdEZvckNvbnRhaW5lcihjb250YWluZXIpIHsKKyAg
Y29udGFpbmVyLmZvY3VzKCk7CisgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCdTZWxlY3RBbGwnKTsK
KyAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ0RlbGV0ZScpOworCisgIHZhciB0ZXN0RGVzY3JpcHRp
b24gPSBjb250YWluZXIuZ2V0QXR0cmlidXRlKCd0ZXN0Jyk7CisgIHZhciByZXN1bHQgPSBjb250
YWluZXIuaW5uZXJUZXh0ID09PSAnXG4nID8KKyAgICAgICdQQVNTICgnICArIHRlc3REZXNjcmlw
dGlvbiArICcpJyA6CisgICAgICAnRkFJTCAoJyArIHRlc3REZXNjcmlwdGlvbiArICcpLCBzaG91
bGQgY29udGFpbiBleGFjdGx5IG9uZSBMRiBidXQgd2FzICcgKyBjb250YWluZXIuaW5uZXJUZXh0
OworICBjb25zb2xlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdcbicgKyBy
ZXN1bHQpKTsKKworICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGRvY3Vt
ZW50LmJvZHkucmVtb3ZlQ2hpbGQoY29udGFpbmVyKTsKK30KKworQXJyYXkucHJvdG90eXBlLnNs
aWNlLmNhbGwoZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2RpdicpKS5mb3JFYWNoKHJ1
blRlc3RGb3JDb250YWluZXIpOworCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQor
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cis8L3NjcmlwdD4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpp
bmRleCBjMzViOTNkZDBhMTZhM2FmMDZjMDA3Y2E3MjdkYWYwOTI0MTBjOWZhLi4yOGE0MGI3NzRh
MDNiYTEyNmJjZTk1YTg2Y2E3M2JjZmE4MDEyZDg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAg
QEAKKzIwMTEtMDMtMjQgIEJlbmphbWluIEthbG1hbiAgPGthbG1hbkBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRGVsZXRlU2Vs
ZWN0aW9uQ29tbWFuZDo6cmVtb3ZlTm9kZSB0cmllcyB0byBpbnNlcnQgYmxvY2sgcGxhY2Vob2xk
ZXIgaW4gbm9uLWVkaXRhYmxlIHRhYmxlIGNlbGwgcG9zaXRpb25zCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NzA3OQorCisgICAgICAgIFRlc3Q6IGVk
aXRpbmcvZXhlY0NvbW1hbmQvZGVsZXRlLXRhYmxlLXdpdGgtZW1wdHktY29udGVudHMuaHRtbAor
CisgICAgICAgIFRoaXMgYnVnIHJlc3VsdHMgaW4gYW4gQVNTRVJUIGZhaWwgaW4gQ29tcG9zaXRl
RWRpdENvbW1hbmQ6Omluc2VydE5vZGVBdCwgc28gaXMgb25seSBvYnNlcnZhYmxlIGluIGRlYnVn
IGJ1aWxkcworICAgICAgICBvZiBXZWJLaXQuCisKKyAgICAgICAgKiBlZGl0aW5nL0RlbGV0ZVNl
bGVjdGlvbkNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Zmlyc3RFZGl0YWJsZVBvc2l0
aW9uSW5Ob2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkRlbGV0ZVNlbGVjdGlvbkNvbW1hbmQ6OnJl
bW92ZU5vZGUpOiBVc2UgZmlyc3RFZGl0YWJsZVBvc2l0aW9uSW5Ob2RlIHJhdGhlciB0aGFuIGZp
cnN0UG9zaXRpb25Jbk5vZGUKKyAgICAgICAgdG8gZmluZCBhbmNob3Igbm9kZSBmb3IgdGhlIHBs
YWNlaG9sZGVyJ3MgcG9zaXRpb24sIGlmIGFueS4KKwogMjAxMS0wMy0wOCAgRW5yaWNhIENhc3Vj
Y2kgIDxlbnJpY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVy
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21t
YW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5j
cHAKaW5kZXggODk3YzMwNThjY2RjNzc0NjU1NjMyNGUyZmY5YTQxMWI1MTQ4ZjVkYS4uMWZlOTE0
OWYxNzcyMDVkMTE4YWVhMzgwZjU4NjM5NTU2M2M5ZjRlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCkBAIC0zMzMsNiArMzMzLDE1
IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZVBvc2l0aW9uRm9yTm9kZVJlbW92YWwoTm9kZSogbm9kZSwg
UG9zaXRpb24mIHBvc2l0aW9uKQogICAgIH0KIH0KIAorc3RhdGljIFBvc2l0aW9uIGZpcnN0RWRp
dGFibGVQb3NpdGlvbkluTm9kZShOb2RlKiBub2RlKQoreworICAgIEFTU0VSVChub2RlKTsKKyAg
ICBOb2RlKiBuZXh0ID0gbm9kZTsKKyAgICB3aGlsZSAobmV4dCAmJiAhbmV4dC0+aXNDb250ZW50
RWRpdGFibGUoKSkKKyAgICAgICAgbmV4dCA9IG5leHQtPnRyYXZlcnNlTmV4dE5vZGUobm9kZSk7
CisgICAgcmV0dXJuIG5leHQgPyBmaXJzdFBvc2l0aW9uSW5PckJlZm9yZU5vZGUobmV4dCkgOiBQ
b3NpdGlvbigpOworfQorCiB2b2lkIERlbGV0ZVNlbGVjdGlvbkNvbW1hbmQ6OnJlbW92ZU5vZGUo
UGFzc1JlZlB0cjxOb2RlPiBub2RlKQogewogICAgIGlmICghbm9kZSkKQEAgLTM3MCwxMSArMzc5
LDE0IEBAIHZvaWQgRGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6cmVtb3ZlTm9kZShQYXNzUmVmUHRy
PE5vZGU+IG5vZGUpCiAgICAgICAgICAgICByZW1vdmVOb2RlKHJlbW92ZSk7CiAgICAgICAgIH0K
ICAgICAgICAgCi0gICAgICAgIC8vIG1ha2Ugc3VyZSBlbXB0eSBjZWxsIGhhcyBzb21lIGhlaWdo
dAorICAgICAgICAvLyBNYWtlIHN1cmUgZW1wdHkgY2VsbCBoYXMgc29tZSBoZWlnaHQsIGlmIGEg
cGxhY2Vob2xkZXIgY2FuIGJlIGluc2VydGVkLgogICAgICAgICB1cGRhdGVMYXlvdXQoKTsKICAg
ICAgICAgUmVuZGVyT2JqZWN0ICpyID0gbm9kZS0+cmVuZGVyZXIoKTsKLSAgICAgICAgaWYgKHIg
JiYgci0+aXNUYWJsZUNlbGwoKSAmJiB0b1JlbmRlclRhYmxlQ2VsbChyKS0+Y29udGVudEhlaWdo
dCgpIDw9IDApCi0gICAgICAgICAgICBpbnNlcnRCbG9ja1BsYWNlaG9sZGVyKGZpcnN0UG9zaXRp
b25Jbk5vZGUobm9kZS5nZXQoKSkpOworICAgICAgICBpZiAociAmJiByLT5pc1RhYmxlQ2VsbCgp
ICYmIHRvUmVuZGVyVGFibGVDZWxsKHIpLT5jb250ZW50SGVpZ2h0KCkgPD0gMCkgeworICAgICAg
ICAgICAgUG9zaXRpb24gZmlyc3RFZGl0YWJsZVBvc2l0aW9uID0gZmlyc3RFZGl0YWJsZVBvc2l0
aW9uSW5Ob2RlKG5vZGUuZ2V0KCkpOworICAgICAgICAgICAgaWYgKGZpcnN0RWRpdGFibGVQb3Np
dGlvbi5pc05vdE51bGwoKSkKKyAgICAgICAgICAgICAgICBpbnNlcnRCbG9ja1BsYWNlaG9sZGVy
KGZpcnN0RWRpdGFibGVQb3NpdGlvbik7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwogICAg
IH0KICAgICAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87257</attachid>
            <date>2011-03-28 21:28:43 -0700</date>
            <delta_ts>2011-03-31 00:38:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-57079-20110329152840.patch</filename>
            <type>text/plain</type>
            <size>7547</size>
            <attacher name="Benjamin (Ben) Kalman">kalman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODIxODcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAzMThiYTljMWYwNzEzMGNiNTA0NDkw
MzE3ODNlZjdjNDBjZDEyOWUzLi45Yjc5YjVlZTM3YjU4NDkzYjk2ZDkyYjQ1M2FkNGEyNDU1MTA5
YjJiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDMtMjggIEJlbmphbWluIEthbG1hbiAg
PGthbG1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgRGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6cmVtb3ZlTm9kZSB0cmllcyB0
byBpbnNlcnQgYmxvY2sgcGxhY2Vob2xkZXIgaW4gbm9uLWVkaXRhYmxlIHRhYmxlIGNlbGwgcG9z
aXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01
NzA3OQorCisgICAgICAgIEFkZCByZWdyZXNzaW9uIHRlc3QuCisKKyAgICAgICAgKiBlZGl0aW5n
L2V4ZWNDb21tYW5kL2RlbGV0ZS10YWJsZS13aXRoLWVtcHR5LWNvbnRlbnRzLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9leGVjQ29tbWFuZC9kZWxldGUtdGFibGUtd2l0
aC1lbXB0eS1jb250ZW50cy5odG1sOiBBZGRlZC4KKwogMjAxMS0wMy0yOCAgQW5keSBFc3RlcyAg
PGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgTWFrZSBlbWJlZC1wcmVmZXJzLXBsdWdpbnMt
Zm9yLWltYWdlcy5odG1sIHBhc3Mgb24gYWxsIEFwcGxlIHBsYXRmb3Jtcy4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvZGVsZXRlLXRhYmxlLXdpdGgtZW1wdHkt
Y29udGVudHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9k
ZWxldGUtdGFibGUtd2l0aC1lbXB0eS1jb250ZW50cy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MzljMzc0NGIzMDY0ZjA4YzExNzU4YzNmMTYwZGQ3ZmI1YjcxODA4ZgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvZGVsZXRlLXRhYmxlLXdpdGgtZW1w
dHktY29udGVudHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTMgQEAKK1Rlc3RzIHRoYXQgdGFi
bGVzIHRoYXQgaGF2ZSBlbXB0eS1yZW5kZXJlZCBjZWxscyBkdXJpbmcgZGVsZXRpb24gYXJlIGRl
bGV0ZWQKK2NvcnJlY3RseS4gIEVtcHR5LXJlbmRlcmVkIGNlbGxzIGNhbiBiZSBjYXVzZWQgYnkg
ZW1wdHkgY2VsbHMsIGNlbGxzIHdpdGgKK2NvbnRlbnQgdGhhdCBoYXMgbm8gaGVpZ2h0LCBvciBj
ZWxscyB3aXRoIGVkaXRhYmxlIGNvbnRlbnQgc3VjaCB0aGF0IHRoZQorY29udGVudCBpcyBkZWxl
dGVkIHByaW9yIHRvIHRoZSB0YWJsZSdzIGRlbGV0aW9uLgorCitQQVNTIChlbXB0eSkKK1BBU1Mg
KHdpdGggZW1wdHkgc3BhbikKK1BBU1MgKHdpdGggZWRpdGFibGUgZW1wdHkgc3BhbikKK1BBU1Mg
KHdpdGggZWRpdGFibGUgbm9uLWVtcHR5IHNwYW4pCitQQVNTICh3aXRoIG5lc3RlZCBlZGl0YWJs
ZSBub24tZW1wdHkgc3BhbnMpCitQQVNTICh3aXRoIG11bHRpcGxlIGVkaXRhYmxlIG5vbi1lbXB0
eSBzcGFucykKK1BBU1MgKHdpdGggbmVzdGVkIHRhYmxlKQorUEFTUyAod2l0aCBuZXN0ZWQgdGFi
bGUgY29udGFpbmluZyBlZGl0YWJsZSBub24tZW1wdHkgc3BhbikKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvZGVsZXRlLXRhYmxlLXdpdGgtZW1wdHktY29udGVu
dHMuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvZGVsZXRlLXRhYmxlLXdp
dGgtZW1wdHktY29udGVudHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMzlkYzFmZjA5ZTVjZDQ1MDgyMDY3
NDg1ZmY5NzkwY2Y2YzA5MzIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGlu
Zy9leGVjQ29tbWFuZC9kZWxldGUtdGFibGUtd2l0aC1lbXB0eS1jb250ZW50cy5odG1sCkBAIC0w
LDAgKzEsODcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGRpdiBjb250ZW50ZWRpdGFibGUgdGVzdD0n
ZW1wdHknPgorICA8dGFibGUgY29udGVudGVkaXRhYmxlPWZhbHNlPgorICAgIDx0cj48dGQ+PC90
ZD48L3RyPgorICA8L3RhYmxlPgorPC9kaXY+CisKKzxkaXYgY29udGVudGVkaXRhYmxlIHRlc3Q9
J3dpdGggZW1wdHkgc3Bhbic+CisgIDx0YWJsZSBjb250ZW50ZWRpdGFibGU9ZmFsc2U+CisgICAg
PHRyPjx0ZD48c3Bhbj48L3NwYW4+PC90ZD48L3RyPgorICA8L3RhYmxlPgorPC9kaXY+CisKKzxk
aXYgY29udGVudGVkaXRhYmxlIHRlc3Q9J3dpdGggZWRpdGFibGUgZW1wdHkgc3Bhbic+CisgIDx0
YWJsZSBjb250ZW50ZWRpdGFibGU9ZmFsc2U+CisgICAgPHRyPjx0ZD48c3BhbiBjb250ZW50ZWRp
dGFibGU+PC9zcGFuPjwvdGQ+PC90cj4KKyAgPC90YWJsZT4KKzwvZGl2PgorCis8ZGl2IGNvbnRl
bnRlZGl0YWJsZSB0ZXN0PSd3aXRoIGVkaXRhYmxlIG5vbi1lbXB0eSBzcGFuJz4KKyAgPHRhYmxl
IGNvbnRlbnRlZGl0YWJsZT1mYWxzZT4KKyAgICA8dHI+PHRkPjxzcGFuIGNvbnRlbnRlZGl0YWJs
ZT5UZXN0IDQuPC9zcGFuPjwvdGQ+PC90cj4KKyAgPC90YWJsZT4KKzwvZGl2PgorCis8ZGl2IGNv
bnRlbnRlZGl0YWJsZSB0ZXN0PSd3aXRoIG5lc3RlZCBlZGl0YWJsZSBub24tZW1wdHkgc3BhbnMn
PgorICA8dGFibGUgY29udGVudGVkaXRhYmxlPWZhbHNlPgorICAgIDx0cj48dGQ+PHNwYW4gY29u
dGVudGVkaXRhYmxlPjxzcGFuPlRlc3QgNS48L3NwYW4+PC9zcGFuPjwvdGQ+PC90cj4KKyAgPC90
YWJsZT4KKzwvZGl2PgorCis8ZGl2IGNvbnRlbnRlZGl0YWJsZSB0ZXN0PSd3aXRoIG11bHRpcGxl
IGVkaXRhYmxlIG5vbi1lbXB0eSBzcGFucyc+CisgIDx0YWJsZSBjb250ZW50ZWRpdGFibGU9ZmFs
c2U+CisgICAgPHRyPjx0ZD48c3BhbiBjb250ZW50ZWRpdGFibGU+VGVzdCA2Ljwvc3Bhbj48c3Bh
biBjb250ZW50ZWRpdGFibGU+TW9yZSB0ZXN0IDYuPC9zcGFuPjwvdGQ+PC90cj4KKyAgPC90YWJs
ZT4KKzwvZGl2PgorCis8ZGl2IGNvbnRlbnRlZGl0YWJsZSB0ZXN0PSd3aXRoIG5lc3RlZCB0YWJs
ZSc+CisgIDx0YWJsZSBjb250ZW50ZWRpdGFibGU9ZmFsc2U+CisgICAgPHRyPjx0ZD48c3BhbiBj
b250ZW50ZWRpdGFibGU+CisgICAgICA8dGFibGUgY29udGVudGVkaXRhYmxlPWZhbHNlPgorICAg
ICAgICA8dHI+PHRkPlRlc3QgNy48L3RkPjwvdHI+CisgICAgICA8L3RhYmxlPgorICAgIDwvc3Bh
bj48L3RkPjwvdHI+CisgIDwvdGFibGU+Cis8L2Rpdj4KKworPGRpdiBjb250ZW50ZWRpdGFibGUg
dGVzdD0nd2l0aCBuZXN0ZWQgdGFibGUgY29udGFpbmluZyBlZGl0YWJsZSBub24tZW1wdHkgc3Bh
bic+CisgIDx0YWJsZSBjb250ZW50ZWRpdGFibGU9ZmFsc2U+CisgICAgPHRyPjx0ZD48c3BhbiBj
b250ZW50ZWRpdGFibGU+CisgICAgICA8dGFibGUgY29udGVudGVkaXRhYmxlPWZhbHNlPgorICAg
ICAgICA8dHI+PHRkPjxzcGFuIGNvbnRlbnRlZGl0YWJsZT5UZXN0IDguPC9zcGFuPjwvdGQ+PC90
cj4KKyAgICAgIDwvdGFibGU+CisgICAgPC9zcGFuPjwvdGQ+PC90cj4KKyAgPC90YWJsZT4KKzwv
ZGl2PgorCis8cHJlPgorVGVzdHMgdGhhdCB0YWJsZXMgdGhhdCBoYXZlIGVtcHR5LXJlbmRlcmVk
IGNlbGxzIGR1cmluZyBkZWxldGlvbiBhcmUgZGVsZXRlZAorY29ycmVjdGx5LiAgRW1wdHktcmVu
ZGVyZWQgY2VsbHMgY2FuIGJlIGNhdXNlZCBieSBlbXB0eSBjZWxscywgY2VsbHMgd2l0aAorY29u
dGVudCB0aGF0IGhhcyBubyBoZWlnaHQsIG9yIGNlbGxzIHdpdGggZWRpdGFibGUgY29udGVudCBz
dWNoIHRoYXQgdGhlCitjb250ZW50IGlzIGRlbGV0ZWQgcHJpb3IgdG8gdGhlIHRhYmxlJ3MgZGVs
ZXRpb24uCis8L3ByZT4KKworPHNjcmlwdD4KK3ZhciBjb25zb2xlID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoJ3ByZScpWzBdOworCitmdW5jdGlvbiBydW5UZXN0Rm9yQ29udGFpbmVy
KGNvbnRhaW5lcikgeworICBjb250YWluZXIuZm9jdXMoKTsKKyAgZG9jdW1lbnQuZXhlY0NvbW1h
bmQoJ1NlbGVjdEFsbCcpOworICBkb2N1bWVudC5leGVjQ29tbWFuZCgnRGVsZXRlJyk7CisKKyAg
dmFyIHRlc3REZXNjcmlwdGlvbiA9IGNvbnRhaW5lci5nZXRBdHRyaWJ1dGUoJ3Rlc3QnKTsKKyAg
dmFyIHJlc3VsdCA9IGNvbnRhaW5lci5pbm5lclRleHQgPT09ICdcbicgPworICAgICAgJ1BBU1Mg
KCcgICsgdGVzdERlc2NyaXB0aW9uICsgJyknIDoKKyAgICAgICdGQUlMICgnICsgdGVzdERlc2Ny
aXB0aW9uICsgJyksIHNob3VsZCBjb250YWluIGV4YWN0bHkgb25lIExGIGJ1dCB3YXMgJyArIGNv
bnRhaW5lci5pbm5lclRleHQ7CisgIGNvbnNvbGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRl
VGV4dE5vZGUoJ1xuJyArIHJlc3VsdCkpOworCisgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCisgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChjb250YWluZXIpOworfQorCitB
cnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgn
ZGl2JykpLmZvckVhY2gocnVuVGVzdEZvckNvbnRhaW5lcik7CisKK2lmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCisgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKzwv
c2NyaXB0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCmluZGV4IDcyMWI4MWE5ZDE0MTI3MzhkMzA0NjU0NWQzYzVlMGM5NmQw
YjQ0ZGEuLmE1NDFkZmY1YjE4MWIyYzI0M2QwMTI3OWVhNjM4NDM1YmZiMzY2ZGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyMCBAQAorMjAxMS0wMy0yOCAgQmVuamFtaW4gS2FsbWFuICA8a2FsbWFu
QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBEZWxldGVTZWxlY3Rpb25Db21tYW5kOjpyZW1vdmVOb2RlIHRyaWVzIHRvIGluc2Vy
dCBibG9jayBwbGFjZWhvbGRlciBpbiBub24tZWRpdGFibGUgdGFibGUgY2VsbCBwb3NpdGlvbnMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU3MDc5CisK
KyAgICAgICAgVGVzdDogZWRpdGluZy9leGVjQ29tbWFuZC9kZWxldGUtdGFibGUtd2l0aC1lbXB0
eS1jb250ZW50cy5odG1sCisKKyAgICAgICAgVGhpcyBidWcgcmVzdWx0cyBpbiBhbiBBU1NFUlQg
ZmFpbCBpbiBDb21wb3NpdGVFZGl0Q29tbWFuZDo6aW5zZXJ0Tm9kZUF0LCBzbyBpcyBvbmx5IG9i
c2VydmFibGUgaW4gZGVidWcgYnVpbGRzCisgICAgICAgIG9mIFdlYktpdC4KKworICAgICAgICAq
IGVkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpm
aXJzdEVkaXRhYmxlUG9zaXRpb25Jbk5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6RGVsZXRlU2Vs
ZWN0aW9uQ29tbWFuZDo6cmVtb3ZlTm9kZSk6IFVzZSBmaXJzdEVkaXRhYmxlUG9zaXRpb25Jbk5v
ZGUgcmF0aGVyIHRoYW4gZmlyc3RQb3NpdGlvbkluTm9kZQorICAgICAgICB0byBmaW5kIGFuY2hv
ciBub2RlIGZvciB0aGUgcGxhY2Vob2xkZXIncyBwb3NpdGlvbiwgaWYgYW55LgorCiAyMDExLTAz
LTI4ICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBEYXJpbiBBZGxlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRl
U2VsZWN0aW9uQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVj
dGlvbkNvbW1hbmQuY3BwCmluZGV4IGNiZWJlNTQxMTk4ZGE1MWRhYjZhMmM0MzhlMjdkZDY2MjFj
YWFiNTIuLmFmODQ3M2ZhZTZlNzc3ZDk1YmU1MTZiZjM4OGMzODAxN2I2N2U2OGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcApAQCAt
MzM1LDYgKzMzNSwxNSBAQCBzdGF0aWMgdm9pZCB1cGRhdGVQb3NpdGlvbkZvck5vZGVSZW1vdmFs
KE5vZGUqIG5vZGUsIFBvc2l0aW9uJiBwb3NpdGlvbikKICAgICB9CiB9CiAKK3N0YXRpYyBQb3Np
dGlvbiBmaXJzdEVkaXRhYmxlUG9zaXRpb25Jbk5vZGUoTm9kZSogbm9kZSkKK3sKKyAgICBBU1NF
UlQobm9kZSk7CisgICAgTm9kZSogbmV4dCA9IG5vZGU7CisgICAgd2hpbGUgKG5leHQgJiYgIW5l
eHQtPnJlbmRlcmVySXNFZGl0YWJsZSgpKQorICAgICAgICBuZXh0ID0gbmV4dC0+dHJhdmVyc2VO
ZXh0Tm9kZShub2RlKTsKKyAgICByZXR1cm4gbmV4dCA/IGZpcnN0UG9zaXRpb25Jbk9yQmVmb3Jl
Tm9kZShuZXh0KSA6IFBvc2l0aW9uKCk7Cit9CisKIHZvaWQgRGVsZXRlU2VsZWN0aW9uQ29tbWFu
ZDo6cmVtb3ZlTm9kZShQYXNzUmVmUHRyPE5vZGU+IG5vZGUpCiB7CiAgICAgaWYgKCFub2RlKQpA
QCAtMzcyLDExICszODEsMTQgQEAgdm9pZCBEZWxldGVTZWxlY3Rpb25Db21tYW5kOjpyZW1vdmVO
b2RlKFBhc3NSZWZQdHI8Tm9kZT4gbm9kZSkKICAgICAgICAgICAgIHJlbW92ZU5vZGUocmVtb3Zl
KTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgLy8gbWFrZSBzdXJlIGVtcHR5IGNlbGwg
aGFzIHNvbWUgaGVpZ2h0CisgICAgICAgIC8vIE1ha2Ugc3VyZSBlbXB0eSBjZWxsIGhhcyBzb21l
IGhlaWdodCwgaWYgYSBwbGFjZWhvbGRlciBjYW4gYmUgaW5zZXJ0ZWQuCiAgICAgICAgIHVwZGF0
ZUxheW91dCgpOwogICAgICAgICBSZW5kZXJPYmplY3QgKnIgPSBub2RlLT5yZW5kZXJlcigpOwot
ICAgICAgICBpZiAociAmJiByLT5pc1RhYmxlQ2VsbCgpICYmIHRvUmVuZGVyVGFibGVDZWxsKHIp
LT5jb250ZW50SGVpZ2h0KCkgPD0gMCkKLSAgICAgICAgICAgIGluc2VydEJsb2NrUGxhY2Vob2xk
ZXIoZmlyc3RQb3NpdGlvbkluTm9kZShub2RlLmdldCgpKSk7CisgICAgICAgIGlmIChyICYmIHIt
PmlzVGFibGVDZWxsKCkgJiYgdG9SZW5kZXJUYWJsZUNlbGwociktPmNvbnRlbnRIZWlnaHQoKSA8
PSAwKSB7CisgICAgICAgICAgICBQb3NpdGlvbiBmaXJzdEVkaXRhYmxlUG9zaXRpb24gPSBmaXJz
dEVkaXRhYmxlUG9zaXRpb25Jbk5vZGUobm9kZS5nZXQoKSk7CisgICAgICAgICAgICBpZiAoZmly
c3RFZGl0YWJsZVBvc2l0aW9uLmlzTm90TnVsbCgpKQorICAgICAgICAgICAgICAgIGluc2VydEJs
b2NrUGxhY2Vob2xkZXIoZmlyc3RFZGl0YWJsZVBvc2l0aW9uKTsKKyAgICAgICAgfQogICAgICAg
ICByZXR1cm47CiAgICAgfQogICAgIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>