<?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>66901</bug_id>
          
          <creation_ts>2011-08-24 15:20:29 -0700</creation_ts>
          <short_desc>Enable RenderLayer::updateLayerPosition&apos;s cachedOffset optimization for more cases</short_desc>
          <delta_ts>2011-09-02 18:15:07 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          
          <blocked>67548</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Julien Chaffraix">jchaffraix</reporter>
          <assigned_to name="Julien Chaffraix">jchaffraix</assigned_to>
          <cc>hyatt</cc>
    
    <cc>jamesr</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>456460</commentid>
    <comment_count>0</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2011-08-24 15:20:29 -0700</bug_when>
    <thetext>Currently cachedOffset is only setup when doing a layout of the whole tree (see FrameView::layout()). However RenderLayer::updateLayerPositions has multiple call sites which could benefit from the optimization. Among them is a layout of a subtree inside FrameView::layout.

This is a trade-off as not hitting the cache later means that we have wasted a traversal to the root of the tree. However discussing this with James, it seems OK to go this route and on average should be at least a wash.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456603</commentid>
    <comment_count>1</comment_count>
      <attachid>105117</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2011-08-24 19:02:41 -0700</bug_when>
    <thetext>Created attachment 105117
Proposed change: Extend the use of cachedOffset.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456606</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-24 19:04:28 -0700</bug_when>
    <thetext>Attachment 105117 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebCore/rendering/RenderLayer.h:637:  Line contains only semicolon. If this should be an empty statement, use { } instead.  [whitespace/semicolon] [5]
Total errors found: 1 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456939</commentid>
    <comment_count>3</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2011-08-25 10:04:43 -0700</bug_when>
    <thetext>&gt; If any of these errors are false positives, please file a bug against check-webkit-style.

The style issue is a false positive: it&apos;s just a trailing ; from the &apos;if&apos; statement because we have some SVG specific checks.

The windows build breakage needs to be addressed though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456952</commentid>
    <comment_count>4</comment_count>
      <attachid>105208</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2011-08-25 10:19:45 -0700</bug_when>
    <thetext>Created attachment 105208
Version 2: Should fix windows bot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456959</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-25 10:25:10 -0700</bug_when>
    <thetext>Attachment 105208 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebCore/rendering/RenderLayer.h:637:  Line contains only semicolon. If this should be an empty statement, use { } instead.  [whitespace/semicolon] [5]
Total errors found: 1 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>457729</commentid>
    <comment_count>6</comment_count>
      <attachid>105208</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2011-08-26 13:26:38 -0700</bug_when>
    <thetext>Comment on attachment 105208
Version 2: Should fix windows bot.

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

&gt; Source/WebCore/page/FrameView.cpp:1064
&gt; +    bool disabled;

Rename to cachedOffsetDisabled.

&gt; Source/WebCore/rendering/RenderBoxModelObject.cpp:362
&gt; +                // There is only one layer to update, it is not worth using |cachedOffset| since
&gt; +                // we are not sure the value will be used.
&gt; +                static LayoutPoint* disabledCachedOffset = 0;
&gt; +                m_layer-&gt;updateLayerPositions(disabledCachedOffset);

I don&apos;t understand this change.

&gt; Source/WebCore/rendering/RenderLayer.cpp:264
&gt; +    // prevent the optimization to work.

&quot;from working&quot; would read better than &quot;to work&quot;

&gt; Source/WebCore/rendering/RenderLayer.h:311
&gt; +    void updateLayerPositions(LayoutPoint* cachedOffset, UpdateLayerPositionsFlags = defaultFlags);

Allow the cachedOffset to be 0 still and you wouldn&apos;t have to change RenderBoxModelObject.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>457755</commentid>
    <comment_count>7</comment_count>
      <attachid>105208</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2011-08-26 13:46:17 -0700</bug_when>
    <thetext>Comment on attachment 105208
Version 2: Should fix windows bot.

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

Thanks for looking at this change, some comments inlined. The rest will be changed.

&gt;&gt; Source/WebCore/rendering/RenderBoxModelObject.cpp:362
&gt;&gt; +                m_layer-&gt;updateLayerPositions(disabledCachedOffset);
&gt; 
&gt; I don&apos;t understand this change.

gcc was complaining about this line because it would interpret 0 as an integer. Let me double check if it is needed and if that&apos;s the case, the comment will be amended (see below as to why I want to keep this change).

&gt;&gt; Source/WebCore/rendering/RenderLayer.h:311
&gt;&gt; +    void updateLayerPositions(LayoutPoint* cachedOffset, UpdateLayerPositionsFlags = defaultFlags);
&gt; 
&gt; Allow the cachedOffset to be 0 still and you wouldn&apos;t have to change RenderBoxModelObject.

I disagree here. The cachedOffset optimization is important and we really don&apos;t want people to start disabling it by mistake or at least without an explanation as to why. Let me add a comment about for the record.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>457777</commentid>
    <comment_count>8</comment_count>
      <attachid>105408</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2011-08-26 14:23:54 -0700</bug_when>
    <thetext>Created attachment 105408
Version 3: Integrating Dave&apos;s comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>457778</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-26 14:25:42 -0700</bug_when>
    <thetext>Attachment 105408 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebCore/rendering/RenderLayer.h:641:  Line contains only semicolon. If this should be an empty statement, use { } instead.  [whitespace/semicolon] [5]
Total errors found: 1 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459105</commentid>
    <comment_count>10</comment_count>
      <attachid>105673</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2011-08-30 12:52:44 -0700</bug_when>
    <thetext>Created attachment 105673
Version 4: Correct a bug in the change, added a test case for that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459106</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-30 12:54:40 -0700</bug_when>
    <thetext>Attachment 105673 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/fast...&quot; exit_code: 1

Source/WebCore/rendering/RenderLayer.h:641:  Line contains only semicolon. If this should be an empty statement, use { } instead.  [whitespace/semicolon] [5]
Total errors found: 1 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461306</commentid>
    <comment_count>12</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2011-09-02 10:36:55 -0700</bug_when>
    <thetext>&gt; If any of these errors are false positives, please file a bug against check-webkit-style.

FWIW filed bug 67502 about the false positive style issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461307</commentid>
    <comment_count>13</comment_count>
      <attachid>105673</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-09-02 10:37:57 -0700</bug_when>
    <thetext>Comment on attachment 105673
Version 4: Correct a bug in the change, added a test case for that.

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

&gt; LayoutTests/fast/layers/crash-RenderLayer-update-positions.html:1
&gt; +&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.01//EN&quot; &quot;http://www.w3.org/TR/html4/strict.dtd&quot;&gt;

Just &lt;!DOCTYPE html&gt; please.

&gt; LayoutTests/fast/layers/crash-RenderLayer-update-positions.html:39
&gt; +                &lt;script&gt;
&gt; +                    if (window.layoutTestController) {
&gt; +                        layoutTestController.dumpAsText();
&gt; +                        layoutTestController.waitUntilDone();
&gt; +                    }
&gt; +
&gt; +                    function crash() {
&gt; +                        var dimensionsContainer = document.getElementById(&quot;crasher&quot;);
&gt; +                        dimensionsContainer.setAttribute(&quot;class&quot;, &quot;&quot;);
&gt; +                        if (window.layoutTestController)
&gt; +                            layoutTestController.notifyDone();
&gt; +                    }
&gt; +                    // Asynchronously change the style to force a style recalc later.
&gt; +                    window.setTimeout(crash, 0);
&gt; +                &lt;/script&gt;

Is it necessary to embed the script here? Seems odd. Also, a JS function called crash() is weird, and the test should refer to asserting, not crashing.

&gt; Source/WebCore/rendering/RenderLayer.cpp:256
&gt; +LayoutPoint RenderLayer::cachedOffsetFromRoot(bool&amp; cachedOffsetDisabled) const

The term &apos;cached&apos; in the method name is misleading; the offset hasn&apos;t been cached, it&apos;s being computed.

&gt; Source/WebCore/rendering/RenderLayer.cpp:274
&gt; +    for (const RenderLayer* parentLayer = parent(); parentLayer; rootLayer = parentLayer, parentLayer = parentLayer-&gt;parent()) {
&gt; +        cachedOffsetDisabled = parentLayer-&gt;shouldDisableOffsetCache();
&gt; +        if (cachedOffsetDisabled)
&gt; +            return LayoutPoint();
&gt; +    }
&gt; +    ASSERT(rootLayer == root());
&gt; +
&gt; +    LayoutPoint offset;
&gt; +    parent()-&gt;convertToLayerCoords(rootLayer, offset);

There are two ancestor walks here. Can they be combined?

&gt; Source/WebCore/rendering/RenderLayer.cpp:1147
&gt; +        LayoutPoint cachedOffset = parentCachedOffset;
&gt; +        // updateLayerPositions depends on hasLayer() already being false for proper layout.
&gt; +        current-&gt;updateLayerPositions(cachedOffsetDisabled ? 0 : &amp;cachedOffset);

This is confusing. parentCachedOffset is the offset of |this|, yet you&apos;re passiong that offset down for a child? What about the this-&gt;child offset?

&gt; Source/WebCore/rendering/RenderLayer.h:313
&gt; +    void updateLayerPositions(LayoutPoint* cachedOffset, UpdateLayerPositionsFlags = defaultFlags);

I think you should give cachedOffset a default value of 0.

&gt; Source/WebCore/rendering/RenderLayer.h:642
&gt; +    bool shouldDisableOffsetCache() const
&gt; +    {
&gt; +        return renderer()-&gt;hasColumns() || renderer()-&gt;hasTransform() || isComposited()
&gt; +#if ENABLE(SVG)
&gt; +            || renderer()-&gt;isSVGRoot()
&gt; +#endif
&gt; +            ;
&gt; +    }

I think the name of this method could be broadened. It really means &quot;is it OK to call convertToLayerCoords() across this layer&quot;. There are probably other places in the code we could call this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461367</commentid>
    <comment_count>14</comment_count>
      <attachid>105673</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2011-09-02 11:27:08 -0700</bug_when>
    <thetext>Comment on attachment 105673
Version 4: Correct a bug in the change, added a test case for that.

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

&gt;&gt; LayoutTests/fast/layers/crash-RenderLayer-update-positions.html:39
&gt;&gt; +                &lt;/script&gt;
&gt; 
&gt; Is it necessary to embed the script here? Seems odd. Also, a JS function called crash() is weird, and the test should refer to asserting, not crashing.

I am pretty sure the script needs to be embedded here to get the repro. Let me double check if it can be moved.

&gt;&gt; Source/WebCore/rendering/RenderLayer.cpp:256
&gt;&gt; +LayoutPoint RenderLayer::cachedOffsetFromRoot(bool&amp; cachedOffsetDisabled) const
&gt; 
&gt; The term &apos;cached&apos; in the method name is misleading; the offset hasn&apos;t been cached, it&apos;s being computed.

How about computeOffsetFromRoot?

&gt;&gt; Source/WebCore/rendering/RenderLayer.cpp:274
&gt;&gt; +    parent()-&gt;convertToLayerCoords(rootLayer, offset);
&gt; 
&gt; There are two ancestor walks here. Can they be combined?

It may be possible. I don&apos;t think it will be easy though as convertToLayerCoords may use localToAbsolute which uses the RenderTree to do the conversion. If you don&apos;t mind, I would rather push that to another bug.

&gt;&gt; Source/WebCore/rendering/RenderLayer.cpp:1147
&gt;&gt; +        current-&gt;updateLayerPositions(cachedOffsetDisabled ? 0 : &amp;cachedOffset);
&gt; 
&gt; This is confusing. parentCachedOffset is the offset of |this|, yet you&apos;re passiong that offset down for a child? What about the this-&gt;child offset?

What you are passing to updateLayerPositions is actually the parentOffset. If you look at updateLayerPositions, after computing our relative offset, we update cachedOffset (which is the parent&apos;s cachedOffset) to account for the child offset from its parent.

&gt;&gt; Source/WebCore/rendering/RenderLayer.h:313
&gt;&gt; +    void updateLayerPositions(LayoutPoint* cachedOffset, UpdateLayerPositionsFlags = defaultFlags);
&gt; 
&gt; I think you should give cachedOffset a default value of 0.

I would rather not do that. Such a change would make it easy to forget this optimization which is not something we want.

&gt;&gt; Source/WebCore/rendering/RenderLayer.h:642
&gt;&gt; +    }
&gt; 
&gt; I think the name of this method could be broadened. It really means &quot;is it OK to call convertToLayerCoords() across this layer&quot;. There are probably other places in the code we could call this.

Most functions just call convertToLayerCoords regardless of what shouldDisabledOffsetCache would return. There is also 2 cases where we are actually going against your definition: updateLayerPositions (the branch when cachedOffset is 0) and paintChildLayerIntoColumns. Unless I am missing something, the code seems to diverge from your definition. I can mark the call sites if you think this is needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461521</commentid>
    <comment_count>15</comment_count>
      <attachid>106197</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2011-09-02 14:22:22 -0700</bug_when>
    <thetext>Created attachment 106197
Version 5: Addressing Simon&apos;s comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461523</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-02 14:25:20 -0700</bug_when>
    <thetext>Attachment 106197 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/fast...&quot; exit_code: 1

Source/WebCore/rendering/RenderLayer.h:643:  Line contains only semicolon. If this should be an empty statement, use { } instead.  [whitespace/semicolon] [5]
Total errors found: 1 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461536</commentid>
    <comment_count>17</comment_count>
      <attachid>106197</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-09-02 14:46:35 -0700</bug_when>
    <thetext>Comment on attachment 106197
Version 5: Addressing Simon&apos;s comments.

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

&gt; Source/WebCore/page/FrameView.cpp:1094
&gt; +    bool cachedOffsetDisabled;
&gt; +    LayoutPoint cachedOffset = layer-&gt;computeOffsetFromRoot(cachedOffsetDisabled);

cachedOffsetDisabled now doesn&apos;t read quite right. It&apos;s more like &apos;was able to compute offset&apos;. Maybe &apos;haveLayerOffset&apos;?

&gt; Source/WebCore/rendering/RenderLayer.cpp:278
&gt; +void RenderLayer::updateLayerPositions(LayoutPoint* cachedOffset, UpdateLayerPositionsFlags flags)

I think cachedOffset should be renamed here to offsetFromRoot (or parentOffsetFromRoot maybe).

&gt; Source/WebCore/rendering/RenderLayer.cpp:1149
&gt; +        // updateLayerPositions depends on hasLayer() already being false for proper layout.

Should that be asserted?

&gt; Source/WebCore/rendering/RenderLayer.h:314
&gt; +    void updateLayerPositions(LayoutPoint* cachedOffset, UpdateLayerPositionsFlags = defaultFlags);

Rename cachedOffset

&gt; Source/WebCore/rendering/RenderLayer.h:637
&gt; +    bool convertToLayerCoordsIsDisabled() const

This is really &quot;is the layer position affected by things that RenderLayer doesn&apos;t know about&quot;. I think the sense of the method should be flipped (&quot;okToUseConvertToLayerCoords), but I can&apos;t think of a better name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461555</commentid>
    <comment_count>18</comment_count>
      <attachid>106197</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2011-09-02 15:03:34 -0700</bug_when>
    <thetext>Comment on attachment 106197
Version 5: Addressing Simon&apos;s comments.

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

&gt;&gt; Source/WebCore/page/FrameView.cpp:1094
&gt;&gt; +    LayoutPoint cachedOffset = layer-&gt;computeOffsetFromRoot(cachedOffsetDisabled);
&gt; 
&gt; cachedOffsetDisabled now doesn&apos;t read quite right. It&apos;s more like &apos;was able to compute offset&apos;. Maybe &apos;haveLayerOffset&apos;?

Fine by me (however the 3rd person - hasLayerOffset - sounds better).

&gt;&gt; Source/WebCore/rendering/RenderLayer.cpp:278
&gt;&gt; +void RenderLayer::updateLayerPositions(LayoutPoint* cachedOffset, UpdateLayerPositionsFlags flags)
&gt; 
&gt; I think cachedOffset should be renamed here to offsetFromRoot (or parentOffsetFromRoot maybe).

I would go for offsetFromRoot as the meaning of the variable change inside the function.

&gt;&gt; Source/WebCore/rendering/RenderLayer.cpp:1149
&gt;&gt; +        // updateLayerPositions depends on hasLayer() already being false for proper layout.
&gt; 
&gt; Should that be asserted?

Sure, let me see if it is hit.

&gt;&gt; Source/WebCore/rendering/RenderLayer.h:637
&gt;&gt; +    bool convertToLayerCoordsIsDisabled() const
&gt; 
&gt; This is really &quot;is the layer position affected by things that RenderLayer doesn&apos;t know about&quot;. I think the sense of the method should be flipped (&quot;okToUseConvertToLayerCoords), but I can&apos;t think of a better name.

canUseConvertToLayerCoords would match our usual naming and get the same idea. Any objection?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461611</commentid>
    <comment_count>19</comment_count>
      <attachid>106217</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2011-09-02 16:16:01 -0700</bug_when>
    <thetext>Created attachment 106217
Version 6: Addressing Simon&apos;s latest comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461612</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-02 16:19:40 -0700</bug_when>
    <thetext>Attachment 106217 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/fast...&quot; exit_code: 1

Source/WebCore/rendering/RenderLayer.h:644:  Line contains only semicolon. If this should be an empty statement, use { } instead.  [whitespace/semicolon] [5]
Total errors found: 1 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461614</commentid>
    <comment_count>21</comment_count>
      <attachid>106217</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2011-09-02 16:23:18 -0700</bug_when>
    <thetext>Comment on attachment 106217
Version 6: Addressing Simon&apos;s latest comments.

Thanks Simon!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461645</commentid>
    <comment_count>22</comment_count>
      <attachid>106217</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-02 17:06:52 -0700</bug_when>
    <thetext>Comment on attachment 106217
Version 6: Addressing Simon&apos;s latest comments.

Clearing flags on attachment: 106217

Committed r94464: &lt;http://trac.webkit.org/changeset/94464&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461646</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-02 17:06:57 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105117</attachid>
            <date>2011-08-24 19:02:41 -0700</date>
            <delta_ts>2011-08-25 10:19:42 -0700</delta_ts>
            <desc>Proposed change: Extend the use of cachedOffset.</desc>
            <filename>bug-66901-20110824190239.patch</filename>
            <type>text/plain</type>
            <size>10191</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTM3MDgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzNGY5M2U4NGM2ZTMwODcz
OGVlNzE0NTk2MjM5ZmI1ZDFmYTg0MzA0Li5jOTBlMWEyNTQ3NjA2ZmU3MWNjOWIxNjI3YWNkZGU4
ZjVhYWUxMGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIwMTEtMDgtMjQgIEp1bGll
biBDaGFmZnJhaXggIDxqY2hhZmZyYWl4QHdlYmtpdC5vcmc+CisKKyAgICAgICAgRW5hYmxlIFJl
bmRlckxheWVyOjp1cGRhdGVMYXllclBvc2l0aW9uJ3MgY2FjaGVkT2Zmc2V0IG9wdGltaXphdGlv
biBmb3IgbW9yZSBjYXNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NjY5MDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzIHVuZGVyIHRoZSBuZXcgQVNTRVJULgor
CisgICAgICAgIFRoaXMgY2hhbmdlIGV4dGVuZHMgdGhlIHJhbmdlIG9mIGNhbGxlcnMgbWFraW5n
IHVzZSBvZiB0aGUgY2FjaGVkT2Zmc2V0IG9wdGltaXphdGlvbi4KKworICAgICAgICBNb3N0IGNh
bGxlcnMgZGlkIG5vdCBtYWtlIHVzZSBvZiBjYWNoZWRPZmZzZXQgYXMgaXQgZGlkIG5vdCB3b3Jr
IHdoZW4gY2FsbGVkIG9uIGEgc3VidHJlZS4KKyAgICAgICAgVGhpcyBsaW1pdGF0aW9uIGlzIG5v
dyBnb25lIHRodXMgd2UgY2FuIGVuYWJsZSBpdCBtb3JlIHdpZGVseS4KKworICAgICAgICBOb3Rl
IHRoYXQgdGhpcyBpcyBhbiBvcHRpbWlzdGljIG9wdGltaXphdGlvbjogaWYgY2FjaGVkT2Zmc2V0
IGlzIG5vdCB1c2VkLCB0aGVuIHdlIGhhdmUKKyAgICAgICAgZG9uZSBhdCBsZWFzdCBhbiBleHRy
YSB0cmF2ZXJzYWwgdXAgdG8gdGhlIHJvb3QuIEkgaGF2ZSBmb3VuZCBpdCB0byBiZSBhIHdhc2gg
b24gZmlsZQorICAgICAgICBjeWNsZXIgKGFsZXhhKSBidXQgdG8gYmUgYSBuaWNlIGltcHJvdmVt
ZW50ICh+MjAlKSBvbiBzb21lIHRhYmxlIGJlbmNobWFya3MgKG1vZGlmeWluZworICAgICAgICBh
IGNlbGwsIHNjcm9sbGluZykuCisKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmxheW91dCk6IEV4dGVuZGVkIHRoZSB1c2Ugb2YgY2Fj
aGVkT2Zmc2V0IHRvIHN1YnRyZWUgbGF5b3V0cy4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
Qm94TW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmpl
Y3Q6OnN0eWxlRGlkQ2hhbmdlKTogRm9yYmlkIHRoZSB1c2UgY2FjaGVkT2Zmc2V0IGluIHRoaXMK
KyAgICAgICAgY2FzZSBhcyB3ZSBoYXZlIG9ubHkgYSBzaW5nbGUgbGF5ZXIgdG8gdXBkYXRlLgor
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyOjpjYWNoZWRPZmZzZXRGcm9tUm9vdCk6IEFkZGVkIHRoaXMgbWV0aG9kIHRv
IGdldCB0aGUgY2FjaGVkT2Zmc2V0CisgICAgICAgIGF0IGEgY2VydGFpbiBwb2ludCBpbiB0aGUg
UmVuZGVyTGF5ZXIncyB0cmVlLiBJdCBnZXRzIHRoZSByb290IGxheWVyJ3MgY2hlY2tpbmcgaWYg
bm8gbGF5ZXIKKyAgICAgICAgaW4gYmV0d2VlbiB3b3VsZCBkaXNhYmxlIGNhY2hlZE9mZnNldCBh
bmQgcmV0dXJuIHRoZSBwb3NpdGlvbiByZWxhdGl2ZSB0byB0aGlzIHJvb3QgbGF5ZXIuCisKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjp1cGRhdGVMYXllclBvc2l0aW9ucyk6IEFkZGVk
IGEgbmV3IEFTU0VSVCB0byBtYWtlIHN1cmUgb3VyIGNhY2hlZE9mZnNldAorICAgICAgICBpcyBh
bHdheXMgZmluZS4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpyZW1vdmVPbmx5VGhp
c0xheWVyKTogQWRkZWQgY2FjaGVkT2Zmc2V0IGhlcmUgdG9vIGFzIHdlIGhhdmUgdG8gdXBkYXRl
CisgICAgICAgIHF1aXRlIHNvbWUgbGF5ZXJzLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJM
YXllci5oOiBTd2FwcGVkIHRoZSBhcmd1bWVudCBpbiB1cGRhdGVMYXllclBvc2l0aW9ucyB0byBt
YWtlIGNhY2hlZE9mZnNldAorICAgICAgICBhIG1hbmRhdG9yeSBmaWVsZC4gUGF0Y2hlZCBhbGwg
dGhlIGNhbGxlcnMuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6c2hvdWxkRGlzYWJs
ZU9mZnNldENhY2hlKTogQWRkZWQgdGhpcyBoZWxwZXIgbWV0aG9kIHRvIGtub3cgd2hlbiBhCisg
ICAgICAgIGxheWVyIGRpc2FibGVzIGNhY2hlZE9mZnNldCBpbiBpdHMgc3VidHJlZS4KKwogMjAx
MS0wOC0yNCAgQWxleGFuZHJ1IENoaWN1bGl0YSAgPGFjaGljdUBhZG9iZS5jb20+CiAKICAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2Nzk5CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggN2M2Mzc2Zjc5ZjRiM2MxY2VkODU0OWY3NzkwMzg3Yjcx
NzlmZTQ2YS4uZDUyNjU1MWRhMTc2NGIwZjNkYTk4YjlkYzBmMGUyMTI1NjE2ZmY2MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtMTA2MSwxNCArMTA2MSwxNSBAQCB2b2lkIEZyYW1l
Vmlldzo6bGF5b3V0KGJvb2wgYWxsb3dTdWJ0cmVlKQogCiAgICAgLy8gTm93IHVwZGF0ZSB0aGUg
cG9zaXRpb25zIG9mIGFsbCBsYXllcnMuCiAgICAgYmVnaW5EZWZlcnJlZFJlcGFpbnRzKCk7Ci0g
ICAgTGF5b3V0UG9pbnQgY2FjaGVkT2Zmc2V0OworICAgIGJvb2wgZGlzYWJsZWQ7CisgICAgTGF5
b3V0UG9pbnQgY2FjaGVkT2Zmc2V0ID0gbGF5ZXItPmNhY2hlZE9mZnNldEZyb21Sb290KGRpc2Fi
bGVkKTsKICAgICBpZiAobV9kb0Z1bGxSZXBhaW50KQogICAgICAgICByb290LT52aWV3KCktPnJl
cGFpbnQoKTsgLy8gRklYTUU6IFRoaXMgaXNuJ3QgcmVhbGx5IHJpZ2h0LCBzaW5jZSB0aGUgUmVu
ZGVyVmlldyBkb2Vzbid0IGZ1bGx5IGVuY29tcGFzcyB0aGUgdmlzaWJsZUNvbnRlbnRSZWN0KCku
IEl0IGp1c3QgaGFwcGVucwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8g
d29yayBvdXQgbW9zdCBvZiB0aGUgdGltZSwgc2luY2UgZmlyc3QgbGF5b3V0cyBhbmQgcHJpbnRp
bmcgZG9uJ3QgaGF2ZSB5b3Ugc2Nyb2xsZWQgYW55d2hlcmUuCi0gICAgbGF5ZXItPnVwZGF0ZUxh
eWVyUG9zaXRpb25zKChtX2RvRnVsbFJlcGFpbnQgPyAwIDogUmVuZGVyTGF5ZXI6OkNoZWNrRm9y
UmVwYWludCkKKyAgICBsYXllci0+dXBkYXRlTGF5ZXJQb3NpdGlvbnMoZGlzYWJsZWQgPyAwIDog
JmNhY2hlZE9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1fZG9GdWxs
UmVwYWludCA/IDAgOiBSZW5kZXJMYXllcjo6Q2hlY2tGb3JSZXBhaW50KQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8IFJlbmRlckxheWVyOjpJc0NvbXBvc2l0aW5nVXBkYXRlUm9v
dAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFJlbmRlckxheWVyOjpVcGRhdGVD
b21wb3NpdGluZ0xheWVycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VidHJl
ZSA/IDAgOiAmY2FjaGVkT2Zmc2V0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fCBSZW5kZXJMYXllcjo6VXBkYXRlQ29tcG9zaXRpbmdMYXllcnMpOwogICAgIGVuZERlZmVycmVk
UmVwYWludHMoKTsKIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCmluZGV4IDVm
MjQ4MDRkM2RkM2ZmNGRkNDE5MGQ4NGFlOWMzNzBhNDU2NTQwZWYuLmU3Y2M5ZDEwZTViMzU0NTA2
YTMwZjhjYjlhZmU0YjQzMGFhMjdlZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcApAQCAtMzU2LDcgKzM1NiwxMCBAQCB2b2lkIFJl
bmRlckJveE1vZGVsT2JqZWN0OjpzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwg
Y29uc3QgUmVuZGVyU3R5bAogICAgICAgICAgICAgbV9sYXllci0+aW5zZXJ0T25seVRoaXNMYXll
cigpOwogICAgICAgICAgICAgaWYgKHBhcmVudCgpICYmICFuZWVkc0xheW91dCgpICYmIGNvbnRh
aW5pbmdCbG9jaygpKSB7CiAgICAgICAgICAgICAgICAgbV9sYXllci0+c2V0TmVlZHNGdWxsUmVw
YWludCgpOwotICAgICAgICAgICAgICAgIG1fbGF5ZXItPnVwZGF0ZUxheWVyUG9zaXRpb25zKCk7
CisgICAgICAgICAgICAgICAgLy8gVGhlcmUgaXMgb25seSBvbmUgbGF5ZXIgdG8gdXBkYXRlLCBp
dCBpcyBub3Qgd29ydGggdXNpbmcgfGNhY2hlZE9mZnNldHwgc2luY2UKKyAgICAgICAgICAgICAg
ICAvLyB3ZSBhcmUgbm90IHN1cmUgdGhlIHZhbHVlIHdpbGwgYmUgdXNlZC4gU2VlIFJlbmRlckxh
eWVyOjp1cGRhdGVMYXllclBvc2l0aW9ucy4KKyAgICAgICAgICAgICAgICBzdGF0aWMgTGF5b3V0
UG9pbnQqIGRpc2FibGVkQ2FjaGVkT2Zmc2V0ID0gMDsKKyAgICAgICAgICAgICAgICBtX2xheWVy
LT51cGRhdGVMYXllclBvc2l0aW9ucyhkaXNhYmxlZENhY2hlZE9mZnNldCk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKGxheWVyKCkgJiYgbGF5ZXIoKS0+cGFyZW50
KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IDVjMGEx
OTBkNmNiNmYwNTM0YWQ3ZTMyNDk0YmZiOTQxNmFhNGExZGYuLjZlY2Q0ODQxNTFjZTM3NjZlMzk0
MjUzYmM0YWJjODBlN2ZjYWZiZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmNwcApAQCAtMjUzLDE5ICsyNTMsNDYgQEAgYm9vbCBSZW5kZXJMYXllcjo6Y2FuUmVuZGVy
M0RUcmFuc2Zvcm1zKCkgY29uc3QKICNlbmRpZgogfQogCi12b2lkIFJlbmRlckxheWVyOjp1cGRh
dGVMYXllclBvc2l0aW9ucyhVcGRhdGVMYXllclBvc2l0aW9uc0ZsYWdzIGZsYWdzLCBMYXlvdXRQ
b2ludCogY2FjaGVkT2Zmc2V0KQorTGF5b3V0UG9pbnQgUmVuZGVyTGF5ZXI6OmNhY2hlZE9mZnNl
dEZyb21Sb290KGJvb2wmIGRpc2FibGVkKSBjb25zdAogeworICAgIGRpc2FibGVkID0gZmFsc2U7
CisKKyAgICBpZiAoIXBhcmVudCgpKQorICAgICAgICByZXR1cm4gTGF5b3V0UG9pbnQoKTsKKwor
ICAgIC8vIFRoaXMgaXMgc2ltaWxhciB0byByb290KCkgYnV0IHdlIGNoZWNrIGlmIGFuIGFuY2Vz
dG9yIGxheWVyIHdvdWxkCisgICAgLy8gcHJldmVudCB0aGUgb3B0aW1pemF0aW9uIHRvIHdvcmsu
CisgICAgY29uc3QgUmVuZGVyTGF5ZXIqIHJvb3RMYXllcjsKKyAgICBmb3IgKGNvbnN0IFJlbmRl
ckxheWVyKiBwYXJlbnRMYXllciA9IHBhcmVudCgpOyBwYXJlbnRMYXllcjsgcm9vdExheWVyID0g
cGFyZW50TGF5ZXIsIHBhcmVudExheWVyID0gcGFyZW50TGF5ZXItPnBhcmVudCgpKSB7CisgICAg
ICAgIGRpc2FibGVkID0gcGFyZW50TGF5ZXItPnNob3VsZERpc2FibGVPZmZzZXRDYWNoZSgpOwor
ICAgICAgICBpZiAoZGlzYWJsZWQpCisgICAgICAgICAgICByZXR1cm4gTGF5b3V0UG9pbnQoKTsK
KyAgICB9CisgICAgQVNTRVJUKHJvb3RMYXllciA9PSByb290KCkpOworCisgICAgTGF5b3V0UG9p
bnQgb2Zmc2V0OworICAgIHBhcmVudCgpLT5jb252ZXJ0VG9MYXllckNvb3Jkcyhyb290TGF5ZXIs
IG9mZnNldCk7CisgICAgcmV0dXJuIG9mZnNldDsKK30KKwordm9pZCBSZW5kZXJMYXllcjo6dXBk
YXRlTGF5ZXJQb3NpdGlvbnMoTGF5b3V0UG9pbnQqIGNhY2hlZE9mZnNldCwgVXBkYXRlTGF5ZXJQ
b3NpdGlvbnNGbGFncyBmbGFncykKK3sKKyNpZm5kZWYgTkRFQlVHCisgICAgaWYgKGNhY2hlZE9m
ZnNldCkgeworICAgICAgICBib29sIGRpc2FibGVkOworICAgICAgICBMYXlvdXRQb2ludCBub25D
YWNoZWRPZmZzZXQgPSBjYWNoZWRPZmZzZXRGcm9tUm9vdChkaXNhYmxlZCk7CisgICAgICAgIEFT
U0VSVCghZGlzYWJsZWQpOworICAgICAgICBBU1NFUlQoKmNhY2hlZE9mZnNldCA9PSBub25DYWNo
ZWRPZmZzZXQpOworICAgIH0KKyNlbmRpZgorCiAgICAgdXBkYXRlTGF5ZXJQb3NpdGlvbigpOyAv
LyBGb3IgcmVscG9zaXRpb25lZCBsYXllcnMgb3Igbm9uLXBvc2l0aW9uZWQgbGF5ZXJzLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2UgbmVlZCB0byBrZWVwIGluIHN5bmMsIHNpbmNl
IHdlIG1heSBoYXZlIHNoaWZ0ZWQgcmVsYXRpdmUKICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIHRvIG91ciBwYXJlbnQgbGF5ZXIuCiAgICAgTGF5b3V0UG9pbnQgb2xkQ2FjaGVkT2Zmc2V0
OwogICAgIGlmIChjYWNoZWRPZmZzZXQpIHsKICAgICAgICAgLy8gV2UgY2FuJ3QgY2FjaGUgb3Vy
IG9mZnNldCB0byB0aGUgcmVwYWludCBjb250YWluZXIgaWYgdGhlIG1hcHBpbmcgaXMgYW55dGhp
bmcgbW9yZSBjb21wbGV4IHRoYW4gYSBzaW1wbGUgdHJhbnNsYXRpb24KLSAgICAgICAgYm9vbCBk
aXNhYmxlT2Zmc2V0Q2FjaGUgPSByZW5kZXJlcigpLT5oYXNDb2x1bW5zKCkgfHwgcmVuZGVyZXIo
KS0+aGFzVHJhbnNmb3JtKCkgfHwgaXNDb21wb3NpdGVkKCk7Ci0jaWYgRU5BQkxFKFNWRykKLSAg
ICAgICAgZGlzYWJsZU9mZnNldENhY2hlID0gZGlzYWJsZU9mZnNldENhY2hlIHx8IHJlbmRlcmVy
KCktPmlzU1ZHUm9vdCgpOwotI2VuZGlmCi0gICAgICAgIGlmIChkaXNhYmxlT2Zmc2V0Q2FjaGUp
CisgICAgICAgIGlmIChzaG91bGREaXNhYmxlT2Zmc2V0Q2FjaGUoKSkKICAgICAgICAgICAgIGNh
Y2hlZE9mZnNldCA9IDA7IC8vIElmIG91ciBjYWNoZWQgb2Zmc2V0IGlzIGludmFsaWQgbWFrZSBz
dXJlIGl0J3Mgbm90IHBhc3NlZCB0byBhbnkgb2Ygb3VyIGNoaWxkcmVuCiAgICAgICAgIGVsc2Ug
ewogICAgICAgICAgICAgb2xkQ2FjaGVkT2Zmc2V0ID0gKmNhY2hlZE9mZnNldDsKQEAgLTM0Nyw3
ICszNzQsNyBAQCB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVMYXllclBvc2l0aW9ucyhVcGRhdGVM
YXllclBvc2l0aW9uc0ZsYWdzIGZsYWdzLCBMYXlvdXRQbwogICAgICAgICBmbGFncyB8PSBVcGRh
dGVQYWdpbmF0aW9uOwogCiAgICAgZm9yIChSZW5kZXJMYXllciogY2hpbGQgPSBmaXJzdENoaWxk
KCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKQotICAgICAgICBjaGlsZC0+
dXBkYXRlTGF5ZXJQb3NpdGlvbnMoZmxhZ3MsIGNhY2hlZE9mZnNldCk7CisgICAgICAgIGNoaWxk
LT51cGRhdGVMYXllclBvc2l0aW9ucyhjYWNoZWRPZmZzZXQsIGZsYWdzKTsKIAogI2lmIFVTRShB
Q0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICBpZiAoKGZsYWdzICYgVXBkYXRlQ29tcG9zaXRp
bmdMYXllcnMpICYmIGlzQ29tcG9zaXRlZCgpKQpAQCAtMTA5MiwxMiArMTExOSwxNiBAQCB2b2lk
IFJlbmRlckxheWVyOjpyZW1vdmVPbmx5VGhpc0xheWVyKCkKIAogICAgIC8vIE5vdyB3YWxrIG91
ciBraWRzIGFuZCByZWF0dGFjaCB0aGVtIHRvIG91ciBwYXJlbnQuCiAgICAgUmVuZGVyTGF5ZXIq
IGN1cnJlbnQgPSBtX2ZpcnN0OworICAgIGJvb2wgZGlzYWJsZWQ7CisgICAgY29uc3QgTGF5b3V0
UG9pbnQgcGFyZW50Q2FjaGVkT2Zmc2V0ID0gY2FjaGVkT2Zmc2V0RnJvbVJvb3QoZGlzYWJsZWQp
OwogICAgIHdoaWxlIChjdXJyZW50KSB7CiAgICAgICAgIFJlbmRlckxheWVyKiBuZXh0ID0gY3Vy
cmVudC0+bmV4dFNpYmxpbmcoKTsKICAgICAgICAgcmVtb3ZlQ2hpbGQoY3VycmVudCk7CiAgICAg
ICAgIHBhcmVudC0+YWRkQ2hpbGQoY3VycmVudCwgbmV4dFNpYik7CiAgICAgICAgIGN1cnJlbnQt
PnNldE5lZWRzRnVsbFJlcGFpbnQoKTsKLSAgICAgICAgY3VycmVudC0+dXBkYXRlTGF5ZXJQb3Np
dGlvbnMoKTsgLy8gRGVwZW5kcyBvbiBoYXNMYXllcigpIGFscmVhZHkgYmVpbmcgZmFsc2UgZm9y
IHByb3BlciBsYXlvdXQuCisgICAgICAgIExheW91dFBvaW50IGNhY2hlZE9mZnNldCA9IHBhcmVu
dENhY2hlZE9mZnNldDsKKyAgICAgICAgLy8gdXBkYXRlTGF5ZXJQb3NpdGlvbnMgZGVwZW5kcyBv
biBoYXNMYXllcigpIGFscmVhZHkgYmVpbmcgZmFsc2UgZm9yIHByb3BlciBsYXlvdXQuCisgICAg
ICAgIGN1cnJlbnQtPnVwZGF0ZUxheWVyUG9zaXRpb25zKGRpc2FibGVkID8gMCA6ICZjYWNoZWRP
ZmZzZXQpOwogICAgICAgICBjdXJyZW50ID0gbmV4dDsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmgKaW5kZXggZDkyYzMyNGI3YTEzNzI4ZDA4ZGViMWY0MzY3MGIz
YWIwMTdhZTUwNy4uY2IwNTU3NDgyYzZkYjM5NDgwN2JmZjI4Mjg0MTI0ODBkMThjYjYzOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKQEAgLTMwNyw3ICszMDcsOCBAQCBw
dWJsaWM6CiAgICAgICAgIFVwZGF0ZVBhZ2luYXRpb24gPSAxIDw8IDMKICAgICB9OwogICAgIHR5
cGVkZWYgdW5zaWduZWQgVXBkYXRlTGF5ZXJQb3NpdGlvbnNGbGFnczsKLSAgICB2b2lkIHVwZGF0
ZUxheWVyUG9zaXRpb25zKFVwZGF0ZUxheWVyUG9zaXRpb25zRmxhZ3MgPSBDaGVja0ZvclJlcGFp
bnQgfCBJc0NvbXBvc2l0aW5nVXBkYXRlUm9vdCB8IFVwZGF0ZUNvbXBvc2l0aW5nTGF5ZXJzLCBM
YXlvdXRQb2ludCogY2FjaGVkT2Zmc2V0ID0gMCk7CisgICAgc3RhdGljIGNvbnN0IFVwZGF0ZUxh
eWVyUG9zaXRpb25zRmxhZ3MgZGVmYXVsdEZsYWdzID0gQ2hlY2tGb3JSZXBhaW50IHwgSXNDb21w
b3NpdGluZ1VwZGF0ZVJvb3QgfCBVcGRhdGVDb21wb3NpdGluZ0xheWVyczsKKyAgICB2b2lkIHVw
ZGF0ZUxheWVyUG9zaXRpb25zKExheW91dFBvaW50KiBjYWNoZWRPZmZzZXQsIFVwZGF0ZUxheWVy
UG9zaXRpb25zRmxhZ3MgPSBkZWZhdWx0RmxhZ3MpOwogCiAgICAgdm9pZCB1cGRhdGVUcmFuc2Zv
cm0oKTsKIApAQCAtNDAwLDYgKzQwMSw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgdXBkYXRlSG92
ZXJBY3RpdmVTdGF0ZShjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmKTsKIAor
ICAgIExheW91dFBvaW50IGNhY2hlZE9mZnNldEZyb21Sb290KGJvb2wmIGRpc2FibGVkKSBjb25z
dDsKKwogICAgIC8vIFJldHVybiBhIGNhY2hlZCByZXBhaW50IHJlY3QsIGNvbXB1dGVkIHJlbGF0
aXZlIHRvIHRoZSBsYXllciByZW5kZXJlcidzIGNvbnRhaW5lckZvclJlcGFpbnQuCiAgICAgTGF5
b3V0UmVjdCByZXBhaW50UmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVwYWludFJlY3Q7IH0KICAg
ICBMYXlvdXRSZWN0IHJlcGFpbnRSZWN0SW5jbHVkaW5nRGVzY2VuZGFudHMoKSBjb25zdDsKQEAg
LTYyNSw2ICs2MjgsMTUgQEAgcHJpdmF0ZToKICAgICBMYXlvdXRVbml0IG92ZXJmbG93TGVmdCgp
IGNvbnN0OwogICAgIExheW91dFVuaXQgb3ZlcmZsb3dSaWdodCgpIGNvbnN0OwogCisgICAgYm9v
bCBzaG91bGREaXNhYmxlT2Zmc2V0Q2FjaGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
IHJlbmRlcmVyKCktPmhhc0NvbHVtbnMoKSB8fCByZW5kZXJlcigpLT5oYXNUcmFuc2Zvcm0oKSB8
fCBpc0NvbXBvc2l0ZWQoKQorI2lmIEVOQUJMRShTVkcpCisgICAgICAgICAgICB8fCByZW5kZXJl
cigpLT5pc1NWR1Jvb3QoKQorI2VuZGlmCisgICAgICAgICAgICA7CisgICAgfQorCiBwcm90ZWN0
ZWQ6CiAgICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIG1fcmVuZGVyZXI7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105208</attachid>
            <date>2011-08-25 10:19:45 -0700</date>
            <delta_ts>2011-08-26 14:23:51 -0700</delta_ts>
            <desc>Version 2: Should fix windows bot.</desc>
            <filename>bug-66901-20110825101944.patch</filename>
            <type>text/plain</type>
            <size>10196</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTM3OTMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyODJmN2MwOTA0MGZmMmRh
YTE2MDc4MTZmOWM3NjZlMWJkODFiMGUzLi5jN2JhOGYyMjVkZGRjZDVhMDc4YWQ3MDIwODkzMDZi
ZTlmOGU2ZjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIwMTEtMDgtMjUgIEp1bGll
biBDaGFmZnJhaXggIDxqY2hhZmZyYWl4QHdlYmtpdC5vcmc+CisKKyAgICAgICAgRW5hYmxlIFJl
bmRlckxheWVyOjp1cGRhdGVMYXllclBvc2l0aW9uJ3MgY2FjaGVkT2Zmc2V0IG9wdGltaXphdGlv
biBmb3IgbW9yZSBjYXNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NjY5MDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzIHVuZGVyIHRoZSBuZXcgQVNTRVJULgor
CisgICAgICAgIFRoaXMgY2hhbmdlIGV4dGVuZHMgdGhlIHJhbmdlIG9mIGNhbGxlcnMgbWFraW5n
IHVzZSBvZiB0aGUgY2FjaGVkT2Zmc2V0IG9wdGltaXphdGlvbi4KKworICAgICAgICBNb3N0IGNh
bGxlcnMgZGlkIG5vdCBtYWtlIHVzZSBvZiBjYWNoZWRPZmZzZXQgYXMgaXQgZGlkIG5vdCB3b3Jr
IHdoZW4gY2FsbGVkIG9uIGEgc3VidHJlZS4KKyAgICAgICAgVGhpcyBsaW1pdGF0aW9uIGlzIG5v
dyBnb25lIHRodXMgd2UgY2FuIGVuYWJsZSBpdCBtb3JlIHdpZGVseS4KKworICAgICAgICBOb3Rl
IHRoYXQgdGhpcyBpcyBhbiBvcHRpbWlzdGljIG9wdGltaXphdGlvbjogaWYgY2FjaGVkT2Zmc2V0
IGlzIG5vdCB1c2VkLCB0aGVuIHdlIGhhdmUKKyAgICAgICAgZG9uZSBhdCBsZWFzdCBhbiBleHRy
YSB0cmF2ZXJzYWwgdXAgdG8gdGhlIHJvb3QuIEkgaGF2ZSBmb3VuZCBpdCB0byBiZSBhIHdhc2gg
b24gZmlsZQorICAgICAgICBjeWNsZXIgKGFsZXhhKSBidXQgdG8gYmUgYSBuaWNlIGltcHJvdmVt
ZW50ICh+MjAlKSBvbiBzb21lIHRhYmxlIGJlbmNobWFya3MgKG1vZGlmeWluZworICAgICAgICBh
IGNlbGwsIHNjcm9sbGluZykuCisKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmxheW91dCk6IEV4dGVuZGVkIHRoZSB1c2Ugb2YgY2Fj
aGVkT2Zmc2V0IHRvIHN1YnRyZWUgbGF5b3V0cy4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
Qm94TW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmpl
Y3Q6OnN0eWxlRGlkQ2hhbmdlKTogRm9yYmlkIHRoZSB1c2UgY2FjaGVkT2Zmc2V0IGluIHRoaXMK
KyAgICAgICAgY2FzZSBhcyB3ZSBoYXZlIG9ubHkgYSBzaW5nbGUgbGF5ZXIgdG8gdXBkYXRlLgor
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyOjpjYWNoZWRPZmZzZXRGcm9tUm9vdCk6IEFkZGVkIHRoaXMgbWV0aG9kIHRv
IGdldCB0aGUgY2FjaGVkT2Zmc2V0CisgICAgICAgIGF0IGEgY2VydGFpbiBwb2ludCBpbiB0aGUg
UmVuZGVyTGF5ZXIncyB0cmVlLiBJdCBnZXRzIHRoZSByb290IGxheWVyJ3MgY2hlY2tpbmcgaWYg
bm8gbGF5ZXIKKyAgICAgICAgaW4gYmV0d2VlbiB3b3VsZCBkaXNhYmxlIGNhY2hlZE9mZnNldCBh
bmQgcmV0dXJuIHRoZSBwb3NpdGlvbiByZWxhdGl2ZSB0byB0aGlzIHJvb3QgbGF5ZXIuCisKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjp1cGRhdGVMYXllclBvc2l0aW9ucyk6IEFkZGVk
IGEgbmV3IEFTU0VSVCB0byBtYWtlIHN1cmUgb3VyIGNhY2hlZE9mZnNldAorICAgICAgICBpcyBh
bHdheXMgZmluZS4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpyZW1vdmVPbmx5VGhp
c0xheWVyKTogQWRkZWQgY2FjaGVkT2Zmc2V0IGhlcmUgdG9vIGFzIHdlIGhhdmUgdG8gdXBkYXRl
CisgICAgICAgIHF1aXRlIHNvbWUgbGF5ZXJzLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJM
YXllci5oOiBTd2FwcGVkIHRoZSBhcmd1bWVudCBpbiB1cGRhdGVMYXllclBvc2l0aW9ucyB0byBt
YWtlIGNhY2hlZE9mZnNldAorICAgICAgICBhIG1hbmRhdG9yeSBmaWVsZC4gUGF0Y2hlZCBhbGwg
dGhlIGNhbGxlcnMuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6c2hvdWxkRGlzYWJs
ZU9mZnNldENhY2hlKTogQWRkZWQgdGhpcyBoZWxwZXIgbWV0aG9kIHRvIGtub3cgd2hlbiBhCisg
ICAgICAgIGxheWVyIGRpc2FibGVzIGNhY2hlZE9mZnNldCBpbiBpdHMgc3VidHJlZS4KKwogMjAx
MS0wOC0yNSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIEpTSFRNTElt
YWdlRWxlbWVudCAoYW5kIGFzc29jaWF0ZWQgTm9kZSkgaXMgYWJhbmRvbmVkIHdoZW4gaW1hZ2Ug
bG9hZCBpcyBjYW5jZWxlZCB2aWEgYmVmb3JlbG9hZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3Bw
CmluZGV4IDdjNjM3NmY3OWY0YjNjMWNlZDg1NDlmNzc5MDM4N2I3MTc5ZmU0NmEuLmQ1MjY1NTFk
YTE3NjRiMGYzZGE5OGI5ZGMwZjBlMjEyNTYxNmZmNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmll
dy5jcHAKQEAgLTEwNjEsMTQgKzEwNjEsMTUgQEAgdm9pZCBGcmFtZVZpZXc6OmxheW91dChib29s
IGFsbG93U3VidHJlZSkKIAogICAgIC8vIE5vdyB1cGRhdGUgdGhlIHBvc2l0aW9ucyBvZiBhbGwg
bGF5ZXJzLgogICAgIGJlZ2luRGVmZXJyZWRSZXBhaW50cygpOwotICAgIExheW91dFBvaW50IGNh
Y2hlZE9mZnNldDsKKyAgICBib29sIGRpc2FibGVkOworICAgIExheW91dFBvaW50IGNhY2hlZE9m
ZnNldCA9IGxheWVyLT5jYWNoZWRPZmZzZXRGcm9tUm9vdChkaXNhYmxlZCk7CiAgICAgaWYgKG1f
ZG9GdWxsUmVwYWludCkKICAgICAgICAgcm9vdC0+dmlldygpLT5yZXBhaW50KCk7IC8vIEZJWE1F
OiBUaGlzIGlzbid0IHJlYWxseSByaWdodCwgc2luY2UgdGhlIFJlbmRlclZpZXcgZG9lc24ndCBm
dWxseSBlbmNvbXBhc3MgdGhlIHZpc2libGVDb250ZW50UmVjdCgpLiBJdCBqdXN0IGhhcHBlbnMK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvIHdvcmsgb3V0IG1vc3Qgb2Yg
dGhlIHRpbWUsIHNpbmNlIGZpcnN0IGxheW91dHMgYW5kIHByaW50aW5nIGRvbid0IGhhdmUgeW91
IHNjcm9sbGVkIGFueXdoZXJlLgotICAgIGxheWVyLT51cGRhdGVMYXllclBvc2l0aW9ucygobV9k
b0Z1bGxSZXBhaW50ID8gMCA6IFJlbmRlckxheWVyOjpDaGVja0ZvclJlcGFpbnQpCisgICAgbGF5
ZXItPnVwZGF0ZUxheWVyUG9zaXRpb25zKGRpc2FibGVkID8gMCA6ICZjYWNoZWRPZmZzZXQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtX2RvRnVsbFJlcGFpbnQgPyAwIDogUmVu
ZGVyTGF5ZXI6OkNoZWNrRm9yUmVwYWludCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCBSZW5kZXJMYXllcjo6SXNDb21wb3NpdGluZ1VwZGF0ZVJvb3QKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfCBSZW5kZXJMYXllcjo6VXBkYXRlQ29tcG9zaXRpbmdMYXllcnMs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRyZWUgPyAwIDogJmNhY2hlZE9m
ZnNldCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUmVuZGVyTGF5ZXI6OlVw
ZGF0ZUNvbXBvc2l0aW5nTGF5ZXJzKTsKICAgICBlbmREZWZlcnJlZFJlcGFpbnRzKCk7CiAKICNp
ZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAppbmRleCA1ZjI0ODA0ZDNkZDNmZjRkZDQx
OTBkODRhZTljMzcwYTQ1NjU0MGVmLi4wMzc4ZmZlYjgwZWI3NWY0Y2RiZTIyNWFhYThhZThkZmRi
YjVjYTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9k
ZWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2Rl
bE9iamVjdC5jcHAKQEAgLTM1Niw3ICszNTYsMTAgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVj
dDo6c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWwK
ICAgICAgICAgICAgIG1fbGF5ZXItPmluc2VydE9ubHlUaGlzTGF5ZXIoKTsKICAgICAgICAgICAg
IGlmIChwYXJlbnQoKSAmJiAhbmVlZHNMYXlvdXQoKSAmJiBjb250YWluaW5nQmxvY2soKSkgewog
ICAgICAgICAgICAgICAgIG1fbGF5ZXItPnNldE5lZWRzRnVsbFJlcGFpbnQoKTsKLSAgICAgICAg
ICAgICAgICBtX2xheWVyLT51cGRhdGVMYXllclBvc2l0aW9ucygpOworICAgICAgICAgICAgICAg
IC8vIFRoZXJlIGlzIG9ubHkgb25lIGxheWVyIHRvIHVwZGF0ZSwgaXQgaXMgbm90IHdvcnRoIHVz
aW5nIHxjYWNoZWRPZmZzZXR8IHNpbmNlCisgICAgICAgICAgICAgICAgLy8gd2UgYXJlIG5vdCBz
dXJlIHRoZSB2YWx1ZSB3aWxsIGJlIHVzZWQuCisgICAgICAgICAgICAgICAgc3RhdGljIExheW91
dFBvaW50KiBkaXNhYmxlZENhY2hlZE9mZnNldCA9IDA7CisgICAgICAgICAgICAgICAgbV9sYXll
ci0+dXBkYXRlTGF5ZXJQb3NpdGlvbnMoZGlzYWJsZWRDYWNoZWRPZmZzZXQpOwogICAgICAgICAg
ICAgfQogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChsYXllcigpICYmIGxheWVyKCktPnBhcmVu
dCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCA1YzBh
MTkwZDZjYjZmMDUzNGFkN2UzMjQ5NGJmYjk0MTZhYTRhMWRmLi41ZTBlNzIxZjZjNWEwYjZiYTQ4
NjY3MDFmODUyZDlmNDRmZGRmZWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllci5jcHAKQEAgLTI1MywxOSArMjUzLDQ2IEBAIGJvb2wgUmVuZGVyTGF5ZXI6OmNhblJlbmRl
cjNEVHJhbnNmb3JtcygpIGNvbnN0CiAjZW5kaWYKIH0KIAotdm9pZCBSZW5kZXJMYXllcjo6dXBk
YXRlTGF5ZXJQb3NpdGlvbnMoVXBkYXRlTGF5ZXJQb3NpdGlvbnNGbGFncyBmbGFncywgTGF5b3V0
UG9pbnQqIGNhY2hlZE9mZnNldCkKK0xheW91dFBvaW50IFJlbmRlckxheWVyOjpjYWNoZWRPZmZz
ZXRGcm9tUm9vdChib29sJiBkaXNhYmxlZCkgY29uc3QKIHsKKyAgICBkaXNhYmxlZCA9IGZhbHNl
OworCisgICAgaWYgKCFwYXJlbnQoKSkKKyAgICAgICAgcmV0dXJuIExheW91dFBvaW50KCk7CisK
KyAgICAvLyBUaGlzIGlzIHNpbWlsYXIgdG8gcm9vdCgpIGJ1dCB3ZSBjaGVjayBpZiBhbiBhbmNl
c3RvciBsYXllciB3b3VsZAorICAgIC8vIHByZXZlbnQgdGhlIG9wdGltaXphdGlvbiB0byB3b3Jr
LgorICAgIGNvbnN0IFJlbmRlckxheWVyKiByb290TGF5ZXIgPSAwOworICAgIGZvciAoY29uc3Qg
UmVuZGVyTGF5ZXIqIHBhcmVudExheWVyID0gcGFyZW50KCk7IHBhcmVudExheWVyOyByb290TGF5
ZXIgPSBwYXJlbnRMYXllciwgcGFyZW50TGF5ZXIgPSBwYXJlbnRMYXllci0+cGFyZW50KCkpIHsK
KyAgICAgICAgZGlzYWJsZWQgPSBwYXJlbnRMYXllci0+c2hvdWxkRGlzYWJsZU9mZnNldENhY2hl
KCk7CisgICAgICAgIGlmIChkaXNhYmxlZCkKKyAgICAgICAgICAgIHJldHVybiBMYXlvdXRQb2lu
dCgpOworICAgIH0KKyAgICBBU1NFUlQocm9vdExheWVyID09IHJvb3QoKSk7CisKKyAgICBMYXlv
dXRQb2ludCBvZmZzZXQ7CisgICAgcGFyZW50KCktPmNvbnZlcnRUb0xheWVyQ29vcmRzKHJvb3RM
YXllciwgb2Zmc2V0KTsKKyAgICByZXR1cm4gb2Zmc2V0OworfQorCit2b2lkIFJlbmRlckxheWVy
Ojp1cGRhdGVMYXllclBvc2l0aW9ucyhMYXlvdXRQb2ludCogY2FjaGVkT2Zmc2V0LCBVcGRhdGVM
YXllclBvc2l0aW9uc0ZsYWdzIGZsYWdzKQoreworI2lmbmRlZiBOREVCVUcKKyAgICBpZiAoY2Fj
aGVkT2Zmc2V0KSB7CisgICAgICAgIGJvb2wgZGlzYWJsZWQ7CisgICAgICAgIExheW91dFBvaW50
IG5vbkNhY2hlZE9mZnNldCA9IGNhY2hlZE9mZnNldEZyb21Sb290KGRpc2FibGVkKTsKKyAgICAg
ICAgQVNTRVJUKCFkaXNhYmxlZCk7CisgICAgICAgIEFTU0VSVCgqY2FjaGVkT2Zmc2V0ID09IG5v
bkNhY2hlZE9mZnNldCk7CisgICAgfQorI2VuZGlmCisKICAgICB1cGRhdGVMYXllclBvc2l0aW9u
KCk7IC8vIEZvciByZWxwb3NpdGlvbmVkIGxheWVycyBvciBub24tcG9zaXRpb25lZCBsYXllcnMs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3ZSBuZWVkIHRvIGtlZXAgaW4gc3luYywg
c2luY2Ugd2UgbWF5IGhhdmUgc2hpZnRlZCByZWxhdGl2ZQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gdG8gb3VyIHBhcmVudCBsYXllci4KICAgICBMYXlvdXRQb2ludCBvbGRDYWNoZWRP
ZmZzZXQ7CiAgICAgaWYgKGNhY2hlZE9mZnNldCkgewogICAgICAgICAvLyBXZSBjYW4ndCBjYWNo
ZSBvdXIgb2Zmc2V0IHRvIHRoZSByZXBhaW50IGNvbnRhaW5lciBpZiB0aGUgbWFwcGluZyBpcyBh
bnl0aGluZyBtb3JlIGNvbXBsZXggdGhhbiBhIHNpbXBsZSB0cmFuc2xhdGlvbgotICAgICAgICBi
b29sIGRpc2FibGVPZmZzZXRDYWNoZSA9IHJlbmRlcmVyKCktPmhhc0NvbHVtbnMoKSB8fCByZW5k
ZXJlcigpLT5oYXNUcmFuc2Zvcm0oKSB8fCBpc0NvbXBvc2l0ZWQoKTsKLSNpZiBFTkFCTEUoU1ZH
KQotICAgICAgICBkaXNhYmxlT2Zmc2V0Q2FjaGUgPSBkaXNhYmxlT2Zmc2V0Q2FjaGUgfHwgcmVu
ZGVyZXIoKS0+aXNTVkdSb290KCk7Ci0jZW5kaWYKLSAgICAgICAgaWYgKGRpc2FibGVPZmZzZXRD
YWNoZSkKKyAgICAgICAgaWYgKHNob3VsZERpc2FibGVPZmZzZXRDYWNoZSgpKQogICAgICAgICAg
ICAgY2FjaGVkT2Zmc2V0ID0gMDsgLy8gSWYgb3VyIGNhY2hlZCBvZmZzZXQgaXMgaW52YWxpZCBt
YWtlIHN1cmUgaXQncyBub3QgcGFzc2VkIHRvIGFueSBvZiBvdXIgY2hpbGRyZW4KICAgICAgICAg
ZWxzZSB7CiAgICAgICAgICAgICBvbGRDYWNoZWRPZmZzZXQgPSAqY2FjaGVkT2Zmc2V0OwpAQCAt
MzQ3LDcgKzM3NCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZUxheWVyUG9zaXRpb25zKFVw
ZGF0ZUxheWVyUG9zaXRpb25zRmxhZ3MgZmxhZ3MsIExheW91dFBvCiAgICAgICAgIGZsYWdzIHw9
IFVwZGF0ZVBhZ2luYXRpb247CiAKICAgICBmb3IgKFJlbmRlckxheWVyKiBjaGlsZCA9IGZpcnN0
Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpCi0gICAgICAgIGNo
aWxkLT51cGRhdGVMYXllclBvc2l0aW9ucyhmbGFncywgY2FjaGVkT2Zmc2V0KTsKKyAgICAgICAg
Y2hpbGQtPnVwZGF0ZUxheWVyUG9zaXRpb25zKGNhY2hlZE9mZnNldCwgZmxhZ3MpOwogCiAjaWYg
VVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIGlmICgoZmxhZ3MgJiBVcGRhdGVDb21w
b3NpdGluZ0xheWVycykgJiYgaXNDb21wb3NpdGVkKCkpCkBAIC0xMDkyLDEyICsxMTE5LDE2IEBA
IHZvaWQgUmVuZGVyTGF5ZXI6OnJlbW92ZU9ubHlUaGlzTGF5ZXIoKQogCiAgICAgLy8gTm93IHdh
bGsgb3VyIGtpZHMgYW5kIHJlYXR0YWNoIHRoZW0gdG8gb3VyIHBhcmVudC4KICAgICBSZW5kZXJM
YXllciogY3VycmVudCA9IG1fZmlyc3Q7CisgICAgYm9vbCBkaXNhYmxlZDsKKyAgICBjb25zdCBM
YXlvdXRQb2ludCBwYXJlbnRDYWNoZWRPZmZzZXQgPSBjYWNoZWRPZmZzZXRGcm9tUm9vdChkaXNh
YmxlZCk7CiAgICAgd2hpbGUgKGN1cnJlbnQpIHsKICAgICAgICAgUmVuZGVyTGF5ZXIqIG5leHQg
PSBjdXJyZW50LT5uZXh0U2libGluZygpOwogICAgICAgICByZW1vdmVDaGlsZChjdXJyZW50KTsK
ICAgICAgICAgcGFyZW50LT5hZGRDaGlsZChjdXJyZW50LCBuZXh0U2liKTsKICAgICAgICAgY3Vy
cmVudC0+c2V0TmVlZHNGdWxsUmVwYWludCgpOwotICAgICAgICBjdXJyZW50LT51cGRhdGVMYXll
clBvc2l0aW9ucygpOyAvLyBEZXBlbmRzIG9uIGhhc0xheWVyKCkgYWxyZWFkeSBiZWluZyBmYWxz
ZSBmb3IgcHJvcGVyIGxheW91dC4KKyAgICAgICAgTGF5b3V0UG9pbnQgY2FjaGVkT2Zmc2V0ID0g
cGFyZW50Q2FjaGVkT2Zmc2V0OworICAgICAgICAvLyB1cGRhdGVMYXllclBvc2l0aW9ucyBkZXBl
bmRzIG9uIGhhc0xheWVyKCkgYWxyZWFkeSBiZWluZyBmYWxzZSBmb3IgcHJvcGVyIGxheW91dC4K
KyAgICAgICAgY3VycmVudC0+dXBkYXRlTGF5ZXJQb3NpdGlvbnMoZGlzYWJsZWQgPyAwIDogJmNh
Y2hlZE9mZnNldCk7CiAgICAgICAgIGN1cnJlbnQgPSBuZXh0OwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAppbmRleCBkOTJjMzI0YjdhMTM3MjhkMDhkZWIxZjQz
NjcwYjNhYjAxN2FlNTA3Li5jYjA1NTc0ODJjNmRiMzk0ODA3YmZmMjgyODQxMjQ4MGQxOGNiNjM5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaApAQCAtMzA3LDcgKzMwNyw4
IEBAIHB1YmxpYzoKICAgICAgICAgVXBkYXRlUGFnaW5hdGlvbiA9IDEgPDwgMwogICAgIH07CiAg
ICAgdHlwZWRlZiB1bnNpZ25lZCBVcGRhdGVMYXllclBvc2l0aW9uc0ZsYWdzOwotICAgIHZvaWQg
dXBkYXRlTGF5ZXJQb3NpdGlvbnMoVXBkYXRlTGF5ZXJQb3NpdGlvbnNGbGFncyA9IENoZWNrRm9y
UmVwYWludCB8IElzQ29tcG9zaXRpbmdVcGRhdGVSb290IHwgVXBkYXRlQ29tcG9zaXRpbmdMYXll
cnMsIExheW91dFBvaW50KiBjYWNoZWRPZmZzZXQgPSAwKTsKKyAgICBzdGF0aWMgY29uc3QgVXBk
YXRlTGF5ZXJQb3NpdGlvbnNGbGFncyBkZWZhdWx0RmxhZ3MgPSBDaGVja0ZvclJlcGFpbnQgfCBJ
c0NvbXBvc2l0aW5nVXBkYXRlUm9vdCB8IFVwZGF0ZUNvbXBvc2l0aW5nTGF5ZXJzOworICAgIHZv
aWQgdXBkYXRlTGF5ZXJQb3NpdGlvbnMoTGF5b3V0UG9pbnQqIGNhY2hlZE9mZnNldCwgVXBkYXRl
TGF5ZXJQb3NpdGlvbnNGbGFncyA9IGRlZmF1bHRGbGFncyk7CiAKICAgICB2b2lkIHVwZGF0ZVRy
YW5zZm9ybSgpOwogCkBAIC00MDAsNiArNDAxLDggQEAgcHVibGljOgogCiAgICAgdm9pZCB1cGRh
dGVIb3ZlckFjdGl2ZVN0YXRlKGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYp
OwogCisgICAgTGF5b3V0UG9pbnQgY2FjaGVkT2Zmc2V0RnJvbVJvb3QoYm9vbCYgZGlzYWJsZWQp
IGNvbnN0OworCiAgICAgLy8gUmV0dXJuIGEgY2FjaGVkIHJlcGFpbnQgcmVjdCwgY29tcHV0ZWQg
cmVsYXRpdmUgdG8gdGhlIGxheWVyIHJlbmRlcmVyJ3MgY29udGFpbmVyRm9yUmVwYWludC4KICAg
ICBMYXlvdXRSZWN0IHJlcGFpbnRSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9yZXBhaW50UmVjdDsg
fQogICAgIExheW91dFJlY3QgcmVwYWludFJlY3RJbmNsdWRpbmdEZXNjZW5kYW50cygpIGNvbnN0
OwpAQCAtNjI1LDYgKzYyOCwxNSBAQCBwcml2YXRlOgogICAgIExheW91dFVuaXQgb3ZlcmZsb3dM
ZWZ0KCkgY29uc3Q7CiAgICAgTGF5b3V0VW5pdCBvdmVyZmxvd1JpZ2h0KCkgY29uc3Q7CiAKKyAg
ICBib29sIHNob3VsZERpc2FibGVPZmZzZXRDYWNoZSgpIGNvbnN0CisgICAgeworICAgICAgICBy
ZXR1cm4gcmVuZGVyZXIoKS0+aGFzQ29sdW1ucygpIHx8IHJlbmRlcmVyKCktPmhhc1RyYW5zZm9y
bSgpIHx8IGlzQ29tcG9zaXRlZCgpCisjaWYgRU5BQkxFKFNWRykKKyAgICAgICAgICAgIHx8IHJl
bmRlcmVyKCktPmlzU1ZHUm9vdCgpCisjZW5kaWYKKyAgICAgICAgICAgIDsKKyAgICB9CisKIHBy
b3RlY3RlZDoKICAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogbV9yZW5kZXJlcjsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105408</attachid>
            <date>2011-08-26 14:23:54 -0700</date>
            <delta_ts>2011-08-30 12:52:41 -0700</delta_ts>
            <desc>Version 3: Integrating Dave&apos;s comments.</desc>
            <filename>bug-66901-20110826142353.patch</filename>
            <type>text/plain</type>
            <size>10480</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTM5MDQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0ZTZlZDhkOGI3MDM0MGM2
YzRjMzc1Njg4NDQxMzYwYTVhODViYTVhLi4xMDljMjVkZDMzNzUzN2Q1ZjhkZjdkMmIzYjQyYWU1
MGM3NDgyNDhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIwMTEtMDgtMjYgIEp1bGll
biBDaGFmZnJhaXggIDxqY2hhZmZyYWl4QHdlYmtpdC5vcmc+CisKKyAgICAgICAgRW5hYmxlIFJl
bmRlckxheWVyOjp1cGRhdGVMYXllclBvc2l0aW9uJ3MgY2FjaGVkT2Zmc2V0IG9wdGltaXphdGlv
biBmb3IgbW9yZSBjYXNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NjY5MDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzIHVuZGVyIHRoZSBuZXcgQVNTRVJULgor
CisgICAgICAgIFRoaXMgY2hhbmdlIGV4dGVuZHMgdGhlIHJhbmdlIG9mIGNhbGxlcnMgbWFraW5n
IHVzZSBvZiB0aGUgY2FjaGVkT2Zmc2V0IG9wdGltaXphdGlvbi4KKworICAgICAgICBNb3N0IGNh
bGxlcnMgZGlkIG5vdCBtYWtlIHVzZSBvZiBjYWNoZWRPZmZzZXQgYXMgaXQgZGlkIG5vdCB3b3Jr
IHdoZW4gY2FsbGVkIG9uIGEgc3VidHJlZS4KKyAgICAgICAgVGhpcyBsaW1pdGF0aW9uIGlzIG5v
dyBnb25lIHRodXMgd2UgY2FuIGVuYWJsZSBpdCBtb3JlIHdpZGVseS4KKworICAgICAgICBOb3Rl
IHRoYXQgdGhpcyBpcyBhbiBvcHRpbWlzdGljIG9wdGltaXphdGlvbjogaWYgY2FjaGVkT2Zmc2V0
IGlzIG5vdCB1c2VkLCB0aGVuIHdlIGhhdmUKKyAgICAgICAgZG9uZSBhdCBsZWFzdCBhbiBleHRy
YSB0cmF2ZXJzYWwgdXAgdG8gdGhlIHJvb3QuIEkgaGF2ZSBmb3VuZCBpdCB0byBiZSBhIHdhc2gg
b24gZmlsZQorICAgICAgICBjeWNsZXIgKGFsZXhhKSBidXQgdG8gYmUgYSBuaWNlIGltcHJvdmVt
ZW50ICh+MjAlKSBvbiBzb21lIHRhYmxlIGJlbmNobWFya3MgKG1vZGlmeWluZworICAgICAgICBh
IGNlbGwsIHNjcm9sbGluZykuCisKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmxheW91dCk6IEV4dGVuZGVkIHRoZSB1c2Ugb2YgY2Fj
aGVkT2Zmc2V0IHRvIHN1YnRyZWUgbGF5b3V0cy4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
Qm94TW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmpl
Y3Q6OnN0eWxlRGlkQ2hhbmdlKTogRm9yYmlkIHRoZSB1c2UgY2FjaGVkT2Zmc2V0IGluIHRoaXMK
KyAgICAgICAgY2FzZSBhcyB3ZSBoYXZlIG9ubHkgYSBzaW5nbGUgbGF5ZXIgdG8gdXBkYXRlLgor
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyOjpjYWNoZWRPZmZzZXRGcm9tUm9vdCk6IEFkZGVkIHRoaXMgbWV0aG9kIHRv
IGdldCB0aGUgY2FjaGVkT2Zmc2V0CisgICAgICAgIGF0IGEgY2VydGFpbiBwb2ludCBpbiB0aGUg
UmVuZGVyTGF5ZXIncyB0cmVlLiBJdCBnZXRzIHRoZSByb290IGxheWVyJ3MgY2hlY2tpbmcgaWYg
bm8gbGF5ZXIKKyAgICAgICAgaW4gYmV0d2VlbiB3b3VsZCBkaXNhYmxlIGNhY2hlZE9mZnNldCBh
bmQgcmV0dXJuIHRoZSBwb3NpdGlvbiByZWxhdGl2ZSB0byB0aGlzIHJvb3QgbGF5ZXIuCisKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjp1cGRhdGVMYXllclBvc2l0aW9ucyk6IEFkZGVk
IGEgbmV3IEFTU0VSVCB0byBtYWtlIHN1cmUgb3VyIGNhY2hlZE9mZnNldAorICAgICAgICBpcyBh
bHdheXMgZmluZS4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpyZW1vdmVPbmx5VGhp
c0xheWVyKTogQWRkZWQgY2FjaGVkT2Zmc2V0IGhlcmUgdG9vIGFzIHdlIGhhdmUgdG8gdXBkYXRl
CisgICAgICAgIHF1aXRlIHNvbWUgbGF5ZXJzLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJM
YXllci5oOiBTd2FwcGVkIHRoZSBhcmd1bWVudCBpbiB1cGRhdGVMYXllclBvc2l0aW9ucyB0byBt
YWtlIGNhY2hlZE9mZnNldAorICAgICAgICBhIG1hbmRhdG9yeSBmaWVsZC4gUGF0Y2hlZCBhbGwg
dGhlIGNhbGxlcnMuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6c2hvdWxkRGlzYWJs
ZU9mZnNldENhY2hlKTogQWRkZWQgdGhpcyBoZWxwZXIgbWV0aG9kIHRvIGtub3cgd2hlbiBhCisg
ICAgICAgIGxheWVyIGRpc2FibGVzIGNhY2hlZE9mZnNldCBpbiBpdHMgc3VidHJlZS4KKwogMjAx
MS0wOC0yNiAgQ2hyaXMgUm9nZXJzICA8Y3JvZ2Vyc0Bnb29nbGUuY29tPgogCiAgICAgICAgIEFk
ZCBNZWRpYVBsYXllcjo6YXVkaW9Tb3VyY2VQcm92aWRlcigpIG1ldGhvZCBmb3IgYXVkaW8gc3Ry
ZWFtIGFjY2VzcyBieSB0aGUgV2ViIEF1ZGlvIEFQSS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNw
cAppbmRleCA4NDM1NjBkMDJhNThlNzU2MjY3NTc4ODg1MWY3MWExOGEyOGZmNmJjLi41OTUzMGM3
ZGVjMDc3ZDMzYmNmZmE1N2RmMDQ1ZTQyMzVjMjQwMTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXcuY3BwCkBAIC0xMDkwLDE0ICsxMDkwLDE1IEBAIHZvaWQgRnJhbWVWaWV3OjpsYXlvdXQoYm9v
bCBhbGxvd1N1YnRyZWUpCiAKICAgICAvLyBOb3cgdXBkYXRlIHRoZSBwb3NpdGlvbnMgb2YgYWxs
IGxheWVycy4KICAgICBiZWdpbkRlZmVycmVkUmVwYWludHMoKTsKLSAgICBMYXlvdXRQb2ludCBj
YWNoZWRPZmZzZXQ7CisgICAgYm9vbCBjYWNoZWRPZmZzZXREaXNhYmxlZDsKKyAgICBMYXlvdXRQ
b2ludCBjYWNoZWRPZmZzZXQgPSBsYXllci0+Y2FjaGVkT2Zmc2V0RnJvbVJvb3QoY2FjaGVkT2Zm
c2V0RGlzYWJsZWQpOwogICAgIGlmIChtX2RvRnVsbFJlcGFpbnQpCiAgICAgICAgIHJvb3QtPnZp
ZXcoKS0+cmVwYWludCgpOyAvLyBGSVhNRTogVGhpcyBpc24ndCByZWFsbHkgcmlnaHQsIHNpbmNl
IHRoZSBSZW5kZXJWaWV3IGRvZXNuJ3QgZnVsbHkgZW5jb21wYXNzIHRoZSB2aXNpYmxlQ29udGVu
dFJlY3QoKS4gSXQganVzdCBoYXBwZW5zCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyB0byB3b3JrIG91dCBtb3N0IG9mIHRoZSB0aW1lLCBzaW5jZSBmaXJzdCBsYXlvdXRzIGFu
ZCBwcmludGluZyBkb24ndCBoYXZlIHlvdSBzY3JvbGxlZCBhbnl3aGVyZS4KLSAgICBsYXllci0+
dXBkYXRlTGF5ZXJQb3NpdGlvbnMoKG1fZG9GdWxsUmVwYWludCA/IDAgOiBSZW5kZXJMYXllcjo6
Q2hlY2tGb3JSZXBhaW50KQorICAgIGxheWVyLT51cGRhdGVMYXllclBvc2l0aW9ucyhjYWNoZWRP
ZmZzZXREaXNhYmxlZCA/IDAgOiAmY2FjaGVkT2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAobV9kb0Z1bGxSZXBhaW50ID8gMCA6IFJlbmRlckxheWVyOjpDaGVja0ZvclJl
cGFpbnQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUmVuZGVyTGF5ZXI6Oklz
Q29tcG9zaXRpbmdVcGRhdGVSb290Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg
UmVuZGVyTGF5ZXI6OlVwZGF0ZUNvbXBvc2l0aW5nTGF5ZXJzLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdWJ0cmVlID8gMCA6ICZjYWNoZWRPZmZzZXQpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8IFJlbmRlckxheWVyOjpVcGRhdGVDb21wb3NpdGluZ0xheWVy
cyk7CiAgICAgZW5kRGVmZXJyZWRSZXBhaW50cygpOwogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NP
TVBPU0lUSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eE1vZGVsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2Rl
bE9iamVjdC5jcHAKaW5kZXggNWYyNDgwNGQzZGQzZmY0ZGQ0MTkwZDg0YWU5YzM3MGE0NTY1NDBl
Zi4uODA2ZmJmNjgwMTQzMDA4YmZjZjNjZjQ1YzFhYjhjZWY2M2I3YWMxMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCkBAIC0zNTYs
NyArMzU2LDkgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6c3R5bGVEaWRDaGFuZ2UoU3R5
bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWwKICAgICAgICAgICAgIG1fbGF5ZXIt
Pmluc2VydE9ubHlUaGlzTGF5ZXIoKTsKICAgICAgICAgICAgIGlmIChwYXJlbnQoKSAmJiAhbmVl
ZHNMYXlvdXQoKSAmJiBjb250YWluaW5nQmxvY2soKSkgewogICAgICAgICAgICAgICAgIG1fbGF5
ZXItPnNldE5lZWRzRnVsbFJlcGFpbnQoKTsKLSAgICAgICAgICAgICAgICBtX2xheWVyLT51cGRh
dGVMYXllclBvc2l0aW9ucygpOworICAgICAgICAgICAgICAgIC8vIFRoZXJlIGlzIG9ubHkgb25l
IGxheWVyIHRvIHVwZGF0ZSwgaXQgaXMgbm90IHdvcnRoIHVzaW5nIHxjYWNoZWRPZmZzZXR8IHNp
bmNlCisgICAgICAgICAgICAgICAgLy8gd2UgYXJlIG5vdCBzdXJlIHRoZSB2YWx1ZSB3aWxsIGJl
IHVzZWQuCisgICAgICAgICAgICAgICAgbV9sYXllci0+dXBkYXRlTGF5ZXJQb3NpdGlvbnMoMCk7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKGxheWVyKCkgJiYgbGF5
ZXIoKS0+cGFyZW50KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3Bw
CmluZGV4IDhmMDM0ODMzMDA5YWM0ZmQ3ZmM4MzhiZWJmMDZkYmU5ZDlmOTdiNDEuLjlhN2VhOTc2
NGQwZTAyNTZhODcwY2ViY2Q4MWFjYWNlYjcwNjRkOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyLmNwcApAQCAtMjUzLDE5ICsyNTMsNDYgQEAgYm9vbCBSZW5kZXJMYXll
cjo6Y2FuUmVuZGVyM0RUcmFuc2Zvcm1zKCkgY29uc3QKICNlbmRpZgogfQogCi12b2lkIFJlbmRl
ckxheWVyOjp1cGRhdGVMYXllclBvc2l0aW9ucyhVcGRhdGVMYXllclBvc2l0aW9uc0ZsYWdzIGZs
YWdzLCBMYXlvdXRQb2ludCogY2FjaGVkT2Zmc2V0KQorTGF5b3V0UG9pbnQgUmVuZGVyTGF5ZXI6
OmNhY2hlZE9mZnNldEZyb21Sb290KGJvb2wmIGNhY2hlZE9mZnNldERpc2FibGVkKSBjb25zdAog
eworICAgIGNhY2hlZE9mZnNldERpc2FibGVkID0gZmFsc2U7CisKKyAgICBpZiAoIXBhcmVudCgp
KQorICAgICAgICByZXR1cm4gTGF5b3V0UG9pbnQoKTsKKworICAgIC8vIFRoaXMgaXMgc2ltaWxh
ciB0byByb290KCkgYnV0IHdlIGNoZWNrIGlmIGFuIGFuY2VzdG9yIGxheWVyIHdvdWxkCisgICAg
Ly8gcHJldmVudCB0aGUgb3B0aW1pemF0aW9uIGZyb20gd29ya2luZy4KKyAgICBjb25zdCBSZW5k
ZXJMYXllciogcm9vdExheWVyID0gMDsKKyAgICBmb3IgKGNvbnN0IFJlbmRlckxheWVyKiBwYXJl
bnRMYXllciA9IHBhcmVudCgpOyBwYXJlbnRMYXllcjsgcm9vdExheWVyID0gcGFyZW50TGF5ZXIs
IHBhcmVudExheWVyID0gcGFyZW50TGF5ZXItPnBhcmVudCgpKSB7CisgICAgICAgIGNhY2hlZE9m
ZnNldERpc2FibGVkID0gcGFyZW50TGF5ZXItPnNob3VsZERpc2FibGVPZmZzZXRDYWNoZSgpOwor
ICAgICAgICBpZiAoY2FjaGVkT2Zmc2V0RGlzYWJsZWQpCisgICAgICAgICAgICByZXR1cm4gTGF5
b3V0UG9pbnQoKTsKKyAgICB9CisgICAgQVNTRVJUKHJvb3RMYXllciA9PSByb290KCkpOworCisg
ICAgTGF5b3V0UG9pbnQgb2Zmc2V0OworICAgIHBhcmVudCgpLT5jb252ZXJ0VG9MYXllckNvb3Jk
cyhyb290TGF5ZXIsIG9mZnNldCk7CisgICAgcmV0dXJuIG9mZnNldDsKK30KKwordm9pZCBSZW5k
ZXJMYXllcjo6dXBkYXRlTGF5ZXJQb3NpdGlvbnMoTGF5b3V0UG9pbnQqIGNhY2hlZE9mZnNldCwg
VXBkYXRlTGF5ZXJQb3NpdGlvbnNGbGFncyBmbGFncykKK3sKKyNpZm5kZWYgTkRFQlVHCisgICAg
aWYgKGNhY2hlZE9mZnNldCkgeworICAgICAgICBib29sIGNhY2hlZE9mZnNldERpc2FibGVkOwor
ICAgICAgICBMYXlvdXRQb2ludCBub25DYWNoZWRPZmZzZXQgPSBjYWNoZWRPZmZzZXRGcm9tUm9v
dChjYWNoZWRPZmZzZXREaXNhYmxlZCk7CisgICAgICAgIEFTU0VSVCghY2FjaGVkT2Zmc2V0RGlz
YWJsZWQpOworICAgICAgICBBU1NFUlQoKmNhY2hlZE9mZnNldCA9PSBub25DYWNoZWRPZmZzZXQp
OworICAgIH0KKyNlbmRpZgorCiAgICAgdXBkYXRlTGF5ZXJQb3NpdGlvbigpOyAvLyBGb3IgcmVs
cG9zaXRpb25lZCBsYXllcnMgb3Igbm9uLXBvc2l0aW9uZWQgbGF5ZXJzLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gd2UgbmVlZCB0byBrZWVwIGluIHN5bmMsIHNpbmNlIHdlIG1heSBo
YXZlIHNoaWZ0ZWQgcmVsYXRpdmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvIG91
ciBwYXJlbnQgbGF5ZXIuCiAgICAgTGF5b3V0UG9pbnQgb2xkQ2FjaGVkT2Zmc2V0OwogICAgIGlm
IChjYWNoZWRPZmZzZXQpIHsKICAgICAgICAgLy8gV2UgY2FuJ3QgY2FjaGUgb3VyIG9mZnNldCB0
byB0aGUgcmVwYWludCBjb250YWluZXIgaWYgdGhlIG1hcHBpbmcgaXMgYW55dGhpbmcgbW9yZSBj
b21wbGV4IHRoYW4gYSBzaW1wbGUgdHJhbnNsYXRpb24KLSAgICAgICAgYm9vbCBkaXNhYmxlT2Zm
c2V0Q2FjaGUgPSByZW5kZXJlcigpLT5oYXNDb2x1bW5zKCkgfHwgcmVuZGVyZXIoKS0+aGFzVHJh
bnNmb3JtKCkgfHwgaXNDb21wb3NpdGVkKCk7Ci0jaWYgRU5BQkxFKFNWRykKLSAgICAgICAgZGlz
YWJsZU9mZnNldENhY2hlID0gZGlzYWJsZU9mZnNldENhY2hlIHx8IHJlbmRlcmVyKCktPmlzU1ZH
Um9vdCgpOwotI2VuZGlmCi0gICAgICAgIGlmIChkaXNhYmxlT2Zmc2V0Q2FjaGUpCisgICAgICAg
IGlmIChzaG91bGREaXNhYmxlT2Zmc2V0Q2FjaGUoKSkKICAgICAgICAgICAgIGNhY2hlZE9mZnNl
dCA9IDA7IC8vIElmIG91ciBjYWNoZWQgb2Zmc2V0IGlzIGludmFsaWQgbWFrZSBzdXJlIGl0J3Mg
bm90IHBhc3NlZCB0byBhbnkgb2Ygb3VyIGNoaWxkcmVuCiAgICAgICAgIGVsc2UgewogICAgICAg
ICAgICAgb2xkQ2FjaGVkT2Zmc2V0ID0gKmNhY2hlZE9mZnNldDsKQEAgLTM0NCw3ICszNzEsNyBA
QCB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVMYXllclBvc2l0aW9ucyhVcGRhdGVMYXllclBvc2l0
aW9uc0ZsYWdzIGZsYWdzLCBMYXlvdXRQbwogICAgICAgICBmbGFncyB8PSBVcGRhdGVQYWdpbmF0
aW9uOwogCiAgICAgZm9yIChSZW5kZXJMYXllciogY2hpbGQgPSBmaXJzdENoaWxkKCk7IGNoaWxk
OyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKQotICAgICAgICBjaGlsZC0+dXBkYXRlTGF5
ZXJQb3NpdGlvbnMoZmxhZ3MsIGNhY2hlZE9mZnNldCk7CisgICAgICAgIGNoaWxkLT51cGRhdGVM
YXllclBvc2l0aW9ucyhjYWNoZWRPZmZzZXQsIGZsYWdzKTsKIAogI2lmIFVTRShBQ0NFTEVSQVRF
RF9DT01QT1NJVElORykKICAgICBpZiAoKGZsYWdzICYgVXBkYXRlQ29tcG9zaXRpbmdMYXllcnMp
ICYmIGlzQ29tcG9zaXRlZCgpKQpAQCAtMTEwMCwxMiArMTEyNywxNiBAQCB2b2lkIFJlbmRlckxh
eWVyOjpyZW1vdmVPbmx5VGhpc0xheWVyKCkKIAogICAgIC8vIE5vdyB3YWxrIG91ciBraWRzIGFu
ZCByZWF0dGFjaCB0aGVtIHRvIG91ciBwYXJlbnQuCiAgICAgUmVuZGVyTGF5ZXIqIGN1cnJlbnQg
PSBtX2ZpcnN0OworICAgIGJvb2wgY2FjaGVkT2Zmc2V0RGlzYWJsZWQ7CisgICAgY29uc3QgTGF5
b3V0UG9pbnQgcGFyZW50Q2FjaGVkT2Zmc2V0ID0gY2FjaGVkT2Zmc2V0RnJvbVJvb3QoY2FjaGVk
T2Zmc2V0RGlzYWJsZWQpOwogICAgIHdoaWxlIChjdXJyZW50KSB7CiAgICAgICAgIFJlbmRlckxh
eWVyKiBuZXh0ID0gY3VycmVudC0+bmV4dFNpYmxpbmcoKTsKICAgICAgICAgcmVtb3ZlQ2hpbGQo
Y3VycmVudCk7CiAgICAgICAgIHBhcmVudC0+YWRkQ2hpbGQoY3VycmVudCwgbmV4dFNpYik7CiAg
ICAgICAgIGN1cnJlbnQtPnNldE5lZWRzRnVsbFJlcGFpbnQoKTsKLSAgICAgICAgY3VycmVudC0+
dXBkYXRlTGF5ZXJQb3NpdGlvbnMoKTsgLy8gRGVwZW5kcyBvbiBoYXNMYXllcigpIGFscmVhZHkg
YmVpbmcgZmFsc2UgZm9yIHByb3BlciBsYXlvdXQuCisgICAgICAgIExheW91dFBvaW50IGNhY2hl
ZE9mZnNldCA9IHBhcmVudENhY2hlZE9mZnNldDsKKyAgICAgICAgLy8gdXBkYXRlTGF5ZXJQb3Np
dGlvbnMgZGVwZW5kcyBvbiBoYXNMYXllcigpIGFscmVhZHkgYmVpbmcgZmFsc2UgZm9yIHByb3Bl
ciBsYXlvdXQuCisgICAgICAgIGN1cnJlbnQtPnVwZGF0ZUxheWVyUG9zaXRpb25zKGNhY2hlZE9m
ZnNldERpc2FibGVkID8gMCA6ICZjYWNoZWRPZmZzZXQpOwogICAgICAgICBjdXJyZW50ID0gbmV4
dDsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKaW5kZXggZWI3
ZDc2NzAwZDgwMDFlM2Y3MTNlMzRlYjM5MWExNmFjNmNlNzU5YS4uZGQwOGUxMTc5MjA5NjdhNjQ4
Yzk1ZTMxZjQ1ZDYwYWMwZjBhNzgyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmgKQEAgLTMwNyw3ICszMDcsMTAgQEAgcHVibGljOgogICAgICAgICBVcGRhdGVQYWdpbmF0
aW9uID0gMSA8PCAzCiAgICAgfTsKICAgICB0eXBlZGVmIHVuc2lnbmVkIFVwZGF0ZUxheWVyUG9z
aXRpb25zRmxhZ3M7Ci0gICAgdm9pZCB1cGRhdGVMYXllclBvc2l0aW9ucyhVcGRhdGVMYXllclBv
c2l0aW9uc0ZsYWdzID0gQ2hlY2tGb3JSZXBhaW50IHwgSXNDb21wb3NpdGluZ1VwZGF0ZVJvb3Qg
fCBVcGRhdGVDb21wb3NpdGluZ0xheWVycywgTGF5b3V0UG9pbnQqIGNhY2hlZE9mZnNldCA9IDAp
OworICAgIHN0YXRpYyBjb25zdCBVcGRhdGVMYXllclBvc2l0aW9uc0ZsYWdzIGRlZmF1bHRGbGFn
cyA9IENoZWNrRm9yUmVwYWludCB8IElzQ29tcG9zaXRpbmdVcGRhdGVSb290IHwgVXBkYXRlQ29t
cG9zaXRpbmdMYXllcnM7CisgICAgLy8gUHJvdmlkaW5nIHxjYWNoZWRPZmZzZXR8IHByZXZlbnRz
IGEgb3V0bGluZUJveEZvclJlcGFpbnQgZnJvbSB3YWxraW5nIGJhY2sgdG8gdGhlIHJvb3QgZm9y
IGVhY2ggbGF5ZXIgaW4gb3VyIHN1YnRyZWUuCisgICAgLy8gVGhpcyBpcyBhbiBvcHRpbWlzdGlj
IG9wdGltaXphdGlvbiB0aGF0IGlzIG5vdCBndWFyYW50ZWVkIHRvIHN1Y2NlZWQuCisgICAgdm9p
ZCB1cGRhdGVMYXllclBvc2l0aW9ucyhMYXlvdXRQb2ludCogY2FjaGVkT2Zmc2V0LCBVcGRhdGVM
YXllclBvc2l0aW9uc0ZsYWdzID0gZGVmYXVsdEZsYWdzKTsKIAogICAgIHZvaWQgdXBkYXRlVHJh
bnNmb3JtKCk7CiAKQEAgLTQwMCw2ICs0MDMsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHVwZGF0
ZUhvdmVyQWN0aXZlU3RhdGUoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0Jik7
CiAKKyAgICBMYXlvdXRQb2ludCBjYWNoZWRPZmZzZXRGcm9tUm9vdChib29sJiBkaXNhYmxlZCkg
Y29uc3Q7CisKICAgICAvLyBSZXR1cm4gYSBjYWNoZWQgcmVwYWludCByZWN0LCBjb21wdXRlZCBy
ZWxhdGl2ZSB0byB0aGUgbGF5ZXIgcmVuZGVyZXIncyBjb250YWluZXJGb3JSZXBhaW50LgogICAg
IExheW91dFJlY3QgcmVwYWludFJlY3QoKSBjb25zdCB7IHJldHVybiBtX3JlcGFpbnRSZWN0OyB9
CiAgICAgTGF5b3V0UmVjdCByZXBhaW50UmVjdEluY2x1ZGluZ0Rlc2NlbmRhbnRzKCkgY29uc3Q7
CkBAIC02MjcsNiArNjMyLDE1IEBAIHByaXZhdGU6CiAgICAgTGF5b3V0VW5pdCBvdmVyZmxvd0xl
ZnQoKSBjb25zdDsKICAgICBMYXlvdXRVbml0IG92ZXJmbG93UmlnaHQoKSBjb25zdDsKIAorICAg
IGJvb2wgc2hvdWxkRGlzYWJsZU9mZnNldENhY2hlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJl
dHVybiByZW5kZXJlcigpLT5oYXNDb2x1bW5zKCkgfHwgcmVuZGVyZXIoKS0+aGFzVHJhbnNmb3Jt
KCkgfHwgaXNDb21wb3NpdGVkKCkKKyNpZiBFTkFCTEUoU1ZHKQorICAgICAgICAgICAgfHwgcmVu
ZGVyZXIoKS0+aXNTVkdSb290KCkKKyNlbmRpZgorICAgICAgICAgICAgOworICAgIH0KKwogcHJv
dGVjdGVkOgogICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiBtX3JlbmRlcmVyOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105673</attachid>
            <date>2011-08-30 12:52:44 -0700</date>
            <delta_ts>2011-09-02 14:22:19 -0700</delta_ts>
            <desc>Version 4: Correct a bug in the change, added a test case for that.</desc>
            <filename>bug-66901-20110830125243.patch</filename>
            <type>text/plain</type>
            <size>13722</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTQwOTMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA1NDQzNjQ5ZTUzNTE4Yjg2ZTNjMjY3
NDEzNTU0MWE4Mzc0NDBkZTE3Li40YWZjMWMxNzcyMDYwNDUwMDQ3ZmZiMWJhNjZjMTA3NTMxMWQ4
YzBkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDgtMzAgIEp1bGllbiBDaGFmZnJhaXgg
IDxqY2hhZmZyYWl4QHdlYmtpdC5vcmc+CisKKyAgICAgICAgRW5hYmxlIFJlbmRlckxheWVyOjp1
cGRhdGVMYXllclBvc2l0aW9uJ3MgY2FjaGVkT2Zmc2V0IG9wdGltaXphdGlvbiBmb3IgbW9yZSBj
YXNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjY5
MDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZh
c3QvbGF5ZXJzL2NyYXNoLVJlbmRlckxheWVyLXVwZGF0ZS1wb3NpdGlvbnMtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2xheWVycy9jcmFzaC1SZW5kZXJMYXllci11cGRhdGUt
cG9zaXRpb25zLmh0bWw6IEFkZGVkLgorICAgICAgICBUZXN0IHRoYXQgc29tZSBjaGFuZ2VzIGlu
IHRoZSBsYXllcnMgZG9lcyBub3QgY2F1c2UgYW4gQVNTRVJUIGZhaWx1cmUuCisKIDIwMTEtMDgt
MzAgIERhdmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgogCiAgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS8xMDAwMjE0MD4gOUEzMDk6IFRleHQgZ2V0cyBjbGlwcGVkIGluIGJvb2sgYmVjYXVzZSBv
ZiBvdmVyZmxvdzphdXRvCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2xheWVycy9jcmFz
aC1SZW5kZXJMYXllci11cGRhdGUtcG9zaXRpb25zLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2Zhc3QvbGF5ZXJzL2NyYXNoLVJlbmRlckxheWVyLXVwZGF0ZS1wb3NpdGlvbnMtZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmIwMmJiODI4Y2NhMDViOTMwNDJjNzU5NjZhYmM2N2EwMWEzOWVlNDQK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2xheWVycy9jcmFzaC1SZW5kZXJM
YXllci11cGRhdGUtcG9zaXRpb25zLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxIEBACitUZXN0IGZv
ciBidWcgNjY5MDEuIFRoZSB0ZXN0IHBhc3NlcyBpZiBpdCBkb2VzIG5vdCBDUkFTSC4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbGF5ZXJzL2NyYXNoLVJlbmRlckxheWVyLXVwZGF0ZS1w
b3NpdGlvbnMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbGF5ZXJzL2NyYXNoLVJlbmRlckxheWVy
LXVwZGF0ZS1wb3NpdGlvbnMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44Yjc4OTM2Zjk5NTI1YTlhZWZiNzY3
MWE0MzYwYzI1MDIwMzM4ODlkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9s
YXllcnMvY3Jhc2gtUmVuZGVyTGF5ZXItdXBkYXRlLXBvc2l0aW9ucy5odG1sCkBAIC0wLDAgKzEs
NDUgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiIg
Imh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L3N0cmljdC5kdGQiPgorPGh0bWw+Cis8aGVhZD4K
KyAgICA8c3R5bGU+CisgICAgICAgIC5uby1qcyB7CisgICAgICAgICAgICBwb3NpdGlvbjogcmVs
YXRpdmU7CisgICAgICAgIH0KKworICAgICAgICAubm8tanMgaDMgeworICAgICAgICAgICAgcG9z
aXRpb246IGFic29sdXRlOworICAgICAgICB9CisgICAgPC9zdHlsZT4KKzwvaGVhZD4KKworPGJv
ZHk+Cis8ZGl2PgorICAgIDxkaXY+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxh
dGl2ZSI+CisgICAgICAgICAgICA8ZGl2IGlkPSJjcmFzaGVyIiBjbGFzcz0ibm8tanMiPgorICAg
ICAgICAgICAgICAgIDxkaXY+CisgICAgICAgICAgICAgICAgICAgIDxkaXY+CisgICAgICAgICAg
ICAgICAgICAgICAgICA8aDM+VGVzdCBmb3IgYnVnIDY2OTAxLiBUaGUgdGVzdCBwYXNzZXMgaWYg
aXQgZG9lcyBub3QgPHNwYW4+Q1JBU0guPC9zcGFuPjwvaDM+CisgICAgICAgICAgICAgICAgICAg
IDwvZGl2PgorICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgICAgIDxzY3JpcHQ+
CisgICAgICAgICAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRp
bERvbmUoKTsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIGZ1
bmN0aW9uIGNyYXNoKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGRpbWVuc2lvbnND
b250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY3Jhc2hlciIpOworICAgICAgICAg
ICAgICAgICAgICAgICAgZGltZW5zaW9uc0NvbnRhaW5lci5zZXRBdHRyaWJ1dGUoImNsYXNzIiwg
IiIpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5u
b3RpZnlEb25lKCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
Ly8gQXN5bmNocm9ub3VzbHkgY2hhbmdlIHRoZSBzdHlsZSB0byBmb3JjZSBhIHN0eWxlIHJlY2Fs
YyBsYXRlci4KKyAgICAgICAgICAgICAgICAgICAgd2luZG93LnNldFRpbWVvdXQoY3Jhc2gsIDAp
OworICAgICAgICAgICAgICAgIDwvc2NyaXB0PgorICAgICAgICAgICAgPC9kaXY+CisgICAgICAg
IDwvZGl2PgorICAgIDwvZGl2PgorPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5k
ZXggMGNhYzI0ZDhlMDkyNTAyOTRmMDU1NTg1ZWJhMjUyNTI4NWEwYjE5Zi4uYzAyMTdlYTczMzFl
OGU1OTVjMjkyMWIxM2NmMWUyNTlmN2NjYzU5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBA
CisyMDExLTA4LTMwICBKdWxpZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJraXQub3JnPgor
CisgICAgICAgIEVuYWJsZSBSZW5kZXJMYXllcjo6dXBkYXRlTGF5ZXJQb3NpdGlvbidzIGNhY2hl
ZE9mZnNldCBvcHRpbWl6YXRpb24gZm9yIG1vcmUgY2FzZXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2OTAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogZmFzdC9sYXllcnMvY3Jhc2gtUmVuZGVy
TGF5ZXItdXBkYXRlLXBvc2l0aW9ucy5odG1sCisgICAgICAgICAgICAgIEFsc28gY292ZXJlZCBi
eSBleGlzdGluZyB0ZXN0cyB1bmRlciB0aGUgbmV3IEFTU0VSVC4KKworICAgICAgICBUaGlzIGNo
YW5nZSBleHRlbmRzIHRoZSByYW5nZSBvZiBjYWxsZXJzIG1ha2luZyB1c2Ugb2YgdGhlIGNhY2hl
ZE9mZnNldCBvcHRpbWl6YXRpb24uCisKKyAgICAgICAgTW9zdCBjYWxsZXJzIGRpZCBub3QgbWFr
ZSB1c2Ugb2YgY2FjaGVkT2Zmc2V0IGFzIGl0IGRpZCBub3Qgd29yayB3aGVuIGNhbGxlZCBvbiBh
IHN1YnRyZWUuCisgICAgICAgIFRoaXMgbGltaXRhdGlvbiBpcyBub3cgZ29uZSB0aHVzIHdlIGNh
biBlbmFibGUgaXQgbW9yZSB3aWRlbHkuCisKKyAgICAgICAgTm90ZSB0aGF0IHRoaXMgaXMgYW4g
b3B0aW1pc3RpYyBvcHRpbWl6YXRpb246IGlmIGNhY2hlZE9mZnNldCBpcyBub3QgdXNlZCwgdGhl
biB3ZSBoYXZlCisgICAgICAgIGRvbmUgYXQgbGVhc3QgYW4gZXh0cmEgdHJhdmVyc2FsIHVwIHRv
IHRoZSByb290LiBJIGhhdmUgZm91bmQgaXQgdG8gYmUgYSB3YXNoIG9uIGZpbGUKKyAgICAgICAg
Y3ljbGVyIChhbGV4YSkgYnV0IHRvIGJlIGEgbmljZSBpbXByb3ZlbWVudCAofjIwJSkgb24gc29t
ZSB0YWJsZSBiZW5jaG1hcmtzIChtb2RpZnlpbmcKKyAgICAgICAgYSBjZWxsLCBzY3JvbGxpbmcp
LgorCisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVWaWV3OjpsYXlvdXQpOiBFeHRlbmRlZCB0aGUgdXNlIG9mIGNhY2hlZE9mZnNldCB0byBzdWJ0
cmVlIGxheW91dHMuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpzdHlsZURpZENoYW5n
ZSk6IEZvcmJpZCB0aGUgdXNlIGNhY2hlZE9mZnNldCBpbiB0aGlzCisgICAgICAgIGNhc2UgYXMg
d2UgaGF2ZSBvbmx5IGEgc2luZ2xlIGxheWVyIHRvIHVwZGF0ZS4KKworICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6Y2Fj
aGVkT2Zmc2V0RnJvbVJvb3QpOiBBZGRlZCB0aGlzIG1ldGhvZCB0byBnZXQgdGhlIGNhY2hlZE9m
ZnNldAorICAgICAgICBhdCBhIGNlcnRhaW4gcG9pbnQgaW4gdGhlIFJlbmRlckxheWVyJ3MgdHJl
ZS4gSXQgZ2V0cyB0aGUgcm9vdCBsYXllcidzIGNoZWNraW5nIGlmIG5vIGxheWVyCisgICAgICAg
IGluIGJldHdlZW4gd291bGQgZGlzYWJsZSBjYWNoZWRPZmZzZXQgYW5kIHJldHVybiB0aGUgcG9z
aXRpb24gcmVsYXRpdmUgdG8gdGhpcyByb290IGxheWVyLgorCisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJMYXllcjo6dXBkYXRlTGF5ZXJQb3NpdGlvbnMpOiBBZGRlZCBhIG5ldyBBU1NFUlQgdG8g
bWFrZSBzdXJlIG91ciBjYWNoZWRPZmZzZXQKKyAgICAgICAgaXMgYWx3YXlzIGZpbmUuCisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cmVtb3ZlT25seVRoaXNMYXllcik6IEFkZGVkIGNh
Y2hlZE9mZnNldCBoZXJlIHRvbyBhcyB3ZSBtYXkgaGF2ZSB0bworICAgICAgICB1cGRhdGUgc2V2
ZXJhbCBsYXllcnMuIFdlIHNhdmUgdGhlIG9mZnNldCBwcmlvciB0byBiZWluZyByZW1vdmVkIGZy
b20gdGhlIGhpZXJhcmNoeSBmb3IKKyAgICAgICAgY29ycmVjdG5lc3MuCisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmg6IFN3YXBwZWQgdGhlIGFyZ3VtZW50IGluIHVwZGF0ZUxheWVy
UG9zaXRpb25zIHRvIG1ha2UgY2FjaGVkT2Zmc2V0CisgICAgICAgIGEgbWFuZGF0b3J5IGZpZWxk
LiBQYXRjaGVkIGFsbCB0aGUgY2FsbGVycy4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVy
OjpzaG91bGREaXNhYmxlT2Zmc2V0Q2FjaGUpOiBBZGRlZCB0aGlzIGhlbHBlciBtZXRob2QgdG8g
a25vdyB3aGVuIGEKKyAgICAgICAgbGF5ZXIgZGlzYWJsZXMgY2FjaGVkT2Zmc2V0IGluIGl0cyBz
dWJ0cmVlLgorCiAyMDExLTA4LTI5ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29t
PgogCiAgICAgICAgIER1bXBSZW5kZXJUcmVlIHNob3VsZCBiZWdpbiBlYWNoIHRlc3Qgd2l0aCBh
biBlbXB0eSBjb29raWUgc3RvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCA4NDM1
NjBkMDJhNThlNzU2MjY3NTc4ODg1MWY3MWExOGEyOGZmNmJjLi41OTUzMGM3ZGVjMDc3ZDMzYmNm
ZmE1N2RmMDQ1ZTQyMzVjMjQwMTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC0x
MDkwLDE0ICsxMDkwLDE1IEBAIHZvaWQgRnJhbWVWaWV3OjpsYXlvdXQoYm9vbCBhbGxvd1N1YnRy
ZWUpCiAKICAgICAvLyBOb3cgdXBkYXRlIHRoZSBwb3NpdGlvbnMgb2YgYWxsIGxheWVycy4KICAg
ICBiZWdpbkRlZmVycmVkUmVwYWludHMoKTsKLSAgICBMYXlvdXRQb2ludCBjYWNoZWRPZmZzZXQ7
CisgICAgYm9vbCBjYWNoZWRPZmZzZXREaXNhYmxlZDsKKyAgICBMYXlvdXRQb2ludCBjYWNoZWRP
ZmZzZXQgPSBsYXllci0+Y2FjaGVkT2Zmc2V0RnJvbVJvb3QoY2FjaGVkT2Zmc2V0RGlzYWJsZWQp
OwogICAgIGlmIChtX2RvRnVsbFJlcGFpbnQpCiAgICAgICAgIHJvb3QtPnZpZXcoKS0+cmVwYWlu
dCgpOyAvLyBGSVhNRTogVGhpcyBpc24ndCByZWFsbHkgcmlnaHQsIHNpbmNlIHRoZSBSZW5kZXJW
aWV3IGRvZXNuJ3QgZnVsbHkgZW5jb21wYXNzIHRoZSB2aXNpYmxlQ29udGVudFJlY3QoKS4gSXQg
anVzdCBoYXBwZW5zCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0byB3b3Jr
IG91dCBtb3N0IG9mIHRoZSB0aW1lLCBzaW5jZSBmaXJzdCBsYXlvdXRzIGFuZCBwcmludGluZyBk
b24ndCBoYXZlIHlvdSBzY3JvbGxlZCBhbnl3aGVyZS4KLSAgICBsYXllci0+dXBkYXRlTGF5ZXJQ
b3NpdGlvbnMoKG1fZG9GdWxsUmVwYWludCA/IDAgOiBSZW5kZXJMYXllcjo6Q2hlY2tGb3JSZXBh
aW50KQorICAgIGxheWVyLT51cGRhdGVMYXllclBvc2l0aW9ucyhjYWNoZWRPZmZzZXREaXNhYmxl
ZCA/IDAgOiAmY2FjaGVkT2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
bV9kb0Z1bGxSZXBhaW50ID8gMCA6IFJlbmRlckxheWVyOjpDaGVja0ZvclJlcGFpbnQpCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUmVuZGVyTGF5ZXI6OklzQ29tcG9zaXRpbmdV
cGRhdGVSb290Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUmVuZGVyTGF5ZXI6
OlVwZGF0ZUNvbXBvc2l0aW5nTGF5ZXJzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdWJ0cmVlID8gMCA6ICZjYWNoZWRPZmZzZXQpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8IFJlbmRlckxheWVyOjpVcGRhdGVDb21wb3NpdGluZ0xheWVycyk7CiAgICAgZW5k
RGVmZXJyZWRSZXBhaW50cygpOwogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAK
aW5kZXggNWYyNDgwNGQzZGQzZmY0ZGQ0MTkwZDg0YWU5YzM3MGE0NTY1NDBlZi4uODA2ZmJmNjgw
MTQzMDA4YmZjZjNjZjQ1YzFhYjhjZWY2M2I3YWMxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCkBAIC0zNTYsNyArMzU2LDkgQEAg
dm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNl
IGRpZmYsIGNvbnN0IFJlbmRlclN0eWwKICAgICAgICAgICAgIG1fbGF5ZXItPmluc2VydE9ubHlU
aGlzTGF5ZXIoKTsKICAgICAgICAgICAgIGlmIChwYXJlbnQoKSAmJiAhbmVlZHNMYXlvdXQoKSAm
JiBjb250YWluaW5nQmxvY2soKSkgewogICAgICAgICAgICAgICAgIG1fbGF5ZXItPnNldE5lZWRz
RnVsbFJlcGFpbnQoKTsKLSAgICAgICAgICAgICAgICBtX2xheWVyLT51cGRhdGVMYXllclBvc2l0
aW9ucygpOworICAgICAgICAgICAgICAgIC8vIFRoZXJlIGlzIG9ubHkgb25lIGxheWVyIHRvIHVw
ZGF0ZSwgaXQgaXMgbm90IHdvcnRoIHVzaW5nIHxjYWNoZWRPZmZzZXR8IHNpbmNlCisgICAgICAg
ICAgICAgICAgLy8gd2UgYXJlIG5vdCBzdXJlIHRoZSB2YWx1ZSB3aWxsIGJlIHVzZWQuCisgICAg
ICAgICAgICAgICAgbV9sYXllci0+dXBkYXRlTGF5ZXJQb3NpdGlvbnMoMCk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKGxheWVyKCkgJiYgbGF5ZXIoKS0+cGFyZW50
KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IGZjOGQx
YzI1MDY0MzhmMmZkYWRmYmFmNGQyMWI0MDUxZjZmZTk1YWQuLmZmN2M3YzAyYTcxNWFiOTQxMGRk
NGJhYmMxZWFkOWEyN2U3NTk5ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmNwcApAQCAtMjUzLDE5ICsyNTMsNDYgQEAgYm9vbCBSZW5kZXJMYXllcjo6Y2FuUmVuZGVy
M0RUcmFuc2Zvcm1zKCkgY29uc3QKICNlbmRpZgogfQogCi12b2lkIFJlbmRlckxheWVyOjp1cGRh
dGVMYXllclBvc2l0aW9ucyhVcGRhdGVMYXllclBvc2l0aW9uc0ZsYWdzIGZsYWdzLCBMYXlvdXRQ
b2ludCogY2FjaGVkT2Zmc2V0KQorTGF5b3V0UG9pbnQgUmVuZGVyTGF5ZXI6OmNhY2hlZE9mZnNl
dEZyb21Sb290KGJvb2wmIGNhY2hlZE9mZnNldERpc2FibGVkKSBjb25zdAogeworICAgIGNhY2hl
ZE9mZnNldERpc2FibGVkID0gZmFsc2U7CisKKyAgICBpZiAoIXBhcmVudCgpKQorICAgICAgICBy
ZXR1cm4gTGF5b3V0UG9pbnQoKTsKKworICAgIC8vIFRoaXMgaXMgc2ltaWxhciB0byByb290KCkg
YnV0IHdlIGNoZWNrIGlmIGFuIGFuY2VzdG9yIGxheWVyIHdvdWxkCisgICAgLy8gcHJldmVudCB0
aGUgb3B0aW1pemF0aW9uIGZyb20gd29ya2luZy4KKyAgICBjb25zdCBSZW5kZXJMYXllciogcm9v
dExheWVyID0gMDsKKyAgICBmb3IgKGNvbnN0IFJlbmRlckxheWVyKiBwYXJlbnRMYXllciA9IHBh
cmVudCgpOyBwYXJlbnRMYXllcjsgcm9vdExheWVyID0gcGFyZW50TGF5ZXIsIHBhcmVudExheWVy
ID0gcGFyZW50TGF5ZXItPnBhcmVudCgpKSB7CisgICAgICAgIGNhY2hlZE9mZnNldERpc2FibGVk
ID0gcGFyZW50TGF5ZXItPnNob3VsZERpc2FibGVPZmZzZXRDYWNoZSgpOworICAgICAgICBpZiAo
Y2FjaGVkT2Zmc2V0RGlzYWJsZWQpCisgICAgICAgICAgICByZXR1cm4gTGF5b3V0UG9pbnQoKTsK
KyAgICB9CisgICAgQVNTRVJUKHJvb3RMYXllciA9PSByb290KCkpOworCisgICAgTGF5b3V0UG9p
bnQgb2Zmc2V0OworICAgIHBhcmVudCgpLT5jb252ZXJ0VG9MYXllckNvb3Jkcyhyb290TGF5ZXIs
IG9mZnNldCk7CisgICAgcmV0dXJuIG9mZnNldDsKK30KKwordm9pZCBSZW5kZXJMYXllcjo6dXBk
YXRlTGF5ZXJQb3NpdGlvbnMoTGF5b3V0UG9pbnQqIGNhY2hlZE9mZnNldCwgVXBkYXRlTGF5ZXJQ
b3NpdGlvbnNGbGFncyBmbGFncykKK3sKKyNpZm5kZWYgTkRFQlVHCisgICAgaWYgKGNhY2hlZE9m
ZnNldCkgeworICAgICAgICBib29sIGNhY2hlZE9mZnNldERpc2FibGVkOworICAgICAgICBMYXlv
dXRQb2ludCBub25DYWNoZWRPZmZzZXQgPSBjYWNoZWRPZmZzZXRGcm9tUm9vdChjYWNoZWRPZmZz
ZXREaXNhYmxlZCk7CisgICAgICAgIEFTU0VSVCghY2FjaGVkT2Zmc2V0RGlzYWJsZWQpOworICAg
ICAgICBBU1NFUlQoKmNhY2hlZE9mZnNldCA9PSBub25DYWNoZWRPZmZzZXQpOworICAgIH0KKyNl
bmRpZgorCiAgICAgdXBkYXRlTGF5ZXJQb3NpdGlvbigpOyAvLyBGb3IgcmVscG9zaXRpb25lZCBs
YXllcnMgb3Igbm9uLXBvc2l0aW9uZWQgbGF5ZXJzLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gd2UgbmVlZCB0byBrZWVwIGluIHN5bmMsIHNpbmNlIHdlIG1heSBoYXZlIHNoaWZ0ZWQg
cmVsYXRpdmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvIG91ciBwYXJlbnQgbGF5
ZXIuCiAgICAgTGF5b3V0UG9pbnQgb2xkQ2FjaGVkT2Zmc2V0OwogICAgIGlmIChjYWNoZWRPZmZz
ZXQpIHsKICAgICAgICAgLy8gV2UgY2FuJ3QgY2FjaGUgb3VyIG9mZnNldCB0byB0aGUgcmVwYWlu
dCBjb250YWluZXIgaWYgdGhlIG1hcHBpbmcgaXMgYW55dGhpbmcgbW9yZSBjb21wbGV4IHRoYW4g
YSBzaW1wbGUgdHJhbnNsYXRpb24KLSAgICAgICAgYm9vbCBkaXNhYmxlT2Zmc2V0Q2FjaGUgPSBy
ZW5kZXJlcigpLT5oYXNDb2x1bW5zKCkgfHwgcmVuZGVyZXIoKS0+aGFzVHJhbnNmb3JtKCkgfHwg
aXNDb21wb3NpdGVkKCk7Ci0jaWYgRU5BQkxFKFNWRykKLSAgICAgICAgZGlzYWJsZU9mZnNldENh
Y2hlID0gZGlzYWJsZU9mZnNldENhY2hlIHx8IHJlbmRlcmVyKCktPmlzU1ZHUm9vdCgpOwotI2Vu
ZGlmCi0gICAgICAgIGlmIChkaXNhYmxlT2Zmc2V0Q2FjaGUpCisgICAgICAgIGlmIChzaG91bGRE
aXNhYmxlT2Zmc2V0Q2FjaGUoKSkKICAgICAgICAgICAgIGNhY2hlZE9mZnNldCA9IDA7IC8vIElm
IG91ciBjYWNoZWQgb2Zmc2V0IGlzIGludmFsaWQgbWFrZSBzdXJlIGl0J3Mgbm90IHBhc3NlZCB0
byBhbnkgb2Ygb3VyIGNoaWxkcmVuCiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgb2xkQ2Fj
aGVkT2Zmc2V0ID0gKmNhY2hlZE9mZnNldDsKQEAgLTM0NCw3ICszNzEsNyBAQCB2b2lkIFJlbmRl
ckxheWVyOjp1cGRhdGVMYXllclBvc2l0aW9ucyhVcGRhdGVMYXllclBvc2l0aW9uc0ZsYWdzIGZs
YWdzLCBMYXlvdXRQbwogICAgICAgICBmbGFncyB8PSBVcGRhdGVQYWdpbmF0aW9uOwogCiAgICAg
Zm9yIChSZW5kZXJMYXllciogY2hpbGQgPSBmaXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNo
aWxkLT5uZXh0U2libGluZygpKQotICAgICAgICBjaGlsZC0+dXBkYXRlTGF5ZXJQb3NpdGlvbnMo
ZmxhZ3MsIGNhY2hlZE9mZnNldCk7CisgICAgICAgIGNoaWxkLT51cGRhdGVMYXllclBvc2l0aW9u
cyhjYWNoZWRPZmZzZXQsIGZsYWdzKTsKIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElO
RykKICAgICBpZiAoKGZsYWdzICYgVXBkYXRlQ29tcG9zaXRpbmdMYXllcnMpICYmIGlzQ29tcG9z
aXRlZCgpKQpAQCAtMTEwMSw2ICsxMTI4LDggQEAgdm9pZCBSZW5kZXJMYXllcjo6cmVtb3ZlT25s
eVRoaXNMYXllcigpCiAgICAgLy8gUmVtb3ZlIHVzIGZyb20gdGhlIHBhcmVudC4KICAgICBSZW5k
ZXJMYXllciogcGFyZW50ID0gbV9wYXJlbnQ7CiAgICAgUmVuZGVyTGF5ZXIqIG5leHRTaWIgPSBu
ZXh0U2libGluZygpOworICAgIGJvb2wgY2FjaGVkT2Zmc2V0RGlzYWJsZWQ7CisgICAgY29uc3Qg
TGF5b3V0UG9pbnQgcGFyZW50Q2FjaGVkT2Zmc2V0ID0gY2FjaGVkT2Zmc2V0RnJvbVJvb3QoY2Fj
aGVkT2Zmc2V0RGlzYWJsZWQpOwogICAgIHBhcmVudC0+cmVtb3ZlQ2hpbGQodGhpcyk7CiAgICAg
CiAgICAgaWYgKHJlZmxlY3Rpb24oKSkKQEAgLTExMTMsNyArMTE0Miw5IEBAIHZvaWQgUmVuZGVy
TGF5ZXI6OnJlbW92ZU9ubHlUaGlzTGF5ZXIoKQogICAgICAgICByZW1vdmVDaGlsZChjdXJyZW50
KTsKICAgICAgICAgcGFyZW50LT5hZGRDaGlsZChjdXJyZW50LCBuZXh0U2liKTsKICAgICAgICAg
Y3VycmVudC0+c2V0TmVlZHNGdWxsUmVwYWludCgpOwotICAgICAgICBjdXJyZW50LT51cGRhdGVM
YXllclBvc2l0aW9ucygpOyAvLyBEZXBlbmRzIG9uIGhhc0xheWVyKCkgYWxyZWFkeSBiZWluZyBm
YWxzZSBmb3IgcHJvcGVyIGxheW91dC4KKyAgICAgICAgTGF5b3V0UG9pbnQgY2FjaGVkT2Zmc2V0
ID0gcGFyZW50Q2FjaGVkT2Zmc2V0OworICAgICAgICAvLyB1cGRhdGVMYXllclBvc2l0aW9ucyBk
ZXBlbmRzIG9uIGhhc0xheWVyKCkgYWxyZWFkeSBiZWluZyBmYWxzZSBmb3IgcHJvcGVyIGxheW91
dC4KKyAgICAgICAgY3VycmVudC0+dXBkYXRlTGF5ZXJQb3NpdGlvbnMoY2FjaGVkT2Zmc2V0RGlz
YWJsZWQgPyAwIDogJmNhY2hlZE9mZnNldCk7CiAgICAgICAgIGN1cnJlbnQgPSBuZXh0OwogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAppbmRleCA2YTE1MzlmMmEz
MmEzMTMxNmMwOGI3ODJhYTc5ZjczYjRlZDFjN2Q4Li44NDc2ZGQ4YzIwYzJiNDY2OTY2ODFmMTYz
MTUwNjM1Y2ViMDkzYjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaApA
QCAtMzA3LDcgKzMwNywxMCBAQCBwdWJsaWM6CiAgICAgICAgIFVwZGF0ZVBhZ2luYXRpb24gPSAx
IDw8IDMKICAgICB9OwogICAgIHR5cGVkZWYgdW5zaWduZWQgVXBkYXRlTGF5ZXJQb3NpdGlvbnNG
bGFnczsKLSAgICB2b2lkIHVwZGF0ZUxheWVyUG9zaXRpb25zKFVwZGF0ZUxheWVyUG9zaXRpb25z
RmxhZ3MgPSBDaGVja0ZvclJlcGFpbnQgfCBJc0NvbXBvc2l0aW5nVXBkYXRlUm9vdCB8IFVwZGF0
ZUNvbXBvc2l0aW5nTGF5ZXJzLCBMYXlvdXRQb2ludCogY2FjaGVkT2Zmc2V0ID0gMCk7CisgICAg
c3RhdGljIGNvbnN0IFVwZGF0ZUxheWVyUG9zaXRpb25zRmxhZ3MgZGVmYXVsdEZsYWdzID0gQ2hl
Y2tGb3JSZXBhaW50IHwgSXNDb21wb3NpdGluZ1VwZGF0ZVJvb3QgfCBVcGRhdGVDb21wb3NpdGlu
Z0xheWVyczsKKyAgICAvLyBQcm92aWRpbmcgfGNhY2hlZE9mZnNldHwgcHJldmVudHMgYSBvdXRs
aW5lQm94Rm9yUmVwYWludCBmcm9tIHdhbGtpbmcgYmFjayB0byB0aGUgcm9vdCBmb3IgZWFjaCBs
YXllciBpbiBvdXIgc3VidHJlZS4KKyAgICAvLyBUaGlzIGlzIGFuIG9wdGltaXN0aWMgb3B0aW1p
emF0aW9uIHRoYXQgaXMgbm90IGd1YXJhbnRlZWQgdG8gc3VjY2VlZC4KKyAgICB2b2lkIHVwZGF0
ZUxheWVyUG9zaXRpb25zKExheW91dFBvaW50KiBjYWNoZWRPZmZzZXQsIFVwZGF0ZUxheWVyUG9z
aXRpb25zRmxhZ3MgPSBkZWZhdWx0RmxhZ3MpOwogCiAgICAgdm9pZCB1cGRhdGVUcmFuc2Zvcm0o
KTsKIApAQCAtNDAwLDYgKzQwMyw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgdXBkYXRlSG92ZXJB
Y3RpdmVTdGF0ZShjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmKTsKIAorICAg
IExheW91dFBvaW50IGNhY2hlZE9mZnNldEZyb21Sb290KGJvb2wmIGRpc2FibGVkKSBjb25zdDsK
KwogICAgIC8vIFJldHVybiBhIGNhY2hlZCByZXBhaW50IHJlY3QsIGNvbXB1dGVkIHJlbGF0aXZl
IHRvIHRoZSBsYXllciByZW5kZXJlcidzIGNvbnRhaW5lckZvclJlcGFpbnQuCiAgICAgTGF5b3V0
UmVjdCByZXBhaW50UmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVwYWludFJlY3Q7IH0KICAgICBM
YXlvdXRSZWN0IHJlcGFpbnRSZWN0SW5jbHVkaW5nRGVzY2VuZGFudHMoKSBjb25zdDsKQEAgLTYy
Nyw2ICs2MzIsMTUgQEAgcHJpdmF0ZToKICAgICBMYXlvdXRVbml0IG92ZXJmbG93TGVmdCgpIGNv
bnN0OwogICAgIExheW91dFVuaXQgb3ZlcmZsb3dSaWdodCgpIGNvbnN0OwogCisgICAgYm9vbCBz
aG91bGREaXNhYmxlT2Zmc2V0Q2FjaGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIHJl
bmRlcmVyKCktPmhhc0NvbHVtbnMoKSB8fCByZW5kZXJlcigpLT5oYXNUcmFuc2Zvcm0oKSB8fCBp
c0NvbXBvc2l0ZWQoKQorI2lmIEVOQUJMRShTVkcpCisgICAgICAgICAgICB8fCByZW5kZXJlcigp
LT5pc1NWR1Jvb3QoKQorI2VuZGlmCisgICAgICAgICAgICA7CisgICAgfQorCiBwcm90ZWN0ZWQ6
CiAgICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIG1fcmVuZGVyZXI7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106197</attachid>
            <date>2011-09-02 14:22:22 -0700</date>
            <delta_ts>2011-09-02 16:15:57 -0700</delta_ts>
            <desc>Version 5: Addressing Simon&apos;s comments.</desc>
            <filename>bug-66901-20110902142221.patch</filename>
            <type>text/plain</type>
            <size>15017</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTQ0MzMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3MTAxNTA5MGE4YmFlMGRkYmQ5YzA4
ZWQ4NmUzYWFmNzIwYWZkZDVhLi4wZWU2MTI2OTlkYzQ3NDI1YzFlZWM0N2M2M2IzNzFlMGM3MmQ3
YzJhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDktMDIgIEp1bGllbiBDaGFmZnJhaXgg
IDxqY2hhZmZyYWl4QHdlYmtpdC5vcmc+CisKKyAgICAgICAgRW5hYmxlIFJlbmRlckxheWVyOjp1
cGRhdGVMYXllclBvc2l0aW9uJ3MgY2FjaGVkT2Zmc2V0IG9wdGltaXphdGlvbiBmb3IgbW9yZSBj
YXNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjY5
MDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZh
c3QvbGF5ZXJzL2NyYXNoLVJlbmRlckxheWVyLXVwZGF0ZS1wb3NpdGlvbnMtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2xheWVycy9jcmFzaC1SZW5kZXJMYXllci11cGRhdGUt
cG9zaXRpb25zLmh0bWw6IEFkZGVkLgorICAgICAgICBUZXN0IHRoYXQgc29tZSBjaGFuZ2VzIGlu
IHRoZSBsYXllcnMgZG9lcyBub3QgY2F1c2UgYW4gQVNTRVJUIGZhaWx1cmUuCisKIDIwMTEtMDkt
MDIgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBNb3Zl
IHByaXZhdGUgYnJvd3NpbmcgdGVzdCB0byBhIFBsdWdpblRlc3Qgc3ViY2xhc3MKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvbGF5ZXJzL2Fzc2VydC1SZW5kZXJMYXllci11cGRhdGUtcG9z
aXRpb25zLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvbGF5ZXJzL2Fzc2VydC1SZW5k
ZXJMYXllci11cGRhdGUtcG9zaXRpb25zLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43Y2JjNWRj
NDdkMTU5MTk0NGQ1ZjhlNWNlYzBlYzAzMTBjMjEwODVmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9sYXllcnMvYXNzZXJ0LVJlbmRlckxheWVyLXVwZGF0ZS1wb3NpdGlvbnMt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEgQEAKK1Rlc3QgZm9yIGJ1ZyA2NjkwMS4gVGhlIHRlc3Qg
cGFzc2VzIGlmIGl0IGRvZXMgbm90IEFTU0VSVC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvbGF5ZXJzL2Fzc2VydC1SZW5kZXJMYXllci11cGRhdGUtcG9zaXRpb25zLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L2xheWVycy9hc3NlcnQtUmVuZGVyTGF5ZXItdXBkYXRlLXBvc2l0aW9ucy5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmIyZDFmMGI3NDE5ZWM2NWMwMTI3YTg5NWE3N2IyYTdmMzVmYzAwNjUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2xheWVycy9hc3NlcnQtUmVuZGVy
TGF5ZXItdXBkYXRlLXBvc2l0aW9ucy5odG1sCkBAIC0wLDAgKzEsNDUgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c3R5bGU+CisgICAgICAgIC5uby1qcyB7CisgICAg
ICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgICAgIH0KKworICAgICAgICAubm8tanMg
aDMgeworICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAgICB9CisgICAgPC9z
dHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPGRpdj4KKyAgICA8ZGl2PgorICAgICAgICA8ZGl2IHN0
eWxlPSJwb3NpdGlvbjogcmVsYXRpdmUiPgorICAgICAgICAgICAgPGRpdiBpZD0iYXNzZXJ0VHJp
Z2dlciIgY2xhc3M9Im5vLWpzIj4KKyAgICAgICAgICAgICAgICA8ZGl2PgorICAgICAgICAgICAg
ICAgICAgICA8ZGl2PgorICAgICAgICAgICAgICAgICAgICAgICAgPGgzPlRlc3QgZm9yIGJ1ZyA2
NjkwMS4gVGhlIHRlc3QgcGFzc2VzIGlmIGl0IGRvZXMgbm90IDxzcGFuPkFTU0VSVC48L3NwYW4+
PC9oMz4KKyAgICAgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAgPC9kaXY+
CisgICAgICAgICAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICAgICAgICAgICAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgICAgICAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gYXNzZXJ0KCkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgdmFyIGRpbWVuc2lvbnNDb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgiYXNzZXJ0VHJpZ2dlciIpOworICAgICAgICAgICAgICAgICAgICAgICAgZGltZW5zaW9u
c0NvbnRhaW5lci5zZXRBdHRyaWJ1dGUoImNsYXNzIiwgIiIpOworICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgICAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAvLyBBc3luY2hyb25vdXNseSBjaGFu
Z2UgdGhlIHN0eWxlIHRvIGZvcmNlIGEgc3R5bGUgcmVjYWxjIGxhdGVyLgorICAgICAgICAgICAg
ICAgICAgICB3aW5kb3cuc2V0VGltZW91dChhc3NlcnQsIDApOworICAgICAgICAgICAgICAgIDwv
c2NyaXB0PgorICAgICAgICAgICAgPC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvZGl2Pgor
PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODFmYzM0OTljMGRhNzYwODgy
MTFjYTJlYzE3OWViMGVkZGE4ODliMi4uMmY3Mjc0ZmU0MGQ2NjliYWNhMDY3MTJlYTlkNmU2ZjUx
NDQ2YjExNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDExLTA5LTAyICBKdWxpZW4g
Q2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJraXQub3JnPgorCisgICAgICAgIEVuYWJsZSBSZW5k
ZXJMYXllcjo6dXBkYXRlTGF5ZXJQb3NpdGlvbidzIGNhY2hlZE9mZnNldCBvcHRpbWl6YXRpb24g
Zm9yIG1vcmUgY2FzZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTY2OTAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGVzdDogZmFzdC9sYXllcnMvYXNzZXJ0LVJlbmRlckxheWVyLXVwZGF0ZS1wb3NpdGlv
bnMuaHRtbAorICAgICAgICAgICAgICBBbHNvIGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMgdW5k
ZXIgdGhlIG5ldyBBU1NFUlQuCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgZXh0ZW5kcyB0aGUgcmFu
Z2Ugb2YgY2FsbGVycyBtYWtpbmcgdXNlIG9mIHRoZSBjYWNoZWRPZmZzZXQgb3B0aW1pemF0aW9u
LgorCisgICAgICAgIE1vc3QgY2FsbGVycyBkaWQgbm90IG1ha2UgdXNlIG9mIGNhY2hlZE9mZnNl
dCBhcyBpdCBkaWQgbm90IHdvcmsgd2hlbiBjYWxsZWQgb24gYSBzdWJ0cmVlLgorICAgICAgICBU
aGlzIGxpbWl0YXRpb24gaXMgbm93IGdvbmUgdGh1cyB3ZSBjYW4gZW5hYmxlIGl0IG1vcmUgd2lk
ZWx5LgorCisgICAgICAgIE5vdGUgdGhhdCB0aGlzIGlzIGFuIG9wdGltaXN0aWMgb3B0aW1pemF0
aW9uOiBpZiBjYWNoZWRPZmZzZXQgaXMgbm90IHVzZWQsIHRoZW4gd2UgaGF2ZQorICAgICAgICBk
b25lIGF0IGxlYXN0IGFuIGV4dHJhIHRyYXZlcnNhbCB1cCB0byB0aGUgcm9vdC4gSSBoYXZlIGZv
dW5kIGl0IHRvIGJlIGEgd2FzaCBvbiBmaWxlCisgICAgICAgIGN5Y2xlciAoYWxleGEpIGJ1dCB0
byBiZSBhIG5pY2UgaW1wcm92ZW1lbnQgKH4yMCUpIG9uIHNvbWUgdGFibGUgYmVuY2htYXJrcyAo
bW9kaWZ5aW5nCisgICAgICAgIGEgY2VsbCwgc2Nyb2xsaW5nKS4KKworICAgICAgICAqIHBhZ2Uv
RnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6bGF5b3V0KTogRXh0
ZW5kZWQgdGhlIHVzZSBvZiBjYWNoZWRPZmZzZXQgdG8gc3VidHJlZSBsYXlvdXRzLgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6c3R5bGVEaWRDaGFuZ2UpOiBGb3JiaWQgdGhlIHVzZSBj
YWNoZWRPZmZzZXQgaW4gdGhpcworICAgICAgICBjYXNlIGFzIHdlIGhhdmUgb25seSBhIHNpbmds
ZSBsYXllciB0byB1cGRhdGUuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmNvbXB1dGVPZmZzZXRGcm9tUm9vdCk6
IEFkZGVkIHRoaXMgZnVuY3Rpb24gdG8gZ2V0IHRoZSBjYWNoZWRPZmZzZXQKKyAgICAgICAgYXQg
YSBjZXJ0YWluIHBvaW50IGluIHRoZSBSZW5kZXJMYXllcidzIHRyZWUuIEl0IGdldHMgdGhlIHJv
b3QgbGF5ZXIncyBjaGVja2luZyBpZiBubyBsYXllcgorICAgICAgICBpbiBiZXR3ZWVuIHdvdWxk
IGRpc2FibGUgY2FjaGVkT2Zmc2V0IGFuZCByZXR1cm4gdGhlIHBvc2l0aW9uIHJlbGF0aXZlIHRv
IHRoaXMgcm9vdCBsYXllci4KKworICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnVwZGF0
ZUxheWVyUG9zaXRpb25zKTogQWRkZWQgYSBuZXcgQVNTRVJUIHRvIG1ha2Ugc3VyZSBvdXIgY2Fj
aGVkT2Zmc2V0CisgICAgICAgIGlzIGFsd2F5cyBmaW5lLiBBbHNvIGFkZGVkIGEgY29tbWVudCBh
Ym91dCBjYWxsaW5nIGNvbnZlcnRUb0xheWVyQ29vcmRzLgorCisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJMYXllcjo6cmVtb3ZlT25seVRoaXNMYXllcik6IEFkZGVkIGNhY2hlZE9mZnNldCBoZXJl
IHRvbyBhcyB3ZSBtYXkgaGF2ZSB0bworICAgICAgICB1cGRhdGUgc2V2ZXJhbCBsYXllcnMuIFdl
IHNhdmUgdGhlIG9mZnNldCBwcmlvciB0byBiZWluZyByZW1vdmVkIGZyb20gdGhlIGhpZXJhcmNo
eSBmb3IKKyAgICAgICAgY29ycmVjdG5lc3MuCisKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxh
eWVyOjpwYWludENoaWxkTGF5ZXJJbnRvQ29sdW1ucyk6IEFkZGVkIGEgY29tbWVudCBoZXJlIGFi
b3V0IGNhbGxpbmcgY29udmVydFRvTGF5ZXJDb29yZHMuCisKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuaDogU3dhcHBlZCB0aGUgYXJndW1lbnQgaW4gdXBkYXRlTGF5ZXJQb3NpdGlv
bnMgdG8gbWFrZQorICAgICAgICBjYWNoZWRPZmZzZXQgYSBtYW5kYXRvcnkgZmllbGQuIFBhdGNo
ZWQgYWxsIHRoZSBjYWxsZXJzLgorCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6Y29u
dmVydFRvTGF5ZXJDb29yZHNJc0Rpc2FibGVkKTogQWRkZWQgdGhpcyBoZWxwZXIgbWV0aG9kIHRv
IGtub3cgd2hlbiBhCisgICAgICAgIGxheWVyIGRpc2FibGVzIGNhY2hlZE9mZnNldCBpbiBpdHMg
c3VidHJlZS4gQnJvYWRlbmVkIHRoZSBuYW1pbmcgYXMgdGhpcyBzaG91bGQgYXBwbHkgdG8gY29u
dmVydFRvTGF5ZXJDb29yZHMKKyAgICAgICAgdG9vLgorCiAyMDExLTA5LTAyICBTYW0gV2Vpbmln
ICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVtb3ZlIEJlZm9yZVByb2Nlc3NFdmVudCwg
aXQgd2FzIG5ldmVyIG1lYW50IHRvIGJlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXgg
MWE3YThlZmI3Y2QwZGM1YzYyYmY5NDFkMjM0Zjc5NjBkNWUwMTU0Ni4uMjQ3NmQyMDM2MmI5ZmZi
YjVmMmY4MGI2MzNhZWFhMTFlOGY1ODM2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApA
QCAtMTA5MCwxNCArMTA5MCwxNSBAQCB2b2lkIEZyYW1lVmlldzo6bGF5b3V0KGJvb2wgYWxsb3dT
dWJ0cmVlKQogCiAgICAgLy8gTm93IHVwZGF0ZSB0aGUgcG9zaXRpb25zIG9mIGFsbCBsYXllcnMu
CiAgICAgYmVnaW5EZWZlcnJlZFJlcGFpbnRzKCk7Ci0gICAgTGF5b3V0UG9pbnQgY2FjaGVkT2Zm
c2V0OworICAgIGJvb2wgY2FjaGVkT2Zmc2V0RGlzYWJsZWQ7CisgICAgTGF5b3V0UG9pbnQgY2Fj
aGVkT2Zmc2V0ID0gbGF5ZXItPmNvbXB1dGVPZmZzZXRGcm9tUm9vdChjYWNoZWRPZmZzZXREaXNh
YmxlZCk7CiAgICAgaWYgKG1fZG9GdWxsUmVwYWludCkKICAgICAgICAgcm9vdC0+dmlldygpLT5y
ZXBhaW50KCk7IC8vIEZJWE1FOiBUaGlzIGlzbid0IHJlYWxseSByaWdodCwgc2luY2UgdGhlIFJl
bmRlclZpZXcgZG9lc24ndCBmdWxseSBlbmNvbXBhc3MgdGhlIHZpc2libGVDb250ZW50UmVjdCgp
LiBJdCBqdXN0IGhhcHBlbnMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRv
IHdvcmsgb3V0IG1vc3Qgb2YgdGhlIHRpbWUsIHNpbmNlIGZpcnN0IGxheW91dHMgYW5kIHByaW50
aW5nIGRvbid0IGhhdmUgeW91IHNjcm9sbGVkIGFueXdoZXJlLgotICAgIGxheWVyLT51cGRhdGVM
YXllclBvc2l0aW9ucygobV9kb0Z1bGxSZXBhaW50ID8gMCA6IFJlbmRlckxheWVyOjpDaGVja0Zv
clJlcGFpbnQpCisgICAgbGF5ZXItPnVwZGF0ZUxheWVyUG9zaXRpb25zKGNhY2hlZE9mZnNldERp
c2FibGVkID8gMCA6ICZjYWNoZWRPZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIChtX2RvRnVsbFJlcGFpbnQgPyAwIDogUmVuZGVyTGF5ZXI6OkNoZWNrRm9yUmVwYWludCkK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBSZW5kZXJMYXllcjo6SXNDb21wb3Np
dGluZ1VwZGF0ZVJvb3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBSZW5kZXJM
YXllcjo6VXBkYXRlQ29tcG9zaXRpbmdMYXllcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN1YnRyZWUgPyAwIDogJmNhY2hlZE9mZnNldCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwgUmVuZGVyTGF5ZXI6OlVwZGF0ZUNvbXBvc2l0aW5nTGF5ZXJzKTsKICAg
ICBlbmREZWZlcnJlZFJlcGFpbnRzKCk7CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJ
TkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxP
YmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0
LmNwcAppbmRleCBhYTFjZTEyZTJmMjNhZGYwODNmNmI4MWQwMTU4MjI1YjAyNjYwMGI1Li42ZjMw
ZTM3MzgxZjEyOWQxMDY3YzBjM2QwYTFmMDE4NDE2ZDg5MTQxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKQEAgLTM1Niw3ICszNTYs
OSBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpzdHlsZURpZENoYW5nZShTdHlsZURpZmZl
cmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bAogICAgICAgICAgICAgbV9sYXllci0+aW5zZXJ0
T25seVRoaXNMYXllcigpOwogICAgICAgICAgICAgaWYgKHBhcmVudCgpICYmICFuZWVkc0xheW91
dCgpICYmIGNvbnRhaW5pbmdCbG9jaygpKSB7CiAgICAgICAgICAgICAgICAgbV9sYXllci0+c2V0
TmVlZHNGdWxsUmVwYWludCgpOwotICAgICAgICAgICAgICAgIG1fbGF5ZXItPnVwZGF0ZUxheWVy
UG9zaXRpb25zKCk7CisgICAgICAgICAgICAgICAgLy8gVGhlcmUgaXMgb25seSBvbmUgbGF5ZXIg
dG8gdXBkYXRlLCBpdCBpcyBub3Qgd29ydGggdXNpbmcgfGNhY2hlZE9mZnNldHwgc2luY2UKKyAg
ICAgICAgICAgICAgICAvLyB3ZSBhcmUgbm90IHN1cmUgdGhlIHZhbHVlIHdpbGwgYmUgdXNlZC4K
KyAgICAgICAgICAgICAgICBtX2xheWVyLT51cGRhdGVMYXllclBvc2l0aW9ucygwKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAobGF5ZXIoKSAmJiBsYXllcigpLT5w
YXJlbnQoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXgg
OGI2ZmQ0OTk5OTFmN2UwNWViOGUyZGU0NGFmY2RjNjM3YTIzZmMwZi4uYjBkMWI1NmIzMGYwODkw
ODY3NGQ5NDcwN2JjMjM1ZDQ0YjMwNzYzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXIuY3BwCkBAIC0yNTMsMTkgKzI1Myw0NiBAQCBib29sIFJlbmRlckxheWVyOjpjYW5S
ZW5kZXIzRFRyYW5zZm9ybXMoKSBjb25zdAogI2VuZGlmCiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXI6
OnVwZGF0ZUxheWVyUG9zaXRpb25zKFVwZGF0ZUxheWVyUG9zaXRpb25zRmxhZ3MgZmxhZ3MsIExh
eW91dFBvaW50KiBjYWNoZWRPZmZzZXQpCitMYXlvdXRQb2ludCBSZW5kZXJMYXllcjo6Y29tcHV0
ZU9mZnNldEZyb21Sb290KGJvb2wmIGNhY2hlZE9mZnNldERpc2FibGVkKSBjb25zdAogeworICAg
IGNhY2hlZE9mZnNldERpc2FibGVkID0gZmFsc2U7CisKKyAgICBpZiAoIXBhcmVudCgpKQorICAg
ICAgICByZXR1cm4gTGF5b3V0UG9pbnQoKTsKKworICAgIC8vIFRoaXMgaXMgc2ltaWxhciB0byBy
b290KCkgYnV0IHdlIGNoZWNrIGlmIGFuIGFuY2VzdG9yIGxheWVyIHdvdWxkCisgICAgLy8gcHJl
dmVudCB0aGUgb3B0aW1pemF0aW9uIGZyb20gd29ya2luZy4KKyAgICBjb25zdCBSZW5kZXJMYXll
ciogcm9vdExheWVyID0gMDsKKyAgICBmb3IgKGNvbnN0IFJlbmRlckxheWVyKiBwYXJlbnRMYXll
ciA9IHBhcmVudCgpOyBwYXJlbnRMYXllcjsgcm9vdExheWVyID0gcGFyZW50TGF5ZXIsIHBhcmVu
dExheWVyID0gcGFyZW50TGF5ZXItPnBhcmVudCgpKSB7CisgICAgICAgIGNhY2hlZE9mZnNldERp
c2FibGVkID0gcGFyZW50TGF5ZXItPmNvbnZlcnRUb0xheWVyQ29vcmRzSXNEaXNhYmxlZCgpOwor
ICAgICAgICBpZiAoY2FjaGVkT2Zmc2V0RGlzYWJsZWQpCisgICAgICAgICAgICByZXR1cm4gTGF5
b3V0UG9pbnQoKTsKKyAgICB9CisgICAgQVNTRVJUKHJvb3RMYXllciA9PSByb290KCkpOworCisg
ICAgTGF5b3V0UG9pbnQgb2Zmc2V0OworICAgIHBhcmVudCgpLT5jb252ZXJ0VG9MYXllckNvb3Jk
cyhyb290TGF5ZXIsIG9mZnNldCk7CisgICAgcmV0dXJuIG9mZnNldDsKK30KKwordm9pZCBSZW5k
ZXJMYXllcjo6dXBkYXRlTGF5ZXJQb3NpdGlvbnMoTGF5b3V0UG9pbnQqIGNhY2hlZE9mZnNldCwg
VXBkYXRlTGF5ZXJQb3NpdGlvbnNGbGFncyBmbGFncykKK3sKKyNpZm5kZWYgTkRFQlVHCisgICAg
aWYgKGNhY2hlZE9mZnNldCkgeworICAgICAgICBib29sIGNhY2hlZE9mZnNldERpc2FibGVkOwor
ICAgICAgICBMYXlvdXRQb2ludCBub25DYWNoZWRPZmZzZXQgPSBjb21wdXRlT2Zmc2V0RnJvbVJv
b3QoY2FjaGVkT2Zmc2V0RGlzYWJsZWQpOworICAgICAgICBBU1NFUlQoIWNhY2hlZE9mZnNldERp
c2FibGVkKTsKKyAgICAgICAgQVNTRVJUKCpjYWNoZWRPZmZzZXQgPT0gbm9uQ2FjaGVkT2Zmc2V0
KTsKKyAgICB9CisjZW5kaWYKKwogICAgIHVwZGF0ZUxheWVyUG9zaXRpb24oKTsgLy8gRm9yIHJl
bHBvc2l0aW9uZWQgbGF5ZXJzIG9yIG5vbi1wb3NpdGlvbmVkIGxheWVycywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIHdlIG5lZWQgdG8ga2VlcCBpbiBzeW5jLCBzaW5jZSB3ZSBtYXkg
aGF2ZSBzaGlmdGVkIHJlbGF0aXZlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0byBv
dXIgcGFyZW50IGxheWVyLgogICAgIExheW91dFBvaW50IG9sZENhY2hlZE9mZnNldDsKICAgICBp
ZiAoY2FjaGVkT2Zmc2V0KSB7CiAgICAgICAgIC8vIFdlIGNhbid0IGNhY2hlIG91ciBvZmZzZXQg
dG8gdGhlIHJlcGFpbnQgY29udGFpbmVyIGlmIHRoZSBtYXBwaW5nIGlzIGFueXRoaW5nIG1vcmUg
Y29tcGxleCB0aGFuIGEgc2ltcGxlIHRyYW5zbGF0aW9uCi0gICAgICAgIGJvb2wgZGlzYWJsZU9m
ZnNldENhY2hlID0gcmVuZGVyZXIoKS0+aGFzQ29sdW1ucygpIHx8IHJlbmRlcmVyKCktPmhhc1Ry
YW5zZm9ybSgpIHx8IGlzQ29tcG9zaXRlZCgpOwotI2lmIEVOQUJMRShTVkcpCi0gICAgICAgIGRp
c2FibGVPZmZzZXRDYWNoZSA9IGRpc2FibGVPZmZzZXRDYWNoZSB8fCByZW5kZXJlcigpLT5pc1NW
R1Jvb3QoKTsKLSNlbmRpZgotICAgICAgICBpZiAoZGlzYWJsZU9mZnNldENhY2hlKQorICAgICAg
ICBpZiAoY29udmVydFRvTGF5ZXJDb29yZHNJc0Rpc2FibGVkKCkpCiAgICAgICAgICAgICBjYWNo
ZWRPZmZzZXQgPSAwOyAvLyBJZiBvdXIgY2FjaGVkIG9mZnNldCBpcyBpbnZhbGlkIG1ha2Ugc3Vy
ZSBpdCdzIG5vdCBwYXNzZWQgdG8gYW55IG9mIG91ciBjaGlsZHJlbgogICAgICAgICBlbHNlIHsK
ICAgICAgICAgICAgIG9sZENhY2hlZE9mZnNldCA9ICpjYWNoZWRPZmZzZXQ7CkBAIC0yOTAsOCAr
MzE3LDExIEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZUxheWVyUG9zaXRpb25zKFVwZGF0ZUxh
eWVyUG9zaXRpb25zRmxhZ3MgZmxhZ3MsIExheW91dFBvCiAgICAgICAgIGNvbnZlcnRUb0xheWVy
Q29vcmRzKHJvb3QoKSwgbm9uQ2FjaGVkT2Zmc2V0KTsKICAgICAgICAgQVNTRVJUKG9mZnNldCA9
PSBub25DYWNoZWRPZmZzZXQpOwogI2VuZGlmCi0gICAgfSBlbHNlCisgICAgfSBlbHNlIHsKKyAg
ICAgICAgLy8gRklYTUU6IEl0IGxvb2tzIHN1c3BpY2lvdXMgdG8gY2FsbCBjb252ZXJ0VG9MYXll
ckNvb3JkcyBoZXJlCisgICAgICAgIC8vIGFzIGNvbnZlcnRUb0xheWVyQ29vcmRzSXNEaXNhYmxl
ZCBtYXkgYmUgdHJ1ZSBmb3IgYW4gYW5jZXN0b3IgbGF5ZXIuCiAgICAgICAgIGNvbnZlcnRUb0xh
eWVyQ29vcmRzKHJvb3QoKSwgb2Zmc2V0KTsKKyAgICB9CiAgICAgcG9zaXRpb25PdmVyZmxvd0Nv
bnRyb2xzKHRvU2l6ZShvZmZzZXQpKTsKIAogICAgIHVwZGF0ZVZpc2liaWxpdHlTdGF0dXMoKTsK
QEAgLTM0NCw3ICszNzQsNyBAQCB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVMYXllclBvc2l0aW9u
cyhVcGRhdGVMYXllclBvc2l0aW9uc0ZsYWdzIGZsYWdzLCBMYXlvdXRQbwogICAgICAgICBmbGFn
cyB8PSBVcGRhdGVQYWdpbmF0aW9uOwogCiAgICAgZm9yIChSZW5kZXJMYXllciogY2hpbGQgPSBm
aXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKQotICAgICAg
ICBjaGlsZC0+dXBkYXRlTGF5ZXJQb3NpdGlvbnMoZmxhZ3MsIGNhY2hlZE9mZnNldCk7CisgICAg
ICAgIGNoaWxkLT51cGRhdGVMYXllclBvc2l0aW9ucyhjYWNoZWRPZmZzZXQsIGZsYWdzKTsKIAog
I2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICBpZiAoKGZsYWdzICYgVXBkYXRl
Q29tcG9zaXRpbmdMYXllcnMpICYmIGlzQ29tcG9zaXRlZCgpKQpAQCAtMTEwMSw2ICsxMTMxLDgg
QEAgdm9pZCBSZW5kZXJMYXllcjo6cmVtb3ZlT25seVRoaXNMYXllcigpCiAgICAgLy8gUmVtb3Zl
IHVzIGZyb20gdGhlIHBhcmVudC4KICAgICBSZW5kZXJMYXllciogcGFyZW50ID0gbV9wYXJlbnQ7
CiAgICAgUmVuZGVyTGF5ZXIqIG5leHRTaWIgPSBuZXh0U2libGluZygpOworICAgIGJvb2wgY2Fj
aGVkT2Zmc2V0RGlzYWJsZWQ7CisgICAgY29uc3QgTGF5b3V0UG9pbnQgY2FjaGVkT2Zmc2V0QmVm
b3JlTW92ZSA9IGNvbXB1dGVPZmZzZXRGcm9tUm9vdChjYWNoZWRPZmZzZXREaXNhYmxlZCk7CiAg
ICAgcGFyZW50LT5yZW1vdmVDaGlsZCh0aGlzKTsKICAgICAKICAgICBpZiAocmVmbGVjdGlvbigp
KQpAQCAtMTExMyw3ICsxMTQ1LDkgQEAgdm9pZCBSZW5kZXJMYXllcjo6cmVtb3ZlT25seVRoaXNM
YXllcigpCiAgICAgICAgIHJlbW92ZUNoaWxkKGN1cnJlbnQpOwogICAgICAgICBwYXJlbnQtPmFk
ZENoaWxkKGN1cnJlbnQsIG5leHRTaWIpOwogICAgICAgICBjdXJyZW50LT5zZXROZWVkc0Z1bGxS
ZXBhaW50KCk7Ci0gICAgICAgIGN1cnJlbnQtPnVwZGF0ZUxheWVyUG9zaXRpb25zKCk7IC8vIERl
cGVuZHMgb24gaGFzTGF5ZXIoKSBhbHJlYWR5IGJlaW5nIGZhbHNlIGZvciBwcm9wZXIgbGF5b3V0
LgorICAgICAgICBMYXlvdXRQb2ludCBjYWNoZWRPZmZzZXQgPSBjYWNoZWRPZmZzZXRCZWZvcmVN
b3ZlOworICAgICAgICAvLyB1cGRhdGVMYXllclBvc2l0aW9ucyBkZXBlbmRzIG9uIGhhc0xheWVy
KCkgYWxyZWFkeSBiZWluZyBmYWxzZSBmb3IgcHJvcGVyIGxheW91dC4KKyAgICAgICAgY3VycmVu
dC0+dXBkYXRlTGF5ZXJQb3NpdGlvbnMoY2FjaGVkT2Zmc2V0RGlzYWJsZWQgPyAwIDogJmNhY2hl
ZE9mZnNldCk7CiAgICAgICAgIGN1cnJlbnQgPSBuZXh0OwogICAgIH0KIApAQCAtMjc5OSw2ICsy
ODMzLDggQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRDaGlsZExheWVySW50b0NvbHVtbnMoUmVu
ZGVyTGF5ZXIqIGNoaWxkTGF5ZXIsIFJlbmRlckxheWUKICAgICAgICAgcmV0dXJuOwogICAgIAog
ICAgIExheW91dFBvaW50IGxheWVyT2Zmc2V0OworICAgIC8vIEZJWE1FOiBJdCBsb29rcyBzdXNw
aWNpb3VzIHRvIGNhbGwgY29udmVydFRvTGF5ZXJDb29yZHMgaGVyZQorICAgIC8vIGFzIGNvbnZl
cnRUb0xheWVyQ29vcmRzSXNEaXNhYmxlZCBpcyB0cnVlIGZvciB0aGlzIGxheWVyLgogICAgIGNv
bHVtbkJsb2NrLT5sYXllcigpLT5jb252ZXJ0VG9MYXllckNvb3Jkcyhyb290TGF5ZXIsIGxheWVy
T2Zmc2V0KTsKICAgICAKICAgICBib29sIGlzSG9yaXpvbnRhbCA9IGNvbHVtbkJsb2NrLT5zdHls
ZSgpLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXIuaAppbmRleCAxYWI4OTA5YWNlOTJjMzEwZGMwZmM4MThhYjkyZTQ1ZDBhZDI1ZDBj
Li5hYTIzZjc0OTdlNzRmMzhhZWZjMzdkMzdmZjBlN2M2YTZhZWY4NThhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaApAQCAtMzA4LDcgKzMwOCwxMCBAQCBwdWJsaWM6CiAg
ICAgICAgIFVwZGF0ZVBhZ2luYXRpb24gPSAxIDw8IDMKICAgICB9OwogICAgIHR5cGVkZWYgdW5z
aWduZWQgVXBkYXRlTGF5ZXJQb3NpdGlvbnNGbGFnczsKLSAgICB2b2lkIHVwZGF0ZUxheWVyUG9z
aXRpb25zKFVwZGF0ZUxheWVyUG9zaXRpb25zRmxhZ3MgPSBDaGVja0ZvclJlcGFpbnQgfCBJc0Nv
bXBvc2l0aW5nVXBkYXRlUm9vdCB8IFVwZGF0ZUNvbXBvc2l0aW5nTGF5ZXJzLCBMYXlvdXRQb2lu
dCogY2FjaGVkT2Zmc2V0ID0gMCk7CisgICAgc3RhdGljIGNvbnN0IFVwZGF0ZUxheWVyUG9zaXRp
b25zRmxhZ3MgZGVmYXVsdEZsYWdzID0gQ2hlY2tGb3JSZXBhaW50IHwgSXNDb21wb3NpdGluZ1Vw
ZGF0ZVJvb3QgfCBVcGRhdGVDb21wb3NpdGluZ0xheWVyczsKKyAgICAvLyBQcm92aWRpbmcgfGNh
Y2hlZE9mZnNldHwgcHJldmVudHMgYSBvdXRsaW5lQm94Rm9yUmVwYWludCBmcm9tIHdhbGtpbmcg
YmFjayB0byB0aGUgcm9vdCBmb3IgZWFjaCBsYXllciBpbiBvdXIgc3VidHJlZS4KKyAgICAvLyBU
aGlzIGlzIGFuIG9wdGltaXN0aWMgb3B0aW1pemF0aW9uIHRoYXQgaXMgbm90IGd1YXJhbnRlZWQg
dG8gc3VjY2VlZC4KKyAgICB2b2lkIHVwZGF0ZUxheWVyUG9zaXRpb25zKExheW91dFBvaW50KiBj
YWNoZWRPZmZzZXQsIFVwZGF0ZUxheWVyUG9zaXRpb25zRmxhZ3MgPSBkZWZhdWx0RmxhZ3MpOwog
CiAgICAgdm9pZCB1cGRhdGVUcmFuc2Zvcm0oKTsKIApAQCAtNDAxLDYgKzQwNCw5IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgdXBkYXRlSG92ZXJBY3RpdmVTdGF0ZShjb25zdCBIaXRUZXN0UmVxdWVz
dCYsIEhpdFRlc3RSZXN1bHQmKTsKIAorICAgIC8vIFdBUk5JTkc6IFRoaXMgbWV0aG9kIHJldHVy
bnMgdGhlIG9mZnNldCBmb3IgdGhlIHBhcmVudCBhcyB0aGlzIGlzIHdoYXQgdXBkYXRlTGF5ZXJQ
b3NpdGlvbnMgZXhwZWN0cy4KKyAgICBMYXlvdXRQb2ludCBjb21wdXRlT2Zmc2V0RnJvbVJvb3Qo
Ym9vbCYgY2FjaGVkT2Zmc2V0RGlzYWJsZWQpIGNvbnN0OworCiAgICAgLy8gUmV0dXJuIGEgY2Fj
aGVkIHJlcGFpbnQgcmVjdCwgY29tcHV0ZWQgcmVsYXRpdmUgdG8gdGhlIGxheWVyIHJlbmRlcmVy
J3MgY29udGFpbmVyRm9yUmVwYWludC4KICAgICBMYXlvdXRSZWN0IHJlcGFpbnRSZWN0KCkgY29u
c3QgeyByZXR1cm4gbV9yZXBhaW50UmVjdDsgfQogICAgIExheW91dFJlY3QgcmVwYWludFJlY3RJ
bmNsdWRpbmdEZXNjZW5kYW50cygpIGNvbnN0OwpAQCAtNjI4LDYgKzYzNCwxNSBAQCBwcml2YXRl
OgogICAgIExheW91dFVuaXQgb3ZlcmZsb3dMZWZ0KCkgY29uc3Q7CiAgICAgTGF5b3V0VW5pdCBv
dmVyZmxvd1JpZ2h0KCkgY29uc3Q7CiAKKyAgICBib29sIGNvbnZlcnRUb0xheWVyQ29vcmRzSXNE
aXNhYmxlZCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gcmVuZGVyZXIoKS0+aGFzQ29s
dW1ucygpIHx8IHJlbmRlcmVyKCktPmhhc1RyYW5zZm9ybSgpIHx8IGlzQ29tcG9zaXRlZCgpCisj
aWYgRU5BQkxFKFNWRykKKyAgICAgICAgICAgIHx8IHJlbmRlcmVyKCktPmlzU1ZHUm9vdCgpCisj
ZW5kaWYKKyAgICAgICAgICAgIDsKKyAgICB9CisKIHByb3RlY3RlZDoKICAgICBSZW5kZXJCb3hN
b2RlbE9iamVjdCogbV9yZW5kZXJlcjsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106217</attachid>
            <date>2011-09-02 16:16:01 -0700</date>
            <delta_ts>2011-09-02 17:06:52 -0700</delta_ts>
            <desc>Version 6: Addressing Simon&apos;s latest comments.</desc>
            <filename>bug-66901-20110902161600.patch</filename>
            <type>text/plain</type>
            <size>17127</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTQ0NTAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA5OGNjMjkxOGM0OTVlOGNiZTA4ZGMy
YjI4MWUwMjMxMzE3OTU1MDg3Li41ZDM4M2Q0Y2Q3MGM0NzQ4ZWMwNzJjNTJlNGNjZjEyMDgzMDNk
YTgxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDktMDIgIEp1bGllbiBDaGFmZnJhaXgg
IDxqY2hhZmZyYWl4QHdlYmtpdC5vcmc+CisKKyAgICAgICAgRW5hYmxlIFJlbmRlckxheWVyOjp1
cGRhdGVMYXllclBvc2l0aW9uJ3MgY2FjaGVkT2Zmc2V0IG9wdGltaXphdGlvbiBmb3IgbW9yZSBj
YXNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjY5
MDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZh
c3QvbGF5ZXJzL2NyYXNoLVJlbmRlckxheWVyLXVwZGF0ZS1wb3NpdGlvbnMtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2xheWVycy9jcmFzaC1SZW5kZXJMYXllci11cGRhdGUt
cG9zaXRpb25zLmh0bWw6IEFkZGVkLgorICAgICAgICBUZXN0IHRoYXQgc29tZSBjaGFuZ2VzIGlu
IHRoZSBsYXllcnMgZG9lcyBub3QgY2F1c2UgYW4gQVNTRVJUIGZhaWx1cmUuCisKIDIwMTEtMDkt
MDIgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgU29tZSBtZWRp
YSBsYXlvdXQgdGVzdHMgZmFpbCBiZWNhdXNlIG9mIGFtYmlndW91cyBvcmRlcmluZyBvZiBjYW5w
bGF5dGhvdWdoIGV2ZW50LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9sYXllcnMvYXNz
ZXJ0LVJlbmRlckxheWVyLXVwZGF0ZS1wb3NpdGlvbnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvZmFzdC9sYXllcnMvYXNzZXJ0LVJlbmRlckxheWVyLXVwZGF0ZS1wb3NpdGlvbnMtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjdjYmM1ZGM0N2QxNTkxOTQ0ZDVmOGU1Y2VjMGVjMDMxMGMyMTA4
NWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2xheWVycy9hc3NlcnQtUmVu
ZGVyTGF5ZXItdXBkYXRlLXBvc2l0aW9ucy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSBAQAorVGVz
dCBmb3IgYnVnIDY2OTAxLiBUaGUgdGVzdCBwYXNzZXMgaWYgaXQgZG9lcyBub3QgQVNTRVJULgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9sYXllcnMvYXNzZXJ0LVJlbmRlckxheWVyLXVw
ZGF0ZS1wb3NpdGlvbnMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbGF5ZXJzL2Fzc2VydC1SZW5k
ZXJMYXllci11cGRhdGUtcG9zaXRpb25zLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjJkMWYwYjc0MTllYzY1
YzAxMjdhODk1YTc3YjJhN2YzNWZjMDA2NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvbGF5ZXJzL2Fzc2VydC1SZW5kZXJMYXllci11cGRhdGUtcG9zaXRpb25zLmh0bWwKQEAg
LTAsMCArMSw0NSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzdHls
ZT4KKyAgICAgICAgLm5vLWpzIHsKKyAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAg
ICAgICAgfQorCisgICAgICAgIC5uby1qcyBoMyB7CisgICAgICAgICAgICBwb3NpdGlvbjogYWJz
b2x1dGU7CisgICAgICAgIH0KKyAgICA8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2Pgor
ICAgIDxkaXY+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZSI+CisgICAg
ICAgICAgICA8ZGl2IGlkPSJhc3NlcnRUcmlnZ2VyIiBjbGFzcz0ibm8tanMiPgorICAgICAgICAg
ICAgICAgIDxkaXY+CisgICAgICAgICAgICAgICAgICAgIDxkaXY+CisgICAgICAgICAgICAgICAg
ICAgICAgICA8aDM+VGVzdCBmb3IgYnVnIDY2OTAxLiBUaGUgdGVzdCBwYXNzZXMgaWYgaXQgZG9l
cyBub3QgPHNwYW4+QVNTRVJULjwvc3Bhbj48L2gzPgorICAgICAgICAgICAgICAgICAgICA8L2Rp
dj4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgICAgICA8c2NyaXB0PgorICAg
ICAgICAgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25l
KCk7CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICBmdW5jdGlv
biBhc3NlcnQoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZGltZW5zaW9uc0NvbnRh
aW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhc3NlcnRUcmlnZ2VyIik7CisgICAgICAg
ICAgICAgICAgICAgICAgICBkaW1lbnNpb25zQ29udGFpbmVyLnNldEF0dHJpYnV0ZSgiY2xhc3Mi
LCAiIik7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
Lm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAg
ICAgIC8vIEFzeW5jaHJvbm91c2x5IGNoYW5nZSB0aGUgc3R5bGUgdG8gZm9yY2UgYSBzdHlsZSBy
ZWNhbGMgbGF0ZXIuCisgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGFzc2Vy
dCwgMCk7CisgICAgICAgICAgICAgICAgPC9zY3JpcHQ+CisgICAgICAgICAgICA8L2Rpdj4KKyAg
ICAgICAgPC9kaXY+CisgICAgPC9kaXY+Cis8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCA5YmJmODkyNzFjOTBjZGUxY2JmOGIwOTNhYmRiYWUyODBlYzg3MjA4Li5mZjZkYzEz
YWRmZDNlODE4YzEyZTM1YzU0Zjc5Y2I0MDNkY2Q0NDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NTUgQEAKKzIwMTEtMDktMDIgIEp1bGllbiBDaGFmZnJhaXggIDxqY2hhZmZyYWl4QHdlYmtpdC5v
cmc+CisKKyAgICAgICAgRW5hYmxlIFJlbmRlckxheWVyOjp1cGRhdGVMYXllclBvc2l0aW9uJ3Mg
Y2FjaGVkT2Zmc2V0IG9wdGltaXphdGlvbiBmb3IgbW9yZSBjYXNlcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjY5MDEKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBmYXN0L2xheWVycy9hc3NlcnQt
UmVuZGVyTGF5ZXItdXBkYXRlLXBvc2l0aW9ucy5odG1sCisgICAgICAgICAgICAgIEFsc28gY292
ZXJlZCBieSBleGlzdGluZyB0ZXN0cyB1bmRlciB0aGUgbmV3IEFTU0VSVC4KKworICAgICAgICBU
aGlzIGNoYW5nZSBleHRlbmRzIHRoZSByYW5nZSBvZiBjYWxsZXJzIG1ha2luZyB1c2Ugb2YgdGhl
IGNhY2hlZE9mZnNldCBvcHRpbWl6YXRpb24uCisKKyAgICAgICAgTW9zdCBjYWxsZXJzIGRpZCBu
b3QgbWFrZSB1c2Ugb2YgY2FjaGVkT2Zmc2V0IGFzIGl0IGRpZCBub3Qgd29yayB3aGVuIGNhbGxl
ZCBvbiBhIHN1YnRyZWUuCisgICAgICAgIFRoaXMgbGltaXRhdGlvbiBpcyBub3cgZ29uZSB0aHVz
IHdlIGNhbiBlbmFibGUgaXQgbW9yZSB3aWRlbHkuCisKKyAgICAgICAgVGhlIHNlbWFudGljcyBv
ZiB0aGUgb3B0aW1pemF0aW9uIGFyZSBjaGFuZ2VkIGEgYml0IGFzIHdlIG5vdyByZXR1cm4gaWYg
aXQgaXMgZW5hYmxlZCB3aGVyZWFzCisgICAgICAgIHRoZSBvbGQgY29kZSB3b3VsZCBjaGVjayBp
ZiBpdCB3YXMgKmRpc2FibGVkKi4gQWxzbyB0aGVyZSB3ZXJlIHNvbWUgcmVuYW1lcyBkb25lIHRv
IG1hdGNoIG1vcmUKKyAgICAgICAgY2xvc2VseSB3aGF0IHdhcyBnb2luZyBvbiAocy9jYWNoZWRP
ZmZzZXQvb2Zmc2V0RnJvbVJvb3QvIGFuZCBzL2NhY2hlZE9mZnNldERpc2FibGVkL2hhc0xheWVy
T2Zmc2V0LykuCisKKyAgICAgICAgTm90ZSB0aGF0IHRoaXMgaXMgYW4gb3B0aW1pc3RpYyBvcHRp
bWl6YXRpb246IGlmIGNhY2hlZE9mZnNldCBpcyBub3QgdXNlZCwgdGhlbiB3ZSBoYXZlCisgICAg
ICAgIGRvbmUgYXQgbGVhc3QgYW4gZXh0cmEgdHJhdmVyc2FsIHVwIHRvIHRoZSByb290LiBJIGhh
dmUgZm91bmQgaXQgdG8gYmUgYSB3YXNoIG9uIGZpbGUKKyAgICAgICAgY3ljbGVyIChhbGV4YSkg
YnV0IHRvIGJlIGEgbmljZSBpbXByb3ZlbWVudCAofjIwJSkgb24gc29tZSB0YWJsZSBiZW5jaG1h
cmtzIChtb2RpZnlpbmcKKyAgICAgICAgYSBjZWxsLCBzY3JvbGxpbmcpLgorCisgICAgICAgICog
cGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpsYXlvdXQp
OiBFeHRlbmRlZCB0aGUgdXNlIG9mIGNhY2hlZE9mZnNldCB0byBzdWJ0cmVlIGxheW91dHMuCisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpzdHlsZURpZENoYW5nZSk6IEZvcmJpZCB0aGUg
dXNlIGNhY2hlZE9mZnNldCBpbiB0aGlzCisgICAgICAgIGNhc2UgYXMgd2UgaGF2ZSBvbmx5IGEg
c2luZ2xlIGxheWVyIHRvIHVwZGF0ZS4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXll
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6Y29tcHV0ZU9mZnNldEZyb21S
b290KTogQWRkZWQgdGhpcyBmdW5jdGlvbiB0byBnZXQgdGhlIG9mZnNldCBmcm9tIHRoZSByb290
CisgICAgICAgIGxheWVyIGF0IGEgY2VydGFpbiBwb2ludCBpbiB0aGUgUmVuZGVyTGF5ZXIncyB0
cmVlLiBJdCBnZXRzIHRoZSByb290IGxheWVyJ3MgY2hlY2tpbmcgaWYgbm8gbGF5ZXIKKyAgICAg
ICAgaW4gYmV0d2VlbiB3b3VsZCBwcmV2ZW50IGNvbnZlcnRUb0xheWVyQ29vcmRzIHRvIHdvcmsg
YW5kIHJldHVybiB0aGUgcG9zaXRpb24gcmVsYXRpdmUgdG8KKyAgICAgICAgdGhpcyBsYXllci4K
KworICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnVwZGF0ZUxheWVyUG9zaXRpb25zKTog
QWRkZWQgYSBuZXcgQVNTRVJUIHRvIG1ha2Ugc3VyZSBvdXIgY2FjaGVkT2Zmc2V0CisgICAgICAg
IGlzIGFsd2F5cyBmaW5lLiBBbHNvIGFkZGVkIGEgY29tbWVudCBhYm91dCBjYWxsaW5nIGNvbnZl
cnRUb0xheWVyQ29vcmRzLgorCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cmVtb3Zl
T25seVRoaXNMYXllcik6IEFkZGVkIGNhY2hlZE9mZnNldCBoZXJlIHRvbyBhcyB3ZSBtYXkgaGF2
ZSB0bworICAgICAgICB1cGRhdGUgc2V2ZXJhbCBsYXllcnMuIFdlIHNhdmUgdGhlIG9mZnNldCBw
cmlvciB0byBiZWluZyByZW1vdmVkIGZyb20gdGhlIGhpZXJhcmNoeSBmb3IKKyAgICAgICAgY29y
cmVjdG5lc3MuCisKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWludENoaWxkTGF5
ZXJJbnRvQ29sdW1ucyk6IEFkZGVkIGEgY29tbWVudCBoZXJlIGFib3V0IGNhbGxpbmcgY29udmVy
dFRvTGF5ZXJDb29yZHMuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaDogU3dh
cHBlZCB0aGUgYXJndW1lbnQgaW4gdXBkYXRlTGF5ZXJQb3NpdGlvbnMgdG8gbWFrZQorICAgICAg
ICBjYWNoZWRPZmZzZXQgYSBtYW5kYXRvcnkgZmllbGQuIFBhdGNoZWQgYWxsIHRoZSBjYWxsZXJz
LgorCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6Y2FuVXNlQ29udmVydFRvTGF5ZXJD
b29yZHMpOiBBZGRlZCB0aGlzIGhlbHBlciBtZXRob2QgdG8ga25vdyB3aGVuIGEKKyAgICAgICAg
cmVuZGVyZXIgcHJldmVudHMgY29udmVydFRvTGF5ZXJDb29yZHMgZnJvbSB3b3JraW5nLiBBZGRl
ZCBzb21lIEZJWE1FIGFyb3VuZCBzdXNwaWNpb3VzIHVzZQorICAgICAgICBvZiBjb252ZXJ0VG9M
YXllckNvb3Jkcy4KKwogMjAxMS0wOS0wMiAgTmF0IER1Y2EgIDxuZHVjYUBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgW2Nocm9taXVtXSBDaGVjayBmb3IgbnVsbCBjb250ZXh0IHdoZW4gcmVpbml0
aWFsaXppbmcgY29tcG9zaXRvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IDFhN2E4
ZWZiN2NkMGRjNWM2MmJmOTQxZDIzNGY3OTYwZDVlMDE1NDYuLjRkYjlmYTliZmQ2MDIwODJiNTU3
YjgyZTkxNTkyZDYzZDE1MDc5NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTEw
OTAsMTQgKzEwOTAsMTUgQEAgdm9pZCBGcmFtZVZpZXc6OmxheW91dChib29sIGFsbG93U3VidHJl
ZSkKIAogICAgIC8vIE5vdyB1cGRhdGUgdGhlIHBvc2l0aW9ucyBvZiBhbGwgbGF5ZXJzLgogICAg
IGJlZ2luRGVmZXJyZWRSZXBhaW50cygpOwotICAgIExheW91dFBvaW50IGNhY2hlZE9mZnNldDsK
KyAgICBib29sIGhhc0xheWVyT2Zmc2V0OworICAgIExheW91dFBvaW50IG9mZnNldEZyb21Sb290
ID0gbGF5ZXItPmNvbXB1dGVPZmZzZXRGcm9tUm9vdChoYXNMYXllck9mZnNldCk7CiAgICAgaWYg
KG1fZG9GdWxsUmVwYWludCkKICAgICAgICAgcm9vdC0+dmlldygpLT5yZXBhaW50KCk7IC8vIEZJ
WE1FOiBUaGlzIGlzbid0IHJlYWxseSByaWdodCwgc2luY2UgdGhlIFJlbmRlclZpZXcgZG9lc24n
dCBmdWxseSBlbmNvbXBhc3MgdGhlIHZpc2libGVDb250ZW50UmVjdCgpLiBJdCBqdXN0IGhhcHBl
bnMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvIHdvcmsgb3V0IG1vc3Qg
b2YgdGhlIHRpbWUsIHNpbmNlIGZpcnN0IGxheW91dHMgYW5kIHByaW50aW5nIGRvbid0IGhhdmUg
eW91IHNjcm9sbGVkIGFueXdoZXJlLgotICAgIGxheWVyLT51cGRhdGVMYXllclBvc2l0aW9ucygo
bV9kb0Z1bGxSZXBhaW50ID8gMCA6IFJlbmRlckxheWVyOjpDaGVja0ZvclJlcGFpbnQpCisgICAg
bGF5ZXItPnVwZGF0ZUxheWVyUG9zaXRpb25zKGhhc0xheWVyT2Zmc2V0ID8gJm9mZnNldEZyb21S
b290IDogMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1fZG9GdWxsUmVwYWlu
dCA/IDAgOiBSZW5kZXJMYXllcjo6Q2hlY2tGb3JSZXBhaW50KQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8IFJlbmRlckxheWVyOjpJc0NvbXBvc2l0aW5nVXBkYXRlUm9vdAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFJlbmRlckxheWVyOjpVcGRhdGVDb21wb3Np
dGluZ0xheWVycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VidHJlZSA/IDAg
OiAmY2FjaGVkT2Zmc2V0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBSZW5k
ZXJMYXllcjo6VXBkYXRlQ29tcG9zaXRpbmdMYXllcnMpOwogICAgIGVuZERlZmVycmVkUmVwYWlu
dHMoKTsKIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCmluZGV4IGFhMWNlMTJl
MmYyM2FkZjA4M2Y2YjgxZDAxNTgyMjViMDI2NjAwYjUuLjZmMzBlMzczODFmMTI5ZDEwNjdjMGMz
ZDBhMWYwMTg0MTZkODkxNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveE1vZGVsT2JqZWN0LmNwcApAQCAtMzU2LDcgKzM1Niw5IEBAIHZvaWQgUmVuZGVyQm94
TW9kZWxPYmplY3Q6OnN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBS
ZW5kZXJTdHlsCiAgICAgICAgICAgICBtX2xheWVyLT5pbnNlcnRPbmx5VGhpc0xheWVyKCk7CiAg
ICAgICAgICAgICBpZiAocGFyZW50KCkgJiYgIW5lZWRzTGF5b3V0KCkgJiYgY29udGFpbmluZ0Js
b2NrKCkpIHsKICAgICAgICAgICAgICAgICBtX2xheWVyLT5zZXROZWVkc0Z1bGxSZXBhaW50KCk7
Ci0gICAgICAgICAgICAgICAgbV9sYXllci0+dXBkYXRlTGF5ZXJQb3NpdGlvbnMoKTsKKyAgICAg
ICAgICAgICAgICAvLyBUaGVyZSBpcyBvbmx5IG9uZSBsYXllciB0byB1cGRhdGUsIGl0IGlzIG5v
dCB3b3J0aCB1c2luZyB8Y2FjaGVkT2Zmc2V0fCBzaW5jZQorICAgICAgICAgICAgICAgIC8vIHdl
IGFyZSBub3Qgc3VyZSB0aGUgdmFsdWUgd2lsbCBiZSB1c2VkLgorICAgICAgICAgICAgICAgIG1f
bGF5ZXItPnVwZGF0ZUxheWVyUG9zaXRpb25zKDApOwogICAgICAgICAgICAgfQogICAgICAgICB9
CiAgICAgfSBlbHNlIGlmIChsYXllcigpICYmIGxheWVyKCktPnBhcmVudCgpKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCA4YjZmZDQ5OTk5MWY3ZTA1ZWI4
ZTJkZTQ0YWZjZGM2MzdhMjNmYzBmLi45ZTA0MTQ2OTBhOTRkY2FhZDA2Y2RmYTc3MjFjZjgwNTEw
ZjhjNjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTI1
Myw0NSArMjUzLDc1IEBAIGJvb2wgUmVuZGVyTGF5ZXI6OmNhblJlbmRlcjNEVHJhbnNmb3Jtcygp
IGNvbnN0CiAjZW5kaWYKIH0KIAotdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlTGF5ZXJQb3NpdGlv
bnMoVXBkYXRlTGF5ZXJQb3NpdGlvbnNGbGFncyBmbGFncywgTGF5b3V0UG9pbnQqIGNhY2hlZE9m
ZnNldCkKK0xheW91dFBvaW50IFJlbmRlckxheWVyOjpjb21wdXRlT2Zmc2V0RnJvbVJvb3QoYm9v
bCYgaGFzTGF5ZXJPZmZzZXQpIGNvbnN0CiB7CisgICAgaGFzTGF5ZXJPZmZzZXQgPSB0cnVlOwor
CisgICAgaWYgKCFwYXJlbnQoKSkKKyAgICAgICAgcmV0dXJuIExheW91dFBvaW50KCk7CisKKyAg
ICAvLyBUaGlzIGlzIHNpbWlsYXIgdG8gcm9vdCgpIGJ1dCB3ZSBjaGVjayBpZiBhbiBhbmNlc3Rv
ciBsYXllciB3b3VsZAorICAgIC8vIHByZXZlbnQgdGhlIG9wdGltaXphdGlvbiBmcm9tIHdvcmtp
bmcuCisgICAgY29uc3QgUmVuZGVyTGF5ZXIqIHJvb3RMYXllciA9IDA7CisgICAgZm9yIChjb25z
dCBSZW5kZXJMYXllciogcGFyZW50TGF5ZXIgPSBwYXJlbnQoKTsgcGFyZW50TGF5ZXI7IHJvb3RM
YXllciA9IHBhcmVudExheWVyLCBwYXJlbnRMYXllciA9IHBhcmVudExheWVyLT5wYXJlbnQoKSkg
eworICAgICAgICBoYXNMYXllck9mZnNldCA9IHBhcmVudExheWVyLT5jYW5Vc2VDb252ZXJ0VG9M
YXllckNvb3JkcygpOworICAgICAgICBpZiAoIWhhc0xheWVyT2Zmc2V0KQorICAgICAgICAgICAg
cmV0dXJuIExheW91dFBvaW50KCk7CisgICAgfQorICAgIEFTU0VSVChyb290TGF5ZXIgPT0gcm9v
dCgpKTsKKworICAgIExheW91dFBvaW50IG9mZnNldDsKKyAgICBwYXJlbnQoKS0+Y29udmVydFRv
TGF5ZXJDb29yZHMocm9vdExheWVyLCBvZmZzZXQpOworICAgIHJldHVybiBvZmZzZXQ7Cit9CisK
K3ZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZUxheWVyUG9zaXRpb25zKExheW91dFBvaW50KiBvZmZz
ZXRGcm9tUm9vdCwgVXBkYXRlTGF5ZXJQb3NpdGlvbnNGbGFncyBmbGFncykKK3sKKyNpZm5kZWYg
TkRFQlVHCisgICAgaWYgKG9mZnNldEZyb21Sb290KSB7CisgICAgICAgIGJvb2wgaGFzTGF5ZXJP
ZmZzZXQ7CisgICAgICAgIExheW91dFBvaW50IGNvbXB1dGVkT2Zmc2V0RnJvbVJvb3QgPSBjb21w
dXRlT2Zmc2V0RnJvbVJvb3QoaGFzTGF5ZXJPZmZzZXQpOworICAgICAgICBBU1NFUlQoaGFzTGF5
ZXJPZmZzZXQpOworICAgICAgICBBU1NFUlQoKm9mZnNldEZyb21Sb290ID09IGNvbXB1dGVkT2Zm
c2V0RnJvbVJvb3QpOworICAgIH0KKyNlbmRpZgorCiAgICAgdXBkYXRlTGF5ZXJQb3NpdGlvbigp
OyAvLyBGb3IgcmVscG9zaXRpb25lZCBsYXllcnMgb3Igbm9uLXBvc2l0aW9uZWQgbGF5ZXJzLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2UgbmVlZCB0byBrZWVwIGluIHN5bmMsIHNp
bmNlIHdlIG1heSBoYXZlIHNoaWZ0ZWQgcmVsYXRpdmUKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIHRvIG91ciBwYXJlbnQgbGF5ZXIuCi0gICAgTGF5b3V0UG9pbnQgb2xkQ2FjaGVkT2Zm
c2V0OwotICAgIGlmIChjYWNoZWRPZmZzZXQpIHsKKyAgICBMYXlvdXRQb2ludCBvbGRPZmZzZXRG
cm9tUm9vdDsKKyAgICBpZiAob2Zmc2V0RnJvbVJvb3QpIHsKICAgICAgICAgLy8gV2UgY2FuJ3Qg
Y2FjaGUgb3VyIG9mZnNldCB0byB0aGUgcmVwYWludCBjb250YWluZXIgaWYgdGhlIG1hcHBpbmcg
aXMgYW55dGhpbmcgbW9yZSBjb21wbGV4IHRoYW4gYSBzaW1wbGUgdHJhbnNsYXRpb24KLSAgICAg
ICAgYm9vbCBkaXNhYmxlT2Zmc2V0Q2FjaGUgPSByZW5kZXJlcigpLT5oYXNDb2x1bW5zKCkgfHwg
cmVuZGVyZXIoKS0+aGFzVHJhbnNmb3JtKCkgfHwgaXNDb21wb3NpdGVkKCk7Ci0jaWYgRU5BQkxF
KFNWRykKLSAgICAgICAgZGlzYWJsZU9mZnNldENhY2hlID0gZGlzYWJsZU9mZnNldENhY2hlIHx8
IHJlbmRlcmVyKCktPmlzU1ZHUm9vdCgpOwotI2VuZGlmCi0gICAgICAgIGlmIChkaXNhYmxlT2Zm
c2V0Q2FjaGUpCi0gICAgICAgICAgICBjYWNoZWRPZmZzZXQgPSAwOyAvLyBJZiBvdXIgY2FjaGVk
IG9mZnNldCBpcyBpbnZhbGlkIG1ha2Ugc3VyZSBpdCdzIG5vdCBwYXNzZWQgdG8gYW55IG9mIG91
ciBjaGlsZHJlbgorICAgICAgICBpZiAoIWNhblVzZUNvbnZlcnRUb0xheWVyQ29vcmRzKCkpCisg
ICAgICAgICAgICBvZmZzZXRGcm9tUm9vdCA9IDA7IC8vIElmIG91ciBjYWNoZWQgb2Zmc2V0IGlz
IGludmFsaWQgbWFrZSBzdXJlIGl0J3Mgbm90IHBhc3NlZCB0byBhbnkgb2Ygb3VyIGNoaWxkcmVu
CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgb2xkQ2FjaGVkT2Zmc2V0ID0gKmNhY2hlZE9m
ZnNldDsKKyAgICAgICAgICAgIG9sZE9mZnNldEZyb21Sb290ID0gKm9mZnNldEZyb21Sb290Owog
ICAgICAgICAgICAgLy8gRnJlcXVlbnRseSBvdXIgcGFyZW50IGxheWVyJ3MgcmVuZGVyZXIgd2ls
bCBiZSB0aGUgc2FtZSBhcyBvdXIgcmVuZGVyZXIncyBjb250YWluaW5nIGJsb2NrLiAgSW4gdGhh
dCBjYXNlLAogICAgICAgICAgICAgLy8gd2UganVzdCB1cGRhdGUgdGhlIGNhY2hlIHVzaW5nIG91
ciBvZmZzZXQgdG8gb3VyIHBhcmVudCAod2hpY2ggaXMgbV90b3BMZWZ0KS4gT3RoZXJ3aXNlLCBy
ZWdlbmVyYXRlZCBjYWNoZWQKICAgICAgICAgICAgIC8vIG9mZnNldHMgdG8gdGhlIHJvb3QgZnJv
bSB0aGUgcmVuZGVyIHRyZWUuCiAgICAgICAgICAgICBpZiAoIW1fcGFyZW50IHx8IG1fcGFyZW50
LT5yZW5kZXJlcigpID09IHJlbmRlcmVyKCktPmNvbnRhaW5pbmdCbG9jaygpKQotICAgICAgICAg
ICAgICAgIGNhY2hlZE9mZnNldC0+bW92ZShtX3RvcExlZnQueCgpLCBtX3RvcExlZnQueSgpKTsg
Ly8gRmFzdCBjYXNlCisgICAgICAgICAgICAgICAgb2Zmc2V0RnJvbVJvb3QtPm1vdmUobV90b3BM
ZWZ0LngoKSwgbV90b3BMZWZ0LnkoKSk7IC8vIEZhc3QgY2FzZQogICAgICAgICAgICAgZWxzZSB7
CiAgICAgICAgICAgICAgICAgTGF5b3V0UG9pbnQgb2Zmc2V0OwogICAgICAgICAgICAgICAgIGNv
bnZlcnRUb0xheWVyQ29vcmRzKHJvb3QoKSwgb2Zmc2V0KTsKLSAgICAgICAgICAgICAgICAqY2Fj
aGVkT2Zmc2V0ID0gb2Zmc2V0OworICAgICAgICAgICAgICAgICpvZmZzZXRGcm9tUm9vdCA9IG9m
ZnNldDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIAogICAgIExheW91dFBvaW50
IG9mZnNldDsKLSAgICBpZiAoY2FjaGVkT2Zmc2V0KSB7Ci0gICAgICAgIG9mZnNldCA9ICpjYWNo
ZWRPZmZzZXQ7CisgICAgaWYgKG9mZnNldEZyb21Sb290KSB7CisgICAgICAgIG9mZnNldCA9ICpv
ZmZzZXRGcm9tUm9vdDsKICNpZm5kZWYgTkRFQlVHCi0gICAgICAgIExheW91dFBvaW50IG5vbkNh
Y2hlZE9mZnNldDsKLSAgICAgICAgY29udmVydFRvTGF5ZXJDb29yZHMocm9vdCgpLCBub25DYWNo
ZWRPZmZzZXQpOwotICAgICAgICBBU1NFUlQob2Zmc2V0ID09IG5vbkNhY2hlZE9mZnNldCk7Cisg
ICAgICAgIExheW91dFBvaW50IGNvbXB1dGVkT2Zmc2V0RnJvbVJvb3Q7CisgICAgICAgIGNvbnZl
cnRUb0xheWVyQ29vcmRzKHJvb3QoKSwgY29tcHV0ZWRPZmZzZXRGcm9tUm9vdCk7CisgICAgICAg
IEFTU0VSVChvZmZzZXQgPT0gY29tcHV0ZWRPZmZzZXRGcm9tUm9vdCk7CiAjZW5kaWYKLSAgICB9
IGVsc2UKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBGSVhNRTogSXQgbG9va3Mgc3VzcGljaW91
cyB0byBjYWxsIGNvbnZlcnRUb0xheWVyQ29vcmRzIGhlcmUKKyAgICAgICAgLy8gYXMgY2FuVXNl
Q29udmVydFRvTGF5ZXJDb29yZHMgbWF5IGJlIHRydWUgZm9yIGFuIGFuY2VzdG9yIGxheWVyLgog
ICAgICAgICBjb252ZXJ0VG9MYXllckNvb3Jkcyhyb290KCksIG9mZnNldCk7CisgICAgfQogICAg
IHBvc2l0aW9uT3ZlcmZsb3dDb250cm9scyh0b1NpemUob2Zmc2V0KSk7CiAKICAgICB1cGRhdGVW
aXNpYmlsaXR5U3RhdHVzKCk7CkBAIC0zNDQsNyArMzc0LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6
dXBkYXRlTGF5ZXJQb3NpdGlvbnMoVXBkYXRlTGF5ZXJQb3NpdGlvbnNGbGFncyBmbGFncywgTGF5
b3V0UG8KICAgICAgICAgZmxhZ3MgfD0gVXBkYXRlUGFnaW5hdGlvbjsKIAogICAgIGZvciAoUmVu
ZGVyTGF5ZXIqIGNoaWxkID0gZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4
dFNpYmxpbmcoKSkKLSAgICAgICAgY2hpbGQtPnVwZGF0ZUxheWVyUG9zaXRpb25zKGZsYWdzLCBj
YWNoZWRPZmZzZXQpOworICAgICAgICBjaGlsZC0+dXBkYXRlTGF5ZXJQb3NpdGlvbnMob2Zmc2V0
RnJvbVJvb3QsIGZsYWdzKTsKIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAg
ICBpZiAoKGZsYWdzICYgVXBkYXRlQ29tcG9zaXRpbmdMYXllcnMpICYmIGlzQ29tcG9zaXRlZCgp
KQpAQCAtMzU1LDggKzM4NSw4IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZUxheWVyUG9zaXRp
b25zKFVwZGF0ZUxheWVyUG9zaXRpb25zRmxhZ3MgZmxhZ3MsIExheW91dFBvCiAgICAgaWYgKG1f
bWFycXVlZSkKICAgICAgICAgbV9tYXJxdWVlLT51cGRhdGVNYXJxdWVlUG9zaXRpb24oKTsKIAot
ICAgIGlmIChjYWNoZWRPZmZzZXQpCi0gICAgICAgICpjYWNoZWRPZmZzZXQgPSBvbGRDYWNoZWRP
ZmZzZXQ7CisgICAgaWYgKG9mZnNldEZyb21Sb290KQorICAgICAgICAqb2Zmc2V0RnJvbVJvb3Qg
PSBvbGRPZmZzZXRGcm9tUm9vdDsKIH0KIAogTGF5b3V0UmVjdCBSZW5kZXJMYXllcjo6cmVwYWlu
dFJlY3RJbmNsdWRpbmdEZXNjZW5kYW50cygpIGNvbnN0CkBAIC0xMTAxLDYgKzExMzEsOCBAQCB2
b2lkIFJlbmRlckxheWVyOjpyZW1vdmVPbmx5VGhpc0xheWVyKCkKICAgICAvLyBSZW1vdmUgdXMg
ZnJvbSB0aGUgcGFyZW50LgogICAgIFJlbmRlckxheWVyKiBwYXJlbnQgPSBtX3BhcmVudDsKICAg
ICBSZW5kZXJMYXllciogbmV4dFNpYiA9IG5leHRTaWJsaW5nKCk7CisgICAgYm9vbCBoYXNMYXll
ck9mZnNldDsKKyAgICBjb25zdCBMYXlvdXRQb2ludCBvZmZzZXRGcm9tUm9vdEJlZm9yZU1vdmUg
PSBjb21wdXRlT2Zmc2V0RnJvbVJvb3QoaGFzTGF5ZXJPZmZzZXQpOwogICAgIHBhcmVudC0+cmVt
b3ZlQ2hpbGQodGhpcyk7CiAgICAgCiAgICAgaWYgKHJlZmxlY3Rpb24oKSkKQEAgLTExMTMsNyAr
MTE0NSwxMCBAQCB2b2lkIFJlbmRlckxheWVyOjpyZW1vdmVPbmx5VGhpc0xheWVyKCkKICAgICAg
ICAgcmVtb3ZlQ2hpbGQoY3VycmVudCk7CiAgICAgICAgIHBhcmVudC0+YWRkQ2hpbGQoY3VycmVu
dCwgbmV4dFNpYik7CiAgICAgICAgIGN1cnJlbnQtPnNldE5lZWRzRnVsbFJlcGFpbnQoKTsKLSAg
ICAgICAgY3VycmVudC0+dXBkYXRlTGF5ZXJQb3NpdGlvbnMoKTsgLy8gRGVwZW5kcyBvbiBoYXNM
YXllcigpIGFscmVhZHkgYmVpbmcgZmFsc2UgZm9yIHByb3BlciBsYXlvdXQuCisgICAgICAgIExh
eW91dFBvaW50IG9mZnNldEZyb21Sb290ID0gb2Zmc2V0RnJvbVJvb3RCZWZvcmVNb3ZlOworICAg
ICAgICAvLyB1cGRhdGVMYXllclBvc2l0aW9ucyBkZXBlbmRzIG9uIGhhc0xheWVyKCkgYWxyZWFk
eSBiZWluZyBmYWxzZSBmb3IgcHJvcGVyIGxheW91dC4KKyAgICAgICAgQVNTRVJUKCFyZW5kZXJl
cigpLT5oYXNMYXllcigpKTsKKyAgICAgICAgY3VycmVudC0+dXBkYXRlTGF5ZXJQb3NpdGlvbnMo
aGFzTGF5ZXJPZmZzZXQgPyAmb2Zmc2V0RnJvbVJvb3QgOiAwKTsKICAgICAgICAgY3VycmVudCA9
IG5leHQ7CiAgICAgfQogCkBAIC0yNzk5LDYgKzI4MzQsOCBAQCB2b2lkIFJlbmRlckxheWVyOjpw
YWludENoaWxkTGF5ZXJJbnRvQ29sdW1ucyhSZW5kZXJMYXllciogY2hpbGRMYXllciwgUmVuZGVy
TGF5ZQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgTGF5b3V0UG9pbnQgbGF5ZXJPZmZzZXQ7
CisgICAgLy8gRklYTUU6IEl0IGxvb2tzIHN1c3BpY2lvdXMgdG8gY2FsbCBjb252ZXJ0VG9MYXll
ckNvb3JkcyBoZXJlCisgICAgLy8gYXMgY2FuVXNlQ29udmVydFRvTGF5ZXJDb29yZHMgaXMgdHJ1
ZSBmb3IgdGhpcyBsYXllci4KICAgICBjb2x1bW5CbG9jay0+bGF5ZXIoKS0+Y29udmVydFRvTGF5
ZXJDb29yZHMocm9vdExheWVyLCBsYXllck9mZnNldCk7CiAgICAgCiAgICAgYm9vbCBpc0hvcml6
b250YWwgPSBjb2x1bW5CbG9jay0+c3R5bGUoKS0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKaW5kZXggMWFiODkwOWFjZTkyYzMx
MGRjMGZjODE4YWI5MmU0NWQwYWQyNWQwYy4uNjRmYjk2YjY0ODRjODIwNWI3Yjg4NGE3Y2UyOGIz
ZTMzYTM2YWViZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKQEAgLTMw
OCw3ICszMDgsMTAgQEAgcHVibGljOgogICAgICAgICBVcGRhdGVQYWdpbmF0aW9uID0gMSA8PCAz
CiAgICAgfTsKICAgICB0eXBlZGVmIHVuc2lnbmVkIFVwZGF0ZUxheWVyUG9zaXRpb25zRmxhZ3M7
Ci0gICAgdm9pZCB1cGRhdGVMYXllclBvc2l0aW9ucyhVcGRhdGVMYXllclBvc2l0aW9uc0ZsYWdz
ID0gQ2hlY2tGb3JSZXBhaW50IHwgSXNDb21wb3NpdGluZ1VwZGF0ZVJvb3QgfCBVcGRhdGVDb21w
b3NpdGluZ0xheWVycywgTGF5b3V0UG9pbnQqIGNhY2hlZE9mZnNldCA9IDApOworICAgIHN0YXRp
YyBjb25zdCBVcGRhdGVMYXllclBvc2l0aW9uc0ZsYWdzIGRlZmF1bHRGbGFncyA9IENoZWNrRm9y
UmVwYWludCB8IElzQ29tcG9zaXRpbmdVcGRhdGVSb290IHwgVXBkYXRlQ29tcG9zaXRpbmdMYXll
cnM7CisgICAgLy8gUHJvdmlkaW5nIHxjYWNoZWRPZmZzZXR8IHByZXZlbnRzIGEgb3V0bGluZUJv
eEZvclJlcGFpbnQgZnJvbSB3YWxraW5nIGJhY2sgdG8gdGhlIHJvb3QgZm9yIGVhY2ggbGF5ZXIg
aW4gb3VyIHN1YnRyZWUuCisgICAgLy8gVGhpcyBpcyBhbiBvcHRpbWlzdGljIG9wdGltaXphdGlv
biB0aGF0IGlzIG5vdCBndWFyYW50ZWVkIHRvIHN1Y2NlZWQuCisgICAgdm9pZCB1cGRhdGVMYXll
clBvc2l0aW9ucyhMYXlvdXRQb2ludCogb2Zmc2V0RnJvbVJvb3QsIFVwZGF0ZUxheWVyUG9zaXRp
b25zRmxhZ3MgPSBkZWZhdWx0RmxhZ3MpOwogCiAgICAgdm9pZCB1cGRhdGVUcmFuc2Zvcm0oKTsK
IApAQCAtNDAxLDYgKzQwNCw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgdXBkYXRlSG92ZXJBY3Rp
dmVTdGF0ZShjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmKTsKIAorICAgIC8v
IFdBUk5JTkc6IFRoaXMgbWV0aG9kIHJldHVybnMgdGhlIG9mZnNldCBmb3IgdGhlIHBhcmVudCBh
cyB0aGlzIGlzIHdoYXQgdXBkYXRlTGF5ZXJQb3NpdGlvbnMgZXhwZWN0cy4KKyAgICBMYXlvdXRQ
b2ludCBjb21wdXRlT2Zmc2V0RnJvbVJvb3QoYm9vbCYgaGFzTGF5ZXJPZmZzZXQpIGNvbnN0Owor
CiAgICAgLy8gUmV0dXJuIGEgY2FjaGVkIHJlcGFpbnQgcmVjdCwgY29tcHV0ZWQgcmVsYXRpdmUg
dG8gdGhlIGxheWVyIHJlbmRlcmVyJ3MgY29udGFpbmVyRm9yUmVwYWludC4KICAgICBMYXlvdXRS
ZWN0IHJlcGFpbnRSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9yZXBhaW50UmVjdDsgfQogICAgIExh
eW91dFJlY3QgcmVwYWludFJlY3RJbmNsdWRpbmdEZXNjZW5kYW50cygpIGNvbnN0OwpAQCAtNjI4
LDYgKzYzNCwxNiBAQCBwcml2YXRlOgogICAgIExheW91dFVuaXQgb3ZlcmZsb3dMZWZ0KCkgY29u
c3Q7CiAgICAgTGF5b3V0VW5pdCBvdmVyZmxvd1JpZ2h0KCkgY29uc3Q7CiAKKyAgICBib29sIGNh
blVzZUNvbnZlcnRUb0xheWVyQ29vcmRzKCkgY29uc3QKKyAgICB7CisgICAgICAgIC8vIFRoZXNl
IFJlbmRlck9iamVjdCBoYXZlIGFuIGltcGFjdCBvbiB0aGVpciBsYXllcnMnIHdpdGhvdXQgdGhl
bSBrbm93aW5nIGFib3V0IGl0LgorICAgICAgICByZXR1cm4gIXJlbmRlcmVyKCktPmhhc0NvbHVt
bnMoKSAmJiAhcmVuZGVyZXIoKS0+aGFzVHJhbnNmb3JtKCkgJiYgIWlzQ29tcG9zaXRlZCgpCisj
aWYgRU5BQkxFKFNWRykKKyAgICAgICAgICAgICYmICFyZW5kZXJlcigpLT5pc1NWR1Jvb3QoKQor
I2VuZGlmCisgICAgICAgICAgICA7CisgICAgfQorCiBwcm90ZWN0ZWQ6CiAgICAgUmVuZGVyQm94
TW9kZWxPYmplY3QqIG1fcmVuZGVyZXI7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>