<?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>77921</bug_id>
          
          <creation_ts>2012-02-06 18:09:19 -0800</creation_ts>
          <short_desc>[GTK] Add support for creating EGL contexts</short_desc>
          <delta_ts>2012-10-05 10:54:46 -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>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</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>
          <dependson>81285</dependson>
          <blocked>59064</blocked>
    
    <blocked>81456</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="ChangSeok Oh">kevin.cs.oh</reporter>
          <assigned_to name="José Dapena Paz">jdapena</assigned_to>
          <cc>dbates</cc>
    
    <cc>dino</cc>
    
    <cc>eric</cc>
    
    <cc>jdapena</cc>
    
    <cc>marc.ordinasillopis</cc>
    
    <cc>mrobinson</cc>
    
    <cc>noam</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>550499</commentid>
    <comment_count>0</comment_count>
    <who name="ChangSeok Oh">kevin.cs.oh</who>
    <bug_when>2012-02-06 18:09:19 -0800</bug_when>
    <thetext>This bug is for adding a new configuration option to choose an opengl backend.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>551083</commentid>
    <comment_count>1</comment_count>
      <attachid>125867</attachid>
    <who name="ChangSeok Oh">kevin.cs.oh</who>
    <bug_when>2012-02-07 10:06:05 -0800</bug_when>
    <thetext>Created attachment 125867
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552557</commentid>
    <comment_count>2</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-02-08 15:37:53 -0800</bug_when>
    <thetext>You&apos;ll likely want to CC some relevant reviewers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552564</commentid>
    <comment_count>3</comment_count>
      <attachid>125867</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-02-08 15:42:52 -0800</bug_when>
    <thetext>Comment on attachment 125867
Patch

I&apos;ll be removing GraphicsContext3DPrivate soon, hopefully within the next few days. Is it possible for you to hold off on this empty implementation until then?

Another issue is that EGL / OpenGL ES are not synonymous. While it is unlikely, I do believe it is possible to use vanilla desktop OpenGL with EGL. Quite likely the right approach here is to make the EGL and GLX context creation code co-exist at runtime. This happens in Cairo as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553211</commentid>
    <comment_count>4</comment_count>
    <who name="ChangSeok Oh">kevin.cs.oh</who>
    <bug_when>2012-02-09 09:02:42 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 125867 [details])
&gt; I&apos;ll be removing GraphicsContext3DPrivate soon, hopefully within the next few days. Is it possible for you to hold off on this empty implementation until then?
Sure. I&apos;ll hold my patches to support EGL/GLES backend for WebGL off until refactoring GraphicsContext3DPrivate. :) My small hope is, please CC me when you open a new bug to deal with it.

&gt; Another issue is that EGL / OpenGL ES are not synonymous. While it is unlikely, I do believe it is possible to use vanilla desktop OpenGL with EGL. Quite likely the right approach here is to make the EGL and GLX context creation code co-exist at runtime. This happens in Cairo as well.
You&apos;re right. The desktop OpenGL can run with EGL. It seems like this patch is needed to update more  carefully. Let me do it after your refactoring. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579903</commentid>
    <comment_count>5</comment_count>
      <attachid>132149</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-03-15 16:54:56 -0700</bug_when>
    <thetext>Created attachment 132149
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600110</commentid>
    <comment_count>6</comment_count>
    <who name="ChangSeok Oh">kevin.cs.oh</who>
    <bug_when>2012-04-11 00:51:49 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Created an attachment (id=132149) [details]
&gt; Patch

I think this is a great patch!
This is not an official review. Please just refer below comments, Martin. :)

&gt; Source/WebCore/platform/graphics/cairo/egl/GLContextEGL.cpp:40
&gt; +            gSharedDisplay = 0;

Nit, We might be able to use EGL_NO_DISPLAY here instead of 0, but I don&apos;t mind. :)

&gt; Source/WebCore/platform/graphics/cairo/egl/GLContextEGL.cpp:60
&gt; +    EGLint attributeList[] = {
&gt; +        EGL_RED_SIZE, 8,
&gt; +        EGL_GREEN_SIZE, 8,
&gt; +        EGL_BLUE_SIZE, 8,
&gt; +        EGL_STENCIL_SIZE, 8,
&gt; +        EGL_ALPHA_SIZE, 8,
&gt; +        EGL_NONE, EGL_NONE,
&gt; +        EGL_NONE
&gt; +    };

Don&apos;t we need to define EGL_RENDERABLE_TYPE here? Or is it set at another place? I&apos;m not sure that it works though we don&apos;t set it for at least one among EGL_OPENGL_ES_BIT, EGL_OPENVG_BIT, EGL_OPENGL_ES2_BIT and EGL_OPENGL_BIT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600408</commentid>
    <comment_count>7</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-04-11 10:48:53 -0700</bug_when>
    <thetext>(In reply to comment #6)

&gt; &gt; Source/WebCore/platform/graphics/cairo/egl/GLContextEGL.cpp:40
&gt; &gt; +            gSharedDisplay = 0;
&gt; 
&gt; Nit, We might be able to use EGL_NO_DISPLAY here instead of 0, but I don&apos;t mind. :)

Makes sense.

&gt; &gt; Source/WebCore/platform/graphics/cairo/egl/GLContextEGL.cpp:60
&gt; &gt; +    EGLint attributeList[] = {
&gt; &gt; +        EGL_RED_SIZE, 8,
&gt; &gt; +        EGL_GREEN_SIZE, 8,
&gt; &gt; +        EGL_BLUE_SIZE, 8,
&gt; &gt; +        EGL_STENCIL_SIZE, 8,
&gt; &gt; +        EGL_ALPHA_SIZE, 8,
&gt; &gt; +        EGL_NONE, EGL_NONE,
&gt; &gt; +        EGL_NONE
&gt; &gt; +    };
&gt; 
&gt; Don&apos;t we need to define EGL_RENDERABLE_TYPE here? Or is it set at another place? I&apos;m not sure that it works though we don&apos;t set it for at least one among EGL_OPENGL_ES_BIT, EGL_OPENVG_BIT, EGL_OPENGL_ES2_BIT and EGL_OPENGL_BIT.

The default value is EGL_OPENGL_ES_BIT. For now I guess we should assume that EGL targets OpenGLES2. Later we should devise a way to figure out what the best target is though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600413</commentid>
    <comment_count>8</comment_count>
      <attachid>136701</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-04-11 10:49:37 -0700</bug_when>
    <thetext>Created attachment 136701
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>607267</commentid>
    <comment_count>9</comment_count>
      <attachid>136701</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2012-04-21 13:28:21 -0700</bug_when>
    <thetext>Comment on attachment 136701
Patch

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

&gt; Source/WebCore/platform/graphics/cairo/egl/GLContextEGL.cpp:51
&gt; +{

We should add ASSERT(!sharedDisplay()) here and/or strengthen the return value handling of eglChooseConfig() below.

&gt; Source/WebCore/platform/graphics/cairo/egl/GLContextEGL.cpp:53
&gt; +    // TODO: We assume that we&apos;re creating an OpenGLES2 context for now,
&gt; +    // but later it would be better to do something smarter here.

Nit: This should be a FIXME comment per the WebKit Code Style Guidelines, &lt;http://www.webkit.org/coding/coding-style.html#comments-fixme&gt;.

&gt; Source/WebCore/platform/graphics/cairo/egl/GLContextEGL.cpp:71
&gt; +    EGLint numberConfigsReturned;
&gt; +    return eglChooseConfig(sharedDisplay(), attributeList, config, 1, &amp;numberConfigsReturned) &amp;&amp; numberConfigsReturned;

How does this code work when eglChooseConfig() returns an error code?

&gt; Source/WebCore/platform/graphics/cairo/egl/GLContextEGL.cpp:134
&gt; +    static bool initialized = false;
&gt; +    static bool success = true;
&gt; +    if (!initialized) {
&gt; +        success = initializeOpenGLShims();
&gt; +        initialized = true;
&gt; +    }
&gt; +    if (!success)
&gt; +        return 0;

I would write this as:

static bool didInitializeOpenGLShims = initializeOpenGLShims();
if (!didInitializeOpenGLShims)
    return 0;

&gt; Source/WebCore/platform/graphics/cairo/egl/GLContextEGL.cpp:174
&gt; +    if (eglGetCurrentContext() == m_context)
&gt; +        return true;
&gt; +    return eglMakeCurrent(sharedDisplay(), m_surface, m_surface, m_context);

I would write this as:

return eglGetCurrentContext() == m_context || eglMakeCurrent(sharedDisplay(), m_surface, m_surface, m_context);

&gt; Source/WebCore/platform/graphics/gtk/GLContextGtk.cpp:69
&gt; +        context =  GLContextEGL::createContext(GDK_WINDOW_XID(gdkWindow));

Nit: There are two spaces to the right of the equal sign (=).

&gt; Source/WebCore/platform/graphics/gtk/GLContextGtk.cpp:74
&gt; +            context =  GLContextGLX::createContext(GDK_WINDOW_XID(gdkWindow));

Nit: There are two spaces to the right of the equal sign (=).

Do you expect most people to build with EGL and GLX enabled by default? If so, how often do you expect GLContextEGL::createContext() to return 0. Should we cache GDK_WINDOW_XID(gdkWindow) in a local variable? Notice, GDK_WINDOW_XID deferences a pointer twice, &lt;http://developer.gnome.org/gdk/stable/gdk-X-Window-System-Interaction.html#GDK-WINDOW-XID:CAPS&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710912</commentid>
    <comment_count>10</comment_count>
      <attachid>161993</attachid>
    <who name="José Dapena Paz">jdapena</who>
    <bug_when>2012-09-04 02:25:44 -0700</bug_when>
    <thetext>Created attachment 161993
Patch

New approach for EGL support, limiting the patch to only X11 support, so that we don&apos;t have to mix in the same patch all the effort for other windowing systems.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716280</commentid>
    <comment_count>11</comment_count>
      <attachid>161993</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-09-10 11:03:22 -0700</bug_when>
    <thetext>Comment on attachment 161993
Patch

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

Looking good! Thanks for writing this patch. I have a few suggestions for cleaning things up. I think it&apos;s also important that we think carefully about allowing GLX+EGL to be both active at compile-time. In a followup patch we should also allow the same for GLES and Desktop GL.

&gt; Source/WebCore/platform/graphics/cairo/GLContext.cpp:56
&gt; +// We do not want to call glXMakeContextCurrent using different Display pointers,
&gt; +// because it might lead to crashes in some drivers (fglrx). We use a shared display
&gt; +// pointer here.
&gt; +static Display* gSharedDisplay = 0;
&gt; +Display* GLContext::sharedDisplay()
&gt; +{
&gt; +    if (!gSharedDisplay)
&gt; +        gSharedDisplay = XOpenDisplay(0);
&gt; +    return gSharedDisplay;
&gt; +}
&gt; +
&gt; +void GLContext::cleanupSharedDisplay()
&gt; +{
&gt; +    if (!gSharedDisplay)
&gt; +        return;
&gt; +    XCloseDisplay(gSharedDisplay);
&gt; +    gSharedDisplay = 0;
&gt; +}
&gt; +

Perhaps you should hide this behind #if (USE_GLX || USE_EGL). There are types of OpenGL that do not use X11 like WGL and AGL.

&gt; Source/WebCore/platform/graphics/cairo/GLContext.cpp:83
&gt; +    context = GLContextEGL::createContext(0, sharingContext);
&gt; +    if (context)
&gt; +        return context.release();

Instead of defining the context at the top-level you may be able to do:

if (OwnPtr&lt;GLContext&gt; context = GLContextEGL::createContext(0, sharingContext))
    return context.release()

and reduce the number of lines in this function.

&gt; Source/WebCore/platform/graphics/cairo/GLContext.h:28
&gt; +typedef struct _XDisplay Display;

This should probably be behind  #if GLX || EGL, again

&gt; Source/WebCore/platform/graphics/cairo/GLContext.h:48
&gt; +    static Display *sharedDisplay(void);

The asterisk should go with the type name in WebKit and you don&apos;t need to include the void argument list in C++.

&gt; Source/WebCore/platform/graphics/cairo/GraphicsContext3DCairo.cpp:39
&gt; +#if USE(OPENGL_ES_2)
&gt; +#include &quot;Extensions3DOpenGLES.h&quot;
&gt; +#include &quot;OpenGLESShims.h&quot;
&gt; +#else
&gt;  #include &quot;Extensions3DOpenGL.h&quot;
&gt; +#include &quot;OpenGLShims.h&quot;
&gt; +#endif

These conditional sections should go after the non-conditional ones. Can we avoid the use of OpenGLESShims.h here?

&gt; Source/WebCore/platform/graphics/cairo/GraphicsContext3DCairo.cpp:171
&gt; +#if !USE(OPENGL_ES_2)
&gt;  void GraphicsContext3D::releaseShaderCompiler()
&gt;  {
&gt;      notImplemented();
&gt;  }
&gt; +#endif

This is defined for both OPENGL_ES_2 and Desktop GL and has an empty implementation. Why hide it behind an #ifdef?

&gt; Source/WebCore/platform/graphics/cairo/GraphicsContext3DPrivate.cpp:134
&gt; -        glBindFramebuffer(GraphicsContext3D::FRAMEBUFFER, m_context-&gt;m_boundFBO);
&gt; +        ::glBindFramebufferEXT(GraphicsContext3D::FRAMEBUFFER, m_context-&gt;m_boundFBO);

This seems like the wrong direction. In OpenGLESShims.h glBindFramebufferEXT is just defined to glBindFramebuffer, so why not just not use glBindFramebuffer in this file?

&gt; Source/WebCore/platform/graphics/egl/GLContextEGL.cpp:43
&gt; +#if USE(OPENGL_ES_2)
&gt; +static const EGLenum gGLApi = EGL_OPENGL_ES_API;
&gt; +#else
&gt; +static const EGLenum gGLApi = EGL_OPENGL_API;
&gt; +#endif

Ideally we&apos;d decide at runtime what type of API is accelerated, but we can tackle that later.

&gt; Source/WebCore/platform/graphics/egl/GLContextEGL.cpp:53
&gt; +        if (gSharedEGLDisplay != EGL_NO_DISPLAY
&gt; +            &amp;&amp; (!eglInitialize(gSharedEGLDisplay, 0, 0)
&gt; +                || !eglBindAPI(gGLApi)))

This can be one line. Lines in WebKit go to 120 characters and beyond.

&gt; Source/WebCore/platform/graphics/egl/GLContextEGL.cpp:68
&gt; +static const EGLint contextAttributes[] = {

gContextAttributes?

&gt; Source/WebCore/platform/graphics/egl/GLContextEGL.cpp:96
&gt; +// Because of driver bugs, exiting the program when there are active pbuffers
&gt; +// can crash the X server (this has been observed with the official Nvidia drivers).
&gt; +// We need to ensure that we clean everything up on exit. There are several reasons
&gt; +// that GraphicsContext3Ds will still be alive at exit, including user error (memory
&gt; +// leaks) and the page cache. In any case, we don&apos;t want the X server to crash.
&gt; +typedef Vector&lt;GLContext*&gt; ActiveContextList;
&gt; +static ActiveContextList&amp; activeContextList()
&gt; +{
&gt; +    DEFINE_STATIC_LOCAL(ActiveContextList, activeContexts, ());
&gt; +    return activeContexts;
&gt; +}
&gt; +
&gt; +void GLContextEGL::addActiveContext(GLContextEGL* context)
&gt; +{
&gt; +    static bool addedAtExitHandler = false;
&gt; +    if (!addedAtExitHandler) {
&gt; +        atexit(&amp;GLContextEGL::cleanupActiveContextsAtExit);
&gt; +        addedAtExitHandler = true;
&gt; +    }
&gt; +    activeContextList().append(context);
&gt; +}
&gt; +

The Nvidia driver doesn&apos;t support EGL at the moment, so maybe we can remove this work-around?

&gt; Source/WebCore/platform/graphics/egl/GLContextEGL.cpp:120
&gt; +    cleanupSharedDisplay();

I think it makes sense for GLContext to install the atexit handler to cleanup the display, since it creates it.

&gt; Source/WebCore/platform/graphics/egl/GLContextEGL.cpp:155
&gt; +PassOwnPtr&lt;GLContextEGL&gt; GLContextEGL::createWindowContext(EGLNativeWindowType wId, GLContext* sharingContext)

windowId instead of wId. WebKit doesn&apos;t abbreviate variables unless the abbreviation is very common.

&gt; Source/WebCore/platform/graphics/opengl/GraphicsContext3DOpenGLES.cpp:143
&gt; +            ::glBindRenderbufferEXT(GraphicsContext3D::RENDERBUFFER, m_depthStencilBuffer);
&gt; +            ::glRenderbufferStorageEXT(GraphicsContext3D::RENDERBUFFER, GraphicsContext3D::DEPTH24_STENCIL8, width, height);

I think that you should avoid the use of EXT in this file. It&apos;s used in the GraphicsContext3DOpenGLCommon because not all platforms use OpenGLShims. Since we don&apos;t have to use it here, we shouldn&apos;t though.

&gt; Source/WebCore/platform/graphics/opengl/GraphicsContext3DOpenGLES.cpp:145
&gt; -                ::glFramebufferTexture2D(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, GL_TEXTURE_2D, m_depthStencilBuffer, 0);
&gt; +                ::glFramebufferRenderbufferEXT(GraphicsContext3D::FRAMEBUFFER, GraphicsContext3D::STENCIL_ATTACHMENT, GraphicsContext3D::RENDERBUFFER, m_depthStencilBuffer);

What&apos;s the purpose of using the GraphicsContext3D version of the GL_FRAMEBUFFER and GL_STENCIL_ATTACHMENT constants here?

&gt; Source/WebCore/platform/graphics/opengl/GraphicsContext3DOpenGLES.cpp:149
&gt; -                ::glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, m_depthStencilBuffer, 0);
&gt; -            ::glBindTexture(GL_TEXTURE_2D, 0);
&gt; +                ::glFramebufferRenderbufferEXT(GraphicsContext3D::FRAMEBUFFER, GraphicsContext3D::DEPTH_ATTACHMENT, GraphicsContext3D::RENDERBUFFER, m_depthStencilBuffer);
&gt; +            ::glBindRenderbufferEXT(GraphicsContext3D::RENDERBUFFER, 0);
&gt;          } else {

See above.

&gt; Source/WebCore/platform/graphics/qt/GraphicsContext3DQt.cpp:29
&gt;  #include &quot;Extensions3DOpenGL.h&quot;
&gt; +#include &quot;OpenGLShims.h&quot;
&gt;  #endif
&gt;  #include &quot;GraphicsContext.h&quot;
&gt;  #include &quot;GraphicsSurface.h&quot;

Were these changes accidental?

&gt; Source/WebCore/platform/graphics/texmap/TextureMapper.h:34
&gt; +#if PLATFORM(GTK)
&gt; +#if USE(OPENGL_ES_2) &amp;&amp; !defined(TEXMAP_OPENGL_ES_2)
&gt; +#define TEXMAP_OPENGL_ES_2
&gt; +#endif

Why not just do:

#if PLATFORM(GTK) &amp;&amp; USE(OPENGL_ES_2)
#define TEXMAP_OPENGL_ES_2
#endif

&gt; Source/WebCore/platform/gtk/RedirectedXCompositeWindow.cpp:31
&gt; +#include &quot;GLContextEGL.h&quot;
&gt;  #include &quot;GLContextGLX.h&quot;

I guess we can remove both of these now.

&gt; configure.ac:558
&gt; +              AC_HELP_STRING([--enable-gles2], [enable support for OpenGL/ES2 [default=auto]]),

Nit: It&apos;s actually just called &quot;OpenGL ES 2&quot; I think instead of &quot;OpenGL/ES2&quot;.

&gt; configure.ac:573
&gt; -if test &quot;$with_target&quot; = &quot;x11&quot;; then
&gt; +if test &quot;$enable_egl&quot; = &quot;yes&quot;; then
&gt; +    if test &quot;$enable_gles2&quot; = &quot;yes&quot;; then
&gt; +       AC_CHECK_HEADERS([GLES2/gl2.h], [found_opengl=&quot;yes&quot;], [])
&gt; +    else
&gt; +       AC_CHECK_HEADERS([GL/gl.h], [found_opengl=&quot;yes&quot;], [])
&gt; +    fi
&gt; +    AC_CHECK_HEADERS([EGL/egl.h], [], [found_opengl=&quot;no&quot;])
&gt; +elif test &quot;$with_target&quot; = &quot;x11&quot;; then
&gt;      AC_CHECK_HEADERS([GL/gl.h], [found_opengl=&quot;yes&quot;], [])
&gt; -    AC_CHECK_HEADERS([GL/glx.h], [], [found_opengl=&quot;no&quot;])
&gt; +    AC_CHECK_HEADERS([GL/glx.h], [enable_glx=&quot;yes&quot;], [found_opengl=&quot;no&quot;])
&gt;  fi

Maybe what we can do to simplify this is to do this:

1. Enable GLX if we find the headers.
2. Enable EGL if we find the headers.
3. Remove the configuration option for both of them.
4. Pick the appropriate rendering type:
   a. If the CPU is not ARM --&gt; Look for the GL headers and fall back to the GLES headers to choose the rendering type.
   b. If the CPU is ARM --&gt; Look for the GLES headers and fall back to the GL headers to choose the rendering type.
5. Now if you&apos;ve found (egl || glx) &amp;&amp; ((opengl &amp;&amp; glx) || egl) then turn on OpenGL by default (--with-acceleration-backend defaults to opengl)
6. If --with-acceleration-backend is passed the opengl option and the above conditional is false, give an error about what headers are missing.

It&apos;s important that we support both EGL and GLX turned on at compile-time now. We can worry about GLES and Desktop GL turned on at compile time in a followup patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717376</commentid>
    <comment_count>12</comment_count>
    <who name="José Dapena Paz">jdapena</who>
    <bug_when>2012-09-11 10:51:39 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 161993 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=161993&amp;action=review
&gt; 
&gt; Looking good! Thanks for writing this patch. I have a few suggestions for cleaning things up. I think it&apos;s also important that we think carefully about allowing GLX+EGL to be both active at compile-time. In a followup patch we should also allow the same for GLES and Desktop GL.

It shouldn&apos;t be hard to change the implementation to allow GLX and EGL. About GLES and Desktop GL, it&apos;s a bit more complicated, as many configurations still happen in compile time. But not impossible.

For this first set of patches I&apos;m focusing only on TARGET_X11 (the only one we support now). In other tasks, I would extend the behavior for Wayland, and this will imply adding proper checks to avoid X11 dependency as needed.

&gt; Perhaps you should hide this behind #if (USE_GLX || USE_EGL). There are types of OpenGL that do not use X11 like WGL and AGL.

As I told just in previous paragraph, I think it&apos;s better to keep the patch simpler and only add support for X11 target now. Later, in a different task, I&apos;ll add the cases for wayland, and that already implies refactoring code and moving X specific code to better places.

&gt; &gt; Source/WebCore/platform/graphics/cairo/GraphicsContext3DCairo.cpp:39
&gt; &gt; +#if USE(OPENGL_ES_2)
&gt; &gt; +#include &quot;Extensions3DOpenGLES.h&quot;
&gt; &gt; +#include &quot;OpenGLESShims.h&quot;
&gt; &gt; +#else
&gt; &gt;  #include &quot;Extensions3DOpenGL.h&quot;
&gt; &gt; +#include &quot;OpenGLShims.h&quot;
&gt; &gt; +#endif
&gt; 
&gt; These conditional sections should go after the non-conditional ones. Can we avoid the use of OpenGLESShims.h here?

As it is now, no. There are calls like glGenFramebufferEXT, that should be mapped to the proper glGenFramebuffer. But in theory the OpenGLShims are exactly to map as much as possible GL API to GLES (the one expected in ANGLE). So I&apos;ll move the methods to use GLES API.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/cairo/GraphicsContext3DCairo.cpp:171
&gt; &gt; +#if !USE(OPENGL_ES_2)
&gt; &gt;  void GraphicsContext3D::releaseShaderCompiler()
&gt; &gt;  {
&gt; &gt;      notImplemented();
&gt; &gt;  }
&gt; &gt; +#endif
&gt; 
&gt; This is defined for both OPENGL_ES_2 and Desktop GL and has an empty implementation. Why hide it behind an #ifdef?

Because it is implemented in GraphicsContext3DOpenGLES.cpp. If I don&apos;t hide it, there will be 2 definitions: the one in *Cairo.cpp and the one in *OpenGLES.cpp.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/cairo/GraphicsContext3DPrivate.cpp:134
&gt; &gt; -        glBindFramebuffer(GraphicsContext3D::FRAMEBUFFER, m_context-&gt;m_boundFBO);
&gt; &gt; +        ::glBindFramebufferEXT(GraphicsContext3D::FRAMEBUFFER, m_context-&gt;m_boundFBO);
&gt; 
&gt; This seems like the wrong direction. In OpenGLESShims.h glBindFramebufferEXT is just defined to glBindFramebuffer, so why not just not use glBindFramebuffer in this file?

Sure. I&apos;ll fix it.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/egl/GLContextEGL.cpp:43
&gt; &gt; +#if USE(OPENGL_ES_2)
&gt; &gt; +static const EGLenum gGLApi = EGL_OPENGL_ES_API;
&gt; &gt; +#else
&gt; &gt; +static const EGLenum gGLApi = EGL_OPENGL_API;
&gt; &gt; +#endif
&gt; 
&gt; Ideally we&apos;d decide at runtime what type of API is accelerated, but we can tackle that later.

Yes, guess we can create a new bug for allowing GL/GLES2 API usage on runtime. It implies changes in many places, so it is better that we separate that task.


&gt; &gt; Source/WebCore/platform/graphics/egl/GLContextEGL.cpp:96
&gt; &gt; +// Because of driver bugs, exiting the program when there are active pbuffers
&gt; &gt; +// can crash the X server (this has been observed with the official Nvidia drivers).
&gt; &gt; +// We need to ensure that we clean everything up on exit. There are several reasons
&gt; &gt; +// that GraphicsContext3Ds will still be alive at exit, including user error (memory
&gt; &gt; +// leaks) and the page cache. In any case, we don&apos;t want the X server to crash.
&gt; &gt; ...
&gt; 
&gt; The Nvidia driver doesn&apos;t support EGL at the moment, so maybe we can remove this work-around?

I&apos;ll try to check it doesn&apos;t break anything different.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/egl/GLContextEGL.cpp:120
&gt; &gt; +    cleanupSharedDisplay();
&gt; 
&gt; I think it makes sense for GLContext to install the atexit handler to cleanup the display, since it creates it.

Sure. I can refactor the context counting too, as it&apos;s present in both drivers. In case we drop the context counting for EGL (only needed for nvidia), then we could have independent atexit handlers in GLContext and GLContextGLX. With current structure, I guess we would end cleaning shared display 2 times (one for EGL and one for GLX, in case we allow to choose the context in runtime.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/egl/GLContextEGL.cpp:155
&gt; &gt; +PassOwnPtr&lt;GLContextEGL&gt; GLContextEGL::createWindowContext(EGLNativeWindowType wId, GLContext* sharingContext)
&gt; 
&gt; windowId instead of wId. WebKit doesn&apos;t abbreviate variables unless the abbreviation is very common.

In fact it&apos;s even worse. It shouldn&apos;t be a windowId, but a window, with the internal type expected as EGLNativeWindowType (which happens to be a Window in X11, or a wl_egl_window* in Wayland).

&gt; &gt; Source/WebCore/platform/graphics/opengl/GraphicsContext3DOpenGLES.cpp:143
&gt; &gt; +            ::glBindRenderbufferEXT(GraphicsContext3D::RENDERBUFFER, m_depthStencilBuffer);
&gt; &gt; +            ::glRenderbufferStorageEXT(GraphicsContext3D::RENDERBUFFER, GraphicsContext3D::DEPTH24_STENCIL8, width, height);
&gt; 

&gt; Maybe what we can do to simplify this is to do this:
&gt; 
&gt; 1. Enable GLX if we find the headers.
&gt; 2. Enable EGL if we find the headers.
&gt; 3. Remove the configuration option for both of them.
&gt; 4. Pick the appropriate rendering type:
&gt;    a. If the CPU is not ARM --&gt; Look for the GL headers and fall back to the GLES headers to choose the rendering type.
&gt;    b. If the CPU is ARM --&gt; Look for the GLES headers and fall back to the GL headers to choose the rendering type.
&gt; 5. Now if you&apos;ve found (egl || glx) &amp;&amp; ((opengl &amp;&amp; glx) || egl) then turn on OpenGL by default (--with-acceleration-backend defaults to opengl)
&gt; 6. If --with-acceleration-backend is passed the opengl option and the above conditional is false, give an error about what headers are missing.

I would keep the configuration options. It allows to test the different backends (i.e. I&apos;m running on X desktop, but I may want just to check egl+gles2 or even egl+desktop gl, even when the recommended setup is glx). But I&apos;ll set the defaults this way:
* Allow GLX and EGL both turned on. Having GLX at least will imply Desktop GL in this case. No GLES2 allowed (GLX only supports Desktop GL API).
* In case only EGL is enabled, give priority to gles2. If available use gles2, if not use desktop gl.
* Explicitely enabling glx and gles2, or enabling gles2 and disabling egl will show an error.
* I think we shouldn&apos;t use architecture for choosing GL or GLES2 or EGL or GLX. Now we can enable both GLX and EGL, so if detected, then it can build with both. It&apos;ll prefer GLX in this case. About GLES2 or GL, for GLX it&apos;ll choose GL. For EGL and not GLX, it&apos;ll prefer GLES2 (if found).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717440</commentid>
    <comment_count>13</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-09-11 11:44:01 -0700</bug_when>
    <thetext>(In reply to comment #12)

&gt; &gt; Perhaps you should hide this behind #if (USE_GLX || USE_EGL). There are types of OpenGL that do not use X11 like WGL and AGL.
&gt; 
&gt; As I told just in previous paragraph, I think it&apos;s better to keep the patch simpler and only add support for X11 target now. Later, in a different task, I&apos;ll add the cases for wayland, and that already implies refactoring code and moving X specific code to better places.

I&apos;m not talking about Wayland here, I&apos;m talking about the Mac and Windows builds.  GLContext doesn&apos;t run there, but we shouldn&apos;t break it more if we can help it. Eventually one of these ports may want to use this code.

&gt; As it is now, no. There are calls like glGenFramebufferEXT, that should be mapped to the proper glGenFramebuffer. But in theory the OpenGLShims are exactly to map as much as possible GL API to GLES (the one expected in ANGLE). So I&apos;ll move the methods to use GLES API.

Calls to glGenFramebufferEXT should be changed to glGenFramebuffer, except in files that do not use OpenGLShims.h for all ports. Practically this means that for files in the Cairo and GTK+ directories, you should use the EXT or ARB suffixes.

&gt; &gt; &gt; Source/WebCore/platform/graphics/cairo/GraphicsContext3DCairo.cpp:171
&gt; &gt; &gt; +#if !USE(OPENGL_ES_2)
&gt; &gt; &gt;  void GraphicsContext3D::releaseShaderCompiler()
&gt; &gt; &gt;  {
&gt; &gt; &gt;      notImplemented();
&gt; &gt; &gt;  }
&gt; &gt; &gt; +#endif
&gt; &gt; 
&gt; &gt; This is defined for both OPENGL_ES_2 and Desktop GL and has an empty implementation. Why hide it behind an #ifdef?
&gt; 
&gt; Because it is implemented in GraphicsContext3DOpenGLES.cpp. If I don&apos;t hide it, there will be 2 definitions: the one in *Cairo.cpp and the one in *OpenGLES.cpp.

Perhaps this can simply be moved to GraphicsContext3DOpenGLcpp then? Do any ports have an implementation here?

&gt; I would keep the configuration options. It allows to test the different backends (i.e. I&apos;m running on X desktop, but I may want just to check egl+gles2 or even egl+desktop gl, even when the recommended setup is glx). But I&apos;ll set the defaults this way:
&gt; * Allow GLX and EGL both turned on. Having GLX at least will imply Desktop GL in this case. No GLES2 allowed (GLX only supports Desktop GL API).
&gt; * In case only EGL is enabled, give priority to gles2. If available use gles2, if not use desktop gl.
&gt; * Explicitely enabling glx and gles2, or enabling gles2 and disabling egl will show an error.
&gt; * I think we shouldn&apos;t use architecture for choosing GL or GLES2 or EGL or GLX. Now we can enable both GLX and EGL, so if detected, then it can build with both. It&apos;ll prefer GLX in this case. About GLES2 or GL, for GLX it&apos;ll choose GL. For EGL and not GLX, it&apos;ll prefer GLES2 (if found).

This seems reasonable for now. Time will probably tell what configuration defaults are the best.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727471</commentid>
    <comment_count>14</comment_count>
      <attachid>165571</attachid>
    <who name="José Dapena Paz">jdapena</who>
    <bug_when>2012-09-25 03:38:40 -0700</bug_when>
    <thetext>Created attachment 165571
Patch

New iteration of patch following Martin proposed changes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727476</commentid>
    <comment_count>15</comment_count>
      <attachid>165571</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-09-25 03:44:16 -0700</bug_when>
    <thetext>Comment on attachment 165571
Patch

Attachment 165571 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/14002706</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727478</commentid>
    <comment_count>16</comment_count>
      <attachid>165571</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-09-25 03:46:50 -0700</bug_when>
    <thetext>Comment on attachment 165571
Patch

Attachment 165571 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/14033001</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727481</commentid>
    <comment_count>17</comment_count>
      <attachid>165571</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-09-25 03:48:16 -0700</bug_when>
    <thetext>Comment on attachment 165571
Patch

Attachment 165571 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/13962039</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727574</commentid>
    <comment_count>18</comment_count>
      <attachid>165600</attachid>
    <who name="José Dapena Paz">jdapena</who>
    <bug_when>2012-09-25 06:23:19 -0700</bug_when>
    <thetext>Created attachment 165600
Patch

Fix qt and mac builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734716</commentid>
    <comment_count>19</comment_count>
      <attachid>165600</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-10-04 08:33:57 -0700</bug_when>
    <thetext>Comment on attachment 165600
Patch

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

Looks good! Just a few minor thing. I&apos;m incredibly sorry that it took me so long to review this patch. :(

&gt; Source/WebCore/platform/graphics/cairo/GraphicsContext3DPrivate.cpp:33
&gt; +#if USE(OPENGL_ES_2)
&gt; +#include &quot;OpenGLESShims.h&quot;
&gt; +#include &lt;GLES2/gl2.h&gt;
&gt; +#include &lt;GLES2/gl2ext.h&gt;
&gt; +#else
&gt;  #include &quot;OpenGLShims.h&quot;
&gt; +#endif

These blocks of includes should be after the main blocks like this:

#include &quot;HostWindow.h&quot;
#include &quot;NotImplemented.h&quot;
include &quot;PlatformContextCairo.h&quot;
#include &lt;wtf/OwnArrayPtr.h&gt;

#if USE(OPENGL_ES_2)
#include &quot;OpenGLESShims.h&quot;
#include &lt;GLES2/gl2.h&gt;
#include &lt;GLES2/gl2ext.h&gt;
#else
#include &quot;OpenGLShims.h&quot;
#endif

&gt; Source/WebCore/platform/graphics/egl/GLContextEGL.cpp:39
&gt; +static const EGLenum gGLApi = EGL_OPENGL_ES_API;

Nit: This should be called gGLAPI

&gt; Source/WebCore/platform/graphics/egl/GLContextEGL.cpp:82
&gt; +void GLContextEGL::addActiveContext(GLContextEGL* context)
&gt; +{
&gt; +    static bool addedAtExitHandler = false;
&gt; +    if (!addedAtExitHandler) {
&gt; +        atexit(&amp;GLContextEGL::cleanupSharedEGLDisplay);
&gt; +        addedAtExitHandler = true;
&gt; +    }
&gt; +    GLContext::addActiveContext(context);
&gt; +}

I think this work-around could possibly be removed for EGL. That would make this patch quite a bit smaller. Did you find that it prevented crashes? It&apos;s probably okay to let the display leak here.

&gt; Source/WebCore/platform/graphics/egl/GLContextEGL.cpp:109
&gt; +    if (surfaceType == GLContextEGL::PbufferSurface) {
&gt; +        attributeList[10] = EGL_SURFACE_TYPE;
&gt; +        attributeList[11] = EGL_PBUFFER_BIT;
&gt; +    } else if (surfaceType == GLContextEGL::PixmapSurface) {
&gt; +        attributeList[10] = EGL_SURFACE_TYPE;
&gt; +        attributeList[11] = EGL_PIXMAP_BIT;
&gt; +    } else if (surfaceType == GLContextEGL::WindowSurface) {
&gt; +        attributeList[10] = EGL_SURFACE_TYPE;
&gt; +        attributeList[11] = EGL_WINDOW_BIT;

It looks like you could set attributeList[10] when you create attributeList above and then do a switch statement to set the actual surface type. A switch statement is important here because it will make the compiler emit a warning if you added a new EGLSurfaceType and didn&apos;t handle it, in the future.

&gt; Source/WebCore/platform/graphics/egl/GLContextEGL.cpp:242
&gt; +    removeActiveContext(this);

Assuming the patch continues to keep a list of contexts for cleaning up, why not move this call to removeActiveContext and the one for addActiveContext above to the superclass constructor and destructor?

&gt; Source/WebCore/platform/graphics/egl/GLContextEGL.cpp:277
&gt; +    if (m_surface)
&gt; +        eglSwapBuffers(sharedEGLDisplay(), m_surface);

It seems that you always have a surface, so this should be:

ASSERT(m_surface);
eglSwapBuffers(sharedEGLDisplay(), m_surface);

&gt; Source/WebCore/platform/gtk/RedirectedXCompositeWindow.cpp:53
&gt; -    Display* display = GLContextGLX::sharedDisplay();
&gt; +    Display* display = GLContext::sharedX11Display();

I think this has changed now, so you may need to rebase. Sorry. :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735614</commentid>
    <comment_count>20</comment_count>
      <attachid>167323</attachid>
    <who name="José Dapena Paz">jdapena</who>
    <bug_when>2012-10-05 06:57:33 -0700</bug_when>
    <thetext>Created attachment 167323
Patch

Patch with suggested changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735618</commentid>
    <comment_count>21</comment_count>
      <attachid>167324</attachid>
    <who name="José Dapena Paz">jdapena</who>
    <bug_when>2012-10-05 07:14:47 -0700</bug_when>
    <thetext>Created attachment 167324
Patch

Patch with suggested changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735633</commentid>
    <comment_count>22</comment_count>
      <attachid>167324</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-10-05 07:55:12 -0700</bug_when>
    <thetext>Comment on attachment 167324
Patch

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

Looks good, but a few minor nits. I&apos;ll fix them and land this patch.

&gt; Source/WebCore/platform/graphics/cairo/GraphicsContext3DCairo.cpp:49
&gt; +#include &quot;OpenGLShims.h&quot;

Maybe we can omit this since we don&apos;t need access to redefinitions of common functionality.

&gt; Source/WebCore/platform/graphics/cairo/GraphicsContext3DPrivate.cpp:135
&gt; +        ::glBindFramebufferEXT(GraphicsContext3D::FRAMEBUFFER, m_context-&gt;m_boundFBO);

Can&apos;t we go the other way here and leave glBindFramebuffer?

&gt; Source/WebCore/platform/graphics/egl/GLContextEGL.cpp:208
&gt; +    : GLContext()

The compiler should automatically call the default constructor.

&gt; Source/WebCore/platform/graphics/glx/GLContextGLX.cpp:166
&gt; +    : GLContext()

Ditto.

&gt; Source/WebCore/platform/graphics/glx/GLContextGLX.cpp:176
&gt; +    : GLContext()

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735762</commentid>
    <comment_count>23</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-10-05 10:54:46 -0700</bug_when>
    <thetext>Committed r130525: &lt;http://trac.webkit.org/changeset/130525&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125867</attachid>
            <date>2012-02-07 10:06:05 -0800</date>
            <delta_ts>2012-03-15 16:54:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77921-20120208030603.patch</filename>
            <type>text/plain</type>
            <size>12575</size>
            <attacher name="ChangSeok Oh">kevin.cs.oh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2OTU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWEzNGQ1YjE1OTc5ZWY0
YzA2NzFmMzE3NzEzNjQ5YWNmZDU2NGUyMC4uYTJkODIyM2U3MDhmNDZmNGJhZmVhYTI3NjVkNDMy
MDkxMDVmZTBiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEyLTAyLTA3ICBDaGFu
Z1Nlb2sgT2ggIDxzaGl2YW1pZG93QGdtYWlsLmNvbT4KKworICAgICAgICBbR1RLXSBBZGQgY29u
ZmlndXJhdGlvbiBvcHRpb24gdG8gc2VsZWN0IGdsIGJhY2tlbmQuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzkyMQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGJ1aWxkLWZsYWcgV1RGX1VTRV9P
UEVOR0xfRVNfMiBhbmQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcC9oCisgICAgICAgIHRv
IGNvbXBpbGUgbmV3bHkgdW5kZXIgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWds
IGZvciBvcGVuZ2xlcy4KKworICAgICAgICBObyBuZXcgdGVzdHMsIHNpbmNlIHRoZXJlIGlzIG5v
IG5ldyBmZWF0dXJlLgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogR05V
bWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR3JhcGhp
Y3NDb250ZXh0M0RQcml2YXRlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6YWRkQWN0aXZlR3JhcGhpY3ND
b250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6cmVt
b3ZlQWN0aXZlR3JhcGhpY3NDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEUHJpdmF0ZTo6Y2xlYW51cEFjdGl2ZUNvbnRleHRzQXRFeGl0KToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlUGJ1ZmZlckNvbnRleHQpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVQaXhtYXBDb250
ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6R3JhcGhp
Y3NDb250ZXh0M0RQcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
UHJpdmF0ZTo6fkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzRFByaXZhdGU6Om1ha2VDb250ZXh0Q3VycmVudCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlKToK
KwogMjAxMi0wMi0wNyAgUGV0ZXIgUnliaW4gIDxwZXRlci5yeWJpbkBnbWFpbC5jb20+CiAKICAg
ICAgICAgV2ViIEluc3BlY3RvcjogQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weTogZXh0ZW5kIEFy
cmF5IHZhbGlkYXRvciBmdW5jdGlvbmFsaXR5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9H
TlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IGZlNWNj
Yjk0ZmRhNWE4Y2QyMTM1Y2Q5NzU0MGYxZjQ3ZWQxM2U3MTkuLmVhNjdjOGYyMjYyYTU3MWRlOTlh
ZTM1YzdjNzQ3MjY2NDM5MjAzMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0xNDEsNiArMTQx
LDEzIEBAIHdlYmNvcmVndGtfY3BwZmxhZ3MgKz0gXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3BhbmdvCiBlbmRpZiAjIEVORCBVU0VfUEFOR08KIAorIyAt
LS0KKyMgT3BlbkdMIGJhY2tlbmQKKyMgLS0tCitpZiBVU0VfT1BFTkdMX0VTXzIKK3dlYmNvcmVn
dGtfY3BwZmxhZ3MgKz0gLURXVEZfVVNFX09QRU5HTF9FU18yPTEKK2VuZGlmCisKICMgLS0tLQog
IyBIVE1MIERldGFpbHMgRWxlbWVudAogIyAtLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5h
bQppbmRleCBkZmU0OTMxMWFiNmI0NDYzODkyOGUxMzdhYzg3YTE1YWQ3MDc0OWE1Li5iZGU3YWNl
MDA4NmJiNGU3N2I3ZDJjMzA0NzMyODU0YmY1MjE1MTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0KQEAgLTU2NjQsOCArNTY2NCw2IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RDYWly
by5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL09wZW5HTFNo
aW1zLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vT3BlbkdM
U2hpbXMuaCBcCi0JU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dyYXBoaWNz
Q29udGV4dDNEUHJpdmF0ZS5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dseC9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L0RyYXdpbmdCdWZmZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvRHJhd2luZ0J1ZmZlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5jcHAgXApAQCAtNTY3NCwxMSArNTY3Miwy
NSBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2d0ay9HcmFwaGljc0NvbnRleHQzREd0ay5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVuR0wuY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uczNET3BlbkdMLmggXAotCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9w
ZW5HTC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAKIGVuZGlmICAjIEVORCBFTkFCTEVfV0VCR0wK
IAogIyAtLS0KKyMgT3BlbkdMIGJhY2tlbmQKKyMgLS0tCitpZiBVU0VfT1BFTkdMX0VTXzIKK3dl
YmNvcmVfc291cmNlcyArPSBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWds
L0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2VnbC9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaCBcCisJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMRVMuY3Bw
CitlbHNlCit3ZWJjb3JlX3NvdXJjZXMgKz0gXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dseC9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuY3BwIFwKKwlTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nbHgvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmggXAorCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9w
ZW5HTC5jcHAKK2VuZGlmCisKKyMgLS0tCiAjIE1IVE1MIHN1cHBvcnQKICMgLS0tCiBpZiBFTkFC
TEVfTUhUTUwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Vn
bC9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZWdsL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTYy
NjFjNzI0MGFiZjY5ZGRhNDU1ODg1M2E2OWMzNTFhOThmMDc1MwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HcmFwaGljc0NvbnRleHQzRFBy
aXZhdGUuY3BwCkBAIC0wLDAgKzEsMTAwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIENo
YW5nU2VvayBPaCA8c2hpdmFtaWRvd0BnbWFpbC5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICog
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAq
IExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICog
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs
IFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0
ZSB0byB0aGUgRnJlZQorICogU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRFByaXZh
dGUuaCIKKworI2lmIEVOQUJMRShXRUJHTCkKKworI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNE
LmgiCisjaWYgUExBVEZPUk0oR1RLKQorI2luY2x1ZGUgIk9wZW5HTFNoaW1zLmgiCisjZW5kaWYK
KyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgPEVHTC9lZ2wuaD4KKyNpbmNs
dWRlIDxkbGZjbi5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0M0RQcml2YXRlOjphZGRBY3RpdmVHcmFwaGljc0NvbnRleHQoR3JhcGhpY3NDb250ZXh0M0Qq
IGNvbnRleHQpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBHcmFwaGljc0Nv
bnRleHQzRFByaXZhdGU6OnJlbW92ZUFjdGl2ZUdyYXBoaWNzQ29udGV4dChHcmFwaGljc0NvbnRl
eHQzRCogY29udGV4dCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEdyYXBo
aWNzQ29udGV4dDNEUHJpdmF0ZTo6Y2xlYW51cEFjdGl2ZUNvbnRleHRzQXRFeGl0KCkKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworfQorCitQYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4dDNEUHJp
dmF0ZT4gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGUoKQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBHcmFwaGljc0NvbnRleHQzRFByaXZh
dGUoMCwgMCkpOworfQorCitHcmFwaGljc0NvbnRleHQzRFByaXZhdGUqIEdyYXBoaWNzQ29udGV4
dDNEUHJpdmF0ZTo6Y3JlYXRlUGJ1ZmZlckNvbnRleHQoKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgcmV0dXJuIDA7Cit9CisKK0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZSogR3JhcGhp
Y3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVQaXhtYXBDb250ZXh0KCkKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCitHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6
OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZShFR0xDb250ZXh0IGNvbnRleHQsIEVHTFN1cmZhY2Ug
cGJ1ZmZlclN1cmZhY2UpCisgICAgOiBtX2NvbnRleHQoY29udGV4dCkKKyAgICAsIG1fcGJ1ZmZl
clN1cmZhY2UocGJ1ZmZlclN1cmZhY2UpCisgICAgLCBtX3BpeG1hcFN1cmZhY2UoMCkKKyAgICAs
IG1fcGl4bWFwKDApCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworR3JhcGhpY3NDb250
ZXh0M0RQcml2YXRlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGUoRUdMQ29udGV4dCBjb250ZXh0
LCBQaXhtYXAgcGl4bWFwLCBFR0xTdXJmYWNlIHBpeG1hcFN1cmZhY2UpCisgICAgOiBtX2NvbnRl
eHQoY29udGV4dCkKKyAgICAsIG1fcGJ1ZmZlclN1cmZhY2UoMCkKKyAgICAsIG1fcGl4bWFwU3Vy
ZmFjZShwaXhtYXBTdXJmYWNlKQorICAgICwgbV9waXhtYXAocGl4bWFwKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7Cit9CisKK0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6fkdyYXBoaWNzQ29u
dGV4dDNEUHJpdmF0ZSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworYm9vbCBHcmFw
aGljc0NvbnRleHQzRFByaXZhdGU6Om1ha2VDb250ZXh0Q3VycmVudCgpCit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIEVOQUJMRV9XRUJHTApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjJiOTExY2NmOWY4YWM3ZmJhNjIyZTIzMTg4ZGI0MmNiNjg1MjM1MWIKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR3Jh
cGhpY3NDb250ZXh0M0RQcml2YXRlLmgKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBDaGFuZ1Nlb2sgT2ggPHNoaXZhbWlkb3dAZ21haWwuY29tPgorICoKKyAqIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJh
bCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAq
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCisgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKKyAqIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEz
MDEgVVNBCisgKi8KKworI2lmbmRlZiBHcmFwaGljc0NvbnRleHQzRFByaXZhdGVfaAorI2RlZmlu
ZSBHcmFwaGljc0NvbnRleHQzRFByaXZhdGVfaAorCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIu
aD4KKwordHlwZWRlZiB2b2lkKiBFR0xDb25maWc7Cit0eXBlZGVmIHZvaWQqIEVHTENvbnRleHQ7
Cit0eXBlZGVmIHZvaWQqIEVHTERpc3BsYXk7Cit0eXBlZGVmIHZvaWQqIEVHTFN1cmZhY2U7Cit0
eXBlZGVmIHVuc2lnbmVkIGNoYXIgR0x1Ynl0ZTsKK3R5cGVkZWYgdW5zaWduZWQgbG9uZyBQaXht
YXA7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CisK
K2NsYXNzIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBh
c3NPd25QdHI8R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlPiBjcmVhdGUoKTsKKyAgICB+R3JhcGhp
Y3NDb250ZXh0M0RQcml2YXRlKCk7CisgICAgYm9vbCBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKwor
cHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CisgICAgc3RhdGlj
IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZSogY3JlYXRlUGJ1ZmZlckNvbnRleHQoKTsKKyAgICBz
dGF0aWMgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlKiBjcmVhdGVQaXhtYXBDb250ZXh0KCk7Cisg
ICAgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlKEVHTENvbnRleHQsIEVHTFN1cmZhY2UpOworICAg
IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZShFR0xDb250ZXh0LCBQaXhtYXAsIEVHTFN1cmZhY2Up
OworCisgICAgc3RhdGljIHZvaWQgYWRkQWN0aXZlR3JhcGhpY3NDb250ZXh0KEdyYXBoaWNzQ29u
dGV4dDNEKik7CisgICAgc3RhdGljIHZvaWQgcmVtb3ZlQWN0aXZlR3JhcGhpY3NDb250ZXh0KEdy
YXBoaWNzQ29udGV4dDNEKik7CisgICAgc3RhdGljIHZvaWQgY2xlYW51cEFjdGl2ZUNvbnRleHRz
QXRFeGl0KCk7CisKKyAgICBFR0xDb250ZXh0IG1fY29udGV4dDsKKyAgICBFR0xTdXJmYWNlIG1f
cGJ1ZmZlclN1cmZhY2U7CisgICAgRUdMU3VyZmFjZSBtX3BpeG1hcFN1cmZhY2U7CisgICAgUGl4
bWFwIG1fcGl4bWFwOworfTsKKworfQorCisjZW5kaWYgLy8gR3JhcGhpY3NDb250ZXh0M0RQcml2
YXRlX2gKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA4NWUyYmM0MGQ4
ZjhjNGU5ZDY3NzEyMzFjOWJjNDdhODJiMGE2ODNhLi40ZTdkM2VmOTViNDU5MTczZDM3YTAwMDFl
Yzk1YzdjZTFmZGYzOTJhIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMTItMDItMDcgIENoYW5nU2VvayBPaCAgPHNoaXZhbWlkb3dAZ21h
aWwuY29tPgorCisgICAgICAgIFtHVEtdIEFkZCBjb25maWd1cmF0aW9uIG9wdGlvbiB0byBzZWxl
Y3QgZ2wgYmFja2VuZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTc3OTIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkZWQgYSBjb25maWd1cmF0aW9uIG9wdGlvbiB0byBjaG9vc2UgZWl0aGVyIG9mIHRo
ZSB0d28sIG9wZW5nbCBvciBvcGVuZ2xlcworICAgICAgICBmb3IgR0wgYmFja2VuZC4KKworICAg
ICAgICAqIGNvbmZpZ3VyZS5hYzoKKwogMjAxMi0wMi0wNyAgRnJlZGVyaWsgR2xhZGhvcm4gIDxm
cmVkZXJpay5nbGFkaG9ybkBub2tpYS5jb20+CiAKICAgICAgICAgVXBkYXRlIC5naXRpZ25vcmUg
Zm9yIFF0IENyZWF0b3IvS0RldmVsb3AuCmRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25m
aWd1cmUuYWMKaW5kZXggMzQ3MWU5NTY0MWU4OGQ1NDFhNzQ3ZTRlZjAyZjJlYzQ2NjU4OWJiMy4u
YzIxNWE5N2QwMDY0M2JjNDAyOWZmMjkzNThjYzM5NDIzZWYzNDUwNCAxMDA2NDQKLS0tIGEvY29u
ZmlndXJlLmFjCisrKyBiL2NvbmZpZ3VyZS5hYwpAQCAtNDM5LDkgKzQzOSwyNSBAQCBpZiB0ZXN0
ICIkd2l0aF9hY2NlbGVyYXRlZF9jb21wb3NpdGluZyIgPSAib3BlbmdsIiAmJiB0ZXN0ICIkd2l0
aF90YXJnZXQiICE9ICJ4MQogZmkKIAogaWYgdGVzdCAiJGVuYWJsZV93ZWJnbCIgPSAieWVzIiB8
fCAgdGVzdCAiJHdpdGhfYWNjZWxlcmF0ZWRfY29tcG9zaXRpbmciID0gIm9wZW5nbCIgOyB0aGVu
Ci0gICAgQUNfQ0hFQ0tfSEVBREVSUyhbR0wvZ2wuaF0sIFtdLCBBQ19NU0dfRVJST1IoW09wZW5H
TCBoZWFkZXIgbm90IGZvdW5kXSkpCi0gICAgQUNfQ0hFQ0tfSEVBREVSUyhbR0wvZ2x4LmhdLCBb
XSwgQUNfTVNHX0VSUk9SKFtHTFggaGVhZGVyIG5vdCBmb3VuZF0pKQotICAgIE9QRU5HTF9MSUJT
PSItbEdMIC1sZGwiCisgICAgIyBkZXRlcm1pbmUgdGhlIEdMIGJhY2tlbmQKKyAgICBBQ19NU0df
Q0hFQ0tJTkcoW3RoZSBHTCBiYWNrZW5kIHRvIHVzZV0pCisgICAgQUNfQVJHX1dJVEgoZ2xfYmFj
a2VuZCwKKyAgICAgICAgICAgICAgICBBQ19IRUxQX1NUUklORyhbLS13aXRoLWdsLWJhY2tlbmQ9
QDw6QG9wZW5nbC9vcGVuZ2xlc0A6PkBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFtTZWxlY3QgZ2wgYmFja2VuZCBbZGVmYXVsdD1vcGVuZ2xdXSksCisgICAgICAgICAgICAgICAg
W10sIFt3aXRoX2dsX2JhY2tlbmQ9Im9wZW5nbCJdKQorICAgIEFDX01TR19SRVNVTFQoWyR3aXRo
X2dsX2JhY2tlbmRdKQorICAgIGNhc2UgIiR3aXRoX2dsX2JhY2tlbmQiIGluCisgICAgICAgIG9w
ZW5nbCkgQUNfQ0hFQ0tfSEVBREVSUyhbR0wvZ2wuaF0sIFtdLCBBQ19NU0dfRVJST1IoW09wZW5H
TCBoZWFkZXIgbm90IGZvdW5kXSkpCisgICAgICAgICAgICAgICAgQUNfQ0hFQ0tfSEVBREVSUyhb
R0wvZ2x4LmhdLCBbXSwgQUNfTVNHX0VSUk9SKFtHTFggaGVhZGVyIG5vdCBmb3VuZF0pKQorICAg
ICAgICAgICAgICAgIE9QRU5HTF9MSUJTPSItbEdMIC1sZGwiCisgICAgICAgICAgICAgICAgOzsK
KyAgICAgICAgb3BlbmdsZXMpIEFDX0NIRUNLX0hFQURFUlMoW0dMRVMyL2dsMi5oXSwgW10sIEFD
X01TR19FUlJPUihbT3BlbkdMIEVTIGhlYWRlciBub3QgZm91bmRdKSkKKyAgICAgICAgICAgICAg
ICBBQ19DSEVDS19IRUFERVJTKFtFR0wvZWdsLmhdLCBbXSwgQUNfTVNHX0VSUk9SKFtFR0wgaGVh
ZGVyIG5vdCBmb3VuZF0pKQorICAgICAgICAgICAgICAgIE9QRU5HTF9MSUJTPSItbEdMRVN2MiAt
bEVHTCAtbGRsIgorICAgICAgICAgICAgICAgIDs7CisgICAgICAgICopIEFDX01TR19FUlJPUihb
SW52YWxpZCBnbCBiYWNrZW5kOiBtdXN0IGJlIG9wZW5nbCBvciBvcGVuZ2xlcy5dKQorICAgICAg
ICAgICAgICAgIDs7CisgICAgZXNhYwogZmkKIEFDX1NVQlNUKFtPUEVOR0xfTElCU10pCiAKQEAg
LTExNzgsNiArMTE5NCw5IEBAIEFNX0NPTkRJVElPTkFMKFtVU0VfR0xJQl9VTklDT0RFXSwgW3Rl
c3QgIiR3aXRoX3VuaWNvZGVfYmFja2VuZCIgPSAiZ2xpYiJdKQogQU1fQ09ORElUSU9OQUwoW1VT
RV9GUkVFVFlQRV0sIFt0ZXN0ICIkd2l0aF9mb250X2JhY2tlbmQiID0gImZyZWV0eXBlIl0pCiBB
TV9DT05ESVRJT05BTChbVVNFX1BBTkdPXSwgW3Rlc3QgIiR3aXRoX2ZvbnRfYmFja2VuZCIgPSAi
cGFuZ28iXSkKIAorIyBPcGVuR0wgYmFja2VuZCBjb25kaXRpb25hbHMKK0FNX0NPTkRJVElPTkFM
KFtVU0VfT1BFTkdMX0VTXzJdLCBbdGVzdCAiJHdpdGhfZ2xfYmFja2VuZCIgPSAib3BlbmdsZXMi
XSkKKwogIyBHU3RyZWFtZXIgZmVhdHVyZSBjb25kaXRpb25hbAogQU1fQ09ORElUSU9OQUwoW1VT
RV9HU1RSRUFNRVJdLCBbdGVzdCAiJGhhdmVfZ3N0cmVhbWVyIiA9ICJ5ZXMiXSkKIEFNX0NPTkRJ
VElPTkFMKFtVU0VfV0VCQVVESU9fR1NUUkVBTUVSXSwgW3Rlc3QgIiRlbmFibGVfd2ViX2F1ZGlv
IiA9ICJ5ZXMiXSkKQEAgLTEyOTYsNiArMTMxNSw3IEBAIEJ1aWxkIGNvbmZpZ3VyYXRpb246CiAg
Q29kZSBjb3ZlcmFnZSBzdXBwb3J0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
OiAkZW5hYmxlX2NvdmVyYWdlCiAgVW5pY29kZSBiYWNrZW5kICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgOiAkd2l0aF91bmljb2RlX2JhY2tlbmQKICBGb250IGJhY2tl
bmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICR3aXRoX2Zv
bnRfYmFja2VuZAorIE9wZW5HTCBiYWNrZW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDogJHdpdGhfZ2xfYmFja2VuZAogIE9wdGltaXplZCBtZW1vcnkgYWxsb2Nh
dG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJGVuYWJsZV9mYXN0X21hbGxvYwog
IEFjY2VsZXJhdGVkIENvbXBvc2l0aW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDogJHdpdGhfYWNjZWxlcmF0ZWRfY29tcG9zaXRpbmcKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132149</attachid>
            <date>2012-03-15 16:54:56 -0700</date>
            <delta_ts>2012-04-11 10:49:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77921-20120315165456.patch</filename>
            <type>text/plain</type>
            <size>16801</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwNzY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGUwOGNlODc2M2NkOTVk
NTI4ZWYzYjAwNGYzZTk0ZmUwZDE0ZGRhMy4uNDIzNDEyZDQ3Nzg5YzM2ZTZiMDM5MjE4YTg2MDBk
MzRlOWUzYmJmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEyLTAzLTE1ICBDaGFu
Z1Nlb2sgT2ggIDxzaGl2YW1pZG93QGdtYWlsLmNvbT4gYW5kIE1hcnRpbiBSb2JpbnNvbiAgPG1y
b2JpbnNvbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIEFkZCBzdXBwb3J0IGZvciBjcmVh
dGluZyBFR0wgY29udGV4dHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTc3OTIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzLiBUaGlzIHNob3VsZG4ndCBjaGFuZ2UgYmVoYXZpb3IsIGJ1
dCBleHRlbmQKKyAgICAgICAgaXQgdG8gd29yayBvbiBvdGhlciBwbGF0Zm9ybXMuCisKKyAgICAg
ICAgKiBHTlVtYWtlZmlsZS5hbTogVXBkYXRlIHRvIHJlZmxlY3QgbmV3IG9wdGlvbnMuCisgICAg
ICAgICogR05VbWFrZWZpbGUubGlzdC5hbTogQWRkIEdMQ29udGV4dEVHTCBmaWxlcy4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HTENvbnRleHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6R0xDb250ZXh0OjpjcmVhdGVPZmZzY3JlZW5Db250ZXh0KTogRmlyc3QgdHJ5IHRvIGdl
dAorICAgICAgICB0aGUgY29udGV4dCB2aWEgRUdMIGlmIGl0J3MgZW5hYmxlZCBhdCBjb21waWxl
LXRpbWUuIFdpbGwgYmUgc21hcnQKKyAgICAgICAgZW5vdWdoIGluIHRoZSBmdXR1cmUgdG8gbW9y
ZSBpbnRlbGxpZ2VudGx5IGZhbGwgYmFjay4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9lZ2wvR0xDb250ZXh0RUdMLmNwcDogQWRkZWQuIFRoaXMKKyAgICAgICAgaXMgYW4gRUdM
IHNwZWNpZmljIGltcGxlbWVudGF0aW9uIG9mIHRoZSBhYnN0cmFjdCBHTENvbnRleHQKKyAgICAg
ICAgY2xhc3MuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vZWdsL0dMQ29udGV4
dEVHTC5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ndGsvR0xDb250ZXh0
R3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dDo6Z2V0Q29udGV4dEZvcldpZGdl
dCk6IEZpcnN0IHRyeSB0byBnZXQgdGhlIGNvbnRleHQKKyAgICAgICAgdmlhIEVHTCAoaWYgaXQn
cyBlbmFibGVkIGF0IGNvbXBpbGUtdGltZSkuIElmIHRoYXQgZmFpbHMgZmFsbCBiYWNrCisgICAg
ICAgIHRvIEdMWC4gVGhpcyB3aWxsIHNvb24gYmUgc21hcnQgZW5vdWdoIHRvIGtub3cgd2hldGhl
ciBvciBub3QgdGhlCisgICAgICAgIEVHTCBjb250ZXh0IGlzIGFjY2VsZXJhdGVkLgorCiAyMDEy
LTAzLTE1ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KIAogICAgICAg
ICBbQ0FJUk9dIE1ha2UgR0xDb250ZXh0R0xYIGEgc3ViY2xhc3Mgb2YgR0xDb250ZXh0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmFtCmluZGV4IDUyMzI0ZjM3YzhiNWVmOGUwZDk1YTNlNWZiMjE0YjY0M2M4NmRh
N2YuLjI0NWE5YmI1NWJiYWQzMjZjMDRhOTZmZTdiYThkODY4N2U1YmM5NTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmFtCkBAIC0xMDcsNiArMTA3LDcgQEAgd2ViY29yZWd0a19jcHBmbGFncyArPSBcCiAJ
LUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2Fpcm8gXAogCS1JJChzcmNkaXIp
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lciBcCiAJLUkkKHNyY2Rpcikv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8gXAorCS1JJChzcmNkaXIpL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL2VnbCBcCiAJLUkkKHNyY2Rpcikv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4IFwKIAktSSQoc3JjZGlyKS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIgXAogCS1JJChzcmNkaXIpL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ayBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUu
bGlzdC5hbQppbmRleCAxZTlkYTljNTZjYTc0NjQ2ZTVhNDkxOTg0ZWIyODY1OGRlNDAwNWIyLi40
M2VlYzRmYjc4YjJmNGE2MmI1NGZlYmVlMzkwODNlMTA2NmJkMWU3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0KQEAgLTQ2MzYsMTEgKzQ2MzYsMTMgQEAgd2ViY29yZWd0a19zb3VyY2Vz
ICs9IFwKIAogaWYgVEFSR0VUX1gxMQogd2ViY29yZWd0a19zb3VyY2VzICs9IFwKKwlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HTENvbnRleHQuY3BwIFwKKwlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HTENvbnRleHQuaCBcCisJU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vZWdsL0dMQ29udGV4dEVHTC5jcHAgXAorCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL2VnbC9HTENvbnRleHRFR0wuaCBc
CiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dMQ29udGV4dEdMWC5jcHAg
XAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dseC9HTENvbnRleHRHTFguaCBc
CiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0dMQ29udGV4dEd0ay5jcHAg
XAotCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dMQ29udGV4dC5jcHAg
XAotCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dMQ29udGV4dC5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrV2lkZ2V0QmFja2luZ1N0b3JlWDExLmNw
cCBcCiAJU291cmNlL1dlYkNvcmUvcGx1Z2lucy9ndGsvZ3RrMnh0YmluLmMgXAogCVNvdXJjZS9X
ZWJDb3JlL3BsdWdpbnMvZ3RrL2d0azJ4dGJpbi5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dMQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HTENvbnRleHQuY3BwCmluZGV4IGM3MDMwN2U4ZWRl
MmRkZDQwOWZkNmJmZDgwYjBiYzI4ZWNhOTdhNWIuLmMyZWExMjdiYTA1YTNlYTRiMTYwOTBiNThk
MzUwNzQ1MzZjNDkxOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0dMQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vR0xDb250ZXh0LmNwcApAQCAtMjEsOSArMjEsOCBAQAogCiAjaWYgVVNFKE9Q
RU5HTCkKIAotI2lmIFVTRShHTFgpCisjaW5jbHVkZSAiR0xDb250ZXh0RUdMLmgiCiAjaW5jbHVk
ZSAiR0xDb250ZXh0R0xYLmgiCi0jZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0z
Niw5ICszNSwxOSBAQCBHTENvbnRleHQqIEdMQ29udGV4dDo6Y3JlYXRlT2Zmc2NyZWVuQ29udGV4
dChHTENvbnRleHQqIHNoYXJpbmcpCiAgICAgaWYgKHNoYXJpbmcpCiAgICAgICAgIHJldHVybiBz
aGFyaW5nLT5jcmVhdGVPZmZzY3JlZW5TaGFyaW5nQ29udGV4dCgpOwogCisgICAgR0xDb250ZXh0
KiBjb250ZXh0ID0gMDsKKworI2lmIFVTRShFR0wpCisgICAgY29udGV4dCA9IEdMQ29udGV4dEVH
TDo6Y3JlYXRlQ29udGV4dCgwLCAwKTsKKyAgICBpZiAoY29udGV4dCkKKyAgICAgICAgcmV0dXJu
IGNvbnRleHQ7CisjZW5kaWYKKwogI2lmIFVTRShHTFgpCi0gICAgcmV0dXJuIEdMQ29udGV4dEdM
WDo6Y3JlYXRlQ29udGV4dCgwLCAwKTsKKyAgICBjb250ZXh0ID0gR0xDb250ZXh0R0xYOjpjcmVh
dGVDb250ZXh0KDAsIDApOwogI2VuZGlmCisKKyAgICByZXR1cm4gY29udGV4dDsKIH0KIAogLy8g
RklYTUU6IFRoaXMgc2hvdWxkIGJlIGEgdGhyZWFkIGxvY2FsIGV2ZW50dWFsbHkgaWYgd2UKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL2VnbC9HTENv
bnRleHRFR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vZWds
L0dMQ29udGV4dEVHTC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjlhMTI5ZGU4ZTE1NDI2ZDVjNWEwNzVmMTkx
YmU3MTBmNmE3NzJlYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL2VnbC9HTENvbnRleHRFR0wuY3BwCkBAIC0wLDAgKzEsMTg4IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEyIElnYWxpYSwgUy5MLgorICoKKyAqICBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAg
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1Ymxp
YworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMw
MSAgVVNBCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdMQ29udGV4dEVH
TC5oIgorCisjaWYgVVNFKEVHTCkKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgorI2lu
Y2x1ZGUgIk9wZW5HTFNoaW1zLmgiCisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKKy8vIFdlIGRvIG5vdCB3YW50IHRvIGNhbGwgZ2xYTWFrZUNvbnRleHRD
dXJyZW50IHVzaW5nIGRpZmZlcmVudCBEaXNwbGF5IHBvaW50ZXJzLAorLy8gYmVjYXVzZSBpdCBt
aWdodCBsZWFkIHRvIGNyYXNoZXMgaW4gc29tZSBkcml2ZXJzIChmZ2xyeCkuIFdlIHVzZSBhIHNo
YXJlZCBkaXNwbGF5CisvLyBwb2ludGVyIGhlcmUuCitzdGF0aWMgRUdMRGlzcGxheSBnU2hhcmVk
RGlzcGxheSA9IEVHTF9OT19ESVNQTEFZOworc3RhdGljIEVHTERpc3BsYXkgc2hhcmVkRGlzcGxh
eSgpCit7CisgICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQgPSBmYWxzZTsKKyAgICBpZiAoIWlu
aXRpYWxpemVkKSB7CisgICAgICAgIGluaXRpYWxpemVkID0gdHJ1ZTsKKyAgICAgICAgZ1NoYXJl
ZERpc3BsYXkgPSBlZ2xHZXREaXNwbGF5KEVHTF9ERUZBVUxUX0RJU1BMQVkpOworICAgICAgICBp
ZiAoZ1NoYXJlZERpc3BsYXkgJiYgIWVnbEluaXRpYWxpemUoZ1NoYXJlZERpc3BsYXksIDAsIDAp
KQorICAgICAgICAgICAgZ1NoYXJlZERpc3BsYXkgPSAwOworICAgIH0KKyAgICByZXR1cm4gZ1No
YXJlZERpc3BsYXk7Cit9CisKK0dMQ29udGV4dCogR0xDb250ZXh0RUdMOjpjcmVhdGVPZmZzY3Jl
ZW5TaGFyaW5nQ29udGV4dCgpCit7CisgICAgcmV0dXJuIGNyZWF0ZUNvbnRleHQoMCwgbV9jb250
ZXh0KTsKK30KKworc3RhdGljIGJvb2wgZ2V0RUdMQ29uZmlnKEVHTENvbmZpZyogY29uZmlnLCBH
TENvbnRleHRFR0w6OkVHTFN1cmZhY2VUeXBlIHN1cmZhY2VUeXBlKQoreworICAgIEVHTGludCBh
dHRyaWJ1dGVMaXN0W10gPSB7CisgICAgICAgIEVHTF9SRURfU0laRSwgOCwKKyAgICAgICAgRUdM
X0dSRUVOX1NJWkUsIDgsCisgICAgICAgIEVHTF9CTFVFX1NJWkUsIDgsCisgICAgICAgIEVHTF9T
VEVOQ0lMX1NJWkUsIDgsCisgICAgICAgIEVHTF9BTFBIQV9TSVpFLCA4LAorICAgICAgICBFR0xf
Tk9ORSwgRUdMX05PTkUsCisgICAgICAgIEVHTF9OT05FCisgICAgfTsKKworICAgIGlmIChzdXJm
YWNlVHlwZSA9PSBHTENvbnRleHRFR0w6OlBidWZmZXJTdXJmYWNlKSB7CisgICAgICAgIGF0dHJp
YnV0ZUxpc3RbMTBdID0gRUdMX1NVUkZBQ0VfVFlQRTsKKyAgICAgICAgYXR0cmlidXRlTGlzdFsx
MV0gPSBFR0xfUEJVRkZFUl9CSVQ7CisgICAgfQorCisgICAgRUdMaW50IG51bWJlckNvbmZpZ3NS
ZXR1cm5lZDsKKyAgICByZXR1cm4gZWdsQ2hvb3NlQ29uZmlnKHNoYXJlZERpc3BsYXkoKSwgYXR0
cmlidXRlTGlzdCwgY29uZmlnLCAxLCAmbnVtYmVyQ29uZmlnc1JldHVybmVkKSAmJiBudW1iZXJD
b25maWdzUmV0dXJuZWQ7Cit9CisKK0dMQ29udGV4dEVHTCogR0xDb250ZXh0RUdMOjpjcmVhdGVX
aW5kb3dDb250ZXh0KE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93LCBFR0xDb250ZXh0IHNoYXJpbmdD
b250ZXh0KQoreworICAgIEVHTERpc3BsYXkgZGlzcGxheSA9IHNoYXJlZERpc3BsYXkoKTsKKyAg
ICBpZiAoIWRpc3BsYXkpCisgICAgICAgIHJldHVybiAwOworCisgICAgRUdMQ29uZmlnIGNvbmZp
ZzsKKyAgICBpZiAoIWdldEVHTENvbmZpZygmY29uZmlnLCBXaW5kb3dTdXJmYWNlKSkKKyAgICAg
ICAgcmV0dXJuIDA7CisKKyAgICBFR0xDb250ZXh0IGNvbnRleHQgPSBlZ2xDcmVhdGVDb250ZXh0
KGRpc3BsYXksIGNvbmZpZywgc2hhcmluZ0NvbnRleHQsIDApOworICAgIGlmICghY29udGV4dCkK
KyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBFR0xTdXJmYWNlIHN1cmZhY2UgPSBlZ2xDcmVhdGVX
aW5kb3dTdXJmYWNlKGRpc3BsYXksIGNvbmZpZywgd2luZG93LCAwKTsKKyAgICBpZiAoIXN1cmZh
Y2UpIHsKKyAgICAgICAgZWdsRGVzdHJveUNvbnRleHQoZGlzcGxheSwgY29udGV4dCk7CisgICAg
ICAgIHJldHVybiAwOworICAgIH0KKworICAgIHJldHVybiBuZXcgR0xDb250ZXh0RUdMKGNvbnRl
eHQsIHN1cmZhY2UsIFdpbmRvd1N1cmZhY2UpOworfQorCitHTENvbnRleHRFR0wqIEdMQ29udGV4
dEVHTDo6Y3JlYXRlUGJ1ZmZlckNvbnRleHQoRUdMQ29udGV4dCBzaGFyaW5nQ29udGV4dCkKK3sK
KyAgICBFR0xEaXNwbGF5IGRpc3BsYXkgPSBzaGFyZWREaXNwbGF5KCk7CisgICAgaWYgKCFkaXNw
bGF5KQorICAgICAgICByZXR1cm4gMDsKKworICAgIEVHTENvbmZpZyBjb25maWc7CisgICAgaWYg
KCFnZXRFR0xDb25maWcoJmNvbmZpZywgV2luZG93U3VyZmFjZSkpCisgICAgICAgIHJldHVybiAw
OworCisgICAgRUdMQ29udGV4dCBjb250ZXh0ID0gZWdsQ3JlYXRlQ29udGV4dChkaXNwbGF5LCBj
b25maWcsIHNoYXJpbmdDb250ZXh0LCAwKTsKKyAgICBpZiAoIWNvbnRleHQpCisgICAgICAgIHJl
dHVybiAwOworCisgICAgLy8gV2Ugd2lsbCBiZSByZW5kZXJpbmcgdG8gYSB0ZXh0dXJlLCBzbyBv
dXIgcGJ1ZmZlciBkb2VzIG5vdCBuZWVkIHRvIGJlIGxhcmdlLgorICAgIHN0YXRpYyBjb25zdCBp
bnQgcGJ1ZmZlckF0dHJpYnV0ZXNbXSA9IHsgRUdMX1dJRFRILCAxLCBFR0xfSEVJR0hULCAxLCBF
R0xfTk9ORSB9OworICAgIEVHTFN1cmZhY2Ugc3VyZmFjZSA9IGVnbENyZWF0ZVBidWZmZXJTdXJm
YWNlKGRpc3BsYXksIGNvbmZpZywgcGJ1ZmZlckF0dHJpYnV0ZXMpOworICAgIGlmIChzdXJmYWNl
ID09IEVHTF9OT19TVVJGQUNFKSB7CisgICAgICAgIGVnbERlc3Ryb3lDb250ZXh0KGRpc3BsYXks
IGNvbnRleHQpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICByZXR1cm4gbmV3IEdM
Q29udGV4dEVHTChjb250ZXh0LCBzdXJmYWNlLCBQYnVmZmVyU3VyZmFjZSk7Cit9CisKK0dMQ29u
dGV4dEVHTCogR0xDb250ZXh0RUdMOjpjcmVhdGVDb250ZXh0KE5hdGl2ZVdpbmRvd1R5cGUgd2lu
ZG93LCBFR0xDb250ZXh0IHNoYXJpbmdDb250ZXh0KQoreworICAgIGlmICghc2hhcmVkRGlzcGxh
eSgpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHN0YXRpYyBib29sIGluaXRpYWxpemVkID0g
ZmFsc2U7CisgICAgc3RhdGljIGJvb2wgc3VjY2VzcyA9IHRydWU7CisgICAgaWYgKCFpbml0aWFs
aXplZCkgeworICAgICAgICBzdWNjZXNzID0gaW5pdGlhbGl6ZU9wZW5HTFNoaW1zKCk7CisgICAg
ICAgIGluaXRpYWxpemVkID0gdHJ1ZTsKKyAgICB9CisgICAgaWYgKCFzdWNjZXNzKQorICAgICAg
ICByZXR1cm4gMDsKKworICAgIEdMQ29udGV4dEVHTCogY29udGV4dCA9IHdpbmRvdyA/IGNyZWF0
ZVdpbmRvd0NvbnRleHQod2luZG93LCBzaGFyaW5nQ29udGV4dCkgOiAwOworICAgIGlmICghY29u
dGV4dCkKKyAgICAgICAgY29udGV4dCA9IGNyZWF0ZVBidWZmZXJDb250ZXh0KHNoYXJpbmdDb250
ZXh0KTsKKyAgICByZXR1cm4gY29udGV4dDsKK30KKworR0xDb250ZXh0RUdMOjpHTENvbnRleHRF
R0woRUdMQ29udGV4dCBjb250ZXh0LCBFR0xTdXJmYWNlIHN1cmZhY2UsIEVHTFN1cmZhY2VUeXBl
IHR5cGUpCisgICAgOiBtX2NvbnRleHQoY29udGV4dCkKKyAgICAsIG1fc3VyZmFjZShzdXJmYWNl
KQorICAgICwgbV90eXBlKHR5cGUpCit7Cit9CisKK0dMQ29udGV4dEVHTDo6fkdMQ29udGV4dEVH
TCgpCit7CisgICAgRUdMRGlzcGxheSBkaXNwbGF5ID0gc2hhcmVkRGlzcGxheSgpOworICAgIGlm
IChtX2NvbnRleHQpIHsKKyAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXJFWFQoR0xfRlJBTUVCVUZG
RVJfRVhULCAwKTsKKyAgICAgICAgZWdsTWFrZUN1cnJlbnQoZGlzcGxheSwgRUdMX05PX1NVUkZB
Q0UsIEVHTF9OT19TVVJGQUNFLCBFR0xfTk9fQ09OVEVYVCk7CisgICAgICAgIGVnbERlc3Ryb3lD
b250ZXh0KGRpc3BsYXksIG1fY29udGV4dCk7CisgICAgfQorCisgICAgaWYgKG1fc3VyZmFjZSkK
KyAgICAgICAgZWdsRGVzdHJveVN1cmZhY2UoZGlzcGxheSwgbV9zdXJmYWNlKTsKK30KKworYm9v
bCBHTENvbnRleHRFR0w6OmNhblJlbmRlclRvRGVmYXVsdEZyYW1lYnVmZmVyKCkKK3sKKyAgICBy
ZXR1cm4gbV90eXBlID09IFdpbmRvd1N1cmZhY2U7Cit9CisKK2Jvb2wgR0xDb250ZXh0RUdMOjpt
YWtlQ29udGV4dEN1cnJlbnQoKQoreworICAgIEFTU0VSVChtX2NvbnRleHQgJiYgbV9zdXJmYWNl
KTsKKworICAgIEdMQ29udGV4dDo6bWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgaWYgKGVnbEdl
dEN1cnJlbnRDb250ZXh0KCkgPT0gbV9jb250ZXh0KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICByZXR1cm4gZWdsTWFrZUN1cnJlbnQoc2hhcmVkRGlzcGxheSgpLCBtX3N1cmZhY2UsIG1fc3Vy
ZmFjZSwgbV9jb250ZXh0KTsKK30KKwordm9pZCBHTENvbnRleHRFR0w6OnN3YXBCdWZmZXJzKCkK
K3sKKyAgICBlZ2xTd2FwQnVmZmVycyhzaGFyZWREaXNwbGF5KCksIG1fc3VyZmFjZSk7Cit9CisK
KyNpZiBFTkFCTEUoV0VCR0wpCitQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEIEdMQ29udGV4dEVH
TDo6cGxhdGZvcm1Db250ZXh0KCkKK3sKKyAgICByZXR1cm4gbV9jb250ZXh0OworfQorI2VuZGlm
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkgfHwg
JiYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vZWdsL0dMQ29udGV4dEVHTC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vZWdsL0dMQ29udGV4dEVHTC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFi
ODhhYTI2NjQxNWM0Mzc4NDRjMjI2NTUzMDQzZjBiODY1M2ZmMzQKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9lZ2wvR0xDb250ZXh0RUdM
LmgKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJZ2FsaWEgUy5M
LgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCisgKiAgU29m
dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwK
KyAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCisgKi8KKworI2lmbmRlZiBHTENvbnRleHRF
R0xfaAorI2RlZmluZSBHTENvbnRleHRFR0xfaAorCisjaWYgVVNFKEVHTCkKKworI2luY2x1ZGUg
IkdMQ29udGV4dC5oIgorI2luY2x1ZGUgPEVHTC9lZ2wuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBHTENvbnRleHRFR0wgOiBwdWJsaWMgR0xDb250ZXh0IHsKKyAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShHTENvbnRleHRFR0wpOworcHVibGljOgorICAgIGVudW0gRUdMU3VyZmFj
ZVR5cGUgeyBQYnVmZmVyU3VyZmFjZSwgV2luZG93U3VyZmFjZSB9OworCisgICAgc3RhdGljIEdM
Q29udGV4dEVHTCogY3JlYXRlQ29udGV4dChOYXRpdmVXaW5kb3dUeXBlLCBFR0xDb250ZXh0IHNo
YXJpbmdDb250ZXh0ID0gMCk7CisgICAgc3RhdGljIEdMQ29udGV4dEVHTCogY3JlYXRlV2luZG93
Q29udGV4dChOYXRpdmVXaW5kb3dUeXBlLCBFR0xDb250ZXh0IHNoYXJpbmdDb250ZXh0KTsKKyAg
ICBzdGF0aWMgR0xDb250ZXh0RUdMKiBjcmVhdGVQYnVmZmVyQ29udGV4dChFR0xDb250ZXh0IHNo
YXJpbmdDb250ZXh0KTsKKworICAgIHZpcnR1YWwgfkdMQ29udGV4dEVHTCgpOworICAgIHZpcnR1
YWwgR0xDb250ZXh0KiBjcmVhdGVPZmZzY3JlZW5TaGFyaW5nQ29udGV4dCgpOworICAgIHZpcnR1
YWwgYm9vbCBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3dhcEJ1ZmZl
cnMoKTsKKyAgICB2aXJ0dWFsIGJvb2wgY2FuUmVuZGVyVG9EZWZhdWx0RnJhbWVidWZmZXIoKTsK
KworI2lmIEVOQUJMRShXRUJHTCkKKyAgICB2aXJ0dWFsIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0
M0QgcGxhdGZvcm1Db250ZXh0KCk7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBHTENvbnRleHRF
R0woRUdMQ29udGV4dCwgRUdMU3VyZmFjZSwgRUdMU3VyZmFjZVR5cGUpOworCisgICAgRUdMQ29u
dGV4dCBtX2NvbnRleHQ7CisgICAgRUdMU3VyZmFjZSBtX3N1cmZhY2U7CisgICAgRUdMU3VyZmFj
ZVR5cGUgbV90eXBlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
VVNFKEVHTCkKKworI2VuZGlmIC8vIEdMQ29udGV4dEVHTF9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvR0xDb250ZXh0R3RrLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9HTENvbnRleHRHdGsuY3BwCmluZGV4IGQ0NjBk
MTJjMDIxMWMzYjFlOTZlYjE2YjgyMTM1MTYxOGU5Y2U2NTIuLjkyZDEwMGY5ZTZkNWY2YWUyMDNj
ZWZjNGYyY2M0ZjI1ODQ4OGRhZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2d0ay9HTENvbnRleHRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2d0ay9HTENvbnRleHRHdGsuY3BwCkBAIC0xOSw2ICsxOSw3IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiR0xDb250ZXh0LmgiCiAKKyNpbmNsdWRlICJHTENv
bnRleHRFR0wuaCIKICNpbmNsdWRlICJHTENvbnRleHRHTFguaCIKICNpbmNsdWRlIDxnZGsvZ2Rr
Lmg+CiAjaW5jbHVkZSA8Z2RrL2dka3guaD4KQEAgLTU3LDEyICs1OCwyMiBAQCBHTENvbnRleHQq
IEdMQ29udGV4dDo6Z2V0Q29udGV4dEZvcldpZGdldChHdGtXaWRnZXQqIHdpZGdldCkKIAogICAg
IEdMQ29udGV4dCogY29udGV4dCA9IDA7CiAKLSNpZiBVU0UoR0xYKQogICAgIC8vIElmIHRoaXMg
R0RLIHdpbmRvdyBkb2Vzbid0IGhhdmUgaXRzIG93biBuYXRpdmUgd2luZG93IHRoZW4sIHdlIGRv
bid0IHdhbnQKICAgICAvLyB0byB1c2UgaXQgZm9yIHJlbmRlcmluZywgc2luY2Ugd2UnbGwgYmUg
ZHJhd2luZyBvdmVyIHNvbWUgb3RoZXIgd2lkZ2V0J3MgYXJlYS4KICAgICBHZGtXaW5kb3cqIGdk
a1dpbmRvdyA9IGd0a193aWRnZXRfZ2V0X3dpbmRvdyh3aWRnZXQpOwotICAgIGNvbnRleHQgPSBn
ZGtXaW5kb3cgJiYgZ2RrX3dpbmRvd19oYXNfbmF0aXZlKGdka1dpbmRvdykgPyAgR0xDb250ZXh0
R0xYOjpjcmVhdGVDb250ZXh0KEdES19XSU5ET1dfWElEKGdka1dpbmRvdykpIDogR0xDb250ZXh0
R0xYOjpjcmVhdGVDb250ZXh0KDApOworICAgIGlmICghZ2RrV2luZG93IHx8ICFnZGtfd2luZG93
X2hhc19uYXRpdmUoZ2RrV2luZG93KSkKKyAgICAgICAgY29udGV4dCA9IEdMQ29udGV4dDo6Y3Jl
YXRlT2Zmc2NyZWVuQ29udGV4dCgwKTsKKyAgICBlbHNlIHsKKworI2lmIFVTRShFR0wpCisgICAg
ICAgIGNvbnRleHQgPSAgR0xDb250ZXh0RUdMOjpjcmVhdGVDb250ZXh0KEdES19XSU5ET1dfWElE
KGdka1dpbmRvdykpOworI2VuZGlmCisKKyNpZiBVU0UoR0xYKQorICAgICAgICBpZiAoIWNvbnRl
eHQpCisgICAgICAgICAgICBjb250ZXh0ID0gIEdMQ29udGV4dEdMWDo6Y3JlYXRlQ29udGV4dChH
REtfV0lORE9XX1hJRChnZGtXaW5kb3cpKTsKICNlbmRpZgorICAgIH0KIAogICAgIGlmICghY29u
dGV4dCkKICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VM
b2cKaW5kZXggNzdlMjIxYTFkZjViNTJjYzc2NzlhYWM0MTNkNGM0NTFlMGNjZGJiMS4uNWE0ZDEw
YzBkNDk2MDFiMWNmM2Q1NjMyNGM0YjJhOWIyYWMwZjc0ZiAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9n
CisrKyBiL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE4IEBACiAyMDEyLTAzLTE1ICBNYXJ0aW4gUm9i
aW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KIAorICAgICAgICBbR1RLXSBBZGQgc3VwcG9y
dCBmb3IgY3JlYXRpbmcgRUdMIGNvbnRleHRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03NzkyMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZGVkIGEgLS1lbmFibGUtZWdsIG9wdGlvbiwgd2hpY2ggaXMg
ZW5hYmxlZCBieSBkZWZhdWx0IG9uCisgICAgICAgIEFSTSBzeXN0ZW1zLgorCisgICAgICAgICog
R05VbWFrZWZpbGUuYW06IEFkZCBhbiAtLWVuYWJsZS1lZ2wgb3B0aW9uLiBFbmFibGUgaXQgYnkg
ZGVmYXVsdCBvbiBBUk0uCisgICAgICAgICogY29uZmlndXJlLmFjOiBEaXR0by4KKworMjAxMi0w
My0xNSAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CisKICAgICAgICAg
W0NBSVJPXSBNYWtlIEdMQ29udGV4dEdMWCBhIHN1YmNsYXNzIG9mIEdMQ29udGV4dAogICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODEyODUKIApkaWZmIC0t
Z2l0IGEvR05VbWFrZWZpbGUuYW0gYi9HTlVtYWtlZmlsZS5hbQppbmRleCA3MTZjNDYwMzk3NzE1
NzgyZDAyYzQ1MzY4MzY4MDQ4OWRmNWZiM2UzLi4xZjE5MjZkNTE4NDU5YmM3MDlhODMwZjA4NDg2
MWE5NGI4YmU5YjdlIDEwMDY0NAotLS0gYS9HTlVtYWtlZmlsZS5hbQorKysgYi9HTlVtYWtlZmls
ZS5hbQpAQCAtMjEwLDYgKzIxMCwxMSBAQCBnbG9iYWxfY3BwZmxhZ3MgKz0gXAogCS1EV1RGX1VT
RV9HTFg9MQogZW5kaWYKIAoraWYgVVNFX0VHTAorZ2xvYmFsX2NwcGZsYWdzICs9IFwKKwktRFdU
Rl9VU0VfRUdMPTEKK2VuZGlmCisKIGlmIFVTRV9PUEVOR0wKIGdsb2JhbF9jcHBmbGFncyArPSBc
CiAJLURXVEZfVVNFX09QRU5HTD0xCmRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1
cmUuYWMKaW5kZXggNzBkYTQ1ZWJjZmI2OWM2YzQ5MTJjNGIyNmIzYzliZTY3Zjc2NWJmNS4uZjJk
Mzc5M2ExNzAxYzQ5NDYwYjJlMWY2ZDNiY2VhZGZiNmZjYWIyOCAxMDA2NDQKLS0tIGEvY29uZmln
dXJlLmFjCisrKyBiL2NvbmZpZ3VyZS5hYwpAQCAtNTQ3LDYgKzU0NywxMiBAQCBBQ19BUkdfV0lU
SChhY2NlbGVyYXRlZF9jb21wb3NpdGluZywKICAgICAgICAgICAgIFtdLCBbd2l0aF9hY2NlbGVy
YXRlZF9jb21wb3NpdGluZz0ibm8iXSkKIEFDX01TR19SRVNVTFQoWyR3aXRoX2FjY2VsZXJhdGVk
X2NvbXBvc2l0aW5nXSkKIAorQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIHRvIGVuYWJsZSBFR0wg
c3VwcG9ydF0pCitBQ19BUkdfRU5BQkxFKGVnbCwKKyAgICAgICAgICAgICAgQUNfSEVMUF9TVFJJ
TkcoWy0tZW5hYmxlLWVnbF0sIFtlbmFibGUgc3VwcG9ydCBmb3IgRUdMIFtkZWZhdWx0PW5vXV0p
LAorICAgICAgICAgICAgICBbXSwgW2lmIHRlc3QgIiRidWlsZF9jcHUiID0gImFybSI7IHRoZW4g
ZW5hYmxlX2VnbD0ieWVzIjsgZWxzZSBlbmFibGVfZWdsPSJubyI7IGZpXSkKK0FDX01TR19SRVNV
TFQoWyRlbmFibGVfZWdsXSkKKwogaWYgdGVzdCAiJGVuYWJsZV93ZWJnbCIgPSAieWVzIiB8fCAg
dGVzdCAiJHdpdGhfYWNjZWxlcmF0ZWRfY29tcG9zaXRpbmciID0gIm9wZW5nbCIgOyB0aGVuCiAg
ICAgaWYgdGVzdCAiJHdpdGhfdGFyZ2V0IiAhPSAieDExIjsgdGhlbgogICAgICAgICBBQ19NU0df
RVJST1IoW09wZW5HTCBzdXBwb3J0IGlzIG9ubHkgYXZhaWxhYmxlIG9uIFgxMSBjdXJyZW50bHku
XSkKQEAgLTU1NCw2ICs1NjAsMTIgQEAgaWYgdGVzdCAiJGVuYWJsZV93ZWJnbCIgPSAieWVzIiB8
fCAgdGVzdCAiJHdpdGhfYWNjZWxlcmF0ZWRfY29tcG9zaXRpbmciID0gIm9wZW4KICAgICBBQ19D
SEVDS19IRUFERVJTKFtHTC9nbC5oXSwgW10sIEFDX01TR19FUlJPUihbT3BlbkdMIGhlYWRlciBu
b3QgZm91bmRdKSkKICAgICBBQ19DSEVDS19IRUFERVJTKFtHTC9nbHguaF0sIFtdLCBBQ19NU0df
RVJST1IoW0dMWCBoZWFkZXIgbm90IGZvdW5kXSkpCiAgICAgT1BFTkdMX0xJQlM9Ii1sR0wgLWxk
bCIKKworICAgIGlmIHRlc3QgIiRlbmFibGVfZWdsIiA9ICJ5ZXMiOyB0aGVuCisgICAgICAgIEFD
X0NIRUNLX0hFQURFUlMoW0VHTC9lZ2wuaF0sIFtdLCBBQ19NU0dfRVJST1IoW0VHTCBoZWFkZXIg
bm90IGZvdW5kXSkpCisgICAgICAgIE9QRU5HTF9MSUJTKz0iIC1sRUdMIgorICAgIGZpCisKIGZp
CiBBQ19TVUJTVChbT1BFTkdMX0xJQlNdKQogCkBAIC0xMzI4LDYgKzEzNDAsNyBAQCBBTV9DT05E
SVRJT05BTChbVVNFX1RFWFRVUkVfTUFQUEVSX0dMXSwgW3Rlc3QgIiR3aXRoX2FjY2VsZXJhdGVk
X2NvbXBvc2l0aW5nIiA9CiBBTV9DT05ESVRJT05BTChbVVNFX0NMVVRURVJdLCBbdGVzdCAiJHdp
dGhfYWNjZWxlcmF0ZWRfY29tcG9zaXRpbmciID0gImNsdXR0ZXIiXSkKIAogIyBUaGVzZSBhcmUg
dGhlIHNhbWUgbm93LCBidXQgdGhleSB3aWxsIHNvb24gYmUgc2VwYXJhdGUuCitBTV9DT05ESVRJ
T05BTChbVVNFX0VHTF0sIFt0ZXN0ICIkZW5hYmxlX2VnbCIgPSAieWVzIl0pCiBBTV9DT05ESVRJ
T05BTChbVVNFX0dMWF0sIFt0ZXN0ICIkd2l0aF9hY2NlbGVyYXRlZF9jb21wb3NpdGluZyIgPSAi
b3BlbmdsIiB8fCB0ZXN0ICIkZW5hYmxlX3dlYmdsIiA9ICJ5ZXMiXSkKIEFNX0NPTkRJVElPTkFM
KFtVU0VfT1BFTkdMXSwgW3Rlc3QgIiR3aXRoX2FjY2VsZXJhdGVkX2NvbXBvc2l0aW5nIiA9ICJv
cGVuZ2wiIHx8IHRlc3QgIiRlbmFibGVfd2ViZ2wiID0gInllcyJdKQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136701</attachid>
            <date>2012-04-11 10:49:37 -0700</date>
            <delta_ts>2012-09-25 03:38:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77921-20120411104936.patch</filename>
            <type>text/plain</type>
            <size>17005</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzODc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzI4NjU0NGRhYzc1MTE4
NjZhMjIzNTAwMTFhNjkxN2FlM2ZjMDNiZi4uZmMyMzhkM2NiMDFiZjJmZGRiNWJmOWJmMTkyNDA4
ZjcxZTUzZmU3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEyLTAzLTE1ICBDaGFu
Z1Nlb2sgT2ggIDxzaGl2YW1pZG93QGdtYWlsLmNvbT4gYW5kIE1hcnRpbiBSb2JpbnNvbiAgPG1y
b2JpbnNvbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIEFkZCBzdXBwb3J0IGZvciBjcmVh
dGluZyBFR0wgY29udGV4dHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTc3OTIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzLiBUaGlzIHNob3VsZG4ndCBjaGFuZ2UgYmVoYXZpb3IsIGJ1
dCBleHRlbmQKKyAgICAgICAgaXQgdG8gd29yayBvbiBvdGhlciBwbGF0Zm9ybXMuCisKKyAgICAg
ICAgKiBHTlVtYWtlZmlsZS5hbTogVXBkYXRlIHRvIHJlZmxlY3QgbmV3IG9wdGlvbnMuCisgICAg
ICAgICogR05VbWFrZWZpbGUubGlzdC5hbTogQWRkIEdMQ29udGV4dEVHTCBmaWxlcy4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HTENvbnRleHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6R0xDb250ZXh0OjpjcmVhdGVPZmZzY3JlZW5Db250ZXh0KTogRmlyc3QgdHJ5IHRvIGdl
dAorICAgICAgICB0aGUgY29udGV4dCB2aWEgRUdMIGlmIGl0J3MgZW5hYmxlZCBhdCBjb21waWxl
LXRpbWUuIFdpbGwgYmUgc21hcnQKKyAgICAgICAgZW5vdWdoIGluIHRoZSBmdXR1cmUgdG8gbW9y
ZSBpbnRlbGxpZ2VudGx5IGZhbGwgYmFjay4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9lZ2wvR0xDb250ZXh0RUdMLmNwcDogQWRkZWQuIFRoaXMKKyAgICAgICAgaXMgYW4gRUdM
IHNwZWNpZmljIGltcGxlbWVudGF0aW9uIG9mIHRoZSBhYnN0cmFjdCBHTENvbnRleHQKKyAgICAg
ICAgY2xhc3MuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vZWdsL0dMQ29udGV4
dEVHTC5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ndGsvR0xDb250ZXh0
R3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dDo6Z2V0Q29udGV4dEZvcldpZGdl
dCk6IEZpcnN0IHRyeSB0byBnZXQgdGhlIGNvbnRleHQKKyAgICAgICAgdmlhIEVHTCAoaWYgaXQn
cyBlbmFibGVkIGF0IGNvbXBpbGUtdGltZSkuIElmIHRoYXQgZmFpbHMgZmFsbCBiYWNrCisgICAg
ICAgIHRvIEdMWC4gVGhpcyB3aWxsIHNvb24gYmUgc21hcnQgZW5vdWdoIHRvIGtub3cgd2hldGhl
ciBvciBub3QgdGhlCisgICAgICAgIEVHTCBjb250ZXh0IGlzIGFjY2VsZXJhdGVkLgorCiAyMDEy
LTAzLTE1ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KIAogICAgICAg
ICBbQ0FJUk9dIE1ha2UgR0xDb250ZXh0R0xYIGEgc3ViY2xhc3Mgb2YgR0xDb250ZXh0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmFtCmluZGV4IGQzOWMwNWUxNDg3YTJhZDZmYjNhOTUwZjhhZTUyMDYwMzY3Mzk0
ZjAuLjU4ODAxMDhiMjQ4YTJhY2UwZjdmNmEzODBjMmFjYTgzMWM2MGE2YTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmFtCkBAIC0xMDgsNiArMTA4LDcgQEAgd2ViY29yZWd0a19jcHBmbGFncyArPSBcCiAJ
LUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2Fpcm8gXAogCS1JJChzcmNkaXIp
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lciBcCiAJLUkkKHNyY2Rpcikv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8gXAorCS1JJChzcmNkaXIpL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL2VnbCBcCiAJLUkkKHNyY2Rpcikv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4IFwKIAktSSQoc3JjZGlyKS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIgXAogCS1JJChzcmNkaXIpL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ayBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUu
bGlzdC5hbQppbmRleCBhYjBiZGQwYjg2MjM3MWNiZDE1ODQ2N2ExYTliZWJjODE1YmI1M2Y3Li44
YTliOGM1MWFhYzAxNDZiNTkxOTA4MDA4NGJhMmUxZTg2MjUzODlkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0KQEAgLTQ3MjUsMTEgKzQ3MjUsMTMgQEAgd2ViY29yZWd0a19zb3VyY2Vz
ICs9IFwKIAogaWYgVEFSR0VUX1gxMQogd2ViY29yZWd0a19zb3VyY2VzICs9IFwKKwlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HTENvbnRleHQuY3BwIFwKKwlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HTENvbnRleHQuaCBcCisJU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vZWdsL0dMQ29udGV4dEVHTC5jcHAgXAorCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL2VnbC9HTENvbnRleHRFR0wuaCBc
CiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dMQ29udGV4dEdMWC5jcHAg
XAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dseC9HTENvbnRleHRHTFguaCBc
CiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0dMQ29udGV4dEd0ay5jcHAg
XAotCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dMQ29udGV4dC5jcHAg
XAotCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dMQ29udGV4dC5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrV2lkZ2V0QmFja2luZ1N0b3JlWDExLmNw
cCBcCiAJU291cmNlL1dlYkNvcmUvcGx1Z2lucy9ndGsvZ3RrMnh0YmluLmMgXAogCVNvdXJjZS9X
ZWJDb3JlL3BsdWdpbnMvZ3RrL2d0azJ4dGJpbi5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dMQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HTENvbnRleHQuY3BwCmluZGV4IGM3MDMwN2U4ZWRl
MmRkZDQwOWZkNmJmZDgwYjBiYzI4ZWNhOTdhNWIuLmMyZWExMjdiYTA1YTNlYTRiMTYwOTBiNThk
MzUwNzQ1MzZjNDkxOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0dMQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vR0xDb250ZXh0LmNwcApAQCAtMjEsOSArMjEsOCBAQAogCiAjaWYgVVNFKE9Q
RU5HTCkKIAotI2lmIFVTRShHTFgpCisjaW5jbHVkZSAiR0xDb250ZXh0RUdMLmgiCiAjaW5jbHVk
ZSAiR0xDb250ZXh0R0xYLmgiCi0jZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0z
Niw5ICszNSwxOSBAQCBHTENvbnRleHQqIEdMQ29udGV4dDo6Y3JlYXRlT2Zmc2NyZWVuQ29udGV4
dChHTENvbnRleHQqIHNoYXJpbmcpCiAgICAgaWYgKHNoYXJpbmcpCiAgICAgICAgIHJldHVybiBz
aGFyaW5nLT5jcmVhdGVPZmZzY3JlZW5TaGFyaW5nQ29udGV4dCgpOwogCisgICAgR0xDb250ZXh0
KiBjb250ZXh0ID0gMDsKKworI2lmIFVTRShFR0wpCisgICAgY29udGV4dCA9IEdMQ29udGV4dEVH
TDo6Y3JlYXRlQ29udGV4dCgwLCAwKTsKKyAgICBpZiAoY29udGV4dCkKKyAgICAgICAgcmV0dXJu
IGNvbnRleHQ7CisjZW5kaWYKKwogI2lmIFVTRShHTFgpCi0gICAgcmV0dXJuIEdMQ29udGV4dEdM
WDo6Y3JlYXRlQ29udGV4dCgwLCAwKTsKKyAgICBjb250ZXh0ID0gR0xDb250ZXh0R0xYOjpjcmVh
dGVDb250ZXh0KDAsIDApOwogI2VuZGlmCisKKyAgICByZXR1cm4gY29udGV4dDsKIH0KIAogLy8g
RklYTUU6IFRoaXMgc2hvdWxkIGJlIGEgdGhyZWFkIGxvY2FsIGV2ZW50dWFsbHkgaWYgd2UKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL2VnbC9HTENv
bnRleHRFR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vZWds
L0dMQ29udGV4dEVHTC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTUyYmFlZmFmNTZjNTgxOGI5YjZlYWJiMTgw
NjVkMzM1MGVmYjczOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL2VnbC9HTENvbnRleHRFR0wuY3BwCkBAIC0wLDAgKzEsMTkxIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEyIElnYWxpYSwgUy5MLgorICoKKyAqICBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAg
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1Ymxp
YworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMw
MSAgVVNBCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdMQ29udGV4dEVH
TC5oIgorCisjaWYgVVNFKEVHTCkKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgorI2lu
Y2x1ZGUgIk9wZW5HTFNoaW1zLmgiCisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKKy8vIFdlIGRvIG5vdCB3YW50IHRvIGNhbGwgZ2xYTWFrZUNvbnRleHRD
dXJyZW50IHVzaW5nIGRpZmZlcmVudCBEaXNwbGF5IHBvaW50ZXJzLAorLy8gYmVjYXVzZSBpdCBt
aWdodCBsZWFkIHRvIGNyYXNoZXMgaW4gc29tZSBkcml2ZXJzIChmZ2xyeCkuIFdlIHVzZSBhIHNo
YXJlZCBkaXNwbGF5CisvLyBwb2ludGVyIGhlcmUuCitzdGF0aWMgRUdMRGlzcGxheSBnU2hhcmVk
RGlzcGxheSA9IEVHTF9OT19ESVNQTEFZOworc3RhdGljIEVHTERpc3BsYXkgc2hhcmVkRGlzcGxh
eSgpCit7CisgICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQgPSBmYWxzZTsKKyAgICBpZiAoIWlu
aXRpYWxpemVkKSB7CisgICAgICAgIGluaXRpYWxpemVkID0gdHJ1ZTsKKyAgICAgICAgZ1NoYXJl
ZERpc3BsYXkgPSBlZ2xHZXREaXNwbGF5KEVHTF9ERUZBVUxUX0RJU1BMQVkpOworICAgICAgICBp
ZiAoZ1NoYXJlZERpc3BsYXkgJiYgIWVnbEluaXRpYWxpemUoZ1NoYXJlZERpc3BsYXksIDAsIDAp
KQorICAgICAgICAgICAgZ1NoYXJlZERpc3BsYXkgPSBFR0xfTk9fRElTUExBWTsKKyAgICB9Cisg
ICAgcmV0dXJuIGdTaGFyZWREaXNwbGF5OworfQorCitHTENvbnRleHQqIEdMQ29udGV4dEVHTDo6
Y3JlYXRlT2Zmc2NyZWVuU2hhcmluZ0NvbnRleHQoKQoreworICAgIHJldHVybiBjcmVhdGVDb250
ZXh0KDAsIG1fY29udGV4dCk7Cit9CisKK3N0YXRpYyBib29sIGdldEVHTENvbmZpZyhFR0xDb25m
aWcqIGNvbmZpZywgR0xDb250ZXh0RUdMOjpFR0xTdXJmYWNlVHlwZSBzdXJmYWNlVHlwZSkKK3sK
KyAgICAvLyBUT0RPOiBXZSBhc3N1bWUgdGhhdCB3ZSdyZSBjcmVhdGluZyBhbiBPcGVuR0xFUzIg
Y29udGV4dCBmb3Igbm93LAorICAgIC8vIGJ1dCBsYXRlciBpdCB3b3VsZCBiZSBiZXR0ZXIgdG8g
ZG8gc29tZXRoaW5nIHNtYXJ0ZXIgaGVyZS4KKyAgICBFR0xpbnQgYXR0cmlidXRlTGlzdFtdID0g
eworICAgICAgICBFR0xfUkVOREVSQUJMRV9UWVBFLCBFR0xfT1BFTkdMX0VTMl9CSVQsCisgICAg
ICAgIEVHTF9SRURfU0laRSwgOCwKKyAgICAgICAgRUdMX0dSRUVOX1NJWkUsIDgsCisgICAgICAg
IEVHTF9CTFVFX1NJWkUsIDgsCisgICAgICAgIEVHTF9TVEVOQ0lMX1NJWkUsIDgsCisgICAgICAg
IEVHTF9BTFBIQV9TSVpFLCA4LAorICAgICAgICBFR0xfTk9ORSwgRUdMX05PTkUsCisgICAgICAg
IEVHTF9OT05FCisgICAgfTsKKworICAgIGlmIChzdXJmYWNlVHlwZSA9PSBHTENvbnRleHRFR0w6
OlBidWZmZXJTdXJmYWNlKSB7CisgICAgICAgIGF0dHJpYnV0ZUxpc3RbMTBdID0gRUdMX1NVUkZB
Q0VfVFlQRTsKKyAgICAgICAgYXR0cmlidXRlTGlzdFsxMV0gPSBFR0xfUEJVRkZFUl9CSVQ7Cisg
ICAgfQorCisgICAgRUdMaW50IG51bWJlckNvbmZpZ3NSZXR1cm5lZDsKKyAgICByZXR1cm4gZWds
Q2hvb3NlQ29uZmlnKHNoYXJlZERpc3BsYXkoKSwgYXR0cmlidXRlTGlzdCwgY29uZmlnLCAxLCAm
bnVtYmVyQ29uZmlnc1JldHVybmVkKSAmJiBudW1iZXJDb25maWdzUmV0dXJuZWQ7Cit9CisKK0dM
Q29udGV4dEVHTCogR0xDb250ZXh0RUdMOjpjcmVhdGVXaW5kb3dDb250ZXh0KE5hdGl2ZVdpbmRv
d1R5cGUgd2luZG93LCBFR0xDb250ZXh0IHNoYXJpbmdDb250ZXh0KQoreworICAgIEVHTERpc3Bs
YXkgZGlzcGxheSA9IHNoYXJlZERpc3BsYXkoKTsKKyAgICBpZiAoIWRpc3BsYXkpCisgICAgICAg
IHJldHVybiAwOworCisgICAgRUdMQ29uZmlnIGNvbmZpZzsKKyAgICBpZiAoIWdldEVHTENvbmZp
ZygmY29uZmlnLCBXaW5kb3dTdXJmYWNlKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBFR0xD
b250ZXh0IGNvbnRleHQgPSBlZ2xDcmVhdGVDb250ZXh0KGRpc3BsYXksIGNvbmZpZywgc2hhcmlu
Z0NvbnRleHQsIDApOworICAgIGlmICghY29udGV4dCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAg
ICBFR0xTdXJmYWNlIHN1cmZhY2UgPSBlZ2xDcmVhdGVXaW5kb3dTdXJmYWNlKGRpc3BsYXksIGNv
bmZpZywgd2luZG93LCAwKTsKKyAgICBpZiAoIXN1cmZhY2UpIHsKKyAgICAgICAgZWdsRGVzdHJv
eUNvbnRleHQoZGlzcGxheSwgY29udGV4dCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKwor
ICAgIHJldHVybiBuZXcgR0xDb250ZXh0RUdMKGNvbnRleHQsIHN1cmZhY2UsIFdpbmRvd1N1cmZh
Y2UpOworfQorCitHTENvbnRleHRFR0wqIEdMQ29udGV4dEVHTDo6Y3JlYXRlUGJ1ZmZlckNvbnRl
eHQoRUdMQ29udGV4dCBzaGFyaW5nQ29udGV4dCkKK3sKKyAgICBFR0xEaXNwbGF5IGRpc3BsYXkg
PSBzaGFyZWREaXNwbGF5KCk7CisgICAgaWYgKCFkaXNwbGF5KQorICAgICAgICByZXR1cm4gMDsK
KworICAgIEVHTENvbmZpZyBjb25maWc7CisgICAgaWYgKCFnZXRFR0xDb25maWcoJmNvbmZpZywg
V2luZG93U3VyZmFjZSkpCisgICAgICAgIHJldHVybiAwOworCisgICAgRUdMQ29udGV4dCBjb250
ZXh0ID0gZWdsQ3JlYXRlQ29udGV4dChkaXNwbGF5LCBjb25maWcsIHNoYXJpbmdDb250ZXh0LCAw
KTsKKyAgICBpZiAoIWNvbnRleHQpCisgICAgICAgIHJldHVybiAwOworCisgICAgLy8gV2Ugd2ls
bCBiZSByZW5kZXJpbmcgdG8gYSB0ZXh0dXJlLCBzbyBvdXIgcGJ1ZmZlciBkb2VzIG5vdCBuZWVk
IHRvIGJlIGxhcmdlLgorICAgIHN0YXRpYyBjb25zdCBpbnQgcGJ1ZmZlckF0dHJpYnV0ZXNbXSA9
IHsgRUdMX1dJRFRILCAxLCBFR0xfSEVJR0hULCAxLCBFR0xfTk9ORSB9OworICAgIEVHTFN1cmZh
Y2Ugc3VyZmFjZSA9IGVnbENyZWF0ZVBidWZmZXJTdXJmYWNlKGRpc3BsYXksIGNvbmZpZywgcGJ1
ZmZlckF0dHJpYnV0ZXMpOworICAgIGlmIChzdXJmYWNlID09IEVHTF9OT19TVVJGQUNFKSB7Cisg
ICAgICAgIGVnbERlc3Ryb3lDb250ZXh0KGRpc3BsYXksIGNvbnRleHQpOworICAgICAgICByZXR1
cm4gMDsKKyAgICB9CisKKyAgICByZXR1cm4gbmV3IEdMQ29udGV4dEVHTChjb250ZXh0LCBzdXJm
YWNlLCBQYnVmZmVyU3VyZmFjZSk7Cit9CisKK0dMQ29udGV4dEVHTCogR0xDb250ZXh0RUdMOjpj
cmVhdGVDb250ZXh0KE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93LCBFR0xDb250ZXh0IHNoYXJpbmdD
b250ZXh0KQoreworICAgIGlmICghc2hhcmVkRGlzcGxheSgpKQorICAgICAgICByZXR1cm4gMDsK
KworICAgIHN0YXRpYyBib29sIGluaXRpYWxpemVkID0gZmFsc2U7CisgICAgc3RhdGljIGJvb2wg
c3VjY2VzcyA9IHRydWU7CisgICAgaWYgKCFpbml0aWFsaXplZCkgeworICAgICAgICBzdWNjZXNz
ID0gaW5pdGlhbGl6ZU9wZW5HTFNoaW1zKCk7CisgICAgICAgIGluaXRpYWxpemVkID0gdHJ1ZTsK
KyAgICB9CisgICAgaWYgKCFzdWNjZXNzKQorICAgICAgICByZXR1cm4gMDsKKworICAgIEdMQ29u
dGV4dEVHTCogY29udGV4dCA9IHdpbmRvdyA/IGNyZWF0ZVdpbmRvd0NvbnRleHQod2luZG93LCBz
aGFyaW5nQ29udGV4dCkgOiAwOworICAgIGlmICghY29udGV4dCkKKyAgICAgICAgY29udGV4dCA9
IGNyZWF0ZVBidWZmZXJDb250ZXh0KHNoYXJpbmdDb250ZXh0KTsKKyAgICByZXR1cm4gY29udGV4
dDsKK30KKworR0xDb250ZXh0RUdMOjpHTENvbnRleHRFR0woRUdMQ29udGV4dCBjb250ZXh0LCBF
R0xTdXJmYWNlIHN1cmZhY2UsIEVHTFN1cmZhY2VUeXBlIHR5cGUpCisgICAgOiBtX2NvbnRleHQo
Y29udGV4dCkKKyAgICAsIG1fc3VyZmFjZShzdXJmYWNlKQorICAgICwgbV90eXBlKHR5cGUpCit7
Cit9CisKK0dMQ29udGV4dEVHTDo6fkdMQ29udGV4dEVHTCgpCit7CisgICAgRUdMRGlzcGxheSBk
aXNwbGF5ID0gc2hhcmVkRGlzcGxheSgpOworICAgIGlmIChtX2NvbnRleHQpIHsKKyAgICAgICAg
Z2xCaW5kRnJhbWVidWZmZXJFWFQoR0xfRlJBTUVCVUZGRVJfRVhULCAwKTsKKyAgICAgICAgZWds
TWFrZUN1cnJlbnQoZGlzcGxheSwgRUdMX05PX1NVUkZBQ0UsIEVHTF9OT19TVVJGQUNFLCBFR0xf
Tk9fQ09OVEVYVCk7CisgICAgICAgIGVnbERlc3Ryb3lDb250ZXh0KGRpc3BsYXksIG1fY29udGV4
dCk7CisgICAgfQorCisgICAgaWYgKG1fc3VyZmFjZSkKKyAgICAgICAgZWdsRGVzdHJveVN1cmZh
Y2UoZGlzcGxheSwgbV9zdXJmYWNlKTsKK30KKworYm9vbCBHTENvbnRleHRFR0w6OmNhblJlbmRl
clRvRGVmYXVsdEZyYW1lYnVmZmVyKCkKK3sKKyAgICByZXR1cm4gbV90eXBlID09IFdpbmRvd1N1
cmZhY2U7Cit9CisKK2Jvb2wgR0xDb250ZXh0RUdMOjptYWtlQ29udGV4dEN1cnJlbnQoKQorewor
ICAgIEFTU0VSVChtX2NvbnRleHQgJiYgbV9zdXJmYWNlKTsKKworICAgIEdMQ29udGV4dDo6bWFr
ZUNvbnRleHRDdXJyZW50KCk7CisgICAgaWYgKGVnbEdldEN1cnJlbnRDb250ZXh0KCkgPT0gbV9j
b250ZXh0KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gZWdsTWFrZUN1cnJlbnQo
c2hhcmVkRGlzcGxheSgpLCBtX3N1cmZhY2UsIG1fc3VyZmFjZSwgbV9jb250ZXh0KTsKK30KKwor
dm9pZCBHTENvbnRleHRFR0w6OnN3YXBCdWZmZXJzKCkKK3sKKyAgICBlZ2xTd2FwQnVmZmVycyhz
aGFyZWREaXNwbGF5KCksIG1fc3VyZmFjZSk7Cit9CisKKyNpZiBFTkFCTEUoV0VCR0wpCitQbGF0
Zm9ybUdyYXBoaWNzQ29udGV4dDNEIEdMQ29udGV4dEVHTDo6cGxhdGZvcm1Db250ZXh0KCkKK3sK
KyAgICByZXR1cm4gbV9jb250ZXh0OworfQorI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkgfHwgJiYgVVNFKFRFWFRVUkVfTUFQUEVSX0dM
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vZWds
L0dMQ29udGV4dEVHTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
ZWdsL0dMQ29udGV4dEVHTC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFiODhhYTI2NjQxNWM0Mzc4NDRjMjI2NTUz
MDQzZjBiODY1M2ZmMzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9lZ2wvR0xDb250ZXh0RUdMLmgKQEAgLTAsMCArMSw2MSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBJZ2FsaWEgUy5MLgorICoKKyAqICBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwor
ICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQorICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
CisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNz
ZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBp
ZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCisgKiAgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqICBCb3N0b24sIE1BIDAyMTEwLTEz
MDEgVVNBCisgKi8KKworI2lmbmRlZiBHTENvbnRleHRFR0xfaAorI2RlZmluZSBHTENvbnRleHRF
R0xfaAorCisjaWYgVVNFKEVHTCkKKworI2luY2x1ZGUgIkdMQ29udGV4dC5oIgorI2luY2x1ZGUg
PEVHTC9lZ2wuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBHTENvbnRleHRFR0wg
OiBwdWJsaWMgR0xDb250ZXh0IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShHTENvbnRleHRF
R0wpOworcHVibGljOgorICAgIGVudW0gRUdMU3VyZmFjZVR5cGUgeyBQYnVmZmVyU3VyZmFjZSwg
V2luZG93U3VyZmFjZSB9OworCisgICAgc3RhdGljIEdMQ29udGV4dEVHTCogY3JlYXRlQ29udGV4
dChOYXRpdmVXaW5kb3dUeXBlLCBFR0xDb250ZXh0IHNoYXJpbmdDb250ZXh0ID0gMCk7CisgICAg
c3RhdGljIEdMQ29udGV4dEVHTCogY3JlYXRlV2luZG93Q29udGV4dChOYXRpdmVXaW5kb3dUeXBl
LCBFR0xDb250ZXh0IHNoYXJpbmdDb250ZXh0KTsKKyAgICBzdGF0aWMgR0xDb250ZXh0RUdMKiBj
cmVhdGVQYnVmZmVyQ29udGV4dChFR0xDb250ZXh0IHNoYXJpbmdDb250ZXh0KTsKKworICAgIHZp
cnR1YWwgfkdMQ29udGV4dEVHTCgpOworICAgIHZpcnR1YWwgR0xDb250ZXh0KiBjcmVhdGVPZmZz
Y3JlZW5TaGFyaW5nQ29udGV4dCgpOworICAgIHZpcnR1YWwgYm9vbCBtYWtlQ29udGV4dEN1cnJl
bnQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3dhcEJ1ZmZlcnMoKTsKKyAgICB2aXJ0dWFsIGJvb2wg
Y2FuUmVuZGVyVG9EZWZhdWx0RnJhbWVidWZmZXIoKTsKKworI2lmIEVOQUJMRShXRUJHTCkKKyAg
ICB2aXJ0dWFsIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QgcGxhdGZvcm1Db250ZXh0KCk7Cisj
ZW5kaWYKKworcHJpdmF0ZToKKyAgICBHTENvbnRleHRFR0woRUdMQ29udGV4dCwgRUdMU3VyZmFj
ZSwgRUdMU3VyZmFjZVR5cGUpOworCisgICAgRUdMQ29udGV4dCBtX2NvbnRleHQ7CisgICAgRUdM
U3VyZmFjZSBtX3N1cmZhY2U7CisgICAgRUdMU3VyZmFjZVR5cGUgbV90eXBlOworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVVNFKEVHTCkKKworI2VuZGlmIC8vIEdM
Q29udGV4dEVHTF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ndGsvR0xDb250ZXh0R3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2d0ay9HTENvbnRleHRHdGsuY3BwCmluZGV4IGQ0NjBkMTJjMDIxMWMzYjFlOTZlYjE2YjgyMTM1
MTYxOGU5Y2U2NTIuLjkyZDEwMGY5ZTZkNWY2YWUyMDNjZWZjNGYyY2M0ZjI1ODQ4OGRhZjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9HTENvbnRleHRH
dGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9HTENvbnRl
eHRHdGsuY3BwCkBAIC0xOSw2ICsxOSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiR0xDb250ZXh0LmgiCiAKKyNpbmNsdWRlICJHTENvbnRleHRFR0wuaCIKICNpbmNsdWRlICJH
TENvbnRleHRHTFguaCIKICNpbmNsdWRlIDxnZGsvZ2RrLmg+CiAjaW5jbHVkZSA8Z2RrL2dka3gu
aD4KQEAgLTU3LDEyICs1OCwyMiBAQCBHTENvbnRleHQqIEdMQ29udGV4dDo6Z2V0Q29udGV4dEZv
cldpZGdldChHdGtXaWRnZXQqIHdpZGdldCkKIAogICAgIEdMQ29udGV4dCogY29udGV4dCA9IDA7
CiAKLSNpZiBVU0UoR0xYKQogICAgIC8vIElmIHRoaXMgR0RLIHdpbmRvdyBkb2Vzbid0IGhhdmUg
aXRzIG93biBuYXRpdmUgd2luZG93IHRoZW4sIHdlIGRvbid0IHdhbnQKICAgICAvLyB0byB1c2Ug
aXQgZm9yIHJlbmRlcmluZywgc2luY2Ugd2UnbGwgYmUgZHJhd2luZyBvdmVyIHNvbWUgb3RoZXIg
d2lkZ2V0J3MgYXJlYS4KICAgICBHZGtXaW5kb3cqIGdka1dpbmRvdyA9IGd0a193aWRnZXRfZ2V0
X3dpbmRvdyh3aWRnZXQpOwotICAgIGNvbnRleHQgPSBnZGtXaW5kb3cgJiYgZ2RrX3dpbmRvd19o
YXNfbmF0aXZlKGdka1dpbmRvdykgPyAgR0xDb250ZXh0R0xYOjpjcmVhdGVDb250ZXh0KEdES19X
SU5ET1dfWElEKGdka1dpbmRvdykpIDogR0xDb250ZXh0R0xYOjpjcmVhdGVDb250ZXh0KDApOwor
ICAgIGlmICghZ2RrV2luZG93IHx8ICFnZGtfd2luZG93X2hhc19uYXRpdmUoZ2RrV2luZG93KSkK
KyAgICAgICAgY29udGV4dCA9IEdMQ29udGV4dDo6Y3JlYXRlT2Zmc2NyZWVuQ29udGV4dCgwKTsK
KyAgICBlbHNlIHsKKworI2lmIFVTRShFR0wpCisgICAgICAgIGNvbnRleHQgPSAgR0xDb250ZXh0
RUdMOjpjcmVhdGVDb250ZXh0KEdES19XSU5ET1dfWElEKGdka1dpbmRvdykpOworI2VuZGlmCisK
KyNpZiBVU0UoR0xYKQorICAgICAgICBpZiAoIWNvbnRleHQpCisgICAgICAgICAgICBjb250ZXh0
ID0gIEdMQ29udGV4dEdMWDo6Y3JlYXRlQ29udGV4dChHREtfV0lORE9XX1hJRChnZGtXaW5kb3cp
KTsKICNlbmRpZgorICAgIH0KIAogICAgIGlmICghY29udGV4dCkKICAgICAgICAgcmV0dXJuIDA7
CmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggNjFkMmYzNDM5NTk1ODlh
MGY0MGZlYmM0OTA3OTY2NTZlZTQ2ZTk3MC4uNGQ5YjliZjM4MzQxOTg4YjYyNTA4NGNlYWI0YWZj
NWM4YTA1NzliMiAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSw1
ICsxLDE4IEBACiAyMDEyLTAzLTE1ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlh
LmNvbT4KIAorICAgICAgICBbR1RLXSBBZGQgc3VwcG9ydCBmb3IgY3JlYXRpbmcgRUdMIGNvbnRl
eHRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Nzky
MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVk
IGEgLS1lbmFibGUtZWdsIG9wdGlvbiwgd2hpY2ggaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9uCisg
ICAgICAgIEFSTSBzeXN0ZW1zLgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06IEFkZCBhbiAt
LWVuYWJsZS1lZ2wgb3B0aW9uLiBFbmFibGUgaXQgYnkgZGVmYXVsdCBvbiBBUk0uCisgICAgICAg
ICogY29uZmlndXJlLmFjOiBEaXR0by4KKworMjAxMi0wMy0xNSAgTWFydGluIFJvYmluc29uICA8
bXJvYmluc29uQGlnYWxpYS5jb20+CisKICAgICAgICAgW0NBSVJPXSBNYWtlIEdMQ29udGV4dEdM
WCBhIHN1YmNsYXNzIG9mIEdMQ29udGV4dAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODEyODUKIApkaWZmIC0tZ2l0IGEvR05VbWFrZWZpbGUuYW0gYi9H
TlVtYWtlZmlsZS5hbQppbmRleCA2NWU3Yzg1OWNjYmYyN2E0NmEwNjE4NGI1ZWYzMzQ0ODA2ZWMw
NzQ0Li5lNDUwM2JhM2NjNzdjZDQzNzUyNzczMzdlZThlZjQ5YTRlOTliN2MyIDEwMDY0NAotLS0g
YS9HTlVtYWtlZmlsZS5hbQorKysgYi9HTlVtYWtlZmlsZS5hbQpAQCAtMjA5LDYgKzIwOSwxMSBA
QCBnbG9iYWxfY3BwZmxhZ3MgKz0gXAogCS1EV1RGX1VTRV9HTFg9MQogZW5kaWYKIAoraWYgVVNF
X0VHTAorZ2xvYmFsX2NwcGZsYWdzICs9IFwKKwktRFdURl9VU0VfRUdMPTEKK2VuZGlmCisKIGlm
IFVTRV9PUEVOR0wKIGdsb2JhbF9jcHBmbGFncyArPSBcCiAJLURXVEZfVVNFX09QRU5HTD0xCmRp
ZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKaW5kZXggN2IzNjVmMDI2MDEz
MjJhYzBhNDI3MTZkOTQyM2U0OWFkNGQ2ZGUyMS4uNTQ5NGU5NDUyMjVkMmM3MTZiM2UxZmI2ZjFl
MjAwNzdmYjExMzk4NiAxMDA2NDQKLS0tIGEvY29uZmlndXJlLmFjCisrKyBiL2NvbmZpZ3VyZS5h
YwpAQCAtNTQ3LDYgKzU0NywxMiBAQCBBQ19BUkdfV0lUSChhY2NlbGVyYXRlZF9jb21wb3NpdGlu
ZywKICAgICAgICAgICAgIFtdLCBbd2l0aF9hY2NlbGVyYXRlZF9jb21wb3NpdGluZz0ibm8iXSkK
IEFDX01TR19SRVNVTFQoWyR3aXRoX2FjY2VsZXJhdGVkX2NvbXBvc2l0aW5nXSkKIAorQUNfTVNH
X0NIRUNLSU5HKFt3aGV0aGVyIHRvIGVuYWJsZSBFR0wgc3VwcG9ydF0pCitBQ19BUkdfRU5BQkxF
KGVnbCwKKyAgICAgICAgICAgICAgQUNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLWVnbF0sIFtlbmFi
bGUgc3VwcG9ydCBmb3IgRUdMIFtkZWZhdWx0PW5vXV0pLAorICAgICAgICAgICAgICBbXSwgW2lm
IHRlc3QgIiRidWlsZF9jcHUiID0gImFybSI7IHRoZW4gZW5hYmxlX2VnbD0ieWVzIjsgZWxzZSBl
bmFibGVfZWdsPSJubyI7IGZpXSkKK0FDX01TR19SRVNVTFQoWyRlbmFibGVfZWdsXSkKKwogaWYg
dGVzdCAiJGVuYWJsZV93ZWJnbCIgPSAieWVzIiB8fCAgdGVzdCAiJHdpdGhfYWNjZWxlcmF0ZWRf
Y29tcG9zaXRpbmciID0gIm9wZW5nbCIgOyB0aGVuCiAgICAgaWYgdGVzdCAiJHdpdGhfdGFyZ2V0
IiAhPSAieDExIjsgdGhlbgogICAgICAgICBBQ19NU0dfRVJST1IoW09wZW5HTCBzdXBwb3J0IGlz
IG9ubHkgYXZhaWxhYmxlIG9uIFgxMSBjdXJyZW50bHkuXSkKQEAgLTU1NCw2ICs1NjAsMTIgQEAg
aWYgdGVzdCAiJGVuYWJsZV93ZWJnbCIgPSAieWVzIiB8fCAgdGVzdCAiJHdpdGhfYWNjZWxlcmF0
ZWRfY29tcG9zaXRpbmciID0gIm9wZW4KICAgICBBQ19DSEVDS19IRUFERVJTKFtHTC9nbC5oXSwg
W10sIEFDX01TR19FUlJPUihbT3BlbkdMIGhlYWRlciBub3QgZm91bmRdKSkKICAgICBBQ19DSEVD
S19IRUFERVJTKFtHTC9nbHguaF0sIFtdLCBBQ19NU0dfRVJST1IoW0dMWCBoZWFkZXIgbm90IGZv
dW5kXSkpCiAgICAgT1BFTkdMX0xJQlM9Ii1sR0wgLWxkbCIKKworICAgIGlmIHRlc3QgIiRlbmFi
bGVfZWdsIiA9ICJ5ZXMiOyB0aGVuCisgICAgICAgIEFDX0NIRUNLX0hFQURFUlMoW0VHTC9lZ2wu
aF0sIFtdLCBBQ19NU0dfRVJST1IoW0VHTCBoZWFkZXIgbm90IGZvdW5kXSkpCisgICAgICAgIE9Q
RU5HTF9MSUJTKz0iIC1sRUdMIgorICAgIGZpCisKIGZpCiBBQ19TVUJTVChbT1BFTkdMX0xJQlNd
KQogCkBAIC0xMzI4LDYgKzEzNDAsNyBAQCBBTV9DT05ESVRJT05BTChbVVNFX1RFWFRVUkVfTUFQ
UEVSX0dMXSwgW3Rlc3QgIiR3aXRoX2FjY2VsZXJhdGVkX2NvbXBvc2l0aW5nIiA9CiBBTV9DT05E
SVRJT05BTChbVVNFX0NMVVRURVJdLCBbdGVzdCAiJHdpdGhfYWNjZWxlcmF0ZWRfY29tcG9zaXRp
bmciID0gImNsdXR0ZXIiXSkKIAogIyBUaGVzZSBhcmUgdGhlIHNhbWUgbm93LCBidXQgdGhleSB3
aWxsIHNvb24gYmUgc2VwYXJhdGUuCitBTV9DT05ESVRJT05BTChbVVNFX0VHTF0sIFt0ZXN0ICIk
ZW5hYmxlX2VnbCIgPSAieWVzIl0pCiBBTV9DT05ESVRJT05BTChbVVNFX0dMWF0sIFt0ZXN0ICIk
d2l0aF9hY2NlbGVyYXRlZF9jb21wb3NpdGluZyIgPSAib3BlbmdsIiB8fCB0ZXN0ICIkZW5hYmxl
X3dlYmdsIiA9ICJ5ZXMiXSkKIEFNX0NPTkRJVElPTkFMKFtVU0VfT1BFTkdMXSwgW3Rlc3QgIiR3
aXRoX2FjY2VsZXJhdGVkX2NvbXBvc2l0aW5nIiA9ICJvcGVuZ2wiIHx8IHRlc3QgIiRlbmFibGVf
d2ViZ2wiID0gInllcyJdKQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161993</attachid>
            <date>2012-09-04 02:25:44 -0700</date>
            <delta_ts>2012-09-25 03:38:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77921-20120904112527.patch</filename>
            <type>text/plain</type>
            <size>43828</size>
            <attacher name="José Dapena Paz">jdapena</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3NDQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjVmNGRiYTQ4NDE2YjJh
MDdiYmQ5N2Q4YWZjNzM3M2JmNGMzN2Y3My4uY2MxZjMwZGYyNzgwZGYwMjljZGY2MTYzN2JhNWE2
ZTVjMmFjYWI4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgxIEBACisyMDEyLTA5LTA0ICBKb3PD
qSBEYXBlbmEgUGF6ICA8amRhcGVuYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIEFkZCBz
dXBwb3J0IGZvciBjcmVhdGluZyBFR0wgY29udGV4dHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3OTIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIEVHTCwg
dXNpbmcgT3BlbkdMIGFuZCBPcGVuR0wgRVMgMi4gQm90aAorICAgICAgICBvcHRpb25zIGFyZSBz
ZXQgdXAgb24gY29tcGlsZSB0aW1lLCB3aXRoIHRoZSBjb25maWd1cmUgb3B0aW9ucworICAgICAg
ICAtLWVuYWJsZS1lZ2wgYW5kIC0tZW5hYmxlLWdsZXMyLgorCisgICAgICAgIFRoZSBpbXBsZW1l
bnRhdGlvbiBvbmx5IGFkZHMgc3VwcG9ydCBmb3IgRUdMIG9uIHRvcCBvZiBYMTEsIHRvCisgICAg
ICAgIGlzb2xhdGUgdGhlIGNoYW5nZXMgdG8gdGhlIG1pbmltdW0uIE1vcmUgY2hhbmdlcyBzaG91
bGQgY29tZQorICAgICAgICBsYXRlciB0byBlbmFibGUgRUdMIGZvciBvdGhlciB0YXJnZXRzIChh
cyBXYXlsYW5kKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgcmVxdWlyZWQsIGFzIGV4aXN0aW5n
IFdlYkdMIGFuZCBBQyB0ZXN0cyBzaG91bGQgY292ZXIKKyAgICAgICAgdGhlIGNhc2VzLgorCisg
ICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oOgorICAgICAg
ICAoR3JhcGhpY3NDb250ZXh0M0QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL09wZW5H
TEVTU2hpbXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HTENvbnRleHQu
Y3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHQ6OnNo
YXJlZERpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0OjpjbGVhbnVwU2hhcmVk
RGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHQ6OmNyZWF0ZUNvbnRleHRGb3JX
aW5kb3cpOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0OjpjcmVhdGVPZmZzY3JlZW5Db250
ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HTENvbnRleHQuaDoKKyAg
ICAgICAgKEdMQ29udGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3Jh
cGhpY3NDb250ZXh0M0RDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpHcmFw
aGljc0NvbnRleHQzRCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNEOjppc0dMRVMyQ29tcGxpYW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpwYWludFRvVGV4dHVyZU1hcHBlcik6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpzaGFyZWRFR0xEaXNwbGF5KToK
KyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6Y2xlYW51cFNoYXJlZERpc3BsYXkpOgor
ICAgICAgICAoV2ViQ29yZTo6YWN0aXZlQ29udGV4dExpc3QpOgorICAgICAgICAoV2ViQ29yZTo6
R0xDb250ZXh0RUdMOjphZGRBY3RpdmVDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29u
dGV4dEVHTDo6cmVtb3ZlQWN0aXZlQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRl
eHRFR0w6OmNsZWFudXBBY3RpdmVDb250ZXh0c0F0RXhpdCk6CisgICAgICAgIChXZWJDb3JlOjpn
ZXRFR0xDb25maWcpOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0RUdMOjpjcmVhdGVXaW5k
b3dDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6Y3JlYXRlUGJ1ZmZl
ckNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0RUdMOjpjcmVhdGVQaXhtYXBD
b250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6Y3JlYXRlQ29udGV4dCk6
CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0w6OkdMQ29udGV4dEVHTCk6CisgICAgICAg
IChXZWJDb3JlOjpHTENvbnRleHRFR0w6On5HTENvbnRleHRFR0wpOgorICAgICAgICAoV2ViQ29y
ZTo6R0xDb250ZXh0RUdMOjpjYW5SZW5kZXJUb0RlZmF1bHRGcmFtZWJ1ZmZlcik6CisgICAgICAg
IChXZWJDb3JlOjpHTENvbnRleHRFR0w6OmRlZmF1bHRGcmFtZUJ1ZmZlclNpemUpOgorICAgICAg
ICAoV2ViQ29yZTo6R0xDb250ZXh0RUdMOjptYWtlQ29udGV4dEN1cnJlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6R0xDb250ZXh0RUdMOjpzd2FwQnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpH
TENvbnRleHRFR0w6OndhaXROYXRpdmUpOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0RUdM
OjpwbGF0Zm9ybUNvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENv
bnRleHRFR0wuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z2x4L0dMQ29udGV4dEdMWC5oLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChHTENvbnRl
eHRFR0wpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dseC9HTENvbnRleHRHTFguY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0R0xYOjpjbGVhbnVwQWN0aXZlQ29udGV4dHNB
dEV4aXQpOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0R0xYOjp3YWl0TmF0aXZlKToKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dseC9HTENvbnRl
eHRHTFguaDoKKyAgICAgICAgKEdMQ29udGV4dEdMWCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMRVMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnJlc2hhcGVGQk9zKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2d0
ay9SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWRp
cmVjdGVkWENvbXBvc2l0ZVdpbmRvdzo6UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6On5SZWRpcmVjdGVkWENv
bXBvc2l0ZVdpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjpSZWRpcmVjdGVkWENvbXBvc2l0ZVdp
bmRvdzo6cmVzaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvUmVkaXJlY3RlZFhDb21wb3Np
dGVXaW5kb3cuaDoKKwogMjAxMi0wOS0wNCAgQWxleGFuZGVyIFBhdmxvdiAgPGFwYXZsb3ZAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IE1vcmUgZGlyZWN0aW9uYWwgY29u
dHJvbCBjaGFyYWN0ZXJzIGZvciBkZWJ1Z2dpbmcgaW4gaW5zcGVjdG9yCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXgg
MmUzM2NiOGJmMWRjZWUwMjYxMDNkMTM5M2E2ZDk0MmE5NjBkYmJhMS4uZTQ5NzhjYmUzOTAzNTk0
MjM5OWVkMDkzNzBkNThkOGQ4MWU1YTk1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisy
MDEyLTA5LTA0ICBKb3PDqSBEYXBlbmEgUGF6ICA8amRhcGVuYUBpZ2FsaWEuY29tPgorCisgICAg
ICAgIFtHVEtdIEFkZCBzdXBwb3J0IGZvciBjcmVhdGluZyBFR0wgY29udGV4dHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3OTIxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIHN1
cHBvcnQgZm9yIEVHTCwgdXNpbmcgT3BlbkdMIGFuZCBPcGVuR0wgRVMgMi4gQm90aAorICAgICAg
ICBvcHRpb25zIGFyZSBzZXQgdXAgb24gY29tcGlsZSB0aW1lLCB3aXRoIHRoZSBjb25maWd1cmUg
b3B0aW9ucworICAgICAgICAtLWVuYWJsZS1lZ2wgYW5kIC0tZW5hYmxlLWdsZXMyLgorCisgICAg
ICAgIFRoZSBpbXBsZW1lbnRhdGlvbiBvbmx5IGFkZHMgc3VwcG9ydCBmb3IgRUdMIG9uIHRvcCBv
ZiBYMTEsIHRvCisgICAgICAgIGlzb2xhdGUgdGhlIGNoYW5nZXMgdG8gdGhlIG1pbmltdW0uIE1v
cmUgY2hhbmdlcyBzaG91bGQgY29tZQorICAgICAgICBsYXRlciB0byBlbmFibGUgRUdMIGZvciBv
dGhlciB0YXJnZXRzIChhcyBXYXlsYW5kKS4KKworICAgICAgICBbR1RLXSBBZGQgc3VwcG9ydCBm
b3IgY3JlYXRpbmcgRUdMIGNvbnRleHRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD03NzkyMQorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2d0
ay9MYXllclRyZWVIb3N0R3RrLmNwcDoKKwogMjAxMi0wOS0wNCAgUnl1YW4gQ2hvaSAgPHJ5dWFu
LmNob2lAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0VGTF0gRHJvcCBkZWZhdWx0IHRoZW1lIGNv
bmNlcHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggMzIxZDUwMDFiOTBmYWI3ZjU0ZDM1ZjkxYzk3
ZGE1M2E0MTc1YWVlYy4uMmNlNTI1MzZhY2I3NTk3MTA4ZjI3M2FkNDdjMWM4NzFhYWY1MzZlYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTExMyw2ICsxMTMsNyBAQCB3ZWJjb3JlZ3RrX2NwcGZs
YWdzICs9IFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW9jbHVlIFwK
IAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlybyBcCiAJ
LUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4IFwKKwktSSQo
c3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wgXAogCS1JJChzcmNk
aXIpL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lciBcCiAJLUkkKHNy
Y2RpcikvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrIFwKIAktSSQoc3JjZGly
KS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0KaW5kZXggYjcxOGJiMGQwMTUzNzI4YzY3ZmRmMTFiYjBjODgzNDEwOTFiZmFlYi4uM2FhMzNi
MjhiY2E4ZDU1NWY1ZmJlYTA5NmRlMDI5OTgzZmYwMDUwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtCkBAIC00Mzk1LDE0ICs0Mzk1LDkgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAgXAogCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmggXAogCVNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oIFwKLQlTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uczNET3BlbkdMLmNwcCBcCi0J
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5H
TC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9u
czNET3BlbkdMQ29tbW9uLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5HTENvbW1vbi5oIFwKLQlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVu
R0xDb21tb24uY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9PcGVuR0xT
aGltcy5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL09wZW5HTFNoaW1z
LmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBl
VmVydGljYWxEYXRhLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGgu
Y3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmggXApAQCAtNTkx
OCw4ICs1OTEzLDYgQEAgd2ViY29yZWd0a19zb3VyY2VzICs9IFwKIAogaWYgVEFSR0VUX1gxMQog
d2ViY29yZWd0a19zb3VyY2VzICs9IFwKLQlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nbHgvR0xDb250ZXh0R0xYLmNwcCBcCi0JU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ2x4L0dMQ29udGV4dEdMWC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9HTENvbnRleHQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9HTENvbnRleHQuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1dp
ZGdldEJhY2tpbmdTdG9yZVgxMS5jcHAgXApAQCAtNTkzMCw2ICs1OTIzLDE2IEBAIHdlYmNvcmVn
dGtfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGx1Z2lucy9ndGsvUGx1Z2luUGFja2Fn
ZUd0ay5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsdWdpbnMvZ3RrL1BsdWdpblZpZXdHdGsuY3Bw
IFwKIAlTb3VyY2UvV2ViQ29yZS9wbHVnaW5zL2d0ay94ZW1iZWQuaAoraWYgVVNFX0VHTAord2Vi
Y29yZWd0a19zb3VyY2VzICs9IFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9l
Z2wvR0xDb250ZXh0RUdMLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZWdsL0dMQ29udGV4dEVHTC5oCitlbmRpZiAjIEVORCBVU0VfRUdMCitpZiBVU0VfR0xYCit3ZWJj
b3JlZ3RrX3NvdXJjZXMgKz0gXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ds
eC9HTENvbnRleHRHTFguY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
bHgvR0xDb250ZXh0R0xYLmgKK2VuZGlmICMgRU5EIFVTRV9HTFgKIGVsc2UKIGlmIFRBUkdFVF9X
SU4zMgogd2ViY29yZV9zb3VyY2VzICs9IFwKQEAgLTU5NTgsNiArNTk2MSwyMSBAQCB3ZWJjb3Jl
X3NvdXJjZXMgKz0gXAogZW5kaWYgIyBFTkQgVEFSR0VUX1dJTjMyCiBlbmRpZiAjIEVORCBUQVJH
RVRfWDExCiAKK2lmIFVTRV9HTEVTMgord2ViY29yZV9zb3VyY2VzICs9IFwKKwlTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uczNET3BlbkdMRVMuY3BwIFwK
KwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uczNET3Bl
bkdMRVMuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dDNET3BlbkdMRVMuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9PcGVuR0xFU1NoaW1zLmgKK2Vsc2UKK3dlYmNvcmVfc291cmNlcyArPSBcCisJU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5HTC5jcHAg
XAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RP
cGVuR0wuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dDNET3BlbkdMLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvT3BlbkdMU2hpbXMuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9P
cGVuR0xTaGltcy5oCitlbmRpZiAjIEVORCBVU0VfR0xFUzIKKwogIyAtLS0tCiAjIGljdSB1bmlj
b2RlIGJhY2tlbmQKICMgLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKaW5kZXggYjJlNmE0ZGEwOTM0OGE2NjdmMmI4MjNl
YzM4ZDQzNDZkYzQzMzM5OC4uODAwNDM4ZDY0NzNmYmMxNDgwODY0Mzk3MzA1YmM4MWUwOGFlYmRl
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0M0QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQzRC5oCkBAIC0zOTUsNiArMzk1LDcgQEAgcHVibGljOgogICAgICAgICBTVEVOQ0lM
X0lOREVYOCA9IDB4OEQ0OCwKICAgICAgICAgREVQVEhfU1RFTkNJTCA9IDB4ODRGOSwKICAgICAg
ICAgVU5TSUdORURfSU5UXzI0XzggPSAweDg0RkEsCisgICAgICAgIERFUFRIMjRfU1RFTkNJTDgg
PSAweDg4RjAsCiAgICAgICAgIFJFTkRFUkJVRkZFUl9XSURUSCA9IDB4OEQ0MiwKICAgICAgICAg
UkVOREVSQlVGRkVSX0hFSUdIVCA9IDB4OEQ0MywKICAgICAgICAgUkVOREVSQlVGRkVSX0lOVEVS
TkFMX0ZPUk1BVCA9IDB4OEQ0NCwKQEAgLTk3OCw3ICs5NzksNyBAQCBwdWJsaWM6CiAgICAgQU5H
TEVXZWJLaXRCcmlkZ2UgbV9jb21waWxlcjsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oQkxBQ0tC
RVJSWSkgfHwgKFBMQVRGT1JNKFFUKSAmJiBkZWZpbmVkKFFUX09QRU5HTF9FU18yKSkKKyNpZiBQ
TEFURk9STShCTEFDS0JFUlJZKSB8fCAoUExBVEZPUk0oUVQpICYmIGRlZmluZWQoUVRfT1BFTkdM
X0VTXzIpKSB8fCAoUExBVEZPUk0oR1RLKSAmJiBVU0UoT1BFTkdMX0VTXzIpKQogICAgIGZyaWVu
ZCBjbGFzcyBFeHRlbnNpb25zM0RPcGVuR0xFUzsKICAgICBPd25QdHI8RXh0ZW5zaW9uczNET3Bl
bkdMRVM+IG1fZXh0ZW5zaW9uczsKICNlbGlmICFQTEFURk9STShDSFJPTUlVTSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL09wZW5HTEVTU2hpbXMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL09wZW5HTEVTU2hpbXMuaAppbmRleCA0MDE4
NzAwNGFjNmE4OTAxNWU0ODM0YzVlNmMzNTAxMzNkMTA1MTgzLi5iY2FmODU1ZWE2ZTBjMGRhNGI5
MGZkNmFiODNkM2NkZjk4YzUwNGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9PcGVuR0xFU1NoaW1zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvT3BlbkdMRVNTaGltcy5oCkBAIC0yNiw3ICsyNiw3IEBACiAjaWZuZGVmIE9wZW5H
TEVTU2hpbXNfaAogI2RlZmluZSBPcGVuR0xFU1NoaW1zX2gKIAotI2lmIFBMQVRGT1JNKEJMQUNL
QkVSUlkpIHx8IFBMQVRGT1JNKFFUKQorI2lmIFBMQVRGT1JNKEJMQUNLQkVSUlkpIHx8IFBMQVRG
T1JNKFFUKSB8fCBQTEFURk9STShHVEspCiAjZGVmaW5lIGdsQmluZEZyYW1lYnVmZmVyRVhUIGds
QmluZEZyYW1lYnVmZmVyCiAjZGVmaW5lIGdsRnJhbWVidWZmZXJUZXh0dXJlMkRFWFQgZ2xGcmFt
ZWJ1ZmZlclRleHR1cmUyRAogI2RlZmluZSBnbEJpbmRSZW5kZXJidWZmZXJFWFQgZ2xCaW5kUmVu
ZGVyYnVmZmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9HTENvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vR0xDb250ZXh0LmNwcAppbmRleCAzYjgwNGY2MDJjY2Y3OGFiY2M3NDVjMDlmMTNiODBkZjUx
YjY4ODg0Li5kNjMyOTBmYzNhY2I3MWMyODQwYmMzOGY4ZWUwMDAwOTVkZTlhNGNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HTENvbnRleHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dMQ29udGV4dC5j
cHAKQEAgLTIxLDExICsyMSwxMCBAQAogCiAjaWYgVVNFKE9QRU5HTCkKIAotI2luY2x1ZGUgPHd0
Zi9NYWluVGhyZWFkLmg+Ci0KLSNpZiBVU0UoR0xYKQorI2luY2x1ZGUgIkdMQ29udGV4dEVHTC5o
IgogI2luY2x1ZGUgIkdMQ29udGV4dEdMWC5oIgotI2VuZGlmCisjaW5jbHVkZSA8WDExL1hsaWIu
aD4KKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
QEAgLTM2LDEwICszNSwzNyBAQCBHTENvbnRleHQqIEdMQ29udGV4dDo6c2hhcmluZ0NvbnRleHQo
KQogICAgIHJldHVybiBzaGFyaW5nLmdldCgpOwogfQogCisvLyBXZSBkbyBub3Qgd2FudCB0byBj
YWxsIGdsWE1ha2VDb250ZXh0Q3VycmVudCB1c2luZyBkaWZmZXJlbnQgRGlzcGxheSBwb2ludGVy
cywKKy8vIGJlY2F1c2UgaXQgbWlnaHQgbGVhZCB0byBjcmFzaGVzIGluIHNvbWUgZHJpdmVycyAo
ZmdscngpLiBXZSB1c2UgYSBzaGFyZWQgZGlzcGxheQorLy8gcG9pbnRlciBoZXJlLgorc3RhdGlj
IERpc3BsYXkqIGdTaGFyZWREaXNwbGF5ID0gMDsKK0Rpc3BsYXkqIEdMQ29udGV4dDo6c2hhcmVk
RGlzcGxheSgpCit7CisgICAgaWYgKCFnU2hhcmVkRGlzcGxheSkKKyAgICAgICAgZ1NoYXJlZERp
c3BsYXkgPSBYT3BlbkRpc3BsYXkoMCk7CisgICAgcmV0dXJuIGdTaGFyZWREaXNwbGF5OworfQor
Cit2b2lkIEdMQ29udGV4dDo6Y2xlYW51cFNoYXJlZERpc3BsYXkoKQoreworICAgIGlmICghZ1No
YXJlZERpc3BsYXkpCisgICAgICAgIHJldHVybjsKKyAgICBYQ2xvc2VEaXNwbGF5KGdTaGFyZWRE
aXNwbGF5KTsKKyAgICBnU2hhcmVkRGlzcGxheSA9IDA7Cit9CisKIFBhc3NPd25QdHI8R0xDb250
ZXh0PiBHTENvbnRleHQ6OmNyZWF0ZUNvbnRleHRGb3JXaW5kb3codWludDY0X3Qgd2luZG93SGFu
ZGxlLCBHTENvbnRleHQqIHNoYXJpbmdDb250ZXh0KQogeworICAgIE93blB0cjxHTENvbnRleHQ+
IGNvbnRleHQ7CisjaWYgVVNFKEVHTCkKKyAgICBjb250ZXh0ID0gR0xDb250ZXh0RUdMOjpjcmVh
dGVDb250ZXh0KHdpbmRvd0hhbmRsZSwgc2hhcmluZ0NvbnRleHQpOworICAgIGlmIChjb250ZXh0
KQorICAgICAgICByZXR1cm4gY29udGV4dC5yZWxlYXNlKCk7CisjZW5kaWYKICNpZiBVU0UoR0xY
KQotICAgIHJldHVybiBHTENvbnRleHRHTFg6OmNyZWF0ZUNvbnRleHQod2luZG93SGFuZGxlLCBz
aGFyaW5nQ29udGV4dCk7CisgICAgY29udGV4dCA9IEdMQ29udGV4dEdMWDo6Y3JlYXRlQ29udGV4
dCh3aW5kb3dIYW5kbGUsIHNoYXJpbmdDb250ZXh0KTsKKyAgICBpZiAoY29udGV4dCkKKyAgICAg
ICAgcmV0dXJuIGNvbnRleHQucmVsZWFzZSgpOwogI2VuZGlmCiAgICAgcmV0dXJuIG51bGxwdHI7
CiB9CkBAIC00OCwxMCArNzQsMTggQEAgR0xDb250ZXh0OjpHTENvbnRleHQoKQogewogfQogCi1Q
YXNzT3duUHRyPEdMQ29udGV4dD4gR0xDb250ZXh0OjpjcmVhdGVPZmZzY3JlZW5Db250ZXh0KEdM
Q29udGV4dCogc2hhcmluZykKK1Bhc3NPd25QdHI8R0xDb250ZXh0PiBHTENvbnRleHQ6OmNyZWF0
ZU9mZnNjcmVlbkNvbnRleHQoR0xDb250ZXh0KiBzaGFyaW5nQ29udGV4dCkKIHsKKyAgICBPd25Q
dHI8R0xDb250ZXh0PiBjb250ZXh0OworI2lmIFVTRShFR0wpCisgICAgY29udGV4dCA9IEdMQ29u
dGV4dEVHTDo6Y3JlYXRlQ29udGV4dCgwLCBzaGFyaW5nQ29udGV4dCk7CisgICAgaWYgKGNvbnRl
eHQpCisgICAgICAgIHJldHVybiBjb250ZXh0LnJlbGVhc2UoKTsKKyNlbmRpZgogI2lmIFVTRShH
TFgpCi0gICAgcmV0dXJuIEdMQ29udGV4dEdMWDo6Y3JlYXRlQ29udGV4dCgwLCBzaGFyaW5nKTsK
KyAgICBjb250ZXh0ID0gR0xDb250ZXh0R0xYOjpjcmVhdGVDb250ZXh0KDAsIHNoYXJpbmdDb250
ZXh0KTsKKyAgICBpZiAoY29udGV4dCkKKyAgICAgICAgcmV0dXJuIGNvbnRleHQucmVsZWFzZSgp
OwogI2VuZGlmCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HTENvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dMQ29udGV4dC5oCmluZGV4IGMyM2E0NmNmMTMzMDJj
NDhlZDBjYmUwM2IzNWNiNTVhNjFlOTQ4MmMuLmFlNzY3OTE0M2Q0M2ExY2UwZWVhMDc2ZGFhZTZj
YWUzOTUzYmQ5Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0dMQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0dMQ29udGV4dC5oCkBAIC0yNSw2ICsyNSw4IEBACiAjaW5jbHVkZSA8d3RmL05vbmNv
cHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAordHlwZWRlZiBzdHJ1Y3Qg
X1hEaXNwbGF5IERpc3BsYXk7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR0xDb250
ZXh0IHsKQEAgLTM5LDkgKzQxLDEzIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5HTENvbnRleHQo
KTsKICAgICB2aXJ0dWFsIGJvb2wgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgdmlydHVhbCB2
b2lkIHN3YXBCdWZmZXJzKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB3YWl0TmF0aXZlKCkgPSAw
OwogICAgIHZpcnR1YWwgYm9vbCBjYW5SZW5kZXJUb0RlZmF1bHRGcmFtZWJ1ZmZlcigpID0gMDsK
ICAgICB2aXJ0dWFsIEludFNpemUgZGVmYXVsdEZyYW1lQnVmZmVyU2l6ZSgpID0gMDsKIAorICAg
IHN0YXRpYyBEaXNwbGF5ICpzaGFyZWREaXNwbGF5KHZvaWQpOworICAgIHN0YXRpYyB2b2lkIGNs
ZWFudXBTaGFyZWREaXNwbGF5KHZvaWQpOworCiAjaWYgVVNFKDNEX0dSQVBISUNTKQogICAgIHZp
cnR1YWwgUGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCBwbGF0Zm9ybUNvbnRleHQoKSA9IDA7CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0dyYXBoaWNzQ29udGV4dDNEQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RDYWlyby5jcHAKaW5kZXggZGMxMmY2YzVkNjJk
NjQ3MWU1NDllZGQ4ZTBhZjRkNDM4MjY5MDExNC4uZDZhMTEyMTc1NTFhOWUzN2IxYzkzNWU2NmRl
OTMyZjRjNjVmNWVmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RDYWlyby5jcHAKQEAgLTMw
LDEyICszMCwxNyBAQAogCiAjaWYgVVNFKDNEX0dSQVBISUNTKQogCisjaWYgVVNFKE9QRU5HTF9F
U18yKQorI2luY2x1ZGUgIkV4dGVuc2lvbnMzRE9wZW5HTEVTLmgiCisjaW5jbHVkZSAiT3BlbkdM
RVNTaGltcy5oIgorI2Vsc2UKICNpbmNsdWRlICJFeHRlbnNpb25zM0RPcGVuR0wuaCIKKyNpbmNs
dWRlICJPcGVuR0xTaGltcy5oIgorI2VuZGlmCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0RQ
cml2YXRlLmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJJbWFnZVNvdXJjZS5oIgog
I2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0jaW5jbHVkZSAiT3BlbkdMU2hpbXMuaCIKICNp
bmNsdWRlICJQbGF0Zm9ybUNvbnRleHRDYWlyby5oIgogI2luY2x1ZGUgIlJlZlB0ckNhaXJvLmgi
CiAjaW5jbHVkZSAiU2hhZGVyTGFuZy5oIgpAQCAtNTUsNyArNjAsOSBAQCBQYXNzUmVmUHRyPEdy
YXBoaWNzQ29udGV4dDNEPiBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4
dDNEOjpBdHRyaQogICAgIHN0YXRpYyBib29sIGluaXRpYWxpemVkID0gZmFsc2U7CiAgICAgc3Rh
dGljIGJvb2wgc3VjY2VzcyA9IHRydWU7CiAgICAgaWYgKCFpbml0aWFsaXplZCkgeworI2lmICFV
U0UoT1BFTkdMX0VTXzIpCiAgICAgICAgIHN1Y2Nlc3MgPSBpbml0aWFsaXplT3BlbkdMU2hpbXMo
KTsKKyNlbmRpZgogICAgICAgICBpbml0aWFsaXplZCA9IHRydWU7CiAgICAgfQogICAgIGlmICgh
c3VjY2VzcykKQEAgLTkwLDggKzk3LDggQEAgR3JhcGhpY3NDb250ZXh0M0Q6OkdyYXBoaWNzQ29u
dGV4dDNEKEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIEgKICAgICAg
ICAgOjpnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1fdGV4dHVyZSk7CiAgICAgICAgIDo6
Z2xUZXhQYXJhbWV0ZXJmKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xf
TElORUFSKTsKICAgICAgICAgOjpnbFRleFBhcmFtZXRlcmYoR0xfVEVYVFVSRV8yRCwgR0xfVEVY
VFVSRV9NSU5fRklMVEVSLCBHTF9MSU5FQVIpOwotICAgICAgICA6OmdsVGV4UGFyYW1ldGVyaShH
TF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfUywgR0xfQ0xBTVApOwotICAgICAgICA6Omds
VGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfVCwgR0xfQ0xBTVAp
OworICAgICAgICA6OmdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dS
QVBfUywgR0xfQ0xBTVBfVE9fRURHRSk7CisgICAgICAgIDo6Z2xUZXhQYXJhbWV0ZXJpKEdMX1RF
WFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9ULCBHTF9DTEFNUF9UT19FREdFKTsKICAgICAgICAg
OjpnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIDApOwogCiAgICAgICAgIC8vIENyZWF0ZSBh
biBGQk8uCkBAIC0xMjksOCArMTM2LDExIEBAIEdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0Nv
bnRleHQzRChHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRyaWJ1dGVzLCBICiAgICAg
QU5HTEVSZXNvdXJjZXMuTWF4RHJhd0J1ZmZlcnMgPSAxOwogICAgIG1fY29tcGlsZXIuc2V0UmVz
b3VyY2VzKEFOR0xFUmVzb3VyY2VzKTsKIAorI2lmICFVU0UoT1BFTkdMX0VTXzIpCiAgICAgOjpn
bEVuYWJsZShHTF9WRVJURVhfUFJPR1JBTV9QT0lOVF9TSVpFKTsKICAgICA6OmdsRW5hYmxlKEdM
X1BPSU5UX1NQUklURSk7CisjZW5kaWYKKwogICAgIDo6Z2xDbGVhckNvbG9yKDAsIDAsIDAsIDAp
OwogfQogCkBAIC0xNTMsMTAgKzE2MywxMiBAQCBHcmFwaGljc0NvbnRleHQzRDo6fkdyYXBoaWNz
Q29udGV4dDNEKCkKICAgICA6OmdsRGVsZXRlRnJhbWVidWZmZXJzRVhUKDEsICZtX2Zibyk7CiB9
CiAKKyNpZiAhVVNFKE9QRU5HTF9FU18yKQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cmVsZWFz
ZVNoYWRlckNvbXBpbGVyKCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQorI2VuZGlmCiAK
IGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEltYWdlRGF0YShJbWFnZSogaW1hZ2UsIHVuc2ln
bmVkIGludCBmb3JtYXQsIHVuc2lnbmVkIGludCB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEs
IGJvb2wgaWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGUsIFZlY3Rvcjx1aW50OF90PiYgb3V0cHV0
VmVjdG9yKQogewpAQCAtMjU4LDcgKzI3MCwxMSBAQCBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNE
IEdyYXBoaWNzQ29udGV4dDNEOjpwbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEKCkKIAogYm9vbCBH
cmFwaGljc0NvbnRleHQzRDo6aXNHTEVTMkNvbXBsaWFudCgpIGNvbnN0CiB7CisjaWYgVVNFKE9Q
RU5HTF9FU18yKQorICAgIHJldHVybiB0cnVlOworI2Vsc2UKICAgICByZXR1cm4gZmFsc2U7Cisj
ZW5kaWYKIH0KIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNE
UHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFw
aGljc0NvbnRleHQzRFByaXZhdGUuY3BwCmluZGV4IDZiNGNiZWFkN2MwZjZkNThkMzU3ZmYyNzZm
NmQ1OTdmZmQ3ZTc4MjAuLmM4ZDcxOWNiOGE2NjgyY2RjYzI2MWZjYzU5MWRhZjU0YjkyMzlkNGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBo
aWNzQ29udGV4dDNEUHJpdmF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcApAQCAtMjQsNyArMjQsMTMg
QEAKIAogI2luY2x1ZGUgIkhvc3RXaW5kb3cuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5o
IgorI2lmIFVTRShPUEVOR0xfRVNfMikKKyNpbmNsdWRlICJPcGVuR0xFU1NoaW1zLmgiCisjaW5j
bHVkZSA8R0xFUzIvZ2wyLmg+CisjaW5jbHVkZSA8R0xFUzIvZ2wyZXh0Lmg+CisjZWxzZQogI2lu
Y2x1ZGUgIk9wZW5HTFNoaW1zLmgiCisjZW5kaWYKICNpbmNsdWRlICJQbGF0Zm9ybUNvbnRleHRD
YWlyby5oIgogI2luY2x1ZGUgPHd0Zi9Pd25BcnJheVB0ci5oPgogCkBAIC0xMjUsNyArMTMxLDcg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRl
eHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIKICAgICAgICAgICAgIG1fY29udGV4dC0+bWFrZUNv
bnRleHRDdXJyZW50KCk7CiAKICAgICAgICAgbV9jb250ZXh0LT5yZXNvbHZlTXVsdGlzYW1wbGlu
Z0lmTmVjZXNzYXJ5KCk7Ci0gICAgICAgIGdsQmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4
dDNEOjpGUkFNRUJVRkZFUiwgbV9jb250ZXh0LT5tX2JvdW5kRkJPKTsKKyAgICAgICAgOjpnbEJp
bmRGcmFtZWJ1ZmZlckVYVChHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fY29udGV4
dC0+bV9ib3VuZEZCTyk7CiAKICAgICAgICAgaWYgKHByZXZpb3VzQWN0aXZlQ29udGV4dCAmJiBw
cmV2aW91c0FjdGl2ZUNvbnRleHQgIT0gbV9nbENvbnRleHQpCiAgICAgICAgICAgICBwcmV2aW91
c0FjdGl2ZUNvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4zNDA4MTE0ZGZmNTU3Zjc4MjQ3Y2YzYWY2NWEzZDIxZWRlM2U2OGJjCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5j
cHAKQEAgLTAsMCArMSwzMjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlhLCBT
LkwuCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGVzc2VyIEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2Ug
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdh
cmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiR0xDb250ZXh0RUdMLmgiCisKKyNpZiBVU0UoRUdMKQorCisjaW5jbHVkZSAi
R3JhcGhpY3NDb250ZXh0M0QuaCIKKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisKKyNpZiBVU0Uo
T1BFTkdMX0VTXzIpCisjaW5jbHVkZSAiT3BlbkdMRVNTaGltcy5oIgorI2luY2x1ZGUgPEdMRVMy
L2dsMi5oPgorI2luY2x1ZGUgPEdMRVMyL2dsMmV4dC5oPgorI2Vsc2UKKyNpbmNsdWRlICJPcGVu
R0xTaGltcy5oIgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIEVHTERp
c3BsYXkgZ1NoYXJlZEVHTERpc3BsYXkgPSBFR0xfTk9fRElTUExBWTsKKworI2lmIFVTRShPUEVO
R0xfRVNfMikKK3N0YXRpYyBjb25zdCBFR0xlbnVtIGdHTEFwaSA9IEVHTF9PUEVOR0xfRVNfQVBJ
OworI2Vsc2UKK3N0YXRpYyBjb25zdCBFR0xlbnVtIGdHTEFwaSA9IEVHTF9PUEVOR0xfQVBJOwor
I2VuZGlmCisKK3N0YXRpYyBFR0xEaXNwbGF5IHNoYXJlZEVHTERpc3BsYXkoKQoreworICAgIHN0
YXRpYyBib29sIGluaXRpYWxpemVkID0gZmFsc2U7CisgICAgaWYgKCFpbml0aWFsaXplZCkgewor
ICAgICAgICBpbml0aWFsaXplZCA9IHRydWU7CisgICAgICAgIGdTaGFyZWRFR0xEaXNwbGF5ID0g
ZWdsR2V0RGlzcGxheShHTENvbnRleHQ6OnNoYXJlZERpc3BsYXkoKSk7CisgICAgICAgIGlmIChn
U2hhcmVkRUdMRGlzcGxheSAhPSBFR0xfTk9fRElTUExBWQorICAgICAgICAgICAgJiYgKCFlZ2xJ
bml0aWFsaXplKGdTaGFyZWRFR0xEaXNwbGF5LCAwLCAwKQorICAgICAgICAgICAgICAgIHx8ICFl
Z2xCaW5kQVBJKGdHTEFwaSkpKQorICAgICAgICAgICAgZ1NoYXJlZEVHTERpc3BsYXkgPSBFR0xf
Tk9fRElTUExBWTsKKyAgICB9CisgICAgcmV0dXJuIGdTaGFyZWRFR0xEaXNwbGF5OworfQorCit2
b2lkIEdMQ29udGV4dEVHTDo6Y2xlYW51cFNoYXJlZERpc3BsYXkoKQoreworICAgIGlmIChnU2hh
cmVkRUdMRGlzcGxheSkKKyAgICAgICAgZ1NoYXJlZEVHTERpc3BsYXkgPSBFR0xfTk9fRElTUExB
WTsKKworICAgIEdMQ29udGV4dDo6Y2xlYW51cFNoYXJlZERpc3BsYXkoKTsKK30KKworCitzdGF0
aWMgY29uc3QgRUdMaW50IGNvbnRleHRBdHRyaWJ1dGVzW10gPSB7CisjaWYgVVNFKE9QRU5HTF9F
U18yKQorICAgIEVHTF9DT05URVhUX0NMSUVOVF9WRVJTSU9OLCAyLAorI2VuZGlmCisgICAgRUdM
X05PTkUKK307CisKKy8vIEJlY2F1c2Ugb2YgZHJpdmVyIGJ1Z3MsIGV4aXRpbmcgdGhlIHByb2dy
YW0gd2hlbiB0aGVyZSBhcmUgYWN0aXZlIHBidWZmZXJzCisvLyBjYW4gY3Jhc2ggdGhlIFggc2Vy
dmVyICh0aGlzIGhhcyBiZWVuIG9ic2VydmVkIHdpdGggdGhlIG9mZmljaWFsIE52aWRpYSBkcml2
ZXJzKS4KKy8vIFdlIG5lZWQgdG8gZW5zdXJlIHRoYXQgd2UgY2xlYW4gZXZlcnl0aGluZyB1cCBv
biBleGl0LiBUaGVyZSBhcmUgc2V2ZXJhbCByZWFzb25zCisvLyB0aGF0IEdyYXBoaWNzQ29udGV4
dDNEcyB3aWxsIHN0aWxsIGJlIGFsaXZlIGF0IGV4aXQsIGluY2x1ZGluZyB1c2VyIGVycm9yICht
ZW1vcnkKKy8vIGxlYWtzKSBhbmQgdGhlIHBhZ2UgY2FjaGUuIEluIGFueSBjYXNlLCB3ZSBkb24n
dCB3YW50IHRoZSBYIHNlcnZlciB0byBjcmFzaC4KK3R5cGVkZWYgVmVjdG9yPEdMQ29udGV4dCo+
IEFjdGl2ZUNvbnRleHRMaXN0Oworc3RhdGljIEFjdGl2ZUNvbnRleHRMaXN0JiBhY3RpdmVDb250
ZXh0TGlzdCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBY3RpdmVDb250ZXh0TGlzdCwg
YWN0aXZlQ29udGV4dHMsICgpKTsKKyAgICByZXR1cm4gYWN0aXZlQ29udGV4dHM7Cit9CisKK3Zv
aWQgR0xDb250ZXh0RUdMOjphZGRBY3RpdmVDb250ZXh0KEdMQ29udGV4dEVHTCogY29udGV4dCkK
K3sKKyAgICBzdGF0aWMgYm9vbCBhZGRlZEF0RXhpdEhhbmRsZXIgPSBmYWxzZTsKKyAgICBpZiAo
IWFkZGVkQXRFeGl0SGFuZGxlcikgeworICAgICAgICBhdGV4aXQoJkdMQ29udGV4dEVHTDo6Y2xl
YW51cEFjdGl2ZUNvbnRleHRzQXRFeGl0KTsKKyAgICAgICAgYWRkZWRBdEV4aXRIYW5kbGVyID0g
dHJ1ZTsKKyAgICB9CisgICAgYWN0aXZlQ29udGV4dExpc3QoKS5hcHBlbmQoY29udGV4dCk7Cit9
CisKK3N0YXRpYyBib29sIGdDbGVhbmluZ1VwQXRFeGl0ID0gZmFsc2U7CisKK3ZvaWQgR0xDb250
ZXh0RUdMOjpyZW1vdmVBY3RpdmVDb250ZXh0KEdMQ29udGV4dCogY29udGV4dCkKK3sKKyAgICAv
LyBJZiB3ZSBhcmUgY2xlYW5pbmcgdXAgdGhlIGNvbnRleHQgbGlzdCBhdCBleGl0LCBkb24ndCBi
b3RoZXIgcmVtb3ZpbmcgdGhlIGNvbnRleHQKKyAgICAvLyBmcm9tIHRoZSBsaXN0LCBzaW5jZSB3
ZSBkb24ndCB3YW50IHRvIG1vZGlmeSB0aGUgbGlzdCB3aGlsZSBpdCdzIGJlaW5nIGl0ZXJhdGVk
LgorICAgIGlmIChnQ2xlYW5pbmdVcEF0RXhpdCkKKyAgICAgICAgcmV0dXJuOworCisgICAgQWN0
aXZlQ29udGV4dExpc3QmIGNvbnRleHRMaXN0ID0gYWN0aXZlQ29udGV4dExpc3QoKTsKKyAgICBz
aXplX3QgaSA9IGNvbnRleHRMaXN0LmZpbmQoY29udGV4dCk7CisgICAgaWYgKGkgIT0gbm90Rm91
bmQpCisgICAgICAgIGNvbnRleHRMaXN0LnJlbW92ZShpKTsKK30KKwordm9pZCBHTENvbnRleHRF
R0w6OmNsZWFudXBBY3RpdmVDb250ZXh0c0F0RXhpdCgpCit7CisgICAgZ0NsZWFuaW5nVXBBdEV4
aXQgPSB0cnVlOworCisgICAgQWN0aXZlQ29udGV4dExpc3QmIGNvbnRleHRMaXN0ID0gYWN0aXZl
Q29udGV4dExpc3QoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvbnRleHRMaXN0LnNp
emUoKTsgKytpKQorICAgICAgICBkZWxldGUgY29udGV4dExpc3RbaV07CisKKyAgICBjbGVhbnVw
U2hhcmVkRGlzcGxheSgpOworfQorCitzdGF0aWMgYm9vbCBnZXRFR0xDb25maWcoRUdMQ29uZmln
KiBjb25maWcsIEdMQ29udGV4dEVHTDo6RUdMU3VyZmFjZVR5cGUgc3VyZmFjZVR5cGUpCit7Cisg
ICAgRUdMaW50IGF0dHJpYnV0ZUxpc3RbXSA9IHsKKyNpZiBVU0UoT1BFTkdMX0VTXzIpCisgICAg
ICAgIEVHTF9SRU5ERVJBQkxFX1RZUEUsIEVHTF9PUEVOR0xfRVMyX0JJVCwKKyNlbHNlCisgICAg
ICAgIEVHTF9SRU5ERVJBQkxFX1RZUEUsIEVHTF9PUEVOR0xfQklULAorI2VuZGlmCisgICAgICAg
IEVHTF9SRURfU0laRSwgOCwKKyAgICAgICAgRUdMX0dSRUVOX1NJWkUsIDgsCisgICAgICAgIEVH
TF9CTFVFX1NJWkUsIDgsCisgICAgICAgIEVHTF9TVEVOQ0lMX1NJWkUsIDgsCisgICAgICAgIEVH
TF9BTFBIQV9TSVpFLCA4LAorICAgICAgICBFR0xfTk9ORSwgRUdMX05PTkUsCisgICAgICAgIEVH
TF9OT05FCisgICAgfTsKKworICAgIGlmIChzdXJmYWNlVHlwZSA9PSBHTENvbnRleHRFR0w6OlBi
dWZmZXJTdXJmYWNlKSB7CisgICAgICAgIGF0dHJpYnV0ZUxpc3RbMTBdID0gRUdMX1NVUkZBQ0Vf
VFlQRTsKKyAgICAgICAgYXR0cmlidXRlTGlzdFsxMV0gPSBFR0xfUEJVRkZFUl9CSVQ7CisgICAg
fSBlbHNlIGlmIChzdXJmYWNlVHlwZSA9PSBHTENvbnRleHRFR0w6OlBpeG1hcFN1cmZhY2UpIHsK
KyAgICAgICAgYXR0cmlidXRlTGlzdFsxMF0gPSBFR0xfU1VSRkFDRV9UWVBFOworICAgICAgICBh
dHRyaWJ1dGVMaXN0WzExXSA9IEVHTF9QSVhNQVBfQklUOworICAgIH0gZWxzZSBpZiAoc3VyZmFj
ZVR5cGUgPT0gR0xDb250ZXh0RUdMOjpXaW5kb3dTdXJmYWNlKSB7CisgICAgICAgIGF0dHJpYnV0
ZUxpc3RbMTBdID0gRUdMX1NVUkZBQ0VfVFlQRTsKKyAgICAgICAgYXR0cmlidXRlTGlzdFsxMV0g
PSBFR0xfV0lORE9XX0JJVDsKKyAgICB9CisKKyAgICBFR0xpbnQgbnVtYmVyQ29uZmlnc1JldHVy
bmVkOworICAgIHJldHVybiBlZ2xDaG9vc2VDb25maWcoc2hhcmVkRUdMRGlzcGxheSgpLCBhdHRy
aWJ1dGVMaXN0LCBjb25maWcsIDEsICZudW1iZXJDb25maWdzUmV0dXJuZWQpICYmIG51bWJlckNv
bmZpZ3NSZXR1cm5lZDsKK30KKworUGFzc093blB0cjxHTENvbnRleHRFR0w+IEdMQ29udGV4dEVH
TDo6Y3JlYXRlV2luZG93Q29udGV4dChFR0xOYXRpdmVXaW5kb3dUeXBlIHdJZCwgR0xDb250ZXh0
KiBzaGFyaW5nQ29udGV4dCkKK3sKKyAgICBFR0xDb250ZXh0IGVnbFNoYXJpbmdDb250ZXh0ID0g
c2hhcmluZ0NvbnRleHQgPyBzdGF0aWNfY2FzdDxHTENvbnRleHRFR0wqPihzaGFyaW5nQ29udGV4
dCktPm1fY29udGV4dCA6IDA7CisKKyAgICBFR0xEaXNwbGF5IGRpc3BsYXkgPSBzaGFyZWRFR0xE
aXNwbGF5KCk7CisgICAgaWYgKGRpc3BsYXkgPT0gRUdMX05PX0RJU1BMQVkpCisgICAgICAgIHJl
dHVybiBudWxscHRyOworCisgICAgRUdMQ29uZmlnIGNvbmZpZzsKKyAgICBpZiAoIWdldEVHTENv
bmZpZygmY29uZmlnLCBXaW5kb3dTdXJmYWNlKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisK
KyAgICBFR0xDb250ZXh0IGNvbnRleHQgPSBlZ2xDcmVhdGVDb250ZXh0KGRpc3BsYXksIGNvbmZp
ZywgZWdsU2hhcmluZ0NvbnRleHQsIGNvbnRleHRBdHRyaWJ1dGVzKTsKKyAgICBpZiAoY29udGV4
dCA9PSBFR0xfTk9fQ09OVEVYVCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBFR0xT
dXJmYWNlIHN1cmZhY2UgPSBlZ2xDcmVhdGVXaW5kb3dTdXJmYWNlKGRpc3BsYXksIGNvbmZpZywg
d0lkLCAwKTsKKyAgICBpZiAoc3VyZmFjZSA9PSBFR0xfTk9fU1VSRkFDRSkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IEdMQ29udGV4dEVHTChjb250
ZXh0LCBzdXJmYWNlLCBXaW5kb3dTdXJmYWNlKSk7Cit9CisKK1Bhc3NPd25QdHI8R0xDb250ZXh0
RUdMPiBHTENvbnRleHRFR0w6OmNyZWF0ZVBidWZmZXJDb250ZXh0KEVHTENvbnRleHQgc2hhcmlu
Z0NvbnRleHQpCit7CisgICAgRUdMRGlzcGxheSBkaXNwbGF5ID0gc2hhcmVkRUdMRGlzcGxheSgp
OworICAgIGlmIChkaXNwbGF5ID09IEVHTF9OT19ESVNQTEFZKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKworICAgIEVHTENvbmZpZyBjb25maWc7CisgICAgaWYgKCFnZXRFR0xDb25maWcoJmNv
bmZpZywgUGJ1ZmZlclN1cmZhY2UpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIEVH
TENvbnRleHQgY29udGV4dCA9IGVnbENyZWF0ZUNvbnRleHQoZGlzcGxheSwgY29uZmlnLCBzaGFy
aW5nQ29udGV4dCwgY29udGV4dEF0dHJpYnV0ZXMpOworICAgIGlmIChjb250ZXh0ID09IEVHTF9O
T19DT05URVhUKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHN0YXRpYyBjb25zdCBp
bnQgcGJ1ZmZlckF0dHJpYnV0ZXNbXSA9IHsgRUdMX1dJRFRILCAxLCBFR0xfSEVJR0hULCAxLCBF
R0xfTk9ORSB9OworICAgIEVHTFN1cmZhY2Ugc3VyZmFjZSA9IGVnbENyZWF0ZVBidWZmZXJTdXJm
YWNlKGRpc3BsYXksIGNvbmZpZywgcGJ1ZmZlckF0dHJpYnV0ZXMpOworICAgIGlmIChzdXJmYWNl
ID09IEVHTF9OT19TVVJGQUNFKSB7CisgICAgICAgIGVnbERlc3Ryb3lDb250ZXh0KGRpc3BsYXks
IGNvbnRleHQpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICByZXR1cm4g
YWRvcHRQdHIobmV3IEdMQ29udGV4dEVHTChjb250ZXh0LCBzdXJmYWNlLCBQYnVmZmVyU3VyZmFj
ZSkpOworfQorCitQYXNzT3duUHRyPEdMQ29udGV4dEVHTD4gR0xDb250ZXh0RUdMOjpjcmVhdGVQ
aXhtYXBDb250ZXh0KEVHTENvbnRleHQgc2hhcmluZ0NvbnRleHQpCit7CisgICAgRUdMRGlzcGxh
eSBkaXNwbGF5ID0gc2hhcmVkRUdMRGlzcGxheSgpOworICAgIGlmIChkaXNwbGF5ID09IEVHTF9O
T19ESVNQTEFZKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIEVHTENvbmZpZyBjb25m
aWc7CisgICAgaWYgKCFnZXRFR0xDb25maWcoJmNvbmZpZywgUGl4bWFwU3VyZmFjZSkpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworCisgICAgRUdMQ29udGV4dCBjb250ZXh0ID0gZWdsQ3JlYXRl
Q29udGV4dChkaXNwbGF5LCBjb25maWcsIHNoYXJpbmdDb250ZXh0LCBjb250ZXh0QXR0cmlidXRl
cyk7CisgICAgaWYgKGNvbnRleHQgPT0gRUdMX05PX0NPTlRFWFQpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworCisgICAgRUdMaW50IGRlcHRoOworICAgIGlmICghZWdsR2V0Q29uZmlnQXR0cmli
KGRpc3BsYXksIGNvbmZpZywgRUdMX0RFUFRIX1NJWkUsICZkZXB0aCkpCisgICAgICAgIHJldHVy
biBudWxscHRyOworCisgICAgUGl4bWFwIHBpeG1hcCA9IFhDcmVhdGVQaXhtYXAoc2hhcmVkRGlz
cGxheSgpLCBEZWZhdWx0Um9vdFdpbmRvdyhzaGFyZWREaXNwbGF5KCkpLCAxLCAxLCBkZXB0aCk7
CisgICAgaWYgKCFwaXhtYXApCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgRUdMU3Vy
ZmFjZSBzdXJmYWNlID0gZWdsQ3JlYXRlUGl4bWFwU3VyZmFjZShkaXNwbGF5LCBjb25maWcsIHBp
eG1hcCwgMCk7CisgICAgaWYgKHN1cmZhY2UgPT0gRUdMX05PX1NVUkZBQ0UpCisgICAgICAgIHJl
dHVybiBudWxscHRyOworCisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBHTENvbnRleHRFR0woY29u
dGV4dCwgc3VyZmFjZSwgUGl4bWFwU3VyZmFjZSkpOworfQorCitQYXNzT3duUHRyPEdMQ29udGV4
dEVHTD4gR0xDb250ZXh0RUdMOjpjcmVhdGVDb250ZXh0KEVHTE5hdGl2ZVdpbmRvd1R5cGUgd0lk
LCBHTENvbnRleHQqIHNoYXJpbmdDb250ZXh0KQoreworICAgIGlmICghc2hhcmVkRUdMRGlzcGxh
eSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHN0YXRpYyBib29sIGluaXRpYWxp
emVkID0gZmFsc2U7CisgICAgc3RhdGljIGJvb2wgc3VjY2VzcyA9IHRydWU7CisgICAgaWYgKCFp
bml0aWFsaXplZCkgeworI2lmICFVU0UoT1BFTkdMX0VTXzIpCisgICAgICAgIHN1Y2Nlc3MgPSBp
bml0aWFsaXplT3BlbkdMU2hpbXMoKTsKKyNlbmRpZgorICAgICAgICBpbml0aWFsaXplZCA9IHRy
dWU7CisgICAgfQorICAgIGlmICghc3VjY2VzcykKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisK
KyAgICBFR0xDb250ZXh0IGVnbFNoYXJpbmdDb250ZXh0ID0gc2hhcmluZ0NvbnRleHQgPyBzdGF0
aWNfY2FzdDxHTENvbnRleHRFR0wqPihzaGFyaW5nQ29udGV4dCktPm1fY29udGV4dCA6IDA7Cisg
ICAgT3duUHRyPEdMQ29udGV4dEVHTD4gY29udGV4dCA9IHdJZCA/IGNyZWF0ZVdpbmRvd0NvbnRl
eHQod0lkLCBzaGFyaW5nQ29udGV4dCkgOiBudWxscHRyOworICAgIGlmICghY29udGV4dCkKKyAg
ICAgICAgY29udGV4dCA9IGNyZWF0ZVBpeG1hcENvbnRleHQoZWdsU2hhcmluZ0NvbnRleHQpOwor
CisgICAgaWYgKCFjb250ZXh0KQorICAgICAgICBjb250ZXh0ID0gY3JlYXRlUGJ1ZmZlckNvbnRl
eHQoZWdsU2hhcmluZ0NvbnRleHQpOworICAgIAorICAgIHJldHVybiBjb250ZXh0LnJlbGVhc2Uo
KTsKK30KKworR0xDb250ZXh0RUdMOjpHTENvbnRleHRFR0woRUdMQ29udGV4dCBjb250ZXh0LCBF
R0xTdXJmYWNlIHN1cmZhY2UsIEVHTFN1cmZhY2VUeXBlIHR5cGUpCisgICAgOiBtX2NvbnRleHQo
Y29udGV4dCkKKyAgICAsIG1fc3VyZmFjZShzdXJmYWNlKQorICAgICwgbV90eXBlKHR5cGUpCit7
CisgICAgYWRkQWN0aXZlQ29udGV4dCh0aGlzKTsKK30KKworR0xDb250ZXh0RUdMOjp+R0xDb250
ZXh0RUdMKCkKK3sKKyAgICBFR0xEaXNwbGF5IGRpc3BsYXkgPSBzaGFyZWRFR0xEaXNwbGF5KCk7
CisgICAgaWYgKG1fY29udGV4dCkgeworICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFN
RUJVRkZFUiwgMCk7CisgICAgICAgIGVnbE1ha2VDdXJyZW50KGRpc3BsYXksIEVHTF9OT19TVVJG
QUNFLCBFR0xfTk9fU1VSRkFDRSwgRUdMX05PX0NPTlRFWFQpOworICAgICAgICBlZ2xEZXN0cm95
Q29udGV4dChkaXNwbGF5LCBtX2NvbnRleHQpOworICAgIH0KKworICAgIGlmIChtX3N1cmZhY2Up
CisgICAgICAgIGVnbERlc3Ryb3lTdXJmYWNlKGRpc3BsYXksIG1fc3VyZmFjZSk7CisgICAgcmVt
b3ZlQWN0aXZlQ29udGV4dCh0aGlzKTsKK30KKworYm9vbCBHTENvbnRleHRFR0w6OmNhblJlbmRl
clRvRGVmYXVsdEZyYW1lYnVmZmVyKCkKK3sKKyAgICByZXR1cm4gbV90eXBlID09IFdpbmRvd1N1
cmZhY2U7Cit9CisKK0ludFNpemUgR0xDb250ZXh0RUdMOjpkZWZhdWx0RnJhbWVCdWZmZXJTaXpl
KCkKK3sKKyAgICBpZiAoIWNhblJlbmRlclRvRGVmYXVsdEZyYW1lYnVmZmVyKCkpCisgICAgICAg
IHJldHVybiBJbnRTaXplKCk7CisKKyAgICBFR0xpbnQgd2lkdGgsIGhlaWdodDsKKyAgICBpZiAo
IWVnbFF1ZXJ5U3VyZmFjZShzaGFyZWRFR0xEaXNwbGF5KCksIG1fc3VyZmFjZSwgRUdMX1dJRFRI
LCAmd2lkdGgpCisgICAgICAgIHx8ICFlZ2xRdWVyeVN1cmZhY2Uoc2hhcmVkRUdMRGlzcGxheSgp
LCBtX3N1cmZhY2UsIEVHTF9IRUlHSFQsICZoZWlnaHQpKQorICAgICAgICByZXR1cm4gSW50U2l6
ZSgpOworCisgICAgcmV0dXJuIEludFNpemUod2lkdGgsIGhlaWdodCk7Cit9CisKK2Jvb2wgR0xD
b250ZXh0RUdMOjptYWtlQ29udGV4dEN1cnJlbnQoKQoreworICAgIEFTU0VSVChtX2NvbnRleHQg
JiYgbV9zdXJmYWNlKTsKKworICAgIEdMQ29udGV4dDo6bWFrZUNvbnRleHRDdXJyZW50KCk7Cisg
ICAgaWYgKGVnbEdldEN1cnJlbnRDb250ZXh0KCkgPT0gbV9jb250ZXh0KQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKworICAgIHJldHVybiBlZ2xNYWtlQ3VycmVudChzaGFyZWRFR0xEaXNwbGF5KCks
IG1fc3VyZmFjZSwgbV9zdXJmYWNlLCBtX2NvbnRleHQpOworfQorCit2b2lkIEdMQ29udGV4dEVH
TDo6c3dhcEJ1ZmZlcnMoKQoreworICAgIGlmIChtX3N1cmZhY2UpCisgICAgICAgIGVnbFN3YXBC
dWZmZXJzKHNoYXJlZEVHTERpc3BsYXkoKSwgbV9zdXJmYWNlKTsKK30KKwordm9pZCBHTENvbnRl
eHRFR0w6OndhaXROYXRpdmUoKQoreworICAgIGVnbFdhaXROYXRpdmUoRUdMX0NPUkVfTkFUSVZF
X0VOR0lORSk7Cit9CisKKyNpZiBFTkFCTEUoV0VCR0wpCitQbGF0Zm9ybUdyYXBoaWNzQ29udGV4
dDNEIEdMQ29udGV4dEVHTDo6cGxhdGZvcm1Db250ZXh0KCkKK3sKKyAgICByZXR1cm4gbV9jb250
ZXh0OworfQorI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVT
RShFR0wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wv
R0xDb250ZXh0RUdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xD
b250ZXh0RUdMLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWNjOTZjMzkyOWFkNzdlOGE1ODk2ZDZmNzVhZWM2MjJh
ZjcxZDlhMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2VnbC9HTENvbnRleHRFR0wuaApAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEyIElnYWxpYSBTLkwuCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAg
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGVz
c2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1
YmxpYworICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUg
dG8gdGhlIEZyZWUKKyAqICBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAorICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKKyAqLwor
CisjaWZuZGVmIEdMQ29udGV4dEVHTF9oCisjZGVmaW5lIEdMQ29udGV4dEVHTF9oCisKKyNpZiBV
U0UoRUdMKQorCisjaW5jbHVkZSAiR0xDb250ZXh0LmgiCisKKyNpbmNsdWRlIDxFR0wvZWdsLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgR0xDb250ZXh0RUdMIDogcHVibGljIEdM
Q29udGV4dCB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoR0xDb250ZXh0RUdMKTsKK3B1Ymxp
YzoKKyAgICBlbnVtIEVHTFN1cmZhY2VUeXBlIHsgUGJ1ZmZlclN1cmZhY2UsIFdpbmRvd1N1cmZh
Y2UsIFBpeG1hcFN1cmZhY2UgfTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxHTENvbnRleHRFR0w+
IGNyZWF0ZUNvbnRleHQoRUdMTmF0aXZlV2luZG93VHlwZSwgR0xDb250ZXh0KiBzaGFyaW5nQ29u
dGV4dCA9IDApOworICAgIHN0YXRpYyBQYXNzT3duUHRyPEdMQ29udGV4dEVHTD4gY3JlYXRlV2lu
ZG93Q29udGV4dChFR0xOYXRpdmVXaW5kb3dUeXBlLCBHTENvbnRleHQqIHNoYXJpbmdDb250ZXh0
KTsKKworICAgIHZpcnR1YWwgfkdMQ29udGV4dEVHTCgpOworICAgIHZpcnR1YWwgYm9vbCBtYWtl
Q29udGV4dEN1cnJlbnQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3dhcEJ1ZmZlcnMoKTsKKyAgICB2
aXJ0dWFsIHZvaWQgd2FpdE5hdGl2ZSgpOworICAgIHZpcnR1YWwgYm9vbCBjYW5SZW5kZXJUb0Rl
ZmF1bHRGcmFtZWJ1ZmZlcigpOworICAgIHZpcnR1YWwgSW50U2l6ZSBkZWZhdWx0RnJhbWVCdWZm
ZXJTaXplKCk7CisKKyAgICBzdGF0aWMgdm9pZCBjbGVhbnVwU2hhcmVkRGlzcGxheSh2b2lkKTsK
KworI2lmIEVOQUJMRShXRUJHTCkKKyAgICB2aXJ0dWFsIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0
M0QgcGxhdGZvcm1Db250ZXh0KCk7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBzdGF0aWMgUGFz
c093blB0cjxHTENvbnRleHRFR0w+IGNyZWF0ZVBidWZmZXJDb250ZXh0KEVHTENvbnRleHQgc2hh
cmluZ0NvbnRleHQpOworICAgIHN0YXRpYyBQYXNzT3duUHRyPEdMQ29udGV4dEVHTD4gY3JlYXRl
UGl4bWFwQ29udGV4dChFR0xDb250ZXh0IHNoYXJpbmdDb250ZXh0KTsKKyAgICBzdGF0aWMgdm9p
ZCByZW1vdmVBY3RpdmVDb250ZXh0KEdMQ29udGV4dCopOworCisgICAgc3RhdGljIHZvaWQgYWRk
QWN0aXZlQ29udGV4dChHTENvbnRleHRFR0wqKTsKKyAgICBzdGF0aWMgdm9pZCBjbGVhbnVwQWN0
aXZlQ29udGV4dHNBdEV4aXQoKTsKKworICAgIEdMQ29udGV4dEVHTChFR0xDb250ZXh0LCBFR0xT
dXJmYWNlLCBFR0xTdXJmYWNlVHlwZSk7CisKKyAgICBFR0xDb250ZXh0IG1fY29udGV4dDsKKyAg
ICBFR0xTdXJmYWNlIG1fc3VyZmFjZTsKKyAgICBFR0xTdXJmYWNlVHlwZSBtX3R5cGU7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoRUdMKQorCisjZW5kaWYg
Ly8gR0xDb250ZXh0RUdMX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dseC9HTENvbnRleHRHTFguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ2x4L0dMQ29udGV4dEdMWC5jcHAKaW5kZXggOTU0MGI4NmEwYmFmNDQ2YmZiNmY2OWQw
YmQ2ODY5MjdmNWU3OTIxMy4uNzY4YWZhMzRmNDU1Mzg2MWFlNGVkMGU3YWUxM2JmNDBlYzI1ZDM2
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dMQ29u
dGV4dEdMWC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dM
Q29udGV4dEdMWC5jcHAKQEAgLTI3LDE3ICsyNyw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotLy8gV2UgZG8gbm90IHdhbnQgdG8gY2FsbCBnbFhNYWtlQ29udGV4dEN1cnJlbnQgdXNpbmcg
ZGlmZmVyZW50IERpc3BsYXkgcG9pbnRlcnMsCi0vLyBiZWNhdXNlIGl0IG1pZ2h0IGxlYWQgdG8g
Y3Jhc2hlcyBpbiBzb21lIGRyaXZlcnMgKGZnbHJ4KS4gV2UgdXNlIGEgc2hhcmVkIGRpc3BsYXkK
LS8vIHBvaW50ZXIgaGVyZS4KLXN0YXRpYyBEaXNwbGF5KiBnU2hhcmVkRGlzcGxheSA9IDA7Ci1E
aXNwbGF5KiBHTENvbnRleHRHTFg6OnNoYXJlZERpc3BsYXkoKQotewotICAgIGlmICghZ1NoYXJl
ZERpc3BsYXkpCi0gICAgICAgIGdTaGFyZWREaXNwbGF5ID0gWE9wZW5EaXNwbGF5KDApOwotICAg
IHJldHVybiBnU2hhcmVkRGlzcGxheTsKLX0KLQogLy8gQmVjYXVzZSBvZiBkcml2ZXIgYnVncywg
ZXhpdGluZyB0aGUgcHJvZ3JhbSB3aGVuIHRoZXJlIGFyZSBhY3RpdmUgcGJ1ZmZlcnMKIC8vIGNh
biBjcmFzaCB0aGUgWCBzZXJ2ZXIgKHRoaXMgaGFzIGJlZW4gb2JzZXJ2ZWQgd2l0aCB0aGUgb2Zm
aWNpYWwgTnZpZGlhIGRyaXZlcnMpLgogLy8gV2UgbmVlZCB0byBlbnN1cmUgdGhhdCB3ZSBjbGVh
biBldmVyeXRoaW5nIHVwIG9uIGV4aXQuIFRoZXJlIGFyZSBzZXZlcmFsIHJlYXNvbnMKQEAgLTgz
LDEwICs3Miw3IEBAIHZvaWQgR0xDb250ZXh0R0xYOjpjbGVhbnVwQWN0aXZlQ29udGV4dHNBdEV4
aXQoKQogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY29udGV4dExpc3Quc2l6ZSgpOyArK2kp
CiAgICAgICAgIGRlbGV0ZSBjb250ZXh0TGlzdFtpXTsKIAotICAgIGlmICghZ1NoYXJlZERpc3Bs
YXkpCi0gICAgICAgIHJldHVybjsKLSAgICBYQ2xvc2VEaXNwbGF5KGdTaGFyZWREaXNwbGF5KTsK
LSAgICBnU2hhcmVkRGlzcGxheSA9IDA7CisgICAgY2xlYW51cFNoYXJlZERpc3BsYXkoKTsKIH0K
IAogUGFzc093blB0cjxHTENvbnRleHRHTFg+IEdMQ29udGV4dEdMWDo6Y3JlYXRlV2luZG93Q29u
dGV4dChYSUQgd2luZG93LCBHTENvbnRleHQqIHNoYXJpbmdDb250ZXh0KQpAQCAtMzExLDYgKzI5
NywxMSBAQCB2b2lkIEdMQ29udGV4dEdMWDo6c3dhcEJ1ZmZlcnMoKQogICAgICAgICBnbFhTd2Fw
QnVmZmVycyhzaGFyZWREaXNwbGF5KCksIG1fd2luZG93KTsKIH0KIAordm9pZCBHTENvbnRleHRH
TFg6OndhaXROYXRpdmUoKQoreworICAgIGdsWFdhaXRYKCk7Cit9CisKICNpZiBVU0UoM0RfR1JB
UEhJQ1MpCiBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEIEdMQ29udGV4dEdMWDo6cGxhdGZvcm1D
b250ZXh0KCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dseC9HTENvbnRleHRHTFguaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ds
eC9HTENvbnRleHRHTFguaAppbmRleCBiM2IxOGMxNTZjYzMxY2RjNmIxMzJkYTA3ZTEyZmUyZTcz
MjhkZTZiLi42NDFjMjYyZmI3N2RhMTZjNTI3MWQ1MmIzYjZjNjY2NjlmZTAyZWMwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nbHgvR0xDb250ZXh0R0xYLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dMQ29udGV4dEdMWC5o
CkBAIC0yNSw3ICsyNSw2IEBACiAjaW5jbHVkZSAiR0xDb250ZXh0LmgiCiAKIHR5cGVkZWYgc3Ry
dWN0IF9fR0xYY29udGV4dFJlYyogR0xYQ29udGV4dDsKLXR5cGVkZWYgc3RydWN0IF9YRGlzcGxh
eSBEaXNwbGF5OwogdHlwZWRlZiBzdHJ1Y3QgX19HTFhjb250ZXh0UmVjICpHTFhDb250ZXh0Owog
dHlwZWRlZiB1bnNpZ25lZCBsb25nIEdMWFBidWZmZXI7CiB0eXBlZGVmIHVuc2lnbmVkIGxvbmcg
R0xYUGl4bWFwOwpAQCAtNDUsMTEgKzQ0LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5HTENv
bnRleHRHTFgoKTsKICAgICB2aXJ0dWFsIGJvb2wgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAg
dmlydHVhbCB2b2lkIHN3YXBCdWZmZXJzKCk7CisgICAgdmlydHVhbCB2b2lkIHdhaXROYXRpdmUo
KTsKICAgICB2aXJ0dWFsIGJvb2wgY2FuUmVuZGVyVG9EZWZhdWx0RnJhbWVidWZmZXIoKTsKICAg
ICB2aXJ0dWFsIEludFNpemUgZGVmYXVsdEZyYW1lQnVmZmVyU2l6ZSgpOwogCi0gICAgc3RhdGlj
IERpc3BsYXkqIHNoYXJlZERpc3BsYXkoKTsKLQogI2lmIFVTRSgzRF9HUkFQSElDUykKICAgICB2
aXJ0dWFsIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QgcGxhdGZvcm1Db250ZXh0KCk7CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
cmFwaGljc0NvbnRleHQzRE9wZW5HTEVTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTEVTLmNwcAppbmRleCA0ZDE1MzBj
NGJlYzkyMzA4Yjc2MGZjN2E3OTRkNzE4YzY2MGUxY2NkLi4wZGMxNDQ3NDZjZjY5MzI5ZTk2MzI4
OWMzOTUzNmUzYWRkNzQwNmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xFUy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdM
RVMuY3BwCkBAIC0xMzksMTMgKzEzOSwxMyBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpyZXNo
YXBlRkJPcyhjb25zdCBJbnRTaXplJiBzaXplKQogICAgIGlmIChtX2F0dHJzLnN0ZW5jaWwgfHwg
bV9hdHRycy5kZXB0aCkgewogICAgICAgICAvLyBVc2UgYSAyNCBiaXQgZGVwdGggYnVmZmVyIHdo
ZXJlIHdlIGtub3cgd2UgaGF2ZSBpdC4KICAgICAgICAgaWYgKHN1cHBvcnRQYWNrZWREZXB0aFN0
ZW5jaWxCdWZmZXIpIHsKLSAgICAgICAgICAgIDo6Z2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJE
LCBtX2RlcHRoU3RlbmNpbEJ1ZmZlcik7Ci0gICAgICAgICAgICA6OmdsVGV4SW1hZ2UyRChHTF9U
RVhUVVJFXzJELCAwLCBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfU1RFTkNJTCwgd2lkdGgsIGhl
aWdodCwgMCwgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX1NURU5DSUwsIEdyYXBoaWNzQ29udGV4
dDNEOjpVTlNJR05FRF9JTlRfMjRfOCwgMCk7CisgICAgICAgICAgICA6OmdsQmluZFJlbmRlcmJ1
ZmZlckVYVChHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSLCBtX2RlcHRoU3RlbmNpbEJ1
ZmZlcik7CisgICAgICAgICAgICA6OmdsUmVuZGVyYnVmZmVyU3RvcmFnZUVYVChHcmFwaGljc0Nv
bnRleHQzRDo6UkVOREVSQlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6REVQVEgyNF9TVEVOQ0lM
OCwgd2lkdGgsIGhlaWdodCk7CiAgICAgICAgICAgICBpZiAobV9hdHRycy5zdGVuY2lsKQotICAg
ICAgICAgICAgICAgIDo6Z2xGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xf
U1RFTkNJTF9BVFRBQ0hNRU5ULCBHTF9URVhUVVJFXzJELCBtX2RlcHRoU3RlbmNpbEJ1ZmZlciwg
MCk7CisgICAgICAgICAgICAgICAgOjpnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyRVhUKEdyYXBo
aWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OlNURU5DSUxfQVRU
QUNITUVOVCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUiwgbV9kZXB0aFN0ZW5jaWxC
dWZmZXIpOwogICAgICAgICAgICAgaWYgKG1fYXR0cnMuZGVwdGgpCi0gICAgICAgICAgICAgICAg
OjpnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9ERVBUSF9BVFRBQ0hN
RU5ULCBHTF9URVhUVVJFXzJELCBtX2RlcHRoU3RlbmNpbEJ1ZmZlciwgMCk7Ci0gICAgICAgICAg
ICA6OmdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgMCk7CisgICAgICAgICAgICAgICAgOjpn
bEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyRVhUKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZF
UiwgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX0FUVEFDSE1FTlQsIEdyYXBoaWNzQ29udGV4dDNE
OjpSRU5ERVJCVUZGRVIsIG1fZGVwdGhTdGVuY2lsQnVmZmVyKTsKKyAgICAgICAgICAgIDo6Z2xC
aW5kUmVuZGVyYnVmZmVyRVhUKEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIDApOwog
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgaWYgKG1fYXR0cnMuc3RlbmNpbCkgewogICAg
ICAgICAgICAgICAgIDo6Z2xCaW5kUmVuZGVyYnVmZmVyRVhUKEdyYXBoaWNzQ29udGV4dDNEOjpS
RU5ERVJCVUZGRVIsIG1fc3RlbmNpbEJ1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwCmluZGV4
IDk4YWRlYzdmOGY4YzI0ODJhZWE5OWQ1NDBiNmQ1YzNkMWJlNWVjOGYuLjgyY2E2NTcwZjI1YTBk
OGJjM2NhODM3Yjk2NWMyMmU0Y2QwNDM4ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwCkBAIC0y
Myw2ICsyMyw3IEBACiAjaW5jbHVkZSAiRXh0ZW5zaW9uczNET3BlbkdMRVMuaCIKICNlbHNlCiAj
aW5jbHVkZSAiRXh0ZW5zaW9uczNET3BlbkdMLmgiCisjaW5jbHVkZSAiT3BlbkdMU2hpbXMuaCIK
ICNlbmRpZgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkdyYXBoaWNz
U3VyZmFjZS5oIgpAQCAtMzEsNyArMzIsNiBAQAogI2luY2x1ZGUgIkltYWdlRGF0YS5oIgogI2lu
Y2x1ZGUgIk5hdGl2ZUltYWdlUXQuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgotI2lu
Y2x1ZGUgIk9wZW5HTFNoaW1zLmgiCiAjaW5jbHVkZSAiUVdlYlBhZ2VDbGllbnQuaCIKICNpbmNs
dWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDxRV2luZG93PgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmgKaW5k
ZXggM2Q5NDUyYjc2MGNkNDA1ZGU5ODFkNTQyMGZjNmZhZWYyZjAzMGIzZS4uMWZjMTJiNzQ2NDFl
NzhkNWI4Yzc1M2EwNjY2YWRhNmM3OGVjODhhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5oCkBAIC0yOCw2ICsy
OCwxMSBAQAogICAgICNkZWZpbmUgVEVYTUFQX09QRU5HTF9FU18yCiAjZW5kaWYKICNlbmRpZgor
I2lmIFBMQVRGT1JNKEdUSykKKyNpZiBVU0UoT1BFTkdMX0VTXzIpICYmICFkZWZpbmVkKFRFWE1B
UF9PUEVOR0xfRVNfMikKKyNkZWZpbmUgVEVYTUFQX09QRU5HTF9FU18yCisjZW5kaWYKKyNlbmRp
ZgogCiAjaW5jbHVkZSAiRmlsdGVyT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29u
dGV4dC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlZGlyZWN0
ZWRYQ29tcG9zaXRlV2luZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZWRp
cmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5jcHAKaW5kZXggYWUxZDI2MmQ3NzAwYjQ0ZTg4ZGZmMDc4
MjQwYWZkYTQwZjBiNDQyOC4uMGZkOGU3YmFjMTA0ZDYzNmIyMTJlZTIzMmFmNWVkYWYyOTFiZjJi
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlZGlyZWN0ZWRYQ29t
cG9zaXRlV2luZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVkaXJl
Y3RlZFhDb21wb3NpdGVXaW5kb3cuY3BwCkBAIC0yNyw4ICsyNyw4IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cuaCIKIAorI2luY2x1
ZGUgIkdMQ29udGV4dEVHTC5oIgogI2luY2x1ZGUgIkdMQ29udGV4dEdMWC5oIgotI2luY2x1ZGUg
PEdML2dseC5oPgogI2luY2x1ZGUgPFgxMS9leHRlbnNpb25zL1hjb21wb3NpdGUuaD4KICNpbmNs
dWRlIDxjYWlyby14bGliLmg+CiAjaW5jbHVkZSA8Z2RrL2dka3guaD4KQEAgLTUwLDcgKzUwLDcg
QEAgUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6OlJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93
KGNvbnN0IEludFNpemUmIHNpemUpCiAgICAgLCBtX3BlbmRpbmdSZXNpemVTb3VyY2VJZCgwKQog
ICAgICwgbV9uZWVkc05ld1BpeG1hcEFmdGVyUmVzaXplKGZhbHNlKQogewotICAgIERpc3BsYXkq
IGRpc3BsYXkgPSBHTENvbnRleHRHTFg6OnNoYXJlZERpc3BsYXkoKTsKKyAgICBEaXNwbGF5KiBk
aXNwbGF5ID0gR0xDb250ZXh0OjpzaGFyZWREaXNwbGF5KCk7CiAKICAgICAvLyBUaGlzIGlzIGJh
c2VkIG9uIGNvZGUgZnJvbSBDaHJvbWl1bTogc3JjL2NvbnRlbnQvY29tbW9uL2dwdS9pbWFnZV90
cmFuc3BvcnRfc3VyZmFjZV9saW51eC5jYwogICAgIFhTZXRXaW5kb3dBdHRyaWJ1dGVzIHdpbmRv
d0F0dHJpYnV0ZXM7CkBAIC05NSw3ICs5NSw3IEBAIFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93
OjpSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdyhjb25zdCBJbnRTaXplJiBzaXplKQogCiBSZWRp
cmVjdGVkWENvbXBvc2l0ZVdpbmRvdzo6flJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93KCkKIHsK
LSAgICBEaXNwbGF5KiBkaXNwbGF5ID0gR0xDb250ZXh0R0xYOjpzaGFyZWREaXNwbGF5KCk7Cisg
ICAgRGlzcGxheSogZGlzcGxheSA9IEdMQ29udGV4dDo6c2hhcmVkRGlzcGxheSgpOwogICAgIGlm
IChtX3dpbmRvdykKICAgICAgICAgWERlc3Ryb3lXaW5kb3coZGlzcGxheSwgbV93aW5kb3cpOwog
ICAgIGlmIChtX3BhcmVudFdpbmRvdykKQEAgLTEzNCw5ICsxMzQsOSBAQCB2b2lkIFJlZGlyZWN0
ZWRYQ29tcG9zaXRlV2luZG93OjpyZXNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICAgICAg
bV9wZW5kaW5nUmVzaXplU291cmNlSWQgPSBnX3RpbWVvdXRfYWRkKDAsIHJlaW50ZXJwcmV0X2Nh
c3Q8R1NvdXJjZUZ1bmM+KHJlc2l6ZUxhdGVyQ2FsbGJhY2spLCB0aGlzKTsKICAgICB9CiAKLSAg
ICBEaXNwbGF5KiBkaXNwbGF5ID0gR0xDb250ZXh0R0xYOjpzaGFyZWREaXNwbGF5KCk7CisgICAg
RGlzcGxheSogZGlzcGxheSA9IEdMQ29udGV4dDo6c2hhcmVkRGlzcGxheSgpOwogICAgIFhSZXNp
emVXaW5kb3coZGlzcGxheSwgbV93aW5kb3csIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7
Ci0gICAgZ2xYV2FpdFgoKTsKKyAgICBjb250ZXh0KCktPndhaXROYXRpdmUoKTsKIAogICAgIC8v
IFRoaXMgc3dhcCBpcyBiYXNlZCBvbiBjb2RlIGluIENocm9taXVtLiBJdCB0cmllcyB0byB3b3Jr
LWFyb3VuZCBhIGJ1ZyBpbiB0aGUgSW50ZWwgZHJpdmVycwogICAgIC8vIHdoZXJlIGEgc3dhcCBp
cyBuZWNlc3NhcnkgdG8gZW5zdXJlIHRoZSBmcm9udCBhbmQgYmFjayBidWZmZXJzIGFyZSBwcm9w
ZXJseSByZXNpemVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Jl
ZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cuaAppbmRleCAzOWVjN2VkYjI2YjhkZWE0MjZmYmY0
ZTY0YTk1ZTI1OWRhNGQ3YTM4Li4zMDg5ZDg0YmUwNjkyNWUwN2I2YjVlZGZhNDgzYWM5Mjc3MWIw
ZTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVkaXJlY3RlZFhD
b21wb3NpdGVXaW5kb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVkaXJl
Y3RlZFhDb21wb3NpdGVXaW5kb3cuaApAQCAtMjcsNyArMjcsNyBAQAogI2lmbmRlZiAgUmVkaXJl
Y3RlZFhDb21wb3NpdGVXaW5kb3dfaAogI2RlZmluZSAgUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5k
b3dfaAogCi0jaW5jbHVkZSAiR0xDb250ZXh0R0xYLmgiCisjaW5jbHVkZSAiR0xDb250ZXh0Lmgi
CiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUgIlJlZlB0ckNhaXJvLmgiCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9z
dEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xheWVyVHJl
ZUhvc3RHdGsuY3BwCmluZGV4IGVlNDgzYWVkMzFlZDFiYWNiY2JjZTMzZGViYzM3MWM5YTBjZmYz
YjcuLjkxZjhiNDA1NDA0NTdiNjZiYTlkYWU5ZGEyZGUxNDI3ZTg0NjZlZmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVI
b3N0R3RrLmNwcApAQCAtMzYsNyArMzYsNyBAQAogI2luY2x1ZGUgPEdML2dsLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9GcmFtZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVWaWV3Lmg+Ci0jaW5j
bHVkZSA8V2ViQ29yZS9HTENvbnRleHRHTFguaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0dMQ29udGV4
dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2V0dGlu
Z3MuaD4KIApkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDhlMmZkZTMy
NjU4ZTY4YjU0ZDgwZGViOGJmYzg0YzQzN2FiMTdlODAuLjVlNmQ3YTI5MTliMjUwZDU3YjI0NTNh
MjkxZGUyN2E2M2I3MjY2ZTYgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyMSBAQAorMjAxMi0wOS0wNCAgSm9zw6kgRGFwZW5hIFBheiAgPGpkYXBlbmFA
aWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBBZGQgc3VwcG9ydCBmb3IgY3JlYXRpbmcgRUdM
IGNvbnRleHRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03NzkyMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBFR0wsIHVzaW5nIE9wZW5HTCBhbmQgT3BlbkdM
IEVTIDIuIEJvdGgKKyAgICAgICAgb3B0aW9ucyBhcmUgc2V0IHVwIG9uIGNvbXBpbGUgdGltZSwg
d2l0aCB0aGUgY29uZmlndXJlIG9wdGlvbnMKKyAgICAgICAgLS1lbmFibGUtZWdsIGFuZCAtLWVu
YWJsZS1nbGVzMi4KKworICAgICAgICBUaGUgaW1wbGVtZW50YXRpb24gb25seSBhZGRzIHN1cHBv
cnQgZm9yIEVHTCBvbiB0b3Agb2YgWDExLCB0bworICAgICAgICBpc29sYXRlIHRoZSBjaGFuZ2Vz
IHRvIHRoZSBtaW5pbXVtLiBNb3JlIGNoYW5nZXMgc2hvdWxkIGNvbWUKKyAgICAgICAgbGF0ZXIg
dG8gZW5hYmxlIEVHTCBmb3Igb3RoZXIgdGFyZ2V0cyAoYXMgV2F5bGFuZCkuCisKKyAgICAgICAg
KiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBjb25maWd1cmUuYWM6IG5ldyBjb25maWd1cmUg
b3B0aW9ucyAtLWVuYWJsZS1lZ2wgYW5kLS1lbmFibGUtZ2xlczIuCisKIDIwMTItMDktMDMgIEpp
bndvbyBTb25nICA8amlud29vNy5zb25nQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxdIFVz
ZSBXZWJLaXRWZXJzaW9uLmggdG8gZ2V0IHZlcnNpb24gaW5mb3JtYXRpb24KZGlmZiAtLWdpdCBh
L0dOVW1ha2VmaWxlLmFtIGIvR05VbWFrZWZpbGUuYW0KaW5kZXggMTY4MjcwZTgwYTZhOWQ3YjY1
Nzk1NTQyMzM2NmRjZmM0YzVjYWUzYS4uMTc5MzcwYjQwYWY2NzhiNDIwODAyN2EyNTg2ZjI0Zjhi
MjQ4Mjg5ZiAxMDA2NDQKLS0tIGEvR05VbWFrZWZpbGUuYW0KKysrIGIvR05VbWFrZWZpbGUuYW0K
QEAgLTIzNiw2ICsyMzYsMTYgQEAgZ2xvYmFsX2NwcGZsYWdzICs9IFwKIAktRFdURl9VU0VfR0xY
PTEKIGVuZGlmCiAKK2lmIFVTRV9FR0wKK2dsb2JhbF9jcHBmbGFncyArPSBcCisJLURXVEZfVVNF
X0VHTD0xCitlbmRpZgorCitpZiBVU0VfR0xFUzIKK2dsb2JhbF9jcHBmbGFncyArPSBcCisJLURX
VEZfVVNFX09QRU5HTF9FU18yPTEKK2VuZGlmCisKIGlmIFVTRV9PUEVOR0wKIGdsb2JhbF9jcHBm
bGFncyArPSBcCiAJLURXVEZfVVNFX09QRU5HTD0xCmRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMg
Yi9jb25maWd1cmUuYWMKaW5kZXggOTBiNDhlMzJkMjhlNTU1MWM3NzAyYzQ5ZGUzNjEyOGU0YWNh
YzkzMi4uNmE4ZTQ2YTQyODZhMGU3ZjJlNWQ0NjIwMGNiNjQ5YzY2ZDhlNmQwOCAxMDA2NDQKLS0t
IGEvY29uZmlndXJlLmFjCisrKyBiL2NvbmZpZ3VyZS5hYwpAQCAtNTQ3LDExICs1NDcsMzEgQEAg
QUNfQVJHX0VOQUJMRSh1bnN0YWJsZV9mZWF0dXJlcywKICAgICAgICAgICAgICAgW10sW2VuYWJs
ZV91bnN0YWJsZV9mZWF0dXJlcz0ibm8iXSkKIEFDX01TR19SRVNVTFQoWyRlbmFibGVfdW5zdGFi
bGVfZmVhdHVyZXNdKQogCitBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgdG8gZW5hYmxlIEVHTCBz
dXBwb3J0XSkKK0FDX0FSR19FTkFCTEUoZWdsLAorICAgICAgICAgICAgICBBQ19IRUxQX1NUUklO
RyhbLS1lbmFibGUtZWdsXSwgW2VuYWJsZSBzdXBwb3J0IGZvciBFR0wgW2RlZmF1bHQ9YXV0b11d
KSwKKyAgICAgICAgICAgICAgW10sIFtpZiB0ZXN0ICIkYnVpbGRfY3B1IiA9ICJhcm0iIHx8IHRl
c3QgIiR3aXRoX3RhcmdldCIgPSAid2F5bGFuZCI7IHRoZW4gZW5hYmxlX2VnbD0ieWVzIjsgZWxz
ZSBlbmFibGVfZWdsPSJubyI7IGZpXSkKK0FDX01TR19SRVNVTFQoWyRlbmFibGVfZWdsXSkKKwor
QUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIHRvIHVzZSBPcGVuR0wvRVMyIHN1cHBvcnRdKQorQUNf
QVJHX0VOQUJMRShnbGVzMiwKKyAgICAgICAgICAgICAgQUNfSEVMUF9TVFJJTkcoWy0tZW5hYmxl
LWdsZXMyXSwgW2VuYWJsZSBzdXBwb3J0IGZvciBPcGVuR0wvRVMyIFtkZWZhdWx0PWF1dG9dXSks
CisgICAgICAgICAgICAgIFtdLCBbaWYgdGVzdCAiJGVuYWJsZV9lZ2wiID0gInllcyI7IHRoZW4g
ZW5hYmxlX2dsZXMyPSJ5ZXMiOyBlbHNlIGVuYWJsZV9nbGVzMj0ibm8iOyBmaV0pCitBQ19NU0df
UkVTVUxUKFskZW5hYmxlX2dsZXMyXSkKKwogZm91bmRfb3BlbmdsPSJubyIKLWlmIHRlc3QgIiR3
aXRoX3RhcmdldCIgPSAieDExIjsgdGhlbgoraWYgdGVzdCAiJGVuYWJsZV9lZ2wiID0gInllcyI7
IHRoZW4KKyAgICBpZiB0ZXN0ICIkZW5hYmxlX2dsZXMyIiA9ICJ5ZXMiOyB0aGVuCisgICAgICAg
QUNfQ0hFQ0tfSEVBREVSUyhbR0xFUzIvZ2wyLmhdLCBbZm91bmRfb3BlbmdsPSJ5ZXMiXSwgW10p
CisgICAgZWxzZQorICAgICAgIEFDX0NIRUNLX0hFQURFUlMoW0dML2dsLmhdLCBbZm91bmRfb3Bl
bmdsPSJ5ZXMiXSwgW10pCisgICAgZmkKKyAgICBBQ19DSEVDS19IRUFERVJTKFtFR0wvZWdsLmhd
LCBbXSwgW2ZvdW5kX29wZW5nbD0ibm8iXSkKK2VsaWYgdGVzdCAiJHdpdGhfdGFyZ2V0IiA9ICJ4
MTEiOyB0aGVuCiAgICAgQUNfQ0hFQ0tfSEVBREVSUyhbR0wvZ2wuaF0sIFtmb3VuZF9vcGVuZ2w9
InllcyJdLCBbXSkKLSAgICBBQ19DSEVDS19IRUFERVJTKFtHTC9nbHguaF0sIFtdLCBbZm91bmRf
b3BlbmdsPSJubyJdKQorICAgIEFDX0NIRUNLX0hFQURFUlMoW0dML2dseC5oXSwgW2VuYWJsZV9n
bHg9InllcyJdLCBbZm91bmRfb3BlbmdsPSJubyJdKQogZmkKKwogQUNfTVNHX0NIRUNLSU5HKFt3
aGljaCBHUFUgYWNjZWxlcmF0aW9uIGJhY2tlbmQgdG8gdXNlXSkKIEFDX0FSR19XSVRIKGFjY2Vs
ZXJhdGlvbl9iYWNrZW5kLAogICAgICAgICAgICAgQUNfSEVMUF9TVFJJTkcoWy0td2l0aC1hY2Nl
bGVyYXRpb24tYmFja2VuZD1APDpAb3BlbmdsL2NsdXR0ZXIvbm9uZUA6PkBdLApAQCAtMTMwNiw3
ICsxMzI2LDE1IEBAIGlmIHRlc3QgIiR3aXRoX2FjY2VsZXJhdGlvbl9iYWNrZW5kIiA9ICJjbHV0
dGVyIjsgdGhlbgogZmkKIAogaWYgdGVzdCAiJHdpdGhfYWNjZWxlcmF0aW9uX2JhY2tlbmQiID0g
Im9wZW5nbCI7IHRoZW4KLSAgICBPUEVOR0xfTElCUz0iLWxHTCAtbGRsIgorICAgaWYgdGVzdCAi
JGVuYWJsZV9nbGVzMiIgPSAieWVzIjsgdGhlbgorICAgIE9QRU5HTF9MSUJTPSItbEdMRVN2MiIK
KyAgIGVsc2UKKyAgICBPUEVOR0xfTElCUz0iLWxHTCIKKyAgIGZpCisgICBpZiB0ZXN0ICIkZW5h
YmxlX2VnbCIgPSAieWVzIjsgdGhlbgorICAgIE9QRU5HTF9MSUJTKz0iIC1sRUdMIgorICAgZmkK
KyAgIE9QRU5HTF9MSUJTKz0iIC1sZGwiCiBmaQogQUNfU1VCU1QoW09QRU5HTF9MSUJTXSkKIApA
QCAtMTQxNSw4ICsxNDQzLDEwIEBAIEFNX0NPTkRJVElPTkFMKFtVU0VfVEVYVFVSRV9NQVBQRVJf
R0xdLCBbdGVzdCAiJGVuYWJsZV9hY2NlbGVyYXRlZF9jb21wb3NpdGluZyIKIEFNX0NPTkRJVElP
TkFMKFtVU0VfQ0xVVFRFUl0sIFt0ZXN0ICIkd2l0aF9hY2NlbGVyYXRpb25fYmFja2VuZCIgPSAi
Y2x1dHRlciJdKQogCiAjIFRoZXNlIGFyZSB0aGUgc2FtZSBub3csIGJ1dCB0aGV5IHdpbGwgc29v
biBiZSBzZXBhcmF0ZS4KLUFNX0NPTkRJVElPTkFMKFtVU0VfR0xYXSwgW3Rlc3QgIiR3aXRoX2Fj
Y2VsZXJhdGlvbl9iYWNrZW5kIiA9ICJvcGVuZ2wiXSkKIEFNX0NPTkRJVElPTkFMKFtVU0VfT1BF
TkdMXSwgW3Rlc3QgIiR3aXRoX2FjY2VsZXJhdGlvbl9iYWNrZW5kIiA9ICJvcGVuZ2wiXSkKK0FN
X0NPTkRJVElPTkFMKFtVU0VfRUdMXSwgW3Rlc3QgIiRlbmFibGVfZWdsIiA9ICJ5ZXMiXSkKK0FN
X0NPTkRJVElPTkFMKFtVU0VfR0xFUzJdLCBbdGVzdCAiJGVuYWJsZV9nbGVzMiIgPSAieWVzIl0p
CitBTV9DT05ESVRJT05BTChbVVNFX0dMWF0sIFt0ZXN0ICIkZW5hYmxlX2dseCIgPSAieWVzIl0p
CiAKICMgSW5kZXhlZERCIGltcGxpZXMgTGV2ZWxEQiwgYnV0IG90aGVyIGZlYXR1cmVzIG1heSBv
bmUgZGF5IHJlcXVpcmUgTGV2ZWxEQi4KIEFNX0NPTkRJVElPTkFMKFtFTkFCTEVfSU5ERVhFRF9E
QVRBQkFTRV0sW3Rlc3QgIiRlbmFibGVfaW5kZXhlZF9kYXRhYmFzZSIgPSAieWVzIl0pCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165571</attachid>
            <date>2012-09-25 03:38:40 -0700</date>
            <delta_ts>2012-09-25 06:23:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77921-20120925123759.patch</filename>
            <type>text/plain</type>
            <size>58564</size>
            <attacher name="José Dapena Paz">jdapena</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5NDc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWU4ODY0ODAxYTQ1YjQ1
NmQxOTFkYjgxMWU2NzVjMjM3YjI1NWFjYy4uOTNkMDJjM2Y1ODM5MjM5NzBmNDU3MGRmZjU1ZWY2
NTdkZmE0NTNjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgxIEBACisyMDEyLTA5LTI1ICBKb3PD
qSBEYXBlbmEgUGF6ICA8amRhcGVuYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIEFkZCBz
dXBwb3J0IGZvciBjcmVhdGluZyBFR0wgY29udGV4dHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3OTIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIEVHTCwg
dXNpbmcgT3BlbkdMIGFuZCBPcGVuR0wgRVMgMi4gQm90aAorICAgICAgICBvcHRpb25zIGFyZSBz
ZXQgdXAgb24gY29tcGlsZSB0aW1lLCB3aXRoIHRoZSBjb25maWd1cmUgb3B0aW9ucworICAgICAg
ICAtLWVuYWJsZS1lZ2wgYW5kIC0tZW5hYmxlLWdsZXMyLgorCisgICAgICAgIFRoZSBpbXBsZW1l
bnRhdGlvbiBvbmx5IGFkZHMgc3VwcG9ydCBmb3IgRUdMIG9uIHRvcCBvZiBYMTEsIHRvCisgICAg
ICAgIGlzb2xhdGUgdGhlIGNoYW5nZXMgdG8gdGhlIG1pbmltdW0uIE1vcmUgY2hhbmdlcyBzaG91
bGQgY29tZQorICAgICAgICBsYXRlciB0byBlbmFibGUgRUdMIGZvciBvdGhlciB0YXJnZXRzIChh
cyBXYXlsYW5kKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgcmVxdWlyZWQsIGFzIGV4aXN0aW5n
IFdlYkdMIGFuZCBBQyB0ZXN0cyBzaG91bGQgY292ZXIKKyAgICAgICAgdGhlIGNhc2VzLgorCisg
ICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oOgorICAgICAg
ICAoR3JhcGhpY3NDb250ZXh0M0QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL09wZW5H
TEVTU2hpbXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HTENvbnRleHQu
Y3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHQ6OnNo
YXJlZERpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0OjpjbGVhbnVwU2hhcmVk
RGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHQ6OmNyZWF0ZUNvbnRleHRGb3JX
aW5kb3cpOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0OjpjcmVhdGVPZmZzY3JlZW5Db250
ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HTENvbnRleHQuaDoKKyAg
ICAgICAgKEdMQ29udGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3Jh
cGhpY3NDb250ZXh0M0RDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpHcmFw
aGljc0NvbnRleHQzRCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNEOjppc0dMRVMyQ29tcGxpYW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpwYWludFRvVGV4dHVyZU1hcHBlcik6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpzaGFyZWRFR0xEaXNwbGF5KToK
KyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6Y2xlYW51cFNoYXJlZERpc3BsYXkpOgor
ICAgICAgICAoV2ViQ29yZTo6YWN0aXZlQ29udGV4dExpc3QpOgorICAgICAgICAoV2ViQ29yZTo6
R0xDb250ZXh0RUdMOjphZGRBY3RpdmVDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29u
dGV4dEVHTDo6cmVtb3ZlQWN0aXZlQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRl
eHRFR0w6OmNsZWFudXBBY3RpdmVDb250ZXh0c0F0RXhpdCk6CisgICAgICAgIChXZWJDb3JlOjpn
ZXRFR0xDb25maWcpOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0RUdMOjpjcmVhdGVXaW5k
b3dDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6Y3JlYXRlUGJ1ZmZl
ckNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0RUdMOjpjcmVhdGVQaXhtYXBD
b250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6Y3JlYXRlQ29udGV4dCk6
CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0w6OkdMQ29udGV4dEVHTCk6CisgICAgICAg
IChXZWJDb3JlOjpHTENvbnRleHRFR0w6On5HTENvbnRleHRFR0wpOgorICAgICAgICAoV2ViQ29y
ZTo6R0xDb250ZXh0RUdMOjpjYW5SZW5kZXJUb0RlZmF1bHRGcmFtZWJ1ZmZlcik6CisgICAgICAg
IChXZWJDb3JlOjpHTENvbnRleHRFR0w6OmRlZmF1bHRGcmFtZUJ1ZmZlclNpemUpOgorICAgICAg
ICAoV2ViQ29yZTo6R0xDb250ZXh0RUdMOjptYWtlQ29udGV4dEN1cnJlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6R0xDb250ZXh0RUdMOjpzd2FwQnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpH
TENvbnRleHRFR0w6OndhaXROYXRpdmUpOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0RUdM
OjpwbGF0Zm9ybUNvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENv
bnRleHRFR0wuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z2x4L0dMQ29udGV4dEdMWC5oLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChHTENvbnRl
eHRFR0wpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dseC9HTENvbnRleHRHTFguY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0R0xYOjpjbGVhbnVwQWN0aXZlQ29udGV4dHNB
dEV4aXQpOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0R0xYOjp3YWl0TmF0aXZlKToKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dseC9HTENvbnRl
eHRHTFguaDoKKyAgICAgICAgKEdMQ29udGV4dEdMWCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMRVMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnJlc2hhcGVGQk9zKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2d0
ay9SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWRp
cmVjdGVkWENvbXBvc2l0ZVdpbmRvdzo6UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6On5SZWRpcmVjdGVkWENv
bXBvc2l0ZVdpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjpSZWRpcmVjdGVkWENvbXBvc2l0ZVdp
bmRvdzo6cmVzaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvUmVkaXJlY3RlZFhDb21wb3Np
dGVXaW5kb3cuaDoKKwogMjAxMi0wOS0yNSAgUGV0ZXIgV2FuZyAgPHBldGVyLndhbmdAdG9yY2ht
b2JpbGUuY29tLmNuPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6ICBUaGUgSlMgY29kZSBpbmpl
Y3RlZCBieSB3b3JrZXIgaW5zcGVjdG9yIHNob3VsZG4ndCBiZSBldmFsdWF0ZWQgdGhyb3VnaCBK
U01haW5UaHJlYWRFeGVjU3RhdGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA4YmYyZWE5ZWM1MDRmMzIyNjZkNTFl
OTExMTU2NmM2YmZlZjlhN2UzLi5jOWMyMjYwMDNkNDUxZTVlNjZjYmUwMWMyYmJmMGVjNGJlNTlh
ZThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTItMDktMjUgIEpvc8OpIERhcGVu
YSBQYXogIDxqZGFwZW5hQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gQWRkIHN1cHBvcnQg
Zm9yIGNyZWF0aW5nIEVHTCBjb250ZXh0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9Nzc5MjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgRUdMLCB1c2luZyBP
cGVuR0wgYW5kIE9wZW5HTCBFUyAyLiBCb3RoCisgICAgICAgIG9wdGlvbnMgYXJlIHNldCB1cCBv
biBjb21waWxlIHRpbWUsIHdpdGggdGhlIGNvbmZpZ3VyZSBvcHRpb25zCisgICAgICAgIC0tZW5h
YmxlLWVnbCBhbmQgLS1lbmFibGUtZ2xlczIuCisKKyAgICAgICAgVGhlIGltcGxlbWVudGF0aW9u
IG9ubHkgYWRkcyBzdXBwb3J0IGZvciBFR0wgb24gdG9wIG9mIFgxMSwgdG8KKyAgICAgICAgaXNv
bGF0ZSB0aGUgY2hhbmdlcyB0byB0aGUgbWluaW11bS4gTW9yZSBjaGFuZ2VzIHNob3VsZCBjb21l
CisgICAgICAgIGxhdGVyIHRvIGVuYWJsZSBFR0wgZm9yIG90aGVyIHRhcmdldHMgKGFzIFdheWxh
bmQpLgorCisgICAgICAgIFtHVEtdIEFkZCBzdXBwb3J0IGZvciBjcmVhdGluZyBFR0wgY29udGV4
dHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3OTIx
CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xheWVyVHJlZUhvc3RHdGsuY3Bw
OgorCiAyMDEyLTA5LTI1ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNv
bT4KIAogICAgICAgICBbR1RLXSBEb24ndCB1c2UgdGhlIEMgQVBJIGludGVybmFsbHkgaW4gV2Vi
S2l0V2ViVmlldwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9T
b3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCBjZmQzZjhmMTBlZTY5ODEwM2MzZjBm
OTQxMmU5NTAwMzU0OTc0NzBlLi5hNWU3M2FhZWYzNzFhMDRlMWFmZDYwZjkxOWNjN2UwMzYwMDE2
YzU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMTEzLDYgKzExMyw3IEBAIHdlYmNvcmVndGtf
Y3BwZmxhZ3MgKz0gXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlb2Ns
dWUgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
IFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nbHggXAor
CS1JJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbCBcCiAJLUkk
KHNyY2RpcikvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyIFwKIAkt
SSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsgXAogCS1JJChz
cmNkaXIpL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ayBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUu
bGlzdC5hbQppbmRleCBkMmVkMjkxNWY2NWRhOWIzZjI1MTFkZTQ1NDEyNDVlZjQ1YjZjMTQ4Li5j
ZWMwOWU0OTg1NGY2ODIyODQwODUzMDhjYzI1NGVhY2FjMDA4NzU1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0KQEAgLTQ0MjYsMTQgKzQ0MjYsOSBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0g
XAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcCBcCiAJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCBcCiAJU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmggXAotCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVuR0wuY3Bw
IFwKLQlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uczNE
T3BlbkdMLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRl
bnNpb25zM0RPcGVuR0xDb21tb24uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvRXh0ZW5zaW9uczNET3BlbkdMQ29tbW9uLmggXAotCVNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTC5jcHAgXAog
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQz
RE9wZW5HTENvbW1vbi5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL09w
ZW5HTFNoaW1zLmNwcCBcCi0JU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvT3BlbkdM
U2hpbXMuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3Bl
blR5cGVWZXJ0aWNhbERhdGEuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
UGF0aC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGguaCBcCkBA
IC01OTY2LDggKzU5NjEsNiBAQCB3ZWJjb3JlZ3RrX3NvdXJjZXMgKz0gXAogCiBpZiBUQVJHRVRf
WDExCiB3ZWJjb3JlZ3RrX3NvdXJjZXMgKz0gXAotCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dseC9HTENvbnRleHRHTFguY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nbHgvR0xDb250ZXh0R0xYLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0dMQ29udGV4dC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0dMQ29udGV4dC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
R3RrV2lkZ2V0QmFja2luZ1N0b3JlWDExLmNwcCBcCkBAIC01OTc4LDYgKzU5NzEsMTYgQEAgd2Vi
Y29yZWd0a19zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbHVnaW5zL2d0ay9QbHVnaW5Q
YWNrYWdlR3RrLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGx1Z2lucy9ndGsvUGx1Z2luVmlld0d0
ay5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsdWdpbnMvZ3RrL3hlbWJlZC5oCitpZiBVU0VfRUdM
Cit3ZWJjb3JlZ3RrX3NvdXJjZXMgKz0gXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2VnbC9HTENvbnRleHRFR0wuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9lZ2wvR0xDb250ZXh0RUdMLmgKK2VuZGlmICMgRU5EIFVTRV9FR0wKK2lmIFVTRV9HTFgK
K3dlYmNvcmVndGtfc291cmNlcyArPSBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ2x4L0dMQ29udGV4dEdMWC5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dseC9HTENvbnRleHRHTFguaAorZW5kaWYgIyBFTkQgVVNFX0dMWAogZWxzZQogaWYgVEFS
R0VUX1dJTjMyCiB3ZWJjb3JlX3NvdXJjZXMgKz0gXApAQCAtNjAwOCw2ICs2MDExLDIxIEBAIHdl
YmNvcmVfc291cmNlcyArPSBcCiBlbmRpZiAjIEVORCBUQVJHRVRfV0lOMzIKIGVuZGlmICMgRU5E
IFRBUkdFVF9YMTEKIAoraWYgVVNFX0dMRVMyCit3ZWJjb3JlX3NvdXJjZXMgKz0gXAorCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVuR0xFUy5j
cHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25z
M0RPcGVuR0xFUy5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
R3JhcGhpY3NDb250ZXh0M0RPcGVuR0xFUy5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL09wZW5HTEVTU2hpbXMuaAorZWxzZQord2ViY29yZV9zb3VyY2VzICs9IFwKKwlT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uczNET3BlbkdM
LmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lv
bnMzRE9wZW5HTC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
R3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9PcGVuR0xTaGltcy5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL09wZW5HTFNoaW1zLmgKK2VuZGlmICMgRU5EIFVTRV9HTEVTMgorCiAjIC0tLS0KICMgaWN1
IHVuaWNvZGUgYmFja2VuZAogIyAtLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAppbmRleCA0MjA3NmZmNzhhOGQxOTdhMTI0
Njc1NTdkNjI0ZjhjYzkzOTMzNjcxLi5iYTYxNzFlZTI0NTI2ODI3ZDBjMDg5MGNmNzI1NDkxN2Nk
MGRjZjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQzRC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dDNELmgKQEAgLTM5NSw2ICszOTUsNyBAQCBwdWJsaWM6CiAgICAgICAgIFNU
RU5DSUxfSU5ERVg4ID0gMHg4RDQ4LAogICAgICAgICBERVBUSF9TVEVOQ0lMID0gMHg4NEY5LAog
ICAgICAgICBVTlNJR05FRF9JTlRfMjRfOCA9IDB4ODRGQSwKKyAgICAgICAgREVQVEgyNF9TVEVO
Q0lMOCA9IDB4ODhGMCwKICAgICAgICAgUkVOREVSQlVGRkVSX1dJRFRIID0gMHg4RDQyLAogICAg
ICAgICBSRU5ERVJCVUZGRVJfSEVJR0hUID0gMHg4RDQzLAogICAgICAgICBSRU5ERVJCVUZGRVJf
SU5URVJOQUxfRk9STUFUID0gMHg4RDQ0LApAQCAtOTc4LDcgKzk3OSw3IEBAIHB1YmxpYzoKICAg
ICBBTkdMRVdlYktpdEJyaWRnZSBtX2NvbXBpbGVyOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShC
TEFDS0JFUlJZKSB8fCAoUExBVEZPUk0oUVQpICYmIGRlZmluZWQoUVRfT1BFTkdMX0VTXzIpKQor
I2lmIFBMQVRGT1JNKEJMQUNLQkVSUlkpIHx8IChQTEFURk9STShRVCkgJiYgZGVmaW5lZChRVF9P
UEVOR0xfRVNfMikpIHx8IChQTEFURk9STShHVEspICYmIFVTRShPUEVOR0xfRVNfMikpCiAgICAg
ZnJpZW5kIGNsYXNzIEV4dGVuc2lvbnMzRE9wZW5HTEVTOwogICAgIE93blB0cjxFeHRlbnNpb25z
M0RPcGVuR0xFUz4gbV9leHRlbnNpb25zOwogI2VsaWYgIVBMQVRGT1JNKENIUk9NSVVNKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvT3BlbkdMRVNTaGltcy5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvT3BlbkdMRVNTaGltcy5oCmluZGV4
IDQwMTg3MDA0YWM2YTg5MDE1ZTQ4MzRjNWU2YzM1MDEzM2QxMDUxODMuLmJjYWY4NTVlYTZlMGMw
ZGE0YjkwZmQ2YWI4M2QzY2RmOThjNTA0ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL09wZW5HTEVTU2hpbXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9PcGVuR0xFU1NoaW1zLmgKQEAgLTI2LDcgKzI2LDcgQEAKICNpZm5kZWYg
T3BlbkdMRVNTaGltc19oCiAjZGVmaW5lIE9wZW5HTEVTU2hpbXNfaAogCi0jaWYgUExBVEZPUk0o
QkxBQ0tCRVJSWSkgfHwgUExBVEZPUk0oUVQpCisjaWYgUExBVEZPUk0oQkxBQ0tCRVJSWSkgfHwg
UExBVEZPUk0oUVQpIHx8IFBMQVRGT1JNKEdUSykKICNkZWZpbmUgZ2xCaW5kRnJhbWVidWZmZXJF
WFQgZ2xCaW5kRnJhbWVidWZmZXIKICNkZWZpbmUgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyREVYVCBn
bEZyYW1lYnVmZmVyVGV4dHVyZTJECiAjZGVmaW5lIGdsQmluZFJlbmRlcmJ1ZmZlckVYVCBnbEJp
bmRSZW5kZXJidWZmZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0dMQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9HTENvbnRleHQuY3BwCmluZGV4IDNiODA0ZjYwMmNjZjc4YWJjYzc0NWMwOWYxM2I4
MGRmNTFiNjg4ODQuLjBhZDc0MmI3MDAxNzc2YmYyN2IxOTAyMjYyNmRjNDZhMjM2ZDY3NzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dMQ29udGV4
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR0xDb250
ZXh0LmNwcApAQCAtMjEsMTAgKzIxLDEyIEBACiAKICNpZiBVU0UoT1BFTkdMKQogCisjaW5jbHVk
ZSAiR0xDb250ZXh0RUdMLmgiCisjaW5jbHVkZSAiR0xDb250ZXh0R0xYLmgiCiAjaW5jbHVkZSA8
d3RmL01haW5UaHJlYWQuaD4KIAotI2lmIFVTRShHTFgpCi0jaW5jbHVkZSAiR0xDb250ZXh0R0xY
LmgiCisjaWYgUExBVEZPUk0oWDExKQorI2luY2x1ZGUgPFgxMS9YbGliLmg+CiAjZW5kaWYKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzYsMTAgKzM4LDg4IEBAIEdMQ29udGV4dCogR0xDb250
ZXh0OjpzaGFyaW5nQ29udGV4dCgpCiAgICAgcmV0dXJuIHNoYXJpbmcuZ2V0KCk7CiB9CiAKKyNp
ZiBQTEFURk9STShYMTEpCisvLyBXZSBkbyBub3Qgd2FudCB0byBjYWxsIGdsWE1ha2VDb250ZXh0
Q3VycmVudCB1c2luZyBkaWZmZXJlbnQgRGlzcGxheSBwb2ludGVycywKKy8vIGJlY2F1c2UgaXQg
bWlnaHQgbGVhZCB0byBjcmFzaGVzIGluIHNvbWUgZHJpdmVycyAoZmdscngpLiBXZSB1c2UgYSBz
aGFyZWQgZGlzcGxheQorLy8gcG9pbnRlciBoZXJlLgorc3RhdGljIERpc3BsYXkqIGdTaGFyZWRY
MTFEaXNwbGF5ID0gMDsKK0Rpc3BsYXkqIEdMQ29udGV4dDo6c2hhcmVkWDExRGlzcGxheSgpCit7
CisgICAgaWYgKCFnU2hhcmVkWDExRGlzcGxheSkKKyAgICAgICAgZ1NoYXJlZFgxMURpc3BsYXkg
PSBYT3BlbkRpc3BsYXkoMCk7CisgICAgcmV0dXJuIGdTaGFyZWRYMTFEaXNwbGF5OworfQorCit2
b2lkIEdMQ29udGV4dDo6Y2xlYW51cFNoYXJlZFgxMURpc3BsYXkoKQoreworICAgIGlmICghZ1No
YXJlZFgxMURpc3BsYXkpCisgICAgICAgIHJldHVybjsKKyAgICBYQ2xvc2VEaXNwbGF5KGdTaGFy
ZWRYMTFEaXNwbGF5KTsKKyAgICBnU2hhcmVkWDExRGlzcGxheSA9IDA7Cit9CisjZW5kaWYgLy8g
UExBVEZPUk0oWDExKQorCisvLyBCZWNhdXNlIG9mIGRyaXZlciBidWdzLCBleGl0aW5nIHRoZSBw
cm9ncmFtIHdoZW4gdGhlcmUgYXJlIGFjdGl2ZSBwYnVmZmVycworLy8gY2FuIGNyYXNoIHRoZSBY
IHNlcnZlciAodGhpcyBoYXMgYmVlbiBvYnNlcnZlZCB3aXRoIHRoZSBvZmZpY2lhbCBOdmlkaWEg
ZHJpdmVycykuCisvLyBXZSBuZWVkIHRvIGVuc3VyZSB0aGF0IHdlIGNsZWFuIGV2ZXJ5dGhpbmcg
dXAgb24gZXhpdC4gVGhlcmUgYXJlIHNldmVyYWwgcmVhc29ucworLy8gdGhhdCBHcmFwaGljc0Nv
bnRleHQzRHMgd2lsbCBzdGlsbCBiZSBhbGl2ZSBhdCBleGl0LCBpbmNsdWRpbmcgdXNlciBlcnJv
ciAobWVtb3J5CisvLyBsZWFrcykgYW5kIHRoZSBwYWdlIGNhY2hlLiBJbiBhbnkgY2FzZSwgd2Ug
ZG9uJ3Qgd2FudCB0aGUgWCBzZXJ2ZXIgdG8gY3Jhc2guCit0eXBlZGVmIFZlY3RvcjxHTENvbnRl
eHQqPiBBY3RpdmVDb250ZXh0TGlzdDsKK3N0YXRpYyBBY3RpdmVDb250ZXh0TGlzdCYgYWN0aXZl
Q29udGV4dExpc3QoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQWN0aXZlQ29udGV4dExp
c3QsIGFjdGl2ZUNvbnRleHRzLCAoKSk7CisgICAgcmV0dXJuIGFjdGl2ZUNvbnRleHRzOworfQor
Cit2b2lkIEdMQ29udGV4dDo6YWRkQWN0aXZlQ29udGV4dChHTENvbnRleHQqIGNvbnRleHQpCit7
CisgICAgc3RhdGljIGJvb2wgYWRkZWRBdEV4aXRIYW5kbGVyID0gZmFsc2U7CisgICAgaWYgKCFh
ZGRlZEF0RXhpdEhhbmRsZXIpIHsKKyAgICAgICAgYXRleGl0KCZHTENvbnRleHQ6OmNsZWFudXBB
Y3RpdmVDb250ZXh0c0F0RXhpdCk7CisgICAgICAgIGFkZGVkQXRFeGl0SGFuZGxlciA9IHRydWU7
CisgICAgfQorICAgIGFjdGl2ZUNvbnRleHRMaXN0KCkuYXBwZW5kKGNvbnRleHQpOworfQorCitz
dGF0aWMgYm9vbCBnQ2xlYW5pbmdVcEF0RXhpdCA9IGZhbHNlOworCit2b2lkIEdMQ29udGV4dDo6
cmVtb3ZlQWN0aXZlQ29udGV4dChHTENvbnRleHQqIGNvbnRleHQpCit7CisgICAgLy8gSWYgd2Ug
YXJlIGNsZWFuaW5nIHVwIHRoZSBjb250ZXh0IGxpc3QgYXQgZXhpdCwgZG9uJ3QgYm90aGVyIHJl
bW92aW5nIHRoZSBjb250ZXh0CisgICAgLy8gZnJvbSB0aGUgbGlzdCwgc2luY2Ugd2UgZG9uJ3Qg
d2FudCB0byBtb2RpZnkgdGhlIGxpc3Qgd2hpbGUgaXQncyBiZWluZyBpdGVyYXRlZC4KKyAgICBp
ZiAoZ0NsZWFuaW5nVXBBdEV4aXQpCisgICAgICAgIHJldHVybjsKKworICAgIEFjdGl2ZUNvbnRl
eHRMaXN0JiBjb250ZXh0TGlzdCA9IGFjdGl2ZUNvbnRleHRMaXN0KCk7CisgICAgc2l6ZV90IGkg
PSBjb250ZXh0TGlzdC5maW5kKGNvbnRleHQpOworICAgIGlmIChpICE9IG5vdEZvdW5kKQorICAg
ICAgICBjb250ZXh0TGlzdC5yZW1vdmUoaSk7Cit9CisKK3ZvaWQgR0xDb250ZXh0OjpjbGVhbnVw
QWN0aXZlQ29udGV4dHNBdEV4aXQoKQoreworICAgIGdDbGVhbmluZ1VwQXRFeGl0ID0gdHJ1ZTsK
KworICAgIEFjdGl2ZUNvbnRleHRMaXN0JiBjb250ZXh0TGlzdCA9IGFjdGl2ZUNvbnRleHRMaXN0
KCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb250ZXh0TGlzdC5zaXplKCk7ICsraSkK
KyAgICAgICAgZGVsZXRlIGNvbnRleHRMaXN0W2ldOworCisjaWYgUExBVEZPUk0oWDExKQorICAg
IGNsZWFudXBTaGFyZWRYMTFEaXNwbGF5KCk7CisjZW5kaWYKK30KKworCisKIFBhc3NPd25QdHI8
R0xDb250ZXh0PiBHTENvbnRleHQ6OmNyZWF0ZUNvbnRleHRGb3JXaW5kb3codWludDY0X3Qgd2lu
ZG93SGFuZGxlLCBHTENvbnRleHQqIHNoYXJpbmdDb250ZXh0KQogewogI2lmIFVTRShHTFgpCi0g
ICAgcmV0dXJuIEdMQ29udGV4dEdMWDo6Y3JlYXRlQ29udGV4dCh3aW5kb3dIYW5kbGUsIHNoYXJp
bmdDb250ZXh0KTsKKyAgICBpZiAoT3duUHRyPEdMQ29udGV4dD4gZ2x4Q29udGV4dCA9IEdMQ29u
dGV4dEdMWDo6Y3JlYXRlQ29udGV4dCh3aW5kb3dIYW5kbGUsIHNoYXJpbmdDb250ZXh0KSkKKyAg
ICAgICAgcmV0dXJuIGdseENvbnRleHQucmVsZWFzZSgpOworI2VuZGlmCisjaWYgVVNFKEVHTCkK
KyAgICBpZiAoT3duUHRyPEdMQ29udGV4dD4gZWdsQ29udGV4dCA9IEdMQ29udGV4dEVHTDo6Y3Jl
YXRlQ29udGV4dCh3aW5kb3dIYW5kbGUsIHNoYXJpbmdDb250ZXh0KSkKKyAgICAgICAgcmV0dXJu
IGVnbENvbnRleHQucmVsZWFzZSgpOwogI2VuZGlmCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CkBA
IC00OCwxMCArMTI4LDE1IEBAIEdMQ29udGV4dDo6R0xDb250ZXh0KCkKIHsKIH0KIAotUGFzc093
blB0cjxHTENvbnRleHQ+IEdMQ29udGV4dDo6Y3JlYXRlT2Zmc2NyZWVuQ29udGV4dChHTENvbnRl
eHQqIHNoYXJpbmcpCitQYXNzT3duUHRyPEdMQ29udGV4dD4gR0xDb250ZXh0OjpjcmVhdGVPZmZz
Y3JlZW5Db250ZXh0KEdMQ29udGV4dCogc2hhcmluZ0NvbnRleHQpCiB7CiAjaWYgVVNFKEdMWCkK
LSAgICByZXR1cm4gR0xDb250ZXh0R0xYOjpjcmVhdGVDb250ZXh0KDAsIHNoYXJpbmcpOworICAg
IGlmIChPd25QdHI8R0xDb250ZXh0PiBnbHhDb250ZXh0ID0gR0xDb250ZXh0R0xYOjpjcmVhdGVD
b250ZXh0KDAsIHNoYXJpbmdDb250ZXh0KSkKKyAgICAgICAgcmV0dXJuIGdseENvbnRleHQucmVs
ZWFzZSgpOworI2VuZGlmCisjaWYgVVNFKEVHTCkKKyAgICBpZiAoT3duUHRyPEdMQ29udGV4dD4g
ZWdsQ29udGV4dCA9IEdMQ29udGV4dEVHTDo6Y3JlYXRlQ29udGV4dCgwLCBzaGFyaW5nQ29udGV4
dCkpCisgICAgICAgIHJldHVybiBlZ2xDb250ZXh0LnJlbGVhc2UoKTsKICNlbmRpZgogICAgIHJl
dHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vR0xDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9HTENvbnRleHQuaAppbmRleCBjMjNhNDZjZjEzMzAyYzQ4ZWQwY2JlMDNiMzVjYjU1
YTYxZTk0ODJjLi4xYTg4MDcyMjJmMjI5YWEzNjJiNzdkNjY2ODg3ZmI2YjE3Y2YzM2Q3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HTENvbnRleHQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HTENvbnRleHQu
aApAQCAtMjUsNiArMjUsMTAgQEAKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNs
dWRlIDx3dGYvUGFzc093blB0ci5oPgogCisjaWYgUExBVEZPUk0oWDExKQordHlwZWRlZiBzdHJ1
Y3QgX1hEaXNwbGF5IERpc3BsYXk7CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBHTENvbnRleHQgewpAQCAtMzksOSArNDMsMTkgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
fkdMQ29udGV4dCgpOwogICAgIHZpcnR1YWwgYm9vbCBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAg
ICB2aXJ0dWFsIHZvaWQgc3dhcEJ1ZmZlcnMoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHdhaXRO
YXRpdmUoKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGNhblJlbmRlclRvRGVmYXVsdEZyYW1lYnVm
ZmVyKCkgPSAwOwogICAgIHZpcnR1YWwgSW50U2l6ZSBkZWZhdWx0RnJhbWVCdWZmZXJTaXplKCkg
PSAwOwogCisjaWYgUExBVEZPUk0oWDExKQorICAgIHN0YXRpYyBEaXNwbGF5KiBzaGFyZWRYMTFE
aXNwbGF5KCk7CisgICAgc3RhdGljIHZvaWQgY2xlYW51cFNoYXJlZFgxMURpc3BsYXkoKTsKKyNl
bmRpZgorCisgICAgc3RhdGljIHZvaWQgYWRkQWN0aXZlQ29udGV4dChHTENvbnRleHQqKTsKKyAg
ICBzdGF0aWMgdm9pZCByZW1vdmVBY3RpdmVDb250ZXh0KEdMQ29udGV4dCopOworICAgIHN0YXRp
YyB2b2lkIGNsZWFudXBBY3RpdmVDb250ZXh0c0F0RXhpdCgpOworCiAjaWYgVVNFKDNEX0dSQVBI
SUNTKQogICAgIHZpcnR1YWwgUGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCBwbGF0Zm9ybUNvbnRl
eHQoKSA9IDA7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RDYWlyby5jcHAKaW5kZXgg
ZGMxMmY2YzVkNjJkNjQ3MWU1NDllZGQ4ZTBhZjRkNDM4MjY5MDExNC4uNzAzM2ZhNmRhNjc2MTAx
MzZiNDQzYmY2OTFkMzFjNmYzNmQ0NjBmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RDYWlyby5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RDYWly
by5jcHAKQEAgLTMwLDEyICszMCwxMCBAQAogCiAjaWYgVVNFKDNEX0dSQVBISUNTKQogCi0jaW5j
bHVkZSAiRXh0ZW5zaW9uczNET3BlbkdMLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0RQ
cml2YXRlLmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJJbWFnZVNvdXJjZS5oIgog
I2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0jaW5jbHVkZSAiT3BlbkdMU2hpbXMuaCIKICNp
bmNsdWRlICJQbGF0Zm9ybUNvbnRleHRDYWlyby5oIgogI2luY2x1ZGUgIlJlZlB0ckNhaXJvLmgi
CiAjaW5jbHVkZSAiU2hhZGVyTGFuZy5oIgpAQCAtNDQsNiArNDIsMTMgQEAKICNpbmNsdWRlIDx3
dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAorI2lmIFVTRShPUEVO
R0xfRVNfMikKKyNpbmNsdWRlICJFeHRlbnNpb25zM0RPcGVuR0xFUy5oIgorI2Vsc2UKKyNpbmNs
dWRlICJFeHRlbnNpb25zM0RPcGVuR0wuaCIKKyNpbmNsdWRlICJPcGVuR0xTaGltcy5oIgorI2Vu
ZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQz
RD4gR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZShHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRl
cyBhdHRyaWJ1dGVzLCBIb3N0V2luZG93KiBob3N0V2luZG93LCBHcmFwaGljc0NvbnRleHQzRDo6
UmVuZGVyU3R5bGUgcmVuZGVyU3R5bGUpCkBAIC01NSw3ICs2MCw5IEBAIFBhc3NSZWZQdHI8R3Jh
cGhpY3NDb250ZXh0M0Q+IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0
M0Q6OkF0dHJpCiAgICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQgPSBmYWxzZTsKICAgICBzdGF0
aWMgYm9vbCBzdWNjZXNzID0gdHJ1ZTsKICAgICBpZiAoIWluaXRpYWxpemVkKSB7CisjaWYgIVVT
RShPUEVOR0xfRVNfMikKICAgICAgICAgc3VjY2VzcyA9IGluaXRpYWxpemVPcGVuR0xTaGltcygp
OworI2VuZGlmCiAgICAgICAgIGluaXRpYWxpemVkID0gdHJ1ZTsKICAgICB9CiAgICAgaWYgKCFz
dWNjZXNzKQpAQCAtOTAsMjYgKzk3LDI2IEBAIEdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0Nv
bnRleHQzRChHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRyaWJ1dGVzLCBICiAgICAg
ICAgIDo6Z2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtX3RleHR1cmUpOwogICAgICAgICA6
OmdsVGV4UGFyYW1ldGVyZihHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdM
X0xJTkVBUik7CiAgICAgICAgIDo6Z2xUZXhQYXJhbWV0ZXJmKEdMX1RFWFRVUkVfMkQsIEdMX1RF
WFRVUkVfTUlOX0ZJTFRFUiwgR0xfTElORUFSKTsKLSAgICAgICAgOjpnbFRleFBhcmFtZXRlcmko
R0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1MsIEdMX0NMQU1QKTsKLSAgICAgICAgOjpn
bFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1QsIEdMX0NMQU1Q
KTsKKyAgICAgICAgOjpnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9X
UkFQX1MsIEdMX0NMQU1QX1RPX0VER0UpOworICAgICAgICA6OmdsVGV4UGFyYW1ldGVyaShHTF9U
RVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfVCwgR0xfQ0xBTVBfVE9fRURHRSk7CiAgICAgICAg
IDo6Z2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCAwKTsKIAogICAgICAgICAvLyBDcmVhdGUg
YW4gRkJPLgotICAgICAgICA6OmdsR2VuRnJhbWVidWZmZXJzRVhUKDEsICZtX2Zibyk7Ci0gICAg
ICAgIDo6Z2xCaW5kRnJhbWVidWZmZXJFWFQoR0xfRlJBTUVCVUZGRVJfRVhULCBtX2Zibyk7Cisg
ICAgICAgIDo6Z2xHZW5GcmFtZWJ1ZmZlcnMoMSwgJm1fZmJvKTsKKyAgICAgICAgOjpnbEJpbmRG
cmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbV9mYm8pOwogCiAgICAgICAgIG1fYm91bmRGQk8g
PSBtX2ZibzsKICAgICAgICAgaWYgKCFtX2F0dHJzLmFudGlhbGlhcyAmJiAobV9hdHRycy5zdGVu
Y2lsIHx8IG1fYXR0cnMuZGVwdGgpKQotICAgICAgICAgICAgOjpnbEdlblJlbmRlcmJ1ZmZlcnNF
WFQoMSwgJm1fZGVwdGhTdGVuY2lsQnVmZmVyKTsKKyAgICAgICAgICAgIDo6Z2xHZW5SZW5kZXJi
dWZmZXJzKDEsICZtX2RlcHRoU3RlbmNpbEJ1ZmZlcik7CiAKICAgICAgICAgLy8gQ3JlYXRlIGEg
bXVsdGlzYW1wbGUgRkJPLgogICAgICAgICBpZiAobV9hdHRycy5hbnRpYWxpYXMpIHsKLSAgICAg
ICAgICAgIDo6Z2xHZW5GcmFtZWJ1ZmZlcnNFWFQoMSwgJm1fbXVsdGlzYW1wbGVGQk8pOwotICAg
ICAgICAgICAgOjpnbEJpbmRGcmFtZWJ1ZmZlckVYVChHTF9GUkFNRUJVRkZFUl9FWFQsIG1fbXVs
dGlzYW1wbGVGQk8pOworICAgICAgICAgICAgOjpnbEdlbkZyYW1lYnVmZmVycygxLCAmbV9tdWx0
aXNhbXBsZUZCTyk7CisgICAgICAgICAgICA6OmdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVG
RkVSLCBtX211bHRpc2FtcGxlRkJPKTsKICAgICAgICAgICAgIG1fYm91bmRGQk8gPSBtX211bHRp
c2FtcGxlRkJPOwotICAgICAgICAgICAgOjpnbEdlblJlbmRlcmJ1ZmZlcnNFWFQoMSwgJm1fbXVs
dGlzYW1wbGVDb2xvckJ1ZmZlcik7CisgICAgICAgICAgICA6OmdsR2VuUmVuZGVyYnVmZmVycygx
LCAmbV9tdWx0aXNhbXBsZUNvbG9yQnVmZmVyKTsKICAgICAgICAgICAgIGlmIChtX2F0dHJzLnN0
ZW5jaWwgfHwgbV9hdHRycy5kZXB0aCkKLSAgICAgICAgICAgICAgICA6OmdsR2VuUmVuZGVyYnVm
ZmVyc0VYVCgxLCAmbV9tdWx0aXNhbXBsZURlcHRoU3RlbmNpbEJ1ZmZlcik7CisgICAgICAgICAg
ICAgICAgOjpnbEdlblJlbmRlcmJ1ZmZlcnMoMSwgJm1fbXVsdGlzYW1wbGVEZXB0aFN0ZW5jaWxC
dWZmZXIpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xMjksOCArMTM2LDExIEBAIEdyYXBoaWNz
Q29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRChHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRl
cyBhdHRyaWJ1dGVzLCBICiAgICAgQU5HTEVSZXNvdXJjZXMuTWF4RHJhd0J1ZmZlcnMgPSAxOwog
ICAgIG1fY29tcGlsZXIuc2V0UmVzb3VyY2VzKEFOR0xFUmVzb3VyY2VzKTsKIAorI2lmICFVU0Uo
T1BFTkdMX0VTXzIpCiAgICAgOjpnbEVuYWJsZShHTF9WRVJURVhfUFJPR1JBTV9QT0lOVF9TSVpF
KTsKICAgICA6OmdsRW5hYmxlKEdMX1BPSU5UX1NQUklURSk7CisjZW5kaWYKKwogICAgIDo6Z2xD
bGVhckNvbG9yKDAsIDAsIDAsIDApOwogfQogCkBAIC0xNDIsMjAgKzE1MiwxNSBAQCBHcmFwaGlj
c0NvbnRleHQzRDo6fkdyYXBoaWNzQ29udGV4dDNEKCkKICAgICBtYWtlQ29udGV4dEN1cnJlbnQo
KTsKICAgICA6OmdsRGVsZXRlVGV4dHVyZXMoMSwgJm1fdGV4dHVyZSk7CiAgICAgaWYgKG1fYXR0
cnMuYW50aWFsaWFzKSB7Ci0gICAgICAgIDo6Z2xEZWxldGVSZW5kZXJidWZmZXJzRVhUKDEsICZt
X211bHRpc2FtcGxlQ29sb3JCdWZmZXIpOworICAgICAgICA6OmdsRGVsZXRlUmVuZGVyYnVmZmVy
cygxLCAmbV9tdWx0aXNhbXBsZUNvbG9yQnVmZmVyKTsKICAgICAgICAgaWYgKG1fYXR0cnMuc3Rl
bmNpbCB8fCBtX2F0dHJzLmRlcHRoKQotICAgICAgICAgICAgOjpnbERlbGV0ZVJlbmRlcmJ1ZmZl
cnNFWFQoMSwgJm1fbXVsdGlzYW1wbGVEZXB0aFN0ZW5jaWxCdWZmZXIpOwotICAgICAgICA6Omds
RGVsZXRlRnJhbWVidWZmZXJzRVhUKDEsICZtX211bHRpc2FtcGxlRkJPKTsKKyAgICAgICAgICAg
IDo6Z2xEZWxldGVSZW5kZXJidWZmZXJzKDEsICZtX211bHRpc2FtcGxlRGVwdGhTdGVuY2lsQnVm
ZmVyKTsKKyAgICAgICAgOjpnbERlbGV0ZUZyYW1lYnVmZmVycygxLCAmbV9tdWx0aXNhbXBsZUZC
Tyk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKG1fYXR0cnMuc3RlbmNpbCB8fCBtX2F0dHJz
LmRlcHRoKQotICAgICAgICAgICAgOjpnbERlbGV0ZVJlbmRlcmJ1ZmZlcnNFWFQoMSwgJm1fZGVw
dGhTdGVuY2lsQnVmZmVyKTsKKyAgICAgICAgICAgIDo6Z2xEZWxldGVSZW5kZXJidWZmZXJzKDEs
ICZtX2RlcHRoU3RlbmNpbEJ1ZmZlcik7CiAgICAgfQotICAgIDo6Z2xEZWxldGVGcmFtZWJ1ZmZl
cnNFWFQoMSwgJm1fZmJvKTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cmVsZWFzZVNo
YWRlckNvbXBpbGVyKCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIDo6Z2xEZWxldGVG
cmFtZWJ1ZmZlcnMoMSwgJm1fZmJvKTsKIH0KIAogYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0
SW1hZ2VEYXRhKEltYWdlKiBpbWFnZSwgdW5zaWduZWQgaW50IGZvcm1hdCwgdW5zaWduZWQgaW50
IHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBpZ25vcmVHYW1tYUFuZENvbG9yUHJv
ZmlsZSwgVmVjdG9yPHVpbnQ4X3Q+JiBvdXRwdXRWZWN0b3IpCkBAIC0yNTgsNyArMjYzLDExIEBA
IFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QgR3JhcGhpY3NDb250ZXh0M0Q6OnBsYXRmb3JtR3Jh
cGhpY3NDb250ZXh0M0QoKQogCiBib29sIEdyYXBoaWNzQ29udGV4dDNEOjppc0dMRVMyQ29tcGxp
YW50KCkgY29uc3QKIHsKKyNpZiBVU0UoT1BFTkdMX0VTXzIpCisgICAgcmV0dXJuIHRydWU7Cisj
ZWxzZQogICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgogfQogCiAjaWYgVVNFKEFDQ0VMRVJBVEVE
X0NPTVBPU0lUSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5jcHAKaW5kZXgg
ZDg4MjQyZjk2N2E2ZDRiMTliNTExZjQ0NTY5YTMzM2ZhNGIyYTUzMC4uNTJmNzMxM2Q3OGEzZWMz
OGRjNjZhNzdiMmJhNGQ3NWEzMTBmMDIyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRFBy
aXZhdGUuY3BwCkBAIC0yNCw3ICsyNCwxMyBAQAogCiAjaW5jbHVkZSAiSG9zdFdpbmRvdy5oIgog
I2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaWYgVVNFKE9QRU5HTF9FU18yKQorI2luY2x1
ZGUgIk9wZW5HTEVTU2hpbXMuaCIKKyNpbmNsdWRlIDxHTEVTMi9nbDIuaD4KKyNpbmNsdWRlIDxH
TEVTMi9nbDJleHQuaD4KKyNlbHNlCiAjaW5jbHVkZSAiT3BlbkdMU2hpbXMuaCIKKyNlbmRpZgog
I2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dENhaXJvLmgiCiAjaW5jbHVkZSA8d3RmL093bkFycmF5
UHRyLmg+CiAKQEAgLTEyNSw3ICsxMzEsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0
ZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlcgogICAg
ICAgICAgICAgbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKIAogICAgICAgICBtX2Nv
bnRleHQtPnJlc29sdmVNdWx0aXNhbXBsaW5nSWZOZWNlc3NhcnkoKTsKLSAgICAgICAgZ2xCaW5k
RnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2NvbnRleHQtPm1f
Ym91bmRGQk8pOworICAgICAgICA6OmdsQmluZEZyYW1lYnVmZmVyRVhUKEdyYXBoaWNzQ29udGV4
dDNEOjpGUkFNRUJVRkZFUiwgbV9jb250ZXh0LT5tX2JvdW5kRkJPKTsKIAogICAgICAgICBpZiAo
cHJldmlvdXNBY3RpdmVDb250ZXh0ICYmIHByZXZpb3VzQWN0aXZlQ29udGV4dCAhPSBtX2dsQ29u
dGV4dCkKICAgICAgICAgICAgIHByZXZpb3VzQWN0aXZlQ29udGV4dC0+bWFrZUNvbnRleHRDdXJy
ZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wv
R0xDb250ZXh0RUdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9H
TENvbnRleHRFR0wuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNjNzM4ZmFiMzEyNjZhNDUyYjBlZTkzZWVkOTcw
MWM2NjgzNjkzN2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmNwcApAQCAtMCwwICsxLDI5NCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBJZ2FsaWEsIFMuTC4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
KyAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoK
KyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdl
bmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90
LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHTENvbnRleHRFR0wuaCIKKwor
I2lmIFVTRShFR0wpCisKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgorI2luY2x1ZGUg
PHd0Zi9Pd25QdHIuaD4KKworI2lmIFVTRShPUEVOR0xfRVNfMikKKyNpbmNsdWRlIDxHTEVTMi9n
bDIuaD4KKyNpbmNsdWRlIDxHTEVTMi9nbDJleHQuaD4KKyNlbHNlCisjaW5jbHVkZSAiT3BlbkdM
U2hpbXMuaCIKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBFR0xEaXNw
bGF5IGdTaGFyZWRFR0xEaXNwbGF5ID0gRUdMX05PX0RJU1BMQVk7CisKKyNpZiBVU0UoT1BFTkdM
X0VTXzIpCitzdGF0aWMgY29uc3QgRUdMZW51bSBnR0xBcGkgPSBFR0xfT1BFTkdMX0VTX0FQSTsK
KyNlbHNlCitzdGF0aWMgY29uc3QgRUdMZW51bSBnR0xBcGkgPSBFR0xfT1BFTkdMX0FQSTsKKyNl
bmRpZgorCitzdGF0aWMgRUdMRGlzcGxheSBzaGFyZWRFR0xEaXNwbGF5KCkKK3sKKyAgICBzdGF0
aWMgYm9vbCBpbml0aWFsaXplZCA9IGZhbHNlOworICAgIGlmICghaW5pdGlhbGl6ZWQpIHsKKyAg
ICAgICAgaW5pdGlhbGl6ZWQgPSB0cnVlOworI2lmIFBMQVRGT1JNKFgxMSkKKyAgICAgICAgZ1No
YXJlZEVHTERpc3BsYXkgPSBlZ2xHZXREaXNwbGF5KEdMQ29udGV4dDo6c2hhcmVkWDExRGlzcGxh
eSgpKTsKKyNlbHNlCisgICAgICAgIGdTaGFyZWRFR0xEaXNwbGF5ID0gZWdsR2V0RGlzcGxheShF
R0xfREVGQVVMVF9ESVNQTEFZKTsKKyNlbmRpZgorICAgICAgICBpZiAoZ1NoYXJlZEVHTERpc3Bs
YXkgIT0gRUdMX05PX0RJU1BMQVkgJiYgKCFlZ2xJbml0aWFsaXplKGdTaGFyZWRFR0xEaXNwbGF5
LCAwLCAwKSB8fCAhZWdsQmluZEFQSShnR0xBcGkpKSkKKyAgICAgICAgICAgIGdTaGFyZWRFR0xE
aXNwbGF5ID0gRUdMX05PX0RJU1BMQVk7CisgICAgfQorICAgIHJldHVybiBnU2hhcmVkRUdMRGlz
cGxheTsKK30KKwordm9pZCBHTENvbnRleHRFR0w6OmNsZWFudXBTaGFyZWRFR0xEaXNwbGF5KCkK
K3sKKyAgICBpZiAoZ1NoYXJlZEVHTERpc3BsYXkpCisgICAgICAgIGdTaGFyZWRFR0xEaXNwbGF5
ID0gRUdMX05PX0RJU1BMQVk7Cit9CisKKworc3RhdGljIGNvbnN0IEVHTGludCBnQ29udGV4dEF0
dHJpYnV0ZXNbXSA9IHsKKyNpZiBVU0UoT1BFTkdMX0VTXzIpCisgICAgRUdMX0NPTlRFWFRfQ0xJ
RU5UX1ZFUlNJT04sIDIsCisjZW5kaWYKKyAgICBFR0xfTk9ORQorfTsKKwordm9pZCBHTENvbnRl
eHRFR0w6OmFkZEFjdGl2ZUNvbnRleHQoR0xDb250ZXh0RUdMKiBjb250ZXh0KQoreworICAgIHN0
YXRpYyBib29sIGFkZGVkQXRFeGl0SGFuZGxlciA9IGZhbHNlOworICAgIGlmICghYWRkZWRBdEV4
aXRIYW5kbGVyKSB7CisgICAgICAgIGF0ZXhpdCgmR0xDb250ZXh0RUdMOjpjbGVhbnVwU2hhcmVk
RUdMRGlzcGxheSk7CisgICAgICAgIGFkZGVkQXRFeGl0SGFuZGxlciA9IHRydWU7CisgICAgfQor
ICAgIEdMQ29udGV4dDo6YWRkQWN0aXZlQ29udGV4dChjb250ZXh0KTsKK30KKworc3RhdGljIGJv
b2wgZ2V0RUdMQ29uZmlnKEVHTENvbmZpZyogY29uZmlnLCBHTENvbnRleHRFR0w6OkVHTFN1cmZh
Y2VUeXBlIHN1cmZhY2VUeXBlKQoreworICAgIEVHTGludCBhdHRyaWJ1dGVMaXN0W10gPSB7Cisj
aWYgVVNFKE9QRU5HTF9FU18yKQorICAgICAgICBFR0xfUkVOREVSQUJMRV9UWVBFLCBFR0xfT1BF
TkdMX0VTMl9CSVQsCisjZWxzZQorICAgICAgICBFR0xfUkVOREVSQUJMRV9UWVBFLCBFR0xfT1BF
TkdMX0JJVCwKKyNlbmRpZgorICAgICAgICBFR0xfUkVEX1NJWkUsIDgsCisgICAgICAgIEVHTF9H
UkVFTl9TSVpFLCA4LAorICAgICAgICBFR0xfQkxVRV9TSVpFLCA4LAorICAgICAgICBFR0xfU1RF
TkNJTF9TSVpFLCA4LAorICAgICAgICBFR0xfQUxQSEFfU0laRSwgOCwKKyAgICAgICAgRUdMX05P
TkUsIEVHTF9OT05FLAorICAgICAgICBFR0xfTk9ORQorICAgIH07CisKKyAgICBpZiAoc3VyZmFj
ZVR5cGUgPT0gR0xDb250ZXh0RUdMOjpQYnVmZmVyU3VyZmFjZSkgeworICAgICAgICBhdHRyaWJ1
dGVMaXN0WzEwXSA9IEVHTF9TVVJGQUNFX1RZUEU7CisgICAgICAgIGF0dHJpYnV0ZUxpc3RbMTFd
ID0gRUdMX1BCVUZGRVJfQklUOworICAgIH0gZWxzZSBpZiAoc3VyZmFjZVR5cGUgPT0gR0xDb250
ZXh0RUdMOjpQaXhtYXBTdXJmYWNlKSB7CisgICAgICAgIGF0dHJpYnV0ZUxpc3RbMTBdID0gRUdM
X1NVUkZBQ0VfVFlQRTsKKyAgICAgICAgYXR0cmlidXRlTGlzdFsxMV0gPSBFR0xfUElYTUFQX0JJ
VDsKKyAgICB9IGVsc2UgaWYgKHN1cmZhY2VUeXBlID09IEdMQ29udGV4dEVHTDo6V2luZG93U3Vy
ZmFjZSkgeworICAgICAgICBhdHRyaWJ1dGVMaXN0WzEwXSA9IEVHTF9TVVJGQUNFX1RZUEU7Cisg
ICAgICAgIGF0dHJpYnV0ZUxpc3RbMTFdID0gRUdMX1dJTkRPV19CSVQ7CisgICAgfQorCisgICAg
RUdMaW50IG51bWJlckNvbmZpZ3NSZXR1cm5lZDsKKyAgICByZXR1cm4gZWdsQ2hvb3NlQ29uZmln
KHNoYXJlZEVHTERpc3BsYXkoKSwgYXR0cmlidXRlTGlzdCwgY29uZmlnLCAxLCAmbnVtYmVyQ29u
Zmlnc1JldHVybmVkKSAmJiBudW1iZXJDb25maWdzUmV0dXJuZWQ7Cit9CisKK1Bhc3NPd25QdHI8
R0xDb250ZXh0RUdMPiBHTENvbnRleHRFR0w6OmNyZWF0ZVdpbmRvd0NvbnRleHQoRUdMTmF0aXZl
V2luZG93VHlwZSB3aW5kb3csIEdMQ29udGV4dCogc2hhcmluZ0NvbnRleHQpCit7CisgICAgRUdM
Q29udGV4dCBlZ2xTaGFyaW5nQ29udGV4dCA9IHNoYXJpbmdDb250ZXh0ID8gc3RhdGljX2Nhc3Q8
R0xDb250ZXh0RUdMKj4oc2hhcmluZ0NvbnRleHQpLT5tX2NvbnRleHQgOiAwOworCisgICAgRUdM
RGlzcGxheSBkaXNwbGF5ID0gc2hhcmVkRUdMRGlzcGxheSgpOworICAgIGlmIChkaXNwbGF5ID09
IEVHTF9OT19ESVNQTEFZKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIEVHTENvbmZp
ZyBjb25maWc7CisgICAgaWYgKCFnZXRFR0xDb25maWcoJmNvbmZpZywgV2luZG93U3VyZmFjZSkp
CisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgRUdMQ29udGV4dCBjb250ZXh0ID0gZWds
Q3JlYXRlQ29udGV4dChkaXNwbGF5LCBjb25maWcsIGVnbFNoYXJpbmdDb250ZXh0LCBnQ29udGV4
dEF0dHJpYnV0ZXMpOworICAgIGlmIChjb250ZXh0ID09IEVHTF9OT19DT05URVhUKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKworICAgIEVHTFN1cmZhY2Ugc3VyZmFjZSA9IGVnbENyZWF0ZVdp
bmRvd1N1cmZhY2UoZGlzcGxheSwgY29uZmlnLCB3aW5kb3csIDApOworICAgIGlmIChzdXJmYWNl
ID09IEVHTF9OT19TVVJGQUNFKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVy
biBhZG9wdFB0cihuZXcgR0xDb250ZXh0RUdMKGNvbnRleHQsIHN1cmZhY2UsIFdpbmRvd1N1cmZh
Y2UpKTsKK30KKworUGFzc093blB0cjxHTENvbnRleHRFR0w+IEdMQ29udGV4dEVHTDo6Y3JlYXRl
UGJ1ZmZlckNvbnRleHQoRUdMQ29udGV4dCBzaGFyaW5nQ29udGV4dCkKK3sKKyAgICBFR0xEaXNw
bGF5IGRpc3BsYXkgPSBzaGFyZWRFR0xEaXNwbGF5KCk7CisgICAgaWYgKGRpc3BsYXkgPT0gRUdM
X05PX0RJU1BMQVkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgRUdMQ29uZmlnIGNv
bmZpZzsKKyAgICBpZiAoIWdldEVHTENvbmZpZygmY29uZmlnLCBQYnVmZmVyU3VyZmFjZSkpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgRUdMQ29udGV4dCBjb250ZXh0ID0gZWdsQ3Jl
YXRlQ29udGV4dChkaXNwbGF5LCBjb25maWcsIHNoYXJpbmdDb250ZXh0LCBnQ29udGV4dEF0dHJp
YnV0ZXMpOworICAgIGlmIChjb250ZXh0ID09IEVHTF9OT19DT05URVhUKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKworICAgIHN0YXRpYyBjb25zdCBpbnQgcGJ1ZmZlckF0dHJpYnV0ZXNbXSA9
IHsgRUdMX1dJRFRILCAxLCBFR0xfSEVJR0hULCAxLCBFR0xfTk9ORSB9OworICAgIEVHTFN1cmZh
Y2Ugc3VyZmFjZSA9IGVnbENyZWF0ZVBidWZmZXJTdXJmYWNlKGRpc3BsYXksIGNvbmZpZywgcGJ1
ZmZlckF0dHJpYnV0ZXMpOworICAgIGlmIChzdXJmYWNlID09IEVHTF9OT19TVVJGQUNFKSB7Cisg
ICAgICAgIGVnbERlc3Ryb3lDb250ZXh0KGRpc3BsYXksIGNvbnRleHQpOworICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IEdMQ29udGV4dEVH
TChjb250ZXh0LCBzdXJmYWNlLCBQYnVmZmVyU3VyZmFjZSkpOworfQorCitQYXNzT3duUHRyPEdM
Q29udGV4dEVHTD4gR0xDb250ZXh0RUdMOjpjcmVhdGVQaXhtYXBDb250ZXh0KEVHTENvbnRleHQg
c2hhcmluZ0NvbnRleHQpCit7CisjaWYgUExBVEZPUk0oWDExKQorICAgIEVHTERpc3BsYXkgZGlz
cGxheSA9IHNoYXJlZEVHTERpc3BsYXkoKTsKKyAgICBpZiAoZGlzcGxheSA9PSBFR0xfTk9fRElT
UExBWSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBFR0xDb25maWcgY29uZmlnOwor
ICAgIGlmICghZ2V0RUdMQ29uZmlnKCZjb25maWcsIFBpeG1hcFN1cmZhY2UpKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKworICAgIEVHTENvbnRleHQgY29udGV4dCA9IGVnbENyZWF0ZUNvbnRl
eHQoZGlzcGxheSwgY29uZmlnLCBzaGFyaW5nQ29udGV4dCwgZ0NvbnRleHRBdHRyaWJ1dGVzKTsK
KyAgICBpZiAoY29udGV4dCA9PSBFR0xfTk9fQ09OVEVYVCkKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisKKyAgICBFR0xpbnQgZGVwdGg7CisgICAgaWYgKCFlZ2xHZXRDb25maWdBdHRyaWIoZGlz
cGxheSwgY29uZmlnLCBFR0xfREVQVEhfU0laRSwgJmRlcHRoKSkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisKKyAgICBQaXhtYXAgcGl4bWFwID0gWENyZWF0ZVBpeG1hcChzaGFyZWRYMTFEaXNw
bGF5KCksIERlZmF1bHRSb290V2luZG93KHNoYXJlZFgxMURpc3BsYXkoKSksIDEsIDEsIGRlcHRo
KTsKKyAgICBpZiAoIXBpeG1hcCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBFR0xT
dXJmYWNlIHN1cmZhY2UgPSBlZ2xDcmVhdGVQaXhtYXBTdXJmYWNlKGRpc3BsYXksIGNvbmZpZywg
cGl4bWFwLCAwKTsKKyNlbHNlCisgICAgRUdMU3VyZmFjZSBzdXJmYWNlID0gRUdMX05PX1NVUkZB
Q0U7CisjZW5kaWYKKyAgICBpZiAoc3VyZmFjZSA9PSBFR0xfTk9fU1VSRkFDRSkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IEdMQ29udGV4dEVHTChj
b250ZXh0LCBzdXJmYWNlLCBQaXhtYXBTdXJmYWNlKSk7Cit9CisKK1Bhc3NPd25QdHI8R0xDb250
ZXh0RUdMPiBHTENvbnRleHRFR0w6OmNyZWF0ZUNvbnRleHQoRUdMTmF0aXZlV2luZG93VHlwZSB3
aW5kb3csIEdMQ29udGV4dCogc2hhcmluZ0NvbnRleHQpCit7CisgICAgaWYgKCFzaGFyZWRFR0xE
aXNwbGF5KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgc3RhdGljIGJvb2wgaW5p
dGlhbGl6ZWQgPSBmYWxzZTsKKyAgICBzdGF0aWMgYm9vbCBzdWNjZXNzID0gdHJ1ZTsKKyAgICBp
ZiAoIWluaXRpYWxpemVkKSB7CisjaWYgIVVTRShPUEVOR0xfRVNfMikKKyAgICAgICAgc3VjY2Vz
cyA9IGluaXRpYWxpemVPcGVuR0xTaGltcygpOworI2VuZGlmCisgICAgICAgIGluaXRpYWxpemVk
ID0gdHJ1ZTsKKyAgICB9CisgICAgaWYgKCFzdWNjZXNzKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKworICAgIEVHTENvbnRleHQgZWdsU2hhcmluZ0NvbnRleHQgPSBzaGFyaW5nQ29udGV4dCA/
IHN0YXRpY19jYXN0PEdMQ29udGV4dEVHTCo+KHNoYXJpbmdDb250ZXh0KS0+bV9jb250ZXh0IDog
MDsKKyAgICBPd25QdHI8R0xDb250ZXh0RUdMPiBjb250ZXh0ID0gd2luZG93ID8gY3JlYXRlV2lu
ZG93Q29udGV4dCh3aW5kb3csIHNoYXJpbmdDb250ZXh0KSA6IG51bGxwdHI7CisgICAgaWYgKCFj
b250ZXh0KQorICAgICAgICBjb250ZXh0ID0gY3JlYXRlUGl4bWFwQ29udGV4dChlZ2xTaGFyaW5n
Q29udGV4dCk7CisKKyAgICBpZiAoIWNvbnRleHQpCisgICAgICAgIGNvbnRleHQgPSBjcmVhdGVQ
YnVmZmVyQ29udGV4dChlZ2xTaGFyaW5nQ29udGV4dCk7CisgICAgCisgICAgcmV0dXJuIGNvbnRl
eHQucmVsZWFzZSgpOworfQorCitHTENvbnRleHRFR0w6OkdMQ29udGV4dEVHTChFR0xDb250ZXh0
IGNvbnRleHQsIEVHTFN1cmZhY2Ugc3VyZmFjZSwgRUdMU3VyZmFjZVR5cGUgdHlwZSkKKyAgICA6
IG1fY29udGV4dChjb250ZXh0KQorICAgICwgbV9zdXJmYWNlKHN1cmZhY2UpCisgICAgLCBtX3R5
cGUodHlwZSkKK3sKKyAgICBhZGRBY3RpdmVDb250ZXh0KHRoaXMpOworfQorCitHTENvbnRleHRF
R0w6On5HTENvbnRleHRFR0woKQoreworICAgIEVHTERpc3BsYXkgZGlzcGxheSA9IHNoYXJlZEVH
TERpc3BsYXkoKTsKKyAgICBpZiAobV9jb250ZXh0KSB7CisgICAgICAgIGdsQmluZEZyYW1lYnVm
ZmVyKEdMX0ZSQU1FQlVGRkVSLCAwKTsKKyAgICAgICAgZWdsTWFrZUN1cnJlbnQoZGlzcGxheSwg
RUdMX05PX1NVUkZBQ0UsIEVHTF9OT19TVVJGQUNFLCBFR0xfTk9fQ09OVEVYVCk7CisgICAgICAg
IGVnbERlc3Ryb3lDb250ZXh0KGRpc3BsYXksIG1fY29udGV4dCk7CisgICAgfQorCisgICAgaWYg
KG1fc3VyZmFjZSkKKyAgICAgICAgZWdsRGVzdHJveVN1cmZhY2UoZGlzcGxheSwgbV9zdXJmYWNl
KTsKKyAgICByZW1vdmVBY3RpdmVDb250ZXh0KHRoaXMpOworfQorCitib29sIEdMQ29udGV4dEVH
TDo6Y2FuUmVuZGVyVG9EZWZhdWx0RnJhbWVidWZmZXIoKQoreworICAgIHJldHVybiBtX3R5cGUg
PT0gV2luZG93U3VyZmFjZTsKK30KKworSW50U2l6ZSBHTENvbnRleHRFR0w6OmRlZmF1bHRGcmFt
ZUJ1ZmZlclNpemUoKQoreworICAgIGlmICghY2FuUmVuZGVyVG9EZWZhdWx0RnJhbWVidWZmZXIo
KSkKKyAgICAgICAgcmV0dXJuIEludFNpemUoKTsKKworICAgIEVHTGludCB3aWR0aCwgaGVpZ2h0
OworICAgIGlmICghZWdsUXVlcnlTdXJmYWNlKHNoYXJlZEVHTERpc3BsYXkoKSwgbV9zdXJmYWNl
LCBFR0xfV0lEVEgsICZ3aWR0aCkKKyAgICAgICAgfHwgIWVnbFF1ZXJ5U3VyZmFjZShzaGFyZWRF
R0xEaXNwbGF5KCksIG1fc3VyZmFjZSwgRUdMX0hFSUdIVCwgJmhlaWdodCkpCisgICAgICAgIHJl
dHVybiBJbnRTaXplKCk7CisKKyAgICByZXR1cm4gSW50U2l6ZSh3aWR0aCwgaGVpZ2h0KTsKK30K
KworYm9vbCBHTENvbnRleHRFR0w6Om1ha2VDb250ZXh0Q3VycmVudCgpCit7CisgICAgQVNTRVJU
KG1fY29udGV4dCAmJiBtX3N1cmZhY2UpOworCisgICAgR0xDb250ZXh0OjptYWtlQ29udGV4dEN1
cnJlbnQoKTsKKyAgICBpZiAoZWdsR2V0Q3VycmVudENvbnRleHQoKSA9PSBtX2NvbnRleHQpCisg
ICAgICAgIHJldHVybiB0cnVlOworCisgICAgcmV0dXJuIGVnbE1ha2VDdXJyZW50KHNoYXJlZEVH
TERpc3BsYXkoKSwgbV9zdXJmYWNlLCBtX3N1cmZhY2UsIG1fY29udGV4dCk7Cit9CisKK3ZvaWQg
R0xDb250ZXh0RUdMOjpzd2FwQnVmZmVycygpCit7CisgICAgaWYgKG1fc3VyZmFjZSkKKyAgICAg
ICAgZWdsU3dhcEJ1ZmZlcnMoc2hhcmVkRUdMRGlzcGxheSgpLCBtX3N1cmZhY2UpOworfQorCit2
b2lkIEdMQ29udGV4dEVHTDo6d2FpdE5hdGl2ZSgpCit7CisgICAgZWdsV2FpdE5hdGl2ZShFR0xf
Q09SRV9OQVRJVkVfRU5HSU5FKTsKK30KKworI2lmIEVOQUJMRShXRUJHTCkKK1BsYXRmb3JtR3Jh
cGhpY3NDb250ZXh0M0QgR0xDb250ZXh0RUdMOjpwbGF0Zm9ybUNvbnRleHQoKQoreworICAgIHJl
dHVybiBtX2NvbnRleHQ7Cit9CisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gVVNFKEVHTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2VnbC9HTENvbnRleHRFR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2VnbC9HTENvbnRleHRFR0wuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNWQ0YmY3NTYxNWM3YjcyMzhmYTFh
ZDJjYjk2YTIyMzlhNTUyOTJmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5oCkBAIC0wLDAgKzEsNjggQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlhIFMuTC4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAq
ICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor
ICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2Vy
IEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYg
bm90LCB3cml0ZSB0byB0aGUgRnJlZQorICogIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAx
IFVTQQorICovCisKKyNpZm5kZWYgR0xDb250ZXh0RUdMX2gKKyNkZWZpbmUgR0xDb250ZXh0RUdM
X2gKKworI2lmIFVTRShFR0wpCisKKyNpbmNsdWRlICJHTENvbnRleHQuaCIKKworI2luY2x1ZGUg
PEVHTC9lZ2wuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBHTENvbnRleHRFR0wg
OiBwdWJsaWMgR0xDb250ZXh0IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShHTENvbnRleHRF
R0wpOworcHVibGljOgorICAgIGVudW0gRUdMU3VyZmFjZVR5cGUgeyBQYnVmZmVyU3VyZmFjZSwg
V2luZG93U3VyZmFjZSwgUGl4bWFwU3VyZmFjZSB9OworICAgIHN0YXRpYyBQYXNzT3duUHRyPEdM
Q29udGV4dEVHTD4gY3JlYXRlQ29udGV4dChFR0xOYXRpdmVXaW5kb3dUeXBlLCBHTENvbnRleHQq
IHNoYXJpbmdDb250ZXh0ID0gMCk7CisgICAgc3RhdGljIFBhc3NPd25QdHI8R0xDb250ZXh0RUdM
PiBjcmVhdGVXaW5kb3dDb250ZXh0KEVHTE5hdGl2ZVdpbmRvd1R5cGUsIEdMQ29udGV4dCogc2hh
cmluZ0NvbnRleHQpOworCisgICAgdmlydHVhbCB+R0xDb250ZXh0RUdMKCk7CisgICAgdmlydHVh
bCBib29sIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIHZpcnR1YWwgdm9pZCBzd2FwQnVmZmVy
cygpOworICAgIHZpcnR1YWwgdm9pZCB3YWl0TmF0aXZlKCk7CisgICAgdmlydHVhbCBib29sIGNh
blJlbmRlclRvRGVmYXVsdEZyYW1lYnVmZmVyKCk7CisgICAgdmlydHVhbCBJbnRTaXplIGRlZmF1
bHRGcmFtZUJ1ZmZlclNpemUoKTsKKworCisjaWYgRU5BQkxFKFdFQkdMKQorICAgIHZpcnR1YWwg
UGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCBwbGF0Zm9ybUNvbnRleHQoKTsKKyNlbmRpZgorCitw
cml2YXRlOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPEdMQ29udGV4dEVHTD4gY3JlYXRlUGJ1ZmZl
ckNvbnRleHQoRUdMQ29udGV4dCBzaGFyaW5nQ29udGV4dCk7CisgICAgc3RhdGljIFBhc3NPd25Q
dHI8R0xDb250ZXh0RUdMPiBjcmVhdGVQaXhtYXBDb250ZXh0KEVHTENvbnRleHQgc2hhcmluZ0Nv
bnRleHQpOworCisgICAgc3RhdGljIHZvaWQgYWRkQWN0aXZlQ29udGV4dChHTENvbnRleHRFR0wq
KTsKKyAgICBzdGF0aWMgdm9pZCBjbGVhbnVwU2hhcmVkRUdMRGlzcGxheSh2b2lkKTsKKworICAg
IEdMQ29udGV4dEVHTChFR0xDb250ZXh0LCBFR0xTdXJmYWNlLCBFR0xTdXJmYWNlVHlwZSk7CisK
KyAgICBFR0xDb250ZXh0IG1fY29udGV4dDsKKyAgICBFR0xTdXJmYWNlIG1fc3VyZmFjZTsKKyAg
ICBFR0xTdXJmYWNlVHlwZSBtX3R5cGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBVU0UoRUdMKQorCisjZW5kaWYgLy8gR0xDb250ZXh0RUdMX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dseC9HTENvbnRleHRHTFguY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dMQ29udGV4dEdMWC5jcHAK
aW5kZXggOTU0MGI4NmEwYmFmNDQ2YmZiNmY2OWQwYmQ2ODY5MjdmNWU3OTIxMy4uMDliNjMwNzc0
Yjk5ZjRmYmUwZTA1M2NhYWU5NDhiMDE5YzJjMjllOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dMQ29udGV4dEdMWC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dMQ29udGV4dEdMWC5jcHAKQEAgLTI3LDcxICsy
Nyw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gV2UgZG8gbm90IHdhbnQgdG8gY2Fs
bCBnbFhNYWtlQ29udGV4dEN1cnJlbnQgdXNpbmcgZGlmZmVyZW50IERpc3BsYXkgcG9pbnRlcnMs
Ci0vLyBiZWNhdXNlIGl0IG1pZ2h0IGxlYWQgdG8gY3Jhc2hlcyBpbiBzb21lIGRyaXZlcnMgKGZn
bHJ4KS4gV2UgdXNlIGEgc2hhcmVkIGRpc3BsYXkKLS8vIHBvaW50ZXIgaGVyZS4KLXN0YXRpYyBE
aXNwbGF5KiBnU2hhcmVkRGlzcGxheSA9IDA7Ci1EaXNwbGF5KiBHTENvbnRleHRHTFg6OnNoYXJl
ZERpc3BsYXkoKQotewotICAgIGlmICghZ1NoYXJlZERpc3BsYXkpCi0gICAgICAgIGdTaGFyZWRE
aXNwbGF5ID0gWE9wZW5EaXNwbGF5KDApOwotICAgIHJldHVybiBnU2hhcmVkRGlzcGxheTsKLX0K
LQotLy8gQmVjYXVzZSBvZiBkcml2ZXIgYnVncywgZXhpdGluZyB0aGUgcHJvZ3JhbSB3aGVuIHRo
ZXJlIGFyZSBhY3RpdmUgcGJ1ZmZlcnMKLS8vIGNhbiBjcmFzaCB0aGUgWCBzZXJ2ZXIgKHRoaXMg
aGFzIGJlZW4gb2JzZXJ2ZWQgd2l0aCB0aGUgb2ZmaWNpYWwgTnZpZGlhIGRyaXZlcnMpLgotLy8g
V2UgbmVlZCB0byBlbnN1cmUgdGhhdCB3ZSBjbGVhbiBldmVyeXRoaW5nIHVwIG9uIGV4aXQuIFRo
ZXJlIGFyZSBzZXZlcmFsIHJlYXNvbnMKLS8vIHRoYXQgR3JhcGhpY3NDb250ZXh0M0RzIHdpbGwg
c3RpbGwgYmUgYWxpdmUgYXQgZXhpdCwgaW5jbHVkaW5nIHVzZXIgZXJyb3IgKG1lbW9yeQotLy8g
bGVha3MpIGFuZCB0aGUgcGFnZSBjYWNoZS4gSW4gYW55IGNhc2UsIHdlIGRvbid0IHdhbnQgdGhl
IFggc2VydmVyIHRvIGNyYXNoLgotdHlwZWRlZiBWZWN0b3I8R0xDb250ZXh0Kj4gQWN0aXZlQ29u
dGV4dExpc3Q7Ci1zdGF0aWMgQWN0aXZlQ29udGV4dExpc3QmIGFjdGl2ZUNvbnRleHRMaXN0KCkK
LXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEFjdGl2ZUNvbnRleHRMaXN0LCBhY3RpdmVDb250
ZXh0cywgKCkpOwotICAgIHJldHVybiBhY3RpdmVDb250ZXh0czsKLX0KLQotdm9pZCBHTENvbnRl
eHRHTFg6OmFkZEFjdGl2ZUNvbnRleHQoR0xDb250ZXh0R0xYKiBjb250ZXh0KQotewotICAgIHN0
YXRpYyBib29sIGFkZGVkQXRFeGl0SGFuZGxlciA9IGZhbHNlOwotICAgIGlmICghYWRkZWRBdEV4
aXRIYW5kbGVyKSB7Ci0gICAgICAgIGF0ZXhpdCgmR0xDb250ZXh0R0xYOjpjbGVhbnVwQWN0aXZl
Q29udGV4dHNBdEV4aXQpOwotICAgICAgICBhZGRlZEF0RXhpdEhhbmRsZXIgPSB0cnVlOwotICAg
IH0KLSAgICBhY3RpdmVDb250ZXh0TGlzdCgpLmFwcGVuZChjb250ZXh0KTsKLX0KLQotc3RhdGlj
IGJvb2wgZ0NsZWFuaW5nVXBBdEV4aXQgPSBmYWxzZTsKLQotdm9pZCBHTENvbnRleHRHTFg6OnJl
bW92ZUFjdGl2ZUNvbnRleHQoR0xDb250ZXh0KiBjb250ZXh0KQotewotICAgIC8vIElmIHdlIGFy
ZSBjbGVhbmluZyB1cCB0aGUgY29udGV4dCBsaXN0IGF0IGV4aXQsIGRvbid0IGJvdGhlciByZW1v
dmluZyB0aGUgY29udGV4dAotICAgIC8vIGZyb20gdGhlIGxpc3QsIHNpbmNlIHdlIGRvbid0IHdh
bnQgdG8gbW9kaWZ5IHRoZSBsaXN0IHdoaWxlIGl0J3MgYmVpbmcgaXRlcmF0ZWQuCi0gICAgaWYg
KGdDbGVhbmluZ1VwQXRFeGl0KQotICAgICAgICByZXR1cm47Ci0KLSAgICBBY3RpdmVDb250ZXh0
TGlzdCYgY29udGV4dExpc3QgPSBhY3RpdmVDb250ZXh0TGlzdCgpOwotICAgIHNpemVfdCBpID0g
Y29udGV4dExpc3QuZmluZChjb250ZXh0KTsKLSAgICBpZiAoaSAhPSBub3RGb3VuZCkKLSAgICAg
ICAgY29udGV4dExpc3QucmVtb3ZlKGkpOwotfQotCi12b2lkIEdMQ29udGV4dEdMWDo6Y2xlYW51
cEFjdGl2ZUNvbnRleHRzQXRFeGl0KCkKLXsKLSAgICBnQ2xlYW5pbmdVcEF0RXhpdCA9IHRydWU7
Ci0KLSAgICBBY3RpdmVDb250ZXh0TGlzdCYgY29udGV4dExpc3QgPSBhY3RpdmVDb250ZXh0TGlz
dCgpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY29udGV4dExpc3Quc2l6ZSgpOyArK2kp
Ci0gICAgICAgIGRlbGV0ZSBjb250ZXh0TGlzdFtpXTsKLQotICAgIGlmICghZ1NoYXJlZERpc3Bs
YXkpCi0gICAgICAgIHJldHVybjsKLSAgICBYQ2xvc2VEaXNwbGF5KGdTaGFyZWREaXNwbGF5KTsK
LSAgICBnU2hhcmVkRGlzcGxheSA9IDA7Ci19Ci0KIFBhc3NPd25QdHI8R0xDb250ZXh0R0xYPiBH
TENvbnRleHRHTFg6OmNyZWF0ZVdpbmRvd0NvbnRleHQoWElEIHdpbmRvdywgR0xDb250ZXh0KiBz
aGFyaW5nQ29udGV4dCkKIHsKLSAgICBEaXNwbGF5KiBkaXNwbGF5ID0gc2hhcmVkRGlzcGxheSgp
OworICAgIERpc3BsYXkqIGRpc3BsYXkgPSBzaGFyZWRYMTFEaXNwbGF5KCk7CiAgICAgWFdpbmRv
d0F0dHJpYnV0ZXMgYXR0cmlidXRlczsKICAgICBpZiAoIVhHZXRXaW5kb3dBdHRyaWJ1dGVzKGRp
c3BsYXksIHdpbmRvdywgJmF0dHJpYnV0ZXMpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAg
LTEzMCw3ICs2OCw3IEBAIFBhc3NPd25QdHI8R0xDb250ZXh0R0xYPiBHTENvbnRleHRHTFg6OmNy
ZWF0ZVBidWZmZXJDb250ZXh0KEdMWENvbnRleHQgc2hhcmluZ0NvCiAgICAgfTsKIAogICAgIGlu
dCByZXR1cm5lZEVsZW1lbnRzOwotICAgIERpc3BsYXkqIGRpc3BsYXkgPSBzaGFyZWREaXNwbGF5
KCk7CisgICAgRGlzcGxheSogZGlzcGxheSA9IHNoYXJlZFgxMURpc3BsYXkoKTsKICAgICBHTFhG
QkNvbmZpZyogY29uZmlncyA9IGdsWENob29zZUZCQ29uZmlnKGRpc3BsYXksIDAsIGZiQ29uZmln
QXR0cmlidXRlcywgJnJldHVybmVkRWxlbWVudHMpOwogICAgIGlmICghcmV0dXJuZWRFbGVtZW50
cykgewogICAgICAgICBYRnJlZShjb25maWdzKTsKQEAgLTE3MCw3ICsxMDgsNyBAQCBQYXNzT3du
UHRyPEdMQ29udGV4dEdMWD4gR0xDb250ZXh0R0xYOjpjcmVhdGVQaXhtYXBDb250ZXh0KEdMWENv
bnRleHQgc2hhcmluZ0NvbgogICAgICAgICAwCiAgICAgfTsKIAotICAgIERpc3BsYXkqIGRpc3Bs
YXkgPSBzaGFyZWREaXNwbGF5KCk7CisgICAgRGlzcGxheSogZGlzcGxheSA9IHNoYXJlZFgxMURp
c3BsYXkoKTsKICAgICBYVmlzdWFsSW5mbyogdmlzdWFsSW5mbyA9IGdsWENob29zZVZpc3VhbChk
aXNwbGF5LCBEZWZhdWx0U2NyZWVuKGRpc3BsYXkpLCB2aXN1YWxBdHRyaWJ1dGVzKTsKICAgICBp
ZiAoIXZpc3VhbEluZm8pCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjAwLDcgKzEzOCw3
IEBAIFBhc3NPd25QdHI8R0xDb250ZXh0R0xYPiBHTENvbnRleHRHTFg6OmNyZWF0ZVBpeG1hcENv
bnRleHQoR0xYQ29udGV4dCBzaGFyaW5nQ29uCiAKIFBhc3NPd25QdHI8R0xDb250ZXh0R0xYPiBH
TENvbnRleHRHTFg6OmNyZWF0ZUNvbnRleHQoWElEIHdpbmRvdywgR0xDb250ZXh0KiBzaGFyaW5n
Q29udGV4dCkKIHsKLSAgICBpZiAoIXNoYXJlZERpc3BsYXkoKSkKKyAgICBpZiAoIXNoYXJlZFgx
MURpc3BsYXkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBzdGF0aWMgYm9vbCBp
bml0aWFsaXplZCA9IGZhbHNlOwpAQCAtMjUwLDIwICsxODgsMjAgQEAgR0xDb250ZXh0R0xYOjp+
R0xDb250ZXh0R0xYKCkKICAgICAgICAgLy8gVGhpcyBtYXkgYmUgbmVjZXNzYXJ5IHRvIHByZXZl
bnQgY3Jhc2hlcyB3aXRoIE5WaWRpYSdzIGNsb3NlZCBzb3VyY2UgZHJpdmVycy4gT3JpZ2luYWxs
eQogICAgICAgICAvLyBmcm9tIE1vemlsbGEncyAzRCBjYW52YXMgaW1wbGVtZW50YXRpb24gYXQ6
IGh0dHA6Ly9iaXRidWNrZXQub3JnL2lsbWFyaS9jYW52YXMzZC8KICAgICAgICAgZ2xCaW5kRnJh
bWVidWZmZXJFWFQoR0xfRlJBTUVCVUZGRVJfRVhULCAwKTsKLSAgICAgICAgZ2xYTWFrZUN1cnJl
bnQoc2hhcmVkRGlzcGxheSgpLCBOb25lLCBOb25lKTsKLSAgICAgICAgZ2xYRGVzdHJveUNvbnRl
eHQoc2hhcmVkRGlzcGxheSgpLCBtX2NvbnRleHQpOworICAgICAgICBnbFhNYWtlQ3VycmVudChz
aGFyZWRYMTFEaXNwbGF5KCksIE5vbmUsIE5vbmUpOworICAgICAgICBnbFhEZXN0cm95Q29udGV4
dChzaGFyZWRYMTFEaXNwbGF5KCksIG1fY29udGV4dCk7CiAgICAgfQogCiAgICAgaWYgKG1fcGJ1
ZmZlcikgewotICAgICAgICBnbFhEZXN0cm95UGJ1ZmZlcihzaGFyZWREaXNwbGF5KCksIG1fcGJ1
ZmZlcik7CisgICAgICAgIGdsWERlc3Ryb3lQYnVmZmVyKHNoYXJlZFgxMURpc3BsYXkoKSwgbV9w
YnVmZmVyKTsKICAgICAgICAgbV9wYnVmZmVyID0gMDsKICAgICB9CiAgICAgaWYgKG1fZ2x4UGl4
bWFwKSB7Ci0gICAgICAgIGdsWERlc3Ryb3lHTFhQaXhtYXAoc2hhcmVkRGlzcGxheSgpLCBtX2ds
eFBpeG1hcCk7CisgICAgICAgIGdsWERlc3Ryb3lHTFhQaXhtYXAoc2hhcmVkWDExRGlzcGxheSgp
LCBtX2dseFBpeG1hcCk7CiAgICAgICAgIG1fZ2x4UGl4bWFwID0gMDsKICAgICB9CiAgICAgaWYg
KG1fcGl4bWFwKSB7Ci0gICAgICAgIFhGcmVlUGl4bWFwKHNoYXJlZERpc3BsYXkoKSwgbV9waXht
YXApOworICAgICAgICBYRnJlZVBpeG1hcChzaGFyZWRYMTFEaXNwbGF5KCksIG1fcGl4bWFwKTsK
ICAgICAgICAgbV9waXhtYXAgPSAwOwogICAgIH0KICAgICByZW1vdmVBY3RpdmVDb250ZXh0KHRo
aXMpOwpAQCAtMjgyLDcgKzIyMCw3IEBAIEludFNpemUgR0xDb250ZXh0R0xYOjpkZWZhdWx0RnJh
bWVCdWZmZXJTaXplKCkKICAgICBpbnQgeCwgeTsKICAgICBXaW5kb3cgcm9vdFdpbmRvdzsKICAg
ICB1bnNpZ25lZCBpbnQgd2lkdGgsIGhlaWdodCwgYm9yZGVyV2lkdGgsIGRlcHRoOwotICAgIGlm
ICghWEdldEdlb21ldHJ5KHNoYXJlZERpc3BsYXkoKSwgbV93aW5kb3csICZyb290V2luZG93LCAm
eCwgJnksICZ3aWR0aCwgJmhlaWdodCwgJmJvcmRlcldpZHRoLCAmZGVwdGgpKQorICAgIGlmICgh
WEdldEdlb21ldHJ5KHNoYXJlZFgxMURpc3BsYXkoKSwgbV93aW5kb3csICZyb290V2luZG93LCAm
eCwgJnksICZ3aWR0aCwgJmhlaWdodCwgJmJvcmRlcldpZHRoLCAmZGVwdGgpKQogICAgICAgICBy
ZXR1cm4gSW50U2l6ZSgpOwogCiAgICAgcmV0dXJuIEludFNpemUod2lkdGgsIGhlaWdodCk7CkBA
IC0yOTcsMTggKzIzNSwyMyBAQCBib29sIEdMQ29udGV4dEdMWDo6bWFrZUNvbnRleHRDdXJyZW50
KCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBpZiAobV93aW5kb3cpCi0gICAgICAgIHJl
dHVybiBnbFhNYWtlQ3VycmVudChzaGFyZWREaXNwbGF5KCksIG1fd2luZG93LCBtX2NvbnRleHQp
OworICAgICAgICByZXR1cm4gZ2xYTWFrZUN1cnJlbnQoc2hhcmVkWDExRGlzcGxheSgpLCBtX3dp
bmRvdywgbV9jb250ZXh0KTsKIAogICAgIGlmIChtX3BidWZmZXIpCi0gICAgICAgIHJldHVybiBn
bFhNYWtlQ3VycmVudChzaGFyZWREaXNwbGF5KCksIG1fcGJ1ZmZlciwgbV9jb250ZXh0KTsKKyAg
ICAgICAgcmV0dXJuIGdsWE1ha2VDdXJyZW50KHNoYXJlZFgxMURpc3BsYXkoKSwgbV9wYnVmZmVy
LCBtX2NvbnRleHQpOwogCi0gICAgcmV0dXJuIDo6Z2xYTWFrZUN1cnJlbnQoc2hhcmVkRGlzcGxh
eSgpLCBtX2dseFBpeG1hcCwgbV9jb250ZXh0KTsKKyAgICByZXR1cm4gOjpnbFhNYWtlQ3VycmVu
dChzaGFyZWRYMTFEaXNwbGF5KCksIG1fZ2x4UGl4bWFwLCBtX2NvbnRleHQpOwogfQogCiB2b2lk
IEdMQ29udGV4dEdMWDo6c3dhcEJ1ZmZlcnMoKQogewogICAgIGlmIChtX3dpbmRvdykKLSAgICAg
ICAgZ2xYU3dhcEJ1ZmZlcnMoc2hhcmVkRGlzcGxheSgpLCBtX3dpbmRvdyk7CisgICAgICAgIGds
WFN3YXBCdWZmZXJzKHNoYXJlZFgxMURpc3BsYXkoKSwgbV93aW5kb3cpOworfQorCit2b2lkIEdM
Q29udGV4dEdMWDo6d2FpdE5hdGl2ZSgpCit7CisgICAgZ2xYV2FpdFgoKTsKIH0KIAogI2lmIFVT
RSgzRF9HUkFQSElDUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dseC9HTENvbnRleHRHTFguaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dseC9HTENvbnRleHRHTFguaAppbmRleCBiM2IxOGMxNTZjYzMxY2RjNmIxMzJkYTA3ZTEyZmUy
ZTczMjhkZTZiLi4wMGY1NmU3OTFhNmE2ZTZkYTFhYTNlZjc3OWMxYTFjYWM0MTFiYWZiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nbHgvR0xDb250ZXh0R0xY
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dMQ29udGV4dEdM
WC5oCkBAIC0yNSw3ICsyNSw2IEBACiAjaW5jbHVkZSAiR0xDb250ZXh0LmgiCiAKIHR5cGVkZWYg
c3RydWN0IF9fR0xYY29udGV4dFJlYyogR0xYQ29udGV4dDsKLXR5cGVkZWYgc3RydWN0IF9YRGlz
cGxheSBEaXNwbGF5OwogdHlwZWRlZiBzdHJ1Y3QgX19HTFhjb250ZXh0UmVjICpHTFhDb250ZXh0
OwogdHlwZWRlZiB1bnNpZ25lZCBsb25nIEdMWFBidWZmZXI7CiB0eXBlZGVmIHVuc2lnbmVkIGxv
bmcgR0xYUGl4bWFwOwpAQCAtNDUsMTEgKzQ0LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5H
TENvbnRleHRHTFgoKTsKICAgICB2aXJ0dWFsIGJvb2wgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAg
ICAgdmlydHVhbCB2b2lkIHN3YXBCdWZmZXJzKCk7CisgICAgdmlydHVhbCB2b2lkIHdhaXROYXRp
dmUoKTsKICAgICB2aXJ0dWFsIGJvb2wgY2FuUmVuZGVyVG9EZWZhdWx0RnJhbWVidWZmZXIoKTsK
ICAgICB2aXJ0dWFsIEludFNpemUgZGVmYXVsdEZyYW1lQnVmZmVyU2l6ZSgpOwogCi0gICAgc3Rh
dGljIERpc3BsYXkqIHNoYXJlZERpc3BsYXkoKTsKLQogI2lmIFVTRSgzRF9HUkFQSElDUykKICAg
ICB2aXJ0dWFsIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QgcGxhdGZvcm1Db250ZXh0KCk7CiAj
ZW5kaWYKQEAgLTU3LDEwICs1NSw2IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgc3RhdGljIFBh
c3NPd25QdHI8R0xDb250ZXh0R0xYPiBjcmVhdGVQYnVmZmVyQ29udGV4dChHTFhDb250ZXh0IHNo
YXJpbmdDb250ZXh0KTsKICAgICBzdGF0aWMgUGFzc093blB0cjxHTENvbnRleHRHTFg+IGNyZWF0
ZVBpeG1hcENvbnRleHQoR0xYQ29udGV4dCBzaGFyaW5nQ29udGV4dCk7Ci0gICAgc3RhdGljIHZv
aWQgcmVtb3ZlQWN0aXZlQ29udGV4dChHTENvbnRleHQqKTsKLQotICAgIHN0YXRpYyB2b2lkIGFk
ZEFjdGl2ZUNvbnRleHQoR0xDb250ZXh0R0xYKik7Ci0gICAgc3RhdGljIHZvaWQgY2xlYW51cEFj
dGl2ZUNvbnRleHRzQXRFeGl0KCk7CiAKICAgICBHTENvbnRleHRHTFgoR0xYQ29udGV4dCk7CiAg
ICAgR0xDb250ZXh0R0xYKEdMWENvbnRleHQsIFBpeG1hcCwgR0xYUGl4bWFwKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRl
eHQzRE9wZW5HTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
R3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwCmluZGV4IDk4ZTExNDViM2RiMjRlNTFkN2I3NWZk
MDY3MDhmZmFlMjU2YWViMTMuLjI1NmIwOGQ0MzZhYTg1MDEzY2UxZjY5Y2E0NzU4YmUzMzAyNzM4
OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
cmFwaGljc0NvbnRleHQzRE9wZW5HTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcApAQCAtNDksNiArNDks
MTEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpy
ZWxlYXNlU2hhZGVyQ29tcGlsZXIoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKIHZv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OnJlYWRQaXhlbHNBbmRDb252ZXJ0VG9CR1JBSWZOZWNlc3Nh
cnkoaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIHVuc2lnbmVkIGNoYXIqIHBp
eGVscykKIHsKICAgICA6OmdsUmVhZFBpeGVscyh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBHTF9CR1JB
LCBHTF9VTlNJR05FRF9JTlRfOF84XzhfOF9SRVYsIHBpeGVscyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVu
R0xFUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhp
Y3NDb250ZXh0M0RPcGVuR0xFUy5jcHAKaW5kZXggNGQxNTMwYzRiZWM5MjMwOGI3NjBmYzdhNzk0
ZDcxOGM2NjBlMWNjZC4uNDEzN2U2YWQwNGExZWQyYzJhYzVlZTg4NjY2NWI1NTIwNGUxYmE0YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dDNET3BlbkdMRVMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTEVTLmNwcApAQCAtMzksNyArMzks
NiBAQAogI2luY2x1ZGUgIkxheWVyV2ViS2l0VGhyZWFkLmgiCiAjZW5kaWYKICNpbmNsdWRlICJO
b3RJbXBsZW1lbnRlZC5oIgotI2luY2x1ZGUgIk9wZW5HTEVTU2hpbXMuaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCkBAIC02NiwxNCArNjUsMTQgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
cmVhZFBpeGVscyhHQzNEaW50IHgsIEdDM0RpbnQgeSwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2kK
ICNlbHNlCiAgICAgaWYgKG1fYXR0cnMuYW50aWFsaWFzICYmIG1fYm91bmRGQk8gPT0gbV9tdWx0
aXNhbXBsZUZCTykgewogICAgICAgICAgcmVzb2x2ZU11bHRpc2FtcGxpbmdJZk5lY2Vzc2FyeShJ
bnRSZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQpKTsKLSAgICAgICAgOjpnbEJpbmRGcmFtZWJ1ZmZl
ckVYVChHTF9GUkFNRUJVRkZFUl9FWFQsIG1fZmJvKTsKKyAgICAgICAgOjpnbEJpbmRGcmFtZWJ1
ZmZlcihHTF9GUkFNRUJVRkZFUiwgbV9mYm8pOwogICAgICAgICA6OmdsRmx1c2goKTsKICAgICB9
CiAKICAgICA6OmdsUmVhZFBpeGVscyh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUs
IGRhdGEpOwogCiAgICAgaWYgKG1fYXR0cnMuYW50aWFsaWFzICYmIG1fYm91bmRGQk8gPT0gbV9t
dWx0aXNhbXBsZUZCTykKLSAgICAgICAgOjpnbEJpbmRGcmFtZWJ1ZmZlckVYVChHcmFwaGljc0Nv
bnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fbXVsdGlzYW1wbGVGQk8pOworICAgICAgICA6OmdsQmlu
ZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtX211bHRpc2FtcGxlRkJPKTsKICNlbmRpZgog
fQogCkBAIC0xMjIsMTIgKzEyMSwxMiBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpyZXNoYXBl
RkJPcyhjb25zdCBJbnRTaXplJiBzaXplKQogICAgIGJvb2wgbXVzdFJlc3RvcmVGQk8gPSBmYWxz
ZTsKICAgICBpZiAobV9ib3VuZEZCTyAhPSBtX2ZibykgewogICAgICAgICBtdXN0UmVzdG9yZUZC
TyA9IHRydWU7Ci0gICAgICAgIDo6Z2xCaW5kRnJhbWVidWZmZXJFWFQoR3JhcGhpY3NDb250ZXh0
M0Q6OkZSQU1FQlVGRkVSLCBtX2Zibyk7CisgICAgICAgIDo6Z2xCaW5kRnJhbWVidWZmZXIoR0xf
RlJBTUVCVUZGRVIsIG1fZmJvKTsKICAgICB9CiAKICAgICA6OmdsQmluZFRleHR1cmUoR0xfVEVY
VFVSRV8yRCwgbV90ZXh0dXJlKTsKICAgICA6OmdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAw
LCBtX2ludGVybmFsQ29sb3JGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIDAsIGNvbG9yRm9ybWF0LCBw
aXhlbERhdGFUeXBlLCAwKTsKLSAgICA6OmdsRnJhbWVidWZmZXJUZXh0dXJlMkRFWFQoR3JhcGhp
Y3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6Q09MT1JfQVRUQUNI
TUVOVDAsIEdMX1RFWFRVUkVfMkQsIG1fdGV4dHVyZSwgMCk7CisgICAgOjpnbEZyYW1lYnVmZmVy
VGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVS
RV8yRCwgbV90ZXh0dXJlLCAwKTsKIAogICAgIDo6Z2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJE
LCBtX2NvbXBvc2l0b3JUZXh0dXJlKTsKICAgICA6OmdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJE
LCAwLCBtX2ludGVybmFsQ29sb3JGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIDAsIGNvbG9yRm9ybWF0
LCBHTF9VTlNJR05FRF9CWVRFLCAwKTsKQEAgLTEzOSwyOCArMTM4LDI4IEBAIGJvb2wgR3JhcGhp
Y3NDb250ZXh0M0Q6OnJlc2hhcGVGQk9zKGNvbnN0IEludFNpemUmIHNpemUpCiAgICAgaWYgKG1f
YXR0cnMuc3RlbmNpbCB8fCBtX2F0dHJzLmRlcHRoKSB7CiAgICAgICAgIC8vIFVzZSBhIDI0IGJp
dCBkZXB0aCBidWZmZXIgd2hlcmUgd2Uga25vdyB3ZSBoYXZlIGl0LgogICAgICAgICBpZiAoc3Vw
cG9ydFBhY2tlZERlcHRoU3RlbmNpbEJ1ZmZlcikgewotICAgICAgICAgICAgOjpnbEJpbmRUZXh0
dXJlKEdMX1RFWFRVUkVfMkQsIG1fZGVwdGhTdGVuY2lsQnVmZmVyKTsKLSAgICAgICAgICAgIDo6
Z2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9T
VEVOQ0lMLCB3aWR0aCwgaGVpZ2h0LCAwLCBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfU1RFTkNJ
TCwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0lOVF8yNF84LCAwKTsKKyAgICAgICAgICAg
IDo6Z2xCaW5kUmVuZGVyYnVmZmVyKEdMX1JFTkRFUkJVRkZFUiwgbV9kZXB0aFN0ZW5jaWxCdWZm
ZXIpOworICAgICAgICAgICAgOjpnbFJlbmRlcmJ1ZmZlclN0b3JhZ2UoR0xfUkVOREVSQlVGRkVS
LCBHTF9ERVBUSDI0X1NURU5DSUw4X09FUywgd2lkdGgsIGhlaWdodCk7CiAgICAgICAgICAgICBp
ZiAobV9hdHRycy5zdGVuY2lsKQotICAgICAgICAgICAgICAgIDo6Z2xGcmFtZWJ1ZmZlclRleHR1
cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfU1RFTkNJTF9BVFRBQ0hNRU5ULCBHTF9URVhUVVJFXzJE
LCBtX2RlcHRoU3RlbmNpbEJ1ZmZlciwgMCk7CisgICAgICAgICAgICAgICAgOjpnbEZyYW1lYnVm
ZmVyUmVuZGVyYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBHTF9TVEVOQ0lMX0FUVEFDSE1FTlQsIEdM
X1JFTkRFUkJVRkZFUiwgbV9kZXB0aFN0ZW5jaWxCdWZmZXIpOwogICAgICAgICAgICAgaWYgKG1f
YXR0cnMuZGVwdGgpCi0gICAgICAgICAgICAgICAgOjpnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdM
X0ZSQU1FQlVGRkVSLCBHTF9ERVBUSF9BVFRBQ0hNRU5ULCBHTF9URVhUVVJFXzJELCBtX2RlcHRo
U3RlbmNpbEJ1ZmZlciwgMCk7Ci0gICAgICAgICAgICA6OmdsQmluZFRleHR1cmUoR0xfVEVYVFVS
RV8yRCwgMCk7CisgICAgICAgICAgICAgICAgOjpnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdM
X0ZSQU1FQlVGRkVSLCBHTF9ERVBUSF9BVFRBQ0hNRU5ULCBHTF9SRU5ERVJCVUZGRVIsIG1fZGVw
dGhTdGVuY2lsQnVmZmVyKTsKKyAgICAgICAgICAgIDo6Z2xCaW5kUmVuZGVyYnVmZmVyKEdMX1JF
TkRFUkJVRkZFUiwgMCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBpZiAobV9hdHRy
cy5zdGVuY2lsKSB7Ci0gICAgICAgICAgICAgICAgOjpnbEJpbmRSZW5kZXJidWZmZXJFWFQoR3Jh
cGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUiwgbV9zdGVuY2lsQnVmZmVyKTsKLSAgICAgICAg
ICAgICAgICA6OmdsUmVuZGVyYnVmZmVyU3RvcmFnZUVYVChHcmFwaGljc0NvbnRleHQzRDo6UkVO
REVSQlVGRkVSLCBHTF9TVEVOQ0lMX0lOREVYOCwgd2lkdGgsIGhlaWdodCk7Ci0gICAgICAgICAg
ICAgICAgOjpnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyRVhUKEdyYXBoaWNzQ29udGV4dDNEOjpG
UkFNRUJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OlNURU5DSUxfQVRUQUNITUVOVCwgR3JhcGhp
Y3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUiwgbV9zdGVuY2lsQnVmZmVyKTsKKyAgICAgICAgICAg
ICAgICA6OmdsQmluZFJlbmRlcmJ1ZmZlcihHTF9SRU5ERVJCVUZGRVIsIG1fc3RlbmNpbEJ1ZmZl
cik7CisgICAgICAgICAgICAgICAgOjpnbFJlbmRlcmJ1ZmZlclN0b3JhZ2UoR0xfUkVOREVSQlVG
RkVSLCBHTF9TVEVOQ0lMX0lOREVYOCwgd2lkdGgsIGhlaWdodCk7CisgICAgICAgICAgICAgICAg
OjpnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBHTF9TVEVOQ0lMX0FU
VEFDSE1FTlQsIEdMX1JFTkRFUkJVRkZFUiwgbV9zdGVuY2lsQnVmZmVyKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIGlmIChtX2F0dHJzLmRlcHRoKSB7Ci0gICAgICAgICAgICAgICAgOjpn
bEJpbmRSZW5kZXJidWZmZXJFWFQoR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUiwgbV9k
ZXB0aEJ1ZmZlcik7Ci0gICAgICAgICAgICAgICAgOjpnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VFWFQo
R3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUiwgR0xfREVQVEhfQ09NUE9ORU5UMTYsIHdp
ZHRoLCBoZWlnaHQpOwotICAgICAgICAgICAgICAgIDo6Z2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZl
ckVYVChHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpE
RVBUSF9BVFRBQ0hNRU5ULCBHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSLCBtX2RlcHRo
QnVmZmVyKTsKKyAgICAgICAgICAgICAgICA6OmdsQmluZFJlbmRlcmJ1ZmZlcihHTF9SRU5ERVJC
VUZGRVIsIG1fZGVwdGhCdWZmZXIpOworICAgICAgICAgICAgICAgIDo6Z2xSZW5kZXJidWZmZXJT
dG9yYWdlKEdMX1JFTkRFUkJVRkZFUiwgR0xfREVQVEhfQ09NUE9ORU5UMTYsIHdpZHRoLCBoZWln
aHQpOworICAgICAgICAgICAgICAgIDo6Z2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHTF9GUkFN
RUJVRkZFUiwgR0xfREVQVEhfQVRUQUNITUVOVCwgR0xfUkVOREVSQlVGRkVSLCBtX2RlcHRoQnVm
ZmVyKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIDo6Z2xCaW5kUmVuZGVyYnVmZmVyRVhU
KEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIDApOworICAgICAgICAgICAgOjpnbEJp
bmRSZW5kZXJidWZmZXIoR0xfUkVOREVSQlVGRkVSLCAwKTsKICAgICAgICAgfQogICAgIH0KLSAg
ICBpZiAoZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzRVhUKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFN
RUJVRkZFUikgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSX0NPTVBMRVRFKSB7Cisg
ICAgaWYgKGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHTF9GUkFNRUJVRkZFUikgIT0gR0xfRlJB
TUVCVUZGRVJfQ09NUExFVEUpIHsKICAgICAgICAgLy8gRklYTUU6IGNsZWFudXAKICAgICAgICAg
bm90SW1wbGVtZW50ZWQoKTsKICAgICB9CkBAIC0xNzgsNyArMTc3LDcgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6cmVzb2x2ZU11bHRpc2FtcGxpbmdJZk5lY2Vzc2FyeShjb25zdCBJbnRSZWN0
JiByZWN0KQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cmVuZGVyYnVmZmVyU3RvcmFnZShHQzNE
ZW51bSB0YXJnZXQsIEdDM0RlbnVtIGludGVybmFsZm9ybWF0LCBHQzNEc2l6ZWkgd2lkdGgsIEdD
M0RzaXplaSBoZWlnaHQpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbFJl
bmRlcmJ1ZmZlclN0b3JhZ2VFWFQodGFyZ2V0LCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdo
dCk7CisgICAgOjpnbFJlbmRlcmJ1ZmZlclN0b3JhZ2UodGFyZ2V0LCBpbnRlcm5hbGZvcm1hdCwg
d2lkdGgsIGhlaWdodCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEludGVnZXJ2
KEdDM0RlbnVtIHBuYW1lLCBHQzNEaW50KiB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAKaW5k
ZXggMTY3OGM0OWZhYmJlYjI4ZTZmOGE1ZGJkMmRjMzJlNjg1ZWI2OGQzNy4uN2Q1MDRlYzY4ZGZm
YTRmZTVjMGE5NWMxNjE0MmNkOGYwMDYzMmVkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAKQEAg
LTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlICJJbWFnZURhdGEuaCIKICNpbmNsdWRlICJOYXRpdmVJ
bWFnZVF0LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLSNpbmNsdWRlICJPcGVuR0xT
aGltcy5oIgogI2luY2x1ZGUgIlFXZWJQYWdlQ2xpZW50LmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVm
ZmVyLmgiCiAjaW5jbHVkZSA8UVdpbmRvdz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5oCmluZGV4IGI0NTA0NjgyYmMz
OGQyMTA4ZGYzY2IyMmRiYjM4NGI2Yjk0YjY3NmMuLmQyZWM4NzM0MjUxMTliYjBlZmU5YWQ4YjE4
NGViY2NjNzIwNTIxYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuaApAQCAtMjgsNiArMjgsOSBAQAogICAgICNk
ZWZpbmUgVEVYTUFQX09QRU5HTF9FU18yCiAjZW5kaWYKICNlbmRpZgorI2lmIFBMQVRGT1JNKEdU
SykgJiYgVVNFKE9QRU5HTF9FU18yKQorI2RlZmluZSBURVhNQVBfT1BFTkdMX0VTXzIKKyNlbmRp
ZgogCiAjaW5jbHVkZSAiRmlsdGVyT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29u
dGV4dC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlZGlyZWN0
ZWRYQ29tcG9zaXRlV2luZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZWRp
cmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5jcHAKaW5kZXggMGQ3YmRiYTQzNjAzZTM3OTE1NjkwYzZl
MWY5YjQ4OGQzMDRjZjNmYy4uYjMzYmUyMDg3OGI4MmRmYmFhY2M2YTc3MmY5OTJkZjM4OTlhYzcw
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlZGlyZWN0ZWRYQ29t
cG9zaXRlV2luZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVkaXJl
Y3RlZFhDb21wb3NpdGVXaW5kb3cuY3BwCkBAIC0yNyw5ICsyNyw3IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cuaCIKIAotI2lmIFVT
RShHTFgpCi0jaW5jbHVkZSAiR0xDb250ZXh0R0xYLmgiCi0jaW5jbHVkZSA8R0wvZ2x4Lmg+Cisj
aWYgUExBVEZPUk0oWDExKQogI2luY2x1ZGUgPFgxMS9leHRlbnNpb25zL1hjb21wb3NpdGUuaD4K
ICNpbmNsdWRlIDxjYWlyby14bGliLmg+CiAjaW5jbHVkZSA8Z2RrL2dka3guaD4KQEAgLTUyLDcg
KzUwLDcgQEAgUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6OlJlZGlyZWN0ZWRYQ29tcG9zaXRl
V2luZG93KGNvbnN0IEludFNpemUmIHNpemUpCiAgICAgLCBtX3BlbmRpbmdSZXNpemVTb3VyY2VJ
ZCgwKQogICAgICwgbV9uZWVkc05ld1BpeG1hcEFmdGVyUmVzaXplKGZhbHNlKQogewotICAgIERp
c3BsYXkqIGRpc3BsYXkgPSBHTENvbnRleHRHTFg6OnNoYXJlZERpc3BsYXkoKTsKKyAgICBEaXNw
bGF5KiBkaXNwbGF5ID0gR0xDb250ZXh0OjpzaGFyZWRYMTFEaXNwbGF5KCk7CiAKICAgICAvLyBU
aGlzIGlzIGJhc2VkIG9uIGNvZGUgZnJvbSBDaHJvbWl1bTogc3JjL2NvbnRlbnQvY29tbW9uL2dw
dS9pbWFnZV90cmFuc3BvcnRfc3VyZmFjZV9saW51eC5jYwogICAgIFhTZXRXaW5kb3dBdHRyaWJ1
dGVzIHdpbmRvd0F0dHJpYnV0ZXM7CkBAIC05Niw3ICs5NCw3IEBAIFJlZGlyZWN0ZWRYQ29tcG9z
aXRlV2luZG93OjpSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdyhjb25zdCBJbnRTaXplJiBzaXpl
KQogCiBSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdzo6flJlZGlyZWN0ZWRYQ29tcG9zaXRlV2lu
ZG93KCkKIHsKLSAgICBEaXNwbGF5KiBkaXNwbGF5ID0gR0xDb250ZXh0R0xYOjpzaGFyZWREaXNw
bGF5KCk7CisgICAgRGlzcGxheSogZGlzcGxheSA9IEdMQ29udGV4dDo6c2hhcmVkWDExRGlzcGxh
eSgpOwogICAgIGlmIChtX3dpbmRvdykKICAgICAgICAgWERlc3Ryb3lXaW5kb3coZGlzcGxheSwg
bV93aW5kb3cpOwogICAgIGlmIChtX3BhcmVudFdpbmRvdykKQEAgLTEzNSwxMSArMTMzLDExIEBA
IHZvaWQgUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6OnJlc2l6ZShjb25zdCBJbnRTaXplJiBz
aXplKQogICAgICAgICBtX3BlbmRpbmdSZXNpemVTb3VyY2VJZCA9IGdfdGltZW91dF9hZGQoMCwg
cmVpbnRlcnByZXRfY2FzdDxHU291cmNlRnVuYz4ocmVzaXplTGF0ZXJDYWxsYmFjayksIHRoaXMp
OwogICAgIH0KIAotICAgIERpc3BsYXkqIGRpc3BsYXkgPSBHTENvbnRleHRHTFg6OnNoYXJlZERp
c3BsYXkoKTsKKyAgICBEaXNwbGF5KiBkaXNwbGF5ID0gR0xDb250ZXh0OjpzaGFyZWRYMTFEaXNw
bGF5KCk7CiAgICAgWFJlc2l6ZVdpbmRvdyhkaXNwbGF5LCBtX3dpbmRvdywgc2l6ZS53aWR0aCgp
LCBzaXplLmhlaWdodCgpKTsKIAogICAgIFhGbHVzaChkaXNwbGF5KTsKLSAgICBnbFhXYWl0WCgp
OworICAgIGNvbnRleHQoKS0+d2FpdE5hdGl2ZSgpOwogCiAgICAgLy8gVGhpcyBzd2FwIGlzIGJh
c2VkIG9uIGNvZGUgaW4gQ2hyb21pdW0uIEl0IHRyaWVzIHRvIHdvcmstYXJvdW5kIGEgYnVnIGlu
IHRoZSBJbnRlbCBkcml2ZXJzCiAgICAgLy8gd2hlcmUgYSBzd2FwIGlzIG5lY2Vzc2FyeSB0byBl
bnN1cmUgdGhlIGZyb250IGFuZCBiYWNrIGJ1ZmZlcnMgYXJlIHByb3Blcmx5IHJlc2l6ZWQuCkBA
IC0yMTgsNCArMjE2LDQgQEAgY2Fpcm9fc3VyZmFjZV90KiBSZWRpcmVjdGVkWENvbXBvc2l0ZVdp
bmRvdzo6Y2Fpcm9TdXJmYWNlRm9yV2lkZ2V0KEd0a1dpZGdldCogd2kKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gVVNFKEdMWCkKKyNlbmRpZiAvLyBQTEFURk9STShYMTEp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVkaXJlY3RlZFhDb21w
b3NpdGVXaW5kb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZWRpcmVjdGVkWENv
bXBvc2l0ZVdpbmRvdy5oCmluZGV4IGU1ZGIwZmE3ZThhZDlhODI1ZTFiNjlmOWU2MmFlMzcwN2Uy
OWVmYTkuLjJhZGI2OTQ1YWU2MzAxNmYxNDQ3MTFkNDJiYTc0ZjA0YjM1Nzc5MTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRv
dy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZWRpcmVjdGVkWENvbXBvc2l0
ZVdpbmRvdy5oCkBAIC0yNyw5ICsyNyw5IEBACiAjaWZuZGVmICBSZWRpcmVjdGVkWENvbXBvc2l0
ZVdpbmRvd19oCiAjZGVmaW5lICBSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvd19oCiAKLSNpZiBV
U0UoR0xYKQorI2lmIFBMQVRGT1JNKFgxMSkKIAotI2luY2x1ZGUgIkdMQ29udGV4dEdMWC5oIgor
I2luY2x1ZGUgIkdMQ29udGV4dC5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKICNpbmNsdWRlICJS
ZWZQdHJDYWlyby5oIgogCkBAIC03MSw2ICs3MSw2IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIFVTRShHTFgpCisjZW5kaWYgLy8gUExBVEZPUk0oWDEx
KQogCiAjZW5kaWYgLy8gUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3dfaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0R3RrLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0
ay5jcHAKaW5kZXggMDk4YTRjNzE2MzhjOWU3NTNhNDcxNWNhYTI1MDI4ODllMTUyZTFlMy4uMThl
ZTk3ODU5MWFjODExODgzMGM0YWQ3N2U0M2Q4NmQ5NjQ1ZTEyYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0R3RrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xheWVyVHJlZUhvc3RHdGsu
Y3BwCkBAIC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSA8R0wvZ2wuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0ZyYW1lLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KLSNpbmNsdWRlIDxX
ZWJDb3JlL0dMQ29udGV4dEdMWC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvR0xDb250ZXh0Lmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXR0aW5ncy5oPgog
CmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggOTgzZmQ4ZWRhNDM5MjFi
MTQ0M2QwYmJiMjIwMDg5NGY0YWNkZTgyOS4uZTBkOWY5NDU4NGM5MDhiYjdmMTVjYzU4OGM0ZDky
MzlkYzIwNjcwNSAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDIxIEBACisyMDEyLTA5LTI1ICBKb3PDqSBEYXBlbmEgUGF6ICA8amRhcGVuYUBpZ2FsaWEu
Y29tPgorCisgICAgICAgIFtHVEtdIEFkZCBzdXBwb3J0IGZvciBjcmVhdGluZyBFR0wgY29udGV4
dHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3OTIx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBhZGRzIHN1cHBvcnQgZm9yIEVHTCwgdXNpbmcgT3BlbkdMIGFuZCBPcGVuR0wgRVMgMi4g
Qm90aAorICAgICAgICBvcHRpb25zIGFyZSBzZXQgdXAgb24gY29tcGlsZSB0aW1lLCB3aXRoIHRo
ZSBjb25maWd1cmUgb3B0aW9ucworICAgICAgICAtLWVuYWJsZS1lZ2wgYW5kIC0tZW5hYmxlLWds
ZXMyLgorCisgICAgICAgIFRoZSBpbXBsZW1lbnRhdGlvbiBvbmx5IGFkZHMgc3VwcG9ydCBmb3Ig
RUdMIG9uIHRvcCBvZiBYMTEsIHRvCisgICAgICAgIGlzb2xhdGUgdGhlIGNoYW5nZXMgdG8gdGhl
IG1pbmltdW0uIE1vcmUgY2hhbmdlcyBzaG91bGQgY29tZQorICAgICAgICBsYXRlciB0byBlbmFi
bGUgRUdMIGZvciBvdGhlciB0YXJnZXRzIChhcyBXYXlsYW5kKS4KKworICAgICAgICAqIEdOVW1h
a2VmaWxlLmFtOgorICAgICAgICAqIGNvbmZpZ3VyZS5hYzogbmV3IGNvbmZpZ3VyZSBvcHRpb25z
IC0tZW5hYmxlLWVnbCBhbmQtLWVuYWJsZS1nbGVzMi4KKwogMjAxMi0wOS0yNSAgTGFzemxvIEdv
bWJvcyAgPGwuZ29tYm9zQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxdIFVwZGF0ZSBtaW5p
bWFsIHJlcXVpcmVkIHZlcnNpb25zIGZvciBkZXBlbmRlbmNpZXMKZGlmZiAtLWdpdCBhL0dOVW1h
a2VmaWxlLmFtIGIvR05VbWFrZWZpbGUuYW0KaW5kZXggMmJlM2VkZjE4NGVjMzY2YzNjNzUyNWQ0
NzA0MzUyNDU1ZGMwMjM0OC4uNmZlNjY3ZTRjNDgwMjI0ZDE2MTRjYjQ1YThiZWE3ZTdkOTRlYTY2
NSAxMDA2NDQKLS0tIGEvR05VbWFrZWZpbGUuYW0KKysrIGIvR05VbWFrZWZpbGUuYW0KQEAgLTIz
Nyw2ICsyMzcsMTYgQEAgZ2xvYmFsX2NwcGZsYWdzICs9IFwKIAktRFdURl9VU0VfR0xYPTEKIGVu
ZGlmCiAKK2lmIFVTRV9FR0wKK2dsb2JhbF9jcHBmbGFncyArPSBcCisJLURXVEZfVVNFX0VHTD0x
CitlbmRpZgorCitpZiBVU0VfR0xFUzIKK2dsb2JhbF9jcHBmbGFncyArPSBcCisJLURXVEZfVVNF
X09QRU5HTF9FU18yPTEKK2VuZGlmCisKIGlmIFVTRV9PUEVOR0wKIGdsb2JhbF9jcHBmbGFncyAr
PSBcCiAJLURXVEZfVVNFX09QRU5HTD0xCmRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25m
aWd1cmUuYWMKaW5kZXggZjAxOTZlOTJiZmI4MzM5N2NjYTk5NjdiNmQ3MzA3YWM4ZGE0NjFmZi4u
YTI2NjJhYzdmMTMwN2E0M2Y1Nzk0NGNjNTIxNjljNDJlYmQ3NzNhNiAxMDA2NDQKLS0tIGEvY29u
ZmlndXJlLmFjCisrKyBiL2NvbmZpZ3VyZS5hYwpAQCAtNTQ3LDExICs1NDcsODQgQEAgQUNfQVJH
X0VOQUJMRSh1bnN0YWJsZV9mZWF0dXJlcywKICAgICAgICAgICAgICAgW10sW2VuYWJsZV91bnN0
YWJsZV9mZWF0dXJlcz0ibm8iXSkKIEFDX01TR19SRVNVTFQoWyRlbmFibGVfdW5zdGFibGVfZmVh
dHVyZXNdKQogCi1mb3VuZF9vcGVuZ2w9Im5vIgotaWYgdGVzdCAiJHdpdGhfdGFyZ2V0IiA9ICJ4
MTEiOyB0aGVuCitmb3VuZF9vcGVuZ2w9bm8KK0FDX0FSR19FTkFCTEUoZ2x4LAorICAgICAgICAg
ICAgICBBQ19IRUxQX1NUUklORyhbLS1lbmFibGUtZ2x4XSwgW2VuYWJsZSBzdXBwb3J0IGZvciBH
TFggW2RlZmF1bHQ9YXV0b11dKSwKKyAgICAgICAgICAgICAgW10sIFtlbmFibGVfZ2x4PSJhdXRv
Il0pCitBQ19BUkdfRU5BQkxFKGVnbCwKKyAgICAgICAgICAgICAgQUNfSEVMUF9TVFJJTkcoWy0t
ZW5hYmxlLWVnbF0sIFtlbmFibGUgc3VwcG9ydCBmb3IgRUdMIFtkZWZhdWx0PWF1dG9dXSksCisg
ICAgICAgICAgICAgIFtdLCBbZW5hYmxlX2VnbD0iYXV0byJdKQorQUNfQVJHX0VOQUJMRShnbGVz
MiwKKyAgICAgICAgICAgICAgQUNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLWdsZXMyXSwgW2VuYWJs
ZSBzdXBwb3J0IGZvciBPcGVuR0wgRVMgMiBbZGVmYXVsdD1hdXRvXV0pLAorICAgICAgICAgICAg
ICBbXSwgW2VuYWJsZV9nbGVzMj0iYXV0byJdKQorCitoYXZlX2dseD1ubworQUNfQ0hFQ0tfSEVB
REVSUyhbR0wvZ2x4LmhdLCBbaGF2ZV9nbHg9InllcyJdLCBbaGF2ZV9nbHg9Im5vIl0pCitBQ19N
U0dfQ0hFQ0tJTkcoW3doZXRoZXIgdG8gZW5hYmxlIEdMWCBzdXBwb3J0XSkKK2lmIHRlc3QgIiRl
bmFibGVfZ2x4IiAhPSAibm8iOyB0aGVuCisgICBpZiB0ZXN0ICIkaGF2ZV9nbHgiID0gIm5vIjsg
dGhlbgorICAgICAgaWYgdGVzdCAiJGVuYWJsZV9nbHgiID0gInllcyI7IHRoZW4KKyAgICAgICAg
IEFDX01TR19FUlJPUihbLS1lbmFibGUtZ2x4IHNwZWNpZmllZCwgYnV0IG5vdCBhdmFpbGFibGVd
KQorICAgICAgZWxzZQorICAgICAgICAgZW5hYmxlX2dseD1ubworICAgICAgZmkKKyAgIGVsaWYg
dGVzdCAiJGVuYWJsZV9nbGVzMiIgIT0gInllcyI7IHRoZW4KKyAgICAgIGVuYWJsZV9nbHg9eWVz
CisgICBmaQorZmkKK0FDX01TR19SRVNVTFQoWyRlbmFibGVfZ2x4XSkKKworaGF2ZV9lZ2w9bm8K
K0FDX0NIRUNLX0hFQURFUlMoW0VHTC9lZ2wuaF0sIFtoYXZlX2VnbD0ieWVzIl0sIFtoYXZlX2Vn
bD0ibm8iXSkKK0FDX01TR19DSEVDS0lORyhbd2hldGhlciB0byBlbmFibGUgRUdMIHN1cHBvcnRd
KQoraWYgdGVzdCAiJGVuYWJsZV9lZ2wiICE9ICJubyI7IHRoZW4KKyAgIGlmIHRlc3QgIiRoYXZl
X2VnbCIgPSAibm8iOyB0aGVuCisgICAgICBpZiB0ZXN0ICIkZW5hYmxlX2VnbCIgPSAieWVzIjsg
dGhlbgorICAgICAgICAgQUNfTVNHX0VSUk9SKFstLWVuYWJsZS1lZ2wgc3BlY2lmaWVkLCBidXQg
bm90IGF2YWlsYWJsZV0pCisgICAgICBlbHNlCisgICAgICAgICBlbmFibGVfZWdsPW5vCisgICAg
ICBmaQorICAgZWxzZQorICAgICAgZW5hYmxlX2VnbD15ZXMKKyAgIGZpCitmaQorQUNfTVNHX1JF
U1VMVChbJGVuYWJsZV9lZ2xdKQorCitoYXZlX2dsZXMyPW5vCitBQ19DSEVDS19IRUFERVJTKFtH
TEVTMi9nbDIuaF0sIFtoYXZlX2dsZXMyPSJ5ZXMiXSwgW2hhdmVfZ2xlczI9Im5vIl0pCitBQ19N
U0dfQ0hFQ0tJTkcoW3doZXRoZXIgdG8gdXNlIE9wZW5HTCBFUyAyIHN1cHBvcnRdKQoraWYgdGVz
dCAiJGVuYWJsZV9nbHgiID0gInllcyI7IHRoZW4KKyAgIGlmIHRlc3QgIiRlbmFibGVfZ2xlczIi
ID0gInllcyI7IHRoZW4KKyAgICAgIEFDX01TR19FUlJPUihbQ2Fubm90IGVuYWJsZSBPcGVuR0wg
RVMgMiBzdXBwb3J0IHdpdGggR0xYXSkKKyAgIGVsc2UKKyAgICAgIGVuYWJsZV9nbGVzMj1ubwor
ICAgZmkKK2ZpCitpZiB0ZXN0ICIkZW5hYmxlX2VnbCIgPSAibm8iOyB0aGVuCisgICBpZiB0ZXN0
ICIkZW5hYmxlX2dsZXMyIiA9ICJ5ZXMiOyB0aGVuCisgICAgICBBQ19NU0dfRVJST1IoW0Nhbm5v
dCBlbmFibGUgT3BlbkdMIEVTIDIgc3VwcG9ydCB3aXRob3V0IEVHTF0pCisgICBlbHNlCisgICAg
ICBlbmFibGVfZ2xlczI9bm8KKyAgIGZpCitmaQoraWYgdGVzdCAiJGVuYWJsZV9nbGVzMiIgIT0g
Im5vIjsgdGhlbgorICAgaWYgdGVzdCAiJGhhdmVfZ2xlczIiID0gIm5vIjsgdGhlbgorICAgICAg
aWYgdGVzdCAiJGVuYWJsZV9nbGVzMiIgPSAieWVzIjsgdGhlbgorICAgICAgICAgQUNfTVNHX0VS
Uk9SKFstLWVuYWJsZS1nbGVzMiBzcGVjaWZpZWQsIGJ1dCBub3QgYXZhaWxhYmxlXSkKKyAgICAg
IGVsc2UKKyAgICAgICAgIGVuYWJsZV9nbGVzMj1ubworICAgICAgZmkKKyAgIGVsc2UKKyAgICAg
IGVuYWJsZV9nbGVzMj15ZXMKKyAgICAgIGZvdW5kX29wZW5nbD15ZXMKKyAgIGZpCitmaQorQUNf
TVNHX1JFU1VMVChbJGVuYWJsZV9nbGVzMl0pCisKK2lmIHRlc3QgIiRlbmFibGVfZ2xlczIiICE9
ICJ5ZXMiOyB0aGVuCiAgICAgQUNfQ0hFQ0tfSEVBREVSUyhbR0wvZ2wuaF0sIFtmb3VuZF9vcGVu
Z2w9InllcyJdLCBbXSkKLSAgICBBQ19DSEVDS19IRUFERVJTKFtHTC9nbHguaF0sIFtdLCBbZm91
bmRfb3BlbmdsPSJubyJdKQogZmkKKwogQUNfTVNHX0NIRUNLSU5HKFt3aGljaCBHUFUgYWNjZWxl
cmF0aW9uIGJhY2tlbmQgdG8gdXNlXSkKIEFDX0FSR19XSVRIKGFjY2VsZXJhdGlvbl9iYWNrZW5k
LAogICAgICAgICAgICAgQUNfSEVMUF9TVFJJTkcoWy0td2l0aC1hY2NlbGVyYXRpb24tYmFja2Vu
ZD1APDpAb3BlbmdsL2NsdXR0ZXIvbm9uZUA6PkBdLApAQCAtOTIzLDcgKzk5Niw3IEBAIGlmIHRl
c3QgIiRlbmFibGVfdmlkZW8iID0gInllcyIgfHwgdGVzdCAiJGVuYWJsZV93ZWJfYXVkaW8iID0g
InllcyI7IHRoZW4KICAgIEFDX1NVQlNUKFtHU1RSRUFNRVJfTElCU10pCiBmaQogCi0KK2FjY2Vs
ZXJhdGlvbl9iYWNrZW5kX2Rlc2NyaXB0aW9uPSR3aXRoX2FjY2VsZXJhdGlvbl9iYWNrZW5kCiBp
ZiB0ZXN0ICIkd2l0aF9hY2NlbGVyYXRpb25fYmFja2VuZCIgPSAiY2x1dHRlciI7IHRoZW4KICAg
IFBLR19DSEVDS19NT0RVTEVTKENMVVRURVIsIGNsdXR0ZXItMS4wID49ICRDTFVUVEVSX1JFUVVJ
UkVEX1ZFUlNJT04pCiAgICBQS0dfQ0hFQ0tfTU9EVUxFUyhbQ0xVVFRFUl9HVEtdLApAQCAtOTM2
LDcgKzEwMDksMjIgQEAgaWYgdGVzdCAiJHdpdGhfYWNjZWxlcmF0aW9uX2JhY2tlbmQiID0gImNs
dXR0ZXIiOyB0aGVuCiBmaQogCiBpZiB0ZXN0ICIkd2l0aF9hY2NlbGVyYXRpb25fYmFja2VuZCIg
PSAib3BlbmdsIjsgdGhlbgotICAgIE9QRU5HTF9MSUJTPSItbEdMIC1sZGwiCisgICBpZiB0ZXN0
ICIkZW5hYmxlX2dsZXMyIiA9ICJ5ZXMiOyB0aGVuCisgICAgYWNjZWxlcmF0aW9uX2JhY2tlbmRf
ZGVzY3JpcHRpb24rPSAiKGdsZXMyIgorICAgIE9QRU5HTF9MSUJTPSItbEdMRVN2MiIKKyAgIGVs
c2UKKyAgICBhY2NlbGVyYXRpb25fYmFja2VuZF9kZXNjcmlwdGlvbis9IihnbCIKKyAgICBPUEVO
R0xfTElCUz0iLWxHTCIKKyAgIGZpCisgICBpZiB0ZXN0ICIkZW5hYmxlX2VnbCIgPSAieWVzIjsg
dGhlbgorICAgIGFjY2VsZXJhdGlvbl9iYWNrZW5kX2Rlc2NyaXB0aW9uKz0iLCBlZ2wiCisgICAg
T1BFTkdMX0xJQlMrPSIgLWxFR0wiCisgICBmaQorICAgaWYgdGVzdCAiJGVuYWJsZV9nbHgiID0g
InllcyI7IHRoZW4KKyAgICBhY2NlbGVyYXRpb25fYmFja2VuZF9kZXNjcmlwdGlvbis9IiwgZ2x4
IgorICAgZmkKKyAgIE9QRU5HTF9MSUJTKz0iIC1sZGwiCisgICBhY2NlbGVyYXRpb25fYmFja2Vu
ZF9kZXNjcmlwdGlvbis9IikiCiBmaQogQUNfU1VCU1QoW09QRU5HTF9MSUJTXSkKIApAQCAtMTA0
NSw4ICsxMTMzLDEwIEBAIEFNX0NPTkRJVElPTkFMKFtVU0VfVEVYVFVSRV9NQVBQRVJfR0xdLCBb
dGVzdCAiJGVuYWJsZV9hY2NlbGVyYXRlZF9jb21wb3NpdGluZyIKIEFNX0NPTkRJVElPTkFMKFtV
U0VfQ0xVVFRFUl0sIFt0ZXN0ICIkd2l0aF9hY2NlbGVyYXRpb25fYmFja2VuZCIgPSAiY2x1dHRl
ciJdKQogCiAjIFRoZXNlIGFyZSB0aGUgc2FtZSBub3csIGJ1dCB0aGV5IHdpbGwgc29vbiBiZSBz
ZXBhcmF0ZS4KLUFNX0NPTkRJVElPTkFMKFtVU0VfR0xYXSwgW3Rlc3QgIiR3aXRoX2FjY2VsZXJh
dGlvbl9iYWNrZW5kIiA9ICJvcGVuZ2wiXSkKIEFNX0NPTkRJVElPTkFMKFtVU0VfT1BFTkdMXSwg
W3Rlc3QgIiR3aXRoX2FjY2VsZXJhdGlvbl9iYWNrZW5kIiA9ICJvcGVuZ2wiXSkKK0FNX0NPTkRJ
VElPTkFMKFtVU0VfRUdMXSwgW3Rlc3QgIiRlbmFibGVfZWdsIiA9ICJ5ZXMiXSkKK0FNX0NPTkRJ
VElPTkFMKFtVU0VfR0xFUzJdLCBbdGVzdCAiJGVuYWJsZV9nbGVzMiIgPSAieWVzIl0pCitBTV9D
T05ESVRJT05BTChbVVNFX0dMWF0sIFt0ZXN0ICIkZW5hYmxlX2dseCIgPSAieWVzIl0pCiAKICMg
SW5kZXhlZERCIGltcGxpZXMgTGV2ZWxEQiwgYnV0IG90aGVyIGZlYXR1cmVzIG1heSBvbmUgZGF5
IHJlcXVpcmUgTGV2ZWxEQi4KIEFNX0NPTkRJVElPTkFMKFtFTkFCTEVfSU5ERVhFRF9EQVRBQkFT
RV0sW3Rlc3QgIiRlbmFibGVfaW5kZXhlZF9kYXRhYmFzZSIgPSAieWVzIl0pCkBAIC0xMTI1LDcg
KzEyMTUsNyBAQCBCdWlsZCBjb25maWd1cmF0aW9uOgogIFVuaWNvZGUgYmFja2VuZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJHdpdGhfdW5pY29kZV9iYWNrZW5k
CiAgRm9udCBiYWNrZW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgOiAkd2l0aF9mb250X2JhY2tlbmQKICBPcHRpbWl6ZWQgbWVtb3J5IGFsbG9jYXRvciAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA6ICRlbmFibGVfZmFzdF9tYWxsb2MKLSBBY2NlbGVy
YXRlZCByZW5kZXJpbmcgYmFja2VuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICR3aXRo
X2FjY2VsZXJhdGlvbl9iYWNrZW5kCisgQWNjZWxlcmF0ZWQgcmVuZGVyaW5nIGJhY2tlbmQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgOiAkYWNjZWxlcmF0aW9uX2JhY2tlbmRfZGVzY3JpcHRp
b24KIAogRmVhdHVyZXM6CiA9PT09PT09Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165600</attachid>
            <date>2012-09-25 06:23:19 -0700</date>
            <delta_ts>2012-10-05 06:57:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77921-20120925152238.patch</filename>
            <type>text/plain</type>
            <size>61010</size>
            <attacher name="José Dapena Paz">jdapena</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5NDc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWU4ODY0ODAxYTQ1YjQ1
NmQxOTFkYjgxMWU2NzVjMjM3YjI1NWFjYy4uOTNkMDJjM2Y1ODM5MjM5NzBmNDU3MGRmZjU1ZWY2
NTdkZmE0NTNjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgxIEBACisyMDEyLTA5LTI1ICBKb3PD
qSBEYXBlbmEgUGF6ICA8amRhcGVuYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIEFkZCBz
dXBwb3J0IGZvciBjcmVhdGluZyBFR0wgY29udGV4dHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3OTIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIEVHTCwg
dXNpbmcgT3BlbkdMIGFuZCBPcGVuR0wgRVMgMi4gQm90aAorICAgICAgICBvcHRpb25zIGFyZSBz
ZXQgdXAgb24gY29tcGlsZSB0aW1lLCB3aXRoIHRoZSBjb25maWd1cmUgb3B0aW9ucworICAgICAg
ICAtLWVuYWJsZS1lZ2wgYW5kIC0tZW5hYmxlLWdsZXMyLgorCisgICAgICAgIFRoZSBpbXBsZW1l
bnRhdGlvbiBvbmx5IGFkZHMgc3VwcG9ydCBmb3IgRUdMIG9uIHRvcCBvZiBYMTEsIHRvCisgICAg
ICAgIGlzb2xhdGUgdGhlIGNoYW5nZXMgdG8gdGhlIG1pbmltdW0uIE1vcmUgY2hhbmdlcyBzaG91
bGQgY29tZQorICAgICAgICBsYXRlciB0byBlbmFibGUgRUdMIGZvciBvdGhlciB0YXJnZXRzIChh
cyBXYXlsYW5kKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgcmVxdWlyZWQsIGFzIGV4aXN0aW5n
IFdlYkdMIGFuZCBBQyB0ZXN0cyBzaG91bGQgY292ZXIKKyAgICAgICAgdGhlIGNhc2VzLgorCisg
ICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oOgorICAgICAg
ICAoR3JhcGhpY3NDb250ZXh0M0QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL09wZW5H
TEVTU2hpbXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HTENvbnRleHQu
Y3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHQ6OnNo
YXJlZERpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0OjpjbGVhbnVwU2hhcmVk
RGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHQ6OmNyZWF0ZUNvbnRleHRGb3JX
aW5kb3cpOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0OjpjcmVhdGVPZmZzY3JlZW5Db250
ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HTENvbnRleHQuaDoKKyAg
ICAgICAgKEdMQ29udGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3Jh
cGhpY3NDb250ZXh0M0RDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpHcmFw
aGljc0NvbnRleHQzRCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNEOjppc0dMRVMyQ29tcGxpYW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpwYWludFRvVGV4dHVyZU1hcHBlcik6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpzaGFyZWRFR0xEaXNwbGF5KToK
KyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6Y2xlYW51cFNoYXJlZERpc3BsYXkpOgor
ICAgICAgICAoV2ViQ29yZTo6YWN0aXZlQ29udGV4dExpc3QpOgorICAgICAgICAoV2ViQ29yZTo6
R0xDb250ZXh0RUdMOjphZGRBY3RpdmVDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29u
dGV4dEVHTDo6cmVtb3ZlQWN0aXZlQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRl
eHRFR0w6OmNsZWFudXBBY3RpdmVDb250ZXh0c0F0RXhpdCk6CisgICAgICAgIChXZWJDb3JlOjpn
ZXRFR0xDb25maWcpOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0RUdMOjpjcmVhdGVXaW5k
b3dDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6Y3JlYXRlUGJ1ZmZl
ckNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0RUdMOjpjcmVhdGVQaXhtYXBD
b250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6Y3JlYXRlQ29udGV4dCk6
CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0w6OkdMQ29udGV4dEVHTCk6CisgICAgICAg
IChXZWJDb3JlOjpHTENvbnRleHRFR0w6On5HTENvbnRleHRFR0wpOgorICAgICAgICAoV2ViQ29y
ZTo6R0xDb250ZXh0RUdMOjpjYW5SZW5kZXJUb0RlZmF1bHRGcmFtZWJ1ZmZlcik6CisgICAgICAg
IChXZWJDb3JlOjpHTENvbnRleHRFR0w6OmRlZmF1bHRGcmFtZUJ1ZmZlclNpemUpOgorICAgICAg
ICAoV2ViQ29yZTo6R0xDb250ZXh0RUdMOjptYWtlQ29udGV4dEN1cnJlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6R0xDb250ZXh0RUdMOjpzd2FwQnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpH
TENvbnRleHRFR0w6OndhaXROYXRpdmUpOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0RUdM
OjpwbGF0Zm9ybUNvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENv
bnRleHRFR0wuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z2x4L0dMQ29udGV4dEdMWC5oLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChHTENvbnRl
eHRFR0wpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dseC9HTENvbnRleHRHTFguY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0R0xYOjpjbGVhbnVwQWN0aXZlQ29udGV4dHNB
dEV4aXQpOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0R0xYOjp3YWl0TmF0aXZlKToKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dseC9HTENvbnRl
eHRHTFguaDoKKyAgICAgICAgKEdMQ29udGV4dEdMWCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMRVMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnJlc2hhcGVGQk9zKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2d0
ay9SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWRp
cmVjdGVkWENvbXBvc2l0ZVdpbmRvdzo6UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6On5SZWRpcmVjdGVkWENv
bXBvc2l0ZVdpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjpSZWRpcmVjdGVkWENvbXBvc2l0ZVdp
bmRvdzo6cmVzaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvUmVkaXJlY3RlZFhDb21wb3Np
dGVXaW5kb3cuaDoKKwogMjAxMi0wOS0yNSAgUGV0ZXIgV2FuZyAgPHBldGVyLndhbmdAdG9yY2ht
b2JpbGUuY29tLmNuPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6ICBUaGUgSlMgY29kZSBpbmpl
Y3RlZCBieSB3b3JrZXIgaW5zcGVjdG9yIHNob3VsZG4ndCBiZSBldmFsdWF0ZWQgdGhyb3VnaCBK
U01haW5UaHJlYWRFeGVjU3RhdGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA4YmYyZWE5ZWM1MDRmMzIyNjZkNTFl
OTExMTU2NmM2YmZlZjlhN2UzLi5jOWMyMjYwMDNkNDUxZTVlNjZjYmUwMWMyYmJmMGVjNGJlNTlh
ZThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTItMDktMjUgIEpvc8OpIERhcGVu
YSBQYXogIDxqZGFwZW5hQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gQWRkIHN1cHBvcnQg
Zm9yIGNyZWF0aW5nIEVHTCBjb250ZXh0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9Nzc5MjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgRUdMLCB1c2luZyBP
cGVuR0wgYW5kIE9wZW5HTCBFUyAyLiBCb3RoCisgICAgICAgIG9wdGlvbnMgYXJlIHNldCB1cCBv
biBjb21waWxlIHRpbWUsIHdpdGggdGhlIGNvbmZpZ3VyZSBvcHRpb25zCisgICAgICAgIC0tZW5h
YmxlLWVnbCBhbmQgLS1lbmFibGUtZ2xlczIuCisKKyAgICAgICAgVGhlIGltcGxlbWVudGF0aW9u
IG9ubHkgYWRkcyBzdXBwb3J0IGZvciBFR0wgb24gdG9wIG9mIFgxMSwgdG8KKyAgICAgICAgaXNv
bGF0ZSB0aGUgY2hhbmdlcyB0byB0aGUgbWluaW11bS4gTW9yZSBjaGFuZ2VzIHNob3VsZCBjb21l
CisgICAgICAgIGxhdGVyIHRvIGVuYWJsZSBFR0wgZm9yIG90aGVyIHRhcmdldHMgKGFzIFdheWxh
bmQpLgorCisgICAgICAgIFtHVEtdIEFkZCBzdXBwb3J0IGZvciBjcmVhdGluZyBFR0wgY29udGV4
dHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3OTIx
CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xheWVyVHJlZUhvc3RHdGsuY3Bw
OgorCiAyMDEyLTA5LTI1ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNv
bT4KIAogICAgICAgICBbR1RLXSBEb24ndCB1c2UgdGhlIEMgQVBJIGludGVybmFsbHkgaW4gV2Vi
S2l0V2ViVmlldwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9T
b3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCBjZmQzZjhmMTBlZTY5ODEwM2MzZjBm
OTQxMmU5NTAwMzU0OTc0NzBlLi5hNWU3M2FhZWYzNzFhMDRlMWFmZDYwZjkxOWNjN2UwMzYwMDE2
YzU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMTEzLDYgKzExMyw3IEBAIHdlYmNvcmVndGtf
Y3BwZmxhZ3MgKz0gXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlb2Ns
dWUgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
IFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nbHggXAor
CS1JJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbCBcCiAJLUkk
KHNyY2RpcikvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyIFwKIAkt
SSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsgXAogCS1JJChz
cmNkaXIpL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ayBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUu
bGlzdC5hbQppbmRleCBkMmVkMjkxNWY2NWRhOWIzZjI1MTFkZTQ1NDEyNDVlZjQ1YjZjMTQ4Li5j
ZWMwOWU0OTg1NGY2ODIyODQwODUzMDhjYzI1NGVhY2FjMDA4NzU1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0KQEAgLTQ0MjYsMTQgKzQ0MjYsOSBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0g
XAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcCBcCiAJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCBcCiAJU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmggXAotCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVuR0wuY3Bw
IFwKLQlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uczNE
T3BlbkdMLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRl
bnNpb25zM0RPcGVuR0xDb21tb24uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvRXh0ZW5zaW9uczNET3BlbkdMQ29tbW9uLmggXAotCVNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTC5jcHAgXAog
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQz
RE9wZW5HTENvbW1vbi5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL09w
ZW5HTFNoaW1zLmNwcCBcCi0JU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvT3BlbkdM
U2hpbXMuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3Bl
blR5cGVWZXJ0aWNhbERhdGEuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
UGF0aC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGguaCBcCkBA
IC01OTY2LDggKzU5NjEsNiBAQCB3ZWJjb3JlZ3RrX3NvdXJjZXMgKz0gXAogCiBpZiBUQVJHRVRf
WDExCiB3ZWJjb3JlZ3RrX3NvdXJjZXMgKz0gXAotCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dseC9HTENvbnRleHRHTFguY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nbHgvR0xDb250ZXh0R0xYLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0dMQ29udGV4dC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0dMQ29udGV4dC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
R3RrV2lkZ2V0QmFja2luZ1N0b3JlWDExLmNwcCBcCkBAIC01OTc4LDYgKzU5NzEsMTYgQEAgd2Vi
Y29yZWd0a19zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbHVnaW5zL2d0ay9QbHVnaW5Q
YWNrYWdlR3RrLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGx1Z2lucy9ndGsvUGx1Z2luVmlld0d0
ay5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsdWdpbnMvZ3RrL3hlbWJlZC5oCitpZiBVU0VfRUdM
Cit3ZWJjb3JlZ3RrX3NvdXJjZXMgKz0gXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2VnbC9HTENvbnRleHRFR0wuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9lZ2wvR0xDb250ZXh0RUdMLmgKK2VuZGlmICMgRU5EIFVTRV9FR0wKK2lmIFVTRV9HTFgK
K3dlYmNvcmVndGtfc291cmNlcyArPSBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ2x4L0dMQ29udGV4dEdMWC5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dseC9HTENvbnRleHRHTFguaAorZW5kaWYgIyBFTkQgVVNFX0dMWAogZWxzZQogaWYgVEFS
R0VUX1dJTjMyCiB3ZWJjb3JlX3NvdXJjZXMgKz0gXApAQCAtNjAwOCw2ICs2MDExLDIxIEBAIHdl
YmNvcmVfc291cmNlcyArPSBcCiBlbmRpZiAjIEVORCBUQVJHRVRfV0lOMzIKIGVuZGlmICMgRU5E
IFRBUkdFVF9YMTEKIAoraWYgVVNFX0dMRVMyCit3ZWJjb3JlX3NvdXJjZXMgKz0gXAorCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVuR0xFUy5j
cHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25z
M0RPcGVuR0xFUy5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
R3JhcGhpY3NDb250ZXh0M0RPcGVuR0xFUy5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL09wZW5HTEVTU2hpbXMuaAorZWxzZQord2ViY29yZV9zb3VyY2VzICs9IFwKKwlT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uczNET3BlbkdM
LmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lv
bnMzRE9wZW5HTC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
R3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9PcGVuR0xTaGltcy5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL09wZW5HTFNoaW1zLmgKK2VuZGlmICMgRU5EIFVTRV9HTEVTMgorCiAjIC0tLS0KICMgaWN1
IHVuaWNvZGUgYmFja2VuZAogIyAtLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAppbmRleCA0MjA3NmZmNzhhOGQxOTdhMTI0
Njc1NTdkNjI0ZjhjYzkzOTMzNjcxLi5iYTYxNzFlZTI0NTI2ODI3ZDBjMDg5MGNmNzI1NDkxN2Nk
MGRjZjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQzRC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dDNELmgKQEAgLTM5NSw2ICszOTUsNyBAQCBwdWJsaWM6CiAgICAgICAgIFNU
RU5DSUxfSU5ERVg4ID0gMHg4RDQ4LAogICAgICAgICBERVBUSF9TVEVOQ0lMID0gMHg4NEY5LAog
ICAgICAgICBVTlNJR05FRF9JTlRfMjRfOCA9IDB4ODRGQSwKKyAgICAgICAgREVQVEgyNF9TVEVO
Q0lMOCA9IDB4ODhGMCwKICAgICAgICAgUkVOREVSQlVGRkVSX1dJRFRIID0gMHg4RDQyLAogICAg
ICAgICBSRU5ERVJCVUZGRVJfSEVJR0hUID0gMHg4RDQzLAogICAgICAgICBSRU5ERVJCVUZGRVJf
SU5URVJOQUxfRk9STUFUID0gMHg4RDQ0LApAQCAtOTc4LDcgKzk3OSw3IEBAIHB1YmxpYzoKICAg
ICBBTkdMRVdlYktpdEJyaWRnZSBtX2NvbXBpbGVyOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShC
TEFDS0JFUlJZKSB8fCAoUExBVEZPUk0oUVQpICYmIGRlZmluZWQoUVRfT1BFTkdMX0VTXzIpKQor
I2lmIFBMQVRGT1JNKEJMQUNLQkVSUlkpIHx8IChQTEFURk9STShRVCkgJiYgZGVmaW5lZChRVF9P
UEVOR0xfRVNfMikpIHx8IChQTEFURk9STShHVEspICYmIFVTRShPUEVOR0xfRVNfMikpCiAgICAg
ZnJpZW5kIGNsYXNzIEV4dGVuc2lvbnMzRE9wZW5HTEVTOwogICAgIE93blB0cjxFeHRlbnNpb25z
M0RPcGVuR0xFUz4gbV9leHRlbnNpb25zOwogI2VsaWYgIVBMQVRGT1JNKENIUk9NSVVNKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvT3BlbkdMRVNTaGltcy5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvT3BlbkdMRVNTaGltcy5oCmluZGV4
IDQwMTg3MDA0YWM2YTg5MDE1ZTQ4MzRjNWU2YzM1MDEzM2QxMDUxODMuLmJjYWY4NTVlYTZlMGMw
ZGE0YjkwZmQ2YWI4M2QzY2RmOThjNTA0ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL09wZW5HTEVTU2hpbXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9PcGVuR0xFU1NoaW1zLmgKQEAgLTI2LDcgKzI2LDcgQEAKICNpZm5kZWYg
T3BlbkdMRVNTaGltc19oCiAjZGVmaW5lIE9wZW5HTEVTU2hpbXNfaAogCi0jaWYgUExBVEZPUk0o
QkxBQ0tCRVJSWSkgfHwgUExBVEZPUk0oUVQpCisjaWYgUExBVEZPUk0oQkxBQ0tCRVJSWSkgfHwg
UExBVEZPUk0oUVQpIHx8IFBMQVRGT1JNKEdUSykKICNkZWZpbmUgZ2xCaW5kRnJhbWVidWZmZXJF
WFQgZ2xCaW5kRnJhbWVidWZmZXIKICNkZWZpbmUgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyREVYVCBn
bEZyYW1lYnVmZmVyVGV4dHVyZTJECiAjZGVmaW5lIGdsQmluZFJlbmRlcmJ1ZmZlckVYVCBnbEJp
bmRSZW5kZXJidWZmZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0dMQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9HTENvbnRleHQuY3BwCmluZGV4IDNiODA0ZjYwMmNjZjc4YWJjYzc0NWMwOWYxM2I4
MGRmNTFiNjg4ODQuLjBhZDc0MmI3MDAxNzc2YmYyN2IxOTAyMjYyNmRjNDZhMjM2ZDY3NzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dMQ29udGV4
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR0xDb250
ZXh0LmNwcApAQCAtMjEsMTAgKzIxLDEyIEBACiAKICNpZiBVU0UoT1BFTkdMKQogCisjaW5jbHVk
ZSAiR0xDb250ZXh0RUdMLmgiCisjaW5jbHVkZSAiR0xDb250ZXh0R0xYLmgiCiAjaW5jbHVkZSA8
d3RmL01haW5UaHJlYWQuaD4KIAotI2lmIFVTRShHTFgpCi0jaW5jbHVkZSAiR0xDb250ZXh0R0xY
LmgiCisjaWYgUExBVEZPUk0oWDExKQorI2luY2x1ZGUgPFgxMS9YbGliLmg+CiAjZW5kaWYKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzYsMTAgKzM4LDg4IEBAIEdMQ29udGV4dCogR0xDb250
ZXh0OjpzaGFyaW5nQ29udGV4dCgpCiAgICAgcmV0dXJuIHNoYXJpbmcuZ2V0KCk7CiB9CiAKKyNp
ZiBQTEFURk9STShYMTEpCisvLyBXZSBkbyBub3Qgd2FudCB0byBjYWxsIGdsWE1ha2VDb250ZXh0
Q3VycmVudCB1c2luZyBkaWZmZXJlbnQgRGlzcGxheSBwb2ludGVycywKKy8vIGJlY2F1c2UgaXQg
bWlnaHQgbGVhZCB0byBjcmFzaGVzIGluIHNvbWUgZHJpdmVycyAoZmdscngpLiBXZSB1c2UgYSBz
aGFyZWQgZGlzcGxheQorLy8gcG9pbnRlciBoZXJlLgorc3RhdGljIERpc3BsYXkqIGdTaGFyZWRY
MTFEaXNwbGF5ID0gMDsKK0Rpc3BsYXkqIEdMQ29udGV4dDo6c2hhcmVkWDExRGlzcGxheSgpCit7
CisgICAgaWYgKCFnU2hhcmVkWDExRGlzcGxheSkKKyAgICAgICAgZ1NoYXJlZFgxMURpc3BsYXkg
PSBYT3BlbkRpc3BsYXkoMCk7CisgICAgcmV0dXJuIGdTaGFyZWRYMTFEaXNwbGF5OworfQorCit2
b2lkIEdMQ29udGV4dDo6Y2xlYW51cFNoYXJlZFgxMURpc3BsYXkoKQoreworICAgIGlmICghZ1No
YXJlZFgxMURpc3BsYXkpCisgICAgICAgIHJldHVybjsKKyAgICBYQ2xvc2VEaXNwbGF5KGdTaGFy
ZWRYMTFEaXNwbGF5KTsKKyAgICBnU2hhcmVkWDExRGlzcGxheSA9IDA7Cit9CisjZW5kaWYgLy8g
UExBVEZPUk0oWDExKQorCisvLyBCZWNhdXNlIG9mIGRyaXZlciBidWdzLCBleGl0aW5nIHRoZSBw
cm9ncmFtIHdoZW4gdGhlcmUgYXJlIGFjdGl2ZSBwYnVmZmVycworLy8gY2FuIGNyYXNoIHRoZSBY
IHNlcnZlciAodGhpcyBoYXMgYmVlbiBvYnNlcnZlZCB3aXRoIHRoZSBvZmZpY2lhbCBOdmlkaWEg
ZHJpdmVycykuCisvLyBXZSBuZWVkIHRvIGVuc3VyZSB0aGF0IHdlIGNsZWFuIGV2ZXJ5dGhpbmcg
dXAgb24gZXhpdC4gVGhlcmUgYXJlIHNldmVyYWwgcmVhc29ucworLy8gdGhhdCBHcmFwaGljc0Nv
bnRleHQzRHMgd2lsbCBzdGlsbCBiZSBhbGl2ZSBhdCBleGl0LCBpbmNsdWRpbmcgdXNlciBlcnJv
ciAobWVtb3J5CisvLyBsZWFrcykgYW5kIHRoZSBwYWdlIGNhY2hlLiBJbiBhbnkgY2FzZSwgd2Ug
ZG9uJ3Qgd2FudCB0aGUgWCBzZXJ2ZXIgdG8gY3Jhc2guCit0eXBlZGVmIFZlY3RvcjxHTENvbnRl
eHQqPiBBY3RpdmVDb250ZXh0TGlzdDsKK3N0YXRpYyBBY3RpdmVDb250ZXh0TGlzdCYgYWN0aXZl
Q29udGV4dExpc3QoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQWN0aXZlQ29udGV4dExp
c3QsIGFjdGl2ZUNvbnRleHRzLCAoKSk7CisgICAgcmV0dXJuIGFjdGl2ZUNvbnRleHRzOworfQor
Cit2b2lkIEdMQ29udGV4dDo6YWRkQWN0aXZlQ29udGV4dChHTENvbnRleHQqIGNvbnRleHQpCit7
CisgICAgc3RhdGljIGJvb2wgYWRkZWRBdEV4aXRIYW5kbGVyID0gZmFsc2U7CisgICAgaWYgKCFh
ZGRlZEF0RXhpdEhhbmRsZXIpIHsKKyAgICAgICAgYXRleGl0KCZHTENvbnRleHQ6OmNsZWFudXBB
Y3RpdmVDb250ZXh0c0F0RXhpdCk7CisgICAgICAgIGFkZGVkQXRFeGl0SGFuZGxlciA9IHRydWU7
CisgICAgfQorICAgIGFjdGl2ZUNvbnRleHRMaXN0KCkuYXBwZW5kKGNvbnRleHQpOworfQorCitz
dGF0aWMgYm9vbCBnQ2xlYW5pbmdVcEF0RXhpdCA9IGZhbHNlOworCit2b2lkIEdMQ29udGV4dDo6
cmVtb3ZlQWN0aXZlQ29udGV4dChHTENvbnRleHQqIGNvbnRleHQpCit7CisgICAgLy8gSWYgd2Ug
YXJlIGNsZWFuaW5nIHVwIHRoZSBjb250ZXh0IGxpc3QgYXQgZXhpdCwgZG9uJ3QgYm90aGVyIHJl
bW92aW5nIHRoZSBjb250ZXh0CisgICAgLy8gZnJvbSB0aGUgbGlzdCwgc2luY2Ugd2UgZG9uJ3Qg
d2FudCB0byBtb2RpZnkgdGhlIGxpc3Qgd2hpbGUgaXQncyBiZWluZyBpdGVyYXRlZC4KKyAgICBp
ZiAoZ0NsZWFuaW5nVXBBdEV4aXQpCisgICAgICAgIHJldHVybjsKKworICAgIEFjdGl2ZUNvbnRl
eHRMaXN0JiBjb250ZXh0TGlzdCA9IGFjdGl2ZUNvbnRleHRMaXN0KCk7CisgICAgc2l6ZV90IGkg
PSBjb250ZXh0TGlzdC5maW5kKGNvbnRleHQpOworICAgIGlmIChpICE9IG5vdEZvdW5kKQorICAg
ICAgICBjb250ZXh0TGlzdC5yZW1vdmUoaSk7Cit9CisKK3ZvaWQgR0xDb250ZXh0OjpjbGVhbnVw
QWN0aXZlQ29udGV4dHNBdEV4aXQoKQoreworICAgIGdDbGVhbmluZ1VwQXRFeGl0ID0gdHJ1ZTsK
KworICAgIEFjdGl2ZUNvbnRleHRMaXN0JiBjb250ZXh0TGlzdCA9IGFjdGl2ZUNvbnRleHRMaXN0
KCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb250ZXh0TGlzdC5zaXplKCk7ICsraSkK
KyAgICAgICAgZGVsZXRlIGNvbnRleHRMaXN0W2ldOworCisjaWYgUExBVEZPUk0oWDExKQorICAg
IGNsZWFudXBTaGFyZWRYMTFEaXNwbGF5KCk7CisjZW5kaWYKK30KKworCisKIFBhc3NPd25QdHI8
R0xDb250ZXh0PiBHTENvbnRleHQ6OmNyZWF0ZUNvbnRleHRGb3JXaW5kb3codWludDY0X3Qgd2lu
ZG93SGFuZGxlLCBHTENvbnRleHQqIHNoYXJpbmdDb250ZXh0KQogewogI2lmIFVTRShHTFgpCi0g
ICAgcmV0dXJuIEdMQ29udGV4dEdMWDo6Y3JlYXRlQ29udGV4dCh3aW5kb3dIYW5kbGUsIHNoYXJp
bmdDb250ZXh0KTsKKyAgICBpZiAoT3duUHRyPEdMQ29udGV4dD4gZ2x4Q29udGV4dCA9IEdMQ29u
dGV4dEdMWDo6Y3JlYXRlQ29udGV4dCh3aW5kb3dIYW5kbGUsIHNoYXJpbmdDb250ZXh0KSkKKyAg
ICAgICAgcmV0dXJuIGdseENvbnRleHQucmVsZWFzZSgpOworI2VuZGlmCisjaWYgVVNFKEVHTCkK
KyAgICBpZiAoT3duUHRyPEdMQ29udGV4dD4gZWdsQ29udGV4dCA9IEdMQ29udGV4dEVHTDo6Y3Jl
YXRlQ29udGV4dCh3aW5kb3dIYW5kbGUsIHNoYXJpbmdDb250ZXh0KSkKKyAgICAgICAgcmV0dXJu
IGVnbENvbnRleHQucmVsZWFzZSgpOwogI2VuZGlmCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CkBA
IC00OCwxMCArMTI4LDE1IEBAIEdMQ29udGV4dDo6R0xDb250ZXh0KCkKIHsKIH0KIAotUGFzc093
blB0cjxHTENvbnRleHQ+IEdMQ29udGV4dDo6Y3JlYXRlT2Zmc2NyZWVuQ29udGV4dChHTENvbnRl
eHQqIHNoYXJpbmcpCitQYXNzT3duUHRyPEdMQ29udGV4dD4gR0xDb250ZXh0OjpjcmVhdGVPZmZz
Y3JlZW5Db250ZXh0KEdMQ29udGV4dCogc2hhcmluZ0NvbnRleHQpCiB7CiAjaWYgVVNFKEdMWCkK
LSAgICByZXR1cm4gR0xDb250ZXh0R0xYOjpjcmVhdGVDb250ZXh0KDAsIHNoYXJpbmcpOworICAg
IGlmIChPd25QdHI8R0xDb250ZXh0PiBnbHhDb250ZXh0ID0gR0xDb250ZXh0R0xYOjpjcmVhdGVD
b250ZXh0KDAsIHNoYXJpbmdDb250ZXh0KSkKKyAgICAgICAgcmV0dXJuIGdseENvbnRleHQucmVs
ZWFzZSgpOworI2VuZGlmCisjaWYgVVNFKEVHTCkKKyAgICBpZiAoT3duUHRyPEdMQ29udGV4dD4g
ZWdsQ29udGV4dCA9IEdMQ29udGV4dEVHTDo6Y3JlYXRlQ29udGV4dCgwLCBzaGFyaW5nQ29udGV4
dCkpCisgICAgICAgIHJldHVybiBlZ2xDb250ZXh0LnJlbGVhc2UoKTsKICNlbmRpZgogICAgIHJl
dHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vR0xDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9HTENvbnRleHQuaAppbmRleCBjMjNhNDZjZjEzMzAyYzQ4ZWQwY2JlMDNiMzVjYjU1
YTYxZTk0ODJjLi4xYTg4MDcyMjJmMjI5YWEzNjJiNzdkNjY2ODg3ZmI2YjE3Y2YzM2Q3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HTENvbnRleHQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HTENvbnRleHQu
aApAQCAtMjUsNiArMjUsMTAgQEAKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNs
dWRlIDx3dGYvUGFzc093blB0ci5oPgogCisjaWYgUExBVEZPUk0oWDExKQordHlwZWRlZiBzdHJ1
Y3QgX1hEaXNwbGF5IERpc3BsYXk7CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBHTENvbnRleHQgewpAQCAtMzksOSArNDMsMTkgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
fkdMQ29udGV4dCgpOwogICAgIHZpcnR1YWwgYm9vbCBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAg
ICB2aXJ0dWFsIHZvaWQgc3dhcEJ1ZmZlcnMoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHdhaXRO
YXRpdmUoKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGNhblJlbmRlclRvRGVmYXVsdEZyYW1lYnVm
ZmVyKCkgPSAwOwogICAgIHZpcnR1YWwgSW50U2l6ZSBkZWZhdWx0RnJhbWVCdWZmZXJTaXplKCkg
PSAwOwogCisjaWYgUExBVEZPUk0oWDExKQorICAgIHN0YXRpYyBEaXNwbGF5KiBzaGFyZWRYMTFE
aXNwbGF5KCk7CisgICAgc3RhdGljIHZvaWQgY2xlYW51cFNoYXJlZFgxMURpc3BsYXkoKTsKKyNl
bmRpZgorCisgICAgc3RhdGljIHZvaWQgYWRkQWN0aXZlQ29udGV4dChHTENvbnRleHQqKTsKKyAg
ICBzdGF0aWMgdm9pZCByZW1vdmVBY3RpdmVDb250ZXh0KEdMQ29udGV4dCopOworICAgIHN0YXRp
YyB2b2lkIGNsZWFudXBBY3RpdmVDb250ZXh0c0F0RXhpdCgpOworCiAjaWYgVVNFKDNEX0dSQVBI
SUNTKQogICAgIHZpcnR1YWwgUGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCBwbGF0Zm9ybUNvbnRl
eHQoKSA9IDA7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RDYWlyby5jcHAKaW5kZXgg
ZGMxMmY2YzVkNjJkNjQ3MWU1NDllZGQ4ZTBhZjRkNDM4MjY5MDExNC4uNzAzM2ZhNmRhNjc2MTAx
MzZiNDQzYmY2OTFkMzFjNmYzNmQ0NjBmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RDYWlyby5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RDYWly
by5jcHAKQEAgLTMwLDEyICszMCwxMCBAQAogCiAjaWYgVVNFKDNEX0dSQVBISUNTKQogCi0jaW5j
bHVkZSAiRXh0ZW5zaW9uczNET3BlbkdMLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0RQ
cml2YXRlLmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJJbWFnZVNvdXJjZS5oIgog
I2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0jaW5jbHVkZSAiT3BlbkdMU2hpbXMuaCIKICNp
bmNsdWRlICJQbGF0Zm9ybUNvbnRleHRDYWlyby5oIgogI2luY2x1ZGUgIlJlZlB0ckNhaXJvLmgi
CiAjaW5jbHVkZSAiU2hhZGVyTGFuZy5oIgpAQCAtNDQsNiArNDIsMTMgQEAKICNpbmNsdWRlIDx3
dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAorI2lmIFVTRShPUEVO
R0xfRVNfMikKKyNpbmNsdWRlICJFeHRlbnNpb25zM0RPcGVuR0xFUy5oIgorI2Vsc2UKKyNpbmNs
dWRlICJFeHRlbnNpb25zM0RPcGVuR0wuaCIKKyNpbmNsdWRlICJPcGVuR0xTaGltcy5oIgorI2Vu
ZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQz
RD4gR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZShHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRl
cyBhdHRyaWJ1dGVzLCBIb3N0V2luZG93KiBob3N0V2luZG93LCBHcmFwaGljc0NvbnRleHQzRDo6
UmVuZGVyU3R5bGUgcmVuZGVyU3R5bGUpCkBAIC01NSw3ICs2MCw5IEBAIFBhc3NSZWZQdHI8R3Jh
cGhpY3NDb250ZXh0M0Q+IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0
M0Q6OkF0dHJpCiAgICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQgPSBmYWxzZTsKICAgICBzdGF0
aWMgYm9vbCBzdWNjZXNzID0gdHJ1ZTsKICAgICBpZiAoIWluaXRpYWxpemVkKSB7CisjaWYgIVVT
RShPUEVOR0xfRVNfMikKICAgICAgICAgc3VjY2VzcyA9IGluaXRpYWxpemVPcGVuR0xTaGltcygp
OworI2VuZGlmCiAgICAgICAgIGluaXRpYWxpemVkID0gdHJ1ZTsKICAgICB9CiAgICAgaWYgKCFz
dWNjZXNzKQpAQCAtOTAsMjYgKzk3LDI2IEBAIEdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0Nv
bnRleHQzRChHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRyaWJ1dGVzLCBICiAgICAg
ICAgIDo6Z2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtX3RleHR1cmUpOwogICAgICAgICA6
OmdsVGV4UGFyYW1ldGVyZihHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdM
X0xJTkVBUik7CiAgICAgICAgIDo6Z2xUZXhQYXJhbWV0ZXJmKEdMX1RFWFRVUkVfMkQsIEdMX1RF
WFRVUkVfTUlOX0ZJTFRFUiwgR0xfTElORUFSKTsKLSAgICAgICAgOjpnbFRleFBhcmFtZXRlcmko
R0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1MsIEdMX0NMQU1QKTsKLSAgICAgICAgOjpn
bFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1QsIEdMX0NMQU1Q
KTsKKyAgICAgICAgOjpnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9X
UkFQX1MsIEdMX0NMQU1QX1RPX0VER0UpOworICAgICAgICA6OmdsVGV4UGFyYW1ldGVyaShHTF9U
RVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfVCwgR0xfQ0xBTVBfVE9fRURHRSk7CiAgICAgICAg
IDo6Z2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCAwKTsKIAogICAgICAgICAvLyBDcmVhdGUg
YW4gRkJPLgotICAgICAgICA6OmdsR2VuRnJhbWVidWZmZXJzRVhUKDEsICZtX2Zibyk7Ci0gICAg
ICAgIDo6Z2xCaW5kRnJhbWVidWZmZXJFWFQoR0xfRlJBTUVCVUZGRVJfRVhULCBtX2Zibyk7Cisg
ICAgICAgIDo6Z2xHZW5GcmFtZWJ1ZmZlcnMoMSwgJm1fZmJvKTsKKyAgICAgICAgOjpnbEJpbmRG
cmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbV9mYm8pOwogCiAgICAgICAgIG1fYm91bmRGQk8g
PSBtX2ZibzsKICAgICAgICAgaWYgKCFtX2F0dHJzLmFudGlhbGlhcyAmJiAobV9hdHRycy5zdGVu
Y2lsIHx8IG1fYXR0cnMuZGVwdGgpKQotICAgICAgICAgICAgOjpnbEdlblJlbmRlcmJ1ZmZlcnNF
WFQoMSwgJm1fZGVwdGhTdGVuY2lsQnVmZmVyKTsKKyAgICAgICAgICAgIDo6Z2xHZW5SZW5kZXJi
dWZmZXJzKDEsICZtX2RlcHRoU3RlbmNpbEJ1ZmZlcik7CiAKICAgICAgICAgLy8gQ3JlYXRlIGEg
bXVsdGlzYW1wbGUgRkJPLgogICAgICAgICBpZiAobV9hdHRycy5hbnRpYWxpYXMpIHsKLSAgICAg
ICAgICAgIDo6Z2xHZW5GcmFtZWJ1ZmZlcnNFWFQoMSwgJm1fbXVsdGlzYW1wbGVGQk8pOwotICAg
ICAgICAgICAgOjpnbEJpbmRGcmFtZWJ1ZmZlckVYVChHTF9GUkFNRUJVRkZFUl9FWFQsIG1fbXVs
dGlzYW1wbGVGQk8pOworICAgICAgICAgICAgOjpnbEdlbkZyYW1lYnVmZmVycygxLCAmbV9tdWx0
aXNhbXBsZUZCTyk7CisgICAgICAgICAgICA6OmdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVG
RkVSLCBtX211bHRpc2FtcGxlRkJPKTsKICAgICAgICAgICAgIG1fYm91bmRGQk8gPSBtX211bHRp
c2FtcGxlRkJPOwotICAgICAgICAgICAgOjpnbEdlblJlbmRlcmJ1ZmZlcnNFWFQoMSwgJm1fbXVs
dGlzYW1wbGVDb2xvckJ1ZmZlcik7CisgICAgICAgICAgICA6OmdsR2VuUmVuZGVyYnVmZmVycygx
LCAmbV9tdWx0aXNhbXBsZUNvbG9yQnVmZmVyKTsKICAgICAgICAgICAgIGlmIChtX2F0dHJzLnN0
ZW5jaWwgfHwgbV9hdHRycy5kZXB0aCkKLSAgICAgICAgICAgICAgICA6OmdsR2VuUmVuZGVyYnVm
ZmVyc0VYVCgxLCAmbV9tdWx0aXNhbXBsZURlcHRoU3RlbmNpbEJ1ZmZlcik7CisgICAgICAgICAg
ICAgICAgOjpnbEdlblJlbmRlcmJ1ZmZlcnMoMSwgJm1fbXVsdGlzYW1wbGVEZXB0aFN0ZW5jaWxC
dWZmZXIpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xMjksOCArMTM2LDExIEBAIEdyYXBoaWNz
Q29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRChHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRl
cyBhdHRyaWJ1dGVzLCBICiAgICAgQU5HTEVSZXNvdXJjZXMuTWF4RHJhd0J1ZmZlcnMgPSAxOwog
ICAgIG1fY29tcGlsZXIuc2V0UmVzb3VyY2VzKEFOR0xFUmVzb3VyY2VzKTsKIAorI2lmICFVU0Uo
T1BFTkdMX0VTXzIpCiAgICAgOjpnbEVuYWJsZShHTF9WRVJURVhfUFJPR1JBTV9QT0lOVF9TSVpF
KTsKICAgICA6OmdsRW5hYmxlKEdMX1BPSU5UX1NQUklURSk7CisjZW5kaWYKKwogICAgIDo6Z2xD
bGVhckNvbG9yKDAsIDAsIDAsIDApOwogfQogCkBAIC0xNDIsMjAgKzE1MiwxNSBAQCBHcmFwaGlj
c0NvbnRleHQzRDo6fkdyYXBoaWNzQ29udGV4dDNEKCkKICAgICBtYWtlQ29udGV4dEN1cnJlbnQo
KTsKICAgICA6OmdsRGVsZXRlVGV4dHVyZXMoMSwgJm1fdGV4dHVyZSk7CiAgICAgaWYgKG1fYXR0
cnMuYW50aWFsaWFzKSB7Ci0gICAgICAgIDo6Z2xEZWxldGVSZW5kZXJidWZmZXJzRVhUKDEsICZt
X211bHRpc2FtcGxlQ29sb3JCdWZmZXIpOworICAgICAgICA6OmdsRGVsZXRlUmVuZGVyYnVmZmVy
cygxLCAmbV9tdWx0aXNhbXBsZUNvbG9yQnVmZmVyKTsKICAgICAgICAgaWYgKG1fYXR0cnMuc3Rl
bmNpbCB8fCBtX2F0dHJzLmRlcHRoKQotICAgICAgICAgICAgOjpnbERlbGV0ZVJlbmRlcmJ1ZmZl
cnNFWFQoMSwgJm1fbXVsdGlzYW1wbGVEZXB0aFN0ZW5jaWxCdWZmZXIpOwotICAgICAgICA6Omds
RGVsZXRlRnJhbWVidWZmZXJzRVhUKDEsICZtX211bHRpc2FtcGxlRkJPKTsKKyAgICAgICAgICAg
IDo6Z2xEZWxldGVSZW5kZXJidWZmZXJzKDEsICZtX211bHRpc2FtcGxlRGVwdGhTdGVuY2lsQnVm
ZmVyKTsKKyAgICAgICAgOjpnbERlbGV0ZUZyYW1lYnVmZmVycygxLCAmbV9tdWx0aXNhbXBsZUZC
Tyk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKG1fYXR0cnMuc3RlbmNpbCB8fCBtX2F0dHJz
LmRlcHRoKQotICAgICAgICAgICAgOjpnbERlbGV0ZVJlbmRlcmJ1ZmZlcnNFWFQoMSwgJm1fZGVw
dGhTdGVuY2lsQnVmZmVyKTsKKyAgICAgICAgICAgIDo6Z2xEZWxldGVSZW5kZXJidWZmZXJzKDEs
ICZtX2RlcHRoU3RlbmNpbEJ1ZmZlcik7CiAgICAgfQotICAgIDo6Z2xEZWxldGVGcmFtZWJ1ZmZl
cnNFWFQoMSwgJm1fZmJvKTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cmVsZWFzZVNo
YWRlckNvbXBpbGVyKCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIDo6Z2xEZWxldGVG
cmFtZWJ1ZmZlcnMoMSwgJm1fZmJvKTsKIH0KIAogYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0
SW1hZ2VEYXRhKEltYWdlKiBpbWFnZSwgdW5zaWduZWQgaW50IGZvcm1hdCwgdW5zaWduZWQgaW50
IHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBpZ25vcmVHYW1tYUFuZENvbG9yUHJv
ZmlsZSwgVmVjdG9yPHVpbnQ4X3Q+JiBvdXRwdXRWZWN0b3IpCkBAIC0yNTgsNyArMjYzLDExIEBA
IFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QgR3JhcGhpY3NDb250ZXh0M0Q6OnBsYXRmb3JtR3Jh
cGhpY3NDb250ZXh0M0QoKQogCiBib29sIEdyYXBoaWNzQ29udGV4dDNEOjppc0dMRVMyQ29tcGxp
YW50KCkgY29uc3QKIHsKKyNpZiBVU0UoT1BFTkdMX0VTXzIpCisgICAgcmV0dXJuIHRydWU7Cisj
ZWxzZQogICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgogfQogCiAjaWYgVVNFKEFDQ0VMRVJBVEVE
X0NPTVBPU0lUSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5jcHAKaW5kZXgg
ZDg4MjQyZjk2N2E2ZDRiMTliNTExZjQ0NTY5YTMzM2ZhNGIyYTUzMC4uNTJmNzMxM2Q3OGEzZWMz
OGRjNjZhNzdiMmJhNGQ3NWEzMTBmMDIyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRFBy
aXZhdGUuY3BwCkBAIC0yNCw3ICsyNCwxMyBAQAogCiAjaW5jbHVkZSAiSG9zdFdpbmRvdy5oIgog
I2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaWYgVVNFKE9QRU5HTF9FU18yKQorI2luY2x1
ZGUgIk9wZW5HTEVTU2hpbXMuaCIKKyNpbmNsdWRlIDxHTEVTMi9nbDIuaD4KKyNpbmNsdWRlIDxH
TEVTMi9nbDJleHQuaD4KKyNlbHNlCiAjaW5jbHVkZSAiT3BlbkdMU2hpbXMuaCIKKyNlbmRpZgog
I2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dENhaXJvLmgiCiAjaW5jbHVkZSA8d3RmL093bkFycmF5
UHRyLmg+CiAKQEAgLTEyNSw3ICsxMzEsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0
ZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlcgogICAg
ICAgICAgICAgbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKIAogICAgICAgICBtX2Nv
bnRleHQtPnJlc29sdmVNdWx0aXNhbXBsaW5nSWZOZWNlc3NhcnkoKTsKLSAgICAgICAgZ2xCaW5k
RnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2NvbnRleHQtPm1f
Ym91bmRGQk8pOworICAgICAgICA6OmdsQmluZEZyYW1lYnVmZmVyRVhUKEdyYXBoaWNzQ29udGV4
dDNEOjpGUkFNRUJVRkZFUiwgbV9jb250ZXh0LT5tX2JvdW5kRkJPKTsKIAogICAgICAgICBpZiAo
cHJldmlvdXNBY3RpdmVDb250ZXh0ICYmIHByZXZpb3VzQWN0aXZlQ29udGV4dCAhPSBtX2dsQ29u
dGV4dCkKICAgICAgICAgICAgIHByZXZpb3VzQWN0aXZlQ29udGV4dC0+bWFrZUNvbnRleHRDdXJy
ZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jbHV0
dGVyL0dyYXBoaWNzQ29udGV4dDNEQ2x1dHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jbHV0dGVyL0dyYXBoaWNzQ29udGV4dDNEQ2x1dHRlci5jcHAKaW5kZXggYWJm
YmQ0N2U2YWUzMjI5MDg4YTM4M2IwMzRlNmY5MTdlMzRjOGJlZi4uN2RmMWVlOTJkYjU5M2JmNzcw
MDgxN2Q1MmFkNWI4MzU5ZjA3OWZiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2x1dHRlci9HcmFwaGljc0NvbnRleHQzRENsdXR0ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NsdXR0ZXIvR3JhcGhpY3NDb250ZXh0M0RD
bHV0dGVyLmNwcApAQCAtNTYsMTEgKzU2LDYgQEAgR3JhcGhpY3NDb250ZXh0M0Q6On5HcmFwaGlj
c0NvbnRleHQzRCgpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6cmVsZWFzZVNoYWRlckNvbXBpbGVyKCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgp
OwotfQotCiBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRJbWFnZURhdGEoSW1hZ2UqIGltYWdl
LCB1bnNpZ25lZCBpbnQgZm9ybWF0LCB1bnNpZ25lZCBpbnQgdHlwZSwgYm9vbCBwcmVtdWx0aXBs
eUFscGhhLCBib29sIGlnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlLCBWZWN0b3I8dWludDhfdD4m
IG91dHB1dFZlY3RvcikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNERWZsLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQz
REVmbC5jcHAKaW5kZXggNzIxZDdjN2JlYTU2ZTE4OTkwYTQxM2Y4MTg1ZjJhZmU3ZjY1OTkzMC4u
YjVmMTQxNTg1NGUyNTQ4ZWEzMzIwZWQ2ZmQ1YTQzODNmYWMyZGZmOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNERWZsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250
ZXh0M0RFZmwuY3BwCkBAIC00NzQsMTEgKzQ3NCw2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6
OnJlYWRQaXhlbHMoR0MzRGludCB4LCBHQzNEaW50IHksIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNp
CiAgICAgbV9wcml2YXRlLT5yZWFkUGl4ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwg
dHlwZSwgZGF0YSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnJlbGVhc2VTaGFkZXJD
b21waWxlcigpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQogdm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6cmVuZGVyYnVmZmVyU3RvcmFnZShHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIGlu
dGVybmFsZm9ybWF0LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQpCiB7CiAgICAg
bV9wcml2YXRlLT5yZW5kZXJidWZmZXJTdG9yYWdlKHRhcmdldCwgaW50ZXJuYWxmb3JtYXQsIHdp
ZHRoLCBoZWlnaHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZWdsL0dMQ29udGV4dEVHTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9lZ2wvR0xDb250ZXh0RUdMLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYzczOGZhYjMxMjY2YTQ1MmIwZWU5
M2VlZDk3MDFjNjY4MzY5MzdmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5jcHAKQEAgLTAsMCArMSwyOTQgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlhLCBTLkwuCisgKgorICogIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGlj
CisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCisgKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExl
c3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAx
ICBVU0EKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR0xDb250ZXh0RUdM
LmgiCisKKyNpZiBVU0UoRUdMKQorCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKKyNp
bmNsdWRlIDx3dGYvT3duUHRyLmg+CisKKyNpZiBVU0UoT1BFTkdMX0VTXzIpCisjaW5jbHVkZSA8
R0xFUzIvZ2wyLmg+CisjaW5jbHVkZSA8R0xFUzIvZ2wyZXh0Lmg+CisjZWxzZQorI2luY2x1ZGUg
Ik9wZW5HTFNoaW1zLmgiCisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMg
RUdMRGlzcGxheSBnU2hhcmVkRUdMRGlzcGxheSA9IEVHTF9OT19ESVNQTEFZOworCisjaWYgVVNF
KE9QRU5HTF9FU18yKQorc3RhdGljIGNvbnN0IEVHTGVudW0gZ0dMQXBpID0gRUdMX09QRU5HTF9F
U19BUEk7CisjZWxzZQorc3RhdGljIGNvbnN0IEVHTGVudW0gZ0dMQXBpID0gRUdMX09QRU5HTF9B
UEk7CisjZW5kaWYKKworc3RhdGljIEVHTERpc3BsYXkgc2hhcmVkRUdMRGlzcGxheSgpCit7Cisg
ICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQgPSBmYWxzZTsKKyAgICBpZiAoIWluaXRpYWxpemVk
KSB7CisgICAgICAgIGluaXRpYWxpemVkID0gdHJ1ZTsKKyNpZiBQTEFURk9STShYMTEpCisgICAg
ICAgIGdTaGFyZWRFR0xEaXNwbGF5ID0gZWdsR2V0RGlzcGxheShHTENvbnRleHQ6OnNoYXJlZFgx
MURpc3BsYXkoKSk7CisjZWxzZQorICAgICAgICBnU2hhcmVkRUdMRGlzcGxheSA9IGVnbEdldERp
c3BsYXkoRUdMX0RFRkFVTFRfRElTUExBWSk7CisjZW5kaWYKKyAgICAgICAgaWYgKGdTaGFyZWRF
R0xEaXNwbGF5ICE9IEVHTF9OT19ESVNQTEFZICYmICghZWdsSW5pdGlhbGl6ZShnU2hhcmVkRUdM
RGlzcGxheSwgMCwgMCkgfHwgIWVnbEJpbmRBUEkoZ0dMQXBpKSkpCisgICAgICAgICAgICBnU2hh
cmVkRUdMRGlzcGxheSA9IEVHTF9OT19ESVNQTEFZOworICAgIH0KKyAgICByZXR1cm4gZ1NoYXJl
ZEVHTERpc3BsYXk7Cit9CisKK3ZvaWQgR0xDb250ZXh0RUdMOjpjbGVhbnVwU2hhcmVkRUdMRGlz
cGxheSgpCit7CisgICAgaWYgKGdTaGFyZWRFR0xEaXNwbGF5KQorICAgICAgICBnU2hhcmVkRUdM
RGlzcGxheSA9IEVHTF9OT19ESVNQTEFZOworfQorCisKK3N0YXRpYyBjb25zdCBFR0xpbnQgZ0Nv
bnRleHRBdHRyaWJ1dGVzW10gPSB7CisjaWYgVVNFKE9QRU5HTF9FU18yKQorICAgIEVHTF9DT05U
RVhUX0NMSUVOVF9WRVJTSU9OLCAyLAorI2VuZGlmCisgICAgRUdMX05PTkUKK307CisKK3ZvaWQg
R0xDb250ZXh0RUdMOjphZGRBY3RpdmVDb250ZXh0KEdMQ29udGV4dEVHTCogY29udGV4dCkKK3sK
KyAgICBzdGF0aWMgYm9vbCBhZGRlZEF0RXhpdEhhbmRsZXIgPSBmYWxzZTsKKyAgICBpZiAoIWFk
ZGVkQXRFeGl0SGFuZGxlcikgeworICAgICAgICBhdGV4aXQoJkdMQ29udGV4dEVHTDo6Y2xlYW51
cFNoYXJlZEVHTERpc3BsYXkpOworICAgICAgICBhZGRlZEF0RXhpdEhhbmRsZXIgPSB0cnVlOwor
ICAgIH0KKyAgICBHTENvbnRleHQ6OmFkZEFjdGl2ZUNvbnRleHQoY29udGV4dCk7Cit9CisKK3N0
YXRpYyBib29sIGdldEVHTENvbmZpZyhFR0xDb25maWcqIGNvbmZpZywgR0xDb250ZXh0RUdMOjpF
R0xTdXJmYWNlVHlwZSBzdXJmYWNlVHlwZSkKK3sKKyAgICBFR0xpbnQgYXR0cmlidXRlTGlzdFtd
ID0geworI2lmIFVTRShPUEVOR0xfRVNfMikKKyAgICAgICAgRUdMX1JFTkRFUkFCTEVfVFlQRSwg
RUdMX09QRU5HTF9FUzJfQklULAorI2Vsc2UKKyAgICAgICAgRUdMX1JFTkRFUkFCTEVfVFlQRSwg
RUdMX09QRU5HTF9CSVQsCisjZW5kaWYKKyAgICAgICAgRUdMX1JFRF9TSVpFLCA4LAorICAgICAg
ICBFR0xfR1JFRU5fU0laRSwgOCwKKyAgICAgICAgRUdMX0JMVUVfU0laRSwgOCwKKyAgICAgICAg
RUdMX1NURU5DSUxfU0laRSwgOCwKKyAgICAgICAgRUdMX0FMUEhBX1NJWkUsIDgsCisgICAgICAg
IEVHTF9OT05FLCBFR0xfTk9ORSwKKyAgICAgICAgRUdMX05PTkUKKyAgICB9OworCisgICAgaWYg
KHN1cmZhY2VUeXBlID09IEdMQ29udGV4dEVHTDo6UGJ1ZmZlclN1cmZhY2UpIHsKKyAgICAgICAg
YXR0cmlidXRlTGlzdFsxMF0gPSBFR0xfU1VSRkFDRV9UWVBFOworICAgICAgICBhdHRyaWJ1dGVM
aXN0WzExXSA9IEVHTF9QQlVGRkVSX0JJVDsKKyAgICB9IGVsc2UgaWYgKHN1cmZhY2VUeXBlID09
IEdMQ29udGV4dEVHTDo6UGl4bWFwU3VyZmFjZSkgeworICAgICAgICBhdHRyaWJ1dGVMaXN0WzEw
XSA9IEVHTF9TVVJGQUNFX1RZUEU7CisgICAgICAgIGF0dHJpYnV0ZUxpc3RbMTFdID0gRUdMX1BJ
WE1BUF9CSVQ7CisgICAgfSBlbHNlIGlmIChzdXJmYWNlVHlwZSA9PSBHTENvbnRleHRFR0w6Oldp
bmRvd1N1cmZhY2UpIHsKKyAgICAgICAgYXR0cmlidXRlTGlzdFsxMF0gPSBFR0xfU1VSRkFDRV9U
WVBFOworICAgICAgICBhdHRyaWJ1dGVMaXN0WzExXSA9IEVHTF9XSU5ET1dfQklUOworICAgIH0K
KworICAgIEVHTGludCBudW1iZXJDb25maWdzUmV0dXJuZWQ7CisgICAgcmV0dXJuIGVnbENob29z
ZUNvbmZpZyhzaGFyZWRFR0xEaXNwbGF5KCksIGF0dHJpYnV0ZUxpc3QsIGNvbmZpZywgMSwgJm51
bWJlckNvbmZpZ3NSZXR1cm5lZCkgJiYgbnVtYmVyQ29uZmlnc1JldHVybmVkOworfQorCitQYXNz
T3duUHRyPEdMQ29udGV4dEVHTD4gR0xDb250ZXh0RUdMOjpjcmVhdGVXaW5kb3dDb250ZXh0KEVH
TE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93LCBHTENvbnRleHQqIHNoYXJpbmdDb250ZXh0KQorewor
ICAgIEVHTENvbnRleHQgZWdsU2hhcmluZ0NvbnRleHQgPSBzaGFyaW5nQ29udGV4dCA/IHN0YXRp
Y19jYXN0PEdMQ29udGV4dEVHTCo+KHNoYXJpbmdDb250ZXh0KS0+bV9jb250ZXh0IDogMDsKKwor
ICAgIEVHTERpc3BsYXkgZGlzcGxheSA9IHNoYXJlZEVHTERpc3BsYXkoKTsKKyAgICBpZiAoZGlz
cGxheSA9PSBFR0xfTk9fRElTUExBWSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBF
R0xDb25maWcgY29uZmlnOworICAgIGlmICghZ2V0RUdMQ29uZmlnKCZjb25maWcsIFdpbmRvd1N1
cmZhY2UpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIEVHTENvbnRleHQgY29udGV4
dCA9IGVnbENyZWF0ZUNvbnRleHQoZGlzcGxheSwgY29uZmlnLCBlZ2xTaGFyaW5nQ29udGV4dCwg
Z0NvbnRleHRBdHRyaWJ1dGVzKTsKKyAgICBpZiAoY29udGV4dCA9PSBFR0xfTk9fQ09OVEVYVCkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBFR0xTdXJmYWNlIHN1cmZhY2UgPSBlZ2xD
cmVhdGVXaW5kb3dTdXJmYWNlKGRpc3BsYXksIGNvbmZpZywgd2luZG93LCAwKTsKKyAgICBpZiAo
c3VyZmFjZSA9PSBFR0xfTk9fU1VSRkFDRSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAg
ICByZXR1cm4gYWRvcHRQdHIobmV3IEdMQ29udGV4dEVHTChjb250ZXh0LCBzdXJmYWNlLCBXaW5k
b3dTdXJmYWNlKSk7Cit9CisKK1Bhc3NPd25QdHI8R0xDb250ZXh0RUdMPiBHTENvbnRleHRFR0w6
OmNyZWF0ZVBidWZmZXJDb250ZXh0KEVHTENvbnRleHQgc2hhcmluZ0NvbnRleHQpCit7CisgICAg
RUdMRGlzcGxheSBkaXNwbGF5ID0gc2hhcmVkRUdMRGlzcGxheSgpOworICAgIGlmIChkaXNwbGF5
ID09IEVHTF9OT19ESVNQTEFZKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIEVHTENv
bmZpZyBjb25maWc7CisgICAgaWYgKCFnZXRFR0xDb25maWcoJmNvbmZpZywgUGJ1ZmZlclN1cmZh
Y2UpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIEVHTENvbnRleHQgY29udGV4dCA9
IGVnbENyZWF0ZUNvbnRleHQoZGlzcGxheSwgY29uZmlnLCBzaGFyaW5nQ29udGV4dCwgZ0NvbnRl
eHRBdHRyaWJ1dGVzKTsKKyAgICBpZiAoY29udGV4dCA9PSBFR0xfTk9fQ09OVEVYVCkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBzdGF0aWMgY29uc3QgaW50IHBidWZmZXJBdHRyaWJ1
dGVzW10gPSB7IEVHTF9XSURUSCwgMSwgRUdMX0hFSUdIVCwgMSwgRUdMX05PTkUgfTsKKyAgICBF
R0xTdXJmYWNlIHN1cmZhY2UgPSBlZ2xDcmVhdGVQYnVmZmVyU3VyZmFjZShkaXNwbGF5LCBjb25m
aWcsIHBidWZmZXJBdHRyaWJ1dGVzKTsKKyAgICBpZiAoc3VyZmFjZSA9PSBFR0xfTk9fU1VSRkFD
RSkgeworICAgICAgICBlZ2xEZXN0cm95Q29udGV4dChkaXNwbGF5LCBjb250ZXh0KTsKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBHTENv
bnRleHRFR0woY29udGV4dCwgc3VyZmFjZSwgUGJ1ZmZlclN1cmZhY2UpKTsKK30KKworUGFzc093
blB0cjxHTENvbnRleHRFR0w+IEdMQ29udGV4dEVHTDo6Y3JlYXRlUGl4bWFwQ29udGV4dChFR0xD
b250ZXh0IHNoYXJpbmdDb250ZXh0KQoreworI2lmIFBMQVRGT1JNKFgxMSkKKyAgICBFR0xEaXNw
bGF5IGRpc3BsYXkgPSBzaGFyZWRFR0xEaXNwbGF5KCk7CisgICAgaWYgKGRpc3BsYXkgPT0gRUdM
X05PX0RJU1BMQVkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgRUdMQ29uZmlnIGNv
bmZpZzsKKyAgICBpZiAoIWdldEVHTENvbmZpZygmY29uZmlnLCBQaXhtYXBTdXJmYWNlKSkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBFR0xDb250ZXh0IGNvbnRleHQgPSBlZ2xDcmVh
dGVDb250ZXh0KGRpc3BsYXksIGNvbmZpZywgc2hhcmluZ0NvbnRleHQsIGdDb250ZXh0QXR0cmli
dXRlcyk7CisgICAgaWYgKGNvbnRleHQgPT0gRUdMX05PX0NPTlRFWFQpCisgICAgICAgIHJldHVy
biBudWxscHRyOworCisgICAgRUdMaW50IGRlcHRoOworICAgIGlmICghZWdsR2V0Q29uZmlnQXR0
cmliKGRpc3BsYXksIGNvbmZpZywgRUdMX0RFUFRIX1NJWkUsICZkZXB0aCkpCisgICAgICAgIHJl
dHVybiBudWxscHRyOworCisgICAgUGl4bWFwIHBpeG1hcCA9IFhDcmVhdGVQaXhtYXAoc2hhcmVk
WDExRGlzcGxheSgpLCBEZWZhdWx0Um9vdFdpbmRvdyhzaGFyZWRYMTFEaXNwbGF5KCkpLCAxLCAx
LCBkZXB0aCk7CisgICAgaWYgKCFwaXhtYXApCisgICAgICAgIHJldHVybiBudWxscHRyOworCisg
ICAgRUdMU3VyZmFjZSBzdXJmYWNlID0gZWdsQ3JlYXRlUGl4bWFwU3VyZmFjZShkaXNwbGF5LCBj
b25maWcsIHBpeG1hcCwgMCk7CisjZWxzZQorICAgIEVHTFN1cmZhY2Ugc3VyZmFjZSA9IEVHTF9O
T19TVVJGQUNFOworI2VuZGlmCisgICAgaWYgKHN1cmZhY2UgPT0gRUdMX05PX1NVUkZBQ0UpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBHTENvbnRl
eHRFR0woY29udGV4dCwgc3VyZmFjZSwgUGl4bWFwU3VyZmFjZSkpOworfQorCitQYXNzT3duUHRy
PEdMQ29udGV4dEVHTD4gR0xDb250ZXh0RUdMOjpjcmVhdGVDb250ZXh0KEVHTE5hdGl2ZVdpbmRv
d1R5cGUgd2luZG93LCBHTENvbnRleHQqIHNoYXJpbmdDb250ZXh0KQoreworICAgIGlmICghc2hh
cmVkRUdMRGlzcGxheSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHN0YXRpYyBi
b29sIGluaXRpYWxpemVkID0gZmFsc2U7CisgICAgc3RhdGljIGJvb2wgc3VjY2VzcyA9IHRydWU7
CisgICAgaWYgKCFpbml0aWFsaXplZCkgeworI2lmICFVU0UoT1BFTkdMX0VTXzIpCisgICAgICAg
IHN1Y2Nlc3MgPSBpbml0aWFsaXplT3BlbkdMU2hpbXMoKTsKKyNlbmRpZgorICAgICAgICBpbml0
aWFsaXplZCA9IHRydWU7CisgICAgfQorICAgIGlmICghc3VjY2VzcykKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisKKyAgICBFR0xDb250ZXh0IGVnbFNoYXJpbmdDb250ZXh0ID0gc2hhcmluZ0Nv
bnRleHQgPyBzdGF0aWNfY2FzdDxHTENvbnRleHRFR0wqPihzaGFyaW5nQ29udGV4dCktPm1fY29u
dGV4dCA6IDA7CisgICAgT3duUHRyPEdMQ29udGV4dEVHTD4gY29udGV4dCA9IHdpbmRvdyA/IGNy
ZWF0ZVdpbmRvd0NvbnRleHQod2luZG93LCBzaGFyaW5nQ29udGV4dCkgOiBudWxscHRyOworICAg
IGlmICghY29udGV4dCkKKyAgICAgICAgY29udGV4dCA9IGNyZWF0ZVBpeG1hcENvbnRleHQoZWds
U2hhcmluZ0NvbnRleHQpOworCisgICAgaWYgKCFjb250ZXh0KQorICAgICAgICBjb250ZXh0ID0g
Y3JlYXRlUGJ1ZmZlckNvbnRleHQoZWdsU2hhcmluZ0NvbnRleHQpOworICAgIAorICAgIHJldHVy
biBjb250ZXh0LnJlbGVhc2UoKTsKK30KKworR0xDb250ZXh0RUdMOjpHTENvbnRleHRFR0woRUdM
Q29udGV4dCBjb250ZXh0LCBFR0xTdXJmYWNlIHN1cmZhY2UsIEVHTFN1cmZhY2VUeXBlIHR5cGUp
CisgICAgOiBtX2NvbnRleHQoY29udGV4dCkKKyAgICAsIG1fc3VyZmFjZShzdXJmYWNlKQorICAg
ICwgbV90eXBlKHR5cGUpCit7CisgICAgYWRkQWN0aXZlQ29udGV4dCh0aGlzKTsKK30KKworR0xD
b250ZXh0RUdMOjp+R0xDb250ZXh0RUdMKCkKK3sKKyAgICBFR0xEaXNwbGF5IGRpc3BsYXkgPSBz
aGFyZWRFR0xEaXNwbGF5KCk7CisgICAgaWYgKG1fY29udGV4dCkgeworICAgICAgICBnbEJpbmRG
cmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgMCk7CisgICAgICAgIGVnbE1ha2VDdXJyZW50KGRp
c3BsYXksIEVHTF9OT19TVVJGQUNFLCBFR0xfTk9fU1VSRkFDRSwgRUdMX05PX0NPTlRFWFQpOwor
ICAgICAgICBlZ2xEZXN0cm95Q29udGV4dChkaXNwbGF5LCBtX2NvbnRleHQpOworICAgIH0KKwor
ICAgIGlmIChtX3N1cmZhY2UpCisgICAgICAgIGVnbERlc3Ryb3lTdXJmYWNlKGRpc3BsYXksIG1f
c3VyZmFjZSk7CisgICAgcmVtb3ZlQWN0aXZlQ29udGV4dCh0aGlzKTsKK30KKworYm9vbCBHTENv
bnRleHRFR0w6OmNhblJlbmRlclRvRGVmYXVsdEZyYW1lYnVmZmVyKCkKK3sKKyAgICByZXR1cm4g
bV90eXBlID09IFdpbmRvd1N1cmZhY2U7Cit9CisKK0ludFNpemUgR0xDb250ZXh0RUdMOjpkZWZh
dWx0RnJhbWVCdWZmZXJTaXplKCkKK3sKKyAgICBpZiAoIWNhblJlbmRlclRvRGVmYXVsdEZyYW1l
YnVmZmVyKCkpCisgICAgICAgIHJldHVybiBJbnRTaXplKCk7CisKKyAgICBFR0xpbnQgd2lkdGgs
IGhlaWdodDsKKyAgICBpZiAoIWVnbFF1ZXJ5U3VyZmFjZShzaGFyZWRFR0xEaXNwbGF5KCksIG1f
c3VyZmFjZSwgRUdMX1dJRFRILCAmd2lkdGgpCisgICAgICAgIHx8ICFlZ2xRdWVyeVN1cmZhY2Uo
c2hhcmVkRUdMRGlzcGxheSgpLCBtX3N1cmZhY2UsIEVHTF9IRUlHSFQsICZoZWlnaHQpKQorICAg
ICAgICByZXR1cm4gSW50U2l6ZSgpOworCisgICAgcmV0dXJuIEludFNpemUod2lkdGgsIGhlaWdo
dCk7Cit9CisKK2Jvb2wgR0xDb250ZXh0RUdMOjptYWtlQ29udGV4dEN1cnJlbnQoKQoreworICAg
IEFTU0VSVChtX2NvbnRleHQgJiYgbV9zdXJmYWNlKTsKKworICAgIEdMQ29udGV4dDo6bWFrZUNv
bnRleHRDdXJyZW50KCk7CisgICAgaWYgKGVnbEdldEN1cnJlbnRDb250ZXh0KCkgPT0gbV9jb250
ZXh0KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIHJldHVybiBlZ2xNYWtlQ3VycmVudChz
aGFyZWRFR0xEaXNwbGF5KCksIG1fc3VyZmFjZSwgbV9zdXJmYWNlLCBtX2NvbnRleHQpOworfQor
Cit2b2lkIEdMQ29udGV4dEVHTDo6c3dhcEJ1ZmZlcnMoKQoreworICAgIGlmIChtX3N1cmZhY2Up
CisgICAgICAgIGVnbFN3YXBCdWZmZXJzKHNoYXJlZEVHTERpc3BsYXkoKSwgbV9zdXJmYWNlKTsK
K30KKwordm9pZCBHTENvbnRleHRFR0w6OndhaXROYXRpdmUoKQoreworICAgIGVnbFdhaXROYXRp
dmUoRUdMX0NPUkVfTkFUSVZFX0VOR0lORSk7Cit9CisKKyNpZiBFTkFCTEUoV0VCR0wpCitQbGF0
Zm9ybUdyYXBoaWNzQ29udGV4dDNEIEdMQ29udGV4dEVHTDo6cGxhdGZvcm1Db250ZXh0KCkKK3sK
KyAgICByZXR1cm4gbV9jb250ZXh0OworfQorI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIFVTRShFR0wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzVkNGJmNzU2MTVjN2I3
MjM4ZmExYWQyY2I5NmEyMjM5YTU1MjkyZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuaApAQCAtMCwwICsxLDY4IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIElnYWxpYSBTLkwuCisgKgorICogIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAq
ICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVi
bGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICog
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCisgKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKKyAqICBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSBVU0EKKyAqLworCisjaWZuZGVmIEdMQ29udGV4dEVHTF9oCisjZGVmaW5lIEdMQ29u
dGV4dEVHTF9oCisKKyNpZiBVU0UoRUdMKQorCisjaW5jbHVkZSAiR0xDb250ZXh0LmgiCisKKyNp
bmNsdWRlIDxFR0wvZWdsLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgR0xDb250
ZXh0RUdMIDogcHVibGljIEdMQ29udGV4dCB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoR0xD
b250ZXh0RUdMKTsKK3B1YmxpYzoKKyAgICBlbnVtIEVHTFN1cmZhY2VUeXBlIHsgUGJ1ZmZlclN1
cmZhY2UsIFdpbmRvd1N1cmZhY2UsIFBpeG1hcFN1cmZhY2UgfTsKKyAgICBzdGF0aWMgUGFzc093
blB0cjxHTENvbnRleHRFR0w+IGNyZWF0ZUNvbnRleHQoRUdMTmF0aXZlV2luZG93VHlwZSwgR0xD
b250ZXh0KiBzaGFyaW5nQ29udGV4dCA9IDApOworICAgIHN0YXRpYyBQYXNzT3duUHRyPEdMQ29u
dGV4dEVHTD4gY3JlYXRlV2luZG93Q29udGV4dChFR0xOYXRpdmVXaW5kb3dUeXBlLCBHTENvbnRl
eHQqIHNoYXJpbmdDb250ZXh0KTsKKworICAgIHZpcnR1YWwgfkdMQ29udGV4dEVHTCgpOworICAg
IHZpcnR1YWwgYm9vbCBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3dh
cEJ1ZmZlcnMoKTsKKyAgICB2aXJ0dWFsIHZvaWQgd2FpdE5hdGl2ZSgpOworICAgIHZpcnR1YWwg
Ym9vbCBjYW5SZW5kZXJUb0RlZmF1bHRGcmFtZWJ1ZmZlcigpOworICAgIHZpcnR1YWwgSW50U2l6
ZSBkZWZhdWx0RnJhbWVCdWZmZXJTaXplKCk7CisKKworI2lmIEVOQUJMRShXRUJHTCkKKyAgICB2
aXJ0dWFsIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QgcGxhdGZvcm1Db250ZXh0KCk7CisjZW5k
aWYKKworcHJpdmF0ZToKKyAgICBzdGF0aWMgUGFzc093blB0cjxHTENvbnRleHRFR0w+IGNyZWF0
ZVBidWZmZXJDb250ZXh0KEVHTENvbnRleHQgc2hhcmluZ0NvbnRleHQpOworICAgIHN0YXRpYyBQ
YXNzT3duUHRyPEdMQ29udGV4dEVHTD4gY3JlYXRlUGl4bWFwQ29udGV4dChFR0xDb250ZXh0IHNo
YXJpbmdDb250ZXh0KTsKKworICAgIHN0YXRpYyB2b2lkIGFkZEFjdGl2ZUNvbnRleHQoR0xDb250
ZXh0RUdMKik7CisgICAgc3RhdGljIHZvaWQgY2xlYW51cFNoYXJlZEVHTERpc3BsYXkodm9pZCk7
CisKKyAgICBHTENvbnRleHRFR0woRUdMQ29udGV4dCwgRUdMU3VyZmFjZSwgRUdMU3VyZmFjZVR5
cGUpOworCisgICAgRUdMQ29udGV4dCBtX2NvbnRleHQ7CisgICAgRUdMU3VyZmFjZSBtX3N1cmZh
Y2U7CisgICAgRUdMU3VyZmFjZVR5cGUgbV90eXBlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gVVNFKEVHTCkKKworI2VuZGlmIC8vIEdMQ29udGV4dEVHTF9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nbHgvR0xDb250ZXh0
R0xYLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dseC9HTENvbnRleHRH
TFguY3BwCmluZGV4IDk1NDBiODZhMGJhZjQ0NmJmYjZmNjlkMGJkNjg2OTI3ZjVlNzkyMTMuLjA5
YjYzMDc3NGI5OWY0ZmJlMGUwNTNjYWFlOTQ4YjAxOWMyYzI5ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dseC9HTENvbnRleHRHTFguY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dseC9HTENvbnRleHRHTFguY3BwCkBAIC0y
Nyw3MSArMjcsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIFdlIGRvIG5vdCB3YW50
IHRvIGNhbGwgZ2xYTWFrZUNvbnRleHRDdXJyZW50IHVzaW5nIGRpZmZlcmVudCBEaXNwbGF5IHBv
aW50ZXJzLAotLy8gYmVjYXVzZSBpdCBtaWdodCBsZWFkIHRvIGNyYXNoZXMgaW4gc29tZSBkcml2
ZXJzIChmZ2xyeCkuIFdlIHVzZSBhIHNoYXJlZCBkaXNwbGF5Ci0vLyBwb2ludGVyIGhlcmUuCi1z
dGF0aWMgRGlzcGxheSogZ1NoYXJlZERpc3BsYXkgPSAwOwotRGlzcGxheSogR0xDb250ZXh0R0xY
OjpzaGFyZWREaXNwbGF5KCkKLXsKLSAgICBpZiAoIWdTaGFyZWREaXNwbGF5KQotICAgICAgICBn
U2hhcmVkRGlzcGxheSA9IFhPcGVuRGlzcGxheSgwKTsKLSAgICByZXR1cm4gZ1NoYXJlZERpc3Bs
YXk7Ci19Ci0KLS8vIEJlY2F1c2Ugb2YgZHJpdmVyIGJ1Z3MsIGV4aXRpbmcgdGhlIHByb2dyYW0g
d2hlbiB0aGVyZSBhcmUgYWN0aXZlIHBidWZmZXJzCi0vLyBjYW4gY3Jhc2ggdGhlIFggc2VydmVy
ICh0aGlzIGhhcyBiZWVuIG9ic2VydmVkIHdpdGggdGhlIG9mZmljaWFsIE52aWRpYSBkcml2ZXJz
KS4KLS8vIFdlIG5lZWQgdG8gZW5zdXJlIHRoYXQgd2UgY2xlYW4gZXZlcnl0aGluZyB1cCBvbiBl
eGl0LiBUaGVyZSBhcmUgc2V2ZXJhbCByZWFzb25zCi0vLyB0aGF0IEdyYXBoaWNzQ29udGV4dDNE
cyB3aWxsIHN0aWxsIGJlIGFsaXZlIGF0IGV4aXQsIGluY2x1ZGluZyB1c2VyIGVycm9yIChtZW1v
cnkKLS8vIGxlYWtzKSBhbmQgdGhlIHBhZ2UgY2FjaGUuIEluIGFueSBjYXNlLCB3ZSBkb24ndCB3
YW50IHRoZSBYIHNlcnZlciB0byBjcmFzaC4KLXR5cGVkZWYgVmVjdG9yPEdMQ29udGV4dCo+IEFj
dGl2ZUNvbnRleHRMaXN0Owotc3RhdGljIEFjdGl2ZUNvbnRleHRMaXN0JiBhY3RpdmVDb250ZXh0
TGlzdCgpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBY3RpdmVDb250ZXh0TGlzdCwgYWN0
aXZlQ29udGV4dHMsICgpKTsKLSAgICByZXR1cm4gYWN0aXZlQ29udGV4dHM7Ci19Ci0KLXZvaWQg
R0xDb250ZXh0R0xYOjphZGRBY3RpdmVDb250ZXh0KEdMQ29udGV4dEdMWCogY29udGV4dCkKLXsK
LSAgICBzdGF0aWMgYm9vbCBhZGRlZEF0RXhpdEhhbmRsZXIgPSBmYWxzZTsKLSAgICBpZiAoIWFk
ZGVkQXRFeGl0SGFuZGxlcikgewotICAgICAgICBhdGV4aXQoJkdMQ29udGV4dEdMWDo6Y2xlYW51
cEFjdGl2ZUNvbnRleHRzQXRFeGl0KTsKLSAgICAgICAgYWRkZWRBdEV4aXRIYW5kbGVyID0gdHJ1
ZTsKLSAgICB9Ci0gICAgYWN0aXZlQ29udGV4dExpc3QoKS5hcHBlbmQoY29udGV4dCk7Ci19Ci0K
LXN0YXRpYyBib29sIGdDbGVhbmluZ1VwQXRFeGl0ID0gZmFsc2U7Ci0KLXZvaWQgR0xDb250ZXh0
R0xYOjpyZW1vdmVBY3RpdmVDb250ZXh0KEdMQ29udGV4dCogY29udGV4dCkKLXsKLSAgICAvLyBJ
ZiB3ZSBhcmUgY2xlYW5pbmcgdXAgdGhlIGNvbnRleHQgbGlzdCBhdCBleGl0LCBkb24ndCBib3Ro
ZXIgcmVtb3ZpbmcgdGhlIGNvbnRleHQKLSAgICAvLyBmcm9tIHRoZSBsaXN0LCBzaW5jZSB3ZSBk
b24ndCB3YW50IHRvIG1vZGlmeSB0aGUgbGlzdCB3aGlsZSBpdCdzIGJlaW5nIGl0ZXJhdGVkLgot
ICAgIGlmIChnQ2xlYW5pbmdVcEF0RXhpdCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQWN0aXZl
Q29udGV4dExpc3QmIGNvbnRleHRMaXN0ID0gYWN0aXZlQ29udGV4dExpc3QoKTsKLSAgICBzaXpl
X3QgaSA9IGNvbnRleHRMaXN0LmZpbmQoY29udGV4dCk7Ci0gICAgaWYgKGkgIT0gbm90Rm91bmQp
Ci0gICAgICAgIGNvbnRleHRMaXN0LnJlbW92ZShpKTsKLX0KLQotdm9pZCBHTENvbnRleHRHTFg6
OmNsZWFudXBBY3RpdmVDb250ZXh0c0F0RXhpdCgpCi17Ci0gICAgZ0NsZWFuaW5nVXBBdEV4aXQg
PSB0cnVlOwotCi0gICAgQWN0aXZlQ29udGV4dExpc3QmIGNvbnRleHRMaXN0ID0gYWN0aXZlQ29u
dGV4dExpc3QoKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvbnRleHRMaXN0LnNpemUo
KTsgKytpKQotICAgICAgICBkZWxldGUgY29udGV4dExpc3RbaV07Ci0KLSAgICBpZiAoIWdTaGFy
ZWREaXNwbGF5KQotICAgICAgICByZXR1cm47Ci0gICAgWENsb3NlRGlzcGxheShnU2hhcmVkRGlz
cGxheSk7Ci0gICAgZ1NoYXJlZERpc3BsYXkgPSAwOwotfQotCiBQYXNzT3duUHRyPEdMQ29udGV4
dEdMWD4gR0xDb250ZXh0R0xYOjpjcmVhdGVXaW5kb3dDb250ZXh0KFhJRCB3aW5kb3csIEdMQ29u
dGV4dCogc2hhcmluZ0NvbnRleHQpCiB7Ci0gICAgRGlzcGxheSogZGlzcGxheSA9IHNoYXJlZERp
c3BsYXkoKTsKKyAgICBEaXNwbGF5KiBkaXNwbGF5ID0gc2hhcmVkWDExRGlzcGxheSgpOwogICAg
IFhXaW5kb3dBdHRyaWJ1dGVzIGF0dHJpYnV0ZXM7CiAgICAgaWYgKCFYR2V0V2luZG93QXR0cmli
dXRlcyhkaXNwbGF5LCB3aW5kb3csICZhdHRyaWJ1dGVzKSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CkBAIC0xMzAsNyArNjgsNyBAQCBQYXNzT3duUHRyPEdMQ29udGV4dEdMWD4gR0xDb250ZXh0
R0xYOjpjcmVhdGVQYnVmZmVyQ29udGV4dChHTFhDb250ZXh0IHNoYXJpbmdDbwogICAgIH07CiAK
ICAgICBpbnQgcmV0dXJuZWRFbGVtZW50czsKLSAgICBEaXNwbGF5KiBkaXNwbGF5ID0gc2hhcmVk
RGlzcGxheSgpOworICAgIERpc3BsYXkqIGRpc3BsYXkgPSBzaGFyZWRYMTFEaXNwbGF5KCk7CiAg
ICAgR0xYRkJDb25maWcqIGNvbmZpZ3MgPSBnbFhDaG9vc2VGQkNvbmZpZyhkaXNwbGF5LCAwLCBm
YkNvbmZpZ0F0dHJpYnV0ZXMsICZyZXR1cm5lZEVsZW1lbnRzKTsKICAgICBpZiAoIXJldHVybmVk
RWxlbWVudHMpIHsKICAgICAgICAgWEZyZWUoY29uZmlncyk7CkBAIC0xNzAsNyArMTA4LDcgQEAg
UGFzc093blB0cjxHTENvbnRleHRHTFg+IEdMQ29udGV4dEdMWDo6Y3JlYXRlUGl4bWFwQ29udGV4
dChHTFhDb250ZXh0IHNoYXJpbmdDb24KICAgICAgICAgMAogICAgIH07CiAKLSAgICBEaXNwbGF5
KiBkaXNwbGF5ID0gc2hhcmVkRGlzcGxheSgpOworICAgIERpc3BsYXkqIGRpc3BsYXkgPSBzaGFy
ZWRYMTFEaXNwbGF5KCk7CiAgICAgWFZpc3VhbEluZm8qIHZpc3VhbEluZm8gPSBnbFhDaG9vc2VW
aXN1YWwoZGlzcGxheSwgRGVmYXVsdFNjcmVlbihkaXNwbGF5KSwgdmlzdWFsQXR0cmlidXRlcyk7
CiAgICAgaWYgKCF2aXN1YWxJbmZvKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTIwMCw3
ICsxMzgsNyBAQCBQYXNzT3duUHRyPEdMQ29udGV4dEdMWD4gR0xDb250ZXh0R0xYOjpjcmVhdGVQ
aXhtYXBDb250ZXh0KEdMWENvbnRleHQgc2hhcmluZ0NvbgogCiBQYXNzT3duUHRyPEdMQ29udGV4
dEdMWD4gR0xDb250ZXh0R0xYOjpjcmVhdGVDb250ZXh0KFhJRCB3aW5kb3csIEdMQ29udGV4dCog
c2hhcmluZ0NvbnRleHQpCiB7Ci0gICAgaWYgKCFzaGFyZWREaXNwbGF5KCkpCisgICAgaWYgKCFz
aGFyZWRYMTFEaXNwbGF5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgc3RhdGlj
IGJvb2wgaW5pdGlhbGl6ZWQgPSBmYWxzZTsKQEAgLTI1MCwyMCArMTg4LDIwIEBAIEdMQ29udGV4
dEdMWDo6fkdMQ29udGV4dEdMWCgpCiAgICAgICAgIC8vIFRoaXMgbWF5IGJlIG5lY2Vzc2FyeSB0
byBwcmV2ZW50IGNyYXNoZXMgd2l0aCBOVmlkaWEncyBjbG9zZWQgc291cmNlIGRyaXZlcnMuIE9y
aWdpbmFsbHkKICAgICAgICAgLy8gZnJvbSBNb3ppbGxhJ3MgM0QgY2FudmFzIGltcGxlbWVudGF0
aW9uIGF0OiBodHRwOi8vYml0YnVja2V0Lm9yZy9pbG1hcmkvY2FudmFzM2QvCiAgICAgICAgIGds
QmluZEZyYW1lYnVmZmVyRVhUKEdMX0ZSQU1FQlVGRkVSX0VYVCwgMCk7Ci0gICAgICAgIGdsWE1h
a2VDdXJyZW50KHNoYXJlZERpc3BsYXkoKSwgTm9uZSwgTm9uZSk7Ci0gICAgICAgIGdsWERlc3Ry
b3lDb250ZXh0KHNoYXJlZERpc3BsYXkoKSwgbV9jb250ZXh0KTsKKyAgICAgICAgZ2xYTWFrZUN1
cnJlbnQoc2hhcmVkWDExRGlzcGxheSgpLCBOb25lLCBOb25lKTsKKyAgICAgICAgZ2xYRGVzdHJv
eUNvbnRleHQoc2hhcmVkWDExRGlzcGxheSgpLCBtX2NvbnRleHQpOwogICAgIH0KIAogICAgIGlm
IChtX3BidWZmZXIpIHsKLSAgICAgICAgZ2xYRGVzdHJveVBidWZmZXIoc2hhcmVkRGlzcGxheSgp
LCBtX3BidWZmZXIpOworICAgICAgICBnbFhEZXN0cm95UGJ1ZmZlcihzaGFyZWRYMTFEaXNwbGF5
KCksIG1fcGJ1ZmZlcik7CiAgICAgICAgIG1fcGJ1ZmZlciA9IDA7CiAgICAgfQogICAgIGlmICht
X2dseFBpeG1hcCkgewotICAgICAgICBnbFhEZXN0cm95R0xYUGl4bWFwKHNoYXJlZERpc3BsYXko
KSwgbV9nbHhQaXhtYXApOworICAgICAgICBnbFhEZXN0cm95R0xYUGl4bWFwKHNoYXJlZFgxMURp
c3BsYXkoKSwgbV9nbHhQaXhtYXApOwogICAgICAgICBtX2dseFBpeG1hcCA9IDA7CiAgICAgfQog
ICAgIGlmIChtX3BpeG1hcCkgewotICAgICAgICBYRnJlZVBpeG1hcChzaGFyZWREaXNwbGF5KCks
IG1fcGl4bWFwKTsKKyAgICAgICAgWEZyZWVQaXhtYXAoc2hhcmVkWDExRGlzcGxheSgpLCBtX3Bp
eG1hcCk7CiAgICAgICAgIG1fcGl4bWFwID0gMDsKICAgICB9CiAgICAgcmVtb3ZlQWN0aXZlQ29u
dGV4dCh0aGlzKTsKQEAgLTI4Miw3ICsyMjAsNyBAQCBJbnRTaXplIEdMQ29udGV4dEdMWDo6ZGVm
YXVsdEZyYW1lQnVmZmVyU2l6ZSgpCiAgICAgaW50IHgsIHk7CiAgICAgV2luZG93IHJvb3RXaW5k
b3c7CiAgICAgdW5zaWduZWQgaW50IHdpZHRoLCBoZWlnaHQsIGJvcmRlcldpZHRoLCBkZXB0aDsK
LSAgICBpZiAoIVhHZXRHZW9tZXRyeShzaGFyZWREaXNwbGF5KCksIG1fd2luZG93LCAmcm9vdFdp
bmRvdywgJngsICZ5LCAmd2lkdGgsICZoZWlnaHQsICZib3JkZXJXaWR0aCwgJmRlcHRoKSkKKyAg
ICBpZiAoIVhHZXRHZW9tZXRyeShzaGFyZWRYMTFEaXNwbGF5KCksIG1fd2luZG93LCAmcm9vdFdp
bmRvdywgJngsICZ5LCAmd2lkdGgsICZoZWlnaHQsICZib3JkZXJXaWR0aCwgJmRlcHRoKSkKICAg
ICAgICAgcmV0dXJuIEludFNpemUoKTsKIAogICAgIHJldHVybiBJbnRTaXplKHdpZHRoLCBoZWln
aHQpOwpAQCAtMjk3LDE4ICsyMzUsMjMgQEAgYm9vbCBHTENvbnRleHRHTFg6Om1ha2VDb250ZXh0
Q3VycmVudCgpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgaWYgKG1fd2luZG93KQotICAg
ICAgICByZXR1cm4gZ2xYTWFrZUN1cnJlbnQoc2hhcmVkRGlzcGxheSgpLCBtX3dpbmRvdywgbV9j
b250ZXh0KTsKKyAgICAgICAgcmV0dXJuIGdsWE1ha2VDdXJyZW50KHNoYXJlZFgxMURpc3BsYXko
KSwgbV93aW5kb3csIG1fY29udGV4dCk7CiAKICAgICBpZiAobV9wYnVmZmVyKQotICAgICAgICBy
ZXR1cm4gZ2xYTWFrZUN1cnJlbnQoc2hhcmVkRGlzcGxheSgpLCBtX3BidWZmZXIsIG1fY29udGV4
dCk7CisgICAgICAgIHJldHVybiBnbFhNYWtlQ3VycmVudChzaGFyZWRYMTFEaXNwbGF5KCksIG1f
cGJ1ZmZlciwgbV9jb250ZXh0KTsKIAotICAgIHJldHVybiA6OmdsWE1ha2VDdXJyZW50KHNoYXJl
ZERpc3BsYXkoKSwgbV9nbHhQaXhtYXAsIG1fY29udGV4dCk7CisgICAgcmV0dXJuIDo6Z2xYTWFr
ZUN1cnJlbnQoc2hhcmVkWDExRGlzcGxheSgpLCBtX2dseFBpeG1hcCwgbV9jb250ZXh0KTsKIH0K
IAogdm9pZCBHTENvbnRleHRHTFg6OnN3YXBCdWZmZXJzKCkKIHsKICAgICBpZiAobV93aW5kb3cp
Ci0gICAgICAgIGdsWFN3YXBCdWZmZXJzKHNoYXJlZERpc3BsYXkoKSwgbV93aW5kb3cpOworICAg
ICAgICBnbFhTd2FwQnVmZmVycyhzaGFyZWRYMTFEaXNwbGF5KCksIG1fd2luZG93KTsKK30KKwor
dm9pZCBHTENvbnRleHRHTFg6OndhaXROYXRpdmUoKQoreworICAgIGdsWFdhaXRYKCk7CiB9CiAK
ICNpZiBVU0UoM0RfR1JBUEhJQ1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nbHgvR0xDb250ZXh0R0xYLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nbHgvR0xDb250ZXh0R0xYLmgKaW5kZXggYjNiMThjMTU2Y2MzMWNkYzZiMTMyZGEw
N2UxMmZlMmU3MzI4ZGU2Yi4uMDBmNTZlNzkxYTZhNmU2ZGExYWEzZWY3NzljMWExY2FjNDExYmFm
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dMQ29u
dGV4dEdMWC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dseC9HTENv
bnRleHRHTFguaApAQCAtMjUsNyArMjUsNiBAQAogI2luY2x1ZGUgIkdMQ29udGV4dC5oIgogCiB0
eXBlZGVmIHN0cnVjdCBfX0dMWGNvbnRleHRSZWMqIEdMWENvbnRleHQ7Ci10eXBlZGVmIHN0cnVj
dCBfWERpc3BsYXkgRGlzcGxheTsKIHR5cGVkZWYgc3RydWN0IF9fR0xYY29udGV4dFJlYyAqR0xY
Q29udGV4dDsKIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBHTFhQYnVmZmVyOwogdHlwZWRlZiB1bnNp
Z25lZCBsb25nIEdMWFBpeG1hcDsKQEAgLTQ1LDExICs0NCwxMCBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB+R0xDb250ZXh0R0xYKCk7CiAgICAgdmlydHVhbCBib29sIG1ha2VDb250ZXh0Q3VycmVu
dCgpOwogICAgIHZpcnR1YWwgdm9pZCBzd2FwQnVmZmVycygpOworICAgIHZpcnR1YWwgdm9pZCB3
YWl0TmF0aXZlKCk7CiAgICAgdmlydHVhbCBib29sIGNhblJlbmRlclRvRGVmYXVsdEZyYW1lYnVm
ZmVyKCk7CiAgICAgdmlydHVhbCBJbnRTaXplIGRlZmF1bHRGcmFtZUJ1ZmZlclNpemUoKTsKIAot
ICAgIHN0YXRpYyBEaXNwbGF5KiBzaGFyZWREaXNwbGF5KCk7Ci0KICNpZiBVU0UoM0RfR1JBUEhJ
Q1MpCiAgICAgdmlydHVhbCBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEIHBsYXRmb3JtQ29udGV4
dCgpOwogI2VuZGlmCkBAIC01NywxMCArNTUsNiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHN0
YXRpYyBQYXNzT3duUHRyPEdMQ29udGV4dEdMWD4gY3JlYXRlUGJ1ZmZlckNvbnRleHQoR0xYQ29u
dGV4dCBzaGFyaW5nQ29udGV4dCk7CiAgICAgc3RhdGljIFBhc3NPd25QdHI8R0xDb250ZXh0R0xY
PiBjcmVhdGVQaXhtYXBDb250ZXh0KEdMWENvbnRleHQgc2hhcmluZ0NvbnRleHQpOwotICAgIHN0
YXRpYyB2b2lkIHJlbW92ZUFjdGl2ZUNvbnRleHQoR0xDb250ZXh0Kik7Ci0KLSAgICBzdGF0aWMg
dm9pZCBhZGRBY3RpdmVDb250ZXh0KEdMQ29udGV4dEdMWCopOwotICAgIHN0YXRpYyB2b2lkIGNs
ZWFudXBBY3RpdmVDb250ZXh0c0F0RXhpdCgpOwogCiAgICAgR0xDb250ZXh0R0xYKEdMWENvbnRl
eHQpOwogICAgIEdMQ29udGV4dEdMWChHTFhDb250ZXh0LCBQaXhtYXAsIEdMWFBpeG1hcCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3ND
b250ZXh0M0RNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3Jh
cGhpY3NDb250ZXh0M0RNYWMubW0KaW5kZXggNjhmNGYyNDM3NjJjZjEwNjc2Mzk4MTVjY2YxMWU4
NjVkMTY0YzFlNi4uODI1Mzg3NzljNTIwMDE0MjQyNmY1MGQ0ODlkZGFkZDVjNjlmZTM5MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29u
dGV4dDNETWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9H
cmFwaGljc0NvbnRleHQzRE1hYy5tbQpAQCAtMjc3LDEyICsyNzcsNiBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjpzZXRFcnJvck1lc3NhZ2VDYWxsYmFjayhQYXNzT3duUHRyPEVycm9yTWVzc2Fn
ZUNhbGxiYWNrPgogewogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpyZWxlYXNlU2hhZGVy
Q29tcGlsZXIoKQotewotICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIG5vdEltcGxlbWVu
dGVkKCk7Ci19Ci0KIH0KIAogI2VuZGlmIC8vIFVTRSgzRF9HUkFQSElDUykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQz
RE9wZW5HTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwCmluZGV4IDk4ZTExNDViM2RiMjRlNTFkN2I3NWZkMDY3
MDhmZmFlMjU2YWViMTMuLmY3NGE3NjU5ODgxYzQ4OTljMTRhN2UyOGJkZGNhNjgzYTU3ZGM3ZDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHQzRE9wZW5HTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcApAQCAtNDksNiArNDksMTIg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpyZWxl
YXNlU2hhZGVyQ29tcGlsZXIoKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG5v
dEltcGxlbWVudGVkKCk7Cit9CisKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnJlYWRQaXhlbHNB
bmRDb252ZXJ0VG9CR1JBSWZOZWNlc3NhcnkoaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBo
ZWlnaHQsIHVuc2lnbmVkIGNoYXIqIHBpeGVscykKIHsKICAgICA6OmdsUmVhZFBpeGVscyh4LCB5
LCB3aWR0aCwgaGVpZ2h0LCBHTF9CR1JBLCBHTF9VTlNJR05FRF9JTlRfOF84XzhfOF9SRVYsIHBp
eGVscyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xFUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xFUy5jcHAKaW5kZXggNGQx
NTMwYzRiZWM5MjMwOGI3NjBmYzdhNzk0ZDcxOGM2NjBlMWNjZC4uNDEzN2U2YWQwNGExZWQyYzJh
YzVlZTg4NjY2NWI1NTIwNGUxYmE0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMRVMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9w
ZW5HTEVTLmNwcApAQCAtMzksNyArMzksNiBAQAogI2luY2x1ZGUgIkxheWVyV2ViS2l0VGhyZWFk
LmgiCiAjZW5kaWYKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgotI2luY2x1ZGUgIk9wZW5H
TEVTU2hpbXMuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC02NiwxNCArNjUsMTQgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cmVhZFBpeGVscyhHQzNEaW50IHgsIEdDM0RpbnQgeSwg
R0MzRHNpemVpIHdpZHRoLCBHQzNEc2kKICNlbHNlCiAgICAgaWYgKG1fYXR0cnMuYW50aWFsaWFz
ICYmIG1fYm91bmRGQk8gPT0gbV9tdWx0aXNhbXBsZUZCTykgewogICAgICAgICAgcmVzb2x2ZU11
bHRpc2FtcGxpbmdJZk5lY2Vzc2FyeShJbnRSZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQpKTsKLSAg
ICAgICAgOjpnbEJpbmRGcmFtZWJ1ZmZlckVYVChHTF9GUkFNRUJVRkZFUl9FWFQsIG1fZmJvKTsK
KyAgICAgICAgOjpnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbV9mYm8pOwogICAg
ICAgICA6OmdsRmx1c2goKTsKICAgICB9CiAKICAgICA6OmdsUmVhZFBpeGVscyh4LCB5LCB3aWR0
aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGRhdGEpOwogCiAgICAgaWYgKG1fYXR0cnMuYW50aWFs
aWFzICYmIG1fYm91bmRGQk8gPT0gbV9tdWx0aXNhbXBsZUZCTykKLSAgICAgICAgOjpnbEJpbmRG
cmFtZWJ1ZmZlckVYVChHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fbXVsdGlzYW1w
bGVGQk8pOworICAgICAgICA6OmdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtX211
bHRpc2FtcGxlRkJPKTsKICNlbmRpZgogfQogCkBAIC0xMjIsMTIgKzEyMSwxMiBAQCBib29sIEdy
YXBoaWNzQ29udGV4dDNEOjpyZXNoYXBlRkJPcyhjb25zdCBJbnRTaXplJiBzaXplKQogICAgIGJv
b2wgbXVzdFJlc3RvcmVGQk8gPSBmYWxzZTsKICAgICBpZiAobV9ib3VuZEZCTyAhPSBtX2Zibykg
ewogICAgICAgICBtdXN0UmVzdG9yZUZCTyA9IHRydWU7Ci0gICAgICAgIDo6Z2xCaW5kRnJhbWVi
dWZmZXJFWFQoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2Zibyk7CisgICAgICAg
IDo6Z2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1fZmJvKTsKICAgICB9CiAKICAg
ICA6OmdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbV90ZXh0dXJlKTsKICAgICA6OmdsVGV4
SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBtX2ludGVybmFsQ29sb3JGb3JtYXQsIHdpZHRoLCBo
ZWlnaHQsIDAsIGNvbG9yRm9ybWF0LCBwaXhlbERhdGFUeXBlLCAwKTsKLSAgICA6OmdsRnJhbWVi
dWZmZXJUZXh0dXJlMkRFWFQoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBHcmFwaGlj
c0NvbnRleHQzRDo6Q09MT1JfQVRUQUNITUVOVDAsIEdMX1RFWFRVUkVfMkQsIG1fdGV4dHVyZSwg
MCk7CisgICAgOjpnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xP
Ul9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV8yRCwgbV90ZXh0dXJlLCAwKTsKIAogICAgIDo6Z2xC
aW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtX2NvbXBvc2l0b3JUZXh0dXJlKTsKICAgICA6Omds
VGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBtX2ludGVybmFsQ29sb3JGb3JtYXQsIHdpZHRo
LCBoZWlnaHQsIDAsIGNvbG9yRm9ybWF0LCBHTF9VTlNJR05FRF9CWVRFLCAwKTsKQEAgLTEzOSwy
OCArMTM4LDI4IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OnJlc2hhcGVGQk9zKGNvbnN0IElu
dFNpemUmIHNpemUpCiAgICAgaWYgKG1fYXR0cnMuc3RlbmNpbCB8fCBtX2F0dHJzLmRlcHRoKSB7
CiAgICAgICAgIC8vIFVzZSBhIDI0IGJpdCBkZXB0aCBidWZmZXIgd2hlcmUgd2Uga25vdyB3ZSBo
YXZlIGl0LgogICAgICAgICBpZiAoc3VwcG9ydFBhY2tlZERlcHRoU3RlbmNpbEJ1ZmZlcikgewot
ICAgICAgICAgICAgOjpnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1fZGVwdGhTdGVuY2ls
QnVmZmVyKTsKLSAgICAgICAgICAgIDo6Z2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdy
YXBoaWNzQ29udGV4dDNEOjpERVBUSF9TVEVOQ0lMLCB3aWR0aCwgaGVpZ2h0LCAwLCBHcmFwaGlj
c0NvbnRleHQzRDo6REVQVEhfU1RFTkNJTCwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0lO
VF8yNF84LCAwKTsKKyAgICAgICAgICAgIDo6Z2xCaW5kUmVuZGVyYnVmZmVyKEdMX1JFTkRFUkJV
RkZFUiwgbV9kZXB0aFN0ZW5jaWxCdWZmZXIpOworICAgICAgICAgICAgOjpnbFJlbmRlcmJ1ZmZl
clN0b3JhZ2UoR0xfUkVOREVSQlVGRkVSLCBHTF9ERVBUSDI0X1NURU5DSUw4X09FUywgd2lkdGgs
IGhlaWdodCk7CiAgICAgICAgICAgICBpZiAobV9hdHRycy5zdGVuY2lsKQotICAgICAgICAgICAg
ICAgIDo6Z2xGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfU1RFTkNJTF9B
VFRBQ0hNRU5ULCBHTF9URVhUVVJFXzJELCBtX2RlcHRoU3RlbmNpbEJ1ZmZlciwgMCk7CisgICAg
ICAgICAgICAgICAgOjpnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBH
TF9TVEVOQ0lMX0FUVEFDSE1FTlQsIEdMX1JFTkRFUkJVRkZFUiwgbV9kZXB0aFN0ZW5jaWxCdWZm
ZXIpOwogICAgICAgICAgICAgaWYgKG1fYXR0cnMuZGVwdGgpCi0gICAgICAgICAgICAgICAgOjpn
bEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9ERVBUSF9BVFRBQ0hNRU5U
LCBHTF9URVhUVVJFXzJELCBtX2RlcHRoU3RlbmNpbEJ1ZmZlciwgMCk7Ci0gICAgICAgICAgICA6
OmdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgMCk7CisgICAgICAgICAgICAgICAgOjpnbEZy
YW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBHTF9ERVBUSF9BVFRBQ0hNRU5U
LCBHTF9SRU5ERVJCVUZGRVIsIG1fZGVwdGhTdGVuY2lsQnVmZmVyKTsKKyAgICAgICAgICAgIDo6
Z2xCaW5kUmVuZGVyYnVmZmVyKEdMX1JFTkRFUkJVRkZFUiwgMCk7CiAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICBpZiAobV9hdHRycy5zdGVuY2lsKSB7Ci0gICAgICAgICAgICAgICAgOjpn
bEJpbmRSZW5kZXJidWZmZXJFWFQoR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUiwgbV9z
dGVuY2lsQnVmZmVyKTsKLSAgICAgICAgICAgICAgICA6OmdsUmVuZGVyYnVmZmVyU3RvcmFnZUVY
VChHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSLCBHTF9TVEVOQ0lMX0lOREVYOCwgd2lk
dGgsIGhlaWdodCk7Ci0gICAgICAgICAgICAgICAgOjpnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVy
RVhUKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OlNU
RU5DSUxfQVRUQUNITUVOVCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUiwgbV9zdGVu
Y2lsQnVmZmVyKTsKKyAgICAgICAgICAgICAgICA6OmdsQmluZFJlbmRlcmJ1ZmZlcihHTF9SRU5E
RVJCVUZGRVIsIG1fc3RlbmNpbEJ1ZmZlcik7CisgICAgICAgICAgICAgICAgOjpnbFJlbmRlcmJ1
ZmZlclN0b3JhZ2UoR0xfUkVOREVSQlVGRkVSLCBHTF9TVEVOQ0lMX0lOREVYOCwgd2lkdGgsIGhl
aWdodCk7CisgICAgICAgICAgICAgICAgOjpnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdMX0ZS
QU1FQlVGRkVSLCBHTF9TVEVOQ0lMX0FUVEFDSE1FTlQsIEdMX1JFTkRFUkJVRkZFUiwgbV9zdGVu
Y2lsQnVmZmVyKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChtX2F0dHJzLmRlcHRo
KSB7Ci0gICAgICAgICAgICAgICAgOjpnbEJpbmRSZW5kZXJidWZmZXJFWFQoR3JhcGhpY3NDb250
ZXh0M0Q6OlJFTkRFUkJVRkZFUiwgbV9kZXB0aEJ1ZmZlcik7Ci0gICAgICAgICAgICAgICAgOjpn
bFJlbmRlcmJ1ZmZlclN0b3JhZ2VFWFQoR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUiwg
R0xfREVQVEhfQ09NUE9ORU5UMTYsIHdpZHRoLCBoZWlnaHQpOwotICAgICAgICAgICAgICAgIDo6
Z2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlckVYVChHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZG
RVIsIEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9BVFRBQ0hNRU5ULCBHcmFwaGljc0NvbnRleHQz
RDo6UkVOREVSQlVGRkVSLCBtX2RlcHRoQnVmZmVyKTsKKyAgICAgICAgICAgICAgICA6OmdsQmlu
ZFJlbmRlcmJ1ZmZlcihHTF9SRU5ERVJCVUZGRVIsIG1fZGVwdGhCdWZmZXIpOworICAgICAgICAg
ICAgICAgIDo6Z2xSZW5kZXJidWZmZXJTdG9yYWdlKEdMX1JFTkRFUkJVRkZFUiwgR0xfREVQVEhf
Q09NUE9ORU5UMTYsIHdpZHRoLCBoZWlnaHQpOworICAgICAgICAgICAgICAgIDo6Z2xGcmFtZWJ1
ZmZlclJlbmRlcmJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgR0xfREVQVEhfQVRUQUNITUVOVCwgR0xf
UkVOREVSQlVGRkVSLCBtX2RlcHRoQnVmZmVyKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IDo6Z2xCaW5kUmVuZGVyYnVmZmVyRVhUKEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIs
IDApOworICAgICAgICAgICAgOjpnbEJpbmRSZW5kZXJidWZmZXIoR0xfUkVOREVSQlVGRkVSLCAw
KTsKICAgICAgICAgfQogICAgIH0KLSAgICBpZiAoZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzRVhU
KEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUikgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OkZS
QU1FQlVGRkVSX0NPTVBMRVRFKSB7CisgICAgaWYgKGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhH
TF9GUkFNRUJVRkZFUikgIT0gR0xfRlJBTUVCVUZGRVJfQ09NUExFVEUpIHsKICAgICAgICAgLy8g
RklYTUU6IGNsZWFudXAKICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICB9CkBAIC0xNzgs
NyArMTc3LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cmVzb2x2ZU11bHRpc2FtcGxpbmdJ
Zk5lY2Vzc2FyeShjb25zdCBJbnRSZWN0JiByZWN0KQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
cmVuZGVyYnVmZmVyU3RvcmFnZShHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIGludGVybmFsZm9y
bWF0LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQpCiB7CiAgICAgbWFrZUNvbnRl
eHRDdXJyZW50KCk7Ci0gICAgOjpnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VFWFQodGFyZ2V0LCBpbnRl
cm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7CisgICAgOjpnbFJlbmRlcmJ1ZmZlclN0b3JhZ2Uo
dGFyZ2V0LCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7CiB9CiAKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OmdldEludGVnZXJ2KEdDM0RlbnVtIHBuYW1lLCBHQzNEaW50KiB2YWx1ZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNz
Q29udGV4dDNEUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3Jh
cGhpY3NDb250ZXh0M0RRdC5jcHAKaW5kZXggMTY3OGM0OWZhYmJlYjI4ZTZmOGE1ZGJkMmRjMzJl
Njg1ZWI2OGQzNy4uY2JkNTE5MjA5ODI2NzYzNzM3NjVlNTk5N2NmZGJlMmRhZTQyNDA1YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250
ZXh0M0RRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3Jh
cGhpY3NDb250ZXh0M0RRdC5jcHAKQEAgLTEwMCwxMyArMTAwLDYgQEAgYm9vbCBHcmFwaGljc0Nv
bnRleHQzRDo6aXNHTEVTMkNvbXBsaWFudCgpIGNvbnN0CiAjZW5kaWYKIH0KIAotI2lmICFVU0Uo
T1BFTkdMX0VTXzIpCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpyZWxlYXNlU2hhZGVyQ29tcGls
ZXIoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0jZW5kaWYKLQogR3JhcGhpY3NDb250
ZXh0M0RQcml2YXRlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGUoR3JhcGhpY3NDb250ZXh0M0Qq
IGNvbnRleHQsIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3csIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5k
ZXJTdHlsZSByZW5kZXJTdHlsZSkKICAgICA6IG1fY29udGV4dChjb250ZXh0KQogICAgICwgbV9o
b3N0V2luZG93KGhvc3RXaW5kb3cpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuaAppbmRleCBiNDUwNDY4MmJjMzhkMjEw
OGRmM2NiMjJkYmIzODRiNmI5NGI2NzZjLi5kMmVjODczNDI1MTE5YmIwZWZlOWFkOGIxODRlYmNj
YzcyMDUyMWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmgKQEAgLTI4LDYgKzI4LDkgQEAKICAgICAjZGVmaW5l
IFRFWE1BUF9PUEVOR0xfRVNfMgogI2VuZGlmCiAjZW5kaWYKKyNpZiBQTEFURk9STShHVEspICYm
IFVTRShPUEVOR0xfRVNfMikKKyNkZWZpbmUgVEVYTUFQX09QRU5HTF9FU18yCisjZW5kaWYKIAog
I2luY2x1ZGUgIkZpbHRlck9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQu
aCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZWRpcmVjdGVkWENv
bXBvc2l0ZVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVkaXJlY3Rl
ZFhDb21wb3NpdGVXaW5kb3cuY3BwCmluZGV4IDBkN2JkYmE0MzYwM2UzNzkxNTY5MGM2ZTFmOWI0
ODhkMzA0Y2YzZmMuLmIzM2JlMjA4NzhiODJkZmJhYWNjNmE3NzJmOTkyZGYzODk5YWM3MDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZWRpcmVjdGVkWENvbXBvc2l0
ZVdpbmRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlZGlyZWN0ZWRY
Q29tcG9zaXRlV2luZG93LmNwcApAQCAtMjcsOSArMjcsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIlJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93LmgiCiAKLSNpZiBVU0UoR0xY
KQotI2luY2x1ZGUgIkdMQ29udGV4dEdMWC5oIgotI2luY2x1ZGUgPEdML2dseC5oPgorI2lmIFBM
QVRGT1JNKFgxMSkKICNpbmNsdWRlIDxYMTEvZXh0ZW5zaW9ucy9YY29tcG9zaXRlLmg+CiAjaW5j
bHVkZSA8Y2Fpcm8teGxpYi5oPgogI2luY2x1ZGUgPGdkay9nZGt4Lmg+CkBAIC01Miw3ICs1MCw3
IEBAIFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93OjpSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRv
dyhjb25zdCBJbnRTaXplJiBzaXplKQogICAgICwgbV9wZW5kaW5nUmVzaXplU291cmNlSWQoMCkK
ICAgICAsIG1fbmVlZHNOZXdQaXhtYXBBZnRlclJlc2l6ZShmYWxzZSkKIHsKLSAgICBEaXNwbGF5
KiBkaXNwbGF5ID0gR0xDb250ZXh0R0xYOjpzaGFyZWREaXNwbGF5KCk7CisgICAgRGlzcGxheSog
ZGlzcGxheSA9IEdMQ29udGV4dDo6c2hhcmVkWDExRGlzcGxheSgpOwogCiAgICAgLy8gVGhpcyBp
cyBiYXNlZCBvbiBjb2RlIGZyb20gQ2hyb21pdW06IHNyYy9jb250ZW50L2NvbW1vbi9ncHUvaW1h
Z2VfdHJhbnNwb3J0X3N1cmZhY2VfbGludXguY2MKICAgICBYU2V0V2luZG93QXR0cmlidXRlcyB3
aW5kb3dBdHRyaWJ1dGVzOwpAQCAtOTYsNyArOTQsNyBAQCBSZWRpcmVjdGVkWENvbXBvc2l0ZVdp
bmRvdzo6UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3coY29uc3QgSW50U2l6ZSYgc2l6ZSkKIAog
UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6On5SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdygp
CiB7Ci0gICAgRGlzcGxheSogZGlzcGxheSA9IEdMQ29udGV4dEdMWDo6c2hhcmVkRGlzcGxheSgp
OworICAgIERpc3BsYXkqIGRpc3BsYXkgPSBHTENvbnRleHQ6OnNoYXJlZFgxMURpc3BsYXkoKTsK
ICAgICBpZiAobV93aW5kb3cpCiAgICAgICAgIFhEZXN0cm95V2luZG93KGRpc3BsYXksIG1fd2lu
ZG93KTsKICAgICBpZiAobV9wYXJlbnRXaW5kb3cpCkBAIC0xMzUsMTEgKzEzMywxMSBAQCB2b2lk
IFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93OjpyZXNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkK
ICAgICAgICAgbV9wZW5kaW5nUmVzaXplU291cmNlSWQgPSBnX3RpbWVvdXRfYWRkKDAsIHJlaW50
ZXJwcmV0X2Nhc3Q8R1NvdXJjZUZ1bmM+KHJlc2l6ZUxhdGVyQ2FsbGJhY2spLCB0aGlzKTsKICAg
ICB9CiAKLSAgICBEaXNwbGF5KiBkaXNwbGF5ID0gR0xDb250ZXh0R0xYOjpzaGFyZWREaXNwbGF5
KCk7CisgICAgRGlzcGxheSogZGlzcGxheSA9IEdMQ29udGV4dDo6c2hhcmVkWDExRGlzcGxheSgp
OwogICAgIFhSZXNpemVXaW5kb3coZGlzcGxheSwgbV93aW5kb3csIHNpemUud2lkdGgoKSwgc2l6
ZS5oZWlnaHQoKSk7CiAKICAgICBYRmx1c2goZGlzcGxheSk7Ci0gICAgZ2xYV2FpdFgoKTsKKyAg
ICBjb250ZXh0KCktPndhaXROYXRpdmUoKTsKIAogICAgIC8vIFRoaXMgc3dhcCBpcyBiYXNlZCBv
biBjb2RlIGluIENocm9taXVtLiBJdCB0cmllcyB0byB3b3JrLWFyb3VuZCBhIGJ1ZyBpbiB0aGUg
SW50ZWwgZHJpdmVycwogICAgIC8vIHdoZXJlIGEgc3dhcCBpcyBuZWNlc3NhcnkgdG8gZW5zdXJl
IHRoZSBmcm9udCBhbmQgYmFjayBidWZmZXJzIGFyZSBwcm9wZXJseSByZXNpemVkLgpAQCAtMjE4
LDQgKzIxNiw0IEBAIGNhaXJvX3N1cmZhY2VfdCogUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6
OmNhaXJvU3VyZmFjZUZvcldpZGdldChHdGtXaWRnZXQqIHdpCiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAotI2VuZGlmIC8vIFVTRShHTFgpCisjZW5kaWYgLy8gUExBVEZPUk0oWDExKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlZGlyZWN0ZWRYQ29tcG9zaXRl
V2luZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVkaXJlY3RlZFhDb21wb3Np
dGVXaW5kb3cuaAppbmRleCBlNWRiMGZhN2U4YWQ5YTgyNWUxYjY5ZjllNjJhZTM3MDdlMjllZmE5
Li4yYWRiNjk0NWFlNjMwMTZmMTQ0NzExZDQyYmE3NGYwNGIzNTc3OTExIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5k
b3cuaApAQCAtMjcsOSArMjcsOSBAQAogI2lmbmRlZiAgUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5k
b3dfaAogI2RlZmluZSAgUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3dfaAogCi0jaWYgVVNFKEdM
WCkKKyNpZiBQTEFURk9STShYMTEpCiAKLSNpbmNsdWRlICJHTENvbnRleHRHTFguaCIKKyNpbmNs
dWRlICJHTENvbnRleHQuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSAiUmVmUHRy
Q2Fpcm8uaCIKIApAQCAtNzEsNiArNzEsNiBAQCBwcml2YXRlOgogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKLSNlbmRpZiAvLyBVU0UoR0xYKQorI2VuZGlmIC8vIFBMQVRGT1JNKFgxMSkKIAog
I2VuZGlmIC8vIFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93X2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xheWVyVHJlZUhvc3RHdGsuY3Bw
CmluZGV4IDA5OGE0YzcxNjM4YzllNzUzYTQ3MTVjYWEyNTAyODg5ZTE1MmUxZTMuLjE4ZWU5Nzg1
OTFhYzgxMTg4MzBjNGFkNzdlNDNkODZkOTY0NWUxMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0R3RrLmNwcApA
QCAtMzYsNyArMzYsNyBAQAogI2luY2x1ZGUgPEdML2dsLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9G
cmFtZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVWaWV3Lmg+Ci0jaW5jbHVkZSA8V2ViQ29y
ZS9HTENvbnRleHRHTFguaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0dMQ29udGV4dC5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvUGFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4KIApkaWZm
IC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDk4M2ZkOGVkYTQzOTIxYjE0NDNk
MGJiYjIyMDA4OTRmNGFjZGU4MjkuLmUwZDlmOTQ1ODRjOTA4YmI3ZjE1Y2M1ODhjNGQ5MjM5ZGMy
MDY3MDUgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
MSBAQAorMjAxMi0wOS0yNSAgSm9zw6kgRGFwZW5hIFBheiAgPGpkYXBlbmFAaWdhbGlhLmNvbT4K
KworICAgICAgICBbR1RLXSBBZGQgc3VwcG9ydCBmb3IgY3JlYXRpbmcgRUdMIGNvbnRleHRzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzkyMQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2gg
YWRkcyBzdXBwb3J0IGZvciBFR0wsIHVzaW5nIE9wZW5HTCBhbmQgT3BlbkdMIEVTIDIuIEJvdGgK
KyAgICAgICAgb3B0aW9ucyBhcmUgc2V0IHVwIG9uIGNvbXBpbGUgdGltZSwgd2l0aCB0aGUgY29u
ZmlndXJlIG9wdGlvbnMKKyAgICAgICAgLS1lbmFibGUtZWdsIGFuZCAtLWVuYWJsZS1nbGVzMi4K
KworICAgICAgICBUaGUgaW1wbGVtZW50YXRpb24gb25seSBhZGRzIHN1cHBvcnQgZm9yIEVHTCBv
biB0b3Agb2YgWDExLCB0bworICAgICAgICBpc29sYXRlIHRoZSBjaGFuZ2VzIHRvIHRoZSBtaW5p
bXVtLiBNb3JlIGNoYW5nZXMgc2hvdWxkIGNvbWUKKyAgICAgICAgbGF0ZXIgdG8gZW5hYmxlIEVH
TCBmb3Igb3RoZXIgdGFyZ2V0cyAoYXMgV2F5bGFuZCkuCisKKyAgICAgICAgKiBHTlVtYWtlZmls
ZS5hbToKKyAgICAgICAgKiBjb25maWd1cmUuYWM6IG5ldyBjb25maWd1cmUgb3B0aW9ucyAtLWVu
YWJsZS1lZ2wgYW5kLS1lbmFibGUtZ2xlczIuCisKIDIwMTItMDktMjUgIExhc3psbyBHb21ib3Mg
IDxsLmdvbWJvc0BzYW1zdW5nLmNvbT4KIAogICAgICAgICBbRUZMXSBVcGRhdGUgbWluaW1hbCBy
ZXF1aXJlZCB2ZXJzaW9ucyBmb3IgZGVwZW5kZW5jaWVzCmRpZmYgLS1naXQgYS9HTlVtYWtlZmls
ZS5hbSBiL0dOVW1ha2VmaWxlLmFtCmluZGV4IDJiZTNlZGYxODRlYzM2NmMzYzc1MjVkNDcwNDM1
MjQ1NWRjMDIzNDguLjZmZTY2N2U0YzQ4MDIyNGQxNjE0Y2I0NWE4YmVhN2U3ZDk0ZWE2NjUgMTAw
NjQ0Ci0tLSBhL0dOVW1ha2VmaWxlLmFtCisrKyBiL0dOVW1ha2VmaWxlLmFtCkBAIC0yMzcsNiAr
MjM3LDE2IEBAIGdsb2JhbF9jcHBmbGFncyArPSBcCiAJLURXVEZfVVNFX0dMWD0xCiBlbmRpZgog
CitpZiBVU0VfRUdMCitnbG9iYWxfY3BwZmxhZ3MgKz0gXAorCS1EV1RGX1VTRV9FR0w9MQorZW5k
aWYKKworaWYgVVNFX0dMRVMyCitnbG9iYWxfY3BwZmxhZ3MgKz0gXAorCS1EV1RGX1VTRV9PUEVO
R0xfRVNfMj0xCitlbmRpZgorCiBpZiBVU0VfT1BFTkdMCiBnbG9iYWxfY3BwZmxhZ3MgKz0gXAog
CS1EV1RGX1VTRV9PUEVOR0w9MQpkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJl
LmFjCmluZGV4IGYwMTk2ZTkyYmZiODMzOTdjY2E5OTY3YjZkNzMwN2FjOGRhNDYxZmYuLmEyNjYy
YWM3ZjEzMDdhNDNmNTc5NDRjYzUyMTY5YzQyZWJkNzczYTYgMTAwNjQ0Ci0tLSBhL2NvbmZpZ3Vy
ZS5hYworKysgYi9jb25maWd1cmUuYWMKQEAgLTU0NywxMSArNTQ3LDg0IEBAIEFDX0FSR19FTkFC
TEUodW5zdGFibGVfZmVhdHVyZXMsCiAgICAgICAgICAgICAgIFtdLFtlbmFibGVfdW5zdGFibGVf
ZmVhdHVyZXM9Im5vIl0pCiBBQ19NU0dfUkVTVUxUKFskZW5hYmxlX3Vuc3RhYmxlX2ZlYXR1cmVz
XSkKIAotZm91bmRfb3BlbmdsPSJubyIKLWlmIHRlc3QgIiR3aXRoX3RhcmdldCIgPSAieDExIjsg
dGhlbgorZm91bmRfb3BlbmdsPW5vCitBQ19BUkdfRU5BQkxFKGdseCwKKyAgICAgICAgICAgICAg
QUNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLWdseF0sIFtlbmFibGUgc3VwcG9ydCBmb3IgR0xYIFtk
ZWZhdWx0PWF1dG9dXSksCisgICAgICAgICAgICAgIFtdLCBbZW5hYmxlX2dseD0iYXV0byJdKQor
QUNfQVJHX0VOQUJMRShlZ2wsCisgICAgICAgICAgICAgIEFDX0hFTFBfU1RSSU5HKFstLWVuYWJs
ZS1lZ2xdLCBbZW5hYmxlIHN1cHBvcnQgZm9yIEVHTCBbZGVmYXVsdD1hdXRvXV0pLAorICAgICAg
ICAgICAgICBbXSwgW2VuYWJsZV9lZ2w9ImF1dG8iXSkKK0FDX0FSR19FTkFCTEUoZ2xlczIsCisg
ICAgICAgICAgICAgIEFDX0hFTFBfU1RSSU5HKFstLWVuYWJsZS1nbGVzMl0sIFtlbmFibGUgc3Vw
cG9ydCBmb3IgT3BlbkdMIEVTIDIgW2RlZmF1bHQ9YXV0b11dKSwKKyAgICAgICAgICAgICAgW10s
IFtlbmFibGVfZ2xlczI9ImF1dG8iXSkKKworaGF2ZV9nbHg9bm8KK0FDX0NIRUNLX0hFQURFUlMo
W0dML2dseC5oXSwgW2hhdmVfZ2x4PSJ5ZXMiXSwgW2hhdmVfZ2x4PSJubyJdKQorQUNfTVNHX0NI
RUNLSU5HKFt3aGV0aGVyIHRvIGVuYWJsZSBHTFggc3VwcG9ydF0pCitpZiB0ZXN0ICIkZW5hYmxl
X2dseCIgIT0gIm5vIjsgdGhlbgorICAgaWYgdGVzdCAiJGhhdmVfZ2x4IiA9ICJubyI7IHRoZW4K
KyAgICAgIGlmIHRlc3QgIiRlbmFibGVfZ2x4IiA9ICJ5ZXMiOyB0aGVuCisgICAgICAgICBBQ19N
U0dfRVJST1IoWy0tZW5hYmxlLWdseCBzcGVjaWZpZWQsIGJ1dCBub3QgYXZhaWxhYmxlXSkKKyAg
ICAgIGVsc2UKKyAgICAgICAgIGVuYWJsZV9nbHg9bm8KKyAgICAgIGZpCisgICBlbGlmIHRlc3Qg
IiRlbmFibGVfZ2xlczIiICE9ICJ5ZXMiOyB0aGVuCisgICAgICBlbmFibGVfZ2x4PXllcworICAg
ZmkKK2ZpCitBQ19NU0dfUkVTVUxUKFskZW5hYmxlX2dseF0pCisKK2hhdmVfZWdsPW5vCitBQ19D
SEVDS19IRUFERVJTKFtFR0wvZWdsLmhdLCBbaGF2ZV9lZ2w9InllcyJdLCBbaGF2ZV9lZ2w9Im5v
Il0pCitBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgdG8gZW5hYmxlIEVHTCBzdXBwb3J0XSkKK2lm
IHRlc3QgIiRlbmFibGVfZWdsIiAhPSAibm8iOyB0aGVuCisgICBpZiB0ZXN0ICIkaGF2ZV9lZ2wi
ID0gIm5vIjsgdGhlbgorICAgICAgaWYgdGVzdCAiJGVuYWJsZV9lZ2wiID0gInllcyI7IHRoZW4K
KyAgICAgICAgIEFDX01TR19FUlJPUihbLS1lbmFibGUtZWdsIHNwZWNpZmllZCwgYnV0IG5vdCBh
dmFpbGFibGVdKQorICAgICAgZWxzZQorICAgICAgICAgZW5hYmxlX2VnbD1ubworICAgICAgZmkK
KyAgIGVsc2UKKyAgICAgIGVuYWJsZV9lZ2w9eWVzCisgICBmaQorZmkKK0FDX01TR19SRVNVTFQo
WyRlbmFibGVfZWdsXSkKKworaGF2ZV9nbGVzMj1ubworQUNfQ0hFQ0tfSEVBREVSUyhbR0xFUzIv
Z2wyLmhdLCBbaGF2ZV9nbGVzMj0ieWVzIl0sIFtoYXZlX2dsZXMyPSJubyJdKQorQUNfTVNHX0NI
RUNLSU5HKFt3aGV0aGVyIHRvIHVzZSBPcGVuR0wgRVMgMiBzdXBwb3J0XSkKK2lmIHRlc3QgIiRl
bmFibGVfZ2x4IiA9ICJ5ZXMiOyB0aGVuCisgICBpZiB0ZXN0ICIkZW5hYmxlX2dsZXMyIiA9ICJ5
ZXMiOyB0aGVuCisgICAgICBBQ19NU0dfRVJST1IoW0Nhbm5vdCBlbmFibGUgT3BlbkdMIEVTIDIg
c3VwcG9ydCB3aXRoIEdMWF0pCisgICBlbHNlCisgICAgICBlbmFibGVfZ2xlczI9bm8KKyAgIGZp
CitmaQoraWYgdGVzdCAiJGVuYWJsZV9lZ2wiID0gIm5vIjsgdGhlbgorICAgaWYgdGVzdCAiJGVu
YWJsZV9nbGVzMiIgPSAieWVzIjsgdGhlbgorICAgICAgQUNfTVNHX0VSUk9SKFtDYW5ub3QgZW5h
YmxlIE9wZW5HTCBFUyAyIHN1cHBvcnQgd2l0aG91dCBFR0xdKQorICAgZWxzZQorICAgICAgZW5h
YmxlX2dsZXMyPW5vCisgICBmaQorZmkKK2lmIHRlc3QgIiRlbmFibGVfZ2xlczIiICE9ICJubyI7
IHRoZW4KKyAgIGlmIHRlc3QgIiRoYXZlX2dsZXMyIiA9ICJubyI7IHRoZW4KKyAgICAgIGlmIHRl
c3QgIiRlbmFibGVfZ2xlczIiID0gInllcyI7IHRoZW4KKyAgICAgICAgIEFDX01TR19FUlJPUihb
LS1lbmFibGUtZ2xlczIgc3BlY2lmaWVkLCBidXQgbm90IGF2YWlsYWJsZV0pCisgICAgICBlbHNl
CisgICAgICAgICBlbmFibGVfZ2xlczI9bm8KKyAgICAgIGZpCisgICBlbHNlCisgICAgICBlbmFi
bGVfZ2xlczI9eWVzCisgICAgICBmb3VuZF9vcGVuZ2w9eWVzCisgICBmaQorZmkKK0FDX01TR19S
RVNVTFQoWyRlbmFibGVfZ2xlczJdKQorCitpZiB0ZXN0ICIkZW5hYmxlX2dsZXMyIiAhPSAieWVz
IjsgdGhlbgogICAgIEFDX0NIRUNLX0hFQURFUlMoW0dML2dsLmhdLCBbZm91bmRfb3BlbmdsPSJ5
ZXMiXSwgW10pCi0gICAgQUNfQ0hFQ0tfSEVBREVSUyhbR0wvZ2x4LmhdLCBbXSwgW2ZvdW5kX29w
ZW5nbD0ibm8iXSkKIGZpCisKIEFDX01TR19DSEVDS0lORyhbd2hpY2ggR1BVIGFjY2VsZXJhdGlv
biBiYWNrZW5kIHRvIHVzZV0pCiBBQ19BUkdfV0lUSChhY2NlbGVyYXRpb25fYmFja2VuZCwKICAg
ICAgICAgICAgIEFDX0hFTFBfU1RSSU5HKFstLXdpdGgtYWNjZWxlcmF0aW9uLWJhY2tlbmQ9QDw6
QG9wZW5nbC9jbHV0dGVyL25vbmVAOj5AXSwKQEAgLTkyMyw3ICs5OTYsNyBAQCBpZiB0ZXN0ICIk
ZW5hYmxlX3ZpZGVvIiA9ICJ5ZXMiIHx8IHRlc3QgIiRlbmFibGVfd2ViX2F1ZGlvIiA9ICJ5ZXMi
OyB0aGVuCiAgICBBQ19TVUJTVChbR1NUUkVBTUVSX0xJQlNdKQogZmkKIAotCithY2NlbGVyYXRp
b25fYmFja2VuZF9kZXNjcmlwdGlvbj0kd2l0aF9hY2NlbGVyYXRpb25fYmFja2VuZAogaWYgdGVz
dCAiJHdpdGhfYWNjZWxlcmF0aW9uX2JhY2tlbmQiID0gImNsdXR0ZXIiOyB0aGVuCiAgICBQS0df
Q0hFQ0tfTU9EVUxFUyhDTFVUVEVSLCBjbHV0dGVyLTEuMCA+PSAkQ0xVVFRFUl9SRVFVSVJFRF9W
RVJTSU9OKQogICAgUEtHX0NIRUNLX01PRFVMRVMoW0NMVVRURVJfR1RLXSwKQEAgLTkzNiw3ICsx
MDA5LDIyIEBAIGlmIHRlc3QgIiR3aXRoX2FjY2VsZXJhdGlvbl9iYWNrZW5kIiA9ICJjbHV0dGVy
IjsgdGhlbgogZmkKIAogaWYgdGVzdCAiJHdpdGhfYWNjZWxlcmF0aW9uX2JhY2tlbmQiID0gIm9w
ZW5nbCI7IHRoZW4KLSAgICBPUEVOR0xfTElCUz0iLWxHTCAtbGRsIgorICAgaWYgdGVzdCAiJGVu
YWJsZV9nbGVzMiIgPSAieWVzIjsgdGhlbgorICAgIGFjY2VsZXJhdGlvbl9iYWNrZW5kX2Rlc2Ny
aXB0aW9uKz0gIihnbGVzMiIKKyAgICBPUEVOR0xfTElCUz0iLWxHTEVTdjIiCisgICBlbHNlCisg
ICAgYWNjZWxlcmF0aW9uX2JhY2tlbmRfZGVzY3JpcHRpb24rPSIoZ2wiCisgICAgT1BFTkdMX0xJ
QlM9Ii1sR0wiCisgICBmaQorICAgaWYgdGVzdCAiJGVuYWJsZV9lZ2wiID0gInllcyI7IHRoZW4K
KyAgICBhY2NlbGVyYXRpb25fYmFja2VuZF9kZXNjcmlwdGlvbis9IiwgZWdsIgorICAgIE9QRU5H
TF9MSUJTKz0iIC1sRUdMIgorICAgZmkKKyAgIGlmIHRlc3QgIiRlbmFibGVfZ2x4IiA9ICJ5ZXMi
OyB0aGVuCisgICAgYWNjZWxlcmF0aW9uX2JhY2tlbmRfZGVzY3JpcHRpb24rPSIsIGdseCIKKyAg
IGZpCisgICBPUEVOR0xfTElCUys9IiAtbGRsIgorICAgYWNjZWxlcmF0aW9uX2JhY2tlbmRfZGVz
Y3JpcHRpb24rPSIpIgogZmkKIEFDX1NVQlNUKFtPUEVOR0xfTElCU10pCiAKQEAgLTEwNDUsOCAr
MTEzMywxMCBAQCBBTV9DT05ESVRJT05BTChbVVNFX1RFWFRVUkVfTUFQUEVSX0dMXSwgW3Rlc3Qg
IiRlbmFibGVfYWNjZWxlcmF0ZWRfY29tcG9zaXRpbmciCiBBTV9DT05ESVRJT05BTChbVVNFX0NM
VVRURVJdLCBbdGVzdCAiJHdpdGhfYWNjZWxlcmF0aW9uX2JhY2tlbmQiID0gImNsdXR0ZXIiXSkK
IAogIyBUaGVzZSBhcmUgdGhlIHNhbWUgbm93LCBidXQgdGhleSB3aWxsIHNvb24gYmUgc2VwYXJh
dGUuCi1BTV9DT05ESVRJT05BTChbVVNFX0dMWF0sIFt0ZXN0ICIkd2l0aF9hY2NlbGVyYXRpb25f
YmFja2VuZCIgPSAib3BlbmdsIl0pCiBBTV9DT05ESVRJT05BTChbVVNFX09QRU5HTF0sIFt0ZXN0
ICIkd2l0aF9hY2NlbGVyYXRpb25fYmFja2VuZCIgPSAib3BlbmdsIl0pCitBTV9DT05ESVRJT05B
TChbVVNFX0VHTF0sIFt0ZXN0ICIkZW5hYmxlX2VnbCIgPSAieWVzIl0pCitBTV9DT05ESVRJT05B
TChbVVNFX0dMRVMyXSwgW3Rlc3QgIiRlbmFibGVfZ2xlczIiID0gInllcyJdKQorQU1fQ09ORElU
SU9OQUwoW1VTRV9HTFhdLCBbdGVzdCAiJGVuYWJsZV9nbHgiID0gInllcyJdKQogCiAjIEluZGV4
ZWREQiBpbXBsaWVzIExldmVsREIsIGJ1dCBvdGhlciBmZWF0dXJlcyBtYXkgb25lIGRheSByZXF1
aXJlIExldmVsREIuCiBBTV9DT05ESVRJT05BTChbRU5BQkxFX0lOREVYRURfREFUQUJBU0VdLFt0
ZXN0ICIkZW5hYmxlX2luZGV4ZWRfZGF0YWJhc2UiID0gInllcyJdKQpAQCAtMTEyNSw3ICsxMjE1
LDcgQEAgQnVpbGQgY29uZmlndXJhdGlvbjoKICBVbmljb2RlIGJhY2tlbmQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICR3aXRoX3VuaWNvZGVfYmFja2VuZAogIEZv
bnQgYmFja2VuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDog
JHdpdGhfZm9udF9iYWNrZW5kCiAgT3B0aW1pemVkIG1lbW9yeSBhbGxvY2F0b3IgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgOiAkZW5hYmxlX2Zhc3RfbWFsbG9jCi0gQWNjZWxlcmF0ZWQg
cmVuZGVyaW5nIGJhY2tlbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAkd2l0aF9hY2Nl
bGVyYXRpb25fYmFja2VuZAorIEFjY2VsZXJhdGVkIHJlbmRlcmluZyBiYWNrZW5kICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDogJGFjY2VsZXJhdGlvbl9iYWNrZW5kX2Rlc2NyaXB0aW9uCiAK
IEZlYXR1cmVzOgogPT09PT09PQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167323</attachid>
            <date>2012-10-05 06:57:33 -0700</date>
            <delta_ts>2012-10-05 07:14:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77921-20121005155641.patch</filename>
            <type>text/plain</type>
            <size>61839</size>
            <attacher name="José Dapena Paz">jdapena</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwNDg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2EzMDUxZTM4MjFmOWI5
Y2I2MTM0ZTdmOGYzODRlYWU0ZTUxZWE5Yy4uOTQ4MTE2ZWM1MmM4ZTJhYmY2OTQ0NzU4NjlkYzNm
MzhlNzZiN2UxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk1IEBACisyMDEyLTEwLTA1ICBKb3PD
qSBEYXBlbmEgUGF6ICA8amRhcGVuYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIEFkZCBz
dXBwb3J0IGZvciBjcmVhdGluZyBFR0wgY29udGV4dHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3OTIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIEVHTCwg
dXNpbmcgT3BlbkdMIGFuZCBPcGVuR0wgRVMgMi4gQm90aAorICAgICAgICBvcHRpb25zIGFyZSBz
ZXQgdXAgb24gY29tcGlsZSB0aW1lLCB3aXRoIHRoZSBjb25maWd1cmUgb3B0aW9ucworICAgICAg
ICAtLWVuYWJsZS1lZ2wgYW5kIC0tZW5hYmxlLWdsZXMyLgorCisgICAgICAgIFRoZSBpbXBsZW1l
bnRhdGlvbiBvbmx5IGFkZHMgc3VwcG9ydCBmb3IgRUdMIG9uIHRvcCBvZiBYMTEsIHRvCisgICAg
ICAgIGlzb2xhdGUgdGhlIGNoYW5nZXMgdG8gdGhlIG1pbmltdW0uIE1vcmUgY2hhbmdlcyBzaG91
bGQgY29tZQorICAgICAgICBsYXRlciB0byBlbmFibGUgRUdMIGZvciBvdGhlciB0YXJnZXRzIChh
cyBXYXlsYW5kKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgcmVxdWlyZWQsIGFzIGV4aXN0aW5n
IFdlYkdMIGFuZCBBQyB0ZXN0cyBzaG91bGQgY292ZXIKKyAgICAgICAgdGhlIGNhc2VzLgorCisg
ICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oOgorICAgICAg
ICAoR3JhcGhpY3NDb250ZXh0M0QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL09wZW5H
TEVTU2hpbXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HTENvbnRleHQu
Y3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHQ6OnNo
YXJlZFgxMURpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0OjpjbGVhbnVwU2hh
cmVkWDExRGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjphY3RpdmVDb250ZXh0TGlzdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHTENvbnRleHQ6OmFkZEFjdGl2ZUNvbnRleHQpOgorICAgICAgICAo
V2ViQ29yZTo6R0xDb250ZXh0OjpyZW1vdmVBY3RpdmVDb250ZXh0KToKKyAgICAgICAgKFdlYkNv
cmU6OkdMQ29udGV4dDo6Y2xlYW51cEFjdGl2ZUNvbnRleHRzQXRFeGl0KToKKyAgICAgICAgKFdl
YkNvcmU6OkdMQ29udGV4dDo6Y3JlYXRlQ29udGV4dEZvcldpbmRvdyk6CisgICAgICAgIChXZWJD
b3JlOjpHTENvbnRleHQ6OmNyZWF0ZU9mZnNjcmVlbkNvbnRleHQpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0dMQ29udGV4dC5oOgorICAgICAgICAoR0xDb250ZXh0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRENhaXJvLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OkdyYXBoaWNzQ29udGV4dDNEKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp+R3JhcGhpY3NDb250ZXh0M0QpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmlzR0xFUzJDb21wbGlhbnQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnBhaW50VG9U
ZXh0dXJlTWFwcGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jbHV0dGVyL0dyYXBo
aWNzQ29udGV4dDNEQ2x1dHRlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZWZs
L0dyYXBoaWNzQ29udGV4dDNERWZsLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9l
Z2wvR0xDb250ZXh0RUdMLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OnNoYXJlZEVHTERpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0RUdMQ29u
ZmlnKToKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6Y3JlYXRlV2luZG93Q29udGV4
dCk6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0w6OmNyZWF0ZVBidWZmZXJDb250ZXh0
KToKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6Y3JlYXRlUGl4bWFwQ29udGV4dCk6
CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0w6OmNyZWF0ZUNvbnRleHQpOgorICAgICAg
ICAoV2ViQ29yZTo6R0xDb250ZXh0RUdMOjpHTENvbnRleHRFR0wpOgorICAgICAgICAoV2ViQ29y
ZTo6R0xDb250ZXh0RUdMOjp+R0xDb250ZXh0RUdMKToKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29u
dGV4dEVHTDo6Y2FuUmVuZGVyVG9EZWZhdWx0RnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6R0xDb250ZXh0RUdMOjpkZWZhdWx0RnJhbWVCdWZmZXJTaXplKToKKyAgICAgICAgKFdlYkNv
cmU6OkdMQ29udGV4dEVHTDo6bWFrZUNvbnRleHRDdXJyZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkdMQ29udGV4dEVHTDo6c3dhcEJ1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0
RUdMOjp3YWl0TmF0aXZlKToKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6cGxhdGZv
cm1Db250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdM
Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChHTENvbnRleHRFR0wpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dseC9HTENvbnRleHRHTFguY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R0xDb250ZXh0R0xYOjpjcmVhdGVXaW5kb3dDb250ZXh0KToKKyAgICAgICAg
KFdlYkNvcmU6OkdMQ29udGV4dEdMWDo6Y3JlYXRlUGJ1ZmZlckNvbnRleHQpOgorICAgICAgICAo
V2ViQ29yZTo6R0xDb250ZXh0R0xYOjpjcmVhdGVQaXhtYXBDb250ZXh0KToKKyAgICAgICAgKFdl
YkNvcmU6OkdMQ29udGV4dEdMWDo6Y3JlYXRlQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpH
TENvbnRleHRHTFg6On5HTENvbnRleHRHTFgpOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0
R0xYOjpkZWZhdWx0RnJhbWVCdWZmZXJTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4
dEdMWDo6bWFrZUNvbnRleHRDdXJyZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEdM
WDo6c3dhcEJ1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpH
TENvbnRleHRHTFg6OndhaXROYXRpdmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ds
eC9HTENvbnRleHRHTFguaDoKKyAgICAgICAgKEdMQ29udGV4dEdMWCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29udGV4dDNETWFjLm1tOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6cmVsZWFzZVNoYWRlckNvbXBpbGVyKToK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
cmFwaGljc0NvbnRleHQzRE9wZW5HTEVTLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNEOjpyZWFkUGl4ZWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEOjpyZXNoYXBlRkJPcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6
cmVuZGVyYnVmZmVyU3RvcmFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3Jh
cGhpY3NDb250ZXh0M0RRdC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvUmVkaXJlY3RlZFhDb21w
b3NpdGVXaW5kb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVkaXJlY3RlZFhDb21wb3NpdGVX
aW5kb3c6OlJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
ZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93Ojp+UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6OnJlc2l6ZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3RrL1JlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93Lmg6CisKIDIw
MTItMTAtMDQgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEZp
eCBzdWItZmllbGQgd2lkdGggdG8gdGhlIG1heGltdW0gd2lkdGggb2YgYSBwbGFjZWhvbGRlciBh
bmQgdGhlIG1heGltdW0gdmFsdWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBjYmZhNjRhNjM5OTdkZTYyNGIyY2E3
MzQzOTE3NzZlNTA1YjMyOWJjLi5mMjAxMDUxZjNjMWZkOGJlMjJhMDVkYjVjOTRjMjUxZmZlMGE4
YzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTItMTAtMDUgIEpvc8OpIERhcGVu
YSBQYXogIDxqZGFwZW5hQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gQWRkIHN1cHBvcnQg
Zm9yIGNyZWF0aW5nIEVHTCBjb250ZXh0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9Nzc5MjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgRUdMLCB1c2luZyBP
cGVuR0wgYW5kIE9wZW5HTCBFUyAyLiBCb3RoCisgICAgICAgIG9wdGlvbnMgYXJlIHNldCB1cCBv
biBjb21waWxlIHRpbWUsIHdpdGggdGhlIGNvbmZpZ3VyZSBvcHRpb25zCisgICAgICAgIC0tZW5h
YmxlLWVnbCBhbmQgLS1lbmFibGUtZ2xlczIuCisKKyAgICAgICAgVGhlIGltcGxlbWVudGF0aW9u
IG9ubHkgYWRkcyBzdXBwb3J0IGZvciBFR0wgb24gdG9wIG9mIFgxMSwgdG8KKyAgICAgICAgaXNv
bGF0ZSB0aGUgY2hhbmdlcyB0byB0aGUgbWluaW11bS4gTW9yZSBjaGFuZ2VzIHNob3VsZCBjb21l
CisgICAgICAgIGxhdGVyIHRvIGVuYWJsZSBFR0wgZm9yIG90aGVyIHRhcmdldHMgKGFzIFdheWxh
bmQpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0R3Rr
LmNwcDoKKwogMjAxMi0xMC0wNSAgSm9uZ3Nlb2sgWWFuZyAgPGpzNDUueWFuZ0BzYW1zdW5nLmNv
bT4KIAogICAgICAgICBbRUZMXVtXSzJdIFJlbW92ZSAid2ViIiB3b3JkIGZyb20gZXdrX3Jlc291
cmNlIEFQSXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvU291
cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggMzkwODhmM2M2YjBjNDA3YTU4NWZmMzdk
ZTFjMTM3MWE5MzA5ZjcyYy4uNWNlODU5NWEwZjIyMTVmNzNiNjBmZmRjMTNkNWZlZjcxMTE5ODli
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTExMiw2ICsxMTIsNyBAQCB3ZWJjb3JlZ3RrX2Nw
cGZsYWdzICs9IFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW9jbHVl
IFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlybyBc
CiAJLUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4IFwKKwkt
SSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wgXAogCS1JJChz
cmNkaXIpL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lciBcCiAJLUkk
KHNyY2RpcikvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrIFwKIAktSSQoc3Jj
ZGlyKS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxp
c3QuYW0KaW5kZXggYjg4ZjlkYzk2YTgwMmY5YTQzZTBkN2M2YzEzMDBjMjZjODE1YWRjYS4uMWU5
N2I1N2E3MzI1ZmVlMDU1ZTYzZjBkMDUwNWRiMjI5ZjUyMjIxMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtCkBAIC00NDU3LDE0ICs0NDU3LDkgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwK
IAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmggXAogCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oIFwKLQlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uczNET3BlbkdMLmNwcCBc
Ci0JU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9w
ZW5HTC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5z
aW9uczNET3BlbkdMQ29tbW9uLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5HTENvbW1vbi5oIFwKLQlTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwIFwKIAlT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RP
cGVuR0xDb21tb24uY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9PcGVu
R0xTaGltcy5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL09wZW5HTFNo
aW1zLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5U
eXBlVmVydGljYWxEYXRhLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Bh
dGguY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmggXApAQCAt
NTk5Niw4ICs1OTkxLDYgQEAgd2ViY29yZWd0a19zb3VyY2VzICs9IFwKIAogaWYgVEFSR0VUX1gx
MQogd2ViY29yZWd0a19zb3VyY2VzICs9IFwKLQlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nbHgvR0xDb250ZXh0R0xYLmNwcCBcCi0JU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ2x4L0dMQ29udGV4dEdMWC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9HTENvbnRleHQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9HTENvbnRleHQuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0
a1dpZGdldEJhY2tpbmdTdG9yZVgxMS5jcHAgXApAQCAtNjAwOCw2ICs2MDAxLDE2IEBAIHdlYmNv
cmVndGtfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGx1Z2lucy9ndGsvUGx1Z2luUGFj
a2FnZUd0ay5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsdWdpbnMvZ3RrL1BsdWdpblZpZXdHdGsu
Y3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbHVnaW5zL2d0ay94ZW1iZWQuaAoraWYgVVNFX0VHTAor
d2ViY29yZWd0a19zb3VyY2VzICs9IFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9lZ2wvR0xDb250ZXh0RUdMLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZWdsL0dMQ29udGV4dEVHTC5oCitlbmRpZiAjIEVORCBVU0VfRUdMCitpZiBVU0VfR0xYCit3
ZWJjb3JlZ3RrX3NvdXJjZXMgKz0gXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dseC9HTENvbnRleHRHTFguY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nbHgvR0xDb250ZXh0R0xYLmgKK2VuZGlmICMgRU5EIFVTRV9HTFgKIGVsc2UKIGlmIFRBUkdF
VF9XSU4zMgogd2ViY29yZV9zb3VyY2VzICs9IFwKQEAgLTYwMzgsNiArNjA0MSwyMSBAQCB3ZWJj
b3JlX3NvdXJjZXMgKz0gXAogZW5kaWYgIyBFTkQgVEFSR0VUX1dJTjMyCiBlbmRpZiAjIEVORCBU
QVJHRVRfWDExCiAKK2lmIFVTRV9HTEVTMgord2ViY29yZV9zb3VyY2VzICs9IFwKKwlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uczNET3BlbkdMRVMuY3Bw
IFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uczNE
T3BlbkdMRVMuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dDNET3BlbkdMRVMuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9PcGVuR0xFU1NoaW1zLmgKK2Vsc2UKK3dlYmNvcmVfc291cmNlcyArPSBcCisJU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5HTC5j
cHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25z
M0RPcGVuR0wuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvT3BlbkdMU2hpbXMuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9PcGVuR0xTaGltcy5oCitlbmRpZiAjIEVORCBVU0VfR0xFUzIKKwogIyAtLS0tCiAjIGljdSB1
bmljb2RlIGJhY2tlbmQKICMgLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKaW5kZXggNGRjYjJkMGUyYzQxZDk5YzI3M2Y5
ZDM3MzkwMWZhNTBkMDQ5OWE5MS4uODYwODIzNGU2ZjJkZjI4NDRmNjdjMTYxYzM4MzRkYTY5ZTY4
ZjNmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0M0QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQzRC5oCkBAIC0zOTUsNiArMzk1LDcgQEAgcHVibGljOgogICAgICAgICBTVEVO
Q0lMX0lOREVYOCA9IDB4OEQ0OCwKICAgICAgICAgREVQVEhfU1RFTkNJTCA9IDB4ODRGOSwKICAg
ICAgICAgVU5TSUdORURfSU5UXzI0XzggPSAweDg0RkEsCisgICAgICAgIERFUFRIMjRfU1RFTkNJ
TDggPSAweDg4RjAsCiAgICAgICAgIFJFTkRFUkJVRkZFUl9XSURUSCA9IDB4OEQ0MiwKICAgICAg
ICAgUkVOREVSQlVGRkVSX0hFSUdIVCA9IDB4OEQ0MywKICAgICAgICAgUkVOREVSQlVGRkVSX0lO
VEVSTkFMX0ZPUk1BVCA9IDB4OEQ0NCwKQEAgLTEwMjEsNyArMTAyMiw3IEBAIHB1YmxpYzoKICAg
ICBBTkdMRVdlYktpdEJyaWRnZSBtX2NvbXBpbGVyOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShC
TEFDS0JFUlJZKSB8fCAoUExBVEZPUk0oUVQpICYmIGRlZmluZWQoUVRfT1BFTkdMX0VTXzIpKQor
I2lmIFBMQVRGT1JNKEJMQUNLQkVSUlkpIHx8IChQTEFURk9STShRVCkgJiYgZGVmaW5lZChRVF9P
UEVOR0xfRVNfMikpIHx8IChQTEFURk9STShHVEspICYmIFVTRShPUEVOR0xfRVNfMikpCiAgICAg
ZnJpZW5kIGNsYXNzIEV4dGVuc2lvbnMzRE9wZW5HTEVTOwogICAgIE93blB0cjxFeHRlbnNpb25z
M0RPcGVuR0xFUz4gbV9leHRlbnNpb25zOwogI2VsaWYgIVBMQVRGT1JNKENIUk9NSVVNKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvT3BlbkdMRVNTaGltcy5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvT3BlbkdMRVNTaGltcy5oCmluZGV4
IDQwMTg3MDA0YWM2YTg5MDE1ZTQ4MzRjNWU2YzM1MDEzM2QxMDUxODMuLmJjYWY4NTVlYTZlMGMw
ZGE0YjkwZmQ2YWI4M2QzY2RmOThjNTA0ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL09wZW5HTEVTU2hpbXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9PcGVuR0xFU1NoaW1zLmgKQEAgLTI2LDcgKzI2LDcgQEAKICNpZm5kZWYg
T3BlbkdMRVNTaGltc19oCiAjZGVmaW5lIE9wZW5HTEVTU2hpbXNfaAogCi0jaWYgUExBVEZPUk0o
QkxBQ0tCRVJSWSkgfHwgUExBVEZPUk0oUVQpCisjaWYgUExBVEZPUk0oQkxBQ0tCRVJSWSkgfHwg
UExBVEZPUk0oUVQpIHx8IFBMQVRGT1JNKEdUSykKICNkZWZpbmUgZ2xCaW5kRnJhbWVidWZmZXJF
WFQgZ2xCaW5kRnJhbWVidWZmZXIKICNkZWZpbmUgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyREVYVCBn
bEZyYW1lYnVmZmVyVGV4dHVyZTJECiAjZGVmaW5lIGdsQmluZFJlbmRlcmJ1ZmZlckVYVCBnbEJp
bmRSZW5kZXJidWZmZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0dMQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9HTENvbnRleHQuY3BwCmluZGV4IDNiODA0ZjYwMmNjZjc4YWJjYzc0NWMwOWYxM2I4
MGRmNTFiNjg4ODQuLjBhZDc0MmI3MDAxNzc2YmYyN2IxOTAyMjYyNmRjNDZhMjM2ZDY3NzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dMQ29udGV4
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR0xDb250
ZXh0LmNwcApAQCAtMjEsMTAgKzIxLDEyIEBACiAKICNpZiBVU0UoT1BFTkdMKQogCisjaW5jbHVk
ZSAiR0xDb250ZXh0RUdMLmgiCisjaW5jbHVkZSAiR0xDb250ZXh0R0xYLmgiCiAjaW5jbHVkZSA8
d3RmL01haW5UaHJlYWQuaD4KIAotI2lmIFVTRShHTFgpCi0jaW5jbHVkZSAiR0xDb250ZXh0R0xY
LmgiCisjaWYgUExBVEZPUk0oWDExKQorI2luY2x1ZGUgPFgxMS9YbGliLmg+CiAjZW5kaWYKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzYsMTAgKzM4LDg4IEBAIEdMQ29udGV4dCogR0xDb250
ZXh0OjpzaGFyaW5nQ29udGV4dCgpCiAgICAgcmV0dXJuIHNoYXJpbmcuZ2V0KCk7CiB9CiAKKyNp
ZiBQTEFURk9STShYMTEpCisvLyBXZSBkbyBub3Qgd2FudCB0byBjYWxsIGdsWE1ha2VDb250ZXh0
Q3VycmVudCB1c2luZyBkaWZmZXJlbnQgRGlzcGxheSBwb2ludGVycywKKy8vIGJlY2F1c2UgaXQg
bWlnaHQgbGVhZCB0byBjcmFzaGVzIGluIHNvbWUgZHJpdmVycyAoZmdscngpLiBXZSB1c2UgYSBz
aGFyZWQgZGlzcGxheQorLy8gcG9pbnRlciBoZXJlLgorc3RhdGljIERpc3BsYXkqIGdTaGFyZWRY
MTFEaXNwbGF5ID0gMDsKK0Rpc3BsYXkqIEdMQ29udGV4dDo6c2hhcmVkWDExRGlzcGxheSgpCit7
CisgICAgaWYgKCFnU2hhcmVkWDExRGlzcGxheSkKKyAgICAgICAgZ1NoYXJlZFgxMURpc3BsYXkg
PSBYT3BlbkRpc3BsYXkoMCk7CisgICAgcmV0dXJuIGdTaGFyZWRYMTFEaXNwbGF5OworfQorCit2
b2lkIEdMQ29udGV4dDo6Y2xlYW51cFNoYXJlZFgxMURpc3BsYXkoKQoreworICAgIGlmICghZ1No
YXJlZFgxMURpc3BsYXkpCisgICAgICAgIHJldHVybjsKKyAgICBYQ2xvc2VEaXNwbGF5KGdTaGFy
ZWRYMTFEaXNwbGF5KTsKKyAgICBnU2hhcmVkWDExRGlzcGxheSA9IDA7Cit9CisjZW5kaWYgLy8g
UExBVEZPUk0oWDExKQorCisvLyBCZWNhdXNlIG9mIGRyaXZlciBidWdzLCBleGl0aW5nIHRoZSBw
cm9ncmFtIHdoZW4gdGhlcmUgYXJlIGFjdGl2ZSBwYnVmZmVycworLy8gY2FuIGNyYXNoIHRoZSBY
IHNlcnZlciAodGhpcyBoYXMgYmVlbiBvYnNlcnZlZCB3aXRoIHRoZSBvZmZpY2lhbCBOdmlkaWEg
ZHJpdmVycykuCisvLyBXZSBuZWVkIHRvIGVuc3VyZSB0aGF0IHdlIGNsZWFuIGV2ZXJ5dGhpbmcg
dXAgb24gZXhpdC4gVGhlcmUgYXJlIHNldmVyYWwgcmVhc29ucworLy8gdGhhdCBHcmFwaGljc0Nv
bnRleHQzRHMgd2lsbCBzdGlsbCBiZSBhbGl2ZSBhdCBleGl0LCBpbmNsdWRpbmcgdXNlciBlcnJv
ciAobWVtb3J5CisvLyBsZWFrcykgYW5kIHRoZSBwYWdlIGNhY2hlLiBJbiBhbnkgY2FzZSwgd2Ug
ZG9uJ3Qgd2FudCB0aGUgWCBzZXJ2ZXIgdG8gY3Jhc2guCit0eXBlZGVmIFZlY3RvcjxHTENvbnRl
eHQqPiBBY3RpdmVDb250ZXh0TGlzdDsKK3N0YXRpYyBBY3RpdmVDb250ZXh0TGlzdCYgYWN0aXZl
Q29udGV4dExpc3QoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQWN0aXZlQ29udGV4dExp
c3QsIGFjdGl2ZUNvbnRleHRzLCAoKSk7CisgICAgcmV0dXJuIGFjdGl2ZUNvbnRleHRzOworfQor
Cit2b2lkIEdMQ29udGV4dDo6YWRkQWN0aXZlQ29udGV4dChHTENvbnRleHQqIGNvbnRleHQpCit7
CisgICAgc3RhdGljIGJvb2wgYWRkZWRBdEV4aXRIYW5kbGVyID0gZmFsc2U7CisgICAgaWYgKCFh
ZGRlZEF0RXhpdEhhbmRsZXIpIHsKKyAgICAgICAgYXRleGl0KCZHTENvbnRleHQ6OmNsZWFudXBB
Y3RpdmVDb250ZXh0c0F0RXhpdCk7CisgICAgICAgIGFkZGVkQXRFeGl0SGFuZGxlciA9IHRydWU7
CisgICAgfQorICAgIGFjdGl2ZUNvbnRleHRMaXN0KCkuYXBwZW5kKGNvbnRleHQpOworfQorCitz
dGF0aWMgYm9vbCBnQ2xlYW5pbmdVcEF0RXhpdCA9IGZhbHNlOworCit2b2lkIEdMQ29udGV4dDo6
cmVtb3ZlQWN0aXZlQ29udGV4dChHTENvbnRleHQqIGNvbnRleHQpCit7CisgICAgLy8gSWYgd2Ug
YXJlIGNsZWFuaW5nIHVwIHRoZSBjb250ZXh0IGxpc3QgYXQgZXhpdCwgZG9uJ3QgYm90aGVyIHJl
bW92aW5nIHRoZSBjb250ZXh0CisgICAgLy8gZnJvbSB0aGUgbGlzdCwgc2luY2Ugd2UgZG9uJ3Qg
d2FudCB0byBtb2RpZnkgdGhlIGxpc3Qgd2hpbGUgaXQncyBiZWluZyBpdGVyYXRlZC4KKyAgICBp
ZiAoZ0NsZWFuaW5nVXBBdEV4aXQpCisgICAgICAgIHJldHVybjsKKworICAgIEFjdGl2ZUNvbnRl
eHRMaXN0JiBjb250ZXh0TGlzdCA9IGFjdGl2ZUNvbnRleHRMaXN0KCk7CisgICAgc2l6ZV90IGkg
PSBjb250ZXh0TGlzdC5maW5kKGNvbnRleHQpOworICAgIGlmIChpICE9IG5vdEZvdW5kKQorICAg
ICAgICBjb250ZXh0TGlzdC5yZW1vdmUoaSk7Cit9CisKK3ZvaWQgR0xDb250ZXh0OjpjbGVhbnVw
QWN0aXZlQ29udGV4dHNBdEV4aXQoKQoreworICAgIGdDbGVhbmluZ1VwQXRFeGl0ID0gdHJ1ZTsK
KworICAgIEFjdGl2ZUNvbnRleHRMaXN0JiBjb250ZXh0TGlzdCA9IGFjdGl2ZUNvbnRleHRMaXN0
KCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb250ZXh0TGlzdC5zaXplKCk7ICsraSkK
KyAgICAgICAgZGVsZXRlIGNvbnRleHRMaXN0W2ldOworCisjaWYgUExBVEZPUk0oWDExKQorICAg
IGNsZWFudXBTaGFyZWRYMTFEaXNwbGF5KCk7CisjZW5kaWYKK30KKworCisKIFBhc3NPd25QdHI8
R0xDb250ZXh0PiBHTENvbnRleHQ6OmNyZWF0ZUNvbnRleHRGb3JXaW5kb3codWludDY0X3Qgd2lu
ZG93SGFuZGxlLCBHTENvbnRleHQqIHNoYXJpbmdDb250ZXh0KQogewogI2lmIFVTRShHTFgpCi0g
ICAgcmV0dXJuIEdMQ29udGV4dEdMWDo6Y3JlYXRlQ29udGV4dCh3aW5kb3dIYW5kbGUsIHNoYXJp
bmdDb250ZXh0KTsKKyAgICBpZiAoT3duUHRyPEdMQ29udGV4dD4gZ2x4Q29udGV4dCA9IEdMQ29u
dGV4dEdMWDo6Y3JlYXRlQ29udGV4dCh3aW5kb3dIYW5kbGUsIHNoYXJpbmdDb250ZXh0KSkKKyAg
ICAgICAgcmV0dXJuIGdseENvbnRleHQucmVsZWFzZSgpOworI2VuZGlmCisjaWYgVVNFKEVHTCkK
KyAgICBpZiAoT3duUHRyPEdMQ29udGV4dD4gZWdsQ29udGV4dCA9IEdMQ29udGV4dEVHTDo6Y3Jl
YXRlQ29udGV4dCh3aW5kb3dIYW5kbGUsIHNoYXJpbmdDb250ZXh0KSkKKyAgICAgICAgcmV0dXJu
IGVnbENvbnRleHQucmVsZWFzZSgpOwogI2VuZGlmCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CkBA
IC00OCwxMCArMTI4LDE1IEBAIEdMQ29udGV4dDo6R0xDb250ZXh0KCkKIHsKIH0KIAotUGFzc093
blB0cjxHTENvbnRleHQ+IEdMQ29udGV4dDo6Y3JlYXRlT2Zmc2NyZWVuQ29udGV4dChHTENvbnRl
eHQqIHNoYXJpbmcpCitQYXNzT3duUHRyPEdMQ29udGV4dD4gR0xDb250ZXh0OjpjcmVhdGVPZmZz
Y3JlZW5Db250ZXh0KEdMQ29udGV4dCogc2hhcmluZ0NvbnRleHQpCiB7CiAjaWYgVVNFKEdMWCkK
LSAgICByZXR1cm4gR0xDb250ZXh0R0xYOjpjcmVhdGVDb250ZXh0KDAsIHNoYXJpbmcpOworICAg
IGlmIChPd25QdHI8R0xDb250ZXh0PiBnbHhDb250ZXh0ID0gR0xDb250ZXh0R0xYOjpjcmVhdGVD
b250ZXh0KDAsIHNoYXJpbmdDb250ZXh0KSkKKyAgICAgICAgcmV0dXJuIGdseENvbnRleHQucmVs
ZWFzZSgpOworI2VuZGlmCisjaWYgVVNFKEVHTCkKKyAgICBpZiAoT3duUHRyPEdMQ29udGV4dD4g
ZWdsQ29udGV4dCA9IEdMQ29udGV4dEVHTDo6Y3JlYXRlQ29udGV4dCgwLCBzaGFyaW5nQ29udGV4
dCkpCisgICAgICAgIHJldHVybiBlZ2xDb250ZXh0LnJlbGVhc2UoKTsKICNlbmRpZgogICAgIHJl
dHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vR0xDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9HTENvbnRleHQuaAppbmRleCBjMjNhNDZjZjEzMzAyYzQ4ZWQwY2JlMDNiMzVjYjU1
YTYxZTk0ODJjLi4xYTg4MDcyMjJmMjI5YWEzNjJiNzdkNjY2ODg3ZmI2YjE3Y2YzM2Q3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HTENvbnRleHQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HTENvbnRleHQu
aApAQCAtMjUsNiArMjUsMTAgQEAKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNs
dWRlIDx3dGYvUGFzc093blB0ci5oPgogCisjaWYgUExBVEZPUk0oWDExKQordHlwZWRlZiBzdHJ1
Y3QgX1hEaXNwbGF5IERpc3BsYXk7CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBHTENvbnRleHQgewpAQCAtMzksOSArNDMsMTkgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
fkdMQ29udGV4dCgpOwogICAgIHZpcnR1YWwgYm9vbCBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAg
ICB2aXJ0dWFsIHZvaWQgc3dhcEJ1ZmZlcnMoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHdhaXRO
YXRpdmUoKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGNhblJlbmRlclRvRGVmYXVsdEZyYW1lYnVm
ZmVyKCkgPSAwOwogICAgIHZpcnR1YWwgSW50U2l6ZSBkZWZhdWx0RnJhbWVCdWZmZXJTaXplKCkg
PSAwOwogCisjaWYgUExBVEZPUk0oWDExKQorICAgIHN0YXRpYyBEaXNwbGF5KiBzaGFyZWRYMTFE
aXNwbGF5KCk7CisgICAgc3RhdGljIHZvaWQgY2xlYW51cFNoYXJlZFgxMURpc3BsYXkoKTsKKyNl
bmRpZgorCisgICAgc3RhdGljIHZvaWQgYWRkQWN0aXZlQ29udGV4dChHTENvbnRleHQqKTsKKyAg
ICBzdGF0aWMgdm9pZCByZW1vdmVBY3RpdmVDb250ZXh0KEdMQ29udGV4dCopOworICAgIHN0YXRp
YyB2b2lkIGNsZWFudXBBY3RpdmVDb250ZXh0c0F0RXhpdCgpOworCiAjaWYgVVNFKDNEX0dSQVBI
SUNTKQogICAgIHZpcnR1YWwgUGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCBwbGF0Zm9ybUNvbnRl
eHQoKSA9IDA7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RDYWlyby5jcHAKaW5kZXgg
ZGMxMmY2YzVkNjJkNjQ3MWU1NDllZGQ4ZTBhZjRkNDM4MjY5MDExNC4uNzAzM2ZhNmRhNjc2MTAx
MzZiNDQzYmY2OTFkMzFjNmYzNmQ0NjBmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RDYWlyby5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RDYWly
by5jcHAKQEAgLTMwLDEyICszMCwxMCBAQAogCiAjaWYgVVNFKDNEX0dSQVBISUNTKQogCi0jaW5j
bHVkZSAiRXh0ZW5zaW9uczNET3BlbkdMLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0RQ
cml2YXRlLmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJJbWFnZVNvdXJjZS5oIgog
I2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0jaW5jbHVkZSAiT3BlbkdMU2hpbXMuaCIKICNp
bmNsdWRlICJQbGF0Zm9ybUNvbnRleHRDYWlyby5oIgogI2luY2x1ZGUgIlJlZlB0ckNhaXJvLmgi
CiAjaW5jbHVkZSAiU2hhZGVyTGFuZy5oIgpAQCAtNDQsNiArNDIsMTMgQEAKICNpbmNsdWRlIDx3
dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAorI2lmIFVTRShPUEVO
R0xfRVNfMikKKyNpbmNsdWRlICJFeHRlbnNpb25zM0RPcGVuR0xFUy5oIgorI2Vsc2UKKyNpbmNs
dWRlICJFeHRlbnNpb25zM0RPcGVuR0wuaCIKKyNpbmNsdWRlICJPcGVuR0xTaGltcy5oIgorI2Vu
ZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQz
RD4gR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZShHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRl
cyBhdHRyaWJ1dGVzLCBIb3N0V2luZG93KiBob3N0V2luZG93LCBHcmFwaGljc0NvbnRleHQzRDo6
UmVuZGVyU3R5bGUgcmVuZGVyU3R5bGUpCkBAIC01NSw3ICs2MCw5IEBAIFBhc3NSZWZQdHI8R3Jh
cGhpY3NDb250ZXh0M0Q+IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0
M0Q6OkF0dHJpCiAgICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQgPSBmYWxzZTsKICAgICBzdGF0
aWMgYm9vbCBzdWNjZXNzID0gdHJ1ZTsKICAgICBpZiAoIWluaXRpYWxpemVkKSB7CisjaWYgIVVT
RShPUEVOR0xfRVNfMikKICAgICAgICAgc3VjY2VzcyA9IGluaXRpYWxpemVPcGVuR0xTaGltcygp
OworI2VuZGlmCiAgICAgICAgIGluaXRpYWxpemVkID0gdHJ1ZTsKICAgICB9CiAgICAgaWYgKCFz
dWNjZXNzKQpAQCAtOTAsMjYgKzk3LDI2IEBAIEdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0Nv
bnRleHQzRChHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRyaWJ1dGVzLCBICiAgICAg
ICAgIDo6Z2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtX3RleHR1cmUpOwogICAgICAgICA6
OmdsVGV4UGFyYW1ldGVyZihHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdM
X0xJTkVBUik7CiAgICAgICAgIDo6Z2xUZXhQYXJhbWV0ZXJmKEdMX1RFWFRVUkVfMkQsIEdMX1RF
WFRVUkVfTUlOX0ZJTFRFUiwgR0xfTElORUFSKTsKLSAgICAgICAgOjpnbFRleFBhcmFtZXRlcmko
R0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1MsIEdMX0NMQU1QKTsKLSAgICAgICAgOjpn
bFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1QsIEdMX0NMQU1Q
KTsKKyAgICAgICAgOjpnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9X
UkFQX1MsIEdMX0NMQU1QX1RPX0VER0UpOworICAgICAgICA6OmdsVGV4UGFyYW1ldGVyaShHTF9U
RVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfVCwgR0xfQ0xBTVBfVE9fRURHRSk7CiAgICAgICAg
IDo6Z2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCAwKTsKIAogICAgICAgICAvLyBDcmVhdGUg
YW4gRkJPLgotICAgICAgICA6OmdsR2VuRnJhbWVidWZmZXJzRVhUKDEsICZtX2Zibyk7Ci0gICAg
ICAgIDo6Z2xCaW5kRnJhbWVidWZmZXJFWFQoR0xfRlJBTUVCVUZGRVJfRVhULCBtX2Zibyk7Cisg
ICAgICAgIDo6Z2xHZW5GcmFtZWJ1ZmZlcnMoMSwgJm1fZmJvKTsKKyAgICAgICAgOjpnbEJpbmRG
cmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbV9mYm8pOwogCiAgICAgICAgIG1fYm91bmRGQk8g
PSBtX2ZibzsKICAgICAgICAgaWYgKCFtX2F0dHJzLmFudGlhbGlhcyAmJiAobV9hdHRycy5zdGVu
Y2lsIHx8IG1fYXR0cnMuZGVwdGgpKQotICAgICAgICAgICAgOjpnbEdlblJlbmRlcmJ1ZmZlcnNF
WFQoMSwgJm1fZGVwdGhTdGVuY2lsQnVmZmVyKTsKKyAgICAgICAgICAgIDo6Z2xHZW5SZW5kZXJi
dWZmZXJzKDEsICZtX2RlcHRoU3RlbmNpbEJ1ZmZlcik7CiAKICAgICAgICAgLy8gQ3JlYXRlIGEg
bXVsdGlzYW1wbGUgRkJPLgogICAgICAgICBpZiAobV9hdHRycy5hbnRpYWxpYXMpIHsKLSAgICAg
ICAgICAgIDo6Z2xHZW5GcmFtZWJ1ZmZlcnNFWFQoMSwgJm1fbXVsdGlzYW1wbGVGQk8pOwotICAg
ICAgICAgICAgOjpnbEJpbmRGcmFtZWJ1ZmZlckVYVChHTF9GUkFNRUJVRkZFUl9FWFQsIG1fbXVs
dGlzYW1wbGVGQk8pOworICAgICAgICAgICAgOjpnbEdlbkZyYW1lYnVmZmVycygxLCAmbV9tdWx0
aXNhbXBsZUZCTyk7CisgICAgICAgICAgICA6OmdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVG
RkVSLCBtX211bHRpc2FtcGxlRkJPKTsKICAgICAgICAgICAgIG1fYm91bmRGQk8gPSBtX211bHRp
c2FtcGxlRkJPOwotICAgICAgICAgICAgOjpnbEdlblJlbmRlcmJ1ZmZlcnNFWFQoMSwgJm1fbXVs
dGlzYW1wbGVDb2xvckJ1ZmZlcik7CisgICAgICAgICAgICA6OmdsR2VuUmVuZGVyYnVmZmVycygx
LCAmbV9tdWx0aXNhbXBsZUNvbG9yQnVmZmVyKTsKICAgICAgICAgICAgIGlmIChtX2F0dHJzLnN0
ZW5jaWwgfHwgbV9hdHRycy5kZXB0aCkKLSAgICAgICAgICAgICAgICA6OmdsR2VuUmVuZGVyYnVm
ZmVyc0VYVCgxLCAmbV9tdWx0aXNhbXBsZURlcHRoU3RlbmNpbEJ1ZmZlcik7CisgICAgICAgICAg
ICAgICAgOjpnbEdlblJlbmRlcmJ1ZmZlcnMoMSwgJm1fbXVsdGlzYW1wbGVEZXB0aFN0ZW5jaWxC
dWZmZXIpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xMjksOCArMTM2LDExIEBAIEdyYXBoaWNz
Q29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRChHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRl
cyBhdHRyaWJ1dGVzLCBICiAgICAgQU5HTEVSZXNvdXJjZXMuTWF4RHJhd0J1ZmZlcnMgPSAxOwog
ICAgIG1fY29tcGlsZXIuc2V0UmVzb3VyY2VzKEFOR0xFUmVzb3VyY2VzKTsKIAorI2lmICFVU0Uo
T1BFTkdMX0VTXzIpCiAgICAgOjpnbEVuYWJsZShHTF9WRVJURVhfUFJPR1JBTV9QT0lOVF9TSVpF
KTsKICAgICA6OmdsRW5hYmxlKEdMX1BPSU5UX1NQUklURSk7CisjZW5kaWYKKwogICAgIDo6Z2xD
bGVhckNvbG9yKDAsIDAsIDAsIDApOwogfQogCkBAIC0xNDIsMjAgKzE1MiwxNSBAQCBHcmFwaGlj
c0NvbnRleHQzRDo6fkdyYXBoaWNzQ29udGV4dDNEKCkKICAgICBtYWtlQ29udGV4dEN1cnJlbnQo
KTsKICAgICA6OmdsRGVsZXRlVGV4dHVyZXMoMSwgJm1fdGV4dHVyZSk7CiAgICAgaWYgKG1fYXR0
cnMuYW50aWFsaWFzKSB7Ci0gICAgICAgIDo6Z2xEZWxldGVSZW5kZXJidWZmZXJzRVhUKDEsICZt
X211bHRpc2FtcGxlQ29sb3JCdWZmZXIpOworICAgICAgICA6OmdsRGVsZXRlUmVuZGVyYnVmZmVy
cygxLCAmbV9tdWx0aXNhbXBsZUNvbG9yQnVmZmVyKTsKICAgICAgICAgaWYgKG1fYXR0cnMuc3Rl
bmNpbCB8fCBtX2F0dHJzLmRlcHRoKQotICAgICAgICAgICAgOjpnbERlbGV0ZVJlbmRlcmJ1ZmZl
cnNFWFQoMSwgJm1fbXVsdGlzYW1wbGVEZXB0aFN0ZW5jaWxCdWZmZXIpOwotICAgICAgICA6Omds
RGVsZXRlRnJhbWVidWZmZXJzRVhUKDEsICZtX211bHRpc2FtcGxlRkJPKTsKKyAgICAgICAgICAg
IDo6Z2xEZWxldGVSZW5kZXJidWZmZXJzKDEsICZtX211bHRpc2FtcGxlRGVwdGhTdGVuY2lsQnVm
ZmVyKTsKKyAgICAgICAgOjpnbERlbGV0ZUZyYW1lYnVmZmVycygxLCAmbV9tdWx0aXNhbXBsZUZC
Tyk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKG1fYXR0cnMuc3RlbmNpbCB8fCBtX2F0dHJz
LmRlcHRoKQotICAgICAgICAgICAgOjpnbERlbGV0ZVJlbmRlcmJ1ZmZlcnNFWFQoMSwgJm1fZGVw
dGhTdGVuY2lsQnVmZmVyKTsKKyAgICAgICAgICAgIDo6Z2xEZWxldGVSZW5kZXJidWZmZXJzKDEs
ICZtX2RlcHRoU3RlbmNpbEJ1ZmZlcik7CiAgICAgfQotICAgIDo6Z2xEZWxldGVGcmFtZWJ1ZmZl
cnNFWFQoMSwgJm1fZmJvKTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cmVsZWFzZVNo
YWRlckNvbXBpbGVyKCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIDo6Z2xEZWxldGVG
cmFtZWJ1ZmZlcnMoMSwgJm1fZmJvKTsKIH0KIAogYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0
SW1hZ2VEYXRhKEltYWdlKiBpbWFnZSwgdW5zaWduZWQgaW50IGZvcm1hdCwgdW5zaWduZWQgaW50
IHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBpZ25vcmVHYW1tYUFuZENvbG9yUHJv
ZmlsZSwgVmVjdG9yPHVpbnQ4X3Q+JiBvdXRwdXRWZWN0b3IpCkBAIC0yNTgsNyArMjYzLDExIEBA
IFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QgR3JhcGhpY3NDb250ZXh0M0Q6OnBsYXRmb3JtR3Jh
cGhpY3NDb250ZXh0M0QoKQogCiBib29sIEdyYXBoaWNzQ29udGV4dDNEOjppc0dMRVMyQ29tcGxp
YW50KCkgY29uc3QKIHsKKyNpZiBVU0UoT1BFTkdMX0VTXzIpCisgICAgcmV0dXJuIHRydWU7Cisj
ZWxzZQogICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgogfQogCiAjaWYgVVNFKEFDQ0VMRVJBVEVE
X0NPTVBPU0lUSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5jcHAKaW5kZXgg
ZDg4MjQyZjk2N2E2ZDRiMTliNTExZjQ0NTY5YTMzM2ZhNGIyYTUzMC4uM2UwNTliNjZhYWVlMTg5
ZDY0Y2E0NTQ5ODlkODk4MGJjY2U3ZmI1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRFBy
aXZhdGUuY3BwCkBAIC0yNCwxMCArMjQsMTcgQEAKIAogI2luY2x1ZGUgIkhvc3RXaW5kb3cuaCIK
ICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgotI2luY2x1ZGUgIk9wZW5HTFNoaW1zLmgiCiAj
aW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0Q2Fpcm8uaCIKICNpbmNsdWRlIDx3dGYvT3duQXJyYXlQ
dHIuaD4KIAorI2lmIFVTRShPUEVOR0xfRVNfMikKKyNpbmNsdWRlICJPcGVuR0xFU1NoaW1zLmgi
CisjaW5jbHVkZSA8R0xFUzIvZ2wyLmg+CisjaW5jbHVkZSA8R0xFUzIvZ2wyZXh0Lmg+CisjZWxz
ZQorI2luY2x1ZGUgIk9wZW5HTFNoaW1zLmgiCisjZW5kaWYKKwogI2lmIFVTRShBQ0NFTEVSQVRF
RF9DT01QT1NJVElORykgJiYgVVNFKFRFWFRVUkVfTUFQUEVSKSAmJiBVU0UoVEVYVFVSRV9NQVBQ
RVJfR0wpCiAjaW5jbHVkZSA8dGV4bWFwL1RleHR1cmVNYXBwZXJHTC5oPgogI2VuZGlmCkBAIC0x
MjUsNyArMTMyLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnBhaW50VG9UZXh0
dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIKICAgICAgICAgICAgIG1fY29u
dGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7CiAKICAgICAgICAgbV9jb250ZXh0LT5yZXNvbHZl
TXVsdGlzYW1wbGluZ0lmTmVjZXNzYXJ5KCk7Ci0gICAgICAgIGdsQmluZEZyYW1lYnVmZmVyKEdy
YXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9jb250ZXh0LT5tX2JvdW5kRkJPKTsKKyAg
ICAgICAgOjpnbEJpbmRGcmFtZWJ1ZmZlckVYVChHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZG
RVIsIG1fY29udGV4dC0+bV9ib3VuZEZCTyk7CiAKICAgICAgICAgaWYgKHByZXZpb3VzQWN0aXZl
Q29udGV4dCAmJiBwcmV2aW91c0FjdGl2ZUNvbnRleHQgIT0gbV9nbENvbnRleHQpCiAgICAgICAg
ICAgICBwcmV2aW91c0FjdGl2ZUNvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2x1dHRlci9HcmFwaGljc0Nv
bnRleHQzRENsdXR0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2x1
dHRlci9HcmFwaGljc0NvbnRleHQzRENsdXR0ZXIuY3BwCmluZGV4IGFiZmJkNDdlNmFlMzIyOTA4
OGEzODNiMDM0ZTZmOTE3ZTM0YzhiZWYuLjdkZjFlZTkyZGI1OTNiZjc3MDA4MTdkNTJhZDViODM1
OWYwNzlmYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Ns
dXR0ZXIvR3JhcGhpY3NDb250ZXh0M0RDbHV0dGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jbHV0dGVyL0dyYXBoaWNzQ29udGV4dDNEQ2x1dHRlci5jcHAKQEAg
LTU2LDExICs1Niw2IEBAIEdyYXBoaWNzQ29udGV4dDNEOjp+R3JhcGhpY3NDb250ZXh0M0QoKQog
ICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnJlbGVh
c2VTaGFkZXJDb21waWxlcigpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQogYm9vbCBH
cmFwaGljc0NvbnRleHQzRDo6Z2V0SW1hZ2VEYXRhKEltYWdlKiBpbWFnZSwgdW5zaWduZWQgaW50
IGZvcm1hdCwgdW5zaWduZWQgaW50IHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBp
Z25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZSwgVmVjdG9yPHVpbnQ4X3Q+JiBvdXRwdXRWZWN0b3Ip
CiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQzREVmbC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RFZmwuY3BwCmluZGV4
IDcyMWQ3YzdiZWE1NmUxODk5MGE0MTNmODE4NWYyYWZlN2Y2NTk5MzAuLmI1ZjE0MTU4NTRlMjU0
OGVhMzMyMGVkNmZkNWE0MzgzZmFjMmRmZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQzREVmbC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNERWZsLmNwcApA
QCAtNDc0LDExICs0NzQsNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpyZWFkUGl4ZWxzKEdD
M0RpbnQgeCwgR0MzRGludCB5LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaQogICAgIG1fcHJpdmF0
ZS0+cmVhZFBpeGVscyh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGRhdGEpOwog
fQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpyZWxlYXNlU2hhZGVyQ29tcGlsZXIoKQotewot
ICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnJlbmRl
cmJ1ZmZlclN0b3JhZ2UoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBpbnRlcm5hbGZvcm1hdCwg
R0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0KQogewogICAgIG1fcHJpdmF0ZS0+cmVu
ZGVyYnVmZmVyU3RvcmFnZSh0YXJnZXQsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRl
eHRFR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4
dEVHTC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOGNmYzBlY2Q2OTI1MjViZWVmYzAyNmUwY2U3N2RlY2UyYzMw
ZmQ1ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2VnbC9HTENvbnRleHRFR0wuY3BwCkBAIC0wLDAgKzEsMjk1IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEyIElnYWxpYSwgUy5MLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICog
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExl
c3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQ
dWJsaWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRl
IHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdMQ29udGV4dEVHTC5oIgorCisjaWYgVVNF
KEVHTCkKKworI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCisjaW5jbHVkZSA8d3RmL093
blB0ci5oPgorCisjaWYgVVNFKE9QRU5HTF9FU18yKQorI2luY2x1ZGUgPEdMRVMyL2dsMi5oPgor
I2luY2x1ZGUgPEdMRVMyL2dsMmV4dC5oPgorI2Vsc2UKKyNpbmNsdWRlICJPcGVuR0xTaGltcy5o
IgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIEVHTERpc3BsYXkgZ1No
YXJlZEVHTERpc3BsYXkgPSBFR0xfTk9fRElTUExBWTsKKworI2lmIFVTRShPUEVOR0xfRVNfMikK
K3N0YXRpYyBjb25zdCBFR0xlbnVtIGdHTEFQSSA9IEVHTF9PUEVOR0xfRVNfQVBJOworI2Vsc2UK
K3N0YXRpYyBjb25zdCBFR0xlbnVtIGdHTEFQSSA9IEVHTF9PUEVOR0xfQVBJOworI2VuZGlmCisK
K3N0YXRpYyBFR0xEaXNwbGF5IHNoYXJlZEVHTERpc3BsYXkoKQoreworICAgIHN0YXRpYyBib29s
IGluaXRpYWxpemVkID0gZmFsc2U7CisgICAgaWYgKCFpbml0aWFsaXplZCkgeworICAgICAgICBp
bml0aWFsaXplZCA9IHRydWU7CisjaWYgUExBVEZPUk0oWDExKQorICAgICAgICBnU2hhcmVkRUdM
RGlzcGxheSA9IGVnbEdldERpc3BsYXkoR0xDb250ZXh0OjpzaGFyZWRYMTFEaXNwbGF5KCkpOwor
I2Vsc2UKKyAgICAgICAgZ1NoYXJlZEVHTERpc3BsYXkgPSBlZ2xHZXREaXNwbGF5KEVHTF9ERUZB
VUxUX0RJU1BMQVkpOworI2VuZGlmCisgICAgICAgIGlmIChnU2hhcmVkRUdMRGlzcGxheSAhPSBF
R0xfTk9fRElTUExBWSAmJiAoIWVnbEluaXRpYWxpemUoZ1NoYXJlZEVHTERpc3BsYXksIDAsIDAp
IHx8ICFlZ2xCaW5kQVBJKGdHTEFQSSkpKQorICAgICAgICAgICAgZ1NoYXJlZEVHTERpc3BsYXkg
PSBFR0xfTk9fRElTUExBWTsKKyAgICB9CisgICAgcmV0dXJuIGdTaGFyZWRFR0xEaXNwbGF5Owor
fQorCit2b2lkIEdMQ29udGV4dEVHTDo6Y2xlYW51cFNoYXJlZEVHTERpc3BsYXkoKQoreworICAg
IGlmIChnU2hhcmVkRUdMRGlzcGxheSkKKyAgICAgICAgZ1NoYXJlZEVHTERpc3BsYXkgPSBFR0xf
Tk9fRElTUExBWTsKK30KKworCitzdGF0aWMgY29uc3QgRUdMaW50IGdDb250ZXh0QXR0cmlidXRl
c1tdID0geworI2lmIFVTRShPUEVOR0xfRVNfMikKKyAgICBFR0xfQ09OVEVYVF9DTElFTlRfVkVS
U0lPTiwgMiwKKyNlbmRpZgorICAgIEVHTF9OT05FCit9OworCit2b2lkIEdMQ29udGV4dEVHTDo6
YWRkQWN0aXZlQ29udGV4dChHTENvbnRleHRFR0wqIGNvbnRleHQpCit7CisgICAgc3RhdGljIGJv
b2wgYWRkZWRBdEV4aXRIYW5kbGVyID0gZmFsc2U7CisgICAgaWYgKCFhZGRlZEF0RXhpdEhhbmRs
ZXIpIHsKKyAgICAgICAgYXRleGl0KCZHTENvbnRleHRFR0w6OmNsZWFudXBTaGFyZWRFR0xEaXNw
bGF5KTsKKyAgICAgICAgYWRkZWRBdEV4aXRIYW5kbGVyID0gdHJ1ZTsKKyAgICB9CisgICAgR0xD
b250ZXh0OjphZGRBY3RpdmVDb250ZXh0KGNvbnRleHQpOworfQorCitzdGF0aWMgYm9vbCBnZXRF
R0xDb25maWcoRUdMQ29uZmlnKiBjb25maWcsIEdMQ29udGV4dEVHTDo6RUdMU3VyZmFjZVR5cGUg
c3VyZmFjZVR5cGUpCit7CisgICAgRUdMaW50IGF0dHJpYnV0ZUxpc3RbXSA9IHsKKyNpZiBVU0Uo
T1BFTkdMX0VTXzIpCisgICAgICAgIEVHTF9SRU5ERVJBQkxFX1RZUEUsIEVHTF9PUEVOR0xfRVMy
X0JJVCwKKyNlbHNlCisgICAgICAgIEVHTF9SRU5ERVJBQkxFX1RZUEUsIEVHTF9PUEVOR0xfQklU
LAorI2VuZGlmCisgICAgICAgIEVHTF9SRURfU0laRSwgOCwKKyAgICAgICAgRUdMX0dSRUVOX1NJ
WkUsIDgsCisgICAgICAgIEVHTF9CTFVFX1NJWkUsIDgsCisgICAgICAgIEVHTF9TVEVOQ0lMX1NJ
WkUsIDgsCisgICAgICAgIEVHTF9BTFBIQV9TSVpFLCA4LAorICAgICAgICBFR0xfU1VSRkFDRV9U
WVBFLCBFR0xfTk9ORSwKKyAgICAgICAgRUdMX05PTkUKKyAgICB9OworCisgICAgc3dpdGNoIChz
dXJmYWNlVHlwZSkgeworICAgIGNhc2UgR0xDb250ZXh0RUdMOjpQYnVmZmVyU3VyZmFjZToKKyAg
ICAgICAgYXR0cmlidXRlTGlzdFsxM10gPSBFR0xfUEJVRkZFUl9CSVQ7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgR0xDb250ZXh0RUdMOjpQaXhtYXBTdXJmYWNlOgorICAgICAgICBhdHRyaWJ1
dGVMaXN0WzEzXSA9IEVHTF9QSVhNQVBfQklUOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEdM
Q29udGV4dEVHTDo6V2luZG93U3VyZmFjZToKKyAgICAgICAgYXR0cmlidXRlTGlzdFsxM10gPSBF
R0xfV0lORE9XX0JJVDsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgRUdMaW50IG51bWJl
ckNvbmZpZ3NSZXR1cm5lZDsKKyAgICByZXR1cm4gZWdsQ2hvb3NlQ29uZmlnKHNoYXJlZEVHTERp
c3BsYXkoKSwgYXR0cmlidXRlTGlzdCwgY29uZmlnLCAxLCAmbnVtYmVyQ29uZmlnc1JldHVybmVk
KSAmJiBudW1iZXJDb25maWdzUmV0dXJuZWQ7Cit9CisKK1Bhc3NPd25QdHI8R0xDb250ZXh0RUdM
PiBHTENvbnRleHRFR0w6OmNyZWF0ZVdpbmRvd0NvbnRleHQoRUdMTmF0aXZlV2luZG93VHlwZSB3
aW5kb3csIEdMQ29udGV4dCogc2hhcmluZ0NvbnRleHQpCit7CisgICAgRUdMQ29udGV4dCBlZ2xT
aGFyaW5nQ29udGV4dCA9IHNoYXJpbmdDb250ZXh0ID8gc3RhdGljX2Nhc3Q8R0xDb250ZXh0RUdM
Kj4oc2hhcmluZ0NvbnRleHQpLT5tX2NvbnRleHQgOiAwOworCisgICAgRUdMRGlzcGxheSBkaXNw
bGF5ID0gc2hhcmVkRUdMRGlzcGxheSgpOworICAgIGlmIChkaXNwbGF5ID09IEVHTF9OT19ESVNQ
TEFZKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIEVHTENvbmZpZyBjb25maWc7Cisg
ICAgaWYgKCFnZXRFR0xDb25maWcoJmNvbmZpZywgV2luZG93U3VyZmFjZSkpCisgICAgICAgIHJl
dHVybiBudWxscHRyOworCisgICAgRUdMQ29udGV4dCBjb250ZXh0ID0gZWdsQ3JlYXRlQ29udGV4
dChkaXNwbGF5LCBjb25maWcsIGVnbFNoYXJpbmdDb250ZXh0LCBnQ29udGV4dEF0dHJpYnV0ZXMp
OworICAgIGlmIChjb250ZXh0ID09IEVHTF9OT19DT05URVhUKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKworICAgIEVHTFN1cmZhY2Ugc3VyZmFjZSA9IGVnbENyZWF0ZVdpbmRvd1N1cmZhY2Uo
ZGlzcGxheSwgY29uZmlnLCB3aW5kb3csIDApOworICAgIGlmIChzdXJmYWNlID09IEVHTF9OT19T
VVJGQUNFKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBhZG9wdFB0cihu
ZXcgR0xDb250ZXh0RUdMKGNvbnRleHQsIHN1cmZhY2UsIFdpbmRvd1N1cmZhY2UpKTsKK30KKwor
UGFzc093blB0cjxHTENvbnRleHRFR0w+IEdMQ29udGV4dEVHTDo6Y3JlYXRlUGJ1ZmZlckNvbnRl
eHQoRUdMQ29udGV4dCBzaGFyaW5nQ29udGV4dCkKK3sKKyAgICBFR0xEaXNwbGF5IGRpc3BsYXkg
PSBzaGFyZWRFR0xEaXNwbGF5KCk7CisgICAgaWYgKGRpc3BsYXkgPT0gRUdMX05PX0RJU1BMQVkp
CisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgRUdMQ29uZmlnIGNvbmZpZzsKKyAgICBp
ZiAoIWdldEVHTENvbmZpZygmY29uZmlnLCBQYnVmZmVyU3VyZmFjZSkpCisgICAgICAgIHJldHVy
biBudWxscHRyOworCisgICAgRUdMQ29udGV4dCBjb250ZXh0ID0gZWdsQ3JlYXRlQ29udGV4dChk
aXNwbGF5LCBjb25maWcsIHNoYXJpbmdDb250ZXh0LCBnQ29udGV4dEF0dHJpYnV0ZXMpOworICAg
IGlmIChjb250ZXh0ID09IEVHTF9OT19DT05URVhUKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KworICAgIHN0YXRpYyBjb25zdCBpbnQgcGJ1ZmZlckF0dHJpYnV0ZXNbXSA9IHsgRUdMX1dJRFRI
LCAxLCBFR0xfSEVJR0hULCAxLCBFR0xfTk9ORSB9OworICAgIEVHTFN1cmZhY2Ugc3VyZmFjZSA9
IGVnbENyZWF0ZVBidWZmZXJTdXJmYWNlKGRpc3BsYXksIGNvbmZpZywgcGJ1ZmZlckF0dHJpYnV0
ZXMpOworICAgIGlmIChzdXJmYWNlID09IEVHTF9OT19TVVJGQUNFKSB7CisgICAgICAgIGVnbERl
c3Ryb3lDb250ZXh0KGRpc3BsYXksIGNvbnRleHQpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICB9CisKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IEdMQ29udGV4dEVHTChjb250ZXh0LCBz
dXJmYWNlLCBQYnVmZmVyU3VyZmFjZSkpOworfQorCitQYXNzT3duUHRyPEdMQ29udGV4dEVHTD4g
R0xDb250ZXh0RUdMOjpjcmVhdGVQaXhtYXBDb250ZXh0KEVHTENvbnRleHQgc2hhcmluZ0NvbnRl
eHQpCit7CisjaWYgUExBVEZPUk0oWDExKQorICAgIEVHTERpc3BsYXkgZGlzcGxheSA9IHNoYXJl
ZEVHTERpc3BsYXkoKTsKKyAgICBpZiAoZGlzcGxheSA9PSBFR0xfTk9fRElTUExBWSkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBFR0xDb25maWcgY29uZmlnOworICAgIGlmICghZ2V0
RUdMQ29uZmlnKCZjb25maWcsIFBpeG1hcFN1cmZhY2UpKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKworICAgIEVHTENvbnRleHQgY29udGV4dCA9IGVnbENyZWF0ZUNvbnRleHQoZGlzcGxheSwg
Y29uZmlnLCBzaGFyaW5nQ29udGV4dCwgZ0NvbnRleHRBdHRyaWJ1dGVzKTsKKyAgICBpZiAoY29u
dGV4dCA9PSBFR0xfTk9fQ09OVEVYVCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBF
R0xpbnQgZGVwdGg7CisgICAgaWYgKCFlZ2xHZXRDb25maWdBdHRyaWIoZGlzcGxheSwgY29uZmln
LCBFR0xfREVQVEhfU0laRSwgJmRlcHRoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAg
ICBQaXhtYXAgcGl4bWFwID0gWENyZWF0ZVBpeG1hcChzaGFyZWRYMTFEaXNwbGF5KCksIERlZmF1
bHRSb290V2luZG93KHNoYXJlZFgxMURpc3BsYXkoKSksIDEsIDEsIGRlcHRoKTsKKyAgICBpZiAo
IXBpeG1hcCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBFR0xTdXJmYWNlIHN1cmZh
Y2UgPSBlZ2xDcmVhdGVQaXhtYXBTdXJmYWNlKGRpc3BsYXksIGNvbmZpZywgcGl4bWFwLCAwKTsK
KyNlbHNlCisgICAgRUdMU3VyZmFjZSBzdXJmYWNlID0gRUdMX05PX1NVUkZBQ0U7CisjZW5kaWYK
KyAgICBpZiAoc3VyZmFjZSA9PSBFR0xfTk9fU1VSRkFDRSkKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IEdMQ29udGV4dEVHTChjb250ZXh0LCBzdXJm
YWNlLCBQaXhtYXBTdXJmYWNlKSk7Cit9CisKK1Bhc3NPd25QdHI8R0xDb250ZXh0RUdMPiBHTENv
bnRleHRFR0w6OmNyZWF0ZUNvbnRleHQoRUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3csIEdMQ29u
dGV4dCogc2hhcmluZ0NvbnRleHQpCit7CisgICAgaWYgKCFzaGFyZWRFR0xEaXNwbGF5KCkpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQgPSBm
YWxzZTsKKyAgICBzdGF0aWMgYm9vbCBzdWNjZXNzID0gdHJ1ZTsKKyAgICBpZiAoIWluaXRpYWxp
emVkKSB7CisjaWYgIVVTRShPUEVOR0xfRVNfMikKKyAgICAgICAgc3VjY2VzcyA9IGluaXRpYWxp
emVPcGVuR0xTaGltcygpOworI2VuZGlmCisgICAgICAgIGluaXRpYWxpemVkID0gdHJ1ZTsKKyAg
ICB9CisgICAgaWYgKCFzdWNjZXNzKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIEVH
TENvbnRleHQgZWdsU2hhcmluZ0NvbnRleHQgPSBzaGFyaW5nQ29udGV4dCA/IHN0YXRpY19jYXN0
PEdMQ29udGV4dEVHTCo+KHNoYXJpbmdDb250ZXh0KS0+bV9jb250ZXh0IDogMDsKKyAgICBPd25Q
dHI8R0xDb250ZXh0RUdMPiBjb250ZXh0ID0gd2luZG93ID8gY3JlYXRlV2luZG93Q29udGV4dCh3
aW5kb3csIHNoYXJpbmdDb250ZXh0KSA6IG51bGxwdHI7CisgICAgaWYgKCFjb250ZXh0KQorICAg
ICAgICBjb250ZXh0ID0gY3JlYXRlUGl4bWFwQ29udGV4dChlZ2xTaGFyaW5nQ29udGV4dCk7CisK
KyAgICBpZiAoIWNvbnRleHQpCisgICAgICAgIGNvbnRleHQgPSBjcmVhdGVQYnVmZmVyQ29udGV4
dChlZ2xTaGFyaW5nQ29udGV4dCk7CisgICAgCisgICAgcmV0dXJuIGNvbnRleHQucmVsZWFzZSgp
OworfQorCitHTENvbnRleHRFR0w6OkdMQ29udGV4dEVHTChFR0xDb250ZXh0IGNvbnRleHQsIEVH
TFN1cmZhY2Ugc3VyZmFjZSwgRUdMU3VyZmFjZVR5cGUgdHlwZSkKKyAgICA6IG1fY29udGV4dChj
b250ZXh0KQorICAgICwgbV9zdXJmYWNlKHN1cmZhY2UpCisgICAgLCBtX3R5cGUodHlwZSkKK3sK
KyAgICBhZGRBY3RpdmVDb250ZXh0KHRoaXMpOworfQorCitHTENvbnRleHRFR0w6On5HTENvbnRl
eHRFR0woKQoreworICAgIEVHTERpc3BsYXkgZGlzcGxheSA9IHNoYXJlZEVHTERpc3BsYXkoKTsK
KyAgICBpZiAobV9jb250ZXh0KSB7CisgICAgICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1F
QlVGRkVSLCAwKTsKKyAgICAgICAgZWdsTWFrZUN1cnJlbnQoZGlzcGxheSwgRUdMX05PX1NVUkZB
Q0UsIEVHTF9OT19TVVJGQUNFLCBFR0xfTk9fQ09OVEVYVCk7CisgICAgICAgIGVnbERlc3Ryb3lD
b250ZXh0KGRpc3BsYXksIG1fY29udGV4dCk7CisgICAgfQorCisgICAgaWYgKG1fc3VyZmFjZSkK
KyAgICAgICAgZWdsRGVzdHJveVN1cmZhY2UoZGlzcGxheSwgbV9zdXJmYWNlKTsKKyAgICByZW1v
dmVBY3RpdmVDb250ZXh0KHRoaXMpOworfQorCitib29sIEdMQ29udGV4dEVHTDo6Y2FuUmVuZGVy
VG9EZWZhdWx0RnJhbWVidWZmZXIoKQoreworICAgIHJldHVybiBtX3R5cGUgPT0gV2luZG93U3Vy
ZmFjZTsKK30KKworSW50U2l6ZSBHTENvbnRleHRFR0w6OmRlZmF1bHRGcmFtZUJ1ZmZlclNpemUo
KQoreworICAgIGlmICghY2FuUmVuZGVyVG9EZWZhdWx0RnJhbWVidWZmZXIoKSkKKyAgICAgICAg
cmV0dXJuIEludFNpemUoKTsKKworICAgIEVHTGludCB3aWR0aCwgaGVpZ2h0OworICAgIGlmICgh
ZWdsUXVlcnlTdXJmYWNlKHNoYXJlZEVHTERpc3BsYXkoKSwgbV9zdXJmYWNlLCBFR0xfV0lEVEgs
ICZ3aWR0aCkKKyAgICAgICAgfHwgIWVnbFF1ZXJ5U3VyZmFjZShzaGFyZWRFR0xEaXNwbGF5KCks
IG1fc3VyZmFjZSwgRUdMX0hFSUdIVCwgJmhlaWdodCkpCisgICAgICAgIHJldHVybiBJbnRTaXpl
KCk7CisKKyAgICByZXR1cm4gSW50U2l6ZSh3aWR0aCwgaGVpZ2h0KTsKK30KKworYm9vbCBHTENv
bnRleHRFR0w6Om1ha2VDb250ZXh0Q3VycmVudCgpCit7CisgICAgQVNTRVJUKG1fY29udGV4dCAm
JiBtX3N1cmZhY2UpOworCisgICAgR0xDb250ZXh0OjptYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAg
ICBpZiAoZWdsR2V0Q3VycmVudENvbnRleHQoKSA9PSBtX2NvbnRleHQpCisgICAgICAgIHJldHVy
biB0cnVlOworCisgICAgcmV0dXJuIGVnbE1ha2VDdXJyZW50KHNoYXJlZEVHTERpc3BsYXkoKSwg
bV9zdXJmYWNlLCBtX3N1cmZhY2UsIG1fY29udGV4dCk7Cit9CisKK3ZvaWQgR0xDb250ZXh0RUdM
Ojpzd2FwQnVmZmVycygpCit7CisgICAgQVNTRVJUKG1fc3VyZmFjZSk7CisgICAgZWdsU3dhcEJ1
ZmZlcnMoc2hhcmVkRUdMRGlzcGxheSgpLCBtX3N1cmZhY2UpOworfQorCit2b2lkIEdMQ29udGV4
dEVHTDo6d2FpdE5hdGl2ZSgpCit7CisgICAgZWdsV2FpdE5hdGl2ZShFR0xfQ09SRV9OQVRJVkVf
RU5HSU5FKTsKK30KKworI2lmIEVOQUJMRShXRUJHTCkKK1BsYXRmb3JtR3JhcGhpY3NDb250ZXh0
M0QgR0xDb250ZXh0RUdMOjpwbGF0Zm9ybUNvbnRleHQoKQoreworICAgIHJldHVybiBtX2NvbnRl
eHQ7Cit9CisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVVNF
KEVHTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9H
TENvbnRleHRFR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENv
bnRleHRFR0wuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNWQ0YmY3NTYxNWM3YjcyMzhmYTFhZDJjYjk2YTIyMzlh
NTUyOTJmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZWdsL0dMQ29udGV4dEVHTC5oCkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgSWdhbGlhIFMuTC4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNz
ZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVi
bGljCisgKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0
byB0aGUgRnJlZQorICogIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsCisgKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQQorICovCisK
KyNpZm5kZWYgR0xDb250ZXh0RUdMX2gKKyNkZWZpbmUgR0xDb250ZXh0RUdMX2gKKworI2lmIFVT
RShFR0wpCisKKyNpbmNsdWRlICJHTENvbnRleHQuaCIKKworI2luY2x1ZGUgPEVHTC9lZ2wuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBHTENvbnRleHRFR0wgOiBwdWJsaWMgR0xD
b250ZXh0IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShHTENvbnRleHRFR0wpOworcHVibGlj
OgorICAgIGVudW0gRUdMU3VyZmFjZVR5cGUgeyBQYnVmZmVyU3VyZmFjZSwgV2luZG93U3VyZmFj
ZSwgUGl4bWFwU3VyZmFjZSB9OworICAgIHN0YXRpYyBQYXNzT3duUHRyPEdMQ29udGV4dEVHTD4g
Y3JlYXRlQ29udGV4dChFR0xOYXRpdmVXaW5kb3dUeXBlLCBHTENvbnRleHQqIHNoYXJpbmdDb250
ZXh0ID0gMCk7CisgICAgc3RhdGljIFBhc3NPd25QdHI8R0xDb250ZXh0RUdMPiBjcmVhdGVXaW5k
b3dDb250ZXh0KEVHTE5hdGl2ZVdpbmRvd1R5cGUsIEdMQ29udGV4dCogc2hhcmluZ0NvbnRleHQp
OworCisgICAgdmlydHVhbCB+R0xDb250ZXh0RUdMKCk7CisgICAgdmlydHVhbCBib29sIG1ha2VD
b250ZXh0Q3VycmVudCgpOworICAgIHZpcnR1YWwgdm9pZCBzd2FwQnVmZmVycygpOworICAgIHZp
cnR1YWwgdm9pZCB3YWl0TmF0aXZlKCk7CisgICAgdmlydHVhbCBib29sIGNhblJlbmRlclRvRGVm
YXVsdEZyYW1lYnVmZmVyKCk7CisgICAgdmlydHVhbCBJbnRTaXplIGRlZmF1bHRGcmFtZUJ1ZmZl
clNpemUoKTsKKworCisjaWYgRU5BQkxFKFdFQkdMKQorICAgIHZpcnR1YWwgUGxhdGZvcm1HcmFw
aGljc0NvbnRleHQzRCBwbGF0Zm9ybUNvbnRleHQoKTsKKyNlbmRpZgorCitwcml2YXRlOgorICAg
IHN0YXRpYyBQYXNzT3duUHRyPEdMQ29udGV4dEVHTD4gY3JlYXRlUGJ1ZmZlckNvbnRleHQoRUdM
Q29udGV4dCBzaGFyaW5nQ29udGV4dCk7CisgICAgc3RhdGljIFBhc3NPd25QdHI8R0xDb250ZXh0
RUdMPiBjcmVhdGVQaXhtYXBDb250ZXh0KEVHTENvbnRleHQgc2hhcmluZ0NvbnRleHQpOworCisg
ICAgc3RhdGljIHZvaWQgYWRkQWN0aXZlQ29udGV4dChHTENvbnRleHRFR0wqKTsKKyAgICBzdGF0
aWMgdm9pZCBjbGVhbnVwU2hhcmVkRUdMRGlzcGxheSh2b2lkKTsKKworICAgIEdMQ29udGV4dEVH
TChFR0xDb250ZXh0LCBFR0xTdXJmYWNlLCBFR0xTdXJmYWNlVHlwZSk7CisKKyAgICBFR0xDb250
ZXh0IG1fY29udGV4dDsKKyAgICBFR0xTdXJmYWNlIG1fc3VyZmFjZTsKKyAgICBFR0xTdXJmYWNl
VHlwZSBtX3R5cGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBV
U0UoRUdMKQorCisjZW5kaWYgLy8gR0xDb250ZXh0RUdMX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dseC9HTENvbnRleHRHTFguY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dMQ29udGV4dEdMWC5jcHAKaW5kZXggOTU0MGI4
NmEwYmFmNDQ2YmZiNmY2OWQwYmQ2ODY5MjdmNWU3OTIxMy4uMDliNjMwNzc0Yjk5ZjRmYmUwZTA1
M2NhYWU5NDhiMDE5YzJjMjllOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ2x4L0dMQ29udGV4dEdMWC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ2x4L0dMQ29udGV4dEdMWC5jcHAKQEAgLTI3LDcxICsyNyw5IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gV2UgZG8gbm90IHdhbnQgdG8gY2FsbCBnbFhNYWtlQ29u
dGV4dEN1cnJlbnQgdXNpbmcgZGlmZmVyZW50IERpc3BsYXkgcG9pbnRlcnMsCi0vLyBiZWNhdXNl
IGl0IG1pZ2h0IGxlYWQgdG8gY3Jhc2hlcyBpbiBzb21lIGRyaXZlcnMgKGZnbHJ4KS4gV2UgdXNl
IGEgc2hhcmVkIGRpc3BsYXkKLS8vIHBvaW50ZXIgaGVyZS4KLXN0YXRpYyBEaXNwbGF5KiBnU2hh
cmVkRGlzcGxheSA9IDA7Ci1EaXNwbGF5KiBHTENvbnRleHRHTFg6OnNoYXJlZERpc3BsYXkoKQot
ewotICAgIGlmICghZ1NoYXJlZERpc3BsYXkpCi0gICAgICAgIGdTaGFyZWREaXNwbGF5ID0gWE9w
ZW5EaXNwbGF5KDApOwotICAgIHJldHVybiBnU2hhcmVkRGlzcGxheTsKLX0KLQotLy8gQmVjYXVz
ZSBvZiBkcml2ZXIgYnVncywgZXhpdGluZyB0aGUgcHJvZ3JhbSB3aGVuIHRoZXJlIGFyZSBhY3Rp
dmUgcGJ1ZmZlcnMKLS8vIGNhbiBjcmFzaCB0aGUgWCBzZXJ2ZXIgKHRoaXMgaGFzIGJlZW4gb2Jz
ZXJ2ZWQgd2l0aCB0aGUgb2ZmaWNpYWwgTnZpZGlhIGRyaXZlcnMpLgotLy8gV2UgbmVlZCB0byBl
bnN1cmUgdGhhdCB3ZSBjbGVhbiBldmVyeXRoaW5nIHVwIG9uIGV4aXQuIFRoZXJlIGFyZSBzZXZl
cmFsIHJlYXNvbnMKLS8vIHRoYXQgR3JhcGhpY3NDb250ZXh0M0RzIHdpbGwgc3RpbGwgYmUgYWxp
dmUgYXQgZXhpdCwgaW5jbHVkaW5nIHVzZXIgZXJyb3IgKG1lbW9yeQotLy8gbGVha3MpIGFuZCB0
aGUgcGFnZSBjYWNoZS4gSW4gYW55IGNhc2UsIHdlIGRvbid0IHdhbnQgdGhlIFggc2VydmVyIHRv
IGNyYXNoLgotdHlwZWRlZiBWZWN0b3I8R0xDb250ZXh0Kj4gQWN0aXZlQ29udGV4dExpc3Q7Ci1z
dGF0aWMgQWN0aXZlQ29udGV4dExpc3QmIGFjdGl2ZUNvbnRleHRMaXN0KCkKLXsKLSAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKEFjdGl2ZUNvbnRleHRMaXN0LCBhY3RpdmVDb250ZXh0cywgKCkpOwot
ICAgIHJldHVybiBhY3RpdmVDb250ZXh0czsKLX0KLQotdm9pZCBHTENvbnRleHRHTFg6OmFkZEFj
dGl2ZUNvbnRleHQoR0xDb250ZXh0R0xYKiBjb250ZXh0KQotewotICAgIHN0YXRpYyBib29sIGFk
ZGVkQXRFeGl0SGFuZGxlciA9IGZhbHNlOwotICAgIGlmICghYWRkZWRBdEV4aXRIYW5kbGVyKSB7
Ci0gICAgICAgIGF0ZXhpdCgmR0xDb250ZXh0R0xYOjpjbGVhbnVwQWN0aXZlQ29udGV4dHNBdEV4
aXQpOwotICAgICAgICBhZGRlZEF0RXhpdEhhbmRsZXIgPSB0cnVlOwotICAgIH0KLSAgICBhY3Rp
dmVDb250ZXh0TGlzdCgpLmFwcGVuZChjb250ZXh0KTsKLX0KLQotc3RhdGljIGJvb2wgZ0NsZWFu
aW5nVXBBdEV4aXQgPSBmYWxzZTsKLQotdm9pZCBHTENvbnRleHRHTFg6OnJlbW92ZUFjdGl2ZUNv
bnRleHQoR0xDb250ZXh0KiBjb250ZXh0KQotewotICAgIC8vIElmIHdlIGFyZSBjbGVhbmluZyB1
cCB0aGUgY29udGV4dCBsaXN0IGF0IGV4aXQsIGRvbid0IGJvdGhlciByZW1vdmluZyB0aGUgY29u
dGV4dAotICAgIC8vIGZyb20gdGhlIGxpc3QsIHNpbmNlIHdlIGRvbid0IHdhbnQgdG8gbW9kaWZ5
IHRoZSBsaXN0IHdoaWxlIGl0J3MgYmVpbmcgaXRlcmF0ZWQuCi0gICAgaWYgKGdDbGVhbmluZ1Vw
QXRFeGl0KQotICAgICAgICByZXR1cm47Ci0KLSAgICBBY3RpdmVDb250ZXh0TGlzdCYgY29udGV4
dExpc3QgPSBhY3RpdmVDb250ZXh0TGlzdCgpOwotICAgIHNpemVfdCBpID0gY29udGV4dExpc3Qu
ZmluZChjb250ZXh0KTsKLSAgICBpZiAoaSAhPSBub3RGb3VuZCkKLSAgICAgICAgY29udGV4dExp
c3QucmVtb3ZlKGkpOwotfQotCi12b2lkIEdMQ29udGV4dEdMWDo6Y2xlYW51cEFjdGl2ZUNvbnRl
eHRzQXRFeGl0KCkKLXsKLSAgICBnQ2xlYW5pbmdVcEF0RXhpdCA9IHRydWU7Ci0KLSAgICBBY3Rp
dmVDb250ZXh0TGlzdCYgY29udGV4dExpc3QgPSBhY3RpdmVDb250ZXh0TGlzdCgpOwotICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgY29udGV4dExpc3Quc2l6ZSgpOyArK2kpCi0gICAgICAgIGRl
bGV0ZSBjb250ZXh0TGlzdFtpXTsKLQotICAgIGlmICghZ1NoYXJlZERpc3BsYXkpCi0gICAgICAg
IHJldHVybjsKLSAgICBYQ2xvc2VEaXNwbGF5KGdTaGFyZWREaXNwbGF5KTsKLSAgICBnU2hhcmVk
RGlzcGxheSA9IDA7Ci19Ci0KIFBhc3NPd25QdHI8R0xDb250ZXh0R0xYPiBHTENvbnRleHRHTFg6
OmNyZWF0ZVdpbmRvd0NvbnRleHQoWElEIHdpbmRvdywgR0xDb250ZXh0KiBzaGFyaW5nQ29udGV4
dCkKIHsKLSAgICBEaXNwbGF5KiBkaXNwbGF5ID0gc2hhcmVkRGlzcGxheSgpOworICAgIERpc3Bs
YXkqIGRpc3BsYXkgPSBzaGFyZWRYMTFEaXNwbGF5KCk7CiAgICAgWFdpbmRvd0F0dHJpYnV0ZXMg
YXR0cmlidXRlczsKICAgICBpZiAoIVhHZXRXaW5kb3dBdHRyaWJ1dGVzKGRpc3BsYXksIHdpbmRv
dywgJmF0dHJpYnV0ZXMpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTEzMCw3ICs2OCw3
IEBAIFBhc3NPd25QdHI8R0xDb250ZXh0R0xYPiBHTENvbnRleHRHTFg6OmNyZWF0ZVBidWZmZXJD
b250ZXh0KEdMWENvbnRleHQgc2hhcmluZ0NvCiAgICAgfTsKIAogICAgIGludCByZXR1cm5lZEVs
ZW1lbnRzOwotICAgIERpc3BsYXkqIGRpc3BsYXkgPSBzaGFyZWREaXNwbGF5KCk7CisgICAgRGlz
cGxheSogZGlzcGxheSA9IHNoYXJlZFgxMURpc3BsYXkoKTsKICAgICBHTFhGQkNvbmZpZyogY29u
ZmlncyA9IGdsWENob29zZUZCQ29uZmlnKGRpc3BsYXksIDAsIGZiQ29uZmlnQXR0cmlidXRlcywg
JnJldHVybmVkRWxlbWVudHMpOwogICAgIGlmICghcmV0dXJuZWRFbGVtZW50cykgewogICAgICAg
ICBYRnJlZShjb25maWdzKTsKQEAgLTE3MCw3ICsxMDgsNyBAQCBQYXNzT3duUHRyPEdMQ29udGV4
dEdMWD4gR0xDb250ZXh0R0xYOjpjcmVhdGVQaXhtYXBDb250ZXh0KEdMWENvbnRleHQgc2hhcmlu
Z0NvbgogICAgICAgICAwCiAgICAgfTsKIAotICAgIERpc3BsYXkqIGRpc3BsYXkgPSBzaGFyZWRE
aXNwbGF5KCk7CisgICAgRGlzcGxheSogZGlzcGxheSA9IHNoYXJlZFgxMURpc3BsYXkoKTsKICAg
ICBYVmlzdWFsSW5mbyogdmlzdWFsSW5mbyA9IGdsWENob29zZVZpc3VhbChkaXNwbGF5LCBEZWZh
dWx0U2NyZWVuKGRpc3BsYXkpLCB2aXN1YWxBdHRyaWJ1dGVzKTsKICAgICBpZiAoIXZpc3VhbElu
Zm8pCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjAwLDcgKzEzOCw3IEBAIFBhc3NPd25Q
dHI8R0xDb250ZXh0R0xYPiBHTENvbnRleHRHTFg6OmNyZWF0ZVBpeG1hcENvbnRleHQoR0xYQ29u
dGV4dCBzaGFyaW5nQ29uCiAKIFBhc3NPd25QdHI8R0xDb250ZXh0R0xYPiBHTENvbnRleHRHTFg6
OmNyZWF0ZUNvbnRleHQoWElEIHdpbmRvdywgR0xDb250ZXh0KiBzaGFyaW5nQ29udGV4dCkKIHsK
LSAgICBpZiAoIXNoYXJlZERpc3BsYXkoKSkKKyAgICBpZiAoIXNoYXJlZFgxMURpc3BsYXkoKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZCA9
IGZhbHNlOwpAQCAtMjUwLDIwICsxODgsMjAgQEAgR0xDb250ZXh0R0xYOjp+R0xDb250ZXh0R0xY
KCkKICAgICAgICAgLy8gVGhpcyBtYXkgYmUgbmVjZXNzYXJ5IHRvIHByZXZlbnQgY3Jhc2hlcyB3
aXRoIE5WaWRpYSdzIGNsb3NlZCBzb3VyY2UgZHJpdmVycy4gT3JpZ2luYWxseQogICAgICAgICAv
LyBmcm9tIE1vemlsbGEncyAzRCBjYW52YXMgaW1wbGVtZW50YXRpb24gYXQ6IGh0dHA6Ly9iaXRi
dWNrZXQub3JnL2lsbWFyaS9jYW52YXMzZC8KICAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXJFWFQo
R0xfRlJBTUVCVUZGRVJfRVhULCAwKTsKLSAgICAgICAgZ2xYTWFrZUN1cnJlbnQoc2hhcmVkRGlz
cGxheSgpLCBOb25lLCBOb25lKTsKLSAgICAgICAgZ2xYRGVzdHJveUNvbnRleHQoc2hhcmVkRGlz
cGxheSgpLCBtX2NvbnRleHQpOworICAgICAgICBnbFhNYWtlQ3VycmVudChzaGFyZWRYMTFEaXNw
bGF5KCksIE5vbmUsIE5vbmUpOworICAgICAgICBnbFhEZXN0cm95Q29udGV4dChzaGFyZWRYMTFE
aXNwbGF5KCksIG1fY29udGV4dCk7CiAgICAgfQogCiAgICAgaWYgKG1fcGJ1ZmZlcikgewotICAg
ICAgICBnbFhEZXN0cm95UGJ1ZmZlcihzaGFyZWREaXNwbGF5KCksIG1fcGJ1ZmZlcik7CisgICAg
ICAgIGdsWERlc3Ryb3lQYnVmZmVyKHNoYXJlZFgxMURpc3BsYXkoKSwgbV9wYnVmZmVyKTsKICAg
ICAgICAgbV9wYnVmZmVyID0gMDsKICAgICB9CiAgICAgaWYgKG1fZ2x4UGl4bWFwKSB7Ci0gICAg
ICAgIGdsWERlc3Ryb3lHTFhQaXhtYXAoc2hhcmVkRGlzcGxheSgpLCBtX2dseFBpeG1hcCk7Cisg
ICAgICAgIGdsWERlc3Ryb3lHTFhQaXhtYXAoc2hhcmVkWDExRGlzcGxheSgpLCBtX2dseFBpeG1h
cCk7CiAgICAgICAgIG1fZ2x4UGl4bWFwID0gMDsKICAgICB9CiAgICAgaWYgKG1fcGl4bWFwKSB7
Ci0gICAgICAgIFhGcmVlUGl4bWFwKHNoYXJlZERpc3BsYXkoKSwgbV9waXhtYXApOworICAgICAg
ICBYRnJlZVBpeG1hcChzaGFyZWRYMTFEaXNwbGF5KCksIG1fcGl4bWFwKTsKICAgICAgICAgbV9w
aXhtYXAgPSAwOwogICAgIH0KICAgICByZW1vdmVBY3RpdmVDb250ZXh0KHRoaXMpOwpAQCAtMjgy
LDcgKzIyMCw3IEBAIEludFNpemUgR0xDb250ZXh0R0xYOjpkZWZhdWx0RnJhbWVCdWZmZXJTaXpl
KCkKICAgICBpbnQgeCwgeTsKICAgICBXaW5kb3cgcm9vdFdpbmRvdzsKICAgICB1bnNpZ25lZCBp
bnQgd2lkdGgsIGhlaWdodCwgYm9yZGVyV2lkdGgsIGRlcHRoOwotICAgIGlmICghWEdldEdlb21l
dHJ5KHNoYXJlZERpc3BsYXkoKSwgbV93aW5kb3csICZyb290V2luZG93LCAmeCwgJnksICZ3aWR0
aCwgJmhlaWdodCwgJmJvcmRlcldpZHRoLCAmZGVwdGgpKQorICAgIGlmICghWEdldEdlb21ldHJ5
KHNoYXJlZFgxMURpc3BsYXkoKSwgbV93aW5kb3csICZyb290V2luZG93LCAmeCwgJnksICZ3aWR0
aCwgJmhlaWdodCwgJmJvcmRlcldpZHRoLCAmZGVwdGgpKQogICAgICAgICByZXR1cm4gSW50U2l6
ZSgpOwogCiAgICAgcmV0dXJuIEludFNpemUod2lkdGgsIGhlaWdodCk7CkBAIC0yOTcsMTggKzIz
NSwyMyBAQCBib29sIEdMQ29udGV4dEdMWDo6bWFrZUNvbnRleHRDdXJyZW50KCkKICAgICAgICAg
cmV0dXJuIHRydWU7CiAKICAgICBpZiAobV93aW5kb3cpCi0gICAgICAgIHJldHVybiBnbFhNYWtl
Q3VycmVudChzaGFyZWREaXNwbGF5KCksIG1fd2luZG93LCBtX2NvbnRleHQpOworICAgICAgICBy
ZXR1cm4gZ2xYTWFrZUN1cnJlbnQoc2hhcmVkWDExRGlzcGxheSgpLCBtX3dpbmRvdywgbV9jb250
ZXh0KTsKIAogICAgIGlmIChtX3BidWZmZXIpCi0gICAgICAgIHJldHVybiBnbFhNYWtlQ3VycmVu
dChzaGFyZWREaXNwbGF5KCksIG1fcGJ1ZmZlciwgbV9jb250ZXh0KTsKKyAgICAgICAgcmV0dXJu
IGdsWE1ha2VDdXJyZW50KHNoYXJlZFgxMURpc3BsYXkoKSwgbV9wYnVmZmVyLCBtX2NvbnRleHQp
OwogCi0gICAgcmV0dXJuIDo6Z2xYTWFrZUN1cnJlbnQoc2hhcmVkRGlzcGxheSgpLCBtX2dseFBp
eG1hcCwgbV9jb250ZXh0KTsKKyAgICByZXR1cm4gOjpnbFhNYWtlQ3VycmVudChzaGFyZWRYMTFE
aXNwbGF5KCksIG1fZ2x4UGl4bWFwLCBtX2NvbnRleHQpOwogfQogCiB2b2lkIEdMQ29udGV4dEdM
WDo6c3dhcEJ1ZmZlcnMoKQogewogICAgIGlmIChtX3dpbmRvdykKLSAgICAgICAgZ2xYU3dhcEJ1
ZmZlcnMoc2hhcmVkRGlzcGxheSgpLCBtX3dpbmRvdyk7CisgICAgICAgIGdsWFN3YXBCdWZmZXJz
KHNoYXJlZFgxMURpc3BsYXkoKSwgbV93aW5kb3cpOworfQorCit2b2lkIEdMQ29udGV4dEdMWDo6
d2FpdE5hdGl2ZSgpCit7CisgICAgZ2xYV2FpdFgoKTsKIH0KIAogI2lmIFVTRSgzRF9HUkFQSElD
UykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dseC9HTENv
bnRleHRHTFguaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dseC9HTENvbnRl
eHRHTFguaAppbmRleCBiM2IxOGMxNTZjYzMxY2RjNmIxMzJkYTA3ZTEyZmUyZTczMjhkZTZiLi4w
MGY1NmU3OTFhNmE2ZTZkYTFhYTNlZjc3OWMxYTFjYWM0MTFiYWZiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nbHgvR0xDb250ZXh0R0xYLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dMQ29udGV4dEdMWC5oCkBAIC0yNSw3
ICsyNSw2IEBACiAjaW5jbHVkZSAiR0xDb250ZXh0LmgiCiAKIHR5cGVkZWYgc3RydWN0IF9fR0xY
Y29udGV4dFJlYyogR0xYQ29udGV4dDsKLXR5cGVkZWYgc3RydWN0IF9YRGlzcGxheSBEaXNwbGF5
OwogdHlwZWRlZiBzdHJ1Y3QgX19HTFhjb250ZXh0UmVjICpHTFhDb250ZXh0OwogdHlwZWRlZiB1
bnNpZ25lZCBsb25nIEdMWFBidWZmZXI7CiB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgR0xYUGl4bWFw
OwpAQCAtNDUsMTEgKzQ0LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5HTENvbnRleHRHTFgo
KTsKICAgICB2aXJ0dWFsIGJvb2wgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgdmlydHVhbCB2
b2lkIHN3YXBCdWZmZXJzKCk7CisgICAgdmlydHVhbCB2b2lkIHdhaXROYXRpdmUoKTsKICAgICB2
aXJ0dWFsIGJvb2wgY2FuUmVuZGVyVG9EZWZhdWx0RnJhbWVidWZmZXIoKTsKICAgICB2aXJ0dWFs
IEludFNpemUgZGVmYXVsdEZyYW1lQnVmZmVyU2l6ZSgpOwogCi0gICAgc3RhdGljIERpc3BsYXkq
IHNoYXJlZERpc3BsYXkoKTsKLQogI2lmIFVTRSgzRF9HUkFQSElDUykKICAgICB2aXJ0dWFsIFBs
YXRmb3JtR3JhcGhpY3NDb250ZXh0M0QgcGxhdGZvcm1Db250ZXh0KCk7CiAjZW5kaWYKQEAgLTU3
LDEwICs1NSw2IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8R0xD
b250ZXh0R0xYPiBjcmVhdGVQYnVmZmVyQ29udGV4dChHTFhDb250ZXh0IHNoYXJpbmdDb250ZXh0
KTsKICAgICBzdGF0aWMgUGFzc093blB0cjxHTENvbnRleHRHTFg+IGNyZWF0ZVBpeG1hcENvbnRl
eHQoR0xYQ29udGV4dCBzaGFyaW5nQ29udGV4dCk7Ci0gICAgc3RhdGljIHZvaWQgcmVtb3ZlQWN0
aXZlQ29udGV4dChHTENvbnRleHQqKTsKLQotICAgIHN0YXRpYyB2b2lkIGFkZEFjdGl2ZUNvbnRl
eHQoR0xDb250ZXh0R0xYKik7Ci0gICAgc3RhdGljIHZvaWQgY2xlYW51cEFjdGl2ZUNvbnRleHRz
QXRFeGl0KCk7CiAKICAgICBHTENvbnRleHRHTFgoR0xYQ29udGV4dCk7CiAgICAgR0xDb250ZXh0
R0xYKEdMWENvbnRleHQsIFBpeG1hcCwgR0xYUGl4bWFwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0NvbnRleHQzRE1hYy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0NvbnRleHQzRE1hYy5t
bQppbmRleCA2OGY0ZjI0Mzc2MmNmMTA2NzYzOTgxNWNjZjExZTg2NWQxNjRjMWU2Li44MjUzODc3
OWM1MjAwMTQyNDI2ZjUwZDQ4OWRkYWRkNWM2OWZlMzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0M0RNYWMubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29udGV4dDNETWFj
Lm1tCkBAIC0yNzcsMTIgKzI3Nyw2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnNldEVycm9y
TWVzc2FnZUNhbGxiYWNrKFBhc3NPd25QdHI8RXJyb3JNZXNzYWdlQ2FsbGJhY2s+CiB7CiB9CiAK
LXZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnJlbGVhc2VTaGFkZXJDb21waWxlcigpCi17Ci0gICAg
bWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQogfQogCiAj
ZW5kaWYgLy8gVVNFKDNEX0dSQVBISUNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5H
TC5jcHAKaW5kZXggNTRhZjdjYTU0N2Y0ZDZjNjJjMTM2ODVkNTRhZjJhMjdiZmRlMTk5Zi4uZDdj
MDVlNjI3MDllNjE2N2Q2YzU0YTBmYjk1NGJlMzkxZWI3ZjcyYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdM
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhp
Y3NDb250ZXh0M0RPcGVuR0wuY3BwCkBAIC00OSw2ICs0OSwxMiBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnJlbGVhc2VTaGFkZXJDb21waWxlcigp
Cit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30K
Kwogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cmVhZFBpeGVsc0FuZENvbnZlcnRUb0JHUkFJZk5l
Y2Vzc2FyeShpbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCwgdW5zaWduZWQgY2hh
ciogcGl4ZWxzKQogewogICAgIDo6Z2xSZWFkUGl4ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQsIEdM
X0JHUkEsIEdMX1VOU0lHTkVEX0lOVF84XzhfOF84X1JFViwgcGl4ZWxzKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQz
RE9wZW5HTEVTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
cmFwaGljc0NvbnRleHQzRE9wZW5HTEVTLmNwcAppbmRleCBkYzg2MjRkZWYxZmIzZjYzYTQxOGZm
MjIwZWFiYTgyMjc2YjA0YjI2Li45OTE1NzFkNDJhYmMzMGM5NDcyYjViOWVjY2MwODkyY2VhNzU4
M2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
R3JhcGhpY3NDb250ZXh0M0RPcGVuR0xFUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMRVMuY3BwCkBAIC0zOSw3
ICszOSw2IEBACiAjaW5jbHVkZSAiTGF5ZXJXZWJLaXRUaHJlYWQuaCIKICNlbmRpZgogI2luY2x1
ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0jaW5jbHVkZSAiT3BlbkdMRVNTaGltcy5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKQEAgLTY2LDE0ICs2NSwxNCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjpyZWFkUGl4ZWxzKEdDM0RpbnQgeCwgR0MzRGludCB5LCBHQzNEc2l6ZWkgd2lkdGgsIEdD
M0RzaQogI2Vsc2UKICAgICBpZiAobV9hdHRycy5hbnRpYWxpYXMgJiYgbV9ib3VuZEZCTyA9PSBt
X211bHRpc2FtcGxlRkJPKSB7CiAgICAgICAgICByZXNvbHZlTXVsdGlzYW1wbGluZ0lmTmVjZXNz
YXJ5KEludFJlY3QoeCwgeSwgd2lkdGgsIGhlaWdodCkpOwotICAgICAgICA6OmdsQmluZEZyYW1l
YnVmZmVyRVhUKEdMX0ZSQU1FQlVGRkVSX0VYVCwgbV9mYm8pOworICAgICAgICA6OmdsQmluZEZy
YW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtX2Zibyk7CiAgICAgICAgIDo6Z2xGbHVzaCgpOwog
ICAgIH0KIAogICAgIDo6Z2xSZWFkUGl4ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwg
dHlwZSwgZGF0YSk7CiAKICAgICBpZiAobV9hdHRycy5hbnRpYWxpYXMgJiYgbV9ib3VuZEZCTyA9
PSBtX211bHRpc2FtcGxlRkJPKQotICAgICAgICA6OmdsQmluZEZyYW1lYnVmZmVyRVhUKEdyYXBo
aWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9tdWx0aXNhbXBsZUZCTyk7CisgICAgICAgIDo6
Z2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1fbXVsdGlzYW1wbGVGQk8pOwogI2Vu
ZGlmCiB9CiAKQEAgLTEyMiwxMiArMTIxLDEyIEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OnJl
c2hhcGVGQk9zKGNvbnN0IEludFNpemUmIHNpemUpCiAgICAgYm9vbCBtdXN0UmVzdG9yZUZCTyA9
IGZhbHNlOwogICAgIGlmIChtX2JvdW5kRkJPICE9IG1fZmJvKSB7CiAgICAgICAgIG11c3RSZXN0
b3JlRkJPID0gdHJ1ZTsKLSAgICAgICAgOjpnbEJpbmRGcmFtZWJ1ZmZlckVYVChHcmFwaGljc0Nv
bnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fZmJvKTsKKyAgICAgICAgOjpnbEJpbmRGcmFtZWJ1ZmZl
cihHTF9GUkFNRUJVRkZFUiwgbV9mYm8pOwogICAgIH0KIAogICAgIDo6Z2xCaW5kVGV4dHVyZShH
TF9URVhUVVJFXzJELCBtX3RleHR1cmUpOwogICAgIDo6Z2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVf
MkQsIDAsIG1faW50ZXJuYWxDb2xvckZvcm1hdCwgd2lkdGgsIGhlaWdodCwgMCwgY29sb3JGb3Jt
YXQsIHBpeGVsRGF0YVR5cGUsIDApOwotICAgIDo6Z2xGcmFtZWJ1ZmZlclRleHR1cmUyREVYVChH
cmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUl9B
VFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV8yRCwgbV90ZXh0dXJlLCAwKTsKKyAgICA6OmdsRnJhbWVi
dWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9U
RVhUVVJFXzJELCBtX3RleHR1cmUsIDApOwogCiAgICAgOjpnbEJpbmRUZXh0dXJlKEdMX1RFWFRV
UkVfMkQsIG1fY29tcG9zaXRvclRleHR1cmUpOwogICAgIDo6Z2xUZXhJbWFnZTJEKEdMX1RFWFRV
UkVfMkQsIDAsIG1faW50ZXJuYWxDb2xvckZvcm1hdCwgd2lkdGgsIGhlaWdodCwgMCwgY29sb3JG
b3JtYXQsIEdMX1VOU0lHTkVEX0JZVEUsIDApOwpAQCAtMTM5LDI4ICsxMzgsMjggQEAgYm9vbCBH
cmFwaGljc0NvbnRleHQzRDo6cmVzaGFwZUZCT3MoY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICBp
ZiAobV9hdHRycy5zdGVuY2lsIHx8IG1fYXR0cnMuZGVwdGgpIHsKICAgICAgICAgLy8gVXNlIGEg
MjQgYml0IGRlcHRoIGJ1ZmZlciB3aGVyZSB3ZSBrbm93IHdlIGhhdmUgaXQuCiAgICAgICAgIGlm
IChzdXBwb3J0UGFja2VkRGVwdGhTdGVuY2lsQnVmZmVyKSB7Ci0gICAgICAgICAgICA6OmdsQmlu
ZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbV9kZXB0aFN0ZW5jaWxCdWZmZXIpOwotICAgICAgICAg
ICAgOjpnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR3JhcGhpY3NDb250ZXh0M0Q6OkRF
UFRIX1NURU5DSUwsIHdpZHRoLCBoZWlnaHQsIDAsIEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9T
VEVOQ0lMLCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfSU5UXzI0XzgsIDApOworICAgICAg
ICAgICAgOjpnbEJpbmRSZW5kZXJidWZmZXIoR0xfUkVOREVSQlVGRkVSLCBtX2RlcHRoU3RlbmNp
bEJ1ZmZlcik7CisgICAgICAgICAgICA6OmdsUmVuZGVyYnVmZmVyU3RvcmFnZShHTF9SRU5ERVJC
VUZGRVIsIEdMX0RFUFRIMjRfU1RFTkNJTDhfT0VTLCB3aWR0aCwgaGVpZ2h0KTsKICAgICAgICAg
ICAgIGlmIChtX2F0dHJzLnN0ZW5jaWwpCi0gICAgICAgICAgICAgICAgOjpnbEZyYW1lYnVmZmVy
VGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9TVEVOQ0lMX0FUVEFDSE1FTlQsIEdMX1RFWFRV
UkVfMkQsIG1fZGVwdGhTdGVuY2lsQnVmZmVyLCAwKTsKKyAgICAgICAgICAgICAgICA6OmdsRnJh
bWVidWZmZXJSZW5kZXJidWZmZXIoR0xfRlJBTUVCVUZGRVIsIEdMX1NURU5DSUxfQVRUQUNITUVO
VCwgR0xfUkVOREVSQlVGRkVSLCBtX2RlcHRoU3RlbmNpbEJ1ZmZlcik7CiAgICAgICAgICAgICBp
ZiAobV9hdHRycy5kZXB0aCkKLSAgICAgICAgICAgICAgICA6OmdsRnJhbWVidWZmZXJUZXh0dXJl
MkQoR0xfRlJBTUVCVUZGRVIsIEdMX0RFUFRIX0FUVEFDSE1FTlQsIEdMX1RFWFRVUkVfMkQsIG1f
ZGVwdGhTdGVuY2lsQnVmZmVyLCAwKTsKLSAgICAgICAgICAgIDo6Z2xCaW5kVGV4dHVyZShHTF9U
RVhUVVJFXzJELCAwKTsKKyAgICAgICAgICAgICAgICA6OmdsRnJhbWVidWZmZXJSZW5kZXJidWZm
ZXIoR0xfRlJBTUVCVUZGRVIsIEdMX0RFUFRIX0FUVEFDSE1FTlQsIEdMX1JFTkRFUkJVRkZFUiwg
bV9kZXB0aFN0ZW5jaWxCdWZmZXIpOworICAgICAgICAgICAgOjpnbEJpbmRSZW5kZXJidWZmZXIo
R0xfUkVOREVSQlVGRkVSLCAwKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlmICht
X2F0dHJzLnN0ZW5jaWwpIHsKLSAgICAgICAgICAgICAgICA6OmdsQmluZFJlbmRlcmJ1ZmZlckVY
VChHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSLCBtX3N0ZW5jaWxCdWZmZXIpOwotICAg
ICAgICAgICAgICAgIDo6Z2xSZW5kZXJidWZmZXJTdG9yYWdlRVhUKEdyYXBoaWNzQ29udGV4dDNE
OjpSRU5ERVJCVUZGRVIsIEdMX1NURU5DSUxfSU5ERVg4LCB3aWR0aCwgaGVpZ2h0KTsKLSAgICAg
ICAgICAgICAgICA6OmdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXJFWFQoR3JhcGhpY3NDb250ZXh0
M0Q6OkZSQU1FQlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6U1RFTkNJTF9BVFRBQ0hNRU5ULCBH
cmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSLCBtX3N0ZW5jaWxCdWZmZXIpOworICAgICAg
ICAgICAgICAgIDo6Z2xCaW5kUmVuZGVyYnVmZmVyKEdMX1JFTkRFUkJVRkZFUiwgbV9zdGVuY2ls
QnVmZmVyKTsKKyAgICAgICAgICAgICAgICA6OmdsUmVuZGVyYnVmZmVyU3RvcmFnZShHTF9SRU5E
RVJCVUZGRVIsIEdMX1NURU5DSUxfSU5ERVg4LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAgICAg
ICAgICA6OmdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR0xfRlJBTUVCVUZGRVIsIEdMX1NURU5D
SUxfQVRUQUNITUVOVCwgR0xfUkVOREVSQlVGRkVSLCBtX3N0ZW5jaWxCdWZmZXIpOwogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgaWYgKG1fYXR0cnMuZGVwdGgpIHsKLSAgICAgICAgICAgICAg
ICA6OmdsQmluZFJlbmRlcmJ1ZmZlckVYVChHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVS
LCBtX2RlcHRoQnVmZmVyKTsKLSAgICAgICAgICAgICAgICA6OmdsUmVuZGVyYnVmZmVyU3RvcmFn
ZUVYVChHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSLCBHTF9ERVBUSF9DT01QT05FTlQx
Niwgd2lkdGgsIGhlaWdodCk7Ci0gICAgICAgICAgICAgICAgOjpnbEZyYW1lYnVmZmVyUmVuZGVy
YnVmZmVyRVhUKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgR3JhcGhpY3NDb250ZXh0
M0Q6OkRFUFRIX0FUVEFDSE1FTlQsIEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIG1f
ZGVwdGhCdWZmZXIpOworICAgICAgICAgICAgICAgIDo6Z2xCaW5kUmVuZGVyYnVmZmVyKEdMX1JF
TkRFUkJVRkZFUiwgbV9kZXB0aEJ1ZmZlcik7CisgICAgICAgICAgICAgICAgOjpnbFJlbmRlcmJ1
ZmZlclN0b3JhZ2UoR0xfUkVOREVSQlVGRkVSLCBHTF9ERVBUSF9DT01QT05FTlQxNiwgd2lkdGgs
IGhlaWdodCk7CisgICAgICAgICAgICAgICAgOjpnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdM
X0ZSQU1FQlVGRkVSLCBHTF9ERVBUSF9BVFRBQ0hNRU5ULCBHTF9SRU5ERVJCVUZGRVIsIG1fZGVw
dGhCdWZmZXIpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgOjpnbEJpbmRSZW5kZXJidWZm
ZXJFWFQoR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUiwgMCk7CisgICAgICAgICAgICA6
OmdsQmluZFJlbmRlcmJ1ZmZlcihHTF9SRU5ERVJCVUZGRVIsIDApOwogICAgICAgICB9CiAgICAg
fQotICAgIGlmIChnbENoZWNrRnJhbWVidWZmZXJTdGF0dXNFWFQoR3JhcGhpY3NDb250ZXh0M0Q6
OkZSQU1FQlVGRkVSKSAhPSBHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVJfQ09NUExFVEUp
IHsKKyAgICBpZiAoZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdMX0ZSQU1FQlVGRkVSKSAhPSBH
TF9GUkFNRUJVRkZFUl9DT01QTEVURSkgewogICAgICAgICAvLyBGSVhNRTogY2xlYW51cAogICAg
ICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIH0KQEAgLTE3OCw3ICsxNzcsNyBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjpyZXNvbHZlTXVsdGlzYW1wbGluZ0lmTmVjZXNzYXJ5KGNvbnN0IElu
dFJlY3QmIHJlY3QpCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpyZW5kZXJidWZmZXJTdG9yYWdl
KEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDM0RzaXplaSB3aWR0
aCwgR0MzRHNpemVpIGhlaWdodCkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6
OmdsUmVuZGVyYnVmZmVyU3RvcmFnZUVYVCh0YXJnZXQsIGludGVybmFsZm9ybWF0LCB3aWR0aCwg
aGVpZ2h0KTsKKyAgICA6OmdsUmVuZGVyYnVmZmVyU3RvcmFnZSh0YXJnZXQsIGludGVybmFsZm9y
bWF0LCB3aWR0aCwgaGVpZ2h0KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0SW50
ZWdlcnYoR0MzRGVudW0gcG5hbWUsIEdDM0RpbnQqIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNw
cAppbmRleCAxNjc4YzQ5ZmFiYmViMjhlNmY4YTVkYmQyZGMzMmU2ODVlYjY4ZDM3Li5jYmQ1MTky
MDk4MjY3NjM3Mzc2NWU1OTk3Y2ZkYmUyZGFlNDI0MDVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNw
cApAQCAtMTAwLDEzICsxMDAsNiBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjppc0dMRVMyQ29t
cGxpYW50KCkgY29uc3QKICNlbmRpZgogfQogCi0jaWYgIVVTRShPUEVOR0xfRVNfMikKLXZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OnJlbGVhc2VTaGFkZXJDb21waWxlcigpCi17Ci0gICAgbm90SW1w
bGVtZW50ZWQoKTsKLX0KLSNlbmRpZgotCiBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OkdyYXBo
aWNzQ29udGV4dDNEUHJpdmF0ZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgSG9zdFdpbmRv
dyogaG9zdFdpbmRvdywgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlclN0eWxlIHJlbmRlclN0eWxl
KQogICAgIDogbV9jb250ZXh0KGNvbnRleHQpCiAgICAgLCBtX2hvc3RXaW5kb3coaG9zdFdpbmRv
dykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlci5oCmluZGV4IDE3ZDU5MzQ3MDc4YTU0ZTc3YzBlNTY5M2I5ZDg0MWE2YjM4
NTBhNDYuLmE5MGRiZTRmMTVhMTI3N2ZmYTIwNzEzNjJjZjBhY2U0NjMwNTJhMTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXIuaApAQCAtMjgsNiArMjgsOSBAQAogICAgICNkZWZpbmUgVEVYTUFQX09QRU5HTF9FU18y
CiAjZW5kaWYKICNlbmRpZgorI2lmIFBMQVRGT1JNKEdUSykgJiYgVVNFKE9QRU5HTF9FU18yKQor
I2RlZmluZSBURVhNQVBfT1BFTkdMX0VTXzIKKyNlbmRpZgogCiAjaW5jbHVkZSAiRmlsdGVyT3Bl
cmF0aW9ucy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5j
cHAKaW5kZXggNWU2OWI0NDUwNGE4MWRlNTI1ZGI0NTVhYzIwYjNiYmViM2Q4NmQ0ZS4uOTI1Mzlh
MjIwZTkyNjEyMjE5ODJiYWE2M2Q2NzAzMzQzZTk2M2RkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL1JlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cuY3Bw
CkBAIC0yNyw5ICsyNyw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUmVkaXJl
Y3RlZFhDb21wb3NpdGVXaW5kb3cuaCIKIAotI2lmIFVTRShHTFgpCi0jaW5jbHVkZSAiR0xDb250
ZXh0R0xYLmgiCi0jaW5jbHVkZSA8R0wvZ2x4Lmg+CisjaWYgUExBVEZPUk0oWDExKQogI2luY2x1
ZGUgPFgxMS9leHRlbnNpb25zL1hjb21wb3NpdGUuaD4KICNpbmNsdWRlIDxYMTEvZXh0ZW5zaW9u
cy9YZGFtYWdlLmg+CiAjaW5jbHVkZSA8Y2Fpcm8teGxpYi5oPgpAQCAtMTA1LDEzICsxMDMsMTIg
QEAgUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6OlJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93
KGNvbnN0IEludFNpemUmIHNpemUpCiAgICAgLCBtX3BhcmVudFdpbmRvdygwKQogICAgICwgbV9w
aXhtYXAoMCkKICAgICAsIG1fc3VyZmFjZSgwKQotICAgICwgbV9wZW5kaW5nUmVzaXplU291cmNl
SWQoMCkKICAgICAsIG1fbmVlZHNOZXdQaXhtYXBBZnRlclJlc2l6ZShmYWxzZSkKICAgICAsIG1f
ZGFtYWdlKDApCiAgICAgLCBtX2RhbWFnZU5vdGlmeUNhbGxiYWNrKDApCiAgICAgLCBtX2RhbWFn
ZU5vdGlmeURhdGEoMCkKIHsKLSAgICBEaXNwbGF5KiBkaXNwbGF5ID0gR0RLX0RJU1BMQVlfWERJ
U1BMQVkoZ2RrX2Rpc3BsYXlfZ2V0X2RlZmF1bHQoKSk7CisgICAgRGlzcGxheSogZGlzcGxheSA9
IEdMQ29udGV4dDo6c2hhcmVkWDExRGlzcGxheSgpOwogCiAgICAgLy8gVGhpcyBpcyBiYXNlZCBv
biBjb2RlIGZyb20gQ2hyb21pdW06IHNyYy9jb250ZW50L2NvbW1vbi9ncHUvaW1hZ2VfdHJhbnNw
b3J0X3N1cmZhY2VfbGludXguY2MKICAgICBYU2V0V2luZG93QXR0cmlidXRlcyB3aW5kb3dBdHRy
aWJ1dGVzOwpAQCAtMTY1LDcgKzE2Miw3IEBAIFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93Ojp+
UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3coKQogICAgIGlmIChnZXRXaW5kb3dIYXNoTWFwKCku
aXNFbXB0eSgpKQogICAgICAgICBnZGtfd2luZG93X3JlbW92ZV9maWx0ZXIoMCwgcmVpbnRlcnBy
ZXRfY2FzdDxHZGtGaWx0ZXJGdW5jPihmaWx0ZXJYRGFtYWdlRXZlbnQpLCAwKTsKIAotICAgIERp
c3BsYXkqIGRpc3BsYXkgPSBHREtfRElTUExBWV9YRElTUExBWShnZGtfZGlzcGxheV9nZXRfZGVm
YXVsdCgpKTsKKyAgICBEaXNwbGF5KiBkaXNwbGF5ID0gR0xDb250ZXh0OjpzaGFyZWRYMTFEaXNw
bGF5KCk7CiAgICAgWERhbWFnZURlc3Ryb3koZGlzcGxheSwgbV9kYW1hZ2UpOwogICAgIFhEZXN0
cm95V2luZG93KGRpc3BsYXksIG1fd2luZG93KTsKICAgICBYRGVzdHJveVdpbmRvdyhkaXNwbGF5
LCBtX3BhcmVudFdpbmRvdyk7CkBAIC0xNzQsMTEgKzE3MSwxMSBAQCBSZWRpcmVjdGVkWENvbXBv
c2l0ZVdpbmRvdzo6flJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93KCkKIAogdm9pZCBSZWRpcmVj
dGVkWENvbXBvc2l0ZVdpbmRvdzo6cmVzaXplKGNvbnN0IEludFNpemUmIHNpemUpCiB7Ci0gICAg
RGlzcGxheSogZGlzcGxheSA9IEdES19ESVNQTEFZX1hESVNQTEFZKGdka19kaXNwbGF5X2dldF9k
ZWZhdWx0KCkpOworICAgIERpc3BsYXkqIGRpc3BsYXkgPSBHTENvbnRleHQ6OnNoYXJlZFgxMURp
c3BsYXkoKTsKICAgICBYUmVzaXplV2luZG93KGRpc3BsYXksIG1fd2luZG93LCBzaXplLndpZHRo
KCksIHNpemUuaGVpZ2h0KCkpOwogCiAgICAgWEZsdXNoKGRpc3BsYXkpOwotICAgIGdsWFdhaXRY
KCk7CisgICAgY29udGV4dCgpLT53YWl0TmF0aXZlKCk7CiAKICAgICAvLyBUaGlzIHN3YXAgaXMg
YmFzZWQgb24gY29kZSBpbiBDaHJvbWl1bS4gSXQgdHJpZXMgdG8gd29yay1hcm91bmQgYSBidWcg
aW4gdGhlIEludGVsIGRyaXZlcnMKICAgICAvLyB3aGVyZSBhIHN3YXAgaXMgbmVjZXNzYXJ5IHRv
IGVuc3VyZSB0aGUgZnJvbnQgYW5kIGJhY2sgYnVmZmVycyBhcmUgcHJvcGVybHkgcmVzaXplZC4K
QEAgLTI2Myw0ICsyNjAsNCBAQCB2b2lkIFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93OjpjYWxs
RGFtYWdlTm90aWZ5Q2FsbGJhY2soKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRp
ZiAvLyBVU0UoR0xYKQorI2VuZGlmIC8vIFBMQVRGT1JNKFgxMSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93LmgKaW5k
ZXggODY1YmUzYmNjNGUyNzRiNTBhNmU3OGViZTA1N2Y4ZmNiOWNmMzk2ZS4uN2E5OGMzNzY4M2Zj
Mzg2MDZmOWVhYmQ1ODZjOWQ2N2U1OGJmMTZiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL1JlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL1JlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93LmgKQEAgLTI3LDkg
KzI3LDkgQEAKICNpZm5kZWYgIFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93X2gKICNkZWZpbmUg
IFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93X2gKIAotI2lmIFVTRShHTFgpCisjaWYgUExBVEZP
Uk0oWDExKQogCi0jaW5jbHVkZSAiR0xDb250ZXh0R0xYLmgiCisjaW5jbHVkZSAiR0xDb250ZXh0
LmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUgIlJlZlB0ckNhaXJvLmgiCiAKQEAg
LTc4LDYgKzc4LDYgQEAgcHJpdmF0ZToKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5k
aWYgLy8gVVNFKEdMWCkKKyNlbmRpZiAvLyBQTEFURk9STShYMTEpCiAKICNlbmRpZiAvLyBSZWRp
cmVjdGVkWENvbXBvc2l0ZVdpbmRvd19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvZ3RrL0xheWVyVHJlZUhvc3RHdGsuY3BwIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0R3RrLmNwcAppbmRleCA3N2ExYjE2
N2QxN2VjZTEwYmVkYzIwNWIyNTJjODA4YTllOWIzODdlLi5hZjJhZTg5YmZhMjkxNTVjZWZhNjMy
ZGEyMmM3ZTZiZjNhZWFiNWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvZ3RrL0xheWVyVHJlZUhvc3RHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5jcHAKQEAgLTM2LDcgKzM2LDcg
QEAKICNpbmNsdWRlIDxHTC9nbC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0ZyYW1lVmlldy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvR0xDb250ZXh0R0xY
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9HTENvbnRleHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Bh
Z2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+CiAKZGlmZiAtLWdpdCBhL0NoYW5n
ZUxvZyBiL0NoYW5nZUxvZwppbmRleCBhNWI2OWVmYjE3MmI1NzQ2NjgzZWZhNDI3ZTQ0ODI4ZWRl
NmNjZDRmLi5lNTM3Zjk0YWYwMThkYzZjNDc1MWRhYmE2M2M3NmU3ZmM1NGJhNzZjIDEwMDY0NAot
LS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTItMTAt
MDUgIEpvc8OpIERhcGVuYSBQYXogIDxqZGFwZW5hQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dU
S10gQWRkIHN1cHBvcnQgZm9yIGNyZWF0aW5nIEVHTCBjb250ZXh0cworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzc5MjEKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBm
b3IgRUdMLCB1c2luZyBPcGVuR0wgYW5kIE9wZW5HTCBFUyAyLiBCb3RoCisgICAgICAgIG9wdGlv
bnMgYXJlIHNldCB1cCBvbiBjb21waWxlIHRpbWUsIHdpdGggdGhlIGNvbmZpZ3VyZSBvcHRpb25z
CisgICAgICAgIC0tZW5hYmxlLWVnbCBhbmQgLS1lbmFibGUtZ2xlczIuCisKKyAgICAgICAgVGhl
IGltcGxlbWVudGF0aW9uIG9ubHkgYWRkcyBzdXBwb3J0IGZvciBFR0wgb24gdG9wIG9mIFgxMSwg
dG8KKyAgICAgICAgaXNvbGF0ZSB0aGUgY2hhbmdlcyB0byB0aGUgbWluaW11bS4gTW9yZSBjaGFu
Z2VzIHNob3VsZCBjb21lCisgICAgICAgIGxhdGVyIHRvIGVuYWJsZSBFR0wgZm9yIG90aGVyIHRh
cmdldHMgKGFzIFdheWxhbmQpLgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAg
ICogY29uZmlndXJlLmFjOiBuZXcgY29uZmlndXJlIG9wdGlvbnMgLS1lbmFibGUtZWdsIGFuZCAt
LWVuYWJsZS1nbGVzMi4KKwogMjAxMi0xMC0wNCAgQ2hyaXN0b3BoZSBEdW1leiAgPGNocmlzdG9w
aGUuZHVtZXpAaW50ZWwuY29tPgogCiAgICAgICAgIFtFRkxdIEFkZCBsaWJ4bWwgMi44LjAgdG8g
amhidWlsZApkaWZmIC0tZ2l0IGEvR05VbWFrZWZpbGUuYW0gYi9HTlVtYWtlZmlsZS5hbQppbmRl
eCAyYmUzZWRmMTg0ZWMzNjZjM2M3NTI1ZDQ3MDQzNTI0NTVkYzAyMzQ4Li42ZmU2NjdlNGM0ODAy
MjRkMTYxNGNiNDVhOGJlYTdlN2Q5NGVhNjY1IDEwMDY0NAotLS0gYS9HTlVtYWtlZmlsZS5hbQor
KysgYi9HTlVtYWtlZmlsZS5hbQpAQCAtMjM3LDYgKzIzNywxNiBAQCBnbG9iYWxfY3BwZmxhZ3Mg
Kz0gXAogCS1EV1RGX1VTRV9HTFg9MQogZW5kaWYKIAoraWYgVVNFX0VHTAorZ2xvYmFsX2NwcGZs
YWdzICs9IFwKKwktRFdURl9VU0VfRUdMPTEKK2VuZGlmCisKK2lmIFVTRV9HTEVTMgorZ2xvYmFs
X2NwcGZsYWdzICs9IFwKKwktRFdURl9VU0VfT1BFTkdMX0VTXzI9MQorZW5kaWYKKwogaWYgVVNF
X09QRU5HTAogZ2xvYmFsX2NwcGZsYWdzICs9IFwKIAktRFdURl9VU0VfT1BFTkdMPTEKZGlmZiAt
LWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwppbmRleCBjOGYxMTBkYzE0MDQzNTli
YzM3YmIyZjZjYzBmNmIxNGVhOTZkMDA2Li5iY2MwYThlMThjOThkZmNmNzAwMzY1ZDA1YzkxYjkx
MWYwMDZjYWEzIDEwMDY0NAotLS0gYS9jb25maWd1cmUuYWMKKysrIGIvY29uZmlndXJlLmFjCkBA
IC01NDcsMTEgKzU0Nyw4NCBAQCBBQ19BUkdfRU5BQkxFKHVuc3RhYmxlX2ZlYXR1cmVzLAogICAg
ICAgICAgICAgICBbXSxbZW5hYmxlX3Vuc3RhYmxlX2ZlYXR1cmVzPSJubyJdKQogQUNfTVNHX1JF
U1VMVChbJGVuYWJsZV91bnN0YWJsZV9mZWF0dXJlc10pCiAKLWZvdW5kX29wZW5nbD0ibm8iCi1p
ZiB0ZXN0ICIkd2l0aF90YXJnZXQiID0gIngxMSI7IHRoZW4KK2ZvdW5kX29wZW5nbD1ubworQUNf
QVJHX0VOQUJMRShnbHgsCisgICAgICAgICAgICAgIEFDX0hFTFBfU1RSSU5HKFstLWVuYWJsZS1n
bHhdLCBbZW5hYmxlIHN1cHBvcnQgZm9yIEdMWCBbZGVmYXVsdD1hdXRvXV0pLAorICAgICAgICAg
ICAgICBbXSwgW2VuYWJsZV9nbHg9ImF1dG8iXSkKK0FDX0FSR19FTkFCTEUoZWdsLAorICAgICAg
ICAgICAgICBBQ19IRUxQX1NUUklORyhbLS1lbmFibGUtZWdsXSwgW2VuYWJsZSBzdXBwb3J0IGZv
ciBFR0wgW2RlZmF1bHQ9YXV0b11dKSwKKyAgICAgICAgICAgICAgW10sIFtlbmFibGVfZWdsPSJh
dXRvIl0pCitBQ19BUkdfRU5BQkxFKGdsZXMyLAorICAgICAgICAgICAgICBBQ19IRUxQX1NUUklO
RyhbLS1lbmFibGUtZ2xlczJdLCBbZW5hYmxlIHN1cHBvcnQgZm9yIE9wZW5HTCBFUyAyIFtkZWZh
dWx0PWF1dG9dXSksCisgICAgICAgICAgICAgIFtdLCBbZW5hYmxlX2dsZXMyPSJhdXRvIl0pCisK
K2hhdmVfZ2x4PW5vCitBQ19DSEVDS19IRUFERVJTKFtHTC9nbHguaF0sIFtoYXZlX2dseD0ieWVz
Il0sIFtoYXZlX2dseD0ibm8iXSkKK0FDX01TR19DSEVDS0lORyhbd2hldGhlciB0byBlbmFibGUg
R0xYIHN1cHBvcnRdKQoraWYgdGVzdCAiJGVuYWJsZV9nbHgiICE9ICJubyI7IHRoZW4KKyAgIGlm
IHRlc3QgIiRoYXZlX2dseCIgPSAibm8iOyB0aGVuCisgICAgICBpZiB0ZXN0ICIkZW5hYmxlX2ds
eCIgPSAieWVzIjsgdGhlbgorICAgICAgICAgQUNfTVNHX0VSUk9SKFstLWVuYWJsZS1nbHggc3Bl
Y2lmaWVkLCBidXQgbm90IGF2YWlsYWJsZV0pCisgICAgICBlbHNlCisgICAgICAgICBlbmFibGVf
Z2x4PW5vCisgICAgICBmaQorICAgZWxpZiB0ZXN0ICIkZW5hYmxlX2dsZXMyIiAhPSAieWVzIjsg
dGhlbgorICAgICAgZW5hYmxlX2dseD15ZXMKKyAgIGZpCitmaQorQUNfTVNHX1JFU1VMVChbJGVu
YWJsZV9nbHhdKQorCitoYXZlX2VnbD1ubworQUNfQ0hFQ0tfSEVBREVSUyhbRUdML2VnbC5oXSwg
W2hhdmVfZWdsPSJ5ZXMiXSwgW2hhdmVfZWdsPSJubyJdKQorQUNfTVNHX0NIRUNLSU5HKFt3aGV0
aGVyIHRvIGVuYWJsZSBFR0wgc3VwcG9ydF0pCitpZiB0ZXN0ICIkZW5hYmxlX2VnbCIgIT0gIm5v
IjsgdGhlbgorICAgaWYgdGVzdCAiJGhhdmVfZWdsIiA9ICJubyI7IHRoZW4KKyAgICAgIGlmIHRl
c3QgIiRlbmFibGVfZWdsIiA9ICJ5ZXMiOyB0aGVuCisgICAgICAgICBBQ19NU0dfRVJST1IoWy0t
ZW5hYmxlLWVnbCBzcGVjaWZpZWQsIGJ1dCBub3QgYXZhaWxhYmxlXSkKKyAgICAgIGVsc2UKKyAg
ICAgICAgIGVuYWJsZV9lZ2w9bm8KKyAgICAgIGZpCisgICBlbHNlCisgICAgICBlbmFibGVfZWds
PXllcworICAgZmkKK2ZpCitBQ19NU0dfUkVTVUxUKFskZW5hYmxlX2VnbF0pCisKK2hhdmVfZ2xl
czI9bm8KK0FDX0NIRUNLX0hFQURFUlMoW0dMRVMyL2dsMi5oXSwgW2hhdmVfZ2xlczI9InllcyJd
LCBbaGF2ZV9nbGVzMj0ibm8iXSkKK0FDX01TR19DSEVDS0lORyhbd2hldGhlciB0byB1c2UgT3Bl
bkdMIEVTIDIgc3VwcG9ydF0pCitpZiB0ZXN0ICIkZW5hYmxlX2dseCIgPSAieWVzIjsgdGhlbgor
ICAgaWYgdGVzdCAiJGVuYWJsZV9nbGVzMiIgPSAieWVzIjsgdGhlbgorICAgICAgQUNfTVNHX0VS
Uk9SKFtDYW5ub3QgZW5hYmxlIE9wZW5HTCBFUyAyIHN1cHBvcnQgd2l0aCBHTFhdKQorICAgZWxz
ZQorICAgICAgZW5hYmxlX2dsZXMyPW5vCisgICBmaQorZmkKK2lmIHRlc3QgIiRlbmFibGVfZWds
IiA9ICJubyI7IHRoZW4KKyAgIGlmIHRlc3QgIiRlbmFibGVfZ2xlczIiID0gInllcyI7IHRoZW4K
KyAgICAgIEFDX01TR19FUlJPUihbQ2Fubm90IGVuYWJsZSBPcGVuR0wgRVMgMiBzdXBwb3J0IHdp
dGhvdXQgRUdMXSkKKyAgIGVsc2UKKyAgICAgIGVuYWJsZV9nbGVzMj1ubworICAgZmkKK2ZpCitp
ZiB0ZXN0ICIkZW5hYmxlX2dsZXMyIiAhPSAibm8iOyB0aGVuCisgICBpZiB0ZXN0ICIkaGF2ZV9n
bGVzMiIgPSAibm8iOyB0aGVuCisgICAgICBpZiB0ZXN0ICIkZW5hYmxlX2dsZXMyIiA9ICJ5ZXMi
OyB0aGVuCisgICAgICAgICBBQ19NU0dfRVJST1IoWy0tZW5hYmxlLWdsZXMyIHNwZWNpZmllZCwg
YnV0IG5vdCBhdmFpbGFibGVdKQorICAgICAgZWxzZQorICAgICAgICAgZW5hYmxlX2dsZXMyPW5v
CisgICAgICBmaQorICAgZWxzZQorICAgICAgZW5hYmxlX2dsZXMyPXllcworICAgICAgZm91bmRf
b3BlbmdsPXllcworICAgZmkKK2ZpCitBQ19NU0dfUkVTVUxUKFskZW5hYmxlX2dsZXMyXSkKKwor
aWYgdGVzdCAiJGVuYWJsZV9nbGVzMiIgIT0gInllcyI7IHRoZW4KICAgICBBQ19DSEVDS19IRUFE
RVJTKFtHTC9nbC5oXSwgW2ZvdW5kX29wZW5nbD0ieWVzIl0sIFtdKQotICAgIEFDX0NIRUNLX0hF
QURFUlMoW0dML2dseC5oXSwgW10sIFtmb3VuZF9vcGVuZ2w9Im5vIl0pCiBmaQorCiBBQ19NU0df
Q0hFQ0tJTkcoW3doaWNoIEdQVSBhY2NlbGVyYXRpb24gYmFja2VuZCB0byB1c2VdKQogQUNfQVJH
X1dJVEgoYWNjZWxlcmF0aW9uX2JhY2tlbmQsCiAgICAgICAgICAgICBBQ19IRUxQX1NUUklORyhb
LS13aXRoLWFjY2VsZXJhdGlvbi1iYWNrZW5kPUA8OkBvcGVuZ2wvY2x1dHRlci9ub25lQDo+QF0s
CkBAIC05MjYsNyArOTk5LDcgQEAgaWYgdGVzdCAiJGVuYWJsZV92aWRlbyIgPSAieWVzIiB8fCB0
ZXN0ICIkZW5hYmxlX3dlYl9hdWRpbyIgPSAieWVzIjsgdGhlbgogICAgQUNfU1VCU1QoW0dTVFJF
QU1FUl9MSUJTXSkKIGZpCiAKLQorYWNjZWxlcmF0aW9uX2JhY2tlbmRfZGVzY3JpcHRpb249JHdp
dGhfYWNjZWxlcmF0aW9uX2JhY2tlbmQKIGlmIHRlc3QgIiR3aXRoX2FjY2VsZXJhdGlvbl9iYWNr
ZW5kIiA9ICJjbHV0dGVyIjsgdGhlbgogICAgUEtHX0NIRUNLX01PRFVMRVMoQ0xVVFRFUiwgY2x1
dHRlci0xLjAgPj0gJENMVVRURVJfUkVRVUlSRURfVkVSU0lPTikKICAgIFBLR19DSEVDS19NT0RV
TEVTKFtDTFVUVEVSX0dUS10sCkBAIC05MzksNyArMTAxMiwyMiBAQCBpZiB0ZXN0ICIkd2l0aF9h
Y2NlbGVyYXRpb25fYmFja2VuZCIgPSAiY2x1dHRlciI7IHRoZW4KIGZpCiAKIGlmIHRlc3QgIiR3
aXRoX2FjY2VsZXJhdGlvbl9iYWNrZW5kIiA9ICJvcGVuZ2wiOyB0aGVuCi0gICAgT1BFTkdMX0xJ
QlM9Ii1sR0wgLWxkbCIKKyAgIGlmIHRlc3QgIiRlbmFibGVfZ2xlczIiID0gInllcyI7IHRoZW4K
KyAgICBhY2NlbGVyYXRpb25fYmFja2VuZF9kZXNjcmlwdGlvbis9ICIoZ2xlczIiCisgICAgT1BF
TkdMX0xJQlM9Ii1sR0xFU3YyIgorICAgZWxzZQorICAgIGFjY2VsZXJhdGlvbl9iYWNrZW5kX2Rl
c2NyaXB0aW9uKz0iKGdsIgorICAgIE9QRU5HTF9MSUJTPSItbEdMIgorICAgZmkKKyAgIGlmIHRl
c3QgIiRlbmFibGVfZWdsIiA9ICJ5ZXMiOyB0aGVuCisgICAgYWNjZWxlcmF0aW9uX2JhY2tlbmRf
ZGVzY3JpcHRpb24rPSIsIGVnbCIKKyAgICBPUEVOR0xfTElCUys9IiAtbEVHTCIKKyAgIGZpCisg
ICBpZiB0ZXN0ICIkZW5hYmxlX2dseCIgPSAieWVzIjsgdGhlbgorICAgIGFjY2VsZXJhdGlvbl9i
YWNrZW5kX2Rlc2NyaXB0aW9uKz0iLCBnbHgiCisgICBmaQorICAgT1BFTkdMX0xJQlMrPSIgLWxk
bCIKKyAgIGFjY2VsZXJhdGlvbl9iYWNrZW5kX2Rlc2NyaXB0aW9uKz0iKSIKIGZpCiBBQ19TVUJT
VChbT1BFTkdMX0xJQlNdKQogCkBAIC0xMDQ4LDggKzExMzYsMTAgQEAgQU1fQ09ORElUSU9OQUwo
W1VTRV9URVhUVVJFX01BUFBFUl9HTF0sIFt0ZXN0ICIkZW5hYmxlX2FjY2VsZXJhdGVkX2NvbXBv
c2l0aW5nIgogQU1fQ09ORElUSU9OQUwoW1VTRV9DTFVUVEVSXSwgW3Rlc3QgIiR3aXRoX2FjY2Vs
ZXJhdGlvbl9iYWNrZW5kIiA9ICJjbHV0dGVyIl0pCiAKICMgVGhlc2UgYXJlIHRoZSBzYW1lIG5v
dywgYnV0IHRoZXkgd2lsbCBzb29uIGJlIHNlcGFyYXRlLgotQU1fQ09ORElUSU9OQUwoW1VTRV9H
TFhdLCBbdGVzdCAiJHdpdGhfYWNjZWxlcmF0aW9uX2JhY2tlbmQiID0gIm9wZW5nbCJdKQogQU1f
Q09ORElUSU9OQUwoW1VTRV9PUEVOR0xdLCBbdGVzdCAiJHdpdGhfYWNjZWxlcmF0aW9uX2JhY2tl
bmQiID0gIm9wZW5nbCJdKQorQU1fQ09ORElUSU9OQUwoW1VTRV9FR0xdLCBbdGVzdCAiJGVuYWJs
ZV9lZ2wiID0gInllcyJdKQorQU1fQ09ORElUSU9OQUwoW1VTRV9HTEVTMl0sIFt0ZXN0ICIkZW5h
YmxlX2dsZXMyIiA9ICJ5ZXMiXSkKK0FNX0NPTkRJVElPTkFMKFtVU0VfR0xYXSwgW3Rlc3QgIiRl
bmFibGVfZ2x4IiA9ICJ5ZXMiXSkKIAogIyBJbmRleGVkREIgaW1wbGllcyBMZXZlbERCLCBidXQg
b3RoZXIgZmVhdHVyZXMgbWF5IG9uZSBkYXkgcmVxdWlyZSBMZXZlbERCLgogQU1fQ09ORElUSU9O
QUwoW0VOQUJMRV9JTkRFWEVEX0RBVEFCQVNFXSxbdGVzdCAiJGVuYWJsZV9pbmRleGVkX2RhdGFi
YXNlIiA9ICJ5ZXMiXSkKQEAgLTExMjgsNyArMTIxOCw3IEBAIEJ1aWxkIGNvbmZpZ3VyYXRpb246
CiAgVW5pY29kZSBiYWNrZW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgOiAkd2l0aF91bmljb2RlX2JhY2tlbmQKICBGb250IGJhY2tlbmQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICR3aXRoX2ZvbnRfYmFja2VuZAogIE9wdGlt
aXplZCBtZW1vcnkgYWxsb2NhdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJGVu
YWJsZV9mYXN0X21hbGxvYwotIEFjY2VsZXJhdGVkIHJlbmRlcmluZyBiYWNrZW5kICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDogJHdpdGhfYWNjZWxlcmF0aW9uX2JhY2tlbmQKKyBBY2NlbGVy
YXRlZCByZW5kZXJpbmcgYmFja2VuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICRhY2Nl
bGVyYXRpb25fYmFja2VuZF9kZXNjcmlwdGlvbgogCiBGZWF0dXJlczoKID09PT09PT0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167324</attachid>
            <date>2012-10-05 07:14:47 -0700</date>
            <delta_ts>2012-10-05 07:55:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77921-20121005161354.patch</filename>
            <type>text/plain</type>
            <size>62294</size>
            <attacher name="José Dapena Paz">jdapena</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwNDg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2EzMDUxZTM4MjFmOWI5
Y2I2MTM0ZTdmOGYzODRlYWU0ZTUxZWE5Yy4uOTQ4MTE2ZWM1MmM4ZTJhYmY2OTQ0NzU4NjlkYzNm
MzhlNzZiN2UxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk1IEBACisyMDEyLTEwLTA1ICBKb3PD
qSBEYXBlbmEgUGF6ICA8amRhcGVuYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIEFkZCBz
dXBwb3J0IGZvciBjcmVhdGluZyBFR0wgY29udGV4dHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3OTIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIEVHTCwg
dXNpbmcgT3BlbkdMIGFuZCBPcGVuR0wgRVMgMi4gQm90aAorICAgICAgICBvcHRpb25zIGFyZSBz
ZXQgdXAgb24gY29tcGlsZSB0aW1lLCB3aXRoIHRoZSBjb25maWd1cmUgb3B0aW9ucworICAgICAg
ICAtLWVuYWJsZS1lZ2wgYW5kIC0tZW5hYmxlLWdsZXMyLgorCisgICAgICAgIFRoZSBpbXBsZW1l
bnRhdGlvbiBvbmx5IGFkZHMgc3VwcG9ydCBmb3IgRUdMIG9uIHRvcCBvZiBYMTEsIHRvCisgICAg
ICAgIGlzb2xhdGUgdGhlIGNoYW5nZXMgdG8gdGhlIG1pbmltdW0uIE1vcmUgY2hhbmdlcyBzaG91
bGQgY29tZQorICAgICAgICBsYXRlciB0byBlbmFibGUgRUdMIGZvciBvdGhlciB0YXJnZXRzIChh
cyBXYXlsYW5kKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgcmVxdWlyZWQsIGFzIGV4aXN0aW5n
IFdlYkdMIGFuZCBBQyB0ZXN0cyBzaG91bGQgY292ZXIKKyAgICAgICAgdGhlIGNhc2VzLgorCisg
ICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oOgorICAgICAg
ICAoR3JhcGhpY3NDb250ZXh0M0QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL09wZW5H
TEVTU2hpbXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HTENvbnRleHQu
Y3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHQ6OnNo
YXJlZFgxMURpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0OjpjbGVhbnVwU2hh
cmVkWDExRGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjphY3RpdmVDb250ZXh0TGlzdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHTENvbnRleHQ6OmFkZEFjdGl2ZUNvbnRleHQpOgorICAgICAgICAo
V2ViQ29yZTo6R0xDb250ZXh0OjpyZW1vdmVBY3RpdmVDb250ZXh0KToKKyAgICAgICAgKFdlYkNv
cmU6OkdMQ29udGV4dDo6Y2xlYW51cEFjdGl2ZUNvbnRleHRzQXRFeGl0KToKKyAgICAgICAgKFdl
YkNvcmU6OkdMQ29udGV4dDo6Y3JlYXRlQ29udGV4dEZvcldpbmRvdyk6CisgICAgICAgIChXZWJD
b3JlOjpHTENvbnRleHQ6OmNyZWF0ZU9mZnNjcmVlbkNvbnRleHQpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0dMQ29udGV4dC5oOgorICAgICAgICAoR0xDb250ZXh0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRENhaXJvLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OkdyYXBoaWNzQ29udGV4dDNEKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp+R3JhcGhpY3NDb250ZXh0M0QpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmlzR0xFUzJDb21wbGlhbnQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnBhaW50VG9U
ZXh0dXJlTWFwcGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jbHV0dGVyL0dyYXBo
aWNzQ29udGV4dDNEQ2x1dHRlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZWZs
L0dyYXBoaWNzQ29udGV4dDNERWZsLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9l
Z2wvR0xDb250ZXh0RUdMLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OnNoYXJlZEVHTERpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0RUdMQ29u
ZmlnKToKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6Y3JlYXRlV2luZG93Q29udGV4
dCk6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0w6OmNyZWF0ZVBidWZmZXJDb250ZXh0
KToKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6Y3JlYXRlUGl4bWFwQ29udGV4dCk6
CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0w6OmNyZWF0ZUNvbnRleHQpOgorICAgICAg
ICAoV2ViQ29yZTo6R0xDb250ZXh0RUdMOjpHTENvbnRleHRFR0wpOgorICAgICAgICAoV2ViQ29y
ZTo6R0xDb250ZXh0RUdMOjp+R0xDb250ZXh0RUdMKToKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29u
dGV4dEVHTDo6Y2FuUmVuZGVyVG9EZWZhdWx0RnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6R0xDb250ZXh0RUdMOjpkZWZhdWx0RnJhbWVCdWZmZXJTaXplKToKKyAgICAgICAgKFdlYkNv
cmU6OkdMQ29udGV4dEVHTDo6bWFrZUNvbnRleHRDdXJyZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkdMQ29udGV4dEVHTDo6c3dhcEJ1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0
RUdMOjp3YWl0TmF0aXZlKToKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6cGxhdGZv
cm1Db250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdM
Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChHTENvbnRleHRFR0wpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dseC9HTENvbnRleHRHTFguY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R0xDb250ZXh0R0xYOjpjcmVhdGVXaW5kb3dDb250ZXh0KToKKyAgICAgICAg
KFdlYkNvcmU6OkdMQ29udGV4dEdMWDo6Y3JlYXRlUGJ1ZmZlckNvbnRleHQpOgorICAgICAgICAo
V2ViQ29yZTo6R0xDb250ZXh0R0xYOjpjcmVhdGVQaXhtYXBDb250ZXh0KToKKyAgICAgICAgKFdl
YkNvcmU6OkdMQ29udGV4dEdMWDo6Y3JlYXRlQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpH
TENvbnRleHRHTFg6On5HTENvbnRleHRHTFgpOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0
R0xYOjpkZWZhdWx0RnJhbWVCdWZmZXJTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4
dEdMWDo6bWFrZUNvbnRleHRDdXJyZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEdM
WDo6c3dhcEJ1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpH
TENvbnRleHRHTFg6OndhaXROYXRpdmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ds
eC9HTENvbnRleHRHTFguaDoKKyAgICAgICAgKEdMQ29udGV4dEdMWCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29udGV4dDNETWFjLm1tOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6cmVsZWFzZVNoYWRlckNvbXBpbGVyKToK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
cmFwaGljc0NvbnRleHQzRE9wZW5HTEVTLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNEOjpyZWFkUGl4ZWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEOjpyZXNoYXBlRkJPcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6
cmVuZGVyYnVmZmVyU3RvcmFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3Jh
cGhpY3NDb250ZXh0M0RRdC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvUmVkaXJlY3RlZFhDb21w
b3NpdGVXaW5kb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVkaXJlY3RlZFhDb21wb3NpdGVX
aW5kb3c6OlJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
ZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93Ojp+UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6OnJlc2l6ZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3RrL1JlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93Lmg6CisKIDIw
MTItMTAtMDQgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEZp
eCBzdWItZmllbGQgd2lkdGggdG8gdGhlIG1heGltdW0gd2lkdGggb2YgYSBwbGFjZWhvbGRlciBh
bmQgdGhlIG1heGltdW0gdmFsdWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBjYmZhNjRhNjM5OTdkZTYyNGIyY2E3
MzQzOTE3NzZlNTA1YjMyOWJjLi5mMjAxMDUxZjNjMWZkOGJlMjJhMDVkYjVjOTRjMjUxZmZlMGE4
YzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTItMTAtMDUgIEpvc8OpIERhcGVu
YSBQYXogIDxqZGFwZW5hQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gQWRkIHN1cHBvcnQg
Zm9yIGNyZWF0aW5nIEVHTCBjb250ZXh0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9Nzc5MjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgRUdMLCB1c2luZyBP
cGVuR0wgYW5kIE9wZW5HTCBFUyAyLiBCb3RoCisgICAgICAgIG9wdGlvbnMgYXJlIHNldCB1cCBv
biBjb21waWxlIHRpbWUsIHdpdGggdGhlIGNvbmZpZ3VyZSBvcHRpb25zCisgICAgICAgIC0tZW5h
YmxlLWVnbCBhbmQgLS1lbmFibGUtZ2xlczIuCisKKyAgICAgICAgVGhlIGltcGxlbWVudGF0aW9u
IG9ubHkgYWRkcyBzdXBwb3J0IGZvciBFR0wgb24gdG9wIG9mIFgxMSwgdG8KKyAgICAgICAgaXNv
bGF0ZSB0aGUgY2hhbmdlcyB0byB0aGUgbWluaW11bS4gTW9yZSBjaGFuZ2VzIHNob3VsZCBjb21l
CisgICAgICAgIGxhdGVyIHRvIGVuYWJsZSBFR0wgZm9yIG90aGVyIHRhcmdldHMgKGFzIFdheWxh
bmQpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0R3Rr
LmNwcDoKKwogMjAxMi0xMC0wNSAgSm9uZ3Nlb2sgWWFuZyAgPGpzNDUueWFuZ0BzYW1zdW5nLmNv
bT4KIAogICAgICAgICBbRUZMXVtXSzJdIFJlbW92ZSAid2ViIiB3b3JkIGZyb20gZXdrX3Jlc291
cmNlIEFQSXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvU291
cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggMzkwODhmM2M2YjBjNDA3YTU4NWZmMzdk
ZTFjMTM3MWE5MzA5ZjcyYy4uNWNlODU5NWEwZjIyMTVmNzNiNjBmZmRjMTNkNWZlZjcxMTE5ODli
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTExMiw2ICsxMTIsNyBAQCB3ZWJjb3JlZ3RrX2Nw
cGZsYWdzICs9IFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW9jbHVl
IFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlybyBc
CiAJLUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4IFwKKwkt
SSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wgXAogCS1JJChz
cmNkaXIpL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lciBcCiAJLUkk
KHNyY2RpcikvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrIFwKIAktSSQoc3Jj
ZGlyKS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxp
c3QuYW0KaW5kZXggYjg4ZjlkYzk2YTgwMmY5YTQzZTBkN2M2YzEzMDBjMjZjODE1YWRjYS4uMWU5
N2I1N2E3MzI1ZmVlMDU1ZTYzZjBkMDUwNWRiMjI5ZjUyMjIxMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtCkBAIC00NDU3LDE0ICs0NDU3LDkgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwK
IAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmggXAogCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oIFwKLQlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uczNET3BlbkdMLmNwcCBc
Ci0JU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9w
ZW5HTC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5z
aW9uczNET3BlbkdMQ29tbW9uLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5HTENvbW1vbi5oIFwKLQlTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwIFwKIAlT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RP
cGVuR0xDb21tb24uY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9PcGVu
R0xTaGltcy5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL09wZW5HTFNo
aW1zLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5U
eXBlVmVydGljYWxEYXRhLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Bh
dGguY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmggXApAQCAt
NTk5Niw4ICs1OTkxLDYgQEAgd2ViY29yZWd0a19zb3VyY2VzICs9IFwKIAogaWYgVEFSR0VUX1gx
MQogd2ViY29yZWd0a19zb3VyY2VzICs9IFwKLQlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nbHgvR0xDb250ZXh0R0xYLmNwcCBcCi0JU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ2x4L0dMQ29udGV4dEdMWC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9HTENvbnRleHQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9HTENvbnRleHQuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0
a1dpZGdldEJhY2tpbmdTdG9yZVgxMS5jcHAgXApAQCAtNjAwOCw2ICs2MDAxLDE2IEBAIHdlYmNv
cmVndGtfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGx1Z2lucy9ndGsvUGx1Z2luUGFj
a2FnZUd0ay5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsdWdpbnMvZ3RrL1BsdWdpblZpZXdHdGsu
Y3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbHVnaW5zL2d0ay94ZW1iZWQuaAoraWYgVVNFX0VHTAor
d2ViY29yZWd0a19zb3VyY2VzICs9IFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9lZ2wvR0xDb250ZXh0RUdMLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZWdsL0dMQ29udGV4dEVHTC5oCitlbmRpZiAjIEVORCBVU0VfRUdMCitpZiBVU0VfR0xYCit3
ZWJjb3JlZ3RrX3NvdXJjZXMgKz0gXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dseC9HTENvbnRleHRHTFguY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nbHgvR0xDb250ZXh0R0xYLmgKK2VuZGlmICMgRU5EIFVTRV9HTFgKIGVsc2UKIGlmIFRBUkdF
VF9XSU4zMgogd2ViY29yZV9zb3VyY2VzICs9IFwKQEAgLTYwMzgsNiArNjA0MSwyMSBAQCB3ZWJj
b3JlX3NvdXJjZXMgKz0gXAogZW5kaWYgIyBFTkQgVEFSR0VUX1dJTjMyCiBlbmRpZiAjIEVORCBU
QVJHRVRfWDExCiAKK2lmIFVTRV9HTEVTMgord2ViY29yZV9zb3VyY2VzICs9IFwKKwlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uczNET3BlbkdMRVMuY3Bw
IFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uczNE
T3BlbkdMRVMuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dDNET3BlbkdMRVMuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9PcGVuR0xFU1NoaW1zLmgKK2Vsc2UKK3dlYmNvcmVfc291cmNlcyArPSBcCisJU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5HTC5j
cHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25z
M0RPcGVuR0wuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvT3BlbkdMU2hpbXMuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9PcGVuR0xTaGltcy5oCitlbmRpZiAjIEVORCBVU0VfR0xFUzIKKwogIyAtLS0tCiAjIGljdSB1
bmljb2RlIGJhY2tlbmQKICMgLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKaW5kZXggNGRjYjJkMGUyYzQxZDk5YzI3M2Y5
ZDM3MzkwMWZhNTBkMDQ5OWE5MS4uODYwODIzNGU2ZjJkZjI4NDRmNjdjMTYxYzM4MzRkYTY5ZTY4
ZjNmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0M0QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQzRC5oCkBAIC0zOTUsNiArMzk1LDcgQEAgcHVibGljOgogICAgICAgICBTVEVO
Q0lMX0lOREVYOCA9IDB4OEQ0OCwKICAgICAgICAgREVQVEhfU1RFTkNJTCA9IDB4ODRGOSwKICAg
ICAgICAgVU5TSUdORURfSU5UXzI0XzggPSAweDg0RkEsCisgICAgICAgIERFUFRIMjRfU1RFTkNJ
TDggPSAweDg4RjAsCiAgICAgICAgIFJFTkRFUkJVRkZFUl9XSURUSCA9IDB4OEQ0MiwKICAgICAg
ICAgUkVOREVSQlVGRkVSX0hFSUdIVCA9IDB4OEQ0MywKICAgICAgICAgUkVOREVSQlVGRkVSX0lO
VEVSTkFMX0ZPUk1BVCA9IDB4OEQ0NCwKQEAgLTEwMjEsNyArMTAyMiw3IEBAIHB1YmxpYzoKICAg
ICBBTkdMRVdlYktpdEJyaWRnZSBtX2NvbXBpbGVyOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShC
TEFDS0JFUlJZKSB8fCAoUExBVEZPUk0oUVQpICYmIGRlZmluZWQoUVRfT1BFTkdMX0VTXzIpKQor
I2lmIFBMQVRGT1JNKEJMQUNLQkVSUlkpIHx8IChQTEFURk9STShRVCkgJiYgZGVmaW5lZChRVF9P
UEVOR0xfRVNfMikpIHx8IChQTEFURk9STShHVEspICYmIFVTRShPUEVOR0xfRVNfMikpCiAgICAg
ZnJpZW5kIGNsYXNzIEV4dGVuc2lvbnMzRE9wZW5HTEVTOwogICAgIE93blB0cjxFeHRlbnNpb25z
M0RPcGVuR0xFUz4gbV9leHRlbnNpb25zOwogI2VsaWYgIVBMQVRGT1JNKENIUk9NSVVNKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvT3BlbkdMRVNTaGltcy5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvT3BlbkdMRVNTaGltcy5oCmluZGV4
IDQwMTg3MDA0YWM2YTg5MDE1ZTQ4MzRjNWU2YzM1MDEzM2QxMDUxODMuLmJjYWY4NTVlYTZlMGMw
ZGE0YjkwZmQ2YWI4M2QzY2RmOThjNTA0ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL09wZW5HTEVTU2hpbXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9PcGVuR0xFU1NoaW1zLmgKQEAgLTI2LDcgKzI2LDcgQEAKICNpZm5kZWYg
T3BlbkdMRVNTaGltc19oCiAjZGVmaW5lIE9wZW5HTEVTU2hpbXNfaAogCi0jaWYgUExBVEZPUk0o
QkxBQ0tCRVJSWSkgfHwgUExBVEZPUk0oUVQpCisjaWYgUExBVEZPUk0oQkxBQ0tCRVJSWSkgfHwg
UExBVEZPUk0oUVQpIHx8IFBMQVRGT1JNKEdUSykKICNkZWZpbmUgZ2xCaW5kRnJhbWVidWZmZXJF
WFQgZ2xCaW5kRnJhbWVidWZmZXIKICNkZWZpbmUgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyREVYVCBn
bEZyYW1lYnVmZmVyVGV4dHVyZTJECiAjZGVmaW5lIGdsQmluZFJlbmRlcmJ1ZmZlckVYVCBnbEJp
bmRSZW5kZXJidWZmZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0dMQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9HTENvbnRleHQuY3BwCmluZGV4IDNiODA0ZjYwMmNjZjc4YWJjYzc0NWMwOWYxM2I4
MGRmNTFiNjg4ODQuLjJjYjBhYjNjYzkwMWQxMjNlYWVjZGNlYjE1NTAzODc5MzBhNTQ3NDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dMQ29udGV4
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR0xDb250
ZXh0LmNwcApAQCAtMjEsMTAgKzIxLDEyIEBACiAKICNpZiBVU0UoT1BFTkdMKQogCisjaW5jbHVk
ZSAiR0xDb250ZXh0RUdMLmgiCisjaW5jbHVkZSAiR0xDb250ZXh0R0xYLmgiCiAjaW5jbHVkZSA8
d3RmL01haW5UaHJlYWQuaD4KIAotI2lmIFVTRShHTFgpCi0jaW5jbHVkZSAiR0xDb250ZXh0R0xY
LmgiCisjaWYgUExBVEZPUk0oWDExKQorI2luY2x1ZGUgPFgxMS9YbGliLmg+CiAjZW5kaWYKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzYsMjIgKzM4LDEwNiBAQCBHTENvbnRleHQqIEdMQ29u
dGV4dDo6c2hhcmluZ0NvbnRleHQoKQogICAgIHJldHVybiBzaGFyaW5nLmdldCgpOwogfQogCisj
aWYgUExBVEZPUk0oWDExKQorLy8gV2UgZG8gbm90IHdhbnQgdG8gY2FsbCBnbFhNYWtlQ29udGV4
dEN1cnJlbnQgdXNpbmcgZGlmZmVyZW50IERpc3BsYXkgcG9pbnRlcnMsCisvLyBiZWNhdXNlIGl0
IG1pZ2h0IGxlYWQgdG8gY3Jhc2hlcyBpbiBzb21lIGRyaXZlcnMgKGZnbHJ4KS4gV2UgdXNlIGEg
c2hhcmVkIGRpc3BsYXkKKy8vIHBvaW50ZXIgaGVyZS4KK3N0YXRpYyBEaXNwbGF5KiBnU2hhcmVk
WDExRGlzcGxheSA9IDA7CitEaXNwbGF5KiBHTENvbnRleHQ6OnNoYXJlZFgxMURpc3BsYXkoKQor
eworICAgIGlmICghZ1NoYXJlZFgxMURpc3BsYXkpCisgICAgICAgIGdTaGFyZWRYMTFEaXNwbGF5
ID0gWE9wZW5EaXNwbGF5KDApOworICAgIHJldHVybiBnU2hhcmVkWDExRGlzcGxheTsKK30KKwor
dm9pZCBHTENvbnRleHQ6OmNsZWFudXBTaGFyZWRYMTFEaXNwbGF5KCkKK3sKKyAgICBpZiAoIWdT
aGFyZWRYMTFEaXNwbGF5KQorICAgICAgICByZXR1cm47CisgICAgWENsb3NlRGlzcGxheShnU2hh
cmVkWDExRGlzcGxheSk7CisgICAgZ1NoYXJlZFgxMURpc3BsYXkgPSAwOworfQorI2VuZGlmIC8v
IFBMQVRGT1JNKFgxMSkKKworLy8gQmVjYXVzZSBvZiBkcml2ZXIgYnVncywgZXhpdGluZyB0aGUg
cHJvZ3JhbSB3aGVuIHRoZXJlIGFyZSBhY3RpdmUgcGJ1ZmZlcnMKKy8vIGNhbiBjcmFzaCB0aGUg
WCBzZXJ2ZXIgKHRoaXMgaGFzIGJlZW4gb2JzZXJ2ZWQgd2l0aCB0aGUgb2ZmaWNpYWwgTnZpZGlh
IGRyaXZlcnMpLgorLy8gV2UgbmVlZCB0byBlbnN1cmUgdGhhdCB3ZSBjbGVhbiBldmVyeXRoaW5n
IHVwIG9uIGV4aXQuIFRoZXJlIGFyZSBzZXZlcmFsIHJlYXNvbnMKKy8vIHRoYXQgR3JhcGhpY3ND
b250ZXh0M0RzIHdpbGwgc3RpbGwgYmUgYWxpdmUgYXQgZXhpdCwgaW5jbHVkaW5nIHVzZXIgZXJy
b3IgKG1lbW9yeQorLy8gbGVha3MpIGFuZCB0aGUgcGFnZSBjYWNoZS4gSW4gYW55IGNhc2UsIHdl
IGRvbid0IHdhbnQgdGhlIFggc2VydmVyIHRvIGNyYXNoLgordHlwZWRlZiBWZWN0b3I8R0xDb250
ZXh0Kj4gQWN0aXZlQ29udGV4dExpc3Q7CitzdGF0aWMgQWN0aXZlQ29udGV4dExpc3QmIGFjdGl2
ZUNvbnRleHRMaXN0KCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEFjdGl2ZUNvbnRleHRM
aXN0LCBhY3RpdmVDb250ZXh0cywgKCkpOworICAgIHJldHVybiBhY3RpdmVDb250ZXh0czsKK30K
Kwordm9pZCBHTENvbnRleHQ6OmFkZEFjdGl2ZUNvbnRleHQoR0xDb250ZXh0KiBjb250ZXh0KQor
eworICAgIHN0YXRpYyBib29sIGFkZGVkQXRFeGl0SGFuZGxlciA9IGZhbHNlOworICAgIGlmICgh
YWRkZWRBdEV4aXRIYW5kbGVyKSB7CisgICAgICAgIGF0ZXhpdCgmR0xDb250ZXh0OjpjbGVhbnVw
QWN0aXZlQ29udGV4dHNBdEV4aXQpOworICAgICAgICBhZGRlZEF0RXhpdEhhbmRsZXIgPSB0cnVl
OworICAgIH0KKyAgICBhY3RpdmVDb250ZXh0TGlzdCgpLmFwcGVuZChjb250ZXh0KTsKK30KKwor
c3RhdGljIGJvb2wgZ0NsZWFuaW5nVXBBdEV4aXQgPSBmYWxzZTsKKwordm9pZCBHTENvbnRleHQ6
OnJlbW92ZUFjdGl2ZUNvbnRleHQoR0xDb250ZXh0KiBjb250ZXh0KQoreworICAgIC8vIElmIHdl
IGFyZSBjbGVhbmluZyB1cCB0aGUgY29udGV4dCBsaXN0IGF0IGV4aXQsIGRvbid0IGJvdGhlciBy
ZW1vdmluZyB0aGUgY29udGV4dAorICAgIC8vIGZyb20gdGhlIGxpc3QsIHNpbmNlIHdlIGRvbid0
IHdhbnQgdG8gbW9kaWZ5IHRoZSBsaXN0IHdoaWxlIGl0J3MgYmVpbmcgaXRlcmF0ZWQuCisgICAg
aWYgKGdDbGVhbmluZ1VwQXRFeGl0KQorICAgICAgICByZXR1cm47CisKKyAgICBBY3RpdmVDb250
ZXh0TGlzdCYgY29udGV4dExpc3QgPSBhY3RpdmVDb250ZXh0TGlzdCgpOworICAgIHNpemVfdCBp
ID0gY29udGV4dExpc3QuZmluZChjb250ZXh0KTsKKyAgICBpZiAoaSAhPSBub3RGb3VuZCkKKyAg
ICAgICAgY29udGV4dExpc3QucmVtb3ZlKGkpOworfQorCit2b2lkIEdMQ29udGV4dDo6Y2xlYW51
cEFjdGl2ZUNvbnRleHRzQXRFeGl0KCkKK3sKKyAgICBnQ2xlYW5pbmdVcEF0RXhpdCA9IHRydWU7
CisKKyAgICBBY3RpdmVDb250ZXh0TGlzdCYgY29udGV4dExpc3QgPSBhY3RpdmVDb250ZXh0TGlz
dCgpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY29udGV4dExpc3Quc2l6ZSgpOyArK2kp
CisgICAgICAgIGRlbGV0ZSBjb250ZXh0TGlzdFtpXTsKKworI2lmIFBMQVRGT1JNKFgxMSkKKyAg
ICBjbGVhbnVwU2hhcmVkWDExRGlzcGxheSgpOworI2VuZGlmCit9CisKKworCiBQYXNzT3duUHRy
PEdMQ29udGV4dD4gR0xDb250ZXh0OjpjcmVhdGVDb250ZXh0Rm9yV2luZG93KHVpbnQ2NF90IHdp
bmRvd0hhbmRsZSwgR0xDb250ZXh0KiBzaGFyaW5nQ29udGV4dCkKIHsKICNpZiBVU0UoR0xYKQot
ICAgIHJldHVybiBHTENvbnRleHRHTFg6OmNyZWF0ZUNvbnRleHQod2luZG93SGFuZGxlLCBzaGFy
aW5nQ29udGV4dCk7CisgICAgaWYgKE93blB0cjxHTENvbnRleHQ+IGdseENvbnRleHQgPSBHTENv
bnRleHRHTFg6OmNyZWF0ZUNvbnRleHQod2luZG93SGFuZGxlLCBzaGFyaW5nQ29udGV4dCkpCisg
ICAgICAgIHJldHVybiBnbHhDb250ZXh0LnJlbGVhc2UoKTsKKyNlbmRpZgorI2lmIFVTRShFR0wp
CisgICAgaWYgKE93blB0cjxHTENvbnRleHQ+IGVnbENvbnRleHQgPSBHTENvbnRleHRFR0w6OmNy
ZWF0ZUNvbnRleHQod2luZG93SGFuZGxlLCBzaGFyaW5nQ29udGV4dCkpCisgICAgICAgIHJldHVy
biBlZ2xDb250ZXh0LnJlbGVhc2UoKTsKICNlbmRpZgogICAgIHJldHVybiBudWxscHRyOwogfQog
CiBHTENvbnRleHQ6OkdMQ29udGV4dCgpCiB7CisgICAgYWRkQWN0aXZlQ29udGV4dCh0aGlzKTsK
IH0KIAotUGFzc093blB0cjxHTENvbnRleHQ+IEdMQ29udGV4dDo6Y3JlYXRlT2Zmc2NyZWVuQ29u
dGV4dChHTENvbnRleHQqIHNoYXJpbmcpCitQYXNzT3duUHRyPEdMQ29udGV4dD4gR0xDb250ZXh0
OjpjcmVhdGVPZmZzY3JlZW5Db250ZXh0KEdMQ29udGV4dCogc2hhcmluZ0NvbnRleHQpCiB7CiAj
aWYgVVNFKEdMWCkKLSAgICByZXR1cm4gR0xDb250ZXh0R0xYOjpjcmVhdGVDb250ZXh0KDAsIHNo
YXJpbmcpOworICAgIGlmIChPd25QdHI8R0xDb250ZXh0PiBnbHhDb250ZXh0ID0gR0xDb250ZXh0
R0xYOjpjcmVhdGVDb250ZXh0KDAsIHNoYXJpbmdDb250ZXh0KSkKKyAgICAgICAgcmV0dXJuIGds
eENvbnRleHQucmVsZWFzZSgpOworI2VuZGlmCisjaWYgVVNFKEVHTCkKKyAgICBpZiAoT3duUHRy
PEdMQ29udGV4dD4gZWdsQ29udGV4dCA9IEdMQ29udGV4dEVHTDo6Y3JlYXRlQ29udGV4dCgwLCBz
aGFyaW5nQ29udGV4dCkpCisgICAgICAgIHJldHVybiBlZ2xDb250ZXh0LnJlbGVhc2UoKTsKICNl
bmRpZgogICAgIHJldHVybiBudWxscHRyOwogfQpAQCAtNjQsNiArMTUwLDcgQEAgR0xDb250ZXh0
Ojp+R0xDb250ZXh0KCkKIHsKICAgICBpZiAodGhpcyA9PSBnQ3VycmVudENvbnRleHQpCiAgICAg
ICAgIGdDdXJyZW50Q29udGV4dCA9IDA7CisgICAgcmVtb3ZlQWN0aXZlQ29udGV4dCh0aGlzKTsK
IH0KIAogYm9vbCBHTENvbnRleHQ6Om1ha2VDb250ZXh0Q3VycmVudCgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HTENvbnRleHQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dMQ29udGV4dC5oCmluZGV4IGMyM2E0
NmNmMTMzMDJjNDhlZDBjYmUwM2IzNWNiNTVhNjFlOTQ4MmMuLjFhODgwNzIyMmYyMjlhYTM2MmI3
N2Q2NjY4ODdmYjZiMTdjZjMzZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0dMQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0dMQ29udGV4dC5oCkBAIC0yNSw2ICsyNSwxMCBAQAogI2luY2x1ZGUg
PHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKKyNpZiBQ
TEFURk9STShYMTEpCit0eXBlZGVmIHN0cnVjdCBfWERpc3BsYXkgRGlzcGxheTsKKyNlbmRpZgor
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEdMQ29udGV4dCB7CkBAIC0zOSw5ICs0Mywx
OSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+R0xDb250ZXh0KCk7CiAgICAgdmlydHVhbCBib29s
IG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIHZpcnR1YWwgdm9pZCBzd2FwQnVmZmVycygpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgd2FpdE5hdGl2ZSgpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wg
Y2FuUmVuZGVyVG9EZWZhdWx0RnJhbWVidWZmZXIoKSA9IDA7CiAgICAgdmlydHVhbCBJbnRTaXpl
IGRlZmF1bHRGcmFtZUJ1ZmZlclNpemUoKSA9IDA7CiAKKyNpZiBQTEFURk9STShYMTEpCisgICAg
c3RhdGljIERpc3BsYXkqIHNoYXJlZFgxMURpc3BsYXkoKTsKKyAgICBzdGF0aWMgdm9pZCBjbGVh
bnVwU2hhcmVkWDExRGlzcGxheSgpOworI2VuZGlmCisKKyAgICBzdGF0aWMgdm9pZCBhZGRBY3Rp
dmVDb250ZXh0KEdMQ29udGV4dCopOworICAgIHN0YXRpYyB2b2lkIHJlbW92ZUFjdGl2ZUNvbnRl
eHQoR0xDb250ZXh0Kik7CisgICAgc3RhdGljIHZvaWQgY2xlYW51cEFjdGl2ZUNvbnRleHRzQXRF
eGl0KCk7CisKICNpZiBVU0UoM0RfR1JBUEhJQ1MpCiAgICAgdmlydHVhbCBQbGF0Zm9ybUdyYXBo
aWNzQ29udGV4dDNEIHBsYXRmb3JtQ29udGV4dCgpID0gMDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RD
YWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGlj
c0NvbnRleHQzRENhaXJvLmNwcAppbmRleCBkYzEyZjZjNWQ2MmQ2NDcxZTU0OWVkZDhlMGFmNGQ0
MzgyNjkwMTE0Li43MDMzZmE2ZGE2NzYxMDEzNmI0NDNiZjY5MWQzMWM2ZjM2ZDQ2MGY1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0Nv
bnRleHQzRENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9HcmFwaGljc0NvbnRleHQzRENhaXJvLmNwcApAQCAtMzAsMTIgKzMwLDEwIEBACiAKICNp
ZiBVU0UoM0RfR1JBUEhJQ1MpCiAKLSNpbmNsdWRlICJFeHRlbnNpb25zM0RPcGVuR0wuaCIKICNp
bmNsdWRlICJHcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaCIKICNpbmNsdWRlICJJbWFnZS5oIgog
I2luY2x1ZGUgIkltYWdlU291cmNlLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLSNp
bmNsdWRlICJPcGVuR0xTaGltcy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dENhaXJvLmgi
CiAjaW5jbHVkZSAiUmVmUHRyQ2Fpcm8uaCIKICNpbmNsdWRlICJTaGFkZXJMYW5nLmgiCkBAIC00
NCw2ICs0MiwxMyBAQAogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFz
c093blB0ci5oPgogCisjaWYgVVNFKE9QRU5HTF9FU18yKQorI2luY2x1ZGUgIkV4dGVuc2lvbnMz
RE9wZW5HTEVTLmgiCisjZWxzZQorI2luY2x1ZGUgIkV4dGVuc2lvbnMzRE9wZW5HTC5oIgorI2lu
Y2x1ZGUgIk9wZW5HTFNoaW1zLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBQ
YXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlKEdy
YXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIEhvc3RXaW5kb3cqIGhvc3RX
aW5kb3csIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJTdHlsZSByZW5kZXJTdHlsZSkKQEAgLTU1
LDcgKzYwLDkgQEAgUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gR3JhcGhpY3NDb250ZXh0
M0Q6OmNyZWF0ZShHcmFwaGljc0NvbnRleHQzRDo6QXR0cmkKICAgICBzdGF0aWMgYm9vbCBpbml0
aWFsaXplZCA9IGZhbHNlOwogICAgIHN0YXRpYyBib29sIHN1Y2Nlc3MgPSB0cnVlOwogICAgIGlm
ICghaW5pdGlhbGl6ZWQpIHsKKyNpZiAhVVNFKE9QRU5HTF9FU18yKQogICAgICAgICBzdWNjZXNz
ID0gaW5pdGlhbGl6ZU9wZW5HTFNoaW1zKCk7CisjZW5kaWYKICAgICAgICAgaW5pdGlhbGl6ZWQg
PSB0cnVlOwogICAgIH0KICAgICBpZiAoIXN1Y2Nlc3MpCkBAIC05MCwyNiArOTcsMjYgQEAgR3Jh
cGhpY3NDb250ZXh0M0Q6OkdyYXBoaWNzQ29udGV4dDNEKEdyYXBoaWNzQ29udGV4dDNEOjpBdHRy
aWJ1dGVzIGF0dHJpYnV0ZXMsIEgKICAgICAgICAgOjpnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVf
MkQsIG1fdGV4dHVyZSk7CiAgICAgICAgIDo6Z2xUZXhQYXJhbWV0ZXJmKEdMX1RFWFRVUkVfMkQs
IEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTElORUFSKTsKICAgICAgICAgOjpnbFRleFBhcmFt
ZXRlcmYoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9MSU5FQVIpOwot
ICAgICAgICA6OmdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBf
UywgR0xfQ0xBTVApOwotICAgICAgICA6OmdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBH
TF9URVhUVVJFX1dSQVBfVCwgR0xfQ0xBTVApOworICAgICAgICA6OmdsVGV4UGFyYW1ldGVyaShH
TF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfUywgR0xfQ0xBTVBfVE9fRURHRSk7CisgICAg
ICAgIDo6Z2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9ULCBH
TF9DTEFNUF9UT19FREdFKTsKICAgICAgICAgOjpnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQs
IDApOwogCiAgICAgICAgIC8vIENyZWF0ZSBhbiBGQk8uCi0gICAgICAgIDo6Z2xHZW5GcmFtZWJ1
ZmZlcnNFWFQoMSwgJm1fZmJvKTsKLSAgICAgICAgOjpnbEJpbmRGcmFtZWJ1ZmZlckVYVChHTF9G
UkFNRUJVRkZFUl9FWFQsIG1fZmJvKTsKKyAgICAgICAgOjpnbEdlbkZyYW1lYnVmZmVycygxLCAm
bV9mYm8pOworICAgICAgICA6OmdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtX2Zi
byk7CiAKICAgICAgICAgbV9ib3VuZEZCTyA9IG1fZmJvOwogICAgICAgICBpZiAoIW1fYXR0cnMu
YW50aWFsaWFzICYmIChtX2F0dHJzLnN0ZW5jaWwgfHwgbV9hdHRycy5kZXB0aCkpCi0gICAgICAg
ICAgICA6OmdsR2VuUmVuZGVyYnVmZmVyc0VYVCgxLCAmbV9kZXB0aFN0ZW5jaWxCdWZmZXIpOwor
ICAgICAgICAgICAgOjpnbEdlblJlbmRlcmJ1ZmZlcnMoMSwgJm1fZGVwdGhTdGVuY2lsQnVmZmVy
KTsKIAogICAgICAgICAvLyBDcmVhdGUgYSBtdWx0aXNhbXBsZSBGQk8uCiAgICAgICAgIGlmICht
X2F0dHJzLmFudGlhbGlhcykgewotICAgICAgICAgICAgOjpnbEdlbkZyYW1lYnVmZmVyc0VYVCgx
LCAmbV9tdWx0aXNhbXBsZUZCTyk7Ci0gICAgICAgICAgICA6OmdsQmluZEZyYW1lYnVmZmVyRVhU
KEdMX0ZSQU1FQlVGRkVSX0VYVCwgbV9tdWx0aXNhbXBsZUZCTyk7CisgICAgICAgICAgICA6Omds
R2VuRnJhbWVidWZmZXJzKDEsICZtX211bHRpc2FtcGxlRkJPKTsKKyAgICAgICAgICAgIDo6Z2xC
aW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1fbXVsdGlzYW1wbGVGQk8pOwogICAgICAg
ICAgICAgbV9ib3VuZEZCTyA9IG1fbXVsdGlzYW1wbGVGQk87Ci0gICAgICAgICAgICA6OmdsR2Vu
UmVuZGVyYnVmZmVyc0VYVCgxLCAmbV9tdWx0aXNhbXBsZUNvbG9yQnVmZmVyKTsKKyAgICAgICAg
ICAgIDo6Z2xHZW5SZW5kZXJidWZmZXJzKDEsICZtX211bHRpc2FtcGxlQ29sb3JCdWZmZXIpOwog
ICAgICAgICAgICAgaWYgKG1fYXR0cnMuc3RlbmNpbCB8fCBtX2F0dHJzLmRlcHRoKQotICAgICAg
ICAgICAgICAgIDo6Z2xHZW5SZW5kZXJidWZmZXJzRVhUKDEsICZtX211bHRpc2FtcGxlRGVwdGhT
dGVuY2lsQnVmZmVyKTsKKyAgICAgICAgICAgICAgICA6OmdsR2VuUmVuZGVyYnVmZmVycygxLCAm
bV9tdWx0aXNhbXBsZURlcHRoU3RlbmNpbEJ1ZmZlcik7CiAgICAgICAgIH0KICAgICB9CiAKQEAg
LTEyOSw4ICsxMzYsMTEgQEAgR3JhcGhpY3NDb250ZXh0M0Q6OkdyYXBoaWNzQ29udGV4dDNEKEdy
YXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIEgKICAgICBBTkdMRVJlc291
cmNlcy5NYXhEcmF3QnVmZmVycyA9IDE7CiAgICAgbV9jb21waWxlci5zZXRSZXNvdXJjZXMoQU5H
TEVSZXNvdXJjZXMpOwogCisjaWYgIVVTRShPUEVOR0xfRVNfMikKICAgICA6OmdsRW5hYmxlKEdM
X1ZFUlRFWF9QUk9HUkFNX1BPSU5UX1NJWkUpOwogICAgIDo6Z2xFbmFibGUoR0xfUE9JTlRfU1BS
SVRFKTsKKyNlbmRpZgorCiAgICAgOjpnbENsZWFyQ29sb3IoMCwgMCwgMCwgMCk7CiB9CiAKQEAg
LTE0MiwyMCArMTUyLDE1IEBAIEdyYXBoaWNzQ29udGV4dDNEOjp+R3JhcGhpY3NDb250ZXh0M0Qo
KQogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIDo6Z2xEZWxldGVUZXh0dXJlcygxLCAm
bV90ZXh0dXJlKTsKICAgICBpZiAobV9hdHRycy5hbnRpYWxpYXMpIHsKLSAgICAgICAgOjpnbERl
bGV0ZVJlbmRlcmJ1ZmZlcnNFWFQoMSwgJm1fbXVsdGlzYW1wbGVDb2xvckJ1ZmZlcik7CisgICAg
ICAgIDo6Z2xEZWxldGVSZW5kZXJidWZmZXJzKDEsICZtX211bHRpc2FtcGxlQ29sb3JCdWZmZXIp
OwogICAgICAgICBpZiAobV9hdHRycy5zdGVuY2lsIHx8IG1fYXR0cnMuZGVwdGgpCi0gICAgICAg
ICAgICA6OmdsRGVsZXRlUmVuZGVyYnVmZmVyc0VYVCgxLCAmbV9tdWx0aXNhbXBsZURlcHRoU3Rl
bmNpbEJ1ZmZlcik7Ci0gICAgICAgIDo6Z2xEZWxldGVGcmFtZWJ1ZmZlcnNFWFQoMSwgJm1fbXVs
dGlzYW1wbGVGQk8pOworICAgICAgICAgICAgOjpnbERlbGV0ZVJlbmRlcmJ1ZmZlcnMoMSwgJm1f
bXVsdGlzYW1wbGVEZXB0aFN0ZW5jaWxCdWZmZXIpOworICAgICAgICA6OmdsRGVsZXRlRnJhbWVi
dWZmZXJzKDEsICZtX211bHRpc2FtcGxlRkJPKTsKICAgICB9IGVsc2UgewogICAgICAgICBpZiAo
bV9hdHRycy5zdGVuY2lsIHx8IG1fYXR0cnMuZGVwdGgpCi0gICAgICAgICAgICA6OmdsRGVsZXRl
UmVuZGVyYnVmZmVyc0VYVCgxLCAmbV9kZXB0aFN0ZW5jaWxCdWZmZXIpOworICAgICAgICAgICAg
OjpnbERlbGV0ZVJlbmRlcmJ1ZmZlcnMoMSwgJm1fZGVwdGhTdGVuY2lsQnVmZmVyKTsKICAgICB9
Ci0gICAgOjpnbERlbGV0ZUZyYW1lYnVmZmVyc0VYVCgxLCAmbV9mYm8pOwotfQotCi12b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjpyZWxlYXNlU2hhZGVyQ29tcGlsZXIoKQotewotICAgIG5vdEltcGxl
bWVudGVkKCk7CisgICAgOjpnbERlbGV0ZUZyYW1lYnVmZmVycygxLCAmbV9mYm8pOwogfQogCiBi
b29sIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRJbWFnZURhdGEoSW1hZ2UqIGltYWdlLCB1bnNpZ25l
ZCBpbnQgZm9ybWF0LCB1bnNpZ25lZCBpbnQgdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBi
b29sIGlnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlLCBWZWN0b3I8dWludDhfdD4mIG91dHB1dFZl
Y3RvcikKQEAgLTI1OCw3ICsyNjMsMTEgQEAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCBHcmFw
aGljc0NvbnRleHQzRDo6cGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCgpCiAKIGJvb2wgR3JhcGhp
Y3NDb250ZXh0M0Q6OmlzR0xFUzJDb21wbGlhbnQoKSBjb25zdAogeworI2lmIFVTRShPUEVOR0xf
RVNfMikKKyAgICByZXR1cm4gdHJ1ZTsKKyNlbHNlCiAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlm
CiB9CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRFByaXZh
dGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3ND
b250ZXh0M0RQcml2YXRlLmNwcAppbmRleCBkODgyNDJmOTY3YTZkNGIxOWI1MTFmNDQ1NjlhMzMz
ZmE0YjJhNTMwLi4zZTA1OWI2NmFhZWUxODlkNjRjYTQ1NDk4OWQ4OTgwYmNjZTdmYjUwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0Nv
bnRleHQzRFByaXZhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5jcHAKQEAgLTI0LDEwICsyNCwxNyBAQAog
CiAjaW5jbHVkZSAiSG9zdFdpbmRvdy5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0j
aW5jbHVkZSAiT3BlbkdMU2hpbXMuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUNvbnRleHRDYWlyby5o
IgogI2luY2x1ZGUgPHd0Zi9Pd25BcnJheVB0ci5oPgogCisjaWYgVVNFKE9QRU5HTF9FU18yKQor
I2luY2x1ZGUgIk9wZW5HTEVTU2hpbXMuaCIKKyNpbmNsdWRlIDxHTEVTMi9nbDIuaD4KKyNpbmNs
dWRlIDxHTEVTMi9nbDJleHQuaD4KKyNlbHNlCisjaW5jbHVkZSAiT3BlbkdMU2hpbXMuaCIKKyNl
bmRpZgorCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKSAmJiBVU0UoVEVYVFVSRV9N
QVBQRVIpICYmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKICNpbmNsdWRlIDx0ZXhtYXAvVGV4dHVy
ZU1hcHBlckdMLmg+CiAjZW5kaWYKQEAgLTEyNSw3ICsxMzIsNyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEUHJpdmF0ZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVy
ZU1hcHBlcgogICAgICAgICAgICAgbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKIAog
ICAgICAgICBtX2NvbnRleHQtPnJlc29sdmVNdWx0aXNhbXBsaW5nSWZOZWNlc3NhcnkoKTsKLSAg
ICAgICAgZ2xCaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBt
X2NvbnRleHQtPm1fYm91bmRGQk8pOworICAgICAgICA6OmdsQmluZEZyYW1lYnVmZmVyRVhUKEdy
YXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9jb250ZXh0LT5tX2JvdW5kRkJPKTsKIAog
ICAgICAgICBpZiAocHJldmlvdXNBY3RpdmVDb250ZXh0ICYmIHByZXZpb3VzQWN0aXZlQ29udGV4
dCAhPSBtX2dsQ29udGV4dCkKICAgICAgICAgICAgIHByZXZpb3VzQWN0aXZlQ29udGV4dC0+bWFr
ZUNvbnRleHRDdXJyZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jbHV0dGVyL0dyYXBoaWNzQ29udGV4dDNEQ2x1dHRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jbHV0dGVyL0dyYXBoaWNzQ29udGV4dDNEQ2x1dHRlci5j
cHAKaW5kZXggYWJmYmQ0N2U2YWUzMjI5MDg4YTM4M2IwMzRlNmY5MTdlMzRjOGJlZi4uN2RmMWVl
OTJkYjU5M2JmNzcwMDgxN2Q1MmFkNWI4MzU5ZjA3OWZiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2x1dHRlci9HcmFwaGljc0NvbnRleHQzRENsdXR0ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NsdXR0ZXIvR3JhcGhp
Y3NDb250ZXh0M0RDbHV0dGVyLmNwcApAQCAtNTYsMTEgKzU2LDYgQEAgR3JhcGhpY3NDb250ZXh0
M0Q6On5HcmFwaGljc0NvbnRleHQzRCgpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9p
ZCBHcmFwaGljc0NvbnRleHQzRDo6cmVsZWFzZVNoYWRlckNvbXBpbGVyKCkKLXsKLSAgICBub3RJ
bXBsZW1lbnRlZCgpOwotfQotCiBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRJbWFnZURhdGEo
SW1hZ2UqIGltYWdlLCB1bnNpZ25lZCBpbnQgZm9ybWF0LCB1bnNpZ25lZCBpbnQgdHlwZSwgYm9v
bCBwcmVtdWx0aXBseUFscGhhLCBib29sIGlnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlLCBWZWN0
b3I8dWludDhfdD4mIG91dHB1dFZlY3RvcikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29u
dGV4dDNERWZsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFw
aGljc0NvbnRleHQzREVmbC5jcHAKaW5kZXggNzIxZDdjN2JlYTU2ZTE4OTkwYTQxM2Y4MTg1ZjJh
ZmU3ZjY1OTkzMC4uYjVmMTQxNTg1NGUyNTQ4ZWEzMzIwZWQ2ZmQ1YTQzODNmYWMyZGZmOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29u
dGV4dDNERWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwv
R3JhcGhpY3NDb250ZXh0M0RFZmwuY3BwCkBAIC00NzQsMTEgKzQ3NCw2IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OnJlYWRQaXhlbHMoR0MzRGludCB4LCBHQzNEaW50IHksIEdDM0RzaXplaSB3
aWR0aCwgR0MzRHNpCiAgICAgbV9wcml2YXRlLT5yZWFkUGl4ZWxzKHgsIHksIHdpZHRoLCBoZWln
aHQsIGZvcm1hdCwgdHlwZSwgZGF0YSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnJl
bGVhc2VTaGFkZXJDb21waWxlcigpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQogdm9p
ZCBHcmFwaGljc0NvbnRleHQzRDo6cmVuZGVyYnVmZmVyU3RvcmFnZShHQzNEZW51bSB0YXJnZXQs
IEdDM0RlbnVtIGludGVybmFsZm9ybWF0LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWln
aHQpCiB7CiAgICAgbV9wcml2YXRlLT5yZW5kZXJidWZmZXJTdG9yYWdlKHRhcmdldCwgaW50ZXJu
YWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44Y2FkYjAzM2Vm
NTNkMjQ3Mzk0MGY0ZmVjNTUzYTNkZTE4ODJhNWI5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5jcHAKQEAgLTAsMCAr
MSwyNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlhLCBTLkwuCisgKgorICog
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdl
bmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqICBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1B
ICAwMjExMC0xMzAxICBVU0EKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
R0xDb250ZXh0RUdMLmgiCisKKyNpZiBVU0UoRUdMKQorCisjaW5jbHVkZSAiR3JhcGhpY3NDb250
ZXh0M0QuaCIKKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisKKyNpZiBVU0UoT1BFTkdMX0VTXzIp
CisjaW5jbHVkZSA8R0xFUzIvZ2wyLmg+CisjaW5jbHVkZSA8R0xFUzIvZ2wyZXh0Lmg+CisjZWxz
ZQorI2luY2x1ZGUgIk9wZW5HTFNoaW1zLmgiCisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitzdGF0aWMgRUdMRGlzcGxheSBnU2hhcmVkRUdMRGlzcGxheSA9IEVHTF9OT19ESVNQTEFZ
OworCisjaWYgVVNFKE9QRU5HTF9FU18yKQorc3RhdGljIGNvbnN0IEVHTGVudW0gZ0dMQVBJID0g
RUdMX09QRU5HTF9FU19BUEk7CisjZWxzZQorc3RhdGljIGNvbnN0IEVHTGVudW0gZ0dMQVBJID0g
RUdMX09QRU5HTF9BUEk7CisjZW5kaWYKKworc3RhdGljIEVHTERpc3BsYXkgc2hhcmVkRUdMRGlz
cGxheSgpCit7CisgICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQgPSBmYWxzZTsKKyAgICBpZiAo
IWluaXRpYWxpemVkKSB7CisgICAgICAgIGluaXRpYWxpemVkID0gdHJ1ZTsKKyNpZiBQTEFURk9S
TShYMTEpCisgICAgICAgIGdTaGFyZWRFR0xEaXNwbGF5ID0gZWdsR2V0RGlzcGxheShHTENvbnRl
eHQ6OnNoYXJlZFgxMURpc3BsYXkoKSk7CisjZWxzZQorICAgICAgICBnU2hhcmVkRUdMRGlzcGxh
eSA9IGVnbEdldERpc3BsYXkoRUdMX0RFRkFVTFRfRElTUExBWSk7CisjZW5kaWYKKyAgICAgICAg
aWYgKGdTaGFyZWRFR0xEaXNwbGF5ICE9IEVHTF9OT19ESVNQTEFZICYmICghZWdsSW5pdGlhbGl6
ZShnU2hhcmVkRUdMRGlzcGxheSwgMCwgMCkgfHwgIWVnbEJpbmRBUEkoZ0dMQVBJKSkpCisgICAg
ICAgICAgICBnU2hhcmVkRUdMRGlzcGxheSA9IEVHTF9OT19ESVNQTEFZOworICAgIH0KKyAgICBy
ZXR1cm4gZ1NoYXJlZEVHTERpc3BsYXk7Cit9CisKK3N0YXRpYyBjb25zdCBFR0xpbnQgZ0NvbnRl
eHRBdHRyaWJ1dGVzW10gPSB7CisjaWYgVVNFKE9QRU5HTF9FU18yKQorICAgIEVHTF9DT05URVhU
X0NMSUVOVF9WRVJTSU9OLCAyLAorI2VuZGlmCisgICAgRUdMX05PTkUKK307CisKK3N0YXRpYyBi
b29sIGdldEVHTENvbmZpZyhFR0xDb25maWcqIGNvbmZpZywgR0xDb250ZXh0RUdMOjpFR0xTdXJm
YWNlVHlwZSBzdXJmYWNlVHlwZSkKK3sKKyAgICBFR0xpbnQgYXR0cmlidXRlTGlzdFtdID0gewor
I2lmIFVTRShPUEVOR0xfRVNfMikKKyAgICAgICAgRUdMX1JFTkRFUkFCTEVfVFlQRSwgRUdMX09Q
RU5HTF9FUzJfQklULAorI2Vsc2UKKyAgICAgICAgRUdMX1JFTkRFUkFCTEVfVFlQRSwgRUdMX09Q
RU5HTF9CSVQsCisjZW5kaWYKKyAgICAgICAgRUdMX1JFRF9TSVpFLCA4LAorICAgICAgICBFR0xf
R1JFRU5fU0laRSwgOCwKKyAgICAgICAgRUdMX0JMVUVfU0laRSwgOCwKKyAgICAgICAgRUdMX1NU
RU5DSUxfU0laRSwgOCwKKyAgICAgICAgRUdMX0FMUEhBX1NJWkUsIDgsCisgICAgICAgIEVHTF9T
VVJGQUNFX1RZUEUsIEVHTF9OT05FLAorICAgICAgICBFR0xfTk9ORQorICAgIH07CisKKyAgICBz
d2l0Y2ggKHN1cmZhY2VUeXBlKSB7CisgICAgY2FzZSBHTENvbnRleHRFR0w6OlBidWZmZXJTdXJm
YWNlOgorICAgICAgICBhdHRyaWJ1dGVMaXN0WzEzXSA9IEVHTF9QQlVGRkVSX0JJVDsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBHTENvbnRleHRFR0w6OlBpeG1hcFN1cmZhY2U6CisgICAgICAg
IGF0dHJpYnV0ZUxpc3RbMTNdID0gRUdMX1BJWE1BUF9CSVQ7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgR0xDb250ZXh0RUdMOjpXaW5kb3dTdXJmYWNlOgorICAgICAgICBhdHRyaWJ1dGVMaXN0
WzEzXSA9IEVHTF9XSU5ET1dfQklUOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBFR0xp
bnQgbnVtYmVyQ29uZmlnc1JldHVybmVkOworICAgIHJldHVybiBlZ2xDaG9vc2VDb25maWcoc2hh
cmVkRUdMRGlzcGxheSgpLCBhdHRyaWJ1dGVMaXN0LCBjb25maWcsIDEsICZudW1iZXJDb25maWdz
UmV0dXJuZWQpICYmIG51bWJlckNvbmZpZ3NSZXR1cm5lZDsKK30KKworUGFzc093blB0cjxHTENv
bnRleHRFR0w+IEdMQ29udGV4dEVHTDo6Y3JlYXRlV2luZG93Q29udGV4dChFR0xOYXRpdmVXaW5k
b3dUeXBlIHdpbmRvdywgR0xDb250ZXh0KiBzaGFyaW5nQ29udGV4dCkKK3sKKyAgICBFR0xDb250
ZXh0IGVnbFNoYXJpbmdDb250ZXh0ID0gc2hhcmluZ0NvbnRleHQgPyBzdGF0aWNfY2FzdDxHTENv
bnRleHRFR0wqPihzaGFyaW5nQ29udGV4dCktPm1fY29udGV4dCA6IDA7CisKKyAgICBFR0xEaXNw
bGF5IGRpc3BsYXkgPSBzaGFyZWRFR0xEaXNwbGF5KCk7CisgICAgaWYgKGRpc3BsYXkgPT0gRUdM
X05PX0RJU1BMQVkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgRUdMQ29uZmlnIGNv
bmZpZzsKKyAgICBpZiAoIWdldEVHTENvbmZpZygmY29uZmlnLCBXaW5kb3dTdXJmYWNlKSkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBFR0xDb250ZXh0IGNvbnRleHQgPSBlZ2xDcmVh
dGVDb250ZXh0KGRpc3BsYXksIGNvbmZpZywgZWdsU2hhcmluZ0NvbnRleHQsIGdDb250ZXh0QXR0
cmlidXRlcyk7CisgICAgaWYgKGNvbnRleHQgPT0gRUdMX05PX0NPTlRFWFQpCisgICAgICAgIHJl
dHVybiBudWxscHRyOworCisgICAgRUdMU3VyZmFjZSBzdXJmYWNlID0gZWdsQ3JlYXRlV2luZG93
U3VyZmFjZShkaXNwbGF5LCBjb25maWcsIHdpbmRvdywgMCk7CisgICAgaWYgKHN1cmZhY2UgPT0g
RUdMX05PX1NVUkZBQ0UpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIGFk
b3B0UHRyKG5ldyBHTENvbnRleHRFR0woY29udGV4dCwgc3VyZmFjZSwgV2luZG93U3VyZmFjZSkp
OworfQorCitQYXNzT3duUHRyPEdMQ29udGV4dEVHTD4gR0xDb250ZXh0RUdMOjpjcmVhdGVQYnVm
ZmVyQ29udGV4dChFR0xDb250ZXh0IHNoYXJpbmdDb250ZXh0KQoreworICAgIEVHTERpc3BsYXkg
ZGlzcGxheSA9IHNoYXJlZEVHTERpc3BsYXkoKTsKKyAgICBpZiAoZGlzcGxheSA9PSBFR0xfTk9f
RElTUExBWSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBFR0xDb25maWcgY29uZmln
OworICAgIGlmICghZ2V0RUdMQ29uZmlnKCZjb25maWcsIFBidWZmZXJTdXJmYWNlKSkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBFR0xDb250ZXh0IGNvbnRleHQgPSBlZ2xDcmVhdGVD
b250ZXh0KGRpc3BsYXksIGNvbmZpZywgc2hhcmluZ0NvbnRleHQsIGdDb250ZXh0QXR0cmlidXRl
cyk7CisgICAgaWYgKGNvbnRleHQgPT0gRUdMX05PX0NPTlRFWFQpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworCisgICAgc3RhdGljIGNvbnN0IGludCBwYnVmZmVyQXR0cmlidXRlc1tdID0geyBF
R0xfV0lEVEgsIDEsIEVHTF9IRUlHSFQsIDEsIEVHTF9OT05FIH07CisgICAgRUdMU3VyZmFjZSBz
dXJmYWNlID0gZWdsQ3JlYXRlUGJ1ZmZlclN1cmZhY2UoZGlzcGxheSwgY29uZmlnLCBwYnVmZmVy
QXR0cmlidXRlcyk7CisgICAgaWYgKHN1cmZhY2UgPT0gRUdMX05PX1NVUkZBQ0UpIHsKKyAgICAg
ICAgZWdsRGVzdHJveUNvbnRleHQoZGlzcGxheSwgY29udGV4dCk7CisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIH0KKworICAgIHJldHVybiBhZG9wdFB0cihuZXcgR0xDb250ZXh0RUdMKGNv
bnRleHQsIHN1cmZhY2UsIFBidWZmZXJTdXJmYWNlKSk7Cit9CisKK1Bhc3NPd25QdHI8R0xDb250
ZXh0RUdMPiBHTENvbnRleHRFR0w6OmNyZWF0ZVBpeG1hcENvbnRleHQoRUdMQ29udGV4dCBzaGFy
aW5nQ29udGV4dCkKK3sKKyNpZiBQTEFURk9STShYMTEpCisgICAgRUdMRGlzcGxheSBkaXNwbGF5
ID0gc2hhcmVkRUdMRGlzcGxheSgpOworICAgIGlmIChkaXNwbGF5ID09IEVHTF9OT19ESVNQTEFZ
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIEVHTENvbmZpZyBjb25maWc7CisgICAg
aWYgKCFnZXRFR0xDb25maWcoJmNvbmZpZywgUGl4bWFwU3VyZmFjZSkpCisgICAgICAgIHJldHVy
biBudWxscHRyOworCisgICAgRUdMQ29udGV4dCBjb250ZXh0ID0gZWdsQ3JlYXRlQ29udGV4dChk
aXNwbGF5LCBjb25maWcsIHNoYXJpbmdDb250ZXh0LCBnQ29udGV4dEF0dHJpYnV0ZXMpOworICAg
IGlmIChjb250ZXh0ID09IEVHTF9OT19DT05URVhUKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KworICAgIEVHTGludCBkZXB0aDsKKyAgICBpZiAoIWVnbEdldENvbmZpZ0F0dHJpYihkaXNwbGF5
LCBjb25maWcsIEVHTF9ERVBUSF9TSVpFLCAmZGVwdGgpKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKworICAgIFBpeG1hcCBwaXhtYXAgPSBYQ3JlYXRlUGl4bWFwKHNoYXJlZFgxMURpc3BsYXko
KSwgRGVmYXVsdFJvb3RXaW5kb3coc2hhcmVkWDExRGlzcGxheSgpKSwgMSwgMSwgZGVwdGgpOwor
ICAgIGlmICghcGl4bWFwKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIEVHTFN1cmZh
Y2Ugc3VyZmFjZSA9IGVnbENyZWF0ZVBpeG1hcFN1cmZhY2UoZGlzcGxheSwgY29uZmlnLCBwaXht
YXAsIDApOworI2Vsc2UKKyAgICBFR0xTdXJmYWNlIHN1cmZhY2UgPSBFR0xfTk9fU1VSRkFDRTsK
KyNlbmRpZgorICAgIGlmIChzdXJmYWNlID09IEVHTF9OT19TVVJGQUNFKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBhZG9wdFB0cihuZXcgR0xDb250ZXh0RUdMKGNvbnRl
eHQsIHN1cmZhY2UsIFBpeG1hcFN1cmZhY2UpKTsKK30KKworUGFzc093blB0cjxHTENvbnRleHRF
R0w+IEdMQ29udGV4dEVHTDo6Y3JlYXRlQ29udGV4dChFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRv
dywgR0xDb250ZXh0KiBzaGFyaW5nQ29udGV4dCkKK3sKKyAgICBpZiAoIXNoYXJlZEVHTERpc3Bs
YXkoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBzdGF0aWMgYm9vbCBpbml0aWFs
aXplZCA9IGZhbHNlOworICAgIHN0YXRpYyBib29sIHN1Y2Nlc3MgPSB0cnVlOworICAgIGlmICgh
aW5pdGlhbGl6ZWQpIHsKKyNpZiAhVVNFKE9QRU5HTF9FU18yKQorICAgICAgICBzdWNjZXNzID0g
aW5pdGlhbGl6ZU9wZW5HTFNoaW1zKCk7CisjZW5kaWYKKyAgICAgICAgaW5pdGlhbGl6ZWQgPSB0
cnVlOworICAgIH0KKyAgICBpZiAoIXN1Y2Nlc3MpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
CisgICAgRUdMQ29udGV4dCBlZ2xTaGFyaW5nQ29udGV4dCA9IHNoYXJpbmdDb250ZXh0ID8gc3Rh
dGljX2Nhc3Q8R0xDb250ZXh0RUdMKj4oc2hhcmluZ0NvbnRleHQpLT5tX2NvbnRleHQgOiAwOwor
ICAgIE93blB0cjxHTENvbnRleHRFR0w+IGNvbnRleHQgPSB3aW5kb3cgPyBjcmVhdGVXaW5kb3dD
b250ZXh0KHdpbmRvdywgc2hhcmluZ0NvbnRleHQpIDogbnVsbHB0cjsKKyAgICBpZiAoIWNvbnRl
eHQpCisgICAgICAgIGNvbnRleHQgPSBjcmVhdGVQaXhtYXBDb250ZXh0KGVnbFNoYXJpbmdDb250
ZXh0KTsKKworICAgIGlmICghY29udGV4dCkKKyAgICAgICAgY29udGV4dCA9IGNyZWF0ZVBidWZm
ZXJDb250ZXh0KGVnbFNoYXJpbmdDb250ZXh0KTsKKyAgICAKKyAgICByZXR1cm4gY29udGV4dC5y
ZWxlYXNlKCk7Cit9CisKK0dMQ29udGV4dEVHTDo6R0xDb250ZXh0RUdMKEVHTENvbnRleHQgY29u
dGV4dCwgRUdMU3VyZmFjZSBzdXJmYWNlLCBFR0xTdXJmYWNlVHlwZSB0eXBlKQorICAgIDogR0xD
b250ZXh0KCkKKyAgICAsIG1fY29udGV4dChjb250ZXh0KQorICAgICwgbV9zdXJmYWNlKHN1cmZh
Y2UpCisgICAgLCBtX3R5cGUodHlwZSkKK3sKK30KKworR0xDb250ZXh0RUdMOjp+R0xDb250ZXh0
RUdMKCkKK3sKKyAgICBFR0xEaXNwbGF5IGRpc3BsYXkgPSBzaGFyZWRFR0xEaXNwbGF5KCk7Cisg
ICAgaWYgKG1fY29udGV4dCkgeworICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJV
RkZFUiwgMCk7CisgICAgICAgIGVnbE1ha2VDdXJyZW50KGRpc3BsYXksIEVHTF9OT19TVVJGQUNF
LCBFR0xfTk9fU1VSRkFDRSwgRUdMX05PX0NPTlRFWFQpOworICAgICAgICBlZ2xEZXN0cm95Q29u
dGV4dChkaXNwbGF5LCBtX2NvbnRleHQpOworICAgIH0KKworICAgIGlmIChtX3N1cmZhY2UpCisg
ICAgICAgIGVnbERlc3Ryb3lTdXJmYWNlKGRpc3BsYXksIG1fc3VyZmFjZSk7Cit9CisKK2Jvb2wg
R0xDb250ZXh0RUdMOjpjYW5SZW5kZXJUb0RlZmF1bHRGcmFtZWJ1ZmZlcigpCit7CisgICAgcmV0
dXJuIG1fdHlwZSA9PSBXaW5kb3dTdXJmYWNlOworfQorCitJbnRTaXplIEdMQ29udGV4dEVHTDo6
ZGVmYXVsdEZyYW1lQnVmZmVyU2l6ZSgpCit7CisgICAgaWYgKCFjYW5SZW5kZXJUb0RlZmF1bHRG
cmFtZWJ1ZmZlcigpKQorICAgICAgICByZXR1cm4gSW50U2l6ZSgpOworCisgICAgRUdMaW50IHdp
ZHRoLCBoZWlnaHQ7CisgICAgaWYgKCFlZ2xRdWVyeVN1cmZhY2Uoc2hhcmVkRUdMRGlzcGxheSgp
LCBtX3N1cmZhY2UsIEVHTF9XSURUSCwgJndpZHRoKQorICAgICAgICB8fCAhZWdsUXVlcnlTdXJm
YWNlKHNoYXJlZEVHTERpc3BsYXkoKSwgbV9zdXJmYWNlLCBFR0xfSEVJR0hULCAmaGVpZ2h0KSkK
KyAgICAgICAgcmV0dXJuIEludFNpemUoKTsKKworICAgIHJldHVybiBJbnRTaXplKHdpZHRoLCBo
ZWlnaHQpOworfQorCitib29sIEdMQ29udGV4dEVHTDo6bWFrZUNvbnRleHRDdXJyZW50KCkKK3sK
KyAgICBBU1NFUlQobV9jb250ZXh0ICYmIG1fc3VyZmFjZSk7CisKKyAgICBHTENvbnRleHQ6Om1h
a2VDb250ZXh0Q3VycmVudCgpOworICAgIGlmIChlZ2xHZXRDdXJyZW50Q29udGV4dCgpID09IG1f
Y29udGV4dCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICByZXR1cm4gZWdsTWFrZUN1cnJl
bnQoc2hhcmVkRUdMRGlzcGxheSgpLCBtX3N1cmZhY2UsIG1fc3VyZmFjZSwgbV9jb250ZXh0KTsK
K30KKwordm9pZCBHTENvbnRleHRFR0w6OnN3YXBCdWZmZXJzKCkKK3sKKyAgICBBU1NFUlQobV9z
dXJmYWNlKTsKKyAgICBlZ2xTd2FwQnVmZmVycyhzaGFyZWRFR0xEaXNwbGF5KCksIG1fc3VyZmFj
ZSk7Cit9CisKK3ZvaWQgR0xDb250ZXh0RUdMOjp3YWl0TmF0aXZlKCkKK3sKKyAgICBlZ2xXYWl0
TmF0aXZlKEVHTF9DT1JFX05BVElWRV9FTkdJTkUpOworfQorCisjaWYgRU5BQkxFKFdFQkdMKQor
UGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCBHTENvbnRleHRFR0w6OnBsYXRmb3JtQ29udGV4dCgp
Cit7CisgICAgcmV0dXJuIG1fY29udGV4dDsKK30KKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoRUdMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM1ZDRiZjc1NjE1
YzdiNzIzOGZhMWFkMmNiOTZhMjIzOWE1NTI5MmYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmgKQEAgLTAsMCArMSw2
OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJZ2FsaWEgUy5MLgorICoKKyAqICBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs
IFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
KyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCisgKiAgU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqICBCb3N0b24sIE1B
IDAyMTEwLTEzMDEgVVNBCisgKi8KKworI2lmbmRlZiBHTENvbnRleHRFR0xfaAorI2RlZmluZSBH
TENvbnRleHRFR0xfaAorCisjaWYgVVNFKEVHTCkKKworI2luY2x1ZGUgIkdMQ29udGV4dC5oIgor
CisjaW5jbHVkZSA8RUdML2VnbC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEdM
Q29udGV4dEVHTCA6IHB1YmxpYyBHTENvbnRleHQgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KEdMQ29udGV4dEVHTCk7CitwdWJsaWM6CisgICAgZW51bSBFR0xTdXJmYWNlVHlwZSB7IFBidWZm
ZXJTdXJmYWNlLCBXaW5kb3dTdXJmYWNlLCBQaXhtYXBTdXJmYWNlIH07CisgICAgc3RhdGljIFBh
c3NPd25QdHI8R0xDb250ZXh0RUdMPiBjcmVhdGVDb250ZXh0KEVHTE5hdGl2ZVdpbmRvd1R5cGUs
IEdMQ29udGV4dCogc2hhcmluZ0NvbnRleHQgPSAwKTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxH
TENvbnRleHRFR0w+IGNyZWF0ZVdpbmRvd0NvbnRleHQoRUdMTmF0aXZlV2luZG93VHlwZSwgR0xD
b250ZXh0KiBzaGFyaW5nQ29udGV4dCk7CisKKyAgICB2aXJ0dWFsIH5HTENvbnRleHRFR0woKTsK
KyAgICB2aXJ0dWFsIGJvb2wgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgdmlydHVhbCB2b2lk
IHN3YXBCdWZmZXJzKCk7CisgICAgdmlydHVhbCB2b2lkIHdhaXROYXRpdmUoKTsKKyAgICB2aXJ0
dWFsIGJvb2wgY2FuUmVuZGVyVG9EZWZhdWx0RnJhbWVidWZmZXIoKTsKKyAgICB2aXJ0dWFsIElu
dFNpemUgZGVmYXVsdEZyYW1lQnVmZmVyU2l6ZSgpOworCisKKyNpZiBFTkFCTEUoV0VCR0wpCisg
ICAgdmlydHVhbCBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEIHBsYXRmb3JtQ29udGV4dCgpOwor
I2VuZGlmCisKK3ByaXZhdGU6CisgICAgc3RhdGljIFBhc3NPd25QdHI8R0xDb250ZXh0RUdMPiBj
cmVhdGVQYnVmZmVyQ29udGV4dChFR0xDb250ZXh0IHNoYXJpbmdDb250ZXh0KTsKKyAgICBzdGF0
aWMgUGFzc093blB0cjxHTENvbnRleHRFR0w+IGNyZWF0ZVBpeG1hcENvbnRleHQoRUdMQ29udGV4
dCBzaGFyaW5nQ29udGV4dCk7CisKKyAgICBzdGF0aWMgdm9pZCBhZGRBY3RpdmVDb250ZXh0KEdM
Q29udGV4dEVHTCopOworICAgIHN0YXRpYyB2b2lkIGNsZWFudXBTaGFyZWRFR0xEaXNwbGF5KHZv
aWQpOworCisgICAgR0xDb250ZXh0RUdMKEVHTENvbnRleHQsIEVHTFN1cmZhY2UsIEVHTFN1cmZh
Y2VUeXBlKTsKKworICAgIEVHTENvbnRleHQgbV9jb250ZXh0OworICAgIEVHTFN1cmZhY2UgbV9z
dXJmYWNlOworICAgIEVHTFN1cmZhY2VUeXBlIG1fdHlwZTsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmIC8vIFVTRShFR0wpCisKKyNlbmRpZiAvLyBHTENvbnRleHRFR0xf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dMQ29u
dGV4dEdMWC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nbHgvR0xDb250
ZXh0R0xYLmNwcAppbmRleCA5NTQwYjg2YTBiYWY0NDZiZmI2ZjY5ZDBiZDY4NjkyN2Y1ZTc5MjEz
Li42N2UyNzRmNjAyOTMwYjQ2MTg0ODY5NmRjZjFmNjc4YWE3YzViYzU4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nbHgvR0xDb250ZXh0R0xYLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nbHgvR0xDb250ZXh0R0xYLmNwcApA
QCAtMjcsNzEgKzI3LDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBXZSBkbyBub3Qg
d2FudCB0byBjYWxsIGdsWE1ha2VDb250ZXh0Q3VycmVudCB1c2luZyBkaWZmZXJlbnQgRGlzcGxh
eSBwb2ludGVycywKLS8vIGJlY2F1c2UgaXQgbWlnaHQgbGVhZCB0byBjcmFzaGVzIGluIHNvbWUg
ZHJpdmVycyAoZmdscngpLiBXZSB1c2UgYSBzaGFyZWQgZGlzcGxheQotLy8gcG9pbnRlciBoZXJl
Lgotc3RhdGljIERpc3BsYXkqIGdTaGFyZWREaXNwbGF5ID0gMDsKLURpc3BsYXkqIEdMQ29udGV4
dEdMWDo6c2hhcmVkRGlzcGxheSgpCi17Ci0gICAgaWYgKCFnU2hhcmVkRGlzcGxheSkKLSAgICAg
ICAgZ1NoYXJlZERpc3BsYXkgPSBYT3BlbkRpc3BsYXkoMCk7Ci0gICAgcmV0dXJuIGdTaGFyZWRE
aXNwbGF5OwotfQotCi0vLyBCZWNhdXNlIG9mIGRyaXZlciBidWdzLCBleGl0aW5nIHRoZSBwcm9n
cmFtIHdoZW4gdGhlcmUgYXJlIGFjdGl2ZSBwYnVmZmVycwotLy8gY2FuIGNyYXNoIHRoZSBYIHNl
cnZlciAodGhpcyBoYXMgYmVlbiBvYnNlcnZlZCB3aXRoIHRoZSBvZmZpY2lhbCBOdmlkaWEgZHJp
dmVycykuCi0vLyBXZSBuZWVkIHRvIGVuc3VyZSB0aGF0IHdlIGNsZWFuIGV2ZXJ5dGhpbmcgdXAg
b24gZXhpdC4gVGhlcmUgYXJlIHNldmVyYWwgcmVhc29ucwotLy8gdGhhdCBHcmFwaGljc0NvbnRl
eHQzRHMgd2lsbCBzdGlsbCBiZSBhbGl2ZSBhdCBleGl0LCBpbmNsdWRpbmcgdXNlciBlcnJvciAo
bWVtb3J5Ci0vLyBsZWFrcykgYW5kIHRoZSBwYWdlIGNhY2hlLiBJbiBhbnkgY2FzZSwgd2UgZG9u
J3Qgd2FudCB0aGUgWCBzZXJ2ZXIgdG8gY3Jhc2guCi10eXBlZGVmIFZlY3RvcjxHTENvbnRleHQq
PiBBY3RpdmVDb250ZXh0TGlzdDsKLXN0YXRpYyBBY3RpdmVDb250ZXh0TGlzdCYgYWN0aXZlQ29u
dGV4dExpc3QoKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQWN0aXZlQ29udGV4dExpc3Qs
IGFjdGl2ZUNvbnRleHRzLCAoKSk7Ci0gICAgcmV0dXJuIGFjdGl2ZUNvbnRleHRzOwotfQotCi12
b2lkIEdMQ29udGV4dEdMWDo6YWRkQWN0aXZlQ29udGV4dChHTENvbnRleHRHTFgqIGNvbnRleHQp
Ci17Ci0gICAgc3RhdGljIGJvb2wgYWRkZWRBdEV4aXRIYW5kbGVyID0gZmFsc2U7Ci0gICAgaWYg
KCFhZGRlZEF0RXhpdEhhbmRsZXIpIHsKLSAgICAgICAgYXRleGl0KCZHTENvbnRleHRHTFg6OmNs
ZWFudXBBY3RpdmVDb250ZXh0c0F0RXhpdCk7Ci0gICAgICAgIGFkZGVkQXRFeGl0SGFuZGxlciA9
IHRydWU7Ci0gICAgfQotICAgIGFjdGl2ZUNvbnRleHRMaXN0KCkuYXBwZW5kKGNvbnRleHQpOwot
fQotCi1zdGF0aWMgYm9vbCBnQ2xlYW5pbmdVcEF0RXhpdCA9IGZhbHNlOwotCi12b2lkIEdMQ29u
dGV4dEdMWDo6cmVtb3ZlQWN0aXZlQ29udGV4dChHTENvbnRleHQqIGNvbnRleHQpCi17Ci0gICAg
Ly8gSWYgd2UgYXJlIGNsZWFuaW5nIHVwIHRoZSBjb250ZXh0IGxpc3QgYXQgZXhpdCwgZG9uJ3Qg
Ym90aGVyIHJlbW92aW5nIHRoZSBjb250ZXh0Ci0gICAgLy8gZnJvbSB0aGUgbGlzdCwgc2luY2Ug
d2UgZG9uJ3Qgd2FudCB0byBtb2RpZnkgdGhlIGxpc3Qgd2hpbGUgaXQncyBiZWluZyBpdGVyYXRl
ZC4KLSAgICBpZiAoZ0NsZWFuaW5nVXBBdEV4aXQpCi0gICAgICAgIHJldHVybjsKLQotICAgIEFj
dGl2ZUNvbnRleHRMaXN0JiBjb250ZXh0TGlzdCA9IGFjdGl2ZUNvbnRleHRMaXN0KCk7Ci0gICAg
c2l6ZV90IGkgPSBjb250ZXh0TGlzdC5maW5kKGNvbnRleHQpOwotICAgIGlmIChpICE9IG5vdEZv
dW5kKQotICAgICAgICBjb250ZXh0TGlzdC5yZW1vdmUoaSk7Ci19Ci0KLXZvaWQgR0xDb250ZXh0
R0xYOjpjbGVhbnVwQWN0aXZlQ29udGV4dHNBdEV4aXQoKQotewotICAgIGdDbGVhbmluZ1VwQXRF
eGl0ID0gdHJ1ZTsKLQotICAgIEFjdGl2ZUNvbnRleHRMaXN0JiBjb250ZXh0TGlzdCA9IGFjdGl2
ZUNvbnRleHRMaXN0KCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb250ZXh0TGlzdC5z
aXplKCk7ICsraSkKLSAgICAgICAgZGVsZXRlIGNvbnRleHRMaXN0W2ldOwotCi0gICAgaWYgKCFn
U2hhcmVkRGlzcGxheSkKLSAgICAgICAgcmV0dXJuOwotICAgIFhDbG9zZURpc3BsYXkoZ1NoYXJl
ZERpc3BsYXkpOwotICAgIGdTaGFyZWREaXNwbGF5ID0gMDsKLX0KLQogUGFzc093blB0cjxHTENv
bnRleHRHTFg+IEdMQ29udGV4dEdMWDo6Y3JlYXRlV2luZG93Q29udGV4dChYSUQgd2luZG93LCBH
TENvbnRleHQqIHNoYXJpbmdDb250ZXh0KQogewotICAgIERpc3BsYXkqIGRpc3BsYXkgPSBzaGFy
ZWREaXNwbGF5KCk7CisgICAgRGlzcGxheSogZGlzcGxheSA9IHNoYXJlZFgxMURpc3BsYXkoKTsK
ICAgICBYV2luZG93QXR0cmlidXRlcyBhdHRyaWJ1dGVzOwogICAgIGlmICghWEdldFdpbmRvd0F0
dHJpYnV0ZXMoZGlzcGxheSwgd2luZG93LCAmYXR0cmlidXRlcykpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwpAQCAtMTMwLDcgKzY4LDcgQEAgUGFzc093blB0cjxHTENvbnRleHRHTFg+IEdMQ29u
dGV4dEdMWDo6Y3JlYXRlUGJ1ZmZlckNvbnRleHQoR0xYQ29udGV4dCBzaGFyaW5nQ28KICAgICB9
OwogCiAgICAgaW50IHJldHVybmVkRWxlbWVudHM7Ci0gICAgRGlzcGxheSogZGlzcGxheSA9IHNo
YXJlZERpc3BsYXkoKTsKKyAgICBEaXNwbGF5KiBkaXNwbGF5ID0gc2hhcmVkWDExRGlzcGxheSgp
OwogICAgIEdMWEZCQ29uZmlnKiBjb25maWdzID0gZ2xYQ2hvb3NlRkJDb25maWcoZGlzcGxheSwg
MCwgZmJDb25maWdBdHRyaWJ1dGVzLCAmcmV0dXJuZWRFbGVtZW50cyk7CiAgICAgaWYgKCFyZXR1
cm5lZEVsZW1lbnRzKSB7CiAgICAgICAgIFhGcmVlKGNvbmZpZ3MpOwpAQCAtMTcwLDcgKzEwOCw3
IEBAIFBhc3NPd25QdHI8R0xDb250ZXh0R0xYPiBHTENvbnRleHRHTFg6OmNyZWF0ZVBpeG1hcENv
bnRleHQoR0xYQ29udGV4dCBzaGFyaW5nQ29uCiAgICAgICAgIDAKICAgICB9OwogCi0gICAgRGlz
cGxheSogZGlzcGxheSA9IHNoYXJlZERpc3BsYXkoKTsKKyAgICBEaXNwbGF5KiBkaXNwbGF5ID0g
c2hhcmVkWDExRGlzcGxheSgpOwogICAgIFhWaXN1YWxJbmZvKiB2aXN1YWxJbmZvID0gZ2xYQ2hv
b3NlVmlzdWFsKGRpc3BsYXksIERlZmF1bHRTY3JlZW4oZGlzcGxheSksIHZpc3VhbEF0dHJpYnV0
ZXMpOwogICAgIGlmICghdmlzdWFsSW5mbykKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0y
MDAsNyArMTM4LDcgQEAgUGFzc093blB0cjxHTENvbnRleHRHTFg+IEdMQ29udGV4dEdMWDo6Y3Jl
YXRlUGl4bWFwQ29udGV4dChHTFhDb250ZXh0IHNoYXJpbmdDb24KIAogUGFzc093blB0cjxHTENv
bnRleHRHTFg+IEdMQ29udGV4dEdMWDo6Y3JlYXRlQ29udGV4dChYSUQgd2luZG93LCBHTENvbnRl
eHQqIHNoYXJpbmdDb250ZXh0KQogewotICAgIGlmICghc2hhcmVkRGlzcGxheSgpKQorICAgIGlm
ICghc2hhcmVkWDExRGlzcGxheSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIHN0
YXRpYyBib29sIGluaXRpYWxpemVkID0gZmFsc2U7CkBAIC0yMjUsMjMgKzE2MywyMyBAQCBQYXNz
T3duUHRyPEdMQ29udGV4dEdMWD4gR0xDb250ZXh0R0xYOjpjcmVhdGVDb250ZXh0KFhJRCB3aW5k
b3csIEdMQ29udGV4dCogc2hhcgogfQogCiBHTENvbnRleHRHTFg6OkdMQ29udGV4dEdMWChHTFhD
b250ZXh0IGNvbnRleHQpCi0gICAgOiBtX2NvbnRleHQoY29udGV4dCkKKyAgICA6IEdMQ29udGV4
dCgpCisgICAgLCBtX2NvbnRleHQoY29udGV4dCkKICAgICAsIG1fd2luZG93KDApCiAgICAgLCBt
X3BidWZmZXIoMCkKICAgICAsIG1fcGl4bWFwKDApCiAgICAgLCBtX2dseFBpeG1hcCgwKQogewot
ICAgIGFkZEFjdGl2ZUNvbnRleHQodGhpcyk7CiB9CiAKIEdMQ29udGV4dEdMWDo6R0xDb250ZXh0
R0xYKEdMWENvbnRleHQgY29udGV4dCwgUGl4bWFwIHBpeG1hcCwgR0xYUGl4bWFwIGdseFBpeG1h
cCkKLSAgICA6IG1fY29udGV4dChjb250ZXh0KQorICAgIDogR0xDb250ZXh0KCkKKyAgICAsIG1f
Y29udGV4dChjb250ZXh0KQogICAgICwgbV93aW5kb3coMCkKICAgICAsIG1fcGJ1ZmZlcigwKQog
ICAgICwgbV9waXhtYXAocGl4bWFwKQogICAgICwgbV9nbHhQaXhtYXAoZ2x4UGl4bWFwKQogewot
ICAgIGFkZEFjdGl2ZUNvbnRleHQodGhpcyk7CiB9CiAKIEdMQ29udGV4dEdMWDo6fkdMQ29udGV4
dEdMWCgpCkBAIC0yNTAsMjMgKzE4OCwyMiBAQCBHTENvbnRleHRHTFg6On5HTENvbnRleHRHTFgo
KQogICAgICAgICAvLyBUaGlzIG1heSBiZSBuZWNlc3NhcnkgdG8gcHJldmVudCBjcmFzaGVzIHdp
dGggTlZpZGlhJ3MgY2xvc2VkIHNvdXJjZSBkcml2ZXJzLiBPcmlnaW5hbGx5CiAgICAgICAgIC8v
IGZyb20gTW96aWxsYSdzIDNEIGNhbnZhcyBpbXBsZW1lbnRhdGlvbiBhdDogaHR0cDovL2JpdGJ1
Y2tldC5vcmcvaWxtYXJpL2NhbnZhczNkLwogICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlckVYVChH
TF9GUkFNRUJVRkZFUl9FWFQsIDApOwotICAgICAgICBnbFhNYWtlQ3VycmVudChzaGFyZWREaXNw
bGF5KCksIE5vbmUsIE5vbmUpOwotICAgICAgICBnbFhEZXN0cm95Q29udGV4dChzaGFyZWREaXNw
bGF5KCksIG1fY29udGV4dCk7CisgICAgICAgIGdsWE1ha2VDdXJyZW50KHNoYXJlZFgxMURpc3Bs
YXkoKSwgTm9uZSwgTm9uZSk7CisgICAgICAgIGdsWERlc3Ryb3lDb250ZXh0KHNoYXJlZFgxMURp
c3BsYXkoKSwgbV9jb250ZXh0KTsKICAgICB9CiAKICAgICBpZiAobV9wYnVmZmVyKSB7Ci0gICAg
ICAgIGdsWERlc3Ryb3lQYnVmZmVyKHNoYXJlZERpc3BsYXkoKSwgbV9wYnVmZmVyKTsKKyAgICAg
ICAgZ2xYRGVzdHJveVBidWZmZXIoc2hhcmVkWDExRGlzcGxheSgpLCBtX3BidWZmZXIpOwogICAg
ICAgICBtX3BidWZmZXIgPSAwOwogICAgIH0KICAgICBpZiAobV9nbHhQaXhtYXApIHsKLSAgICAg
ICAgZ2xYRGVzdHJveUdMWFBpeG1hcChzaGFyZWREaXNwbGF5KCksIG1fZ2x4UGl4bWFwKTsKKyAg
ICAgICAgZ2xYRGVzdHJveUdMWFBpeG1hcChzaGFyZWRYMTFEaXNwbGF5KCksIG1fZ2x4UGl4bWFw
KTsKICAgICAgICAgbV9nbHhQaXhtYXAgPSAwOwogICAgIH0KICAgICBpZiAobV9waXhtYXApIHsK
LSAgICAgICAgWEZyZWVQaXhtYXAoc2hhcmVkRGlzcGxheSgpLCBtX3BpeG1hcCk7CisgICAgICAg
IFhGcmVlUGl4bWFwKHNoYXJlZFgxMURpc3BsYXkoKSwgbV9waXhtYXApOwogICAgICAgICBtX3Bp
eG1hcCA9IDA7CiAgICAgfQotICAgIHJlbW92ZUFjdGl2ZUNvbnRleHQodGhpcyk7CiB9CiAKIGJv
b2wgR0xDb250ZXh0R0xYOjpjYW5SZW5kZXJUb0RlZmF1bHRGcmFtZWJ1ZmZlcigpCkBAIC0yODIs
NyArMjE5LDcgQEAgSW50U2l6ZSBHTENvbnRleHRHTFg6OmRlZmF1bHRGcmFtZUJ1ZmZlclNpemUo
KQogICAgIGludCB4LCB5OwogICAgIFdpbmRvdyByb290V2luZG93OwogICAgIHVuc2lnbmVkIGlu
dCB3aWR0aCwgaGVpZ2h0LCBib3JkZXJXaWR0aCwgZGVwdGg7Ci0gICAgaWYgKCFYR2V0R2VvbWV0
cnkoc2hhcmVkRGlzcGxheSgpLCBtX3dpbmRvdywgJnJvb3RXaW5kb3csICZ4LCAmeSwgJndpZHRo
LCAmaGVpZ2h0LCAmYm9yZGVyV2lkdGgsICZkZXB0aCkpCisgICAgaWYgKCFYR2V0R2VvbWV0cnko
c2hhcmVkWDExRGlzcGxheSgpLCBtX3dpbmRvdywgJnJvb3RXaW5kb3csICZ4LCAmeSwgJndpZHRo
LCAmaGVpZ2h0LCAmYm9yZGVyV2lkdGgsICZkZXB0aCkpCiAgICAgICAgIHJldHVybiBJbnRTaXpl
KCk7CiAKICAgICByZXR1cm4gSW50U2l6ZSh3aWR0aCwgaGVpZ2h0KTsKQEAgLTI5NywxOCArMjM0
LDIzIEBAIGJvb2wgR0xDb250ZXh0R0xYOjptYWtlQ29udGV4dEN1cnJlbnQoKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKIAogICAgIGlmIChtX3dpbmRvdykKLSAgICAgICAgcmV0dXJuIGdsWE1ha2VD
dXJyZW50KHNoYXJlZERpc3BsYXkoKSwgbV93aW5kb3csIG1fY29udGV4dCk7CisgICAgICAgIHJl
dHVybiBnbFhNYWtlQ3VycmVudChzaGFyZWRYMTFEaXNwbGF5KCksIG1fd2luZG93LCBtX2NvbnRl
eHQpOwogCiAgICAgaWYgKG1fcGJ1ZmZlcikKLSAgICAgICAgcmV0dXJuIGdsWE1ha2VDdXJyZW50
KHNoYXJlZERpc3BsYXkoKSwgbV9wYnVmZmVyLCBtX2NvbnRleHQpOworICAgICAgICByZXR1cm4g
Z2xYTWFrZUN1cnJlbnQoc2hhcmVkWDExRGlzcGxheSgpLCBtX3BidWZmZXIsIG1fY29udGV4dCk7
CiAKLSAgICByZXR1cm4gOjpnbFhNYWtlQ3VycmVudChzaGFyZWREaXNwbGF5KCksIG1fZ2x4UGl4
bWFwLCBtX2NvbnRleHQpOworICAgIHJldHVybiA6OmdsWE1ha2VDdXJyZW50KHNoYXJlZFgxMURp
c3BsYXkoKSwgbV9nbHhQaXhtYXAsIG1fY29udGV4dCk7CiB9CiAKIHZvaWQgR0xDb250ZXh0R0xY
Ojpzd2FwQnVmZmVycygpCiB7CiAgICAgaWYgKG1fd2luZG93KQotICAgICAgICBnbFhTd2FwQnVm
ZmVycyhzaGFyZWREaXNwbGF5KCksIG1fd2luZG93KTsKKyAgICAgICAgZ2xYU3dhcEJ1ZmZlcnMo
c2hhcmVkWDExRGlzcGxheSgpLCBtX3dpbmRvdyk7Cit9CisKK3ZvaWQgR0xDb250ZXh0R0xYOjp3
YWl0TmF0aXZlKCkKK3sKKyAgICBnbFhXYWl0WCgpOwogfQogCiAjaWYgVVNFKDNEX0dSQVBISUNT
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dMQ29u
dGV4dEdMWC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dMQ29udGV4
dEdMWC5oCmluZGV4IGIzYjE4YzE1NmNjMzFjZGM2YjEzMmRhMDdlMTJmZTJlNzMyOGRlNmIuLjAw
ZjU2ZTc5MWE2YTZlNmRhMWFhM2VmNzc5YzFhMWNhYzQxMWJhZmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dseC9HTENvbnRleHRHTFguaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nbHgvR0xDb250ZXh0R0xYLmgKQEAgLTI1LDcg
KzI1LDYgQEAKICNpbmNsdWRlICJHTENvbnRleHQuaCIKIAogdHlwZWRlZiBzdHJ1Y3QgX19HTFhj
b250ZXh0UmVjKiBHTFhDb250ZXh0OwotdHlwZWRlZiBzdHJ1Y3QgX1hEaXNwbGF5IERpc3BsYXk7
CiB0eXBlZGVmIHN0cnVjdCBfX0dMWGNvbnRleHRSZWMgKkdMWENvbnRleHQ7CiB0eXBlZGVmIHVu
c2lnbmVkIGxvbmcgR0xYUGJ1ZmZlcjsKIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBHTFhQaXhtYXA7
CkBAIC00NSwxMSArNDQsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkdMQ29udGV4dEdMWCgp
OwogICAgIHZpcnR1YWwgYm9vbCBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICB2aXJ0dWFsIHZv
aWQgc3dhcEJ1ZmZlcnMoKTsKKyAgICB2aXJ0dWFsIHZvaWQgd2FpdE5hdGl2ZSgpOwogICAgIHZp
cnR1YWwgYm9vbCBjYW5SZW5kZXJUb0RlZmF1bHRGcmFtZWJ1ZmZlcigpOwogICAgIHZpcnR1YWwg
SW50U2l6ZSBkZWZhdWx0RnJhbWVCdWZmZXJTaXplKCk7CiAKLSAgICBzdGF0aWMgRGlzcGxheSog
c2hhcmVkRGlzcGxheSgpOwotCiAjaWYgVVNFKDNEX0dSQVBISUNTKQogICAgIHZpcnR1YWwgUGxh
dGZvcm1HcmFwaGljc0NvbnRleHQzRCBwbGF0Zm9ybUNvbnRleHQoKTsKICNlbmRpZgpAQCAtNTcs
MTAgKzU1LDYgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBzdGF0aWMgUGFzc093blB0cjxHTENv
bnRleHRHTFg+IGNyZWF0ZVBidWZmZXJDb250ZXh0KEdMWENvbnRleHQgc2hhcmluZ0NvbnRleHQp
OwogICAgIHN0YXRpYyBQYXNzT3duUHRyPEdMQ29udGV4dEdMWD4gY3JlYXRlUGl4bWFwQ29udGV4
dChHTFhDb250ZXh0IHNoYXJpbmdDb250ZXh0KTsKLSAgICBzdGF0aWMgdm9pZCByZW1vdmVBY3Rp
dmVDb250ZXh0KEdMQ29udGV4dCopOwotCi0gICAgc3RhdGljIHZvaWQgYWRkQWN0aXZlQ29udGV4
dChHTENvbnRleHRHTFgqKTsKLSAgICBzdGF0aWMgdm9pZCBjbGVhbnVwQWN0aXZlQ29udGV4dHNB
dEV4aXQoKTsKIAogICAgIEdMQ29udGV4dEdMWChHTFhDb250ZXh0KTsKICAgICBHTENvbnRleHRH
TFgoR0xYQ29udGV4dCwgUGl4bWFwLCBHTFhQaXhtYXApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29udGV4dDNETWFjLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29udGV4dDNETWFjLm1t
CmluZGV4IDY4ZjRmMjQzNzYyY2YxMDY3NjM5ODE1Y2NmMTFlODY1ZDE2NGMxZTYuLjgyNTM4Nzc5
YzUyMDAxNDI0MjZmNTBkNDg5ZGRhZGQ1YzY5ZmUzOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0NvbnRleHQzRE1hYy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0M0RNYWMu
bW0KQEAgLTI3NywxMiArMjc3LDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c2V0RXJyb3JN
ZXNzYWdlQ2FsbGJhY2soUGFzc093blB0cjxFcnJvck1lc3NhZ2VDYWxsYmFjaz4KIHsKIH0KIAot
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cmVsZWFzZVNoYWRlckNvbXBpbGVyKCkKLXsKLSAgICBt
YWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCiB9CiAKICNl
bmRpZiAvLyBVU0UoM0RfR1JBUEhJQ1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdM
LmNwcAppbmRleCA1NGFmN2NhNTQ3ZjRkNmM2MmMxMzY4NWQ1NGFmMmEyN2JmZGUxOTlmLi5kN2Mw
NWU2MjcwOWU2MTY3ZDZjNTRhMGZiOTU0YmUzOTFlYjdmNzJhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGlj
c0NvbnRleHQzRE9wZW5HTC5jcHAKQEAgLTQ5LDYgKzQ5LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cmVsZWFzZVNoYWRlckNvbXBpbGVyKCkK
K3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQor
CiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpyZWFkUGl4ZWxzQW5kQ29udmVydFRvQkdSQUlmTmVj
ZXNzYXJ5KGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCB1bnNpZ25lZCBjaGFy
KiBwaXhlbHMpCiB7CiAgICAgOjpnbFJlYWRQaXhlbHMoeCwgeSwgd2lkdGgsIGhlaWdodCwgR0xf
QkdSQSwgR0xfVU5TSUdORURfSU5UXzhfOF84XzhfUkVWLCBwaXhlbHMpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNE
T3BlbkdMRVMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dDNET3BlbkdMRVMuY3BwCmluZGV4IGRjODYyNGRlZjFmYjNmNjNhNDE4ZmYy
MjBlYWJhODIyNzZiMDRiMjYuLjk5MTU3MWQ0MmFiYzMwYzk0NzJiNWI5ZWNjYzA4OTJjZWE3NTgz
ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
cmFwaGljc0NvbnRleHQzRE9wZW5HTEVTLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xFUy5jcHAKQEAgLTM5LDcg
KzM5LDYgQEAKICNpbmNsdWRlICJMYXllcldlYktpdFRocmVhZC5oIgogI2VuZGlmCiAjaW5jbHVk
ZSAiTm90SW1wbGVtZW50ZWQuaCIKLSNpbmNsdWRlICJPcGVuR0xFU1NoaW1zLmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApAQCAtNjYsMTQgKzY1LDE0IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OnJlYWRQaXhlbHMoR0MzRGludCB4LCBHQzNEaW50IHksIEdDM0RzaXplaSB3aWR0aCwgR0Mz
RHNpCiAjZWxzZQogICAgIGlmIChtX2F0dHJzLmFudGlhbGlhcyAmJiBtX2JvdW5kRkJPID09IG1f
bXVsdGlzYW1wbGVGQk8pIHsKICAgICAgICAgIHJlc29sdmVNdWx0aXNhbXBsaW5nSWZOZWNlc3Nh
cnkoSW50UmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KSk7Ci0gICAgICAgIDo6Z2xCaW5kRnJhbWVi
dWZmZXJFWFQoR0xfRlJBTUVCVUZGRVJfRVhULCBtX2Zibyk7CisgICAgICAgIDo6Z2xCaW5kRnJh
bWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1fZmJvKTsKICAgICAgICAgOjpnbEZsdXNoKCk7CiAg
ICAgfQogCiAgICAgOjpnbFJlYWRQaXhlbHMoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0
eXBlLCBkYXRhKTsKIAogICAgIGlmIChtX2F0dHJzLmFudGlhbGlhcyAmJiBtX2JvdW5kRkJPID09
IG1fbXVsdGlzYW1wbGVGQk8pCi0gICAgICAgIDo6Z2xCaW5kRnJhbWVidWZmZXJFWFQoR3JhcGhp
Y3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX211bHRpc2FtcGxlRkJPKTsKKyAgICAgICAgOjpn
bEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbV9tdWx0aXNhbXBsZUZCTyk7CiAjZW5k
aWYKIH0KIApAQCAtMTIyLDEyICsxMjEsMTIgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6cmVz
aGFwZUZCT3MoY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICBib29sIG11c3RSZXN0b3JlRkJPID0g
ZmFsc2U7CiAgICAgaWYgKG1fYm91bmRGQk8gIT0gbV9mYm8pIHsKICAgICAgICAgbXVzdFJlc3Rv
cmVGQk8gPSB0cnVlOwotICAgICAgICA6OmdsQmluZEZyYW1lYnVmZmVyRVhUKEdyYXBoaWNzQ29u
dGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9mYm8pOworICAgICAgICA6OmdsQmluZEZyYW1lYnVmZmVy
KEdMX0ZSQU1FQlVGRkVSLCBtX2Zibyk7CiAgICAgfQogCiAgICAgOjpnbEJpbmRUZXh0dXJlKEdM
X1RFWFRVUkVfMkQsIG1fdGV4dHVyZSk7CiAgICAgOjpnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8y
RCwgMCwgbV9pbnRlcm5hbENvbG9yRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCAwLCBjb2xvckZvcm1h
dCwgcGl4ZWxEYXRhVHlwZSwgMCk7Ci0gICAgOjpnbEZyYW1lYnVmZmVyVGV4dHVyZTJERVhUKEdy
YXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9SX0FU
VEFDSE1FTlQwLCBHTF9URVhUVVJFXzJELCBtX3RleHR1cmUsIDApOworICAgIDo6Z2xGcmFtZWJ1
ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIEdMX1RF
WFRVUkVfMkQsIG1fdGV4dHVyZSwgMCk7CiAKICAgICA6OmdsQmluZFRleHR1cmUoR0xfVEVYVFVS
RV8yRCwgbV9jb21wb3NpdG9yVGV4dHVyZSk7CiAgICAgOjpnbFRleEltYWdlMkQoR0xfVEVYVFVS
RV8yRCwgMCwgbV9pbnRlcm5hbENvbG9yRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCAwLCBjb2xvckZv
cm1hdCwgR0xfVU5TSUdORURfQllURSwgMCk7CkBAIC0xMzksMjggKzEzOCwyOCBAQCBib29sIEdy
YXBoaWNzQ29udGV4dDNEOjpyZXNoYXBlRkJPcyhjb25zdCBJbnRTaXplJiBzaXplKQogICAgIGlm
IChtX2F0dHJzLnN0ZW5jaWwgfHwgbV9hdHRycy5kZXB0aCkgewogICAgICAgICAvLyBVc2UgYSAy
NCBiaXQgZGVwdGggYnVmZmVyIHdoZXJlIHdlIGtub3cgd2UgaGF2ZSBpdC4KICAgICAgICAgaWYg
KHN1cHBvcnRQYWNrZWREZXB0aFN0ZW5jaWxCdWZmZXIpIHsKLSAgICAgICAgICAgIDo6Z2xCaW5k
VGV4dHVyZShHTF9URVhUVVJFXzJELCBtX2RlcHRoU3RlbmNpbEJ1ZmZlcik7Ci0gICAgICAgICAg
ICA6OmdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHcmFwaGljc0NvbnRleHQzRDo6REVQ
VEhfU1RFTkNJTCwgd2lkdGgsIGhlaWdodCwgMCwgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX1NU
RU5DSUwsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9JTlRfMjRfOCwgMCk7CisgICAgICAg
ICAgICA6OmdsQmluZFJlbmRlcmJ1ZmZlcihHTF9SRU5ERVJCVUZGRVIsIG1fZGVwdGhTdGVuY2ls
QnVmZmVyKTsKKyAgICAgICAgICAgIDo6Z2xSZW5kZXJidWZmZXJTdG9yYWdlKEdMX1JFTkRFUkJV
RkZFUiwgR0xfREVQVEgyNF9TVEVOQ0lMOF9PRVMsIHdpZHRoLCBoZWlnaHQpOwogICAgICAgICAg
ICAgaWYgKG1fYXR0cnMuc3RlbmNpbCkKLSAgICAgICAgICAgICAgICA6OmdsRnJhbWVidWZmZXJU
ZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX1NURU5DSUxfQVRUQUNITUVOVCwgR0xfVEVYVFVS
RV8yRCwgbV9kZXB0aFN0ZW5jaWxCdWZmZXIsIDApOworICAgICAgICAgICAgICAgIDo6Z2xGcmFt
ZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgR0xfU1RFTkNJTF9BVFRBQ0hNRU5U
LCBHTF9SRU5ERVJCVUZGRVIsIG1fZGVwdGhTdGVuY2lsQnVmZmVyKTsKICAgICAgICAgICAgIGlm
IChtX2F0dHJzLmRlcHRoKQotICAgICAgICAgICAgICAgIDo6Z2xGcmFtZWJ1ZmZlclRleHR1cmUy
RChHTF9GUkFNRUJVRkZFUiwgR0xfREVQVEhfQVRUQUNITUVOVCwgR0xfVEVYVFVSRV8yRCwgbV9k
ZXB0aFN0ZW5jaWxCdWZmZXIsIDApOwotICAgICAgICAgICAgOjpnbEJpbmRUZXh0dXJlKEdMX1RF
WFRVUkVfMkQsIDApOworICAgICAgICAgICAgICAgIDo6Z2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZl
cihHTF9GUkFNRUJVRkZFUiwgR0xfREVQVEhfQVRUQUNITUVOVCwgR0xfUkVOREVSQlVGRkVSLCBt
X2RlcHRoU3RlbmNpbEJ1ZmZlcik7CisgICAgICAgICAgICA6OmdsQmluZFJlbmRlcmJ1ZmZlcihH
TF9SRU5ERVJCVUZGRVIsIDApOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgaWYgKG1f
YXR0cnMuc3RlbmNpbCkgewotICAgICAgICAgICAgICAgIDo6Z2xCaW5kUmVuZGVyYnVmZmVyRVhU
KEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIG1fc3RlbmNpbEJ1ZmZlcik7Ci0gICAg
ICAgICAgICAgICAgOjpnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VFWFQoR3JhcGhpY3NDb250ZXh0M0Q6
OlJFTkRFUkJVRkZFUiwgR0xfU1RFTkNJTF9JTkRFWDgsIHdpZHRoLCBoZWlnaHQpOwotICAgICAg
ICAgICAgICAgIDo6Z2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlckVYVChHcmFwaGljc0NvbnRleHQz
RDo6RlJBTUVCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpTVEVOQ0lMX0FUVEFDSE1FTlQsIEdy
YXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIG1fc3RlbmNpbEJ1ZmZlcik7CisgICAgICAg
ICAgICAgICAgOjpnbEJpbmRSZW5kZXJidWZmZXIoR0xfUkVOREVSQlVGRkVSLCBtX3N0ZW5jaWxC
dWZmZXIpOworICAgICAgICAgICAgICAgIDo6Z2xSZW5kZXJidWZmZXJTdG9yYWdlKEdMX1JFTkRF
UkJVRkZFUiwgR0xfU1RFTkNJTF9JTkRFWDgsIHdpZHRoLCBoZWlnaHQpOworICAgICAgICAgICAg
ICAgIDo6Z2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgR0xfU1RFTkNJ
TF9BVFRBQ0hNRU5ULCBHTF9SRU5ERVJCVUZGRVIsIG1fc3RlbmNpbEJ1ZmZlcik7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBpZiAobV9hdHRycy5kZXB0aCkgewotICAgICAgICAgICAgICAg
IDo6Z2xCaW5kUmVuZGVyYnVmZmVyRVhUKEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIs
IG1fZGVwdGhCdWZmZXIpOwotICAgICAgICAgICAgICAgIDo6Z2xSZW5kZXJidWZmZXJTdG9yYWdl
RVhUKEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIEdMX0RFUFRIX0NPTVBPTkVOVDE2
LCB3aWR0aCwgaGVpZ2h0KTsKLSAgICAgICAgICAgICAgICA6OmdsRnJhbWVidWZmZXJSZW5kZXJi
dWZmZXJFWFQoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBHcmFwaGljc0NvbnRleHQz
RDo6REVQVEhfQVRUQUNITUVOVCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUiwgbV9k
ZXB0aEJ1ZmZlcik7CisgICAgICAgICAgICAgICAgOjpnbEJpbmRSZW5kZXJidWZmZXIoR0xfUkVO
REVSQlVGRkVSLCBtX2RlcHRoQnVmZmVyKTsKKyAgICAgICAgICAgICAgICA6OmdsUmVuZGVyYnVm
ZmVyU3RvcmFnZShHTF9SRU5ERVJCVUZGRVIsIEdMX0RFUFRIX0NPTVBPTkVOVDE2LCB3aWR0aCwg
aGVpZ2h0KTsKKyAgICAgICAgICAgICAgICA6OmdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR0xf
RlJBTUVCVUZGRVIsIEdMX0RFUFRIX0FUVEFDSE1FTlQsIEdMX1JFTkRFUkJVRkZFUiwgbV9kZXB0
aEJ1ZmZlcik7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICA6OmdsQmluZFJlbmRlcmJ1ZmZl
ckVYVChHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSLCAwKTsKKyAgICAgICAgICAgIDo6
Z2xCaW5kUmVuZGVyYnVmZmVyKEdMX1JFTkRFUkJVRkZFUiwgMCk7CiAgICAgICAgIH0KICAgICB9
Ci0gICAgaWYgKGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1c0VYVChHcmFwaGljc0NvbnRleHQzRDo6
RlJBTUVCVUZGRVIpICE9IEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUl9DT01QTEVURSkg
eworICAgIGlmIChnbENoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0xfRlJBTUVCVUZGRVIpICE9IEdM
X0ZSQU1FQlVGRkVSX0NPTVBMRVRFKSB7CiAgICAgICAgIC8vIEZJWE1FOiBjbGVhbnVwCiAgICAg
ICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgfQpAQCAtMTc4LDcgKzE3Nyw3IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0M0Q6OnJlc29sdmVNdWx0aXNhbXBsaW5nSWZOZWNlc3NhcnkoY29uc3QgSW50
UmVjdCYgcmVjdCkKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnJlbmRlcmJ1ZmZlclN0b3JhZ2Uo
R0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBpbnRlcm5hbGZvcm1hdCwgR0MzRHNpemVpIHdpZHRo
LCBHQzNEc2l6ZWkgaGVpZ2h0KQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6
Z2xSZW5kZXJidWZmZXJTdG9yYWdlRVhUKHRhcmdldCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBo
ZWlnaHQpOworICAgIDo6Z2xSZW5kZXJidWZmZXJTdG9yYWdlKHRhcmdldCwgaW50ZXJuYWxmb3Jt
YXQsIHdpZHRoLCBoZWlnaHQpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRJbnRl
Z2VydihHQzNEZW51bSBwbmFtZSwgR0MzRGludCogdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3Bw
CmluZGV4IDE2NzhjNDlmYWJiZWIyOGU2ZjhhNWRiZDJkYzMyZTY4NWViNjhkMzcuLmNiZDUxOTIw
OTgyNjc2MzczNzY1ZTU5OTdjZmRiZTJkYWU0MjQwNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3Bw
CkBAIC0xMDAsMTMgKzEwMCw2IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmlzR0xFUzJDb21w
bGlhbnQoKSBjb25zdAogI2VuZGlmCiB9CiAKLSNpZiAhVVNFKE9QRU5HTF9FU18yKQotdm9pZCBH
cmFwaGljc0NvbnRleHQzRDo6cmVsZWFzZVNoYWRlckNvbXBpbGVyKCkKLXsKLSAgICBub3RJbXBs
ZW1lbnRlZCgpOwotfQotI2VuZGlmCi0KIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6R3JhcGhp
Y3NDb250ZXh0M0RQcml2YXRlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBIb3N0V2luZG93
KiBob3N0V2luZG93LCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyU3R5bGUgcmVuZGVyU3R5bGUp
CiAgICAgOiBtX2NvbnRleHQoY29udGV4dCkKICAgICAsIG1faG9zdFdpbmRvdyhob3N0V2luZG93
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyLmgKaW5kZXggMTdkNTkzNDcwNzhhNTRlNzdjMGU1NjkzYjlkODQxYTZiMzg1
MGE0Ni4uYTkwZGJlNGYxNWExMjc3ZmZhMjA3MTM2MmNmMGFjZTQ2MzA1MmExNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlci5oCkBAIC0yOCw2ICsyOCw5IEBACiAgICAgI2RlZmluZSBURVhNQVBfT1BFTkdMX0VTXzIK
ICNlbmRpZgogI2VuZGlmCisjaWYgUExBVEZPUk0oR1RLKSAmJiBVU0UoT1BFTkdMX0VTXzIpCisj
ZGVmaW5lIFRFWE1BUF9PUEVOR0xfRVNfMgorI2VuZGlmCiAKICNpbmNsdWRlICJGaWx0ZXJPcGVy
YXRpb25zLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93LmNw
cAppbmRleCA1ZTY5YjQ0NTA0YTgxZGU1MjVkYjQ1NWFjMjBiM2JiZWIzZDg2ZDRlLi45MjUzOWEy
MjBlOTI2MTIyMTk4MmJhYTYzZDY3MDMzNDNlOTYzZGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5jcHAK
QEAgLTI3LDkgKzI3LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJSZWRpcmVj
dGVkWENvbXBvc2l0ZVdpbmRvdy5oIgogCi0jaWYgVVNFKEdMWCkKLSNpbmNsdWRlICJHTENvbnRl
eHRHTFguaCIKLSNpbmNsdWRlIDxHTC9nbHguaD4KKyNpZiBQTEFURk9STShYMTEpCiAjaW5jbHVk
ZSA8WDExL2V4dGVuc2lvbnMvWGNvbXBvc2l0ZS5oPgogI2luY2x1ZGUgPFgxMS9leHRlbnNpb25z
L1hkYW1hZ2UuaD4KICNpbmNsdWRlIDxjYWlyby14bGliLmg+CkBAIC0xMDUsMTMgKzEwMywxMiBA
QCBSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdzo6UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3co
Y29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICAsIG1fcGFyZW50V2luZG93KDApCiAgICAgLCBtX3Bp
eG1hcCgwKQogICAgICwgbV9zdXJmYWNlKDApCi0gICAgLCBtX3BlbmRpbmdSZXNpemVTb3VyY2VJ
ZCgwKQogICAgICwgbV9uZWVkc05ld1BpeG1hcEFmdGVyUmVzaXplKGZhbHNlKQogICAgICwgbV9k
YW1hZ2UoMCkKICAgICAsIG1fZGFtYWdlTm90aWZ5Q2FsbGJhY2soMCkKICAgICAsIG1fZGFtYWdl
Tm90aWZ5RGF0YSgwKQogewotICAgIERpc3BsYXkqIGRpc3BsYXkgPSBHREtfRElTUExBWV9YRElT
UExBWShnZGtfZGlzcGxheV9nZXRfZGVmYXVsdCgpKTsKKyAgICBEaXNwbGF5KiBkaXNwbGF5ID0g
R0xDb250ZXh0OjpzaGFyZWRYMTFEaXNwbGF5KCk7CiAKICAgICAvLyBUaGlzIGlzIGJhc2VkIG9u
IGNvZGUgZnJvbSBDaHJvbWl1bTogc3JjL2NvbnRlbnQvY29tbW9uL2dwdS9pbWFnZV90cmFuc3Bv
cnRfc3VyZmFjZV9saW51eC5jYwogICAgIFhTZXRXaW5kb3dBdHRyaWJ1dGVzIHdpbmRvd0F0dHJp
YnV0ZXM7CkBAIC0xNjUsNyArMTYyLDcgQEAgUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6On5S
ZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdygpCiAgICAgaWYgKGdldFdpbmRvd0hhc2hNYXAoKS5p
c0VtcHR5KCkpCiAgICAgICAgIGdka193aW5kb3dfcmVtb3ZlX2ZpbHRlcigwLCByZWludGVycHJl
dF9jYXN0PEdka0ZpbHRlckZ1bmM+KGZpbHRlclhEYW1hZ2VFdmVudCksIDApOwogCi0gICAgRGlz
cGxheSogZGlzcGxheSA9IEdES19ESVNQTEFZX1hESVNQTEFZKGdka19kaXNwbGF5X2dldF9kZWZh
dWx0KCkpOworICAgIERpc3BsYXkqIGRpc3BsYXkgPSBHTENvbnRleHQ6OnNoYXJlZFgxMURpc3Bs
YXkoKTsKICAgICBYRGFtYWdlRGVzdHJveShkaXNwbGF5LCBtX2RhbWFnZSk7CiAgICAgWERlc3Ry
b3lXaW5kb3coZGlzcGxheSwgbV93aW5kb3cpOwogICAgIFhEZXN0cm95V2luZG93KGRpc3BsYXks
IG1fcGFyZW50V2luZG93KTsKQEAgLTE3NCwxMSArMTcxLDExIEBAIFJlZGlyZWN0ZWRYQ29tcG9z
aXRlV2luZG93Ojp+UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3coKQogCiB2b2lkIFJlZGlyZWN0
ZWRYQ29tcG9zaXRlV2luZG93OjpyZXNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKLSAgICBE
aXNwbGF5KiBkaXNwbGF5ID0gR0RLX0RJU1BMQVlfWERJU1BMQVkoZ2RrX2Rpc3BsYXlfZ2V0X2Rl
ZmF1bHQoKSk7CisgICAgRGlzcGxheSogZGlzcGxheSA9IEdMQ29udGV4dDo6c2hhcmVkWDExRGlz
cGxheSgpOwogICAgIFhSZXNpemVXaW5kb3coZGlzcGxheSwgbV93aW5kb3csIHNpemUud2lkdGgo
KSwgc2l6ZS5oZWlnaHQoKSk7CiAKICAgICBYRmx1c2goZGlzcGxheSk7Ci0gICAgZ2xYV2FpdFgo
KTsKKyAgICBjb250ZXh0KCktPndhaXROYXRpdmUoKTsKIAogICAgIC8vIFRoaXMgc3dhcCBpcyBi
YXNlZCBvbiBjb2RlIGluIENocm9taXVtLiBJdCB0cmllcyB0byB3b3JrLWFyb3VuZCBhIGJ1ZyBp
biB0aGUgSW50ZWwgZHJpdmVycwogICAgIC8vIHdoZXJlIGEgc3dhcCBpcyBuZWNlc3NhcnkgdG8g
ZW5zdXJlIHRoZSBmcm9udCBhbmQgYmFjayBidWZmZXJzIGFyZSBwcm9wZXJseSByZXNpemVkLgpA
QCAtMjYzLDQgKzI2MCw0IEBAIHZvaWQgUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6OmNhbGxE
YW1hZ2VOb3RpZnlDYWxsYmFjaygpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlm
IC8vIFVTRShHTFgpCisjZW5kaWYgLy8gUExBVEZPUk0oWDExKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cuaAppbmRl
eCA4NjViZTNiY2M0ZTI3NGI1MGE2ZTc4ZWJlMDU3ZjhmY2I5Y2YzOTZlLi43YTk4YzM3NjgzZmMz
ODYwNmY5ZWFiZDU4NmM5ZDY3ZTU4YmYxNmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cuaApAQCAtMjcsOSAr
MjcsOSBAQAogI2lmbmRlZiAgUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3dfaAogI2RlZmluZSAg
UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3dfaAogCi0jaWYgVVNFKEdMWCkKKyNpZiBQTEFURk9S
TShYMTEpCiAKLSNpbmNsdWRlICJHTENvbnRleHRHTFguaCIKKyNpbmNsdWRlICJHTENvbnRleHQu
aCIKICNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSAiUmVmUHRyQ2Fpcm8uaCIKIApAQCAt
NzgsNiArNzgsNiBAQCBwcml2YXRlOgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRp
ZiAvLyBVU0UoR0xYKQorI2VuZGlmIC8vIFBMQVRGT1JNKFgxMSkKIAogI2VuZGlmIC8vIFJlZGly
ZWN0ZWRYQ29tcG9zaXRlV2luZG93X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xheWVyVHJlZUhvc3RHdGsuY3BwCmluZGV4IDc3YTFiMTY3
ZDE3ZWNlMTBiZWRjMjA1YjI1MmM4MDhhOWU5YjM4N2UuLmFmMmFlODliZmEyOTE1NWNlZmE2MzJk
YTIyYzdlNmJmM2FlYWI1YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0R3RrLmNwcApAQCAtMzYsNyArMzYsNyBA
QAogI2luY2x1ZGUgPEdML2dsLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvRnJhbWVWaWV3Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9HTENvbnRleHRHTFgu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL0dMQ29udGV4dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFn
ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4KIApkaWZmIC0tZ2l0IGEvQ2hhbmdl
TG9nIGIvQ2hhbmdlTG9nCmluZGV4IGE1YjY5ZWZiMTcyYjU3NDY2ODNlZmE0MjdlNDQ4MjhlZGU2
Y2NkNGYuLmU1MzdmOTRhZjAxOGRjNmM0NzUxZGFiYTYzYzc2ZTdmYzU0YmE3NmMgMTAwNjQ0Ci0t
LSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxMi0xMC0w
NSAgSm9zw6kgRGFwZW5hIFBheiAgPGpkYXBlbmFAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RL
XSBBZGQgc3VwcG9ydCBmb3IgY3JlYXRpbmcgRUdMIGNvbnRleHRzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzkyMQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZv
ciBFR0wsIHVzaW5nIE9wZW5HTCBhbmQgT3BlbkdMIEVTIDIuIEJvdGgKKyAgICAgICAgb3B0aW9u
cyBhcmUgc2V0IHVwIG9uIGNvbXBpbGUgdGltZSwgd2l0aCB0aGUgY29uZmlndXJlIG9wdGlvbnMK
KyAgICAgICAgLS1lbmFibGUtZWdsIGFuZCAtLWVuYWJsZS1nbGVzMi4KKworICAgICAgICBUaGUg
aW1wbGVtZW50YXRpb24gb25seSBhZGRzIHN1cHBvcnQgZm9yIEVHTCBvbiB0b3Agb2YgWDExLCB0
bworICAgICAgICBpc29sYXRlIHRoZSBjaGFuZ2VzIHRvIHRoZSBtaW5pbXVtLiBNb3JlIGNoYW5n
ZXMgc2hvdWxkIGNvbWUKKyAgICAgICAgbGF0ZXIgdG8gZW5hYmxlIEVHTCBmb3Igb3RoZXIgdGFy
Z2V0cyAoYXMgV2F5bGFuZCkuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAg
KiBjb25maWd1cmUuYWM6IG5ldyBjb25maWd1cmUgb3B0aW9ucyAtLWVuYWJsZS1lZ2wgYW5kIC0t
ZW5hYmxlLWdsZXMyLgorCiAyMDEyLTEwLTA0ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3Bo
ZS5kdW1lekBpbnRlbC5jb20+CiAKICAgICAgICAgW0VGTF0gQWRkIGxpYnhtbCAyLjguMCB0byBq
aGJ1aWxkCmRpZmYgLS1naXQgYS9HTlVtYWtlZmlsZS5hbSBiL0dOVW1ha2VmaWxlLmFtCmluZGV4
IDJiZTNlZGYxODRlYzM2NmMzYzc1MjVkNDcwNDM1MjQ1NWRjMDIzNDguLjZmZTY2N2U0YzQ4MDIy
NGQxNjE0Y2I0NWE4YmVhN2U3ZDk0ZWE2NjUgMTAwNjQ0Ci0tLSBhL0dOVW1ha2VmaWxlLmFtCisr
KyBiL0dOVW1ha2VmaWxlLmFtCkBAIC0yMzcsNiArMjM3LDE2IEBAIGdsb2JhbF9jcHBmbGFncyAr
PSBcCiAJLURXVEZfVVNFX0dMWD0xCiBlbmRpZgogCitpZiBVU0VfRUdMCitnbG9iYWxfY3BwZmxh
Z3MgKz0gXAorCS1EV1RGX1VTRV9FR0w9MQorZW5kaWYKKworaWYgVVNFX0dMRVMyCitnbG9iYWxf
Y3BwZmxhZ3MgKz0gXAorCS1EV1RGX1VTRV9PUEVOR0xfRVNfMj0xCitlbmRpZgorCiBpZiBVU0Vf
T1BFTkdMCiBnbG9iYWxfY3BwZmxhZ3MgKz0gXAogCS1EV1RGX1VTRV9PUEVOR0w9MQpkaWZmIC0t
Z2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCmluZGV4IGM4ZjExMGRjMTQwNDM1OWJj
MzdiYjJmNmNjMGY2YjE0ZWE5NmQwMDYuLmJjYzBhOGUxOGM5OGRmY2Y3MDAzNjVkMDVjOTFiOTEx
ZjAwNmNhYTMgMTAwNjQ0Ci0tLSBhL2NvbmZpZ3VyZS5hYworKysgYi9jb25maWd1cmUuYWMKQEAg
LTU0NywxMSArNTQ3LDg0IEBAIEFDX0FSR19FTkFCTEUodW5zdGFibGVfZmVhdHVyZXMsCiAgICAg
ICAgICAgICAgIFtdLFtlbmFibGVfdW5zdGFibGVfZmVhdHVyZXM9Im5vIl0pCiBBQ19NU0dfUkVT
VUxUKFskZW5hYmxlX3Vuc3RhYmxlX2ZlYXR1cmVzXSkKIAotZm91bmRfb3BlbmdsPSJubyIKLWlm
IHRlc3QgIiR3aXRoX3RhcmdldCIgPSAieDExIjsgdGhlbgorZm91bmRfb3BlbmdsPW5vCitBQ19B
UkdfRU5BQkxFKGdseCwKKyAgICAgICAgICAgICAgQUNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLWds
eF0sIFtlbmFibGUgc3VwcG9ydCBmb3IgR0xYIFtkZWZhdWx0PWF1dG9dXSksCisgICAgICAgICAg
ICAgIFtdLCBbZW5hYmxlX2dseD0iYXV0byJdKQorQUNfQVJHX0VOQUJMRShlZ2wsCisgICAgICAg
ICAgICAgIEFDX0hFTFBfU1RSSU5HKFstLWVuYWJsZS1lZ2xdLCBbZW5hYmxlIHN1cHBvcnQgZm9y
IEVHTCBbZGVmYXVsdD1hdXRvXV0pLAorICAgICAgICAgICAgICBbXSwgW2VuYWJsZV9lZ2w9ImF1
dG8iXSkKK0FDX0FSR19FTkFCTEUoZ2xlczIsCisgICAgICAgICAgICAgIEFDX0hFTFBfU1RSSU5H
KFstLWVuYWJsZS1nbGVzMl0sIFtlbmFibGUgc3VwcG9ydCBmb3IgT3BlbkdMIEVTIDIgW2RlZmF1
bHQ9YXV0b11dKSwKKyAgICAgICAgICAgICAgW10sIFtlbmFibGVfZ2xlczI9ImF1dG8iXSkKKwor
aGF2ZV9nbHg9bm8KK0FDX0NIRUNLX0hFQURFUlMoW0dML2dseC5oXSwgW2hhdmVfZ2x4PSJ5ZXMi
XSwgW2hhdmVfZ2x4PSJubyJdKQorQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIHRvIGVuYWJsZSBH
TFggc3VwcG9ydF0pCitpZiB0ZXN0ICIkZW5hYmxlX2dseCIgIT0gIm5vIjsgdGhlbgorICAgaWYg
dGVzdCAiJGhhdmVfZ2x4IiA9ICJubyI7IHRoZW4KKyAgICAgIGlmIHRlc3QgIiRlbmFibGVfZ2x4
IiA9ICJ5ZXMiOyB0aGVuCisgICAgICAgICBBQ19NU0dfRVJST1IoWy0tZW5hYmxlLWdseCBzcGVj
aWZpZWQsIGJ1dCBub3QgYXZhaWxhYmxlXSkKKyAgICAgIGVsc2UKKyAgICAgICAgIGVuYWJsZV9n
bHg9bm8KKyAgICAgIGZpCisgICBlbGlmIHRlc3QgIiRlbmFibGVfZ2xlczIiICE9ICJ5ZXMiOyB0
aGVuCisgICAgICBlbmFibGVfZ2x4PXllcworICAgZmkKK2ZpCitBQ19NU0dfUkVTVUxUKFskZW5h
YmxlX2dseF0pCisKK2hhdmVfZWdsPW5vCitBQ19DSEVDS19IRUFERVJTKFtFR0wvZWdsLmhdLCBb
aGF2ZV9lZ2w9InllcyJdLCBbaGF2ZV9lZ2w9Im5vIl0pCitBQ19NU0dfQ0hFQ0tJTkcoW3doZXRo
ZXIgdG8gZW5hYmxlIEVHTCBzdXBwb3J0XSkKK2lmIHRlc3QgIiRlbmFibGVfZWdsIiAhPSAibm8i
OyB0aGVuCisgICBpZiB0ZXN0ICIkaGF2ZV9lZ2wiID0gIm5vIjsgdGhlbgorICAgICAgaWYgdGVz
dCAiJGVuYWJsZV9lZ2wiID0gInllcyI7IHRoZW4KKyAgICAgICAgIEFDX01TR19FUlJPUihbLS1l
bmFibGUtZWdsIHNwZWNpZmllZCwgYnV0IG5vdCBhdmFpbGFibGVdKQorICAgICAgZWxzZQorICAg
ICAgICAgZW5hYmxlX2VnbD1ubworICAgICAgZmkKKyAgIGVsc2UKKyAgICAgIGVuYWJsZV9lZ2w9
eWVzCisgICBmaQorZmkKK0FDX01TR19SRVNVTFQoWyRlbmFibGVfZWdsXSkKKworaGF2ZV9nbGVz
Mj1ubworQUNfQ0hFQ0tfSEVBREVSUyhbR0xFUzIvZ2wyLmhdLCBbaGF2ZV9nbGVzMj0ieWVzIl0s
IFtoYXZlX2dsZXMyPSJubyJdKQorQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIHRvIHVzZSBPcGVu
R0wgRVMgMiBzdXBwb3J0XSkKK2lmIHRlc3QgIiRlbmFibGVfZ2x4IiA9ICJ5ZXMiOyB0aGVuCisg
ICBpZiB0ZXN0ICIkZW5hYmxlX2dsZXMyIiA9ICJ5ZXMiOyB0aGVuCisgICAgICBBQ19NU0dfRVJS
T1IoW0Nhbm5vdCBlbmFibGUgT3BlbkdMIEVTIDIgc3VwcG9ydCB3aXRoIEdMWF0pCisgICBlbHNl
CisgICAgICBlbmFibGVfZ2xlczI9bm8KKyAgIGZpCitmaQoraWYgdGVzdCAiJGVuYWJsZV9lZ2wi
ID0gIm5vIjsgdGhlbgorICAgaWYgdGVzdCAiJGVuYWJsZV9nbGVzMiIgPSAieWVzIjsgdGhlbgor
ICAgICAgQUNfTVNHX0VSUk9SKFtDYW5ub3QgZW5hYmxlIE9wZW5HTCBFUyAyIHN1cHBvcnQgd2l0
aG91dCBFR0xdKQorICAgZWxzZQorICAgICAgZW5hYmxlX2dsZXMyPW5vCisgICBmaQorZmkKK2lm
IHRlc3QgIiRlbmFibGVfZ2xlczIiICE9ICJubyI7IHRoZW4KKyAgIGlmIHRlc3QgIiRoYXZlX2ds
ZXMyIiA9ICJubyI7IHRoZW4KKyAgICAgIGlmIHRlc3QgIiRlbmFibGVfZ2xlczIiID0gInllcyI7
IHRoZW4KKyAgICAgICAgIEFDX01TR19FUlJPUihbLS1lbmFibGUtZ2xlczIgc3BlY2lmaWVkLCBi
dXQgbm90IGF2YWlsYWJsZV0pCisgICAgICBlbHNlCisgICAgICAgICBlbmFibGVfZ2xlczI9bm8K
KyAgICAgIGZpCisgICBlbHNlCisgICAgICBlbmFibGVfZ2xlczI9eWVzCisgICAgICBmb3VuZF9v
cGVuZ2w9eWVzCisgICBmaQorZmkKK0FDX01TR19SRVNVTFQoWyRlbmFibGVfZ2xlczJdKQorCitp
ZiB0ZXN0ICIkZW5hYmxlX2dsZXMyIiAhPSAieWVzIjsgdGhlbgogICAgIEFDX0NIRUNLX0hFQURF
UlMoW0dML2dsLmhdLCBbZm91bmRfb3BlbmdsPSJ5ZXMiXSwgW10pCi0gICAgQUNfQ0hFQ0tfSEVB
REVSUyhbR0wvZ2x4LmhdLCBbXSwgW2ZvdW5kX29wZW5nbD0ibm8iXSkKIGZpCisKIEFDX01TR19D
SEVDS0lORyhbd2hpY2ggR1BVIGFjY2VsZXJhdGlvbiBiYWNrZW5kIHRvIHVzZV0pCiBBQ19BUkdf
V0lUSChhY2NlbGVyYXRpb25fYmFja2VuZCwKICAgICAgICAgICAgIEFDX0hFTFBfU1RSSU5HKFst
LXdpdGgtYWNjZWxlcmF0aW9uLWJhY2tlbmQ9QDw6QG9wZW5nbC9jbHV0dGVyL25vbmVAOj5AXSwK
QEAgLTkyNiw3ICs5OTksNyBAQCBpZiB0ZXN0ICIkZW5hYmxlX3ZpZGVvIiA9ICJ5ZXMiIHx8IHRl
c3QgIiRlbmFibGVfd2ViX2F1ZGlvIiA9ICJ5ZXMiOyB0aGVuCiAgICBBQ19TVUJTVChbR1NUUkVB
TUVSX0xJQlNdKQogZmkKIAotCithY2NlbGVyYXRpb25fYmFja2VuZF9kZXNjcmlwdGlvbj0kd2l0
aF9hY2NlbGVyYXRpb25fYmFja2VuZAogaWYgdGVzdCAiJHdpdGhfYWNjZWxlcmF0aW9uX2JhY2tl
bmQiID0gImNsdXR0ZXIiOyB0aGVuCiAgICBQS0dfQ0hFQ0tfTU9EVUxFUyhDTFVUVEVSLCBjbHV0
dGVyLTEuMCA+PSAkQ0xVVFRFUl9SRVFVSVJFRF9WRVJTSU9OKQogICAgUEtHX0NIRUNLX01PRFVM
RVMoW0NMVVRURVJfR1RLXSwKQEAgLTkzOSw3ICsxMDEyLDIyIEBAIGlmIHRlc3QgIiR3aXRoX2Fj
Y2VsZXJhdGlvbl9iYWNrZW5kIiA9ICJjbHV0dGVyIjsgdGhlbgogZmkKIAogaWYgdGVzdCAiJHdp
dGhfYWNjZWxlcmF0aW9uX2JhY2tlbmQiID0gIm9wZW5nbCI7IHRoZW4KLSAgICBPUEVOR0xfTElC
Uz0iLWxHTCAtbGRsIgorICAgaWYgdGVzdCAiJGVuYWJsZV9nbGVzMiIgPSAieWVzIjsgdGhlbgor
ICAgIGFjY2VsZXJhdGlvbl9iYWNrZW5kX2Rlc2NyaXB0aW9uKz0gIihnbGVzMiIKKyAgICBPUEVO
R0xfTElCUz0iLWxHTEVTdjIiCisgICBlbHNlCisgICAgYWNjZWxlcmF0aW9uX2JhY2tlbmRfZGVz
Y3JpcHRpb24rPSIoZ2wiCisgICAgT1BFTkdMX0xJQlM9Ii1sR0wiCisgICBmaQorICAgaWYgdGVz
dCAiJGVuYWJsZV9lZ2wiID0gInllcyI7IHRoZW4KKyAgICBhY2NlbGVyYXRpb25fYmFja2VuZF9k
ZXNjcmlwdGlvbis9IiwgZWdsIgorICAgIE9QRU5HTF9MSUJTKz0iIC1sRUdMIgorICAgZmkKKyAg
IGlmIHRlc3QgIiRlbmFibGVfZ2x4IiA9ICJ5ZXMiOyB0aGVuCisgICAgYWNjZWxlcmF0aW9uX2Jh
Y2tlbmRfZGVzY3JpcHRpb24rPSIsIGdseCIKKyAgIGZpCisgICBPUEVOR0xfTElCUys9IiAtbGRs
IgorICAgYWNjZWxlcmF0aW9uX2JhY2tlbmRfZGVzY3JpcHRpb24rPSIpIgogZmkKIEFDX1NVQlNU
KFtPUEVOR0xfTElCU10pCiAKQEAgLTEwNDgsOCArMTEzNiwxMCBAQCBBTV9DT05ESVRJT05BTChb
VVNFX1RFWFRVUkVfTUFQUEVSX0dMXSwgW3Rlc3QgIiRlbmFibGVfYWNjZWxlcmF0ZWRfY29tcG9z
aXRpbmciCiBBTV9DT05ESVRJT05BTChbVVNFX0NMVVRURVJdLCBbdGVzdCAiJHdpdGhfYWNjZWxl
cmF0aW9uX2JhY2tlbmQiID0gImNsdXR0ZXIiXSkKIAogIyBUaGVzZSBhcmUgdGhlIHNhbWUgbm93
LCBidXQgdGhleSB3aWxsIHNvb24gYmUgc2VwYXJhdGUuCi1BTV9DT05ESVRJT05BTChbVVNFX0dM
WF0sIFt0ZXN0ICIkd2l0aF9hY2NlbGVyYXRpb25fYmFja2VuZCIgPSAib3BlbmdsIl0pCiBBTV9D
T05ESVRJT05BTChbVVNFX09QRU5HTF0sIFt0ZXN0ICIkd2l0aF9hY2NlbGVyYXRpb25fYmFja2Vu
ZCIgPSAib3BlbmdsIl0pCitBTV9DT05ESVRJT05BTChbVVNFX0VHTF0sIFt0ZXN0ICIkZW5hYmxl
X2VnbCIgPSAieWVzIl0pCitBTV9DT05ESVRJT05BTChbVVNFX0dMRVMyXSwgW3Rlc3QgIiRlbmFi
bGVfZ2xlczIiID0gInllcyJdKQorQU1fQ09ORElUSU9OQUwoW1VTRV9HTFhdLCBbdGVzdCAiJGVu
YWJsZV9nbHgiID0gInllcyJdKQogCiAjIEluZGV4ZWREQiBpbXBsaWVzIExldmVsREIsIGJ1dCBv
dGhlciBmZWF0dXJlcyBtYXkgb25lIGRheSByZXF1aXJlIExldmVsREIuCiBBTV9DT05ESVRJT05B
TChbRU5BQkxFX0lOREVYRURfREFUQUJBU0VdLFt0ZXN0ICIkZW5hYmxlX2luZGV4ZWRfZGF0YWJh
c2UiID0gInllcyJdKQpAQCAtMTEyOCw3ICsxMjE4LDcgQEAgQnVpbGQgY29uZmlndXJhdGlvbjoK
ICBVbmljb2RlIGJhY2tlbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA6ICR3aXRoX3VuaWNvZGVfYmFja2VuZAogIEZvbnQgYmFja2VuZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJHdpdGhfZm9udF9iYWNrZW5kCiAgT3B0aW1p
emVkIG1lbW9yeSBhbGxvY2F0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAkZW5h
YmxlX2Zhc3RfbWFsbG9jCi0gQWNjZWxlcmF0ZWQgcmVuZGVyaW5nIGJhY2tlbmQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgOiAkd2l0aF9hY2NlbGVyYXRpb25fYmFja2VuZAorIEFjY2VsZXJh
dGVkIHJlbmRlcmluZyBiYWNrZW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJGFjY2Vs
ZXJhdGlvbl9iYWNrZW5kX2Rlc2NyaXB0aW9uCiAKIEZlYXR1cmVzOgogPT09PT09PQo=
</data>
<flag name="review"
          id="179968"
          type_id="1"
          status="+"
          setter="mrobinson"
    />
    <flag name="commit-queue"
          id="179974"
          type_id="3"
          status="-"
          setter="mrobinson"
    />
          </attachment>
      

    </bug>

</bugzilla>