<?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>50992</bug_id>
          
          <creation_ts>2010-12-13 15:59:14 -0800</creation_ts>
          <short_desc>Clicking on the first or the last letter of LTR/RTL text in a RTL/LTR block puts caret on the opposite side</short_desc>
          <delta_ts>2011-01-04 09:53:48 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>HTML Editing</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</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="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric</cc>
    
    <cc>jamesr</cc>
    
    <cc>mitz</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xji</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>321517</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-12-13 15:59:14 -0800</bug_when>
    <thetext>This is a followup to the bug 33503.  I fixed the case where you click on the left or the right of LTR/RTL text in a RTL/LTR block but I missed the case where we clicked the first or the last letter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321519</commentid>
    <comment_count>1</comment_count>
    <who name="">mitz</who>
    <bug_when>2010-12-13 16:02:22 -0800</bug_when>
    <thetext>Can you give an example of what you mean?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321520</commentid>
    <comment_count>2</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-12-13 16:04:00 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; Can you give an example of what you mean?

Open caret-ltr-2.html or caret-rtl-2.html and click on the first or the last letter of text.  The caret is placed on the opposite side.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321522</commentid>
    <comment_count>3</comment_count>
    <who name="">mitz</who>
    <bug_when>2010-12-13 16:07:46 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (In reply to comment #1)
&gt; &gt; Can you give an example of what you mean?
&gt; 
&gt; Open caret-ltr-2.html or caret-rtl-2.html and click on the first or the last letter of text.  The caret is placed on the opposite side.

I see correct behavior: in caret-ltr-2.html, if I click in the left half of the W, the insertion point appears to the right of “2”. If I click in the right half of the “2”, the insertion point appears to the left of “W”.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321524</commentid>
    <comment_count>4</comment_count>
    <who name="">mitz</who>
    <bug_when>2010-12-13 16:08:36 -0800</bug_when>
    <thetext>(This is with r73922).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321527</commentid>
    <comment_count>5</comment_count>
    <who name="">mitz</who>
    <bug_when>2010-12-13 16:14:04 -0800</bug_when>
    <thetext>Never mind. I wasn’t testing the right build. However, it now appears that in r73922, clicking inside a letter behaves correctly, but clicking on either side of the text behaves incorrectly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321528</commentid>
    <comment_count>6</comment_count>
    <who name="">mitz</who>
    <bug_when>2010-12-13 16:15:19 -0800</bug_when>
    <thetext>I am no longer certain http://trac.webkit.org/changeset/73548 was right.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321532</commentid>
    <comment_count>7</comment_count>
    <who name="">mitz</who>
    <bug_when>2010-12-13 16:20:29 -0800</bug_when>
    <thetext>One last comment (for now): this bug is valid. It suggest to me that &lt;http://trac.webkit.org/changeset/73548&gt; was not the right way to fix bug 33503.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321545</commentid>
    <comment_count>8</comment_count>
      <attachid>76468</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-12-13 16:46:55 -0800</bug_when>
    <thetext>Created attachment 76468
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321546</commentid>
    <comment_count>9</comment_count>
      <attachid>76468</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-12-13 16:47:41 -0800</bug_when>
    <thetext>Comment on attachment 76468
Patch

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

&gt; WebCore/rendering/InlineTextBox.cpp:1116
&gt; +    if ((offset == 0 || offset == m_len) &amp;&amp; renderer()-&gt;containingBlock()-&gt;style()-&gt;isLeftToRightDirection() != isLeftToRightDirection())

I know I should be doing !offset but that looks odd in this context.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321547</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-13 16:49:46 -0800</bug_when>
    <thetext>Attachment 76468 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/editing/selection/caret-bidi-first-and-last-letters-expected.txt&apos;, u&apos;LayoutTests/editing/selection/caret-bidi-first-and-last-letters.html&apos;, u&apos;WebCore/ChangeLog&apos;, u&apos;WebCore/rendering/InlineTextBox.cpp&apos;]&quot; exit_code: 1
WebCore/rendering/InlineTextBox.cpp:1116:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 1 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321563</commentid>
    <comment_count>11</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-12-13 17:10:21 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; Never mind. I wasn’t testing the right build. However, it now appears that in r73922, clicking inside a letter behaves correctly, but clicking on either side of the text behaves incorrectly.

By &quot;behaves incorrectly&quot;, what do you exactly mean?  As far as I checked, when I click on the left of text, the caret is placed on the left, and when I click on the right of text, it&apos;s placed on the right as expected regardless of direction of text or the block.

Or do you expect a different behavior?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321565</commentid>
    <comment_count>12</comment_count>
    <who name="">mitz</who>
    <bug_when>2010-12-13 17:12:22 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #5)
&gt; &gt; Never mind. I wasn’t testing the right build. However, it now appears that in r73922, clicking inside a letter behaves correctly, but clicking on either side of the text behaves incorrectly.
&gt; 
&gt; By &quot;behaves incorrectly&quot;, what do you exactly mean?  As far as I checked, when I click on the left of text, the caret is placed on the left, and when I click on the right of text, it&apos;s placed on the right as expected regardless of direction of text or the block.
&gt; 
&gt; Or do you expect a different behavior?

No, that is the expected behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321567</commentid>
    <comment_count>13</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-12-13 17:26:45 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; &gt; Or do you expect a different behavior?
&gt; 
&gt; No, that is the expected behavior.

Ok. Then I think http://trac.webkit.org/changeset/73548 was an improvement but I didn&apos;t take into account the case where Font::positionForPoint returns 0 or m_len, and this patch addresses those two cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321586</commentid>
    <comment_count>14</comment_count>
      <attachid>76475</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-12-13 17:52:19 -0800</bug_when>
    <thetext>Created attachment 76475
Modified caret-ltr* caret-rtl* per Xiaomei&apos;s request</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321589</commentid>
    <comment_count>15</comment_count>
    <who name="Xiaomei Ji">xji</who>
    <bug_when>2010-12-13 17:55:48 -0800</bug_when>
    <thetext>The Layout test result is confusing.
Given caret-ltr-2.html as example.

If I open the page in browser,
When I click the left empty space of &quot;WebKit2&quot;, the caret is placed at the left of &apos;W&apos;, which is correct.
But the test printed out FAIL: wrong offset 7, expected 0&quot;.

If I click the left half of &apos;W&apos;, the caret is places at very right,  which is wrong.
But the test printed out &quot;PASS&quot;.

The test printed out correct information if I click the right empty space of &quot;WebKit2&quot; or the right half of &apos;2&apos;.

The test also prints out incorrect message when clicking inside the text.

Maybe the test need to be changed to at least not printing wrong message.
 
Thanks for changing the test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321593</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-13 18:01:37 -0800</bug_when>
    <thetext>Attachment 76475 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/editing/selection/caret-bidi-first-and-last-letters-expected.txt&apos;, u&apos;LayoutTests/editing/selection/caret-bidi-first-and-last-letters.html&apos;, u&apos;LayoutTests/editing/selection/resources/caret-edge-shared.js&apos;, u&apos;WebCore/ChangeLog&apos;, u&apos;WebCore/rendering/InlineTextBox.cpp&apos;]&quot; exit_code: 1
WebCore/rendering/InlineTextBox.cpp:1116:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 1 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321594</commentid>
    <comment_count>17</comment_count>
      <attachid>76476</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-12-13 18:01:53 -0800</bug_when>
    <thetext>Created attachment 76476
Refactored some code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322113</commentid>
    <comment_count>18</comment_count>
      <attachid>76558</attachid>
    <who name="Xiaomei Ji">xji</who>
    <bug_when>2010-12-14 12:24:04 -0800</bug_when>
    <thetext>Created attachment 76558
edge cases

seems not working for some edge cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322650</commentid>
    <comment_count>19</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-12-15 10:00:29 -0800</bug_when>
    <thetext>(In reply to comment #18)
&gt; Created an attachment (id=76558) [details]
&gt; edge cases
&gt; 
&gt; seems not working for some edge cases.

Yeah, we need to overhaul most of positionForPoint code for this case to work properly.  However, neither of my changes regress for this edge case.  So as you said, we can probably improve the behavior incrementally.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>329014</commentid>
    <comment_count>20</comment_count>
      <attachid>76476</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-01-04 09:21:26 -0800</bug_when>
    <thetext>Comment on attachment 76476
Refactored some code

Clearing flags on attachment: 76476

Committed r74971: &lt;http://trac.webkit.org/changeset/74971&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>329015</commentid>
    <comment_count>21</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-01-04 09:21:35 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>329016</commentid>
    <comment_count>22</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-01-04 09:25:42 -0800</bug_when>
    <thetext>Thanks for the review, Dan.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>329029</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-04 09:53:48 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/74971 might have broken Qt Linux Release
The following tests are not passing:
editing/selection/caret-bidi-first-and-last-letters.html</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76468</attachid>
            <date>2010-12-13 16:46:55 -0800</date>
            <delta_ts>2010-12-13 17:52:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-50992-20101213164654.patch</filename>
            <type>text/plain</type>
            <size>7441</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmOWIwMjI3MTg3NGE5ODU4NjYzYzA3MjY1NjM4ZWY2N2Y1NWY4ZjJkLi5mMTU0MmI2
ZDlmMGQwNzcxYWRmYmZmNzg3Mzk0MjAxNGFjNDMwY2MyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMTAtMTItMTMgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2xpY2tpbmcgb24gdGhlIGZp
cnN0IG9yIHRoZSBsYXN0IGxldHRlciBvZiBMVFIvUlRMIHRleHQgaW4gYSBSVEwvTFRSIGJsb2Nr
IHB1dHMgY2FyZXQgb24gdGhlIG9wcG9zaXRlIHNpZGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDk5MgorCisgICAgICAgIEFkZGVkIGEgdGVzdCB0
byBlbnN1cmUgV2ViS2l0IHBsYWNlcyB0aGUgY2FyZXQgb24gdGhlIHNpZGUgdXNlciBjbGlja2Vk
IGV2ZW4gd2hlbiB0ZXh0J3MgbmF0dXJhbCBkaXJlY3Rpb24KKyAgICAgICAgYW5kIHRoZSBjb250
YWluaW5nIGJsb2NrJ3MgZGlyZWN0aW9uIGRvIG5vdCBtYXRjaC4KKworICAgICAgICAqIGVkaXRp
bmcvc2VsZWN0aW9uL2NhcmV0LWJpZGktZmlyc3QtYW5kLWxhc3QtbGV0dGVycy1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL2NhcmV0LWJpZGktZmlyc3Qt
YW5kLWxhc3QtbGV0dGVycy5odG1sOiBBZGRlZC4KKwogMjAxMC0xMi0xMyAgQ2hyaXMgRmxlaXph
Y2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEJldGggRGFr
aW4uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9jYXJldC1iaWRp
LWZpcnN0LWFuZC1sYXN0LWxldHRlcnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGlu
Zy9zZWxlY3Rpb24vY2FyZXQtYmlkaS1maXJzdC1hbmQtbGFzdC1sZXR0ZXJzLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45Y2Y0YzI2MjI0ZDUxM2FhMzRjNGVjYTZkZGJkMzJjNjhkNmRkMjg0Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY2FyZXQtYmlk
aS1maXJzdC1hbmQtbGFzdC1sZXR0ZXJzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitU
aGlzIHRlc3RzIHRoYXQgY2xpY2tpbmcgaW4gYSBjb250ZW50ZWRpdGFibGUgZGl2IHdpbGwgc2V0
IHRoZSBjYXJldCBpbiB0aGUgcmlnaHQgcG9zaXRpb24gZm9yIExUUi9SVEwgdGV4dCBpbiBhIFJU
TC9MVFIgYmxvY2suCisKK0NsaWNraW5nIHRoZSBmaXJzdCBsZXR0ZXIgb2YgUlRMIHRleHQgaW4g
YSBMVFIgYmxvY2sKK1BBU1MKK0NsaWNraW5nIHRoZSBsYXN0IGxldHRlciBvZiBSVEwgdGV4dCBp
biBhIExUUiBibG9jaworUEFTUworQ2xpY2tpbmcgdGhlIGZpcnN0IGxldHRlciBvZiBMVFIgdGV4
dCBpbiBhIFJUTCBibG9jaworUEFTUworQ2xpY2tpbmcgdGhlIGxhc3QgbGV0dGVyIG9mIExUUiB0
ZXh0IGluIGEgUlRMIGJsb2NrCitQQVNTCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5n
L3NlbGVjdGlvbi9jYXJldC1iaWRpLWZpcnN0LWFuZC1sYXN0LWxldHRlcnMuaHRtbCBiL0xheW91
dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2NhcmV0LWJpZGktZmlyc3QtYW5kLWxhc3QtbGV0dGVy
cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmYyYjVhMWJmZTQxYjZjYmNhMTUzZTI5NDFjZjM5NjYyODVkYmVm
NjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9jYXJl
dC1iaWRpLWZpcnN0LWFuZC1sYXN0LWxldHRlcnMuaHRtbApAQCAtMCwwICsxLDc1IEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8cD4KK1RoaXMgdGVzdHMgdGhhdCBjbGlja2lu
ZyBpbiBhIGNvbnRlbnRlZGl0YWJsZSBkaXYgd2lsbCBzZXQgdGhlIGNhcmV0IGluIHRoZSByaWdo
dCBwb3NpdGlvbiBmb3IgTFRSL1JUTCB0ZXh0IGluIGEgUlRML0xUUiBibG9jay4KKzwvcD4KKzxk
bD4KKyAgICA8ZHQ+Q2xpY2tpbmcgdGhlIGZpcnN0IGxldHRlciBvZiBSVEwgdGV4dCBpbiBhIExU
UiBibG9jazwvZHQ+CisgICAgPGRkPjxkaXYgaWQ9InJ0bC1pbi1sdHItZmlyc3QiIHN0eWxlPSJm
b250LXNpemU6IDcwcHg7IHdpZHRoOiAyMGV4OyBib3JkZXI6IHNvbGlkIHRoaW4gYmxhY2s7IHBh
ZGRpbmc6IDEwcHg7IiBjb250ZW50ZWRpdGFibGU+JiN4MDVlOTsmI3gwNWQzOyYjeDA1ZDQ7ICYj
eDA1ZDE7JiN4MDVkNTsmI3gwNWU4OzwvZGl2PjwvZGQ+CisgICAgPGR0PkNsaWNraW5nIHRoZSBs
YXN0IGxldHRlciBvZiBSVEwgdGV4dCBpbiBhIExUUiBibG9jazwvZHQ+CisgICAgPGRkPjxkaXYg
aWQ9InJ0bC1pbi1sdHItbGFzdCIgc3R5bGU9ImZvbnQtc2l6ZTogNzBweDsgd2lkdGg6IDIwZXg7
IGJvcmRlcjogc29saWQgdGhpbiBibGFjazsgcGFkZGluZzogMTBweDsiIGNvbnRlbnRlZGl0YWJs
ZT4mI3gwNWU5OyYjeDA1ZDM7JiN4MDVkNDsgJiN4MDVkMTsmI3gwNWQ1OyYjeDA1ZTg7PC9kaXY+
PC9kZD4KKyAgICA8ZHQ+Q2xpY2tpbmcgdGhlIGZpcnN0IGxldHRlciBvZiBMVFIgdGV4dCBpbiBh
IFJUTCBibG9jazwvZHQ+CisgICAgPGRkPjxkaXYgaWQ9Imx0ci1pbi1ydGwtZmlyc3QiIHN0eWxl
PSJkaXJlY3Rpb246IHJ0bDsgZm9udC1zaXplOiA3MHB4OyB3aWR0aDogMjBleDsgYm9yZGVyOiBz
b2xpZCB0aGluIGJsYWNrOyBwYWRkaW5nOiAxMHB4OyIgY29udGVudGVkaXRhYmxlPldlYktpdFc8
L2Rpdj48L2RkPgorICAgIDxkdD5DbGlja2luZyB0aGUgbGFzdCBsZXR0ZXIgb2YgTFRSIHRleHQg
aW4gYSBSVEwgYmxvY2s8L2R0PgorICAgIDxkZD48ZGl2IGlkPSJsdHItaW4tcnRsLWxhc3QiIHN0
eWxlPSJkaXJlY3Rpb246IHJ0bDsgZm9udC1zaXplOiA3MHB4OyB3aWR0aDogMjBleDsgYm9yZGVy
OiBzb2xpZCB0aGluIGJsYWNrOyBwYWRkaW5nOiAxMHB4OyIgY29udGVudGVkaXRhYmxlPldlYktp
dFc8L2Rpdj48L2RkPgorPC9kbD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvY2FyZXQtZWRnZS1z
aGFyZWQuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKK2Z1bmN0
aW9uIHJ1blRlc3QoZGl2LCBjbGlja09uLCBleHBlY3RlZE9mZnNldCkgeworICAgIHZhciBlbGVt
ZW50VG9DYWx1bGF0ZVRleHRXaWR0aCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTsK
KyAgICBlbGVtZW50VG9DYWx1bGF0ZVRleHRXaWR0aC5hcHBlbmRDaGlsZChkaXYuZmlyc3RDaGls
ZC5jbG9uZU5vZGUoKSk7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChlbGVtZW50VG9D
YWx1bGF0ZVRleHRXaWR0aCk7CisgICAgZWxlbWVudFRvQ2FsdWxhdGVUZXh0V2lkdGguc3R5bGUu
Zm9udFNpemUgPSAnNzBweCc7CisKKyAgICB2YXIgaW5SVExCbG9jayA9IGRpdi5zdHlsZS5kaXJl
Y3Rpb24gPT0gJ3J0bCc7CisgICAgdmFyIHggPSAyMDsKKyAgICBpZiAoKCFpblJUTEJsb2NrICYm
IGNsaWNrT24gPT0gJ2xhc3QnKSB8fCAoaW5SVExCbG9jayAmJiBjbGlja09uID09ICdmaXJzdCcp
KQorICAgICAgICB4ID0gZWxlbWVudFRvQ2FsdWxhdGVUZXh0V2lkdGgub2Zmc2V0V2lkdGg7Cisg
ICAgaWYgKGluUlRMQmxvY2spCisgICAgICAgIHggPSBkaXYub2Zmc2V0V2lkdGggLSB4OworCisg
ICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChlbGVtZW50VG9DYWx1bGF0ZVRleHRXaWR0aCk7
CisKKyAgICB2YXIgdmVyaWZ5ID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGlmICghd2luZG93Lmdl
dFNlbGVjdGlvbigpLmlzQ29sbGFwc2VkKQorICAgICAgICAgICAgcmV0dXJuIGxvZyhkaXYsICdG
QUlMOiBzZWxlY3Rpb24gbm90IGNvbGxhcHNlZCcpOworCisgICAgICAgIHZhciByYW5nZSA9IHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5nZXRSYW5nZUF0KDApOworICAgICAgICBpZiAocmFuZ2Uuc3Rh
cnRDb250YWluZXIgIT0gZGl2LmZpcnN0Q2hpbGQpCisgICAgICAgICAgICByZXR1cm4gbG9nKGRp
diwgJ0ZBSUw6IHdyb25nIGNvbnRhaW5lcicpOworICAgICAgICBpZiAocmFuZ2Uuc3RhcnRPZmZz
ZXQgIT0gZXhwZWN0ZWRPZmZzZXQpCisgICAgICAgICAgICByZXR1cm4gbG9nKGRpdiwgJ0ZBSUw6
IHdyb25nIG9mZnNldCAnICsgcmFuZ2Uuc3RhcnRPZmZzZXQgKyAnLCBleHBlY3RlZCAnICsgZXhw
ZWN0ZWRPZmZzZXQpOworCisgICAgICAgIHJldHVybiBsb2coZGl2LCAnUEFTUycpOworICAgIH0K
KworICAgIGlmICghd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgIGRpdi5h
ZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgdmVyaWZ5KTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKGRpdi5vZmZzZXRMZWZ0ICsgeCwgZGl2
Lm9mZnNldFRvcCArIGRpdi5vZmZzZXRIZWlnaHQgLyAyKTsKKyAgICBldmVudFNlbmRlci5sZWFw
Rm9yd2FyZCgyMDApOworICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgIGV2ZW50U2Vu
ZGVyLmxlYXBGb3J3YXJkKDIwMCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworICAgIHZl
cmlmeSh7dGFyZ2V0OiBkaXZ9KTsKK30KKworZnVuY3Rpb24gbG9nKGRpdiwgbWVzc2FnZSkgewor
ICAgIGRpdi5pbm5lckhUTUwgPSBtZXNzYWdlOworfQorCitydW5UZXN0KGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdydGwtaW4tbHRyLWZpcnN0JyksICdmaXJzdCcsIDApOworcnVuVGVzdChkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgncnRsLWluLWx0ci1sYXN0JyksICdsYXN0JywgNyk7CitydW5U
ZXN0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsdHItaW4tcnRsLWZpcnN0JyksICdmaXJzdCcs
IDcpOworcnVuVGVzdChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbHRyLWluLXJ0bC1sYXN0Jyks
ICdsYXN0JywgMCk7CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhMzIzMjMwZmM1YzY5
Y2RiYTQ2ZTE4NjRlZjY5MjQ1MTQ1MjFkYjE5Li4wY2U5ZTE4YTc3ZmZjZTc4OWM2YzZiYWQ3MTc5
YzNlYTYyZWE2MTNkIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEwLTEyLTEzICBSeW9zdWtlIE5pd2EgIDxy
bml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIENsaWNraW5nIG9uIHRoZSBmaXJzdCBvciB0aGUgbGFzdCBsZXR0ZXIgb2YgTFRS
L1JUTCB0ZXh0IGluIGEgUlRML0xUUiBibG9jayBwdXRzIGNhcmV0IG9uIHRoZSBvcHBvc2l0ZSBz
aWRlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTA5
OTIKKworICAgICAgICBGaXhlZCB0aGUgYnVnIGJ5IGludGVyY2hhbmdpbmcgdGhlIG9mZnNldCB3
aGVuIHRoZSBkaXJlY3Rpb24gb2YgaW5saW5lIHRleHQgYm94IGFuZCB0aGUgY29udGFpbmluZyBi
bG9jaworICAgICAgICBkb2VzIG5vdCBtYXRjaC4gUmV1c2VkIHRoZSBjb2RlIGFkZGVkIGJ5IGh0
dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzczNTUzLgorCisgICAgICAgIFRlc3Q6IGVk
aXRpbmcvc2VsZWN0aW9uL2NhcmV0LWJpZGktZmlyc3QtYW5kLWxhc3QtbGV0dGVycy5odG1sCisK
KyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbmxpbmVUZXh0Qm94OjpvZmZzZXRGb3JQb3NpdGlvbik6CisKIDIwMTAtMTItMTMgIEpvb25l
IEh1ciAgPGpvb25lQGtsZHAub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVs
LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAgYi9XZWJD
b3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAppbmRleCBiNzdlZTllOGNmZmIxYmY4ZDI2
MWY5NzA1ODVhYmIwMTgxMjE2ZGZiLi4zZTRmYjIyOGZlYTgwZGI0ZjQ4N2M5MzBhZTk1Nzk0ZDUz
NjA3N2M1IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAor
KysgYi9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcApAQCAtMTExMCw4ICsxMTEw
LDEyIEBAIGludCBJbmxpbmVUZXh0Qm94OjpvZmZzZXRGb3JQb3NpdGlvbihpbnQgbGluZU9mZnNl
dCwgYm9vbCBpbmNsdWRlUGFydGlhbEdseXBocykKICAgICBSZW5kZXJUZXh0KiB0ZXh0ID0gdG9S
ZW5kZXJUZXh0KHJlbmRlcmVyKCkpOwogICAgIFJlbmRlclN0eWxlKiBzdHlsZSA9IHRleHQtPnN0
eWxlKG1fZmlyc3RMaW5lKTsKICAgICBjb25zdCBGb250KiBmID0gJnN0eWxlLT5mb250KCk7Ci0g
ICAgcmV0dXJuIGYtPm9mZnNldEZvclBvc2l0aW9uKFRleHRSdW4odGV4dFJlbmRlcmVyKCktPnRl
eHQoKS0+Y2hhcmFjdGVycygpICsgbV9zdGFydCwgbV9sZW4sIHRleHRSZW5kZXJlcigpLT5hbGxv
d1RhYnMoKSwgdGV4dFBvcygpLCBtX3RvQWRkLCAhaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpLCBt
X2Rpck92ZXJyaWRlIHx8IHN0eWxlLT52aXN1YWxseU9yZGVyZWQoKSksCisgICAgaW50IG9mZnNl
dCA9IGYtPm9mZnNldEZvclBvc2l0aW9uKFRleHRSdW4odGV4dFJlbmRlcmVyKCktPnRleHQoKS0+
Y2hhcmFjdGVycygpICsgbV9zdGFydCwgbV9sZW4sCisgICAgICAgIHRleHRSZW5kZXJlcigpLT5h
bGxvd1RhYnMoKSwgdGV4dFBvcygpLCBtX3RvQWRkLCAhaXNMZWZ0VG9SaWdodERpcmVjdGlvbigp
LCBtX2Rpck92ZXJyaWRlIHx8IHN0eWxlLT52aXN1YWxseU9yZGVyZWQoKSksCiAgICAgICAgIGxp
bmVPZmZzZXQgLSBsb2dpY2FsTGVmdCgpLCBpbmNsdWRlUGFydGlhbEdseXBocyk7CisgICAgaWYg
KChvZmZzZXQgPT0gMCB8fCBvZmZzZXQgPT0gbV9sZW4pICYmIHJlbmRlcmVyKCktPmNvbnRhaW5p
bmdCbG9jaygpLT5zdHlsZSgpLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgIT0gaXNMZWZ0VG9S
aWdodERpcmVjdGlvbigpKQorICAgICAgICByZXR1cm4gKG9mZnNldCA9PSBtX2xlbikgPyAwIDog
bV9sZW47CisgICAgcmV0dXJuIG9mZnNldDsKIH0KIAogaW50IElubGluZVRleHRCb3g6OnBvc2l0
aW9uRm9yT2Zmc2V0KGludCBvZmZzZXQpIGNvbnN0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76475</attachid>
            <date>2010-12-13 17:52:19 -0800</date>
            <delta_ts>2010-12-13 18:01:50 -0800</delta_ts>
            <desc>Modified caret-ltr* caret-rtl* per Xiaomei&apos;s request</desc>
            <filename>bug-50992-20101213175217.patch</filename>
            <type>text/plain</type>
            <size>8205</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmOWIwMjI3MTg3NGE5ODU4NjYzYzA3MjY1NjM4ZWY2N2Y1NWY4ZjJkLi45ZTVkN2M3
NmEwOWQwMmYwMzgzN2ViNWFiNGJiZTc5MTdmODE4OWI0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMTAtMTItMTMgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2xpY2tpbmcgb24gdGhlIGZp
cnN0IG9yIHRoZSBsYXN0IGxldHRlciBvZiBMVFIvUlRMIHRleHQgaW4gYSBSVEwvTFRSIGJsb2Nr
IHB1dHMgY2FyZXQgb24gdGhlIG9wcG9zaXRlIHNpZGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDk5MgorCisgICAgICAgIEFkZGVkIGEgdGVzdCB0
byBlbnN1cmUgV2ViS2l0IHBsYWNlcyB0aGUgY2FyZXQgb24gdGhlIHNpZGUgdXNlciBjbGlja2Vk
IGV2ZW4gd2hlbiB0ZXh0J3MgbmF0dXJhbCBkaXJlY3Rpb24KKyAgICAgICAgYW5kIHRoZSBjb250
YWluaW5nIGJsb2NrJ3MgZGlyZWN0aW9uIGRvIG5vdCBtYXRjaC4KKworICAgICAgICAqIGVkaXRp
bmcvc2VsZWN0aW9uL2NhcmV0LWJpZGktZmlyc3QtYW5kLWxhc3QtbGV0dGVycy1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL2NhcmV0LWJpZGktZmlyc3Qt
YW5kLWxhc3QtbGV0dGVycy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3NlbGVjdGlv
bi9yZXNvdXJjZXMvY2FyZXQtZWRnZS1zaGFyZWQuanM6IEF2b2lkIGNhbGxpbmcgdmVyaWZ5KCkg
b3V0c2lkZSBvZiBEUlQuCisKIDIwMTAtMTItMTMgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNo
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBCZXRoIERha2luLgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY2FyZXQtYmlkaS1maXJzdC1hbmQtbGFz
dC1sZXR0ZXJzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2Nh
cmV0LWJpZGktZmlyc3QtYW5kLWxhc3QtbGV0dGVycy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OWNmNGMyNjIyNGQ1MTNhYTM0YzRlY2E2ZGRiZDMyYzY4ZDZkZDI4NAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2NhcmV0LWJpZGktZmlyc3QtYW5kLWxh
c3QtbGV0dGVycy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorVGhpcyB0ZXN0cyB0aGF0
IGNsaWNraW5nIGluIGEgY29udGVudGVkaXRhYmxlIGRpdiB3aWxsIHNldCB0aGUgY2FyZXQgaW4g
dGhlIHJpZ2h0IHBvc2l0aW9uIGZvciBMVFIvUlRMIHRleHQgaW4gYSBSVEwvTFRSIGJsb2NrLgor
CitDbGlja2luZyB0aGUgZmlyc3QgbGV0dGVyIG9mIFJUTCB0ZXh0IGluIGEgTFRSIGJsb2NrCitQ
QVNTCitDbGlja2luZyB0aGUgbGFzdCBsZXR0ZXIgb2YgUlRMIHRleHQgaW4gYSBMVFIgYmxvY2sK
K1BBU1MKK0NsaWNraW5nIHRoZSBmaXJzdCBsZXR0ZXIgb2YgTFRSIHRleHQgaW4gYSBSVEwgYmxv
Y2sKK1BBU1MKK0NsaWNraW5nIHRoZSBsYXN0IGxldHRlciBvZiBMVFIgdGV4dCBpbiBhIFJUTCBi
bG9jaworUEFTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY2Fy
ZXQtYmlkaS1maXJzdC1hbmQtbGFzdC1sZXR0ZXJzLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5n
L3NlbGVjdGlvbi9jYXJldC1iaWRpLWZpcnN0LWFuZC1sYXN0LWxldHRlcnMuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mMmI1YTFiZmU0MWI2Y2JjYTE1M2UyOTQxY2YzOTY2Mjg1ZGJlZjYxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY2FyZXQtYmlkaS1maXJzdC1h
bmQtbGFzdC1sZXR0ZXJzLmh0bWwKQEAgLTAsMCArMSw3NSBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxib2R5PgorPHA+CitUaGlzIHRlc3RzIHRoYXQgY2xpY2tpbmcgaW4gYSBjb250ZW50
ZWRpdGFibGUgZGl2IHdpbGwgc2V0IHRoZSBjYXJldCBpbiB0aGUgcmlnaHQgcG9zaXRpb24gZm9y
IExUUi9SVEwgdGV4dCBpbiBhIFJUTC9MVFIgYmxvY2suCis8L3A+Cis8ZGw+CisgICAgPGR0PkNs
aWNraW5nIHRoZSBmaXJzdCBsZXR0ZXIgb2YgUlRMIHRleHQgaW4gYSBMVFIgYmxvY2s8L2R0Pgor
ICAgIDxkZD48ZGl2IGlkPSJydGwtaW4tbHRyLWZpcnN0IiBzdHlsZT0iZm9udC1zaXplOiA3MHB4
OyB3aWR0aDogMjBleDsgYm9yZGVyOiBzb2xpZCB0aGluIGJsYWNrOyBwYWRkaW5nOiAxMHB4OyIg
Y29udGVudGVkaXRhYmxlPiYjeDA1ZTk7JiN4MDVkMzsmI3gwNWQ0OyAmI3gwNWQxOyYjeDA1ZDU7
JiN4MDVlODs8L2Rpdj48L2RkPgorICAgIDxkdD5DbGlja2luZyB0aGUgbGFzdCBsZXR0ZXIgb2Yg
UlRMIHRleHQgaW4gYSBMVFIgYmxvY2s8L2R0PgorICAgIDxkZD48ZGl2IGlkPSJydGwtaW4tbHRy
LWxhc3QiIHN0eWxlPSJmb250LXNpemU6IDcwcHg7IHdpZHRoOiAyMGV4OyBib3JkZXI6IHNvbGlk
IHRoaW4gYmxhY2s7IHBhZGRpbmc6IDEwcHg7IiBjb250ZW50ZWRpdGFibGU+JiN4MDVlOTsmI3gw
NWQzOyYjeDA1ZDQ7ICYjeDA1ZDE7JiN4MDVkNTsmI3gwNWU4OzwvZGl2PjwvZGQ+CisgICAgPGR0
PkNsaWNraW5nIHRoZSBmaXJzdCBsZXR0ZXIgb2YgTFRSIHRleHQgaW4gYSBSVEwgYmxvY2s8L2R0
PgorICAgIDxkZD48ZGl2IGlkPSJsdHItaW4tcnRsLWZpcnN0IiBzdHlsZT0iZGlyZWN0aW9uOiBy
dGw7IGZvbnQtc2l6ZTogNzBweDsgd2lkdGg6IDIwZXg7IGJvcmRlcjogc29saWQgdGhpbiBibGFj
azsgcGFkZGluZzogMTBweDsiIGNvbnRlbnRlZGl0YWJsZT5XZWJLaXRXPC9kaXY+PC9kZD4KKyAg
ICA8ZHQ+Q2xpY2tpbmcgdGhlIGxhc3QgbGV0dGVyIG9mIExUUiB0ZXh0IGluIGEgUlRMIGJsb2Nr
PC9kdD4KKyAgICA8ZGQ+PGRpdiBpZD0ibHRyLWluLXJ0bC1sYXN0IiBzdHlsZT0iZGlyZWN0aW9u
OiBydGw7IGZvbnQtc2l6ZTogNzBweDsgd2lkdGg6IDIwZXg7IGJvcmRlcjogc29saWQgdGhpbiBi
bGFjazsgcGFkZGluZzogMTBweDsiIGNvbnRlbnRlZGl0YWJsZT5XZWJLaXRXPC9kaXY+PC9kZD4K
KzwvZGw+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2NhcmV0LWVkZ2Utc2hhcmVkLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQ+CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCitmdW5jdGlvbiBydW5UZXN0KGRp
diwgY2xpY2tPbiwgZXhwZWN0ZWRPZmZzZXQpIHsKKyAgICB2YXIgZWxlbWVudFRvQ2FsdWxhdGVU
ZXh0V2lkdGggPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7CisgICAgZWxlbWVudFRv
Q2FsdWxhdGVUZXh0V2lkdGguYXBwZW5kQ2hpbGQoZGl2LmZpcnN0Q2hpbGQuY2xvbmVOb2RlKCkp
OworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZWxlbWVudFRvQ2FsdWxhdGVUZXh0V2lk
dGgpOworICAgIGVsZW1lbnRUb0NhbHVsYXRlVGV4dFdpZHRoLnN0eWxlLmZvbnRTaXplID0gJzcw
cHgnOworCisgICAgdmFyIGluUlRMQmxvY2sgPSBkaXYuc3R5bGUuZGlyZWN0aW9uID09ICdydGwn
OworICAgIHZhciB4ID0gMjA7CisgICAgaWYgKCghaW5SVExCbG9jayAmJiBjbGlja09uID09ICds
YXN0JykgfHwgKGluUlRMQmxvY2sgJiYgY2xpY2tPbiA9PSAnZmlyc3QnKSkKKyAgICAgICAgeCA9
IGVsZW1lbnRUb0NhbHVsYXRlVGV4dFdpZHRoLm9mZnNldFdpZHRoOworICAgIGlmIChpblJUTEJs
b2NrKQorICAgICAgICB4ID0gZGl2Lm9mZnNldFdpZHRoIC0geDsKKworICAgIGRvY3VtZW50LmJv
ZHkucmVtb3ZlQ2hpbGQoZWxlbWVudFRvQ2FsdWxhdGVUZXh0V2lkdGgpOworCisgICAgdmFyIHZl
cmlmeSA9IGZ1bmN0aW9uKCkgeworICAgICAgICBpZiAoIXdpbmRvdy5nZXRTZWxlY3Rpb24oKS5p
c0NvbGxhcHNlZCkKKyAgICAgICAgICAgIHJldHVybiBsb2coZGl2LCAnRkFJTDogc2VsZWN0aW9u
IG5vdCBjb2xsYXBzZWQnKTsKKworICAgICAgICB2YXIgcmFuZ2UgPSB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuZ2V0UmFuZ2VBdCgwKTsKKyAgICAgICAgaWYgKHJhbmdlLnN0YXJ0Q29udGFpbmVyICE9
IGRpdi5maXJzdENoaWxkKQorICAgICAgICAgICAgcmV0dXJuIGxvZyhkaXYsICdGQUlMOiB3cm9u
ZyBjb250YWluZXInKTsKKyAgICAgICAgaWYgKHJhbmdlLnN0YXJ0T2Zmc2V0ICE9IGV4cGVjdGVk
T2Zmc2V0KQorICAgICAgICAgICAgcmV0dXJuIGxvZyhkaXYsICdGQUlMOiB3cm9uZyBvZmZzZXQg
JyArIHJhbmdlLnN0YXJ0T2Zmc2V0ICsgJywgZXhwZWN0ZWQgJyArIGV4cGVjdGVkT2Zmc2V0KTsK
KworICAgICAgICByZXR1cm4gbG9nKGRpdiwgJ1BBU1MnKTsKKyAgICB9CisKKyAgICBpZiAoIXdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICBkaXYuYWRkRXZlbnRMaXN0ZW5l
cignbW91c2V1cCcsIHZlcmlmeSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBldmVu
dFNlbmRlci5tb3VzZU1vdmVUbyhkaXYub2Zmc2V0TGVmdCArIHgsIGRpdi5vZmZzZXRUb3AgKyBk
aXYub2Zmc2V0SGVpZ2h0IC8gMik7CisgICAgZXZlbnRTZW5kZXIubGVhcEZvcndhcmQoMjAwKTsK
KyAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICBldmVudFNlbmRlci5sZWFwRm9yd2Fy
ZCgyMDApOworICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAgICB2ZXJpZnkoe3RhcmdldDog
ZGl2fSk7Cit9CisKK2Z1bmN0aW9uIGxvZyhkaXYsIG1lc3NhZ2UpIHsKKyAgICBkaXYuaW5uZXJI
VE1MID0gbWVzc2FnZTsKK30KKworcnVuVGVzdChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncnRs
LWluLWx0ci1maXJzdCcpLCAnZmlyc3QnLCAwKTsKK3J1blRlc3QoZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3J0bC1pbi1sdHItbGFzdCcpLCAnbGFzdCcsIDcpOworcnVuVGVzdChkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnbHRyLWluLXJ0bC1maXJzdCcpLCAnZmlyc3QnLCA3KTsKK3J1blRlc3Qo
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2x0ci1pbi1ydGwtbGFzdCcpLCAnbGFzdCcsIDApOwor
Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Vk
aXRpbmcvc2VsZWN0aW9uL3Jlc291cmNlcy9jYXJldC1lZGdlLXNoYXJlZC5qcyBiL0xheW91dFRl
c3RzL2VkaXRpbmcvc2VsZWN0aW9uL3Jlc291cmNlcy9jYXJldC1lZGdlLXNoYXJlZC5qcwppbmRl
eCA2ZWUzNjRjNTE5MzY3ZmZmYmQxNzE3ODE1MmUwOGMyYzJjYWZmYWMzLi43YTJhOTJjNTBkNjc0
ZDVlMjkzNzA3YTY4YTllMjQ1ZGRkZTkwYTY5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9lZGl0
aW5nL3NlbGVjdGlvbi9yZXNvdXJjZXMvY2FyZXQtZWRnZS1zaGFyZWQuanMKKysrIGIvTGF5b3V0
VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vcmVzb3VyY2VzL2NhcmV0LWVkZ2Utc2hhcmVkLmpzCkBA
IC0yLDEwICsyLDggQEAKIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CiAgICAgdmFyIGRpdiA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdkaXYnKVswXTsKIAotICAgIGlmICghd2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgIGRpdi5hZGRFdmVudExpc3RlbmVyKCdtb3Vz
ZXVwJywgdmVyaWZ5KTsKKyAgICBpZiAoIXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKICAg
ICAgICAgcmV0dXJuOwotICAgIH0KIAogICAgIGlmIChjbGlja09uID09ICdsZWZ0JykKICAgICAg
ICAgeCA9IDU7CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IGEzMjMyMzBmYzVjNjljZGJhNDZlMTg2NGVmNjkyNDUxNDUyMWRiMTkuLjBjZTll
MThhNzdmZmNlNzg5YzZjNmJhZDcxNzljM2VhNjJlYTYxM2QgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTAt
MTItMTMgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2xpY2tpbmcgb24gdGhlIGZpcnN0IG9y
IHRoZSBsYXN0IGxldHRlciBvZiBMVFIvUlRMIHRleHQgaW4gYSBSVEwvTFRSIGJsb2NrIHB1dHMg
Y2FyZXQgb24gdGhlIG9wcG9zaXRlIHNpZGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD01MDk5MgorCisgICAgICAgIEZpeGVkIHRoZSBidWcgYnkgaW50
ZXJjaGFuZ2luZyB0aGUgb2Zmc2V0IHdoZW4gdGhlIGRpcmVjdGlvbiBvZiBpbmxpbmUgdGV4dCBi
b3ggYW5kIHRoZSBjb250YWluaW5nIGJsb2NrCisgICAgICAgIGRvZXMgbm90IG1hdGNoLiBSZXVz
ZWQgdGhlIGNvZGUgYWRkZWQgYnkgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvNzM1
NTMuCisKKyAgICAgICAgVGVzdDogZWRpdGluZy9zZWxlY3Rpb24vY2FyZXQtYmlkaS1maXJzdC1h
bmQtbGFzdC1sZXR0ZXJzLmh0bWwKKworICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVUZXh0Qm94
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklubGluZVRleHRCb3g6Om9mZnNldEZvclBvc2l0aW9u
KToKKwogMjAxMC0xMi0xMyAgSm9vbmUgSHVyICA8am9vbmVAa2xkcC5vcmc+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9J
bmxpbmVUZXh0Qm94LmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCmlu
ZGV4IGI3N2VlOWU4Y2ZmYjFiZjhkMjYxZjk3MDU4NWFiYjAxODEyMTZkZmIuLjNlNGZiMjI4ZmVh
ODBkYjRmNDg3YzkzMGFlOTU3OTRkNTM2MDc3YzUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVy
aW5nL0lubGluZVRleHRCb3guY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRC
b3guY3BwCkBAIC0xMTEwLDggKzExMTAsMTIgQEAgaW50IElubGluZVRleHRCb3g6Om9mZnNldEZv
clBvc2l0aW9uKGludCBsaW5lT2Zmc2V0LCBib29sIGluY2x1ZGVQYXJ0aWFsR2x5cGhzKQogICAg
IFJlbmRlclRleHQqIHRleHQgPSB0b1JlbmRlclRleHQocmVuZGVyZXIoKSk7CiAgICAgUmVuZGVy
U3R5bGUqIHN0eWxlID0gdGV4dC0+c3R5bGUobV9maXJzdExpbmUpOwogICAgIGNvbnN0IEZvbnQq
IGYgPSAmc3R5bGUtPmZvbnQoKTsKLSAgICByZXR1cm4gZi0+b2Zmc2V0Rm9yUG9zaXRpb24oVGV4
dFJ1bih0ZXh0UmVuZGVyZXIoKS0+dGV4dCgpLT5jaGFyYWN0ZXJzKCkgKyBtX3N0YXJ0LCBtX2xl
biwgdGV4dFJlbmRlcmVyKCktPmFsbG93VGFicygpLCB0ZXh0UG9zKCksIG1fdG9BZGQsICFpc0xl
ZnRUb1JpZ2h0RGlyZWN0aW9uKCksIG1fZGlyT3ZlcnJpZGUgfHwgc3R5bGUtPnZpc3VhbGx5T3Jk
ZXJlZCgpKSwKKyAgICBpbnQgb2Zmc2V0ID0gZi0+b2Zmc2V0Rm9yUG9zaXRpb24oVGV4dFJ1bih0
ZXh0UmVuZGVyZXIoKS0+dGV4dCgpLT5jaGFyYWN0ZXJzKCkgKyBtX3N0YXJ0LCBtX2xlbiwKKyAg
ICAgICAgdGV4dFJlbmRlcmVyKCktPmFsbG93VGFicygpLCB0ZXh0UG9zKCksIG1fdG9BZGQsICFp
c0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCksIG1fZGlyT3ZlcnJpZGUgfHwgc3R5bGUtPnZpc3VhbGx5
T3JkZXJlZCgpKSwKICAgICAgICAgbGluZU9mZnNldCAtIGxvZ2ljYWxMZWZ0KCksIGluY2x1ZGVQ
YXJ0aWFsR2x5cGhzKTsKKyAgICBpZiAoKG9mZnNldCA9PSAwIHx8IG9mZnNldCA9PSBtX2xlbikg
JiYgcmVuZGVyZXIoKS0+Y29udGFpbmluZ0Jsb2NrKCktPnN0eWxlKCktPmlzTGVmdFRvUmlnaHRE
aXJlY3Rpb24oKSAhPSBpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkpCisgICAgICAgIHJldHVybiAo
b2Zmc2V0ID09IG1fbGVuKSA/IDAgOiBtX2xlbjsKKyAgICByZXR1cm4gb2Zmc2V0OwogfQogCiBp
bnQgSW5saW5lVGV4dEJveDo6cG9zaXRpb25Gb3JPZmZzZXQoaW50IG9mZnNldCkgY29uc3QK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76476</attachid>
            <date>2010-12-13 18:01:53 -0800</date>
            <delta_ts>2011-01-04 09:21:26 -0800</delta_ts>
            <desc>Refactored some code</desc>
            <filename>bug-50992-20101213180152.patch</filename>
            <type>text/plain</type>
            <size>8719</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmOWIwMjI3MTg3NGE5ODU4NjYzYzA3MjY1NjM4ZWY2N2Y1NWY4ZjJkLi45ZTVkN2M3
NmEwOWQwMmYwMzgzN2ViNWFiNGJiZTc5MTdmODE4OWI0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMTAtMTItMTMgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2xpY2tpbmcgb24gdGhlIGZp
cnN0IG9yIHRoZSBsYXN0IGxldHRlciBvZiBMVFIvUlRMIHRleHQgaW4gYSBSVEwvTFRSIGJsb2Nr
IHB1dHMgY2FyZXQgb24gdGhlIG9wcG9zaXRlIHNpZGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDk5MgorCisgICAgICAgIEFkZGVkIGEgdGVzdCB0
byBlbnN1cmUgV2ViS2l0IHBsYWNlcyB0aGUgY2FyZXQgb24gdGhlIHNpZGUgdXNlciBjbGlja2Vk
IGV2ZW4gd2hlbiB0ZXh0J3MgbmF0dXJhbCBkaXJlY3Rpb24KKyAgICAgICAgYW5kIHRoZSBjb250
YWluaW5nIGJsb2NrJ3MgZGlyZWN0aW9uIGRvIG5vdCBtYXRjaC4KKworICAgICAgICAqIGVkaXRp
bmcvc2VsZWN0aW9uL2NhcmV0LWJpZGktZmlyc3QtYW5kLWxhc3QtbGV0dGVycy1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL2NhcmV0LWJpZGktZmlyc3Qt
YW5kLWxhc3QtbGV0dGVycy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3NlbGVjdGlv
bi9yZXNvdXJjZXMvY2FyZXQtZWRnZS1zaGFyZWQuanM6IEF2b2lkIGNhbGxpbmcgdmVyaWZ5KCkg
b3V0c2lkZSBvZiBEUlQuCisKIDIwMTAtMTItMTMgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNo
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBCZXRoIERha2luLgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY2FyZXQtYmlkaS1maXJzdC1hbmQtbGFz
dC1sZXR0ZXJzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2Nh
cmV0LWJpZGktZmlyc3QtYW5kLWxhc3QtbGV0dGVycy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OWNmNGMyNjIyNGQ1MTNhYTM0YzRlY2E2ZGRiZDMyYzY4ZDZkZDI4NAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2NhcmV0LWJpZGktZmlyc3QtYW5kLWxh
c3QtbGV0dGVycy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorVGhpcyB0ZXN0cyB0aGF0
IGNsaWNraW5nIGluIGEgY29udGVudGVkaXRhYmxlIGRpdiB3aWxsIHNldCB0aGUgY2FyZXQgaW4g
dGhlIHJpZ2h0IHBvc2l0aW9uIGZvciBMVFIvUlRMIHRleHQgaW4gYSBSVEwvTFRSIGJsb2NrLgor
CitDbGlja2luZyB0aGUgZmlyc3QgbGV0dGVyIG9mIFJUTCB0ZXh0IGluIGEgTFRSIGJsb2NrCitQ
QVNTCitDbGlja2luZyB0aGUgbGFzdCBsZXR0ZXIgb2YgUlRMIHRleHQgaW4gYSBMVFIgYmxvY2sK
K1BBU1MKK0NsaWNraW5nIHRoZSBmaXJzdCBsZXR0ZXIgb2YgTFRSIHRleHQgaW4gYSBSVEwgYmxv
Y2sKK1BBU1MKK0NsaWNraW5nIHRoZSBsYXN0IGxldHRlciBvZiBMVFIgdGV4dCBpbiBhIFJUTCBi
bG9jaworUEFTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY2Fy
ZXQtYmlkaS1maXJzdC1hbmQtbGFzdC1sZXR0ZXJzLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5n
L3NlbGVjdGlvbi9jYXJldC1iaWRpLWZpcnN0LWFuZC1sYXN0LWxldHRlcnMuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mMmI1YTFiZmU0MWI2Y2JjYTE1M2UyOTQxY2YzOTY2Mjg1ZGJlZjYxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY2FyZXQtYmlkaS1maXJzdC1h
bmQtbGFzdC1sZXR0ZXJzLmh0bWwKQEAgLTAsMCArMSw3NSBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxib2R5PgorPHA+CitUaGlzIHRlc3RzIHRoYXQgY2xpY2tpbmcgaW4gYSBjb250ZW50
ZWRpdGFibGUgZGl2IHdpbGwgc2V0IHRoZSBjYXJldCBpbiB0aGUgcmlnaHQgcG9zaXRpb24gZm9y
IExUUi9SVEwgdGV4dCBpbiBhIFJUTC9MVFIgYmxvY2suCis8L3A+Cis8ZGw+CisgICAgPGR0PkNs
aWNraW5nIHRoZSBmaXJzdCBsZXR0ZXIgb2YgUlRMIHRleHQgaW4gYSBMVFIgYmxvY2s8L2R0Pgor
ICAgIDxkZD48ZGl2IGlkPSJydGwtaW4tbHRyLWZpcnN0IiBzdHlsZT0iZm9udC1zaXplOiA3MHB4
OyB3aWR0aDogMjBleDsgYm9yZGVyOiBzb2xpZCB0aGluIGJsYWNrOyBwYWRkaW5nOiAxMHB4OyIg
Y29udGVudGVkaXRhYmxlPiYjeDA1ZTk7JiN4MDVkMzsmI3gwNWQ0OyAmI3gwNWQxOyYjeDA1ZDU7
JiN4MDVlODs8L2Rpdj48L2RkPgorICAgIDxkdD5DbGlja2luZyB0aGUgbGFzdCBsZXR0ZXIgb2Yg
UlRMIHRleHQgaW4gYSBMVFIgYmxvY2s8L2R0PgorICAgIDxkZD48ZGl2IGlkPSJydGwtaW4tbHRy
LWxhc3QiIHN0eWxlPSJmb250LXNpemU6IDcwcHg7IHdpZHRoOiAyMGV4OyBib3JkZXI6IHNvbGlk
IHRoaW4gYmxhY2s7IHBhZGRpbmc6IDEwcHg7IiBjb250ZW50ZWRpdGFibGU+JiN4MDVlOTsmI3gw
NWQzOyYjeDA1ZDQ7ICYjeDA1ZDE7JiN4MDVkNTsmI3gwNWU4OzwvZGl2PjwvZGQ+CisgICAgPGR0
PkNsaWNraW5nIHRoZSBmaXJzdCBsZXR0ZXIgb2YgTFRSIHRleHQgaW4gYSBSVEwgYmxvY2s8L2R0
PgorICAgIDxkZD48ZGl2IGlkPSJsdHItaW4tcnRsLWZpcnN0IiBzdHlsZT0iZGlyZWN0aW9uOiBy
dGw7IGZvbnQtc2l6ZTogNzBweDsgd2lkdGg6IDIwZXg7IGJvcmRlcjogc29saWQgdGhpbiBibGFj
azsgcGFkZGluZzogMTBweDsiIGNvbnRlbnRlZGl0YWJsZT5XZWJLaXRXPC9kaXY+PC9kZD4KKyAg
ICA8ZHQ+Q2xpY2tpbmcgdGhlIGxhc3QgbGV0dGVyIG9mIExUUiB0ZXh0IGluIGEgUlRMIGJsb2Nr
PC9kdD4KKyAgICA8ZGQ+PGRpdiBpZD0ibHRyLWluLXJ0bC1sYXN0IiBzdHlsZT0iZGlyZWN0aW9u
OiBydGw7IGZvbnQtc2l6ZTogNzBweDsgd2lkdGg6IDIwZXg7IGJvcmRlcjogc29saWQgdGhpbiBi
bGFjazsgcGFkZGluZzogMTBweDsiIGNvbnRlbnRlZGl0YWJsZT5XZWJLaXRXPC9kaXY+PC9kZD4K
KzwvZGw+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2NhcmV0LWVkZ2Utc2hhcmVkLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQ+CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCitmdW5jdGlvbiBydW5UZXN0KGRp
diwgY2xpY2tPbiwgZXhwZWN0ZWRPZmZzZXQpIHsKKyAgICB2YXIgZWxlbWVudFRvQ2FsdWxhdGVU
ZXh0V2lkdGggPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7CisgICAgZWxlbWVudFRv
Q2FsdWxhdGVUZXh0V2lkdGguYXBwZW5kQ2hpbGQoZGl2LmZpcnN0Q2hpbGQuY2xvbmVOb2RlKCkp
OworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZWxlbWVudFRvQ2FsdWxhdGVUZXh0V2lk
dGgpOworICAgIGVsZW1lbnRUb0NhbHVsYXRlVGV4dFdpZHRoLnN0eWxlLmZvbnRTaXplID0gJzcw
cHgnOworCisgICAgdmFyIGluUlRMQmxvY2sgPSBkaXYuc3R5bGUuZGlyZWN0aW9uID09ICdydGwn
OworICAgIHZhciB4ID0gMjA7CisgICAgaWYgKCghaW5SVExCbG9jayAmJiBjbGlja09uID09ICds
YXN0JykgfHwgKGluUlRMQmxvY2sgJiYgY2xpY2tPbiA9PSAnZmlyc3QnKSkKKyAgICAgICAgeCA9
IGVsZW1lbnRUb0NhbHVsYXRlVGV4dFdpZHRoLm9mZnNldFdpZHRoOworICAgIGlmIChpblJUTEJs
b2NrKQorICAgICAgICB4ID0gZGl2Lm9mZnNldFdpZHRoIC0geDsKKworICAgIGRvY3VtZW50LmJv
ZHkucmVtb3ZlQ2hpbGQoZWxlbWVudFRvQ2FsdWxhdGVUZXh0V2lkdGgpOworCisgICAgdmFyIHZl
cmlmeSA9IGZ1bmN0aW9uKCkgeworICAgICAgICBpZiAoIXdpbmRvdy5nZXRTZWxlY3Rpb24oKS5p
c0NvbGxhcHNlZCkKKyAgICAgICAgICAgIHJldHVybiBsb2coZGl2LCAnRkFJTDogc2VsZWN0aW9u
IG5vdCBjb2xsYXBzZWQnKTsKKworICAgICAgICB2YXIgcmFuZ2UgPSB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuZ2V0UmFuZ2VBdCgwKTsKKyAgICAgICAgaWYgKHJhbmdlLnN0YXJ0Q29udGFpbmVyICE9
IGRpdi5maXJzdENoaWxkKQorICAgICAgICAgICAgcmV0dXJuIGxvZyhkaXYsICdGQUlMOiB3cm9u
ZyBjb250YWluZXInKTsKKyAgICAgICAgaWYgKHJhbmdlLnN0YXJ0T2Zmc2V0ICE9IGV4cGVjdGVk
T2Zmc2V0KQorICAgICAgICAgICAgcmV0dXJuIGxvZyhkaXYsICdGQUlMOiB3cm9uZyBvZmZzZXQg
JyArIHJhbmdlLnN0YXJ0T2Zmc2V0ICsgJywgZXhwZWN0ZWQgJyArIGV4cGVjdGVkT2Zmc2V0KTsK
KworICAgICAgICByZXR1cm4gbG9nKGRpdiwgJ1BBU1MnKTsKKyAgICB9CisKKyAgICBpZiAoIXdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICBkaXYuYWRkRXZlbnRMaXN0ZW5l
cignbW91c2V1cCcsIHZlcmlmeSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBldmVu
dFNlbmRlci5tb3VzZU1vdmVUbyhkaXYub2Zmc2V0TGVmdCArIHgsIGRpdi5vZmZzZXRUb3AgKyBk
aXYub2Zmc2V0SGVpZ2h0IC8gMik7CisgICAgZXZlbnRTZW5kZXIubGVhcEZvcndhcmQoMjAwKTsK
KyAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICBldmVudFNlbmRlci5sZWFwRm9yd2Fy
ZCgyMDApOworICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAgICB2ZXJpZnkoe3RhcmdldDog
ZGl2fSk7Cit9CisKK2Z1bmN0aW9uIGxvZyhkaXYsIG1lc3NhZ2UpIHsKKyAgICBkaXYuaW5uZXJI
VE1MID0gbWVzc2FnZTsKK30KKworcnVuVGVzdChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncnRs
LWluLWx0ci1maXJzdCcpLCAnZmlyc3QnLCAwKTsKK3J1blRlc3QoZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3J0bC1pbi1sdHItbGFzdCcpLCAnbGFzdCcsIDcpOworcnVuVGVzdChkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnbHRyLWluLXJ0bC1maXJzdCcpLCAnZmlyc3QnLCA3KTsKK3J1blRlc3Qo
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2x0ci1pbi1ydGwtbGFzdCcpLCAnbGFzdCcsIDApOwor
Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Vk
aXRpbmcvc2VsZWN0aW9uL3Jlc291cmNlcy9jYXJldC1lZGdlLXNoYXJlZC5qcyBiL0xheW91dFRl
c3RzL2VkaXRpbmcvc2VsZWN0aW9uL3Jlc291cmNlcy9jYXJldC1lZGdlLXNoYXJlZC5qcwppbmRl
eCA2ZWUzNjRjNTE5MzY3ZmZmYmQxNzE3ODE1MmUwOGMyYzJjYWZmYWMzLi43YTJhOTJjNTBkNjc0
ZDVlMjkzNzA3YTY4YTllMjQ1ZGRkZTkwYTY5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9lZGl0
aW5nL3NlbGVjdGlvbi9yZXNvdXJjZXMvY2FyZXQtZWRnZS1zaGFyZWQuanMKKysrIGIvTGF5b3V0
VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vcmVzb3VyY2VzL2NhcmV0LWVkZ2Utc2hhcmVkLmpzCkBA
IC0yLDEwICsyLDggQEAKIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CiAgICAgdmFyIGRpdiA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdkaXYnKVswXTsKIAotICAgIGlmICghd2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgIGRpdi5hZGRFdmVudExpc3RlbmVyKCdtb3Vz
ZXVwJywgdmVyaWZ5KTsKKyAgICBpZiAoIXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKICAg
ICAgICAgcmV0dXJuOwotICAgIH0KIAogICAgIGlmIChjbGlja09uID09ICdsZWZ0JykKICAgICAg
ICAgeCA9IDU7CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IGEzMjMyMzBmYzVjNjljZGJhNDZlMTg2NGVmNjkyNDUxNDUyMWRiMTkuLjBjZTll
MThhNzdmZmNlNzg5YzZjNmJhZDcxNzljM2VhNjJlYTYxM2QgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTAt
MTItMTMgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2xpY2tpbmcgb24gdGhlIGZpcnN0IG9y
IHRoZSBsYXN0IGxldHRlciBvZiBMVFIvUlRMIHRleHQgaW4gYSBSVEwvTFRSIGJsb2NrIHB1dHMg
Y2FyZXQgb24gdGhlIG9wcG9zaXRlIHNpZGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD01MDk5MgorCisgICAgICAgIEZpeGVkIHRoZSBidWcgYnkgaW50
ZXJjaGFuZ2luZyB0aGUgb2Zmc2V0IHdoZW4gdGhlIGRpcmVjdGlvbiBvZiBpbmxpbmUgdGV4dCBi
b3ggYW5kIHRoZSBjb250YWluaW5nIGJsb2NrCisgICAgICAgIGRvZXMgbm90IG1hdGNoLiBSZXVz
ZWQgdGhlIGNvZGUgYWRkZWQgYnkgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvNzM1
NTMuCisKKyAgICAgICAgVGVzdDogZWRpdGluZy9zZWxlY3Rpb24vY2FyZXQtYmlkaS1maXJzdC1h
bmQtbGFzdC1sZXR0ZXJzLmh0bWwKKworICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVUZXh0Qm94
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklubGluZVRleHRCb3g6Om9mZnNldEZvclBvc2l0aW9u
KToKKwogMjAxMC0xMi0xMyAgSm9vbmUgSHVyICA8am9vbmVAa2xkcC5vcmc+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9J
bmxpbmVUZXh0Qm94LmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCmlu
ZGV4IGI3N2VlOWU4Y2ZmYjFiZjhkMjYxZjk3MDU4NWFiYjAxODEyMTZkZmIuLmEwMjU0NTg3N2Uz
OTYyZDc5N2NkM2RhMjkyZGI3OTlkYzI5OWRhYjAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVy
aW5nL0lubGluZVRleHRCb3guY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRC
b3guY3BwCkBAIC0xMDk5LDcgKzEwOTksOCBAQCBpbnQgSW5saW5lVGV4dEJveDo6b2Zmc2V0Rm9y
UG9zaXRpb24oaW50IGxpbmVPZmZzZXQsIGJvb2wgaW5jbHVkZVBhcnRpYWxHbHlwaHMpCiAKICAg
ICBpbnQgbGVmdE9mZnNldCA9IGlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IDAgOiBtX2xlbjsK
ICAgICBpbnQgcmlnaHRPZmZzZXQgPSBpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBtX2xlbiA6
IDA7Ci0gICAgaWYgKHJlbmRlcmVyKCktPmNvbnRhaW5pbmdCbG9jaygpLT5zdHlsZSgpLT5pc0xl
ZnRUb1JpZ2h0RGlyZWN0aW9uKCkgIT0gaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKQorICAgIGJv
b2wgYmxvY2tJc0luT3Bwb3NpdGVEaXJlY3Rpb24gPSByZW5kZXJlcigpLT5jb250YWluaW5nQmxv
Y2soKS0+c3R5bGUoKS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpICE9IGlzTGVmdFRvUmlnaHRE
aXJlY3Rpb24oKTsKKyAgICBpZiAoYmxvY2tJc0luT3Bwb3NpdGVEaXJlY3Rpb24pCiAgICAgICAg
IHN3YXAobGVmdE9mZnNldCwgcmlnaHRPZmZzZXQpOwogCiAgICAgaWYgKGxpbmVPZmZzZXQgLSBs
b2dpY2FsTGVmdCgpID4gbG9naWNhbFdpZHRoKCkpCkBAIC0xMTEwLDggKzExMTEsMTIgQEAgaW50
IElubGluZVRleHRCb3g6Om9mZnNldEZvclBvc2l0aW9uKGludCBsaW5lT2Zmc2V0LCBib29sIGlu
Y2x1ZGVQYXJ0aWFsR2x5cGhzKQogICAgIFJlbmRlclRleHQqIHRleHQgPSB0b1JlbmRlclRleHQo
cmVuZGVyZXIoKSk7CiAgICAgUmVuZGVyU3R5bGUqIHN0eWxlID0gdGV4dC0+c3R5bGUobV9maXJz
dExpbmUpOwogICAgIGNvbnN0IEZvbnQqIGYgPSAmc3R5bGUtPmZvbnQoKTsKLSAgICByZXR1cm4g
Zi0+b2Zmc2V0Rm9yUG9zaXRpb24oVGV4dFJ1bih0ZXh0UmVuZGVyZXIoKS0+dGV4dCgpLT5jaGFy
YWN0ZXJzKCkgKyBtX3N0YXJ0LCBtX2xlbiwgdGV4dFJlbmRlcmVyKCktPmFsbG93VGFicygpLCB0
ZXh0UG9zKCksIG1fdG9BZGQsICFpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCksIG1fZGlyT3ZlcnJp
ZGUgfHwgc3R5bGUtPnZpc3VhbGx5T3JkZXJlZCgpKSwKKyAgICBpbnQgb2Zmc2V0ID0gZi0+b2Zm
c2V0Rm9yUG9zaXRpb24oVGV4dFJ1bih0ZXh0UmVuZGVyZXIoKS0+dGV4dCgpLT5jaGFyYWN0ZXJz
KCkgKyBtX3N0YXJ0LCBtX2xlbiwKKyAgICAgICAgdGV4dFJlbmRlcmVyKCktPmFsbG93VGFicygp
LCB0ZXh0UG9zKCksIG1fdG9BZGQsICFpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCksIG1fZGlyT3Zl
cnJpZGUgfHwgc3R5bGUtPnZpc3VhbGx5T3JkZXJlZCgpKSwKICAgICAgICAgbGluZU9mZnNldCAt
IGxvZ2ljYWxMZWZ0KCksIGluY2x1ZGVQYXJ0aWFsR2x5cGhzKTsKKyAgICBpZiAoYmxvY2tJc0lu
T3Bwb3NpdGVEaXJlY3Rpb24gJiYgKCFvZmZzZXQgfHwgb2Zmc2V0ID09IG1fbGVuKSkKKyAgICAg
ICAgcmV0dXJuICFvZmZzZXQgPyBtX2xlbiA6IDA7CisgICAgcmV0dXJuIG9mZnNldDsKIH0KIAog
aW50IElubGluZVRleHRCb3g6OnBvc2l0aW9uRm9yT2Zmc2V0KGludCBvZmZzZXQpIGNvbnN0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>76558</attachid>
            <date>2010-12-14 12:24:04 -0800</date>
            <delta_ts>2010-12-14 12:24:04 -0800</delta_ts>
            <desc>edge cases</desc>
            <filename>50992.html</filename>
            <type>text/html</type>
            <size>297</size>
            <attacher name="Xiaomei Ji">xji</attacher>
            
              <data encoding="base64">PGhlYWQ+CiAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQv
aHRtbDsgY2hhcnNldD11dGYtOCI+CjwvaGVhZD4KPGJvZHk+Cgo8ZGl2IGRpcj1ydGwgIGNvbnRl
bnRlZGl0YWJsZT5Mb3JlbSA8c3BhbiAgc3R5bGU9ImRpcmVjdGlvbjogcnRsIj5pcCBzdW1kb2xv
ciBzaXQ8L3NwYW4+IGFtZXQ8L2Rpdj4KCjxkaXYgc3R5bGU9ImRpcmVjdGlvbjogbHRyOyIgY29u
dGVudGVkaXRhYmxlPiBKdXN0IDxzcGFuPnRlc3Rpbmcg16jXpzwvc3Bhbj4g15HXldeT16cgPC9k
aXY+CjwvYm9keT4K
</data>

          </attachment>
      

    </bug>

</bugzilla>