<?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>39966</bug_id>
          
          <creation_ts>2010-05-31 11:28:23 -0700</creation_ts>
          <short_desc>Crash in qsort() because compareBorders() is not reliable</short_desc>
          <delta_ts>2011-01-12 11:13:00 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yong Li">yong.li.webkit</reporter>
          <assigned_to name="Yong Li">yong.li.webkit</assigned_to>
          <cc>ap</cc>
    
    <cc>atwilson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>phanna</cc>
    
    <cc>staikos</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>232472</commentid>
    <comment_count>0</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2010-05-31 11:28:23 -0700</bug_when>
    <thetext>In RenderTableCell.cpp, compareBorders() is used to implement compareBorderStylesForQSort().

But it&apos;s not stable. When compareBorderStylesForQSort(a, b) returns 1, compareBorderStylesForQSort(b, a) can return 1 or 0.

We should pass a stable compare function to qsort().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232474</commentid>
    <comment_count>1</comment_count>
      <attachid>57485</attachid>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2010-05-31 11:30:49 -0700</bug_when>
    <thetext>Created attachment 57485
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232984</commentid>
    <comment_count>2</comment_count>
      <attachid>57485</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-06-01 16:18:16 -0700</bug_when>
    <thetext>Comment on attachment 57485
the patch

Please add a test case, or explain why making one isn&apos;t possible (sounds like it should be possible).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233056</commentid>
    <comment_count>3</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2010-06-01 20:46:03 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 57485 [details])
&gt; Please add a test case, or explain why making one isn&apos;t possible (sounds like it should be possible).

it&apos;s a hard job, because it relies on the implementation of qsort()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233077</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-06-01 22:22:20 -0700</bug_when>
    <thetext>Can a test be made that crashes on any common implementation? The bug title says &quot;crash&quot;, so surely this was observed in practice?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233256</commentid>
    <comment_count>5</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2010-06-02 07:22:57 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Can a test be made that crashes on any common implementation? The bug title says &quot;crash&quot;, so surely this was observed in practice?

Sorry, the title is probably misleading. I have seen it crashed in armcc&apos;s qsort(), and using stable compare function fixed it. I cannot reproduce it on Safari win32.

But in general, the compare functions passed to sorting algorithm (including qsort, stable_sort, and sorted containers like std::set/map) should be written in a reliable way and should give consistent result. The compare function passed to qsort should always make this true: compare(a, b) == -compare(b, a). The old code uses a function that can make compare(a, b) == 1 and compare(b, a) == 0. The behavior of running qsort() with it is undetermined.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233264</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-06-02 08:03:41 -0700</bug_when>
    <thetext>Can you add a test that crashes on armcc without this fix?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233267</commentid>
    <comment_count>7</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2010-06-02 08:06:11 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Can you add a test that crashes on armcc without this fix?

I&apos;ll give a try.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234709</commentid>
    <comment_count>8</comment_count>
      <attachid>57990</attachid>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2010-06-06 19:50:55 -0700</bug_when>
    <thetext>Created attachment 57990
the test case</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234710</commentid>
    <comment_count>9</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2010-06-06 19:51:57 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Can you add a test that crashes on armcc without this fix?

Finally got a test case that can reproduce the crash. Do you think it should go into LayoutTest?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234835</commentid>
    <comment_count>10</comment_count>
      <attachid>58026</attachid>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2010-06-07 07:19:07 -0700</bug_when>
    <thetext>Created attachment 58026
Test case</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234836</commentid>
    <comment_count>11</comment_count>
      <attachid>58027</attachid>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2010-06-07 07:19:44 -0700</bug_when>
    <thetext>Created attachment 58027
the patch that fixes the problem</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234839</commentid>
    <comment_count>12</comment_count>
      <attachid>58027</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-06-07 07:25:23 -0700</bug_when>
    <thetext>Comment on attachment 58027
the patch that fixes the problem

Is there a way to fix this without writing a whole new copy of the compareBorders function? That&apos;s quite undesirable, because we can have real problems if the two functions get out of sync. What&apos;s the particular thing in the original function that makes it inconsistent?

The word &quot;stable&quot; has a specific meaning in sorting contexts. It means a sorting algorithm that does not reorder equal items in the array being sorted. Using the term stable in the title of the new version of the compareBorders function is imprecise and confusing since it already has a specific meaning for sorting.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234852</commentid>
    <comment_count>13</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2010-06-07 07:58:06 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 58027 [details])
&gt; Is there a way to fix this without writing a whole new copy of the compareBorders function? That&apos;s quite undesirable, because we can have real problems if the two functions get out of sync. What&apos;s the particular thing in the original function that makes it inconsistent?
&gt; The word &quot;stable&quot; has a specific meaning in sorting contexts. It means a sorting algorithm that does not reorder equal items in the array being sorted. Using the term stable in the title of the new version of the compareBorders function is imprecise and confusing since it already has a specific meaning for sorting.

1) The existing compareBorders function is mainly used to choose a border style from 2. 

It looks buggy for example the santiy check ignore the BHIDDEN check. If border 1 doesn&apos;t exist and border 2 is hidden, it doesn&apos;t return an empty border value as it&apos;s supposed to do. In fact, !border1.exists() rarely happens. 

Also, this function returns border1 when 2 border styles are equal, and the old compareBorderStylesForQSort implementation only checks the return value once and assumes the returned value is the bigger one. so it can get compareBorderStylesForQSort(a, b) == 1 and compare...ForQSort(b, a) == 1.

&gt; return border1.precedence() &gt;= border2.precedence() ? border1 : border2;

When both borders are BHIDDEN, the result is compareBorderStylesForQSort(a, b) == -1 and compare...ForQSort(b, a) == -1.

I&apos;ll try to make them use same code.

2) I thought about that, too, but couldn&apos;t find a good name. how about consistentCompare?

or? rename stableCompareBorders to compareBorderStyles, but rename compareBorders to chooseBorderBetween?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234869</commentid>
    <comment_count>14</comment_count>
      <attachid>58027</attachid>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2010-06-07 08:33:58 -0700</bug_when>
    <thetext>Comment on attachment 58027
the patch that fixes the problem

there&apos;s a bug in there. HIDDEN border should take precedence.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234902</commentid>
    <comment_count>15</comment_count>
      <attachid>58041</attachid>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2010-06-07 10:03:56 -0700</bug_when>
    <thetext>Created attachment 58041
Fixed bugs. use same function for both qsort and other cases

Also fixed a bug in the old function: when both borders have NONE style, it didn&apos;t continue comparing any more. But it should continue checking other properties in this case according to the comment:

// (2) Borders with a style of &apos;none&apos; have the lowest priority. Only if the border properties of all 
// the elements meeting at this edge are &apos;none&apos; will the border be omitted (but note that &apos;none&apos; is 
// the default value for the border style.)
// (3) If none of the styles are &apos;hidden&apos; and at least one of them is not &apos;none&apos;, then narrow borders</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234904</commentid>
    <comment_count>16</comment_count>
      <attachid>58041</attachid>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2010-06-07 10:04:35 -0700</bug_when>
    <thetext>Comment on attachment 58041
Fixed bugs. use same function for both qsort and other cases

oops wrong patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234906</commentid>
    <comment_count>17</comment_count>
      <attachid>58042</attachid>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2010-06-07 10:08:26 -0700</bug_when>
    <thetext>Created attachment 58042
updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234907</commentid>
    <comment_count>18</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-06-07 10:08:57 -0700</bug_when>
    <thetext>Attachment 58041 did not build on qt:
Build output: http://webkit-commit-queue.appspot.com/results/3086190</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234909</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-07 10:13:55 -0700</bug_when>
    <thetext>Attachment 58041 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/3095208</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234918</commentid>
    <comment_count>20</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2010-06-07 10:25:26 -0700</bug_when>
    <thetext>Also, FireFox renders the test case in the way different from webkit browsers. FireFox renders some borders around a few elements. WebKit browsers like Safari and Qt port don&apos;t render any border. My patch makes webkit do the similar thing as FireFox. I&apos;m not sure if FireFox is doing the right thing. Any expert?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235024</commentid>
    <comment_count>21</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2010-06-07 13:33:06 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; Also, FireFox renders the test case in the way different from webkit browsers. FireFox renders some borders around a few elements. WebKit browsers like Safari and Qt port don&apos;t render any border. My patch makes webkit do the similar thing as FireFox. I&apos;m not sure if FireFox is doing the right thing. Any expert?

Please ignore this</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236432</commentid>
    <comment_count>22</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2010-06-10 10:45:18 -0700</bug_when>
    <thetext>FYI, Daniel Bates has tested this patch on mac, and it passed all tests. He also ran pixels test for LayoutTests/table and LayoutTest/fast/table and did not notice any significant differences. Thanks, Dan.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>255348</commentid>
    <comment_count>23</comment_count>
      <attachid>58042</attachid>
    <who name="Kent Hansen">kent.hansen</who>
    <bug_when>2010-07-23 06:32:18 -0700</bug_when>
    <thetext>Comment on attachment 58042
updated patch

&gt; +        Make compareBorders() a consistent compare function which can used be by qsort().

&quot;which can be used by...&quot;

&gt; +        Also fixed a bug in previous implementation that it didn&apos;t continue comparing when
&gt; +        both borders have NONE style.

If that&apos;s a separate bug it should have a separate patch and test case, and be fixed before this one. (See http://trac.webkit.org/wiki/CodeReview)
Alternatively, leave that part out of this patch (keeping the behavior of the old implementation) and create a follow-up bug after this has landed.

&gt;      // Sanity check the values passed in.  If either is null, return the other.

You might want to reword comments like the above one, since the function now returns an int, not one of its arguments.

&gt;      // Rule #2 above.  A style of &apos;none&apos; has lowest priority and always loses to any other border.
&gt; -    if (border2.style() == BNONE)
&gt; -        return border1;
&gt; +    if (border2.style() == BNONE) {
&gt; +        if (border1.style() != BNONE)
&gt; +            return 1;
&gt; +    }
&gt;      if (border1.style() == BNONE)
&gt; -        return border2;
&gt; +        return -1;

It looks like -1 is always returned when both have style BNONE. Shouldn&apos;t it be 0, like for BHIDDEN?

&gt; @@ -767,10 +785,7 @@ static int compareBorderStylesForQSort(const void* pa, const void* pb)
&gt;      const CollapsedBorderValue* b = static_cast&lt;const CollapsedBorderValue*&gt;(pb);
&gt;      if (*a == *b)
&gt;          return 0;
&gt; -    CollapsedBorderValue borderWithHigherPrecedence = compareBorders(*a, *b);
&gt; -    if (*a == borderWithHigherPrecedence)
&gt; -        return 1;
&gt; -    return -1;
&gt; +    return compareBorders(*a, *b);
&gt;  }

Nice!

In general I like that compareBorders() returns an int rather than a border; the name is better suited now than before. :)
As for chooseBorder(), I&apos;m not able to come up with a better name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>255374</commentid>
    <comment_count>24</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2010-07-23 07:55:53 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; (From update of attachment 58042 [details])

&gt; &gt; -    if (border2.style() == BNONE)
&gt; &gt; -        return border1;
&gt; &gt; +    if (border2.style() == BNONE) {
&gt; &gt; +        if (border1.style() != BNONE)
&gt; &gt; +            return 1;
&gt; &gt; +    }
&gt; &gt;      if (border1.style() == BNONE)
&gt; &gt; -        return border2;
&gt; &gt; +        return -1;
&gt; It looks like -1 is always returned when both have style BNONE. Shouldn&apos;t it be 0, like for BHIDDEN?

Nice catch! Actuall when both borders have style BNONE, we should continue comparing with other criteria. so it should


&gt; &gt;      &quot;else&quot; if (border1.style() == BNONE)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>255375</commentid>
    <comment_count>25</comment_count>
      <attachid>58042</attachid>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2010-07-23 07:56:35 -0700</bug_when>
    <thetext>Comment on attachment 58042
updated patch

Review cancelled because of the bug Kent found.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>255393</commentid>
    <comment_count>26</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2010-07-23 08:34:40 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; (In reply to comment #23)
&gt; &gt; (From update of attachment 58042 [details] [details])
&gt; 
&gt; &gt; &gt; -    if (border2.style() == BNONE)
&gt; &gt; &gt; -        return border1;
&gt; &gt; &gt; +    if (border2.style() == BNONE) {
&gt; &gt; &gt; +        if (border1.style() != BNONE)
&gt; &gt; &gt; +            return 1;
&gt; &gt; &gt; +    }
&gt; &gt; &gt;      if (border1.style() == BNONE)
&gt; &gt; &gt; -        return border2;
&gt; &gt; &gt; +        return -1;
&gt; &gt; It looks like -1 is always returned when both have style BNONE. Shouldn&apos;t it be 0, like for BHIDDEN?
&gt; 
&gt; Nice catch! Actuall when both borders have style BNONE, we should continue comparing with other criteria. so it should
&gt; 
&gt; 
&gt; &gt; &gt;      &quot;else&quot; if (border1.style() == BNONE)

I&apos;m not very sure. I&apos;ll keep the old behavior (just return 0) and open another bug for that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>255401</commentid>
    <comment_count>27</comment_count>
      <attachid>62429</attachid>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2010-07-23 08:49:03 -0700</bug_when>
    <thetext>Created attachment 62429
Fix comments &amp; keep old behavior for BNONE style</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281649</commentid>
    <comment_count>28</comment_count>
      <attachid>58026</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-09-20 10:42:40 -0700</bug_when>
    <thetext>Comment on attachment 58026
Test case

Commit-queue won&apos;t land this, please land manually.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281653</commentid>
    <comment_count>29</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2010-09-20 10:44:21 -0700</bug_when>
    <thetext>(In reply to comment #28)
&gt; (From update of attachment 58026 [details])
&gt; Commit-queue won&apos;t land this, please land manually.

ha. thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281656</commentid>
    <comment_count>30</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-09-20 10:48:23 -0700</bug_when>
    <thetext>Why won&apos;t it land it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281666</commentid>
    <comment_count>31</comment_count>
      <attachid>62429</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-09-20 10:55:57 -0700</bug_when>
    <thetext>Comment on attachment 62429
Fix comments &amp; keep old behavior for BNONE style

Clearing flags on attachment: 62429

Committed r67862: &lt;http://trac.webkit.org/changeset/67862&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281667</commentid>
    <comment_count>32</comment_count>
      <attachid>58026</attachid>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2010-09-20 10:56:52 -0700</bug_when>
    <thetext>Comment on attachment 58026
Test case

give a try...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281668</commentid>
    <comment_count>33</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-09-20 11:01:49 -0700</bug_when>
    <thetext>&quot;This&quot; was the other patch, the one with test. I thought commit queue didn&apos;t like multiple patches per bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281680</commentid>
    <comment_count>34</comment_count>
      <attachid>58026</attachid>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2010-09-20 11:15:31 -0700</bug_when>
    <thetext>Comment on attachment 58026
Test case

commit queue says: Building and testing without the patch as a sanity check 5 minutes ago Unable to build and test patch 

I&apos;ll manually commit it</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281682</commentid>
    <comment_count>35</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-09-20 11:18:03 -0700</bug_when>
    <thetext>(In reply to comment #34)
&gt; (From update of attachment 58026 [details])
&gt; commit queue says: Building and testing without the patch as a sanity check 5 minutes ago Unable to build and test patch 
&gt; 
&gt; I&apos;ll manually commit it

This just means the cq had trouble building.  (likely due to tree redness).  It&apos;s a non-fatal error.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281683</commentid>
    <comment_count>36</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-09-20 11:18:27 -0700</bug_when>
    <thetext>(In reply to comment #35)
&gt; This just means the cq had trouble building.  (likely due to tree redness).  It&apos;s a non-fatal error.

The commit-queue will always comment in the bug if it hits a fatal error.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281686</commentid>
    <comment_count>37</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-09-20 11:19:34 -0700</bug_when>
    <thetext>(In reply to comment #33)
&gt; &quot;This&quot; was the other patch, the one with test. I thought commit queue didn&apos;t like multiple patches per bug.

The commit-queue can handle multiple patches per bug.  It didn&apos;t used to like them, no. :)

I wouldn&apos;t say they&apos;re recommended, but the cq will try and process patches in attachment order per-bug.  it also won&apos;t close a bug after landing if there are still non-obsolete patches on that bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281768</commentid>
    <comment_count>38</comment_count>
      <attachid>58026</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-09-20 13:05:57 -0700</bug_when>
    <thetext>Comment on attachment 58026
Test case

Rejecting patch 58026 from commit-queue.

Failed to run &quot;[u&apos;git&apos;, u&apos;svn&apos;, u&apos;dcommit&apos;]&quot; exit_code: 1
Last 500 characters of output:
repository/webkit/trunk ...
	M	LayoutTests/ChangeLog
	A	LayoutTests/tables/sort-collapsed-border-styles.html
A repository hook failed: Commit blocked by pre-commit hook (exit code 1) with output:

    The following files contain tab characters:

        trunk/LayoutTests/tables/sort-collapsed-border-styles.html

    Please use spaces instead to indent.
    If you must commit a file with tabs, use svn propset to set the &quot;allow-tabs&quot; property.
 at /usr/local/git/libexec/git-core/git-svn line 572


Full output: http://queues.webkit.org/results/4026079</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281808</commentid>
    <comment_count>39</comment_count>
      <attachid>68135</attachid>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2010-09-20 14:20:26 -0700</bug_when>
    <thetext>Created attachment 68135
test case (tab removed)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281809</commentid>
    <comment_count>40</comment_count>
      <attachid>68135</attachid>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2010-09-20 14:21:16 -0700</bug_when>
    <thetext>Comment on attachment 68135
test case (tab removed)

with the tab removed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281812</commentid>
    <comment_count>41</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2010-09-20 14:23:35 -0700</bug_when>
    <thetext>When I tried manually committing it. I got this:

RA layer request failed: MKACTIVITY of &apos;/repository/webkit/!svn/act/9569dd30-c4f
c-11df-b9b0-c0cdfa48311f&apos;: 403 Forbidden (http://svn.webkit.org) at C:\Git/libex
ec/git-core/git-svn line 3945</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281844</commentid>
    <comment_count>42</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-09-20 15:06:45 -0700</bug_when>
    <thetext>This appears to have hung the commit-cluster again.  I&apos;m investigating.  It&apos;s not your fault, it should not be possible for a patch to hang the cluster. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281846</commentid>
    <comment_count>43</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2010-09-20 15:18:56 -0700</bug_when>
    <thetext>(In reply to comment #42)
&gt; This appears to have hung the commit-cluster again.  I&apos;m investigating.  It&apos;s not your fault, it should not be possible for a patch to hang the cluster. :)

I did type wrong user/password more than one time. I haven&apos;t pushed a commit by myself for very long time. I cannot live without CQ :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281953</commentid>
    <comment_count>44</comment_count>
    <who name="Andrew Wilson">atwilson</who>
    <bug_when>2010-09-20 17:36:54 -0700</bug_when>
    <thetext>After this revision landed, fast/repaint/table-cell-collapsed-border.html started generating a different result and so is causing failures on the Chromium build bots. I am not certain whether the new result is still valid or not, but I suspect it&apos;s now drawing the borders in a different order and generating invalid results.

Please run this test and validate whether the results are still valid - I don&apos;t want to revert your CL when it&apos;s possible we just need to rebaseline the test expectations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281955</commentid>
    <comment_count>45</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-09-20 17:41:07 -0700</bug_when>
    <thetext>Did this get landed manually and the bug not updated?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281970</commentid>
    <comment_count>46</comment_count>
    <who name="Andrew Wilson">atwilson</who>
    <bug_when>2010-09-20 17:51:00 -0700</bug_when>
    <thetext>Looks like it landed as r67862.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281981</commentid>
    <comment_count>47</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-09-20 18:03:57 -0700</bug_when>
    <thetext>Closing, per above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282297</commentid>
    <comment_count>48</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2010-09-21 07:28:15 -0700</bug_when>
    <thetext>(In reply to comment #47)
&gt; Closing, per above.

The test case is still not landed...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282299</commentid>
    <comment_count>49</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2010-09-21 07:30:29 -0700</bug_when>
    <thetext>(In reply to comment #44)
&gt; After this revision landed, fast/repaint/table-cell-collapsed-border.html started generating a different result and so is causing failures on the Chromium build bots. I am not certain whether the new result is still valid or not, but I suspect it&apos;s now drawing the borders in a different order and generating invalid results.
&gt; 
&gt; Please run this test and validate whether the results are still valid - I don&apos;t want to revert your CL when it&apos;s possible we just need to rebaseline the test expectations.

The patch fixes the compare function passed to qsort. So it is not surprising that it invalidates some old test result. I will check with fast/repaint/table-cell-collapsed-border.html.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282315</commentid>
    <comment_count>50</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2010-09-21 08:22:17 -0700</bug_when>
    <thetext>(In reply to comment #44)
&gt; After this revision landed, fast/repaint/table-cell-collapsed-border.html started generating a different result and so is causing failures on the Chromium build bots. I am not certain whether the new result is still valid or not, but I suspect it&apos;s now drawing the borders in a different order and generating invalid results.
&gt; 
&gt; Please run this test and validate whether the results are still valid - I don&apos;t want to revert your CL when it&apos;s possible we just need to rebaseline the test expectations.

I noticed even the 2 table-cell-collapsed-border-expected.png files in chromium-linux and chromium-win are different. The new result is reverse of the old result: the actual result in chromium-win build is expected result in chromium-linux, and the actual result in chromium-linux is the expected result in chromium-win. I guess it must be due to the difference between 2 qsort algorithms in handling equal items.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282373</commentid>
    <comment_count>51</comment_count>
    <who name="Andrew Wilson">atwilson</who>
    <bug_when>2010-09-21 09:56:34 -0700</bug_when>
    <thetext>OK, so I&apos;ll rebaseline the tests then. Thanks for verifying that they are correct.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282377</commentid>
    <comment_count>52</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-09-21 09:59:46 -0700</bug_when>
    <thetext>Ideally we don’t want test results that are different on different platforms because of qsort. Maybe we can change things around so the sort is stable?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282403</commentid>
    <comment_count>53</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2010-09-21 10:29:19 -0700</bug_when>
    <thetext>(In reply to comment #52)
&gt; Ideally we don’t want test results that are different on different platforms because of qsort. Maybe we can change things around so the sort is stable?

2 ways I can see:

1. use stable_sort instead of qsort to avoid changing the order of 2 equal items
2. make compare function never return 0

Seems 2) is very hard to be done gracefully. Also in most cases there are not too many collapsed border styles to sort. So probably 1) is acceptable?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282873</commentid>
    <comment_count>54</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-09-22 03:16:41 -0700</bug_when>
    <thetext>*** Bug 13147 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282945</commentid>
    <comment_count>55</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-09-22 08:20:22 -0700</bug_when>
    <thetext>(In reply to comment #53)
&gt; 2 ways I can see:
&gt; 
&gt; 1. use stable_sort instead of qsort to avoid changing the order of 2 equal items
&gt; 2. make compare function never return 0
&gt; 
&gt; Seems 2) is very hard to be done gracefully. Also in most cases there are not too many collapsed border styles to sort. So probably 1) is acceptable?

I’m not sure what order the borders are in beforehand. It seems fine to use stable_sort instead of qsort if the order beforehand is something well defined.

In other words, what is the ordering we want to apply to otherwise equal border styles? Some sort of document order?

I guess this bug may not be the right place to discuss this, but it would be nice to get this tidy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>283379</commentid>
    <comment_count>56</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2010-09-22 17:11:55 -0700</bug_when>
    <thetext>(In reply to comment #55)
&gt; (In reply to comment #53)
&gt; &gt; 2 ways I can see:
&gt; &gt; 
&gt; &gt; 1. use stable_sort instead of qsort to avoid changing the order of 2 equal items
&gt; &gt; 2. make compare function never return 0
&gt; &gt; 
&gt; &gt; Seems 2) is very hard to be done gracefully. Also in most cases there are not too many collapsed border styles to sort. So probably 1) is acceptable?
&gt; 
&gt; I’m not sure what order the borders are in beforehand. It seems fine to use stable_sort instead of qsort if the order beforehand is something well defined.
&gt; 
&gt; In other words, what is the ordering we want to apply to otherwise equal border styles? Some sort of document order?
&gt; 

Seems the pre-sort order is:

１) order of children nodes
2) for each child node: left border, right, top and then bottom</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>325489</commentid>
    <comment_count>57</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2010-12-22 07:54:25 -0800</bug_when>
    <thetext>try the test case</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>325629</commentid>
    <comment_count>58</comment_count>
      <attachid>68135</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-12-22 12:23:55 -0800</bug_when>
    <thetext>Comment on attachment 68135
test case (tab removed)

Rejecting attachment 68135 from commit-queue.

Failed to run &quot;[&apos;./Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=cr-jail-3&apos;, &apos;build-and-test&apos;, &apos;--no-clean&apos;, &apos;--no-update&apos;, &apos;--test&apos;, &apos;--non-interactive&apos;]&quot; exit_code: 2
Last 500 characters of output:
sts/websocket/tests/workers ......
http/tests/workers .....
http/tests/xhtmlmp .
http/tests/xmlhttprequest ............................................................................................................................................................................
http/tests/xmlhttprequest/web-apps ...............
http/tests/xmlhttprequest/workers .........
635.73s total testing time

22228 test cases (99%) succeeded
1 test case (&lt;1%) was new
13 test cases (&lt;1%) had stderr output

Full output: http://queues.webkit.org/results/7325106</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>325663</commentid>
    <comment_count>59</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-12-22 13:36:41 -0800</bug_when>
    <thetext>The commit-queue should give you a better message here, but your patch is missing expectation files for your new tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>325664</commentid>
    <comment_count>60</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-12-22 13:37:42 -0800</bug_when>
    <thetext>This test shoudl be dump as text.

Are you sure this is a reduced test case?  it looks like it might be way bigger than necessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>325682</commentid>
    <comment_count>61</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2010-12-22 13:58:37 -0800</bug_when>
    <thetext>(In reply to comment #60)
&gt; This test shoudl be dump as text.
&gt; Are you sure this is a reduced test case?  it looks like it might be way bigger than necessary.

Probably bigger than necessary. I used it to reprodce a crash in qsort with the old compare function. I didn&apos;t see rvct&apos;s qsort code, and just blindly tried different combinations and got a crash. Also, to test the sorting algorithm, problably the longer the better? Anyway the code has been changed from using qsort to using std::sort. Not sure if this test case is still important to us. Maybe leaving it to this bug is good enough?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332220</commentid>
    <comment_count>62</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-01-11 03:11:05 -0800</bug_when>
    <thetext>I&apos;m confused as to the status of this bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57485</attachid>
            <date>2010-05-31 11:30:49 -0700</date>
            <delta_ts>2010-06-07 07:19:44 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>39966.patch</filename>
            <type>text/plain</type>
            <size>3047</size>
            <attacher name="Yong Li">yong.li.webkit</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZGUyZGQxYi4uZDNjOTIxYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMC0wNS0zMSAgWW9uZyBMaSAgPHlv
bGlAcmltLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk5NjYKKyAgICAg
ICAgVGhlIGNvbXBhcmUgZnVuY3Rpb24gcGFzc2VkIHRvIHFzb3J0KCkgc2hvdWxkIGJlIHN0YWJs
ZS4gT3RoZXJ3aXNlLCBxc29ydCgpCisgICAgICAgIGNhbiBjcmFzaC4KKworICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c3RhYmxlQ29t
cGFyZUJvcmRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6Y29tcGFyZUJvcmRlclN0eWxlc0ZvclFT
b3J0KToKKwogMjAxMC0wNS0yOCAgQWRhbSBUcmVhdCAgPGF0cmVhdEByaW0uY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IERhbmllbCBCYXRlcy4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNl
bGwuY3BwCmluZGV4IGJjYTI0MWEuLjA5MmQ2MjggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFi
bGVDZWxsLmNwcApAQCAtMzI5LDYgKzMyOSw0OSBAQCBzdGF0aWMgQ29sbGFwc2VkQm9yZGVyVmFs
dWUgY29tcGFyZUJvcmRlcnMoY29uc3QgQ29sbGFwc2VkQm9yZGVyVmFsdWUmIGJvcmRlcjEsCiAg
ICAgcmV0dXJuIGJvcmRlcjEucHJlY2VkZW5jZSgpID49IGJvcmRlcjIucHJlY2VkZW5jZSgpID8g
Ym9yZGVyMSA6IGJvcmRlcjI7CiB9CiAKK3N0YXRpYyBpbnQgc3RhYmxlQ29tcGFyZUJvcmRlcnMo
Y29uc3QgQ29sbGFwc2VkQm9yZGVyVmFsdWUmIGJvcmRlcjEsIGNvbnN0IENvbGxhcHNlZEJvcmRl
clZhbHVlJiBib3JkZXIyKQoreworICAgIC8vIFNhbml0eSBjaGVjayB0aGUgdmFsdWVzIHBhc3Nl
ZCBpbi4gIElmIGVpdGhlciBpcyBudWxsLCByZXR1cm4gdGhlIG90aGVyLgorICAgIGlmICghYm9y
ZGVyMi5leGlzdHMoKSkgeworICAgICAgICBpZiAoIWJvcmRlcjEuZXhpc3RzKCkpCisgICAgICAg
ICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIGlmICghYm9yZGVy
MS5leGlzdHMoKSkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgLy8gUnVsZSAjMSBhYm92ZS4K
KyAgICBpZiAoYm9yZGVyMS5zdHlsZSgpID09IEJISURERU4pIHsKKyAgICAgICAgaWYgKGJvcmRl
cjIuc3R5bGUoKSA9PSBCSElEREVOKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJl
dHVybiAtMTsKKyAgICB9CisgICAgaWYgKGJvcmRlcjIuc3R5bGUoKSA9PSBCSElEREVOKQorICAg
ICAgICByZXR1cm4gMTsKKyAgICAKKyAgICAvLyBSdWxlICMyIGFib3ZlLiAgQSBzdHlsZSBvZiAn
bm9uZScgaGFzIGxvd2VzdCBwcmlvcml0eSBhbmQgYWx3YXlzIGxvc2VzIHRvIGFueSBvdGhlciBi
b3JkZXIuCisgICAgaWYgKGJvcmRlcjIuc3R5bGUoKSA9PSBCTk9ORSkgeworICAgICAgICBpZiAo
Ym9yZGVyMS5zdHlsZSgpID09IEJOT05FKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAg
IHJldHVybiAxOworICAgIH0KKyAgICBpZiAoYm9yZGVyMS5zdHlsZSgpID09IEJOT05FKQorICAg
ICAgICByZXR1cm4gLTE7CisKKyAgICAvLyBUaGUgZmlyc3QgcGFydCBvZiBydWxlICMzIGFib3Zl
LiBXaWRlciBib3JkZXJzIHdpbi4KKyAgICBpZiAoYm9yZGVyMS53aWR0aCgpICE9IGJvcmRlcjIu
d2lkdGgoKSkKKyAgICAgICAgcmV0dXJuIGJvcmRlcjEud2lkdGgoKSA8IGJvcmRlcjIud2lkdGgo
KSA/IC0xIDogMTsKKyAgICAKKyAgICAvLyBUaGUgYm9yZGVycyBoYXZlIGVxdWFsIHdpZHRoLiAg
U29ydCBieSBib3JkZXIgc3R5bGUuCisgICAgaWYgKGJvcmRlcjEuc3R5bGUoKSAhPSBib3JkZXIy
LnN0eWxlKCkpCisgICAgICAgIHJldHVybiBib3JkZXIxLnN0eWxlKCkgPCBib3JkZXIyLnN0eWxl
KCkgPyAtMSA6IDE7CisgICAgCisgICAgLy8gVGhlIGJvcmRlciBoYXZlIHRoZSBzYW1lIHdpZHRo
IGFuZCBzdHlsZS4gIFJlbHkgb24gcHJlY2VkZW5jZSAoY2VsbCBvdmVyIHJvdyBvdmVyIHJvdyBn
cm91cCwgZXRjLikKKyAgICBpZiAoYm9yZGVyMS5wcmVjZWRlbmNlKCkgPT0gYm9yZGVyMi5wcmVj
ZWRlbmNlKCkpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBib3JkZXIxLnByZWNlZGVu
Y2UoKSA8IGJvcmRlcjIucHJlY2VkZW5jZSgpID8gLTEgOiAxOworfQorCiBDb2xsYXBzZWRCb3Jk
ZXJWYWx1ZSBSZW5kZXJUYWJsZUNlbGw6OmNvbGxhcHNlZExlZnRCb3JkZXIoYm9vbCBydGwpIGNv
bnN0CiB7CiAgICAgUmVuZGVyVGFibGUqIHRhYmxlRWx0ID0gdGFibGUoKTsKQEAgLTc3MSwxMCAr
ODE0LDcgQEAgc3RhdGljIGludCBjb21wYXJlQm9yZGVyU3R5bGVzRm9yUVNvcnQoY29uc3Qgdm9p
ZCogcGEsIGNvbnN0IHZvaWQqIHBiKQogICAgIGNvbnN0IENvbGxhcHNlZEJvcmRlclZhbHVlKiBi
ID0gc3RhdGljX2Nhc3Q8Y29uc3QgQ29sbGFwc2VkQm9yZGVyVmFsdWUqPihwYik7CiAgICAgaWYg
KCphID09ICpiKQogICAgICAgICByZXR1cm4gMDsKLSAgICBDb2xsYXBzZWRCb3JkZXJWYWx1ZSBi
b3JkZXJXaXRoSGlnaGVyUHJlY2VkZW5jZSA9IGNvbXBhcmVCb3JkZXJzKCphLCAqYik7Ci0gICAg
aWYgKCphID09IGJvcmRlcldpdGhIaWdoZXJQcmVjZWRlbmNlKQotICAgICAgICByZXR1cm4gMTsK
LSAgICByZXR1cm4gLTE7CisgICAgcmV0dXJuIHN0YWJsZUNvbXBhcmVCb3JkZXJzKCphLCAqYik7
CiB9CiAKIHZvaWQgUmVuZGVyVGFibGVDZWxsOjpzb3J0Qm9yZGVyU3R5bGVzKENvbGxhcHNlZEJv
cmRlclN0eWxlcyYgYm9yZGVyU3R5bGVzKQo=
</data>
<flag name="review"
          id="42078"
          type_id="1"
          status="-"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>57990</attachid>
            <date>2010-06-06 19:50:55 -0700</date>
            <delta_ts>2010-06-07 07:19:07 -0700</delta_ts>
            <desc>the test case</desc>
            <filename>sort-collapsed-border-styles.html</filename>
            <type>text/html</type>
            <size>1984</size>
            <attacher name="Yong Li">yong.li.webkit</attacher>
            
              <data encoding="base64">PGh0bWw+CjxoZWFkPgoJPHRpdGxlPlNvcnQgQ29sbGFwc2VkIEJvcmRlciBTdHlsZXM8L3RpdGxl
Pgo8L2hlYWQ+Cgo8Ym9keT4KCjxwPklmIGl0IGRvZXNuJ3QgY3Jhc2gsIHRoZSB0ZXN0IGhhcyBw
YXNzZWQ8L3A+Cgo8dGFibGUgYm9yZGVyPSIwIiBzdHlsZT0iYm9yZGVyLWNvbGxhcHNlOiBjb2xs
YXBzZSIgYmdjb2xvcj0iI0VFRUVFRSI+CiAgICA8dHI+CiAgICAgICAgPHRkIGJvcmRlcmNvbG9y
PSIjMTExMTExIiBib3JkZXI9IjEiIHN0eWxlPSJib3JkZXItc3R5bGU6IGhpZGRlbiI+dGVzdDwv
dGQ+CiAgICAgICAgPHRkIGJvcmRlcmNvbG9yPSIjMTExMTExIiBib3JkZXI9IjMiIHN0eWxlPSJi
b3JkZXItc3R5bGU6IHNvbGlkIj50ZXN0PC90ZD4KICAgICAgICA8dGQgYm9yZGVyY29sb3I9IiMx
MTExMTEiIGJvcmRlcj0iMSIgc3R5bGU9ImJvcmRlci1zdHlsZTogbm9uZSI+dGVzdDwvdGQ+CiAg
ICAgICAgPHRkIGJvcmRlcmNvbG9yPSIjMjIyMjIyIiBib3JkZXI9IjEiIHN0eWxlPSJib3JkZXIt
c3R5bGU6IGhpZGRlbiI+dGVzdDwvdGQ+CiAgICAgICAgPHRkIGJvcmRlcmNvbG9yPSIjMjIyMjIy
IiBib3JkZXI9IjMiIHN0eWxlPSJib3JkZXItc3R5bGU6IHNvbGlkIj50ZXN0PC90ZD4KICAgICAg
ICA8dGQgYm9yZGVyY29sb3I9IiMyMjIyMjIiIGJvcmRlcj0iMiIgc3R5bGU9ImJvcmRlci1zdHls
ZTogbm9uZSI+dGVzdDwvdGQ+CiAgICAgICAgPHRkIGJvcmRlcmNvbG9yPSIjMzMzMzMzIiBib3Jk
ZXI9IjEiIHN0eWxlPSJib3JkZXItc3R5bGU6IGhpZGRlbiI+dGVzdDwvdGQ+CiAgICAgICAgPHRk
IGJvcmRlcmNvbG9yPSIjMzMzMzMzIiBib3JkZXI9IjMiIHN0eWxlPSJib3JkZXItc3R5bGU6IHNv
bGlkIj50ZXN0PC90ZD4KICAgICAgICA8dGQgYm9yZGVyY29sb3I9IiMzMzMzMzMiIGJvcmRlcj0i
MiIgc3R5bGU9ImJvcmRlci1zdHlsZTogbm9uZSI+dGVzdDwvdGQ+CiAgICAgICAgPHRkIGJvcmRl
cmNvbG9yPSIjNDQ0NDQ0IiBib3JkZXI9IjEiIHN0eWxlPSJib3JkZXItc3R5bGU6IGhpZGRlbiI+
dGVzdDwvdGQ+CiAgICAgICAgPHRkIGJvcmRlcmNvbG9yPSIjNDQ0NDQ0IiBib3JkZXI9IjMiIHN0
eWxlPSJib3JkZXItc3R5bGU6IHNvbGlkIj50ZXN0PC90ZD4KICAgICAgICA8dGQgYm9yZGVyY29s
b3I9IiM0NDQ0NDQiIGJvcmRlcj0iMiIgc3R5bGU9ImJvcmRlci1zdHlsZTogbm9uZSI+dGVzdDwv
dGQ+CiAgICAgICAgPHRkIGJvcmRlcmNvbG9yPSIjNTU1NTU1IiBib3JkZXI9IjEiIHN0eWxlPSJi
b3JkZXItc3R5bGU6IGhpZGRlbiI+dGVzdDwvdGQ+CiAgICAgICAgPHRkIGJvcmRlcmNvbG9yPSIj
NTU1NTU1IiBib3JkZXI9IjMiIHN0eWxlPSJib3JkZXItc3R5bGU6IHNvbGlkIj50ZXN0PC90ZD4K
ICAgICAgICA8dGQgYm9yZGVyY29sb3I9IiM1NTU1NTUiIGJvcmRlcj0iMiIgc3R5bGU9ImJvcmRl
ci1zdHlsZTogbm9uZSI+dGVzdDwvdGQ+CiAgICAgICAgPHRkIGJvcmRlcmNvbG9yPSIjNjY2NjY2
IiBib3JkZXI9IjEiIHN0eWxlPSJib3JkZXItc3R5bGU6IGhpZGRlbiI+dGVzdDwvdGQ+CiAgICAg
ICAgPHRkIGJvcmRlcmNvbG9yPSIjNjY2NjY2IiBib3JkZXI9IjMiIHN0eWxlPSJib3JkZXItc3R5
bGU6IHNvbGlkIj50ZXN0PC90ZD4KICAgICAgICA8dGQgYm9yZGVyY29sb3I9IiM2NjY2NjYiIGJv
cmRlcj0iMiIgc3R5bGU9ImJvcmRlci1zdHlsZTogbm9uZSI+dGVzdDwvdGQ+CiAgICAgICAgPHRk
IGJvcmRlcmNvbG9yPSIjNzc3Nzc3IiBib3JkZXI9IjEiIHN0eWxlPSJib3JkZXItc3R5bGU6IGhp
ZGRlbiI+dGVzdDwvdGQ+CiAgICAgICAgPHRkIGJvcmRlcmNvbG9yPSIjNzc3Nzc3IiBib3JkZXI9
IjMiIHN0eWxlPSJib3JkZXItc3R5bGU6IHNvbGlkIj50ZXN0PC90ZD4KICAgICAgICA8dGQgYm9y
ZGVyY29sb3I9IiM3Nzc3NzciIGJvcmRlcj0iMiIgc3R5bGU9ImJvcmRlci1zdHlsZTogbm9uZSI+
dGVzdDwvdGQ+CiAgICA8L3RyPgo8L3RhYmxlPgoKPC9ib2R5Pgo8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58026</attachid>
            <date>2010-06-07 07:19:07 -0700</date>
            <delta_ts>2010-09-20 13:05:57 -0700</delta_ts>
            <desc>Test case</desc>
            <filename>39966test.patch</filename>
            <type>text/plain</type>
            <size>2771</size>
            <attacher name="Yong Li">yong.li.webkit</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBjZTFhMTFlLi5jMzJlZTk3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTAtMDYt
MDcgIFlvbmcgTGkgIDx5b2xpQHJpbS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTM5OTY2CisgICAgICAgIEFkZCB0ZXN0IGNhc2UgdGhhdCByZXByb2R1Y2VzIGFybWNjIHFz
b3J0KCkgY3Jhc2guCisKKyAgICAgICAgKiB0YWJsZXMvc29ydC1jb2xsYXBzZWQtYm9yZGVyLXN0
eWxlcy5odG1sOiBBZGRlZC4KKwogMjAxMC0wNS0yMCAgTWFydGluIFJvYmluc29uICA8bXJvYmlu
c29uQGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZC4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3RhYmxlcy9zb3J0LWNvbGxhcHNlZC1ib3JkZXItc3R5bGVzLmh0bWwgYi9MYXlvdXRU
ZXN0cy90YWJsZXMvc29ydC1jb2xsYXBzZWQtYm9yZGVyLXN0eWxlcy5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFkNzI0NGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy90YWJsZXMvc29ydC1jb2xsYXBzZWQtYm9yZGVyLXN0eWxlcy5odG1sCkBAIC0wLDAg
KzEsMzcgQEAKKzxodG1sPgorPGhlYWQ+CisJPHRpdGxlPlNvcnQgQ29sbGFwc2VkIEJvcmRlciBT
dHlsZXM8L3RpdGxlPgorPC9oZWFkPgorCis8Ym9keT4KKworPHA+SWYgaXQgZG9lc24ndCBjcmFz
aCwgdGhlIHRlc3QgaGFzIHBhc3NlZDwvcD4KKworPHRhYmxlIGJvcmRlcj0iMCIgc3R5bGU9ImJv
cmRlci1jb2xsYXBzZTogY29sbGFwc2UiIGJnY29sb3I9IiNFRUVFRUUiPgorICAgIDx0cj4KKyAg
ICAgICAgPHRkIGJvcmRlcmNvbG9yPSIjMTExMTExIiBib3JkZXI9IjEiIHN0eWxlPSJib3JkZXIt
c3R5bGU6IGhpZGRlbiI+dGVzdDwvdGQ+CisgICAgICAgIDx0ZCBib3JkZXJjb2xvcj0iIzExMTEx
MSIgYm9yZGVyPSIzIiBzdHlsZT0iYm9yZGVyLXN0eWxlOiBzb2xpZCI+dGVzdDwvdGQ+CisgICAg
ICAgIDx0ZCBib3JkZXJjb2xvcj0iIzExMTExMSIgYm9yZGVyPSIxIiBzdHlsZT0iYm9yZGVyLXN0
eWxlOiBub25lIj50ZXN0PC90ZD4KKyAgICAgICAgPHRkIGJvcmRlcmNvbG9yPSIjMjIyMjIyIiBi
b3JkZXI9IjEiIHN0eWxlPSJib3JkZXItc3R5bGU6IGhpZGRlbiI+dGVzdDwvdGQ+CisgICAgICAg
IDx0ZCBib3JkZXJjb2xvcj0iIzIyMjIyMiIgYm9yZGVyPSIzIiBzdHlsZT0iYm9yZGVyLXN0eWxl
OiBzb2xpZCI+dGVzdDwvdGQ+CisgICAgICAgIDx0ZCBib3JkZXJjb2xvcj0iIzIyMjIyMiIgYm9y
ZGVyPSIyIiBzdHlsZT0iYm9yZGVyLXN0eWxlOiBub25lIj50ZXN0PC90ZD4KKyAgICAgICAgPHRk
IGJvcmRlcmNvbG9yPSIjMzMzMzMzIiBib3JkZXI9IjEiIHN0eWxlPSJib3JkZXItc3R5bGU6IGhp
ZGRlbiI+dGVzdDwvdGQ+CisgICAgICAgIDx0ZCBib3JkZXJjb2xvcj0iIzMzMzMzMyIgYm9yZGVy
PSIzIiBzdHlsZT0iYm9yZGVyLXN0eWxlOiBzb2xpZCI+dGVzdDwvdGQ+CisgICAgICAgIDx0ZCBi
b3JkZXJjb2xvcj0iIzMzMzMzMyIgYm9yZGVyPSIyIiBzdHlsZT0iYm9yZGVyLXN0eWxlOiBub25l
Ij50ZXN0PC90ZD4KKyAgICAgICAgPHRkIGJvcmRlcmNvbG9yPSIjNDQ0NDQ0IiBib3JkZXI9IjEi
IHN0eWxlPSJib3JkZXItc3R5bGU6IGhpZGRlbiI+dGVzdDwvdGQ+CisgICAgICAgIDx0ZCBib3Jk
ZXJjb2xvcj0iIzQ0NDQ0NCIgYm9yZGVyPSIzIiBzdHlsZT0iYm9yZGVyLXN0eWxlOiBzb2xpZCI+
dGVzdDwvdGQ+CisgICAgICAgIDx0ZCBib3JkZXJjb2xvcj0iIzQ0NDQ0NCIgYm9yZGVyPSIyIiBz
dHlsZT0iYm9yZGVyLXN0eWxlOiBub25lIj50ZXN0PC90ZD4KKyAgICAgICAgPHRkIGJvcmRlcmNv
bG9yPSIjNTU1NTU1IiBib3JkZXI9IjEiIHN0eWxlPSJib3JkZXItc3R5bGU6IGhpZGRlbiI+dGVz
dDwvdGQ+CisgICAgICAgIDx0ZCBib3JkZXJjb2xvcj0iIzU1NTU1NSIgYm9yZGVyPSIzIiBzdHls
ZT0iYm9yZGVyLXN0eWxlOiBzb2xpZCI+dGVzdDwvdGQ+CisgICAgICAgIDx0ZCBib3JkZXJjb2xv
cj0iIzU1NTU1NSIgYm9yZGVyPSIyIiBzdHlsZT0iYm9yZGVyLXN0eWxlOiBub25lIj50ZXN0PC90
ZD4KKyAgICAgICAgPHRkIGJvcmRlcmNvbG9yPSIjNjY2NjY2IiBib3JkZXI9IjEiIHN0eWxlPSJi
b3JkZXItc3R5bGU6IGhpZGRlbiI+dGVzdDwvdGQ+CisgICAgICAgIDx0ZCBib3JkZXJjb2xvcj0i
IzY2NjY2NiIgYm9yZGVyPSIzIiBzdHlsZT0iYm9yZGVyLXN0eWxlOiBzb2xpZCI+dGVzdDwvdGQ+
CisgICAgICAgIDx0ZCBib3JkZXJjb2xvcj0iIzY2NjY2NiIgYm9yZGVyPSIyIiBzdHlsZT0iYm9y
ZGVyLXN0eWxlOiBub25lIj50ZXN0PC90ZD4KKyAgICAgICAgPHRkIGJvcmRlcmNvbG9yPSIjNzc3
Nzc3IiBib3JkZXI9IjEiIHN0eWxlPSJib3JkZXItc3R5bGU6IGhpZGRlbiI+dGVzdDwvdGQ+Cisg
ICAgICAgIDx0ZCBib3JkZXJjb2xvcj0iIzc3Nzc3NyIgYm9yZGVyPSIzIiBzdHlsZT0iYm9yZGVy
LXN0eWxlOiBzb2xpZCI+dGVzdDwvdGQ+CisgICAgICAgIDx0ZCBib3JkZXJjb2xvcj0iIzc3Nzc3
NyIgYm9yZGVyPSIyIiBzdHlsZT0iYm9yZGVyLXN0eWxlOiBub25lIj50ZXN0PC90ZD4KKyAgICA8
L3RyPgorPC90YWJsZT4KKworPC9ib2R5PgorPC9odG1sPgo=
</data>
<flag name="review"
          id="42821"
          type_id="1"
          status="+"
          setter="ap"
    />
    <flag name="commit-queue"
          id="57565"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58027</attachid>
            <date>2010-06-07 07:19:44 -0700</date>
            <delta_ts>2010-06-07 08:33:57 -0700</delta_ts>
            <desc>the patch that fixes the problem</desc>
            <filename>39966.patch</filename>
            <type>text/plain</type>
            <size>3163</size>
            <attacher name="Yong Li">yong.li.webkit</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MTc3MDgyNC4uZWQyYTAxMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMC0wNS0zMSAgWW9uZyBMaSAgPHlv
bGlAcmltLmNvbT4KKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5OTY2CisgICAgICAg
IFRoZSBjb21wYXJlIGZ1bmN0aW9uIHBhc3NlZCB0byBxc29ydCgpIHNob3VsZCBiZSBzdGFibGUu
IE90aGVyd2lzZSwgcXNvcnQoKQorICAgICAgICBjYW4gY3Jhc2guCisKKyAgICAgICAgTmV3IHRl
c3QgY2FzZSBhZGRlZDogTGF5b3V0VGVzdHMvdGFibGVzL3NvcnQtY29sbGFwc2VkLWJvcmRlci1z
dHlsZXMuaHRtbAorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpzdGFibGVDb21wYXJlQm9yZGVycyk6CisgICAgICAgIChXZWJDb3Jl
Ojpjb21wYXJlQm9yZGVyU3R5bGVzRm9yUVNvcnQpOgorCiAyMDEwLTA1LTI2ICBZb25nIExpICA8
eW9saUByaW0uY29tPgogCiAgICAgICAgIFRlc3QgY2FzZXMgY3JlYXRlZCBieTogUm9iaW4gQ2Fv
IDxyb2Jpbi5jYW9AdG9yY2htb2JpbGUuY29tLmNuPgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxl
Q2VsbC5jcHAKaW5kZXggY2I1MWYxMy4uM2U5MGUwNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
YWJsZUNlbGwuY3BwCkBAIC0zMjUsNiArMzI1LDQ5IEBAIHN0YXRpYyBDb2xsYXBzZWRCb3JkZXJW
YWx1ZSBjb21wYXJlQm9yZGVycyhjb25zdCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSYgYm9yZGVyMSwK
ICAgICByZXR1cm4gYm9yZGVyMS5wcmVjZWRlbmNlKCkgPj0gYm9yZGVyMi5wcmVjZWRlbmNlKCkg
PyBib3JkZXIxIDogYm9yZGVyMjsKIH0KIAorc3RhdGljIGludCBzdGFibGVDb21wYXJlQm9yZGVy
cyhjb25zdCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSYgYm9yZGVyMSwgY29uc3QgQ29sbGFwc2VkQm9y
ZGVyVmFsdWUmIGJvcmRlcjIpCit7CisgICAgLy8gU2FuaXR5IGNoZWNrIHRoZSB2YWx1ZXMgcGFz
c2VkIGluLiAgSWYgZWl0aGVyIGlzIG51bGwsIHJldHVybiB0aGUgb3RoZXIuCisgICAgaWYgKCFi
b3JkZXIyLmV4aXN0cygpKSB7CisgICAgICAgIGlmICghYm9yZGVyMS5leGlzdHMoKSkKKyAgICAg
ICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgaWYgKCFib3Jk
ZXIxLmV4aXN0cygpKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICAvLyBSdWxlICMxIGFib3Zl
LgorICAgIGlmIChib3JkZXIxLnN0eWxlKCkgPT0gQkhJRERFTikgeworICAgICAgICBpZiAoYm9y
ZGVyMi5zdHlsZSgpID09IEJISURERU4pCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAg
cmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAoYm9yZGVyMi5zdHlsZSgpID09IEJISURERU4pCisg
ICAgICAgIHJldHVybiAxOworICAgIAorICAgIC8vIFJ1bGUgIzIgYWJvdmUuICBBIHN0eWxlIG9m
ICdub25lJyBoYXMgbG93ZXN0IHByaW9yaXR5IGFuZCBhbHdheXMgbG9zZXMgdG8gYW55IG90aGVy
IGJvcmRlci4KKyAgICBpZiAoYm9yZGVyMi5zdHlsZSgpID09IEJOT05FKSB7CisgICAgICAgIGlm
IChib3JkZXIxLnN0eWxlKCkgPT0gQk5PTkUpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAg
ICAgcmV0dXJuIDE7CisgICAgfQorICAgIGlmIChib3JkZXIxLnN0eWxlKCkgPT0gQk5PTkUpCisg
ICAgICAgIHJldHVybiAtMTsKKworICAgIC8vIFRoZSBmaXJzdCBwYXJ0IG9mIHJ1bGUgIzMgYWJv
dmUuIFdpZGVyIGJvcmRlcnMgd2luLgorICAgIGlmIChib3JkZXIxLndpZHRoKCkgIT0gYm9yZGVy
Mi53aWR0aCgpKQorICAgICAgICByZXR1cm4gYm9yZGVyMS53aWR0aCgpIDwgYm9yZGVyMi53aWR0
aCgpID8gLTEgOiAxOworICAgIAorICAgIC8vIFRoZSBib3JkZXJzIGhhdmUgZXF1YWwgd2lkdGgu
ICBTb3J0IGJ5IGJvcmRlciBzdHlsZS4KKyAgICBpZiAoYm9yZGVyMS5zdHlsZSgpICE9IGJvcmRl
cjIuc3R5bGUoKSkKKyAgICAgICAgcmV0dXJuIGJvcmRlcjEuc3R5bGUoKSA8IGJvcmRlcjIuc3R5
bGUoKSA/IC0xIDogMTsKKyAgICAKKyAgICAvLyBUaGUgYm9yZGVyIGhhdmUgdGhlIHNhbWUgd2lk
dGggYW5kIHN0eWxlLiAgUmVseSBvbiBwcmVjZWRlbmNlIChjZWxsIG92ZXIgcm93IG92ZXIgcm93
IGdyb3VwLCBldGMuKQorICAgIGlmIChib3JkZXIxLnByZWNlZGVuY2UoKSA9PSBib3JkZXIyLnBy
ZWNlZGVuY2UoKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIGJvcmRlcjEucHJlY2Vk
ZW5jZSgpIDwgYm9yZGVyMi5wcmVjZWRlbmNlKCkgPyAtMSA6IDE7Cit9CisKIENvbGxhcHNlZEJv
cmRlclZhbHVlIFJlbmRlclRhYmxlQ2VsbDo6Y29sbGFwc2VkTGVmdEJvcmRlcihib29sIHJ0bCkg
Y29uc3QKIHsKICAgICBSZW5kZXJUYWJsZSogdGFibGVFbHQgPSB0YWJsZSgpOwpAQCAtNzY3LDEw
ICs4MTAsNyBAQCBzdGF0aWMgaW50IGNvbXBhcmVCb3JkZXJTdHlsZXNGb3JRU29ydChjb25zdCB2
b2lkKiBwYSwgY29uc3Qgdm9pZCogcGIpCiAgICAgY29uc3QgQ29sbGFwc2VkQm9yZGVyVmFsdWUq
IGIgPSBzdGF0aWNfY2FzdDxjb25zdCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSo+KHBiKTsKICAgICBp
ZiAoKmEgPT0gKmIpCiAgICAgICAgIHJldHVybiAwOwotICAgIENvbGxhcHNlZEJvcmRlclZhbHVl
IGJvcmRlcldpdGhIaWdoZXJQcmVjZWRlbmNlID0gY29tcGFyZUJvcmRlcnMoKmEsICpiKTsKLSAg
ICBpZiAoKmEgPT0gYm9yZGVyV2l0aEhpZ2hlclByZWNlZGVuY2UpCi0gICAgICAgIHJldHVybiAx
OwotICAgIHJldHVybiAtMTsKKyAgICByZXR1cm4gc3RhYmxlQ29tcGFyZUJvcmRlcnMoKmEsICpi
KTsKIH0KIAogdm9pZCBSZW5kZXJUYWJsZUNlbGw6OnNvcnRCb3JkZXJTdHlsZXMoQ29sbGFwc2Vk
Qm9yZGVyU3R5bGVzJiBib3JkZXJTdHlsZXMpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58041</attachid>
            <date>2010-06-07 10:03:56 -0700</date>
            <delta_ts>2010-06-07 10:04:34 -0700</delta_ts>
            <desc>Fixed bugs. use same function for both qsort and other cases</desc>
            <filename>39966.patch</filename>
            <type>text/plain</type>
            <size>20981</size>
            <attacher name="Yong Li">yong.li.webkit</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MTc3MDgyNC4uM2NjODhlYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxMC0wNi0wNyAgWW9uZyBMaSAgPHlv
bGlAcmltLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk5NjYKKyAgICAg
ICAgTWFrZSBjb21wYXJlQm9yZGVycygpIGEgY29uc2lzdGVudCBjb21wYXJlIGZ1bmN0aW9uIHdo
aWNoIGNhbiB1c2VkIGJlIGJ5IHFzb3J0KCkuCisgICAgICAgIEFsc28gZml4ZWQgYSBidWcgaW4g
cHJldmlvdXMgaW1wbGVtZW50YXRpb24gdGhhdCBpdCBkaWRuJ3QgY29udGludWUgY29tcGFyaW5n
IHdoZW4KKyAgICAgICAgYm90aCBib3JkZXJzIGhhdmUgTk9ORSBzdHlsZS4KKworICAgICAgICBO
ZXcgdGVzdCBjYXNlIGFkZGVkOiBMYXlvdXRUZXN0cy90YWJsZXMvc29ydC1jb2xsYXBzZWQtYm9y
ZGVyLXN0eWxlcy5odG1sCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbXBhcmVCb3JkZXJzKToKKyAgICAgICAgKFdlYkNvcmU6
OmNob29zZUJvcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZUNlbGw6OmNvbGxh
cHNlZExlZnRCb3JkZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVDZWxsOjpjb2xs
YXBzZWRSaWdodEJvcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZUNlbGw6OmNv
bGxhcHNlZFRvcEJvcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZUNlbGw6OmNv
bGxhcHNlZEJvdHRvbUJvcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpjb21wYXJlQm9yZGVyU3R5
bGVzRm9yUVNvcnQpOgorCiAyMDEwLTA1LTI2ICBZb25nIExpICA8eW9saUByaW0uY29tPgogCiAg
ICAgICAgIFRlc3QgY2FzZXMgY3JlYXRlZCBieTogUm9iaW4gQ2FvIDxyb2Jpbi5jYW9AdG9yY2ht
b2JpbGUuY29tLmNuPgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVD
ZWxsLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAKaW5kZXggY2I1
MWYxMy4uOWIzYjk1YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVD
ZWxsLmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCkBAIC0y
OTUsMzQgKzI5NSw1MiBAQCB2b2lkIFJlbmRlclRhYmxlQ2VsbDo6c3R5bGVEaWRDaGFuZ2UoU3R5
bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlKiBvbAogLy8gKDQpIElmIGJvcmRl
ciBzdHlsZXMgZGlmZmVyIG9ubHkgaW4gY29sb3IsIHRoZW4gYSBzdHlsZSBzZXQgb24gYSBjZWxs
IHdpbnMgb3ZlciBvbmUgb24gYSByb3csIAogLy8gd2hpY2ggd2lucyBvdmVyIGEgcm93IGdyb3Vw
LCBjb2x1bW4sIGNvbHVtbiBncm91cCBhbmQsIGxhc3RseSwgdGFibGUuIEl0IGlzIHVuZGVmaW5l
ZCB3aGljaCBjb2xvciAKIC8vIGlzIHVzZWQgd2hlbiB0d28gZWxlbWVudHMgb2YgdGhlIHNhbWUg
dHlwZSBkaXNhZ3JlZS4KLXN0YXRpYyBDb2xsYXBzZWRCb3JkZXJWYWx1ZSBjb21wYXJlQm9yZGVy
cyhjb25zdCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSYgYm9yZGVyMSwgY29uc3QgQ29sbGFwc2VkQm9y
ZGVyVmFsdWUmIGJvcmRlcjIpCitzdGF0aWMgaW50IGNob29zZUJvcmRlcihjb25zdCBDb2xsYXBz
ZWRCb3JkZXJWYWx1ZSYgYm9yZGVyMSwgY29uc3QgQ29sbGFwc2VkQm9yZGVyVmFsdWUmIGJvcmRl
cjIpCiB7CiAgICAgLy8gU2FuaXR5IGNoZWNrIHRoZSB2YWx1ZXMgcGFzc2VkIGluLiAgSWYgZWl0
aGVyIGlzIG51bGwsIHJldHVybiB0aGUgb3RoZXIuCi0gICAgaWYgKCFib3JkZXIyLmV4aXN0cygp
KQotICAgICAgICByZXR1cm4gYm9yZGVyMTsKKyAgICBpZiAoIWJvcmRlcjIuZXhpc3RzKCkpIHsK
KyAgICAgICAgaWYgKCFib3JkZXIxLmV4aXN0cygpKQorICAgICAgICAgICAgcmV0dXJuIDA7Cisg
ICAgICAgIHJldHVybiAxOworICAgIH0KICAgICBpZiAoIWJvcmRlcjEuZXhpc3RzKCkpCi0gICAg
ICAgIHJldHVybiBib3JkZXIyOworICAgICAgICByZXR1cm4gLTE7CiAKICAgICAvLyBSdWxlICMx
IGFib3ZlLgotICAgIGlmIChib3JkZXIxLnN0eWxlKCkgPT0gQkhJRERFTiB8fCBib3JkZXIyLnN0
eWxlKCkgPT0gQkhJRERFTikKLSAgICAgICAgcmV0dXJuIENvbGxhcHNlZEJvcmRlclZhbHVlKCk7
IC8vIE5vIGJvcmRlciBzaG91bGQgZXhpc3QgYXQgdGhpcyBsb2NhdGlvbi4KKyAgICBpZiAoYm9y
ZGVyMi5zdHlsZSgpID09IEJISURERU4pIHsKKyAgICAgICAgaWYgKGJvcmRlcjEuc3R5bGUoKSA9
PSBCSElEREVOKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiAtMTsKKyAg
ICB9CisgICAgaWYgKGJvcmRlcjEuc3R5bGUoKSA9PSBCSElEREVOKQorICAgICAgICByZXR1cm4g
MTsKICAgICAKICAgICAvLyBSdWxlICMyIGFib3ZlLiAgQSBzdHlsZSBvZiAnbm9uZScgaGFzIGxv
d2VzdCBwcmlvcml0eSBhbmQgYWx3YXlzIGxvc2VzIHRvIGFueSBvdGhlciBib3JkZXIuCi0gICAg
aWYgKGJvcmRlcjIuc3R5bGUoKSA9PSBCTk9ORSkKLSAgICAgICAgcmV0dXJuIGJvcmRlcjE7Cisg
ICAgaWYgKGJvcmRlcjIuc3R5bGUoKSA9PSBCTk9ORSkgeworICAgICAgICBpZiAoYm9yZGVyMS5z
dHlsZSgpICE9IEJOT05FKQorICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgfQogICAgIGlmIChi
b3JkZXIxLnN0eWxlKCkgPT0gQk5PTkUpCi0gICAgICAgIHJldHVybiBib3JkZXIyOworICAgICAg
ICByZXR1cm4gLTE7CiAKICAgICAvLyBUaGUgZmlyc3QgcGFydCBvZiBydWxlICMzIGFib3ZlLiBX
aWRlciBib3JkZXJzIHdpbi4KICAgICBpZiAoYm9yZGVyMS53aWR0aCgpICE9IGJvcmRlcjIud2lk
dGgoKSkKLSAgICAgICAgcmV0dXJuIGJvcmRlcjEud2lkdGgoKSA+IGJvcmRlcjIud2lkdGgoKSA/
IGJvcmRlcjEgOiBib3JkZXIyOworICAgICAgICByZXR1cm4gYm9yZGVyMS53aWR0aCgpIDwgYm9y
ZGVyMi53aWR0aCgpID8gLTEgOiAxOwogICAgIAogICAgIC8vIFRoZSBib3JkZXJzIGhhdmUgZXF1
YWwgd2lkdGguICBTb3J0IGJ5IGJvcmRlciBzdHlsZS4KICAgICBpZiAoYm9yZGVyMS5zdHlsZSgp
ICE9IGJvcmRlcjIuc3R5bGUoKSkKLSAgICAgICAgcmV0dXJuIGJvcmRlcjEuc3R5bGUoKSA+IGJv
cmRlcjIuc3R5bGUoKSA/IGJvcmRlcjEgOiBib3JkZXIyOworICAgICAgICByZXR1cm4gYm9yZGVy
MS5zdHlsZSgpIDwgYm9yZGVyMi5zdHlsZSgpID8gLTEgOiAxOwogICAgIAogICAgIC8vIFRoZSBi
b3JkZXIgaGF2ZSB0aGUgc2FtZSB3aWR0aCBhbmQgc3R5bGUuICBSZWx5IG9uIHByZWNlZGVuY2Ug
KGNlbGwgb3ZlciByb3cgb3ZlciByb3cgZ3JvdXAsIGV0Yy4pCi0gICAgcmV0dXJuIGJvcmRlcjEu
cHJlY2VkZW5jZSgpID49IGJvcmRlcjIucHJlY2VkZW5jZSgpID8gYm9yZGVyMSA6IGJvcmRlcjI7
CisgICAgaWYgKGJvcmRlcjEucHJlY2VkZW5jZSgpID09IGJvcmRlcjIucHJlY2VkZW5jZSgpKQor
ICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gYm9yZGVyMS5wcmVjZWRlbmNlKCkgPCBib3Jk
ZXIyLnByZWNlZGVuY2UoKSA/IC0xIDogMTsKK30KKworc3RhdGljIENvbGxhcHNlZEJvcmRlclZh
bHVlIGNob29zZUJvcmRlcihjb25zdCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSYgYm9yZGVyMSwgY29u
c3QgQ29sbGFwc2VkQm9yZGVyVmFsdWUmIGJvcmRlcjIpCit7CisgICAgY29uc3QgQ29sbGFwc2Vk
Qm9yZGVyVmFsdWUmIGJvcmRlciA9IGNvbXBhcmVCb3JkZXJzKGJvcmRlcjEsIGJvcmRlcjIpIDwg
MCA/IGJvcmRlcjIgOiBib3JkZXIxOworICAgIHJldHVybiBib3JkZXIuc3R5bGUoKSA9PSBCSElE
REVOID8gQ29sbGFwc2VkQm9yZGVyVmFsdWUoKSA6IGJvcmRlcjsKIH0KIAogQ29sbGFwc2VkQm9y
ZGVyVmFsdWUgUmVuZGVyVGFibGVDZWxsOjpjb2xsYXBzZWRMZWZ0Qm9yZGVyKGJvb2wgcnRsKSBj
b25zdApAQCAtMzQ2LDE3ICszNjQsMTcgQEAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgUmVuZGVyVGFi
bGVDZWxsOjpjb2xsYXBzZWRMZWZ0Qm9yZGVyKGJvb2wgcnRsKSBjb25zdAogICAgIFJlbmRlclRh
YmxlQ2VsbCogcHJldkNlbGwgPSBydGwgPyB0YWJsZUVsdC0+Y2VsbEFmdGVyKHRoaXMpIDogdGFi
bGVFbHQtPmNlbGxCZWZvcmUodGhpcyk7CiAgICAgaWYgKHByZXZDZWxsKSB7CiAgICAgICAgIENv
bGxhcHNlZEJvcmRlclZhbHVlIHByZXZDZWxsQm9yZGVyID0gQ29sbGFwc2VkQm9yZGVyVmFsdWUo
JnByZXZDZWxsLT5zdHlsZSgpLT5ib3JkZXJSaWdodCgpLCBwcmV2Q2VsbC0+c3R5bGUoKS0+dmlz
aXRlZERlcGVuZGVudENvbG9yKHJpZ2h0KSwgQkNFTEwpOwotICAgICAgICByZXN1bHQgPSBydGwg
PyBjb21wYXJlQm9yZGVycyhyZXN1bHQsIHByZXZDZWxsQm9yZGVyKSA6IGNvbXBhcmVCb3JkZXJz
KHByZXZDZWxsQm9yZGVyLCByZXN1bHQpOworICAgICAgICByZXN1bHQgPSBydGwgPyBjaG9vc2VC
b3JkZXIocmVzdWx0LCBwcmV2Q2VsbEJvcmRlcikgOiBjaG9vc2VCb3JkZXIocHJldkNlbGxCb3Jk
ZXIsIHJlc3VsdCk7CiAgICAgICAgIGlmICghcmVzdWx0LmV4aXN0cygpKQogICAgICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKICAgICB9IGVsc2UgaWYgKGxlZnRtb3N0Q29sdW1uKSB7CiAgICAgICAg
IC8vICgzKSBPdXIgcm93J3MgbGVmdCBib3JkZXIuCi0gICAgICAgIHJlc3VsdCA9IGNvbXBhcmVC
b3JkZXJzKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoJnBhcmVudCgpLT5zdHlsZSgpLT5i
b3JkZXJMZWZ0KCksIHBhcmVudCgpLT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IobGVm
dCksIEJST1cpKTsKKyAgICAgICAgcmVzdWx0ID0gY2hvb3NlQm9yZGVyKHJlc3VsdCwgQ29sbGFw
c2VkQm9yZGVyVmFsdWUoJnBhcmVudCgpLT5zdHlsZSgpLT5ib3JkZXJMZWZ0KCksIHBhcmVudCgp
LT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IobGVmdCksIEJST1cpKTsKICAgICAgICAg
aWYgKCFyZXN1bHQuZXhpc3RzKCkpCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAg
ICAKICAgICAgICAgLy8gKDQpIE91ciByb3cgZ3JvdXAncyBsZWZ0IGJvcmRlci4KLSAgICAgICAg
cmVzdWx0ID0gY29tcGFyZUJvcmRlcnMocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmc2Vj
dGlvbigpLT5zdHlsZSgpLT5ib3JkZXJMZWZ0KCksIHNlY3Rpb24oKS0+c3R5bGUoKS0+dmlzaXRl
ZERlcGVuZGVudENvbG9yKGxlZnQpLCBCUk9XR1JPVVApKTsKKyAgICAgICAgcmVzdWx0ID0gY2hv
b3NlQm9yZGVyKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoJnNlY3Rpb24oKS0+c3R5bGUo
KS0+Ym9yZGVyTGVmdCgpLCBzZWN0aW9uKCktPnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xv
cihsZWZ0KSwgQlJPV0dST1VQKSk7CiAgICAgICAgIGlmICghcmVzdWx0LmV4aXN0cygpKQogICAg
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CkBAIC0zNjYsMTEgKzM4NCwxMSBAQCBDb2xs
YXBzZWRCb3JkZXJWYWx1ZSBSZW5kZXJUYWJsZUNlbGw6OmNvbGxhcHNlZExlZnRCb3JkZXIoYm9v
bCBydGwpIGNvbnN0CiAgICAgYm9vbCBlbmRDb2xFZGdlOwogICAgIFJlbmRlclRhYmxlQ29sKiBj
b2xFbHQgPSB0YWJsZUVsdC0+Y29sRWxlbWVudChjb2woKSArIChydGwgPyBjb2xTcGFuKCkgLSAx
IDogMCksICZzdGFydENvbEVkZ2UsICZlbmRDb2xFZGdlKTsKICAgICBpZiAoY29sRWx0ICYmICgh
cnRsID8gc3RhcnRDb2xFZGdlIDogZW5kQ29sRWRnZSkpIHsKLSAgICAgICAgcmVzdWx0ID0gY29t
cGFyZUJvcmRlcnMocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmY29sRWx0LT5zdHlsZSgp
LT5ib3JkZXJMZWZ0KCksIGNvbEVsdC0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKGxl
ZnQpLCBCQ09MKSk7CisgICAgICAgIHJlc3VsdCA9IGNob29zZUJvcmRlcihyZXN1bHQsIENvbGxh
cHNlZEJvcmRlclZhbHVlKCZjb2xFbHQtPnN0eWxlKCktPmJvcmRlckxlZnQoKSwgY29sRWx0LT5z
dHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IobGVmdCksIEJDT0wpKTsKICAgICAgICAgaWYg
KCFyZXN1bHQuZXhpc3RzKCkpCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICBp
ZiAoY29sRWx0LT5wYXJlbnQoKS0+aXNUYWJsZUNvbCgpICYmICghcnRsID8gIWNvbEVsdC0+cHJl
dmlvdXNTaWJsaW5nKCkgOiAhY29sRWx0LT5uZXh0U2libGluZygpKSkgewotICAgICAgICAgICAg
cmVzdWx0ID0gY29tcGFyZUJvcmRlcnMocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmY29s
RWx0LT5wYXJlbnQoKS0+c3R5bGUoKS0+Ym9yZGVyTGVmdCgpLCBjb2xFbHQtPnBhcmVudCgpLT5z
dHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IobGVmdCksIEJDT0xHUk9VUCkpOworICAgICAg
ICAgICAgcmVzdWx0ID0gY2hvb3NlQm9yZGVyKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUo
JmNvbEVsdC0+cGFyZW50KCktPnN0eWxlKCktPmJvcmRlckxlZnQoKSwgY29sRWx0LT5wYXJlbnQo
KS0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKGxlZnQpLCBCQ09MR1JPVVApKTsKICAg
ICAgICAgICAgIGlmICghcmVzdWx0LmV4aXN0cygpKQogICAgICAgICAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAgICAgICAgIH0KQEAgLTM4MSwxMyArMzk5LDEzIEBAIENvbGxhcHNlZEJvcmRlclZh
bHVlIFJlbmRlclRhYmxlQ2VsbDo6Y29sbGFwc2VkTGVmdEJvcmRlcihib29sIHJ0bCkgY29uc3QK
ICAgICAgICAgY29sRWx0ID0gdGFibGVFbHQtPmNvbEVsZW1lbnQoY29sKCkgKyAocnRsID8gY29s
U3BhbigpIDogLTEpLCAmc3RhcnRDb2xFZGdlLCAmZW5kQ29sRWRnZSk7CiAgICAgICAgIGlmIChj
b2xFbHQgJiYgKCFydGwgPyBlbmRDb2xFZGdlIDogc3RhcnRDb2xFZGdlKSkgewogICAgICAgICAg
ICAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgcmlnaHRCb3JkZXIgPSBDb2xsYXBzZWRCb3JkZXJWYWx1
ZSgmY29sRWx0LT5zdHlsZSgpLT5ib3JkZXJSaWdodCgpLCBjb2xFbHQtPnN0eWxlKCktPnZpc2l0
ZWREZXBlbmRlbnRDb2xvcihyaWdodCksIEJDT0wpOwotICAgICAgICAgICAgcmVzdWx0ID0gcnRs
ID8gY29tcGFyZUJvcmRlcnMocmVzdWx0LCByaWdodEJvcmRlcikgOiBjb21wYXJlQm9yZGVycyhy
aWdodEJvcmRlciwgcmVzdWx0KTsKKyAgICAgICAgICAgIHJlc3VsdCA9IHJ0bCA/IGNob29zZUJv
cmRlcihyZXN1bHQsIHJpZ2h0Qm9yZGVyKSA6IGNob29zZUJvcmRlcihyaWdodEJvcmRlciwgcmVz
dWx0KTsKICAgICAgICAgICAgIGlmICghcmVzdWx0LmV4aXN0cygpKQogICAgICAgICAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICAvLyAoNykg
VGhlIHRhYmxlJ3MgbGVmdCBib3JkZXIuCi0gICAgICAgIHJlc3VsdCA9IGNvbXBhcmVCb3JkZXJz
KHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoJnRhYmxlRWx0LT5zdHlsZSgpLT5ib3JkZXJM
ZWZ0KCksIHRhYmxlRWx0LT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IobGVmdCksIEJU
QUJMRSkpOworICAgICAgICByZXN1bHQgPSBjaG9vc2VCb3JkZXIocmVzdWx0LCBDb2xsYXBzZWRC
b3JkZXJWYWx1ZSgmdGFibGVFbHQtPnN0eWxlKCktPmJvcmRlckxlZnQoKSwgdGFibGVFbHQtPnN0
eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihsZWZ0KSwgQlRBQkxFKSk7CiAgICAgICAgIGlm
ICghcmVzdWx0LmV4aXN0cygpKQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CkBA
IC00MTcsMTggKzQzNSwxOCBAQCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSBSZW5kZXJUYWJsZUNlbGw6
OmNvbGxhcHNlZFJpZ2h0Qm9yZGVyKGJvb2wgcnRsKSBjb25zdAogICAgICAgICBSZW5kZXJUYWJs
ZUNlbGwqIG5leHRDZWxsID0gcnRsID8gdGFibGVFbHQtPmNlbGxCZWZvcmUodGhpcykgOiB0YWJs
ZUVsdC0+Y2VsbEFmdGVyKHRoaXMpOwogICAgICAgICBpZiAobmV4dENlbGwgJiYgbmV4dENlbGwt
PnN0eWxlKCkpIHsKICAgICAgICAgICAgIENvbGxhcHNlZEJvcmRlclZhbHVlIGxlZnRCb3JkZXIg
PSBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmbmV4dENlbGwtPnN0eWxlKCktPmJvcmRlckxlZnQoKSwg
bmV4dENlbGwtPnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihsZWZ0KSwgQkNFTEwpOwot
ICAgICAgICAgICAgcmVzdWx0ID0gcnRsID8gY29tcGFyZUJvcmRlcnMobGVmdEJvcmRlciwgcmVz
dWx0KSA6IGNvbXBhcmVCb3JkZXJzKHJlc3VsdCwgbGVmdEJvcmRlcik7CisgICAgICAgICAgICBy
ZXN1bHQgPSBydGwgPyBjaG9vc2VCb3JkZXIobGVmdEJvcmRlciwgcmVzdWx0KSA6IGNob29zZUJv
cmRlcihyZXN1bHQsIGxlZnRCb3JkZXIpOwogICAgICAgICAgICAgaWYgKCFyZXN1bHQuZXhpc3Rz
KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogICAgIH0gZWxz
ZSB7CiAgICAgICAgIC8vICgzKSBPdXIgcm93J3MgcmlnaHQgYm9yZGVyLgotICAgICAgICByZXN1
bHQgPSBjb21wYXJlQm9yZGVycyhyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKCZwYXJlbnQo
KS0+c3R5bGUoKS0+Ym9yZGVyUmlnaHQoKSwgcGFyZW50KCktPnN0eWxlKCktPnZpc2l0ZWREZXBl
bmRlbnRDb2xvcihyaWdodCksIEJST1cpKTsKKyAgICAgICAgcmVzdWx0ID0gY2hvb3NlQm9yZGVy
KHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoJnBhcmVudCgpLT5zdHlsZSgpLT5ib3JkZXJS
aWdodCgpLCBwYXJlbnQoKS0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKHJpZ2h0KSwg
QlJPVykpOwogICAgICAgICBpZiAoIXJlc3VsdC5leGlzdHMoKSkKICAgICAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgICAgIAogICAgICAgICAvLyAoNCkgT3VyIHJvdyBncm91cCdzIHJpZ2h0
IGJvcmRlci4KLSAgICAgICAgcmVzdWx0ID0gY29tcGFyZUJvcmRlcnMocmVzdWx0LCBDb2xsYXBz
ZWRCb3JkZXJWYWx1ZSgmc2VjdGlvbigpLT5zdHlsZSgpLT5ib3JkZXJSaWdodCgpLCBzZWN0aW9u
KCktPnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihyaWdodCksIEJST1dHUk9VUCkpOwor
ICAgICAgICByZXN1bHQgPSBjaG9vc2VCb3JkZXIocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1
ZSgmc2VjdGlvbigpLT5zdHlsZSgpLT5ib3JkZXJSaWdodCgpLCBzZWN0aW9uKCktPnN0eWxlKCkt
PnZpc2l0ZWREZXBlbmRlbnRDb2xvcihyaWdodCksIEJST1dHUk9VUCkpOwogICAgICAgICBpZiAo
IXJlc3VsdC5leGlzdHMoKSkKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQpAQCAt
NDM4LDExICs0NTYsMTEgQEAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgUmVuZGVyVGFibGVDZWxsOjpj
b2xsYXBzZWRSaWdodEJvcmRlcihib29sIHJ0bCkgY29uc3QKICAgICBib29sIGVuZENvbEVkZ2U7
CiAgICAgUmVuZGVyVGFibGVDb2wqIGNvbEVsdCA9IHRhYmxlRWx0LT5jb2xFbGVtZW50KGNvbCgp
ICsgKHJ0bCA/IDAgOiBjb2xTcGFuKCkgLSAxKSwgJnN0YXJ0Q29sRWRnZSwgJmVuZENvbEVkZ2Up
OwogICAgIGlmIChjb2xFbHQgJiYgKCFydGwgPyBlbmRDb2xFZGdlIDogc3RhcnRDb2xFZGdlKSkg
ewotICAgICAgICByZXN1bHQgPSBjb21wYXJlQm9yZGVycyhyZXN1bHQsIENvbGxhcHNlZEJvcmRl
clZhbHVlKCZjb2xFbHQtPnN0eWxlKCktPmJvcmRlclJpZ2h0KCksIGNvbEVsdC0+c3R5bGUoKS0+
dmlzaXRlZERlcGVuZGVudENvbG9yKHJpZ2h0KSwgQkNPTCkpOworICAgICAgICByZXN1bHQgPSBj
aG9vc2VCb3JkZXIocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmY29sRWx0LT5zdHlsZSgp
LT5ib3JkZXJSaWdodCgpLCBjb2xFbHQtPnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihy
aWdodCksIEJDT0wpKTsKICAgICAgICAgaWYgKCFyZXN1bHQuZXhpc3RzKCkpCiAgICAgICAgICAg
ICByZXR1cm4gcmVzdWx0OwogICAgICAgICBpZiAoY29sRWx0LT5wYXJlbnQoKS0+aXNUYWJsZUNv
bCgpICYmICghcnRsID8gIWNvbEVsdC0+bmV4dFNpYmxpbmcoKSA6ICFjb2xFbHQtPnByZXZpb3Vz
U2libGluZygpKSkgewotICAgICAgICAgICAgcmVzdWx0ID0gY29tcGFyZUJvcmRlcnMocmVzdWx0
LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmY29sRWx0LT5wYXJlbnQoKS0+c3R5bGUoKS0+Ym9yZGVy
UmlnaHQoKSwgY29sRWx0LT5wYXJlbnQoKS0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9y
KHJpZ2h0KSwgQkNPTEdST1VQKSk7CisgICAgICAgICAgICByZXN1bHQgPSBjaG9vc2VCb3JkZXIo
cmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmY29sRWx0LT5wYXJlbnQoKS0+c3R5bGUoKS0+
Ym9yZGVyUmlnaHQoKSwgY29sRWx0LT5wYXJlbnQoKS0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVu
dENvbG9yKHJpZ2h0KSwgQkNPTEdST1VQKSk7CiAgICAgICAgICAgICBpZiAoIXJlc3VsdC5leGlz
dHMoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CkBAIC00NTMs
MTMgKzQ3MSwxMyBAQCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSBSZW5kZXJUYWJsZUNlbGw6OmNvbGxh
cHNlZFJpZ2h0Qm9yZGVyKGJvb2wgcnRsKSBjb25zdAogICAgICAgICBjb2xFbHQgPSB0YWJsZUVs
dC0+Y29sRWxlbWVudChjb2woKSArIChydGwgPyAtMSA6IGNvbFNwYW4oKSksICZzdGFydENvbEVk
Z2UsICZlbmRDb2xFZGdlKTsKICAgICAgICAgaWYgKGNvbEVsdCAmJiAoIXJ0bCA/IHN0YXJ0Q29s
RWRnZSA6IGVuZENvbEVkZ2UpKSB7CiAgICAgICAgICAgICBDb2xsYXBzZWRCb3JkZXJWYWx1ZSBs
ZWZ0Qm9yZGVyID0gQ29sbGFwc2VkQm9yZGVyVmFsdWUoJmNvbEVsdC0+c3R5bGUoKS0+Ym9yZGVy
TGVmdCgpLCBjb2xFbHQtPnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihsZWZ0KSwgQkNP
TCk7Ci0gICAgICAgICAgICByZXN1bHQgPSBydGwgPyBjb21wYXJlQm9yZGVycyhsZWZ0Qm9yZGVy
LCByZXN1bHQpIDogY29tcGFyZUJvcmRlcnMocmVzdWx0LCBsZWZ0Qm9yZGVyKTsKKyAgICAgICAg
ICAgIHJlc3VsdCA9IHJ0bCA/IGNob29zZUJvcmRlcihsZWZ0Qm9yZGVyLCByZXN1bHQpIDogY2hv
b3NlQm9yZGVyKHJlc3VsdCwgbGVmdEJvcmRlcik7CiAgICAgICAgICAgICBpZiAoIXJlc3VsdC5l
eGlzdHMoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CiAgICAg
fSBlbHNlIHsKICAgICAgICAgLy8gKDcpIFRoZSB0YWJsZSdzIHJpZ2h0IGJvcmRlci4KLSAgICAg
ICAgcmVzdWx0ID0gY29tcGFyZUJvcmRlcnMocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgm
dGFibGVFbHQtPnN0eWxlKCktPmJvcmRlclJpZ2h0KCksIHRhYmxlRWx0LT5zdHlsZSgpLT52aXNp
dGVkRGVwZW5kZW50Q29sb3IocmlnaHQpLCBCVEFCTEUpKTsKKyAgICAgICAgcmVzdWx0ID0gY2hv
b3NlQm9yZGVyKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoJnRhYmxlRWx0LT5zdHlsZSgp
LT5ib3JkZXJSaWdodCgpLCB0YWJsZUVsdC0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9y
KHJpZ2h0KSwgQlRBQkxFKSk7CiAgICAgICAgIGlmICghcmVzdWx0LmV4aXN0cygpKQogICAgICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CkBAIC00NzgsMTMgKzQ5NiwxMyBAQCBDb2xsYXBz
ZWRCb3JkZXJWYWx1ZSBSZW5kZXJUYWJsZUNlbGw6OmNvbGxhcHNlZFRvcEJvcmRlcigpIGNvbnN0
CiAgICAgUmVuZGVyVGFibGVDZWxsKiBwcmV2Q2VsbCA9IHRhYmxlKCktPmNlbGxBYm92ZSh0aGlz
KTsKICAgICBpZiAocHJldkNlbGwpIHsKICAgICAgICAgLy8gKDIpIEEgcHJldmlvdXMgY2VsbCdz
IGJvdHRvbSBib3JkZXIuCi0gICAgICAgIHJlc3VsdCA9IGNvbXBhcmVCb3JkZXJzKENvbGxhcHNl
ZEJvcmRlclZhbHVlKCZwcmV2Q2VsbC0+c3R5bGUoKS0+Ym9yZGVyQm90dG9tKCksIHByZXZDZWxs
LT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoYm90dG9tKSwgQkNFTEwpLCByZXN1bHQp
OworICAgICAgICByZXN1bHQgPSBjaG9vc2VCb3JkZXIoQ29sbGFwc2VkQm9yZGVyVmFsdWUoJnBy
ZXZDZWxsLT5zdHlsZSgpLT5ib3JkZXJCb3R0b20oKSwgcHJldkNlbGwtPnN0eWxlKCktPnZpc2l0
ZWREZXBlbmRlbnRDb2xvcihib3R0b20pLCBCQ0VMTCksIHJlc3VsdCk7CiAgICAgICAgIGlmICgh
cmVzdWx0LmV4aXN0cygpKSAKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAg
IAogICAgIC8vICgzKSBPdXIgcm93J3MgdG9wIGJvcmRlci4KLSAgICByZXN1bHQgPSBjb21wYXJl
Qm9yZGVycyhyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKCZwYXJlbnQoKS0+c3R5bGUoKS0+
Ym9yZGVyVG9wKCksIHBhcmVudCgpLT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IodG9w
KSwgQlJPVykpOworICAgIHJlc3VsdCA9IGNob29zZUJvcmRlcihyZXN1bHQsIENvbGxhcHNlZEJv
cmRlclZhbHVlKCZwYXJlbnQoKS0+c3R5bGUoKS0+Ym9yZGVyVG9wKCksIHBhcmVudCgpLT5zdHls
ZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IodG9wKSwgQlJPVykpOwogICAgIGlmICghcmVzdWx0
LmV4aXN0cygpKQogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIApAQCAtNDk3LDcgKzUxNSw3
IEBAIENvbGxhcHNlZEJvcmRlclZhbHVlIFJlbmRlclRhYmxlQ2VsbDo6Y29sbGFwc2VkVG9wQm9y
ZGVyKCkgY29uc3QKICAgICAgICAgICAgIHByZXZSb3cgPSBwcmV2Q2VsbC0+c2VjdGlvbigpLT5s
YXN0Q2hpbGQoKTsKICAgICAKICAgICAgICAgaWYgKHByZXZSb3cpIHsKLSAgICAgICAgICAgIHJl
c3VsdCA9IGNvbXBhcmVCb3JkZXJzKENvbGxhcHNlZEJvcmRlclZhbHVlKCZwcmV2Um93LT5zdHls
ZSgpLT5ib3JkZXJCb3R0b20oKSwgcHJldlJvdy0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENv
bG9yKGJvdHRvbSksIEJST1cpLCByZXN1bHQpOworICAgICAgICAgICAgcmVzdWx0ID0gY2hvb3Nl
Qm9yZGVyKENvbGxhcHNlZEJvcmRlclZhbHVlKCZwcmV2Um93LT5zdHlsZSgpLT5ib3JkZXJCb3R0
b20oKSwgcHJldlJvdy0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKGJvdHRvbSksIEJS
T1cpLCByZXN1bHQpOwogICAgICAgICAgICAgaWYgKCFyZXN1bHQuZXhpc3RzKCkpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQpAQCAtNTA3LDE0ICs1MjUsMTQgQEAg
Q29sbGFwc2VkQm9yZGVyVmFsdWUgUmVuZGVyVGFibGVDZWxsOjpjb2xsYXBzZWRUb3BCb3JkZXIo
KSBjb25zdAogICAgIFJlbmRlclRhYmxlU2VjdGlvbiogY3VyclNlY3Rpb24gPSBzZWN0aW9uKCk7
CiAgICAgaWYgKCFyb3coKSkgewogICAgICAgICAvLyAoNSkgT3VyIHJvdyBncm91cCdzIHRvcCBi
b3JkZXIuCi0gICAgICAgIHJlc3VsdCA9IGNvbXBhcmVCb3JkZXJzKHJlc3VsdCwgQ29sbGFwc2Vk
Qm9yZGVyVmFsdWUoJmN1cnJTZWN0aW9uLT5zdHlsZSgpLT5ib3JkZXJUb3AoKSwgY3VyclNlY3Rp
b24tPnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcih0b3ApLCBCUk9XR1JPVVApKTsKKyAg
ICAgICAgcmVzdWx0ID0gY2hvb3NlQm9yZGVyKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUo
JmN1cnJTZWN0aW9uLT5zdHlsZSgpLT5ib3JkZXJUb3AoKSwgY3VyclNlY3Rpb24tPnN0eWxlKCkt
PnZpc2l0ZWREZXBlbmRlbnRDb2xvcih0b3ApLCBCUk9XR1JPVVApKTsKICAgICAgICAgaWYgKCFy
ZXN1bHQuZXhpc3RzKCkpCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAKICAg
ICAgICAgLy8gKDYpIFByZXZpb3VzIHJvdyBncm91cCdzIGJvdHRvbSBib3JkZXIuCiAgICAgICAg
IGN1cnJTZWN0aW9uID0gdGFibGUoKS0+c2VjdGlvbkFib3ZlKGN1cnJTZWN0aW9uKTsKICAgICAg
ICAgaWYgKGN1cnJTZWN0aW9uKSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBjb21wYXJlQm9yZGVy
cyhDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmY3VyclNlY3Rpb24tPnN0eWxlKCktPmJvcmRlckJvdHRv
bSgpLCBjdXJyU2VjdGlvbi0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKGJvdHRvbSks
IEJST1dHUk9VUCksIHJlc3VsdCk7CisgICAgICAgICAgICByZXN1bHQgPSBjaG9vc2VCb3JkZXIo
Q29sbGFwc2VkQm9yZGVyVmFsdWUoJmN1cnJTZWN0aW9uLT5zdHlsZSgpLT5ib3JkZXJCb3R0b20o
KSwgY3VyclNlY3Rpb24tPnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihib3R0b20pLCBC
Uk9XR1JPVVApLCByZXN1bHQpOwogICAgICAgICAgICAgaWYgKCFyZXN1bHQuZXhpc3RzKCkpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQpAQCAtNTI0LDExICs1NDIs
MTEgQEAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgUmVuZGVyVGFibGVDZWxsOjpjb2xsYXBzZWRUb3BC
b3JkZXIoKSBjb25zdAogICAgICAgICAvLyAoOCkgT3VyIGNvbHVtbiBhbmQgY29sdW1uIGdyb3Vw
J3MgdG9wIGJvcmRlcnMuCiAgICAgICAgIFJlbmRlclRhYmxlQ29sKiBjb2xFbHQgPSB0YWJsZSgp
LT5jb2xFbGVtZW50KGNvbCgpKTsKICAgICAgICAgaWYgKGNvbEVsdCkgewotICAgICAgICAgICAg
cmVzdWx0ID0gY29tcGFyZUJvcmRlcnMocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmY29s
RWx0LT5zdHlsZSgpLT5ib3JkZXJUb3AoKSwgY29sRWx0LT5zdHlsZSgpLT52aXNpdGVkRGVwZW5k
ZW50Q29sb3IodG9wKSwgQkNPTCkpOworICAgICAgICAgICAgcmVzdWx0ID0gY2hvb3NlQm9yZGVy
KHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoJmNvbEVsdC0+c3R5bGUoKS0+Ym9yZGVyVG9w
KCksIGNvbEVsdC0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKHRvcCksIEJDT0wpKTsK
ICAgICAgICAgICAgIGlmICghcmVzdWx0LmV4aXN0cygpKQogICAgICAgICAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgICAgICAgICBpZiAoY29sRWx0LT5wYXJlbnQoKS0+aXNUYWJsZUNvbCgp
KSB7Ci0gICAgICAgICAgICAgICAgcmVzdWx0ID0gY29tcGFyZUJvcmRlcnMocmVzdWx0LCBDb2xs
YXBzZWRCb3JkZXJWYWx1ZSgmY29sRWx0LT5wYXJlbnQoKS0+c3R5bGUoKS0+Ym9yZGVyVG9wKCks
IGNvbEVsdC0+cGFyZW50KCktPnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcih0b3ApLCBC
Q09MR1JPVVApKTsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBjaG9vc2VCb3JkZXIocmVzdWx0
LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmY29sRWx0LT5wYXJlbnQoKS0+c3R5bGUoKS0+Ym9yZGVy
VG9wKCksIGNvbEVsdC0+cGFyZW50KCktPnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcih0
b3ApLCBCQ09MR1JPVVApKTsKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdC5leGlzdHMoKSkK
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgICAgIH0KQEAgLTUz
Niw3ICs1NTQsNyBAQCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSBSZW5kZXJUYWJsZUNlbGw6OmNvbGxh
cHNlZFRvcEJvcmRlcigpIGNvbnN0CiAgICAgICAgIAogICAgICAgICAvLyAoOSkgVGhlIHRhYmxl
J3MgdG9wIGJvcmRlci4KICAgICAgICAgUmVuZGVyVGFibGUqIGVuY2xvc2luZ1RhYmxlID0gdGFi
bGUoKTsKLSAgICAgICAgcmVzdWx0ID0gY29tcGFyZUJvcmRlcnMocmVzdWx0LCBDb2xsYXBzZWRC
b3JkZXJWYWx1ZSgmZW5jbG9zaW5nVGFibGUtPnN0eWxlKCktPmJvcmRlclRvcCgpLCBlbmNsb3Np
bmdUYWJsZS0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKHRvcCksIEJUQUJMRSkpOwor
ICAgICAgICByZXN1bHQgPSBjaG9vc2VCb3JkZXIocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1
ZSgmZW5jbG9zaW5nVGFibGUtPnN0eWxlKCktPmJvcmRlclRvcCgpLCBlbmNsb3NpbmdUYWJsZS0+
c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKHRvcCksIEJUQUJMRSkpOwogICAgICAgICBp
ZiAoIXJlc3VsdC5leGlzdHMoKSkKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQpA
QCAtNTU1LDE5ICs1NzMsMTkgQEAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgUmVuZGVyVGFibGVDZWxs
Ojpjb2xsYXBzZWRCb3R0b21Cb3JkZXIoKSBjb25zdAogICAgIFJlbmRlclRhYmxlQ2VsbCogbmV4
dENlbGwgPSB0YWJsZSgpLT5jZWxsQmVsb3codGhpcyk7CiAgICAgaWYgKG5leHRDZWxsKSB7CiAg
ICAgICAgIC8vICgyKSBBIGZvbGxvd2luZyBjZWxsJ3MgdG9wIGJvcmRlci4KLSAgICAgICAgcmVz
dWx0ID0gY29tcGFyZUJvcmRlcnMocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmbmV4dENl
bGwtPnN0eWxlKCktPmJvcmRlclRvcCgpLCBuZXh0Q2VsbC0+c3R5bGUoKS0+dmlzaXRlZERlcGVu
ZGVudENvbG9yKHRvcCksIEJDRUxMKSk7CisgICAgICAgIHJlc3VsdCA9IGNob29zZUJvcmRlcihy
ZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKCZuZXh0Q2VsbC0+c3R5bGUoKS0+Ym9yZGVyVG9w
KCksIG5leHRDZWxsLT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IodG9wKSwgQkNFTEwp
KTsKICAgICAgICAgaWYgKCFyZXN1bHQuZXhpc3RzKCkpCiAgICAgICAgICAgICByZXR1cm4gcmVz
dWx0OwogICAgIH0KICAgICAKICAgICAvLyAoMykgT3VyIHJvdydzIGJvdHRvbSBib3JkZXIuIChG
SVhNRTogRGVhbCB3aXRoIHJvd3NwYW4hKQotICAgIHJlc3VsdCA9IGNvbXBhcmVCb3JkZXJzKHJl
c3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoJnBhcmVudCgpLT5zdHlsZSgpLT5ib3JkZXJCb3R0
b20oKSwgcGFyZW50KCktPnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihib3R0b20pLCBC
Uk9XKSk7CisgICAgcmVzdWx0ID0gY2hvb3NlQm9yZGVyKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVy
VmFsdWUoJnBhcmVudCgpLT5zdHlsZSgpLT5ib3JkZXJCb3R0b20oKSwgcGFyZW50KCktPnN0eWxl
KCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihib3R0b20pLCBCUk9XKSk7CiAgICAgaWYgKCFyZXN1
bHQuZXhpc3RzKCkpCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgCiAgICAgLy8gKDQpIFRo
ZSBuZXh0IHJvdydzIHRvcCBib3JkZXIuCiAgICAgaWYgKG5leHRDZWxsKSB7Ci0gICAgICAgIHJl
c3VsdCA9IGNvbXBhcmVCb3JkZXJzKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoJm5leHRD
ZWxsLT5wYXJlbnQoKS0+c3R5bGUoKS0+Ym9yZGVyVG9wKCksIG5leHRDZWxsLT5wYXJlbnQoKS0+
c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKHRvcCksIEJST1cpKTsKKyAgICAgICAgcmVz
dWx0ID0gY2hvb3NlQm9yZGVyKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoJm5leHRDZWxs
LT5wYXJlbnQoKS0+c3R5bGUoKS0+Ym9yZGVyVG9wKCksIG5leHRDZWxsLT5wYXJlbnQoKS0+c3R5
bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKHRvcCksIEJST1cpKTsKICAgICAgICAgaWYgKCFy
ZXN1bHQuZXhpc3RzKCkpCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KQEAgLTU3
NiwxNCArNTk0LDE0IEBAIENvbGxhcHNlZEJvcmRlclZhbHVlIFJlbmRlclRhYmxlQ2VsbDo6Y29s
bGFwc2VkQm90dG9tQm9yZGVyKCkgY29uc3QKICAgICBSZW5kZXJUYWJsZVNlY3Rpb24qIGN1cnJT
ZWN0aW9uID0gc2VjdGlvbigpOwogICAgIGlmIChyb3coKSArIHJvd1NwYW4oKSA+PSBjdXJyU2Vj
dGlvbi0+bnVtUm93cygpKSB7CiAgICAgICAgIC8vICg1KSBPdXIgcm93IGdyb3VwJ3MgYm90dG9t
IGJvcmRlci4KLSAgICAgICAgcmVzdWx0ID0gY29tcGFyZUJvcmRlcnMocmVzdWx0LCBDb2xsYXBz
ZWRCb3JkZXJWYWx1ZSgmY3VyclNlY3Rpb24tPnN0eWxlKCktPmJvcmRlckJvdHRvbSgpLCBjdXJy
U2VjdGlvbi0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKGJvdHRvbSksIEJST1dHUk9V
UCkpOworICAgICAgICByZXN1bHQgPSBjaG9vc2VCb3JkZXIocmVzdWx0LCBDb2xsYXBzZWRCb3Jk
ZXJWYWx1ZSgmY3VyclNlY3Rpb24tPnN0eWxlKCktPmJvcmRlckJvdHRvbSgpLCBjdXJyU2VjdGlv
bi0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKGJvdHRvbSksIEJST1dHUk9VUCkpOwog
ICAgICAgICBpZiAoIXJlc3VsdC5leGlzdHMoKSkKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7
CiAgICAgICAgIAogICAgICAgICAvLyAoNikgRm9sbG93aW5nIHJvdyBncm91cCdzIHRvcCBib3Jk
ZXIuCiAgICAgICAgIGN1cnJTZWN0aW9uID0gdGFibGUoKS0+c2VjdGlvbkJlbG93KGN1cnJTZWN0
aW9uKTsKICAgICAgICAgaWYgKGN1cnJTZWN0aW9uKSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBj
b21wYXJlQm9yZGVycyhyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKCZjdXJyU2VjdGlvbi0+
c3R5bGUoKS0+Ym9yZGVyVG9wKCksIGN1cnJTZWN0aW9uLT5zdHlsZSgpLT52aXNpdGVkRGVwZW5k
ZW50Q29sb3IodG9wKSwgQlJPV0dST1VQKSk7CisgICAgICAgICAgICByZXN1bHQgPSBjaG9vc2VC
b3JkZXIocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmY3VyclNlY3Rpb24tPnN0eWxlKCkt
PmJvcmRlclRvcCgpLCBjdXJyU2VjdGlvbi0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9y
KHRvcCksIEJST1dHUk9VUCkpOwogICAgICAgICAgICAgaWYgKCFyZXN1bHQuZXhpc3RzKCkpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQpAQCAtNTkzLDEwICs2MTEs
MTAgQEAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgUmVuZGVyVGFibGVDZWxsOjpjb2xsYXBzZWRCb3R0
b21Cb3JkZXIoKSBjb25zdAogICAgICAgICAvLyAoOCkgT3VyIGNvbHVtbiBhbmQgY29sdW1uIGdy
b3VwJ3MgYm90dG9tIGJvcmRlcnMuCiAgICAgICAgIFJlbmRlclRhYmxlQ29sKiBjb2xFbHQgPSB0
YWJsZSgpLT5jb2xFbGVtZW50KGNvbCgpKTsKICAgICAgICAgaWYgKGNvbEVsdCkgewotICAgICAg
ICAgICAgcmVzdWx0ID0gY29tcGFyZUJvcmRlcnMocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1
ZSgmY29sRWx0LT5zdHlsZSgpLT5ib3JkZXJCb3R0b20oKSwgY29sRWx0LT5zdHlsZSgpLT52aXNp
dGVkRGVwZW5kZW50Q29sb3IoYm90dG9tKSwgQkNPTCkpOworICAgICAgICAgICAgcmVzdWx0ID0g
Y2hvb3NlQm9yZGVyKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoJmNvbEVsdC0+c3R5bGUo
KS0+Ym9yZGVyQm90dG9tKCksIGNvbEVsdC0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9y
KGJvdHRvbSksIEJDT0wpKTsKICAgICAgICAgICAgIGlmICghcmVzdWx0LmV4aXN0cygpKSByZXR1
cm4gcmVzdWx0OwogICAgICAgICAgICAgaWYgKGNvbEVsdC0+cGFyZW50KCktPmlzVGFibGVDb2wo
KSkgewotICAgICAgICAgICAgICAgIHJlc3VsdCA9IGNvbXBhcmVCb3JkZXJzKHJlc3VsdCwgQ29s
bGFwc2VkQm9yZGVyVmFsdWUoJmNvbEVsdC0+cGFyZW50KCktPnN0eWxlKCktPmJvcmRlckJvdHRv
bSgpLCBjb2xFbHQtPnBhcmVudCgpLT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoYm90
dG9tKSwgQkNPTEdST1VQKSk7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gY2hvb3NlQm9yZGVy
KHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoJmNvbEVsdC0+cGFyZW50KCktPnN0eWxlKCkt
PmJvcmRlckJvdHRvbSgpLCBjb2xFbHQtPnBhcmVudCgpLT5zdHlsZSgpLT52aXNpdGVkRGVwZW5k
ZW50Q29sb3IoYm90dG9tKSwgQkNPTEdST1VQKSk7CiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1
bHQuZXhpc3RzKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAg
ICAgICB9CkBAIC02MDQsNyArNjIyLDcgQEAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgUmVuZGVyVGFi
bGVDZWxsOjpjb2xsYXBzZWRCb3R0b21Cb3JkZXIoKSBjb25zdAogICAgICAgICAKICAgICAgICAg
Ly8gKDkpIFRoZSB0YWJsZSdzIGJvdHRvbSBib3JkZXIuCiAgICAgICAgIFJlbmRlclRhYmxlKiBl
bmNsb3NpbmdUYWJsZSA9IHRhYmxlKCk7Ci0gICAgICAgIHJlc3VsdCA9IGNvbXBhcmVCb3JkZXJz
KHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoJmVuY2xvc2luZ1RhYmxlLT5zdHlsZSgpLT5i
b3JkZXJCb3R0b20oKSwgZW5jbG9zaW5nVGFibGUtPnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRD
b2xvcihib3R0b20pLCBCVEFCTEUpKTsKKyAgICAgICAgcmVzdWx0ID0gY2hvb3NlQm9yZGVyKHJl
c3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoJmVuY2xvc2luZ1RhYmxlLT5zdHlsZSgpLT5ib3Jk
ZXJCb3R0b20oKSwgZW5jbG9zaW5nVGFibGUtPnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xv
cihib3R0b20pLCBCVEFCTEUpKTsKICAgICAgICAgaWYgKCFyZXN1bHQuZXhpc3RzKCkpCiAgICAg
ICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KQEAgLTc2NywxMCArNzg1LDcgQEAgc3RhdGlj
IGludCBjb21wYXJlQm9yZGVyU3R5bGVzRm9yUVNvcnQoY29uc3Qgdm9pZCogcGEsIGNvbnN0IHZv
aWQqIHBiKQogICAgIGNvbnN0IENvbGxhcHNlZEJvcmRlclZhbHVlKiBiID0gc3RhdGljX2Nhc3Q8
Y29uc3QgQ29sbGFwc2VkQm9yZGVyVmFsdWUqPihwYik7CiAgICAgaWYgKCphID09ICpiKQogICAg
ICAgICByZXR1cm4gMDsKLSAgICBDb2xsYXBzZWRCb3JkZXJWYWx1ZSBib3JkZXJXaXRoSGlnaGVy
UHJlY2VkZW5jZSA9IGNvbXBhcmVCb3JkZXJzKCphLCAqYik7Ci0gICAgaWYgKCphID09IGJvcmRl
cldpdGhIaWdoZXJQcmVjZWRlbmNlKQotICAgICAgICByZXR1cm4gMTsKLSAgICByZXR1cm4gLTE7
CisgICAgcmV0dXJuIGNvbXBhcmVCb3JkZXJzKCphLCAqYik7CiB9CiAKIHZvaWQgUmVuZGVyVGFi
bGVDZWxsOjpzb3J0Qm9yZGVyU3R5bGVzKENvbGxhcHNlZEJvcmRlclN0eWxlcyYgYm9yZGVyU3R5
bGVzKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58042</attachid>
            <date>2010-06-07 10:08:26 -0700</date>
            <delta_ts>2010-07-23 08:49:03 -0700</delta_ts>
            <desc>updated patch</desc>
            <filename>39966.patch</filename>
            <type>text/plain</type>
            <size>20983</size>
            <attacher name="Yong Li">yong.li.webkit</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MTc3MDgyNC4uM2NjODhlYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxMC0wNi0wNyAgWW9uZyBMaSAgPHlv
bGlAcmltLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk5NjYKKyAgICAg
ICAgTWFrZSBjb21wYXJlQm9yZGVycygpIGEgY29uc2lzdGVudCBjb21wYXJlIGZ1bmN0aW9uIHdo
aWNoIGNhbiB1c2VkIGJlIGJ5IHFzb3J0KCkuCisgICAgICAgIEFsc28gZml4ZWQgYSBidWcgaW4g
cHJldmlvdXMgaW1wbGVtZW50YXRpb24gdGhhdCBpdCBkaWRuJ3QgY29udGludWUgY29tcGFyaW5n
IHdoZW4KKyAgICAgICAgYm90aCBib3JkZXJzIGhhdmUgTk9ORSBzdHlsZS4KKworICAgICAgICBO
ZXcgdGVzdCBjYXNlIGFkZGVkOiBMYXlvdXRUZXN0cy90YWJsZXMvc29ydC1jb2xsYXBzZWQtYm9y
ZGVyLXN0eWxlcy5odG1sCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbXBhcmVCb3JkZXJzKToKKyAgICAgICAgKFdlYkNvcmU6
OmNob29zZUJvcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZUNlbGw6OmNvbGxh
cHNlZExlZnRCb3JkZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVDZWxsOjpjb2xs
YXBzZWRSaWdodEJvcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZUNlbGw6OmNv
bGxhcHNlZFRvcEJvcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZUNlbGw6OmNv
bGxhcHNlZEJvdHRvbUJvcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpjb21wYXJlQm9yZGVyU3R5
bGVzRm9yUVNvcnQpOgorCiAyMDEwLTA1LTI2ICBZb25nIExpICA8eW9saUByaW0uY29tPgogCiAg
ICAgICAgIFRlc3QgY2FzZXMgY3JlYXRlZCBieTogUm9iaW4gQ2FvIDxyb2Jpbi5jYW9AdG9yY2ht
b2JpbGUuY29tLmNuPgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVD
ZWxsLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAKaW5kZXggY2I1
MWYxMy4uMDViODIwZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVD
ZWxsLmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCkBAIC0y
OTUsMzQgKzI5NSw1MiBAQCB2b2lkIFJlbmRlclRhYmxlQ2VsbDo6c3R5bGVEaWRDaGFuZ2UoU3R5
bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlKiBvbAogLy8gKDQpIElmIGJvcmRl
ciBzdHlsZXMgZGlmZmVyIG9ubHkgaW4gY29sb3IsIHRoZW4gYSBzdHlsZSBzZXQgb24gYSBjZWxs
IHdpbnMgb3ZlciBvbmUgb24gYSByb3csIAogLy8gd2hpY2ggd2lucyBvdmVyIGEgcm93IGdyb3Vw
LCBjb2x1bW4sIGNvbHVtbiBncm91cCBhbmQsIGxhc3RseSwgdGFibGUuIEl0IGlzIHVuZGVmaW5l
ZCB3aGljaCBjb2xvciAKIC8vIGlzIHVzZWQgd2hlbiB0d28gZWxlbWVudHMgb2YgdGhlIHNhbWUg
dHlwZSBkaXNhZ3JlZS4KLXN0YXRpYyBDb2xsYXBzZWRCb3JkZXJWYWx1ZSBjb21wYXJlQm9yZGVy
cyhjb25zdCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSYgYm9yZGVyMSwgY29uc3QgQ29sbGFwc2VkQm9y
ZGVyVmFsdWUmIGJvcmRlcjIpCitzdGF0aWMgaW50IGNvbXBhcmVCb3JkZXJzKGNvbnN0IENvbGxh
cHNlZEJvcmRlclZhbHVlJiBib3JkZXIxLCBjb25zdCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSYgYm9y
ZGVyMikKIHsKICAgICAvLyBTYW5pdHkgY2hlY2sgdGhlIHZhbHVlcyBwYXNzZWQgaW4uICBJZiBl
aXRoZXIgaXMgbnVsbCwgcmV0dXJuIHRoZSBvdGhlci4KLSAgICBpZiAoIWJvcmRlcjIuZXhpc3Rz
KCkpCi0gICAgICAgIHJldHVybiBib3JkZXIxOworICAgIGlmICghYm9yZGVyMi5leGlzdHMoKSkg
eworICAgICAgICBpZiAoIWJvcmRlcjEuZXhpc3RzKCkpCisgICAgICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgcmV0dXJuIDE7CisgICAgfQogICAgIGlmICghYm9yZGVyMS5leGlzdHMoKSkKLSAg
ICAgICAgcmV0dXJuIGJvcmRlcjI7CisgICAgICAgIHJldHVybiAtMTsKIAogICAgIC8vIFJ1bGUg
IzEgYWJvdmUuCi0gICAgaWYgKGJvcmRlcjEuc3R5bGUoKSA9PSBCSElEREVOIHx8IGJvcmRlcjIu
c3R5bGUoKSA9PSBCSElEREVOKQotICAgICAgICByZXR1cm4gQ29sbGFwc2VkQm9yZGVyVmFsdWUo
KTsgLy8gTm8gYm9yZGVyIHNob3VsZCBleGlzdCBhdCB0aGlzIGxvY2F0aW9uLgorICAgIGlmIChi
b3JkZXIyLnN0eWxlKCkgPT0gQkhJRERFTikgeworICAgICAgICBpZiAoYm9yZGVyMS5zdHlsZSgp
ID09IEJISURERU4pCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIC0xOwor
ICAgIH0KKyAgICBpZiAoYm9yZGVyMS5zdHlsZSgpID09IEJISURERU4pCisgICAgICAgIHJldHVy
biAxOwogICAgIAogICAgIC8vIFJ1bGUgIzIgYWJvdmUuICBBIHN0eWxlIG9mICdub25lJyBoYXMg
bG93ZXN0IHByaW9yaXR5IGFuZCBhbHdheXMgbG9zZXMgdG8gYW55IG90aGVyIGJvcmRlci4KLSAg
ICBpZiAoYm9yZGVyMi5zdHlsZSgpID09IEJOT05FKQotICAgICAgICByZXR1cm4gYm9yZGVyMTsK
KyAgICBpZiAoYm9yZGVyMi5zdHlsZSgpID09IEJOT05FKSB7CisgICAgICAgIGlmIChib3JkZXIx
LnN0eWxlKCkgIT0gQk5PTkUpCisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICB9CiAgICAgaWYg
KGJvcmRlcjEuc3R5bGUoKSA9PSBCTk9ORSkKLSAgICAgICAgcmV0dXJuIGJvcmRlcjI7CisgICAg
ICAgIHJldHVybiAtMTsKIAogICAgIC8vIFRoZSBmaXJzdCBwYXJ0IG9mIHJ1bGUgIzMgYWJvdmUu
IFdpZGVyIGJvcmRlcnMgd2luLgogICAgIGlmIChib3JkZXIxLndpZHRoKCkgIT0gYm9yZGVyMi53
aWR0aCgpKQotICAgICAgICByZXR1cm4gYm9yZGVyMS53aWR0aCgpID4gYm9yZGVyMi53aWR0aCgp
ID8gYm9yZGVyMSA6IGJvcmRlcjI7CisgICAgICAgIHJldHVybiBib3JkZXIxLndpZHRoKCkgPCBi
b3JkZXIyLndpZHRoKCkgPyAtMSA6IDE7CiAgICAgCiAgICAgLy8gVGhlIGJvcmRlcnMgaGF2ZSBl
cXVhbCB3aWR0aC4gIFNvcnQgYnkgYm9yZGVyIHN0eWxlLgogICAgIGlmIChib3JkZXIxLnN0eWxl
KCkgIT0gYm9yZGVyMi5zdHlsZSgpKQotICAgICAgICByZXR1cm4gYm9yZGVyMS5zdHlsZSgpID4g
Ym9yZGVyMi5zdHlsZSgpID8gYm9yZGVyMSA6IGJvcmRlcjI7CisgICAgICAgIHJldHVybiBib3Jk
ZXIxLnN0eWxlKCkgPCBib3JkZXIyLnN0eWxlKCkgPyAtMSA6IDE7CiAgICAgCiAgICAgLy8gVGhl
IGJvcmRlciBoYXZlIHRoZSBzYW1lIHdpZHRoIGFuZCBzdHlsZS4gIFJlbHkgb24gcHJlY2VkZW5j
ZSAoY2VsbCBvdmVyIHJvdyBvdmVyIHJvdyBncm91cCwgZXRjLikKLSAgICByZXR1cm4gYm9yZGVy
MS5wcmVjZWRlbmNlKCkgPj0gYm9yZGVyMi5wcmVjZWRlbmNlKCkgPyBib3JkZXIxIDogYm9yZGVy
MjsKKyAgICBpZiAoYm9yZGVyMS5wcmVjZWRlbmNlKCkgPT0gYm9yZGVyMi5wcmVjZWRlbmNlKCkp
CisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBib3JkZXIxLnByZWNlZGVuY2UoKSA8IGJv
cmRlcjIucHJlY2VkZW5jZSgpID8gLTEgOiAxOworfQorCitzdGF0aWMgQ29sbGFwc2VkQm9yZGVy
VmFsdWUgY2hvb3NlQm9yZGVyKGNvbnN0IENvbGxhcHNlZEJvcmRlclZhbHVlJiBib3JkZXIxLCBj
b25zdCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSYgYm9yZGVyMikKK3sKKyAgICBjb25zdCBDb2xsYXBz
ZWRCb3JkZXJWYWx1ZSYgYm9yZGVyID0gY29tcGFyZUJvcmRlcnMoYm9yZGVyMSwgYm9yZGVyMikg
PCAwID8gYm9yZGVyMiA6IGJvcmRlcjE7CisgICAgcmV0dXJuIGJvcmRlci5zdHlsZSgpID09IEJI
SURERU4gPyBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgpIDogYm9yZGVyOwogfQogCiBDb2xsYXBzZWRC
b3JkZXJWYWx1ZSBSZW5kZXJUYWJsZUNlbGw6OmNvbGxhcHNlZExlZnRCb3JkZXIoYm9vbCBydGwp
IGNvbnN0CkBAIC0zNDYsMTcgKzM2NCwxNyBAQCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSBSZW5kZXJU
YWJsZUNlbGw6OmNvbGxhcHNlZExlZnRCb3JkZXIoYm9vbCBydGwpIGNvbnN0CiAgICAgUmVuZGVy
VGFibGVDZWxsKiBwcmV2Q2VsbCA9IHJ0bCA/IHRhYmxlRWx0LT5jZWxsQWZ0ZXIodGhpcykgOiB0
YWJsZUVsdC0+Y2VsbEJlZm9yZSh0aGlzKTsKICAgICBpZiAocHJldkNlbGwpIHsKICAgICAgICAg
Q29sbGFwc2VkQm9yZGVyVmFsdWUgcHJldkNlbGxCb3JkZXIgPSBDb2xsYXBzZWRCb3JkZXJWYWx1
ZSgmcHJldkNlbGwtPnN0eWxlKCktPmJvcmRlclJpZ2h0KCksIHByZXZDZWxsLT5zdHlsZSgpLT52
aXNpdGVkRGVwZW5kZW50Q29sb3IocmlnaHQpLCBCQ0VMTCk7Ci0gICAgICAgIHJlc3VsdCA9IHJ0
bCA/IGNvbXBhcmVCb3JkZXJzKHJlc3VsdCwgcHJldkNlbGxCb3JkZXIpIDogY29tcGFyZUJvcmRl
cnMocHJldkNlbGxCb3JkZXIsIHJlc3VsdCk7CisgICAgICAgIHJlc3VsdCA9IHJ0bCA/IGNob29z
ZUJvcmRlcihyZXN1bHQsIHByZXZDZWxsQm9yZGVyKSA6IGNob29zZUJvcmRlcihwcmV2Q2VsbEJv
cmRlciwgcmVzdWx0KTsKICAgICAgICAgaWYgKCFyZXN1bHQuZXhpc3RzKCkpCiAgICAgICAgICAg
ICByZXR1cm4gcmVzdWx0OwogICAgIH0gZWxzZSBpZiAobGVmdG1vc3RDb2x1bW4pIHsKICAgICAg
ICAgLy8gKDMpIE91ciByb3cncyBsZWZ0IGJvcmRlci4KLSAgICAgICAgcmVzdWx0ID0gY29tcGFy
ZUJvcmRlcnMocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmcGFyZW50KCktPnN0eWxlKCkt
PmJvcmRlckxlZnQoKSwgcGFyZW50KCktPnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihs
ZWZ0KSwgQlJPVykpOworICAgICAgICByZXN1bHQgPSBjaG9vc2VCb3JkZXIocmVzdWx0LCBDb2xs
YXBzZWRCb3JkZXJWYWx1ZSgmcGFyZW50KCktPnN0eWxlKCktPmJvcmRlckxlZnQoKSwgcGFyZW50
KCktPnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihsZWZ0KSwgQlJPVykpOwogICAgICAg
ICBpZiAoIXJlc3VsdC5leGlzdHMoKSkKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAg
ICAgIAogICAgICAgICAvLyAoNCkgT3VyIHJvdyBncm91cCdzIGxlZnQgYm9yZGVyLgotICAgICAg
ICByZXN1bHQgPSBjb21wYXJlQm9yZGVycyhyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKCZz
ZWN0aW9uKCktPnN0eWxlKCktPmJvcmRlckxlZnQoKSwgc2VjdGlvbigpLT5zdHlsZSgpLT52aXNp
dGVkRGVwZW5kZW50Q29sb3IobGVmdCksIEJST1dHUk9VUCkpOworICAgICAgICByZXN1bHQgPSBj
aG9vc2VCb3JkZXIocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmc2VjdGlvbigpLT5zdHls
ZSgpLT5ib3JkZXJMZWZ0KCksIHNlY3Rpb24oKS0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENv
bG9yKGxlZnQpLCBCUk9XR1JPVVApKTsKICAgICAgICAgaWYgKCFyZXN1bHQuZXhpc3RzKCkpCiAg
ICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KQEAgLTM2NiwxMSArMzg0LDExIEBAIENv
bGxhcHNlZEJvcmRlclZhbHVlIFJlbmRlclRhYmxlQ2VsbDo6Y29sbGFwc2VkTGVmdEJvcmRlcihi
b29sIHJ0bCkgY29uc3QKICAgICBib29sIGVuZENvbEVkZ2U7CiAgICAgUmVuZGVyVGFibGVDb2wq
IGNvbEVsdCA9IHRhYmxlRWx0LT5jb2xFbGVtZW50KGNvbCgpICsgKHJ0bCA/IGNvbFNwYW4oKSAt
IDEgOiAwKSwgJnN0YXJ0Q29sRWRnZSwgJmVuZENvbEVkZ2UpOwogICAgIGlmIChjb2xFbHQgJiYg
KCFydGwgPyBzdGFydENvbEVkZ2UgOiBlbmRDb2xFZGdlKSkgewotICAgICAgICByZXN1bHQgPSBj
b21wYXJlQm9yZGVycyhyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKCZjb2xFbHQtPnN0eWxl
KCktPmJvcmRlckxlZnQoKSwgY29sRWx0LT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3Io
bGVmdCksIEJDT0wpKTsKKyAgICAgICAgcmVzdWx0ID0gY2hvb3NlQm9yZGVyKHJlc3VsdCwgQ29s
bGFwc2VkQm9yZGVyVmFsdWUoJmNvbEVsdC0+c3R5bGUoKS0+Ym9yZGVyTGVmdCgpLCBjb2xFbHQt
PnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihsZWZ0KSwgQkNPTCkpOwogICAgICAgICBp
ZiAoIXJlc3VsdC5leGlzdHMoKSkKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAg
IGlmIChjb2xFbHQtPnBhcmVudCgpLT5pc1RhYmxlQ29sKCkgJiYgKCFydGwgPyAhY29sRWx0LT5w
cmV2aW91c1NpYmxpbmcoKSA6ICFjb2xFbHQtPm5leHRTaWJsaW5nKCkpKSB7Ci0gICAgICAgICAg
ICByZXN1bHQgPSBjb21wYXJlQm9yZGVycyhyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKCZj
b2xFbHQtPnBhcmVudCgpLT5zdHlsZSgpLT5ib3JkZXJMZWZ0KCksIGNvbEVsdC0+cGFyZW50KCkt
PnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihsZWZ0KSwgQkNPTEdST1VQKSk7CisgICAg
ICAgICAgICByZXN1bHQgPSBjaG9vc2VCb3JkZXIocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1
ZSgmY29sRWx0LT5wYXJlbnQoKS0+c3R5bGUoKS0+Ym9yZGVyTGVmdCgpLCBjb2xFbHQtPnBhcmVu
dCgpLT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IobGVmdCksIEJDT0xHUk9VUCkpOwog
ICAgICAgICAgICAgaWYgKCFyZXN1bHQuZXhpc3RzKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgICAgICAgfQpAQCAtMzgxLDEzICszOTksMTMgQEAgQ29sbGFwc2VkQm9yZGVy
VmFsdWUgUmVuZGVyVGFibGVDZWxsOjpjb2xsYXBzZWRMZWZ0Qm9yZGVyKGJvb2wgcnRsKSBjb25z
dAogICAgICAgICBjb2xFbHQgPSB0YWJsZUVsdC0+Y29sRWxlbWVudChjb2woKSArIChydGwgPyBj
b2xTcGFuKCkgOiAtMSksICZzdGFydENvbEVkZ2UsICZlbmRDb2xFZGdlKTsKICAgICAgICAgaWYg
KGNvbEVsdCAmJiAoIXJ0bCA/IGVuZENvbEVkZ2UgOiBzdGFydENvbEVkZ2UpKSB7CiAgICAgICAg
ICAgICBDb2xsYXBzZWRCb3JkZXJWYWx1ZSByaWdodEJvcmRlciA9IENvbGxhcHNlZEJvcmRlclZh
bHVlKCZjb2xFbHQtPnN0eWxlKCktPmJvcmRlclJpZ2h0KCksIGNvbEVsdC0+c3R5bGUoKS0+dmlz
aXRlZERlcGVuZGVudENvbG9yKHJpZ2h0KSwgQkNPTCk7Ci0gICAgICAgICAgICByZXN1bHQgPSBy
dGwgPyBjb21wYXJlQm9yZGVycyhyZXN1bHQsIHJpZ2h0Qm9yZGVyKSA6IGNvbXBhcmVCb3JkZXJz
KHJpZ2h0Qm9yZGVyLCByZXN1bHQpOworICAgICAgICAgICAgcmVzdWx0ID0gcnRsID8gY2hvb3Nl
Qm9yZGVyKHJlc3VsdCwgcmlnaHRCb3JkZXIpIDogY2hvb3NlQm9yZGVyKHJpZ2h0Qm9yZGVyLCBy
ZXN1bHQpOwogICAgICAgICAgICAgaWYgKCFyZXN1bHQuZXhpc3RzKCkpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vICg3
KSBUaGUgdGFibGUncyBsZWZ0IGJvcmRlci4KLSAgICAgICAgcmVzdWx0ID0gY29tcGFyZUJvcmRl
cnMocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmdGFibGVFbHQtPnN0eWxlKCktPmJvcmRl
ckxlZnQoKSwgdGFibGVFbHQtPnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihsZWZ0KSwg
QlRBQkxFKSk7CisgICAgICAgIHJlc3VsdCA9IGNob29zZUJvcmRlcihyZXN1bHQsIENvbGxhcHNl
ZEJvcmRlclZhbHVlKCZ0YWJsZUVsdC0+c3R5bGUoKS0+Ym9yZGVyTGVmdCgpLCB0YWJsZUVsdC0+
c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKGxlZnQpLCBCVEFCTEUpKTsKICAgICAgICAg
aWYgKCFyZXN1bHQuZXhpc3RzKCkpCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0K
QEAgLTQxNywxOCArNDM1LDE4IEBAIENvbGxhcHNlZEJvcmRlclZhbHVlIFJlbmRlclRhYmxlQ2Vs
bDo6Y29sbGFwc2VkUmlnaHRCb3JkZXIoYm9vbCBydGwpIGNvbnN0CiAgICAgICAgIFJlbmRlclRh
YmxlQ2VsbCogbmV4dENlbGwgPSBydGwgPyB0YWJsZUVsdC0+Y2VsbEJlZm9yZSh0aGlzKSA6IHRh
YmxlRWx0LT5jZWxsQWZ0ZXIodGhpcyk7CiAgICAgICAgIGlmIChuZXh0Q2VsbCAmJiBuZXh0Q2Vs
bC0+c3R5bGUoKSkgewogICAgICAgICAgICAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgbGVmdEJvcmRl
ciA9IENvbGxhcHNlZEJvcmRlclZhbHVlKCZuZXh0Q2VsbC0+c3R5bGUoKS0+Ym9yZGVyTGVmdCgp
LCBuZXh0Q2VsbC0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKGxlZnQpLCBCQ0VMTCk7
Ci0gICAgICAgICAgICByZXN1bHQgPSBydGwgPyBjb21wYXJlQm9yZGVycyhsZWZ0Qm9yZGVyLCBy
ZXN1bHQpIDogY29tcGFyZUJvcmRlcnMocmVzdWx0LCBsZWZ0Qm9yZGVyKTsKKyAgICAgICAgICAg
IHJlc3VsdCA9IHJ0bCA/IGNob29zZUJvcmRlcihsZWZ0Qm9yZGVyLCByZXN1bHQpIDogY2hvb3Nl
Qm9yZGVyKHJlc3VsdCwgbGVmdEJvcmRlcik7CiAgICAgICAgICAgICBpZiAoIXJlc3VsdC5leGlz
dHMoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CiAgICAgfSBl
bHNlIHsKICAgICAgICAgLy8gKDMpIE91ciByb3cncyByaWdodCBib3JkZXIuCi0gICAgICAgIHJl
c3VsdCA9IGNvbXBhcmVCb3JkZXJzKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoJnBhcmVu
dCgpLT5zdHlsZSgpLT5ib3JkZXJSaWdodCgpLCBwYXJlbnQoKS0+c3R5bGUoKS0+dmlzaXRlZERl
cGVuZGVudENvbG9yKHJpZ2h0KSwgQlJPVykpOworICAgICAgICByZXN1bHQgPSBjaG9vc2VCb3Jk
ZXIocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmcGFyZW50KCktPnN0eWxlKCktPmJvcmRl
clJpZ2h0KCksIHBhcmVudCgpLT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IocmlnaHQp
LCBCUk9XKSk7CiAgICAgICAgIGlmICghcmVzdWx0LmV4aXN0cygpKQogICAgICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKICAgICAgICAgCiAgICAgICAgIC8vICg0KSBPdXIgcm93IGdyb3VwJ3Mgcmln
aHQgYm9yZGVyLgotICAgICAgICByZXN1bHQgPSBjb21wYXJlQm9yZGVycyhyZXN1bHQsIENvbGxh
cHNlZEJvcmRlclZhbHVlKCZzZWN0aW9uKCktPnN0eWxlKCktPmJvcmRlclJpZ2h0KCksIHNlY3Rp
b24oKS0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKHJpZ2h0KSwgQlJPV0dST1VQKSk7
CisgICAgICAgIHJlc3VsdCA9IGNob29zZUJvcmRlcihyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZh
bHVlKCZzZWN0aW9uKCktPnN0eWxlKCktPmJvcmRlclJpZ2h0KCksIHNlY3Rpb24oKS0+c3R5bGUo
KS0+dmlzaXRlZERlcGVuZGVudENvbG9yKHJpZ2h0KSwgQlJPV0dST1VQKSk7CiAgICAgICAgIGlm
ICghcmVzdWx0LmV4aXN0cygpKQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CkBA
IC00MzgsMTEgKzQ1NiwxMSBAQCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSBSZW5kZXJUYWJsZUNlbGw6
OmNvbGxhcHNlZFJpZ2h0Qm9yZGVyKGJvb2wgcnRsKSBjb25zdAogICAgIGJvb2wgZW5kQ29sRWRn
ZTsKICAgICBSZW5kZXJUYWJsZUNvbCogY29sRWx0ID0gdGFibGVFbHQtPmNvbEVsZW1lbnQoY29s
KCkgKyAocnRsID8gMCA6IGNvbFNwYW4oKSAtIDEpLCAmc3RhcnRDb2xFZGdlLCAmZW5kQ29sRWRn
ZSk7CiAgICAgaWYgKGNvbEVsdCAmJiAoIXJ0bCA/IGVuZENvbEVkZ2UgOiBzdGFydENvbEVkZ2Up
KSB7Ci0gICAgICAgIHJlc3VsdCA9IGNvbXBhcmVCb3JkZXJzKHJlc3VsdCwgQ29sbGFwc2VkQm9y
ZGVyVmFsdWUoJmNvbEVsdC0+c3R5bGUoKS0+Ym9yZGVyUmlnaHQoKSwgY29sRWx0LT5zdHlsZSgp
LT52aXNpdGVkRGVwZW5kZW50Q29sb3IocmlnaHQpLCBCQ09MKSk7CisgICAgICAgIHJlc3VsdCA9
IGNob29zZUJvcmRlcihyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKCZjb2xFbHQtPnN0eWxl
KCktPmJvcmRlclJpZ2h0KCksIGNvbEVsdC0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9y
KHJpZ2h0KSwgQkNPTCkpOwogICAgICAgICBpZiAoIXJlc3VsdC5leGlzdHMoKSkKICAgICAgICAg
ICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIGlmIChjb2xFbHQtPnBhcmVudCgpLT5pc1RhYmxl
Q29sKCkgJiYgKCFydGwgPyAhY29sRWx0LT5uZXh0U2libGluZygpIDogIWNvbEVsdC0+cHJldmlv
dXNTaWJsaW5nKCkpKSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBjb21wYXJlQm9yZGVycyhyZXN1
bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKCZjb2xFbHQtPnBhcmVudCgpLT5zdHlsZSgpLT5ib3Jk
ZXJSaWdodCgpLCBjb2xFbHQtPnBhcmVudCgpLT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29s
b3IocmlnaHQpLCBCQ09MR1JPVVApKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IGNob29zZUJvcmRl
cihyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKCZjb2xFbHQtPnBhcmVudCgpLT5zdHlsZSgp
LT5ib3JkZXJSaWdodCgpLCBjb2xFbHQtPnBhcmVudCgpLT5zdHlsZSgpLT52aXNpdGVkRGVwZW5k
ZW50Q29sb3IocmlnaHQpLCBCQ09MR1JPVVApKTsKICAgICAgICAgICAgIGlmICghcmVzdWx0LmV4
aXN0cygpKQogICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KQEAgLTQ1
MywxMyArNDcxLDEzIEBAIENvbGxhcHNlZEJvcmRlclZhbHVlIFJlbmRlclRhYmxlQ2VsbDo6Y29s
bGFwc2VkUmlnaHRCb3JkZXIoYm9vbCBydGwpIGNvbnN0CiAgICAgICAgIGNvbEVsdCA9IHRhYmxl
RWx0LT5jb2xFbGVtZW50KGNvbCgpICsgKHJ0bCA/IC0xIDogY29sU3BhbigpKSwgJnN0YXJ0Q29s
RWRnZSwgJmVuZENvbEVkZ2UpOwogICAgICAgICBpZiAoY29sRWx0ICYmICghcnRsID8gc3RhcnRD
b2xFZGdlIDogZW5kQ29sRWRnZSkpIHsKICAgICAgICAgICAgIENvbGxhcHNlZEJvcmRlclZhbHVl
IGxlZnRCb3JkZXIgPSBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmY29sRWx0LT5zdHlsZSgpLT5ib3Jk
ZXJMZWZ0KCksIGNvbEVsdC0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKGxlZnQpLCBC
Q09MKTsKLSAgICAgICAgICAgIHJlc3VsdCA9IHJ0bCA/IGNvbXBhcmVCb3JkZXJzKGxlZnRCb3Jk
ZXIsIHJlc3VsdCkgOiBjb21wYXJlQm9yZGVycyhyZXN1bHQsIGxlZnRCb3JkZXIpOworICAgICAg
ICAgICAgcmVzdWx0ID0gcnRsID8gY2hvb3NlQm9yZGVyKGxlZnRCb3JkZXIsIHJlc3VsdCkgOiBj
aG9vc2VCb3JkZXIocmVzdWx0LCBsZWZ0Qm9yZGVyKTsKICAgICAgICAgICAgIGlmICghcmVzdWx0
LmV4aXN0cygpKQogICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KICAg
ICB9IGVsc2UgewogICAgICAgICAvLyAoNykgVGhlIHRhYmxlJ3MgcmlnaHQgYm9yZGVyLgotICAg
ICAgICByZXN1bHQgPSBjb21wYXJlQm9yZGVycyhyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVl
KCZ0YWJsZUVsdC0+c3R5bGUoKS0+Ym9yZGVyUmlnaHQoKSwgdGFibGVFbHQtPnN0eWxlKCktPnZp
c2l0ZWREZXBlbmRlbnRDb2xvcihyaWdodCksIEJUQUJMRSkpOworICAgICAgICByZXN1bHQgPSBj
aG9vc2VCb3JkZXIocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmdGFibGVFbHQtPnN0eWxl
KCktPmJvcmRlclJpZ2h0KCksIHRhYmxlRWx0LT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29s
b3IocmlnaHQpLCBCVEFCTEUpKTsKICAgICAgICAgaWYgKCFyZXN1bHQuZXhpc3RzKCkpCiAgICAg
ICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KQEAgLTQ3OCwxMyArNDk2LDEzIEBAIENvbGxh
cHNlZEJvcmRlclZhbHVlIFJlbmRlclRhYmxlQ2VsbDo6Y29sbGFwc2VkVG9wQm9yZGVyKCkgY29u
c3QKICAgICBSZW5kZXJUYWJsZUNlbGwqIHByZXZDZWxsID0gdGFibGUoKS0+Y2VsbEFib3ZlKHRo
aXMpOwogICAgIGlmIChwcmV2Q2VsbCkgewogICAgICAgICAvLyAoMikgQSBwcmV2aW91cyBjZWxs
J3MgYm90dG9tIGJvcmRlci4KLSAgICAgICAgcmVzdWx0ID0gY29tcGFyZUJvcmRlcnMoQ29sbGFw
c2VkQm9yZGVyVmFsdWUoJnByZXZDZWxsLT5zdHlsZSgpLT5ib3JkZXJCb3R0b20oKSwgcHJldkNl
bGwtPnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihib3R0b20pLCBCQ0VMTCksIHJlc3Vs
dCk7CisgICAgICAgIHJlc3VsdCA9IGNob29zZUJvcmRlcihDb2xsYXBzZWRCb3JkZXJWYWx1ZSgm
cHJldkNlbGwtPnN0eWxlKCktPmJvcmRlckJvdHRvbSgpLCBwcmV2Q2VsbC0+c3R5bGUoKS0+dmlz
aXRlZERlcGVuZGVudENvbG9yKGJvdHRvbSksIEJDRUxMKSwgcmVzdWx0KTsKICAgICAgICAgaWYg
KCFyZXN1bHQuZXhpc3RzKCkpIAogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAg
ICAgCiAgICAgLy8gKDMpIE91ciByb3cncyB0b3AgYm9yZGVyLgotICAgIHJlc3VsdCA9IGNvbXBh
cmVCb3JkZXJzKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoJnBhcmVudCgpLT5zdHlsZSgp
LT5ib3JkZXJUb3AoKSwgcGFyZW50KCktPnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcih0
b3ApLCBCUk9XKSk7CisgICAgcmVzdWx0ID0gY2hvb3NlQm9yZGVyKHJlc3VsdCwgQ29sbGFwc2Vk
Qm9yZGVyVmFsdWUoJnBhcmVudCgpLT5zdHlsZSgpLT5ib3JkZXJUb3AoKSwgcGFyZW50KCktPnN0
eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcih0b3ApLCBCUk9XKSk7CiAgICAgaWYgKCFyZXN1
bHQuZXhpc3RzKCkpCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgCkBAIC00OTcsNyArNTE1
LDcgQEAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgUmVuZGVyVGFibGVDZWxsOjpjb2xsYXBzZWRUb3BC
b3JkZXIoKSBjb25zdAogICAgICAgICAgICAgcHJldlJvdyA9IHByZXZDZWxsLT5zZWN0aW9uKCkt
Pmxhc3RDaGlsZCgpOwogICAgIAogICAgICAgICBpZiAocHJldlJvdykgewotICAgICAgICAgICAg
cmVzdWx0ID0gY29tcGFyZUJvcmRlcnMoQ29sbGFwc2VkQm9yZGVyVmFsdWUoJnByZXZSb3ctPnN0
eWxlKCktPmJvcmRlckJvdHRvbSgpLCBwcmV2Um93LT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50
Q29sb3IoYm90dG9tKSwgQlJPVyksIHJlc3VsdCk7CisgICAgICAgICAgICByZXN1bHQgPSBjaG9v
c2VCb3JkZXIoQ29sbGFwc2VkQm9yZGVyVmFsdWUoJnByZXZSb3ctPnN0eWxlKCktPmJvcmRlckJv
dHRvbSgpLCBwcmV2Um93LT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoYm90dG9tKSwg
QlJPVyksIHJlc3VsdCk7CiAgICAgICAgICAgICBpZiAoIXJlc3VsdC5leGlzdHMoKSkKICAgICAg
ICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CkBAIC01MDcsMTQgKzUyNSwxNCBA
QCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSBSZW5kZXJUYWJsZUNlbGw6OmNvbGxhcHNlZFRvcEJvcmRl
cigpIGNvbnN0CiAgICAgUmVuZGVyVGFibGVTZWN0aW9uKiBjdXJyU2VjdGlvbiA9IHNlY3Rpb24o
KTsKICAgICBpZiAoIXJvdygpKSB7CiAgICAgICAgIC8vICg1KSBPdXIgcm93IGdyb3VwJ3MgdG9w
IGJvcmRlci4KLSAgICAgICAgcmVzdWx0ID0gY29tcGFyZUJvcmRlcnMocmVzdWx0LCBDb2xsYXBz
ZWRCb3JkZXJWYWx1ZSgmY3VyclNlY3Rpb24tPnN0eWxlKCktPmJvcmRlclRvcCgpLCBjdXJyU2Vj
dGlvbi0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKHRvcCksIEJST1dHUk9VUCkpOwor
ICAgICAgICByZXN1bHQgPSBjaG9vc2VCb3JkZXIocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1
ZSgmY3VyclNlY3Rpb24tPnN0eWxlKCktPmJvcmRlclRvcCgpLCBjdXJyU2VjdGlvbi0+c3R5bGUo
KS0+dmlzaXRlZERlcGVuZGVudENvbG9yKHRvcCksIEJST1dHUk9VUCkpOwogICAgICAgICBpZiAo
IXJlc3VsdC5leGlzdHMoKSkKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIAog
ICAgICAgICAvLyAoNikgUHJldmlvdXMgcm93IGdyb3VwJ3MgYm90dG9tIGJvcmRlci4KICAgICAg
ICAgY3VyclNlY3Rpb24gPSB0YWJsZSgpLT5zZWN0aW9uQWJvdmUoY3VyclNlY3Rpb24pOwogICAg
ICAgICBpZiAoY3VyclNlY3Rpb24pIHsKLSAgICAgICAgICAgIHJlc3VsdCA9IGNvbXBhcmVCb3Jk
ZXJzKENvbGxhcHNlZEJvcmRlclZhbHVlKCZjdXJyU2VjdGlvbi0+c3R5bGUoKS0+Ym9yZGVyQm90
dG9tKCksIGN1cnJTZWN0aW9uLT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoYm90dG9t
KSwgQlJPV0dST1VQKSwgcmVzdWx0KTsKKyAgICAgICAgICAgIHJlc3VsdCA9IGNob29zZUJvcmRl
cihDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmY3VyclNlY3Rpb24tPnN0eWxlKCktPmJvcmRlckJvdHRv
bSgpLCBjdXJyU2VjdGlvbi0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKGJvdHRvbSks
IEJST1dHUk9VUCksIHJlc3VsdCk7CiAgICAgICAgICAgICBpZiAoIXJlc3VsdC5leGlzdHMoKSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CkBAIC01MjQsMTEgKzU0
MiwxMSBAQCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSBSZW5kZXJUYWJsZUNlbGw6OmNvbGxhcHNlZFRv
cEJvcmRlcigpIGNvbnN0CiAgICAgICAgIC8vICg4KSBPdXIgY29sdW1uIGFuZCBjb2x1bW4gZ3Jv
dXAncyB0b3AgYm9yZGVycy4KICAgICAgICAgUmVuZGVyVGFibGVDb2wqIGNvbEVsdCA9IHRhYmxl
KCktPmNvbEVsZW1lbnQoY29sKCkpOwogICAgICAgICBpZiAoY29sRWx0KSB7Ci0gICAgICAgICAg
ICByZXN1bHQgPSBjb21wYXJlQm9yZGVycyhyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKCZj
b2xFbHQtPnN0eWxlKCktPmJvcmRlclRvcCgpLCBjb2xFbHQtPnN0eWxlKCktPnZpc2l0ZWREZXBl
bmRlbnRDb2xvcih0b3ApLCBCQ09MKSk7CisgICAgICAgICAgICByZXN1bHQgPSBjaG9vc2VCb3Jk
ZXIocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmY29sRWx0LT5zdHlsZSgpLT5ib3JkZXJU
b3AoKSwgY29sRWx0LT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IodG9wKSwgQkNPTCkp
OwogICAgICAgICAgICAgaWYgKCFyZXN1bHQuZXhpc3RzKCkpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKICAgICAgICAgICAgIGlmIChjb2xFbHQtPnBhcmVudCgpLT5pc1RhYmxlQ29s
KCkpIHsKLSAgICAgICAgICAgICAgICByZXN1bHQgPSBjb21wYXJlQm9yZGVycyhyZXN1bHQsIENv
bGxhcHNlZEJvcmRlclZhbHVlKCZjb2xFbHQtPnBhcmVudCgpLT5zdHlsZSgpLT5ib3JkZXJUb3Ao
KSwgY29sRWx0LT5wYXJlbnQoKS0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKHRvcCks
IEJDT0xHUk9VUCkpOworICAgICAgICAgICAgICAgIHJlc3VsdCA9IGNob29zZUJvcmRlcihyZXN1
bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKCZjb2xFbHQtPnBhcmVudCgpLT5zdHlsZSgpLT5ib3Jk
ZXJUb3AoKSwgY29sRWx0LT5wYXJlbnQoKS0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9y
KHRvcCksIEJDT0xHUk9VUCkpOwogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0LmV4aXN0cygp
KQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgICAgfQpAQCAt
NTM2LDcgKzU1NCw3IEBAIENvbGxhcHNlZEJvcmRlclZhbHVlIFJlbmRlclRhYmxlQ2VsbDo6Y29s
bGFwc2VkVG9wQm9yZGVyKCkgY29uc3QKICAgICAgICAgCiAgICAgICAgIC8vICg5KSBUaGUgdGFi
bGUncyB0b3AgYm9yZGVyLgogICAgICAgICBSZW5kZXJUYWJsZSogZW5jbG9zaW5nVGFibGUgPSB0
YWJsZSgpOwotICAgICAgICByZXN1bHQgPSBjb21wYXJlQm9yZGVycyhyZXN1bHQsIENvbGxhcHNl
ZEJvcmRlclZhbHVlKCZlbmNsb3NpbmdUYWJsZS0+c3R5bGUoKS0+Ym9yZGVyVG9wKCksIGVuY2xv
c2luZ1RhYmxlLT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IodG9wKSwgQlRBQkxFKSk7
CisgICAgICAgIHJlc3VsdCA9IGNob29zZUJvcmRlcihyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZh
bHVlKCZlbmNsb3NpbmdUYWJsZS0+c3R5bGUoKS0+Ym9yZGVyVG9wKCksIGVuY2xvc2luZ1RhYmxl
LT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IodG9wKSwgQlRBQkxFKSk7CiAgICAgICAg
IGlmICghcmVzdWx0LmV4aXN0cygpKQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9
CkBAIC01NTUsMTkgKzU3MywxOSBAQCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSBSZW5kZXJUYWJsZUNl
bGw6OmNvbGxhcHNlZEJvdHRvbUJvcmRlcigpIGNvbnN0CiAgICAgUmVuZGVyVGFibGVDZWxsKiBu
ZXh0Q2VsbCA9IHRhYmxlKCktPmNlbGxCZWxvdyh0aGlzKTsKICAgICBpZiAobmV4dENlbGwpIHsK
ICAgICAgICAgLy8gKDIpIEEgZm9sbG93aW5nIGNlbGwncyB0b3AgYm9yZGVyLgotICAgICAgICBy
ZXN1bHQgPSBjb21wYXJlQm9yZGVycyhyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKCZuZXh0
Q2VsbC0+c3R5bGUoKS0+Ym9yZGVyVG9wKCksIG5leHRDZWxsLT5zdHlsZSgpLT52aXNpdGVkRGVw
ZW5kZW50Q29sb3IodG9wKSwgQkNFTEwpKTsKKyAgICAgICAgcmVzdWx0ID0gY2hvb3NlQm9yZGVy
KHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoJm5leHRDZWxsLT5zdHlsZSgpLT5ib3JkZXJU
b3AoKSwgbmV4dENlbGwtPnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcih0b3ApLCBCQ0VM
TCkpOwogICAgICAgICBpZiAoIXJlc3VsdC5leGlzdHMoKSkKICAgICAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAgICAgfQogICAgIAogICAgIC8vICgzKSBPdXIgcm93J3MgYm90dG9tIGJvcmRlci4g
KEZJWE1FOiBEZWFsIHdpdGggcm93c3BhbiEpCi0gICAgcmVzdWx0ID0gY29tcGFyZUJvcmRlcnMo
cmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmcGFyZW50KCktPnN0eWxlKCktPmJvcmRlckJv
dHRvbSgpLCBwYXJlbnQoKS0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKGJvdHRvbSks
IEJST1cpKTsKKyAgICByZXN1bHQgPSBjaG9vc2VCb3JkZXIocmVzdWx0LCBDb2xsYXBzZWRCb3Jk
ZXJWYWx1ZSgmcGFyZW50KCktPnN0eWxlKCktPmJvcmRlckJvdHRvbSgpLCBwYXJlbnQoKS0+c3R5
bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKGJvdHRvbSksIEJST1cpKTsKICAgICBpZiAoIXJl
c3VsdC5leGlzdHMoKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAKICAgICAvLyAoNCkg
VGhlIG5leHQgcm93J3MgdG9wIGJvcmRlci4KICAgICBpZiAobmV4dENlbGwpIHsKLSAgICAgICAg
cmVzdWx0ID0gY29tcGFyZUJvcmRlcnMocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmbmV4
dENlbGwtPnBhcmVudCgpLT5zdHlsZSgpLT5ib3JkZXJUb3AoKSwgbmV4dENlbGwtPnBhcmVudCgp
LT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IodG9wKSwgQlJPVykpOworICAgICAgICBy
ZXN1bHQgPSBjaG9vc2VCb3JkZXIocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmbmV4dENl
bGwtPnBhcmVudCgpLT5zdHlsZSgpLT5ib3JkZXJUb3AoKSwgbmV4dENlbGwtPnBhcmVudCgpLT5z
dHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IodG9wKSwgQlJPVykpOwogICAgICAgICBpZiAo
IXJlc3VsdC5leGlzdHMoKSkKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQpAQCAt
NTc2LDE0ICs1OTQsMTQgQEAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgUmVuZGVyVGFibGVDZWxsOjpj
b2xsYXBzZWRCb3R0b21Cb3JkZXIoKSBjb25zdAogICAgIFJlbmRlclRhYmxlU2VjdGlvbiogY3Vy
clNlY3Rpb24gPSBzZWN0aW9uKCk7CiAgICAgaWYgKHJvdygpICsgcm93U3BhbigpID49IGN1cnJT
ZWN0aW9uLT5udW1Sb3dzKCkpIHsKICAgICAgICAgLy8gKDUpIE91ciByb3cgZ3JvdXAncyBib3R0
b20gYm9yZGVyLgotICAgICAgICByZXN1bHQgPSBjb21wYXJlQm9yZGVycyhyZXN1bHQsIENvbGxh
cHNlZEJvcmRlclZhbHVlKCZjdXJyU2VjdGlvbi0+c3R5bGUoKS0+Ym9yZGVyQm90dG9tKCksIGN1
cnJTZWN0aW9uLT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoYm90dG9tKSwgQlJPV0dS
T1VQKSk7CisgICAgICAgIHJlc3VsdCA9IGNob29zZUJvcmRlcihyZXN1bHQsIENvbGxhcHNlZEJv
cmRlclZhbHVlKCZjdXJyU2VjdGlvbi0+c3R5bGUoKS0+Ym9yZGVyQm90dG9tKCksIGN1cnJTZWN0
aW9uLT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoYm90dG9tKSwgQlJPV0dST1VQKSk7
CiAgICAgICAgIGlmICghcmVzdWx0LmV4aXN0cygpKQogICAgICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICAgICAgCiAgICAgICAgIC8vICg2KSBGb2xsb3dpbmcgcm93IGdyb3VwJ3MgdG9wIGJv
cmRlci4KICAgICAgICAgY3VyclNlY3Rpb24gPSB0YWJsZSgpLT5zZWN0aW9uQmVsb3coY3VyclNl
Y3Rpb24pOwogICAgICAgICBpZiAoY3VyclNlY3Rpb24pIHsKLSAgICAgICAgICAgIHJlc3VsdCA9
IGNvbXBhcmVCb3JkZXJzKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoJmN1cnJTZWN0aW9u
LT5zdHlsZSgpLT5ib3JkZXJUb3AoKSwgY3VyclNlY3Rpb24tPnN0eWxlKCktPnZpc2l0ZWREZXBl
bmRlbnRDb2xvcih0b3ApLCBCUk9XR1JPVVApKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IGNob29z
ZUJvcmRlcihyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKCZjdXJyU2VjdGlvbi0+c3R5bGUo
KS0+Ym9yZGVyVG9wKCksIGN1cnJTZWN0aW9uLT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29s
b3IodG9wKSwgQlJPV0dST1VQKSk7CiAgICAgICAgICAgICBpZiAoIXJlc3VsdC5leGlzdHMoKSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CkBAIC01OTMsMTAgKzYx
MSwxMCBAQCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSBSZW5kZXJUYWJsZUNlbGw6OmNvbGxhcHNlZEJv
dHRvbUJvcmRlcigpIGNvbnN0CiAgICAgICAgIC8vICg4KSBPdXIgY29sdW1uIGFuZCBjb2x1bW4g
Z3JvdXAncyBib3R0b20gYm9yZGVycy4KICAgICAgICAgUmVuZGVyVGFibGVDb2wqIGNvbEVsdCA9
IHRhYmxlKCktPmNvbEVsZW1lbnQoY29sKCkpOwogICAgICAgICBpZiAoY29sRWx0KSB7Ci0gICAg
ICAgICAgICByZXN1bHQgPSBjb21wYXJlQm9yZGVycyhyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZh
bHVlKCZjb2xFbHQtPnN0eWxlKCktPmJvcmRlckJvdHRvbSgpLCBjb2xFbHQtPnN0eWxlKCktPnZp
c2l0ZWREZXBlbmRlbnRDb2xvcihib3R0b20pLCBCQ09MKSk7CisgICAgICAgICAgICByZXN1bHQg
PSBjaG9vc2VCb3JkZXIocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmY29sRWx0LT5zdHls
ZSgpLT5ib3JkZXJCb3R0b20oKSwgY29sRWx0LT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29s
b3IoYm90dG9tKSwgQkNPTCkpOwogICAgICAgICAgICAgaWYgKCFyZXN1bHQuZXhpc3RzKCkpIHJl
dHVybiByZXN1bHQ7CiAgICAgICAgICAgICBpZiAoY29sRWx0LT5wYXJlbnQoKS0+aXNUYWJsZUNv
bCgpKSB7Ci0gICAgICAgICAgICAgICAgcmVzdWx0ID0gY29tcGFyZUJvcmRlcnMocmVzdWx0LCBD
b2xsYXBzZWRCb3JkZXJWYWx1ZSgmY29sRWx0LT5wYXJlbnQoKS0+c3R5bGUoKS0+Ym9yZGVyQm90
dG9tKCksIGNvbEVsdC0+cGFyZW50KCktPnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihi
b3R0b20pLCBCQ09MR1JPVVApKTsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBjaG9vc2VCb3Jk
ZXIocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmY29sRWx0LT5wYXJlbnQoKS0+c3R5bGUo
KS0+Ym9yZGVyQm90dG9tKCksIGNvbEVsdC0+cGFyZW50KCktPnN0eWxlKCktPnZpc2l0ZWREZXBl
bmRlbnRDb2xvcihib3R0b20pLCBCQ09MR1JPVVApKTsKICAgICAgICAgICAgICAgICBpZiAoIXJl
c3VsdC5leGlzdHMoKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAg
ICAgICAgIH0KQEAgLTYwNCw3ICs2MjIsNyBAQCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSBSZW5kZXJU
YWJsZUNlbGw6OmNvbGxhcHNlZEJvdHRvbUJvcmRlcigpIGNvbnN0CiAgICAgICAgIAogICAgICAg
ICAvLyAoOSkgVGhlIHRhYmxlJ3MgYm90dG9tIGJvcmRlci4KICAgICAgICAgUmVuZGVyVGFibGUq
IGVuY2xvc2luZ1RhYmxlID0gdGFibGUoKTsKLSAgICAgICAgcmVzdWx0ID0gY29tcGFyZUJvcmRl
cnMocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmZW5jbG9zaW5nVGFibGUtPnN0eWxlKCkt
PmJvcmRlckJvdHRvbSgpLCBlbmNsb3NpbmdUYWJsZS0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVu
dENvbG9yKGJvdHRvbSksIEJUQUJMRSkpOworICAgICAgICByZXN1bHQgPSBjaG9vc2VCb3JkZXIo
cmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmZW5jbG9zaW5nVGFibGUtPnN0eWxlKCktPmJv
cmRlckJvdHRvbSgpLCBlbmNsb3NpbmdUYWJsZS0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENv
bG9yKGJvdHRvbSksIEJUQUJMRSkpOwogICAgICAgICBpZiAoIXJlc3VsdC5leGlzdHMoKSkKICAg
ICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQpAQCAtNzY3LDEwICs3ODUsNyBAQCBzdGF0
aWMgaW50IGNvbXBhcmVCb3JkZXJTdHlsZXNGb3JRU29ydChjb25zdCB2b2lkKiBwYSwgY29uc3Qg
dm9pZCogcGIpCiAgICAgY29uc3QgQ29sbGFwc2VkQm9yZGVyVmFsdWUqIGIgPSBzdGF0aWNfY2Fz
dDxjb25zdCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSo+KHBiKTsKICAgICBpZiAoKmEgPT0gKmIpCiAg
ICAgICAgIHJldHVybiAwOwotICAgIENvbGxhcHNlZEJvcmRlclZhbHVlIGJvcmRlcldpdGhIaWdo
ZXJQcmVjZWRlbmNlID0gY29tcGFyZUJvcmRlcnMoKmEsICpiKTsKLSAgICBpZiAoKmEgPT0gYm9y
ZGVyV2l0aEhpZ2hlclByZWNlZGVuY2UpCi0gICAgICAgIHJldHVybiAxOwotICAgIHJldHVybiAt
MTsKKyAgICByZXR1cm4gY29tcGFyZUJvcmRlcnMoKmEsICpiKTsKIH0KIAogdm9pZCBSZW5kZXJU
YWJsZUNlbGw6OnNvcnRCb3JkZXJTdHlsZXMoQ29sbGFwc2VkQm9yZGVyU3R5bGVzJiBib3JkZXJT
dHlsZXMpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>62429</attachid>
            <date>2010-07-23 08:49:03 -0700</date>
            <delta_ts>2010-09-20 10:55:57 -0700</delta_ts>
            <desc>Fix comments &amp; keep old behavior for BNONE style</desc>
            <filename>39966.patch</filename>
            <type>text/plain</type>
            <size>20927</size>
            <attacher name="Yong Li">yong.li.webkit</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NTQ3NWFiNy4uOGRmZGY3NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxMC0wNi0wNyAgWW9uZyBMaSAgPHlv
bGlAcmltLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk5NjYKKyAgICAg
ICAgTWFrZSBjb21wYXJlQm9yZGVycygpIGEgY29uc2lzdGVudCBjb21wYXJlIGZ1bmN0aW9uIHdo
aWNoIGNhbiBiZXVzZWQgYnkgcXNvcnQoKS4KKworICAgICAgICBOZXcgdGVzdCBjYXNlIGFkZGVk
OiBMYXlvdXRUZXN0cy90YWJsZXMvc29ydC1jb2xsYXBzZWQtYm9yZGVyLXN0eWxlcy5odG1sCisK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNvbXBhcmVCb3JkZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OmNob29zZUJvcmRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZUNlbGw6OmNvbGxhcHNlZExlZnRCb3JkZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVDZWxsOjpjb2xsYXBzZWRSaWdodEJvcmRlcik6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZUNlbGw6OmNvbGxhcHNlZFRvcEJvcmRlcik6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZUNlbGw6OmNvbGxhcHNlZEJvdHRvbUJvcmRl
cik6CisgICAgICAgIChXZWJDb3JlOjpjb21wYXJlQm9yZGVyU3R5bGVzRm9yUVNvcnQpOgorCiAy
MDEwLTA3LTIzICByeXVhbiBjaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVzLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGFibGVDZWxsLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2Vs
bC5jcHAKaW5kZXggZDRhMzEwYi4uOWMzZmMzMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGFibGVDZWxsLmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJs
ZUNlbGwuY3BwCkBAIC0yOTUsMzQgKzI5NSw1MyBAQCB2b2lkIFJlbmRlclRhYmxlQ2VsbDo6c3R5
bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlKiBvbAog
Ly8gKDQpIElmIGJvcmRlciBzdHlsZXMgZGlmZmVyIG9ubHkgaW4gY29sb3IsIHRoZW4gYSBzdHls
ZSBzZXQgb24gYSBjZWxsIHdpbnMgb3ZlciBvbmUgb24gYSByb3csIAogLy8gd2hpY2ggd2lucyBv
dmVyIGEgcm93IGdyb3VwLCBjb2x1bW4sIGNvbHVtbiBncm91cCBhbmQsIGxhc3RseSwgdGFibGUu
IEl0IGlzIHVuZGVmaW5lZCB3aGljaCBjb2xvciAKIC8vIGlzIHVzZWQgd2hlbiB0d28gZWxlbWVu
dHMgb2YgdGhlIHNhbWUgdHlwZSBkaXNhZ3JlZS4KLXN0YXRpYyBDb2xsYXBzZWRCb3JkZXJWYWx1
ZSBjb21wYXJlQm9yZGVycyhjb25zdCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSYgYm9yZGVyMSwgY29u
c3QgQ29sbGFwc2VkQm9yZGVyVmFsdWUmIGJvcmRlcjIpCitzdGF0aWMgaW50IGNvbXBhcmVCb3Jk
ZXJzKGNvbnN0IENvbGxhcHNlZEJvcmRlclZhbHVlJiBib3JkZXIxLCBjb25zdCBDb2xsYXBzZWRC
b3JkZXJWYWx1ZSYgYm9yZGVyMikKIHsKLSAgICAvLyBTYW5pdHkgY2hlY2sgdGhlIHZhbHVlcyBw
YXNzZWQgaW4uICBJZiBlaXRoZXIgaXMgbnVsbCwgcmV0dXJuIHRoZSBvdGhlci4KLSAgICBpZiAo
IWJvcmRlcjIuZXhpc3RzKCkpCi0gICAgICAgIHJldHVybiBib3JkZXIxOworICAgIC8vIFNhbml0
eSBjaGVjayB0aGUgdmFsdWVzIHBhc3NlZCBpbi4gVGhlIG51bGwgYm9yZGVyIGhhdmUgbG93ZXN0
IHByaW9yaXR5LgorICAgIGlmICghYm9yZGVyMi5leGlzdHMoKSkgeworICAgICAgICBpZiAoIWJv
cmRlcjEuZXhpc3RzKCkpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIDE7
CisgICAgfQogICAgIGlmICghYm9yZGVyMS5leGlzdHMoKSkKLSAgICAgICAgcmV0dXJuIGJvcmRl
cjI7CisgICAgICAgIHJldHVybiAtMTsKIAogICAgIC8vIFJ1bGUgIzEgYWJvdmUuCi0gICAgaWYg
KGJvcmRlcjEuc3R5bGUoKSA9PSBCSElEREVOIHx8IGJvcmRlcjIuc3R5bGUoKSA9PSBCSElEREVO
KQotICAgICAgICByZXR1cm4gQ29sbGFwc2VkQm9yZGVyVmFsdWUoKTsgLy8gTm8gYm9yZGVyIHNo
b3VsZCBleGlzdCBhdCB0aGlzIGxvY2F0aW9uLgorICAgIGlmIChib3JkZXIyLnN0eWxlKCkgPT0g
QkhJRERFTikgeworICAgICAgICBpZiAoYm9yZGVyMS5zdHlsZSgpID09IEJISURERU4pCisgICAg
ICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAoYm9y
ZGVyMS5zdHlsZSgpID09IEJISURERU4pCisgICAgICAgIHJldHVybiAxOwogICAgIAogICAgIC8v
IFJ1bGUgIzIgYWJvdmUuICBBIHN0eWxlIG9mICdub25lJyBoYXMgbG93ZXN0IHByaW9yaXR5IGFu
ZCBhbHdheXMgbG9zZXMgdG8gYW55IG90aGVyIGJvcmRlci4KLSAgICBpZiAoYm9yZGVyMi5zdHls
ZSgpID09IEJOT05FKQotICAgICAgICByZXR1cm4gYm9yZGVyMTsKKyAgICBpZiAoYm9yZGVyMi5z
dHlsZSgpID09IEJOT05FKSB7CisgICAgICAgIGlmIChib3JkZXIxLnN0eWxlKCkgPT0gQk5PTkUp
CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQogICAgIGlm
IChib3JkZXIxLnN0eWxlKCkgPT0gQk5PTkUpCi0gICAgICAgIHJldHVybiBib3JkZXIyOworICAg
ICAgICByZXR1cm4gLTE7CiAKICAgICAvLyBUaGUgZmlyc3QgcGFydCBvZiBydWxlICMzIGFib3Zl
LiBXaWRlciBib3JkZXJzIHdpbi4KICAgICBpZiAoYm9yZGVyMS53aWR0aCgpICE9IGJvcmRlcjIu
d2lkdGgoKSkKLSAgICAgICAgcmV0dXJuIGJvcmRlcjEud2lkdGgoKSA+IGJvcmRlcjIud2lkdGgo
KSA/IGJvcmRlcjEgOiBib3JkZXIyOworICAgICAgICByZXR1cm4gYm9yZGVyMS53aWR0aCgpIDwg
Ym9yZGVyMi53aWR0aCgpID8gLTEgOiAxOwogICAgIAogICAgIC8vIFRoZSBib3JkZXJzIGhhdmUg
ZXF1YWwgd2lkdGguICBTb3J0IGJ5IGJvcmRlciBzdHlsZS4KICAgICBpZiAoYm9yZGVyMS5zdHls
ZSgpICE9IGJvcmRlcjIuc3R5bGUoKSkKLSAgICAgICAgcmV0dXJuIGJvcmRlcjEuc3R5bGUoKSA+
IGJvcmRlcjIuc3R5bGUoKSA/IGJvcmRlcjEgOiBib3JkZXIyOworICAgICAgICByZXR1cm4gYm9y
ZGVyMS5zdHlsZSgpIDwgYm9yZGVyMi5zdHlsZSgpID8gLTEgOiAxOwogICAgIAogICAgIC8vIFRo
ZSBib3JkZXIgaGF2ZSB0aGUgc2FtZSB3aWR0aCBhbmQgc3R5bGUuICBSZWx5IG9uIHByZWNlZGVu
Y2UgKGNlbGwgb3ZlciByb3cgb3ZlciByb3cgZ3JvdXAsIGV0Yy4pCi0gICAgcmV0dXJuIGJvcmRl
cjEucHJlY2VkZW5jZSgpID49IGJvcmRlcjIucHJlY2VkZW5jZSgpID8gYm9yZGVyMSA6IGJvcmRl
cjI7CisgICAgaWYgKGJvcmRlcjEucHJlY2VkZW5jZSgpID09IGJvcmRlcjIucHJlY2VkZW5jZSgp
KQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gYm9yZGVyMS5wcmVjZWRlbmNlKCkgPCBi
b3JkZXIyLnByZWNlZGVuY2UoKSA/IC0xIDogMTsKK30KKworc3RhdGljIENvbGxhcHNlZEJvcmRl
clZhbHVlIGNob29zZUJvcmRlcihjb25zdCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSYgYm9yZGVyMSwg
Y29uc3QgQ29sbGFwc2VkQm9yZGVyVmFsdWUmIGJvcmRlcjIpCit7CisgICAgY29uc3QgQ29sbGFw
c2VkQm9yZGVyVmFsdWUmIGJvcmRlciA9IGNvbXBhcmVCb3JkZXJzKGJvcmRlcjEsIGJvcmRlcjIp
IDwgMCA/IGJvcmRlcjIgOiBib3JkZXIxOworICAgIHJldHVybiBib3JkZXIuc3R5bGUoKSA9PSBC
SElEREVOID8gQ29sbGFwc2VkQm9yZGVyVmFsdWUoKSA6IGJvcmRlcjsKIH0KIAogQ29sbGFwc2Vk
Qm9yZGVyVmFsdWUgUmVuZGVyVGFibGVDZWxsOjpjb2xsYXBzZWRMZWZ0Qm9yZGVyKGJvb2wgcnRs
KSBjb25zdApAQCAtMzQ2LDE3ICszNjUsMTcgQEAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgUmVuZGVy
VGFibGVDZWxsOjpjb2xsYXBzZWRMZWZ0Qm9yZGVyKGJvb2wgcnRsKSBjb25zdAogICAgIFJlbmRl
clRhYmxlQ2VsbCogcHJldkNlbGwgPSBydGwgPyB0YWJsZUVsdC0+Y2VsbEFmdGVyKHRoaXMpIDog
dGFibGVFbHQtPmNlbGxCZWZvcmUodGhpcyk7CiAgICAgaWYgKHByZXZDZWxsKSB7CiAgICAgICAg
IENvbGxhcHNlZEJvcmRlclZhbHVlIHByZXZDZWxsQm9yZGVyID0gQ29sbGFwc2VkQm9yZGVyVmFs
dWUoJnByZXZDZWxsLT5zdHlsZSgpLT5ib3JkZXJSaWdodCgpLCBwcmV2Q2VsbC0+c3R5bGUoKS0+
dmlzaXRlZERlcGVuZGVudENvbG9yKHJpZ2h0KSwgQkNFTEwpOwotICAgICAgICByZXN1bHQgPSBy
dGwgPyBjb21wYXJlQm9yZGVycyhyZXN1bHQsIHByZXZDZWxsQm9yZGVyKSA6IGNvbXBhcmVCb3Jk
ZXJzKHByZXZDZWxsQm9yZGVyLCByZXN1bHQpOworICAgICAgICByZXN1bHQgPSBydGwgPyBjaG9v
c2VCb3JkZXIocmVzdWx0LCBwcmV2Q2VsbEJvcmRlcikgOiBjaG9vc2VCb3JkZXIocHJldkNlbGxC
b3JkZXIsIHJlc3VsdCk7CiAgICAgICAgIGlmICghcmVzdWx0LmV4aXN0cygpKQogICAgICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgICB9IGVsc2UgaWYgKGxlZnRtb3N0Q29sdW1uKSB7CiAgICAg
ICAgIC8vICgzKSBPdXIgcm93J3MgbGVmdCBib3JkZXIuCi0gICAgICAgIHJlc3VsdCA9IGNvbXBh
cmVCb3JkZXJzKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoJnBhcmVudCgpLT5zdHlsZSgp
LT5ib3JkZXJMZWZ0KCksIHBhcmVudCgpLT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3Io
bGVmdCksIEJST1cpKTsKKyAgICAgICAgcmVzdWx0ID0gY2hvb3NlQm9yZGVyKHJlc3VsdCwgQ29s
bGFwc2VkQm9yZGVyVmFsdWUoJnBhcmVudCgpLT5zdHlsZSgpLT5ib3JkZXJMZWZ0KCksIHBhcmVu
dCgpLT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IobGVmdCksIEJST1cpKTsKICAgICAg
ICAgaWYgKCFyZXN1bHQuZXhpc3RzKCkpCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAg
ICAgICAKICAgICAgICAgLy8gKDQpIE91ciByb3cgZ3JvdXAncyBsZWZ0IGJvcmRlci4KLSAgICAg
ICAgcmVzdWx0ID0gY29tcGFyZUJvcmRlcnMocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgm
c2VjdGlvbigpLT5zdHlsZSgpLT5ib3JkZXJMZWZ0KCksIHNlY3Rpb24oKS0+c3R5bGUoKS0+dmlz
aXRlZERlcGVuZGVudENvbG9yKGxlZnQpLCBCUk9XR1JPVVApKTsKKyAgICAgICAgcmVzdWx0ID0g
Y2hvb3NlQm9yZGVyKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoJnNlY3Rpb24oKS0+c3R5
bGUoKS0+Ym9yZGVyTGVmdCgpLCBzZWN0aW9uKCktPnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRD
b2xvcihsZWZ0KSwgQlJPV0dST1VQKSk7CiAgICAgICAgIGlmICghcmVzdWx0LmV4aXN0cygpKQog
ICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CkBAIC0zNjYsMTEgKzM4NSwxMSBAQCBD
b2xsYXBzZWRCb3JkZXJWYWx1ZSBSZW5kZXJUYWJsZUNlbGw6OmNvbGxhcHNlZExlZnRCb3JkZXIo
Ym9vbCBydGwpIGNvbnN0CiAgICAgYm9vbCBlbmRDb2xFZGdlOwogICAgIFJlbmRlclRhYmxlQ29s
KiBjb2xFbHQgPSB0YWJsZUVsdC0+Y29sRWxlbWVudChjb2woKSArIChydGwgPyBjb2xTcGFuKCkg
LSAxIDogMCksICZzdGFydENvbEVkZ2UsICZlbmRDb2xFZGdlKTsKICAgICBpZiAoY29sRWx0ICYm
ICghcnRsID8gc3RhcnRDb2xFZGdlIDogZW5kQ29sRWRnZSkpIHsKLSAgICAgICAgcmVzdWx0ID0g
Y29tcGFyZUJvcmRlcnMocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmY29sRWx0LT5zdHls
ZSgpLT5ib3JkZXJMZWZ0KCksIGNvbEVsdC0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9y
KGxlZnQpLCBCQ09MKSk7CisgICAgICAgIHJlc3VsdCA9IGNob29zZUJvcmRlcihyZXN1bHQsIENv
bGxhcHNlZEJvcmRlclZhbHVlKCZjb2xFbHQtPnN0eWxlKCktPmJvcmRlckxlZnQoKSwgY29sRWx0
LT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IobGVmdCksIEJDT0wpKTsKICAgICAgICAg
aWYgKCFyZXN1bHQuZXhpc3RzKCkpCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAg
ICBpZiAoY29sRWx0LT5wYXJlbnQoKS0+aXNUYWJsZUNvbCgpICYmICghcnRsID8gIWNvbEVsdC0+
cHJldmlvdXNTaWJsaW5nKCkgOiAhY29sRWx0LT5uZXh0U2libGluZygpKSkgewotICAgICAgICAg
ICAgcmVzdWx0ID0gY29tcGFyZUJvcmRlcnMocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgm
Y29sRWx0LT5wYXJlbnQoKS0+c3R5bGUoKS0+Ym9yZGVyTGVmdCgpLCBjb2xFbHQtPnBhcmVudCgp
LT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IobGVmdCksIEJDT0xHUk9VUCkpOworICAg
ICAgICAgICAgcmVzdWx0ID0gY2hvb3NlQm9yZGVyKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFs
dWUoJmNvbEVsdC0+cGFyZW50KCktPnN0eWxlKCktPmJvcmRlckxlZnQoKSwgY29sRWx0LT5wYXJl
bnQoKS0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKGxlZnQpLCBCQ09MR1JPVVApKTsK
ICAgICAgICAgICAgIGlmICghcmVzdWx0LmV4aXN0cygpKQogICAgICAgICAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgICAgIH0KQEAgLTM4MSwxMyArNDAwLDEzIEBAIENvbGxhcHNlZEJvcmRl
clZhbHVlIFJlbmRlclRhYmxlQ2VsbDo6Y29sbGFwc2VkTGVmdEJvcmRlcihib29sIHJ0bCkgY29u
c3QKICAgICAgICAgY29sRWx0ID0gdGFibGVFbHQtPmNvbEVsZW1lbnQoY29sKCkgKyAocnRsID8g
Y29sU3BhbigpIDogLTEpLCAmc3RhcnRDb2xFZGdlLCAmZW5kQ29sRWRnZSk7CiAgICAgICAgIGlm
IChjb2xFbHQgJiYgKCFydGwgPyBlbmRDb2xFZGdlIDogc3RhcnRDb2xFZGdlKSkgewogICAgICAg
ICAgICAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgcmlnaHRCb3JkZXIgPSBDb2xsYXBzZWRCb3JkZXJW
YWx1ZSgmY29sRWx0LT5zdHlsZSgpLT5ib3JkZXJSaWdodCgpLCBjb2xFbHQtPnN0eWxlKCktPnZp
c2l0ZWREZXBlbmRlbnRDb2xvcihyaWdodCksIEJDT0wpOwotICAgICAgICAgICAgcmVzdWx0ID0g
cnRsID8gY29tcGFyZUJvcmRlcnMocmVzdWx0LCByaWdodEJvcmRlcikgOiBjb21wYXJlQm9yZGVy
cyhyaWdodEJvcmRlciwgcmVzdWx0KTsKKyAgICAgICAgICAgIHJlc3VsdCA9IHJ0bCA/IGNob29z
ZUJvcmRlcihyZXN1bHQsIHJpZ2h0Qm9yZGVyKSA6IGNob29zZUJvcmRlcihyaWdodEJvcmRlciwg
cmVzdWx0KTsKICAgICAgICAgICAgIGlmICghcmVzdWx0LmV4aXN0cygpKQogICAgICAgICAgICAg
ICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICAvLyAo
NykgVGhlIHRhYmxlJ3MgbGVmdCBib3JkZXIuCi0gICAgICAgIHJlc3VsdCA9IGNvbXBhcmVCb3Jk
ZXJzKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoJnRhYmxlRWx0LT5zdHlsZSgpLT5ib3Jk
ZXJMZWZ0KCksIHRhYmxlRWx0LT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IobGVmdCks
IEJUQUJMRSkpOworICAgICAgICByZXN1bHQgPSBjaG9vc2VCb3JkZXIocmVzdWx0LCBDb2xsYXBz
ZWRCb3JkZXJWYWx1ZSgmdGFibGVFbHQtPnN0eWxlKCktPmJvcmRlckxlZnQoKSwgdGFibGVFbHQt
PnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihsZWZ0KSwgQlRBQkxFKSk7CiAgICAgICAg
IGlmICghcmVzdWx0LmV4aXN0cygpKQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9
CkBAIC00MTcsMTggKzQzNiwxOCBAQCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSBSZW5kZXJUYWJsZUNl
bGw6OmNvbGxhcHNlZFJpZ2h0Qm9yZGVyKGJvb2wgcnRsKSBjb25zdAogICAgICAgICBSZW5kZXJU
YWJsZUNlbGwqIG5leHRDZWxsID0gcnRsID8gdGFibGVFbHQtPmNlbGxCZWZvcmUodGhpcykgOiB0
YWJsZUVsdC0+Y2VsbEFmdGVyKHRoaXMpOwogICAgICAgICBpZiAobmV4dENlbGwgJiYgbmV4dENl
bGwtPnN0eWxlKCkpIHsKICAgICAgICAgICAgIENvbGxhcHNlZEJvcmRlclZhbHVlIGxlZnRCb3Jk
ZXIgPSBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmbmV4dENlbGwtPnN0eWxlKCktPmJvcmRlckxlZnQo
KSwgbmV4dENlbGwtPnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihsZWZ0KSwgQkNFTEwp
OwotICAgICAgICAgICAgcmVzdWx0ID0gcnRsID8gY29tcGFyZUJvcmRlcnMobGVmdEJvcmRlciwg
cmVzdWx0KSA6IGNvbXBhcmVCb3JkZXJzKHJlc3VsdCwgbGVmdEJvcmRlcik7CisgICAgICAgICAg
ICByZXN1bHQgPSBydGwgPyBjaG9vc2VCb3JkZXIobGVmdEJvcmRlciwgcmVzdWx0KSA6IGNob29z
ZUJvcmRlcihyZXN1bHQsIGxlZnRCb3JkZXIpOwogICAgICAgICAgICAgaWYgKCFyZXN1bHQuZXhp
c3RzKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogICAgIH0g
ZWxzZSB7CiAgICAgICAgIC8vICgzKSBPdXIgcm93J3MgcmlnaHQgYm9yZGVyLgotICAgICAgICBy
ZXN1bHQgPSBjb21wYXJlQm9yZGVycyhyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKCZwYXJl
bnQoKS0+c3R5bGUoKS0+Ym9yZGVyUmlnaHQoKSwgcGFyZW50KCktPnN0eWxlKCktPnZpc2l0ZWRE
ZXBlbmRlbnRDb2xvcihyaWdodCksIEJST1cpKTsKKyAgICAgICAgcmVzdWx0ID0gY2hvb3NlQm9y
ZGVyKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoJnBhcmVudCgpLT5zdHlsZSgpLT5ib3Jk
ZXJSaWdodCgpLCBwYXJlbnQoKS0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKHJpZ2h0
KSwgQlJPVykpOwogICAgICAgICBpZiAoIXJlc3VsdC5leGlzdHMoKSkKICAgICAgICAgICAgIHJl
dHVybiByZXN1bHQ7CiAgICAgICAgIAogICAgICAgICAvLyAoNCkgT3VyIHJvdyBncm91cCdzIHJp
Z2h0IGJvcmRlci4KLSAgICAgICAgcmVzdWx0ID0gY29tcGFyZUJvcmRlcnMocmVzdWx0LCBDb2xs
YXBzZWRCb3JkZXJWYWx1ZSgmc2VjdGlvbigpLT5zdHlsZSgpLT5ib3JkZXJSaWdodCgpLCBzZWN0
aW9uKCktPnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihyaWdodCksIEJST1dHUk9VUCkp
OworICAgICAgICByZXN1bHQgPSBjaG9vc2VCb3JkZXIocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJW
YWx1ZSgmc2VjdGlvbigpLT5zdHlsZSgpLT5ib3JkZXJSaWdodCgpLCBzZWN0aW9uKCktPnN0eWxl
KCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihyaWdodCksIEJST1dHUk9VUCkpOwogICAgICAgICBp
ZiAoIXJlc3VsdC5leGlzdHMoKSkKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQpA
QCAtNDM4LDExICs0NTcsMTEgQEAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgUmVuZGVyVGFibGVDZWxs
Ojpjb2xsYXBzZWRSaWdodEJvcmRlcihib29sIHJ0bCkgY29uc3QKICAgICBib29sIGVuZENvbEVk
Z2U7CiAgICAgUmVuZGVyVGFibGVDb2wqIGNvbEVsdCA9IHRhYmxlRWx0LT5jb2xFbGVtZW50KGNv
bCgpICsgKHJ0bCA/IDAgOiBjb2xTcGFuKCkgLSAxKSwgJnN0YXJ0Q29sRWRnZSwgJmVuZENvbEVk
Z2UpOwogICAgIGlmIChjb2xFbHQgJiYgKCFydGwgPyBlbmRDb2xFZGdlIDogc3RhcnRDb2xFZGdl
KSkgewotICAgICAgICByZXN1bHQgPSBjb21wYXJlQm9yZGVycyhyZXN1bHQsIENvbGxhcHNlZEJv
cmRlclZhbHVlKCZjb2xFbHQtPnN0eWxlKCktPmJvcmRlclJpZ2h0KCksIGNvbEVsdC0+c3R5bGUo
KS0+dmlzaXRlZERlcGVuZGVudENvbG9yKHJpZ2h0KSwgQkNPTCkpOworICAgICAgICByZXN1bHQg
PSBjaG9vc2VCb3JkZXIocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmY29sRWx0LT5zdHls
ZSgpLT5ib3JkZXJSaWdodCgpLCBjb2xFbHQtPnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xv
cihyaWdodCksIEJDT0wpKTsKICAgICAgICAgaWYgKCFyZXN1bHQuZXhpc3RzKCkpCiAgICAgICAg
ICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICBpZiAoY29sRWx0LT5wYXJlbnQoKS0+aXNUYWJs
ZUNvbCgpICYmICghcnRsID8gIWNvbEVsdC0+bmV4dFNpYmxpbmcoKSA6ICFjb2xFbHQtPnByZXZp
b3VzU2libGluZygpKSkgewotICAgICAgICAgICAgcmVzdWx0ID0gY29tcGFyZUJvcmRlcnMocmVz
dWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmY29sRWx0LT5wYXJlbnQoKS0+c3R5bGUoKS0+Ym9y
ZGVyUmlnaHQoKSwgY29sRWx0LT5wYXJlbnQoKS0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENv
bG9yKHJpZ2h0KSwgQkNPTEdST1VQKSk7CisgICAgICAgICAgICByZXN1bHQgPSBjaG9vc2VCb3Jk
ZXIocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmY29sRWx0LT5wYXJlbnQoKS0+c3R5bGUo
KS0+Ym9yZGVyUmlnaHQoKSwgY29sRWx0LT5wYXJlbnQoKS0+c3R5bGUoKS0+dmlzaXRlZERlcGVu
ZGVudENvbG9yKHJpZ2h0KSwgQkNPTEdST1VQKSk7CiAgICAgICAgICAgICBpZiAoIXJlc3VsdC5l
eGlzdHMoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CkBAIC00
NTMsMTMgKzQ3MiwxMyBAQCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSBSZW5kZXJUYWJsZUNlbGw6OmNv
bGxhcHNlZFJpZ2h0Qm9yZGVyKGJvb2wgcnRsKSBjb25zdAogICAgICAgICBjb2xFbHQgPSB0YWJs
ZUVsdC0+Y29sRWxlbWVudChjb2woKSArIChydGwgPyAtMSA6IGNvbFNwYW4oKSksICZzdGFydENv
bEVkZ2UsICZlbmRDb2xFZGdlKTsKICAgICAgICAgaWYgKGNvbEVsdCAmJiAoIXJ0bCA/IHN0YXJ0
Q29sRWRnZSA6IGVuZENvbEVkZ2UpKSB7CiAgICAgICAgICAgICBDb2xsYXBzZWRCb3JkZXJWYWx1
ZSBsZWZ0Qm9yZGVyID0gQ29sbGFwc2VkQm9yZGVyVmFsdWUoJmNvbEVsdC0+c3R5bGUoKS0+Ym9y
ZGVyTGVmdCgpLCBjb2xFbHQtPnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihsZWZ0KSwg
QkNPTCk7Ci0gICAgICAgICAgICByZXN1bHQgPSBydGwgPyBjb21wYXJlQm9yZGVycyhsZWZ0Qm9y
ZGVyLCByZXN1bHQpIDogY29tcGFyZUJvcmRlcnMocmVzdWx0LCBsZWZ0Qm9yZGVyKTsKKyAgICAg
ICAgICAgIHJlc3VsdCA9IHJ0bCA/IGNob29zZUJvcmRlcihsZWZ0Qm9yZGVyLCByZXN1bHQpIDog
Y2hvb3NlQm9yZGVyKHJlc3VsdCwgbGVmdEJvcmRlcik7CiAgICAgICAgICAgICBpZiAoIXJlc3Vs
dC5leGlzdHMoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CiAg
ICAgfSBlbHNlIHsKICAgICAgICAgLy8gKDcpIFRoZSB0YWJsZSdzIHJpZ2h0IGJvcmRlci4KLSAg
ICAgICAgcmVzdWx0ID0gY29tcGFyZUJvcmRlcnMocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1
ZSgmdGFibGVFbHQtPnN0eWxlKCktPmJvcmRlclJpZ2h0KCksIHRhYmxlRWx0LT5zdHlsZSgpLT52
aXNpdGVkRGVwZW5kZW50Q29sb3IocmlnaHQpLCBCVEFCTEUpKTsKKyAgICAgICAgcmVzdWx0ID0g
Y2hvb3NlQm9yZGVyKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoJnRhYmxlRWx0LT5zdHls
ZSgpLT5ib3JkZXJSaWdodCgpLCB0YWJsZUVsdC0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENv
bG9yKHJpZ2h0KSwgQlRBQkxFKSk7CiAgICAgICAgIGlmICghcmVzdWx0LmV4aXN0cygpKQogICAg
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CkBAIC00NzgsMTMgKzQ5NywxMyBAQCBDb2xs
YXBzZWRCb3JkZXJWYWx1ZSBSZW5kZXJUYWJsZUNlbGw6OmNvbGxhcHNlZFRvcEJvcmRlcigpIGNv
bnN0CiAgICAgUmVuZGVyVGFibGVDZWxsKiBwcmV2Q2VsbCA9IHRhYmxlKCktPmNlbGxBYm92ZSh0
aGlzKTsKICAgICBpZiAocHJldkNlbGwpIHsKICAgICAgICAgLy8gKDIpIEEgcHJldmlvdXMgY2Vs
bCdzIGJvdHRvbSBib3JkZXIuCi0gICAgICAgIHJlc3VsdCA9IGNvbXBhcmVCb3JkZXJzKENvbGxh
cHNlZEJvcmRlclZhbHVlKCZwcmV2Q2VsbC0+c3R5bGUoKS0+Ym9yZGVyQm90dG9tKCksIHByZXZD
ZWxsLT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoYm90dG9tKSwgQkNFTEwpLCByZXN1
bHQpOworICAgICAgICByZXN1bHQgPSBjaG9vc2VCb3JkZXIoQ29sbGFwc2VkQm9yZGVyVmFsdWUo
JnByZXZDZWxsLT5zdHlsZSgpLT5ib3JkZXJCb3R0b20oKSwgcHJldkNlbGwtPnN0eWxlKCktPnZp
c2l0ZWREZXBlbmRlbnRDb2xvcihib3R0b20pLCBCQ0VMTCksIHJlc3VsdCk7CiAgICAgICAgIGlm
ICghcmVzdWx0LmV4aXN0cygpKSAKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQog
ICAgIAogICAgIC8vICgzKSBPdXIgcm93J3MgdG9wIGJvcmRlci4KLSAgICByZXN1bHQgPSBjb21w
YXJlQm9yZGVycyhyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKCZwYXJlbnQoKS0+c3R5bGUo
KS0+Ym9yZGVyVG9wKCksIHBhcmVudCgpLT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3Io
dG9wKSwgQlJPVykpOworICAgIHJlc3VsdCA9IGNob29zZUJvcmRlcihyZXN1bHQsIENvbGxhcHNl
ZEJvcmRlclZhbHVlKCZwYXJlbnQoKS0+c3R5bGUoKS0+Ym9yZGVyVG9wKCksIHBhcmVudCgpLT5z
dHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IodG9wKSwgQlJPVykpOwogICAgIGlmICghcmVz
dWx0LmV4aXN0cygpKQogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIApAQCAtNDk3LDcgKzUx
Niw3IEBAIENvbGxhcHNlZEJvcmRlclZhbHVlIFJlbmRlclRhYmxlQ2VsbDo6Y29sbGFwc2VkVG9w
Qm9yZGVyKCkgY29uc3QKICAgICAgICAgICAgIHByZXZSb3cgPSBwcmV2Q2VsbC0+c2VjdGlvbigp
LT5sYXN0Q2hpbGQoKTsKICAgICAKICAgICAgICAgaWYgKHByZXZSb3cpIHsKLSAgICAgICAgICAg
IHJlc3VsdCA9IGNvbXBhcmVCb3JkZXJzKENvbGxhcHNlZEJvcmRlclZhbHVlKCZwcmV2Um93LT5z
dHlsZSgpLT5ib3JkZXJCb3R0b20oKSwgcHJldlJvdy0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVu
dENvbG9yKGJvdHRvbSksIEJST1cpLCByZXN1bHQpOworICAgICAgICAgICAgcmVzdWx0ID0gY2hv
b3NlQm9yZGVyKENvbGxhcHNlZEJvcmRlclZhbHVlKCZwcmV2Um93LT5zdHlsZSgpLT5ib3JkZXJC
b3R0b20oKSwgcHJldlJvdy0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKGJvdHRvbSks
IEJST1cpLCByZXN1bHQpOwogICAgICAgICAgICAgaWYgKCFyZXN1bHQuZXhpc3RzKCkpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQpAQCAtNTA3LDE0ICs1MjYsMTQg
QEAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgUmVuZGVyVGFibGVDZWxsOjpjb2xsYXBzZWRUb3BCb3Jk
ZXIoKSBjb25zdAogICAgIFJlbmRlclRhYmxlU2VjdGlvbiogY3VyclNlY3Rpb24gPSBzZWN0aW9u
KCk7CiAgICAgaWYgKCFyb3coKSkgewogICAgICAgICAvLyAoNSkgT3VyIHJvdyBncm91cCdzIHRv
cCBib3JkZXIuCi0gICAgICAgIHJlc3VsdCA9IGNvbXBhcmVCb3JkZXJzKHJlc3VsdCwgQ29sbGFw
c2VkQm9yZGVyVmFsdWUoJmN1cnJTZWN0aW9uLT5zdHlsZSgpLT5ib3JkZXJUb3AoKSwgY3VyclNl
Y3Rpb24tPnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcih0b3ApLCBCUk9XR1JPVVApKTsK
KyAgICAgICAgcmVzdWx0ID0gY2hvb3NlQm9yZGVyKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFs
dWUoJmN1cnJTZWN0aW9uLT5zdHlsZSgpLT5ib3JkZXJUb3AoKSwgY3VyclNlY3Rpb24tPnN0eWxl
KCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcih0b3ApLCBCUk9XR1JPVVApKTsKICAgICAgICAgaWYg
KCFyZXN1bHQuZXhpc3RzKCkpCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAK
ICAgICAgICAgLy8gKDYpIFByZXZpb3VzIHJvdyBncm91cCdzIGJvdHRvbSBib3JkZXIuCiAgICAg
ICAgIGN1cnJTZWN0aW9uID0gdGFibGUoKS0+c2VjdGlvbkFib3ZlKGN1cnJTZWN0aW9uKTsKICAg
ICAgICAgaWYgKGN1cnJTZWN0aW9uKSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBjb21wYXJlQm9y
ZGVycyhDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmY3VyclNlY3Rpb24tPnN0eWxlKCktPmJvcmRlckJv
dHRvbSgpLCBjdXJyU2VjdGlvbi0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKGJvdHRv
bSksIEJST1dHUk9VUCksIHJlc3VsdCk7CisgICAgICAgICAgICByZXN1bHQgPSBjaG9vc2VCb3Jk
ZXIoQ29sbGFwc2VkQm9yZGVyVmFsdWUoJmN1cnJTZWN0aW9uLT5zdHlsZSgpLT5ib3JkZXJCb3R0
b20oKSwgY3VyclNlY3Rpb24tPnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihib3R0b20p
LCBCUk9XR1JPVVApLCByZXN1bHQpOwogICAgICAgICAgICAgaWYgKCFyZXN1bHQuZXhpc3RzKCkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQpAQCAtNTI0LDExICs1
NDMsMTEgQEAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgUmVuZGVyVGFibGVDZWxsOjpjb2xsYXBzZWRU
b3BCb3JkZXIoKSBjb25zdAogICAgICAgICAvLyAoOCkgT3VyIGNvbHVtbiBhbmQgY29sdW1uIGdy
b3VwJ3MgdG9wIGJvcmRlcnMuCiAgICAgICAgIFJlbmRlclRhYmxlQ29sKiBjb2xFbHQgPSB0YWJs
ZSgpLT5jb2xFbGVtZW50KGNvbCgpKTsKICAgICAgICAgaWYgKGNvbEVsdCkgewotICAgICAgICAg
ICAgcmVzdWx0ID0gY29tcGFyZUJvcmRlcnMocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgm
Y29sRWx0LT5zdHlsZSgpLT5ib3JkZXJUb3AoKSwgY29sRWx0LT5zdHlsZSgpLT52aXNpdGVkRGVw
ZW5kZW50Q29sb3IodG9wKSwgQkNPTCkpOworICAgICAgICAgICAgcmVzdWx0ID0gY2hvb3NlQm9y
ZGVyKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoJmNvbEVsdC0+c3R5bGUoKS0+Ym9yZGVy
VG9wKCksIGNvbEVsdC0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKHRvcCksIEJDT0wp
KTsKICAgICAgICAgICAgIGlmICghcmVzdWx0LmV4aXN0cygpKQogICAgICAgICAgICAgICAgIHJl
dHVybiByZXN1bHQ7CiAgICAgICAgICAgICBpZiAoY29sRWx0LT5wYXJlbnQoKS0+aXNUYWJsZUNv
bCgpKSB7Ci0gICAgICAgICAgICAgICAgcmVzdWx0ID0gY29tcGFyZUJvcmRlcnMocmVzdWx0LCBD
b2xsYXBzZWRCb3JkZXJWYWx1ZSgmY29sRWx0LT5wYXJlbnQoKS0+c3R5bGUoKS0+Ym9yZGVyVG9w
KCksIGNvbEVsdC0+cGFyZW50KCktPnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcih0b3Ap
LCBCQ09MR1JPVVApKTsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBjaG9vc2VCb3JkZXIocmVz
dWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmY29sRWx0LT5wYXJlbnQoKS0+c3R5bGUoKS0+Ym9y
ZGVyVG9wKCksIGNvbEVsdC0+cGFyZW50KCktPnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xv
cih0b3ApLCBCQ09MR1JPVVApKTsKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdC5leGlzdHMo
KSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgICAgIH0KQEAg
LTUzNiw3ICs1NTUsNyBAQCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSBSZW5kZXJUYWJsZUNlbGw6OmNv
bGxhcHNlZFRvcEJvcmRlcigpIGNvbnN0CiAgICAgICAgIAogICAgICAgICAvLyAoOSkgVGhlIHRh
YmxlJ3MgdG9wIGJvcmRlci4KICAgICAgICAgUmVuZGVyVGFibGUqIGVuY2xvc2luZ1RhYmxlID0g
dGFibGUoKTsKLSAgICAgICAgcmVzdWx0ID0gY29tcGFyZUJvcmRlcnMocmVzdWx0LCBDb2xsYXBz
ZWRCb3JkZXJWYWx1ZSgmZW5jbG9zaW5nVGFibGUtPnN0eWxlKCktPmJvcmRlclRvcCgpLCBlbmNs
b3NpbmdUYWJsZS0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKHRvcCksIEJUQUJMRSkp
OworICAgICAgICByZXN1bHQgPSBjaG9vc2VCb3JkZXIocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJW
YWx1ZSgmZW5jbG9zaW5nVGFibGUtPnN0eWxlKCktPmJvcmRlclRvcCgpLCBlbmNsb3NpbmdUYWJs
ZS0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKHRvcCksIEJUQUJMRSkpOwogICAgICAg
ICBpZiAoIXJlc3VsdC5leGlzdHMoKSkKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAg
fQpAQCAtNTU1LDE5ICs1NzQsMTkgQEAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgUmVuZGVyVGFibGVD
ZWxsOjpjb2xsYXBzZWRCb3R0b21Cb3JkZXIoKSBjb25zdAogICAgIFJlbmRlclRhYmxlQ2VsbCog
bmV4dENlbGwgPSB0YWJsZSgpLT5jZWxsQmVsb3codGhpcyk7CiAgICAgaWYgKG5leHRDZWxsKSB7
CiAgICAgICAgIC8vICgyKSBBIGZvbGxvd2luZyBjZWxsJ3MgdG9wIGJvcmRlci4KLSAgICAgICAg
cmVzdWx0ID0gY29tcGFyZUJvcmRlcnMocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmbmV4
dENlbGwtPnN0eWxlKCktPmJvcmRlclRvcCgpLCBuZXh0Q2VsbC0+c3R5bGUoKS0+dmlzaXRlZERl
cGVuZGVudENvbG9yKHRvcCksIEJDRUxMKSk7CisgICAgICAgIHJlc3VsdCA9IGNob29zZUJvcmRl
cihyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKCZuZXh0Q2VsbC0+c3R5bGUoKS0+Ym9yZGVy
VG9wKCksIG5leHRDZWxsLT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IodG9wKSwgQkNF
TEwpKTsKICAgICAgICAgaWYgKCFyZXN1bHQuZXhpc3RzKCkpCiAgICAgICAgICAgICByZXR1cm4g
cmVzdWx0OwogICAgIH0KICAgICAKICAgICAvLyAoMykgT3VyIHJvdydzIGJvdHRvbSBib3JkZXIu
IChGSVhNRTogRGVhbCB3aXRoIHJvd3NwYW4hKQotICAgIHJlc3VsdCA9IGNvbXBhcmVCb3JkZXJz
KHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoJnBhcmVudCgpLT5zdHlsZSgpLT5ib3JkZXJC
b3R0b20oKSwgcGFyZW50KCktPnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihib3R0b20p
LCBCUk9XKSk7CisgICAgcmVzdWx0ID0gY2hvb3NlQm9yZGVyKHJlc3VsdCwgQ29sbGFwc2VkQm9y
ZGVyVmFsdWUoJnBhcmVudCgpLT5zdHlsZSgpLT5ib3JkZXJCb3R0b20oKSwgcGFyZW50KCktPnN0
eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihib3R0b20pLCBCUk9XKSk7CiAgICAgaWYgKCFy
ZXN1bHQuZXhpc3RzKCkpCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgCiAgICAgLy8gKDQp
IFRoZSBuZXh0IHJvdydzIHRvcCBib3JkZXIuCiAgICAgaWYgKG5leHRDZWxsKSB7Ci0gICAgICAg
IHJlc3VsdCA9IGNvbXBhcmVCb3JkZXJzKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoJm5l
eHRDZWxsLT5wYXJlbnQoKS0+c3R5bGUoKS0+Ym9yZGVyVG9wKCksIG5leHRDZWxsLT5wYXJlbnQo
KS0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKHRvcCksIEJST1cpKTsKKyAgICAgICAg
cmVzdWx0ID0gY2hvb3NlQm9yZGVyKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoJm5leHRD
ZWxsLT5wYXJlbnQoKS0+c3R5bGUoKS0+Ym9yZGVyVG9wKCksIG5leHRDZWxsLT5wYXJlbnQoKS0+
c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKHRvcCksIEJST1cpKTsKICAgICAgICAgaWYg
KCFyZXN1bHQuZXhpc3RzKCkpCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KQEAg
LTU3NiwxNCArNTk1LDE0IEBAIENvbGxhcHNlZEJvcmRlclZhbHVlIFJlbmRlclRhYmxlQ2VsbDo6
Y29sbGFwc2VkQm90dG9tQm9yZGVyKCkgY29uc3QKICAgICBSZW5kZXJUYWJsZVNlY3Rpb24qIGN1
cnJTZWN0aW9uID0gc2VjdGlvbigpOwogICAgIGlmIChyb3coKSArIHJvd1NwYW4oKSA+PSBjdXJy
U2VjdGlvbi0+bnVtUm93cygpKSB7CiAgICAgICAgIC8vICg1KSBPdXIgcm93IGdyb3VwJ3MgYm90
dG9tIGJvcmRlci4KLSAgICAgICAgcmVzdWx0ID0gY29tcGFyZUJvcmRlcnMocmVzdWx0LCBDb2xs
YXBzZWRCb3JkZXJWYWx1ZSgmY3VyclNlY3Rpb24tPnN0eWxlKCktPmJvcmRlckJvdHRvbSgpLCBj
dXJyU2VjdGlvbi0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKGJvdHRvbSksIEJST1dH
Uk9VUCkpOworICAgICAgICByZXN1bHQgPSBjaG9vc2VCb3JkZXIocmVzdWx0LCBDb2xsYXBzZWRC
b3JkZXJWYWx1ZSgmY3VyclNlY3Rpb24tPnN0eWxlKCktPmJvcmRlckJvdHRvbSgpLCBjdXJyU2Vj
dGlvbi0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKGJvdHRvbSksIEJST1dHUk9VUCkp
OwogICAgICAgICBpZiAoIXJlc3VsdC5leGlzdHMoKSkKICAgICAgICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICAgICAgIAogICAgICAgICAvLyAoNikgRm9sbG93aW5nIHJvdyBncm91cCdzIHRvcCBi
b3JkZXIuCiAgICAgICAgIGN1cnJTZWN0aW9uID0gdGFibGUoKS0+c2VjdGlvbkJlbG93KGN1cnJT
ZWN0aW9uKTsKICAgICAgICAgaWYgKGN1cnJTZWN0aW9uKSB7Ci0gICAgICAgICAgICByZXN1bHQg
PSBjb21wYXJlQm9yZGVycyhyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKCZjdXJyU2VjdGlv
bi0+c3R5bGUoKS0+Ym9yZGVyVG9wKCksIGN1cnJTZWN0aW9uLT5zdHlsZSgpLT52aXNpdGVkRGVw
ZW5kZW50Q29sb3IodG9wKSwgQlJPV0dST1VQKSk7CisgICAgICAgICAgICByZXN1bHQgPSBjaG9v
c2VCb3JkZXIocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmY3VyclNlY3Rpb24tPnN0eWxl
KCktPmJvcmRlclRvcCgpLCBjdXJyU2VjdGlvbi0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENv
bG9yKHRvcCksIEJST1dHUk9VUCkpOwogICAgICAgICAgICAgaWYgKCFyZXN1bHQuZXhpc3RzKCkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQpAQCAtNTkzLDEwICs2
MTIsMTAgQEAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgUmVuZGVyVGFibGVDZWxsOjpjb2xsYXBzZWRC
b3R0b21Cb3JkZXIoKSBjb25zdAogICAgICAgICAvLyAoOCkgT3VyIGNvbHVtbiBhbmQgY29sdW1u
IGdyb3VwJ3MgYm90dG9tIGJvcmRlcnMuCiAgICAgICAgIFJlbmRlclRhYmxlQ29sKiBjb2xFbHQg
PSB0YWJsZSgpLT5jb2xFbGVtZW50KGNvbCgpKTsKICAgICAgICAgaWYgKGNvbEVsdCkgewotICAg
ICAgICAgICAgcmVzdWx0ID0gY29tcGFyZUJvcmRlcnMocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJW
YWx1ZSgmY29sRWx0LT5zdHlsZSgpLT5ib3JkZXJCb3R0b20oKSwgY29sRWx0LT5zdHlsZSgpLT52
aXNpdGVkRGVwZW5kZW50Q29sb3IoYm90dG9tKSwgQkNPTCkpOworICAgICAgICAgICAgcmVzdWx0
ID0gY2hvb3NlQm9yZGVyKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoJmNvbEVsdC0+c3R5
bGUoKS0+Ym9yZGVyQm90dG9tKCksIGNvbEVsdC0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENv
bG9yKGJvdHRvbSksIEJDT0wpKTsKICAgICAgICAgICAgIGlmICghcmVzdWx0LmV4aXN0cygpKSBy
ZXR1cm4gcmVzdWx0OwogICAgICAgICAgICAgaWYgKGNvbEVsdC0+cGFyZW50KCktPmlzVGFibGVD
b2woKSkgewotICAgICAgICAgICAgICAgIHJlc3VsdCA9IGNvbXBhcmVCb3JkZXJzKHJlc3VsdCwg
Q29sbGFwc2VkQm9yZGVyVmFsdWUoJmNvbEVsdC0+cGFyZW50KCktPnN0eWxlKCktPmJvcmRlckJv
dHRvbSgpLCBjb2xFbHQtPnBhcmVudCgpLT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3Io
Ym90dG9tKSwgQkNPTEdST1VQKSk7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gY2hvb3NlQm9y
ZGVyKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoJmNvbEVsdC0+cGFyZW50KCktPnN0eWxl
KCktPmJvcmRlckJvdHRvbSgpLCBjb2xFbHQtPnBhcmVudCgpLT5zdHlsZSgpLT52aXNpdGVkRGVw
ZW5kZW50Q29sb3IoYm90dG9tKSwgQkNPTEdST1VQKSk7CiAgICAgICAgICAgICAgICAgaWYgKCFy
ZXN1bHQuZXhpc3RzKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAg
ICAgICAgICB9CkBAIC02MDQsNyArNjIzLDcgQEAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgUmVuZGVy
VGFibGVDZWxsOjpjb2xsYXBzZWRCb3R0b21Cb3JkZXIoKSBjb25zdAogICAgICAgICAKICAgICAg
ICAgLy8gKDkpIFRoZSB0YWJsZSdzIGJvdHRvbSBib3JkZXIuCiAgICAgICAgIFJlbmRlclRhYmxl
KiBlbmNsb3NpbmdUYWJsZSA9IHRhYmxlKCk7Ci0gICAgICAgIHJlc3VsdCA9IGNvbXBhcmVCb3Jk
ZXJzKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoJmVuY2xvc2luZ1RhYmxlLT5zdHlsZSgp
LT5ib3JkZXJCb3R0b20oKSwgZW5jbG9zaW5nVGFibGUtPnN0eWxlKCktPnZpc2l0ZWREZXBlbmRl
bnRDb2xvcihib3R0b20pLCBCVEFCTEUpKTsKKyAgICAgICAgcmVzdWx0ID0gY2hvb3NlQm9yZGVy
KHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoJmVuY2xvc2luZ1RhYmxlLT5zdHlsZSgpLT5i
b3JkZXJCb3R0b20oKSwgZW5jbG9zaW5nVGFibGUtPnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRD
b2xvcihib3R0b20pLCBCVEFCTEUpKTsKICAgICAgICAgaWYgKCFyZXN1bHQuZXhpc3RzKCkpCiAg
ICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KQEAgLTc2NywxMCArNzg2LDcgQEAgc3Rh
dGljIGludCBjb21wYXJlQm9yZGVyU3R5bGVzRm9yUVNvcnQoY29uc3Qgdm9pZCogcGEsIGNvbnN0
IHZvaWQqIHBiKQogICAgIGNvbnN0IENvbGxhcHNlZEJvcmRlclZhbHVlKiBiID0gc3RhdGljX2Nh
c3Q8Y29uc3QgQ29sbGFwc2VkQm9yZGVyVmFsdWUqPihwYik7CiAgICAgaWYgKCphID09ICpiKQog
ICAgICAgICByZXR1cm4gMDsKLSAgICBDb2xsYXBzZWRCb3JkZXJWYWx1ZSBib3JkZXJXaXRoSGln
aGVyUHJlY2VkZW5jZSA9IGNvbXBhcmVCb3JkZXJzKCphLCAqYik7Ci0gICAgaWYgKCphID09IGJv
cmRlcldpdGhIaWdoZXJQcmVjZWRlbmNlKQotICAgICAgICByZXR1cm4gMTsKLSAgICByZXR1cm4g
LTE7CisgICAgcmV0dXJuIGNvbXBhcmVCb3JkZXJzKCphLCAqYik7CiB9CiAKIHZvaWQgUmVuZGVy
VGFibGVDZWxsOjpzb3J0Qm9yZGVyU3R5bGVzKENvbGxhcHNlZEJvcmRlclN0eWxlcyYgYm9yZGVy
U3R5bGVzKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>68135</attachid>
            <date>2010-09-20 14:20:26 -0700</date>
            <delta_ts>2010-12-22 12:23:55 -0800</delta_ts>
            <desc>test case (tab removed)</desc>
            <filename>39966test.patch</filename>
            <type>text/plain</type>
            <size>2800</size>
            <attacher name="Yong Li">yong.li.webkit</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwMmRkNTE1Li5jNjUwYzliIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTAtMDkt
MjAgWW9uZyBMaSAgPHlvbGlAcmltLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4ZXkg
UHJvc2t1cnlha292LgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0zOTk2NgorICAgICAgICBBZGQgdGVzdCBjYXNlIHRoYXQgcmVwcm9kdWNlcyBhcm1j
YyBxc29ydCgpIGNyYXNoLgorCisgICAgICAgICogdGFibGVzL3NvcnQtY29sbGFwc2VkLWJvcmRl
ci1zdHlsZXMuaHRtbDogQWRkZWQuCisKIDIwMTAtMDktMjAgIEVyaWMgQ2FybHNvbiAgPGVyaWMu
Y2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgUnViYmVyLXN0YW1wZWQgYnkgYnkgU2ltb24g
RnJhc2VyLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGFibGVzL3NvcnQtY29sbGFwc2VkLWJv
cmRlci1zdHlsZXMuaHRtbCBiL0xheW91dFRlc3RzL3RhYmxlcy9zb3J0LWNvbGxhcHNlZC1ib3Jk
ZXItc3R5bGVzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmMyY2M4
YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RhYmxlcy9zb3J0LWNvbGxhcHNlZC1i
b3JkZXItc3R5bGVzLmh0bWwKQEAgLTAsMCArMSwzNyBAQAorPGh0bWw+Cis8aGVhZD4KKyAgICA8
dGl0bGU+U29ydCBDb2xsYXBzZWQgQm9yZGVyIFN0eWxlczwvdGl0bGU+Cis8L2hlYWQ+CisKKzxi
b2R5PgorCis8cD5JZiBpdCBkb2Vzbid0IGNyYXNoLCB0aGUgdGVzdCBoYXMgcGFzc2VkPC9wPgor
Cis8dGFibGUgYm9yZGVyPSIwIiBzdHlsZT0iYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZSIgYmdj
b2xvcj0iI0VFRUVFRSI+CisgICAgPHRyPgorICAgICAgICA8dGQgYm9yZGVyY29sb3I9IiMxMTEx
MTEiIGJvcmRlcj0iMSIgc3R5bGU9ImJvcmRlci1zdHlsZTogaGlkZGVuIj50ZXN0PC90ZD4KKyAg
ICAgICAgPHRkIGJvcmRlcmNvbG9yPSIjMTExMTExIiBib3JkZXI9IjMiIHN0eWxlPSJib3JkZXIt
c3R5bGU6IHNvbGlkIj50ZXN0PC90ZD4KKyAgICAgICAgPHRkIGJvcmRlcmNvbG9yPSIjMTExMTEx
IiBib3JkZXI9IjEiIHN0eWxlPSJib3JkZXItc3R5bGU6IG5vbmUiPnRlc3Q8L3RkPgorICAgICAg
ICA8dGQgYm9yZGVyY29sb3I9IiMyMjIyMjIiIGJvcmRlcj0iMSIgc3R5bGU9ImJvcmRlci1zdHls
ZTogaGlkZGVuIj50ZXN0PC90ZD4KKyAgICAgICAgPHRkIGJvcmRlcmNvbG9yPSIjMjIyMjIyIiBi
b3JkZXI9IjMiIHN0eWxlPSJib3JkZXItc3R5bGU6IHNvbGlkIj50ZXN0PC90ZD4KKyAgICAgICAg
PHRkIGJvcmRlcmNvbG9yPSIjMjIyMjIyIiBib3JkZXI9IjIiIHN0eWxlPSJib3JkZXItc3R5bGU6
IG5vbmUiPnRlc3Q8L3RkPgorICAgICAgICA8dGQgYm9yZGVyY29sb3I9IiMzMzMzMzMiIGJvcmRl
cj0iMSIgc3R5bGU9ImJvcmRlci1zdHlsZTogaGlkZGVuIj50ZXN0PC90ZD4KKyAgICAgICAgPHRk
IGJvcmRlcmNvbG9yPSIjMzMzMzMzIiBib3JkZXI9IjMiIHN0eWxlPSJib3JkZXItc3R5bGU6IHNv
bGlkIj50ZXN0PC90ZD4KKyAgICAgICAgPHRkIGJvcmRlcmNvbG9yPSIjMzMzMzMzIiBib3JkZXI9
IjIiIHN0eWxlPSJib3JkZXItc3R5bGU6IG5vbmUiPnRlc3Q8L3RkPgorICAgICAgICA8dGQgYm9y
ZGVyY29sb3I9IiM0NDQ0NDQiIGJvcmRlcj0iMSIgc3R5bGU9ImJvcmRlci1zdHlsZTogaGlkZGVu
Ij50ZXN0PC90ZD4KKyAgICAgICAgPHRkIGJvcmRlcmNvbG9yPSIjNDQ0NDQ0IiBib3JkZXI9IjMi
IHN0eWxlPSJib3JkZXItc3R5bGU6IHNvbGlkIj50ZXN0PC90ZD4KKyAgICAgICAgPHRkIGJvcmRl
cmNvbG9yPSIjNDQ0NDQ0IiBib3JkZXI9IjIiIHN0eWxlPSJib3JkZXItc3R5bGU6IG5vbmUiPnRl
c3Q8L3RkPgorICAgICAgICA8dGQgYm9yZGVyY29sb3I9IiM1NTU1NTUiIGJvcmRlcj0iMSIgc3R5
bGU9ImJvcmRlci1zdHlsZTogaGlkZGVuIj50ZXN0PC90ZD4KKyAgICAgICAgPHRkIGJvcmRlcmNv
bG9yPSIjNTU1NTU1IiBib3JkZXI9IjMiIHN0eWxlPSJib3JkZXItc3R5bGU6IHNvbGlkIj50ZXN0
PC90ZD4KKyAgICAgICAgPHRkIGJvcmRlcmNvbG9yPSIjNTU1NTU1IiBib3JkZXI9IjIiIHN0eWxl
PSJib3JkZXItc3R5bGU6IG5vbmUiPnRlc3Q8L3RkPgorICAgICAgICA8dGQgYm9yZGVyY29sb3I9
IiM2NjY2NjYiIGJvcmRlcj0iMSIgc3R5bGU9ImJvcmRlci1zdHlsZTogaGlkZGVuIj50ZXN0PC90
ZD4KKyAgICAgICAgPHRkIGJvcmRlcmNvbG9yPSIjNjY2NjY2IiBib3JkZXI9IjMiIHN0eWxlPSJi
b3JkZXItc3R5bGU6IHNvbGlkIj50ZXN0PC90ZD4KKyAgICAgICAgPHRkIGJvcmRlcmNvbG9yPSIj
NjY2NjY2IiBib3JkZXI9IjIiIHN0eWxlPSJib3JkZXItc3R5bGU6IG5vbmUiPnRlc3Q8L3RkPgor
ICAgICAgICA8dGQgYm9yZGVyY29sb3I9IiM3Nzc3NzciIGJvcmRlcj0iMSIgc3R5bGU9ImJvcmRl
ci1zdHlsZTogaGlkZGVuIj50ZXN0PC90ZD4KKyAgICAgICAgPHRkIGJvcmRlcmNvbG9yPSIjNzc3
Nzc3IiBib3JkZXI9IjMiIHN0eWxlPSJib3JkZXItc3R5bGU6IHNvbGlkIj50ZXN0PC90ZD4KKyAg
ICAgICAgPHRkIGJvcmRlcmNvbG9yPSIjNzc3Nzc3IiBib3JkZXI9IjIiIHN0eWxlPSJib3JkZXIt
c3R5bGU6IG5vbmUiPnRlc3Q8L3RkPgorICAgIDwvdHI+Cis8L3RhYmxlPgorCis8L2JvZHk+Cis8
L2h0bWw+Cg==
</data>
<flag name="commit-queue"
          id="68274"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
      

    </bug>

</bugzilla>