<?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>8969</bug_id>
          
          <creation_ts>2006-05-18 00:23:50 -0700</creation_ts>
          <short_desc>REGRESSION: typing in textfield repaints whole web page at gamefaqs.com</short_desc>
          <delta_ts>2006-05-31 22:52:01 -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>Forms</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://www.gamefaqs.com/</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>HasReduction, Regression</keywords>
          <priority>P1</priority>
          <bug_severity>Critical</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dave Hyatt">hyatt</reporter>
          <assigned_to name="Adele Peterson">adele</assigned_to>
          <cc>mitz</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>42793</commentid>
    <comment_count>0</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2006-05-18 00:23:50 -0700</bug_when>
    <thetext>Another one of these repaint problems.  Typing in the search field on www.gamefaqs.com repaints nearly the whole page.  Turn on paint flashing to see the problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>42836</commentid>
    <comment_count>1</comment_count>
      <attachid>8392</attachid>
    <who name="">mitz</who>
    <bug_when>2006-05-18 10:03:20 -0700</bug_when>
    <thetext>Created attachment 8392
Reduction

This reduction shows full-page repainting, but with any text field you&apos;ll see some repainting outside the field, i.e. even &lt;input&gt; on its own on the page repaints outside for no apparent reason. I think that&apos;s the real problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>42838</commentid>
    <comment_count>2</comment_count>
      <attachid>8394</attachid>
    <who name="">mitz</who>
    <bug_when>2006-05-18 11:05:55 -0700</bug_when>
    <thetext>Created attachment 8394
It can get sluggish because of layout

This test case is exaggerated, but on a 1.8GHz iMac G5 the native text fields are noticeably slower even under normal circumstances. The problem illustrated by this test case is that typing in the text field causes layout all the way down from the frame to the inner div. Even with only children needing layout, relayout of the ancestors takes a while and causes unnecessary repainting.

A way to schedule relayout of only a subtree would be helpful in this case, where you know that changes couldn&apos;t have propagated outside the input element (and perhaps in a few other cases to be identified later).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>42839</commentid>
    <comment_count>3</comment_count>
      <attachid>8394</attachid>
    <who name="">mitz</who>
    <bug_when>2006-05-18 11:08:52 -0700</bug_when>
    <thetext>Comment on attachment 8394
It can get sluggish because of layout

In shipping Safari (old text field implementation) both text fields are fast.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>42881</commentid>
    <comment_count>4</comment_count>
      <attachid>8404</attachid>
    <who name="">mitz</who>
    <bug_when>2006-05-19 08:00:03 -0700</bug_when>
    <thetext>Created attachment 8404
Relayout only the subtree rooted at the text field

First cut at a patch for the relayout issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>42892</commentid>
    <comment_count>5</comment_count>
      <attachid>8405</attachid>
    <who name="">mitz</who>
    <bug_when>2006-05-19 09:12:52 -0700</bug_when>
    <thetext>Created attachment 8405
Relayout only the subtree rooted at the text field</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>42993</commentid>
    <comment_count>6</comment_count>
      <attachid>8434</attachid>
    <who name="">mitz</who>
    <bug_when>2006-05-20 06:55:02 -0700</bug_when>
    <thetext>Created attachment 8434
Test case for the repaint issue

When you click Test, the entire 400px-tall div is repainted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>42994</commentid>
    <comment_count>7</comment_count>
      <attachid>8405</attachid>
    <who name="">mitz</who>
    <bug_when>2006-05-20 06:56:06 -0700</bug_when>
    <thetext>Comment on attachment 8405
Relayout only the subtree rooted at the text field

I think the approach in the patch can be generalized to all clipping containers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>42995</commentid>
    <comment_count>8</comment_count>
    <who name="">mitz</who>
    <bug_when>2006-05-20 07:19:02 -0700</bug_when>
    <thetext>The repaint is caused by layoutInlineChildren:

    // FIXME: Do something better when floats are present.
    bool fullLayout = !firstLineBox() || !firstChild() || selfNeedsLayout() || relayoutChildren || containsFloats();

...and...

        if (hasFloat)
            fullLayout = true; // FIXME: Will need to find a way to optimize floats some day.

(once fullLayout is true, the block is marked as needing layout, so everything gets repainted; I think that&apos;s actually the only effect of marking at that stage).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>43028</commentid>
    <comment_count>9</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2006-05-20 22:11:38 -0700</bug_when>
    <thetext>The patch looks good.  One thing I thought of though...

The recalcStyle step that is done only on the textfield node.  I don&apos;t think you can get away with that, since if an ancestor style has changed, and you inherit from that ancestor, then doing a style recalc only on yourself will lead to you having incorrect style information while doing the layout.  I think you have to just do the style recalc on the whole document.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>43272</commentid>
    <comment_count>10</comment_count>
      <attachid>8481</attachid>
    <who name="">mitz</who>
    <bug_when>2006-05-23 08:30:39 -0700</bug_when>
    <thetext>Created attachment 8481
Revised patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>43278</commentid>
    <comment_count>11</comment_count>
      <attachid>8483</attachid>
    <who name="">mitz</who>
    <bug_when>2006-05-23 09:31:51 -0700</bug_when>
    <thetext>Created attachment 8483
Revised patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>43402</commentid>
    <comment_count>12</comment_count>
      <attachid>8483</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2006-05-24 12:17:21 -0700</bug_when>
    <thetext>Comment on attachment 8483
Revised patch

This is ready for text fields.  I do see one issue if we do try to extend this to overflow sections...

-    root-&gt;updateWidgetPositions();
+    if (!subtree)
+        static_cast&lt;RenderCanvas*&gt;(root)-&gt;updateWidgetPositions();

If the subtree contains widgets, then you&apos;ll need to run updateWidgetPositions but only on the widgets in the subtree.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>43693</commentid>
    <comment_count>13</comment_count>
      <attachid>8565</attachid>
    <who name="">mitz</who>
    <bug_when>2006-05-26 15:12:58 -0700</bug_when>
    <thetext>Created attachment 8565
Updated patch

Added an explicit layout request in RenderContainer::removeChildNode, since otherwise layout wouldn&apos;t happen when a text field is removed. This was actually detected by fast/forms/textfield-focus-out.html but I overlooked it!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>43694</commentid>
    <comment_count>14</comment_count>
      <attachid>8483</attachid>
    <who name="">mitz</who>
    <bug_when>2006-05-26 15:13:46 -0700</bug_when>
    <thetext>Comment on attachment 8483
Revised patch

Clearing review flag to remove bug from the commit queue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>43715</commentid>
    <comment_count>15</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2006-05-26 17:16:46 -0700</bug_when>
    <thetext>I don&apos;t quite understand the RenderContainer addition.  If a layout is targeted at the textfield itself, that should not be constrained to the subtree, so why is there a problem?  The only layouts that should be constrained to subtrees are those that are scheduled by the children/descendants of the text field.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>43725</commentid>
    <comment_count>16</comment_count>
      <attachid>8570</attachid>
    <who name="">mitz</who>
    <bug_when>2006-05-27 01:59:47 -0700</bug_when>
    <thetext>Created attachment 8570
Patch

&gt; If a layout is targeted at the textfield itself, that should
&gt; not be constrained to the subtree
Now *that* was the real problem in all previous versions of the patch. I fixed it by moving the isTextField check in markContainingBlocksForRelayout so that it won&apos;t check the layout target, and everything seems to work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>43927</commentid>
    <comment_count>17</comment_count>
      <attachid>8570</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2006-05-29 23:02:40 -0700</bug_when>
    <thetext>Comment on attachment 8570
Patch

r=me</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>8392</attachid>
            <date>2006-05-18 10:03:20 -0700</date>
            <delta_ts>2006-05-18 10:03:20 -0700</delta_ts>
            <desc>Reduction</desc>
            <filename>8969 reduction.html</filename>
            <type>text/html</type>
            <size>43</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">PGlucHV0Pg0KPGRpdiBzdHlsZT0iZmxvYXQ6bGVmdDsiPg0KPC9kaXY+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>8394</attachid>
            <date>2006-05-18 11:05:55 -0700</date>
            <delta_ts>2006-05-18 11:05:55 -0700</delta_ts>
            <desc>It can get sluggish because of layout</desc>
            <filename>light-vs-heavy.html</filename>
            <type>text/html</type>
            <size>4890</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">TGlnaHQ6IDxpbnB1dD4KPGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2Pjxk
aXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj4KPGRpdj48ZGl2PjxkaXY+PGRp
dj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+
PGRpdj4KPGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48
ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj4KPGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2Pjxk
aXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj4KPGRp
dj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+
PGRpdj48ZGl2PjxkaXY+PGRpdj4KPGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48
ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj4KPGRpdj48ZGl2Pjxk
aXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2
PjxkaXY+PGRpdj4KPGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+
PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj4KPGRpdj48ZGl2PjxkaXY+PGRpdj48
ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRp
dj4KPGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2
PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj4KPGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+
PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj4KPGRpdj48
ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRp
dj48ZGl2PjxkaXY+PGRpdj4KPGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2
PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj4KPGRpdj48ZGl2PjxkaXY+
PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2Pjxk
aXY+PGRpdj4KPGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRp
dj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj4KPGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2
PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj4K
PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2Pjxk
aXY+PGRpdj48ZGl2PjxkaXY+PGRpdj4KPGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRp
dj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj4KPGRpdj48ZGl2
PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48
ZGl2PjxkaXY+PGRpdj4KPGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2Pjxk
aXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj4KPGRpdj48ZGl2PjxkaXY+PGRp
dj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+
PGRpdj4KPGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48
ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj4KPGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2Pjxk
aXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj4KPGRp
dj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+
PGRpdj48ZGl2PjxkaXY+PGRpdj4KPGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48
ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj4KPGRpdj48ZGl2Pjxk
aXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2
PjxkaXY+PGRpdj4KPGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+
PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj4KPGRpdj48ZGl2PjxkaXY+PGRpdj48
ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRp
dj4KPGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2
PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj4KPGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+
PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj4KPGRpdj48
ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRp
dj48ZGl2PjxkaXY+PGRpdj4KPGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2
PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj4KPGRpdj48ZGl2PjxkaXY+
PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2Pjxk
aXY+PGRpdj4KPGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRp
dj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj4KPGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2
PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj4K
PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2Pjxk
aXY+PGRpdj48ZGl2PjxkaXY+PGRpdj4KPGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRp
dj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj4KPGRpdj48ZGl2
PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48
ZGl2PjxkaXY+PGRpdj4KPGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2Pjxk
aXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj4KPGRpdj48ZGl2PjxkaXY+PGRp
dj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+
PGRpdj4KPGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48
ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj4KPGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2Pjxk
aXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj4KPGRp
dj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+
PGRpdj48ZGl2PjxkaXY+PGRpdj4KPGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48
ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj4KPGRpdj48ZGl2Pjxk
aXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2
PjxkaXY+PGRpdj4KPGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+
PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj4KPGRpdj48ZGl2PjxkaXY+PGRpdj48
ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRp
dj4KPGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2
PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj4KPGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+
PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj4KPGRpdj48
ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRp
dj48ZGl2PjxkaXY+PGRpdj4KPGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2
PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj4KPGRpdj48ZGl2PjxkaXY+
PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2Pjxk
aXY+PGRpdj4KPGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRp
dj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj4KPGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2
PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj4K
PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2Pjxk
aXY+PGRpdj48ZGl2PjxkaXY+PGRpdj4KPGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRp
dj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj4KPGRpdj48ZGl2
PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48
ZGl2PjxkaXY+PGRpdj4KPGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2Pjxk
aXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj4KPGRpdj48ZGl2PjxkaXY+PGRp
dj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+
PGRpdj4KPGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj48
ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj4KSGVhdnk6IDxpbnB1dD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>8404</attachid>
            <date>2006-05-19 08:00:03 -0700</date>
            <delta_ts>2006-05-19 09:12:52 -0700</delta_ts>
            <desc>Relayout only the subtree rooted at the text field</desc>
            <filename>8969_r0.patch</filename>
            <type>text/plain</type>
            <size>14154</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAkocmV2aXNpb24gMTQ0ODIpCisrKyBX
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02ODks
MTggKzY4OSwxOSBAQCB2b2lkIFJlbmRlck9iamVjdDo6c2V0Q2hpbGROZWVkc0xheW91dChiCiAg
ICAgfQogfQogCi12b2lkIFJlbmRlck9iamVjdDo6bWFya0NvbnRhaW5pbmdCbG9ja3NGb3JMYXlv
dXQoKQordm9pZCBSZW5kZXJPYmplY3Q6Om1hcmtDb250YWluaW5nQmxvY2tzRm9yTGF5b3V0KGJv
b2wgc2NoZWR1bGVSZWxheW91dCkKIHsKICAgICBSZW5kZXJPYmplY3QgKm8gPSBjb250YWluZXIo
KTsKICAgICBSZW5kZXJPYmplY3QgKmxhc3QgPSB0aGlzOwogCiAgICAgd2hpbGUgKG8pIHsKKyAg
ICAgICAgaWYgKHNjaGVkdWxlUmVsYXlvdXQgJiYgbGFzdC0+aXNUZXh0RmllbGQoKSkKKyAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBpZiAoIWxhc3QtPmlzVGV4dCgpICYmIChsYXN0LT5zdHls
ZSgpLT5wb3NpdGlvbigpID09IEZpeGVkUG9zaXRpb24gfHwgbGFzdC0+c3R5bGUoKS0+cG9zaXRp
b24oKSA9PSBBYnNvbHV0ZVBvc2l0aW9uKSkgewogICAgICAgICAgICAgaWYgKG8tPm1fcG9zQ2hp
bGROZWVkc0xheW91dCkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBvLT5t
X3Bvc0NoaWxkTmVlZHNMYXlvdXQgPSB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIGVsc2Ugewor
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgaWYgKG8tPm1fbm9ybWFsQ2hpbGROZWVkc0xh
eW91dCkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBvLT5tX25vcm1hbENo
aWxkTmVlZHNMYXlvdXQgPSB0cnVlOwpAQCAtNzEwLDcgKzcxMSw4IEBAIHZvaWQgUmVuZGVyT2Jq
ZWN0OjptYXJrQ29udGFpbmluZ0Jsb2Nrc0YKICAgICAgICAgbyA9IG8tPmNvbnRhaW5lcigpOwog
ICAgIH0KIAotICAgIGxhc3QtPnNjaGVkdWxlUmVsYXlvdXQoKTsKKyAgICBpZiAoc2NoZWR1bGVS
ZWxheW91dCkKKyAgICAgICAgbGFzdC0+c2NoZWR1bGVSZWxheW91dCgpOwogfQogCiBSZW5kZXJC
bG9jayogUmVuZGVyT2JqZWN0Ojpjb250YWluaW5nQmxvY2soKSBjb25zdApAQCAtMjI4OSwxMSAr
MjI5MSwxNSBAQCB2b2lkIFJlbmRlck9iamVjdDo6cmVjYWxjTWluTWF4V2lkdGhzKCkKIAogdm9p
ZCBSZW5kZXJPYmplY3Q6OnNjaGVkdWxlUmVsYXlvdXQoKQogewotICAgIGlmICghaXNDYW52YXMo
KSkKLSAgICAgICAgcmV0dXJuOwotICAgIEZyYW1lVmlldyAqdmlldyA9IHN0YXRpY19jYXN0PFJl
bmRlckNhbnZhcyAqPih0aGlzKS0+dmlldygpOwotICAgIGlmICh2aWV3KQotICAgICAgICB2aWV3
LT5zY2hlZHVsZVJlbGF5b3V0KCk7CisgICAgaWYgKGlzQ2FudmFzKCkpIHsKKyAgICAgICAgRnJh
bWVWaWV3KiB2aWV3ID0gc3RhdGljX2Nhc3Q8UmVuZGVyQ2FudmFzKj4odGhpcyktPnZpZXcoKTsK
KyAgICAgICAgaWYgKHZpZXcpCisgICAgICAgICAgICB2aWV3LT5zY2hlZHVsZVJlbGF5b3V0KCk7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgRnJhbWVWaWV3KiB2aWV3ID0gY2FudmFzKCktPnZpZXco
KTsKKyAgICAgICAgaWYgKHZpZXcpCisgICAgICAgICAgICB2aWV3LT5zY2hlZHVsZVJlbGF5b3V0
T2ZTdWJ0cmVlKG5vZGUoKSk7CisgICAgfQogfQogCiAKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9i
amVjdC5oCShyZXZpc2lvbiAxNDQ4MikKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVj
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMzksNyArMzM5LDcgQEAgcHVibGljOgogICAgIFJlbmRl
ck9iamVjdCogaG92ZXJBbmNlc3RvcigpIGNvbnN0OwogCiAgICAgdmlydHVhbCB2b2lkIG1hcmtB
bGxEZXNjZW5kYW50c1dpdGhGbG9hdHNGb3JMYXlvdXQoUmVuZGVyT2JqZWN0KiBmbG9hdFRvUmVt
b3ZlID0gMCk7Ci0gICAgdm9pZCBtYXJrQ29udGFpbmluZ0Jsb2Nrc0ZvckxheW91dCgpOworICAg
IHZvaWQgbWFya0NvbnRhaW5pbmdCbG9ja3NGb3JMYXlvdXQoYm9vbCBzY2hlZHVsZVJlbGF5b3V0
ID0gdHJ1ZSk7CiAgICAgdm9pZCBzZXROZWVkc0xheW91dChib29sIGIsIGJvb2wgbWFya1BhcmVu
dHMgPSB0cnVlKTsKICAgICB2b2lkIHNldENoaWxkTmVlZHNMYXlvdXQoYm9vbCBiLCBib29sIG1h
cmtQYXJlbnRzID0gdHJ1ZSk7CiAgICAgdm9pZCBzZXRNaW5NYXhLbm93bihib29sIGI9dHJ1ZSkg
ewpJbmRleDogV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gMTQ0ODIpCisrKyBXZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg4NSw3ICs4ODUsNyBAQCB2b2lkIERvY3VtZW50Ojp1
cGRhdGVMYXlvdXQoKQogICAgIHVwZGF0ZVJlbmRlcmluZygpOwogCiAgICAgLy8gT25seSBkbyBh
IGxheW91dCBpZiBjaGFuZ2VzIGhhdmUgb2NjdXJyZWQgdGhhdCBtYWtlIGl0IG5lY2Vzc2FyeS4g
ICAgICAKLSAgICBpZiAobV92aWV3ICYmIHJlbmRlcmVyKCkgJiYgcmVuZGVyZXIoKS0+bmVlZHNM
YXlvdXQoKSkKKyAgICBpZiAobV92aWV3ICYmIHJlbmRlcmVyKCkgJiYgKG1fdmlldy0+bGF5b3V0
UGVuZGluZygpIHx8IHJlbmRlcmVyKCktPm5lZWRzTGF5b3V0KCkpKQogICAgICAgICBtX3ZpZXct
PmxheW91dCgpOwogfQogCkluZGV4OiBXZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAkocmV2aXNpb24gMTQ0ODIpCisrKyBX
ZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODYsNiArODYsNyBA
QCBwdWJsaWM6CiAgICAgICAgIGNsaWNrTm9kZSA9IDA7CiAgICAgICAgIHNjcm9sbGluZ1NlbGYg
PSBmYWxzZTsKICAgICAgICAgbGF5b3V0VGltZXIuc3RvcCgpOworICAgICAgICBsYXlvdXRSb290
ID0gMDsKICAgICAgICAgZGVsYXllZExheW91dCA9IGZhbHNlOwogICAgICAgICBtb3VzZVByZXNz
ZWQgPSBmYWxzZTsKICAgICAgICAgZG9GdWxsUmVwYWludCA9IHRydWU7CkBAIC0xMjIsNiArMTIz
LDcgQEAgcHVibGljOgogICAgIGJvb2wgc2Nyb2xsaW5nU2VsZjsKICAgICBUaW1lcjxGcmFtZVZp
ZXc+IGxheW91dFRpbWVyOwogICAgIGJvb2wgZGVsYXllZExheW91dDsKKyAgICBSZWZQdHI8Tm9k
ZT4gbGF5b3V0Um9vdDsKICAgICAKICAgICBib29sIGxheW91dFNjaGVkdWxpbmdFbmFibGVkOwog
ICAgIGJvb2wgbGF5b3V0U3VwcHJlc3NlZDsKQEAgLTI5OCw3ICszMDAsNyBAQCB2b2lkIEZyYW1l
Vmlldzo6YWRkUmVwYWludEluZm8oUmVuZGVyT2JqCiAgICAgZC0+cmVwYWludFJlY3RzLT5hcHBl
bmQobmV3IFJlbmRlck9iamVjdDo6UmVwYWludEluZm8obywgcikpOwogfQogCi12b2lkIEZyYW1l
Vmlldzo6bGF5b3V0KCkKK3ZvaWQgRnJhbWVWaWV3OjpsYXlvdXQoYm9vbCBhbGxvd1N1YnRyZWUp
CiB7CiAgICAgaWYgKGQtPmxheW91dFN1cHByZXNzZWQpCiAgICAgICAgIHJldHVybjsKQEAgLTMx
Myw4ICszMTUsMTUgQEAgdm9pZCBGcmFtZVZpZXc6OmxheW91dCgpCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBtX2ZyYW1lLT5kb2N1bWVudCgpOwot
ICAgIGlmICghZG9jdW1lbnQpIHsKKyAgICBpZiAoIWFsbG93U3VidHJlZSAmJiBkLT5sYXlvdXRS
b290KSB7CisgICAgICAgIGlmIChkLT5sYXlvdXRSb290LT5yZW5kZXJlcigpKQorICAgICAgICAg
ICAgZC0+bGF5b3V0Um9vdC0+cmVuZGVyZXIoKS0+bWFya0NvbnRhaW5pbmdCbG9ja3NGb3JMYXlv
dXQoZmFsc2UpOworICAgICAgICBkLT5sYXlvdXRSb290ID0gMDsKKyAgICB9CisKKyAgICBib29s
IHN1YnRyZWUgPSBkLT5sYXlvdXRSb290OworICAgIE5vZGUqIHJvb3ROb2RlID0gc3VidHJlZSA/
IGQtPmxheW91dFJvb3QuZ2V0KCkgOiBtX2ZyYW1lLT5kb2N1bWVudCgpOworICAgIGlmICghcm9v
dE5vZGUpIHsKICAgICAgICAgLy8gRklYTUU6IFNob3VsZCB3ZSBzZXQgbV9zaXplLmhlaWdodCBo
ZXJlIHRvbz8KICAgICAgICAgbV9zaXplLnNldFdpZHRoKHZpc2libGVXaWR0aCgpKTsKICAgICAg
ICAgcmV0dXJuOwpAQCAtMzI0LDEwICszMzMsMTAgQEAgdm9pZCBGcmFtZVZpZXc6OmxheW91dCgp
CiAKICAgICAvLyBBbHdheXMgZW5zdXJlIG91ciBzdHlsZSBpbmZvIGlzIHVwLXRvLWRhdGUuICBU
aGlzIGNhbiBoYXBwZW4gaW4gc2l0dWF0aW9ucyB3aGVyZQogICAgIC8vIHRoZSBsYXlvdXQgYmVh
dHMgYW55IHNvcnQgb2Ygc3R5bGUgcmVjYWxjIHVwZGF0ZSB0aGF0IG5lZWRzIHRvIG9jY3VyLgot
ICAgIGlmIChkb2N1bWVudC0+aGFzQ2hhbmdlZENoaWxkKCkpCi0gICAgICAgIGRvY3VtZW50LT5y
ZWNhbGNTdHlsZSgpOworICAgIGlmIChyb290Tm9kZS0+aGFzQ2hhbmdlZENoaWxkKCkpCisgICAg
ICAgIHJvb3ROb2RlLT5yZWNhbGNTdHlsZSgpOwogCi0gICAgUmVuZGVyQ2FudmFzKiByb290ID0g
c3RhdGljX2Nhc3Q8UmVuZGVyQ2FudmFzKj4oZG9jdW1lbnQtPnJlbmRlcmVyKCkpOworICAgIFJl
bmRlck9iamVjdCogcm9vdCA9IHJvb3ROb2RlLT5yZW5kZXJlcigpOwogICAgIGlmICghcm9vdCkg
ewogICAgICAgICAvLyBGSVhNRTogRG8gd2UgbmVlZCB0byBzZXQgbV9zaXplIGhlcmU/CiAgICAg
ICAgIGQtPmxheW91dFNjaGVkdWxpbmdFbmFibGVkID0gdHJ1ZTsKQEAgLTMzNyw5MSArMzQ2LDk5
IEBAIHZvaWQgRnJhbWVWaWV3OjpsYXlvdXQoKQogICAgIFNjcm9sbEJhck1vZGUgaE1vZGUgPSBk
LT5obW9kZTsKICAgICBTY3JvbGxCYXJNb2RlIHZNb2RlID0gZC0+dm1vZGU7CiAgICAgCi0gICAg
UmVuZGVyT2JqZWN0KiByb290UmVuZGVyZXIgPSBkb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCkg
PyBkb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCktPnJlbmRlcmVyKCkgOiAwOwotICAgIGlmIChk
b2N1bWVudC0+aXNIVE1MRG9jdW1lbnQoKSkgewotICAgICAgICBOb2RlICpib2R5ID0gc3RhdGlj
X2Nhc3Q8SFRNTERvY3VtZW50Kj4oZG9jdW1lbnQpLT5ib2R5KCk7Ci0gICAgICAgIGlmIChib2R5
ICYmIGJvZHktPnJlbmRlcmVyKCkpIHsKLSAgICAgICAgICAgIGlmIChib2R5LT5oYXNUYWdOYW1l
KGZyYW1lc2V0VGFnKSkgewotICAgICAgICAgICAgICAgIGJvZHktPnJlbmRlcmVyKCktPnNldE5l
ZWRzTGF5b3V0KHRydWUpOwotICAgICAgICAgICAgICAgIHZNb2RlID0gU2Nyb2xsQmFyQWx3YXlz
T2ZmOwotICAgICAgICAgICAgICAgIGhNb2RlID0gU2Nyb2xsQmFyQWx3YXlzT2ZmOworICAgIGlm
ICghc3VidHJlZSkgeworICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxE
b2N1bWVudCo+KHJvb3ROb2RlKTsKKyAgICAgICAgUmVuZGVyT2JqZWN0KiByb290UmVuZGVyZXIg
PSBkb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCkgPyBkb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50
KCktPnJlbmRlcmVyKCkgOiAwOworICAgICAgICBpZiAoZG9jdW1lbnQtPmlzSFRNTERvY3VtZW50
KCkpIHsKKyAgICAgICAgICAgIE5vZGUgKmJvZHkgPSBzdGF0aWNfY2FzdDxIVE1MRG9jdW1lbnQq
Pihkb2N1bWVudCktPmJvZHkoKTsKKyAgICAgICAgICAgIGlmIChib2R5ICYmIGJvZHktPnJlbmRl
cmVyKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoYm9keS0+aGFzVGFnTmFtZShmcmFtZXNldFRh
ZykpIHsKKyAgICAgICAgICAgICAgICAgICAgYm9keS0+cmVuZGVyZXIoKS0+c2V0TmVlZHNMYXlv
dXQodHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgIHZNb2RlID0gU2Nyb2xsQmFyQWx3YXlzT2Zm
OworICAgICAgICAgICAgICAgICAgICBoTW9kZSA9IFNjcm9sbEJhckFsd2F5c09mZjsKKyAgICAg
ICAgICAgICAgICB9IGVsc2UgaWYgKGJvZHktPmhhc1RhZ05hbWUoYm9keVRhZykpIHsKKyAgICAg
ICAgICAgICAgICAgICAgUmVuZGVyT2JqZWN0KiBvID0gKHJvb3RSZW5kZXJlci0+c3R5bGUoKS0+
b3ZlcmZsb3coKSA9PSBPVklTSUJMRSkgPyBib2R5LT5yZW5kZXJlcigpIDogcm9vdFJlbmRlcmVy
OworICAgICAgICAgICAgICAgICAgICBhcHBseU92ZXJmbG93VG9WaWV3cG9ydChvLCBoTW9kZSwg
dk1vZGUpOyAvLyBPbmx5IGFwcGxpZXMgdG8gSFRNTCBVQXMsIG5vdCB0byBYTUwvWEhUTUwgVUFz
CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAo
Ym9keS0+aGFzVGFnTmFtZShib2R5VGFnKSkgewotICAgICAgICAgICAgICAgIFJlbmRlck9iamVj
dCogbyA9IChyb290UmVuZGVyZXItPnN0eWxlKCktPm92ZXJmbG93KCkgPT0gT1ZJU0lCTEUpID8g
Ym9keS0+cmVuZGVyZXIoKSA6IHJvb3RSZW5kZXJlcjsKLSAgICAgICAgICAgICAgICBhcHBseU92
ZXJmbG93VG9WaWV3cG9ydChvLCBoTW9kZSwgdk1vZGUpOyAvLyBPbmx5IGFwcGxpZXMgdG8gSFRN
TCBVQXMsIG5vdCB0byBYTUwvWEhUTUwgVUFzCi0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAg
ICB9Ci0gICAgZWxzZSBpZiAocm9vdFJlbmRlcmVyKQotICAgICAgICBhcHBseU92ZXJmbG93VG9W
aWV3cG9ydChyb290UmVuZGVyZXIsIGhNb2RlLCB2TW9kZSk7IC8vIFhNTC9YSFRNTCBVQXMgdXNl
IHRoZSByb290IGVsZW1lbnQuCi0KKyAgICAgICAgfSBlbHNlIGlmIChyb290UmVuZGVyZXIpCisg
ICAgICAgICAgICBhcHBseU92ZXJmbG93VG9WaWV3cG9ydChyb290UmVuZGVyZXIsIGhNb2RlLCB2
TW9kZSk7IC8vIFhNTC9YSFRNTCBVQXMgdXNlIHRoZSByb290IGVsZW1lbnQuCiAjaWYgSU5TVFJV
TUVOVF9MQVlPVVRfU0NIRURVTElORwotICAgIGlmIChkLT5maXJzdExheW91dCAmJiAhZG9jdW1l
bnQtPm93bmVyRWxlbWVudCgpKQotICAgICAgICBwcmludGYoIkVsYXBzZWQgdGltZSBiZWZvcmUg
Zmlyc3QgbGF5b3V0OiAlZFxuIiwgZG9jdW1lbnQtPmVsYXBzZWRUaW1lKCkpOworICAgICAgICBp
ZiAoZC0+Zmlyc3RMYXlvdXQgJiYgIWRvY3VtZW50LT5vd25lckVsZW1lbnQoKSkKKyAgICAgICAg
ICAgIHByaW50ZigiRWxhcHNlZCB0aW1lIGJlZm9yZSBmaXJzdCBsYXlvdXQ6ICVkXG4iLCBkb2N1
bWVudC0+ZWxhcHNlZFRpbWUoKSk7CiAjZW5kaWYKKyAgICB9CiAKLSAgICBkLT5kb0Z1bGxSZXBh
aW50ID0gZC0+Zmlyc3RMYXlvdXQgfHwgcm9vdC0+cHJpbnRpbmdNb2RlKCk7CisgICAgZC0+ZG9G
dWxsUmVwYWludCA9ICFzdWJ0cmVlICYmIChkLT5maXJzdExheW91dCB8fCBzdGF0aWNfY2FzdDxS
ZW5kZXJDYW52YXMqPihyb290KS0+cHJpbnRpbmdNb2RlKCkpOwogICAgIGlmIChkLT5yZXBhaW50
UmVjdHMpCiAgICAgICAgIGQtPnJlcGFpbnRSZWN0cy0+Y2xlYXIoKTsKIAotICAgIC8vIE5vdyBz
ZXQgb3VyIHNjcm9sbGJhciBzdGF0ZSBmb3IgdGhlIGxheW91dC4KLSAgICBTY3JvbGxCYXJNb2Rl
IGN1cnJlbnRITW9kZSA9IGhTY3JvbGxCYXJNb2RlKCk7Ci0gICAgU2Nyb2xsQmFyTW9kZSBjdXJy
ZW50Vk1vZGUgPSB2U2Nyb2xsQmFyTW9kZSgpOwotCiAgICAgYm9vbCBkaWRGaXJzdExheW91dCA9
IGZhbHNlOwotICAgIGlmIChkLT5maXJzdExheW91dCB8fCAoaE1vZGUgIT0gY3VycmVudEhNb2Rl
IHx8IHZNb2RlICE9IGN1cnJlbnRWTW9kZSkpIHsKLSAgICAgICAgc3VwcHJlc3NTY3JvbGxCYXJz
KHRydWUpOwotICAgICAgICBpZiAoZC0+Zmlyc3RMYXlvdXQpIHsKLSAgICAgICAgICAgIGQtPmZp
cnN0TGF5b3V0ID0gZmFsc2U7Ci0gICAgICAgICAgICBkaWRGaXJzdExheW91dCA9IHRydWU7Cisg
ICAgaWYgKCFzdWJ0cmVlKSB7CisgICAgICAgIC8vIE5vdyBzZXQgb3VyIHNjcm9sbGJhciBzdGF0
ZSBmb3IgdGhlIGxheW91dC4KKyAgICAgICAgU2Nyb2xsQmFyTW9kZSBjdXJyZW50SE1vZGUgPSBo
U2Nyb2xsQmFyTW9kZSgpOworICAgICAgICBTY3JvbGxCYXJNb2RlIGN1cnJlbnRWTW9kZSA9IHZT
Y3JvbGxCYXJNb2RlKCk7CisKKyAgICAgICAgaWYgKGQtPmZpcnN0TGF5b3V0IHx8IChoTW9kZSAh
PSBjdXJyZW50SE1vZGUgfHwgdk1vZGUgIT0gY3VycmVudFZNb2RlKSkgeworICAgICAgICAgICAg
c3VwcHJlc3NTY3JvbGxCYXJzKHRydWUpOworICAgICAgICAgICAgaWYgKGQtPmZpcnN0TGF5b3V0
KSB7CisgICAgICAgICAgICAgICAgZC0+Zmlyc3RMYXlvdXQgPSBmYWxzZTsKKyAgICAgICAgICAg
ICAgICBkaWRGaXJzdExheW91dCA9IHRydWU7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAg
ICAgICAgLy8gU2V0IHRoZSBpbml0aWFsIHZNb2RlIHRvIEFsd2F5c09uIGlmIHdlJ3JlIGF1dG8u
CisgICAgICAgICAgICAgICAgaWYgKHZNb2RlID09IFNjcm9sbEJhckF1dG8pCisgICAgICAgICAg
ICAgICAgICAgIFNjcm9sbFZpZXc6OnNldFZTY3JvbGxCYXJNb2RlKFNjcm9sbEJhckFsd2F5c09u
KTsgLy8gVGhpcyBjYXVzZXMgYSB2ZXJ0aWNhbCBzY3JvbGxiYXIgdG8gYXBwZWFyLgorICAgICAg
ICAgICAgICAgIC8vIFNldCB0aGUgaW5pdGlhbCBoTW9kZSB0byBBbHdheXNPZmYgaWYgd2UncmUg
YXV0by4KKyAgICAgICAgICAgICAgICBpZiAoaE1vZGUgPT0gU2Nyb2xsQmFyQXV0bykKKyAgICAg
ICAgICAgICAgICAgICAgU2Nyb2xsVmlldzo6c2V0SFNjcm9sbEJhck1vZGUoU2Nyb2xsQmFyQWx3
YXlzT2ZmKTsgLy8gVGhpcyBjYXVzZXMgYSBob3Jpem9udGFsIHNjcm9sbGJhciB0byBkaXNhcHBl
YXIuCisgICAgICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIC8vIFNldCB0aGUg
aW5pdGlhbCB2TW9kZSB0byBBbHdheXNPbiBpZiB3ZSdyZSBhdXRvLgotICAgICAgICAgICAgaWYg
KHZNb2RlID09IFNjcm9sbEJhckF1dG8pCi0gICAgICAgICAgICAgICAgU2Nyb2xsVmlldzo6c2V0
VlNjcm9sbEJhck1vZGUoU2Nyb2xsQmFyQWx3YXlzT24pOyAvLyBUaGlzIGNhdXNlcyBhIHZlcnRp
Y2FsIHNjcm9sbGJhciB0byBhcHBlYXIuCi0gICAgICAgICAgICAvLyBTZXQgdGhlIGluaXRpYWwg
aE1vZGUgdG8gQWx3YXlzT2ZmIGlmIHdlJ3JlIGF1dG8uCi0gICAgICAgICAgICBpZiAoaE1vZGUg
PT0gU2Nyb2xsQmFyQXV0bykKLSAgICAgICAgICAgICAgICBTY3JvbGxWaWV3OjpzZXRIU2Nyb2xs
QmFyTW9kZShTY3JvbGxCYXJBbHdheXNPZmYpOyAvLyBUaGlzIGNhdXNlcyBhIGhvcml6b250YWwg
c2Nyb2xsYmFyIHRvIGRpc2FwcGVhci4KLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgaWYg
KGhNb2RlID09IHZNb2RlKQotICAgICAgICAgICAgU2Nyb2xsVmlldzo6c2V0U2Nyb2xsQmFyc01v
ZGUoaE1vZGUpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFNjcm9sbFZpZXc6OnNldEhT
Y3JvbGxCYXJNb2RlKGhNb2RlKTsKLSAgICAgICAgICAgIFNjcm9sbFZpZXc6OnNldFZTY3JvbGxC
YXJNb2RlKHZNb2RlKTsKLSAgICAgICAgfQorICAgICAgICAgICAgaWYgKGhNb2RlID09IHZNb2Rl
KQorICAgICAgICAgICAgICAgIFNjcm9sbFZpZXc6OnNldFNjcm9sbEJhcnNNb2RlKGhNb2RlKTsK
KyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIFNjcm9sbFZpZXc6OnNldEhTY3Jv
bGxCYXJNb2RlKGhNb2RlKTsKKyAgICAgICAgICAgICAgICBTY3JvbGxWaWV3OjpzZXRWU2Nyb2xs
QmFyTW9kZSh2TW9kZSk7CisgICAgICAgICAgICB9CiAKLSAgICAgICAgc3VwcHJlc3NTY3JvbGxC
YXJzKGZhbHNlLCB0cnVlKTsKLSAgICB9CisgICAgICAgICAgICBzdXBwcmVzc1Njcm9sbEJhcnMo
ZmFsc2UsIHRydWUpOworICAgICAgICB9CiAKLSAgICBJbnRTaXplIG9sZFNpemUgPSBtX3NpemU7
CisgICAgICAgIEludFNpemUgb2xkU2l6ZSA9IG1fc2l6ZTsKIAotICAgIG1fc2l6ZSA9IEludFNp
emUodmlzaWJsZVdpZHRoKCksIHZpc2libGVIZWlnaHQoKSk7CisgICAgICAgIG1fc2l6ZSA9IElu
dFNpemUodmlzaWJsZVdpZHRoKCksIHZpc2libGVIZWlnaHQoKSk7CiAKLSAgICBpZiAob2xkU2l6
ZSAhPSBtX3NpemUpCi0gICAgICAgIGQtPmRvRnVsbFJlcGFpbnQgPSB0cnVlOworICAgICAgICBp
ZiAob2xkU2l6ZSAhPSBtX3NpemUpCisgICAgICAgICAgICBkLT5kb0Z1bGxSZXBhaW50ID0gdHJ1
ZTsKKyAgICB9CiAgICAgCi0gICAgUmVuZGVyTGF5ZXIqIGxheWVyID0gcm9vdC0+bGF5ZXIoKTsK
KyAgICBSZW5kZXJMYXllciogbGF5ZXIgPSByb290LT5lbmNsb3NpbmdMYXllcigpOwogICAgICAK
ICAgICBpZiAoIWQtPmRvRnVsbFJlcGFpbnQpIHsKICAgICAgICAgbGF5ZXItPmNvbXB1dGVSZXBh
aW50UmVjdHMoKTsKICAgICAgICAgcm9vdC0+cmVwYWludE9iamVjdHNCZWZvcmVMYXlvdXQoKTsK
ICAgICB9CiAKKyAgICBpZiAoc3VidHJlZSkgeworICAgICAgICBpZiAocm9vdC0+cmVjYWxjTWlu
TWF4KCkpCisgICAgICAgICAgICByb290LT5yZWNhbGNNaW5NYXhXaWR0aHMoKTsKKyAgICB9CiAg
ICAgcm9vdC0+bGF5b3V0KCk7CisgICAgZC0+bGF5b3V0Um9vdCA9IDA7CiAKICAgICBtX2ZyYW1l
LT5pbnZhbGlkYXRlU2VsZWN0aW9uKCk7CiAgICAKICAgICBkLT5sYXlvdXRTY2hlZHVsaW5nRW5h
YmxlZD10cnVlOwogICAgIGQtPmxheW91dFN1cHByZXNzZWQgPSBmYWxzZTsKIAotICAgIGlmICgh
cm9vdC0+cHJpbnRpbmdNb2RlKCkpCisgICAgaWYgKCFzdWJ0cmVlICYmICFzdGF0aWNfY2FzdDxS
ZW5kZXJDYW52YXMqPihyb290KS0+cHJpbnRpbmdNb2RlKCkpCiAgICAgICAgIHJlc2l6ZUNvbnRl
bnRzKGxheWVyLT53aWR0aCgpLCBsYXllci0+aGVpZ2h0KCkpOwogCiAgICAgLy8gTm93IHVwZGF0
ZSB0aGUgcG9zaXRpb25zIG9mIGFsbCBsYXllcnMuCiAgICAgbGF5ZXItPnVwZGF0ZUxheWVyUG9z
aXRpb25zKGQtPmRvRnVsbFJlcGFpbnQpOwogCiAgICAgLy8gV2UgdXBkYXRlIG91ciB3aWRnZXQg
cG9zaXRpb25zIHJpZ2h0IGFmdGVyIGRvaW5nIGEgbGF5b3V0LgotICAgIHJvb3QtPnVwZGF0ZVdp
ZGdldFBvc2l0aW9ucygpOworICAgIGlmICghc3VidHJlZSkKKyAgICAgICAgc3RhdGljX2Nhc3Q8
UmVuZGVyQ2FudmFzKj4ocm9vdCktPnVwZGF0ZVdpZGdldFBvc2l0aW9ucygpOwogICAgIAogICAg
IGlmIChkLT5yZXBhaW50UmVjdHMgJiYgIWQtPnJlcGFpbnRSZWN0cy0+aXNFbXB0eSgpKSB7CiAg
ICAgICAgIC8vIEZJWE1FOiBDb3VsZCBvcHRpbWl6ZSB0aGlzIGFuZCBoYXZlIG9iamVjdHMgcmVt
b3ZlZCBmcm9tIHRoaXMgbGlzdApAQCAtMTA3MSw2ICsxMDg4LDExIEBAIHZvaWQgRnJhbWVWaWV3
OjpzY2hlZHVsZVJlbGF5b3V0KCkKICAgICBpbnQgZGVsYXkgPSBtX2ZyYW1lLT5kb2N1bWVudCgp
LT5taW5pbXVtTGF5b3V0RGVsYXkoKTsKICAgICBpZiAoZC0+bGF5b3V0VGltZXIuaXNBY3RpdmUo
KSAmJiBkLT5kZWxheWVkTGF5b3V0ICYmICFkZWxheSkKICAgICAgICAgdW5zY2hlZHVsZVJlbGF5
b3V0KCk7CisgICAgaWYgKGQtPmxheW91dFJvb3QpIHsKKyAgICAgICAgaWYgKGQtPmxheW91dFJv
b3QtPnJlbmRlcmVyKCkpCisgICAgICAgICAgICBkLT5sYXlvdXRSb290LT5yZW5kZXJlcigpLT5t
YXJrQ29udGFpbmluZ0Jsb2Nrc0ZvckxheW91dChmYWxzZSk7CisgICAgICAgIGQtPmxheW91dFJv
b3QgPSAwOworICAgIH0KICAgICBpZiAoZC0+bGF5b3V0VGltZXIuaXNBY3RpdmUoKSkKICAgICAg
ICAgcmV0dXJuOwogCkBAIC0xMDg0LDYgKzExMDYsMzEgQEAgdm9pZCBGcmFtZVZpZXc6OnNjaGVk
dWxlUmVsYXlvdXQoKQogICAgIGQtPmxheW91dFRpbWVyLnN0YXJ0T25lU2hvdChkZWxheSAqIDAu
MDAxKTsKIH0KIAordm9pZCBGcmFtZVZpZXc6OnNjaGVkdWxlUmVsYXlvdXRPZlN1YnRyZWUoTm9k
ZSogbikKK3sKKyAgICBpZiAoIWQtPmxheW91dFNjaGVkdWxpbmdFbmFibGVkKSB7CisgICAgICAg
IGlmIChuLT5yZW5kZXJlcigpKQorICAgICAgICAgICAgbi0+cmVuZGVyZXIoKS0+bWFya0NvbnRh
aW5pbmdCbG9ja3NGb3JMYXlvdXQoZmFsc2UpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgaWYgKGxheW91dFBlbmRpbmcoKSkgeworICAgICAgICBpZiAoZC0+bGF5b3V0Um9vdCAhPSBu
KSB7CisgICAgICAgICAgICAvLyBKdXN0IGRvIGEgZnVsbCByZWxheW91dAorICAgICAgICAgICAg
aWYgKGQtPmxheW91dFJvb3QgJiYgZC0+bGF5b3V0Um9vdC0+cmVuZGVyZXIoKSkKKyAgICAgICAg
ICAgICAgICBkLT5sYXlvdXRSb290LT5yZW5kZXJlcigpLT5tYXJrQ29udGFpbmluZ0Jsb2Nrc0Zv
ckxheW91dChmYWxzZSk7CisgICAgICAgICAgICBpZiAobi0+cmVuZGVyZXIoKSkKKyAgICAgICAg
ICAgICAgICBuLT5yZW5kZXJlcigpLT5tYXJrQ29udGFpbmluZ0Jsb2Nrc0ZvckxheW91dChmYWxz
ZSk7CisgICAgICAgICAgICBkLT5sYXlvdXRSb290ID0gMDsKKyAgICAgICAgfQorICAgIH0gZWxz
ZSB7CisgICAgICAgIGludCBkZWxheSA9IG1fZnJhbWUtPmRvY3VtZW50KCktPm1pbmltdW1MYXlv
dXREZWxheSgpOworICAgICAgICBkLT5sYXlvdXRSb290ID0gbjsKKyAgICAgICAgZC0+ZGVsYXll
ZExheW91dCA9IGRlbGF5ICE9IDA7CisgICAgICAgIGQtPmxheW91dFRpbWVyLnN0YXJ0T25lU2hv
dChkZWxheSAqIDAuMDAxKTsKKyAgICB9Cit9CisKIGJvb2wgRnJhbWVWaWV3OjpsYXlvdXRQZW5k
aW5nKCkKIHsKICAgICByZXR1cm4gZC0+bGF5b3V0VGltZXIuaXNBY3RpdmUoKTsKSW5kZXg6IFdl
YkNvcmUvcGFnZS9GcmFtZVZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRnJhbWVW
aWV3LmgJKHJldmlzaW9uIDE0NDgyKQorKysgV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMTUsNyArMTE1LDcgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgcHJp
bnQoKTsKIAotICAgIHZvaWQgbGF5b3V0KCk7CisgICAgdm9pZCBsYXlvdXQoYm9vbCBhbGxvd1N1
YnRyZWUgPSB0cnVlKTsKIAogICAgIGJvb2wgaW5MYXlvdXQoKSBjb25zdDsKICAgICBpbnQgbGF5
b3V0Q291bnQoKSBjb25zdDsKQEAgLTE1Miw2ICsxNTIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRUcmFuc3BhcmVudChib29sIGlzVHJhbnNwYXJlbnQpOwogICAgIAogICAgIHZvaWQgc2NoZWR1
bGVSZWxheW91dCgpOworICAgIHZvaWQgc2NoZWR1bGVSZWxheW91dE9mU3VidHJlZShOb2RlKik7
CiAgICAgdm9pZCB1bnNjaGVkdWxlUmVsYXlvdXQoKTsKICAgICBib29sIGhhdmVEZWxheWVkTGF5
b3V0U2NoZWR1bGVkKCk7CiAgICAgYm9vbCBsYXlvdXRQZW5kaW5nKCk7CkluZGV4OiBXZWJDb3Jl
L3BhZ2UvRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9GcmFtZS5jcHAJKHJl
dmlzaW9uIDE0NDgyKQorKysgV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjk4MCw3ICsyOTgwLDcgQEAgdm9pZCBGcmFtZTo6Zm9yY2VMYXlvdXQoKQogewogICAgIEZy
YW1lVmlldyAqdiA9IGQtPm1fdmlldy5nZXQoKTsKICAgICBpZiAodikgewotICAgICAgICB2LT5s
YXlvdXQoKTsKKyAgICAgICAgdi0+bGF5b3V0KGZhbHNlKTsKICAgICAgICAgLy8gV2UgY2Fubm90
IHVuc2NoZWR1bGUgYSBwZW5kaW5nIHJlbGF5b3V0LCBzaW5jZSB0aGUgZm9yY2UgY2FuIGJlIGNh
bGxlZCB3aXRoCiAgICAgICAgIC8vIGEgdGlueSByZWN0YW5nbGUgZnJvbSBhIGRyYXdSZWN0IHVw
ZGF0ZS4gIEJ5IHVuc2NoZWR1bGluZyB3ZSBpbiBlZmZlY3QKICAgICAgICAgLy8gInZhbGlkYXRl
IiBhbmQgc3RvcCB0aGUgbmVjZXNzYXJ5IGZ1bGwgcmVwYWludCBmcm9tIG9jY3VycmluZy4gIEJh
c2ljYWxseSBhbnkgYmFzaWMK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>8405</attachid>
            <date>2006-05-19 09:12:52 -0700</date>
            <delta_ts>2006-05-23 08:30:39 -0700</delta_ts>
            <desc>Relayout only the subtree rooted at the text field</desc>
            <filename>8969_r0.patch</filename>
            <type>text/plain</type>
            <size>14154</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAkocmV2aXNpb24gMTQ0ODIpCisrKyBX
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02ODks
MTggKzY4OSwxOSBAQCB2b2lkIFJlbmRlck9iamVjdDo6c2V0Q2hpbGROZWVkc0xheW91dChiCiAg
ICAgfQogfQogCi12b2lkIFJlbmRlck9iamVjdDo6bWFya0NvbnRhaW5pbmdCbG9ja3NGb3JMYXlv
dXQoKQordm9pZCBSZW5kZXJPYmplY3Q6Om1hcmtDb250YWluaW5nQmxvY2tzRm9yTGF5b3V0KGJv
b2wgc2NoZWR1bGVSZWxheW91dCkKIHsKICAgICBSZW5kZXJPYmplY3QgKm8gPSBjb250YWluZXIo
KTsKICAgICBSZW5kZXJPYmplY3QgKmxhc3QgPSB0aGlzOwogCiAgICAgd2hpbGUgKG8pIHsKKyAg
ICAgICAgaWYgKHNjaGVkdWxlUmVsYXlvdXQgJiYgbGFzdC0+aXNUZXh0RmllbGQoKSkKKyAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBpZiAoIWxhc3QtPmlzVGV4dCgpICYmIChsYXN0LT5zdHls
ZSgpLT5wb3NpdGlvbigpID09IEZpeGVkUG9zaXRpb24gfHwgbGFzdC0+c3R5bGUoKS0+cG9zaXRp
b24oKSA9PSBBYnNvbHV0ZVBvc2l0aW9uKSkgewogICAgICAgICAgICAgaWYgKG8tPm1fcG9zQ2hp
bGROZWVkc0xheW91dCkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBvLT5t
X3Bvc0NoaWxkTmVlZHNMYXlvdXQgPSB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIGVsc2Ugewor
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgaWYgKG8tPm1fbm9ybWFsQ2hpbGROZWVkc0xh
eW91dCkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBvLT5tX25vcm1hbENo
aWxkTmVlZHNMYXlvdXQgPSB0cnVlOwpAQCAtNzEwLDcgKzcxMSw4IEBAIHZvaWQgUmVuZGVyT2Jq
ZWN0OjptYXJrQ29udGFpbmluZ0Jsb2Nrc0YKICAgICAgICAgbyA9IG8tPmNvbnRhaW5lcigpOwog
ICAgIH0KIAotICAgIGxhc3QtPnNjaGVkdWxlUmVsYXlvdXQoKTsKKyAgICBpZiAoc2NoZWR1bGVS
ZWxheW91dCkKKyAgICAgICAgbGFzdC0+c2NoZWR1bGVSZWxheW91dCgpOwogfQogCiBSZW5kZXJC
bG9jayogUmVuZGVyT2JqZWN0Ojpjb250YWluaW5nQmxvY2soKSBjb25zdApAQCAtMjI4OSwxMSAr
MjI5MSwxNSBAQCB2b2lkIFJlbmRlck9iamVjdDo6cmVjYWxjTWluTWF4V2lkdGhzKCkKIAogdm9p
ZCBSZW5kZXJPYmplY3Q6OnNjaGVkdWxlUmVsYXlvdXQoKQogewotICAgIGlmICghaXNDYW52YXMo
KSkKLSAgICAgICAgcmV0dXJuOwotICAgIEZyYW1lVmlldyAqdmlldyA9IHN0YXRpY19jYXN0PFJl
bmRlckNhbnZhcyAqPih0aGlzKS0+dmlldygpOwotICAgIGlmICh2aWV3KQotICAgICAgICB2aWV3
LT5zY2hlZHVsZVJlbGF5b3V0KCk7CisgICAgaWYgKGlzQ2FudmFzKCkpIHsKKyAgICAgICAgRnJh
bWVWaWV3KiB2aWV3ID0gc3RhdGljX2Nhc3Q8UmVuZGVyQ2FudmFzKj4odGhpcyktPnZpZXcoKTsK
KyAgICAgICAgaWYgKHZpZXcpCisgICAgICAgICAgICB2aWV3LT5zY2hlZHVsZVJlbGF5b3V0KCk7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgRnJhbWVWaWV3KiB2aWV3ID0gY2FudmFzKCktPnZpZXco
KTsKKyAgICAgICAgaWYgKHZpZXcpCisgICAgICAgICAgICB2aWV3LT5zY2hlZHVsZVJlbGF5b3V0
T2ZTdWJ0cmVlKG5vZGUoKSk7CisgICAgfQogfQogCiAKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9i
amVjdC5oCShyZXZpc2lvbiAxNDQ4MikKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVj
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMzksNyArMzM5LDcgQEAgcHVibGljOgogICAgIFJlbmRl
ck9iamVjdCogaG92ZXJBbmNlc3RvcigpIGNvbnN0OwogCiAgICAgdmlydHVhbCB2b2lkIG1hcmtB
bGxEZXNjZW5kYW50c1dpdGhGbG9hdHNGb3JMYXlvdXQoUmVuZGVyT2JqZWN0KiBmbG9hdFRvUmVt
b3ZlID0gMCk7Ci0gICAgdm9pZCBtYXJrQ29udGFpbmluZ0Jsb2Nrc0ZvckxheW91dCgpOworICAg
IHZvaWQgbWFya0NvbnRhaW5pbmdCbG9ja3NGb3JMYXlvdXQoYm9vbCBzY2hlZHVsZVJlbGF5b3V0
ID0gdHJ1ZSk7CiAgICAgdm9pZCBzZXROZWVkc0xheW91dChib29sIGIsIGJvb2wgbWFya1BhcmVu
dHMgPSB0cnVlKTsKICAgICB2b2lkIHNldENoaWxkTmVlZHNMYXlvdXQoYm9vbCBiLCBib29sIG1h
cmtQYXJlbnRzID0gdHJ1ZSk7CiAgICAgdm9pZCBzZXRNaW5NYXhLbm93bihib29sIGI9dHJ1ZSkg
ewpJbmRleDogV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gMTQ0ODIpCisrKyBXZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg4NSw3ICs4ODUsNyBAQCB2b2lkIERvY3VtZW50Ojp1
cGRhdGVMYXlvdXQoKQogICAgIHVwZGF0ZVJlbmRlcmluZygpOwogCiAgICAgLy8gT25seSBkbyBh
IGxheW91dCBpZiBjaGFuZ2VzIGhhdmUgb2NjdXJyZWQgdGhhdCBtYWtlIGl0IG5lY2Vzc2FyeS4g
ICAgICAKLSAgICBpZiAobV92aWV3ICYmIHJlbmRlcmVyKCkgJiYgcmVuZGVyZXIoKS0+bmVlZHNM
YXlvdXQoKSkKKyAgICBpZiAobV92aWV3ICYmIHJlbmRlcmVyKCkgJiYgKG1fdmlldy0+bGF5b3V0
UGVuZGluZygpIHx8IHJlbmRlcmVyKCktPm5lZWRzTGF5b3V0KCkpKQogICAgICAgICBtX3ZpZXct
PmxheW91dCgpOwogfQogCkluZGV4OiBXZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAkocmV2aXNpb24gMTQ0ODIpCisrKyBX
ZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODYsNiArODYsNyBA
QCBwdWJsaWM6CiAgICAgICAgIGNsaWNrTm9kZSA9IDA7CiAgICAgICAgIHNjcm9sbGluZ1NlbGYg
PSBmYWxzZTsKICAgICAgICAgbGF5b3V0VGltZXIuc3RvcCgpOworICAgICAgICBsYXlvdXRSb290
ID0gMDsKICAgICAgICAgZGVsYXllZExheW91dCA9IGZhbHNlOwogICAgICAgICBtb3VzZVByZXNz
ZWQgPSBmYWxzZTsKICAgICAgICAgZG9GdWxsUmVwYWludCA9IHRydWU7CkBAIC0xMjIsNiArMTIz
LDcgQEAgcHVibGljOgogICAgIGJvb2wgc2Nyb2xsaW5nU2VsZjsKICAgICBUaW1lcjxGcmFtZVZp
ZXc+IGxheW91dFRpbWVyOwogICAgIGJvb2wgZGVsYXllZExheW91dDsKKyAgICBSZWZQdHI8Tm9k
ZT4gbGF5b3V0Um9vdDsKICAgICAKICAgICBib29sIGxheW91dFNjaGVkdWxpbmdFbmFibGVkOwog
ICAgIGJvb2wgbGF5b3V0U3VwcHJlc3NlZDsKQEAgLTI5OCw3ICszMDAsNyBAQCB2b2lkIEZyYW1l
Vmlldzo6YWRkUmVwYWludEluZm8oUmVuZGVyT2JqCiAgICAgZC0+cmVwYWludFJlY3RzLT5hcHBl
bmQobmV3IFJlbmRlck9iamVjdDo6UmVwYWludEluZm8obywgcikpOwogfQogCi12b2lkIEZyYW1l
Vmlldzo6bGF5b3V0KCkKK3ZvaWQgRnJhbWVWaWV3OjpsYXlvdXQoYm9vbCBhbGxvd1N1YnRyZWUp
CiB7CiAgICAgaWYgKGQtPmxheW91dFN1cHByZXNzZWQpCiAgICAgICAgIHJldHVybjsKQEAgLTMx
Myw4ICszMTUsMTUgQEAgdm9pZCBGcmFtZVZpZXc6OmxheW91dCgpCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBtX2ZyYW1lLT5kb2N1bWVudCgpOwot
ICAgIGlmICghZG9jdW1lbnQpIHsKKyAgICBpZiAoIWFsbG93U3VidHJlZSAmJiBkLT5sYXlvdXRS
b290KSB7CisgICAgICAgIGlmIChkLT5sYXlvdXRSb290LT5yZW5kZXJlcigpKQorICAgICAgICAg
ICAgZC0+bGF5b3V0Um9vdC0+cmVuZGVyZXIoKS0+bWFya0NvbnRhaW5pbmdCbG9ja3NGb3JMYXlv
dXQoZmFsc2UpOworICAgICAgICBkLT5sYXlvdXRSb290ID0gMDsKKyAgICB9CisKKyAgICBib29s
IHN1YnRyZWUgPSBkLT5sYXlvdXRSb290OworICAgIE5vZGUqIHJvb3ROb2RlID0gc3VidHJlZSA/
IGQtPmxheW91dFJvb3QuZ2V0KCkgOiBtX2ZyYW1lLT5kb2N1bWVudCgpOworICAgIGlmICghcm9v
dE5vZGUpIHsKICAgICAgICAgLy8gRklYTUU6IFNob3VsZCB3ZSBzZXQgbV9zaXplLmhlaWdodCBo
ZXJlIHRvbz8KICAgICAgICAgbV9zaXplLnNldFdpZHRoKHZpc2libGVXaWR0aCgpKTsKICAgICAg
ICAgcmV0dXJuOwpAQCAtMzI0LDEwICszMzMsMTAgQEAgdm9pZCBGcmFtZVZpZXc6OmxheW91dCgp
CiAKICAgICAvLyBBbHdheXMgZW5zdXJlIG91ciBzdHlsZSBpbmZvIGlzIHVwLXRvLWRhdGUuICBU
aGlzIGNhbiBoYXBwZW4gaW4gc2l0dWF0aW9ucyB3aGVyZQogICAgIC8vIHRoZSBsYXlvdXQgYmVh
dHMgYW55IHNvcnQgb2Ygc3R5bGUgcmVjYWxjIHVwZGF0ZSB0aGF0IG5lZWRzIHRvIG9jY3VyLgot
ICAgIGlmIChkb2N1bWVudC0+aGFzQ2hhbmdlZENoaWxkKCkpCi0gICAgICAgIGRvY3VtZW50LT5y
ZWNhbGNTdHlsZSgpOworICAgIGlmIChyb290Tm9kZS0+aGFzQ2hhbmdlZENoaWxkKCkpCisgICAg
ICAgIHJvb3ROb2RlLT5yZWNhbGNTdHlsZSgpOwogCi0gICAgUmVuZGVyQ2FudmFzKiByb290ID0g
c3RhdGljX2Nhc3Q8UmVuZGVyQ2FudmFzKj4oZG9jdW1lbnQtPnJlbmRlcmVyKCkpOworICAgIFJl
bmRlck9iamVjdCogcm9vdCA9IHJvb3ROb2RlLT5yZW5kZXJlcigpOwogICAgIGlmICghcm9vdCkg
ewogICAgICAgICAvLyBGSVhNRTogRG8gd2UgbmVlZCB0byBzZXQgbV9zaXplIGhlcmU/CiAgICAg
ICAgIGQtPmxheW91dFNjaGVkdWxpbmdFbmFibGVkID0gdHJ1ZTsKQEAgLTMzNyw5MSArMzQ2LDk5
IEBAIHZvaWQgRnJhbWVWaWV3OjpsYXlvdXQoKQogICAgIFNjcm9sbEJhck1vZGUgaE1vZGUgPSBk
LT5obW9kZTsKICAgICBTY3JvbGxCYXJNb2RlIHZNb2RlID0gZC0+dm1vZGU7CiAgICAgCi0gICAg
UmVuZGVyT2JqZWN0KiByb290UmVuZGVyZXIgPSBkb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCkg
PyBkb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCktPnJlbmRlcmVyKCkgOiAwOwotICAgIGlmIChk
b2N1bWVudC0+aXNIVE1MRG9jdW1lbnQoKSkgewotICAgICAgICBOb2RlICpib2R5ID0gc3RhdGlj
X2Nhc3Q8SFRNTERvY3VtZW50Kj4oZG9jdW1lbnQpLT5ib2R5KCk7Ci0gICAgICAgIGlmIChib2R5
ICYmIGJvZHktPnJlbmRlcmVyKCkpIHsKLSAgICAgICAgICAgIGlmIChib2R5LT5oYXNUYWdOYW1l
KGZyYW1lc2V0VGFnKSkgewotICAgICAgICAgICAgICAgIGJvZHktPnJlbmRlcmVyKCktPnNldE5l
ZWRzTGF5b3V0KHRydWUpOwotICAgICAgICAgICAgICAgIHZNb2RlID0gU2Nyb2xsQmFyQWx3YXlz
T2ZmOwotICAgICAgICAgICAgICAgIGhNb2RlID0gU2Nyb2xsQmFyQWx3YXlzT2ZmOworICAgIGlm
ICghc3VidHJlZSkgeworICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxE
b2N1bWVudCo+KHJvb3ROb2RlKTsKKyAgICAgICAgUmVuZGVyT2JqZWN0KiByb290UmVuZGVyZXIg
PSBkb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCkgPyBkb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50
KCktPnJlbmRlcmVyKCkgOiAwOworICAgICAgICBpZiAoZG9jdW1lbnQtPmlzSFRNTERvY3VtZW50
KCkpIHsKKyAgICAgICAgICAgIE5vZGUgKmJvZHkgPSBzdGF0aWNfY2FzdDxIVE1MRG9jdW1lbnQq
Pihkb2N1bWVudCktPmJvZHkoKTsKKyAgICAgICAgICAgIGlmIChib2R5ICYmIGJvZHktPnJlbmRl
cmVyKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoYm9keS0+aGFzVGFnTmFtZShmcmFtZXNldFRh
ZykpIHsKKyAgICAgICAgICAgICAgICAgICAgYm9keS0+cmVuZGVyZXIoKS0+c2V0TmVlZHNMYXlv
dXQodHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgIHZNb2RlID0gU2Nyb2xsQmFyQWx3YXlzT2Zm
OworICAgICAgICAgICAgICAgICAgICBoTW9kZSA9IFNjcm9sbEJhckFsd2F5c09mZjsKKyAgICAg
ICAgICAgICAgICB9IGVsc2UgaWYgKGJvZHktPmhhc1RhZ05hbWUoYm9keVRhZykpIHsKKyAgICAg
ICAgICAgICAgICAgICAgUmVuZGVyT2JqZWN0KiBvID0gKHJvb3RSZW5kZXJlci0+c3R5bGUoKS0+
b3ZlcmZsb3coKSA9PSBPVklTSUJMRSkgPyBib2R5LT5yZW5kZXJlcigpIDogcm9vdFJlbmRlcmVy
OworICAgICAgICAgICAgICAgICAgICBhcHBseU92ZXJmbG93VG9WaWV3cG9ydChvLCBoTW9kZSwg
dk1vZGUpOyAvLyBPbmx5IGFwcGxpZXMgdG8gSFRNTCBVQXMsIG5vdCB0byBYTUwvWEhUTUwgVUFz
CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAo
Ym9keS0+aGFzVGFnTmFtZShib2R5VGFnKSkgewotICAgICAgICAgICAgICAgIFJlbmRlck9iamVj
dCogbyA9IChyb290UmVuZGVyZXItPnN0eWxlKCktPm92ZXJmbG93KCkgPT0gT1ZJU0lCTEUpID8g
Ym9keS0+cmVuZGVyZXIoKSA6IHJvb3RSZW5kZXJlcjsKLSAgICAgICAgICAgICAgICBhcHBseU92
ZXJmbG93VG9WaWV3cG9ydChvLCBoTW9kZSwgdk1vZGUpOyAvLyBPbmx5IGFwcGxpZXMgdG8gSFRN
TCBVQXMsIG5vdCB0byBYTUwvWEhUTUwgVUFzCi0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAg
ICB9Ci0gICAgZWxzZSBpZiAocm9vdFJlbmRlcmVyKQotICAgICAgICBhcHBseU92ZXJmbG93VG9W
aWV3cG9ydChyb290UmVuZGVyZXIsIGhNb2RlLCB2TW9kZSk7IC8vIFhNTC9YSFRNTCBVQXMgdXNl
IHRoZSByb290IGVsZW1lbnQuCi0KKyAgICAgICAgfSBlbHNlIGlmIChyb290UmVuZGVyZXIpCisg
ICAgICAgICAgICBhcHBseU92ZXJmbG93VG9WaWV3cG9ydChyb290UmVuZGVyZXIsIGhNb2RlLCB2
TW9kZSk7IC8vIFhNTC9YSFRNTCBVQXMgdXNlIHRoZSByb290IGVsZW1lbnQuCiAjaWYgSU5TVFJV
TUVOVF9MQVlPVVRfU0NIRURVTElORwotICAgIGlmIChkLT5maXJzdExheW91dCAmJiAhZG9jdW1l
bnQtPm93bmVyRWxlbWVudCgpKQotICAgICAgICBwcmludGYoIkVsYXBzZWQgdGltZSBiZWZvcmUg
Zmlyc3QgbGF5b3V0OiAlZFxuIiwgZG9jdW1lbnQtPmVsYXBzZWRUaW1lKCkpOworICAgICAgICBp
ZiAoZC0+Zmlyc3RMYXlvdXQgJiYgIWRvY3VtZW50LT5vd25lckVsZW1lbnQoKSkKKyAgICAgICAg
ICAgIHByaW50ZigiRWxhcHNlZCB0aW1lIGJlZm9yZSBmaXJzdCBsYXlvdXQ6ICVkXG4iLCBkb2N1
bWVudC0+ZWxhcHNlZFRpbWUoKSk7CiAjZW5kaWYKKyAgICB9CiAKLSAgICBkLT5kb0Z1bGxSZXBh
aW50ID0gZC0+Zmlyc3RMYXlvdXQgfHwgcm9vdC0+cHJpbnRpbmdNb2RlKCk7CisgICAgZC0+ZG9G
dWxsUmVwYWludCA9ICFzdWJ0cmVlICYmIChkLT5maXJzdExheW91dCB8fCBzdGF0aWNfY2FzdDxS
ZW5kZXJDYW52YXMqPihyb290KS0+cHJpbnRpbmdNb2RlKCkpOwogICAgIGlmIChkLT5yZXBhaW50
UmVjdHMpCiAgICAgICAgIGQtPnJlcGFpbnRSZWN0cy0+Y2xlYXIoKTsKIAotICAgIC8vIE5vdyBz
ZXQgb3VyIHNjcm9sbGJhciBzdGF0ZSBmb3IgdGhlIGxheW91dC4KLSAgICBTY3JvbGxCYXJNb2Rl
IGN1cnJlbnRITW9kZSA9IGhTY3JvbGxCYXJNb2RlKCk7Ci0gICAgU2Nyb2xsQmFyTW9kZSBjdXJy
ZW50Vk1vZGUgPSB2U2Nyb2xsQmFyTW9kZSgpOwotCiAgICAgYm9vbCBkaWRGaXJzdExheW91dCA9
IGZhbHNlOwotICAgIGlmIChkLT5maXJzdExheW91dCB8fCAoaE1vZGUgIT0gY3VycmVudEhNb2Rl
IHx8IHZNb2RlICE9IGN1cnJlbnRWTW9kZSkpIHsKLSAgICAgICAgc3VwcHJlc3NTY3JvbGxCYXJz
KHRydWUpOwotICAgICAgICBpZiAoZC0+Zmlyc3RMYXlvdXQpIHsKLSAgICAgICAgICAgIGQtPmZp
cnN0TGF5b3V0ID0gZmFsc2U7Ci0gICAgICAgICAgICBkaWRGaXJzdExheW91dCA9IHRydWU7Cisg
ICAgaWYgKCFzdWJ0cmVlKSB7CisgICAgICAgIC8vIE5vdyBzZXQgb3VyIHNjcm9sbGJhciBzdGF0
ZSBmb3IgdGhlIGxheW91dC4KKyAgICAgICAgU2Nyb2xsQmFyTW9kZSBjdXJyZW50SE1vZGUgPSBo
U2Nyb2xsQmFyTW9kZSgpOworICAgICAgICBTY3JvbGxCYXJNb2RlIGN1cnJlbnRWTW9kZSA9IHZT
Y3JvbGxCYXJNb2RlKCk7CisKKyAgICAgICAgaWYgKGQtPmZpcnN0TGF5b3V0IHx8IChoTW9kZSAh
PSBjdXJyZW50SE1vZGUgfHwgdk1vZGUgIT0gY3VycmVudFZNb2RlKSkgeworICAgICAgICAgICAg
c3VwcHJlc3NTY3JvbGxCYXJzKHRydWUpOworICAgICAgICAgICAgaWYgKGQtPmZpcnN0TGF5b3V0
KSB7CisgICAgICAgICAgICAgICAgZC0+Zmlyc3RMYXlvdXQgPSBmYWxzZTsKKyAgICAgICAgICAg
ICAgICBkaWRGaXJzdExheW91dCA9IHRydWU7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAg
ICAgICAgLy8gU2V0IHRoZSBpbml0aWFsIHZNb2RlIHRvIEFsd2F5c09uIGlmIHdlJ3JlIGF1dG8u
CisgICAgICAgICAgICAgICAgaWYgKHZNb2RlID09IFNjcm9sbEJhckF1dG8pCisgICAgICAgICAg
ICAgICAgICAgIFNjcm9sbFZpZXc6OnNldFZTY3JvbGxCYXJNb2RlKFNjcm9sbEJhckFsd2F5c09u
KTsgLy8gVGhpcyBjYXVzZXMgYSB2ZXJ0aWNhbCBzY3JvbGxiYXIgdG8gYXBwZWFyLgorICAgICAg
ICAgICAgICAgIC8vIFNldCB0aGUgaW5pdGlhbCBoTW9kZSB0byBBbHdheXNPZmYgaWYgd2UncmUg
YXV0by4KKyAgICAgICAgICAgICAgICBpZiAoaE1vZGUgPT0gU2Nyb2xsQmFyQXV0bykKKyAgICAg
ICAgICAgICAgICAgICAgU2Nyb2xsVmlldzo6c2V0SFNjcm9sbEJhck1vZGUoU2Nyb2xsQmFyQWx3
YXlzT2ZmKTsgLy8gVGhpcyBjYXVzZXMgYSBob3Jpem9udGFsIHNjcm9sbGJhciB0byBkaXNhcHBl
YXIuCisgICAgICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIC8vIFNldCB0aGUg
aW5pdGlhbCB2TW9kZSB0byBBbHdheXNPbiBpZiB3ZSdyZSBhdXRvLgotICAgICAgICAgICAgaWYg
KHZNb2RlID09IFNjcm9sbEJhckF1dG8pCi0gICAgICAgICAgICAgICAgU2Nyb2xsVmlldzo6c2V0
VlNjcm9sbEJhck1vZGUoU2Nyb2xsQmFyQWx3YXlzT24pOyAvLyBUaGlzIGNhdXNlcyBhIHZlcnRp
Y2FsIHNjcm9sbGJhciB0byBhcHBlYXIuCi0gICAgICAgICAgICAvLyBTZXQgdGhlIGluaXRpYWwg
aE1vZGUgdG8gQWx3YXlzT2ZmIGlmIHdlJ3JlIGF1dG8uCi0gICAgICAgICAgICBpZiAoaE1vZGUg
PT0gU2Nyb2xsQmFyQXV0bykKLSAgICAgICAgICAgICAgICBTY3JvbGxWaWV3OjpzZXRIU2Nyb2xs
QmFyTW9kZShTY3JvbGxCYXJBbHdheXNPZmYpOyAvLyBUaGlzIGNhdXNlcyBhIGhvcml6b250YWwg
c2Nyb2xsYmFyIHRvIGRpc2FwcGVhci4KLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgaWYg
KGhNb2RlID09IHZNb2RlKQotICAgICAgICAgICAgU2Nyb2xsVmlldzo6c2V0U2Nyb2xsQmFyc01v
ZGUoaE1vZGUpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFNjcm9sbFZpZXc6OnNldEhT
Y3JvbGxCYXJNb2RlKGhNb2RlKTsKLSAgICAgICAgICAgIFNjcm9sbFZpZXc6OnNldFZTY3JvbGxC
YXJNb2RlKHZNb2RlKTsKLSAgICAgICAgfQorICAgICAgICAgICAgaWYgKGhNb2RlID09IHZNb2Rl
KQorICAgICAgICAgICAgICAgIFNjcm9sbFZpZXc6OnNldFNjcm9sbEJhcnNNb2RlKGhNb2RlKTsK
KyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIFNjcm9sbFZpZXc6OnNldEhTY3Jv
bGxCYXJNb2RlKGhNb2RlKTsKKyAgICAgICAgICAgICAgICBTY3JvbGxWaWV3OjpzZXRWU2Nyb2xs
QmFyTW9kZSh2TW9kZSk7CisgICAgICAgICAgICB9CiAKLSAgICAgICAgc3VwcHJlc3NTY3JvbGxC
YXJzKGZhbHNlLCB0cnVlKTsKLSAgICB9CisgICAgICAgICAgICBzdXBwcmVzc1Njcm9sbEJhcnMo
ZmFsc2UsIHRydWUpOworICAgICAgICB9CiAKLSAgICBJbnRTaXplIG9sZFNpemUgPSBtX3NpemU7
CisgICAgICAgIEludFNpemUgb2xkU2l6ZSA9IG1fc2l6ZTsKIAotICAgIG1fc2l6ZSA9IEludFNp
emUodmlzaWJsZVdpZHRoKCksIHZpc2libGVIZWlnaHQoKSk7CisgICAgICAgIG1fc2l6ZSA9IElu
dFNpemUodmlzaWJsZVdpZHRoKCksIHZpc2libGVIZWlnaHQoKSk7CiAKLSAgICBpZiAob2xkU2l6
ZSAhPSBtX3NpemUpCi0gICAgICAgIGQtPmRvRnVsbFJlcGFpbnQgPSB0cnVlOworICAgICAgICBp
ZiAob2xkU2l6ZSAhPSBtX3NpemUpCisgICAgICAgICAgICBkLT5kb0Z1bGxSZXBhaW50ID0gdHJ1
ZTsKKyAgICB9CiAgICAgCi0gICAgUmVuZGVyTGF5ZXIqIGxheWVyID0gcm9vdC0+bGF5ZXIoKTsK
KyAgICBSZW5kZXJMYXllciogbGF5ZXIgPSByb290LT5lbmNsb3NpbmdMYXllcigpOwogICAgICAK
ICAgICBpZiAoIWQtPmRvRnVsbFJlcGFpbnQpIHsKICAgICAgICAgbGF5ZXItPmNvbXB1dGVSZXBh
aW50UmVjdHMoKTsKICAgICAgICAgcm9vdC0+cmVwYWludE9iamVjdHNCZWZvcmVMYXlvdXQoKTsK
ICAgICB9CiAKKyAgICBpZiAoc3VidHJlZSkgeworICAgICAgICBpZiAocm9vdC0+cmVjYWxjTWlu
TWF4KCkpCisgICAgICAgICAgICByb290LT5yZWNhbGNNaW5NYXhXaWR0aHMoKTsKKyAgICB9CiAg
ICAgcm9vdC0+bGF5b3V0KCk7CisgICAgZC0+bGF5b3V0Um9vdCA9IDA7CiAKICAgICBtX2ZyYW1l
LT5pbnZhbGlkYXRlU2VsZWN0aW9uKCk7CiAgICAKICAgICBkLT5sYXlvdXRTY2hlZHVsaW5nRW5h
YmxlZD10cnVlOwogICAgIGQtPmxheW91dFN1cHByZXNzZWQgPSBmYWxzZTsKIAotICAgIGlmICgh
cm9vdC0+cHJpbnRpbmdNb2RlKCkpCisgICAgaWYgKCFzdWJ0cmVlICYmICFzdGF0aWNfY2FzdDxS
ZW5kZXJDYW52YXMqPihyb290KS0+cHJpbnRpbmdNb2RlKCkpCiAgICAgICAgIHJlc2l6ZUNvbnRl
bnRzKGxheWVyLT53aWR0aCgpLCBsYXllci0+aGVpZ2h0KCkpOwogCiAgICAgLy8gTm93IHVwZGF0
ZSB0aGUgcG9zaXRpb25zIG9mIGFsbCBsYXllcnMuCiAgICAgbGF5ZXItPnVwZGF0ZUxheWVyUG9z
aXRpb25zKGQtPmRvRnVsbFJlcGFpbnQpOwogCiAgICAgLy8gV2UgdXBkYXRlIG91ciB3aWRnZXQg
cG9zaXRpb25zIHJpZ2h0IGFmdGVyIGRvaW5nIGEgbGF5b3V0LgotICAgIHJvb3QtPnVwZGF0ZVdp
ZGdldFBvc2l0aW9ucygpOworICAgIGlmICghc3VidHJlZSkKKyAgICAgICAgc3RhdGljX2Nhc3Q8
UmVuZGVyQ2FudmFzKj4ocm9vdCktPnVwZGF0ZVdpZGdldFBvc2l0aW9ucygpOwogICAgIAogICAg
IGlmIChkLT5yZXBhaW50UmVjdHMgJiYgIWQtPnJlcGFpbnRSZWN0cy0+aXNFbXB0eSgpKSB7CiAg
ICAgICAgIC8vIEZJWE1FOiBDb3VsZCBvcHRpbWl6ZSB0aGlzIGFuZCBoYXZlIG9iamVjdHMgcmVt
b3ZlZCBmcm9tIHRoaXMgbGlzdApAQCAtMTA2Miw2ICsxMDc5LDExIEBAIHZvaWQgRnJhbWVWaWV3
Ojpob3ZlclRpbWVyRmlyZWQoVGltZXI8RnIKIAogdm9pZCBGcmFtZVZpZXc6OnNjaGVkdWxlUmVs
YXlvdXQoKQogeworICAgIGlmIChkLT5sYXlvdXRSb290KSB7CisgICAgICAgIGlmIChkLT5sYXlv
dXRSb290LT5yZW5kZXJlcigpKQorICAgICAgICAgICAgZC0+bGF5b3V0Um9vdC0+cmVuZGVyZXIo
KS0+bWFya0NvbnRhaW5pbmdCbG9ja3NGb3JMYXlvdXQoZmFsc2UpOworICAgICAgICBkLT5sYXlv
dXRSb290ID0gMDsKKyAgICB9CiAgICAgaWYgKCFkLT5sYXlvdXRTY2hlZHVsaW5nRW5hYmxlZCkK
ICAgICAgICAgcmV0dXJuOwogCkBAIC0xMDg0LDYgKzExMDYsMzEgQEAgdm9pZCBGcmFtZVZpZXc6
OnNjaGVkdWxlUmVsYXlvdXQoKQogICAgIGQtPmxheW91dFRpbWVyLnN0YXJ0T25lU2hvdChkZWxh
eSAqIDAuMDAxKTsKIH0KIAordm9pZCBGcmFtZVZpZXc6OnNjaGVkdWxlUmVsYXlvdXRPZlN1YnRy
ZWUoTm9kZSogbikKK3sKKyAgICBpZiAoIWQtPmxheW91dFNjaGVkdWxpbmdFbmFibGVkIHx8IG1f
ZnJhbWUtPmRvY3VtZW50KCkgJiYgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+cmVuZGVyZXIoKSAmJiBt
X2ZyYW1lLT5kb2N1bWVudCgpLT5yZW5kZXJlcigpLT5uZWVkc0xheW91dCgpKSB7CisgICAgICAg
IGlmIChuLT5yZW5kZXJlcigpKQorICAgICAgICAgICAgbi0+cmVuZGVyZXIoKS0+bWFya0NvbnRh
aW5pbmdCbG9ja3NGb3JMYXlvdXQoZmFsc2UpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgaWYgKGxheW91dFBlbmRpbmcoKSkgeworICAgICAgICBpZiAoZC0+bGF5b3V0Um9vdCAhPSBu
KSB7CisgICAgICAgICAgICAvLyBKdXN0IGRvIGEgZnVsbCByZWxheW91dAorICAgICAgICAgICAg
aWYgKGQtPmxheW91dFJvb3QgJiYgZC0+bGF5b3V0Um9vdC0+cmVuZGVyZXIoKSkKKyAgICAgICAg
ICAgICAgICBkLT5sYXlvdXRSb290LT5yZW5kZXJlcigpLT5tYXJrQ29udGFpbmluZ0Jsb2Nrc0Zv
ckxheW91dChmYWxzZSk7CisgICAgICAgICAgICBkLT5sYXlvdXRSb290ID0gMDsKKyAgICAgICAg
ICAgIGlmIChuLT5yZW5kZXJlcigpKQorICAgICAgICAgICAgICAgIG4tPnJlbmRlcmVyKCktPm1h
cmtDb250YWluaW5nQmxvY2tzRm9yTGF5b3V0KGZhbHNlKTsKKyAgICAgICAgfQorICAgIH0gZWxz
ZSB7CisgICAgICAgIGludCBkZWxheSA9IG1fZnJhbWUtPmRvY3VtZW50KCktPm1pbmltdW1MYXlv
dXREZWxheSgpOworICAgICAgICBkLT5sYXlvdXRSb290ID0gbjsKKyAgICAgICAgZC0+ZGVsYXll
ZExheW91dCA9IGRlbGF5ICE9IDA7CisgICAgICAgIGQtPmxheW91dFRpbWVyLnN0YXJ0T25lU2hv
dChkZWxheSAqIDAuMDAxKTsKKyAgICB9Cit9CisKIGJvb2wgRnJhbWVWaWV3OjpsYXlvdXRQZW5k
aW5nKCkKIHsKICAgICByZXR1cm4gZC0+bGF5b3V0VGltZXIuaXNBY3RpdmUoKTsKSW5kZXg6IFdl
YkNvcmUvcGFnZS9GcmFtZVZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRnJhbWVW
aWV3LmgJKHJldmlzaW9uIDE0NDgyKQorKysgV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMTUsNyArMTE1LDcgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgcHJp
bnQoKTsKIAotICAgIHZvaWQgbGF5b3V0KCk7CisgICAgdm9pZCBsYXlvdXQoYm9vbCBhbGxvd1N1
YnRyZWUgPSB0cnVlKTsKIAogICAgIGJvb2wgaW5MYXlvdXQoKSBjb25zdDsKICAgICBpbnQgbGF5
b3V0Q291bnQoKSBjb25zdDsKQEAgLTE1Miw2ICsxNTIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRUcmFuc3BhcmVudChib29sIGlzVHJhbnNwYXJlbnQpOwogICAgIAogICAgIHZvaWQgc2NoZWR1
bGVSZWxheW91dCgpOworICAgIHZvaWQgc2NoZWR1bGVSZWxheW91dE9mU3VidHJlZShOb2RlKik7
CiAgICAgdm9pZCB1bnNjaGVkdWxlUmVsYXlvdXQoKTsKICAgICBib29sIGhhdmVEZWxheWVkTGF5
b3V0U2NoZWR1bGVkKCk7CiAgICAgYm9vbCBsYXlvdXRQZW5kaW5nKCk7CkluZGV4OiBXZWJDb3Jl
L3BhZ2UvRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9GcmFtZS5jcHAJKHJl
dmlzaW9uIDE0NDgyKQorKysgV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjk4MCw3ICsyOTgwLDcgQEAgdm9pZCBGcmFtZTo6Zm9yY2VMYXlvdXQoKQogewogICAgIEZy
YW1lVmlldyAqdiA9IGQtPm1fdmlldy5nZXQoKTsKICAgICBpZiAodikgewotICAgICAgICB2LT5s
YXlvdXQoKTsKKyAgICAgICAgdi0+bGF5b3V0KGZhbHNlKTsKICAgICAgICAgLy8gV2UgY2Fubm90
IHVuc2NoZWR1bGUgYSBwZW5kaW5nIHJlbGF5b3V0LCBzaW5jZSB0aGUgZm9yY2UgY2FuIGJlIGNh
bGxlZCB3aXRoCiAgICAgICAgIC8vIGEgdGlueSByZWN0YW5nbGUgZnJvbSBhIGRyYXdSZWN0IHVw
ZGF0ZS4gIEJ5IHVuc2NoZWR1bGluZyB3ZSBpbiBlZmZlY3QKICAgICAgICAgLy8gInZhbGlkYXRl
IiBhbmQgc3RvcCB0aGUgbmVjZXNzYXJ5IGZ1bGwgcmVwYWludCBmcm9tIG9jY3VycmluZy4gIEJh
c2ljYWxseSBhbnkgYmFzaWMK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>8434</attachid>
            <date>2006-05-20 06:55:02 -0700</date>
            <delta_ts>2006-05-20 06:55:02 -0700</delta_ts>
            <desc>Test case for the repaint issue</desc>
            <filename>8969 repaint reduction.html</filename>
            <type>text/html</type>
            <size>239</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">PGJ1dHRvbiBvbmNsaWNrPSJ0LnN0eWxlLmhlaWdodD0nNXB4JyI+VGVzdDwvYnV0dG9uPgo8aHI+
CjxkaXYgc3R5bGU9ImhlaWdodDogNDAwcHg7Ij4KPGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5l
LWJsb2NrOyB3aWR0aDogMTAwcHg7IGhlaWdodDogMTAwcHg7IGJhY2tncm91bmQ6IGxpZ2h0Z3Jh
eTsiPjxkaXYgaWQ9InQiPjwvZGl2PjwvZGl2Pgo8ZGl2IHN0eWxlPSJmbG9hdDpsZWZ0OyI+PC9k
aXY+CjwvZGl2Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>8481</attachid>
            <date>2006-05-23 08:30:39 -0700</date>
            <delta_ts>2006-05-23 09:31:51 -0700</delta_ts>
            <desc>Revised patch</desc>
            <filename>8969_r1.patch</filename>
            <type>text/plain</type>
            <size>15893</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxNDUzMikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzUgQEAKKzIwMDYtIyMtIyMgIE1pdHogUGV0dGVsICA8b3BlbmRhcndpbi5vcmdA
bWl0enBldHRlbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgLSBmaXggZm9yIGh0dHA6Ly9idWd6aWxsYS5vcGVuZGFyd2luLm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9ODk2OQorICAgICAgICAgIFJFR1JFU1NJT046IHR5cGluZyBpbiB0ZXh0ZmllbGQg
cmVwYWludHMgd2hvbGUgd2ViIHBhZ2UgYXQgZ2FtZWZhcXMuY29tCisKKyAgICAgICAgTm8gdGVz
dCBwb3NzaWJsZSAobm8gZnVuY3Rpb25hbGl0eSBjaGFuZ2UpCisKKyAgICAgICAgKiBkb20vRG9j
dW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnVwZGF0ZUxheW91dCk6IENo
YW5nZWQgdG8gZW5zdXJlIHRoYXQgcGVuZGluZyBzdWJ0cmVlCisgICAgICAgIGxheW91dHMgYXJl
IHBlcmZvcm1lZCB0b28uCisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZTo6Zm9yY2VMYXlvdXQpOiBGb3JjZSBhIGZ1bGwgbGF5b3V0LgorICAgICAgICAq
IHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlld1ByaXZhdGU6
OnJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6bGF5b3V0KTogQ2hhbmdlZCB0
byByZWxheW91dCBvbmx5IHRoZSBzdWJ0cmVlIHJvb3RlZAorICAgICAgICBhdCBkLT5sYXlvdXRS
b290IGlmIGl0J3Mgbm9uLXplcm8gYW5kIGFsbG93U3VidHJlZSBpcyB0cnVlLgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVWaWV3OjpzY2hlZHVsZVJlbGF5b3V0KTogQ2hhbmdlIHBlbmRpbmcgc3Vi
dHJlZSByZWxheW91dCBpbnRvCisgICAgICAgIG5vcm1hbCByZWxheW91dCBieSBjbGVhcmluZyBk
LT5sYXlvdXRSb290IGFuZCBwcm9wYWdhdGluZyBuZWVkc0xheW91dCB0byB0aGUKKyAgICAgICAg
cm9vdC4gCisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnNjaGVkdWxlUmVsYXlvdXRPZlN1
YnRyZWUpOiBBZGRlZC4KKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5oOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0
OjptYXJrQ29udGFpbmluZ0Jsb2Nrc0ZvckxheW91dCk6IEFkZGVkIHNjaGVkdWxlUmVsYXlvdXQK
KyAgICAgICAgcGFyYW1ldGVyLiBGcmFtZVZpZXcgcGFzc2VzIGZhbHNlIHRvIGZvcmNlIG1hcmtp
bmcgYWxsIHRoZSB3YXkgdG8gdGhlIHJvb3QKKyAgICAgICAgd2hlbiB0dXJuaW5nIGEgcGVuZGlu
ZyBzdWJ0cmVlIHJlbGF5b3V0IGludG8gYSBmdWxsIHJlbGF5b3V0LiBPdGhlcndpc2UsCisgICAg
ICAgIG1hcmtpbmcgc3RvcHMgYXQgdGhlIGZpcnN0IG9iamVjdCB3aXRoIG92ZXJmbG93IGNsaXBw
aW5nIChvciBhdCB0aGUgcm9vdCkgYW5kCisgICAgICAgIHJlbGF5b3V0IG9mIHRoZSBsYXN0IG9i
amVjdCByZWFjaGVkIGlzIHNjaGVkdWxlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVj
dDo6c2NoZWR1bGVSZWxheW91dCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5o
OgorCiAyMDA2LTA1LTIyICBFcmljIFNlaWRlbCAgPGVyaWNAZXNlaWRlbC5jb20+CiAKICAgICAg
ICAgUnViYmVyLXN0YW1wZWQgYnkgYWRlbGUuCkluZGV4OiBXZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiAxNDUz
MikKKysrIFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODg1LDcg
Kzg4NSw3IEBAIHZvaWQgRG9jdW1lbnQ6OnVwZGF0ZUxheW91dCgpCiAgICAgdXBkYXRlUmVuZGVy
aW5nKCk7CiAKICAgICAvLyBPbmx5IGRvIGEgbGF5b3V0IGlmIGNoYW5nZXMgaGF2ZSBvY2N1cnJl
ZCB0aGF0IG1ha2UgaXQgbmVjZXNzYXJ5LiAgICAgIAotICAgIGlmIChtX3ZpZXcgJiYgcmVuZGVy
ZXIoKSAmJiByZW5kZXJlcigpLT5uZWVkc0xheW91dCgpKQorICAgIGlmIChtX3ZpZXcgJiYgcmVu
ZGVyZXIoKSAmJiAobV92aWV3LT5sYXlvdXRQZW5kaW5nKCkgfHwgcmVuZGVyZXIoKS0+bmVlZHNM
YXlvdXQoKSkpCiAgICAgICAgIG1fdmlldy0+bGF5b3V0KCk7CiB9CiAKSW5kZXg6IFdlYkNvcmUv
cGFnZS9GcmFtZVZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
Y3BwCShyZXZpc2lvbiAxNDUzMikKKysrIFdlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC04Niw2ICs4Niw3IEBAIHB1YmxpYzoKICAgICAgICAgY2xpY2tOb2RlID0g
MDsKICAgICAgICAgc2Nyb2xsaW5nU2VsZiA9IGZhbHNlOwogICAgICAgICBsYXlvdXRUaW1lci5z
dG9wKCk7CisgICAgICAgIGxheW91dFJvb3QgPSAwOwogICAgICAgICBkZWxheWVkTGF5b3V0ID0g
ZmFsc2U7CiAgICAgICAgIG1vdXNlUHJlc3NlZCA9IGZhbHNlOwogICAgICAgICBkb0Z1bGxSZXBh
aW50ID0gdHJ1ZTsKQEAgLTEyMiw2ICsxMjMsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzY3JvbGxp
bmdTZWxmOwogICAgIFRpbWVyPEZyYW1lVmlldz4gbGF5b3V0VGltZXI7CiAgICAgYm9vbCBkZWxh
eWVkTGF5b3V0OworICAgIFJlZlB0cjxOb2RlPiBsYXlvdXRSb290OwogICAgIAogICAgIGJvb2wg
bGF5b3V0U2NoZWR1bGluZ0VuYWJsZWQ7CiAgICAgYm9vbCBsYXlvdXRTdXBwcmVzc2VkOwpAQCAt
Mjk4LDcgKzMwMCw3IEBAIHZvaWQgRnJhbWVWaWV3OjphZGRSZXBhaW50SW5mbyhSZW5kZXJPYmoK
ICAgICBkLT5yZXBhaW50UmVjdHMtPmFwcGVuZChuZXcgUmVuZGVyT2JqZWN0OjpSZXBhaW50SW5m
byhvLCByKSk7CiB9CiAKLXZvaWQgRnJhbWVWaWV3OjpsYXlvdXQoKQordm9pZCBGcmFtZVZpZXc6
OmxheW91dChib29sIGFsbG93U3VidHJlZSkKIHsKICAgICBpZiAoZC0+bGF5b3V0U3VwcHJlc3Nl
ZCkKICAgICAgICAgcmV0dXJuOwpAQCAtMzEzLDYgKzMxNSwxMyBAQCB2b2lkIEZyYW1lVmlldzo6
bGF5b3V0KCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIGlmICghYWxsb3dTdWJ0cmVl
ICYmIGQtPmxheW91dFJvb3QpIHsKKyAgICAgICAgaWYgKGQtPmxheW91dFJvb3QtPnJlbmRlcmVy
KCkpCisgICAgICAgICAgICBkLT5sYXlvdXRSb290LT5yZW5kZXJlcigpLT5tYXJrQ29udGFpbmlu
Z0Jsb2Nrc0ZvckxheW91dChmYWxzZSk7CisgICAgICAgIGQtPmxheW91dFJvb3QgPSAwOworICAg
IH0KKworICAgIGJvb2wgc3VidHJlZSA9IGQtPmxheW91dFJvb3Q7CiAgICAgRG9jdW1lbnQqIGRv
Y3VtZW50ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKTsKICAgICBpZiAoIWRvY3VtZW50KSB7CiAgICAg
ICAgIC8vIEZJWE1FOiBTaG91bGQgd2Ugc2V0IG1fc2l6ZS5oZWlnaHQgaGVyZSB0b28/CkBAIC0z
MjAsNiArMzI5LDcgQEAgdm9pZCBGcmFtZVZpZXc6OmxheW91dCgpCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKKyAgICBOb2RlKiByb290Tm9kZSA9IHN1YnRyZWUgPyBkLT5sYXlvdXRSb290Lmdl
dCgpIDogZG9jdW1lbnQ7CiAgICAgZC0+bGF5b3V0U2NoZWR1bGluZ0VuYWJsZWQgPSBmYWxzZTsK
IAogICAgIC8vIEFsd2F5cyBlbnN1cmUgb3VyIHN0eWxlIGluZm8gaXMgdXAtdG8tZGF0ZS4gIFRo
aXMgY2FuIGhhcHBlbiBpbiBzaXR1YXRpb25zIHdoZXJlCkBAIC0zMjcsNyArMzM3LDcgQEAgdm9p
ZCBGcmFtZVZpZXc6OmxheW91dCgpCiAgICAgaWYgKGRvY3VtZW50LT5oYXNDaGFuZ2VkQ2hpbGQo
KSkKICAgICAgICAgZG9jdW1lbnQtPnJlY2FsY1N0eWxlKCk7CiAKLSAgICBSZW5kZXJDYW52YXMq
IHJvb3QgPSBzdGF0aWNfY2FzdDxSZW5kZXJDYW52YXMqPihkb2N1bWVudC0+cmVuZGVyZXIoKSk7
CisgICAgUmVuZGVyT2JqZWN0KiByb290ID0gcm9vdE5vZGUtPnJlbmRlcmVyKCk7CiAgICAgaWYg
KCFyb290KSB7CiAgICAgICAgIC8vIEZJWE1FOiBEbyB3ZSBuZWVkIHRvIHNldCBtX3NpemUgaGVy
ZT8KICAgICAgICAgZC0+bGF5b3V0U2NoZWR1bGluZ0VuYWJsZWQgPSB0cnVlOwpAQCAtMzM3LDkx
ICszNDcsOTkgQEAgdm9pZCBGcmFtZVZpZXc6OmxheW91dCgpCiAgICAgU2Nyb2xsQmFyTW9kZSBo
TW9kZSA9IGQtPmhtb2RlOwogICAgIFNjcm9sbEJhck1vZGUgdk1vZGUgPSBkLT52bW9kZTsKICAg
ICAKLSAgICBSZW5kZXJPYmplY3QqIHJvb3RSZW5kZXJlciA9IGRvY3VtZW50LT5kb2N1bWVudEVs
ZW1lbnQoKSA/IGRvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKS0+cmVuZGVyZXIoKSA6IDA7Ci0g
ICAgaWYgKGRvY3VtZW50LT5pc0hUTUxEb2N1bWVudCgpKSB7Ci0gICAgICAgIE5vZGUgKmJvZHkg
PSBzdGF0aWNfY2FzdDxIVE1MRG9jdW1lbnQqPihkb2N1bWVudCktPmJvZHkoKTsKLSAgICAgICAg
aWYgKGJvZHkgJiYgYm9keS0+cmVuZGVyZXIoKSkgewotICAgICAgICAgICAgaWYgKGJvZHktPmhh
c1RhZ05hbWUoZnJhbWVzZXRUYWcpKSB7Ci0gICAgICAgICAgICAgICAgYm9keS0+cmVuZGVyZXIo
KS0+c2V0TmVlZHNMYXlvdXQodHJ1ZSk7Ci0gICAgICAgICAgICAgICAgdk1vZGUgPSBTY3JvbGxC
YXJBbHdheXNPZmY7Ci0gICAgICAgICAgICAgICAgaE1vZGUgPSBTY3JvbGxCYXJBbHdheXNPZmY7
CisgICAgaWYgKCFzdWJ0cmVlKSB7CisgICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHN0YXRp
Y19jYXN0PERvY3VtZW50Kj4ocm9vdE5vZGUpOworICAgICAgICBSZW5kZXJPYmplY3QqIHJvb3RS
ZW5kZXJlciA9IGRvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKSA/IGRvY3VtZW50LT5kb2N1bWVu
dEVsZW1lbnQoKS0+cmVuZGVyZXIoKSA6IDA7CisgICAgICAgIGlmIChkb2N1bWVudC0+aXNIVE1M
RG9jdW1lbnQoKSkgeworICAgICAgICAgICAgTm9kZSAqYm9keSA9IHN0YXRpY19jYXN0PEhUTUxE
b2N1bWVudCo+KGRvY3VtZW50KS0+Ym9keSgpOworICAgICAgICAgICAgaWYgKGJvZHkgJiYgYm9k
eS0+cmVuZGVyZXIoKSkgeworICAgICAgICAgICAgICAgIGlmIChib2R5LT5oYXNUYWdOYW1lKGZy
YW1lc2V0VGFnKSkgeworICAgICAgICAgICAgICAgICAgICBib2R5LT5yZW5kZXJlcigpLT5zZXRO
ZWVkc0xheW91dCh0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgdk1vZGUgPSBTY3JvbGxCYXJB
bHdheXNPZmY7CisgICAgICAgICAgICAgICAgICAgIGhNb2RlID0gU2Nyb2xsQmFyQWx3YXlzT2Zm
OworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYm9keS0+aGFzVGFnTmFtZShib2R5VGFnKSkg
eworICAgICAgICAgICAgICAgICAgICBSZW5kZXJPYmplY3QqIG8gPSAocm9vdFJlbmRlcmVyLT5z
dHlsZSgpLT5vdmVyZmxvdygpID09IE9WSVNJQkxFKSA/IGJvZHktPnJlbmRlcmVyKCkgOiByb290
UmVuZGVyZXI7CisgICAgICAgICAgICAgICAgICAgIGFwcGx5T3ZlcmZsb3dUb1ZpZXdwb3J0KG8s
IGhNb2RlLCB2TW9kZSk7IC8vIE9ubHkgYXBwbGllcyB0byBIVE1MIFVBcywgbm90IHRvIFhNTC9Y
SFRNTCBVQXMKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBl
bHNlIGlmIChib2R5LT5oYXNUYWdOYW1lKGJvZHlUYWcpKSB7Ci0gICAgICAgICAgICAgICAgUmVu
ZGVyT2JqZWN0KiBvID0gKHJvb3RSZW5kZXJlci0+c3R5bGUoKS0+b3ZlcmZsb3coKSA9PSBPVklT
SUJMRSkgPyBib2R5LT5yZW5kZXJlcigpIDogcm9vdFJlbmRlcmVyOwotICAgICAgICAgICAgICAg
IGFwcGx5T3ZlcmZsb3dUb1ZpZXdwb3J0KG8sIGhNb2RlLCB2TW9kZSk7IC8vIE9ubHkgYXBwbGll
cyB0byBIVE1MIFVBcywgbm90IHRvIFhNTC9YSFRNTCBVQXMKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQotICAgIH0KLSAgICBlbHNlIGlmIChyb290UmVuZGVyZXIpCi0gICAgICAgIGFwcGx5T3Zl
cmZsb3dUb1ZpZXdwb3J0KHJvb3RSZW5kZXJlciwgaE1vZGUsIHZNb2RlKTsgLy8gWE1ML1hIVE1M
IFVBcyB1c2UgdGhlIHJvb3QgZWxlbWVudC4KLQorICAgICAgICB9IGVsc2UgaWYgKHJvb3RSZW5k
ZXJlcikKKyAgICAgICAgICAgIGFwcGx5T3ZlcmZsb3dUb1ZpZXdwb3J0KHJvb3RSZW5kZXJlciwg
aE1vZGUsIHZNb2RlKTsgLy8gWE1ML1hIVE1MIFVBcyB1c2UgdGhlIHJvb3QgZWxlbWVudC4KICNp
ZiBJTlNUUlVNRU5UX0xBWU9VVF9TQ0hFRFVMSU5HCi0gICAgaWYgKGQtPmZpcnN0TGF5b3V0ICYm
ICFkb2N1bWVudC0+b3duZXJFbGVtZW50KCkpCi0gICAgICAgIHByaW50ZigiRWxhcHNlZCB0aW1l
IGJlZm9yZSBmaXJzdCBsYXlvdXQ6ICVkXG4iLCBkb2N1bWVudC0+ZWxhcHNlZFRpbWUoKSk7Cisg
ICAgICAgIGlmIChkLT5maXJzdExheW91dCAmJiAhZG9jdW1lbnQtPm93bmVyRWxlbWVudCgpKQor
ICAgICAgICAgICAgcHJpbnRmKCJFbGFwc2VkIHRpbWUgYmVmb3JlIGZpcnN0IGxheW91dDogJWRc
biIsIGRvY3VtZW50LT5lbGFwc2VkVGltZSgpKTsKICNlbmRpZgorICAgIH0KIAotICAgIGQtPmRv
RnVsbFJlcGFpbnQgPSBkLT5maXJzdExheW91dCB8fCByb290LT5wcmludGluZ01vZGUoKTsKKyAg
ICBkLT5kb0Z1bGxSZXBhaW50ID0gIXN1YnRyZWUgJiYgKGQtPmZpcnN0TGF5b3V0IHx8IHN0YXRp
Y19jYXN0PFJlbmRlckNhbnZhcyo+KHJvb3QpLT5wcmludGluZ01vZGUoKSk7CiAgICAgaWYgKGQt
PnJlcGFpbnRSZWN0cykKICAgICAgICAgZC0+cmVwYWludFJlY3RzLT5jbGVhcigpOwogCi0gICAg
Ly8gTm93IHNldCBvdXIgc2Nyb2xsYmFyIHN0YXRlIGZvciB0aGUgbGF5b3V0LgotICAgIFNjcm9s
bEJhck1vZGUgY3VycmVudEhNb2RlID0gaFNjcm9sbEJhck1vZGUoKTsKLSAgICBTY3JvbGxCYXJN
b2RlIGN1cnJlbnRWTW9kZSA9IHZTY3JvbGxCYXJNb2RlKCk7Ci0KICAgICBib29sIGRpZEZpcnN0
TGF5b3V0ID0gZmFsc2U7Ci0gICAgaWYgKGQtPmZpcnN0TGF5b3V0IHx8IChoTW9kZSAhPSBjdXJy
ZW50SE1vZGUgfHwgdk1vZGUgIT0gY3VycmVudFZNb2RlKSkgewotICAgICAgICBzdXBwcmVzc1Nj
cm9sbEJhcnModHJ1ZSk7Ci0gICAgICAgIGlmIChkLT5maXJzdExheW91dCkgewotICAgICAgICAg
ICAgZC0+Zmlyc3RMYXlvdXQgPSBmYWxzZTsKLSAgICAgICAgICAgIGRpZEZpcnN0TGF5b3V0ID0g
dHJ1ZTsKKyAgICBpZiAoIXN1YnRyZWUpIHsKKyAgICAgICAgLy8gTm93IHNldCBvdXIgc2Nyb2xs
YmFyIHN0YXRlIGZvciB0aGUgbGF5b3V0LgorICAgICAgICBTY3JvbGxCYXJNb2RlIGN1cnJlbnRI
TW9kZSA9IGhTY3JvbGxCYXJNb2RlKCk7CisgICAgICAgIFNjcm9sbEJhck1vZGUgY3VycmVudFZN
b2RlID0gdlNjcm9sbEJhck1vZGUoKTsKKworICAgICAgICBpZiAoZC0+Zmlyc3RMYXlvdXQgfHwg
KGhNb2RlICE9IGN1cnJlbnRITW9kZSB8fCB2TW9kZSAhPSBjdXJyZW50Vk1vZGUpKSB7CisgICAg
ICAgICAgICBzdXBwcmVzc1Njcm9sbEJhcnModHJ1ZSk7CisgICAgICAgICAgICBpZiAoZC0+Zmly
c3RMYXlvdXQpIHsKKyAgICAgICAgICAgICAgICBkLT5maXJzdExheW91dCA9IGZhbHNlOworICAg
ICAgICAgICAgICAgIGRpZEZpcnN0TGF5b3V0ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAKKyAg
ICAgICAgICAgICAgICAvLyBTZXQgdGhlIGluaXRpYWwgdk1vZGUgdG8gQWx3YXlzT24gaWYgd2Un
cmUgYXV0by4KKyAgICAgICAgICAgICAgICBpZiAodk1vZGUgPT0gU2Nyb2xsQmFyQXV0bykKKyAg
ICAgICAgICAgICAgICAgICAgU2Nyb2xsVmlldzo6c2V0VlNjcm9sbEJhck1vZGUoU2Nyb2xsQmFy
QWx3YXlzT24pOyAvLyBUaGlzIGNhdXNlcyBhIHZlcnRpY2FsIHNjcm9sbGJhciB0byBhcHBlYXIu
CisgICAgICAgICAgICAgICAgLy8gU2V0IHRoZSBpbml0aWFsIGhNb2RlIHRvIEFsd2F5c09mZiBp
ZiB3ZSdyZSBhdXRvLgorICAgICAgICAgICAgICAgIGlmIChoTW9kZSA9PSBTY3JvbGxCYXJBdXRv
KQorICAgICAgICAgICAgICAgICAgICBTY3JvbGxWaWV3OjpzZXRIU2Nyb2xsQmFyTW9kZShTY3Jv
bGxCYXJBbHdheXNPZmYpOyAvLyBUaGlzIGNhdXNlcyBhIGhvcml6b250YWwgc2Nyb2xsYmFyIHRv
IGRpc2FwcGVhci4KKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAgICAgICAgLy8g
U2V0IHRoZSBpbml0aWFsIHZNb2RlIHRvIEFsd2F5c09uIGlmIHdlJ3JlIGF1dG8uCi0gICAgICAg
ICAgICBpZiAodk1vZGUgPT0gU2Nyb2xsQmFyQXV0bykKLSAgICAgICAgICAgICAgICBTY3JvbGxW
aWV3OjpzZXRWU2Nyb2xsQmFyTW9kZShTY3JvbGxCYXJBbHdheXNPbik7IC8vIFRoaXMgY2F1c2Vz
IGEgdmVydGljYWwgc2Nyb2xsYmFyIHRvIGFwcGVhci4KLSAgICAgICAgICAgIC8vIFNldCB0aGUg
aW5pdGlhbCBoTW9kZSB0byBBbHdheXNPZmYgaWYgd2UncmUgYXV0by4KLSAgICAgICAgICAgIGlm
IChoTW9kZSA9PSBTY3JvbGxCYXJBdXRvKQotICAgICAgICAgICAgICAgIFNjcm9sbFZpZXc6OnNl
dEhTY3JvbGxCYXJNb2RlKFNjcm9sbEJhckFsd2F5c09mZik7IC8vIFRoaXMgY2F1c2VzIGEgaG9y
aXpvbnRhbCBzY3JvbGxiYXIgdG8gZGlzYXBwZWFyLgotICAgICAgICB9Ci0gICAgICAgIAotICAg
ICAgICBpZiAoaE1vZGUgPT0gdk1vZGUpCi0gICAgICAgICAgICBTY3JvbGxWaWV3OjpzZXRTY3Jv
bGxCYXJzTW9kZShoTW9kZSk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgU2Nyb2xsVmll
dzo6c2V0SFNjcm9sbEJhck1vZGUoaE1vZGUpOwotICAgICAgICAgICAgU2Nyb2xsVmlldzo6c2V0
VlNjcm9sbEJhck1vZGUodk1vZGUpOwotICAgICAgICB9CisgICAgICAgICAgICBpZiAoaE1vZGUg
PT0gdk1vZGUpCisgICAgICAgICAgICAgICAgU2Nyb2xsVmlldzo6c2V0U2Nyb2xsQmFyc01vZGUo
aE1vZGUpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgU2Nyb2xsVmlldzo6
c2V0SFNjcm9sbEJhck1vZGUoaE1vZGUpOworICAgICAgICAgICAgICAgIFNjcm9sbFZpZXc6OnNl
dFZTY3JvbGxCYXJNb2RlKHZNb2RlKTsKKyAgICAgICAgICAgIH0KIAotICAgICAgICBzdXBwcmVz
c1Njcm9sbEJhcnMoZmFsc2UsIHRydWUpOwotICAgIH0KKyAgICAgICAgICAgIHN1cHByZXNzU2Ny
b2xsQmFycyhmYWxzZSwgdHJ1ZSk7CisgICAgICAgIH0KIAotICAgIEludFNpemUgb2xkU2l6ZSA9
IG1fc2l6ZTsKKyAgICAgICAgSW50U2l6ZSBvbGRTaXplID0gbV9zaXplOwogCi0gICAgbV9zaXpl
ID0gSW50U2l6ZSh2aXNpYmxlV2lkdGgoKSwgdmlzaWJsZUhlaWdodCgpKTsKKyAgICAgICAgbV9z
aXplID0gSW50U2l6ZSh2aXNpYmxlV2lkdGgoKSwgdmlzaWJsZUhlaWdodCgpKTsKIAotICAgIGlm
IChvbGRTaXplICE9IG1fc2l6ZSkKLSAgICAgICAgZC0+ZG9GdWxsUmVwYWludCA9IHRydWU7Cisg
ICAgICAgIGlmIChvbGRTaXplICE9IG1fc2l6ZSkKKyAgICAgICAgICAgIGQtPmRvRnVsbFJlcGFp
bnQgPSB0cnVlOworICAgIH0KICAgICAKLSAgICBSZW5kZXJMYXllciogbGF5ZXIgPSByb290LT5s
YXllcigpOworICAgIFJlbmRlckxheWVyKiBsYXllciA9IHJvb3QtPmVuY2xvc2luZ0xheWVyKCk7
CiAgICAgIAogICAgIGlmICghZC0+ZG9GdWxsUmVwYWludCkgewogICAgICAgICBsYXllci0+Y29t
cHV0ZVJlcGFpbnRSZWN0cygpOwogICAgICAgICByb290LT5yZXBhaW50T2JqZWN0c0JlZm9yZUxh
eW91dCgpOwogICAgIH0KIAorICAgIGlmIChzdWJ0cmVlKSB7CisgICAgICAgIGlmIChyb290LT5y
ZWNhbGNNaW5NYXgoKSkKKyAgICAgICAgICAgIHJvb3QtPnJlY2FsY01pbk1heFdpZHRocygpOwor
ICAgIH0KICAgICByb290LT5sYXlvdXQoKTsKKyAgICBkLT5sYXlvdXRSb290ID0gMDsKIAogICAg
IG1fZnJhbWUtPmludmFsaWRhdGVTZWxlY3Rpb24oKTsKICAgIAogICAgIGQtPmxheW91dFNjaGVk
dWxpbmdFbmFibGVkPXRydWU7CiAgICAgZC0+bGF5b3V0U3VwcHJlc3NlZCA9IGZhbHNlOwogCi0g
ICAgaWYgKCFyb290LT5wcmludGluZ01vZGUoKSkKKyAgICBpZiAoIXN1YnRyZWUgJiYgIXN0YXRp
Y19jYXN0PFJlbmRlckNhbnZhcyo+KHJvb3QpLT5wcmludGluZ01vZGUoKSkKICAgICAgICAgcmVz
aXplQ29udGVudHMobGF5ZXItPndpZHRoKCksIGxheWVyLT5oZWlnaHQoKSk7CiAKICAgICAvLyBO
b3cgdXBkYXRlIHRoZSBwb3NpdGlvbnMgb2YgYWxsIGxheWVycy4KICAgICBsYXllci0+dXBkYXRl
TGF5ZXJQb3NpdGlvbnMoZC0+ZG9GdWxsUmVwYWludCk7CiAKICAgICAvLyBXZSB1cGRhdGUgb3Vy
IHdpZGdldCBwb3NpdGlvbnMgcmlnaHQgYWZ0ZXIgZG9pbmcgYSBsYXlvdXQuCi0gICAgcm9vdC0+
dXBkYXRlV2lkZ2V0UG9zaXRpb25zKCk7CisgICAgaWYgKCFzdWJ0cmVlKQorICAgICAgICBzdGF0
aWNfY2FzdDxSZW5kZXJDYW52YXMqPihyb290KS0+dXBkYXRlV2lkZ2V0UG9zaXRpb25zKCk7CiAg
ICAgCiAgICAgaWYgKGQtPnJlcGFpbnRSZWN0cyAmJiAhZC0+cmVwYWludFJlY3RzLT5pc0VtcHR5
KCkpIHsKICAgICAgICAgLy8gRklYTUU6IENvdWxkIG9wdGltaXplIHRoaXMgYW5kIGhhdmUgb2Jq
ZWN0cyByZW1vdmVkIGZyb20gdGhpcyBsaXN0CkBAIC0xMDY1LDYgKzEwODMsMTEgQEAgdm9pZCBG
cmFtZVZpZXc6OmhvdmVyVGltZXJGaXJlZChUaW1lcjxGcgogCiB2b2lkIEZyYW1lVmlldzo6c2No
ZWR1bGVSZWxheW91dCgpCiB7CisgICAgaWYgKGQtPmxheW91dFJvb3QpIHsKKyAgICAgICAgaWYg
KGQtPmxheW91dFJvb3QtPnJlbmRlcmVyKCkpCisgICAgICAgICAgICBkLT5sYXlvdXRSb290LT5y
ZW5kZXJlcigpLT5tYXJrQ29udGFpbmluZ0Jsb2Nrc0ZvckxheW91dChmYWxzZSk7CisgICAgICAg
IGQtPmxheW91dFJvb3QgPSAwOworICAgIH0KICAgICBpZiAoIWQtPmxheW91dFNjaGVkdWxpbmdF
bmFibGVkKQogICAgICAgICByZXR1cm47CiAKQEAgLTEwODcsNiArMTExMCwzMSBAQCB2b2lkIEZy
YW1lVmlldzo6c2NoZWR1bGVSZWxheW91dCgpCiAgICAgZC0+bGF5b3V0VGltZXIuc3RhcnRPbmVT
aG90KGRlbGF5ICogMC4wMDEpOwogfQogCit2b2lkIEZyYW1lVmlldzo6c2NoZWR1bGVSZWxheW91
dE9mU3VidHJlZShOb2RlKiBuKQoreworICAgIGlmICghZC0+bGF5b3V0U2NoZWR1bGluZ0VuYWJs
ZWQgfHwgbV9mcmFtZS0+ZG9jdW1lbnQoKSAmJiBtX2ZyYW1lLT5kb2N1bWVudCgpLT5yZW5kZXJl
cigpICYmIG1fZnJhbWUtPmRvY3VtZW50KCktPnJlbmRlcmVyKCktPm5lZWRzTGF5b3V0KCkpIHsK
KyAgICAgICAgaWYgKG4tPnJlbmRlcmVyKCkpCisgICAgICAgICAgICBuLT5yZW5kZXJlcigpLT5t
YXJrQ29udGFpbmluZ0Jsb2Nrc0ZvckxheW91dChmYWxzZSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBpZiAobGF5b3V0UGVuZGluZygpKSB7CisgICAgICAgIGlmIChkLT5sYXlvdXRS
b290ICE9IG4pIHsKKyAgICAgICAgICAgIC8vIEp1c3QgZG8gYSBmdWxsIHJlbGF5b3V0CisgICAg
ICAgICAgICBpZiAoZC0+bGF5b3V0Um9vdCAmJiBkLT5sYXlvdXRSb290LT5yZW5kZXJlcigpKQor
ICAgICAgICAgICAgICAgIGQtPmxheW91dFJvb3QtPnJlbmRlcmVyKCktPm1hcmtDb250YWluaW5n
QmxvY2tzRm9yTGF5b3V0KGZhbHNlKTsKKyAgICAgICAgICAgIGQtPmxheW91dFJvb3QgPSAwOwor
ICAgICAgICAgICAgaWYgKG4tPnJlbmRlcmVyKCkpCisgICAgICAgICAgICAgICAgbi0+cmVuZGVy
ZXIoKS0+bWFya0NvbnRhaW5pbmdCbG9ja3NGb3JMYXlvdXQoZmFsc2UpOworICAgICAgICB9Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgaW50IGRlbGF5ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+bWlu
aW11bUxheW91dERlbGF5KCk7CisgICAgICAgIGQtPmxheW91dFJvb3QgPSBuOworICAgICAgICBk
LT5kZWxheWVkTGF5b3V0ID0gZGVsYXkgIT0gMDsKKyAgICAgICAgZC0+bGF5b3V0VGltZXIuc3Rh
cnRPbmVTaG90KGRlbGF5ICogMC4wMDEpOworICAgIH0KK30KKwogYm9vbCBGcmFtZVZpZXc6Omxh
eW91dFBlbmRpbmcoKQogewogICAgIHJldHVybiBkLT5sYXlvdXRUaW1lci5pc0FjdGl2ZSgpOwpJ
bmRleDogV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2Uv
RnJhbWUuY3BwCShyZXZpc2lvbiAxNDUzMikKKysrIFdlYkNvcmUvcGFnZS9GcmFtZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI5ODAsNyArMjk4MCw3IEBAIHZvaWQgRnJhbWU6OmZvcmNlTGF5b3V0
KCkKIHsKICAgICBGcmFtZVZpZXcgKnYgPSBkLT5tX3ZpZXcuZ2V0KCk7CiAgICAgaWYgKHYpIHsK
LSAgICAgICAgdi0+bGF5b3V0KCk7CisgICAgICAgIHYtPmxheW91dChmYWxzZSk7CiAgICAgICAg
IC8vIFdlIGNhbm5vdCB1bnNjaGVkdWxlIGEgcGVuZGluZyByZWxheW91dCwgc2luY2UgdGhlIGZv
cmNlIGNhbiBiZSBjYWxsZWQgd2l0aAogICAgICAgICAvLyBhIHRpbnkgcmVjdGFuZ2xlIGZyb20g
YSBkcmF3UmVjdCB1cGRhdGUuICBCeSB1bnNjaGVkdWxpbmcgd2UgaW4gZWZmZWN0CiAgICAgICAg
IC8vICJ2YWxpZGF0ZSIgYW5kIHN0b3AgdGhlIG5lY2Vzc2FyeSBmdWxsIHJlcGFpbnQgZnJvbSBv
Y2N1cnJpbmcuICBCYXNpY2FsbHkgYW55IGJhc2ljCkluZGV4OiBXZWJDb3JlL3BhZ2UvRnJhbWVW
aWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCShyZXZpc2lvbiAx
NDUzMikKKysrIFdlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtMTE1
LDcgKzExNSw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIHByaW50KCk7CiAKLSAgICB2b2lk
IGxheW91dCgpOworICAgIHZvaWQgbGF5b3V0KGJvb2wgYWxsb3dTdWJ0cmVlID0gdHJ1ZSk7CiAK
ICAgICBib29sIGluTGF5b3V0KCkgY29uc3Q7CiAgICAgaW50IGxheW91dENvdW50KCkgY29uc3Q7
CkBAIC0xNTIsNiArMTUyLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0VHJhbnNwYXJlbnQoYm9v
bCBpc1RyYW5zcGFyZW50KTsKICAgICAKICAgICB2b2lkIHNjaGVkdWxlUmVsYXlvdXQoKTsKKyAg
ICB2b2lkIHNjaGVkdWxlUmVsYXlvdXRPZlN1YnRyZWUoTm9kZSopOwogICAgIHZvaWQgdW5zY2hl
ZHVsZVJlbGF5b3V0KCk7CiAgICAgYm9vbCBoYXZlRGVsYXllZExheW91dFNjaGVkdWxlZCgpOwog
ICAgIGJvb2wgbGF5b3V0UGVuZGluZygpOwpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
T2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3Qu
Y3BwCShyZXZpc2lvbiAxNDUzMikKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTY4OSwxOCArNjg5LDE5IEBAIHZvaWQgUmVuZGVyT2JqZWN0
OjpzZXRDaGlsZE5lZWRzTGF5b3V0KGIKICAgICB9CiB9CiAKLXZvaWQgUmVuZGVyT2JqZWN0Ojpt
YXJrQ29udGFpbmluZ0Jsb2Nrc0ZvckxheW91dCgpCit2b2lkIFJlbmRlck9iamVjdDo6bWFya0Nv
bnRhaW5pbmdCbG9ja3NGb3JMYXlvdXQoYm9vbCBzY2hlZHVsZVJlbGF5b3V0KQogewogICAgIFJl
bmRlck9iamVjdCAqbyA9IGNvbnRhaW5lcigpOwogICAgIFJlbmRlck9iamVjdCAqbGFzdCA9IHRo
aXM7CiAKICAgICB3aGlsZSAobykgeworICAgICAgICBpZiAoc2NoZWR1bGVSZWxheW91dCAmJiBs
YXN0LT5oYXNPdmVyZmxvd0NsaXAoKSkKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBpZiAo
IWxhc3QtPmlzVGV4dCgpICYmIChsYXN0LT5zdHlsZSgpLT5wb3NpdGlvbigpID09IEZpeGVkUG9z
aXRpb24gfHwgbGFzdC0+c3R5bGUoKS0+cG9zaXRpb24oKSA9PSBBYnNvbHV0ZVBvc2l0aW9uKSkg
ewogICAgICAgICAgICAgaWYgKG8tPm1fcG9zQ2hpbGROZWVkc0xheW91dCkKICAgICAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICBvLT5tX3Bvc0NoaWxkTmVlZHNMYXlvdXQgPSB0cnVl
OwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgeworICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgaWYgKG8tPm1fbm9ybWFsQ2hpbGROZWVkc0xheW91dCkKICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICBvLT5tX25vcm1hbENoaWxkTmVlZHNMYXlvdXQgPSB0cnVlOwpAQCAt
NzEwLDcgKzcxMSw4IEBAIHZvaWQgUmVuZGVyT2JqZWN0OjptYXJrQ29udGFpbmluZ0Jsb2Nrc0YK
ICAgICAgICAgbyA9IG8tPmNvbnRhaW5lcigpOwogICAgIH0KIAotICAgIGxhc3QtPnNjaGVkdWxl
UmVsYXlvdXQoKTsKKyAgICBpZiAoc2NoZWR1bGVSZWxheW91dCkKKyAgICAgICAgbGFzdC0+c2No
ZWR1bGVSZWxheW91dCgpOwogfQogCiBSZW5kZXJCbG9jayogUmVuZGVyT2JqZWN0Ojpjb250YWlu
aW5nQmxvY2soKSBjb25zdApAQCAtMjI4OSwxMSArMjI5MSwxNSBAQCB2b2lkIFJlbmRlck9iamVj
dDo6cmVjYWxjTWluTWF4V2lkdGhzKCkKIAogdm9pZCBSZW5kZXJPYmplY3Q6OnNjaGVkdWxlUmVs
YXlvdXQoKQogewotICAgIGlmICghaXNDYW52YXMoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIEZy
YW1lVmlldyAqdmlldyA9IHN0YXRpY19jYXN0PFJlbmRlckNhbnZhcyAqPih0aGlzKS0+dmlldygp
OwotICAgIGlmICh2aWV3KQotICAgICAgICB2aWV3LT5zY2hlZHVsZVJlbGF5b3V0KCk7CisgICAg
aWYgKGlzQ2FudmFzKCkpIHsKKyAgICAgICAgRnJhbWVWaWV3KiB2aWV3ID0gc3RhdGljX2Nhc3Q8
UmVuZGVyQ2FudmFzKj4odGhpcyktPnZpZXcoKTsKKyAgICAgICAgaWYgKHZpZXcpCisgICAgICAg
ICAgICB2aWV3LT5zY2hlZHVsZVJlbGF5b3V0KCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgRnJh
bWVWaWV3KiB2aWV3ID0gY2FudmFzKCkgPyBjYW52YXMoKS0+dmlldygpIDogMDsKKyAgICAgICAg
aWYgKHZpZXcpCisgICAgICAgICAgICB2aWV3LT5zY2hlZHVsZVJlbGF5b3V0T2ZTdWJ0cmVlKG5v
ZGUoKSk7CisgICAgfQogfQogCiAKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVj
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCShyZXZp
c2lvbiAxNDUzMikKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMzksNyArMzM5LDcgQEAgcHVibGljOgogICAgIFJlbmRlck9iamVjdCogaG92
ZXJBbmNlc3RvcigpIGNvbnN0OwogCiAgICAgdmlydHVhbCB2b2lkIG1hcmtBbGxEZXNjZW5kYW50
c1dpdGhGbG9hdHNGb3JMYXlvdXQoUmVuZGVyT2JqZWN0KiBmbG9hdFRvUmVtb3ZlID0gMCk7Ci0g
ICAgdm9pZCBtYXJrQ29udGFpbmluZ0Jsb2Nrc0ZvckxheW91dCgpOworICAgIHZvaWQgbWFya0Nv
bnRhaW5pbmdCbG9ja3NGb3JMYXlvdXQoYm9vbCBzY2hlZHVsZVJlbGF5b3V0ID0gdHJ1ZSk7CiAg
ICAgdm9pZCBzZXROZWVkc0xheW91dChib29sIGIsIGJvb2wgbWFya1BhcmVudHMgPSB0cnVlKTsK
ICAgICB2b2lkIHNldENoaWxkTmVlZHNMYXlvdXQoYm9vbCBiLCBib29sIG1hcmtQYXJlbnRzID0g
dHJ1ZSk7CiAgICAgdm9pZCBzZXRNaW5NYXhLbm93bihib29sIGI9dHJ1ZSkgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>8483</attachid>
            <date>2006-05-23 09:31:51 -0700</date>
            <delta_ts>2006-05-26 15:13:46 -0700</delta_ts>
            <desc>Revised patch</desc>
            <filename>8969_r1.patch</filename>
            <type>text/plain</type>
            <size>15869</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxNDUzMikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzUgQEAKKzIwMDYtIyMtIyMgIE1pdHogUGV0dGVsICA8b3BlbmRhcndpbi5vcmdA
bWl0enBldHRlbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgLSBmaXggZm9yIGh0dHA6Ly9idWd6aWxsYS5vcGVuZGFyd2luLm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9ODk2OQorICAgICAgICAgIFJFR1JFU1NJT046IHR5cGluZyBpbiB0ZXh0ZmllbGQg
cmVwYWludHMgd2hvbGUgd2ViIHBhZ2UgYXQgZ2FtZWZhcXMuY29tCisKKyAgICAgICAgTm8gdGVz
dCBwb3NzaWJsZSAobm8gZnVuY3Rpb25hbGl0eSBjaGFuZ2UpCisKKyAgICAgICAgKiBkb20vRG9j
dW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnVwZGF0ZUxheW91dCk6IENo
YW5nZWQgdG8gZW5zdXJlIHRoYXQgcGVuZGluZyBzdWJ0cmVlCisgICAgICAgIGxheW91dHMgYXJl
IHBlcmZvcm1lZCB0b28uCisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZTo6Zm9yY2VMYXlvdXQpOiBGb3JjZSBhIGZ1bGwgbGF5b3V0LgorICAgICAgICAq
IHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlld1ByaXZhdGU6
OnJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6bGF5b3V0KTogQ2hhbmdlZCB0
byByZWxheW91dCBvbmx5IHRoZSBzdWJ0cmVlIHJvb3RlZAorICAgICAgICBhdCBkLT5sYXlvdXRS
b290IGlmIGl0J3Mgbm9uLXplcm8gYW5kIGFsbG93U3VidHJlZSBpcyB0cnVlLgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVWaWV3OjpzY2hlZHVsZVJlbGF5b3V0KTogQ2hhbmdlIHBlbmRpbmcgc3Vi
dHJlZSByZWxheW91dCBpbnRvCisgICAgICAgIG5vcm1hbCByZWxheW91dCBieSBjbGVhcmluZyBk
LT5sYXlvdXRSb290IGFuZCBwcm9wYWdhdGluZyBuZWVkc0xheW91dCB0byB0aGUKKyAgICAgICAg
cm9vdC4gCisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnNjaGVkdWxlUmVsYXlvdXRPZlN1
YnRyZWUpOiBBZGRlZC4KKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5oOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0
OjptYXJrQ29udGFpbmluZ0Jsb2Nrc0ZvckxheW91dCk6IEFkZGVkIHNjaGVkdWxlUmVsYXlvdXQK
KyAgICAgICAgcGFyYW1ldGVyLiBGcmFtZVZpZXcgcGFzc2VzIGZhbHNlIHRvIGZvcmNlIG1hcmtp
bmcgYWxsIHRoZSB3YXkgdG8gdGhlIHJvb3QKKyAgICAgICAgd2hlbiB0dXJuaW5nIGEgcGVuZGlu
ZyBzdWJ0cmVlIHJlbGF5b3V0IGludG8gYSBmdWxsIHJlbGF5b3V0LiBPdGhlcndpc2UsCisgICAg
ICAgIG1hcmtpbmcgc3RvcHMgYXQgdGhlIGZpcnN0IHRleHRGaWVsZCAob3IgYXQgdGhlIHJvb3Qp
IGFuZAorICAgICAgICByZWxheW91dCBvZiB0aGUgbGFzdCBvYmplY3QgcmVhY2hlZCBpcyBzY2hl
ZHVsZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnNjaGVkdWxlUmVsYXlvdXQp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuaDoKKwogMjAwNi0wNS0yMiAgRXJp
YyBTZWlkZWwgIDxlcmljQGVzZWlkZWwuY29tPgogCiAgICAgICAgIFJ1YmJlci1zdGFtcGVkIGJ5
IGFkZWxlLgpJbmRleDogV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gMTQ1MzIpCisrKyBXZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg4NSw3ICs4ODUsNyBAQCB2b2lkIERvY3Vt
ZW50Ojp1cGRhdGVMYXlvdXQoKQogICAgIHVwZGF0ZVJlbmRlcmluZygpOwogCiAgICAgLy8gT25s
eSBkbyBhIGxheW91dCBpZiBjaGFuZ2VzIGhhdmUgb2NjdXJyZWQgdGhhdCBtYWtlIGl0IG5lY2Vz
c2FyeS4gICAgICAKLSAgICBpZiAobV92aWV3ICYmIHJlbmRlcmVyKCkgJiYgcmVuZGVyZXIoKS0+
bmVlZHNMYXlvdXQoKSkKKyAgICBpZiAobV92aWV3ICYmIHJlbmRlcmVyKCkgJiYgKG1fdmlldy0+
bGF5b3V0UGVuZGluZygpIHx8IHJlbmRlcmVyKCktPm5lZWRzTGF5b3V0KCkpKQogICAgICAgICBt
X3ZpZXctPmxheW91dCgpOwogfQogCkluZGV4OiBXZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAkocmV2aXNpb24gMTQ1MzIp
CisrKyBXZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODYsNiAr
ODYsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNsaWNrTm9kZSA9IDA7CiAgICAgICAgIHNjcm9sbGlu
Z1NlbGYgPSBmYWxzZTsKICAgICAgICAgbGF5b3V0VGltZXIuc3RvcCgpOworICAgICAgICBsYXlv
dXRSb290ID0gMDsKICAgICAgICAgZGVsYXllZExheW91dCA9IGZhbHNlOwogICAgICAgICBtb3Vz
ZVByZXNzZWQgPSBmYWxzZTsKICAgICAgICAgZG9GdWxsUmVwYWludCA9IHRydWU7CkBAIC0xMjIs
NiArMTIzLDcgQEAgcHVibGljOgogICAgIGJvb2wgc2Nyb2xsaW5nU2VsZjsKICAgICBUaW1lcjxG
cmFtZVZpZXc+IGxheW91dFRpbWVyOwogICAgIGJvb2wgZGVsYXllZExheW91dDsKKyAgICBSZWZQ
dHI8Tm9kZT4gbGF5b3V0Um9vdDsKICAgICAKICAgICBib29sIGxheW91dFNjaGVkdWxpbmdFbmFi
bGVkOwogICAgIGJvb2wgbGF5b3V0U3VwcHJlc3NlZDsKQEAgLTI5OCw3ICszMDAsNyBAQCB2b2lk
IEZyYW1lVmlldzo6YWRkUmVwYWludEluZm8oUmVuZGVyT2JqCiAgICAgZC0+cmVwYWludFJlY3Rz
LT5hcHBlbmQobmV3IFJlbmRlck9iamVjdDo6UmVwYWludEluZm8obywgcikpOwogfQogCi12b2lk
IEZyYW1lVmlldzo6bGF5b3V0KCkKK3ZvaWQgRnJhbWVWaWV3OjpsYXlvdXQoYm9vbCBhbGxvd1N1
YnRyZWUpCiB7CiAgICAgaWYgKGQtPmxheW91dFN1cHByZXNzZWQpCiAgICAgICAgIHJldHVybjsK
QEAgLTMxMyw2ICszMTUsMTMgQEAgdm9pZCBGcmFtZVZpZXc6OmxheW91dCgpCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKKyAgICBpZiAoIWFsbG93U3VidHJlZSAmJiBkLT5sYXlvdXRSb290KSB7
CisgICAgICAgIGlmIChkLT5sYXlvdXRSb290LT5yZW5kZXJlcigpKQorICAgICAgICAgICAgZC0+
bGF5b3V0Um9vdC0+cmVuZGVyZXIoKS0+bWFya0NvbnRhaW5pbmdCbG9ja3NGb3JMYXlvdXQoZmFs
c2UpOworICAgICAgICBkLT5sYXlvdXRSb290ID0gMDsKKyAgICB9CisKKyAgICBib29sIHN1YnRy
ZWUgPSBkLT5sYXlvdXRSb290OwogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG1fZnJhbWUtPmRv
Y3VtZW50KCk7CiAgICAgaWYgKCFkb2N1bWVudCkgewogICAgICAgICAvLyBGSVhNRTogU2hvdWxk
IHdlIHNldCBtX3NpemUuaGVpZ2h0IGhlcmUgdG9vPwpAQCAtMzIwLDYgKzMyOSw3IEBAIHZvaWQg
RnJhbWVWaWV3OjpsYXlvdXQoKQogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgTm9kZSog
cm9vdE5vZGUgPSBzdWJ0cmVlID8gZC0+bGF5b3V0Um9vdC5nZXQoKSA6IGRvY3VtZW50OwogICAg
IGQtPmxheW91dFNjaGVkdWxpbmdFbmFibGVkID0gZmFsc2U7CiAKICAgICAvLyBBbHdheXMgZW5z
dXJlIG91ciBzdHlsZSBpbmZvIGlzIHVwLXRvLWRhdGUuICBUaGlzIGNhbiBoYXBwZW4gaW4gc2l0
dWF0aW9ucyB3aGVyZQpAQCAtMzI3LDcgKzMzNyw3IEBAIHZvaWQgRnJhbWVWaWV3OjpsYXlvdXQo
KQogICAgIGlmIChkb2N1bWVudC0+aGFzQ2hhbmdlZENoaWxkKCkpCiAgICAgICAgIGRvY3VtZW50
LT5yZWNhbGNTdHlsZSgpOwogCi0gICAgUmVuZGVyQ2FudmFzKiByb290ID0gc3RhdGljX2Nhc3Q8
UmVuZGVyQ2FudmFzKj4oZG9jdW1lbnQtPnJlbmRlcmVyKCkpOworICAgIFJlbmRlck9iamVjdCog
cm9vdCA9IHJvb3ROb2RlLT5yZW5kZXJlcigpOwogICAgIGlmICghcm9vdCkgewogICAgICAgICAv
LyBGSVhNRTogRG8gd2UgbmVlZCB0byBzZXQgbV9zaXplIGhlcmU/CiAgICAgICAgIGQtPmxheW91
dFNjaGVkdWxpbmdFbmFibGVkID0gdHJ1ZTsKQEAgLTMzNyw5MSArMzQ3LDk5IEBAIHZvaWQgRnJh
bWVWaWV3OjpsYXlvdXQoKQogICAgIFNjcm9sbEJhck1vZGUgaE1vZGUgPSBkLT5obW9kZTsKICAg
ICBTY3JvbGxCYXJNb2RlIHZNb2RlID0gZC0+dm1vZGU7CiAgICAgCi0gICAgUmVuZGVyT2JqZWN0
KiByb290UmVuZGVyZXIgPSBkb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCkgPyBkb2N1bWVudC0+
ZG9jdW1lbnRFbGVtZW50KCktPnJlbmRlcmVyKCkgOiAwOwotICAgIGlmIChkb2N1bWVudC0+aXNI
VE1MRG9jdW1lbnQoKSkgewotICAgICAgICBOb2RlICpib2R5ID0gc3RhdGljX2Nhc3Q8SFRNTERv
Y3VtZW50Kj4oZG9jdW1lbnQpLT5ib2R5KCk7Ci0gICAgICAgIGlmIChib2R5ICYmIGJvZHktPnJl
bmRlcmVyKCkpIHsKLSAgICAgICAgICAgIGlmIChib2R5LT5oYXNUYWdOYW1lKGZyYW1lc2V0VGFn
KSkgewotICAgICAgICAgICAgICAgIGJvZHktPnJlbmRlcmVyKCktPnNldE5lZWRzTGF5b3V0KHRy
dWUpOwotICAgICAgICAgICAgICAgIHZNb2RlID0gU2Nyb2xsQmFyQWx3YXlzT2ZmOwotICAgICAg
ICAgICAgICAgIGhNb2RlID0gU2Nyb2xsQmFyQWx3YXlzT2ZmOworICAgIGlmICghc3VidHJlZSkg
eworICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KHJv
b3ROb2RlKTsKKyAgICAgICAgUmVuZGVyT2JqZWN0KiByb290UmVuZGVyZXIgPSBkb2N1bWVudC0+
ZG9jdW1lbnRFbGVtZW50KCkgPyBkb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCktPnJlbmRlcmVy
KCkgOiAwOworICAgICAgICBpZiAoZG9jdW1lbnQtPmlzSFRNTERvY3VtZW50KCkpIHsKKyAgICAg
ICAgICAgIE5vZGUgKmJvZHkgPSBzdGF0aWNfY2FzdDxIVE1MRG9jdW1lbnQqPihkb2N1bWVudCkt
PmJvZHkoKTsKKyAgICAgICAgICAgIGlmIChib2R5ICYmIGJvZHktPnJlbmRlcmVyKCkpIHsKKyAg
ICAgICAgICAgICAgICBpZiAoYm9keS0+aGFzVGFnTmFtZShmcmFtZXNldFRhZykpIHsKKyAgICAg
ICAgICAgICAgICAgICAgYm9keS0+cmVuZGVyZXIoKS0+c2V0TmVlZHNMYXlvdXQodHJ1ZSk7Cisg
ICAgICAgICAgICAgICAgICAgIHZNb2RlID0gU2Nyb2xsQmFyQWx3YXlzT2ZmOworICAgICAgICAg
ICAgICAgICAgICBoTW9kZSA9IFNjcm9sbEJhckFsd2F5c09mZjsKKyAgICAgICAgICAgICAgICB9
IGVsc2UgaWYgKGJvZHktPmhhc1RhZ05hbWUoYm9keVRhZykpIHsKKyAgICAgICAgICAgICAgICAg
ICAgUmVuZGVyT2JqZWN0KiBvID0gKHJvb3RSZW5kZXJlci0+c3R5bGUoKS0+b3ZlcmZsb3coKSA9
PSBPVklTSUJMRSkgPyBib2R5LT5yZW5kZXJlcigpIDogcm9vdFJlbmRlcmVyOworICAgICAgICAg
ICAgICAgICAgICBhcHBseU92ZXJmbG93VG9WaWV3cG9ydChvLCBoTW9kZSwgdk1vZGUpOyAvLyBP
bmx5IGFwcGxpZXMgdG8gSFRNTCBVQXMsIG5vdCB0byBYTUwvWEhUTUwgVUFzCisgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAoYm9keS0+aGFzVGFn
TmFtZShib2R5VGFnKSkgewotICAgICAgICAgICAgICAgIFJlbmRlck9iamVjdCogbyA9IChyb290
UmVuZGVyZXItPnN0eWxlKCktPm92ZXJmbG93KCkgPT0gT1ZJU0lCTEUpID8gYm9keS0+cmVuZGVy
ZXIoKSA6IHJvb3RSZW5kZXJlcjsKLSAgICAgICAgICAgICAgICBhcHBseU92ZXJmbG93VG9WaWV3
cG9ydChvLCBoTW9kZSwgdk1vZGUpOyAvLyBPbmx5IGFwcGxpZXMgdG8gSFRNTCBVQXMsIG5vdCB0
byBYTUwvWEhUTUwgVUFzCi0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZWxz
ZSBpZiAocm9vdFJlbmRlcmVyKQotICAgICAgICBhcHBseU92ZXJmbG93VG9WaWV3cG9ydChyb290
UmVuZGVyZXIsIGhNb2RlLCB2TW9kZSk7IC8vIFhNTC9YSFRNTCBVQXMgdXNlIHRoZSByb290IGVs
ZW1lbnQuCi0KKyAgICAgICAgfSBlbHNlIGlmIChyb290UmVuZGVyZXIpCisgICAgICAgICAgICBh
cHBseU92ZXJmbG93VG9WaWV3cG9ydChyb290UmVuZGVyZXIsIGhNb2RlLCB2TW9kZSk7IC8vIFhN
TC9YSFRNTCBVQXMgdXNlIHRoZSByb290IGVsZW1lbnQuCiAjaWYgSU5TVFJVTUVOVF9MQVlPVVRf
U0NIRURVTElORwotICAgIGlmIChkLT5maXJzdExheW91dCAmJiAhZG9jdW1lbnQtPm93bmVyRWxl
bWVudCgpKQotICAgICAgICBwcmludGYoIkVsYXBzZWQgdGltZSBiZWZvcmUgZmlyc3QgbGF5b3V0
OiAlZFxuIiwgZG9jdW1lbnQtPmVsYXBzZWRUaW1lKCkpOworICAgICAgICBpZiAoZC0+Zmlyc3RM
YXlvdXQgJiYgIWRvY3VtZW50LT5vd25lckVsZW1lbnQoKSkKKyAgICAgICAgICAgIHByaW50Zigi
RWxhcHNlZCB0aW1lIGJlZm9yZSBmaXJzdCBsYXlvdXQ6ICVkXG4iLCBkb2N1bWVudC0+ZWxhcHNl
ZFRpbWUoKSk7CiAjZW5kaWYKKyAgICB9CiAKLSAgICBkLT5kb0Z1bGxSZXBhaW50ID0gZC0+Zmly
c3RMYXlvdXQgfHwgcm9vdC0+cHJpbnRpbmdNb2RlKCk7CisgICAgZC0+ZG9GdWxsUmVwYWludCA9
ICFzdWJ0cmVlICYmIChkLT5maXJzdExheW91dCB8fCBzdGF0aWNfY2FzdDxSZW5kZXJDYW52YXMq
Pihyb290KS0+cHJpbnRpbmdNb2RlKCkpOwogICAgIGlmIChkLT5yZXBhaW50UmVjdHMpCiAgICAg
ICAgIGQtPnJlcGFpbnRSZWN0cy0+Y2xlYXIoKTsKIAotICAgIC8vIE5vdyBzZXQgb3VyIHNjcm9s
bGJhciBzdGF0ZSBmb3IgdGhlIGxheW91dC4KLSAgICBTY3JvbGxCYXJNb2RlIGN1cnJlbnRITW9k
ZSA9IGhTY3JvbGxCYXJNb2RlKCk7Ci0gICAgU2Nyb2xsQmFyTW9kZSBjdXJyZW50Vk1vZGUgPSB2
U2Nyb2xsQmFyTW9kZSgpOwotCiAgICAgYm9vbCBkaWRGaXJzdExheW91dCA9IGZhbHNlOwotICAg
IGlmIChkLT5maXJzdExheW91dCB8fCAoaE1vZGUgIT0gY3VycmVudEhNb2RlIHx8IHZNb2RlICE9
IGN1cnJlbnRWTW9kZSkpIHsKLSAgICAgICAgc3VwcHJlc3NTY3JvbGxCYXJzKHRydWUpOwotICAg
ICAgICBpZiAoZC0+Zmlyc3RMYXlvdXQpIHsKLSAgICAgICAgICAgIGQtPmZpcnN0TGF5b3V0ID0g
ZmFsc2U7Ci0gICAgICAgICAgICBkaWRGaXJzdExheW91dCA9IHRydWU7CisgICAgaWYgKCFzdWJ0
cmVlKSB7CisgICAgICAgIC8vIE5vdyBzZXQgb3VyIHNjcm9sbGJhciBzdGF0ZSBmb3IgdGhlIGxh
eW91dC4KKyAgICAgICAgU2Nyb2xsQmFyTW9kZSBjdXJyZW50SE1vZGUgPSBoU2Nyb2xsQmFyTW9k
ZSgpOworICAgICAgICBTY3JvbGxCYXJNb2RlIGN1cnJlbnRWTW9kZSA9IHZTY3JvbGxCYXJNb2Rl
KCk7CisKKyAgICAgICAgaWYgKGQtPmZpcnN0TGF5b3V0IHx8IChoTW9kZSAhPSBjdXJyZW50SE1v
ZGUgfHwgdk1vZGUgIT0gY3VycmVudFZNb2RlKSkgeworICAgICAgICAgICAgc3VwcHJlc3NTY3Jv
bGxCYXJzKHRydWUpOworICAgICAgICAgICAgaWYgKGQtPmZpcnN0TGF5b3V0KSB7CisgICAgICAg
ICAgICAgICAgZC0+Zmlyc3RMYXlvdXQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBkaWRGaXJz
dExheW91dCA9IHRydWU7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgLy8gU2V0
IHRoZSBpbml0aWFsIHZNb2RlIHRvIEFsd2F5c09uIGlmIHdlJ3JlIGF1dG8uCisgICAgICAgICAg
ICAgICAgaWYgKHZNb2RlID09IFNjcm9sbEJhckF1dG8pCisgICAgICAgICAgICAgICAgICAgIFNj
cm9sbFZpZXc6OnNldFZTY3JvbGxCYXJNb2RlKFNjcm9sbEJhckFsd2F5c09uKTsgLy8gVGhpcyBj
YXVzZXMgYSB2ZXJ0aWNhbCBzY3JvbGxiYXIgdG8gYXBwZWFyLgorICAgICAgICAgICAgICAgIC8v
IFNldCB0aGUgaW5pdGlhbCBoTW9kZSB0byBBbHdheXNPZmYgaWYgd2UncmUgYXV0by4KKyAgICAg
ICAgICAgICAgICBpZiAoaE1vZGUgPT0gU2Nyb2xsQmFyQXV0bykKKyAgICAgICAgICAgICAgICAg
ICAgU2Nyb2xsVmlldzo6c2V0SFNjcm9sbEJhck1vZGUoU2Nyb2xsQmFyQWx3YXlzT2ZmKTsgLy8g
VGhpcyBjYXVzZXMgYSBob3Jpem9udGFsIHNjcm9sbGJhciB0byBkaXNhcHBlYXIuCisgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIC8vIFNldCB0aGUgaW5pdGlhbCB2TW9k
ZSB0byBBbHdheXNPbiBpZiB3ZSdyZSBhdXRvLgotICAgICAgICAgICAgaWYgKHZNb2RlID09IFNj
cm9sbEJhckF1dG8pCi0gICAgICAgICAgICAgICAgU2Nyb2xsVmlldzo6c2V0VlNjcm9sbEJhck1v
ZGUoU2Nyb2xsQmFyQWx3YXlzT24pOyAvLyBUaGlzIGNhdXNlcyBhIHZlcnRpY2FsIHNjcm9sbGJh
ciB0byBhcHBlYXIuCi0gICAgICAgICAgICAvLyBTZXQgdGhlIGluaXRpYWwgaE1vZGUgdG8gQWx3
YXlzT2ZmIGlmIHdlJ3JlIGF1dG8uCi0gICAgICAgICAgICBpZiAoaE1vZGUgPT0gU2Nyb2xsQmFy
QXV0bykKLSAgICAgICAgICAgICAgICBTY3JvbGxWaWV3OjpzZXRIU2Nyb2xsQmFyTW9kZShTY3Jv
bGxCYXJBbHdheXNPZmYpOyAvLyBUaGlzIGNhdXNlcyBhIGhvcml6b250YWwgc2Nyb2xsYmFyIHRv
IGRpc2FwcGVhci4KLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgaWYgKGhNb2RlID09IHZN
b2RlKQotICAgICAgICAgICAgU2Nyb2xsVmlldzo6c2V0U2Nyb2xsQmFyc01vZGUoaE1vZGUpOwot
ICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFNjcm9sbFZpZXc6OnNldEhTY3JvbGxCYXJNb2Rl
KGhNb2RlKTsKLSAgICAgICAgICAgIFNjcm9sbFZpZXc6OnNldFZTY3JvbGxCYXJNb2RlKHZNb2Rl
KTsKLSAgICAgICAgfQorICAgICAgICAgICAgaWYgKGhNb2RlID09IHZNb2RlKQorICAgICAgICAg
ICAgICAgIFNjcm9sbFZpZXc6OnNldFNjcm9sbEJhcnNNb2RlKGhNb2RlKTsKKyAgICAgICAgICAg
IGVsc2UgeworICAgICAgICAgICAgICAgIFNjcm9sbFZpZXc6OnNldEhTY3JvbGxCYXJNb2RlKGhN
b2RlKTsKKyAgICAgICAgICAgICAgICBTY3JvbGxWaWV3OjpzZXRWU2Nyb2xsQmFyTW9kZSh2TW9k
ZSk7CisgICAgICAgICAgICB9CiAKLSAgICAgICAgc3VwcHJlc3NTY3JvbGxCYXJzKGZhbHNlLCB0
cnVlKTsKLSAgICB9CisgICAgICAgICAgICBzdXBwcmVzc1Njcm9sbEJhcnMoZmFsc2UsIHRydWUp
OworICAgICAgICB9CiAKLSAgICBJbnRTaXplIG9sZFNpemUgPSBtX3NpemU7CisgICAgICAgIElu
dFNpemUgb2xkU2l6ZSA9IG1fc2l6ZTsKIAotICAgIG1fc2l6ZSA9IEludFNpemUodmlzaWJsZVdp
ZHRoKCksIHZpc2libGVIZWlnaHQoKSk7CisgICAgICAgIG1fc2l6ZSA9IEludFNpemUodmlzaWJs
ZVdpZHRoKCksIHZpc2libGVIZWlnaHQoKSk7CiAKLSAgICBpZiAob2xkU2l6ZSAhPSBtX3NpemUp
Ci0gICAgICAgIGQtPmRvRnVsbFJlcGFpbnQgPSB0cnVlOworICAgICAgICBpZiAob2xkU2l6ZSAh
PSBtX3NpemUpCisgICAgICAgICAgICBkLT5kb0Z1bGxSZXBhaW50ID0gdHJ1ZTsKKyAgICB9CiAg
ICAgCi0gICAgUmVuZGVyTGF5ZXIqIGxheWVyID0gcm9vdC0+bGF5ZXIoKTsKKyAgICBSZW5kZXJM
YXllciogbGF5ZXIgPSByb290LT5lbmNsb3NpbmdMYXllcigpOwogICAgICAKICAgICBpZiAoIWQt
PmRvRnVsbFJlcGFpbnQpIHsKICAgICAgICAgbGF5ZXItPmNvbXB1dGVSZXBhaW50UmVjdHMoKTsK
ICAgICAgICAgcm9vdC0+cmVwYWludE9iamVjdHNCZWZvcmVMYXlvdXQoKTsKICAgICB9CiAKKyAg
ICBpZiAoc3VidHJlZSkgeworICAgICAgICBpZiAocm9vdC0+cmVjYWxjTWluTWF4KCkpCisgICAg
ICAgICAgICByb290LT5yZWNhbGNNaW5NYXhXaWR0aHMoKTsKKyAgICB9CiAgICAgcm9vdC0+bGF5
b3V0KCk7CisgICAgZC0+bGF5b3V0Um9vdCA9IDA7CiAKICAgICBtX2ZyYW1lLT5pbnZhbGlkYXRl
U2VsZWN0aW9uKCk7CiAgICAKICAgICBkLT5sYXlvdXRTY2hlZHVsaW5nRW5hYmxlZD10cnVlOwog
ICAgIGQtPmxheW91dFN1cHByZXNzZWQgPSBmYWxzZTsKIAotICAgIGlmICghcm9vdC0+cHJpbnRp
bmdNb2RlKCkpCisgICAgaWYgKCFzdWJ0cmVlICYmICFzdGF0aWNfY2FzdDxSZW5kZXJDYW52YXMq
Pihyb290KS0+cHJpbnRpbmdNb2RlKCkpCiAgICAgICAgIHJlc2l6ZUNvbnRlbnRzKGxheWVyLT53
aWR0aCgpLCBsYXllci0+aGVpZ2h0KCkpOwogCiAgICAgLy8gTm93IHVwZGF0ZSB0aGUgcG9zaXRp
b25zIG9mIGFsbCBsYXllcnMuCiAgICAgbGF5ZXItPnVwZGF0ZUxheWVyUG9zaXRpb25zKGQtPmRv
RnVsbFJlcGFpbnQpOwogCiAgICAgLy8gV2UgdXBkYXRlIG91ciB3aWRnZXQgcG9zaXRpb25zIHJp
Z2h0IGFmdGVyIGRvaW5nIGEgbGF5b3V0LgotICAgIHJvb3QtPnVwZGF0ZVdpZGdldFBvc2l0aW9u
cygpOworICAgIGlmICghc3VidHJlZSkKKyAgICAgICAgc3RhdGljX2Nhc3Q8UmVuZGVyQ2FudmFz
Kj4ocm9vdCktPnVwZGF0ZVdpZGdldFBvc2l0aW9ucygpOwogICAgIAogICAgIGlmIChkLT5yZXBh
aW50UmVjdHMgJiYgIWQtPnJlcGFpbnRSZWN0cy0+aXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIEZJ
WE1FOiBDb3VsZCBvcHRpbWl6ZSB0aGlzIGFuZCBoYXZlIG9iamVjdHMgcmVtb3ZlZCBmcm9tIHRo
aXMgbGlzdApAQCAtMTA2NSw2ICsxMDgzLDExIEBAIHZvaWQgRnJhbWVWaWV3Ojpob3ZlclRpbWVy
RmlyZWQoVGltZXI8RnIKIAogdm9pZCBGcmFtZVZpZXc6OnNjaGVkdWxlUmVsYXlvdXQoKQogewor
ICAgIGlmIChkLT5sYXlvdXRSb290KSB7CisgICAgICAgIGlmIChkLT5sYXlvdXRSb290LT5yZW5k
ZXJlcigpKQorICAgICAgICAgICAgZC0+bGF5b3V0Um9vdC0+cmVuZGVyZXIoKS0+bWFya0NvbnRh
aW5pbmdCbG9ja3NGb3JMYXlvdXQoZmFsc2UpOworICAgICAgICBkLT5sYXlvdXRSb290ID0gMDsK
KyAgICB9CiAgICAgaWYgKCFkLT5sYXlvdXRTY2hlZHVsaW5nRW5hYmxlZCkKICAgICAgICAgcmV0
dXJuOwogCkBAIC0xMDg3LDYgKzExMTAsMzEgQEAgdm9pZCBGcmFtZVZpZXc6OnNjaGVkdWxlUmVs
YXlvdXQoKQogICAgIGQtPmxheW91dFRpbWVyLnN0YXJ0T25lU2hvdChkZWxheSAqIDAuMDAxKTsK
IH0KIAordm9pZCBGcmFtZVZpZXc6OnNjaGVkdWxlUmVsYXlvdXRPZlN1YnRyZWUoTm9kZSogbikK
K3sKKyAgICBpZiAoIWQtPmxheW91dFNjaGVkdWxpbmdFbmFibGVkIHx8IG1fZnJhbWUtPmRvY3Vt
ZW50KCkgJiYgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+cmVuZGVyZXIoKSAmJiBtX2ZyYW1lLT5kb2N1
bWVudCgpLT5yZW5kZXJlcigpLT5uZWVkc0xheW91dCgpKSB7CisgICAgICAgIGlmIChuLT5yZW5k
ZXJlcigpKQorICAgICAgICAgICAgbi0+cmVuZGVyZXIoKS0+bWFya0NvbnRhaW5pbmdCbG9ja3NG
b3JMYXlvdXQoZmFsc2UpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKGxheW91
dFBlbmRpbmcoKSkgeworICAgICAgICBpZiAoZC0+bGF5b3V0Um9vdCAhPSBuKSB7CisgICAgICAg
ICAgICAvLyBKdXN0IGRvIGEgZnVsbCByZWxheW91dAorICAgICAgICAgICAgaWYgKGQtPmxheW91
dFJvb3QgJiYgZC0+bGF5b3V0Um9vdC0+cmVuZGVyZXIoKSkKKyAgICAgICAgICAgICAgICBkLT5s
YXlvdXRSb290LT5yZW5kZXJlcigpLT5tYXJrQ29udGFpbmluZ0Jsb2Nrc0ZvckxheW91dChmYWxz
ZSk7CisgICAgICAgICAgICBkLT5sYXlvdXRSb290ID0gMDsKKyAgICAgICAgICAgIGlmIChuLT5y
ZW5kZXJlcigpKQorICAgICAgICAgICAgICAgIG4tPnJlbmRlcmVyKCktPm1hcmtDb250YWluaW5n
QmxvY2tzRm9yTGF5b3V0KGZhbHNlKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAg
IGludCBkZWxheSA9IG1fZnJhbWUtPmRvY3VtZW50KCktPm1pbmltdW1MYXlvdXREZWxheSgpOwor
ICAgICAgICBkLT5sYXlvdXRSb290ID0gbjsKKyAgICAgICAgZC0+ZGVsYXllZExheW91dCA9IGRl
bGF5ICE9IDA7CisgICAgICAgIGQtPmxheW91dFRpbWVyLnN0YXJ0T25lU2hvdChkZWxheSAqIDAu
MDAxKTsKKyAgICB9Cit9CisKIGJvb2wgRnJhbWVWaWV3OjpsYXlvdXRQZW5kaW5nKCkKIHsKICAg
ICByZXR1cm4gZC0+bGF5b3V0VGltZXIuaXNBY3RpdmUoKTsKSW5kZXg6IFdlYkNvcmUvcGFnZS9G
cmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAkocmV2aXNpb24g
MTQ1MzIpCisrKyBXZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTgw
LDcgKzI5ODAsNyBAQCB2b2lkIEZyYW1lOjpmb3JjZUxheW91dCgpCiB7CiAgICAgRnJhbWVWaWV3
ICp2ID0gZC0+bV92aWV3LmdldCgpOwogICAgIGlmICh2KSB7Ci0gICAgICAgIHYtPmxheW91dCgp
OworICAgICAgICB2LT5sYXlvdXQoZmFsc2UpOwogICAgICAgICAvLyBXZSBjYW5ub3QgdW5zY2hl
ZHVsZSBhIHBlbmRpbmcgcmVsYXlvdXQsIHNpbmNlIHRoZSBmb3JjZSBjYW4gYmUgY2FsbGVkIHdp
dGgKICAgICAgICAgLy8gYSB0aW55IHJlY3RhbmdsZSBmcm9tIGEgZHJhd1JlY3QgdXBkYXRlLiAg
QnkgdW5zY2hlZHVsaW5nIHdlIGluIGVmZmVjdAogICAgICAgICAvLyAidmFsaWRhdGUiIGFuZCBz
dG9wIHRoZSBuZWNlc3NhcnkgZnVsbCByZXBhaW50IGZyb20gb2NjdXJyaW5nLiAgQmFzaWNhbGx5
IGFueSBiYXNpYwpJbmRleDogV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAkocmV2aXNpb24gMTQ1MzIpCisrKyBXZWJDb3JlL3Bh
Z2UvRnJhbWVWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTExNSw3ICsxMTUsNyBAQCBwdWJsaWM6
CiAgICAgCiAgICAgdm9pZCBwcmludCgpOwogCi0gICAgdm9pZCBsYXlvdXQoKTsKKyAgICB2b2lk
IGxheW91dChib29sIGFsbG93U3VidHJlZSA9IHRydWUpOwogCiAgICAgYm9vbCBpbkxheW91dCgp
IGNvbnN0OwogICAgIGludCBsYXlvdXRDb3VudCgpIGNvbnN0OwpAQCAtMTUyLDYgKzE1Miw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldFRyYW5zcGFyZW50KGJvb2wgaXNUcmFuc3BhcmVudCk7CiAg
ICAgCiAgICAgdm9pZCBzY2hlZHVsZVJlbGF5b3V0KCk7CisgICAgdm9pZCBzY2hlZHVsZVJlbGF5
b3V0T2ZTdWJ0cmVlKE5vZGUqKTsKICAgICB2b2lkIHVuc2NoZWR1bGVSZWxheW91dCgpOwogICAg
IGJvb2wgaGF2ZURlbGF5ZWRMYXlvdXRTY2hlZHVsZWQoKTsKICAgICBib29sIGxheW91dFBlbmRp
bmcoKTsKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAkocmV2aXNpb24gMTQ1MzIp
CisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02ODksMTggKzY4OSwxOSBAQCB2b2lkIFJlbmRlck9iamVjdDo6c2V0Q2hpbGROZWVkc0xheW91
dChiCiAgICAgfQogfQogCi12b2lkIFJlbmRlck9iamVjdDo6bWFya0NvbnRhaW5pbmdCbG9ja3NG
b3JMYXlvdXQoKQordm9pZCBSZW5kZXJPYmplY3Q6Om1hcmtDb250YWluaW5nQmxvY2tzRm9yTGF5
b3V0KGJvb2wgc2NoZWR1bGVSZWxheW91dCkKIHsKICAgICBSZW5kZXJPYmplY3QgKm8gPSBjb250
YWluZXIoKTsKICAgICBSZW5kZXJPYmplY3QgKmxhc3QgPSB0aGlzOwogCiAgICAgd2hpbGUgKG8p
IHsKKyAgICAgICAgaWYgKHNjaGVkdWxlUmVsYXlvdXQgJiYgbGFzdC0+aXNUZXh0RmllbGQoKSkK
KyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBpZiAoIWxhc3QtPmlzVGV4dCgpICYmIChsYXN0
LT5zdHlsZSgpLT5wb3NpdGlvbigpID09IEZpeGVkUG9zaXRpb24gfHwgbGFzdC0+c3R5bGUoKS0+
cG9zaXRpb24oKSA9PSBBYnNvbHV0ZVBvc2l0aW9uKSkgewogICAgICAgICAgICAgaWYgKG8tPm1f
cG9zQ2hpbGROZWVkc0xheW91dCkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAg
ICBvLT5tX3Bvc0NoaWxkTmVlZHNMYXlvdXQgPSB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIGVs
c2UgeworICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgaWYgKG8tPm1fbm9ybWFsQ2hpbGRO
ZWVkc0xheW91dCkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBvLT5tX25v
cm1hbENoaWxkTmVlZHNMYXlvdXQgPSB0cnVlOwpAQCAtNzEwLDcgKzcxMSw4IEBAIHZvaWQgUmVu
ZGVyT2JqZWN0OjptYXJrQ29udGFpbmluZ0Jsb2Nrc0YKICAgICAgICAgbyA9IG8tPmNvbnRhaW5l
cigpOwogICAgIH0KIAotICAgIGxhc3QtPnNjaGVkdWxlUmVsYXlvdXQoKTsKKyAgICBpZiAoc2No
ZWR1bGVSZWxheW91dCkKKyAgICAgICAgbGFzdC0+c2NoZWR1bGVSZWxheW91dCgpOwogfQogCiBS
ZW5kZXJCbG9jayogUmVuZGVyT2JqZWN0Ojpjb250YWluaW5nQmxvY2soKSBjb25zdApAQCAtMjI4
OSwxMSArMjI5MSwxNSBAQCB2b2lkIFJlbmRlck9iamVjdDo6cmVjYWxjTWluTWF4V2lkdGhzKCkK
IAogdm9pZCBSZW5kZXJPYmplY3Q6OnNjaGVkdWxlUmVsYXlvdXQoKQogewotICAgIGlmICghaXND
YW52YXMoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIEZyYW1lVmlldyAqdmlldyA9IHN0YXRpY19j
YXN0PFJlbmRlckNhbnZhcyAqPih0aGlzKS0+dmlldygpOwotICAgIGlmICh2aWV3KQotICAgICAg
ICB2aWV3LT5zY2hlZHVsZVJlbGF5b3V0KCk7CisgICAgaWYgKGlzQ2FudmFzKCkpIHsKKyAgICAg
ICAgRnJhbWVWaWV3KiB2aWV3ID0gc3RhdGljX2Nhc3Q8UmVuZGVyQ2FudmFzKj4odGhpcyktPnZp
ZXcoKTsKKyAgICAgICAgaWYgKHZpZXcpCisgICAgICAgICAgICB2aWV3LT5zY2hlZHVsZVJlbGF5
b3V0KCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgRnJhbWVWaWV3KiB2aWV3ID0gY2FudmFzKCkg
PyBjYW52YXMoKS0+dmlldygpIDogMDsKKyAgICAgICAgaWYgKHZpZXcpCisgICAgICAgICAgICB2
aWV3LT5zY2hlZHVsZVJlbGF5b3V0T2ZTdWJ0cmVlKG5vZGUoKSk7CisgICAgfQogfQogCiAKSW5k
ZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCShyZXZpc2lvbiAxNDUzMikKKysrIFdlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMzksNyArMzM5LDcg
QEAgcHVibGljOgogICAgIFJlbmRlck9iamVjdCogaG92ZXJBbmNlc3RvcigpIGNvbnN0OwogCiAg
ICAgdmlydHVhbCB2b2lkIG1hcmtBbGxEZXNjZW5kYW50c1dpdGhGbG9hdHNGb3JMYXlvdXQoUmVu
ZGVyT2JqZWN0KiBmbG9hdFRvUmVtb3ZlID0gMCk7Ci0gICAgdm9pZCBtYXJrQ29udGFpbmluZ0Js
b2Nrc0ZvckxheW91dCgpOworICAgIHZvaWQgbWFya0NvbnRhaW5pbmdCbG9ja3NGb3JMYXlvdXQo
Ym9vbCBzY2hlZHVsZVJlbGF5b3V0ID0gdHJ1ZSk7CiAgICAgdm9pZCBzZXROZWVkc0xheW91dChi
b29sIGIsIGJvb2wgbWFya1BhcmVudHMgPSB0cnVlKTsKICAgICB2b2lkIHNldENoaWxkTmVlZHNM
YXlvdXQoYm9vbCBiLCBib29sIG1hcmtQYXJlbnRzID0gdHJ1ZSk7CiAgICAgdm9pZCBzZXRNaW5N
YXhLbm93bihib29sIGI9dHJ1ZSkgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>8565</attachid>
            <date>2006-05-26 15:12:58 -0700</date>
            <delta_ts>2006-05-27 01:59:47 -0700</delta_ts>
            <desc>Updated patch</desc>
            <filename>8969_r2.patch</filename>
            <type>text/plain</type>
            <size>16636</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxNDUzMikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzggQEAKKzIwMDYtIyMtIyMgIE1pdHogUGV0dGVsICA8b3BlbmRhcndpbi5vcmdA
bWl0enBldHRlbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgLSBmaXggZm9yIGh0dHA6Ly9idWd6aWxsYS5vcGVuZGFyd2luLm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9ODk2OQorICAgICAgICAgIFJFR1JFU1NJT046IHR5cGluZyBpbiB0ZXh0ZmllbGQg
cmVwYWludHMgd2hvbGUgd2ViIHBhZ2UgYXQgZ2FtZWZhcXMuY29tCisKKyAgICAgICAgTm8gdGVz
dCBwb3NzaWJsZSAobm8gZnVuY3Rpb25hbGl0eSBjaGFuZ2UpCisKKyAgICAgICAgKiBkb20vRG9j
dW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnVwZGF0ZUxheW91dCk6IENo
YW5nZWQgdG8gZW5zdXJlIHRoYXQgcGVuZGluZyBzdWJ0cmVlCisgICAgICAgIGxheW91dHMgYXJl
IHBlcmZvcm1lZCB0b28uCisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZTo6Zm9yY2VMYXlvdXQpOiBGb3JjZSBhIGZ1bGwgbGF5b3V0LgorICAgICAgICAq
IHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlld1ByaXZhdGU6
OnJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6bGF5b3V0KTogQ2hhbmdlZCB0
byByZWxheW91dCBvbmx5IHRoZSBzdWJ0cmVlIHJvb3RlZAorICAgICAgICBhdCBkLT5sYXlvdXRS
b290IGlmIGl0J3Mgbm9uLXplcm8gYW5kIGFsbG93U3VidHJlZSBpcyB0cnVlLgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVWaWV3OjpzY2hlZHVsZVJlbGF5b3V0KTogQ2hhbmdlIHBlbmRpbmcgc3Vi
dHJlZSByZWxheW91dCBpbnRvCisgICAgICAgIG5vcm1hbCByZWxheW91dCBieSBjbGVhcmluZyBk
LT5sYXlvdXRSb290IGFuZCBwcm9wYWdhdGluZyBuZWVkc0xheW91dCB0byB0aGUKKyAgICAgICAg
cm9vdC4gCisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnNjaGVkdWxlUmVsYXlvdXRPZlN1
YnRyZWUpOiBBZGRlZC4KKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5oOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJDb250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQ29u
dGFpbmVyOjpyZW1vdmVDaGlsZE5vZGUpOiBSZXF1ZXN0IGxheW91dCBleHBsaWNpdGx5LCBzaW5j
ZQorICAgICAgICB3ZSBjYW4gbm8gbG9uZ2VyIHJlbHkgb24gdGhlIHJlbW92ZWQgY2hpbGQgdG8g
bWFyayB1cyBhcyBuZWVkaW5nIGxheW91dC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6bWFya0NvbnRhaW5pbmdC
bG9ja3NGb3JMYXlvdXQpOiBBZGRlZCBzY2hlZHVsZVJlbGF5b3V0CisgICAgICAgIHBhcmFtZXRl
ci4gRnJhbWVWaWV3IHBhc3NlcyBmYWxzZSB0byBmb3JjZSBtYXJraW5nIGFsbCB0aGUgd2F5IHRv
IHRoZSByb290CisgICAgICAgIHdoZW4gdHVybmluZyBhIHBlbmRpbmcgc3VidHJlZSByZWxheW91
dCBpbnRvIGEgZnVsbCByZWxheW91dC4gT3RoZXJ3aXNlLAorICAgICAgICBtYXJraW5nIHN0b3Bz
IGF0IHRoZSBmaXJzdCB0ZXh0RmllbGQgKG9yIGF0IHRoZSByb290KSBhbmQKKyAgICAgICAgcmVs
YXlvdXQgb2YgdGhlIGxhc3Qgb2JqZWN0IHJlYWNoZWQgaXMgc2NoZWR1bGVkLgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpzY2hlZHVsZVJlbGF5b3V0KToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyT2JqZWN0Lmg6CisKIDIwMDYtMDUtMjIgIEVyaWMgU2VpZGVsICA8ZXJpY0Bl
c2VpZGVsLmNvbT4KIAogICAgICAgICBSdWJiZXItc3RhbXBlZCBieSBhZGVsZS4KSW5kZXg6IFdl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAJKHJldmlzaW9uIDE0NTMyKQorKysgV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC04ODUsNyArODg1LDcgQEAgdm9pZCBEb2N1bWVudDo6dXBkYXRlTGF5b3V0
KCkKICAgICB1cGRhdGVSZW5kZXJpbmcoKTsKIAogICAgIC8vIE9ubHkgZG8gYSBsYXlvdXQgaWYg
Y2hhbmdlcyBoYXZlIG9jY3VycmVkIHRoYXQgbWFrZSBpdCBuZWNlc3NhcnkuICAgICAgCi0gICAg
aWYgKG1fdmlldyAmJiByZW5kZXJlcigpICYmIHJlbmRlcmVyKCktPm5lZWRzTGF5b3V0KCkpCisg
ICAgaWYgKG1fdmlldyAmJiByZW5kZXJlcigpICYmIChtX3ZpZXctPmxheW91dFBlbmRpbmcoKSB8
fCByZW5kZXJlcigpLT5uZWVkc0xheW91dCgpKSkKICAgICAgICAgbV92aWV3LT5sYXlvdXQoKTsK
IH0KIApJbmRleDogV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHJldmlzaW9uIDE0NTMyKQorKysgV2ViQ29yZS9wYWdl
L0ZyYW1lVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2LDYgKzg2LDcgQEAgcHVibGljOgog
ICAgICAgICBjbGlja05vZGUgPSAwOwogICAgICAgICBzY3JvbGxpbmdTZWxmID0gZmFsc2U7CiAg
ICAgICAgIGxheW91dFRpbWVyLnN0b3AoKTsKKyAgICAgICAgbGF5b3V0Um9vdCA9IDA7CiAgICAg
ICAgIGRlbGF5ZWRMYXlvdXQgPSBmYWxzZTsKICAgICAgICAgbW91c2VQcmVzc2VkID0gZmFsc2U7
CiAgICAgICAgIGRvRnVsbFJlcGFpbnQgPSB0cnVlOwpAQCAtMTIyLDYgKzEyMyw3IEBAIHB1Ymxp
YzoKICAgICBib29sIHNjcm9sbGluZ1NlbGY7CiAgICAgVGltZXI8RnJhbWVWaWV3PiBsYXlvdXRU
aW1lcjsKICAgICBib29sIGRlbGF5ZWRMYXlvdXQ7CisgICAgUmVmUHRyPE5vZGU+IGxheW91dFJv
b3Q7CiAgICAgCiAgICAgYm9vbCBsYXlvdXRTY2hlZHVsaW5nRW5hYmxlZDsKICAgICBib29sIGxh
eW91dFN1cHByZXNzZWQ7CkBAIC0yOTgsNyArMzAwLDcgQEAgdm9pZCBGcmFtZVZpZXc6OmFkZFJl
cGFpbnRJbmZvKFJlbmRlck9iagogICAgIGQtPnJlcGFpbnRSZWN0cy0+YXBwZW5kKG5ldyBSZW5k
ZXJPYmplY3Q6OlJlcGFpbnRJbmZvKG8sIHIpKTsKIH0KIAotdm9pZCBGcmFtZVZpZXc6OmxheW91
dCgpCit2b2lkIEZyYW1lVmlldzo6bGF5b3V0KGJvb2wgYWxsb3dTdWJ0cmVlKQogewogICAgIGlm
IChkLT5sYXlvdXRTdXBwcmVzc2VkKQogICAgICAgICByZXR1cm47CkBAIC0zMTMsNiArMzE1LDEz
IEBAIHZvaWQgRnJhbWVWaWV3OjpsYXlvdXQoKQogICAgICAgICByZXR1cm47CiAgICAgfQogCisg
ICAgaWYgKCFhbGxvd1N1YnRyZWUgJiYgZC0+bGF5b3V0Um9vdCkgeworICAgICAgICBpZiAoZC0+
bGF5b3V0Um9vdC0+cmVuZGVyZXIoKSkKKyAgICAgICAgICAgIGQtPmxheW91dFJvb3QtPnJlbmRl
cmVyKCktPm1hcmtDb250YWluaW5nQmxvY2tzRm9yTGF5b3V0KGZhbHNlKTsKKyAgICAgICAgZC0+
bGF5b3V0Um9vdCA9IDA7CisgICAgfQorCisgICAgYm9vbCBzdWJ0cmVlID0gZC0+bGF5b3V0Um9v
dDsKICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBtX2ZyYW1lLT5kb2N1bWVudCgpOwogICAgIGlm
ICghZG9jdW1lbnQpIHsKICAgICAgICAgLy8gRklYTUU6IFNob3VsZCB3ZSBzZXQgbV9zaXplLmhl
aWdodCBoZXJlIHRvbz8KQEAgLTMyMCw2ICszMjksNyBAQCB2b2lkIEZyYW1lVmlldzo6bGF5b3V0
KCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIE5vZGUqIHJvb3ROb2RlID0gc3VidHJl
ZSA/IGQtPmxheW91dFJvb3QuZ2V0KCkgOiBkb2N1bWVudDsKICAgICBkLT5sYXlvdXRTY2hlZHVs
aW5nRW5hYmxlZCA9IGZhbHNlOwogCiAgICAgLy8gQWx3YXlzIGVuc3VyZSBvdXIgc3R5bGUgaW5m
byBpcyB1cC10by1kYXRlLiAgVGhpcyBjYW4gaGFwcGVuIGluIHNpdHVhdGlvbnMgd2hlcmUKQEAg
LTMyNyw3ICszMzcsNyBAQCB2b2lkIEZyYW1lVmlldzo6bGF5b3V0KCkKICAgICBpZiAoZG9jdW1l
bnQtPmhhc0NoYW5nZWRDaGlsZCgpKQogICAgICAgICBkb2N1bWVudC0+cmVjYWxjU3R5bGUoKTsK
IAotICAgIFJlbmRlckNhbnZhcyogcm9vdCA9IHN0YXRpY19jYXN0PFJlbmRlckNhbnZhcyo+KGRv
Y3VtZW50LT5yZW5kZXJlcigpKTsKKyAgICBSZW5kZXJPYmplY3QqIHJvb3QgPSByb290Tm9kZS0+
cmVuZGVyZXIoKTsKICAgICBpZiAoIXJvb3QpIHsKICAgICAgICAgLy8gRklYTUU6IERvIHdlIG5l
ZWQgdG8gc2V0IG1fc2l6ZSBoZXJlPwogICAgICAgICBkLT5sYXlvdXRTY2hlZHVsaW5nRW5hYmxl
ZCA9IHRydWU7CkBAIC0zMzcsOTEgKzM0Nyw5OSBAQCB2b2lkIEZyYW1lVmlldzo6bGF5b3V0KCkK
ICAgICBTY3JvbGxCYXJNb2RlIGhNb2RlID0gZC0+aG1vZGU7CiAgICAgU2Nyb2xsQmFyTW9kZSB2
TW9kZSA9IGQtPnZtb2RlOwogICAgIAotICAgIFJlbmRlck9iamVjdCogcm9vdFJlbmRlcmVyID0g
ZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpID8gZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgp
LT5yZW5kZXJlcigpIDogMDsKLSAgICBpZiAoZG9jdW1lbnQtPmlzSFRNTERvY3VtZW50KCkpIHsK
LSAgICAgICAgTm9kZSAqYm9keSA9IHN0YXRpY19jYXN0PEhUTUxEb2N1bWVudCo+KGRvY3VtZW50
KS0+Ym9keSgpOwotICAgICAgICBpZiAoYm9keSAmJiBib2R5LT5yZW5kZXJlcigpKSB7Ci0gICAg
ICAgICAgICBpZiAoYm9keS0+aGFzVGFnTmFtZShmcmFtZXNldFRhZykpIHsKLSAgICAgICAgICAg
ICAgICBib2R5LT5yZW5kZXJlcigpLT5zZXROZWVkc0xheW91dCh0cnVlKTsKLSAgICAgICAgICAg
ICAgICB2TW9kZSA9IFNjcm9sbEJhckFsd2F5c09mZjsKLSAgICAgICAgICAgICAgICBoTW9kZSA9
IFNjcm9sbEJhckFsd2F5c09mZjsKKyAgICBpZiAoIXN1YnRyZWUpIHsKKyAgICAgICAgRG9jdW1l
bnQqIGRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihyb290Tm9kZSk7CisgICAgICAg
IFJlbmRlck9iamVjdCogcm9vdFJlbmRlcmVyID0gZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgp
ID8gZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpLT5yZW5kZXJlcigpIDogMDsKKyAgICAgICAg
aWYgKGRvY3VtZW50LT5pc0hUTUxEb2N1bWVudCgpKSB7CisgICAgICAgICAgICBOb2RlICpib2R5
ID0gc3RhdGljX2Nhc3Q8SFRNTERvY3VtZW50Kj4oZG9jdW1lbnQpLT5ib2R5KCk7CisgICAgICAg
ICAgICBpZiAoYm9keSAmJiBib2R5LT5yZW5kZXJlcigpKSB7CisgICAgICAgICAgICAgICAgaWYg
KGJvZHktPmhhc1RhZ05hbWUoZnJhbWVzZXRUYWcpKSB7CisgICAgICAgICAgICAgICAgICAgIGJv
ZHktPnJlbmRlcmVyKCktPnNldE5lZWRzTGF5b3V0KHRydWUpOworICAgICAgICAgICAgICAgICAg
ICB2TW9kZSA9IFNjcm9sbEJhckFsd2F5c09mZjsKKyAgICAgICAgICAgICAgICAgICAgaE1vZGUg
PSBTY3JvbGxCYXJBbHdheXNPZmY7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChib2R5LT5o
YXNUYWdOYW1lKGJvZHlUYWcpKSB7CisgICAgICAgICAgICAgICAgICAgIFJlbmRlck9iamVjdCog
byA9IChyb290UmVuZGVyZXItPnN0eWxlKCktPm92ZXJmbG93KCkgPT0gT1ZJU0lCTEUpID8gYm9k
eS0+cmVuZGVyZXIoKSA6IHJvb3RSZW5kZXJlcjsKKyAgICAgICAgICAgICAgICAgICAgYXBwbHlP
dmVyZmxvd1RvVmlld3BvcnQobywgaE1vZGUsIHZNb2RlKTsgLy8gT25seSBhcHBsaWVzIHRvIEhU
TUwgVUFzLCBub3QgdG8gWE1ML1hIVE1MIFVBcworICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKGJvZHktPmhhc1RhZ05hbWUoYm9keVRhZykpIHsK
LSAgICAgICAgICAgICAgICBSZW5kZXJPYmplY3QqIG8gPSAocm9vdFJlbmRlcmVyLT5zdHlsZSgp
LT5vdmVyZmxvdygpID09IE9WSVNJQkxFKSA/IGJvZHktPnJlbmRlcmVyKCkgOiByb290UmVuZGVy
ZXI7Ci0gICAgICAgICAgICAgICAgYXBwbHlPdmVyZmxvd1RvVmlld3BvcnQobywgaE1vZGUsIHZN
b2RlKTsgLy8gT25seSBhcHBsaWVzIHRvIEhUTUwgVUFzLCBub3QgdG8gWE1ML1hIVE1MIFVBcwot
ICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotICAgIGVsc2UgaWYgKHJvb3RSZW5kZXJl
cikKLSAgICAgICAgYXBwbHlPdmVyZmxvd1RvVmlld3BvcnQocm9vdFJlbmRlcmVyLCBoTW9kZSwg
dk1vZGUpOyAvLyBYTUwvWEhUTUwgVUFzIHVzZSB0aGUgcm9vdCBlbGVtZW50LgotCisgICAgICAg
IH0gZWxzZSBpZiAocm9vdFJlbmRlcmVyKQorICAgICAgICAgICAgYXBwbHlPdmVyZmxvd1RvVmll
d3BvcnQocm9vdFJlbmRlcmVyLCBoTW9kZSwgdk1vZGUpOyAvLyBYTUwvWEhUTUwgVUFzIHVzZSB0
aGUgcm9vdCBlbGVtZW50LgogI2lmIElOU1RSVU1FTlRfTEFZT1VUX1NDSEVEVUxJTkcKLSAgICBp
ZiAoZC0+Zmlyc3RMYXlvdXQgJiYgIWRvY3VtZW50LT5vd25lckVsZW1lbnQoKSkKLSAgICAgICAg
cHJpbnRmKCJFbGFwc2VkIHRpbWUgYmVmb3JlIGZpcnN0IGxheW91dDogJWRcbiIsIGRvY3VtZW50
LT5lbGFwc2VkVGltZSgpKTsKKyAgICAgICAgaWYgKGQtPmZpcnN0TGF5b3V0ICYmICFkb2N1bWVu
dC0+b3duZXJFbGVtZW50KCkpCisgICAgICAgICAgICBwcmludGYoIkVsYXBzZWQgdGltZSBiZWZv
cmUgZmlyc3QgbGF5b3V0OiAlZFxuIiwgZG9jdW1lbnQtPmVsYXBzZWRUaW1lKCkpOwogI2VuZGlm
CisgICAgfQogCi0gICAgZC0+ZG9GdWxsUmVwYWludCA9IGQtPmZpcnN0TGF5b3V0IHx8IHJvb3Qt
PnByaW50aW5nTW9kZSgpOworICAgIGQtPmRvRnVsbFJlcGFpbnQgPSAhc3VidHJlZSAmJiAoZC0+
Zmlyc3RMYXlvdXQgfHwgc3RhdGljX2Nhc3Q8UmVuZGVyQ2FudmFzKj4ocm9vdCktPnByaW50aW5n
TW9kZSgpKTsKICAgICBpZiAoZC0+cmVwYWludFJlY3RzKQogICAgICAgICBkLT5yZXBhaW50UmVj
dHMtPmNsZWFyKCk7CiAKLSAgICAvLyBOb3cgc2V0IG91ciBzY3JvbGxiYXIgc3RhdGUgZm9yIHRo
ZSBsYXlvdXQuCi0gICAgU2Nyb2xsQmFyTW9kZSBjdXJyZW50SE1vZGUgPSBoU2Nyb2xsQmFyTW9k
ZSgpOwotICAgIFNjcm9sbEJhck1vZGUgY3VycmVudFZNb2RlID0gdlNjcm9sbEJhck1vZGUoKTsK
LQogICAgIGJvb2wgZGlkRmlyc3RMYXlvdXQgPSBmYWxzZTsKLSAgICBpZiAoZC0+Zmlyc3RMYXlv
dXQgfHwgKGhNb2RlICE9IGN1cnJlbnRITW9kZSB8fCB2TW9kZSAhPSBjdXJyZW50Vk1vZGUpKSB7
Ci0gICAgICAgIHN1cHByZXNzU2Nyb2xsQmFycyh0cnVlKTsKLSAgICAgICAgaWYgKGQtPmZpcnN0
TGF5b3V0KSB7Ci0gICAgICAgICAgICBkLT5maXJzdExheW91dCA9IGZhbHNlOwotICAgICAgICAg
ICAgZGlkRmlyc3RMYXlvdXQgPSB0cnVlOworICAgIGlmICghc3VidHJlZSkgeworICAgICAgICAv
LyBOb3cgc2V0IG91ciBzY3JvbGxiYXIgc3RhdGUgZm9yIHRoZSBsYXlvdXQuCisgICAgICAgIFNj
cm9sbEJhck1vZGUgY3VycmVudEhNb2RlID0gaFNjcm9sbEJhck1vZGUoKTsKKyAgICAgICAgU2Ny
b2xsQmFyTW9kZSBjdXJyZW50Vk1vZGUgPSB2U2Nyb2xsQmFyTW9kZSgpOworCisgICAgICAgIGlm
IChkLT5maXJzdExheW91dCB8fCAoaE1vZGUgIT0gY3VycmVudEhNb2RlIHx8IHZNb2RlICE9IGN1
cnJlbnRWTW9kZSkpIHsKKyAgICAgICAgICAgIHN1cHByZXNzU2Nyb2xsQmFycyh0cnVlKTsKKyAg
ICAgICAgICAgIGlmIChkLT5maXJzdExheW91dCkgeworICAgICAgICAgICAgICAgIGQtPmZpcnN0
TGF5b3V0ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgZGlkRmlyc3RMYXlvdXQgPSB0cnVlOwor
ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8vIFNldCB0aGUgaW5pdGlhbCB2TW9k
ZSB0byBBbHdheXNPbiBpZiB3ZSdyZSBhdXRvLgorICAgICAgICAgICAgICAgIGlmICh2TW9kZSA9
PSBTY3JvbGxCYXJBdXRvKQorICAgICAgICAgICAgICAgICAgICBTY3JvbGxWaWV3OjpzZXRWU2Ny
b2xsQmFyTW9kZShTY3JvbGxCYXJBbHdheXNPbik7IC8vIFRoaXMgY2F1c2VzIGEgdmVydGljYWwg
c2Nyb2xsYmFyIHRvIGFwcGVhci4KKyAgICAgICAgICAgICAgICAvLyBTZXQgdGhlIGluaXRpYWwg
aE1vZGUgdG8gQWx3YXlzT2ZmIGlmIHdlJ3JlIGF1dG8uCisgICAgICAgICAgICAgICAgaWYgKGhN
b2RlID09IFNjcm9sbEJhckF1dG8pCisgICAgICAgICAgICAgICAgICAgIFNjcm9sbFZpZXc6OnNl
dEhTY3JvbGxCYXJNb2RlKFNjcm9sbEJhckFsd2F5c09mZik7IC8vIFRoaXMgY2F1c2VzIGEgaG9y
aXpvbnRhbCBzY3JvbGxiYXIgdG8gZGlzYXBwZWFyLgorICAgICAgICAgICAgfQogICAgICAgICAg
ICAgCi0gICAgICAgICAgICAvLyBTZXQgdGhlIGluaXRpYWwgdk1vZGUgdG8gQWx3YXlzT24gaWYg
d2UncmUgYXV0by4KLSAgICAgICAgICAgIGlmICh2TW9kZSA9PSBTY3JvbGxCYXJBdXRvKQotICAg
ICAgICAgICAgICAgIFNjcm9sbFZpZXc6OnNldFZTY3JvbGxCYXJNb2RlKFNjcm9sbEJhckFsd2F5
c09uKTsgLy8gVGhpcyBjYXVzZXMgYSB2ZXJ0aWNhbCBzY3JvbGxiYXIgdG8gYXBwZWFyLgotICAg
ICAgICAgICAgLy8gU2V0IHRoZSBpbml0aWFsIGhNb2RlIHRvIEFsd2F5c09mZiBpZiB3ZSdyZSBh
dXRvLgotICAgICAgICAgICAgaWYgKGhNb2RlID09IFNjcm9sbEJhckF1dG8pCi0gICAgICAgICAg
ICAgICAgU2Nyb2xsVmlldzo6c2V0SFNjcm9sbEJhck1vZGUoU2Nyb2xsQmFyQWx3YXlzT2ZmKTsg
Ly8gVGhpcyBjYXVzZXMgYSBob3Jpem9udGFsIHNjcm9sbGJhciB0byBkaXNhcHBlYXIuCi0gICAg
ICAgIH0KLSAgICAgICAgCi0gICAgICAgIGlmIChoTW9kZSA9PSB2TW9kZSkKLSAgICAgICAgICAg
IFNjcm9sbFZpZXc6OnNldFNjcm9sbEJhcnNNb2RlKGhNb2RlKTsKLSAgICAgICAgZWxzZSB7Ci0g
ICAgICAgICAgICBTY3JvbGxWaWV3OjpzZXRIU2Nyb2xsQmFyTW9kZShoTW9kZSk7Ci0gICAgICAg
ICAgICBTY3JvbGxWaWV3OjpzZXRWU2Nyb2xsQmFyTW9kZSh2TW9kZSk7Ci0gICAgICAgIH0KKyAg
ICAgICAgICAgIGlmIChoTW9kZSA9PSB2TW9kZSkKKyAgICAgICAgICAgICAgICBTY3JvbGxWaWV3
OjpzZXRTY3JvbGxCYXJzTW9kZShoTW9kZSk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBTY3JvbGxWaWV3OjpzZXRIU2Nyb2xsQmFyTW9kZShoTW9kZSk7CisgICAgICAgICAg
ICAgICAgU2Nyb2xsVmlldzo6c2V0VlNjcm9sbEJhck1vZGUodk1vZGUpOworICAgICAgICAgICAg
fQogCi0gICAgICAgIHN1cHByZXNzU2Nyb2xsQmFycyhmYWxzZSwgdHJ1ZSk7Ci0gICAgfQorICAg
ICAgICAgICAgc3VwcHJlc3NTY3JvbGxCYXJzKGZhbHNlLCB0cnVlKTsKKyAgICAgICAgfQogCi0g
ICAgSW50U2l6ZSBvbGRTaXplID0gbV9zaXplOworICAgICAgICBJbnRTaXplIG9sZFNpemUgPSBt
X3NpemU7CiAKLSAgICBtX3NpemUgPSBJbnRTaXplKHZpc2libGVXaWR0aCgpLCB2aXNpYmxlSGVp
Z2h0KCkpOworICAgICAgICBtX3NpemUgPSBJbnRTaXplKHZpc2libGVXaWR0aCgpLCB2aXNpYmxl
SGVpZ2h0KCkpOwogCi0gICAgaWYgKG9sZFNpemUgIT0gbV9zaXplKQotICAgICAgICBkLT5kb0Z1
bGxSZXBhaW50ID0gdHJ1ZTsKKyAgICAgICAgaWYgKG9sZFNpemUgIT0gbV9zaXplKQorICAgICAg
ICAgICAgZC0+ZG9GdWxsUmVwYWludCA9IHRydWU7CisgICAgfQogICAgIAotICAgIFJlbmRlckxh
eWVyKiBsYXllciA9IHJvb3QtPmxheWVyKCk7CisgICAgUmVuZGVyTGF5ZXIqIGxheWVyID0gcm9v
dC0+ZW5jbG9zaW5nTGF5ZXIoKTsKICAgICAgCiAgICAgaWYgKCFkLT5kb0Z1bGxSZXBhaW50KSB7
CiAgICAgICAgIGxheWVyLT5jb21wdXRlUmVwYWludFJlY3RzKCk7CiAgICAgICAgIHJvb3QtPnJl
cGFpbnRPYmplY3RzQmVmb3JlTGF5b3V0KCk7CiAgICAgfQogCisgICAgaWYgKHN1YnRyZWUpIHsK
KyAgICAgICAgaWYgKHJvb3QtPnJlY2FsY01pbk1heCgpKQorICAgICAgICAgICAgcm9vdC0+cmVj
YWxjTWluTWF4V2lkdGhzKCk7CisgICAgfQogICAgIHJvb3QtPmxheW91dCgpOworICAgIGQtPmxh
eW91dFJvb3QgPSAwOwogCiAgICAgbV9mcmFtZS0+aW52YWxpZGF0ZVNlbGVjdGlvbigpOwogICAg
CiAgICAgZC0+bGF5b3V0U2NoZWR1bGluZ0VuYWJsZWQ9dHJ1ZTsKICAgICBkLT5sYXlvdXRTdXBw
cmVzc2VkID0gZmFsc2U7CiAKLSAgICBpZiAoIXJvb3QtPnByaW50aW5nTW9kZSgpKQorICAgIGlm
ICghc3VidHJlZSAmJiAhc3RhdGljX2Nhc3Q8UmVuZGVyQ2FudmFzKj4ocm9vdCktPnByaW50aW5n
TW9kZSgpKQogICAgICAgICByZXNpemVDb250ZW50cyhsYXllci0+d2lkdGgoKSwgbGF5ZXItPmhl
aWdodCgpKTsKIAogICAgIC8vIE5vdyB1cGRhdGUgdGhlIHBvc2l0aW9ucyBvZiBhbGwgbGF5ZXJz
LgogICAgIGxheWVyLT51cGRhdGVMYXllclBvc2l0aW9ucyhkLT5kb0Z1bGxSZXBhaW50KTsKIAog
ICAgIC8vIFdlIHVwZGF0ZSBvdXIgd2lkZ2V0IHBvc2l0aW9ucyByaWdodCBhZnRlciBkb2luZyBh
IGxheW91dC4KLSAgICByb290LT51cGRhdGVXaWRnZXRQb3NpdGlvbnMoKTsKKyAgICBpZiAoIXN1
YnRyZWUpCisgICAgICAgIHN0YXRpY19jYXN0PFJlbmRlckNhbnZhcyo+KHJvb3QpLT51cGRhdGVX
aWRnZXRQb3NpdGlvbnMoKTsKICAgICAKICAgICBpZiAoZC0+cmVwYWludFJlY3RzICYmICFkLT5y
ZXBhaW50UmVjdHMtPmlzRW1wdHkoKSkgewogICAgICAgICAvLyBGSVhNRTogQ291bGQgb3B0aW1p
emUgdGhpcyBhbmQgaGF2ZSBvYmplY3RzIHJlbW92ZWQgZnJvbSB0aGlzIGxpc3QKQEAgLTEwNjUs
NiArMTA4MywxMSBAQCB2b2lkIEZyYW1lVmlldzo6aG92ZXJUaW1lckZpcmVkKFRpbWVyPEZyCiAK
IHZvaWQgRnJhbWVWaWV3OjpzY2hlZHVsZVJlbGF5b3V0KCkKIHsKKyAgICBpZiAoZC0+bGF5b3V0
Um9vdCkgeworICAgICAgICBpZiAoZC0+bGF5b3V0Um9vdC0+cmVuZGVyZXIoKSkKKyAgICAgICAg
ICAgIGQtPmxheW91dFJvb3QtPnJlbmRlcmVyKCktPm1hcmtDb250YWluaW5nQmxvY2tzRm9yTGF5
b3V0KGZhbHNlKTsKKyAgICAgICAgZC0+bGF5b3V0Um9vdCA9IDA7CisgICAgfQogICAgIGlmICgh
ZC0+bGF5b3V0U2NoZWR1bGluZ0VuYWJsZWQpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTA4Nyw2
ICsxMTEwLDMxIEBAIHZvaWQgRnJhbWVWaWV3OjpzY2hlZHVsZVJlbGF5b3V0KCkKICAgICBkLT5s
YXlvdXRUaW1lci5zdGFydE9uZVNob3QoZGVsYXkgKiAwLjAwMSk7CiB9CiAKK3ZvaWQgRnJhbWVW
aWV3OjpzY2hlZHVsZVJlbGF5b3V0T2ZTdWJ0cmVlKE5vZGUqIG4pCit7CisgICAgaWYgKCFkLT5s
YXlvdXRTY2hlZHVsaW5nRW5hYmxlZCB8fCBtX2ZyYW1lLT5kb2N1bWVudCgpICYmIG1fZnJhbWUt
PmRvY3VtZW50KCktPnJlbmRlcmVyKCkgJiYgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+cmVuZGVyZXIo
KS0+bmVlZHNMYXlvdXQoKSkgeworICAgICAgICBpZiAobi0+cmVuZGVyZXIoKSkKKyAgICAgICAg
ICAgIG4tPnJlbmRlcmVyKCktPm1hcmtDb250YWluaW5nQmxvY2tzRm9yTGF5b3V0KGZhbHNlKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChsYXlvdXRQZW5kaW5nKCkpIHsKKyAg
ICAgICAgaWYgKGQtPmxheW91dFJvb3QgIT0gbikgeworICAgICAgICAgICAgLy8gSnVzdCBkbyBh
IGZ1bGwgcmVsYXlvdXQKKyAgICAgICAgICAgIGlmIChkLT5sYXlvdXRSb290ICYmIGQtPmxheW91
dFJvb3QtPnJlbmRlcmVyKCkpCisgICAgICAgICAgICAgICAgZC0+bGF5b3V0Um9vdC0+cmVuZGVy
ZXIoKS0+bWFya0NvbnRhaW5pbmdCbG9ja3NGb3JMYXlvdXQoZmFsc2UpOworICAgICAgICAgICAg
ZC0+bGF5b3V0Um9vdCA9IDA7CisgICAgICAgICAgICBpZiAobi0+cmVuZGVyZXIoKSkKKyAgICAg
ICAgICAgICAgICBuLT5yZW5kZXJlcigpLT5tYXJrQ29udGFpbmluZ0Jsb2Nrc0ZvckxheW91dChm
YWxzZSk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBpbnQgZGVsYXkgPSBtX2Zy
YW1lLT5kb2N1bWVudCgpLT5taW5pbXVtTGF5b3V0RGVsYXkoKTsKKyAgICAgICAgZC0+bGF5b3V0
Um9vdCA9IG47CisgICAgICAgIGQtPmRlbGF5ZWRMYXlvdXQgPSBkZWxheSAhPSAwOworICAgICAg
ICBkLT5sYXlvdXRUaW1lci5zdGFydE9uZVNob3QoZGVsYXkgKiAwLjAwMSk7CisgICAgfQorfQor
CiBib29sIEZyYW1lVmlldzo6bGF5b3V0UGVuZGluZygpCiB7CiAgICAgcmV0dXJuIGQtPmxheW91
dFRpbWVyLmlzQWN0aXZlKCk7CkluZGV4OiBXZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcGFnZS9GcmFtZS5jcHAJKHJldmlzaW9uIDE0NTMyKQorKysgV2ViQ29y
ZS9wYWdlL0ZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjk4MCw3ICsyOTgwLDcgQEAgdm9p
ZCBGcmFtZTo6Zm9yY2VMYXlvdXQoKQogewogICAgIEZyYW1lVmlldyAqdiA9IGQtPm1fdmlldy5n
ZXQoKTsKICAgICBpZiAodikgewotICAgICAgICB2LT5sYXlvdXQoKTsKKyAgICAgICAgdi0+bGF5
b3V0KGZhbHNlKTsKICAgICAgICAgLy8gV2UgY2Fubm90IHVuc2NoZWR1bGUgYSBwZW5kaW5nIHJl
bGF5b3V0LCBzaW5jZSB0aGUgZm9yY2UgY2FuIGJlIGNhbGxlZCB3aXRoCiAgICAgICAgIC8vIGEg
dGlueSByZWN0YW5nbGUgZnJvbSBhIGRyYXdSZWN0IHVwZGF0ZS4gIEJ5IHVuc2NoZWR1bGluZyB3
ZSBpbiBlZmZlY3QKICAgICAgICAgLy8gInZhbGlkYXRlIiBhbmQgc3RvcCB0aGUgbmVjZXNzYXJ5
IGZ1bGwgcmVwYWludCBmcm9tIG9jY3VycmluZy4gIEJhc2ljYWxseSBhbnkgYmFzaWMKSW5kZXg6
IFdlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRnJh
bWVWaWV3LmgJKHJldmlzaW9uIDE0NTMyKQorKysgV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTUsNyArMTE1LDcgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQg
cHJpbnQoKTsKIAotICAgIHZvaWQgbGF5b3V0KCk7CisgICAgdm9pZCBsYXlvdXQoYm9vbCBhbGxv
d1N1YnRyZWUgPSB0cnVlKTsKIAogICAgIGJvb2wgaW5MYXlvdXQoKSBjb25zdDsKICAgICBpbnQg
bGF5b3V0Q291bnQoKSBjb25zdDsKQEAgLTE1Miw2ICsxNTIsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRUcmFuc3BhcmVudChib29sIGlzVHJhbnNwYXJlbnQpOwogICAgIAogICAgIHZvaWQgc2No
ZWR1bGVSZWxheW91dCgpOworICAgIHZvaWQgc2NoZWR1bGVSZWxheW91dE9mU3VidHJlZShOb2Rl
Kik7CiAgICAgdm9pZCB1bnNjaGVkdWxlUmVsYXlvdXQoKTsKICAgICBib29sIGhhdmVEZWxheWVk
TGF5b3V0U2NoZWR1bGVkKCk7CiAgICAgYm9vbCBsYXlvdXRQZW5kaW5nKCk7CkluZGV4OiBXZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJDb250YWluZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckNvbnRhaW5lci5jcHAJKHJldmlzaW9uIDE0NjA2KQorKysgV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQ29udGFpbmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY4LDYg
KzE2OCw3IEBAIFJlbmRlck9iamVjdCogUmVuZGVyQ29udGFpbmVyOjpyZW1vdmVDaGkKICAgICBp
ZiAoIWRvY3VtZW50QmVpbmdEZXN0cm95ZWQoKSkgewogICAgICAgICBvbGRDaGlsZC0+c2V0TmVl
ZHNMYXlvdXRBbmRNaW5NYXhSZWNhbGMoKTsKICAgICAgICAgb2xkQ2hpbGQtPnJlcGFpbnQoKTsK
KyAgICAgICAgY2FudmFzKCktPnNjaGVkdWxlUmVsYXlvdXQoKTsKICAgICAgICAgCiAgICAgICAg
IC8vIEtlZXAgb3VyIGxheWVyIGhpZXJhcmNoeSB1cGRhdGVkLgogICAgICAgICBvbGRDaGlsZC0+
cmVtb3ZlTGF5ZXJzKGVuY2xvc2luZ0xheWVyKCkpOwpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJP
YmplY3QuY3BwCShyZXZpc2lvbiAxNDUzMikKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9i
amVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY4OSwxOCArNjg5LDE5IEBAIHZvaWQgUmVuZGVy
T2JqZWN0OjpzZXRDaGlsZE5lZWRzTGF5b3V0KGIKICAgICB9CiB9CiAKLXZvaWQgUmVuZGVyT2Jq
ZWN0OjptYXJrQ29udGFpbmluZ0Jsb2Nrc0ZvckxheW91dCgpCit2b2lkIFJlbmRlck9iamVjdDo6
bWFya0NvbnRhaW5pbmdCbG9ja3NGb3JMYXlvdXQoYm9vbCBzY2hlZHVsZVJlbGF5b3V0KQogewog
ICAgIFJlbmRlck9iamVjdCAqbyA9IGNvbnRhaW5lcigpOwogICAgIFJlbmRlck9iamVjdCAqbGFz
dCA9IHRoaXM7CiAKICAgICB3aGlsZSAobykgeworICAgICAgICBpZiAoc2NoZWR1bGVSZWxheW91
dCAmJiBsYXN0LT5pc1RleHRGaWVsZCgpKQorICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGlm
ICghbGFzdC0+aXNUZXh0KCkgJiYgKGxhc3QtPnN0eWxlKCktPnBvc2l0aW9uKCkgPT0gRml4ZWRQ
b3NpdGlvbiB8fCBsYXN0LT5zdHlsZSgpLT5wb3NpdGlvbigpID09IEFic29sdXRlUG9zaXRpb24p
KSB7CiAgICAgICAgICAgICBpZiAoby0+bV9wb3NDaGlsZE5lZWRzTGF5b3V0KQogICAgICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgICAgIG8tPm1fcG9zQ2hpbGROZWVkc0xheW91dCA9IHRy
dWU7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7CisgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICBpZiAoby0+bV9ub3JtYWxDaGlsZE5lZWRzTGF5b3V0KQogICAgICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgICAgIG8tPm1fbm9ybWFsQ2hpbGROZWVkc0xheW91dCA9IHRydWU7CkBA
IC03MTAsNyArNzExLDggQEAgdm9pZCBSZW5kZXJPYmplY3Q6Om1hcmtDb250YWluaW5nQmxvY2tz
RgogICAgICAgICBvID0gby0+Y29udGFpbmVyKCk7CiAgICAgfQogCi0gICAgbGFzdC0+c2NoZWR1
bGVSZWxheW91dCgpOworICAgIGlmIChzY2hlZHVsZVJlbGF5b3V0KQorICAgICAgICBsYXN0LT5z
Y2hlZHVsZVJlbGF5b3V0KCk7CiB9CiAKIFJlbmRlckJsb2NrKiBSZW5kZXJPYmplY3Q6OmNvbnRh
aW5pbmdCbG9jaygpIGNvbnN0CkBAIC0yMjg5LDExICsyMjkxLDE1IEBAIHZvaWQgUmVuZGVyT2Jq
ZWN0OjpyZWNhbGNNaW5NYXhXaWR0aHMoKQogCiB2b2lkIFJlbmRlck9iamVjdDo6c2NoZWR1bGVS
ZWxheW91dCgpCiB7Ci0gICAgaWYgKCFpc0NhbnZhcygpKQotICAgICAgICByZXR1cm47Ci0gICAg
RnJhbWVWaWV3ICp2aWV3ID0gc3RhdGljX2Nhc3Q8UmVuZGVyQ2FudmFzICo+KHRoaXMpLT52aWV3
KCk7Ci0gICAgaWYgKHZpZXcpCi0gICAgICAgIHZpZXctPnNjaGVkdWxlUmVsYXlvdXQoKTsKKyAg
ICBpZiAoaXNDYW52YXMoKSkgeworICAgICAgICBGcmFtZVZpZXcqIHZpZXcgPSBzdGF0aWNfY2Fz
dDxSZW5kZXJDYW52YXMqPih0aGlzKS0+dmlldygpOworICAgICAgICBpZiAodmlldykKKyAgICAg
ICAgICAgIHZpZXctPnNjaGVkdWxlUmVsYXlvdXQoKTsKKyAgICB9IGVsc2UgeworICAgICAgICBG
cmFtZVZpZXcqIHZpZXcgPSBjYW52YXMoKSA/IGNhbnZhcygpLT52aWV3KCkgOiAwOworICAgICAg
ICBpZiAodmlldykKKyAgICAgICAgICAgIHZpZXctPnNjaGVkdWxlUmVsYXlvdXRPZlN1YnRyZWUo
bm9kZSgpKTsKKyAgICB9CiB9CiAKIApJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgJKHJl
dmlzaW9uIDE0NTMyKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTMzOSw3ICszMzksNyBAQCBwdWJsaWM6CiAgICAgUmVuZGVyT2JqZWN0KiBo
b3ZlckFuY2VzdG9yKCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIHZvaWQgbWFya0FsbERlc2NlbmRh
bnRzV2l0aEZsb2F0c0ZvckxheW91dChSZW5kZXJPYmplY3QqIGZsb2F0VG9SZW1vdmUgPSAwKTsK
LSAgICB2b2lkIG1hcmtDb250YWluaW5nQmxvY2tzRm9yTGF5b3V0KCk7CisgICAgdm9pZCBtYXJr
Q29udGFpbmluZ0Jsb2Nrc0ZvckxheW91dChib29sIHNjaGVkdWxlUmVsYXlvdXQgPSB0cnVlKTsK
ICAgICB2b2lkIHNldE5lZWRzTGF5b3V0KGJvb2wgYiwgYm9vbCBtYXJrUGFyZW50cyA9IHRydWUp
OwogICAgIHZvaWQgc2V0Q2hpbGROZWVkc0xheW91dChib29sIGIsIGJvb2wgbWFya1BhcmVudHMg
PSB0cnVlKTsKICAgICB2b2lkIHNldE1pbk1heEtub3duKGJvb2wgYj10cnVlKSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>8570</attachid>
            <date>2006-05-27 01:59:47 -0700</date>
            <delta_ts>2006-05-29 23:02:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>8969_r3.patch</filename>
            <type>text/plain</type>
            <size>15753</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxNDUzMikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzUgQEAKKzIwMDYtIyMtIyMgIE1pdHogUGV0dGVsICA8b3BlbmRhcndpbi5vcmdA
bWl0enBldHRlbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgLSBmaXggZm9yIGh0dHA6Ly9idWd6aWxsYS5vcGVuZGFyd2luLm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9ODk2OQorICAgICAgICAgIFJFR1JFU1NJT046IHR5cGluZyBpbiB0ZXh0ZmllbGQg
cmVwYWludHMgd2hvbGUgd2ViIHBhZ2UgYXQgZ2FtZWZhcXMuY29tCisKKyAgICAgICAgTm8gdGVz
dCBwb3NzaWJsZSAobm8gZnVuY3Rpb25hbGl0eSBjaGFuZ2UpCisKKyAgICAgICAgKiBkb20vRG9j
dW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnVwZGF0ZUxheW91dCk6IENo
YW5nZWQgdG8gZW5zdXJlIHRoYXQgcGVuZGluZyBzdWJ0cmVlCisgICAgICAgIGxheW91dHMgYXJl
IHBlcmZvcm1lZCB0b28uCisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZTo6Zm9yY2VMYXlvdXQpOiBGb3JjZSBhIGZ1bGwgbGF5b3V0LgorICAgICAgICAq
IHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlld1ByaXZhdGU6
OnJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6bGF5b3V0KTogQ2hhbmdlZCB0
byByZWxheW91dCBvbmx5IHRoZSBzdWJ0cmVlIHJvb3RlZAorICAgICAgICBhdCBkLT5sYXlvdXRS
b290IGlmIGl0J3Mgbm9uLXplcm8gYW5kIGFsbG93U3VidHJlZSBpcyB0cnVlLgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVWaWV3OjpzY2hlZHVsZVJlbGF5b3V0KTogQ2hhbmdlIHBlbmRpbmcgc3Vi
dHJlZSByZWxheW91dCBpbnRvCisgICAgICAgIG5vcm1hbCByZWxheW91dCBieSBjbGVhcmluZyBk
LT5sYXlvdXRSb290IGFuZCBwcm9wYWdhdGluZyBuZWVkc0xheW91dCB0byB0aGUKKyAgICAgICAg
cm9vdC4gCisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnNjaGVkdWxlUmVsYXlvdXRPZlN1
YnRyZWUpOiBBZGRlZC4KKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5oOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0
OjptYXJrQ29udGFpbmluZ0Jsb2Nrc0ZvckxheW91dCk6IEFkZGVkIHNjaGVkdWxlUmVsYXlvdXQK
KyAgICAgICAgcGFyYW1ldGVyLiBGcmFtZVZpZXcgcGFzc2VzIGZhbHNlIHRvIGZvcmNlIG1hcmtp
bmcgYWxsIHRoZSB3YXkgdG8gdGhlIHJvb3QKKyAgICAgICAgd2hlbiB0dXJuaW5nIGEgcGVuZGlu
ZyBzdWJ0cmVlIHJlbGF5b3V0IGludG8gYSBmdWxsIHJlbGF5b3V0LiBPdGhlcndpc2UsCisgICAg
ICAgIG1hcmtpbmcgc3RvcHMgYXQgdGhlIGZpcnN0IHRleHRGaWVsZCAob3IgYXQgdGhlIHJvb3Qp
IGFuZAorICAgICAgICByZWxheW91dCBvZiB0aGUgbGFzdCBvYmplY3QgcmVhY2hlZCBpcyBzY2hl
ZHVsZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnNjaGVkdWxlUmVsYXlvdXQp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuaDoKKwogMjAwNi0wNS0yMiAgRXJp
YyBTZWlkZWwgIDxlcmljQGVzZWlkZWwuY29tPgogCiAgICAgICAgIFJ1YmJlci1zdGFtcGVkIGJ5
IGFkZWxlLgpJbmRleDogV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gMTQ1MzIpCisrKyBXZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg4NSw3ICs4ODUsNyBAQCB2b2lkIERvY3Vt
ZW50Ojp1cGRhdGVMYXlvdXQoKQogICAgIHVwZGF0ZVJlbmRlcmluZygpOwogCiAgICAgLy8gT25s
eSBkbyBhIGxheW91dCBpZiBjaGFuZ2VzIGhhdmUgb2NjdXJyZWQgdGhhdCBtYWtlIGl0IG5lY2Vz
c2FyeS4gICAgICAKLSAgICBpZiAobV92aWV3ICYmIHJlbmRlcmVyKCkgJiYgcmVuZGVyZXIoKS0+
bmVlZHNMYXlvdXQoKSkKKyAgICBpZiAobV92aWV3ICYmIHJlbmRlcmVyKCkgJiYgKG1fdmlldy0+
bGF5b3V0UGVuZGluZygpIHx8IHJlbmRlcmVyKCktPm5lZWRzTGF5b3V0KCkpKQogICAgICAgICBt
X3ZpZXctPmxheW91dCgpOwogfQogCkluZGV4OiBXZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAkocmV2aXNpb24gMTQ1MzIp
CisrKyBXZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODYsNiAr
ODYsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNsaWNrTm9kZSA9IDA7CiAgICAgICAgIHNjcm9sbGlu
Z1NlbGYgPSBmYWxzZTsKICAgICAgICAgbGF5b3V0VGltZXIuc3RvcCgpOworICAgICAgICBsYXlv
dXRSb290ID0gMDsKICAgICAgICAgZGVsYXllZExheW91dCA9IGZhbHNlOwogICAgICAgICBtb3Vz
ZVByZXNzZWQgPSBmYWxzZTsKICAgICAgICAgZG9GdWxsUmVwYWludCA9IHRydWU7CkBAIC0xMjIs
NiArMTIzLDcgQEAgcHVibGljOgogICAgIGJvb2wgc2Nyb2xsaW5nU2VsZjsKICAgICBUaW1lcjxG
cmFtZVZpZXc+IGxheW91dFRpbWVyOwogICAgIGJvb2wgZGVsYXllZExheW91dDsKKyAgICBSZWZQ
dHI8Tm9kZT4gbGF5b3V0Um9vdDsKICAgICAKICAgICBib29sIGxheW91dFNjaGVkdWxpbmdFbmFi
bGVkOwogICAgIGJvb2wgbGF5b3V0U3VwcHJlc3NlZDsKQEAgLTI5OCw3ICszMDAsNyBAQCB2b2lk
IEZyYW1lVmlldzo6YWRkUmVwYWludEluZm8oUmVuZGVyT2JqCiAgICAgZC0+cmVwYWludFJlY3Rz
LT5hcHBlbmQobmV3IFJlbmRlck9iamVjdDo6UmVwYWludEluZm8obywgcikpOwogfQogCi12b2lk
IEZyYW1lVmlldzo6bGF5b3V0KCkKK3ZvaWQgRnJhbWVWaWV3OjpsYXlvdXQoYm9vbCBhbGxvd1N1
YnRyZWUpCiB7CiAgICAgaWYgKGQtPmxheW91dFN1cHByZXNzZWQpCiAgICAgICAgIHJldHVybjsK
QEAgLTMxMyw2ICszMTUsMTMgQEAgdm9pZCBGcmFtZVZpZXc6OmxheW91dCgpCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKKyAgICBpZiAoIWFsbG93U3VidHJlZSAmJiBkLT5sYXlvdXRSb290KSB7
CisgICAgICAgIGlmIChkLT5sYXlvdXRSb290LT5yZW5kZXJlcigpKQorICAgICAgICAgICAgZC0+
bGF5b3V0Um9vdC0+cmVuZGVyZXIoKS0+bWFya0NvbnRhaW5pbmdCbG9ja3NGb3JMYXlvdXQoZmFs
c2UpOworICAgICAgICBkLT5sYXlvdXRSb290ID0gMDsKKyAgICB9CisKKyAgICBib29sIHN1YnRy
ZWUgPSBkLT5sYXlvdXRSb290OwogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG1fZnJhbWUtPmRv
Y3VtZW50KCk7CiAgICAgaWYgKCFkb2N1bWVudCkgewogICAgICAgICAvLyBGSVhNRTogU2hvdWxk
IHdlIHNldCBtX3NpemUuaGVpZ2h0IGhlcmUgdG9vPwpAQCAtMzIwLDYgKzMyOSw3IEBAIHZvaWQg
RnJhbWVWaWV3OjpsYXlvdXQoKQogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgTm9kZSog
cm9vdE5vZGUgPSBzdWJ0cmVlID8gZC0+bGF5b3V0Um9vdC5nZXQoKSA6IGRvY3VtZW50OwogICAg
IGQtPmxheW91dFNjaGVkdWxpbmdFbmFibGVkID0gZmFsc2U7CiAKICAgICAvLyBBbHdheXMgZW5z
dXJlIG91ciBzdHlsZSBpbmZvIGlzIHVwLXRvLWRhdGUuICBUaGlzIGNhbiBoYXBwZW4gaW4gc2l0
dWF0aW9ucyB3aGVyZQpAQCAtMzI3LDcgKzMzNyw3IEBAIHZvaWQgRnJhbWVWaWV3OjpsYXlvdXQo
KQogICAgIGlmIChkb2N1bWVudC0+aGFzQ2hhbmdlZENoaWxkKCkpCiAgICAgICAgIGRvY3VtZW50
LT5yZWNhbGNTdHlsZSgpOwogCi0gICAgUmVuZGVyQ2FudmFzKiByb290ID0gc3RhdGljX2Nhc3Q8
UmVuZGVyQ2FudmFzKj4oZG9jdW1lbnQtPnJlbmRlcmVyKCkpOworICAgIFJlbmRlck9iamVjdCog
cm9vdCA9IHJvb3ROb2RlLT5yZW5kZXJlcigpOwogICAgIGlmICghcm9vdCkgewogICAgICAgICAv
LyBGSVhNRTogRG8gd2UgbmVlZCB0byBzZXQgbV9zaXplIGhlcmU/CiAgICAgICAgIGQtPmxheW91
dFNjaGVkdWxpbmdFbmFibGVkID0gdHJ1ZTsKQEAgLTMzNyw5MSArMzQ3LDk5IEBAIHZvaWQgRnJh
bWVWaWV3OjpsYXlvdXQoKQogICAgIFNjcm9sbEJhck1vZGUgaE1vZGUgPSBkLT5obW9kZTsKICAg
ICBTY3JvbGxCYXJNb2RlIHZNb2RlID0gZC0+dm1vZGU7CiAgICAgCi0gICAgUmVuZGVyT2JqZWN0
KiByb290UmVuZGVyZXIgPSBkb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCkgPyBkb2N1bWVudC0+
ZG9jdW1lbnRFbGVtZW50KCktPnJlbmRlcmVyKCkgOiAwOwotICAgIGlmIChkb2N1bWVudC0+aXNI
VE1MRG9jdW1lbnQoKSkgewotICAgICAgICBOb2RlICpib2R5ID0gc3RhdGljX2Nhc3Q8SFRNTERv
Y3VtZW50Kj4oZG9jdW1lbnQpLT5ib2R5KCk7Ci0gICAgICAgIGlmIChib2R5ICYmIGJvZHktPnJl
bmRlcmVyKCkpIHsKLSAgICAgICAgICAgIGlmIChib2R5LT5oYXNUYWdOYW1lKGZyYW1lc2V0VGFn
KSkgewotICAgICAgICAgICAgICAgIGJvZHktPnJlbmRlcmVyKCktPnNldE5lZWRzTGF5b3V0KHRy
dWUpOwotICAgICAgICAgICAgICAgIHZNb2RlID0gU2Nyb2xsQmFyQWx3YXlzT2ZmOwotICAgICAg
ICAgICAgICAgIGhNb2RlID0gU2Nyb2xsQmFyQWx3YXlzT2ZmOworICAgIGlmICghc3VidHJlZSkg
eworICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KHJv
b3ROb2RlKTsKKyAgICAgICAgUmVuZGVyT2JqZWN0KiByb290UmVuZGVyZXIgPSBkb2N1bWVudC0+
ZG9jdW1lbnRFbGVtZW50KCkgPyBkb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCktPnJlbmRlcmVy
KCkgOiAwOworICAgICAgICBpZiAoZG9jdW1lbnQtPmlzSFRNTERvY3VtZW50KCkpIHsKKyAgICAg
ICAgICAgIE5vZGUgKmJvZHkgPSBzdGF0aWNfY2FzdDxIVE1MRG9jdW1lbnQqPihkb2N1bWVudCkt
PmJvZHkoKTsKKyAgICAgICAgICAgIGlmIChib2R5ICYmIGJvZHktPnJlbmRlcmVyKCkpIHsKKyAg
ICAgICAgICAgICAgICBpZiAoYm9keS0+aGFzVGFnTmFtZShmcmFtZXNldFRhZykpIHsKKyAgICAg
ICAgICAgICAgICAgICAgYm9keS0+cmVuZGVyZXIoKS0+c2V0TmVlZHNMYXlvdXQodHJ1ZSk7Cisg
ICAgICAgICAgICAgICAgICAgIHZNb2RlID0gU2Nyb2xsQmFyQWx3YXlzT2ZmOworICAgICAgICAg
ICAgICAgICAgICBoTW9kZSA9IFNjcm9sbEJhckFsd2F5c09mZjsKKyAgICAgICAgICAgICAgICB9
IGVsc2UgaWYgKGJvZHktPmhhc1RhZ05hbWUoYm9keVRhZykpIHsKKyAgICAgICAgICAgICAgICAg
ICAgUmVuZGVyT2JqZWN0KiBvID0gKHJvb3RSZW5kZXJlci0+c3R5bGUoKS0+b3ZlcmZsb3coKSA9
PSBPVklTSUJMRSkgPyBib2R5LT5yZW5kZXJlcigpIDogcm9vdFJlbmRlcmVyOworICAgICAgICAg
ICAgICAgICAgICBhcHBseU92ZXJmbG93VG9WaWV3cG9ydChvLCBoTW9kZSwgdk1vZGUpOyAvLyBP
bmx5IGFwcGxpZXMgdG8gSFRNTCBVQXMsIG5vdCB0byBYTUwvWEhUTUwgVUFzCisgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAoYm9keS0+aGFzVGFn
TmFtZShib2R5VGFnKSkgewotICAgICAgICAgICAgICAgIFJlbmRlck9iamVjdCogbyA9IChyb290
UmVuZGVyZXItPnN0eWxlKCktPm92ZXJmbG93KCkgPT0gT1ZJU0lCTEUpID8gYm9keS0+cmVuZGVy
ZXIoKSA6IHJvb3RSZW5kZXJlcjsKLSAgICAgICAgICAgICAgICBhcHBseU92ZXJmbG93VG9WaWV3
cG9ydChvLCBoTW9kZSwgdk1vZGUpOyAvLyBPbmx5IGFwcGxpZXMgdG8gSFRNTCBVQXMsIG5vdCB0
byBYTUwvWEhUTUwgVUFzCi0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZWxz
ZSBpZiAocm9vdFJlbmRlcmVyKQotICAgICAgICBhcHBseU92ZXJmbG93VG9WaWV3cG9ydChyb290
UmVuZGVyZXIsIGhNb2RlLCB2TW9kZSk7IC8vIFhNTC9YSFRNTCBVQXMgdXNlIHRoZSByb290IGVs
ZW1lbnQuCi0KKyAgICAgICAgfSBlbHNlIGlmIChyb290UmVuZGVyZXIpCisgICAgICAgICAgICBh
cHBseU92ZXJmbG93VG9WaWV3cG9ydChyb290UmVuZGVyZXIsIGhNb2RlLCB2TW9kZSk7IC8vIFhN
TC9YSFRNTCBVQXMgdXNlIHRoZSByb290IGVsZW1lbnQuCiAjaWYgSU5TVFJVTUVOVF9MQVlPVVRf
U0NIRURVTElORwotICAgIGlmIChkLT5maXJzdExheW91dCAmJiAhZG9jdW1lbnQtPm93bmVyRWxl
bWVudCgpKQotICAgICAgICBwcmludGYoIkVsYXBzZWQgdGltZSBiZWZvcmUgZmlyc3QgbGF5b3V0
OiAlZFxuIiwgZG9jdW1lbnQtPmVsYXBzZWRUaW1lKCkpOworICAgICAgICBpZiAoZC0+Zmlyc3RM
YXlvdXQgJiYgIWRvY3VtZW50LT5vd25lckVsZW1lbnQoKSkKKyAgICAgICAgICAgIHByaW50Zigi
RWxhcHNlZCB0aW1lIGJlZm9yZSBmaXJzdCBsYXlvdXQ6ICVkXG4iLCBkb2N1bWVudC0+ZWxhcHNl
ZFRpbWUoKSk7CiAjZW5kaWYKKyAgICB9CiAKLSAgICBkLT5kb0Z1bGxSZXBhaW50ID0gZC0+Zmly
c3RMYXlvdXQgfHwgcm9vdC0+cHJpbnRpbmdNb2RlKCk7CisgICAgZC0+ZG9GdWxsUmVwYWludCA9
ICFzdWJ0cmVlICYmIChkLT5maXJzdExheW91dCB8fCBzdGF0aWNfY2FzdDxSZW5kZXJDYW52YXMq
Pihyb290KS0+cHJpbnRpbmdNb2RlKCkpOwogICAgIGlmIChkLT5yZXBhaW50UmVjdHMpCiAgICAg
ICAgIGQtPnJlcGFpbnRSZWN0cy0+Y2xlYXIoKTsKIAotICAgIC8vIE5vdyBzZXQgb3VyIHNjcm9s
bGJhciBzdGF0ZSBmb3IgdGhlIGxheW91dC4KLSAgICBTY3JvbGxCYXJNb2RlIGN1cnJlbnRITW9k
ZSA9IGhTY3JvbGxCYXJNb2RlKCk7Ci0gICAgU2Nyb2xsQmFyTW9kZSBjdXJyZW50Vk1vZGUgPSB2
U2Nyb2xsQmFyTW9kZSgpOwotCiAgICAgYm9vbCBkaWRGaXJzdExheW91dCA9IGZhbHNlOwotICAg
IGlmIChkLT5maXJzdExheW91dCB8fCAoaE1vZGUgIT0gY3VycmVudEhNb2RlIHx8IHZNb2RlICE9
IGN1cnJlbnRWTW9kZSkpIHsKLSAgICAgICAgc3VwcHJlc3NTY3JvbGxCYXJzKHRydWUpOwotICAg
ICAgICBpZiAoZC0+Zmlyc3RMYXlvdXQpIHsKLSAgICAgICAgICAgIGQtPmZpcnN0TGF5b3V0ID0g
ZmFsc2U7Ci0gICAgICAgICAgICBkaWRGaXJzdExheW91dCA9IHRydWU7CisgICAgaWYgKCFzdWJ0
cmVlKSB7CisgICAgICAgIC8vIE5vdyBzZXQgb3VyIHNjcm9sbGJhciBzdGF0ZSBmb3IgdGhlIGxh
eW91dC4KKyAgICAgICAgU2Nyb2xsQmFyTW9kZSBjdXJyZW50SE1vZGUgPSBoU2Nyb2xsQmFyTW9k
ZSgpOworICAgICAgICBTY3JvbGxCYXJNb2RlIGN1cnJlbnRWTW9kZSA9IHZTY3JvbGxCYXJNb2Rl
KCk7CisKKyAgICAgICAgaWYgKGQtPmZpcnN0TGF5b3V0IHx8IChoTW9kZSAhPSBjdXJyZW50SE1v
ZGUgfHwgdk1vZGUgIT0gY3VycmVudFZNb2RlKSkgeworICAgICAgICAgICAgc3VwcHJlc3NTY3Jv
bGxCYXJzKHRydWUpOworICAgICAgICAgICAgaWYgKGQtPmZpcnN0TGF5b3V0KSB7CisgICAgICAg
ICAgICAgICAgZC0+Zmlyc3RMYXlvdXQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBkaWRGaXJz
dExheW91dCA9IHRydWU7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgLy8gU2V0
IHRoZSBpbml0aWFsIHZNb2RlIHRvIEFsd2F5c09uIGlmIHdlJ3JlIGF1dG8uCisgICAgICAgICAg
ICAgICAgaWYgKHZNb2RlID09IFNjcm9sbEJhckF1dG8pCisgICAgICAgICAgICAgICAgICAgIFNj
cm9sbFZpZXc6OnNldFZTY3JvbGxCYXJNb2RlKFNjcm9sbEJhckFsd2F5c09uKTsgLy8gVGhpcyBj
YXVzZXMgYSB2ZXJ0aWNhbCBzY3JvbGxiYXIgdG8gYXBwZWFyLgorICAgICAgICAgICAgICAgIC8v
IFNldCB0aGUgaW5pdGlhbCBoTW9kZSB0byBBbHdheXNPZmYgaWYgd2UncmUgYXV0by4KKyAgICAg
ICAgICAgICAgICBpZiAoaE1vZGUgPT0gU2Nyb2xsQmFyQXV0bykKKyAgICAgICAgICAgICAgICAg
ICAgU2Nyb2xsVmlldzo6c2V0SFNjcm9sbEJhck1vZGUoU2Nyb2xsQmFyQWx3YXlzT2ZmKTsgLy8g
VGhpcyBjYXVzZXMgYSBob3Jpem9udGFsIHNjcm9sbGJhciB0byBkaXNhcHBlYXIuCisgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIC8vIFNldCB0aGUgaW5pdGlhbCB2TW9k
ZSB0byBBbHdheXNPbiBpZiB3ZSdyZSBhdXRvLgotICAgICAgICAgICAgaWYgKHZNb2RlID09IFNj
cm9sbEJhckF1dG8pCi0gICAgICAgICAgICAgICAgU2Nyb2xsVmlldzo6c2V0VlNjcm9sbEJhck1v
ZGUoU2Nyb2xsQmFyQWx3YXlzT24pOyAvLyBUaGlzIGNhdXNlcyBhIHZlcnRpY2FsIHNjcm9sbGJh
ciB0byBhcHBlYXIuCi0gICAgICAgICAgICAvLyBTZXQgdGhlIGluaXRpYWwgaE1vZGUgdG8gQWx3
YXlzT2ZmIGlmIHdlJ3JlIGF1dG8uCi0gICAgICAgICAgICBpZiAoaE1vZGUgPT0gU2Nyb2xsQmFy
QXV0bykKLSAgICAgICAgICAgICAgICBTY3JvbGxWaWV3OjpzZXRIU2Nyb2xsQmFyTW9kZShTY3Jv
bGxCYXJBbHdheXNPZmYpOyAvLyBUaGlzIGNhdXNlcyBhIGhvcml6b250YWwgc2Nyb2xsYmFyIHRv
IGRpc2FwcGVhci4KLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgaWYgKGhNb2RlID09IHZN
b2RlKQotICAgICAgICAgICAgU2Nyb2xsVmlldzo6c2V0U2Nyb2xsQmFyc01vZGUoaE1vZGUpOwot
ICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFNjcm9sbFZpZXc6OnNldEhTY3JvbGxCYXJNb2Rl
KGhNb2RlKTsKLSAgICAgICAgICAgIFNjcm9sbFZpZXc6OnNldFZTY3JvbGxCYXJNb2RlKHZNb2Rl
KTsKLSAgICAgICAgfQorICAgICAgICAgICAgaWYgKGhNb2RlID09IHZNb2RlKQorICAgICAgICAg
ICAgICAgIFNjcm9sbFZpZXc6OnNldFNjcm9sbEJhcnNNb2RlKGhNb2RlKTsKKyAgICAgICAgICAg
IGVsc2UgeworICAgICAgICAgICAgICAgIFNjcm9sbFZpZXc6OnNldEhTY3JvbGxCYXJNb2RlKGhN
b2RlKTsKKyAgICAgICAgICAgICAgICBTY3JvbGxWaWV3OjpzZXRWU2Nyb2xsQmFyTW9kZSh2TW9k
ZSk7CisgICAgICAgICAgICB9CiAKLSAgICAgICAgc3VwcHJlc3NTY3JvbGxCYXJzKGZhbHNlLCB0
cnVlKTsKLSAgICB9CisgICAgICAgICAgICBzdXBwcmVzc1Njcm9sbEJhcnMoZmFsc2UsIHRydWUp
OworICAgICAgICB9CiAKLSAgICBJbnRTaXplIG9sZFNpemUgPSBtX3NpemU7CisgICAgICAgIElu
dFNpemUgb2xkU2l6ZSA9IG1fc2l6ZTsKIAotICAgIG1fc2l6ZSA9IEludFNpemUodmlzaWJsZVdp
ZHRoKCksIHZpc2libGVIZWlnaHQoKSk7CisgICAgICAgIG1fc2l6ZSA9IEludFNpemUodmlzaWJs
ZVdpZHRoKCksIHZpc2libGVIZWlnaHQoKSk7CiAKLSAgICBpZiAob2xkU2l6ZSAhPSBtX3NpemUp
Ci0gICAgICAgIGQtPmRvRnVsbFJlcGFpbnQgPSB0cnVlOworICAgICAgICBpZiAob2xkU2l6ZSAh
PSBtX3NpemUpCisgICAgICAgICAgICBkLT5kb0Z1bGxSZXBhaW50ID0gdHJ1ZTsKKyAgICB9CiAg
ICAgCi0gICAgUmVuZGVyTGF5ZXIqIGxheWVyID0gcm9vdC0+bGF5ZXIoKTsKKyAgICBSZW5kZXJM
YXllciogbGF5ZXIgPSByb290LT5lbmNsb3NpbmdMYXllcigpOwogICAgICAKICAgICBpZiAoIWQt
PmRvRnVsbFJlcGFpbnQpIHsKICAgICAgICAgbGF5ZXItPmNvbXB1dGVSZXBhaW50UmVjdHMoKTsK
ICAgICAgICAgcm9vdC0+cmVwYWludE9iamVjdHNCZWZvcmVMYXlvdXQoKTsKICAgICB9CiAKKyAg
ICBpZiAoc3VidHJlZSkgeworICAgICAgICBpZiAocm9vdC0+cmVjYWxjTWluTWF4KCkpCisgICAg
ICAgICAgICByb290LT5yZWNhbGNNaW5NYXhXaWR0aHMoKTsKKyAgICB9CiAgICAgcm9vdC0+bGF5
b3V0KCk7CisgICAgZC0+bGF5b3V0Um9vdCA9IDA7CiAKICAgICBtX2ZyYW1lLT5pbnZhbGlkYXRl
U2VsZWN0aW9uKCk7CiAgICAKICAgICBkLT5sYXlvdXRTY2hlZHVsaW5nRW5hYmxlZD10cnVlOwog
ICAgIGQtPmxheW91dFN1cHByZXNzZWQgPSBmYWxzZTsKIAotICAgIGlmICghcm9vdC0+cHJpbnRp
bmdNb2RlKCkpCisgICAgaWYgKCFzdWJ0cmVlICYmICFzdGF0aWNfY2FzdDxSZW5kZXJDYW52YXMq
Pihyb290KS0+cHJpbnRpbmdNb2RlKCkpCiAgICAgICAgIHJlc2l6ZUNvbnRlbnRzKGxheWVyLT53
aWR0aCgpLCBsYXllci0+aGVpZ2h0KCkpOwogCiAgICAgLy8gTm93IHVwZGF0ZSB0aGUgcG9zaXRp
b25zIG9mIGFsbCBsYXllcnMuCiAgICAgbGF5ZXItPnVwZGF0ZUxheWVyUG9zaXRpb25zKGQtPmRv
RnVsbFJlcGFpbnQpOwogCiAgICAgLy8gV2UgdXBkYXRlIG91ciB3aWRnZXQgcG9zaXRpb25zIHJp
Z2h0IGFmdGVyIGRvaW5nIGEgbGF5b3V0LgotICAgIHJvb3QtPnVwZGF0ZVdpZGdldFBvc2l0aW9u
cygpOworICAgIGlmICghc3VidHJlZSkKKyAgICAgICAgc3RhdGljX2Nhc3Q8UmVuZGVyQ2FudmFz
Kj4ocm9vdCktPnVwZGF0ZVdpZGdldFBvc2l0aW9ucygpOwogICAgIAogICAgIGlmIChkLT5yZXBh
aW50UmVjdHMgJiYgIWQtPnJlcGFpbnRSZWN0cy0+aXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIEZJ
WE1FOiBDb3VsZCBvcHRpbWl6ZSB0aGlzIGFuZCBoYXZlIG9iamVjdHMgcmVtb3ZlZCBmcm9tIHRo
aXMgbGlzdApAQCAtMTA2NSw2ICsxMDgzLDExIEBAIHZvaWQgRnJhbWVWaWV3Ojpob3ZlclRpbWVy
RmlyZWQoVGltZXI8RnIKIAogdm9pZCBGcmFtZVZpZXc6OnNjaGVkdWxlUmVsYXlvdXQoKQogewor
ICAgIGlmIChkLT5sYXlvdXRSb290KSB7CisgICAgICAgIGlmIChkLT5sYXlvdXRSb290LT5yZW5k
ZXJlcigpKQorICAgICAgICAgICAgZC0+bGF5b3V0Um9vdC0+cmVuZGVyZXIoKS0+bWFya0NvbnRh
aW5pbmdCbG9ja3NGb3JMYXlvdXQoZmFsc2UpOworICAgICAgICBkLT5sYXlvdXRSb290ID0gMDsK
KyAgICB9CiAgICAgaWYgKCFkLT5sYXlvdXRTY2hlZHVsaW5nRW5hYmxlZCkKICAgICAgICAgcmV0
dXJuOwogCkBAIC0xMDg3LDYgKzExMTAsMzEgQEAgdm9pZCBGcmFtZVZpZXc6OnNjaGVkdWxlUmVs
YXlvdXQoKQogICAgIGQtPmxheW91dFRpbWVyLnN0YXJ0T25lU2hvdChkZWxheSAqIDAuMDAxKTsK
IH0KIAordm9pZCBGcmFtZVZpZXc6OnNjaGVkdWxlUmVsYXlvdXRPZlN1YnRyZWUoTm9kZSogbikK
K3sKKyAgICBpZiAoIWQtPmxheW91dFNjaGVkdWxpbmdFbmFibGVkIHx8IG1fZnJhbWUtPmRvY3Vt
ZW50KCkgJiYgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+cmVuZGVyZXIoKSAmJiBtX2ZyYW1lLT5kb2N1
bWVudCgpLT5yZW5kZXJlcigpLT5uZWVkc0xheW91dCgpKSB7CisgICAgICAgIGlmIChuLT5yZW5k
ZXJlcigpKQorICAgICAgICAgICAgbi0+cmVuZGVyZXIoKS0+bWFya0NvbnRhaW5pbmdCbG9ja3NG
b3JMYXlvdXQoZmFsc2UpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKGxheW91
dFBlbmRpbmcoKSkgeworICAgICAgICBpZiAoZC0+bGF5b3V0Um9vdCAhPSBuKSB7CisgICAgICAg
ICAgICAvLyBKdXN0IGRvIGEgZnVsbCByZWxheW91dAorICAgICAgICAgICAgaWYgKGQtPmxheW91
dFJvb3QgJiYgZC0+bGF5b3V0Um9vdC0+cmVuZGVyZXIoKSkKKyAgICAgICAgICAgICAgICBkLT5s
YXlvdXRSb290LT5yZW5kZXJlcigpLT5tYXJrQ29udGFpbmluZ0Jsb2Nrc0ZvckxheW91dChmYWxz
ZSk7CisgICAgICAgICAgICBkLT5sYXlvdXRSb290ID0gMDsKKyAgICAgICAgICAgIGlmIChuLT5y
ZW5kZXJlcigpKQorICAgICAgICAgICAgICAgIG4tPnJlbmRlcmVyKCktPm1hcmtDb250YWluaW5n
QmxvY2tzRm9yTGF5b3V0KGZhbHNlKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAg
IGludCBkZWxheSA9IG1fZnJhbWUtPmRvY3VtZW50KCktPm1pbmltdW1MYXlvdXREZWxheSgpOwor
ICAgICAgICBkLT5sYXlvdXRSb290ID0gbjsKKyAgICAgICAgZC0+ZGVsYXllZExheW91dCA9IGRl
bGF5ICE9IDA7CisgICAgICAgIGQtPmxheW91dFRpbWVyLnN0YXJ0T25lU2hvdChkZWxheSAqIDAu
MDAxKTsKKyAgICB9Cit9CisKIGJvb2wgRnJhbWVWaWV3OjpsYXlvdXRQZW5kaW5nKCkKIHsKICAg
ICByZXR1cm4gZC0+bGF5b3V0VGltZXIuaXNBY3RpdmUoKTsKSW5kZXg6IFdlYkNvcmUvcGFnZS9G
cmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAkocmV2aXNpb24g
MTQ1MzIpCisrKyBXZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTgw
LDcgKzI5ODAsNyBAQCB2b2lkIEZyYW1lOjpmb3JjZUxheW91dCgpCiB7CiAgICAgRnJhbWVWaWV3
ICp2ID0gZC0+bV92aWV3LmdldCgpOwogICAgIGlmICh2KSB7Ci0gICAgICAgIHYtPmxheW91dCgp
OworICAgICAgICB2LT5sYXlvdXQoZmFsc2UpOwogICAgICAgICAvLyBXZSBjYW5ub3QgdW5zY2hl
ZHVsZSBhIHBlbmRpbmcgcmVsYXlvdXQsIHNpbmNlIHRoZSBmb3JjZSBjYW4gYmUgY2FsbGVkIHdp
dGgKICAgICAgICAgLy8gYSB0aW55IHJlY3RhbmdsZSBmcm9tIGEgZHJhd1JlY3QgdXBkYXRlLiAg
QnkgdW5zY2hlZHVsaW5nIHdlIGluIGVmZmVjdAogICAgICAgICAvLyAidmFsaWRhdGUiIGFuZCBz
dG9wIHRoZSBuZWNlc3NhcnkgZnVsbCByZXBhaW50IGZyb20gb2NjdXJyaW5nLiAgQmFzaWNhbGx5
IGFueSBiYXNpYwpJbmRleDogV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAkocmV2aXNpb24gMTQ1MzIpCisrKyBXZWJDb3JlL3Bh
Z2UvRnJhbWVWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTExNSw3ICsxMTUsNyBAQCBwdWJsaWM6
CiAgICAgCiAgICAgdm9pZCBwcmludCgpOwogCi0gICAgdm9pZCBsYXlvdXQoKTsKKyAgICB2b2lk
IGxheW91dChib29sIGFsbG93U3VidHJlZSA9IHRydWUpOwogCiAgICAgYm9vbCBpbkxheW91dCgp
IGNvbnN0OwogICAgIGludCBsYXlvdXRDb3VudCgpIGNvbnN0OwpAQCAtMTUyLDYgKzE1Miw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldFRyYW5zcGFyZW50KGJvb2wgaXNUcmFuc3BhcmVudCk7CiAg
ICAgCiAgICAgdm9pZCBzY2hlZHVsZVJlbGF5b3V0KCk7CisgICAgdm9pZCBzY2hlZHVsZVJlbGF5
b3V0T2ZTdWJ0cmVlKE5vZGUqKTsKICAgICB2b2lkIHVuc2NoZWR1bGVSZWxheW91dCgpOwogICAg
IGJvb2wgaGF2ZURlbGF5ZWRMYXlvdXRTY2hlZHVsZWQoKTsKICAgICBib29sIGxheW91dFBlbmRp
bmcoKTsKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAkocmV2aXNpb24gMTQ2MTgp
CisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02ODksNyArNjg5LDcgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OnNldENoaWxkTmVlZHNMYXlvdXQo
YgogICAgIH0KIH0KIAotdm9pZCBSZW5kZXJPYmplY3Q6Om1hcmtDb250YWluaW5nQmxvY2tzRm9y
TGF5b3V0KCkKK3ZvaWQgUmVuZGVyT2JqZWN0OjptYXJrQ29udGFpbmluZ0Jsb2Nrc0ZvckxheW91
dChib29sIHNjaGVkdWxlUmVsYXlvdXQpCiB7CiAgICAgUmVuZGVyT2JqZWN0ICpvID0gY29udGFp
bmVyKCk7CiAgICAgUmVuZGVyT2JqZWN0ICpsYXN0ID0gdGhpczsKQEAgLTY5OSwxOCArNjk5LDIw
IEBAIHZvaWQgUmVuZGVyT2JqZWN0OjptYXJrQ29udGFpbmluZ0Jsb2Nrc0YKICAgICAgICAgICAg
IGlmIChvLT5tX3Bvc0NoaWxkTmVlZHNMYXlvdXQpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAgICAgby0+bV9wb3NDaGlsZE5lZWRzTGF5b3V0ID0gdHJ1ZTsKLSAgICAgICAgfQot
ICAgICAgICBlbHNlIHsKKyAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlmIChvLT5tX25v
cm1hbENoaWxkTmVlZHNMYXlvdXQpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgby0+bV9ub3JtYWxDaGlsZE5lZWRzTGF5b3V0ID0gdHJ1ZTsKICAgICAgICAgfQogCiAgICAg
ICAgIGxhc3QgPSBvOworICAgICAgICBpZiAoc2NoZWR1bGVSZWxheW91dCAmJiBsYXN0LT5pc1Rl
eHRGaWVsZCgpKQorICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIG8gPSBvLT5jb250YWluZXIo
KTsKICAgICB9CiAKLSAgICBsYXN0LT5zY2hlZHVsZVJlbGF5b3V0KCk7CisgICAgaWYgKHNjaGVk
dWxlUmVsYXlvdXQpCisgICAgICAgIGxhc3QtPnNjaGVkdWxlUmVsYXlvdXQoKTsKIH0KIAogUmVu
ZGVyQmxvY2sqIFJlbmRlck9iamVjdDo6Y29udGFpbmluZ0Jsb2NrKCkgY29uc3QKQEAgLTIyODks
MTEgKzIyOTEsMTUgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OnJlY2FsY01pbk1heFdpZHRocygpCiAK
IHZvaWQgUmVuZGVyT2JqZWN0OjpzY2hlZHVsZVJlbGF5b3V0KCkKIHsKLSAgICBpZiAoIWlzQ2Fu
dmFzKCkpCi0gICAgICAgIHJldHVybjsKLSAgICBGcmFtZVZpZXcgKnZpZXcgPSBzdGF0aWNfY2Fz
dDxSZW5kZXJDYW52YXMgKj4odGhpcyktPnZpZXcoKTsKLSAgICBpZiAodmlldykKLSAgICAgICAg
dmlldy0+c2NoZWR1bGVSZWxheW91dCgpOworICAgIGlmIChpc0NhbnZhcygpKSB7CisgICAgICAg
IEZyYW1lVmlldyogdmlldyA9IHN0YXRpY19jYXN0PFJlbmRlckNhbnZhcyo+KHRoaXMpLT52aWV3
KCk7CisgICAgICAgIGlmICh2aWV3KQorICAgICAgICAgICAgdmlldy0+c2NoZWR1bGVSZWxheW91
dCgpOworICAgIH0gZWxzZSB7CisgICAgICAgIEZyYW1lVmlldyogdmlldyA9IGNhbnZhcygpID8g
Y2FudmFzKCktPnZpZXcoKSA6IDA7CisgICAgICAgIGlmICh2aWV3KQorICAgICAgICAgICAgdmll
dy0+c2NoZWR1bGVSZWxheW91dE9mU3VidHJlZShub2RlKCkpOworICAgIH0KIH0KIAogCkluZGV4
OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAkocmV2aXNpb24gMTQ1MzIpCisrKyBXZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzM5LDcgKzMzOSw3IEBA
IHB1YmxpYzoKICAgICBSZW5kZXJPYmplY3QqIGhvdmVyQW5jZXN0b3IoKSBjb25zdDsKIAogICAg
IHZpcnR1YWwgdm9pZCBtYXJrQWxsRGVzY2VuZGFudHNXaXRoRmxvYXRzRm9yTGF5b3V0KFJlbmRl
ck9iamVjdCogZmxvYXRUb1JlbW92ZSA9IDApOwotICAgIHZvaWQgbWFya0NvbnRhaW5pbmdCbG9j
a3NGb3JMYXlvdXQoKTsKKyAgICB2b2lkIG1hcmtDb250YWluaW5nQmxvY2tzRm9yTGF5b3V0KGJv
b2wgc2NoZWR1bGVSZWxheW91dCA9IHRydWUpOwogICAgIHZvaWQgc2V0TmVlZHNMYXlvdXQoYm9v
bCBiLCBib29sIG1hcmtQYXJlbnRzID0gdHJ1ZSk7CiAgICAgdm9pZCBzZXRDaGlsZE5lZWRzTGF5
b3V0KGJvb2wgYiwgYm9vbCBtYXJrUGFyZW50cyA9IHRydWUpOwogICAgIHZvaWQgc2V0TWluTWF4
S25vd24oYm9vbCBiPXRydWUpIHsK
</data>
<flag name="review"
          id="2457"
          type_id="1"
          status="+"
          setter="hyatt"
    />
          </attachment>
      

    </bug>

</bugzilla>