<?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>25319</bug_id>
          
          <creation_ts>2009-04-21 17:15:04 -0700</creation_ts>
          <short_desc>caret does not paint after type in characters in right aligned div or after delete all characters in RTL div or 0px right padding RTL textarea</short_desc>
          <delta_ts>2010-04-25 23:37:00 -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>PC</rep_platform>
          <op_sys>Windows XP</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>0</everconfirmed>
          <reporter name="Xiaomei Ji">xji</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric</cc>
    
    <cc>justin.garcia</cc>
    
    <cc>mitz</cc>
    
    <cc>ojan</cc>
    
    <cc>playmobil</cc>
    
    <cc>progame+wk</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xji</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>118337</commentid>
    <comment_count>0</comment_count>
    <who name="Xiaomei Ji">xji</who>
    <bug_when>2009-04-21 17:15:04 -0700</bug_when>
    <thetext>Safari works fine for textarea probably because it&apos;s
textarea’s inner block always has horizontal padding.

Steps to reproduce:
1. open the attached test case
2. focus on 2nd input box, which is a RTL div, caret is painted. Then, type character &apos;a&apos;, caret painted at the left side of &apos;a&apos;, then, use backspace to delete &apos;a&apos;, caret is not painted anymore.
3. focus on 3rd input box, which is a right-aligned LTR div, caret is painted. Then, type character &apos;a&apos;, caret is not painted anymore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118338</commentid>
    <comment_count>1</comment_count>
      <attachid>29671</attachid>
    <who name="Xiaomei Ji">xji</who>
    <bug_when>2009-04-21 17:15:53 -0700</bug_when>
    <thetext>Created attachment 29671
test case</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118339</commentid>
    <comment_count>2</comment_count>
    <who name="Xiaomei Ji">xji</who>
    <bug_when>2009-04-21 17:20:28 -0700</bug_when>
    <thetext>The root cause probably is in:
void RenderBlock::computeHorizontalPositionsForLine(RootInlineBox* lineBox, bool firstLine, BidiRun* firstRun, BidiRun* trailingSpaceRun, bool reachedEnd)


    int x = leftOffset(height(), firstLine);
    switch(textAlign) {
        .....
        case RIGHT:
        case WEBKIT_RIGHT:
            // Wide lines spill out of the block based off direction.
            // So even if text-align is right, if direction is LTR, wide lines should overflow out of the right
            // side of the block.
            if (style()-&gt;direction() == LTR) {
                if (trailingSpaceRun) {
                    totWidth -= trailingSpaceRun-&gt;m_box-&gt;width();
                    trailingSpaceRun-&gt;m_box-&gt;setWidth(0);
                }
                if (totWidth &lt; availableWidth)
                    x += availableWidth - totWidth;
            } else {
                if (totWidth &gt; availableWidth &amp;&amp; trailingSpaceRun) {
                    trailingSpaceRun-&gt;m_box-&gt;setWidth(max(0, trailingSpaceRun-&gt;m_box-&gt;width() - totWidth + availableWidth));
                    totWidth -= trailingSpaceRun-&gt;m_box-&gt;width();
                } else
                    x += availableWidth - totWidth;
            }
            break;


Both statement of &quot;x += availableWidth - totWidth;&quot; should be &quot;x += availableWidth - totWidth - caretWidth;&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118340</commentid>
    <comment_count>3</comment_count>
    <who name="Xiaomei Ji">xji</who>
    <bug_when>2009-04-21 17:22:51 -0700</bug_when>
    <thetext>related Chromium bug:
http://code.google.com/p/chromium/issues/detail?id=10801</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122700</commentid>
    <comment_count>4</comment_count>
    <who name="Xiaomei Ji">xji</who>
    <bug_when>2009-05-22 11:12:57 -0700</bug_when>
    <thetext>I feel the patch is correct. But since RenderBlock::computeHorizontalPositionsForLine() is such a basic function, a lot of test results change.

I got ~200 differences on expected text files due to the 1-pixel shift (in DumpRenderTree, I guess). And ~200 pixel result diffs.

I am wondering is there any way to &quot;work around&quot; changing so many test files, which is kind of error prone? Should I include the png file change (at least the file names) in the patch? 

Look forward to your suggestions.

Thanks,
Xiaomei

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122702</commentid>
    <comment_count>5</comment_count>
      <attachid>30583</attachid>
    <who name="Xiaomei Ji">xji</who>
    <bug_when>2009-05-22 11:19:57 -0700</bug_when>
    <thetext>Created attachment 30583
an incomplete patch

I attach an incomplete patch just to show the changes in the test files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122705</commentid>
    <comment_count>6</comment_count>
    <who name="Jeremy Moskovich">playmobil</who>
    <bug_when>2009-05-22 11:22:08 -0700</bug_when>
    <thetext>ojan: can you provide any advice here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122706</commentid>
    <comment_count>7</comment_count>
    <who name="">mitz</who>
    <bug_when>2009-05-22 11:23:48 -0700</bug_when>
    <thetext>I don’t think it is correct to change layout just in order to make room for an insertion point.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122712</commentid>
    <comment_count>8</comment_count>
    <who name="Xiaomei Ji">xji</who>
    <bug_when>2009-05-22 11:52:08 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; I don�t think it is correct to change layout just in order to make room for an
&gt; insertion point.
&gt; 

Maybe I did not understand what you meant.

The cause of the non-rendering-caret is similar to the cause of issue 24527 (https://bugs.webkit.org/show_bug.cgi?id=24527). It is because x-axis is 1-pixel shifted when alignment is right, so the boundary of the layout is not correct.

Or maybe it could be fixed in other layer?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123338</commentid>
    <comment_count>9</comment_count>
      <attachid>30720</attachid>
    <who name="Xiaomei Ji">xji</who>
    <bug_when>2009-05-27 16:54:40 -0700</bug_when>
    <thetext>Created attachment 30720
patch w/ Layout test

I&apos;ve excluded the content of the 2 PNG files from the patch except the file names.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123339</commentid>
    <comment_count>10</comment_count>
    <who name="Xiaomei Ji">xji</who>
    <bug_when>2009-05-27 16:58:08 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; I don’t think it is correct to change layout just in order to make room for an
&gt; insertion point.
&gt; 

Hi Mitz,

Sorry that I did not understand what you meant until Ojan elaborated it for me.

I&apos;ve uploaded a patch which fixes RenderText::localCaretRect(). Hope it is the right place to fix.

Thanks,
Xiaomei
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123817</commentid>
    <comment_count>11</comment_count>
      <attachid>30720</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2009-06-01 02:20:41 -0700</bug_when>
    <thetext>Comment on attachment 30720
patch w/ Layout test

The fix seems reasonable to me (although, that if-statement is hard to read), but I&apos;m not very familiar with this code and I&apos;m not a webkit reviewer. :) I just had a couple testing comments.

&gt; Index: LayoutTests/editing/deleting/caret-rtl-after-delete.html
&gt; ===================================================================
&gt; --- LayoutTests/editing/deleting/caret-rtl-after-delete.html	(revision 0)
&gt; +++ LayoutTests/editing/deleting/caret-rtl-after-delete.html	(revision 0)
&gt; +function runTest()
&gt; +{
&gt; +    var e = document.getElementById(&quot;test&quot;);
&gt; +    e.focus();
&gt; +    selectAllCommand();
&gt; +    execDeleteCommand();

I think you should make this a dumpAsText test and just assert here that the caret is at a specific rect using textInputController.firstRectForCharacterRange(i, 0). We don&apos;t actually want or need pixel and rendertree results here, right? Also, that makes the expected behavior more clear if the test just asserts that the caret is at a specific location.

&gt; +&lt;div CONTENTEDITABLE id=&quot;test&quot; style=&quot;direction: rtl; width:200px; font-size:2000%&quot;; outline: solid thin; overflow: hidden&gt;a&lt;/div&gt; 

Is the font-size:2000% really necessary for this test?

&gt; +&lt;/body&gt;
&gt; +&lt;script&gt; runTest(); &lt;/script&gt;
&gt; +&lt;/html&gt;
&gt; +
&gt; Index: LayoutTests/editing/inserting/caret-right-align-after-insert.html
&gt; ===================================================================
&gt; --- LayoutTests/editing/inserting/caret-right-align-after-insert.html	(revision 0)
&gt; +++ LayoutTests/editing/inserting/caret-right-align-after-insert.html	(revision 0)

Same comment as for the above test. Make it a dumpAsText.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>124087</commentid>
    <comment_count>12</comment_count>
      <attachid>30887</attachid>
    <who name="Xiaomei Ji">xji</who>
    <bug_when>2009-06-02 18:00:29 -0700</bug_when>
    <thetext>Created attachment 30887
patch w/ layout test

updated patch per Ojan&apos;s suggestion:
1. change the &quot;if&quot; to &quot;switch&quot; in RenderText.cpp for better readability
2. using dumpAsText() and textInputController.firstRectForCharacterRange(i, 0) for layout test
3. remove pixel tests which are not necessary, and remove &quot;font-size:2000%&quot; which is for pixel test only.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>124333</commentid>
    <comment_count>13</comment_count>
      <attachid>30887</attachid>
    <who name="">mitz</who>
    <bug_when>2009-06-04 10:41:33 -0700</bug_when>
    <thetext>Comment on attachment 30887
patch w/ layout test

Does the behavior implemented in this patch match any platform&apos;s native text system? I think it deviates from Mac OS X’s native behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>124390</commentid>
    <comment_count>14</comment_count>
    <who name="Xiaomei Ji">xji</who>
    <bug_when>2009-06-04 15:40:26 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 30887 [review])
&gt; Does the behavior implemented in this patch match any platform&apos;s native text
&gt; system? I think it deviates from Mac OS X’s native behavior.
&gt; 

Do you mean how the caret width is distributed to left/right side?
I am not familiar with Mac OS X. How text system in Mac OS X handles it?
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>124401</commentid>
    <comment_count>15</comment_count>
    <who name="">mitz</who>
    <bug_when>2009-06-04 16:07:50 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (In reply to comment #13)
&gt; &gt; (From update of attachment 30887 [review] [review])
&gt; &gt; Does the behavior implemented in this patch match any platform&apos;s native text
&gt; &gt; system? I think it deviates from Mac OS X’s native behavior.
&gt; &gt; 
&gt; 
&gt; Do you mean how the caret width is distributed to left/right side?
&gt; I am not familiar with Mac OS X. How text system in Mac OS X handles it?

As far as I can tell, in the Cocoa text system on Mac OS X, the caret (which is 1 pixel wide) is positioned to the right of the glyph, regardless of alignment and directionality.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>126228</commentid>
    <comment_count>16</comment_count>
      <attachid>30887</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2009-06-16 10:53:38 -0700</bug_when>
    <thetext>Comment on attachment 30887
patch w/ layout test

Isn&apos;t the real issue here just that m_overflowWidth needs to include the caret so that it will be able to paint?  Can&apos;t we just make the caret part of the visual overflow?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>126834</commentid>
    <comment_count>17</comment_count>
      <attachid>30887</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-06-18 17:40:57 -0700</bug_when>
    <thetext>Comment on attachment 30887
patch w/ layout test

r- based on hyatt&apos;s above comments.  Please answer and either re-request review or post a revised patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>126864</commentid>
    <comment_count>18</comment_count>
    <who name="Xiaomei Ji">xji</who>
    <bug_when>2009-06-18 19:23:22 -0700</bug_when>
    <thetext>It is the computation of the local caret rect wrong.
The wrong computation is in RenderText::localCaretRect().

Hyatt commented through IRC that the &quot;if&quot; and the &quot;else&quot; block are both wrong. He sees 4 mistakes there, and he will need to figure out who wrote the code originally from trac (I guess to figure out the clamp part)

Following is from Hyatt through IRC:
it looks like localCaretRect is wanting to clamp inside the block in one case and the line in anoterh. but its math is wrong.
I do not particularly understand why you would clamp.
the entire notion of clamping seems misguided to me.
like.. if the offset happens to be outside of the block... so what.
maybe it is because of overflow::hidden to keep it from getting clipped.
not sure.
but the math isn&apos;t right anyway.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>126865</commentid>
    <comment_count>19</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-06-18 19:27:09 -0700</bug_when>
    <thetext>You can figure out who wrote the code yourself if that&apos;s helpful:
http://trac.webkit.org/browser/trunk/WebCore/rendering/RenderText.cpp?annotate=blame&amp;rev=43324</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213156</commentid>
    <comment_count>20</comment_count>
      <attachid>53499</attachid>
    <who name="Xiaomei Ji">xji</who>
    <bug_when>2010-04-15 18:17:55 -0700</bug_when>
    <thetext>Created attachment 53499
path /w layout test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213316</commentid>
    <comment_count>21</comment_count>
    <who name="">mitz</who>
    <bug_when>2010-04-16 11:22:38 -0700</bug_when>
    <thetext>I think using cb-&gt;x() here is wrong. See bug 33503. This condition looks suspicious because of its asymmetry:
(cbStyle-&gt;direction() == RTL || cbStyle-&gt;textAlign() == RIGHT || cbStyle-&gt;textAlign() == WEBKIT_RIGHT)
it is not immediately clear why left-aligned RTL-text should fall into this case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213538</commentid>
    <comment_count>22</comment_count>
    <who name="Xiaomei Ji">xji</who>
    <bug_when>2010-04-16 17:52:45 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; I think using cb-&gt;x() here is wrong. See bug 33503. 

Hi Mitz,
Thanks for the quick review.

In the previous logic, when the style is autoWrap, the left position of caret is computed using the InlineTextBox&apos;s direction. For the test case in caret-rtl-2.html, the textBox is RTL, and the computation falls in:
left = max(left, cb-x());

I changed the logic to use containing block&apos;s alignment (same as no-wrap case). The test case&apos;s containing block is LTR, and the computation falls in:
left = min(left, cb-&gt;x() + cb-&gt;width() - caretWidthRightOffset);
left = max(left, rootleft);

I tried caret-rtl-2.html, the patch will place the cursor at the very left of the rtl text, which is the &quot;Bad&quot; scenario you refer.

&gt;This condition looks
&gt; suspicious because of its asymmetry:
&gt; (cbStyle-&gt;direction() == RTL || cbStyle-&gt;textAlign() == RIGHT ||
&gt; cbStyle-&gt;textAlign() == WEBKIT_RIGHT)
&gt; it is not immediately clear why left-aligned RTL-text should fall into this
&gt; case.

Yes, you are right.
I think it should be changed to the same logic of computing alignment in RenderBlock::localCaretRect():

    switch (currentStyle-&gt;textAlign()) {
        case TAAUTO:
        case JUSTIFY:
            if (currentStyle-&gt;direction() == RTL)
                alignment = alignRight;
            break;
        case LEFT:
        case WEBKIT_LEFT:
            break;
        case CENTER:
        case WEBKIT_CENTER:
            alignment = alignCenter;
            break;
        case RIGHT:
        case WEBKIT_RIGHT:
            alignment = alignRight;
            break;
    }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>214067</commentid>
    <comment_count>23</comment_count>
      <attachid>53685</attachid>
    <who name="Xiaomei Ji">xji</who>
    <bug_when>2010-04-19 09:47:31 -0700</bug_when>
    <thetext>Created attachment 53685
path /w layout test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>214995</commentid>
    <comment_count>24</comment_count>
      <attachid>53685</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-04-20 15:16:15 -0700</bug_when>
    <thetext>Comment on attachment 53685
path /w layout test

&gt; +        rightEdge = cb-&gt;x() + cb-&gt;width();

I think that instead of cb-&gt;x() + cb-&gt;width() you could write cb-&gt;frameRect().right(). It seems a little clearer to me.

I didn&apos;t review all the code, but I have two comments on the part I did read.

&gt; +    switch (cbStyle-&gt;textAlign()) {
&gt; +    case TAAUTO:
&gt; +    case JUSTIFY:
&gt; +        if (cbStyle-&gt;direction() == RTL)
&gt; +            rightAligned = true;

I would write this as:

    rightAligned = cbStyle-&gt;direction() == RTL;

&gt; +        break;
&gt; +    case RIGHT:
&gt; +    case WEBKIT_RIGHT:
&gt; +        rightAligned = true;
&gt; +        break;
&gt; +    default:
&gt; +        break;
&gt; +    }

It&apos;s better style to list all the ETextAlign values here and leave out the default case. That way, if a new ETextAlign value is added later we will get a warning when compiling with GCC.

I didn&apos;t mark this review+ yet because I&apos;m not entirely sure it&apos;s right. Mitz should look at this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>215638</commentid>
    <comment_count>25</comment_count>
      <attachid>53685</attachid>
    <who name="">mitz</who>
    <bug_when>2010-04-21 18:37:19 -0700</bug_when>
    <thetext>Comment on attachment 53685
path /w layout test

r=me assuming you address Darin’s comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216581</commentid>
    <comment_count>26</comment_count>
    <who name="Xiaomei Ji">xji</who>
    <bug_when>2010-04-23 15:08:22 -0700</bug_when>
    <thetext>Committed r58191: &lt;http://trac.webkit.org/changeset/58191&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216595</commentid>
    <comment_count>27</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-23 15:31:30 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/58191 might have broken Qt Linux Release</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216609</commentid>
    <comment_count>28</comment_count>
      <attachid>54199</attachid>
    <who name="Xiaomei Ji">xji</who>
    <bug_when>2010-04-23 16:13:28 -0700</bug_when>
    <thetext>Created attachment 54199
fix test breaks QT Linux

obsolete the patch already committed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216610</commentid>
    <comment_count>29</comment_count>
      <attachid>54199</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-23 16:17:47 -0700</bug_when>
    <thetext>Comment on attachment 54199
fix test breaks QT Linux

This change looks wrong.  It&apos;s correct to check for textInputController since you&apos;re using it. :)

Does Qt support textInputController?  If not, we should just skip this test on Qt.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216622</commentid>
    <comment_count>30</comment_count>
      <attachid>54202</attachid>
    <who name="Xiaomei Ji">xji</who>
    <bug_when>2010-04-23 16:41:20 -0700</bug_when>
    <thetext>Created attachment 54202
patch skip caret-position.html in QT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216625</commentid>
    <comment_count>31</comment_count>
    <who name="Xiaomei Ji">xji</who>
    <bug_when>2010-04-23 16:51:05 -0700</bug_when>
    <thetext>Committed r58198: &lt;http://trac.webkit.org/changeset/58198&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216904</commentid>
    <comment_count>32</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-04-25 23:25:46 -0700</bug_when>
    <thetext>This change caused 12 tests to start failing pixel tests in Chromium.  Is this expected?

It looks like in most cases, it&apos;s just the cursor moving by a pixel.

  editing/deleting/4845371.html = IMAGE
  editing/deleting/5126166.html = IMAGE
  editing/deleting/5483370.html = IMAGE
  editing/deleting/table-cells.html = IMAGE
  editing/inserting/4875189-2.html = IMAGE
  editing/pasteboard/5387578.html = IMAGE
  editing/pasteboard/paste-4039777-fix.html = IMAGE
  editing/pasteboard/paste-table-001.html = IMAGE
  editing/pasteboard/paste-table-cells.html = IMAGE
  editing/selection/move-past-trailing-space.html = IMAGE
  fast/inline-block/14498-positionForCoordinates.html = IMAGE
  fast/repaint/caret-outside-block.html = IMAGE</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216911</commentid>
    <comment_count>33</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-04-25 23:37:00 -0700</bug_when>
    <thetext>The tests fail on webkit mac as well if you run with --tolerance=0.  I&apos;ve opened bug 38104 to track this.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>29671</attachid>
            <date>2009-04-21 17:15:53 -0700</date>
            <delta_ts>2009-04-21 17:15:53 -0700</delta_ts>
            <desc>test case</desc>
            <filename>safari_div.html</filename>
            <type>text/html</type>
            <size>364</size>
            <attacher name="Xiaomei Ji">xji</attacher>
            
              <data encoding="base64">77u/PCFET0NUWVBFIGh0bWw+DQo8aHRtbD4gDQo8aGVhZD4gDQo8c3R5bGU+DQp0ZXh0YXJlYQ0K
ew0KcGFkZGluZzogMXB4IDBweCAxcHggMXB4Ow0KZGlyZWN0aW9uOnJ0bDsNCn0NCjwvc3R5bGU+
DQo8L2hlYWQ+IA0KPGJvZHk+DQo8dGV4dGFyZWE+DQo8L3RleHRhcmVhPg0KPGRpdiBjb250ZW50
ZWRpdGFibGUgc3R5bGU9ImRpcmVjdGlvbjogcnRsOyBib3JkZXI6IHNvbGlkIHRoaW4gYmxhY2s7
IHdpZHRoOjE1MHB4OyI+PC9kaXY+DQo8ZGl2IGNvbnRlbnRlZGl0YWJsZSBzdHlsZT0idGV4dC1h
bGlnbjogcmlnaHQ7IGJvcmRlcjogc29saWQgdGhpbiBibGFjazsgd2lkdGg6MTUwcHg7Ij48L2Rp
dj4NCjwvYm9keT4gDQo8L2h0bWw+IA==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30583</attachid>
            <date>2009-05-22 11:19:57 -0700</date>
            <delta_ts>2010-04-15 18:17:55 -0700</delta_ts>
            <desc>an incomplete patch</desc>
            <filename>11</filename>
            <type>text/plain</type>
            <size>12965</size>
            <attacher name="Xiaomei Ji">xji</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0Mzc4OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTkgQEAKKzIwMDktMDUtMDcgIFhpYW9tZWkgSmkgIDx4amlAY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeCBi
dWcgMjUzMTk6IGNhcmV0IGRvZXMgbm90IHBhaW50IGFmdGVyIHR5cGUgaW4gY2hhcmFjdGVycyBp
biByaWdodCBhbGlnbmVkIGRpdiAKKyAgICAgICAgb3IgYWZ0ZXIgZGVsZXRlIGFsbCBjaGFyYWN0
ZXJzIGluIFJUTCBkaXYgb3IgMHB4IHJpZ2h0IHBhZGRpbmcgUlRMIHRleHRhcmVhLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjUzMTkKKworICAgICAg
ICBUZXN0czogZWRpdGluZy9kZWxldGluZy9jYXJldC1ydGwtYWZ0ZXItZGVsZXRlLmh0bWwKKyAg
ICAgICAgICAgICAgIGVkaXRpbmcvaW5zZXJ0aW5nL2NhcmV0LXJpZ2h0LWFsaWduLWFmdGVyLWlu
c2VydC5odG1sCisKKyAgICAgICAgKiByZW5kZXJpbmcvYmlkaS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCbG9jazo6Y29tcHV0ZUhvcml6b250YWxQb3NpdGlvbnNGb3JMaW5lKTogV2hl
biBhbGlnbm1lbnQgaXMgcmlnaHQsCisgICAgICAgIHgtYXhpcyBuZWVkIHRvIGJlIHN1YnRyYWN0
ZWQgYnkgY2FyZXRXaWR0aCBzbyB0aGF0IHRoZSBjYXJldCBpcyB3aXRoaW4gdGhlIGVsZW1lbnQg
CisgICAgICAgIHJhbmdlLgorCiAyMDA5LTA1LTE1ICBOYXRlIENoYXBpbiAgPGphcGhldEBnb29n
bGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERpbWl0cmkgR2xhemtvdi4KSW5kZXg6IFdl
YkNvcmUvcmVuZGVyaW5nL2JpZGkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5n
L2JpZGkuY3BwCShyZXZpc2lvbiA0Mzc4OSkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL2JpZGkuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02OTQsMTMgKzY5NCwxMyBAQCB2b2lkIFJlbmRlckJsb2NrOjpj
b21wdXRlSG9yaXpvbnRhbFBvc2l0CiAgICAgICAgICAgICAgICAgICAgIHRyYWlsaW5nU3BhY2VS
dW4tPm1fYm94LT5zZXRXaWR0aCgwKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgaWYgKHRvdFdpZHRoIDwgYXZhaWxhYmxlV2lkdGgpCi0gICAgICAgICAgICAgICAgICAgIHgg
Kz0gYXZhaWxhYmxlV2lkdGggLSB0b3RXaWR0aDsKKyAgICAgICAgICAgICAgICAgICAgeCArPSBh
dmFpbGFibGVXaWR0aCAtIHRvdFdpZHRoIC0gY2FyZXRXaWR0aDsKICAgICAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICAgICAgaWYgKHRvdFdpZHRoID4gYXZhaWxhYmxlV2lkdGggJiYgdHJh
aWxpbmdTcGFjZVJ1bikgewogICAgICAgICAgICAgICAgICAgICB0cmFpbGluZ1NwYWNlUnVuLT5t
X2JveC0+c2V0V2lkdGgobWF4KDAsIHRyYWlsaW5nU3BhY2VSdW4tPm1fYm94LT53aWR0aCgpIC0g
dG90V2lkdGggKyBhdmFpbGFibGVXaWR0aCkpOwogICAgICAgICAgICAgICAgICAgICB0b3RXaWR0
aCAtPSB0cmFpbGluZ1NwYWNlUnVuLT5tX2JveC0+d2lkdGgoKTsKICAgICAgICAgICAgICAgICB9
IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgeCArPSBhdmFpbGFibGVXaWR0aCAtIHRvdFdpZHRo
OworICAgICAgICAgICAgICAgICAgICB4ICs9IGF2YWlsYWJsZVdpZHRoIC0gdG90V2lkdGggLSBj
YXJldFdpZHRoOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgQ0VOVEVSOgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLWxlb3BhcmQvZmFzdC90
ZXh0L2ludGVybmF0aW9uYWwvYmlkaS1uZXV0cmFsLWRpcmVjdGlvbmFsaXR5LXBhcmFncmFwaC1z
dGFydC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
LWxlb3BhcmQvZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvYmlkaS1uZXV0cmFsLWRpcmVjdGlvbmFs
aXR5LXBhcmFncmFwaC1zdGFydC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDQzNzg5KQorKysgTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjLWxlb3BhcmQvZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvYmlk
aS1uZXV0cmFsLWRpcmVjdGlvbmFsaXR5LXBhcmFncmFwaC1zdGFydC1leHBlY3RlZC50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAgbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAw
CiAgICAgICAgICAgdGV4dCBydW4gYXQgKDExLDMpIHdpZHRoIDIzIFJUTDogIlx4e0ZFQjJ9IFx4
e0ZFRUR9IgogICAgICAgICAgIHRleHQgcnVuIGF0ICgzNCwzKSB3aWR0aCAzMTogImhlbGxvIgog
ICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDI0NSkgc2l6ZSA3ODR4MjEKLSAgICAgICAgUmVu
ZGVyVGV4dCB7I3RleHR9IGF0ICg3MTUsMykgc2l6ZSA2OXgxOAotICAgICAgICAgIHRleHQgcnVu
IGF0ICg3MTUsMykgd2lkdGggMjcgUlRMOiAiIFx4e0ZFQjJ9IFx4e0ZFRUR9IgotICAgICAgICAg
IHRleHQgcnVuIGF0ICg3NDIsMykgd2lkdGggMzE6ICJoZWxsbyIKLSAgICAgICAgICB0ZXh0IHJ1
biBhdCAoNzczLDMpIHdpZHRoIDExIFJUTDogIj8gIgorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4
dH0gYXQgKDcxNCwzKSBzaXplIDY5eDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDcxNCwzKSB3
aWR0aCAyNyBSVEw6ICIgXHh7RkVCMn0gXHh7RkVFRH0iCisgICAgICAgICAgdGV4dCBydW4gYXQg
KDc0MSwzKSB3aWR0aCAzMTogImhlbGxvIgorICAgICAgICAgIHRleHQgcnVuIGF0ICg3NzIsMykg
d2lkdGggMTEgUlRMOiAiPyAiCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtbGVvcGFy
ZC9wbGF0Zm9ybS9tYWMvZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvR2VlemEtUHJvLXZlcnRpY2Fs
LW1ldHJpY3MtYWRqdXN0bWVudC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjLWxlb3BhcmQvcGxhdGZvcm0vbWFjL2Zhc3QvdGV4dC9pbnRlcm5hdGlv
bmFsL0dlZXphLVByby12ZXJ0aWNhbC1tZXRyaWNzLWFkanVzdG1lbnQtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiA0Mzc4OSkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy1sZW9wYXJkL3BsYXRm
b3JtL21hYy9mYXN0L3RleHQvaW50ZXJuYXRpb25hbC9HZWV6YS1Qcm8tdmVydGljYWwtbWV0cmlj
cy1hZGp1c3RtZW50LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtOSw0MyArOSw0MyBA
QCBsYXllciBhdCAoMCwwKSBzaXplIDc4NXg2MDgKICAgICAgICAgICB0ZXh0IHJ1biBhdCAoNDc4
LDApIHdpZHRoIDI3MjogImFib3ZlIHRoZSBncmVlbiBsaW5lIG9yIGJlbG93IHRoZSBibHVlIGxp
bmUuIgogICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMzQpIHNpemUgNzY5eDQ0IFtiZ2Nv
bG9yPSNEM0QzRDNdCiAgICAgICAgIFJlbmRlcklubGluZSB7U1BBTn0gYXQgKDAsMCkgc2l6ZSAx
MDR4MTYgW2NvbG9yPSNGRjAwMDBdIFtib3JkZXI6ICgxcHggc29saWQgIzAwODAwMCkgbm9uZSAo
MXB4IHNvbGlkICMwMDAwRkYpIG5vbmVdCi0gICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0
ICg2NTcsOCkgc2l6ZSAxMDR4MTQKLSAgICAgICAgICAgIHRleHQgcnVuIGF0ICg2NTcsOCkgd2lk
dGggMTA0IFJUTDogIlx4ezYyOH1ceHs2MkZ9XHh7NjIxfSBceHs2Mjd9XHh7NjQ0fVx4ezY0NX1c
eHs2NER9IFx4ezY0MX1ceHs2NEF9IFx4ezYyQX1ceHs2MkR9XHh7NjM3fVx4ezY0NX0gXHh7NjQ0
fVx4ezYyQ31ceHs2NDV9XHh7NjRFfVx4ezY1MX1ceHs2NDR9IFx4ezYyN31ceHs2NDR9XHh7NjI3
fVx4ezYzM31ceHs2Mjh9XHh7NjI3fVx4ezY0Nn1ceHs2NEF9XHh7NjI5fSIKLSAgICAgICAgUmVu
ZGVyQlIge0JSfSBhdCAoNjU3LDE4KSBzaXplIDB4MAotICAgICAgICBSZW5kZXJUZXh0IHsjdGV4
dH0gYXQgKDYzMywyMikgc2l6ZSAxMjh4MTQKLSAgICAgICAgICB0ZXh0IHJ1biBhdCAoNjMzLDIy
KSB3aWR0aCAxMjggUlRMOiAiXHh7NjI4fVx4ezYyRn1ceHs2MjF9IFx4ezYyN31ceHs2NDR9XHh7
NjJBfVx4ezYyRH1ceHs2NDJ9XHh7NjRBfVx4ezY0Mn0gXHh7NjQxfVx4ezY0QX0gXHh7NjJBfVx4
ezYyRH1ceHs2Mzd9XHh7NjQ1fSBceHs2Mjd9XHh7NjQ0fVx4ezYzN31ceHs2Mjd9XHh7NjI2fVx4
ezYzMX1ceHs2Mjl9IFx4ezYyN31ceHs2NDR9XHh7NjI3fVx4ezYzM31ceHs2Mjh9XHh7NjI3fVx4
ezY0Nn1ceHs2NEF9XHh7NjI5fSIKKyAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDY1
Niw4KSBzaXplIDEwNHgxNAorICAgICAgICAgICAgdGV4dCBydW4gYXQgKDY1Niw4KSB3aWR0aCAx
MDQgUlRMOiAiXHh7NjI4fVx4ezYyRn1ceHs2MjF9IFx4ezYyN31ceHs2NDR9XHh7NjQ1fVx4ezY0
RH0gXHh7NjQxfVx4ezY0QX0gXHh7NjJBfVx4ezYyRH1ceHs2Mzd9XHh7NjQ1fSBceHs2NDR9XHh7
NjJDfVx4ezY0NX1ceHs2NEV9XHh7NjUxfVx4ezY0NH0gXHh7NjI3fVx4ezY0NH1ceHs2Mjd9XHh7
NjMzfVx4ezYyOH1ceHs2Mjd9XHh7NjQ2fVx4ezY0QX1ceHs2Mjl9IgorICAgICAgICBSZW5kZXJC
UiB7QlJ9IGF0ICg2NTYsMTgpIHNpemUgMHgwCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBh
dCAoNjMyLDIyKSBzaXplIDEyOHgxNAorICAgICAgICAgIHRleHQgcnVuIGF0ICg2MzIsMjIpIHdp
ZHRoIDEyOCBSVEw6ICJceHs2Mjh9XHh7NjJGfVx4ezYyMX0gXHh7NjI3fVx4ezY0NH1ceHs2MkF9
XHh7NjJEfVx4ezY0Mn1ceHs2NEF9XHh7NjQyfSBceHs2NDF9XHh7NjRBfSBceHs2MkF9XHh7NjJE
fVx4ezYzN31ceHs2NDV9IFx4ezYyN31ceHs2NDR9XHh7NjM3fVx4ezYyN31ceHs2MjZ9XHh7NjMx
fVx4ezYyOX0gXHh7NjI3fVx4ezY0NH1ceHs2Mjd9XHh7NjMzfVx4ezYyOH1ceHs2Mjd9XHh7NjQ2
fVx4ezY0QX1ceHs2Mjl9IgogICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsODYpIHNpemUg
NzY5eDUyIFtiZ2NvbG9yPSNEM0QzRDNdCiAgICAgICAgIFJlbmRlcklubGluZSB7U1BBTn0gYXQg
KDAsMCkgc2l6ZSAxMTh4MjAgW2NvbG9yPSNGRjAwMDBdIFtib3JkZXI6ICgxcHggc29saWQgIzAw
ODAwMCkgbm9uZSAoMXB4IHNvbGlkICMwMDAwRkYpIG5vbmVdCi0gICAgICAgICAgUmVuZGVyVGV4
dCB7I3RleHR9IGF0ICg2NDMsOCkgc2l6ZSAxMTh4MTgKLSAgICAgICAgICAgIHRleHQgcnVuIGF0
ICg2NDMsOCkgd2lkdGggMTE4IFJUTDogIlx4ezYyOH1ceHs2MkZ9XHh7NjIxfSBceHs2Mjd9XHh7
NjQ0fVx4ezY0NX1ceHs2NER9IFx4ezY0MX1ceHs2NEF9IFx4ezYyQX1ceHs2MkR9XHh7NjM3fVx4
ezY0NX0gXHh7NjQ0fVx4ezYyQ31ceHs2NDV9XHh7NjRFfVx4ezY1MX1ceHs2NDR9IFx4ezYyN31c
eHs2NDR9XHh7NjI3fVx4ezYzM31ceHs2Mjh9XHh7NjI3fVx4ezY0Nn1ceHs2NEF9XHh7NjI5fSIK
LSAgICAgICAgUmVuZGVyQlIge0JSfSBhdCAoNjQzLDIxKSBzaXplIDB4MAotICAgICAgICBSZW5k
ZXJUZXh0IHsjdGV4dH0gYXQgKDYxNiwyNikgc2l6ZSAxNDV4MTgKLSAgICAgICAgICB0ZXh0IHJ1
biBhdCAoNjE2LDI2KSB3aWR0aCAxNDUgUlRMOiAiXHh7NjI4fVx4ezYyRn1ceHs2MjF9IFx4ezYy
N31ceHs2NDR9XHh7NjJBfVx4ezYyRH1ceHs2NDJ9XHh7NjRBfVx4ezY0Mn0gXHh7NjQxfVx4ezY0
QX0gXHh7NjJBfVx4ezYyRH1ceHs2Mzd9XHh7NjQ1fSBceHs2Mjd9XHh7NjQ0fVx4ezYzN31ceHs2
Mjd9XHh7NjI2fVx4ezYzMX1ceHs2Mjl9IFx4ezYyN31ceHs2NDR9XHh7NjI3fVx4ezYzM31ceHs2
Mjh9XHh7NjI3fVx4ezY0Nn1ceHs2NEF9XHh7NjI5fSIKKyAgICAgICAgICBSZW5kZXJUZXh0IHsj
dGV4dH0gYXQgKDY0Miw4KSBzaXplIDExOHgxOAorICAgICAgICAgICAgdGV4dCBydW4gYXQgKDY0
Miw4KSB3aWR0aCAxMTggUlRMOiAiXHh7NjI4fVx4ezYyRn1ceHs2MjF9IFx4ezYyN31ceHs2NDR9
XHh7NjQ1fVx4ezY0RH0gXHh7NjQxfVx4ezY0QX0gXHh7NjJBfVx4ezYyRH1ceHs2Mzd9XHh7NjQ1
fSBceHs2NDR9XHh7NjJDfVx4ezY0NX1ceHs2NEV9XHh7NjUxfVx4ezY0NH0gXHh7NjI3fVx4ezY0
NH1ceHs2Mjd9XHh7NjMzfVx4ezYyOH1ceHs2Mjd9XHh7NjQ2fVx4ezY0QX1ceHs2Mjl9IgorICAg
ICAgICBSZW5kZXJCUiB7QlJ9IGF0ICg2NDIsMjEpIHNpemUgMHgwCisgICAgICAgIFJlbmRlclRl
eHQgeyN0ZXh0fSBhdCAoNjE1LDI2KSBzaXplIDE0NXgxOAorICAgICAgICAgIHRleHQgcnVuIGF0
ICg2MTUsMjYpIHdpZHRoIDE0NSBSVEw6ICJceHs2Mjh9XHh7NjJGfVx4ezYyMX0gXHh7NjI3fVx4
ezY0NH1ceHs2MkF9XHh7NjJEfVx4ezY0Mn1ceHs2NEF9XHh7NjQyfSBceHs2NDF9XHh7NjRBfSBc
eHs2MkF9XHh7NjJEfVx4ezYzN31ceHs2NDV9IFx4ezYyN31ceHs2NDR9XHh7NjM3fVx4ezYyN31c
eHs2MjZ9XHh7NjMxfVx4ezYyOX0gXHh7NjI3fVx4ezY0NH1ceHs2Mjd9XHh7NjMzfVx4ezYyOH1c
eHs2Mjd9XHh7NjQ2fVx4ezY0QX1ceHs2Mjl9IgogICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQg
KDAsMTQ2KSBzaXplIDc2OXg1OCBbYmdjb2xvcj0jRDNEM0QzXQogICAgICAgICBSZW5kZXJJbmxp
bmUge1NQQU59IGF0ICgwLDApIHNpemUgMTQ1eDIzIFtjb2xvcj0jRkYwMDAwXSBbYm9yZGVyOiAo
MXB4IHNvbGlkICMwMDgwMDApIG5vbmUgKDFweCBzb2xpZCAjMDAwMEZGKSBub25lXQotICAgICAg
ICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoNjE2LDgpIHNpemUgMTQ1eDIxCi0gICAgICAgICAg
ICB0ZXh0IHJ1biBhdCAoNjE2LDgpIHdpZHRoIDE0NSBSVEw6ICJceHs2Mjh9XHh7NjJGfVx4ezYy
MX0gXHh7NjI3fVx4ezY0NH1ceHs2NDV9XHh7NjREfSBceHs2NDF9XHh7NjRBfSBceHs2MkF9XHh7
NjJEfVx4ezYzN31ceHs2NDV9IFx4ezY0NH1ceHs2MkN9XHh7NjQ1fVx4ezY0RX1ceHs2NTF9XHh7
NjQ0fSBceHs2Mjd9XHh7NjQ0fVx4ezYyN31ceHs2MzN9XHh7NjI4fVx4ezYyN31ceHs2NDZ9XHh7
NjRBfVx4ezYyOX0iCi0gICAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDYxNiwyMykgc2l6ZSAweDAK
LSAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICg1ODIsMjkpIHNpemUgMTc5eDIxCi0gICAg
ICAgICAgdGV4dCBydW4gYXQgKDU4MiwyOSkgd2lkdGggMTc5IFJUTDogIlx4ezYyOH1ceHs2MkZ9
XHh7NjIxfSBceHs2Mjd9XHh7NjQ0fVx4ezYyQX1ceHs2MkR9XHh7NjQyfVx4ezY0QX1ceHs2NDJ9
IFx4ezY0MX1ceHs2NEF9IFx4ezYyQX1ceHs2MkR9XHh7NjM3fVx4ezY0NX0gXHh7NjI3fVx4ezY0
NH1ceHs2Mzd9XHh7NjI3fVx4ezYyNn1ceHs2MzF9XHh7NjI5fSBceHs2Mjd9XHh7NjQ0fVx4ezYy
N31ceHs2MzN9XHh7NjI4fVx4ezYyN31ceHs2NDZ9XHh7NjRBfVx4ezYyOX0iCisgICAgICAgICAg
UmVuZGVyVGV4dCB7I3RleHR9IGF0ICg2MTUsOCkgc2l6ZSAxNDV4MjEKKyAgICAgICAgICAgIHRl
eHQgcnVuIGF0ICg2MTUsOCkgd2lkdGggMTQ1IFJUTDogIlx4ezYyOH1ceHs2MkZ9XHh7NjIxfSBc
eHs2Mjd9XHh7NjQ0fVx4ezY0NX1ceHs2NER9IFx4ezY0MX1ceHs2NEF9IFx4ezYyQX1ceHs2MkR9
XHh7NjM3fVx4ezY0NX0gXHh7NjQ0fVx4ezYyQ31ceHs2NDV9XHh7NjRFfVx4ezY1MX1ceHs2NDR9
IFx4ezYyN31ceHs2NDR9XHh7NjI3fVx4ezYzM31ceHs2Mjh9XHh7NjI3fVx4ezY0Nn1ceHs2NEF9
XHh7NjI5fSIKKyAgICAgICAgUmVuZGVyQlIge0JSfSBhdCAoNjE1LDIzKSBzaXplIDB4MAorICAg
ICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDU4MSwyOSkgc2l6ZSAxNzl4MjEKKyAgICAgICAg
ICB0ZXh0IHJ1biBhdCAoNTgxLDI5KSB3aWR0aCAxNzkgUlRMOiAiXHh7NjI4fVx4ezYyRn1ceHs2
MjF9IFx4ezYyN31ceHs2NDR9XHh7NjJBfVx4ezYyRH1ceHs2NDJ9XHh7NjRBfVx4ezY0Mn0gXHh7
NjQxfVx4ezY0QX0gXHh7NjJBfVx4ezYyRH1ceHs2Mzd9XHh7NjQ1fSBceHs2Mjd9XHh7NjQ0fVx4
ezYzN31ceHs2Mjd9XHh7NjI2fVx4ezYzMX1ceHs2Mjl9IFx4ezYyN31ceHs2NDR9XHh7NjI3fVx4
ezYzM31ceHs2Mjh9XHh7NjI3fVx4ezY0Nn1ceHs2NEF9XHh7NjI5fSIKICAgICAgIFJlbmRlckJs
b2NrIHtESVZ9IGF0ICgwLDIxMikgc2l6ZSA3Njl4ODYgW2JnY29sb3I9I0QzRDNEM10KICAgICAg
ICAgUmVuZGVySW5saW5lIHtTUEFOfSBhdCAoMCwwKSBzaXplIDI0NngzNyBbY29sb3I9I0ZGMDAw
MF0gW2JvcmRlcjogKDFweCBzb2xpZCAjMDA4MDAwKSBub25lICgxcHggc29saWQgIzAwMDBGRikg
bm9uZV0KLSAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDUxNSw4KSBzaXplIDI0Nngz
NQotICAgICAgICAgICAgdGV4dCBydW4gYXQgKDUxNSw4KSB3aWR0aCAyNDYgUlRMOiAiXHh7NjI4
fVx4ezYyRn1ceHs2MjF9IFx4ezYyN31ceHs2NDR9XHh7NjQ1fVx4ezY0RH0gXHh7NjQxfVx4ezY0
QX0gXHh7NjJBfVx4ezYyRH1ceHs2Mzd9XHh7NjQ1fSBceHs2NDR9XHh7NjJDfVx4ezY0NX1ceHs2
NEV9XHh7NjUxfVx4ezY0NH0gXHh7NjI3fVx4ezY0NH1ceHs2Mjd9XHh7NjMzfVx4ezYyOH1ceHs2
Mjd9XHh7NjQ2fVx4ezY0QX1ceHs2Mjl9IgotICAgICAgICBSZW5kZXJCUiB7QlJ9IGF0ICg1MTUs
MzMpIHNpemUgMHgwCi0gICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoNDYwLDQzKSBzaXpl
IDMwMXgzNQotICAgICAgICAgIHRleHQgcnVuIGF0ICg0NjAsNDMpIHdpZHRoIDMwMSBSVEw6ICJc
eHs2Mjh9XHh7NjJGfVx4ezYyMX0gXHh7NjI3fVx4ezY0NH1ceHs2MkF9XHh7NjJEfVx4ezY0Mn1c
eHs2NEF9XHh7NjQyfSBceHs2NDF9XHh7NjRBfSBceHs2MkF9XHh7NjJEfVx4ezYzN31ceHs2NDV9
IFx4ezYyN31ceHs2NDR9XHh7NjM3fVx4ezYyN31ceHs2MjZ9XHh7NjMxfVx4ezYyOX0gXHh7NjI3
fVx4ezY0NH1ceHs2Mjd9XHh7NjMzfVx4ezYyOH1ceHs2Mjd9XHh7NjQ2fVx4ezY0QX1ceHs2Mjl9
IgorICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoNTE0LDgpIHNpemUgMjQ2eDM1Cisg
ICAgICAgICAgICB0ZXh0IHJ1biBhdCAoNTE0LDgpIHdpZHRoIDI0NiBSVEw6ICJceHs2Mjh9XHh7
NjJGfVx4ezYyMX0gXHh7NjI3fVx4ezY0NH1ceHs2NDV9XHh7NjREfSBceHs2NDF9XHh7NjRBfSBc
eHs2MkF9XHh7NjJEfVx4ezYzN31ceHs2NDV9IFx4ezY0NH1ceHs2MkN9XHh7NjQ1fVx4ezY0RX1c
eHs2NTF9XHh7NjQ0fSBceHs2Mjd9XHh7NjQ0fVx4ezYyN31ceHs2MzN9XHh7NjI4fVx4ezYyN31c
eHs2NDZ9XHh7NjRBfVx4ezYyOX0iCisgICAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDUxNCwzMykg
c2l6ZSAweDAKKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICg0NTksNDMpIHNpemUgMzAx
eDM1CisgICAgICAgICAgdGV4dCBydW4gYXQgKDQ1OSw0Mykgd2lkdGggMzAxIFJUTDogIlx4ezYy
OH1ceHs2MkZ9XHh7NjIxfSBceHs2Mjd9XHh7NjQ0fVx4ezYyQX1ceHs2MkR9XHh7NjQyfVx4ezY0
QX1ceHs2NDJ9IFx4ezY0MX1ceHs2NEF9IFx4ezYyQX1ceHs2MkR9XHh7NjM3fVx4ezY0NX0gXHh7
NjI3fVx4ezY0NH1ceHs2Mzd9XHh7NjI3fVx4ezYyNn1ceHs2MzF9XHh7NjI5fSBceHs2Mjd9XHh7
NjQ0fVx4ezYyN31ceHs2MzN9XHh7NjI4fVx4ezYyN31ceHs2NDZ9XHh7NjRBfVx4ezYyOX0iCiAg
ICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwzMDYpIHNpemUgNzY5eDEyMiBbYmdjb2xvcj0j
RDNEM0QzXQogICAgICAgICBSZW5kZXJJbmxpbmUge1NQQU59IGF0ICgwLDApIHNpemUgMzY4eDU1
IFtjb2xvcj0jRkYwMDAwXSBbYm9yZGVyOiAoMXB4IHNvbGlkICMwMDgwMDApIG5vbmUgKDFweCBz
b2xpZCAjMDAwMEZGKSBub25lXQotICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMzkz
LDgpIHNpemUgMzY4eDUzCi0gICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMzkzLDgpIHdpZHRoIDM2
OCBSVEw6ICJceHs2Mjh9XHh7NjJGfVx4ezYyMX0gXHh7NjI3fVx4ezY0NH1ceHs2NDV9XHh7NjRE
fSBceHs2NDF9XHh7NjRBfSBceHs2MkF9XHh7NjJEfVx4ezYzN31ceHs2NDV9IFx4ezY0NH1ceHs2
MkN9XHh7NjQ1fVx4ezY0RX1ceHs2NTF9XHh7NjQ0fSBceHs2Mjd9XHh7NjQ0fVx4ezYyN31ceHs2
MzN9XHh7NjI4fVx4ezYyN31ceHs2NDZ9XHh7NjRBfVx4ezYyOX0iCi0gICAgICAgIFJlbmRlckJS
IHtCUn0gYXQgKDM5Myw0Nikgc2l6ZSAweDAKLSAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0
ICgzMTAsNjEpIHNpemUgNDUxeDUzCi0gICAgICAgICAgdGV4dCBydW4gYXQgKDMxMCw2MSkgd2lk
dGggNDUxIFJUTDogIlx4ezYyOH1ceHs2MkZ9XHh7NjIxfSBceHs2Mjd9XHh7NjQ0fVx4ezYyQX1c
eHs2MkR9XHh7NjQyfVx4ezY0QX1ceHs2NDJ9IFx4ezY0MX1ceHs2NEF9IFx4ezYyQX1ceHs2MkR9
XHh7NjM3fVx4ezY0NX0gXHh7NjI3fVx4ezY0NH1ceHs2Mzd9XHh7NjI3fVx4ezYyNn1ceHs2MzF9
XHh7NjI5fSBceHs2Mjd9XHh7NjQ0fVx4ezYyN31ceHs2MzN9XHh7NjI4fVx4ezYyN31ceHs2NDZ9
XHh7NjRBfVx4ezYyOX0iCisgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgzOTIsOCkg
c2l6ZSAzNjh4NTMKKyAgICAgICAgICAgIHRleHQgcnVuIGF0ICgzOTIsOCkgd2lkdGggMzY4IFJU
TDogIlx4ezYyOH1ceHs2MkZ9XHh7NjIxfSBceHs2Mjd9XHh7NjQ0fVx4ezY0NX1ceHs2NER9IFx4
ezY0MX1ceHs2NEF9IFx4ezYyQX1ceHs2MkR9XHh7NjM3fVx4ezY0NX0gXHh7NjQ0fVx4ezYyQ31c
eHs2NDV9XHh7NjRFfVx4ezY1MX1ceHs2NDR9IFx4ezYyN31ceHs2NDR9XHh7NjI3fVx4ezYzM31c
eHs2Mjh9XHh7NjI3fVx4ezY0Nn1ceHs2NEF9XHh7NjI5fSIKKyAgICAgICAgUmVuZGVyQlIge0JS
fSBhdCAoMzkyLDQ2KSBzaXplIDB4MAorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDMw
OSw2MSkgc2l6ZSA0NTF4NTMKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMzA5LDYxKSB3aWR0aCA0
NTEgUlRMOiAiXHh7NjI4fVx4ezYyRn1ceHs2MjF9IFx4ezYyN31ceHs2NDR9XHh7NjJBfVx4ezYy
RH1ceHs2NDJ9XHh7NjRBfVx4ezY0Mn0gXHh7NjQxfVx4ezY0QX0gXHh7NjJBfVx4ezYyRH1ceHs2
Mzd9XHh7NjQ1fSBceHs2Mjd9XHh7NjQ0fVx4ezYzN31ceHs2Mjd9XHh7NjI2fVx4ezYzMX1ceHs2
Mjl9IFx4ezYyN31ceHs2NDR9XHh7NjI3fVx4ezYzM31ceHs2Mjh9XHh7NjI3fVx4ezY0Nn1ceHs2
NEF9XHh7NjI5fSIKICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDQzNikgc2l6ZSA3Njl4
MTU2IFtiZ2NvbG9yPSNEM0QzRDNdCiAgICAgICAgIFJlbmRlcklubGluZSB7U1BBTn0gYXQgKDAs
MCkgc2l6ZSA0OTN4NzIgW2NvbG9yPSNGRjAwMDBdIFtib3JkZXI6ICgxcHggc29saWQgIzAwODAw
MCkgbm9uZSAoMXB4IHNvbGlkICMwMDAwRkYpIG5vbmVdCi0gICAgICAgICAgUmVuZGVyVGV4dCB7
I3RleHR9IGF0ICgyNjgsOCkgc2l6ZSA0OTN4NzAKLSAgICAgICAgICAgIHRleHQgcnVuIGF0ICgy
NjgsOCkgd2lkdGggNDkzIFJUTDogIlx4ezYyOH1ceHs2MkZ9XHh7NjIxfSBceHs2Mjd9XHh7NjQ0
fVx4ezY0NX1ceHs2NER9IFx4ezY0MX1ceHs2NEF9IFx4ezYyQX1ceHs2MkR9XHh7NjM3fVx4ezY0
NX0gXHh7NjQ0fVx4ezYyQ31ceHs2NDV9XHh7NjRFfVx4ezY1MX1ceHs2NDR9IFx4ezYyN31ceHs2
NDR9XHh7NjI3fVx4ezYzM31ceHs2Mjh9XHh7NjI3fVx4ezY0Nn1ceHs2NEF9XHh7NjI5fSIKLSAg
ICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMjY4LDU4KSBzaXplIDB4MAotICAgICAgICBSZW5kZXJU
ZXh0IHsjdGV4dH0gYXQgKDE2MCw3OCkgc2l6ZSA2MDF4NzAKLSAgICAgICAgICB0ZXh0IHJ1biBh
dCAoMTYwLDc4KSB3aWR0aCA2MDEgUlRMOiAiXHh7NjI4fVx4ezYyRn1ceHs2MjF9IFx4ezYyN31c
eHs2NDR9XHh7NjJBfVx4ezYyRH1ceHs2NDJ9XHh7NjRBfVx4ezY0Mn0gXHh7NjQxfVx4ezY0QX0g
XHh7NjJBfVx4ezYyRH1ceHs2Mzd9XHh7NjQ1fSBceHs2Mjd9XHh7NjQ0fVx4ezYzN31ceHs2Mjd9
XHh7NjI2fVx4ezYzMX1ceHs2Mjl9IFx4ezYyN31ceHs2NDR9XHh7NjI3fVx4ezYzM31ceHs2Mjh9
XHh7NjI3fVx4ezY0Nn1ceHs2NEF9XHh7NjI5fSIKKyAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4
dH0gYXQgKDI2Nyw4KSBzaXplIDQ5M3g3MAorICAgICAgICAgICAgdGV4dCBydW4gYXQgKDI2Nyw4
KSB3aWR0aCA0OTMgUlRMOiAiXHh7NjI4fVx4ezYyRn1ceHs2MjF9IFx4ezYyN31ceHs2NDR9XHh7
NjQ1fVx4ezY0RH0gXHh7NjQxfVx4ezY0QX0gXHh7NjJBfVx4ezYyRH1ceHs2Mzd9XHh7NjQ1fSBc
eHs2NDR9XHh7NjJDfVx4ezY0NX1ceHs2NEV9XHh7NjUxfVx4ezY0NH0gXHh7NjI3fVx4ezY0NH1c
eHs2Mjd9XHh7NjMzfVx4ezYyOH1ceHs2Mjd9XHh7NjQ2fVx4ezY0QX1ceHs2Mjl9IgorICAgICAg
ICBSZW5kZXJCUiB7QlJ9IGF0ICgyNjcsNTgpIHNpemUgMHgwCisgICAgICAgIFJlbmRlclRleHQg
eyN0ZXh0fSBhdCAoMTU5LDc4KSBzaXplIDYwMXg3MAorICAgICAgICAgIHRleHQgcnVuIGF0ICgx
NTksNzgpIHdpZHRoIDYwMSBSVEw6ICJceHs2Mjh9XHh7NjJGfVx4ezYyMX0gXHh7NjI3fVx4ezY0
NH1ceHs2MkF9XHh7NjJEfVx4ezY0Mn1ceHs2NEF9XHh7NjQyfSBceHs2NDF9XHh7NjRBfSBceHs2
MkF9XHh7NjJEfVx4ezYzN31ceHs2NDV9IFx4ezYyN31ceHs2NDR9XHh7NjM3fVx4ezYyN31ceHs2
MjZ9XHh7NjMxfVx4ezYyOX0gXHh7NjI3fVx4ezY0NH1ceHs2Mjd9XHh7NjMzfVx4ezYyOH1ceHs2
Mjd9XHh7NjQ2fVx4ezY0QX1ceHs2Mjl9Igo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30720</attachid>
            <date>2009-05-27 16:54:40 -0700</date>
            <delta_ts>2010-04-15 18:17:55 -0700</delta_ts>
            <desc>patch w/ Layout test</desc>
            <filename>25319.v1</filename>
            <type>text/plain</type>
            <size>15773</size>
            <attacher name="Xiaomei Ji">xji</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NDIwMikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjEgQEAKKzIwMDktMDUtMjcgIFhpYW9tZWkgSmkgIDx4amlAY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeCBj
YXJldCBkb2VzIG5vdCBwYWludCBhZnRlciB0eXBlIGluIGNoYXJhY3RlcnMgaW4gcmlnaHQgYWxp
Z25lZCBkaXYgCisgICAgICAgIG9yIGFmdGVyIGRlbGV0ZSBhbGwgY2hhcmFjdGVycyBpbiBSVEwg
ZGl2IG9yIDBweCByaWdodCBwYWRkaW5nIFJUTCAKKyAgICAgICAgdGV4dGFyZWEuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTMxOQorCisgICAgICAg
IFRlc3RzOiBlZGl0aW5nL2RlbGV0aW5nL2NhcmV0LXJ0bC1hZnRlci1kZWxldGUuaHRtbAorICAg
ICAgICAgICAgICAgZWRpdGluZy9pbnNlcnRpbmcvY2FyZXQtcmlnaHQtYWxpZ24tYWZ0ZXItaW5z
ZXJ0Lmh0bWwKKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRleHQ6OmxvY2FsQ2FyZXRSZWN0KTogSW5zdGVhZCBvZiBkaXN0cmli
dXRpbmcgCisgICAgICAgIGNhcmV0V2lkdGggdG8gZWl0aGVyIHNpZGUgb2YgdGhlIG9mZnNldCwg
ZGlzdHJpYnV0ZSB0aGUgY2FyZXQgd2lkdGggdG8KKyAgICAgICAgdGhlIGxlZnQgc2lkZSBvZiB0
aGUgb2Zmc2V0IGlmIHRoZSBhbGlnbm1lbnQgaXMgUklHSFQgYW5kIGRpc3RyaWJ1dGUgaXQKKyAg
ICAgICAgdG8gdGhlIHJpZ2h0IHNpZGUgb3RoZXJ3aXNlLgorCiAyMDA5LTA1LTI3ICBEaW1pdHJp
IEdsYXprb3YgIDxkZ2xhemtvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwg
YnVpbGQgZml4LgpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAJKHJldmlzaW9uIDQ0MjAx
KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM5Miw4ICszOTIsMTQgQEAgSW50UmVjdCBSZW5kZXJUZXh0Ojpsb2NhbENhcmV0UmVjdChJbmxp
bgogCiAgICAgaW50IGxlZnQgPSBib3gtPnBvc2l0aW9uRm9yT2Zmc2V0KGNhcmV0T2Zmc2V0KTsK
IAotICAgIC8vIERpc3RyaWJ1dGUgdGhlIGNhcmV0J3Mgd2lkdGggdG8gZWl0aGVyIHNpZGUgb2Yg
dGhlIG9mZnNldC4KLSAgICBpbnQgY2FyZXRXaWR0aExlZnRPZk9mZnNldCA9IGNhcmV0V2lkdGgg
LyAyOworICAgIGludCBjYXJldFdpZHRoTGVmdE9mT2Zmc2V0ID0gMDsKKyAgICBSZW5kZXJTdHls
ZSogY3VycmVudFN0eWxlID0gZmlyc3RMaW5lU3R5bGUoKTsKKyAgICBFVGV4dEFsaWduIGFsaWdu
bWVudCA9IGN1cnJlbnRTdHlsZS0+dGV4dEFsaWduKCk7CisgICAgaWYgKCgoYWxpZ25tZW50ID09
IFRBQVVUTyB8fCBhbGlnbm1lbnQgPT0gSlVTVElGWSkgJiYgY3VycmVudFN0eWxlLT5kaXJlY3Rp
b24oKSA9PSBSVEwpIHx8CisgICAgICAgIGFsaWdubWVudCA9PSBSSUdIVCB8fCAKKyAgICAgICAg
YWxpZ25tZW50ID09IFdFQktJVF9SSUdIVCkgeworICAgICAgICBjYXJldFdpZHRoTGVmdE9mT2Zm
c2V0ID0gY2FyZXRXaWR0aDsKKyAgICB9CiAgICAgbGVmdCAtPSBjYXJldFdpZHRoTGVmdE9mT2Zm
c2V0OwogICAgIGludCBjYXJldFdpZHRoUmlnaHRPZk9mZnNldCA9IGNhcmV0V2lkdGggLSBjYXJl
dFdpZHRoTGVmdE9mT2Zmc2V0OwogCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA0NDIwMikKKysrIExheW91
dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDA5LTA1
LTI3ICBYaWFvbWVpIEppICA8eGppQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXggY2FyZXQgZG9lcyBub3QgcGFpbnQgYWZ0
ZXIgdHlwZSBpbiBjaGFyYWN0ZXJzIGluIHJpZ2h0IGFsaWduZWQgZGl2IAorICAgICAgICBvciBh
ZnRlciBkZWxldGUgYWxsIGNoYXJhY3RlcnMgaW4gUlRMIGRpdiBvciAwcHggcmlnaHQgcGFkZGlu
ZyBSVEwgCisgICAgICAgIHRleHRhcmVhLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjUzMTkKKworICAgICAgICAqIGVkaXRpbmcvZGVsZXRpbmcvY2Fy
ZXQtcnRsLWFmdGVyLWRlbGV0ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL2luc2Vy
dGluZy9jYXJldC1yaWdodC1hbGlnbi1hZnRlci1pbnNlcnQuaHRtbDogQWRkZWQuCisgICAgICAg
ICogcGxhdGZvcm0vbWFjL2VkaXRpbmcvZGVsZXRpbmcvY2FyZXQtcnRsLWFmdGVyLWRlbGV0ZS1l
eHBlY3RlZC5jaGVja3N1bTogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2VkaXRpbmcv
ZGVsZXRpbmcvY2FyZXQtcnRsLWFmdGVyLWRlbGV0ZS1leHBlY3RlZC5wbmc6IEFkZGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL21hYy9lZGl0aW5nL2RlbGV0aW5nL2NhcmV0LXJ0bC1hZnRlci1kZWxl
dGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZWRpdGluZy9p
bnB1dC9jYXJldC1wcmltYXJ5LWJpZGktZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3Jt
L21hYy9lZGl0aW5nL2luc2VydGluZy9jYXJldC1yaWdodC1hbGlnbi1hZnRlci1pbnNlcnQtZXhw
ZWN0ZWQuY2hlY2tzdW06IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9lZGl0aW5nL2lu
c2VydGluZy9jYXJldC1yaWdodC1hbGlnbi1hZnRlci1pbnNlcnQtZXhwZWN0ZWQucG5nOiBBZGRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZWRpdGluZy9pbnNlcnRpbmcvY2FyZXQtcmlnaHQt
YWxpZ24tYWZ0ZXItaW5zZXJ0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZv
cm0vbWFjL2VkaXRpbmcvc2VsZWN0aW9uL21vdmUtbGVmdC1yaWdodC1leHBlY3RlZC50eHQ6CisK
IDIwMDktMDUtMjcgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEB3ZWJraXQub3JnPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9k
ZWxldGluZy9jYXJldC1ydGwtYWZ0ZXItZGVsZXRlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZWRpdGluZy9kZWxldGluZy9jYXJldC1ydGwtYWZ0ZXItZGVsZXRlLmh0bWwJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL2RlbGV0aW5nL2NhcmV0LXJ0bC1hZnRlci1k
ZWxldGUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzMCBAQAorPGh0bWw+Cis8aGVhZD4K
KzxzY3JpcHQgc3JjPS4uL2VkaXRpbmcuanMgbGFuZ3VhZ2U9IkphdmFTY3JpcHQiIHR5cGU9InRl
eHQvSmF2YVNjcmlwdCIgPjwvc2NyaXB0PgorPHNjcmlwdD4KKworaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKKyAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEVkaXRpbmdDYWxs
YmFja3MoKTsKKworZnVuY3Rpb24gcnVuVGVzdCgpCit7CisgICAgdmFyIGUgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgidGVzdCIpOworICAgIGUuZm9jdXMoKTsKKyAgICBzZWxlY3RBbGxDb21t
YW5kKCk7CisgICAgZXhlY0RlbGV0ZUNvbW1hbmQoKTsKK30KKworPC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KK1RoaXMgdGVzdHMgdGhhdCBkZWxldGluZyBhbGwgdGhlIGNoYXJhY3RlcnMgaW4g
YSBjb250ZW50ZWRpdGFibGUgUlRMIGRpdiAKK3dpbGwgc2V0IHRoZSBjYXJldCBpbiB0aGUgcmln
aHQgZWRnZSBvZiB0aGUgZGl2Cis8YnI+Cis8cD4KKyAgICBkZWxldGUgYWxsIHRoZSBjaGFyYWFj
dGVycyBpbiB0aGUgZGl2LCB0aGUgY2FyZXQgc2hvdWxkIGJlIG9uIHRoZSByaWdodCBlZGdlIG9m
IHRoZSBkaXYuCis8L3A+Cis8ZGl2IENPTlRFTlRFRElUQUJMRSBpZD0idGVzdCIgc3R5bGU9ImRp
cmVjdGlvbjogcnRsOyB3aWR0aDoyMDBweDsgZm9udC1zaXplOjIwMDAlIjsgb3V0bGluZTogc29s
aWQgdGhpbjsgb3ZlcmZsb3c6IGhpZGRlbj5hPC9kaXY+IAorPC9ib2R5PgorPHNjcmlwdD4gcnVu
VGVzdCgpOyA8L3NjcmlwdD4KKzwvaHRtbD4KKwpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9p
bnNlcnRpbmcvY2FyZXQtcmlnaHQtYWxpZ24tYWZ0ZXItaW5zZXJ0Lmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZWRpdGluZy9pbnNlcnRpbmcvY2FyZXQtcmlnaHQtYWxpZ24tYWZ0ZXIt
aW5zZXJ0Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL2luc2VydGlu
Zy9jYXJldC1yaWdodC1hbGlnbi1hZnRlci1pbnNlcnQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwyOSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPS4uL2VkaXRpbmcuanMgbGFu
Z3VhZ2U9IkphdmFTY3JpcHQiIHR5cGU9InRleHQvSmF2YVNjcmlwdCIgPjwvc2NyaXB0PgorPHNj
cmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBFZGl0aW5nQ2FsbGJhY2tzKCk7CisKK2Z1bmN0aW9uIHJ1blRlc3QoKQor
eworICAgIHZhciBlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3QtcmlnaHQtYWxpZ24i
KTsKKyAgICBlLmZvY3VzKCk7CisgICAgc2VsZWN0QWxsQ29tbWFuZCgpOworICAgIHR5cGVDaGFy
YWN0ZXJDb21tYW5kKCk7Cit9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CitUaGlzIHRl
c3RzIHRoYXQgYWRkaW5nIGEgY2hhcmFjdGVyIGluIGEgY29udGVudGVkaXRhYmxlIHJpZ2h0IGFs
aWduZWQgZGl2IAord2lsbCBkaXNwbGF5IHRoZSBjYXJldCBpbiB0aGUgcmlnaHQgZWRnZSBvZiB0
aGUgZGl2Cis8YnI+Cis8cD4KKyAgICBpbnNlcnQgY2hhcmFhY3RlcnMgaW4gdGhlIGRpdiwgdGhl
IGNhcmV0IHNob3VsZCBiZSBvbiB0aGUgcmlnaHQgZWRnZSBvZiB0aGUgZGl2LgorPC9wPgorPC9i
b2R5PgorPGRpdiBDT05URU5URURJVEFCTEUgaWQ9InRlc3QtcmlnaHQtYWxpZ24iIHN0eWxlPSJ0
ZXh0LWFsaWduOiByaWdodDsgd2lkdGg6MjAwcHg7IGZvbnQtc2l6ZToyMDAwJSI7IG91dGxpbmU6
IHNvbGlkIHRoaW47IG92ZXJmbG93OiBoaWRkZW4+PC9kaXY+IAorPHNjcmlwdD4gcnVuVGVzdCgp
OyA8L3NjcmlwdD4KKzwvaHRtbD4KKwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Vk
aXRpbmcvZGVsZXRpbmcvY2FyZXQtcnRsLWFmdGVyLWRlbGV0ZS1leHBlY3RlZC5jaGVja3N1bQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9kZWxldGluZy9j
YXJldC1ydGwtYWZ0ZXItZGVsZXRlLWV4cGVjdGVkLmNoZWNrc3VtCShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvZGVsZXRpbmcvY2FyZXQtcnRsLWFmdGVy
LWRlbGV0ZS1leHBlY3RlZC5jaGVja3N1bQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSBAQAorYmFh
MWI3YTE5Y2IzOTAxMGIzZTNkMTE1MzdkNzdkMWYKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9kZWxldGluZy9jYXJldC1y
dGwtYWZ0ZXItZGVsZXRlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMvZWRpdGluZy9kZWxldGluZy9jYXJldC1ydGwtYWZ0ZXItZGVsZXRlLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5n
L2RlbGV0aW5nL2NhcmV0LXJ0bC1hZnRlci1kZWxldGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDI2IEBACitFRElUSU5HIERFTEVHQVRFOiBzaG91bGRCZWdpbkVkaXRpbmdJ
bkRPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0
byAxIG9mIERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50CitFRElUSU5HIERFTEVHQVRFOiB3
ZWJWaWV3RGlkQmVnaW5FZGl0aW5nOldlYlZpZXdEaWRCZWdpbkVkaXRpbmdOb3RpZmljYXRpb24K
K0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6KG51bGwpIHRv
RE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9j
dW1lbnQgdG8gMSBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmlu
aXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCitF
RElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFu
Z2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNl
bGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwg
PiAjZG9jdW1lbnQgdG8gMSBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50
IHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAj
ZG9jdW1lbnQgdG8gMSBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFm
ZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNF
CitFRElUSU5HIERFTEVHQVRFOiBzaG91bGREZWxldGVET01SYW5nZTpyYW5nZSBmcm9tIDAgb2Yg
I3RleHQgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAxIG9mICN0ZXh0ID4gRElW
ID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQKK0VESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRD
aGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgorRURJ
VElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZToobnVsbCkgdG9ET01S
YW5nZTpyYW5nZSBmcm9tIDAgb2YgRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMCBv
ZiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmlu
aXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQorRURJVElORyBERUxFR0FURTogd2Vi
Vmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0
aW9uCitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlOldlYlZpZXdEaWRDaGFuZ2VO
b3RpZmljYXRpb24KK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJWaWV3IGF0
ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRl
ckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgICBSZW5kZXJCb2R5IHtCT0RZ
fSBhdCAoOCw4KSBzaXplIDc4NHg1ODQKKyAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0
ICgwLDApIHNpemUgNzg0eDE4CisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBz
aXplIDcxNHgxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDQzODogIlRoaXMg
dGVzdHMgdGhhdCBkZWxldGluZyBhbGwgdGhlIGNoYXJhY3RlcnMgaW4gYSBjb250ZW50ZWRpdGFi
bGUgUlRMIGRpdiAiCisgICAgICAgICAgdGV4dCBydW4gYXQgKDQzOCwwKSB3aWR0aCAyNzY6ICJ3
aWxsIHNldCB0aGUgY2FyZXQgaW4gdGhlIHJpZ2h0IGVkZ2Ugb2YgdGhlIGRpdiAiCisgICAgICAg
IFJlbmRlckJSIHtCUn0gYXQgKDcxNCwxNCkgc2l6ZSAweDAKKyAgICAgIFJlbmRlckJsb2NrIHtQ
fSBhdCAoMCwzNCkgc2l6ZSA3ODR4MTgKKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgw
LDApIHNpemUgNTIweDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNTIwOiAi
ZGVsZXRlIGFsbCB0aGUgY2hhcmFhY3RlcnMgaW4gdGhlIGRpdiwgdGhlIGNhcmV0IHNob3VsZCBi
ZSBvbiB0aGUgcmlnaHQgZWRnZSBvZiB0aGUgZGl2LiIKKyAgICAgIFJlbmRlckJsb2NrIHtESVZ9
IGF0ICgwLDY4KSBzaXplIDIwMHgzNjgKKyAgICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMjAwLDAp
IHNpemUgMHgzNjgKK2NhcmV0OiBwb3NpdGlvbiAwIG9mIGNoaWxkIDAge0JSfSBvZiBjaGlsZCA1
IHtESVZ9IG9mIGNoaWxkIDEge0JPRFl9IG9mIGNoaWxkIDAge0hUTUx9IG9mIGRvY3VtZW50Cklu
ZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9pbnB1dC9jYXJldC1wcmltYXJ5
LWJpZGktZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy9lZGl0aW5nL2lucHV0L2NhcmV0LXByaW1hcnktYmlkaS1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDQ0MjAxKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5wdXQvY2FyZXQt
cHJpbWFyeS1iaWRpLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNDEsNDcgKzQxLDQ3
IEBACiA0MDogMTE0LDQ3OCwwLDI4CiA0MTogOTcsNDc4LDAsMjgKIDQyOiAxMjYsNDc4LDAsMjgK
LTQzOiA3OTIsNDUwLDAsMjgKLTQ0OiA3NjQsNDUwLDAsMjgKLTQ1OiA3NzksNDUwLDAsMjgKLTQ2
OiA3NTEsNDUwLDAsMjgKLTQ3OiA3MzYsNDUwLDAsMjgKLTQ4OiA3MjIsNDUwLDAsMjgKLTQ5OiA3
MTEsNDUwLDAsMjgKLTUwOiA2ODAsNDUwLDAsMjgKLTUxOiA2OTUsNDUwLDAsMjgKLTUyOiA2NjUs
NDUwLDAsMjgKLTUzOiA2NTMsNDUwLDAsMjgKLTU0OiA2MzYsNDUwLDAsMjgKLTU1OiA2MjgsNDUw
LDAsMjgKLTU2OiA2MDUsNDUwLDAsMjgKLTU3OiA2MTgsNDUwLDAsMjgKLTU4OiA1OTAsNDUwLDAs
MjgKLTU5OiA3OTIsNDIyLDAsMjgKLTYwOiA3NzcsNDIyLDAsMjgKLTYxOiA3NjMsNDIyLDAsMjgK
LTYyOiA3NTIsNDIyLDAsMjgKLTYzOiA3MjEsNDIyLDAsMjgKLTY0OiA3MzYsNDIyLDAsMjgKLTY1
OiA3MDYsNDIyLDAsMjgKLTY2OiA2OTQsNDIyLDAsMjgKLTY3OiA2NzcsNDIyLDAsMjgKLTY4OiA2
NjksNDIyLDAsMjgKLTY5OiA3OTIsMzk0LDAsMjgKLTcwOiA3NzcsMzk0LDAsMjgKLTcxOiA3NjMs
Mzk0LDAsMjgKLTcyOiA3NTIsMzk0LDAsMjgKLTczOiA2NjAsMzk0LDAsMjgKLTc0OiA2NDMsMzk0
LDAsMjgKLTc1OiA2MzUsMzk0LDAsMjgKLTc2OiA3OTIsMzY0LDAsMjgKLTc3OiA3NjQsMzY0LDAs
MjgKLTc4OiA3NzksMzY0LDAsMjgKLTc5OiA3NTEsMzY0LDAsMjgKLTgwOiA3MzYsMzY0LDAsMjgK
LTgxOiA3MjIsMzY0LDAsMjgKLTgyOiA3MTEsMzY0LDAsMjgKLTgzOiA2ODgsMzY0LDAsMjgKLTg0
OiA3MDEsMzY0LDAsMjgKLTg1OiA2NzMsMzY0LDAsMjgKKzQzOiA3OTEsNDUwLDAsMjgKKzQ0OiA3
NjMsNDUwLDAsMjgKKzQ1OiA3NzgsNDUwLDAsMjgKKzQ2OiA3NTAsNDUwLDAsMjgKKzQ3OiA3MzUs
NDUwLDAsMjgKKzQ4OiA3MjEsNDUwLDAsMjgKKzQ5OiA3MTAsNDUwLDAsMjgKKzUwOiA2NzksNDUw
LDAsMjgKKzUxOiA2OTQsNDUwLDAsMjgKKzUyOiA2NjQsNDUwLDAsMjgKKzUzOiA2NTIsNDUwLDAs
MjgKKzU0OiA2MzUsNDUwLDAsMjgKKzU1OiA2MjcsNDUwLDAsMjgKKzU2OiA2MDQsNDUwLDAsMjgK
KzU3OiA2MTcsNDUwLDAsMjgKKzU4OiA1ODksNDUwLDAsMjgKKzU5OiA3OTEsNDIyLDAsMjgKKzYw
OiA3NzYsNDIyLDAsMjgKKzYxOiA3NjIsNDIyLDAsMjgKKzYyOiA3NTEsNDIyLDAsMjgKKzYzOiA3
MjAsNDIyLDAsMjgKKzY0OiA3MzUsNDIyLDAsMjgKKzY1OiA3MDUsNDIyLDAsMjgKKzY2OiA2OTMs
NDIyLDAsMjgKKzY3OiA2NzYsNDIyLDAsMjgKKzY4OiA2NjgsNDIyLDAsMjgKKzY5OiA3OTEsMzk0
LDAsMjgKKzcwOiA3NzYsMzk0LDAsMjgKKzcxOiA3NjIsMzk0LDAsMjgKKzcyOiA3NTEsMzk0LDAs
MjgKKzczOiA2NTksMzk0LDAsMjgKKzc0OiA2NDIsMzk0LDAsMjgKKzc1OiA2MzQsMzk0LDAsMjgK
Kzc2OiA3OTEsMzY0LDAsMjgKKzc3OiA3NjMsMzY0LDAsMjgKKzc4OiA3NzgsMzY0LDAsMjgKKzc5
OiA3NTAsMzY0LDAsMjgKKzgwOiA3MzUsMzY0LDAsMjgKKzgxOiA3MjEsMzY0LDAsMjgKKzgyOiA3
MTAsMzY0LDAsMjgKKzgzOiA2ODcsMzY0LDAsMjgKKzg0OiA3MDAsMzY0LDAsMjgKKzg1OiA2NzIs
MzY0LDAsMjgKIApJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5zZXJ0
aW5nL2NhcmV0LXJpZ2h0LWFsaWduLWFmdGVyLWluc2VydC1leHBlY3RlZC5jaGVja3N1bQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9pbnNlcnRpbmcvY2Fy
ZXQtcmlnaHQtYWxpZ24tYWZ0ZXItaW5zZXJ0LWV4cGVjdGVkLmNoZWNrc3VtCShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5zZXJ0aW5nL2NhcmV0LXJp
Z2h0LWFsaWduLWFmdGVyLWluc2VydC1leHBlY3RlZC5jaGVja3N1bQkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSBAQAorNmY0YWVkNDQ3YWEwNDQ5ZWFhMDg3NTc4YTY5MWJmMWEKXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9p
bnNlcnRpbmcvY2FyZXQtcmlnaHQtYWxpZ24tYWZ0ZXItaW5zZXJ0LWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9pbnNlcnRpbmcvY2Fy
ZXQtcmlnaHQtYWxpZ24tYWZ0ZXItaW5zZXJ0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL2luc2VydGluZy9jYXJldC1yaWdodC1h
bGlnbi1hZnRlci1pbnNlcnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI1
IEBACitFRElUSU5HIERFTEVHQVRFOiBzaG91bGRCZWdpbkVkaXRpbmdJbkRPTVJhbmdlOnJhbmdl
IGZyb20gMCBvZiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAwIG9mIERJViA+IEJP
RFkgPiBIVE1MID4gI2RvY3VtZW50CitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQmVnaW5F
ZGl0aW5nOldlYlZpZXdEaWRCZWdpbkVkaXRpbmdOb3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdB
VEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6KG51bGwpIHRvRE9NUmFuZ2U6cmFuZ2Ug
ZnJvbSAwIG9mIERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDAgb2YgRElWID4gQk9E
WSA+IEhUTUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJl
YW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKK0VESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFu
Z2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgorRURJVElO
RyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9tIDAgb2Yg
RElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMCBvZiBESVYgPiBCT0RZID4gSFRNTCA+
ICNkb2N1bWVudCB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiBESVYgPiBCT0RZID4gSFRNTCA+
ICNkb2N1bWVudCB0byAwIG9mIERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5
Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCitFRElU
SU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOnJhbmdlIGZyb20gMCBv
ZiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAwIG9mIERJViA+IEJPRFkgPiBIVE1M
ID4gI2RvY3VtZW50IHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAxIG9mICN0ZXh0ID4gRElWID4gQk9E
WSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMSBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4g
I2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2Vs
ZWN0aW5nOkZBTFNFCitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9u
OldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6
IHdlYlZpZXdEaWRDaGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlmaWNhdGlvbgorbGF5ZXIgYXQg
KDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCits
YXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDAp
IHNpemUgODAweDYwMAorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDU4
NAorICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykgYXQgKDAsMCkgc2l6ZSA3ODR4MTgKKyAg
ICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgNzQ2eDE4CisgICAgICAgICAg
dGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNDQyOiAiVGhpcyB0ZXN0cyB0aGF0IGFkZGluZyBhIGNo
YXJhY3RlciBpbiBhIGNvbnRlbnRlZGl0YWJsZSByaWdodCBhbGlnbmVkIGRpdiAiCisgICAgICAg
ICAgdGV4dCBydW4gYXQgKDQ0MiwwKSB3aWR0aCAzMDQ6ICJ3aWxsIGRpc3BsYXkgdGhlIGNhcmV0
IGluIHRoZSByaWdodCBlZGdlIG9mIHRoZSBkaXYgIgorICAgICAgICBSZW5kZXJCUiB7QlJ9IGF0
ICg3NDYsMTQpIHNpemUgMHgwCisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMzQpIHNpemUg
Nzg0eDE4CisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDQ3NXgxOAor
ICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDQ3NTogImluc2VydCBjaGFyYWFjdGVy
cyBpbiB0aGUgZGl2LCB0aGUgY2FyZXQgc2hvdWxkIGJlIG9uIHRoZSByaWdodCBlZGdlIG9mIHRo
ZSBkaXYuIgorICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsNjgpIHNpemUgMjAweDM2OAor
ICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDQwLDApIHNpemUgMTYweDM2OAorICAgICAg
ICAgIHRleHQgcnVuIGF0ICg0MCwwKSB3aWR0aCAxNjA6ICJ4IgorY2FyZXQ6IHBvc2l0aW9uIDEg
b2YgY2hpbGQgMCB7I3RleHR9IG9mIGNoaWxkIDYge0RJVn0gb2YgY2hpbGQgMSB7Qk9EWX0gb2Yg
Y2hpbGQgMCB7SFRNTH0gb2YgZG9jdW1lbnQKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy9lZGl0aW5nL3NlbGVjdGlvbi9tb3ZlLWxlZnQtcmlnaHQtZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3NlbGVjdGlvbi9tb3ZlLWxl
ZnQtcmlnaHQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA0NDIwMSkKKysrIExheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9lZGl0aW5nL3NlbGVjdGlvbi9tb3ZlLWxlZnQtcmlnaHQtZXhwZWN0ZWQudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC0yMzQsOSArMjM0LDkgQEAgV0FSTklORzogTW92ZWQgaW4gdGhl
IHdyb25nIGRpcmVjdGlvbiBpbgogV0FSTklORzogTW92ZWQgaW4gdGhlIHdyb25nIGRpcmVjdGlv
biBpbiBzdGVwIDQ6IGZyb20gKDAsIDYwMCkgdG8gKDY1LCA1NjkpLgogVGVzdCAzOSwgUlRMOgog
ICBNb3ZpbmcgbGVmdDogImFiYyJbMCwgMiwgMSwgM10sICJkZWYiWzAsIDIsIDEsIDNdCi1XQVJO
SU5HOiBNb3ZlZCBpbiB0aGUgd3JvbmcgZGlyZWN0aW9uIGluIHN0ZXAgNDogZnJvbSAoNzQwLCA1
NjkpIHRvICgwLCA2MDApLgorV0FSTklORzogTW92ZWQgaW4gdGhlIHdyb25nIGRpcmVjdGlvbiBp
biBzdGVwIDQ6IGZyb20gKDczOSwgNTY5KSB0byAoMCwgNjAwKS4KICAgTW92aW5nIHJpZ2h0OiAg
ImRlZiJbMywgMSwgMiwgMF0sICJhYmMiWzMsIDEsIDIsIDBdCi1XQVJOSU5HOiBNb3ZlZCBpbiB0
aGUgd3JvbmcgZGlyZWN0aW9uIGluIHN0ZXAgNDogZnJvbSAoMCwgNjAwKSB0byAoNzQwLCA1Njkp
LgorV0FSTklORzogTW92ZWQgaW4gdGhlIHdyb25nIGRpcmVjdGlvbiBpbiBzdGVwIDQ6IGZyb20g
KDAsIDYwMCkgdG8gKDczOSwgNTY5KS4KIFRlc3QgNDAsIExUUjoKICAgTW92aW5nIHJpZ2h0OiAi
QUJDIlswLCAyLCAxLCAzXSwgIkRFRiJbMCwgMiwgMSwgM10KIFdBUk5JTkc6IE1vdmVkIGluIHRo
ZSB3cm9uZyBkaXJlY3Rpb24gaW4gc3RlcCA0OiBmcm9tICg2NCwgNTY5KSB0byAoMCwgNjAwKS4K
QEAgLTI0NCw3ICsyNDQsNyBAQCBXQVJOSU5HOiBNb3ZlZCBpbiB0aGUgd3JvbmcgZGlyZWN0aW9u
IGluCiBXQVJOSU5HOiBNb3ZlZCBpbiB0aGUgd3JvbmcgZGlyZWN0aW9uIGluIHN0ZXAgNDogZnJv
bSAoMCwgNjAwKSB0byAoNjQsIDU2OSkuCiBUZXN0IDQwLCBSVEw6CiAgIE1vdmluZyBsZWZ0OiAi
QUJDIlswLCAxLCAyLCAzXSwgIkRFRiJbMCwgMSwgMiwgM10KLVdBUk5JTkc6IE1vdmVkIGluIHRo
ZSB3cm9uZyBkaXJlY3Rpb24gaW4gc3RlcCA0OiBmcm9tICg3NDEsIDU2OSkgdG8gKDAsIDYwMCku
CitXQVJOSU5HOiBNb3ZlZCBpbiB0aGUgd3JvbmcgZGlyZWN0aW9uIGluIHN0ZXAgNDogZnJvbSAo
NzQwLCA1NjkpIHRvICgwLCA2MDApLgogICBNb3ZpbmcgcmlnaHQ6ICAiREVGIlszLCAyLCAxLCAw
XSwgIkFCQyJbMywgMiwgMSwgMF0KLVdBUk5JTkc6IE1vdmVkIGluIHRoZSB3cm9uZyBkaXJlY3Rp
b24gaW4gc3RlcCA0OiBmcm9tICgwLCA2MDApIHRvICg3NDEsIDU2OSkuCitXQVJOSU5HOiBNb3Zl
ZCBpbiB0aGUgd3JvbmcgZGlyZWN0aW9uIGluIHN0ZXAgNDogZnJvbSAoMCwgNjAwKSB0byAoNzQw
LCA1NjkpLgogCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9kZWxldGlu
Zy9jYXJldC1ydGwtYWZ0ZXItZGVsZXRlLWV4cGVjdGVkLnBuZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgpJbmRleDog
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5zZXJ0aW5nL2NhcmV0LXJpZ2h0LWFs
aWduLWFmdGVyLWluc2VydC1leHBlY3RlZC5wbmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30887</attachid>
            <date>2009-06-02 18:00:29 -0700</date>
            <delta_ts>2010-04-15 18:17:55 -0700</delta_ts>
            <desc>patch w/ layout test</desc>
            <filename>caret.v1</filename>
            <type>text/plain</type>
            <size>10708</size>
            <attacher name="Xiaomei Ji">xji</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NDM3NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjIgQEAKKzIwMDktMDYtMDIgIFhpYW9tZWkgSmkgIDx4amlAY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeCBj
YXJldCBkb2VzIG5vdCBwYWludCBhZnRlciB0eXBlIGluIGNoYXJhY3RlcnMgaW4gcmlnaHQgYWxp
Z25lZCBkaXYgCisgICAgICAgIG9yIGFmdGVyIGRlbGV0ZSBhbGwgY2hhcmFjdGVycyBpbiBSVEwg
ZGl2IG9yIDBweCByaWdodCBwYWRkaW5nIFJUTCAKKyAgICAgICAgdGV4dGFyZWEuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTMxOQorCisgICAgICAg
IFRlc3RzOiBlZGl0aW5nL2luc2VydGluZy9jYXJldC1yaWdodC1hbGlnbi1hZnRlci1pbnNlcnQu
aHRtbAorICAgICAgICAgICAgICAgZmFzdC9mb3Jtcy9jYXJldC1ydGwtZGl2Lmh0bWwKKworICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRleHQ6OmxvY2FsQ2FyZXRSZWN0KTogSW5zdGVhZCBvZiBkaXN0cmlidXRpbmcgCisgICAgICAg
IGNhcmV0V2lkdGggdG8gZWl0aGVyIHNpZGUgb2YgdGhlIG9mZnNldCwgZGlzdHJpYnV0ZSB0aGUg
Y2FyZXQgd2lkdGggdG8KKyAgICAgICAgdGhlIGxlZnQgc2lkZSBvZiB0aGUgb2Zmc2V0IGlmIHRo
ZSBhbGlnbm1lbnQgaXMgUklHSFQgYW5kIGRpc3RyaWJ1dGUgaXQKKyAgICAgICAgdG8gdGhlIHJp
Z2h0IHNpZGUgb3RoZXJ3aXNlLgorCisKIDIwMDktMDYtMDIgIEVyaWMgU2VpZGVsICA8ZXJpY0B3
ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE1hY2llaiBTdGFjaG93aWFrLgpJbmRl
eDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAJKHJldmlzaW9uIDQ0MjAxKQorKysgV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5Miw4ICszOTIsMjcg
QEAgSW50UmVjdCBSZW5kZXJUZXh0Ojpsb2NhbENhcmV0UmVjdChJbmxpbgogCiAgICAgaW50IGxl
ZnQgPSBib3gtPnBvc2l0aW9uRm9yT2Zmc2V0KGNhcmV0T2Zmc2V0KTsKIAotICAgIC8vIERpc3Ry
aWJ1dGUgdGhlIGNhcmV0J3Mgd2lkdGggdG8gZWl0aGVyIHNpZGUgb2YgdGhlIG9mZnNldC4KLSAg
ICBpbnQgY2FyZXRXaWR0aExlZnRPZk9mZnNldCA9IGNhcmV0V2lkdGggLyAyOworICAgIGludCBj
YXJldFdpZHRoTGVmdE9mT2Zmc2V0ID0gMDsKKyAgICBSZW5kZXJTdHlsZSogY3VycmVudFN0eWxl
ID0gZmlyc3RMaW5lU3R5bGUoKTsKKyAgICBFVGV4dEFsaWduIGFsaWdubWVudCA9IGN1cnJlbnRT
dHlsZS0+dGV4dEFsaWduKCk7CisgICAgYm9vbCBhbGlnblJpZ2h0ID0gZmFsc2U7CisgICAgc3dp
dGNoIChhbGlnbm1lbnQpIHsKKyAgICAgICAgY2FzZSBUQUFVVE86CisgICAgICAgIGNhc2UgSlVT
VElGWToKKyAgICAgICAgICAgIGlmIChjdXJyZW50U3R5bGUtPmRpcmVjdGlvbigpID09IFJUTCkK
KyAgICAgICAgICAgICAgICBhbGlnblJpZ2h0ID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIFJJR0hUOgorICAgICAgICBjYXNlIFdFQktJVF9SSUdIVDoKKyAgICAgICAg
ICAgIGFsaWduUmlnaHQgPSB0cnVlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICBicmVhazsKKyAgICB9CisgICAgLy8gRGlzdHJpYnV0ZSB0aGUgY2Fy
ZXRXaWR0aCB0byB0aGUgbGVmdCBzaWRlIG9mIHRoZSBvZmZzZXQgaWYgdGhlIGFsaWdubWVudAor
ICAgIC8vIGlzIFJJR0hULCBvdGhlcndpc2UsIGRpc3RyaWJ1dGUgaXQgdG8gdGhlIHJpZ2h0IHNp
ZGUuCisgICAgaWYgKGFsaWduUmlnaHQpCisgICAgICAgIGNhcmV0V2lkdGhMZWZ0T2ZPZmZzZXQg
PSBjYXJldFdpZHRoOwogICAgIGxlZnQgLT0gY2FyZXRXaWR0aExlZnRPZk9mZnNldDsKICAgICBp
bnQgY2FyZXRXaWR0aFJpZ2h0T2ZPZmZzZXQgPSBjYXJldFdpZHRoIC0gY2FyZXRXaWR0aExlZnRP
Zk9mZnNldDsKIApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNDQzNzUpCisrKyBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOSBAQAorMjAwOS0wNi0wMiAgWGlhb21l
aSBKaSAgPHNldCBFTUFJTF9BRERSRVNTIGVudmlyb25tZW50IHZhcmlhYmxlPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeCBjYXJldCBkb2VzIG5v
dCBwYWludCBhZnRlciB0eXBlIGluIGNoYXJhY3RlcnMgaW4gcmlnaHQgYWxpZ25lZCBkaXYgCisg
ICAgICAgIG9yIGFmdGVyIGRlbGV0ZSBhbGwgY2hhcmFjdGVycyBpbiBSVEwgZGl2IG9yIDBweCBy
aWdodCBwYWRkaW5nIFJUTCAKKyAgICAgICAgdGV4dGFyZWEuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTMxOQorCisgICAgICAgICogZWRpdGluZy9p
bnNlcnRpbmcvY2FyZXQtcmlnaHQtYWxpZ24tYWZ0ZXItaW5zZXJ0LWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZWRpdGluZy9pbnNlcnRpbmcvY2FyZXQtcmlnaHQtYWxpZ24tYWZ0ZXIt
aW5zZXJ0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvY2FyZXQtcnRsLWRpdi1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvY2FyZXQtcnRsLWRpdi5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZWRpdGluZy9pbnB1dC9jYXJldC1w
cmltYXJ5LWJpZGktZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL21hYy9lZGl0aW5n
L3NlbGVjdGlvbi9tb3ZlLWxlZnQtcmlnaHQtZXhwZWN0ZWQudHh0OgorCiAyMDA5LTA2LTAyICBF
cmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBNYWNp
ZWogU3RhY2hvd2lhay4KSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvaW5zZXJ0aW5nL2NhcmV0
LXJpZ2h0LWFsaWduLWFmdGVyLWluc2VydC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZWRpdGluZy9pbnNlcnRpbmcvY2FyZXQtcmlnaHQtYWxpZ24tYWZ0ZXItaW5zZXJ0
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvaW5zZXJ0
aW5nL2NhcmV0LXJpZ2h0LWFsaWduLWFmdGVyLWluc2VydC1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNCBAQAorVGhpcyB0ZXN0cyB0aGF0IGFkZGluZyBhIGNoYXJhY3RlciBp
biBhIGNvbnRlbnRlZGl0YWJsZSByaWdodCBhbGlnbmVkIGRpdiB3aWxsIGRpc3BsYXkgdGhlIGNh
cmV0IGluIHRoZSByaWdodCBlZGdlIG9mIHRoZSBkaXYgCit4CisxOTkKK1N1Y2Nlc3MKSW5kZXg6
IExheW91dFRlc3RzL2VkaXRpbmcvaW5zZXJ0aW5nL2NhcmV0LXJpZ2h0LWFsaWduLWFmdGVyLWlu
c2VydC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvaW5zZXJ0aW5nL2Nh
cmV0LXJpZ2h0LWFsaWduLWFmdGVyLWluc2VydC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvZWRpdGluZy9pbnNlcnRpbmcvY2FyZXQtcmlnaHQtYWxpZ24tYWZ0ZXItaW5zZXJ0Lmh0
bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDYgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0
IHNyYz0uLi9lZGl0aW5nLmpzIGxhbmd1YWdlPSJKYXZhU2NyaXB0IiB0eXBlPSJ0ZXh0L0phdmFT
Y3JpcHQiID48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIGxvZyhzdHIpIHsKKyAgICB2
YXIgbGkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaSIpOworICAgIGxpLmFwcGVuZENoaWxk
KGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHN0cikpOworICAgIHZhciBjb25zb2xlID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKTsKKyAgICBjb25zb2xlLmFwcGVuZENoaWxkKGxp
KTsKK30KKworZnVuY3Rpb24gYXNzZXJ0KGJvb2wpIHsKKyAgICBpZiAoIWJvb2wpCisgICAgICAg
IGxvZygiRmFpbHVyZSIpOworICAgIGVsc2UKKyAgICAgICAgbG9nKCJTdWNjZXNzIik7Cit9CisK
K2Z1bmN0aW9uIHJ1blRlc3QoKQoreworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICB2YXIg
ZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0LXJpZ2h0LWFsaWduIik7CisgICAgZS5m
b2N1cygpOworICAgIHNlbGVjdEFsbENvbW1hbmQoKTsKKyAgICB0eXBlQ2hhcmFjdGVyQ29tbWFu
ZCgpOworICAgIGlmICh3aW5kb3cudGV4dElucHV0Q29udHJvbGxlcikgeworICAgICAgICB2YXIg
Y2FyZXRSZWN0ID0gdGV4dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5n
ZSgwLCAwKTsKKyAgICAgICAgbG9nKGNhcmV0UmVjdFswXSk7CisgICAgICAgIGFzc2VydChjYXJl
dFJlY3RbMF0gPT0gMTk5KTsKKyAgICB9Cit9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
CitUaGlzIHRlc3RzIHRoYXQgYWRkaW5nIGEgY2hhcmFjdGVyIGluIGEgY29udGVudGVkaXRhYmxl
IHJpZ2h0IGFsaWduZWQgZGl2IAord2lsbCBkaXNwbGF5IHRoZSBjYXJldCBpbiB0aGUgcmlnaHQg
ZWRnZSBvZiB0aGUgZGl2Cis8YnI+Cis8ZGl2IENPTlRFTlRFRElUQUJMRSBpZD0idGVzdC1yaWdo
dC1hbGlnbiIgc3R5bGU9InRleHQtYWxpZ246IHJpZ2h0OyB3aWR0aDoyMDBweDsiOyBvdXRsaW5l
OiBzb2xpZCB0aGluOyBvdmVyZmxvdzogaGlkZGVuPjwvZGl2PiAKKzx1bCBpZD0iY29uc29sZSI+
PC91bD4KKzwvYm9keT4KKzxzY3JpcHQ+IHJ1blRlc3QoKTsgPC9zY3JpcHQ+Cis8L2h0bWw+CisK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvY2FyZXQtcnRsLWRpdi1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9jYXJldC1ydGwtZGl2LWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvY2FyZXQtcnRs
LWRpdi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNCBAQAorVGhpcyB0ZXN0
cyB0aGF0IHRoZSByaWdodC1tb3N0IHBvc2l0aW9uIG9mIHRoZSBjYXJldCBpbiBhIGNvbnRlbnRl
ZGl0YWJsZSBSVEwgZGl2IGlzIGF0IHRoZSByaWdodCBlZGdlIG9mIHRoZSBkaXYsIG5vdCBvdmVy
ZmxvdyBmcm9tIHRoZSBkaXYuIAorYQorMjAwCitTdWNjZXNzCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL2NhcmV0LXJ0bC1kaXYuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL2NhcmV0LXJ0bC1kaXYuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvY2FyZXQtcnRsLWRpdi5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQz
IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KKworZnVuY3Rpb24gbG9nKHN0cikgeworICAg
IHZhciBsaSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpIik7CisgICAgbGkuYXBwZW5kQ2hp
bGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoc3RyKSk7CisgICAgdmFyIGNvbnNvbGUgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpOworICAgIGNvbnNvbGUuYXBwZW5kQ2hpbGQo
bGkpOworfQorCitmdW5jdGlvbiBhc3NlcnQoYm9vbCkgeworICAgIGlmICghYm9vbCkKKyAgICAg
ICAgbG9nKCJGYWlsdXJlIik7CisgICAgZWxzZQorICAgICAgICBsb2coIlN1Y2Nlc3MiKTsKK30K
KworZnVuY3Rpb24gcnVuVGVzdCgpCit7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIHZh
ciBlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3QiKTsKKyAgICBlLmZvY3VzKCk7Cisg
ICAgaWYgKHdpbmRvdy50ZXh0SW5wdXRDb250cm9sbGVyKSB7CisgICAgICAgIHZhciBjYXJldFJl
Y3QgPSB0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDEsIDAp
OworICAgICAgICBsb2coY2FyZXRSZWN0WzBdKTsKKyAgICAgICAgYXNzZXJ0KGNhcmV0UmVjdFsw
XSA9PSAyMDApOworICAgIH0gIAorfQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorVGhp
cyB0ZXN0cyB0aGF0IHRoZSByaWdodC1tb3N0IHBvc2l0aW9uIG9mIHRoZSBjYXJldCBpbiBhIGNv
bnRlbnRlZGl0YWJsZSBSVEwgCitkaXYgaXMgYXQgdGhlIHJpZ2h0IGVkZ2Ugb2YgdGhlIGRpdiwg
bm90IG92ZXJmbG93IGZyb20gdGhlIGRpdi4KKzxicj4KKzxkaXYgQ09OVEVOVEVESVRBQkxFIGlk
PSJ0ZXN0IiBzdHlsZT0iZGlyZWN0aW9uOiBydGw7IHdpZHRoOjIwMHB4OyIgb3V0bGluZTogc29s
aWQgdGhpbjsgb3ZlcmZsb3c6IGhpZGRlbj5hPC9kaXY+IAorPHVsIGlkPSJjb25zb2xlIj48L3Vs
PgorPC9ib2R5PgorPHNjcmlwdD4gcnVuVGVzdCgpOyA8L3NjcmlwdD4KKzwvaHRtbD4KKwpJbmRl
eDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5wdXQvY2FyZXQtcHJpbWFyeS1i
aWRpLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
ZWRpdGluZy9pbnB1dC9jYXJldC1wcmltYXJ5LWJpZGktZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA0
NDIwMSkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL2lucHV0L2NhcmV0LXBy
aW1hcnktYmlkaS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQxLDQ3ICs0MSw0NyBA
QAogNDA6IDExNCw0NzgsMCwyOAogNDE6IDk3LDQ3OCwwLDI4CiA0MjogMTI2LDQ3OCwwLDI4Ci00
MzogNzkyLDQ1MCwwLDI4Ci00NDogNzY0LDQ1MCwwLDI4Ci00NTogNzc5LDQ1MCwwLDI4Ci00Njog
NzUxLDQ1MCwwLDI4Ci00NzogNzM2LDQ1MCwwLDI4Ci00ODogNzIyLDQ1MCwwLDI4Ci00OTogNzEx
LDQ1MCwwLDI4Ci01MDogNjgwLDQ1MCwwLDI4Ci01MTogNjk1LDQ1MCwwLDI4Ci01MjogNjY1LDQ1
MCwwLDI4Ci01MzogNjUzLDQ1MCwwLDI4Ci01NDogNjM2LDQ1MCwwLDI4Ci01NTogNjI4LDQ1MCww
LDI4Ci01NjogNjA1LDQ1MCwwLDI4Ci01NzogNjE4LDQ1MCwwLDI4Ci01ODogNTkwLDQ1MCwwLDI4
Ci01OTogNzkyLDQyMiwwLDI4Ci02MDogNzc3LDQyMiwwLDI4Ci02MTogNzYzLDQyMiwwLDI4Ci02
MjogNzUyLDQyMiwwLDI4Ci02MzogNzIxLDQyMiwwLDI4Ci02NDogNzM2LDQyMiwwLDI4Ci02NTog
NzA2LDQyMiwwLDI4Ci02NjogNjk0LDQyMiwwLDI4Ci02NzogNjc3LDQyMiwwLDI4Ci02ODogNjY5
LDQyMiwwLDI4Ci02OTogNzkyLDM5NCwwLDI4Ci03MDogNzc3LDM5NCwwLDI4Ci03MTogNzYzLDM5
NCwwLDI4Ci03MjogNzUyLDM5NCwwLDI4Ci03MzogNjYwLDM5NCwwLDI4Ci03NDogNjQzLDM5NCww
LDI4Ci03NTogNjM1LDM5NCwwLDI4Ci03NjogNzkyLDM2NCwwLDI4Ci03NzogNzY0LDM2NCwwLDI4
Ci03ODogNzc5LDM2NCwwLDI4Ci03OTogNzUxLDM2NCwwLDI4Ci04MDogNzM2LDM2NCwwLDI4Ci04
MTogNzIyLDM2NCwwLDI4Ci04MjogNzExLDM2NCwwLDI4Ci04MzogNjg4LDM2NCwwLDI4Ci04NDog
NzAxLDM2NCwwLDI4Ci04NTogNjczLDM2NCwwLDI4Cis0MzogNzkxLDQ1MCwwLDI4Cis0NDogNzYz
LDQ1MCwwLDI4Cis0NTogNzc4LDQ1MCwwLDI4Cis0NjogNzUwLDQ1MCwwLDI4Cis0NzogNzM1LDQ1
MCwwLDI4Cis0ODogNzIxLDQ1MCwwLDI4Cis0OTogNzEwLDQ1MCwwLDI4Cis1MDogNjc5LDQ1MCww
LDI4Cis1MTogNjk0LDQ1MCwwLDI4Cis1MjogNjY0LDQ1MCwwLDI4Cis1MzogNjUyLDQ1MCwwLDI4
Cis1NDogNjM1LDQ1MCwwLDI4Cis1NTogNjI3LDQ1MCwwLDI4Cis1NjogNjA0LDQ1MCwwLDI4Cis1
NzogNjE3LDQ1MCwwLDI4Cis1ODogNTg5LDQ1MCwwLDI4Cis1OTogNzkxLDQyMiwwLDI4Cis2MDog
Nzc2LDQyMiwwLDI4Cis2MTogNzYyLDQyMiwwLDI4Cis2MjogNzUxLDQyMiwwLDI4Cis2MzogNzIw
LDQyMiwwLDI4Cis2NDogNzM1LDQyMiwwLDI4Cis2NTogNzA1LDQyMiwwLDI4Cis2NjogNjkzLDQy
MiwwLDI4Cis2NzogNjc2LDQyMiwwLDI4Cis2ODogNjY4LDQyMiwwLDI4Cis2OTogNzkxLDM5NCww
LDI4Cis3MDogNzc2LDM5NCwwLDI4Cis3MTogNzYyLDM5NCwwLDI4Cis3MjogNzUxLDM5NCwwLDI4
Cis3MzogNjU5LDM5NCwwLDI4Cis3NDogNjQyLDM5NCwwLDI4Cis3NTogNjM0LDM5NCwwLDI4Cis3
NjogNzkxLDM2NCwwLDI4Cis3NzogNzYzLDM2NCwwLDI4Cis3ODogNzc4LDM2NCwwLDI4Cis3OTog
NzUwLDM2NCwwLDI4Cis4MDogNzM1LDM2NCwwLDI4Cis4MTogNzIxLDM2NCwwLDI4Cis4MjogNzEw
LDM2NCwwLDI4Cis4MzogNjg3LDM2NCwwLDI4Cis4NDogNzAwLDM2NCwwLDI4Cis4NTogNjcyLDM2
NCwwLDI4CiAKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3NlbGVjdGlv
bi9tb3ZlLWxlZnQtcmlnaHQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9lZGl0aW5nL3NlbGVjdGlvbi9tb3ZlLWxlZnQtcmlnaHQtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiA0NDIwMSkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5n
L3NlbGVjdGlvbi9tb3ZlLWxlZnQtcmlnaHQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC0yMzQsOSArMjM0LDkgQEAgV0FSTklORzogTW92ZWQgaW4gdGhlIHdyb25nIGRpcmVjdGlvbiBp
bgogV0FSTklORzogTW92ZWQgaW4gdGhlIHdyb25nIGRpcmVjdGlvbiBpbiBzdGVwIDQ6IGZyb20g
KDAsIDYwMCkgdG8gKDY1LCA1NjkpLgogVGVzdCAzOSwgUlRMOgogICBNb3ZpbmcgbGVmdDogImFi
YyJbMCwgMiwgMSwgM10sICJkZWYiWzAsIDIsIDEsIDNdCi1XQVJOSU5HOiBNb3ZlZCBpbiB0aGUg
d3JvbmcgZGlyZWN0aW9uIGluIHN0ZXAgNDogZnJvbSAoNzQwLCA1NjkpIHRvICgwLCA2MDApLgor
V0FSTklORzogTW92ZWQgaW4gdGhlIHdyb25nIGRpcmVjdGlvbiBpbiBzdGVwIDQ6IGZyb20gKDcz
OSwgNTY5KSB0byAoMCwgNjAwKS4KICAgTW92aW5nIHJpZ2h0OiAgImRlZiJbMywgMSwgMiwgMF0s
ICJhYmMiWzMsIDEsIDIsIDBdCi1XQVJOSU5HOiBNb3ZlZCBpbiB0aGUgd3JvbmcgZGlyZWN0aW9u
IGluIHN0ZXAgNDogZnJvbSAoMCwgNjAwKSB0byAoNzQwLCA1NjkpLgorV0FSTklORzogTW92ZWQg
aW4gdGhlIHdyb25nIGRpcmVjdGlvbiBpbiBzdGVwIDQ6IGZyb20gKDAsIDYwMCkgdG8gKDczOSwg
NTY5KS4KIFRlc3QgNDAsIExUUjoKICAgTW92aW5nIHJpZ2h0OiAiQUJDIlswLCAyLCAxLCAzXSwg
IkRFRiJbMCwgMiwgMSwgM10KIFdBUk5JTkc6IE1vdmVkIGluIHRoZSB3cm9uZyBkaXJlY3Rpb24g
aW4gc3RlcCA0OiBmcm9tICg2NCwgNTY5KSB0byAoMCwgNjAwKS4KQEAgLTI0NCw3ICsyNDQsNyBA
QCBXQVJOSU5HOiBNb3ZlZCBpbiB0aGUgd3JvbmcgZGlyZWN0aW9uIGluCiBXQVJOSU5HOiBNb3Zl
ZCBpbiB0aGUgd3JvbmcgZGlyZWN0aW9uIGluIHN0ZXAgNDogZnJvbSAoMCwgNjAwKSB0byAoNjQs
IDU2OSkuCiBUZXN0IDQwLCBSVEw6CiAgIE1vdmluZyBsZWZ0OiAiQUJDIlswLCAxLCAyLCAzXSwg
IkRFRiJbMCwgMSwgMiwgM10KLVdBUk5JTkc6IE1vdmVkIGluIHRoZSB3cm9uZyBkaXJlY3Rpb24g
aW4gc3RlcCA0OiBmcm9tICg3NDEsIDU2OSkgdG8gKDAsIDYwMCkuCitXQVJOSU5HOiBNb3ZlZCBp
biB0aGUgd3JvbmcgZGlyZWN0aW9uIGluIHN0ZXAgNDogZnJvbSAoNzQwLCA1NjkpIHRvICgwLCA2
MDApLgogICBNb3ZpbmcgcmlnaHQ6ICAiREVGIlszLCAyLCAxLCAwXSwgIkFCQyJbMywgMiwgMSwg
MF0KLVdBUk5JTkc6IE1vdmVkIGluIHRoZSB3cm9uZyBkaXJlY3Rpb24gaW4gc3RlcCA0OiBmcm9t
ICgwLCA2MDApIHRvICg3NDEsIDU2OSkuCitXQVJOSU5HOiBNb3ZlZCBpbiB0aGUgd3JvbmcgZGly
ZWN0aW9uIGluIHN0ZXAgNDogZnJvbSAoMCwgNjAwKSB0byAoNzQwLCA1NjkpLgogCg==
</data>
<flag name="review"
          id="15690"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53499</attachid>
            <date>2010-04-15 18:17:55 -0700</date>
            <delta_ts>2010-04-19 09:47:31 -0700</delta_ts>
            <desc>path /w layout test</desc>
            <filename>25319.v1</filename>
            <type>text/plain</type>
            <size>8610</size>
            <attacher name="Xiaomei Ji">xji</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NzY5NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTcgQEAKKzIwMTAtMDQtMTUgIFhpYW9tZWkgSmkgIDx4amlAY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeCBp
c3N1ZSAiY2FyZXQgZG9lcyBub3QgcGFpbnQgYWZ0ZXIgdHlwZSBpbiBjaGFyYWN0ZXJzIGluIHJp
Z2h0CisgICAgICAgIGFsaWduZWQgZGl2IG9yIGFmdGVyIGRlbGV0ZSBhbGwgY2hhcmFjdGVycyBp
biBSVEwgZGl2IG9yIAorICAgICAgICAwcHggcmlnaHQgcGFkZGluZyBSVEwgdGV4dGFyZWEiCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTMxOQorCisg
ICAgICAgIFRlc3Q6IGVkaXRpbmcvaW5zZXJ0aW5nL2NhcmV0LXBvc2l0aW9uLmh0bWwKKworICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRleHQ6OmxvY2FsQ2FyZXRSZWN0KToKKwogMjAxMC0wNC0xNSAgSmlhbiBMaSAgPGppYW5saUBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRG1pdHJ5IFRpdG92LgpJbmRleDog
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAJKHJldmlzaW9uIDU3NjU1KQorKysgV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0MywyMyArNDQzLDIyIEBA
IEludFJlY3QgUmVuZGVyVGV4dDo6bG9jYWxDYXJldFJlY3QoSW5saW4KICAgICAgICAgKmV4dHJh
V2lkdGhUb0VuZE9mTGluZSA9IChib3gtPnJvb3QoKS0+d2lkdGgoKSArIHJvb3RMZWZ0KSAtIChs
ZWZ0ICsgMSk7CiAKICAgICBSZW5kZXJCbG9jayogY2IgPSBjb250YWluaW5nQmxvY2soKTsKKyAg
ICBSZW5kZXJTdHlsZSogY2JTdHlsZSA9IGNiLT5zdHlsZSgpOworICAgIGludCBsZWZ0RWRnZTsK
KyAgICBpbnQgcmlnaHRFZGdlOwogICAgIGlmIChzdHlsZSgpLT5hdXRvV3JhcCgpKSB7Ci0gICAg
ICAgIGludCBhdmFpbGFibGVXaWR0aCA9IGNiLT5saW5lV2lkdGgodG9wLCBmYWxzZSk7Ci0gICAg
ICAgIGlmIChib3gtPmRpcmVjdGlvbigpID09IExUUikKLSAgICAgICAgICAgIGxlZnQgPSBtaW4o
bGVmdCwgcm9vdExlZnQgKyBhdmFpbGFibGVXaWR0aCAtIGNhcmV0V2lkdGhSaWdodE9mT2Zmc2V0
KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbGVmdCA9IG1heChsZWZ0LCBjYi0+eCgpKTsK
KyAgICAgICAgbGVmdEVkZ2UgPSBjYi0+eCgpOworICAgICAgICByaWdodEVkZ2UgPSBjYi0+eCgp
ICsgY2ItPndpZHRoKCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8g
d3JhcHBpbmcsIHRoZSBjYXJldCBjYW4gbGVhdmUgaXRzIGNvbnRhaW5pbmcgYmxvY2ssIGJ1dCBu
b3QgaXRzIHJvb3QgbGluZSBib3guCi0gICAgICAgIGlmIChjYi0+c3R5bGUoKS0+ZGlyZWN0aW9u
KCkgPT0gTFRSKSB7Ci0gICAgICAgICAgICBpbnQgcmlnaHRFZGdlID0gbWF4KGNiLT53aWR0aCgp
LCByb290UmlnaHQpOwotICAgICAgICAgICAgbGVmdCA9IG1pbihsZWZ0LCByaWdodEVkZ2UgLSBj
YXJldFdpZHRoUmlnaHRPZk9mZnNldCk7Ci0gICAgICAgICAgICBsZWZ0ID0gbWF4KGxlZnQsIHJv
b3RMZWZ0KTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGludCBsZWZ0RWRnZSA9IG1p
bihjYi0+eCgpLCByb290TGVmdCk7Ci0gICAgICAgICAgICBsZWZ0ID0gbWF4KGxlZnQsIGxlZnRF
ZGdlKTsKLSAgICAgICAgICAgIGxlZnQgPSBtaW4obGVmdCwgcm9vdFJpZ2h0IC0gY2FyZXRXaWR0
aCk7Ci0gICAgICAgIH0KKyAgICAgICAgbGVmdEVkZ2UgPSBtaW4oY2ItPngoKSwgcm9vdExlZnQp
OworICAgICAgICByaWdodEVkZ2UgPSBtYXgoY2ItPngoKSArIGNiLT53aWR0aCgpLCByb290Umln
aHQpOworICAgIH0KKyAgICBpZiAoY2JTdHlsZS0+ZGlyZWN0aW9uKCkgPT0gUlRMIHx8IGNiU3R5
bGUtPnRleHRBbGlnbigpID09IFJJR0hUIHx8IGNiU3R5bGUtPnRleHRBbGlnbigpID09IFdFQktJ
VF9SSUdIVCkgeworICAgICAgICBsZWZ0ID0gbWF4KGxlZnQsIGxlZnRFZGdlKTsKKyAgICAgICAg
bGVmdCA9IG1pbihsZWZ0LCByb290UmlnaHQgLSBjYXJldFdpZHRoKTsKKyAgICB9IGVsc2Ugewor
ICAgICAgICBsZWZ0ID0gbWluKGxlZnQsIHJpZ2h0RWRnZSAtIGNhcmV0V2lkdGhSaWdodE9mT2Zm
c2V0KTsKKyAgICAgICAgbGVmdCA9IG1heChsZWZ0LCByb290TGVmdCk7CiAgICAgfQogCiAgICAg
cmV0dXJuIEludFJlY3QobGVmdCwgdG9wLCBjYXJldFdpZHRoLCBoZWlnaHQpOwpJbmRleDogTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwko
cmV2aXNpb24gNTc2OTYpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxNiBAQAorMjAxMC0wNC0xNSAgWGlhb21laSBKaSAgPHhqaUBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4
IGlzc3VlICJjYXJldCBkb2VzIG5vdCBwYWludCBhZnRlciB0eXBlIGluIGNoYXJhY3RlcnMgaW4g
cmlnaHQKKyAgICAgICAgYWxpZ25lZCBkaXYgb3IgYWZ0ZXIgZGVsZXRlIGFsbCBjaGFyYWN0ZXJz
IGluIFJUTCBkaXYgb3IgCisgICAgICAgIDBweCByaWdodCBwYWRkaW5nIFJUTCB0ZXh0YXJlYSIK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1MzE5CisK
KyAgICAgICAgKiBlZGl0aW5nL2luc2VydGluZy9jYXJldC1wb3NpdGlvbi1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvaW5zZXJ0aW5nL2NhcmV0LXBvc2l0aW9uLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9lZGl0aW5nL2lucHV0L2NhcmV0LXByaW1h
cnktYmlkaS1leHBlY3RlZC50eHQ6CisKIDIwMTAtMDQtMTUgIEFsYmVydCBKLiBXb25nICA8YWp3
b25nQGNocm9taXVtLm9yZz4KIAogICAgICAgICBOb3QgcmV2aWV3ZWQuICBTaGVyaWZmaW5nLgpJ
bmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9pbnNlcnRpbmcvY2FyZXQtcG9zaXRpb24tZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvaW5zZXJ0aW5nL2NhcmV0
LXBvc2l0aW9uLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2VkaXRp
bmcvaW5zZXJ0aW5nL2NhcmV0LXBvc2l0aW9uLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwyNiBAQAorCitSaWdodCBhbGlnbmVkIGRpdi4gCit4CisKK1JUTCBkaXYuIAorYQor
CiswcHggcmlnaHQgcGFkZGluZyBSVEwgdGV4dGFyZWEuIAorIAorTFRSIGRpdiBhbmQgdGV4dGFy
ZWEuIAorYQorCisgCitOTyBXUkFQUElORyAKK05vIHdyYXBwaW5nIHJpZ2h0IGFsaWduZWQgZGl2
LiAKKworTm8gd3JhcHBpbmcgUlRMIGRpdi4gCithCisKK05vIHdyYXBwaW5nIDBweCByaWdodCBw
YWRkaW5nIFJUTCB0ZXh0YXJlYS4gCisgCitObyB3cmFwcGluZyBMVFIgZGl2IGFuZCB0ZXh0YXJl
YS4gCithCisKKyAKKwpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9pbnNlcnRpbmcvY2FyZXQt
cG9zaXRpb24uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL2luc2VydGlu
Zy9jYXJldC1wb3NpdGlvbi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZWRpdGlu
Zy9pbnNlcnRpbmcvY2FyZXQtcG9zaXRpb24uaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwx
MDEgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0uLi9lZGl0aW5nLmpzIGxhbmd1YWdl
PSJKYXZhU2NyaXB0IiB0eXBlPSJ0ZXh0L0phdmFTY3JpcHQiID48L3NjcmlwdD4KKzxzY3JpcHQ+
CisKK2Z1bmN0aW9uIGxvZyhzdHIpIHsKKyAgICB2YXIgbGkgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJsaSIpOworICAgIGxpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHN0
cikpOworICAgIHZhciBjb25zb2xlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUi
KTsKKyAgICBjb25zb2xlLmFwcGVuZENoaWxkKGxpKTsKK30KKworZnVuY3Rpb24gYXNzZXJ0RXF1
YWwodGVzdF9uYW1lLCBhY3R1YWwsIGV4cGVjdGVkKQoreworICAgIGlmIChhY3R1YWwgIT0gZXhw
ZWN0ZWQpIHsKKyAgICAgICAgbG9nKCI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Iik7CisgICAgICAgIGxvZygiRkFJTEVEOiAiICsgdGVzdF9uYW1lKTsKKyAgICAgICAgbG9nKCJh
Y3R1YWw6ICIgKyBhY3R1YWwpOworICAgICAgICBsb2coImV4cGVjdGVkOiAiICsgZXhwZWN0ZWQp
OworICAgIH0KK30KK2Z1bmN0aW9uIHRlc3RDYXJldFBvc2l0aW9uKGVsZW1lbnRJZCwgY2FyZXRQ
b3NpdGlvbikKK3sKKyAgICBlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWxlbWVudElkLCBj
YXJldFBvc2l0aW9uKTsKKyAgICBlLmZvY3VzKCk7CisgICAgaWYgKHdpbmRvdy50ZXh0SW5wdXRD
b250cm9sbGVyKSB7CisgICAgICAgIHZhciBjYXJldFJlY3QgPSB0ZXh0SW5wdXRDb250cm9sbGVy
LmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDAsIDApOworICAgICAgICBhc3NlcnRFcXVhbChl
bGVtZW50SWQsIGNhcmV0UmVjdFswXSwgY2FyZXRQb3NpdGlvbik7CisgICAgfSAgCit9CisKK2Z1
bmN0aW9uIHJ1blRlc3QoKQoreworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICB2YXIgZSA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyaWdodC1hbGlnbi1kaXYiKTsKKyAgICBlLmZvY3Vz
KCk7CisgICAgc2VsZWN0QWxsQ29tbWFuZCgpOworICAgIHR5cGVDaGFyYWN0ZXJDb21tYW5kKCk7
CisgICAgaWYgKHdpbmRvdy50ZXh0SW5wdXRDb250cm9sbGVyKSB7CisgICAgICAgIHZhciBjYXJl
dFJlY3QgPSB0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDEs
IDApOworICAgICAgICBhc3NlcnRFcXVhbCgicmlnaHQtYWxpZ24tZGl2IiwgY2FyZXRSZWN0WzBd
LCAyMDgpOworICAgIH0KKworICAgIHRlc3RDYXJldFBvc2l0aW9uKCJydGwtZGl2IiwgMjA4KTsK
KyAgICB0ZXN0Q2FyZXRQb3NpdGlvbigiMC1yaWdodC1wYWRkaW5nLXJ0bC10ZXh0YXJlYSIsIDIw
Nik7CisgICAgdGVzdENhcmV0UG9zaXRpb24oImx0ci1kaXYiLCA5KTsKKyAgICB0ZXN0Q2FyZXRQ
b3NpdGlvbigibHRyLXRleHRhcmVhIiwgMTApOworICAgIHRlc3RDYXJldFBvc2l0aW9uKCJuby13
cmFwcGluZy1yaWdodC1hbGlnbi1kaXYiLCAyMDgpOworICAgIHRlc3RDYXJldFBvc2l0aW9uKCJu
by13cmFwcGluZy1ydGwtZGl2IiwgMjA4KTsKKyAgICB0ZXN0Q2FyZXRQb3NpdGlvbigibm8td3Jh
cHBpbmctMC1yaWdodC1wYWRkaW5nLXJ0bC10ZXh0YXJlYSIsIDIwNik7CisgICAgdGVzdENhcmV0
UG9zaXRpb24oIm5vLXdyYXBwaW5nLWx0ci1kaXYiLCA5KTsKKyAgICB0ZXN0Q2FyZXRQb3NpdGlv
bigibm8td3JhcHBpbmctbHRyLXRleHRhcmVhIiwgMTApOworfQorCis8L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPGJyPgorUmlnaHQgYWxpZ25lZCBkaXYuCis8YnI+Cis8ZGl2IENPTlRFTlRF
RElUQUJMRSBpZD0icmlnaHQtYWxpZ24tZGl2IiBzdHlsZT0idGV4dC1hbGlnbjogcmlnaHQ7IHdp
ZHRoOjIwMHB4OyBib3JkZXI6IHNvbGlkIHRoaW47Ij48L2Rpdj4gCis8YnI+CitSVEwgZGl2Lgor
PGJyPgorPGRpdiBDT05URU5URURJVEFCTEUgaWQ9InJ0bC1kaXYiIHN0eWxlPSJkaXJlY3Rpb246
IHJ0bDsgd2lkdGg6MjAwcHg7IGJvcmRlcjogc29saWQgdGhpbjsgIj5hPC9kaXY+IAorPGJyPgor
MHB4IHJpZ2h0IHBhZGRpbmcgUlRMIHRleHRhcmVhLgorPGJyPgorPHRleHRhcmVhIGlkPSIwLXJp
Z2h0LXBhZGRpbmctcnRsLXRleHRhcmVhIiBzdHlsZT0iZGlyZWN0aW9uOnJ0bDsgcGFkZGluZzog
MXB4IDBweCAxcHggMXB4OyB3aWR0aDoyMDBweCI+YTwvdGV4dGFyZWE+Cis8YnI+CitMVFIgZGl2
IGFuZCB0ZXh0YXJlYS4KKzxicj4KKzxkaXYgQ09OVEVOVEVESVRBQkxFIGlkPSJsdHItZGl2IiBz
dHlsZT0id2lkdGg6MjAwcHg7IGJvcmRlcjogc29saWQgdGhpbjsgIj5hPC9kaXY+IAorPGJyPgor
PHRleHRhcmVhIGlkPSJsdHItdGV4dGFyZWEiIHN0eWxlPSJwYWRkaW5nOiAxcHggMHB4IDFweCAx
cHg7IHdpZHRoOjIwMHB4Ij5hPC90ZXh0YXJlYT4KKzxicj4KK05PIFdSQVBQSU5HCis8YnI+CitO
byB3cmFwcGluZyByaWdodCBhbGlnbmVkIGRpdi4KKzxicj4KKzxkaXYgQ09OVEVOVEVESVRBQkxF
IGlkPSJuby13cmFwcGluZy1yaWdodC1hbGlnbi1kaXYiIHN0eWxlPSJ3aGl0ZS1zcGFjZTpub3dy
YXA7IHRleHQtYWxpZ246IHJpZ2h0OyB3aWR0aDoyMDBweDsgYm9yZGVyOiBzb2xpZCB0aGluOyI+
PC9kaXY+IAorPGJyPgorTm8gd3JhcHBpbmcgUlRMIGRpdi4KKzxicj4KKzxkaXYgQ09OVEVOVEVE
SVRBQkxFIGlkPSJuby13cmFwcGluZy1ydGwtZGl2IiBzdHlsZT0id2hpdGUtc3BhY2U6bm93cmFw
OyBkaXJlY3Rpb246IHJ0bDsgd2lkdGg6MjAwcHg7IGJvcmRlcjogc29saWQgdGhpbjsgIj5hPC9k
aXY+IAorPGJyPgorTm8gd3JhcHBpbmcgMHB4IHJpZ2h0IHBhZGRpbmcgUlRMIHRleHRhcmVhLgor
PGJyPgorPHRleHRhcmVhIGlkPSJuby13cmFwcGluZy0wLXJpZ2h0LXBhZGRpbmctcnRsLXRleHRh
cmVhIiBzdHlsZT0id2hpdGUtc3BhY2U6bm93cmFwOyBkaXJlY3Rpb246cnRsOyBwYWRkaW5nOiAx
cHggMHB4IDFweCAxcHg7IHdpZHRoOjIwMHB4Ij5hPC90ZXh0YXJlYT4KKzxicj4KK05vIHdyYXBw
aW5nIExUUiBkaXYgYW5kIHRleHRhcmVhLgorPGJyPgorPGRpdiBDT05URU5URURJVEFCTEUgaWQ9
Im5vLXdyYXBwaW5nLWx0ci1kaXYiIHN0eWxlPSJ3aGl0ZS1zcGFjZTpub3dyYXA7IHdpZHRoOjIw
MHB4OyBib3JkZXI6IHNvbGlkIHRoaW47ICI+YTwvZGl2PiAKKzxicj4KKzx0ZXh0YXJlYSBpZD0i
bm8td3JhcHBpbmctbHRyLXRleHRhcmVhIiBzdHlsZT0id2hpdGUtc3BhY2U6bm93cmFwOyBwYWRk
aW5nOiAxcHggMHB4IDFweCAxcHg7IHdpZHRoOjIwMHB4Ij5hPC90ZXh0YXJlYT4KKzxicj4KKzx1
bCBpZD0iY29uc29sZSI+PC91bD4KKzwvYm9keT4KKzxzY3JpcHQ+IHJ1blRlc3QoKTsgPC9zY3Jp
cHQ+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9pbnB1
dC9jYXJldC1wcmltYXJ5LWJpZGktZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL2lucHV0L2NhcmV0LXByaW1hcnktYmlkaS1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDU3NjU1KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRp
bmcvaW5wdXQvY2FyZXQtcHJpbWFyeS1iaWRpLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtNDEsNyArNDEsNyBAQAogNDA6IDExNCw0NzgsMCwyOAogNDE6IDk3LDQ3OCwwLDI4CiA0Mjog
MTI2LDQ3OCwwLDI4Ci00MzogNzkyLDQ1MCwwLDI4Cis0MzogNzkxLDQ1MCwwLDI4CiA0NDogNzY0
LDQ1MCwwLDI4CiA0NTogNzc5LDQ1MCwwLDI4CiA0NjogNzUxLDQ1MCwwLDI4CkBAIC01Nyw3ICs1
Nyw3IEBACiA1NjogNjA1LDQ1MCwwLDI4CiA1NzogNjE4LDQ1MCwwLDI4CiA1ODogNTkwLDQ1MCww
LDI4Ci01OTogNzkyLDQyMiwwLDI4Cis1OTogNzkxLDQyMiwwLDI4CiA2MDogNzc3LDQyMiwwLDI4
CiA2MTogNzYzLDQyMiwwLDI4CiA2MjogNzUyLDQyMiwwLDI4CkBAIC02NywxNCArNjcsMTQgQEAK
IDY2OiA2OTQsNDIyLDAsMjgKIDY3OiA2NzcsNDIyLDAsMjgKIDY4OiA2NjksNDIyLDAsMjgKLTY5
OiA3OTIsMzk0LDAsMjgKKzY5OiA3OTEsMzk0LDAsMjgKIDcwOiA3NzcsMzk0LDAsMjgKIDcxOiA3
NjMsMzk0LDAsMjgKIDcyOiA3NTIsMzk0LDAsMjgKIDczOiA2NjAsMzk0LDAsMjgKIDc0OiA2NDMs
Mzk0LDAsMjgKIDc1OiA2MzUsMzk0LDAsMjgKLTc2OiA3OTIsMzY0LDAsMjgKKzc2OiA3OTEsMzY0
LDAsMjgKIDc3OiA3NjQsMzY0LDAsMjgKIDc4OiA3NzksMzY0LDAsMjgKIDc5OiA3NTEsMzY0LDAs
MjgK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53685</attachid>
            <date>2010-04-19 09:47:31 -0700</date>
            <delta_ts>2010-04-23 16:13:28 -0700</delta_ts>
            <desc>path /w layout test</desc>
            <filename>25319.v2</filename>
            <type>text/plain</type>
            <size>8848</size>
            <attacher name="Xiaomei Ji">xji</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NzY5NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTcgQEAKKzIwMTAtMDQtMTUgIFhpYW9tZWkgSmkgIDx4amlAY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeCBp
c3N1ZSAiY2FyZXQgZG9lcyBub3QgcGFpbnQgYWZ0ZXIgdHlwZSBpbiBjaGFyYWN0ZXJzIGluIHJp
Z2h0CisgICAgICAgIGFsaWduZWQgZGl2IG9yIGFmdGVyIGRlbGV0ZSBhbGwgY2hhcmFjdGVycyBp
biBSVEwgZGl2IG9yIAorICAgICAgICAwcHggcmlnaHQgcGFkZGluZyBSVEwgdGV4dGFyZWEiCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTMxOQorCisg
ICAgICAgIFRlc3Q6IGVkaXRpbmcvaW5zZXJ0aW5nL2NhcmV0LXBvc2l0aW9uLmh0bWwKKworICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRleHQ6OmxvY2FsQ2FyZXRSZWN0KToKKwogMjAxMC0wNC0xNSAgSmlhbiBMaSAgPGppYW5saUBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRG1pdHJ5IFRpdG92LgpJbmRleDog
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAJKHJldmlzaW9uIDU3NjU1KQorKysgV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0MywyMyArNDQzLDM4IEBA
IEludFJlY3QgUmVuZGVyVGV4dDo6bG9jYWxDYXJldFJlY3QoSW5saW4KICAgICAgICAgKmV4dHJh
V2lkdGhUb0VuZE9mTGluZSA9IChib3gtPnJvb3QoKS0+d2lkdGgoKSArIHJvb3RMZWZ0KSAtIChs
ZWZ0ICsgMSk7CiAKICAgICBSZW5kZXJCbG9jayogY2IgPSBjb250YWluaW5nQmxvY2soKTsKKyAg
ICBSZW5kZXJTdHlsZSogY2JTdHlsZSA9IGNiLT5zdHlsZSgpOworICAgIGludCBsZWZ0RWRnZTsK
KyAgICBpbnQgcmlnaHRFZGdlOwogICAgIGlmIChzdHlsZSgpLT5hdXRvV3JhcCgpKSB7Ci0gICAg
ICAgIGludCBhdmFpbGFibGVXaWR0aCA9IGNiLT5saW5lV2lkdGgodG9wLCBmYWxzZSk7Ci0gICAg
ICAgIGlmIChib3gtPmRpcmVjdGlvbigpID09IExUUikKLSAgICAgICAgICAgIGxlZnQgPSBtaW4o
bGVmdCwgcm9vdExlZnQgKyBhdmFpbGFibGVXaWR0aCAtIGNhcmV0V2lkdGhSaWdodE9mT2Zmc2V0
KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbGVmdCA9IG1heChsZWZ0LCBjYi0+eCgpKTsK
KyAgICAgICAgbGVmdEVkZ2UgPSBjYi0+eCgpOworICAgICAgICByaWdodEVkZ2UgPSBjYi0+eCgp
ICsgY2ItPndpZHRoKCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8g
d3JhcHBpbmcsIHRoZSBjYXJldCBjYW4gbGVhdmUgaXRzIGNvbnRhaW5pbmcgYmxvY2ssIGJ1dCBu
b3QgaXRzIHJvb3QgbGluZSBib3guCi0gICAgICAgIGlmIChjYi0+c3R5bGUoKS0+ZGlyZWN0aW9u
KCkgPT0gTFRSKSB7Ci0gICAgICAgICAgICBpbnQgcmlnaHRFZGdlID0gbWF4KGNiLT53aWR0aCgp
LCByb290UmlnaHQpOwotICAgICAgICAgICAgbGVmdCA9IG1pbihsZWZ0LCByaWdodEVkZ2UgLSBj
YXJldFdpZHRoUmlnaHRPZk9mZnNldCk7Ci0gICAgICAgICAgICBsZWZ0ID0gbWF4KGxlZnQsIHJv
b3RMZWZ0KTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGludCBsZWZ0RWRnZSA9IG1p
bihjYi0+eCgpLCByb290TGVmdCk7Ci0gICAgICAgICAgICBsZWZ0ID0gbWF4KGxlZnQsIGxlZnRF
ZGdlKTsKLSAgICAgICAgICAgIGxlZnQgPSBtaW4obGVmdCwgcm9vdFJpZ2h0IC0gY2FyZXRXaWR0
aCk7Ci0gICAgICAgIH0KKyAgICAgICAgbGVmdEVkZ2UgPSBtaW4oY2ItPngoKSwgcm9vdExlZnQp
OworICAgICAgICByaWdodEVkZ2UgPSBtYXgoY2ItPngoKSArIGNiLT53aWR0aCgpLCByb290Umln
aHQpOworICAgIH0KKworICAgIGJvb2wgcmlnaHRBbGlnbmVkID0gZmFsc2U7CisgICAgc3dpdGNo
IChjYlN0eWxlLT50ZXh0QWxpZ24oKSkgeworICAgIGNhc2UgVEFBVVRPOgorICAgIGNhc2UgSlVT
VElGWToKKyAgICAgICAgaWYgKGNiU3R5bGUtPmRpcmVjdGlvbigpID09IFJUTCkKKyAgICAgICAg
ICAgIHJpZ2h0QWxpZ25lZCA9IHRydWU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUklHSFQ6
CisgICAgY2FzZSBXRUJLSVRfUklHSFQ6CisgICAgICAgIHJpZ2h0QWxpZ25lZCA9IHRydWU7Cisg
ICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAg
IGlmIChyaWdodEFsaWduZWQpIHsKKyAgICAgICAgbGVmdCA9IG1heChsZWZ0LCBsZWZ0RWRnZSk7
CisgICAgICAgIGxlZnQgPSBtaW4obGVmdCwgcm9vdFJpZ2h0IC0gY2FyZXRXaWR0aCk7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgbGVmdCA9IG1pbihsZWZ0LCByaWdodEVkZ2UgLSBjYXJldFdpZHRo
UmlnaHRPZk9mZnNldCk7CisgICAgICAgIGxlZnQgPSBtYXgobGVmdCwgcm9vdExlZnQpOwogICAg
IH0KIAogICAgIHJldHVybiBJbnRSZWN0KGxlZnQsIHRvcCwgY2FyZXRXaWR0aCwgaGVpZ2h0KTsK
SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDU3Njk2KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTAtMDQtMTUgIFhpYW9tZWkgSmkgIDx4amlA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEZpeCBpc3N1ZSAiY2FyZXQgZG9lcyBub3QgcGFpbnQgYWZ0ZXIgdHlwZSBpbiBjaGFy
YWN0ZXJzIGluIHJpZ2h0CisgICAgICAgIGFsaWduZWQgZGl2IG9yIGFmdGVyIGRlbGV0ZSBhbGwg
Y2hhcmFjdGVycyBpbiBSVEwgZGl2IG9yIAorICAgICAgICAwcHggcmlnaHQgcGFkZGluZyBSVEwg
dGV4dGFyZWEiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yNTMxOQorCisgICAgICAgICogZWRpdGluZy9pbnNlcnRpbmcvY2FyZXQtcG9zaXRpb24tZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL2luc2VydGluZy9jYXJldC1wb3Np
dGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZWRpdGluZy9pbnB1dC9j
YXJldC1wcmltYXJ5LWJpZGktZXhwZWN0ZWQudHh0OgorCiAyMDEwLTA0LTE1ICBBbGJlcnQgSi4g
V29uZyAgPGFqd29uZ0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgTm90IHJldmlld2VkLiAgU2hl
cmlmZmluZy4KSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvaW5zZXJ0aW5nL2NhcmV0LXBvc2l0
aW9uLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL2luc2Vy
dGluZy9jYXJldC1wb3NpdGlvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9lZGl0aW5nL2luc2VydGluZy9jYXJldC1wb3NpdGlvbi1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMjYgQEAKKworUmlnaHQgYWxpZ25lZCBkaXYuIAoreAorCitSVEwg
ZGl2LiAKK2EKKworMHB4IHJpZ2h0IHBhZGRpbmcgUlRMIHRleHRhcmVhLiAKKyAKK0xUUiBkaXYg
YW5kIHRleHRhcmVhLiAKK2EKKworIAorTk8gV1JBUFBJTkcgCitObyB3cmFwcGluZyByaWdodCBh
bGlnbmVkIGRpdi4gCisKK05vIHdyYXBwaW5nIFJUTCBkaXYuIAorYQorCitObyB3cmFwcGluZyAw
cHggcmlnaHQgcGFkZGluZyBSVEwgdGV4dGFyZWEuIAorIAorTm8gd3JhcHBpbmcgTFRSIGRpdiBh
bmQgdGV4dGFyZWEuIAorYQorCisgCisKSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvaW5zZXJ0
aW5nL2NhcmV0LXBvc2l0aW9uLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGlu
Zy9pbnNlcnRpbmcvY2FyZXQtcG9zaXRpb24uaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2VkaXRpbmcvaW5zZXJ0aW5nL2NhcmV0LXBvc2l0aW9uLmh0bWwJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMTAxIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Li4vZWRpdGluZy5q
cyBsYW5ndWFnZT0iSmF2YVNjcmlwdCIgdHlwZT0idGV4dC9KYXZhU2NyaXB0IiA+PC9zY3JpcHQ+
Cis8c2NyaXB0PgorCitmdW5jdGlvbiBsb2coc3RyKSB7CisgICAgdmFyIGxpID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgibGkiKTsKKyAgICBsaS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVU
ZXh0Tm9kZShzdHIpKTsKKyAgICB2YXIgY29uc29sZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJjb25zb2xlIik7CisgICAgY29uc29sZS5hcHBlbmRDaGlsZChsaSk7Cit9CisKK2Z1bmN0aW9u
IGFzc2VydEVxdWFsKHRlc3RfbmFtZSwgYWN0dWFsLCBleHBlY3RlZCkKK3sKKyAgICBpZiAoYWN0
dWFsICE9IGV4cGVjdGVkKSB7CisgICAgICAgIGxvZygiPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PSIpOworICAgICAgICBsb2coIkZBSUxFRDogIiArIHRlc3RfbmFtZSk7CisgICAg
ICAgIGxvZygiYWN0dWFsOiAiICsgYWN0dWFsKTsKKyAgICAgICAgbG9nKCJleHBlY3RlZDogIiAr
IGV4cGVjdGVkKTsKKyAgICB9Cit9CitmdW5jdGlvbiB0ZXN0Q2FyZXRQb3NpdGlvbihlbGVtZW50
SWQsIGNhcmV0UG9zaXRpb24pCit7CisgICAgZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVs
ZW1lbnRJZCwgY2FyZXRQb3NpdGlvbik7CisgICAgZS5mb2N1cygpOworICAgIGlmICh3aW5kb3cu
dGV4dElucHV0Q29udHJvbGxlcikgeworICAgICAgICB2YXIgY2FyZXRSZWN0ID0gdGV4dElucHV0
Q29udHJvbGxlci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSgwLCAwKTsKKyAgICAgICAgYXNz
ZXJ0RXF1YWwoZWxlbWVudElkLCBjYXJldFJlY3RbMF0sIGNhcmV0UG9zaXRpb24pOworICAgIH0g
IAorfQorCitmdW5jdGlvbiBydW5UZXN0KCkKK3sKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cisg
ICAgdmFyIGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmlnaHQtYWxpZ24tZGl2Iik7Cisg
ICAgZS5mb2N1cygpOworICAgIHNlbGVjdEFsbENvbW1hbmQoKTsKKyAgICB0eXBlQ2hhcmFjdGVy
Q29tbWFuZCgpOworICAgIGlmICh3aW5kb3cudGV4dElucHV0Q29udHJvbGxlcikgeworICAgICAg
ICB2YXIgY2FyZXRSZWN0ID0gdGV4dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JDaGFyYWN0
ZXJSYW5nZSgxLCAwKTsKKyAgICAgICAgYXNzZXJ0RXF1YWwoInJpZ2h0LWFsaWduLWRpdiIsIGNh
cmV0UmVjdFswXSwgMjA4KTsKKyAgICB9CisKKyAgICB0ZXN0Q2FyZXRQb3NpdGlvbigicnRsLWRp
diIsIDIwOCk7CisgICAgdGVzdENhcmV0UG9zaXRpb24oIjAtcmlnaHQtcGFkZGluZy1ydGwtdGV4
dGFyZWEiLCAyMDYpOworICAgIHRlc3RDYXJldFBvc2l0aW9uKCJsdHItZGl2IiwgOSk7CisgICAg
dGVzdENhcmV0UG9zaXRpb24oImx0ci10ZXh0YXJlYSIsIDEwKTsKKyAgICB0ZXN0Q2FyZXRQb3Np
dGlvbigibm8td3JhcHBpbmctcmlnaHQtYWxpZ24tZGl2IiwgMjA4KTsKKyAgICB0ZXN0Q2FyZXRQ
b3NpdGlvbigibm8td3JhcHBpbmctcnRsLWRpdiIsIDIwOCk7CisgICAgdGVzdENhcmV0UG9zaXRp
b24oIm5vLXdyYXBwaW5nLTAtcmlnaHQtcGFkZGluZy1ydGwtdGV4dGFyZWEiLCAyMDYpOworICAg
IHRlc3RDYXJldFBvc2l0aW9uKCJuby13cmFwcGluZy1sdHItZGl2IiwgOSk7CisgICAgdGVzdENh
cmV0UG9zaXRpb24oIm5vLXdyYXBwaW5nLWx0ci10ZXh0YXJlYSIsIDEwKTsKK30KKworPC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxicj4KK1JpZ2h0IGFsaWduZWQgZGl2LgorPGJyPgorPGRp
diBDT05URU5URURJVEFCTEUgaWQ9InJpZ2h0LWFsaWduLWRpdiIgc3R5bGU9InRleHQtYWxpZ246
IHJpZ2h0OyB3aWR0aDoyMDBweDsgYm9yZGVyOiBzb2xpZCB0aGluOyI+PC9kaXY+IAorPGJyPgor
UlRMIGRpdi4KKzxicj4KKzxkaXYgQ09OVEVOVEVESVRBQkxFIGlkPSJydGwtZGl2IiBzdHlsZT0i
ZGlyZWN0aW9uOiBydGw7IHdpZHRoOjIwMHB4OyBib3JkZXI6IHNvbGlkIHRoaW47ICI+YTwvZGl2
PiAKKzxicj4KKzBweCByaWdodCBwYWRkaW5nIFJUTCB0ZXh0YXJlYS4KKzxicj4KKzx0ZXh0YXJl
YSBpZD0iMC1yaWdodC1wYWRkaW5nLXJ0bC10ZXh0YXJlYSIgc3R5bGU9ImRpcmVjdGlvbjpydGw7
IHBhZGRpbmc6IDFweCAwcHggMXB4IDFweDsgd2lkdGg6MjAwcHgiPmE8L3RleHRhcmVhPgorPGJy
PgorTFRSIGRpdiBhbmQgdGV4dGFyZWEuCis8YnI+Cis8ZGl2IENPTlRFTlRFRElUQUJMRSBpZD0i
bHRyLWRpdiIgc3R5bGU9IndpZHRoOjIwMHB4OyBib3JkZXI6IHNvbGlkIHRoaW47ICI+YTwvZGl2
PiAKKzxicj4KKzx0ZXh0YXJlYSBpZD0ibHRyLXRleHRhcmVhIiBzdHlsZT0icGFkZGluZzogMXB4
IDBweCAxcHggMXB4OyB3aWR0aDoyMDBweCI+YTwvdGV4dGFyZWE+Cis8YnI+CitOTyBXUkFQUElO
RworPGJyPgorTm8gd3JhcHBpbmcgcmlnaHQgYWxpZ25lZCBkaXYuCis8YnI+Cis8ZGl2IENPTlRF
TlRFRElUQUJMRSBpZD0ibm8td3JhcHBpbmctcmlnaHQtYWxpZ24tZGl2IiBzdHlsZT0id2hpdGUt
c3BhY2U6bm93cmFwOyB0ZXh0LWFsaWduOiByaWdodDsgd2lkdGg6MjAwcHg7IGJvcmRlcjogc29s
aWQgdGhpbjsiPjwvZGl2PiAKKzxicj4KK05vIHdyYXBwaW5nIFJUTCBkaXYuCis8YnI+Cis8ZGl2
IENPTlRFTlRFRElUQUJMRSBpZD0ibm8td3JhcHBpbmctcnRsLWRpdiIgc3R5bGU9IndoaXRlLXNw
YWNlOm5vd3JhcDsgZGlyZWN0aW9uOiBydGw7IHdpZHRoOjIwMHB4OyBib3JkZXI6IHNvbGlkIHRo
aW47ICI+YTwvZGl2PiAKKzxicj4KK05vIHdyYXBwaW5nIDBweCByaWdodCBwYWRkaW5nIFJUTCB0
ZXh0YXJlYS4KKzxicj4KKzx0ZXh0YXJlYSBpZD0ibm8td3JhcHBpbmctMC1yaWdodC1wYWRkaW5n
LXJ0bC10ZXh0YXJlYSIgc3R5bGU9IndoaXRlLXNwYWNlOm5vd3JhcDsgZGlyZWN0aW9uOnJ0bDsg
cGFkZGluZzogMXB4IDBweCAxcHggMXB4OyB3aWR0aDoyMDBweCI+YTwvdGV4dGFyZWE+Cis8YnI+
CitObyB3cmFwcGluZyBMVFIgZGl2IGFuZCB0ZXh0YXJlYS4KKzxicj4KKzxkaXYgQ09OVEVOVEVE
SVRBQkxFIGlkPSJuby13cmFwcGluZy1sdHItZGl2IiBzdHlsZT0id2hpdGUtc3BhY2U6bm93cmFw
OyB3aWR0aDoyMDBweDsgYm9yZGVyOiBzb2xpZCB0aGluOyAiPmE8L2Rpdj4gCis8YnI+Cis8dGV4
dGFyZWEgaWQ9Im5vLXdyYXBwaW5nLWx0ci10ZXh0YXJlYSIgc3R5bGU9IndoaXRlLXNwYWNlOm5v
d3JhcDsgcGFkZGluZzogMXB4IDBweCAxcHggMXB4OyB3aWR0aDoyMDBweCI+YTwvdGV4dGFyZWE+
Cis8YnI+Cis8dWwgaWQ9ImNvbnNvbGUiPjwvdWw+Cis8L2JvZHk+Cis8c2NyaXB0PiBydW5UZXN0
KCk7IDwvc2NyaXB0PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Vk
aXRpbmcvaW5wdXQvY2FyZXQtcHJpbWFyeS1iaWRpLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9pbnB1dC9jYXJldC1wcmltYXJ5LWJp
ZGktZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA1NzY1NSkKKysrIExheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9lZGl0aW5nL2lucHV0L2NhcmV0LXByaW1hcnktYmlkaS1leHBlY3RlZC50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTQxLDcgKzQxLDcgQEAKIDQwOiAxMTQsNDc4LDAsMjgKIDQxOiA5Nyw0Nzgs
MCwyOAogNDI6IDEyNiw0NzgsMCwyOAotNDM6IDc5Miw0NTAsMCwyOAorNDM6IDc5MSw0NTAsMCwy
OAogNDQ6IDc2NCw0NTAsMCwyOAogNDU6IDc3OSw0NTAsMCwyOAogNDY6IDc1MSw0NTAsMCwyOApA
QCAtNTcsNyArNTcsNyBAQAogNTY6IDYwNSw0NTAsMCwyOAogNTc6IDYxOCw0NTAsMCwyOAogNTg6
IDU5MCw0NTAsMCwyOAotNTk6IDc5Miw0MjIsMCwyOAorNTk6IDc5MSw0MjIsMCwyOAogNjA6IDc3
Nyw0MjIsMCwyOAogNjE6IDc2Myw0MjIsMCwyOAogNjI6IDc1Miw0MjIsMCwyOApAQCAtNjcsMTQg
KzY3LDE0IEBACiA2NjogNjk0LDQyMiwwLDI4CiA2NzogNjc3LDQyMiwwLDI4CiA2ODogNjY5LDQy
MiwwLDI4Ci02OTogNzkyLDM5NCwwLDI4Cis2OTogNzkxLDM5NCwwLDI4CiA3MDogNzc3LDM5NCww
LDI4CiA3MTogNzYzLDM5NCwwLDI4CiA3MjogNzUyLDM5NCwwLDI4CiA3MzogNjYwLDM5NCwwLDI4
CiA3NDogNjQzLDM5NCwwLDI4CiA3NTogNjM1LDM5NCwwLDI4Ci03NjogNzkyLDM2NCwwLDI4Cis3
NjogNzkxLDM2NCwwLDI4CiA3NzogNzY0LDM2NCwwLDI4CiA3ODogNzc5LDM2NCwwLDI4CiA3OTog
NzUxLDM2NCwwLDI4Cg==
</data>
<flag name="review"
          id="37473"
          type_id="1"
          status="+"
          setter="mitz"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>54199</attachid>
            <date>2010-04-23 16:13:28 -0700</date>
            <delta_ts>2010-04-23 16:41:20 -0700</delta_ts>
            <desc>fix test breaks QT Linux</desc>
            <filename>25319.v4</filename>
            <type>text/plain</type>
            <size>1458</size>
            <attacher name="Xiaomei Ji">xji</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDU4MTk2KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTEgQEAKKzIwMTAtMDQtMjMgIFhpYW9tZWkgSmkgIDx4amlA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEZpeCB0aGUgdGVzdCBjYXNlIGJyZWFrcyBpbiBRVCBsaW51eC4KKworICAgICAgICAq
IGVkaXRpbmcvaW5zZXJ0aW5nL2NhcmV0LXBvc2l0aW9uLmh0bWw6CisKIDIwMTAtMDQtMjMgIE1P
UklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CiAKICAgICAgICAgTm90IHJldmlld2Vk
LiBBZGRlZCBtaXNzaW5nIGV4cGVjdGF0aW9uIGZpbGVzIGZvcgpJbmRleDogTGF5b3V0VGVzdHMv
ZWRpdGluZy9pbnNlcnRpbmcvY2FyZXQtcG9zaXRpb24uaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9lZGl0aW5nL2luc2VydGluZy9jYXJldC1wb3NpdGlvbi5odG1sCShyZXZpc2lvbiA1
ODE5MSkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvaW5zZXJ0aW5nL2NhcmV0LXBvc2l0aW9uLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDcgQEAgZnVuY3Rpb24gdGVzdENhcmV0UG9z
aXRpb24oZWxlbWVudElkLCBjYQogewogICAgIGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChl
bGVtZW50SWQsIGNhcmV0UG9zaXRpb24pOwogICAgIGUuZm9jdXMoKTsKLSAgICBpZiAod2luZG93
LnRleHRJbnB1dENvbnRyb2xsZXIpIHsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKSB7CiAgICAgICAgIHZhciBjYXJldFJlY3QgPSB0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0
UmVjdEZvckNoYXJhY3RlclJhbmdlKDAsIDApOwogICAgICAgICBhc3NlcnRFcXVhbChlbGVtZW50
SWQsIGNhcmV0UmVjdFswXSwgY2FyZXRQb3NpdGlvbik7CiAgICAgfSAgCkBAIC0zNyw3ICszNyw3
IEBAIGZ1bmN0aW9uIHJ1blRlc3QoKQogICAgIGUuZm9jdXMoKTsKICAgICBzZWxlY3RBbGxDb21t
YW5kKCk7CiAgICAgdHlwZUNoYXJhY3RlckNvbW1hbmQoKTsKLSAgICBpZiAod2luZG93LnRleHRJ
bnB1dENvbnRyb2xsZXIpIHsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7
CiAgICAgICAgIHZhciBjYXJldFJlY3QgPSB0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZv
ckNoYXJhY3RlclJhbmdlKDEsIDApOwogICAgICAgICBhc3NlcnRFcXVhbCgicmlnaHQtYWxpZ24t
ZGl2IiwgY2FyZXRSZWN0WzBdLCAyMDgpOwogICAgIH0K
</data>
<flag name="review"
          id="38104"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>54202</attachid>
            <date>2010-04-23 16:41:20 -0700</date>
            <delta_ts>2010-04-23 16:43:15 -0700</delta_ts>
            <desc>patch skip caret-position.html in QT</desc>
            <filename>25319.v5</filename>
            <type>text/plain</type>
            <size>1210</size>
            <attacher name="Xiaomei Ji">xji</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDU4MTk3KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTAtMDQtMjMgIFhpYW9tZWkgSmkgIDx4amlA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFFUIGRvZXMgbm90IHN1cHBvcnQgdGV4dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RG
b3JDaGFyYWN0ZXJSYW5nZSgpLAorICAgICAgICBzbywgc2tpcCBlZGl0aW5nL2luc2VydGluZy9j
YXJldC1wb3NpdGlvbi5odG1sIGZvciBRVC4KKworICAgICAgICAqIHBsYXRmb3JtL3F0L1NraXBw
ZWQ6CisKIDIwMTAtMDQtMjMgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CiAK
ICAgICAgICAgTm90IHJldmlld2VkLiBBZGRlZCBtaXNzaW5nIGV4cGVjdGF0aW9uIGZpbGVzIGZv
cgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCShyZXZpc2lvbiA1ODE5MCkKKysrIExheW91
dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQJKHdvcmtpbmcgY29weSkKQEAgLTI3OSw2ICsyNzks
OSBAQCBmYXN0L2Zvcm1zL2lucHV0LW1heGxlbmd0aC1pbWUtY29tcGxldGVkCiBmYXN0L3RleHQv
aW50ZXJuYXRpb25hbC90aGFpLWN1cnNvci1wb3NpdGlvbi5odG1sCiBmYXN0L2V2ZW50cy9pbWUt
Y29tcG9zaXRpb24tZXZlbnRzLTAwMS5odG1sCiAKKyMgTWlzc2luZyB0ZXh0SW5wdXRDb250cm9s
bGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKCkKK2VkaXRpbmcvaW5zZXJ0aW5nL2NhcmV0
LXBvc2l0aW9uLmh0bWwKKwogIyBNaXNzaW5nIGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRl
UHJlZmVyZW5jZSgpCiBmYXN0L2V2ZW50cy9wYWdlc2hvdy1wYWdlaGlkZS1vbi1iYWNrLWNhY2hl
ZC5odG1sCiBmYXN0L2V2ZW50cy9wYWdlc2hvdy1wYWdlaGlkZS1vbi1iYWNrLWNhY2hlZC13aXRo
LWZyYW1lcy5odG1sCg==
</data>
<flag name="review"
          id="38108"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>