<?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>26695</bug_id>
          
          <creation_ts>2009-06-24 15:06:15 -0700</creation_ts>
          <short_desc>Windows 7: Dragging Scrollbar doesn&apos;t work properly on inner divs with scrollbars or Frames on Touch Screen</short_desc>
          <delta_ts>2009-07-02 20:58:50 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Windows 7</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar, PlatformOnly</keywords>
          <priority>P3</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>26486</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brian Weinstein">bweinstein</reporter>
          <assigned_to name="Brian Weinstein">bweinstein</assigned_to>
          <cc>aroben</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>128011</commentid>
    <comment_count>0</comment_count>
    <who name="Brian Weinstein">bweinstein</who>
    <bug_when>2009-06-24 15:06:15 -0700</bug_when>
    <thetext>6/24/09 2:55 PM Brian Weinstein:
* SUMMARY
Unable to grab a scrollbar on an inner frame or div - it is always thought of as a panning gesture.

* STEPS TO REPRODUCE
1. Go to www.tivofaq.com
2. Try to scroll by dragging the scrollbar with your finger

* RESULTS
Interpreted as a panning gesture instead of dragging of the scrollbar</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128012</commentid>
    <comment_count>1</comment_count>
    <who name="Brian Weinstein">bweinstein</who>
    <bug_when>2009-06-24 15:06:55 -0700</bug_when>
    <thetext>&lt;rdar://problem/7004204&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128259</commentid>
    <comment_count>2</comment_count>
      <attachid>31873</attachid>
    <who name="Brian Weinstein">bweinstein</who>
    <bug_when>2009-06-25 14:03:42 -0700</bug_when>
    <thetext>Created attachment 31873
Inner Scrollbar Patch

Patch to fix grabbing of inner scrollbars on textareas, divs with overflow, and frames with scrollbars.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128271</commentid>
    <comment_count>3</comment_count>
      <attachid>31873</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2009-06-25 14:19:50 -0700</bug_when>
    <thetext>Comment on attachment 31873
Inner Scrollbar Patch

&gt; Index: WebCore/ChangeLog
&gt; ===================================================================
&gt; --- WebCore/ChangeLog	(revision 45184)
&gt; +++ WebCore/ChangeLog	(working copy)
&gt; @@ -1,3 +1,24 @@
&gt; +2009-06-25  Brian Weinstein  &lt;bweinstein@apple.com&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +        
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=26695
&gt; +        
&gt; +        This patch adds the ability to get have the Scrollbar variable set
&gt; +        in EventHandler::hitTestResultAtPoint, and if the mouse is over a
&gt; +        scrollbar, the m_scrollbar variable will be set.

I&apos;m not sure how the independent clauses of this sentence are different

&gt; -HitTestResult EventHandler::hitTestResultAtPoint(const IntPoint&amp; point, bool allowShadowContent, bool ignoreClipping)
&gt; +HitTestResult EventHandler::hitTestResultAtPoint(const IntPoint&amp; point, bool allowShadowContent, bool ignoreClipping, bool shouldSetScrollbar)

We&apos;re trying to avoid adding boolean parameters, because they are not very clear (when reading code like &quot;hitTestResultAtPoint(point, true, false, true)&quot;, what do the booleans mean?). One strategy to replace a boolean parameter is to use a two-value enum, like this:

enum HitTestScrollbars { ShouldHitTestScrollbars, DontHitTestScrollbars };
HitTestResult hitTestResultAtPoint(const IntPoint&amp;, bool allowShadowContent, bool ignoreClipping, HitTestScrollbars);

&gt; +        if (shouldSetScrollbar) {
&gt; +            PlatformMouseEvent mouseEvent(point, point, NoButton, MouseEventPressed, 0, false, false, false, false, 0);
&gt; +            Scrollbar* eventScrollbar = view-&gt;scrollbarUnderMouse(mouseEvent);
&gt; +            if (eventScrollbar)
&gt; +                result.setScrollbar(eventScrollbar);
&gt; +        }

Can we change scrollbarUnderMouse to take an IntPoint instead of a PlatformMouseEvent? If we do that, we might want to change its name to something like scrollbarAtPoint or scrollbarAtWindowPoint.

&gt; +++ WebCore/platform/PlatformWheelEvent.h	(working copy)
&gt; @@ -27,6 +27,8 @@
&gt;  #define PlatformWheelEvent_h
&gt;  
&gt;  #include &quot;IntPoint.h&quot;
&gt; +#include &quot;FloatPoint.h&quot;
&gt; +#include &quot;FloatSize.h&quot;

You don&apos;t need these #includes here. You can just declare the classes.


&gt; +++ WebCore/platform/win/WheelEventWin.cpp	(working copy)
&gt; @@ -23,6 +23,8 @@
&gt;   * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
&gt;   */
&gt;  
&gt; +#include &quot;FloatPoint.h&quot;
&gt; +#include &quot;FloatSize.h&quot;
&gt;  #include &quot;PlatformWheelEvent.h&quot;
&gt;  
&gt;  #include &lt;windows.h&gt;

The #includes should be formatted like this:

#include &quot;config.h&quot;
#include &quot;PlatformWheelEvent.h&quot;

#include &quot;FloatPoint.h&quot;
#include &quot;FloatSize.h&quot;
#include &lt;windows.h&gt;

(It&apos;s a mistake that config.h wasn&apos;t listed before!)

&gt; +        ScrollView* view = coreFrame-&gt;view();
&gt; +        if (!view) {
&gt; +            CloseGestureInfoHandlePtr()(gestureHandle);
&gt; +            return false;
&gt; +        }
&gt; +        Scrollbar* vertScrollbar = view-&gt;verticalScrollbar();
&gt; +        if (!vertScrollbar) {
&gt; +            CloseGestureInfoHandlePtr()(gestureHandle);
&gt; +            return true;
&gt; +        }

Why &quot;return false&quot; in one case and &quot;return true&quot; in another?

I think ideally this change would be done as 3 patches:

1) Change the parameters to the PlatformWheelEvent constructor
2) Change the parameter to scrollbarUnderMouse (and maybe change its name, too)
3) Everything else

r- so that we can at least get the style issues fixed. But please consider splitting up the patch, too!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128501</commentid>
    <comment_count>4</comment_count>
    <who name="Brian Weinstein">bweinstein</who>
    <bug_when>2009-06-26 10:34:53 -0700</bug_when>
    <thetext>&gt; &gt; +        ScrollView* view = coreFrame-&gt;view();
&gt; &gt; +        if (!view) {
&gt; &gt; +            CloseGestureInfoHandlePtr()(gestureHandle);
&gt; &gt; +            return false;
&gt; &gt; +        }
&gt; &gt; +        Scrollbar* vertScrollbar = view-&gt;verticalScrollbar();
&gt; &gt; +        if (!vertScrollbar) {
&gt; &gt; +            CloseGestureInfoHandlePtr()(gestureHandle);
&gt; &gt; +            return true;
&gt; &gt; +        }
&gt; 
&gt; Why &quot;return false&quot; in one case and &quot;return true&quot; in another?

This is because if there is no ScrollView, then I feel like the call to ::gesture() has failed, however, if there is no Scrollbar, then the call to ::gesture() has succeeded and just isn&apos;t necessary. That is why I return true if there is no scrollbar, but false if there is no ScrollView.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128586</commentid>
    <comment_count>5</comment_count>
      <attachid>31957</attachid>
    <who name="Brian Weinstein">bweinstein</who>
    <bug_when>2009-06-26 15:38:19 -0700</bug_when>
    <thetext>Created attachment 31957
Take 2 Panning Patch

I was struggling to get this split into multiple patches, as the same section in the diff needed to go in more than 1 patch, so I left it in one for now, but if it&apos;s a dealbreaker to review, let me know.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128838</commentid>
    <comment_count>6</comment_count>
      <attachid>31957</attachid>
    <who name="Brian Weinstein">bweinstein</who>
    <bug_when>2009-06-29 10:46:06 -0700</bug_when>
    <thetext>Comment on attachment 31957
Take 2 Panning Patch

Clearing Review Flag - Landed in 45304</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31873</attachid>
            <date>2009-06-25 14:03:42 -0700</date>
            <delta_ts>2009-06-26 15:38:19 -0700</delta_ts>
            <desc>Inner Scrollbar Patch</desc>
            <filename>InnerFramePan.patch</filename>
            <type>text/plain</type>
            <size>11178</size>
            <attacher name="Brian Weinstein">bweinstein</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NTE4NCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjQgQEAKKzIwMDktMDYtMjUgIEJyaWFuIFdlaW5zdGVpbiAgPGJ3ZWluc3RlaW5A
YXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAg
ICAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI2Njk1
CisgICAgICAgIAorICAgICAgICBUaGlzIHBhdGNoIGFkZHMgdGhlIGFiaWxpdHkgdG8gZ2V0IGhh
dmUgdGhlIFNjcm9sbGJhciB2YXJpYWJsZSBzZXQKKyAgICAgICAgaW4gRXZlbnRIYW5kbGVyOjpo
aXRUZXN0UmVzdWx0QXRQb2ludCwgYW5kIGlmIHRoZSBtb3VzZSBpcyBvdmVyIGEKKyAgICAgICAg
c2Nyb2xsYmFyLCB0aGUgbV9zY3JvbGxiYXIgdmFyaWFibGUgd2lsbCBiZSBzZXQuIEl0IGFkZGl0
aW9uYWxseQorICAgICAgICBjaGFuZ2VzIHRoZSBzaWduYXR1cmUgb2YgdGhlIG5ldyBQbGF0Zm9y
bVdoZWVsRXZlbnQgb2JqZWN0IHRvIHVzZSBtb3JlCisgICAgICAgIGFwcHJvcHJpYXRlIG9iamVj
dHMuCisKKyAgICAgICAgVW5hYmxlIHRvIGFkZCB0ZXN0IGNhc2VzIHRvIHRlc3QgTXVsdGl0b3Vj
aCBzY3JvbGxpbmcuCisKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhpdFRlc3RSZXN1bHRBdFBvaW50KToKKyAgICAgICAg
KiBwYWdlL0V2ZW50SGFuZGxlci5oOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtV2hlZWxF
dmVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9XaGVlbEV2ZW50V2luLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBsYXRmb3JtV2hlZWxFdmVudDo6UGxhdGZvcm1XaGVlbEV2ZW50KToKKwog
MjAwOS0wNi0yNSAgSmVyZW15IE9ybG93ICA8am9ybG93QGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBEYXJpbiBGaXNoZXIuCkluZGV4OiBXZWJDb3JlL3BhZ2UvRXZlbnRIYW5k
bGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAkocmV2
aXNpb24gNDQ4ODMpCisrKyBXZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNzM1LDcgKzczNSw3IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjphbGxvd0RIVE1MRHJh
Zyhib29sJiAKICAgICBmbGFnVUEgPSAoKG1hc2sgJiBEcmFnU291cmNlQWN0aW9uSW1hZ2UpIHx8
IChtYXNrICYgRHJhZ1NvdXJjZUFjdGlvbkxpbmspIHx8IChtYXNrICYgRHJhZ1NvdXJjZUFjdGlv
blNlbGVjdGlvbikpOwogfQogICAgIAotSGl0VGVzdFJlc3VsdCBFdmVudEhhbmRsZXI6OmhpdFRl
c3RSZXN1bHRBdFBvaW50KGNvbnN0IEludFBvaW50JiBwb2ludCwgYm9vbCBhbGxvd1NoYWRvd0Nv
bnRlbnQsIGJvb2wgaWdub3JlQ2xpcHBpbmcpCitIaXRUZXN0UmVzdWx0IEV2ZW50SGFuZGxlcjo6
aGl0VGVzdFJlc3VsdEF0UG9pbnQoY29uc3QgSW50UG9pbnQmIHBvaW50LCBib29sIGFsbG93U2hh
ZG93Q29udGVudCwgYm9vbCBpZ25vcmVDbGlwcGluZywgYm9vbCBzaG91bGRTZXRTY3JvbGxiYXIp
CiB7CiAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQocG9pbnQpOwogICAgIGlmICghbV9mcmFtZS0+
Y29udGVudFJlbmRlcmVyKCkpCkBAIC03NjIsNiArNzYyLDEzIEBAIEhpdFRlc3RSZXN1bHQgRXZl
bnRIYW5kbGVyOjpoaXRUZXN0UmVzdWwKICAgICAgICAgSGl0VGVzdFJlc3VsdCB3aWRnZXRIaXRU
ZXN0UmVzdWx0KHdpZGdldFBvaW50KTsKICAgICAgICAgZnJhbWUtPmNvbnRlbnRSZW5kZXJlcigp
LT5sYXllcigpLT5oaXRUZXN0KEhpdFRlc3RSZXF1ZXN0KGhpdFR5cGUpLCB3aWRnZXRIaXRUZXN0
UmVzdWx0KTsKICAgICAgICAgcmVzdWx0ID0gd2lkZ2V0SGl0VGVzdFJlc3VsdDsKKworICAgICAg
ICBpZiAoc2hvdWxkU2V0U2Nyb2xsYmFyKSB7CisgICAgICAgICAgICBQbGF0Zm9ybU1vdXNlRXZl
bnQgbW91c2VFdmVudChwb2ludCwgcG9pbnQsIE5vQnV0dG9uLCBNb3VzZUV2ZW50UHJlc3NlZCwg
MCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIDApOworICAgICAgICAgICAgU2Nyb2xsYmFy
KiBldmVudFNjcm9sbGJhciA9IHZpZXctPnNjcm9sbGJhclVuZGVyTW91c2UobW91c2VFdmVudCk7
CisgICAgICAgICAgICBpZiAoZXZlbnRTY3JvbGxiYXIpCisgICAgICAgICAgICAgICAgcmVzdWx0
LnNldFNjcm9sbGJhcihldmVudFNjcm9sbGJhcik7CisgICAgICAgIH0KICAgICB9CiAgICAgCiAg
ICAgLy8gSWYgb3VyIEhpdFRlc3RSZXN1bHQgaXMgbm90IHZpc2libGUsIHRoZW4gd2Ugc3RhcnRl
ZCBoaXQgdGVzdGluZyB0b28gZmFyIGRvd24gdGhlIGZyYW1lIGNoYWluLiAKSW5kZXg6IFdlYkNv
cmUvcGFnZS9FdmVudEhhbmRsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRXZlbnRI
YW5kbGVyLmgJKHJldmlzaW9uIDQ0ODgzKQorKysgV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC04Niw3ICs4Niw3IEBAIHB1YmxpYzoKICAgICBSZW5kZXJPYmpl
Y3QqIGF1dG9zY3JvbGxSZW5kZXJlcigpIGNvbnN0OwogICAgIHZvaWQgdXBkYXRlQXV0b3Njcm9s
bFJlbmRlcmVyKCk7CiAKLSAgICBIaXRUZXN0UmVzdWx0IGhpdFRlc3RSZXN1bHRBdFBvaW50KGNv
bnN0IEludFBvaW50JiwgYm9vbCBhbGxvd1NoYWRvd0NvbnRlbnQsIGJvb2wgaWdub3JlQ2xpcHBp
bmcgPSBmYWxzZSk7CisgICAgSGl0VGVzdFJlc3VsdCBoaXRUZXN0UmVzdWx0QXRQb2ludChjb25z
dCBJbnRQb2ludCYsIGJvb2wgYWxsb3dTaGFkb3dDb250ZW50LCBib29sIGlnbm9yZUNsaXBwaW5n
ID0gZmFsc2UsIGJvb2wgc2V0U2Nyb2xsYmFyID0gZmFsc2UpOwogCiAgICAgYm9vbCBtb3VzZVBy
ZXNzZWQoKSBjb25zdCB7IHJldHVybiBtX21vdXNlUHJlc3NlZDsgfQogICAgIHZvaWQgc2V0TW91
c2VQcmVzc2VkKGJvb2wgcHJlc3NlZCkgeyBtX21vdXNlUHJlc3NlZCA9IHByZXNzZWQ7IH0KSW5k
ZXg6IFdlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1XaGVlbEV2ZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaAkocmV2aXNpb24gNDQ4ODMpCisr
KyBXZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yNyw2ICsyNyw4IEBACiAjZGVmaW5lIFBsYXRmb3JtV2hlZWxFdmVudF9oCiAKICNpbmNsdWRl
ICJJbnRQb2ludC5oIgorI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKKyNpbmNsdWRlICJGbG9hdFNp
emUuaCIKIAogI2lmIFBMQVRGT1JNKEdUSykKIHR5cGVkZWYgc3RydWN0IF9HZGtFdmVudFNjcm9s
bCBHZGtFdmVudFNjcm9sbDsKQEAgLTk5LDcgKzEwMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogI2lmIFBMQVRGT1JNKFdJTikKICAgICAgICAgUGxhdGZvcm1XaGVlbEV2ZW50KEhXTkQsIFdQ
QVJBTSwgTFBBUkFNLCBib29sIGlzTW91c2VIV2hlZWwpOwotICAgICAgICBQbGF0Zm9ybVdoZWVs
RXZlbnQoSFdORCwgZmxvYXQgZGVsdGFYLCBmbG9hdCBkZWx0YVksIGZsb2F0IHhMb2MsIGZsb2F0
IHlMb2MpOworICAgICAgICBQbGF0Zm9ybVdoZWVsRXZlbnQoSFdORCwgY29uc3QgRmxvYXRTaXpl
JiBkZWx0YSwgY29uc3QgRmxvYXRQb2ludCYgbG9jYXRpb24pOwogI2VuZGlmCiAKICNpZiBQTEFU
Rk9STShXWCkKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vd2luL1doZWVsRXZlbnRXaW4uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vd2luL1doZWVsRXZlbnRXaW4uY3BwCShyZXZp
c2lvbiA0NDg4MykKKysrIFdlYkNvcmUvcGxhdGZvcm0vd2luL1doZWVsRXZlbnRXaW4uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yMyw2ICsyMyw4IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCisj
aW5jbHVkZSAiRmxvYXRQb2ludC5oIgorI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgogI2luY2x1ZGUg
IlBsYXRmb3JtV2hlZWxFdmVudC5oIgogCiAjaW5jbHVkZSA8d2luZG93cy5oPgpAQCAtNjIsMjEg
KzY0LDIxIEBAIHN0YXRpYyBpbnQgdmVydGljYWxTY3JvbGxMaW5lcygpCiAgICAgcmV0dXJuIHNj
cm9sbExpbmVzOwogfQogCi1QbGF0Zm9ybVdoZWVsRXZlbnQ6OlBsYXRmb3JtV2hlZWxFdmVudChI
V05EIGhXbmQsIGZsb2F0IGRlbHRhWCwgZmxvYXQgZGVsdGFZLCBmbG9hdCB4TG9jLCBmbG9hdCB5
TG9jKQorUGxhdGZvcm1XaGVlbEV2ZW50OjpQbGF0Zm9ybVdoZWVsRXZlbnQoSFdORCBoV25kLCBj
b25zdCBGbG9hdFNpemUmIGRlbHRhLCBjb25zdCBGbG9hdFBvaW50JiBsb2NhdGlvbikKICAgICA6
IG1faXNBY2NlcHRlZChmYWxzZSkKICAgICAsIG1fc2hpZnRLZXkoZmFsc2UpCiAgICAgLCBtX2N0
cmxLZXkoZmFsc2UpCiAgICAgLCBtX2FsdEtleShmYWxzZSkKICAgICAsIG1fbWV0YUtleShmYWxz
ZSkKIHsKLSAgICBtX2RlbHRhWCA9IGRlbHRhWDsKLSAgICBtX2RlbHRhWSA9IGRlbHRhWTsKKyAg
ICBtX2RlbHRhWCA9IGRlbHRhLndpZHRoKCk7CisgICAgbV9kZWx0YVkgPSBkZWx0YS5oZWlnaHQo
KTsKIAogICAgIG1fd2hlZWxUaWNrc1ggPSBtX2RlbHRhWDsKICAgICBtX3doZWVsVGlja3NZID0g
bV9kZWx0YVk7CiAKICAgICAvLyBHbG9iYWwgUG9zaXRpb24gaXMganVzdCB4LCB5IGxvY2F0aW9u
IG9mIGV2ZW50Ci0gICAgUE9JTlQgcG9pbnQgPSB7eExvYywgeUxvY307CisgICAgUE9JTlQgcG9p
bnQgPSB7bG9jYXRpb24ueCgpLCBsb2NhdGlvbi55KCl9OwogICAgIG1fZ2xvYmFsUG9zaXRpb24g
PSBwb2ludDsKIAogICAgIC8vIFBvc2l0aW9uIG5lZWRzIHRvIGJlIHRyYW5zbGF0ZWQgdG8gb3Vy
IGNsaWVudApJbmRleDogV2ViS2l0L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
L3dpbi9DaGFuZ2VMb2cJKHJldmlzaW9uIDQ1MTg0KQorKysgV2ViS2l0L3dpbi9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAwOS0wNi0yNSAgQnJpYW4gV2VpbnN0
ZWluICA8YndlaW5zdGVpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisgICAgICAgIAorICAgICAgICBUaGlzIGNoYW5nZXMgdGhlIGJlaGF2aW9yIG9m
IHRoZSBnZXN0dXJlTm90aWZ5IGV2ZW50IHRvIGNoZWNrCisgICAgICAgIHdoZXRoZXIgd2UgYXJl
IG92ZXIgYW55IHNjcm9sbGJhciBpbiB0aGUgcGFnZSwgYW5kIGlmIHdlIGFyZSwgd2UKKyAgICAg
ICAgd2FudCB0byBkaXNhYmxlIHRoZSBzaW5nbGUgZmluZ2VyIHBhbm5pbmcgZ2VzdHVyZSB0byBh
bGxvdyB1c2VycyB0bworICAgICAgICBjbGljayBhbmQgZHJhZyBzY3JvbGxiYXJzIGxpa2UgdGhl
eSBhcmUgdXNlZCB0by4KKworICAgICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAoV2ViVmll
dzo6Z2VzdHVyZU5vdGlmeSk6CisgICAgICAgIChXZWJWaWV3OjpnZXN0dXJlKToKKwogMjAwOS0w
Ni0yMyAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYlZpZXcuY3BwCShyZXZpc2lvbiA0NDg4MykKKysrIFdl
YktpdC93aW4vV2ViVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc5LDYgKzc5LDcgQEAKICNp
bmNsdWRlIDxXZWJDb3JlL0dESU9iamVjdENvdW50ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0dy
YXBoaWNzQ29udGV4dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSGlzdG9yeUl0ZW0uaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL0hpdFRlc3RSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IaXRUZXN0
UmVzdWx0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9LZXlib2FyZEV2ZW50Lmg+CkBAIC05NSw2ICs5Niw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Q
bHVnaW5WaWV3Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Qcm9ncmVzc1RyYWNrZXIuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1JlbmRlclRoZW1lLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJWaWV3
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUhhbmRsZS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvUmVzb3VyY2VIYW5kbGVDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NjcmlwdFZhbHVl
Lmg+CkBAIC0xMzQ4LDEzICsxMzUwLDE1IEBAIGJvb2wgV2ViVmlldzo6Z2VzdHVyZU5vdGlmeShX
UEFSQU0gd1BhcmEKICAgICBBU1NFUlQoU2V0R2VzdHVyZUNvbmZpZ1B0cigpKTsKIAogICAgIERX
T1JEIGR3UGFuV2FudDsKLSAgICBEV09SRCBkd1BhbkJsb2NrOyAKKyAgICBEV09SRCBkd1BhbkJs
b2NrOwogCiAgICAgLy8gVHJhbnNsYXRlIGdlc3R1cmUgbG9jYXRpb24gdG8gY2xpZW50IHRvIGhp
dCB0ZXN0IG9uIHNjcm9sbGJhcnMKICAgICBQT0lOVCBnZXN0dXJlQmVnaW5Qb2ludCA9IHtnbi0+
cHRzTG9jYXRpb24ueCwgZ24tPnB0c0xvY2F0aW9uLnl9OwogICAgIFNjcmVlblRvQ2xpZW50KG1f
dmlld1dpbmRvdywgJmdlc3R1cmVCZWdpblBvaW50KTsKIAotICAgIGlmIChnZXN0dXJlQmVnaW5Q
b2ludC54ID4gdmlldy0+dmlzaWJsZVdpZHRoKCkpIHsKKyAgICBIaXRUZXN0UmVzdWx0IHNjcm9s
bGJhclRlc3QgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJl
c3VsdEF0UG9pbnQoZ2VzdHVyZUJlZ2luUG9pbnQsIHRydWUsIGZhbHNlLCB0cnVlKTsKKworICAg
IGlmIChnZXN0dXJlQmVnaW5Qb2ludC54ID4gdmlldy0+dmlzaWJsZVdpZHRoKCkgfHwgc2Nyb2xs
YmFyVGVzdC5zY3JvbGxiYXIoKSkgewogICAgICAgICAvLyBXZSBhcmUgaW4gdGhlIHNjcm9sbGJh
ciwgdHVybiBvZmYgcGFubmluZywgbmVlZCB0byBiZSBhYmxlIHRvIGRyYWcgdGhlIHNjcm9sbGJh
cgogICAgICAgICBkd1BhbldhbnQgPSBHQ19QQU4gIHwgR0NfUEFOX1dJVEhfSU5FUlRJQSB8IEdD
X1BBTl9XSVRIX0dVVFRFUjsKICAgICAgICAgZHdQYW5CbG9jayA9IEdDX1BBTl9XSVRIX1NJTkdM
RV9GSU5HRVJfSE9SSVpPTlRBTExZIHwgR0NfUEFOX1dJVEhfU0lOR0xFX0ZJTkdFUl9WRVJUSUNB
TExZOwpAQCAtMTM4OSwyNCArMTM5Myw2IEBAIGJvb2wgV2ViVmlldzo6Z2VzdHVyZShXUEFSQU0g
d1BhcmFtLCBMUEEKICAgICAgICAgQ2xvc2VHZXN0dXJlSW5mb0hhbmRsZVB0cigpKGdlc3R1cmVI
YW5kbGUpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEdJRF9QQU46IHsKLSAgICAgICAgRnJh
bWUqIGNvcmVGcmFtZSA9IGNvcmUobV9tYWluRnJhbWUpOwotICAgICAgICBpZiAoIWNvcmVGcmFt
ZSkgewotICAgICAgICAgICAgQ2xvc2VHZXN0dXJlSW5mb0hhbmRsZVB0cigpKGdlc3R1cmVIYW5k
bGUpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0KLSAgICAgICAgU2Ny
b2xsVmlldyogdmlldyA9IGNvcmVGcmFtZS0+dmlldygpOwotICAgICAgICBpZiAoIXZpZXcpIHsK
LSAgICAgICAgICAgIENsb3NlR2VzdHVyZUluZm9IYW5kbGVQdHIoKShnZXN0dXJlSGFuZGxlKTsK
LSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotCi0gICAgICAgIFNjcm9sbGJh
ciogdmVydFNjcm9sbGJhciA9IHZpZXctPnZlcnRpY2FsU2Nyb2xsYmFyKCk7Ci0gICAgICAgIGlm
ICghdmVydFNjcm9sbGJhcikgewotICAgICAgICAgICAgQ2xvc2VHZXN0dXJlSW5mb0hhbmRsZVB0
cigpKGdlc3R1cmVIYW5kbGUpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7ICAgIC8vTm8gcGFu
bmluZyBvZiBhbnkga2luZCB3aGVuIG5vIHZlcnRpY2FsIHNjcm9sbGJhciwgbWF0Y2hlcyBJRTgK
LSAgICAgICAgfQotCiAgICAgICAgIC8vIFdoZXJlIGFyZSB0aGUgZmluZ2VycyBjdXJyZW50bHk/
CiAgICAgICAgIGxvbmcgY3VycmVudFggPSBnaS5wdHNMb2NhdGlvbi54OwogICAgICAgICBsb25n
IGN1cnJlbnRZID0gZ2kucHRzTG9jYXRpb24ueTsKQEAgLTE0MTQsNyArMTQwMCw3IEBAIGJvb2wg
V2ViVmlldzo6Z2VzdHVyZShXUEFSQU0gd1BhcmFtLCBMUEEKICAgICAgICAgLy8gSG93IGZhciBk
aWQgd2UgcGFuIGluIGVhY2ggZGlyZWN0aW9uPwogICAgICAgICBsb25nIGRlbHRhWCA9IGN1cnJl
bnRYIC0gbV9sYXN0UGFuWDsKICAgICAgICAgbG9uZyBkZWx0YVkgPSBjdXJyZW50WSAtIG1fbGFz
dFBhblk7Ci0gICAgICAgIAorCiAgICAgICAgIC8vIENhbGN1bGF0ZSB0aGUgb3ZlcnBhbiBmb3Ig
d2luZG93IGJvdW5jZQogICAgICAgICBtX3lPdmVycGFuIC09IG1fbGFzdFBhblkgLSBjdXJyZW50
WTsKICAgICAgICAgbV94T3ZlcnBhbiAtPSBtX2xhc3RQYW5YIC0gY3VycmVudFg7CkBAIC0xNDIz
LDggKzE0MDksMTMgQEAgYm9vbCBXZWJWaWV3OjpnZXN0dXJlKFdQQVJBTSB3UGFyYW0sIExQQQog
ICAgICAgICBtX2xhc3RQYW5YID0gY3VycmVudFg7CiAgICAgICAgIG1fbGFzdFBhblkgPSBjdXJy
ZW50WTsKIAorICAgICAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShtX21haW5GcmFtZSk7Cisg
ICAgICAgIGlmICghY29yZUZyYW1lKSB7CisgICAgICAgICAgICBDbG9zZUdlc3R1cmVJbmZvSGFu
ZGxlUHRyKCkoZ2VzdHVyZUhhbmRsZSk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIH0KICAgICAgICAgLy8gUmVwcmVzZW50IHRoZSBwYW4gZ2VzdHVyZSBhcyBhIG1vdXNlIHdo
ZWVsIGV2ZW50Ci0gICAgICAgIFBsYXRmb3JtV2hlZWxFdmVudCB3aGVlbEV2ZW50KG1fdmlld1dp
bmRvdywgZGVsdGFYLCBkZWx0YVksIGN1cnJlbnRYLCBjdXJyZW50WSk7CisgICAgICAgIFBsYXRm
b3JtV2hlZWxFdmVudCB3aGVlbEV2ZW50KG1fdmlld1dpbmRvdywgRmxvYXRTaXplKGRlbHRhWCwg
ZGVsdGFZKSwgRmxvYXRQb2ludChjdXJyZW50WCwgY3VycmVudFkpKTsKICAgICAgICAgY29yZUZy
YW1lLT5ldmVudEhhbmRsZXIoKS0+aGFuZGxlV2hlZWxFdmVudCh3aGVlbEV2ZW50KTsKIAogICAg
ICAgICBpZiAoIShVcGRhdGVQYW5uaW5nRmVlZGJhY2tQdHIoKSAmJiBCZWdpblBhbm5pbmdGZWVk
YmFja1B0cigpICYmIEVuZFBhbm5pbmdGZWVkYmFja1B0cigpKSkgewpAQCAtMTQzMiwxMiArMTQy
Myw2IEBAIGJvb2wgV2ViVmlldzo6Z2VzdHVyZShXUEFSQU0gd1BhcmFtLCBMUEEKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKLSAgICAgICAgLy8gRklYTUU6IFN1cHBvcnQg
SG9yaXpvbnRhbCBXaW5kb3cgQm91bmNlCi0gICAgICAgIGlmICh2ZXJ0U2Nyb2xsYmFyLT5jdXJy
ZW50UG9zKCkgPT0gMCkKLSAgICAgICAgICAgIFVwZGF0ZVBhbm5pbmdGZWVkYmFja1B0cigpKG1f
dmlld1dpbmRvdywgMCwgbV95T3ZlcnBhbiwgZ2kuZHdGbGFncyAmIEdGX0lORVJUSUEpOwotICAg
ICAgICBlbHNlIGlmICh2ZXJ0U2Nyb2xsYmFyLT5jdXJyZW50UG9zKCkgPj0gdmVydFNjcm9sbGJh
ci0+bWF4aW11bSgpKQotICAgICAgICAgICAgVXBkYXRlUGFubmluZ0ZlZWRiYWNrUHRyKCkobV92
aWV3V2luZG93LCAwLCBtX3lPdmVycGFuLCBnaS5kd0ZsYWdzICYgR0ZfSU5FUlRJQSk7Ci0gICAg
ICAgIAogICAgICAgICBpZiAoZ2kuZHdGbGFncyAmIEdGX0JFR0lOKSB7CiAgICAgICAgICAgICBC
ZWdpblBhbm5pbmdGZWVkYmFja1B0cigpKG1fdmlld1dpbmRvdyk7CiAgICAgICAgICAgICBtX3lP
dmVycGFuID0gMDsKQEAgLTE0NDYsNiArMTQzMSwyMyBAQCBib29sIFdlYlZpZXc6Omdlc3R1cmUo
V1BBUkFNIHdQYXJhbSwgTFBBCiAgICAgICAgICAgICBtX3lPdmVycGFuID0gMDsKICAgICAgICAg
fQogCisgICAgICAgIFNjcm9sbFZpZXcqIHZpZXcgPSBjb3JlRnJhbWUtPnZpZXcoKTsKKyAgICAg
ICAgaWYgKCF2aWV3KSB7CisgICAgICAgICAgICBDbG9zZUdlc3R1cmVJbmZvSGFuZGxlUHRyKCko
Z2VzdHVyZUhhbmRsZSk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAg
ICAgICAgU2Nyb2xsYmFyKiB2ZXJ0U2Nyb2xsYmFyID0gdmlldy0+dmVydGljYWxTY3JvbGxiYXIo
KTsKKyAgICAgICAgaWYgKCF2ZXJ0U2Nyb2xsYmFyKSB7CisgICAgICAgICAgICBDbG9zZUdlc3R1
cmVJbmZvSGFuZGxlUHRyKCkoZ2VzdHVyZUhhbmRsZSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEZJWE1FOiBTdXBwb3J0IEhvcml6b250YWwgV2lu
ZG93IEJvdW5jZSBhbmQgd2luZG93IGJvdW5jZSBvbiBmcmFtZXMgKyBkaXZzIHcvIG92ZXJmbG93
ICh0byBtYXRjaCBJRSkKKyAgICAgICAgaWYgKHZlcnRTY3JvbGxiYXItPmN1cnJlbnRQb3MoKSA9
PSAwKQorICAgICAgICAgICAgVXBkYXRlUGFubmluZ0ZlZWRiYWNrUHRyKCkobV92aWV3V2luZG93
LCAwLCBtX3lPdmVycGFuLCBnaS5kd0ZsYWdzICYgR0ZfSU5FUlRJQSk7CisgICAgICAgIGVsc2Ug
aWYgKHZlcnRTY3JvbGxiYXItPmN1cnJlbnRQb3MoKSA+PSB2ZXJ0U2Nyb2xsYmFyLT5tYXhpbXVt
KCkpCisgICAgICAgICAgICBVcGRhdGVQYW5uaW5nRmVlZGJhY2tQdHIoKShtX3ZpZXdXaW5kb3cs
IDAsIG1feU92ZXJwYW4sIGdpLmR3RmxhZ3MgJiBHRl9JTkVSVElBKTsKKwogICAgICAgICBDbG9z
ZUdlc3R1cmVJbmZvSGFuZGxlUHRyKCkoZ2VzdHVyZUhhbmRsZSk7CiAgICAgICAgIGJyZWFrOwog
ICAgIH0K
</data>
<flag name="review"
          id="16434"
          type_id="1"
          status="-"
          setter="aroben"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31957</attachid>
            <date>2009-06-26 15:38:19 -0700</date>
            <delta_ts>2009-06-29 10:46:06 -0700</delta_ts>
            <desc>Take 2 Panning Patch</desc>
            <filename>PanningBasePatch.patch</filename>
            <type>text/plain</type>
            <size>16584</size>
            <attacher name="Brian Weinstein">bweinstein</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NTI4MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjkgQEAKKzIwMDktMDYtMjYgIEJyaWFuIFdlaW5zdGVpbiAgPGJ3ZWluc3RlaW5A
YXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjY5NQorICAgICAg
ICAKKyAgICAgICAgQWRkZWQgdGhlIGFiaWxpdHkgdG8gZG8gc2Nyb2xsYmFyIGhpdCB0ZXN0aW5n
IGluIEV2ZW50SGFuZGxlciwgY2hhbmdlZCB0aGUKKyAgICAgICAgc2lnbmF0dXJlIG9mIGEgUGxh
dGZvcm1XaGVlbEV2ZW50IGNvbnN0cnVjdG9yLCBhbmQgY2hhbmdlZCBzY3JvbGxiYXJVbmRlck1v
dXNlCisgICAgICAgIHRvIHNjcm9sbGJhclVuZGVyUG9pbnQsIGFuZCB1cGRhdGVkIGFsbCBjYWxs
cyB0byB0aGF0IGZ1bmN0aW9uLiAgICAgICAgCisKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhpdFRlc3RSZXN1bHRBdFBv
aW50KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VNb3ZlRXZl
bnQpOgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmg6CisgICAgICAgIChXZWJDb3JlOjop
OgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oOgorICAgICAgICAqIHBs
YXRmb3JtL1Njcm9sbFZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6c2Ny
b2xsYmFyVW5kZXJQb2ludCk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsVmlldy5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1BvcHVwTWVudUNocm9taXVtLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlBvcHVwTGlzdEJveDo6aGFuZGxlTW91c2VEb3duRXZlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6UG9wdXBMaXN0Qm94OjpoYW5kbGVNb3VzZU1vdmVFdmVudCk6CisgICAgICAgICog
cGxhdGZvcm0vd2luL1doZWVsRXZlbnRXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1XaGVlbEV2ZW50OjpQbGF0Zm9ybVdoZWVsRXZlbnQpOgorCiAyMDA5LTA2LTI2ICBKZXNzaWUg
QmVybGluICA8amJlcmxpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFyayBS
b3dlLgpJbmRleDogV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAJKHJldmlzaW9uIDQ0ODgzKQorKysgV2ViQ29y
ZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTczNSw3ICs3MzUsNyBA
QCB2b2lkIEV2ZW50SGFuZGxlcjo6YWxsb3dESFRNTERyYWcoYm9vbCYgCiAgICAgZmxhZ1VBID0g
KChtYXNrICYgRHJhZ1NvdXJjZUFjdGlvbkltYWdlKSB8fCAobWFzayAmIERyYWdTb3VyY2VBY3Rp
b25MaW5rKSB8fCAobWFzayAmIERyYWdTb3VyY2VBY3Rpb25TZWxlY3Rpb24pKTsKIH0KICAgICAK
LUhpdFRlc3RSZXN1bHQgRXZlbnRIYW5kbGVyOjpoaXRUZXN0UmVzdWx0QXRQb2ludChjb25zdCBJ
bnRQb2ludCYgcG9pbnQsIGJvb2wgYWxsb3dTaGFkb3dDb250ZW50LCBib29sIGlnbm9yZUNsaXBw
aW5nKQorSGl0VGVzdFJlc3VsdCBFdmVudEhhbmRsZXI6OmhpdFRlc3RSZXN1bHRBdFBvaW50KGNv
bnN0IEludFBvaW50JiBwb2ludCwgYm9vbCBhbGxvd1NoYWRvd0NvbnRlbnQsIGJvb2wgaWdub3Jl
Q2xpcHBpbmcsIEhpdFRlc3RTY3JvbGxiYXJzIHRlc3RTY3JvbGxiYXJzKQogewogICAgIEhpdFRl
c3RSZXN1bHQgcmVzdWx0KHBvaW50KTsKICAgICBpZiAoIW1fZnJhbWUtPmNvbnRlbnRSZW5kZXJl
cigpKQpAQCAtNzYyLDYgKzc2MiwxMiBAQCBIaXRUZXN0UmVzdWx0IEV2ZW50SGFuZGxlcjo6aGl0
VGVzdFJlc3VsCiAgICAgICAgIEhpdFRlc3RSZXN1bHQgd2lkZ2V0SGl0VGVzdFJlc3VsdCh3aWRn
ZXRQb2ludCk7CiAgICAgICAgIGZyYW1lLT5jb250ZW50UmVuZGVyZXIoKS0+bGF5ZXIoKS0+aGl0
VGVzdChIaXRUZXN0UmVxdWVzdChoaXRUeXBlKSwgd2lkZ2V0SGl0VGVzdFJlc3VsdCk7CiAgICAg
ICAgIHJlc3VsdCA9IHdpZGdldEhpdFRlc3RSZXN1bHQ7CisKKyAgICAgICAgaWYgKHRlc3RTY3Jv
bGxiYXJzID09IFNob3VsZEhpdFRlc3RTY3JvbGxiYXJzKSB7CisgICAgICAgICAgICBTY3JvbGxi
YXIqIGV2ZW50U2Nyb2xsYmFyID0gdmlldy0+c2Nyb2xsYmFyVW5kZXJQb2ludChwb2ludCk7Cisg
ICAgICAgICAgICBpZiAoZXZlbnRTY3JvbGxiYXIpCisgICAgICAgICAgICAgICAgcmVzdWx0LnNl
dFNjcm9sbGJhcihldmVudFNjcm9sbGJhcik7CisgICAgICAgIH0KICAgICB9CiAgICAgCiAgICAg
Ly8gSWYgb3VyIEhpdFRlc3RSZXN1bHQgaXMgbm90IHZpc2libGUsIHRoZW4gd2Ugc3RhcnRlZCBo
aXQgdGVzdGluZyB0b28gZmFyIGRvd24gdGhlIGZyYW1lIGNoYWluLiAKQEAgLTExODIsNyArMTE4
OCw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVByZXNzRXZlbnQKICAgICAgICAg
fQogCiAgICAgICAgIEZyYW1lVmlldyogdmlldyA9IG1fZnJhbWUtPnZpZXcoKTsKLSAgICAgICAg
U2Nyb2xsYmFyKiBzY3JvbGxiYXIgPSB2aWV3ID8gdmlldy0+c2Nyb2xsYmFyVW5kZXJNb3VzZSht
b3VzZUV2ZW50KSA6IDA7CisgICAgICAgIFNjcm9sbGJhciogc2Nyb2xsYmFyID0gdmlldyA/IHZp
ZXctPnNjcm9sbGJhclVuZGVyUG9pbnQobW91c2VFdmVudC5wb3MoKSkgOiAwOwogICAgICAgICBp
ZiAoIXNjcm9sbGJhcikKICAgICAgICAgICAgIHNjcm9sbGJhciA9IG1ldi5zY3JvbGxiYXIoKTsK
ICAgICAgICAgaWYgKHNjcm9sbGJhciAmJiBwYXNzTW91c2VQcmVzc0V2ZW50VG9TY3JvbGxiYXIo
bWV2LCBzY3JvbGxiYXIpKQpAQCAtMTI5Niw3ICsxMzAyLDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6
OmhhbmRsZU1vdXNlTW92ZUV2ZW50KAogICAgICAgICBtX3Jlc2l6ZUxheWVyLT5yZXNpemUobW91
c2VFdmVudCwgbV9vZmZzZXRGcm9tUmVzaXplQ29ybmVyKTsKICAgICBlbHNlIHsKICAgICAgICAg
aWYgKEZyYW1lVmlldyogdmlldyA9IG1fZnJhbWUtPnZpZXcoKSkKLSAgICAgICAgICAgIHNjcm9s
bGJhciA9IHZpZXctPnNjcm9sbGJhclVuZGVyTW91c2UobW91c2VFdmVudCk7CisgICAgICAgICAg
ICBzY3JvbGxiYXIgPSB2aWV3LT5zY3JvbGxiYXJVbmRlclBvaW50KG1vdXNlRXZlbnQucG9zKCkp
OwogCiAgICAgICAgIGlmICghc2Nyb2xsYmFyKQogICAgICAgICAgICAgc2Nyb2xsYmFyID0gbWV2
LnNjcm9sbGJhcigpOwpJbmRleDogV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAkocmV2aXNpb24gNDQ4ODMpCisrKyBX
ZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTY3LDYgKzY3LDgg
QEAgZXh0ZXJuIGNvbnN0IGludCBJbWFnZURyYWdIeXN0ZXJlc2lzOwogZXh0ZXJuIGNvbnN0IGlu
dCBUZXh0RHJhZ0h5c3RlcmVzaXM7CiBleHRlcm4gY29uc3QgaW50IEdlbmVyYWxEcmFnSHlzdGVy
ZXNpczsKIAorZW51bSBIaXRUZXN0U2Nyb2xsYmFycyB7IFNob3VsZEhpdFRlc3RTY3JvbGxiYXJz
LCBEb250SGl0VGVzdFNjcm9sbGJhcnMgfTsKKwogY2xhc3MgRXZlbnRIYW5kbGVyIDogTm9uY29w
eWFibGUgewogcHVibGljOgogICAgIEV2ZW50SGFuZGxlcihGcmFtZSopOwpAQCAtODYsNyArODgs
NyBAQCBwdWJsaWM6CiAgICAgUmVuZGVyT2JqZWN0KiBhdXRvc2Nyb2xsUmVuZGVyZXIoKSBjb25z
dDsKICAgICB2b2lkIHVwZGF0ZUF1dG9zY3JvbGxSZW5kZXJlcigpOwogCi0gICAgSGl0VGVzdFJl
c3VsdCBoaXRUZXN0UmVzdWx0QXRQb2ludChjb25zdCBJbnRQb2ludCYsIGJvb2wgYWxsb3dTaGFk
b3dDb250ZW50LCBib29sIGlnbm9yZUNsaXBwaW5nID0gZmFsc2UpOworICAgIEhpdFRlc3RSZXN1
bHQgaGl0VGVzdFJlc3VsdEF0UG9pbnQoY29uc3QgSW50UG9pbnQmLCBib29sIGFsbG93U2hhZG93
Q29udGVudCwgYm9vbCBpZ25vcmVDbGlwcGluZyA9IGZhbHNlLCBIaXRUZXN0U2Nyb2xsYmFycyBz
Y3JvbGxiYXJzID0gRG9udEhpdFRlc3RTY3JvbGxiYXJzKTsKIAogICAgIGJvb2wgbW91c2VQcmVz
c2VkKCkgY29uc3QgeyByZXR1cm4gbV9tb3VzZVByZXNzZWQ7IH0KICAgICB2b2lkIHNldE1vdXNl
UHJlc3NlZChib29sIHByZXNzZWQpIHsgbV9tb3VzZVByZXNzZWQgPSBwcmVzc2VkOyB9CkluZGV4
OiBXZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1XaGVlbEV2ZW50LmgJKHJldmlzaW9uIDQ0ODgzKQorKysg
V2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
NTEsNiArNTEsOSBAQCBjbGFzcyB3eFBvaW50OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKyAg
ICBjbGFzcyBGbG9hdFBvaW50OworICAgIGNsYXNzIEZsb2F0U2l6ZTsKKwogICAgIC8vIFdoZWVs
IGV2ZW50cyBjb21lIGluIHR3byBmbGF2b3JzOgogICAgIC8vIFRoZSBTY3JvbGxCeVBpeGVsV2hl
ZWxFdmVudCBpcyBhIGZpbmUtZ3JhaW5lZCBldmVudCB0aGF0IHNwZWNpZmllcyB0aGUgcHJlY2lz
ZSBudW1iZXIgb2YgcGl4ZWxzIHRvIHNjcm9sbC4gIEl0IGlzIHNlbnQgZGlyZWN0bHkgYnkgTWFj
Qm9vayB0b3VjaHBhZHMgb24gT1MgWCwKICAgICAvLyBhbmQgc3ludGhlc2l6ZWQgaW4gb3RoZXIg
Y2FzZXMgd2hlcmUgcGxhdGZvcm1zIGdlbmVyYXRlIGxpbmUtYnktbGluZSBzY3JvbGxpbmcgZXZl
bnRzLgpAQCAtOTksNyArMTAyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgUExBVEZP
Uk0oV0lOKQogICAgICAgICBQbGF0Zm9ybVdoZWVsRXZlbnQoSFdORCwgV1BBUkFNLCBMUEFSQU0s
IGJvb2wgaXNNb3VzZUhXaGVlbCk7Ci0gICAgICAgIFBsYXRmb3JtV2hlZWxFdmVudChIV05ELCBm
bG9hdCBkZWx0YVgsIGZsb2F0IGRlbHRhWSwgZmxvYXQgeExvYywgZmxvYXQgeUxvYyk7CisgICAg
ICAgIFBsYXRmb3JtV2hlZWxFdmVudChIV05ELCBjb25zdCBGbG9hdFNpemUmIGRlbHRhLCBjb25z
dCBGbG9hdFBvaW50JiBsb2NhdGlvbik7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKFdYKQpJbmRl
eDogV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCShyZXZpc2lvbiA0NDg4MykKKysrIFdlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzMywxMiArNjMzLDEyIEBA
IHZvaWQgU2Nyb2xsVmlldzo6c2V0U2Nyb2xsYmFyc1N1cHByZXNzZWQKICAgICB9CiB9CiAKLVNj
cm9sbGJhciogU2Nyb2xsVmlldzo6c2Nyb2xsYmFyVW5kZXJNb3VzZShjb25zdCBQbGF0Zm9ybU1v
dXNlRXZlbnQmIG1vdXNlRXZlbnQpCitTY3JvbGxiYXIqIFNjcm9sbFZpZXc6OnNjcm9sbGJhclVu
ZGVyUG9pbnQoY29uc3QgSW50UG9pbnQmIHBvaW50KQogewogICAgIGlmIChwbGF0Zm9ybVdpZGdl
dCgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIEludFBvaW50IHZpZXdQb2ludCA9IGNvbnZl
cnRGcm9tQ29udGFpbmluZ1dpbmRvdyhtb3VzZUV2ZW50LnBvcygpKTsKKyAgICBJbnRQb2ludCB2
aWV3UG9pbnQgPSBjb252ZXJ0RnJvbUNvbnRhaW5pbmdXaW5kb3cocG9pbnQpOwogICAgIGlmICht
X2hvcml6b250YWxTY3JvbGxiYXIgJiYgbV9ob3Jpem9udGFsU2Nyb2xsYmFyLT5mcmFtZVJlY3Qo
KS5jb250YWlucyh2aWV3UG9pbnQpKQogICAgICAgICByZXR1cm4gbV9ob3Jpem9udGFsU2Nyb2xs
YmFyLmdldCgpOwogICAgIGlmIChtX3ZlcnRpY2FsU2Nyb2xsYmFyICYmIG1fdmVydGljYWxTY3Jv
bGxiYXItPmZyYW1lUmVjdCgpLmNvbnRhaW5zKHZpZXdQb2ludCkpCkluZGV4OiBXZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbFZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bFZpZXcuaAkocmV2aXNpb24gNDQ4ODMpCisrKyBXZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcu
aAkod29ya2luZyBjb3B5KQpAQCAtMTgxLDcgKzE4MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgc2V0RnJhbWVSZWN0KGNvbnN0IEludFJlY3QmKTsKIAogICAgIC8vIEZvciBwbGF0Zm9y
bXMgdGhhdCBuZWVkIHRvIGhpdCB0ZXN0IHNjcm9sbGJhcnMgZnJvbSB3aXRoaW4gdGhlIGVuZ2lu
ZSdzIGV2ZW50IGhhbmRsZXJzIChsaWtlIFdpbjMyKS4KLSAgICBTY3JvbGxiYXIqIHNjcm9sbGJh
clVuZGVyTW91c2UoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBtb3VzZUV2ZW50KTsKKyAgICBT
Y3JvbGxiYXIqIHNjcm9sbGJhclVuZGVyUG9pbnQoY29uc3QgSW50UG9pbnQmIHBvaW50KTsKIAog
ICAgIC8vIFRoaXMgbWV0aG9kIGV4aXN0cyBmb3Igc2Nyb2xsdmlld3MgdGhhdCBuZWVkIHRvIGhh
bmRsZSB3aGVlbCBldmVudHMgbWFudWFsbHkuCiAgICAgLy8gT24gTWFjIHRoZSB1bmRlcmx5aW5n
IE5TU2Nyb2xsVmlldyBqdXN0IGRvZXMgdGhlIHNjcm9sbGluZywgYnV0IG9uIG90aGVyIHBsYXRm
b3JtcwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cE1lbnVDaHJvbWl1bS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cE1lbnVDaHJv
bWl1bS5jcHAJKHJldmlzaW9uIDQ0ODgzKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Q
b3B1cE1lbnVDaHJvbWl1bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxMiw3ICs1MTIsNyBAQCBj
b25zdCBXVEY6OlZlY3RvcjxQb3B1cEl0ZW0qPiYgUG9wdXBDb250CiAKIGJvb2wgUG9wdXBMaXN0
Qm94OjpoYW5kbGVNb3VzZURvd25FdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50
KQogewotICAgIFNjcm9sbGJhciogc2Nyb2xsYmFyID0gc2Nyb2xsYmFyVW5kZXJNb3VzZShldmVu
dCk7CisgICAgU2Nyb2xsYmFyKiBzY3JvbGxiYXIgPSBzY3JvbGxiYXJVbmRlclBvaW50KGV2ZW50
LnBvcygpKTsKICAgICBpZiAoc2Nyb2xsYmFyKSB7CiAgICAgICAgIG1fY2FwdHVyaW5nU2Nyb2xs
YmFyID0gc2Nyb2xsYmFyOwogICAgICAgICBtX2NhcHR1cmluZ1Njcm9sbGJhci0+bW91c2VEb3du
KGV2ZW50KTsKQEAgLTUzMiw3ICs1MzIsNyBAQCBib29sIFBvcHVwTGlzdEJveDo6aGFuZGxlTW91
c2VNb3ZlRXZlbnQoCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIFNjcm9sbGJh
ciogc2Nyb2xsYmFyID0gc2Nyb2xsYmFyVW5kZXJNb3VzZShldmVudCk7CisgICAgU2Nyb2xsYmFy
KiBzY3JvbGxiYXIgPSBzY3JvbGxiYXJVbmRlclBvaW50KGV2ZW50LnBvcygpKTsKICAgICBpZiAo
bV9sYXN0U2Nyb2xsYmFyVW5kZXJNb3VzZSAhPSBzY3JvbGxiYXIpIHsKICAgICAgICAgLy8gU2Vu
ZCBtb3VzZSBleGl0ZWQgdG8gdGhlIG9sZCBzY3JvbGxiYXIuCiAgICAgICAgIGlmIChtX2xhc3RT
Y3JvbGxiYXJVbmRlck1vdXNlKQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS93aW4vV2hlZWxFdmVu
dFdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS93aW4vV2hlZWxFdmVudFdp
bi5jcHAJKHJldmlzaW9uIDQ0ODgzKQorKysgV2ViQ29yZS9wbGF0Zm9ybS93aW4vV2hlZWxFdmVu
dFdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzLDggKzIzLDExIEBACiAgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKICAqLwogCisjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1XaGVlbEV2
ZW50LmgiCiAKKyNpbmNsdWRlICJGbG9hdFBvaW50LmgiCisjaW5jbHVkZSAiRmxvYXRTaXplLmgi
CiAjaW5jbHVkZSA8d2luZG93cy5oPgogI2luY2x1ZGUgPHdpbmRvd3N4Lmg+CiAKQEAgLTYyLDIx
ICs2NSwyMSBAQCBzdGF0aWMgaW50IHZlcnRpY2FsU2Nyb2xsTGluZXMoKQogICAgIHJldHVybiBz
Y3JvbGxMaW5lczsKIH0KIAotUGxhdGZvcm1XaGVlbEV2ZW50OjpQbGF0Zm9ybVdoZWVsRXZlbnQo
SFdORCBoV25kLCBmbG9hdCBkZWx0YVgsIGZsb2F0IGRlbHRhWSwgZmxvYXQgeExvYywgZmxvYXQg
eUxvYykKK1BsYXRmb3JtV2hlZWxFdmVudDo6UGxhdGZvcm1XaGVlbEV2ZW50KEhXTkQgaFduZCwg
Y29uc3QgRmxvYXRTaXplJiBkZWx0YSwgY29uc3QgRmxvYXRQb2ludCYgbG9jYXRpb24pCiAgICAg
OiBtX2lzQWNjZXB0ZWQoZmFsc2UpCiAgICAgLCBtX3NoaWZ0S2V5KGZhbHNlKQogICAgICwgbV9j
dHJsS2V5KGZhbHNlKQogICAgICwgbV9hbHRLZXkoZmFsc2UpCiAgICAgLCBtX21ldGFLZXkoZmFs
c2UpCiB7Ci0gICAgbV9kZWx0YVggPSBkZWx0YVg7Ci0gICAgbV9kZWx0YVkgPSBkZWx0YVk7Cisg
ICAgbV9kZWx0YVggPSBkZWx0YS53aWR0aCgpOworICAgIG1fZGVsdGFZID0gZGVsdGEuaGVpZ2h0
KCk7CiAKICAgICBtX3doZWVsVGlja3NYID0gbV9kZWx0YVg7CiAgICAgbV93aGVlbFRpY2tzWSA9
IG1fZGVsdGFZOwogCiAgICAgLy8gR2xvYmFsIFBvc2l0aW9uIGlzIGp1c3QgeCwgeSBsb2NhdGlv
biBvZiBldmVudAotICAgIFBPSU5UIHBvaW50ID0ge3hMb2MsIHlMb2N9OworICAgIFBPSU5UIHBv
aW50ID0ge2xvY2F0aW9uLngoKSwgbG9jYXRpb24ueSgpfTsKICAgICBtX2dsb2JhbFBvc2l0aW9u
ID0gcG9pbnQ7CiAKICAgICAvLyBQb3NpdGlvbiBuZWVkcyB0byBiZSB0cmFuc2xhdGVkIHRvIG91
ciBjbGllbnQKSW5kZXg6IFdlYktpdC9xdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
L3F0L0NoYW5nZUxvZwkocmV2aXNpb24gNDUyODEpCisrKyBXZWJLaXQvcXQvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMDktMDYtMjYgIEJyaWFuIFdlaW5zdGVp
biAgPGJ3ZWluc3RlaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorICAgICAgICAKKyAgICAgICAgQ2hhbmdlZCBjYWxsIG9mIHNjcm9sbGJhclVuZGVy
TW91c2UgdG8gc2Nyb2xsYmFyVW5kZXJQb2ludCB0byBtYXRjaCBuZXcgQVBJLgorCisgICAgICAg
ICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlOjpzd2FsbG93Q29udGV4dE1l
bnVFdmVudCk6CisKIDIwMDktMDYtMjYgIEplZHJ6ZWogTm93YWNraSAgPGplZHJ6ZWoubm93YWNr
aUBub2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCkluZGV4
OiBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvQXBp
L3F3ZWJwYWdlLmNwcAkocmV2aXNpb24gNDQ4ODMpCisrKyBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE5Nyw3ICsyMTk3LDcgQEAgYm9vbCBRV2ViUGFnZTo6
c3dhbGxvd0NvbnRleHRNZW51RXZlbnQoUQogCiAgICAgaWYgKFFXZWJGcmFtZSogd2ViRnJhbWUg
PSBkLT5mcmFtZUF0KGV2ZW50LT5wb3MoKSkpIHsKICAgICAgICAgRnJhbWUqIGZyYW1lID0gUVdl
YkZyYW1lUHJpdmF0ZTo6Y29yZSh3ZWJGcmFtZSk7Ci0gICAgICAgIGlmIChTY3JvbGxiYXIqIHNj
cm9sbGJhciA9IGZyYW1lLT52aWV3KCktPnNjcm9sbGJhclVuZGVyTW91c2UoUGxhdGZvcm1Nb3Vz
ZUV2ZW50KGV2ZW50LCAxKSkpIHsKKyAgICAgICAgaWYgKFNjcm9sbGJhciogc2Nyb2xsYmFyID0g
ZnJhbWUtPnZpZXcoKS0+c2Nyb2xsYmFyVW5kZXJNb3VzZShQbGF0Zm9ybU1vdXNlRXZlbnQoZXZl
bnQsIDEpLnBvcygpKSkgewogICAgICAgICAgICAgcmV0dXJuIHNjcm9sbGJhci0+Y29udGV4dE1l
bnUoUGxhdGZvcm1Nb3VzZUV2ZW50KGV2ZW50LCAxKSk7CiAgICAgICAgIH0KICAgICB9CkluZGV4
OiBXZWJLaXQvd2luL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL0NoYW5nZUxv
ZwkocmV2aXNpb24gNDUyODEpCisrKyBXZWJLaXQvd2luL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDE3IEBACisyMDA5LTA2LTI2ICBCcmlhbiBXZWluc3RlaW4gIDxid2VpbnN0
ZWluQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY2OTUKKwor
ICAgICAgICBBZGRlZCBoaXQgdGVzdGluZyBvbiBzY3JvbGxiYXJzLCBzbyBpZiB5b3Ugc3RhcnQg
YSBnZXN0dXJlIG92ZXIgYSBzY3JvbGxiYXIsCisgICAgICAgIGl0IGlzbid0IGNvdW50ZWQsIGFu
ZCBsZXRzIHRoZSB1c2VyIGRyYWcgdGhlIHNjcm9sbGJhciBpdHNlbGYgaW5zdGVhZCBvZiBhCisg
ICAgICAgIHBhbm5pbmcgZ2VzdHVyZS4gQWxzbyBjbGVhbmVkIHVwIGNvZGUgaW4gZ2VzdHVyZS4K
KworICAgICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAoV2ViVmlldzo6Z2VzdHVyZU5vdGlm
eSk6CisgICAgICAgIChXZWJWaWV3OjpnZXN0dXJlKToKKwogMjAwOS0wNi0yNiAgWW9uZ2p1biBa
aGFuZyAgPHlvbmdqdW4uemhhbmdAbm9raWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVy
aWMgU2VpZGVsLgpJbmRleDogV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQvd2luL1dlYlZpZXcuY3BwCShyZXZpc2lvbiA0NDg4MykKKysrIFdlYktpdC93aW4vV2Vi
Vmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc5LDYgKzc5LDcgQEAKICNpbmNsdWRlIDxXZWJD
b3JlL0dESU9iamVjdENvdW50ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4
dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSGlzdG9yeUl0ZW0uaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L0hpdFRlc3RSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IaXRUZXN0UmVzdWx0Lmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9LZXlib2FyZEV2
ZW50Lmg+CkBAIC05NSw2ICs5Niw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9QbHVnaW5WaWV3Lmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9Qcm9ncmVzc1RyYWNrZXIuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1JlbmRlclRoZW1lLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJWaWV3Lmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9SZXNvdXJjZUhhbmRsZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VI
YW5kbGVDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NjcmlwdFZhbHVlLmg+CkBAIC0xMzQ4
LDEzICsxMzUwLDE1IEBAIGJvb2wgV2ViVmlldzo6Z2VzdHVyZU5vdGlmeShXUEFSQU0gd1BhcmEK
ICAgICBBU1NFUlQoU2V0R2VzdHVyZUNvbmZpZ1B0cigpKTsKIAogICAgIERXT1JEIGR3UGFuV2Fu
dDsKLSAgICBEV09SRCBkd1BhbkJsb2NrOyAKKyAgICBEV09SRCBkd1BhbkJsb2NrOwogCiAgICAg
Ly8gVHJhbnNsYXRlIGdlc3R1cmUgbG9jYXRpb24gdG8gY2xpZW50IHRvIGhpdCB0ZXN0IG9uIHNj
cm9sbGJhcnMKICAgICBQT0lOVCBnZXN0dXJlQmVnaW5Qb2ludCA9IHtnbi0+cHRzTG9jYXRpb24u
eCwgZ24tPnB0c0xvY2F0aW9uLnl9OwotICAgIFNjcmVlblRvQ2xpZW50KG1fdmlld1dpbmRvdywg
Jmdlc3R1cmVCZWdpblBvaW50KTsKKyAgICBJbnRQb2ludCBldmVudEhhbmRsZXJQb2ludCA9IG1f
cGFnZS0+bWFpbkZyYW1lKCktPnZpZXcoKS0+c2NyZWVuVG9Db250ZW50cyhnZXN0dXJlQmVnaW5Q
b2ludCk7CiAKLSAgICBpZiAoZ2VzdHVyZUJlZ2luUG9pbnQueCA+IHZpZXctPnZpc2libGVXaWR0
aCgpKSB7CisgICAgSGl0VGVzdFJlc3VsdCBzY3JvbGxiYXJUZXN0ID0gbV9wYWdlLT5tYWluRnJh
bWUoKS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KGV2ZW50SGFuZGxlclBv
aW50LCB0cnVlLCBmYWxzZSwgU2hvdWxkSGl0VGVzdFNjcm9sbGJhcnMpOworCisgICAgaWYgKGV2
ZW50SGFuZGxlclBvaW50LngoKSA+IHZpZXctPnZpc2libGVXaWR0aCgpIHx8IHNjcm9sbGJhclRl
c3Quc2Nyb2xsYmFyKCkpIHsKICAgICAgICAgLy8gV2UgYXJlIGluIHRoZSBzY3JvbGxiYXIsIHR1
cm4gb2ZmIHBhbm5pbmcsIG5lZWQgdG8gYmUgYWJsZSB0byBkcmFnIHRoZSBzY3JvbGxiYXIKICAg
ICAgICAgZHdQYW5XYW50ID0gR0NfUEFOICB8IEdDX1BBTl9XSVRIX0lORVJUSUEgfCBHQ19QQU5f
V0lUSF9HVVRURVI7CiAgICAgICAgIGR3UGFuQmxvY2sgPSBHQ19QQU5fV0lUSF9TSU5HTEVfRklO
R0VSX0hPUklaT05UQUxMWSB8IEdDX1BBTl9XSVRIX1NJTkdMRV9GSU5HRVJfVkVSVElDQUxMWTsK
QEAgLTEzODksMjQgKzEzOTMsNiBAQCBib29sIFdlYlZpZXc6Omdlc3R1cmUoV1BBUkFNIHdQYXJh
bSwgTFBBCiAgICAgICAgIENsb3NlR2VzdHVyZUluZm9IYW5kbGVQdHIoKShnZXN0dXJlSGFuZGxl
KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBHSURfUEFOOiB7Ci0gICAgICAgIEZyYW1lKiBj
b3JlRnJhbWUgPSBjb3JlKG1fbWFpbkZyYW1lKTsKLSAgICAgICAgaWYgKCFjb3JlRnJhbWUpIHsK
LSAgICAgICAgICAgIENsb3NlR2VzdHVyZUluZm9IYW5kbGVQdHIoKShnZXN0dXJlSGFuZGxlKTsK
LSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotCi0gICAgICAgIFNjcm9sbFZp
ZXcqIHZpZXcgPSBjb3JlRnJhbWUtPnZpZXcoKTsKLSAgICAgICAgaWYgKCF2aWV3KSB7Ci0gICAg
ICAgICAgICBDbG9zZUdlc3R1cmVJbmZvSGFuZGxlUHRyKCkoZ2VzdHVyZUhhbmRsZSk7Ci0gICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLQotICAgICAgICBTY3JvbGxiYXIqIHZl
cnRTY3JvbGxiYXIgPSB2aWV3LT52ZXJ0aWNhbFNjcm9sbGJhcigpOwotICAgICAgICBpZiAoIXZl
cnRTY3JvbGxiYXIpIHsKLSAgICAgICAgICAgIENsb3NlR2VzdHVyZUluZm9IYW5kbGVQdHIoKShn
ZXN0dXJlSGFuZGxlKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOyAgICAvL05vIHBhbm5pbmcg
b2YgYW55IGtpbmQgd2hlbiBubyB2ZXJ0aWNhbCBzY3JvbGxiYXIsIG1hdGNoZXMgSUU4Ci0gICAg
ICAgIH0KLQogICAgICAgICAvLyBXaGVyZSBhcmUgdGhlIGZpbmdlcnMgY3VycmVudGx5PwogICAg
ICAgICBsb25nIGN1cnJlbnRYID0gZ2kucHRzTG9jYXRpb24ueDsKICAgICAgICAgbG9uZyBjdXJy
ZW50WSA9IGdpLnB0c0xvY2F0aW9uLnk7CkBAIC0xNDE0LDcgKzE0MDAsNyBAQCBib29sIFdlYlZp
ZXc6Omdlc3R1cmUoV1BBUkFNIHdQYXJhbSwgTFBBCiAgICAgICAgIC8vIEhvdyBmYXIgZGlkIHdl
IHBhbiBpbiBlYWNoIGRpcmVjdGlvbj8KICAgICAgICAgbG9uZyBkZWx0YVggPSBjdXJyZW50WCAt
IG1fbGFzdFBhblg7CiAgICAgICAgIGxvbmcgZGVsdGFZID0gY3VycmVudFkgLSBtX2xhc3RQYW5Z
OwotICAgICAgICAKKwogICAgICAgICAvLyBDYWxjdWxhdGUgdGhlIG92ZXJwYW4gZm9yIHdpbmRv
dyBib3VuY2UKICAgICAgICAgbV95T3ZlcnBhbiAtPSBtX2xhc3RQYW5ZIC0gY3VycmVudFk7CiAg
ICAgICAgIG1feE92ZXJwYW4gLT0gbV9sYXN0UGFuWCAtIGN1cnJlbnRYOwpAQCAtMTQyMyw4ICsx
NDA5LDEzIEBAIGJvb2wgV2ViVmlldzo6Z2VzdHVyZShXUEFSQU0gd1BhcmFtLCBMUEEKICAgICAg
ICAgbV9sYXN0UGFuWCA9IGN1cnJlbnRYOwogICAgICAgICBtX2xhc3RQYW5ZID0gY3VycmVudFk7
CiAKKyAgICAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUobV9tYWluRnJhbWUpOworICAgICAg
ICBpZiAoIWNvcmVGcmFtZSkgeworICAgICAgICAgICAgQ2xvc2VHZXN0dXJlSW5mb0hhbmRsZVB0
cigpKGdlc3R1cmVIYW5kbGUpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9
CiAgICAgICAgIC8vIFJlcHJlc2VudCB0aGUgcGFuIGdlc3R1cmUgYXMgYSBtb3VzZSB3aGVlbCBl
dmVudAotICAgICAgICBQbGF0Zm9ybVdoZWVsRXZlbnQgd2hlZWxFdmVudChtX3ZpZXdXaW5kb3cs
IGRlbHRhWCwgZGVsdGFZLCBjdXJyZW50WCwgY3VycmVudFkpOworICAgICAgICBQbGF0Zm9ybVdo
ZWVsRXZlbnQgd2hlZWxFdmVudChtX3ZpZXdXaW5kb3csIEZsb2F0U2l6ZShkZWx0YVgsIGRlbHRh
WSksIEZsb2F0UG9pbnQoY3VycmVudFgsIGN1cnJlbnRZKSk7CiAgICAgICAgIGNvcmVGcmFtZS0+
ZXZlbnRIYW5kbGVyKCktPmhhbmRsZVdoZWVsRXZlbnQod2hlZWxFdmVudCk7CiAKICAgICAgICAg
aWYgKCEoVXBkYXRlUGFubmluZ0ZlZWRiYWNrUHRyKCkgJiYgQmVnaW5QYW5uaW5nRmVlZGJhY2tQ
dHIoKSAmJiBFbmRQYW5uaW5nRmVlZGJhY2tQdHIoKSkpIHsKQEAgLTE0MzIsMTIgKzE0MjMsNiBA
QCBib29sIFdlYlZpZXc6Omdlc3R1cmUoV1BBUkFNIHdQYXJhbSwgTFBBCiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCi0gICAgICAgIC8vIEZJWE1FOiBTdXBwb3J0IEhvcml6
b250YWwgV2luZG93IEJvdW5jZQotICAgICAgICBpZiAodmVydFNjcm9sbGJhci0+Y3VycmVudFBv
cygpID09IDApCi0gICAgICAgICAgICBVcGRhdGVQYW5uaW5nRmVlZGJhY2tQdHIoKShtX3ZpZXdX
aW5kb3csIDAsIG1feU92ZXJwYW4sIGdpLmR3RmxhZ3MgJiBHRl9JTkVSVElBKTsKLSAgICAgICAg
ZWxzZSBpZiAodmVydFNjcm9sbGJhci0+Y3VycmVudFBvcygpID49IHZlcnRTY3JvbGxiYXItPm1h
eGltdW0oKSkKLSAgICAgICAgICAgIFVwZGF0ZVBhbm5pbmdGZWVkYmFja1B0cigpKG1fdmlld1dp
bmRvdywgMCwgbV95T3ZlcnBhbiwgZ2kuZHdGbGFncyAmIEdGX0lORVJUSUEpOwotICAgICAgICAK
ICAgICAgICAgaWYgKGdpLmR3RmxhZ3MgJiBHRl9CRUdJTikgewogICAgICAgICAgICAgQmVnaW5Q
YW5uaW5nRmVlZGJhY2tQdHIoKShtX3ZpZXdXaW5kb3cpOwogICAgICAgICAgICAgbV95T3ZlcnBh
biA9IDA7CkBAIC0xNDQ2LDYgKzE0MzEsMjMgQEAgYm9vbCBXZWJWaWV3OjpnZXN0dXJlKFdQQVJB
TSB3UGFyYW0sIExQQQogICAgICAgICAgICAgbV95T3ZlcnBhbiA9IDA7CiAgICAgICAgIH0KIAor
ICAgICAgICBTY3JvbGxWaWV3KiB2aWV3ID0gY29yZUZyYW1lLT52aWV3KCk7CisgICAgICAgIGlm
ICghdmlldykgeworICAgICAgICAgICAgQ2xvc2VHZXN0dXJlSW5mb0hhbmRsZVB0cigpKGdlc3R1
cmVIYW5kbGUpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAg
IFNjcm9sbGJhciogdmVydFNjcm9sbGJhciA9IHZpZXctPnZlcnRpY2FsU2Nyb2xsYmFyKCk7Cisg
ICAgICAgIGlmICghdmVydFNjcm9sbGJhcikgeworICAgICAgICAgICAgQ2xvc2VHZXN0dXJlSW5m
b0hhbmRsZVB0cigpKGdlc3R1cmVIYW5kbGUpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgIH0KKworICAgICAgICAvLyBGSVhNRTogU3VwcG9ydCBIb3Jpem9udGFsIFdpbmRvdyBC
b3VuY2UKKyAgICAgICAgaWYgKHZlcnRTY3JvbGxiYXItPmN1cnJlbnRQb3MoKSA9PSAwKQorICAg
ICAgICAgICAgVXBkYXRlUGFubmluZ0ZlZWRiYWNrUHRyKCkobV92aWV3V2luZG93LCAwLCBtX3lP
dmVycGFuLCBnaS5kd0ZsYWdzICYgR0ZfSU5FUlRJQSk7CisgICAgICAgIGVsc2UgaWYgKHZlcnRT
Y3JvbGxiYXItPmN1cnJlbnRQb3MoKSA+PSB2ZXJ0U2Nyb2xsYmFyLT5tYXhpbXVtKCkpCisgICAg
ICAgICAgICBVcGRhdGVQYW5uaW5nRmVlZGJhY2tQdHIoKShtX3ZpZXdXaW5kb3csIDAsIG1feU92
ZXJwYW4sIGdpLmR3RmxhZ3MgJiBHRl9JTkVSVElBKTsKKwogICAgICAgICBDbG9zZUdlc3R1cmVJ
bmZvSGFuZGxlUHRyKCkoZ2VzdHVyZUhhbmRsZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>