<?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>37070</bug_id>
          
          <creation_ts>2010-04-04 01:38:54 -0700</creation_ts>
          <short_desc>[Qt] WebGL is not visible when QGLWidget viewport is used</short_desc>
          <delta_ts>2010-04-16 14:39:52 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Qt</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Jarkko Sakkinen">jarkko.j.sakkinen</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cmarrin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>hausmann</cc>
    
    <cc>kbr</cc>
    
    <cc>oliver</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>208346</commentid>
    <comment_count>0</comment_count>
    <who name="Jarkko Sakkinen">jarkko.j.sakkinen</who>
    <bug_when>2010-04-04 01:38:54 -0700</bug_when>
    <thetext>Create shared OpenGL context so that WebGL view can be blitted directly without slow memory copy in the way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>210624</commentid>
    <comment_count>1</comment_count>
    <who name="Jarkko Sakkinen">jarkko.j.sakkinen</who>
    <bug_when>2010-04-09 01:14:30 -0700</bug_when>
    <thetext>This I attend to solve this issue. Basic idea is that every document instance needs pointer to the &quot;main&quot; GL context.

Common:
- FrameLoaderClientQt: add pointer for QGLContext of either graphics engine or QGLWidget viewport.
- Frame: In costructor grab pointer of QGLContext from FrameLoaderClientQt and store.
- Document: In costructor grab pointer of QGLContext from Frame and store.
- HTMLCanvasElement gets QGLContext from document and forwards it to GraphicsContext3D through WebGLRenderingContext.

QGLWidget: Easy, ask context pointer from the widget.
OpenGL graphicssystem: QPixmap painter creation actives the associated GL context.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>210652</commentid>
    <comment_count>2</comment_count>
    <who name="Jarkko Sakkinen">jarkko.j.sakkinen</who>
    <bug_when>2010-04-09 02:58:42 -0700</bug_when>
    <thetext>Plan that requires only changes to GraphicsContext3D.

- Add pointer to the WebGLRenderingContext to construction parameters of GraphicsContext3D.
- In GraphicsContext3D constructor grab pointer through:
 * WebGLRenderingContext::canvas() -&gt; HTMLCanvasElement 
 * HTMLCanvasElement::document() -&gt; Document
 * Document::frameView() -&gt; Widget (FrameView inherits from Widgets)
 * Widget::platformWidget() -&gt; QWebPageClient
 * QWebPageClient::ownerWidget() -&gt; QWidget/QGLWidget

Owner context can then be acquired in GraphicsContext3D. I&apos;ll create patch asap.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211172</commentid>
    <comment_count>3</comment_count>
      <attachid>53049</attachid>
    <who name="Jarkko Sakkinen">jarkko.j.sakkinen</who>
    <bug_when>2010-04-10 12:41:58 -0700</bug_when>
    <thetext>Created attachment 53049
Creates shared OpenGL context with QGLWidget viewport. This fill effectively also allow direct blitting instead of glReadPixels().

Getting rid of glReadPixels is being worked on in the bug https://bugs.webkit.org/show_bug.cgi?id=35388.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211175</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-10 12:48:49 -0700</bug_when>
    <thetext>Attachment 53049 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/platform/graphics/qt/GraphicsContext3DQt.cpp:46:  Alphabetical sorting problem.  [build/include_order] [4]
WebCore/platform/graphics/qt/GraphicsContext3DQt.cpp:286:  One line control clauses should not use braces.  [whitespace/braces] [4]
Total errors found: 2 in 4 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211360</commentid>
    <comment_count>5</comment_count>
      <attachid>53090</attachid>
    <who name="Jarkko Sakkinen">jarkko.j.sakkinen</who>
    <bug_when>2010-04-11 08:04:40 -0700</bug_when>
    <thetext>Created attachment 53090
Fixed style issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211405</commentid>
    <comment_count>6</comment_count>
    <who name="Jarkko Sakkinen">jarkko.j.sakkinen</who>
    <bug_when>2010-04-11 12:55:26 -0700</bug_when>
    <thetext>NOTE: If this patch is to be cherry picked into the release branch it should be done only after https://bugs.webkit.org/show_bug.cgi?id=37412 is completed for which I submit patch during upcoming week. I&apos;ll do resource sandboxing after this patch gets to the upstream. It&apos;s the next logical step and finalisation for OpenGL context handling.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211933</commentid>
    <comment_count>7</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2010-04-13 07:06:00 -0700</bug_when>
    <thetext>Kenneth, I recall I mentioned this yesterday briefly during the seesions. It seems Jarkko made a patch in the meantime :)

What do you think about passing through the canvas element here? It would really help us.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211981</commentid>
    <comment_count>8</comment_count>
      <attachid>53090</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-04-13 09:42:09 -0700</bug_when>
    <thetext>Comment on attachment 53090
Fixed style issues.

&gt; diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
&gt; index 6a38cff..55153cf 100644
&gt; --- a/WebCore/ChangeLog
&gt; +++ b/WebCore/ChangeLog
&gt; @@ -1,3 +1,20 @@
&gt; +2010-04-10  Jarkko Sakkinen  &lt;jarkko.j.sakkinen@gmail.com&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        [Qt] WebGL is not visible when QGLWidget viewport is used 
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=37070
&gt; +
&gt; +        * html/canvas/WebGLRenderingContext.cpp:
&gt; +        (WebCore::WebGLRenderingContext::create):
&gt; +        * platform/graphics/GraphicsContext3D.h:
&gt; +        * platform/graphics/qt/GraphicsContext3DQt.cpp:
&gt; +        (WebCore::GraphicsContext3DInternal::GraphicsContext3DInternal):
&gt; +        (WebCore::GraphicsContext3DInternal::~GraphicsContext3DInternal):
&gt; +        (WebCore::GraphicsContext3DInternal::getOwnerGLWidget):
&gt; +        (WebCore::GraphicsContext3D::create):
&gt; +        (WebCore::GraphicsContext3D::GraphicsContext3D):
&gt; +
&gt;  2010-04-09  Tasuku Suzuki  &lt;tasuku.suzuki@nokia.com&gt;
&gt;  
&gt;          Reviewed by Simon Hausmann.
&gt; diff --git a/WebCore/html/canvas/WebGLRenderingContext.cpp b/WebCore/html/canvas/WebGLRenderingContext.cpp
&gt; index bde49ad..94e9bb6 100644
&gt; --- a/WebCore/html/canvas/WebGLRenderingContext.cpp
&gt; +++ b/WebCore/html/canvas/WebGLRenderingContext.cpp
&gt; @@ -72,7 +72,12 @@ private:
&gt;  
&gt;  PassOwnPtr&lt;WebGLRenderingContext&gt; WebGLRenderingContext::create(HTMLCanvasElement* canvas, WebGLContextAttributes* attrs)
&gt;  {
&gt; +#if PLATFORM(QT)
&gt; +    OwnPtr&lt;GraphicsContext3D&gt; context(GraphicsContext3D::create(attrs-&gt;attributes(), canvas));
&gt; +#else
&gt;      OwnPtr&lt;GraphicsContext3D&gt; context(GraphicsContext3D::create(attrs-&gt;attributes()));
&gt; +#endif
&gt; +
&gt;      if (!context)
&gt;          return 0;
&gt;          
&gt; diff --git a/WebCore/platform/graphics/GraphicsContext3D.h b/WebCore/platform/graphics/GraphicsContext3D.h
&gt; index 96f77d9..4f8d1b6 100644
&gt; --- a/WebCore/platform/graphics/GraphicsContext3D.h
&gt; +++ b/WebCore/platform/graphics/GraphicsContext3D.h
&gt; @@ -49,7 +49,7 @@ const Platform3DObject NullPlatform3DObject = 0;
&gt;  
&gt;  typedef void* PlatformGraphicsContext3D;
&gt;  const  PlatformGraphicsContext3D NullPlatformGraphicsContext3D = 0;
&gt; -typedef int Platform3DObject;
&gt; +typedef GLuint Platform3DObject;
&gt;  const Platform3DObject NullPlatform3DObject = 0;
&gt;  #else
&gt;  typedef void* PlatformGraphicsContext3D;
&gt; @@ -73,6 +73,7 @@ namespace WebCore {
&gt;      class WebGLTexture;
&gt;      class Image;
&gt;      class ImageData;
&gt; +    class HTMLCanvasElement;
&gt;  
&gt;      struct ActiveInfo {
&gt;          String name;
&gt; @@ -410,7 +411,11 @@ namespace WebCore {
&gt;              bool premultipliedAlpha;
&gt;          };
&gt;  
&gt; +#if PLATFORM(QT)
&gt; +        static PassOwnPtr&lt;GraphicsContext3D&gt; create(Attributes attrs, HTMLCanvasElement* canvas);
&gt; +#else
&gt;          static PassOwnPtr&lt;GraphicsContext3D&gt; create(Attributes attrs);
&gt; +#endif
&gt;          virtual ~GraphicsContext3D();
&gt;  
&gt;  #if PLATFORM(MAC)
&gt; @@ -685,7 +690,11 @@ namespace WebCore {
&gt;          void synthesizeGLError(unsigned long error);
&gt;  
&gt;      private:        
&gt; +#if PLATFORM(QT)
&gt; +        GraphicsContext3D(Attributes attrs, HTMLCanvasElement* canvas);
&gt; +#else 
&gt;          GraphicsContext3D(Attributes attrs);
&gt; +#endif
&gt;  
&gt;          // Helpers for texture uploading.
&gt;          void premultiplyAlpha(unsigned char* rgbaData, int numPixels);
&gt; diff --git a/WebCore/platform/graphics/qt/GraphicsContext3DQt.cpp b/WebCore/platform/graphics/qt/GraphicsContext3DQt.cpp
&gt; index caa805c..ae42739 100644
&gt; --- a/WebCore/platform/graphics/qt/GraphicsContext3DQt.cpp
&gt; +++ b/WebCore/platform/graphics/qt/GraphicsContext3DQt.cpp
&gt; @@ -21,10 +21,13 @@
&gt;  #include &quot;GraphicsContext3D.h&quot;
&gt;  
&gt;  #include &quot;CanvasObject.h&quot;
&gt; +#include &quot;FrameView.h&quot;
&gt;  #include &quot;GraphicsContext.h&quot;
&gt;  #include &quot;HTMLCanvasElement.h&quot;
&gt; +#include &quot;HostWindow.h&quot;
&gt;  #include &quot;ImageBuffer.h&quot;
&gt;  #include &quot;NotImplemented.h&quot;
&gt; +#include &quot;QWebPageClient.h&quot;
&gt;  #include &quot;WebGLActiveInfo.h&quot;
&gt;  #include &quot;WebGLArray.h&quot;
&gt;  #include &quot;WebGLBuffer.h&quot;
&gt; @@ -37,6 +40,8 @@
&gt;  #include &quot;WebGLShader.h&quot;
&gt;  #include &quot;WebGLTexture.h&quot;
&gt;  #include &quot;WebGLUnsignedByteArray.h&quot;
&gt; +#include &quot;Widget.h&quot;
&gt; +#include &lt;QGraphicsView&gt;
&gt;  #include &lt;wtf/UnusedParam.h&gt;
&gt;  #include &lt;wtf/text/CString.h&gt;
&gt;  
&gt; @@ -147,13 +152,11 @@ typedef void (APIENTRY* glVertexAttribPointerType) (GLuint, GLint, GLenum, GLboo
&gt;  
&gt;  class GraphicsContext3DInternal {
&gt;  public:
&gt; -    GraphicsContext3DInternal(GraphicsContext3D::Attributes attrs);
&gt; +    GraphicsContext3DInternal(GraphicsContext3D::Attributes attrs, HTMLCanvasElement* canvas);
&gt;      ~GraphicsContext3DInternal();
&gt;  
&gt;      bool isContextValid() { return m_contextValid; }
&gt;  
&gt; -
&gt; -
&gt;      glActiveTextureType activeTexture;
&gt;      glAttachShaderType attachShader;
&gt;      glBindAttribLocationType bindAttribLocation;
&gt; @@ -255,6 +258,7 @@ public:
&gt;  
&gt;  private:
&gt;  
&gt; +    QGLWidget* getOwnerGLWidget(QWebPageClient* webPageClient);
&gt;      void* getProcAddress(const String&amp; proc);
&gt;      bool m_contextValid;
&gt;  };
&gt; @@ -265,7 +269,7 @@ private:
&gt;  #define GET_PROC_ADDRESS(Proc) reinterpret_cast&lt;Proc##Type&gt;(getProcAddress(#Proc));
&gt;  #endif
&gt;   
&gt; -GraphicsContext3DInternal::GraphicsContext3DInternal(GraphicsContext3D::Attributes attrs)
&gt; +GraphicsContext3DInternal::GraphicsContext3DInternal(GraphicsContext3D::Attributes attrs, HTMLCanvasElement* canvas)
&gt;      : m_attrs(attrs)
&gt;      , m_glWidget(0)
&gt;      , m_texture(0)
&gt; @@ -274,24 +278,33 @@ GraphicsContext3DInternal::GraphicsContext3DInternal(GraphicsContext3D::Attribut
&gt;      , m_depthBuffer(0)
&gt;      , m_contextValid(true)
&gt;  {
&gt; -    m_attrs.alpha = true;
&gt; -    m_attrs.depth = true;
&gt; -    m_attrs.stencil = false;
&gt; -    m_attrs.antialias = false;
&gt; -    m_attrs.premultipliedAlpha = true;
&gt; +    QWebPageClient* webPageClient = canvas-&gt;document()-&gt;view()-&gt;root()-&gt;hostWindow()-&gt;platformPageClient();

Passing the HTMLCanvasElement* is a layering violation. Eric Seidel and Adam Treat point out that the HostWindow* can and should be passed instead. The chain of calls above should be done in higher-level code.

Also, please make the change to WebCore/platform/graphics/mac/GraphicsContext3DMac.cpp and WebKit/chromium/src/GraphicsContext3D.cpp, and use an UNUSED_PARAM for the incoming HostView* on those platforms.

&gt; +    QGLWidget* ownerGLWidget  = getOwnerGLWidget(webPageClient);
&gt;  
&gt; -    QGLFormat format;
&gt; +    if (ownerGLWidget) 
&gt; +        m_glWidget = new QGLWidget(0, ownerGLWidget);
&gt; +    else {
&gt; +        QGLFormat format;
&gt; +        format.setDepth(true);
&gt; +        format.setSampleBuffers(true);
&gt; +        format.setStencil(false);
&gt;  
&gt; -    format.setDepth(true);
&gt; -    format.setSampleBuffers(true);
&gt; -    format.setStencil(false);
&gt; +        m_glWidget = new QGLWidget(format);
&gt; +    }
&gt;  
&gt; -    m_glWidget = new QGLWidget(format);
&gt;      if (!m_glWidget-&gt;isValid()) {
&gt;          LOG_ERROR(&quot;GraphicsContext3D: QGLWidget does not have a valid context&quot;);
&gt;          m_contextValid = false;
&gt;          return;
&gt;      }
&gt; + 
&gt; +    QGLFormat format = m_glWidget-&gt;format();
&gt; +
&gt; +    m_attrs.alpha = format.alpha();
&gt; +    m_attrs.depth = format.depth();
&gt; +    m_attrs.stencil = format.stencil();
&gt; +    m_attrs.antialias = false;
&gt; +    m_attrs.premultipliedAlpha = true;
&gt;  
&gt;      m_glWidget-&gt;makeCurrent();
&gt;  
&gt; @@ -428,7 +441,16 @@ GraphicsContext3DInternal::GraphicsContext3DInternal(GraphicsContext3D::Attribut
&gt;  GraphicsContext3DInternal::~GraphicsContext3DInternal()
&gt;  {
&gt;      delete m_glWidget;
&gt; -    m_glWidget = 0;
&gt; +}
&gt; +
&gt; +QGLWidget* GraphicsContext3DInternal::getOwnerGLWidget(QWebPageClient* webPageClient)
&gt; +{
&gt; +    QGraphicsView* ownerGraphicsView = qobject_cast&lt;QGraphicsView*&gt;(webPageClient-&gt;ownerWidget());
&gt; +
&gt; +    if (ownerGraphicsView) 
&gt; +        return qobject_cast&lt;QGLWidget*&gt;(ownerGraphicsView-&gt;viewport());
&gt; +
&gt; +    return 0;
&gt;  }
&gt;  
&gt;  void* GraphicsContext3DInternal::getProcAddress(const String&amp; proc)
&gt; @@ -448,14 +470,14 @@ void* GraphicsContext3DInternal::getProcAddress(const String&amp; proc)
&gt;      return 0;
&gt;  }
&gt;  
&gt; -PassOwnPtr&lt;GraphicsContext3D&gt; GraphicsContext3D::create(GraphicsContext3D::Attributes attrs)
&gt; +PassOwnPtr&lt;GraphicsContext3D&gt; GraphicsContext3D::create(GraphicsContext3D::Attributes attrs, HTMLCanvasElement* canvas)
&gt;  {
&gt; -    OwnPtr&lt;GraphicsContext3D&gt; context(new GraphicsContext3D(attrs));
&gt; +    OwnPtr&lt;GraphicsContext3D&gt; context(new GraphicsContext3D(attrs, canvas));
&gt;      return context-&gt;m_internal ? context.release() : 0;
&gt;  }
&gt;  
&gt; -GraphicsContext3D::GraphicsContext3D(GraphicsContext3D::Attributes attrs)
&gt; -    : m_internal(new GraphicsContext3DInternal(attrs))
&gt; +GraphicsContext3D::GraphicsContext3D(GraphicsContext3D::Attributes attrs, HTMLCanvasElement* canvas)
&gt; +    : m_internal(new GraphicsContext3DInternal(attrs, canvas))
&gt;  {
&gt;      if (!m_internal-&gt;isContextValid()) 
&gt;          m_internal = 0;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>212000</commentid>
    <comment_count>9</comment_count>
    <who name="Jarkko Sakkinen">jarkko.j.sakkinen</who>
    <bug_when>2010-04-13 10:44:58 -0700</bug_when>
    <thetext>Ok, I&apos;ll make those changes, thanks for input!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>212024</commentid>
    <comment_count>10</comment_count>
      <attachid>53267</attachid>
    <who name="Jarkko Sakkinen">jarkko.j.sakkinen</who>
    <bug_when>2010-04-13 11:32:02 -0700</bug_when>
    <thetext>Created attachment 53267
HostWindow parameter</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>212153</commentid>
    <comment_count>11</comment_count>
      <attachid>53267</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-04-13 16:44:09 -0700</bug_when>
    <thetext>Comment on attachment 53267
HostWindow parameter

Looks good overall. One minor issue.

&gt; diff --git a/WebKit/chromium/src/GraphicsContext3D.cpp b/WebKit/chromium/src/GraphicsContext3D.cpp
&gt; index 9fbe899..19bff11 100644
&gt; --- a/WebKit/chromium/src/GraphicsContext3D.cpp
&gt; +++ b/WebKit/chromium/src/GraphicsContext3D.cpp
&gt; @@ -1044,22 +1044,25 @@ rt GraphicsContext3D::name(t1 a1, t2 a2, t3 a3, t4 a4, t5 a5, t6 a6, t7 a7, t8 a
&gt;      return m_internal-&gt;name(a1, a2, a3, a4, a5, a6, a7, a8, a9);   \
&gt;  }
&gt;  
&gt; -GraphicsContext3D::GraphicsContext3D(GraphicsContext3D::Attributes attrs)
&gt; +GraphicsContext3D::GraphicsContext3D(GraphicsContext3D::Attributes attrs, HostWindow* hostWindow)
&gt;  {
&gt; +    UNUSED_PARAM(hostWindow);
&gt;  }
&gt;  
&gt;  GraphicsContext3D::~GraphicsContext3D()
&gt;  {
&gt;  }
&gt;  
&gt; -PassOwnPtr&lt;GraphicsContext3D&gt; GraphicsContext3D::create(GraphicsContext3D::Attributes attrs)
&gt; +PassOwnPtr&lt;GraphicsContext3D&gt; GraphicsContext3D::create(GraphicsContext3D::Attributes attrs, HostWindow* hostWindow)
&gt;  {
&gt; +    UNUSED_PARAM(hostWindow);
&gt; +

This UNUSED_PARAM is incorrect. The one in the constructor is correct.

Note that I&apos;m not a WebKit reviewer. CC&apos;ing a couple of other people who may be able to provide r+ for subsequent patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>212236</commentid>
    <comment_count>12</comment_count>
      <attachid>53319</attachid>
    <who name="Jarkko Sakkinen">jarkko.j.sakkinen</who>
    <bug_when>2010-04-13 22:45:18 -0700</bug_when>
    <thetext>Created attachment 53319
Removed UNUSED_PARAM from create method added by mistake</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>212292</commentid>
    <comment_count>13</comment_count>
      <attachid>53319</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-04-14 01:10:05 -0700</bug_when>
    <thetext>Comment on attachment 53319
Removed UNUSED_PARAM from create method added by mistake

Looks good to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>212957</commentid>
    <comment_count>14</comment_count>
      <attachid>53319</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2010-04-15 11:46:03 -0700</bug_when>
    <thetext>Comment on attachment 53319
Removed UNUSED_PARAM from create method added by mistake



&gt;  typedef void* PlatformGraphicsContext3D;
&gt;  const  PlatformGraphicsContext3D NullPlatformGraphicsContext3D = 0;
&gt; -typedef int Platform3DObject;
&gt; +typedef GLuint Platform3DObject;

The ChangeLog does not explain why this is needed.

&gt; -    m_attrs.alpha = true;
&gt; -    m_attrs.depth = true;
&gt; -    m_attrs.stencil = false;
&gt; -    m_attrs.antialias = false;
&gt; -    m_attrs.premultipliedAlpha = true;
&gt; +    QWebPageClient* webPageClient = hostWindow-&gt;platformPageClient();
&gt; +    QGLWidget* ownerGLWidget  = getOwnerGLWidget(webPageClient);
&gt;  
&gt; -    QGLFormat format;
&gt; +    if (ownerGLWidget) 
&gt; +        m_glWidget = new QGLWidget(0, ownerGLWidget);
&gt; +    else {
&gt; +        QGLFormat format;
&gt; +        format.setDepth(true);
&gt; +        format.setSampleBuffers(true);
&gt; +        format.setStencil(false);
&gt;  
&gt; -    format.setDepth(true);
&gt; -    format.setSampleBuffers(true);
&gt; -    format.setStencil(false);
&gt; +        m_glWidget = new QGLWidget(format);
&gt; +    }

I would like to see the removal of QGLWidget altogether if possible. Not in this patch though :)


&gt; +QGLWidget* GraphicsContext3DInternal::getOwnerGLWidget(QWebPageClient* webPageClient)
&gt; +{
&gt; +    QGraphicsView* ownerGraphicsView = qobject_cast&lt;QGraphicsView*&gt;(webPageClient-&gt;ownerWidget());
&gt; +
&gt; +    if (ownerGraphicsView) 
&gt; +        return qobject_cast&lt;QGLWidget*&gt;(ownerGraphicsView-&gt;viewport());
&gt; +
&gt; +    return 0;

viewport() is not a function of QGraphicsView but its base-class QAbstractScrollArea. So the qobject_cast should cast towards QAbstractScrollArea instead of QGraphicsView.

I suggest something along these lines:

QWidget* viewport = webPageClient-&gt;ownerWidget();
if (QAbstractScrollArea* scrollArea = qobject_cast&lt;QAbstractScrollArea*&gt;(viewport))
    viewport = scrollArea-&gt;viewport();

return qobject_cast&lt;QGLWidget*&gt;(viewport);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213069</commentid>
    <comment_count>15</comment_count>
    <who name="Jarkko Sakkinen">jarkko.j.sakkinen</who>
    <bug_when>2010-04-15 14:55:53 -0700</bug_when>
    <thetext>1. Oops, I think I forgot to clean up that change while experimenting AC and this patch. Not related in anyway to this patch. Will clean it up :)
2. I think I&apos;ll investigate that after AC integration is complete.
3. Ok, I&apos;ll do the necessary modifications.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213230</commentid>
    <comment_count>16</comment_count>
      <attachid>53522</attachid>
    <who name="Jarkko Sakkinen">jarkko.j.sakkinen</who>
    <bug_when>2010-04-16 01:00:04 -0700</bug_when>
    <thetext>Created attachment 53522
Review changes proposed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213231</commentid>
    <comment_count>17</comment_count>
      <attachid>53523</attachid>
    <who name="Jarkko Sakkinen">jarkko.j.sakkinen</who>
    <bug_when>2010-04-16 01:06:25 -0700</bug_when>
    <thetext>Created attachment 53523
Fixed ChangeLog entries.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213235</commentid>
    <comment_count>18</comment_count>
    <who name="Jarkko Sakkinen">jarkko.j.sakkinen</who>
    <bug_when>2010-04-16 03:02:23 -0700</bug_when>
    <thetext>Comment for not using QGLWidget would not be necessary why it does exist? For example, QGraphicsView would not need then QGLWidget viewport then in any case. My academic guess is that there is strong dependence for OpenGL QPaintDevice/QPaintEngine built into QGLContext. 

For shared context case (i.e. we have QGLWidget viewport), it might be possible to create just shared QGLContext (haven&apos;t got this work in reality though) but then the implementation would require either instance of QGLWidget or QGLContext and I think that is uglier than current approach. But anyway, this goes beyond scope of this bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213236</commentid>
    <comment_count>19</comment_count>
    <who name="Jarkko Sakkinen">jarkko.j.sakkinen</who>
    <bug_when>2010-04-16 03:03:26 -0700</bug_when>
    <thetext>Forgot &quot;could be turned around&quot; from the first sentence :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213241</commentid>
    <comment_count>20</comment_count>
    <who name="Jarkko Sakkinen">jarkko.j.sakkinen</who>
    <bug_when>2010-04-16 03:46:57 -0700</bug_when>
    <thetext>This thread mostly confirms everything mentioned: http://lists.trolltech.com/qt-interest/2008-08/thread00046-0.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213404</commentid>
    <comment_count>21</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2010-04-16 13:46:31 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; This thread mostly confirms everything mentioned:
&gt; http://lists.trolltech.com/qt-interest/2008-08/thread00046-0.html

Thanks, that&apos;s a good reference indeed. I think Trond&apos;s statement gives clarity: &quot;Just use the QGLPixelBuffer class for offscreen rendering.&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213434</commentid>
    <comment_count>22</comment_count>
      <attachid>53523</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-04-16 14:39:46 -0700</bug_when>
    <thetext>Comment on attachment 53523
Fixed ChangeLog entries.

Clearing flags on attachment: 53523

Committed r57747: &lt;http://trac.webkit.org/changeset/57747&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213435</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-04-16 14:39:52 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53049</attachid>
            <date>2010-04-10 12:41:58 -0700</date>
            <delta_ts>2010-04-11 08:04:40 -0700</delta_ts>
            <desc>Creates shared OpenGL context with QGLWidget viewport. This fill effectively also allow direct blitting instead of glReadPixels().</desc>
            <filename>qglwidget-shared-context.diff</filename>
            <type>text/plain</type>
            <size>8045</size>
            <attacher name="Jarkko Sakkinen">jarkko.j.sakkinen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NmEzOGNmZi4uNTUxNTNjZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxMC0wNC0xMCAgSmFya2tvIFNha2tp
bmVuICA8amFya2tvLmouc2Fra2luZW5AZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtRdF0gV2ViR0wgaXMgbm90IHZpc2libGUgd2hl
biBRR0xXaWRnZXQgdmlld3BvcnQgaXMgdXNlZCAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTM3MDcwCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJH
TFJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0OjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dDNELmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0
M0RRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpH
cmFwaGljc0NvbnRleHQzREludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNESW50ZXJuYWw6On5HcmFwaGljc0NvbnRleHQzREludGVybmFsKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmdldE93bmVyR0xXaWRnZXQpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzRDo6R3JhcGhpY3NDb250ZXh0M0QpOgorCiAyMDEwLTA0LTA5
ICBUYXN1a3UgU3V6dWtpICA8dGFzdWt1LnN1enVraUBub2tpYS5jb20+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggYmRlNDlhZC4uOTRlOWJiNiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtNzIsNyArNzIsMTIgQEAg
cHJpdmF0ZToKIAogUGFzc093blB0cjxXZWJHTFJlbmRlcmluZ0NvbnRleHQ+IFdlYkdMUmVuZGVy
aW5nQ29udGV4dDo6Y3JlYXRlKEhUTUxDYW52YXNFbGVtZW50KiBjYW52YXMsIFdlYkdMQ29udGV4
dEF0dHJpYnV0ZXMqIGF0dHJzKQogeworI2lmIFBMQVRGT1JNKFFUKQorICAgIE93blB0cjxHcmFw
aGljc0NvbnRleHQzRD4gY29udGV4dChHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlKGF0dHJzLT5h
dHRyaWJ1dGVzKCksIGNhbnZhcykpOworI2Vsc2UKICAgICBPd25QdHI8R3JhcGhpY3NDb250ZXh0
M0Q+IGNvbnRleHQoR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZShhdHRycy0+YXR0cmlidXRlcygp
KSk7CisjZW5kaWYKKwogICAgIGlmICghY29udGV4dCkKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
ICAgIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQzRC5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCmlu
ZGV4IDk2Zjc3ZDkuLjRmOGQxYjYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0M0QuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dDNELmgKQEAgLTQ5LDcgKzQ5LDcgQEAgY29uc3QgUGxhdGZvcm0zRE9iamVj
dCBOdWxsUGxhdGZvcm0zRE9iamVjdCA9IDA7CiAKIHR5cGVkZWYgdm9pZCogUGxhdGZvcm1HcmFw
aGljc0NvbnRleHQzRDsKIGNvbnN0ICBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEIE51bGxQbGF0
Zm9ybUdyYXBoaWNzQ29udGV4dDNEID0gMDsKLXR5cGVkZWYgaW50IFBsYXRmb3JtM0RPYmplY3Q7
Cit0eXBlZGVmIEdMdWludCBQbGF0Zm9ybTNET2JqZWN0OwogY29uc3QgUGxhdGZvcm0zRE9iamVj
dCBOdWxsUGxhdGZvcm0zRE9iamVjdCA9IDA7CiAjZWxzZQogdHlwZWRlZiB2b2lkKiBQbGF0Zm9y
bUdyYXBoaWNzQ29udGV4dDNEOwpAQCAtNzMsNiArNzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgY2xhc3MgV2ViR0xUZXh0dXJlOwogICAgIGNsYXNzIEltYWdlOwogICAgIGNsYXNzIElt
YWdlRGF0YTsKKyAgICBjbGFzcyBIVE1MQ2FudmFzRWxlbWVudDsKIAogICAgIHN0cnVjdCBBY3Rp
dmVJbmZvIHsKICAgICAgICAgU3RyaW5nIG5hbWU7CkBAIC00MTAsNyArNDExLDExIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIGJvb2wgcHJlbXVsdGlwbGllZEFscGhhOwogICAg
ICAgICB9OwogCisjaWYgUExBVEZPUk0oUVQpCisgICAgICAgIHN0YXRpYyBQYXNzT3duUHRyPEdy
YXBoaWNzQ29udGV4dDNEPiBjcmVhdGUoQXR0cmlidXRlcyBhdHRycywgSFRNTENhbnZhc0VsZW1l
bnQqIGNhbnZhcyk7CisjZWxzZQogICAgICAgICBzdGF0aWMgUGFzc093blB0cjxHcmFwaGljc0Nv
bnRleHQzRD4gY3JlYXRlKEF0dHJpYnV0ZXMgYXR0cnMpOworI2VuZGlmCiAgICAgICAgIHZpcnR1
YWwgfkdyYXBoaWNzQ29udGV4dDNEKCk7CiAKICNpZiBQTEFURk9STShNQUMpCkBAIC02ODUsNyAr
NjkwLDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBzeW50aGVzaXplR0xF
cnJvcih1bnNpZ25lZCBsb25nIGVycm9yKTsKIAogICAgIHByaXZhdGU6ICAgICAgICAKKyNpZiBQ
TEFURk9STShRVCkKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0M0QoQXR0cmlidXRlcyBhdHRycywg
SFRNTENhbnZhc0VsZW1lbnQqIGNhbnZhcyk7CisjZWxzZSAKICAgICAgICAgR3JhcGhpY3NDb250
ZXh0M0QoQXR0cmlidXRlcyBhdHRycyk7CisjZW5kaWYKIAogICAgICAgICAvLyBIZWxwZXJzIGZv
ciB0ZXh0dXJlIHVwbG9hZGluZy4KICAgICAgICAgdm9pZCBwcmVtdWx0aXBseUFscGhhKHVuc2ln
bmVkIGNoYXIqIHJnYmFEYXRhLCBpbnQgbnVtUGl4ZWxzKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAgYi9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwCmluZGV4IGNhYTgwNWMu
LmQxOGNjNDIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhp
Y3NDb250ZXh0M0RRdC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFw
aGljc0NvbnRleHQzRFF0LmNwcApAQCAtMjEsMTAgKzIxLDEzIEBACiAjaW5jbHVkZSAiR3JhcGhp
Y3NDb250ZXh0M0QuaCIKIAogI2luY2x1ZGUgIkNhbnZhc09iamVjdC5oIgorI2luY2x1ZGUgIkZy
YW1lVmlldy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkhUTUxD
YW52YXNFbGVtZW50LmgiCisjaW5jbHVkZSAiSG9zdFdpbmRvdy5oIgogI2luY2x1ZGUgIkltYWdl
QnVmZmVyLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJRV2ViUGFn
ZUNsaWVudC5oIgogI2luY2x1ZGUgIldlYkdMQWN0aXZlSW5mby5oIgogI2luY2x1ZGUgIldlYkdM
QXJyYXkuaCIKICNpbmNsdWRlICJXZWJHTEJ1ZmZlci5oIgpAQCAtMzcsOCArNDAsMTAgQEAKICNp
bmNsdWRlICJXZWJHTFNoYWRlci5oIgogI2luY2x1ZGUgIldlYkdMVGV4dHVyZS5oIgogI2luY2x1
ZGUgIldlYkdMVW5zaWduZWRCeXRlQXJyYXkuaCIKKyNpbmNsdWRlICJXaWRnZXQuaCIKICNpbmNs
dWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Cisj
aW5jbHVkZSA8UUdyYXBoaWNzVmlldz4KIAogI2lmIEVOQUJMRSgzRF9DQU5WQVMpCiAKQEAgLTE0
NywxMyArMTUyLDExIEBAIHR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVmVydGV4QXR0cmliUG9p
bnRlclR5cGUpIChHTHVpbnQsIEdMaW50LCBHTGVudW0sIEdMYm9vCiAKIGNsYXNzIEdyYXBoaWNz
Q29udGV4dDNESW50ZXJuYWwgewogcHVibGljOgotICAgIEdyYXBoaWNzQ29udGV4dDNESW50ZXJu
YWwoR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cnMpOworICAgIEdyYXBoaWNzQ29u
dGV4dDNESW50ZXJuYWwoR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cnMsIEhUTUxD
YW52YXNFbGVtZW50KiBjYW52YXMpOwogICAgIH5HcmFwaGljc0NvbnRleHQzREludGVybmFsKCk7
CiAKICAgICBib29sIGlzQ29udGV4dFZhbGlkKCkgeyByZXR1cm4gbV9jb250ZXh0VmFsaWQ7IH0K
IAotCi0KICAgICBnbEFjdGl2ZVRleHR1cmVUeXBlIGFjdGl2ZVRleHR1cmU7CiAgICAgZ2xBdHRh
Y2hTaGFkZXJUeXBlIGF0dGFjaFNoYWRlcjsKICAgICBnbEJpbmRBdHRyaWJMb2NhdGlvblR5cGUg
YmluZEF0dHJpYkxvY2F0aW9uOwpAQCAtMjU1LDYgKzI1OCw3IEBAIHB1YmxpYzoKIAogcHJpdmF0
ZToKIAorICAgIFFHTFdpZGdldCogZ2V0T3duZXJHTFdpZGdldChRV2ViUGFnZUNsaWVudCogd2Vi
UGFnZUNsaWVudCk7CiAgICAgdm9pZCogZ2V0UHJvY0FkZHJlc3MoY29uc3QgU3RyaW5nJiBwcm9j
KTsKICAgICBib29sIG1fY29udGV4dFZhbGlkOwogfTsKQEAgLTI2NSw3ICsyNjksNyBAQCBwcml2
YXRlOgogI2RlZmluZSBHRVRfUFJPQ19BRERSRVNTKFByb2MpIHJlaW50ZXJwcmV0X2Nhc3Q8UHJv
YyMjVHlwZT4oZ2V0UHJvY0FkZHJlc3MoI1Byb2MpKTsKICNlbmRpZgogIAotR3JhcGhpY3NDb250
ZXh0M0RJbnRlcm5hbDo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbChHcmFwaGljc0NvbnRleHQz
RDo6QXR0cmlidXRlcyBhdHRycykKK0dyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OkdyYXBoaWNz
Q29udGV4dDNESW50ZXJuYWwoR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cnMsIEhU
TUxDYW52YXNFbGVtZW50KiBjYW52YXMpCiAgICAgOiBtX2F0dHJzKGF0dHJzKQogICAgICwgbV9n
bFdpZGdldCgwKQogICAgICwgbV90ZXh0dXJlKDApCkBAIC0yNzQsMjQgKzI3OCwzMyBAQCBHcmFw
aGljc0NvbnRleHQzREludGVybmFsOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsKEdyYXBoaWNz
Q29udGV4dDNEOjpBdHRyaWJ1dAogICAgICwgbV9kZXB0aEJ1ZmZlcigwKQogICAgICwgbV9jb250
ZXh0VmFsaWQodHJ1ZSkKIHsKLSAgICBtX2F0dHJzLmFscGhhID0gdHJ1ZTsKLSAgICBtX2F0dHJz
LmRlcHRoID0gdHJ1ZTsKLSAgICBtX2F0dHJzLnN0ZW5jaWwgPSBmYWxzZTsKLSAgICBtX2F0dHJz
LmFudGlhbGlhcyA9IGZhbHNlOwotICAgIG1fYXR0cnMucHJlbXVsdGlwbGllZEFscGhhID0gdHJ1
ZTsKKyAgICBRV2ViUGFnZUNsaWVudCogd2ViUGFnZUNsaWVudCA9IGNhbnZhcy0+ZG9jdW1lbnQo
KS0+dmlldygpLT5yb290KCktPmhvc3RXaW5kb3coKS0+cGxhdGZvcm1QYWdlQ2xpZW50KCk7Cisg
ICAgUUdMV2lkZ2V0KiBvd25lckdMV2lkZ2V0ICA9IGdldE93bmVyR0xXaWRnZXQod2ViUGFnZUNs
aWVudCk7CiAKLSAgICBRR0xGb3JtYXQgZm9ybWF0OworICAgIGlmIChvd25lckdMV2lkZ2V0KSB7
CisgICAgICAgIG1fZ2xXaWRnZXQgPSBuZXcgUUdMV2lkZ2V0KDAsIG93bmVyR0xXaWRnZXQpOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIFFHTEZvcm1hdCBmb3JtYXQ7CisgICAgICAgIGZvcm1hdC5z
ZXREZXB0aCh0cnVlKTsKKyAgICAgICAgZm9ybWF0LnNldFNhbXBsZUJ1ZmZlcnModHJ1ZSk7Cisg
ICAgICAgIGZvcm1hdC5zZXRTdGVuY2lsKGZhbHNlKTsKIAotICAgIGZvcm1hdC5zZXREZXB0aCh0
cnVlKTsKLSAgICBmb3JtYXQuc2V0U2FtcGxlQnVmZmVycyh0cnVlKTsKLSAgICBmb3JtYXQuc2V0
U3RlbmNpbChmYWxzZSk7CisgICAgICAgIG1fZ2xXaWRnZXQgPSBuZXcgUUdMV2lkZ2V0KGZvcm1h
dCk7CisgICAgfQogCi0gICAgbV9nbFdpZGdldCA9IG5ldyBRR0xXaWRnZXQoZm9ybWF0KTsKICAg
ICBpZiAoIW1fZ2xXaWRnZXQtPmlzVmFsaWQoKSkgewogICAgICAgICBMT0dfRVJST1IoIkdyYXBo
aWNzQ29udGV4dDNEOiBRR0xXaWRnZXQgZG9lcyBub3QgaGF2ZSBhIHZhbGlkIGNvbnRleHQiKTsK
ICAgICAgICAgbV9jb250ZXh0VmFsaWQgPSBmYWxzZTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
KyAKKyAgICBRR0xGb3JtYXQgZm9ybWF0ID0gbV9nbFdpZGdldC0+Zm9ybWF0KCk7CisKKyAgICBt
X2F0dHJzLmFscGhhID0gZm9ybWF0LmFscGhhKCk7CisgICAgbV9hdHRycy5kZXB0aCA9IGZvcm1h
dC5kZXB0aCgpOworICAgIG1fYXR0cnMuc3RlbmNpbCA9IGZvcm1hdC5zdGVuY2lsKCk7CisgICAg
bV9hdHRycy5hbnRpYWxpYXMgPSBmYWxzZTsKKyAgICBtX2F0dHJzLnByZW11bHRpcGxpZWRBbHBo
YSA9IHRydWU7CiAKICAgICBtX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwogCkBAIC00MjgsNyAr
NDQxLDE2IEBAIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OkdyYXBoaWNzQ29udGV4dDNESW50
ZXJuYWwoR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0CiBHcmFwaGljc0NvbnRleHQzREludGVy
bmFsOjp+R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbCgpCiB7CiAgICAgZGVsZXRlIG1fZ2xXaWRn
ZXQ7Ci0gICAgbV9nbFdpZGdldCA9IDA7Cit9CisKK1FHTFdpZGdldCogR3JhcGhpY3NDb250ZXh0
M0RJbnRlcm5hbDo6Z2V0T3duZXJHTFdpZGdldChRV2ViUGFnZUNsaWVudCogd2ViUGFnZUNsaWVu
dCkKK3sKKyAgICBRR3JhcGhpY3NWaWV3KiBvd25lckdyYXBoaWNzVmlldyA9IHFvYmplY3RfY2Fz
dDxRR3JhcGhpY3NWaWV3Kj4od2ViUGFnZUNsaWVudC0+b3duZXJXaWRnZXQoKSk7CisKKyAgICBp
ZiAob3duZXJHcmFwaGljc1ZpZXcpIAorICAgICAgICByZXR1cm4gcW9iamVjdF9jYXN0PFFHTFdp
ZGdldCo+KG93bmVyR3JhcGhpY3NWaWV3LT52aWV3cG9ydCgpKTsKKworICAgIHJldHVybiAwOwog
fQogCiB2b2lkKiBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpnZXRQcm9jQWRkcmVzcyhjb25z
dCBTdHJpbmcmIHByb2MpCkBAIC00NDgsMTQgKzQ3MCwxNCBAQCB2b2lkKiBHcmFwaGljc0NvbnRl
eHQzREludGVybmFsOjpnZXRQcm9jQWRkcmVzcyhjb25zdCBTdHJpbmcmIHByb2MpCiAgICAgcmV0
dXJuIDA7CiB9CiAKLVBhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0M0Q+IEdyYXBoaWNzQ29udGV4
dDNEOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cnMpCitQYXNzT3du
UHRyPEdyYXBoaWNzQ29udGV4dDNEPiBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlKEdyYXBoaWNz
Q29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJzLCBIVE1MQ2FudmFzRWxlbWVudCogY2FudmFzKQog
ewotICAgIE93blB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dChuZXcgR3JhcGhpY3NDb250
ZXh0M0QoYXR0cnMpKTsKKyAgICBPd25QdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQobmV3
IEdyYXBoaWNzQ29udGV4dDNEKGF0dHJzLCBjYW52YXMpKTsKICAgICByZXR1cm4gY29udGV4dC0+
bV9pbnRlcm5hbCA/IGNvbnRleHQucmVsZWFzZSgpIDogMDsKIH0KIAotR3JhcGhpY3NDb250ZXh0
M0Q6OkdyYXBoaWNzQ29udGV4dDNEKEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJz
KQotICAgIDogbV9pbnRlcm5hbChuZXcgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbChhdHRycykp
CitHcmFwaGljc0NvbnRleHQzRDo6R3JhcGhpY3NDb250ZXh0M0QoR3JhcGhpY3NDb250ZXh0M0Q6
OkF0dHJpYnV0ZXMgYXR0cnMsIEhUTUxDYW52YXNFbGVtZW50KiBjYW52YXMpCisgICAgOiBtX2lu
dGVybmFsKG5ldyBHcmFwaGljc0NvbnRleHQzREludGVybmFsKGF0dHJzLCBjYW52YXMpKQogewog
ICAgIGlmICghbV9pbnRlcm5hbC0+aXNDb250ZXh0VmFsaWQoKSkgCiAgICAgICAgIG1faW50ZXJu
YWwgPSAwOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53090</attachid>
            <date>2010-04-11 08:04:40 -0700</date>
            <delta_ts>2010-04-13 11:32:02 -0700</delta_ts>
            <desc>Fixed style issues.</desc>
            <filename>qglwidget-shared-context-2.diff</filename>
            <type>text/plain</type>
            <size>8016</size>
            <attacher name="Jarkko Sakkinen">jarkko.j.sakkinen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NmEzOGNmZi4uNTUxNTNjZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxMC0wNC0xMCAgSmFya2tvIFNha2tp
bmVuICA8amFya2tvLmouc2Fra2luZW5AZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtRdF0gV2ViR0wgaXMgbm90IHZpc2libGUgd2hl
biBRR0xXaWRnZXQgdmlld3BvcnQgaXMgdXNlZCAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTM3MDcwCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJH
TFJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0OjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dDNELmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0
M0RRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpH
cmFwaGljc0NvbnRleHQzREludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNESW50ZXJuYWw6On5HcmFwaGljc0NvbnRleHQzREludGVybmFsKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmdldE93bmVyR0xXaWRnZXQpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzRDo6R3JhcGhpY3NDb250ZXh0M0QpOgorCiAyMDEwLTA0LTA5
ICBUYXN1a3UgU3V6dWtpICA8dGFzdWt1LnN1enVraUBub2tpYS5jb20+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggYmRlNDlhZC4uOTRlOWJiNiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtNzIsNyArNzIsMTIgQEAg
cHJpdmF0ZToKIAogUGFzc093blB0cjxXZWJHTFJlbmRlcmluZ0NvbnRleHQ+IFdlYkdMUmVuZGVy
aW5nQ29udGV4dDo6Y3JlYXRlKEhUTUxDYW52YXNFbGVtZW50KiBjYW52YXMsIFdlYkdMQ29udGV4
dEF0dHJpYnV0ZXMqIGF0dHJzKQogeworI2lmIFBMQVRGT1JNKFFUKQorICAgIE93blB0cjxHcmFw
aGljc0NvbnRleHQzRD4gY29udGV4dChHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlKGF0dHJzLT5h
dHRyaWJ1dGVzKCksIGNhbnZhcykpOworI2Vsc2UKICAgICBPd25QdHI8R3JhcGhpY3NDb250ZXh0
M0Q+IGNvbnRleHQoR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZShhdHRycy0+YXR0cmlidXRlcygp
KSk7CisjZW5kaWYKKwogICAgIGlmICghY29udGV4dCkKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
ICAgIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQzRC5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCmlu
ZGV4IDk2Zjc3ZDkuLjRmOGQxYjYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0M0QuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dDNELmgKQEAgLTQ5LDcgKzQ5LDcgQEAgY29uc3QgUGxhdGZvcm0zRE9iamVj
dCBOdWxsUGxhdGZvcm0zRE9iamVjdCA9IDA7CiAKIHR5cGVkZWYgdm9pZCogUGxhdGZvcm1HcmFw
aGljc0NvbnRleHQzRDsKIGNvbnN0ICBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEIE51bGxQbGF0
Zm9ybUdyYXBoaWNzQ29udGV4dDNEID0gMDsKLXR5cGVkZWYgaW50IFBsYXRmb3JtM0RPYmplY3Q7
Cit0eXBlZGVmIEdMdWludCBQbGF0Zm9ybTNET2JqZWN0OwogY29uc3QgUGxhdGZvcm0zRE9iamVj
dCBOdWxsUGxhdGZvcm0zRE9iamVjdCA9IDA7CiAjZWxzZQogdHlwZWRlZiB2b2lkKiBQbGF0Zm9y
bUdyYXBoaWNzQ29udGV4dDNEOwpAQCAtNzMsNiArNzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgY2xhc3MgV2ViR0xUZXh0dXJlOwogICAgIGNsYXNzIEltYWdlOwogICAgIGNsYXNzIElt
YWdlRGF0YTsKKyAgICBjbGFzcyBIVE1MQ2FudmFzRWxlbWVudDsKIAogICAgIHN0cnVjdCBBY3Rp
dmVJbmZvIHsKICAgICAgICAgU3RyaW5nIG5hbWU7CkBAIC00MTAsNyArNDExLDExIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIGJvb2wgcHJlbXVsdGlwbGllZEFscGhhOwogICAg
ICAgICB9OwogCisjaWYgUExBVEZPUk0oUVQpCisgICAgICAgIHN0YXRpYyBQYXNzT3duUHRyPEdy
YXBoaWNzQ29udGV4dDNEPiBjcmVhdGUoQXR0cmlidXRlcyBhdHRycywgSFRNTENhbnZhc0VsZW1l
bnQqIGNhbnZhcyk7CisjZWxzZQogICAgICAgICBzdGF0aWMgUGFzc093blB0cjxHcmFwaGljc0Nv
bnRleHQzRD4gY3JlYXRlKEF0dHJpYnV0ZXMgYXR0cnMpOworI2VuZGlmCiAgICAgICAgIHZpcnR1
YWwgfkdyYXBoaWNzQ29udGV4dDNEKCk7CiAKICNpZiBQTEFURk9STShNQUMpCkBAIC02ODUsNyAr
NjkwLDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBzeW50aGVzaXplR0xF
cnJvcih1bnNpZ25lZCBsb25nIGVycm9yKTsKIAogICAgIHByaXZhdGU6ICAgICAgICAKKyNpZiBQ
TEFURk9STShRVCkKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0M0QoQXR0cmlidXRlcyBhdHRycywg
SFRNTENhbnZhc0VsZW1lbnQqIGNhbnZhcyk7CisjZWxzZSAKICAgICAgICAgR3JhcGhpY3NDb250
ZXh0M0QoQXR0cmlidXRlcyBhdHRycyk7CisjZW5kaWYKIAogICAgICAgICAvLyBIZWxwZXJzIGZv
ciB0ZXh0dXJlIHVwbG9hZGluZy4KICAgICAgICAgdm9pZCBwcmVtdWx0aXBseUFscGhhKHVuc2ln
bmVkIGNoYXIqIHJnYmFEYXRhLCBpbnQgbnVtUGl4ZWxzKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAgYi9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwCmluZGV4IGNhYTgwNWMu
LmFlNDI3MzkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhp
Y3NDb250ZXh0M0RRdC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFw
aGljc0NvbnRleHQzRFF0LmNwcApAQCAtMjEsMTAgKzIxLDEzIEBACiAjaW5jbHVkZSAiR3JhcGhp
Y3NDb250ZXh0M0QuaCIKIAogI2luY2x1ZGUgIkNhbnZhc09iamVjdC5oIgorI2luY2x1ZGUgIkZy
YW1lVmlldy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkhUTUxD
YW52YXNFbGVtZW50LmgiCisjaW5jbHVkZSAiSG9zdFdpbmRvdy5oIgogI2luY2x1ZGUgIkltYWdl
QnVmZmVyLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJRV2ViUGFn
ZUNsaWVudC5oIgogI2luY2x1ZGUgIldlYkdMQWN0aXZlSW5mby5oIgogI2luY2x1ZGUgIldlYkdM
QXJyYXkuaCIKICNpbmNsdWRlICJXZWJHTEJ1ZmZlci5oIgpAQCAtMzcsNiArNDAsOCBAQAogI2lu
Y2x1ZGUgIldlYkdMU2hhZGVyLmgiCiAjaW5jbHVkZSAiV2ViR0xUZXh0dXJlLmgiCiAjaW5jbHVk
ZSAiV2ViR0xVbnNpZ25lZEJ5dGVBcnJheS5oIgorI2luY2x1ZGUgIldpZGdldC5oIgorI2luY2x1
ZGUgPFFHcmFwaGljc1ZpZXc+CiAjaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCkBAIC0xNDcsMTMgKzE1MiwxMSBAQCB0eXBlZGVmIHZv
aWQgKEFQSUVOVFJZKiBnbFZlcnRleEF0dHJpYlBvaW50ZXJUeXBlKSAoR0x1aW50LCBHTGludCwg
R0xlbnVtLCBHTGJvbwogCiBjbGFzcyBHcmFwaGljc0NvbnRleHQzREludGVybmFsIHsKIHB1Ymxp
YzoKLSAgICBHcmFwaGljc0NvbnRleHQzREludGVybmFsKEdyYXBoaWNzQ29udGV4dDNEOjpBdHRy
aWJ1dGVzIGF0dHJzKTsKKyAgICBHcmFwaGljc0NvbnRleHQzREludGVybmFsKEdyYXBoaWNzQ29u
dGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJzLCBIVE1MQ2FudmFzRWxlbWVudCogY2FudmFzKTsKICAg
ICB+R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbCgpOwogCiAgICAgYm9vbCBpc0NvbnRleHRWYWxp
ZCgpIHsgcmV0dXJuIG1fY29udGV4dFZhbGlkOyB9CiAKLQotCiAgICAgZ2xBY3RpdmVUZXh0dXJl
VHlwZSBhY3RpdmVUZXh0dXJlOwogICAgIGdsQXR0YWNoU2hhZGVyVHlwZSBhdHRhY2hTaGFkZXI7
CiAgICAgZ2xCaW5kQXR0cmliTG9jYXRpb25UeXBlIGJpbmRBdHRyaWJMb2NhdGlvbjsKQEAgLTI1
NSw2ICsyNTgsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAKKyAgICBRR0xXaWRnZXQqIGdldE93
bmVyR0xXaWRnZXQoUVdlYlBhZ2VDbGllbnQqIHdlYlBhZ2VDbGllbnQpOwogICAgIHZvaWQqIGdl
dFByb2NBZGRyZXNzKGNvbnN0IFN0cmluZyYgcHJvYyk7CiAgICAgYm9vbCBtX2NvbnRleHRWYWxp
ZDsKIH07CkBAIC0yNjUsNyArMjY5LDcgQEAgcHJpdmF0ZToKICNkZWZpbmUgR0VUX1BST0NfQURE
UkVTUyhQcm9jKSByZWludGVycHJldF9jYXN0PFByb2MjI1R5cGU+KGdldFByb2NBZGRyZXNzKCNQ
cm9jKSk7CiAjZW5kaWYKICAKLUdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OkdyYXBoaWNzQ29u
dGV4dDNESW50ZXJuYWwoR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cnMpCitHcmFw
aGljc0NvbnRleHQzREludGVybmFsOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsKEdyYXBoaWNz
Q29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJzLCBIVE1MQ2FudmFzRWxlbWVudCogY2FudmFzKQog
ICAgIDogbV9hdHRycyhhdHRycykKICAgICAsIG1fZ2xXaWRnZXQoMCkKICAgICAsIG1fdGV4dHVy
ZSgwKQpAQCAtMjc0LDI0ICsyNzgsMzMgQEAgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6R3Jh
cGhpY3NDb250ZXh0M0RJbnRlcm5hbChHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXQKICAgICAs
IG1fZGVwdGhCdWZmZXIoMCkKICAgICAsIG1fY29udGV4dFZhbGlkKHRydWUpCiB7Ci0gICAgbV9h
dHRycy5hbHBoYSA9IHRydWU7Ci0gICAgbV9hdHRycy5kZXB0aCA9IHRydWU7Ci0gICAgbV9hdHRy
cy5zdGVuY2lsID0gZmFsc2U7Ci0gICAgbV9hdHRycy5hbnRpYWxpYXMgPSBmYWxzZTsKLSAgICBt
X2F0dHJzLnByZW11bHRpcGxpZWRBbHBoYSA9IHRydWU7CisgICAgUVdlYlBhZ2VDbGllbnQqIHdl
YlBhZ2VDbGllbnQgPSBjYW52YXMtPmRvY3VtZW50KCktPnZpZXcoKS0+cm9vdCgpLT5ob3N0V2lu
ZG93KCktPnBsYXRmb3JtUGFnZUNsaWVudCgpOworICAgIFFHTFdpZGdldCogb3duZXJHTFdpZGdl
dCAgPSBnZXRPd25lckdMV2lkZ2V0KHdlYlBhZ2VDbGllbnQpOwogCi0gICAgUUdMRm9ybWF0IGZv
cm1hdDsKKyAgICBpZiAob3duZXJHTFdpZGdldCkgCisgICAgICAgIG1fZ2xXaWRnZXQgPSBuZXcg
UUdMV2lkZ2V0KDAsIG93bmVyR0xXaWRnZXQpOworICAgIGVsc2UgeworICAgICAgICBRR0xGb3Jt
YXQgZm9ybWF0OworICAgICAgICBmb3JtYXQuc2V0RGVwdGgodHJ1ZSk7CisgICAgICAgIGZvcm1h
dC5zZXRTYW1wbGVCdWZmZXJzKHRydWUpOworICAgICAgICBmb3JtYXQuc2V0U3RlbmNpbChmYWxz
ZSk7CiAKLSAgICBmb3JtYXQuc2V0RGVwdGgodHJ1ZSk7Ci0gICAgZm9ybWF0LnNldFNhbXBsZUJ1
ZmZlcnModHJ1ZSk7Ci0gICAgZm9ybWF0LnNldFN0ZW5jaWwoZmFsc2UpOworICAgICAgICBtX2ds
V2lkZ2V0ID0gbmV3IFFHTFdpZGdldChmb3JtYXQpOworICAgIH0KIAotICAgIG1fZ2xXaWRnZXQg
PSBuZXcgUUdMV2lkZ2V0KGZvcm1hdCk7CiAgICAgaWYgKCFtX2dsV2lkZ2V0LT5pc1ZhbGlkKCkp
IHsKICAgICAgICAgTE9HX0VSUk9SKCJHcmFwaGljc0NvbnRleHQzRDogUUdMV2lkZ2V0IGRvZXMg
bm90IGhhdmUgYSB2YWxpZCBjb250ZXh0Iik7CiAgICAgICAgIG1fY29udGV4dFZhbGlkID0gZmFs
c2U7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgCisgICAgUUdMRm9ybWF0IGZvcm1hdCA9IG1f
Z2xXaWRnZXQtPmZvcm1hdCgpOworCisgICAgbV9hdHRycy5hbHBoYSA9IGZvcm1hdC5hbHBoYSgp
OworICAgIG1fYXR0cnMuZGVwdGggPSBmb3JtYXQuZGVwdGgoKTsKKyAgICBtX2F0dHJzLnN0ZW5j
aWwgPSBmb3JtYXQuc3RlbmNpbCgpOworICAgIG1fYXR0cnMuYW50aWFsaWFzID0gZmFsc2U7Cisg
ICAgbV9hdHRycy5wcmVtdWx0aXBsaWVkQWxwaGEgPSB0cnVlOwogCiAgICAgbV9nbFdpZGdldC0+
bWFrZUN1cnJlbnQoKTsKIApAQCAtNDI4LDcgKzQ0MSwxNiBAQCBHcmFwaGljc0NvbnRleHQzRElu
dGVybmFsOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsKEdyYXBoaWNzQ29udGV4dDNEOjpBdHRy
aWJ1dAogR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6fkdyYXBoaWNzQ29udGV4dDNESW50ZXJu
YWwoKQogewogICAgIGRlbGV0ZSBtX2dsV2lkZ2V0OwotICAgIG1fZ2xXaWRnZXQgPSAwOworfQor
CitRR0xXaWRnZXQqIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmdldE93bmVyR0xXaWRnZXQo
UVdlYlBhZ2VDbGllbnQqIHdlYlBhZ2VDbGllbnQpCit7CisgICAgUUdyYXBoaWNzVmlldyogb3du
ZXJHcmFwaGljc1ZpZXcgPSBxb2JqZWN0X2Nhc3Q8UUdyYXBoaWNzVmlldyo+KHdlYlBhZ2VDbGll
bnQtPm93bmVyV2lkZ2V0KCkpOworCisgICAgaWYgKG93bmVyR3JhcGhpY3NWaWV3KSAKKyAgICAg
ICAgcmV0dXJuIHFvYmplY3RfY2FzdDxRR0xXaWRnZXQqPihvd25lckdyYXBoaWNzVmlldy0+dmll
d3BvcnQoKSk7CisKKyAgICByZXR1cm4gMDsKIH0KIAogdm9pZCogR3JhcGhpY3NDb250ZXh0M0RJ
bnRlcm5hbDo6Z2V0UHJvY0FkZHJlc3MoY29uc3QgU3RyaW5nJiBwcm9jKQpAQCAtNDQ4LDE0ICs0
NzAsMTQgQEAgdm9pZCogR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Z2V0UHJvY0FkZHJlc3Mo
Y29uc3QgU3RyaW5nJiBwcm9jKQogICAgIHJldHVybiAwOwogfQogCi1QYXNzT3duUHRyPEdyYXBo
aWNzQ29udGV4dDNEPiBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dDNE
OjpBdHRyaWJ1dGVzIGF0dHJzKQorUGFzc093blB0cjxHcmFwaGljc0NvbnRleHQzRD4gR3JhcGhp
Y3NDb250ZXh0M0Q6OmNyZWF0ZShHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRycywg
SFRNTENhbnZhc0VsZW1lbnQqIGNhbnZhcykKIHsKLSAgICBPd25QdHI8R3JhcGhpY3NDb250ZXh0
M0Q+IGNvbnRleHQobmV3IEdyYXBoaWNzQ29udGV4dDNEKGF0dHJzKSk7CisgICAgT3duUHRyPEdy
YXBoaWNzQ29udGV4dDNEPiBjb250ZXh0KG5ldyBHcmFwaGljc0NvbnRleHQzRChhdHRycywgY2Fu
dmFzKSk7CiAgICAgcmV0dXJuIGNvbnRleHQtPm1faW50ZXJuYWwgPyBjb250ZXh0LnJlbGVhc2Uo
KSA6IDA7CiB9CiAKLUdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRChHcmFwaGlj
c0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRycykKLSAgICA6IG1faW50ZXJuYWwobmV3IEdyYXBo
aWNzQ29udGV4dDNESW50ZXJuYWwoYXR0cnMpKQorR3JhcGhpY3NDb250ZXh0M0Q6OkdyYXBoaWNz
Q29udGV4dDNEKEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJzLCBIVE1MQ2FudmFz
RWxlbWVudCogY2FudmFzKQorICAgIDogbV9pbnRlcm5hbChuZXcgR3JhcGhpY3NDb250ZXh0M0RJ
bnRlcm5hbChhdHRycywgY2FudmFzKSkKIHsKICAgICBpZiAoIW1faW50ZXJuYWwtPmlzQ29udGV4
dFZhbGlkKCkpIAogICAgICAgICBtX2ludGVybmFsID0gMDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53267</attachid>
            <date>2010-04-13 11:32:02 -0700</date>
            <delta_ts>2010-04-13 22:45:18 -0700</delta_ts>
            <desc>HostWindow parameter</desc>
            <filename>37070-3.diff</filename>
            <type>text/plain</type>
            <size>11765</size>
            <attacher name="Jarkko Sakkinen">jarkko.j.sakkinen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NmEzOGNmZi4uMWJiZGMyNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxMC0wNC0xMyAgSmFya2tvIFNha2tp
bmVuICA8amFya2tvLmouc2Fra2luZW5AZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtRdF0gV2ViR0wgaXMgbm90IHZpc2libGUgd2hl
biBRR0xXaWRnZXQgdmlld3BvcnQgaXMgdXNlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzcwNzAKKworICAgICAgICBBZGRlZCBIb3N0V2luZG93IHBh
cmFtZXRlciB0byB0aGUgY29uc3RydWN0b3Igb2YgR3JhcGhpY3NDb250ZXh0M0QuCisKKyAgICAg
ICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL0dyYXBoaWNzQ29udGV4dDNETWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNEOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0Q6OkdyYXBoaWNzQ29udGV4dDNEKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9H
cmFwaGljc0NvbnRleHQzRFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNESW50ZXJuYWw6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6fkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Z2V0T3duZXJH
TFdpZGdldCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRCk6
CisKIDIwMTAtMDQtMDkgIFRhc3VrdSBTdXp1a2kgIDx0YXN1a3Uuc3V6dWtpQG5va2lhLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KZGlmZiAtLWdpdCBhL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCBiZGU0OWFkLi40NDU1ZDQ2IDEw
MDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAK
KysrIGIvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0z
MCw2ICszMCw3IEBACiAjaW5jbHVkZSAiV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgiCiAKICNpbmNs
dWRlICJDYW52YXNQaXhlbEFycmF5LmgiCisjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVk
ZSAiSFRNTENhbnZhc0VsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAj
aW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKQEAgLTcyLDcgKzczLDkgQEAgcHJpdmF0ZToKIAogUGFz
c093blB0cjxXZWJHTFJlbmRlcmluZ0NvbnRleHQ+IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Y3Jl
YXRlKEhUTUxDYW52YXNFbGVtZW50KiBjYW52YXMsIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMqIGF0
dHJzKQogewotICAgIE93blB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dChHcmFwaGljc0Nv
bnRleHQzRDo6Y3JlYXRlKGF0dHJzLT5hdHRyaWJ1dGVzKCkpKTsKKyAgICBIb3N0V2luZG93KiBo
b3N0V2luZG93ID0gY2FudmFzLT5kb2N1bWVudCgpLT52aWV3KCktPnJvb3QoKS0+aG9zdFdpbmRv
dygpOworICAgIE93blB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dChHcmFwaGljc0NvbnRl
eHQzRDo6Y3JlYXRlKGF0dHJzLT5hdHRyaWJ1dGVzKCksIGhvc3RXaW5kb3cpKTsKKwogICAgIGlm
ICghY29udGV4dCkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oIGIvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCmluZGV4IDk2Zjc3ZDkuLjViNTg2ZWEg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0Qu
aAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKQEAg
LTQ5LDcgKzQ5LDcgQEAgY29uc3QgUGxhdGZvcm0zRE9iamVjdCBOdWxsUGxhdGZvcm0zRE9iamVj
dCA9IDA7CiAKIHR5cGVkZWYgdm9pZCogUGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRDsKIGNvbnN0
ICBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEIE51bGxQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNE
ID0gMDsKLXR5cGVkZWYgaW50IFBsYXRmb3JtM0RPYmplY3Q7Cit0eXBlZGVmIEdMdWludCBQbGF0
Zm9ybTNET2JqZWN0OwogY29uc3QgUGxhdGZvcm0zRE9iamVjdCBOdWxsUGxhdGZvcm0zRE9iamVj
dCA9IDA7CiAjZWxzZQogdHlwZWRlZiB2b2lkKiBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEOwpA
QCAtNzMsNiArNzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgV2ViR0xUZXh0
dXJlOwogICAgIGNsYXNzIEltYWdlOwogICAgIGNsYXNzIEltYWdlRGF0YTsKKyAgICBjbGFzcyBI
b3N0V2luZG93OwogCiAgICAgc3RydWN0IEFjdGl2ZUluZm8gewogICAgICAgICBTdHJpbmcgbmFt
ZTsKQEAgLTQxMCw3ICs0MTEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBi
b29sIHByZW11bHRpcGxpZWRBbHBoYTsKICAgICAgICAgfTsKIAotICAgICAgICBzdGF0aWMgUGFz
c093blB0cjxHcmFwaGljc0NvbnRleHQzRD4gY3JlYXRlKEF0dHJpYnV0ZXMgYXR0cnMpOworICAg
ICAgICBzdGF0aWMgUGFzc093blB0cjxHcmFwaGljc0NvbnRleHQzRD4gY3JlYXRlKEF0dHJpYnV0
ZXMgYXR0cnMsIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpOwogICAgICAgICB2aXJ0dWFsIH5HcmFw
aGljc0NvbnRleHQzRCgpOwogCiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtNjg1LDcgKzY4Niw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBzeW50aGVzaXplR0xFcnJvcih1bnNp
Z25lZCBsb25nIGVycm9yKTsKIAogICAgIHByaXZhdGU6ICAgICAgICAKLSAgICAgICAgR3JhcGhp
Y3NDb250ZXh0M0QoQXR0cmlidXRlcyBhdHRycyk7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dDNE
KEF0dHJpYnV0ZXMgYXR0cnMsIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpOwogCiAgICAgICAgIC8v
IEhlbHBlcnMgZm9yIHRleHR1cmUgdXBsb2FkaW5nLgogICAgICAgICB2b2lkIHByZW11bHRpcGx5
QWxwaGEodW5zaWduZWQgY2hhciogcmdiYURhdGEsIGludCBudW1QaXhlbHMpOwpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0M0RNYWMuY3Bw
IGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0M0RNYWMuY3Bw
CmluZGV4IDkzZDZmZWEuLjE5NmM4MWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL0dyYXBoaWNzQ29udGV4dDNETWFjLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL21hYy9HcmFwaGljc0NvbnRleHQzRE1hYy5jcHAKQEAgLTc1LDEzICs3NSwxMyBA
QCBzdGF0aWMgdm9pZCBzZXRQaXhlbEZvcm1hdChWZWN0b3I8Q0dMUGl4ZWxGb3JtYXRBdHRyaWJ1
dGU+JiBhdHRyaWJzLCBpbnQgY29sb3JCaQogICAgIGF0dHJpYnMuYXBwZW5kKHN0YXRpY19jYXN0
PENHTFBpeGVsRm9ybWF0QXR0cmlidXRlPigwKSk7CiB9CiAKLVBhc3NPd25QdHI8R3JhcGhpY3ND
b250ZXh0M0Q+IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0Q6OkF0
dHJpYnV0ZXMgYXR0cnMpCitQYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBHcmFwaGljc0Nv
bnRleHQzRDo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJzLCBIb3N0
V2luZG93KiBob3N0V2luZG93KQogewotICAgIE93blB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29u
dGV4dChuZXcgR3JhcGhpY3NDb250ZXh0M0QoYXR0cnMpKTsKKyAgICBPd25QdHI8R3JhcGhpY3ND
b250ZXh0M0Q+IGNvbnRleHQobmV3IEdyYXBoaWNzQ29udGV4dDNEKGF0dHJzLCBob3N0V2luZG93
KSk7CiAgICAgcmV0dXJuIGNvbnRleHQtPm1fY29udGV4dE9iaiA/IGNvbnRleHQucmVsZWFzZSgp
IDogMDsKIH0KIAotR3JhcGhpY3NDb250ZXh0M0Q6OkdyYXBoaWNzQ29udGV4dDNEKEdyYXBoaWNz
Q29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJzKQorR3JhcGhpY3NDb250ZXh0M0Q6OkdyYXBoaWNz
Q29udGV4dDNEKEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJzLCBIb3N0V2luZG93
KiBob3N0V2luZG93KQogICAgIDogbV9hdHRycyhhdHRycykKICAgICAsIG1fY29udGV4dE9iaigw
KQogICAgICwgbV90ZXh0dXJlKDApCkBAIC05Miw2ICs5Miw4IEBAIEdyYXBoaWNzQ29udGV4dDNE
OjpHcmFwaGljc0NvbnRleHQzRChHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRycykK
ICAgICAsIG1fbXVsdGlzYW1wbGVEZXB0aFN0ZW5jaWxCdWZmZXIoMCkKICAgICAsIG1fbXVsdGlz
YW1wbGVDb2xvckJ1ZmZlcigwKQogeworICAgIFVOVVNFRF9QQVJBTShob3N0V2luZG93KTsKKwog
ICAgIFZlY3RvcjxDR0xQaXhlbEZvcm1hdEF0dHJpYnV0ZT4gYXR0cmliczsKICAgICBDR0xQaXhl
bEZvcm1hdE9iaiBwaXhlbEZvcm1hdE9iaiA9IDA7CiAgICAgR0xpbnQgbnVtUGl4ZWxGb3JtYXRz
ID0gMDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3ND
b250ZXh0M0RRdC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29u
dGV4dDNEUXQuY3BwCmluZGV4IGNhYTgwNWMuLjE5YjcwZTYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAKKysrIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcApAQCAtMjMsOCAr
MjMsMTAgQEAKICNpbmNsdWRlICJDYW52YXNPYmplY3QuaCIKICNpbmNsdWRlICJHcmFwaGljc0Nv
bnRleHQuaCIKICNpbmNsdWRlICJIVE1MQ2FudmFzRWxlbWVudC5oIgorI2luY2x1ZGUgIkhvc3RX
aW5kb3cuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVu
dGVkLmgiCisjaW5jbHVkZSAiUVdlYlBhZ2VDbGllbnQuaCIKICNpbmNsdWRlICJXZWJHTEFjdGl2
ZUluZm8uaCIKICNpbmNsdWRlICJXZWJHTEFycmF5LmgiCiAjaW5jbHVkZSAiV2ViR0xCdWZmZXIu
aCIKQEAgLTM3LDYgKzM5LDcgQEAKICNpbmNsdWRlICJXZWJHTFNoYWRlci5oIgogI2luY2x1ZGUg
IldlYkdMVGV4dHVyZS5oIgogI2luY2x1ZGUgIldlYkdMVW5zaWduZWRCeXRlQXJyYXkuaCIKKyNp
bmNsdWRlIDxRR3JhcGhpY3NWaWV3PgogI2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIApAQCAtMTQ3LDEzICsxNTAsMTEgQEAgdHlwZWRl
ZiB2b2lkIChBUElFTlRSWSogZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyVHlwZSkgKEdMdWludCwgR0xp
bnQsIEdMZW51bSwgR0xib28KIAogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbCB7CiBw
dWJsaWM6Ci0gICAgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbChHcmFwaGljc0NvbnRleHQzRDo6
QXR0cmlidXRlcyBhdHRycyk7CisgICAgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbChHcmFwaGlj
c0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRycywgSG9zdFdpbmRvdyogaG9zdFdpbmRvdyk7CiAg
ICAgfkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwoKTsKIAogICAgIGJvb2wgaXNDb250ZXh0VmFs
aWQoKSB7IHJldHVybiBtX2NvbnRleHRWYWxpZDsgfQogCi0KLQogICAgIGdsQWN0aXZlVGV4dHVy
ZVR5cGUgYWN0aXZlVGV4dHVyZTsKICAgICBnbEF0dGFjaFNoYWRlclR5cGUgYXR0YWNoU2hhZGVy
OwogICAgIGdsQmluZEF0dHJpYkxvY2F0aW9uVHlwZSBiaW5kQXR0cmliTG9jYXRpb247CkBAIC0y
NTUsNiArMjU2LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogCisgICAgUUdMV2lkZ2V0KiBnZXRP
d25lckdMV2lkZ2V0KFFXZWJQYWdlQ2xpZW50KiB3ZWJQYWdlQ2xpZW50KTsKICAgICB2b2lkKiBn
ZXRQcm9jQWRkcmVzcyhjb25zdCBTdHJpbmcmIHByb2MpOwogICAgIGJvb2wgbV9jb250ZXh0VmFs
aWQ7CiB9OwpAQCAtMjY1LDcgKzI2Nyw3IEBAIHByaXZhdGU6CiAjZGVmaW5lIEdFVF9QUk9DX0FE
RFJFU1MoUHJvYykgcmVpbnRlcnByZXRfY2FzdDxQcm9jIyNUeXBlPihnZXRQcm9jQWRkcmVzcygj
UHJvYykpOwogI2VuZGlmCiAgCi1HcmFwaGljc0NvbnRleHQzREludGVybmFsOjpHcmFwaGljc0Nv
bnRleHQzREludGVybmFsKEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJzKQorR3Jh
cGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbChHcmFwaGlj
c0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRycywgSG9zdFdpbmRvdyogaG9zdFdpbmRvdykKICAg
ICA6IG1fYXR0cnMoYXR0cnMpCiAgICAgLCBtX2dsV2lkZ2V0KDApCiAgICAgLCBtX3RleHR1cmUo
MCkKQEAgLTI3NCwyNCArMjc2LDMzIEBAIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OkdyYXBo
aWNzQ29udGV4dDNESW50ZXJuYWwoR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0CiAgICAgLCBt
X2RlcHRoQnVmZmVyKDApCiAgICAgLCBtX2NvbnRleHRWYWxpZCh0cnVlKQogewotICAgIG1fYXR0
cnMuYWxwaGEgPSB0cnVlOwotICAgIG1fYXR0cnMuZGVwdGggPSB0cnVlOwotICAgIG1fYXR0cnMu
c3RlbmNpbCA9IGZhbHNlOwotICAgIG1fYXR0cnMuYW50aWFsaWFzID0gZmFsc2U7Ci0gICAgbV9h
dHRycy5wcmVtdWx0aXBsaWVkQWxwaGEgPSB0cnVlOworICAgIFFXZWJQYWdlQ2xpZW50KiB3ZWJQ
YWdlQ2xpZW50ID0gaG9zdFdpbmRvdy0+cGxhdGZvcm1QYWdlQ2xpZW50KCk7CisgICAgUUdMV2lk
Z2V0KiBvd25lckdMV2lkZ2V0ICA9IGdldE93bmVyR0xXaWRnZXQod2ViUGFnZUNsaWVudCk7CiAK
LSAgICBRR0xGb3JtYXQgZm9ybWF0OworICAgIGlmIChvd25lckdMV2lkZ2V0KSAKKyAgICAgICAg
bV9nbFdpZGdldCA9IG5ldyBRR0xXaWRnZXQoMCwgb3duZXJHTFdpZGdldCk7CisgICAgZWxzZSB7
CisgICAgICAgIFFHTEZvcm1hdCBmb3JtYXQ7CisgICAgICAgIGZvcm1hdC5zZXREZXB0aCh0cnVl
KTsKKyAgICAgICAgZm9ybWF0LnNldFNhbXBsZUJ1ZmZlcnModHJ1ZSk7CisgICAgICAgIGZvcm1h
dC5zZXRTdGVuY2lsKGZhbHNlKTsKIAotICAgIGZvcm1hdC5zZXREZXB0aCh0cnVlKTsKLSAgICBm
b3JtYXQuc2V0U2FtcGxlQnVmZmVycyh0cnVlKTsKLSAgICBmb3JtYXQuc2V0U3RlbmNpbChmYWxz
ZSk7CisgICAgICAgIG1fZ2xXaWRnZXQgPSBuZXcgUUdMV2lkZ2V0KGZvcm1hdCk7CisgICAgfQog
Ci0gICAgbV9nbFdpZGdldCA9IG5ldyBRR0xXaWRnZXQoZm9ybWF0KTsKICAgICBpZiAoIW1fZ2xX
aWRnZXQtPmlzVmFsaWQoKSkgewogICAgICAgICBMT0dfRVJST1IoIkdyYXBoaWNzQ29udGV4dDNE
OiBRR0xXaWRnZXQgZG9lcyBub3QgaGF2ZSBhIHZhbGlkIGNvbnRleHQiKTsKICAgICAgICAgbV9j
b250ZXh0VmFsaWQgPSBmYWxzZTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAKKyAgICBRR0xG
b3JtYXQgZm9ybWF0ID0gbV9nbFdpZGdldC0+Zm9ybWF0KCk7CisKKyAgICBtX2F0dHJzLmFscGhh
ID0gZm9ybWF0LmFscGhhKCk7CisgICAgbV9hdHRycy5kZXB0aCA9IGZvcm1hdC5kZXB0aCgpOwor
ICAgIG1fYXR0cnMuc3RlbmNpbCA9IGZvcm1hdC5zdGVuY2lsKCk7CisgICAgbV9hdHRycy5hbnRp
YWxpYXMgPSBmYWxzZTsKKyAgICBtX2F0dHJzLnByZW11bHRpcGxpZWRBbHBoYSA9IHRydWU7CiAK
ICAgICBtX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwogCkBAIC00MjgsNyArNDM5LDE2IEBAIEdy
YXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwoR3JhcGhp
Y3NDb250ZXh0M0Q6OkF0dHJpYnV0CiBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp+R3JhcGhp
Y3NDb250ZXh0M0RJbnRlcm5hbCgpCiB7CiAgICAgZGVsZXRlIG1fZ2xXaWRnZXQ7Ci0gICAgbV9n
bFdpZGdldCA9IDA7Cit9CisKK1FHTFdpZGdldCogR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6
Z2V0T3duZXJHTFdpZGdldChRV2ViUGFnZUNsaWVudCogd2ViUGFnZUNsaWVudCkKK3sKKyAgICBR
R3JhcGhpY3NWaWV3KiBvd25lckdyYXBoaWNzVmlldyA9IHFvYmplY3RfY2FzdDxRR3JhcGhpY3NW
aWV3Kj4od2ViUGFnZUNsaWVudC0+b3duZXJXaWRnZXQoKSk7CisKKyAgICBpZiAob3duZXJHcmFw
aGljc1ZpZXcpIAorICAgICAgICByZXR1cm4gcW9iamVjdF9jYXN0PFFHTFdpZGdldCo+KG93bmVy
R3JhcGhpY3NWaWV3LT52aWV3cG9ydCgpKTsKKworICAgIHJldHVybiAwOwogfQogCiB2b2lkKiBH
cmFwaGljc0NvbnRleHQzREludGVybmFsOjpnZXRQcm9jQWRkcmVzcyhjb25zdCBTdHJpbmcmIHBy
b2MpCkBAIC00NDgsMTQgKzQ2OCwxNCBAQCB2b2lkKiBHcmFwaGljc0NvbnRleHQzREludGVybmFs
OjpnZXRQcm9jQWRkcmVzcyhjb25zdCBTdHJpbmcmIHByb2MpCiAgICAgcmV0dXJuIDA7CiB9CiAK
LVBhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0M0Q+IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGUo
R3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cnMpCitQYXNzT3duUHRyPEdyYXBoaWNz
Q29udGV4dDNEPiBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dDNEOjpB
dHRyaWJ1dGVzIGF0dHJzLCBIb3N0V2luZG93KiBob3N0V2luZG93KQogewotICAgIE93blB0cjxH
cmFwaGljc0NvbnRleHQzRD4gY29udGV4dChuZXcgR3JhcGhpY3NDb250ZXh0M0QoYXR0cnMpKTsK
KyAgICBPd25QdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQobmV3IEdyYXBoaWNzQ29udGV4
dDNEKGF0dHJzLCBob3N0V2luZG93KSk7CiAgICAgcmV0dXJuIGNvbnRleHQtPm1faW50ZXJuYWwg
PyBjb250ZXh0LnJlbGVhc2UoKSA6IDA7CiB9CiAKLUdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGlj
c0NvbnRleHQzRChHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRycykKLSAgICA6IG1f
aW50ZXJuYWwobmV3IEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwoYXR0cnMpKQorR3JhcGhpY3ND
b250ZXh0M0Q6OkdyYXBoaWNzQ29udGV4dDNEKEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVz
IGF0dHJzLCBIb3N0V2luZG93KiBob3N0V2luZG93KQorICAgIDogbV9pbnRlcm5hbChuZXcgR3Jh
cGhpY3NDb250ZXh0M0RJbnRlcm5hbChhdHRycywgaG9zdFdpbmRvdykpCiB7CiAgICAgaWYgKCFt
X2ludGVybmFsLT5pc0NvbnRleHRWYWxpZCgpKSAKICAgICAgICAgbV9pbnRlcm5hbCA9IDA7CmRp
ZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwppbmRleCBlYWEwM2E4Li5mM2VkYTNiIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NiBAQAorMjAxMC0wNC0xMyAgSmFya2tvIFNha2tpbmVuICA8amFya2tvLmouc2Fra2luZW5AZ21h
aWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFtRdF0gV2ViR0wgaXMgbm90IHZpc2libGUgd2hlbiBRR0xXaWRnZXQgdmlld3BvcnQgaXMgdXNl
ZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzcwNzAK
KworICAgICAgICBBZGRlZCBIb3N0V2luZG93IHBhcmFtZXRlciB0byB0aGUgY29uc3RydWN0b3Ig
b2YgR3JhcGhpY3NDb250ZXh0M0QuCisKKyAgICAgICAgKiBzcmMvR3JhcGhpY3NDb250ZXh0M0Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OkdyYXBoaWNzQ29udGV4
dDNEKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGUpOgorCiAy
MDEwLTA0LTA5ICBNYXJjdXMgQnVsYWNoICA8YnVsYWNoQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBKZXJlbXkgT3Jsb3cuCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0v
c3JjL0dyYXBoaWNzQ29udGV4dDNELmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3ND
b250ZXh0M0QuY3BwCmluZGV4IDlmYmU4OTkuLjE5YmZmMTEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9j
aHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0QuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9z
cmMvR3JhcGhpY3NDb250ZXh0M0QuY3BwCkBAIC0xMDQ0LDIyICsxMDQ0LDI1IEBAIHJ0IEdyYXBo
aWNzQ29udGV4dDNEOjpuYW1lKHQxIGExLCB0MiBhMiwgdDMgYTMsIHQ0IGE0LCB0NSBhNSwgdDYg
YTYsIHQ3IGE3LCB0OCBhCiAgICAgcmV0dXJuIG1faW50ZXJuYWwtPm5hbWUoYTEsIGEyLCBhMywg
YTQsIGE1LCBhNiwgYTcsIGE4LCBhOSk7ICAgXAogfQogCi1HcmFwaGljc0NvbnRleHQzRDo6R3Jh
cGhpY3NDb250ZXh0M0QoR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cnMpCitHcmFw
aGljc0NvbnRleHQzRDo6R3JhcGhpY3NDb250ZXh0M0QoR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJp
YnV0ZXMgYXR0cnMsIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpCiB7CisgICAgVU5VU0VEX1BBUkFN
KGhvc3RXaW5kb3cpOwogfQogCiBHcmFwaGljc0NvbnRleHQzRDo6fkdyYXBoaWNzQ29udGV4dDNE
KCkKIHsKIH0KIAotUGFzc093blB0cjxHcmFwaGljc0NvbnRleHQzRD4gR3JhcGhpY3NDb250ZXh0
M0Q6OmNyZWF0ZShHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRycykKK1Bhc3NPd25Q
dHI8R3JhcGhpY3NDb250ZXh0M0Q+IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGUoR3JhcGhpY3ND
b250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cnMsIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpCiB7Cisg
ICAgVU5VU0VEX1BBUkFNKGhvc3RXaW5kb3cpOworCiAgICAgR3JhcGhpY3NDb250ZXh0M0RJbnRl
cm5hbCogaW50ZXJuYWwgPSBuZXcgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbCgpOwogICAgIGlm
ICghaW50ZXJuYWwtPmluaXRpYWxpemUoYXR0cnMpKSB7CiAgICAgICAgIGRlbGV0ZSBpbnRlcm5h
bDsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotICAgIFBhc3NPd25QdHI8R3JhcGhpY3NDb250
ZXh0M0Q+IHJlc3VsdCA9IG5ldyBHcmFwaGljc0NvbnRleHQzRChhdHRycyk7CisgICAgUGFzc093
blB0cjxHcmFwaGljc0NvbnRleHQzRD4gcmVzdWx0ID0gbmV3IEdyYXBoaWNzQ29udGV4dDNEKGF0
dHJzLCBob3N0V2luZG93KTsKICAgICByZXN1bHQtPm1faW50ZXJuYWwuc2V0KGludGVybmFsKTsK
ICAgICByZXR1cm4gcmVzdWx0OwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53319</attachid>
            <date>2010-04-13 22:45:18 -0700</date>
            <delta_ts>2010-04-16 01:00:04 -0700</delta_ts>
            <desc>Removed UNUSED_PARAM from create method added by mistake</desc>
            <filename>37070-4.diff</filename>
            <type>text/plain</type>
            <size>11685</size>
            <attacher name="Jarkko Sakkinen">jarkko.j.sakkinen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NmEzOGNmZi4uMWJiZGMyNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxMC0wNC0xMyAgSmFya2tvIFNha2tp
bmVuICA8amFya2tvLmouc2Fra2luZW5AZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtRdF0gV2ViR0wgaXMgbm90IHZpc2libGUgd2hl
biBRR0xXaWRnZXQgdmlld3BvcnQgaXMgdXNlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzcwNzAKKworICAgICAgICBBZGRlZCBIb3N0V2luZG93IHBh
cmFtZXRlciB0byB0aGUgY29uc3RydWN0b3Igb2YgR3JhcGhpY3NDb250ZXh0M0QuCisKKyAgICAg
ICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL0dyYXBoaWNzQ29udGV4dDNETWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNEOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0Q6OkdyYXBoaWNzQ29udGV4dDNEKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9H
cmFwaGljc0NvbnRleHQzRFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNESW50ZXJuYWw6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6fkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Z2V0T3duZXJH
TFdpZGdldCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRCk6
CisKIDIwMTAtMDQtMDkgIFRhc3VrdSBTdXp1a2kgIDx0YXN1a3Uuc3V6dWtpQG5va2lhLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KZGlmZiAtLWdpdCBhL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCBiZGU0OWFkLi40NDU1ZDQ2IDEw
MDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAK
KysrIGIvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0z
MCw2ICszMCw3IEBACiAjaW5jbHVkZSAiV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgiCiAKICNpbmNs
dWRlICJDYW52YXNQaXhlbEFycmF5LmgiCisjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVk
ZSAiSFRNTENhbnZhc0VsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAj
aW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKQEAgLTcyLDcgKzczLDkgQEAgcHJpdmF0ZToKIAogUGFz
c093blB0cjxXZWJHTFJlbmRlcmluZ0NvbnRleHQ+IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Y3Jl
YXRlKEhUTUxDYW52YXNFbGVtZW50KiBjYW52YXMsIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMqIGF0
dHJzKQogewotICAgIE93blB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dChHcmFwaGljc0Nv
bnRleHQzRDo6Y3JlYXRlKGF0dHJzLT5hdHRyaWJ1dGVzKCkpKTsKKyAgICBIb3N0V2luZG93KiBo
b3N0V2luZG93ID0gY2FudmFzLT5kb2N1bWVudCgpLT52aWV3KCktPnJvb3QoKS0+aG9zdFdpbmRv
dygpOworICAgIE93blB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dChHcmFwaGljc0NvbnRl
eHQzRDo6Y3JlYXRlKGF0dHJzLT5hdHRyaWJ1dGVzKCksIGhvc3RXaW5kb3cpKTsKKwogICAgIGlm
ICghY29udGV4dCkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oIGIvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCmluZGV4IDk2Zjc3ZDkuLjViNTg2ZWEg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0Qu
aAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKQEAg
LTQ5LDcgKzQ5LDcgQEAgY29uc3QgUGxhdGZvcm0zRE9iamVjdCBOdWxsUGxhdGZvcm0zRE9iamVj
dCA9IDA7CiAKIHR5cGVkZWYgdm9pZCogUGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRDsKIGNvbnN0
ICBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEIE51bGxQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNE
ID0gMDsKLXR5cGVkZWYgaW50IFBsYXRmb3JtM0RPYmplY3Q7Cit0eXBlZGVmIEdMdWludCBQbGF0
Zm9ybTNET2JqZWN0OwogY29uc3QgUGxhdGZvcm0zRE9iamVjdCBOdWxsUGxhdGZvcm0zRE9iamVj
dCA9IDA7CiAjZWxzZQogdHlwZWRlZiB2b2lkKiBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEOwpA
QCAtNzMsNiArNzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgV2ViR0xUZXh0
dXJlOwogICAgIGNsYXNzIEltYWdlOwogICAgIGNsYXNzIEltYWdlRGF0YTsKKyAgICBjbGFzcyBI
b3N0V2luZG93OwogCiAgICAgc3RydWN0IEFjdGl2ZUluZm8gewogICAgICAgICBTdHJpbmcgbmFt
ZTsKQEAgLTQxMCw3ICs0MTEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBi
b29sIHByZW11bHRpcGxpZWRBbHBoYTsKICAgICAgICAgfTsKIAotICAgICAgICBzdGF0aWMgUGFz
c093blB0cjxHcmFwaGljc0NvbnRleHQzRD4gY3JlYXRlKEF0dHJpYnV0ZXMgYXR0cnMpOworICAg
ICAgICBzdGF0aWMgUGFzc093blB0cjxHcmFwaGljc0NvbnRleHQzRD4gY3JlYXRlKEF0dHJpYnV0
ZXMgYXR0cnMsIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpOwogICAgICAgICB2aXJ0dWFsIH5HcmFw
aGljc0NvbnRleHQzRCgpOwogCiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtNjg1LDcgKzY4Niw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBzeW50aGVzaXplR0xFcnJvcih1bnNp
Z25lZCBsb25nIGVycm9yKTsKIAogICAgIHByaXZhdGU6ICAgICAgICAKLSAgICAgICAgR3JhcGhp
Y3NDb250ZXh0M0QoQXR0cmlidXRlcyBhdHRycyk7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dDNE
KEF0dHJpYnV0ZXMgYXR0cnMsIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpOwogCiAgICAgICAgIC8v
IEhlbHBlcnMgZm9yIHRleHR1cmUgdXBsb2FkaW5nLgogICAgICAgICB2b2lkIHByZW11bHRpcGx5
QWxwaGEodW5zaWduZWQgY2hhciogcmdiYURhdGEsIGludCBudW1QaXhlbHMpOwpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0M0RNYWMuY3Bw
IGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0M0RNYWMuY3Bw
CmluZGV4IDkzZDZmZWEuLjE5NmM4MWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL0dyYXBoaWNzQ29udGV4dDNETWFjLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL21hYy9HcmFwaGljc0NvbnRleHQzRE1hYy5jcHAKQEAgLTc1LDEzICs3NSwxMyBA
QCBzdGF0aWMgdm9pZCBzZXRQaXhlbEZvcm1hdChWZWN0b3I8Q0dMUGl4ZWxGb3JtYXRBdHRyaWJ1
dGU+JiBhdHRyaWJzLCBpbnQgY29sb3JCaQogICAgIGF0dHJpYnMuYXBwZW5kKHN0YXRpY19jYXN0
PENHTFBpeGVsRm9ybWF0QXR0cmlidXRlPigwKSk7CiB9CiAKLVBhc3NPd25QdHI8R3JhcGhpY3ND
b250ZXh0M0Q+IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0Q6OkF0
dHJpYnV0ZXMgYXR0cnMpCitQYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBHcmFwaGljc0Nv
bnRleHQzRDo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJzLCBIb3N0
V2luZG93KiBob3N0V2luZG93KQogewotICAgIE93blB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29u
dGV4dChuZXcgR3JhcGhpY3NDb250ZXh0M0QoYXR0cnMpKTsKKyAgICBPd25QdHI8R3JhcGhpY3ND
b250ZXh0M0Q+IGNvbnRleHQobmV3IEdyYXBoaWNzQ29udGV4dDNEKGF0dHJzLCBob3N0V2luZG93
KSk7CiAgICAgcmV0dXJuIGNvbnRleHQtPm1fY29udGV4dE9iaiA/IGNvbnRleHQucmVsZWFzZSgp
IDogMDsKIH0KIAotR3JhcGhpY3NDb250ZXh0M0Q6OkdyYXBoaWNzQ29udGV4dDNEKEdyYXBoaWNz
Q29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJzKQorR3JhcGhpY3NDb250ZXh0M0Q6OkdyYXBoaWNz
Q29udGV4dDNEKEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJzLCBIb3N0V2luZG93
KiBob3N0V2luZG93KQogICAgIDogbV9hdHRycyhhdHRycykKICAgICAsIG1fY29udGV4dE9iaigw
KQogICAgICwgbV90ZXh0dXJlKDApCkBAIC05Miw2ICs5Miw4IEBAIEdyYXBoaWNzQ29udGV4dDNE
OjpHcmFwaGljc0NvbnRleHQzRChHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRycykK
ICAgICAsIG1fbXVsdGlzYW1wbGVEZXB0aFN0ZW5jaWxCdWZmZXIoMCkKICAgICAsIG1fbXVsdGlz
YW1wbGVDb2xvckJ1ZmZlcigwKQogeworICAgIFVOVVNFRF9QQVJBTShob3N0V2luZG93KTsKKwog
ICAgIFZlY3RvcjxDR0xQaXhlbEZvcm1hdEF0dHJpYnV0ZT4gYXR0cmliczsKICAgICBDR0xQaXhl
bEZvcm1hdE9iaiBwaXhlbEZvcm1hdE9iaiA9IDA7CiAgICAgR0xpbnQgbnVtUGl4ZWxGb3JtYXRz
ID0gMDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3ND
b250ZXh0M0RRdC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29u
dGV4dDNEUXQuY3BwCmluZGV4IGNhYTgwNWMuLjE5YjcwZTYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAKKysrIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcApAQCAtMjMsOCAr
MjMsMTAgQEAKICNpbmNsdWRlICJDYW52YXNPYmplY3QuaCIKICNpbmNsdWRlICJHcmFwaGljc0Nv
bnRleHQuaCIKICNpbmNsdWRlICJIVE1MQ2FudmFzRWxlbWVudC5oIgorI2luY2x1ZGUgIkhvc3RX
aW5kb3cuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVu
dGVkLmgiCisjaW5jbHVkZSAiUVdlYlBhZ2VDbGllbnQuaCIKICNpbmNsdWRlICJXZWJHTEFjdGl2
ZUluZm8uaCIKICNpbmNsdWRlICJXZWJHTEFycmF5LmgiCiAjaW5jbHVkZSAiV2ViR0xCdWZmZXIu
aCIKQEAgLTM3LDYgKzM5LDcgQEAKICNpbmNsdWRlICJXZWJHTFNoYWRlci5oIgogI2luY2x1ZGUg
IldlYkdMVGV4dHVyZS5oIgogI2luY2x1ZGUgIldlYkdMVW5zaWduZWRCeXRlQXJyYXkuaCIKKyNp
bmNsdWRlIDxRR3JhcGhpY3NWaWV3PgogI2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIApAQCAtMTQ3LDEzICsxNTAsMTEgQEAgdHlwZWRl
ZiB2b2lkIChBUElFTlRSWSogZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyVHlwZSkgKEdMdWludCwgR0xp
bnQsIEdMZW51bSwgR0xib28KIAogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbCB7CiBw
dWJsaWM6Ci0gICAgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbChHcmFwaGljc0NvbnRleHQzRDo6
QXR0cmlidXRlcyBhdHRycyk7CisgICAgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbChHcmFwaGlj
c0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRycywgSG9zdFdpbmRvdyogaG9zdFdpbmRvdyk7CiAg
ICAgfkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwoKTsKIAogICAgIGJvb2wgaXNDb250ZXh0VmFs
aWQoKSB7IHJldHVybiBtX2NvbnRleHRWYWxpZDsgfQogCi0KLQogICAgIGdsQWN0aXZlVGV4dHVy
ZVR5cGUgYWN0aXZlVGV4dHVyZTsKICAgICBnbEF0dGFjaFNoYWRlclR5cGUgYXR0YWNoU2hhZGVy
OwogICAgIGdsQmluZEF0dHJpYkxvY2F0aW9uVHlwZSBiaW5kQXR0cmliTG9jYXRpb247CkBAIC0y
NTUsNiArMjU2LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogCisgICAgUUdMV2lkZ2V0KiBnZXRP
d25lckdMV2lkZ2V0KFFXZWJQYWdlQ2xpZW50KiB3ZWJQYWdlQ2xpZW50KTsKICAgICB2b2lkKiBn
ZXRQcm9jQWRkcmVzcyhjb25zdCBTdHJpbmcmIHByb2MpOwogICAgIGJvb2wgbV9jb250ZXh0VmFs
aWQ7CiB9OwpAQCAtMjY1LDcgKzI2Nyw3IEBAIHByaXZhdGU6CiAjZGVmaW5lIEdFVF9QUk9DX0FE
RFJFU1MoUHJvYykgcmVpbnRlcnByZXRfY2FzdDxQcm9jIyNUeXBlPihnZXRQcm9jQWRkcmVzcygj
UHJvYykpOwogI2VuZGlmCiAgCi1HcmFwaGljc0NvbnRleHQzREludGVybmFsOjpHcmFwaGljc0Nv
bnRleHQzREludGVybmFsKEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJzKQorR3Jh
cGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbChHcmFwaGlj
c0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRycywgSG9zdFdpbmRvdyogaG9zdFdpbmRvdykKICAg
ICA6IG1fYXR0cnMoYXR0cnMpCiAgICAgLCBtX2dsV2lkZ2V0KDApCiAgICAgLCBtX3RleHR1cmUo
MCkKQEAgLTI3NCwyNCArMjc2LDMzIEBAIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OkdyYXBo
aWNzQ29udGV4dDNESW50ZXJuYWwoR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0CiAgICAgLCBt
X2RlcHRoQnVmZmVyKDApCiAgICAgLCBtX2NvbnRleHRWYWxpZCh0cnVlKQogewotICAgIG1fYXR0
cnMuYWxwaGEgPSB0cnVlOwotICAgIG1fYXR0cnMuZGVwdGggPSB0cnVlOwotICAgIG1fYXR0cnMu
c3RlbmNpbCA9IGZhbHNlOwotICAgIG1fYXR0cnMuYW50aWFsaWFzID0gZmFsc2U7Ci0gICAgbV9h
dHRycy5wcmVtdWx0aXBsaWVkQWxwaGEgPSB0cnVlOworICAgIFFXZWJQYWdlQ2xpZW50KiB3ZWJQ
YWdlQ2xpZW50ID0gaG9zdFdpbmRvdy0+cGxhdGZvcm1QYWdlQ2xpZW50KCk7CisgICAgUUdMV2lk
Z2V0KiBvd25lckdMV2lkZ2V0ICA9IGdldE93bmVyR0xXaWRnZXQod2ViUGFnZUNsaWVudCk7CiAK
LSAgICBRR0xGb3JtYXQgZm9ybWF0OworICAgIGlmIChvd25lckdMV2lkZ2V0KSAKKyAgICAgICAg
bV9nbFdpZGdldCA9IG5ldyBRR0xXaWRnZXQoMCwgb3duZXJHTFdpZGdldCk7CisgICAgZWxzZSB7
CisgICAgICAgIFFHTEZvcm1hdCBmb3JtYXQ7CisgICAgICAgIGZvcm1hdC5zZXREZXB0aCh0cnVl
KTsKKyAgICAgICAgZm9ybWF0LnNldFNhbXBsZUJ1ZmZlcnModHJ1ZSk7CisgICAgICAgIGZvcm1h
dC5zZXRTdGVuY2lsKGZhbHNlKTsKIAotICAgIGZvcm1hdC5zZXREZXB0aCh0cnVlKTsKLSAgICBm
b3JtYXQuc2V0U2FtcGxlQnVmZmVycyh0cnVlKTsKLSAgICBmb3JtYXQuc2V0U3RlbmNpbChmYWxz
ZSk7CisgICAgICAgIG1fZ2xXaWRnZXQgPSBuZXcgUUdMV2lkZ2V0KGZvcm1hdCk7CisgICAgfQog
Ci0gICAgbV9nbFdpZGdldCA9IG5ldyBRR0xXaWRnZXQoZm9ybWF0KTsKICAgICBpZiAoIW1fZ2xX
aWRnZXQtPmlzVmFsaWQoKSkgewogICAgICAgICBMT0dfRVJST1IoIkdyYXBoaWNzQ29udGV4dDNE
OiBRR0xXaWRnZXQgZG9lcyBub3QgaGF2ZSBhIHZhbGlkIGNvbnRleHQiKTsKICAgICAgICAgbV9j
b250ZXh0VmFsaWQgPSBmYWxzZTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAKKyAgICBRR0xG
b3JtYXQgZm9ybWF0ID0gbV9nbFdpZGdldC0+Zm9ybWF0KCk7CisKKyAgICBtX2F0dHJzLmFscGhh
ID0gZm9ybWF0LmFscGhhKCk7CisgICAgbV9hdHRycy5kZXB0aCA9IGZvcm1hdC5kZXB0aCgpOwor
ICAgIG1fYXR0cnMuc3RlbmNpbCA9IGZvcm1hdC5zdGVuY2lsKCk7CisgICAgbV9hdHRycy5hbnRp
YWxpYXMgPSBmYWxzZTsKKyAgICBtX2F0dHJzLnByZW11bHRpcGxpZWRBbHBoYSA9IHRydWU7CiAK
ICAgICBtX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwogCkBAIC00MjgsNyArNDM5LDE2IEBAIEdy
YXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwoR3JhcGhp
Y3NDb250ZXh0M0Q6OkF0dHJpYnV0CiBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp+R3JhcGhp
Y3NDb250ZXh0M0RJbnRlcm5hbCgpCiB7CiAgICAgZGVsZXRlIG1fZ2xXaWRnZXQ7Ci0gICAgbV9n
bFdpZGdldCA9IDA7Cit9CisKK1FHTFdpZGdldCogR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6
Z2V0T3duZXJHTFdpZGdldChRV2ViUGFnZUNsaWVudCogd2ViUGFnZUNsaWVudCkKK3sKKyAgICBR
R3JhcGhpY3NWaWV3KiBvd25lckdyYXBoaWNzVmlldyA9IHFvYmplY3RfY2FzdDxRR3JhcGhpY3NW
aWV3Kj4od2ViUGFnZUNsaWVudC0+b3duZXJXaWRnZXQoKSk7CisKKyAgICBpZiAob3duZXJHcmFw
aGljc1ZpZXcpIAorICAgICAgICByZXR1cm4gcW9iamVjdF9jYXN0PFFHTFdpZGdldCo+KG93bmVy
R3JhcGhpY3NWaWV3LT52aWV3cG9ydCgpKTsKKworICAgIHJldHVybiAwOwogfQogCiB2b2lkKiBH
cmFwaGljc0NvbnRleHQzREludGVybmFsOjpnZXRQcm9jQWRkcmVzcyhjb25zdCBTdHJpbmcmIHBy
b2MpCkBAIC00NDgsMTQgKzQ2OCwxNCBAQCB2b2lkKiBHcmFwaGljc0NvbnRleHQzREludGVybmFs
OjpnZXRQcm9jQWRkcmVzcyhjb25zdCBTdHJpbmcmIHByb2MpCiAgICAgcmV0dXJuIDA7CiB9CiAK
LVBhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0M0Q+IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGUo
R3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cnMpCitQYXNzT3duUHRyPEdyYXBoaWNz
Q29udGV4dDNEPiBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dDNEOjpB
dHRyaWJ1dGVzIGF0dHJzLCBIb3N0V2luZG93KiBob3N0V2luZG93KQogewotICAgIE93blB0cjxH
cmFwaGljc0NvbnRleHQzRD4gY29udGV4dChuZXcgR3JhcGhpY3NDb250ZXh0M0QoYXR0cnMpKTsK
KyAgICBPd25QdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQobmV3IEdyYXBoaWNzQ29udGV4
dDNEKGF0dHJzLCBob3N0V2luZG93KSk7CiAgICAgcmV0dXJuIGNvbnRleHQtPm1faW50ZXJuYWwg
PyBjb250ZXh0LnJlbGVhc2UoKSA6IDA7CiB9CiAKLUdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGlj
c0NvbnRleHQzRChHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRycykKLSAgICA6IG1f
aW50ZXJuYWwobmV3IEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwoYXR0cnMpKQorR3JhcGhpY3ND
b250ZXh0M0Q6OkdyYXBoaWNzQ29udGV4dDNEKEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVz
IGF0dHJzLCBIb3N0V2luZG93KiBob3N0V2luZG93KQorICAgIDogbV9pbnRlcm5hbChuZXcgR3Jh
cGhpY3NDb250ZXh0M0RJbnRlcm5hbChhdHRycywgaG9zdFdpbmRvdykpCiB7CiAgICAgaWYgKCFt
X2ludGVybmFsLT5pc0NvbnRleHRWYWxpZCgpKSAKICAgICAgICAgbV9pbnRlcm5hbCA9IDA7CmRp
ZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwppbmRleCBlYWEwM2E4Li5mM2ZhOGFkIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NSBAQAorMjAxMC0wNC0xMyAgSmFya2tvIFNha2tpbmVuICA8amFya2tvLmouc2Fra2luZW5AZ21h
aWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFtRdF0gV2ViR0wgaXMgbm90IHZpc2libGUgd2hlbiBRR0xXaWRnZXQgdmlld3BvcnQgaXMgdXNl
ZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzcwNzAK
KworICAgICAgICBBZGRlZCBIb3N0V2luZG93IHBhcmFtZXRlciB0byB0aGUgY29uc3RydWN0b3Ig
b2YgR3JhcGhpY3NDb250ZXh0M0QuCisKKyAgICAgICAgKiBzcmMvR3JhcGhpY3NDb250ZXh0M0Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OkdyYXBoaWNzQ29udGV4
dDNEKToKKwogMjAxMC0wNC0wOSAgTWFyY3VzIEJ1bGFjaCAgPGJ1bGFjaEBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgSmVyZW15IE9ybG93LgpkaWZmIC0tZ2l0IGEvV2ViS2l0
L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRC5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3Jj
L0dyYXBoaWNzQ29udGV4dDNELmNwcAppbmRleCA5ZmJlODk5Li43Y2Y4ZWFmIDEwMDY0NAotLS0g
YS9XZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNELmNwcAorKysgYi9XZWJLaXQv
Y2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNELmNwcApAQCAtMTA0NCwyMiArMTA0NCwyMyBA
QCBydCBHcmFwaGljc0NvbnRleHQzRDo6bmFtZSh0MSBhMSwgdDIgYTIsIHQzIGEzLCB0NCBhNCwg
dDUgYTUsIHQ2IGE2LCB0NyBhNywgdDggYQogICAgIHJldHVybiBtX2ludGVybmFsLT5uYW1lKGEx
LCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCwgYTkpOyAgIFwKIH0KIAotR3JhcGhpY3NDb250
ZXh0M0Q6OkdyYXBoaWNzQ29udGV4dDNEKEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0
dHJzKQorR3JhcGhpY3NDb250ZXh0M0Q6OkdyYXBoaWNzQ29udGV4dDNEKEdyYXBoaWNzQ29udGV4
dDNEOjpBdHRyaWJ1dGVzIGF0dHJzLCBIb3N0V2luZG93KiBob3N0V2luZG93KQogeworICAgIFVO
VVNFRF9QQVJBTShob3N0V2luZG93KTsKIH0KIAogR3JhcGhpY3NDb250ZXh0M0Q6On5HcmFwaGlj
c0NvbnRleHQzRCgpCiB7CiB9CiAKLVBhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0M0Q+IEdyYXBo
aWNzQ29udGV4dDNEOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cnMp
CitQYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRl
KEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJzLCBIb3N0V2luZG93KiBob3N0V2lu
ZG93KQogewogICAgIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwqIGludGVybmFsID0gbmV3IEdy
YXBoaWNzQ29udGV4dDNESW50ZXJuYWwoKTsKICAgICBpZiAoIWludGVybmFsLT5pbml0aWFsaXpl
KGF0dHJzKSkgewogICAgICAgICBkZWxldGUgaW50ZXJuYWw7CiAgICAgICAgIHJldHVybiAwOwog
ICAgIH0KLSAgICBQYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4dDNEPiByZXN1bHQgPSBuZXcgR3Jh
cGhpY3NDb250ZXh0M0QoYXR0cnMpOworICAgIFBhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0M0Q+
IHJlc3VsdCA9IG5ldyBHcmFwaGljc0NvbnRleHQzRChhdHRycywgaG9zdFdpbmRvdyk7CiAgICAg
cmVzdWx0LT5tX2ludGVybmFsLnNldChpbnRlcm5hbCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
</data>
<flag name="review"
          id="37011"
          type_id="1"
          status="-"
          setter="hausmann"
    />
    <flag name="commit-queue"
          id="37012"
          type_id="3"
          status="-"
          setter="hausmann"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53522</attachid>
            <date>2010-04-16 01:00:04 -0700</date>
            <delta_ts>2010-04-16 01:06:25 -0700</delta_ts>
            <desc>Review changes proposed</desc>
            <filename>37070-5.diff</filename>
            <type>text/plain</type>
            <size>11307</size>
            <attacher name="Jarkko Sakkinen">jarkko.j.sakkinen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MDdhNDVmZS4uNjg4M2Q4NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAxMC0wNC0xMyAgSmFya2tvIFNha2tp
bmVuICA8amFya2tvLmouc2Fra2luZW5AZ21haWwuY29tPgorIAorICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKyAKKyAgICAgICAgW1F0XSBXZWJHTCBpcyBub3QgdmlzaWJsZSB3
aGVuIFFHTFdpZGdldCB2aWV3cG9ydCBpcyB1c2VkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNzA3MAorIAorICAgICAgICBBZGRlZCBIb3N0V2luZG93
IHBhcmFtZXRlciB0byB0aGUgY29uc3RydWN0b3Igb2YgR3JhcGhpY3NDb250ZXh0M0QuCisgICAg
ICAgIFNoYXJlZCBPcGVuR0wgY29udGV4dCBpcyBpbml0aWFsaXplZCB3aXRoIHBhcmVudCBRR0xX
aWRnZXQuCisgCisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0NvbnRleHQzRE1hYy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6On5HcmFwaGljc0Nv
bnRleHQzREludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50
ZXJuYWw6OmdldE93bmVyR0xXaWRnZXQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6R3Jh
cGhpY3NDb250ZXh0M0QpOgorCiAyMDEwLTA0LTE2ICBKYXJra28gU2Fra2luZW4gIDxqYXJra28u
ai5zYWtraW5lbkBnbWFpbC5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dC5jcHAgYi9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5k
ZXggMzYwZGM2NS4uYmIzMzkxMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0LmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIldlYkdMUmVuZGVy
aW5nQ29udGV4dC5oIgogCiAjaW5jbHVkZSAiQ2FudmFzUGl4ZWxBcnJheS5oIgorI2luY2x1ZGUg
IkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkhUTUxDYW52YXNFbGVtZW50LmgiCiAjaW5jbHVkZSAi
SFRNTEltYWdlRWxlbWVudC5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCkBAIC03Myw3ICs3
NCw5IEBAIHByaXZhdGU6CiAKIFBhc3NPd25QdHI8V2ViR0xSZW5kZXJpbmdDb250ZXh0PiBXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZShIVE1MQ2FudmFzRWxlbWVudCogY2FudmFzLCBXZWJH
TENvbnRleHRBdHRyaWJ1dGVzKiBhdHRycykKIHsKLSAgICBPd25QdHI8R3JhcGhpY3NDb250ZXh0
M0Q+IGNvbnRleHQoR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZShhdHRycy0+YXR0cmlidXRlcygp
KSk7CisgICAgSG9zdFdpbmRvdyogaG9zdFdpbmRvdyA9IGNhbnZhcy0+ZG9jdW1lbnQoKS0+dmll
dygpLT5yb290KCktPmhvc3RXaW5kb3coKTsKKyAgICBPd25QdHI8R3JhcGhpY3NDb250ZXh0M0Q+
IGNvbnRleHQoR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZShhdHRycy0+YXR0cmlidXRlcygpLCBo
b3N0V2luZG93KSk7CisKICAgICBpZiAoIWNvbnRleHQpCiAgICAgICAgIHJldHVybiAwOwogICAg
ICAgICAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0M0QuaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaApp
bmRleCBmOTJmNmYzLi40NWY2ZjA2IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dDNELmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQzRC5oCkBAIC03Myw2ICs3Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICBjbGFzcyBXZWJHTFRleHR1cmU7CiAgICAgY2xhc3MgSW1hZ2U7CiAgICAgY2xhc3MgSW1h
Z2VEYXRhOworICAgIGNsYXNzIEhvc3RXaW5kb3c7CiAKICAgICBzdHJ1Y3QgQWN0aXZlSW5mbyB7
CiAgICAgICAgIFN0cmluZyBuYW1lOwpAQCAtNDEwLDcgKzQxMSw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgICAgIGJvb2wgcHJlbXVsdGlwbGllZEFscGhhOwogICAgICAgICB9Owog
Ci0gICAgICAgIHN0YXRpYyBQYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjcmVhdGUoQXR0
cmlidXRlcyBhdHRycyk7CisgICAgICAgIHN0YXRpYyBQYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4
dDNEPiBjcmVhdGUoQXR0cmlidXRlcyBhdHRycywgSG9zdFdpbmRvdyogaG9zdFdpbmRvdyk7CiAg
ICAgICAgIHZpcnR1YWwgfkdyYXBoaWNzQ29udGV4dDNEKCk7CiAKICNpZiBQTEFURk9STShNQUMp
CkBAIC02ODUsNyArNjg2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHN5
bnRoZXNpemVHTEVycm9yKHVuc2lnbmVkIGxvbmcgZXJyb3IpOwogCiAgICAgcHJpdmF0ZTogICAg
ICAgIAotICAgICAgICBHcmFwaGljc0NvbnRleHQzRChBdHRyaWJ1dGVzIGF0dHJzKTsKKyAgICAg
ICAgR3JhcGhpY3NDb250ZXh0M0QoQXR0cmlidXRlcyBhdHRycywgSG9zdFdpbmRvdyogaG9zdFdp
bmRvdyk7CiAKICAgICAgICAgLy8gSGVscGVycyBmb3IgdGV4dHVyZSB1cGxvYWRpbmcuCiAgICAg
ICAgIHZvaWQgcHJlbXVsdGlwbHlBbHBoYSh1bnNpZ25lZCBjaGFyKiByZ2JhRGF0YSwgaW50IG51
bVBpeGVscyk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFw
aGljc0NvbnRleHQzRE1hYy5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFw
aGljc0NvbnRleHQzRE1hYy5jcHAKaW5kZXggODE5ZDBlYi4uODdiMTlmOSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0M0RNYWMuY3BwCisr
KyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29udGV4dDNETWFjLmNw
cApAQCAtNzUsMTMgKzc1LDEzIEBAIHN0YXRpYyB2b2lkIHNldFBpeGVsRm9ybWF0KFZlY3RvcjxD
R0xQaXhlbEZvcm1hdEF0dHJpYnV0ZT4mIGF0dHJpYnMsIGludCBjb2xvckJpCiAgICAgYXR0cmli
cy5hcHBlbmQoc3RhdGljX2Nhc3Q8Q0dMUGl4ZWxGb3JtYXRBdHRyaWJ1dGU+KDApKTsKIH0KIAot
UGFzc093blB0cjxHcmFwaGljc0NvbnRleHQzRD4gR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZShH
cmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRycykKK1Bhc3NPd25QdHI8R3JhcGhpY3ND
b250ZXh0M0Q+IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0Q6OkF0
dHJpYnV0ZXMgYXR0cnMsIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpCiB7Ci0gICAgT3duUHRyPEdy
YXBoaWNzQ29udGV4dDNEPiBjb250ZXh0KG5ldyBHcmFwaGljc0NvbnRleHQzRChhdHRycykpOwor
ICAgIE93blB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dChuZXcgR3JhcGhpY3NDb250ZXh0
M0QoYXR0cnMsIGhvc3RXaW5kb3cpKTsKICAgICByZXR1cm4gY29udGV4dC0+bV9jb250ZXh0T2Jq
ID8gY29udGV4dC5yZWxlYXNlKCkgOiAwOwogfQogCi1HcmFwaGljc0NvbnRleHQzRDo6R3JhcGhp
Y3NDb250ZXh0M0QoR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cnMpCitHcmFwaGlj
c0NvbnRleHQzRDo6R3JhcGhpY3NDb250ZXh0M0QoR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0
ZXMgYXR0cnMsIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpCiAgICAgOiBtX2N1cnJlbnRXaWR0aCgw
KQogICAgICwgbV9jdXJyZW50SGVpZ2h0KDApCiAgICAgLCBtX2F0dHJzKGF0dHJzKQpAQCAtOTQs
NiArOTQsOCBAQCBHcmFwaGljc0NvbnRleHQzRDo6R3JhcGhpY3NDb250ZXh0M0QoR3JhcGhpY3ND
b250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cnMpCiAgICAgLCBtX211bHRpc2FtcGxlRGVwdGhTdGVu
Y2lsQnVmZmVyKDApCiAgICAgLCBtX211bHRpc2FtcGxlQ29sb3JCdWZmZXIoMCkKIHsKKyAgICBV
TlVTRURfUEFSQU0oaG9zdFdpbmRvdyk7CisKICAgICBWZWN0b3I8Q0dMUGl4ZWxGb3JtYXRBdHRy
aWJ1dGU+IGF0dHJpYnM7CiAgICAgQ0dMUGl4ZWxGb3JtYXRPYmogcGl4ZWxGb3JtYXRPYmogPSAw
OwogICAgIEdMaW50IG51bVBpeGVsRm9ybWF0cyA9IDA7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwIGIvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcAppbmRleCA2MzZjMjU4Li5i
MGRkMjg5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNz
Q29udGV4dDNEUXQuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhp
Y3NDb250ZXh0M0RRdC5jcHAKQEAgLTIzLDggKzIzLDEwIEBACiAjaW5jbHVkZSAiQ2FudmFzT2Jq
ZWN0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiSFRNTENhbnZh
c0VsZW1lbnQuaCIKKyNpbmNsdWRlICJIb3N0V2luZG93LmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZm
ZXIuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlFXZWJQYWdlQ2xp
ZW50LmgiCiAjaW5jbHVkZSAiV2ViR0xBY3RpdmVJbmZvLmgiCiAjaW5jbHVkZSAiV2ViR0xBcnJh
eS5oIgogI2luY2x1ZGUgIldlYkdMQnVmZmVyLmgiCkBAIC0zNyw2ICszOSw3IEBACiAjaW5jbHVk
ZSAiV2ViR0xTaGFkZXIuaCIKICNpbmNsdWRlICJXZWJHTFRleHR1cmUuaCIKICNpbmNsdWRlICJX
ZWJHTFVuc2lnbmVkQnl0ZUFycmF5LmgiCisjaW5jbHVkZSA8UUFic3RyYWN0U2Nyb2xsQXJlYT4K
ICNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CiAKQEAgLTE0Nyw3ICsxNTAsNyBAQCB0eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFZlcnRl
eEF0dHJpYlBvaW50ZXJUeXBlKSAoR0x1aW50LCBHTGludCwgR0xlbnVtLCBHTGJvbwogCiBjbGFz
cyBHcmFwaGljc0NvbnRleHQzREludGVybmFsIHsKIHB1YmxpYzoKLSAgICBHcmFwaGljc0NvbnRl
eHQzREludGVybmFsKEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJzKTsKKyAgICBH
cmFwaGljc0NvbnRleHQzREludGVybmFsKEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0
dHJzLCBIb3N0V2luZG93KiBob3N0V2luZG93KTsKICAgICB+R3JhcGhpY3NDb250ZXh0M0RJbnRl
cm5hbCgpOwogCiAgICAgYm9vbCBpc0NvbnRleHRWYWxpZCgpIHsgcmV0dXJuIG1fY29udGV4dFZh
bGlkOyB9CkBAIC0yNTUsNiArMjU4LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogCisgICAgUUdM
V2lkZ2V0KiBnZXRPd25lckdMV2lkZ2V0KFFXZWJQYWdlQ2xpZW50KiB3ZWJQYWdlQ2xpZW50KTsK
ICAgICB2b2lkKiBnZXRQcm9jQWRkcmVzcyhjb25zdCBTdHJpbmcmIHByb2MpOwogICAgIGJvb2wg
bV9jb250ZXh0VmFsaWQ7CiB9OwpAQCAtMjY1LDcgKzI2OSw3IEBAIHByaXZhdGU6CiAjZGVmaW5l
IEdFVF9QUk9DX0FERFJFU1MoUHJvYykgcmVpbnRlcnByZXRfY2FzdDxQcm9jIyNUeXBlPihnZXRQ
cm9jQWRkcmVzcygjUHJvYykpOwogI2VuZGlmCiAgCi1HcmFwaGljc0NvbnRleHQzREludGVybmFs
OjpHcmFwaGljc0NvbnRleHQzREludGVybmFsKEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVz
IGF0dHJzKQorR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6R3JhcGhpY3NDb250ZXh0M0RJbnRl
cm5hbChHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRycywgSG9zdFdpbmRvdyogaG9z
dFdpbmRvdykKICAgICA6IG1fYXR0cnMoYXR0cnMpCiAgICAgLCBtX2dsV2lkZ2V0KDApCiAgICAg
LCBtX3RleHR1cmUoMCkKQEAgLTI3NCwyNCArMjc4LDMzIEBAIEdyYXBoaWNzQ29udGV4dDNESW50
ZXJuYWw6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwoR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJp
YnV0CiAgICAgLCBtX2RlcHRoQnVmZmVyKDApCiAgICAgLCBtX2NvbnRleHRWYWxpZCh0cnVlKQog
ewotICAgIG1fYXR0cnMuYWxwaGEgPSB0cnVlOwotICAgIG1fYXR0cnMuZGVwdGggPSB0cnVlOwot
ICAgIG1fYXR0cnMuc3RlbmNpbCA9IGZhbHNlOwotICAgIG1fYXR0cnMuYW50aWFsaWFzID0gZmFs
c2U7Ci0gICAgbV9hdHRycy5wcmVtdWx0aXBsaWVkQWxwaGEgPSB0cnVlOworICAgIFFXZWJQYWdl
Q2xpZW50KiB3ZWJQYWdlQ2xpZW50ID0gaG9zdFdpbmRvdy0+cGxhdGZvcm1QYWdlQ2xpZW50KCk7
CisgICAgUUdMV2lkZ2V0KiBvd25lckdMV2lkZ2V0ICA9IGdldE93bmVyR0xXaWRnZXQod2ViUGFn
ZUNsaWVudCk7CiAKLSAgICBRR0xGb3JtYXQgZm9ybWF0OworICAgIGlmIChvd25lckdMV2lkZ2V0
KSAKKyAgICAgICAgbV9nbFdpZGdldCA9IG5ldyBRR0xXaWRnZXQoMCwgb3duZXJHTFdpZGdldCk7
CisgICAgZWxzZSB7CisgICAgICAgIFFHTEZvcm1hdCBmb3JtYXQ7CisgICAgICAgIGZvcm1hdC5z
ZXREZXB0aCh0cnVlKTsKKyAgICAgICAgZm9ybWF0LnNldFNhbXBsZUJ1ZmZlcnModHJ1ZSk7Cisg
ICAgICAgIGZvcm1hdC5zZXRTdGVuY2lsKGZhbHNlKTsKIAotICAgIGZvcm1hdC5zZXREZXB0aCh0
cnVlKTsKLSAgICBmb3JtYXQuc2V0U2FtcGxlQnVmZmVycyh0cnVlKTsKLSAgICBmb3JtYXQuc2V0
U3RlbmNpbChmYWxzZSk7CisgICAgICAgIG1fZ2xXaWRnZXQgPSBuZXcgUUdMV2lkZ2V0KGZvcm1h
dCk7CisgICAgfQogCi0gICAgbV9nbFdpZGdldCA9IG5ldyBRR0xXaWRnZXQoZm9ybWF0KTsKICAg
ICBpZiAoIW1fZ2xXaWRnZXQtPmlzVmFsaWQoKSkgewogICAgICAgICBMT0dfRVJST1IoIkdyYXBo
aWNzQ29udGV4dDNEOiBRR0xXaWRnZXQgZG9lcyBub3QgaGF2ZSBhIHZhbGlkIGNvbnRleHQiKTsK
ICAgICAgICAgbV9jb250ZXh0VmFsaWQgPSBmYWxzZTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
KyAKKyAgICBRR0xGb3JtYXQgZm9ybWF0ID0gbV9nbFdpZGdldC0+Zm9ybWF0KCk7CisKKyAgICBt
X2F0dHJzLmFscGhhID0gZm9ybWF0LmFscGhhKCk7CisgICAgbV9hdHRycy5kZXB0aCA9IGZvcm1h
dC5kZXB0aCgpOworICAgIG1fYXR0cnMuc3RlbmNpbCA9IGZvcm1hdC5zdGVuY2lsKCk7CisgICAg
bV9hdHRycy5hbnRpYWxpYXMgPSBmYWxzZTsKKyAgICBtX2F0dHJzLnByZW11bHRpcGxpZWRBbHBo
YSA9IHRydWU7CiAKICAgICBtX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwogCkBAIC00MzEsNiAr
NDQ0LDE2IEBAIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6On5HcmFwaGljc0NvbnRleHQzRElu
dGVybmFsKCkKICAgICBtX2dsV2lkZ2V0ID0gMDsKIH0KIAorUUdMV2lkZ2V0KiBHcmFwaGljc0Nv
bnRleHQzREludGVybmFsOjpnZXRPd25lckdMV2lkZ2V0KFFXZWJQYWdlQ2xpZW50KiB3ZWJQYWdl
Q2xpZW50KQoreworICAgIFFBYnN0cmFjdFNjcm9sbEFyZWEqIHNjcm9sbEFyZWEgPSBxb2JqZWN0
X2Nhc3Q8UUFic3RyYWN0U2Nyb2xsQXJlYSo+KHdlYlBhZ2VDbGllbnQtPm93bmVyV2lkZ2V0KCkp
OworCisgICAgaWYgKHNjcm9sbEFyZWEpIAorICAgICAgICByZXR1cm4gcW9iamVjdF9jYXN0PFFH
TFdpZGdldCo+KHNjcm9sbEFyZWEtPnZpZXdwb3J0KCkpOworCisgICAgcmV0dXJuIDA7Cit9CisK
IHZvaWQqIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmdldFByb2NBZGRyZXNzKGNvbnN0IFN0
cmluZyYgcHJvYykKIHsKICAgICBTdHJpbmcgZXh0WzNdID0geyAiIiwgIkFSQiIsICJFWFQiIH07
CkBAIC00NDgsMTQgKzQ3MSwxNCBAQCB2b2lkKiBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpn
ZXRQcm9jQWRkcmVzcyhjb25zdCBTdHJpbmcmIHByb2MpCiAgICAgcmV0dXJuIDA7CiB9CiAKLVBh
c3NPd25QdHI8R3JhcGhpY3NDb250ZXh0M0Q+IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGUoR3Jh
cGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cnMpCitQYXNzT3duUHRyPEdyYXBoaWNzQ29u
dGV4dDNEPiBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dDNEOjpBdHRy
aWJ1dGVzIGF0dHJzLCBIb3N0V2luZG93KiBob3N0V2luZG93KQogewotICAgIE93blB0cjxHcmFw
aGljc0NvbnRleHQzRD4gY29udGV4dChuZXcgR3JhcGhpY3NDb250ZXh0M0QoYXR0cnMpKTsKKyAg
ICBPd25QdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQobmV3IEdyYXBoaWNzQ29udGV4dDNE
KGF0dHJzLCBob3N0V2luZG93KSk7CiAgICAgcmV0dXJuIGNvbnRleHQtPm1faW50ZXJuYWwgPyBj
b250ZXh0LnJlbGVhc2UoKSA6IDA7CiB9CiAKLUdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0Nv
bnRleHQzRChHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRycykKLSAgICA6IG1faW50
ZXJuYWwobmV3IEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwoYXR0cnMpKQorR3JhcGhpY3NDb250
ZXh0M0Q6OkdyYXBoaWNzQ29udGV4dDNEKEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0
dHJzLCBIb3N0V2luZG93KiBob3N0V2luZG93KQorICAgIDogbV9pbnRlcm5hbChuZXcgR3JhcGhp
Y3NDb250ZXh0M0RJbnRlcm5hbChhdHRycywgaG9zdFdpbmRvdykpCiB7CiAgICAgaWYgKCFtX2lu
dGVybmFsLT5pc0NvbnRleHRWYWxpZCgpKSAKICAgICAgICAgbV9pbnRlcm5hbCA9IDA7CmRpZmYg
LS1naXQgYS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZwppbmRleCA0YmI3N2RlLi4xMDEzYmE2IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCisrKyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBA
QAorIDIwMTAtMDQtMTMgIEphcmtrbyBTYWtraW5lbiAgPGphcmtrby5qLnNha2tpbmVuQGdtYWls
LmNvbT4KKyAKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgCisgICAgICAg
IFtRdF0gV2ViR0wgaXMgbm90IHZpc2libGUgd2hlbiBRR0xXaWRnZXQgdmlld3BvcnQgaXMgdXNl
ZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzcwNzAK
KyAKKyAgICAgICAgQWRkZWQgSG9zdFdpbmRvdyBwYXJhbWV0ZXIgdG8gdGhlIGNvbnN0cnVjdG9y
IG9mIEdyYXBoaWNzQ29udGV4dDNELgorICAgICAgICBTaGFyZWQgT3BlbkdMIGNvbnRleHQgaXMg
aW5pdGlhbGl6ZWQgd2l0aCBwYXJlbnQgUUdMV2lkZ2V0LgorIAorICAgICAgICAqIHNyYy9HcmFw
aGljc0NvbnRleHQzRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6
R3JhcGhpY3NDb250ZXh0M0QpOgorCiAyMDEwLTA0LTE1ICBBbGJlcnQgSi4gV29uZyAgPGFqd29u
Z0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjU3NjYw
LgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRC5jcHAg
Yi9XZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNELmNwcAppbmRleCA0NzY3YWQw
Li4wYzEzN2FiIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4
dDNELmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNELmNwcApA
QCAtMTA0OCwyMiArMTA0OCwyMyBAQCBydCBHcmFwaGljc0NvbnRleHQzRDo6bmFtZSh0MSBhMSwg
dDIgYTIsIHQzIGEzLCB0NCBhNCwgdDUgYTUsIHQ2IGE2LCB0NyBhNywgdDggYQogICAgIHJldHVy
biBtX2ludGVybmFsLT5uYW1lKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCwgYTkpOyAg
IFwKIH0KIAotR3JhcGhpY3NDb250ZXh0M0Q6OkdyYXBoaWNzQ29udGV4dDNEKEdyYXBoaWNzQ29u
dGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJzKQorR3JhcGhpY3NDb250ZXh0M0Q6OkdyYXBoaWNzQ29u
dGV4dDNEKEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJzLCBIb3N0V2luZG93KiBo
b3N0V2luZG93KQogeworICAgIFVOVVNFRF9QQVJBTShob3N0V2luZG93KTsKIH0KIAogR3JhcGhp
Y3NDb250ZXh0M0Q6On5HcmFwaGljc0NvbnRleHQzRCgpCiB7CiB9CiAKLVBhc3NPd25QdHI8R3Jh
cGhpY3NDb250ZXh0M0Q+IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0
M0Q6OkF0dHJpYnV0ZXMgYXR0cnMpCitQYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBHcmFw
aGljc0NvbnRleHQzRDo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJz
LCBIb3N0V2luZG93KiBob3N0V2luZG93KQogewogICAgIEdyYXBoaWNzQ29udGV4dDNESW50ZXJu
YWwqIGludGVybmFsID0gbmV3IEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwoKTsKICAgICBpZiAo
IWludGVybmFsLT5pbml0aWFsaXplKGF0dHJzKSkgewogICAgICAgICBkZWxldGUgaW50ZXJuYWw7
CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KLSAgICBQYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4
dDNEPiByZXN1bHQgPSBuZXcgR3JhcGhpY3NDb250ZXh0M0QoYXR0cnMpOworICAgIFBhc3NPd25Q
dHI8R3JhcGhpY3NDb250ZXh0M0Q+IHJlc3VsdCA9IG5ldyBHcmFwaGljc0NvbnRleHQzRChhdHRy
cywgaG9zdFdpbmRvdyk7CiAgICAgcmVzdWx0LT5tX2ludGVybmFsLnNldChpbnRlcm5hbCk7CiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53523</attachid>
            <date>2010-04-16 01:06:25 -0700</date>
            <delta_ts>2010-04-16 14:39:46 -0700</delta_ts>
            <desc>Fixed ChangeLog entries.</desc>
            <filename>37070-6.diff</filename>
            <type>text/plain</type>
            <size>11308</size>
            <attacher name="Jarkko Sakkinen">jarkko.j.sakkinen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MDdhNDVmZS4uM2FhMzVjMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsNCArMSwyNyBAQAogMjAxMC0wNC0xNiAgSmFya2tvIFNha2tp
bmVuICA8amFya2tvLmouc2Fra2luZW5AZ21haWwuY29tPgorIAorICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKyAKKyAgICAgICAgW1F0XSBXZWJHTCBpcyBub3QgdmlzaWJsZSB3
aGVuIFFHTFdpZGdldCB2aWV3cG9ydCBpcyB1c2VkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNzA3MAorIAorICAgICAgICBBZGRlZCBIb3N0V2luZG93
IHBhcmFtZXRlciB0byB0aGUgY29uc3RydWN0b3Igb2YgR3JhcGhpY3NDb250ZXh0M0QuCisgICAg
ICAgIFNoYXJlZCBPcGVuR0wgY29udGV4dCBpcyBpbml0aWFsaXplZCB3aXRoIHBhcmVudCBRR0xX
aWRnZXQuCisgCisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0NvbnRleHQzRE1hYy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6On5HcmFwaGljc0Nv
bnRleHQzREludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50
ZXJuYWw6OmdldE93bmVyR0xXaWRnZXQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6R3Jh
cGhpY3NDb250ZXh0M0QpOgorCisyMDEwLTA0LTE2ICBKYXJra28gU2Fra2luZW4gIDxqYXJra28u
ai5zYWtraW5lbkBnbWFpbC5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0LmNwcCBiL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcApp
bmRleCAzNjBkYzY1Li5iYjMzOTExIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHQuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiV2ViR0xSZW5k
ZXJpbmdDb250ZXh0LmgiCiAKICNpbmNsdWRlICJDYW52YXNQaXhlbEFycmF5LmgiCisjaW5jbHVk
ZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiSFRNTENhbnZhc0VsZW1lbnQuaCIKICNpbmNsdWRl
ICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKQEAgLTczLDcg
Kzc0LDkgQEAgcHJpdmF0ZToKIAogUGFzc093blB0cjxXZWJHTFJlbmRlcmluZ0NvbnRleHQ+IFdl
YkdMUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlKEhUTUxDYW52YXNFbGVtZW50KiBjYW52YXMsIFdl
YkdMQ29udGV4dEF0dHJpYnV0ZXMqIGF0dHJzKQogewotICAgIE93blB0cjxHcmFwaGljc0NvbnRl
eHQzRD4gY29udGV4dChHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlKGF0dHJzLT5hdHRyaWJ1dGVz
KCkpKTsKKyAgICBIb3N0V2luZG93KiBob3N0V2luZG93ID0gY2FudmFzLT5kb2N1bWVudCgpLT52
aWV3KCktPnJvb3QoKS0+aG9zdFdpbmRvdygpOworICAgIE93blB0cjxHcmFwaGljc0NvbnRleHQz
RD4gY29udGV4dChHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlKGF0dHJzLT5hdHRyaWJ1dGVzKCks
IGhvc3RXaW5kb3cpKTsKKwogICAgIGlmICghY29udGV4dCkKICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgICAgIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQzRC5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5o
CmluZGV4IGY5MmY2ZjMuLjQ1ZjZmMDYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dDNELmgKQEAgLTczLDYgKzczLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgIGNsYXNzIFdlYkdMVGV4dHVyZTsKICAgICBjbGFzcyBJbWFnZTsKICAgICBjbGFzcyBJ
bWFnZURhdGE7CisgICAgY2xhc3MgSG9zdFdpbmRvdzsKIAogICAgIHN0cnVjdCBBY3RpdmVJbmZv
IHsKICAgICAgICAgU3RyaW5nIG5hbWU7CkBAIC00MTAsNyArNDExLDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICAgICAgYm9vbCBwcmVtdWx0aXBsaWVkQWxwaGE7CiAgICAgICAgIH07
CiAKLSAgICAgICAgc3RhdGljIFBhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNyZWF0ZShB
dHRyaWJ1dGVzIGF0dHJzKTsKKyAgICAgICAgc3RhdGljIFBhc3NPd25QdHI8R3JhcGhpY3NDb250
ZXh0M0Q+IGNyZWF0ZShBdHRyaWJ1dGVzIGF0dHJzLCBIb3N0V2luZG93KiBob3N0V2luZG93KTsK
ICAgICAgICAgdmlydHVhbCB+R3JhcGhpY3NDb250ZXh0M0QoKTsKIAogI2lmIFBMQVRGT1JNKE1B
QykKQEAgLTY4NSw3ICs2ODYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQg
c3ludGhlc2l6ZUdMRXJyb3IodW5zaWduZWQgbG9uZyBlcnJvcik7CiAKICAgICBwcml2YXRlOiAg
ICAgICAgCi0gICAgICAgIEdyYXBoaWNzQ29udGV4dDNEKEF0dHJpYnV0ZXMgYXR0cnMpOworICAg
ICAgICBHcmFwaGljc0NvbnRleHQzRChBdHRyaWJ1dGVzIGF0dHJzLCBIb3N0V2luZG93KiBob3N0
V2luZG93KTsKIAogICAgICAgICAvLyBIZWxwZXJzIGZvciB0ZXh0dXJlIHVwbG9hZGluZy4KICAg
ICAgICAgdm9pZCBwcmVtdWx0aXBseUFscGhhKHVuc2lnbmVkIGNoYXIqIHJnYmFEYXRhLCBpbnQg
bnVtUGl4ZWxzKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dy
YXBoaWNzQ29udGV4dDNETWFjLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dy
YXBoaWNzQ29udGV4dDNETWFjLmNwcAppbmRleCA4MTlkMGViLi44N2IxOWY5IDEwMDY0NAotLS0g
YS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0NvbnRleHQzRE1hYy5jcHAK
KysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0M0RNYWMu
Y3BwCkBAIC03NSwxMyArNzUsMTMgQEAgc3RhdGljIHZvaWQgc2V0UGl4ZWxGb3JtYXQoVmVjdG9y
PENHTFBpeGVsRm9ybWF0QXR0cmlidXRlPiYgYXR0cmlicywgaW50IGNvbG9yQmkKICAgICBhdHRy
aWJzLmFwcGVuZChzdGF0aWNfY2FzdDxDR0xQaXhlbEZvcm1hdEF0dHJpYnV0ZT4oMCkpOwogfQog
Ci1QYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRl
KEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJzKQorUGFzc093blB0cjxHcmFwaGlj
c0NvbnRleHQzRD4gR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZShHcmFwaGljc0NvbnRleHQzRDo6
QXR0cmlidXRlcyBhdHRycywgSG9zdFdpbmRvdyogaG9zdFdpbmRvdykKIHsKLSAgICBPd25QdHI8
R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQobmV3IEdyYXBoaWNzQ29udGV4dDNEKGF0dHJzKSk7
CisgICAgT3duUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0KG5ldyBHcmFwaGljc0NvbnRl
eHQzRChhdHRycywgaG9zdFdpbmRvdykpOwogICAgIHJldHVybiBjb250ZXh0LT5tX2NvbnRleHRP
YmogPyBjb250ZXh0LnJlbGVhc2UoKSA6IDA7CiB9CiAKLUdyYXBoaWNzQ29udGV4dDNEOjpHcmFw
aGljc0NvbnRleHQzRChHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRycykKK0dyYXBo
aWNzQ29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRChHcmFwaGljc0NvbnRleHQzRDo6QXR0cmli
dXRlcyBhdHRycywgSG9zdFdpbmRvdyogaG9zdFdpbmRvdykKICAgICA6IG1fY3VycmVudFdpZHRo
KDApCiAgICAgLCBtX2N1cnJlbnRIZWlnaHQoMCkKICAgICAsIG1fYXR0cnMoYXR0cnMpCkBAIC05
NCw2ICs5NCw4IEBAIEdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRChHcmFwaGlj
c0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRycykKICAgICAsIG1fbXVsdGlzYW1wbGVEZXB0aFN0
ZW5jaWxCdWZmZXIoMCkKICAgICAsIG1fbXVsdGlzYW1wbGVDb2xvckJ1ZmZlcigwKQogeworICAg
IFVOVVNFRF9QQVJBTShob3N0V2luZG93KTsKKwogICAgIFZlY3RvcjxDR0xQaXhlbEZvcm1hdEF0
dHJpYnV0ZT4gYXR0cmliczsKICAgICBDR0xQaXhlbEZvcm1hdE9iaiBwaXhlbEZvcm1hdE9iaiA9
IDA7CiAgICAgR0xpbnQgbnVtUGl4ZWxGb3JtYXRzID0gMDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAgYi9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwCmluZGV4IDYzNmMyNTgu
LmIwZGQyODkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhp
Y3NDb250ZXh0M0RRdC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFw
aGljc0NvbnRleHQzRFF0LmNwcApAQCAtMjMsOCArMjMsMTAgQEAKICNpbmNsdWRlICJDYW52YXNP
YmplY3QuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJIVE1MQ2Fu
dmFzRWxlbWVudC5oIgorI2luY2x1ZGUgIkhvc3RXaW5kb3cuaCIKICNpbmNsdWRlICJJbWFnZUJ1
ZmZlci5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiUVdlYlBhZ2VD
bGllbnQuaCIKICNpbmNsdWRlICJXZWJHTEFjdGl2ZUluZm8uaCIKICNpbmNsdWRlICJXZWJHTEFy
cmF5LmgiCiAjaW5jbHVkZSAiV2ViR0xCdWZmZXIuaCIKQEAgLTM3LDYgKzM5LDcgQEAKICNpbmNs
dWRlICJXZWJHTFNoYWRlci5oIgogI2luY2x1ZGUgIldlYkdMVGV4dHVyZS5oIgogI2luY2x1ZGUg
IldlYkdMVW5zaWduZWRCeXRlQXJyYXkuaCIKKyNpbmNsdWRlIDxRQWJzdHJhY3RTY3JvbGxBcmVh
PgogI2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KIApAQCAtMTQ3LDcgKzE1MCw3IEBAIHR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVmVy
dGV4QXR0cmliUG9pbnRlclR5cGUpIChHTHVpbnQsIEdMaW50LCBHTGVudW0sIEdMYm9vCiAKIGNs
YXNzIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwgewogcHVibGljOgotICAgIEdyYXBoaWNzQ29u
dGV4dDNESW50ZXJuYWwoR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cnMpOworICAg
IEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwoR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMg
YXR0cnMsIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpOwogICAgIH5HcmFwaGljc0NvbnRleHQzRElu
dGVybmFsKCk7CiAKICAgICBib29sIGlzQ29udGV4dFZhbGlkKCkgeyByZXR1cm4gbV9jb250ZXh0
VmFsaWQ7IH0KQEAgLTI1NSw2ICsyNTgsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAKKyAgICBR
R0xXaWRnZXQqIGdldE93bmVyR0xXaWRnZXQoUVdlYlBhZ2VDbGllbnQqIHdlYlBhZ2VDbGllbnQp
OwogICAgIHZvaWQqIGdldFByb2NBZGRyZXNzKGNvbnN0IFN0cmluZyYgcHJvYyk7CiAgICAgYm9v
bCBtX2NvbnRleHRWYWxpZDsKIH07CkBAIC0yNjUsNyArMjY5LDcgQEAgcHJpdmF0ZToKICNkZWZp
bmUgR0VUX1BST0NfQUREUkVTUyhQcm9jKSByZWludGVycHJldF9jYXN0PFByb2MjI1R5cGU+KGdl
dFByb2NBZGRyZXNzKCNQcm9jKSk7CiAjZW5kaWYKICAKLUdyYXBoaWNzQ29udGV4dDNESW50ZXJu
YWw6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwoR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0
ZXMgYXR0cnMpCitHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpHcmFwaGljc0NvbnRleHQzRElu
dGVybmFsKEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJzLCBIb3N0V2luZG93KiBo
b3N0V2luZG93KQogICAgIDogbV9hdHRycyhhdHRycykKICAgICAsIG1fZ2xXaWRnZXQoMCkKICAg
ICAsIG1fdGV4dHVyZSgwKQpAQCAtMjc0LDI0ICsyNzgsMzMgQEAgR3JhcGhpY3NDb250ZXh0M0RJ
bnRlcm5hbDo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbChHcmFwaGljc0NvbnRleHQzRDo6QXR0
cmlidXQKICAgICAsIG1fZGVwdGhCdWZmZXIoMCkKICAgICAsIG1fY29udGV4dFZhbGlkKHRydWUp
CiB7Ci0gICAgbV9hdHRycy5hbHBoYSA9IHRydWU7Ci0gICAgbV9hdHRycy5kZXB0aCA9IHRydWU7
Ci0gICAgbV9hdHRycy5zdGVuY2lsID0gZmFsc2U7Ci0gICAgbV9hdHRycy5hbnRpYWxpYXMgPSBm
YWxzZTsKLSAgICBtX2F0dHJzLnByZW11bHRpcGxpZWRBbHBoYSA9IHRydWU7CisgICAgUVdlYlBh
Z2VDbGllbnQqIHdlYlBhZ2VDbGllbnQgPSBob3N0V2luZG93LT5wbGF0Zm9ybVBhZ2VDbGllbnQo
KTsKKyAgICBRR0xXaWRnZXQqIG93bmVyR0xXaWRnZXQgID0gZ2V0T3duZXJHTFdpZGdldCh3ZWJQ
YWdlQ2xpZW50KTsKIAotICAgIFFHTEZvcm1hdCBmb3JtYXQ7CisgICAgaWYgKG93bmVyR0xXaWRn
ZXQpIAorICAgICAgICBtX2dsV2lkZ2V0ID0gbmV3IFFHTFdpZGdldCgwLCBvd25lckdMV2lkZ2V0
KTsKKyAgICBlbHNlIHsKKyAgICAgICAgUUdMRm9ybWF0IGZvcm1hdDsKKyAgICAgICAgZm9ybWF0
LnNldERlcHRoKHRydWUpOworICAgICAgICBmb3JtYXQuc2V0U2FtcGxlQnVmZmVycyh0cnVlKTsK
KyAgICAgICAgZm9ybWF0LnNldFN0ZW5jaWwoZmFsc2UpOwogCi0gICAgZm9ybWF0LnNldERlcHRo
KHRydWUpOwotICAgIGZvcm1hdC5zZXRTYW1wbGVCdWZmZXJzKHRydWUpOwotICAgIGZvcm1hdC5z
ZXRTdGVuY2lsKGZhbHNlKTsKKyAgICAgICAgbV9nbFdpZGdldCA9IG5ldyBRR0xXaWRnZXQoZm9y
bWF0KTsKKyAgICB9CiAKLSAgICBtX2dsV2lkZ2V0ID0gbmV3IFFHTFdpZGdldChmb3JtYXQpOwog
ICAgIGlmICghbV9nbFdpZGdldC0+aXNWYWxpZCgpKSB7CiAgICAgICAgIExPR19FUlJPUigiR3Jh
cGhpY3NDb250ZXh0M0Q6IFFHTFdpZGdldCBkb2VzIG5vdCBoYXZlIGEgdmFsaWQgY29udGV4dCIp
OwogICAgICAgICBtX2NvbnRleHRWYWxpZCA9IGZhbHNlOwogICAgICAgICByZXR1cm47CiAgICAg
fQorIAorICAgIFFHTEZvcm1hdCBmb3JtYXQgPSBtX2dsV2lkZ2V0LT5mb3JtYXQoKTsKKworICAg
IG1fYXR0cnMuYWxwaGEgPSBmb3JtYXQuYWxwaGEoKTsKKyAgICBtX2F0dHJzLmRlcHRoID0gZm9y
bWF0LmRlcHRoKCk7CisgICAgbV9hdHRycy5zdGVuY2lsID0gZm9ybWF0LnN0ZW5jaWwoKTsKKyAg
ICBtX2F0dHJzLmFudGlhbGlhcyA9IGZhbHNlOworICAgIG1fYXR0cnMucHJlbXVsdGlwbGllZEFs
cGhhID0gdHJ1ZTsKIAogICAgIG1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CiAKQEAgLTQzMSw2
ICs0NDQsMTYgQEAgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6fkdyYXBoaWNzQ29udGV4dDNE
SW50ZXJuYWwoKQogICAgIG1fZ2xXaWRnZXQgPSAwOwogfQogCitRR0xXaWRnZXQqIEdyYXBoaWNz
Q29udGV4dDNESW50ZXJuYWw6OmdldE93bmVyR0xXaWRnZXQoUVdlYlBhZ2VDbGllbnQqIHdlYlBh
Z2VDbGllbnQpCit7CisgICAgUUFic3RyYWN0U2Nyb2xsQXJlYSogc2Nyb2xsQXJlYSA9IHFvYmpl
Y3RfY2FzdDxRQWJzdHJhY3RTY3JvbGxBcmVhKj4od2ViUGFnZUNsaWVudC0+b3duZXJXaWRnZXQo
KSk7CisKKyAgICBpZiAoc2Nyb2xsQXJlYSkgCisgICAgICAgIHJldHVybiBxb2JqZWN0X2Nhc3Q8
UUdMV2lkZ2V0Kj4oc2Nyb2xsQXJlYS0+dmlld3BvcnQoKSk7CisKKyAgICByZXR1cm4gMDsKK30K
Kwogdm9pZCogR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Z2V0UHJvY0FkZHJlc3MoY29uc3Qg
U3RyaW5nJiBwcm9jKQogewogICAgIFN0cmluZyBleHRbM10gPSB7ICIiLCAiQVJCIiwgIkVYVCIg
fTsKQEAgLTQ0OCwxNCArNDcxLDE0IEBAIHZvaWQqIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6
OmdldFByb2NBZGRyZXNzKGNvbnN0IFN0cmluZyYgcHJvYykKICAgICByZXR1cm4gMDsKIH0KIAot
UGFzc093blB0cjxHcmFwaGljc0NvbnRleHQzRD4gR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZShH
cmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRycykKK1Bhc3NPd25QdHI8R3JhcGhpY3ND
b250ZXh0M0Q+IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0Q6OkF0
dHJpYnV0ZXMgYXR0cnMsIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpCiB7Ci0gICAgT3duUHRyPEdy
YXBoaWNzQ29udGV4dDNEPiBjb250ZXh0KG5ldyBHcmFwaGljc0NvbnRleHQzRChhdHRycykpOwor
ICAgIE93blB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dChuZXcgR3JhcGhpY3NDb250ZXh0
M0QoYXR0cnMsIGhvc3RXaW5kb3cpKTsKICAgICByZXR1cm4gY29udGV4dC0+bV9pbnRlcm5hbCA/
IGNvbnRleHQucmVsZWFzZSgpIDogMDsKIH0KIAotR3JhcGhpY3NDb250ZXh0M0Q6OkdyYXBoaWNz
Q29udGV4dDNEKEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJzKQotICAgIDogbV9p
bnRlcm5hbChuZXcgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbChhdHRycykpCitHcmFwaGljc0Nv
bnRleHQzRDo6R3JhcGhpY3NDb250ZXh0M0QoR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMg
YXR0cnMsIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpCisgICAgOiBtX2ludGVybmFsKG5ldyBHcmFw
aGljc0NvbnRleHQzREludGVybmFsKGF0dHJzLCBob3N0V2luZG93KSkKIHsKICAgICBpZiAoIW1f
aW50ZXJuYWwtPmlzQ29udGV4dFZhbGlkKCkpIAogICAgICAgICBtX2ludGVybmFsID0gMDsKZGlm
ZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCmluZGV4IDRiYjc3ZGUuLjNmYzcxODMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2
IEBACisyMDEwLTA0LTE2ICBKYXJra28gU2Fra2luZW4gIDxqYXJra28uai5zYWtraW5lbkBnbWFp
bC5jb20+CisgCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorIAorICAgICAg
ICBbUXRdIFdlYkdMIGlzIG5vdCB2aXNpYmxlIHdoZW4gUUdMV2lkZ2V0IHZpZXdwb3J0IGlzIHVz
ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM3MDcw
CisgCisgICAgICAgIEFkZGVkIEhvc3RXaW5kb3cgcGFyYW1ldGVyIHRvIHRoZSBjb25zdHJ1Y3Rv
ciBvZiBHcmFwaGljc0NvbnRleHQzRC4KKyAgICAgICAgU2hhcmVkIE9wZW5HTCBjb250ZXh0IGlz
IGluaXRpYWxpemVkIHdpdGggcGFyZW50IFFHTFdpZGdldC4KKyAKKyAgICAgICAgKiBzcmMvR3Jh
cGhpY3NDb250ZXh0M0QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
OkdyYXBoaWNzQ29udGV4dDNEKToKKwogMjAxMC0wNC0xNSAgQWxiZXJ0IEouIFdvbmcgIDxhandv
bmdAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI1NzY2
MC4KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0QuY3Bw
IGIvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRC5jcHAKaW5kZXggNDc2N2Fk
MC4uMGMxMzdhYiAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRl
eHQzRC5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRC5jcHAK
QEAgLTEwNDgsMjIgKzEwNDgsMjMgQEAgcnQgR3JhcGhpY3NDb250ZXh0M0Q6Om5hbWUodDEgYTEs
IHQyIGEyLCB0MyBhMywgdDQgYTQsIHQ1IGE1LCB0NiBhNiwgdDcgYTcsIHQ4IGEKICAgICByZXR1
cm4gbV9pbnRlcm5hbC0+bmFtZShhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgsIGE5KTsg
ICBcCiB9CiAKLUdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRChHcmFwaGljc0Nv
bnRleHQzRDo6QXR0cmlidXRlcyBhdHRycykKK0dyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0Nv
bnRleHQzRChHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRycywgSG9zdFdpbmRvdyog
aG9zdFdpbmRvdykKIHsKKyAgICBVTlVTRURfUEFSQU0oaG9zdFdpbmRvdyk7CiB9CiAKIEdyYXBo
aWNzQ29udGV4dDNEOjp+R3JhcGhpY3NDb250ZXh0M0QoKQogewogfQogCi1QYXNzT3duUHRyPEdy
YXBoaWNzQ29udGV4dDNEPiBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4
dDNEOjpBdHRyaWJ1dGVzIGF0dHJzKQorUGFzc093blB0cjxHcmFwaGljc0NvbnRleHQzRD4gR3Jh
cGhpY3NDb250ZXh0M0Q6OmNyZWF0ZShHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRy
cywgSG9zdFdpbmRvdyogaG9zdFdpbmRvdykKIHsKICAgICBHcmFwaGljc0NvbnRleHQzREludGVy
bmFsKiBpbnRlcm5hbCA9IG5ldyBHcmFwaGljc0NvbnRleHQzREludGVybmFsKCk7CiAgICAgaWYg
KCFpbnRlcm5hbC0+aW5pdGlhbGl6ZShhdHRycykpIHsKICAgICAgICAgZGVsZXRlIGludGVybmFs
OwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgUGFzc093blB0cjxHcmFwaGljc0NvbnRl
eHQzRD4gcmVzdWx0ID0gbmV3IEdyYXBoaWNzQ29udGV4dDNEKGF0dHJzKTsKKyAgICBQYXNzT3du
UHRyPEdyYXBoaWNzQ29udGV4dDNEPiByZXN1bHQgPSBuZXcgR3JhcGhpY3NDb250ZXh0M0QoYXR0
cnMsIGhvc3RXaW5kb3cpOwogICAgIHJlc3VsdC0+bV9pbnRlcm5hbC5zZXQoaW50ZXJuYWwpOwog
ICAgIHJldHVybiByZXN1bHQ7CiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>