<?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>31806</bug_id>
          
          <creation_ts>2009-11-23 07:40:29 -0800</creation_ts>
          <short_desc>Make GIF decoder support down-sampling</short_desc>
          <delta_ts>2010-01-12 11:02:49 -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>Images</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</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="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric</cc>
    
    <cc>pkasting</cc>
    
    <cc>staikos</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>165853</commentid>
    <comment_count>0</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2009-11-23 07:40:29 -0800</bug_when>
    <thetext>ENABLE(IMAGE_DECODER_DOWN_SAMPLING) is currently supported by JPEG decoder and PNG decoder. But some websites can have huge (for example, more than 10M pixels) gif images. Making GIF decoder support on-the-fly down-sampling will solve this problem.

Patch is coming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165855</commentid>
    <comment_count>1</comment_count>
      <attachid>43716</attachid>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2009-11-23 07:51:17 -0800</bug_when>
    <thetext>Created attachment 43716
The patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167128</commentid>
    <comment_count>2</comment_count>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2009-11-29 16:27:12 -0800</bug_when>
    <thetext>I didn&apos;t look too closely at the patch, but I wonder if it could be simplified even further by making scaledRect() be available with or without this define (and have it simply map to rect() when there&apos;s no scaling).    Similarly, a couple of the places where we run the same loop body over a different set of coordinates, maybe we could simply set a temp to different values in the two cases, instead of #ifdefing the loop body?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167234</commentid>
    <comment_count>3</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2009-11-30 07:39:20 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; I didn&apos;t look too closely at the patch, but I wonder if it could be simplified
&gt; even further by making scaledRect() be available with or without this define
&gt; (and have it simply map to rect() when there&apos;s no scaling).

I guess the point is trying not to affect the existing code. &quot;scaledRect()&quot; looks a little weird when down-sampling is not enabled. If a reviewer says he will r+ with that, I would definitely like to do this change.

&gt; Similarly, a
&gt; couple of the places where we run the same loop body over a different set of
&gt; coordinates, maybe we could simply set a temp to different values in the two
&gt; cases, instead of #ifdefing the loop body?

Actually that&apos;s what I have tried. But I really don&apos;t like checking the same value inside a loop, although the compiler may be able to optimize it. Also the code in that way is not neat, I have to put #if at both the beginning and the end of the loop body. It looks worse than current patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167315</commentid>
    <comment_count>4</comment_count>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2009-11-30 11:58:10 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (In reply to comment #2)
&gt; &gt; I didn&apos;t look too closely at the patch, but I wonder if it could be simplified
&gt; &gt; even further by making scaledRect() be available with or without this define
&gt; &gt; (and have it simply map to rect() when there&apos;s no scaling).
&gt; 
&gt; I guess the point is trying not to affect the existing code. &quot;scaledRect()&quot;
&gt; looks a little weird when down-sampling is not enabled. If a reviewer says he
&gt; will r+ with that, I would definitely like to do this change.

If you were to do this you could probably name the accessor something clearer like &quot;possiblyScaledRect()&quot; or &quot;outputRect()&quot; or something, which would hopefully take care of any confusion.

&gt; &gt; Similarly, a
&gt; &gt; couple of the places where we run the same loop body over a different set of
&gt; &gt; coordinates, maybe we could simply set a temp to different values in the two
&gt; &gt; cases, instead of #ifdefing the loop body?
&gt; 
&gt; Actually that&apos;s what I have tried. But I really don&apos;t like checking the same
&gt; value inside a loop, although the compiler may be able to optimize it. Also the
&gt; code in that way is not neat, I have to put #if at both the beginning and the
&gt; end of the loop body. It looks worse than current patch.

I tried refactoring it myself and was able to come up with something pretty clean for the relevant code in haveDecodedRow():

***

    // Write one row&apos;s worth of data into the frame.  There is no guarantee that
    // (rowEnd - rowBuffer) == (size().width() - m_reader-&gt;frameXOffset()), so
    // we must ensure we don&apos;t run off the end of either the source data or the
    // row&apos;s X-coordinates.
    int destXEnd = std::min(x + (rowEnd - rowBuffer), size().width());
    int destYEnd = std::min(y + static_cast&lt;int&gt;(repeatCount), size().height());

    if (m_scaled) {
        x = upperBoundScaledX(x);
        if (x &lt; 0)
            return;
        destXEnd = lowerBoundScaledX(destXEnd - 1, x + 1) + 1;
        if (destXEnd &lt;= x)
            return;

        y = upperBoundScaledY(y);
        if (y &lt; 0)
            return;
        destYEnd = lowerBoundScaledY(destYEnd - 1, y + 1) + 1;
        if (destYEnd &lt;= y)
            return;
    }

    for (int destX = x; destX &lt; destXEnd; ++destX) {
        unsigned char* sourceAddr = rowBuffer + (m_scaled ? (m_scaledColumns[destX] - m_reader-&gt;frameXOffset()) : destX);
        copyOnePixel(m_reader, sourceAddr, colorMap, colorMapSize, writeTransparentPixels, buffer, destX , y, m_currentBufferSawAlpha);
    }

    // Tell the frame to copy the row data if need be.
    if (repeatCount &gt; 1)
        buffer.copyRowNTimes(x, destXEnd, y, destYEnd);
}

***

Several points to note:
* This made it clear that |bufferSize| was an unused temp and could be removed.
* The above code assumes that you make |m_scaled| exist unconditionally (and it&apos;s just always false if we&apos;re not downsampling), which I think is probably a good change since it should help readability in general.
* This exposed a bug in your existing patch, where in the #ifdefed path you failed to clamp the Y endpoint to size().height().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167347</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-11-30 12:35:45 -0800</bug_when>
    <thetext>Attachment 43716 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
Done processing WebCore/platform/image-decoders/ImageDecoder.cpp
WebCore/platform/image-decoders/gif/GIFImageDecoder.cpp:286:  One line control clauses should not use braces.  [whitespace/braces] [4]
Done processing WebCore/platform/image-decoders/gif/GIFImageDecoder.cpp
Done processing WebCore/platform/image-decoders/ImageDecoder.h
Total errors found: 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167420</commentid>
    <comment_count>6</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2009-11-30 13:56:22 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; Attachment 43716 [details] did not pass style-queue:
&gt; 
&gt; Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
&gt; Done processing WebCore/platform/image-decoders/ImageDecoder.cpp
&gt; WebCore/platform/image-decoders/gif/GIFImageDecoder.cpp:286:  One line control
&gt; clauses should not use braces.  [whitespace/braces] [4]
&gt; Done processing WebCore/platform/image-decoders/gif/GIFImageDecoder.cpp
&gt; Done processing WebCore/platform/image-decoders/ImageDecoder.h
&gt; Total errors found: 1

Hi, Adam,

The code is here:

#if ENABLE(IMAGE_DECODER_DOWN_SAMPLING)
    if (m_scaled) {
        int left = upperBoundScaledX(frameRect.x());
        int right = lowerBoundScaledX(frameRect.right(), left);
        int top = upperBoundScaledY(frameRect.y());
        int bottom = lowerBoundScaledY(frameRect.bottom(), top);
        buffer-&gt;setScaledRect(IntRect(left, top, right - left, bottom - top));
    } else {
        buffer-&gt;setScaledRect(frameRect);
    }
#endif

I can remove the braces but I really think leaving them there in this case is better.

-Yong</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167423</commentid>
    <comment_count>7</comment_count>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2009-11-30 13:58:27 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; The code is here:
&gt; 
&gt; #if ENABLE(IMAGE_DECODER_DOWN_SAMPLING)
&gt;     if (m_scaled) {
&gt;         int left = upperBoundScaledX(frameRect.x());
&gt;         int right = lowerBoundScaledX(frameRect.right(), left);
&gt;         int top = upperBoundScaledY(frameRect.y());
&gt;         int bottom = lowerBoundScaledY(frameRect.bottom(), top);
&gt;         buffer-&gt;setScaledRect(IntRect(left, top, right - left, bottom - top));
&gt;     } else {
&gt;         buffer-&gt;setScaledRect(frameRect);
&gt;     }
&gt; #endif
&gt; 
&gt; I can remove the braces but I really think leaving them there in this case is
&gt; better.

Personally, I agree with you.  However, the WebKit style guide is explicit about this case, and says that there are to be no braces on the second arm.  We shouldn&apos;t violate the style guide simply because we don&apos;t like some of its rules, or there is no point to having a style guide.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167858</commentid>
    <comment_count>8</comment_count>
    <who name="George Staikos">staikos</who>
    <bug_when>2009-12-01 20:45:20 -0800</bug_when>
    <thetext>(In reply to comment #7)

&gt; &gt; I can remove the braces but I really think leaving them there in this case is
&gt; &gt; better.
&gt; 
&gt; Personally, I agree with you.  However, the WebKit style guide is explicit
&gt; about this case, and says that there are to be no braces on the second arm.  We
&gt; shouldn&apos;t violate the style guide simply because we don&apos;t like some of its
&gt; rules, or there is no point to having a style guide.

That&apos;s why they&apos;re &quot;guidelines&quot; and not hard rules.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167884</commentid>
    <comment_count>9</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2009-12-01 22:42:20 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #7)
&gt; &gt; We shouldn&apos;t violate the style guide simply because we don&apos;t like some of its
&gt; &gt; rules, or there is no point to having a style guide.
&gt; 
&gt; That&apos;s why they&apos;re &quot;guidelines&quot; and not hard rules.

The “Contributing Code” page at &lt;http://webkit.org/coding/contributing.html&gt; could hardly be clearer about this:

&gt; Patches must comply with the code style guidelines.

It’s also worth noting that the reviewer policy explicitly states:

&gt; Reviewers are expected to ensure that patches they review follow project policies.

Coding style is one such policy.  Project policy should be followed, not personal preference.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167966</commentid>
    <comment_count>10</comment_count>
    <who name="George Staikos">staikos</who>
    <bug_when>2009-12-02 05:25:13 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; (In reply to comment #7)
&gt; &gt; &gt; We shouldn&apos;t violate the style guide simply because we don&apos;t like some of its
&gt; &gt; &gt; rules, or there is no point to having a style guide.
&gt; &gt; 
&gt; &gt; That&apos;s why they&apos;re &quot;guidelines&quot; and not hard rules.
&gt; 
&gt; The “Contributing Code” page at &lt;http://webkit.org/coding/contributing.html&gt;
&gt; could hardly be clearer about this:
&gt; 
&gt; &gt; Patches must comply with the code style guidelines.
&gt; 
&gt; It’s also worth noting that the reviewer policy explicitly states:
&gt; 
&gt; &gt; Reviewers are expected to ensure that patches they review follow project policies.
&gt; 
&gt; Coding style is one such policy.  Project policy should be followed, not
&gt; personal preference.

The amount of time spent on this policy with no valid argument that I can see is awesome.  Just imagine how many bugs we didn&apos;t implement because we spent time debating where we put the braces in two perfectly reasonable and clean cases instead of writing more code.  Now we even write policing tools for it!  Extra awesome.  I propose that the next step is we optimize gcc to only accept code according to the webkit coding style.  Surely the parser will be faster, resulting in faster compile times of WebKit which in the end make this all worthwhile. A+

Now back to getting something real done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168147</commentid>
    <comment_count>11</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2009-12-02 13:40:58 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; 
&gt; The amount of time spent on this policy with no valid argument that I can see
&gt; is awesome.  Just imagine how many bugs we didn&apos;t implement because we spent
&gt; time debating where we put the braces in two perfectly reasonable and clean
&gt; cases instead of writing more code.

The only reason it is being debated at all is that the style guidelines were ignored.  If they’re followed then there’s nothing to debate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>174586</commentid>
    <comment_count>12</comment_count>
      <attachid>45438</attachid>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2009-12-23 07:04:31 -0800</bug_when>
    <thetext>Created attachment 45438
updated

1. fix a bug: test destYEnd with size.height()
2. style fix: remove the braces from the one-line &quot;else&quot; block
3. remove an unused local variable: &quot;bufferSize&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>174588</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-23 07:08:48 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 45438 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>174589</commentid>
    <comment_count>14</comment_count>
      <attachid>45439</attachid>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2009-12-23 07:18:59 -0800</bug_when>
    <thetext>Created attachment 45439
new patch

oops, missed ChangeLog in previous patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>174590</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-23 07:24:21 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 45439 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179855</commentid>
    <comment_count>16</comment_count>
      <attachid>46378</attachid>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2010-01-12 09:42:28 -0800</bug_when>
    <thetext>Created attachment 46378
the patch

keep up with ToT changes. haveDecodedRow returns a boolean now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179879</commentid>
    <comment_count>17</comment_count>
      <attachid>46378</attachid>
    <who name="Adam Treat">manyoso</who>
    <bug_when>2010-01-12 10:20:43 -0800</bug_when>
    <thetext>Comment on attachment 46378
the patch

Passes all style and build bots and looks good to me.  I do understand and sympathize with the sentiment that it&apos;d be nice to reduce the #if ENABLE(IMAGE_DECODER_DOWN_SAMPLING) checks, but not sure the proposed solutions make anything better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179892</commentid>
    <comment_count>18</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2010-01-12 11:02:49 -0800</bug_when>
    <thetext>landed @ r53148. bug closed</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>43716</attachid>
            <date>2009-11-23 07:51:17 -0800</date>
            <delta_ts>2009-12-23 07:04:31 -0800</delta_ts>
            <desc>The patch</desc>
            <filename>31806.patch</filename>
            <type>text/plain</type>
            <size>13488</size>
            <attacher name="Yong Li">yong.li.webkit</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YTY0YzE0My4uMWFjNDJlZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAwOS0xMS0yMyAgWW9uZyBMaSAgPHlv
bmcubGkud2Via2l0QGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBNYWtlIEdJRiBkZWNvZGVyIHN1cHBvcnQgZG93bi1zYW1wbGluZwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzE4MDYKKwor
ICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OnVwcGVyQm91bmRTY2FsZWRZKToKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6bG93ZXJCb3VuZFNjYWxlZFkpOgorICAgICAgICAqIHBs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oOgorICAgICAgICAoV2ViQ29yZTo6
UkdCQTMyQnVmZmVyOjpzY2FsZWRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJHQkEzMkJ1ZmZl
cjo6c2V0U2NhbGVkUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OnNjYWxl
ZFNpemUpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURl
Y29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R0lGSW1hZ2VEZWNvZGVyOjpzaXplTm93QXZh
aWxhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkdJRkltYWdlRGVjb2Rlcjo6aW5pdEZyYW1lQnVm
ZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OmNvcHlPbmVQaXhlbCk6CisgICAgICAgIChXZWJDb3Jl
OjpHSUZJbWFnZURlY29kZXI6OmhhdmVEZWNvZGVkUm93KToKKyAgICAgICAgKFdlYkNvcmU6OkdJ
RkltYWdlRGVjb2Rlcjo6ZnJhbWVDb21wbGV0ZSk6CisKIDIwMDktMTEtMTQgIENocmlzIEZsZWl6
YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBB
ZGxlci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VE
ZWNvZGVyLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVy
LmNwcAppbmRleCBiOGM5ZjI1Li4xOGJlZjc5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwCkBAIC0yNDUsNiArMjQ1LDE2IEBAIGludCBJ
bWFnZURlY29kZXI6Omxvd2VyQm91bmRTY2FsZWRYKGludCBvcmlnWCwgaW50IHNlYXJjaFN0YXJ0
KQogICAgIHJldHVybiBnZXRTY2FsZWRWYWx1ZTxMb3dlckJvdW5kPihtX3NjYWxlZENvbHVtbnMs
IG9yaWdYLCBzZWFyY2hTdGFydCk7CiB9CiAKK2ludCBJbWFnZURlY29kZXI6OnVwcGVyQm91bmRT
Y2FsZWRZKGludCBvcmlnWSwgaW50IHNlYXJjaFN0YXJ0KQoreworICAgIHJldHVybiBnZXRTY2Fs
ZWRWYWx1ZTxVcHBlckJvdW5kPihtX3NjYWxlZFJvd3MsIG9yaWdZLCBzZWFyY2hTdGFydCk7Cit9
CisKK2ludCBJbWFnZURlY29kZXI6Omxvd2VyQm91bmRTY2FsZWRZKGludCBvcmlnWSwgaW50IHNl
YXJjaFN0YXJ0KQoreworICAgIHJldHVybiBnZXRTY2FsZWRWYWx1ZTxMb3dlckJvdW5kPihtX3Nj
YWxlZFJvd3MsIG9yaWdZLCBzZWFyY2hTdGFydCk7Cit9CisKIGludCBJbWFnZURlY29kZXI6OnNj
YWxlZFkoaW50IG9yaWdZLCBpbnQgc2VhcmNoU3RhcnQpCiB7CiAgICAgcmV0dXJuIGdldFNjYWxl
ZFZhbHVlPEV4YWN0PihtX3NjYWxlZFJvd3MsIG9yaWdZLCBzZWFyY2hTdGFydCk7CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaAppbmRleCBkZjZiNDQz
Li4wYmI3Yzg4IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0lt
YWdlRGVjb2Rlci5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VE
ZWNvZGVyLmgKQEAgLTEzMyw2ICsxMzMsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICAgICAgc2V0UkdCQShnZXRBZGRyKHgsIHkpLCByLCBnLCBiLCBhKTsKICAgICAgICAgfQogCisj
aWYgRU5BQkxFKElNQUdFX0RFQ09ERVJfRE9XTl9TQU1QTElORykKKyAgICAgICAgY29uc3QgSW50
UmVjdCYgc2NhbGVkUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fc2NhbGVkUmVjdDsgfQorICAgICAg
ICB2b2lkIHNldFNjYWxlZFJlY3QoY29uc3QgSW50UmVjdCYgcikgeyBtX3NjYWxlZFJlY3QgPSBy
OyB9CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKFFUKQogICAgICAgICB2b2lkIHNldERlY29kZWRJ
bWFnZShjb25zdCBRSW1hZ2UmIGltYWdlKTsKICAgICAgICAgUUltYWdlIGRlY29kZWRJbWFnZSgp
IGNvbnN0IHsgcmV0dXJuIG1faW1hZ2U7IH0KQEAgLTE5MCw2ICsxOTUsOSBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIHVuc2lnbmVkIG1fZHVyYXRpb247ICAvLyBUaGUgYW5pbWF0aW9u
IGRlbGF5LgogICAgICAgICBGcmFtZURpc3Bvc2FsTWV0aG9kIG1fZGlzcG9zYWxNZXRob2Q7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXaGF0IHRvIGRvIHdpdGggdGhpcyBmcmFt
ZSdzIGRhdGEgd2hlbiBpbml0aWFsaXppbmcgdGhlIG5leHQgZnJhbWUuCisjaWYgRU5BQkxFKElN
QUdFX0RFQ09ERVJfRE9XTl9TQU1QTElORykKKyAgICAgICAgSW50UmVjdCBtX3NjYWxlZFJlY3Q7
CisjZW5kaWYKICAgICB9OwogCiAgICAgLy8gVGhlIEltYWdlRGVjb2RlciBjbGFzcyByZXByZXNl
bnRzIGEgYmFzZSBjbGFzcyBmb3Igc3BlY2lmaWMgaW1hZ2UgZm9ybWF0IGRlY29kZXJzCkBAIC0y
OTYsNiArMzA0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgRU5BQkxFKElNQUdFX0RF
Q09ERVJfRE9XTl9TQU1QTElORykKICAgICAgICAgdm9pZCBzZXRNYXhOdW1QaXhlbHMoaW50IG0p
IHsgbV9tYXhOdW1QaXhlbHMgPSBtOyB9CisgICAgICAgIEludFNpemUgc2NhbGVkU2l6ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc2NhbGVkID8gSW50U2l6ZShtX3NjYWxlZENvbHVtbnMuc2l6ZSgpLCBt
X3NjYWxlZFJvd3Muc2l6ZSgpKSA6IG1fc2l6ZTsgfQogI2VuZGlmCiAKICAgICBwcm90ZWN0ZWQ6
CkBAIC0zMDMsNiArMzEyLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHBy
ZXBhcmVTY2FsZURhdGFJZk5lY2Vzc2FyeSgpOwogICAgICAgICBpbnQgdXBwZXJCb3VuZFNjYWxl
ZFgoaW50IG9yaWdYLCBpbnQgc2VhcmNoU3RhcnQgPSAwKTsKICAgICAgICAgaW50IGxvd2VyQm91
bmRTY2FsZWRYKGludCBvcmlnWCwgaW50IHNlYXJjaFN0YXJ0ID0gMCk7CisgICAgICAgIGludCB1
cHBlckJvdW5kU2NhbGVkWShpbnQgb3JpZ1ksIGludCBzZWFyY2hTdGFydCA9IDApOworICAgICAg
ICBpbnQgbG93ZXJCb3VuZFNjYWxlZFkoaW50IG9yaWdZLCBpbnQgc2VhcmNoU3RhcnQgPSAwKTsK
ICAgICAgICAgaW50IHNjYWxlZFkoaW50IG9yaWdZLCBpbnQgc2VhcmNoU3RhcnQgPSAwKTsKICNl
bmRpZgogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9H
SUZJbWFnZURlY29kZXIuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYv
R0lGSW1hZ2VEZWNvZGVyLmNwcAppbmRleCA4NzAzNmM5Li5jMGIzMDUwIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwCisr
KyBiL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5j
cHAKQEAgLTI0Niw3ICsyNDYsMTIgQEAgdm9pZCBHSUZJbWFnZURlY29kZXI6OmRlY29kZShHSUZR
dWVyeSBxdWVyeSwgdW5zaWduZWQgaGFsdEF0RnJhbWUpCiAvLyBDYWxsYmFja3MgZnJvbSB0aGUg
R0lGIHJlYWRlci4KIGJvb2wgR0lGSW1hZ2VEZWNvZGVyOjpzaXplTm93QXZhaWxhYmxlKHVuc2ln
bmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQpCiB7Ci0gICAgcmV0dXJuIHNldFNpemUod2lkdGgs
IGhlaWdodCk7CisgICAgaWYgKCFzZXRTaXplKHdpZHRoLCBoZWlnaHQpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisjaWYgRU5BQkxFKElNQUdFX0RFQ09ERVJfRE9XTl9TQU1QTElORykKKyAgICBw
cmVwYXJlU2NhbGVEYXRhSWZOZWNlc3NhcnkoKTsKKyNlbmRpZgorICAgIHJldHVybiB0cnVlOwog
fQogCiB2b2lkIEdJRkltYWdlRGVjb2Rlcjo6ZGVjb2RpbmdIYWx0ZWQodW5zaWduZWQgYnl0ZXNM
ZWZ0KQpAQCAtMjY4LDEwICsyNzMsMjcgQEAgYm9vbCBHSUZJbWFnZURlY29kZXI6OmluaXRGcmFt
ZUJ1ZmZlcih1bnNpZ25lZCBmcmFtZUluZGV4KQogCiAgICAgUkdCQTMyQnVmZmVyKiBjb25zdCBi
dWZmZXIgPSAmbV9mcmFtZUJ1ZmZlckNhY2hlW2ZyYW1lSW5kZXhdOwogICAgIGJ1ZmZlci0+c2V0
UmVjdChmcmFtZVJlY3QpOworCisjaWYgRU5BQkxFKElNQUdFX0RFQ09ERVJfRE9XTl9TQU1QTElO
RykKKyAgICBpZiAobV9zY2FsZWQpIHsKKyAgICAgICAgaW50IGxlZnQgPSB1cHBlckJvdW5kU2Nh
bGVkWChmcmFtZVJlY3QueCgpKTsKKyAgICAgICAgaW50IHJpZ2h0ID0gbG93ZXJCb3VuZFNjYWxl
ZFgoZnJhbWVSZWN0LnJpZ2h0KCksIGxlZnQpOworICAgICAgICBpbnQgdG9wID0gdXBwZXJCb3Vu
ZFNjYWxlZFkoZnJhbWVSZWN0LnkoKSk7CisgICAgICAgIGludCBib3R0b20gPSBsb3dlckJvdW5k
U2NhbGVkWShmcmFtZVJlY3QuYm90dG9tKCksIHRvcCk7CisgICAgICAgIGJ1ZmZlci0+c2V0U2Nh
bGVkUmVjdChJbnRSZWN0KGxlZnQsIHRvcCwgcmlnaHQgLSBsZWZ0LCBib3R0b20gLSB0b3ApKTsK
KyAgICB9IGVsc2UgeworICAgICAgICBidWZmZXItPnNldFNjYWxlZFJlY3QoZnJhbWVSZWN0KTsK
KyAgICB9CisjZW5kaWYKICAgICAKICAgICBpZiAoZnJhbWVJbmRleCA9PSAwKSB7CiAgICAgICAg
IC8vIFRoaXMgaXMgdGhlIGZpcnN0IGZyYW1lLCBzbyB3ZSdyZSBub3QgcmVseWluZyBvbiBhbnkg
cHJldmlvdXMgZGF0YS4KLSAgICAgICAgaWYgKCFidWZmZXItPnNldFNpemUoc2l6ZSgpLndpZHRo
KCksIHNpemUoKS5oZWlnaHQoKSkpIHsKKyNpZiBFTkFCTEUoSU1BR0VfREVDT0RFUl9ET1dOX1NB
TVBMSU5HKQorICAgICAgICBjb25zdCBJbnRTaXplJiBidWZmZXJTaXplID0gc2NhbGVkU2l6ZSgp
OworI2Vsc2UKKyAgICAgICAgY29uc3QgSW50U2l6ZSYgYnVmZmVyU2l6ZSA9IHNpemUoKTsKKyNl
bmRpZgorICAgICAgICBpZiAoIWJ1ZmZlci0+c2V0U2l6ZShidWZmZXJTaXplLndpZHRoKCksIGJ1
ZmZlclNpemUuaGVpZ2h0KCkpKSB7CiAgICAgICAgICAgICBtX2ZhaWxlZCA9IHRydWU7CiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KQEAgLTMwMSwxMiArMzIzLDE4IEBAIGJv
b2wgR0lGSW1hZ2VEZWNvZGVyOjppbml0RnJhbWVCdWZmZXIodW5zaWduZWQgZnJhbWVJbmRleCkK
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIFdlIHdhbnQgdG8gY2xlYXIgdGhlIHBy
ZXZpb3VzIGZyYW1lIHRvIHRyYW5zcGFyZW50LCB3aXRob3V0CiAgICAgICAgICAgICAvLyBhZmZl
Y3RpbmcgcGl4ZWxzIGluIHRoZSBpbWFnZSBvdXRzaWRlIG9mIHRoZSBmcmFtZS4KKyNpZiBFTkFC
TEUoSU1BR0VfREVDT0RFUl9ET1dOX1NBTVBMSU5HKQorICAgICAgICAgICAgY29uc3QgSW50UmVj
dCYgcHJldlJlY3QgPSBwcmV2QnVmZmVyLT5zY2FsZWRSZWN0KCk7CisgICAgICAgICAgICBjb25z
dCBJbnRTaXplJiBidWZmZXJTaXplID0gc2NhbGVkU2l6ZSgpOworI2Vsc2UKICAgICAgICAgICAg
IGNvbnN0IEludFJlY3QmIHByZXZSZWN0ID0gcHJldkJ1ZmZlci0+cmVjdCgpOworICAgICAgICAg
ICAgY29uc3QgSW50U2l6ZSYgYnVmZmVyU2l6ZSA9IHNpemUoKTsKKyNlbmRpZgogICAgICAgICAg
ICAgaWYgKChmcmFtZUluZGV4ID09IDApCi0gICAgICAgICAgICAgICAgfHwgcHJldlJlY3QuY29u
dGFpbnMoSW50UmVjdChJbnRQb2ludCgpLCBzaXplKCkpKSkgeworICAgICAgICAgICAgICAgIHx8
IHByZXZSZWN0LmNvbnRhaW5zKEludFJlY3QoSW50UG9pbnQoKSwgYnVmZmVyU2l6ZSkpKSB7CiAg
ICAgICAgICAgICAgICAgLy8gQ2xlYXJpbmcgdGhlIGZpcnN0IGZyYW1lLCBvciBhIGZyYW1lIHRo
ZSBzaXplIG9mIHRoZSB3aG9sZQogICAgICAgICAgICAgICAgIC8vIGltYWdlLCByZXN1bHRzIGlu
IGEgY29tcGxldGVseSBlbXB0eSBpbWFnZS4KLSAgICAgICAgICAgICAgICBpZiAoIWJ1ZmZlci0+
c2V0U2l6ZShzaXplKCkud2lkdGgoKSwgc2l6ZSgpLmhlaWdodCgpKSkgeworICAgICAgICAgICAg
ICAgIGlmICghYnVmZmVyLT5zZXRTaXplKGJ1ZmZlclNpemUud2lkdGgoKSwgYnVmZmVyU2l6ZS5o
ZWlnaHQoKSkpIHsKICAgICAgICAgICAgICAgICAgICAgbV9mYWlsZWQgPSB0cnVlOwogICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgfQpAQCAtMzMxLDYg
KzM1OSwyNyBAQCBib29sIEdJRkltYWdlRGVjb2Rlcjo6aW5pdEZyYW1lQnVmZmVyKHVuc2lnbmVk
IGZyYW1lSW5kZXgpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3N0YXRpYyBpbmxpbmUgdm9pZCBj
b3B5T25lUGl4ZWwoY29uc3QgR0lGSW1hZ2VEZWNvZGVyUHJpdmF0ZSogcmVhZGVyLCBjb25zdCB1
bnNpZ25lZCBjaGFyKiBzb3VyY2VBZGRyLCB1bnNpZ25lZCBjaGFyKiBjb2xvck1hcCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY29sb3JNYXBTaXplLCBib29sIHdy
aXRlVHJhbnNwYXJlbnRQaXhlbHMsIFJHQkEzMkJ1ZmZlciYgYnVmZmVyLCBpbnQgeCwgaW50ICB5
LCBib29sJiBzYXdBbHBoYSkKK3sKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyIHNvdXJjZVZhbHVl
ID0gKnNvdXJjZUFkZHI7CisgICAgaWYgKCghcmVhZGVyLT5pc1RyYW5zcGFyZW50KCkgfHwgKHNv
dXJjZVZhbHVlICE9IHJlYWRlci0+dHJhbnNwYXJlbnRQaXhlbCgpKSkgJiYgKHNvdXJjZVZhbHVl
IDwgY29sb3JNYXBTaXplKSkgeworICAgICAgICBjb25zdCBzaXplX3QgY29sb3JJbmRleCA9IHN0
YXRpY19jYXN0PHNpemVfdD4oc291cmNlVmFsdWUpICogMzsKKyAgICAgICAgYnVmZmVyLnNldFJH
QkEoeCwgeSwgY29sb3JNYXBbY29sb3JJbmRleF0sIGNvbG9yTWFwW2NvbG9ySW5kZXggKyAxXSwg
Y29sb3JNYXBbY29sb3JJbmRleCArIDJdLCAyNTUpOworICAgIH0gZWxzZSB7CisgICAgICAgIHNh
d0FscGhhID0gdHJ1ZTsKKyAgICAgICAgLy8gV2UgbWF5IG9yIG1heSBub3QgbmVlZCB0byB3cml0
ZSB0cmFuc3BhcmVudCBwaXhlbHMgdG8gdGhlIGJ1ZmZlci4KKyAgICAgICAgLy8gSWYgd2UncmUg
Y29tcG9zaXRpbmcgYWdhaW5zdCBhIHByZXZpb3VzIGltYWdlLCBpdCdzIHdyb25nLCBhbmQgaWYK
KyAgICAgICAgLy8gd2UncmUgd3JpdGluZyBhdG9wIGEgY2xlYXJlZCwgZnVsbHkgdHJhbnNwYXJl
bnQgYnVmZmVyLCBpdCdzCisgICAgICAgIC8vIHVubmVjZXNzYXJ5OyBidXQgaWYgd2UncmUgZGVj
b2RpbmcgYW4gaW50ZXJsYWNlZCBnaWYgYW5kCisgICAgICAgIC8vIGRpc3BsYXlpbmcgaXQgIkhh
ZWJlcmxpIi1zdHlsZSwgd2UgbXVzdCB3cml0ZSB0aGVzZSBmb3IgcGFzc2VzCisgICAgICAgIC8v
IGJleW9uZCB0aGUgZmlyc3QsIG9yIHRoZSBpbml0aWFsIHBhc3NlcyB3aWxsICJzaG93IHRocm91
Z2giIHRoZQorICAgICAgICAvLyBsYXRlciBvbmVzLgorICAgICAgICBpZiAod3JpdGVUcmFuc3Bh
cmVudFBpeGVscykKKyAgICAgICAgICAgIGJ1ZmZlci5zZXRSR0JBKHgsIHksIDAsIDAsIDAsIDAp
OworICAgIH0KK30KKwogdm9pZCBHSUZJbWFnZURlY29kZXI6OmhhdmVEZWNvZGVkUm93KHVuc2ln
bmVkIGZyYW1lSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgY2hhciogcm93QnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGNoYXIqIHJvd0VuZCwKQEAgLTM0Miw3ICszOTEsNyBAQCB2b2lkIEdJRklt
YWdlRGVjb2Rlcjo6aGF2ZURlY29kZWRSb3codW5zaWduZWQgZnJhbWVJbmRleCwKICAgICAvLyBv
cmlnaW4gd2l0aGluIHRoZSBlbnRpcmUgaW1hZ2Ugc2l6ZSwgaS5lLgogICAgIC8vIChtX3JlYWRl
ci0+ZnJhbWVYT2Zmc2V0KCksIG1fcmVhZGVyLT5mcmFtZVlPZmZzZXQoKSkuCiAgICAgaW50IHgg
PSBtX3JlYWRlci0+ZnJhbWVYT2Zmc2V0KCk7Ci0gICAgY29uc3QgaW50IHkgPSBtX3JlYWRlci0+
ZnJhbWVZT2Zmc2V0KCkgKyByb3dOdW1iZXI7CisgICAgaW50IHkgPSBtX3JlYWRlci0+ZnJhbWVZ
T2Zmc2V0KCkgKyByb3dOdW1iZXI7CiAKICAgICAvLyBTYW5pdHktY2hlY2sgdGhlIGFyZ3VtZW50
cy4KICAgICBpZiAoKHJvd0J1ZmZlciA9PSAwKSB8fCAoeSA+PSBzaXplKCkuaGVpZ2h0KCkpKQpA
QCAtMzYwLDMyICs0MDksNTkgQEAgdm9pZCBHSUZJbWFnZURlY29kZXI6OmhhdmVEZWNvZGVkUm93
KHVuc2lnbmVkIGZyYW1lSW5kZXgsCiAgICAgaWYgKChidWZmZXIuc3RhdHVzKCkgPT0gUkdCQTMy
QnVmZmVyOjpGcmFtZUVtcHR5KSAmJiAhaW5pdEZyYW1lQnVmZmVyKGZyYW1lSW5kZXgpKQogICAg
ICAgICByZXR1cm47CiAKKyNpZiBFTkFCTEUoSU1BR0VfREVDT0RFUl9ET1dOX1NBTVBMSU5HKQor
ICAgIGNvbnN0IEludFNpemUmIGJ1ZmZlclNpemUgPSBzY2FsZWRTaXplKCk7CisKKyAgICBpbnQg
ZGVzdFlCZWdpbiA9IHk7CisgICAgaW50IGRlc3RZRW5kID0geSArIHJlcGVhdENvdW50OworICAg
IGludCBkZXN0WEJlZ2luID0geDsKKyAgICBpbnQgZGVzdFhFbmQgPSBzdGQ6Om1pbih4ICsgKHJv
d0VuZCAtIHJvd0J1ZmZlciksIHNpemUoKS53aWR0aCgpKTsKKworICAgIGlmIChtX3NjYWxlZCkg
eworICAgICAgICBkZXN0WUJlZ2luID0gdXBwZXJCb3VuZFNjYWxlZFkoZGVzdFlCZWdpbik7Cisg
ICAgICAgIGlmIChkZXN0WUJlZ2luIDwgMCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ZGVzdFlFbmQgPSBsb3dlckJvdW5kU2NhbGVkWShkZXN0WUVuZCAtIDEsIGRlc3RZQmVnaW4gKyAx
KTsKKyAgICAgICAgaWYgKGRlc3RZRW5kIDwgZGVzdFlCZWdpbikKKyAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICBkZXN0WEJlZ2luID0gdXBwZXJCb3VuZFNjYWxlZFgoZGVzdFhCZWdpbik7
CisgICAgICAgIGlmIChkZXN0WEJlZ2luIDwgMCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgZGVzdFhFbmQgPSBsb3dlckJvdW5kU2NhbGVkWChkZXN0WEVuZCAtIDEsIGRlc3RYQmVnaW4g
KyAxKTsKKyAgICAgICAgaWYgKGRlc3RYRW5kIDwgZGVzdFhCZWdpbikKKyAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICArK2Rlc3RYRW5kOworICAgICAgICArK2Rlc3RZRW5kOworICAgICAg
ICB4ID0gZGVzdFhCZWdpbjsKKyAgICAgICAgeSA9IGRlc3RZQmVnaW47CisgICAgfQorI2VuZGlm
CisKICAgICAvLyBXcml0ZSBvbmUgcm93J3Mgd29ydGggb2YgZGF0YSBpbnRvIHRoZSBmcmFtZS4g
IFRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0CiAgICAgLy8gKHJvd0VuZCAtIHJvd0J1ZmZlcikg
PT0gKHNpemUoKS53aWR0aCgpIC0gbV9yZWFkZXItPmZyYW1lWE9mZnNldCgpKSwgc28KICAgICAv
LyB3ZSBtdXN0IGVuc3VyZSB3ZSBkb24ndCBydW4gb2ZmIHRoZSBlbmQgb2YgZWl0aGVyIHRoZSBz
b3VyY2UgZGF0YSBvciB0aGUKICAgICAvLyByb3cncyBYLWNvb3JkaW5hdGVzLgotICAgIGZvciAo
dW5zaWduZWQgY2hhciogc291cmNlQWRkciA9IHJvd0J1ZmZlcjsgKHNvdXJjZUFkZHIgIT0gcm93
RW5kKSAmJiAoeCA8IHNpemUoKS53aWR0aCgpKTsgKytzb3VyY2VBZGRyLCArK3gpIHsKLSAgICAg
ICAgY29uc3QgdW5zaWduZWQgY2hhciBzb3VyY2VWYWx1ZSA9ICpzb3VyY2VBZGRyOwotICAgICAg
ICBpZiAoKCFtX3JlYWRlci0+aXNUcmFuc3BhcmVudCgpIHx8IChzb3VyY2VWYWx1ZSAhPSBtX3Jl
YWRlci0+dHJhbnNwYXJlbnRQaXhlbCgpKSkgJiYgKHNvdXJjZVZhbHVlIDwgY29sb3JNYXBTaXpl
KSkgewotICAgICAgICAgICAgY29uc3Qgc2l6ZV90IGNvbG9ySW5kZXggPSBzdGF0aWNfY2FzdDxz
aXplX3Q+KHNvdXJjZVZhbHVlKSAqIDM7Ci0gICAgICAgICAgICBidWZmZXIuc2V0UkdCQSh4LCB5
LCBjb2xvck1hcFtjb2xvckluZGV4XSwgY29sb3JNYXBbY29sb3JJbmRleCArIDFdLCBjb2xvck1h
cFtjb2xvckluZGV4ICsgMl0sIDI1NSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBt
X2N1cnJlbnRCdWZmZXJTYXdBbHBoYSA9IHRydWU7Ci0gICAgICAgICAgICAvLyBXZSBtYXkgb3Ig
bWF5IG5vdCBuZWVkIHRvIHdyaXRlIHRyYW5zcGFyZW50IHBpeGVscyB0byB0aGUgYnVmZmVyLgot
ICAgICAgICAgICAgLy8gSWYgd2UncmUgY29tcG9zaXRpbmcgYWdhaW5zdCBhIHByZXZpb3VzIGlt
YWdlLCBpdCdzIHdyb25nLCBhbmQgaWYKLSAgICAgICAgICAgIC8vIHdlJ3JlIHdyaXRpbmcgYXRv
cCBhIGNsZWFyZWQsIGZ1bGx5IHRyYW5zcGFyZW50IGJ1ZmZlciwgaXQncwotICAgICAgICAgICAg
Ly8gdW5uZWNlc3Nhcnk7IGJ1dCBpZiB3ZSdyZSBkZWNvZGluZyBhbiBpbnRlcmxhY2VkIGdpZiBh
bmQKLSAgICAgICAgICAgIC8vIGRpc3BsYXlpbmcgaXQgIkhhZWJlcmxpIi1zdHlsZSwgd2UgbXVz
dCB3cml0ZSB0aGVzZSBmb3IgcGFzc2VzCi0gICAgICAgICAgICAvLyBiZXlvbmQgdGhlIGZpcnN0
LCBvciB0aGUgaW5pdGlhbCBwYXNzZXMgd2lsbCAic2hvdyB0aHJvdWdoIiB0aGUKLSAgICAgICAg
ICAgIC8vIGxhdGVyIG9uZXMuCi0gICAgICAgICAgICBpZiAod3JpdGVUcmFuc3BhcmVudFBpeGVs
cykKLSAgICAgICAgICAgICAgICBidWZmZXIuc2V0UkdCQSh4LCB5LCAwLCAwLCAwLCAwKTsKKyNp
ZiBFTkFCTEUoSU1BR0VfREVDT0RFUl9ET1dOX1NBTVBMSU5HKQorICAgIGlmIChtX3NjYWxlZCkg
eworICAgICAgICBmb3IgKDsgeCA8IGRlc3RYRW5kOyArK3gpIHsKKyAgICAgICAgICAgIHVuc2ln
bmVkIGNoYXIqIHNvdXJjZUFkZHIgPSByb3dCdWZmZXIgKyBtX3NjYWxlZENvbHVtbnNbeF0gLSBt
X3JlYWRlci0+ZnJhbWVYT2Zmc2V0KCk7CisgICAgICAgICAgICBjb3B5T25lUGl4ZWwobV9yZWFk
ZXIsIHNvdXJjZUFkZHIsIGNvbG9yTWFwLCBjb2xvck1hcFNpemUsIHdyaXRlVHJhbnNwYXJlbnRQ
aXhlbHMsIGJ1ZmZlciwgeCwgeSwgbV9jdXJyZW50QnVmZmVyU2F3QWxwaGEpOwogICAgICAgICB9
Ci0gICAgfQorICAgIH0gZWxzZQorI2VuZGlmCisgICAgZm9yICh1bnNpZ25lZCBjaGFyKiBzb3Vy
Y2VBZGRyID0gcm93QnVmZmVyOyBzb3VyY2VBZGRyIDwgcm93RW5kICYmIHggPCBzaXplKCkud2lk
dGgoKTsgKytzb3VyY2VBZGRyLCArK3gpCisgICAgICAgIGNvcHlPbmVQaXhlbChtX3JlYWRlciwg
c291cmNlQWRkciwgY29sb3JNYXAsIGNvbG9yTWFwU2l6ZSwgd3JpdGVUcmFuc3BhcmVudFBpeGVs
cywgYnVmZmVyLCB4LCB5LCBtX2N1cnJlbnRCdWZmZXJTYXdBbHBoYSk7CiAKICAgICAvLyBUZWxs
IHRoZSBmcmFtZSB0byBjb3B5IHRoZSByb3cgZGF0YSBpZiBuZWVkIGJlLgotICAgIGlmIChyZXBl
YXRDb3VudCA+IDEpCisgICAgaWYgKHJlcGVhdENvdW50ID4gMSkgeworI2lmIEVOQUJMRShJTUFH
RV9ERUNPREVSX0RPV05fU0FNUExJTkcpCisgICAgICAgIGJ1ZmZlci5jb3B5Um93TlRpbWVzKGRl
c3RYQmVnaW4sIGRlc3RYRW5kLCBkZXN0WUJlZ2luLCBkZXN0WUVuZCk7CisjZWxzZQogICAgICAg
ICBidWZmZXIuY29weVJvd05UaW1lcyhtX3JlYWRlci0+ZnJhbWVYT2Zmc2V0KCksIHgsIHksIHN0
ZDo6bWluKHkgKyBzdGF0aWNfY2FzdDxpbnQ+KHJlcGVhdENvdW50KSwgc2l6ZSgpLmhlaWdodCgp
KSk7CisjZW5kaWYKKyAgICB9CiB9CiAKIHZvaWQgR0lGSW1hZ2VEZWNvZGVyOjpmcmFtZUNvbXBs
ZXRlKHVuc2lnbmVkIGZyYW1lSW5kZXgsIHVuc2lnbmVkIGZyYW1lRHVyYXRpb24sIFJHQkEzMkJ1
ZmZlcjo6RnJhbWVEaXNwb3NhbE1ldGhvZCBkaXNwb3NhbE1ldGhvZCkKQEAgLTQwMyw3ICs0Nzks
MTEgQEAgdm9pZCBHSUZJbWFnZURlY29kZXI6OmZyYW1lQ29tcGxldGUodW5zaWduZWQgZnJhbWVJ
bmRleCwgdW5zaWduZWQgZnJhbWVEdXJhdGlvbiwKICAgICBpZiAoIW1fY3VycmVudEJ1ZmZlclNh
d0FscGhhKSB7CiAgICAgICAgIC8vIFRoZSB3aG9sZSBmcmFtZSB3YXMgbm9uLXRyYW5zcGFyZW50
LCBzbyBpdCdzIHBvc3NpYmxlIHRoYXQgdGhlIGVudGlyZQogICAgICAgICAvLyByZXN1bHRpbmcg
YnVmZmVyIHdhcyBub24tdHJhbnNwYXJlbnQsIGFuZCB3ZSBjYW4gc2V0SGFzQWxwaGEoZmFsc2Up
LgorI2lmIEVOQUJMRShJTUFHRV9ERUNPREVSX0RPV05fU0FNUExJTkcpCisgICAgICAgIGlmIChi
dWZmZXIuc2NhbGVkUmVjdCgpLmNvbnRhaW5zKEludFJlY3QoSW50UG9pbnQoKSwgc2NhbGVkU2l6
ZSgpKSkpCisjZWxzZQogICAgICAgICBpZiAoYnVmZmVyLnJlY3QoKS5jb250YWlucyhJbnRSZWN0
KEludFBvaW50KCksIHNpemUoKSkpKQorI2VuZGlmCiAgICAgICAgICAgICBidWZmZXIuc2V0SGFz
QWxwaGEoZmFsc2UpOwogICAgICAgICBlbHNlIGlmIChmcmFtZUluZGV4ID4gMCkgewogICAgICAg
ICAgICAgLy8gVHJpY2t5IGNhc2UuICBUaGlzIGZyYW1lIGRvZXMgbm90IGhhdmUgYWxwaGEgb25s
eSBpZiBldmVyeXdoZXJlCkBAIC00MjgsNyArNTA4LDExIEBAIHZvaWQgR0lGSW1hZ2VEZWNvZGVy
OjpmcmFtZUNvbXBsZXRlKHVuc2lnbmVkIGZyYW1lSW5kZXgsIHVuc2lnbmVkIGZyYW1lRHVyYXRp
b24sCiAgICAgICAgICAgICAvLyBpdCBoYWQgbm8gYWxwaGEsIGFuZCBpdHMgcmVjdCBpcyBjb250
YWluZWQgaW4gdGhlIGN1cnJlbnQgZnJhbWUncwogICAgICAgICAgICAgLy8gcmVjdCwgd2Uga25v
dyB0aGUgY3VycmVudCBmcmFtZSBoYXMgbm8gYWxwaGEuCiAgICAgICAgICAgICBpZiAoKHByZXZC
dWZmZXItPmRpc3Bvc2FsTWV0aG9kKCkgPT0gUkdCQTMyQnVmZmVyOjpEaXNwb3NlT3ZlcndyaXRl
Qmdjb2xvcikKKyNpZiBFTkFCTEUoSU1BR0VfREVDT0RFUl9ET1dOX1NBTVBMSU5HKQorICAgICAg
ICAgICAgICAgICYmICFwcmV2QnVmZmVyLT5oYXNBbHBoYSgpICYmIGJ1ZmZlci5zY2FsZWRSZWN0
KCkuY29udGFpbnMocHJldkJ1ZmZlci0+c2NhbGVkUmVjdCgpKSkKKyNlbHNlCiAgICAgICAgICAg
ICAgICAgJiYgIXByZXZCdWZmZXItPmhhc0FscGhhKCkgJiYgYnVmZmVyLnJlY3QoKS5jb250YWlu
cyhwcmV2QnVmZmVyLT5yZWN0KCkpKQorI2VuZGlmCiAgICAgICAgICAgICAgICAgYnVmZmVyLnNl
dEhhc0FscGhhKGZhbHNlKTsKICAgICAgICAgfQogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45438</attachid>
            <date>2009-12-23 07:04:31 -0800</date>
            <delta_ts>2009-12-23 07:18:59 -0800</delta_ts>
            <desc>updated</desc>
            <filename>31806.patch</filename>
            <type>text/plain</type>
            <size>12386</size>
            <attacher name="Yong Li">yong.li.webkit</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVy
LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcApp
bmRleCBiOGM5ZjI1Li4xOGJlZjc5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9JbWFnZURlY29kZXIuY3BwCkBAIC0yNDUsNiArMjQ1LDE2IEBAIGludCBJbWFnZURl
Y29kZXI6Omxvd2VyQm91bmRTY2FsZWRYKGludCBvcmlnWCwgaW50IHNlYXJjaFN0YXJ0KQogICAg
IHJldHVybiBnZXRTY2FsZWRWYWx1ZTxMb3dlckJvdW5kPihtX3NjYWxlZENvbHVtbnMsIG9yaWdY
LCBzZWFyY2hTdGFydCk7CiB9CiAKK2ludCBJbWFnZURlY29kZXI6OnVwcGVyQm91bmRTY2FsZWRZ
KGludCBvcmlnWSwgaW50IHNlYXJjaFN0YXJ0KQoreworICAgIHJldHVybiBnZXRTY2FsZWRWYWx1
ZTxVcHBlckJvdW5kPihtX3NjYWxlZFJvd3MsIG9yaWdZLCBzZWFyY2hTdGFydCk7Cit9CisKK2lu
dCBJbWFnZURlY29kZXI6Omxvd2VyQm91bmRTY2FsZWRZKGludCBvcmlnWSwgaW50IHNlYXJjaFN0
YXJ0KQoreworICAgIHJldHVybiBnZXRTY2FsZWRWYWx1ZTxMb3dlckJvdW5kPihtX3NjYWxlZFJv
d3MsIG9yaWdZLCBzZWFyY2hTdGFydCk7Cit9CisKIGludCBJbWFnZURlY29kZXI6OnNjYWxlZFko
aW50IG9yaWdZLCBpbnQgc2VhcmNoU3RhcnQpCiB7CiAgICAgcmV0dXJuIGdldFNjYWxlZFZhbHVl
PEV4YWN0PihtX3NjYWxlZFJvd3MsIG9yaWdZLCBzZWFyY2hTdGFydCk7CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oIGIvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaAppbmRleCAzMWQzNjQ4Li43ZDhl
MWFmIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVj
b2Rlci5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVy
LmgKQEAgLTEzMyw2ICsxMzMsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAg
c2V0UkdCQShnZXRBZGRyKHgsIHkpLCByLCBnLCBiLCBhKTsKICAgICAgICAgfQogCisjaWYgRU5B
QkxFKElNQUdFX0RFQ09ERVJfRE9XTl9TQU1QTElORykKKyAgICAgICAgY29uc3QgSW50UmVjdCYg
c2NhbGVkUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fc2NhbGVkUmVjdDsgfQorICAgICAgICB2b2lk
IHNldFNjYWxlZFJlY3QoY29uc3QgSW50UmVjdCYgcikgeyBtX3NjYWxlZFJlY3QgPSByOyB9Cisj
ZW5kaWYKKwogI2lmIFBMQVRGT1JNKFFUKQogICAgICAgICB2b2lkIHNldERlY29kZWRJbWFnZShj
b25zdCBRSW1hZ2UmIGltYWdlKTsKICAgICAgICAgUUltYWdlIGRlY29kZWRJbWFnZSgpIGNvbnN0
IHsgcmV0dXJuIG1faW1hZ2U7IH0KQEAgLTE5MCw2ICsxOTUsOSBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIHVuc2lnbmVkIG1fZHVyYXRpb247ICAvLyBUaGUgYW5pbWF0aW9uIGRlbGF5
LgogICAgICAgICBGcmFtZURpc3Bvc2FsTWV0aG9kIG1fZGlzcG9zYWxNZXRob2Q7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBXaGF0IHRvIGRvIHdpdGggdGhpcyBmcmFtZSdzIGRh
dGEgd2hlbiBpbml0aWFsaXppbmcgdGhlIG5leHQgZnJhbWUuCisjaWYgRU5BQkxFKElNQUdFX0RF
Q09ERVJfRE9XTl9TQU1QTElORykKKyAgICAgICAgSW50UmVjdCBtX3NjYWxlZFJlY3Q7CisjZW5k
aWYKICAgICB9OwogCiAgICAgLy8gVGhlIEltYWdlRGVjb2RlciBjbGFzcyByZXByZXNlbnRzIGEg
YmFzZSBjbGFzcyBmb3Igc3BlY2lmaWMgaW1hZ2UgZm9ybWF0IGRlY29kZXJzCkBAIC0yOTYsNiAr
MzA0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgRU5BQkxFKElNQUdFX0RFQ09ERVJf
RE9XTl9TQU1QTElORykKICAgICAgICAgdm9pZCBzZXRNYXhOdW1QaXhlbHMoaW50IG0pIHsgbV9t
YXhOdW1QaXhlbHMgPSBtOyB9CisgICAgICAgIEludFNpemUgc2NhbGVkU2l6ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fc2NhbGVkID8gSW50U2l6ZShtX3NjYWxlZENvbHVtbnMuc2l6ZSgpLCBtX3NjYWxl
ZFJvd3Muc2l6ZSgpKSA6IG1fc2l6ZTsgfQogI2VuZGlmCiAKICAgICBwcm90ZWN0ZWQ6CkBAIC0z
MDMsNiArMzEyLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHByZXBhcmVT
Y2FsZURhdGFJZk5lY2Vzc2FyeSgpOwogICAgICAgICBpbnQgdXBwZXJCb3VuZFNjYWxlZFgoaW50
IG9yaWdYLCBpbnQgc2VhcmNoU3RhcnQgPSAwKTsKICAgICAgICAgaW50IGxvd2VyQm91bmRTY2Fs
ZWRYKGludCBvcmlnWCwgaW50IHNlYXJjaFN0YXJ0ID0gMCk7CisgICAgICAgIGludCB1cHBlckJv
dW5kU2NhbGVkWShpbnQgb3JpZ1ksIGludCBzZWFyY2hTdGFydCA9IDApOworICAgICAgICBpbnQg
bG93ZXJCb3VuZFNjYWxlZFkoaW50IG9yaWdZLCBpbnQgc2VhcmNoU3RhcnQgPSAwKTsKICAgICAg
ICAgaW50IHNjYWxlZFkoaW50IG9yaWdZLCBpbnQgc2VhcmNoU3RhcnQgPSAwKTsKICNlbmRpZgog
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFn
ZURlY29kZXIuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1h
Z2VEZWNvZGVyLmNwcAppbmRleCA4NzAzNmM5Li4wN2I4ZDYwIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwCisrKyBiL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAKQEAg
LTI0Niw3ICsyNDYsMTIgQEAgdm9pZCBHSUZJbWFnZURlY29kZXI6OmRlY29kZShHSUZRdWVyeSBx
dWVyeSwgdW5zaWduZWQgaGFsdEF0RnJhbWUpCiAvLyBDYWxsYmFja3MgZnJvbSB0aGUgR0lGIHJl
YWRlci4KIGJvb2wgR0lGSW1hZ2VEZWNvZGVyOjpzaXplTm93QXZhaWxhYmxlKHVuc2lnbmVkIHdp
ZHRoLCB1bnNpZ25lZCBoZWlnaHQpCiB7Ci0gICAgcmV0dXJuIHNldFNpemUod2lkdGgsIGhlaWdo
dCk7CisgICAgaWYgKCFzZXRTaXplKHdpZHRoLCBoZWlnaHQpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisjaWYgRU5BQkxFKElNQUdFX0RFQ09ERVJfRE9XTl9TQU1QTElORykKKyAgICBwcmVwYXJl
U2NhbGVEYXRhSWZOZWNlc3NhcnkoKTsKKyNlbmRpZgorICAgIHJldHVybiB0cnVlOwogfQogCiB2
b2lkIEdJRkltYWdlRGVjb2Rlcjo6ZGVjb2RpbmdIYWx0ZWQodW5zaWduZWQgYnl0ZXNMZWZ0KQpA
QCAtMjY4LDEwICsyNzMsMjYgQEAgYm9vbCBHSUZJbWFnZURlY29kZXI6OmluaXRGcmFtZUJ1ZmZl
cih1bnNpZ25lZCBmcmFtZUluZGV4KQogCiAgICAgUkdCQTMyQnVmZmVyKiBjb25zdCBidWZmZXIg
PSAmbV9mcmFtZUJ1ZmZlckNhY2hlW2ZyYW1lSW5kZXhdOwogICAgIGJ1ZmZlci0+c2V0UmVjdChm
cmFtZVJlY3QpOworCisjaWYgRU5BQkxFKElNQUdFX0RFQ09ERVJfRE9XTl9TQU1QTElORykKKyAg
ICBpZiAobV9zY2FsZWQpIHsKKyAgICAgICAgaW50IGxlZnQgPSB1cHBlckJvdW5kU2NhbGVkWChm
cmFtZVJlY3QueCgpKTsKKyAgICAgICAgaW50IHJpZ2h0ID0gbG93ZXJCb3VuZFNjYWxlZFgoZnJh
bWVSZWN0LnJpZ2h0KCksIGxlZnQpOworICAgICAgICBpbnQgdG9wID0gdXBwZXJCb3VuZFNjYWxl
ZFkoZnJhbWVSZWN0LnkoKSk7CisgICAgICAgIGludCBib3R0b20gPSBsb3dlckJvdW5kU2NhbGVk
WShmcmFtZVJlY3QuYm90dG9tKCksIHRvcCk7CisgICAgICAgIGJ1ZmZlci0+c2V0U2NhbGVkUmVj
dChJbnRSZWN0KGxlZnQsIHRvcCwgcmlnaHQgLSBsZWZ0LCBib3R0b20gLSB0b3ApKTsKKyAgICB9
IGVsc2UKKyAgICAgICAgYnVmZmVyLT5zZXRTY2FsZWRSZWN0KGZyYW1lUmVjdCk7CisjZW5kaWYK
ICAgICAKICAgICBpZiAoZnJhbWVJbmRleCA9PSAwKSB7CiAgICAgICAgIC8vIFRoaXMgaXMgdGhl
IGZpcnN0IGZyYW1lLCBzbyB3ZSdyZSBub3QgcmVseWluZyBvbiBhbnkgcHJldmlvdXMgZGF0YS4K
LSAgICAgICAgaWYgKCFidWZmZXItPnNldFNpemUoc2l6ZSgpLndpZHRoKCksIHNpemUoKS5oZWln
aHQoKSkpIHsKKyNpZiBFTkFCTEUoSU1BR0VfREVDT0RFUl9ET1dOX1NBTVBMSU5HKQorICAgICAg
ICBjb25zdCBJbnRTaXplJiBidWZmZXJTaXplID0gc2NhbGVkU2l6ZSgpOworI2Vsc2UKKyAgICAg
ICAgY29uc3QgSW50U2l6ZSYgYnVmZmVyU2l6ZSA9IHNpemUoKTsKKyNlbmRpZgorICAgICAgICBp
ZiAoIWJ1ZmZlci0+c2V0U2l6ZShidWZmZXJTaXplLndpZHRoKCksIGJ1ZmZlclNpemUuaGVpZ2h0
KCkpKSB7CiAgICAgICAgICAgICBtX2ZhaWxlZCA9IHRydWU7CiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgIH0KQEAgLTMwMSwxMiArMzIyLDE4IEBAIGJvb2wgR0lGSW1hZ2VEZWNv
ZGVyOjppbml0RnJhbWVCdWZmZXIodW5zaWduZWQgZnJhbWVJbmRleCkKICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgIC8vIFdlIHdhbnQgdG8gY2xlYXIgdGhlIHByZXZpb3VzIGZyYW1lIHRv
IHRyYW5zcGFyZW50LCB3aXRob3V0CiAgICAgICAgICAgICAvLyBhZmZlY3RpbmcgcGl4ZWxzIGlu
IHRoZSBpbWFnZSBvdXRzaWRlIG9mIHRoZSBmcmFtZS4KKyNpZiBFTkFCTEUoSU1BR0VfREVDT0RF
Ul9ET1dOX1NBTVBMSU5HKQorICAgICAgICAgICAgY29uc3QgSW50UmVjdCYgcHJldlJlY3QgPSBw
cmV2QnVmZmVyLT5zY2FsZWRSZWN0KCk7CisgICAgICAgICAgICBjb25zdCBJbnRTaXplJiBidWZm
ZXJTaXplID0gc2NhbGVkU2l6ZSgpOworI2Vsc2UKICAgICAgICAgICAgIGNvbnN0IEludFJlY3Qm
IHByZXZSZWN0ID0gcHJldkJ1ZmZlci0+cmVjdCgpOworICAgICAgICAgICAgY29uc3QgSW50U2l6
ZSYgYnVmZmVyU2l6ZSA9IHNpemUoKTsKKyNlbmRpZgogICAgICAgICAgICAgaWYgKChmcmFtZUlu
ZGV4ID09IDApCi0gICAgICAgICAgICAgICAgfHwgcHJldlJlY3QuY29udGFpbnMoSW50UmVjdChJ
bnRQb2ludCgpLCBzaXplKCkpKSkgeworICAgICAgICAgICAgICAgIHx8IHByZXZSZWN0LmNvbnRh
aW5zKEludFJlY3QoSW50UG9pbnQoKSwgYnVmZmVyU2l6ZSkpKSB7CiAgICAgICAgICAgICAgICAg
Ly8gQ2xlYXJpbmcgdGhlIGZpcnN0IGZyYW1lLCBvciBhIGZyYW1lIHRoZSBzaXplIG9mIHRoZSB3
aG9sZQogICAgICAgICAgICAgICAgIC8vIGltYWdlLCByZXN1bHRzIGluIGEgY29tcGxldGVseSBl
bXB0eSBpbWFnZS4KLSAgICAgICAgICAgICAgICBpZiAoIWJ1ZmZlci0+c2V0U2l6ZShzaXplKCku
d2lkdGgoKSwgc2l6ZSgpLmhlaWdodCgpKSkgeworICAgICAgICAgICAgICAgIGlmICghYnVmZmVy
LT5zZXRTaXplKGJ1ZmZlclNpemUud2lkdGgoKSwgYnVmZmVyU2l6ZS5oZWlnaHQoKSkpIHsKICAg
ICAgICAgICAgICAgICAgICAgbV9mYWlsZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgfQpAQCAtMzMxLDYgKzM1OCwyNyBAQCBib29s
IEdJRkltYWdlRGVjb2Rlcjo6aW5pdEZyYW1lQnVmZmVyKHVuc2lnbmVkIGZyYW1lSW5kZXgpCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKK3N0YXRpYyBpbmxpbmUgdm9pZCBjb3B5T25lUGl4ZWwoY29u
c3QgR0lGSW1hZ2VEZWNvZGVyUHJpdmF0ZSogcmVhZGVyLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBz
b3VyY2VBZGRyLCB1bnNpZ25lZCBjaGFyKiBjb2xvck1hcCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgY29sb3JNYXBTaXplLCBib29sIHdyaXRlVHJhbnNwYXJlbnRQ
aXhlbHMsIFJHQkEzMkJ1ZmZlciYgYnVmZmVyLCBpbnQgeCwgaW50ICB5LCBib29sJiBzYXdBbHBo
YSkKK3sKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyIHNvdXJjZVZhbHVlID0gKnNvdXJjZUFkZHI7
CisgICAgaWYgKCghcmVhZGVyLT5pc1RyYW5zcGFyZW50KCkgfHwgKHNvdXJjZVZhbHVlICE9IHJl
YWRlci0+dHJhbnNwYXJlbnRQaXhlbCgpKSkgJiYgKHNvdXJjZVZhbHVlIDwgY29sb3JNYXBTaXpl
KSkgeworICAgICAgICBjb25zdCBzaXplX3QgY29sb3JJbmRleCA9IHN0YXRpY19jYXN0PHNpemVf
dD4oc291cmNlVmFsdWUpICogMzsKKyAgICAgICAgYnVmZmVyLnNldFJHQkEoeCwgeSwgY29sb3JN
YXBbY29sb3JJbmRleF0sIGNvbG9yTWFwW2NvbG9ySW5kZXggKyAxXSwgY29sb3JNYXBbY29sb3JJ
bmRleCArIDJdLCAyNTUpOworICAgIH0gZWxzZSB7CisgICAgICAgIHNhd0FscGhhID0gdHJ1ZTsK
KyAgICAgICAgLy8gV2UgbWF5IG9yIG1heSBub3QgbmVlZCB0byB3cml0ZSB0cmFuc3BhcmVudCBw
aXhlbHMgdG8gdGhlIGJ1ZmZlci4KKyAgICAgICAgLy8gSWYgd2UncmUgY29tcG9zaXRpbmcgYWdh
aW5zdCBhIHByZXZpb3VzIGltYWdlLCBpdCdzIHdyb25nLCBhbmQgaWYKKyAgICAgICAgLy8gd2Un
cmUgd3JpdGluZyBhdG9wIGEgY2xlYXJlZCwgZnVsbHkgdHJhbnNwYXJlbnQgYnVmZmVyLCBpdCdz
CisgICAgICAgIC8vIHVubmVjZXNzYXJ5OyBidXQgaWYgd2UncmUgZGVjb2RpbmcgYW4gaW50ZXJs
YWNlZCBnaWYgYW5kCisgICAgICAgIC8vIGRpc3BsYXlpbmcgaXQgIkhhZWJlcmxpIi1zdHlsZSwg
d2UgbXVzdCB3cml0ZSB0aGVzZSBmb3IgcGFzc2VzCisgICAgICAgIC8vIGJleW9uZCB0aGUgZmly
c3QsIG9yIHRoZSBpbml0aWFsIHBhc3NlcyB3aWxsICJzaG93IHRocm91Z2giIHRoZQorICAgICAg
ICAvLyBsYXRlciBvbmVzLgorICAgICAgICBpZiAod3JpdGVUcmFuc3BhcmVudFBpeGVscykKKyAg
ICAgICAgICAgIGJ1ZmZlci5zZXRSR0JBKHgsIHksIDAsIDAsIDAsIDApOworICAgIH0KK30KKwog
dm9pZCBHSUZJbWFnZURlY29kZXI6OmhhdmVEZWNvZGVkUm93KHVuc2lnbmVkIGZyYW1lSW5kZXgs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciogcm93
QnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNo
YXIqIHJvd0VuZCwKQEAgLTM0Miw3ICszOTAsNyBAQCB2b2lkIEdJRkltYWdlRGVjb2Rlcjo6aGF2
ZURlY29kZWRSb3codW5zaWduZWQgZnJhbWVJbmRleCwKICAgICAvLyBvcmlnaW4gd2l0aGluIHRo
ZSBlbnRpcmUgaW1hZ2Ugc2l6ZSwgaS5lLgogICAgIC8vIChtX3JlYWRlci0+ZnJhbWVYT2Zmc2V0
KCksIG1fcmVhZGVyLT5mcmFtZVlPZmZzZXQoKSkuCiAgICAgaW50IHggPSBtX3JlYWRlci0+ZnJh
bWVYT2Zmc2V0KCk7Ci0gICAgY29uc3QgaW50IHkgPSBtX3JlYWRlci0+ZnJhbWVZT2Zmc2V0KCkg
KyByb3dOdW1iZXI7CisgICAgaW50IHkgPSBtX3JlYWRlci0+ZnJhbWVZT2Zmc2V0KCkgKyByb3dO
dW1iZXI7CiAKICAgICAvLyBTYW5pdHktY2hlY2sgdGhlIGFyZ3VtZW50cy4KICAgICBpZiAoKHJv
d0J1ZmZlciA9PSAwKSB8fCAoeSA+PSBzaXplKCkuaGVpZ2h0KCkpKQpAQCAtMzYwLDMyICs0MDgs
NTcgQEAgdm9pZCBHSUZJbWFnZURlY29kZXI6OmhhdmVEZWNvZGVkUm93KHVuc2lnbmVkIGZyYW1l
SW5kZXgsCiAgICAgaWYgKChidWZmZXIuc3RhdHVzKCkgPT0gUkdCQTMyQnVmZmVyOjpGcmFtZUVt
cHR5KSAmJiAhaW5pdEZyYW1lQnVmZmVyKGZyYW1lSW5kZXgpKQogICAgICAgICByZXR1cm47CiAK
KyNpZiBFTkFCTEUoSU1BR0VfREVDT0RFUl9ET1dOX1NBTVBMSU5HKQorICAgIGludCBkZXN0WUJl
Z2luID0geTsKKyAgICBpbnQgZGVzdFlFbmQgPSBzdGQ6Om1pbih5ICsgc3RhdGljX2Nhc3Q8aW50
PihyZXBlYXRDb3VudCksIHNpemUoKS5oZWlnaHQoKSk7CisgICAgaW50IGRlc3RYQmVnaW4gPSB4
OworICAgIGludCBkZXN0WEVuZCA9IHN0ZDo6bWluKHggKyAocm93RW5kIC0gcm93QnVmZmVyKSwg
c2l6ZSgpLndpZHRoKCkpOworCisgICAgaWYgKG1fc2NhbGVkKSB7CisgICAgICAgIGRlc3RZQmVn
aW4gPSB1cHBlckJvdW5kU2NhbGVkWShkZXN0WUJlZ2luKTsKKyAgICAgICAgaWYgKGRlc3RZQmVn
aW4gPCAwKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBkZXN0WUVuZCA9IGxvd2VyQm91
bmRTY2FsZWRZKGRlc3RZRW5kIC0gMSwgZGVzdFlCZWdpbiArIDEpOworICAgICAgICBpZiAoZGVz
dFlFbmQgPCBkZXN0WUJlZ2luKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGRlc3RY
QmVnaW4gPSB1cHBlckJvdW5kU2NhbGVkWChkZXN0WEJlZ2luKTsKKyAgICAgICAgaWYgKGRlc3RY
QmVnaW4gPCAwKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBkZXN0WEVuZCA9IGxvd2Vy
Qm91bmRTY2FsZWRYKGRlc3RYRW5kIC0gMSwgZGVzdFhCZWdpbiArIDEpOworICAgICAgICBpZiAo
ZGVzdFhFbmQgPCBkZXN0WEJlZ2luKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICsr
ZGVzdFhFbmQ7CisgICAgICAgICsrZGVzdFlFbmQ7CisgICAgICAgIHggPSBkZXN0WEJlZ2luOwor
ICAgICAgICB5ID0gZGVzdFlCZWdpbjsKKyAgICB9CisjZW5kaWYKKwogICAgIC8vIFdyaXRlIG9u
ZSByb3cncyB3b3J0aCBvZiBkYXRhIGludG8gdGhlIGZyYW1lLiAgVGhlcmUgaXMgbm8gZ3VhcmFu
dGVlIHRoYXQKICAgICAvLyAocm93RW5kIC0gcm93QnVmZmVyKSA9PSAoc2l6ZSgpLndpZHRoKCkg
LSBtX3JlYWRlci0+ZnJhbWVYT2Zmc2V0KCkpLCBzbwogICAgIC8vIHdlIG11c3QgZW5zdXJlIHdl
IGRvbid0IHJ1biBvZmYgdGhlIGVuZCBvZiBlaXRoZXIgdGhlIHNvdXJjZSBkYXRhIG9yIHRoZQog
ICAgIC8vIHJvdydzIFgtY29vcmRpbmF0ZXMuCi0gICAgZm9yICh1bnNpZ25lZCBjaGFyKiBzb3Vy
Y2VBZGRyID0gcm93QnVmZmVyOyAoc291cmNlQWRkciAhPSByb3dFbmQpICYmICh4IDwgc2l6ZSgp
LndpZHRoKCkpOyArK3NvdXJjZUFkZHIsICsreCkgewotICAgICAgICBjb25zdCB1bnNpZ25lZCBj
aGFyIHNvdXJjZVZhbHVlID0gKnNvdXJjZUFkZHI7Ci0gICAgICAgIGlmICgoIW1fcmVhZGVyLT5p
c1RyYW5zcGFyZW50KCkgfHwgKHNvdXJjZVZhbHVlICE9IG1fcmVhZGVyLT50cmFuc3BhcmVudFBp
eGVsKCkpKSAmJiAoc291cmNlVmFsdWUgPCBjb2xvck1hcFNpemUpKSB7Ci0gICAgICAgICAgICBj
b25zdCBzaXplX3QgY29sb3JJbmRleCA9IHN0YXRpY19jYXN0PHNpemVfdD4oc291cmNlVmFsdWUp
ICogMzsKLSAgICAgICAgICAgIGJ1ZmZlci5zZXRSR0JBKHgsIHksIGNvbG9yTWFwW2NvbG9ySW5k
ZXhdLCBjb2xvck1hcFtjb2xvckluZGV4ICsgMV0sIGNvbG9yTWFwW2NvbG9ySW5kZXggKyAyXSwg
MjU1KTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG1fY3VycmVudEJ1ZmZlclNhd0Fs
cGhhID0gdHJ1ZTsKLSAgICAgICAgICAgIC8vIFdlIG1heSBvciBtYXkgbm90IG5lZWQgdG8gd3Jp
dGUgdHJhbnNwYXJlbnQgcGl4ZWxzIHRvIHRoZSBidWZmZXIuCi0gICAgICAgICAgICAvLyBJZiB3
ZSdyZSBjb21wb3NpdGluZyBhZ2FpbnN0IGEgcHJldmlvdXMgaW1hZ2UsIGl0J3Mgd3JvbmcsIGFu
ZCBpZgotICAgICAgICAgICAgLy8gd2UncmUgd3JpdGluZyBhdG9wIGEgY2xlYXJlZCwgZnVsbHkg
dHJhbnNwYXJlbnQgYnVmZmVyLCBpdCdzCi0gICAgICAgICAgICAvLyB1bm5lY2Vzc2FyeTsgYnV0
IGlmIHdlJ3JlIGRlY29kaW5nIGFuIGludGVybGFjZWQgZ2lmIGFuZAotICAgICAgICAgICAgLy8g
ZGlzcGxheWluZyBpdCAiSGFlYmVybGkiLXN0eWxlLCB3ZSBtdXN0IHdyaXRlIHRoZXNlIGZvciBw
YXNzZXMKLSAgICAgICAgICAgIC8vIGJleW9uZCB0aGUgZmlyc3QsIG9yIHRoZSBpbml0aWFsIHBh
c3NlcyB3aWxsICJzaG93IHRocm91Z2giIHRoZQotICAgICAgICAgICAgLy8gbGF0ZXIgb25lcy4K
LSAgICAgICAgICAgIGlmICh3cml0ZVRyYW5zcGFyZW50UGl4ZWxzKQotICAgICAgICAgICAgICAg
IGJ1ZmZlci5zZXRSR0JBKHgsIHksIDAsIDAsIDAsIDApOworI2lmIEVOQUJMRShJTUFHRV9ERUNP
REVSX0RPV05fU0FNUExJTkcpCisgICAgaWYgKG1fc2NhbGVkKSB7CisgICAgICAgIGZvciAoOyB4
IDwgZGVzdFhFbmQ7ICsreCkgeworICAgICAgICAgICAgdW5zaWduZWQgY2hhciogc291cmNlQWRk
ciA9IHJvd0J1ZmZlciArIG1fc2NhbGVkQ29sdW1uc1t4XSAtIG1fcmVhZGVyLT5mcmFtZVhPZmZz
ZXQoKTsKKyAgICAgICAgICAgIGNvcHlPbmVQaXhlbChtX3JlYWRlciwgc291cmNlQWRkciwgY29s
b3JNYXAsIGNvbG9yTWFwU2l6ZSwgd3JpdGVUcmFuc3BhcmVudFBpeGVscywgYnVmZmVyLCB4LCB5
LCBtX2N1cnJlbnRCdWZmZXJTYXdBbHBoYSk7CiAgICAgICAgIH0KLSAgICB9CisgICAgfSBlbHNl
CisjZW5kaWYKKyAgICBmb3IgKHVuc2lnbmVkIGNoYXIqIHNvdXJjZUFkZHIgPSByb3dCdWZmZXI7
IHNvdXJjZUFkZHIgPCByb3dFbmQgJiYgeCA8IHNpemUoKS53aWR0aCgpOyArK3NvdXJjZUFkZHIs
ICsreCkKKyAgICAgICAgY29weU9uZVBpeGVsKG1fcmVhZGVyLCBzb3VyY2VBZGRyLCBjb2xvck1h
cCwgY29sb3JNYXBTaXplLCB3cml0ZVRyYW5zcGFyZW50UGl4ZWxzLCBidWZmZXIsIHgsIHksIG1f
Y3VycmVudEJ1ZmZlclNhd0FscGhhKTsKIAogICAgIC8vIFRlbGwgdGhlIGZyYW1lIHRvIGNvcHkg
dGhlIHJvdyBkYXRhIGlmIG5lZWQgYmUuCi0gICAgaWYgKHJlcGVhdENvdW50ID4gMSkKKyAgICBp
ZiAocmVwZWF0Q291bnQgPiAxKSB7CisjaWYgRU5BQkxFKElNQUdFX0RFQ09ERVJfRE9XTl9TQU1Q
TElORykKKyAgICAgICAgYnVmZmVyLmNvcHlSb3dOVGltZXMoZGVzdFhCZWdpbiwgZGVzdFhFbmQs
IGRlc3RZQmVnaW4sIGRlc3RZRW5kKTsKKyNlbHNlCiAgICAgICAgIGJ1ZmZlci5jb3B5Um93TlRp
bWVzKG1fcmVhZGVyLT5mcmFtZVhPZmZzZXQoKSwgeCwgeSwgc3RkOjptaW4oeSArIHN0YXRpY19j
YXN0PGludD4ocmVwZWF0Q291bnQpLCBzaXplKCkuaGVpZ2h0KCkpKTsKKyNlbmRpZgorICAgIH0K
IH0KIAogdm9pZCBHSUZJbWFnZURlY29kZXI6OmZyYW1lQ29tcGxldGUodW5zaWduZWQgZnJhbWVJ
bmRleCwgdW5zaWduZWQgZnJhbWVEdXJhdGlvbiwgUkdCQTMyQnVmZmVyOjpGcmFtZURpc3Bvc2Fs
TWV0aG9kIGRpc3Bvc2FsTWV0aG9kKQpAQCAtNDAzLDcgKzQ3NiwxMSBAQCB2b2lkIEdJRkltYWdl
RGVjb2Rlcjo6ZnJhbWVDb21wbGV0ZSh1bnNpZ25lZCBmcmFtZUluZGV4LCB1bnNpZ25lZCBmcmFt
ZUR1cmF0aW9uLAogICAgIGlmICghbV9jdXJyZW50QnVmZmVyU2F3QWxwaGEpIHsKICAgICAgICAg
Ly8gVGhlIHdob2xlIGZyYW1lIHdhcyBub24tdHJhbnNwYXJlbnQsIHNvIGl0J3MgcG9zc2libGUg
dGhhdCB0aGUgZW50aXJlCiAgICAgICAgIC8vIHJlc3VsdGluZyBidWZmZXIgd2FzIG5vbi10cmFu
c3BhcmVudCwgYW5kIHdlIGNhbiBzZXRIYXNBbHBoYShmYWxzZSkuCisjaWYgRU5BQkxFKElNQUdF
X0RFQ09ERVJfRE9XTl9TQU1QTElORykKKyAgICAgICAgaWYgKGJ1ZmZlci5zY2FsZWRSZWN0KCku
Y29udGFpbnMoSW50UmVjdChJbnRQb2ludCgpLCBzY2FsZWRTaXplKCkpKSkKKyNlbHNlCiAgICAg
ICAgIGlmIChidWZmZXIucmVjdCgpLmNvbnRhaW5zKEludFJlY3QoSW50UG9pbnQoKSwgc2l6ZSgp
KSkpCisjZW5kaWYKICAgICAgICAgICAgIGJ1ZmZlci5zZXRIYXNBbHBoYShmYWxzZSk7CiAgICAg
ICAgIGVsc2UgaWYgKGZyYW1lSW5kZXggPiAwKSB7CiAgICAgICAgICAgICAvLyBUcmlja3kgY2Fz
ZS4gIFRoaXMgZnJhbWUgZG9lcyBub3QgaGF2ZSBhbHBoYSBvbmx5IGlmIGV2ZXJ5d2hlcmUKQEAg
LTQyOCw3ICs1MDUsMTEgQEAgdm9pZCBHSUZJbWFnZURlY29kZXI6OmZyYW1lQ29tcGxldGUodW5z
aWduZWQgZnJhbWVJbmRleCwgdW5zaWduZWQgZnJhbWVEdXJhdGlvbiwKICAgICAgICAgICAgIC8v
IGl0IGhhZCBubyBhbHBoYSwgYW5kIGl0cyByZWN0IGlzIGNvbnRhaW5lZCBpbiB0aGUgY3VycmVu
dCBmcmFtZSdzCiAgICAgICAgICAgICAvLyByZWN0LCB3ZSBrbm93IHRoZSBjdXJyZW50IGZyYW1l
IGhhcyBubyBhbHBoYS4KICAgICAgICAgICAgIGlmICgocHJldkJ1ZmZlci0+ZGlzcG9zYWxNZXRo
b2QoKSA9PSBSR0JBMzJCdWZmZXI6OkRpc3Bvc2VPdmVyd3JpdGVCZ2NvbG9yKQorI2lmIEVOQUJM
RShJTUFHRV9ERUNPREVSX0RPV05fU0FNUExJTkcpCisgICAgICAgICAgICAgICAgJiYgIXByZXZC
dWZmZXItPmhhc0FscGhhKCkgJiYgYnVmZmVyLnNjYWxlZFJlY3QoKS5jb250YWlucyhwcmV2QnVm
ZmVyLT5zY2FsZWRSZWN0KCkpKQorI2Vsc2UKICAgICAgICAgICAgICAgICAmJiAhcHJldkJ1ZmZl
ci0+aGFzQWxwaGEoKSAmJiBidWZmZXIucmVjdCgpLmNvbnRhaW5zKHByZXZCdWZmZXItPnJlY3Qo
KSkpCisjZW5kaWYKICAgICAgICAgICAgICAgICBidWZmZXIuc2V0SGFzQWxwaGEoZmFsc2UpOwog
ICAgICAgICB9CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45439</attachid>
            <date>2009-12-23 07:18:59 -0800</date>
            <delta_ts>2010-01-12 09:42:28 -0800</delta_ts>
            <desc>new patch</desc>
            <filename>31806.patch</filename>
            <type>text/plain</type>
            <size>13458</size>
            <attacher name="Yong Li">yong.li.webkit</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YjVjYjJjOS4uZDg5NDk1NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAwOS0xMS0yMyAgWW9uZyBMaSAgPHlv
bGlAcmltLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBNYWtlIEdJRiBkZWNvZGVyIHN1cHBvcnQgZG93bi1zYW1wbGluZworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzE4MDYKKworICAgICAgICAqIHBs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZURlY29kZXI6OnVwcGVyQm91bmRTY2FsZWRZKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlRGVjb2Rlcjo6bG93ZXJCb3VuZFNjYWxlZFkpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oOgorICAgICAgICAoV2ViQ29yZTo6UkdCQTMyQnVmZmVy
OjpzY2FsZWRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJHQkEzMkJ1ZmZlcjo6c2V0U2NhbGVk
UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OnNjYWxlZFNpemUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6R0lGSW1hZ2VEZWNvZGVyOjpzaXplTm93QXZhaWxhYmxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdJRkltYWdlRGVjb2Rlcjo6aW5pdEZyYW1lQnVmZmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OmNvcHlPbmVQaXhlbCk6CisgICAgICAgIChXZWJDb3JlOjpHSUZJbWFnZURl
Y29kZXI6OmhhdmVEZWNvZGVkUm93KToKKyAgICAgICAgKFdlYkNvcmU6OkdJRkltYWdlRGVjb2Rl
cjo6ZnJhbWVDb21wbGV0ZSk6CisKIDIwMDktMTItMDcgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25A
YXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCmRpZmYgLS1naXQg
YS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHAgYi9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggYjhjOWYy
NS4uMThiZWY3OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9J
bWFnZURlY29kZXIuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1h
Z2VEZWNvZGVyLmNwcApAQCAtMjQ1LDYgKzI0NSwxNiBAQCBpbnQgSW1hZ2VEZWNvZGVyOjpsb3dl
ckJvdW5kU2NhbGVkWChpbnQgb3JpZ1gsIGludCBzZWFyY2hTdGFydCkKICAgICByZXR1cm4gZ2V0
U2NhbGVkVmFsdWU8TG93ZXJCb3VuZD4obV9zY2FsZWRDb2x1bW5zLCBvcmlnWCwgc2VhcmNoU3Rh
cnQpOwogfQogCitpbnQgSW1hZ2VEZWNvZGVyOjp1cHBlckJvdW5kU2NhbGVkWShpbnQgb3JpZ1ks
IGludCBzZWFyY2hTdGFydCkKK3sKKyAgICByZXR1cm4gZ2V0U2NhbGVkVmFsdWU8VXBwZXJCb3Vu
ZD4obV9zY2FsZWRSb3dzLCBvcmlnWSwgc2VhcmNoU3RhcnQpOworfQorCitpbnQgSW1hZ2VEZWNv
ZGVyOjpsb3dlckJvdW5kU2NhbGVkWShpbnQgb3JpZ1ksIGludCBzZWFyY2hTdGFydCkKK3sKKyAg
ICByZXR1cm4gZ2V0U2NhbGVkVmFsdWU8TG93ZXJCb3VuZD4obV9zY2FsZWRSb3dzLCBvcmlnWSwg
c2VhcmNoU3RhcnQpOworfQorCiBpbnQgSW1hZ2VEZWNvZGVyOjpzY2FsZWRZKGludCBvcmlnWSwg
aW50IHNlYXJjaFN0YXJ0KQogewogICAgIHJldHVybiBnZXRTY2FsZWRWYWx1ZTxFeGFjdD4obV9z
Y2FsZWRSb3dzLCBvcmlnWSwgc2VhcmNoU3RhcnQpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaCBiL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmgKaW5kZXggMzFkMzY0OC4uN2Q4ZTFhZiAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaAorKysg
Yi9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oCkBAIC0xMzMs
NiArMTMzLDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIHNldFJHQkEoZ2V0
QWRkcih4LCB5KSwgciwgZywgYiwgYSk7CiAgICAgICAgIH0KIAorI2lmIEVOQUJMRShJTUFHRV9E
RUNPREVSX0RPV05fU0FNUExJTkcpCisgICAgICAgIGNvbnN0IEludFJlY3QmIHNjYWxlZFJlY3Qo
KSBjb25zdCB7IHJldHVybiBtX3NjYWxlZFJlY3Q7IH0KKyAgICAgICAgdm9pZCBzZXRTY2FsZWRS
ZWN0KGNvbnN0IEludFJlY3QmIHIpIHsgbV9zY2FsZWRSZWN0ID0gcjsgfQorI2VuZGlmCisKICNp
ZiBQTEFURk9STShRVCkKICAgICAgICAgdm9pZCBzZXREZWNvZGVkSW1hZ2UoY29uc3QgUUltYWdl
JiBpbWFnZSk7CiAgICAgICAgIFFJbWFnZSBkZWNvZGVkSW1hZ2UoKSBjb25zdCB7IHJldHVybiBt
X2ltYWdlOyB9CkBAIC0xOTAsNiArMTk1LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICB1bnNpZ25lZCBtX2R1cmF0aW9uOyAgLy8gVGhlIGFuaW1hdGlvbiBkZWxheS4KICAgICAgICAg
RnJhbWVEaXNwb3NhbE1ldGhvZCBtX2Rpc3Bvc2FsTWV0aG9kOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gV2hhdCB0byBkbyB3aXRoIHRoaXMgZnJhbWUncyBkYXRhIHdoZW4gaW5p
dGlhbGl6aW5nIHRoZSBuZXh0IGZyYW1lLgorI2lmIEVOQUJMRShJTUFHRV9ERUNPREVSX0RPV05f
U0FNUExJTkcpCisgICAgICAgIEludFJlY3QgbV9zY2FsZWRSZWN0OworI2VuZGlmCiAgICAgfTsK
IAogICAgIC8vIFRoZSBJbWFnZURlY29kZXIgY2xhc3MgcmVwcmVzZW50cyBhIGJhc2UgY2xhc3Mg
Zm9yIHNwZWNpZmljIGltYWdlIGZvcm1hdCBkZWNvZGVycwpAQCAtMjk2LDYgKzMwNCw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmIEVOQUJMRShJTUFHRV9ERUNPREVSX0RPV05fU0FNUExJ
TkcpCiAgICAgICAgIHZvaWQgc2V0TWF4TnVtUGl4ZWxzKGludCBtKSB7IG1fbWF4TnVtUGl4ZWxz
ID0gbTsgfQorICAgICAgICBJbnRTaXplIHNjYWxlZFNpemUoKSBjb25zdCB7IHJldHVybiBtX3Nj
YWxlZCA/IEludFNpemUobV9zY2FsZWRDb2x1bW5zLnNpemUoKSwgbV9zY2FsZWRSb3dzLnNpemUo
KSkgOiBtX3NpemU7IH0KICNlbmRpZgogCiAgICAgcHJvdGVjdGVkOgpAQCAtMzAzLDYgKzMxMiw4
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBwcmVwYXJlU2NhbGVEYXRhSWZO
ZWNlc3NhcnkoKTsKICAgICAgICAgaW50IHVwcGVyQm91bmRTY2FsZWRYKGludCBvcmlnWCwgaW50
IHNlYXJjaFN0YXJ0ID0gMCk7CiAgICAgICAgIGludCBsb3dlckJvdW5kU2NhbGVkWChpbnQgb3Jp
Z1gsIGludCBzZWFyY2hTdGFydCA9IDApOworICAgICAgICBpbnQgdXBwZXJCb3VuZFNjYWxlZFko
aW50IG9yaWdZLCBpbnQgc2VhcmNoU3RhcnQgPSAwKTsKKyAgICAgICAgaW50IGxvd2VyQm91bmRT
Y2FsZWRZKGludCBvcmlnWSwgaW50IHNlYXJjaFN0YXJ0ID0gMCk7CiAgICAgICAgIGludCBzY2Fs
ZWRZKGludCBvcmlnWSwgaW50IHNlYXJjaFN0YXJ0ID0gMCk7CiAjZW5kaWYKIApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNw
cCBiL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5j
cHAKaW5kZXggODcwMzZjOS4uMDdiOGQ2MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwCkBAIC0yNDYsNyArMjQ2
LDEyIEBAIHZvaWQgR0lGSW1hZ2VEZWNvZGVyOjpkZWNvZGUoR0lGUXVlcnkgcXVlcnksIHVuc2ln
bmVkIGhhbHRBdEZyYW1lKQogLy8gQ2FsbGJhY2tzIGZyb20gdGhlIEdJRiByZWFkZXIuCiBib29s
IEdJRkltYWdlRGVjb2Rlcjo6c2l6ZU5vd0F2YWlsYWJsZSh1bnNpZ25lZCB3aWR0aCwgdW5zaWdu
ZWQgaGVpZ2h0KQogewotICAgIHJldHVybiBzZXRTaXplKHdpZHRoLCBoZWlnaHQpOworICAgIGlm
ICghc2V0U2l6ZSh3aWR0aCwgaGVpZ2h0KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworI2lmIEVO
QUJMRShJTUFHRV9ERUNPREVSX0RPV05fU0FNUExJTkcpCisgICAgcHJlcGFyZVNjYWxlRGF0YUlm
TmVjZXNzYXJ5KCk7CisjZW5kaWYKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogdm9pZCBHSUZJbWFn
ZURlY29kZXI6OmRlY29kaW5nSGFsdGVkKHVuc2lnbmVkIGJ5dGVzTGVmdCkKQEAgLTI2OCwxMCAr
MjczLDI2IEBAIGJvb2wgR0lGSW1hZ2VEZWNvZGVyOjppbml0RnJhbWVCdWZmZXIodW5zaWduZWQg
ZnJhbWVJbmRleCkKIAogICAgIFJHQkEzMkJ1ZmZlciogY29uc3QgYnVmZmVyID0gJm1fZnJhbWVC
dWZmZXJDYWNoZVtmcmFtZUluZGV4XTsKICAgICBidWZmZXItPnNldFJlY3QoZnJhbWVSZWN0KTsK
KworI2lmIEVOQUJMRShJTUFHRV9ERUNPREVSX0RPV05fU0FNUExJTkcpCisgICAgaWYgKG1fc2Nh
bGVkKSB7CisgICAgICAgIGludCBsZWZ0ID0gdXBwZXJCb3VuZFNjYWxlZFgoZnJhbWVSZWN0Lngo
KSk7CisgICAgICAgIGludCByaWdodCA9IGxvd2VyQm91bmRTY2FsZWRYKGZyYW1lUmVjdC5yaWdo
dCgpLCBsZWZ0KTsKKyAgICAgICAgaW50IHRvcCA9IHVwcGVyQm91bmRTY2FsZWRZKGZyYW1lUmVj
dC55KCkpOworICAgICAgICBpbnQgYm90dG9tID0gbG93ZXJCb3VuZFNjYWxlZFkoZnJhbWVSZWN0
LmJvdHRvbSgpLCB0b3ApOworICAgICAgICBidWZmZXItPnNldFNjYWxlZFJlY3QoSW50UmVjdChs
ZWZ0LCB0b3AsIHJpZ2h0IC0gbGVmdCwgYm90dG9tIC0gdG9wKSk7CisgICAgfSBlbHNlCisgICAg
ICAgIGJ1ZmZlci0+c2V0U2NhbGVkUmVjdChmcmFtZVJlY3QpOworI2VuZGlmCiAgICAgCiAgICAg
aWYgKGZyYW1lSW5kZXggPT0gMCkgewogICAgICAgICAvLyBUaGlzIGlzIHRoZSBmaXJzdCBmcmFt
ZSwgc28gd2UncmUgbm90IHJlbHlpbmcgb24gYW55IHByZXZpb3VzIGRhdGEuCi0gICAgICAgIGlm
ICghYnVmZmVyLT5zZXRTaXplKHNpemUoKS53aWR0aCgpLCBzaXplKCkuaGVpZ2h0KCkpKSB7Cisj
aWYgRU5BQkxFKElNQUdFX0RFQ09ERVJfRE9XTl9TQU1QTElORykKKyAgICAgICAgY29uc3QgSW50
U2l6ZSYgYnVmZmVyU2l6ZSA9IHNjYWxlZFNpemUoKTsKKyNlbHNlCisgICAgICAgIGNvbnN0IElu
dFNpemUmIGJ1ZmZlclNpemUgPSBzaXplKCk7CisjZW5kaWYKKyAgICAgICAgaWYgKCFidWZmZXIt
PnNldFNpemUoYnVmZmVyU2l6ZS53aWR0aCgpLCBidWZmZXJTaXplLmhlaWdodCgpKSkgewogICAg
ICAgICAgICAgbV9mYWlsZWQgPSB0cnVlOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICB9CkBAIC0zMDEsMTIgKzMyMiwxOCBAQCBib29sIEdJRkltYWdlRGVjb2Rlcjo6aW5pdEZy
YW1lQnVmZmVyKHVuc2lnbmVkIGZyYW1lSW5kZXgpCiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICAvLyBXZSB3YW50IHRvIGNsZWFyIHRoZSBwcmV2aW91cyBmcmFtZSB0byB0cmFuc3BhcmVu
dCwgd2l0aG91dAogICAgICAgICAgICAgLy8gYWZmZWN0aW5nIHBpeGVscyBpbiB0aGUgaW1hZ2Ug
b3V0c2lkZSBvZiB0aGUgZnJhbWUuCisjaWYgRU5BQkxFKElNQUdFX0RFQ09ERVJfRE9XTl9TQU1Q
TElORykKKyAgICAgICAgICAgIGNvbnN0IEludFJlY3QmIHByZXZSZWN0ID0gcHJldkJ1ZmZlci0+
c2NhbGVkUmVjdCgpOworICAgICAgICAgICAgY29uc3QgSW50U2l6ZSYgYnVmZmVyU2l6ZSA9IHNj
YWxlZFNpemUoKTsKKyNlbHNlCiAgICAgICAgICAgICBjb25zdCBJbnRSZWN0JiBwcmV2UmVjdCA9
IHByZXZCdWZmZXItPnJlY3QoKTsKKyAgICAgICAgICAgIGNvbnN0IEludFNpemUmIGJ1ZmZlclNp
emUgPSBzaXplKCk7CisjZW5kaWYKICAgICAgICAgICAgIGlmICgoZnJhbWVJbmRleCA9PSAwKQot
ICAgICAgICAgICAgICAgIHx8IHByZXZSZWN0LmNvbnRhaW5zKEludFJlY3QoSW50UG9pbnQoKSwg
c2l6ZSgpKSkpIHsKKyAgICAgICAgICAgICAgICB8fCBwcmV2UmVjdC5jb250YWlucyhJbnRSZWN0
KEludFBvaW50KCksIGJ1ZmZlclNpemUpKSkgewogICAgICAgICAgICAgICAgIC8vIENsZWFyaW5n
IHRoZSBmaXJzdCBmcmFtZSwgb3IgYSBmcmFtZSB0aGUgc2l6ZSBvZiB0aGUgd2hvbGUKICAgICAg
ICAgICAgICAgICAvLyBpbWFnZSwgcmVzdWx0cyBpbiBhIGNvbXBsZXRlbHkgZW1wdHkgaW1hZ2Uu
Ci0gICAgICAgICAgICAgICAgaWYgKCFidWZmZXItPnNldFNpemUoc2l6ZSgpLndpZHRoKCksIHNp
emUoKS5oZWlnaHQoKSkpIHsKKyAgICAgICAgICAgICAgICBpZiAoIWJ1ZmZlci0+c2V0U2l6ZShi
dWZmZXJTaXplLndpZHRoKCksIGJ1ZmZlclNpemUuaGVpZ2h0KCkpKSB7CiAgICAgICAgICAgICAg
ICAgICAgIG1fZmFpbGVkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICAgICAgICAgIH0KQEAgLTMzMSw2ICszNTgsMjcgQEAgYm9vbCBHSUZJbWFnZURl
Y29kZXI6OmluaXRGcmFtZUJ1ZmZlcih1bnNpZ25lZCBmcmFtZUluZGV4KQogICAgIHJldHVybiB0
cnVlOwogfQogCitzdGF0aWMgaW5saW5lIHZvaWQgY29weU9uZVBpeGVsKGNvbnN0IEdJRkltYWdl
RGVjb2RlclByaXZhdGUqIHJlYWRlciwgY29uc3QgdW5zaWduZWQgY2hhciogc291cmNlQWRkciwg
dW5zaWduZWQgY2hhciogY29sb3JNYXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGNvbG9yTWFwU2l6ZSwgYm9vbCB3cml0ZVRyYW5zcGFyZW50UGl4ZWxzLCBSR0JB
MzJCdWZmZXImIGJ1ZmZlciwgaW50IHgsIGludCAgeSwgYm9vbCYgc2F3QWxwaGEpCit7CisgICAg
Y29uc3QgdW5zaWduZWQgY2hhciBzb3VyY2VWYWx1ZSA9ICpzb3VyY2VBZGRyOworICAgIGlmICgo
IXJlYWRlci0+aXNUcmFuc3BhcmVudCgpIHx8IChzb3VyY2VWYWx1ZSAhPSByZWFkZXItPnRyYW5z
cGFyZW50UGl4ZWwoKSkpICYmIChzb3VyY2VWYWx1ZSA8IGNvbG9yTWFwU2l6ZSkpIHsKKyAgICAg
ICAgY29uc3Qgc2l6ZV90IGNvbG9ySW5kZXggPSBzdGF0aWNfY2FzdDxzaXplX3Q+KHNvdXJjZVZh
bHVlKSAqIDM7CisgICAgICAgIGJ1ZmZlci5zZXRSR0JBKHgsIHksIGNvbG9yTWFwW2NvbG9ySW5k
ZXhdLCBjb2xvck1hcFtjb2xvckluZGV4ICsgMV0sIGNvbG9yTWFwW2NvbG9ySW5kZXggKyAyXSwg
MjU1KTsKKyAgICB9IGVsc2UgeworICAgICAgICBzYXdBbHBoYSA9IHRydWU7CisgICAgICAgIC8v
IFdlIG1heSBvciBtYXkgbm90IG5lZWQgdG8gd3JpdGUgdHJhbnNwYXJlbnQgcGl4ZWxzIHRvIHRo
ZSBidWZmZXIuCisgICAgICAgIC8vIElmIHdlJ3JlIGNvbXBvc2l0aW5nIGFnYWluc3QgYSBwcmV2
aW91cyBpbWFnZSwgaXQncyB3cm9uZywgYW5kIGlmCisgICAgICAgIC8vIHdlJ3JlIHdyaXRpbmcg
YXRvcCBhIGNsZWFyZWQsIGZ1bGx5IHRyYW5zcGFyZW50IGJ1ZmZlciwgaXQncworICAgICAgICAv
LyB1bm5lY2Vzc2FyeTsgYnV0IGlmIHdlJ3JlIGRlY29kaW5nIGFuIGludGVybGFjZWQgZ2lmIGFu
ZAorICAgICAgICAvLyBkaXNwbGF5aW5nIGl0ICJIYWViZXJsaSItc3R5bGUsIHdlIG11c3Qgd3Jp
dGUgdGhlc2UgZm9yIHBhc3NlcworICAgICAgICAvLyBiZXlvbmQgdGhlIGZpcnN0LCBvciB0aGUg
aW5pdGlhbCBwYXNzZXMgd2lsbCAic2hvdyB0aHJvdWdoIiB0aGUKKyAgICAgICAgLy8gbGF0ZXIg
b25lcy4KKyAgICAgICAgaWYgKHdyaXRlVHJhbnNwYXJlbnRQaXhlbHMpCisgICAgICAgICAgICBi
dWZmZXIuc2V0UkdCQSh4LCB5LCAwLCAwLCAwLCAwKTsKKyAgICB9Cit9CisKIHZvaWQgR0lGSW1h
Z2VEZWNvZGVyOjpoYXZlRGVjb2RlZFJvdyh1bnNpZ25lZCBmcmFtZUluZGV4LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIqIHJvd0J1ZmZlciwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyKiByb3dFbmQs
CkBAIC0zNDIsNyArMzkwLDcgQEAgdm9pZCBHSUZJbWFnZURlY29kZXI6OmhhdmVEZWNvZGVkUm93
KHVuc2lnbmVkIGZyYW1lSW5kZXgsCiAgICAgLy8gb3JpZ2luIHdpdGhpbiB0aGUgZW50aXJlIGlt
YWdlIHNpemUsIGkuZS4KICAgICAvLyAobV9yZWFkZXItPmZyYW1lWE9mZnNldCgpLCBtX3JlYWRl
ci0+ZnJhbWVZT2Zmc2V0KCkpLgogICAgIGludCB4ID0gbV9yZWFkZXItPmZyYW1lWE9mZnNldCgp
OwotICAgIGNvbnN0IGludCB5ID0gbV9yZWFkZXItPmZyYW1lWU9mZnNldCgpICsgcm93TnVtYmVy
OworICAgIGludCB5ID0gbV9yZWFkZXItPmZyYW1lWU9mZnNldCgpICsgcm93TnVtYmVyOwogCiAg
ICAgLy8gU2FuaXR5LWNoZWNrIHRoZSBhcmd1bWVudHMuCiAgICAgaWYgKChyb3dCdWZmZXIgPT0g
MCkgfHwgKHkgPj0gc2l6ZSgpLmhlaWdodCgpKSkKQEAgLTM2MCwzMiArNDA4LDU3IEBAIHZvaWQg
R0lGSW1hZ2VEZWNvZGVyOjpoYXZlRGVjb2RlZFJvdyh1bnNpZ25lZCBmcmFtZUluZGV4LAogICAg
IGlmICgoYnVmZmVyLnN0YXR1cygpID09IFJHQkEzMkJ1ZmZlcjo6RnJhbWVFbXB0eSkgJiYgIWlu
aXRGcmFtZUJ1ZmZlcihmcmFtZUluZGV4KSkKICAgICAgICAgcmV0dXJuOwogCisjaWYgRU5BQkxF
KElNQUdFX0RFQ09ERVJfRE9XTl9TQU1QTElORykKKyAgICBpbnQgZGVzdFlCZWdpbiA9IHk7Cisg
ICAgaW50IGRlc3RZRW5kID0gc3RkOjptaW4oeSArIHN0YXRpY19jYXN0PGludD4ocmVwZWF0Q291
bnQpLCBzaXplKCkuaGVpZ2h0KCkpOworICAgIGludCBkZXN0WEJlZ2luID0geDsKKyAgICBpbnQg
ZGVzdFhFbmQgPSBzdGQ6Om1pbih4ICsgKHJvd0VuZCAtIHJvd0J1ZmZlciksIHNpemUoKS53aWR0
aCgpKTsKKworICAgIGlmIChtX3NjYWxlZCkgeworICAgICAgICBkZXN0WUJlZ2luID0gdXBwZXJC
b3VuZFNjYWxlZFkoZGVzdFlCZWdpbik7CisgICAgICAgIGlmIChkZXN0WUJlZ2luIDwgMCkKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgZGVzdFlFbmQgPSBsb3dlckJvdW5kU2NhbGVkWShk
ZXN0WUVuZCAtIDEsIGRlc3RZQmVnaW4gKyAxKTsKKyAgICAgICAgaWYgKGRlc3RZRW5kIDwgZGVz
dFlCZWdpbikKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBkZXN0WEJlZ2luID0gdXBw
ZXJCb3VuZFNjYWxlZFgoZGVzdFhCZWdpbik7CisgICAgICAgIGlmIChkZXN0WEJlZ2luIDwgMCkK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgZGVzdFhFbmQgPSBsb3dlckJvdW5kU2NhbGVk
WChkZXN0WEVuZCAtIDEsIGRlc3RYQmVnaW4gKyAxKTsKKyAgICAgICAgaWYgKGRlc3RYRW5kIDwg
ZGVzdFhCZWdpbikKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICArK2Rlc3RYRW5kOwor
ICAgICAgICArK2Rlc3RZRW5kOworICAgICAgICB4ID0gZGVzdFhCZWdpbjsKKyAgICAgICAgeSA9
IGRlc3RZQmVnaW47CisgICAgfQorI2VuZGlmCisKICAgICAvLyBXcml0ZSBvbmUgcm93J3Mgd29y
dGggb2YgZGF0YSBpbnRvIHRoZSBmcmFtZS4gIFRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0CiAg
ICAgLy8gKHJvd0VuZCAtIHJvd0J1ZmZlcikgPT0gKHNpemUoKS53aWR0aCgpIC0gbV9yZWFkZXIt
PmZyYW1lWE9mZnNldCgpKSwgc28KICAgICAvLyB3ZSBtdXN0IGVuc3VyZSB3ZSBkb24ndCBydW4g
b2ZmIHRoZSBlbmQgb2YgZWl0aGVyIHRoZSBzb3VyY2UgZGF0YSBvciB0aGUKICAgICAvLyByb3cn
cyBYLWNvb3JkaW5hdGVzLgotICAgIGZvciAodW5zaWduZWQgY2hhciogc291cmNlQWRkciA9IHJv
d0J1ZmZlcjsgKHNvdXJjZUFkZHIgIT0gcm93RW5kKSAmJiAoeCA8IHNpemUoKS53aWR0aCgpKTsg
Kytzb3VyY2VBZGRyLCArK3gpIHsKLSAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciBzb3VyY2VW
YWx1ZSA9ICpzb3VyY2VBZGRyOwotICAgICAgICBpZiAoKCFtX3JlYWRlci0+aXNUcmFuc3BhcmVu
dCgpIHx8IChzb3VyY2VWYWx1ZSAhPSBtX3JlYWRlci0+dHJhbnNwYXJlbnRQaXhlbCgpKSkgJiYg
KHNvdXJjZVZhbHVlIDwgY29sb3JNYXBTaXplKSkgewotICAgICAgICAgICAgY29uc3Qgc2l6ZV90
IGNvbG9ySW5kZXggPSBzdGF0aWNfY2FzdDxzaXplX3Q+KHNvdXJjZVZhbHVlKSAqIDM7Ci0gICAg
ICAgICAgICBidWZmZXIuc2V0UkdCQSh4LCB5LCBjb2xvck1hcFtjb2xvckluZGV4XSwgY29sb3JN
YXBbY29sb3JJbmRleCArIDFdLCBjb2xvck1hcFtjb2xvckluZGV4ICsgMl0sIDI1NSk7Ci0gICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBtX2N1cnJlbnRCdWZmZXJTYXdBbHBoYSA9IHRydWU7
Ci0gICAgICAgICAgICAvLyBXZSBtYXkgb3IgbWF5IG5vdCBuZWVkIHRvIHdyaXRlIHRyYW5zcGFy
ZW50IHBpeGVscyB0byB0aGUgYnVmZmVyLgotICAgICAgICAgICAgLy8gSWYgd2UncmUgY29tcG9z
aXRpbmcgYWdhaW5zdCBhIHByZXZpb3VzIGltYWdlLCBpdCdzIHdyb25nLCBhbmQgaWYKLSAgICAg
ICAgICAgIC8vIHdlJ3JlIHdyaXRpbmcgYXRvcCBhIGNsZWFyZWQsIGZ1bGx5IHRyYW5zcGFyZW50
IGJ1ZmZlciwgaXQncwotICAgICAgICAgICAgLy8gdW5uZWNlc3Nhcnk7IGJ1dCBpZiB3ZSdyZSBk
ZWNvZGluZyBhbiBpbnRlcmxhY2VkIGdpZiBhbmQKLSAgICAgICAgICAgIC8vIGRpc3BsYXlpbmcg
aXQgIkhhZWJlcmxpIi1zdHlsZSwgd2UgbXVzdCB3cml0ZSB0aGVzZSBmb3IgcGFzc2VzCi0gICAg
ICAgICAgICAvLyBiZXlvbmQgdGhlIGZpcnN0LCBvciB0aGUgaW5pdGlhbCBwYXNzZXMgd2lsbCAi
c2hvdyB0aHJvdWdoIiB0aGUKLSAgICAgICAgICAgIC8vIGxhdGVyIG9uZXMuCi0gICAgICAgICAg
ICBpZiAod3JpdGVUcmFuc3BhcmVudFBpeGVscykKLSAgICAgICAgICAgICAgICBidWZmZXIuc2V0
UkdCQSh4LCB5LCAwLCAwLCAwLCAwKTsKKyNpZiBFTkFCTEUoSU1BR0VfREVDT0RFUl9ET1dOX1NB
TVBMSU5HKQorICAgIGlmIChtX3NjYWxlZCkgeworICAgICAgICBmb3IgKDsgeCA8IGRlc3RYRW5k
OyArK3gpIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIqIHNvdXJjZUFkZHIgPSByb3dCdWZm
ZXIgKyBtX3NjYWxlZENvbHVtbnNbeF0gLSBtX3JlYWRlci0+ZnJhbWVYT2Zmc2V0KCk7CisgICAg
ICAgICAgICBjb3B5T25lUGl4ZWwobV9yZWFkZXIsIHNvdXJjZUFkZHIsIGNvbG9yTWFwLCBjb2xv
ck1hcFNpemUsIHdyaXRlVHJhbnNwYXJlbnRQaXhlbHMsIGJ1ZmZlciwgeCwgeSwgbV9jdXJyZW50
QnVmZmVyU2F3QWxwaGEpOwogICAgICAgICB9Ci0gICAgfQorICAgIH0gZWxzZQorI2VuZGlmCisg
ICAgZm9yICh1bnNpZ25lZCBjaGFyKiBzb3VyY2VBZGRyID0gcm93QnVmZmVyOyBzb3VyY2VBZGRy
IDwgcm93RW5kICYmIHggPCBzaXplKCkud2lkdGgoKTsgKytzb3VyY2VBZGRyLCArK3gpCisgICAg
ICAgIGNvcHlPbmVQaXhlbChtX3JlYWRlciwgc291cmNlQWRkciwgY29sb3JNYXAsIGNvbG9yTWFw
U2l6ZSwgd3JpdGVUcmFuc3BhcmVudFBpeGVscywgYnVmZmVyLCB4LCB5LCBtX2N1cnJlbnRCdWZm
ZXJTYXdBbHBoYSk7CiAKICAgICAvLyBUZWxsIHRoZSBmcmFtZSB0byBjb3B5IHRoZSByb3cgZGF0
YSBpZiBuZWVkIGJlLgotICAgIGlmIChyZXBlYXRDb3VudCA+IDEpCisgICAgaWYgKHJlcGVhdENv
dW50ID4gMSkgeworI2lmIEVOQUJMRShJTUFHRV9ERUNPREVSX0RPV05fU0FNUExJTkcpCisgICAg
ICAgIGJ1ZmZlci5jb3B5Um93TlRpbWVzKGRlc3RYQmVnaW4sIGRlc3RYRW5kLCBkZXN0WUJlZ2lu
LCBkZXN0WUVuZCk7CisjZWxzZQogICAgICAgICBidWZmZXIuY29weVJvd05UaW1lcyhtX3JlYWRl
ci0+ZnJhbWVYT2Zmc2V0KCksIHgsIHksIHN0ZDo6bWluKHkgKyBzdGF0aWNfY2FzdDxpbnQ+KHJl
cGVhdENvdW50KSwgc2l6ZSgpLmhlaWdodCgpKSk7CisjZW5kaWYKKyAgICB9CiB9CiAKIHZvaWQg
R0lGSW1hZ2VEZWNvZGVyOjpmcmFtZUNvbXBsZXRlKHVuc2lnbmVkIGZyYW1lSW5kZXgsIHVuc2ln
bmVkIGZyYW1lRHVyYXRpb24sIFJHQkEzMkJ1ZmZlcjo6RnJhbWVEaXNwb3NhbE1ldGhvZCBkaXNw
b3NhbE1ldGhvZCkKQEAgLTQwMyw3ICs0NzYsMTEgQEAgdm9pZCBHSUZJbWFnZURlY29kZXI6OmZy
YW1lQ29tcGxldGUodW5zaWduZWQgZnJhbWVJbmRleCwgdW5zaWduZWQgZnJhbWVEdXJhdGlvbiwK
ICAgICBpZiAoIW1fY3VycmVudEJ1ZmZlclNhd0FscGhhKSB7CiAgICAgICAgIC8vIFRoZSB3aG9s
ZSBmcmFtZSB3YXMgbm9uLXRyYW5zcGFyZW50LCBzbyBpdCdzIHBvc3NpYmxlIHRoYXQgdGhlIGVu
dGlyZQogICAgICAgICAvLyByZXN1bHRpbmcgYnVmZmVyIHdhcyBub24tdHJhbnNwYXJlbnQsIGFu
ZCB3ZSBjYW4gc2V0SGFzQWxwaGEoZmFsc2UpLgorI2lmIEVOQUJMRShJTUFHRV9ERUNPREVSX0RP
V05fU0FNUExJTkcpCisgICAgICAgIGlmIChidWZmZXIuc2NhbGVkUmVjdCgpLmNvbnRhaW5zKElu
dFJlY3QoSW50UG9pbnQoKSwgc2NhbGVkU2l6ZSgpKSkpCisjZWxzZQogICAgICAgICBpZiAoYnVm
ZmVyLnJlY3QoKS5jb250YWlucyhJbnRSZWN0KEludFBvaW50KCksIHNpemUoKSkpKQorI2VuZGlm
CiAgICAgICAgICAgICBidWZmZXIuc2V0SGFzQWxwaGEoZmFsc2UpOwogICAgICAgICBlbHNlIGlm
IChmcmFtZUluZGV4ID4gMCkgewogICAgICAgICAgICAgLy8gVHJpY2t5IGNhc2UuICBUaGlzIGZy
YW1lIGRvZXMgbm90IGhhdmUgYWxwaGEgb25seSBpZiBldmVyeXdoZXJlCkBAIC00MjgsNyArNTA1
LDExIEBAIHZvaWQgR0lGSW1hZ2VEZWNvZGVyOjpmcmFtZUNvbXBsZXRlKHVuc2lnbmVkIGZyYW1l
SW5kZXgsIHVuc2lnbmVkIGZyYW1lRHVyYXRpb24sCiAgICAgICAgICAgICAvLyBpdCBoYWQgbm8g
YWxwaGEsIGFuZCBpdHMgcmVjdCBpcyBjb250YWluZWQgaW4gdGhlIGN1cnJlbnQgZnJhbWUncwog
ICAgICAgICAgICAgLy8gcmVjdCwgd2Uga25vdyB0aGUgY3VycmVudCBmcmFtZSBoYXMgbm8gYWxw
aGEuCiAgICAgICAgICAgICBpZiAoKHByZXZCdWZmZXItPmRpc3Bvc2FsTWV0aG9kKCkgPT0gUkdC
QTMyQnVmZmVyOjpEaXNwb3NlT3ZlcndyaXRlQmdjb2xvcikKKyNpZiBFTkFCTEUoSU1BR0VfREVD
T0RFUl9ET1dOX1NBTVBMSU5HKQorICAgICAgICAgICAgICAgICYmICFwcmV2QnVmZmVyLT5oYXNB
bHBoYSgpICYmIGJ1ZmZlci5zY2FsZWRSZWN0KCkuY29udGFpbnMocHJldkJ1ZmZlci0+c2NhbGVk
UmVjdCgpKSkKKyNlbHNlCiAgICAgICAgICAgICAgICAgJiYgIXByZXZCdWZmZXItPmhhc0FscGhh
KCkgJiYgYnVmZmVyLnJlY3QoKS5jb250YWlucyhwcmV2QnVmZmVyLT5yZWN0KCkpKQorI2VuZGlm
CiAgICAgICAgICAgICAgICAgYnVmZmVyLnNldEhhc0FscGhhKGZhbHNlKTsKICAgICAgICAgfQog
ICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46378</attachid>
            <date>2010-01-12 09:42:28 -0800</date>
            <delta_ts>2010-01-12 10:20:42 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>31806.patch</filename>
            <type>text/plain</type>
            <size>13413</size>
            <attacher name="Yong Li">yong.li.webkit</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
Njc1Y2Q5MS4uMGRjNzM2MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAwOS0xMS0yMyAgWW9uZyBMaSAgPHlv
bGlAcmltLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBNYWtlIEdJRiBkZWNvZGVyIHN1cHBvcnQgZG93bi1zYW1wbGluZworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzE4MDYKKworICAgICAgICAqIHBs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZURlY29kZXI6OnVwcGVyQm91bmRTY2FsZWRZKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlRGVjb2Rlcjo6bG93ZXJCb3VuZFNjYWxlZFkpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oOgorICAgICAgICAoV2ViQ29yZTo6UkdCQTMyQnVmZmVy
OjpzY2FsZWRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJHQkEzMkJ1ZmZlcjo6c2V0U2NhbGVk
UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OnNjYWxlZFNpemUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6R0lGSW1hZ2VEZWNvZGVyOjpzaXplTm93QXZhaWxhYmxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdJRkltYWdlRGVjb2Rlcjo6aW5pdEZyYW1lQnVmZmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OmNvcHlPbmVQaXhlbCk6CisgICAgICAgIChXZWJDb3JlOjpHSUZJbWFnZURl
Y29kZXI6OmhhdmVEZWNvZGVkUm93KToKKyAgICAgICAgKFdlYkNvcmU6OkdJRkltYWdlRGVjb2Rl
cjo6ZnJhbWVDb21wbGV0ZSk6CisKIDIwMTAtMDEtMDcgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFw
cGxlLmNvbT4KIAogICAgICAgICBCdWlsZCBmaXgKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcAppbmRleCA0OWYzNjk2Li42ZTEzMmFmIDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHAK
KysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwCkBA
IC0yNjcsNiArMjY3LDE2IEBAIGludCBJbWFnZURlY29kZXI6Omxvd2VyQm91bmRTY2FsZWRYKGlu
dCBvcmlnWCwgaW50IHNlYXJjaFN0YXJ0KQogICAgIHJldHVybiBnZXRTY2FsZWRWYWx1ZTxMb3dl
ckJvdW5kPihtX3NjYWxlZENvbHVtbnMsIG9yaWdYLCBzZWFyY2hTdGFydCk7CiB9CiAKK2ludCBJ
bWFnZURlY29kZXI6OnVwcGVyQm91bmRTY2FsZWRZKGludCBvcmlnWSwgaW50IHNlYXJjaFN0YXJ0
KQoreworICAgIHJldHVybiBnZXRTY2FsZWRWYWx1ZTxVcHBlckJvdW5kPihtX3NjYWxlZFJvd3Ms
IG9yaWdZLCBzZWFyY2hTdGFydCk7Cit9CisKK2ludCBJbWFnZURlY29kZXI6Omxvd2VyQm91bmRT
Y2FsZWRZKGludCBvcmlnWSwgaW50IHNlYXJjaFN0YXJ0KQoreworICAgIHJldHVybiBnZXRTY2Fs
ZWRWYWx1ZTxMb3dlckJvdW5kPihtX3NjYWxlZFJvd3MsIG9yaWdZLCBzZWFyY2hTdGFydCk7Cit9
CisKIGludCBJbWFnZURlY29kZXI6OnNjYWxlZFkoaW50IG9yaWdZLCBpbnQgc2VhcmNoU3RhcnQp
CiB7CiAgICAgcmV0dXJuIGdldFNjYWxlZFZhbHVlPEV4YWN0PihtX3NjYWxlZFJvd3MsIG9yaWdZ
LCBzZWFyY2hTdGFydCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL0ltYWdlRGVjb2Rlci5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFn
ZURlY29kZXIuaAppbmRleCA5MzNhMTVjLi4wYmZjODk3IDEwMDY0NAotLS0gYS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oCisrKyBiL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmgKQEAgLTEzNCw2ICsxMzQsMTEgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgc2V0UkdCQShnZXRBZGRyKHgsIHkpLCByLCBn
LCBiLCBhKTsKICAgICAgICAgfQogCisjaWYgRU5BQkxFKElNQUdFX0RFQ09ERVJfRE9XTl9TQU1Q
TElORykKKyAgICAgICAgY29uc3QgSW50UmVjdCYgc2NhbGVkUmVjdCgpIGNvbnN0IHsgcmV0dXJu
IG1fc2NhbGVkUmVjdDsgfQorICAgICAgICB2b2lkIHNldFNjYWxlZFJlY3QoY29uc3QgSW50UmVj
dCYgcikgeyBtX3NjYWxlZFJlY3QgPSByOyB9CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKFFUKQog
ICAgICAgICB2b2lkIHNldERlY29kZWRJbWFnZShjb25zdCBRSW1hZ2UmIGltYWdlKTsKICAgICAg
ICAgUUltYWdlIGRlY29kZWRJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2U7IH0KQEAgLTE5
MSw2ICsxOTYsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHVuc2lnbmVkIG1fZHVy
YXRpb247ICAvLyBUaGUgYW5pbWF0aW9uIGRlbGF5LgogICAgICAgICBGcmFtZURpc3Bvc2FsTWV0
aG9kIG1fZGlzcG9zYWxNZXRob2Q7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBX
aGF0IHRvIGRvIHdpdGggdGhpcyBmcmFtZSdzIGRhdGEgd2hlbiBpbml0aWFsaXppbmcgdGhlIG5l
eHQgZnJhbWUuCisjaWYgRU5BQkxFKElNQUdFX0RFQ09ERVJfRE9XTl9TQU1QTElORykKKyAgICAg
ICAgSW50UmVjdCBtX3NjYWxlZFJlY3Q7CisjZW5kaWYKICAgICB9OwogCiAgICAgLy8gVGhlIElt
YWdlRGVjb2RlciBjbGFzcyByZXByZXNlbnRzIGEgYmFzZSBjbGFzcyBmb3Igc3BlY2lmaWMgaW1h
Z2UgZm9ybWF0IGRlY29kZXJzCkBAIC0zMDMsNiArMzExLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiAjaWYgRU5BQkxFKElNQUdFX0RFQ09ERVJfRE9XTl9TQU1QTElORykKICAgICAgICAgdm9p
ZCBzZXRNYXhOdW1QaXhlbHMoaW50IG0pIHsgbV9tYXhOdW1QaXhlbHMgPSBtOyB9CisgICAgICAg
IEludFNpemUgc2NhbGVkU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2NhbGVkID8gSW50U2l6ZSht
X3NjYWxlZENvbHVtbnMuc2l6ZSgpLCBtX3NjYWxlZFJvd3Muc2l6ZSgpKSA6IG1fc2l6ZTsgfQog
I2VuZGlmCiAKICAgICBwcm90ZWN0ZWQ6CkBAIC0zMTAsNiArMzE5LDggQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICB2b2lkIHByZXBhcmVTY2FsZURhdGFJZk5lY2Vzc2FyeSgpOwogICAg
ICAgICBpbnQgdXBwZXJCb3VuZFNjYWxlZFgoaW50IG9yaWdYLCBpbnQgc2VhcmNoU3RhcnQgPSAw
KTsKICAgICAgICAgaW50IGxvd2VyQm91bmRTY2FsZWRYKGludCBvcmlnWCwgaW50IHNlYXJjaFN0
YXJ0ID0gMCk7CisgICAgICAgIGludCB1cHBlckJvdW5kU2NhbGVkWShpbnQgb3JpZ1ksIGludCBz
ZWFyY2hTdGFydCA9IDApOworICAgICAgICBpbnQgbG93ZXJCb3VuZFNjYWxlZFkoaW50IG9yaWdZ
LCBpbnQgc2VhcmNoU3RhcnQgPSAwKTsKICAgICAgICAgaW50IHNjYWxlZFkoaW50IG9yaWdZLCBp
bnQgc2VhcmNoU3RhcnQgPSAwKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwIGIvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcAppbmRleCA1MGI5MWM2
Li4zZmQ0NDJmIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dp
Zi9HSUZJbWFnZURlY29kZXIuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAKQEAgLTI0Niw3ICsyNDYsMTIgQEAgdm9pZCBHSUZJ
bWFnZURlY29kZXI6OmRlY29kZShHSUZRdWVyeSBxdWVyeSwgdW5zaWduZWQgaGFsdEF0RnJhbWUp
CiAvLyBDYWxsYmFja3MgZnJvbSB0aGUgR0lGIHJlYWRlci4KIGJvb2wgR0lGSW1hZ2VEZWNvZGVy
OjpzaXplTm93QXZhaWxhYmxlKHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQpCiB7Ci0g
ICAgcmV0dXJuIHNldFNpemUod2lkdGgsIGhlaWdodCk7CisgICAgaWYgKCFzZXRTaXplKHdpZHRo
LCBoZWlnaHQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisjaWYgRU5BQkxFKElNQUdFX0RFQ09E
RVJfRE9XTl9TQU1QTElORykKKyAgICBwcmVwYXJlU2NhbGVEYXRhSWZOZWNlc3NhcnkoKTsKKyNl
bmRpZgorICAgIHJldHVybiB0cnVlOwogfQogCiB2b2lkIEdJRkltYWdlRGVjb2Rlcjo6ZGVjb2Rp
bmdIYWx0ZWQodW5zaWduZWQgYnl0ZXNMZWZ0KQpAQCAtMjY4LDEwICsyNzMsMjYgQEAgYm9vbCBH
SUZJbWFnZURlY29kZXI6OmluaXRGcmFtZUJ1ZmZlcih1bnNpZ25lZCBmcmFtZUluZGV4KQogCiAg
ICAgUkdCQTMyQnVmZmVyKiBjb25zdCBidWZmZXIgPSAmbV9mcmFtZUJ1ZmZlckNhY2hlW2ZyYW1l
SW5kZXhdOwogICAgIGJ1ZmZlci0+c2V0UmVjdChmcmFtZVJlY3QpOworCisjaWYgRU5BQkxFKElN
QUdFX0RFQ09ERVJfRE9XTl9TQU1QTElORykKKyAgICBpZiAobV9zY2FsZWQpIHsKKyAgICAgICAg
aW50IGxlZnQgPSB1cHBlckJvdW5kU2NhbGVkWChmcmFtZVJlY3QueCgpKTsKKyAgICAgICAgaW50
IHJpZ2h0ID0gbG93ZXJCb3VuZFNjYWxlZFgoZnJhbWVSZWN0LnJpZ2h0KCksIGxlZnQpOworICAg
ICAgICBpbnQgdG9wID0gdXBwZXJCb3VuZFNjYWxlZFkoZnJhbWVSZWN0LnkoKSk7CisgICAgICAg
IGludCBib3R0b20gPSBsb3dlckJvdW5kU2NhbGVkWShmcmFtZVJlY3QuYm90dG9tKCksIHRvcCk7
CisgICAgICAgIGJ1ZmZlci0+c2V0U2NhbGVkUmVjdChJbnRSZWN0KGxlZnQsIHRvcCwgcmlnaHQg
LSBsZWZ0LCBib3R0b20gLSB0b3ApKTsKKyAgICB9IGVsc2UKKyAgICAgICAgYnVmZmVyLT5zZXRT
Y2FsZWRSZWN0KGZyYW1lUmVjdCk7CisjZW5kaWYKICAgICAKICAgICBpZiAoZnJhbWVJbmRleCA9
PSAwKSB7CiAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGZpcnN0IGZyYW1lLCBzbyB3ZSdyZSBub3Qg
cmVseWluZyBvbiBhbnkgcHJldmlvdXMgZGF0YS4KLSAgICAgICAgaWYgKCFidWZmZXItPnNldFNp
emUoc2l6ZSgpLndpZHRoKCksIHNpemUoKS5oZWlnaHQoKSkpIHsKKyNpZiBFTkFCTEUoSU1BR0Vf
REVDT0RFUl9ET1dOX1NBTVBMSU5HKQorICAgICAgICBjb25zdCBJbnRTaXplJiBidWZmZXJTaXpl
ID0gc2NhbGVkU2l6ZSgpOworI2Vsc2UKKyAgICAgICAgY29uc3QgSW50U2l6ZSYgYnVmZmVyU2l6
ZSA9IHNpemUoKTsKKyNlbmRpZgorICAgICAgICBpZiAoIWJ1ZmZlci0+c2V0U2l6ZShidWZmZXJT
aXplLndpZHRoKCksIGJ1ZmZlclNpemUuaGVpZ2h0KCkpKSB7CiAgICAgICAgICAgICBtX2ZhaWxl
ZCA9IHRydWU7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KQEAgLTMwMSwx
MiArMzIyLDE4IEBAIGJvb2wgR0lGSW1hZ2VEZWNvZGVyOjppbml0RnJhbWVCdWZmZXIodW5zaWdu
ZWQgZnJhbWVJbmRleCkKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIFdlIHdhbnQg
dG8gY2xlYXIgdGhlIHByZXZpb3VzIGZyYW1lIHRvIHRyYW5zcGFyZW50LCB3aXRob3V0CiAgICAg
ICAgICAgICAvLyBhZmZlY3RpbmcgcGl4ZWxzIGluIHRoZSBpbWFnZSBvdXRzaWRlIG9mIHRoZSBm
cmFtZS4KKyNpZiBFTkFCTEUoSU1BR0VfREVDT0RFUl9ET1dOX1NBTVBMSU5HKQorICAgICAgICAg
ICAgY29uc3QgSW50UmVjdCYgcHJldlJlY3QgPSBwcmV2QnVmZmVyLT5zY2FsZWRSZWN0KCk7Cisg
ICAgICAgICAgICBjb25zdCBJbnRTaXplJiBidWZmZXJTaXplID0gc2NhbGVkU2l6ZSgpOworI2Vs
c2UKICAgICAgICAgICAgIGNvbnN0IEludFJlY3QmIHByZXZSZWN0ID0gcHJldkJ1ZmZlci0+cmVj
dCgpOworICAgICAgICAgICAgY29uc3QgSW50U2l6ZSYgYnVmZmVyU2l6ZSA9IHNpemUoKTsKKyNl
bmRpZgogICAgICAgICAgICAgaWYgKChmcmFtZUluZGV4ID09IDApCi0gICAgICAgICAgICAgICAg
fHwgcHJldlJlY3QuY29udGFpbnMoSW50UmVjdChJbnRQb2ludCgpLCBzaXplKCkpKSkgeworICAg
ICAgICAgICAgICAgIHx8IHByZXZSZWN0LmNvbnRhaW5zKEludFJlY3QoSW50UG9pbnQoKSwgYnVm
ZmVyU2l6ZSkpKSB7CiAgICAgICAgICAgICAgICAgLy8gQ2xlYXJpbmcgdGhlIGZpcnN0IGZyYW1l
LCBvciBhIGZyYW1lIHRoZSBzaXplIG9mIHRoZSB3aG9sZQogICAgICAgICAgICAgICAgIC8vIGlt
YWdlLCByZXN1bHRzIGluIGEgY29tcGxldGVseSBlbXB0eSBpbWFnZS4KLSAgICAgICAgICAgICAg
ICBpZiAoIWJ1ZmZlci0+c2V0U2l6ZShzaXplKCkud2lkdGgoKSwgc2l6ZSgpLmhlaWdodCgpKSkg
eworICAgICAgICAgICAgICAgIGlmICghYnVmZmVyLT5zZXRTaXplKGJ1ZmZlclNpemUud2lkdGgo
KSwgYnVmZmVyU2l6ZS5oZWlnaHQoKSkpIHsKICAgICAgICAgICAgICAgICAgICAgbV9mYWlsZWQg
PSB0cnVlOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAg
ICAgfQpAQCAtMzMxLDYgKzM1OCwyNyBAQCBib29sIEdJRkltYWdlRGVjb2Rlcjo6aW5pdEZyYW1l
QnVmZmVyKHVuc2lnbmVkIGZyYW1lSW5kZXgpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3N0YXRp
YyBpbmxpbmUgdm9pZCBjb3B5T25lUGl4ZWwoY29uc3QgR0lGSW1hZ2VEZWNvZGVyUHJpdmF0ZSog
cmVhZGVyLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBzb3VyY2VBZGRyLCB1bnNpZ25lZCBjaGFyKiBj
b2xvck1hcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY29sb3JN
YXBTaXplLCBib29sIHdyaXRlVHJhbnNwYXJlbnRQaXhlbHMsIFJHQkEzMkJ1ZmZlciYgYnVmZmVy
LCBpbnQgeCwgaW50ICB5LCBib29sJiBzYXdBbHBoYSkKK3sKKyAgICBjb25zdCB1bnNpZ25lZCBj
aGFyIHNvdXJjZVZhbHVlID0gKnNvdXJjZUFkZHI7CisgICAgaWYgKCghcmVhZGVyLT5pc1RyYW5z
cGFyZW50KCkgfHwgKHNvdXJjZVZhbHVlICE9IHJlYWRlci0+dHJhbnNwYXJlbnRQaXhlbCgpKSkg
JiYgKHNvdXJjZVZhbHVlIDwgY29sb3JNYXBTaXplKSkgeworICAgICAgICBjb25zdCBzaXplX3Qg
Y29sb3JJbmRleCA9IHN0YXRpY19jYXN0PHNpemVfdD4oc291cmNlVmFsdWUpICogMzsKKyAgICAg
ICAgYnVmZmVyLnNldFJHQkEoeCwgeSwgY29sb3JNYXBbY29sb3JJbmRleF0sIGNvbG9yTWFwW2Nv
bG9ySW5kZXggKyAxXSwgY29sb3JNYXBbY29sb3JJbmRleCArIDJdLCAyNTUpOworICAgIH0gZWxz
ZSB7CisgICAgICAgIHNhd0FscGhhID0gdHJ1ZTsKKyAgICAgICAgLy8gV2UgbWF5IG9yIG1heSBu
b3QgbmVlZCB0byB3cml0ZSB0cmFuc3BhcmVudCBwaXhlbHMgdG8gdGhlIGJ1ZmZlci4KKyAgICAg
ICAgLy8gSWYgd2UncmUgY29tcG9zaXRpbmcgYWdhaW5zdCBhIHByZXZpb3VzIGltYWdlLCBpdCdz
IHdyb25nLCBhbmQgaWYKKyAgICAgICAgLy8gd2UncmUgd3JpdGluZyBhdG9wIGEgY2xlYXJlZCwg
ZnVsbHkgdHJhbnNwYXJlbnQgYnVmZmVyLCBpdCdzCisgICAgICAgIC8vIHVubmVjZXNzYXJ5OyBi
dXQgaWYgd2UncmUgZGVjb2RpbmcgYW4gaW50ZXJsYWNlZCBnaWYgYW5kCisgICAgICAgIC8vIGRp
c3BsYXlpbmcgaXQgIkhhZWJlcmxpIi1zdHlsZSwgd2UgbXVzdCB3cml0ZSB0aGVzZSBmb3IgcGFz
c2VzCisgICAgICAgIC8vIGJleW9uZCB0aGUgZmlyc3QsIG9yIHRoZSBpbml0aWFsIHBhc3NlcyB3
aWxsICJzaG93IHRocm91Z2giIHRoZQorICAgICAgICAvLyBsYXRlciBvbmVzLgorICAgICAgICBp
ZiAod3JpdGVUcmFuc3BhcmVudFBpeGVscykKKyAgICAgICAgICAgIGJ1ZmZlci5zZXRSR0JBKHgs
IHksIDAsIDAsIDAsIDApOworICAgIH0KK30KKwogYm9vbCBHSUZJbWFnZURlY29kZXI6OmhhdmVE
ZWNvZGVkUm93KHVuc2lnbmVkIGZyYW1lSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgY2hhciogcm93QnVmZmVyLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIqIHJvd0VuZCwKQEAgLTM0Miw3ICszOTAs
NyBAQCBib29sIEdJRkltYWdlRGVjb2Rlcjo6aGF2ZURlY29kZWRSb3codW5zaWduZWQgZnJhbWVJ
bmRleCwKICAgICAvLyBvcmlnaW4gd2l0aGluIHRoZSBlbnRpcmUgaW1hZ2Ugc2l6ZSwgaS5lLgog
ICAgIC8vIChtX3JlYWRlci0+ZnJhbWVYT2Zmc2V0KCksIG1fcmVhZGVyLT5mcmFtZVlPZmZzZXQo
KSkuCiAgICAgaW50IHggPSBtX3JlYWRlci0+ZnJhbWVYT2Zmc2V0KCk7Ci0gICAgY29uc3QgaW50
IHkgPSBtX3JlYWRlci0+ZnJhbWVZT2Zmc2V0KCkgKyByb3dOdW1iZXI7CisgICAgaW50IHkgPSBt
X3JlYWRlci0+ZnJhbWVZT2Zmc2V0KCkgKyByb3dOdW1iZXI7CiAKICAgICAvLyBTYW5pdHktY2hl
Y2sgdGhlIGFyZ3VtZW50cy4KICAgICBpZiAoKHJvd0J1ZmZlciA9PSAwKSB8fCAoeSA+PSBzaXpl
KCkuaGVpZ2h0KCkpKQpAQCAtMzYwLDMyICs0MDgsNTcgQEAgYm9vbCBHSUZJbWFnZURlY29kZXI6
OmhhdmVEZWNvZGVkUm93KHVuc2lnbmVkIGZyYW1lSW5kZXgsCiAgICAgaWYgKChidWZmZXIuc3Rh
dHVzKCkgPT0gUkdCQTMyQnVmZmVyOjpGcmFtZUVtcHR5KSAmJiAhaW5pdEZyYW1lQnVmZmVyKGZy
YW1lSW5kZXgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyNpZiBFTkFCTEUoSU1BR0VfREVD
T0RFUl9ET1dOX1NBTVBMSU5HKQorICAgIGludCBkZXN0WUJlZ2luID0geTsKKyAgICBpbnQgZGVz
dFlFbmQgPSBzdGQ6Om1pbih5ICsgc3RhdGljX2Nhc3Q8aW50PihyZXBlYXRDb3VudCksIHNpemUo
KS5oZWlnaHQoKSk7CisgICAgaW50IGRlc3RYQmVnaW4gPSB4OworICAgIGludCBkZXN0WEVuZCA9
IHN0ZDo6bWluKHggKyAocm93RW5kIC0gcm93QnVmZmVyKSwgc2l6ZSgpLndpZHRoKCkpOworCisg
ICAgaWYgKG1fc2NhbGVkKSB7CisgICAgICAgIGRlc3RZQmVnaW4gPSB1cHBlckJvdW5kU2NhbGVk
WShkZXN0WUJlZ2luKTsKKyAgICAgICAgaWYgKGRlc3RZQmVnaW4gPCAwKQorICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgIGRlc3RZRW5kID0gbG93ZXJCb3VuZFNjYWxlZFkoZGVzdFlF
bmQgLSAxLCBkZXN0WUJlZ2luICsgMSk7CisgICAgICAgIGlmIChkZXN0WUVuZCA8IGRlc3RZQmVn
aW4pCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICBkZXN0WEJlZ2luID0gdXBw
ZXJCb3VuZFNjYWxlZFgoZGVzdFhCZWdpbik7CisgICAgICAgIGlmIChkZXN0WEJlZ2luIDwgMCkK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBkZXN0WEVuZCA9IGxvd2VyQm91bmRT
Y2FsZWRYKGRlc3RYRW5kIC0gMSwgZGVzdFhCZWdpbiArIDEpOworICAgICAgICBpZiAoZGVzdFhF
bmQgPCBkZXN0WEJlZ2luKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgKytk
ZXN0WEVuZDsKKyAgICAgICAgKytkZXN0WUVuZDsKKyAgICAgICAgeCA9IGRlc3RYQmVnaW47Cisg
ICAgICAgIHkgPSBkZXN0WUJlZ2luOworICAgIH0KKyNlbmRpZgorCiAgICAgLy8gV3JpdGUgb25l
IHJvdydzIHdvcnRoIG9mIGRhdGEgaW50byB0aGUgZnJhbWUuICBUaGVyZSBpcyBubyBndWFyYW50
ZWUgdGhhdAogICAgIC8vIChyb3dFbmQgLSByb3dCdWZmZXIpID09IChzaXplKCkud2lkdGgoKSAt
IG1fcmVhZGVyLT5mcmFtZVhPZmZzZXQoKSksIHNvCiAgICAgLy8gd2UgbXVzdCBlbnN1cmUgd2Ug
ZG9uJ3QgcnVuIG9mZiB0aGUgZW5kIG9mIGVpdGhlciB0aGUgc291cmNlIGRhdGEgb3IgdGhlCiAg
ICAgLy8gcm93J3MgWC1jb29yZGluYXRlcy4KLSAgICBmb3IgKHVuc2lnbmVkIGNoYXIqIHNvdXJj
ZUFkZHIgPSByb3dCdWZmZXI7IChzb3VyY2VBZGRyICE9IHJvd0VuZCkgJiYgKHggPCBzaXplKCku
d2lkdGgoKSk7ICsrc291cmNlQWRkciwgKyt4KSB7Ci0gICAgICAgIGNvbnN0IHVuc2lnbmVkIGNo
YXIgc291cmNlVmFsdWUgPSAqc291cmNlQWRkcjsKLSAgICAgICAgaWYgKCghbV9yZWFkZXItPmlz
VHJhbnNwYXJlbnQoKSB8fCAoc291cmNlVmFsdWUgIT0gbV9yZWFkZXItPnRyYW5zcGFyZW50UGl4
ZWwoKSkpICYmIChzb3VyY2VWYWx1ZSA8IGNvbG9yTWFwU2l6ZSkpIHsKLSAgICAgICAgICAgIGNv
bnN0IHNpemVfdCBjb2xvckluZGV4ID0gc3RhdGljX2Nhc3Q8c2l6ZV90Pihzb3VyY2VWYWx1ZSkg
KiAzOwotICAgICAgICAgICAgYnVmZmVyLnNldFJHQkEoeCwgeSwgY29sb3JNYXBbY29sb3JJbmRl
eF0sIGNvbG9yTWFwW2NvbG9ySW5kZXggKyAxXSwgY29sb3JNYXBbY29sb3JJbmRleCArIDJdLCAy
NTUpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbV9jdXJyZW50QnVmZmVyU2F3QWxw
aGEgPSB0cnVlOwotICAgICAgICAgICAgLy8gV2UgbWF5IG9yIG1heSBub3QgbmVlZCB0byB3cml0
ZSB0cmFuc3BhcmVudCBwaXhlbHMgdG8gdGhlIGJ1ZmZlci4KLSAgICAgICAgICAgIC8vIElmIHdl
J3JlIGNvbXBvc2l0aW5nIGFnYWluc3QgYSBwcmV2aW91cyBpbWFnZSwgaXQncyB3cm9uZywgYW5k
IGlmCi0gICAgICAgICAgICAvLyB3ZSdyZSB3cml0aW5nIGF0b3AgYSBjbGVhcmVkLCBmdWxseSB0
cmFuc3BhcmVudCBidWZmZXIsIGl0J3MKLSAgICAgICAgICAgIC8vIHVubmVjZXNzYXJ5OyBidXQg
aWYgd2UncmUgZGVjb2RpbmcgYW4gaW50ZXJsYWNlZCBnaWYgYW5kCi0gICAgICAgICAgICAvLyBk
aXNwbGF5aW5nIGl0ICJIYWViZXJsaSItc3R5bGUsIHdlIG11c3Qgd3JpdGUgdGhlc2UgZm9yIHBh
c3NlcwotICAgICAgICAgICAgLy8gYmV5b25kIHRoZSBmaXJzdCwgb3IgdGhlIGluaXRpYWwgcGFz
c2VzIHdpbGwgInNob3cgdGhyb3VnaCIgdGhlCi0gICAgICAgICAgICAvLyBsYXRlciBvbmVzLgot
ICAgICAgICAgICAgaWYgKHdyaXRlVHJhbnNwYXJlbnRQaXhlbHMpCi0gICAgICAgICAgICAgICAg
YnVmZmVyLnNldFJHQkEoeCwgeSwgMCwgMCwgMCwgMCk7CisjaWYgRU5BQkxFKElNQUdFX0RFQ09E
RVJfRE9XTl9TQU1QTElORykKKyAgICBpZiAobV9zY2FsZWQpIHsKKyAgICAgICAgZm9yICg7IHgg
PCBkZXN0WEVuZDsgKyt4KSB7CisgICAgICAgICAgICB1bnNpZ25lZCBjaGFyKiBzb3VyY2VBZGRy
ID0gcm93QnVmZmVyICsgbV9zY2FsZWRDb2x1bW5zW3hdIC0gbV9yZWFkZXItPmZyYW1lWE9mZnNl
dCgpOworICAgICAgICAgICAgY29weU9uZVBpeGVsKG1fcmVhZGVyLCBzb3VyY2VBZGRyLCBjb2xv
ck1hcCwgY29sb3JNYXBTaXplLCB3cml0ZVRyYW5zcGFyZW50UGl4ZWxzLCBidWZmZXIsIHgsIHks
IG1fY3VycmVudEJ1ZmZlclNhd0FscGhhKTsKICAgICAgICAgfQotICAgIH0KLQotICAgIC8vIFRl
bGwgdGhlIGZyYW1lIHRvIGNvcHkgdGhlIHJvdyBkYXRhIGlmIG5lZWQgYmUuCi0gICAgaWYgKHJl
cGVhdENvdW50ID4gMSkKKyAgICB9IGVsc2UKKyNlbmRpZgorICAgIGZvciAodW5zaWduZWQgY2hh
ciogc291cmNlQWRkciA9IHJvd0J1ZmZlcjsgc291cmNlQWRkciA8IHJvd0VuZCAmJiB4IDwgc2l6
ZSgpLndpZHRoKCk7ICsrc291cmNlQWRkciwgKyt4KQorICAgICAgICBjb3B5T25lUGl4ZWwobV9y
ZWFkZXIsIHNvdXJjZUFkZHIsIGNvbG9yTWFwLCBjb2xvck1hcFNpemUsIHdyaXRlVHJhbnNwYXJl
bnRQaXhlbHMsIGJ1ZmZlciwgeCwgeSwgbV9jdXJyZW50QnVmZmVyU2F3QWxwaGEpOworCisgICAg
IC8vIFRlbGwgdGhlIGZyYW1lIHRvIGNvcHkgdGhlIHJvdyBkYXRhIGlmIG5lZWQgYmUuCisgICAg
aWYgKHJlcGVhdENvdW50ID4gMSkgeworI2lmIEVOQUJMRShJTUFHRV9ERUNPREVSX0RPV05fU0FN
UExJTkcpCisgICAgICAgIGJ1ZmZlci5jb3B5Um93TlRpbWVzKGRlc3RYQmVnaW4sIGRlc3RYRW5k
LCBkZXN0WUJlZ2luLCBkZXN0WUVuZCk7CisjZWxzZQogICAgICAgICBidWZmZXIuY29weVJvd05U
aW1lcyhtX3JlYWRlci0+ZnJhbWVYT2Zmc2V0KCksIHgsIHksIHN0ZDo6bWluKHkgKyBzdGF0aWNf
Y2FzdDxpbnQ+KHJlcGVhdENvdW50KSwgc2l6ZSgpLmhlaWdodCgpKSk7CisjZW5kaWYKKyAgICB9
CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTQwNSw3ICs0NzgsMTEgQEAgdm9pZCBHSUZJbWFn
ZURlY29kZXI6OmZyYW1lQ29tcGxldGUodW5zaWduZWQgZnJhbWVJbmRleCwgdW5zaWduZWQgZnJh
bWVEdXJhdGlvbiwKICAgICBpZiAoIW1fY3VycmVudEJ1ZmZlclNhd0FscGhhKSB7CiAgICAgICAg
IC8vIFRoZSB3aG9sZSBmcmFtZSB3YXMgbm9uLXRyYW5zcGFyZW50LCBzbyBpdCdzIHBvc3NpYmxl
IHRoYXQgdGhlIGVudGlyZQogICAgICAgICAvLyByZXN1bHRpbmcgYnVmZmVyIHdhcyBub24tdHJh
bnNwYXJlbnQsIGFuZCB3ZSBjYW4gc2V0SGFzQWxwaGEoZmFsc2UpLgorI2lmIEVOQUJMRShJTUFH
RV9ERUNPREVSX0RPV05fU0FNUExJTkcpCisgICAgICAgIGlmIChidWZmZXIuc2NhbGVkUmVjdCgp
LmNvbnRhaW5zKEludFJlY3QoSW50UG9pbnQoKSwgc2NhbGVkU2l6ZSgpKSkpCisjZWxzZQogICAg
ICAgICBpZiAoYnVmZmVyLnJlY3QoKS5jb250YWlucyhJbnRSZWN0KEludFBvaW50KCksIHNpemUo
KSkpKQorI2VuZGlmCiAgICAgICAgICAgICBidWZmZXIuc2V0SGFzQWxwaGEoZmFsc2UpOwogICAg
ICAgICBlbHNlIGlmIChmcmFtZUluZGV4ID4gMCkgewogICAgICAgICAgICAgLy8gVHJpY2t5IGNh
c2UuICBUaGlzIGZyYW1lIGRvZXMgbm90IGhhdmUgYWxwaGEgb25seSBpZiBldmVyeXdoZXJlCkBA
IC00MzAsNyArNTA3LDExIEBAIHZvaWQgR0lGSW1hZ2VEZWNvZGVyOjpmcmFtZUNvbXBsZXRlKHVu
c2lnbmVkIGZyYW1lSW5kZXgsIHVuc2lnbmVkIGZyYW1lRHVyYXRpb24sCiAgICAgICAgICAgICAv
LyBpdCBoYWQgbm8gYWxwaGEsIGFuZCBpdHMgcmVjdCBpcyBjb250YWluZWQgaW4gdGhlIGN1cnJl
bnQgZnJhbWUncwogICAgICAgICAgICAgLy8gcmVjdCwgd2Uga25vdyB0aGUgY3VycmVudCBmcmFt
ZSBoYXMgbm8gYWxwaGEuCiAgICAgICAgICAgICBpZiAoKHByZXZCdWZmZXItPmRpc3Bvc2FsTWV0
aG9kKCkgPT0gUkdCQTMyQnVmZmVyOjpEaXNwb3NlT3ZlcndyaXRlQmdjb2xvcikKKyNpZiBFTkFC
TEUoSU1BR0VfREVDT0RFUl9ET1dOX1NBTVBMSU5HKQorICAgICAgICAgICAgICAgICYmICFwcmV2
QnVmZmVyLT5oYXNBbHBoYSgpICYmIGJ1ZmZlci5zY2FsZWRSZWN0KCkuY29udGFpbnMocHJldkJ1
ZmZlci0+c2NhbGVkUmVjdCgpKSkKKyNlbHNlCiAgICAgICAgICAgICAgICAgJiYgIXByZXZCdWZm
ZXItPmhhc0FscGhhKCkgJiYgYnVmZmVyLnJlY3QoKS5jb250YWlucyhwcmV2QnVmZmVyLT5yZWN0
KCkpKQorI2VuZGlmCiAgICAgICAgICAgICAgICAgYnVmZmVyLnNldEhhc0FscGhhKGZhbHNlKTsK
ICAgICAgICAgfQogICAgIH0K
</data>
<flag name="review"
          id="28623"
          type_id="1"
          status="+"
          setter="manyoso"
    />
          </attachment>
      

    </bug>

</bugzilla>