<?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>32668</bug_id>
          
          <creation_ts>2009-12-17 09:35:35 -0800</creation_ts>
          <short_desc>[Qt] Add new scrollRecursively API to QWebFrame</short_desc>
          <delta_ts>2010-01-11 07:50:34 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Qt</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Qt</keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>31552</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Joseph Ligman">joseph.ligman</reporter>
          <assigned_to name="Joseph Ligman">joseph.ligman</assigned_to>
          <cc>abarth</cc>
    
    <cc>commit-queue</cc>
    
    <cc>hausmann</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>172819</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Ligman">joseph.ligman</who>
    <bug_when>2009-12-17 09:35:35 -0800</bug_when>
    <thetext>Adding scrollRecursively is useful for any QtWebKit enabled application that supports touch panning across nested iframes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>172829</commentid>
    <comment_count>1</comment_count>
      <attachid>45080</attachid>
    <who name="Joseph Ligman">joseph.ligman</who>
    <bug_when>2009-12-17 09:52:23 -0800</bug_when>
    <thetext>Created attachment 45080
Patch to add new QWebFrame API scrollRecursively

I took the concept from the EventHandler::scrollRecursively</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>172830</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-17 09:53:37 -0800</bug_when>
    <thetext>Attachment 45080 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebKit/qt/tests/qwebframe/tst_qwebframe.cpp:2822:  Missing space after ,  [whitespace/comma] [3]
WebKit/qt/tests/qwebframe/tst_qwebframe.cpp:2832:  Missing space after ,  [whitespace/comma] [3]
WebKit/qt/tests/qwebframe/tst_qwebframe.cpp:2845:  Missing space after ,  [whitespace/comma] [3]
WebKit/qt/tests/qwebframe/tst_qwebframe.cpp:2855:  Missing space after ,  [whitespace/comma] [3]
WebKit/qt/tests/qwebframe/tst_qwebframe.cpp:2858:  Missing space after ,  [whitespace/comma] [3]
Total errors found: 5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>172834</commentid>
    <comment_count>3</comment_count>
      <attachid>45081</attachid>
    <who name="Joseph Ligman">joseph.ligman</who>
    <bug_when>2009-12-17 10:07:56 -0800</bug_when>
    <thetext>Created attachment 45081
 Patch to add new QWebFrame API scrollRecursively</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>172838</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-17 10:09:10 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 45081 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>172839</commentid>
    <comment_count>5</comment_count>
    <who name="Joseph Ligman">joseph.ligman</who>
    <bug_when>2009-12-17 10:13:36 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; Attachment 45080 [details] did not pass style-queue:
&gt; 
&gt; Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
&gt; WebKit/qt/tests/qwebframe/tst_qwebframe.cpp:2822:  Missing space after , 
&gt; [whitespace/comma] [3]
&gt; WebKit/qt/tests/qwebframe/tst_qwebframe.cpp:2832:  Missing space after , 
&gt; [whitespace/comma] [3]
&gt; WebKit/qt/tests/qwebframe/tst_qwebframe.cpp:2845:  Missing space after , 
&gt; [whitespace/comma] [3]
&gt; WebKit/qt/tests/qwebframe/tst_qwebframe.cpp:2855:  Missing space after , 
&gt; [whitespace/comma] [3]
&gt; WebKit/qt/tests/qwebframe/tst_qwebframe.cpp:2858:  Missing space after , 
&gt; [whitespace/comma] [3]
&gt; Total errors found: 5

at least I&apos;m consistent :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>172841</commentid>
    <comment_count>6</comment_count>
      <attachid>45081</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2009-12-17 10:17:16 -0800</bug_when>
    <thetext>Comment on attachment 45081
 Patch to add new QWebFrame API scrollRecursively 

&gt; Index: WebKit/qt/ChangeLog
&gt; ===================================================================
&gt; --- WebKit/qt/ChangeLog	(revision 52259)
&gt; +++ WebKit/qt/ChangeLog	(working copy)
&gt; @@ -1,3 +1,21 @@
&gt; +2009-12-17  Joe Ligman  &lt;joseph.ligman@nokia.com&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        [Qt] Add new API to QWebFrame to scrollRecursively starting with any css overflow 
&gt; +        then checking current frame and then ancestors
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=32668
&gt; +
&gt; +        * Api/qwebframe.cpp:
&gt; +        (QWebFramePrivate::scrollOverflow):
&gt; +        (QWebFrame::scrollRecursively):
&gt; +        * Api/qwebframe.h:
&gt; +        * Api/qwebframe_p.h:
&gt; +        * tests/qwebframe/qwebframe.qrc:
&gt; +        * tests/qwebframe/testiframe.html: Added.
&gt; +        * tests/qwebframe/testiframe2.html: Added.
&gt; +        * tests/qwebframe/tst_qwebframe.cpp:
&gt; +
&gt;  2009-12-17  Benjamin Poulain  &lt;benjamin.poulain@nokia.com&gt;
&gt;  
&gt;          Reviewed by Simon Hausmann.
&gt; Index: WebKit/qt/Api/qwebframe.cpp
&gt; ===================================================================
&gt; --- WebKit/qt/Api/qwebframe.cpp	(revision 52259)
&gt; +++ WebKit/qt/Api/qwebframe.cpp	(working copy)
&gt; @@ -361,6 +361,45 @@ void QWebFramePrivate::renderRelativeCoo
&gt;      }
&gt;  }
&gt;  
&gt; +bool QWebFramePrivate::scrollOverflow(int dx, int dy)
&gt; +{
&gt; +    if (!frame || !frame-&gt;document() || !frame-&gt;eventHandler())
&gt; +        return false;
&gt; +
&gt; +    Node* node = frame-&gt;document()-&gt;focusedNode();
&gt; +    if (!node)
&gt; +        node = frame-&gt;document()-&gt;elementFromPoint(frame-&gt;eventHandler()-&gt;currentMousePosition().x(),
&gt; +                                                    frame-&gt;eventHandler()-&gt;currentMousePosition().y());

Remove the space before frame-&gt;

&gt; +    if (!node)
&gt; +        return false;
&gt; +
&gt; +    RenderObject* renderer = node-&gt;renderer();
&gt; +    if (!renderer)
&gt; +        return false;
&gt; +
&gt; +    if (renderer-&gt;isListBox())
&gt; +        return false;
&gt; +
&gt; +    RenderLayer* renderLayer = renderer-&gt;enclosingLayer();
&gt; +    if (!renderLayer)
&gt; +        return false;
&gt; +
&gt; +    bool scrolledHorizontal = false;
&gt; +    bool scrolledVertical = false;
&gt; +
&gt; +    if (dx &gt; 0)
&gt; +        scrolledHorizontal = renderLayer-&gt;scroll(ScrollRight, ScrollByPixel, dx);
&gt; +    else if (dx &lt; 0)
&gt; +        scrolledHorizontal = renderLayer-&gt;scroll(ScrollLeft, ScrollByPixel, qAbs(dx));
&gt; +
&gt; +    if (dy &gt; 0)
&gt; +        scrolledVertical = renderLayer-&gt;scroll(ScrollDown, ScrollByPixel, dy);
&gt; +    else if (dy &lt; 0)
&gt; +        scrolledVertical = renderLayer-&gt;scroll(ScrollUp, ScrollByPixel, qAbs(dy));
&gt; +
&gt; +    return (scrolledHorizontal || scrolledVertical);
&gt; +}
&gt; +
&gt;  /*!
&gt;      \class QWebFrame
&gt;      \since 4.4
&gt; @@ -1000,6 +1039,50 @@ void QWebFrame::scroll(int dx, int dy)
&gt;  }
&gt;  
&gt;  /*!
&gt; +  \since 4.7
&gt; +  Scrolls nested frames starting at this frame, \a dx pixels to the right 
&gt; +  and \a dy pixels downward. Both \a dx and \a dy may be negative. First attempts
&gt; +  to scroll elements with css overflow followed by this frame. If this 

It is called CSS

&gt; +  frame doesn&apos;t scroll, attempts to scroll the parent
&gt; +
&gt; +  \sa QWebFrame::scroll, QWebFramePrivate::scrollOverflow

Dont add references to the private!

&gt; +*/
&gt; +bool QWebFrame::scrollRecursively(int dx, int dy)
&gt; +{
&gt; +    bool scrolledHorizontal = false;
&gt; +    bool scrolledVertical = false;
&gt; +    bool scrolledOverflow = d-&gt;scrollOverflow(dx, dy);
&gt; +
&gt; +    if (!scrolledOverflow) {
&gt; +        Frame* frame = d-&gt;frame;
&gt; +        if (!frame || !frame-&gt;view())
&gt; +            return false;
&gt; +
&gt; +        do {
&gt; +            IntSize scrollOffset = frame-&gt;view()-&gt;scrollOffset();
&gt; +            IntPoint maxScrollOffset = frame-&gt;view()-&gt;maximumScrollPosition();
&gt; +
&gt; +            if (dx &gt; 0) // scroll right
&gt; +                scrolledHorizontal = scrollOffset.width() &lt; maxScrollOffset.x();
&gt; +            else if (dx &lt; 0) // scroll left
&gt; +                scrolledHorizontal = scrollOffset.width() &gt; 0;
&gt; +
&gt; +            if (dy &gt; 0) // scroll down
&gt; +                scrolledVertical = scrollOffset.height() &lt; maxScrollOffset.y();
&gt; +            else if (dy &lt; 0) //scroll up
&gt; +                scrolledVertical = scrollOffset.height() &gt; 0;
&gt; +
&gt; +            if (scrolledHorizontal || scrolledVertical) {
&gt; +                frame-&gt;view()-&gt;scrollBy(IntSize(dx, dy));
&gt; +                return true;
&gt; +            }
&gt; +            frame = frame-&gt;tree()-&gt;parent(); 
&gt; +        } while (frame &amp;&amp; frame-&gt;view());
&gt; +    }
&gt; +    return (scrolledHorizontal || scrolledVertical || scrolledOverflow);
&gt; +}
&gt; +
&gt; +/*!
&gt;    \property QWebFrame::scrollPosition
&gt;    \since 4.5
&gt;    \brief the position the frame is currently scrolled to.
&gt; Index: WebKit/qt/Api/qwebframe.h
&gt; ===================================================================
&gt; --- WebKit/qt/Api/qwebframe.h	(revision 52259)
&gt; +++ WebKit/qt/Api/qwebframe.h	(working copy)
&gt; @@ -156,6 +156,7 @@ public:
&gt;      QRect scrollBarGeometry(Qt::Orientation orientation) const;
&gt;  
&gt;      void scroll(int, int);
&gt; +    bool scrollRecursively(int, int);
&gt;      QPoint scrollPosition() const;
&gt;      void setScrollPosition(const QPoint &amp;pos);
&gt;  
&gt; Index: WebKit/qt/Api/qwebframe_p.h
&gt; ===================================================================
&gt; --- WebKit/qt/Api/qwebframe_p.h	(revision 52259)
&gt; +++ WebKit/qt/Api/qwebframe_p.h	(working copy)
&gt; @@ -85,6 +85,8 @@ public:
&gt;      void renderRelativeCoords(WebCore::GraphicsContext*, QWebFrame::RenderLayer, const QRegion&amp; clip);
&gt;      void renderContentsLayerAbsoluteCoords(WebCore::GraphicsContext*, const QRegion&amp; clip);
&gt;  
&gt; +    bool scrollOverflow(int dx, int dy);
&gt; +
&gt;      QWebFrame *q;
&gt;      Qt::ScrollBarPolicy horizontalScrollBarPolicy;
&gt;      Qt::ScrollBarPolicy verticalScrollBarPolicy;
&gt; Index: WebKit/qt/tests/qwebframe/qwebframe.qrc
&gt; ===================================================================
&gt; --- WebKit/qt/tests/qwebframe/qwebframe.qrc	(revision 52259)
&gt; +++ WebKit/qt/tests/qwebframe/qwebframe.qrc	(working copy)
&gt; @@ -4,5 +4,7 @@
&gt;  &lt;file&gt;style.css&lt;/file&gt;
&gt;  &lt;file&gt;test1.html&lt;/file&gt;
&gt;  &lt;file&gt;test2.html&lt;/file&gt;
&gt; +&lt;file&gt;testiframe.html&lt;/file&gt;
&gt; +&lt;file&gt;testiframe2.html&lt;/file&gt;
&gt;  &lt;/qresource&gt;
&gt;  &lt;/RCC&gt;
&gt; Index: WebKit/qt/tests/qwebframe/testiframe2.html
&gt; ===================================================================
&gt; --- WebKit/qt/tests/qwebframe/testiframe2.html	(revision 0)
&gt; +++ WebKit/qt/tests/qwebframe/testiframe2.html	(revision 0)
&gt; @@ -0,0 +1,21 @@
&gt; +&lt;/html&gt;
&gt; +&lt;html&gt;
&gt; +&lt;head&gt;
&gt; +&lt;title&gt;&lt;/title&gt;
&gt; +&lt;style type=&quot;text/css&quot;&gt;
&gt; +&lt;!--
&gt; +#content {
&gt; +  background: #fff;
&gt; +  position: absolute;
&gt; +  top: 0px;
&gt; +  left: 0px;
&gt; +  width: 800px;
&gt; +  height: 800px;
&gt; +}
&gt; +--&gt;
&gt; +&lt;/style&gt;
&gt; +&lt;/head&gt;
&gt; +&lt;body&gt;
&gt; +&lt;div id=&quot;content&quot;&gt; &lt;/div&gt;
&gt; +&lt;/body&gt;
&gt; +&lt;/html&gt;
&gt; \ No newline at end of file
&gt; Index: WebKit/qt/tests/qwebframe/testiframe.html
&gt; ===================================================================
&gt; --- WebKit/qt/tests/qwebframe/testiframe.html	(revision 0)
&gt; +++ WebKit/qt/tests/qwebframe/testiframe.html	(revision 0)
&gt; @@ -0,0 +1,54 @@
&gt; +&lt;/html&gt;
&gt; +&lt;html&gt;
&gt; +&lt;head&gt;
&gt; +&lt;title&gt;&lt;/title&gt;
&gt; +&lt;style type=&quot;text/css&quot;&gt;
&gt; +&lt;!--
&gt; +#header {
&gt; +  background: #0f0;
&gt; +  position: absolute;
&gt; +  top: 0px;
&gt; +  left: 0px;
&gt; +  width: 800px;
&gt; +  height: 100px;
&gt; +}
&gt; +#content1 {
&gt; +  background: #ff0;
&gt; +  position: absolute;
&gt; +  top: 101px;
&gt; +  left: 0px;
&gt; +  width: 400px;
&gt; +  height: 400px;
&gt; +  overflow: scroll;
&gt; +}
&gt; +#content2 {
&gt; +  background: #ff7;
&gt; +  position: absolute;
&gt; +  top: 101px;
&gt; +  left: 401px;
&gt; +  width: 400px;
&gt; +  height: 400px;
&gt; +}
&gt; +#footer {
&gt; +  background: #0f0;
&gt; +  position: absolute;
&gt; +  top: 502px;
&gt; +  left: 0px;
&gt; +  width: 800px;
&gt; +  height: 200px;
&gt; +}
&gt; +--&gt;
&gt; +&lt;/style&gt;
&gt; +&lt;/head&gt;
&gt; +&lt;body&gt;
&gt; +&lt;div id=&quot;header&quot;&gt;&lt;/div&gt;
&gt; +&lt;div id=&quot;content1&quot;&gt;You can use the overflow property when you want to have better control of the layout. Try to change the overflow property to: visible, hidden, auto, or inherit and see what happens. The default value is visible.
&gt; +You can use the overflow property when you want to have better control of the layout. Try to change the overflow property to: visible, hidden, auto, or inherit and see what happens. The default value is visible.
&gt; +You can use the overflow property when you want to have better control of the layout. Try to change the overflow property to: visible, hidden, auto, or inherit and see what happens. The default value is visible.
&gt; +You can use the overflow property when you want to have better control of the layout. Try to change the overflow property to: visible, hidden, auto, or inherit and see what happens. The default value is visible.
&gt; +You can use the overflow property when you want to have better control of the layout. Try to change the overflow property to: visible, hidden, auto, or inherit and see what happens. The default value is visible.
&gt; +You can use the overflow property when you want to have better control of the layout. Try to change the overflow property to: visible, hidden, auto, or inherit and see what happens. The default value is visible.&lt;/div&gt;
&gt; +&lt;iframe id=&quot;content2&quot; name=&quot;control&quot; src=&quot;testiframe2.html&quot;&gt; &lt;/iframe&gt;
&gt; +&lt;div id=&quot;footer&quot;&gt;&lt;/div&gt;
&gt; +&lt;/body&gt;
&gt; +&lt;/html&gt;
&gt; \ No newline at end of file
&gt; Index: WebKit/qt/tests/qwebframe/tst_qwebframe.cpp
&gt; ===================================================================
&gt; --- WebKit/qt/tests/qwebframe/tst_qwebframe.cpp	(revision 52259)
&gt; +++ WebKit/qt/tests/qwebframe/tst_qwebframe.cpp	(working copy)
&gt; @@ -576,6 +576,7 @@ private slots:
&gt;      void scrollPosition();
&gt;      void evaluateWillCauseRepaint();
&gt;      void qObjectWrapperWithSameIdentity();
&gt; +    void scrollRecursively();
&gt;  
&gt;  private:
&gt;      QString  evalJS(const QString&amp;s) {
&gt; @@ -2795,5 +2796,69 @@ void tst_QWebFrame::qObjectWrapperWithSa
&gt;      QCOMPARE(mainFrame-&gt;toPlainText(), QString(&quot;test2&quot;));
&gt;  }
&gt;  
&gt; +void tst_QWebFrame::scrollRecursively()
&gt; +{
&gt; +    // The test content is 
&gt; +    // a nested frame set
&gt; +    // The main frame scrolls
&gt; +    // and has two children
&gt; +    // an iframe and a div overflow
&gt; +    // both scroll
&gt; +    QWebView webView;
&gt; +    QWebPage* webPage = webView.page();
&gt; +    QSignalSpy loadSpy(webPage, SIGNAL(loadFinished(bool)));
&gt; +    QUrl url = QUrl(&quot;qrc:///testiframe.html&quot;);
&gt; +    webPage-&gt;mainFrame()-&gt;load(url);
&gt; +    QTRY_COMPARE(loadSpy.count(), 1);
&gt; +
&gt; +    QList&lt;QWebFrame*&gt; children =  webPage-&gt;mainFrame()-&gt;childFrames();
&gt; +    QVERIFY(children.count() == 1);
&gt; +
&gt; +    // 1st test
&gt; +    // call scrollRecursively over mainframe
&gt; +    // verify scrolled
&gt; +    // verify scroll postion changed
&gt; +    QPoint scrollPosition(webPage-&gt;mainFrame()-&gt;scrollPosition());
&gt; +    QVERIFY(webPage-&gt;mainFrame()-&gt;scrollRecursively(10, 10));
&gt; +    QVERIFY(scrollPosition != webPage-&gt;mainFrame()-&gt;scrollPosition());
&gt; +
&gt; +    // 2nd test
&gt; +    // call scrollRecursively over child iframe
&gt; +    // verify scrolled
&gt; +    // verify child scroll position changed
&gt; +    // verify parent&apos;s scroll position did not change
&gt; +    scrollPosition = webPage-&gt;mainFrame()-&gt;scrollPosition();
&gt; +    QPoint childScrollPosition = children.at(0)-&gt;scrollPosition();
&gt; +    QVERIFY(children.at(0)-&gt;scrollRecursively(10, 10));
&gt; +    QVERIFY(scrollPosition == webPage-&gt;mainFrame()-&gt;scrollPosition());
&gt; +    QVERIFY(childScrollPosition != children.at(0)-&gt;scrollPosition());
&gt; +
&gt; +    // 3rd test
&gt; +    // call scrollRecursively over div overflow
&gt; +    // verify scrolled == true
&gt; +    // verify parent and child frame&apos;s scroll postion did not change
&gt; +    QWebElement div = webPage-&gt;mainFrame()-&gt;documentElement().findFirst(&quot;#content1&quot;);
&gt; +    QMouseEvent evpres(QEvent::MouseMove, div.geometry().center(), Qt::NoButton, Qt::NoButton, Qt::NoModifier);
&gt; +    webPage-&gt;event(&amp;evpres);
&gt; +    scrollPosition = webPage-&gt;mainFrame()-&gt;scrollPosition();
&gt; +    childScrollPosition = children.at(0)-&gt;scrollPosition();
&gt; +    QVERIFY(webPage-&gt;mainFrame()-&gt;scrollRecursively(5, 5));
&gt; +    QVERIFY(childScrollPosition == children.at(0)-&gt;scrollPosition());
&gt; +    QVERIFY(scrollPosition == webPage-&gt;mainFrame()-&gt;scrollPosition());
&gt; +
&gt; +    // 4th test
&gt; +    // call scrollRecursively twice over childs iframe
&gt; +    // verify scrolled == true first time
&gt; +    // verify parent&apos;s scroll == true second time
&gt; +    // verify parent and childs scroll position changed
&gt; +    childScrollPosition = children.at(0)-&gt;scrollPosition();
&gt; +    QVERIFY(children.at(0)-&gt;scrollRecursively(-10, -10));
&gt; +    QVERIFY(childScrollPosition != children.at(0)-&gt;scrollPosition());
&gt; +    scrollPosition = webPage-&gt;mainFrame()-&gt;scrollPosition();
&gt; +    QVERIFY(children.at(0)-&gt;scrollRecursively(-10, -10));
&gt; +    QVERIFY(scrollPosition != webPage-&gt;mainFrame()-&gt;scrollPosition());
&gt; +
&gt; +}
&gt; +
&gt;  QTEST_MAIN(tst_QWebFrame)
&gt;  #include &quot;tst_qwebframe.moc&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>172863</commentid>
    <comment_count>7</comment_count>
      <attachid>45086</attachid>
    <who name="Joseph Ligman">joseph.ligman</who>
    <bug_when>2009-12-17 10:40:44 -0800</bug_when>
    <thetext>Created attachment 45086
Patch to add new QWebFrame API scrollRecursively</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>172867</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-17 10:45:28 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 45086 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>172967</commentid>
    <comment_count>9</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-12-17 15:19:45 -0800</bug_when>
    <thetext>&gt; at least I&apos;m consistent :)

Thanks for fixing the style nits.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173146</commentid>
    <comment_count>10</comment_count>
    <who name="Joseph Ligman">joseph.ligman</who>
    <bug_when>2009-12-18 06:56:25 -0800</bug_when>
    <thetext>*** Bug 26934 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173147</commentid>
    <comment_count>11</comment_count>
      <attachid>45086</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-12-18 07:04:12 -0800</bug_when>
    <thetext>Comment on attachment 45086
Patch to add new QWebFrame API scrollRecursively

Clearing flags on attachment: 45086

Committed r52311: &lt;http://trac.webkit.org/changeset/52311&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173148</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-12-18 07:04:21 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>174769</commentid>
    <comment_count>13</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2009-12-24 06:03:12 -0800</bug_when>
    <thetext>i am late here ( vacations) 

nits: joe, i would had added a break point (&quot;.&quot;) at the end of 

&quot;+  \since 4.7
+  Scrolls nested frames starting at this frame, \a dx pixels to the right 
+  and \a dy pixels downward. Both \a dx and \a dy may be negative. First attempts 
+  to scroll elements with CSS overflow followed by this frame. If this 
+  frame doesn&apos;t scroll, attempts to scroll the parent&quot; 

and documented the what true/false means in terms of returned value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177190</commentid>
    <comment_count>14</comment_count>
    <who name="Laszlo Gombos">laszlo.gombos</who>
    <bug_when>2010-01-05 09:33:18 -0800</bug_when>
    <thetext>Joe, would you mind prepare a version of this patch for 4.6 branch with private APIs (qt_scrollRecursively, qt_scrollOverflow) ? Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178693</commentid>
    <comment_count>15</comment_count>
      <attachid>46140</attachid>
    <who name="Joseph Ligman">joseph.ligman</who>
    <bug_when>2010-01-08 08:50:07 -0800</bug_when>
    <thetext>Created attachment 46140
private API prepared to merge to 4.6</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179346</commentid>
    <comment_count>16</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2010-01-11 06:44:15 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; Created an attachment (id=46140) [details]
&gt; private API prepared to merge to 4.6

The auto test included in this patch fails for me:

FAIL!  : tst_QWebFrame::qtscrollRecursively() &apos;children.count() == 1&apos; returned FALSE. ()

Also I don&apos;t think we should use qt_ as prefix for the private API as that might conflict with private API that qt exports. I would refer qtwebkit_webframe_scrollRecursively(). Also the qt_privateScrollOverflow function should be marked as static and it does not need a qt_ prefix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179357</commentid>
    <comment_count>17</comment_count>
      <attachid>46274</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2010-01-11 07:36:59 -0800</bug_when>
    <thetext>Created attachment 46274
Patch for private API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179361</commentid>
    <comment_count>18</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2010-01-11 07:50:34 -0800</bug_when>
    <thetext>Added commit 236bb65bb77eac6f668fd9fbf53d85e58b7d291a that cherry-picks 52311 and then commit 39b1a3d826dce489d2f5c99282ef0c30b5dbb9f6 on top that fixes the private API.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45080</attachid>
            <date>2009-12-17 09:52:23 -0800</date>
            <delta_ts>2009-12-17 10:07:56 -0800</delta_ts>
            <desc>Patch to add new QWebFrame API scrollRecursively</desc>
            <filename>bug32668.patch</filename>
            <type>text/plain</type>
            <size>12219</size>
            <attacher name="Joseph Ligman">joseph.ligman</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9xdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L0NoYW5n
ZUxvZwkocmV2aXNpb24gNTIyNTcpCisrKyBXZWJLaXQvcXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIwMDktMTItMTcgIEpvZSBMaWdtYW4gIDxqb3NlcGgubGln
bWFuQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBbUXRdIEFkZCBuZXcgQVBJIHRvIFFXZWJGcmFtZSB0byBzY3JvbGxSZWN1cnNpdmVs
eSBzdGFydGluZyB3aXRoIGFueSBjc3Mgb3ZlcmZsb3cgCisgICAgICAgIHRoZW4gY2hlY2tpbmcg
Y3VycmVudCBmcmFtZSBhbmQgdGhlbiBhbmNlc3RvcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMyNjY4CisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1l
LmNwcDoKKyAgICAgICAgKFFXZWJGcmFtZVByaXZhdGU6OnNjcm9sbE92ZXJmbG93KToKKyAgICAg
ICAgKFFXZWJGcmFtZTo6c2Nyb2xsUmVjdXJzaXZlbHkpOgorICAgICAgICAqIEFwaS9xd2ViZnJh
bWUuaDoKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lX3AuaDoKKyAgICAgICAgKiB0ZXN0cy9xd2Vi
ZnJhbWUvcXdlYmZyYW1lLnFyYzoKKyAgICAgICAgKiB0ZXN0cy9xd2ViZnJhbWUvdGVzdGlmcmFt
ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9xd2ViZnJhbWUvdGVzdGlmcmFtZTIuaHRt
bDogQWRkZWQuCisgICAgICAgICogdGVzdHMvcXdlYmZyYW1lL3RzdF9xd2ViZnJhbWUuY3BwOgor
CiAyMDA5LTEyLTE3ICBCZW5qYW1pbiBQb3VsYWluICA8YmVuamFtaW4ucG91bGFpbkBub2tpYS5j
b20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCkluZGV4OiBXZWJLaXQv
cXQvQXBpL3F3ZWJmcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L0FwaS9xd2ViZnJh
bWUuY3BwCShyZXZpc2lvbiA1MjI1NikKKysrIFdlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzYxLDYgKzM2MSw0NSBAQCB2b2lkIFFXZWJGcmFtZVByaXZhdGU6
OnJlbmRlclJlbGF0aXZlQ29vCiAgICAgfQogfQogCitib29sIFFXZWJGcmFtZVByaXZhdGU6OnNj
cm9sbE92ZXJmbG93KGludCBkeCwgaW50IGR5KQoreworICAgIGlmICghZnJhbWUgfHwgIWZyYW1l
LT5kb2N1bWVudCgpIHx8ICFmcmFtZS0+ZXZlbnRIYW5kbGVyKCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIE5vZGUqIG5vZGUgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+Zm9jdXNlZE5vZGUo
KTsKKyAgICBpZiAoIW5vZGUpCisgICAgICAgIG5vZGUgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+ZWxl
bWVudEZyb21Qb2ludChmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmN1cnJlbnRNb3VzZVBvc2l0aW9u
KCkueCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+Y3VycmVudE1vdXNlUG9zaXRpb24oKS55KCkpOwor
ICAgIGlmICghbm9kZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgUmVuZGVyT2JqZWN0
KiByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7CisgICAgaWYgKCFyZW5kZXJlcikKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKHJlbmRlcmVyLT5pc0xpc3RCb3goKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgUmVuZGVyTGF5ZXIqIHJlbmRlckxheWVyID0gcmVuZGVy
ZXItPmVuY2xvc2luZ0xheWVyKCk7CisgICAgaWYgKCFyZW5kZXJMYXllcikKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgYm9vbCBzY3JvbGxlZEhvcml6b250YWwgPSBmYWxzZTsKKyAgICBi
b29sIHNjcm9sbGVkVmVydGljYWwgPSBmYWxzZTsKKworICAgIGlmIChkeCA+IDApCisgICAgICAg
IHNjcm9sbGVkSG9yaXpvbnRhbCA9IHJlbmRlckxheWVyLT5zY3JvbGwoU2Nyb2xsUmlnaHQsIFNj
cm9sbEJ5UGl4ZWwsIGR4KTsKKyAgICBlbHNlIGlmIChkeCA8IDApCisgICAgICAgIHNjcm9sbGVk
SG9yaXpvbnRhbCA9IHJlbmRlckxheWVyLT5zY3JvbGwoU2Nyb2xsTGVmdCwgU2Nyb2xsQnlQaXhl
bCwgcUFicyhkeCkpOworCisgICAgaWYgKGR5ID4gMCkKKyAgICAgICAgc2Nyb2xsZWRWZXJ0aWNh
bCA9IHJlbmRlckxheWVyLT5zY3JvbGwoU2Nyb2xsRG93biwgU2Nyb2xsQnlQaXhlbCwgZHkpOwor
ICAgIGVsc2UgaWYgKGR5IDwgMCkKKyAgICAgICAgc2Nyb2xsZWRWZXJ0aWNhbCA9IHJlbmRlckxh
eWVyLT5zY3JvbGwoU2Nyb2xsVXAsIFNjcm9sbEJ5UGl4ZWwsIHFBYnMoZHkpKTsKKworICAgIHJl
dHVybiAoc2Nyb2xsZWRIb3Jpem9udGFsIHx8IHNjcm9sbGVkVmVydGljYWwpOworfQorCiAvKiEK
ICAgICBcY2xhc3MgUVdlYkZyYW1lCiAgICAgXHNpbmNlIDQuNApAQCAtMTAwMCw2ICsxMDM5LDUw
IEBAIHZvaWQgUVdlYkZyYW1lOjpzY3JvbGwoaW50IGR4LCBpbnQgZHkpCiB9CiAKIC8qIQorICBc
c2luY2UgNC43CisgIFNjcm9sbHMgbmVzdGVkIGZyYW1lcyBzdGFydGluZyBhdCB0aGlzIGZyYW1l
LCBcYSBkeCBwaXhlbHMgdG8gdGhlIHJpZ2h0IAorICBhbmQgXGEgZHkgcGl4ZWxzIGRvd253YXJk
LiBCb3RoIFxhIGR4IGFuZCBcYSBkeSBtYXkgYmUgbmVnYXRpdmUuIEZpcnN0IGF0dGVtcHRzCisg
IHRvIHNjcm9sbCBlbGVtZW50cyB3aXRoIGNzcyBvdmVyZmxvdyBmb2xsb3dlZCBieSB0aGlzIGZy
YW1lLiBJZiB0aGlzIAorICBmcmFtZSBkb2Vzbid0IHNjcm9sbCwgYXR0ZW1wdHMgdG8gc2Nyb2xs
IHRoZSBwYXJlbnQKKworICBcc2EgUVdlYkZyYW1lOjpzY3JvbGwsIFFXZWJGcmFtZVByaXZhdGU6
OnNjcm9sbE92ZXJmbG93CisqLworYm9vbCBRV2ViRnJhbWU6OnNjcm9sbFJlY3Vyc2l2ZWx5KGlu
dCBkeCwgaW50IGR5KQoreworICAgIGJvb2wgc2Nyb2xsZWRIb3Jpem9udGFsID0gZmFsc2U7Cisg
ICAgYm9vbCBzY3JvbGxlZFZlcnRpY2FsID0gZmFsc2U7CisgICAgYm9vbCBzY3JvbGxlZE92ZXJm
bG93ID0gZC0+c2Nyb2xsT3ZlcmZsb3coZHgsIGR5KTsKKworICAgIGlmICghc2Nyb2xsZWRPdmVy
ZmxvdykgeworICAgICAgICBGcmFtZSogZnJhbWUgPSBkLT5mcmFtZTsKKyAgICAgICAgaWYgKCFm
cmFtZSB8fCAhZnJhbWUtPnZpZXcoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
ICAgICBkbyB7CisgICAgICAgICAgICBJbnRTaXplIHNjcm9sbE9mZnNldCA9IGZyYW1lLT52aWV3
KCktPnNjcm9sbE9mZnNldCgpOworICAgICAgICAgICAgSW50UG9pbnQgbWF4U2Nyb2xsT2Zmc2V0
ID0gZnJhbWUtPnZpZXcoKS0+bWF4aW11bVNjcm9sbFBvc2l0aW9uKCk7CisKKyAgICAgICAgICAg
IGlmIChkeCA+IDApIC8vIHNjcm9sbCByaWdodAorICAgICAgICAgICAgICAgIHNjcm9sbGVkSG9y
aXpvbnRhbCA9IHNjcm9sbE9mZnNldC53aWR0aCgpIDwgbWF4U2Nyb2xsT2Zmc2V0LngoKTsKKyAg
ICAgICAgICAgIGVsc2UgaWYgKGR4IDwgMCkgLy8gc2Nyb2xsIGxlZnQKKyAgICAgICAgICAgICAg
ICBzY3JvbGxlZEhvcml6b250YWwgPSBzY3JvbGxPZmZzZXQud2lkdGgoKSA+IDA7CisKKyAgICAg
ICAgICAgIGlmIChkeSA+IDApIC8vIHNjcm9sbCBkb3duCisgICAgICAgICAgICAgICAgc2Nyb2xs
ZWRWZXJ0aWNhbCA9IHNjcm9sbE9mZnNldC5oZWlnaHQoKSA8IG1heFNjcm9sbE9mZnNldC55KCk7
CisgICAgICAgICAgICBlbHNlIGlmIChkeSA8IDApIC8vc2Nyb2xsIHVwCisgICAgICAgICAgICAg
ICAgc2Nyb2xsZWRWZXJ0aWNhbCA9IHNjcm9sbE9mZnNldC5oZWlnaHQoKSA+IDA7CisKKyAgICAg
ICAgICAgIGlmIChzY3JvbGxlZEhvcml6b250YWwgfHwgc2Nyb2xsZWRWZXJ0aWNhbCkgeworICAg
ICAgICAgICAgICAgIGZyYW1lLT52aWV3KCktPnNjcm9sbEJ5KEludFNpemUoZHgsIGR5KSk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBm
cmFtZSA9IGZyYW1lLT50cmVlKCktPnBhcmVudCgpOyAKKyAgICAgICAgfSB3aGlsZSAoZnJhbWUg
JiYgZnJhbWUtPnZpZXcoKSk7CisgICAgfQorICAgIHJldHVybiAoc2Nyb2xsZWRIb3Jpem9udGFs
IHx8IHNjcm9sbGVkVmVydGljYWwgfHwgc2Nyb2xsZWRPdmVyZmxvdyk7Cit9CisKKy8qIQogICBc
cHJvcGVydHkgUVdlYkZyYW1lOjpzY3JvbGxQb3NpdGlvbgogICBcc2luY2UgNC41CiAgIFxicmll
ZiB0aGUgcG9zaXRpb24gdGhlIGZyYW1lIGlzIGN1cnJlbnRseSBzY3JvbGxlZCB0by4KSW5kZXg6
IFdlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L0FwaS9x
d2ViZnJhbWUuaAkocmV2aXNpb24gNTIyNTYpCisrKyBXZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xNTYsNiArMTU2LDcgQEAgcHVibGljOgogICAgIFFSZWN0IHNj
cm9sbEJhckdlb21ldHJ5KFF0OjpPcmllbnRhdGlvbiBvcmllbnRhdGlvbikgY29uc3Q7CiAKICAg
ICB2b2lkIHNjcm9sbChpbnQsIGludCk7CisgICAgYm9vbCBzY3JvbGxSZWN1cnNpdmVseShpbnQs
IGludCk7CiAgICAgUVBvaW50IHNjcm9sbFBvc2l0aW9uKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRT
Y3JvbGxQb3NpdGlvbihjb25zdCBRUG9pbnQgJnBvcyk7CiAKSW5kZXg6IFdlYktpdC9xdC9BcGkv
cXdlYmZyYW1lX3AuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZV9wLmgJ
KHJldmlzaW9uIDUyMjU2KQorKysgV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWVfcC5oCSh3b3JraW5n
IGNvcHkpCkBAIC04NSw2ICs4NSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbmRlclJlbGF0aXZl
Q29vcmRzKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCosIFFXZWJGcmFtZTo6UmVuZGVyTGF5ZXIs
IGNvbnN0IFFSZWdpb24mIGNsaXApOwogICAgIHZvaWQgcmVuZGVyQ29udGVudHNMYXllckFic29s
dXRlQ29vcmRzKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFFSZWdpb24mIGNsaXAp
OwogCisgICAgYm9vbCBzY3JvbGxPdmVyZmxvdyhpbnQgZHgsIGludCBkeSk7CisKICAgICBRV2Vi
RnJhbWUgKnE7CiAgICAgUXQ6OlNjcm9sbEJhclBvbGljeSBob3Jpem9udGFsU2Nyb2xsQmFyUG9s
aWN5OwogICAgIFF0OjpTY3JvbGxCYXJQb2xpY3kgdmVydGljYWxTY3JvbGxCYXJQb2xpY3k7Cklu
ZGV4OiBXZWJLaXQvcXQvdGVzdHMvcXdlYmZyYW1lL3F3ZWJmcmFtZS5xcmMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0L3F0L3Rlc3RzL3F3ZWJmcmFtZS9xd2ViZnJhbWUucXJjCShyZXZpc2lvbiA1MjI1
NikKKysrIFdlYktpdC9xdC90ZXN0cy9xd2ViZnJhbWUvcXdlYmZyYW1lLnFyYwkod29ya2luZyBj
b3B5KQpAQCAtNCw1ICs0LDcgQEAKIDxmaWxlPnN0eWxlLmNzczwvZmlsZT4KIDxmaWxlPnRlc3Qx
Lmh0bWw8L2ZpbGU+CiA8ZmlsZT50ZXN0Mi5odG1sPC9maWxlPgorPGZpbGU+dGVzdGlmcmFtZS5o
dG1sPC9maWxlPgorPGZpbGU+dGVzdGlmcmFtZTIuaHRtbDwvZmlsZT4KIDwvcXJlc291cmNlPgog
PC9SQ0M+CkluZGV4OiBXZWJLaXQvcXQvdGVzdHMvcXdlYmZyYW1lL3Rlc3RpZnJhbWUyLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L3F0L3Rlc3RzL3F3ZWJmcmFtZS90ZXN0aWZyYW1lMi5odG1s
CShyZXZpc2lvbiAwKQorKysgV2ViS2l0L3F0L3Rlc3RzL3F3ZWJmcmFtZS90ZXN0aWZyYW1lMi5o
dG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIxIEBACis8L2h0bWw+DQorPGh0bWw+DQorPGhl
YWQ+DQorPHRpdGxlPjwvdGl0bGU+DQorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4NCis8IS0tDQor
I2NvbnRlbnQgew0KKyAgYmFja2dyb3VuZDogI2ZmZjsNCisgIHBvc2l0aW9uOiBhYnNvbHV0ZTsN
CisgIHRvcDogMHB4Ow0KKyAgbGVmdDogMHB4Ow0KKyAgd2lkdGg6IDgwMHB4Ow0KKyAgaGVpZ2h0
OiA4MDBweDsNCit9DQorLS0+DQorPC9zdHlsZT4NCis8L2hlYWQ+DQorPGJvZHk+DQorPGRpdiBp
ZD0iY29udGVudCI+IDwvZGl2Pg0KKzwvYm9keT4NCis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpJbmRleDogV2ViS2l0L3F0L3Rlc3RzL3F3ZWJmcmFtZS90ZXN0aWZyYW1lLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L3Rlc3RzL3F3ZWJmcmFtZS90ZXN0aWZyYW1lLmh0
bWwJKHJldmlzaW9uIDApCisrKyBXZWJLaXQvcXQvdGVzdHMvcXdlYmZyYW1lL3Rlc3RpZnJhbWUu
aHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NCBAQAorPC9odG1sPg0KKzxodG1sPg0KKzxo
ZWFkPg0KKzx0aXRsZT48L3RpdGxlPg0KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+DQorPCEtLQ0K
KyNoZWFkZXIgew0KKyAgYmFja2dyb3VuZDogIzBmMDsNCisgIHBvc2l0aW9uOiBhYnNvbHV0ZTsN
CisgIHRvcDogMHB4Ow0KKyAgbGVmdDogMHB4Ow0KKyAgd2lkdGg6IDgwMHB4Ow0KKyAgaGVpZ2h0
OiAxMDBweDsNCit9DQorI2NvbnRlbnQxIHsNCisgIGJhY2tncm91bmQ6ICNmZjA7DQorICBwb3Np
dGlvbjogYWJzb2x1dGU7DQorICB0b3A6IDEwMXB4Ow0KKyAgbGVmdDogMHB4Ow0KKyAgd2lkdGg6
IDQwMHB4Ow0KKyAgaGVpZ2h0OiA0MDBweDsNCisgIG92ZXJmbG93OiBzY3JvbGw7DQorfQ0KKyNj
b250ZW50MiB7DQorICBiYWNrZ3JvdW5kOiAjZmY3Ow0KKyAgcG9zaXRpb246IGFic29sdXRlOw0K
KyAgdG9wOiAxMDFweDsNCisgIGxlZnQ6IDQwMXB4Ow0KKyAgd2lkdGg6IDQwMHB4Ow0KKyAgaGVp
Z2h0OiA0MDBweDsNCit9DQorI2Zvb3RlciB7DQorICBiYWNrZ3JvdW5kOiAjMGYwOw0KKyAgcG9z
aXRpb246IGFic29sdXRlOw0KKyAgdG9wOiA1MDJweDsNCisgIGxlZnQ6IDBweDsNCisgIHdpZHRo
OiA4MDBweDsNCisgIGhlaWdodDogMjAwcHg7DQorfQ0KKy0tPg0KKzwvc3R5bGU+DQorPC9oZWFk
Pg0KKzxib2R5Pg0KKzxkaXYgaWQ9ImhlYWRlciI+PC9kaXY+DQorPGRpdiBpZD0iY29udGVudDEi
PllvdSBjYW4gdXNlIHRoZSBvdmVyZmxvdyBwcm9wZXJ0eSB3aGVuIHlvdSB3YW50IHRvIGhhdmUg
YmV0dGVyIGNvbnRyb2wgb2YgdGhlIGxheW91dC4gVHJ5IHRvIGNoYW5nZSB0aGUgb3ZlcmZsb3cg
cHJvcGVydHkgdG86IHZpc2libGUsIGhpZGRlbiwgYXV0bywgb3IgaW5oZXJpdCBhbmQgc2VlIHdo
YXQgaGFwcGVucy4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgdmlzaWJsZS4NCitZb3UgY2FuIHVzZSB0
aGUgb3ZlcmZsb3cgcHJvcGVydHkgd2hlbiB5b3Ugd2FudCB0byBoYXZlIGJldHRlciBjb250cm9s
IG9mIHRoZSBsYXlvdXQuIFRyeSB0byBjaGFuZ2UgdGhlIG92ZXJmbG93IHByb3BlcnR5IHRvOiB2
aXNpYmxlLCBoaWRkZW4sIGF1dG8sIG9yIGluaGVyaXQgYW5kIHNlZSB3aGF0IGhhcHBlbnMuIFRo
ZSBkZWZhdWx0IHZhbHVlIGlzIHZpc2libGUuDQorWW91IGNhbiB1c2UgdGhlIG92ZXJmbG93IHBy
b3BlcnR5IHdoZW4geW91IHdhbnQgdG8gaGF2ZSBiZXR0ZXIgY29udHJvbCBvZiB0aGUgbGF5b3V0
LiBUcnkgdG8gY2hhbmdlIHRoZSBvdmVyZmxvdyBwcm9wZXJ0eSB0bzogdmlzaWJsZSwgaGlkZGVu
LCBhdXRvLCBvciBpbmhlcml0IGFuZCBzZWUgd2hhdCBoYXBwZW5zLiBUaGUgZGVmYXVsdCB2YWx1
ZSBpcyB2aXNpYmxlLg0KK1lvdSBjYW4gdXNlIHRoZSBvdmVyZmxvdyBwcm9wZXJ0eSB3aGVuIHlv
dSB3YW50IHRvIGhhdmUgYmV0dGVyIGNvbnRyb2wgb2YgdGhlIGxheW91dC4gVHJ5IHRvIGNoYW5n
ZSB0aGUgb3ZlcmZsb3cgcHJvcGVydHkgdG86IHZpc2libGUsIGhpZGRlbiwgYXV0bywgb3IgaW5o
ZXJpdCBhbmQgc2VlIHdoYXQgaGFwcGVucy4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgdmlzaWJsZS4N
CitZb3UgY2FuIHVzZSB0aGUgb3ZlcmZsb3cgcHJvcGVydHkgd2hlbiB5b3Ugd2FudCB0byBoYXZl
IGJldHRlciBjb250cm9sIG9mIHRoZSBsYXlvdXQuIFRyeSB0byBjaGFuZ2UgdGhlIG92ZXJmbG93
IHByb3BlcnR5IHRvOiB2aXNpYmxlLCBoaWRkZW4sIGF1dG8sIG9yIGluaGVyaXQgYW5kIHNlZSB3
aGF0IGhhcHBlbnMuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIHZpc2libGUuDQorWW91IGNhbiB1c2Ug
dGhlIG92ZXJmbG93IHByb3BlcnR5IHdoZW4geW91IHdhbnQgdG8gaGF2ZSBiZXR0ZXIgY29udHJv
bCBvZiB0aGUgbGF5b3V0LiBUcnkgdG8gY2hhbmdlIHRoZSBvdmVyZmxvdyBwcm9wZXJ0eSB0bzog
dmlzaWJsZSwgaGlkZGVuLCBhdXRvLCBvciBpbmhlcml0IGFuZCBzZWUgd2hhdCBoYXBwZW5zLiBU
aGUgZGVmYXVsdCB2YWx1ZSBpcyB2aXNpYmxlLjwvZGl2Pg0KKzxpZnJhbWUgaWQ9ImNvbnRlbnQy
IiBuYW1lPSJjb250cm9sIiBzcmM9InRlc3RpZnJhbWUyLmh0bWwiPiA8L2lmcmFtZT4NCis8ZGl2
IGlkPSJmb290ZXIiPjwvZGl2Pg0KKzwvYm9keT4NCis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpJbmRleDogV2ViS2l0L3F0L3Rlc3RzL3F3ZWJmcmFtZS90c3RfcXdlYmZyYW1l
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvdGVzdHMvcXdlYmZyYW1lL3RzdF9xd2ViZnJh
bWUuY3BwCShyZXZpc2lvbiA1MjI1NikKKysrIFdlYktpdC9xdC90ZXN0cy9xd2ViZnJhbWUvdHN0
X3F3ZWJmcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3Niw2ICs1NzYsNyBAQCBwcml2YXRl
IHNsb3RzOgogICAgIHZvaWQgc2Nyb2xsUG9zaXRpb24oKTsKICAgICB2b2lkIGV2YWx1YXRlV2ls
bENhdXNlUmVwYWludCgpOwogICAgIHZvaWQgcU9iamVjdFdyYXBwZXJXaXRoU2FtZUlkZW50aXR5
KCk7CisgICAgdm9pZCBzY3JvbGxSZWN1cnNpdmVseSgpOwogCiBwcml2YXRlOgogICAgIFFTdHJp
bmcgIGV2YWxKUyhjb25zdCBRU3RyaW5nJnMpIHsKQEAgLTI3OTUsNSArMjc5Niw2OSBAQCB2b2lk
IHRzdF9RV2ViRnJhbWU6OnFPYmplY3RXcmFwcGVyV2l0aFNhCiAgICAgUUNPTVBBUkUobWFpbkZy
YW1lLT50b1BsYWluVGV4dCgpLCBRU3RyaW5nKCJ0ZXN0MiIpKTsKIH0KIAordm9pZCB0c3RfUVdl
YkZyYW1lOjpzY3JvbGxSZWN1cnNpdmVseSgpCit7CisgICAgLy8gVGhlIHRlc3QgY29udGVudCBp
cyAKKyAgICAvLyBhIG5lc3RlZCBmcmFtZSBzZXQKKyAgICAvLyBUaGUgbWFpbiBmcmFtZSBzY3Jv
bGxzCisgICAgLy8gYW5kIGhhcyB0d28gY2hpbGRyZW4KKyAgICAvLyBhbiBpZnJhbWUgYW5kIGEg
ZGl2IG92ZXJmbG93CisgICAgLy8gYm90aCBzY3JvbGwKKyAgICBRV2ViVmlldyB3ZWJWaWV3Owor
ICAgIFFXZWJQYWdlKiB3ZWJQYWdlID0gd2ViVmlldy5wYWdlKCk7CisgICAgUVNpZ25hbFNweSBs
b2FkU3B5KHdlYlBhZ2UsIFNJR05BTChsb2FkRmluaXNoZWQoYm9vbCkpKTsKKyAgICBRVXJsIHVy
bCA9IFFVcmwoInFyYzovLy90ZXN0aWZyYW1lLmh0bWwiKTsKKyAgICB3ZWJQYWdlLT5tYWluRnJh
bWUoKS0+bG9hZCh1cmwpOworICAgIFFUUllfQ09NUEFSRShsb2FkU3B5LmNvdW50KCksIDEpOwor
CisgICAgUUxpc3Q8UVdlYkZyYW1lKj4gY2hpbGRyZW4gPSAgd2ViUGFnZS0+bWFpbkZyYW1lKCkt
PmNoaWxkRnJhbWVzKCk7CisgICAgUVZFUklGWShjaGlsZHJlbi5jb3VudCgpID09IDEpOworCisg
ICAgLy8gMXN0IHRlc3QKKyAgICAvLyBjYWxsIHNjcm9sbFJlY3Vyc2l2ZWx5IG92ZXIgbWFpbmZy
YW1lCisgICAgLy8gdmVyaWZ5IHNjcm9sbGVkCisgICAgLy8gdmVyaWZ5IHNjcm9sbCBwb3N0aW9u
IGNoYW5nZWQKKyAgICBRUG9pbnQgc2Nyb2xsUG9zaXRpb24od2ViUGFnZS0+bWFpbkZyYW1lKCkt
PnNjcm9sbFBvc2l0aW9uKCkpOworICAgIFFWRVJJRlkod2ViUGFnZS0+bWFpbkZyYW1lKCktPnNj
cm9sbFJlY3Vyc2l2ZWx5KDEwLDEwKSk7CisgICAgUVZFUklGWShzY3JvbGxQb3NpdGlvbiAhPSB3
ZWJQYWdlLT5tYWluRnJhbWUoKS0+c2Nyb2xsUG9zaXRpb24oKSk7CisKKyAgICAvLyAybmQgdGVz
dAorICAgIC8vIGNhbGwgc2Nyb2xsUmVjdXJzaXZlbHkgb3ZlciBjaGlsZCBpZnJhbWUKKyAgICAv
LyB2ZXJpZnkgc2Nyb2xsZWQKKyAgICAvLyB2ZXJpZnkgY2hpbGQgc2Nyb2xsIHBvc2l0aW9uIGNo
YW5nZWQKKyAgICAvLyB2ZXJpZnkgcGFyZW50J3Mgc2Nyb2xsIHBvc2l0aW9uIGRpZCBub3QgY2hh
bmdlCisgICAgc2Nyb2xsUG9zaXRpb24gPSB3ZWJQYWdlLT5tYWluRnJhbWUoKS0+c2Nyb2xsUG9z
aXRpb24oKTsKKyAgICBRUG9pbnQgY2hpbGRTY3JvbGxQb3NpdGlvbiA9IGNoaWxkcmVuLmF0KDAp
LT5zY3JvbGxQb3NpdGlvbigpOworICAgIFFWRVJJRlkoY2hpbGRyZW4uYXQoMCktPnNjcm9sbFJl
Y3Vyc2l2ZWx5KDEwLDEwKSk7CisgICAgUVZFUklGWShzY3JvbGxQb3NpdGlvbiA9PSB3ZWJQYWdl
LT5tYWluRnJhbWUoKS0+c2Nyb2xsUG9zaXRpb24oKSk7CisgICAgUVZFUklGWShjaGlsZFNjcm9s
bFBvc2l0aW9uICE9IGNoaWxkcmVuLmF0KDApLT5zY3JvbGxQb3NpdGlvbigpKTsKKworICAgIC8v
IDNyZCB0ZXN0CisgICAgLy8gY2FsbCBzY3JvbGxSZWN1cnNpdmVseSBvdmVyIGRpdiBvdmVyZmxv
dworICAgIC8vIHZlcmlmeSBzY3JvbGxlZCA9PSB0cnVlCisgICAgLy8gdmVyaWZ5IHBhcmVudCBh
bmQgY2hpbGQgZnJhbWUncyBzY3JvbGwgcG9zdGlvbiBkaWQgbm90IGNoYW5nZQorICAgIFFXZWJF
bGVtZW50IGRpdiA9IHdlYlBhZ2UtPm1haW5GcmFtZSgpLT5kb2N1bWVudEVsZW1lbnQoKS5maW5k
Rmlyc3QoIiNjb250ZW50MSIpOworICAgIFFNb3VzZUV2ZW50IGV2cHJlcyhRRXZlbnQ6Ok1vdXNl
TW92ZSwgZGl2Lmdlb21ldHJ5KCkuY2VudGVyKCksIFF0OjpOb0J1dHRvbiwgUXQ6Ok5vQnV0dG9u
LCBRdDo6Tm9Nb2RpZmllcik7CisgICAgd2ViUGFnZS0+ZXZlbnQoJmV2cHJlcyk7CisgICAgc2Ny
b2xsUG9zaXRpb24gPSB3ZWJQYWdlLT5tYWluRnJhbWUoKS0+c2Nyb2xsUG9zaXRpb24oKTsKKyAg
ICBjaGlsZFNjcm9sbFBvc2l0aW9uID0gY2hpbGRyZW4uYXQoMCktPnNjcm9sbFBvc2l0aW9uKCk7
CisgICAgUVZFUklGWSh3ZWJQYWdlLT5tYWluRnJhbWUoKS0+c2Nyb2xsUmVjdXJzaXZlbHkoNSw1
KSk7CisgICAgUVZFUklGWShjaGlsZFNjcm9sbFBvc2l0aW9uID09IGNoaWxkcmVuLmF0KDApLT5z
Y3JvbGxQb3NpdGlvbigpKTsKKyAgICBRVkVSSUZZKHNjcm9sbFBvc2l0aW9uID09IHdlYlBhZ2Ut
Pm1haW5GcmFtZSgpLT5zY3JvbGxQb3NpdGlvbigpKTsKKworICAgIC8vIDR0aCB0ZXN0CisgICAg
Ly8gY2FsbCBzY3JvbGxSZWN1cnNpdmVseSB0d2ljZSBvdmVyIGNoaWxkcyBpZnJhbWUKKyAgICAv
LyB2ZXJpZnkgc2Nyb2xsZWQgPT0gdHJ1ZSBmaXJzdCB0aW1lCisgICAgLy8gdmVyaWZ5IHBhcmVu
dCdzIHNjcm9sbCA9PSB0cnVlIHNlY29uZCB0aW1lCisgICAgLy8gdmVyaWZ5IHBhcmVudCBhbmQg
Y2hpbGRzIHNjcm9sbCBwb3NpdGlvbiBjaGFuZ2VkCisgICAgY2hpbGRTY3JvbGxQb3NpdGlvbiA9
IGNoaWxkcmVuLmF0KDApLT5zY3JvbGxQb3NpdGlvbigpOworICAgIFFWRVJJRlkoY2hpbGRyZW4u
YXQoMCktPnNjcm9sbFJlY3Vyc2l2ZWx5KC0xMCwtMTApKTsKKyAgICBRVkVSSUZZKGNoaWxkU2Ny
b2xsUG9zaXRpb24gIT0gY2hpbGRyZW4uYXQoMCktPnNjcm9sbFBvc2l0aW9uKCkpOworICAgIHNj
cm9sbFBvc2l0aW9uID0gd2ViUGFnZS0+bWFpbkZyYW1lKCktPnNjcm9sbFBvc2l0aW9uKCk7Cisg
ICAgUVZFUklGWShjaGlsZHJlbi5hdCgwKS0+c2Nyb2xsUmVjdXJzaXZlbHkoLTEwLC0xMCkpOwor
ICAgIFFWRVJJRlkoc2Nyb2xsUG9zaXRpb24gIT0gd2ViUGFnZS0+bWFpbkZyYW1lKCktPnNjcm9s
bFBvc2l0aW9uKCkpOworCit9CisKIFFURVNUX01BSU4odHN0X1FXZWJGcmFtZSkKICNpbmNsdWRl
ICJ0c3RfcXdlYmZyYW1lLm1vYyIK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45081</attachid>
            <date>2009-12-17 10:07:56 -0800</date>
            <delta_ts>2009-12-17 10:40:44 -0800</delta_ts>
            <desc> Patch to add new QWebFrame API scrollRecursively </desc>
            <filename>bug32668a.patch</filename>
            <type>text/plain</type>
            <size>12224</size>
            <attacher name="Joseph Ligman">joseph.ligman</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9xdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L0NoYW5n
ZUxvZwkocmV2aXNpb24gNTIyNTkpCisrKyBXZWJLaXQvcXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIwMDktMTItMTcgIEpvZSBMaWdtYW4gIDxqb3NlcGgubGln
bWFuQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBbUXRdIEFkZCBuZXcgQVBJIHRvIFFXZWJGcmFtZSB0byBzY3JvbGxSZWN1cnNpdmVs
eSBzdGFydGluZyB3aXRoIGFueSBjc3Mgb3ZlcmZsb3cgCisgICAgICAgIHRoZW4gY2hlY2tpbmcg
Y3VycmVudCBmcmFtZSBhbmQgdGhlbiBhbmNlc3RvcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMyNjY4CisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1l
LmNwcDoKKyAgICAgICAgKFFXZWJGcmFtZVByaXZhdGU6OnNjcm9sbE92ZXJmbG93KToKKyAgICAg
ICAgKFFXZWJGcmFtZTo6c2Nyb2xsUmVjdXJzaXZlbHkpOgorICAgICAgICAqIEFwaS9xd2ViZnJh
bWUuaDoKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lX3AuaDoKKyAgICAgICAgKiB0ZXN0cy9xd2Vi
ZnJhbWUvcXdlYmZyYW1lLnFyYzoKKyAgICAgICAgKiB0ZXN0cy9xd2ViZnJhbWUvdGVzdGlmcmFt
ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9xd2ViZnJhbWUvdGVzdGlmcmFtZTIuaHRt
bDogQWRkZWQuCisgICAgICAgICogdGVzdHMvcXdlYmZyYW1lL3RzdF9xd2ViZnJhbWUuY3BwOgor
CiAyMDA5LTEyLTE3ICBCZW5qYW1pbiBQb3VsYWluICA8YmVuamFtaW4ucG91bGFpbkBub2tpYS5j
b20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCkluZGV4OiBXZWJLaXQv
cXQvQXBpL3F3ZWJmcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L0FwaS9xd2ViZnJh
bWUuY3BwCShyZXZpc2lvbiA1MjI1OSkKKysrIFdlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzYxLDYgKzM2MSw0NSBAQCB2b2lkIFFXZWJGcmFtZVByaXZhdGU6
OnJlbmRlclJlbGF0aXZlQ29vCiAgICAgfQogfQogCitib29sIFFXZWJGcmFtZVByaXZhdGU6OnNj
cm9sbE92ZXJmbG93KGludCBkeCwgaW50IGR5KQoreworICAgIGlmICghZnJhbWUgfHwgIWZyYW1l
LT5kb2N1bWVudCgpIHx8ICFmcmFtZS0+ZXZlbnRIYW5kbGVyKCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIE5vZGUqIG5vZGUgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+Zm9jdXNlZE5vZGUo
KTsKKyAgICBpZiAoIW5vZGUpCisgICAgICAgIG5vZGUgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+ZWxl
bWVudEZyb21Qb2ludChmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmN1cnJlbnRNb3VzZVBvc2l0aW9u
KCkueCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+Y3VycmVudE1vdXNlUG9zaXRpb24oKS55KCkpOwor
ICAgIGlmICghbm9kZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgUmVuZGVyT2JqZWN0
KiByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7CisgICAgaWYgKCFyZW5kZXJlcikKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKHJlbmRlcmVyLT5pc0xpc3RCb3goKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgUmVuZGVyTGF5ZXIqIHJlbmRlckxheWVyID0gcmVuZGVy
ZXItPmVuY2xvc2luZ0xheWVyKCk7CisgICAgaWYgKCFyZW5kZXJMYXllcikKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgYm9vbCBzY3JvbGxlZEhvcml6b250YWwgPSBmYWxzZTsKKyAgICBi
b29sIHNjcm9sbGVkVmVydGljYWwgPSBmYWxzZTsKKworICAgIGlmIChkeCA+IDApCisgICAgICAg
IHNjcm9sbGVkSG9yaXpvbnRhbCA9IHJlbmRlckxheWVyLT5zY3JvbGwoU2Nyb2xsUmlnaHQsIFNj
cm9sbEJ5UGl4ZWwsIGR4KTsKKyAgICBlbHNlIGlmIChkeCA8IDApCisgICAgICAgIHNjcm9sbGVk
SG9yaXpvbnRhbCA9IHJlbmRlckxheWVyLT5zY3JvbGwoU2Nyb2xsTGVmdCwgU2Nyb2xsQnlQaXhl
bCwgcUFicyhkeCkpOworCisgICAgaWYgKGR5ID4gMCkKKyAgICAgICAgc2Nyb2xsZWRWZXJ0aWNh
bCA9IHJlbmRlckxheWVyLT5zY3JvbGwoU2Nyb2xsRG93biwgU2Nyb2xsQnlQaXhlbCwgZHkpOwor
ICAgIGVsc2UgaWYgKGR5IDwgMCkKKyAgICAgICAgc2Nyb2xsZWRWZXJ0aWNhbCA9IHJlbmRlckxh
eWVyLT5zY3JvbGwoU2Nyb2xsVXAsIFNjcm9sbEJ5UGl4ZWwsIHFBYnMoZHkpKTsKKworICAgIHJl
dHVybiAoc2Nyb2xsZWRIb3Jpem9udGFsIHx8IHNjcm9sbGVkVmVydGljYWwpOworfQorCiAvKiEK
ICAgICBcY2xhc3MgUVdlYkZyYW1lCiAgICAgXHNpbmNlIDQuNApAQCAtMTAwMCw2ICsxMDM5LDUw
IEBAIHZvaWQgUVdlYkZyYW1lOjpzY3JvbGwoaW50IGR4LCBpbnQgZHkpCiB9CiAKIC8qIQorICBc
c2luY2UgNC43CisgIFNjcm9sbHMgbmVzdGVkIGZyYW1lcyBzdGFydGluZyBhdCB0aGlzIGZyYW1l
LCBcYSBkeCBwaXhlbHMgdG8gdGhlIHJpZ2h0IAorICBhbmQgXGEgZHkgcGl4ZWxzIGRvd253YXJk
LiBCb3RoIFxhIGR4IGFuZCBcYSBkeSBtYXkgYmUgbmVnYXRpdmUuIEZpcnN0IGF0dGVtcHRzCisg
IHRvIHNjcm9sbCBlbGVtZW50cyB3aXRoIGNzcyBvdmVyZmxvdyBmb2xsb3dlZCBieSB0aGlzIGZy
YW1lLiBJZiB0aGlzIAorICBmcmFtZSBkb2Vzbid0IHNjcm9sbCwgYXR0ZW1wdHMgdG8gc2Nyb2xs
IHRoZSBwYXJlbnQKKworICBcc2EgUVdlYkZyYW1lOjpzY3JvbGwsIFFXZWJGcmFtZVByaXZhdGU6
OnNjcm9sbE92ZXJmbG93CisqLworYm9vbCBRV2ViRnJhbWU6OnNjcm9sbFJlY3Vyc2l2ZWx5KGlu
dCBkeCwgaW50IGR5KQoreworICAgIGJvb2wgc2Nyb2xsZWRIb3Jpem9udGFsID0gZmFsc2U7Cisg
ICAgYm9vbCBzY3JvbGxlZFZlcnRpY2FsID0gZmFsc2U7CisgICAgYm9vbCBzY3JvbGxlZE92ZXJm
bG93ID0gZC0+c2Nyb2xsT3ZlcmZsb3coZHgsIGR5KTsKKworICAgIGlmICghc2Nyb2xsZWRPdmVy
ZmxvdykgeworICAgICAgICBGcmFtZSogZnJhbWUgPSBkLT5mcmFtZTsKKyAgICAgICAgaWYgKCFm
cmFtZSB8fCAhZnJhbWUtPnZpZXcoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
ICAgICBkbyB7CisgICAgICAgICAgICBJbnRTaXplIHNjcm9sbE9mZnNldCA9IGZyYW1lLT52aWV3
KCktPnNjcm9sbE9mZnNldCgpOworICAgICAgICAgICAgSW50UG9pbnQgbWF4U2Nyb2xsT2Zmc2V0
ID0gZnJhbWUtPnZpZXcoKS0+bWF4aW11bVNjcm9sbFBvc2l0aW9uKCk7CisKKyAgICAgICAgICAg
IGlmIChkeCA+IDApIC8vIHNjcm9sbCByaWdodAorICAgICAgICAgICAgICAgIHNjcm9sbGVkSG9y
aXpvbnRhbCA9IHNjcm9sbE9mZnNldC53aWR0aCgpIDwgbWF4U2Nyb2xsT2Zmc2V0LngoKTsKKyAg
ICAgICAgICAgIGVsc2UgaWYgKGR4IDwgMCkgLy8gc2Nyb2xsIGxlZnQKKyAgICAgICAgICAgICAg
ICBzY3JvbGxlZEhvcml6b250YWwgPSBzY3JvbGxPZmZzZXQud2lkdGgoKSA+IDA7CisKKyAgICAg
ICAgICAgIGlmIChkeSA+IDApIC8vIHNjcm9sbCBkb3duCisgICAgICAgICAgICAgICAgc2Nyb2xs
ZWRWZXJ0aWNhbCA9IHNjcm9sbE9mZnNldC5oZWlnaHQoKSA8IG1heFNjcm9sbE9mZnNldC55KCk7
CisgICAgICAgICAgICBlbHNlIGlmIChkeSA8IDApIC8vc2Nyb2xsIHVwCisgICAgICAgICAgICAg
ICAgc2Nyb2xsZWRWZXJ0aWNhbCA9IHNjcm9sbE9mZnNldC5oZWlnaHQoKSA+IDA7CisKKyAgICAg
ICAgICAgIGlmIChzY3JvbGxlZEhvcml6b250YWwgfHwgc2Nyb2xsZWRWZXJ0aWNhbCkgeworICAg
ICAgICAgICAgICAgIGZyYW1lLT52aWV3KCktPnNjcm9sbEJ5KEludFNpemUoZHgsIGR5KSk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBm
cmFtZSA9IGZyYW1lLT50cmVlKCktPnBhcmVudCgpOyAKKyAgICAgICAgfSB3aGlsZSAoZnJhbWUg
JiYgZnJhbWUtPnZpZXcoKSk7CisgICAgfQorICAgIHJldHVybiAoc2Nyb2xsZWRIb3Jpem9udGFs
IHx8IHNjcm9sbGVkVmVydGljYWwgfHwgc2Nyb2xsZWRPdmVyZmxvdyk7Cit9CisKKy8qIQogICBc
cHJvcGVydHkgUVdlYkZyYW1lOjpzY3JvbGxQb3NpdGlvbgogICBcc2luY2UgNC41CiAgIFxicmll
ZiB0aGUgcG9zaXRpb24gdGhlIGZyYW1lIGlzIGN1cnJlbnRseSBzY3JvbGxlZCB0by4KSW5kZXg6
IFdlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L0FwaS9x
d2ViZnJhbWUuaAkocmV2aXNpb24gNTIyNTkpCisrKyBXZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xNTYsNiArMTU2LDcgQEAgcHVibGljOgogICAgIFFSZWN0IHNj
cm9sbEJhckdlb21ldHJ5KFF0OjpPcmllbnRhdGlvbiBvcmllbnRhdGlvbikgY29uc3Q7CiAKICAg
ICB2b2lkIHNjcm9sbChpbnQsIGludCk7CisgICAgYm9vbCBzY3JvbGxSZWN1cnNpdmVseShpbnQs
IGludCk7CiAgICAgUVBvaW50IHNjcm9sbFBvc2l0aW9uKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRT
Y3JvbGxQb3NpdGlvbihjb25zdCBRUG9pbnQgJnBvcyk7CiAKSW5kZXg6IFdlYktpdC9xdC9BcGkv
cXdlYmZyYW1lX3AuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZV9wLmgJ
KHJldmlzaW9uIDUyMjU5KQorKysgV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWVfcC5oCSh3b3JraW5n
IGNvcHkpCkBAIC04NSw2ICs4NSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbmRlclJlbGF0aXZl
Q29vcmRzKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCosIFFXZWJGcmFtZTo6UmVuZGVyTGF5ZXIs
IGNvbnN0IFFSZWdpb24mIGNsaXApOwogICAgIHZvaWQgcmVuZGVyQ29udGVudHNMYXllckFic29s
dXRlQ29vcmRzKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFFSZWdpb24mIGNsaXAp
OwogCisgICAgYm9vbCBzY3JvbGxPdmVyZmxvdyhpbnQgZHgsIGludCBkeSk7CisKICAgICBRV2Vi
RnJhbWUgKnE7CiAgICAgUXQ6OlNjcm9sbEJhclBvbGljeSBob3Jpem9udGFsU2Nyb2xsQmFyUG9s
aWN5OwogICAgIFF0OjpTY3JvbGxCYXJQb2xpY3kgdmVydGljYWxTY3JvbGxCYXJQb2xpY3k7Cklu
ZGV4OiBXZWJLaXQvcXQvdGVzdHMvcXdlYmZyYW1lL3F3ZWJmcmFtZS5xcmMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0L3F0L3Rlc3RzL3F3ZWJmcmFtZS9xd2ViZnJhbWUucXJjCShyZXZpc2lvbiA1MjI1
OSkKKysrIFdlYktpdC9xdC90ZXN0cy9xd2ViZnJhbWUvcXdlYmZyYW1lLnFyYwkod29ya2luZyBj
b3B5KQpAQCAtNCw1ICs0LDcgQEAKIDxmaWxlPnN0eWxlLmNzczwvZmlsZT4KIDxmaWxlPnRlc3Qx
Lmh0bWw8L2ZpbGU+CiA8ZmlsZT50ZXN0Mi5odG1sPC9maWxlPgorPGZpbGU+dGVzdGlmcmFtZS5o
dG1sPC9maWxlPgorPGZpbGU+dGVzdGlmcmFtZTIuaHRtbDwvZmlsZT4KIDwvcXJlc291cmNlPgog
PC9SQ0M+CkluZGV4OiBXZWJLaXQvcXQvdGVzdHMvcXdlYmZyYW1lL3Rlc3RpZnJhbWUyLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L3F0L3Rlc3RzL3F3ZWJmcmFtZS90ZXN0aWZyYW1lMi5odG1s
CShyZXZpc2lvbiAwKQorKysgV2ViS2l0L3F0L3Rlc3RzL3F3ZWJmcmFtZS90ZXN0aWZyYW1lMi5o
dG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIxIEBACis8L2h0bWw+DQorPGh0bWw+DQorPGhl
YWQ+DQorPHRpdGxlPjwvdGl0bGU+DQorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4NCis8IS0tDQor
I2NvbnRlbnQgew0KKyAgYmFja2dyb3VuZDogI2ZmZjsNCisgIHBvc2l0aW9uOiBhYnNvbHV0ZTsN
CisgIHRvcDogMHB4Ow0KKyAgbGVmdDogMHB4Ow0KKyAgd2lkdGg6IDgwMHB4Ow0KKyAgaGVpZ2h0
OiA4MDBweDsNCit9DQorLS0+DQorPC9zdHlsZT4NCis8L2hlYWQ+DQorPGJvZHk+DQorPGRpdiBp
ZD0iY29udGVudCI+IDwvZGl2Pg0KKzwvYm9keT4NCis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpJbmRleDogV2ViS2l0L3F0L3Rlc3RzL3F3ZWJmcmFtZS90ZXN0aWZyYW1lLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L3Rlc3RzL3F3ZWJmcmFtZS90ZXN0aWZyYW1lLmh0
bWwJKHJldmlzaW9uIDApCisrKyBXZWJLaXQvcXQvdGVzdHMvcXdlYmZyYW1lL3Rlc3RpZnJhbWUu
aHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NCBAQAorPC9odG1sPg0KKzxodG1sPg0KKzxo
ZWFkPg0KKzx0aXRsZT48L3RpdGxlPg0KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+DQorPCEtLQ0K
KyNoZWFkZXIgew0KKyAgYmFja2dyb3VuZDogIzBmMDsNCisgIHBvc2l0aW9uOiBhYnNvbHV0ZTsN
CisgIHRvcDogMHB4Ow0KKyAgbGVmdDogMHB4Ow0KKyAgd2lkdGg6IDgwMHB4Ow0KKyAgaGVpZ2h0
OiAxMDBweDsNCit9DQorI2NvbnRlbnQxIHsNCisgIGJhY2tncm91bmQ6ICNmZjA7DQorICBwb3Np
dGlvbjogYWJzb2x1dGU7DQorICB0b3A6IDEwMXB4Ow0KKyAgbGVmdDogMHB4Ow0KKyAgd2lkdGg6
IDQwMHB4Ow0KKyAgaGVpZ2h0OiA0MDBweDsNCisgIG92ZXJmbG93OiBzY3JvbGw7DQorfQ0KKyNj
b250ZW50MiB7DQorICBiYWNrZ3JvdW5kOiAjZmY3Ow0KKyAgcG9zaXRpb246IGFic29sdXRlOw0K
KyAgdG9wOiAxMDFweDsNCisgIGxlZnQ6IDQwMXB4Ow0KKyAgd2lkdGg6IDQwMHB4Ow0KKyAgaGVp
Z2h0OiA0MDBweDsNCit9DQorI2Zvb3RlciB7DQorICBiYWNrZ3JvdW5kOiAjMGYwOw0KKyAgcG9z
aXRpb246IGFic29sdXRlOw0KKyAgdG9wOiA1MDJweDsNCisgIGxlZnQ6IDBweDsNCisgIHdpZHRo
OiA4MDBweDsNCisgIGhlaWdodDogMjAwcHg7DQorfQ0KKy0tPg0KKzwvc3R5bGU+DQorPC9oZWFk
Pg0KKzxib2R5Pg0KKzxkaXYgaWQ9ImhlYWRlciI+PC9kaXY+DQorPGRpdiBpZD0iY29udGVudDEi
PllvdSBjYW4gdXNlIHRoZSBvdmVyZmxvdyBwcm9wZXJ0eSB3aGVuIHlvdSB3YW50IHRvIGhhdmUg
YmV0dGVyIGNvbnRyb2wgb2YgdGhlIGxheW91dC4gVHJ5IHRvIGNoYW5nZSB0aGUgb3ZlcmZsb3cg
cHJvcGVydHkgdG86IHZpc2libGUsIGhpZGRlbiwgYXV0bywgb3IgaW5oZXJpdCBhbmQgc2VlIHdo
YXQgaGFwcGVucy4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgdmlzaWJsZS4NCitZb3UgY2FuIHVzZSB0
aGUgb3ZlcmZsb3cgcHJvcGVydHkgd2hlbiB5b3Ugd2FudCB0byBoYXZlIGJldHRlciBjb250cm9s
IG9mIHRoZSBsYXlvdXQuIFRyeSB0byBjaGFuZ2UgdGhlIG92ZXJmbG93IHByb3BlcnR5IHRvOiB2
aXNpYmxlLCBoaWRkZW4sIGF1dG8sIG9yIGluaGVyaXQgYW5kIHNlZSB3aGF0IGhhcHBlbnMuIFRo
ZSBkZWZhdWx0IHZhbHVlIGlzIHZpc2libGUuDQorWW91IGNhbiB1c2UgdGhlIG92ZXJmbG93IHBy
b3BlcnR5IHdoZW4geW91IHdhbnQgdG8gaGF2ZSBiZXR0ZXIgY29udHJvbCBvZiB0aGUgbGF5b3V0
LiBUcnkgdG8gY2hhbmdlIHRoZSBvdmVyZmxvdyBwcm9wZXJ0eSB0bzogdmlzaWJsZSwgaGlkZGVu
LCBhdXRvLCBvciBpbmhlcml0IGFuZCBzZWUgd2hhdCBoYXBwZW5zLiBUaGUgZGVmYXVsdCB2YWx1
ZSBpcyB2aXNpYmxlLg0KK1lvdSBjYW4gdXNlIHRoZSBvdmVyZmxvdyBwcm9wZXJ0eSB3aGVuIHlv
dSB3YW50IHRvIGhhdmUgYmV0dGVyIGNvbnRyb2wgb2YgdGhlIGxheW91dC4gVHJ5IHRvIGNoYW5n
ZSB0aGUgb3ZlcmZsb3cgcHJvcGVydHkgdG86IHZpc2libGUsIGhpZGRlbiwgYXV0bywgb3IgaW5o
ZXJpdCBhbmQgc2VlIHdoYXQgaGFwcGVucy4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgdmlzaWJsZS4N
CitZb3UgY2FuIHVzZSB0aGUgb3ZlcmZsb3cgcHJvcGVydHkgd2hlbiB5b3Ugd2FudCB0byBoYXZl
IGJldHRlciBjb250cm9sIG9mIHRoZSBsYXlvdXQuIFRyeSB0byBjaGFuZ2UgdGhlIG92ZXJmbG93
IHByb3BlcnR5IHRvOiB2aXNpYmxlLCBoaWRkZW4sIGF1dG8sIG9yIGluaGVyaXQgYW5kIHNlZSB3
aGF0IGhhcHBlbnMuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIHZpc2libGUuDQorWW91IGNhbiB1c2Ug
dGhlIG92ZXJmbG93IHByb3BlcnR5IHdoZW4geW91IHdhbnQgdG8gaGF2ZSBiZXR0ZXIgY29udHJv
bCBvZiB0aGUgbGF5b3V0LiBUcnkgdG8gY2hhbmdlIHRoZSBvdmVyZmxvdyBwcm9wZXJ0eSB0bzog
dmlzaWJsZSwgaGlkZGVuLCBhdXRvLCBvciBpbmhlcml0IGFuZCBzZWUgd2hhdCBoYXBwZW5zLiBU
aGUgZGVmYXVsdCB2YWx1ZSBpcyB2aXNpYmxlLjwvZGl2Pg0KKzxpZnJhbWUgaWQ9ImNvbnRlbnQy
IiBuYW1lPSJjb250cm9sIiBzcmM9InRlc3RpZnJhbWUyLmh0bWwiPiA8L2lmcmFtZT4NCis8ZGl2
IGlkPSJmb290ZXIiPjwvZGl2Pg0KKzwvYm9keT4NCis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpJbmRleDogV2ViS2l0L3F0L3Rlc3RzL3F3ZWJmcmFtZS90c3RfcXdlYmZyYW1l
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvdGVzdHMvcXdlYmZyYW1lL3RzdF9xd2ViZnJh
bWUuY3BwCShyZXZpc2lvbiA1MjI1OSkKKysrIFdlYktpdC9xdC90ZXN0cy9xd2ViZnJhbWUvdHN0
X3F3ZWJmcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3Niw2ICs1NzYsNyBAQCBwcml2YXRl
IHNsb3RzOgogICAgIHZvaWQgc2Nyb2xsUG9zaXRpb24oKTsKICAgICB2b2lkIGV2YWx1YXRlV2ls
bENhdXNlUmVwYWludCgpOwogICAgIHZvaWQgcU9iamVjdFdyYXBwZXJXaXRoU2FtZUlkZW50aXR5
KCk7CisgICAgdm9pZCBzY3JvbGxSZWN1cnNpdmVseSgpOwogCiBwcml2YXRlOgogICAgIFFTdHJp
bmcgIGV2YWxKUyhjb25zdCBRU3RyaW5nJnMpIHsKQEAgLTI3OTUsNSArMjc5Niw2OSBAQCB2b2lk
IHRzdF9RV2ViRnJhbWU6OnFPYmplY3RXcmFwcGVyV2l0aFNhCiAgICAgUUNPTVBBUkUobWFpbkZy
YW1lLT50b1BsYWluVGV4dCgpLCBRU3RyaW5nKCJ0ZXN0MiIpKTsKIH0KIAordm9pZCB0c3RfUVdl
YkZyYW1lOjpzY3JvbGxSZWN1cnNpdmVseSgpCit7CisgICAgLy8gVGhlIHRlc3QgY29udGVudCBp
cyAKKyAgICAvLyBhIG5lc3RlZCBmcmFtZSBzZXQKKyAgICAvLyBUaGUgbWFpbiBmcmFtZSBzY3Jv
bGxzCisgICAgLy8gYW5kIGhhcyB0d28gY2hpbGRyZW4KKyAgICAvLyBhbiBpZnJhbWUgYW5kIGEg
ZGl2IG92ZXJmbG93CisgICAgLy8gYm90aCBzY3JvbGwKKyAgICBRV2ViVmlldyB3ZWJWaWV3Owor
ICAgIFFXZWJQYWdlKiB3ZWJQYWdlID0gd2ViVmlldy5wYWdlKCk7CisgICAgUVNpZ25hbFNweSBs
b2FkU3B5KHdlYlBhZ2UsIFNJR05BTChsb2FkRmluaXNoZWQoYm9vbCkpKTsKKyAgICBRVXJsIHVy
bCA9IFFVcmwoInFyYzovLy90ZXN0aWZyYW1lLmh0bWwiKTsKKyAgICB3ZWJQYWdlLT5tYWluRnJh
bWUoKS0+bG9hZCh1cmwpOworICAgIFFUUllfQ09NUEFSRShsb2FkU3B5LmNvdW50KCksIDEpOwor
CisgICAgUUxpc3Q8UVdlYkZyYW1lKj4gY2hpbGRyZW4gPSAgd2ViUGFnZS0+bWFpbkZyYW1lKCkt
PmNoaWxkRnJhbWVzKCk7CisgICAgUVZFUklGWShjaGlsZHJlbi5jb3VudCgpID09IDEpOworCisg
ICAgLy8gMXN0IHRlc3QKKyAgICAvLyBjYWxsIHNjcm9sbFJlY3Vyc2l2ZWx5IG92ZXIgbWFpbmZy
YW1lCisgICAgLy8gdmVyaWZ5IHNjcm9sbGVkCisgICAgLy8gdmVyaWZ5IHNjcm9sbCBwb3N0aW9u
IGNoYW5nZWQKKyAgICBRUG9pbnQgc2Nyb2xsUG9zaXRpb24od2ViUGFnZS0+bWFpbkZyYW1lKCkt
PnNjcm9sbFBvc2l0aW9uKCkpOworICAgIFFWRVJJRlkod2ViUGFnZS0+bWFpbkZyYW1lKCktPnNj
cm9sbFJlY3Vyc2l2ZWx5KDEwLCAxMCkpOworICAgIFFWRVJJRlkoc2Nyb2xsUG9zaXRpb24gIT0g
d2ViUGFnZS0+bWFpbkZyYW1lKCktPnNjcm9sbFBvc2l0aW9uKCkpOworCisgICAgLy8gMm5kIHRl
c3QKKyAgICAvLyBjYWxsIHNjcm9sbFJlY3Vyc2l2ZWx5IG92ZXIgY2hpbGQgaWZyYW1lCisgICAg
Ly8gdmVyaWZ5IHNjcm9sbGVkCisgICAgLy8gdmVyaWZ5IGNoaWxkIHNjcm9sbCBwb3NpdGlvbiBj
aGFuZ2VkCisgICAgLy8gdmVyaWZ5IHBhcmVudCdzIHNjcm9sbCBwb3NpdGlvbiBkaWQgbm90IGNo
YW5nZQorICAgIHNjcm9sbFBvc2l0aW9uID0gd2ViUGFnZS0+bWFpbkZyYW1lKCktPnNjcm9sbFBv
c2l0aW9uKCk7CisgICAgUVBvaW50IGNoaWxkU2Nyb2xsUG9zaXRpb24gPSBjaGlsZHJlbi5hdCgw
KS0+c2Nyb2xsUG9zaXRpb24oKTsKKyAgICBRVkVSSUZZKGNoaWxkcmVuLmF0KDApLT5zY3JvbGxS
ZWN1cnNpdmVseSgxMCwgMTApKTsKKyAgICBRVkVSSUZZKHNjcm9sbFBvc2l0aW9uID09IHdlYlBh
Z2UtPm1haW5GcmFtZSgpLT5zY3JvbGxQb3NpdGlvbigpKTsKKyAgICBRVkVSSUZZKGNoaWxkU2Ny
b2xsUG9zaXRpb24gIT0gY2hpbGRyZW4uYXQoMCktPnNjcm9sbFBvc2l0aW9uKCkpOworCisgICAg
Ly8gM3JkIHRlc3QKKyAgICAvLyBjYWxsIHNjcm9sbFJlY3Vyc2l2ZWx5IG92ZXIgZGl2IG92ZXJm
bG93CisgICAgLy8gdmVyaWZ5IHNjcm9sbGVkID09IHRydWUKKyAgICAvLyB2ZXJpZnkgcGFyZW50
IGFuZCBjaGlsZCBmcmFtZSdzIHNjcm9sbCBwb3N0aW9uIGRpZCBub3QgY2hhbmdlCisgICAgUVdl
YkVsZW1lbnQgZGl2ID0gd2ViUGFnZS0+bWFpbkZyYW1lKCktPmRvY3VtZW50RWxlbWVudCgpLmZp
bmRGaXJzdCgiI2NvbnRlbnQxIik7CisgICAgUU1vdXNlRXZlbnQgZXZwcmVzKFFFdmVudDo6TW91
c2VNb3ZlLCBkaXYuZ2VvbWV0cnkoKS5jZW50ZXIoKSwgUXQ6Ok5vQnV0dG9uLCBRdDo6Tm9CdXR0
b24sIFF0OjpOb01vZGlmaWVyKTsKKyAgICB3ZWJQYWdlLT5ldmVudCgmZXZwcmVzKTsKKyAgICBz
Y3JvbGxQb3NpdGlvbiA9IHdlYlBhZ2UtPm1haW5GcmFtZSgpLT5zY3JvbGxQb3NpdGlvbigpOwor
ICAgIGNoaWxkU2Nyb2xsUG9zaXRpb24gPSBjaGlsZHJlbi5hdCgwKS0+c2Nyb2xsUG9zaXRpb24o
KTsKKyAgICBRVkVSSUZZKHdlYlBhZ2UtPm1haW5GcmFtZSgpLT5zY3JvbGxSZWN1cnNpdmVseSg1
LCA1KSk7CisgICAgUVZFUklGWShjaGlsZFNjcm9sbFBvc2l0aW9uID09IGNoaWxkcmVuLmF0KDAp
LT5zY3JvbGxQb3NpdGlvbigpKTsKKyAgICBRVkVSSUZZKHNjcm9sbFBvc2l0aW9uID09IHdlYlBh
Z2UtPm1haW5GcmFtZSgpLT5zY3JvbGxQb3NpdGlvbigpKTsKKworICAgIC8vIDR0aCB0ZXN0Cisg
ICAgLy8gY2FsbCBzY3JvbGxSZWN1cnNpdmVseSB0d2ljZSBvdmVyIGNoaWxkcyBpZnJhbWUKKyAg
ICAvLyB2ZXJpZnkgc2Nyb2xsZWQgPT0gdHJ1ZSBmaXJzdCB0aW1lCisgICAgLy8gdmVyaWZ5IHBh
cmVudCdzIHNjcm9sbCA9PSB0cnVlIHNlY29uZCB0aW1lCisgICAgLy8gdmVyaWZ5IHBhcmVudCBh
bmQgY2hpbGRzIHNjcm9sbCBwb3NpdGlvbiBjaGFuZ2VkCisgICAgY2hpbGRTY3JvbGxQb3NpdGlv
biA9IGNoaWxkcmVuLmF0KDApLT5zY3JvbGxQb3NpdGlvbigpOworICAgIFFWRVJJRlkoY2hpbGRy
ZW4uYXQoMCktPnNjcm9sbFJlY3Vyc2l2ZWx5KC0xMCwgLTEwKSk7CisgICAgUVZFUklGWShjaGls
ZFNjcm9sbFBvc2l0aW9uICE9IGNoaWxkcmVuLmF0KDApLT5zY3JvbGxQb3NpdGlvbigpKTsKKyAg
ICBzY3JvbGxQb3NpdGlvbiA9IHdlYlBhZ2UtPm1haW5GcmFtZSgpLT5zY3JvbGxQb3NpdGlvbigp
OworICAgIFFWRVJJRlkoY2hpbGRyZW4uYXQoMCktPnNjcm9sbFJlY3Vyc2l2ZWx5KC0xMCwgLTEw
KSk7CisgICAgUVZFUklGWShzY3JvbGxQb3NpdGlvbiAhPSB3ZWJQYWdlLT5tYWluRnJhbWUoKS0+
c2Nyb2xsUG9zaXRpb24oKSk7CisKK30KKwogUVRFU1RfTUFJTih0c3RfUVdlYkZyYW1lKQogI2lu
Y2x1ZGUgInRzdF9xd2ViZnJhbWUubW9jIgo=
</data>
<flag name="review"
          id="27056"
          type_id="1"
          status="-"
          setter="kenneth"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45086</attachid>
            <date>2009-12-17 10:40:44 -0800</date>
            <delta_ts>2010-01-11 07:36:42 -0800</delta_ts>
            <desc>Patch to add new QWebFrame API scrollRecursively</desc>
            <filename>bug32668b.patch</filename>
            <type>text/plain</type>
            <size>12189</size>
            <attacher name="Joseph Ligman">joseph.ligman</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9xdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L0NoYW5n
ZUxvZwkocmV2aXNpb24gNTIyNjApCisrKyBXZWJLaXQvcXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIwMDktMTItMTcgIEpvZSBMaWdtYW4gIDxqb3NlcGgubGln
bWFuQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBbUXRdIEFkZCBuZXcgQVBJIHRvIFFXZWJGcmFtZSB0byBzY3JvbGxSZWN1cnNpdmVs
eSBzdGFydGluZyB3aXRoIGFueSBjc3Mgb3ZlcmZsb3cgCisgICAgICAgIHRoZW4gY2hlY2tpbmcg
Y3VycmVudCBmcmFtZSBhbmQgdGhlbiBhbmNlc3RvcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMyNjY4CisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1l
LmNwcDoKKyAgICAgICAgKFFXZWJGcmFtZVByaXZhdGU6OnNjcm9sbE92ZXJmbG93KToKKyAgICAg
ICAgKFFXZWJGcmFtZTo6c2Nyb2xsUmVjdXJzaXZlbHkpOgorICAgICAgICAqIEFwaS9xd2ViZnJh
bWUuaDoKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lX3AuaDoKKyAgICAgICAgKiB0ZXN0cy9xd2Vi
ZnJhbWUvcXdlYmZyYW1lLnFyYzoKKyAgICAgICAgKiB0ZXN0cy9xd2ViZnJhbWUvdGVzdGlmcmFt
ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9xd2ViZnJhbWUvdGVzdGlmcmFtZTIuaHRt
bDogQWRkZWQuCisgICAgICAgICogdGVzdHMvcXdlYmZyYW1lL3RzdF9xd2ViZnJhbWUuY3BwOgor
CiAyMDA5LTEyLTE3ICBCZW5qYW1pbiBQb3VsYWluICA8YmVuamFtaW4ucG91bGFpbkBub2tpYS5j
b20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCkluZGV4OiBXZWJLaXQv
cXQvQXBpL3F3ZWJmcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L0FwaS9xd2ViZnJh
bWUuY3BwCShyZXZpc2lvbiA1MjI2MCkKKysrIFdlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzYxLDYgKzM2MSw0NSBAQCB2b2lkIFFXZWJGcmFtZVByaXZhdGU6
OnJlbmRlclJlbGF0aXZlQ29vCiAgICAgfQogfQogCitib29sIFFXZWJGcmFtZVByaXZhdGU6OnNj
cm9sbE92ZXJmbG93KGludCBkeCwgaW50IGR5KQoreworICAgIGlmICghZnJhbWUgfHwgIWZyYW1l
LT5kb2N1bWVudCgpIHx8ICFmcmFtZS0+ZXZlbnRIYW5kbGVyKCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIE5vZGUqIG5vZGUgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+Zm9jdXNlZE5vZGUo
KTsKKyAgICBpZiAoIW5vZGUpCisgICAgICAgIG5vZGUgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+ZWxl
bWVudEZyb21Qb2ludChmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmN1cnJlbnRNb3VzZVBvc2l0aW9u
KCkueCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5jdXJyZW50TW91c2VQb3NpdGlvbigpLnkoKSk7Cisg
ICAgaWYgKCFub2RlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBSZW5kZXJPYmplY3Qq
IHJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKTsKKyAgICBpZiAoIXJlbmRlcmVyKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAocmVuZGVyZXItPmlzTGlzdEJveCgpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBSZW5kZXJMYXllciogcmVuZGVyTGF5ZXIgPSByZW5kZXJl
ci0+ZW5jbG9zaW5nTGF5ZXIoKTsKKyAgICBpZiAoIXJlbmRlckxheWVyKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBib29sIHNjcm9sbGVkSG9yaXpvbnRhbCA9IGZhbHNlOworICAgIGJv
b2wgc2Nyb2xsZWRWZXJ0aWNhbCA9IGZhbHNlOworCisgICAgaWYgKGR4ID4gMCkKKyAgICAgICAg
c2Nyb2xsZWRIb3Jpem9udGFsID0gcmVuZGVyTGF5ZXItPnNjcm9sbChTY3JvbGxSaWdodCwgU2Ny
b2xsQnlQaXhlbCwgZHgpOworICAgIGVsc2UgaWYgKGR4IDwgMCkKKyAgICAgICAgc2Nyb2xsZWRI
b3Jpem9udGFsID0gcmVuZGVyTGF5ZXItPnNjcm9sbChTY3JvbGxMZWZ0LCBTY3JvbGxCeVBpeGVs
LCBxQWJzKGR4KSk7CisKKyAgICBpZiAoZHkgPiAwKQorICAgICAgICBzY3JvbGxlZFZlcnRpY2Fs
ID0gcmVuZGVyTGF5ZXItPnNjcm9sbChTY3JvbGxEb3duLCBTY3JvbGxCeVBpeGVsLCBkeSk7Cisg
ICAgZWxzZSBpZiAoZHkgPCAwKQorICAgICAgICBzY3JvbGxlZFZlcnRpY2FsID0gcmVuZGVyTGF5
ZXItPnNjcm9sbChTY3JvbGxVcCwgU2Nyb2xsQnlQaXhlbCwgcUFicyhkeSkpOworCisgICAgcmV0
dXJuIChzY3JvbGxlZEhvcml6b250YWwgfHwgc2Nyb2xsZWRWZXJ0aWNhbCk7Cit9CisKIC8qIQog
ICAgIFxjbGFzcyBRV2ViRnJhbWUKICAgICBcc2luY2UgNC40CkBAIC0xMDAwLDYgKzEwMzksNTAg
QEAgdm9pZCBRV2ViRnJhbWU6OnNjcm9sbChpbnQgZHgsIGludCBkeSkKIH0KIAogLyohCisgIFxz
aW5jZSA0LjcKKyAgU2Nyb2xscyBuZXN0ZWQgZnJhbWVzIHN0YXJ0aW5nIGF0IHRoaXMgZnJhbWUs
IFxhIGR4IHBpeGVscyB0byB0aGUgcmlnaHQgCisgIGFuZCBcYSBkeSBwaXhlbHMgZG93bndhcmQu
IEJvdGggXGEgZHggYW5kIFxhIGR5IG1heSBiZSBuZWdhdGl2ZS4gRmlyc3QgYXR0ZW1wdHMKKyAg
dG8gc2Nyb2xsIGVsZW1lbnRzIHdpdGggQ1NTIG92ZXJmbG93IGZvbGxvd2VkIGJ5IHRoaXMgZnJh
bWUuIElmIHRoaXMgCisgIGZyYW1lIGRvZXNuJ3Qgc2Nyb2xsLCBhdHRlbXB0cyB0byBzY3JvbGwg
dGhlIHBhcmVudAorCisgIFxzYSBRV2ViRnJhbWU6OnNjcm9sbAorKi8KK2Jvb2wgUVdlYkZyYW1l
OjpzY3JvbGxSZWN1cnNpdmVseShpbnQgZHgsIGludCBkeSkKK3sKKyAgICBib29sIHNjcm9sbGVk
SG9yaXpvbnRhbCA9IGZhbHNlOworICAgIGJvb2wgc2Nyb2xsZWRWZXJ0aWNhbCA9IGZhbHNlOwor
ICAgIGJvb2wgc2Nyb2xsZWRPdmVyZmxvdyA9IGQtPnNjcm9sbE92ZXJmbG93KGR4LCBkeSk7CisK
KyAgICBpZiAoIXNjcm9sbGVkT3ZlcmZsb3cpIHsKKyAgICAgICAgRnJhbWUqIGZyYW1lID0gZC0+
ZnJhbWU7CisgICAgICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT52aWV3KCkpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgZG8geworICAgICAgICAgICAgSW50U2l6ZSBzY3Jv
bGxPZmZzZXQgPSBmcmFtZS0+dmlldygpLT5zY3JvbGxPZmZzZXQoKTsKKyAgICAgICAgICAgIElu
dFBvaW50IG1heFNjcm9sbE9mZnNldCA9IGZyYW1lLT52aWV3KCktPm1heGltdW1TY3JvbGxQb3Np
dGlvbigpOworCisgICAgICAgICAgICBpZiAoZHggPiAwKSAvLyBzY3JvbGwgcmlnaHQKKyAgICAg
ICAgICAgICAgICBzY3JvbGxlZEhvcml6b250YWwgPSBzY3JvbGxPZmZzZXQud2lkdGgoKSA8IG1h
eFNjcm9sbE9mZnNldC54KCk7CisgICAgICAgICAgICBlbHNlIGlmIChkeCA8IDApIC8vIHNjcm9s
bCBsZWZ0CisgICAgICAgICAgICAgICAgc2Nyb2xsZWRIb3Jpem9udGFsID0gc2Nyb2xsT2Zmc2V0
LndpZHRoKCkgPiAwOworCisgICAgICAgICAgICBpZiAoZHkgPiAwKSAvLyBzY3JvbGwgZG93bgor
ICAgICAgICAgICAgICAgIHNjcm9sbGVkVmVydGljYWwgPSBzY3JvbGxPZmZzZXQuaGVpZ2h0KCkg
PCBtYXhTY3JvbGxPZmZzZXQueSgpOworICAgICAgICAgICAgZWxzZSBpZiAoZHkgPCAwKSAvL3Nj
cm9sbCB1cAorICAgICAgICAgICAgICAgIHNjcm9sbGVkVmVydGljYWwgPSBzY3JvbGxPZmZzZXQu
aGVpZ2h0KCkgPiAwOworCisgICAgICAgICAgICBpZiAoc2Nyb2xsZWRIb3Jpem9udGFsIHx8IHNj
cm9sbGVkVmVydGljYWwpIHsKKyAgICAgICAgICAgICAgICBmcmFtZS0+dmlldygpLT5zY3JvbGxC
eShJbnRTaXplKGR4LCBkeSkpOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT5wYXJlbnQoKTsgCisg
ICAgICAgIH0gd2hpbGUgKGZyYW1lICYmIGZyYW1lLT52aWV3KCkpOworICAgIH0KKyAgICByZXR1
cm4gKHNjcm9sbGVkSG9yaXpvbnRhbCB8fCBzY3JvbGxlZFZlcnRpY2FsIHx8IHNjcm9sbGVkT3Zl
cmZsb3cpOworfQorCisvKiEKICAgXHByb3BlcnR5IFFXZWJGcmFtZTo6c2Nyb2xsUG9zaXRpb24K
ICAgXHNpbmNlIDQuNQogICBcYnJpZWYgdGhlIHBvc2l0aW9uIHRoZSBmcmFtZSBpcyBjdXJyZW50
bHkgc2Nyb2xsZWQgdG8uCkluZGV4OiBXZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmgJKHJldmlzaW9uIDUyMjYwKQorKysgV2Vi
S2l0L3F0L0FwaS9xd2ViZnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMTU2LDYgKzE1Niw3IEBA
IHB1YmxpYzoKICAgICBRUmVjdCBzY3JvbGxCYXJHZW9tZXRyeShRdDo6T3JpZW50YXRpb24gb3Jp
ZW50YXRpb24pIGNvbnN0OwogCiAgICAgdm9pZCBzY3JvbGwoaW50LCBpbnQpOworICAgIGJvb2wg
c2Nyb2xsUmVjdXJzaXZlbHkoaW50LCBpbnQpOwogICAgIFFQb2ludCBzY3JvbGxQb3NpdGlvbigp
IGNvbnN0OwogICAgIHZvaWQgc2V0U2Nyb2xsUG9zaXRpb24oY29uc3QgUVBvaW50ICZwb3MpOwog
CkluZGV4OiBXZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZV9wLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
L3F0L0FwaS9xd2ViZnJhbWVfcC5oCShyZXZpc2lvbiA1MjI2MCkKKysrIFdlYktpdC9xdC9BcGkv
cXdlYmZyYW1lX3AuaAkod29ya2luZyBjb3B5KQpAQCAtODUsNiArODUsOCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCByZW5kZXJSZWxhdGl2ZUNvb3JkcyhXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQqLCBR
V2ViRnJhbWU6OlJlbmRlckxheWVyLCBjb25zdCBRUmVnaW9uJiBjbGlwKTsKICAgICB2b2lkIHJl
bmRlckNvbnRlbnRzTGF5ZXJBYnNvbHV0ZUNvb3JkcyhXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQq
LCBjb25zdCBRUmVnaW9uJiBjbGlwKTsKIAorICAgIGJvb2wgc2Nyb2xsT3ZlcmZsb3coaW50IGR4
LCBpbnQgZHkpOworCiAgICAgUVdlYkZyYW1lICpxOwogICAgIFF0OjpTY3JvbGxCYXJQb2xpY3kg
aG9yaXpvbnRhbFNjcm9sbEJhclBvbGljeTsKICAgICBRdDo6U2Nyb2xsQmFyUG9saWN5IHZlcnRp
Y2FsU2Nyb2xsQmFyUG9saWN5OwpJbmRleDogV2ViS2l0L3F0L3Rlc3RzL3F3ZWJmcmFtZS9xd2Vi
ZnJhbWUucXJjCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC90ZXN0cy9xd2ViZnJhbWUvcXdlYmZy
YW1lLnFyYwkocmV2aXNpb24gNTIyNjApCisrKyBXZWJLaXQvcXQvdGVzdHMvcXdlYmZyYW1lL3F3
ZWJmcmFtZS5xcmMJKHdvcmtpbmcgY29weSkKQEAgLTQsNSArNCw3IEBACiA8ZmlsZT5zdHlsZS5j
c3M8L2ZpbGU+CiA8ZmlsZT50ZXN0MS5odG1sPC9maWxlPgogPGZpbGU+dGVzdDIuaHRtbDwvZmls
ZT4KKzxmaWxlPnRlc3RpZnJhbWUuaHRtbDwvZmlsZT4KKzxmaWxlPnRlc3RpZnJhbWUyLmh0bWw8
L2ZpbGU+CiA8L3FyZXNvdXJjZT4KIDwvUkNDPgpJbmRleDogV2ViS2l0L3F0L3Rlc3RzL3F3ZWJm
cmFtZS90ZXN0aWZyYW1lMi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC90ZXN0cy9xd2Vi
ZnJhbWUvdGVzdGlmcmFtZTIuaHRtbAkocmV2aXNpb24gMCkKKysrIFdlYktpdC9xdC90ZXN0cy9x
d2ViZnJhbWUvdGVzdGlmcmFtZTIuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMSBAQAor
PC9odG1sPg0KKzxodG1sPg0KKzxoZWFkPg0KKzx0aXRsZT48L3RpdGxlPg0KKzxzdHlsZSB0eXBl
PSJ0ZXh0L2NzcyI+DQorPCEtLQ0KKyNjb250ZW50IHsNCisgIGJhY2tncm91bmQ6ICNmZmY7DQor
ICBwb3NpdGlvbjogYWJzb2x1dGU7DQorICB0b3A6IDBweDsNCisgIGxlZnQ6IDBweDsNCisgIHdp
ZHRoOiA4MDBweDsNCisgIGhlaWdodDogODAwcHg7DQorfQ0KKy0tPg0KKzwvc3R5bGU+DQorPC9o
ZWFkPg0KKzxib2R5Pg0KKzxkaXYgaWQ9ImNvbnRlbnQiPiA8L2Rpdj4NCis8L2JvZHk+DQorPC9o
dG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IFdlYktpdC9xdC90ZXN0cy9x
d2ViZnJhbWUvdGVzdGlmcmFtZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC90ZXN0cy9x
d2ViZnJhbWUvdGVzdGlmcmFtZS5odG1sCShyZXZpc2lvbiAwKQorKysgV2ViS2l0L3F0L3Rlc3Rz
L3F3ZWJmcmFtZS90ZXN0aWZyYW1lLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTQgQEAK
KzwvaHRtbD4NCis8aHRtbD4NCis8aGVhZD4NCis8dGl0bGU+PC90aXRsZT4NCis8c3R5bGUgdHlw
ZT0idGV4dC9jc3MiPg0KKzwhLS0NCisjaGVhZGVyIHsNCisgIGJhY2tncm91bmQ6ICMwZjA7DQor
ICBwb3NpdGlvbjogYWJzb2x1dGU7DQorICB0b3A6IDBweDsNCisgIGxlZnQ6IDBweDsNCisgIHdp
ZHRoOiA4MDBweDsNCisgIGhlaWdodDogMTAwcHg7DQorfQ0KKyNjb250ZW50MSB7DQorICBiYWNr
Z3JvdW5kOiAjZmYwOw0KKyAgcG9zaXRpb246IGFic29sdXRlOw0KKyAgdG9wOiAxMDFweDsNCisg
IGxlZnQ6IDBweDsNCisgIHdpZHRoOiA0MDBweDsNCisgIGhlaWdodDogNDAwcHg7DQorICBvdmVy
Zmxvdzogc2Nyb2xsOw0KK30NCisjY29udGVudDIgew0KKyAgYmFja2dyb3VuZDogI2ZmNzsNCisg
IHBvc2l0aW9uOiBhYnNvbHV0ZTsNCisgIHRvcDogMTAxcHg7DQorICBsZWZ0OiA0MDFweDsNCisg
IHdpZHRoOiA0MDBweDsNCisgIGhlaWdodDogNDAwcHg7DQorfQ0KKyNmb290ZXIgew0KKyAgYmFj
a2dyb3VuZDogIzBmMDsNCisgIHBvc2l0aW9uOiBhYnNvbHV0ZTsNCisgIHRvcDogNTAycHg7DQor
ICBsZWZ0OiAwcHg7DQorICB3aWR0aDogODAwcHg7DQorICBoZWlnaHQ6IDIwMHB4Ow0KK30NCist
LT4NCis8L3N0eWxlPg0KKzwvaGVhZD4NCis8Ym9keT4NCis8ZGl2IGlkPSJoZWFkZXIiPjwvZGl2
Pg0KKzxkaXYgaWQ9ImNvbnRlbnQxIj5Zb3UgY2FuIHVzZSB0aGUgb3ZlcmZsb3cgcHJvcGVydHkg
d2hlbiB5b3Ugd2FudCB0byBoYXZlIGJldHRlciBjb250cm9sIG9mIHRoZSBsYXlvdXQuIFRyeSB0
byBjaGFuZ2UgdGhlIG92ZXJmbG93IHByb3BlcnR5IHRvOiB2aXNpYmxlLCBoaWRkZW4sIGF1dG8s
IG9yIGluaGVyaXQgYW5kIHNlZSB3aGF0IGhhcHBlbnMuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIHZp
c2libGUuDQorWW91IGNhbiB1c2UgdGhlIG92ZXJmbG93IHByb3BlcnR5IHdoZW4geW91IHdhbnQg
dG8gaGF2ZSBiZXR0ZXIgY29udHJvbCBvZiB0aGUgbGF5b3V0LiBUcnkgdG8gY2hhbmdlIHRoZSBv
dmVyZmxvdyBwcm9wZXJ0eSB0bzogdmlzaWJsZSwgaGlkZGVuLCBhdXRvLCBvciBpbmhlcml0IGFu
ZCBzZWUgd2hhdCBoYXBwZW5zLiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyB2aXNpYmxlLg0KK1lvdSBj
YW4gdXNlIHRoZSBvdmVyZmxvdyBwcm9wZXJ0eSB3aGVuIHlvdSB3YW50IHRvIGhhdmUgYmV0dGVy
IGNvbnRyb2wgb2YgdGhlIGxheW91dC4gVHJ5IHRvIGNoYW5nZSB0aGUgb3ZlcmZsb3cgcHJvcGVy
dHkgdG86IHZpc2libGUsIGhpZGRlbiwgYXV0bywgb3IgaW5oZXJpdCBhbmQgc2VlIHdoYXQgaGFw
cGVucy4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgdmlzaWJsZS4NCitZb3UgY2FuIHVzZSB0aGUgb3Zl
cmZsb3cgcHJvcGVydHkgd2hlbiB5b3Ugd2FudCB0byBoYXZlIGJldHRlciBjb250cm9sIG9mIHRo
ZSBsYXlvdXQuIFRyeSB0byBjaGFuZ2UgdGhlIG92ZXJmbG93IHByb3BlcnR5IHRvOiB2aXNpYmxl
LCBoaWRkZW4sIGF1dG8sIG9yIGluaGVyaXQgYW5kIHNlZSB3aGF0IGhhcHBlbnMuIFRoZSBkZWZh
dWx0IHZhbHVlIGlzIHZpc2libGUuDQorWW91IGNhbiB1c2UgdGhlIG92ZXJmbG93IHByb3BlcnR5
IHdoZW4geW91IHdhbnQgdG8gaGF2ZSBiZXR0ZXIgY29udHJvbCBvZiB0aGUgbGF5b3V0LiBUcnkg
dG8gY2hhbmdlIHRoZSBvdmVyZmxvdyBwcm9wZXJ0eSB0bzogdmlzaWJsZSwgaGlkZGVuLCBhdXRv
LCBvciBpbmhlcml0IGFuZCBzZWUgd2hhdCBoYXBwZW5zLiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyB2
aXNpYmxlLg0KK1lvdSBjYW4gdXNlIHRoZSBvdmVyZmxvdyBwcm9wZXJ0eSB3aGVuIHlvdSB3YW50
IHRvIGhhdmUgYmV0dGVyIGNvbnRyb2wgb2YgdGhlIGxheW91dC4gVHJ5IHRvIGNoYW5nZSB0aGUg
b3ZlcmZsb3cgcHJvcGVydHkgdG86IHZpc2libGUsIGhpZGRlbiwgYXV0bywgb3IgaW5oZXJpdCBh
bmQgc2VlIHdoYXQgaGFwcGVucy4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgdmlzaWJsZS48L2Rpdj4N
Cis8aWZyYW1lIGlkPSJjb250ZW50MiIgbmFtZT0iY29udHJvbCIgc3JjPSJ0ZXN0aWZyYW1lMi5o
dG1sIj4gPC9pZnJhbWU+DQorPGRpdiBpZD0iZm9vdGVyIj48L2Rpdj4NCis8L2JvZHk+DQorPC9o
dG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IFdlYktpdC9xdC90ZXN0cy9x
d2ViZnJhbWUvdHN0X3F3ZWJmcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L3Rlc3Rz
L3F3ZWJmcmFtZS90c3RfcXdlYmZyYW1lLmNwcAkocmV2aXNpb24gNTIyNjApCisrKyBXZWJLaXQv
cXQvdGVzdHMvcXdlYmZyYW1lL3RzdF9xd2ViZnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
NzYsNiArNTc2LDcgQEAgcHJpdmF0ZSBzbG90czoKICAgICB2b2lkIHNjcm9sbFBvc2l0aW9uKCk7
CiAgICAgdm9pZCBldmFsdWF0ZVdpbGxDYXVzZVJlcGFpbnQoKTsKICAgICB2b2lkIHFPYmplY3RX
cmFwcGVyV2l0aFNhbWVJZGVudGl0eSgpOworICAgIHZvaWQgc2Nyb2xsUmVjdXJzaXZlbHkoKTsK
IAogcHJpdmF0ZToKICAgICBRU3RyaW5nICBldmFsSlMoY29uc3QgUVN0cmluZyZzKSB7CkBAIC0y
Nzk1LDUgKzI3OTYsNjkgQEAgdm9pZCB0c3RfUVdlYkZyYW1lOjpxT2JqZWN0V3JhcHBlcldpdGhT
YQogICAgIFFDT01QQVJFKG1haW5GcmFtZS0+dG9QbGFpblRleHQoKSwgUVN0cmluZygidGVzdDIi
KSk7CiB9CiAKK3ZvaWQgdHN0X1FXZWJGcmFtZTo6c2Nyb2xsUmVjdXJzaXZlbHkoKQoreworICAg
IC8vIFRoZSB0ZXN0IGNvbnRlbnQgaXMgCisgICAgLy8gYSBuZXN0ZWQgZnJhbWUgc2V0CisgICAg
Ly8gVGhlIG1haW4gZnJhbWUgc2Nyb2xscworICAgIC8vIGFuZCBoYXMgdHdvIGNoaWxkcmVuCisg
ICAgLy8gYW4gaWZyYW1lIGFuZCBhIGRpdiBvdmVyZmxvdworICAgIC8vIGJvdGggc2Nyb2xsCisg
ICAgUVdlYlZpZXcgd2ViVmlldzsKKyAgICBRV2ViUGFnZSogd2ViUGFnZSA9IHdlYlZpZXcucGFn
ZSgpOworICAgIFFTaWduYWxTcHkgbG9hZFNweSh3ZWJQYWdlLCBTSUdOQUwobG9hZEZpbmlzaGVk
KGJvb2wpKSk7CisgICAgUVVybCB1cmwgPSBRVXJsKCJxcmM6Ly8vdGVzdGlmcmFtZS5odG1sIik7
CisgICAgd2ViUGFnZS0+bWFpbkZyYW1lKCktPmxvYWQodXJsKTsKKyAgICBRVFJZX0NPTVBBUkUo
bG9hZFNweS5jb3VudCgpLCAxKTsKKworICAgIFFMaXN0PFFXZWJGcmFtZSo+IGNoaWxkcmVuID0g
IHdlYlBhZ2UtPm1haW5GcmFtZSgpLT5jaGlsZEZyYW1lcygpOworICAgIFFWRVJJRlkoY2hpbGRy
ZW4uY291bnQoKSA9PSAxKTsKKworICAgIC8vIDFzdCB0ZXN0CisgICAgLy8gY2FsbCBzY3JvbGxS
ZWN1cnNpdmVseSBvdmVyIG1haW5mcmFtZQorICAgIC8vIHZlcmlmeSBzY3JvbGxlZAorICAgIC8v
IHZlcmlmeSBzY3JvbGwgcG9zdGlvbiBjaGFuZ2VkCisgICAgUVBvaW50IHNjcm9sbFBvc2l0aW9u
KHdlYlBhZ2UtPm1haW5GcmFtZSgpLT5zY3JvbGxQb3NpdGlvbigpKTsKKyAgICBRVkVSSUZZKHdl
YlBhZ2UtPm1haW5GcmFtZSgpLT5zY3JvbGxSZWN1cnNpdmVseSgxMCwgMTApKTsKKyAgICBRVkVS
SUZZKHNjcm9sbFBvc2l0aW9uICE9IHdlYlBhZ2UtPm1haW5GcmFtZSgpLT5zY3JvbGxQb3NpdGlv
bigpKTsKKworICAgIC8vIDJuZCB0ZXN0CisgICAgLy8gY2FsbCBzY3JvbGxSZWN1cnNpdmVseSBv
dmVyIGNoaWxkIGlmcmFtZQorICAgIC8vIHZlcmlmeSBzY3JvbGxlZAorICAgIC8vIHZlcmlmeSBj
aGlsZCBzY3JvbGwgcG9zaXRpb24gY2hhbmdlZAorICAgIC8vIHZlcmlmeSBwYXJlbnQncyBzY3Jv
bGwgcG9zaXRpb24gZGlkIG5vdCBjaGFuZ2UKKyAgICBzY3JvbGxQb3NpdGlvbiA9IHdlYlBhZ2Ut
Pm1haW5GcmFtZSgpLT5zY3JvbGxQb3NpdGlvbigpOworICAgIFFQb2ludCBjaGlsZFNjcm9sbFBv
c2l0aW9uID0gY2hpbGRyZW4uYXQoMCktPnNjcm9sbFBvc2l0aW9uKCk7CisgICAgUVZFUklGWShj
aGlsZHJlbi5hdCgwKS0+c2Nyb2xsUmVjdXJzaXZlbHkoMTAsIDEwKSk7CisgICAgUVZFUklGWShz
Y3JvbGxQb3NpdGlvbiA9PSB3ZWJQYWdlLT5tYWluRnJhbWUoKS0+c2Nyb2xsUG9zaXRpb24oKSk7
CisgICAgUVZFUklGWShjaGlsZFNjcm9sbFBvc2l0aW9uICE9IGNoaWxkcmVuLmF0KDApLT5zY3Jv
bGxQb3NpdGlvbigpKTsKKworICAgIC8vIDNyZCB0ZXN0CisgICAgLy8gY2FsbCBzY3JvbGxSZWN1
cnNpdmVseSBvdmVyIGRpdiBvdmVyZmxvdworICAgIC8vIHZlcmlmeSBzY3JvbGxlZCA9PSB0cnVl
CisgICAgLy8gdmVyaWZ5IHBhcmVudCBhbmQgY2hpbGQgZnJhbWUncyBzY3JvbGwgcG9zdGlvbiBk
aWQgbm90IGNoYW5nZQorICAgIFFXZWJFbGVtZW50IGRpdiA9IHdlYlBhZ2UtPm1haW5GcmFtZSgp
LT5kb2N1bWVudEVsZW1lbnQoKS5maW5kRmlyc3QoIiNjb250ZW50MSIpOworICAgIFFNb3VzZUV2
ZW50IGV2cHJlcyhRRXZlbnQ6Ok1vdXNlTW92ZSwgZGl2Lmdlb21ldHJ5KCkuY2VudGVyKCksIFF0
OjpOb0J1dHRvbiwgUXQ6Ok5vQnV0dG9uLCBRdDo6Tm9Nb2RpZmllcik7CisgICAgd2ViUGFnZS0+
ZXZlbnQoJmV2cHJlcyk7CisgICAgc2Nyb2xsUG9zaXRpb24gPSB3ZWJQYWdlLT5tYWluRnJhbWUo
KS0+c2Nyb2xsUG9zaXRpb24oKTsKKyAgICBjaGlsZFNjcm9sbFBvc2l0aW9uID0gY2hpbGRyZW4u
YXQoMCktPnNjcm9sbFBvc2l0aW9uKCk7CisgICAgUVZFUklGWSh3ZWJQYWdlLT5tYWluRnJhbWUo
KS0+c2Nyb2xsUmVjdXJzaXZlbHkoNSwgNSkpOworICAgIFFWRVJJRlkoY2hpbGRTY3JvbGxQb3Np
dGlvbiA9PSBjaGlsZHJlbi5hdCgwKS0+c2Nyb2xsUG9zaXRpb24oKSk7CisgICAgUVZFUklGWShz
Y3JvbGxQb3NpdGlvbiA9PSB3ZWJQYWdlLT5tYWluRnJhbWUoKS0+c2Nyb2xsUG9zaXRpb24oKSk7
CisKKyAgICAvLyA0dGggdGVzdAorICAgIC8vIGNhbGwgc2Nyb2xsUmVjdXJzaXZlbHkgdHdpY2Ug
b3ZlciBjaGlsZHMgaWZyYW1lCisgICAgLy8gdmVyaWZ5IHNjcm9sbGVkID09IHRydWUgZmlyc3Qg
dGltZQorICAgIC8vIHZlcmlmeSBwYXJlbnQncyBzY3JvbGwgPT0gdHJ1ZSBzZWNvbmQgdGltZQor
ICAgIC8vIHZlcmlmeSBwYXJlbnQgYW5kIGNoaWxkcyBzY3JvbGwgcG9zaXRpb24gY2hhbmdlZAor
ICAgIGNoaWxkU2Nyb2xsUG9zaXRpb24gPSBjaGlsZHJlbi5hdCgwKS0+c2Nyb2xsUG9zaXRpb24o
KTsKKyAgICBRVkVSSUZZKGNoaWxkcmVuLmF0KDApLT5zY3JvbGxSZWN1cnNpdmVseSgtMTAsIC0x
MCkpOworICAgIFFWRVJJRlkoY2hpbGRTY3JvbGxQb3NpdGlvbiAhPSBjaGlsZHJlbi5hdCgwKS0+
c2Nyb2xsUG9zaXRpb24oKSk7CisgICAgc2Nyb2xsUG9zaXRpb24gPSB3ZWJQYWdlLT5tYWluRnJh
bWUoKS0+c2Nyb2xsUG9zaXRpb24oKTsKKyAgICBRVkVSSUZZKGNoaWxkcmVuLmF0KDApLT5zY3Jv
bGxSZWN1cnNpdmVseSgtMTAsIC0xMCkpOworICAgIFFWRVJJRlkoc2Nyb2xsUG9zaXRpb24gIT0g
d2ViUGFnZS0+bWFpbkZyYW1lKCktPnNjcm9sbFBvc2l0aW9uKCkpOworCit9CisKIFFURVNUX01B
SU4odHN0X1FXZWJGcmFtZSkKICNpbmNsdWRlICJ0c3RfcXdlYmZyYW1lLm1vYyIK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46140</attachid>
            <date>2010-01-08 08:50:07 -0800</date>
            <delta_ts>2010-01-11 07:36:50 -0800</delta_ts>
            <desc>private API prepared to merge to 4.6</desc>
            <filename>bug32668_private.patch</filename>
            <type>text/plain</type>
            <size>7653</size>
            <attacher name="Joseph Ligman">joseph.ligman</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9xdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L0NoYW5n
ZUxvZwkocmV2aXNpb24gNTI5OTMpCisrKyBXZWJLaXQvcXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTAtMDEtMDggIEpvZSBMaWdtYW4gIDxqb3NlcGgubGln
bWFuQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBbUXRdIFByaXZhdGUgQVBJCisgICAgICAgIEFkZCBuZXcgQVBJIHRvIFFXZWJGcmFt
ZSB0byBzY3JvbGxSZWN1cnNpdmVseSBzdGFydGluZyB3aXRoIGFueSBDU1Mgb3ZlcmZsb3cgCisg
ICAgICAgIHRoZW4gY2hlY2tpbmcgY3VycmVudCBmcmFtZSBhbmQgdGhlbiBhbmNlc3RvcnMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMyNjY4CisKKyAg
ICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAgICAgICAgKHF0X3Jlc3VtZUFjdGl2ZURPTU9i
amVjdHMpOgorICAgICAgICAocXRfcHJpdmF0ZVNjcm9sbE92ZXJmbG93KToKKyAgICAgICAgKHF0
X3Njcm9sbFJlY3Vyc2l2ZWx5KToKKyAgICAgICAgKiB0ZXN0cy9xd2ViZnJhbWUvdHN0X3F3ZWJm
cmFtZS5jcHA6CisKIDIwMTAtMDEtMDcgIFlhZWwgQWhhcm9uICA8eWFlbC5haGFyb25Abm9raWEu
Y29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgpJ
bmRleDogV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9x
dC9BcGkvcXdlYmZyYW1lLmNwcAkocmV2aXNpb24gNTI5OTMpCisrKyBXZWJLaXQvcXQvQXBpL3F3
ZWJmcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzNCw3ICsyMzQsODMgQEAgdm9pZCBRV0VC
S0lUX0VYUE9SVCBxdF9yZXN1bWVBY3RpdmVET01PYgogICAgIEZyYW1lKiBmcmFtZSA9IFFXZWJG
cmFtZVByaXZhdGU6OmNvcmUocUZyYW1lKTsKICAgICBpZiAoZnJhbWUtPmRvY3VtZW50KCkpCiAg
ICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLT5yZXN1bWVBY3RpdmVET01PYmplY3RzKCk7Ci19ICAg
ICAgICAgICAgICAgICAgICAgICAgCit9CisvLyBQcml2YXRlIG5vdCBleHBvcnRlZCBtZXRob2Qg
dG8gc2Nyb2xsb3ZlcmZsb3cgCitib29sIHF0X3ByaXZhdGVTY3JvbGxPdmVyZmxvdyhRV2ViRnJh
bWUqIHFGcmFtZSwgaW50IGR4LCBpbnQgZHkpCit7CisgICAgRnJhbWUqIGZyYW1lID0gUVdlYkZy
YW1lUHJpdmF0ZTo6Y29yZShxRnJhbWUpOworICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5kb2N1
bWVudCgpIHx8ICFmcmFtZS0+ZXZlbnRIYW5kbGVyKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIE5vZGUqIG5vZGUgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+Zm9jdXNlZE5vZGUoKTsKKyAg
ICBpZiAoIW5vZGUpCisgICAgICAgIG5vZGUgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+ZWxlbWVudEZy
b21Qb2ludChmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmN1cnJlbnRNb3VzZVBvc2l0aW9uKCkueCgp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJh
bWUtPmV2ZW50SGFuZGxlcigpLT5jdXJyZW50TW91c2VQb3NpdGlvbigpLnkoKSk7CisgICAgaWYg
KCFub2RlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBSZW5kZXJPYmplY3QqIHJlbmRl
cmVyID0gbm9kZS0+cmVuZGVyZXIoKTsKKyAgICBpZiAoIXJlbmRlcmVyKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBpZiAocmVuZGVyZXItPmlzTGlzdEJveCgpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBSZW5kZXJMYXllciogcmVuZGVyTGF5ZXIgPSByZW5kZXJlci0+ZW5j
bG9zaW5nTGF5ZXIoKTsKKyAgICBpZiAoIXJlbmRlckxheWVyKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBib29sIHNjcm9sbGVkSG9yaXpvbnRhbCA9IGZhbHNlOworICAgIGJvb2wgc2Ny
b2xsZWRWZXJ0aWNhbCA9IGZhbHNlOworCisgICAgaWYgKGR4ID4gMCkKKyAgICAgICAgc2Nyb2xs
ZWRIb3Jpem9udGFsID0gcmVuZGVyTGF5ZXItPnNjcm9sbChTY3JvbGxSaWdodCwgU2Nyb2xsQnlQ
aXhlbCwgZHgpOworICAgIGVsc2UgaWYgKGR4IDwgMCkKKyAgICAgICAgc2Nyb2xsZWRIb3Jpem9u
dGFsID0gcmVuZGVyTGF5ZXItPnNjcm9sbChTY3JvbGxMZWZ0LCBTY3JvbGxCeVBpeGVsLCBxQWJz
KGR4KSk7CisKKyAgICBpZiAoZHkgPiAwKQorICAgICAgICBzY3JvbGxlZFZlcnRpY2FsID0gcmVu
ZGVyTGF5ZXItPnNjcm9sbChTY3JvbGxEb3duLCBTY3JvbGxCeVBpeGVsLCBkeSk7CisgICAgZWxz
ZSBpZiAoZHkgPCAwKQorICAgICAgICBzY3JvbGxlZFZlcnRpY2FsID0gcmVuZGVyTGF5ZXItPnNj
cm9sbChTY3JvbGxVcCwgU2Nyb2xsQnlQaXhlbCwgcUFicyhkeSkpOworCisgICAgcmV0dXJuIChz
Y3JvbGxlZEhvcml6b250YWwgfHwgc2Nyb2xsZWRWZXJ0aWNhbCk7Cit9CisKKy8vIFNjcm9sbHMg
bmVzdGVkIGZyYW1lcyBzdGFydGluZyB3aXRoIHRoaXMgZnJhbWUuCitib29sIFFXRUJLSVRfRVhQ
T1JUIHF0X3Njcm9sbFJlY3Vyc2l2ZWx5KFFXZWJGcmFtZSogcUZyYW1lLCBpbnQgZHgsIGludCBk
eSkKK3sKKyAgICBib29sIHNjcm9sbGVkSG9yaXpvbnRhbCA9IGZhbHNlOworICAgIGJvb2wgc2Ny
b2xsZWRWZXJ0aWNhbCA9IGZhbHNlOworICAgIGJvb2wgc2Nyb2xsZWRPdmVyZmxvdyA9IHF0X3By
aXZhdGVTY3JvbGxPdmVyZmxvdyhxRnJhbWUsIGR4LCBkeSk7CisKKyAgICBpZiAoIXNjcm9sbGVk
T3ZlcmZsb3cpIHsKKyAgICAgICAgRnJhbWUqIGZyYW1lID0gUVdlYkZyYW1lUHJpdmF0ZTo6Y29y
ZShxRnJhbWUpOworICAgICAgICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+dmlldygpKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIEludFNpemUg
c2Nyb2xsT2Zmc2V0ID0gZnJhbWUtPnZpZXcoKS0+c2Nyb2xsT2Zmc2V0KCk7CisgICAgICAgICAg
ICBJbnRQb2ludCBtYXhTY3JvbGxPZmZzZXQgPSBmcmFtZS0+dmlldygpLT5tYXhpbXVtU2Nyb2xs
UG9zaXRpb24oKTsKKworICAgICAgICAgICAgaWYgKGR4ID4gMCkgLy8gc2Nyb2xsIHJpZ2h0Cisg
ICAgICAgICAgICAgICAgc2Nyb2xsZWRIb3Jpem9udGFsID0gc2Nyb2xsT2Zmc2V0LndpZHRoKCkg
PCBtYXhTY3JvbGxPZmZzZXQueCgpOworICAgICAgICAgICAgZWxzZSBpZiAoZHggPCAwKSAvLyBz
Y3JvbGwgbGVmdAorICAgICAgICAgICAgICAgIHNjcm9sbGVkSG9yaXpvbnRhbCA9IHNjcm9sbE9m
ZnNldC53aWR0aCgpID4gMDsKKworICAgICAgICAgICAgaWYgKGR5ID4gMCkgLy8gc2Nyb2xsIGRv
d24KKyAgICAgICAgICAgICAgICBzY3JvbGxlZFZlcnRpY2FsID0gc2Nyb2xsT2Zmc2V0LmhlaWdo
dCgpIDwgbWF4U2Nyb2xsT2Zmc2V0LnkoKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGR5IDwgMCkg
Ly9zY3JvbGwgdXAKKyAgICAgICAgICAgICAgICBzY3JvbGxlZFZlcnRpY2FsID0gc2Nyb2xsT2Zm
c2V0LmhlaWdodCgpID4gMDsKKworICAgICAgICAgICAgaWYgKHNjcm9sbGVkSG9yaXpvbnRhbCB8
fCBzY3JvbGxlZFZlcnRpY2FsKSB7CisgICAgICAgICAgICAgICAgZnJhbWUtPnZpZXcoKS0+c2Ny
b2xsQnkoSW50U2l6ZShkeCwgZHkpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+cGFyZW50KCk7
IAorICAgICAgICB9IHdoaWxlIChmcmFtZSAmJiBmcmFtZS0+dmlldygpKTsKKyAgICB9CisgICAg
cmV0dXJuIChzY3JvbGxlZEhvcml6b250YWwgfHwgc2Nyb2xsZWRWZXJ0aWNhbCB8fCBzY3JvbGxl
ZE92ZXJmbG93KTsKK30KIAogUVdlYkZyYW1lRGF0YTo6UVdlYkZyYW1lRGF0YShXZWJDb3JlOjpQ
YWdlKiBwYXJlbnRQYWdlLCBXZWJDb3JlOjpGcmFtZSogcGFyZW50RnJhbWUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJG
cmFtZUVsZW1lbnQsCkluZGV4OiBXZWJLaXQvcXQvdGVzdHMvcXdlYmZyYW1lL3RzdF9xd2ViZnJh
bWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC90ZXN0cy9xd2ViZnJhbWUvdHN0X3F3ZWJm
cmFtZS5jcHAJKHJldmlzaW9uIDUyOTkzKQorKysgV2ViS2l0L3F0L3Rlc3RzL3F3ZWJmcmFtZS90
c3RfcXdlYmZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTczLDYgKzU3Myw3IEBAIHByaXZh
dGUgc2xvdHM6CiAgICAgdm9pZCBldmFsdWF0ZVdpbGxDYXVzZVJlcGFpbnQoKTsKICAgICB2b2lk
IHFPYmplY3RXcmFwcGVyV2l0aFNhbWVJZGVudGl0eSgpOwogICAgIHZvaWQgc2Nyb2xsUmVjdXJz
aXZlbHkoKTsKKyAgICB2b2lkIHF0c2Nyb2xsUmVjdXJzaXZlbHkoKTsKIAogcHJpdmF0ZToKICAg
ICBRU3RyaW5nICBldmFsSlMoY29uc3QgUVN0cmluZyZzKSB7CkBAIC0yODYxLDUgKzI4NjIsNzEg
QEAgdm9pZCB0c3RfUVdlYkZyYW1lOjpzY3JvbGxSZWN1cnNpdmVseSgpCiAKIH0KIAorYm9vbCBR
V0VCS0lUX0VYUE9SVCBxdF9zY3JvbGxSZWN1cnNpdmVseShRV2ViRnJhbWUqIHFGcmFtZSwgaW50
IGR4LCBpbnQgZHkpOworCit2b2lkIHRzdF9RV2ViRnJhbWU6OnF0c2Nyb2xsUmVjdXJzaXZlbHko
KQoreworICAgIC8vIFRoZSB0ZXN0IGNvbnRlbnQgaXMgCisgICAgLy8gYSBuZXN0ZWQgZnJhbWUg
c2V0CisgICAgLy8gVGhlIG1haW4gZnJhbWUgc2Nyb2xscworICAgIC8vIGFuZCBoYXMgdHdvIGNo
aWxkcmVuCisgICAgLy8gYW4gaWZyYW1lIGFuZCBhIGRpdiBvdmVyZmxvdworICAgIC8vIGJvdGgg
c2Nyb2xsCisgICAgUVdlYlZpZXcgd2ViVmlldzsKKyAgICBRV2ViUGFnZSogd2ViUGFnZSA9IHdl
YlZpZXcucGFnZSgpOworICAgIFFTaWduYWxTcHkgbG9hZFNweSh3ZWJQYWdlLCBTSUdOQUwobG9h
ZEZpbmlzaGVkKGJvb2wpKSk7CisgICAgUVVybCB1cmwgPSBRVXJsKCJxcmM6Ly8vdGVzdGlmcmFt
ZS5odG1sIik7CisgICAgd2ViUGFnZS0+bWFpbkZyYW1lKCktPmxvYWQodXJsKTsKKyAgICBRVFJZ
X0NPTVBBUkUobG9hZFNweS5jb3VudCgpLCAxKTsKKworICAgIFFMaXN0PFFXZWJGcmFtZSo+IGNo
aWxkcmVuID0gIHdlYlBhZ2UtPm1haW5GcmFtZSgpLT5jaGlsZEZyYW1lcygpOworICAgIFFWRVJJ
RlkoY2hpbGRyZW4uY291bnQoKSA9PSAxKTsKKworICAgIC8vIDFzdCB0ZXN0CisgICAgLy8gY2Fs
bCBzY3JvbGxSZWN1cnNpdmVseSBvdmVyIG1haW5mcmFtZQorICAgIC8vIHZlcmlmeSBzY3JvbGxl
ZAorICAgIC8vIHZlcmlmeSBzY3JvbGwgcG9zdGlvbiBjaGFuZ2VkCisgICAgUVBvaW50IHNjcm9s
bFBvc2l0aW9uKHdlYlBhZ2UtPm1haW5GcmFtZSgpLT5zY3JvbGxQb3NpdGlvbigpKTsKKyAgICBR
VkVSSUZZKHF0X3Njcm9sbFJlY3Vyc2l2ZWx5KHdlYlBhZ2UtPm1haW5GcmFtZSgpLCAxMCwgMTAp
KTsKKyAgICBRVkVSSUZZKHNjcm9sbFBvc2l0aW9uICE9IHdlYlBhZ2UtPm1haW5GcmFtZSgpLT5z
Y3JvbGxQb3NpdGlvbigpKTsKKworICAgIC8vIDJuZCB0ZXN0CisgICAgLy8gY2FsbCBzY3JvbGxS
ZWN1cnNpdmVseSBvdmVyIGNoaWxkIGlmcmFtZQorICAgIC8vIHZlcmlmeSBzY3JvbGxlZAorICAg
IC8vIHZlcmlmeSBjaGlsZCBzY3JvbGwgcG9zaXRpb24gY2hhbmdlZAorICAgIC8vIHZlcmlmeSBw
YXJlbnQncyBzY3JvbGwgcG9zaXRpb24gZGlkIG5vdCBjaGFuZ2UKKyAgICBzY3JvbGxQb3NpdGlv
biA9IHdlYlBhZ2UtPm1haW5GcmFtZSgpLT5zY3JvbGxQb3NpdGlvbigpOworICAgIFFQb2ludCBj
aGlsZFNjcm9sbFBvc2l0aW9uID0gY2hpbGRyZW4uYXQoMCktPnNjcm9sbFBvc2l0aW9uKCk7Cisg
ICAgUVZFUklGWShxdF9zY3JvbGxSZWN1cnNpdmVseShjaGlsZHJlbi5hdCgwKSwgMTAsIDEwKSk7
CisgICAgUVZFUklGWShzY3JvbGxQb3NpdGlvbiA9PSB3ZWJQYWdlLT5tYWluRnJhbWUoKS0+c2Ny
b2xsUG9zaXRpb24oKSk7CisgICAgUVZFUklGWShjaGlsZFNjcm9sbFBvc2l0aW9uICE9IGNoaWxk
cmVuLmF0KDApLT5zY3JvbGxQb3NpdGlvbigpKTsKKworICAgIC8vIDNyZCB0ZXN0CisgICAgLy8g
Y2FsbCBzY3JvbGxSZWN1cnNpdmVseSBvdmVyIGRpdiBvdmVyZmxvdworICAgIC8vIHZlcmlmeSBz
Y3JvbGxlZCA9PSB0cnVlCisgICAgLy8gdmVyaWZ5IHBhcmVudCBhbmQgY2hpbGQgZnJhbWUncyBz
Y3JvbGwgcG9zdGlvbiBkaWQgbm90IGNoYW5nZQorICAgIFFXZWJFbGVtZW50IGRpdiA9IHdlYlBh
Z2UtPm1haW5GcmFtZSgpLT5kb2N1bWVudEVsZW1lbnQoKS5maW5kRmlyc3QoIiNjb250ZW50MSIp
OworICAgIFFNb3VzZUV2ZW50IGV2cHJlcyhRRXZlbnQ6Ok1vdXNlTW92ZSwgZGl2Lmdlb21ldHJ5
KCkuY2VudGVyKCksIFF0OjpOb0J1dHRvbiwgUXQ6Ok5vQnV0dG9uLCBRdDo6Tm9Nb2RpZmllcik7
CisgICAgd2ViUGFnZS0+ZXZlbnQoJmV2cHJlcyk7CisgICAgc2Nyb2xsUG9zaXRpb24gPSB3ZWJQ
YWdlLT5tYWluRnJhbWUoKS0+c2Nyb2xsUG9zaXRpb24oKTsKKyAgICBjaGlsZFNjcm9sbFBvc2l0
aW9uID0gY2hpbGRyZW4uYXQoMCktPnNjcm9sbFBvc2l0aW9uKCk7CisgICAgUVZFUklGWShxdF9z
Y3JvbGxSZWN1cnNpdmVseSh3ZWJQYWdlLT5tYWluRnJhbWUoKSwgNSwgNSkpOworICAgIFFWRVJJ
RlkoY2hpbGRTY3JvbGxQb3NpdGlvbiA9PSBjaGlsZHJlbi5hdCgwKS0+c2Nyb2xsUG9zaXRpb24o
KSk7CisgICAgUVZFUklGWShzY3JvbGxQb3NpdGlvbiA9PSB3ZWJQYWdlLT5tYWluRnJhbWUoKS0+
c2Nyb2xsUG9zaXRpb24oKSk7CisKKyAgICAvLyA0dGggdGVzdAorICAgIC8vIGNhbGwgc2Nyb2xs
UmVjdXJzaXZlbHkgdHdpY2Ugb3ZlciBjaGlsZHMgaWZyYW1lCisgICAgLy8gdmVyaWZ5IHNjcm9s
bGVkID09IHRydWUgZmlyc3QgdGltZQorICAgIC8vIHZlcmlmeSBwYXJlbnQncyBzY3JvbGwgPT0g
dHJ1ZSBzZWNvbmQgdGltZQorICAgIC8vIHZlcmlmeSBwYXJlbnQgYW5kIGNoaWxkcyBzY3JvbGwg
cG9zaXRpb24gY2hhbmdlZAorICAgIGNoaWxkU2Nyb2xsUG9zaXRpb24gPSBjaGlsZHJlbi5hdCgw
KS0+c2Nyb2xsUG9zaXRpb24oKTsKKyAgICBRVkVSSUZZKHF0X3Njcm9sbFJlY3Vyc2l2ZWx5KGNo
aWxkcmVuLmF0KDApLCAtMTAsIC0xMCkpOworICAgIFFWRVJJRlkoY2hpbGRTY3JvbGxQb3NpdGlv
biAhPSBjaGlsZHJlbi5hdCgwKS0+c2Nyb2xsUG9zaXRpb24oKSk7CisgICAgc2Nyb2xsUG9zaXRp
b24gPSB3ZWJQYWdlLT5tYWluRnJhbWUoKS0+c2Nyb2xsUG9zaXRpb24oKTsKKyAgICBRVkVSSUZZ
KHF0X3Njcm9sbFJlY3Vyc2l2ZWx5KGNoaWxkcmVuLmF0KDApLCAtMTAsIC0xMCkpOworICAgIFFW
RVJJRlkoc2Nyb2xsUG9zaXRpb24gIT0gd2ViUGFnZS0+bWFpbkZyYW1lKCktPnNjcm9sbFBvc2l0
aW9uKCkpOworCit9CisKIFFURVNUX01BSU4odHN0X1FXZWJGcmFtZSkKICNpbmNsdWRlICJ0c3Rf
cXdlYmZyYW1lLm1vYyIK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46274</attachid>
            <date>2010-01-11 07:36:59 -0800</date>
            <delta_ts>2010-01-11 07:36:59 -0800</delta_ts>
            <desc>Patch for private API</desc>
            <filename>bug-32668-20100111163656.patch</filename>
            <type>text/plain</type>
            <size>4571</size>
            <attacher name="Simon Hausmann">hausmann</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcCBiL1dlYktpdC9xdC9BcGkv
cXdlYmZyYW1lLmNwcAppbmRleCA0OTA4ODE3Li4yOWJkZTBkIDEwMDY0NAotLS0gYS9XZWJLaXQv
cXQvQXBpL3F3ZWJmcmFtZS5jcHAKKysrIGIvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuY3BwCkBA
IC0zMjQsNyArMzI0LDcgQEAgdm9pZCBRV2ViRnJhbWVQcml2YXRlOjpyZW5kZXJQcml2YXRlKFFQ
YWludGVyICpwYWludGVyLCBRV2ViRnJhbWU6OlJlbmRlckxheWVyIGwKICAgICB9CiB9CiAKLWJv
b2wgUVdlYkZyYW1lUHJpdmF0ZTo6c2Nyb2xsT3ZlcmZsb3coaW50IGR4LCBpbnQgZHkpCitzdGF0
aWMgYm9vbCB3ZWJmcmFtZV9zY3JvbGxPdmVyZmxvdyhXZWJDb3JlOjpGcmFtZSogZnJhbWUsIGlu
dCBkeCwgaW50IGR5KQogewogICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5kb2N1bWVudCgpIHx8
ICFmcmFtZS0+ZXZlbnRIYW5kbGVyKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEwNDgs
NiArMTA0OCw3IEBAIHZvaWQgUVdlYkZyYW1lOjpzY3JvbGwoaW50IGR4LCBpbnQgZHkpCiAKIC8q
IQogICBcc2luY2UgNC43CisgIFxpbnRlcm5hbAogICBTY3JvbGxzIG5lc3RlZCBmcmFtZXMgc3Rh
cnRpbmcgYXQgdGhpcyBmcmFtZSwgXGEgZHggcGl4ZWxzIHRvIHRoZSByaWdodCAKICAgYW5kIFxh
IGR5IHBpeGVscyBkb3dud2FyZC4gQm90aCBcYSBkeCBhbmQgXGEgZHkgbWF5IGJlIG5lZ2F0aXZl
LiBGaXJzdCBhdHRlbXB0cwogICB0byBzY3JvbGwgZWxlbWVudHMgd2l0aCBDU1Mgb3ZlcmZsb3cg
Zm9sbG93ZWQgYnkgdGhpcyBmcmFtZS4gSWYgdGhpcyAKQEAgLTEwNTUsMTQgKzEwNTYsMTQgQEAg
dm9pZCBRV2ViRnJhbWU6OnNjcm9sbChpbnQgZHgsIGludCBkeSkKIAogICBcc2EgUVdlYkZyYW1l
OjpzY3JvbGwKICovCi1ib29sIFFXZWJGcmFtZTo6c2Nyb2xsUmVjdXJzaXZlbHkoaW50IGR4LCBp
bnQgZHkpCitib29sIFFXRUJLSVRfRVhQT1JUIHF0d2Via2l0X3dlYmZyYW1lX3Njcm9sbFJlY3Vy
c2l2ZWx5KFFXZWJGcmFtZSogcUZyYW1lLCBpbnQgZHgsIGludCBkeSkKIHsKKyAgICBGcmFtZSog
ZnJhbWUgPSBRV2ViRnJhbWVQcml2YXRlOjpjb3JlKHFGcmFtZSk7CiAgICAgYm9vbCBzY3JvbGxl
ZEhvcml6b250YWwgPSBmYWxzZTsKICAgICBib29sIHNjcm9sbGVkVmVydGljYWwgPSBmYWxzZTsK
LSAgICBib29sIHNjcm9sbGVkT3ZlcmZsb3cgPSBkLT5zY3JvbGxPdmVyZmxvdyhkeCwgZHkpOwor
ICAgIGJvb2wgc2Nyb2xsZWRPdmVyZmxvdyA9IHdlYmZyYW1lX3Njcm9sbE92ZXJmbG93KGZyYW1l
LCBkeCwgZHkpOwogCiAgICAgaWYgKCFzY3JvbGxlZE92ZXJmbG93KSB7Ci0gICAgICAgIEZyYW1l
KiBmcmFtZSA9IGQtPmZyYW1lOwogICAgICAgICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+dmlldygp
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvQXBp
L3F3ZWJmcmFtZS5oIGIvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuaAppbmRleCBjYjkxNmZjLi4w
ODI4NWY4IDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5oCisrKyBiL1dlYktp
dC9xdC9BcGkvcXdlYmZyYW1lLmgKQEAgLTE2Miw3ICsxNjIsNiBAQCBwdWJsaWM6CiAgICAgUVJl
Y3Qgc2Nyb2xsQmFyR2VvbWV0cnkoUXQ6Ok9yaWVudGF0aW9uIG9yaWVudGF0aW9uKSBjb25zdDsK
IAogICAgIHZvaWQgc2Nyb2xsKGludCwgaW50KTsKLSAgICBib29sIHNjcm9sbFJlY3Vyc2l2ZWx5
KGludCwgaW50KTsKICAgICBRUG9pbnQgc2Nyb2xsUG9zaXRpb24oKSBjb25zdDsKICAgICB2b2lk
IHNldFNjcm9sbFBvc2l0aW9uKGNvbnN0IFFQb2ludCAmcG9zKTsKIApkaWZmIC0tZ2l0IGEvV2Vi
S2l0L3F0L3Rlc3RzL3F3ZWJmcmFtZS90c3RfcXdlYmZyYW1lLmNwcCBiL1dlYktpdC9xdC90ZXN0
cy9xd2ViZnJhbWUvdHN0X3F3ZWJmcmFtZS5jcHAKaW5kZXggZDM0MTI2OS4uNjA5ZjhiNCAxMDA2
NDQKLS0tIGEvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJmcmFtZS90c3RfcXdlYmZyYW1lLmNwcAorKysg
Yi9XZWJLaXQvcXQvdGVzdHMvcXdlYmZyYW1lL3RzdF9xd2ViZnJhbWUuY3BwCkBAIC0yODI1LDYg
KzI4MjUsOCBAQCB2b2lkIHRzdF9RV2ViRnJhbWU6OnFPYmplY3RXcmFwcGVyV2l0aFNhbWVJZGVu
dGl0eSgpCiAgICAgUUNPTVBBUkUobWFpbkZyYW1lLT50b1BsYWluVGV4dCgpLCBRU3RyaW5nKCJ0
ZXN0MiIpKTsKIH0KIAorYm9vbCBRV0VCS0lUX0VYUE9SVCBxdHdlYmtpdF93ZWJmcmFtZV9zY3Jv
bGxSZWN1cnNpdmVseShRV2ViRnJhbWUqIHFGcmFtZSwgaW50IGR4LCBpbnQgZHkpOworCiB2b2lk
IHRzdF9RV2ViRnJhbWU6OnNjcm9sbFJlY3Vyc2l2ZWx5KCkKIHsKICAgICAvLyBUaGUgdGVzdCBj
b250ZW50IGlzIApAQCAtMjg0OCw3ICsyODUwLDcgQEAgdm9pZCB0c3RfUVdlYkZyYW1lOjpzY3Jv
bGxSZWN1cnNpdmVseSgpCiAgICAgLy8gdmVyaWZ5IHNjcm9sbGVkCiAgICAgLy8gdmVyaWZ5IHNj
cm9sbCBwb3N0aW9uIGNoYW5nZWQKICAgICBRUG9pbnQgc2Nyb2xsUG9zaXRpb24od2ViUGFnZS0+
bWFpbkZyYW1lKCktPnNjcm9sbFBvc2l0aW9uKCkpOwotICAgIFFWRVJJRlkod2ViUGFnZS0+bWFp
bkZyYW1lKCktPnNjcm9sbFJlY3Vyc2l2ZWx5KDEwLCAxMCkpOworICAgIFFWRVJJRlkocXR3ZWJr
aXRfd2ViZnJhbWVfc2Nyb2xsUmVjdXJzaXZlbHkod2ViUGFnZS0+bWFpbkZyYW1lKCksIDEwLCAx
MCkpOwogICAgIFFWRVJJRlkoc2Nyb2xsUG9zaXRpb24gIT0gd2ViUGFnZS0+bWFpbkZyYW1lKCkt
PnNjcm9sbFBvc2l0aW9uKCkpOwogCiAgICAgLy8gMm5kIHRlc3QKQEAgLTI4NTgsNyArMjg2MCw3
IEBAIHZvaWQgdHN0X1FXZWJGcmFtZTo6c2Nyb2xsUmVjdXJzaXZlbHkoKQogICAgIC8vIHZlcmlm
eSBwYXJlbnQncyBzY3JvbGwgcG9zaXRpb24gZGlkIG5vdCBjaGFuZ2UKICAgICBzY3JvbGxQb3Np
dGlvbiA9IHdlYlBhZ2UtPm1haW5GcmFtZSgpLT5zY3JvbGxQb3NpdGlvbigpOwogICAgIFFQb2lu
dCBjaGlsZFNjcm9sbFBvc2l0aW9uID0gY2hpbGRyZW4uYXQoMCktPnNjcm9sbFBvc2l0aW9uKCk7
Ci0gICAgUVZFUklGWShjaGlsZHJlbi5hdCgwKS0+c2Nyb2xsUmVjdXJzaXZlbHkoMTAsIDEwKSk7
CisgICAgUVZFUklGWShxdHdlYmtpdF93ZWJmcmFtZV9zY3JvbGxSZWN1cnNpdmVseShjaGlsZHJl
bi5hdCgwKSwgMTAsIDEwKSk7CiAgICAgUVZFUklGWShzY3JvbGxQb3NpdGlvbiA9PSB3ZWJQYWdl
LT5tYWluRnJhbWUoKS0+c2Nyb2xsUG9zaXRpb24oKSk7CiAgICAgUVZFUklGWShjaGlsZFNjcm9s
bFBvc2l0aW9uICE9IGNoaWxkcmVuLmF0KDApLT5zY3JvbGxQb3NpdGlvbigpKTsKIApAQCAtMjg3
MSw3ICsyODczLDcgQEAgdm9pZCB0c3RfUVdlYkZyYW1lOjpzY3JvbGxSZWN1cnNpdmVseSgpCiAg
ICAgd2ViUGFnZS0+ZXZlbnQoJmV2cHJlcyk7CiAgICAgc2Nyb2xsUG9zaXRpb24gPSB3ZWJQYWdl
LT5tYWluRnJhbWUoKS0+c2Nyb2xsUG9zaXRpb24oKTsKICAgICBjaGlsZFNjcm9sbFBvc2l0aW9u
ID0gY2hpbGRyZW4uYXQoMCktPnNjcm9sbFBvc2l0aW9uKCk7Ci0gICAgUVZFUklGWSh3ZWJQYWdl
LT5tYWluRnJhbWUoKS0+c2Nyb2xsUmVjdXJzaXZlbHkoNSwgNSkpOworICAgIFFWRVJJRlkocXR3
ZWJraXRfd2ViZnJhbWVfc2Nyb2xsUmVjdXJzaXZlbHkod2ViUGFnZS0+bWFpbkZyYW1lKCksIDUs
IDUpKTsKICAgICBRVkVSSUZZKGNoaWxkU2Nyb2xsUG9zaXRpb24gPT0gY2hpbGRyZW4uYXQoMCkt
PnNjcm9sbFBvc2l0aW9uKCkpOwogICAgIFFWRVJJRlkoc2Nyb2xsUG9zaXRpb24gPT0gd2ViUGFn
ZS0+bWFpbkZyYW1lKCktPnNjcm9sbFBvc2l0aW9uKCkpOwogCkBAIC0yODgxLDEwICsyODgzLDEw
IEBAIHZvaWQgdHN0X1FXZWJGcmFtZTo6c2Nyb2xsUmVjdXJzaXZlbHkoKQogICAgIC8vIHZlcmlm
eSBwYXJlbnQncyBzY3JvbGwgPT0gdHJ1ZSBzZWNvbmQgdGltZQogICAgIC8vIHZlcmlmeSBwYXJl
bnQgYW5kIGNoaWxkcyBzY3JvbGwgcG9zaXRpb24gY2hhbmdlZAogICAgIGNoaWxkU2Nyb2xsUG9z
aXRpb24gPSBjaGlsZHJlbi5hdCgwKS0+c2Nyb2xsUG9zaXRpb24oKTsKLSAgICBRVkVSSUZZKGNo
aWxkcmVuLmF0KDApLT5zY3JvbGxSZWN1cnNpdmVseSgtMTAsIC0xMCkpOworICAgIFFWRVJJRlko
cXR3ZWJraXRfd2ViZnJhbWVfc2Nyb2xsUmVjdXJzaXZlbHkoY2hpbGRyZW4uYXQoMCksIC0xMCwg
LTEwKSk7CiAgICAgUVZFUklGWShjaGlsZFNjcm9sbFBvc2l0aW9uICE9IGNoaWxkcmVuLmF0KDAp
LT5zY3JvbGxQb3NpdGlvbigpKTsKICAgICBzY3JvbGxQb3NpdGlvbiA9IHdlYlBhZ2UtPm1haW5G
cmFtZSgpLT5zY3JvbGxQb3NpdGlvbigpOwotICAgIFFWRVJJRlkoY2hpbGRyZW4uYXQoMCktPnNj
cm9sbFJlY3Vyc2l2ZWx5KC0xMCwgLTEwKSk7CisgICAgUVZFUklGWShxdHdlYmtpdF93ZWJmcmFt
ZV9zY3JvbGxSZWN1cnNpdmVseShjaGlsZHJlbi5hdCgwKSwgLTEwLCAtMTApKTsKICAgICBRVkVS
SUZZKHNjcm9sbFBvc2l0aW9uICE9IHdlYlBhZ2UtPm1haW5GcmFtZSgpLT5zY3JvbGxQb3NpdGlv
bigpKTsKIAogfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>