<?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>30116</bug_id>
          
          <creation_ts>2009-10-06 04:06:00 -0700</creation_ts>
          <short_desc>WebCore::InsertLineBreakCommand::shouldUseBreakElement ReadAV@NULL</short_desc>
          <delta_ts>2010-07-09 09:57:05 -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>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>http://skypher.com/SkyLined/Repro/WebKit/Bug%2030116%20-%20execCommand%20NULL%20ptr%20ReadAV@chrome!WebCore..InsertLineBreakCommand..shouldUseBreakElement/repro.html</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>GoogleBug, InRadar</keywords>
          <priority>P1</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Berend-Jan Wever">skylined</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>adele</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>enrica</cc>
    
    <cc>eric</cc>
    
    <cc>jparent</cc>
    
    <cc>ojan</cc>
    
    <cc>ossy</cc>
    
    <cc>rniwa</cc>
    
    <cc>thestig</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>152647</commentid>
    <comment_count>0</comment_count>
    <who name="Berend-Jan Wever">skylined</who>
    <bug_when>2009-10-06 04:06:00 -0700</bug_when>
    <thetext>This HTML triggers a NULL pointer read access violation in Chromium ToT about 50% of the time, but does appear to affect Safari 4:
&lt;HTML&gt;
  &lt;BODY onload=&quot;go()&quot;&gt;&lt;/BODY&gt;
  &lt;SCRIPT&gt;
    function go() {
      document.designMode = &quot;on&quot;;
      document.execCommand(&quot;SelectAll&quot;);
      document.execCommand(&quot;InsertLineBreak&quot;);
      document.execCommand(&quot;Indent&quot;);
      document.execCommand(&quot;insertparagraph&quot;);
    }
  &lt;/SCRIPT&gt;
&lt;/HTML&gt;

Here&apos;s some potentially useful info:
        Attempt to read from a NULL pointer (+0x1C), instruction:
        6c96e2b7 8b411c          mov     eax,dword ptr [ecx+1Ch]
        Registers:
            eax=003ce9f8 ebx=ffffffff ecx=00000000 edx=00000000 esi=0496c900 edi=0496c900 esp=003ce9ec ebp=003cea08 eip=6c96e2b7
        Stack:
            ChildEBP RetAddr  
            003cea08 6c96e40d chrome_6bed0000!WebCore::InsertLineBreakCommand::shouldUseBreakElement(class WebCore::Position * insertionPos = 0x003ceb20)+0x17
            003ceb30 6c6f8967 chrome_6bed0000!WebCore::InsertLineBreakCommand::doApply(void)+0x10d
            003ceb40 6c8b66ec chrome_6bed0000!WebCore::EditCommand::apply(void)+0x67
            003ceb58 6c96fa9b chrome_6bed0000!WebCore::CompositeEditCommand::applyCommandToComposite(class WTF::PassRefPtr&lt;WebCore::EditCommand&gt; cmd = class WTF::PassRefPtr&lt;WebCore::EditCommand&gt;)+0x1c
            003cec58 6c6f8967 chrome_6bed0000!WebCore::InsertParagraphSeparatorCommand::doApply(void)+0xb6b
            003cec68 6c8b66ec chrome_6bed0000!WebCore::EditCommand::apply(void)+0x67
            003cec80 6c875b72 chrome_6bed0000!WebCore::CompositeEditCommand::applyCommandToComposite(class WTF::PassRefPtr&lt;WebCore::EditCommand&gt; cmd = class WTF::PassRefPtr&lt;WebCore::EditCommand&gt;)+0x1c
            003cec90 6c6f8967 chrome_6bed0000!WebCore::TypingCommand::insertParagraphSeparator(void)+0x32
            003ceca0 6c6f8c7e chrome_6bed0000!WebCore::EditCommand::apply(void)+0x67
            003cecac 6c8777f7 chrome_6bed0000!WebCore::applyCommand(class WTF::PassRefPtr&lt;WebCore::EditCommand&gt; command = class WTF::PassRefPtr&lt;WebCore::EditCommand&gt;)+0xe
            003cecc0 6c6f8fb1 chrome_6bed0000!WebCore::TypingCommand::insertParagraphSeparator(class WebCore::Document * document = 0x00f52d40)+0x77
            003ceccc 6c6fa310 chrome_6bed0000!WebCore::executeInsertParagraph(class WebCore::Frame * frame = 0x0152a000, class WebCore::Event * __formal = 0x00000000, WebCore::EditorCommandSource __formal = CommandFromDOM (1), class WebCore::String * __formal = 0x003ced48)+0x11
            003cecec 6c67ba17 chrome_6bed0000!WebCore::Editor::Command::execute(class WebCore::String * parameter = 0x003ced48, class WebCore::Event * triggeringEvent = 0x00000000)+0x90
            003ced14 6c739da8 chrome_6bed0000!WebCore::Document::execCommand(class WebCore::String * commandName = 0x003ced38, bool userInterface = false, class WebCore::String * value = 0x003ced48)+0x57
            003ced3c 6c429a88 chrome_6bed0000!WebCore::DocumentInternal::execCommandCallback(class v8::Arguments * args = 0x0469d2e0)+0xe8</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>153265</commentid>
    <comment_count>1</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-10-07 21:50:32 -0700</bug_when>
    <thetext>Stack trace from a semi-recent local build of Mac WebKit:

#0	0x0217b481 in WebCore::Node::renderer at Node.h:384
#1	0x024dd1ed in WebCore::InsertLineBreakCommand::shouldUseBreakElement at InsertLineBreakCommand.cpp:86
#2	0x024dd397 in WebCore::InsertLineBreakCommand::doApply at InsertLineBreakCommand.cpp:104
#3	0x0234eff9 in WebCore::EditCommand::apply at EditCommand.cpp:91
#4	0x0214f329 in WebCore::CompositeEditCommand::applyCommandToComposite at CompositeEditCommand.cpp:99
#5	0x024e10a8 in WebCore::InsertParagraphSeparatorCommand::doApply at InsertParagraphSeparatorCommand.cpp:159
#6	0x0234eff9 in WebCore::EditCommand::apply at EditCommand.cpp:91
#7	0x0214f329 in WebCore::CompositeEditCommand::applyCommandToComposite at CompositeEditCommand.cpp:99
#8	0x02a6dbfb in WebCore::TypingCommand::insertParagraphSeparator at TypingCommand.cpp:377
#9	0x02a6e141 in WebCore::TypingCommand::doApply at TypingCommand.cpp:268
#10	0x0234eff9 in WebCore::EditCommand::apply at EditCommand.cpp:91
#11	0x0234f08d in WebCore::applyCommand at EditCommand.cpp:217
#12	0x02a6e3be in WebCore::TypingCommand::insertParagraphSeparator at TypingCommand.cpp:231
#13	0x0235ce85 in WebCore::executeInsertParagraph at EditorCommand.cpp:527
#14	0x0235b1eb in WebCore::Editor::Command::execute at EditorCommand.cpp:1504
#15	0x02262cbf in WebCore::Document::execCommand at Document.cpp:3324
#16	0x02565f6e in WebCore::jsDocumentPrototypeFunctionExecCommand at JSDocument.cpp:1870</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>153266</commentid>
    <comment_count>2</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-10-07 21:51:56 -0700</bug_when>
    <thetext>&lt;rdar://problem/7285936&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173000</commentid>
    <comment_count>3</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2009-12-17 17:28:44 -0800</bug_when>
    <thetext>Cannot reproduce the bug with the reported HTML.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>219621</commentid>
    <comment_count>4</comment_count>
    <who name="Lei Zhang">thestig</who>
    <bug_when>2010-04-30 14:40:37 -0700</bug_when>
    <thetext>The test case from http://code.google.com/p/chromium/issues/detail?id=37011 crashes the renderer with this stack trace using Chromium ToT @ r46031.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234300</commentid>
    <comment_count>5</comment_count>
      <attachid>57897</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-06-04 11:14:12 -0700</bug_when>
    <thetext>Created attachment 57897
reduction

Reduction steps:
1. Open the page
2. Trigger CR(13) keydown event inside textarea
3. WebKit crashes (TOT 60682)

The exact problem is that selection is invalidated inside InsertLineBreak.  So inside InsertLineBreakCommand::doApply(), caret is null and the first place in which it assumes non-null value (shouldUseBreakElement on line 103 of InsertLineBreakCommand.cpp) results in null-pointer access.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234745</commentid>
    <comment_count>6</comment_count>
      <attachid>58003</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-06-07 02:22:49 -0700</bug_when>
    <thetext>Created attachment 58003
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234747</commentid>
    <comment_count>7</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-06-07 02:35:17 -0700</bug_when>
    <thetext>Ryosuke&apos;s analysis is correct.  The textarea is hidden in keydown, but we try to use the visible position when inserting the line break.  There is no visible position since the textarea is hidden, so we dereference a null pointer.

This patch just does a null pointer check on the visible position.

A few notes:
- This means that when the textarea is hidden, we don&apos;t insert the linebreak because we bail out early.
- This doesn&apos;t match what happens when you type any other character, which we can insert because it goes through a different code path that doesn&apos;t depend on visible positions.
- I tried to make this code not depend on visible positions (pretty straight forward), but then you get a different behavior if you have a selection or not.  Whenever there&apos;s a selection, we bail out in the selection.isNone() check.  To try to stay consistent with this behavior, I had us just bail out rather than trying to insert the line break.
- Firefox is able to insert the line break in this test case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234977</commentid>
    <comment_count>8</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-06-07 11:52:56 -0700</bug_when>
    <thetext>+jparent &amp; +ojan since they&apos;re knowledgeable about how rich text edit should behave.
+adele since she&apos;s knowledgeable about forms.

(In reply to comment #7)
&gt; Ryosuke&apos;s analysis is correct.  The textarea is hidden in keydown, but we try to use the visible position when inserting the line break.  There is no visible position since the textarea is hidden, so we dereference a null pointer.

This seems to be a yet another problem caused by VisiblePosition.  Julie &amp; Ojan, does it make sense for us to ignore text input if the textarea is hidden?

&gt; This patch just does a null pointer check on the visible position.

I&apos;m not sure if InsertLikeBreakCommand is the right place to deal with this problem.  It seems like we should be stop propagating all text input commands or similar commands whenever VisiblePosition is null.

&gt; - Firefox is able to insert the line break in this test case.

That&apos;s what I thought.  Firefox doesn&apos;t canonicalize positions so this shouldn&apos;t be a problem for them.  On the other hand, Internet Explorer won&apos;t add the line break in this test so new behavior matches MSIE.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235071</commentid>
    <comment_count>9</comment_count>
      <attachid>58097</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-06-07 17:16:46 -0700</bug_when>
    <thetext>Created attachment 58097
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235072</commentid>
    <comment_count>10</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-06-07 17:19:29 -0700</bug_when>
    <thetext>Ok, I changed my mind.  I think we should try to always allow the text input to happen.  If the site wants to not allow the text input, they can preventDefault the event.  This version of the patch allows a line break to be inserted if there is no selection and the textarea is hidden.  It doesn&apos;t change the behavior that if there is a selection, pressing enter won&apos;t insert a line break but it will delete the selected text.  This seems like a bug, but can be fixed separately (although it&apos;s not obvious to me how to do that).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235558</commentid>
    <comment_count>11</comment_count>
      <attachid>58192</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-06-08 15:19:56 -0700</bug_when>
    <thetext>Created attachment 58192
Test case for typing into visibility:hidden element

It&apos;s hard to write a testcase for this, but here&apos;s what I came up with. Basically, it&apos;s possible to have a focused, but visibility:hidden element. In Gecko, that element still receives key events and allows text input. In WebKit, it receives key events, but only does one text insertion. 

My opinion is that text insertion (include line-breaks) should work. If the element is receiving key events, it should also allow text insertion. I can also think of valid use-cases enabled by allowing text insertion in this case.

Contrast this to Gecko&apos;s behavior if we do the same test, but use display:none instead of visibility:hidden. Gecko doesn&apos;t send any key events or do text insertion. Essentially it acts as if the element isn&apos;t focused. In WebKit, we still send it key events. Which, I think is a bug. Both browsers still list the textarea as document.activeElement, but that also seems like a bug.

In short, except for the document.activeElement bug, I think Gecko&apos;s behavior is better and we should aim to move in that direction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235560</commentid>
    <comment_count>12</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-06-08 15:29:40 -0700</bug_when>
    <thetext>https://bugs.webkit.org/show_bug.cgi?id=40338 For the display:none case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235568</commentid>
    <comment_count>13</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-06-08 16:02:23 -0700</bug_when>
    <thetext>visibility:hidden case is bug 40342. This bug can focus on the crash.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235574</commentid>
    <comment_count>14</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-06-08 16:35:17 -0700</bug_when>
    <thetext>Sounds good to me. That sounds like we want the second patch, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235578</commentid>
    <comment_count>15</comment_count>
      <attachid>58097</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-06-08 16:44:50 -0700</bug_when>
    <thetext>Comment on attachment 58097
Patch

Doesn&apos;t this make it so that we no longer canonicalize the position we&apos;re going to use when we hit enter?

I wonder if a better (albeit harder) fix would be to make it so that &quot;VisiblePosition caret(selection.visibleStart())&quot; doesn&apos;t create a VisiblePosition with a null deepEquivalent. Specifically, VisiblePosition::canonicalPosition would need to not return null. If I understand this all correctly, we return null because we skip over visibility:hidden nodes when looking for the canonical position. This makes sense in general, but I don&apos;t think it makes sense when the rootEditableElement is the visibility:hidden node. Maybe we should change that logic. WDYT?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235676</commentid>
    <comment_count>16</comment_count>
      <attachid>58216</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-06-09 00:10:14 -0700</bug_when>
    <thetext>Created attachment 58216
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235683</commentid>
    <comment_count>17</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-06-09 00:17:40 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (From update of attachment 58097 [details])
&gt; Doesn&apos;t this make it so that we no longer canonicalize the position we&apos;re going to use when we hit enter?

I&apos;m not sure I understand, which canonicalization isn&apos;t happening?

&gt; I wonder if a better (albeit harder) fix would be to make it so that &quot;VisiblePosition caret(selection.visibleStart())&quot; doesn&apos;t create a VisiblePosition with a null deepEquivalent. Specifically, VisiblePosition::canonicalPosition would need to not return null. If I understand this all correctly, we return null because we skip over visibility:hidden nodes when looking for the canonical position. This makes sense in general, but I don&apos;t think it makes sense when the rootEditableElement is the visibility:hidden node. Maybe we should change that logic. WDYT?

VisiblePosition::canonicalPosition returns null because PositionIterator checks for visibility.  Changing this would be a big change which seems beyond the scope of this bug.  But maybe you&apos;re asking about only changing visibleStart some of the time?  That also seems tricky to implement (e.g. what happens if the rootEditableElement is visible but some child editable node is hidden)?

I found another crasher except with contenteditable areas, so I&apos;ve uploaded a new patch.

If the goal of this bug is to just fix the crash, then perhaps we should just return early in both cases (or even return in EventHandler::defaultTextInputEventHandler.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236071</commentid>
    <comment_count>18</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-06-09 16:08:01 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (In reply to comment #15)
&gt; &gt; (From update of attachment 58097 [details] [details])
&gt; &gt; Doesn&apos;t this make it so that we no longer canonicalize the position we&apos;re going to use when we hit enter?
&gt; 
&gt; I&apos;m not sure I understand, which canonicalization isn&apos;t happening?

Before this patch, pos pointed to the deepEquivalent (canonicalized node). After this patch, it just points to m_start, which may or may not be canonicalized. Right?

&gt; &gt; I wonder if a better (albeit harder) fix would be to make it so that &quot;VisiblePosition caret(selection.visibleStart())&quot; doesn&apos;t create a VisiblePosition with a null deepEquivalent. Specifically, VisiblePosition::canonicalPosition would need to not return null. If I understand this all correctly, we return null because we skip over visibility:hidden nodes when looking for the canonical position. This makes sense in general, but I don&apos;t think it makes sense when the rootEditableElement is the visibility:hidden node. Maybe we should change that logic. WDYT?
&gt; 
&gt; VisiblePosition::canonicalPosition returns null because PositionIterator checks for visibility.  Changing this would be a big change which seems beyond the scope of this bug.  But maybe you&apos;re asking about only changing visibleStart some of the time?  That also seems tricky to implement (e.g. what happens if the rootEditableElement is visible but some child editable node is hidden)?

I think it&apos;s OK to special-case the rootEditableElement here. If a child isn&apos;t visible, the typing will still go through just fine. It just won&apos;t go inside the visibility:hidden element. It&apos;ll go in one of it&apos;s siblings/parents/cousins. I think it would be sufficient for the visibility check in PositionIterator::isCandidate and Position::isCandidate to not return false there if the renderer is the renderer for the rootEditableElement, but I&apos;m not sure.

&gt; I found another crasher except with contenteditable areas, so I&apos;ve uploaded a new patch.

This looks like we&apos;ll do the wrong thing (use a paragraph instead of a BR) if you hit enter inside a table that&apos;s not visible. That&apos;s much better than crashing though. Maybe add a FIXME pointing to bug 40342?

&gt; If the goal of this bug is to just fix the crash, then perhaps we should just return early in both cases (or even return in EventHandler::defaultTextInputEventHandler.

I think that would be fine if you include a FIXME pointing to bug 40342. We should probably early return here though, not higher up in defaultTextInputEventHandler as we&apos;ll want to fix this someday.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236118</commentid>
    <comment_count>19</comment_count>
      <attachid>58320</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-06-09 18:36:00 -0700</bug_when>
    <thetext>Created attachment 58320
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236120</commentid>
    <comment_count>20</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-06-09 18:45:30 -0700</bug_when>
    <thetext>Ojan, I can&apos;t tell if you&apos;re reviewing the patches since you&apos;re not changing the review flag.  Inline comments on that patch are more helpful than just responding to the comments.


(In reply to comment #18)
&gt; Before this patch, pos pointed to the deepEquivalent (canonicalized node). After this patch, it just points to m_start, which may or may not be canonicalized. Right?

Sure, but what canonicalization needs to happen?  I.e., do you have an example test case that this breaks?  Since this is just plain text, I&apos;m not sure we need to canonicalize here.

&gt; &gt; VisiblePosition::canonicalPosition returns null because PositionIterator checks for visibility.  Changing this would be a big change which seems beyond the scope of this bug.  But maybe you&apos;re asking about only changing visibleStart some of the time?  That also seems tricky to implement (e.g. what happens if the rootEditableElement is visible but some child editable node is hidden)?
&gt; 
&gt; I think it&apos;s OK to special-case the rootEditableElement here. If a child isn&apos;t visible, the typing will still go through just fine. It just won&apos;t go inside the visibility:hidden element. It&apos;ll go in one of it&apos;s siblings/parents/cousins. I think it would be sufficient for the visibility check in PositionIterator::isCandidate and Position::isCandidate to not return false there if the renderer is the renderer for the rootEditableElement, but I&apos;m not sure.

I mean something like this:
&lt;div contenteditable&gt;
&lt;p&gt;foo bar&lt;/p&gt;
&lt;p id=&quot;to-be-made-hidden&quot;&gt; | &lt;/p&gt;
&lt;/div&gt;

If the cursor is at |, and the keydown event makes &quot;to-be-made-hidden&quot; hidden, what should happen?  Currently, if the node with the cursor disappears, the selection is lost.  I think it would be weird if the cursor jumped to the foo bar paragraph.

Anyway, shouldn&apos;t this be discussed on a different bug?

&gt; This looks like we&apos;ll do the wrong thing (use a paragraph instead of a BR) if you hit enter inside a table that&apos;s not visible. That&apos;s much better than crashing though. Maybe add a FIXME pointing to bug 40342?

done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236594</commentid>
    <comment_count>21</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-06-10 17:16:43 -0700</bug_when>
    <thetext>&gt; Ojan, I can&apos;t tell if you&apos;re reviewing the patches since you&apos;re not changing the review flag.

It&apos;s not clear to me whether this patch is incorrect or correct, so I don&apos;t think it makes sense for me to r-/r+. Leaving it r? means another reviewer can come in and review. In the meantime, I&apos;m trying to understand the code in question well enough to give an r-/r+.

&gt; Inline comments on that patch are more helpful than just responding to the comments.

Not sure what you&apos;re asking for here. The code hasn&apos;t changed, so there&apos;s only comments to respond to.

&gt; &gt; Before this patch, pos pointed to the deepEquivalent (canonicalized node). After this patch, it just points to m_start, which may or may not be canonicalized. Right?
&gt; 
&gt; Sure, but what canonicalization needs to happen?  I.e., do you have an example test case that this breaks?  Since this is just plain text, I&apos;m not sure we need to canonicalize here.

Is this code really only hit in plaintext regions? Doesn&apos;t non-plaintext contentEditable hit this codepath as well? If it really is just for plain text, then I think we don&apos;t need to worry about canonicalization.

If this code gets hit in rich-text, I don&apos;t have a clear example in my head where this would break. I think it would break if selection.start() is ever not canonicalized when it the selection gets set. Not sure if that&apos;s possible.

By &quot;break&quot; here, I just mean that it would do something different than the old code.

&gt; Anyway, shouldn&apos;t this be discussed on a different bug?

Sure, that discussion can happen on bug 40342.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236614</commentid>
    <comment_count>22</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-06-10 18:00:33 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; &gt; &gt; Before this patch, pos pointed to the deepEquivalent (canonicalized node). After this patch, it just points to m_start, which may or may not be canonicalized. Right?
&gt; &gt; 
&gt; &gt; Sure, but what canonicalization needs to happen?  I.e., do you have an example test case that this breaks?  Since this is just plain text, I&apos;m not sure we need to canonicalize here.
&gt; 
&gt; Is this code really only hit in plaintext regions? Doesn&apos;t non-plaintext contentEditable hit this codepath as well? If it really is just for plain text, then I think we don&apos;t need to worry about canonicalization.

Yes, the change to InsertLineBreakCommand is for plain text and the change to InsertParagraphSeparatorCommand is for rich text.  Specifically, the decision is made here:
http://trac.webkit.org/browser/trunk/WebCore/page/EventHandler.cpp#L2596
And TextEvent::isLineBreak() is set by the third parameter here:
http://trac.webkit.org/browser/trunk/WebCore/editing/EditorCommand.cpp#L515



&gt; Not sure what you&apos;re asking for here. The code hasn&apos;t changed, so there&apos;s only comments to respond to.

I was unclear to me if the FIXMEs you mentioned in comment 18 were both about the same code or if you wanted 2 FIXMEs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236615</commentid>
    <comment_count>23</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-06-10 18:02:47 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; Is this code really only hit in plaintext regions? Doesn&apos;t non-plaintext contentEditable hit this codepath as well? If it really is just for plain text, then I think we don&apos;t need to worry about canonicalization.

Oh, I see, you&apos;re saying in other cases, we may need to canonicalize.  Hmm, maybe, but it&apos;s not obvious to me that it is necessary without a test case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236616</commentid>
    <comment_count>24</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-06-10 18:04:20 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; (In reply to comment #21)
&gt; &gt; Is this code really only hit in plaintext regions? Doesn&apos;t non-plaintext contentEditable hit this codepath as well? If it really is just for plain text, then I think we don&apos;t need to worry about canonicalization.
&gt; 
&gt; Oh, I see, you&apos;re saying in other cases, we may need to canonicalize.  Hmm, maybe, but it&apos;s not obvious to me that it is necessary without a test case.

And if we are concerned about that, then we should just go with the original patch that null checks |caret|.  It won&apos;t insert a line, but that&apos;s bug 40342.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236631</commentid>
    <comment_count>25</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-06-10 18:34:42 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; (In reply to comment #23)
&gt; &gt; (In reply to comment #21)
&gt; &gt; &gt; Is this code really only hit in plaintext regions? Doesn&apos;t non-plaintext contentEditable hit this codepath as well? If it really is just for plain text, then I think we don&apos;t need to worry about canonicalization.
&gt; &gt; 
&gt; &gt; Oh, I see, you&apos;re saying in other cases, we may need to canonicalize.  Hmm, maybe, but it&apos;s not obvious to me that it is necessary without a test case.

Right. Unfortunately, this is a problem with the editing code in general. The test coverage isn&apos;t that great. So places where we make changes like this may cause regressions without breaking tests and the canonicalization code is really difficult to reason about.

This code is not clearly wrong to me, but it does set off a red flag. I&apos;m not sure what the correct path forward in cases like this are. My intuition is that we check this in as is and, if it causes a regression, it&apos;ll get reported and we can add a test + fix then. Adding Darin to this bug for his opinion on this.

&gt; And if we are concerned about that, then we should just go with the original patch that null checks |caret|.  It won&apos;t insert a line, but that&apos;s bug 40342.

I&apos;m definitely OK with adding a null-check and a FIXME pointing to bug 40342. Not inserting the line-break here is wrong IMO, but it&apos;s obviously much better than crashing and definitely won&apos;t cause regressions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>245465</commentid>
    <comment_count>26</comment_count>
      <attachid>58320</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-07-01 12:07:37 -0700</bug_when>
    <thetext>Comment on attachment 58320
Patch

http://wkrietveld.appspot.com/30116/diff/2001/3003
File LayoutTests/editing/inserting/return-key-in-hidden-field.html (right):

http://wkrietveld.appspot.com/30116/diff/2001/3003#newcode13
LayoutTests/editing/inserting/return-key-in-hidden-field.html:13: }
Nit: technically by webkit style this (one-line if) shouldn&apos;t have curly braces.

http://wkrietveld.appspot.com/30116/diff/2001/3003#newcode30
LayoutTests/editing/inserting/return-key-in-hidden-field.html:30: layoutTestController.dumpAsText();
28-30 duplicates 20-22, was that intentional? I think you can just remove this.

http://wkrietveld.appspot.com/30116/diff/2001/3004
File WebCore/ChangeLog (right):

http://wkrietveld.appspot.com/30116/diff/2001/3004#newcode7
WebCore/ChangeLog:7: 
Maybe add a comment saying that this causes text insertions on visibility:hidden elements to get ignored and add a link to bug 40342?

http://wkrietveld.appspot.com/30116/diff/2001/3005
File WebCore/editing/InsertLineBreakCommand.cpp (right):

http://wkrietveld.appspot.com/30116/diff/2001/3005#newcode97
WebCore/editing/InsertLineBreakCommand.cpp:97: VisiblePosition caret(pos);
I thought the conclusion was to make this a null-check with a comment pointing to bug 40342 instead?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>245470</commentid>
    <comment_count>27</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-07-01 12:10:51 -0700</bug_when>
    <thetext>I find these reitveld-created bugs.webkit.org comments difficult to read.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>245553</commentid>
    <comment_count>28</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-07-01 14:30:44 -0700</bug_when>
    <thetext>(In reply to comment #27)
&gt; I find these reitveld-created bugs.webkit.org comments difficult to read.

Filed bug 41486. Hopefully we can improve it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>247601</commentid>
    <comment_count>29</comment_count>
      <attachid>60745</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-07-07 09:44:47 -0700</bug_when>
    <thetext>Created attachment 60745
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248715</commentid>
    <comment_count>30</comment_count>
      <attachid>60745</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-07-08 21:35:33 -0700</bug_when>
    <thetext>Comment on attachment 60745
Patch

Clearing flags on attachment: 60745

Committed r62889: &lt;http://trac.webkit.org/changeset/62889&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248716</commentid>
    <comment_count>31</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-07-08 21:35:41 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248791</commentid>
    <comment_count>32</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2010-07-09 00:29:59 -0700</bug_when>
    <thetext>Qt specific expected result landed in http://trac.webkit.org/changeset/62905.

This test say it passes if doesn&apos;t crash. It passes, but
Qt has an extra newline character in its expected file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249063</commentid>
    <comment_count>33</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-07-09 09:57:05 -0700</bug_when>
    <thetext>(In reply to comment #32)
&gt; Qt specific expected result landed in http://trac.webkit.org/changeset/62905.
&gt; 
&gt; This test say it passes if doesn&apos;t crash. It passes, but
&gt; Qt has an extra newline character in its expected file.

That looks right to me.  Thanks for fixing, sorry I wasn&apos;t around when the change landed.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>57897</attachid>
            <date>2010-06-04 11:14:12 -0700</date>
            <delta_ts>2010-06-04 11:14:12 -0700</delta_ts>
            <desc>reduction</desc>
            <filename>bug30116.html</filename>
            <type>text/html</type>
            <size>486</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">PGh0bWw+Cgk8aGVhZD4KCQk8c3R5bGU+CgkJCSNkIHsKCQkJCXBvc2l0aW9uOmFic29sdXRlOwoJ
CQkJd2lkdGg6NTAlOwoJCQkJYmFja2dyb3VuZC1jb2xvcjojZmZhOwoJCQl9CgkJPC9zdHlsZT4K
CTwvaGVhZD4KCTxib2R5PgoKCQk8ZGl2IGlkPSJkIj4KCQkJPHRleHRhcmVhIGlkPSJ0ZXh0YXJl
YSI+PC90ZXh0YXJlYT4KCQk8L2Rpdj4KCgkJPHNjcmlwdD4KCgkJCWZ1bmN0aW9uIGNsb3NlSXQo
KSB7CgkJCQkJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImQiKS5zdHlsZS52aXNpYmlsaXR5ID0g
ImhpZGRlbiI7CgkJCX0KCgkJCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXh0YXJlYSIpLmZv
Y3VzKCk7CgkJCWRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLCBmdW5jdGlvbihl
KSB7CgkJCQlpZiAoZS5rZXlDb2RlID09IDEzKSB7IGNsb3NlSXQoKTsgfQoJCQl9LCBmYWxzZSk7
CgoJCTwvc2NyaXB0PgoJPC9ib2R5Pgo8L2h0bWw+
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58003</attachid>
            <date>2010-06-07 02:22:49 -0700</date>
            <delta_ts>2010-06-07 17:16:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-30116-20100607182248.patch</filename>
            <type>text/plain</type>
            <size>3570</size>
            <attacher name="Tony Chang">tony</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAzMGU2ZmRiMWYyYmIyODVkYjJhZDU3N2M2NDVkM2ZhMzNiNGIxMTk5Li4wYWI4Mjg3
MDE0Yjk2N2Y4NzliZTI3YTI0MGU2NjA2ZmNlZjBjZTA3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTAtMDYtMDcgIFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWJDb3JlOjpJbnNlcnRMaW5l
QnJlYWtDb21tYW5kOjpzaG91bGRVc2VCcmVha0VsZW1lbnQgUmVhZEFWQE5VTEwKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMwMTE2CisKKyAgICAgICAg
KiBlZGl0aW5nL2luc2VydGluZy9yZXR1cm4ta2V5LWluLWhpZGRlbi10ZXh0YXJlYS1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvaW5zZXJ0aW5nL3JldHVybi1rZXktaW4t
aGlkZGVuLXRleHRhcmVhLmh0bWw6IEFkZGVkLgorCiAyMDEwLTA2LTA2ICBNT1JJVEEgSGFqaW1l
ICA8bW9ycml0YUBnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbnQgVGFtdXJh
LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9pbnNlcnRpbmcvcmV0dXJuLWtleS1p
bi1oaWRkZW4tdGV4dGFyZWEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9pbnNl
cnRpbmcvcmV0dXJuLWtleS1pbi1oaWRkZW4tdGV4dGFyZWEtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjhlNTZjM2Q3OTgxODJmY2IwMjZiYTc5ZGE2OTlhMjI3ODU0YjI3NDgKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2luc2VydGluZy9yZXR1cm4ta2V5LWluLWhpZGRl
bi10ZXh0YXJlYS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACitUaGlzIHRlc3RzIHRvIG1h
a2Ugc3VyZSB0aGF0IGluc2VydGluZyBhIGxpbmUgYnJlYWsgaW4gYSBoaWRkZW4gdGV4dGFyZWEg
ZG9lc24ndCBjcmFzaC4gVG8gcmVwcm8gbWFudWFsbHksIHByZXNzIGVudGVyIG9yIHJldHVybiBp
biB0aGUgdGV4dGFyZWEuIFdlIHBhc3MgaWYgd2UgZG9uJ3QgY3Jhc2guCisKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9pbnNlcnRpbmcvcmV0dXJuLWtleS1pbi1oaWRkZW4tdGV4
dGFyZWEuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvaW5zZXJ0aW5nL3JldHVybi1rZXktaW4t
aGlkZGVuLXRleHRhcmVhLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDg4NzZkNzRhZTljOTFkNmRkMWU0OGUw
ZjE4NWZhMmQ3ZmFjNmZkNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcv
aW5zZXJ0aW5nL3JldHVybi1rZXktaW4taGlkZGVuLXRleHRhcmVhLmh0bWwKQEAgLTAsMCArMSwy
NiBAQAorPGJvZHk+Cis8cD5UaGlzIHRlc3RzIHRvIG1ha2Ugc3VyZSB0aGF0IGluc2VydGluZyBh
IGxpbmUgYnJlYWsgaW4gYSBoaWRkZW4gdGV4dGFyZWEgZG9lc24ndCBjcmFzaC4KK1RvIHJlcHJv
IG1hbnVhbGx5LCBwcmVzcyBlbnRlciBvciByZXR1cm4gaW4gdGhlIHRleHRhcmVhLiAgV2UgcGFz
cyBpZiB3ZSBkb24ndCBjcmFzaC48L3A+Cis8ZGl2IGlkPSJkIj4KKyAgPHRleHRhcmVhIGlkPSJ0
ZXh0YXJlYSI+PC90ZXh0YXJlYT4KKzwvZGl2PgorPHNjcmlwdD4KK2RvY3VtZW50LmFkZEV2ZW50
TGlzdGVuZXIoImtleWRvd24iLCBmdW5jdGlvbihlKSB7CisgICAgaWYgKGUua2V5Q29kZSA9PSAx
MykgeworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZCIpLnN0eWxlLnZpc2liaWxp
dHkgPSAiaGlkZGVuIjsKKyAgICB9Cit9LCBmYWxzZSk7CisKK2Z1bmN0aW9uIHJ1blRlc3QoKQor
eworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXh0YXJlYSIpLmZvY3VzKCk7CisKKyAg
ICBpZiAoIXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlciB8fCAhd2luZG93LmV2ZW50U2VuZGVy
KQorICAgICAgICByZXR1cm47CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OworICAgIGV2ZW50U2VuZGVyLmtleURvd24oJ1xuJyk7Cit9CitydW5UZXN0KCk7CisKKzwvc2Ny
aXB0PgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA4ZjI0MzQyOWJjNjE2ZGJkYmMyMGZiZTI3MTY5ZDM5YTIzOGU4NWVlLi41
MmNmOWFmODg5ODJkMmM4NTQ0ZjM5NDkxOTY0YTFkOWZlYWUwYWM1IDEwMDY0NAotLS0gYS9XZWJD
b3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisy
MDEwLTA2LTA3ICBUb255IENoYW5nICA8dG9ueUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViQ29yZTo6SW5zZXJ0TGluZUJy
ZWFrQ29tbWFuZDo6c2hvdWxkVXNlQnJlYWtFbGVtZW50IFJlYWRBVkBOVUxMCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDExNgorCisgICAgICAgIFRl
c3Q6IGVkaXRpbmcvaW5zZXJ0aW5nL3JldHVybi1rZXktaW4taGlkZGVuLXRleHRhcmVhLmh0bWwK
KworICAgICAgICAqIGVkaXRpbmcvSW5zZXJ0TGluZUJyZWFrQ29tbWFuZC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnNlcnRMaW5lQnJlYWtDb21tYW5kOjpkb0FwcGx5KToKKwogMjAxMC0wNi0w
NiAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KIAogICAgICAgICBVbnJldmll
d2QsIENocm9taXVtIHdpbmRvd3MgYnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0
aW5nL0luc2VydExpbmVCcmVha0NvbW1hbmQuY3BwIGIvV2ViQ29yZS9lZGl0aW5nL0luc2VydExp
bmVCcmVha0NvbW1hbmQuY3BwCmluZGV4IGNhYWFlMGE2NjkwNjAyZTg1OGNlNzljOTQ4M2YzNTll
ZjAzZTFjYjMuLmVkMTliZTg0OTZmODRhNDVjYTIxYTkwM2M0MzEyMGQ3NjhhOGU1NmQgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRMaW5lQnJlYWtDb21tYW5kLmNwcAorKysgYi9X
ZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TGluZUJyZWFrQ29tbWFuZC5jcHAKQEAgLTk0LDYgKzk0LDkg
QEAgdm9pZCBJbnNlcnRMaW5lQnJlYWtDb21tYW5kOjpkb0FwcGx5KCkKICAgICAgICAgcmV0dXJu
OwogICAgIAogICAgIFZpc2libGVQb3NpdGlvbiBjYXJldChzZWxlY3Rpb24udmlzaWJsZVN0YXJ0
KCkpOworICAgIGlmIChjYXJldC5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgUG9z
aXRpb24gcG9zKGNhcmV0LmRlZXBFcXVpdmFsZW50KCkpOwogCiAgICAgcG9zID0gcG9zaXRpb25B
dm9pZGluZ1NwZWNpYWxFbGVtZW50Qm91bmRhcnkocG9zKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58097</attachid>
            <date>2010-06-07 17:16:46 -0700</date>
            <delta_ts>2010-06-09 00:10:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-30116-20100608091644.patch</filename>
            <type>text/plain</type>
            <size>3687</size>
            <attacher name="Tony Chang">tony</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAzMGU2ZmRiMWYyYmIyODVkYjJhZDU3N2M2NDVkM2ZhMzNiNGIxMTk5Li4wYWI4Mjg3
MDE0Yjk2N2Y4NzliZTI3YTI0MGU2NjA2ZmNlZjBjZTA3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTAtMDYtMDcgIFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWJDb3JlOjpJbnNlcnRMaW5l
QnJlYWtDb21tYW5kOjpzaG91bGRVc2VCcmVha0VsZW1lbnQgUmVhZEFWQE5VTEwKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMwMTE2CisKKyAgICAgICAg
KiBlZGl0aW5nL2luc2VydGluZy9yZXR1cm4ta2V5LWluLWhpZGRlbi10ZXh0YXJlYS1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvaW5zZXJ0aW5nL3JldHVybi1rZXktaW4t
aGlkZGVuLXRleHRhcmVhLmh0bWw6IEFkZGVkLgorCiAyMDEwLTA2LTA2ICBNT1JJVEEgSGFqaW1l
ICA8bW9ycml0YUBnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbnQgVGFtdXJh
LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9pbnNlcnRpbmcvcmV0dXJuLWtleS1p
bi1oaWRkZW4tdGV4dGFyZWEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9pbnNl
cnRpbmcvcmV0dXJuLWtleS1pbi1oaWRkZW4tdGV4dGFyZWEtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjhlNTZjM2Q3OTgxODJmY2IwMjZiYTc5ZGE2OTlhMjI3ODU0YjI3NDgKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2luc2VydGluZy9yZXR1cm4ta2V5LWluLWhpZGRl
bi10ZXh0YXJlYS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACitUaGlzIHRlc3RzIHRvIG1h
a2Ugc3VyZSB0aGF0IGluc2VydGluZyBhIGxpbmUgYnJlYWsgaW4gYSBoaWRkZW4gdGV4dGFyZWEg
ZG9lc24ndCBjcmFzaC4gVG8gcmVwcm8gbWFudWFsbHksIHByZXNzIGVudGVyIG9yIHJldHVybiBp
biB0aGUgdGV4dGFyZWEuIFdlIHBhc3MgaWYgd2UgZG9uJ3QgY3Jhc2guCisKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9pbnNlcnRpbmcvcmV0dXJuLWtleS1pbi1oaWRkZW4tdGV4
dGFyZWEuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvaW5zZXJ0aW5nL3JldHVybi1rZXktaW4t
aGlkZGVuLXRleHRhcmVhLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDg4NzZkNzRhZTljOTFkNmRkMWU0OGUw
ZjE4NWZhMmQ3ZmFjNmZkNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcv
aW5zZXJ0aW5nL3JldHVybi1rZXktaW4taGlkZGVuLXRleHRhcmVhLmh0bWwKQEAgLTAsMCArMSwy
NiBAQAorPGJvZHk+Cis8cD5UaGlzIHRlc3RzIHRvIG1ha2Ugc3VyZSB0aGF0IGluc2VydGluZyBh
IGxpbmUgYnJlYWsgaW4gYSBoaWRkZW4gdGV4dGFyZWEgZG9lc24ndCBjcmFzaC4KK1RvIHJlcHJv
IG1hbnVhbGx5LCBwcmVzcyBlbnRlciBvciByZXR1cm4gaW4gdGhlIHRleHRhcmVhLiAgV2UgcGFz
cyBpZiB3ZSBkb24ndCBjcmFzaC48L3A+Cis8ZGl2IGlkPSJkIj4KKyAgPHRleHRhcmVhIGlkPSJ0
ZXh0YXJlYSI+PC90ZXh0YXJlYT4KKzwvZGl2PgorPHNjcmlwdD4KK2RvY3VtZW50LmFkZEV2ZW50
TGlzdGVuZXIoImtleWRvd24iLCBmdW5jdGlvbihlKSB7CisgICAgaWYgKGUua2V5Q29kZSA9PSAx
MykgeworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZCIpLnN0eWxlLnZpc2liaWxp
dHkgPSAiaGlkZGVuIjsKKyAgICB9Cit9LCBmYWxzZSk7CisKK2Z1bmN0aW9uIHJ1blRlc3QoKQor
eworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXh0YXJlYSIpLmZvY3VzKCk7CisKKyAg
ICBpZiAoIXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlciB8fCAhd2luZG93LmV2ZW50U2VuZGVy
KQorICAgICAgICByZXR1cm47CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OworICAgIGV2ZW50U2VuZGVyLmtleURvd24oJ1xuJyk7Cit9CitydW5UZXN0KCk7CisKKzwvc2Ny
aXB0PgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA4ZjI0MzQyOWJjNjE2ZGJkYmMyMGZiZTI3MTY5ZDM5YTIzOGU4NWVlLi41
MmNmOWFmODg5ODJkMmM4NTQ0ZjM5NDkxOTY0YTFkOWZlYWUwYWM1IDEwMDY0NAotLS0gYS9XZWJD
b3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisy
MDEwLTA2LTA3ICBUb255IENoYW5nICA8dG9ueUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViQ29yZTo6SW5zZXJ0TGluZUJy
ZWFrQ29tbWFuZDo6c2hvdWxkVXNlQnJlYWtFbGVtZW50IFJlYWRBVkBOVUxMCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDExNgorCisgICAgICAgIFRl
c3Q6IGVkaXRpbmcvaW5zZXJ0aW5nL3JldHVybi1rZXktaW4taGlkZGVuLXRleHRhcmVhLmh0bWwK
KworICAgICAgICAqIGVkaXRpbmcvSW5zZXJ0TGluZUJyZWFrQ29tbWFuZC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnNlcnRMaW5lQnJlYWtDb21tYW5kOjpkb0FwcGx5KToKKwogMjAxMC0wNi0w
NiAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KIAogICAgICAgICBVbnJldmll
d2QsIENocm9taXVtIHdpbmRvd3MgYnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0
aW5nL0luc2VydExpbmVCcmVha0NvbW1hbmQuY3BwIGIvV2ViQ29yZS9lZGl0aW5nL0luc2VydExp
bmVCcmVha0NvbW1hbmQuY3BwCmluZGV4IGNhYWFlMGE2NjkwNjAyZTg1OGNlNzljOTQ4M2YzNTll
ZjAzZTFjYjMuLjRkMmYxNzNlOWUzYjkzNjdhN2I1MThjMzUyZjNkMzJiZjMxZGM4MDggMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRMaW5lQnJlYWtDb21tYW5kLmNwcAorKysgYi9X
ZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TGluZUJyZWFrQ29tbWFuZC5jcHAKQEAgLTkyLDkgKzkyLDkg
QEAgdm9pZCBJbnNlcnRMaW5lQnJlYWtDb21tYW5kOjpkb0FwcGx5KCkKICAgICBWaXNpYmxlU2Vs
ZWN0aW9uIHNlbGVjdGlvbiA9IGVuZGluZ1NlbGVjdGlvbigpOwogICAgIGlmIChzZWxlY3Rpb24u
aXNOb25lKCkpCiAgICAgICAgIHJldHVybjsKLSAgICAKLSAgICBWaXNpYmxlUG9zaXRpb24gY2Fy
ZXQoc2VsZWN0aW9uLnZpc2libGVTdGFydCgpKTsKLSAgICBQb3NpdGlvbiBwb3MoY2FyZXQuZGVl
cEVxdWl2YWxlbnQoKSk7CisKKyAgICBQb3NpdGlvbiBwb3Moc2VsZWN0aW9uLnN0YXJ0KCkpOwor
ICAgIFZpc2libGVQb3NpdGlvbiBjYXJldChwb3MpOwogCiAgICAgcG9zID0gcG9zaXRpb25Bdm9p
ZGluZ1NwZWNpYWxFbGVtZW50Qm91bmRhcnkocG9zKTsKICAgICAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>58192</attachid>
            <date>2010-06-08 15:19:56 -0700</date>
            <delta_ts>2010-06-08 15:19:56 -0700</delta_ts>
            <desc>Test case for typing into visibility:hidden element</desc>
            <filename>scratch.html</filename>
            <type>text/html</type>
            <size>870</size>
            <attacher name="Ojan Vafai">ojan</attacher>
            
              <data encoding="base64">PGRpdiBpZD0nY29udGFpbmVyJz48c3BhbiBpZD0nc2Vjb25kcyc+MTA8L3NwYW4+IHNlY29uZHMg
bGVmdCB0byBjbGljayBpbiB0aGUgdGV4dGFyZWEuPC9kaXY+Cjx0ZXh0YXJlYSBpZD0ndGV4dGFy
ZWEnPjwvdGV4dGFyZWE+CjxzY3JpcHQ+CnZhciB0YSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCd0ZXh0YXJlYScpOwp0YS5vbmtleXByZXNzID0gZnVuY3Rpb24oZSkgewogICAgY29uc29sZS5s
b2coZS5rZXlDb2RlKTsKICAgIGNvbnNvbGUubG9nKHRhLnZhbHVlKTsKfQoKdmFyIHNlY29uZHMg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2Vjb25kcycpOwoKZnVuY3Rpb24gaGlkZVRleHRh
cmVhKCkgewogICAgaWYgKHNlY29uZHMuaW5uZXJIVE1MID4gMSkgewogICAgICAgIHNlY29uZHMu
aW5uZXJIVE1MID0gc2Vjb25kcy5pbm5lckhUTUwgLSAxOwogICAgICAgIHNldFRpbWVvdXQoaGlk
ZVRleHRhcmVhLCAxMDAwKTsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBzZWNvbmRzLmlubmVy
SFRNTCA9IDA7CgogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRhaW5lcicpLmlubmVy
SFRNTCA9ICJUaGUgdGV4dGFyZWEgaXMgbm93IHZpc2liaWxpdHk6aGlkZGVuLCBidXQgaXQncyBz
dGlsbCBkb2N1bWVudC5hY3RpdmVFbGVtZW50LCBpLmUuIGl0J3Mgc3RpbGwgZm9jdXNlZC4gVHlw
aW5nIHNlbmRzIGtleXByZXNzZXMgdG8gaXQsIGJ1dCBvbmx5IHRoZSBmaXJzdCBjaGFyYWN0ZXIg
dHlwZWQgaXMgaW5zZXJ0ZWQuIjsKCiAgICB0YS5zdHlsZS52aXNpYmlsaXR5ID0gJ2hpZGRlbic7
CiAgICBjb25zb2xlLmxvZyhkb2N1bWVudC5hY3RpdmVFbGVtZW50KTsKfTsKCmhpZGVUZXh0YXJl
YSgpOwoKPC9zY3JpcHQ+
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58216</attachid>
            <date>2010-06-09 00:10:14 -0700</date>
            <delta_ts>2010-06-09 18:35:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-30116-20100609161012.patch</filename>
            <type>text/plain</type>
            <size>5081</size>
            <attacher name="Tony Chang">tony</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAzNjJjNTIwOWQwMzEwZWFjYmUyMDc0NjY2NWZhODc3ZDRkNWY0MTRmLi5jM2FkOWI4
Yzk2MTI5MGRmMjQyYjQ4YTgwNzcyY2YzYjk2NzQzMjVjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTAtMDYtMDcgIFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWJDb3JlOjpJbnNlcnRMaW5l
QnJlYWtDb21tYW5kOjpzaG91bGRVc2VCcmVha0VsZW1lbnQgUmVhZEFWQE5VTEwKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMwMTE2CisKKyAgICAgICAg
KiBlZGl0aW5nL2luc2VydGluZy9yZXR1cm4ta2V5LWluLWhpZGRlbi10ZXh0YXJlYS1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvaW5zZXJ0aW5nL3JldHVybi1rZXktaW4t
aGlkZGVuLXRleHRhcmVhLmh0bWw6IEFkZGVkLgorCiAyMDEwLTA1LTE4ICBZdXpvIEZ1amlzaGlt
YSAgPHl1em9AZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTaGluaWNoaXJvIEhh
bWFqaS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvaW5zZXJ0aW5nL3JldHVybi1r
ZXktaW4taGlkZGVuLWZpZWxkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvaW5z
ZXJ0aW5nL3JldHVybi1rZXktaW4taGlkZGVuLWZpZWxkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li45NjkwODkwYTNkM2M3OGM0MDhhN2ZmNjY4NTEzOThkYTA5ZTU3YWJkCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9pbnNlcnRpbmcvcmV0dXJuLWtleS1pbi1oaWRkZW4t
ZmllbGQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorVGhpcyB0ZXN0cyB0byBtYWtlIHN1
cmUgdGhhdCBpbnNlcnRpbmcgYSBsaW5lIGJyZWFrIGluIGEgaGlkZGVuIHRleHRhcmVhIGRvZXNu
J3QgY3Jhc2guIFRvIHJlcHJvIG1hbnVhbGx5LCBwcmVzcyBlbnRlciBvciByZXR1cm4gaW4gdGhl
IHRleHRhcmVhLiBXZSBwYXNzIGlmIHdlIGRvbid0IGNyYXNoLgorCisKKworCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9lZGl0aW5nL2luc2VydGluZy9yZXR1cm4ta2V5LWluLWhpZGRlbi1maWVs
ZC5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9pbnNlcnRpbmcvcmV0dXJuLWtleS1pbi1oaWRk
ZW4tZmllbGQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MDZlYWFiMGJjOGI3ZmUxYTk0MGZhMmNlYmEzNDVj
M2Y2NTBiYWY1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9pbnNlcnRp
bmcvcmV0dXJuLWtleS1pbi1oaWRkZW4tZmllbGQuaHRtbApAQCAtMCwwICsxLDM2IEBACis8Ym9k
eT4KKzxwPlRoaXMgdGVzdHMgdG8gbWFrZSBzdXJlIHRoYXQgaW5zZXJ0aW5nIGEgbGluZSBicmVh
ayBpbiBhIGhpZGRlbiB0ZXh0YXJlYSBkb2Vzbid0IGNyYXNoLgorVG8gcmVwcm8gbWFudWFsbHks
IHByZXNzIGVudGVyIG9yIHJldHVybiBpbiB0aGUgdGV4dGFyZWEuICBXZSBwYXNzIGlmIHdlIGRv
bid0IGNyYXNoLjwvcD4KKzxkaXYgaWQ9ImQiPgorICA8dGV4dGFyZWEgaWQ9InRleHRhcmVhIj48
L3RleHRhcmVhPgorPC9kaXY+Cis8ZGl2IGlkPSJkMiIgY29udGVudGVkaXRhYmxlPSJ0cnVlIj4K
KzwvZGl2PgorPHNjcmlwdD4KK2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLCBm
dW5jdGlvbihlKSB7CisgICAgaWYgKGUua2V5Q29kZSA9PSAxMykgeworICAgICAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgiZCIpLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKKyAgICB9
Cit9LCBmYWxzZSk7CisKK2Z1bmN0aW9uIHJ1blRlc3QoKQoreworICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJ0ZXh0YXJlYSIpLmZvY3VzKCk7CisKKyAgICBpZiAoIXdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlciB8fCAhd2luZG93LmV2ZW50U2VuZGVyKQorICAgICAgICByZXR1cm47Cisg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGV2ZW50U2VuZGVyLmtl
eURvd24oJ1xuJyk7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZDIiKS5mb2N1cygp
OworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkMiIpLnN0eWxlLnZpc2liaWxpdHkgPSAi
IjsKKworICAgIGlmICghd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyIHx8ICF3aW5kb3cuZXZl
bnRTZW5kZXIpCisgICAgICAgIHJldHVybjsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KCk7CisgICAgZXZlbnRTZW5kZXIua2V5RG93bignXG4nKTsKK30KK3J1blRlc3QoKTsK
KworPC9zY3JpcHQ+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dl
YkNvcmUvQ2hhbmdlTG9nCmluZGV4IDBhN2MzNmI1OGQ1NTU0MDM5OWE0YjMyNDBiYWFjMmE1OWYw
YzVjOTEuLjcxNGNmMTMxZjRlNDUyNmE5MDliM2ZmZjE5YjI1MTQ1MjVhNzhlOTMgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTcgQEAKKzIwMTAtMDYtMDcgIFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWJDb3JlOjpJbnNl
cnRMaW5lQnJlYWtDb21tYW5kOjpzaG91bGRVc2VCcmVha0VsZW1lbnQgUmVhZEFWQE5VTEwKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMwMTE2CisKKyAg
ICAgICAgVGVzdDogZWRpdGluZy9pbnNlcnRpbmcvcmV0dXJuLWtleS1pbi1oaWRkZW4tdGV4dGFy
ZWEuaHRtbAorCisgICAgICAgICogZWRpdGluZy9JbnNlcnRMaW5lQnJlYWtDb21tYW5kLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc2VydExpbmVCcmVha0NvbW1hbmQ6OmRvQXBwbHkpOgorICAg
ICAgICAqIGVkaXRpbmcvSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kOjpkb0FwcGx5KToK
KwogMjAxMC0wNS0xOCAgWXV6byBGdWppc2hpbWEgIDx5dXpvQGdvb2dsZS5jb20+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgU2hpbmljaGlybyBIYW1hamkuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Vk
aXRpbmcvSW5zZXJ0TGluZUJyZWFrQ29tbWFuZC5jcHAgYi9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0
TGluZUJyZWFrQ29tbWFuZC5jcHAKaW5kZXggY2FhYWUwYTY2OTA2MDJlODU4Y2U3OWM5NDgzZjM1
OWVmMDNlMWNiMy4uNGQyZjE3M2U5ZTNiOTM2N2E3YjUxOGMzNTJmM2QzMmJmMzFkYzgwOCAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5nL0luc2VydExpbmVCcmVha0NvbW1hbmQuY3BwCisrKyBi
L1dlYkNvcmUvZWRpdGluZy9JbnNlcnRMaW5lQnJlYWtDb21tYW5kLmNwcApAQCAtOTIsOSArOTIs
OSBAQCB2b2lkIEluc2VydExpbmVCcmVha0NvbW1hbmQ6OmRvQXBwbHkoKQogICAgIFZpc2libGVT
ZWxlY3Rpb24gc2VsZWN0aW9uID0gZW5kaW5nU2VsZWN0aW9uKCk7CiAgICAgaWYgKHNlbGVjdGlv
bi5pc05vbmUoKSkKICAgICAgICAgcmV0dXJuOwotICAgIAotICAgIFZpc2libGVQb3NpdGlvbiBj
YXJldChzZWxlY3Rpb24udmlzaWJsZVN0YXJ0KCkpOwotICAgIFBvc2l0aW9uIHBvcyhjYXJldC5k
ZWVwRXF1aXZhbGVudCgpKTsKKworICAgIFBvc2l0aW9uIHBvcyhzZWxlY3Rpb24uc3RhcnQoKSk7
CisgICAgVmlzaWJsZVBvc2l0aW9uIGNhcmV0KHBvcyk7CiAKICAgICBwb3MgPSBwb3NpdGlvbkF2
b2lkaW5nU3BlY2lhbEVsZW1lbnRCb3VuZGFyeShwb3MpOwogICAgIApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9lZGl0aW5nL0luc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQuY3BwIGIvV2ViQ29y
ZS9lZGl0aW5nL0luc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQuY3BwCmluZGV4IGY1ODI1
YjdjN2NiODgyNWRjYmQ4OWRmOTM3MzkyNDcwMWQ3MTUzNjMuLjk3ZTJhNWIzM2VkNWM2Zjc1NDli
OTM4MDQ0ODY5NDA4YjFiZDI3YTUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRQ
YXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kLmNwcAorKysgYi9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0
UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZC5jcHAKQEAgLTE3Miw4ICsxNzIsOCBAQCB2b2lkIElu
c2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQ6OmRvQXBwbHkoKQogICAgICAgICAgICAgfHwg
IXN0YXJ0QmxvY2stPnBhcmVudE5vZGUoKQogICAgICAgICAgICAgfHwgaXNUYWJsZUNlbGwoc3Rh
cnRCbG9jaykKICAgICAgICAgICAgIHx8IHN0YXJ0QmxvY2stPmhhc1RhZ05hbWUoZm9ybVRhZykK
LSAgICAgICAgICAgIHx8IChjYW5vbmljYWxQb3Mubm9kZSgpLT5yZW5kZXJlcigpICYmIGNhbm9u
aWNhbFBvcy5ub2RlKCktPnJlbmRlcmVyKCktPmlzVGFibGUoKSkKLSAgICAgICAgICAgIHx8IGNh
bm9uaWNhbFBvcy5ub2RlKCktPmhhc1RhZ05hbWUoaHJUYWcpKSB7CisgICAgICAgICAgICB8fCAo
IWNhbm9uaWNhbFBvcy5pc051bGwoKSAmJiBjYW5vbmljYWxQb3Mubm9kZSgpLT5yZW5kZXJlcigp
ICYmIGNhbm9uaWNhbFBvcy5ub2RlKCktPnJlbmRlcmVyKCktPmlzVGFibGUoKSkKKyAgICAgICAg
ICAgIHx8ICghY2Fub25pY2FsUG9zLmlzTnVsbCgpICYmIGNhbm9uaWNhbFBvcy5ub2RlKCktPmhh
c1RhZ05hbWUoaHJUYWcpKSkgewogICAgICAgICBhcHBseUNvbW1hbmRUb0NvbXBvc2l0ZShJbnNl
cnRMaW5lQnJlYWtDb21tYW5kOjpjcmVhdGUoZG9jdW1lbnQoKSkpOwogICAgICAgICByZXR1cm47
CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58320</attachid>
            <date>2010-06-09 18:36:00 -0700</date>
            <delta_ts>2010-07-07 09:44:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-30116-20100610103558.patch</filename>
            <type>text/plain</type>
            <size>5259</size>
            <attacher name="Tony Chang">tony</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAzNjJjNTIwOWQwMzEwZWFjYmUyMDc0NjY2NWZhODc3ZDRkNWY0MTRmLi5jM2FkOWI4
Yzk2MTI5MGRmMjQyYjQ4YTgwNzcyY2YzYjk2NzQzMjVjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTAtMDYtMDcgIFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWJDb3JlOjpJbnNlcnRMaW5l
QnJlYWtDb21tYW5kOjpzaG91bGRVc2VCcmVha0VsZW1lbnQgUmVhZEFWQE5VTEwKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMwMTE2CisKKyAgICAgICAg
KiBlZGl0aW5nL2luc2VydGluZy9yZXR1cm4ta2V5LWluLWhpZGRlbi10ZXh0YXJlYS1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvaW5zZXJ0aW5nL3JldHVybi1rZXktaW4t
aGlkZGVuLXRleHRhcmVhLmh0bWw6IEFkZGVkLgorCiAyMDEwLTA1LTE4ICBZdXpvIEZ1amlzaGlt
YSAgPHl1em9AZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTaGluaWNoaXJvIEhh
bWFqaS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvaW5zZXJ0aW5nL3JldHVybi1r
ZXktaW4taGlkZGVuLWZpZWxkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvaW5z
ZXJ0aW5nL3JldHVybi1rZXktaW4taGlkZGVuLWZpZWxkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li45NjkwODkwYTNkM2M3OGM0MDhhN2ZmNjY4NTEzOThkYTA5ZTU3YWJkCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9pbnNlcnRpbmcvcmV0dXJuLWtleS1pbi1oaWRkZW4t
ZmllbGQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorVGhpcyB0ZXN0cyB0byBtYWtlIHN1
cmUgdGhhdCBpbnNlcnRpbmcgYSBsaW5lIGJyZWFrIGluIGEgaGlkZGVuIHRleHRhcmVhIGRvZXNu
J3QgY3Jhc2guIFRvIHJlcHJvIG1hbnVhbGx5LCBwcmVzcyBlbnRlciBvciByZXR1cm4gaW4gdGhl
IHRleHRhcmVhLiBXZSBwYXNzIGlmIHdlIGRvbid0IGNyYXNoLgorCisKKworCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9lZGl0aW5nL2luc2VydGluZy9yZXR1cm4ta2V5LWluLWhpZGRlbi1maWVs
ZC5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9pbnNlcnRpbmcvcmV0dXJuLWtleS1pbi1oaWRk
ZW4tZmllbGQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MDZlYWFiMGJjOGI3ZmUxYTk0MGZhMmNlYmEzNDVj
M2Y2NTBiYWY1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9pbnNlcnRp
bmcvcmV0dXJuLWtleS1pbi1oaWRkZW4tZmllbGQuaHRtbApAQCAtMCwwICsxLDM2IEBACis8Ym9k
eT4KKzxwPlRoaXMgdGVzdHMgdG8gbWFrZSBzdXJlIHRoYXQgaW5zZXJ0aW5nIGEgbGluZSBicmVh
ayBpbiBhIGhpZGRlbiB0ZXh0YXJlYSBkb2Vzbid0IGNyYXNoLgorVG8gcmVwcm8gbWFudWFsbHks
IHByZXNzIGVudGVyIG9yIHJldHVybiBpbiB0aGUgdGV4dGFyZWEuICBXZSBwYXNzIGlmIHdlIGRv
bid0IGNyYXNoLjwvcD4KKzxkaXYgaWQ9ImQiPgorICA8dGV4dGFyZWEgaWQ9InRleHRhcmVhIj48
L3RleHRhcmVhPgorPC9kaXY+Cis8ZGl2IGlkPSJkMiIgY29udGVudGVkaXRhYmxlPSJ0cnVlIj4K
KzwvZGl2PgorPHNjcmlwdD4KK2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLCBm
dW5jdGlvbihlKSB7CisgICAgaWYgKGUua2V5Q29kZSA9PSAxMykgeworICAgICAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgiZCIpLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKKyAgICB9
Cit9LCBmYWxzZSk7CisKK2Z1bmN0aW9uIHJ1blRlc3QoKQoreworICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJ0ZXh0YXJlYSIpLmZvY3VzKCk7CisKKyAgICBpZiAoIXdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlciB8fCAhd2luZG93LmV2ZW50U2VuZGVyKQorICAgICAgICByZXR1cm47Cisg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGV2ZW50U2VuZGVyLmtl
eURvd24oJ1xuJyk7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZDIiKS5mb2N1cygp
OworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkMiIpLnN0eWxlLnZpc2liaWxpdHkgPSAi
IjsKKworICAgIGlmICghd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyIHx8ICF3aW5kb3cuZXZl
bnRTZW5kZXIpCisgICAgICAgIHJldHVybjsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KCk7CisgICAgZXZlbnRTZW5kZXIua2V5RG93bignXG4nKTsKK30KK3J1blRlc3QoKTsK
KworPC9zY3JpcHQ+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dl
YkNvcmUvQ2hhbmdlTG9nCmluZGV4IDBhN2MzNmI1OGQ1NTU0MDM5OWE0YjMyNDBiYWFjMmE1OWYw
YzVjOTEuLjcxNGNmMTMxZjRlNDUyNmE5MDliM2ZmZjE5YjI1MTQ1MjVhNzhlOTMgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTcgQEAKKzIwMTAtMDYtMDcgIFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWJDb3JlOjpJbnNl
cnRMaW5lQnJlYWtDb21tYW5kOjpzaG91bGRVc2VCcmVha0VsZW1lbnQgUmVhZEFWQE5VTEwKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMwMTE2CisKKyAg
ICAgICAgVGVzdDogZWRpdGluZy9pbnNlcnRpbmcvcmV0dXJuLWtleS1pbi1oaWRkZW4tdGV4dGFy
ZWEuaHRtbAorCisgICAgICAgICogZWRpdGluZy9JbnNlcnRMaW5lQnJlYWtDb21tYW5kLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc2VydExpbmVCcmVha0NvbW1hbmQ6OmRvQXBwbHkpOgorICAg
ICAgICAqIGVkaXRpbmcvSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kOjpkb0FwcGx5KToK
KwogMjAxMC0wNS0xOCAgWXV6byBGdWppc2hpbWEgIDx5dXpvQGdvb2dsZS5jb20+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgU2hpbmljaGlybyBIYW1hamkuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Vk
aXRpbmcvSW5zZXJ0TGluZUJyZWFrQ29tbWFuZC5jcHAgYi9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0
TGluZUJyZWFrQ29tbWFuZC5jcHAKaW5kZXggY2FhYWUwYTY2OTA2MDJlODU4Y2U3OWM5NDgzZjM1
OWVmMDNlMWNiMy4uNGQyZjE3M2U5ZTNiOTM2N2E3YjUxOGMzNTJmM2QzMmJmMzFkYzgwOCAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5nL0luc2VydExpbmVCcmVha0NvbW1hbmQuY3BwCisrKyBi
L1dlYkNvcmUvZWRpdGluZy9JbnNlcnRMaW5lQnJlYWtDb21tYW5kLmNwcApAQCAtOTIsOSArOTIs
OSBAQCB2b2lkIEluc2VydExpbmVCcmVha0NvbW1hbmQ6OmRvQXBwbHkoKQogICAgIFZpc2libGVT
ZWxlY3Rpb24gc2VsZWN0aW9uID0gZW5kaW5nU2VsZWN0aW9uKCk7CiAgICAgaWYgKHNlbGVjdGlv
bi5pc05vbmUoKSkKICAgICAgICAgcmV0dXJuOwotICAgIAotICAgIFZpc2libGVQb3NpdGlvbiBj
YXJldChzZWxlY3Rpb24udmlzaWJsZVN0YXJ0KCkpOwotICAgIFBvc2l0aW9uIHBvcyhjYXJldC5k
ZWVwRXF1aXZhbGVudCgpKTsKKworICAgIFBvc2l0aW9uIHBvcyhzZWxlY3Rpb24uc3RhcnQoKSk7
CisgICAgVmlzaWJsZVBvc2l0aW9uIGNhcmV0KHBvcyk7CiAKICAgICBwb3MgPSBwb3NpdGlvbkF2
b2lkaW5nU3BlY2lhbEVsZW1lbnRCb3VuZGFyeShwb3MpOwogICAgIApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9lZGl0aW5nL0luc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQuY3BwIGIvV2ViQ29y
ZS9lZGl0aW5nL0luc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQuY3BwCmluZGV4IGY1ODI1
YjdjN2NiODgyNWRjYmQ4OWRmOTM3MzkyNDcwMWQ3MTUzNjMuLmQ4YWE5OGY5YWNiYzc5MTY2N2Uw
ZjVjYjMwYzg4N2JmMTBjZTBkMWEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRQ
YXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kLmNwcAorKysgYi9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0
UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZC5jcHAKQEAgLTE3Miw4ICsxNzIsOSBAQCB2b2lkIElu
c2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQ6OmRvQXBwbHkoKQogICAgICAgICAgICAgfHwg
IXN0YXJ0QmxvY2stPnBhcmVudE5vZGUoKQogICAgICAgICAgICAgfHwgaXNUYWJsZUNlbGwoc3Rh
cnRCbG9jaykKICAgICAgICAgICAgIHx8IHN0YXJ0QmxvY2stPmhhc1RhZ05hbWUoZm9ybVRhZykK
LSAgICAgICAgICAgIHx8IChjYW5vbmljYWxQb3Mubm9kZSgpLT5yZW5kZXJlcigpICYmIGNhbm9u
aWNhbFBvcy5ub2RlKCktPnJlbmRlcmVyKCktPmlzVGFibGUoKSkKLSAgICAgICAgICAgIHx8IGNh
bm9uaWNhbFBvcy5ub2RlKCktPmhhc1RhZ05hbWUoaHJUYWcpKSB7CisgICAgICAgICAgICAvLyBG
SVhNRTogSWYgdGhlIG5vZGUgaXMgaGlkZGVuLCB3ZSBkb24ndCBoYXZlIGEgY2Fub25pY2FsIHBv
c2l0aW9uIHNvIHdlIHdpbGwgZG8gdGhlIHdyb25nIHRoaW5nIGZvciB0YWJsZXMgYW5kIDxocj4u
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDM0MgorICAgICAgICAg
ICAgfHwgKCFjYW5vbmljYWxQb3MuaXNOdWxsKCkgJiYgY2Fub25pY2FsUG9zLm5vZGUoKS0+cmVu
ZGVyZXIoKSAmJiBjYW5vbmljYWxQb3Mubm9kZSgpLT5yZW5kZXJlcigpLT5pc1RhYmxlKCkpCisg
ICAgICAgICAgICB8fCAoIWNhbm9uaWNhbFBvcy5pc051bGwoKSAmJiBjYW5vbmljYWxQb3Mubm9k
ZSgpLT5oYXNUYWdOYW1lKGhyVGFnKSkpIHsKICAgICAgICAgYXBwbHlDb21tYW5kVG9Db21wb3Np
dGUoSW5zZXJ0TGluZUJyZWFrQ29tbWFuZDo6Y3JlYXRlKGRvY3VtZW50KCkpKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>60745</attachid>
            <date>2010-07-07 09:44:47 -0700</date>
            <delta_ts>2010-07-08 21:35:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-30116-20100707094446.patch</filename>
            <type>text/plain</type>
            <size>5396</size>
            <attacher name="Tony Chang">tony</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBjODkzMWU3YmFkZDVhZTg2MWY2MDg3ZjZkOGY2YjQ2Njc1MTcwZWY2Li5jZjhlZDdl
ZDJhOTE5ZjRjN2RiMDQ1MjI0YjEyNGJmNTdhMWIyNjEzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTAtMDctMDcgIFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWJDb3JlOjpJbnNlcnRMaW5l
QnJlYWtDb21tYW5kOjpzaG91bGRVc2VCcmVha0VsZW1lbnQgUmVhZEFWQE5VTEwKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMwMTE2CisKKyAgICAgICAg
KiBlZGl0aW5nL2luc2VydGluZy9yZXR1cm4ta2V5LWluLWhpZGRlbi10ZXh0YXJlYS1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvaW5zZXJ0aW5nL3JldHVybi1rZXktaW4t
aGlkZGVuLXRleHRhcmVhLmh0bWw6IEFkZGVkLgorCiAyMDEwLTA3LTA3ICBWaXRhbHkgUmVwZXNo
a28gIDx2aXRhbHlyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9pbnNlcnRpbmcvcmV0dXJuLWtleS1pbi1oaWRkZW4t
ZmllbGQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9pbnNlcnRpbmcvcmV0dXJu
LWtleS1pbi1oaWRkZW4tZmllbGQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk2OTA4OTBhM2Qz
Yzc4YzQwOGE3ZmY2Njg1MTM5OGRhMDllNTdhYmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9lZGl0aW5nL2luc2VydGluZy9yZXR1cm4ta2V5LWluLWhpZGRlbi1maWVsZC1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSw1IEBACitUaGlzIHRlc3RzIHRvIG1ha2Ugc3VyZSB0aGF0IGluc2Vy
dGluZyBhIGxpbmUgYnJlYWsgaW4gYSBoaWRkZW4gdGV4dGFyZWEgZG9lc24ndCBjcmFzaC4gVG8g
cmVwcm8gbWFudWFsbHksIHByZXNzIGVudGVyIG9yIHJldHVybiBpbiB0aGUgdGV4dGFyZWEuIFdl
IHBhc3MgaWYgd2UgZG9uJ3QgY3Jhc2guCisKKworCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2VkaXRpbmcvaW5zZXJ0aW5nL3JldHVybi1rZXktaW4taGlkZGVuLWZpZWxkLmh0bWwgYi9MYXlv
dXRUZXN0cy9lZGl0aW5nL2luc2VydGluZy9yZXR1cm4ta2V5LWluLWhpZGRlbi1maWVsZC5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmE0ZjMxN2EwNDU3YmJjNGJlNThmYjkzNGE0OTE3YWFiMjBiNDE4NTQKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2luc2VydGluZy9yZXR1cm4ta2V5
LWluLWhpZGRlbi1maWVsZC5odG1sCkBAIC0wLDAgKzEsMzMgQEAKKzxib2R5PgorPHA+VGhpcyB0
ZXN0cyB0byBtYWtlIHN1cmUgdGhhdCBpbnNlcnRpbmcgYSBsaW5lIGJyZWFrIGluIGEgaGlkZGVu
IHRleHRhcmVhIGRvZXNuJ3QgY3Jhc2guCitUbyByZXBybyBtYW51YWxseSwgcHJlc3MgZW50ZXIg
b3IgcmV0dXJuIGluIHRoZSB0ZXh0YXJlYS4gIFdlIHBhc3MgaWYgd2UgZG9uJ3QgY3Jhc2guPC9w
PgorPGRpdiBpZD0iZCI+CisgIDx0ZXh0YXJlYSBpZD0idGV4dGFyZWEiPjwvdGV4dGFyZWE+Cis8
L2Rpdj4KKzxkaXYgaWQ9ImQyIiBjb250ZW50ZWRpdGFibGU9InRydWUiPgorPC9kaXY+Cis8c2Ny
aXB0PgorZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsIGZ1bmN0aW9uKGUpIHsK
KyAgICBpZiAoZS5rZXlDb2RlID09IDEzKQorICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgiZCIpLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKK30sIGZhbHNlKTsKKworZnVuY3Rp
b24gcnVuVGVzdCgpCit7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRleHRhcmVhIiku
Zm9jdXMoKTsKKworICAgIGlmICghd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyIHx8ICF3aW5k
b3cuZXZlbnRTZW5kZXIpCisgICAgICAgIHJldHVybjsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wQXNUZXh0KCk7CisgICAgZXZlbnRTZW5kZXIua2V5RG93bignXG4nKTsKKworICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJkMiIpLmZvY3VzKCk7CisgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImQyIikuc3R5bGUudmlzaWJpbGl0eSA9ICIiOworCisgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGV2ZW50U2VuZGVyLmtleURvd24oJ1xuJyk7Cit9
CitydW5UZXN0KCk7CisKKzwvc2NyaXB0PgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzODVkNTg4MGI3ODYzMTllZjc0MDc5
MjBmZDYxMTk3ODNiYjQ2YjA5Li42NzMyNjhlMWZjMmQ1ODAyZGFhY2E1M2Y5YzcyMGRmMTBkOTM5
ZWEzIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE5IEBACisyMDEwLTA3LTA3ICBUb255IENoYW5nICA8dG9ueUBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
V2ViQ29yZTo6SW5zZXJ0TGluZUJyZWFrQ29tbWFuZDo6c2hvdWxkVXNlQnJlYWtFbGVtZW50IFJl
YWRBVkBOVUxMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0zMDExNgorICAgICAgICBGaXhpbmcgdGhlIGNyYXNoIGNhdXNlcyB0ZXh0IGluc2VydGlvbnMg
b24gaGlkZGVuIGVsZW1lbnRzIHRvIGdldCBpZ25vcmVkCisgICAgICAgIChub3QgYSBuZXcgYnVn
KS4gIFRoaXMgaXMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwMzQy
CisKKyAgICAgICAgVGVzdDogZWRpdGluZy9pbnNlcnRpbmcvcmV0dXJuLWtleS1pbi1oaWRkZW4t
dGV4dGFyZWEuaHRtbAorCisgICAgICAgICogZWRpdGluZy9JbnNlcnRMaW5lQnJlYWtDb21tYW5k
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc2VydExpbmVCcmVha0NvbW1hbmQ6OmRvQXBwbHkp
OgorICAgICAgICAqIGVkaXRpbmcvSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kOjpkb0Fw
cGx5KToKKwogMjAxMC0wNy0wNyAgTHVjYXMgRGUgTWFyY2hpICA8bHVjYXMuZGVtYXJjaGlAcHJv
ZnVzaW9uLm1vYmk+CiAKICAgICAgICAgVW5yZXZpZXdlZCBidWlsZCBmaXggYWZ0ZXIgcjYyNTc3
LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL0luc2VydExpbmVCcmVha0NvbW1hbmQuY3Bw
IGIvV2ViQ29yZS9lZGl0aW5nL0luc2VydExpbmVCcmVha0NvbW1hbmQuY3BwCmluZGV4IGNhYWFl
MGE2NjkwNjAyZTg1OGNlNzljOTQ4M2YzNTllZjAzZTFjYjMuLmQ4MDVhY2Y1MWE0NzM0NmUyYmE0
NTZjOWQ3MzViMDc1ZmFkOTE4ZmMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRM
aW5lQnJlYWtDb21tYW5kLmNwcAorKysgYi9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TGluZUJyZWFr
Q29tbWFuZC5jcHAKQEAgLTk0LDYgKzk0LDExIEBAIHZvaWQgSW5zZXJ0TGluZUJyZWFrQ29tbWFu
ZDo6ZG9BcHBseSgpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBWaXNpYmxlUG9zaXRpb24g
Y2FyZXQoc2VsZWN0aW9uLnZpc2libGVTdGFydCgpKTsKKyAgICAvLyBGSVhNRTogSWYgdGhlIG5v
ZGUgaXMgaGlkZGVuLCB3ZSBzaG91bGQgc3RpbGwgYmUgYWJsZSB0byBpbnNlcnQgdGV4dC4gCisg
ICAgLy8gRm9yIG5vdywgd2UgcmV0dXJuIHRvIGF2b2lkIGEgY3Jhc2guICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAzNDIKKyAgICBpZiAoY2FyZXQuaXNOdWxsKCkp
CisgICAgICAgIHJldHVybjsKKwogICAgIFBvc2l0aW9uIHBvcyhjYXJldC5kZWVwRXF1aXZhbGVu
dCgpKTsKIAogICAgIHBvcyA9IHBvc2l0aW9uQXZvaWRpbmdTcGVjaWFsRWxlbWVudEJvdW5kYXJ5
KHBvcyk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0UGFyYWdyYXBoU2VwYXJh
dG9yQ29tbWFuZC5jcHAgYi9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9y
Q29tbWFuZC5jcHAKaW5kZXggZjU4MjViN2M3Y2I4ODI1ZGNiZDg5ZGY5MzczOTI0NzAxZDcxNTM2
My4uZDhhYTk4ZjlhY2JjNzkxNjY3ZTBmNWNiMzBjODg3YmYxMGNlMGQxYSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9lZGl0aW5nL0luc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQuY3BwCisrKyBi
L1dlYkNvcmUvZWRpdGluZy9JbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kLmNwcApAQCAt
MTcyLDggKzE3Miw5IEBAIHZvaWQgSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZDo6ZG9B
cHBseSgpCiAgICAgICAgICAgICB8fCAhc3RhcnRCbG9jay0+cGFyZW50Tm9kZSgpCiAgICAgICAg
ICAgICB8fCBpc1RhYmxlQ2VsbChzdGFydEJsb2NrKQogICAgICAgICAgICAgfHwgc3RhcnRCbG9j
ay0+aGFzVGFnTmFtZShmb3JtVGFnKQotICAgICAgICAgICAgfHwgKGNhbm9uaWNhbFBvcy5ub2Rl
KCktPnJlbmRlcmVyKCkgJiYgY2Fub25pY2FsUG9zLm5vZGUoKS0+cmVuZGVyZXIoKS0+aXNUYWJs
ZSgpKQotICAgICAgICAgICAgfHwgY2Fub25pY2FsUG9zLm5vZGUoKS0+aGFzVGFnTmFtZShoclRh
ZykpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBJZiB0aGUgbm9kZSBpcyBoaWRkZW4sIHdlIGRv
bid0IGhhdmUgYSBjYW5vbmljYWwgcG9zaXRpb24gc28gd2Ugd2lsbCBkbyB0aGUgd3JvbmcgdGhp
bmcgZm9yIHRhYmxlcyBhbmQgPGhyPi4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTQwMzQyCisgICAgICAgICAgICB8fCAoIWNhbm9uaWNhbFBvcy5pc051bGwoKSAmJiBj
YW5vbmljYWxQb3Mubm9kZSgpLT5yZW5kZXJlcigpICYmIGNhbm9uaWNhbFBvcy5ub2RlKCktPnJl
bmRlcmVyKCktPmlzVGFibGUoKSkKKyAgICAgICAgICAgIHx8ICghY2Fub25pY2FsUG9zLmlzTnVs
bCgpICYmIGNhbm9uaWNhbFBvcy5ub2RlKCktPmhhc1RhZ05hbWUoaHJUYWcpKSkgewogICAgICAg
ICBhcHBseUNvbW1hbmRUb0NvbXBvc2l0ZShJbnNlcnRMaW5lQnJlYWtDb21tYW5kOjpjcmVhdGUo
ZG9jdW1lbnQoKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>