<?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>45557</bug_id>
          
          <creation_ts>2010-09-10 12:16:27 -0700</creation_ts>
          <short_desc>Define GC3D types to match GL types and use them in GraphicsContext3D</short_desc>
          <delta_ts>2011-01-07 02:28:47 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebGL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>51908</blocked>
    
    <blocked>51947</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kenneth Russell">kbr</reporter>
          <assigned_to name="Zhenyao Mo">zmo</assigned_to>
          <cc>abarth</cc>
    
    <cc>cmarrin</cc>
    
    <cc>enne</cc>
    
    <cc>eric</cc>
    
    <cc>jamesr</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zmo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>277363</commentid>
    <comment_count>0</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-09-10 12:16:27 -0700</bug_when>
    <thetext>There are uses of the type &quot;long&quot; scattered throughout the WebGLRenderingContext and GraphicsContext3D classes. I believe this originated from a misunderstanding of how the type &quot;long&quot; in WebKit IDL maps to a C integer type. In fact, &quot;long&quot; in this IDL maps to a 32-bit integer type, which also maps well to the 32-bit integer values that are used in the OpenGL APIs in these classes. All of the uses of &quot;long&quot; in these classes and in referencing code should be changed to &quot;int&quot;, and &quot;unsigned long&quot; to &quot;unsigned&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>277404</commentid>
    <comment_count>1</comment_count>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2010-09-10 13:35:13 -0700</bug_when>
    <thetext>(In reply to comment #0)
&gt; There are uses of the type &quot;long&quot; scattered throughout the WebGLRenderingContext and GraphicsContext3D classes. I believe this originated from a misunderstanding of how the type &quot;long&quot; in WebKit IDL maps to a C integer type. In fact, &quot;long&quot; in this IDL maps to a 32-bit integer type, which also maps well to the 32-bit integer values that are used in the OpenGL APIs in these classes. All of the uses of &quot;long&quot; in these classes and in referencing code should be changed to &quot;int&quot;, and &quot;unsigned long&quot; to &quot;unsigned&quot;.

If you&apos;re planning on making type changes, you should make sure there are not some better types to use, like int32_t and uint32_t. int, unsigned, etc. are no more well defined cross-platform than long. Let&apos;s make sure we&apos;re using types that best match the IDL, so we don&apos;t find ourselves doing this work twice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>277442</commentid>
    <comment_count>2</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2010-09-10 14:33:52 -0700</bug_when>
    <thetext>Also, we use several long types in functions and members for WebGLObject classes.  Need to update them too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>329083</commentid>
    <comment_count>3</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2011-01-04 10:56:00 -0800</bug_when>
    <thetext>In GraphicsContext3D, we define GC3D types (for example, GC3Dsizei) to match GL types.  Then we can use them in both GraphicsContext3D and WebGLRenderingContext.

This cleanup will make the type mapping happening in one place and make it very easy to change in the future if needed.

Also, we should double check WebGLRenderingContext.idl to make sure types are correct in it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>329295</commentid>
    <comment_count>4</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2011-01-04 16:36:14 -0800</bug_when>
    <thetext>Break this bug into two: one for GraphicsContext3D, and the other for WebGLRenderingContext and related WebGL classes.

GraphicsContext3D needs to deal with multiple platforms, whereas WebGLRenderingContext needs to deal with conflicts with other patches.  Besides, the change will be really large, so it seems reasonable to de-couple them into two.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>329739</commentid>
    <comment_count>5</comment_count>
      <attachid>78030</attachid>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2011-01-05 13:06:25 -0800</bug_when>
    <thetext>Created attachment 78030
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330319</commentid>
    <comment_count>6</comment_count>
      <attachid>78030</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-01-06 12:36:42 -0800</bug_when>
    <thetext>Comment on attachment 78030
Patch

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

This cleanup mostly looks good and I definitely think it&apos;s the right thing to do. While it&apos;s huge it will make maintaining this code easier in the future. As we discussed, the style errors are because arguments have names in the headers, but because in OpenGL there&apos;s so much information encoded in those names, I think they should be kept despite the style violations. There are a few changes that need to be made.

&gt; WebCore/html/canvas/WebGLRenderingContext.cpp:2333
&gt; -    unsigned long componentsPerPixel, bytesPerComponent;
&gt; +    unsigned int componentsPerPixel, bytesPerComponent;

See below about using one of the new typedefs here.

&gt; WebCore/html/canvas/WebGLRenderingContext.cpp:3859
&gt; -    unsigned long componentsPerPixel, bytesPerComponent;
&gt; +    unsigned int componentsPerPixel, bytesPerComponent;

Here as well.

&gt; WebCore/platform/graphics/GraphicsContext3D.cpp:46
&gt; +    unsigned int bytesPerComponent(GC3Denum type)

Use one of the new typedefs for the return type; specifically, GC3Duint.

&gt; WebCore/platform/graphics/GraphicsContext3D.cpp:62
&gt; +    unsigned int componentsPerPixel(GC3Denum format, GC3Denum type)

Return type GC3Duint.

&gt; WebCore/platform/graphics/GraphicsContext3D.cpp:90
&gt; +    unsigned int imageSizeInBytes(GC3Dsizei width, GC3Dsizei height, GC3Denum format, GC3Denum type)

Use GC3Duint as the return type.

&gt; WebCore/platform/graphics/GraphicsContext3D.cpp:142
&gt; +                                                       uint32_t* componentsPerPixel,
&gt; +                                                       uint32_t* bytesPerComponent)

Use one of your new typedefs instead of uint32_t; specifically, GC3Duint.

&gt; WebCore/platform/graphics/GraphicsContext3D.h:43
&gt; +typedef void GC3Dvoid;

I don&apos;t think the GC3Dvoid typedef adds any value. The gl2.h header doesn&apos;t reference its own GLvoid typedef. I would recommend just removing it and continuing to use const void* for blocks of data throughout.

&gt; WebCore/platform/graphics/GraphicsContext3D.h:52
&gt; +typedef signed long int GC3Dsizeiptr;

For completeness add GC3Dintptr.

&gt; WebCore/platform/graphics/GraphicsContext3D.h:606
&gt; +    void bufferData(GC3Denum target, GC3Dsizei size, GC3Denum usage);
&gt; +    void bufferData(GC3Denum target, GC3Dsizei size, const GC3Dvoid* data, GC3Denum usage);

To match the gl2.h header, the GC3Dsizei uses here should be GC3Dsizeiptr.

&gt; WebCore/platform/graphics/GraphicsContext3D.h:607
&gt; +    void bufferSubData(GC3Denum target, GC3Dsizeiptr offset, GC3Dsizei size, const GC3Dvoid* data);

To match gl2.h, offset should be a GC3Dintptr, and size should be a GC3Dsizeiptr.

&gt; WebCore/platform/graphics/GraphicsContext3D.h:630
&gt; +    void drawElements(GC3Denum mode, GC3Dsizei count, GC3Denum type, GC3Dsizeiptr offset);

I think offset should be a GC3Dintptr.

&gt; WebCore/platform/graphics/GraphicsContext3D.h:700
&gt; +    bool texImage2D(GC3Denum target, GC3Dint level, GC3Denum internalformat, GC3Dsizei width, GC3Dsizei height, GC3Dint border, GC3Denum format, GC3Denum type, GC3Dvoid* pixels);

I note that gl2.h uses GLint for internalformat but I think your choice of GC3Denum is better.

Should we take this opportunity to add &quot;const&quot; to the pixels argument?

&gt; WebCore/platform/graphics/GraphicsContext3D.h:703
&gt; +    void texSubImage2D(GC3Denum target, GC3Dint level, GC3Dint xoffset, GC3Dint yoffset, GC3Dsizei width, GC3Dsizei height, GC3Denum format, GC3Denum type, GC3Dvoid* pixels);

Same question about making pixels const void*.

&gt; WebCore/platform/graphics/GraphicsContext3D.h:723
&gt; +    void uniform1f(GC3Dint location, GC3Dfloat x);
&gt; +    void uniform1fv(GC3Dint location, GC3Dfloat* v, GC3Dsizei size);
&gt; +    void uniform1i(GC3Dint location, GC3Dint x);
&gt; +    void uniform1iv(GC3Dint location, GC3Dint* v, GC3Dsizei size);
&gt; +    void uniform2f(GC3Dint location, GC3Dfloat x, float y);
&gt; +    void uniform2fv(GC3Dint location, GC3Dfloat* v, GC3Dsizei size);
&gt; +    void uniform2i(GC3Dint location, GC3Dint x, GC3Dint y);
&gt; +    void uniform2iv(GC3Dint location, GC3Dint* v, GC3Dsizei size);
&gt; +    void uniform3f(GC3Dint location, GC3Dfloat x, GC3Dfloat y, GC3Dfloat z);
&gt; +    void uniform3fv(GC3Dint location, GC3Dfloat* v, GC3Dsizei size);
&gt; +    void uniform3i(GC3Dint location, GC3Dint x, GC3Dint y, GC3Dint z);
&gt; +    void uniform3iv(GC3Dint location, GC3Dint* v, GC3Dsizei size);
&gt; +    void uniform4f(GC3Dint location, GC3Dfloat x, GC3Dfloat y, GC3Dfloat z, GC3Dfloat w);
&gt; +    void uniform4fv(GC3Dint location, GC3Dfloat* v, GC3Dsizei size);
&gt; +    void uniform4i(GC3Dint location, GC3Dint x, GC3Dint y, GC3Dint z, GC3Dint w);
&gt; +    void uniform4iv(GC3Dint location, GC3Dint* v, GC3Dsizei size);
&gt; +    void uniformMatrix2fv(GC3Dint location, GC3Dboolean transpose, GC3Dfloat* value, GC3Dsizei size);
&gt; +    void uniformMatrix3fv(GC3Dint location, GC3Dboolean transpose, GC3Dfloat* value, GC3Dsizei size);
&gt; +    void uniformMatrix4fv(GC3Dint location, GC3Dboolean transpose, GC3Dfloat* value, GC3Dsizei size);

Could you add a FIXME about changing the argument order to these methods to match OpenGL&apos;s? The discrepancy is historical and there&apos;s no good reason for it.

&gt; WebCore/platform/graphics/GraphicsContext3D.h:737
&gt; +                             GC3Dsizei stride, GC3Dsizeiptr offset);

As above I think offset should be GC3Dintptr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330506</commentid>
    <comment_count>7</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2011-01-06 15:37:25 -0800</bug_when>
    <thetext>Thanks for reviewing this huge and boring patch!

(In reply to comment #6)
&gt; (From update of attachment 78030 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=78030&amp;action=review
&gt; 
&gt; This cleanup mostly looks good and I definitely think it&apos;s the right thing to do. While it&apos;s huge it will make maintaining this code easier in the future. As we discussed, the style errors are because arguments have names in the headers, but because in OpenGL there&apos;s so much information encoded in those names, I think they should be kept despite the style violations. There are a few changes that need to be made.
&gt; 
&gt; &gt; WebCore/html/canvas/WebGLRenderingContext.cpp:2333
&gt; &gt; -    unsigned long componentsPerPixel, bytesPerComponent;
&gt; &gt; +    unsigned int componentsPerPixel, bytesPerComponent;
&gt; 
&gt; See below about using one of the new typedefs here.

My strategy is to restrict the using of CG3D types to GL functions only.  For bytePerComponent (and a few others), since input parameter type if directly connected to gl type, I use GC3Denum; however, the returned value is not directly connected with GL parameters, then I use a regular type (although I try to avoid using long).

For the same reasoning, I didn&apos;t touch packPixels and all the helper functions for it.

Let me know if you disagree with my strategy here.

&gt; 
&gt; &gt; WebCore/html/canvas/WebGLRenderingContext.cpp:3859
&gt; &gt; -    unsigned long componentsPerPixel, bytesPerComponent;
&gt; &gt; +    unsigned int componentsPerPixel, bytesPerComponent;
&gt; 
&gt; Here as well.
&gt; 
&gt; &gt; WebCore/platform/graphics/GraphicsContext3D.cpp:46
&gt; &gt; +    unsigned int bytesPerComponent(GC3Denum type)
&gt; 
&gt; Use one of the new typedefs for the return type; specifically, GC3Duint.
&gt; 
&gt; &gt; WebCore/platform/graphics/GraphicsContext3D.cpp:62
&gt; &gt; +    unsigned int componentsPerPixel(GC3Denum format, GC3Denum type)
&gt; 
&gt; Return type GC3Duint.
&gt; 
&gt; &gt; WebCore/platform/graphics/GraphicsContext3D.cpp:90
&gt; &gt; +    unsigned int imageSizeInBytes(GC3Dsizei width, GC3Dsizei height, GC3Denum format, GC3Denum type)
&gt; 
&gt; Use GC3Duint as the return type.
&gt; 
&gt; &gt; WebCore/platform/graphics/GraphicsContext3D.cpp:142
&gt; &gt; +                                                       uint32_t* componentsPerPixel,
&gt; &gt; +                                                       uint32_t* bytesPerComponent)
&gt; 
&gt; Use one of your new typedefs instead of uint32_t; specifically, GC3Duint.
&gt; 
&gt; &gt; WebCore/platform/graphics/GraphicsContext3D.h:43
&gt; &gt; +typedef void GC3Dvoid;
&gt; 
&gt; I don&apos;t think the GC3Dvoid typedef adds any value. The gl2.h header doesn&apos;t reference its own GLvoid typedef. I would recommend just removing it and continuing to use const void* for blocks of data throughout.
&gt; 
&gt; &gt; WebCore/platform/graphics/GraphicsContext3D.h:52
&gt; &gt; +typedef signed long int GC3Dsizeiptr;
&gt; 
&gt; For completeness add GC3Dintptr.
&gt; 
&gt; &gt; WebCore/platform/graphics/GraphicsContext3D.h:606
&gt; &gt; +    void bufferData(GC3Denum target, GC3Dsizei size, GC3Denum usage);
&gt; &gt; +    void bufferData(GC3Denum target, GC3Dsizei size, const GC3Dvoid* data, GC3Denum usage);
&gt; 
&gt; To match the gl2.h header, the GC3Dsizei uses here should be GC3Dsizeiptr.

In webgl spec, bufferData function signature, GLsizei is used.  This is to match the webgl spec.  Let me know if you think the webgl spec should be fixed.

&gt; 
&gt; &gt; WebCore/platform/graphics/GraphicsContext3D.h:607
&gt; &gt; +    void bufferSubData(GC3Denum target, GC3Dsizeiptr offset, GC3Dsizei size, const GC3Dvoid* data);
&gt; 
&gt; To match gl2.h, offset should be a GC3Dintptr, and size should be a GC3Dsizeiptr.

Same here, try to match the webgl spec.

&gt; 
&gt; &gt; WebCore/platform/graphics/GraphicsContext3D.h:630
&gt; &gt; +    void drawElements(GC3Denum mode, GC3Dsizei count, GC3Denum type, GC3Dsizeiptr offset);
&gt; 
&gt; I think offset should be a GC3Dintptr.

Same here.

&gt; 
&gt; &gt; WebCore/platform/graphics/GraphicsContext3D.h:700
&gt; &gt; +    bool texImage2D(GC3Denum target, GC3Dint level, GC3Denum internalformat, GC3Dsizei width, GC3Dsizei height, GC3Dint border, GC3Denum format, GC3Denum type, GC3Dvoid* pixels);
&gt; 
&gt; I note that gl2.h uses GLint for internalformat but I think your choice of GC3Denum is better.

Again, webgl spec says GLenum.  Just want to point this out.

&gt; 
&gt; Should we take this opportunity to add &quot;const&quot; to the pixels argument?

Will do.

&gt; 
&gt; &gt; WebCore/platform/graphics/GraphicsContext3D.h:703
&gt; &gt; +    void texSubImage2D(GC3Denum target, GC3Dint level, GC3Dint xoffset, GC3Dint yoffset, GC3Dsizei width, GC3Dsizei height, GC3Denum format, GC3Denum type, GC3Dvoid* pixels);
&gt; 
&gt; Same question about making pixels const void*.
&gt; 
&gt; &gt; WebCore/platform/graphics/GraphicsContext3D.h:723
&gt; &gt; +    void uniform1f(GC3Dint location, GC3Dfloat x);
&gt; &gt; +    void uniform1fv(GC3Dint location, GC3Dfloat* v, GC3Dsizei size);
&gt; &gt; +    void uniform1i(GC3Dint location, GC3Dint x);
&gt; &gt; +    void uniform1iv(GC3Dint location, GC3Dint* v, GC3Dsizei size);
&gt; &gt; +    void uniform2f(GC3Dint location, GC3Dfloat x, float y);
&gt; &gt; +    void uniform2fv(GC3Dint location, GC3Dfloat* v, GC3Dsizei size);
&gt; &gt; +    void uniform2i(GC3Dint location, GC3Dint x, GC3Dint y);
&gt; &gt; +    void uniform2iv(GC3Dint location, GC3Dint* v, GC3Dsizei size);
&gt; &gt; +    void uniform3f(GC3Dint location, GC3Dfloat x, GC3Dfloat y, GC3Dfloat z);
&gt; &gt; +    void uniform3fv(GC3Dint location, GC3Dfloat* v, GC3Dsizei size);
&gt; &gt; +    void uniform3i(GC3Dint location, GC3Dint x, GC3Dint y, GC3Dint z);
&gt; &gt; +    void uniform3iv(GC3Dint location, GC3Dint* v, GC3Dsizei size);
&gt; &gt; +    void uniform4f(GC3Dint location, GC3Dfloat x, GC3Dfloat y, GC3Dfloat z, GC3Dfloat w);
&gt; &gt; +    void uniform4fv(GC3Dint location, GC3Dfloat* v, GC3Dsizei size);
&gt; &gt; +    void uniform4i(GC3Dint location, GC3Dint x, GC3Dint y, GC3Dint z, GC3Dint w);
&gt; &gt; +    void uniform4iv(GC3Dint location, GC3Dint* v, GC3Dsizei size);
&gt; &gt; +    void uniformMatrix2fv(GC3Dint location, GC3Dboolean transpose, GC3Dfloat* value, GC3Dsizei size);
&gt; &gt; +    void uniformMatrix3fv(GC3Dint location, GC3Dboolean transpose, GC3Dfloat* value, GC3Dsizei size);
&gt; &gt; +    void uniformMatrix4fv(GC3Dint location, GC3Dboolean transpose, GC3Dfloat* value, GC3Dsizei size);
&gt; 
&gt; Could you add a FIXME about changing the argument order to these methods to match OpenGL&apos;s? The discrepancy is historical and there&apos;s no good reason for it.

Will do.

&gt; 
&gt; &gt; WebCore/platform/graphics/GraphicsContext3D.h:737
&gt; &gt; +                             GC3Dsizei stride, GC3Dsizeiptr offset);
&gt; 
&gt; As above I think offset should be GC3Dintptr.

Same here, try to match webgl spec.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330525</commentid>
    <comment_count>8</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-01-06 16:19:22 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; My strategy is to restrict the using of CG3D types to GL functions only.  For bytePerComponent (and a few others), since input parameter type if directly connected to gl type, I use GC3Denum; however, the returned value is not directly connected with GL parameters, then I use a regular type (although I try to avoid using long).
&gt; 
&gt; For the same reasoning, I didn&apos;t touch packPixels and all the helper functions for it.
&gt; 
&gt; Let me know if you disagree with my strategy here.

I see. That sounds okay.

&gt; &gt; &gt; WebCore/platform/graphics/GraphicsContext3D.h:606
&gt; &gt; &gt; +    void bufferData(GC3Denum target, GC3Dsizei size, GC3Denum usage);
&gt; &gt; &gt; +    void bufferData(GC3Denum target, GC3Dsizei size, const GC3Dvoid* data, GC3Denum usage);
&gt; &gt; 
&gt; &gt; To match the gl2.h header, the GC3Dsizei uses here should be GC3Dsizeiptr.
&gt; 
&gt; In webgl spec, bufferData function signature, GLsizei is used.  This is to match the webgl spec.  Let me know if you think the webgl spec should be fixed.

GraphicsContext3D is supposed to mirror the OpenGL ES 2.0 API, not WebGL specifically. I think it would be clearer if we added the missing typedefs to GC3D and made the signatures look as much like the ES 2.0 ones as possible. We should probably consider updating the WebGL spec to fix up the discrepancies; as we discussed offline, let&apos;s pursue that in parallel.

&gt; &gt; &gt; WebCore/platform/graphics/GraphicsContext3D.h:607
&gt; &gt; &gt; +    void bufferSubData(GC3Denum target, GC3Dsizeiptr offset, GC3Dsizei size, const GC3Dvoid* data);
&gt; &gt; 
&gt; &gt; To match gl2.h, offset should be a GC3Dintptr, and size should be a GC3Dsizeiptr.
&gt; 
&gt; Same here, try to match the webgl spec.

See above.

&gt; &gt; 
&gt; &gt; &gt; WebCore/platform/graphics/GraphicsContext3D.h:630
&gt; &gt; &gt; +    void drawElements(GC3Denum mode, GC3Dsizei count, GC3Denum type, GC3Dsizeiptr offset);
&gt; &gt; 
&gt; &gt; I think offset should be a GC3Dintptr.
&gt; 
&gt; Same here.

See above.

&gt; &gt; 
&gt; &gt; &gt; WebCore/platform/graphics/GraphicsContext3D.h:700
&gt; &gt; &gt; +    bool texImage2D(GC3Denum target, GC3Dint level, GC3Denum internalformat, GC3Dsizei width, GC3Dsizei height, GC3Dint border, GC3Denum format, GC3Denum type, GC3Dvoid* pixels);
&gt; &gt; 
&gt; &gt; I note that gl2.h uses GLint for internalformat but I think your choice of GC3Denum is better.
&gt; 
&gt; Again, webgl spec says GLenum.  Just want to point this out.

In this particular case I think we should use GLenum. The ES 2.0 spec seems wrong.

&gt; &gt; &gt; WebCore/platform/graphics/GraphicsContext3D.h:737
&gt; &gt; &gt; +                             GC3Dsizei stride, GC3Dsizeiptr offset);
&gt; &gt; 
&gt; &gt; As above I think offset should be GC3Dintptr.
&gt; 
&gt; Same here, try to match webgl spec.

See above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330555</commentid>
    <comment_count>9</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2011-01-06 17:00:45 -0800</bug_when>
    <thetext>In the upcoming patch, below is a list of changes from the previous patch

1) removed GC3Dvoid type.  Use void instead.
2) Change void* to const void* for texImage2D and texSubImage2D
3) bufferData/bufferSubData: size&apos;s type changed from GC3Dsizei to GC3Dsizeiptr
4) bufferSubData/drawElements/vertexAttribPointer: offset&apos;s type changed from GC3Dsizeiptr to GC3Dintptr.

Hope that could save some time reviewing the changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330558</commentid>
    <comment_count>10</comment_count>
      <attachid>78190</attachid>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2011-01-06 17:02:53 -0800</bug_when>
    <thetext>Created attachment 78190
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330560</commentid>
    <comment_count>11</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2011-01-06 17:05:26 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; In the upcoming patch, below is a list of changes from the previous patch
&gt; 
&gt; 1) removed GC3Dvoid type.  Use void instead.
&gt; 2) Change void* to const void* for texImage2D and texSubImage2D
&gt; 3) bufferData/bufferSubData: size&apos;s type changed from GC3Dsizei to GC3Dsizeiptr
&gt; 4) bufferSubData/drawElements/vertexAttribPointer: offset&apos;s type changed from GC3Dsizeiptr to GC3Dintptr.
&gt; 
&gt; Hope that could save some time reviewing the changes.

Forget to mention

5) Add a FIXME for uniformMatrix function signatures.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330565</commentid>
    <comment_count>12</comment_count>
      <attachid>78190</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-01-06 17:14:01 -0800</bug_when>
    <thetext>Comment on attachment 78190
Patch

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

Thanks for doing this tedious cleanup. It will ease maintenance of this code in the future. Only one tiny issue, can be fixed upon landing.

&gt; WebCore/platform/graphics/GraphicsContext3D.h:722
&gt; +    // FIXME: change the argument orders to match OpenGL&apos;s.

This FIXME should actually be moved above the call of uniform1f. All of the uniform*v entry points have the wrong argument order.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330578</commentid>
    <comment_count>13</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2011-01-06 17:52:37 -0800</bug_when>
    <thetext>Committed r75214: &lt;http://trac.webkit.org/changeset/75214&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330703</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-07 02:28:47 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/75214 might have broken GTK Linux 32-bit Debug</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78030</attachid>
            <date>2011-01-05 13:06:25 -0800</date>
            <delta_ts>2011-01-06 17:02:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-45557-20110105130623.patch</filename>
            <type>text/plain</type>
            <size>213747</size>
            <attacher name="Zhenyao Mo">zmo</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3NTA5NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzEzIEBACisyMDExLTAxLTA1ICBaaGVueWFvIE1vICA8em1vQGdvb2dsZS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRGVmaW5l
IEdDM0QgdHlwZXMgdG8gbWF0Y2ggR0wgdHlwZXMgYW5kIHVzZSB0aGVtIGluIEdyYXBoaWNzQ29u
dGV4dDNECisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00
NTU1NworCisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6cmVhZFBpeGVscyk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRlVGV4RnVuY0Rh
dGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp0ZXhJbWFnZTJEUmVzb3VyY2VT
YWZlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpjb21wdXRlRm9ybWF0
QW5kVHlwZVBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
OmV4dHJhY3RJbWFnZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
OmV4dHJhY3RUZXh0dXJlRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0M0QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0Nv
bnRleHQzRENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRJ
bWFnZURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9TaGFyZWRHcmFwaGlj
c0NvbnRleHQzRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRHcmFwaGljc0NvbnRleHQz
RDo6ZW5hYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEdyYXBoaWNzQ29udGV4dDNEOjpk
aXNhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEdyYXBoaWNzQ29udGV4dDNEOjpjbGVh
cik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRHcmFwaGljc0NvbnRleHQzRDo6ZHJhd0FycmF5
cyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRHcmFwaGljc0NvbnRleHQzRDo6Z2V0RXJyb3Ip
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkR3JhcGhpY3NDb250ZXh0M0Q6OmdldEludGVnZXJ2
KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVGcmFt
ZWJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRHcmFwaGljc0NvbnRleHQzRDo6Y3Jl
YXRlVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRHcmFwaGljc0NvbnRleHQzRDo6
ZGVsZXRlRnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkR3JhcGhpY3NDb250
ZXh0M0Q6OmRlbGV0ZVRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkR3JhcGhpY3ND
b250ZXh0M0Q6OmZyYW1lYnVmZmVyVGV4dHVyZTJEKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJl
ZEdyYXBoaWNzQ29udGV4dDNEOjp0ZXhQYXJhbWV0ZXJpKToKKyAgICAgICAgKFdlYkNvcmU6OlNo
YXJlZEdyYXBoaWNzQ29udGV4dDNEOjp0ZXhJbWFnZTJEKToKKyAgICAgICAgKFdlYkNvcmU6OlNo
YXJlZEdyYXBoaWNzQ29udGV4dDNEOjp0ZXhTdWJJbWFnZTJEKToKKyAgICAgICAgKFdlYkNvcmU6
OlNoYXJlZEdyYXBoaWNzQ29udGV4dDNEOjpyZWFkUGl4ZWxzKToKKyAgICAgICAgKFdlYkNvcmU6
OlNoYXJlZEdyYXBoaWNzQ29udGV4dDNEOjpzZXRBY3RpdmVUZXh0dXJlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYXJlZEdyYXBoaWNzQ29udGV4dDNEOjpiaW5kVGV4dHVyZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFyZWRHcmFwaGljc0NvbnRleHQzRDo6YmluZEZyYW1lYnVmZmVyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvU2hhcmVkR3JhcGhpY3NDb250ZXh0M0QuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmFjdGl2ZVRleHR1cmUp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmF0dGFjaFNoYWRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6YmluZEF0dHJpYkxvY2F0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpiaW5kQnVmZmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpiaW5kRnJhbWVidWZmZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRSZW5kZXJidWZmZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRUZXh0dXJlKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpibGVuZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNEOjpibGVuZEVxdWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNEOjpibGVuZEVxdWF0aW9uU2VwYXJhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmJsZW5kRnVuYyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzRDo6YmxlbmRGdW5jU2VwYXJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q6OmJ1ZmZlckRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q6OmJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OmNoZWNrRnJhbWVidWZmZXJTdGF0dXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0Q6OmNsZWFyQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpjbGVh
ckRlcHRoKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpjbGVhclN0ZW5j
aWwpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNvbG9yTWFzayk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y29tcGlsZVNoYWRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y29weVRleEltYWdlMkQpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNvcHlUZXhTdWJJbWFnZTJEKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpjdWxsRmFjZSk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzRDo6ZGVwdGhGdW5jKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNEOjpkZXB0aE1hc2spOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q6OmRlcHRoUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0Q6OmRldGFjaFNoYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6
ZGlzYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6ZGlzYWJsZVZl
cnRleEF0dHJpYkFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpk
cmF3QXJyYXlzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpkcmF3RWxl
bWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmVuYWJsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6ZW5hYmxlVmVydGV4QXR0cmliQXJy
YXkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmZyYW1lYnVmZmVyUmVu
ZGVyYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpmcmFtZWJ1
ZmZlclRleHR1cmUyRCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6ZnJv
bnRGYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZW5lcmF0ZU1p
cG1hcCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0QWN0aXZlQXR0
cmliKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRBY3RpdmVVbmlm
b3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRBdHRhY2hlZFNo
YWRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEF0dHJpYkxv
Y2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRFcnJvcik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0U3RyaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpoaW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNEOjppc0J1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRDo6aXNFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEOjppc0ZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
Ojppc1Byb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmlzUmVu
ZGVyYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjppc1NoYWRl
cik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6aXNUZXh0dXJlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpsaW5lV2lkdGgpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmxpbmtQcm9ncmFtKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNEOjpwaXhlbFN0b3JlaSk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzRDo6cG9seWdvbk9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzRDo6cmVhZFBpeGVscyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRDo6cmVuZGVyYnVmZmVyU3RvcmFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRDo6c2FtcGxlQ292ZXJhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q6OnNjaXNzb3IpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
OnN0ZW5jaWxGdW5jKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpzdGVu
Y2lsRnVuY1NlcGFyYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpz
dGVuY2lsTWFzayk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6c3RlbmNp
bE1hc2tTZXBhcmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6c3Rl
bmNpbE9wKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpzdGVuY2lsT3BT
ZXBhcmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dGV4UGFyYW1l
dGVyZik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dGV4UGFyYW1ldGVy
aSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTFmKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMWZ2KToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMmYpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0yZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0zZik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRDo6dW5pZm9ybTNmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
RDo6dW5pZm9ybTRmKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlm
b3JtNGZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMWkp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0xaXYpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0yaSk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTJpdik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTNpKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNEOjp1bmlmb3JtM2l2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEOjp1bmlmb3JtNGkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
OnVuaWZvcm00aXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZv
cm1NYXRyaXgyZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZv
cm1NYXRyaXgzZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZv
cm1NYXRyaXg0ZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVzZVBy
b2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnZhbGlkYXRlUHJv
Z3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmli
MWYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjFm
dik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliMmYp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjJmdik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliM2YpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjNmdik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliNGYpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjRmdik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliUG9pbnRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dmlld3BvcnQpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEJvb2xlYW52KToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRCdWZmZXJQYXJhbWV0ZXJpdik6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0RmxvYXR2KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0SW50ZWdlcnYpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFByb2dyYW1pdik6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0UHJvZ3JhbUluZm9Mb2cpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRTaGFkZXJpdik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0U2hhZGVySW5mb0xvZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0VGV4UGFyYW1ldGVyZnYpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFRleFBhcmFtZXRlcml2KToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRVbmlmb3JtZnYpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFVuaWZvcm1pdik6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0VW5pZm9ybUxvY2F0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJmdik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0VmVydGV4QXR0cmliaXYpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFZlcnRleEF0dHJpYk9mZnNldCk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dGV4SW1hZ2UyRCk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dGV4U3ViSW1hZ2UyRCk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlQnVmZmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVGcmFtZWJ1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlUHJvZ3JhbSk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlUmVuZGVyYnVmZmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVTaGFkZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZVRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0Q6OmRlbGV0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzRDo6ZGVsZXRlRnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q6OmRlbGV0ZVByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0Q6OmRlbGV0ZVJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzRDo6ZGVsZXRlU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNEOjpkZWxldGVUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEOjpzaXplSW5CeXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
RDo6c3ludGhlc2l6ZUdMRXJyb3IpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0dy
YXBoaWNzQ29udGV4dDNEUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0Q6OmFjdGl2ZVRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
OmF0dGFjaFNoYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0
QXR0YWNoZWRTaGFkZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpi
aW5kQXR0cmliTG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
OmJpbmRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRG
cmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6YmluZFJl
bmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6YmluZFRl
eHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmJsZW5kQ29sb3Ip
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmJsZW5kRXF1YXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmJsZW5kRXF1YXRpb25TZXBhcmF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6YmxlbmRGdW5jKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpibGVuZEZ1bmNTZXBhcmF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6YnVmZmVyRGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6YnVmZmVyU3ViRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y2xlYXJDb2xvcik6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q6OmNsZWFyRGVwdGgpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q6OmNsZWFyU3RlbmNpbCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRDo6Y29sb3JNYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpj
b21waWxlU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpjb3B5
VGV4SW1hZ2UyRCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y29weVRl
eFN1YkltYWdlMkQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmN1bGxG
YWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpkZXB0aEZ1bmMpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmRlcHRoTWFzayk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6ZGVwdGhSYW5nZSk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzRDo6ZGV0YWNoU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNEOjpkaXNhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNEOjpkaXNhYmxlVmVydGV4QXR0cmliQXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0Q6OmRyYXdBcnJheXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0Q6OmRyYXdFbGVtZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRDo6ZW5hYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpl
bmFibGVWZXJ0ZXhBdHRyaWJBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRDo6ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0Q6OmZyYW1lYnVmZmVyVGV4dHVyZTJEKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNEOjpmcm9udEZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q6OmdlbmVyYXRlTWlwbWFwKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEOjpnZXRBY3RpdmVBdHRyaWIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OmdldEFjdGl2ZVVuaWZvcm0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OmdldEF0dHJpYkxvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEOjpnZXRFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6
Z2V0U3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpoaW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjppc0J1ZmZlcik6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6aXNFbmFibGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNEOjppc0ZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNEOjppc1Byb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0Q6OmlzUmVuZGVyYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNEOjppc1NoYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
RDo6aXNUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpsaW5r
UHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6cGl4ZWxTdG9y
ZWkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnBvbHlnb25PZmZzZXQp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnJlYWRQaXhlbHMpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnJlbmRlcmJ1ZmZlclN0b3JhZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnNhbXBsZUNvdmVyYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpzY2lzc29yKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpzdGVuY2lsRnVuYyk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRDo6c3RlbmNpbEZ1bmNTZXBhcmF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzRDo6c3RlbmNpbE1hc2spOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0Q6OnN0ZW5jaWxNYXNrU2VwYXJhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnN0ZW5jaWxPcCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzRDo6c3RlbmNpbE9wU2VwYXJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q6OnRleFBhcmFtZXRlcmYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0Q6OnRleFBhcmFtZXRlcmkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q6OnVuaWZvcm0xZik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
RDo6dW5pZm9ybTFmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5p
Zm9ybTJmKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMmZ2
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtM2YpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0zZnYpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm00Zik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTRmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzRDo6dW5pZm9ybTFpKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEOjp1bmlmb3JtMWl2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
Ojp1bmlmb3JtMmkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZv
cm0yaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0zaSk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTNpdik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTRpKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtNGl2KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtTWF0cml4MmZ2KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtTWF0cml4M2Z2KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtTWF0cml4NGZ2KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNEOjp1c2VQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNEOjp2YWxpZGF0ZVByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjFmKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIxZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q6OnZlcnRleEF0dHJpYjJmKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEOjp2ZXJ0ZXhBdHRyaWIyZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OnZlcnRleEF0dHJpYjNmKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEOjp2ZXJ0ZXhBdHRyaWIzZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0Q6OnZlcnRleEF0dHJpYjRmKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
Ojp2ZXJ0ZXhBdHRyaWI0ZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
OnZlcnRleEF0dHJpYlBvaW50ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0Q6OnZpZXdwb3J0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRC
b29sZWFudik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0QnVmZmVy
UGFyYW1ldGVyaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEZs
b2F0dik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0RnJhbWVidWZm
ZXJBdHRhY2htZW50UGFyYW1ldGVyaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OmdldEludGVnZXJ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
OjpnZXRQcm9ncmFtaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6Omdl
dFByb2dyYW1JbmZvTG9nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpn
ZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRDo6Z2V0U2hhZGVyaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0Q6OmdldFNoYWRlckluZm9Mb2cpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0Q6OmdldFNoYWRlclNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
RDo6Z2V0VGV4UGFyYW1ldGVyZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0Q6OmdldFRleFBhcmFtZXRlcml2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEOjpnZXRVbmlmb3JtZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
OmdldFVuaWZvcm1pdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0
VW5pZm9ybUxvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpn
ZXRWZXJ0ZXhBdHRyaWJmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6
Z2V0VmVydGV4QXR0cmliaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
OmdldFZlcnRleEF0dHJpYk9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRDo6dGV4SW1hZ2UyRCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6
dGV4U3ViSW1hZ2UyRCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y3Jl
YXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVG
cmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRl
UHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlUmVu
ZGVyYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVT
aGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZVRleHR1
cmUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmRlbGV0ZUJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6ZGVsZXRlRnJhbWVidWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmRlbGV0ZVByb2dyYW0pOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmRlbGV0ZVJlbmRlcmJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6ZGVsZXRlU2hhZGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpkZWxldGVUZXh0dXJlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpzaXplSW5CeXRlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6c3ludGhlc2l6ZUdMRXJyb3IpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEltYWdlRGF0YSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvc2tpYS9HcmFwaGljc0NvbnRleHQzRFNraWEuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEltYWdlRGF0YSk6CisKIDIwMTEtMDEtMDUg
IE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IEFyaXlhIEhpZGF5YXQuCkluZGV4OiBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFJlbmRlcmluZ0NvbnRleHQuY3BwCShyZXZpc2lvbiA3NDk3MCkKKysrIFdlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMzMCw3
ICsyMzMwLDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnJlYWRQaXhlbHMobAogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIC8vIFZhbGlkYXRlIGlucHV0IHBhcmFtZXRlcnMuCi0g
ICAgdW5zaWduZWQgbG9uZyBjb21wb25lbnRzUGVyUGl4ZWwsIGJ5dGVzUGVyQ29tcG9uZW50Owor
ICAgIHVuc2lnbmVkIGludCBjb21wb25lbnRzUGVyUGl4ZWwsIGJ5dGVzUGVyQ29tcG9uZW50Owog
ICAgIGlmICghbV9jb250ZXh0LT5jb21wdXRlRm9ybWF0QW5kVHlwZVBhcmFtZXRlcnMoZm9ybWF0
LCB0eXBlLCAmY29tcG9uZW50c1BlclBpeGVsLCAmYnl0ZXNQZXJDb21wb25lbnQpKSB7CiAgICAg
ICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFM
SURfRU5VTSk7CiAgICAgICAgIHJldHVybjsKQEAgLTM4NTYsNyArMzg1Niw3IEBAIGJvb2wgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZVRleEYKICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgfQogCi0gICAgdW5zaWduZWQgbG9uZyBjb21wb25lbnRzUGVyUGl4ZWwsIGJ5
dGVzUGVyQ29tcG9uZW50OworICAgIHVuc2lnbmVkIGludCBjb21wb25lbnRzUGVyUGl4ZWwsIGJ5
dGVzUGVyQ29tcG9uZW50OwogICAgIGlmICghbV9jb250ZXh0LT5jb21wdXRlRm9ybWF0QW5kVHlw
ZVBhcmFtZXRlcnMoZm9ybWF0LCB0eXBlLCAmY29tcG9uZW50c1BlclBpeGVsLCAmYnl0ZXNQZXJD
b21wb25lbnQpKSB7CiAgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhp
Y3NDb250ZXh0M0Q6OklOVkFMSURfRU5VTSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKSW5kZXg6
IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuY3BwCShy
ZXZpc2lvbiA3NDk3MCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0M0QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogbmFtZXNwYWNlIHsKIAotICAgIHVuc2lnbmVkIGJ5dGVzUGVyQ29tcG9uZW50KHVu
c2lnbmVkIHR5cGUpCisgICAgdW5zaWduZWQgaW50IGJ5dGVzUGVyQ29tcG9uZW50KEdDM0RlbnVt
IHR5cGUpCiAgICAgewogICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICAgICAgY2FzZSBHcmFw
aGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURToKQEAgLTU5LDcgKzU5LDcgQEAgbmFtZXNwYWNl
IHsKICAgICAgICAgfQogICAgIH0KIAotICAgIHVuc2lnbmVkIGNvbXBvbmVudHNQZXJQaXhlbCh1
bnNpZ25lZCBmb3JtYXQsIHVuc2lnbmVkIHR5cGUpCisgICAgdW5zaWduZWQgaW50IGNvbXBvbmVu
dHNQZXJQaXhlbChHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUpCiAgICAgewogICAgICAg
ICBzd2l0Y2ggKHR5cGUpIHsKICAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdO
RURfU0hPUlRfNV82XzU6CkBAIC04Nyw5ICs4Nyw5IEBAIG5hbWVzcGFjZSB7CiAKICAgICAvLyBU
aGlzIGZ1bmN0aW9uIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBpZiB3aWR0aCBhbmQgaGVpZ2h0IGlz
IG5vbi16ZXJvIGFuZAogICAgIC8vIGZvcm1hdC90eXBlIGFyZSB2YWxpZC4gIFJldHVybiAwIGlm
IG92ZXJmbG93IGhhcHBlbnMuCi0gICAgc2l6ZV90IGltYWdlU2l6ZUluQnl0ZXModW5zaWduZWQg
d2lkdGgsIHVuc2lnbmVkIGhlaWdodCwgdW5zaWduZWQgZm9ybWF0LCB1bnNpZ25lZCB0eXBlKQor
ICAgIHVuc2lnbmVkIGludCBpbWFnZVNpemVJbkJ5dGVzKEdDM0RzaXplaSB3aWR0aCwgR0MzRHNp
emVpIGhlaWdodCwgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBlKQogICAgIHsKLSAgICAg
ICAgQVNTRVJUKHdpZHRoICYmIGhlaWdodCk7CisgICAgICAgIEFTU0VSVCh3aWR0aCA+IDAgJiYg
aGVpZ2h0ID4gMCk7CiAgICAgICAgIENoZWNrZWRJbnQ8dWludDMyX3Q+IGNoZWNrZWRXaWR0aCh3
aWR0aCk7CiAgICAgICAgIENoZWNrZWRJbnQ8dWludDMyX3Q+IGNoZWNrZWRIZWlnaHQoaGVpZ2h0
KTsKICAgICAgICAgQ2hlY2tlZEludDx1aW50MzJfdD4gY2hlY2tlZEJ5dGVzUGVyUGl4ZWwoYnl0
ZXNQZXJDb21wb25lbnQodHlwZSkgKiBjb21wb25lbnRzUGVyUGl4ZWwoZm9ybWF0LCB0eXBlKSk7
CkBAIC0xMTcsMjYgKzExNywyOSBAQCBQYXNzUmVmUHRyPERyYXdpbmdCdWZmZXI+IEdyYXBoaWNz
Q29udGV4CiAgICAgcmV0dXJuIERyYXdpbmdCdWZmZXI6OmNyZWF0ZSh0aGlzLCBzaXplKTsKIH0K
IAotYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6dGV4SW1hZ2UyRFJlc291cmNlU2FmZSh1bnNpZ25l
ZCB0YXJnZXQsIHVuc2lnbmVkIGxldmVsLCB1bnNpZ25lZCBpbnRlcm5hbGZvcm1hdCwgdW5zaWdu
ZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCwgdW5zaWduZWQgYm9yZGVyLCB1bnNpZ25lZCBmb3Jt
YXQsIHVuc2lnbmVkIHR5cGUpCitib29sIEdyYXBoaWNzQ29udGV4dDNEOjp0ZXhJbWFnZTJEUmVz
b3VyY2VTYWZlKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGVudW0gaW50ZXJu
YWxmb3JtYXQsIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGludCBib3Jk
ZXIsIEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVudW0gdHlwZSkKIHsKICAgICBPd25BcnJheVB0cjx1
bnNpZ25lZCBjaGFyPiB6ZXJvOwotICAgIGlmICh3aWR0aCAmJiBoZWlnaHQpIHsKLSAgICAgICAg
c2l6ZV90IHNpemUgPSBpbWFnZVNpemVJbkJ5dGVzKHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlw
ZSk7CisgICAgaWYgKHdpZHRoID4gMCAmJiBoZWlnaHQgPiAwKSB7CisgICAgICAgIHVuc2lnbmVk
IGludCBzaXplID0gaW1hZ2VTaXplSW5CeXRlcyh3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUp
OwogICAgICAgICBpZiAoIXNpemUpIHsKICAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdy
YXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFKTsKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgfQogICAgICAgICB6ZXJvID0gYWRvcHRBcnJheVB0cihuZXcgdW5zaWduZWQg
Y2hhcltzaXplXSk7CisgICAgICAgIGlmICghemVyby5nZXQoKSkgeworICAgICAgICAgICAgc3lu
dGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUpOworICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CiAgICAgICAgIG1lbXNldCh6ZXJvLmdldCgp
LCAwLCBzaXplKTsKICAgICB9Ci0gICAgdGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5h
bGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIHplcm8uZ2V0KCkp
OwotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiB0ZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWws
IGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgemVy
by5nZXQoKSk7CiB9CiAKLWJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmNvbXB1dGVGb3JtYXRBbmRU
eXBlUGFyYW1ldGVycyh1bnNpZ25lZCBpbnQgZm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCB0eXBlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGxvbmcqIGNvbXBvbmVudHNQZXJQaXhlbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nKiBieXRlc1BlckNvbXBv
bmVudCkKK2Jvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmNvbXB1dGVGb3JtYXRBbmRUeXBlUGFyYW1l
dGVycyhHQzNEZW51bSBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0MzRGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCogY29tcG9uZW50c1Bl
clBpeGVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVpbnQzMl90KiBieXRlc1BlckNvbXBvbmVudCkKIHsKICAgICBzd2l0Y2ggKGZvcm1h
dCkgewogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkFMUEhBOgpAQCAtMTc3LDggKzE4MCw4
IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmNvbXB1dGVGb3JtYXRBbmQKIH0KIAogYm9vbCBH
cmFwaGljc0NvbnRleHQzRDo6ZXh0cmFjdEltYWdlRGF0YShJbWFnZSogaW1hZ2UsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBmb3JtYXQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCB0eXBl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNEZW51bSBmb3Jt
YXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0RlbnVtIHR5
cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZmxpcFks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcHJlbXVsdGlw
bHlBbHBoYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBp
Z25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZSwKQEAgLTE4OSw3ICsxOTIsNyBAQCBib29sIEdyYXBo
aWNzQ29udGV4dDNEOjpleHRyYWN0SW1hZ2VEYXRhCiAgICAgaWYgKCFnZXRJbWFnZURhdGEoaW1h
Z2UsIGZvcm1hdCwgdHlwZSwgcHJlbXVsdGlwbHlBbHBoYSwgaWdub3JlR2FtbWFBbmRDb2xvclBy
b2ZpbGUsIGRhdGEpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKGZsaXBZKSB7Ci0g
ICAgICAgIHVuc2lnbmVkIGxvbmcgY29tcG9uZW50c1BlclBpeGVsLCBieXRlc1BlckNvbXBvbmVu
dDsKKyAgICAgICAgdW5zaWduZWQgaW50IGNvbXBvbmVudHNQZXJQaXhlbCwgYnl0ZXNQZXJDb21w
b25lbnQ7CiAgICAgICAgIGlmICghY29tcHV0ZUZvcm1hdEFuZFR5cGVQYXJhbWV0ZXJzKGZvcm1h
dCwgdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNv
bXBvbmVudHNQZXJQaXhlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJmJ5dGVzUGVyQ29tcG9uZW50KSkKQEAgLTIwNCw4ICsyMDcsOCBAQCBib29sIEdyYXBo
aWNzQ29udGV4dDNEOjpleHRyYWN0SW1hZ2VEYXRhCiB9CiAKIGJvb2wgR3JhcGhpY3NDb250ZXh0
M0Q6OmV4dHJhY3RJbWFnZURhdGEoSW1hZ2VEYXRhKiBpbWFnZURhdGEsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBmb3JtYXQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCB0eXBlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNEZW51bSBmb3JtYXQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0RlbnVtIHR5cGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZmxpcFksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcHJlbXVsdGlwbHlBbHBo
YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVjdG9yPHVpbnQ4
X3Q+JiBkYXRhKQpAQCAtMjI3LDcgKzIzMCw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmV4
dHJhY3RJbWFnZURhdGEKICAgICAgICAgICAgICAgICAgICAgZGF0YS5kYXRhKCkpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKGZsaXBZKSB7Ci0gICAgICAgIHVuc2lnbmVkIGxvbmcg
Y29tcG9uZW50c1BlclBpeGVsLCBieXRlc1BlckNvbXBvbmVudDsKKyAgICAgICAgdW5zaWduZWQg
aW50IGNvbXBvbmVudHNQZXJQaXhlbCwgYnl0ZXNQZXJDb21wb25lbnQ7CiAgICAgICAgIGlmICgh
Y29tcHV0ZUZvcm1hdEFuZFR5cGVQYXJhbWV0ZXJzKGZvcm1hdCwgdHlwZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNvbXBvbmVudHNQZXJQaXhlbCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmJ5dGVzUGVyQ29tcG9u
ZW50KSkKQEAgLTMwNywxMiArMzEwLDEyIEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmV4dHJh
Y3RUZXh0dXJlRGEKICAgICB9CiAKICAgICAvLyBSZXNpemUgdGhlIG91dHB1dCBidWZmZXIuCi0g
ICAgdW5zaWduZWQgbG9uZyBjb21wb25lbnRzUGVyUGl4ZWwsIGJ5dGVzUGVyQ29tcG9uZW50Owor
ICAgIHVuc2lnbmVkIGludCBjb21wb25lbnRzUGVyUGl4ZWwsIGJ5dGVzUGVyQ29tcG9uZW50Owog
ICAgIGlmICghY29tcHV0ZUZvcm1hdEFuZFR5cGVQYXJhbWV0ZXJzKGZvcm1hdCwgdHlwZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY29tcG9uZW50c1BlclBpeGVs
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZieXRlc1BlckNvbXBv
bmVudCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB1bnNpZ25lZCBsb25nIGJ5dGVzUGVy
UGl4ZWwgPSBjb21wb25lbnRzUGVyUGl4ZWwgKiBieXRlc1BlckNvbXBvbmVudDsKKyAgICB1bnNp
Z25lZCBpbnQgYnl0ZXNQZXJQaXhlbCA9IGNvbXBvbmVudHNQZXJQaXhlbCAqIGJ5dGVzUGVyQ29t
cG9uZW50OwogICAgIGRhdGEucmVzaXplKHdpZHRoICogaGVpZ2h0ICogYnl0ZXNQZXJQaXhlbCk7
CiAKICAgICBpZiAoIXBhY2tQaXhlbHMoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KHBpeGVs
cyksCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQz
RC5oCShyZXZpc2lvbiA3NDk3MCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0M0QuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsMjIgQEAKICN1bmRlZiBO
T19FUlJPUgogI2VuZGlmCiAKKy8vIEdDM0QgdHlwZXMgbWF0Y2ggdGhlIGNvcnJlc3BvbmRpbmcg
R0wgdHlwZXMgYXMgZGVmaW5lZCBpbiBPcGVuR0wgRVMgMi4wCisvLyBoZWFkZXIgZmlsZSBnbDIu
aCBmcm9tIGtocm9ub3Mub3JnLgordHlwZWRlZiB2b2lkIEdDM0R2b2lkOwordHlwZWRlZiB1bnNp
Z25lZCBpbnQgR0MzRGVudW07Cit0eXBlZGVmIHVuc2lnbmVkIGNoYXIgR0MzRGJvb2xlYW47Cit0
eXBlZGVmIHVuc2lnbmVkIGludCBHQzNEYml0ZmllbGQ7Cit0eXBlZGVmIGludCBHQzNEaW50Owor
dHlwZWRlZiBpbnQgR0MzRHNpemVpOwordHlwZWRlZiB1bnNpZ25lZCBpbnQgR0MzRHVpbnQ7Cit0
eXBlZGVmIGZsb2F0IEdDM0RmbG9hdDsKK3R5cGVkZWYgZmxvYXQgR0MzRGNsYW1wZjsKK3R5cGVk
ZWYgc2lnbmVkIGxvbmcgaW50IEdDM0RzaXplaXB0cjsKKwordHlwZWRlZiBHQzNEdWludCBQbGF0
Zm9ybTNET2JqZWN0OworY29uc3QgUGxhdGZvcm0zRE9iamVjdCBOdWxsUGxhdGZvcm0zRE9iamVj
dCA9IDA7CisKICNpZiBQTEFURk9STShNQUMpCiAjaW5jbHVkZSAiQU5HTEVXZWJLaXRCcmlkZ2Uu
aCIKICNpbmNsdWRlIDxPcGVuR0wvT3BlbkdMLmg+CkBAIC00NSw4ICs2MSw2IEBACiAKIHR5cGVk
ZWYgQ0dMQ29udGV4dE9iaiBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEOwogY29uc3QgUGxhdGZv
cm1HcmFwaGljc0NvbnRleHQzRCBOdWxsUGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCA9IDA7Ci10
eXBlZGVmIEdMdWludCBQbGF0Zm9ybTNET2JqZWN0OwotY29uc3QgUGxhdGZvcm0zRE9iamVjdCBO
dWxsUGxhdGZvcm0zRE9iamVjdCA9IDA7CiAKICNpZmRlZiBfX09CSkNfXwogQGNsYXNzIENBTGF5
ZXI7CkBAIC02MiwxMyArNzYsOSBAQCBjbGFzcyBRUmVjdDsKIFFUX0VORF9OQU1FU1BBQ0UKIHR5
cGVkZWYgdm9pZCogUGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRDsKIGNvbnN0IFBsYXRmb3JtR3Jh
cGhpY3NDb250ZXh0M0QgTnVsbFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QgPSAwOwotdHlwZWRl
ZiBpbnQgUGxhdGZvcm0zRE9iamVjdDsKLWNvbnN0IFBsYXRmb3JtM0RPYmplY3QgTnVsbFBsYXRm
b3JtM0RPYmplY3QgPSAwOwogI2Vsc2UKIHR5cGVkZWYgdm9pZCogUGxhdGZvcm1HcmFwaGljc0Nv
bnRleHQzRDsKIGNvbnN0IFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QgTnVsbFBsYXRmb3JtR3Jh
cGhpY3NDb250ZXh0M0QgPSAwOwotdHlwZWRlZiBpbnQgUGxhdGZvcm0zRE9iamVjdDsKLWNvbnN0
IFBsYXRmb3JtM0RPYmplY3QgTnVsbFBsYXRmb3JtM0RPYmplY3QgPSAwOwogI2VuZGlmCiAKICNp
ZiBQTEFURk9STShDRykKQEAgLTg1LDEyICs5NSwxMSBAQCBjbGFzcyBFeHRlbnNpb25zM0RPcGVu
R0w7CiBjbGFzcyBIb3N0V2luZG93OwogY2xhc3MgSW1hZ2U7CiBjbGFzcyBJbWFnZURhdGE7Ci1j
bGFzcyBXZWJHTEFjdGl2ZUluZm87CiAKIHN0cnVjdCBBY3RpdmVJbmZvIHsKICAgICBTdHJpbmcg
bmFtZTsKLSAgICB1bnNpZ25lZCB0eXBlOwotICAgIGludCBzaXplOworICAgIEdDM0RlbnVtIHR5
cGU7CisgICAgR0MzRGludCBzaXplOwogfTsKIAogLy8gRklYTUU6IGlkZWFsbHkgdGhpcyB3b3Vs
ZCBiZSB1c2VkIG9uIGFsbCBwbGF0Zm9ybXMuCkBAIC00NzIsMTEgKzQ4MSwxMSBAQCBwdWJsaWM6
CiAKICAgICAvLyBIZWxwZXIgdG8gcmV0dXJuIHRoZSBzaXplIGluIGJ5dGVzIG9mIE9wZW5HTCBk
YXRhIHR5cGVzCiAgICAgLy8gbGlrZSBHTF9GTE9BVCwgR0xfSU5ULCBldGMuCi0gICAgaW50IHNp
emVJbkJ5dGVzKGludCB0eXBlKTsKKyAgICB1bnNpZ25lZCBpbnQgc2l6ZUluQnl0ZXMoR0MzRGVu
dW0gdHlwZSk7CiAKICAgICAvLyBIZWxwZXIgdG8gdGV4SW1hZ2UyRCB3aXRoIHBpeGVsPT0wIGNh
c2U6IHBpeGVscyBhcmUgaW5pdGlhbGl6ZWQgdG8gMC4KICAgICAvLyBSZXR1cm4gdHJ1ZSBpZiBu
byBHTCBlcnJvciBpcyBzeW50aGVzaXplZC4KLSAgICBib29sIHRleEltYWdlMkRSZXNvdXJjZVNh
ZmUodW5zaWduZWQgdGFyZ2V0LCB1bnNpZ25lZCBsZXZlbCwgdW5zaWduZWQgaW50ZXJuYWxmb3Jt
YXQsIHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQsIHVuc2lnbmVkIGJvcmRlciwgdW5z
aWduZWQgZm9ybWF0LCB1bnNpZ25lZCB0eXBlKTsKKyAgICBib29sIHRleEltYWdlMkRSZXNvdXJj
ZVNhZmUoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEZW51bSBpbnRlcm5hbGZv
cm1hdCwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEaW50IGJvcmRlciwg
R0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBlKTsKIAogICAgIGJvb2wgaXNHTEVTMkNvbXBs
aWFudCgpIGNvbnN0OwogCkBAIC00ODcsMTggKzQ5NiwxOCBAQCBwdWJsaWM6CiAgICAgLy8gQ29t
cHV0ZXMgdGhlIGNvbXBvbmVudHMgcGVyIHBpeGVsIGFuZCBieXRlcyBwZXIgY29tcG9uZW50CiAg
ICAgLy8gZm9yIHRoZSBnaXZlbiBmb3JtYXQgYW5kIHR5cGUgY29tYmluYXRpb24uIFJldHVybnMg
ZmFsc2UgaWYKICAgICAvLyBlaXRoZXIgd2FzIGFuIGludmFsaWQgZW51bS4KLSAgICBib29sIGNv
bXB1dGVGb3JtYXRBbmRUeXBlUGFyYW1ldGVycyh1bnNpZ25lZCBpbnQgZm9ybWF0LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCB0eXBlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcqIGNvbXBv
bmVudHNQZXJQaXhlbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBsb25nKiBieXRlc1BlckNvbXBvbmVudCk7CisgICAgYm9vbCBjb21wdXRlRm9ybWF0
QW5kVHlwZVBhcmFtZXRlcnMoR0MzRGVudW0gZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdDM0RlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50KiBjb21wb25lbnRzUGVyUGl4ZWwsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50KiBieXRlc1Bl
ckNvbXBvbmVudCk7CiAKICAgICAvLyBFeHRyYWN0cyB0aGUgY29udGVudHMgb2YgdGhlIGdpdmVu
IEltYWdlIGludG8gdGhlIHBhc3NlZCBWZWN0b3IsCiAgICAgLy8gcGFja2luZyB0aGUgcGl4ZWwg
ZGF0YSBhY2NvcmRpbmcgdG8gdGhlIGdpdmVuIGZvcm1hdCBhbmQgdHlwZSwKICAgICAvLyBhbmQg
b2JleWluZyB0aGUgZmxpcFksIHByZW11bHRpcGx5QWxwaGEsIGFuZCBpZ25vcmVHYW1tYUFuZENv
bG9yUHJvZmlsZQogICAgIC8vIGZsYWdzLiBSZXR1cm5zIHRydWUgdXBvbiBzdWNjZXNzLgogICAg
IGJvb2wgZXh0cmFjdEltYWdlRGF0YShJbWFnZSogaW1hZ2UsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIGludCBmb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGludCB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNEZW51bSBmb3Jt
YXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0RlbnVtIHR5cGUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJvb2wgZmxpcFksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGJv
b2wgcHJlbXVsdGlwbHlBbHBoYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpZ25v
cmVHYW1tYUFuZENvbG9yUHJvZmlsZSwKQEAgLTUwOSw4ICs1MTgsOCBAQCBwdWJsaWM6CiAgICAg
Ly8gYW5kIG9iZXlpbmcgdGhlIGZsaXBZIGFuZCBwcmVtdWx0aXBseUFscGhhIGZsYWdzLiBSZXR1
cm5zIHRydWUKICAgICAvLyB1cG9uIHN1Y2Nlc3MuCiAgICAgYm9vbCBleHRyYWN0SW1hZ2VEYXRh
KEltYWdlRGF0YSosCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBmb3Jt
YXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCB0eXBlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICBHQzNEZW51bSBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdDM0RlbnVtIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZmxp
cFksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKTsKQEAgLTUyMSw3
ICs1MzAsNyBAQCBwdWJsaWM6CiAgICAgLy8gdW5wYWNrQWxpZ25tZW50LCB0aGUgb3V0cHV0IGRh
dGEgd2lsbCBiZSB0aWdodGx5IHBhY2tlZC4KICAgICAvLyBSZXR1cm5zIHRydWUgaWYgc3VjY2Vz
c2Z1bCwgZmFsc2UgaWYgYW55IGVycm9yIG9jY3VycmVkLgogICAgIGJvb2wgZXh0cmFjdFRleHR1
cmVEYXRhKHVuc2lnbmVkIGludCB3aWR0aCwgdW5zaWduZWQgaW50IGhlaWdodCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZm9ybWF0LCB1bnNpZ25lZCBpbnQgdHlw
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVt
IHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHVucGFja0Fs
aWdubWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGZsaXBZLCBib29sIHBy
ZW11bHRpcGx5QWxwaGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCog
cGl4ZWxzLApAQCAtNTgwLDE3NCArNTg5LDE1NCBAQCBwdWJsaWM6CiAgICAgLy8gRW50cnkgcG9p
bnRzIGZvciBXZWJHTC4KICAgICAvLwogCi0gICAgdm9pZCBhY3RpdmVUZXh0dXJlKHVuc2lnbmVk
IGxvbmcgdGV4dHVyZSk7CisgICAgdm9pZCBhY3RpdmVUZXh0dXJlKEdDM0RlbnVtIHRleHR1cmUp
OwogICAgIHZvaWQgYXR0YWNoU2hhZGVyKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgUGxhdGZv
cm0zRE9iamVjdCBzaGFkZXIpOwotICAgIHZvaWQgYmluZEF0dHJpYkxvY2F0aW9uKFBsYXRmb3Jt
M0RPYmplY3QsIHVuc2lnbmVkIGxvbmcgaW5kZXgsIGNvbnN0IFN0cmluZyYgbmFtZSk7Ci0gICAg
dm9pZCBiaW5kQnVmZmVyKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBQbGF0Zm9ybTNET2JqZWN0KTsK
LSAgICB2b2lkIGJpbmRGcmFtZWJ1ZmZlcih1bnNpZ25lZCBsb25nIHRhcmdldCwgUGxhdGZvcm0z
RE9iamVjdCk7Ci0gICAgdm9pZCBiaW5kUmVuZGVyYnVmZmVyKHVuc2lnbmVkIGxvbmcgdGFyZ2V0
LCBQbGF0Zm9ybTNET2JqZWN0KTsKLSAgICB2b2lkIGJpbmRUZXh0dXJlKHVuc2lnbmVkIGxvbmcg
dGFyZ2V0LCBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmUpOwotICAgIHZvaWQgYmxlbmRDb2xvcihk
b3VibGUgcmVkLCBkb3VibGUgZ3JlZW4sIGRvdWJsZSBibHVlLCBkb3VibGUgYWxwaGEpOwotICAg
IHZvaWQgYmxlbmRFcXVhdGlvbih1bnNpZ25lZCBsb25nIG1vZGUpOwotICAgIHZvaWQgYmxlbmRF
cXVhdGlvblNlcGFyYXRlKHVuc2lnbmVkIGxvbmcgbW9kZVJHQiwgdW5zaWduZWQgbG9uZyBtb2Rl
QWxwaGEpOwotICAgIHZvaWQgYmxlbmRGdW5jKHVuc2lnbmVkIGxvbmcgc2ZhY3RvciwgdW5zaWdu
ZWQgbG9uZyBkZmFjdG9yKTsKLSAgICB2b2lkIGJsZW5kRnVuY1NlcGFyYXRlKHVuc2lnbmVkIGxv
bmcgc3JjUkdCLCB1bnNpZ25lZCBsb25nIGRzdFJHQiwgdW5zaWduZWQgbG9uZyBzcmNBbHBoYSwg
dW5zaWduZWQgbG9uZyBkc3RBbHBoYSk7Ci0KLSAgICB2b2lkIGJ1ZmZlckRhdGEodW5zaWduZWQg
bG9uZyB0YXJnZXQsIGludCBzaXplLCB1bnNpZ25lZCBsb25nIHVzYWdlKTsKLSAgICB2b2lkIGJ1
ZmZlckRhdGEodW5zaWduZWQgbG9uZyB0YXJnZXQsIGludCBzaXplLCBjb25zdCB2b2lkKiBkYXRh
LCB1bnNpZ25lZCBsb25nIHVzYWdlKTsKLSAgICB2b2lkIGJ1ZmZlclN1YkRhdGEodW5zaWduZWQg
bG9uZyB0YXJnZXQsIGxvbmcgb2Zmc2V0LCBpbnQgc2l6ZSwgY29uc3Qgdm9pZCogZGF0YSk7Ci0K
LSAgICB1bnNpZ25lZCBsb25nIGNoZWNrRnJhbWVidWZmZXJTdGF0dXModW5zaWduZWQgbG9uZyB0
YXJnZXQpOwotICAgIHZvaWQgY2xlYXIodW5zaWduZWQgbG9uZyBtYXNrKTsKLSAgICB2b2lkIGNs
ZWFyQ29sb3IoZG91YmxlIHJlZCwgZG91YmxlIGdyZWVuLCBkb3VibGUgYmx1ZSwgZG91YmxlIGFs
cGhhKTsKLSAgICB2b2lkIGNsZWFyRGVwdGgoZG91YmxlIGRlcHRoKTsKLSAgICB2b2lkIGNsZWFy
U3RlbmNpbChsb25nIHMpOwotICAgIHZvaWQgY29sb3JNYXNrKGJvb2wgcmVkLCBib29sIGdyZWVu
LCBib29sIGJsdWUsIGJvb2wgYWxwaGEpOworICAgIHZvaWQgYmluZEF0dHJpYkxvY2F0aW9uKFBs
YXRmb3JtM0RPYmplY3QsIEdDM0R1aW50IGluZGV4LCBjb25zdCBTdHJpbmcmIG5hbWUpOworICAg
IHZvaWQgYmluZEJ1ZmZlcihHQzNEZW51bSB0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3QpOworICAg
IHZvaWQgYmluZEZyYW1lYnVmZmVyKEdDM0RlbnVtIHRhcmdldCwgUGxhdGZvcm0zRE9iamVjdCk7
CisgICAgdm9pZCBiaW5kUmVuZGVyYnVmZmVyKEdDM0RlbnVtIHRhcmdldCwgUGxhdGZvcm0zRE9i
amVjdCk7CisgICAgdm9pZCBiaW5kVGV4dHVyZShHQzNEZW51bSB0YXJnZXQsIFBsYXRmb3JtM0RP
YmplY3QpOworICAgIHZvaWQgYmxlbmRDb2xvcihHQzNEY2xhbXBmIHJlZCwgR0MzRGNsYW1wZiBn
cmVlbiwgR0MzRGNsYW1wZiBibHVlLCBHQzNEY2xhbXBmIGFscGhhKTsKKyAgICB2b2lkIGJsZW5k
RXF1YXRpb24oR0MzRGVudW0gbW9kZSk7CisgICAgdm9pZCBibGVuZEVxdWF0aW9uU2VwYXJhdGUo
R0MzRGVudW0gbW9kZVJHQiwgR0MzRGVudW0gbW9kZUFscGhhKTsKKyAgICB2b2lkIGJsZW5kRnVu
YyhHQzNEZW51bSBzZmFjdG9yLCBHQzNEZW51bSBkZmFjdG9yKTsKKyAgICB2b2lkIGJsZW5kRnVu
Y1NlcGFyYXRlKEdDM0RlbnVtIHNyY1JHQiwgR0MzRGVudW0gZHN0UkdCLCBHQzNEZW51bSBzcmNB
bHBoYSwgR0MzRGVudW0gZHN0QWxwaGEpOworCisgICAgdm9pZCBidWZmZXJEYXRhKEdDM0RlbnVt
IHRhcmdldCwgR0MzRHNpemVpIHNpemUsIEdDM0RlbnVtIHVzYWdlKTsKKyAgICB2b2lkIGJ1ZmZl
ckRhdGEoR0MzRGVudW0gdGFyZ2V0LCBHQzNEc2l6ZWkgc2l6ZSwgY29uc3QgR0MzRHZvaWQqIGRh
dGEsIEdDM0RlbnVtIHVzYWdlKTsKKyAgICB2b2lkIGJ1ZmZlclN1YkRhdGEoR0MzRGVudW0gdGFy
Z2V0LCBHQzNEc2l6ZWlwdHIgb2Zmc2V0LCBHQzNEc2l6ZWkgc2l6ZSwgY29uc3QgR0MzRHZvaWQq
IGRhdGEpOworCisgICAgR0MzRGVudW0gY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHQzNEZW51bSB0
YXJnZXQpOworICAgIHZvaWQgY2xlYXIoR0MzRGJpdGZpZWxkIG1hc2spOworICAgIHZvaWQgY2xl
YXJDb2xvcihHQzNEY2xhbXBmIHJlZCwgR0MzRGNsYW1wZiBncmVlbiwgR0MzRGNsYW1wZiBibHVl
LCBHQzNEY2xhbXBmIGFscGhhKTsKKyAgICB2b2lkIGNsZWFyRGVwdGgoR0MzRGNsYW1wZiBkZXB0
aCk7CisgICAgdm9pZCBjbGVhclN0ZW5jaWwoR0MzRGludCBzKTsKKyAgICB2b2lkIGNvbG9yTWFz
ayhHQzNEYm9vbGVhbiByZWQsIEdDM0Rib29sZWFuIGdyZWVuLCBHQzNEYm9vbGVhbiBibHVlLCBH
QzNEYm9vbGVhbiBhbHBoYSk7CiAgICAgdm9pZCBjb21waWxlU2hhZGVyKFBsYXRmb3JtM0RPYmpl
Y3QpOwogCi0gICAgLy8gdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UyRCh1bnNpZ25lZCBsb25nIHRh
cmdldCwgbG9uZyBsZXZlbCwgdW5zaWduZWQgbG9uZyBpbnRlcm5hbGZvcm1hdCwgdW5zaWduZWQg
bG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQsIGxvbmcgYm9yZGVyLCB1bnNpZ25lZCBs
b25nIGltYWdlU2l6ZSwgY29uc3Qgdm9pZCogZGF0YSk7Ci0gICAgLy8gdm9pZCBjb21wcmVzc2Vk
VGV4U3ViSW1hZ2UyRCh1bnNpZ25lZCBsb25nIHRhcmdldCwgbG9uZyBsZXZlbCwgbG9uZyB4b2Zm
c2V0LCBsb25nIHlvZmZzZXQsIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVp
Z2h0LCB1bnNpZ25lZCBsb25nIGZvcm1hdCwgdW5zaWduZWQgbG9uZyBpbWFnZVNpemUsIGNvbnN0
IHZvaWQqIGRhdGEpOworICAgIC8vIHZvaWQgY29tcHJlc3NlZFRleEltYWdlMkQoR0MzRGVudW0g
dGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEZW51bSBpbnRlcm5hbGZvcm1hdCwgR0MzRHNpemVp
IHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEaW50IGJvcmRlciwgR0MzRHNpemVpIGltYWdl
U2l6ZSwgY29uc3QgR0MzRHZvaWQqIGRhdGEpOworICAgIC8vIHZvaWQgY29tcHJlc3NlZFRleFN1
YkltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEaW50IHhvZmZzZXQs
IEdDM0RpbnQgeW9mZnNldCwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNE
ZW51bSBmb3JtYXQsIEdDM0RzaXplaSBpbWFnZVNpemUsIGNvbnN0IEdDM0R2b2lkKiBkYXRhKTsK
IAotICAgIHZvaWQgY29weVRleEltYWdlMkQodW5zaWduZWQgbG9uZyB0YXJnZXQsIGxvbmcgbGV2
ZWwsIHVuc2lnbmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQsIGxvbmcgeCwgbG9uZyB5LCB1bnNpZ25l
ZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCwgbG9uZyBib3JkZXIpOwotICAgIHZv
aWQgY29weVRleFN1YkltYWdlMkQodW5zaWduZWQgbG9uZyB0YXJnZXQsIGxvbmcgbGV2ZWwsIGxv
bmcgeG9mZnNldCwgbG9uZyB5b2Zmc2V0LCBsb25nIHgsIGxvbmcgeSwgdW5zaWduZWQgbG9uZyB3
aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpOwotICAgIHZvaWQgY3VsbEZhY2UodW5zaWduZWQg
bG9uZyBtb2RlKTsKLSAgICB2b2lkIGRlcHRoRnVuYyh1bnNpZ25lZCBsb25nIGZ1bmMpOwotICAg
IHZvaWQgZGVwdGhNYXNrKGJvb2wgZmxhZyk7Ci0gICAgdm9pZCBkZXB0aFJhbmdlKGRvdWJsZSB6
TmVhciwgZG91YmxlIHpGYXIpOworICAgIHZvaWQgY29weVRleEltYWdlMkQoR0MzRGVudW0gdGFy
Z2V0LCBHQzNEaW50IGxldmVsLCBHQzNEZW51bSBpbnRlcm5hbGZvcm1hdCwgR0MzRGludCB4LCBH
QzNEaW50IHksIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGludCBib3Jk
ZXIpOworICAgIHZvaWQgY29weVRleFN1YkltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50
IGxldmVsLCBHQzNEaW50IHhvZmZzZXQsIEdDM0RpbnQgeW9mZnNldCwgR0MzRGludCB4LCBHQzNE
aW50IHksIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCk7CisgICAgdm9pZCBjdWxs
RmFjZShHQzNEZW51bSBtb2RlKTsKKyAgICB2b2lkIGRlcHRoRnVuYyhHQzNEZW51bSBmdW5jKTsK
KyAgICB2b2lkIGRlcHRoTWFzayhHQzNEYm9vbGVhbiBmbGFnKTsKKyAgICB2b2lkIGRlcHRoUmFu
Z2UoR0MzRGNsYW1wZiB6TmVhciwgR0MzRGNsYW1wZiB6RmFyKTsKICAgICB2b2lkIGRldGFjaFNo
YWRlcihQbGF0Zm9ybTNET2JqZWN0LCBQbGF0Zm9ybTNET2JqZWN0KTsKLSAgICB2b2lkIGRpc2Fi
bGUodW5zaWduZWQgbG9uZyBjYXApOwotICAgIHZvaWQgZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5
KHVuc2lnbmVkIGxvbmcgaW5kZXgpOwotICAgIHZvaWQgZHJhd0FycmF5cyh1bnNpZ25lZCBsb25n
IG1vZGUsIGxvbmcgZmlyc3QsIGxvbmcgY291bnQpOwotICAgIHZvaWQgZHJhd0VsZW1lbnRzKHVu
c2lnbmVkIGxvbmcgbW9kZSwgdW5zaWduZWQgbG9uZyBjb3VudCwgdW5zaWduZWQgbG9uZyB0eXBl
LCBsb25nIG9mZnNldCk7CisgICAgdm9pZCBkaXNhYmxlKEdDM0RlbnVtIGNhcCk7CisgICAgdm9p
ZCBkaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoR0MzRHVpbnQgaW5kZXgpOworICAgIHZvaWQgZHJh
d0FycmF5cyhHQzNEZW51bSBtb2RlLCBHQzNEaW50IGZpcnN0LCBHQzNEc2l6ZWkgY291bnQpOwor
ICAgIHZvaWQgZHJhd0VsZW1lbnRzKEdDM0RlbnVtIG1vZGUsIEdDM0RzaXplaSBjb3VudCwgR0Mz
RGVudW0gdHlwZSwgR0MzRHNpemVpcHRyIG9mZnNldCk7CiAKLSAgICB2b2lkIGVuYWJsZSh1bnNp
Z25lZCBsb25nIGNhcCk7Ci0gICAgdm9pZCBlbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSh1bnNpZ25l
ZCBsb25nIGluZGV4KTsKKyAgICB2b2lkIGVuYWJsZShHQzNEZW51bSBjYXApOworICAgIHZvaWQg
ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoR0MzRHVpbnQgaW5kZXgpOwogICAgIHZvaWQgZmluaXNo
KCk7CiAgICAgdm9pZCBmbHVzaCgpOwotICAgIHZvaWQgZnJhbWVidWZmZXJSZW5kZXJidWZmZXIo
dW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgYXR0YWNobWVudCwgdW5zaWduZWQg
bG9uZyByZW5kZXJidWZmZXJ0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3QpOwotICAgIHZvaWQgZnJh
bWVidWZmZXJUZXh0dXJlMkQodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgYXR0
YWNobWVudCwgdW5zaWduZWQgbG9uZyB0ZXh0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3QsIGxvbmcg
bGV2ZWwpOwotICAgIHZvaWQgZnJvbnRGYWNlKHVuc2lnbmVkIGxvbmcgbW9kZSk7Ci0gICAgdm9p
ZCBnZW5lcmF0ZU1pcG1hcCh1bnNpZ25lZCBsb25nIHRhcmdldCk7Ci0KLSAgICBib29sIGdldEFj
dGl2ZUF0dHJpYihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIHVuc2lnbmVkIGxvbmcgaW5kZXgs
IEFjdGl2ZUluZm8mKTsKLSAgICBib29sIGdldEFjdGl2ZVVuaWZvcm0oUGxhdGZvcm0zRE9iamVj
dCBwcm9ncmFtLCB1bnNpZ25lZCBsb25nIGluZGV4LCBBY3RpdmVJbmZvJik7Ci0KLSAgICB2b2lk
IGdldEF0dGFjaGVkU2hhZGVycyhQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIGludCBtYXhDb3Vu
dCwgaW50KiBjb3VudCwgdW5zaWduZWQgaW50KiBzaGFkZXJzKTsKLQotICAgIGludCBnZXRBdHRy
aWJMb2NhdGlvbihQbGF0Zm9ybTNET2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUpOwotCi0gICAg
dm9pZCBnZXRCb29sZWFudih1bnNpZ25lZCBsb25nIHBuYW1lLCB1bnNpZ25lZCBjaGFyKiB2YWx1
ZSk7Ci0KLSAgICB2b2lkIGdldEJ1ZmZlclBhcmFtZXRlcml2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0
LCB1bnNpZ25lZCBsb25nIHBuYW1lLCBpbnQqIHZhbHVlKTsKLQorICAgIHZvaWQgZnJhbWVidWZm
ZXJSZW5kZXJidWZmZXIoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBhdHRhY2htZW50LCBHQzNE
ZW51bSByZW5kZXJidWZmZXJ0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3QpOworICAgIHZvaWQgZnJh
bWVidWZmZXJUZXh0dXJlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBhdHRhY2htZW50LCBH
QzNEZW51bSB0ZXh0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3QsIEdDM0RpbnQgbGV2ZWwpOworICAg
IHZvaWQgZnJvbnRGYWNlKEdDM0RlbnVtIG1vZGUpOworICAgIHZvaWQgZ2VuZXJhdGVNaXBtYXAo
R0MzRGVudW0gdGFyZ2V0KTsKKworICAgIGJvb2wgZ2V0QWN0aXZlQXR0cmliKFBsYXRmb3JtM0RP
YmplY3QgcHJvZ3JhbSwgR0MzRHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mKTsKKyAgICBib29sIGdl
dEFjdGl2ZVVuaWZvcm0oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBHQzNEdWludCBpbmRleCwg
QWN0aXZlSW5mbyYpOworICAgIHZvaWQgZ2V0QXR0YWNoZWRTaGFkZXJzKFBsYXRmb3JtM0RPYmpl
Y3QgcHJvZ3JhbSwgR0MzRHNpemVpIG1heENvdW50LCBHQzNEc2l6ZWkqIGNvdW50LCBQbGF0Zm9y
bTNET2JqZWN0KiBzaGFkZXJzKTsKKyAgICBHQzNEaW50IGdldEF0dHJpYkxvY2F0aW9uKFBsYXRm
b3JtM0RPYmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSk7CisgICAgdm9pZCBnZXRCb29sZWFudihH
QzNEZW51bSBwbmFtZSwgR0MzRGJvb2xlYW4qIHZhbHVlKTsKKyAgICB2b2lkIGdldEJ1ZmZlclBh
cmFtZXRlcml2KEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gcG5hbWUsIEdDM0RpbnQqIHZhbHVl
KTsKICAgICBBdHRyaWJ1dGVzIGdldENvbnRleHRBdHRyaWJ1dGVzKCk7Ci0KLSAgICB1bnNpZ25l
ZCBsb25nIGdldEVycm9yKCk7Ci0KLSAgICB2b2lkIGdldEZsb2F0dih1bnNpZ25lZCBsb25nIHBu
YW1lLCBmbG9hdCogdmFsdWUpOwotCi0gICAgdm9pZCBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQ
YXJhbWV0ZXJpdih1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBhdHRhY2htZW50
LCB1bnNpZ25lZCBsb25nIHBuYW1lLCBpbnQqIHZhbHVlKTsKLQotICAgIHZvaWQgZ2V0SW50ZWdl
cnYodW5zaWduZWQgbG9uZyBwbmFtZSwgaW50KiB2YWx1ZSk7Ci0KLSAgICB2b2lkIGdldFByb2dy
YW1pdihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIHVuc2lnbmVkIGxvbmcgcG5hbWUsIGludCog
dmFsdWUpOwotCisgICAgR0MzRGVudW0gZ2V0RXJyb3IoKTsKKyAgICB2b2lkIGdldEZsb2F0dihH
QzNEZW51bSBwbmFtZSwgR0MzRGZsb2F0KiB2YWx1ZSk7CisgICAgdm9pZCBnZXRGcmFtZWJ1ZmZl
ckF0dGFjaG1lbnRQYXJhbWV0ZXJpdihHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIGF0dGFjaG1l
bnQsIEdDM0RlbnVtIHBuYW1lLCBHQzNEaW50KiB2YWx1ZSk7CisgICAgdm9pZCBnZXRJbnRlZ2Vy
dihHQzNEZW51bSBwbmFtZSwgR0MzRGludCogdmFsdWUpOworICAgIHZvaWQgZ2V0UHJvZ3JhbWl2
KFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgR0MzRGVudW0gcG5hbWUsIEdDM0RpbnQqIHZhbHVl
KTsKICAgICBTdHJpbmcgZ2V0UHJvZ3JhbUluZm9Mb2coUGxhdGZvcm0zRE9iamVjdCk7Ci0KLSAg
ICB2b2lkIGdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1
bnNpZ25lZCBsb25nIHBuYW1lLCBpbnQqIHZhbHVlKTsKLQotICAgIHZvaWQgZ2V0U2hhZGVyaXYo
UGxhdGZvcm0zRE9iamVjdCwgdW5zaWduZWQgbG9uZyBwbmFtZSwgaW50KiB2YWx1ZSk7Ci0KKyAg
ICB2b2lkIGdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KEdDM0RlbnVtIHRhcmdldCwgR0MzRGVu
dW0gcG5hbWUsIEdDM0RpbnQqIHZhbHVlKTsKKyAgICB2b2lkIGdldFNoYWRlcml2KFBsYXRmb3Jt
M0RPYmplY3QsIEdDM0RlbnVtIHBuYW1lLCBHQzNEaW50KiB2YWx1ZSk7CiAgICAgU3RyaW5nIGdl
dFNoYWRlckluZm9Mb2coUGxhdGZvcm0zRE9iamVjdCk7CiAKICAgICAvLyBUQkQKLSAgICAvLyB2
b2lkIGdsR2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0IChHTGVudW0gc2hhZGVydHlwZSwgR0xlbnVt
IHByZWNpc2lvbnR5cGUsIEdMaW50KiByYW5nZSwgR0xpbnQqIHByZWNpc2lvbik7CisgICAgLy8g
dm9pZCBnbEdldFNoYWRlclByZWNpc2lvbkZvcm1hdCAoR0MzRGVudW0gc2hhZGVydHlwZSwgR0Mz
RGVudW0gcHJlY2lzaW9udHlwZSwgR0MzRGludCogcmFuZ2UsIEdDM0RpbnQqIHByZWNpc2lvbik7
CiAKICAgICBTdHJpbmcgZ2V0U2hhZGVyU291cmNlKFBsYXRmb3JtM0RPYmplY3QpOwotICAgIFN0
cmluZyBnZXRTdHJpbmcodW5zaWduZWQgbG9uZyBuYW1lKTsKLQotICAgIHZvaWQgZ2V0VGV4UGFy
YW1ldGVyZnYodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUsIGZsb2F0
KiB2YWx1ZSk7Ci0gICAgdm9pZCBnZXRUZXhQYXJhbWV0ZXJpdih1bnNpZ25lZCBsb25nIHRhcmdl
dCwgdW5zaWduZWQgbG9uZyBwbmFtZSwgaW50KiB2YWx1ZSk7Ci0KLSAgICB2b2lkIGdldFVuaWZv
cm1mdihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIGxvbmcgbG9jYXRpb24sIGZsb2F0KiB2YWx1
ZSk7Ci0gICAgdm9pZCBnZXRVbmlmb3JtaXYoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBsb25n
IGxvY2F0aW9uLCBpbnQqIHZhbHVlKTsKLQotICAgIGxvbmcgZ2V0VW5pZm9ybUxvY2F0aW9uKFBs
YXRmb3JtM0RPYmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSk7Ci0KLSAgICB2b2lkIGdldFZlcnRl
eEF0dHJpYmZ2KHVuc2lnbmVkIGxvbmcgaW5kZXgsIHVuc2lnbmVkIGxvbmcgcG5hbWUsIGZsb2F0
KiB2YWx1ZSk7Ci0gICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJpdih1bnNpZ25lZCBsb25nIGluZGV4
LCB1bnNpZ25lZCBsb25nIHBuYW1lLCBpbnQqIHZhbHVlKTsKLQotICAgIGxvbmcgZ2V0VmVydGV4
QXR0cmliT2Zmc2V0KHVuc2lnbmVkIGxvbmcgaW5kZXgsIHVuc2lnbmVkIGxvbmcgcG5hbWUpOwot
Ci0gICAgdm9pZCBoaW50KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIG1vZGUp
OwotICAgIGJvb2wgaXNCdWZmZXIoUGxhdGZvcm0zRE9iamVjdCk7Ci0gICAgYm9vbCBpc0VuYWJs
ZWQodW5zaWduZWQgbG9uZyBjYXApOwotICAgIGJvb2wgaXNGcmFtZWJ1ZmZlcihQbGF0Zm9ybTNE
T2JqZWN0KTsKLSAgICBib29sIGlzUHJvZ3JhbShQbGF0Zm9ybTNET2JqZWN0KTsKLSAgICBib29s
IGlzUmVuZGVyYnVmZmVyKFBsYXRmb3JtM0RPYmplY3QpOwotICAgIGJvb2wgaXNTaGFkZXIoUGxh
dGZvcm0zRE9iamVjdCk7Ci0gICAgYm9vbCBpc1RleHR1cmUoUGxhdGZvcm0zRE9iamVjdCk7Ci0g
ICAgdm9pZCBsaW5lV2lkdGgoZG91YmxlKTsKKyAgICBTdHJpbmcgZ2V0U3RyaW5nKEdDM0RlbnVt
IG5hbWUpOworICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVyZnYoR0MzRGVudW0gdGFyZ2V0LCBHQzNE
ZW51bSBwbmFtZSwgR0MzRGZsb2F0KiB2YWx1ZSk7CisgICAgdm9pZCBnZXRUZXhQYXJhbWV0ZXJp
dihHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIHBuYW1lLCBHQzNEaW50KiB2YWx1ZSk7CisgICAg
dm9pZCBnZXRVbmlmb3JtZnYoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBHQzNEaW50IGxvY2F0
aW9uLCBHQzNEZmxvYXQqIHZhbHVlKTsKKyAgICB2b2lkIGdldFVuaWZvcm1pdihQbGF0Zm9ybTNE
T2JqZWN0IHByb2dyYW0sIEdDM0RpbnQgbG9jYXRpb24sIEdDM0RpbnQqIHZhbHVlKTsKKyAgICBH
QzNEaW50IGdldFVuaWZvcm1Mb2NhdGlvbihQbGF0Zm9ybTNET2JqZWN0LCBjb25zdCBTdHJpbmcm
IG5hbWUpOworICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliZnYoR0MzRHVpbnQgaW5kZXgsIEdDM0Rl
bnVtIHBuYW1lLCBHQzNEZmxvYXQqIHZhbHVlKTsKKyAgICB2b2lkIGdldFZlcnRleEF0dHJpYml2
KEdDM0R1aW50IGluZGV4LCBHQzNEZW51bSBwbmFtZSwgR0MzRGludCogdmFsdWUpOworICAgIEdD
M0RzaXplaXB0ciBnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQoR0MzRHVpbnQgaW5kZXgsIEdDM0RlbnVt
IHBuYW1lKTsKKworICAgIHZvaWQgaGludChHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIG1vZGUp
OworICAgIEdDM0Rib29sZWFuIGlzQnVmZmVyKFBsYXRmb3JtM0RPYmplY3QpOworICAgIEdDM0Ri
b29sZWFuIGlzRW5hYmxlZChHQzNEZW51bSBjYXApOworICAgIEdDM0Rib29sZWFuIGlzRnJhbWVi
dWZmZXIoUGxhdGZvcm0zRE9iamVjdCk7CisgICAgR0MzRGJvb2xlYW4gaXNQcm9ncmFtKFBsYXRm
b3JtM0RPYmplY3QpOworICAgIEdDM0Rib29sZWFuIGlzUmVuZGVyYnVmZmVyKFBsYXRmb3JtM0RP
YmplY3QpOworICAgIEdDM0Rib29sZWFuIGlzU2hhZGVyKFBsYXRmb3JtM0RPYmplY3QpOworICAg
IEdDM0Rib29sZWFuIGlzVGV4dHVyZShQbGF0Zm9ybTNET2JqZWN0KTsKKyAgICB2b2lkIGxpbmVX
aWR0aChHQzNEZmxvYXQpOwogICAgIHZvaWQgbGlua1Byb2dyYW0oUGxhdGZvcm0zRE9iamVjdCk7
Ci0gICAgdm9pZCBwaXhlbFN0b3JlaSh1bnNpZ25lZCBsb25nIHBuYW1lLCBsb25nIHBhcmFtKTsK
LSAgICB2b2lkIHBvbHlnb25PZmZzZXQoZG91YmxlIGZhY3RvciwgZG91YmxlIHVuaXRzKTsKKyAg
ICB2b2lkIHBpeGVsU3RvcmVpKEdDM0RlbnVtIHBuYW1lLCBHQzNEaW50IHBhcmFtKTsKKyAgICB2
b2lkIHBvbHlnb25PZmZzZXQoR0MzRGZsb2F0IGZhY3RvciwgR0MzRGZsb2F0IHVuaXRzKTsKIAot
ICAgIHZvaWQgcmVhZFBpeGVscyhsb25nIHgsIGxvbmcgeSwgdW5zaWduZWQgbG9uZyB3aWR0aCwg
dW5zaWduZWQgbG9uZyBoZWlnaHQsIHVuc2lnbmVkIGxvbmcgZm9ybWF0LCB1bnNpZ25lZCBsb25n
IHR5cGUsIHZvaWQqIGRhdGEpOworICAgIHZvaWQgcmVhZFBpeGVscyhHQzNEaW50IHgsIEdDM0Rp
bnQgeSwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEZW51bSBmb3JtYXQs
IEdDM0RlbnVtIHR5cGUsIEdDM0R2b2lkKiBkYXRhKTsKIAogICAgIHZvaWQgcmVsZWFzZVNoYWRl
ckNvbXBpbGVyKCk7Ci0gICAgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlKHVuc2lnbmVkIGxvbmcg
dGFyZ2V0LCB1bnNpZ25lZCBsb25nIGludGVybmFsZm9ybWF0LCB1bnNpZ25lZCBsb25nIHdpZHRo
LCB1bnNpZ25lZCBsb25nIGhlaWdodCk7Ci0gICAgdm9pZCBzYW1wbGVDb3ZlcmFnZShkb3VibGUg
dmFsdWUsIGJvb2wgaW52ZXJ0KTsKLSAgICB2b2lkIHNjaXNzb3IobG9uZyB4LCBsb25nIHksIHVu
c2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0KTsKKworICAgIHZvaWQgcmVu
ZGVyYnVmZmVyU3RvcmFnZShHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIGludGVybmFsZm9ybWF0
LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQpOworICAgIHZvaWQgc2FtcGxlQ292
ZXJhZ2UoR0MzRGNsYW1wZiB2YWx1ZSwgR0MzRGJvb2xlYW4gaW52ZXJ0KTsKKyAgICB2b2lkIHNj
aXNzb3IoR0MzRGludCB4LCBHQzNEaW50IHksIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhl
aWdodCk7CiAgICAgdm9pZCBzaGFkZXJTb3VyY2UoUGxhdGZvcm0zRE9iamVjdCwgY29uc3QgU3Ry
aW5nJiBzdHJpbmcpOwotICAgIHZvaWQgc3RlbmNpbEZ1bmModW5zaWduZWQgbG9uZyBmdW5jLCBs
b25nIHJlZiwgdW5zaWduZWQgbG9uZyBtYXNrKTsKLSAgICB2b2lkIHN0ZW5jaWxGdW5jU2VwYXJh
dGUodW5zaWduZWQgbG9uZyBmYWNlLCB1bnNpZ25lZCBsb25nIGZ1bmMsIGxvbmcgcmVmLCB1bnNp
Z25lZCBsb25nIG1hc2spOwotICAgIHZvaWQgc3RlbmNpbE1hc2sodW5zaWduZWQgbG9uZyBtYXNr
KTsKLSAgICB2b2lkIHN0ZW5jaWxNYXNrU2VwYXJhdGUodW5zaWduZWQgbG9uZyBmYWNlLCB1bnNp
Z25lZCBsb25nIG1hc2spOwotICAgIHZvaWQgc3RlbmNpbE9wKHVuc2lnbmVkIGxvbmcgZmFpbCwg
dW5zaWduZWQgbG9uZyB6ZmFpbCwgdW5zaWduZWQgbG9uZyB6cGFzcyk7Ci0gICAgdm9pZCBzdGVu
Y2lsT3BTZXBhcmF0ZSh1bnNpZ25lZCBsb25nIGZhY2UsIHVuc2lnbmVkIGxvbmcgZmFpbCwgdW5z
aWduZWQgbG9uZyB6ZmFpbCwgdW5zaWduZWQgbG9uZyB6cGFzcyk7Ci0KLSAgICBpbnQgdGV4SW1h
Z2UyRCh1bnNpZ25lZCB0YXJnZXQsIHVuc2lnbmVkIGxldmVsLCB1bnNpZ25lZCBpbnRlcm5hbGZv
cm1hdCwgdW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCwgdW5zaWduZWQgYm9yZGVyLCB1
bnNpZ25lZCBmb3JtYXQsIHVuc2lnbmVkIHR5cGUsIHZvaWQqIHBpeGVscyk7Ci0KLSAgICB2b2lk
IHRleFBhcmFtZXRlcmYodW5zaWduZWQgdGFyZ2V0LCB1bnNpZ25lZCBwbmFtZSwgZmxvYXQgcGFy
YW0pOwotICAgIHZvaWQgdGV4UGFyYW1ldGVyaSh1bnNpZ25lZCB0YXJnZXQsIHVuc2lnbmVkIHBu
YW1lLCBpbnQgcGFyYW0pOwotCi0gICAgaW50IHRleFN1YkltYWdlMkQodW5zaWduZWQgdGFyZ2V0
LCB1bnNpZ25lZCBsZXZlbCwgdW5zaWduZWQgeG9mZnNldCwgdW5zaWduZWQgeW9mZnNldCwgdW5z
aWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCwgdW5zaWduZWQgZm9ybWF0LCB1bnNpZ25lZCB0
eXBlLCB2b2lkKiBwaXhlbHMpOwotCi0gICAgdm9pZCB1bmlmb3JtMWYobG9uZyBsb2NhdGlvbiwg
ZmxvYXQgeCk7Ci0gICAgdm9pZCB1bmlmb3JtMWZ2KGxvbmcgbG9jYXRpb24sIGZsb2F0KiB2LCBp
bnQgc2l6ZSk7Ci0gICAgdm9pZCB1bmlmb3JtMWkobG9uZyBsb2NhdGlvbiwgaW50IHgpOwotICAg
IHZvaWQgdW5pZm9ybTFpdihsb25nIGxvY2F0aW9uLCBpbnQqIHYsIGludCBzaXplKTsKLSAgICB2
b2lkIHVuaWZvcm0yZihsb25nIGxvY2F0aW9uLCBmbG9hdCB4LCBmbG9hdCB5KTsKLSAgICB2b2lk
IHVuaWZvcm0yZnYobG9uZyBsb2NhdGlvbiwgZmxvYXQqIHYsIGludCBzaXplKTsKLSAgICB2b2lk
IHVuaWZvcm0yaShsb25nIGxvY2F0aW9uLCBpbnQgeCwgaW50IHkpOwotICAgIHZvaWQgdW5pZm9y
bTJpdihsb25nIGxvY2F0aW9uLCBpbnQqIHYsIGludCBzaXplKTsKLSAgICB2b2lkIHVuaWZvcm0z
Zihsb25nIGxvY2F0aW9uLCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KTsKLSAgICB2b2lkIHVu
aWZvcm0zZnYobG9uZyBsb2NhdGlvbiwgZmxvYXQqIHYsIGludCBzaXplKTsKLSAgICB2b2lkIHVu
aWZvcm0zaShsb25nIGxvY2F0aW9uLCBpbnQgeCwgaW50IHksIGludCB6KTsKLSAgICB2b2lkIHVu
aWZvcm0zaXYobG9uZyBsb2NhdGlvbiwgaW50KiB2LCBpbnQgc2l6ZSk7Ci0gICAgdm9pZCB1bmlm
b3JtNGYobG9uZyBsb2NhdGlvbiwgZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeiwgZmxvYXQgdyk7
Ci0gICAgdm9pZCB1bmlmb3JtNGZ2KGxvbmcgbG9jYXRpb24sIGZsb2F0KiB2LCBpbnQgc2l6ZSk7
Ci0gICAgdm9pZCB1bmlmb3JtNGkobG9uZyBsb2NhdGlvbiwgaW50IHgsIGludCB5LCBpbnQgeiwg
aW50IHcpOwotICAgIHZvaWQgdW5pZm9ybTRpdihsb25nIGxvY2F0aW9uLCBpbnQqIHYsIGludCBz
aXplKTsKLSAgICB2b2lkIHVuaWZvcm1NYXRyaXgyZnYobG9uZyBsb2NhdGlvbiwgYm9vbCB0cmFu
c3Bvc2UsIGZsb2F0KiB2YWx1ZSwgaW50IHNpemUpOwotICAgIHZvaWQgdW5pZm9ybU1hdHJpeDNm
dihsb25nIGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgZmxvYXQqIHZhbHVlLCBpbnQgc2l6ZSk7
Ci0gICAgdm9pZCB1bmlmb3JtTWF0cml4NGZ2KGxvbmcgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3Nl
LCBmbG9hdCogdmFsdWUsIGludCBzaXplKTsKKyAgICB2b2lkIHN0ZW5jaWxGdW5jKEdDM0RlbnVt
IGZ1bmMsIEdDM0RpbnQgcmVmLCBHQzNEdWludCBtYXNrKTsKKyAgICB2b2lkIHN0ZW5jaWxGdW5j
U2VwYXJhdGUoR0MzRGVudW0gZmFjZSwgR0MzRGVudW0gZnVuYywgR0MzRGludCByZWYsIEdDM0R1
aW50IG1hc2spOworICAgIHZvaWQgc3RlbmNpbE1hc2soR0MzRHVpbnQgbWFzayk7CisgICAgdm9p
ZCBzdGVuY2lsTWFza1NlcGFyYXRlKEdDM0RlbnVtIGZhY2UsIEdDM0R1aW50IG1hc2spOworICAg
IHZvaWQgc3RlbmNpbE9wKEdDM0RlbnVtIGZhaWwsIEdDM0RlbnVtIHpmYWlsLCBHQzNEZW51bSB6
cGFzcyk7CisgICAgdm9pZCBzdGVuY2lsT3BTZXBhcmF0ZShHQzNEZW51bSBmYWNlLCBHQzNEZW51
bSBmYWlsLCBHQzNEZW51bSB6ZmFpbCwgR0MzRGVudW0genBhc3MpOworCisgICAgYm9vbCB0ZXhJ
bWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGVudW0gaW50ZXJuYWxm
b3JtYXQsIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGludCBib3JkZXIs
IEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVudW0gdHlwZSwgR0MzRHZvaWQqIHBpeGVscyk7CisgICAg
dm9pZCB0ZXhQYXJhbWV0ZXJmKEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gcG5hbWUsIEdDM0Rm
bG9hdCBwYXJhbSk7CisgICAgdm9pZCB0ZXhQYXJhbWV0ZXJpKEdDM0RlbnVtIHRhcmdldCwgR0Mz
RGVudW0gcG5hbWUsIEdDM0RpbnQgcGFyYW0pOworICAgIHZvaWQgdGV4U3ViSW1hZ2UyRChHQzNE
ZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RpbnQgeG9mZnNldCwgR0MzRGludCB5b2Zm
c2V0LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RlbnVtIGZvcm1hdCwg
R0MzRGVudW0gdHlwZSwgR0MzRHZvaWQqIHBpeGVscyk7CisKKyAgICB2b2lkIHVuaWZvcm0xZihH
QzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQgeCk7CisgICAgdm9pZCB1bmlmb3JtMWZ2KEdDM0Rp
bnQgbG9jYXRpb24sIEdDM0RmbG9hdCogdiwgR0MzRHNpemVpIHNpemUpOworICAgIHZvaWQgdW5p
Zm9ybTFpKEdDM0RpbnQgbG9jYXRpb24sIEdDM0RpbnQgeCk7CisgICAgdm9pZCB1bmlmb3JtMWl2
KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RpbnQqIHYsIEdDM0RzaXplaSBzaXplKTsKKyAgICB2b2lk
IHVuaWZvcm0yZihHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQgeCwgZmxvYXQgeSk7CisgICAg
dm9pZCB1bmlmb3JtMmZ2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RmbG9hdCogdiwgR0MzRHNpemVp
IHNpemUpOworICAgIHZvaWQgdW5pZm9ybTJpKEdDM0RpbnQgbG9jYXRpb24sIEdDM0RpbnQgeCwg
R0MzRGludCB5KTsKKyAgICB2b2lkIHVuaWZvcm0yaXYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGlu
dCogdiwgR0MzRHNpemVpIHNpemUpOworICAgIHZvaWQgdW5pZm9ybTNmKEdDM0RpbnQgbG9jYXRp
b24sIEdDM0RmbG9hdCB4LCBHQzNEZmxvYXQgeSwgR0MzRGZsb2F0IHopOworICAgIHZvaWQgdW5p
Zm9ybTNmdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQqIHYsIEdDM0RzaXplaSBzaXplKTsK
KyAgICB2b2lkIHVuaWZvcm0zaShHQzNEaW50IGxvY2F0aW9uLCBHQzNEaW50IHgsIEdDM0RpbnQg
eSwgR0MzRGludCB6KTsKKyAgICB2b2lkIHVuaWZvcm0zaXYoR0MzRGludCBsb2NhdGlvbiwgR0Mz
RGludCogdiwgR0MzRHNpemVpIHNpemUpOworICAgIHZvaWQgdW5pZm9ybTRmKEdDM0RpbnQgbG9j
YXRpb24sIEdDM0RmbG9hdCB4LCBHQzNEZmxvYXQgeSwgR0MzRGZsb2F0IHosIEdDM0RmbG9hdCB3
KTsKKyAgICB2b2lkIHVuaWZvcm00ZnYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGZsb2F0KiB2LCBH
QzNEc2l6ZWkgc2l6ZSk7CisgICAgdm9pZCB1bmlmb3JtNGkoR0MzRGludCBsb2NhdGlvbiwgR0Mz
RGludCB4LCBHQzNEaW50IHksIEdDM0RpbnQgeiwgR0MzRGludCB3KTsKKyAgICB2b2lkIHVuaWZv
cm00aXYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGludCogdiwgR0MzRHNpemVpIHNpemUpOworICAg
IHZvaWQgdW5pZm9ybU1hdHJpeDJmdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEYm9vbGVhbiB0cmFu
c3Bvc2UsIEdDM0RmbG9hdCogdmFsdWUsIEdDM0RzaXplaSBzaXplKTsKKyAgICB2b2lkIHVuaWZv
cm1NYXRyaXgzZnYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGJvb2xlYW4gdHJhbnNwb3NlLCBHQzNE
ZmxvYXQqIHZhbHVlLCBHQzNEc2l6ZWkgc2l6ZSk7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4NGZ2
KEdDM0RpbnQgbG9jYXRpb24sIEdDM0Rib29sZWFuIHRyYW5zcG9zZSwgR0MzRGZsb2F0KiB2YWx1
ZSwgR0MzRHNpemVpIHNpemUpOwogCiAgICAgdm9pZCB1c2VQcm9ncmFtKFBsYXRmb3JtM0RPYmpl
Y3QpOwogICAgIHZvaWQgdmFsaWRhdGVQcm9ncmFtKFBsYXRmb3JtM0RPYmplY3QpOwogCi0gICAg
dm9pZCB2ZXJ0ZXhBdHRyaWIxZih1bnNpZ25lZCBsb25nIGluZHgsIGZsb2F0IHgpOwotICAgIHZv
aWQgdmVydGV4QXR0cmliMWZ2KHVuc2lnbmVkIGxvbmcgaW5keCwgZmxvYXQqIHZhbHVlcyk7Ci0g
ICAgdm9pZCB2ZXJ0ZXhBdHRyaWIyZih1bnNpZ25lZCBsb25nIGluZHgsIGZsb2F0IHgsIGZsb2F0
IHkpOwotICAgIHZvaWQgdmVydGV4QXR0cmliMmZ2KHVuc2lnbmVkIGxvbmcgaW5keCwgZmxvYXQq
IHZhbHVlcyk7Ci0gICAgdm9pZCB2ZXJ0ZXhBdHRyaWIzZih1bnNpZ25lZCBsb25nIGluZHgsIGZs
b2F0IHgsIGZsb2F0IHksIGZsb2F0IHopOwotICAgIHZvaWQgdmVydGV4QXR0cmliM2Z2KHVuc2ln
bmVkIGxvbmcgaW5keCwgZmxvYXQqIHZhbHVlcyk7Ci0gICAgdm9pZCB2ZXJ0ZXhBdHRyaWI0Zih1
bnNpZ25lZCBsb25nIGluZHgsIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHosIGZsb2F0IHcpOwot
ICAgIHZvaWQgdmVydGV4QXR0cmliNGZ2KHVuc2lnbmVkIGxvbmcgaW5keCwgZmxvYXQqIHZhbHVl
cyk7Ci0gICAgdm9pZCB2ZXJ0ZXhBdHRyaWJQb2ludGVyKHVuc2lnbmVkIGxvbmcgaW5keCwgaW50
IHNpemUsIGludCB0eXBlLCBib29sIG5vcm1hbGl6ZWQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIGxvbmcgc3RyaWRlLCB1bnNpZ25lZCBsb25nIG9mZnNldCk7CisgICAg
dm9pZCB2ZXJ0ZXhBdHRyaWIxZihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0IHgpOworICAgIHZv
aWQgdmVydGV4QXR0cmliMWZ2KEdDM0R1aW50IGluZGV4LCBHQzNEZmxvYXQqIHZhbHVlcyk7Cisg
ICAgdm9pZCB2ZXJ0ZXhBdHRyaWIyZihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0IHgsIEdDM0Rm
bG9hdCB5KTsKKyAgICB2b2lkIHZlcnRleEF0dHJpYjJmdihHQzNEdWludCBpbmRleCwgR0MzRGZs
b2F0KiB2YWx1ZXMpOworICAgIHZvaWQgdmVydGV4QXR0cmliM2YoR0MzRHVpbnQgaW5kZXgsIEdD
M0RmbG9hdCB4LCBHQzNEZmxvYXQgeSwgR0MzRGZsb2F0IHopOworICAgIHZvaWQgdmVydGV4QXR0
cmliM2Z2KEdDM0R1aW50IGluZGV4LCBHQzNEZmxvYXQqIHZhbHVlcyk7CisgICAgdm9pZCB2ZXJ0
ZXhBdHRyaWI0ZihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0IHgsIEdDM0RmbG9hdCB5LCBHQzNE
ZmxvYXQgeiwgR0MzRGZsb2F0IHcpOworICAgIHZvaWQgdmVydGV4QXR0cmliNGZ2KEdDM0R1aW50
IGluZGV4LCBHQzNEZmxvYXQqIHZhbHVlcyk7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJQb2ludGVy
KEdDM0R1aW50IGluZGV4LCBHQzNEaW50IHNpemUsIEdDM0RlbnVtIHR5cGUsIEdDM0Rib29sZWFu
IG5vcm1hbGl6ZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0RzaXplaSBzdHJp
ZGUsIEdDM0RzaXplaXB0ciBvZmZzZXQpOwogCi0gICAgdm9pZCB2aWV3cG9ydChsb25nIHgsIGxv
bmcgeSwgdW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpOworICAgIHZv
aWQgdmlld3BvcnQoR0MzRGludCB4LCBHQzNEaW50IHksIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNp
emVpIGhlaWdodCk7CiAKICAgICB2b2lkIHJlc2hhcGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsK
IApAQCAtNzY4LDE5ICs3NTcsMTkgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICAvLyBTdXBwb3J0
IGZvciBidWZmZXIgY3JlYXRpb24gYW5kIGRlbGV0aW9uCi0gICAgdW5zaWduZWQgY3JlYXRlQnVm
ZmVyKCk7Ci0gICAgdW5zaWduZWQgY3JlYXRlRnJhbWVidWZmZXIoKTsKLSAgICB1bnNpZ25lZCBj
cmVhdGVQcm9ncmFtKCk7Ci0gICAgdW5zaWduZWQgY3JlYXRlUmVuZGVyYnVmZmVyKCk7Ci0gICAg
dW5zaWduZWQgY3JlYXRlU2hhZGVyKHVuc2lnbmVkIGxvbmcpOwotICAgIHVuc2lnbmVkIGNyZWF0
ZVRleHR1cmUoKTsKLQotICAgIHZvaWQgZGVsZXRlQnVmZmVyKHVuc2lnbmVkKTsKLSAgICB2b2lk
IGRlbGV0ZUZyYW1lYnVmZmVyKHVuc2lnbmVkKTsKLSAgICB2b2lkIGRlbGV0ZVByb2dyYW0odW5z
aWduZWQpOwotICAgIHZvaWQgZGVsZXRlUmVuZGVyYnVmZmVyKHVuc2lnbmVkKTsKLSAgICB2b2lk
IGRlbGV0ZVNoYWRlcih1bnNpZ25lZCk7Ci0gICAgdm9pZCBkZWxldGVUZXh0dXJlKHVuc2lnbmVk
KTsKKyAgICBQbGF0Zm9ybTNET2JqZWN0IGNyZWF0ZUJ1ZmZlcigpOworICAgIFBsYXRmb3JtM0RP
YmplY3QgY3JlYXRlRnJhbWVidWZmZXIoKTsKKyAgICBQbGF0Zm9ybTNET2JqZWN0IGNyZWF0ZVBy
b2dyYW0oKTsKKyAgICBQbGF0Zm9ybTNET2JqZWN0IGNyZWF0ZVJlbmRlcmJ1ZmZlcigpOworICAg
IFBsYXRmb3JtM0RPYmplY3QgY3JlYXRlU2hhZGVyKEdDM0RlbnVtKTsKKyAgICBQbGF0Zm9ybTNE
T2JqZWN0IGNyZWF0ZVRleHR1cmUoKTsKKworICAgIHZvaWQgZGVsZXRlQnVmZmVyKFBsYXRmb3Jt
M0RPYmplY3QpOworICAgIHZvaWQgZGVsZXRlRnJhbWVidWZmZXIoUGxhdGZvcm0zRE9iamVjdCk7
CisgICAgdm9pZCBkZWxldGVQcm9ncmFtKFBsYXRmb3JtM0RPYmplY3QpOworICAgIHZvaWQgZGVs
ZXRlUmVuZGVyYnVmZmVyKFBsYXRmb3JtM0RPYmplY3QpOworICAgIHZvaWQgZGVsZXRlU2hhZGVy
KFBsYXRmb3JtM0RPYmplY3QpOworICAgIHZvaWQgZGVsZXRlVGV4dHVyZShQbGF0Zm9ybTNET2Jq
ZWN0KTsKIAogICAgIC8vIFN5bnRoZXNpemVzIGFuIE9wZW5HTCBlcnJvciB3aGljaCB3aWxsIGJl
IHJldHVybmVkIGZyb20gYQogICAgIC8vIGxhdGVyIGNhbGwgdG8gZ2V0RXJyb3IuIFRoaXMgaXMg
dXNlZCB0byBlbXVsYXRlIE9wZW5HTCBFUwpAQCAtNzkwLDcgKzc3OSw3IEBAIHB1YmxpYzoKICAg
ICAvLyBQZXIgdGhlIGJlaGF2aW9yIG9mIGdsR2V0RXJyb3IsIHRoaXMgc3RvcmVzIGF0IG1vc3Qg
b25lCiAgICAgLy8gaW5zdGFuY2Ugb2YgYW55IGdpdmVuIGVycm9yLCBhbmQgcmV0dXJucyB0aGVt
IGZyb20gY2FsbHMgdG8KICAgICAvLyBnZXRFcnJvciBpbiB0aGUgb3JkZXIgdGhleSB3ZXJlIGFk
ZGVkLgotICAgIHZvaWQgc3ludGhlc2l6ZUdMRXJyb3IodW5zaWduZWQgbG9uZyBlcnJvcik7Cisg
ICAgdm9pZCBzeW50aGVzaXplR0xFcnJvcihHQzNEZW51bSBlcnJvcik7CiAKICAgICAvLyBTdXBw
b3J0IGZvciBleHRlbnNpb25zLiBSZXR1cm5zIGEgbm9uLW51bGwgb2JqZWN0LCB0aG91Z2ggbm90
CiAgICAgLy8gYWxsIG1ldGhvZHMgaXQgY29udGFpbnMgbWF5IG5lY2Vzc2FyaWx5IGJlIHN1cHBv
cnRlZCBvbiB0aGUKQEAgLTgyMyw4ICs4MTIsOCBAQCBwdWJsaWM6CiAgICAgLy8gTm8gdmVydGlj
YWwgZmxpcCBvZiB0aGUgaW1hZ2UgZGF0YSBpcyBwZXJmb3JtZWQgYnkgdGhpcwogICAgIC8vIG1l
dGhvZC4KICAgICBib29sIGdldEltYWdlRGF0YShJbWFnZSogaW1hZ2UsCi0gICAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgaW50IGZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBpbnQgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICBHQzNEZW51bSBmb3JtYXQsCisg
ICAgICAgICAgICAgICAgICAgICAgR0MzRGVudW0gdHlwZSwKICAgICAgICAgICAgICAgICAgICAg
ICBib29sIHByZW11bHRpcGx5QWxwaGEsCiAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpZ25v
cmVHYW1tYUFuZENvbG9yUHJvZmlsZSwKICAgICAgICAgICAgICAgICAgICAgICBWZWN0b3I8dWlu
dDhfdD4mIG91dHB1dFZlY3Rvcik7CkBAIC04ODAsMjAgKzg2OSwyMCBAQCBwdWJsaWM6CiAKICAg
ICBDR0xDb250ZXh0T2JqIG1fY29udGV4dE9iajsKICAgICBSZXRhaW5QdHI8V2ViR0xMYXllcj4g
bV93ZWJHTExheWVyOwotICAgIEdMdWludCBtX3RleHR1cmU7Ci0gICAgR0x1aW50IG1fZmJvOwot
ICAgIEdMdWludCBtX2RlcHRoU3RlbmNpbEJ1ZmZlcjsKKyAgICBHQzNEdWludCBtX3RleHR1cmU7
CisgICAgR0MzRHVpbnQgbV9mYm87CisgICAgR0MzRHVpbnQgbV9kZXB0aFN0ZW5jaWxCdWZmZXI7
CiAKICAgICAvLyBGb3IgdHJhY2tpbmcgd2hpY2ggRkJPIGlzIGJvdW5kCi0gICAgR0x1aW50IG1f
Ym91bmRGQk87CisgICAgR0MzRHVpbnQgbV9ib3VuZEZCTzsKIAogICAgIC8vIEZvciBtdWx0aXNh
bXBsaW5nCi0gICAgR0x1aW50IG1fbXVsdGlzYW1wbGVGQk87Ci0gICAgR0x1aW50IG1fbXVsdGlz
YW1wbGVEZXB0aFN0ZW5jaWxCdWZmZXI7Ci0gICAgR0x1aW50IG1fbXVsdGlzYW1wbGVDb2xvckJ1
ZmZlcjsKKyAgICBHQzNEdWludCBtX211bHRpc2FtcGxlRkJPOworICAgIEdDM0R1aW50IG1fbXVs
dGlzYW1wbGVEZXB0aFN0ZW5jaWxCdWZmZXI7CisgICAgR0MzRHVpbnQgbV9tdWx0aXNhbXBsZUNv
bG9yQnVmZmVyOwogCiAgICAgLy8gRXJyb3JzIHJhaXNlZCBieSBzeW50aGVzaXplR0xFcnJvcigp
LgotICAgIExpc3RIYXNoU2V0PHVuc2lnbmVkIGxvbmc+IG1fc3ludGhldGljRXJyb3JzOworICAg
IExpc3RIYXNoU2V0PEdDM0RlbnVtPiBtX3N5bnRoZXRpY0Vycm9yczsKICNlbmRpZgogCiAgICAg
Ly8gRklYTUU6IGlkZWFsbHkgdGhpcyB3b3VsZCBiZSB1c2VkIG9uIGFsbCBwbGF0Zm9ybXMuCklu
ZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250
ZXh0M0RDRy5jcHAJKHJldmlzaW9uIDc0OTcwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODksOCArODks
OCBAQCBzdGF0aWMgR3JhcGhpY3NDb250ZXh0M0Q6OlNvdXJjZURhdGFGb3JtCiB9CiAKIGJvb2wg
R3JhcGhpY3NDb250ZXh0M0Q6OmdldEltYWdlRGF0YShJbWFnZSogaW1hZ2UsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGZvcm1hdCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgdHlwZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNEZW51bSBmb3JtYXQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0MzRGVudW0gdHlwZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBib29sIHByZW11bHRpcGx5QWxwaGEsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpZ25vcmVHYW1tYUFuZENvbG9yUHJvZmls
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZWN0b3I8dWludDhfdD4m
IG91dHB1dFZlY3RvcikKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1NoYXJl
ZEdyYXBoaWNzQ29udGV4dDNELmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9TaGFyZWRHcmFwaGljc0NvbnRleHQzRC5jcHAJKHJldmlzaW9uIDc0OTcwKQor
KysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvU2hhcmVkR3JhcGhpY3NDb250ZXh0M0Qu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw4ICszOCw2IEBACiAjaW5jbHVkZSAiQ29sb3IuaCIK
ICNpbmNsdWRlICJFeHRlbnNpb25zM0QuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKLSNpbmNs
dWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgotI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXMuaCIKICNp
bmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSAiU29saWRGaWxsU2hhZGVyLmgiCiAjaW5jbHVk
ZSAiVGV4U2hhZGVyLmgiCkBAIC05OCwxMiArOTYsMTIgQEAgdm9pZCBTaGFyZWRHcmFwaGljc0Nv
bnRleHQzRDo6c2Npc3NvcihjbwogICAgIG1fY29udGV4dC0+c2Npc3NvcihyZWN0LngoKSwgcmVj
dC55KCksIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSk7CiB9CiAKLXZvaWQgU2hhcmVkR3Jh
cGhpY3NDb250ZXh0M0Q6OmVuYWJsZSh1bnNpZ25lZCBjYXBhY2l0eSkKK3ZvaWQgU2hhcmVkR3Jh
cGhpY3NDb250ZXh0M0Q6OmVuYWJsZShHQzNEZW51bSBjYXBhY2l0eSkKIHsKICAgICBtX2NvbnRl
eHQtPmVuYWJsZShjYXBhY2l0eSk7CiB9CiAKLXZvaWQgU2hhcmVkR3JhcGhpY3NDb250ZXh0M0Q6
OmRpc2FibGUodW5zaWduZWQgY2FwYWNpdHkpCit2b2lkIFNoYXJlZEdyYXBoaWNzQ29udGV4dDNE
OjpkaXNhYmxlKEdDM0RlbnVtIGNhcGFjaXR5KQogewogICAgIG1fY29udGV4dC0+ZGlzYWJsZShj
YXBhY2l0eSk7CiB9CkBAIC0xMTUsMjIgKzExMywyMiBAQCB2b2lkIFNoYXJlZEdyYXBoaWNzQ29u
dGV4dDNEOjpjbGVhckNvbG9yCiAgICAgbV9jb250ZXh0LT5jbGVhckNvbG9yKHJnYmFbMF0sIHJn
YmFbMV0sIHJnYmFbMl0sIHJnYmFbM10pOwogfQogCi12b2lkIFNoYXJlZEdyYXBoaWNzQ29udGV4
dDNEOjpjbGVhcih1bnNpZ25lZCBtYXNrKQordm9pZCBTaGFyZWRHcmFwaGljc0NvbnRleHQzRDo6
Y2xlYXIoR0MzRGJpdGZpZWxkIG1hc2spCiB7CiAgICAgbV9jb250ZXh0LT5jbGVhcihtYXNrKTsK
IH0KIAotdm9pZCBTaGFyZWRHcmFwaGljc0NvbnRleHQzRDo6ZHJhd0FycmF5cyh1bnNpZ25lZCBs
b25nIG1vZGUsIGxvbmcgZmlyc3QsIGxvbmcgY291bnQpCit2b2lkIFNoYXJlZEdyYXBoaWNzQ29u
dGV4dDNEOjpkcmF3QXJyYXlzKEdDM0RlbnVtIG1vZGUsIEdDM0RpbnQgZmlyc3QsIEdDM0RzaXpl
aSBjb3VudCkKIHsKICAgICBtX2NvbnRleHQtPmRyYXdBcnJheXMobW9kZSwgZmlyc3QsIGNvdW50
KTsKIH0KIAotdW5zaWduZWQgbG9uZyBTaGFyZWRHcmFwaGljc0NvbnRleHQzRDo6Z2V0RXJyb3Io
KQorR0MzRGVudW0gU2hhcmVkR3JhcGhpY3NDb250ZXh0M0Q6OmdldEVycm9yKCkKIHsKICAgICBy
ZXR1cm4gbV9jb250ZXh0LT5nZXRFcnJvcigpOwogfQogCi12b2lkIFNoYXJlZEdyYXBoaWNzQ29u
dGV4dDNEOjpnZXRJbnRlZ2Vydih1bnNpZ25lZCBsb25nIHBuYW1lLCBpbnQqIHZhbHVlKQordm9p
ZCBTaGFyZWRHcmFwaGljc0NvbnRleHQzRDo6Z2V0SW50ZWdlcnYoR0MzRGVudW0gcG5hbWUsIEdD
M0RpbnQqIHZhbHVlKQogewogICAgIG1fY29udGV4dC0+Z2V0SW50ZWdlcnYocG5hbWUsIHZhbHVl
KTsKIH0KQEAgLTE0MCw1MSArMTM4LDQ5IEBAIHZvaWQgU2hhcmVkR3JhcGhpY3NDb250ZXh0M0Q6
OmZsdXNoKCkKICAgICBtX2NvbnRleHQtPmZsdXNoKCk7CiB9CiAKLXVuc2lnbmVkIFNoYXJlZEdy
YXBoaWNzQ29udGV4dDNEOjpjcmVhdGVGcmFtZWJ1ZmZlcigpCitQbGF0Zm9ybTNET2JqZWN0IFNo
YXJlZEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVGcmFtZWJ1ZmZlcigpCiB7CiAgICAgcmV0dXJu
IG1fY29udGV4dC0+Y3JlYXRlRnJhbWVidWZmZXIoKTsKIH0KIAotdW5zaWduZWQgU2hhcmVkR3Jh
cGhpY3NDb250ZXh0M0Q6OmNyZWF0ZVRleHR1cmUoKQorUGxhdGZvcm0zRE9iamVjdCBTaGFyZWRH
cmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlVGV4dHVyZSgpCiB7CiAgICAgcmV0dXJuIG1fY29udGV4
dC0+Y3JlYXRlVGV4dHVyZSgpOwogfQogCi12b2lkIFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEOjpk
ZWxldGVGcmFtZWJ1ZmZlcih1bnNpZ25lZCBmcmFtZWJ1ZmZlcikKK3ZvaWQgU2hhcmVkR3JhcGhp
Y3NDb250ZXh0M0Q6OmRlbGV0ZUZyYW1lYnVmZmVyKFBsYXRmb3JtM0RPYmplY3QgZnJhbWVidWZm
ZXIpCiB7CiAgICAgbV9jb250ZXh0LT5kZWxldGVGcmFtZWJ1ZmZlcihmcmFtZWJ1ZmZlcik7CiB9
CiAKLXZvaWQgU2hhcmVkR3JhcGhpY3NDb250ZXh0M0Q6OmRlbGV0ZVRleHR1cmUodW5zaWduZWQg
dGV4dHVyZSkKK3ZvaWQgU2hhcmVkR3JhcGhpY3NDb250ZXh0M0Q6OmRlbGV0ZVRleHR1cmUoUGxh
dGZvcm0zRE9iamVjdCB0ZXh0dXJlKQogewogICAgIG1fY29udGV4dC0+ZGVsZXRlVGV4dHVyZSh0
ZXh0dXJlKTsKIH0KIAotdm9pZCBTaGFyZWRHcmFwaGljc0NvbnRleHQzRDo6ZnJhbWVidWZmZXJU
ZXh0dXJlMkQodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgYXR0YWNobWVudCwg
dW5zaWduZWQgbG9uZyB0ZXh0YXJnZXQsIHVuc2lnbmVkIHRleHR1cmUsIGxvbmcgbGV2ZWwpCit2
b2lkIFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEOjpmcmFtZWJ1ZmZlclRleHR1cmUyRChHQzNEZW51
bSB0YXJnZXQsIEdDM0RlbnVtIGF0dGFjaG1lbnQsIEdDM0RlbnVtIHRleHRhcmdldCwgUGxhdGZv
cm0zRE9iamVjdCB0ZXh0dXJlLCBHQzNEaW50IGxldmVsKQogewogICAgIG1fY29udGV4dC0+ZnJh
bWVidWZmZXJUZXh0dXJlMkQodGFyZ2V0LCBhdHRhY2htZW50LCB0ZXh0YXJnZXQsIHRleHR1cmUs
IGxldmVsKTsKIH0KIAotdm9pZCBTaGFyZWRHcmFwaGljc0NvbnRleHQzRDo6dGV4UGFyYW1ldGVy
aSh1bnNpZ25lZCB0YXJnZXQsIHVuc2lnbmVkIHBuYW1lLCBpbnQgcGFyYW0pCit2b2lkIFNoYXJl
ZEdyYXBoaWNzQ29udGV4dDNEOjp0ZXhQYXJhbWV0ZXJpKEdDM0RlbnVtIHRhcmdldCwgR0MzRGVu
dW0gcG5hbWUsIEdDM0RpbnQgcGFyYW0pCiB7CiAgICAgbV9jb250ZXh0LT50ZXhQYXJhbWV0ZXJp
KHRhcmdldCwgcG5hbWUsIHBhcmFtKTsKIH0KIAotaW50IFNoYXJlZEdyYXBoaWNzQ29udGV4dDNE
Ojp0ZXhJbWFnZTJEKHVuc2lnbmVkIHRhcmdldCwgdW5zaWduZWQgbGV2ZWwsIHVuc2lnbmVkIGlu
dGVybmFsZm9ybWF0LCB1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0LCB1bnNpZ25lZCBi
b3JkZXIsIHVuc2lnbmVkIGZvcm1hdCwgdW5zaWduZWQgdHlwZSwgdm9pZCogcGl4ZWxzKQorYm9v
bCBTaGFyZWRHcmFwaGljc0NvbnRleHQzRDo6dGV4SW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdD
M0RpbnQgbGV2ZWwsIEdDM0RlbnVtIGludGVybmFsZm9ybWF0LCBHQzNEc2l6ZWkgd2lkdGgsIEdD
M0RzaXplaSBoZWlnaHQsIEdDM0RpbnQgYm9yZGVyLCBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVt
IHR5cGUsIEdDM0R2b2lkKiBwaXhlbHMpCiB7Ci0gICAgaWYgKCFwaXhlbHMpIHsKLSAgICAgICAg
bV9jb250ZXh0LT50ZXhJbWFnZTJEUmVzb3VyY2VTYWZlKHRhcmdldCwgbGV2ZWwsIGludGVybmFs
Zm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwgdHlwZSk7Ci0gICAgICAgIHJl
dHVybiAwOwotICAgIH0KKyAgICBpZiAoIXBpeGVscykKKyAgICAgICAgcmV0dXJuIG1fY29udGV4
dC0+dGV4SW1hZ2UyRFJlc291cmNlU2FmZSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwg
d2lkdGgsIGhlaWdodCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUpOwogICAgIHJldHVybiBtX2NvbnRl
eHQtPnRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWln
aHQsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBwaXhlbHMpOwogfQogCi1pbnQgU2hhcmVkR3JhcGhp
Y3NDb250ZXh0M0Q6OnRleFN1YkltYWdlMkQodW5zaWduZWQgdGFyZ2V0LCB1bnNpZ25lZCBsZXZl
bCwgdW5zaWduZWQgeG9mZnNldCwgdW5zaWduZWQgeW9mZnNldCwgdW5zaWduZWQgd2lkdGgsIHVu
c2lnbmVkIGhlaWdodCwgdW5zaWduZWQgZm9ybWF0LCB1bnNpZ25lZCB0eXBlLCB2b2lkKiBwaXhl
bHMpCit2b2lkIFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEOjp0ZXhTdWJJbWFnZTJEKEdDM0RlbnVt
IHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGludCB4b2Zmc2V0LCBHQzNEaW50IHlvZmZzZXQs
IEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGVudW0gZm9ybWF0LCBHQzNE
ZW51bSB0eXBlLCBHQzNEdm9pZCogcGl4ZWxzKQogewotICAgIHJldHVybiBtX2NvbnRleHQtPnRl
eFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdo
dCwgZm9ybWF0LCB0eXBlLCBwaXhlbHMpOworICAgIG1fY29udGV4dC0+dGV4U3ViSW1hZ2UyRCh0
YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5
cGUsIHBpeGVscyk7CiB9CiAKLXZvaWQgU2hhcmVkR3JhcGhpY3NDb250ZXh0M0Q6OnJlYWRQaXhl
bHMobG9uZyB4LCBsb25nIHksIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVp
Z2h0LCB1bnNpZ25lZCBsb25nIGZvcm1hdCwgdW5zaWduZWQgbG9uZyB0eXBlLCB2b2lkKiBkYXRh
KQordm9pZCBTaGFyZWRHcmFwaGljc0NvbnRleHQzRDo6cmVhZFBpeGVscyhHQzNEaW50IHgsIEdD
M0RpbnQgeSwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEZW51bSBmb3Jt
YXQsIEdDM0RlbnVtIHR5cGUsIEdDM0R2b2lkKiBkYXRhKQogewogICAgIG1fY29udGV4dC0+cmVh
ZFBpeGVscyh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGRhdGEpOwogfQpAQCAt
MzEyLDEyICszMDgsMTIgQEAgdm9pZCBTaGFyZWRHcmFwaGljc0NvbnRleHQzRDo6dXNlUXVhZFZl
cgogICAgIH0KIH0KIAotdm9pZCBTaGFyZWRHcmFwaGljc0NvbnRleHQzRDo6c2V0QWN0aXZlVGV4
dHVyZSh1bnNpZ25lZCB0ZXh0dXJlVW5pdCkKK3ZvaWQgU2hhcmVkR3JhcGhpY3NDb250ZXh0M0Q6
OnNldEFjdGl2ZVRleHR1cmUoR0MzRGVudW0gdGV4dHVyZVVuaXQpCiB7CiAgICAgbV9jb250ZXh0
LT5hY3RpdmVUZXh0dXJlKHRleHR1cmVVbml0KTsKIH0KIAotdm9pZCBTaGFyZWRHcmFwaGljc0Nv
bnRleHQzRDo6YmluZFRleHR1cmUodW5zaWduZWQgdGFyZ2V0LCB1bnNpZ25lZCB0ZXh0dXJlKQor
dm9pZCBTaGFyZWRHcmFwaGljc0NvbnRleHQzRDo6YmluZFRleHR1cmUoR0MzRGVudW0gdGFyZ2V0
LCBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmUpCiB7CiAgICAgbV9jb250ZXh0LT5iaW5kVGV4dHVy
ZSh0YXJnZXQsIHRleHR1cmUpOwogfQpAQCAtMzMyLDcgKzMyOCw3IEBAIHZvaWQgU2hhcmVkR3Jh
cGhpY3NDb250ZXh0M0Q6OnVzZVRleHR1cmUKICAgICBtX3RleFNoYWRlci0+dXNlKHRyYW5zZm9y
bSwgdGV4VHJhbnNmb3JtLCAwLCBhbHBoYSk7CiB9CiAKLXZvaWQgU2hhcmVkR3JhcGhpY3NDb250
ZXh0M0Q6OmJpbmRGcmFtZWJ1ZmZlcih1bnNpZ25lZCBmcmFtZWJ1ZmZlcikKK3ZvaWQgU2hhcmVk
R3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRGcmFtZWJ1ZmZlcihQbGF0Zm9ybTNET2JqZWN0IGZyYW1l
YnVmZmVyKQogewogICAgIG1fY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4
dDNEOjpGUkFNRUJVRkZFUiwgZnJhbWVidWZmZXIpOwogfQpJbmRleDogV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvU2hhcmVkR3JhcGhpY3NDb250ZXh0M0QuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9TaGFyZWRHcmFwaGljc0NvbnRleHQzRC5oCShy
ZXZpc2lvbiA3NDk3MCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1NoYXJlZEdy
YXBoaWNzQ29udGV4dDNELmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpZm5k
ZWYgU2hhcmVkR3JhcGhpY3NDb250ZXh0M0RfaAogI2RlZmluZSBTaGFyZWRHcmFwaGljc0NvbnRl
eHQzRF9oCiAKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIkdyYXBo
aWNzVHlwZXMuaCIKICNpbmNsdWRlICJJbWFnZVNvdXJjZS5oIgogI2luY2x1ZGUgIlRleHR1cmUu
aCIKQEAgLTQ1LDcgKzQ2LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBZmZpbmVU
cmFuc2Zvcm07CiBjbGFzcyBDb2xvcjsKLWNsYXNzIEdyYXBoaWNzQ29udGV4dDNEOwogY2xhc3Mg
RmxvYXRSZWN0OwogY2xhc3MgSG9zdFdpbmRvdzsKIGNsYXNzIEludFNpemU7CkBAIC02MSwzMCAr
NjEsMzAgQEAgcHVibGljOgogCiAgICAgLy8gRnVuY3Rpb25zIHRoYXQgZGVsZWdhdGUgZGlyZWN0
bHkgdG8gR3JhcGhpY3NDb250ZXh0M0QsIHdpdGggY2FjaGluZwogICAgIHZvaWQgbWFrZUNvbnRl
eHRDdXJyZW50KCk7Ci0gICAgdm9pZCBiaW5kRnJhbWVidWZmZXIodW5zaWduZWQgZnJhbWVidWZm
ZXIpOworICAgIHZvaWQgYmluZEZyYW1lYnVmZmVyKFBsYXRmb3JtM0RPYmplY3QgZnJhbWVidWZm
ZXIpOwogICAgIHZvaWQgc2V0Vmlld3BvcnQoY29uc3QgSW50U2l6ZSYpOwogICAgIHZvaWQgc2Np
c3Nvcihjb25zdCBGbG9hdFJlY3QmKTsKLSAgICB2b2lkIGVuYWJsZSh1bnNpZ25lZCBjYXBhY2l0
eSk7Ci0gICAgdm9pZCBkaXNhYmxlKHVuc2lnbmVkIGNhcGFjaXR5KTsKKyAgICB2b2lkIGVuYWJs
ZShHQzNEZW51bSBjYXBhY2l0eSk7CisgICAgdm9pZCBkaXNhYmxlKEdDM0RlbnVtIGNhcGFjaXR5
KTsKICAgICB2b2lkIGNsZWFyQ29sb3IoY29uc3QgQ29sb3ImKTsKLSAgICB2b2lkIGNsZWFyKHVu
c2lnbmVkIG1hc2spOwotICAgIHZvaWQgZHJhd0FycmF5cyh1bnNpZ25lZCBsb25nIG1vZGUsIGxv
bmcgZmlyc3QsIGxvbmcgY291bnQpOwotICAgIHVuc2lnbmVkIGxvbmcgZ2V0RXJyb3IoKTsKLSAg
ICB2b2lkIGdldEludGVnZXJ2KHVuc2lnbmVkIGxvbmcgcG5hbWUsIGludCogdmFsdWUpOworICAg
IHZvaWQgY2xlYXIoR0MzRGJpdGZpZWxkIG1hc2spOworICAgIHZvaWQgZHJhd0FycmF5cyhHQzNE
ZW51bSBtb2RlLCBHQzNEaW50IGZpcnN0LCBHQzNEc2l6ZWkgY291bnQpOworICAgIEdDM0RlbnVt
IGdldEVycm9yKCk7CisgICAgdm9pZCBnZXRJbnRlZ2VydihHQzNEZW51bSBwbmFtZSwgR0MzRGlu
dCogdmFsdWUpOwogICAgIHZvaWQgZmx1c2goKTsKIAotICAgIHVuc2lnbmVkIGNyZWF0ZUZyYW1l
YnVmZmVyKCk7Ci0gICAgdW5zaWduZWQgY3JlYXRlVGV4dHVyZSgpOworICAgIFBsYXRmb3JtM0RP
YmplY3QgY3JlYXRlRnJhbWVidWZmZXIoKTsKKyAgICBQbGF0Zm9ybTNET2JqZWN0IGNyZWF0ZVRl
eHR1cmUoKTsKIAotICAgIHZvaWQgZGVsZXRlRnJhbWVidWZmZXIodW5zaWduZWQgZnJhbWVidWZm
ZXIpOwotICAgIHZvaWQgZGVsZXRlVGV4dHVyZSh1bnNpZ25lZCB0ZXh0dXJlKTsKKyAgICB2b2lk
IGRlbGV0ZUZyYW1lYnVmZmVyKFBsYXRmb3JtM0RPYmplY3QgZnJhbWVidWZmZXIpOworICAgIHZv
aWQgZGVsZXRlVGV4dHVyZShQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmUpOwogCi0gICAgdm9pZCBm
cmFtZWJ1ZmZlclRleHR1cmUyRCh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBh
dHRhY2htZW50LCB1bnNpZ25lZCBsb25nIHRleHRhcmdldCwgdW5zaWduZWQsIGxvbmcgbGV2ZWwp
OwotICAgIHZvaWQgdGV4UGFyYW1ldGVyaSh1bnNpZ25lZCB0YXJnZXQsIHVuc2lnbmVkIHBuYW1l
LCBpbnQgcGFyYW0pOwotICAgIGludCB0ZXhJbWFnZTJEKHVuc2lnbmVkIHRhcmdldCwgdW5zaWdu
ZWQgbGV2ZWwsIHVuc2lnbmVkIGludGVybmFsZm9ybWF0LCB1bnNpZ25lZCB3aWR0aCwgdW5zaWdu
ZWQgaGVpZ2h0LCB1bnNpZ25lZCBib3JkZXIsIHVuc2lnbmVkIGZvcm1hdCwgdW5zaWduZWQgdHlw
ZSwgdm9pZCogcGl4ZWxzKTsKLSAgICBpbnQgdGV4U3ViSW1hZ2UyRCh1bnNpZ25lZCB0YXJnZXQs
IHVuc2lnbmVkIGxldmVsLCB1bnNpZ25lZCB4b2Zmc2V0LCB1bnNpZ25lZCB5b2Zmc2V0LCB1bnNp
Z25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0LCB1bnNpZ25lZCBmb3JtYXQsIHVuc2lnbmVkIHR5
cGUsIHZvaWQqIHBpeGVscyk7CisgICAgdm9pZCBmcmFtZWJ1ZmZlclRleHR1cmUyRChHQzNEZW51
bSB0YXJnZXQsIEdDM0RlbnVtIGF0dGFjaG1lbnQsIEdDM0RlbnVtIHRleHRhcmdldCwgUGxhdGZv
cm0zRE9iamVjdCwgR0MzRGludCBsZXZlbCk7CisgICAgdm9pZCB0ZXhQYXJhbWV0ZXJpKEdDM0Rl
bnVtIHRhcmdldCwgR0MzRGVudW0gcG5hbWUsIEdDM0RpbnQgcGFyYW0pOworICAgIGJvb2wgdGV4
SW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RlbnVtIGludGVybmFs
Zm9ybWF0LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RpbnQgYm9yZGVy
LCBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUsIEdDM0R2b2lkKiBwaXhlbHMpOworICAg
IHZvaWQgdGV4U3ViSW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0Rp
bnQgeG9mZnNldCwgR0MzRGludCB5b2Zmc2V0LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBo
ZWlnaHQsIEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVudW0gdHlwZSwgR0MzRHZvaWQqIHBpeGVscyk7
CiAKLSAgICB2b2lkIHJlYWRQaXhlbHMobG9uZyB4LCBsb25nIHksIHVuc2lnbmVkIGxvbmcgd2lk
dGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0LCB1bnNpZ25lZCBsb25nIGZvcm1hdCwgdW5zaWduZWQg
bG9uZyB0eXBlLCB2b2lkKiBkYXRhKTsKKyAgICB2b2lkIHJlYWRQaXhlbHMoR0MzRGludCB4LCBH
QzNEaW50IHksIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGVudW0gZm9y
bWF0LCBHQzNEZW51bSB0eXBlLCBHQzNEdm9pZCogZGF0YSk7CiAKICAgICBib29sIHBhaW50c0lu
dG9DYW52YXNCdWZmZXIoKSBjb25zdDsKIApAQCAtOTUsOCArOTUsOCBAQCBwdWJsaWM6CiAgICAg
dm9pZCB1c2VGaWxsU29saWRQcm9ncmFtKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IENv
bG9yJik7CiAgICAgdm9pZCB1c2VUZXh0dXJlUHJvZ3JhbShjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBmbG9hdCBhbHBoYSk7CiAKLSAgICB2b2lkIHNldEFj
dGl2ZVRleHR1cmUodW5zaWduZWQgdGV4dHVyZVVuaXQpOwotICAgIHZvaWQgYmluZFRleHR1cmUo
dW5zaWduZWQgdGFyZ2V0LCB1bnNpZ25lZCB0ZXh0dXJlKTsKKyAgICB2b2lkIHNldEFjdGl2ZVRl
eHR1cmUoR0MzRGVudW0gdGV4dHVyZVVuaXQpOworICAgIHZvaWQgYmluZFRleHR1cmUoR0MzRGVu
dW0gdGFyZ2V0LCBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmUpOwogCiAgICAgYm9vbCBzdXBwb3J0
c0JHUkEoKTsKIApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhp
Y3NDb250ZXh0M0RPcGVuR0wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcAkocmV2aXNpb24gNzQ5NzAp
CisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9w
ZW5HTC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4OCw3ICsyODgsNyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjpwcmVwYXJlVGV4dHVyZSgpCiAgICAgOjpnbEZpbmlzaCgpOwogfQogCi12b2lk
IEdyYXBoaWNzQ29udGV4dDNEOjphY3RpdmVUZXh0dXJlKHVuc2lnbmVkIGxvbmcgdGV4dHVyZSkK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmFjdGl2ZVRleHR1cmUoR0MzRGVudW0gdGV4dHVyZSkK
IHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICA6OmdsQWN0aXZlVGV4dHVyZSh0ZXh0
dXJlKTsKQEAgLTI5OSwyOSArMjk5LDI5IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmF0dGFj
aFNoYWRlcihQbGEKICAgICBBU1NFUlQocHJvZ3JhbSk7CiAgICAgQVNTRVJUKHNoYWRlcik7CiAg
ICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbEF0dGFjaFNoYWRlcigoR0x1aW50KSBw
cm9ncmFtLCAoR0x1aW50KSBzaGFkZXIpOworICAgIDo6Z2xBdHRhY2hTaGFkZXIocHJvZ3JhbSwg
c2hhZGVyKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YmluZEF0dHJpYkxvY2F0aW9u
KFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgdW5zaWduZWQgbG9uZyBpbmRleCwgY29uc3QgU3Ry
aW5nJiBuYW1lKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YmluZEF0dHJpYkxvY2F0aW9uKFBs
YXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgR0MzRHVpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgbmFt
ZSkKIHsKICAgICBBU1NFUlQocHJvZ3JhbSk7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0g
ICAgOjpnbEJpbmRBdHRyaWJMb2NhdGlvbigoR0x1aW50KSBwcm9ncmFtLCBpbmRleCwgbmFtZS51
dGY4KCkuZGF0YSgpKTsKKyAgICA6OmdsQmluZEF0dHJpYkxvY2F0aW9uKHByb2dyYW0sIGluZGV4
LCBuYW1lLnV0ZjgoKS5kYXRhKCkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpiaW5k
QnVmZmVyKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBQbGF0Zm9ybTNET2JqZWN0IGJ1ZmZlcikKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRCdWZmZXIoR0MzRGVudW0gdGFyZ2V0LCBQbGF0Zm9y
bTNET2JqZWN0IGJ1ZmZlcikKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6Omds
QmluZEJ1ZmZlcih0YXJnZXQsIChHTHVpbnQpIGJ1ZmZlcik7CisgICAgOjpnbEJpbmRCdWZmZXIo
dGFyZ2V0LCBidWZmZXIpOwogfQogCiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRGcmFt
ZWJ1ZmZlcih1bnNpZ25lZCBsb25nIHRhcmdldCwgUGxhdGZvcm0zRE9iamVjdCBidWZmZXIpCit2
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpiaW5kRnJhbWVidWZmZXIoR0MzRGVudW0gdGFyZ2V0LCBQ
bGF0Zm9ybTNET2JqZWN0IGJ1ZmZlcikKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAg
ICBHTHVpbnQgZmJvOwogICAgIGlmIChidWZmZXIpCi0gICAgICAgIGZibyA9IChHTHVpbnQpYnVm
ZmVyOworICAgICAgICBmYm8gPSBidWZmZXI7CiAgICAgZWxzZQogICAgICAgICBmYm8gPSAobV9h
dHRycy5hbnRpYWxpYXMgPyBtX211bHRpc2FtcGxlRkJPIDogbV9mYm8pOwogICAgIGlmIChmYm8g
IT0gbV9ib3VuZEZCTykgewpAQCAtMzMwLDk5ICszMzAsOTkgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6YmluZEZyYW1lYnVmZmVyKAogICAgIH0KIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6YmluZFJlbmRlcmJ1ZmZlcih1bnNpZ25lZCBsb25nIHRhcmdldCwgUGxhdGZvcm0zRE9iamVj
dCByZW5kZXJidWZmZXIpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpiaW5kUmVuZGVyYnVmZmVy
KEdDM0RlbnVtIHRhcmdldCwgUGxhdGZvcm0zRE9iamVjdCByZW5kZXJidWZmZXIpCiB7CiAgICAg
bWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbEJpbmRSZW5kZXJidWZmZXJFWFQodGFyZ2V0
LCAoR0x1aW50KSByZW5kZXJidWZmZXIpOworICAgIDo6Z2xCaW5kUmVuZGVyYnVmZmVyRVhUKHRh
cmdldCwgcmVuZGVyYnVmZmVyKTsKIH0KIAogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpiaW5k
VGV4dHVyZSh1bnNpZ25lZCBsb25nIHRhcmdldCwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlKQor
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YmluZFRleHR1cmUoR0MzRGVudW0gdGFyZ2V0LCBQbGF0
Zm9ybTNET2JqZWN0IHRleHR1cmUpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAg
OjpnbEJpbmRUZXh0dXJlKHRhcmdldCwgKEdMdWludCkgdGV4dHVyZSk7CisgICAgOjpnbEJpbmRU
ZXh0dXJlKHRhcmdldCwgdGV4dHVyZSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJs
ZW5kQ29sb3IoZG91YmxlIHJlZCwgZG91YmxlIGdyZWVuLCBkb3VibGUgYmx1ZSwgZG91YmxlIGFs
cGhhKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YmxlbmRDb2xvcihHQzNEY2xhbXBmIHJlZCwg
R0MzRGNsYW1wZiBncmVlbiwgR0MzRGNsYW1wZiBibHVlLCBHQzNEY2xhbXBmIGFscGhhKQogewog
ICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xCbGVuZENvbG9yKHN0YXRpY19jYXN0
PGZsb2F0PihyZWQpLCBzdGF0aWNfY2FzdDxmbG9hdD4oZ3JlZW4pLCBzdGF0aWNfY2FzdDxmbG9h
dD4oYmx1ZSksIHN0YXRpY19jYXN0PGZsb2F0PihhbHBoYSkpOworICAgIDo6Z2xCbGVuZENvbG9y
KHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
YmxlbmRFcXVhdGlvbiggdW5zaWduZWQgbG9uZyBtb2RlICkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OmJsZW5kRXF1YXRpb24oR0MzRGVudW0gbW9kZSkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJl
bnQoKTsKICAgICA6OmdsQmxlbmRFcXVhdGlvbihtb2RlKTsKIH0KIAotdm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6YmxlbmRFcXVhdGlvblNlcGFyYXRlKHVuc2lnbmVkIGxvbmcgbW9kZVJHQiwgdW5z
aWduZWQgbG9uZyBtb2RlQWxwaGEpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpibGVuZEVxdWF0
aW9uU2VwYXJhdGUoR0MzRGVudW0gbW9kZVJHQiwgR0MzRGVudW0gbW9kZUFscGhhKQogewogICAg
IG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIDo6Z2xCbGVuZEVxdWF0aW9uU2VwYXJhdGUobW9k
ZVJHQiwgbW9kZUFscGhhKTsKIH0KIAogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpibGVuZEZ1
bmModW5zaWduZWQgbG9uZyBzZmFjdG9yLCB1bnNpZ25lZCBsb25nIGRmYWN0b3IpCit2b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjpibGVuZEZ1bmMoR0MzRGVudW0gc2ZhY3RvciwgR0MzRGVudW0gZGZh
Y3RvcikKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICA6OmdsQmxlbmRGdW5jKHNm
YWN0b3IsIGRmYWN0b3IpOwogfSAgICAgICAKIAotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Ymxl
bmRGdW5jU2VwYXJhdGUodW5zaWduZWQgbG9uZyBzcmNSR0IsIHVuc2lnbmVkIGxvbmcgZHN0UkdC
LCB1bnNpZ25lZCBsb25nIHNyY0FscGhhLCB1bnNpZ25lZCBsb25nIGRzdEFscGhhKQordm9pZCBH
cmFwaGljc0NvbnRleHQzRDo6YmxlbmRGdW5jU2VwYXJhdGUoR0MzRGVudW0gc3JjUkdCLCBHQzNE
ZW51bSBkc3RSR0IsIEdDM0RlbnVtIHNyY0FscGhhLCBHQzNEZW51bSBkc3RBbHBoYSkKIHsKICAg
ICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICA6OmdsQmxlbmRGdW5jU2VwYXJhdGUoc3JjUkdC
LCBkc3RSR0IsIHNyY0FscGhhLCBkc3RBbHBoYSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OmJ1ZmZlckRhdGEodW5zaWduZWQgbG9uZyB0YXJnZXQsIGludCBzaXplLCB1bnNpZ25lZCBs
b25nIHVzYWdlKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YnVmZmVyRGF0YShHQzNEZW51bSB0
YXJnZXQsIEdDM0RzaXplaSBzaXplLCBHQzNEZW51bSB1c2FnZSkKIHsKICAgICBtYWtlQ29udGV4
dEN1cnJlbnQoKTsKICAgICA6OmdsQnVmZmVyRGF0YSh0YXJnZXQsIHNpemUsIDAsIHVzYWdlKTsK
IH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YnVmZmVyRGF0YSh1bnNpZ25lZCBsb25nIHRh
cmdldCwgaW50IHNpemUsIGNvbnN0IHZvaWQqIGRhdGEsIHVuc2lnbmVkIGxvbmcgdXNhZ2UpCit2
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpidWZmZXJEYXRhKEdDM0RlbnVtIHRhcmdldCwgR0MzRHNp
emVpIHNpemUsIGNvbnN0IEdDM0R2b2lkKiBkYXRhLCBHQzNEZW51bSB1c2FnZSkKIHsKICAgICBt
YWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICA6OmdsQnVmZmVyRGF0YSh0YXJnZXQsIHNpemUsIGRh
dGEsIHVzYWdlKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YnVmZmVyU3ViRGF0YSh1
bnNpZ25lZCBsb25nIHRhcmdldCwgbG9uZyBvZmZzZXQsIGludCBzaXplLCBjb25zdCB2b2lkKiBk
YXRhKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YnVmZmVyU3ViRGF0YShHQzNEZW51bSB0YXJn
ZXQsIEdDM0RzaXplaXB0ciBvZmZzZXQsIEdDM0RzaXplaSBzaXplLCBjb25zdCBHQzNEdm9pZCog
ZGF0YSkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICA6OmdsQnVmZmVyU3ViRGF0
YSh0YXJnZXQsIG9mZnNldCwgc2l6ZSwgZGF0YSk7CiB9CiAKLXVuc2lnbmVkIGxvbmcgR3JhcGhp
Y3NDb250ZXh0M0Q6OmNoZWNrRnJhbWVidWZmZXJTdGF0dXModW5zaWduZWQgbG9uZyB0YXJnZXQp
CitHQzNEZW51bSBHcmFwaGljc0NvbnRleHQzRDo6Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHQzNE
ZW51bSB0YXJnZXQpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgcmV0dXJuIDo6
Z2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzRVhUKHRhcmdldCk7CiB9CiAKLXZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OmNsZWFyQ29sb3IoZG91YmxlIHIsIGRvdWJsZSBnLCBkb3VibGUgYiwgZG91Ymxl
IGEpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpjbGVhckNvbG9yKEdDM0RjbGFtcGYgciwgR0Mz
RGNsYW1wZiBnLCBHQzNEY2xhbXBmIGIsIEdDM0RjbGFtcGYgYSkKIHsKICAgICBtYWtlQ29udGV4
dEN1cnJlbnQoKTsKLSAgICA6OmdsQ2xlYXJDb2xvcihzdGF0aWNfY2FzdDxmbG9hdD4ociksIHN0
YXRpY19jYXN0PGZsb2F0PihnKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGIpLCBzdGF0aWNfY2FzdDxm
bG9hdD4oYSkpOworICAgIDo6Z2xDbGVhckNvbG9yKHIsIGcsIGIsIGEpOwogfQogCi12b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjpjbGVhcih1bnNpZ25lZCBsb25nIG1hc2spCit2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjpjbGVhcihHQzNEYml0ZmllbGQgbWFzaykKIHsKICAgICBtYWtlQ29udGV4dEN1
cnJlbnQoKTsKICAgICA6OmdsQ2xlYXIobWFzayk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OmNsZWFyRGVwdGgoZG91YmxlIGRlcHRoKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y2xl
YXJEZXB0aChHQzNEY2xhbXBmIGRlcHRoKQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwog
ICAgIDo6Z2xDbGVhckRlcHRoKGRlcHRoKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
Y2xlYXJTdGVuY2lsKGxvbmcgcykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNsZWFyU3RlbmNp
bChHQzNEaW50IHMpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgOjpnbENsZWFy
U3RlbmNpbChzKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y29sb3JNYXNrKGJvb2wg
cmVkLCBib29sIGdyZWVuLCBib29sIGJsdWUsIGJvb2wgYWxwaGEpCit2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjpjb2xvck1hc2soR0MzRGJvb2xlYW4gcmVkLCBHQzNEYm9vbGVhbiBncmVlbiwgR0Mz
RGJvb2xlYW4gYmx1ZSwgR0MzRGJvb2xlYW4gYWxwaGEpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJy
ZW50KCk7CiAgICAgOjpnbENvbG9yTWFzayhyZWQsIGdyZWVuLCBibHVlLCBhbHBoYSk7CkBAIC00
NjgsMTkgKzQ2OCwxOSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpjb21waWxlU2hhZGVyKFBs
CiAgICAgY29uc3QgQ1N0cmluZyYgdHJhbnNsYXRlZFNoYWRlckNTdHJpbmcgPSB0cmFuc2xhdGVk
U2hhZGVyU291cmNlLnV0ZjgoKTsKICAgICBjb25zdCBjaGFyKiB0cmFuc2xhdGVkU2hhZGVyUHRy
ID0gdHJhbnNsYXRlZFNoYWRlckNTdHJpbmcuZGF0YSgpOwogICAgIAotICAgIDo6Z2xTaGFkZXJT
b3VyY2UoKEdMdWludCkgc2hhZGVyLCAxLCAmdHJhbnNsYXRlZFNoYWRlclB0ciwgJnRyYW5zbGF0
ZWRTaGFkZXJMZW5ndGgpOworICAgIDo6Z2xTaGFkZXJTb3VyY2Uoc2hhZGVyLCAxLCAmdHJhbnNs
YXRlZFNoYWRlclB0ciwgJnRyYW5zbGF0ZWRTaGFkZXJMZW5ndGgpOwogICAgIAotICAgIDo6Z2xD
b21waWxlU2hhZGVyKChHTHVpbnQpIHNoYWRlcik7CisgICAgOjpnbENvbXBpbGVTaGFkZXIoc2hh
ZGVyKTsKICAgICAKICAgICBpbnQgR0xDb21waWxlU3VjY2VzczsKICAgICAKLSAgICA6OmdsR2V0
U2hhZGVyaXYoKEdMdWludCkgc2hhZGVyLCBDT01QSUxFX1NUQVRVUywgJkdMQ29tcGlsZVN1Y2Nl
c3MpOworICAgIDo6Z2xHZXRTaGFkZXJpdihzaGFkZXIsIENPTVBJTEVfU1RBVFVTLCAmR0xDb21w
aWxlU3VjY2Vzcyk7CiAgICAgCiAgICAgLy8gQVNTRVJUIHRoYXQgQU5HTEUgZ2VuZXJhdGVkIEdM
U0wgd2lsbCBiZSBhY2NlcHRlZCBieSBPcGVuR0wKICAgICBBU1NFUlQoR0xDb21waWxlU3VjY2Vz
cyA9PSBHTF9UUlVFKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y29weVRleEltYWdl
MkQodW5zaWduZWQgbG9uZyB0YXJnZXQsIGxvbmcgbGV2ZWwsIHVuc2lnbmVkIGxvbmcgaW50ZXJu
YWxmb3JtYXQsIGxvbmcgeCwgbG9uZyB5LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBs
b25nIGhlaWdodCwgbG9uZyBib3JkZXIpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpjb3B5VGV4
SW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RlbnVtIGludGVybmFs
Zm9ybWF0LCBHQzNEaW50IHgsIEdDM0RpbnQgeSwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkg
aGVpZ2h0LCBHQzNEaW50IGJvcmRlcikKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAg
ICBpZiAobV9hdHRycy5hbnRpYWxpYXMgJiYgbV9ib3VuZEZCTyA9PSBtX211bHRpc2FtcGxlRkJP
KSB7CkBAIC00OTQsNyArNDk0LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y29weVRleElt
YWdlMkQodQogICAgICAgICA6OmdsQmluZEZyYW1lYnVmZmVyRVhUKEdMX0ZSQU1FQlVGRkVSX0VY
VCwgbV9tdWx0aXNhbXBsZUZCTyk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNvcHlU
ZXhTdWJJbWFnZTJEKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBsb25nIGxldmVsLCBsb25nIHhvZmZz
ZXQsIGxvbmcgeW9mZnNldCwgbG9uZyB4LCBsb25nIHksIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVu
c2lnbmVkIGxvbmcgaGVpZ2h0KQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y29weVRleFN1Yklt
YWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEaW50IHhvZmZzZXQsIEdD
M0RpbnQgeW9mZnNldCwgR0MzRGludCB4LCBHQzNEaW50IHksIEdDM0RzaXplaSB3aWR0aCwgR0Mz
RHNpemVpIGhlaWdodCkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBpZiAobV9h
dHRycy5hbnRpYWxpYXMgJiYgbV9ib3VuZEZCTyA9PSBtX211bHRpc2FtcGxlRkJPKSB7CkBAIC01
MDgsMjUgKzUwOCwyNSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpjb3B5VGV4U3ViSW1hZ2Uy
CiAgICAgICAgIDo6Z2xCaW5kRnJhbWVidWZmZXJFWFQoR0xfRlJBTUVCVUZGRVJfRVhULCBtX211
bHRpc2FtcGxlRkJPKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y3VsbEZhY2UodW5z
aWduZWQgbG9uZyBtb2RlKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y3VsbEZhY2UoR0MzRGVu
dW0gbW9kZSkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICA6OmdsQ3VsbEZhY2Uo
bW9kZSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRlcHRoRnVuYyh1bnNpZ25lZCBs
b25nIGZ1bmMpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkZXB0aEZ1bmMoR0MzRGVudW0gZnVu
YykKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICA6OmdsRGVwdGhGdW5jKGZ1bmMp
OwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkZXB0aE1hc2soYm9vbCBmbGFnKQordm9p
ZCBHcmFwaGljc0NvbnRleHQzRDo6ZGVwdGhNYXNrKEdDM0Rib29sZWFuIGZsYWcpCiB7CiAgICAg
bWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgOjpnbERlcHRoTWFzayhmbGFnKTsKIH0KIAotdm9p
ZCBHcmFwaGljc0NvbnRleHQzRDo6ZGVwdGhSYW5nZShkb3VibGUgek5lYXIsIGRvdWJsZSB6RmFy
KQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGVwdGhSYW5nZShHQzNEY2xhbXBmIHpOZWFyLCBH
QzNEY2xhbXBmIHpGYXIpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgOjpnbERl
cHRoUmFuZ2Uoek5lYXIsIHpGYXIpOwpAQCAtNTM3LDQwICs1MzcsNDAgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6ZGV0YWNoU2hhZGVyKFBsYQogICAgIEFTU0VSVChwcm9ncmFtKTsKICAgICBB
U1NFUlQoc2hhZGVyKTsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6OmdsRGV0YWNo
U2hhZGVyKChHTHVpbnQpIHByb2dyYW0sIChHTHVpbnQpIHNoYWRlcik7CisgICAgOjpnbERldGFj
aFNoYWRlcihwcm9ncmFtLCBzaGFkZXIpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpk
aXNhYmxlKHVuc2lnbmVkIGxvbmcgY2FwKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGlzYWJs
ZShHQzNEZW51bSBjYXApCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgOjpnbERp
c2FibGUoY2FwKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGlzYWJsZVZlcnRleEF0
dHJpYkFycmF5KHVuc2lnbmVkIGxvbmcgaW5kZXgpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpk
aXNhYmxlVmVydGV4QXR0cmliQXJyYXkoR0MzRHVpbnQgaW5kZXgpCiB7CiAgICAgbWFrZUNvbnRl
eHRDdXJyZW50KCk7CiAgICAgOjpnbERpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShpbmRleCk7CiB9
CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRyYXdBcnJheXModW5zaWduZWQgbG9uZyBtb2Rl
LCBsb25nIGZpcnN0LCBsb25nIGNvdW50KQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZHJhd0Fy
cmF5cyhHQzNEZW51bSBtb2RlLCBHQzNEaW50IGZpcnN0LCBHQzNEc2l6ZWkgY291bnQpCiB7CiAg
ICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgOjpnbERyYXdBcnJheXMobW9kZSwgZmlyc3Qs
IGNvdW50KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZHJhd0VsZW1lbnRzKHVuc2ln
bmVkIGxvbmcgbW9kZSwgdW5zaWduZWQgbG9uZyBjb3VudCwgdW5zaWduZWQgbG9uZyB0eXBlLCBs
b25nIG9mZnNldCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRyYXdFbGVtZW50cyhHQzNEZW51
bSBtb2RlLCBHQzNEc2l6ZWkgY291bnQsIEdDM0RlbnVtIHR5cGUsIEdDM0RzaXplaXB0ciBvZmZz
ZXQpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbERyYXdFbGVtZW50cyht
b2RlLCBjb3VudCwgdHlwZSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8aW50
cHRyX3Q+KG9mZnNldCkpKTsKKyAgICA6OmdsRHJhd0VsZW1lbnRzKG1vZGUsIGNvdW50LCB0eXBl
LCByZWludGVycHJldF9jYXN0PEdMdm9pZCo+KHN0YXRpY19jYXN0PGludHB0cl90PihvZmZzZXQp
KSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmVuYWJsZSh1bnNpZ25lZCBsb25nIGNh
cCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmVuYWJsZShHQzNEZW51bSBjYXApCiB7CiAgICAg
bWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgOjpnbEVuYWJsZShjYXApOwogfQogCi12b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjplbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSh1bnNpZ25lZCBsb25nIGlu
ZGV4KQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoR0Mz
RHVpbnQgaW5kZXgpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgOjpnbEVuYWJs
ZVZlcnRleEF0dHJpYkFycmF5KGluZGV4KTsKQEAgLTU4OCwzMSArNTg4LDMxIEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0M0Q6OmZsdXNoKCkKICAgICA6OmdsRmx1c2goKTsKIH0KIAotdm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIodW5zaWduZWQgbG9uZyB0YXJn
ZXQsIHVuc2lnbmVkIGxvbmcgYXR0YWNobWVudCwgdW5zaWduZWQgbG9uZyByZW5kZXJidWZmZXJ0
YXJnZXQsIFBsYXRmb3JtM0RPYmplY3QgYnVmZmVyKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBhdHRhY2ht
ZW50LCBHQzNEZW51bSByZW5kZXJidWZmZXJ0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3QgYnVmZmVy
KQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xGcmFtZWJ1ZmZlclJlbmRl
cmJ1ZmZlckVYVCh0YXJnZXQsIGF0dGFjaG1lbnQsIHJlbmRlcmJ1ZmZlcnRhcmdldCwgKEdMdWlu
dCkgYnVmZmVyKTsKKyAgICA6OmdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXJFWFQodGFyZ2V0LCBh
dHRhY2htZW50LCByZW5kZXJidWZmZXJ0YXJnZXQsIGJ1ZmZlcik7CiB9CiAKLXZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OmZyYW1lYnVmZmVyVGV4dHVyZTJEKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1
bnNpZ25lZCBsb25nIGF0dGFjaG1lbnQsIHVuc2lnbmVkIGxvbmcgdGV4dGFyZ2V0LCBQbGF0Zm9y
bTNET2JqZWN0IHRleHR1cmUsIGxvbmcgbGV2ZWwpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpm
cmFtZWJ1ZmZlclRleHR1cmUyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIGF0dGFjaG1lbnQs
IEdDM0RlbnVtIHRleHRhcmdldCwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlLCBHQzNEaW50IGxl
dmVsKQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xGcmFtZWJ1ZmZlclRl
eHR1cmUyREVYVCh0YXJnZXQsIGF0dGFjaG1lbnQsIHRleHRhcmdldCwgKEdMdWludCkgdGV4dHVy
ZSwgbGV2ZWwpOworICAgIDo6Z2xGcmFtZWJ1ZmZlclRleHR1cmUyREVYVCh0YXJnZXQsIGF0dGFj
aG1lbnQsIHRleHRhcmdldCwgdGV4dHVyZSwgbGV2ZWwpOwogfQogCi12b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjpmcm9udEZhY2UodW5zaWduZWQgbG9uZyBtb2RlKQordm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6ZnJvbnRGYWNlKEdDM0RlbnVtIG1vZGUpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50
KCk7CiAgICAgOjpnbEZyb250RmFjZShtb2RlKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6Z2VuZXJhdGVNaXBtYXAodW5zaWduZWQgbG9uZyB0YXJnZXQpCit2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjpnZW5lcmF0ZU1pcG1hcChHQzNEZW51bSB0YXJnZXQpCiB7CiAgICAgbWFrZUNvbnRl
eHRDdXJyZW50KCk7CiAgICAgOjpnbEdlbmVyYXRlTWlwbWFwRVhUKHRhcmdldCk7CiB9CiAKLWJv
b2wgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEFjdGl2ZUF0dHJpYihQbGF0Zm9ybTNET2JqZWN0IHBy
b2dyYW0sIHVuc2lnbmVkIGxvbmcgaW5kZXgsIEFjdGl2ZUluZm8mIGluZm8pCitib29sIEdyYXBo
aWNzQ29udGV4dDNEOjpnZXRBY3RpdmVBdHRyaWIoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBH
QzNEdWludCBpbmRleCwgQWN0aXZlSW5mbyYgaW5mbykKIHsKICAgICBpZiAoIXByb2dyYW0pIHsK
ICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoSU5WQUxJRF9WQUxVRSk7CkBAIC02MjAsMTIgKzYy
MCwxMiBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRBY3RpdmVBdHRyaWIoCiAgICAgfQog
ICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIEdMaW50IG1heEF0dHJpYnV0ZVNpemUgPSAw
OwotICAgIDo6Z2xHZXRQcm9ncmFtaXYoc3RhdGljX2Nhc3Q8R0x1aW50Pihwcm9ncmFtKSwgR0xf
QUNUSVZFX0FUVFJJQlVURV9NQVhfTEVOR1RILCAmbWF4QXR0cmlidXRlU2l6ZSk7CisgICAgOjpn
bEdldFByb2dyYW1pdihwcm9ncmFtLCBHTF9BQ1RJVkVfQVRUUklCVVRFX01BWF9MRU5HVEgsICZt
YXhBdHRyaWJ1dGVTaXplKTsKICAgICBHTGNoYXIgbmFtZVttYXhBdHRyaWJ1dGVTaXplXTsgLy8g
R0xfQUNUSVZFX0FUVFJJQlVURV9NQVhfTEVOR1RIIGluY2x1ZGVzIG51bGwgdGVybWluYXRpb24K
ICAgICBHTHNpemVpIG5hbWVMZW5ndGggPSAwOwogICAgIEdMaW50IHNpemUgPSAwOwogICAgIEdM
ZW51bSB0eXBlID0gMDsKLSAgICA6OmdsR2V0QWN0aXZlQXR0cmliKHN0YXRpY19jYXN0PEdMdWlu
dD4ocHJvZ3JhbSksIGluZGV4LCBtYXhBdHRyaWJ1dGVTaXplLCAmbmFtZUxlbmd0aCwgJnNpemUs
ICZ0eXBlLCBuYW1lKTsKKyAgICA6OmdsR2V0QWN0aXZlQXR0cmliKHByb2dyYW0sIGluZGV4LCBt
YXhBdHRyaWJ1dGVTaXplLCAmbmFtZUxlbmd0aCwgJnNpemUsICZ0eXBlLCBuYW1lKTsKICAgICBp
ZiAoIW5hbWVMZW5ndGgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpbmZvLm5hbWUgPSBT
dHJpbmcobmFtZSwgbmFtZUxlbmd0aCk7CkBAIC02MzQsNyArNjM0LDcgQEAgYm9vbCBHcmFwaGlj
c0NvbnRleHQzRDo6Z2V0QWN0aXZlQXR0cmliKAogICAgIHJldHVybiB0cnVlOwogfQogICAgIAot
Ym9vbCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0QWN0aXZlVW5pZm9ybShQbGF0Zm9ybTNET2JqZWN0
IHByb2dyYW0sIHVuc2lnbmVkIGxvbmcgaW5kZXgsIEFjdGl2ZUluZm8mIGluZm8pCitib29sIEdy
YXBoaWNzQ29udGV4dDNEOjpnZXRBY3RpdmVVbmlmb3JtKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3Jh
bSwgR0MzRHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mIGluZm8pCiB7CiAgICAgaWYgKCFwcm9ncmFt
KSB7CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKElOVkFMSURfVkFMVUUpOwpAQCAtNjQyLDEy
ICs2NDIsMTIgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0QWN0aXZlVW5pZm9ybQogICAg
IH0KICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBHTGludCBtYXhVbmlmb3JtU2l6ZSA9
IDA7Ci0gICAgOjpnbEdldFByb2dyYW1pdihzdGF0aWNfY2FzdDxHTHVpbnQ+KHByb2dyYW0pLCBH
TF9BQ1RJVkVfVU5JRk9STV9NQVhfTEVOR1RILCAmbWF4VW5pZm9ybVNpemUpOworICAgIDo6Z2xH
ZXRQcm9ncmFtaXYocHJvZ3JhbSwgR0xfQUNUSVZFX1VOSUZPUk1fTUFYX0xFTkdUSCwgJm1heFVu
aWZvcm1TaXplKTsKICAgICBHTGNoYXIgbmFtZVttYXhVbmlmb3JtU2l6ZV07IC8vIEdMX0FDVElW
RV9VTklGT1JNX01BWF9MRU5HVEggaW5jbHVkZXMgbnVsbCB0ZXJtaW5hdGlvbgogICAgIEdMc2l6
ZWkgbmFtZUxlbmd0aCA9IDA7CiAgICAgR0xpbnQgc2l6ZSA9IDA7CiAgICAgR0xlbnVtIHR5cGUg
PSAwOwotICAgIDo6Z2xHZXRBY3RpdmVVbmlmb3JtKHN0YXRpY19jYXN0PEdMdWludD4ocHJvZ3Jh
bSksIGluZGV4LCBtYXhVbmlmb3JtU2l6ZSwgJm5hbWVMZW5ndGgsICZzaXplLCAmdHlwZSwgbmFt
ZSk7CisgICAgOjpnbEdldEFjdGl2ZVVuaWZvcm0ocHJvZ3JhbSwgaW5kZXgsIG1heFVuaWZvcm1T
aXplLCAmbmFtZUxlbmd0aCwgJnNpemUsICZ0eXBlLCBuYW1lKTsKICAgICBpZiAoIW5hbWVMZW5n
dGgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpbmZvLm5hbWUgPSBTdHJpbmcobmFtZSwg
bmFtZUxlbmd0aCk7CkBAIC02NTYsMTQgKzY1NiwxNCBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNE
OjpnZXRBY3RpdmVVbmlmb3JtCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OmdldEF0dGFjaGVkU2hhZGVycyhQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIGlu
dCBtYXhDb3VudCwgaW50KiBjb3VudCwgdW5zaWduZWQgaW50KiBzaGFkZXJzKQordm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6Z2V0QXR0YWNoZWRTaGFkZXJzKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3Jh
bSwgR0MzRHNpemVpIG1heENvdW50LCBHQzNEc2l6ZWkqIGNvdW50LCBQbGF0Zm9ybTNET2JqZWN0
KiBzaGFkZXJzKQogewogICAgIGlmICghcHJvZ3JhbSkgewogICAgICAgICBzeW50aGVzaXplR0xF
cnJvcihJTlZBTElEX1ZBTFVFKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBtYWtlQ29u
dGV4dEN1cnJlbnQoKTsKLSAgICA6OmdsR2V0QXR0YWNoZWRTaGFkZXJzKHN0YXRpY19jYXN0PEdM
dWludD4ocHJvZ3JhbSksIG1heENvdW50LCBjb3VudCwgc2hhZGVycyk7CisgICAgOjpnbEdldEF0
dGFjaGVkU2hhZGVycyhwcm9ncmFtLCBtYXhDb3VudCwgY291bnQsIHNoYWRlcnMpOwogfQogCiBp
bnQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEF0dHJpYkxvY2F0aW9uKFBsYXRmb3JtM0RPYmplY3Qg
cHJvZ3JhbSwgY29uc3QgU3RyaW5nJiBuYW1lKQpAQCAtNjcyLDcgKzY3Miw3IEBAIGludCBHcmFw
aGljc0NvbnRleHQzRDo6Z2V0QXR0cmliTG9jYXRpb24KICAgICAgICAgcmV0dXJuIC0xOwogCiAg
ICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgcmV0dXJuIDo6Z2xHZXRBdHRyaWJMb2NhdGlv
bigoR0x1aW50KSBwcm9ncmFtLCBuYW1lLnV0ZjgoKS5kYXRhKCkpOworICAgIHJldHVybiA6Omds
R2V0QXR0cmliTG9jYXRpb24ocHJvZ3JhbSwgbmFtZS51dGY4KCkuZGF0YSgpKTsKIH0KIAogR3Jh
cGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgR3JhcGhpY3NDb250ZXh0M0Q6OmdldENvbnRleHRB
dHRyaWJ1dGVzKCkKQEAgLTY4MCwxMSArNjgwLDExIEBAIEdyYXBoaWNzQ29udGV4dDNEOjpBdHRy
aWJ1dGVzIEdyYXBoaWNzQ28KICAgICByZXR1cm4gbV9hdHRyczsKIH0KIAotdW5zaWduZWQgbG9u
ZyBHcmFwaGljc0NvbnRleHQzRDo6Z2V0RXJyb3IoKQorR0MzRGVudW0gR3JhcGhpY3NDb250ZXh0
M0Q6OmdldEVycm9yKCkKIHsKICAgICBpZiAobV9zeW50aGV0aWNFcnJvcnMuc2l6ZSgpID4gMCkg
ewotICAgICAgICBMaXN0SGFzaFNldDx1bnNpZ25lZCBsb25nPjo6aXRlcmF0b3IgaXRlciA9IG1f
c3ludGhldGljRXJyb3JzLmJlZ2luKCk7Ci0gICAgICAgIHVuc2lnbmVkIGxvbmcgZXJyID0gKml0
ZXI7CisgICAgICAgIExpc3RIYXNoU2V0PEdDM0RlbnVtPjo6aXRlcmF0b3IgaXRlciA9IG1fc3lu
dGhldGljRXJyb3JzLmJlZ2luKCk7CisgICAgICAgIEdDM0RlbnVtIGVyciA9ICppdGVyOwogICAg
ICAgICBtX3N5bnRoZXRpY0Vycm9ycy5yZW1vdmUoaXRlcik7CiAgICAgICAgIHJldHVybiBlcnI7
CiAgICAgfQpAQCAtNjkzLDEwNCArNjkzLDEwNCBAQCB1bnNpZ25lZCBsb25nIEdyYXBoaWNzQ29u
dGV4dDNEOjpnZXRFcnJvCiAgICAgcmV0dXJuIDo6Z2xHZXRFcnJvcigpOwogfQogCi1TdHJpbmcg
R3JhcGhpY3NDb250ZXh0M0Q6OmdldFN0cmluZyh1bnNpZ25lZCBsb25nIG5hbWUpCitTdHJpbmcg
R3JhcGhpY3NDb250ZXh0M0Q6OmdldFN0cmluZyhHQzNEZW51bSBuYW1lKQogewogICAgIG1ha2VD
b250ZXh0Q3VycmVudCgpOwogICAgIHJldHVybiBTdHJpbmcoKGNvbnN0IGNoYXIqKSA6OmdsR2V0
U3RyaW5nKG5hbWUpKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6aGludCh1bnNpZ25l
ZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBtb2RlKQordm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6aGludChHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIG1vZGUpCiB7CiAgICAgbWFrZUNvbnRl
eHRDdXJyZW50KCk7CiAgICAgOjpnbEhpbnQodGFyZ2V0LCBtb2RlKTsKIH0KIAotYm9vbCBHcmFw
aGljc0NvbnRleHQzRDo6aXNCdWZmZXIoUGxhdGZvcm0zRE9iamVjdCBidWZmZXIpCitHQzNEYm9v
bGVhbiBHcmFwaGljc0NvbnRleHQzRDo6aXNCdWZmZXIoUGxhdGZvcm0zRE9iamVjdCBidWZmZXIp
CiB7CiAgICAgaWYgKCFidWZmZXIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0
dXJuIEdMX0ZBTFNFOwogCiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgcmV0dXJuIDo6
Z2xJc0J1ZmZlcigoR0x1aW50KSBidWZmZXIpOworICAgIHJldHVybiA6OmdsSXNCdWZmZXIoYnVm
ZmVyKTsKIH0KIAotYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6aXNFbmFibGVkKHVuc2lnbmVkIGxv
bmcgY2FwKQorR0MzRGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0M0Q6OmlzRW5hYmxlZChHQzNEZW51
bSBjYXApCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgcmV0dXJuIDo6Z2xJc0Vu
YWJsZWQoY2FwKTsKIH0KIAotYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6aXNGcmFtZWJ1ZmZlcihQ
bGF0Zm9ybTNET2JqZWN0IGZyYW1lYnVmZmVyKQorR0MzRGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0
M0Q6OmlzRnJhbWVidWZmZXIoUGxhdGZvcm0zRE9iamVjdCBmcmFtZWJ1ZmZlcikKIHsKICAgICBp
ZiAoIWZyYW1lYnVmZmVyKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBH
TF9GQUxTRTsKIAogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIHJldHVybiA6OmdsSXNG
cmFtZWJ1ZmZlckVYVCgoR0x1aW50KSBmcmFtZWJ1ZmZlcik7CisgICAgcmV0dXJuIDo6Z2xJc0Zy
YW1lYnVmZmVyRVhUKGZyYW1lYnVmZmVyKTsKIH0KIAotYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6
aXNQcm9ncmFtKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSkKK0dDM0Rib29sZWFuIEdyYXBoaWNz
Q29udGV4dDNEOjppc1Byb2dyYW0oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtKQogewogICAgIGlm
ICghcHJvZ3JhbSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gR0xfRkFM
U0U7CiAKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICByZXR1cm4gOjpnbElzUHJvZ3Jh
bSgoR0x1aW50KSBwcm9ncmFtKTsKKyAgICByZXR1cm4gOjpnbElzUHJvZ3JhbShwcm9ncmFtKTsK
IH0KIAotYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6aXNSZW5kZXJidWZmZXIoUGxhdGZvcm0zRE9i
amVjdCByZW5kZXJidWZmZXIpCitHQzNEYm9vbGVhbiBHcmFwaGljc0NvbnRleHQzRDo6aXNSZW5k
ZXJidWZmZXIoUGxhdGZvcm0zRE9iamVjdCByZW5kZXJidWZmZXIpCiB7CiAgICAgaWYgKCFyZW5k
ZXJidWZmZXIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIEdMX0ZBTFNF
OwogCiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgcmV0dXJuIDo6Z2xJc1JlbmRlcmJ1
ZmZlckVYVCgoR0x1aW50KSByZW5kZXJidWZmZXIpOworICAgIHJldHVybiA6OmdsSXNSZW5kZXJi
dWZmZXJFWFQocmVuZGVyYnVmZmVyKTsKIH0KIAotYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6aXNT
aGFkZXIoUGxhdGZvcm0zRE9iamVjdCBzaGFkZXIpCitHQzNEYm9vbGVhbiBHcmFwaGljc0NvbnRl
eHQzRDo6aXNTaGFkZXIoUGxhdGZvcm0zRE9iamVjdCBzaGFkZXIpCiB7CiAgICAgaWYgKCFzaGFk
ZXIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIEdMX0ZBTFNFOwogCiAg
ICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgcmV0dXJuIDo6Z2xJc1NoYWRlcigoR0x1aW50
KSBzaGFkZXIpOworICAgIHJldHVybiA6OmdsSXNTaGFkZXIoc2hhZGVyKTsKIH0KIAotYm9vbCBH
cmFwaGljc0NvbnRleHQzRDo6aXNUZXh0dXJlKFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZSkKK0dD
M0Rib29sZWFuIEdyYXBoaWNzQ29udGV4dDNEOjppc1RleHR1cmUoUGxhdGZvcm0zRE9iamVjdCB0
ZXh0dXJlKQogewogICAgIGlmICghdGV4dHVyZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICByZXR1cm4gR0xfRkFMU0U7CiAKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICBy
ZXR1cm4gOjpnbElzVGV4dHVyZSgoR0x1aW50KSB0ZXh0dXJlKTsKKyAgICByZXR1cm4gOjpnbElz
VGV4dHVyZSh0ZXh0dXJlKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6bGluZVdpZHRo
KGRvdWJsZSB3aWR0aCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmxpbmVXaWR0aChHQzNEZmxv
YXQgd2lkdGgpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbExpbmVXaWR0
aChzdGF0aWNfY2FzdDxmbG9hdD4od2lkdGgpKTsKKyAgICA6OmdsTGluZVdpZHRoKHdpZHRoKTsK
IH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6bGlua1Byb2dyYW0oUGxhdGZvcm0zRE9iamVj
dCBwcm9ncmFtKQogewogICAgIEFTU0VSVChwcm9ncmFtKTsKICAgICBtYWtlQ29udGV4dEN1cnJl
bnQoKTsKLSAgICA6OmdsTGlua1Byb2dyYW0oKEdMdWludCkgcHJvZ3JhbSk7CisgICAgOjpnbExp
bmtQcm9ncmFtKHByb2dyYW0pOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpwaXhlbFN0
b3JlaSh1bnNpZ25lZCBsb25nIHBuYW1lLCBsb25nIHBhcmFtKQordm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6cGl4ZWxTdG9yZWkoR0MzRGVudW0gcG5hbWUsIEdDM0RpbnQgcGFyYW0pCiB7CiAgICAg
bWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgOjpnbFBpeGVsU3RvcmVpKHBuYW1lLCBwYXJhbSk7
CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnBvbHlnb25PZmZzZXQoZG91YmxlIGZhY3Rv
ciwgZG91YmxlIHVuaXRzKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cG9seWdvbk9mZnNldChH
QzNEZmxvYXQgZmFjdG9yLCBHQzNEZmxvYXQgdW5pdHMpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJy
ZW50KCk7Ci0gICAgOjpnbFBvbHlnb25PZmZzZXQoc3RhdGljX2Nhc3Q8ZmxvYXQ+KGZhY3Rvciks
IHN0YXRpY19jYXN0PGZsb2F0Pih1bml0cykpOworICAgIDo6Z2xQb2x5Z29uT2Zmc2V0KGZhY3Rv
ciwgdW5pdHMpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpyZWFkUGl4ZWxzKGxvbmcg
eCwgbG9uZyB5LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCwgdW5z
aWduZWQgbG9uZyBmb3JtYXQsIHVuc2lnbmVkIGxvbmcgdHlwZSwgdm9pZCogZGF0YSkKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OnJlYWRQaXhlbHMoR0MzRGludCB4LCBHQzNEaW50IHksIEdDM0Rz
aXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0
eXBlLCBHQzNEdm9pZCogZGF0YSkKIHsKICAgICAvLyBGSVhNRTogcmVtb3ZlIHRoZSB0d28gZ2xG
bHVzaCBjYWxscyB3aGVuIHRoZSBkcml2ZXIgYnVnIGlzIGZpeGVkLCBpLmUuLAogICAgIC8vIGFs
bCBwcmV2aW91cyByZW5kZXJpbmcgY2FsbHMgc2hvdWxkIGJlIGRvbmUgYmVmb3JlIHJlYWRpbmcg
cGl4ZWxzLgpAQCAtODE1LDcgKzgxNSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnJlbGVh
c2VTaGFkZXJDb20KICAgICAvLzo6Z2xSZWxlYXNlU2hhZGVyQ29tcGlsZXIoKTsKIH0KIAotdm9p
ZCBHcmFwaGljc0NvbnRleHQzRDo6cmVuZGVyYnVmZmVyU3RvcmFnZSh1bnNpZ25lZCBsb25nIHRh
cmdldCwgdW5zaWduZWQgbG9uZyBpbnRlcm5hbGZvcm1hdCwgdW5zaWduZWQgbG9uZyB3aWR0aCwg
dW5zaWduZWQgbG9uZyBoZWlnaHQpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpyZW5kZXJidWZm
ZXJTdG9yYWdlKEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDM0Rz
aXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQo
KTsKICAgICBzd2l0Y2ggKGludGVybmFsZm9ybWF0KSB7CkBAIC04MzYsMTMgKzgzNiwxMyBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpyZW5kZXJidWZmZXJTdG9yCiAgICAgOjpnbFJlbmRlcmJ1
ZmZlclN0b3JhZ2VFWFQodGFyZ2V0LCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7CiB9
CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnNhbXBsZUNvdmVyYWdlKGRvdWJsZSB2YWx1ZSwg
Ym9vbCBpbnZlcnQpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpzYW1wbGVDb3ZlcmFnZShHQzNE
Y2xhbXBmIHZhbHVlLCBHQzNEYm9vbGVhbiBpbnZlcnQpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJy
ZW50KCk7Ci0gICAgOjpnbFNhbXBsZUNvdmVyYWdlKHN0YXRpY19jYXN0PGZsb2F0Pih2YWx1ZSks
IGludmVydCk7CisgICAgOjpnbFNhbXBsZUNvdmVyYWdlKHZhbHVlLCBpbnZlcnQpOwogfQogCi12
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpzY2lzc29yKGxvbmcgeCwgbG9uZyB5LCB1bnNpZ25lZCBs
b25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6
OnNjaXNzb3IoR0MzRGludCB4LCBHQzNEaW50IHksIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVp
IGhlaWdodCkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICA6OmdsU2Npc3Nvcih4
LCB5LCB3aWR0aCwgaGVpZ2h0KTsKQEAgLTg2MSwxNzEgKzg2MSwxNzEgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6c2hhZGVyU291cmNlKFBsYQogICAgIG1fc2hhZGVyU291cmNlTWFwLnNldChz
aGFkZXIsIGVudHJ5KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c3RlbmNpbEZ1bmMo
dW5zaWduZWQgbG9uZyBmdW5jLCBsb25nIHJlZiwgdW5zaWduZWQgbG9uZyBtYXNrKQordm9pZCBH
cmFwaGljc0NvbnRleHQzRDo6c3RlbmNpbEZ1bmMoR0MzRGVudW0gZnVuYywgR0MzRGludCByZWYs
IEdDM0R1aW50IG1hc2spCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgOjpnbFN0
ZW5jaWxGdW5jKGZ1bmMsIHJlZiwgbWFzayk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6
OnN0ZW5jaWxGdW5jU2VwYXJhdGUodW5zaWduZWQgbG9uZyBmYWNlLCB1bnNpZ25lZCBsb25nIGZ1
bmMsIGxvbmcgcmVmLCB1bnNpZ25lZCBsb25nIG1hc2spCit2b2lkIEdyYXBoaWNzQ29udGV4dDNE
OjpzdGVuY2lsRnVuY1NlcGFyYXRlKEdDM0RlbnVtIGZhY2UsIEdDM0RlbnVtIGZ1bmMsIEdDM0Rp
bnQgcmVmLCBHQzNEdWludCBtYXNrKQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAg
IDo6Z2xTdGVuY2lsRnVuY1NlcGFyYXRlKGZhY2UsIGZ1bmMsIHJlZiwgbWFzayk7CiB9CiAKLXZv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OnN0ZW5jaWxNYXNrKHVuc2lnbmVkIGxvbmcgbWFzaykKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OnN0ZW5jaWxNYXNrKEdDM0R1aW50IG1hc2spCiB7CiAgICAg
bWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgOjpnbFN0ZW5jaWxNYXNrKG1hc2spOwogfQogCi12
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpzdGVuY2lsTWFza1NlcGFyYXRlKHVuc2lnbmVkIGxvbmcg
ZmFjZSwgdW5zaWduZWQgbG9uZyBtYXNrKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c3RlbmNp
bE1hc2tTZXBhcmF0ZShHQzNEZW51bSBmYWNlLCBHQzNEdWludCBtYXNrKQogewogICAgIG1ha2VD
b250ZXh0Q3VycmVudCgpOwogICAgIDo6Z2xTdGVuY2lsTWFza1NlcGFyYXRlKGZhY2UsIG1hc2sp
OwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpzdGVuY2lsT3AodW5zaWduZWQgbG9uZyBm
YWlsLCB1bnNpZ25lZCBsb25nIHpmYWlsLCB1bnNpZ25lZCBsb25nIHpwYXNzKQordm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6c3RlbmNpbE9wKEdDM0RlbnVtIGZhaWwsIEdDM0RlbnVtIHpmYWlsLCBH
QzNEZW51bSB6cGFzcykKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICA6OmdsU3Rl
bmNpbE9wKGZhaWwsIHpmYWlsLCB6cGFzcyk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6
OnN0ZW5jaWxPcFNlcGFyYXRlKHVuc2lnbmVkIGxvbmcgZmFjZSwgdW5zaWduZWQgbG9uZyBmYWls
LCB1bnNpZ25lZCBsb25nIHpmYWlsLCB1bnNpZ25lZCBsb25nIHpwYXNzKQordm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6c3RlbmNpbE9wU2VwYXJhdGUoR0MzRGVudW0gZmFjZSwgR0MzRGVudW0gZmFp
bCwgR0MzRGVudW0gemZhaWwsIEdDM0RlbnVtIHpwYXNzKQogewogICAgIG1ha2VDb250ZXh0Q3Vy
cmVudCgpOwogICAgIDo6Z2xTdGVuY2lsT3BTZXBhcmF0ZShmYWNlLCBmYWlsLCB6ZmFpbCwgenBh
c3MpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp0ZXhQYXJhbWV0ZXJmKHVuc2lnbmVk
IHRhcmdldCwgdW5zaWduZWQgcG5hbWUsIGZsb2F0IHZhbHVlKQordm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6dGV4UGFyYW1ldGVyZihHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIHBuYW1lLCBHQzNE
ZmxvYXQgdmFsdWUpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbFRleFBh
cmFtZXRlcmYodGFyZ2V0LCBwbmFtZSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHZhbHVlKSk7CisgICAg
OjpnbFRleFBhcmFtZXRlcmYodGFyZ2V0LCBwbmFtZSwgdmFsdWUpOwogfQogCi12b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjp0ZXhQYXJhbWV0ZXJpKHVuc2lnbmVkIHRhcmdldCwgdW5zaWduZWQgcG5h
bWUsIGludCB2YWx1ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnRleFBhcmFtZXRlcmkoR0Mz
RGVudW0gdGFyZ2V0LCBHQzNEZW51bSBwbmFtZSwgR0MzRGludCB2YWx1ZSkKIHsKICAgICBtYWtl
Q29udGV4dEN1cnJlbnQoKTsKLSAgICA6OmdsVGV4UGFyYW1ldGVyaSh0YXJnZXQsIHBuYW1lLCBz
dGF0aWNfY2FzdDxmbG9hdD4odmFsdWUpKTsKKyAgICA6OmdsVGV4UGFyYW1ldGVyaSh0YXJnZXQs
IHBuYW1lLCB2YWx1ZSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0xZihs
b25nIGxvY2F0aW9uLCBmbG9hdCB2MCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0x
ZihHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQgdjApCiB7CiAgICAgbWFrZUNvbnRleHRDdXJy
ZW50KCk7CiAgICAgOjpnbFVuaWZvcm0xZihsb2NhdGlvbiwgdjApOwogfQogCi12b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjp1bmlmb3JtMWZ2KGxvbmcgbG9jYXRpb24sIGZsb2F0KiBhcnJheSwgaW50
IHNpemUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMWZ2KEdDM0RpbnQgbG9jYXRp
b24sIEdDM0RmbG9hdCogYXJyYXksIEdDM0RzaXplaSBzaXplKQogewogICAgIG1ha2VDb250ZXh0
Q3VycmVudCgpOwogICAgIDo6Z2xVbmlmb3JtMWZ2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CiB9
CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0yZihsb25nIGxvY2F0aW9uLCBmbG9h
dCB2MCwgZmxvYXQgdjEpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMmYoR0MzRGlu
dCBsb2NhdGlvbiwgR0MzRGZsb2F0IHYwLCBHQzNEZmxvYXQgdjEpCiB7CiAgICAgbWFrZUNvbnRl
eHRDdXJyZW50KCk7CiAgICAgOjpnbFVuaWZvcm0yZihsb2NhdGlvbiwgdjAsIHYxKTsKIH0KIAot
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTJmdihsb25nIGxvY2F0aW9uLCBmbG9hdCog
YXJyYXksIGludCBzaXplKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTJmdihHQzNE
aW50IGxvY2F0aW9uLCBHQzNEZmxvYXQqIGFycmF5LCBHQzNEc2l6ZWkgc2l6ZSkKIHsKICAgICAv
LyBGSVhNRTogbGVuZ3RoIG5lZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2YgMgogICAgIG1ha2VDb250
ZXh0Q3VycmVudCgpOwogICAgIDo6Z2xVbmlmb3JtMmZ2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7
CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0zZihsb25nIGxvY2F0aW9uLCBm
bG9hdCB2MCwgZmxvYXQgdjEsIGZsb2F0IHYyKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5p
Zm9ybTNmKEdDM0RpbnQgbG9jYXRpb24sIEdDM0RmbG9hdCB2MCwgR0MzRGZsb2F0IHYxLCBHQzNE
ZmxvYXQgdjIpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgOjpnbFVuaWZvcm0z
Zihsb2NhdGlvbiwgdjAsIHYxLCB2Mik7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVu
aWZvcm0zZnYobG9uZyBsb2NhdGlvbiwgZmxvYXQqIGFycmF5LCBpbnQgc2l6ZSkKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0zZnYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGZsb2F0KiBh
cnJheSwgR0MzRHNpemVpIHNpemUpCiB7CiAgICAgLy8gRklYTUU6IGxlbmd0aCBuZWVkcyB0byBi
ZSBhIG11bHRpcGxlIG9mIDMKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICA6OmdsVW5p
Zm9ybTNmdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjp1bmlmb3JtNGYobG9uZyBsb2NhdGlvbiwgZmxvYXQgdjAsIGZsb2F0IHYxLCBmbG9hdCB2
MiwgZmxvYXQgdjMpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtNGYoR0MzRGludCBs
b2NhdGlvbiwgR0MzRGZsb2F0IHYwLCBHQzNEZmxvYXQgdjEsIEdDM0RmbG9hdCB2MiwgR0MzRGZs
b2F0IHYzKQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIDo6Z2xVbmlmb3JtNGYo
bG9jYXRpb24sIHYwLCB2MSwgdjIsIHYzKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
dW5pZm9ybTRmdihsb25nIGxvY2F0aW9uLCBmbG9hdCogYXJyYXksIGludCBzaXplKQordm9pZCBH
cmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTRmdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQq
IGFycmF5LCBHQzNEc2l6ZWkgc2l6ZSkKIHsKICAgICAvLyBGSVhNRTogbGVuZ3RoIG5lZWRzIHRv
IGJlIGEgbXVsdGlwbGUgb2YgNAogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIDo6Z2xV
bmlmb3JtNGZ2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250
ZXh0M0Q6OnVuaWZvcm0xaShsb25nIGxvY2F0aW9uLCBpbnQgdjApCit2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjp1bmlmb3JtMWkoR0MzRGludCBsb2NhdGlvbiwgR0MzRGludCB2MCkKIHsKICAgICBt
YWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICA6OmdsVW5pZm9ybTFpKGxvY2F0aW9uLCB2MCk7CiB9
CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0xaXYobG9uZyBsb2NhdGlvbiwgaW50
KiBhcnJheSwgaW50IHNpemUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMWl2KEdD
M0RpbnQgbG9jYXRpb24sIEdDM0RpbnQqIGFycmF5LCBHQzNEc2l6ZWkgc2l6ZSkKIHsKICAgICBt
YWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICA6OmdsVW5pZm9ybTFpdihsb2NhdGlvbiwgc2l6ZSwg
YXJyYXkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMmkobG9uZyBsb2Nh
dGlvbiwgaW50IHYwLCBpbnQgdjEpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMmko
R0MzRGludCBsb2NhdGlvbiwgR0MzRGludCB2MCwgR0MzRGludCB2MSkKIHsKICAgICBtYWtlQ29u
dGV4dEN1cnJlbnQoKTsKICAgICA6OmdsVW5pZm9ybTJpKGxvY2F0aW9uLCB2MCwgdjEpOwogfQog
Ci12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMml2KGxvbmcgbG9jYXRpb24sIGludCog
YXJyYXksIGludCBzaXplKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTJpdihHQzNE
aW50IGxvY2F0aW9uLCBHQzNEaW50KiBhcnJheSwgR0MzRHNpemVpIHNpemUpCiB7CiAgICAgLy8g
RklYTUU6IGxlbmd0aCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDIKICAgICBtYWtlQ29udGV4
dEN1cnJlbnQoKTsKICAgICA6OmdsVW5pZm9ybTJpdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOwog
fQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtM2kobG9uZyBsb2NhdGlvbiwgaW50
IHYwLCBpbnQgdjEsIGludCB2MikKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0zaShH
QzNEaW50IGxvY2F0aW9uLCBHQzNEaW50IHYwLCBHQzNEaW50IHYxLCBHQzNEaW50IHYyKQogewog
ICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIDo6Z2xVbmlmb3JtM2kobG9jYXRpb24sIHYw
LCB2MSwgdjIpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtM2l2KGxvbmcg
bG9jYXRpb24sIGludCogYXJyYXksIGludCBzaXplKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
dW5pZm9ybTNpdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEaW50KiBhcnJheSwgR0MzRHNpemVpIHNp
emUpCiB7CiAgICAgLy8gRklYTUU6IGxlbmd0aCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDMK
ICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICA6OmdsVW5pZm9ybTNpdihsb2NhdGlvbiwg
c2l6ZSwgYXJyYXkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtNGkobG9u
ZyBsb2NhdGlvbiwgaW50IHYwLCBpbnQgdjEsIGludCB2MiwgaW50IHYzKQordm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6dW5pZm9ybTRpKEdDM0RpbnQgbG9jYXRpb24sIEdDM0RpbnQgdjAsIEdDM0Rp
bnQgdjEsIEdDM0RpbnQgdjIsIEdDM0RpbnQgdjMpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50
KCk7CiAgICAgOjpnbFVuaWZvcm00aShsb2NhdGlvbiwgdjAsIHYxLCB2MiwgdjMpOwogfQogCi12
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtNGl2KGxvbmcgbG9jYXRpb24sIGludCogYXJy
YXksIGludCBzaXplKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTRpdihHQzNEaW50
IGxvY2F0aW9uLCBHQzNEaW50KiBhcnJheSwgR0MzRHNpemVpIHNpemUpCiB7CiAgICAgLy8gRklY
TUU6IGxlbmd0aCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDQKICAgICBtYWtlQ29udGV4dEN1
cnJlbnQoKTsKICAgICA6OmdsVW5pZm9ybTRpdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOwogfQog
Ci12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtTWF0cml4MmZ2KGxvbmcgbG9jYXRpb24s
IGJvb2wgdHJhbnNwb3NlLCBmbG9hdCogYXJyYXksIGludCBzaXplKQordm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6dW5pZm9ybU1hdHJpeDJmdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEYm9vbGVhbiB0
cmFuc3Bvc2UsIEdDM0RmbG9hdCogYXJyYXksIEdDM0RzaXplaSBzaXplKQogewogICAgIC8vIEZJ
WE1FOiBsZW5ndGggbmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiA0CiAgICAgbWFrZUNvbnRleHRD
dXJyZW50KCk7CiAgICAgOjpnbFVuaWZvcm1NYXRyaXgyZnYobG9jYXRpb24sIHNpemUsIHRyYW5z
cG9zZSwgYXJyYXkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtTWF0cml4
M2Z2KGxvbmcgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBmbG9hdCogYXJyYXksIGludCBzaXpl
KQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybU1hdHJpeDNmdihHQzNEaW50IGxvY2F0
aW9uLCBHQzNEYm9vbGVhbiB0cmFuc3Bvc2UsIEdDM0RmbG9hdCogYXJyYXksIEdDM0RzaXplaSBz
aXplKQogewogICAgIC8vIEZJWE1FOiBsZW5ndGggbmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiA5
CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgOjpnbFVuaWZvcm1NYXRyaXgzZnYobG9j
YXRpb24sIHNpemUsIHRyYW5zcG9zZSwgYXJyYXkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjp1bmlmb3JtTWF0cml4NGZ2KGxvbmcgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBmbG9h
dCogYXJyYXksIGludCBzaXplKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybU1hdHJp
eDRmdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEYm9vbGVhbiB0cmFuc3Bvc2UsIEdDM0RmbG9hdCog
YXJyYXksIEdDM0RzaXplaSBzaXplKQogewogICAgIC8vIEZJWE1FOiBsZW5ndGggbmVlZHMgdG8g
YmUgYSBtdWx0aXBsZSBvZiAxNgogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwpAQCAtMTAzNSw3
ICsxMDM1LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybU1hdHJpeDRmdgogdm9p
ZCBHcmFwaGljc0NvbnRleHQzRDo6dXNlUHJvZ3JhbShQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0p
CiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbFVzZVByb2dyYW0oKEdMdWlu
dCkgcHJvZ3JhbSk7CisgICAgOjpnbFVzZVByb2dyYW0ocHJvZ3JhbSk7CiB9CiAKIHZvaWQgR3Jh
cGhpY3NDb250ZXh0M0Q6OnZhbGlkYXRlUHJvZ3JhbShQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0p
CkBAIC0xMDQzLDg4ICsxMDQzLDg4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZhbGlkYXRl
UHJvZ3JhbSgKICAgICBBU1NFUlQocHJvZ3JhbSk7CiAKICAgICBtYWtlQ29udGV4dEN1cnJlbnQo
KTsKLSAgICA6OmdsVmFsaWRhdGVQcm9ncmFtKChHTHVpbnQpIHByb2dyYW0pOworICAgIDo6Z2xW
YWxpZGF0ZVByb2dyYW0ocHJvZ3JhbSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZl
cnRleEF0dHJpYjFmKHVuc2lnbmVkIGxvbmcgaW5keCwgZmxvYXQgdjApCit2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIxZihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0IHYwKQog
ewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xWZXJ0ZXhBdHRyaWIxZihpbmR4
LCB2MCk7CisgICAgOjpnbFZlcnRleEF0dHJpYjFmKGluZGV4LCB2MCk7CiB9CiAKLXZvaWQgR3Jh
cGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjFmdih1bnNpZ25lZCBsb25nIGluZHgsIGZsb2F0
KiBhcnJheSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjFmdihHQzNEdWlu
dCBpbmRleCwgR0MzRGZsb2F0KiBhcnJheSkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsK
LSAgICA6OmdsVmVydGV4QXR0cmliMWZ2KGluZHgsIGFycmF5KTsKKyAgICA6OmdsVmVydGV4QXR0
cmliMWZ2KGluZGV4LCBhcnJheSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRl
eEF0dHJpYjJmKHVuc2lnbmVkIGxvbmcgaW5keCwgZmxvYXQgdjAsIGZsb2F0IHYxKQordm9pZCBH
cmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliMmYoR0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9h
dCB2MCwgR0MzRGZsb2F0IHYxKQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6
Z2xWZXJ0ZXhBdHRyaWIyZihpbmR4LCB2MCwgdjEpOworICAgIDo6Z2xWZXJ0ZXhBdHRyaWIyZihp
bmRleCwgdjAsIHYxKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmli
MmZ2KHVuc2lnbmVkIGxvbmcgaW5keCwgZmxvYXQqIGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6dmVydGV4QXR0cmliMmZ2KEdDM0R1aW50IGluZGV4LCBHQzNEZmxvYXQqIGFycmF5KQog
ewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xWZXJ0ZXhBdHRyaWIyZnYoaW5k
eCwgYXJyYXkpOworICAgIDo6Z2xWZXJ0ZXhBdHRyaWIyZnYoaW5kZXgsIGFycmF5KTsKIH0KIAot
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliM2YodW5zaWduZWQgbG9uZyBpbmR4
LCBmbG9hdCB2MCwgZmxvYXQgdjEsIGZsb2F0IHYyKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
dmVydGV4QXR0cmliM2YoR0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCB2MCwgR0MzRGZsb2F0IHYx
LCBHQzNEZmxvYXQgdjIpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbFZl
cnRleEF0dHJpYjNmKGluZHgsIHYwLCB2MSwgdjIpOworICAgIDo6Z2xWZXJ0ZXhBdHRyaWIzZihp
bmRleCwgdjAsIHYxLCB2Mik7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0
dHJpYjNmdih1bnNpZ25lZCBsb25nIGluZHgsIGZsb2F0KiBhcnJheSkKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OnZlcnRleEF0dHJpYjNmdihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0KiBhcnJh
eSkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6OmdsVmVydGV4QXR0cmliM2Z2
KGluZHgsIGFycmF5KTsKKyAgICA6OmdsVmVydGV4QXR0cmliM2Z2KGluZGV4LCBhcnJheSk7CiB9
CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjRmKHVuc2lnbmVkIGxvbmcg
aW5keCwgZmxvYXQgdjAsIGZsb2F0IHYxLCBmbG9hdCB2MiwgZmxvYXQgdjMpCit2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWI0ZihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0IHYw
LCBHQzNEZmxvYXQgdjEsIEdDM0RmbG9hdCB2MiwgR0MzRGZsb2F0IHYzKQogewogICAgIG1ha2VD
b250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xWZXJ0ZXhBdHRyaWI0ZihpbmR4LCB2MCwgdjEsIHYy
LCB2Myk7CisgICAgOjpnbFZlcnRleEF0dHJpYjRmKGluZGV4LCB2MCwgdjEsIHYyLCB2Myk7CiB9
CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjRmdih1bnNpZ25lZCBsb25n
IGluZHgsIGZsb2F0KiBhcnJheSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJp
YjRmdihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0KiBhcnJheSkKIHsKICAgICBtYWtlQ29udGV4
dEN1cnJlbnQoKTsKLSAgICA6OmdsVmVydGV4QXR0cmliNGZ2KGluZHgsIGFycmF5KTsKKyAgICA6
OmdsVmVydGV4QXR0cmliNGZ2KGluZGV4LCBhcnJheSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250
ZXh0M0Q6OnZlcnRleEF0dHJpYlBvaW50ZXIodW5zaWduZWQgbG9uZyBpbmR4LCBpbnQgc2l6ZSwg
aW50IHR5cGUsIGJvb2wgbm9ybWFsaXplZCwgdW5zaWduZWQgbG9uZyBzdHJpZGUsIHVuc2lnbmVk
IGxvbmcgb2Zmc2V0KQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliUG9pbnRl
cihHQzNEdWludCBpbmRleCwgR0MzRGludCBzaXplLCBHQzNEZW51bSB0eXBlLCBHQzNEYm9vbGVh
biBub3JtYWxpemVkLCBHQzNEc2l6ZWkgc3RyaWRlLCBHQzNEc2l6ZWlwdHIgb2Zmc2V0KQogewog
ICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xWZXJ0ZXhBdHRyaWJQb2ludGVyKGlu
ZHgsIHNpemUsIHR5cGUsIG5vcm1hbGl6ZWQsIHN0cmlkZSwgcmVpbnRlcnByZXRfY2FzdDx2b2lk
Kj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KG9mZnNldCkpKTsKKyAgICA6OmdsVmVydGV4QXR0cmli
UG9pbnRlcihpbmRleCwgc2l6ZSwgdHlwZSwgbm9ybWFsaXplZCwgc3RyaWRlLCByZWludGVycHJl
dF9jYXN0PEdMdm9pZCo+KHN0YXRpY19jYXN0PGludHB0cl90PihvZmZzZXQpKSk7CiB9CiAKLXZv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZpZXdwb3J0KGxvbmcgeCwgbG9uZyB5LCB1bnNpZ25lZCBs
b25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6
OnZpZXdwb3J0KEdDM0RpbnQgeCwgR0MzRGludCB5LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXpl
aSBoZWlnaHQpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbFZpZXdwb3J0
KHN0YXRpY19jYXN0PEdMaW50Pih4KSwgc3RhdGljX2Nhc3Q8R0xpbnQ+KHkpLCBzdGF0aWNfY2Fz
dDxHTHNpemVpPih3aWR0aCksIHN0YXRpY19jYXN0PEdMc2l6ZWk+KGhlaWdodCkpOworICAgIDo6
Z2xWaWV3cG9ydCh4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6Z2V0Qm9vbGVhbnYodW5zaWduZWQgbG9uZyBwbmFtZSwgdW5zaWduZWQgY2hhciogdmFs
dWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRCb29sZWFudihHQzNEZW51bSBwbmFtZSwg
R0MzRGJvb2xlYW4qIHZhbHVlKQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIDo6
Z2xHZXRCb29sZWFudihwbmFtZSwgdmFsdWUpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNE
OjpnZXRCdWZmZXJQYXJhbWV0ZXJpdih1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9u
ZyBwbmFtZSwgaW50KiB2YWx1ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEJ1ZmZlclBh
cmFtZXRlcml2KEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gcG5hbWUsIEdDM0RpbnQqIHZhbHVl
KQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIDo6Z2xHZXRCdWZmZXJQYXJhbWV0
ZXJpdih0YXJnZXQsIHBuYW1lLCB2YWx1ZSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6
OmdldEZsb2F0dih1bnNpZ25lZCBsb25nIHBuYW1lLCBmbG9hdCogdmFsdWUpCit2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjpnZXRGbG9hdHYoR0MzRGVudW0gcG5hbWUsIEdDM0RmbG9hdCogdmFsdWUp
CiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgOjpnbEdldEZsb2F0dihwbmFtZSwg
dmFsdWUpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRGcmFtZWJ1ZmZlckF0dGFj
aG1lbnRQYXJhbWV0ZXJpdih1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBhdHRh
Y2htZW50LCB1bnNpZ25lZCBsb25nIHBuYW1lLCBpbnQqIHZhbHVlKQordm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYoR0MzRGVudW0gdGFy
Z2V0LCBHQzNEZW51bSBhdHRhY2htZW50LCBHQzNEZW51bSBwbmFtZSwgR0MzRGludCogdmFsdWUp
CiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgaWYgKGF0dGFjaG1lbnQgPT0gREVQ
VEhfU1RFTkNJTF9BVFRBQ0hNRU5UKQpAQCAtMTEzMiw3ICsxMTMyLDcgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6Z2V0RnJhbWVidWZmZXJBdAogICAgIDo6Z2xHZXRGcmFtZWJ1ZmZlckF0dGFj
aG1lbnRQYXJhbWV0ZXJpdkVYVCh0YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1lLCB2YWx1ZSk7CiB9
CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEludGVnZXJ2KHVuc2lnbmVkIGxvbmcgcG5h
bWUsIGludCogdmFsdWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRJbnRlZ2VydihHQzNE
ZW51bSBwbmFtZSwgR0MzRGludCogdmFsdWUpCiB7CiAgICAgLy8gTmVlZCB0byBlbXVsYXRlIE1B
WF9GUkFHTUVOVC9WRVJURVhfVU5JRk9STV9WRUNUT1JTIGFuZCBNQVhfVkFSWUlOR19WRUNUT1JT
CiAgICAgLy8gYmVjYXVzZSBkZXNrdG9wIEdMJ3MgY29ycmVzcG9uZGluZyBxdWVyaWVzIHJldHVy
biB0aGUgbnVtYmVyIG9mIGNvbXBvbmVudHMKQEAgLTExNTcsMTAgKzExNTcsMTAgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQzRDo6Z2V0SW50ZWdlcnYodW5zaQogICAgIH0KIH0KIAotdm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6Z2V0UHJvZ3JhbWl2KFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgdW5z
aWduZWQgbG9uZyBwbmFtZSwgaW50KiB2YWx1ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6Omdl
dFByb2dyYW1pdihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIEdDM0RlbnVtIHBuYW1lLCBHQzNE
aW50KiB2YWx1ZSkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6OmdsR2V0UHJv
Z3JhbWl2KChHTHVpbnQpIHByb2dyYW0sIHBuYW1lLCB2YWx1ZSk7CisgICAgOjpnbEdldFByb2dy
YW1pdihwcm9ncmFtLCBwbmFtZSwgdmFsdWUpOwogfQogCiBTdHJpbmcgR3JhcGhpY3NDb250ZXh0
M0Q6OmdldFByb2dyYW1JbmZvTG9nKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSkKQEAgLTExNjks
MjYgKzExNjksMjYgQEAgU3RyaW5nIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRQcm9ncmFtSW5mbwog
CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgR0xpbnQgbGVuZ3RoOwotICAgIDo6Z2xH
ZXRQcm9ncmFtaXYoKEdMdWludCkgcHJvZ3JhbSwgR0xfSU5GT19MT0dfTEVOR1RILCAmbGVuZ3Ro
KTsKKyAgICA6OmdsR2V0UHJvZ3JhbWl2KHByb2dyYW0sIEdMX0lORk9fTE9HX0xFTkdUSCwgJmxl
bmd0aCk7CiAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgIHJldHVybiAiIjsKIAogICAgIEdMc2l6
ZWkgc2l6ZTsKICAgICBHTGNoYXIqIGluZm8gPSAoR0xjaGFyKikgZmFzdE1hbGxvYyhsZW5ndGgp
OwogCi0gICAgOjpnbEdldFByb2dyYW1JbmZvTG9nKChHTHVpbnQpIHByb2dyYW0sIGxlbmd0aCwg
JnNpemUsIGluZm8pOworICAgIDo6Z2xHZXRQcm9ncmFtSW5mb0xvZyhwcm9ncmFtLCBsZW5ndGgs
ICZzaXplLCBpbmZvKTsKICAgICBTdHJpbmcgcyhpbmZvKTsKICAgICBmYXN0RnJlZShpbmZvKTsK
ICAgICByZXR1cm4gczsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0UmVuZGVyYnVm
ZmVyUGFyYW1ldGVyaXYodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUs
IGludCogdmFsdWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRSZW5kZXJidWZmZXJQYXJh
bWV0ZXJpdihHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIHBuYW1lLCBHQzNEaW50KiB2YWx1ZSkK
IHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICA6OmdsR2V0UmVuZGVyYnVmZmVyUGFy
YW1ldGVyaXZFWFQodGFyZ2V0LCBwbmFtZSwgdmFsdWUpOwogfQogCi12b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjpnZXRTaGFkZXJpdihQbGF0Zm9ybTNET2JqZWN0IHNoYWRlciwgdW5zaWduZWQgbG9u
ZyBwbmFtZSwgaW50KiB2YWx1ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFNoYWRlcml2
KFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyLCBHQzNEZW51bSBwbmFtZSwgR0MzRGludCogdmFsdWUp
CiB7CiAgICAgQVNTRVJUKHNoYWRlcik7CiAKQEAgLTEyMDEsNyArMTIwMSw3IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0M0Q6OmdldFNoYWRlcml2KFBsYXQKICAgICAgICAgY2FzZSBTSEFERVJfVFlQ
RToKICAgICAgICAgICAgIC8vIExldCBPcGVuR0wgaGFuZGxlIHRoZXNlLgogICAgICAgICAKLSAg
ICAgICAgICAgIDo6Z2xHZXRTaGFkZXJpdigoR0x1aW50KSBzaGFkZXIsIHBuYW1lLCB2YWx1ZSk7
CisgICAgICAgICAgICA6OmdsR2V0U2hhZGVyaXYoc2hhZGVyLCBwbmFtZSwgdmFsdWUpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIAogICAgICAgICBjYXNlIENPTVBJTEVfU1RBVFVTOgpA
QCAtMTI0NiwxNCArMTI0NiwxNCBAQCBTdHJpbmcgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFNoYWRl
ckluZm9MCiAKICAgICAgaWYgKGVudHJ5LmlzVmFsaWQpIHsKICAgICAgICAgIEdMaW50IGxlbmd0
aDsKLSAgICAgICAgIDo6Z2xHZXRTaGFkZXJpdigoR0x1aW50KSBzaGFkZXIsIEdMX0lORk9fTE9H
X0xFTkdUSCwgJmxlbmd0aCk7CisgICAgICAgICA6OmdsR2V0U2hhZGVyaXYoc2hhZGVyLCBHTF9J
TkZPX0xPR19MRU5HVEgsICZsZW5ndGgpOwogICAgICAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAg
ICAgICAgcmV0dXJuICIiOwogCiAgICAgICAgICBHTHNpemVpIHNpemU7CiAgICAgICAgICBHTGNo
YXIqIGluZm8gPSAoR0xjaGFyKikgZmFzdE1hbGxvYyhsZW5ndGgpOwogCi0gICAgICAgICA6Omds
R2V0U2hhZGVySW5mb0xvZygoR0x1aW50KSBzaGFkZXIsIGxlbmd0aCwgJnNpemUsIGluZm8pOwor
ICAgICAgICAgOjpnbEdldFNoYWRlckluZm9Mb2coc2hhZGVyLCBsZW5ndGgsICZzaXplLCBpbmZv
KTsKIAogICAgICAgICAgU3RyaW5nIHMoaW5mbyk7CiAgICAgICAgICBmYXN0RnJlZShpbmZvKTsK
QEAgLTEyNzcsNjcgKzEyNzcsNjcgQEAgU3RyaW5nIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRTaGFk
ZXJTb3VyYwogfQogCiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFRleFBhcmFtZXRlcmZ2
KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lLCBmbG9hdCogdmFsdWUp
Cit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRUZXhQYXJhbWV0ZXJmdihHQzNEZW51bSB0YXJn
ZXQsIEdDM0RlbnVtIHBuYW1lLCBHQzNEZmxvYXQqIHZhbHVlKQogewogICAgIG1ha2VDb250ZXh0
Q3VycmVudCgpOwogICAgIDo6Z2xHZXRUZXhQYXJhbWV0ZXJmdih0YXJnZXQsIHBuYW1lLCB2YWx1
ZSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFRleFBhcmFtZXRlcml2KHVuc2ln
bmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lLCBpbnQqIHZhbHVlKQordm9pZCBH
cmFwaGljc0NvbnRleHQzRDo6Z2V0VGV4UGFyYW1ldGVyaXYoR0MzRGVudW0gdGFyZ2V0LCBHQzNE
ZW51bSBwbmFtZSwgR0MzRGludCogdmFsdWUpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7
CiAgICAgOjpnbEdldFRleFBhcmFtZXRlcml2KHRhcmdldCwgcG5hbWUsIHZhbHVlKTsKIH0KIAot
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VW5pZm9ybWZ2KFBsYXRmb3JtM0RPYmplY3QgcHJv
Z3JhbSwgbG9uZyBsb2NhdGlvbiwgZmxvYXQqIHZhbHVlKQordm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6Z2V0VW5pZm9ybWZ2KFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgR0MzRGludCBsb2NhdGlv
biwgR0MzRGZsb2F0KiB2YWx1ZSkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6
OmdsR2V0VW5pZm9ybWZ2KChHTHVpbnQpIHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZSk7CisgICAg
OjpnbEdldFVuaWZvcm1mdihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUpOwogfQogCi12b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjpnZXRVbmlmb3JtaXYoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBs
b25nIGxvY2F0aW9uLCBpbnQqIHZhbHVlKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VW5p
Zm9ybWl2KFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgR0MzRGludCBsb2NhdGlvbiwgR0MzRGlu
dCogdmFsdWUpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbEdldFVuaWZv
cm1pdigoR0x1aW50KSBwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUpOworICAgIDo6Z2xHZXRVbmlm
b3JtaXYocHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlKTsKIH0KIAotbG9uZyBHcmFwaGljc0NvbnRl
eHQzRDo6Z2V0VW5pZm9ybUxvY2F0aW9uKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgY29uc3Qg
U3RyaW5nJiBuYW1lKQorR0MzRGludCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VW5pZm9ybUxvY2F0
aW9uKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgY29uc3QgU3RyaW5nJiBuYW1lKQogewogICAg
IEFTU0VSVChwcm9ncmFtKTsKIAogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIHJldHVy
biA6OmdsR2V0VW5pZm9ybUxvY2F0aW9uKChHTHVpbnQpIHByb2dyYW0sIG5hbWUudXRmOCgpLmRh
dGEoKSk7CisgICAgcmV0dXJuIDo6Z2xHZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgbmFtZS51
dGY4KCkuZGF0YSgpKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VmVydGV4QXR0
cmliZnYodW5zaWduZWQgbG9uZyBpbmRleCwgdW5zaWduZWQgbG9uZyBwbmFtZSwgZmxvYXQqIHZh
bHVlKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VmVydGV4QXR0cmliZnYoR0MzRHVpbnQg
aW5kZXgsIEdDM0RlbnVtIHBuYW1lLCBHQzNEZmxvYXQqIHZhbHVlKQogewogICAgIG1ha2VDb250
ZXh0Q3VycmVudCgpOwogICAgIDo6Z2xHZXRWZXJ0ZXhBdHRyaWJmdihpbmRleCwgcG5hbWUsIHZh
bHVlKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VmVydGV4QXR0cmliaXYodW5z
aWduZWQgbG9uZyBpbmRleCwgdW5zaWduZWQgbG9uZyBwbmFtZSwgaW50KiB2YWx1ZSkKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OmdldFZlcnRleEF0dHJpYml2KEdDM0R1aW50IGluZGV4LCBHQzNE
ZW51bSBwbmFtZSwgR0MzRGludCogdmFsdWUpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7
CiAgICAgOjpnbEdldFZlcnRleEF0dHJpYml2KGluZGV4LCBwbmFtZSwgdmFsdWUpOwogfQogCi1s
b25nIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQodW5zaWduZWQgbG9u
ZyBpbmRleCwgdW5zaWduZWQgbG9uZyBwbmFtZSkKK0dDM0RzaXplaXB0ciBHcmFwaGljc0NvbnRl
eHQzRDo6Z2V0VmVydGV4QXR0cmliT2Zmc2V0KEdDM0R1aW50IGluZGV4LCBHQzNEZW51bSBwbmFt
ZSkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKIAotICAgIHZvaWQqIHBvaW50ZXI7Cisg
ICAgR0x2b2lkKiBwb2ludGVyID0gMDsKICAgICA6OmdsR2V0VmVydGV4QXR0cmliUG9pbnRlcnYo
aW5kZXgsIHBuYW1lLCAmcG9pbnRlcik7Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8bG9u
Zz4ocG9pbnRlcik7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDM0RzaXplaXB0cj4ocmVpbnRl
cnByZXRfY2FzdDxpbnRwdHJfdD4ocG9pbnRlcikpOwogfQogCi1pbnQgR3JhcGhpY3NDb250ZXh0
M0Q6OnRleEltYWdlMkQodW5zaWduZWQgdGFyZ2V0LCB1bnNpZ25lZCBsZXZlbCwgdW5zaWduZWQg
aW50ZXJuYWxmb3JtYXQsIHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQsIHVuc2lnbmVk
IGJvcmRlciwgdW5zaWduZWQgZm9ybWF0LCB1bnNpZ25lZCB0eXBlLCB2b2lkKiBwaXhlbHMpCiti
b29sIEdyYXBoaWNzQ29udGV4dDNEOjp0ZXhJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGlu
dCBsZXZlbCwgR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNp
emVpIGhlaWdodCwgR0MzRGludCBib3JkZXIsIEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVudW0gdHlw
ZSwgR0MzRHZvaWQqIHBpeGVscykKIHsKICAgICBpZiAod2lkdGggJiYgaGVpZ2h0ICYmICFwaXhl
bHMpIHsKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoSU5WQUxJRF9WQUxVRSk7Ci0gICAgICAg
IHJldHVybiAxOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIG1ha2VDb250ZXh0
Q3VycmVudCgpOwotICAgIHVuc2lnbmVkIG9wZW5HTEludGVybmFsRm9ybWF0ID0gaW50ZXJuYWxm
b3JtYXQ7CisgICAgR0MzRGVudW0gb3BlbkdMSW50ZXJuYWxGb3JtYXQgPSBpbnRlcm5hbGZvcm1h
dDsKICAgICBpZiAodHlwZSA9PSBHTF9GTE9BVCkgewogICAgICAgICBpZiAoZm9ybWF0ID09IEdM
X1JHQkEpCiAgICAgICAgICAgICBvcGVuR0xJbnRlcm5hbEZvcm1hdCA9IEdMX1JHQkEzMkZfQVJC
OwpAQCAtMTM0Niw5OSArMTM0Niw5OCBAQCBpbnQgR3JhcGhpY3NDb250ZXh0M0Q6OnRleEltYWdl
MkQodW5zaWduCiAgICAgfQogCiAgICAgOjpnbFRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgb3Bl
bkdMSW50ZXJuYWxGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBw
aXhlbHMpOwotICAgIHJldHVybiAwOworICAgIHJldHVybiB0cnVlOwogfQogCi1pbnQgR3JhcGhp
Y3NDb250ZXh0M0Q6OnRleFN1YkltYWdlMkQodW5zaWduZWQgdGFyZ2V0LCB1bnNpZ25lZCBsZXZl
bCwgdW5zaWduZWQgeG9mZiwgdW5zaWduZWQgeW9mZiwgdW5zaWduZWQgd2lkdGgsIHVuc2lnbmVk
IGhlaWdodCwgdW5zaWduZWQgZm9ybWF0LCB1bnNpZ25lZCB0eXBlLCB2b2lkKiBwaXhlbHMpCit2
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp0ZXhTdWJJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0Mz
RGludCBsZXZlbCwgR0MzRGludCB4b2ZmLCBHQzNEaW50IHlvZmYsIEdDM0RzaXplaSB3aWR0aCwg
R0MzRHNpemVpIGhlaWdodCwgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBlLCBHQzNEdm9p
ZCogcGl4ZWxzKQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogCiAgICAgLy8gRklYTUU6
IHdlIHdpbGwgbmVlZCB0byBkZWFsIHdpdGggUGl4ZWxTdG9yZSBwYXJhbXMgd2hlbiBkZWFsaW5n
IHdpdGggaW1hZ2UgYnVmZmVycyB0aGF0IGRpZmZlciBmcm9tIHRoZSBzdWJpbWFnZSBzaXplCiAg
ICAgOjpnbFRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZiwgeW9mZiwgd2lkdGgsIGhl
aWdodCwgZm9ybWF0LCB0eXBlLCBwaXhlbHMpOwotICAgIHJldHVybiAwOwogfQogCi11bnNpZ25l
ZCBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlQnVmZmVyKCkKK1BsYXRmb3JtM0RPYmplY3QgR3Jh
cGhpY3NDb250ZXh0M0Q6OmNyZWF0ZUJ1ZmZlcigpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50
KCk7Ci0gICAgR0x1aW50IG87CisgICAgR0x1aW50IG8gPSAwOwogICAgIGdsR2VuQnVmZmVycygx
LCAmbyk7CiAgICAgcmV0dXJuIG87CiB9CiAKLXVuc2lnbmVkIEdyYXBoaWNzQ29udGV4dDNEOjpj
cmVhdGVGcmFtZWJ1ZmZlcigpCitQbGF0Zm9ybTNET2JqZWN0IEdyYXBoaWNzQ29udGV4dDNEOjpj
cmVhdGVGcmFtZWJ1ZmZlcigpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgR0x1
aW50IG87CisgICAgR0x1aW50IG8gPSAwOwogICAgIGdsR2VuRnJhbWVidWZmZXJzRVhUKDEsICZv
KTsKICAgICByZXR1cm4gbzsKIH0KIAotdW5zaWduZWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0
ZVByb2dyYW0oKQorUGxhdGZvcm0zRE9iamVjdCBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlUHJv
Z3JhbSgpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgcmV0dXJuIGdsQ3JlYXRl
UHJvZ3JhbSgpOwogfQogCi11bnNpZ25lZCBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlUmVuZGVy
YnVmZmVyKCkKK1BsYXRmb3JtM0RPYmplY3QgR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZVJlbmRl
cmJ1ZmZlcigpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgR0x1aW50IG87Cisg
ICAgR0x1aW50IG8gPSAwOwogICAgIGdsR2VuUmVuZGVyYnVmZmVyc0VYVCgxLCAmbyk7CiAgICAg
cmV0dXJuIG87CiB9CiAKLXVuc2lnbmVkIEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVTaGFkZXIo
dW5zaWduZWQgbG9uZyB0eXBlKQorUGxhdGZvcm0zRE9iamVjdCBHcmFwaGljc0NvbnRleHQzRDo6
Y3JlYXRlU2hhZGVyKEdDM0RlbnVtIHR5cGUpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7
CiAgICAgcmV0dXJuIGdsQ3JlYXRlU2hhZGVyKCh0eXBlID09IEZSQUdNRU5UX1NIQURFUikgPyBH
TF9GUkFHTUVOVF9TSEFERVIgOiBHTF9WRVJURVhfU0hBREVSKTsKIH0KIAotdW5zaWduZWQgR3Jh
cGhpY3NDb250ZXh0M0Q6OmNyZWF0ZVRleHR1cmUoKQorUGxhdGZvcm0zRE9iamVjdCBHcmFwaGlj
c0NvbnRleHQzRDo6Y3JlYXRlVGV4dHVyZSgpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7
Ci0gICAgR0x1aW50IG87CisgICAgR0x1aW50IG8gPSAwOwogICAgIGdsR2VuVGV4dHVyZXMoMSwg
Jm8pOwogICAgIHJldHVybiBvOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkZWxldGVC
dWZmZXIodW5zaWduZWQgYnVmZmVyKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGVsZXRlQnVm
ZmVyKFBsYXRmb3JtM0RPYmplY3QgYnVmZmVyKQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgp
OwogICAgIGdsRGVsZXRlQnVmZmVycygxLCAmYnVmZmVyKTsKIH0KIAotdm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6ZGVsZXRlRnJhbWVidWZmZXIodW5zaWduZWQgZnJhbWVidWZmZXIpCit2b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjpkZWxldGVGcmFtZWJ1ZmZlcihQbGF0Zm9ybTNET2JqZWN0IGZyYW1l
YnVmZmVyKQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIGdsRGVsZXRlRnJhbWVi
dWZmZXJzRVhUKDEsICZmcmFtZWJ1ZmZlcik7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6
OmRlbGV0ZVByb2dyYW0odW5zaWduZWQgcHJvZ3JhbSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6
OmRlbGV0ZVByb2dyYW0oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtKQogewogICAgIG1ha2VDb250
ZXh0Q3VycmVudCgpOwogICAgIGdsRGVsZXRlUHJvZ3JhbShwcm9ncmFtKTsKIH0KIAotdm9pZCBH
cmFwaGljc0NvbnRleHQzRDo6ZGVsZXRlUmVuZGVyYnVmZmVyKHVuc2lnbmVkIHJlbmRlcmJ1ZmZl
cikKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRlbGV0ZVJlbmRlcmJ1ZmZlcihQbGF0Zm9ybTNE
T2JqZWN0IHJlbmRlcmJ1ZmZlcikKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBn
bERlbGV0ZVJlbmRlcmJ1ZmZlcnNFWFQoMSwgJnJlbmRlcmJ1ZmZlcik7CiB9CiAKLXZvaWQgR3Jh
cGhpY3NDb250ZXh0M0Q6OmRlbGV0ZVNoYWRlcih1bnNpZ25lZCBzaGFkZXIpCit2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjpkZWxldGVTaGFkZXIoUGxhdGZvcm0zRE9iamVjdCBzaGFkZXIpCiB7CiAg
ICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgZ2xEZWxldGVTaGFkZXIoc2hhZGVyKTsKIH0K
IAotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGVsZXRlVGV4dHVyZSh1bnNpZ25lZCB0ZXh0dXJl
KQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGVsZXRlVGV4dHVyZShQbGF0Zm9ybTNET2JqZWN0
IHRleHR1cmUpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgZ2xEZWxldGVUZXh0
dXJlcygxLCAmdGV4dHVyZSk7CiB9CiAKLWludCBHcmFwaGljc0NvbnRleHQzRDo6c2l6ZUluQnl0
ZXMoaW50IHR5cGUpCit1aW50MzJfdCBHcmFwaGljc0NvbnRleHQzRDo6c2l6ZUluQnl0ZXMoR0Mz
RGVudW0gdHlwZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICAgICAgY2FzZSBHTF9CWVRF
OgpAQCAtMTQ2MCw3ICsxNDU5LDcgQEAgaW50IEdyYXBoaWNzQ29udGV4dDNEOjpzaXplSW5CeXRl
cyhpbnQgdAogICAgIH0KIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c3ludGhlc2l6ZUdM
RXJyb3IodW5zaWduZWQgbG9uZyBlcnJvcikKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnN5bnRo
ZXNpemVHTEVycm9yKEdDM0RlbnVtIGVycm9yKQogewogICAgIG1fc3ludGhldGljRXJyb3JzLmFk
ZChlcnJvcik7CiB9CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNz
Q29udGV4dDNEUXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
cXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAJKHJldmlzaW9uIDc0OTcwKQorKysgV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNjAzLDcgKzYwMyw3IEBAIEludFNpemUgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEludGVy
bmFsRnIKICAgICByZXR1cm4gSW50U2l6ZShtX2N1cnJlbnRXaWR0aCwgbV9jdXJyZW50SGVpZ2h0
KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YWN0aXZlVGV4dHVyZSh1bnNpZ25lZCBs
b25nIHRleHR1cmUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjphY3RpdmVUZXh0dXJlKEdDM0Rl
bnVtIHRleHR1cmUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQo
KTsKICAgICBtX2ludGVybmFsLT5hY3RpdmVUZXh0dXJlKHRleHR1cmUpOwpAQCAtNjE0LDEwICs2
MTQsMTAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YXR0YWNoU2hhZGVyKFBsYQogICAgIEFT
U0VSVChwcm9ncmFtKTsKICAgICBBU1NFUlQoc2hhZGVyKTsKICAgICBtX2ludGVybmFsLT5tX2ds
V2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmF0dGFjaFNoYWRlcigoR0x1
aW50KSBwcm9ncmFtLCAoR0x1aW50KSBzaGFkZXIpOworICAgIG1faW50ZXJuYWwtPmF0dGFjaFNo
YWRlcihwcm9ncmFtLCBzaGFkZXIpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRB
dHRhY2hlZFNoYWRlcnMoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBpbnQgbWF4Q291bnQsIGlu
dCogY291bnQsIHVuc2lnbmVkIGludCogc2hhZGVycykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6
OmdldEF0dGFjaGVkU2hhZGVycyhQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIEdDM0RzaXplaSBt
YXhDb3VudCwgR0MzRHNpemVpKiBjb3VudCwgUGxhdGZvcm0zRE9iamVjdCogc2hhZGVycykKIHsK
ICAgICBpZiAoIXByb2dyYW0pIHsKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoSU5WQUxJRF9W
QUxVRSk7CkBAIC02MjUsMTA4ICs2MjUsMTA4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6Omdl
dEF0dGFjaGVkU2hhZGUKICAgICB9CiAKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtl
Q3VycmVudCgpOwotICAgIGdldEF0dGFjaGVkU2hhZGVycygoR0x1aW50KSBwcm9ncmFtLCBtYXhD
b3VudCwgY291bnQsIHNoYWRlcnMpOworICAgIGdldEF0dGFjaGVkU2hhZGVycyhwcm9ncmFtLCBt
YXhDb3VudCwgY291bnQsIHNoYWRlcnMpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpi
aW5kQXR0cmliTG9jYXRpb24oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCB1bnNpZ25lZCBsb25n
IGluZGV4LCBjb25zdCBTdHJpbmcmIG5hbWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpiaW5k
QXR0cmliTG9jYXRpb24oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBHQzNEdWludCBpbmRleCwg
Y29uc3QgU3RyaW5nJiBuYW1lKQogewogICAgIEFTU0VSVChwcm9ncmFtKTsKICAgICBtX2ludGVy
bmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmJpbmRBdHRy
aWJMb2NhdGlvbigoR0x1aW50KSBwcm9ncmFtLCBpbmRleCwgbmFtZS51dGY4KCkuZGF0YSgpKTsK
KyAgICBtX2ludGVybmFsLT5iaW5kQXR0cmliTG9jYXRpb24ocHJvZ3JhbSwgaW5kZXgsIG5hbWUu
dXRmOCgpLmRhdGEoKSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRCdWZmZXIo
dW5zaWduZWQgbG9uZyB0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3QgYnVmZmVyKQordm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6YmluZEJ1ZmZlcihHQzNEZW51bSB0YXJnZXQsIFBsYXRmb3JtM0RPYmpl
Y3QgYnVmZmVyKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7
Ci0gICAgbV9pbnRlcm5hbC0+YmluZEJ1ZmZlcih0YXJnZXQsIChHTHVpbnQpIGJ1ZmZlcik7Cisg
ICAgbV9pbnRlcm5hbC0+YmluZEJ1ZmZlcih0YXJnZXQsIGJ1ZmZlcik7CiB9CiAKLXZvaWQgR3Jh
cGhpY3NDb250ZXh0M0Q6OmJpbmRGcmFtZWJ1ZmZlcih1bnNpZ25lZCBsb25nIHRhcmdldCwgUGxh
dGZvcm0zRE9iamVjdCBidWZmZXIpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpiaW5kRnJhbWVi
dWZmZXIoR0MzRGVudW0gdGFyZ2V0LCBQbGF0Zm9ybTNET2JqZWN0IGJ1ZmZlcikKIHsKICAgICBt
X2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPm1f
Y3VycmVudEZibyA9IGJ1ZmZlciA/IChHTHVpbnQpIGJ1ZmZlciA6IG1faW50ZXJuYWwtPm1fbWFp
bkZibzsKKyAgICBtX2ludGVybmFsLT5tX2N1cnJlbnRGYm8gPSBidWZmZXIgPyBidWZmZXIgOiBt
X2ludGVybmFsLT5tX21haW5GYm87CiAgICAgbV9pbnRlcm5hbC0+YmluZEZyYW1lYnVmZmVyKHRh
cmdldCwgbV9pbnRlcm5hbC0+bV9jdXJyZW50RmJvKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6YmluZFJlbmRlcmJ1ZmZlcih1bnNpZ25lZCBsb25nIHRhcmdldCwgUGxhdGZvcm0zRE9i
amVjdCByZW5kZXJidWZmZXIpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpiaW5kUmVuZGVyYnVm
ZmVyKEdDM0RlbnVtIHRhcmdldCwgUGxhdGZvcm0zRE9iamVjdCByZW5kZXJidWZmZXIpCiB7CiAg
ICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFs
LT5iaW5kUmVuZGVyYnVmZmVyKHRhcmdldCwgKEdMdWludCkgcmVuZGVyYnVmZmVyKTsKKyAgICBt
X2ludGVybmFsLT5iaW5kUmVuZGVyYnVmZmVyKHRhcmdldCwgcmVuZGVyYnVmZmVyKTsKIH0KIAot
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YmluZFRleHR1cmUodW5zaWduZWQgbG9uZyB0YXJnZXQs
IFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRU
ZXh0dXJlKEdDM0RlbnVtIHRhcmdldCwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlKQogewogICAg
IG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgZ2xCaW5kVGV4dHVy
ZSh0YXJnZXQsIChHTHVpbnQpIHRleHR1cmUpOworICAgIGdsQmluZFRleHR1cmUodGFyZ2V0LCB0
ZXh0dXJlKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YmxlbmRDb2xvcihkb3VibGUg
cmVkLCBkb3VibGUgZ3JlZW4sIGRvdWJsZSBibHVlLCBkb3VibGUgYWxwaGEpCit2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjpibGVuZENvbG9yKEdDM0RjbGFtcGYgcmVkLCBHQzNEY2xhbXBmIGdyZWVu
LCBHQzNEY2xhbXBmIGJsdWUsIEdDM0RjbGFtcGYgYWxwaGEpCiB7CiAgICAgbV9pbnRlcm5hbC0+
bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5ibGVuZENvbG9yKHN0
YXRpY19jYXN0PGZsb2F0PihyZWQpLCBzdGF0aWNfY2FzdDxmbG9hdD4oZ3JlZW4pLCBzdGF0aWNf
Y2FzdDxmbG9hdD4oYmx1ZSksIHN0YXRpY19jYXN0PGZsb2F0PihhbHBoYSkpOworICAgIG1faW50
ZXJuYWwtPmJsZW5kQ29sb3IocmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpOwogfQogCi12b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjpibGVuZEVxdWF0aW9uKHVuc2lnbmVkIGxvbmcgbW9kZSkKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OmJsZW5kRXF1YXRpb24oR0MzRGVudW0gbW9kZSkKIHsKICAgICBt
X2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwogICAgIG1faW50ZXJuYWwtPmJs
ZW5kRXF1YXRpb24obW9kZSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJsZW5kRXF1
YXRpb25TZXBhcmF0ZSh1bnNpZ25lZCBsb25nIG1vZGVSR0IsIHVuc2lnbmVkIGxvbmcgbW9kZUFs
cGhhKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YmxlbmRFcXVhdGlvblNlcGFyYXRlKEdDM0Rl
bnVtIG1vZGVSR0IsIEdDM0RlbnVtIG1vZGVBbHBoYSkKIHsKICAgICBtX2ludGVybmFsLT5tX2ds
V2lkZ2V0LT5tYWtlQ3VycmVudCgpOwogICAgIG1faW50ZXJuYWwtPmJsZW5kRXF1YXRpb25TZXBh
cmF0ZShtb2RlUkdCLCBtb2RlQWxwaGEpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpi
bGVuZEZ1bmModW5zaWduZWQgbG9uZyBzZmFjdG9yLCB1bnNpZ25lZCBsb25nIGRmYWN0b3IpCit2
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpibGVuZEZ1bmMoR0MzRGVudW0gc2ZhY3RvciwgR0MzRGVu
dW0gZGZhY3RvcikKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgp
OwogICAgIGdsQmxlbmRGdW5jKHNmYWN0b3IsIGRmYWN0b3IpOwogfSAgICAgICAKIAotdm9pZCBH
cmFwaGljc0NvbnRleHQzRDo6YmxlbmRGdW5jU2VwYXJhdGUodW5zaWduZWQgbG9uZyBzcmNSR0Is
IHVuc2lnbmVkIGxvbmcgZHN0UkdCLCB1bnNpZ25lZCBsb25nIHNyY0FscGhhLCB1bnNpZ25lZCBs
b25nIGRzdEFscGhhKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YmxlbmRGdW5jU2VwYXJhdGUo
R0MzRGVudW0gc3JjUkdCLCBHQzNEZW51bSBkc3RSR0IsIEdDM0RlbnVtIHNyY0FscGhhLCBHQzNE
ZW51bSBkc3RBbHBoYSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVu
dCgpOwogICAgIG1faW50ZXJuYWwtPmJsZW5kRnVuY1NlcGFyYXRlKHNyY1JHQiwgZHN0UkdCLCBz
cmNBbHBoYSwgZHN0QWxwaGEpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpidWZmZXJE
YXRhKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBpbnQgc2l6ZSwgdW5zaWduZWQgbG9uZyB1c2FnZSkK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJ1ZmZlckRhdGEoR0MzRGVudW0gdGFyZ2V0LCBHQzNE
c2l6ZWkgc2l6ZSwgR0MzRGVudW0gdXNhZ2UpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdl
dC0+bWFrZUN1cnJlbnQoKTsKICAgICBtX2ludGVybmFsLT5idWZmZXJEYXRhKHRhcmdldCwgc2l6
ZSwgLyogZGF0YSAqLyAwLCB1c2FnZSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJ1
ZmZlckRhdGEodW5zaWduZWQgbG9uZyB0YXJnZXQsIGludCBzaXplLCBjb25zdCB2b2lkKiBkYXRh
LCB1bnNpZ25lZCBsb25nIHVzYWdlKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YnVmZmVyRGF0
YShHQzNEZW51bSB0YXJnZXQsIEdDM0RzaXplaSBzaXplLCBjb25zdCBHQzNEdm9pZCogZGF0YSwg
R0MzRGVudW0gdXNhZ2UpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJl
bnQoKTsKICAgICBtX2ludGVybmFsLT5idWZmZXJEYXRhKHRhcmdldCwgc2l6ZSwgZGF0YSwgdXNh
Z2UpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpidWZmZXJTdWJEYXRhKHVuc2lnbmVk
IGxvbmcgdGFyZ2V0LCBsb25nIG9mZnNldCwgaW50IHNpemUsIGNvbnN0IHZvaWQqIGRhdGEpCit2
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpidWZmZXJTdWJEYXRhKEdDM0RlbnVtIHRhcmdldCwgR0Mz
RHNpemVpcHRyIG9mZnNldCwgR0MzRHNpemVpIHNpemUsIGNvbnN0IEdDM0R2b2lkKiBkYXRhKQog
ewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CiAgICAgbV9pbnRl
cm5hbC0+YnVmZmVyU3ViRGF0YSh0YXJnZXQsIG9mZnNldCwgc2l6ZSwgZGF0YSk7CiB9CiAKLXVu
c2lnbmVkIGxvbmcgR3JhcGhpY3NDb250ZXh0M0Q6OmNoZWNrRnJhbWVidWZmZXJTdGF0dXModW5z
aWduZWQgbG9uZyB0YXJnZXQpCitHQzNEZW51bSBHcmFwaGljc0NvbnRleHQzRDo6Y2hlY2tGcmFt
ZWJ1ZmZlclN0YXR1cyhHQzNEZW51bSB0YXJnZXQpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdp
ZGdldC0+bWFrZUN1cnJlbnQoKTsKICAgICByZXR1cm4gbV9pbnRlcm5hbC0+Y2hlY2tGcmFtZWJ1
ZmZlclN0YXR1cyh0YXJnZXQpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpjbGVhckNv
bG9yKGRvdWJsZSByLCBkb3VibGUgZywgZG91YmxlIGIsIGRvdWJsZSBhKQordm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6Y2xlYXJDb2xvcihHQzNEY2xhbXBmIHIsIEdDM0RjbGFtcGYgZywgR0MzRGNs
YW1wZiBiLCBHQzNEY2xhbXBmIGEpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFr
ZUN1cnJlbnQoKTsKLSAgICBnbENsZWFyQ29sb3Ioc3RhdGljX2Nhc3Q8ZmxvYXQ+KHIpLCBzdGF0
aWNfY2FzdDxmbG9hdD4oZyksIHN0YXRpY19jYXN0PGZsb2F0PihiKSwgc3RhdGljX2Nhc3Q8Zmxv
YXQ+KGEpKTsKKyAgICBnbENsZWFyQ29sb3IociwgZywgYiwgYSk7CiB9CiAKLXZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OmNsZWFyKHVuc2lnbmVkIGxvbmcgbWFzaykKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0M0Q6OmNsZWFyKEdDM0RiaXRmaWVsZCBtYXNrKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xX
aWRnZXQtPm1ha2VDdXJyZW50KCk7CiAgICAgZ2xDbGVhcihtYXNrKTsKIH0KIAotdm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6Y2xlYXJEZXB0aChkb3VibGUgZGVwdGgpCit2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjpjbGVhckRlcHRoKEdDM0RjbGFtcGYgZGVwdGgpCiB7CiAgICAgbV9pbnRlcm5hbC0+
bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKICNpZiBkZWZpbmVkKFFUX09QRU5HTF9FU18yKQpA
QCAtNzM2LDEzICs3MzYsMTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y2xlYXJEZXB0aChk
b3VibAogI2VuZGlmCiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNsZWFyU3RlbmNpbChs
b25nIHMpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpjbGVhclN0ZW5jaWwoR0MzRGludCBzKQog
ewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CiAgICAgZ2xDbGVh
clN0ZW5jaWwocyk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNvbG9yTWFzayhib29s
IHJlZCwgYm9vbCBncmVlbiwgYm9vbCBibHVlLCBib29sIGFscGhhKQordm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6Y29sb3JNYXNrKEdDM0Rib29sZWFuIHJlZCwgR0MzRGJvb2xlYW4gZ3JlZW4sIEdD
M0Rib29sZWFuIGJsdWUsIEdDM0Rib29sZWFuIGFscGhhKQogewogICAgIG1faW50ZXJuYWwtPm1f
Z2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CiAgICAgZ2xDb2xvck1hc2socmVkLCBncmVlbiwgYmx1
ZSwgYWxwaGEpOwpAQCAtNzUyLDQwICs3NTIsNDAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
Y29tcGlsZVNoYWRlcihQbAogewogICAgIEFTU0VSVChzaGFkZXIpOwogICAgIG1faW50ZXJuYWwt
Pm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+Y29tcGlsZVNoYWRl
cigoR0x1aW50KSBzaGFkZXIpOworICAgIG1faW50ZXJuYWwtPmNvbXBpbGVTaGFkZXIoc2hhZGVy
KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y29weVRleEltYWdlMkQodW5zaWduZWQg
bG9uZyB0YXJnZXQsIGxvbmcgbGV2ZWwsIHVuc2lnbmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQsIGxv
bmcgeCwgbG9uZyB5LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCwg
bG9uZyBib3JkZXIpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpjb3B5VGV4SW1hZ2UyRChHQzNE
ZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RlbnVtIGludGVybmFsZm9ybWF0LCBHQzNE
aW50IHgsIEdDM0RpbnQgeSwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNE
aW50IGJvcmRlcikKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgp
OwogICAgIGdsQ29weVRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHgs
IHksIHdpZHRoLCBoZWlnaHQsIGJvcmRlcik7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6
OmNvcHlUZXhTdWJJbWFnZTJEKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBsb25nIGxldmVsLCBsb25n
IHhvZmZzZXQsIGxvbmcgeW9mZnNldCwgbG9uZyB4LCBsb25nIHksIHVuc2lnbmVkIGxvbmcgd2lk
dGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0KQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y29weVRl
eFN1YkltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEaW50IHhvZmZz
ZXQsIEdDM0RpbnQgeW9mZnNldCwgR0MzRGludCB4LCBHQzNEaW50IHksIEdDM0RzaXplaSB3aWR0
aCwgR0MzRHNpemVpIGhlaWdodCkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtl
Q3VycmVudCgpOwogICAgIGdsQ29weVRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNl
dCwgeW9mZnNldCwgeCwgeSwgd2lkdGgsIGhlaWdodCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250
ZXh0M0Q6OmN1bGxGYWNlKHVuc2lnbmVkIGxvbmcgbW9kZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OmN1bGxGYWNlKEdDM0RlbnVtIG1vZGUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdl
dC0+bWFrZUN1cnJlbnQoKTsKICAgICBnbEN1bGxGYWNlKG1vZGUpOwogfQogCi12b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjpkZXB0aEZ1bmModW5zaWduZWQgbG9uZyBmdW5jKQordm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6ZGVwdGhGdW5jKEdDM0RlbnVtIGZ1bmMpCiB7CiAgICAgbV9pbnRlcm5hbC0+
bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKICAgICBnbERlcHRoRnVuYyhmdW5jKTsKIH0KIAot
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGVwdGhNYXNrKGJvb2wgZmxhZykKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OmRlcHRoTWFzayhHQzNEYm9vbGVhbiBmbGFnKQogewogICAgIG1faW50ZXJu
YWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CiAgICAgZ2xEZXB0aE1hc2soZmxhZyk7CiB9
CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRlcHRoUmFuZ2UoZG91YmxlIHpOZWFyLCBkb3Vi
bGUgekZhcikKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRlcHRoUmFuZ2UoR0MzRGNsYW1wZiB6
TmVhciwgR0MzRGNsYW1wZiB6RmFyKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1h
a2VDdXJyZW50KCk7CiAjaWYgZGVmaW5lZChRVF9PUEVOR0xfRVNfMikKQEAgLTgwMCw0MCArODAw
LDQwIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRldGFjaFNoYWRlcihQbGEKICAgICBBU1NF
UlQocHJvZ3JhbSk7CiAgICAgQVNTRVJUKHNoYWRlcik7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdp
ZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5kZXRhY2hTaGFkZXIoKEdMdWlu
dCkgcHJvZ3JhbSwgKEdMdWludCkgc2hhZGVyKTsKKyAgICBtX2ludGVybmFsLT5kZXRhY2hTaGFk
ZXIocHJvZ3JhbSwgc2hhZGVyKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGlzYWJs
ZSh1bnNpZ25lZCBsb25nIGNhcCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRpc2FibGUoR0Mz
RGVudW0gY2FwKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7
CiAgICAgZ2xEaXNhYmxlKGNhcCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRpc2Fi
bGVWZXJ0ZXhBdHRyaWJBcnJheSh1bnNpZ25lZCBsb25nIGluZGV4KQordm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6ZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KEdDM0R1aW50IGluZGV4KQogewogICAg
IG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CiAgICAgbV9pbnRlcm5hbC0+
ZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KGluZGV4KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6ZHJhd0FycmF5cyh1bnNpZ25lZCBsb25nIG1vZGUsIGxvbmcgZmlyc3QsIGxvbmcgY291
bnQpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkcmF3QXJyYXlzKEdDM0RlbnVtIG1vZGUsIEdD
M0RpbnQgZmlyc3QsIEdDM0RzaXplaSBjb3VudCkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lk
Z2V0LT5tYWtlQ3VycmVudCgpOwogICAgIGdsRHJhd0FycmF5cyhtb2RlLCBmaXJzdCwgY291bnQp
OwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkcmF3RWxlbWVudHModW5zaWduZWQgbG9u
ZyBtb2RlLCB1bnNpZ25lZCBsb25nIGNvdW50LCB1bnNpZ25lZCBsb25nIHR5cGUsIGxvbmcgb2Zm
c2V0KQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZHJhd0VsZW1lbnRzKEdDM0RlbnVtIG1vZGUs
IEdDM0RzaXplaSBjb3VudCwgR0MzRGVudW0gdHlwZSwgR0MzRHNpemVpcHRyIG9mZnNldCkKIHsK
ICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIGdsRHJhd0Vs
ZW1lbnRzKG1vZGUsIGNvdW50LCB0eXBlLCByZWludGVycHJldF9jYXN0PHZvaWQqPihzdGF0aWNf
Y2FzdDxpbnRwdHJfdD4ob2Zmc2V0KSkpOworICAgIGdsRHJhd0VsZW1lbnRzKG1vZGUsIGNvdW50
LCB0eXBlLCByZWludGVycHJldF9jYXN0PEdMdm9pZCo+KHN0YXRpY19jYXN0PGludHB0cl90Pihv
ZmZzZXQpKSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmVuYWJsZSh1bnNpZ25lZCBs
b25nIGNhcCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmVuYWJsZShHQzNEZW51bSBjYXApCiB7
CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKICAgICBnbEVuYWJs
ZShjYXApOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjplbmFibGVWZXJ0ZXhBdHRyaWJB
cnJheSh1bnNpZ25lZCBsb25nIGluZGV4KQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZW5hYmxl
VmVydGV4QXR0cmliQXJyYXkoR0MzRHVpbnQgaW5kZXgpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9n
bFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKICAgICBtX2ludGVybmFsLT5lbmFibGVWZXJ0ZXhBdHRy
aWJBcnJheShpbmRleCk7CkBAIC04NTEsMzEgKzg1MSwzMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjpmbHVzaCgpCiAgICAgZ2xGbHVzaCgpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNE
OjpmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcih1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQg
bG9uZyBhdHRhY2htZW50LCB1bnNpZ25lZCBsb25nIHJlbmRlcmJ1ZmZlcnRhcmdldCwgUGxhdGZv
cm0zRE9iamVjdCBidWZmZXIpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpmcmFtZWJ1ZmZlclJl
bmRlcmJ1ZmZlcihHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIGF0dGFjaG1lbnQsIEdDM0RlbnVt
IHJlbmRlcmJ1ZmZlcnRhcmdldCwgUGxhdGZvcm0zRE9iamVjdCBidWZmZXIpCiB7CiAgICAgbV9p
bnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5mcmFt
ZWJ1ZmZlclJlbmRlcmJ1ZmZlcih0YXJnZXQsIGF0dGFjaG1lbnQsIHJlbmRlcmJ1ZmZlcnRhcmdl
dCwgKEdMdWludCkgYnVmZmVyKTsKKyAgICBtX2ludGVybmFsLT5mcmFtZWJ1ZmZlclJlbmRlcmJ1
ZmZlcih0YXJnZXQsIGF0dGFjaG1lbnQsIHJlbmRlcmJ1ZmZlcnRhcmdldCwgYnVmZmVyKTsKIH0K
IAotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZnJhbWVidWZmZXJUZXh0dXJlMkQodW5zaWduZWQg
bG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgYXR0YWNobWVudCwgdW5zaWduZWQgbG9uZyB0ZXh0
YXJnZXQsIFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZSwgbG9uZyBsZXZlbCkKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OmZyYW1lYnVmZmVyVGV4dHVyZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGVu
dW0gYXR0YWNobWVudCwgR0MzRGVudW0gdGV4dGFyZ2V0LCBQbGF0Zm9ybTNET2JqZWN0IHRleHR1
cmUsIEdDM0RpbnQgbGV2ZWwpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1
cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5mcmFtZWJ1ZmZlclRleHR1cmUyRCh0YXJnZXQsIGF0
dGFjaG1lbnQsIHRleHRhcmdldCwgKEdMdWludCkgdGV4dHVyZSwgbGV2ZWwpOworICAgIG1faW50
ZXJuYWwtPmZyYW1lYnVmZmVyVGV4dHVyZTJEKHRhcmdldCwgYXR0YWNobWVudCwgdGV4dGFyZ2V0
LCB0ZXh0dXJlLCBsZXZlbCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmZyb250RmFj
ZSh1bnNpZ25lZCBsb25nIG1vZGUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpmcm9udEZhY2Uo
R0MzRGVudW0gbW9kZSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVu
dCgpOwogICAgIGdsRnJvbnRGYWNlKG1vZGUpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNE
OjpnZW5lcmF0ZU1pcG1hcCh1bnNpZ25lZCBsb25nIHRhcmdldCkKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0M0Q6OmdlbmVyYXRlTWlwbWFwKEdDM0RlbnVtIHRhcmdldCkKIHsKICAgICBtX2ludGVybmFs
LT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwogICAgIG1faW50ZXJuYWwtPmdlbmVyYXRlTWlw
bWFwKHRhcmdldCk7CiB9CiAKLWJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEFjdGl2ZUF0dHJp
YihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIHVuc2lnbmVkIGxvbmcgaW5kZXgsIEFjdGl2ZUlu
Zm8mIGluZm8pCitib29sIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRBY3RpdmVBdHRyaWIoUGxhdGZv
cm0zRE9iamVjdCBwcm9ncmFtLCBHQzNEdWludCBpbmRleCwgQWN0aXZlSW5mbyYgaW5mbykKIHsK
ICAgICBpZiAoIXByb2dyYW0pIHsKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoSU5WQUxJRF9W
QUxVRSk7CkBAIC04ODQsMTUgKzg4NCwxNSBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRB
Y3RpdmVBdHRyaWIoCiAKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgp
OwogCi0gICAgR0xpbnQgbWF4TGVuZ3RoOwotICAgIG1faW50ZXJuYWwtPmdldFByb2dyYW1pdihz
dGF0aWNfY2FzdDxHTHVpbnQ+KHByb2dyYW0pLCBHcmFwaGljc0NvbnRleHQzRDo6QUNUSVZFX0FU
VFJJQlVURV9NQVhfTEVOR1RILCAmbWF4TGVuZ3RoKTsKKyAgICBHTGludCBtYXhMZW5ndGggPSAw
OworICAgIG1faW50ZXJuYWwtPmdldFByb2dyYW1pdihwcm9ncmFtLCBHcmFwaGljc0NvbnRleHQz
RDo6QUNUSVZFX0FUVFJJQlVURV9NQVhfTEVOR1RILCAmbWF4TGVuZ3RoKTsKIAogICAgIEdMY2hh
ciogbmFtZSA9IChHTGNoYXIqKSBmYXN0TWFsbG9jKG1heExlbmd0aCk7Ci0gICAgR0xzaXplaSBu
YW1lTGVuZ3RoOwotICAgIEdMaW50IHNpemU7Ci0gICAgR0xlbnVtIHR5cGU7CisgICAgR0xzaXpl
aSBuYW1lTGVuZ3RoID0gMDsKKyAgICBHTGludCBzaXplID0gMDsKKyAgICBHTGVudW0gdHlwZSA9
IDA7CiAKLSAgICBtX2ludGVybmFsLT5nZXRBY3RpdmVBdHRyaWIoc3RhdGljX2Nhc3Q8R0x1aW50
Pihwcm9ncmFtKSwgaW5kZXgsIG1heExlbmd0aCwgJm5hbWVMZW5ndGgsICZzaXplLCAmdHlwZSwg
bmFtZSk7CisgICAgbV9pbnRlcm5hbC0+Z2V0QWN0aXZlQXR0cmliKHByb2dyYW0sIGluZGV4LCBt
YXhMZW5ndGgsICZuYW1lTGVuZ3RoLCAmc2l6ZSwgJnR5cGUsIG5hbWUpOwogCiAgICAgaWYgKCFu
YW1lTGVuZ3RoKSB7CiAgICAgICAgIGZhc3RGcmVlKG5hbWUpOwpAQCAtOTA3LDcgKzkwNyw3IEBA
IGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEFjdGl2ZUF0dHJpYigKICAgICByZXR1cm4gdHJ1
ZTsKIH0KICAgICAKLWJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEFjdGl2ZVVuaWZvcm0oUGxh
dGZvcm0zRE9iamVjdCBwcm9ncmFtLCB1bnNpZ25lZCBsb25nIGluZGV4LCBBY3RpdmVJbmZvJiBp
bmZvKQorYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0QWN0aXZlVW5pZm9ybShQbGF0Zm9ybTNE
T2JqZWN0IHByb2dyYW0sIEdDM0R1aW50IGluZGV4LCBBY3RpdmVJbmZvJiBpbmZvKQogewogICAg
IGlmICghcHJvZ3JhbSkgewogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihJTlZBTElEX1ZBTFVF
KTsKQEAgLTkxNiwxMyArOTE2LDEzIEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEFjdGl2
ZVVuaWZvcm0KIAogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CiAK
LSAgICBHTGludCBtYXhMZW5ndGg7CisgICAgR0xpbnQgbWF4TGVuZ3RoID0gMDsKICAgICBtX2lu
dGVybmFsLT5nZXRQcm9ncmFtaXYoc3RhdGljX2Nhc3Q8R0x1aW50Pihwcm9ncmFtKSwgR3JhcGhp
Y3NDb250ZXh0M0Q6OkFDVElWRV9VTklGT1JNX01BWF9MRU5HVEgsICZtYXhMZW5ndGgpOwogCiAg
ICAgR0xjaGFyKiBuYW1lID0gKEdMY2hhciopIGZhc3RNYWxsb2MobWF4TGVuZ3RoKTsKLSAgICBH
THNpemVpIG5hbWVMZW5ndGg7Ci0gICAgR0xpbnQgc2l6ZTsKLSAgICBHTGVudW0gdHlwZTsKKyAg
ICBHTHNpemVpIG5hbWVMZW5ndGggPSAwOworICAgIEdMaW50IHNpemUgPSAwOworICAgIEdMZW51
bSB0eXBlID0gMDsKIAogICAgIG1faW50ZXJuYWwtPmdldEFjdGl2ZVVuaWZvcm0oc3RhdGljX2Nh
c3Q8R0x1aW50Pihwcm9ncmFtKSwgaW5kZXgsIG1heExlbmd0aCwgJm5hbWVMZW5ndGgsICZzaXpl
LCAmdHlwZSwgbmFtZSk7CiAKQEAgLTk0NSw3ICs5NDUsNyBAQCBpbnQgR3JhcGhpY3NDb250ZXh0
M0Q6OmdldEF0dHJpYkxvY2F0aW9uCiAgICAgICAgIHJldHVybiAtMTsKICAgICAKICAgICBtX2lu
dGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIHJldHVybiBtX2ludGVybmFs
LT5nZXRBdHRyaWJMb2NhdGlvbigoR0x1aW50KSBwcm9ncmFtLCBuYW1lLnV0ZjgoKS5kYXRhKCkp
OworICAgIHJldHVybiBtX2ludGVybmFsLT5nZXRBdHRyaWJMb2NhdGlvbihwcm9ncmFtLCBuYW1l
LnV0ZjgoKS5kYXRhKCkpOwogfQogCiBHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBHcmFw
aGljc0NvbnRleHQzRDo6Z2V0Q29udGV4dEF0dHJpYnV0ZXMoKQpAQCAtOTUzLDExICs5NTMsMTEg
QEAgR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgR3JhcGhpY3NDbwogICAgIHJldHVybiBt
X2ludGVybmFsLT5tX2F0dHJzOwogfQogCi11bnNpZ25lZCBsb25nIEdyYXBoaWNzQ29udGV4dDNE
OjpnZXRFcnJvcigpCitHQzNEZW51bSBHcmFwaGljc0NvbnRleHQzRDo6Z2V0RXJyb3IoKQogewog
ICAgIGlmIChtX2ludGVybmFsLT5tX3N5bnRoZXRpY0Vycm9ycy5zaXplKCkgPiAwKSB7Ci0gICAg
ICAgIExpc3RIYXNoU2V0PHVuc2lnbmVkIGxvbmc+OjppdGVyYXRvciBpdGVyID0gbV9pbnRlcm5h
bC0+bV9zeW50aGV0aWNFcnJvcnMuYmVnaW4oKTsKLSAgICAgICAgdW5zaWduZWQgbG9uZyBlcnIg
PSAqaXRlcjsKKyAgICAgICAgTGlzdEhhc2hTZXQ8R0MzRGVudW0+OjppdGVyYXRvciBpdGVyID0g
bV9pbnRlcm5hbC0+bV9zeW50aGV0aWNFcnJvcnMuYmVnaW4oKTsKKyAgICAgICAgR0MzRGVudW0g
ZXJyID0gKml0ZXI7CiAgICAgICAgIG1faW50ZXJuYWwtPm1fc3ludGhldGljRXJyb3JzLnJlbW92
ZShpdGVyKTsKICAgICAgICAgcmV0dXJuIGVycjsKICAgICB9CkBAIC05NjYsNzYgKzk2Niw3NiBA
QCB1bnNpZ25lZCBsb25nIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRFcnJvCiAgICAgcmV0dXJuIGds
R2V0RXJyb3IoKTsKIH0KIAotU3RyaW5nIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRTdHJpbmcodW5z
aWduZWQgbG9uZyBuYW1lKQorU3RyaW5nIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRTdHJpbmcoR0Mz
RGVudW0gbmFtZSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgp
OwogICAgIHJldHVybiBTdHJpbmcoKGNvbnN0IGNoYXIqKSBnbEdldFN0cmluZyhuYW1lKSk7CiB9
CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmhpbnQodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVu
c2lnbmVkIGxvbmcgbW9kZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmhpbnQoR0MzRGVudW0g
dGFyZ2V0LCBHQzNEZW51bSBtb2RlKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1h
a2VDdXJyZW50KCk7CiAgICAgZ2xIaW50KHRhcmdldCwgbW9kZSk7CiB9CiAKLWJvb2wgR3JhcGhp
Y3NDb250ZXh0M0Q6OmlzQnVmZmVyKFBsYXRmb3JtM0RPYmplY3QgYnVmZmVyKQorR0MzRGJvb2xl
YW4gR3JhcGhpY3NDb250ZXh0M0Q6OmlzQnVmZmVyKFBsYXRmb3JtM0RPYmplY3QgYnVmZmVyKQog
ewogICAgIGlmICghYnVmZmVyKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVy
biBHTF9GQUxTRTsKICAgICAKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVu
dCgpOwotICAgIHJldHVybiBtX2ludGVybmFsLT5pc0J1ZmZlcigoR0x1aW50KSBidWZmZXIpOwor
ICAgIHJldHVybiBtX2ludGVybmFsLT5pc0J1ZmZlcihidWZmZXIpOwogfQogCi1ib29sIEdyYXBo
aWNzQ29udGV4dDNEOjppc0VuYWJsZWQodW5zaWduZWQgbG9uZyBjYXApCitHQzNEYm9vbGVhbiBH
cmFwaGljc0NvbnRleHQzRDo6aXNFbmFibGVkKEdDM0RlbnVtIGNhcCkKIHsKICAgICBtX2ludGVy
bmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwogICAgIHJldHVybiBnbElzRW5hYmxlZChj
YXApOwogfQogCi1ib29sIEdyYXBoaWNzQ29udGV4dDNEOjppc0ZyYW1lYnVmZmVyKFBsYXRmb3Jt
M0RPYmplY3QgZnJhbWVidWZmZXIpCitHQzNEYm9vbGVhbiBHcmFwaGljc0NvbnRleHQzRDo6aXNG
cmFtZWJ1ZmZlcihQbGF0Zm9ybTNET2JqZWN0IGZyYW1lYnVmZmVyKQogewogICAgIGlmICghZnJh
bWVidWZmZXIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIEdMX0ZBTFNF
OwogICAgIAogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAg
cmV0dXJuIG1faW50ZXJuYWwtPmlzRnJhbWVidWZmZXIoKEdMdWludCkgZnJhbWVidWZmZXIpOwor
ICAgIHJldHVybiBtX2ludGVybmFsLT5pc0ZyYW1lYnVmZmVyKGZyYW1lYnVmZmVyKTsKIH0KIAot
Ym9vbCBHcmFwaGljc0NvbnRleHQzRDo6aXNQcm9ncmFtKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3Jh
bSkKK0dDM0Rib29sZWFuIEdyYXBoaWNzQ29udGV4dDNEOjppc1Byb2dyYW0oUGxhdGZvcm0zRE9i
amVjdCBwcm9ncmFtKQogewogICAgIGlmICghcHJvZ3JhbSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICByZXR1cm4gR0xfRkFMU0U7CiAgICAgCiAgICAgbV9pbnRlcm5hbC0+bV9nbFdp
ZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICByZXR1cm4gbV9pbnRlcm5hbC0+aXNQcm9ncmFtKChH
THVpbnQpIHByb2dyYW0pOworICAgIHJldHVybiBtX2ludGVybmFsLT5pc1Byb2dyYW0ocHJvZ3Jh
bSk7CiB9CiAKLWJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmlzUmVuZGVyYnVmZmVyKFBsYXRmb3Jt
M0RPYmplY3QgcmVuZGVyYnVmZmVyKQorR0MzRGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0M0Q6Omlz
UmVuZGVyYnVmZmVyKFBsYXRmb3JtM0RPYmplY3QgcmVuZGVyYnVmZmVyKQogewogICAgIGlmICgh
cmVuZGVyYnVmZmVyKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBHTF9G
QUxTRTsKICAgICAKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwot
ICAgIHJldHVybiBtX2ludGVybmFsLT5pc1JlbmRlcmJ1ZmZlcigoR0x1aW50KSByZW5kZXJidWZm
ZXIpOworICAgIHJldHVybiBtX2ludGVybmFsLT5pc1JlbmRlcmJ1ZmZlcihyZW5kZXJidWZmZXIp
OwogfQogCi1ib29sIEdyYXBoaWNzQ29udGV4dDNEOjppc1NoYWRlcihQbGF0Zm9ybTNET2JqZWN0
IHNoYWRlcikKK0dDM0Rib29sZWFuIEdyYXBoaWNzQ29udGV4dDNEOjppc1NoYWRlcihQbGF0Zm9y
bTNET2JqZWN0IHNoYWRlcikKIHsKICAgICBpZiAoIXNoYWRlcikKLSAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICByZXR1cm4gR0xfRkFMU0U7CiAgICAgCiAgICAgbV9pbnRlcm5hbC0+bV9n
bFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICByZXR1cm4gbV9pbnRlcm5hbC0+aXNTaGFkZXIo
KEdMdWludCkgc2hhZGVyKTsKKyAgICByZXR1cm4gbV9pbnRlcm5hbC0+aXNTaGFkZXIoc2hhZGVy
KTsKIH0KIAotYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6aXNUZXh0dXJlKFBsYXRmb3JtM0RPYmpl
Y3QgdGV4dHVyZSkKK0dDM0Rib29sZWFuIEdyYXBoaWNzQ29udGV4dDNEOjppc1RleHR1cmUoUGxh
dGZvcm0zRE9iamVjdCB0ZXh0dXJlKQogewogICAgIGlmICghdGV4dHVyZSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gR0xfRkFMU0U7CiAgICAgCiAgICAgbV9pbnRlcm5h
bC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICByZXR1cm4gZ2xJc1RleHR1cmUoKEdM
dWludCkgdGV4dHVyZSk7CisgICAgcmV0dXJuIGdsSXNUZXh0dXJlKHRleHR1cmUpOwogfQogCiB2
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpsaW5lV2lkdGgoZG91YmxlIHdpZHRoKQpAQCAtMTA0OCwy
OSArMTA0OCwyOSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpsaW5rUHJvZ3JhbShQbGF0CiB7
CiAgICAgQVNTRVJUKHByb2dyYW0pOwogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VD
dXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+bGlua1Byb2dyYW0oKEdMdWludCkgcHJvZ3JhbSk7
CisgICAgbV9pbnRlcm5hbC0+bGlua1Byb2dyYW0ocHJvZ3JhbSk7CiB9CiAKLXZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OnBpeGVsU3RvcmVpKHVuc2lnbmVkIGxvbmcgcGFyYW1OYW1lLCBsb25nIHBh
cmFtKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cGl4ZWxTdG9yZWkoR0MzRGVudW0gcGFyYW1O
YW1lLCBHQzNEaW50IHBhcmFtKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VD
dXJyZW50KCk7CiAgICAgZ2xQaXhlbFN0b3JlaShwYXJhbU5hbWUsIHBhcmFtKTsKIH0KIAotdm9p
ZCBHcmFwaGljc0NvbnRleHQzRDo6cG9seWdvbk9mZnNldChkb3VibGUgZmFjdG9yLCBkb3VibGUg
dW5pdHMpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpwb2x5Z29uT2Zmc2V0KEdDM0RmbG9hdCBm
YWN0b3IsIEdDM0RmbG9hdCB1bml0cykKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5t
YWtlQ3VycmVudCgpOwotICAgIGdsUG9seWdvbk9mZnNldChzdGF0aWNfY2FzdDxmbG9hdD4oZmFj
dG9yKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHVuaXRzKSk7CisgICAgZ2xQb2x5Z29uT2Zmc2V0KGZh
Y3RvciwgdW5pdHMpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpyZWFkUGl4ZWxzKGxv
bmcgeCwgbG9uZyB5LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCwg
dW5zaWduZWQgbG9uZyBmb3JtYXQsIHVuc2lnbmVkIGxvbmcgdHlwZSwgdm9pZCogZGF0YSkKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OnJlYWRQaXhlbHMoR0MzRGludCB4LCBHQzNEaW50IHksIEdD
M0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51
bSB0eXBlLCBHQzNEdm9pZCogZGF0YSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5t
YWtlQ3VycmVudCgpOwogICAgIAogICAgIGlmICh0eXBlICE9IEdyYXBoaWNzQ29udGV4dDNEOjpV
TlNJR05FRF9CWVRFIHx8IGZvcm1hdCAhPSBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSkKICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAKLSAgICBnbFJlYWRQaXhlbHMoeCwgeSwgd2lkdGgsIGhlaWdo
dCwgZm9ybWF0LCB0eXBlLCAoR0x2b2lkKikgZGF0YSk7CisgICAgZ2xSZWFkUGl4ZWxzKHgsIHks
IHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgZGF0YSk7CiB9CiAKIHZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OnJlbGVhc2VTaGFkZXJDb21waWxlcigpCkBAIC0xMDc5LDE5ICsxMDc5LDE5IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnJlbGVhc2VTaGFkZXJDb20KICAgICBub3RJbXBsZW1l
bnRlZCgpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpyZW5kZXJidWZmZXJTdG9yYWdl
KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIGludGVybmFsZm9ybWF0LCB1bnNp
Z25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCkKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0M0Q6OnJlbmRlcmJ1ZmZlclN0b3JhZ2UoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBpbnRl
cm5hbGZvcm1hdCwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0KQogewogICAgIG1f
aW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CiAgICAgbV9pbnRlcm5hbC0+cmVu
ZGVyYnVmZmVyU3RvcmFnZSh0YXJnZXQsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsK
IH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c2FtcGxlQ292ZXJhZ2UoZG91YmxlIHZhbHVl
LCBib29sIGludmVydCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnNhbXBsZUNvdmVyYWdlKEdD
M0RjbGFtcGYgdmFsdWUsIEdDM0Rib29sZWFuIGludmVydCkKIHsKICAgICBtX2ludGVybmFsLT5t
X2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnNhbXBsZUNvdmVyYWdl
KHN0YXRpY19jYXN0PGZsb2F0Pih2YWx1ZSksIGludmVydCk7CisgICAgbV9pbnRlcm5hbC0+c2Ft
cGxlQ292ZXJhZ2UodmFsdWUsIGludmVydCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6
OnNjaXNzb3IobG9uZyB4LCBsb25nIHksIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxv
bmcgaGVpZ2h0KQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c2Npc3NvcihHQzNEaW50IHgsIEdD
M0RpbnQgeSwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0KQogewogICAgIG1faW50
ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CiAgICAgZ2xTY2lzc29yKHgsIHksIHdp
ZHRoLCBoZWlnaHQpOwpAQCAtMTExNywxNjMgKzExMTcsMTYzIEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0M0Q6OnNoYWRlclNvdXJjZShQbGEKICAgICBtX2ludGVybmFsLT5zaGFkZXJTb3VyY2UoKEdM
dWludCkgc2hhZGVyLCAvKiBjb3VudCAqLyAxLCAmZGF0YSwgJmxlbmd0aCk7CiB9CiAKLXZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OnN0ZW5jaWxGdW5jKHVuc2lnbmVkIGxvbmcgZnVuYywgbG9uZyBy
ZWYsIHVuc2lnbmVkIGxvbmcgbWFzaykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnN0ZW5jaWxG
dW5jKEdDM0RlbnVtIGZ1bmMsIEdDM0RpbnQgcmVmLCBHQzNEdWludCBtYXNrKQogewogICAgIG1f
aW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CiAgICAgZ2xTdGVuY2lsRnVuYyhm
dW5jLCByZWYsIG1hc2spOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpzdGVuY2lsRnVu
Y1NlcGFyYXRlKHVuc2lnbmVkIGxvbmcgZmFjZSwgdW5zaWduZWQgbG9uZyBmdW5jLCBsb25nIHJl
ZiwgdW5zaWduZWQgbG9uZyBtYXNrKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c3RlbmNpbEZ1
bmNTZXBhcmF0ZShHQzNEZW51bSBmYWNlLCBHQzNEZW51bSBmdW5jLCBHQzNEaW50IHJlZiwgR0Mz
RHVpbnQgbWFzaykKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgp
OwogICAgIG1faW50ZXJuYWwtPnN0ZW5jaWxGdW5jU2VwYXJhdGUoZmFjZSwgZnVuYywgcmVmLCBt
YXNrKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c3RlbmNpbE1hc2sodW5zaWduZWQg
bG9uZyBtYXNrKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c3RlbmNpbE1hc2soR0MzRHVpbnQg
bWFzaykKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwogICAg
IGdsU3RlbmNpbE1hc2sobWFzayk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnN0ZW5j
aWxNYXNrU2VwYXJhdGUodW5zaWduZWQgbG9uZyBmYWNlLCB1bnNpZ25lZCBsb25nIG1hc2spCit2
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpzdGVuY2lsTWFza1NlcGFyYXRlKEdDM0RlbnVtIGZhY2Us
IEdDM0R1aW50IG1hc2spCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJl
bnQoKTsKICAgICBtX2ludGVybmFsLT5zdGVuY2lsTWFza1NlcGFyYXRlKGZhY2UsIG1hc2spOwog
fQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpzdGVuY2lsT3AodW5zaWduZWQgbG9uZyBmYWls
LCB1bnNpZ25lZCBsb25nIHpmYWlsLCB1bnNpZ25lZCBsb25nIHpwYXNzKQordm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6c3RlbmNpbE9wKEdDM0RlbnVtIGZhaWwsIEdDM0RlbnVtIHpmYWlsLCBHQzNE
ZW51bSB6cGFzcykKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgp
OwogICAgIGdsU3RlbmNpbE9wKGZhaWwsIHpmYWlsLCB6cGFzcyk7CiB9CiAKLXZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OnN0ZW5jaWxPcFNlcGFyYXRlKHVuc2lnbmVkIGxvbmcgZmFjZSwgdW5zaWdu
ZWQgbG9uZyBmYWlsLCB1bnNpZ25lZCBsb25nIHpmYWlsLCB1bnNpZ25lZCBsb25nIHpwYXNzKQor
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c3RlbmNpbE9wU2VwYXJhdGUoR0MzRGVudW0gZmFjZSwg
R0MzRGVudW0gZmFpbCwgR0MzRGVudW0gemZhaWwsIEdDM0RlbnVtIHpwYXNzKQogewogICAgIG1f
aW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CiAgICAgbV9pbnRlcm5hbC0+c3Rl
bmNpbE9wU2VwYXJhdGUoZmFjZSwgZmFpbCwgemZhaWwsIHpwYXNzKTsKIH0KIAotdm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6dGV4UGFyYW1ldGVyZih1bnNpZ25lZCB0YXJnZXQsIHVuc2lnbmVkIHBh
cmFtTmFtZSwgZmxvYXQgdmFsdWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp0ZXhQYXJhbWV0
ZXJmKEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEZmxvYXQgdmFsdWUp
CiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBnbFRl
eFBhcmFtZXRlcmYodGFyZ2V0LCBwYXJhbU5hbWUsIHN0YXRpY19jYXN0PGZsb2F0Pih2YWx1ZSkp
OworICAgIGdsVGV4UGFyYW1ldGVyZih0YXJnZXQsIHBhcmFtTmFtZSwgdmFsdWUpOwogfQogCi12
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp0ZXhQYXJhbWV0ZXJpKHVuc2lnbmVkIHRhcmdldCwgdW5z
aWduZWQgcGFyYW1OYW1lLCBpbnQgdmFsdWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp0ZXhQ
YXJhbWV0ZXJpKEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEaW50IHZh
bHVlKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAg
Z2xUZXhQYXJhbWV0ZXJpKHRhcmdldCwgcGFyYW1OYW1lLCBzdGF0aWNfY2FzdDxmbG9hdD4odmFs
dWUpKTsKKyAgICBnbFRleFBhcmFtZXRlcmkodGFyZ2V0LCBwYXJhbU5hbWUsIHZhbHVlKTsKIH0K
IAotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTFmKGxvbmcgbG9jYXRpb24sIGZsb2F0
IHYwKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTFmKEdDM0RpbnQgbG9jYXRpb24s
IEdDM0RmbG9hdCB2MCkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVu
dCgpOwogICAgIG1faW50ZXJuYWwtPnVuaWZvcm0xZihsb2NhdGlvbiwgdjApOwogfQogCi12b2lk
IEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMWZ2KGxvbmcgbG9jYXRpb24sIGZsb2F0KiBhcnJh
eSwgaW50IHNpemUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMWZ2KEdDM0RpbnQg
bG9jYXRpb24sIEdDM0RmbG9hdCogYXJyYXksIEdDM0RzaXplaSBzaXplKQogewogICAgIG1faW50
ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CiAgICAgbV9pbnRlcm5hbC0+dW5pZm9y
bTFmdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNE
Ojp1bmlmb3JtMmYobG9uZyBsb2NhdGlvbiwgZmxvYXQgdjAsIGZsb2F0IHYxKQordm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6dW5pZm9ybTJmKEdDM0RpbnQgbG9jYXRpb24sIEdDM0RmbG9hdCB2MCwg
R0MzRGZsb2F0IHYxKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50
KCk7CiAgICAgbV9pbnRlcm5hbC0+dW5pZm9ybTJmKGxvY2F0aW9uLCB2MCwgdjEpOwogfQogCi12
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMmZ2KGxvbmcgbG9jYXRpb24sIGZsb2F0KiBh
cnJheSwgaW50IHNpemUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMmZ2KEdDM0Rp
bnQgbG9jYXRpb24sIEdDM0RmbG9hdCogYXJyYXksIEdDM0RzaXplaSBzaXplKQogewogICAgIG1f
aW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CiAgICAgbV9pbnRlcm5hbC0+dW5p
Zm9ybTJmdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjp1bmlmb3JtM2YobG9uZyBsb2NhdGlvbiwgZmxvYXQgdjAsIGZsb2F0IHYxLCBmbG9hdCB2
MikKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0zZihHQzNEaW50IGxvY2F0aW9uLCBH
QzNEZmxvYXQgdjAsIEdDM0RmbG9hdCB2MSwgR0MzRGZsb2F0IHYyKQogewogICAgIG1faW50ZXJu
YWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CiAgICAgbV9pbnRlcm5hbC0+dW5pZm9ybTNm
KGxvY2F0aW9uLCB2MCwgdjEsIHYyKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5p
Zm9ybTNmdihsb25nIGxvY2F0aW9uLCBmbG9hdCogYXJyYXksIGludCBzaXplKQordm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6dW5pZm9ybTNmdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQqIGFy
cmF5LCBHQzNEc2l6ZWkgc2l6ZSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtl
Q3VycmVudCgpOwogICAgIG1faW50ZXJuYWwtPnVuaWZvcm0zZnYobG9jYXRpb24sIHNpemUsIGFy
cmF5KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTRmKGxvbmcgbG9jYXRp
b24sIGZsb2F0IHYwLCBmbG9hdCB2MSwgZmxvYXQgdjIsIGZsb2F0IHYzKQordm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6dW5pZm9ybTRmKEdDM0RpbnQgbG9jYXRpb24sIEdDM0RmbG9hdCB2MCwgR0Mz
RGZsb2F0IHYxLCBHQzNEZmxvYXQgdjIsIEdDM0RmbG9hdCB2MykKIHsKICAgICBtX2ludGVybmFs
LT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwogICAgIG1faW50ZXJuYWwtPnVuaWZvcm00Zihs
b2NhdGlvbiwgdjAsIHYxLCB2MiwgdjMpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1
bmlmb3JtNGZ2KGxvbmcgbG9jYXRpb24sIGZsb2F0KiBhcnJheSwgaW50IHNpemUpCit2b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtNGZ2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RmbG9hdCog
YXJyYXksIEdDM0RzaXplaSBzaXplKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1h
a2VDdXJyZW50KCk7CiAgICAgbV9pbnRlcm5hbC0+dW5pZm9ybTRmdihsb2NhdGlvbiwgc2l6ZSwg
YXJyYXkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMWkobG9uZyBsb2Nh
dGlvbiwgaW50IHYwKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTFpKEdDM0RpbnQg
bG9jYXRpb24sIEdDM0RpbnQgdjApCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFr
ZUN1cnJlbnQoKTsKICAgICBtX2ludGVybmFsLT51bmlmb3JtMWkobG9jYXRpb24sIHYwKTsKIH0K
IAotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTFpdihsb25nIGxvY2F0aW9uLCBpbnQq
IGFycmF5LCBpbnQgc2l6ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0xaXYoR0Mz
RGludCBsb2NhdGlvbiwgR0MzRGludCogYXJyYXksIEdDM0RzaXplaSBzaXplKQogewogICAgIG1f
aW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CiAgICAgbV9pbnRlcm5hbC0+dW5p
Zm9ybTFpdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjp1bmlmb3JtMmkobG9uZyBsb2NhdGlvbiwgaW50IHYwLCBpbnQgdjEpCit2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjp1bmlmb3JtMmkoR0MzRGludCBsb2NhdGlvbiwgR0MzRGludCB2MCwgR0Mz
RGludCB2MSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwog
ICAgIG1faW50ZXJuYWwtPnVuaWZvcm0yaShsb2NhdGlvbiwgdjAsIHYxKTsKIH0KIAotdm9pZCBH
cmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTJpdihsb25nIGxvY2F0aW9uLCBpbnQqIGFycmF5LCBp
bnQgc2l6ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0yaXYoR0MzRGludCBsb2Nh
dGlvbiwgR0MzRGludCogYXJyYXksIEdDM0RzaXplaSBzaXplKQogewogICAgIG1faW50ZXJuYWwt
Pm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CiAgICAgbV9pbnRlcm5hbC0+dW5pZm9ybTJpdihs
b2NhdGlvbiwgc2l6ZSwgYXJyYXkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlm
b3JtM2kobG9uZyBsb2NhdGlvbiwgaW50IHYwLCBpbnQgdjEsIGludCB2MikKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OnVuaWZvcm0zaShHQzNEaW50IGxvY2F0aW9uLCBHQzNEaW50IHYwLCBHQzNE
aW50IHYxLCBHQzNEaW50IHYyKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VD
dXJyZW50KCk7CiAgICAgbV9pbnRlcm5hbC0+dW5pZm9ybTNpKGxvY2F0aW9uLCB2MCwgdjEsIHYy
KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTNpdihsb25nIGxvY2F0aW9u
LCBpbnQqIGFycmF5LCBpbnQgc2l6ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0z
aXYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGludCogYXJyYXksIEdDM0RzaXplaSBzaXplKQogewog
ICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CiAgICAgbV9pbnRlcm5h
bC0+dW5pZm9ybTNpdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOwogfQogCi12b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjp1bmlmb3JtNGkobG9uZyBsb2NhdGlvbiwgaW50IHYwLCBpbnQgdjEsIGludCB2
MiwgaW50IHYzKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTRpKEdDM0RpbnQgbG9j
YXRpb24sIEdDM0RpbnQgdjAsIEdDM0RpbnQgdjEsIEdDM0RpbnQgdjIsIEdDM0RpbnQgdjMpCiB7
CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKICAgICBtX2ludGVy
bmFsLT51bmlmb3JtNGkobG9jYXRpb24sIHYwLCB2MSwgdjIsIHYzKTsKIH0KIAotdm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6dW5pZm9ybTRpdihsb25nIGxvY2F0aW9uLCBpbnQqIGFycmF5LCBpbnQg
c2l6ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm00aXYoR0MzRGludCBsb2NhdGlv
biwgR0MzRGludCogYXJyYXksIEdDM0RzaXplaSBzaXplKQogewogICAgIG1faW50ZXJuYWwtPm1f
Z2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CiAgICAgbV9pbnRlcm5hbC0+dW5pZm9ybTRpdihsb2Nh
dGlvbiwgc2l6ZSwgYXJyYXkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3Jt
TWF0cml4MmZ2KGxvbmcgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBmbG9hdCogYXJyYXksIGlu
dCBzaXplKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybU1hdHJpeDJmdihHQzNEaW50
IGxvY2F0aW9uLCBHQzNEYm9vbGVhbiB0cmFuc3Bvc2UsIEdDM0RmbG9hdCogYXJyYXksIEdDM0Rz
aXplaSBzaXplKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7
CiAgICAgbV9pbnRlcm5hbC0+dW5pZm9ybU1hdHJpeDJmdihsb2NhdGlvbiwgc2l6ZSwgdHJhbnNw
b3NlLCBhcnJheSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm1NYXRyaXgz
ZnYobG9uZyBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIGZsb2F0KiBhcnJheSwgaW50IHNpemUp
Cit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtTWF0cml4M2Z2KEdDM0RpbnQgbG9jYXRp
b24sIEdDM0Rib29sZWFuIHRyYW5zcG9zZSwgR0MzRGZsb2F0KiBhcnJheSwgR0MzRHNpemVpIHNp
emUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKICAgICBt
X2ludGVybmFsLT51bmlmb3JtTWF0cml4M2Z2KGxvY2F0aW9uLCBzaXplLCB0cmFuc3Bvc2UsIGFy
cmF5KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybU1hdHJpeDRmdihsb25n
IGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgZmxvYXQqIGFycmF5LCBpbnQgc2l6ZSkKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm1NYXRyaXg0ZnYoR0MzRGludCBsb2NhdGlvbiwgR0Mz
RGJvb2xlYW4gdHJhbnNwb3NlLCBHQzNEZmxvYXQqIGFycmF5LCBHQzNEc2l6ZWkgc2l6ZSkKIHsK
ICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwogICAgIG1faW50ZXJu
YWwtPnVuaWZvcm1NYXRyaXg0ZnYobG9jYXRpb24sIHNpemUsIHRyYW5zcG9zZSwgYXJyYXkpOwpA
QCAtMTI4NCw3ICsxMjg0LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dXNlUHJvZ3JhbShQ
bGF0ZgogICAgIEFTU0VSVChwcm9ncmFtKTsKICAgICAKICAgICBtX2ludGVybmFsLT5tX2dsV2lk
Z2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnVzZVByb2dyYW0oKEdMdWludCkg
cHJvZ3JhbSk7CisgICAgbV9pbnRlcm5hbC0+dXNlUHJvZ3JhbShwcm9ncmFtKTsKIH0KIAogdm9p
ZCBHcmFwaGljc0NvbnRleHQzRDo6dmFsaWRhdGVQcm9ncmFtKFBsYXRmb3JtM0RPYmplY3QgcHJv
Z3JhbSkKQEAgLTEyOTIsMTE5ICsxMjkyLDExOSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2
YWxpZGF0ZVByb2dyYW0oCiAgICAgQVNTRVJUKHByb2dyYW0pOwogICAgIAogICAgIG1faW50ZXJu
YWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dmFsaWRhdGVQ
cm9ncmFtKChHTHVpbnQpIHByb2dyYW0pOworICAgIG1faW50ZXJuYWwtPnZhbGlkYXRlUHJvZ3Jh
bShwcm9ncmFtKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliMWYo
dW5zaWduZWQgbG9uZyBpbmR4LCBmbG9hdCB2MCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZl
cnRleEF0dHJpYjFmKEdDM0R1aW50IGluZGV4LCBHQzNEZmxvYXQgdjApCiB7CiAgICAgbV9pbnRl
cm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT52ZXJ0ZXhB
dHRyaWIxZihpbmR4LCB2MCk7CisgICAgbV9pbnRlcm5hbC0+dmVydGV4QXR0cmliMWYoaW5kZXgs
IHYwKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliMWZ2KHVuc2ln
bmVkIGxvbmcgaW5keCwgZmxvYXQqIGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dmVy
dGV4QXR0cmliMWZ2KEdDM0R1aW50IGluZGV4LCBHQzNEZmxvYXQqIGFycmF5KQogewogICAgIG1f
aW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dmVy
dGV4QXR0cmliMWZ2KGluZHgsIGFycmF5KTsKKyAgICBtX2ludGVybmFsLT52ZXJ0ZXhBdHRyaWIx
ZnYoaW5kZXgsIGFycmF5KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0
cmliMmYodW5zaWduZWQgbG9uZyBpbmR4LCBmbG9hdCB2MCwgZmxvYXQgdjEpCit2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIyZihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0IHYw
LCBHQzNEZmxvYXQgdjEpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJl
bnQoKTsKLSAgICBtX2ludGVybmFsLT52ZXJ0ZXhBdHRyaWIyZihpbmR4LCB2MCwgdjEpOworICAg
IG1faW50ZXJuYWwtPnZlcnRleEF0dHJpYjJmKGluZGV4LCB2MCwgdjEpOwogfQogCi12b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIyZnYodW5zaWduZWQgbG9uZyBpbmR4LCBmbG9h
dCogYXJyYXkpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIyZnYoR0MzRHVp
bnQgaW5kZXgsIEdDM0RmbG9hdCogYXJyYXkpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdl
dC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT52ZXJ0ZXhBdHRyaWIyZnYoaW5keCwg
YXJyYXkpOworICAgIG1faW50ZXJuYWwtPnZlcnRleEF0dHJpYjJmdihpbmRleCwgYXJyYXkpOwog
fQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIzZih1bnNpZ25lZCBsb25n
IGluZHgsIGZsb2F0IHYwLCBmbG9hdCB2MSwgZmxvYXQgdjIpCit2b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjp2ZXJ0ZXhBdHRyaWIzZihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0IHYwLCBHQzNEZmxv
YXQgdjEsIEdDM0RmbG9hdCB2MikKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtl
Q3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnZlcnRleEF0dHJpYjNmKGluZHgsIHYwLCB2MSwg
djIpOworICAgIG1faW50ZXJuYWwtPnZlcnRleEF0dHJpYjNmKGluZGV4LCB2MCwgdjEsIHYyKTsK
IH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliM2Z2KHVuc2lnbmVkIGxv
bmcgaW5keCwgZmxvYXQqIGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0
cmliM2Z2KEdDM0R1aW50IGluZGV4LCBHQzNEZmxvYXQqIGFycmF5KQogewogICAgIG1faW50ZXJu
YWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dmVydGV4QXR0
cmliM2Z2KGluZHgsIGFycmF5KTsKKyAgICBtX2ludGVybmFsLT52ZXJ0ZXhBdHRyaWIzZnYoaW5k
ZXgsIGFycmF5KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliNGYo
dW5zaWduZWQgbG9uZyBpbmR4LCBmbG9hdCB2MCwgZmxvYXQgdjEsIGZsb2F0IHYyLCBmbG9hdCB2
MykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjRmKEdDM0R1aW50IGluZGV4
LCBHQzNEZmxvYXQgdjAsIEdDM0RmbG9hdCB2MSwgR0MzRGZsb2F0IHYyLCBHQzNEZmxvYXQgdjMp
CiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2lu
dGVybmFsLT52ZXJ0ZXhBdHRyaWI0ZihpbmR4LCB2MCwgdjEsIHYyLCB2Myk7CisgICAgbV9pbnRl
cm5hbC0+dmVydGV4QXR0cmliNGYoaW5kZXgsIHYwLCB2MSwgdjIsIHYzKTsKIH0KIAotdm9pZCBH
cmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliNGZ2KHVuc2lnbmVkIGxvbmcgaW5keCwgZmxv
YXQqIGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliNGZ2KEdDM0R1
aW50IGluZGV4LCBHQzNEZmxvYXQqIGFycmF5KQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRn
ZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dmVydGV4QXR0cmliNGZ2KGluZHgs
IGFycmF5KTsKKyAgICBtX2ludGVybmFsLT52ZXJ0ZXhBdHRyaWI0ZnYoaW5kZXgsIGFycmF5KTsK
IH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliUG9pbnRlcih1bnNpZ25l
ZCBsb25nIGluZHgsIGludCBzaXplLCBpbnQgdHlwZSwgYm9vbCBub3JtYWxpemVkLCB1bnNpZ25l
ZCBsb25nIHN0cmlkZSwgdW5zaWduZWQgbG9uZyBvZmZzZXQpCit2b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjp2ZXJ0ZXhBdHRyaWJQb2ludGVyKEdDM0R1aW50IGluZGV4LCBHQzNEaW50IHNpemUsIEdD
M0RlbnVtIHR5cGUsIEdDM0Rib29sZWFuIG5vcm1hbGl6ZWQsIEdDM0RzaXplaSBzdHJpZGUsIEdD
M0RzaXplaXB0ciBvZmZzZXQpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1
cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT52ZXJ0ZXhBdHRyaWJQb2ludGVyKGluZHgsIHNpemUs
IHR5cGUsIG5vcm1hbGl6ZWQsIHN0cmlkZSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oc3RhdGlj
X2Nhc3Q8aW50cHRyX3Q+KG9mZnNldCkpKTsKKyAgICBtX2ludGVybmFsLT52ZXJ0ZXhBdHRyaWJQ
b2ludGVyKGluZGV4LCBzaXplLCB0eXBlLCBub3JtYWxpemVkLCBzdHJpZGUsIHJlaW50ZXJwcmV0
X2Nhc3Q8R0x2b2lkKj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KG9mZnNldCkpKTsKIH0KIAotdm9p
ZCBHcmFwaGljc0NvbnRleHQzRDo6dmlld3BvcnQobG9uZyB4LCBsb25nIHksIHVuc2lnbmVkIGxv
bmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0KQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
dmlld3BvcnQoR0MzRGludCB4LCBHQzNEaW50IHksIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVp
IGhlaWdodCkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwot
ICAgIGdsVmlld3BvcnQoc3RhdGljX2Nhc3Q8R0xpbnQ+KHgpLCBzdGF0aWNfY2FzdDxHTGludD4o
eSksIHN0YXRpY19jYXN0PEdMc2l6ZWk+KHdpZHRoKSwgc3RhdGljX2Nhc3Q8R0xzaXplaT4oaGVp
Z2h0KSk7CisgICAgZ2xWaWV3cG9ydCh4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKIH0KIAotdm9pZCBH
cmFwaGljc0NvbnRleHQzRDo6Z2V0Qm9vbGVhbnYodW5zaWduZWQgbG9uZyBwYXJhbU5hbWUsIHVu
c2lnbmVkIGNoYXIqIHZhbHVlKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0Qm9vbGVhbnYo
R0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEYm9vbGVhbiogdmFsdWUpCiB7CiAgICAgbV9pbnRlcm5h
bC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKICAgICBnbEdldEJvb2xlYW52KHBhcmFtTmFt
ZSwgdmFsdWUpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRCdWZmZXJQYXJhbWV0
ZXJpdih1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBwYXJhbU5hbWUsIGludCog
dmFsdWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRCdWZmZXJQYXJhbWV0ZXJpdihHQzNE
ZW51bSB0YXJnZXQsIEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGludCogdmFsdWUpCiB7CiAgICAg
bV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKICAgICBtX2ludGVybmFsLT5n
ZXRCdWZmZXJQYXJhbWV0ZXJpdih0YXJnZXQsIHBhcmFtTmFtZSwgdmFsdWUpOwogfQogCi12b2lk
IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRGbG9hdHYodW5zaWduZWQgbG9uZyBwYXJhbU5hbWUsIGZs
b2F0KiB2YWx1ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEZsb2F0dihHQzNEZW51bSBw
YXJhbU5hbWUsIEdDM0RmbG9hdCogdmFsdWUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdl
dC0+bWFrZUN1cnJlbnQoKTsKICAgICBnbEdldEZsb2F0dihwYXJhbU5hbWUsIHZhbHVlKTsKIH0K
IAotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1l
dGVyaXYodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgYXR0YWNobWVudCwgdW5z
aWduZWQgbG9uZyBwYXJhbU5hbWUsIGludCogdmFsdWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNE
OjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdihHQzNEZW51bSB0YXJnZXQsIEdD
M0RlbnVtIGF0dGFjaG1lbnQsIEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGludCogdmFsdWUpCiB7
CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKICAgICBtX2ludGVy
bmFsLT5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdih0YXJnZXQsIGF0dGFjaG1l
bnQsIHBhcmFtTmFtZSwgdmFsdWUpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRJ
bnRlZ2Vydih1bnNpZ25lZCBsb25nIHBhcmFtTmFtZSwgaW50KiB2YWx1ZSkKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OmdldEludGVnZXJ2KEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGludCogdmFs
dWUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKICAgICBn
bEdldEludGVnZXJ2KHBhcmFtTmFtZSwgdmFsdWUpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjpnZXRQcm9ncmFtaXYoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCB1bnNpZ25lZCBsb25n
IHBhcmFtTmFtZSwgaW50KiB2YWx1ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFByb2dy
YW1pdihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGlu
dCogdmFsdWUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsK
LSAgICBtX2ludGVybmFsLT5nZXRQcm9ncmFtaXYoKEdMdWludCkgcHJvZ3JhbSwgcGFyYW1OYW1l
LCB2YWx1ZSk7CisgICAgbV9pbnRlcm5hbC0+Z2V0UHJvZ3JhbWl2KHByb2dyYW0sIHBhcmFtTmFt
ZSwgdmFsdWUpOwogfQogCiBTdHJpbmcgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFByb2dyYW1JbmZv
TG9nKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lk
Z2V0LT5tYWtlQ3VycmVudCgpOwogCi0gICAgR0xpbnQgbGVuZ3RoOwotICAgIG1faW50ZXJuYWwt
PmdldFByb2dyYW1pdigoR0x1aW50KSBwcm9ncmFtLCBHcmFwaGljc0NvbnRleHQzRDo6SU5GT19M
T0dfTEVOR1RILCAmbGVuZ3RoKTsKKyAgICBHTGludCBsZW5ndGggPSAwOworICAgIG1faW50ZXJu
YWwtPmdldFByb2dyYW1pdihwcm9ncmFtLCBHcmFwaGljc0NvbnRleHQzRDo6SU5GT19MT0dfTEVO
R1RILCAmbGVuZ3RoKTsKIAotICAgIEdMc2l6ZWkgc2l6ZTsKKyAgICBHTHNpemVpIHNpemUgPSAw
OwogCiAgICAgR0xjaGFyKiBpbmZvID0gKEdMY2hhciopIGZhc3RNYWxsb2MobGVuZ3RoKTsKICAg
ICBpZiAoIWluZm8pCiAgICAgICAgIHJldHVybiAiIjsKIAotICAgIG1faW50ZXJuYWwtPmdldFBy
b2dyYW1JbmZvTG9nKChHTHVpbnQpIHByb2dyYW0sIGxlbmd0aCwgJnNpemUsIGluZm8pOworICAg
IG1faW50ZXJuYWwtPmdldFByb2dyYW1JbmZvTG9nKHByb2dyYW0sIGxlbmd0aCwgJnNpemUsIGlu
Zm8pOwogCiAgICAgU3RyaW5nIHJlc3VsdChpbmZvKTsKICAgICBmYXN0RnJlZShpbmZvKTsKQEAg
LTE0MTIsMzIgKzE0MTIsMzIgQEAgU3RyaW5nIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRQcm9ncmFt
SW5mbwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6Omdl
dFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBs
b25nIHBhcmFtTmFtZSwgaW50KiB2YWx1ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFJl
bmRlcmJ1ZmZlclBhcmFtZXRlcml2KEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gcGFyYW1OYW1l
LCBHQzNEaW50KiB2YWx1ZSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3Vy
cmVudCgpOwogICAgIG1faW50ZXJuYWwtPmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KHRhcmdl
dCwgcGFyYW1OYW1lLCB2YWx1ZSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFNo
YWRlcml2KFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyLCB1bnNpZ25lZCBsb25nIHBhcmFtTmFtZSwg
aW50KiB2YWx1ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFNoYWRlcml2KFBsYXRmb3Jt
M0RPYmplY3Qgc2hhZGVyLCBHQzNEZW51bSBwYXJhbU5hbWUsIEdDM0RpbnQqIHZhbHVlKQogewog
ICAgIEFTU0VSVChzaGFkZXIpOwogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJy
ZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+Z2V0U2hhZGVyaXYoKEdMdWludCkgc2hhZGVyLCBwYXJh
bU5hbWUsIHZhbHVlKTsKKyAgICBtX2ludGVybmFsLT5nZXRTaGFkZXJpdihzaGFkZXIsIHBhcmFt
TmFtZSwgdmFsdWUpOwogfQogCiBTdHJpbmcgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFNoYWRlcklu
Zm9Mb2coUGxhdGZvcm0zRE9iamVjdCBzaGFkZXIpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdp
ZGdldC0+bWFrZUN1cnJlbnQoKTsKIAotICAgIEdMaW50IGxlbmd0aDsKLSAgICBtX2ludGVybmFs
LT5nZXRTaGFkZXJpdigoR0x1aW50KSBzaGFkZXIsIEdyYXBoaWNzQ29udGV4dDNEOjpJTkZPX0xP
R19MRU5HVEgsICZsZW5ndGgpOworICAgIEdMaW50IGxlbmd0aCA9IDA7CisgICAgbV9pbnRlcm5h
bC0+Z2V0U2hhZGVyaXYoc2hhZGVyLCBHcmFwaGljc0NvbnRleHQzRDo6SU5GT19MT0dfTEVOR1RI
LCAmbGVuZ3RoKTsKIAotICAgIEdMc2l6ZWkgc2l6ZTsKKyAgICBHTHNpemVpIHNpemUgPSAwOwog
ICAgIEdMY2hhciogaW5mbyA9IChHTGNoYXIqKSBmYXN0TWFsbG9jKGxlbmd0aCk7CiAgICAgaWYg
KCFpbmZvKQogICAgICAgICByZXR1cm4gIiI7CiAKLSAgICBtX2ludGVybmFsLT5nZXRTaGFkZXJJ
bmZvTG9nKChHTHVpbnQpIHNoYWRlciwgbGVuZ3RoLCAmc2l6ZSwgaW5mbyk7CisgICAgbV9pbnRl
cm5hbC0+Z2V0U2hhZGVySW5mb0xvZyhzaGFkZXIsIGxlbmd0aCwgJnNpemUsIGluZm8pOwogCiAg
ICAgU3RyaW5nIHJlc3VsdChpbmZvKTsKICAgICBmYXN0RnJlZShpbmZvKTsKQEAgLTE0NDksMTUg
KzE0NDksMTUgQEAgU3RyaW5nIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRTaGFkZXJTb3VyYwogewog
ICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CiAKLSAgICBHTGludCBs
ZW5ndGg7Ci0gICAgbV9pbnRlcm5hbC0+Z2V0U2hhZGVyaXYoKEdMdWludCkgc2hhZGVyLCBHcmFw
aGljc0NvbnRleHQzRDo6U0hBREVSX1NPVVJDRV9MRU5HVEgsICZsZW5ndGgpOworICAgIEdMaW50
IGxlbmd0aCA9IDA7CisgICAgbV9pbnRlcm5hbC0+Z2V0U2hhZGVyaXYoc2hhZGVyLCBHcmFwaGlj
c0NvbnRleHQzRDo6U0hBREVSX1NPVVJDRV9MRU5HVEgsICZsZW5ndGgpOwogCi0gICAgR0xzaXpl
aSBzaXplOworICAgIEdMc2l6ZWkgc2l6ZSA9IDA7CiAgICAgR0xjaGFyKiBpbmZvID0gKEdMY2hh
ciopIGZhc3RNYWxsb2MobGVuZ3RoKTsKICAgICBpZiAoIWluZm8pCiAgICAgICAgIHJldHVybiAi
IjsKIAotICAgIG1faW50ZXJuYWwtPmdldFNoYWRlclNvdXJjZSgoR0x1aW50KSBzaGFkZXIsIGxl
bmd0aCwgJnNpemUsIGluZm8pOworICAgIG1faW50ZXJuYWwtPmdldFNoYWRlclNvdXJjZShzaGFk
ZXIsIGxlbmd0aCwgJnNpemUsIGluZm8pOwogCiAgICAgU3RyaW5nIHJlc3VsdChpbmZvKTsKICAg
ICBmYXN0RnJlZShpbmZvKTsKQEAgLTE0NjUsMjggKzE0NjUsMjggQEAgU3RyaW5nIEdyYXBoaWNz
Q29udGV4dDNEOjpnZXRTaGFkZXJTb3VyYwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OmdldFRleFBhcmFtZXRlcmZ2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0
LCB1bnNpZ25lZCBsb25nIHBhcmFtTmFtZSwgZmxvYXQqIHZhbHVlKQordm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6Z2V0VGV4UGFyYW1ldGVyZnYoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBwYXJh
bU5hbWUsIEdDM0RmbG9hdCogdmFsdWUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+
bWFrZUN1cnJlbnQoKTsKICAgICBnbEdldFRleFBhcmFtZXRlcmZ2KHRhcmdldCwgcGFyYW1OYW1l
LCB2YWx1ZSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFRleFBhcmFtZXRlcml2
KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBhcmFtTmFtZSwgaW50KiB2YWx1
ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFRleFBhcmFtZXRlcml2KEdDM0RlbnVtIHRh
cmdldCwgR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEaW50KiB2YWx1ZSkKIHsKICAgICBtX2ludGVy
bmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwogICAgIGdsR2V0VGV4UGFyYW1ldGVyaXYo
dGFyZ2V0LCBwYXJhbU5hbWUsIHZhbHVlKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
Z2V0VW5pZm9ybWZ2KFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgbG9uZyBsb2NhdGlvbiwgZmxv
YXQqIHZhbHVlKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VW5pZm9ybWZ2KFBsYXRmb3Jt
M0RPYmplY3QgcHJvZ3JhbSwgR0MzRGludCBsb2NhdGlvbiwgR0MzRGZsb2F0KiB2YWx1ZSkKIHsK
ICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJu
YWwtPmdldFVuaWZvcm1mdigoR0x1aW50KSBwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUpOworICAg
IG1faW50ZXJuYWwtPmdldFVuaWZvcm1mdihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUpOwogfQog
Ci12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRVbmlmb3JtaXYoUGxhdGZvcm0zRE9iamVjdCBw
cm9ncmFtLCBsb25nIGxvY2F0aW9uLCBpbnQqIHZhbHVlKQordm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6Z2V0VW5pZm9ybWl2KFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgR0MzRGludCBsb2NhdGlv
biwgR0MzRGludCogdmFsdWUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1
cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5nZXRVbmlmb3JtaXYoKEdMdWludCkgcHJvZ3JhbSwg
bG9jYXRpb24sIHZhbHVlKTsKKyAgICBtX2ludGVybmFsLT5nZXRVbmlmb3JtaXYocHJvZ3JhbSwg
bG9jYXRpb24sIHZhbHVlKTsKIH0KIAogbG9uZyBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VW5pZm9y
bUxvY2F0aW9uKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgY29uc3QgU3RyaW5nJiBuYW1lKQpA
QCAtMTQ5NCwxMjYgKzE0OTQsMTI0IEBAIGxvbmcgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFVuaWZv
cm1Mb2NhdGkKICAgICBBU1NFUlQocHJvZ3JhbSk7CiAgICAgCiAgICAgbV9pbnRlcm5hbC0+bV9n
bFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICByZXR1cm4gbV9pbnRlcm5hbC0+Z2V0VW5pZm9y
bUxvY2F0aW9uKChHTHVpbnQpIHByb2dyYW0sIG5hbWUudXRmOCgpLmRhdGEoKSk7CisgICAgcmV0
dXJuIG1faW50ZXJuYWwtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCBuYW1lLnV0ZjgoKS5k
YXRhKCkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJmdih1
bnNpZ25lZCBsb25nIGluZGV4LCB1bnNpZ25lZCBsb25nIHBhcmFtTmFtZSwgZmxvYXQqIHZhbHVl
KQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VmVydGV4QXR0cmliZnYoR0MzRHVpbnQgaW5k
ZXgsIEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGZsb2F0KiB2YWx1ZSkKIHsKICAgICBtX2ludGVy
bmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwogICAgIG1faW50ZXJuYWwtPmdldFZlcnRl
eEF0dHJpYmZ2KGluZGV4LCBwYXJhbU5hbWUsIHZhbHVlKTsKIH0KIAotdm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6Z2V0VmVydGV4QXR0cmliaXYodW5zaWduZWQgbG9uZyBpbmRleCwgdW5zaWduZWQg
bG9uZyBwYXJhbU5hbWUsIGludCogdmFsdWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRW
ZXJ0ZXhBdHRyaWJpdihHQzNEdWludCBpbmRleCwgR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEaW50
KiB2YWx1ZSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwog
ICAgIG1faW50ZXJuYWwtPmdldFZlcnRleEF0dHJpYml2KGluZGV4LCBwYXJhbU5hbWUsIHZhbHVl
KTsKIH0KIAotbG9uZyBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VmVydGV4QXR0cmliT2Zmc2V0KHVu
c2lnbmVkIGxvbmcgaW5kZXgsIHVuc2lnbmVkIGxvbmcgcGFyYW1OYW1lKQorR0MzRHNpemVpcHRy
IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQoR0MzRHVpbnQgaW5kZXgs
IEdDM0RlbnVtIHBhcmFtTmFtZSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtl
Q3VycmVudCgpOwogICAgIAotICAgIHZvaWQqIHBvaW50ZXI7CisgICAgR0x2b2lkKiBwb2ludGVy
ID0gMDsKICAgICBtX2ludGVybmFsLT5nZXRWZXJ0ZXhBdHRyaWJQb2ludGVydihpbmRleCwgcGFy
YW1OYW1lLCAmcG9pbnRlcik7Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8bG9uZz4ocG9p
bnRlcik7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDM0RzaXplaXB0cj4ocmVpbnRlcnByZXRf
Y2FzdDxpbnRwdHJfdD4ocG9pbnRlcikpOwogfQogCi1pbnQgR3JhcGhpY3NDb250ZXh0M0Q6OnRl
eEltYWdlMkQodW5zaWduZWQgdGFyZ2V0LCB1bnNpZ25lZCBsZXZlbCwgdW5zaWduZWQgaW50ZXJu
YWxmb3JtYXQsIHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQsIHVuc2lnbmVkIGJvcmRl
ciwgdW5zaWduZWQgZm9ybWF0LCB1bnNpZ25lZCB0eXBlLCB2b2lkKiBwaXhlbHMpCitib29sIEdy
YXBoaWNzQ29udGV4dDNEOjp0ZXhJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZl
bCwgR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhl
aWdodCwgR0MzRGludCBib3JkZXIsIEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVudW0gdHlwZSwgR0Mz
RHZvaWQqIHBpeGVscykKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVu
dCgpOwogICAgIGdsVGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lk
dGgsIGhlaWdodCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIHBpeGVscyk7Ci0gICAgcmV0dXJuIDA7
CisgICAgcmV0dXJuIHRydWU7CiB9CiAKLSAgIAotaW50IEdyYXBoaWNzQ29udGV4dDNEOjp0ZXhT
dWJJbWFnZTJEKHVuc2lnbmVkIHRhcmdldCwgdW5zaWduZWQgbGV2ZWwsIHVuc2lnbmVkIHhvZmYs
IHVuc2lnbmVkIHlvZmYsIHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQsIHVuc2lnbmVk
IGZvcm1hdCwgdW5zaWduZWQgdHlwZSwgdm9pZCogcGl4ZWxzKQordm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6dGV4U3ViSW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0Rp
bnQgeG9mZiwgR0MzRGludCB5b2ZmLCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQs
IEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVudW0gdHlwZSwgR0MzRHZvaWQqIHBpeGVscykKIHsKICAg
ICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwogICAgIGdsVGV4U3ViSW1h
Z2UyRCh0YXJnZXQsIGxldmVsLCB4b2ZmLCB5b2ZmLCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5
cGUsIHBpeGVscyk7Ci0gICAgcmV0dXJuIDA7CiB9CiAKLXVuc2lnbmVkIEdyYXBoaWNzQ29udGV4
dDNEOjpjcmVhdGVCdWZmZXIoKQorUGxhdGZvcm0zRE9iamVjdCBHcmFwaGljc0NvbnRleHQzRDo6
Y3JlYXRlQnVmZmVyKCkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVu
dCgpOwotICAgIEdMdWludCBoYW5kbGU7CisgICAgR0x1aW50IGhhbmRsZSA9IDA7CiAgICAgbV9p
bnRlcm5hbC0+Z2VuQnVmZmVycygvKiBjb3VudCAqLyAxLCAmaGFuZGxlKTsKICAgICByZXR1cm4g
aGFuZGxlOwogfQogCi11bnNpZ25lZCBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlRnJhbWVidWZm
ZXIoKQorUGxhdGZvcm0zRE9iamVjdCBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlRnJhbWVidWZm
ZXIoKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAg
R0x1aW50IGhhbmRsZTsKKyAgICBHTHVpbnQgaGFuZGxlID0gMDsKICAgICBtX2ludGVybmFsLT5n
ZW5GcmFtZWJ1ZmZlcnMoLyogY291bnQgKi8gMSwgJmhhbmRsZSk7CiAgICAgcmV0dXJuIGhhbmRs
ZTsKIH0KIAotdW5zaWduZWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZVByb2dyYW0oKQorUGxh
dGZvcm0zRE9iamVjdCBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlUHJvZ3JhbSgpCiB7CiAgICAg
bV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKICAgICByZXR1cm4gbV9pbnRl
cm5hbC0+Y3JlYXRlUHJvZ3JhbSgpOwogfQogCi11bnNpZ25lZCBHcmFwaGljc0NvbnRleHQzRDo6
Y3JlYXRlUmVuZGVyYnVmZmVyKCkKK1BsYXRmb3JtM0RPYmplY3QgR3JhcGhpY3NDb250ZXh0M0Q6
OmNyZWF0ZVJlbmRlcmJ1ZmZlcigpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFr
ZUN1cnJlbnQoKTsKLSAgICBHTHVpbnQgaGFuZGxlOworICAgIEdMdWludCBoYW5kbGUgPSAwOwog
ICAgIG1faW50ZXJuYWwtPmdlblJlbmRlcmJ1ZmZlcnMoLyogY291bnQgKi8gMSwgJmhhbmRsZSk7
CiAgICAgcmV0dXJuIGhhbmRsZTsKIH0KIAotdW5zaWduZWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNy
ZWF0ZVNoYWRlcih1bnNpZ25lZCBsb25nIHR5cGUpCitQbGF0Zm9ybTNET2JqZWN0IEdyYXBoaWNz
Q29udGV4dDNEOjpjcmVhdGVTaGFkZXIoR0MzRGVudW0gdHlwZSkKIHsKICAgICBtX2ludGVybmFs
LT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIHJldHVybiBtX2ludGVybmFsLT5jcmVh
dGVTaGFkZXIoKHR5cGUgPT0gRlJBR01FTlRfU0hBREVSKSA/IEdyYXBoaWNzQ29udGV4dDNEOjpG
UkFHTUVOVF9TSEFERVIgOiBHcmFwaGljc0NvbnRleHQzRDo6VkVSVEVYX1NIQURFUik7CisgICAg
cmV0dXJuIG1faW50ZXJuYWwtPmNyZWF0ZVNoYWRlcih0eXBlKTsKIH0KIAotdW5zaWduZWQgR3Jh
cGhpY3NDb250ZXh0M0Q6OmNyZWF0ZVRleHR1cmUoKQorUGxhdGZvcm0zRE9iamVjdCBHcmFwaGlj
c0NvbnRleHQzRDo6Y3JlYXRlVGV4dHVyZSgpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdl
dC0+bWFrZUN1cnJlbnQoKTsKLSAgICBHTHVpbnQgaGFuZGxlOworICAgIEdMdWludCBoYW5kbGUg
PSAwOwogICAgIGdsR2VuVGV4dHVyZXMoMSwgJmhhbmRsZSk7CiAgICAgcmV0dXJuIGhhbmRsZTsK
IH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGVsZXRlQnVmZmVyKHVuc2lnbmVkIGJ1ZmZl
cikKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRlbGV0ZUJ1ZmZlcihQbGF0Zm9ybTNET2JqZWN0
IGJ1ZmZlcikKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwog
ICAgIG1faW50ZXJuYWwtPmRlbGV0ZUJ1ZmZlcnMoMSwgJmJ1ZmZlcik7CiB9CiAKLXZvaWQgR3Jh
cGhpY3NDb250ZXh0M0Q6OmRlbGV0ZUZyYW1lYnVmZmVyKHVuc2lnbmVkIGZyYW1lYnVmZmVyKQor
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGVsZXRlRnJhbWVidWZmZXIoUGxhdGZvcm0zRE9iamVj
dCBmcmFtZWJ1ZmZlcikKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVu
dCgpOwogICAgIG1faW50ZXJuYWwtPmRlbGV0ZUZyYW1lYnVmZmVycygxLCAmZnJhbWVidWZmZXIp
OwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkZWxldGVQcm9ncmFtKHVuc2lnbmVkIHBy
b2dyYW0pCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkZWxldGVQcm9ncmFtKFBsYXRmb3JtM0RP
YmplY3QgcHJvZ3JhbSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVu
dCgpOwogICAgIG1faW50ZXJuYWwtPmRlbGV0ZVByb2dyYW0ocHJvZ3JhbSk7CiB9CiAKLXZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OmRlbGV0ZVJlbmRlcmJ1ZmZlcih1bnNpZ25lZCByZW5kZXJidWZm
ZXIpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkZWxldGVSZW5kZXJidWZmZXIoUGxhdGZvcm0z
RE9iamVjdCByZW5kZXJidWZmZXIpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFr
ZUN1cnJlbnQoKTsKICAgICBtX2ludGVybmFsLT5kZWxldGVSZW5kZXJidWZmZXJzKDEsICZyZW5k
ZXJidWZmZXIpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkZWxldGVTaGFkZXIodW5z
aWduZWQgc2hhZGVyKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGVsZXRlU2hhZGVyKFBsYXRm
b3JtM0RPYmplY3Qgc2hhZGVyKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VD
dXJyZW50KCk7CiAgICAgbV9pbnRlcm5hbC0+ZGVsZXRlU2hhZGVyKHNoYWRlcik7CiB9CiAKLXZv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRlbGV0ZVRleHR1cmUodW5zaWduZWQgdGV4dHVyZSkKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRlbGV0ZVRleHR1cmUoUGxhdGZvcm0zRE9iamVjdCB0ZXh0
dXJlKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CiAgICAg
Z2xEZWxldGVUZXh0dXJlcygxLCAmdGV4dHVyZSk7CiB9CiAKLWludCBHcmFwaGljc0NvbnRleHQz
RDo6c2l6ZUluQnl0ZXMoaW50IHR5cGUpCit1bnNpZ25lZCBpbnQgR3JhcGhpY3NDb250ZXh0M0Q6
OnNpemVJbkJ5dGVzKEdDM0RlbnVtIHR5cGUpCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAg
Y2FzZSBHcmFwaGljc0NvbnRleHQzRDo6QllURToKQEAgLTE2MzUsNyArMTYzMyw3IEBAIGludCBH
cmFwaGljc0NvbnRleHQzRDo6c2l6ZUluQnl0ZXMoaW50IHQKICAgICB9CiB9CiAKLXZvaWQgR3Jh
cGhpY3NDb250ZXh0M0Q6OnN5bnRoZXNpemVHTEVycm9yKHVuc2lnbmVkIGxvbmcgZXJyb3IpCit2
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpzeW50aGVzaXplR0xFcnJvcihHQzNEZW51bSBlcnJvcikK
IHsKICAgICBtX2ludGVybmFsLT5tX3N5bnRoZXRpY0Vycm9ycy5hZGQoZXJyb3IpOwogfQpAQCAt
MTY0OCw4ICsxNjQ2LDggQEAgRXh0ZW5zaW9uczNEKiBHcmFwaGljc0NvbnRleHQzRDo6Z2V0RXh0
ZQogfQogCiBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRJbWFnZURhdGEoSW1hZ2UqIGltYWdl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBmb3Jt
YXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHR5
cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0MzRGVudW0gZm9ybWF0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0RlbnVtIHR5cGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBwcmVtdWx0aXBseUFscGhh
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaWdub3JlR2FtbWFB
bmRDb2xvclByb2ZpbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVj
dG9yPHVpbnQ4X3Q+JiBvdXRwdXRWZWN0b3IpCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3NraWEvR3JhcGhpY3NDb250ZXh0M0RTa2lhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvR3JhcGhpY3NDb250ZXh0M0RTa2lhLmNwcAkocmV2aXNp
b24gNzQ5NzApCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvR3JhcGhpY3NDb250
ZXh0M0RTa2lhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsOCArNDEsOCBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRJbWFnZURhdGEoSW1hZ2Uq
IGltYWdlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlu
dCBmb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg
aW50IHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0MzRGVudW0g
Zm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0RlbnVtIHR5
cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBwcmVtdWx0aXBs
eUFscGhhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaWdub3Jl
R2FtbWFBbmRDb2xvclByb2ZpbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVmVjdG9yPHVpbnQ4X3Q+JiBvdXRwdXRWZWN0b3IpCkluZGV4OiBXZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlz
aW9uIDc1MDk2KQorKysgV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDM0IEBACisyMDExLTAxLTA1ICBaaGVueWFvIE1vICA8em1vQGdvb2dsZS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRGVmaW5l
IEdDM0QgdHlwZXMgdG8gbWF0Y2ggR0wgdHlwZXMgYW5kIHVzZSB0aGVtIGluIEdyYXBoaWNzQ29u
dGV4dDNECisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00
NTU1NworCisgICAgICAgICogc3JjL0dyYXBoaWNzQ29udGV4dDNEQ2hyb21pdW0uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6YmluZEF0dHJpYkxvY2F0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmJ1ZmZl
ckRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6YnVm
ZmVyU3ViRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFs
OjpnZXRBY3RpdmVBdHRyaWIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJ
bnRlcm5hbDo6Z2V0QWN0aXZlVW5pZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzREludGVybmFsOjpnZXRBdHRyaWJMb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzREludGVybmFsOjpnZXRTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Z2V0VW5pZm9ybUxvY2F0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnRleEltYWdlMkQpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dGV4U3ViSW1hZ2UyRCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp1bmlmb3JtMWZ2KToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnVuaWZvcm0xaXYp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dW5pZm9ybTJm
dik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp1bmlmb3Jt
Mml2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnVuaWZv
cm0zZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dW5p
Zm9ybTNpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp1
bmlmb3JtNGZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6
OnVuaWZvcm00aXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5h
bDo6dW5pZm9ybU1hdHJpeDJmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
REludGVybmFsOjp1bmlmb3JtTWF0cml4M2Z2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNESW50ZXJuYWw6OnVuaWZvcm1NYXRyaXg0ZnYpOgorICAgICAgICAqIHNyYy9HcmFw
aGljc0NvbnRleHQzREludGVybmFsLmg6CisKIDIwMTEtMDEtMDUgIEhhbnMgV2VubmJvcmcgIDxo
YW5zQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXZpZCBMZXZpbi4KSW5k
ZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0RDaHJvbWl1bS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRENocm9taXVt
LmNwcAkocmV2aXNpb24gNzQ5NzApCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29u
dGV4dDNEQ2hyb21pdW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjgsNzYgKzM2OCw3NiBAQCBy
dCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpuYW1lKHQxIGExCiB9CiAKIERFTEVHQVRFX1RP
X0lNUExfUihtYWtlQ29udGV4dEN1cnJlbnQsIGJvb2wpCi1ERUxFR0FURV9UT19JTVBMXzFSKHNp
emVJbkJ5dGVzLCBpbnQsIGludCkKK0RFTEVHQVRFX1RPX0lNUExfMVIoc2l6ZUluQnl0ZXMsIEdD
M0RlbnVtLCB1bnNpZ25lZCBpbnQpCiAKIGJvb2wgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6
aXNHTEVTMkNvbXBsaWFudCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1faW1wbC0+aXNHTEVTMkNv
bXBsaWFudCgpOwogfQogCi1ERUxFR0FURV9UT19JTVBMXzEoYWN0aXZlVGV4dHVyZSwgdW5zaWdu
ZWQgbG9uZykKK0RFTEVHQVRFX1RPX0lNUExfMShhY3RpdmVUZXh0dXJlLCBHQzNEZW51bSkKIERF
TEVHQVRFX1RPX0lNUExfMihhdHRhY2hTaGFkZXIsIFBsYXRmb3JtM0RPYmplY3QsIFBsYXRmb3Jt
M0RPYmplY3QpCiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6YmluZEF0dHJpYkxv
Y2F0aW9uKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgdW5zaWduZWQgbG9uZyBpbmRleCwgY29u
c3QgU3RyaW5nJiBuYW1lKQordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpiaW5kQXR0
cmliTG9jYXRpb24oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBHQzNEdWludCBpbmRleCwgY29u
c3QgU3RyaW5nJiBuYW1lKQogewogICAgIG1faW1wbC0+YmluZEF0dHJpYkxvY2F0aW9uKHByb2dy
YW0sIGluZGV4LCBuYW1lLnV0ZjgoKS5kYXRhKCkpOwogfQogCi1ERUxFR0FURV9UT19JTVBMXzIo
YmluZEJ1ZmZlciwgdW5zaWduZWQgbG9uZywgUGxhdGZvcm0zRE9iamVjdCkKLURFTEVHQVRFX1RP
X0lNUExfMihiaW5kRnJhbWVidWZmZXIsIHVuc2lnbmVkIGxvbmcsIFBsYXRmb3JtM0RPYmplY3Qp
Ci1ERUxFR0FURV9UT19JTVBMXzIoYmluZFJlbmRlcmJ1ZmZlciwgdW5zaWduZWQgbG9uZywgUGxh
dGZvcm0zRE9iamVjdCkKLURFTEVHQVRFX1RPX0lNUExfMihiaW5kVGV4dHVyZSwgdW5zaWduZWQg
bG9uZywgUGxhdGZvcm0zRE9iamVjdCkKLURFTEVHQVRFX1RPX0lNUExfNChibGVuZENvbG9yLCBk
b3VibGUsIGRvdWJsZSwgZG91YmxlLCBkb3VibGUpCi1ERUxFR0FURV9UT19JTVBMXzEoYmxlbmRF
cXVhdGlvbiwgdW5zaWduZWQgbG9uZykKLURFTEVHQVRFX1RPX0lNUExfMihibGVuZEVxdWF0aW9u
U2VwYXJhdGUsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcpCi1ERUxFR0FURV9UT19JTVBM
XzIoYmxlbmRGdW5jLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nKQotREVMRUdBVEVfVE9f
SU1QTF80KGJsZW5kRnVuY1NlcGFyYXRlLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCB1
bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nKQorREVMRUdBVEVfVE9fSU1QTF8yKGJpbmRCdWZm
ZXIsIEdDM0RlbnVtLCBQbGF0Zm9ybTNET2JqZWN0KQorREVMRUdBVEVfVE9fSU1QTF8yKGJpbmRG
cmFtZWJ1ZmZlciwgR0MzRGVudW0sIFBsYXRmb3JtM0RPYmplY3QpCitERUxFR0FURV9UT19JTVBM
XzIoYmluZFJlbmRlcmJ1ZmZlciwgR0MzRGVudW0sIFBsYXRmb3JtM0RPYmplY3QpCitERUxFR0FU
RV9UT19JTVBMXzIoYmluZFRleHR1cmUsIEdDM0RlbnVtLCBQbGF0Zm9ybTNET2JqZWN0KQorREVM
RUdBVEVfVE9fSU1QTF80KGJsZW5kQ29sb3IsIEdDM0RjbGFtcGYsIEdDM0RjbGFtcGYsIEdDM0Rj
bGFtcGYsIEdDM0RjbGFtcGYpCitERUxFR0FURV9UT19JTVBMXzEoYmxlbmRFcXVhdGlvbiwgR0Mz
RGVudW0pCitERUxFR0FURV9UT19JTVBMXzIoYmxlbmRFcXVhdGlvblNlcGFyYXRlLCBHQzNEZW51
bSwgR0MzRGVudW0pCitERUxFR0FURV9UT19JTVBMXzIoYmxlbmRGdW5jLCBHQzNEZW51bSwgR0Mz
RGVudW0pCitERUxFR0FURV9UT19JTVBMXzQoYmxlbmRGdW5jU2VwYXJhdGUsIEdDM0RlbnVtLCBH
QzNEZW51bSwgR0MzRGVudW0sIEdDM0RlbnVtKQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNESW50
ZXJuYWw6OmJ1ZmZlckRhdGEodW5zaWduZWQgbG9uZyB0YXJnZXQsIGludCBzaXplLCB1bnNpZ25l
ZCBsb25nIHVzYWdlKQordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpidWZmZXJEYXRh
KEdDM0RlbnVtIHRhcmdldCwgR0MzRHNpemVpIHNpemUsIEdDM0RlbnVtIHVzYWdlKQogewogICAg
IG1faW1wbC0+YnVmZmVyRGF0YSh0YXJnZXQsIHNpemUsIDAsIHVzYWdlKTsKIH0KIAotdm9pZCBH
cmFwaGljc0NvbnRleHQzREludGVybmFsOjpidWZmZXJEYXRhKHVuc2lnbmVkIGxvbmcgdGFyZ2V0
LCBpbnQgc2l6ZSwgY29uc3Qgdm9pZCogZGF0YSwgdW5zaWduZWQgbG9uZyB1c2FnZSkKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6YnVmZmVyRGF0YShHQzNEZW51bSB0YXJnZXQsIEdD
M0RzaXplaSBzaXplLCBjb25zdCBHQzNEdm9pZCogZGF0YSwgR0MzRGVudW0gdXNhZ2UpCiB7CiAg
ICAgbV9pbXBsLT5idWZmZXJEYXRhKHRhcmdldCwgc2l6ZSwgZGF0YSwgdXNhZ2UpOwogfQogCi12
b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmJ1ZmZlclN1YkRhdGEodW5zaWduZWQgbG9u
ZyB0YXJnZXQsIGxvbmcgb2Zmc2V0LCBpbnQgc2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6YnVmZmVyU3ViRGF0YShHQzNEZW51bSB0YXJnZXQs
IEdDM0RzaXplaXB0ciBvZmZzZXQsIEdDM0RzaXplaSBzaXplLCBjb25zdCBHQzNEdm9pZCogZGF0
YSkKIHsKICAgICBtX2ltcGwtPmJ1ZmZlclN1YkRhdGEodGFyZ2V0LCBvZmZzZXQsIHNpemUsIGRh
dGEpOwogfQogCi1ERUxFR0FURV9UT19JTVBMXzFSKGNoZWNrRnJhbWVidWZmZXJTdGF0dXMsIHVu
c2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcpCi1ERUxFR0FURV9UT19JTVBMXzEoY2xlYXIsIHVu
c2lnbmVkIGxvbmcpCi1ERUxFR0FURV9UT19JTVBMXzQoY2xlYXJDb2xvciwgZG91YmxlLCBkb3Vi
bGUsIGRvdWJsZSwgZG91YmxlKQotREVMRUdBVEVfVE9fSU1QTF8xKGNsZWFyRGVwdGgsIGRvdWJs
ZSkKLURFTEVHQVRFX1RPX0lNUExfMShjbGVhclN0ZW5jaWwsIGxvbmcpCi1ERUxFR0FURV9UT19J
TVBMXzQoY29sb3JNYXNrLCBib29sLCBib29sLCBib29sLCBib29sKQorREVMRUdBVEVfVE9fSU1Q
TF8xUihjaGVja0ZyYW1lYnVmZmVyU3RhdHVzLCBHQzNEZW51bSwgR0MzRGVudW0pCitERUxFR0FU
RV9UT19JTVBMXzEoY2xlYXIsIEdDM0RiaXRmaWVsZCkKK0RFTEVHQVRFX1RPX0lNUExfNChjbGVh
ckNvbG9yLCBHQzNEY2xhbXBmLCBHQzNEY2xhbXBmLCBHQzNEY2xhbXBmLCBHQzNEY2xhbXBmKQor
REVMRUdBVEVfVE9fSU1QTF8xKGNsZWFyRGVwdGgsIEdDM0RjbGFtcGYpCitERUxFR0FURV9UT19J
TVBMXzEoY2xlYXJTdGVuY2lsLCBHQzNEaW50KQorREVMRUdBVEVfVE9fSU1QTF80KGNvbG9yTWFz
aywgR0MzRGJvb2xlYW4sIEdDM0Rib29sZWFuLCBHQzNEYm9vbGVhbiwgR0MzRGJvb2xlYW4pCiBE
RUxFR0FURV9UT19JTVBMXzEoY29tcGlsZVNoYWRlciwgUGxhdGZvcm0zRE9iamVjdCkKIAotREVM
RUdBVEVfVE9fSU1QTF84KGNvcHlUZXhJbWFnZTJELCB1bnNpZ25lZCBsb25nLCBsb25nLCB1bnNp
Z25lZCBsb25nLCBsb25nLCBsb25nLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCBsb25n
KQotREVMRUdBVEVfVE9fSU1QTF84KGNvcHlUZXhTdWJJbWFnZTJELCB1bnNpZ25lZCBsb25nLCBs
b25nLCBsb25nLCBsb25nLCBsb25nLCBsb25nLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25n
KQotREVMRUdBVEVfVE9fSU1QTF8xKGN1bGxGYWNlLCB1bnNpZ25lZCBsb25nKQotREVMRUdBVEVf
VE9fSU1QTF8xKGRlcHRoRnVuYywgdW5zaWduZWQgbG9uZykKLURFTEVHQVRFX1RPX0lNUExfMShk
ZXB0aE1hc2ssIGJvb2wpCi1ERUxFR0FURV9UT19JTVBMXzIoZGVwdGhSYW5nZSwgZG91YmxlLCBk
b3VibGUpCitERUxFR0FURV9UT19JTVBMXzgoY29weVRleEltYWdlMkQsIEdDM0RlbnVtLCBHQzNE
aW50LCBHQzNEZW51bSwgR0MzRGludCwgR0MzRGludCwgR0MzRHNpemVpLCBHQzNEc2l6ZWksIEdD
M0RpbnQpCitERUxFR0FURV9UT19JTVBMXzgoY29weVRleFN1YkltYWdlMkQsIEdDM0RlbnVtLCBH
QzNEaW50LCBHQzNEaW50LCBHQzNEaW50LCBHQzNEaW50LCBHQzNEaW50LCBHQzNEc2l6ZWksIEdD
M0RzaXplaSkKK0RFTEVHQVRFX1RPX0lNUExfMShjdWxsRmFjZSwgR0MzRGVudW0pCitERUxFR0FU
RV9UT19JTVBMXzEoZGVwdGhGdW5jLCBHQzNEZW51bSkKK0RFTEVHQVRFX1RPX0lNUExfMShkZXB0
aE1hc2ssIEdDM0Rib29sZWFuKQorREVMRUdBVEVfVE9fSU1QTF8yKGRlcHRoUmFuZ2UsIEdDM0Rj
bGFtcGYsIEdDM0RjbGFtcGYpCiBERUxFR0FURV9UT19JTVBMXzIoZGV0YWNoU2hhZGVyLCBQbGF0
Zm9ybTNET2JqZWN0LCBQbGF0Zm9ybTNET2JqZWN0KQotREVMRUdBVEVfVE9fSU1QTF8xKGRpc2Fi
bGUsIHVuc2lnbmVkIGxvbmcpCi1ERUxFR0FURV9UT19JTVBMXzEoZGlzYWJsZVZlcnRleEF0dHJp
YkFycmF5LCB1bnNpZ25lZCBsb25nKQotREVMRUdBVEVfVE9fSU1QTF8zKGRyYXdBcnJheXMsIHVu
c2lnbmVkIGxvbmcsIGxvbmcsIGxvbmcpCi1ERUxFR0FURV9UT19JTVBMXzQoZHJhd0VsZW1lbnRz
LCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCBsb25nKQorREVM
RUdBVEVfVE9fSU1QTF8xKGRpc2FibGUsIEdDM0RlbnVtKQorREVMRUdBVEVfVE9fSU1QTF8xKGRp
c2FibGVWZXJ0ZXhBdHRyaWJBcnJheSwgR0MzRHVpbnQpCitERUxFR0FURV9UT19JTVBMXzMoZHJh
d0FycmF5cywgR0MzRGVudW0sIEdDM0RpbnQsIEdDM0RzaXplaSkKK0RFTEVHQVRFX1RPX0lNUExf
NChkcmF3RWxlbWVudHMsIEdDM0RlbnVtLCBHQzNEc2l6ZWksIEdDM0RlbnVtLCBHQzNEc2l6ZWlw
dHIpCiAKLURFTEVHQVRFX1RPX0lNUExfMShlbmFibGUsIHVuc2lnbmVkIGxvbmcpCi1ERUxFR0FU
RV9UT19JTVBMXzEoZW5hYmxlVmVydGV4QXR0cmliQXJyYXksIHVuc2lnbmVkIGxvbmcpCitERUxF
R0FURV9UT19JTVBMXzEoZW5hYmxlLCBHQzNEZW51bSkKK0RFTEVHQVRFX1RPX0lNUExfMShlbmFi
bGVWZXJ0ZXhBdHRyaWJBcnJheSwgR0MzRHVpbnQpCiBERUxFR0FURV9UT19JTVBMKGZpbmlzaCkK
IERFTEVHQVRFX1RPX0lNUEwoZmx1c2gpCi1ERUxFR0FURV9UT19JTVBMXzQoZnJhbWVidWZmZXJS
ZW5kZXJidWZmZXIsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcs
IFBsYXRmb3JtM0RPYmplY3QpCi1ERUxFR0FURV9UT19JTVBMXzUoZnJhbWVidWZmZXJUZXh0dXJl
MkQsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIFBsYXRmb3Jt
M0RPYmplY3QsIGxvbmcpCi1ERUxFR0FURV9UT19JTVBMXzEoZnJvbnRGYWNlLCB1bnNpZ25lZCBs
b25nKQotREVMRUdBVEVfVE9fSU1QTF8xKGdlbmVyYXRlTWlwbWFwLCB1bnNpZ25lZCBsb25nKQor
REVMRUdBVEVfVE9fSU1QTF80KGZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyLCBHQzNEZW51bSwgR0Mz
RGVudW0sIEdDM0RlbnVtLCBQbGF0Zm9ybTNET2JqZWN0KQorREVMRUdBVEVfVE9fSU1QTF81KGZy
YW1lYnVmZmVyVGV4dHVyZTJELCBHQzNEZW51bSwgR0MzRGVudW0sIEdDM0RlbnVtLCBQbGF0Zm9y
bTNET2JqZWN0LCBHQzNEaW50KQorREVMRUdBVEVfVE9fSU1QTF8xKGZyb250RmFjZSwgR0MzRGVu
dW0pCitERUxFR0FURV9UT19JTVBMXzEoZ2VuZXJhdGVNaXBtYXAsIEdDM0RlbnVtKQogCi1ib29s
IEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmdldEFjdGl2ZUF0dHJpYihQbGF0Zm9ybTNET2Jq
ZWN0IHByb2dyYW0sIHVuc2lnbmVkIGxvbmcgaW5kZXgsIEFjdGl2ZUluZm8mIGluZm8pCitib29s
IEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmdldEFjdGl2ZUF0dHJpYihQbGF0Zm9ybTNET2Jq
ZWN0IHByb2dyYW0sIEdDM0R1aW50IGluZGV4LCBBY3RpdmVJbmZvJiBpbmZvKQogewogICAgIFdl
YktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0Q6OkFjdGl2ZUluZm8gd2ViSW5mbzsKICAgICBpZiAo
IW1faW1wbC0+Z2V0QWN0aXZlQXR0cmliKHByb2dyYW0sIGluZGV4LCB3ZWJJbmZvKSkKQEAgLTQ0
OCw3ICs0NDgsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmdldEFjdGl2CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Z2V0
QWN0aXZlVW5pZm9ybShQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIHVuc2lnbmVkIGxvbmcgaW5k
ZXgsIEFjdGl2ZUluZm8mIGluZm8pCitib29sIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6Omdl
dEFjdGl2ZVVuaWZvcm0oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBHQzNEdWludCBpbmRleCwg
QWN0aXZlSW5mbyYgaW5mbykKIHsKICAgICBXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEOjpB
Y3RpdmVJbmZvIHdlYkluZm87CiAgICAgaWYgKCFtX2ltcGwtPmdldEFjdGl2ZVVuaWZvcm0ocHJv
Z3JhbSwgaW5kZXgsIHdlYkluZm8pKQpAQCAtNDU5LDE2ICs0NTksMTYgQEAgYm9vbCBHcmFwaGlj
c0NvbnRleHQzREludGVybmFsOjpnZXRBY3RpdgogICAgIHJldHVybiB0cnVlOwogfQogCi1ERUxF
R0FURV9UT19JTVBMXzQoZ2V0QXR0YWNoZWRTaGFkZXJzLCBQbGF0Zm9ybTNET2JqZWN0LCBpbnQs
IGludCosIHVuc2lnbmVkIGludCopCitERUxFR0FURV9UT19JTVBMXzQoZ2V0QXR0YWNoZWRTaGFk
ZXJzLCBQbGF0Zm9ybTNET2JqZWN0LCBHQzNEc2l6ZWksIEdDM0RzaXplaSosIFBsYXRmb3JtM0RP
YmplY3QqKQogCi1pbnQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Z2V0QXR0cmliTG9jYXRp
b24oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBjb25zdCBTdHJpbmcmIG5hbWUpCitHQzNEaW50
IEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmdldEF0dHJpYkxvY2F0aW9uKFBsYXRmb3JtM0RP
YmplY3QgcHJvZ3JhbSwgY29uc3QgU3RyaW5nJiBuYW1lKQogewogICAgIHJldHVybiBtX2ltcGwt
PmdldEF0dHJpYkxvY2F0aW9uKHByb2dyYW0sIG5hbWUudXRmOCgpLmRhdGEoKSk7CiB9CiAKLURF
TEVHQVRFX1RPX0lNUExfMihnZXRCb29sZWFudiwgdW5zaWduZWQgbG9uZywgdW5zaWduZWQgY2hh
ciopCitERUxFR0FURV9UT19JTVBMXzIoZ2V0Qm9vbGVhbnYsIEdDM0RlbnVtLCBHQzNEYm9vbGVh
biopCiAKLURFTEVHQVRFX1RPX0lNUExfMyhnZXRCdWZmZXJQYXJhbWV0ZXJpdiwgdW5zaWduZWQg
bG9uZywgdW5zaWduZWQgbG9uZywgaW50KikKK0RFTEVHQVRFX1RPX0lNUExfMyhnZXRCdWZmZXJQ
YXJhbWV0ZXJpdiwgR0MzRGVudW0sIEdDM0RlbnVtLCBHQzNEaW50KikKIAogR3JhcGhpY3NDb250
ZXh0M0Q6OkF0dHJpYnV0ZXMgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Z2V0Q29udGV4dEF0
dHJpYnV0ZXMoKQogewpAQCAtNDgyLDI0ICs0ODIsMjQgQEAgR3JhcGhpY3NDb250ZXh0M0Q6OkF0
dHJpYnV0ZXMgR3JhcGhpY3NDbwogICAgIHJldHVybiBhdHRyaWJ1dGVzOwogfQogCi1ERUxFR0FU
RV9UT19JTVBMX1IoZ2V0RXJyb3IsIHVuc2lnbmVkIGxvbmcpCitERUxFR0FURV9UT19JTVBMX1Io
Z2V0RXJyb3IsIEdDM0RlbnVtKQogCi1ERUxFR0FURV9UT19JTVBMXzIoZ2V0RmxvYXR2LCB1bnNp
Z25lZCBsb25nLCBmbG9hdCopCitERUxFR0FURV9UT19JTVBMXzIoZ2V0RmxvYXR2LCBHQzNEZW51
bSwgR0MzRGZsb2F0KikKIAotREVMRUdBVEVfVE9fSU1QTF80KGdldEZyYW1lYnVmZmVyQXR0YWNo
bWVudFBhcmFtZXRlcml2LCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBs
b25nLCBpbnQqKQorREVMRUdBVEVfVE9fSU1QTF80KGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBh
cmFtZXRlcml2LCBHQzNEZW51bSwgR0MzRGVudW0sIEdDM0RlbnVtLCBHQzNEaW50KikKIAotREVM
RUdBVEVfVE9fSU1QTF8yKGdldEludGVnZXJ2LCB1bnNpZ25lZCBsb25nLCBpbnQqKQorREVMRUdB
VEVfVE9fSU1QTF8yKGdldEludGVnZXJ2LCBHQzNEZW51bSwgR0MzRGludCopCiAKLURFTEVHQVRF
X1RPX0lNUExfMyhnZXRQcm9ncmFtaXYsIFBsYXRmb3JtM0RPYmplY3QsIHVuc2lnbmVkIGxvbmcs
IGludCopCitERUxFR0FURV9UT19JTVBMXzMoZ2V0UHJvZ3JhbWl2LCBQbGF0Zm9ybTNET2JqZWN0
LCBHQzNEZW51bSwgR0MzRGludCopCiAKIFN0cmluZyBHcmFwaGljc0NvbnRleHQzREludGVybmFs
OjpnZXRQcm9ncmFtSW5mb0xvZyhQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0pCiB7CiAgICAgcmV0
dXJuIG1faW1wbC0+Z2V0UHJvZ3JhbUluZm9Mb2cocHJvZ3JhbSk7CiB9CiAKLURFTEVHQVRFX1RP
X0lNUExfMyhnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdiwgdW5zaWduZWQgbG9uZywgdW5zaWdu
ZWQgbG9uZywgaW50KikKK0RFTEVHQVRFX1RPX0lNUExfMyhnZXRSZW5kZXJidWZmZXJQYXJhbWV0
ZXJpdiwgR0MzRGVudW0sIEdDM0RlbnVtLCBHQzNEaW50KikKIAotREVMRUdBVEVfVE9fSU1QTF8z
KGdldFNoYWRlcml2LCBQbGF0Zm9ybTNET2JqZWN0LCB1bnNpZ25lZCBsb25nLCBpbnQqKQorREVM
RUdBVEVfVE9fSU1QTF8zKGdldFNoYWRlcml2LCBQbGF0Zm9ybTNET2JqZWN0LCBHQzNEZW51bSwg
R0MzRGludCopCiAKIFN0cmluZyBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpnZXRTaGFkZXJJ
bmZvTG9nKFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyKQogewpAQCAtNTExLDEzOSArNTExLDEzOCBA
QCBTdHJpbmcgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Z2V0U2hhCiAgICAgcmV0dXJuIG1f
aW1wbC0+Z2V0U2hhZGVyU291cmNlKHNoYWRlcik7CiB9CiAKLVN0cmluZyBHcmFwaGljc0NvbnRl
eHQzREludGVybmFsOjpnZXRTdHJpbmcodW5zaWduZWQgbG9uZyBuYW1lKQorU3RyaW5nIEdyYXBo
aWNzQ29udGV4dDNESW50ZXJuYWw6OmdldFN0cmluZyhHQzNEZW51bSBuYW1lKQogewogICAgIHJl
dHVybiBtX2ltcGwtPmdldFN0cmluZyhuYW1lKTsKIH0KIAotREVMRUdBVEVfVE9fSU1QTF8zKGdl
dFRleFBhcmFtZXRlcmZ2LCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCBmbG9hdCopCi1E
RUxFR0FURV9UT19JTVBMXzMoZ2V0VGV4UGFyYW1ldGVyaXYsIHVuc2lnbmVkIGxvbmcsIHVuc2ln
bmVkIGxvbmcsIGludCopCitERUxFR0FURV9UT19JTVBMXzMoZ2V0VGV4UGFyYW1ldGVyZnYsIEdD
M0RlbnVtLCBHQzNEZW51bSwgR0MzRGZsb2F0KikKK0RFTEVHQVRFX1RPX0lNUExfMyhnZXRUZXhQ
YXJhbWV0ZXJpdiwgR0MzRGVudW0sIEdDM0RlbnVtLCBHQzNEaW50KikKIAotREVMRUdBVEVfVE9f
SU1QTF8zKGdldFVuaWZvcm1mdiwgUGxhdGZvcm0zRE9iamVjdCwgbG9uZywgZmxvYXQqKQotREVM
RUdBVEVfVE9fSU1QTF8zKGdldFVuaWZvcm1pdiwgUGxhdGZvcm0zRE9iamVjdCwgbG9uZywgaW50
KikKK0RFTEVHQVRFX1RPX0lNUExfMyhnZXRVbmlmb3JtZnYsIFBsYXRmb3JtM0RPYmplY3QsIEdD
M0RpbnQsIEdDM0RmbG9hdCopCitERUxFR0FURV9UT19JTVBMXzMoZ2V0VW5pZm9ybWl2LCBQbGF0
Zm9ybTNET2JqZWN0LCBHQzNEaW50LCBHQzNEaW50KikKIAotbG9uZyBHcmFwaGljc0NvbnRleHQz
REludGVybmFsOjpnZXRVbmlmb3JtTG9jYXRpb24oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBj
b25zdCBTdHJpbmcmIG5hbWUpCitHQzNEaW50IEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6Omdl
dFVuaWZvcm1Mb2NhdGlvbihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0cmluZyYg
bmFtZSkKIHsKICAgICByZXR1cm4gbV9pbXBsLT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwg
bmFtZS51dGY4KCkuZGF0YSgpKTsKIH0KIAotREVMRUdBVEVfVE9fSU1QTF8zKGdldFZlcnRleEF0
dHJpYmZ2LCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCBmbG9hdCopCi1ERUxFR0FURV9U
T19JTVBMXzMoZ2V0VmVydGV4QXR0cmliaXYsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcs
IGludCopCitERUxFR0FURV9UT19JTVBMXzMoZ2V0VmVydGV4QXR0cmliZnYsIEdDM0R1aW50LCBH
QzNEZW51bSwgR0MzRGZsb2F0KikKK0RFTEVHQVRFX1RPX0lNUExfMyhnZXRWZXJ0ZXhBdHRyaWJp
diwgR0MzRHVpbnQsIEdDM0RlbnVtLCBHQzNEaW50KikKIAotREVMRUdBVEVfVE9fSU1QTF8yUihn
ZXRWZXJ0ZXhBdHRyaWJPZmZzZXQsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIGxvbmcp
CitERUxFR0FURV9UT19JTVBMXzJSKGdldFZlcnRleEF0dHJpYk9mZnNldCwgR0MzRHVpbnQsIEdD
M0RlbnVtLCBHQzNEc2l6ZWlwdHIpCiAKLURFTEVHQVRFX1RPX0lNUExfMihoaW50LCB1bnNpZ25l
ZCBsb25nLCB1bnNpZ25lZCBsb25nKQotREVMRUdBVEVfVE9fSU1QTF8xUihpc0J1ZmZlciwgUGxh
dGZvcm0zRE9iamVjdCwgYm9vbCkKLURFTEVHQVRFX1RPX0lNUExfMVIoaXNFbmFibGVkLCB1bnNp
Z25lZCBsb25nLCBib29sKQotREVMRUdBVEVfVE9fSU1QTF8xUihpc0ZyYW1lYnVmZmVyLCBQbGF0
Zm9ybTNET2JqZWN0LCBib29sKQotREVMRUdBVEVfVE9fSU1QTF8xUihpc1Byb2dyYW0sIFBsYXRm
b3JtM0RPYmplY3QsIGJvb2wpCi1ERUxFR0FURV9UT19JTVBMXzFSKGlzUmVuZGVyYnVmZmVyLCBQ
bGF0Zm9ybTNET2JqZWN0LCBib29sKQotREVMRUdBVEVfVE9fSU1QTF8xUihpc1NoYWRlciwgUGxh
dGZvcm0zRE9iamVjdCwgYm9vbCkKLURFTEVHQVRFX1RPX0lNUExfMVIoaXNUZXh0dXJlLCBQbGF0
Zm9ybTNET2JqZWN0LCBib29sKQotREVMRUdBVEVfVE9fSU1QTF8xKGxpbmVXaWR0aCwgZG91Ymxl
KQorREVMRUdBVEVfVE9fSU1QTF8yKGhpbnQsIEdDM0RlbnVtLCBHQzNEZW51bSkKK0RFTEVHQVRF
X1RPX0lNUExfMVIoaXNCdWZmZXIsIFBsYXRmb3JtM0RPYmplY3QsIEdDM0Rib29sZWFuKQorREVM
RUdBVEVfVE9fSU1QTF8xUihpc0VuYWJsZWQsIEdDM0RlbnVtLCBHQzNEYm9vbGVhbikKK0RFTEVH
QVRFX1RPX0lNUExfMVIoaXNGcmFtZWJ1ZmZlciwgUGxhdGZvcm0zRE9iamVjdCwgR0MzRGJvb2xl
YW4pCitERUxFR0FURV9UT19JTVBMXzFSKGlzUHJvZ3JhbSwgUGxhdGZvcm0zRE9iamVjdCwgR0Mz
RGJvb2xlYW4pCitERUxFR0FURV9UT19JTVBMXzFSKGlzUmVuZGVyYnVmZmVyLCBQbGF0Zm9ybTNE
T2JqZWN0LCBHQzNEYm9vbGVhbikKK0RFTEVHQVRFX1RPX0lNUExfMVIoaXNTaGFkZXIsIFBsYXRm
b3JtM0RPYmplY3QsIEdDM0Rib29sZWFuKQorREVMRUdBVEVfVE9fSU1QTF8xUihpc1RleHR1cmUs
IFBsYXRmb3JtM0RPYmplY3QsIEdDM0Rib29sZWFuKQorREVMRUdBVEVfVE9fSU1QTF8xKGxpbmVX
aWR0aCwgR0MzRGZsb2F0KQogREVMRUdBVEVfVE9fSU1QTF8xKGxpbmtQcm9ncmFtLCBQbGF0Zm9y
bTNET2JqZWN0KQotREVMRUdBVEVfVE9fSU1QTF8yKHBpeGVsU3RvcmVpLCB1bnNpZ25lZCBsb25n
LCBsb25nKQotREVMRUdBVEVfVE9fSU1QTF8yKHBvbHlnb25PZmZzZXQsIGRvdWJsZSwgZG91Ymxl
KQotREVMRUdBVEVfVE9fSU1QTF83KHJlYWRQaXhlbHMsIGxvbmcsIGxvbmcsIHVuc2lnbmVkIGxv
bmcsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIHZvaWQqKQor
REVMRUdBVEVfVE9fSU1QTF8yKHBpeGVsU3RvcmVpLCBHQzNEZW51bSwgR0MzRGludCkKK0RFTEVH
QVRFX1RPX0lNUExfMihwb2x5Z29uT2Zmc2V0LCBHQzNEZmxvYXQsIEdDM0RmbG9hdCkKK0RFTEVH
QVRFX1RPX0lNUExfNyhyZWFkUGl4ZWxzLCBHQzNEaW50LCBHQzNEaW50LCBHQzNEc2l6ZWksIEdD
M0RzaXplaSwgR0MzRGVudW0sIEdDM0RlbnVtLCBHQzNEdm9pZCopCiBERUxFR0FURV9UT19JTVBM
KHJlbGVhc2VTaGFkZXJDb21waWxlcikKLURFTEVHQVRFX1RPX0lNUExfNChyZW5kZXJidWZmZXJT
dG9yYWdlLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCB1bnNp
Z25lZCBsb25nKQotREVMRUdBVEVfVE9fSU1QTF8yKHNhbXBsZUNvdmVyYWdlLCBkb3VibGUsIGJv
b2wpCi1ERUxFR0FURV9UT19JTVBMXzQoc2Npc3NvciwgbG9uZywgbG9uZywgdW5zaWduZWQgbG9u
ZywgdW5zaWduZWQgbG9uZykKK0RFTEVHQVRFX1RPX0lNUExfNChyZW5kZXJidWZmZXJTdG9yYWdl
LCBHQzNEZW51bSwgR0MzRGVudW0sIEdDM0RzaXplaSwgR0MzRHNpemVpKQorREVMRUdBVEVfVE9f
SU1QTF8yKHNhbXBsZUNvdmVyYWdlLCBHQzNEY2xhbXBmLCBHQzNEYm9vbGVhbikKK0RFTEVHQVRF
X1RPX0lNUExfNChzY2lzc29yLCBHQzNEaW50LCBHQzNEaW50LCBHQzNEc2l6ZWksIEdDM0RzaXpl
aSkKIAogdm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpzaGFkZXJTb3VyY2UoUGxhdGZv
cm0zRE9iamVjdCBzaGFkZXIsIGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewogICAgIG1faW1wbC0+
c2hhZGVyU291cmNlKHNoYWRlciwgc3RyaW5nLnV0ZjgoKS5kYXRhKCkpOwogfQogCi1ERUxFR0FU
RV9UT19JTVBMXzMoc3RlbmNpbEZ1bmMsIHVuc2lnbmVkIGxvbmcsIGxvbmcsIHVuc2lnbmVkIGxv
bmcpCi1ERUxFR0FURV9UT19JTVBMXzQoc3RlbmNpbEZ1bmNTZXBhcmF0ZSwgdW5zaWduZWQgbG9u
ZywgdW5zaWduZWQgbG9uZywgbG9uZywgdW5zaWduZWQgbG9uZykKLURFTEVHQVRFX1RPX0lNUExf
MShzdGVuY2lsTWFzaywgdW5zaWduZWQgbG9uZykKLURFTEVHQVRFX1RPX0lNUExfMihzdGVuY2ls
TWFza1NlcGFyYXRlLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nKQotREVMRUdBVEVfVE9f
SU1QTF8zKHN0ZW5jaWxPcCwgdW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZywgdW5zaWduZWQg
bG9uZykKLURFTEVHQVRFX1RPX0lNUExfNChzdGVuY2lsT3BTZXBhcmF0ZSwgdW5zaWduZWQgbG9u
ZywgdW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZykKK0RFTEVHQVRF
X1RPX0lNUExfMyhzdGVuY2lsRnVuYywgR0MzRGVudW0sIEdDM0RpbnQsIEdDM0R1aW50KQorREVM
RUdBVEVfVE9fSU1QTF80KHN0ZW5jaWxGdW5jU2VwYXJhdGUsIEdDM0RlbnVtLCBHQzNEZW51bSwg
R0MzRGludCwgR0MzRHVpbnQpCitERUxFR0FURV9UT19JTVBMXzEoc3RlbmNpbE1hc2ssIEdDM0R1
aW50KQorREVMRUdBVEVfVE9fSU1QTF8yKHN0ZW5jaWxNYXNrU2VwYXJhdGUsIEdDM0RlbnVtLCBH
QzNEdWludCkKK0RFTEVHQVRFX1RPX0lNUExfMyhzdGVuY2lsT3AsIEdDM0RlbnVtLCBHQzNEZW51
bSwgR0MzRGVudW0pCitERUxFR0FURV9UT19JTVBMXzQoc3RlbmNpbE9wU2VwYXJhdGUsIEdDM0Rl
bnVtLCBHQzNEZW51bSwgR0MzRGVudW0sIEdDM0RlbnVtKQogCi1pbnQgR3JhcGhpY3NDb250ZXh0
M0RJbnRlcm5hbDo6dGV4SW1hZ2UyRCh1bnNpZ25lZCB0YXJnZXQsIHVuc2lnbmVkIGxldmVsLCB1
bnNpZ25lZCBpbnRlcm5hbGZvcm1hdCwgdW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCwg
dW5zaWduZWQgYm9yZGVyLCB1bnNpZ25lZCBmb3JtYXQsIHVuc2lnbmVkIHR5cGUsIHZvaWQqIHBp
eGVscykKK2Jvb2wgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dGV4SW1hZ2UyRChHQzNEZW51
bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RlbnVtIGludGVybmFsZm9ybWF0LCBHQzNEc2l6
ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RpbnQgYm9yZGVyLCBHQzNEZW51bSBmb3Jt
YXQsIEdDM0RlbnVtIHR5cGUsIEdDM0R2b2lkKiBwaXhlbHMpCiB7CiAgICAgbV9pbXBsLT50ZXhJ
bWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3Jk
ZXIsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzKTsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotREVMRUdBVEVfVE9fSU1QTF8zKHRleFBhcmFtZXRlcmYsIHVuc2lnbmVkLCB1bnNp
Z25lZCwgZmxvYXQpCi1ERUxFR0FURV9UT19JTVBMXzModGV4UGFyYW1ldGVyaSwgdW5zaWduZWQs
IHVuc2lnbmVkLCBpbnQpCitERUxFR0FURV9UT19JTVBMXzModGV4UGFyYW1ldGVyZiwgR0MzRGVu
dW0sIEdDM0RlbnVtLCBHQzNEZmxvYXQpCitERUxFR0FURV9UT19JTVBMXzModGV4UGFyYW1ldGVy
aSwgR0MzRGVudW0sIEdDM0RlbnVtLCBHQzNEaW50KQogCi1pbnQgR3JhcGhpY3NDb250ZXh0M0RJ
bnRlcm5hbDo6dGV4U3ViSW1hZ2UyRCh1bnNpZ25lZCB0YXJnZXQsIHVuc2lnbmVkIGxldmVsLCB1
bnNpZ25lZCB4b2Zmc2V0LCB1bnNpZ25lZCB5b2Zmc2V0LCB1bnNpZ25lZCB3aWR0aCwgdW5zaWdu
ZWQgaGVpZ2h0LCB1bnNpZ25lZCBmb3JtYXQsIHVuc2lnbmVkIHR5cGUsIHZvaWQqIHBpeGVscykK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dGV4U3ViSW1hZ2UyRChHQzNEZW51bSB0
YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RpbnQgeG9mZnNldCwgR0MzRGludCB5b2Zmc2V0LCBH
QzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVu
dW0gdHlwZSwgR0MzRHZvaWQqIHBpeGVscykKIHsKICAgICBtX2ltcGwtPnRleFN1YkltYWdlMkQo
dGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0
eXBlLCBwaXhlbHMpOwotICAgIHJldHVybiAwOwogfQogCi1ERUxFR0FURV9UT19JTVBMXzIodW5p
Zm9ybTFmLCBsb25nLCBmbG9hdCkKK0RFTEVHQVRFX1RPX0lNUExfMih1bmlmb3JtMWYsIEdDM0Rp
bnQsIEdDM0RmbG9hdCkKIAotdm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp1bmlmb3Jt
MWZ2KGxvbmcgbG9jYXRpb24sIGZsb2F0KiB2LCBpbnQgc2l6ZSkKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0M0RJbnRlcm5hbDo6dW5pZm9ybTFmdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQqIHYs
IEdDM0RzaXplaSBzaXplKQogewogICAgIG1faW1wbC0+dW5pZm9ybTFmdihsb2NhdGlvbiwgc2l6
ZSwgdik7CiB9CiAKLURFTEVHQVRFX1RPX0lNUExfMih1bmlmb3JtMWksIGxvbmcsIGludCkKK0RF
TEVHQVRFX1RPX0lNUExfMih1bmlmb3JtMWksIEdDM0RpbnQsIEdDM0RpbnQpCiAKLXZvaWQgR3Jh
cGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dW5pZm9ybTFpdihsb25nIGxvY2F0aW9uLCBpbnQqIHYs
IGludCBzaXplKQordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp1bmlmb3JtMWl2KEdD
M0RpbnQgbG9jYXRpb24sIEdDM0RpbnQqIHYsIEdDM0RzaXplaSBzaXplKQogewogICAgIG1faW1w
bC0+dW5pZm9ybTFpdihsb2NhdGlvbiwgc2l6ZSwgdik7CiB9CiAKLURFTEVHQVRFX1RPX0lNUExf
Myh1bmlmb3JtMmYsIGxvbmcsIGZsb2F0LCBmbG9hdCkKK0RFTEVHQVRFX1RPX0lNUExfMyh1bmlm
b3JtMmYsIEdDM0RpbnQsIEdDM0RmbG9hdCwgR0MzRGZsb2F0KQogCi12b2lkIEdyYXBoaWNzQ29u
dGV4dDNESW50ZXJuYWw6OnVuaWZvcm0yZnYobG9uZyBsb2NhdGlvbiwgZmxvYXQqIHYsIGludCBz
aXplKQordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp1bmlmb3JtMmZ2KEdDM0RpbnQg
bG9jYXRpb24sIEdDM0RmbG9hdCogdiwgR0MzRHNpemVpIHNpemUpCiB7CiAgICAgbV9pbXBsLT51
bmlmb3JtMmZ2KGxvY2F0aW9uLCBzaXplLCB2KTsKIH0KIAotREVMRUdBVEVfVE9fSU1QTF8zKHVu
aWZvcm0yaSwgbG9uZywgaW50LCBpbnQpCitERUxFR0FURV9UT19JTVBMXzModW5pZm9ybTJpLCBH
QzNEaW50LCBHQzNEaW50LCBHQzNEaW50KQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJu
YWw6OnVuaWZvcm0yaXYobG9uZyBsb2NhdGlvbiwgaW50KiB2LCBpbnQgc2l6ZSkKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dW5pZm9ybTJpdihHQzNEaW50IGxvY2F0aW9uLCBHQzNE
aW50KiB2LCBHQzNEc2l6ZWkgc2l6ZSkKIHsKICAgICBtX2ltcGwtPnVuaWZvcm0yaXYobG9jYXRp
b24sIHNpemUsIHYpOwogfQogCi1ERUxFR0FURV9UT19JTVBMXzQodW5pZm9ybTNmLCBsb25nLCBm
bG9hdCwgZmxvYXQsIGZsb2F0KQorREVMRUdBVEVfVE9fSU1QTF80KHVuaWZvcm0zZiwgR0MzRGlu
dCwgR0MzRGZsb2F0LCBHQzNEZmxvYXQsIEdDM0RmbG9hdCkKIAotdm9pZCBHcmFwaGljc0NvbnRl
eHQzREludGVybmFsOjp1bmlmb3JtM2Z2KGxvbmcgbG9jYXRpb24sIGZsb2F0KiB2LCBpbnQgc2l6
ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dW5pZm9ybTNmdihHQzNEaW50IGxv
Y2F0aW9uLCBHQzNEZmxvYXQqIHYsIEdDM0RzaXplaSBzaXplKQogewogICAgIG1faW1wbC0+dW5p
Zm9ybTNmdihsb2NhdGlvbiwgc2l6ZSwgdik7CiB9CiAKLURFTEVHQVRFX1RPX0lNUExfNCh1bmlm
b3JtM2ksIGxvbmcsIGludCwgaW50LCBpbnQpCitERUxFR0FURV9UT19JTVBMXzQodW5pZm9ybTNp
LCBHQzNEaW50LCBHQzNEaW50LCBHQzNEaW50LCBHQzNEaW50KQogCi12b2lkIEdyYXBoaWNzQ29u
dGV4dDNESW50ZXJuYWw6OnVuaWZvcm0zaXYobG9uZyBsb2NhdGlvbiwgaW50KiB2LCBpbnQgc2l6
ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dW5pZm9ybTNpdihHQzNEaW50IGxv
Y2F0aW9uLCBHQzNEaW50KiB2LCBHQzNEc2l6ZWkgc2l6ZSkKIHsKICAgICBtX2ltcGwtPnVuaWZv
cm0zaXYobG9jYXRpb24sIHNpemUsIHYpOwogfQogCi1ERUxFR0FURV9UT19JTVBMXzUodW5pZm9y
bTRmLCBsb25nLCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCkKK0RFTEVHQVRFX1RPX0lNUExf
NSh1bmlmb3JtNGYsIEdDM0RpbnQsIEdDM0RmbG9hdCwgR0MzRGZsb2F0LCBHQzNEZmxvYXQsIEdD
M0RmbG9hdCkKIAotdm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp1bmlmb3JtNGZ2KGxv
bmcgbG9jYXRpb24sIGZsb2F0KiB2LCBpbnQgc2l6ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJ
bnRlcm5hbDo6dW5pZm9ybTRmdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQqIHYsIEdDM0Rz
aXplaSBzaXplKQogewogICAgIG1faW1wbC0+dW5pZm9ybTRmdihsb2NhdGlvbiwgc2l6ZSwgdik7
CiB9CiAKLURFTEVHQVRFX1RPX0lNUExfNSh1bmlmb3JtNGksIGxvbmcsIGludCwgaW50LCBpbnQs
IGludCkKK0RFTEVHQVRFX1RPX0lNUExfNSh1bmlmb3JtNGksIEdDM0RpbnQsIEdDM0RpbnQsIEdD
M0RpbnQsIEdDM0RpbnQsIEdDM0RpbnQpCiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5h
bDo6dW5pZm9ybTRpdihsb25nIGxvY2F0aW9uLCBpbnQqIHYsIGludCBzaXplKQordm9pZCBHcmFw
aGljc0NvbnRleHQzREludGVybmFsOjp1bmlmb3JtNGl2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0Rp
bnQqIHYsIEdDM0RzaXplaSBzaXplKQogewogICAgIG1faW1wbC0+dW5pZm9ybTRpdihsb2NhdGlv
biwgc2l6ZSwgdik7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dW5pZm9y
bU1hdHJpeDJmdihsb25nIGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgZmxvYXQqIHZhbHVlLCBp
bnQgc2l6ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dW5pZm9ybU1hdHJpeDJm
dihHQzNEaW50IGxvY2F0aW9uLCBHQzNEYm9vbGVhbiB0cmFuc3Bvc2UsIEdDM0RmbG9hdCogdmFs
dWUsIEdDM0RzaXplaSBzaXplKQogewogICAgIG1faW1wbC0+dW5pZm9ybU1hdHJpeDJmdihsb2Nh
dGlvbiwgc2l6ZSwgdHJhbnNwb3NlLCB2YWx1ZSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0
M0RJbnRlcm5hbDo6dW5pZm9ybU1hdHJpeDNmdihsb25nIGxvY2F0aW9uLCBib29sIHRyYW5zcG9z
ZSwgZmxvYXQqIHZhbHVlLCBpbnQgc2l6ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5h
bDo6dW5pZm9ybU1hdHJpeDNmdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEYm9vbGVhbiB0cmFuc3Bv
c2UsIEdDM0RmbG9hdCogdmFsdWUsIEdDM0RzaXplaSBzaXplKQogewogICAgIG1faW1wbC0+dW5p
Zm9ybU1hdHJpeDNmdihsb2NhdGlvbiwgc2l6ZSwgdHJhbnNwb3NlLCB2YWx1ZSk7CiB9CiAKLXZv
aWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dW5pZm9ybU1hdHJpeDRmdihsb25nIGxvY2F0
aW9uLCBib29sIHRyYW5zcG9zZSwgZmxvYXQqIHZhbHVlLCBpbnQgc2l6ZSkKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0M0RJbnRlcm5hbDo6dW5pZm9ybU1hdHJpeDRmdihHQzNEaW50IGxvY2F0aW9uLCBH
QzNEYm9vbGVhbiB0cmFuc3Bvc2UsIEdDM0RmbG9hdCogdmFsdWUsIEdDM0RzaXplaSBzaXplKQog
ewogICAgIG1faW1wbC0+dW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbiwgc2l6ZSwgdHJhbnNwb3Nl
LCB2YWx1ZSk7CiB9CkBAIC02NTEsMzMgKzY1MCwzMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNE
SW50ZXJuYWw6OnVuaWZvcm1NCiBERUxFR0FURV9UT19JTVBMXzEodXNlUHJvZ3JhbSwgUGxhdGZv
cm0zRE9iamVjdCkKIERFTEVHQVRFX1RPX0lNUExfMSh2YWxpZGF0ZVByb2dyYW0sIFBsYXRmb3Jt
M0RPYmplY3QpCiAKLURFTEVHQVRFX1RPX0lNUExfMih2ZXJ0ZXhBdHRyaWIxZiwgdW5zaWduZWQg
bG9uZywgZmxvYXQpCi1ERUxFR0FURV9UT19JTVBMXzIodmVydGV4QXR0cmliMWZ2LCB1bnNpZ25l
ZCBsb25nLCBmbG9hdCopCi1ERUxFR0FURV9UT19JTVBMXzModmVydGV4QXR0cmliMmYsIHVuc2ln
bmVkIGxvbmcsIGZsb2F0LCBmbG9hdCkKLURFTEVHQVRFX1RPX0lNUExfMih2ZXJ0ZXhBdHRyaWIy
ZnYsIHVuc2lnbmVkIGxvbmcsIGZsb2F0KikKLURFTEVHQVRFX1RPX0lNUExfNCh2ZXJ0ZXhBdHRy
aWIzZiwgdW5zaWduZWQgbG9uZywgZmxvYXQsIGZsb2F0LCBmbG9hdCkKLURFTEVHQVRFX1RPX0lN
UExfMih2ZXJ0ZXhBdHRyaWIzZnYsIHVuc2lnbmVkIGxvbmcsIGZsb2F0KikKLURFTEVHQVRFX1RP
X0lNUExfNSh2ZXJ0ZXhBdHRyaWI0ZiwgdW5zaWduZWQgbG9uZywgZmxvYXQsIGZsb2F0LCBmbG9h
dCwgZmxvYXQpCi1ERUxFR0FURV9UT19JTVBMXzIodmVydGV4QXR0cmliNGZ2LCB1bnNpZ25lZCBs
b25nLCBmbG9hdCopCi1ERUxFR0FURV9UT19JTVBMXzYodmVydGV4QXR0cmliUG9pbnRlciwgdW5z
aWduZWQgbG9uZywgaW50LCBpbnQsIGJvb2wsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcp
Ci0KLURFTEVHQVRFX1RPX0lNUExfNCh2aWV3cG9ydCwgbG9uZywgbG9uZywgdW5zaWduZWQgbG9u
ZywgdW5zaWduZWQgbG9uZykKLQotREVMRUdBVEVfVE9fSU1QTF9SKGNyZWF0ZUJ1ZmZlciwgdW5z
aWduZWQpCi1ERUxFR0FURV9UT19JTVBMX1IoY3JlYXRlRnJhbWVidWZmZXIsIHVuc2lnbmVkKQot
REVMRUdBVEVfVE9fSU1QTF9SKGNyZWF0ZVByb2dyYW0sIHVuc2lnbmVkKQotREVMRUdBVEVfVE9f
SU1QTF9SKGNyZWF0ZVJlbmRlcmJ1ZmZlciwgdW5zaWduZWQpCi1ERUxFR0FURV9UT19JTVBMXzFS
KGNyZWF0ZVNoYWRlciwgdW5zaWduZWQgbG9uZywgdW5zaWduZWQpCi1ERUxFR0FURV9UT19JTVBM
X1IoY3JlYXRlVGV4dHVyZSwgdW5zaWduZWQpCi0KLURFTEVHQVRFX1RPX0lNUExfMShkZWxldGVC
dWZmZXIsIHVuc2lnbmVkKQotREVMRUdBVEVfVE9fSU1QTF8xKGRlbGV0ZUZyYW1lYnVmZmVyLCB1
bnNpZ25lZCkKLURFTEVHQVRFX1RPX0lNUExfMShkZWxldGVQcm9ncmFtLCB1bnNpZ25lZCkKLURF
TEVHQVRFX1RPX0lNUExfMShkZWxldGVSZW5kZXJidWZmZXIsIHVuc2lnbmVkKQotREVMRUdBVEVf
VE9fSU1QTF8xKGRlbGV0ZVNoYWRlciwgdW5zaWduZWQpCi1ERUxFR0FURV9UT19JTVBMXzEoZGVs
ZXRlVGV4dHVyZSwgdW5zaWduZWQpCitERUxFR0FURV9UT19JTVBMXzIodmVydGV4QXR0cmliMWYs
IEdDM0R1aW50LCBHQzNEZmxvYXQpCitERUxFR0FURV9UT19JTVBMXzIodmVydGV4QXR0cmliMWZ2
LCBHQzNEdWludCwgR0MzRGZsb2F0KikKK0RFTEVHQVRFX1RPX0lNUExfMyh2ZXJ0ZXhBdHRyaWIy
ZiwgR0MzRHVpbnQsIEdDM0RmbG9hdCwgR0MzRGZsb2F0KQorREVMRUdBVEVfVE9fSU1QTF8yKHZl
cnRleEF0dHJpYjJmdiwgR0MzRHVpbnQsIEdDM0RmbG9hdCopCitERUxFR0FURV9UT19JTVBMXzQo
dmVydGV4QXR0cmliM2YsIEdDM0R1aW50LCBHQzNEZmxvYXQsIEdDM0RmbG9hdCwgR0MzRGZsb2F0
KQorREVMRUdBVEVfVE9fSU1QTF8yKHZlcnRleEF0dHJpYjNmdiwgR0MzRHVpbnQsIEdDM0RmbG9h
dCopCitERUxFR0FURV9UT19JTVBMXzUodmVydGV4QXR0cmliNGYsIEdDM0R1aW50LCBHQzNEZmxv
YXQsIEdDM0RmbG9hdCwgR0MzRGZsb2F0LCBHQzNEZmxvYXQpCitERUxFR0FURV9UT19JTVBMXzIo
dmVydGV4QXR0cmliNGZ2LCBHQzNEdWludCwgR0MzRGZsb2F0KikKK0RFTEVHQVRFX1RPX0lNUExf
Nih2ZXJ0ZXhBdHRyaWJQb2ludGVyLCBHQzNEdWludCwgR0MzRGludCwgR0MzRGVudW0sIEdDM0Ri
b29sZWFuLCBHQzNEc2l6ZWksIEdDM0RzaXplaXB0cikKKworREVMRUdBVEVfVE9fSU1QTF80KHZp
ZXdwb3J0LCBHQzNEaW50LCBHQzNEaW50LCBHQzNEc2l6ZWksIEdDM0RzaXplaSkKKworREVMRUdB
VEVfVE9fSU1QTF9SKGNyZWF0ZUJ1ZmZlciwgUGxhdGZvcm0zRE9iamVjdCkKK0RFTEVHQVRFX1RP
X0lNUExfUihjcmVhdGVGcmFtZWJ1ZmZlciwgUGxhdGZvcm0zRE9iamVjdCkKK0RFTEVHQVRFX1RP
X0lNUExfUihjcmVhdGVQcm9ncmFtLCBQbGF0Zm9ybTNET2JqZWN0KQorREVMRUdBVEVfVE9fSU1Q
TF9SKGNyZWF0ZVJlbmRlcmJ1ZmZlciwgUGxhdGZvcm0zRE9iamVjdCkKK0RFTEVHQVRFX1RPX0lN
UExfMVIoY3JlYXRlU2hhZGVyLCBHQzNEZW51bSwgUGxhdGZvcm0zRE9iamVjdCkKK0RFTEVHQVRF
X1RPX0lNUExfUihjcmVhdGVUZXh0dXJlLCBQbGF0Zm9ybTNET2JqZWN0KQorCitERUxFR0FURV9U
T19JTVBMXzEoZGVsZXRlQnVmZmVyLCBQbGF0Zm9ybTNET2JqZWN0KQorREVMRUdBVEVfVE9fSU1Q
TF8xKGRlbGV0ZUZyYW1lYnVmZmVyLCBQbGF0Zm9ybTNET2JqZWN0KQorREVMRUdBVEVfVE9fSU1Q
TF8xKGRlbGV0ZVByb2dyYW0sIFBsYXRmb3JtM0RPYmplY3QpCitERUxFR0FURV9UT19JTVBMXzEo
ZGVsZXRlUmVuZGVyYnVmZmVyLCBQbGF0Zm9ybTNET2JqZWN0KQorREVMRUdBVEVfVE9fSU1QTF8x
KGRlbGV0ZVNoYWRlciwgUGxhdGZvcm0zRE9iamVjdCkKK0RFTEVHQVRFX1RPX0lNUExfMShkZWxl
dGVUZXh0dXJlLCBQbGF0Zm9ybTNET2JqZWN0KQogCi1ERUxFR0FURV9UT19JTVBMXzEoc3ludGhl
c2l6ZUdMRXJyb3IsIHVuc2lnbmVkIGxvbmcpCitERUxFR0FURV9UT19JTVBMXzEoc3ludGhlc2l6
ZUdMRXJyb3IsIEdDM0RlbnVtKQogCiBFeHRlbnNpb25zM0QqIEdyYXBoaWNzQ29udGV4dDNESW50
ZXJuYWw6OmdldEV4dGVuc2lvbnMoKQogewpAQCAtNzM2LDExICs3MzUsMTEgQEAgYm9vbCBHcmFw
aGljc0NvbnRleHQzREludGVybmFsOjplbnN1cmVFeAogICAgIHJldHVybiBtX2VuYWJsZWRFeHRl
bnNpb25zLmNvbnRhaW5zKG5hbWUpOwogfQogCi1ERUxFR0FURV9UT19JTVBMXzRSKG1hcEJ1ZmZl
clN1YkRhdGFDSFJPTUlVTSwgdW5zaWduZWQsIGludCwgaW50LCB1bnNpZ25lZCwgdm9pZCopCi1E
RUxFR0FURV9UT19JTVBMXzEodW5tYXBCdWZmZXJTdWJEYXRhQ0hST01JVU0sIGNvbnN0IHZvaWQq
KQotREVMRUdBVEVfVE9fSU1QTF85UihtYXBUZXhTdWJJbWFnZTJEQ0hST01JVU0sIHVuc2lnbmVk
LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgdW5zaWduZWQsIHVuc2lnbmVkLCB1bnNpZ25lZCwg
dm9pZCopCi1ERUxFR0FURV9UT19JTVBMXzEodW5tYXBUZXhTdWJJbWFnZTJEQ0hST01JVU0sIGNv
bnN0IHZvaWQqKQotREVMRUdBVEVfVE9fSU1QTF8yKGNvcHlUZXh0dXJlVG9QYXJlbnRUZXh0dXJl
Q0hST01JVU0sIHVuc2lnbmVkLCB1bnNpZ25lZCkKK0RFTEVHQVRFX1RPX0lNUExfNFIobWFwQnVm
ZmVyU3ViRGF0YUNIUk9NSVVNLCBHQzNEZW51bSwgR0MzRHNpemVpcHRyLCBHQzNEc2l6ZWksIEdD
M0RlbnVtLCBHQzNEdm9pZCopCitERUxFR0FURV9UT19JTVBMXzEodW5tYXBCdWZmZXJTdWJEYXRh
Q0hST01JVU0sIGNvbnN0IEdDM0R2b2lkKikKK0RFTEVHQVRFX1RPX0lNUExfOVIobWFwVGV4U3Vi
SW1hZ2UyRENIUk9NSVVNLCBHQzNEZW51bSwgR0MzRGludCwgR0MzRGludCwgR0MzRGludCwgR0Mz
RHNpemVpLCBHQzNEc2l6ZWksIEdDM0RlbnVtLCBHQzNEZW51bSwgR0MzRGVudW0sIEdDM0R2b2lk
KikKK0RFTEVHQVRFX1RPX0lNUExfMSh1bm1hcFRleFN1YkltYWdlMkRDSFJPTUlVTSwgY29uc3Qg
R0MzRHZvaWQqKQorREVMRUdBVEVfVE9fSU1QTF8yKGNvcHlUZXh0dXJlVG9QYXJlbnRUZXh0dXJl
Q0hST01JVU0sIFBsYXRmb3JtM0RPYmplY3QsIFBsYXRmb3JtM0RPYmplY3QpCiAKIC8vLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQogLy8gR3JhcGhpY3NDb250ZXh0M0QKQEAgLTg0NSw2ICs4NDQsMTIgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQzRDo6bmFtZSh0MSBhMSwgdDIgYQogICAgIG1faW50ZXJuYWwtPm5hbWUo
YTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4KTsgICAgICBcCiB9CiAKKyNkZWZpbmUgREVM
RUdBVEVfVE9fSU5URVJOQUxfOShuYW1lLCB0MSwgdDIsIHQzLCB0NCwgdDUsIHQ2LCB0NywgdDgs
IHQ5KSBcCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpuYW1lKHQxIGExLCB0MiBhMiwgdDMgYTMs
IHQ0IGE0LCB0NSBhNSwgdDYgYTYsIHQ3IGE3LCB0OCBhOCwgdDkgYTkpIFwKK3sgXAorICAgIG1f
aW50ZXJuYWwtPm5hbWUoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4LCBhOSk7ICAgXAor
fQorCiAjZGVmaW5lIERFTEVHQVRFX1RPX0lOVEVSTkFMXzlSKG5hbWUsIHQxLCB0MiwgdDMsIHQ0
LCB0NSwgdDYsIHQ3LCB0OCwgdDksIHJ0KSBcCiBydCBHcmFwaGljc0NvbnRleHQzRDo6bmFtZSh0
MSBhMSwgdDIgYTIsIHQzIGEzLCB0NCBhNCwgdDUgYTUsIHQ2IGE2LCB0NyBhNywgdDggYTgsIHQ5
IGE5KSBcCiB7IFwKQEAgLTg5NSwxNzAgKzkwMCwxNTAgQEAgUGxhdGZvcm1MYXllciogR3JhcGhp
Y3NDb250ZXh0M0Q6OnBsYXRmbwogI2VuZGlmCiAKIERFTEVHQVRFX1RPX0lOVEVSTkFMKG1ha2VD
b250ZXh0Q3VycmVudCkKLURFTEVHQVRFX1RPX0lOVEVSTkFMXzFSKHNpemVJbkJ5dGVzLCBpbnQs
IGludCkKK0RFTEVHQVRFX1RPX0lOVEVSTkFMXzFSKHNpemVJbkJ5dGVzLCBHQzNEZW51bSwgdW5z
aWduZWQgaW50KQogREVMRUdBVEVfVE9fSU5URVJOQUxfMihyZXNoYXBlLCBpbnQsIGludCkKIERF
TEVHQVRFX1RPX0lOVEVSTkFMX1IoZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUsIEludFNpemUp
CiAKLURFTEVHQVRFX1RPX0lOVEVSTkFMXzEoYWN0aXZlVGV4dHVyZSwgdW5zaWduZWQgbG9uZykK
K0RFTEVHQVRFX1RPX0lOVEVSTkFMXzEoYWN0aXZlVGV4dHVyZSwgR0MzRGVudW0pCiBERUxFR0FU
RV9UT19JTlRFUk5BTF8yKGF0dGFjaFNoYWRlciwgUGxhdGZvcm0zRE9iamVjdCwgUGxhdGZvcm0z
RE9iamVjdCkKLURFTEVHQVRFX1RPX0lOVEVSTkFMXzMoYmluZEF0dHJpYkxvY2F0aW9uLCBQbGF0
Zm9ybTNET2JqZWN0LCB1bnNpZ25lZCBsb25nLCBjb25zdCBTdHJpbmcmKQorREVMRUdBVEVfVE9f
SU5URVJOQUxfMyhiaW5kQXR0cmliTG9jYXRpb24sIFBsYXRmb3JtM0RPYmplY3QsIEdDM0R1aW50
LCBjb25zdCBTdHJpbmcmKQogCi1ERUxFR0FURV9UT19JTlRFUk5BTF8yKGJpbmRCdWZmZXIsIHVu
c2lnbmVkIGxvbmcsIFBsYXRmb3JtM0RPYmplY3QpCi1ERUxFR0FURV9UT19JTlRFUk5BTF8yKGJp
bmRGcmFtZWJ1ZmZlciwgdW5zaWduZWQgbG9uZywgUGxhdGZvcm0zRE9iamVjdCkKLURFTEVHQVRF
X1RPX0lOVEVSTkFMXzIoYmluZFJlbmRlcmJ1ZmZlciwgdW5zaWduZWQgbG9uZywgUGxhdGZvcm0z
RE9iamVjdCkKLURFTEVHQVRFX1RPX0lOVEVSTkFMXzIoYmluZFRleHR1cmUsIHVuc2lnbmVkIGxv
bmcsIFBsYXRmb3JtM0RPYmplY3QpCi1ERUxFR0FURV9UT19JTlRFUk5BTF80KGJsZW5kQ29sb3Is
IGRvdWJsZSwgZG91YmxlLCBkb3VibGUsIGRvdWJsZSkKLURFTEVHQVRFX1RPX0lOVEVSTkFMXzEo
YmxlbmRFcXVhdGlvbiwgdW5zaWduZWQgbG9uZykKLURFTEVHQVRFX1RPX0lOVEVSTkFMXzIoYmxl
bmRFcXVhdGlvblNlcGFyYXRlLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nKQotREVMRUdB
VEVfVE9fSU5URVJOQUxfMihibGVuZEZ1bmMsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcp
Ci1ERUxFR0FURV9UT19JTlRFUk5BTF80KGJsZW5kRnVuY1NlcGFyYXRlLCB1bnNpZ25lZCBsb25n
LCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nKQotCi1ERUxFR0FU
RV9UT19JTlRFUk5BTF8zKGJ1ZmZlckRhdGEsIHVuc2lnbmVkIGxvbmcsIGludCwgdW5zaWduZWQg
bG9uZykKLURFTEVHQVRFX1RPX0lOVEVSTkFMXzQoYnVmZmVyRGF0YSwgdW5zaWduZWQgbG9uZywg
aW50LCBjb25zdCB2b2lkKiwgdW5zaWduZWQgbG9uZykKLURFTEVHQVRFX1RPX0lOVEVSTkFMXzQo
YnVmZmVyU3ViRGF0YSwgdW5zaWduZWQgbG9uZywgbG9uZywgaW50LCBjb25zdCB2b2lkKikKLQot
REVMRUdBVEVfVE9fSU5URVJOQUxfMVIoY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cywgdW5zaWduZWQg
bG9uZywgdW5zaWduZWQgbG9uZykKLURFTEVHQVRFX1RPX0lOVEVSTkFMXzEoY2xlYXIsIHVuc2ln
bmVkIGxvbmcpCi1ERUxFR0FURV9UT19JTlRFUk5BTF80KGNsZWFyQ29sb3IsIGRvdWJsZSwgZG91
YmxlLCBkb3VibGUsIGRvdWJsZSkKLURFTEVHQVRFX1RPX0lOVEVSTkFMXzEoY2xlYXJEZXB0aCwg
ZG91YmxlKQotREVMRUdBVEVfVE9fSU5URVJOQUxfMShjbGVhclN0ZW5jaWwsIGxvbmcpCi1ERUxF
R0FURV9UT19JTlRFUk5BTF80KGNvbG9yTWFzaywgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCkKK0RF
TEVHQVRFX1RPX0lOVEVSTkFMXzIoYmluZEJ1ZmZlciwgR0MzRGVudW0sIFBsYXRmb3JtM0RPYmpl
Y3QpCitERUxFR0FURV9UT19JTlRFUk5BTF8yKGJpbmRGcmFtZWJ1ZmZlciwgR0MzRGVudW0sIFBs
YXRmb3JtM0RPYmplY3QpCitERUxFR0FURV9UT19JTlRFUk5BTF8yKGJpbmRSZW5kZXJidWZmZXIs
IEdDM0RlbnVtLCBQbGF0Zm9ybTNET2JqZWN0KQorREVMRUdBVEVfVE9fSU5URVJOQUxfMihiaW5k
VGV4dHVyZSwgR0MzRGVudW0sIFBsYXRmb3JtM0RPYmplY3QpCitERUxFR0FURV9UT19JTlRFUk5B
TF80KGJsZW5kQ29sb3IsIEdDM0RjbGFtcGYsIEdDM0RjbGFtcGYsIEdDM0RjbGFtcGYsIEdDM0Rj
bGFtcGYpCitERUxFR0FURV9UT19JTlRFUk5BTF8xKGJsZW5kRXF1YXRpb24sIEdDM0RlbnVtKQor
REVMRUdBVEVfVE9fSU5URVJOQUxfMihibGVuZEVxdWF0aW9uU2VwYXJhdGUsIEdDM0RlbnVtLCBH
QzNEZW51bSkKK0RFTEVHQVRFX1RPX0lOVEVSTkFMXzIoYmxlbmRGdW5jLCBHQzNEZW51bSwgR0Mz
RGVudW0pCitERUxFR0FURV9UT19JTlRFUk5BTF80KGJsZW5kRnVuY1NlcGFyYXRlLCBHQzNEZW51
bSwgR0MzRGVudW0sIEdDM0RlbnVtLCBHQzNEZW51bSkKKworREVMRUdBVEVfVE9fSU5URVJOQUxf
MyhidWZmZXJEYXRhLCBHQzNEZW51bSwgR0MzRHNpemVpLCBHQzNEZW51bSkKK0RFTEVHQVRFX1RP
X0lOVEVSTkFMXzQoYnVmZmVyRGF0YSwgR0MzRGVudW0sIEdDM0RzaXplaSwgY29uc3QgR0MzRHZv
aWQqLCBHQzNEZW51bSkKK0RFTEVHQVRFX1RPX0lOVEVSTkFMXzQoYnVmZmVyU3ViRGF0YSwgR0Mz
RGVudW0sIEdDM0RzaXplaXB0ciwgR0MzRHNpemVpLCBjb25zdCBHQzNEdm9pZCopCisKK0RFTEVH
QVRFX1RPX0lOVEVSTkFMXzFSKGNoZWNrRnJhbWVidWZmZXJTdGF0dXMsIEdDM0RlbnVtLCBHQzNE
ZW51bSkKK0RFTEVHQVRFX1RPX0lOVEVSTkFMXzEoY2xlYXIsIEdDM0RiaXRmaWVsZCkKK0RFTEVH
QVRFX1RPX0lOVEVSTkFMXzQoY2xlYXJDb2xvciwgR0MzRGNsYW1wZiwgR0MzRGNsYW1wZiwgR0Mz
RGNsYW1wZiwgR0MzRGNsYW1wZikKK0RFTEVHQVRFX1RPX0lOVEVSTkFMXzEoY2xlYXJEZXB0aCwg
R0MzRGNsYW1wZikKK0RFTEVHQVRFX1RPX0lOVEVSTkFMXzEoY2xlYXJTdGVuY2lsLCBHQzNEaW50
KQorREVMRUdBVEVfVE9fSU5URVJOQUxfNChjb2xvck1hc2ssIEdDM0Rib29sZWFuLCBHQzNEYm9v
bGVhbiwgR0MzRGJvb2xlYW4sIEdDM0Rib29sZWFuKQogREVMRUdBVEVfVE9fSU5URVJOQUxfMShj
b21waWxlU2hhZGVyLCBQbGF0Zm9ybTNET2JqZWN0KQogCi1ERUxFR0FURV9UT19JTlRFUk5BTF84
KGNvcHlUZXhJbWFnZTJELCB1bnNpZ25lZCBsb25nLCBsb25nLCB1bnNpZ25lZCBsb25nLCBsb25n
LCBsb25nLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCBsb25nKQotREVMRUdBVEVfVE9f
SU5URVJOQUxfOChjb3B5VGV4U3ViSW1hZ2UyRCwgdW5zaWduZWQgbG9uZywgbG9uZywgbG9uZywg
bG9uZywgbG9uZywgbG9uZywgdW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZykKLURFTEVHQVRF
X1RPX0lOVEVSTkFMXzEoY3VsbEZhY2UsIHVuc2lnbmVkIGxvbmcpCi1ERUxFR0FURV9UT19JTlRF
Uk5BTF8xKGRlcHRoRnVuYywgdW5zaWduZWQgbG9uZykKLURFTEVHQVRFX1RPX0lOVEVSTkFMXzEo
ZGVwdGhNYXNrLCBib29sKQotREVMRUdBVEVfVE9fSU5URVJOQUxfMihkZXB0aFJhbmdlLCBkb3Vi
bGUsIGRvdWJsZSkKK0RFTEVHQVRFX1RPX0lOVEVSTkFMXzgoY29weVRleEltYWdlMkQsIEdDM0Rl
bnVtLCBHQzNEaW50LCBHQzNEZW51bSwgR0MzRGludCwgR0MzRGludCwgR0MzRHNpemVpLCBHQzNE
c2l6ZWksIEdDM0RpbnQpCitERUxFR0FURV9UT19JTlRFUk5BTF84KGNvcHlUZXhTdWJJbWFnZTJE
LCBHQzNEZW51bSwgR0MzRGludCwgR0MzRGludCwgR0MzRGludCwgR0MzRGludCwgR0MzRGludCwg
R0MzRHNpemVpLCBHQzNEc2l6ZWkpCitERUxFR0FURV9UT19JTlRFUk5BTF8xKGN1bGxGYWNlLCBH
QzNEZW51bSkKK0RFTEVHQVRFX1RPX0lOVEVSTkFMXzEoZGVwdGhGdW5jLCBHQzNEZW51bSkKK0RF
TEVHQVRFX1RPX0lOVEVSTkFMXzEoZGVwdGhNYXNrLCBHQzNEYm9vbGVhbikKK0RFTEVHQVRFX1RP
X0lOVEVSTkFMXzIoZGVwdGhSYW5nZSwgR0MzRGNsYW1wZiwgR0MzRGNsYW1wZikKIERFTEVHQVRF
X1RPX0lOVEVSTkFMXzIoZGV0YWNoU2hhZGVyLCBQbGF0Zm9ybTNET2JqZWN0LCBQbGF0Zm9ybTNE
T2JqZWN0KQotREVMRUdBVEVfVE9fSU5URVJOQUxfMShkaXNhYmxlLCB1bnNpZ25lZCBsb25nKQot
REVMRUdBVEVfVE9fSU5URVJOQUxfMShkaXNhYmxlVmVydGV4QXR0cmliQXJyYXksIHVuc2lnbmVk
IGxvbmcpCi1ERUxFR0FURV9UT19JTlRFUk5BTF8zKGRyYXdBcnJheXMsIHVuc2lnbmVkIGxvbmcs
IGxvbmcsIGxvbmcpCi1ERUxFR0FURV9UT19JTlRFUk5BTF80KGRyYXdFbGVtZW50cywgdW5zaWdu
ZWQgbG9uZywgdW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZywgbG9uZykKK0RFTEVHQVRFX1RP
X0lOVEVSTkFMXzEoZGlzYWJsZSwgR0MzRGVudW0pCitERUxFR0FURV9UT19JTlRFUk5BTF8xKGRp
c2FibGVWZXJ0ZXhBdHRyaWJBcnJheSwgR0MzRHVpbnQpCitERUxFR0FURV9UT19JTlRFUk5BTF8z
KGRyYXdBcnJheXMsIEdDM0RlbnVtLCBHQzNEaW50LCBHQzNEc2l6ZWkpCitERUxFR0FURV9UT19J
TlRFUk5BTF80KGRyYXdFbGVtZW50cywgR0MzRGVudW0sIEdDM0RzaXplaSwgR0MzRGVudW0sIEdD
M0RzaXplaXB0cikKIAotREVMRUdBVEVfVE9fSU5URVJOQUxfMShlbmFibGUsIHVuc2lnbmVkIGxv
bmcpCi1ERUxFR0FURV9UT19JTlRFUk5BTF8xKGVuYWJsZVZlcnRleEF0dHJpYkFycmF5LCB1bnNp
Z25lZCBsb25nKQorREVMRUdBVEVfVE9fSU5URVJOQUxfMShlbmFibGUsIEdDM0RlbnVtKQorREVM
RUdBVEVfVE9fSU5URVJOQUxfMShlbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSwgR0MzRHVpbnQpCiBE
RUxFR0FURV9UT19JTlRFUk5BTChmaW5pc2gpCiBERUxFR0FURV9UT19JTlRFUk5BTChmbHVzaCkK
LURFTEVHQVRFX1RPX0lOVEVSTkFMXzQoZnJhbWVidWZmZXJSZW5kZXJidWZmZXIsIHVuc2lnbmVk
IGxvbmcsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIFBsYXRmb3JtM0RPYmplY3QpCi1E
RUxFR0FURV9UT19JTlRFUk5BTF81KGZyYW1lYnVmZmVyVGV4dHVyZTJELCB1bnNpZ25lZCBsb25n
LCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCBQbGF0Zm9ybTNET2JqZWN0LCBsb25nKQot
REVMRUdBVEVfVE9fSU5URVJOQUxfMShmcm9udEZhY2UsIHVuc2lnbmVkIGxvbmcpCi1ERUxFR0FU
RV9UT19JTlRFUk5BTF8xKGdlbmVyYXRlTWlwbWFwLCB1bnNpZ25lZCBsb25nKQotCi1ERUxFR0FU
RV9UT19JTlRFUk5BTF8zUihnZXRBY3RpdmVBdHRyaWIsIFBsYXRmb3JtM0RPYmplY3QsIHVuc2ln
bmVkIGxvbmcsIEFjdGl2ZUluZm8mLCBib29sKQotREVMRUdBVEVfVE9fSU5URVJOQUxfM1IoZ2V0
QWN0aXZlVW5pZm9ybSwgUGxhdGZvcm0zRE9iamVjdCwgdW5zaWduZWQgbG9uZywgQWN0aXZlSW5m
byYsIGJvb2wpCi0KLURFTEVHQVRFX1RPX0lOVEVSTkFMXzQoZ2V0QXR0YWNoZWRTaGFkZXJzLCBQ
bGF0Zm9ybTNET2JqZWN0LCBpbnQsIGludCosIHVuc2lnbmVkIGludCopCi0KLURFTEVHQVRFX1RP
X0lOVEVSTkFMXzJSKGdldEF0dHJpYkxvY2F0aW9uLCBQbGF0Zm9ybTNET2JqZWN0LCBjb25zdCBT
dHJpbmcmLCBpbnQpCi0KLURFTEVHQVRFX1RPX0lOVEVSTkFMXzIoZ2V0Qm9vbGVhbnYsIHVuc2ln
bmVkIGxvbmcsIHVuc2lnbmVkIGNoYXIqKQotCi1ERUxFR0FURV9UT19JTlRFUk5BTF8zKGdldEJ1
ZmZlclBhcmFtZXRlcml2LCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCBpbnQqKQotCitE
RUxFR0FURV9UT19JTlRFUk5BTF80KGZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyLCBHQzNEZW51bSwg
R0MzRGVudW0sIEdDM0RlbnVtLCBQbGF0Zm9ybTNET2JqZWN0KQorREVMRUdBVEVfVE9fSU5URVJO
QUxfNShmcmFtZWJ1ZmZlclRleHR1cmUyRCwgR0MzRGVudW0sIEdDM0RlbnVtLCBHQzNEZW51bSwg
UGxhdGZvcm0zRE9iamVjdCwgR0MzRGludCkKK0RFTEVHQVRFX1RPX0lOVEVSTkFMXzEoZnJvbnRG
YWNlLCBHQzNEZW51bSkKK0RFTEVHQVRFX1RPX0lOVEVSTkFMXzEoZ2VuZXJhdGVNaXBtYXAsIEdD
M0RlbnVtKQorCitERUxFR0FURV9UT19JTlRFUk5BTF8zUihnZXRBY3RpdmVBdHRyaWIsIFBsYXRm
b3JtM0RPYmplY3QsIEdDM0R1aW50LCBBY3RpdmVJbmZvJiwgYm9vbCkKK0RFTEVHQVRFX1RPX0lO
VEVSTkFMXzNSKGdldEFjdGl2ZVVuaWZvcm0sIFBsYXRmb3JtM0RPYmplY3QsIEdDM0R1aW50LCBB
Y3RpdmVJbmZvJiwgYm9vbCkKK0RFTEVHQVRFX1RPX0lOVEVSTkFMXzQoZ2V0QXR0YWNoZWRTaGFk
ZXJzLCBQbGF0Zm9ybTNET2JqZWN0LCBHQzNEc2l6ZWksIEdDM0RzaXplaSosIFBsYXRmb3JtM0RP
YmplY3QqKQorREVMRUdBVEVfVE9fSU5URVJOQUxfMlIoZ2V0QXR0cmliTG9jYXRpb24sIFBsYXRm
b3JtM0RPYmplY3QsIGNvbnN0IFN0cmluZyYsIEdDM0RpbnQpCitERUxFR0FURV9UT19JTlRFUk5B
TF8yKGdldEJvb2xlYW52LCBHQzNEZW51bSwgR0MzRGJvb2xlYW4qKQorREVMRUdBVEVfVE9fSU5U
RVJOQUxfMyhnZXRCdWZmZXJQYXJhbWV0ZXJpdiwgR0MzRGVudW0sIEdDM0RlbnVtLCBHQzNEaW50
KikKIERFTEVHQVRFX1RPX0lOVEVSTkFMX1IoZ2V0Q29udGV4dEF0dHJpYnV0ZXMsIEdyYXBoaWNz
Q29udGV4dDNEOjpBdHRyaWJ1dGVzKQotCi1ERUxFR0FURV9UT19JTlRFUk5BTF9SKGdldEVycm9y
LCB1bnNpZ25lZCBsb25nKQotCi1ERUxFR0FURV9UT19JTlRFUk5BTF8yKGdldEZsb2F0diwgdW5z
aWduZWQgbG9uZywgZmxvYXQqKQotCi1ERUxFR0FURV9UT19JTlRFUk5BTF80KGdldEZyYW1lYnVm
ZmVyQXR0YWNobWVudFBhcmFtZXRlcml2LCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCB1
bnNpZ25lZCBsb25nLCBpbnQqKQotCi1ERUxFR0FURV9UT19JTlRFUk5BTF8yKGdldEludGVnZXJ2
LCB1bnNpZ25lZCBsb25nLCBpbnQqKQotCi1ERUxFR0FURV9UT19JTlRFUk5BTF8zKGdldFByb2dy
YW1pdiwgUGxhdGZvcm0zRE9iamVjdCwgdW5zaWduZWQgbG9uZywgaW50KikKLQorREVMRUdBVEVf
VE9fSU5URVJOQUxfUihnZXRFcnJvciwgR0MzRGVudW0pCitERUxFR0FURV9UT19JTlRFUk5BTF8y
KGdldEZsb2F0diwgR0MzRGVudW0sIEdDM0RmbG9hdCopCitERUxFR0FURV9UT19JTlRFUk5BTF80
KGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2LCBHQzNEZW51bSwgR0MzRGVudW0s
IEdDM0RlbnVtLCBHQzNEaW50KikKK0RFTEVHQVRFX1RPX0lOVEVSTkFMXzIoZ2V0SW50ZWdlcnYs
IEdDM0RlbnVtLCBHQzNEaW50KikKK0RFTEVHQVRFX1RPX0lOVEVSTkFMXzMoZ2V0UHJvZ3JhbWl2
LCBQbGF0Zm9ybTNET2JqZWN0LCBHQzNEZW51bSwgR0MzRGludCopCiBERUxFR0FURV9UT19JTlRF
Uk5BTF8xUihnZXRQcm9ncmFtSW5mb0xvZywgUGxhdGZvcm0zRE9iamVjdCwgU3RyaW5nKQotCi1E
RUxFR0FURV9UT19JTlRFUk5BTF8zKGdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2LCB1bnNpZ25l
ZCBsb25nLCB1bnNpZ25lZCBsb25nLCBpbnQqKQotCi1ERUxFR0FURV9UT19JTlRFUk5BTF8zKGdl
dFNoYWRlcml2LCBQbGF0Zm9ybTNET2JqZWN0LCB1bnNpZ25lZCBsb25nLCBpbnQqKQotCitERUxF
R0FURV9UT19JTlRFUk5BTF8zKGdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2LCBHQzNEZW51bSwg
R0MzRGVudW0sIEdDM0RpbnQqKQorREVMRUdBVEVfVE9fSU5URVJOQUxfMyhnZXRTaGFkZXJpdiwg
UGxhdGZvcm0zRE9iamVjdCwgR0MzRGVudW0sIEdDM0RpbnQqKQogREVMRUdBVEVfVE9fSU5URVJO
QUxfMVIoZ2V0U2hhZGVySW5mb0xvZywgUGxhdGZvcm0zRE9iamVjdCwgU3RyaW5nKQotCiBERUxF
R0FURV9UT19JTlRFUk5BTF8xUihnZXRTaGFkZXJTb3VyY2UsIFBsYXRmb3JtM0RPYmplY3QsIFN0
cmluZykKLURFTEVHQVRFX1RPX0lOVEVSTkFMXzFSKGdldFN0cmluZywgdW5zaWduZWQgbG9uZywg
U3RyaW5nKQotCi1ERUxFR0FURV9UT19JTlRFUk5BTF8zKGdldFRleFBhcmFtZXRlcmZ2LCB1bnNp
Z25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCBmbG9hdCopCi1ERUxFR0FURV9UT19JTlRFUk5BTF8z
KGdldFRleFBhcmFtZXRlcml2LCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCBpbnQqKQot
Ci1ERUxFR0FURV9UT19JTlRFUk5BTF8zKGdldFVuaWZvcm1mdiwgUGxhdGZvcm0zRE9iamVjdCwg
bG9uZywgZmxvYXQqKQotREVMRUdBVEVfVE9fSU5URVJOQUxfMyhnZXRVbmlmb3JtaXYsIFBsYXRm
b3JtM0RPYmplY3QsIGxvbmcsIGludCopCi0KLURFTEVHQVRFX1RPX0lOVEVSTkFMXzJSKGdldFVu
aWZvcm1Mb2NhdGlvbiwgUGxhdGZvcm0zRE9iamVjdCwgY29uc3QgU3RyaW5nJiwgbG9uZykKLQot
REVMRUdBVEVfVE9fSU5URVJOQUxfMyhnZXRWZXJ0ZXhBdHRyaWJmdiwgdW5zaWduZWQgbG9uZywg
dW5zaWduZWQgbG9uZywgZmxvYXQqKQotREVMRUdBVEVfVE9fSU5URVJOQUxfMyhnZXRWZXJ0ZXhB
dHRyaWJpdiwgdW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZywgaW50KikKLQotREVMRUdBVEVf
VE9fSU5URVJOQUxfMlIoZ2V0VmVydGV4QXR0cmliT2Zmc2V0LCB1bnNpZ25lZCBsb25nLCB1bnNp
Z25lZCBsb25nLCBsb25nKQotCi1ERUxFR0FURV9UT19JTlRFUk5BTF8yKGhpbnQsIHVuc2lnbmVk
IGxvbmcsIHVuc2lnbmVkIGxvbmcpCi1ERUxFR0FURV9UT19JTlRFUk5BTF8xUihpc0J1ZmZlciwg
UGxhdGZvcm0zRE9iamVjdCwgYm9vbCkKLURFTEVHQVRFX1RPX0lOVEVSTkFMXzFSKGlzRW5hYmxl
ZCwgdW5zaWduZWQgbG9uZywgYm9vbCkKLURFTEVHQVRFX1RPX0lOVEVSTkFMXzFSKGlzRnJhbWVi
dWZmZXIsIFBsYXRmb3JtM0RPYmplY3QsIGJvb2wpCi1ERUxFR0FURV9UT19JTlRFUk5BTF8xUihp
c1Byb2dyYW0sIFBsYXRmb3JtM0RPYmplY3QsIGJvb2wpCi1ERUxFR0FURV9UT19JTlRFUk5BTF8x
Uihpc1JlbmRlcmJ1ZmZlciwgUGxhdGZvcm0zRE9iamVjdCwgYm9vbCkKLURFTEVHQVRFX1RPX0lO
VEVSTkFMXzFSKGlzU2hhZGVyLCBQbGF0Zm9ybTNET2JqZWN0LCBib29sKQotREVMRUdBVEVfVE9f
SU5URVJOQUxfMVIoaXNUZXh0dXJlLCBQbGF0Zm9ybTNET2JqZWN0LCBib29sKQotREVMRUdBVEVf
VE9fSU5URVJOQUxfMShsaW5lV2lkdGgsIGRvdWJsZSkKK0RFTEVHQVRFX1RPX0lOVEVSTkFMXzFS
KGdldFN0cmluZywgR0MzRGVudW0sIFN0cmluZykKK0RFTEVHQVRFX1RPX0lOVEVSTkFMXzMoZ2V0
VGV4UGFyYW1ldGVyZnYsIEdDM0RlbnVtLCBHQzNEZW51bSwgR0MzRGZsb2F0KikKK0RFTEVHQVRF
X1RPX0lOVEVSTkFMXzMoZ2V0VGV4UGFyYW1ldGVyaXYsIEdDM0RlbnVtLCBHQzNEZW51bSwgR0Mz
RGludCopCitERUxFR0FURV9UT19JTlRFUk5BTF8zKGdldFVuaWZvcm1mdiwgUGxhdGZvcm0zRE9i
amVjdCwgR0MzRGludCwgR0MzRGZsb2F0KikKK0RFTEVHQVRFX1RPX0lOVEVSTkFMXzMoZ2V0VW5p
Zm9ybWl2LCBQbGF0Zm9ybTNET2JqZWN0LCBHQzNEaW50LCBHQzNEaW50KikKK0RFTEVHQVRFX1RP
X0lOVEVSTkFMXzJSKGdldFVuaWZvcm1Mb2NhdGlvbiwgUGxhdGZvcm0zRE9iamVjdCwgY29uc3Qg
U3RyaW5nJiwgR0MzRGludCkKK0RFTEVHQVRFX1RPX0lOVEVSTkFMXzMoZ2V0VmVydGV4QXR0cmli
ZnYsIEdDM0R1aW50LCBHQzNEZW51bSwgR0MzRGZsb2F0KikKK0RFTEVHQVRFX1RPX0lOVEVSTkFM
XzMoZ2V0VmVydGV4QXR0cmliaXYsIEdDM0R1aW50LCBHQzNEZW51bSwgR0MzRGludCopCitERUxF
R0FURV9UT19JTlRFUk5BTF8yUihnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQsIEdDM0R1aW50LCBHQzNE
ZW51bSwgR0MzRHNpemVpcHRyKQorCitERUxFR0FURV9UT19JTlRFUk5BTF8yKGhpbnQsIEdDM0Rl
bnVtLCBHQzNEZW51bSkKK0RFTEVHQVRFX1RPX0lOVEVSTkFMXzFSKGlzQnVmZmVyLCBQbGF0Zm9y
bTNET2JqZWN0LCBHQzNEYm9vbGVhbikKK0RFTEVHQVRFX1RPX0lOVEVSTkFMXzFSKGlzRW5hYmxl
ZCwgR0MzRGVudW0sIEdDM0Rib29sZWFuKQorREVMRUdBVEVfVE9fSU5URVJOQUxfMVIoaXNGcmFt
ZWJ1ZmZlciwgUGxhdGZvcm0zRE9iamVjdCwgR0MzRGJvb2xlYW4pCitERUxFR0FURV9UT19JTlRF
Uk5BTF8xUihpc1Byb2dyYW0sIFBsYXRmb3JtM0RPYmplY3QsIEdDM0Rib29sZWFuKQorREVMRUdB
VEVfVE9fSU5URVJOQUxfMVIoaXNSZW5kZXJidWZmZXIsIFBsYXRmb3JtM0RPYmplY3QsIEdDM0Ri
b29sZWFuKQorREVMRUdBVEVfVE9fSU5URVJOQUxfMVIoaXNTaGFkZXIsIFBsYXRmb3JtM0RPYmpl
Y3QsIEdDM0Rib29sZWFuKQorREVMRUdBVEVfVE9fSU5URVJOQUxfMVIoaXNUZXh0dXJlLCBQbGF0
Zm9ybTNET2JqZWN0LCBHQzNEYm9vbGVhbikKK0RFTEVHQVRFX1RPX0lOVEVSTkFMXzEobGluZVdp
ZHRoLCBHQzNEZmxvYXQpCiBERUxFR0FURV9UT19JTlRFUk5BTF8xKGxpbmtQcm9ncmFtLCBQbGF0
Zm9ybTNET2JqZWN0KQotREVMRUdBVEVfVE9fSU5URVJOQUxfMihwaXhlbFN0b3JlaSwgdW5zaWdu
ZWQgbG9uZywgbG9uZykKLURFTEVHQVRFX1RPX0lOVEVSTkFMXzIocG9seWdvbk9mZnNldCwgZG91
YmxlLCBkb3VibGUpCitERUxFR0FURV9UT19JTlRFUk5BTF8yKHBpeGVsU3RvcmVpLCBHQzNEZW51
bSwgR0MzRGludCkKK0RFTEVHQVRFX1RPX0lOVEVSTkFMXzIocG9seWdvbk9mZnNldCwgR0MzRGZs
b2F0LCBHQzNEZmxvYXQpCiAKLURFTEVHQVRFX1RPX0lOVEVSTkFMXzcocmVhZFBpeGVscywgbG9u
ZywgbG9uZywgdW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZywgdW5z
aWduZWQgbG9uZywgdm9pZCopCitERUxFR0FURV9UT19JTlRFUk5BTF83KHJlYWRQaXhlbHMsIEdD
M0RpbnQsIEdDM0RpbnQsIEdDM0RzaXplaSwgR0MzRHNpemVpLCBHQzNEZW51bSwgR0MzRGVudW0s
IEdDM0R2b2lkKikKIAogREVMRUdBVEVfVE9fSU5URVJOQUwocmVsZWFzZVNoYWRlckNvbXBpbGVy
KQotREVMRUdBVEVfVE9fSU5URVJOQUxfNChyZW5kZXJidWZmZXJTdG9yYWdlLCB1bnNpZ25lZCBs
b25nLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nKQotREVMRUdB
VEVfVE9fSU5URVJOQUxfMihzYW1wbGVDb3ZlcmFnZSwgZG91YmxlLCBib29sKQotREVMRUdBVEVf
VE9fSU5URVJOQUxfNChzY2lzc29yLCBsb25nLCBsb25nLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25l
ZCBsb25nKQorREVMRUdBVEVfVE9fSU5URVJOQUxfNChyZW5kZXJidWZmZXJTdG9yYWdlLCBHQzNE
ZW51bSwgR0MzRGVudW0sIEdDM0RzaXplaSwgR0MzRHNpemVpKQorREVMRUdBVEVfVE9fSU5URVJO
QUxfMihzYW1wbGVDb3ZlcmFnZSwgR0MzRGNsYW1wZiwgR0MzRGJvb2xlYW4pCitERUxFR0FURV9U
T19JTlRFUk5BTF80KHNjaXNzb3IsIEdDM0RpbnQsIEdDM0RpbnQsIEdDM0RzaXplaSwgR0MzRHNp
emVpKQogREVMRUdBVEVfVE9fSU5URVJOQUxfMihzaGFkZXJTb3VyY2UsIFBsYXRmb3JtM0RPYmpl
Y3QsIGNvbnN0IFN0cmluZyYpCi1ERUxFR0FURV9UT19JTlRFUk5BTF8zKHN0ZW5jaWxGdW5jLCB1
bnNpZ25lZCBsb25nLCBsb25nLCB1bnNpZ25lZCBsb25nKQotREVMRUdBVEVfVE9fSU5URVJOQUxf
NChzdGVuY2lsRnVuY1NlcGFyYXRlLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCBsb25n
LCB1bnNpZ25lZCBsb25nKQotREVMRUdBVEVfVE9fSU5URVJOQUxfMShzdGVuY2lsTWFzaywgdW5z
aWduZWQgbG9uZykKLURFTEVHQVRFX1RPX0lOVEVSTkFMXzIoc3RlbmNpbE1hc2tTZXBhcmF0ZSwg
dW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZykKLURFTEVHQVRFX1RPX0lOVEVSTkFMXzMoc3Rl
bmNpbE9wLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nKQotREVM
RUdBVEVfVE9fSU5URVJOQUxfNChzdGVuY2lsT3BTZXBhcmF0ZSwgdW5zaWduZWQgbG9uZywgdW5z
aWduZWQgbG9uZywgdW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZykKLQotREVMRUdBVEVfVE9f
SU5URVJOQUxfOVIodGV4SW1hZ2UyRCwgdW5zaWduZWQsIHVuc2lnbmVkLCB1bnNpZ25lZCwgdW5z
aWduZWQsIHVuc2lnbmVkLCB1bnNpZ25lZCwgdW5zaWduZWQsIHVuc2lnbmVkLCB2b2lkKiwgaW50
KQotREVMRUdBVEVfVE9fSU5URVJOQUxfMyh0ZXhQYXJhbWV0ZXJmLCB1bnNpZ25lZCwgdW5zaWdu
ZWQsIGZsb2F0KQotREVMRUdBVEVfVE9fSU5URVJOQUxfMyh0ZXhQYXJhbWV0ZXJpLCB1bnNpZ25l
ZCwgdW5zaWduZWQsIGludCkKLURFTEVHQVRFX1RPX0lOVEVSTkFMXzlSKHRleFN1YkltYWdlMkQs
IHVuc2lnbmVkLCB1bnNpZ25lZCwgdW5zaWduZWQsIHVuc2lnbmVkLCB1bnNpZ25lZCwgdW5zaWdu
ZWQsIHVuc2lnbmVkLCB1bnNpZ25lZCwgdm9pZCosIGludCkKLQotREVMRUdBVEVfVE9fSU5URVJO
QUxfMih1bmlmb3JtMWYsIGxvbmcsIGZsb2F0KQotREVMRUdBVEVfVE9fSU5URVJOQUxfMyh1bmlm
b3JtMWZ2LCBsb25nLCBmbG9hdCosIGludCkKLURFTEVHQVRFX1RPX0lOVEVSTkFMXzIodW5pZm9y
bTFpLCBsb25nLCBpbnQpCi1ERUxFR0FURV9UT19JTlRFUk5BTF8zKHVuaWZvcm0xaXYsIGxvbmcs
IGludCosIGludCkKLURFTEVHQVRFX1RPX0lOVEVSTkFMXzModW5pZm9ybTJmLCBsb25nLCBmbG9h
dCwgZmxvYXQpCi1ERUxFR0FURV9UT19JTlRFUk5BTF8zKHVuaWZvcm0yZnYsIGxvbmcsIGZsb2F0
KiwgaW50KQotREVMRUdBVEVfVE9fSU5URVJOQUxfMyh1bmlmb3JtMmksIGxvbmcsIGludCwgaW50
KQotREVMRUdBVEVfVE9fSU5URVJOQUxfMyh1bmlmb3JtMml2LCBsb25nLCBpbnQqLCBpbnQpCi1E
RUxFR0FURV9UT19JTlRFUk5BTF80KHVuaWZvcm0zZiwgbG9uZywgZmxvYXQsIGZsb2F0LCBmbG9h
dCkKLURFTEVHQVRFX1RPX0lOVEVSTkFMXzModW5pZm9ybTNmdiwgbG9uZywgZmxvYXQqLCBpbnQp
Ci1ERUxFR0FURV9UT19JTlRFUk5BTF80KHVuaWZvcm0zaSwgbG9uZywgaW50LCBpbnQsIGludCkK
LURFTEVHQVRFX1RPX0lOVEVSTkFMXzModW5pZm9ybTNpdiwgbG9uZywgaW50KiwgaW50KQotREVM
RUdBVEVfVE9fSU5URVJOQUxfNSh1bmlmb3JtNGYsIGxvbmcsIGZsb2F0LCBmbG9hdCwgZmxvYXQs
IGZsb2F0KQotREVMRUdBVEVfVE9fSU5URVJOQUxfMyh1bmlmb3JtNGZ2LCBsb25nLCBmbG9hdCos
IGludCkKLURFTEVHQVRFX1RPX0lOVEVSTkFMXzUodW5pZm9ybTRpLCBsb25nLCBpbnQsIGludCwg
aW50LCBpbnQpCi1ERUxFR0FURV9UT19JTlRFUk5BTF8zKHVuaWZvcm00aXYsIGxvbmcsIGludCos
IGludCkKLURFTEVHQVRFX1RPX0lOVEVSTkFMXzQodW5pZm9ybU1hdHJpeDJmdiwgbG9uZywgYm9v
bCwgZmxvYXQqLCBpbnQpCi1ERUxFR0FURV9UT19JTlRFUk5BTF80KHVuaWZvcm1NYXRyaXgzZnYs
IGxvbmcsIGJvb2wsIGZsb2F0KiwgaW50KQotREVMRUdBVEVfVE9fSU5URVJOQUxfNCh1bmlmb3Jt
TWF0cml4NGZ2LCBsb25nLCBib29sLCBmbG9hdCosIGludCkKK0RFTEVHQVRFX1RPX0lOVEVSTkFM
XzMoc3RlbmNpbEZ1bmMsIEdDM0RlbnVtLCBHQzNEaW50LCBHQzNEdWludCkKK0RFTEVHQVRFX1RP
X0lOVEVSTkFMXzQoc3RlbmNpbEZ1bmNTZXBhcmF0ZSwgR0MzRGVudW0sIEdDM0RlbnVtLCBHQzNE
aW50LCBHQzNEdWludCkKK0RFTEVHQVRFX1RPX0lOVEVSTkFMXzEoc3RlbmNpbE1hc2ssIEdDM0R1
aW50KQorREVMRUdBVEVfVE9fSU5URVJOQUxfMihzdGVuY2lsTWFza1NlcGFyYXRlLCBHQzNEZW51
bSwgR0MzRHVpbnQpCitERUxFR0FURV9UT19JTlRFUk5BTF8zKHN0ZW5jaWxPcCwgR0MzRGVudW0s
IEdDM0RlbnVtLCBHQzNEZW51bSkKK0RFTEVHQVRFX1RPX0lOVEVSTkFMXzQoc3RlbmNpbE9wU2Vw
YXJhdGUsIEdDM0RlbnVtLCBHQzNEZW51bSwgR0MzRGVudW0sIEdDM0RlbnVtKQorCitERUxFR0FU
RV9UT19JTlRFUk5BTF85Uih0ZXhJbWFnZTJELCBHQzNEZW51bSwgR0MzRGludCwgR0MzRGVudW0s
IEdDM0RzaXplaSwgR0MzRHNpemVpLCBHQzNEaW50LCBHQzNEZW51bSwgR0MzRGVudW0sIEdDM0R2
b2lkKiwgYm9vbCkKK0RFTEVHQVRFX1RPX0lOVEVSTkFMXzModGV4UGFyYW1ldGVyZiwgR0MzRGVu
dW0sIEdDM0RlbnVtLCBHQzNEZmxvYXQpCitERUxFR0FURV9UT19JTlRFUk5BTF8zKHRleFBhcmFt
ZXRlcmksIEdDM0RlbnVtLCBHQzNEZW51bSwgR0MzRGludCkKK0RFTEVHQVRFX1RPX0lOVEVSTkFM
XzkodGV4U3ViSW1hZ2UyRCwgR0MzRGVudW0sIEdDM0RpbnQsIEdDM0RpbnQsIEdDM0RpbnQsIEdD
M0RzaXplaSwgR0MzRHNpemVpLCBHQzNEZW51bSwgR0MzRGVudW0sIEdDM0R2b2lkKikKKworREVM
RUdBVEVfVE9fSU5URVJOQUxfMih1bmlmb3JtMWYsIEdDM0RpbnQsIEdDM0RmbG9hdCkKK0RFTEVH
QVRFX1RPX0lOVEVSTkFMXzModW5pZm9ybTFmdiwgR0MzRGludCwgR0MzRGZsb2F0KiwgR0MzRHNp
emVpKQorREVMRUdBVEVfVE9fSU5URVJOQUxfMih1bmlmb3JtMWksIEdDM0RpbnQsIEdDM0RpbnQp
CitERUxFR0FURV9UT19JTlRFUk5BTF8zKHVuaWZvcm0xaXYsIEdDM0RpbnQsIEdDM0RpbnQqLCBH
QzNEc2l6ZWkpCitERUxFR0FURV9UT19JTlRFUk5BTF8zKHVuaWZvcm0yZiwgR0MzRGludCwgR0Mz
RGZsb2F0LCBHQzNEZmxvYXQpCitERUxFR0FURV9UT19JTlRFUk5BTF8zKHVuaWZvcm0yZnYsIEdD
M0RpbnQsIEdDM0RmbG9hdCosIEdDM0RzaXplaSkKK0RFTEVHQVRFX1RPX0lOVEVSTkFMXzModW5p
Zm9ybTJpLCBHQzNEaW50LCBHQzNEaW50LCBHQzNEaW50KQorREVMRUdBVEVfVE9fSU5URVJOQUxf
Myh1bmlmb3JtMml2LCBHQzNEaW50LCBHQzNEaW50KiwgR0MzRHNpemVpKQorREVMRUdBVEVfVE9f
SU5URVJOQUxfNCh1bmlmb3JtM2YsIEdDM0RpbnQsIEdDM0RmbG9hdCwgR0MzRGZsb2F0LCBHQzNE
ZmxvYXQpCitERUxFR0FURV9UT19JTlRFUk5BTF8zKHVuaWZvcm0zZnYsIEdDM0RpbnQsIEdDM0Rm
bG9hdCosIEdDM0RzaXplaSkKK0RFTEVHQVRFX1RPX0lOVEVSTkFMXzQodW5pZm9ybTNpLCBHQzNE
aW50LCBHQzNEaW50LCBHQzNEaW50LCBHQzNEaW50KQorREVMRUdBVEVfVE9fSU5URVJOQUxfMyh1
bmlmb3JtM2l2LCBHQzNEaW50LCBHQzNEaW50KiwgR0MzRHNpemVpKQorREVMRUdBVEVfVE9fSU5U
RVJOQUxfNSh1bmlmb3JtNGYsIEdDM0RpbnQsIEdDM0RmbG9hdCwgR0MzRGZsb2F0LCBHQzNEZmxv
YXQsIEdDM0RmbG9hdCkKK0RFTEVHQVRFX1RPX0lOVEVSTkFMXzModW5pZm9ybTRmdiwgR0MzRGlu
dCwgR0MzRGZsb2F0KiwgR0MzRHNpemVpKQorREVMRUdBVEVfVE9fSU5URVJOQUxfNSh1bmlmb3Jt
NGksIEdDM0RpbnQsIEdDM0RpbnQsIEdDM0RpbnQsIEdDM0RpbnQsIEdDM0RpbnQpCitERUxFR0FU
RV9UT19JTlRFUk5BTF8zKHVuaWZvcm00aXYsIEdDM0RpbnQsIEdDM0RpbnQqLCBHQzNEc2l6ZWkp
CitERUxFR0FURV9UT19JTlRFUk5BTF80KHVuaWZvcm1NYXRyaXgyZnYsIEdDM0RpbnQsIEdDM0Ri
b29sZWFuLCBHQzNEZmxvYXQqLCBHQzNEc2l6ZWkpCitERUxFR0FURV9UT19JTlRFUk5BTF80KHVu
aWZvcm1NYXRyaXgzZnYsIEdDM0RpbnQsIEdDM0Rib29sZWFuLCBHQzNEZmxvYXQqLCBHQzNEc2l6
ZWkpCitERUxFR0FURV9UT19JTlRFUk5BTF80KHVuaWZvcm1NYXRyaXg0ZnYsIEdDM0RpbnQsIEdD
M0Rib29sZWFuLCBHQzNEZmxvYXQqLCBHQzNEc2l6ZWkpCiAKIERFTEVHQVRFX1RPX0lOVEVSTkFM
XzEodXNlUHJvZ3JhbSwgUGxhdGZvcm0zRE9iamVjdCkKIERFTEVHQVRFX1RPX0lOVEVSTkFMXzEo
dmFsaWRhdGVQcm9ncmFtLCBQbGF0Zm9ybTNET2JqZWN0KQogCi1ERUxFR0FURV9UT19JTlRFUk5B
TF8yKHZlcnRleEF0dHJpYjFmLCB1bnNpZ25lZCBsb25nLCBmbG9hdCkKLURFTEVHQVRFX1RPX0lO
VEVSTkFMXzIodmVydGV4QXR0cmliMWZ2LCB1bnNpZ25lZCBsb25nLCBmbG9hdCopCi1ERUxFR0FU
RV9UT19JTlRFUk5BTF8zKHZlcnRleEF0dHJpYjJmLCB1bnNpZ25lZCBsb25nLCBmbG9hdCwgZmxv
YXQpCi1ERUxFR0FURV9UT19JTlRFUk5BTF8yKHZlcnRleEF0dHJpYjJmdiwgdW5zaWduZWQgbG9u
ZywgZmxvYXQqKQotREVMRUdBVEVfVE9fSU5URVJOQUxfNCh2ZXJ0ZXhBdHRyaWIzZiwgdW5zaWdu
ZWQgbG9uZywgZmxvYXQsIGZsb2F0LCBmbG9hdCkKLURFTEVHQVRFX1RPX0lOVEVSTkFMXzIodmVy
dGV4QXR0cmliM2Z2LCB1bnNpZ25lZCBsb25nLCBmbG9hdCopCi1ERUxFR0FURV9UT19JTlRFUk5B
TF81KHZlcnRleEF0dHJpYjRmLCB1bnNpZ25lZCBsb25nLCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBm
bG9hdCkKLURFTEVHQVRFX1RPX0lOVEVSTkFMXzIodmVydGV4QXR0cmliNGZ2LCB1bnNpZ25lZCBs
b25nLCBmbG9hdCopCi1ERUxFR0FURV9UT19JTlRFUk5BTF82KHZlcnRleEF0dHJpYlBvaW50ZXIs
IHVuc2lnbmVkIGxvbmcsIGludCwgaW50LCBib29sLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBs
b25nKQorREVMRUdBVEVfVE9fSU5URVJOQUxfMih2ZXJ0ZXhBdHRyaWIxZiwgR0MzRHVpbnQsIEdD
M0RmbG9hdCkKK0RFTEVHQVRFX1RPX0lOVEVSTkFMXzIodmVydGV4QXR0cmliMWZ2LCBHQzNEdWlu
dCwgR0MzRGZsb2F0KikKK0RFTEVHQVRFX1RPX0lOVEVSTkFMXzModmVydGV4QXR0cmliMmYsIEdD
M0R1aW50LCBHQzNEZmxvYXQsIEdDM0RmbG9hdCkKK0RFTEVHQVRFX1RPX0lOVEVSTkFMXzIodmVy
dGV4QXR0cmliMmZ2LCBHQzNEdWludCwgR0MzRGZsb2F0KikKK0RFTEVHQVRFX1RPX0lOVEVSTkFM
XzQodmVydGV4QXR0cmliM2YsIEdDM0R1aW50LCBHQzNEZmxvYXQsIEdDM0RmbG9hdCwgR0MzRGZs
b2F0KQorREVMRUdBVEVfVE9fSU5URVJOQUxfMih2ZXJ0ZXhBdHRyaWIzZnYsIEdDM0R1aW50LCBH
QzNEZmxvYXQqKQorREVMRUdBVEVfVE9fSU5URVJOQUxfNSh2ZXJ0ZXhBdHRyaWI0ZiwgR0MzRHVp
bnQsIEdDM0RmbG9hdCwgR0MzRGZsb2F0LCBHQzNEZmxvYXQsIEdDM0RmbG9hdCkKK0RFTEVHQVRF
X1RPX0lOVEVSTkFMXzIodmVydGV4QXR0cmliNGZ2LCBHQzNEdWludCwgR0MzRGZsb2F0KikKK0RF
TEVHQVRFX1RPX0lOVEVSTkFMXzYodmVydGV4QXR0cmliUG9pbnRlciwgR0MzRHVpbnQsIEdDM0Rp
bnQsIEdDM0RlbnVtLCBHQzNEYm9vbGVhbiwgR0MzRHNpemVpLCBHQzNEc2l6ZWlwdHIpCiAKLURF
TEVHQVRFX1RPX0lOVEVSTkFMXzQodmlld3BvcnQsIGxvbmcsIGxvbmcsIHVuc2lnbmVkIGxvbmcs
IHVuc2lnbmVkIGxvbmcpCitERUxFR0FURV9UT19JTlRFUk5BTF80KHZpZXdwb3J0LCBHQzNEaW50
LCBHQzNEaW50LCBHQzNEc2l6ZWksIEdDM0RzaXplaSkKIAogREVMRUdBVEVfVE9fSU5URVJOQUxf
MShwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcywgQ2FudmFzUmVuZGVyaW5nQ29udGV4dCop
CiAKQEAgLTEwNjcsMjEgKzEwNTIsMjEgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6cGFpbnRz
SW50b0NhbnZhcwogICAgIHJldHVybiBtX2ludGVybmFsLT5wYWludHNJbnRvQ2FudmFzQnVmZmVy
KCk7CiB9CiAKLURFTEVHQVRFX1RPX0lOVEVSTkFMX1IoY3JlYXRlQnVmZmVyLCB1bnNpZ25lZCkK
LURFTEVHQVRFX1RPX0lOVEVSTkFMX1IoY3JlYXRlRnJhbWVidWZmZXIsIHVuc2lnbmVkKQotREVM
RUdBVEVfVE9fSU5URVJOQUxfUihjcmVhdGVQcm9ncmFtLCB1bnNpZ25lZCkKLURFTEVHQVRFX1RP
X0lOVEVSTkFMX1IoY3JlYXRlUmVuZGVyYnVmZmVyLCB1bnNpZ25lZCkKLURFTEVHQVRFX1RPX0lO
VEVSTkFMXzFSKGNyZWF0ZVNoYWRlciwgdW5zaWduZWQgbG9uZywgdW5zaWduZWQpCi1ERUxFR0FU
RV9UT19JTlRFUk5BTF9SKGNyZWF0ZVRleHR1cmUsIHVuc2lnbmVkKQotCi1ERUxFR0FURV9UT19J
TlRFUk5BTF8xKGRlbGV0ZUJ1ZmZlciwgdW5zaWduZWQpCi1ERUxFR0FURV9UT19JTlRFUk5BTF8x
KGRlbGV0ZUZyYW1lYnVmZmVyLCB1bnNpZ25lZCkKLURFTEVHQVRFX1RPX0lOVEVSTkFMXzEoZGVs
ZXRlUHJvZ3JhbSwgdW5zaWduZWQpCi1ERUxFR0FURV9UT19JTlRFUk5BTF8xKGRlbGV0ZVJlbmRl
cmJ1ZmZlciwgdW5zaWduZWQpCi1ERUxFR0FURV9UT19JTlRFUk5BTF8xKGRlbGV0ZVNoYWRlciwg
dW5zaWduZWQpCi1ERUxFR0FURV9UT19JTlRFUk5BTF8xKGRlbGV0ZVRleHR1cmUsIHVuc2lnbmVk
KQorREVMRUdBVEVfVE9fSU5URVJOQUxfUihjcmVhdGVCdWZmZXIsIFBsYXRmb3JtM0RPYmplY3Qp
CitERUxFR0FURV9UT19JTlRFUk5BTF9SKGNyZWF0ZUZyYW1lYnVmZmVyLCBQbGF0Zm9ybTNET2Jq
ZWN0KQorREVMRUdBVEVfVE9fSU5URVJOQUxfUihjcmVhdGVQcm9ncmFtLCBQbGF0Zm9ybTNET2Jq
ZWN0KQorREVMRUdBVEVfVE9fSU5URVJOQUxfUihjcmVhdGVSZW5kZXJidWZmZXIsIFBsYXRmb3Jt
M0RPYmplY3QpCitERUxFR0FURV9UT19JTlRFUk5BTF8xUihjcmVhdGVTaGFkZXIsIEdDM0RlbnVt
LCBQbGF0Zm9ybTNET2JqZWN0KQorREVMRUdBVEVfVE9fSU5URVJOQUxfUihjcmVhdGVUZXh0dXJl
LCBQbGF0Zm9ybTNET2JqZWN0KQorCitERUxFR0FURV9UT19JTlRFUk5BTF8xKGRlbGV0ZUJ1ZmZl
ciwgUGxhdGZvcm0zRE9iamVjdCkKK0RFTEVHQVRFX1RPX0lOVEVSTkFMXzEoZGVsZXRlRnJhbWVi
dWZmZXIsIFBsYXRmb3JtM0RPYmplY3QpCitERUxFR0FURV9UT19JTlRFUk5BTF8xKGRlbGV0ZVBy
b2dyYW0sIFBsYXRmb3JtM0RPYmplY3QpCitERUxFR0FURV9UT19JTlRFUk5BTF8xKGRlbGV0ZVJl
bmRlcmJ1ZmZlciwgUGxhdGZvcm0zRE9iamVjdCkKK0RFTEVHQVRFX1RPX0lOVEVSTkFMXzEoZGVs
ZXRlU2hhZGVyLCBQbGF0Zm9ybTNET2JqZWN0KQorREVMRUdBVEVfVE9fSU5URVJOQUxfMShkZWxl
dGVUZXh0dXJlLCBQbGF0Zm9ybTNET2JqZWN0KQogCi1ERUxFR0FURV9UT19JTlRFUk5BTF8xKHN5
bnRoZXNpemVHTEVycm9yLCB1bnNpZ25lZCBsb25nKQorREVMRUdBVEVfVE9fSU5URVJOQUxfMShz
eW50aGVzaXplR0xFcnJvciwgR0MzRGVudW0pCiBERUxFR0FURV9UT19JTlRFUk5BTF9SKGdldEV4
dGVuc2lvbnMsIEV4dGVuc2lvbnMzRCopCiAKIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmlzR0xF
UzJDb21wbGlhbnQoKSBjb25zdApJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0Nv
bnRleHQzREludGVybmFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFw
aGljc0NvbnRleHQzREludGVybmFsLmgJKHJldmlzaW9uIDc0OTcwKQorKysgV2ViS2l0L2Nocm9t
aXVtL3NyYy9HcmFwaGljc0NvbnRleHQzREludGVybmFsLmgJKHdvcmtpbmcgY29weSkKQEAgLTYy
LDcgKzYyLDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBtYWtlQ29udGV4dEN1cnJlbnQoKTsKIAot
ICAgIGludCBzaXplSW5CeXRlcyhpbnQgdHlwZSk7CisgICAgdW5zaWduZWQgaW50IHNpemVJbkJ5
dGVzKEdDM0RlbnVtIHR5cGUpOwogCiAgICAgdm9pZCByZXNoYXBlKGludCB3aWR0aCwgaW50IGhl
aWdodCk7CiAgICAgSW50U2l6ZSBnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpOwpAQCAtNzcs
MTkxICs3NywxNjkgQEAgcHVibGljOgogI2VuZGlmCiAgICAgYm9vbCBpc0dMRVMyQ29tcGxpYW50
KCkgY29uc3Q7CiAKKyAgICB2b2lkIHJlbGVhc2VTaGFkZXJDb21waWxlcigpOworICAgIGJvb2wg
aXNDb250ZXh0TG9zdCgpOworCiAgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgLy8gRW50cnkgcG9p
bnRzIGZvciBXZWJHTC4KICAgICAvLwotICAgIHZvaWQgYWN0aXZlVGV4dHVyZSh1bnNpZ25lZCBs
b25nIHRleHR1cmUpOworICAgIHZvaWQgYWN0aXZlVGV4dHVyZShHQzNEZW51bSB0ZXh0dXJlKTsK
ICAgICB2b2lkIGF0dGFjaFNoYWRlcihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIFBsYXRmb3Jt
M0RPYmplY3Qgc2hhZGVyKTsKLSAgICB2b2lkIGJpbmRBdHRyaWJMb2NhdGlvbihQbGF0Zm9ybTNE
T2JqZWN0LCB1bnNpZ25lZCBsb25nIGluZGV4LCBjb25zdCBTdHJpbmcmIG5hbWUpOwotICAgIHZv
aWQgYmluZEJ1ZmZlcih1bnNpZ25lZCBsb25nIHRhcmdldCwgUGxhdGZvcm0zRE9iamVjdCk7Ci0g
ICAgdm9pZCBiaW5kRnJhbWVidWZmZXIodW5zaWduZWQgbG9uZyB0YXJnZXQsIFBsYXRmb3JtM0RP
YmplY3QpOwotICAgIHZvaWQgYmluZFJlbmRlcmJ1ZmZlcih1bnNpZ25lZCBsb25nIHRhcmdldCwg
UGxhdGZvcm0zRE9iamVjdCk7Ci0gICAgdm9pZCBiaW5kVGV4dHVyZSh1bnNpZ25lZCBsb25nIHRh
cmdldCwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlKTsKLSAgICB2b2lkIGJsZW5kQ29sb3IoZG91
YmxlIHJlZCwgZG91YmxlIGdyZWVuLCBkb3VibGUgYmx1ZSwgZG91YmxlIGFscGhhKTsKLSAgICB2
b2lkIGJsZW5kRXF1YXRpb24odW5zaWduZWQgbG9uZyBtb2RlKTsKLSAgICB2b2lkIGJsZW5kRXF1
YXRpb25TZXBhcmF0ZSh1bnNpZ25lZCBsb25nIG1vZGVSR0IsIHVuc2lnbmVkIGxvbmcgbW9kZUFs
cGhhKTsKLSAgICB2b2lkIGJsZW5kRnVuYyh1bnNpZ25lZCBsb25nIHNmYWN0b3IsIHVuc2lnbmVk
IGxvbmcgZGZhY3Rvcik7Ci0gICAgdm9pZCBibGVuZEZ1bmNTZXBhcmF0ZSh1bnNpZ25lZCBsb25n
IHNyY1JHQiwgdW5zaWduZWQgbG9uZyBkc3RSR0IsIHVuc2lnbmVkIGxvbmcgc3JjQWxwaGEsIHVu
c2lnbmVkIGxvbmcgZHN0QWxwaGEpOwotCi0gICAgdm9pZCBidWZmZXJEYXRhKHVuc2lnbmVkIGxv
bmcgdGFyZ2V0LCBpbnQgc2l6ZSwgdW5zaWduZWQgbG9uZyB1c2FnZSk7Ci0gICAgdm9pZCBidWZm
ZXJEYXRhKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBpbnQgc2l6ZSwgY29uc3Qgdm9pZCogZGF0YSwg
dW5zaWduZWQgbG9uZyB1c2FnZSk7Ci0gICAgdm9pZCBidWZmZXJTdWJEYXRhKHVuc2lnbmVkIGxv
bmcgdGFyZ2V0LCBsb25nIG9mZnNldCwgaW50IHNpemUsIGNvbnN0IHZvaWQqIGRhdGEpOwotCi0g
ICAgdW5zaWduZWQgbG9uZyBjaGVja0ZyYW1lYnVmZmVyU3RhdHVzKHVuc2lnbmVkIGxvbmcgdGFy
Z2V0KTsKLSAgICB2b2lkIGNsZWFyKHVuc2lnbmVkIGxvbmcgbWFzayk7Ci0gICAgdm9pZCBjbGVh
ckNvbG9yKGRvdWJsZSByZWQsIGRvdWJsZSBncmVlbiwgZG91YmxlIGJsdWUsIGRvdWJsZSBhbHBo
YSk7Ci0gICAgdm9pZCBjbGVhckRlcHRoKGRvdWJsZSBkZXB0aCk7Ci0gICAgdm9pZCBjbGVhclN0
ZW5jaWwobG9uZyBzKTsKLSAgICB2b2lkIGNvbG9yTWFzayhib29sIHJlZCwgYm9vbCBncmVlbiwg
Ym9vbCBibHVlLCBib29sIGFscGhhKTsKKyAgICB2b2lkIGJpbmRBdHRyaWJMb2NhdGlvbihQbGF0
Zm9ybTNET2JqZWN0LCBHQzNEdWludCBpbmRleCwgY29uc3QgU3RyaW5nJiBuYW1lKTsKKyAgICB2
b2lkIGJpbmRCdWZmZXIoR0MzRGVudW0gdGFyZ2V0LCBQbGF0Zm9ybTNET2JqZWN0KTsKKyAgICB2
b2lkIGJpbmRGcmFtZWJ1ZmZlcihHQzNEZW51bSB0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3QpOwor
ICAgIHZvaWQgYmluZFJlbmRlcmJ1ZmZlcihHQzNEZW51bSB0YXJnZXQsIFBsYXRmb3JtM0RPYmpl
Y3QpOworICAgIHZvaWQgYmluZFRleHR1cmUoR0MzRGVudW0gdGFyZ2V0LCBQbGF0Zm9ybTNET2Jq
ZWN0KTsKKyAgICB2b2lkIGJsZW5kQ29sb3IoR0MzRGNsYW1wZiByZWQsIEdDM0RjbGFtcGYgZ3Jl
ZW4sIEdDM0RjbGFtcGYgYmx1ZSwgR0MzRGNsYW1wZiBhbHBoYSk7CisgICAgdm9pZCBibGVuZEVx
dWF0aW9uKEdDM0RlbnVtIG1vZGUpOworICAgIHZvaWQgYmxlbmRFcXVhdGlvblNlcGFyYXRlKEdD
M0RlbnVtIG1vZGVSR0IsIEdDM0RlbnVtIG1vZGVBbHBoYSk7CisgICAgdm9pZCBibGVuZEZ1bmMo
R0MzRGVudW0gc2ZhY3RvciwgR0MzRGVudW0gZGZhY3Rvcik7CisgICAgdm9pZCBibGVuZEZ1bmNT
ZXBhcmF0ZShHQzNEZW51bSBzcmNSR0IsIEdDM0RlbnVtIGRzdFJHQiwgR0MzRGVudW0gc3JjQWxw
aGEsIEdDM0RlbnVtIGRzdEFscGhhKTsKKworICAgIHZvaWQgYnVmZmVyRGF0YShHQzNEZW51bSB0
YXJnZXQsIEdDM0RzaXplaSBzaXplLCBHQzNEZW51bSB1c2FnZSk7CisgICAgdm9pZCBidWZmZXJE
YXRhKEdDM0RlbnVtIHRhcmdldCwgR0MzRHNpemVpIHNpemUsIGNvbnN0IEdDM0R2b2lkKiBkYXRh
LCBHQzNEZW51bSB1c2FnZSk7CisgICAgdm9pZCBidWZmZXJTdWJEYXRhKEdDM0RlbnVtIHRhcmdl
dCwgR0MzRHNpemVpcHRyIG9mZnNldCwgR0MzRHNpemVpIHNpemUsIGNvbnN0IEdDM0R2b2lkKiBk
YXRhKTsKKworICAgIEdDM0RlbnVtIGNoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0MzRGVudW0gdGFy
Z2V0KTsKKyAgICB2b2lkIGNsZWFyKEdDM0RiaXRmaWVsZCBtYXNrKTsKKyAgICB2b2lkIGNsZWFy
Q29sb3IoR0MzRGNsYW1wZiByZWQsIEdDM0RjbGFtcGYgZ3JlZW4sIEdDM0RjbGFtcGYgYmx1ZSwg
R0MzRGNsYW1wZiBhbHBoYSk7CisgICAgdm9pZCBjbGVhckRlcHRoKEdDM0RjbGFtcGYgZGVwdGgp
OworICAgIHZvaWQgY2xlYXJTdGVuY2lsKEdDM0RpbnQgcyk7CisgICAgdm9pZCBjb2xvck1hc2so
R0MzRGJvb2xlYW4gcmVkLCBHQzNEYm9vbGVhbiBncmVlbiwgR0MzRGJvb2xlYW4gYmx1ZSwgR0Mz
RGJvb2xlYW4gYWxwaGEpOwogICAgIHZvaWQgY29tcGlsZVNoYWRlcihQbGF0Zm9ybTNET2JqZWN0
KTsKIAotICAgIHZvaWQgY29weVRleEltYWdlMkQodW5zaWduZWQgbG9uZyB0YXJnZXQsIGxvbmcg
bGV2ZWwsIHVuc2lnbmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQsIGxvbmcgeCwgbG9uZyB5LCB1bnNp
Z25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCwgbG9uZyBib3JkZXIpOwotICAg
IHZvaWQgY29weVRleFN1YkltYWdlMkQodW5zaWduZWQgbG9uZyB0YXJnZXQsIGxvbmcgbGV2ZWws
IGxvbmcgeG9mZnNldCwgbG9uZyB5b2Zmc2V0LCBsb25nIHgsIGxvbmcgeSwgdW5zaWduZWQgbG9u
ZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpOwotICAgIHZvaWQgY3VsbEZhY2UodW5zaWdu
ZWQgbG9uZyBtb2RlKTsKLSAgICB2b2lkIGRlcHRoRnVuYyh1bnNpZ25lZCBsb25nIGZ1bmMpOwot
ICAgIHZvaWQgZGVwdGhNYXNrKGJvb2wgZmxhZyk7Ci0gICAgdm9pZCBkZXB0aFJhbmdlKGRvdWJs
ZSB6TmVhciwgZG91YmxlIHpGYXIpOworICAgIHZvaWQgY29weVRleEltYWdlMkQoR0MzRGVudW0g
dGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEZW51bSBpbnRlcm5hbGZvcm1hdCwgR0MzRGludCB4
LCBHQzNEaW50IHksIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGludCBi
b3JkZXIpOworICAgIHZvaWQgY29weVRleFN1YkltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNE
aW50IGxldmVsLCBHQzNEaW50IHhvZmZzZXQsIEdDM0RpbnQgeW9mZnNldCwgR0MzRGludCB4LCBH
QzNEaW50IHksIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCk7CisgICAgdm9pZCBj
dWxsRmFjZShHQzNEZW51bSBtb2RlKTsKKyAgICB2b2lkIGRlcHRoRnVuYyhHQzNEZW51bSBmdW5j
KTsKKyAgICB2b2lkIGRlcHRoTWFzayhHQzNEYm9vbGVhbiBmbGFnKTsKKyAgICB2b2lkIGRlcHRo
UmFuZ2UoR0MzRGNsYW1wZiB6TmVhciwgR0MzRGNsYW1wZiB6RmFyKTsKICAgICB2b2lkIGRldGFj
aFNoYWRlcihQbGF0Zm9ybTNET2JqZWN0LCBQbGF0Zm9ybTNET2JqZWN0KTsKLSAgICB2b2lkIGRp
c2FibGUodW5zaWduZWQgbG9uZyBjYXApOwotICAgIHZvaWQgZGlzYWJsZVZlcnRleEF0dHJpYkFy
cmF5KHVuc2lnbmVkIGxvbmcgaW5kZXgpOwotICAgIHZvaWQgZHJhd0FycmF5cyh1bnNpZ25lZCBs
b25nIG1vZGUsIGxvbmcgZmlyc3QsIGxvbmcgY291bnQpOwotICAgIHZvaWQgZHJhd0VsZW1lbnRz
KHVuc2lnbmVkIGxvbmcgbW9kZSwgdW5zaWduZWQgbG9uZyBjb3VudCwgdW5zaWduZWQgbG9uZyB0
eXBlLCBsb25nIG9mZnNldCk7CisgICAgdm9pZCBkaXNhYmxlKEdDM0RlbnVtIGNhcCk7CisgICAg
dm9pZCBkaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoR0MzRHVpbnQgaW5kZXgpOworICAgIHZvaWQg
ZHJhd0FycmF5cyhHQzNEZW51bSBtb2RlLCBHQzNEaW50IGZpcnN0LCBHQzNEc2l6ZWkgY291bnQp
OworICAgIHZvaWQgZHJhd0VsZW1lbnRzKEdDM0RlbnVtIG1vZGUsIEdDM0RzaXplaSBjb3VudCwg
R0MzRGVudW0gdHlwZSwgR0MzRHNpemVpcHRyIG9mZnNldCk7CiAKLSAgICB2b2lkIGVuYWJsZSh1
bnNpZ25lZCBsb25nIGNhcCk7Ci0gICAgdm9pZCBlbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSh1bnNp
Z25lZCBsb25nIGluZGV4KTsKKyAgICB2b2lkIGVuYWJsZShHQzNEZW51bSBjYXApOworICAgIHZv
aWQgZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoR0MzRHVpbnQgaW5kZXgpOwogICAgIHZvaWQgZmlu
aXNoKCk7CiAgICAgdm9pZCBmbHVzaCgpOwotICAgIHZvaWQgZnJhbWVidWZmZXJSZW5kZXJidWZm
ZXIodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgYXR0YWNobWVudCwgdW5zaWdu
ZWQgbG9uZyByZW5kZXJidWZmZXJ0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3QpOwotICAgIHZvaWQg
ZnJhbWVidWZmZXJUZXh0dXJlMkQodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcg
YXR0YWNobWVudCwgdW5zaWduZWQgbG9uZyB0ZXh0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3QsIGxv
bmcgbGV2ZWwpOwotICAgIHZvaWQgZnJvbnRGYWNlKHVuc2lnbmVkIGxvbmcgbW9kZSk7Ci0gICAg
dm9pZCBnZW5lcmF0ZU1pcG1hcCh1bnNpZ25lZCBsb25nIHRhcmdldCk7Ci0KLSAgICBib29sIGdl
dEFjdGl2ZUF0dHJpYihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIHVuc2lnbmVkIGxvbmcgaW5k
ZXgsIEFjdGl2ZUluZm8mKTsKLSAgICBib29sIGdldEFjdGl2ZVVuaWZvcm0oUGxhdGZvcm0zRE9i
amVjdCBwcm9ncmFtLCB1bnNpZ25lZCBsb25nIGluZGV4LCBBY3RpdmVJbmZvJik7Ci0KLSAgICB2
b2lkIGdldEF0dGFjaGVkU2hhZGVycyhQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIGludCBtYXhD
b3VudCwgaW50KiBjb3VudCwgdW5zaWduZWQgaW50KiBzaGFkZXJzKTsKLQotICAgIGludCBnZXRB
dHRyaWJMb2NhdGlvbihQbGF0Zm9ybTNET2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUpOwotCi0g
ICAgdm9pZCBnZXRCb29sZWFudih1bnNpZ25lZCBsb25nIHBuYW1lLCB1bnNpZ25lZCBjaGFyKiB2
YWx1ZSk7Ci0KLSAgICB2b2lkIGdldEJ1ZmZlclBhcmFtZXRlcml2KHVuc2lnbmVkIGxvbmcgdGFy
Z2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lLCBpbnQqIHZhbHVlKTsKLQorICAgIHZvaWQgZnJhbWVi
dWZmZXJSZW5kZXJidWZmZXIoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBhdHRhY2htZW50LCBH
QzNEZW51bSByZW5kZXJidWZmZXJ0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3QpOworICAgIHZvaWQg
ZnJhbWVidWZmZXJUZXh0dXJlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBhdHRhY2htZW50
LCBHQzNEZW51bSB0ZXh0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3QsIEdDM0RpbnQgbGV2ZWwpOwor
ICAgIHZvaWQgZnJvbnRGYWNlKEdDM0RlbnVtIG1vZGUpOworICAgIHZvaWQgZ2VuZXJhdGVNaXBt
YXAoR0MzRGVudW0gdGFyZ2V0KTsKKworICAgIGJvb2wgZ2V0QWN0aXZlQXR0cmliKFBsYXRmb3Jt
M0RPYmplY3QgcHJvZ3JhbSwgR0MzRHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mKTsKKyAgICBib29s
IGdldEFjdGl2ZVVuaWZvcm0oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBHQzNEdWludCBpbmRl
eCwgQWN0aXZlSW5mbyYpOworICAgIHZvaWQgZ2V0QXR0YWNoZWRTaGFkZXJzKFBsYXRmb3JtM0RP
YmplY3QgcHJvZ3JhbSwgR0MzRHNpemVpIG1heENvdW50LCBHQzNEc2l6ZWkqIGNvdW50LCBQbGF0
Zm9ybTNET2JqZWN0KiBzaGFkZXJzKTsKKyAgICBHQzNEaW50IGdldEF0dHJpYkxvY2F0aW9uKFBs
YXRmb3JtM0RPYmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSk7CisgICAgdm9pZCBnZXRCb29sZWFu
dihHQzNEZW51bSBwbmFtZSwgR0MzRGJvb2xlYW4qIHZhbHVlKTsKKyAgICB2b2lkIGdldEJ1ZmZl
clBhcmFtZXRlcml2KEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gcG5hbWUsIEdDM0RpbnQqIHZh
bHVlKTsKICAgICBHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBnZXRDb250ZXh0QXR0cmli
dXRlcygpOwotCi0gICAgdW5zaWduZWQgbG9uZyBnZXRFcnJvcigpOwotCi0gICAgYm9vbCBpc0Nv
bnRleHRMb3N0KCk7Ci0KLSAgICB2b2lkIGdldEZsb2F0dih1bnNpZ25lZCBsb25nIHBuYW1lLCBm
bG9hdCogdmFsdWUpOwotCi0gICAgdm9pZCBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0
ZXJpdih1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBhdHRhY2htZW50LCB1bnNp
Z25lZCBsb25nIHBuYW1lLCBpbnQqIHZhbHVlKTsKLQotICAgIHZvaWQgZ2V0SW50ZWdlcnYodW5z
aWduZWQgbG9uZyBwbmFtZSwgaW50KiB2YWx1ZSk7Ci0KLSAgICB2b2lkIGdldFByb2dyYW1pdihQ
bGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIHVuc2lnbmVkIGxvbmcgcG5hbWUsIGludCogdmFsdWUp
OwotCisgICAgR0MzRGVudW0gZ2V0RXJyb3IoKTsKKyAgICB2b2lkIGdldEZsb2F0dihHQzNEZW51
bSBwbmFtZSwgR0MzRGZsb2F0KiB2YWx1ZSk7CisgICAgdm9pZCBnZXRGcmFtZWJ1ZmZlckF0dGFj
aG1lbnRQYXJhbWV0ZXJpdihHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIGF0dGFjaG1lbnQsIEdD
M0RlbnVtIHBuYW1lLCBHQzNEaW50KiB2YWx1ZSk7CisgICAgdm9pZCBnZXRJbnRlZ2VydihHQzNE
ZW51bSBwbmFtZSwgR0MzRGludCogdmFsdWUpOworICAgIHZvaWQgZ2V0UHJvZ3JhbWl2KFBsYXRm
b3JtM0RPYmplY3QgcHJvZ3JhbSwgR0MzRGVudW0gcG5hbWUsIEdDM0RpbnQqIHZhbHVlKTsKICAg
ICBTdHJpbmcgZ2V0UHJvZ3JhbUluZm9Mb2coUGxhdGZvcm0zRE9iamVjdCk7Ci0KLSAgICB2b2lk
IGdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25l
ZCBsb25nIHBuYW1lLCBpbnQqIHZhbHVlKTsKLQotICAgIHZvaWQgZ2V0U2hhZGVyaXYoUGxhdGZv
cm0zRE9iamVjdCwgdW5zaWduZWQgbG9uZyBwbmFtZSwgaW50KiB2YWx1ZSk7Ci0KKyAgICB2b2lk
IGdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gcG5h
bWUsIEdDM0RpbnQqIHZhbHVlKTsKKyAgICB2b2lkIGdldFNoYWRlcml2KFBsYXRmb3JtM0RPYmpl
Y3QsIEdDM0RlbnVtIHBuYW1lLCBHQzNEaW50KiB2YWx1ZSk7CiAgICAgU3RyaW5nIGdldFNoYWRl
ckluZm9Mb2coUGxhdGZvcm0zRE9iamVjdCk7CiAKICAgICBTdHJpbmcgZ2V0U2hhZGVyU291cmNl
KFBsYXRmb3JtM0RPYmplY3QpOwotICAgIFN0cmluZyBnZXRTdHJpbmcodW5zaWduZWQgbG9uZyBu
YW1lKTsKLQotICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVyZnYodW5zaWduZWQgbG9uZyB0YXJnZXQs
IHVuc2lnbmVkIGxvbmcgcG5hbWUsIGZsb2F0KiB2YWx1ZSk7Ci0gICAgdm9pZCBnZXRUZXhQYXJh
bWV0ZXJpdih1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSwgaW50KiB2
YWx1ZSk7Ci0KLSAgICB2b2lkIGdldFVuaWZvcm1mdihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0s
IGxvbmcgbG9jYXRpb24sIGZsb2F0KiB2YWx1ZSk7Ci0gICAgdm9pZCBnZXRVbmlmb3JtaXYoUGxh
dGZvcm0zRE9iamVjdCBwcm9ncmFtLCBsb25nIGxvY2F0aW9uLCBpbnQqIHZhbHVlKTsKLQotICAg
IGxvbmcgZ2V0VW5pZm9ybUxvY2F0aW9uKFBsYXRmb3JtM0RPYmplY3QsIGNvbnN0IFN0cmluZyYg
bmFtZSk7Ci0KLSAgICB2b2lkIGdldFZlcnRleEF0dHJpYmZ2KHVuc2lnbmVkIGxvbmcgaW5kZXgs
IHVuc2lnbmVkIGxvbmcgcG5hbWUsIGZsb2F0KiB2YWx1ZSk7Ci0gICAgdm9pZCBnZXRWZXJ0ZXhB
dHRyaWJpdih1bnNpZ25lZCBsb25nIGluZGV4LCB1bnNpZ25lZCBsb25nIHBuYW1lLCBpbnQqIHZh
bHVlKTsKLQotICAgIGxvbmcgZ2V0VmVydGV4QXR0cmliT2Zmc2V0KHVuc2lnbmVkIGxvbmcgaW5k
ZXgsIHVuc2lnbmVkIGxvbmcgcG5hbWUpOwotCi0gICAgdm9pZCBoaW50KHVuc2lnbmVkIGxvbmcg
dGFyZ2V0LCB1bnNpZ25lZCBsb25nIG1vZGUpOwotICAgIGJvb2wgaXNCdWZmZXIoUGxhdGZvcm0z
RE9iamVjdCk7Ci0gICAgYm9vbCBpc0VuYWJsZWQodW5zaWduZWQgbG9uZyBjYXApOwotICAgIGJv
b2wgaXNGcmFtZWJ1ZmZlcihQbGF0Zm9ybTNET2JqZWN0KTsKLSAgICBib29sIGlzUHJvZ3JhbShQ
bGF0Zm9ybTNET2JqZWN0KTsKLSAgICBib29sIGlzUmVuZGVyYnVmZmVyKFBsYXRmb3JtM0RPYmpl
Y3QpOwotICAgIGJvb2wgaXNTaGFkZXIoUGxhdGZvcm0zRE9iamVjdCk7Ci0gICAgYm9vbCBpc1Rl
eHR1cmUoUGxhdGZvcm0zRE9iamVjdCk7Ci0gICAgdm9pZCBsaW5lV2lkdGgoZG91YmxlKTsKKyAg
ICBTdHJpbmcgZ2V0U3RyaW5nKEdDM0RlbnVtIG5hbWUpOworICAgIHZvaWQgZ2V0VGV4UGFyYW1l
dGVyZnYoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBwbmFtZSwgR0MzRGZsb2F0KiB2YWx1ZSk7
CisgICAgdm9pZCBnZXRUZXhQYXJhbWV0ZXJpdihHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIHBu
YW1lLCBHQzNEaW50KiB2YWx1ZSk7CisgICAgdm9pZCBnZXRVbmlmb3JtZnYoUGxhdGZvcm0zRE9i
amVjdCBwcm9ncmFtLCBHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQqIHZhbHVlKTsKKyAgICB2
b2lkIGdldFVuaWZvcm1pdihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIEdDM0RpbnQgbG9jYXRp
b24sIEdDM0RpbnQqIHZhbHVlKTsKKyAgICBHQzNEaW50IGdldFVuaWZvcm1Mb2NhdGlvbihQbGF0
Zm9ybTNET2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUpOworICAgIHZvaWQgZ2V0VmVydGV4QXR0
cmliZnYoR0MzRHVpbnQgaW5kZXgsIEdDM0RlbnVtIHBuYW1lLCBHQzNEZmxvYXQqIHZhbHVlKTsK
KyAgICB2b2lkIGdldFZlcnRleEF0dHJpYml2KEdDM0R1aW50IGluZGV4LCBHQzNEZW51bSBwbmFt
ZSwgR0MzRGludCogdmFsdWUpOworICAgIEdDM0RzaXplaXB0ciBnZXRWZXJ0ZXhBdHRyaWJPZmZz
ZXQoR0MzRHVpbnQgaW5kZXgsIEdDM0RlbnVtIHBuYW1lKTsKKworICAgIHZvaWQgaGludChHQzNE
ZW51bSB0YXJnZXQsIEdDM0RlbnVtIG1vZGUpOworICAgIEdDM0Rib29sZWFuIGlzQnVmZmVyKFBs
YXRmb3JtM0RPYmplY3QpOworICAgIEdDM0Rib29sZWFuIGlzRW5hYmxlZChHQzNEZW51bSBjYXAp
OworICAgIEdDM0Rib29sZWFuIGlzRnJhbWVidWZmZXIoUGxhdGZvcm0zRE9iamVjdCk7CisgICAg
R0MzRGJvb2xlYW4gaXNQcm9ncmFtKFBsYXRmb3JtM0RPYmplY3QpOworICAgIEdDM0Rib29sZWFu
IGlzUmVuZGVyYnVmZmVyKFBsYXRmb3JtM0RPYmplY3QpOworICAgIEdDM0Rib29sZWFuIGlzU2hh
ZGVyKFBsYXRmb3JtM0RPYmplY3QpOworICAgIEdDM0Rib29sZWFuIGlzVGV4dHVyZShQbGF0Zm9y
bTNET2JqZWN0KTsKKyAgICB2b2lkIGxpbmVXaWR0aChHQzNEZmxvYXQpOwogICAgIHZvaWQgbGlu
a1Byb2dyYW0oUGxhdGZvcm0zRE9iamVjdCk7Ci0gICAgdm9pZCBwaXhlbFN0b3JlaSh1bnNpZ25l
ZCBsb25nIHBuYW1lLCBsb25nIHBhcmFtKTsKLSAgICB2b2lkIHBvbHlnb25PZmZzZXQoZG91Ymxl
IGZhY3RvciwgZG91YmxlIHVuaXRzKTsKKyAgICB2b2lkIHBpeGVsU3RvcmVpKEdDM0RlbnVtIHBu
YW1lLCBHQzNEaW50IHBhcmFtKTsKKyAgICB2b2lkIHBvbHlnb25PZmZzZXQoR0MzRGZsb2F0IGZh
Y3RvciwgR0MzRGZsb2F0IHVuaXRzKTsKIAotICAgIHZvaWQgcmVhZFBpeGVscyhsb25nIHgsIGxv
bmcgeSwgdW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQsIHVuc2lnbmVk
IGxvbmcgZm9ybWF0LCB1bnNpZ25lZCBsb25nIHR5cGUsIHZvaWQqIGRhdGEpOworICAgIHZvaWQg
cmVhZFBpeGVscyhHQzNEaW50IHgsIEdDM0RpbnQgeSwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6
ZWkgaGVpZ2h0LCBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUsIEdDM0R2b2lkKiBkYXRh
KTsKIAotICAgIHZvaWQgcmVsZWFzZVNoYWRlckNvbXBpbGVyKCk7Ci0gICAgdm9pZCByZW5kZXJi
dWZmZXJTdG9yYWdlKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIGludGVybmFs
Zm9ybWF0LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCk7Ci0gICAg
dm9pZCBzYW1wbGVDb3ZlcmFnZShkb3VibGUgdmFsdWUsIGJvb2wgaW52ZXJ0KTsKLSAgICB2b2lk
IHNjaXNzb3IobG9uZyB4LCBsb25nIHksIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxv
bmcgaGVpZ2h0KTsKKyAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2UoR0MzRGVudW0gdGFyZ2V0
LCBHQzNEZW51bSBpbnRlcm5hbGZvcm1hdCwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVp
Z2h0KTsKKyAgICB2b2lkIHNhbXBsZUNvdmVyYWdlKEdDM0RjbGFtcGYgdmFsdWUsIEdDM0Rib29s
ZWFuIGludmVydCk7CisgICAgdm9pZCBzY2lzc29yKEdDM0RpbnQgeCwgR0MzRGludCB5LCBHQzNE
c2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQpOwogICAgIHZvaWQgc2hhZGVyU291cmNlKFBs
YXRmb3JtM0RPYmplY3QsIGNvbnN0IFN0cmluZyYgc3RyaW5nKTsKLSAgICB2b2lkIHN0ZW5jaWxG
dW5jKHVuc2lnbmVkIGxvbmcgZnVuYywgbG9uZyByZWYsIHVuc2lnbmVkIGxvbmcgbWFzayk7Ci0g
ICAgdm9pZCBzdGVuY2lsRnVuY1NlcGFyYXRlKHVuc2lnbmVkIGxvbmcgZmFjZSwgdW5zaWduZWQg
bG9uZyBmdW5jLCBsb25nIHJlZiwgdW5zaWduZWQgbG9uZyBtYXNrKTsKLSAgICB2b2lkIHN0ZW5j
aWxNYXNrKHVuc2lnbmVkIGxvbmcgbWFzayk7Ci0gICAgdm9pZCBzdGVuY2lsTWFza1NlcGFyYXRl
KHVuc2lnbmVkIGxvbmcgZmFjZSwgdW5zaWduZWQgbG9uZyBtYXNrKTsKLSAgICB2b2lkIHN0ZW5j
aWxPcCh1bnNpZ25lZCBsb25nIGZhaWwsIHVuc2lnbmVkIGxvbmcgemZhaWwsIHVuc2lnbmVkIGxv
bmcgenBhc3MpOwotICAgIHZvaWQgc3RlbmNpbE9wU2VwYXJhdGUodW5zaWduZWQgbG9uZyBmYWNl
LCB1bnNpZ25lZCBsb25nIGZhaWwsIHVuc2lnbmVkIGxvbmcgemZhaWwsIHVuc2lnbmVkIGxvbmcg
enBhc3MpOwotCi0gICAgLy8gVGhlc2UgbmV4dCBzZXZlcmFsIGZ1bmN0aW9ucyByZXR1cm4gYW4g
ZXJyb3IgY29kZSAoMCBpZiBubyBlcnJvcnMpIHJhdGhlciB0aGFuIHVzaW5nIGFuIEV4Y2VwdGlv
bkNvZGUuCi0gICAgLy8gQ3VycmVudGx5IHRoZXkgcmV0dXJuIC0xIG9uIGFueSBlcnJvci4KLSAg
ICBpbnQgdGV4SW1hZ2UyRCh1bnNpZ25lZCB0YXJnZXQsIHVuc2lnbmVkIGxldmVsLCB1bnNpZ25l
ZCBpbnRlcm5hbGZvcm1hdCwgdW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCwgdW5zaWdu
ZWQgYm9yZGVyLCB1bnNpZ25lZCBmb3JtYXQsIHVuc2lnbmVkIHR5cGUsIHZvaWQqIHBpeGVscyk7
Ci0KLSAgICB2b2lkIHRleFBhcmFtZXRlcmYodW5zaWduZWQgdGFyZ2V0LCB1bnNpZ25lZCBwbmFt
ZSwgZmxvYXQgcGFyYW0pOwotICAgIHZvaWQgdGV4UGFyYW1ldGVyaSh1bnNpZ25lZCB0YXJnZXQs
IHVuc2lnbmVkIHBuYW1lLCBpbnQgcGFyYW0pOwotCi0gICAgaW50IHRleFN1YkltYWdlMkQodW5z
aWduZWQgdGFyZ2V0LCB1bnNpZ25lZCBsZXZlbCwgdW5zaWduZWQgeG9mZnNldCwgdW5zaWduZWQg
eW9mZnNldCwgdW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCwgdW5zaWduZWQgZm9ybWF0
LCB1bnNpZ25lZCB0eXBlLCB2b2lkKiBwaXhlbHMpOwotCi0gICAgdm9pZCB1bmlmb3JtMWYobG9u
ZyBsb2NhdGlvbiwgZmxvYXQgeCk7Ci0gICAgdm9pZCB1bmlmb3JtMWZ2KGxvbmcgbG9jYXRpb24s
IGZsb2F0KiB2LCBpbnQgc2l6ZSk7Ci0gICAgdm9pZCB1bmlmb3JtMWkobG9uZyBsb2NhdGlvbiwg
aW50IHgpOwotICAgIHZvaWQgdW5pZm9ybTFpdihsb25nIGxvY2F0aW9uLCBpbnQqIHYsIGludCBz
aXplKTsKLSAgICB2b2lkIHVuaWZvcm0yZihsb25nIGxvY2F0aW9uLCBmbG9hdCB4LCBmbG9hdCB5
KTsKLSAgICB2b2lkIHVuaWZvcm0yZnYobG9uZyBsb2NhdGlvbiwgZmxvYXQqIHYsIGludCBzaXpl
KTsKLSAgICB2b2lkIHVuaWZvcm0yaShsb25nIGxvY2F0aW9uLCBpbnQgeCwgaW50IHkpOwotICAg
IHZvaWQgdW5pZm9ybTJpdihsb25nIGxvY2F0aW9uLCBpbnQqIHYsIGludCBzaXplKTsKLSAgICB2
b2lkIHVuaWZvcm0zZihsb25nIGxvY2F0aW9uLCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KTsK
LSAgICB2b2lkIHVuaWZvcm0zZnYobG9uZyBsb2NhdGlvbiwgZmxvYXQqIHYsIGludCBzaXplKTsK
LSAgICB2b2lkIHVuaWZvcm0zaShsb25nIGxvY2F0aW9uLCBpbnQgeCwgaW50IHksIGludCB6KTsK
LSAgICB2b2lkIHVuaWZvcm0zaXYobG9uZyBsb2NhdGlvbiwgaW50KiB2LCBpbnQgc2l6ZSk7Ci0g
ICAgdm9pZCB1bmlmb3JtNGYobG9uZyBsb2NhdGlvbiwgZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQg
eiwgZmxvYXQgdyk7Ci0gICAgdm9pZCB1bmlmb3JtNGZ2KGxvbmcgbG9jYXRpb24sIGZsb2F0KiB2
LCBpbnQgc2l6ZSk7Ci0gICAgdm9pZCB1bmlmb3JtNGkobG9uZyBsb2NhdGlvbiwgaW50IHgsIGlu
dCB5LCBpbnQgeiwgaW50IHcpOwotICAgIHZvaWQgdW5pZm9ybTRpdihsb25nIGxvY2F0aW9uLCBp
bnQqIHYsIGludCBzaXplKTsKLSAgICB2b2lkIHVuaWZvcm1NYXRyaXgyZnYobG9uZyBsb2NhdGlv
biwgYm9vbCB0cmFuc3Bvc2UsIGZsb2F0KiB2YWx1ZSwgaW50IHNpemUpOwotICAgIHZvaWQgdW5p
Zm9ybU1hdHJpeDNmdihsb25nIGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgZmxvYXQqIHZhbHVl
LCBpbnQgc2l6ZSk7Ci0gICAgdm9pZCB1bmlmb3JtTWF0cml4NGZ2KGxvbmcgbG9jYXRpb24sIGJv
b2wgdHJhbnNwb3NlLCBmbG9hdCogdmFsdWUsIGludCBzaXplKTsKKyAgICB2b2lkIHN0ZW5jaWxG
dW5jKEdDM0RlbnVtIGZ1bmMsIEdDM0RpbnQgcmVmLCBHQzNEdWludCBtYXNrKTsKKyAgICB2b2lk
IHN0ZW5jaWxGdW5jU2VwYXJhdGUoR0MzRGVudW0gZmFjZSwgR0MzRGVudW0gZnVuYywgR0MzRGlu
dCByZWYsIEdDM0R1aW50IG1hc2spOworICAgIHZvaWQgc3RlbmNpbE1hc2soR0MzRHVpbnQgbWFz
ayk7CisgICAgdm9pZCBzdGVuY2lsTWFza1NlcGFyYXRlKEdDM0RlbnVtIGZhY2UsIEdDM0R1aW50
IG1hc2spOworICAgIHZvaWQgc3RlbmNpbE9wKEdDM0RlbnVtIGZhaWwsIEdDM0RlbnVtIHpmYWls
LCBHQzNEZW51bSB6cGFzcyk7CisgICAgdm9pZCBzdGVuY2lsT3BTZXBhcmF0ZShHQzNEZW51bSBm
YWNlLCBHQzNEZW51bSBmYWlsLCBHQzNEZW51bSB6ZmFpbCwgR0MzRGVudW0genBhc3MpOworCisg
ICAgLy8gdGV4SW1hZ2UyRCByZXR1cm4gZmFsc2Ugb24gYW55IGVycm9yIHJhdGhlciB0aGFuIHVz
aW5nIGFuIEV4Y2VwdGlvbkNvZGUuCisgICAgYm9vbCB0ZXhJbWFnZTJEKEdDM0RlbnVtIHRhcmdl
dCwgR0MzRGludCBsZXZlbCwgR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDM0RzaXplaSB3aWR0
aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGludCBib3JkZXIsIEdDM0RlbnVtIGZvcm1hdCwgR0Mz
RGVudW0gdHlwZSwgR0MzRHZvaWQqIHBpeGVscyk7CisgICAgdm9pZCB0ZXhQYXJhbWV0ZXJmKEdD
M0RlbnVtIHRhcmdldCwgR0MzRGVudW0gcG5hbWUsIEdDM0RmbG9hdCBwYXJhbSk7CisgICAgdm9p
ZCB0ZXhQYXJhbWV0ZXJpKEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gcG5hbWUsIEdDM0RpbnQg
cGFyYW0pOworICAgIHZvaWQgdGV4U3ViSW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQg
bGV2ZWwsIEdDM0RpbnQgeG9mZnNldCwgR0MzRGludCB5b2Zmc2V0LCBHQzNEc2l6ZWkgd2lkdGgs
IEdDM0RzaXplaSBoZWlnaHQsIEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVudW0gdHlwZSwgR0MzRHZv
aWQqIHBpeGVscyk7CisKKyAgICB2b2lkIHVuaWZvcm0xZihHQzNEaW50IGxvY2F0aW9uLCBHQzNE
ZmxvYXQgeCk7CisgICAgdm9pZCB1bmlmb3JtMWZ2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RmbG9h
dCogdiwgR0MzRHNpemVpIHNpemUpOworICAgIHZvaWQgdW5pZm9ybTFpKEdDM0RpbnQgbG9jYXRp
b24sIEdDM0RpbnQgeCk7CisgICAgdm9pZCB1bmlmb3JtMWl2KEdDM0RpbnQgbG9jYXRpb24sIEdD
M0RpbnQqIHYsIEdDM0RzaXplaSBzaXplKTsKKyAgICB2b2lkIHVuaWZvcm0yZihHQzNEaW50IGxv
Y2F0aW9uLCBHQzNEZmxvYXQgeCwgZmxvYXQgeSk7CisgICAgdm9pZCB1bmlmb3JtMmZ2KEdDM0Rp
bnQgbG9jYXRpb24sIEdDM0RmbG9hdCogdiwgR0MzRHNpemVpIHNpemUpOworICAgIHZvaWQgdW5p
Zm9ybTJpKEdDM0RpbnQgbG9jYXRpb24sIEdDM0RpbnQgeCwgR0MzRGludCB5KTsKKyAgICB2b2lk
IHVuaWZvcm0yaXYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGludCogdiwgR0MzRHNpemVpIHNpemUp
OworICAgIHZvaWQgdW5pZm9ybTNmKEdDM0RpbnQgbG9jYXRpb24sIEdDM0RmbG9hdCB4LCBHQzNE
ZmxvYXQgeSwgR0MzRGZsb2F0IHopOworICAgIHZvaWQgdW5pZm9ybTNmdihHQzNEaW50IGxvY2F0
aW9uLCBHQzNEZmxvYXQqIHYsIEdDM0RzaXplaSBzaXplKTsKKyAgICB2b2lkIHVuaWZvcm0zaShH
QzNEaW50IGxvY2F0aW9uLCBHQzNEaW50IHgsIEdDM0RpbnQgeSwgR0MzRGludCB6KTsKKyAgICB2
b2lkIHVuaWZvcm0zaXYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGludCogdiwgR0MzRHNpemVpIHNp
emUpOworICAgIHZvaWQgdW5pZm9ybTRmKEdDM0RpbnQgbG9jYXRpb24sIEdDM0RmbG9hdCB4LCBH
QzNEZmxvYXQgeSwgR0MzRGZsb2F0IHosIEdDM0RmbG9hdCB3KTsKKyAgICB2b2lkIHVuaWZvcm00
ZnYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGZsb2F0KiB2LCBHQzNEc2l6ZWkgc2l6ZSk7CisgICAg
dm9pZCB1bmlmb3JtNGkoR0MzRGludCBsb2NhdGlvbiwgR0MzRGludCB4LCBHQzNEaW50IHksIEdD
M0RpbnQgeiwgR0MzRGludCB3KTsKKyAgICB2b2lkIHVuaWZvcm00aXYoR0MzRGludCBsb2NhdGlv
biwgR0MzRGludCogdiwgR0MzRHNpemVpIHNpemUpOworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDJm
dihHQzNEaW50IGxvY2F0aW9uLCBHQzNEYm9vbGVhbiB0cmFuc3Bvc2UsIEdDM0RmbG9hdCogdmFs
dWUsIEdDM0RzaXplaSBzaXplKTsKKyAgICB2b2lkIHVuaWZvcm1NYXRyaXgzZnYoR0MzRGludCBs
b2NhdGlvbiwgR0MzRGJvb2xlYW4gdHJhbnNwb3NlLCBHQzNEZmxvYXQqIHZhbHVlLCBHQzNEc2l6
ZWkgc2l6ZSk7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4NGZ2KEdDM0RpbnQgbG9jYXRpb24sIEdD
M0Rib29sZWFuIHRyYW5zcG9zZSwgR0MzRGZsb2F0KiB2YWx1ZSwgR0MzRHNpemVpIHNpemUpOwog
CiAgICAgdm9pZCB1c2VQcm9ncmFtKFBsYXRmb3JtM0RPYmplY3QpOwogICAgIHZvaWQgdmFsaWRh
dGVQcm9ncmFtKFBsYXRmb3JtM0RPYmplY3QpOwogCi0gICAgdm9pZCB2ZXJ0ZXhBdHRyaWIxZih1
bnNpZ25lZCBsb25nIGluZHgsIGZsb2F0IHgpOwotICAgIHZvaWQgdmVydGV4QXR0cmliMWZ2KHVu
c2lnbmVkIGxvbmcgaW5keCwgZmxvYXQqIHZhbHVlcyk7Ci0gICAgdm9pZCB2ZXJ0ZXhBdHRyaWIy
Zih1bnNpZ25lZCBsb25nIGluZHgsIGZsb2F0IHgsIGZsb2F0IHkpOwotICAgIHZvaWQgdmVydGV4
QXR0cmliMmZ2KHVuc2lnbmVkIGxvbmcgaW5keCwgZmxvYXQqIHZhbHVlcyk7Ci0gICAgdm9pZCB2
ZXJ0ZXhBdHRyaWIzZih1bnNpZ25lZCBsb25nIGluZHgsIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0
IHopOwotICAgIHZvaWQgdmVydGV4QXR0cmliM2Z2KHVuc2lnbmVkIGxvbmcgaW5keCwgZmxvYXQq
IHZhbHVlcyk7Ci0gICAgdm9pZCB2ZXJ0ZXhBdHRyaWI0Zih1bnNpZ25lZCBsb25nIGluZHgsIGZs
b2F0IHgsIGZsb2F0IHksIGZsb2F0IHosIGZsb2F0IHcpOwotICAgIHZvaWQgdmVydGV4QXR0cmli
NGZ2KHVuc2lnbmVkIGxvbmcgaW5keCwgZmxvYXQqIHZhbHVlcyk7Ci0gICAgdm9pZCB2ZXJ0ZXhB
dHRyaWJQb2ludGVyKHVuc2lnbmVkIGxvbmcgaW5keCwgaW50IHNpemUsIGludCB0eXBlLCBib29s
IG5vcm1hbGl6ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcg
c3RyaWRlLCB1bnNpZ25lZCBsb25nIG9mZnNldCk7Ci0KLSAgICB2b2lkIHZpZXdwb3J0KGxvbmcg
eCwgbG9uZyB5LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCk7Ci0K
LSAgICB1bnNpZ25lZCBjcmVhdGVCdWZmZXIoKTsKLSAgICB1bnNpZ25lZCBjcmVhdGVGcmFtZWJ1
ZmZlcigpOwotICAgIHVuc2lnbmVkIGNyZWF0ZVByb2dyYW0oKTsKLSAgICB1bnNpZ25lZCBjcmVh
dGVSZW5kZXJidWZmZXIoKTsKLSAgICB1bnNpZ25lZCBjcmVhdGVTaGFkZXIodW5zaWduZWQgbG9u
Zyk7Ci0gICAgdW5zaWduZWQgY3JlYXRlVGV4dHVyZSgpOwotCi0gICAgdm9pZCBkZWxldGVCdWZm
ZXIodW5zaWduZWQpOwotICAgIHZvaWQgZGVsZXRlRnJhbWVidWZmZXIodW5zaWduZWQpOwotICAg
IHZvaWQgZGVsZXRlUHJvZ3JhbSh1bnNpZ25lZCk7Ci0gICAgdm9pZCBkZWxldGVSZW5kZXJidWZm
ZXIodW5zaWduZWQpOwotICAgIHZvaWQgZGVsZXRlU2hhZGVyKHVuc2lnbmVkKTsKLSAgICB2b2lk
IGRlbGV0ZVRleHR1cmUodW5zaWduZWQpOworICAgIHZvaWQgdmVydGV4QXR0cmliMWYoR0MzRHVp
bnQgaW5kZXgsIEdDM0RmbG9hdCB4KTsKKyAgICB2b2lkIHZlcnRleEF0dHJpYjFmdihHQzNEdWlu
dCBpbmRleCwgR0MzRGZsb2F0KiB2YWx1ZXMpOworICAgIHZvaWQgdmVydGV4QXR0cmliMmYoR0Mz
RHVpbnQgaW5kZXgsIEdDM0RmbG9hdCB4LCBHQzNEZmxvYXQgeSk7CisgICAgdm9pZCB2ZXJ0ZXhB
dHRyaWIyZnYoR0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCogdmFsdWVzKTsKKyAgICB2b2lkIHZl
cnRleEF0dHJpYjNmKEdDM0R1aW50IGluZGV4LCBHQzNEZmxvYXQgeCwgR0MzRGZsb2F0IHksIEdD
M0RmbG9hdCB6KTsKKyAgICB2b2lkIHZlcnRleEF0dHJpYjNmdihHQzNEdWludCBpbmRleCwgR0Mz
RGZsb2F0KiB2YWx1ZXMpOworICAgIHZvaWQgdmVydGV4QXR0cmliNGYoR0MzRHVpbnQgaW5kZXgs
IEdDM0RmbG9hdCB4LCBHQzNEZmxvYXQgeSwgR0MzRGZsb2F0IHosIEdDM0RmbG9hdCB3KTsKKyAg
ICB2b2lkIHZlcnRleEF0dHJpYjRmdihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0KiB2YWx1ZXMp
OworICAgIHZvaWQgdmVydGV4QXR0cmliUG9pbnRlcihHQzNEdWludCBpbmRleCwgR0MzRGludCBz
aXplLCBHQzNEZW51bSB0eXBlLCBHQzNEYm9vbGVhbiBub3JtYWxpemVkLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHQzNEc2l6ZWkgc3RyaWRlLCBHQzNEc2l6ZWlwdHIgb2Zmc2V0KTsK
KworICAgIHZvaWQgdmlld3BvcnQoR0MzRGludCB4LCBHQzNEaW50IHksIEdDM0RzaXplaSB3aWR0
aCwgR0MzRHNpemVpIGhlaWdodCk7CisKKyAgICBQbGF0Zm9ybTNET2JqZWN0IGNyZWF0ZUJ1ZmZl
cigpOworICAgIFBsYXRmb3JtM0RPYmplY3QgY3JlYXRlRnJhbWVidWZmZXIoKTsKKyAgICBQbGF0
Zm9ybTNET2JqZWN0IGNyZWF0ZVByb2dyYW0oKTsKKyAgICBQbGF0Zm9ybTNET2JqZWN0IGNyZWF0
ZVJlbmRlcmJ1ZmZlcigpOworICAgIFBsYXRmb3JtM0RPYmplY3QgY3JlYXRlU2hhZGVyKEdDM0Rl
bnVtKTsKKyAgICBQbGF0Zm9ybTNET2JqZWN0IGNyZWF0ZVRleHR1cmUoKTsKKworICAgIHZvaWQg
ZGVsZXRlQnVmZmVyKFBsYXRmb3JtM0RPYmplY3QpOworICAgIHZvaWQgZGVsZXRlRnJhbWVidWZm
ZXIoUGxhdGZvcm0zRE9iamVjdCk7CisgICAgdm9pZCBkZWxldGVQcm9ncmFtKFBsYXRmb3JtM0RP
YmplY3QpOworICAgIHZvaWQgZGVsZXRlUmVuZGVyYnVmZmVyKFBsYXRmb3JtM0RPYmplY3QpOwor
ICAgIHZvaWQgZGVsZXRlU2hhZGVyKFBsYXRmb3JtM0RPYmplY3QpOworICAgIHZvaWQgZGVsZXRl
VGV4dHVyZShQbGF0Zm9ybTNET2JqZWN0KTsKIAotICAgIHZvaWQgc3ludGhlc2l6ZUdMRXJyb3Io
dW5zaWduZWQgbG9uZyBlcnJvcik7CisgICAgdm9pZCBzeW50aGVzaXplR0xFcnJvcihHQzNEZW51
bSBlcnJvcik7CiAKICAgICAvLyBFeHRlbnNpb25zM0Qgc3VwcG9ydC4KICAgICBFeHRlbnNpb25z
M0QqIGdldEV4dGVuc2lvbnMoKTsKQEAgLTI3MywxNCArMjUxLDE0IEBAIHB1YmxpYzoKIAogICAg
IC8vIEdMX0NIUk9NSVVNX21hcF9zdWIKICAgICBib29sIHN1cHBvcnRzTWFwU3ViQ0hST01JVU0o
KTsKLSAgICB2b2lkKiBtYXBCdWZmZXJTdWJEYXRhQ0hST01JVU0odW5zaWduZWQgdGFyZ2V0LCBp
bnQgb2Zmc2V0LCBpbnQgc2l6ZSwgdW5zaWduZWQgYWNjZXNzKTsKLSAgICB2b2lkIHVubWFwQnVm
ZmVyU3ViRGF0YUNIUk9NSVVNKGNvbnN0IHZvaWQqKTsKLSAgICB2b2lkKiBtYXBUZXhTdWJJbWFn
ZTJEQ0hST01JVU0odW5zaWduZWQgdGFyZ2V0LCBpbnQgbGV2ZWwsIGludCB4b2Zmc2V0LCBpbnQg
eW9mZnNldCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCB1bnNpZ25lZCBmb3JtYXQsIHVuc2lnbmVk
IHR5cGUsIHVuc2lnbmVkIGFjY2Vzcyk7Ci0gICAgdm9pZCB1bm1hcFRleFN1YkltYWdlMkRDSFJP
TUlVTShjb25zdCB2b2lkKik7CisgICAgR0MzRHZvaWQqIG1hcEJ1ZmZlclN1YkRhdGFDSFJPTUlV
TShHQzNEZW51bSB0YXJnZXQsIEdDM0RzaXplaXB0ciBvZmZzZXQsIEdDM0RzaXplaSBzaXplLCBH
QzNEZW51bSBhY2Nlc3MpOworICAgIHZvaWQgdW5tYXBCdWZmZXJTdWJEYXRhQ0hST01JVU0oY29u
c3QgR0MzRHZvaWQqKTsKKyAgICBHQzNEdm9pZCogbWFwVGV4U3ViSW1hZ2UyRENIUk9NSVVNKEdD
M0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGludCB4b2Zmc2V0LCBHQzNEaW50IHlv
ZmZzZXQsIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGVudW0gZm9ybWF0
LCBHQzNEZW51bSB0eXBlLCBHQzNEZW51bSBhY2Nlc3MpOworICAgIHZvaWQgdW5tYXBUZXhTdWJJ
bWFnZTJEQ0hST01JVU0oY29uc3QgR0MzRHZvaWQqKTsKIAogICAgIC8vIEdMX0NIUk9NSVVNX2Nv
cHlfdGV4dHVyZV90b19wYXJlbnRfdGV4dHVyZQogICAgIGJvb2wgc3VwcG9ydHNDb3B5VGV4dHVy
ZVRvUGFyZW50VGV4dHVyZUNIUk9NSVVNKCk7Ci0gICAgdm9pZCBjb3B5VGV4dHVyZVRvUGFyZW50
VGV4dHVyZUNIUk9NSVVNKHVuc2lnbmVkIHRleHR1cmUsIHVuc2lnbmVkIHBhcmVudFRleHR1cmUp
OworICAgIHZvaWQgY29weVRleHR1cmVUb1BhcmVudFRleHR1cmVDSFJPTUlVTShQbGF0Zm9ybTNE
T2JqZWN0IHRleHR1cmUsIFBsYXRmb3JtM0RPYmplY3QgcGFyZW50VGV4dHVyZSk7CiAKIHByaXZh
dGU6CiAgICAgT3duUHRyPFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0Q+IG1faW1wbDsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78190</attachid>
            <date>2011-01-06 17:02:53 -0800</date>
            <delta_ts>2011-01-06 17:14:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-45557-20110106170252.patch</filename>
            <type>text/plain</type>
            <size>214069</size>
            <attacher name="Zhenyao Mo">zmo</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3NTA5NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzEzIEBACisyMDExLTAxLTA1ICBaaGVueWFvIE1vICA8em1vQGdvb2dsZS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRGVmaW5l
IEdDM0QgdHlwZXMgdG8gbWF0Y2ggR0wgdHlwZXMgYW5kIHVzZSB0aGVtIGluIEdyYXBoaWNzQ29u
dGV4dDNECisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00
NTU1NworCisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6cmVhZFBpeGVscyk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRlVGV4RnVuY0Rh
dGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp0ZXhJbWFnZTJEUmVzb3VyY2VT
YWZlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpjb21wdXRlRm9ybWF0
QW5kVHlwZVBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
OmV4dHJhY3RJbWFnZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
OmV4dHJhY3RUZXh0dXJlRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0M0QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0Nv
bnRleHQzRENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRJ
bWFnZURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9TaGFyZWRHcmFwaGlj
c0NvbnRleHQzRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRHcmFwaGljc0NvbnRleHQz
RDo6ZW5hYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEdyYXBoaWNzQ29udGV4dDNEOjpk
aXNhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEdyYXBoaWNzQ29udGV4dDNEOjpjbGVh
cik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRHcmFwaGljc0NvbnRleHQzRDo6ZHJhd0FycmF5
cyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRHcmFwaGljc0NvbnRleHQzRDo6Z2V0RXJyb3Ip
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkR3JhcGhpY3NDb250ZXh0M0Q6OmdldEludGVnZXJ2
KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVGcmFt
ZWJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRHcmFwaGljc0NvbnRleHQzRDo6Y3Jl
YXRlVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRHcmFwaGljc0NvbnRleHQzRDo6
ZGVsZXRlRnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkR3JhcGhpY3NDb250
ZXh0M0Q6OmRlbGV0ZVRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkR3JhcGhpY3ND
b250ZXh0M0Q6OmZyYW1lYnVmZmVyVGV4dHVyZTJEKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJl
ZEdyYXBoaWNzQ29udGV4dDNEOjp0ZXhQYXJhbWV0ZXJpKToKKyAgICAgICAgKFdlYkNvcmU6OlNo
YXJlZEdyYXBoaWNzQ29udGV4dDNEOjp0ZXhJbWFnZTJEKToKKyAgICAgICAgKFdlYkNvcmU6OlNo
YXJlZEdyYXBoaWNzQ29udGV4dDNEOjp0ZXhTdWJJbWFnZTJEKToKKyAgICAgICAgKFdlYkNvcmU6
OlNoYXJlZEdyYXBoaWNzQ29udGV4dDNEOjpyZWFkUGl4ZWxzKToKKyAgICAgICAgKFdlYkNvcmU6
OlNoYXJlZEdyYXBoaWNzQ29udGV4dDNEOjpzZXRBY3RpdmVUZXh0dXJlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYXJlZEdyYXBoaWNzQ29udGV4dDNEOjpiaW5kVGV4dHVyZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFyZWRHcmFwaGljc0NvbnRleHQzRDo6YmluZEZyYW1lYnVmZmVyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvU2hhcmVkR3JhcGhpY3NDb250ZXh0M0QuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmFjdGl2ZVRleHR1cmUp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmF0dGFjaFNoYWRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6YmluZEF0dHJpYkxvY2F0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpiaW5kQnVmZmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpiaW5kRnJhbWVidWZmZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRSZW5kZXJidWZmZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRUZXh0dXJlKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpibGVuZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNEOjpibGVuZEVxdWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNEOjpibGVuZEVxdWF0aW9uU2VwYXJhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmJsZW5kRnVuYyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzRDo6YmxlbmRGdW5jU2VwYXJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q6OmJ1ZmZlckRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q6OmJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OmNoZWNrRnJhbWVidWZmZXJTdGF0dXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0Q6OmNsZWFyQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpjbGVh
ckRlcHRoKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpjbGVhclN0ZW5j
aWwpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNvbG9yTWFzayk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y29tcGlsZVNoYWRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y29weVRleEltYWdlMkQpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNvcHlUZXhTdWJJbWFnZTJEKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpjdWxsRmFjZSk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzRDo6ZGVwdGhGdW5jKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNEOjpkZXB0aE1hc2spOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q6OmRlcHRoUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0Q6OmRldGFjaFNoYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6
ZGlzYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6ZGlzYWJsZVZl
cnRleEF0dHJpYkFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpk
cmF3QXJyYXlzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpkcmF3RWxl
bWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmVuYWJsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6ZW5hYmxlVmVydGV4QXR0cmliQXJy
YXkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmZyYW1lYnVmZmVyUmVu
ZGVyYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpmcmFtZWJ1
ZmZlclRleHR1cmUyRCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6ZnJv
bnRGYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZW5lcmF0ZU1p
cG1hcCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0QWN0aXZlQXR0
cmliKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRBY3RpdmVVbmlm
b3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRBdHRhY2hlZFNo
YWRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEF0dHJpYkxv
Y2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRFcnJvcik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0U3RyaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpoaW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNEOjppc0J1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRDo6aXNFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEOjppc0ZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
Ojppc1Byb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmlzUmVu
ZGVyYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjppc1NoYWRl
cik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6aXNUZXh0dXJlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpsaW5lV2lkdGgpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmxpbmtQcm9ncmFtKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNEOjpwaXhlbFN0b3JlaSk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzRDo6cG9seWdvbk9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzRDo6cmVhZFBpeGVscyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRDo6cmVuZGVyYnVmZmVyU3RvcmFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRDo6c2FtcGxlQ292ZXJhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q6OnNjaXNzb3IpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
OnN0ZW5jaWxGdW5jKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpzdGVu
Y2lsRnVuY1NlcGFyYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpz
dGVuY2lsTWFzayk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6c3RlbmNp
bE1hc2tTZXBhcmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6c3Rl
bmNpbE9wKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpzdGVuY2lsT3BT
ZXBhcmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dGV4UGFyYW1l
dGVyZik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dGV4UGFyYW1ldGVy
aSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTFmKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMWZ2KToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMmYpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0yZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0zZik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRDo6dW5pZm9ybTNmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
RDo6dW5pZm9ybTRmKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlm
b3JtNGZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMWkp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0xaXYpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0yaSk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTJpdik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTNpKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNEOjp1bmlmb3JtM2l2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEOjp1bmlmb3JtNGkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
OnVuaWZvcm00aXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZv
cm1NYXRyaXgyZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZv
cm1NYXRyaXgzZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZv
cm1NYXRyaXg0ZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVzZVBy
b2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnZhbGlkYXRlUHJv
Z3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmli
MWYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjFm
dik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliMmYp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjJmdik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliM2YpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjNmdik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliNGYpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjRmdik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliUG9pbnRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dmlld3BvcnQpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEJvb2xlYW52KToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRCdWZmZXJQYXJhbWV0ZXJpdik6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0RmxvYXR2KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0SW50ZWdlcnYpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFByb2dyYW1pdik6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0UHJvZ3JhbUluZm9Mb2cpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRTaGFkZXJpdik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0U2hhZGVySW5mb0xvZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0VGV4UGFyYW1ldGVyZnYpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFRleFBhcmFtZXRlcml2KToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRVbmlmb3JtZnYpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFVuaWZvcm1pdik6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0VW5pZm9ybUxvY2F0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJmdik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0VmVydGV4QXR0cmliaXYpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFZlcnRleEF0dHJpYk9mZnNldCk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dGV4SW1hZ2UyRCk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dGV4U3ViSW1hZ2UyRCk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlQnVmZmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVGcmFtZWJ1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlUHJvZ3JhbSk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlUmVuZGVyYnVmZmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVTaGFkZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZVRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0Q6OmRlbGV0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzRDo6ZGVsZXRlRnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q6OmRlbGV0ZVByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0Q6OmRlbGV0ZVJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzRDo6ZGVsZXRlU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNEOjpkZWxldGVUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEOjpzaXplSW5CeXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
RDo6c3ludGhlc2l6ZUdMRXJyb3IpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0dy
YXBoaWNzQ29udGV4dDNEUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0Q6OmFjdGl2ZVRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
OmF0dGFjaFNoYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0
QXR0YWNoZWRTaGFkZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpi
aW5kQXR0cmliTG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
OmJpbmRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRG
cmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6YmluZFJl
bmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6YmluZFRl
eHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmJsZW5kQ29sb3Ip
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmJsZW5kRXF1YXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmJsZW5kRXF1YXRpb25TZXBhcmF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6YmxlbmRGdW5jKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpibGVuZEZ1bmNTZXBhcmF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6YnVmZmVyRGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6YnVmZmVyU3ViRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y2xlYXJDb2xvcik6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q6OmNsZWFyRGVwdGgpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q6OmNsZWFyU3RlbmNpbCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRDo6Y29sb3JNYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpj
b21waWxlU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpjb3B5
VGV4SW1hZ2UyRCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y29weVRl
eFN1YkltYWdlMkQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmN1bGxG
YWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpkZXB0aEZ1bmMpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmRlcHRoTWFzayk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6ZGVwdGhSYW5nZSk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzRDo6ZGV0YWNoU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNEOjpkaXNhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNEOjpkaXNhYmxlVmVydGV4QXR0cmliQXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0Q6OmRyYXdBcnJheXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0Q6OmRyYXdFbGVtZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRDo6ZW5hYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpl
bmFibGVWZXJ0ZXhBdHRyaWJBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRDo6ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0Q6OmZyYW1lYnVmZmVyVGV4dHVyZTJEKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNEOjpmcm9udEZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q6OmdlbmVyYXRlTWlwbWFwKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEOjpnZXRBY3RpdmVBdHRyaWIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OmdldEFjdGl2ZVVuaWZvcm0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OmdldEF0dHJpYkxvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEOjpnZXRFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6
Z2V0U3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpoaW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjppc0J1ZmZlcik6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6aXNFbmFibGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNEOjppc0ZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNEOjppc1Byb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0Q6OmlzUmVuZGVyYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNEOjppc1NoYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
RDo6aXNUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpsaW5r
UHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6cGl4ZWxTdG9y
ZWkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnBvbHlnb25PZmZzZXQp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnJlYWRQaXhlbHMpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnJlbmRlcmJ1ZmZlclN0b3JhZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnNhbXBsZUNvdmVyYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpzY2lzc29yKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpzdGVuY2lsRnVuYyk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRDo6c3RlbmNpbEZ1bmNTZXBhcmF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzRDo6c3RlbmNpbE1hc2spOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0Q6OnN0ZW5jaWxNYXNrU2VwYXJhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnN0ZW5jaWxPcCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzRDo6c3RlbmNpbE9wU2VwYXJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q6OnRleFBhcmFtZXRlcmYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0Q6OnRleFBhcmFtZXRlcmkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q6OnVuaWZvcm0xZik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
RDo6dW5pZm9ybTFmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5p
Zm9ybTJmKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMmZ2
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtM2YpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0zZnYpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm00Zik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTRmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzRDo6dW5pZm9ybTFpKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEOjp1bmlmb3JtMWl2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
Ojp1bmlmb3JtMmkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZv
cm0yaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0zaSk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTNpdik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTRpKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtNGl2KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtTWF0cml4MmZ2KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtTWF0cml4M2Z2KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtTWF0cml4NGZ2KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNEOjp1c2VQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNEOjp2YWxpZGF0ZVByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjFmKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIxZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q6OnZlcnRleEF0dHJpYjJmKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEOjp2ZXJ0ZXhBdHRyaWIyZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OnZlcnRleEF0dHJpYjNmKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEOjp2ZXJ0ZXhBdHRyaWIzZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0Q6OnZlcnRleEF0dHJpYjRmKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
Ojp2ZXJ0ZXhBdHRyaWI0ZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
OnZlcnRleEF0dHJpYlBvaW50ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0Q6OnZpZXdwb3J0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRC
b29sZWFudik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0QnVmZmVy
UGFyYW1ldGVyaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEZs
b2F0dik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0RnJhbWVidWZm
ZXJBdHRhY2htZW50UGFyYW1ldGVyaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OmdldEludGVnZXJ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
OjpnZXRQcm9ncmFtaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6Omdl
dFByb2dyYW1JbmZvTG9nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpn
ZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRDo6Z2V0U2hhZGVyaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0Q6OmdldFNoYWRlckluZm9Mb2cpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0Q6OmdldFNoYWRlclNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
RDo6Z2V0VGV4UGFyYW1ldGVyZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0Q6OmdldFRleFBhcmFtZXRlcml2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEOjpnZXRVbmlmb3JtZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
OmdldFVuaWZvcm1pdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0
VW5pZm9ybUxvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpn
ZXRWZXJ0ZXhBdHRyaWJmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6
Z2V0VmVydGV4QXR0cmliaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
OmdldFZlcnRleEF0dHJpYk9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRDo6dGV4SW1hZ2UyRCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6
dGV4U3ViSW1hZ2UyRCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y3Jl
YXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVG
cmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRl
UHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlUmVu
ZGVyYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVT
aGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZVRleHR1
cmUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmRlbGV0ZUJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6ZGVsZXRlRnJhbWVidWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmRlbGV0ZVByb2dyYW0pOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmRlbGV0ZVJlbmRlcmJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6ZGVsZXRlU2hhZGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpkZWxldGVUZXh0dXJlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpzaXplSW5CeXRlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6c3ludGhlc2l6ZUdMRXJyb3IpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEltYWdlRGF0YSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvc2tpYS9HcmFwaGljc0NvbnRleHQzRFNraWEuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEltYWdlRGF0YSk6CisKIDIwMTEtMDEtMDUg
IE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IEFyaXlhIEhpZGF5YXQuCkluZGV4OiBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFJlbmRlcmluZ0NvbnRleHQuY3BwCShyZXZpc2lvbiA3NDk3MCkKKysrIFdlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMzMCw3
ICsyMzMwLDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnJlYWRQaXhlbHMobAogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIC8vIFZhbGlkYXRlIGlucHV0IHBhcmFtZXRlcnMuCi0g
ICAgdW5zaWduZWQgbG9uZyBjb21wb25lbnRzUGVyUGl4ZWwsIGJ5dGVzUGVyQ29tcG9uZW50Owor
ICAgIHVuc2lnbmVkIGludCBjb21wb25lbnRzUGVyUGl4ZWwsIGJ5dGVzUGVyQ29tcG9uZW50Owog
ICAgIGlmICghbV9jb250ZXh0LT5jb21wdXRlRm9ybWF0QW5kVHlwZVBhcmFtZXRlcnMoZm9ybWF0
LCB0eXBlLCAmY29tcG9uZW50c1BlclBpeGVsLCAmYnl0ZXNQZXJDb21wb25lbnQpKSB7CiAgICAg
ICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFM
SURfRU5VTSk7CiAgICAgICAgIHJldHVybjsKQEAgLTM4NTYsNyArMzg1Niw3IEBAIGJvb2wgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZVRleEYKICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgfQogCi0gICAgdW5zaWduZWQgbG9uZyBjb21wb25lbnRzUGVyUGl4ZWwsIGJ5
dGVzUGVyQ29tcG9uZW50OworICAgIHVuc2lnbmVkIGludCBjb21wb25lbnRzUGVyUGl4ZWwsIGJ5
dGVzUGVyQ29tcG9uZW50OwogICAgIGlmICghbV9jb250ZXh0LT5jb21wdXRlRm9ybWF0QW5kVHlw
ZVBhcmFtZXRlcnMoZm9ybWF0LCB0eXBlLCAmY29tcG9uZW50c1BlclBpeGVsLCAmYnl0ZXNQZXJD
b21wb25lbnQpKSB7CiAgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhp
Y3NDb250ZXh0M0Q6OklOVkFMSURfRU5VTSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKSW5kZXg6
IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuY3BwCShy
ZXZpc2lvbiA3NDk3MCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0M0QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogbmFtZXNwYWNlIHsKIAotICAgIHVuc2lnbmVkIGJ5dGVzUGVyQ29tcG9uZW50KHVu
c2lnbmVkIHR5cGUpCisgICAgdW5zaWduZWQgaW50IGJ5dGVzUGVyQ29tcG9uZW50KEdDM0RlbnVt
IHR5cGUpCiAgICAgewogICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICAgICAgY2FzZSBHcmFw
aGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURToKQEAgLTU5LDcgKzU5LDcgQEAgbmFtZXNwYWNl
IHsKICAgICAgICAgfQogICAgIH0KIAotICAgIHVuc2lnbmVkIGNvbXBvbmVudHNQZXJQaXhlbCh1
bnNpZ25lZCBmb3JtYXQsIHVuc2lnbmVkIHR5cGUpCisgICAgdW5zaWduZWQgaW50IGNvbXBvbmVu
dHNQZXJQaXhlbChHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUpCiAgICAgewogICAgICAg
ICBzd2l0Y2ggKHR5cGUpIHsKICAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdO
RURfU0hPUlRfNV82XzU6CkBAIC04Nyw5ICs4Nyw5IEBAIG5hbWVzcGFjZSB7CiAKICAgICAvLyBU
aGlzIGZ1bmN0aW9uIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBpZiB3aWR0aCBhbmQgaGVpZ2h0IGlz
IG5vbi16ZXJvIGFuZAogICAgIC8vIGZvcm1hdC90eXBlIGFyZSB2YWxpZC4gIFJldHVybiAwIGlm
IG92ZXJmbG93IGhhcHBlbnMuCi0gICAgc2l6ZV90IGltYWdlU2l6ZUluQnl0ZXModW5zaWduZWQg
d2lkdGgsIHVuc2lnbmVkIGhlaWdodCwgdW5zaWduZWQgZm9ybWF0LCB1bnNpZ25lZCB0eXBlKQor
ICAgIHVuc2lnbmVkIGludCBpbWFnZVNpemVJbkJ5dGVzKEdDM0RzaXplaSB3aWR0aCwgR0MzRHNp
emVpIGhlaWdodCwgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBlKQogICAgIHsKLSAgICAg
ICAgQVNTRVJUKHdpZHRoICYmIGhlaWdodCk7CisgICAgICAgIEFTU0VSVCh3aWR0aCA+IDAgJiYg
aGVpZ2h0ID4gMCk7CiAgICAgICAgIENoZWNrZWRJbnQ8dWludDMyX3Q+IGNoZWNrZWRXaWR0aCh3
aWR0aCk7CiAgICAgICAgIENoZWNrZWRJbnQ8dWludDMyX3Q+IGNoZWNrZWRIZWlnaHQoaGVpZ2h0
KTsKICAgICAgICAgQ2hlY2tlZEludDx1aW50MzJfdD4gY2hlY2tlZEJ5dGVzUGVyUGl4ZWwoYnl0
ZXNQZXJDb21wb25lbnQodHlwZSkgKiBjb21wb25lbnRzUGVyUGl4ZWwoZm9ybWF0LCB0eXBlKSk7
CkBAIC0xMTcsMjYgKzExNywyOSBAQCBQYXNzUmVmUHRyPERyYXdpbmdCdWZmZXI+IEdyYXBoaWNz
Q29udGV4CiAgICAgcmV0dXJuIERyYXdpbmdCdWZmZXI6OmNyZWF0ZSh0aGlzLCBzaXplKTsKIH0K
IAotYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6dGV4SW1hZ2UyRFJlc291cmNlU2FmZSh1bnNpZ25l
ZCB0YXJnZXQsIHVuc2lnbmVkIGxldmVsLCB1bnNpZ25lZCBpbnRlcm5hbGZvcm1hdCwgdW5zaWdu
ZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCwgdW5zaWduZWQgYm9yZGVyLCB1bnNpZ25lZCBmb3Jt
YXQsIHVuc2lnbmVkIHR5cGUpCitib29sIEdyYXBoaWNzQ29udGV4dDNEOjp0ZXhJbWFnZTJEUmVz
b3VyY2VTYWZlKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGVudW0gaW50ZXJu
YWxmb3JtYXQsIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGludCBib3Jk
ZXIsIEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVudW0gdHlwZSkKIHsKICAgICBPd25BcnJheVB0cjx1
bnNpZ25lZCBjaGFyPiB6ZXJvOwotICAgIGlmICh3aWR0aCAmJiBoZWlnaHQpIHsKLSAgICAgICAg
c2l6ZV90IHNpemUgPSBpbWFnZVNpemVJbkJ5dGVzKHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlw
ZSk7CisgICAgaWYgKHdpZHRoID4gMCAmJiBoZWlnaHQgPiAwKSB7CisgICAgICAgIHVuc2lnbmVk
IGludCBzaXplID0gaW1hZ2VTaXplSW5CeXRlcyh3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUp
OwogICAgICAgICBpZiAoIXNpemUpIHsKICAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdy
YXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFKTsKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgfQogICAgICAgICB6ZXJvID0gYWRvcHRBcnJheVB0cihuZXcgdW5zaWduZWQg
Y2hhcltzaXplXSk7CisgICAgICAgIGlmICghemVyby5nZXQoKSkgeworICAgICAgICAgICAgc3lu
dGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUpOworICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CiAgICAgICAgIG1lbXNldCh6ZXJvLmdldCgp
LCAwLCBzaXplKTsKICAgICB9Ci0gICAgdGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5h
bGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIHplcm8uZ2V0KCkp
OwotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiB0ZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWws
IGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgemVy
by5nZXQoKSk7CiB9CiAKLWJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmNvbXB1dGVGb3JtYXRBbmRU
eXBlUGFyYW1ldGVycyh1bnNpZ25lZCBpbnQgZm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCB0eXBlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGxvbmcqIGNvbXBvbmVudHNQZXJQaXhlbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nKiBieXRlc1BlckNvbXBv
bmVudCkKK2Jvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmNvbXB1dGVGb3JtYXRBbmRUeXBlUGFyYW1l
dGVycyhHQzNEZW51bSBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0MzRGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQqIGNvbXBvbmVu
dHNQZXJQaXhlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBpbnQqIGJ5dGVzUGVyQ29tcG9uZW50KQogewogICAgIHN3aXRj
aCAoZm9ybWF0KSB7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6QUxQSEE6CkBAIC0xNzcs
OCArMTgwLDggQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6Y29tcHV0ZUZvcm1hdEFuZAogfQog
CiBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpleHRyYWN0SW1hZ2VEYXRhKEltYWdlKiBpbWFnZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGZv
cm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg
aW50IHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0Rl
bnVtIGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0Mz
RGVudW0gdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9v
bCBmbGlwWSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBw
cmVtdWx0aXBseUFscGhhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBib29sIGlnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlLApAQCAtMTg5LDcgKzE5Miw3IEBAIGJv
b2wgR3JhcGhpY3NDb250ZXh0M0Q6OmV4dHJhY3RJbWFnZURhdGEKICAgICBpZiAoIWdldEltYWdl
RGF0YShpbWFnZSwgZm9ybWF0LCB0eXBlLCBwcmVtdWx0aXBseUFscGhhLCBpZ25vcmVHYW1tYUFu
ZENvbG9yUHJvZmlsZSwgZGF0YSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoZmxp
cFkpIHsKLSAgICAgICAgdW5zaWduZWQgbG9uZyBjb21wb25lbnRzUGVyUGl4ZWwsIGJ5dGVzUGVy
Q29tcG9uZW50OworICAgICAgICB1bnNpZ25lZCBpbnQgY29tcG9uZW50c1BlclBpeGVsLCBieXRl
c1BlckNvbXBvbmVudDsKICAgICAgICAgaWYgKCFjb21wdXRlRm9ybWF0QW5kVHlwZVBhcmFtZXRl
cnMoZm9ybWF0LCB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAmY29tcG9uZW50c1BlclBpeGVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAmYnl0ZXNQZXJDb21wb25lbnQpKQpAQCAtMjA0LDggKzIwNyw4IEBAIGJv
b2wgR3JhcGhpY3NDb250ZXh0M0Q6OmV4dHJhY3RJbWFnZURhdGEKIH0KIAogYm9vbCBHcmFwaGlj
c0NvbnRleHQzRDo6ZXh0cmFjdEltYWdlRGF0YShJbWFnZURhdGEqIGltYWdlRGF0YSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGZvcm1hdCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHR5
cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0RlbnVtIGZv
cm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0MzRGVudW0g
dHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBmbGlw
WSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBwcmVtdWx0
aXBseUFscGhhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZWN0
b3I8dWludDhfdD4mIGRhdGEpCkBAIC0yMjcsNyArMjMwLDcgQEAgYm9vbCBHcmFwaGljc0NvbnRl
eHQzRDo6ZXh0cmFjdEltYWdlRGF0YQogICAgICAgICAgICAgICAgICAgICBkYXRhLmRhdGEoKSkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoZmxpcFkpIHsKLSAgICAgICAgdW5zaWdu
ZWQgbG9uZyBjb21wb25lbnRzUGVyUGl4ZWwsIGJ5dGVzUGVyQ29tcG9uZW50OworICAgICAgICB1
bnNpZ25lZCBpbnQgY29tcG9uZW50c1BlclBpeGVsLCBieXRlc1BlckNvbXBvbmVudDsKICAgICAg
ICAgaWYgKCFjb21wdXRlRm9ybWF0QW5kVHlwZVBhcmFtZXRlcnMoZm9ybWF0LCB0eXBlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY29tcG9uZW50c1BlclBp
eGVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYnl0ZXNQ
ZXJDb21wb25lbnQpKQpAQCAtMjQyLDcgKzI0NSw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6
OmV4dHJhY3RJbWFnZURhdGEKIH0KIAogYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6ZXh0cmFjdFRl
eHR1cmVEYXRhKHVuc2lnbmVkIGludCB3aWR0aCwgdW5zaWduZWQgaW50IGhlaWdodCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZm9ybWF0
LCB1bnNpZ25lZCBpbnQgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHVucGFja0FsaWdubWVudCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGZsaXBZLCBi
b29sIHByZW11bHRpcGx5QWxwaGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3Qgdm9pZCogcGl4ZWxzLApAQCAtMzA3LDEyICszMTAsMTIgQEAgYm9vbCBH
cmFwaGljc0NvbnRleHQzRDo6ZXh0cmFjdFRleHR1cmVEYQogICAgIH0KIAogICAgIC8vIFJlc2l6
ZSB0aGUgb3V0cHV0IGJ1ZmZlci4KLSAgICB1bnNpZ25lZCBsb25nIGNvbXBvbmVudHNQZXJQaXhl
bCwgYnl0ZXNQZXJDb21wb25lbnQ7CisgICAgdW5zaWduZWQgaW50IGNvbXBvbmVudHNQZXJQaXhl
bCwgYnl0ZXNQZXJDb21wb25lbnQ7CiAgICAgaWYgKCFjb21wdXRlRm9ybWF0QW5kVHlwZVBhcmFt
ZXRlcnMoZm9ybWF0LCB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICZjb21wb25lbnRzUGVyUGl4ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJmJ5dGVzUGVyQ29tcG9uZW50KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IHVuc2lnbmVkIGxvbmcgYnl0ZXNQZXJQaXhlbCA9IGNvbXBvbmVudHNQZXJQaXhlbCAqIGJ5dGVz
UGVyQ29tcG9uZW50OworICAgIHVuc2lnbmVkIGludCBieXRlc1BlclBpeGVsID0gY29tcG9uZW50
c1BlclBpeGVsICogYnl0ZXNQZXJDb21wb25lbnQ7CiAgICAgZGF0YS5yZXNpemUod2lkdGggKiBo
ZWlnaHQgKiBieXRlc1BlclBpeGVsKTsKIAogICAgIGlmICghcGFja1BpeGVscyhzdGF0aWNfY2Fz
dDxjb25zdCB1aW50OF90Kj4ocGl4ZWxzKSwKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0M0QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgJKHJldmlzaW9uIDc0OTcwKQorKysgV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
OCw2ICszOCwyMiBAQAogI3VuZGVmIE5PX0VSUk9SCiAjZW5kaWYKIAorLy8gR0MzRCB0eXBlcyBt
YXRjaCB0aGUgY29ycmVzcG9uZGluZyBHTCB0eXBlcyBhcyBkZWZpbmVkIGluIE9wZW5HTCBFUyAy
LjAKKy8vIGhlYWRlciBmaWxlIGdsMi5oIGZyb20ga2hyb25vcy5vcmcuCit0eXBlZGVmIHVuc2ln
bmVkIGludCBHQzNEZW51bTsKK3R5cGVkZWYgdW5zaWduZWQgY2hhciBHQzNEYm9vbGVhbjsKK3R5
cGVkZWYgdW5zaWduZWQgaW50IEdDM0RiaXRmaWVsZDsKK3R5cGVkZWYgaW50IEdDM0RpbnQ7Cit0
eXBlZGVmIGludCBHQzNEc2l6ZWk7Cit0eXBlZGVmIHVuc2lnbmVkIGludCBHQzNEdWludDsKK3R5
cGVkZWYgZmxvYXQgR0MzRGZsb2F0OwordHlwZWRlZiBmbG9hdCBHQzNEY2xhbXBmOwordHlwZWRl
ZiBzaWduZWQgbG9uZyBpbnQgR0MzRGludHB0cjsKK3R5cGVkZWYgc2lnbmVkIGxvbmcgaW50IEdD
M0RzaXplaXB0cjsKKwordHlwZWRlZiBHQzNEdWludCBQbGF0Zm9ybTNET2JqZWN0OworY29uc3Qg
UGxhdGZvcm0zRE9iamVjdCBOdWxsUGxhdGZvcm0zRE9iamVjdCA9IDA7CisKICNpZiBQTEFURk9S
TShNQUMpCiAjaW5jbHVkZSAiQU5HTEVXZWJLaXRCcmlkZ2UuaCIKICNpbmNsdWRlIDxPcGVuR0wv
T3BlbkdMLmg+CkBAIC00NSw4ICs2MSw2IEBACiAKIHR5cGVkZWYgQ0dMQ29udGV4dE9iaiBQbGF0
Zm9ybUdyYXBoaWNzQ29udGV4dDNEOwogY29uc3QgUGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCBO
dWxsUGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCA9IDA7Ci10eXBlZGVmIEdMdWludCBQbGF0Zm9y
bTNET2JqZWN0OwotY29uc3QgUGxhdGZvcm0zRE9iamVjdCBOdWxsUGxhdGZvcm0zRE9iamVjdCA9
IDA7CiAKICNpZmRlZiBfX09CSkNfXwogQGNsYXNzIENBTGF5ZXI7CkBAIC02MiwxMyArNzYsOSBA
QCBjbGFzcyBRUmVjdDsKIFFUX0VORF9OQU1FU1BBQ0UKIHR5cGVkZWYgdm9pZCogUGxhdGZvcm1H
cmFwaGljc0NvbnRleHQzRDsKIGNvbnN0IFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QgTnVsbFBs
YXRmb3JtR3JhcGhpY3NDb250ZXh0M0QgPSAwOwotdHlwZWRlZiBpbnQgUGxhdGZvcm0zRE9iamVj
dDsKLWNvbnN0IFBsYXRmb3JtM0RPYmplY3QgTnVsbFBsYXRmb3JtM0RPYmplY3QgPSAwOwogI2Vs
c2UKIHR5cGVkZWYgdm9pZCogUGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRDsKIGNvbnN0IFBsYXRm
b3JtR3JhcGhpY3NDb250ZXh0M0QgTnVsbFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QgPSAwOwot
dHlwZWRlZiBpbnQgUGxhdGZvcm0zRE9iamVjdDsKLWNvbnN0IFBsYXRmb3JtM0RPYmplY3QgTnVs
bFBsYXRmb3JtM0RPYmplY3QgPSAwOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShDRykKQEAgLTg1
LDEyICs5NSwxMSBAQCBjbGFzcyBFeHRlbnNpb25zM0RPcGVuR0w7CiBjbGFzcyBIb3N0V2luZG93
OwogY2xhc3MgSW1hZ2U7CiBjbGFzcyBJbWFnZURhdGE7Ci1jbGFzcyBXZWJHTEFjdGl2ZUluZm87
CiAKIHN0cnVjdCBBY3RpdmVJbmZvIHsKICAgICBTdHJpbmcgbmFtZTsKLSAgICB1bnNpZ25lZCB0
eXBlOwotICAgIGludCBzaXplOworICAgIEdDM0RlbnVtIHR5cGU7CisgICAgR0MzRGludCBzaXpl
OwogfTsKIAogLy8gRklYTUU6IGlkZWFsbHkgdGhpcyB3b3VsZCBiZSB1c2VkIG9uIGFsbCBwbGF0
Zm9ybXMuCkBAIC00NzIsMTEgKzQ4MSwxMSBAQCBwdWJsaWM6CiAKICAgICAvLyBIZWxwZXIgdG8g
cmV0dXJuIHRoZSBzaXplIGluIGJ5dGVzIG9mIE9wZW5HTCBkYXRhIHR5cGVzCiAgICAgLy8gbGlr
ZSBHTF9GTE9BVCwgR0xfSU5ULCBldGMuCi0gICAgaW50IHNpemVJbkJ5dGVzKGludCB0eXBlKTsK
KyAgICB1bnNpZ25lZCBpbnQgc2l6ZUluQnl0ZXMoR0MzRGVudW0gdHlwZSk7CiAKICAgICAvLyBI
ZWxwZXIgdG8gdGV4SW1hZ2UyRCB3aXRoIHBpeGVsPT0wIGNhc2U6IHBpeGVscyBhcmUgaW5pdGlh
bGl6ZWQgdG8gMC4KICAgICAvLyBSZXR1cm4gdHJ1ZSBpZiBubyBHTCBlcnJvciBpcyBzeW50aGVz
aXplZC4KLSAgICBib29sIHRleEltYWdlMkRSZXNvdXJjZVNhZmUodW5zaWduZWQgdGFyZ2V0LCB1
bnNpZ25lZCBsZXZlbCwgdW5zaWduZWQgaW50ZXJuYWxmb3JtYXQsIHVuc2lnbmVkIHdpZHRoLCB1
bnNpZ25lZCBoZWlnaHQsIHVuc2lnbmVkIGJvcmRlciwgdW5zaWduZWQgZm9ybWF0LCB1bnNpZ25l
ZCB0eXBlKTsKKyAgICBib29sIHRleEltYWdlMkRSZXNvdXJjZVNhZmUoR0MzRGVudW0gdGFyZ2V0
LCBHQzNEaW50IGxldmVsLCBHQzNEZW51bSBpbnRlcm5hbGZvcm1hdCwgR0MzRHNpemVpIHdpZHRo
LCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEaW50IGJvcmRlciwgR0MzRGVudW0gZm9ybWF0LCBHQzNE
ZW51bSB0eXBlKTsKIAogICAgIGJvb2wgaXNHTEVTMkNvbXBsaWFudCgpIGNvbnN0OwogCkBAIC00
ODcsMTggKzQ5NiwxOCBAQCBwdWJsaWM6CiAgICAgLy8gQ29tcHV0ZXMgdGhlIGNvbXBvbmVudHMg
cGVyIHBpeGVsIGFuZCBieXRlcyBwZXIgY29tcG9uZW50CiAgICAgLy8gZm9yIHRoZSBnaXZlbiBm
b3JtYXQgYW5kIHR5cGUgY29tYmluYXRpb24uIFJldHVybnMgZmFsc2UgaWYKICAgICAvLyBlaXRo
ZXIgd2FzIGFuIGludmFsaWQgZW51bS4KLSAgICBib29sIGNvbXB1dGVGb3JtYXRBbmRUeXBlUGFy
YW1ldGVycyh1bnNpZ25lZCBpbnQgZm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGludCB0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcqIGNvbXBvbmVudHNQZXJQaXhlbCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nKiBieXRlc1Bl
ckNvbXBvbmVudCk7CisgICAgYm9vbCBjb21wdXRlRm9ybWF0QW5kVHlwZVBhcmFtZXRlcnMoR0Mz
RGVudW0gZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdD
M0RlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgaW50KiBjb21wb25lbnRzUGVyUGl4ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgaW50KiBieXRlc1BlckNvbXBvbmVudCk7CiAKICAgICAv
LyBFeHRyYWN0cyB0aGUgY29udGVudHMgb2YgdGhlIGdpdmVuIEltYWdlIGludG8gdGhlIHBhc3Nl
ZCBWZWN0b3IsCiAgICAgLy8gcGFja2luZyB0aGUgcGl4ZWwgZGF0YSBhY2NvcmRpbmcgdG8gdGhl
IGdpdmVuIGZvcm1hdCBhbmQgdHlwZSwKICAgICAvLyBhbmQgb2JleWluZyB0aGUgZmxpcFksIHBy
ZW11bHRpcGx5QWxwaGEsIGFuZCBpZ25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZQogICAgIC8vIGZs
YWdzLiBSZXR1cm5zIHRydWUgdXBvbiBzdWNjZXNzLgogICAgIGJvb2wgZXh0cmFjdEltYWdlRGF0
YShJbWFnZSogaW1hZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBm
b3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCB0eXBlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICBHQzNEZW51bSBmb3JtYXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdDM0RlbnVtIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg
ZmxpcFksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpZ25vcmVHYW1tYUFuZENvbG9yUHJvZmls
ZSwKQEAgLTUwOSw4ICs1MTgsOCBAQCBwdWJsaWM6CiAgICAgLy8gYW5kIG9iZXlpbmcgdGhlIGZs
aXBZIGFuZCBwcmVtdWx0aXBseUFscGhhIGZsYWdzLiBSZXR1cm5zIHRydWUKICAgICAvLyB1cG9u
IHN1Y2Nlc3MuCiAgICAgYm9vbCBleHRyYWN0SW1hZ2VEYXRhKEltYWdlRGF0YSosCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBmb3JtYXQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGludCB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBH
QzNEZW51bSBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0RlbnVtIHR5cGUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZmxpcFksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKTsKQEAgLTUyMSw3ICs1MzAsNyBAQCBwdWJsaWM6CiAg
ICAgLy8gdW5wYWNrQWxpZ25tZW50LCB0aGUgb3V0cHV0IGRhdGEgd2lsbCBiZSB0aWdodGx5IHBh
Y2tlZC4KICAgICAvLyBSZXR1cm5zIHRydWUgaWYgc3VjY2Vzc2Z1bCwgZmFsc2UgaWYgYW55IGVy
cm9yIG9jY3VycmVkLgogICAgIGJvb2wgZXh0cmFjdFRleHR1cmVEYXRhKHVuc2lnbmVkIGludCB3
aWR0aCwgdW5zaWduZWQgaW50IGhlaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBpbnQgZm9ybWF0LCB1bnNpZ25lZCBpbnQgdHlwZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHVucGFja0FsaWdubWVudCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBib29sIGZsaXBZLCBib29sIHByZW11bHRpcGx5QWxwaGEsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCogcGl4ZWxzLApAQCAtNTgwLDE3NCAr
NTg5LDE1NiBAQCBwdWJsaWM6CiAgICAgLy8gRW50cnkgcG9pbnRzIGZvciBXZWJHTC4KICAgICAv
LwogCi0gICAgdm9pZCBhY3RpdmVUZXh0dXJlKHVuc2lnbmVkIGxvbmcgdGV4dHVyZSk7CisgICAg
dm9pZCBhY3RpdmVUZXh0dXJlKEdDM0RlbnVtIHRleHR1cmUpOwogICAgIHZvaWQgYXR0YWNoU2hh
ZGVyKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgUGxhdGZvcm0zRE9iamVjdCBzaGFkZXIpOwot
ICAgIHZvaWQgYmluZEF0dHJpYkxvY2F0aW9uKFBsYXRmb3JtM0RPYmplY3QsIHVuc2lnbmVkIGxv
bmcgaW5kZXgsIGNvbnN0IFN0cmluZyYgbmFtZSk7Ci0gICAgdm9pZCBiaW5kQnVmZmVyKHVuc2ln
bmVkIGxvbmcgdGFyZ2V0LCBQbGF0Zm9ybTNET2JqZWN0KTsKLSAgICB2b2lkIGJpbmRGcmFtZWJ1
ZmZlcih1bnNpZ25lZCBsb25nIHRhcmdldCwgUGxhdGZvcm0zRE9iamVjdCk7Ci0gICAgdm9pZCBi
aW5kUmVuZGVyYnVmZmVyKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBQbGF0Zm9ybTNET2JqZWN0KTsK
LSAgICB2b2lkIGJpbmRUZXh0dXJlKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBQbGF0Zm9ybTNET2Jq
ZWN0IHRleHR1cmUpOwotICAgIHZvaWQgYmxlbmRDb2xvcihkb3VibGUgcmVkLCBkb3VibGUgZ3Jl
ZW4sIGRvdWJsZSBibHVlLCBkb3VibGUgYWxwaGEpOwotICAgIHZvaWQgYmxlbmRFcXVhdGlvbih1
bnNpZ25lZCBsb25nIG1vZGUpOwotICAgIHZvaWQgYmxlbmRFcXVhdGlvblNlcGFyYXRlKHVuc2ln
bmVkIGxvbmcgbW9kZVJHQiwgdW5zaWduZWQgbG9uZyBtb2RlQWxwaGEpOwotICAgIHZvaWQgYmxl
bmRGdW5jKHVuc2lnbmVkIGxvbmcgc2ZhY3RvciwgdW5zaWduZWQgbG9uZyBkZmFjdG9yKTsKLSAg
ICB2b2lkIGJsZW5kRnVuY1NlcGFyYXRlKHVuc2lnbmVkIGxvbmcgc3JjUkdCLCB1bnNpZ25lZCBs
b25nIGRzdFJHQiwgdW5zaWduZWQgbG9uZyBzcmNBbHBoYSwgdW5zaWduZWQgbG9uZyBkc3RBbHBo
YSk7Ci0KLSAgICB2b2lkIGJ1ZmZlckRhdGEodW5zaWduZWQgbG9uZyB0YXJnZXQsIGludCBzaXpl
LCB1bnNpZ25lZCBsb25nIHVzYWdlKTsKLSAgICB2b2lkIGJ1ZmZlckRhdGEodW5zaWduZWQgbG9u
ZyB0YXJnZXQsIGludCBzaXplLCBjb25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBsb25nIHVzYWdl
KTsKLSAgICB2b2lkIGJ1ZmZlclN1YkRhdGEodW5zaWduZWQgbG9uZyB0YXJnZXQsIGxvbmcgb2Zm
c2V0LCBpbnQgc2l6ZSwgY29uc3Qgdm9pZCogZGF0YSk7Ci0KLSAgICB1bnNpZ25lZCBsb25nIGNo
ZWNrRnJhbWVidWZmZXJTdGF0dXModW5zaWduZWQgbG9uZyB0YXJnZXQpOwotICAgIHZvaWQgY2xl
YXIodW5zaWduZWQgbG9uZyBtYXNrKTsKLSAgICB2b2lkIGNsZWFyQ29sb3IoZG91YmxlIHJlZCwg
ZG91YmxlIGdyZWVuLCBkb3VibGUgYmx1ZSwgZG91YmxlIGFscGhhKTsKLSAgICB2b2lkIGNsZWFy
RGVwdGgoZG91YmxlIGRlcHRoKTsKLSAgICB2b2lkIGNsZWFyU3RlbmNpbChsb25nIHMpOwotICAg
IHZvaWQgY29sb3JNYXNrKGJvb2wgcmVkLCBib29sIGdyZWVuLCBib29sIGJsdWUsIGJvb2wgYWxw
aGEpOworICAgIHZvaWQgYmluZEF0dHJpYkxvY2F0aW9uKFBsYXRmb3JtM0RPYmplY3QsIEdDM0R1
aW50IGluZGV4LCBjb25zdCBTdHJpbmcmIG5hbWUpOworICAgIHZvaWQgYmluZEJ1ZmZlcihHQzNE
ZW51bSB0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3QpOworICAgIHZvaWQgYmluZEZyYW1lYnVmZmVy
KEdDM0RlbnVtIHRhcmdldCwgUGxhdGZvcm0zRE9iamVjdCk7CisgICAgdm9pZCBiaW5kUmVuZGVy
YnVmZmVyKEdDM0RlbnVtIHRhcmdldCwgUGxhdGZvcm0zRE9iamVjdCk7CisgICAgdm9pZCBiaW5k
VGV4dHVyZShHQzNEZW51bSB0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3QpOworICAgIHZvaWQgYmxl
bmRDb2xvcihHQzNEY2xhbXBmIHJlZCwgR0MzRGNsYW1wZiBncmVlbiwgR0MzRGNsYW1wZiBibHVl
LCBHQzNEY2xhbXBmIGFscGhhKTsKKyAgICB2b2lkIGJsZW5kRXF1YXRpb24oR0MzRGVudW0gbW9k
ZSk7CisgICAgdm9pZCBibGVuZEVxdWF0aW9uU2VwYXJhdGUoR0MzRGVudW0gbW9kZVJHQiwgR0Mz
RGVudW0gbW9kZUFscGhhKTsKKyAgICB2b2lkIGJsZW5kRnVuYyhHQzNEZW51bSBzZmFjdG9yLCBH
QzNEZW51bSBkZmFjdG9yKTsKKyAgICB2b2lkIGJsZW5kRnVuY1NlcGFyYXRlKEdDM0RlbnVtIHNy
Y1JHQiwgR0MzRGVudW0gZHN0UkdCLCBHQzNEZW51bSBzcmNBbHBoYSwgR0MzRGVudW0gZHN0QWxw
aGEpOworCisgICAgdm9pZCBidWZmZXJEYXRhKEdDM0RlbnVtIHRhcmdldCwgR0MzRHNpemVpcHRy
IHNpemUsIEdDM0RlbnVtIHVzYWdlKTsKKyAgICB2b2lkIGJ1ZmZlckRhdGEoR0MzRGVudW0gdGFy
Z2V0LCBHQzNEc2l6ZWlwdHIgc2l6ZSwgY29uc3Qgdm9pZCogZGF0YSwgR0MzRGVudW0gdXNhZ2Up
OworICAgIHZvaWQgYnVmZmVyU3ViRGF0YShHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnRwdHIgb2Zm
c2V0LCBHQzNEc2l6ZWlwdHIgc2l6ZSwgY29uc3Qgdm9pZCogZGF0YSk7CisKKyAgICBHQzNEZW51
bSBjaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdDM0RlbnVtIHRhcmdldCk7CisgICAgdm9pZCBjbGVh
cihHQzNEYml0ZmllbGQgbWFzayk7CisgICAgdm9pZCBjbGVhckNvbG9yKEdDM0RjbGFtcGYgcmVk
LCBHQzNEY2xhbXBmIGdyZWVuLCBHQzNEY2xhbXBmIGJsdWUsIEdDM0RjbGFtcGYgYWxwaGEpOwor
ICAgIHZvaWQgY2xlYXJEZXB0aChHQzNEY2xhbXBmIGRlcHRoKTsKKyAgICB2b2lkIGNsZWFyU3Rl
bmNpbChHQzNEaW50IHMpOworICAgIHZvaWQgY29sb3JNYXNrKEdDM0Rib29sZWFuIHJlZCwgR0Mz
RGJvb2xlYW4gZ3JlZW4sIEdDM0Rib29sZWFuIGJsdWUsIEdDM0Rib29sZWFuIGFscGhhKTsKICAg
ICB2b2lkIGNvbXBpbGVTaGFkZXIoUGxhdGZvcm0zRE9iamVjdCk7CiAKLSAgICAvLyB2b2lkIGNv
bXByZXNzZWRUZXhJbWFnZTJEKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBsb25nIGxldmVsLCB1bnNp
Z25lZCBsb25nIGludGVybmFsZm9ybWF0LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBs
b25nIGhlaWdodCwgbG9uZyBib3JkZXIsIHVuc2lnbmVkIGxvbmcgaW1hZ2VTaXplLCBjb25zdCB2
b2lkKiBkYXRhKTsKLSAgICAvLyB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKHVuc2lnbmVk
IGxvbmcgdGFyZ2V0LCBsb25nIGxldmVsLCBsb25nIHhvZmZzZXQsIGxvbmcgeW9mZnNldCwgdW5z
aWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQsIHVuc2lnbmVkIGxvbmcgZm9y
bWF0LCB1bnNpZ25lZCBsb25nIGltYWdlU2l6ZSwgY29uc3Qgdm9pZCogZGF0YSk7CisgICAgLy8g
dm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWws
IEdDM0RlbnVtIGludGVybmFsZm9ybWF0LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWln
aHQsIEdDM0RpbnQgYm9yZGVyLCBHQzNEc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCB2b2lkKiBkYXRh
KTsKKyAgICAvLyB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwg
R0MzRGludCBsZXZlbCwgR0MzRGludCB4b2Zmc2V0LCBHQzNEaW50IHlvZmZzZXQsIEdDM0RzaXpl
aSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGVudW0gZm9ybWF0LCBHQzNEc2l6ZWkgaW1h
Z2VTaXplLCBjb25zdCB2b2lkKiBkYXRhKTsKIAotICAgIHZvaWQgY29weVRleEltYWdlMkQodW5z
aWduZWQgbG9uZyB0YXJnZXQsIGxvbmcgbGV2ZWwsIHVuc2lnbmVkIGxvbmcgaW50ZXJuYWxmb3Jt
YXQsIGxvbmcgeCwgbG9uZyB5LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhl
aWdodCwgbG9uZyBib3JkZXIpOwotICAgIHZvaWQgY29weVRleFN1YkltYWdlMkQodW5zaWduZWQg
bG9uZyB0YXJnZXQsIGxvbmcgbGV2ZWwsIGxvbmcgeG9mZnNldCwgbG9uZyB5b2Zmc2V0LCBsb25n
IHgsIGxvbmcgeSwgdW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpOwot
ICAgIHZvaWQgY3VsbEZhY2UodW5zaWduZWQgbG9uZyBtb2RlKTsKLSAgICB2b2lkIGRlcHRoRnVu
Yyh1bnNpZ25lZCBsb25nIGZ1bmMpOwotICAgIHZvaWQgZGVwdGhNYXNrKGJvb2wgZmxhZyk7Ci0g
ICAgdm9pZCBkZXB0aFJhbmdlKGRvdWJsZSB6TmVhciwgZG91YmxlIHpGYXIpOworICAgIHZvaWQg
Y29weVRleEltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEZW51bSBp
bnRlcm5hbGZvcm1hdCwgR0MzRGludCB4LCBHQzNEaW50IHksIEdDM0RzaXplaSB3aWR0aCwgR0Mz
RHNpemVpIGhlaWdodCwgR0MzRGludCBib3JkZXIpOworICAgIHZvaWQgY29weVRleFN1YkltYWdl
MkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEaW50IHhvZmZzZXQsIEdDM0Rp
bnQgeW9mZnNldCwgR0MzRGludCB4LCBHQzNEaW50IHksIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNp
emVpIGhlaWdodCk7CisgICAgdm9pZCBjdWxsRmFjZShHQzNEZW51bSBtb2RlKTsKKyAgICB2b2lk
IGRlcHRoRnVuYyhHQzNEZW51bSBmdW5jKTsKKyAgICB2b2lkIGRlcHRoTWFzayhHQzNEYm9vbGVh
biBmbGFnKTsKKyAgICB2b2lkIGRlcHRoUmFuZ2UoR0MzRGNsYW1wZiB6TmVhciwgR0MzRGNsYW1w
ZiB6RmFyKTsKICAgICB2b2lkIGRldGFjaFNoYWRlcihQbGF0Zm9ybTNET2JqZWN0LCBQbGF0Zm9y
bTNET2JqZWN0KTsKLSAgICB2b2lkIGRpc2FibGUodW5zaWduZWQgbG9uZyBjYXApOwotICAgIHZv
aWQgZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KHVuc2lnbmVkIGxvbmcgaW5kZXgpOwotICAgIHZv
aWQgZHJhd0FycmF5cyh1bnNpZ25lZCBsb25nIG1vZGUsIGxvbmcgZmlyc3QsIGxvbmcgY291bnQp
OwotICAgIHZvaWQgZHJhd0VsZW1lbnRzKHVuc2lnbmVkIGxvbmcgbW9kZSwgdW5zaWduZWQgbG9u
ZyBjb3VudCwgdW5zaWduZWQgbG9uZyB0eXBlLCBsb25nIG9mZnNldCk7CisgICAgdm9pZCBkaXNh
YmxlKEdDM0RlbnVtIGNhcCk7CisgICAgdm9pZCBkaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoR0Mz
RHVpbnQgaW5kZXgpOworICAgIHZvaWQgZHJhd0FycmF5cyhHQzNEZW51bSBtb2RlLCBHQzNEaW50
IGZpcnN0LCBHQzNEc2l6ZWkgY291bnQpOworICAgIHZvaWQgZHJhd0VsZW1lbnRzKEdDM0RlbnVt
IG1vZGUsIEdDM0RzaXplaSBjb3VudCwgR0MzRGVudW0gdHlwZSwgR0MzRGludHB0ciBvZmZzZXQp
OwogCi0gICAgdm9pZCBlbmFibGUodW5zaWduZWQgbG9uZyBjYXApOwotICAgIHZvaWQgZW5hYmxl
VmVydGV4QXR0cmliQXJyYXkodW5zaWduZWQgbG9uZyBpbmRleCk7CisgICAgdm9pZCBlbmFibGUo
R0MzRGVudW0gY2FwKTsKKyAgICB2b2lkIGVuYWJsZVZlcnRleEF0dHJpYkFycmF5KEdDM0R1aW50
IGluZGV4KTsKICAgICB2b2lkIGZpbmlzaCgpOwogICAgIHZvaWQgZmx1c2goKTsKLSAgICB2b2lk
IGZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBs
b25nIGF0dGFjaG1lbnQsIHVuc2lnbmVkIGxvbmcgcmVuZGVyYnVmZmVydGFyZ2V0LCBQbGF0Zm9y
bTNET2JqZWN0KTsKLSAgICB2b2lkIGZyYW1lYnVmZmVyVGV4dHVyZTJEKHVuc2lnbmVkIGxvbmcg
dGFyZ2V0LCB1bnNpZ25lZCBsb25nIGF0dGFjaG1lbnQsIHVuc2lnbmVkIGxvbmcgdGV4dGFyZ2V0
LCBQbGF0Zm9ybTNET2JqZWN0LCBsb25nIGxldmVsKTsKLSAgICB2b2lkIGZyb250RmFjZSh1bnNp
Z25lZCBsb25nIG1vZGUpOwotICAgIHZvaWQgZ2VuZXJhdGVNaXBtYXAodW5zaWduZWQgbG9uZyB0
YXJnZXQpOwotCi0gICAgYm9vbCBnZXRBY3RpdmVBdHRyaWIoUGxhdGZvcm0zRE9iamVjdCBwcm9n
cmFtLCB1bnNpZ25lZCBsb25nIGluZGV4LCBBY3RpdmVJbmZvJik7Ci0gICAgYm9vbCBnZXRBY3Rp
dmVVbmlmb3JtKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgdW5zaWduZWQgbG9uZyBpbmRleCwg
QWN0aXZlSW5mbyYpOwotCi0gICAgdm9pZCBnZXRBdHRhY2hlZFNoYWRlcnMoUGxhdGZvcm0zRE9i
amVjdCBwcm9ncmFtLCBpbnQgbWF4Q291bnQsIGludCogY291bnQsIHVuc2lnbmVkIGludCogc2hh
ZGVycyk7Ci0KLSAgICBpbnQgZ2V0QXR0cmliTG9jYXRpb24oUGxhdGZvcm0zRE9iamVjdCwgY29u
c3QgU3RyaW5nJiBuYW1lKTsKLQotICAgIHZvaWQgZ2V0Qm9vbGVhbnYodW5zaWduZWQgbG9uZyBw
bmFtZSwgdW5zaWduZWQgY2hhciogdmFsdWUpOwotCi0gICAgdm9pZCBnZXRCdWZmZXJQYXJhbWV0
ZXJpdih1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSwgaW50KiB2YWx1
ZSk7Ci0KKyAgICB2b2lkIGZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdDM0RlbnVtIHRhcmdldCwg
R0MzRGVudW0gYXR0YWNobWVudCwgR0MzRGVudW0gcmVuZGVyYnVmZmVydGFyZ2V0LCBQbGF0Zm9y
bTNET2JqZWN0KTsKKyAgICB2b2lkIGZyYW1lYnVmZmVyVGV4dHVyZTJEKEdDM0RlbnVtIHRhcmdl
dCwgR0MzRGVudW0gYXR0YWNobWVudCwgR0MzRGVudW0gdGV4dGFyZ2V0LCBQbGF0Zm9ybTNET2Jq
ZWN0LCBHQzNEaW50IGxldmVsKTsKKyAgICB2b2lkIGZyb250RmFjZShHQzNEZW51bSBtb2RlKTsK
KyAgICB2b2lkIGdlbmVyYXRlTWlwbWFwKEdDM0RlbnVtIHRhcmdldCk7CisKKyAgICBib29sIGdl
dEFjdGl2ZUF0dHJpYihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIEdDM0R1aW50IGluZGV4LCBB
Y3RpdmVJbmZvJik7CisgICAgYm9vbCBnZXRBY3RpdmVVbmlmb3JtKFBsYXRmb3JtM0RPYmplY3Qg
cHJvZ3JhbSwgR0MzRHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mKTsKKyAgICB2b2lkIGdldEF0dGFj
aGVkU2hhZGVycyhQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIEdDM0RzaXplaSBtYXhDb3VudCwg
R0MzRHNpemVpKiBjb3VudCwgUGxhdGZvcm0zRE9iamVjdCogc2hhZGVycyk7CisgICAgR0MzRGlu
dCBnZXRBdHRyaWJMb2NhdGlvbihQbGF0Zm9ybTNET2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUp
OworICAgIHZvaWQgZ2V0Qm9vbGVhbnYoR0MzRGVudW0gcG5hbWUsIEdDM0Rib29sZWFuKiB2YWx1
ZSk7CisgICAgdm9pZCBnZXRCdWZmZXJQYXJhbWV0ZXJpdihHQzNEZW51bSB0YXJnZXQsIEdDM0Rl
bnVtIHBuYW1lLCBHQzNEaW50KiB2YWx1ZSk7CiAgICAgQXR0cmlidXRlcyBnZXRDb250ZXh0QXR0
cmlidXRlcygpOwotCi0gICAgdW5zaWduZWQgbG9uZyBnZXRFcnJvcigpOwotCi0gICAgdm9pZCBn
ZXRGbG9hdHYodW5zaWduZWQgbG9uZyBwbmFtZSwgZmxvYXQqIHZhbHVlKTsKLQotICAgIHZvaWQg
Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYodW5zaWduZWQgbG9uZyB0YXJnZXQs
IHVuc2lnbmVkIGxvbmcgYXR0YWNobWVudCwgdW5zaWduZWQgbG9uZyBwbmFtZSwgaW50KiB2YWx1
ZSk7Ci0KLSAgICB2b2lkIGdldEludGVnZXJ2KHVuc2lnbmVkIGxvbmcgcG5hbWUsIGludCogdmFs
dWUpOwotCi0gICAgdm9pZCBnZXRQcm9ncmFtaXYoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCB1
bnNpZ25lZCBsb25nIHBuYW1lLCBpbnQqIHZhbHVlKTsKLQorICAgIEdDM0RlbnVtIGdldEVycm9y
KCk7CisgICAgdm9pZCBnZXRGbG9hdHYoR0MzRGVudW0gcG5hbWUsIEdDM0RmbG9hdCogdmFsdWUp
OworICAgIHZvaWQgZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYoR0MzRGVudW0g
dGFyZ2V0LCBHQzNEZW51bSBhdHRhY2htZW50LCBHQzNEZW51bSBwbmFtZSwgR0MzRGludCogdmFs
dWUpOworICAgIHZvaWQgZ2V0SW50ZWdlcnYoR0MzRGVudW0gcG5hbWUsIEdDM0RpbnQqIHZhbHVl
KTsKKyAgICB2b2lkIGdldFByb2dyYW1pdihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIEdDM0Rl
bnVtIHBuYW1lLCBHQzNEaW50KiB2YWx1ZSk7CiAgICAgU3RyaW5nIGdldFByb2dyYW1JbmZvTG9n
KFBsYXRmb3JtM0RPYmplY3QpOwotCi0gICAgdm9pZCBnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJp
dih1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSwgaW50KiB2YWx1ZSk7
Ci0KLSAgICB2b2lkIGdldFNoYWRlcml2KFBsYXRmb3JtM0RPYmplY3QsIHVuc2lnbmVkIGxvbmcg
cG5hbWUsIGludCogdmFsdWUpOwotCisgICAgdm9pZCBnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJp
dihHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIHBuYW1lLCBHQzNEaW50KiB2YWx1ZSk7CisgICAg
dm9pZCBnZXRTaGFkZXJpdihQbGF0Zm9ybTNET2JqZWN0LCBHQzNEZW51bSBwbmFtZSwgR0MzRGlu
dCogdmFsdWUpOwogICAgIFN0cmluZyBnZXRTaGFkZXJJbmZvTG9nKFBsYXRmb3JtM0RPYmplY3Qp
OwogCiAgICAgLy8gVEJECi0gICAgLy8gdm9pZCBnbEdldFNoYWRlclByZWNpc2lvbkZvcm1hdCAo
R0xlbnVtIHNoYWRlcnR5cGUsIEdMZW51bSBwcmVjaXNpb250eXBlLCBHTGludCogcmFuZ2UsIEdM
aW50KiBwcmVjaXNpb24pOworICAgIC8vIHZvaWQgZ2xHZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQg
KEdDM0RlbnVtIHNoYWRlcnR5cGUsIEdDM0RlbnVtIHByZWNpc2lvbnR5cGUsIEdDM0RpbnQqIHJh
bmdlLCBHQzNEaW50KiBwcmVjaXNpb24pOwogCiAgICAgU3RyaW5nIGdldFNoYWRlclNvdXJjZShQ
bGF0Zm9ybTNET2JqZWN0KTsKLSAgICBTdHJpbmcgZ2V0U3RyaW5nKHVuc2lnbmVkIGxvbmcgbmFt
ZSk7Ci0KLSAgICB2b2lkIGdldFRleFBhcmFtZXRlcmZ2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1
bnNpZ25lZCBsb25nIHBuYW1lLCBmbG9hdCogdmFsdWUpOwotICAgIHZvaWQgZ2V0VGV4UGFyYW1l
dGVyaXYodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUsIGludCogdmFs
dWUpOwotCi0gICAgdm9pZCBnZXRVbmlmb3JtZnYoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBs
b25nIGxvY2F0aW9uLCBmbG9hdCogdmFsdWUpOwotICAgIHZvaWQgZ2V0VW5pZm9ybWl2KFBsYXRm
b3JtM0RPYmplY3QgcHJvZ3JhbSwgbG9uZyBsb2NhdGlvbiwgaW50KiB2YWx1ZSk7Ci0KLSAgICBs
b25nIGdldFVuaWZvcm1Mb2NhdGlvbihQbGF0Zm9ybTNET2JqZWN0LCBjb25zdCBTdHJpbmcmIG5h
bWUpOwotCi0gICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJmdih1bnNpZ25lZCBsb25nIGluZGV4LCB1
bnNpZ25lZCBsb25nIHBuYW1lLCBmbG9hdCogdmFsdWUpOwotICAgIHZvaWQgZ2V0VmVydGV4QXR0
cmliaXYodW5zaWduZWQgbG9uZyBpbmRleCwgdW5zaWduZWQgbG9uZyBwbmFtZSwgaW50KiB2YWx1
ZSk7Ci0KLSAgICBsb25nIGdldFZlcnRleEF0dHJpYk9mZnNldCh1bnNpZ25lZCBsb25nIGluZGV4
LCB1bnNpZ25lZCBsb25nIHBuYW1lKTsKLQotICAgIHZvaWQgaGludCh1bnNpZ25lZCBsb25nIHRh
cmdldCwgdW5zaWduZWQgbG9uZyBtb2RlKTsKLSAgICBib29sIGlzQnVmZmVyKFBsYXRmb3JtM0RP
YmplY3QpOwotICAgIGJvb2wgaXNFbmFibGVkKHVuc2lnbmVkIGxvbmcgY2FwKTsKLSAgICBib29s
IGlzRnJhbWVidWZmZXIoUGxhdGZvcm0zRE9iamVjdCk7Ci0gICAgYm9vbCBpc1Byb2dyYW0oUGxh
dGZvcm0zRE9iamVjdCk7Ci0gICAgYm9vbCBpc1JlbmRlcmJ1ZmZlcihQbGF0Zm9ybTNET2JqZWN0
KTsKLSAgICBib29sIGlzU2hhZGVyKFBsYXRmb3JtM0RPYmplY3QpOwotICAgIGJvb2wgaXNUZXh0
dXJlKFBsYXRmb3JtM0RPYmplY3QpOwotICAgIHZvaWQgbGluZVdpZHRoKGRvdWJsZSk7CisgICAg
U3RyaW5nIGdldFN0cmluZyhHQzNEZW51bSBuYW1lKTsKKyAgICB2b2lkIGdldFRleFBhcmFtZXRl
cmZ2KEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gcG5hbWUsIEdDM0RmbG9hdCogdmFsdWUpOwor
ICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVyaXYoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBwbmFt
ZSwgR0MzRGludCogdmFsdWUpOworICAgIHZvaWQgZ2V0VW5pZm9ybWZ2KFBsYXRmb3JtM0RPYmpl
Y3QgcHJvZ3JhbSwgR0MzRGludCBsb2NhdGlvbiwgR0MzRGZsb2F0KiB2YWx1ZSk7CisgICAgdm9p
ZCBnZXRVbmlmb3JtaXYoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBHQzNEaW50IGxvY2F0aW9u
LCBHQzNEaW50KiB2YWx1ZSk7CisgICAgR0MzRGludCBnZXRVbmlmb3JtTG9jYXRpb24oUGxhdGZv
cm0zRE9iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lKTsKKyAgICB2b2lkIGdldFZlcnRleEF0dHJp
YmZ2KEdDM0R1aW50IGluZGV4LCBHQzNEZW51bSBwbmFtZSwgR0MzRGZsb2F0KiB2YWx1ZSk7Cisg
ICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJpdihHQzNEdWludCBpbmRleCwgR0MzRGVudW0gcG5hbWUs
IEdDM0RpbnQqIHZhbHVlKTsKKyAgICBHQzNEc2l6ZWlwdHIgZ2V0VmVydGV4QXR0cmliT2Zmc2V0
KEdDM0R1aW50IGluZGV4LCBHQzNEZW51bSBwbmFtZSk7CisKKyAgICB2b2lkIGhpbnQoR0MzRGVu
dW0gdGFyZ2V0LCBHQzNEZW51bSBtb2RlKTsKKyAgICBHQzNEYm9vbGVhbiBpc0J1ZmZlcihQbGF0
Zm9ybTNET2JqZWN0KTsKKyAgICBHQzNEYm9vbGVhbiBpc0VuYWJsZWQoR0MzRGVudW0gY2FwKTsK
KyAgICBHQzNEYm9vbGVhbiBpc0ZyYW1lYnVmZmVyKFBsYXRmb3JtM0RPYmplY3QpOworICAgIEdD
M0Rib29sZWFuIGlzUHJvZ3JhbShQbGF0Zm9ybTNET2JqZWN0KTsKKyAgICBHQzNEYm9vbGVhbiBp
c1JlbmRlcmJ1ZmZlcihQbGF0Zm9ybTNET2JqZWN0KTsKKyAgICBHQzNEYm9vbGVhbiBpc1NoYWRl
cihQbGF0Zm9ybTNET2JqZWN0KTsKKyAgICBHQzNEYm9vbGVhbiBpc1RleHR1cmUoUGxhdGZvcm0z
RE9iamVjdCk7CisgICAgdm9pZCBsaW5lV2lkdGgoR0MzRGZsb2F0KTsKICAgICB2b2lkIGxpbmtQ
cm9ncmFtKFBsYXRmb3JtM0RPYmplY3QpOwotICAgIHZvaWQgcGl4ZWxTdG9yZWkodW5zaWduZWQg
bG9uZyBwbmFtZSwgbG9uZyBwYXJhbSk7Ci0gICAgdm9pZCBwb2x5Z29uT2Zmc2V0KGRvdWJsZSBm
YWN0b3IsIGRvdWJsZSB1bml0cyk7CisgICAgdm9pZCBwaXhlbFN0b3JlaShHQzNEZW51bSBwbmFt
ZSwgR0MzRGludCBwYXJhbSk7CisgICAgdm9pZCBwb2x5Z29uT2Zmc2V0KEdDM0RmbG9hdCBmYWN0
b3IsIEdDM0RmbG9hdCB1bml0cyk7CiAKLSAgICB2b2lkIHJlYWRQaXhlbHMobG9uZyB4LCBsb25n
IHksIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0LCB1bnNpZ25lZCBs
b25nIGZvcm1hdCwgdW5zaWduZWQgbG9uZyB0eXBlLCB2b2lkKiBkYXRhKTsKKyAgICB2b2lkIHJl
YWRQaXhlbHMoR0MzRGludCB4LCBHQzNEaW50IHksIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVp
IGhlaWdodCwgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBlLCB2b2lkKiBkYXRhKTsKIAog
ICAgIHZvaWQgcmVsZWFzZVNoYWRlckNvbXBpbGVyKCk7Ci0gICAgdm9pZCByZW5kZXJidWZmZXJT
dG9yYWdlKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIGludGVybmFsZm9ybWF0
LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCk7Ci0gICAgdm9pZCBz
YW1wbGVDb3ZlcmFnZShkb3VibGUgdmFsdWUsIGJvb2wgaW52ZXJ0KTsKLSAgICB2b2lkIHNjaXNz
b3IobG9uZyB4LCBsb25nIHksIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVp
Z2h0KTsKKworICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZShHQzNEZW51bSB0YXJnZXQsIEdD
M0RlbnVtIGludGVybmFsZm9ybWF0LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQp
OworICAgIHZvaWQgc2FtcGxlQ292ZXJhZ2UoR0MzRGNsYW1wZiB2YWx1ZSwgR0MzRGJvb2xlYW4g
aW52ZXJ0KTsKKyAgICB2b2lkIHNjaXNzb3IoR0MzRGludCB4LCBHQzNEaW50IHksIEdDM0RzaXpl
aSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCk7CiAgICAgdm9pZCBzaGFkZXJTb3VyY2UoUGxhdGZv
cm0zRE9iamVjdCwgY29uc3QgU3RyaW5nJiBzdHJpbmcpOwotICAgIHZvaWQgc3RlbmNpbEZ1bmMo
dW5zaWduZWQgbG9uZyBmdW5jLCBsb25nIHJlZiwgdW5zaWduZWQgbG9uZyBtYXNrKTsKLSAgICB2
b2lkIHN0ZW5jaWxGdW5jU2VwYXJhdGUodW5zaWduZWQgbG9uZyBmYWNlLCB1bnNpZ25lZCBsb25n
IGZ1bmMsIGxvbmcgcmVmLCB1bnNpZ25lZCBsb25nIG1hc2spOwotICAgIHZvaWQgc3RlbmNpbE1h
c2sodW5zaWduZWQgbG9uZyBtYXNrKTsKLSAgICB2b2lkIHN0ZW5jaWxNYXNrU2VwYXJhdGUodW5z
aWduZWQgbG9uZyBmYWNlLCB1bnNpZ25lZCBsb25nIG1hc2spOwotICAgIHZvaWQgc3RlbmNpbE9w
KHVuc2lnbmVkIGxvbmcgZmFpbCwgdW5zaWduZWQgbG9uZyB6ZmFpbCwgdW5zaWduZWQgbG9uZyB6
cGFzcyk7Ci0gICAgdm9pZCBzdGVuY2lsT3BTZXBhcmF0ZSh1bnNpZ25lZCBsb25nIGZhY2UsIHVu
c2lnbmVkIGxvbmcgZmFpbCwgdW5zaWduZWQgbG9uZyB6ZmFpbCwgdW5zaWduZWQgbG9uZyB6cGFz
cyk7Ci0KLSAgICBpbnQgdGV4SW1hZ2UyRCh1bnNpZ25lZCB0YXJnZXQsIHVuc2lnbmVkIGxldmVs
LCB1bnNpZ25lZCBpbnRlcm5hbGZvcm1hdCwgdW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdo
dCwgdW5zaWduZWQgYm9yZGVyLCB1bnNpZ25lZCBmb3JtYXQsIHVuc2lnbmVkIHR5cGUsIHZvaWQq
IHBpeGVscyk7Ci0KLSAgICB2b2lkIHRleFBhcmFtZXRlcmYodW5zaWduZWQgdGFyZ2V0LCB1bnNp
Z25lZCBwbmFtZSwgZmxvYXQgcGFyYW0pOwotICAgIHZvaWQgdGV4UGFyYW1ldGVyaSh1bnNpZ25l
ZCB0YXJnZXQsIHVuc2lnbmVkIHBuYW1lLCBpbnQgcGFyYW0pOwotCi0gICAgaW50IHRleFN1Yklt
YWdlMkQodW5zaWduZWQgdGFyZ2V0LCB1bnNpZ25lZCBsZXZlbCwgdW5zaWduZWQgeG9mZnNldCwg
dW5zaWduZWQgeW9mZnNldCwgdW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCwgdW5zaWdu
ZWQgZm9ybWF0LCB1bnNpZ25lZCB0eXBlLCB2b2lkKiBwaXhlbHMpOwotCi0gICAgdm9pZCB1bmlm
b3JtMWYobG9uZyBsb2NhdGlvbiwgZmxvYXQgeCk7Ci0gICAgdm9pZCB1bmlmb3JtMWZ2KGxvbmcg
bG9jYXRpb24sIGZsb2F0KiB2LCBpbnQgc2l6ZSk7Ci0gICAgdm9pZCB1bmlmb3JtMWkobG9uZyBs
b2NhdGlvbiwgaW50IHgpOwotICAgIHZvaWQgdW5pZm9ybTFpdihsb25nIGxvY2F0aW9uLCBpbnQq
IHYsIGludCBzaXplKTsKLSAgICB2b2lkIHVuaWZvcm0yZihsb25nIGxvY2F0aW9uLCBmbG9hdCB4
LCBmbG9hdCB5KTsKLSAgICB2b2lkIHVuaWZvcm0yZnYobG9uZyBsb2NhdGlvbiwgZmxvYXQqIHYs
IGludCBzaXplKTsKLSAgICB2b2lkIHVuaWZvcm0yaShsb25nIGxvY2F0aW9uLCBpbnQgeCwgaW50
IHkpOwotICAgIHZvaWQgdW5pZm9ybTJpdihsb25nIGxvY2F0aW9uLCBpbnQqIHYsIGludCBzaXpl
KTsKLSAgICB2b2lkIHVuaWZvcm0zZihsb25nIGxvY2F0aW9uLCBmbG9hdCB4LCBmbG9hdCB5LCBm
bG9hdCB6KTsKLSAgICB2b2lkIHVuaWZvcm0zZnYobG9uZyBsb2NhdGlvbiwgZmxvYXQqIHYsIGlu
dCBzaXplKTsKLSAgICB2b2lkIHVuaWZvcm0zaShsb25nIGxvY2F0aW9uLCBpbnQgeCwgaW50IHks
IGludCB6KTsKLSAgICB2b2lkIHVuaWZvcm0zaXYobG9uZyBsb2NhdGlvbiwgaW50KiB2LCBpbnQg
c2l6ZSk7Ci0gICAgdm9pZCB1bmlmb3JtNGYobG9uZyBsb2NhdGlvbiwgZmxvYXQgeCwgZmxvYXQg
eSwgZmxvYXQgeiwgZmxvYXQgdyk7Ci0gICAgdm9pZCB1bmlmb3JtNGZ2KGxvbmcgbG9jYXRpb24s
IGZsb2F0KiB2LCBpbnQgc2l6ZSk7Ci0gICAgdm9pZCB1bmlmb3JtNGkobG9uZyBsb2NhdGlvbiwg
aW50IHgsIGludCB5LCBpbnQgeiwgaW50IHcpOwotICAgIHZvaWQgdW5pZm9ybTRpdihsb25nIGxv
Y2F0aW9uLCBpbnQqIHYsIGludCBzaXplKTsKLSAgICB2b2lkIHVuaWZvcm1NYXRyaXgyZnYobG9u
ZyBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIGZsb2F0KiB2YWx1ZSwgaW50IHNpemUpOwotICAg
IHZvaWQgdW5pZm9ybU1hdHJpeDNmdihsb25nIGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgZmxv
YXQqIHZhbHVlLCBpbnQgc2l6ZSk7Ci0gICAgdm9pZCB1bmlmb3JtTWF0cml4NGZ2KGxvbmcgbG9j
YXRpb24sIGJvb2wgdHJhbnNwb3NlLCBmbG9hdCogdmFsdWUsIGludCBzaXplKTsKKyAgICB2b2lk
IHN0ZW5jaWxGdW5jKEdDM0RlbnVtIGZ1bmMsIEdDM0RpbnQgcmVmLCBHQzNEdWludCBtYXNrKTsK
KyAgICB2b2lkIHN0ZW5jaWxGdW5jU2VwYXJhdGUoR0MzRGVudW0gZmFjZSwgR0MzRGVudW0gZnVu
YywgR0MzRGludCByZWYsIEdDM0R1aW50IG1hc2spOworICAgIHZvaWQgc3RlbmNpbE1hc2soR0Mz
RHVpbnQgbWFzayk7CisgICAgdm9pZCBzdGVuY2lsTWFza1NlcGFyYXRlKEdDM0RlbnVtIGZhY2Us
IEdDM0R1aW50IG1hc2spOworICAgIHZvaWQgc3RlbmNpbE9wKEdDM0RlbnVtIGZhaWwsIEdDM0Rl
bnVtIHpmYWlsLCBHQzNEZW51bSB6cGFzcyk7CisgICAgdm9pZCBzdGVuY2lsT3BTZXBhcmF0ZShH
QzNEZW51bSBmYWNlLCBHQzNEZW51bSBmYWlsLCBHQzNEZW51bSB6ZmFpbCwgR0MzRGVudW0genBh
c3MpOworCisgICAgYm9vbCB0ZXhJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZl
bCwgR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhl
aWdodCwgR0MzRGludCBib3JkZXIsIEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVudW0gdHlwZSwgY29u
c3Qgdm9pZCogcGl4ZWxzKTsKKyAgICB2b2lkIHRleFBhcmFtZXRlcmYoR0MzRGVudW0gdGFyZ2V0
LCBHQzNEZW51bSBwbmFtZSwgR0MzRGZsb2F0IHBhcmFtKTsKKyAgICB2b2lkIHRleFBhcmFtZXRl
cmkoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBwbmFtZSwgR0MzRGludCBwYXJhbSk7CisgICAg
dm9pZCB0ZXhTdWJJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGlu
dCB4b2Zmc2V0LCBHQzNEaW50IHlvZmZzZXQsIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhl
aWdodCwgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBlLCBjb25zdCB2b2lkKiBwaXhlbHMp
OworCisgICAgdm9pZCB1bmlmb3JtMWYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGZsb2F0IHgpOwor
ICAgIHZvaWQgdW5pZm9ybTFmdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQqIHYsIEdDM0Rz
aXplaSBzaXplKTsKKyAgICB2b2lkIHVuaWZvcm0xaShHQzNEaW50IGxvY2F0aW9uLCBHQzNEaW50
IHgpOworICAgIHZvaWQgdW5pZm9ybTFpdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEaW50KiB2LCBH
QzNEc2l6ZWkgc2l6ZSk7CisgICAgdm9pZCB1bmlmb3JtMmYoR0MzRGludCBsb2NhdGlvbiwgR0Mz
RGZsb2F0IHgsIGZsb2F0IHkpOworICAgIHZvaWQgdW5pZm9ybTJmdihHQzNEaW50IGxvY2F0aW9u
LCBHQzNEZmxvYXQqIHYsIEdDM0RzaXplaSBzaXplKTsKKyAgICB2b2lkIHVuaWZvcm0yaShHQzNE
aW50IGxvY2F0aW9uLCBHQzNEaW50IHgsIEdDM0RpbnQgeSk7CisgICAgdm9pZCB1bmlmb3JtMml2
KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RpbnQqIHYsIEdDM0RzaXplaSBzaXplKTsKKyAgICB2b2lk
IHVuaWZvcm0zZihHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQgeCwgR0MzRGZsb2F0IHksIEdD
M0RmbG9hdCB6KTsKKyAgICB2b2lkIHVuaWZvcm0zZnYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGZs
b2F0KiB2LCBHQzNEc2l6ZWkgc2l6ZSk7CisgICAgdm9pZCB1bmlmb3JtM2koR0MzRGludCBsb2Nh
dGlvbiwgR0MzRGludCB4LCBHQzNEaW50IHksIEdDM0RpbnQgeik7CisgICAgdm9pZCB1bmlmb3Jt
M2l2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RpbnQqIHYsIEdDM0RzaXplaSBzaXplKTsKKyAgICB2
b2lkIHVuaWZvcm00ZihHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQgeCwgR0MzRGZsb2F0IHks
IEdDM0RmbG9hdCB6LCBHQzNEZmxvYXQgdyk7CisgICAgdm9pZCB1bmlmb3JtNGZ2KEdDM0RpbnQg
bG9jYXRpb24sIEdDM0RmbG9hdCogdiwgR0MzRHNpemVpIHNpemUpOworICAgIHZvaWQgdW5pZm9y
bTRpKEdDM0RpbnQgbG9jYXRpb24sIEdDM0RpbnQgeCwgR0MzRGludCB5LCBHQzNEaW50IHosIEdD
M0RpbnQgdyk7CisgICAgdm9pZCB1bmlmb3JtNGl2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RpbnQq
IHYsIEdDM0RzaXplaSBzaXplKTsKKworICAgIC8vIEZJWE1FOiBjaGFuZ2UgdGhlIGFyZ3VtZW50
IG9yZGVycyB0byBtYXRjaCBPcGVuR0wncy4KKyAgICB2b2lkIHVuaWZvcm1NYXRyaXgyZnYoR0Mz
RGludCBsb2NhdGlvbiwgR0MzRGJvb2xlYW4gdHJhbnNwb3NlLCBHQzNEZmxvYXQqIHZhbHVlLCBH
QzNEc2l6ZWkgc2l6ZSk7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4M2Z2KEdDM0RpbnQgbG9jYXRp
b24sIEdDM0Rib29sZWFuIHRyYW5zcG9zZSwgR0MzRGZsb2F0KiB2YWx1ZSwgR0MzRHNpemVpIHNp
emUpOworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDRmdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEYm9v
bGVhbiB0cmFuc3Bvc2UsIEdDM0RmbG9hdCogdmFsdWUsIEdDM0RzaXplaSBzaXplKTsKIAogICAg
IHZvaWQgdXNlUHJvZ3JhbShQbGF0Zm9ybTNET2JqZWN0KTsKICAgICB2b2lkIHZhbGlkYXRlUHJv
Z3JhbShQbGF0Zm9ybTNET2JqZWN0KTsKIAotICAgIHZvaWQgdmVydGV4QXR0cmliMWYodW5zaWdu
ZWQgbG9uZyBpbmR4LCBmbG9hdCB4KTsKLSAgICB2b2lkIHZlcnRleEF0dHJpYjFmdih1bnNpZ25l
ZCBsb25nIGluZHgsIGZsb2F0KiB2YWx1ZXMpOwotICAgIHZvaWQgdmVydGV4QXR0cmliMmYodW5z
aWduZWQgbG9uZyBpbmR4LCBmbG9hdCB4LCBmbG9hdCB5KTsKLSAgICB2b2lkIHZlcnRleEF0dHJp
YjJmdih1bnNpZ25lZCBsb25nIGluZHgsIGZsb2F0KiB2YWx1ZXMpOwotICAgIHZvaWQgdmVydGV4
QXR0cmliM2YodW5zaWduZWQgbG9uZyBpbmR4LCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KTsK
LSAgICB2b2lkIHZlcnRleEF0dHJpYjNmdih1bnNpZ25lZCBsb25nIGluZHgsIGZsb2F0KiB2YWx1
ZXMpOwotICAgIHZvaWQgdmVydGV4QXR0cmliNGYodW5zaWduZWQgbG9uZyBpbmR4LCBmbG9hdCB4
LCBmbG9hdCB5LCBmbG9hdCB6LCBmbG9hdCB3KTsKLSAgICB2b2lkIHZlcnRleEF0dHJpYjRmdih1
bnNpZ25lZCBsb25nIGluZHgsIGZsb2F0KiB2YWx1ZXMpOwotICAgIHZvaWQgdmVydGV4QXR0cmli
UG9pbnRlcih1bnNpZ25lZCBsb25nIGluZHgsIGludCBzaXplLCBpbnQgdHlwZSwgYm9vbCBub3Jt
YWxpemVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHN0cmlk
ZSwgdW5zaWduZWQgbG9uZyBvZmZzZXQpOworICAgIHZvaWQgdmVydGV4QXR0cmliMWYoR0MzRHVp
bnQgaW5kZXgsIEdDM0RmbG9hdCB4KTsKKyAgICB2b2lkIHZlcnRleEF0dHJpYjFmdihHQzNEdWlu
dCBpbmRleCwgR0MzRGZsb2F0KiB2YWx1ZXMpOworICAgIHZvaWQgdmVydGV4QXR0cmliMmYoR0Mz
RHVpbnQgaW5kZXgsIEdDM0RmbG9hdCB4LCBHQzNEZmxvYXQgeSk7CisgICAgdm9pZCB2ZXJ0ZXhB
dHRyaWIyZnYoR0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCogdmFsdWVzKTsKKyAgICB2b2lkIHZl
cnRleEF0dHJpYjNmKEdDM0R1aW50IGluZGV4LCBHQzNEZmxvYXQgeCwgR0MzRGZsb2F0IHksIEdD
M0RmbG9hdCB6KTsKKyAgICB2b2lkIHZlcnRleEF0dHJpYjNmdihHQzNEdWludCBpbmRleCwgR0Mz
RGZsb2F0KiB2YWx1ZXMpOworICAgIHZvaWQgdmVydGV4QXR0cmliNGYoR0MzRHVpbnQgaW5kZXgs
IEdDM0RmbG9hdCB4LCBHQzNEZmxvYXQgeSwgR0MzRGZsb2F0IHosIEdDM0RmbG9hdCB3KTsKKyAg
ICB2b2lkIHZlcnRleEF0dHJpYjRmdihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0KiB2YWx1ZXMp
OworICAgIHZvaWQgdmVydGV4QXR0cmliUG9pbnRlcihHQzNEdWludCBpbmRleCwgR0MzRGludCBz
aXplLCBHQzNEZW51bSB0eXBlLCBHQzNEYm9vbGVhbiBub3JtYWxpemVkLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHQzNEc2l6ZWkgc3RyaWRlLCBHQzNEaW50cHRyIG9mZnNldCk7CiAK
LSAgICB2b2lkIHZpZXdwb3J0KGxvbmcgeCwgbG9uZyB5LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1
bnNpZ25lZCBsb25nIGhlaWdodCk7CisgICAgdm9pZCB2aWV3cG9ydChHQzNEaW50IHgsIEdDM0Rp
bnQgeSwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0KTsKIAogICAgIHZvaWQgcmVz
aGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpOwogCkBAIC03NjgsMTkgKzc1OSwxOSBAQCBwdWJs
aWM6CiAjZW5kaWYKIAogICAgIC8vIFN1cHBvcnQgZm9yIGJ1ZmZlciBjcmVhdGlvbiBhbmQgZGVs
ZXRpb24KLSAgICB1bnNpZ25lZCBjcmVhdGVCdWZmZXIoKTsKLSAgICB1bnNpZ25lZCBjcmVhdGVG
cmFtZWJ1ZmZlcigpOwotICAgIHVuc2lnbmVkIGNyZWF0ZVByb2dyYW0oKTsKLSAgICB1bnNpZ25l
ZCBjcmVhdGVSZW5kZXJidWZmZXIoKTsKLSAgICB1bnNpZ25lZCBjcmVhdGVTaGFkZXIodW5zaWdu
ZWQgbG9uZyk7Ci0gICAgdW5zaWduZWQgY3JlYXRlVGV4dHVyZSgpOwotCi0gICAgdm9pZCBkZWxl
dGVCdWZmZXIodW5zaWduZWQpOwotICAgIHZvaWQgZGVsZXRlRnJhbWVidWZmZXIodW5zaWduZWQp
OwotICAgIHZvaWQgZGVsZXRlUHJvZ3JhbSh1bnNpZ25lZCk7Ci0gICAgdm9pZCBkZWxldGVSZW5k
ZXJidWZmZXIodW5zaWduZWQpOwotICAgIHZvaWQgZGVsZXRlU2hhZGVyKHVuc2lnbmVkKTsKLSAg
ICB2b2lkIGRlbGV0ZVRleHR1cmUodW5zaWduZWQpOworICAgIFBsYXRmb3JtM0RPYmplY3QgY3Jl
YXRlQnVmZmVyKCk7CisgICAgUGxhdGZvcm0zRE9iamVjdCBjcmVhdGVGcmFtZWJ1ZmZlcigpOwor
ICAgIFBsYXRmb3JtM0RPYmplY3QgY3JlYXRlUHJvZ3JhbSgpOworICAgIFBsYXRmb3JtM0RPYmpl
Y3QgY3JlYXRlUmVuZGVyYnVmZmVyKCk7CisgICAgUGxhdGZvcm0zRE9iamVjdCBjcmVhdGVTaGFk
ZXIoR0MzRGVudW0pOworICAgIFBsYXRmb3JtM0RPYmplY3QgY3JlYXRlVGV4dHVyZSgpOworCisg
ICAgdm9pZCBkZWxldGVCdWZmZXIoUGxhdGZvcm0zRE9iamVjdCk7CisgICAgdm9pZCBkZWxldGVG
cmFtZWJ1ZmZlcihQbGF0Zm9ybTNET2JqZWN0KTsKKyAgICB2b2lkIGRlbGV0ZVByb2dyYW0oUGxh
dGZvcm0zRE9iamVjdCk7CisgICAgdm9pZCBkZWxldGVSZW5kZXJidWZmZXIoUGxhdGZvcm0zRE9i
amVjdCk7CisgICAgdm9pZCBkZWxldGVTaGFkZXIoUGxhdGZvcm0zRE9iamVjdCk7CisgICAgdm9p
ZCBkZWxldGVUZXh0dXJlKFBsYXRmb3JtM0RPYmplY3QpOwogCiAgICAgLy8gU3ludGhlc2l6ZXMg
YW4gT3BlbkdMIGVycm9yIHdoaWNoIHdpbGwgYmUgcmV0dXJuZWQgZnJvbSBhCiAgICAgLy8gbGF0
ZXIgY2FsbCB0byBnZXRFcnJvci4gVGhpcyBpcyB1c2VkIHRvIGVtdWxhdGUgT3BlbkdMIEVTCkBA
IC03OTAsNyArNzgxLDcgQEAgcHVibGljOgogICAgIC8vIFBlciB0aGUgYmVoYXZpb3Igb2YgZ2xH
ZXRFcnJvciwgdGhpcyBzdG9yZXMgYXQgbW9zdCBvbmUKICAgICAvLyBpbnN0YW5jZSBvZiBhbnkg
Z2l2ZW4gZXJyb3IsIGFuZCByZXR1cm5zIHRoZW0gZnJvbSBjYWxscyB0bwogICAgIC8vIGdldEVy
cm9yIGluIHRoZSBvcmRlciB0aGV5IHdlcmUgYWRkZWQuCi0gICAgdm9pZCBzeW50aGVzaXplR0xF
cnJvcih1bnNpZ25lZCBsb25nIGVycm9yKTsKKyAgICB2b2lkIHN5bnRoZXNpemVHTEVycm9yKEdD
M0RlbnVtIGVycm9yKTsKIAogICAgIC8vIFN1cHBvcnQgZm9yIGV4dGVuc2lvbnMuIFJldHVybnMg
YSBub24tbnVsbCBvYmplY3QsIHRob3VnaCBub3QKICAgICAvLyBhbGwgbWV0aG9kcyBpdCBjb250
YWlucyBtYXkgbmVjZXNzYXJpbHkgYmUgc3VwcG9ydGVkIG9uIHRoZQpAQCAtODIzLDggKzgxNCw4
IEBAIHB1YmxpYzoKICAgICAvLyBObyB2ZXJ0aWNhbCBmbGlwIG9mIHRoZSBpbWFnZSBkYXRhIGlz
IHBlcmZvcm1lZCBieSB0aGlzCiAgICAgLy8gbWV0aG9kLgogICAgIGJvb2wgZ2V0SW1hZ2VEYXRh
KEltYWdlKiBpbWFnZSwKLSAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZm9ybWF0
LAotICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCB0eXBlLAorICAgICAgICAgICAg
ICAgICAgICAgIEdDM0RlbnVtIGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICBHQzNEZW51
bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwKICAg
ICAgICAgICAgICAgICAgICAgICBib29sIGlnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlLAogICAg
ICAgICAgICAgICAgICAgICAgIFZlY3Rvcjx1aW50OF90PiYgb3V0cHV0VmVjdG9yKTsKQEAgLTg4
MCwyMCArODcxLDIwIEBAIHB1YmxpYzoKIAogICAgIENHTENvbnRleHRPYmogbV9jb250ZXh0T2Jq
OwogICAgIFJldGFpblB0cjxXZWJHTExheWVyPiBtX3dlYkdMTGF5ZXI7Ci0gICAgR0x1aW50IG1f
dGV4dHVyZTsKLSAgICBHTHVpbnQgbV9mYm87Ci0gICAgR0x1aW50IG1fZGVwdGhTdGVuY2lsQnVm
ZmVyOworICAgIEdDM0R1aW50IG1fdGV4dHVyZTsKKyAgICBHQzNEdWludCBtX2ZibzsKKyAgICBH
QzNEdWludCBtX2RlcHRoU3RlbmNpbEJ1ZmZlcjsKIAogICAgIC8vIEZvciB0cmFja2luZyB3aGlj
aCBGQk8gaXMgYm91bmQKLSAgICBHTHVpbnQgbV9ib3VuZEZCTzsKKyAgICBHQzNEdWludCBtX2Jv
dW5kRkJPOwogCiAgICAgLy8gRm9yIG11bHRpc2FtcGxpbmcKLSAgICBHTHVpbnQgbV9tdWx0aXNh
bXBsZUZCTzsKLSAgICBHTHVpbnQgbV9tdWx0aXNhbXBsZURlcHRoU3RlbmNpbEJ1ZmZlcjsKLSAg
ICBHTHVpbnQgbV9tdWx0aXNhbXBsZUNvbG9yQnVmZmVyOworICAgIEdDM0R1aW50IG1fbXVsdGlz
YW1wbGVGQk87CisgICAgR0MzRHVpbnQgbV9tdWx0aXNhbXBsZURlcHRoU3RlbmNpbEJ1ZmZlcjsK
KyAgICBHQzNEdWludCBtX211bHRpc2FtcGxlQ29sb3JCdWZmZXI7CiAKICAgICAvLyBFcnJvcnMg
cmFpc2VkIGJ5IHN5bnRoZXNpemVHTEVycm9yKCkuCi0gICAgTGlzdEhhc2hTZXQ8dW5zaWduZWQg
bG9uZz4gbV9zeW50aGV0aWNFcnJvcnM7CisgICAgTGlzdEhhc2hTZXQ8R0MzRGVudW0+IG1fc3lu
dGhldGljRXJyb3JzOwogI2VuZGlmCiAKICAgICAvLyBGSVhNRTogaWRlYWxseSB0aGlzIHdvdWxk
IGJlIHVzZWQgb24gYWxsIHBsYXRmb3Jtcy4KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNwcAkocmV2aXNpb24gNzQ5NzAp
CisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC04OSw4ICs4OSw4IEBAIHN0YXRpYyBHcmFwaGljc0NvbnRleHQz
RDo6U291cmNlRGF0YUZvcm0KIH0KIAogYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0SW1hZ2VE
YXRhKEltYWdlKiBpbWFnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBpbnQgZm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGludCB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdDM0RlbnVtIGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
QzNEZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg
cHJlbXVsdGlwbHlBbHBoYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
b29sIGlnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFZlY3Rvcjx1aW50OF90PiYgb3V0cHV0VmVjdG9yKQpJbmRleDogV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvU2hhcmVkR3JhcGhpY3NDb250ZXh0M0QuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1NoYXJlZEdyYXBoaWNzQ29u
dGV4dDNELmNwcAkocmV2aXNpb24gNzQ5NzApCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9TaGFyZWRHcmFwaGljc0NvbnRleHQzRC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDgg
KzM4LDYgQEAKICNpbmNsdWRlICJDb2xvci5oIgogI2luY2x1ZGUgIkV4dGVuc2lvbnMzRC5oIgog
I2luY2x1ZGUgIkZsb2F0UmVjdC5oIgotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCi0j
aW5jbHVkZSAiR3JhcGhpY3NUeXBlcy5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKICNpbmNsdWRl
ICJTb2xpZEZpbGxTaGFkZXIuaCIKICNpbmNsdWRlICJUZXhTaGFkZXIuaCIKQEAgLTk4LDEyICs5
NiwxMiBAQCB2b2lkIFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEOjpzY2lzc29yKGNvCiAgICAgbV9j
b250ZXh0LT5zY2lzc29yKHJlY3QueCgpLCByZWN0LnkoKSwgcmVjdC53aWR0aCgpLCByZWN0Lmhl
aWdodCgpKTsKIH0KIAotdm9pZCBTaGFyZWRHcmFwaGljc0NvbnRleHQzRDo6ZW5hYmxlKHVuc2ln
bmVkIGNhcGFjaXR5KQordm9pZCBTaGFyZWRHcmFwaGljc0NvbnRleHQzRDo6ZW5hYmxlKEdDM0Rl
bnVtIGNhcGFjaXR5KQogewogICAgIG1fY29udGV4dC0+ZW5hYmxlKGNhcGFjaXR5KTsKIH0KIAot
dm9pZCBTaGFyZWRHcmFwaGljc0NvbnRleHQzRDo6ZGlzYWJsZSh1bnNpZ25lZCBjYXBhY2l0eSkK
K3ZvaWQgU2hhcmVkR3JhcGhpY3NDb250ZXh0M0Q6OmRpc2FibGUoR0MzRGVudW0gY2FwYWNpdHkp
CiB7CiAgICAgbV9jb250ZXh0LT5kaXNhYmxlKGNhcGFjaXR5KTsKIH0KQEAgLTExNSwyMiArMTEz
LDIyIEBAIHZvaWQgU2hhcmVkR3JhcGhpY3NDb250ZXh0M0Q6OmNsZWFyQ29sb3IKICAgICBtX2Nv
bnRleHQtPmNsZWFyQ29sb3IocmdiYVswXSwgcmdiYVsxXSwgcmdiYVsyXSwgcmdiYVszXSk7CiB9
CiAKLXZvaWQgU2hhcmVkR3JhcGhpY3NDb250ZXh0M0Q6OmNsZWFyKHVuc2lnbmVkIG1hc2spCit2
b2lkIFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEOjpjbGVhcihHQzNEYml0ZmllbGQgbWFzaykKIHsK
ICAgICBtX2NvbnRleHQtPmNsZWFyKG1hc2spOwogfQogCi12b2lkIFNoYXJlZEdyYXBoaWNzQ29u
dGV4dDNEOjpkcmF3QXJyYXlzKHVuc2lnbmVkIGxvbmcgbW9kZSwgbG9uZyBmaXJzdCwgbG9uZyBj
b3VudCkKK3ZvaWQgU2hhcmVkR3JhcGhpY3NDb250ZXh0M0Q6OmRyYXdBcnJheXMoR0MzRGVudW0g
bW9kZSwgR0MzRGludCBmaXJzdCwgR0MzRHNpemVpIGNvdW50KQogewogICAgIG1fY29udGV4dC0+
ZHJhd0FycmF5cyhtb2RlLCBmaXJzdCwgY291bnQpOwogfQogCi11bnNpZ25lZCBsb25nIFNoYXJl
ZEdyYXBoaWNzQ29udGV4dDNEOjpnZXRFcnJvcigpCitHQzNEZW51bSBTaGFyZWRHcmFwaGljc0Nv
bnRleHQzRDo6Z2V0RXJyb3IoKQogewogICAgIHJldHVybiBtX2NvbnRleHQtPmdldEVycm9yKCk7
CiB9CiAKLXZvaWQgU2hhcmVkR3JhcGhpY3NDb250ZXh0M0Q6OmdldEludGVnZXJ2KHVuc2lnbmVk
IGxvbmcgcG5hbWUsIGludCogdmFsdWUpCit2b2lkIFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEOjpn
ZXRJbnRlZ2VydihHQzNEZW51bSBwbmFtZSwgR0MzRGludCogdmFsdWUpCiB7CiAgICAgbV9jb250
ZXh0LT5nZXRJbnRlZ2VydihwbmFtZSwgdmFsdWUpOwogfQpAQCAtMTQwLDUxICsxMzgsNDkgQEAg
dm9pZCBTaGFyZWRHcmFwaGljc0NvbnRleHQzRDo6Zmx1c2goKQogICAgIG1fY29udGV4dC0+Zmx1
c2goKTsKIH0KIAotdW5zaWduZWQgU2hhcmVkR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZUZyYW1l
YnVmZmVyKCkKK1BsYXRmb3JtM0RPYmplY3QgU2hhcmVkR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0
ZUZyYW1lYnVmZmVyKCkKIHsKICAgICByZXR1cm4gbV9jb250ZXh0LT5jcmVhdGVGcmFtZWJ1ZmZl
cigpOwogfQogCi11bnNpZ25lZCBTaGFyZWRHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlVGV4dHVy
ZSgpCitQbGF0Zm9ybTNET2JqZWN0IFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVUZXh0
dXJlKCkKIHsKICAgICByZXR1cm4gbV9jb250ZXh0LT5jcmVhdGVUZXh0dXJlKCk7CiB9CiAKLXZv
aWQgU2hhcmVkR3JhcGhpY3NDb250ZXh0M0Q6OmRlbGV0ZUZyYW1lYnVmZmVyKHVuc2lnbmVkIGZy
YW1lYnVmZmVyKQordm9pZCBTaGFyZWRHcmFwaGljc0NvbnRleHQzRDo6ZGVsZXRlRnJhbWVidWZm
ZXIoUGxhdGZvcm0zRE9iamVjdCBmcmFtZWJ1ZmZlcikKIHsKICAgICBtX2NvbnRleHQtPmRlbGV0
ZUZyYW1lYnVmZmVyKGZyYW1lYnVmZmVyKTsKIH0KIAotdm9pZCBTaGFyZWRHcmFwaGljc0NvbnRl
eHQzRDo6ZGVsZXRlVGV4dHVyZSh1bnNpZ25lZCB0ZXh0dXJlKQordm9pZCBTaGFyZWRHcmFwaGlj
c0NvbnRleHQzRDo6ZGVsZXRlVGV4dHVyZShQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmUpCiB7CiAg
ICAgbV9jb250ZXh0LT5kZWxldGVUZXh0dXJlKHRleHR1cmUpOwogfQogCi12b2lkIFNoYXJlZEdy
YXBoaWNzQ29udGV4dDNEOjpmcmFtZWJ1ZmZlclRleHR1cmUyRCh1bnNpZ25lZCBsb25nIHRhcmdl
dCwgdW5zaWduZWQgbG9uZyBhdHRhY2htZW50LCB1bnNpZ25lZCBsb25nIHRleHRhcmdldCwgdW5z
aWduZWQgdGV4dHVyZSwgbG9uZyBsZXZlbCkKK3ZvaWQgU2hhcmVkR3JhcGhpY3NDb250ZXh0M0Q6
OmZyYW1lYnVmZmVyVGV4dHVyZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gYXR0YWNobWVu
dCwgR0MzRGVudW0gdGV4dGFyZ2V0LCBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmUsIEdDM0RpbnQg
bGV2ZWwpCiB7CiAgICAgbV9jb250ZXh0LT5mcmFtZWJ1ZmZlclRleHR1cmUyRCh0YXJnZXQsIGF0
dGFjaG1lbnQsIHRleHRhcmdldCwgdGV4dHVyZSwgbGV2ZWwpOwogfQogCi12b2lkIFNoYXJlZEdy
YXBoaWNzQ29udGV4dDNEOjp0ZXhQYXJhbWV0ZXJpKHVuc2lnbmVkIHRhcmdldCwgdW5zaWduZWQg
cG5hbWUsIGludCBwYXJhbSkKK3ZvaWQgU2hhcmVkR3JhcGhpY3NDb250ZXh0M0Q6OnRleFBhcmFt
ZXRlcmkoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBwbmFtZSwgR0MzRGludCBwYXJhbSkKIHsK
ICAgICBtX2NvbnRleHQtPnRleFBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSwgcGFyYW0pOwogfQog
Ci1pbnQgU2hhcmVkR3JhcGhpY3NDb250ZXh0M0Q6OnRleEltYWdlMkQodW5zaWduZWQgdGFyZ2V0
LCB1bnNpZ25lZCBsZXZlbCwgdW5zaWduZWQgaW50ZXJuYWxmb3JtYXQsIHVuc2lnbmVkIHdpZHRo
LCB1bnNpZ25lZCBoZWlnaHQsIHVuc2lnbmVkIGJvcmRlciwgdW5zaWduZWQgZm9ybWF0LCB1bnNp
Z25lZCB0eXBlLCB2b2lkKiBwaXhlbHMpCitib29sIFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEOjp0
ZXhJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGVudW0gaW50ZXJu
YWxmb3JtYXQsIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGludCBib3Jk
ZXIsIEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVudW0gdHlwZSwgY29uc3Qgdm9pZCogcGl4ZWxzKQog
ewotICAgIGlmICghcGl4ZWxzKSB7Ci0gICAgICAgIG1fY29udGV4dC0+dGV4SW1hZ2UyRFJlc291
cmNlU2FmZSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9y
ZGVyLCBmb3JtYXQsIHR5cGUpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9CisgICAgaWYgKCFw
aXhlbHMpCisgICAgICAgIHJldHVybiBtX2NvbnRleHQtPnRleEltYWdlMkRSZXNvdXJjZVNhZmUo
dGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgZm9y
bWF0LCB0eXBlKTsKICAgICByZXR1cm4gbV9jb250ZXh0LT50ZXhJbWFnZTJEKHRhcmdldCwgbGV2
ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwg
cGl4ZWxzKTsKIH0KIAotaW50IFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEOjp0ZXhTdWJJbWFnZTJE
KHVuc2lnbmVkIHRhcmdldCwgdW5zaWduZWQgbGV2ZWwsIHVuc2lnbmVkIHhvZmZzZXQsIHVuc2ln
bmVkIHlvZmZzZXQsIHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQsIHVuc2lnbmVkIGZv
cm1hdCwgdW5zaWduZWQgdHlwZSwgdm9pZCogcGl4ZWxzKQordm9pZCBTaGFyZWRHcmFwaGljc0Nv
bnRleHQzRDo6dGV4U3ViSW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdD
M0RpbnQgeG9mZnNldCwgR0MzRGludCB5b2Zmc2V0LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXpl
aSBoZWlnaHQsIEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVudW0gdHlwZSwgY29uc3Qgdm9pZCogcGl4
ZWxzKQogewotICAgIHJldHVybiBtX2NvbnRleHQtPnRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZl
bCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBwaXhlbHMp
OworICAgIG1fY29udGV4dC0+dGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5
b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHBpeGVscyk7CiB9CiAKLXZvaWQg
U2hhcmVkR3JhcGhpY3NDb250ZXh0M0Q6OnJlYWRQaXhlbHMobG9uZyB4LCBsb25nIHksIHVuc2ln
bmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0LCB1bnNpZ25lZCBsb25nIGZvcm1h
dCwgdW5zaWduZWQgbG9uZyB0eXBlLCB2b2lkKiBkYXRhKQordm9pZCBTaGFyZWRHcmFwaGljc0Nv
bnRleHQzRDo6cmVhZFBpeGVscyhHQzNEaW50IHgsIEdDM0RpbnQgeSwgR0MzRHNpemVpIHdpZHRo
LCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUsIHZvaWQq
IGRhdGEpCiB7CiAgICAgbV9jb250ZXh0LT5yZWFkUGl4ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQs
IGZvcm1hdCwgdHlwZSwgZGF0YSk7CiB9CkBAIC0zMTIsMTIgKzMwOCwxMiBAQCB2b2lkIFNoYXJl
ZEdyYXBoaWNzQ29udGV4dDNEOjp1c2VRdWFkVmVyCiAgICAgfQogfQogCi12b2lkIFNoYXJlZEdy
YXBoaWNzQ29udGV4dDNEOjpzZXRBY3RpdmVUZXh0dXJlKHVuc2lnbmVkIHRleHR1cmVVbml0KQor
dm9pZCBTaGFyZWRHcmFwaGljc0NvbnRleHQzRDo6c2V0QWN0aXZlVGV4dHVyZShHQzNEZW51bSB0
ZXh0dXJlVW5pdCkKIHsKICAgICBtX2NvbnRleHQtPmFjdGl2ZVRleHR1cmUodGV4dHVyZVVuaXQp
OwogfQogCi12b2lkIFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEOjpiaW5kVGV4dHVyZSh1bnNpZ25l
ZCB0YXJnZXQsIHVuc2lnbmVkIHRleHR1cmUpCit2b2lkIFNoYXJlZEdyYXBoaWNzQ29udGV4dDNE
OjpiaW5kVGV4dHVyZShHQzNEZW51bSB0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZSkK
IHsKICAgICBtX2NvbnRleHQtPmJpbmRUZXh0dXJlKHRhcmdldCwgdGV4dHVyZSk7CiB9CkBAIC0z
MzIsNyArMzI4LDcgQEAgdm9pZCBTaGFyZWRHcmFwaGljc0NvbnRleHQzRDo6dXNlVGV4dHVyZQog
ICAgIG1fdGV4U2hhZGVyLT51c2UodHJhbnNmb3JtLCB0ZXhUcmFuc2Zvcm0sIDAsIGFscGhhKTsK
IH0KIAotdm9pZCBTaGFyZWRHcmFwaGljc0NvbnRleHQzRDo6YmluZEZyYW1lYnVmZmVyKHVuc2ln
bmVkIGZyYW1lYnVmZmVyKQordm9pZCBTaGFyZWRHcmFwaGljc0NvbnRleHQzRDo6YmluZEZyYW1l
YnVmZmVyKFBsYXRmb3JtM0RPYmplY3QgZnJhbWVidWZmZXIpCiB7CiAgICAgbV9jb250ZXh0LT5i
aW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBmcmFtZWJ1ZmZl
cik7CiB9CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9TaGFyZWRHcmFwaGlj
c0NvbnRleHQzRC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L1NoYXJlZEdyYXBoaWNzQ29udGV4dDNELmgJKHJldmlzaW9uIDc0OTcwKQorKysgV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvU2hhcmVkR3JhcGhpY3NDb250ZXh0M0QuaAkod29ya2luZyBj
b3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2lmbmRlZiBTaGFyZWRHcmFwaGljc0NvbnRleHQzRF9o
CiAjZGVmaW5lIFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEX2gKIAorI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dDNELmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBlcy5oIgogI2luY2x1ZGUgIkltYWdl
U291cmNlLmgiCiAjaW5jbHVkZSAiVGV4dHVyZS5oIgpAQCAtNDUsNyArNDYsNiBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFmZmluZVRyYW5zZm9ybTsKIGNsYXNzIENvbG9yOwotY2xh
c3MgR3JhcGhpY3NDb250ZXh0M0Q7CiBjbGFzcyBGbG9hdFJlY3Q7CiBjbGFzcyBIb3N0V2luZG93
OwogY2xhc3MgSW50U2l6ZTsKQEAgLTYxLDMwICs2MSwzMCBAQCBwdWJsaWM6CiAKICAgICAvLyBG
dW5jdGlvbnMgdGhhdCBkZWxlZ2F0ZSBkaXJlY3RseSB0byBHcmFwaGljc0NvbnRleHQzRCwgd2l0
aCBjYWNoaW5nCiAgICAgdm9pZCBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICB2b2lkIGJpbmRG
cmFtZWJ1ZmZlcih1bnNpZ25lZCBmcmFtZWJ1ZmZlcik7CisgICAgdm9pZCBiaW5kRnJhbWVidWZm
ZXIoUGxhdGZvcm0zRE9iamVjdCBmcmFtZWJ1ZmZlcik7CiAgICAgdm9pZCBzZXRWaWV3cG9ydChj
b25zdCBJbnRTaXplJik7CiAgICAgdm9pZCBzY2lzc29yKGNvbnN0IEZsb2F0UmVjdCYpOwotICAg
IHZvaWQgZW5hYmxlKHVuc2lnbmVkIGNhcGFjaXR5KTsKLSAgICB2b2lkIGRpc2FibGUodW5zaWdu
ZWQgY2FwYWNpdHkpOworICAgIHZvaWQgZW5hYmxlKEdDM0RlbnVtIGNhcGFjaXR5KTsKKyAgICB2
b2lkIGRpc2FibGUoR0MzRGVudW0gY2FwYWNpdHkpOwogICAgIHZvaWQgY2xlYXJDb2xvcihjb25z
dCBDb2xvciYpOwotICAgIHZvaWQgY2xlYXIodW5zaWduZWQgbWFzayk7Ci0gICAgdm9pZCBkcmF3
QXJyYXlzKHVuc2lnbmVkIGxvbmcgbW9kZSwgbG9uZyBmaXJzdCwgbG9uZyBjb3VudCk7Ci0gICAg
dW5zaWduZWQgbG9uZyBnZXRFcnJvcigpOwotICAgIHZvaWQgZ2V0SW50ZWdlcnYodW5zaWduZWQg
bG9uZyBwbmFtZSwgaW50KiB2YWx1ZSk7CisgICAgdm9pZCBjbGVhcihHQzNEYml0ZmllbGQgbWFz
ayk7CisgICAgdm9pZCBkcmF3QXJyYXlzKEdDM0RlbnVtIG1vZGUsIEdDM0RpbnQgZmlyc3QsIEdD
M0RzaXplaSBjb3VudCk7CisgICAgR0MzRGVudW0gZ2V0RXJyb3IoKTsKKyAgICB2b2lkIGdldElu
dGVnZXJ2KEdDM0RlbnVtIHBuYW1lLCBHQzNEaW50KiB2YWx1ZSk7CiAgICAgdm9pZCBmbHVzaCgp
OwogCi0gICAgdW5zaWduZWQgY3JlYXRlRnJhbWVidWZmZXIoKTsKLSAgICB1bnNpZ25lZCBjcmVh
dGVUZXh0dXJlKCk7CisgICAgUGxhdGZvcm0zRE9iamVjdCBjcmVhdGVGcmFtZWJ1ZmZlcigpOwor
ICAgIFBsYXRmb3JtM0RPYmplY3QgY3JlYXRlVGV4dHVyZSgpOwogCi0gICAgdm9pZCBkZWxldGVG
cmFtZWJ1ZmZlcih1bnNpZ25lZCBmcmFtZWJ1ZmZlcik7Ci0gICAgdm9pZCBkZWxldGVUZXh0dXJl
KHVuc2lnbmVkIHRleHR1cmUpOworICAgIHZvaWQgZGVsZXRlRnJhbWVidWZmZXIoUGxhdGZvcm0z
RE9iamVjdCBmcmFtZWJ1ZmZlcik7CisgICAgdm9pZCBkZWxldGVUZXh0dXJlKFBsYXRmb3JtM0RP
YmplY3QgdGV4dHVyZSk7CiAKLSAgICB2b2lkIGZyYW1lYnVmZmVyVGV4dHVyZTJEKHVuc2lnbmVk
IGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIGF0dGFjaG1lbnQsIHVuc2lnbmVkIGxvbmcgdGV4
dGFyZ2V0LCB1bnNpZ25lZCwgbG9uZyBsZXZlbCk7Ci0gICAgdm9pZCB0ZXhQYXJhbWV0ZXJpKHVu
c2lnbmVkIHRhcmdldCwgdW5zaWduZWQgcG5hbWUsIGludCBwYXJhbSk7Ci0gICAgaW50IHRleElt
YWdlMkQodW5zaWduZWQgdGFyZ2V0LCB1bnNpZ25lZCBsZXZlbCwgdW5zaWduZWQgaW50ZXJuYWxm
b3JtYXQsIHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQsIHVuc2lnbmVkIGJvcmRlciwg
dW5zaWduZWQgZm9ybWF0LCB1bnNpZ25lZCB0eXBlLCB2b2lkKiBwaXhlbHMpOwotICAgIGludCB0
ZXhTdWJJbWFnZTJEKHVuc2lnbmVkIHRhcmdldCwgdW5zaWduZWQgbGV2ZWwsIHVuc2lnbmVkIHhv
ZmZzZXQsIHVuc2lnbmVkIHlvZmZzZXQsIHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQs
IHVuc2lnbmVkIGZvcm1hdCwgdW5zaWduZWQgdHlwZSwgdm9pZCogcGl4ZWxzKTsKKyAgICB2b2lk
IGZyYW1lYnVmZmVyVGV4dHVyZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gYXR0YWNobWVu
dCwgR0MzRGVudW0gdGV4dGFyZ2V0LCBQbGF0Zm9ybTNET2JqZWN0LCBHQzNEaW50IGxldmVsKTsK
KyAgICB2b2lkIHRleFBhcmFtZXRlcmkoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBwbmFtZSwg
R0MzRGludCBwYXJhbSk7CisgICAgYm9vbCB0ZXhJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0Mz
RGludCBsZXZlbCwgR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDM0RzaXplaSB3aWR0aCwgR0Mz
RHNpemVpIGhlaWdodCwgR0MzRGludCBib3JkZXIsIEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVudW0g
dHlwZSwgY29uc3Qgdm9pZCogcGl4ZWxzKTsKKyAgICB2b2lkIHRleFN1YkltYWdlMkQoR0MzRGVu
dW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEaW50IHhvZmZzZXQsIEdDM0RpbnQgeW9mZnNl
dCwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEZW51bSBmb3JtYXQsIEdD
M0RlbnVtIHR5cGUsIGNvbnN0IHZvaWQqIHBpeGVscyk7CiAKLSAgICB2b2lkIHJlYWRQaXhlbHMo
bG9uZyB4LCBsb25nIHksIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0
LCB1bnNpZ25lZCBsb25nIGZvcm1hdCwgdW5zaWduZWQgbG9uZyB0eXBlLCB2b2lkKiBkYXRhKTsK
KyAgICB2b2lkIHJlYWRQaXhlbHMoR0MzRGludCB4LCBHQzNEaW50IHksIEdDM0RzaXplaSB3aWR0
aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBlLCB2b2lk
KiBkYXRhKTsKIAogICAgIGJvb2wgcGFpbnRzSW50b0NhbnZhc0J1ZmZlcigpIGNvbnN0OwogCkBA
IC05NSw4ICs5NSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHVzZUZpbGxTb2xpZFByb2dyYW0oY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgQ29sb3ImKTsKICAgICB2b2lkIHVzZVRleHR1cmVQ
cm9ncmFtKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGZs
b2F0IGFscGhhKTsKIAotICAgIHZvaWQgc2V0QWN0aXZlVGV4dHVyZSh1bnNpZ25lZCB0ZXh0dXJl
VW5pdCk7Ci0gICAgdm9pZCBiaW5kVGV4dHVyZSh1bnNpZ25lZCB0YXJnZXQsIHVuc2lnbmVkIHRl
eHR1cmUpOworICAgIHZvaWQgc2V0QWN0aXZlVGV4dHVyZShHQzNEZW51bSB0ZXh0dXJlVW5pdCk7
CisgICAgdm9pZCBiaW5kVGV4dHVyZShHQzNEZW51bSB0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3Qg
dGV4dHVyZSk7CiAKICAgICBib29sIHN1cHBvcnRzQkdSQSgpOwogCkluZGV4OiBXZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0
M0RPcGVuR0wuY3BwCShyZXZpc2lvbiA3NDk3MCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
Mjg4LDcgKzI4OCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnByZXBhcmVUZXh0dXJlKCkK
ICAgICA6OmdsRmluaXNoKCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmFjdGl2ZVRl
eHR1cmUodW5zaWduZWQgbG9uZyB0ZXh0dXJlKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YWN0
aXZlVGV4dHVyZShHQzNEZW51bSB0ZXh0dXJlKQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgp
OwogICAgIDo6Z2xBY3RpdmVUZXh0dXJlKHRleHR1cmUpOwpAQCAtMjk5LDI5ICsyOTksMjkgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YXR0YWNoU2hhZGVyKFBsYQogICAgIEFTU0VSVChwcm9n
cmFtKTsKICAgICBBU1NFUlQoc2hhZGVyKTsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAg
ICA6OmdsQXR0YWNoU2hhZGVyKChHTHVpbnQpIHByb2dyYW0sIChHTHVpbnQpIHNoYWRlcik7Cisg
ICAgOjpnbEF0dGFjaFNoYWRlcihwcm9ncmFtLCBzaGFkZXIpOwogfQogCi12b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjpiaW5kQXR0cmliTG9jYXRpb24oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCB1
bnNpZ25lZCBsb25nIGluZGV4LCBjb25zdCBTdHJpbmcmIG5hbWUpCit2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjpiaW5kQXR0cmliTG9jYXRpb24oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBHQzNE
dWludCBpbmRleCwgY29uc3QgU3RyaW5nJiBuYW1lKQogewogICAgIEFTU0VSVChwcm9ncmFtKTsK
ICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6OmdsQmluZEF0dHJpYkxvY2F0aW9uKChH
THVpbnQpIHByb2dyYW0sIGluZGV4LCBuYW1lLnV0ZjgoKS5kYXRhKCkpOworICAgIDo6Z2xCaW5k
QXR0cmliTG9jYXRpb24ocHJvZ3JhbSwgaW5kZXgsIG5hbWUudXRmOCgpLmRhdGEoKSk7CiB9CiAK
LXZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRCdWZmZXIodW5zaWduZWQgbG9uZyB0YXJnZXQs
IFBsYXRmb3JtM0RPYmplY3QgYnVmZmVyKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YmluZEJ1
ZmZlcihHQzNEZW51bSB0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3QgYnVmZmVyKQogewogICAgIG1h
a2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xCaW5kQnVmZmVyKHRhcmdldCwgKEdMdWludCkg
YnVmZmVyKTsKKyAgICA6OmdsQmluZEJ1ZmZlcih0YXJnZXQsIGJ1ZmZlcik7CiB9CiAKIAotdm9p
ZCBHcmFwaGljc0NvbnRleHQzRDo6YmluZEZyYW1lYnVmZmVyKHVuc2lnbmVkIGxvbmcgdGFyZ2V0
LCBQbGF0Zm9ybTNET2JqZWN0IGJ1ZmZlcikKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRG
cmFtZWJ1ZmZlcihHQzNEZW51bSB0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3QgYnVmZmVyKQogewog
ICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIEdMdWludCBmYm87CiAgICAgaWYgKGJ1ZmZl
cikKLSAgICAgICAgZmJvID0gKEdMdWludClidWZmZXI7CisgICAgICAgIGZibyA9IGJ1ZmZlcjsK
ICAgICBlbHNlCiAgICAgICAgIGZibyA9IChtX2F0dHJzLmFudGlhbGlhcyA/IG1fbXVsdGlzYW1w
bGVGQk8gOiBtX2Zibyk7CiAgICAgaWYgKGZibyAhPSBtX2JvdW5kRkJPKSB7CkBAIC0zMzAsOTkg
KzMzMCw5OSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpiaW5kRnJhbWVidWZmZXIoCiAgICAg
fQogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpiaW5kUmVuZGVyYnVmZmVyKHVuc2lnbmVk
IGxvbmcgdGFyZ2V0LCBQbGF0Zm9ybTNET2JqZWN0IHJlbmRlcmJ1ZmZlcikKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OmJpbmRSZW5kZXJidWZmZXIoR0MzRGVudW0gdGFyZ2V0LCBQbGF0Zm9ybTNE
T2JqZWN0IHJlbmRlcmJ1ZmZlcikKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6
OmdsQmluZFJlbmRlcmJ1ZmZlckVYVCh0YXJnZXQsIChHTHVpbnQpIHJlbmRlcmJ1ZmZlcik7Cisg
ICAgOjpnbEJpbmRSZW5kZXJidWZmZXJFWFQodGFyZ2V0LCByZW5kZXJidWZmZXIpOwogfQogCiAK
LXZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRUZXh0dXJlKHVuc2lnbmVkIGxvbmcgdGFyZ2V0
LCBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpiaW5k
VGV4dHVyZShHQzNEZW51bSB0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZSkKIHsKICAg
ICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6OmdsQmluZFRleHR1cmUodGFyZ2V0LCAoR0x1
aW50KSB0ZXh0dXJlKTsKKyAgICA6OmdsQmluZFRleHR1cmUodGFyZ2V0LCB0ZXh0dXJlKTsKIH0K
IAotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YmxlbmRDb2xvcihkb3VibGUgcmVkLCBkb3VibGUg
Z3JlZW4sIGRvdWJsZSBibHVlLCBkb3VibGUgYWxwaGEpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNE
OjpibGVuZENvbG9yKEdDM0RjbGFtcGYgcmVkLCBHQzNEY2xhbXBmIGdyZWVuLCBHQzNEY2xhbXBm
IGJsdWUsIEdDM0RjbGFtcGYgYWxwaGEpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0g
ICAgOjpnbEJsZW5kQ29sb3Ioc3RhdGljX2Nhc3Q8ZmxvYXQ+KHJlZCksIHN0YXRpY19jYXN0PGZs
b2F0PihncmVlbiksIHN0YXRpY19jYXN0PGZsb2F0PihibHVlKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+
KGFscGhhKSk7CisgICAgOjpnbEJsZW5kQ29sb3IocmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpOwog
fQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpibGVuZEVxdWF0aW9uKCB1bnNpZ25lZCBsb25n
IG1vZGUgKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YmxlbmRFcXVhdGlvbihHQzNEZW51bSBt
b2RlKQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIDo6Z2xCbGVuZEVxdWF0aW9u
KG1vZGUpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpibGVuZEVxdWF0aW9uU2VwYXJh
dGUodW5zaWduZWQgbG9uZyBtb2RlUkdCLCB1bnNpZ25lZCBsb25nIG1vZGVBbHBoYSkKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OmJsZW5kRXF1YXRpb25TZXBhcmF0ZShHQzNEZW51bSBtb2RlUkdC
LCBHQzNEZW51bSBtb2RlQWxwaGEpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAg
OjpnbEJsZW5kRXF1YXRpb25TZXBhcmF0ZShtb2RlUkdCLCBtb2RlQWxwaGEpOwogfQogCiAKLXZv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJsZW5kRnVuYyh1bnNpZ25lZCBsb25nIHNmYWN0b3IsIHVu
c2lnbmVkIGxvbmcgZGZhY3RvcikKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJsZW5kRnVuYyhH
QzNEZW51bSBzZmFjdG9yLCBHQzNEZW51bSBkZmFjdG9yKQogewogICAgIG1ha2VDb250ZXh0Q3Vy
cmVudCgpOwogICAgIDo6Z2xCbGVuZEZ1bmMoc2ZhY3RvciwgZGZhY3Rvcik7CiB9ICAgICAgIAog
Ci12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpibGVuZEZ1bmNTZXBhcmF0ZSh1bnNpZ25lZCBsb25n
IHNyY1JHQiwgdW5zaWduZWQgbG9uZyBkc3RSR0IsIHVuc2lnbmVkIGxvbmcgc3JjQWxwaGEsIHVu
c2lnbmVkIGxvbmcgZHN0QWxwaGEpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpibGVuZEZ1bmNT
ZXBhcmF0ZShHQzNEZW51bSBzcmNSR0IsIEdDM0RlbnVtIGRzdFJHQiwgR0MzRGVudW0gc3JjQWxw
aGEsIEdDM0RlbnVtIGRzdEFscGhhKQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAg
IDo6Z2xCbGVuZEZ1bmNTZXBhcmF0ZShzcmNSR0IsIGRzdFJHQiwgc3JjQWxwaGEsIGRzdEFscGhh
KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YnVmZmVyRGF0YSh1bnNpZ25lZCBsb25n
IHRhcmdldCwgaW50IHNpemUsIHVuc2lnbmVkIGxvbmcgdXNhZ2UpCit2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjpidWZmZXJEYXRhKEdDM0RlbnVtIHRhcmdldCwgR0MzRHNpemVpcHRyIHNpemUsIEdD
M0RlbnVtIHVzYWdlKQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIDo6Z2xCdWZm
ZXJEYXRhKHRhcmdldCwgc2l6ZSwgMCwgdXNhZ2UpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjpidWZmZXJEYXRhKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBpbnQgc2l6ZSwgY29uc3Qgdm9p
ZCogZGF0YSwgdW5zaWduZWQgbG9uZyB1c2FnZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJ1
ZmZlckRhdGEoR0MzRGVudW0gdGFyZ2V0LCBHQzNEc2l6ZWlwdHIgc2l6ZSwgY29uc3Qgdm9pZCog
ZGF0YSwgR0MzRGVudW0gdXNhZ2UpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAg
OjpnbEJ1ZmZlckRhdGEodGFyZ2V0LCBzaXplLCBkYXRhLCB1c2FnZSk7CiB9CiAKLXZvaWQgR3Jh
cGhpY3NDb250ZXh0M0Q6OmJ1ZmZlclN1YkRhdGEodW5zaWduZWQgbG9uZyB0YXJnZXQsIGxvbmcg
b2Zmc2V0LCBpbnQgc2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OmJ1ZmZlclN1YkRhdGEoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50cHRyIG9mZnNldCwgR0Mz
RHNpemVpcHRyIHNpemUsIGNvbnN0IHZvaWQqIGRhdGEpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJy
ZW50KCk7CiAgICAgOjpnbEJ1ZmZlclN1YkRhdGEodGFyZ2V0LCBvZmZzZXQsIHNpemUsIGRhdGEp
OwogfQogCi11bnNpZ25lZCBsb25nIEdyYXBoaWNzQ29udGV4dDNEOjpjaGVja0ZyYW1lYnVmZmVy
U3RhdHVzKHVuc2lnbmVkIGxvbmcgdGFyZ2V0KQorR0MzRGVudW0gR3JhcGhpY3NDb250ZXh0M0Q6
OmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0MzRGVudW0gdGFyZ2V0KQogewogICAgIG1ha2VDb250
ZXh0Q3VycmVudCgpOwogICAgIHJldHVybiA6OmdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1c0VYVCh0
YXJnZXQpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpjbGVhckNvbG9yKGRvdWJsZSBy
LCBkb3VibGUgZywgZG91YmxlIGIsIGRvdWJsZSBhKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
Y2xlYXJDb2xvcihHQzNEY2xhbXBmIHIsIEdDM0RjbGFtcGYgZywgR0MzRGNsYW1wZiBiLCBHQzNE
Y2xhbXBmIGEpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbENsZWFyQ29s
b3Ioc3RhdGljX2Nhc3Q8ZmxvYXQ+KHIpLCBzdGF0aWNfY2FzdDxmbG9hdD4oZyksIHN0YXRpY19j
YXN0PGZsb2F0PihiKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGEpKTsKKyAgICA6OmdsQ2xlYXJDb2xv
cihyLCBnLCBiLCBhKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y2xlYXIodW5zaWdu
ZWQgbG9uZyBtYXNrKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y2xlYXIoR0MzRGJpdGZpZWxk
IG1hc2spCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgOjpnbENsZWFyKG1hc2sp
OwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpjbGVhckRlcHRoKGRvdWJsZSBkZXB0aCkK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNsZWFyRGVwdGgoR0MzRGNsYW1wZiBkZXB0aCkKIHsK
ICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICA6OmdsQ2xlYXJEZXB0aChkZXB0aCk7CiB9
CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNsZWFyU3RlbmNpbChsb25nIHMpCit2b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjpjbGVhclN0ZW5jaWwoR0MzRGludCBzKQogewogICAgIG1ha2VDb250
ZXh0Q3VycmVudCgpOwogICAgIDo6Z2xDbGVhclN0ZW5jaWwocyk7CiB9CiAKLXZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OmNvbG9yTWFzayhib29sIHJlZCwgYm9vbCBncmVlbiwgYm9vbCBibHVlLCBi
b29sIGFscGhhKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y29sb3JNYXNrKEdDM0Rib29sZWFu
IHJlZCwgR0MzRGJvb2xlYW4gZ3JlZW4sIEdDM0Rib29sZWFuIGJsdWUsIEdDM0Rib29sZWFuIGFs
cGhhKQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIDo6Z2xDb2xvck1hc2socmVk
LCBncmVlbiwgYmx1ZSwgYWxwaGEpOwpAQCAtNDY4LDE5ICs0NjgsMTkgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6Y29tcGlsZVNoYWRlcihQbAogICAgIGNvbnN0IENTdHJpbmcmIHRyYW5zbGF0
ZWRTaGFkZXJDU3RyaW5nID0gdHJhbnNsYXRlZFNoYWRlclNvdXJjZS51dGY4KCk7CiAgICAgY29u
c3QgY2hhciogdHJhbnNsYXRlZFNoYWRlclB0ciA9IHRyYW5zbGF0ZWRTaGFkZXJDU3RyaW5nLmRh
dGEoKTsKICAgICAKLSAgICA6OmdsU2hhZGVyU291cmNlKChHTHVpbnQpIHNoYWRlciwgMSwgJnRy
YW5zbGF0ZWRTaGFkZXJQdHIsICZ0cmFuc2xhdGVkU2hhZGVyTGVuZ3RoKTsKKyAgICA6OmdsU2hh
ZGVyU291cmNlKHNoYWRlciwgMSwgJnRyYW5zbGF0ZWRTaGFkZXJQdHIsICZ0cmFuc2xhdGVkU2hh
ZGVyTGVuZ3RoKTsKICAgICAKLSAgICA6OmdsQ29tcGlsZVNoYWRlcigoR0x1aW50KSBzaGFkZXIp
OworICAgIDo6Z2xDb21waWxlU2hhZGVyKHNoYWRlcik7CiAgICAgCiAgICAgaW50IEdMQ29tcGls
ZVN1Y2Nlc3M7CiAgICAgCi0gICAgOjpnbEdldFNoYWRlcml2KChHTHVpbnQpIHNoYWRlciwgQ09N
UElMRV9TVEFUVVMsICZHTENvbXBpbGVTdWNjZXNzKTsKKyAgICA6OmdsR2V0U2hhZGVyaXYoc2hh
ZGVyLCBDT01QSUxFX1NUQVRVUywgJkdMQ29tcGlsZVN1Y2Nlc3MpOwogICAgIAogICAgIC8vIEFT
U0VSVCB0aGF0IEFOR0xFIGdlbmVyYXRlZCBHTFNMIHdpbGwgYmUgYWNjZXB0ZWQgYnkgT3BlbkdM
CiAgICAgQVNTRVJUKEdMQ29tcGlsZVN1Y2Nlc3MgPT0gR0xfVFJVRSk7CiB9CiAKLXZvaWQgR3Jh
cGhpY3NDb250ZXh0M0Q6OmNvcHlUZXhJbWFnZTJEKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBsb25n
IGxldmVsLCB1bnNpZ25lZCBsb25nIGludGVybmFsZm9ybWF0LCBsb25nIHgsIGxvbmcgeSwgdW5z
aWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQsIGxvbmcgYm9yZGVyKQordm9p
ZCBHcmFwaGljc0NvbnRleHQzRDo6Y29weVRleEltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNE
aW50IGxldmVsLCBHQzNEZW51bSBpbnRlcm5hbGZvcm1hdCwgR0MzRGludCB4LCBHQzNEaW50IHks
IEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGludCBib3JkZXIpCiB7CiAg
ICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgaWYgKG1fYXR0cnMuYW50aWFsaWFzICYmIG1f
Ym91bmRGQk8gPT0gbV9tdWx0aXNhbXBsZUZCTykgewpAQCAtNDk0LDcgKzQ5NCw3IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OmNvcHlUZXhJbWFnZTJEKHUKICAgICAgICAgOjpnbEJpbmRGcmFt
ZWJ1ZmZlckVYVChHTF9GUkFNRUJVRkZFUl9FWFQsIG1fbXVsdGlzYW1wbGVGQk8pOwogfQogCi12
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpjb3B5VGV4U3ViSW1hZ2UyRCh1bnNpZ25lZCBsb25nIHRh
cmdldCwgbG9uZyBsZXZlbCwgbG9uZyB4b2Zmc2V0LCBsb25nIHlvZmZzZXQsIGxvbmcgeCwgbG9u
ZyB5LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCkKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0M0Q6OmNvcHlUZXhTdWJJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGlu
dCBsZXZlbCwgR0MzRGludCB4b2Zmc2V0LCBHQzNEaW50IHlvZmZzZXQsIEdDM0RpbnQgeCwgR0Mz
RGludCB5LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQpCiB7CiAgICAgbWFrZUNv
bnRleHRDdXJyZW50KCk7CiAgICAgaWYgKG1fYXR0cnMuYW50aWFsaWFzICYmIG1fYm91bmRGQk8g
PT0gbV9tdWx0aXNhbXBsZUZCTykgewpAQCAtNTA4LDI1ICs1MDgsMjUgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6Y29weVRleFN1YkltYWdlMgogICAgICAgICA6OmdsQmluZEZyYW1lYnVmZmVy
RVhUKEdMX0ZSQU1FQlVGRkVSX0VYVCwgbV9tdWx0aXNhbXBsZUZCTyk7CiB9CiAKLXZvaWQgR3Jh
cGhpY3NDb250ZXh0M0Q6OmN1bGxGYWNlKHVuc2lnbmVkIGxvbmcgbW9kZSkKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OmN1bGxGYWNlKEdDM0RlbnVtIG1vZGUpCiB7CiAgICAgbWFrZUNvbnRleHRD
dXJyZW50KCk7CiAgICAgOjpnbEN1bGxGYWNlKG1vZGUpOwogfQogCi12b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjpkZXB0aEZ1bmModW5zaWduZWQgbG9uZyBmdW5jKQordm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6ZGVwdGhGdW5jKEdDM0RlbnVtIGZ1bmMpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50
KCk7CiAgICAgOjpnbERlcHRoRnVuYyhmdW5jKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6ZGVwdGhNYXNrKGJvb2wgZmxhZykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRlcHRoTWFz
ayhHQzNEYm9vbGVhbiBmbGFnKQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIDo6
Z2xEZXB0aE1hc2soZmxhZyk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRlcHRoUmFu
Z2UoZG91YmxlIHpOZWFyLCBkb3VibGUgekZhcikKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRl
cHRoUmFuZ2UoR0MzRGNsYW1wZiB6TmVhciwgR0MzRGNsYW1wZiB6RmFyKQogewogICAgIG1ha2VD
b250ZXh0Q3VycmVudCgpOwogICAgIDo6Z2xEZXB0aFJhbmdlKHpOZWFyLCB6RmFyKTsKQEAgLTUz
Nyw0MCArNTM3LDQwIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRldGFjaFNoYWRlcihQbGEK
ICAgICBBU1NFUlQocHJvZ3JhbSk7CiAgICAgQVNTRVJUKHNoYWRlcik7CiAgICAgbWFrZUNvbnRl
eHRDdXJyZW50KCk7Ci0gICAgOjpnbERldGFjaFNoYWRlcigoR0x1aW50KSBwcm9ncmFtLCAoR0x1
aW50KSBzaGFkZXIpOworICAgIDo6Z2xEZXRhY2hTaGFkZXIocHJvZ3JhbSwgc2hhZGVyKTsKIH0K
IAotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGlzYWJsZSh1bnNpZ25lZCBsb25nIGNhcCkKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRpc2FibGUoR0MzRGVudW0gY2FwKQogewogICAgIG1ha2VD
b250ZXh0Q3VycmVudCgpOwogICAgIDo6Z2xEaXNhYmxlKGNhcCk7CiB9CiAKLXZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSh1bnNpZ25lZCBsb25nIGluZGV4
KQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KEdDM0R1
aW50IGluZGV4KQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIDo6Z2xEaXNhYmxl
VmVydGV4QXR0cmliQXJyYXkoaW5kZXgpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpk
cmF3QXJyYXlzKHVuc2lnbmVkIGxvbmcgbW9kZSwgbG9uZyBmaXJzdCwgbG9uZyBjb3VudCkKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRyYXdBcnJheXMoR0MzRGVudW0gbW9kZSwgR0MzRGludCBm
aXJzdCwgR0MzRHNpemVpIGNvdW50KQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAg
IDo6Z2xEcmF3QXJyYXlzKG1vZGUsIGZpcnN0LCBjb3VudCk7CiB9CiAKLXZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OmRyYXdFbGVtZW50cyh1bnNpZ25lZCBsb25nIG1vZGUsIHVuc2lnbmVkIGxvbmcg
Y291bnQsIHVuc2lnbmVkIGxvbmcgdHlwZSwgbG9uZyBvZmZzZXQpCit2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjpkcmF3RWxlbWVudHMoR0MzRGVudW0gbW9kZSwgR0MzRHNpemVpIGNvdW50LCBHQzNE
ZW51bSB0eXBlLCBHQzNEaW50cHRyIG9mZnNldCkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQo
KTsKLSAgICA6OmdsRHJhd0VsZW1lbnRzKG1vZGUsIGNvdW50LCB0eXBlLCByZWludGVycHJldF9j
YXN0PHZvaWQqPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4ob2Zmc2V0KSkpOworICAgIDo6Z2xEcmF3
RWxlbWVudHMobW9kZSwgY291bnQsIHR5cGUsIHJlaW50ZXJwcmV0X2Nhc3Q8R0x2b2lkKj4oc3Rh
dGljX2Nhc3Q8aW50cHRyX3Q+KG9mZnNldCkpKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6ZW5hYmxlKHVuc2lnbmVkIGxvbmcgY2FwKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZW5h
YmxlKEdDM0RlbnVtIGNhcCkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICA6Omds
RW5hYmxlKGNhcCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmVuYWJsZVZlcnRleEF0
dHJpYkFycmF5KHVuc2lnbmVkIGxvbmcgaW5kZXgpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpl
bmFibGVWZXJ0ZXhBdHRyaWJBcnJheShHQzNEdWludCBpbmRleCkKIHsKICAgICBtYWtlQ29udGV4
dEN1cnJlbnQoKTsKICAgICA6OmdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkoaW5kZXgpOwpAQCAt
NTg4LDMxICs1ODgsMzEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Zmx1c2goKQogICAgIDo6
Z2xGbHVzaCgpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpmcmFtZWJ1ZmZlclJlbmRl
cmJ1ZmZlcih1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBhdHRhY2htZW50LCB1
bnNpZ25lZCBsb25nIHJlbmRlcmJ1ZmZlcnRhcmdldCwgUGxhdGZvcm0zRE9iamVjdCBidWZmZXIp
Cit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHQzNEZW51
bSB0YXJnZXQsIEdDM0RlbnVtIGF0dGFjaG1lbnQsIEdDM0RlbnVtIHJlbmRlcmJ1ZmZlcnRhcmdl
dCwgUGxhdGZvcm0zRE9iamVjdCBidWZmZXIpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7
Ci0gICAgOjpnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyRVhUKHRhcmdldCwgYXR0YWNobWVudCwg
cmVuZGVyYnVmZmVydGFyZ2V0LCAoR0x1aW50KSBidWZmZXIpOworICAgIDo6Z2xGcmFtZWJ1ZmZl
clJlbmRlcmJ1ZmZlckVYVCh0YXJnZXQsIGF0dGFjaG1lbnQsIHJlbmRlcmJ1ZmZlcnRhcmdldCwg
YnVmZmVyKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZnJhbWVidWZmZXJUZXh0dXJl
MkQodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgYXR0YWNobWVudCwgdW5zaWdu
ZWQgbG9uZyB0ZXh0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZSwgbG9uZyBsZXZlbCkK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmZyYW1lYnVmZmVyVGV4dHVyZTJEKEdDM0RlbnVtIHRh
cmdldCwgR0MzRGVudW0gYXR0YWNobWVudCwgR0MzRGVudW0gdGV4dGFyZ2V0LCBQbGF0Zm9ybTNE
T2JqZWN0IHRleHR1cmUsIEdDM0RpbnQgbGV2ZWwpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50
KCk7Ci0gICAgOjpnbEZyYW1lYnVmZmVyVGV4dHVyZTJERVhUKHRhcmdldCwgYXR0YWNobWVudCwg
dGV4dGFyZ2V0LCAoR0x1aW50KSB0ZXh0dXJlLCBsZXZlbCk7CisgICAgOjpnbEZyYW1lYnVmZmVy
VGV4dHVyZTJERVhUKHRhcmdldCwgYXR0YWNobWVudCwgdGV4dGFyZ2V0LCB0ZXh0dXJlLCBsZXZl
bCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmZyb250RmFjZSh1bnNpZ25lZCBsb25n
IG1vZGUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpmcm9udEZhY2UoR0MzRGVudW0gbW9kZSkK
IHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICA6OmdsRnJvbnRGYWNlKG1vZGUpOwog
fQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZW5lcmF0ZU1pcG1hcCh1bnNpZ25lZCBsb25n
IHRhcmdldCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdlbmVyYXRlTWlwbWFwKEdDM0RlbnVt
IHRhcmdldCkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICA6OmdsR2VuZXJhdGVN
aXBtYXBFWFQodGFyZ2V0KTsKIH0KIAotYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0QWN0aXZl
QXR0cmliKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgdW5zaWduZWQgbG9uZyBpbmRleCwgQWN0
aXZlSW5mbyYgaW5mbykKK2Jvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEFjdGl2ZUF0dHJpYihQ
bGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIEdDM0R1aW50IGluZGV4LCBBY3RpdmVJbmZvJiBpbmZv
KQogewogICAgIGlmICghcHJvZ3JhbSkgewogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihJTlZB
TElEX1ZBTFVFKTsKQEAgLTYyMCwxMiArNjIwLDEyIEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6
OmdldEFjdGl2ZUF0dHJpYigKICAgICB9CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAg
R0xpbnQgbWF4QXR0cmlidXRlU2l6ZSA9IDA7Ci0gICAgOjpnbEdldFByb2dyYW1pdihzdGF0aWNf
Y2FzdDxHTHVpbnQ+KHByb2dyYW0pLCBHTF9BQ1RJVkVfQVRUUklCVVRFX01BWF9MRU5HVEgsICZt
YXhBdHRyaWJ1dGVTaXplKTsKKyAgICA6OmdsR2V0UHJvZ3JhbWl2KHByb2dyYW0sIEdMX0FDVElW
RV9BVFRSSUJVVEVfTUFYX0xFTkdUSCwgJm1heEF0dHJpYnV0ZVNpemUpOwogICAgIEdMY2hhciBu
YW1lW21heEF0dHJpYnV0ZVNpemVdOyAvLyBHTF9BQ1RJVkVfQVRUUklCVVRFX01BWF9MRU5HVEgg
aW5jbHVkZXMgbnVsbCB0ZXJtaW5hdGlvbgogICAgIEdMc2l6ZWkgbmFtZUxlbmd0aCA9IDA7CiAg
ICAgR0xpbnQgc2l6ZSA9IDA7CiAgICAgR0xlbnVtIHR5cGUgPSAwOwotICAgIDo6Z2xHZXRBY3Rp
dmVBdHRyaWIoc3RhdGljX2Nhc3Q8R0x1aW50Pihwcm9ncmFtKSwgaW5kZXgsIG1heEF0dHJpYnV0
ZVNpemUsICZuYW1lTGVuZ3RoLCAmc2l6ZSwgJnR5cGUsIG5hbWUpOworICAgIDo6Z2xHZXRBY3Rp
dmVBdHRyaWIocHJvZ3JhbSwgaW5kZXgsIG1heEF0dHJpYnV0ZVNpemUsICZuYW1lTGVuZ3RoLCAm
c2l6ZSwgJnR5cGUsIG5hbWUpOwogICAgIGlmICghbmFtZUxlbmd0aCkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIGluZm8ubmFtZSA9IFN0cmluZyhuYW1lLCBuYW1lTGVuZ3RoKTsKQEAgLTYz
NCw3ICs2MzQsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRBY3RpdmVBdHRyaWIoCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAgICAgCi1ib29sIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRBY3Rp
dmVVbmlmb3JtKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgdW5zaWduZWQgbG9uZyBpbmRleCwg
QWN0aXZlSW5mbyYgaW5mbykKK2Jvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEFjdGl2ZVVuaWZv
cm0oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBHQzNEdWludCBpbmRleCwgQWN0aXZlSW5mbyYg
aW5mbykKIHsKICAgICBpZiAoIXByb2dyYW0pIHsKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3Io
SU5WQUxJRF9WQUxVRSk7CkBAIC02NDIsMTIgKzY0MiwxMiBAQCBib29sIEdyYXBoaWNzQ29udGV4
dDNEOjpnZXRBY3RpdmVVbmlmb3JtCiAgICAgfQogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwog
ICAgIEdMaW50IG1heFVuaWZvcm1TaXplID0gMDsKLSAgICA6OmdsR2V0UHJvZ3JhbWl2KHN0YXRp
Y19jYXN0PEdMdWludD4ocHJvZ3JhbSksIEdMX0FDVElWRV9VTklGT1JNX01BWF9MRU5HVEgsICZt
YXhVbmlmb3JtU2l6ZSk7CisgICAgOjpnbEdldFByb2dyYW1pdihwcm9ncmFtLCBHTF9BQ1RJVkVf
VU5JRk9STV9NQVhfTEVOR1RILCAmbWF4VW5pZm9ybVNpemUpOwogICAgIEdMY2hhciBuYW1lW21h
eFVuaWZvcm1TaXplXTsgLy8gR0xfQUNUSVZFX1VOSUZPUk1fTUFYX0xFTkdUSCBpbmNsdWRlcyBu
dWxsIHRlcm1pbmF0aW9uCiAgICAgR0xzaXplaSBuYW1lTGVuZ3RoID0gMDsKICAgICBHTGludCBz
aXplID0gMDsKICAgICBHTGVudW0gdHlwZSA9IDA7Ci0gICAgOjpnbEdldEFjdGl2ZVVuaWZvcm0o
c3RhdGljX2Nhc3Q8R0x1aW50Pihwcm9ncmFtKSwgaW5kZXgsIG1heFVuaWZvcm1TaXplLCAmbmFt
ZUxlbmd0aCwgJnNpemUsICZ0eXBlLCBuYW1lKTsKKyAgICA6OmdsR2V0QWN0aXZlVW5pZm9ybShw
cm9ncmFtLCBpbmRleCwgbWF4VW5pZm9ybVNpemUsICZuYW1lTGVuZ3RoLCAmc2l6ZSwgJnR5cGUs
IG5hbWUpOwogICAgIGlmICghbmFtZUxlbmd0aCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IGluZm8ubmFtZSA9IFN0cmluZyhuYW1lLCBuYW1lTGVuZ3RoKTsKQEAgLTY1NiwxNCArNjU2LDE0
IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEFjdGl2ZVVuaWZvcm0KICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0QXR0YWNoZWRTaGFkZXJzKFBs
YXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgaW50IG1heENvdW50LCBpbnQqIGNvdW50LCB1bnNpZ25l
ZCBpbnQqIHNoYWRlcnMpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRBdHRhY2hlZFNoYWRl
cnMoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBHQzNEc2l6ZWkgbWF4Q291bnQsIEdDM0RzaXpl
aSogY291bnQsIFBsYXRmb3JtM0RPYmplY3QqIHNoYWRlcnMpCiB7CiAgICAgaWYgKCFwcm9ncmFt
KSB7CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKElOVkFMSURfVkFMVUUpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xHZXRBdHRh
Y2hlZFNoYWRlcnMoc3RhdGljX2Nhc3Q8R0x1aW50Pihwcm9ncmFtKSwgbWF4Q291bnQsIGNvdW50
LCBzaGFkZXJzKTsKKyAgICA6OmdsR2V0QXR0YWNoZWRTaGFkZXJzKHByb2dyYW0sIG1heENvdW50
LCBjb3VudCwgc2hhZGVycyk7CiB9CiAKIGludCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0QXR0cmli
TG9jYXRpb24oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBjb25zdCBTdHJpbmcmIG5hbWUpCkBA
IC02NzIsNyArNjcyLDcgQEAgaW50IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRBdHRyaWJMb2NhdGlv
bgogICAgICAgICByZXR1cm4gLTE7CiAKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICBy
ZXR1cm4gOjpnbEdldEF0dHJpYkxvY2F0aW9uKChHTHVpbnQpIHByb2dyYW0sIG5hbWUudXRmOCgp
LmRhdGEoKSk7CisgICAgcmV0dXJuIDo6Z2xHZXRBdHRyaWJMb2NhdGlvbihwcm9ncmFtLCBuYW1l
LnV0ZjgoKS5kYXRhKCkpOwogfQogCiBHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBHcmFw
aGljc0NvbnRleHQzRDo6Z2V0Q29udGV4dEF0dHJpYnV0ZXMoKQpAQCAtNjgwLDExICs2ODAsMTEg
QEAgR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgR3JhcGhpY3NDbwogICAgIHJldHVybiBt
X2F0dHJzOwogfQogCi11bnNpZ25lZCBsb25nIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRFcnJvcigp
CitHQzNEZW51bSBHcmFwaGljc0NvbnRleHQzRDo6Z2V0RXJyb3IoKQogewogICAgIGlmIChtX3N5
bnRoZXRpY0Vycm9ycy5zaXplKCkgPiAwKSB7Ci0gICAgICAgIExpc3RIYXNoU2V0PHVuc2lnbmVk
IGxvbmc+OjppdGVyYXRvciBpdGVyID0gbV9zeW50aGV0aWNFcnJvcnMuYmVnaW4oKTsKLSAgICAg
ICAgdW5zaWduZWQgbG9uZyBlcnIgPSAqaXRlcjsKKyAgICAgICAgTGlzdEhhc2hTZXQ8R0MzRGVu
dW0+OjppdGVyYXRvciBpdGVyID0gbV9zeW50aGV0aWNFcnJvcnMuYmVnaW4oKTsKKyAgICAgICAg
R0MzRGVudW0gZXJyID0gKml0ZXI7CiAgICAgICAgIG1fc3ludGhldGljRXJyb3JzLnJlbW92ZShp
dGVyKTsKICAgICAgICAgcmV0dXJuIGVycjsKICAgICB9CkBAIC02OTMsMTA0ICs2OTMsMTA0IEBA
IHVuc2lnbmVkIGxvbmcgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEVycm8KICAgICByZXR1cm4gOjpn
bEdldEVycm9yKCk7CiB9CiAKLVN0cmluZyBHcmFwaGljc0NvbnRleHQzRDo6Z2V0U3RyaW5nKHVu
c2lnbmVkIGxvbmcgbmFtZSkKK1N0cmluZyBHcmFwaGljc0NvbnRleHQzRDo6Z2V0U3RyaW5nKEdD
M0RlbnVtIG5hbWUpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgcmV0dXJuIFN0
cmluZygoY29uc3QgY2hhciopIDo6Z2xHZXRTdHJpbmcobmFtZSkpOwogfQogCi12b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjpoaW50KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIG1v
ZGUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpoaW50KEdDM0RlbnVtIHRhcmdldCwgR0MzRGVu
dW0gbW9kZSkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICA6OmdsSGludCh0YXJn
ZXQsIG1vZGUpOwogfQogCi1ib29sIEdyYXBoaWNzQ29udGV4dDNEOjppc0J1ZmZlcihQbGF0Zm9y
bTNET2JqZWN0IGJ1ZmZlcikKK0dDM0Rib29sZWFuIEdyYXBoaWNzQ29udGV4dDNEOjppc0J1ZmZl
cihQbGF0Zm9ybTNET2JqZWN0IGJ1ZmZlcikKIHsKICAgICBpZiAoIWJ1ZmZlcikKLSAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gR0xfRkFMU0U7CiAKICAgICBtYWtlQ29udGV4
dEN1cnJlbnQoKTsKLSAgICByZXR1cm4gOjpnbElzQnVmZmVyKChHTHVpbnQpIGJ1ZmZlcik7Cisg
ICAgcmV0dXJuIDo6Z2xJc0J1ZmZlcihidWZmZXIpOwogfQogCi1ib29sIEdyYXBoaWNzQ29udGV4
dDNEOjppc0VuYWJsZWQodW5zaWduZWQgbG9uZyBjYXApCitHQzNEYm9vbGVhbiBHcmFwaGljc0Nv
bnRleHQzRDo6aXNFbmFibGVkKEdDM0RlbnVtIGNhcCkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJl
bnQoKTsKICAgICByZXR1cm4gOjpnbElzRW5hYmxlZChjYXApOwogfQogCi1ib29sIEdyYXBoaWNz
Q29udGV4dDNEOjppc0ZyYW1lYnVmZmVyKFBsYXRmb3JtM0RPYmplY3QgZnJhbWVidWZmZXIpCitH
QzNEYm9vbGVhbiBHcmFwaGljc0NvbnRleHQzRDo6aXNGcmFtZWJ1ZmZlcihQbGF0Zm9ybTNET2Jq
ZWN0IGZyYW1lYnVmZmVyKQogewogICAgIGlmICghZnJhbWVidWZmZXIpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgcmV0dXJuIEdMX0ZBTFNFOwogCiAgICAgbWFrZUNvbnRleHRDdXJy
ZW50KCk7Ci0gICAgcmV0dXJuIDo6Z2xJc0ZyYW1lYnVmZmVyRVhUKChHTHVpbnQpIGZyYW1lYnVm
ZmVyKTsKKyAgICByZXR1cm4gOjpnbElzRnJhbWVidWZmZXJFWFQoZnJhbWVidWZmZXIpOwogfQog
Ci1ib29sIEdyYXBoaWNzQ29udGV4dDNEOjppc1Byb2dyYW0oUGxhdGZvcm0zRE9iamVjdCBwcm9n
cmFtKQorR0MzRGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0M0Q6OmlzUHJvZ3JhbShQbGF0Zm9ybTNE
T2JqZWN0IHByb2dyYW0pCiB7CiAgICAgaWYgKCFwcm9ncmFtKQotICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIHJldHVybiBHTF9GQUxTRTsKIAogICAgIG1ha2VDb250ZXh0Q3VycmVudCgp
OwotICAgIHJldHVybiA6OmdsSXNQcm9ncmFtKChHTHVpbnQpIHByb2dyYW0pOworICAgIHJldHVy
biA6OmdsSXNQcm9ncmFtKHByb2dyYW0pOwogfQogCi1ib29sIEdyYXBoaWNzQ29udGV4dDNEOjpp
c1JlbmRlcmJ1ZmZlcihQbGF0Zm9ybTNET2JqZWN0IHJlbmRlcmJ1ZmZlcikKK0dDM0Rib29sZWFu
IEdyYXBoaWNzQ29udGV4dDNEOjppc1JlbmRlcmJ1ZmZlcihQbGF0Zm9ybTNET2JqZWN0IHJlbmRl
cmJ1ZmZlcikKIHsKICAgICBpZiAoIXJlbmRlcmJ1ZmZlcikKLSAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICByZXR1cm4gR0xfRkFMU0U7CiAKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsK
LSAgICByZXR1cm4gOjpnbElzUmVuZGVyYnVmZmVyRVhUKChHTHVpbnQpIHJlbmRlcmJ1ZmZlcik7
CisgICAgcmV0dXJuIDo6Z2xJc1JlbmRlcmJ1ZmZlckVYVChyZW5kZXJidWZmZXIpOwogfQogCi1i
b29sIEdyYXBoaWNzQ29udGV4dDNEOjppc1NoYWRlcihQbGF0Zm9ybTNET2JqZWN0IHNoYWRlcikK
K0dDM0Rib29sZWFuIEdyYXBoaWNzQ29udGV4dDNEOjppc1NoYWRlcihQbGF0Zm9ybTNET2JqZWN0
IHNoYWRlcikKIHsKICAgICBpZiAoIXNoYWRlcikKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICByZXR1cm4gR0xfRkFMU0U7CiAKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICBy
ZXR1cm4gOjpnbElzU2hhZGVyKChHTHVpbnQpIHNoYWRlcik7CisgICAgcmV0dXJuIDo6Z2xJc1No
YWRlcihzaGFkZXIpOwogfQogCi1ib29sIEdyYXBoaWNzQ29udGV4dDNEOjppc1RleHR1cmUoUGxh
dGZvcm0zRE9iamVjdCB0ZXh0dXJlKQorR0MzRGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0M0Q6Omlz
VGV4dHVyZShQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmUpCiB7CiAgICAgaWYgKCF0ZXh0dXJlKQot
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBHTF9GQUxTRTsKIAogICAgIG1h
a2VDb250ZXh0Q3VycmVudCgpOwotICAgIHJldHVybiA6OmdsSXNUZXh0dXJlKChHTHVpbnQpIHRl
eHR1cmUpOworICAgIHJldHVybiA6OmdsSXNUZXh0dXJlKHRleHR1cmUpOwogfQogCi12b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjpsaW5lV2lkdGgoZG91YmxlIHdpZHRoKQordm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6bGluZVdpZHRoKEdDM0RmbG9hdCB3aWR0aCkKIHsKICAgICBtYWtlQ29udGV4dEN1
cnJlbnQoKTsKLSAgICA6OmdsTGluZVdpZHRoKHN0YXRpY19jYXN0PGZsb2F0Pih3aWR0aCkpOwor
ICAgIDo6Z2xMaW5lV2lkdGgod2lkdGgpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjps
aW5rUHJvZ3JhbShQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0pCiB7CiAgICAgQVNTRVJUKHByb2dy
YW0pOwogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xMaW5rUHJvZ3JhbSgoR0x1
aW50KSBwcm9ncmFtKTsKKyAgICA6OmdsTGlua1Byb2dyYW0ocHJvZ3JhbSk7CiB9CiAKLXZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OnBpeGVsU3RvcmVpKHVuc2lnbmVkIGxvbmcgcG5hbWUsIGxvbmcg
cGFyYW0pCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpwaXhlbFN0b3JlaShHQzNEZW51bSBwbmFt
ZSwgR0MzRGludCBwYXJhbSkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICA6Omds
UGl4ZWxTdG9yZWkocG5hbWUsIHBhcmFtKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
cG9seWdvbk9mZnNldChkb3VibGUgZmFjdG9yLCBkb3VibGUgdW5pdHMpCit2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjpwb2x5Z29uT2Zmc2V0KEdDM0RmbG9hdCBmYWN0b3IsIEdDM0RmbG9hdCB1bml0
cykKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6OmdsUG9seWdvbk9mZnNldChz
dGF0aWNfY2FzdDxmbG9hdD4oZmFjdG9yKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHVuaXRzKSk7Cisg
ICAgOjpnbFBvbHlnb25PZmZzZXQoZmFjdG9yLCB1bml0cyk7CiB9CiAKLXZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OnJlYWRQaXhlbHMobG9uZyB4LCBsb25nIHksIHVuc2lnbmVkIGxvbmcgd2lkdGgs
IHVuc2lnbmVkIGxvbmcgaGVpZ2h0LCB1bnNpZ25lZCBsb25nIGZvcm1hdCwgdW5zaWduZWQgbG9u
ZyB0eXBlLCB2b2lkKiBkYXRhKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cmVhZFBpeGVscyhH
QzNEaW50IHgsIEdDM0RpbnQgeSwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBH
QzNEZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUsIHZvaWQqIGRhdGEpCiB7CiAgICAgLy8gRklY
TUU6IHJlbW92ZSB0aGUgdHdvIGdsRmx1c2ggY2FsbHMgd2hlbiB0aGUgZHJpdmVyIGJ1ZyBpcyBm
aXhlZCwgaS5lLiwKICAgICAvLyBhbGwgcHJldmlvdXMgcmVuZGVyaW5nIGNhbGxzIHNob3VsZCBi
ZSBkb25lIGJlZm9yZSByZWFkaW5nIHBpeGVscy4KQEAgLTgxNSw3ICs4MTUsNyBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjpyZWxlYXNlU2hhZGVyQ29tCiAgICAgLy86OmdsUmVsZWFzZVNoYWRl
ckNvbXBpbGVyKCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnJlbmRlcmJ1ZmZlclN0
b3JhZ2UodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQs
IHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0KQordm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6cmVuZGVyYnVmZmVyU3RvcmFnZShHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVt
IGludGVybmFsZm9ybWF0LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQpCiB7CiAg
ICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgc3dpdGNoIChpbnRlcm5hbGZvcm1hdCkgewpA
QCAtODM2LDEzICs4MzYsMTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cmVuZGVyYnVmZmVy
U3RvcgogICAgIDo6Z2xSZW5kZXJidWZmZXJTdG9yYWdlRVhUKHRhcmdldCwgaW50ZXJuYWxmb3Jt
YXQsIHdpZHRoLCBoZWlnaHQpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpzYW1wbGVD
b3ZlcmFnZShkb3VibGUgdmFsdWUsIGJvb2wgaW52ZXJ0KQordm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6c2FtcGxlQ292ZXJhZ2UoR0MzRGNsYW1wZiB2YWx1ZSwgR0MzRGJvb2xlYW4gaW52ZXJ0KQog
ewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xTYW1wbGVDb3ZlcmFnZShzdGF0
aWNfY2FzdDxmbG9hdD4odmFsdWUpLCBpbnZlcnQpOworICAgIDo6Z2xTYW1wbGVDb3ZlcmFnZSh2
YWx1ZSwgaW52ZXJ0KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c2Npc3Nvcihsb25n
IHgsIGxvbmcgeSwgdW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpCit2
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpzY2lzc29yKEdDM0RpbnQgeCwgR0MzRGludCB5LCBHQzNE
c2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50
KCk7CiAgICAgOjpnbFNjaXNzb3IoeCwgeSwgd2lkdGgsIGhlaWdodCk7CkBAIC04NjEsMTcxICs4
NjEsMTcxIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnNoYWRlclNvdXJjZShQbGEKICAgICBt
X3NoYWRlclNvdXJjZU1hcC5zZXQoc2hhZGVyLCBlbnRyeSk7CiB9CiAKLXZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OnN0ZW5jaWxGdW5jKHVuc2lnbmVkIGxvbmcgZnVuYywgbG9uZyByZWYsIHVuc2ln
bmVkIGxvbmcgbWFzaykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnN0ZW5jaWxGdW5jKEdDM0Rl
bnVtIGZ1bmMsIEdDM0RpbnQgcmVmLCBHQzNEdWludCBtYXNrKQogewogICAgIG1ha2VDb250ZXh0
Q3VycmVudCgpOwogICAgIDo6Z2xTdGVuY2lsRnVuYyhmdW5jLCByZWYsIG1hc2spOwogfQogCi12
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpzdGVuY2lsRnVuY1NlcGFyYXRlKHVuc2lnbmVkIGxvbmcg
ZmFjZSwgdW5zaWduZWQgbG9uZyBmdW5jLCBsb25nIHJlZiwgdW5zaWduZWQgbG9uZyBtYXNrKQor
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c3RlbmNpbEZ1bmNTZXBhcmF0ZShHQzNEZW51bSBmYWNl
LCBHQzNEZW51bSBmdW5jLCBHQzNEaW50IHJlZiwgR0MzRHVpbnQgbWFzaykKIHsKICAgICBtYWtl
Q29udGV4dEN1cnJlbnQoKTsKICAgICA6OmdsU3RlbmNpbEZ1bmNTZXBhcmF0ZShmYWNlLCBmdW5j
LCByZWYsIG1hc2spOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpzdGVuY2lsTWFzayh1
bnNpZ25lZCBsb25nIG1hc2spCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpzdGVuY2lsTWFzayhH
QzNEdWludCBtYXNrKQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIDo6Z2xTdGVu
Y2lsTWFzayhtYXNrKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c3RlbmNpbE1hc2tT
ZXBhcmF0ZSh1bnNpZ25lZCBsb25nIGZhY2UsIHVuc2lnbmVkIGxvbmcgbWFzaykKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0M0Q6OnN0ZW5jaWxNYXNrU2VwYXJhdGUoR0MzRGVudW0gZmFjZSwgR0MzRHVp
bnQgbWFzaykKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICA6OmdsU3RlbmNpbE1h
c2tTZXBhcmF0ZShmYWNlLCBtYXNrKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c3Rl
bmNpbE9wKHVuc2lnbmVkIGxvbmcgZmFpbCwgdW5zaWduZWQgbG9uZyB6ZmFpbCwgdW5zaWduZWQg
bG9uZyB6cGFzcykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnN0ZW5jaWxPcChHQzNEZW51bSBm
YWlsLCBHQzNEZW51bSB6ZmFpbCwgR0MzRGVudW0genBhc3MpCiB7CiAgICAgbWFrZUNvbnRleHRD
dXJyZW50KCk7CiAgICAgOjpnbFN0ZW5jaWxPcChmYWlsLCB6ZmFpbCwgenBhc3MpOwogfQogCi12
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpzdGVuY2lsT3BTZXBhcmF0ZSh1bnNpZ25lZCBsb25nIGZh
Y2UsIHVuc2lnbmVkIGxvbmcgZmFpbCwgdW5zaWduZWQgbG9uZyB6ZmFpbCwgdW5zaWduZWQgbG9u
ZyB6cGFzcykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnN0ZW5jaWxPcFNlcGFyYXRlKEdDM0Rl
bnVtIGZhY2UsIEdDM0RlbnVtIGZhaWwsIEdDM0RlbnVtIHpmYWlsLCBHQzNEZW51bSB6cGFzcykK
IHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICA6OmdsU3RlbmNpbE9wU2VwYXJhdGUo
ZmFjZSwgZmFpbCwgemZhaWwsIHpwYXNzKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
dGV4UGFyYW1ldGVyZih1bnNpZ25lZCB0YXJnZXQsIHVuc2lnbmVkIHBuYW1lLCBmbG9hdCB2YWx1
ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnRleFBhcmFtZXRlcmYoR0MzRGVudW0gdGFyZ2V0
LCBHQzNEZW51bSBwbmFtZSwgR0MzRGZsb2F0IHZhbHVlKQogewogICAgIG1ha2VDb250ZXh0Q3Vy
cmVudCgpOwotICAgIDo6Z2xUZXhQYXJhbWV0ZXJmKHRhcmdldCwgcG5hbWUsIHN0YXRpY19jYXN0
PGZsb2F0Pih2YWx1ZSkpOworICAgIDo6Z2xUZXhQYXJhbWV0ZXJmKHRhcmdldCwgcG5hbWUsIHZh
bHVlKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dGV4UGFyYW1ldGVyaSh1bnNpZ25l
ZCB0YXJnZXQsIHVuc2lnbmVkIHBuYW1lLCBpbnQgdmFsdWUpCit2b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjp0ZXhQYXJhbWV0ZXJpKEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gcG5hbWUsIEdDM0Rp
bnQgdmFsdWUpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbFRleFBhcmFt
ZXRlcmkodGFyZ2V0LCBwbmFtZSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHZhbHVlKSk7CisgICAgOjpn
bFRleFBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSwgdmFsdWUpOwogfQogCi12b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjp1bmlmb3JtMWYobG9uZyBsb2NhdGlvbiwgZmxvYXQgdjApCit2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjp1bmlmb3JtMWYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGZsb2F0IHYwKQog
ewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIDo6Z2xVbmlmb3JtMWYobG9jYXRpb24s
IHYwKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTFmdihsb25nIGxvY2F0
aW9uLCBmbG9hdCogYXJyYXksIGludCBzaXplKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5p
Zm9ybTFmdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQqIGFycmF5LCBHQzNEc2l6ZWkgc2l6
ZSkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICA6OmdsVW5pZm9ybTFmdihsb2Nh
dGlvbiwgc2l6ZSwgYXJyYXkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3Jt
MmYobG9uZyBsb2NhdGlvbiwgZmxvYXQgdjAsIGZsb2F0IHYxKQordm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6dW5pZm9ybTJmKEdDM0RpbnQgbG9jYXRpb24sIEdDM0RmbG9hdCB2MCwgR0MzRGZsb2F0
IHYxKQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIDo6Z2xVbmlmb3JtMmYobG9j
YXRpb24sIHYwLCB2MSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0yZnYo
bG9uZyBsb2NhdGlvbiwgZmxvYXQqIGFycmF5LCBpbnQgc2l6ZSkKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0M0Q6OnVuaWZvcm0yZnYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGZsb2F0KiBhcnJheSwgR0Mz
RHNpemVpIHNpemUpCiB7CiAgICAgLy8gRklYTUU6IGxlbmd0aCBuZWVkcyB0byBiZSBhIG11bHRp
cGxlIG9mIDIKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICA6OmdsVW5pZm9ybTJmdihs
b2NhdGlvbiwgc2l6ZSwgYXJyYXkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlm
b3JtM2YobG9uZyBsb2NhdGlvbiwgZmxvYXQgdjAsIGZsb2F0IHYxLCBmbG9hdCB2MikKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0zZihHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQg
djAsIEdDM0RmbG9hdCB2MSwgR0MzRGZsb2F0IHYyKQogewogICAgIG1ha2VDb250ZXh0Q3VycmVu
dCgpOwogICAgIDo6Z2xVbmlmb3JtM2YobG9jYXRpb24sIHYwLCB2MSwgdjIpOwogfQogCi12b2lk
IEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtM2Z2KGxvbmcgbG9jYXRpb24sIGZsb2F0KiBhcnJh
eSwgaW50IHNpemUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtM2Z2KEdDM0RpbnQg
bG9jYXRpb24sIEdDM0RmbG9hdCogYXJyYXksIEdDM0RzaXplaSBzaXplKQogewogICAgIC8vIEZJ
WE1FOiBsZW5ndGggbmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiAzCiAgICAgbWFrZUNvbnRleHRD
dXJyZW50KCk7CiAgICAgOjpnbFVuaWZvcm0zZnYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKIH0K
IAotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTRmKGxvbmcgbG9jYXRpb24sIGZsb2F0
IHYwLCBmbG9hdCB2MSwgZmxvYXQgdjIsIGZsb2F0IHYzKQordm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6dW5pZm9ybTRmKEdDM0RpbnQgbG9jYXRpb24sIEdDM0RmbG9hdCB2MCwgR0MzRGZsb2F0IHYx
LCBHQzNEZmxvYXQgdjIsIEdDM0RmbG9hdCB2MykKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQo
KTsKICAgICA6OmdsVW5pZm9ybTRmKGxvY2F0aW9uLCB2MCwgdjEsIHYyLCB2Myk7CiB9CiAKLXZv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm00ZnYobG9uZyBsb2NhdGlvbiwgZmxvYXQqIGFy
cmF5LCBpbnQgc2l6ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm00ZnYoR0MzRGlu
dCBsb2NhdGlvbiwgR0MzRGZsb2F0KiBhcnJheSwgR0MzRHNpemVpIHNpemUpCiB7CiAgICAgLy8g
RklYTUU6IGxlbmd0aCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDQKICAgICBtYWtlQ29udGV4
dEN1cnJlbnQoKTsKICAgICA6OmdsVW5pZm9ybTRmdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOwog
fQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMWkobG9uZyBsb2NhdGlvbiwgaW50
IHYwKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTFpKEdDM0RpbnQgbG9jYXRpb24s
IEdDM0RpbnQgdjApCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgOjpnbFVuaWZv
cm0xaShsb2NhdGlvbiwgdjApOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3Jt
MWl2KGxvbmcgbG9jYXRpb24sIGludCogYXJyYXksIGludCBzaXplKQordm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6dW5pZm9ybTFpdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEaW50KiBhcnJheSwgR0Mz
RHNpemVpIHNpemUpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgOjpnbFVuaWZv
cm0xaXYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6dW5pZm9ybTJpKGxvbmcgbG9jYXRpb24sIGludCB2MCwgaW50IHYxKQordm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6dW5pZm9ybTJpKEdDM0RpbnQgbG9jYXRpb24sIEdDM0RpbnQgdjAsIEdDM0Rp
bnQgdjEpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgOjpnbFVuaWZvcm0yaShs
b2NhdGlvbiwgdjAsIHYxKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTJp
dihsb25nIGxvY2F0aW9uLCBpbnQqIGFycmF5LCBpbnQgc2l6ZSkKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0M0Q6OnVuaWZvcm0yaXYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGludCogYXJyYXksIEdDM0Rz
aXplaSBzaXplKQogewogICAgIC8vIEZJWE1FOiBsZW5ndGggbmVlZHMgdG8gYmUgYSBtdWx0aXBs
ZSBvZiAyCiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgOjpnbFVuaWZvcm0yaXYobG9j
YXRpb24sIHNpemUsIGFycmF5KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9y
bTNpKGxvbmcgbG9jYXRpb24sIGludCB2MCwgaW50IHYxLCBpbnQgdjIpCit2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjp1bmlmb3JtM2koR0MzRGludCBsb2NhdGlvbiwgR0MzRGludCB2MCwgR0MzRGlu
dCB2MSwgR0MzRGludCB2MikKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICA6Omds
VW5pZm9ybTNpKGxvY2F0aW9uLCB2MCwgdjEsIHYyKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6dW5pZm9ybTNpdihsb25nIGxvY2F0aW9uLCBpbnQqIGFycmF5LCBpbnQgc2l6ZSkKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0zaXYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGlu
dCogYXJyYXksIEdDM0RzaXplaSBzaXplKQogewogICAgIC8vIEZJWE1FOiBsZW5ndGggbmVlZHMg
dG8gYmUgYSBtdWx0aXBsZSBvZiAzCiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgOjpn
bFVuaWZvcm0zaXYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKIH0KIAotdm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6dW5pZm9ybTRpKGxvbmcgbG9jYXRpb24sIGludCB2MCwgaW50IHYxLCBpbnQgdjIs
IGludCB2MykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm00aShHQzNEaW50IGxvY2F0
aW9uLCBHQzNEaW50IHYwLCBHQzNEaW50IHYxLCBHQzNEaW50IHYyLCBHQzNEaW50IHYzKQogewog
ICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIDo6Z2xVbmlmb3JtNGkobG9jYXRpb24sIHYw
LCB2MSwgdjIsIHYzKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTRpdihs
b25nIGxvY2F0aW9uLCBpbnQqIGFycmF5LCBpbnQgc2l6ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OnVuaWZvcm00aXYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGludCogYXJyYXksIEdDM0RzaXpl
aSBzaXplKQogewogICAgIC8vIEZJWE1FOiBsZW5ndGggbmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBv
ZiA0CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgOjpnbFVuaWZvcm00aXYobG9jYXRp
b24sIHNpemUsIGFycmF5KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybU1h
dHJpeDJmdihsb25nIGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgZmxvYXQqIGFycmF5LCBpbnQg
c2l6ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm1NYXRyaXgyZnYoR0MzRGludCBs
b2NhdGlvbiwgR0MzRGJvb2xlYW4gdHJhbnNwb3NlLCBHQzNEZmxvYXQqIGFycmF5LCBHQzNEc2l6
ZWkgc2l6ZSkKIHsKICAgICAvLyBGSVhNRTogbGVuZ3RoIG5lZWRzIHRvIGJlIGEgbXVsdGlwbGUg
b2YgNAogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIDo6Z2xVbmlmb3JtTWF0cml4MmZ2
KGxvY2F0aW9uLCBzaXplLCB0cmFuc3Bvc2UsIGFycmF5KTsKIH0KIAotdm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6dW5pZm9ybU1hdHJpeDNmdihsb25nIGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwg
ZmxvYXQqIGFycmF5LCBpbnQgc2l6ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm1N
YXRyaXgzZnYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGJvb2xlYW4gdHJhbnNwb3NlLCBHQzNEZmxv
YXQqIGFycmF5LCBHQzNEc2l6ZWkgc2l6ZSkKIHsKICAgICAvLyBGSVhNRTogbGVuZ3RoIG5lZWRz
IHRvIGJlIGEgbXVsdGlwbGUgb2YgOQogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIDo6
Z2xVbmlmb3JtTWF0cml4M2Z2KGxvY2F0aW9uLCBzaXplLCB0cmFuc3Bvc2UsIGFycmF5KTsKIH0K
IAotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybU1hdHJpeDRmdihsb25nIGxvY2F0aW9u
LCBib29sIHRyYW5zcG9zZSwgZmxvYXQqIGFycmF5LCBpbnQgc2l6ZSkKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OnVuaWZvcm1NYXRyaXg0ZnYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGJvb2xlYW4g
dHJhbnNwb3NlLCBHQzNEZmxvYXQqIGFycmF5LCBHQzNEc2l6ZWkgc2l6ZSkKIHsKICAgICAvLyBG
SVhNRTogbGVuZ3RoIG5lZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2YgMTYKICAgICBtYWtlQ29udGV4
dEN1cnJlbnQoKTsKQEAgLTEwMzUsNyArMTAzNSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6
OnVuaWZvcm1NYXRyaXg0ZnYKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVzZVByb2dyYW0oUGxh
dGZvcm0zRE9iamVjdCBwcm9ncmFtKQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAg
IDo6Z2xVc2VQcm9ncmFtKChHTHVpbnQpIHByb2dyYW0pOworICAgIDo6Z2xVc2VQcm9ncmFtKHBy
b2dyYW0pOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2YWxpZGF0ZVByb2dyYW0oUGxh
dGZvcm0zRE9iamVjdCBwcm9ncmFtKQpAQCAtMTA0Myw4OCArMTA0Myw4OCBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjp2YWxpZGF0ZVByb2dyYW0oCiAgICAgQVNTRVJUKHByb2dyYW0pOwogCiAg
ICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbFZhbGlkYXRlUHJvZ3JhbSgoR0x1aW50
KSBwcm9ncmFtKTsKKyAgICA6OmdsVmFsaWRhdGVQcm9ncmFtKHByb2dyYW0pOwogfQogCi12b2lk
IEdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIxZih1bnNpZ25lZCBsb25nIGluZHgsIGZs
b2F0IHYwKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliMWYoR0MzRHVpbnQg
aW5kZXgsIEdDM0RmbG9hdCB2MCkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6
OmdsVmVydGV4QXR0cmliMWYoaW5keCwgdjApOworICAgIDo6Z2xWZXJ0ZXhBdHRyaWIxZihpbmRl
eCwgdjApOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIxZnYodW5z
aWduZWQgbG9uZyBpbmR4LCBmbG9hdCogYXJyYXkpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2
ZXJ0ZXhBdHRyaWIxZnYoR0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCogYXJyYXkpCiB7CiAgICAg
bWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbFZlcnRleEF0dHJpYjFmdihpbmR4LCBhcnJh
eSk7CisgICAgOjpnbFZlcnRleEF0dHJpYjFmdihpbmRleCwgYXJyYXkpOwogfQogCi12b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIyZih1bnNpZ25lZCBsb25nIGluZHgsIGZsb2F0
IHYwLCBmbG9hdCB2MSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjJmKEdD
M0R1aW50IGluZGV4LCBHQzNEZmxvYXQgdjAsIEdDM0RmbG9hdCB2MSkKIHsKICAgICBtYWtlQ29u
dGV4dEN1cnJlbnQoKTsKLSAgICA6OmdsVmVydGV4QXR0cmliMmYoaW5keCwgdjAsIHYxKTsKKyAg
ICA6OmdsVmVydGV4QXR0cmliMmYoaW5kZXgsIHYwLCB2MSk7CiB9CiAKLXZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OnZlcnRleEF0dHJpYjJmdih1bnNpZ25lZCBsb25nIGluZHgsIGZsb2F0KiBhcnJh
eSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjJmdihHQzNEdWludCBpbmRl
eCwgR0MzRGZsb2F0KiBhcnJheSkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6
OmdsVmVydGV4QXR0cmliMmZ2KGluZHgsIGFycmF5KTsKKyAgICA6OmdsVmVydGV4QXR0cmliMmZ2
KGluZGV4LCBhcnJheSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJp
YjNmKHVuc2lnbmVkIGxvbmcgaW5keCwgZmxvYXQgdjAsIGZsb2F0IHYxLCBmbG9hdCB2MikKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjNmKEdDM0R1aW50IGluZGV4LCBHQzNE
ZmxvYXQgdjAsIEdDM0RmbG9hdCB2MSwgR0MzRGZsb2F0IHYyKQogewogICAgIG1ha2VDb250ZXh0
Q3VycmVudCgpOwotICAgIDo6Z2xWZXJ0ZXhBdHRyaWIzZihpbmR4LCB2MCwgdjEsIHYyKTsKKyAg
ICA6OmdsVmVydGV4QXR0cmliM2YoaW5kZXgsIHYwLCB2MSwgdjIpOwogfQogCi12b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIzZnYodW5zaWduZWQgbG9uZyBpbmR4LCBmbG9hdCog
YXJyYXkpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIzZnYoR0MzRHVpbnQg
aW5kZXgsIEdDM0RmbG9hdCogYXJyYXkpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0g
ICAgOjpnbFZlcnRleEF0dHJpYjNmdihpbmR4LCBhcnJheSk7CisgICAgOjpnbFZlcnRleEF0dHJp
YjNmdihpbmRleCwgYXJyYXkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhB
dHRyaWI0Zih1bnNpZ25lZCBsb25nIGluZHgsIGZsb2F0IHYwLCBmbG9hdCB2MSwgZmxvYXQgdjIs
IGZsb2F0IHYzKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliNGYoR0MzRHVp
bnQgaW5kZXgsIEdDM0RmbG9hdCB2MCwgR0MzRGZsb2F0IHYxLCBHQzNEZmxvYXQgdjIsIEdDM0Rm
bG9hdCB2MykKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6OmdsVmVydGV4QXR0
cmliNGYoaW5keCwgdjAsIHYxLCB2MiwgdjMpOworICAgIDo6Z2xWZXJ0ZXhBdHRyaWI0ZihpbmRl
eCwgdjAsIHYxLCB2MiwgdjMpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhB
dHRyaWI0ZnYodW5zaWduZWQgbG9uZyBpbmR4LCBmbG9hdCogYXJyYXkpCit2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWI0ZnYoR0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCogYXJy
YXkpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbFZlcnRleEF0dHJpYjRm
dihpbmR4LCBhcnJheSk7CisgICAgOjpnbFZlcnRleEF0dHJpYjRmdihpbmRleCwgYXJyYXkpOwog
fQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWJQb2ludGVyKHVuc2lnbmVk
IGxvbmcgaW5keCwgaW50IHNpemUsIGludCB0eXBlLCBib29sIG5vcm1hbGl6ZWQsIHVuc2lnbmVk
IGxvbmcgc3RyaWRlLCB1bnNpZ25lZCBsb25nIG9mZnNldCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OnZlcnRleEF0dHJpYlBvaW50ZXIoR0MzRHVpbnQgaW5kZXgsIEdDM0RpbnQgc2l6ZSwgR0Mz
RGVudW0gdHlwZSwgR0MzRGJvb2xlYW4gbm9ybWFsaXplZCwgR0MzRHNpemVpIHN0cmlkZSwgR0Mz
RGludHB0ciBvZmZzZXQpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbFZl
cnRleEF0dHJpYlBvaW50ZXIoaW5keCwgc2l6ZSwgdHlwZSwgbm9ybWFsaXplZCwgc3RyaWRlLCBy
ZWludGVycHJldF9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4ob2Zmc2V0KSkpOwor
ICAgIDo6Z2xWZXJ0ZXhBdHRyaWJQb2ludGVyKGluZGV4LCBzaXplLCB0eXBlLCBub3JtYWxpemVk
LCBzdHJpZGUsIHJlaW50ZXJwcmV0X2Nhc3Q8R0x2b2lkKj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+
KG9mZnNldCkpKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dmlld3BvcnQobG9uZyB4
LCBsb25nIHksIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0KQordm9p
ZCBHcmFwaGljc0NvbnRleHQzRDo6dmlld3BvcnQoR0MzRGludCB4LCBHQzNEaW50IHksIEdDM0Rz
aXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQo
KTsKLSAgICA6OmdsVmlld3BvcnQoc3RhdGljX2Nhc3Q8R0xpbnQ+KHgpLCBzdGF0aWNfY2FzdDxH
TGludD4oeSksIHN0YXRpY19jYXN0PEdMc2l6ZWk+KHdpZHRoKSwgc3RhdGljX2Nhc3Q8R0xzaXpl
aT4oaGVpZ2h0KSk7CisgICAgOjpnbFZpZXdwb3J0KHgsIHksIHdpZHRoLCBoZWlnaHQpOwogfQog
Ci12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRCb29sZWFudih1bnNpZ25lZCBsb25nIHBuYW1l
LCB1bnNpZ25lZCBjaGFyKiB2YWx1ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEJvb2xl
YW52KEdDM0RlbnVtIHBuYW1lLCBHQzNEYm9vbGVhbiogdmFsdWUpCiB7CiAgICAgbWFrZUNvbnRl
eHRDdXJyZW50KCk7CiAgICAgOjpnbEdldEJvb2xlYW52KHBuYW1lLCB2YWx1ZSk7CiB9CiAKLXZv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEJ1ZmZlclBhcmFtZXRlcml2KHVuc2lnbmVkIGxvbmcg
dGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lLCBpbnQqIHZhbHVlKQordm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6Z2V0QnVmZmVyUGFyYW1ldGVyaXYoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBw
bmFtZSwgR0MzRGludCogdmFsdWUpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAg
OjpnbEdldEJ1ZmZlclBhcmFtZXRlcml2KHRhcmdldCwgcG5hbWUsIHZhbHVlKTsKIH0KIAotdm9p
ZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0RmxvYXR2KHVuc2lnbmVkIGxvbmcgcG5hbWUsIGZsb2F0
KiB2YWx1ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEZsb2F0dihHQzNEZW51bSBwbmFt
ZSwgR0MzRGZsb2F0KiB2YWx1ZSkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICA6
OmdsR2V0RmxvYXR2KHBuYW1lLCB2YWx1ZSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6
OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0
LCB1bnNpZ25lZCBsb25nIGF0dGFjaG1lbnQsIHVuc2lnbmVkIGxvbmcgcG5hbWUsIGludCogdmFs
dWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJh
bWV0ZXJpdihHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIGF0dGFjaG1lbnQsIEdDM0RlbnVtIHBu
YW1lLCBHQzNEaW50KiB2YWx1ZSkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBp
ZiAoYXR0YWNobWVudCA9PSBERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQpCkBAIC0xMTMyLDcgKzEx
MzIsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRGcmFtZWJ1ZmZlckF0CiAgICAgOjpn
bEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2RVhUKHRhcmdldCwgYXR0YWNobWVu
dCwgcG5hbWUsIHZhbHVlKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0SW50ZWdl
cnYodW5zaWduZWQgbG9uZyBwbmFtZSwgaW50KiB2YWx1ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OmdldEludGVnZXJ2KEdDM0RlbnVtIHBuYW1lLCBHQzNEaW50KiB2YWx1ZSkKIHsKICAgICAv
LyBOZWVkIHRvIGVtdWxhdGUgTUFYX0ZSQUdNRU5UL1ZFUlRFWF9VTklGT1JNX1ZFQ1RPUlMgYW5k
IE1BWF9WQVJZSU5HX1ZFQ1RPUlMKICAgICAvLyBiZWNhdXNlIGRlc2t0b3AgR0wncyBjb3JyZXNw
b25kaW5nIHF1ZXJpZXMgcmV0dXJuIHRoZSBudW1iZXIgb2YgY29tcG9uZW50cwpAQCAtMTE1Nywx
MCArMTE1NywxMCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRJbnRlZ2Vydih1bnNpCiAg
ICAgfQogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRQcm9ncmFtaXYoUGxhdGZvcm0z
RE9iamVjdCBwcm9ncmFtLCB1bnNpZ25lZCBsb25nIHBuYW1lLCBpbnQqIHZhbHVlKQordm9pZCBH
cmFwaGljc0NvbnRleHQzRDo6Z2V0UHJvZ3JhbWl2KFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwg
R0MzRGVudW0gcG5hbWUsIEdDM0RpbnQqIHZhbHVlKQogewogICAgIG1ha2VDb250ZXh0Q3VycmVu
dCgpOwotICAgIDo6Z2xHZXRQcm9ncmFtaXYoKEdMdWludCkgcHJvZ3JhbSwgcG5hbWUsIHZhbHVl
KTsKKyAgICA6OmdsR2V0UHJvZ3JhbWl2KHByb2dyYW0sIHBuYW1lLCB2YWx1ZSk7CiB9CiAKIFN0
cmluZyBHcmFwaGljc0NvbnRleHQzRDo6Z2V0UHJvZ3JhbUluZm9Mb2coUGxhdGZvcm0zRE9iamVj
dCBwcm9ncmFtKQpAQCAtMTE2OSwyNiArMTE2OSwyNiBAQCBTdHJpbmcgR3JhcGhpY3NDb250ZXh0
M0Q6OmdldFByb2dyYW1JbmZvCiAKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBHTGlu
dCBsZW5ndGg7Ci0gICAgOjpnbEdldFByb2dyYW1pdigoR0x1aW50KSBwcm9ncmFtLCBHTF9JTkZP
X0xPR19MRU5HVEgsICZsZW5ndGgpOworICAgIDo6Z2xHZXRQcm9ncmFtaXYocHJvZ3JhbSwgR0xf
SU5GT19MT0dfTEVOR1RILCAmbGVuZ3RoKTsKICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0
dXJuICIiOwogCiAgICAgR0xzaXplaSBzaXplOwogICAgIEdMY2hhciogaW5mbyA9IChHTGNoYXIq
KSBmYXN0TWFsbG9jKGxlbmd0aCk7CiAKLSAgICA6OmdsR2V0UHJvZ3JhbUluZm9Mb2coKEdMdWlu
dCkgcHJvZ3JhbSwgbGVuZ3RoLCAmc2l6ZSwgaW5mbyk7CisgICAgOjpnbEdldFByb2dyYW1JbmZv
TG9nKHByb2dyYW0sIGxlbmd0aCwgJnNpemUsIGluZm8pOwogICAgIFN0cmluZyBzKGluZm8pOwog
ICAgIGZhc3RGcmVlKGluZm8pOwogICAgIHJldHVybiBzOwogfQogCi12b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdih1bnNpZ25lZCBsb25nIHRhcmdldCwg
dW5zaWduZWQgbG9uZyBwbmFtZSwgaW50KiB2YWx1ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6
OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gcG5h
bWUsIEdDM0RpbnQqIHZhbHVlKQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIDo6
Z2xHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdkVYVCh0YXJnZXQsIHBuYW1lLCB2YWx1ZSk7CiB9
CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFNoYWRlcml2KFBsYXRmb3JtM0RPYmplY3Qg
c2hhZGVyLCB1bnNpZ25lZCBsb25nIHBuYW1lLCBpbnQqIHZhbHVlKQordm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6Z2V0U2hhZGVyaXYoUGxhdGZvcm0zRE9iamVjdCBzaGFkZXIsIEdDM0RlbnVtIHBu
YW1lLCBHQzNEaW50KiB2YWx1ZSkKIHsKICAgICBBU1NFUlQoc2hhZGVyKTsKIApAQCAtMTIwMSw3
ICsxMjAxLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0U2hhZGVyaXYoUGxhdAogICAg
ICAgICBjYXNlIFNIQURFUl9UWVBFOgogICAgICAgICAgICAgLy8gTGV0IE9wZW5HTCBoYW5kbGUg
dGhlc2UuCiAgICAgICAgIAotICAgICAgICAgICAgOjpnbEdldFNoYWRlcml2KChHTHVpbnQpIHNo
YWRlciwgcG5hbWUsIHZhbHVlKTsKKyAgICAgICAgICAgIDo6Z2xHZXRTaGFkZXJpdihzaGFkZXIs
IHBuYW1lLCB2YWx1ZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgCiAgICAgICAgIGNh
c2UgQ09NUElMRV9TVEFUVVM6CkBAIC0xMjQ2LDE0ICsxMjQ2LDE0IEBAIFN0cmluZyBHcmFwaGlj
c0NvbnRleHQzRDo6Z2V0U2hhZGVySW5mb0wKIAogICAgICBpZiAoZW50cnkuaXNWYWxpZCkgewog
ICAgICAgICAgR0xpbnQgbGVuZ3RoOwotICAgICAgICAgOjpnbEdldFNoYWRlcml2KChHTHVpbnQp
IHNoYWRlciwgR0xfSU5GT19MT0dfTEVOR1RILCAmbGVuZ3RoKTsKKyAgICAgICAgIDo6Z2xHZXRT
aGFkZXJpdihzaGFkZXIsIEdMX0lORk9fTE9HX0xFTkdUSCwgJmxlbmd0aCk7CiAgICAgICAgICBp
ZiAoIWxlbmd0aCkKICAgICAgICAgICAgICByZXR1cm4gIiI7CiAKICAgICAgICAgIEdMc2l6ZWkg
c2l6ZTsKICAgICAgICAgIEdMY2hhciogaW5mbyA9IChHTGNoYXIqKSBmYXN0TWFsbG9jKGxlbmd0
aCk7CiAKLSAgICAgICAgIDo6Z2xHZXRTaGFkZXJJbmZvTG9nKChHTHVpbnQpIHNoYWRlciwgbGVu
Z3RoLCAmc2l6ZSwgaW5mbyk7CisgICAgICAgICA6OmdsR2V0U2hhZGVySW5mb0xvZyhzaGFkZXIs
IGxlbmd0aCwgJnNpemUsIGluZm8pOwogCiAgICAgICAgICBTdHJpbmcgcyhpbmZvKTsKICAgICAg
ICAgIGZhc3RGcmVlKGluZm8pOwpAQCAtMTI3Nyw2NyArMTI3Nyw2NyBAQCBTdHJpbmcgR3JhcGhp
Y3NDb250ZXh0M0Q6OmdldFNoYWRlclNvdXJjCiB9CiAKIAotdm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6Z2V0VGV4UGFyYW1ldGVyZnYodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcg
cG5hbWUsIGZsb2F0KiB2YWx1ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFRleFBhcmFt
ZXRlcmZ2KEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gcG5hbWUsIEdDM0RmbG9hdCogdmFsdWUp
CiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgOjpnbEdldFRleFBhcmFtZXRlcmZ2
KHRhcmdldCwgcG5hbWUsIHZhbHVlKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0
VGV4UGFyYW1ldGVyaXYodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUs
IGludCogdmFsdWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRUZXhQYXJhbWV0ZXJpdihH
QzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIHBuYW1lLCBHQzNEaW50KiB2YWx1ZSkKIHsKICAgICBt
YWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICA6OmdsR2V0VGV4UGFyYW1ldGVyaXYodGFyZ2V0LCBw
bmFtZSwgdmFsdWUpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRVbmlmb3JtZnYo
UGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBsb25nIGxvY2F0aW9uLCBmbG9hdCogdmFsdWUpCit2
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRVbmlmb3JtZnYoUGxhdGZvcm0zRE9iamVjdCBwcm9n
cmFtLCBHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQqIHZhbHVlKQogewogICAgIG1ha2VDb250
ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xHZXRVbmlmb3JtZnYoKEdMdWludCkgcHJvZ3JhbSwgbG9j
YXRpb24sIHZhbHVlKTsKKyAgICA6OmdsR2V0VW5pZm9ybWZ2KHByb2dyYW0sIGxvY2F0aW9uLCB2
YWx1ZSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFVuaWZvcm1pdihQbGF0Zm9y
bTNET2JqZWN0IHByb2dyYW0sIGxvbmcgbG9jYXRpb24sIGludCogdmFsdWUpCit2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjpnZXRVbmlmb3JtaXYoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBHQzNE
aW50IGxvY2F0aW9uLCBHQzNEaW50KiB2YWx1ZSkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQo
KTsKLSAgICA6OmdsR2V0VW5pZm9ybWl2KChHTHVpbnQpIHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1
ZSk7CisgICAgOjpnbEdldFVuaWZvcm1pdihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUpOwogfQog
Ci1sb25nIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRVbmlmb3JtTG9jYXRpb24oUGxhdGZvcm0zRE9i
amVjdCBwcm9ncmFtLCBjb25zdCBTdHJpbmcmIG5hbWUpCitHQzNEaW50IEdyYXBoaWNzQ29udGV4
dDNEOjpnZXRVbmlmb3JtTG9jYXRpb24oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBjb25zdCBT
dHJpbmcmIG5hbWUpCiB7CiAgICAgQVNTRVJUKHByb2dyYW0pOwogCiAgICAgbWFrZUNvbnRleHRD
dXJyZW50KCk7Ci0gICAgcmV0dXJuIDo6Z2xHZXRVbmlmb3JtTG9jYXRpb24oKEdMdWludCkgcHJv
Z3JhbSwgbmFtZS51dGY4KCkuZGF0YSgpKTsKKyAgICByZXR1cm4gOjpnbEdldFVuaWZvcm1Mb2Nh
dGlvbihwcm9ncmFtLCBuYW1lLnV0ZjgoKS5kYXRhKCkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJmdih1bnNpZ25lZCBsb25nIGluZGV4LCB1bnNpZ25lZCBs
b25nIHBuYW1lLCBmbG9hdCogdmFsdWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRWZXJ0
ZXhBdHRyaWJmdihHQzNEdWludCBpbmRleCwgR0MzRGVudW0gcG5hbWUsIEdDM0RmbG9hdCogdmFs
dWUpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgOjpnbEdldFZlcnRleEF0dHJp
YmZ2KGluZGV4LCBwbmFtZSwgdmFsdWUpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpn
ZXRWZXJ0ZXhBdHRyaWJpdih1bnNpZ25lZCBsb25nIGluZGV4LCB1bnNpZ25lZCBsb25nIHBuYW1l
LCBpbnQqIHZhbHVlKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VmVydGV4QXR0cmliaXYo
R0MzRHVpbnQgaW5kZXgsIEdDM0RlbnVtIHBuYW1lLCBHQzNEaW50KiB2YWx1ZSkKIHsKICAgICBt
YWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICA6OmdsR2V0VmVydGV4QXR0cmliaXYoaW5kZXgsIHBu
YW1lLCB2YWx1ZSk7CiB9CiAKLWxvbmcgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFZlcnRleEF0dHJp
Yk9mZnNldCh1bnNpZ25lZCBsb25nIGluZGV4LCB1bnNpZ25lZCBsb25nIHBuYW1lKQorR0MzRHNp
emVpcHRyIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQoR0MzRHVpbnQg
aW5kZXgsIEdDM0RlbnVtIHBuYW1lKQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogCi0g
ICAgdm9pZCogcG9pbnRlcjsKKyAgICBHTHZvaWQqIHBvaW50ZXIgPSAwOwogICAgIDo6Z2xHZXRW
ZXJ0ZXhBdHRyaWJQb2ludGVydihpbmRleCwgcG5hbWUsICZwb2ludGVyKTsKLSAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDxsb25nPihwb2ludGVyKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
R0MzRHNpemVpcHRyPihyZWludGVycHJldF9jYXN0PGludHB0cl90Pihwb2ludGVyKSk7CiB9CiAK
LWludCBHcmFwaGljc0NvbnRleHQzRDo6dGV4SW1hZ2UyRCh1bnNpZ25lZCB0YXJnZXQsIHVuc2ln
bmVkIGxldmVsLCB1bnNpZ25lZCBpbnRlcm5hbGZvcm1hdCwgdW5zaWduZWQgd2lkdGgsIHVuc2ln
bmVkIGhlaWdodCwgdW5zaWduZWQgYm9yZGVyLCB1bnNpZ25lZCBmb3JtYXQsIHVuc2lnbmVkIHR5
cGUsIHZvaWQqIHBpeGVscykKK2Jvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OnRleEltYWdlMkQoR0Mz
RGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEZW51bSBpbnRlcm5hbGZvcm1hdCwgR0Mz
RHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEaW50IGJvcmRlciwgR0MzRGVudW0g
Zm9ybWF0LCBHQzNEZW51bSB0eXBlLCBjb25zdCB2b2lkKiBwaXhlbHMpCiB7CiAgICAgaWYgKHdp
ZHRoICYmIGhlaWdodCAmJiAhcGl4ZWxzKSB7CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKElO
VkFMSURfVkFMVUUpOwotICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICB1bnNpZ25lZCBvcGVuR0xJbnRl
cm5hbEZvcm1hdCA9IGludGVybmFsZm9ybWF0OworICAgIEdDM0RlbnVtIG9wZW5HTEludGVybmFs
Rm9ybWF0ID0gaW50ZXJuYWxmb3JtYXQ7CiAgICAgaWYgKHR5cGUgPT0gR0xfRkxPQVQpIHsKICAg
ICAgICAgaWYgKGZvcm1hdCA9PSBHTF9SR0JBKQogICAgICAgICAgICAgb3BlbkdMSW50ZXJuYWxG
b3JtYXQgPSBHTF9SR0JBMzJGX0FSQjsKQEAgLTEzNDYsOTkgKzEzNDYsOTggQEAgaW50IEdyYXBo
aWNzQ29udGV4dDNEOjp0ZXhJbWFnZTJEKHVuc2lnbgogICAgIH0KIAogICAgIDo6Z2xUZXhJbWFn
ZTJEKHRhcmdldCwgbGV2ZWwsIG9wZW5HTEludGVybmFsRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBi
b3JkZXIsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzKTsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotaW50IEdyYXBoaWNzQ29udGV4dDNEOjp0ZXhTdWJJbWFnZTJEKHVuc2lnbmVk
IHRhcmdldCwgdW5zaWduZWQgbGV2ZWwsIHVuc2lnbmVkIHhvZmYsIHVuc2lnbmVkIHlvZmYsIHVu
c2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQsIHVuc2lnbmVkIGZvcm1hdCwgdW5zaWduZWQg
dHlwZSwgdm9pZCogcGl4ZWxzKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dGV4U3ViSW1hZ2Uy
RChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RpbnQgeG9mZiwgR0MzRGludCB5
b2ZmLCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RlbnVtIGZvcm1hdCwg
R0MzRGVudW0gdHlwZSwgY29uc3Qgdm9pZCogcGl4ZWxzKQogewogICAgIG1ha2VDb250ZXh0Q3Vy
cmVudCgpOwogCiAgICAgLy8gRklYTUU6IHdlIHdpbGwgbmVlZCB0byBkZWFsIHdpdGggUGl4ZWxT
dG9yZSBwYXJhbXMgd2hlbiBkZWFsaW5nIHdpdGggaW1hZ2UgYnVmZmVycyB0aGF0IGRpZmZlciBm
cm9tIHRoZSBzdWJpbWFnZSBzaXplCiAgICAgOjpnbFRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZl
bCwgeG9mZiwgeW9mZiwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBwaXhlbHMpOwotICAg
IHJldHVybiAwOwogfQogCi11bnNpZ25lZCBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlQnVmZmVy
KCkKK1BsYXRmb3JtM0RPYmplY3QgR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZUJ1ZmZlcigpCiB7
CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgR0x1aW50IG87CisgICAgR0x1aW50IG8g
PSAwOwogICAgIGdsR2VuQnVmZmVycygxLCAmbyk7CiAgICAgcmV0dXJuIG87CiB9CiAKLXVuc2ln
bmVkIEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVGcmFtZWJ1ZmZlcigpCitQbGF0Zm9ybTNET2Jq
ZWN0IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVGcmFtZWJ1ZmZlcigpCiB7CiAgICAgbWFrZUNv
bnRleHRDdXJyZW50KCk7Ci0gICAgR0x1aW50IG87CisgICAgR0x1aW50IG8gPSAwOwogICAgIGds
R2VuRnJhbWVidWZmZXJzRVhUKDEsICZvKTsKICAgICByZXR1cm4gbzsKIH0KIAotdW5zaWduZWQg
R3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZVByb2dyYW0oKQorUGxhdGZvcm0zRE9iamVjdCBHcmFw
aGljc0NvbnRleHQzRDo6Y3JlYXRlUHJvZ3JhbSgpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50
KCk7CiAgICAgcmV0dXJuIGdsQ3JlYXRlUHJvZ3JhbSgpOwogfQogCi11bnNpZ25lZCBHcmFwaGlj
c0NvbnRleHQzRDo6Y3JlYXRlUmVuZGVyYnVmZmVyKCkKK1BsYXRmb3JtM0RPYmplY3QgR3JhcGhp
Y3NDb250ZXh0M0Q6OmNyZWF0ZVJlbmRlcmJ1ZmZlcigpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJy
ZW50KCk7Ci0gICAgR0x1aW50IG87CisgICAgR0x1aW50IG8gPSAwOwogICAgIGdsR2VuUmVuZGVy
YnVmZmVyc0VYVCgxLCAmbyk7CiAgICAgcmV0dXJuIG87CiB9CiAKLXVuc2lnbmVkIEdyYXBoaWNz
Q29udGV4dDNEOjpjcmVhdGVTaGFkZXIodW5zaWduZWQgbG9uZyB0eXBlKQorUGxhdGZvcm0zRE9i
amVjdCBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlU2hhZGVyKEdDM0RlbnVtIHR5cGUpCiB7CiAg
ICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgcmV0dXJuIGdsQ3JlYXRlU2hhZGVyKCh0eXBl
ID09IEZSQUdNRU5UX1NIQURFUikgPyBHTF9GUkFHTUVOVF9TSEFERVIgOiBHTF9WRVJURVhfU0hB
REVSKTsKIH0KIAotdW5zaWduZWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZVRleHR1cmUoKQor
UGxhdGZvcm0zRE9iamVjdCBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlVGV4dHVyZSgpCiB7CiAg
ICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgR0x1aW50IG87CisgICAgR0x1aW50IG8gPSAw
OwogICAgIGdsR2VuVGV4dHVyZXMoMSwgJm8pOwogICAgIHJldHVybiBvOwogfQogCi12b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjpkZWxldGVCdWZmZXIodW5zaWduZWQgYnVmZmVyKQordm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6ZGVsZXRlQnVmZmVyKFBsYXRmb3JtM0RPYmplY3QgYnVmZmVyKQogewog
ICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIGdsRGVsZXRlQnVmZmVycygxLCAmYnVmZmVy
KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGVsZXRlRnJhbWVidWZmZXIodW5zaWdu
ZWQgZnJhbWVidWZmZXIpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkZWxldGVGcmFtZWJ1ZmZl
cihQbGF0Zm9ybTNET2JqZWN0IGZyYW1lYnVmZmVyKQogewogICAgIG1ha2VDb250ZXh0Q3VycmVu
dCgpOwogICAgIGdsRGVsZXRlRnJhbWVidWZmZXJzRVhUKDEsICZmcmFtZWJ1ZmZlcik7CiB9CiAK
LXZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRlbGV0ZVByb2dyYW0odW5zaWduZWQgcHJvZ3JhbSkK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRlbGV0ZVByb2dyYW0oUGxhdGZvcm0zRE9iamVjdCBw
cm9ncmFtKQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIGdsRGVsZXRlUHJvZ3Jh
bShwcm9ncmFtKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGVsZXRlUmVuZGVyYnVm
ZmVyKHVuc2lnbmVkIHJlbmRlcmJ1ZmZlcikKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRlbGV0
ZVJlbmRlcmJ1ZmZlcihQbGF0Zm9ybTNET2JqZWN0IHJlbmRlcmJ1ZmZlcikKIHsKICAgICBtYWtl
Q29udGV4dEN1cnJlbnQoKTsKICAgICBnbERlbGV0ZVJlbmRlcmJ1ZmZlcnNFWFQoMSwgJnJlbmRl
cmJ1ZmZlcik7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRlbGV0ZVNoYWRlcih1bnNp
Z25lZCBzaGFkZXIpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkZWxldGVTaGFkZXIoUGxhdGZv
cm0zRE9iamVjdCBzaGFkZXIpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgZ2xE
ZWxldGVTaGFkZXIoc2hhZGVyKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGVsZXRl
VGV4dHVyZSh1bnNpZ25lZCB0ZXh0dXJlKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGVsZXRl
VGV4dHVyZShQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmUpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJy
ZW50KCk7CiAgICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmdGV4dHVyZSk7CiB9CiAKLWludCBHcmFw
aGljc0NvbnRleHQzRDo6c2l6ZUluQnl0ZXMoaW50IHR5cGUpCit1aW50MzJfdCBHcmFwaGljc0Nv
bnRleHQzRDo6c2l6ZUluQnl0ZXMoR0MzRGVudW0gdHlwZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUp
IHsKICAgICAgICAgY2FzZSBHTF9CWVRFOgpAQCAtMTQ2MCw3ICsxNDU5LDcgQEAgaW50IEdyYXBo
aWNzQ29udGV4dDNEOjpzaXplSW5CeXRlcyhpbnQgdAogICAgIH0KIH0KIAotdm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6c3ludGhlc2l6ZUdMRXJyb3IodW5zaWduZWQgbG9uZyBlcnJvcikKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OnN5bnRoZXNpemVHTEVycm9yKEdDM0RlbnVtIGVycm9yKQogewog
ICAgIG1fc3ludGhldGljRXJyb3JzLmFkZChlcnJvcik7CiB9CkluZGV4OiBXZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAJKHJldmlz
aW9uIDc0OTcwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRl
eHQzRFF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjAzLDcgKzYwMyw3IEBAIEludFNpemUgR3Jh
cGhpY3NDb250ZXh0M0Q6OmdldEludGVybmFsRnIKICAgICByZXR1cm4gSW50U2l6ZShtX2N1cnJl
bnRXaWR0aCwgbV9jdXJyZW50SGVpZ2h0KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
YWN0aXZlVGV4dHVyZSh1bnNpZ25lZCBsb25nIHRleHR1cmUpCit2b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjphY3RpdmVUZXh0dXJlKEdDM0RlbnVtIHRleHR1cmUpCiB7CiAgICAgbV9pbnRlcm5hbC0+
bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKICAgICBtX2ludGVybmFsLT5hY3RpdmVUZXh0dXJl
KHRleHR1cmUpOwpAQCAtNjE0LDEwICs2MTQsMTAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
YXR0YWNoU2hhZGVyKFBsYQogICAgIEFTU0VSVChwcm9ncmFtKTsKICAgICBBU1NFUlQoc2hhZGVy
KTsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50
ZXJuYWwtPmF0dGFjaFNoYWRlcigoR0x1aW50KSBwcm9ncmFtLCAoR0x1aW50KSBzaGFkZXIpOwor
ICAgIG1faW50ZXJuYWwtPmF0dGFjaFNoYWRlcihwcm9ncmFtLCBzaGFkZXIpOwogfQogCi12b2lk
IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRBdHRhY2hlZFNoYWRlcnMoUGxhdGZvcm0zRE9iamVjdCBw
cm9ncmFtLCBpbnQgbWF4Q291bnQsIGludCogY291bnQsIHVuc2lnbmVkIGludCogc2hhZGVycykK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEF0dGFjaGVkU2hhZGVycyhQbGF0Zm9ybTNET2Jq
ZWN0IHByb2dyYW0sIEdDM0RzaXplaSBtYXhDb3VudCwgR0MzRHNpemVpKiBjb3VudCwgUGxhdGZv
cm0zRE9iamVjdCogc2hhZGVycykKIHsKICAgICBpZiAoIXByb2dyYW0pIHsKICAgICAgICAgc3lu
dGhlc2l6ZUdMRXJyb3IoSU5WQUxJRF9WQUxVRSk7CkBAIC02MjUsMTA4ICs2MjUsMTA4IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEF0dGFjaGVkU2hhZGUKICAgICB9CiAKICAgICBtX2lu
dGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIGdldEF0dGFjaGVkU2hhZGVy
cygoR0x1aW50KSBwcm9ncmFtLCBtYXhDb3VudCwgY291bnQsIHNoYWRlcnMpOworICAgIGdldEF0
dGFjaGVkU2hhZGVycyhwcm9ncmFtLCBtYXhDb3VudCwgY291bnQsIHNoYWRlcnMpOwogfQogCi12
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpiaW5kQXR0cmliTG9jYXRpb24oUGxhdGZvcm0zRE9iamVj
dCBwcm9ncmFtLCB1bnNpZ25lZCBsb25nIGluZGV4LCBjb25zdCBTdHJpbmcmIG5hbWUpCit2b2lk
IEdyYXBoaWNzQ29udGV4dDNEOjpiaW5kQXR0cmliTG9jYXRpb24oUGxhdGZvcm0zRE9iamVjdCBw
cm9ncmFtLCBHQzNEdWludCBpbmRleCwgY29uc3QgU3RyaW5nJiBuYW1lKQogewogICAgIEFTU0VS
VChwcm9ncmFtKTsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwot
ICAgIG1faW50ZXJuYWwtPmJpbmRBdHRyaWJMb2NhdGlvbigoR0x1aW50KSBwcm9ncmFtLCBpbmRl
eCwgbmFtZS51dGY4KCkuZGF0YSgpKTsKKyAgICBtX2ludGVybmFsLT5iaW5kQXR0cmliTG9jYXRp
b24ocHJvZ3JhbSwgaW5kZXgsIG5hbWUudXRmOCgpLmRhdGEoKSk7CiB9CiAKLXZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OmJpbmRCdWZmZXIodW5zaWduZWQgbG9uZyB0YXJnZXQsIFBsYXRmb3JtM0RP
YmplY3QgYnVmZmVyKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YmluZEJ1ZmZlcihHQzNEZW51
bSB0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3QgYnVmZmVyKQogewogICAgIG1faW50ZXJuYWwtPm1f
Z2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+YmluZEJ1ZmZlcih0YXJn
ZXQsIChHTHVpbnQpIGJ1ZmZlcik7CisgICAgbV9pbnRlcm5hbC0+YmluZEJ1ZmZlcih0YXJnZXQs
IGJ1ZmZlcik7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRGcmFtZWJ1ZmZlcih1
bnNpZ25lZCBsb25nIHRhcmdldCwgUGxhdGZvcm0zRE9iamVjdCBidWZmZXIpCit2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjpiaW5kRnJhbWVidWZmZXIoR0MzRGVudW0gdGFyZ2V0LCBQbGF0Zm9ybTNE
T2JqZWN0IGJ1ZmZlcikKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVu
dCgpOwotICAgIG1faW50ZXJuYWwtPm1fY3VycmVudEZibyA9IGJ1ZmZlciA/IChHTHVpbnQpIGJ1
ZmZlciA6IG1faW50ZXJuYWwtPm1fbWFpbkZibzsKKyAgICBtX2ludGVybmFsLT5tX2N1cnJlbnRG
Ym8gPSBidWZmZXIgPyBidWZmZXIgOiBtX2ludGVybmFsLT5tX21haW5GYm87CiAgICAgbV9pbnRl
cm5hbC0+YmluZEZyYW1lYnVmZmVyKHRhcmdldCwgbV9pbnRlcm5hbC0+bV9jdXJyZW50RmJvKTsK
IH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YmluZFJlbmRlcmJ1ZmZlcih1bnNpZ25lZCBs
b25nIHRhcmdldCwgUGxhdGZvcm0zRE9iamVjdCByZW5kZXJidWZmZXIpCit2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjpiaW5kUmVuZGVyYnVmZmVyKEdDM0RlbnVtIHRhcmdldCwgUGxhdGZvcm0zRE9i
amVjdCByZW5kZXJidWZmZXIpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1
cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5iaW5kUmVuZGVyYnVmZmVyKHRhcmdldCwgKEdMdWlu
dCkgcmVuZGVyYnVmZmVyKTsKKyAgICBtX2ludGVybmFsLT5iaW5kUmVuZGVyYnVmZmVyKHRhcmdl
dCwgcmVuZGVyYnVmZmVyKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YmluZFRleHR1
cmUodW5zaWduZWQgbG9uZyB0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZSkKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRUZXh0dXJlKEdDM0RlbnVtIHRhcmdldCwgUGxhdGZvcm0z
RE9iamVjdCB0ZXh0dXJlKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJy
ZW50KCk7Ci0gICAgZ2xCaW5kVGV4dHVyZSh0YXJnZXQsIChHTHVpbnQpIHRleHR1cmUpOworICAg
IGdsQmluZFRleHR1cmUodGFyZ2V0LCB0ZXh0dXJlKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6YmxlbmRDb2xvcihkb3VibGUgcmVkLCBkb3VibGUgZ3JlZW4sIGRvdWJsZSBibHVlLCBk
b3VibGUgYWxwaGEpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpibGVuZENvbG9yKEdDM0RjbGFt
cGYgcmVkLCBHQzNEY2xhbXBmIGdyZWVuLCBHQzNEY2xhbXBmIGJsdWUsIEdDM0RjbGFtcGYgYWxw
aGEpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBt
X2ludGVybmFsLT5ibGVuZENvbG9yKHN0YXRpY19jYXN0PGZsb2F0PihyZWQpLCBzdGF0aWNfY2Fz
dDxmbG9hdD4oZ3JlZW4pLCBzdGF0aWNfY2FzdDxmbG9hdD4oYmx1ZSksIHN0YXRpY19jYXN0PGZs
b2F0PihhbHBoYSkpOworICAgIG1faW50ZXJuYWwtPmJsZW5kQ29sb3IocmVkLCBncmVlbiwgYmx1
ZSwgYWxwaGEpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpibGVuZEVxdWF0aW9uKHVu
c2lnbmVkIGxvbmcgbW9kZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJsZW5kRXF1YXRpb24o
R0MzRGVudW0gbW9kZSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVu
dCgpOwogICAgIG1faW50ZXJuYWwtPmJsZW5kRXF1YXRpb24obW9kZSk7CiB9CiAKLXZvaWQgR3Jh
cGhpY3NDb250ZXh0M0Q6OmJsZW5kRXF1YXRpb25TZXBhcmF0ZSh1bnNpZ25lZCBsb25nIG1vZGVS
R0IsIHVuc2lnbmVkIGxvbmcgbW9kZUFscGhhKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Ymxl
bmRFcXVhdGlvblNlcGFyYXRlKEdDM0RlbnVtIG1vZGVSR0IsIEdDM0RlbnVtIG1vZGVBbHBoYSkK
IHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwogICAgIG1faW50
ZXJuYWwtPmJsZW5kRXF1YXRpb25TZXBhcmF0ZShtb2RlUkdCLCBtb2RlQWxwaGEpOwogfQogCi12
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpibGVuZEZ1bmModW5zaWduZWQgbG9uZyBzZmFjdG9yLCB1
bnNpZ25lZCBsb25nIGRmYWN0b3IpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpibGVuZEZ1bmMo
R0MzRGVudW0gc2ZhY3RvciwgR0MzRGVudW0gZGZhY3RvcikKIHsKICAgICBtX2ludGVybmFsLT5t
X2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwogICAgIGdsQmxlbmRGdW5jKHNmYWN0b3IsIGRmYWN0
b3IpOwogfSAgICAgICAKIAotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YmxlbmRGdW5jU2VwYXJh
dGUodW5zaWduZWQgbG9uZyBzcmNSR0IsIHVuc2lnbmVkIGxvbmcgZHN0UkdCLCB1bnNpZ25lZCBs
b25nIHNyY0FscGhhLCB1bnNpZ25lZCBsb25nIGRzdEFscGhhKQordm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6YmxlbmRGdW5jU2VwYXJhdGUoR0MzRGVudW0gc3JjUkdCLCBHQzNEZW51bSBkc3RSR0Is
IEdDM0RlbnVtIHNyY0FscGhhLCBHQzNEZW51bSBkc3RBbHBoYSkKIHsKICAgICBtX2ludGVybmFs
LT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwogICAgIG1faW50ZXJuYWwtPmJsZW5kRnVuY1Nl
cGFyYXRlKHNyY1JHQiwgZHN0UkdCLCBzcmNBbHBoYSwgZHN0QWxwaGEpOwogfQogCi12b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjpidWZmZXJEYXRhKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBpbnQgc2l6
ZSwgdW5zaWduZWQgbG9uZyB1c2FnZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJ1ZmZlckRh
dGEoR0MzRGVudW0gdGFyZ2V0LCBHQzNEc2l6ZWlwdHIgc2l6ZSwgR0MzRGVudW0gdXNhZ2UpCiB7
CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKICAgICBtX2ludGVy
bmFsLT5idWZmZXJEYXRhKHRhcmdldCwgc2l6ZSwgLyogZGF0YSAqLyAwLCB1c2FnZSk7CiB9CiAK
LXZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJ1ZmZlckRhdGEodW5zaWduZWQgbG9uZyB0YXJnZXQs
IGludCBzaXplLCBjb25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBsb25nIHVzYWdlKQordm9pZCBH
cmFwaGljc0NvbnRleHQzRDo6YnVmZmVyRGF0YShHQzNEZW51bSB0YXJnZXQsIEdDM0RzaXplaXB0
ciBzaXplLCBjb25zdCB2b2lkKiBkYXRhLCBHQzNEZW51bSB1c2FnZSkKIHsKICAgICBtX2ludGVy
bmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwogICAgIG1faW50ZXJuYWwtPmJ1ZmZlckRh
dGEodGFyZ2V0LCBzaXplLCBkYXRhLCB1c2FnZSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OmJ1ZmZlclN1YkRhdGEodW5zaWduZWQgbG9uZyB0YXJnZXQsIGxvbmcgb2Zmc2V0LCBpbnQg
c2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJ1ZmZlclN1
YkRhdGEoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50cHRyIG9mZnNldCwgR0MzRHNpemVpcHRyIHNp
emUsIGNvbnN0IHZvaWQqIGRhdGEpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFr
ZUN1cnJlbnQoKTsKICAgICBtX2ludGVybmFsLT5idWZmZXJTdWJEYXRhKHRhcmdldCwgb2Zmc2V0
LCBzaXplLCBkYXRhKTsKIH0KIAotdW5zaWduZWQgbG9uZyBHcmFwaGljc0NvbnRleHQzRDo6Y2hl
Y2tGcmFtZWJ1ZmZlclN0YXR1cyh1bnNpZ25lZCBsb25nIHRhcmdldCkKK0dDM0RlbnVtIEdyYXBo
aWNzQ29udGV4dDNEOjpjaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdDM0RlbnVtIHRhcmdldCkKIHsK
ICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwogICAgIHJldHVybiBt
X2ludGVybmFsLT5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKHRhcmdldCk7CiB9CiAKLXZvaWQgR3Jh
cGhpY3NDb250ZXh0M0Q6OmNsZWFyQ29sb3IoZG91YmxlIHIsIGRvdWJsZSBnLCBkb3VibGUgYiwg
ZG91YmxlIGEpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpjbGVhckNvbG9yKEdDM0RjbGFtcGYg
ciwgR0MzRGNsYW1wZiBnLCBHQzNEY2xhbXBmIGIsIEdDM0RjbGFtcGYgYSkKIHsKICAgICBtX2lu
dGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIGdsQ2xlYXJDb2xvcihzdGF0
aWNfY2FzdDxmbG9hdD4ociksIHN0YXRpY19jYXN0PGZsb2F0PihnKSwgc3RhdGljX2Nhc3Q8Zmxv
YXQ+KGIpLCBzdGF0aWNfY2FzdDxmbG9hdD4oYSkpOworICAgIGdsQ2xlYXJDb2xvcihyLCBnLCBi
LCBhKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y2xlYXIodW5zaWduZWQgbG9uZyBt
YXNrKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y2xlYXIoR0MzRGJpdGZpZWxkIG1hc2spCiB7
CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKICAgICBnbENsZWFy
KG1hc2spOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpjbGVhckRlcHRoKGRvdWJsZSBk
ZXB0aCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNsZWFyRGVwdGgoR0MzRGNsYW1wZiBkZXB0
aCkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwogI2lmIGRl
ZmluZWQoUVRfT1BFTkdMX0VTXzIpCkBAIC03MzYsMTMgKzczNiwxMyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjpjbGVhckRlcHRoKGRvdWJsCiAjZW5kaWYKIH0KIAotdm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6Y2xlYXJTdGVuY2lsKGxvbmcgcykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNs
ZWFyU3RlbmNpbChHQzNEaW50IHMpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFr
ZUN1cnJlbnQoKTsKICAgICBnbENsZWFyU3RlbmNpbChzKTsKIH0KIAotdm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6Y29sb3JNYXNrKGJvb2wgcmVkLCBib29sIGdyZWVuLCBib29sIGJsdWUsIGJvb2wg
YWxwaGEpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpjb2xvck1hc2soR0MzRGJvb2xlYW4gcmVk
LCBHQzNEYm9vbGVhbiBncmVlbiwgR0MzRGJvb2xlYW4gYmx1ZSwgR0MzRGJvb2xlYW4gYWxwaGEp
CiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKICAgICBnbENv
bG9yTWFzayhyZWQsIGdyZWVuLCBibHVlLCBhbHBoYSk7CkBAIC03NTIsNDAgKzc1Miw0MCBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpjb21waWxlU2hhZGVyKFBsCiB7CiAgICAgQVNTRVJUKHNo
YWRlcik7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBt
X2ludGVybmFsLT5jb21waWxlU2hhZGVyKChHTHVpbnQpIHNoYWRlcik7CisgICAgbV9pbnRlcm5h
bC0+Y29tcGlsZVNoYWRlcihzaGFkZXIpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpj
b3B5VGV4SW1hZ2UyRCh1bnNpZ25lZCBsb25nIHRhcmdldCwgbG9uZyBsZXZlbCwgdW5zaWduZWQg
bG9uZyBpbnRlcm5hbGZvcm1hdCwgbG9uZyB4LCBsb25nIHksIHVuc2lnbmVkIGxvbmcgd2lkdGgs
IHVuc2lnbmVkIGxvbmcgaGVpZ2h0LCBsb25nIGJvcmRlcikKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OmNvcHlUZXhJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGVu
dW0gaW50ZXJuYWxmb3JtYXQsIEdDM0RpbnQgeCwgR0MzRGludCB5LCBHQzNEc2l6ZWkgd2lkdGgs
IEdDM0RzaXplaSBoZWlnaHQsIEdDM0RpbnQgYm9yZGVyKQogewogICAgIG1faW50ZXJuYWwtPm1f
Z2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CiAgICAgZ2xDb3B5VGV4SW1hZ2UyRCh0YXJnZXQsIGxl
dmVsLCBpbnRlcm5hbGZvcm1hdCwgeCwgeSwgd2lkdGgsIGhlaWdodCwgYm9yZGVyKTsKIH0KIAot
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y29weVRleFN1YkltYWdlMkQodW5zaWduZWQgbG9uZyB0
YXJnZXQsIGxvbmcgbGV2ZWwsIGxvbmcgeG9mZnNldCwgbG9uZyB5b2Zmc2V0LCBsb25nIHgsIGxv
bmcgeSwgdW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpCit2b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjpjb3B5VGV4U3ViSW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0Rp
bnQgbGV2ZWwsIEdDM0RpbnQgeG9mZnNldCwgR0MzRGludCB5b2Zmc2V0LCBHQzNEaW50IHgsIEdD
M0RpbnQgeSwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0KQogewogICAgIG1faW50
ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CiAgICAgZ2xDb3B5VGV4U3ViSW1hZ2Uy
RCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0KTsK
IH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y3VsbEZhY2UodW5zaWduZWQgbG9uZyBtb2Rl
KQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y3VsbEZhY2UoR0MzRGVudW0gbW9kZSkKIHsKICAg
ICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwogICAgIGdsQ3VsbEZhY2Uo
bW9kZSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRlcHRoRnVuYyh1bnNpZ25lZCBs
b25nIGZ1bmMpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkZXB0aEZ1bmMoR0MzRGVudW0gZnVu
YykKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwogICAgIGds
RGVwdGhGdW5jKGZ1bmMpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkZXB0aE1hc2so
Ym9vbCBmbGFnKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGVwdGhNYXNrKEdDM0Rib29sZWFu
IGZsYWcpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKICAg
ICBnbERlcHRoTWFzayhmbGFnKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGVwdGhS
YW5nZShkb3VibGUgek5lYXIsIGRvdWJsZSB6RmFyKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
ZGVwdGhSYW5nZShHQzNEY2xhbXBmIHpOZWFyLCBHQzNEY2xhbXBmIHpGYXIpCiB7CiAgICAgbV9p
bnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKICNpZiBkZWZpbmVkKFFUX09QRU5H
TF9FU18yKQpAQCAtODAwLDQwICs4MDAsNDAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGV0
YWNoU2hhZGVyKFBsYQogICAgIEFTU0VSVChwcm9ncmFtKTsKICAgICBBU1NFUlQoc2hhZGVyKTsK
ICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJu
YWwtPmRldGFjaFNoYWRlcigoR0x1aW50KSBwcm9ncmFtLCAoR0x1aW50KSBzaGFkZXIpOworICAg
IG1faW50ZXJuYWwtPmRldGFjaFNoYWRlcihwcm9ncmFtLCBzaGFkZXIpOwogfQogCi12b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjpkaXNhYmxlKHVuc2lnbmVkIGxvbmcgY2FwKQordm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6ZGlzYWJsZShHQzNEZW51bSBjYXApCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9n
bFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKICAgICBnbERpc2FibGUoY2FwKTsKIH0KIAotdm9pZCBH
cmFwaGljc0NvbnRleHQzRDo6ZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KHVuc2lnbmVkIGxvbmcg
aW5kZXgpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkaXNhYmxlVmVydGV4QXR0cmliQXJyYXko
R0MzRHVpbnQgaW5kZXgpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJl
bnQoKTsKICAgICBtX2ludGVybmFsLT5kaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoaW5kZXgpOwog
fQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkcmF3QXJyYXlzKHVuc2lnbmVkIGxvbmcgbW9k
ZSwgbG9uZyBmaXJzdCwgbG9uZyBjb3VudCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRyYXdB
cnJheXMoR0MzRGVudW0gbW9kZSwgR0MzRGludCBmaXJzdCwgR0MzRHNpemVpIGNvdW50KQogewog
ICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CiAgICAgZ2xEcmF3QXJy
YXlzKG1vZGUsIGZpcnN0LCBjb3VudCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRy
YXdFbGVtZW50cyh1bnNpZ25lZCBsb25nIG1vZGUsIHVuc2lnbmVkIGxvbmcgY291bnQsIHVuc2ln
bmVkIGxvbmcgdHlwZSwgbG9uZyBvZmZzZXQpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkcmF3
RWxlbWVudHMoR0MzRGVudW0gbW9kZSwgR0MzRHNpemVpIGNvdW50LCBHQzNEZW51bSB0eXBlLCBH
QzNEaW50cHRyIG9mZnNldCkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3Vy
cmVudCgpOwotICAgIGdsRHJhd0VsZW1lbnRzKG1vZGUsIGNvdW50LCB0eXBlLCByZWludGVycHJl
dF9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4ob2Zmc2V0KSkpOworICAgIGdsRHJh
d0VsZW1lbnRzKG1vZGUsIGNvdW50LCB0eXBlLCByZWludGVycHJldF9jYXN0PEdMdm9pZCo+KHN0
YXRpY19jYXN0PGludHB0cl90PihvZmZzZXQpKSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OmVuYWJsZSh1bnNpZ25lZCBsb25nIGNhcCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmVu
YWJsZShHQzNEZW51bSBjYXApCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1
cnJlbnQoKTsKICAgICBnbEVuYWJsZShjYXApOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNE
OjplbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSh1bnNpZ25lZCBsb25nIGluZGV4KQordm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoR0MzRHVpbnQgaW5kZXgpCiB7
CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKICAgICBtX2ludGVy
bmFsLT5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShpbmRleCk7CkBAIC04NTEsMzEgKzg1MSwzMSBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpmbHVzaCgpCiAgICAgZ2xGbHVzaCgpOwogfQogCi12
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcih1bnNpZ25lZCBs
b25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBhdHRhY2htZW50LCB1bnNpZ25lZCBsb25nIHJlbmRl
cmJ1ZmZlcnRhcmdldCwgUGxhdGZvcm0zRE9iamVjdCBidWZmZXIpCit2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjpmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVt
IGF0dGFjaG1lbnQsIEdDM0RlbnVtIHJlbmRlcmJ1ZmZlcnRhcmdldCwgUGxhdGZvcm0zRE9iamVj
dCBidWZmZXIpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsK
LSAgICBtX2ludGVybmFsLT5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcih0YXJnZXQsIGF0dGFjaG1l
bnQsIHJlbmRlcmJ1ZmZlcnRhcmdldCwgKEdMdWludCkgYnVmZmVyKTsKKyAgICBtX2ludGVybmFs
LT5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcih0YXJnZXQsIGF0dGFjaG1lbnQsIHJlbmRlcmJ1ZmZl
cnRhcmdldCwgYnVmZmVyKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZnJhbWVidWZm
ZXJUZXh0dXJlMkQodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgYXR0YWNobWVu
dCwgdW5zaWduZWQgbG9uZyB0ZXh0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZSwgbG9u
ZyBsZXZlbCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmZyYW1lYnVmZmVyVGV4dHVyZTJEKEdD
M0RlbnVtIHRhcmdldCwgR0MzRGVudW0gYXR0YWNobWVudCwgR0MzRGVudW0gdGV4dGFyZ2V0LCBQ
bGF0Zm9ybTNET2JqZWN0IHRleHR1cmUsIEdDM0RpbnQgbGV2ZWwpCiB7CiAgICAgbV9pbnRlcm5h
bC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5mcmFtZWJ1ZmZl
clRleHR1cmUyRCh0YXJnZXQsIGF0dGFjaG1lbnQsIHRleHRhcmdldCwgKEdMdWludCkgdGV4dHVy
ZSwgbGV2ZWwpOworICAgIG1faW50ZXJuYWwtPmZyYW1lYnVmZmVyVGV4dHVyZTJEKHRhcmdldCwg
YXR0YWNobWVudCwgdGV4dGFyZ2V0LCB0ZXh0dXJlLCBsZXZlbCk7CiB9CiAKLXZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OmZyb250RmFjZSh1bnNpZ25lZCBsb25nIG1vZGUpCit2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjpmcm9udEZhY2UoR0MzRGVudW0gbW9kZSkKIHsKICAgICBtX2ludGVybmFsLT5t
X2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwogICAgIGdsRnJvbnRGYWNlKG1vZGUpOwogfQogCi12
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZW5lcmF0ZU1pcG1hcCh1bnNpZ25lZCBsb25nIHRhcmdl
dCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdlbmVyYXRlTWlwbWFwKEdDM0RlbnVtIHRhcmdl
dCkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwogICAgIG1f
aW50ZXJuYWwtPmdlbmVyYXRlTWlwbWFwKHRhcmdldCk7CiB9CiAKLWJvb2wgR3JhcGhpY3NDb250
ZXh0M0Q6OmdldEFjdGl2ZUF0dHJpYihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIHVuc2lnbmVk
IGxvbmcgaW5kZXgsIEFjdGl2ZUluZm8mIGluZm8pCitib29sIEdyYXBoaWNzQ29udGV4dDNEOjpn
ZXRBY3RpdmVBdHRyaWIoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBHQzNEdWludCBpbmRleCwg
QWN0aXZlSW5mbyYgaW5mbykKIHsKICAgICBpZiAoIXByb2dyYW0pIHsKICAgICAgICAgc3ludGhl
c2l6ZUdMRXJyb3IoSU5WQUxJRF9WQUxVRSk7CkBAIC04ODQsMTUgKzg4NCwxNSBAQCBib29sIEdy
YXBoaWNzQ29udGV4dDNEOjpnZXRBY3RpdmVBdHRyaWIoCiAKICAgICBtX2ludGVybmFsLT5tX2ds
V2lkZ2V0LT5tYWtlQ3VycmVudCgpOwogCi0gICAgR0xpbnQgbWF4TGVuZ3RoOwotICAgIG1faW50
ZXJuYWwtPmdldFByb2dyYW1pdihzdGF0aWNfY2FzdDxHTHVpbnQ+KHByb2dyYW0pLCBHcmFwaGlj
c0NvbnRleHQzRDo6QUNUSVZFX0FUVFJJQlVURV9NQVhfTEVOR1RILCAmbWF4TGVuZ3RoKTsKKyAg
ICBHTGludCBtYXhMZW5ndGggPSAwOworICAgIG1faW50ZXJuYWwtPmdldFByb2dyYW1pdihwcm9n
cmFtLCBHcmFwaGljc0NvbnRleHQzRDo6QUNUSVZFX0FUVFJJQlVURV9NQVhfTEVOR1RILCAmbWF4
TGVuZ3RoKTsKIAogICAgIEdMY2hhciogbmFtZSA9IChHTGNoYXIqKSBmYXN0TWFsbG9jKG1heExl
bmd0aCk7Ci0gICAgR0xzaXplaSBuYW1lTGVuZ3RoOwotICAgIEdMaW50IHNpemU7Ci0gICAgR0xl
bnVtIHR5cGU7CisgICAgR0xzaXplaSBuYW1lTGVuZ3RoID0gMDsKKyAgICBHTGludCBzaXplID0g
MDsKKyAgICBHTGVudW0gdHlwZSA9IDA7CiAKLSAgICBtX2ludGVybmFsLT5nZXRBY3RpdmVBdHRy
aWIoc3RhdGljX2Nhc3Q8R0x1aW50Pihwcm9ncmFtKSwgaW5kZXgsIG1heExlbmd0aCwgJm5hbWVM
ZW5ndGgsICZzaXplLCAmdHlwZSwgbmFtZSk7CisgICAgbV9pbnRlcm5hbC0+Z2V0QWN0aXZlQXR0
cmliKHByb2dyYW0sIGluZGV4LCBtYXhMZW5ndGgsICZuYW1lTGVuZ3RoLCAmc2l6ZSwgJnR5cGUs
IG5hbWUpOwogCiAgICAgaWYgKCFuYW1lTGVuZ3RoKSB7CiAgICAgICAgIGZhc3RGcmVlKG5hbWUp
OwpAQCAtOTA3LDcgKzkwNyw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEFjdGl2ZUF0
dHJpYigKICAgICByZXR1cm4gdHJ1ZTsKIH0KICAgICAKLWJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6
OmdldEFjdGl2ZVVuaWZvcm0oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCB1bnNpZ25lZCBsb25n
IGluZGV4LCBBY3RpdmVJbmZvJiBpbmZvKQorYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0QWN0
aXZlVW5pZm9ybShQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIEdDM0R1aW50IGluZGV4LCBBY3Rp
dmVJbmZvJiBpbmZvKQogewogICAgIGlmICghcHJvZ3JhbSkgewogICAgICAgICBzeW50aGVzaXpl
R0xFcnJvcihJTlZBTElEX1ZBTFVFKTsKQEAgLTkxNiwxMyArOTE2LDEzIEBAIGJvb2wgR3JhcGhp
Y3NDb250ZXh0M0Q6OmdldEFjdGl2ZVVuaWZvcm0KIAogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRn
ZXQtPm1ha2VDdXJyZW50KCk7CiAKLSAgICBHTGludCBtYXhMZW5ndGg7CisgICAgR0xpbnQgbWF4
TGVuZ3RoID0gMDsKICAgICBtX2ludGVybmFsLT5nZXRQcm9ncmFtaXYoc3RhdGljX2Nhc3Q8R0x1
aW50Pihwcm9ncmFtKSwgR3JhcGhpY3NDb250ZXh0M0Q6OkFDVElWRV9VTklGT1JNX01BWF9MRU5H
VEgsICZtYXhMZW5ndGgpOwogCiAgICAgR0xjaGFyKiBuYW1lID0gKEdMY2hhciopIGZhc3RNYWxs
b2MobWF4TGVuZ3RoKTsKLSAgICBHTHNpemVpIG5hbWVMZW5ndGg7Ci0gICAgR0xpbnQgc2l6ZTsK
LSAgICBHTGVudW0gdHlwZTsKKyAgICBHTHNpemVpIG5hbWVMZW5ndGggPSAwOworICAgIEdMaW50
IHNpemUgPSAwOworICAgIEdMZW51bSB0eXBlID0gMDsKIAogICAgIG1faW50ZXJuYWwtPmdldEFj
dGl2ZVVuaWZvcm0oc3RhdGljX2Nhc3Q8R0x1aW50Pihwcm9ncmFtKSwgaW5kZXgsIG1heExlbmd0
aCwgJm5hbWVMZW5ndGgsICZzaXplLCAmdHlwZSwgbmFtZSk7CiAKQEAgLTk0NSw3ICs5NDUsNyBA
QCBpbnQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEF0dHJpYkxvY2F0aW9uCiAgICAgICAgIHJldHVy
biAtMTsKICAgICAKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwot
ICAgIHJldHVybiBtX2ludGVybmFsLT5nZXRBdHRyaWJMb2NhdGlvbigoR0x1aW50KSBwcm9ncmFt
LCBuYW1lLnV0ZjgoKS5kYXRhKCkpOworICAgIHJldHVybiBtX2ludGVybmFsLT5nZXRBdHRyaWJM
b2NhdGlvbihwcm9ncmFtLCBuYW1lLnV0ZjgoKS5kYXRhKCkpOwogfQogCiBHcmFwaGljc0NvbnRl
eHQzRDo6QXR0cmlidXRlcyBHcmFwaGljc0NvbnRleHQzRDo6Z2V0Q29udGV4dEF0dHJpYnV0ZXMo
KQpAQCAtOTUzLDExICs5NTMsMTEgQEAgR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgR3Jh
cGhpY3NDbwogICAgIHJldHVybiBtX2ludGVybmFsLT5tX2F0dHJzOwogfQogCi11bnNpZ25lZCBs
b25nIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRFcnJvcigpCitHQzNEZW51bSBHcmFwaGljc0NvbnRl
eHQzRDo6Z2V0RXJyb3IoKQogewogICAgIGlmIChtX2ludGVybmFsLT5tX3N5bnRoZXRpY0Vycm9y
cy5zaXplKCkgPiAwKSB7Ci0gICAgICAgIExpc3RIYXNoU2V0PHVuc2lnbmVkIGxvbmc+OjppdGVy
YXRvciBpdGVyID0gbV9pbnRlcm5hbC0+bV9zeW50aGV0aWNFcnJvcnMuYmVnaW4oKTsKLSAgICAg
ICAgdW5zaWduZWQgbG9uZyBlcnIgPSAqaXRlcjsKKyAgICAgICAgTGlzdEhhc2hTZXQ8R0MzRGVu
dW0+OjppdGVyYXRvciBpdGVyID0gbV9pbnRlcm5hbC0+bV9zeW50aGV0aWNFcnJvcnMuYmVnaW4o
KTsKKyAgICAgICAgR0MzRGVudW0gZXJyID0gKml0ZXI7CiAgICAgICAgIG1faW50ZXJuYWwtPm1f
c3ludGhldGljRXJyb3JzLnJlbW92ZShpdGVyKTsKICAgICAgICAgcmV0dXJuIGVycjsKICAgICB9
CkBAIC05NjYsNzYgKzk2Niw3NiBAQCB1bnNpZ25lZCBsb25nIEdyYXBoaWNzQ29udGV4dDNEOjpn
ZXRFcnJvCiAgICAgcmV0dXJuIGdsR2V0RXJyb3IoKTsKIH0KIAotU3RyaW5nIEdyYXBoaWNzQ29u
dGV4dDNEOjpnZXRTdHJpbmcodW5zaWduZWQgbG9uZyBuYW1lKQorU3RyaW5nIEdyYXBoaWNzQ29u
dGV4dDNEOjpnZXRTdHJpbmcoR0MzRGVudW0gbmFtZSkKIHsKICAgICBtX2ludGVybmFsLT5tX2ds
V2lkZ2V0LT5tYWtlQ3VycmVudCgpOwogICAgIHJldHVybiBTdHJpbmcoKGNvbnN0IGNoYXIqKSBn
bEdldFN0cmluZyhuYW1lKSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmhpbnQodW5z
aWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgbW9kZSkKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0M0Q6OmhpbnQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBtb2RlKQogewogICAgIG1faW50
ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CiAgICAgZ2xIaW50KHRhcmdldCwgbW9k
ZSk7CiB9CiAKLWJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmlzQnVmZmVyKFBsYXRmb3JtM0RPYmpl
Y3QgYnVmZmVyKQorR0MzRGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0M0Q6OmlzQnVmZmVyKFBsYXRm
b3JtM0RPYmplY3QgYnVmZmVyKQogewogICAgIGlmICghYnVmZmVyKQotICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIHJldHVybiBHTF9GQUxTRTsKICAgICAKICAgICBtX2ludGVybmFsLT5t
X2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIHJldHVybiBtX2ludGVybmFsLT5pc0J1ZmZl
cigoR0x1aW50KSBidWZmZXIpOworICAgIHJldHVybiBtX2ludGVybmFsLT5pc0J1ZmZlcihidWZm
ZXIpOwogfQogCi1ib29sIEdyYXBoaWNzQ29udGV4dDNEOjppc0VuYWJsZWQodW5zaWduZWQgbG9u
ZyBjYXApCitHQzNEYm9vbGVhbiBHcmFwaGljc0NvbnRleHQzRDo6aXNFbmFibGVkKEdDM0RlbnVt
IGNhcCkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwogICAg
IHJldHVybiBnbElzRW5hYmxlZChjYXApOwogfQogCi1ib29sIEdyYXBoaWNzQ29udGV4dDNEOjpp
c0ZyYW1lYnVmZmVyKFBsYXRmb3JtM0RPYmplY3QgZnJhbWVidWZmZXIpCitHQzNEYm9vbGVhbiBH
cmFwaGljc0NvbnRleHQzRDo6aXNGcmFtZWJ1ZmZlcihQbGF0Zm9ybTNET2JqZWN0IGZyYW1lYnVm
ZmVyKQogewogICAgIGlmICghZnJhbWVidWZmZXIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgcmV0dXJuIEdMX0ZBTFNFOwogICAgIAogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQt
Pm1ha2VDdXJyZW50KCk7Ci0gICAgcmV0dXJuIG1faW50ZXJuYWwtPmlzRnJhbWVidWZmZXIoKEdM
dWludCkgZnJhbWVidWZmZXIpOworICAgIHJldHVybiBtX2ludGVybmFsLT5pc0ZyYW1lYnVmZmVy
KGZyYW1lYnVmZmVyKTsKIH0KIAotYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6aXNQcm9ncmFtKFBs
YXRmb3JtM0RPYmplY3QgcHJvZ3JhbSkKK0dDM0Rib29sZWFuIEdyYXBoaWNzQ29udGV4dDNEOjpp
c1Byb2dyYW0oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtKQogewogICAgIGlmICghcHJvZ3JhbSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gR0xfRkFMU0U7CiAgICAgCiAg
ICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICByZXR1cm4gbV9p
bnRlcm5hbC0+aXNQcm9ncmFtKChHTHVpbnQpIHByb2dyYW0pOworICAgIHJldHVybiBtX2ludGVy
bmFsLT5pc1Byb2dyYW0ocHJvZ3JhbSk7CiB9CiAKLWJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6Omlz
UmVuZGVyYnVmZmVyKFBsYXRmb3JtM0RPYmplY3QgcmVuZGVyYnVmZmVyKQorR0MzRGJvb2xlYW4g
R3JhcGhpY3NDb250ZXh0M0Q6OmlzUmVuZGVyYnVmZmVyKFBsYXRmb3JtM0RPYmplY3QgcmVuZGVy
YnVmZmVyKQogewogICAgIGlmICghcmVuZGVyYnVmZmVyKQotICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIHJldHVybiBHTF9GQUxTRTsKICAgICAKICAgICBtX2ludGVybmFsLT5tX2dsV2lk
Z2V0LT5tYWtlQ3VycmVudCgpOwotICAgIHJldHVybiBtX2ludGVybmFsLT5pc1JlbmRlcmJ1ZmZl
cigoR0x1aW50KSByZW5kZXJidWZmZXIpOworICAgIHJldHVybiBtX2ludGVybmFsLT5pc1JlbmRl
cmJ1ZmZlcihyZW5kZXJidWZmZXIpOwogfQogCi1ib29sIEdyYXBoaWNzQ29udGV4dDNEOjppc1No
YWRlcihQbGF0Zm9ybTNET2JqZWN0IHNoYWRlcikKK0dDM0Rib29sZWFuIEdyYXBoaWNzQ29udGV4
dDNEOjppc1NoYWRlcihQbGF0Zm9ybTNET2JqZWN0IHNoYWRlcikKIHsKICAgICBpZiAoIXNoYWRl
cikKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gR0xfRkFMU0U7CiAgICAg
CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICByZXR1cm4g
bV9pbnRlcm5hbC0+aXNTaGFkZXIoKEdMdWludCkgc2hhZGVyKTsKKyAgICByZXR1cm4gbV9pbnRl
cm5hbC0+aXNTaGFkZXIoc2hhZGVyKTsKIH0KIAotYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6aXNU
ZXh0dXJlKFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZSkKK0dDM0Rib29sZWFuIEdyYXBoaWNzQ29u
dGV4dDNEOjppc1RleHR1cmUoUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlKQogewogICAgIGlmICgh
dGV4dHVyZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gR0xfRkFMU0U7
CiAgICAgCiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBy
ZXR1cm4gZ2xJc1RleHR1cmUoKEdMdWludCkgdGV4dHVyZSk7CisgICAgcmV0dXJuIGdsSXNUZXh0
dXJlKHRleHR1cmUpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpsaW5lV2lkdGgoZG91
YmxlIHdpZHRoKQpAQCAtMTA0OCwyOSArMTA0OCwyOSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNE
OjpsaW5rUHJvZ3JhbShQbGF0CiB7CiAgICAgQVNTRVJUKHByb2dyYW0pOwogICAgIG1faW50ZXJu
YWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+bGlua1Byb2dy
YW0oKEdMdWludCkgcHJvZ3JhbSk7CisgICAgbV9pbnRlcm5hbC0+bGlua1Byb2dyYW0ocHJvZ3Jh
bSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnBpeGVsU3RvcmVpKHVuc2lnbmVkIGxv
bmcgcGFyYW1OYW1lLCBsb25nIHBhcmFtKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cGl4ZWxT
dG9yZWkoR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEaW50IHBhcmFtKQogewogICAgIG1faW50ZXJu
YWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CiAgICAgZ2xQaXhlbFN0b3JlaShwYXJhbU5h
bWUsIHBhcmFtKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cG9seWdvbk9mZnNldChk
b3VibGUgZmFjdG9yLCBkb3VibGUgdW5pdHMpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpwb2x5
Z29uT2Zmc2V0KEdDM0RmbG9hdCBmYWN0b3IsIEdDM0RmbG9hdCB1bml0cykKIHsKICAgICBtX2lu
dGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIGdsUG9seWdvbk9mZnNldChz
dGF0aWNfY2FzdDxmbG9hdD4oZmFjdG9yKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHVuaXRzKSk7Cisg
ICAgZ2xQb2x5Z29uT2Zmc2V0KGZhY3RvciwgdW5pdHMpOwogfQogCi12b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjpyZWFkUGl4ZWxzKGxvbmcgeCwgbG9uZyB5LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1
bnNpZ25lZCBsb25nIGhlaWdodCwgdW5zaWduZWQgbG9uZyBmb3JtYXQsIHVuc2lnbmVkIGxvbmcg
dHlwZSwgdm9pZCogZGF0YSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnJlYWRQaXhlbHMoR0Mz
RGludCB4LCBHQzNEaW50IHksIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0Mz
RGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBlLCB2b2lkKiBkYXRhKQogewogICAgIG1faW50ZXJu
YWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CiAgICAgCiAgICAgaWYgKHR5cGUgIT0gR3Jh
cGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUgfHwgZm9ybWF0ICE9IEdyYXBoaWNzQ29udGV4
dDNEOjpSR0JBKQogICAgICAgICByZXR1cm47CiAgICAgICAgIAotICAgIGdsUmVhZFBpeGVscyh4
LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIChHTHZvaWQqKSBkYXRhKTsKKyAgICBn
bFJlYWRQaXhlbHMoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBkYXRhKTsKIH0K
IAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cmVsZWFzZVNoYWRlckNvbXBpbGVyKCkKQEAgLTEw
NzksMTkgKzEwNzksMTkgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cmVsZWFzZVNoYWRlckNv
bQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnJl
bmRlcmJ1ZmZlclN0b3JhZ2UodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgaW50
ZXJuYWxmb3JtYXQsIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0KQor
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cmVuZGVyYnVmZmVyU3RvcmFnZShHQzNEZW51bSB0YXJn
ZXQsIEdDM0RlbnVtIGludGVybmFsZm9ybWF0LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBo
ZWlnaHQpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKICAg
ICBtX2ludGVybmFsLT5yZW5kZXJidWZmZXJTdG9yYWdlKHRhcmdldCwgaW50ZXJuYWxmb3JtYXQs
IHdpZHRoLCBoZWlnaHQpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpzYW1wbGVDb3Zl
cmFnZShkb3VibGUgdmFsdWUsIGJvb2wgaW52ZXJ0KQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
c2FtcGxlQ292ZXJhZ2UoR0MzRGNsYW1wZiB2YWx1ZSwgR0MzRGJvb2xlYW4gaW52ZXJ0KQogewog
ICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5h
bC0+c2FtcGxlQ292ZXJhZ2Uoc3RhdGljX2Nhc3Q8ZmxvYXQ+KHZhbHVlKSwgaW52ZXJ0KTsKKyAg
ICBtX2ludGVybmFsLT5zYW1wbGVDb3ZlcmFnZSh2YWx1ZSwgaW52ZXJ0KTsKIH0KIAotdm9pZCBH
cmFwaGljc0NvbnRleHQzRDo6c2Npc3Nvcihsb25nIHgsIGxvbmcgeSwgdW5zaWduZWQgbG9uZyB3
aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpzY2lz
c29yKEdDM0RpbnQgeCwgR0MzRGludCB5LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWln
aHQpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKICAgICBn
bFNjaXNzb3IoeCwgeSwgd2lkdGgsIGhlaWdodCk7CkBAIC0xMTE3LDE2MyArMTExNywxNjMgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c2hhZGVyU291cmNlKFBsYQogICAgIG1faW50ZXJuYWwt
PnNoYWRlclNvdXJjZSgoR0x1aW50KSBzaGFkZXIsIC8qIGNvdW50ICovIDEsICZkYXRhLCAmbGVu
Z3RoKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c3RlbmNpbEZ1bmModW5zaWduZWQg
bG9uZyBmdW5jLCBsb25nIHJlZiwgdW5zaWduZWQgbG9uZyBtYXNrKQordm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6c3RlbmNpbEZ1bmMoR0MzRGVudW0gZnVuYywgR0MzRGludCByZWYsIEdDM0R1aW50
IG1hc2spCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKICAg
ICBnbFN0ZW5jaWxGdW5jKGZ1bmMsIHJlZiwgbWFzayk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250
ZXh0M0Q6OnN0ZW5jaWxGdW5jU2VwYXJhdGUodW5zaWduZWQgbG9uZyBmYWNlLCB1bnNpZ25lZCBs
b25nIGZ1bmMsIGxvbmcgcmVmLCB1bnNpZ25lZCBsb25nIG1hc2spCit2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjpzdGVuY2lsRnVuY1NlcGFyYXRlKEdDM0RlbnVtIGZhY2UsIEdDM0RlbnVtIGZ1bmMs
IEdDM0RpbnQgcmVmLCBHQzNEdWludCBtYXNrKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRn
ZXQtPm1ha2VDdXJyZW50KCk7CiAgICAgbV9pbnRlcm5hbC0+c3RlbmNpbEZ1bmNTZXBhcmF0ZShm
YWNlLCBmdW5jLCByZWYsIG1hc2spOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpzdGVu
Y2lsTWFzayh1bnNpZ25lZCBsb25nIG1hc2spCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpzdGVu
Y2lsTWFzayhHQzNEdWludCBtYXNrKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1h
a2VDdXJyZW50KCk7CiAgICAgZ2xTdGVuY2lsTWFzayhtYXNrKTsKIH0KIAotdm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6c3RlbmNpbE1hc2tTZXBhcmF0ZSh1bnNpZ25lZCBsb25nIGZhY2UsIHVuc2ln
bmVkIGxvbmcgbWFzaykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnN0ZW5jaWxNYXNrU2VwYXJh
dGUoR0MzRGVudW0gZmFjZSwgR0MzRHVpbnQgbWFzaykKIHsKICAgICBtX2ludGVybmFsLT5tX2ds
V2lkZ2V0LT5tYWtlQ3VycmVudCgpOwogICAgIG1faW50ZXJuYWwtPnN0ZW5jaWxNYXNrU2VwYXJh
dGUoZmFjZSwgbWFzayk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnN0ZW5jaWxPcCh1
bnNpZ25lZCBsb25nIGZhaWwsIHVuc2lnbmVkIGxvbmcgemZhaWwsIHVuc2lnbmVkIGxvbmcgenBh
c3MpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpzdGVuY2lsT3AoR0MzRGVudW0gZmFpbCwgR0Mz
RGVudW0gemZhaWwsIEdDM0RlbnVtIHpwYXNzKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRn
ZXQtPm1ha2VDdXJyZW50KCk7CiAgICAgZ2xTdGVuY2lsT3AoZmFpbCwgemZhaWwsIHpwYXNzKTsK
IH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c3RlbmNpbE9wU2VwYXJhdGUodW5zaWduZWQg
bG9uZyBmYWNlLCB1bnNpZ25lZCBsb25nIGZhaWwsIHVuc2lnbmVkIGxvbmcgemZhaWwsIHVuc2ln
bmVkIGxvbmcgenBhc3MpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpzdGVuY2lsT3BTZXBhcmF0
ZShHQzNEZW51bSBmYWNlLCBHQzNEZW51bSBmYWlsLCBHQzNEZW51bSB6ZmFpbCwgR0MzRGVudW0g
enBhc3MpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKICAg
ICBtX2ludGVybmFsLT5zdGVuY2lsT3BTZXBhcmF0ZShmYWNlLCBmYWlsLCB6ZmFpbCwgenBhc3Mp
OwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp0ZXhQYXJhbWV0ZXJmKHVuc2lnbmVkIHRh
cmdldCwgdW5zaWduZWQgcGFyYW1OYW1lLCBmbG9hdCB2YWx1ZSkKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0M0Q6OnRleFBhcmFtZXRlcmYoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBwYXJhbU5hbWUs
IEdDM0RmbG9hdCB2YWx1ZSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3Vy
cmVudCgpOwotICAgIGdsVGV4UGFyYW1ldGVyZih0YXJnZXQsIHBhcmFtTmFtZSwgc3RhdGljX2Nh
c3Q8ZmxvYXQ+KHZhbHVlKSk7CisgICAgZ2xUZXhQYXJhbWV0ZXJmKHRhcmdldCwgcGFyYW1OYW1l
LCB2YWx1ZSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnRleFBhcmFtZXRlcmkodW5z
aWduZWQgdGFyZ2V0LCB1bnNpZ25lZCBwYXJhbU5hbWUsIGludCB2YWx1ZSkKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OnRleFBhcmFtZXRlcmkoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBwYXJh
bU5hbWUsIEdDM0RpbnQgdmFsdWUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFr
ZUN1cnJlbnQoKTsKLSAgICBnbFRleFBhcmFtZXRlcmkodGFyZ2V0LCBwYXJhbU5hbWUsIHN0YXRp
Y19jYXN0PGZsb2F0Pih2YWx1ZSkpOworICAgIGdsVGV4UGFyYW1ldGVyaSh0YXJnZXQsIHBhcmFt
TmFtZSwgdmFsdWUpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMWYobG9u
ZyBsb2NhdGlvbiwgZmxvYXQgdjApCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMWYo
R0MzRGludCBsb2NhdGlvbiwgR0MzRGZsb2F0IHYwKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xX
aWRnZXQtPm1ha2VDdXJyZW50KCk7CiAgICAgbV9pbnRlcm5hbC0+dW5pZm9ybTFmKGxvY2F0aW9u
LCB2MCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0xZnYobG9uZyBsb2Nh
dGlvbiwgZmxvYXQqIGFycmF5LCBpbnQgc2l6ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVu
aWZvcm0xZnYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGZsb2F0KiBhcnJheSwgR0MzRHNpemVpIHNp
emUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKICAgICBt
X2ludGVybmFsLT51bmlmb3JtMWZ2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CiB9CiAKLXZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0yZihsb25nIGxvY2F0aW9uLCBmbG9hdCB2MCwgZmxv
YXQgdjEpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMmYoR0MzRGludCBsb2NhdGlv
biwgR0MzRGZsb2F0IHYwLCBHQzNEZmxvYXQgdjEpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdp
ZGdldC0+bWFrZUN1cnJlbnQoKTsKICAgICBtX2ludGVybmFsLT51bmlmb3JtMmYobG9jYXRpb24s
IHYwLCB2MSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0yZnYobG9uZyBs
b2NhdGlvbiwgZmxvYXQqIGFycmF5LCBpbnQgc2l6ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6
OnVuaWZvcm0yZnYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGZsb2F0KiBhcnJheSwgR0MzRHNpemVp
IHNpemUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKICAg
ICBtX2ludGVybmFsLT51bmlmb3JtMmZ2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CiB9CiAKLXZv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0zZihsb25nIGxvY2F0aW9uLCBmbG9hdCB2MCwg
ZmxvYXQgdjEsIGZsb2F0IHYyKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTNmKEdD
M0RpbnQgbG9jYXRpb24sIEdDM0RmbG9hdCB2MCwgR0MzRGZsb2F0IHYxLCBHQzNEZmxvYXQgdjIp
CiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKICAgICBtX2lu
dGVybmFsLT51bmlmb3JtM2YobG9jYXRpb24sIHYwLCB2MSwgdjIpOwogfQogCi12b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjp1bmlmb3JtM2Z2KGxvbmcgbG9jYXRpb24sIGZsb2F0KiBhcnJheSwgaW50
IHNpemUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtM2Z2KEdDM0RpbnQgbG9jYXRp
b24sIEdDM0RmbG9hdCogYXJyYXksIEdDM0RzaXplaSBzaXplKQogewogICAgIG1faW50ZXJuYWwt
Pm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CiAgICAgbV9pbnRlcm5hbC0+dW5pZm9ybTNmdihs
b2NhdGlvbiwgc2l6ZSwgYXJyYXkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlm
b3JtNGYobG9uZyBsb2NhdGlvbiwgZmxvYXQgdjAsIGZsb2F0IHYxLCBmbG9hdCB2MiwgZmxvYXQg
djMpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtNGYoR0MzRGludCBsb2NhdGlvbiwg
R0MzRGZsb2F0IHYwLCBHQzNEZmxvYXQgdjEsIEdDM0RmbG9hdCB2MiwgR0MzRGZsb2F0IHYzKQog
ewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CiAgICAgbV9pbnRl
cm5hbC0+dW5pZm9ybTRmKGxvY2F0aW9uLCB2MCwgdjEsIHYyLCB2Myk7CiB9CiAKLXZvaWQgR3Jh
cGhpY3NDb250ZXh0M0Q6OnVuaWZvcm00ZnYobG9uZyBsb2NhdGlvbiwgZmxvYXQqIGFycmF5LCBp
bnQgc2l6ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm00ZnYoR0MzRGludCBsb2Nh
dGlvbiwgR0MzRGZsb2F0KiBhcnJheSwgR0MzRHNpemVpIHNpemUpCiB7CiAgICAgbV9pbnRlcm5h
bC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKICAgICBtX2ludGVybmFsLT51bmlmb3JtNGZ2
KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVu
aWZvcm0xaShsb25nIGxvY2F0aW9uLCBpbnQgdjApCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1
bmlmb3JtMWkoR0MzRGludCBsb2NhdGlvbiwgR0MzRGludCB2MCkKIHsKICAgICBtX2ludGVybmFs
LT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwogICAgIG1faW50ZXJuYWwtPnVuaWZvcm0xaShs
b2NhdGlvbiwgdjApOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMWl2KGxv
bmcgbG9jYXRpb24sIGludCogYXJyYXksIGludCBzaXplKQordm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6dW5pZm9ybTFpdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEaW50KiBhcnJheSwgR0MzRHNpemVp
IHNpemUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKICAg
ICBtX2ludGVybmFsLT51bmlmb3JtMWl2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CiB9CiAKLXZv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0yaShsb25nIGxvY2F0aW9uLCBpbnQgdjAsIGlu
dCB2MSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0yaShHQzNEaW50IGxvY2F0aW9u
LCBHQzNEaW50IHYwLCBHQzNEaW50IHYxKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQt
Pm1ha2VDdXJyZW50KCk7CiAgICAgbV9pbnRlcm5hbC0+dW5pZm9ybTJpKGxvY2F0aW9uLCB2MCwg
djEpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMml2KGxvbmcgbG9jYXRp
b24sIGludCogYXJyYXksIGludCBzaXplKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9y
bTJpdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEaW50KiBhcnJheSwgR0MzRHNpemVpIHNpemUpCiB7
CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKICAgICBtX2ludGVy
bmFsLT51bmlmb3JtMml2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CiB9CiAKLXZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OnVuaWZvcm0zaShsb25nIGxvY2F0aW9uLCBpbnQgdjAsIGludCB2MSwgaW50
IHYyKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTNpKEdDM0RpbnQgbG9jYXRpb24s
IEdDM0RpbnQgdjAsIEdDM0RpbnQgdjEsIEdDM0RpbnQgdjIpCiB7CiAgICAgbV9pbnRlcm5hbC0+
bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKICAgICBtX2ludGVybmFsLT51bmlmb3JtM2kobG9j
YXRpb24sIHYwLCB2MSwgdjIpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3Jt
M2l2KGxvbmcgbG9jYXRpb24sIGludCogYXJyYXksIGludCBzaXplKQordm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6dW5pZm9ybTNpdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEaW50KiBhcnJheSwgR0Mz
RHNpemVpIHNpemUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQo
KTsKICAgICBtX2ludGVybmFsLT51bmlmb3JtM2l2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CiB9
CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm00aShsb25nIGxvY2F0aW9uLCBpbnQg
djAsIGludCB2MSwgaW50IHYyLCBpbnQgdjMpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlm
b3JtNGkoR0MzRGludCBsb2NhdGlvbiwgR0MzRGludCB2MCwgR0MzRGludCB2MSwgR0MzRGludCB2
MiwgR0MzRGludCB2MykKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVu
dCgpOwogICAgIG1faW50ZXJuYWwtPnVuaWZvcm00aShsb2NhdGlvbiwgdjAsIHYxLCB2MiwgdjMp
OwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtNGl2KGxvbmcgbG9jYXRpb24s
IGludCogYXJyYXksIGludCBzaXplKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTRp
dihHQzNEaW50IGxvY2F0aW9uLCBHQzNEaW50KiBhcnJheSwgR0MzRHNpemVpIHNpemUpCiB7CiAg
ICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKICAgICBtX2ludGVybmFs
LT51bmlmb3JtNGl2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CiB9CiAKLXZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OnVuaWZvcm1NYXRyaXgyZnYobG9uZyBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2Us
IGZsb2F0KiBhcnJheSwgaW50IHNpemUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3Jt
TWF0cml4MmZ2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0Rib29sZWFuIHRyYW5zcG9zZSwgR0MzRGZs
b2F0KiBhcnJheSwgR0MzRHNpemVpIHNpemUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdl
dC0+bWFrZUN1cnJlbnQoKTsKICAgICBtX2ludGVybmFsLT51bmlmb3JtTWF0cml4MmZ2KGxvY2F0
aW9uLCBzaXplLCB0cmFuc3Bvc2UsIGFycmF5KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6dW5pZm9ybU1hdHJpeDNmdihsb25nIGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgZmxvYXQq
IGFycmF5LCBpbnQgc2l6ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm1NYXRyaXgz
ZnYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGJvb2xlYW4gdHJhbnNwb3NlLCBHQzNEZmxvYXQqIGFy
cmF5LCBHQzNEc2l6ZWkgc2l6ZSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtl
Q3VycmVudCgpOwogICAgIG1faW50ZXJuYWwtPnVuaWZvcm1NYXRyaXgzZnYobG9jYXRpb24sIHNp
emUsIHRyYW5zcG9zZSwgYXJyYXkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlm
b3JtTWF0cml4NGZ2KGxvbmcgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBmbG9hdCogYXJyYXks
IGludCBzaXplKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybU1hdHJpeDRmdihHQzNE
aW50IGxvY2F0aW9uLCBHQzNEYm9vbGVhbiB0cmFuc3Bvc2UsIEdDM0RmbG9hdCogYXJyYXksIEdD
M0RzaXplaSBzaXplKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50
KCk7CiAgICAgbV9pbnRlcm5hbC0+dW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbiwgc2l6ZSwgdHJh
bnNwb3NlLCBhcnJheSk7CkBAIC0xMjg0LDcgKzEyODQsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjp1c2VQcm9ncmFtKFBsYXRmCiAgICAgQVNTRVJUKHByb2dyYW0pOwogICAgIAogICAgIG1f
aW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dXNl
UHJvZ3JhbSgoR0x1aW50KSBwcm9ncmFtKTsKKyAgICBtX2ludGVybmFsLT51c2VQcm9ncmFtKHBy
b2dyYW0pOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2YWxpZGF0ZVByb2dyYW0oUGxh
dGZvcm0zRE9iamVjdCBwcm9ncmFtKQpAQCAtMTI5MiwxMTkgKzEyOTIsMTE5IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0M0Q6OnZhbGlkYXRlUHJvZ3JhbSgKICAgICBBU1NFUlQocHJvZ3JhbSk7CiAg
ICAgCiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2lu
dGVybmFsLT52YWxpZGF0ZVByb2dyYW0oKEdMdWludCkgcHJvZ3JhbSk7CisgICAgbV9pbnRlcm5h
bC0+dmFsaWRhdGVQcm9ncmFtKHByb2dyYW0pOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNE
Ojp2ZXJ0ZXhBdHRyaWIxZih1bnNpZ25lZCBsb25nIGluZHgsIGZsb2F0IHYwKQordm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliMWYoR0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCB2
MCkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1f
aW50ZXJuYWwtPnZlcnRleEF0dHJpYjFmKGluZHgsIHYwKTsKKyAgICBtX2ludGVybmFsLT52ZXJ0
ZXhBdHRyaWIxZihpbmRleCwgdjApOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0
ZXhBdHRyaWIxZnYodW5zaWduZWQgbG9uZyBpbmR4LCBmbG9hdCogYXJyYXkpCit2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIxZnYoR0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCog
YXJyYXkpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAg
ICBtX2ludGVybmFsLT52ZXJ0ZXhBdHRyaWIxZnYoaW5keCwgYXJyYXkpOworICAgIG1faW50ZXJu
YWwtPnZlcnRleEF0dHJpYjFmdihpbmRleCwgYXJyYXkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjp2ZXJ0ZXhBdHRyaWIyZih1bnNpZ25lZCBsb25nIGluZHgsIGZsb2F0IHYwLCBmbG9h
dCB2MSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjJmKEdDM0R1aW50IGlu
ZGV4LCBHQzNEZmxvYXQgdjAsIEdDM0RmbG9hdCB2MSkKIHsKICAgICBtX2ludGVybmFsLT5tX2ds
V2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnZlcnRleEF0dHJpYjJmKGlu
ZHgsIHYwLCB2MSk7CisgICAgbV9pbnRlcm5hbC0+dmVydGV4QXR0cmliMmYoaW5kZXgsIHYwLCB2
MSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjJmdih1bnNpZ25l
ZCBsb25nIGluZHgsIGZsb2F0KiBhcnJheSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRl
eEF0dHJpYjJmdihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0KiBhcnJheSkKIHsKICAgICBtX2lu
dGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnZlcnRl
eEF0dHJpYjJmdihpbmR4LCBhcnJheSk7CisgICAgbV9pbnRlcm5hbC0+dmVydGV4QXR0cmliMmZ2
KGluZGV4LCBhcnJheSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJp
YjNmKHVuc2lnbmVkIGxvbmcgaW5keCwgZmxvYXQgdjAsIGZsb2F0IHYxLCBmbG9hdCB2MikKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjNmKEdDM0R1aW50IGluZGV4LCBHQzNE
ZmxvYXQgdjAsIEdDM0RmbG9hdCB2MSwgR0MzRGZsb2F0IHYyKQogewogICAgIG1faW50ZXJuYWwt
Pm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dmVydGV4QXR0cmli
M2YoaW5keCwgdjAsIHYxLCB2Mik7CisgICAgbV9pbnRlcm5hbC0+dmVydGV4QXR0cmliM2YoaW5k
ZXgsIHYwLCB2MSwgdjIpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRy
aWIzZnYodW5zaWduZWQgbG9uZyBpbmR4LCBmbG9hdCogYXJyYXkpCit2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjp2ZXJ0ZXhBdHRyaWIzZnYoR0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCogYXJyYXkp
CiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2lu
dGVybmFsLT52ZXJ0ZXhBdHRyaWIzZnYoaW5keCwgYXJyYXkpOworICAgIG1faW50ZXJuYWwtPnZl
cnRleEF0dHJpYjNmdihpbmRleCwgYXJyYXkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNE
Ojp2ZXJ0ZXhBdHRyaWI0Zih1bnNpZ25lZCBsb25nIGluZHgsIGZsb2F0IHYwLCBmbG9hdCB2MSwg
ZmxvYXQgdjIsIGZsb2F0IHYzKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmli
NGYoR0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCB2MCwgR0MzRGZsb2F0IHYxLCBHQzNEZmxvYXQg
djIsIEdDM0RmbG9hdCB2MykKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3Vy
cmVudCgpOwotICAgIG1faW50ZXJuYWwtPnZlcnRleEF0dHJpYjRmKGluZHgsIHYwLCB2MSwgdjIs
IHYzKTsKKyAgICBtX2ludGVybmFsLT52ZXJ0ZXhBdHRyaWI0ZihpbmRleCwgdjAsIHYxLCB2Miwg
djMpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWI0ZnYodW5zaWdu
ZWQgbG9uZyBpbmR4LCBmbG9hdCogYXJyYXkpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0
ZXhBdHRyaWI0ZnYoR0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCogYXJyYXkpCiB7CiAgICAgbV9p
bnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT52ZXJ0
ZXhBdHRyaWI0ZnYoaW5keCwgYXJyYXkpOworICAgIG1faW50ZXJuYWwtPnZlcnRleEF0dHJpYjRm
dihpbmRleCwgYXJyYXkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRy
aWJQb2ludGVyKHVuc2lnbmVkIGxvbmcgaW5keCwgaW50IHNpemUsIGludCB0eXBlLCBib29sIG5v
cm1hbGl6ZWQsIHVuc2lnbmVkIGxvbmcgc3RyaWRlLCB1bnNpZ25lZCBsb25nIG9mZnNldCkKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYlBvaW50ZXIoR0MzRHVpbnQgaW5kZXgs
IEdDM0RpbnQgc2l6ZSwgR0MzRGVudW0gdHlwZSwgR0MzRGJvb2xlYW4gbm9ybWFsaXplZCwgR0Mz
RHNpemVpIHN0cmlkZSwgR0MzRGludHB0ciBvZmZzZXQpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9n
bFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT52ZXJ0ZXhBdHRyaWJQb2lu
dGVyKGluZHgsIHNpemUsIHR5cGUsIG5vcm1hbGl6ZWQsIHN0cmlkZSwgcmVpbnRlcnByZXRfY2Fz
dDx2b2lkKj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KG9mZnNldCkpKTsKKyAgICBtX2ludGVybmFs
LT52ZXJ0ZXhBdHRyaWJQb2ludGVyKGluZGV4LCBzaXplLCB0eXBlLCBub3JtYWxpemVkLCBzdHJp
ZGUsIHJlaW50ZXJwcmV0X2Nhc3Q8R0x2b2lkKj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KG9mZnNl
dCkpKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dmlld3BvcnQobG9uZyB4LCBsb25n
IHksIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0KQordm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6dmlld3BvcnQoR0MzRGludCB4LCBHQzNEaW50IHksIEdDM0RzaXplaSB3
aWR0aCwgR0MzRHNpemVpIGhlaWdodCkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5t
YWtlQ3VycmVudCgpOwotICAgIGdsVmlld3BvcnQoc3RhdGljX2Nhc3Q8R0xpbnQ+KHgpLCBzdGF0
aWNfY2FzdDxHTGludD4oeSksIHN0YXRpY19jYXN0PEdMc2l6ZWk+KHdpZHRoKSwgc3RhdGljX2Nh
c3Q8R0xzaXplaT4oaGVpZ2h0KSk7CisgICAgZ2xWaWV3cG9ydCh4LCB5LCB3aWR0aCwgaGVpZ2h0
KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0Qm9vbGVhbnYodW5zaWduZWQgbG9u
ZyBwYXJhbU5hbWUsIHVuc2lnbmVkIGNoYXIqIHZhbHVlKQordm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6Z2V0Qm9vbGVhbnYoR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEYm9vbGVhbiogdmFsdWUpCiB7
CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKICAgICBnbEdldEJv
b2xlYW52KHBhcmFtTmFtZSwgdmFsdWUpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpn
ZXRCdWZmZXJQYXJhbWV0ZXJpdih1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBw
YXJhbU5hbWUsIGludCogdmFsdWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRCdWZmZXJQ
YXJhbWV0ZXJpdihHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGludCog
dmFsdWUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKICAg
ICBtX2ludGVybmFsLT5nZXRCdWZmZXJQYXJhbWV0ZXJpdih0YXJnZXQsIHBhcmFtTmFtZSwgdmFs
dWUpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRGbG9hdHYodW5zaWduZWQgbG9u
ZyBwYXJhbU5hbWUsIGZsb2F0KiB2YWx1ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEZs
b2F0dihHQzNEZW51bSBwYXJhbU5hbWUsIEdDM0RmbG9hdCogdmFsdWUpCiB7CiAgICAgbV9pbnRl
cm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKICAgICBnbEdldEZsb2F0dihwYXJhbU5h
bWUsIHZhbHVlKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0RnJhbWVidWZmZXJB
dHRhY2htZW50UGFyYW1ldGVyaXYodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcg
YXR0YWNobWVudCwgdW5zaWduZWQgbG9uZyBwYXJhbU5hbWUsIGludCogdmFsdWUpCit2b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdihHQzNE
ZW51bSB0YXJnZXQsIEdDM0RlbnVtIGF0dGFjaG1lbnQsIEdDM0RlbnVtIHBhcmFtTmFtZSwgR0Mz
RGludCogdmFsdWUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQo
KTsKICAgICBtX2ludGVybmFsLT5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdih0
YXJnZXQsIGF0dGFjaG1lbnQsIHBhcmFtTmFtZSwgdmFsdWUpOwogfQogCi12b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjpnZXRJbnRlZ2Vydih1bnNpZ25lZCBsb25nIHBhcmFtTmFtZSwgaW50KiB2YWx1
ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEludGVnZXJ2KEdDM0RlbnVtIHBhcmFtTmFt
ZSwgR0MzRGludCogdmFsdWUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1
cnJlbnQoKTsKICAgICBnbEdldEludGVnZXJ2KHBhcmFtTmFtZSwgdmFsdWUpOwogfQogCi12b2lk
IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRQcm9ncmFtaXYoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFt
LCB1bnNpZ25lZCBsb25nIHBhcmFtTmFtZSwgaW50KiB2YWx1ZSkKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0M0Q6OmdldFByb2dyYW1pdihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIEdDM0RlbnVtIHBh
cmFtTmFtZSwgR0MzRGludCogdmFsdWUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+
bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5nZXRQcm9ncmFtaXYoKEdMdWludCkgcHJv
Z3JhbSwgcGFyYW1OYW1lLCB2YWx1ZSk7CisgICAgbV9pbnRlcm5hbC0+Z2V0UHJvZ3JhbWl2KHBy
b2dyYW0sIHBhcmFtTmFtZSwgdmFsdWUpOwogfQogCiBTdHJpbmcgR3JhcGhpY3NDb250ZXh0M0Q6
OmdldFByb2dyYW1JbmZvTG9nKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSkKIHsKICAgICBtX2lu
dGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwogCi0gICAgR0xpbnQgbGVuZ3RoOwot
ICAgIG1faW50ZXJuYWwtPmdldFByb2dyYW1pdigoR0x1aW50KSBwcm9ncmFtLCBHcmFwaGljc0Nv
bnRleHQzRDo6SU5GT19MT0dfTEVOR1RILCAmbGVuZ3RoKTsKKyAgICBHTGludCBsZW5ndGggPSAw
OworICAgIG1faW50ZXJuYWwtPmdldFByb2dyYW1pdihwcm9ncmFtLCBHcmFwaGljc0NvbnRleHQz
RDo6SU5GT19MT0dfTEVOR1RILCAmbGVuZ3RoKTsKIAotICAgIEdMc2l6ZWkgc2l6ZTsKKyAgICBH
THNpemVpIHNpemUgPSAwOwogCiAgICAgR0xjaGFyKiBpbmZvID0gKEdMY2hhciopIGZhc3RNYWxs
b2MobGVuZ3RoKTsKICAgICBpZiAoIWluZm8pCiAgICAgICAgIHJldHVybiAiIjsKIAotICAgIG1f
aW50ZXJuYWwtPmdldFByb2dyYW1JbmZvTG9nKChHTHVpbnQpIHByb2dyYW0sIGxlbmd0aCwgJnNp
emUsIGluZm8pOworICAgIG1faW50ZXJuYWwtPmdldFByb2dyYW1JbmZvTG9nKHByb2dyYW0sIGxl
bmd0aCwgJnNpemUsIGluZm8pOwogCiAgICAgU3RyaW5nIHJlc3VsdChpbmZvKTsKICAgICBmYXN0
RnJlZShpbmZvKTsKQEAgLTE0MTIsMzIgKzE0MTIsMzIgQEAgU3RyaW5nIEdyYXBoaWNzQ29udGV4
dDNEOjpnZXRQcm9ncmFtSW5mbwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KHVuc2lnbmVkIGxvbmcgdGFy
Z2V0LCB1bnNpZ25lZCBsb25nIHBhcmFtTmFtZSwgaW50KiB2YWx1ZSkKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KEdDM0RlbnVtIHRhcmdldCwgR0Mz
RGVudW0gcGFyYW1OYW1lLCBHQzNEaW50KiB2YWx1ZSkKIHsKICAgICBtX2ludGVybmFsLT5tX2ds
V2lkZ2V0LT5tYWtlQ3VycmVudCgpOwogICAgIG1faW50ZXJuYWwtPmdldFJlbmRlcmJ1ZmZlclBh
cmFtZXRlcml2KHRhcmdldCwgcGFyYW1OYW1lLCB2YWx1ZSk7CiB9CiAKLXZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OmdldFNoYWRlcml2KFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyLCB1bnNpZ25lZCBs
b25nIHBhcmFtTmFtZSwgaW50KiB2YWx1ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFNo
YWRlcml2KFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyLCBHQzNEZW51bSBwYXJhbU5hbWUsIEdDM0Rp
bnQqIHZhbHVlKQogewogICAgIEFTU0VSVChzaGFkZXIpOwogICAgIG1faW50ZXJuYWwtPm1fZ2xX
aWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+Z2V0U2hhZGVyaXYoKEdMdWlu
dCkgc2hhZGVyLCBwYXJhbU5hbWUsIHZhbHVlKTsKKyAgICBtX2ludGVybmFsLT5nZXRTaGFkZXJp
dihzaGFkZXIsIHBhcmFtTmFtZSwgdmFsdWUpOwogfQogCiBTdHJpbmcgR3JhcGhpY3NDb250ZXh0
M0Q6OmdldFNoYWRlckluZm9Mb2coUGxhdGZvcm0zRE9iamVjdCBzaGFkZXIpCiB7CiAgICAgbV9p
bnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKIAotICAgIEdMaW50IGxlbmd0aDsK
LSAgICBtX2ludGVybmFsLT5nZXRTaGFkZXJpdigoR0x1aW50KSBzaGFkZXIsIEdyYXBoaWNzQ29u
dGV4dDNEOjpJTkZPX0xPR19MRU5HVEgsICZsZW5ndGgpOworICAgIEdMaW50IGxlbmd0aCA9IDA7
CisgICAgbV9pbnRlcm5hbC0+Z2V0U2hhZGVyaXYoc2hhZGVyLCBHcmFwaGljc0NvbnRleHQzRDo6
SU5GT19MT0dfTEVOR1RILCAmbGVuZ3RoKTsKIAotICAgIEdMc2l6ZWkgc2l6ZTsKKyAgICBHTHNp
emVpIHNpemUgPSAwOwogICAgIEdMY2hhciogaW5mbyA9IChHTGNoYXIqKSBmYXN0TWFsbG9jKGxl
bmd0aCk7CiAgICAgaWYgKCFpbmZvKQogICAgICAgICByZXR1cm4gIiI7CiAKLSAgICBtX2ludGVy
bmFsLT5nZXRTaGFkZXJJbmZvTG9nKChHTHVpbnQpIHNoYWRlciwgbGVuZ3RoLCAmc2l6ZSwgaW5m
byk7CisgICAgbV9pbnRlcm5hbC0+Z2V0U2hhZGVySW5mb0xvZyhzaGFkZXIsIGxlbmd0aCwgJnNp
emUsIGluZm8pOwogCiAgICAgU3RyaW5nIHJlc3VsdChpbmZvKTsKICAgICBmYXN0RnJlZShpbmZv
KTsKQEAgLTE0NDksMTUgKzE0NDksMTUgQEAgU3RyaW5nIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRT
aGFkZXJTb3VyYwogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7
CiAKLSAgICBHTGludCBsZW5ndGg7Ci0gICAgbV9pbnRlcm5hbC0+Z2V0U2hhZGVyaXYoKEdMdWlu
dCkgc2hhZGVyLCBHcmFwaGljc0NvbnRleHQzRDo6U0hBREVSX1NPVVJDRV9MRU5HVEgsICZsZW5n
dGgpOworICAgIEdMaW50IGxlbmd0aCA9IDA7CisgICAgbV9pbnRlcm5hbC0+Z2V0U2hhZGVyaXYo
c2hhZGVyLCBHcmFwaGljc0NvbnRleHQzRDo6U0hBREVSX1NPVVJDRV9MRU5HVEgsICZsZW5ndGgp
OwogCi0gICAgR0xzaXplaSBzaXplOworICAgIEdMc2l6ZWkgc2l6ZSA9IDA7CiAgICAgR0xjaGFy
KiBpbmZvID0gKEdMY2hhciopIGZhc3RNYWxsb2MobGVuZ3RoKTsKICAgICBpZiAoIWluZm8pCiAg
ICAgICAgIHJldHVybiAiIjsKIAotICAgIG1faW50ZXJuYWwtPmdldFNoYWRlclNvdXJjZSgoR0x1
aW50KSBzaGFkZXIsIGxlbmd0aCwgJnNpemUsIGluZm8pOworICAgIG1faW50ZXJuYWwtPmdldFNo
YWRlclNvdXJjZShzaGFkZXIsIGxlbmd0aCwgJnNpemUsIGluZm8pOwogCiAgICAgU3RyaW5nIHJl
c3VsdChpbmZvKTsKICAgICBmYXN0RnJlZShpbmZvKTsKQEAgLTE0NjUsMjggKzE0NjUsMjggQEAg
U3RyaW5nIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRTaGFkZXJTb3VyYwogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFRleFBhcmFtZXRlcmZ2KHVuc2ln
bmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBhcmFtTmFtZSwgZmxvYXQqIHZhbHVlKQor
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VGV4UGFyYW1ldGVyZnYoR0MzRGVudW0gdGFyZ2V0
LCBHQzNEZW51bSBwYXJhbU5hbWUsIEdDM0RmbG9hdCogdmFsdWUpCiB7CiAgICAgbV9pbnRlcm5h
bC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKICAgICBnbEdldFRleFBhcmFtZXRlcmZ2KHRh
cmdldCwgcGFyYW1OYW1lLCB2YWx1ZSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6Omdl
dFRleFBhcmFtZXRlcml2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBhcmFt
TmFtZSwgaW50KiB2YWx1ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFRleFBhcmFtZXRl
cml2KEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEaW50KiB2YWx1ZSkK
IHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwogICAgIGdsR2V0
VGV4UGFyYW1ldGVyaXYodGFyZ2V0LCBwYXJhbU5hbWUsIHZhbHVlKTsKIH0KIAotdm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6Z2V0VW5pZm9ybWZ2KFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgbG9u
ZyBsb2NhdGlvbiwgZmxvYXQqIHZhbHVlKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VW5p
Zm9ybWZ2KFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgR0MzRGludCBsb2NhdGlvbiwgR0MzRGZs
b2F0KiB2YWx1ZSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgp
OwotICAgIG1faW50ZXJuYWwtPmdldFVuaWZvcm1mdigoR0x1aW50KSBwcm9ncmFtLCBsb2NhdGlv
biwgdmFsdWUpOworICAgIG1faW50ZXJuYWwtPmdldFVuaWZvcm1mdihwcm9ncmFtLCBsb2NhdGlv
biwgdmFsdWUpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRVbmlmb3JtaXYoUGxh
dGZvcm0zRE9iamVjdCBwcm9ncmFtLCBsb25nIGxvY2F0aW9uLCBpbnQqIHZhbHVlKQordm9pZCBH
cmFwaGljc0NvbnRleHQzRDo6Z2V0VW5pZm9ybWl2KFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwg
R0MzRGludCBsb2NhdGlvbiwgR0MzRGludCogdmFsdWUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9n
bFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5nZXRVbmlmb3JtaXYoKEdM
dWludCkgcHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlKTsKKyAgICBtX2ludGVybmFsLT5nZXRVbmlm
b3JtaXYocHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlKTsKIH0KIAogbG9uZyBHcmFwaGljc0NvbnRl
eHQzRDo6Z2V0VW5pZm9ybUxvY2F0aW9uKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgY29uc3Qg
U3RyaW5nJiBuYW1lKQpAQCAtMTQ5NCwxMjYgKzE0OTQsMTI0IEBAIGxvbmcgR3JhcGhpY3NDb250
ZXh0M0Q6OmdldFVuaWZvcm1Mb2NhdGkKICAgICBBU1NFUlQocHJvZ3JhbSk7CiAgICAgCiAgICAg
bV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICByZXR1cm4gbV9pbnRl
cm5hbC0+Z2V0VW5pZm9ybUxvY2F0aW9uKChHTHVpbnQpIHByb2dyYW0sIG5hbWUudXRmOCgpLmRh
dGEoKSk7CisgICAgcmV0dXJuIG1faW50ZXJuYWwtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFt
LCBuYW1lLnV0ZjgoKS5kYXRhKCkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRW
ZXJ0ZXhBdHRyaWJmdih1bnNpZ25lZCBsb25nIGluZGV4LCB1bnNpZ25lZCBsb25nIHBhcmFtTmFt
ZSwgZmxvYXQqIHZhbHVlKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VmVydGV4QXR0cmli
ZnYoR0MzRHVpbnQgaW5kZXgsIEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGZsb2F0KiB2YWx1ZSkK
IHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwogICAgIG1faW50
ZXJuYWwtPmdldFZlcnRleEF0dHJpYmZ2KGluZGV4LCBwYXJhbU5hbWUsIHZhbHVlKTsKIH0KIAot
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VmVydGV4QXR0cmliaXYodW5zaWduZWQgbG9uZyBp
bmRleCwgdW5zaWduZWQgbG9uZyBwYXJhbU5hbWUsIGludCogdmFsdWUpCit2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJpdihHQzNEdWludCBpbmRleCwgR0MzRGVudW0gcGFy
YW1OYW1lLCBHQzNEaW50KiB2YWx1ZSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5t
YWtlQ3VycmVudCgpOwogICAgIG1faW50ZXJuYWwtPmdldFZlcnRleEF0dHJpYml2KGluZGV4LCBw
YXJhbU5hbWUsIHZhbHVlKTsKIH0KIAotbG9uZyBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VmVydGV4
QXR0cmliT2Zmc2V0KHVuc2lnbmVkIGxvbmcgaW5kZXgsIHVuc2lnbmVkIGxvbmcgcGFyYW1OYW1l
KQorR0MzRHNpemVpcHRyIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQo
R0MzRHVpbnQgaW5kZXgsIEdDM0RlbnVtIHBhcmFtTmFtZSkKIHsKICAgICBtX2ludGVybmFsLT5t
X2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwogICAgIAotICAgIHZvaWQqIHBvaW50ZXI7CisgICAg
R0x2b2lkKiBwb2ludGVyID0gMDsKICAgICBtX2ludGVybmFsLT5nZXRWZXJ0ZXhBdHRyaWJQb2lu
dGVydihpbmRleCwgcGFyYW1OYW1lLCAmcG9pbnRlcik7Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8bG9uZz4ocG9pbnRlcik7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDM0RzaXplaXB0
cj4ocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4ocG9pbnRlcikpOwogfQogCi1pbnQgR3JhcGhp
Y3NDb250ZXh0M0Q6OnRleEltYWdlMkQodW5zaWduZWQgdGFyZ2V0LCB1bnNpZ25lZCBsZXZlbCwg
dW5zaWduZWQgaW50ZXJuYWxmb3JtYXQsIHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQs
IHVuc2lnbmVkIGJvcmRlciwgdW5zaWduZWQgZm9ybWF0LCB1bnNpZ25lZCB0eXBlLCB2b2lkKiBw
aXhlbHMpCitib29sIEdyYXBoaWNzQ29udGV4dDNEOjp0ZXhJbWFnZTJEKEdDM0RlbnVtIHRhcmdl
dCwgR0MzRGludCBsZXZlbCwgR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDM0RzaXplaSB3aWR0
aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGludCBib3JkZXIsIEdDM0RlbnVtIGZvcm1hdCwgR0Mz
RGVudW0gdHlwZSwgY29uc3Qgdm9pZCogcGl4ZWxzKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xX
aWRnZXQtPm1ha2VDdXJyZW50KCk7CiAgICAgZ2xUZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGlu
dGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgcGl4ZWxz
KTsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAotICAgCi1pbnQgR3JhcGhp
Y3NDb250ZXh0M0Q6OnRleFN1YkltYWdlMkQodW5zaWduZWQgdGFyZ2V0LCB1bnNpZ25lZCBsZXZl
bCwgdW5zaWduZWQgeG9mZiwgdW5zaWduZWQgeW9mZiwgdW5zaWduZWQgd2lkdGgsIHVuc2lnbmVk
IGhlaWdodCwgdW5zaWduZWQgZm9ybWF0LCB1bnNpZ25lZCB0eXBlLCB2b2lkKiBwaXhlbHMpCit2
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp0ZXhTdWJJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0Mz
RGludCBsZXZlbCwgR0MzRGludCB4b2ZmLCBHQzNEaW50IHlvZmYsIEdDM0RzaXplaSB3aWR0aCwg
R0MzRHNpemVpIGhlaWdodCwgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBlLCBjb25zdCB2
b2lkKiBwaXhlbHMpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQo
KTsKICAgICBnbFRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZiwgeW9mZiwgd2lkdGgs
IGhlaWdodCwgZm9ybWF0LCB0eXBlLCBwaXhlbHMpOwotICAgIHJldHVybiAwOwogfQogCi11bnNp
Z25lZCBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlQnVmZmVyKCkKK1BsYXRmb3JtM0RPYmplY3Qg
R3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZUJ1ZmZlcigpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9n
bFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBHTHVpbnQgaGFuZGxlOworICAgIEdMdWludCBo
YW5kbGUgPSAwOwogICAgIG1faW50ZXJuYWwtPmdlbkJ1ZmZlcnMoLyogY291bnQgKi8gMSwgJmhh
bmRsZSk7CiAgICAgcmV0dXJuIGhhbmRsZTsKIH0KIAotdW5zaWduZWQgR3JhcGhpY3NDb250ZXh0
M0Q6OmNyZWF0ZUZyYW1lYnVmZmVyKCkKK1BsYXRmb3JtM0RPYmplY3QgR3JhcGhpY3NDb250ZXh0
M0Q6OmNyZWF0ZUZyYW1lYnVmZmVyKCkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5t
YWtlQ3VycmVudCgpOwotICAgIEdMdWludCBoYW5kbGU7CisgICAgR0x1aW50IGhhbmRsZSA9IDA7
CiAgICAgbV9pbnRlcm5hbC0+Z2VuRnJhbWVidWZmZXJzKC8qIGNvdW50ICovIDEsICZoYW5kbGUp
OwogICAgIHJldHVybiBoYW5kbGU7CiB9CiAKLXVuc2lnbmVkIEdyYXBoaWNzQ29udGV4dDNEOjpj
cmVhdGVQcm9ncmFtKCkKK1BsYXRmb3JtM0RPYmplY3QgR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0
ZVByb2dyYW0oKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7
CiAgICAgcmV0dXJuIG1faW50ZXJuYWwtPmNyZWF0ZVByb2dyYW0oKTsKIH0KIAotdW5zaWduZWQg
R3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZVJlbmRlcmJ1ZmZlcigpCitQbGF0Zm9ybTNET2JqZWN0
IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVSZW5kZXJidWZmZXIoKQogewogICAgIG1faW50ZXJu
YWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgR0x1aW50IGhhbmRsZTsKKyAgICBH
THVpbnQgaGFuZGxlID0gMDsKICAgICBtX2ludGVybmFsLT5nZW5SZW5kZXJidWZmZXJzKC8qIGNv
dW50ICovIDEsICZoYW5kbGUpOwogICAgIHJldHVybiBoYW5kbGU7CiB9CiAKLXVuc2lnbmVkIEdy
YXBoaWNzQ29udGV4dDNEOjpjcmVhdGVTaGFkZXIodW5zaWduZWQgbG9uZyB0eXBlKQorUGxhdGZv
cm0zRE9iamVjdCBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlU2hhZGVyKEdDM0RlbnVtIHR5cGUp
CiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICByZXR1
cm4gbV9pbnRlcm5hbC0+Y3JlYXRlU2hhZGVyKCh0eXBlID09IEZSQUdNRU5UX1NIQURFUikgPyBH
cmFwaGljc0NvbnRleHQzRDo6RlJBR01FTlRfU0hBREVSIDogR3JhcGhpY3NDb250ZXh0M0Q6OlZF
UlRFWF9TSEFERVIpOworICAgIHJldHVybiBtX2ludGVybmFsLT5jcmVhdGVTaGFkZXIodHlwZSk7
CiB9CiAKLXVuc2lnbmVkIEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVUZXh0dXJlKCkKK1BsYXRm
b3JtM0RPYmplY3QgR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZVRleHR1cmUoKQogewogICAgIG1f
aW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgR0x1aW50IGhhbmRsZTsK
KyAgICBHTHVpbnQgaGFuZGxlID0gMDsKICAgICBnbEdlblRleHR1cmVzKDEsICZoYW5kbGUpOwog
ICAgIHJldHVybiBoYW5kbGU7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRlbGV0ZUJ1
ZmZlcih1bnNpZ25lZCBidWZmZXIpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkZWxldGVCdWZm
ZXIoUGxhdGZvcm0zRE9iamVjdCBidWZmZXIpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdl
dC0+bWFrZUN1cnJlbnQoKTsKICAgICBtX2ludGVybmFsLT5kZWxldGVCdWZmZXJzKDEsICZidWZm
ZXIpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkZWxldGVGcmFtZWJ1ZmZlcih1bnNp
Z25lZCBmcmFtZWJ1ZmZlcikKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRlbGV0ZUZyYW1lYnVm
ZmVyKFBsYXRmb3JtM0RPYmplY3QgZnJhbWVidWZmZXIpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9n
bFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKICAgICBtX2ludGVybmFsLT5kZWxldGVGcmFtZWJ1ZmZl
cnMoMSwgJmZyYW1lYnVmZmVyKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGVsZXRl
UHJvZ3JhbSh1bnNpZ25lZCBwcm9ncmFtKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGVsZXRl
UHJvZ3JhbShQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0pCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9n
bFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKICAgICBtX2ludGVybmFsLT5kZWxldGVQcm9ncmFtKHBy
b2dyYW0pOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkZWxldGVSZW5kZXJidWZmZXIo
dW5zaWduZWQgcmVuZGVyYnVmZmVyKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGVsZXRlUmVu
ZGVyYnVmZmVyKFBsYXRmb3JtM0RPYmplY3QgcmVuZGVyYnVmZmVyKQogewogICAgIG1faW50ZXJu
YWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CiAgICAgbV9pbnRlcm5hbC0+ZGVsZXRlUmVu
ZGVyYnVmZmVycygxLCAmcmVuZGVyYnVmZmVyKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6ZGVsZXRlU2hhZGVyKHVuc2lnbmVkIHNoYWRlcikKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6
OmRlbGV0ZVNoYWRlcihQbGF0Zm9ybTNET2JqZWN0IHNoYWRlcikKIHsKICAgICBtX2ludGVybmFs
LT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwogICAgIG1faW50ZXJuYWwtPmRlbGV0ZVNoYWRl
cihzaGFkZXIpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkZWxldGVUZXh0dXJlKHVu
c2lnbmVkIHRleHR1cmUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkZWxldGVUZXh0dXJlKFBs
YXRmb3JtM0RPYmplY3QgdGV4dHVyZSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5t
YWtlQ3VycmVudCgpOwogICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJnRleHR1cmUpOwogfQogCi1p
bnQgR3JhcGhpY3NDb250ZXh0M0Q6OnNpemVJbkJ5dGVzKGludCB0eXBlKQordW5zaWduZWQgaW50
IEdyYXBoaWNzQ29udGV4dDNEOjpzaXplSW5CeXRlcyhHQzNEZW51bSB0eXBlKQogewogICAgIHN3
aXRjaCAodHlwZSkgewogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkJZVEU6CkBAIC0xNjM1
LDcgKzE2MzMsNyBAQCBpbnQgR3JhcGhpY3NDb250ZXh0M0Q6OnNpemVJbkJ5dGVzKGludCB0CiAg
ICAgfQogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpzeW50aGVzaXplR0xFcnJvcih1bnNp
Z25lZCBsb25nIGVycm9yKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c3ludGhlc2l6ZUdMRXJy
b3IoR0MzRGVudW0gZXJyb3IpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9zeW50aGV0aWNFcnJvcnMu
YWRkKGVycm9yKTsKIH0KQEAgLTE2NDgsOCArMTY0Niw4IEBAIEV4dGVuc2lvbnMzRCogR3JhcGhp
Y3NDb250ZXh0M0Q6OmdldEV4dGUKIH0KIAogYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0SW1h
Z2VEYXRhKEltYWdlKiBpbWFnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBpbnQgZm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGludCB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdDM0RlbnVtIGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHQzNEZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJv
b2wgcHJlbXVsdGlwbHlBbHBoYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBib29sIGlnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFZlY3Rvcjx1aW50OF90PiYgb3V0cHV0VmVjdG9yKQpJbmRleDogV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0dyYXBoaWNzQ29udGV4dDNEU2tpYS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0dyYXBoaWNzQ29udGV4
dDNEU2tpYS5jcHAJKHJldmlzaW9uIDc0OTcwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9za2lhL0dyYXBoaWNzQ29udGV4dDNEU2tpYS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDgg
KzQxLDggQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6
Z2V0SW1hZ2VEYXRhKEltYWdlKiBpbWFnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBpbnQgZm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGludCB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdDM0RlbnVtIGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHQzNEZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBib29sIGlnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFZlY3Rvcjx1aW50OF90PiYgb3V0cHV0VmVjdG9yKQpJbmRl
eDogV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA3NTA5NikKKysrIFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzNCBAQAorMjAxMS0wMS0wNSAgWmhlbnlhbyBN
byAgPHptb0Bnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIERlZmluZSBHQzNEIHR5cGVzIHRvIG1hdGNoIEdMIHR5cGVzIGFuZCB1c2Ug
dGhlbSBpbiBHcmFwaGljc0NvbnRleHQzRAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NDU1NTcKKworICAgICAgICAqIHNyYy9HcmFwaGljc0NvbnRleHQz
RENocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJu
YWw6OmJpbmRBdHRyaWJMb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzREludGVybmFsOjpidWZmZXJEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNESW50ZXJuYWw6OmJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0RJbnRlcm5hbDo6Z2V0QWN0aXZlQXR0cmliKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmdldEFjdGl2ZVVuaWZvcm0pOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Z2V0QXR0cmliTG9jYXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Z2V0U3RyaW5nKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmdldFVuaWZvcm1M
b2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp0
ZXhJbWFnZTJEKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6
OnRleFN1YkltYWdlMkQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRl
cm5hbDo6dW5pZm9ybTFmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRElu
dGVybmFsOjp1bmlmb3JtMWl2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
SW50ZXJuYWw6OnVuaWZvcm0yZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0RJbnRlcm5hbDo6dW5pZm9ybTJpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzREludGVybmFsOjp1bmlmb3JtM2Z2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNESW50ZXJuYWw6OnVuaWZvcm0zaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0RJbnRlcm5hbDo6dW5pZm9ybTRmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzREludGVybmFsOjp1bmlmb3JtNGl2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNESW50ZXJuYWw6OnVuaWZvcm1NYXRyaXgyZnYpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dW5pZm9ybU1hdHJpeDNmdik6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp1bmlmb3JtTWF0cml4NGZ2KToK
KyAgICAgICAgKiBzcmMvR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbC5oOgorCiAyMDExLTAxLTA1
ICBIYW5zIFdlbm5ib3JnICA8aGFuc0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgRGF2aWQgTGV2aW4uCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4
dDNEQ2hyb21pdW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhp
Y3NDb250ZXh0M0RDaHJvbWl1bS5jcHAJKHJldmlzaW9uIDc0OTcwKQorKysgV2ViS2l0L2Nocm9t
aXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRENocm9taXVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzY4LDc2ICszNjgsNzYgQEAgcnQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6bmFtZSh0MSBh
MQogfQogCiBERUxFR0FURV9UT19JTVBMX1IobWFrZUNvbnRleHRDdXJyZW50LCBib29sKQotREVM
RUdBVEVfVE9fSU1QTF8xUihzaXplSW5CeXRlcywgaW50LCBpbnQpCitERUxFR0FURV9UT19JTVBM
XzFSKHNpemVJbkJ5dGVzLCBHQzNEZW51bSwgdW5zaWduZWQgaW50KQogCiBib29sIEdyYXBoaWNz
Q29udGV4dDNESW50ZXJuYWw6OmlzR0xFUzJDb21wbGlhbnQoKSBjb25zdAogewogICAgIHJldHVy
biBtX2ltcGwtPmlzR0xFUzJDb21wbGlhbnQoKTsKIH0KIAotREVMRUdBVEVfVE9fSU1QTF8xKGFj
dGl2ZVRleHR1cmUsIHVuc2lnbmVkIGxvbmcpCitERUxFR0FURV9UT19JTVBMXzEoYWN0aXZlVGV4
dHVyZSwgR0MzRGVudW0pCiBERUxFR0FURV9UT19JTVBMXzIoYXR0YWNoU2hhZGVyLCBQbGF0Zm9y
bTNET2JqZWN0LCBQbGF0Zm9ybTNET2JqZWN0KQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNESW50
ZXJuYWw6OmJpbmRBdHRyaWJMb2NhdGlvbihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIHVuc2ln
bmVkIGxvbmcgaW5kZXgsIGNvbnN0IFN0cmluZyYgbmFtZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
M0RJbnRlcm5hbDo6YmluZEF0dHJpYkxvY2F0aW9uKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwg
R0MzRHVpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICBtX2ltcGwtPmJpbmRB
dHRyaWJMb2NhdGlvbihwcm9ncmFtLCBpbmRleCwgbmFtZS51dGY4KCkuZGF0YSgpKTsKIH0KIAot
REVMRUdBVEVfVE9fSU1QTF8yKGJpbmRCdWZmZXIsIHVuc2lnbmVkIGxvbmcsIFBsYXRmb3JtM0RP
YmplY3QpCi1ERUxFR0FURV9UT19JTVBMXzIoYmluZEZyYW1lYnVmZmVyLCB1bnNpZ25lZCBsb25n
LCBQbGF0Zm9ybTNET2JqZWN0KQotREVMRUdBVEVfVE9fSU1QTF8yKGJpbmRSZW5kZXJidWZmZXIs
IHVuc2lnbmVkIGxvbmcsIFBsYXRmb3JtM0RPYmplY3QpCi1ERUxFR0FURV9UT19JTVBMXzIoYmlu
ZFRleHR1cmUsIHVuc2lnbmVkIGxvbmcsIFBsYXRmb3JtM0RPYmplY3QpCi1ERUxFR0FURV9UT19J
TVBMXzQoYmxlbmRDb2xvciwgZG91YmxlLCBkb3VibGUsIGRvdWJsZSwgZG91YmxlKQotREVMRUdB
VEVfVE9fSU1QTF8xKGJsZW5kRXF1YXRpb24sIHVuc2lnbmVkIGxvbmcpCi1ERUxFR0FURV9UT19J
TVBMXzIoYmxlbmRFcXVhdGlvblNlcGFyYXRlLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25n
KQotREVMRUdBVEVfVE9fSU1QTF8yKGJsZW5kRnVuYywgdW5zaWduZWQgbG9uZywgdW5zaWduZWQg
bG9uZykKLURFTEVHQVRFX1RPX0lNUExfNChibGVuZEZ1bmNTZXBhcmF0ZSwgdW5zaWduZWQgbG9u
ZywgdW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZykKK0RFTEVHQVRF
X1RPX0lNUExfMihiaW5kQnVmZmVyLCBHQzNEZW51bSwgUGxhdGZvcm0zRE9iamVjdCkKK0RFTEVH
QVRFX1RPX0lNUExfMihiaW5kRnJhbWVidWZmZXIsIEdDM0RlbnVtLCBQbGF0Zm9ybTNET2JqZWN0
KQorREVMRUdBVEVfVE9fSU1QTF8yKGJpbmRSZW5kZXJidWZmZXIsIEdDM0RlbnVtLCBQbGF0Zm9y
bTNET2JqZWN0KQorREVMRUdBVEVfVE9fSU1QTF8yKGJpbmRUZXh0dXJlLCBHQzNEZW51bSwgUGxh
dGZvcm0zRE9iamVjdCkKK0RFTEVHQVRFX1RPX0lNUExfNChibGVuZENvbG9yLCBHQzNEY2xhbXBm
LCBHQzNEY2xhbXBmLCBHQzNEY2xhbXBmLCBHQzNEY2xhbXBmKQorREVMRUdBVEVfVE9fSU1QTF8x
KGJsZW5kRXF1YXRpb24sIEdDM0RlbnVtKQorREVMRUdBVEVfVE9fSU1QTF8yKGJsZW5kRXF1YXRp
b25TZXBhcmF0ZSwgR0MzRGVudW0sIEdDM0RlbnVtKQorREVMRUdBVEVfVE9fSU1QTF8yKGJsZW5k
RnVuYywgR0MzRGVudW0sIEdDM0RlbnVtKQorREVMRUdBVEVfVE9fSU1QTF80KGJsZW5kRnVuY1Nl
cGFyYXRlLCBHQzNEZW51bSwgR0MzRGVudW0sIEdDM0RlbnVtLCBHQzNEZW51bSkKIAotdm9pZCBH
cmFwaGljc0NvbnRleHQzREludGVybmFsOjpidWZmZXJEYXRhKHVuc2lnbmVkIGxvbmcgdGFyZ2V0
LCBpbnQgc2l6ZSwgdW5zaWduZWQgbG9uZyB1c2FnZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJ
bnRlcm5hbDo6YnVmZmVyRGF0YShHQzNEZW51bSB0YXJnZXQsIEdDM0RzaXplaXB0ciBzaXplLCBH
QzNEZW51bSB1c2FnZSkKIHsKICAgICBtX2ltcGwtPmJ1ZmZlckRhdGEodGFyZ2V0LCBzaXplLCAw
LCB1c2FnZSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6YnVmZmVyRGF0
YSh1bnNpZ25lZCBsb25nIHRhcmdldCwgaW50IHNpemUsIGNvbnN0IHZvaWQqIGRhdGEsIHVuc2ln
bmVkIGxvbmcgdXNhZ2UpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmJ1ZmZlckRh
dGEoR0MzRGVudW0gdGFyZ2V0LCBHQzNEc2l6ZWlwdHIgc2l6ZSwgY29uc3Qgdm9pZCogZGF0YSwg
R0MzRGVudW0gdXNhZ2UpCiB7CiAgICAgbV9pbXBsLT5idWZmZXJEYXRhKHRhcmdldCwgc2l6ZSwg
ZGF0YSwgdXNhZ2UpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmJ1ZmZl
clN1YkRhdGEodW5zaWduZWQgbG9uZyB0YXJnZXQsIGxvbmcgb2Zmc2V0LCBpbnQgc2l6ZSwgY29u
c3Qgdm9pZCogZGF0YSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6YnVmZmVyU3Vi
RGF0YShHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnRwdHIgb2Zmc2V0LCBHQzNEc2l6ZWlwdHIgc2l6
ZSwgY29uc3Qgdm9pZCogZGF0YSkKIHsKICAgICBtX2ltcGwtPmJ1ZmZlclN1YkRhdGEodGFyZ2V0
LCBvZmZzZXQsIHNpemUsIGRhdGEpOwogfQogCi1ERUxFR0FURV9UT19JTVBMXzFSKGNoZWNrRnJh
bWVidWZmZXJTdGF0dXMsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcpCi1ERUxFR0FURV9U
T19JTVBMXzEoY2xlYXIsIHVuc2lnbmVkIGxvbmcpCi1ERUxFR0FURV9UT19JTVBMXzQoY2xlYXJD
b2xvciwgZG91YmxlLCBkb3VibGUsIGRvdWJsZSwgZG91YmxlKQotREVMRUdBVEVfVE9fSU1QTF8x
KGNsZWFyRGVwdGgsIGRvdWJsZSkKLURFTEVHQVRFX1RPX0lNUExfMShjbGVhclN0ZW5jaWwsIGxv
bmcpCi1ERUxFR0FURV9UT19JTVBMXzQoY29sb3JNYXNrLCBib29sLCBib29sLCBib29sLCBib29s
KQorREVMRUdBVEVfVE9fSU1QTF8xUihjaGVja0ZyYW1lYnVmZmVyU3RhdHVzLCBHQzNEZW51bSwg
R0MzRGVudW0pCitERUxFR0FURV9UT19JTVBMXzEoY2xlYXIsIEdDM0RiaXRmaWVsZCkKK0RFTEVH
QVRFX1RPX0lNUExfNChjbGVhckNvbG9yLCBHQzNEY2xhbXBmLCBHQzNEY2xhbXBmLCBHQzNEY2xh
bXBmLCBHQzNEY2xhbXBmKQorREVMRUdBVEVfVE9fSU1QTF8xKGNsZWFyRGVwdGgsIEdDM0RjbGFt
cGYpCitERUxFR0FURV9UT19JTVBMXzEoY2xlYXJTdGVuY2lsLCBHQzNEaW50KQorREVMRUdBVEVf
VE9fSU1QTF80KGNvbG9yTWFzaywgR0MzRGJvb2xlYW4sIEdDM0Rib29sZWFuLCBHQzNEYm9vbGVh
biwgR0MzRGJvb2xlYW4pCiBERUxFR0FURV9UT19JTVBMXzEoY29tcGlsZVNoYWRlciwgUGxhdGZv
cm0zRE9iamVjdCkKIAotREVMRUdBVEVfVE9fSU1QTF84KGNvcHlUZXhJbWFnZTJELCB1bnNpZ25l
ZCBsb25nLCBsb25nLCB1bnNpZ25lZCBsb25nLCBsb25nLCBsb25nLCB1bnNpZ25lZCBsb25nLCB1
bnNpZ25lZCBsb25nLCBsb25nKQotREVMRUdBVEVfVE9fSU1QTF84KGNvcHlUZXhTdWJJbWFnZTJE
LCB1bnNpZ25lZCBsb25nLCBsb25nLCBsb25nLCBsb25nLCBsb25nLCBsb25nLCB1bnNpZ25lZCBs
b25nLCB1bnNpZ25lZCBsb25nKQotREVMRUdBVEVfVE9fSU1QTF8xKGN1bGxGYWNlLCB1bnNpZ25l
ZCBsb25nKQotREVMRUdBVEVfVE9fSU1QTF8xKGRlcHRoRnVuYywgdW5zaWduZWQgbG9uZykKLURF
TEVHQVRFX1RPX0lNUExfMShkZXB0aE1hc2ssIGJvb2wpCi1ERUxFR0FURV9UT19JTVBMXzIoZGVw
dGhSYW5nZSwgZG91YmxlLCBkb3VibGUpCitERUxFR0FURV9UT19JTVBMXzgoY29weVRleEltYWdl
MkQsIEdDM0RlbnVtLCBHQzNEaW50LCBHQzNEZW51bSwgR0MzRGludCwgR0MzRGludCwgR0MzRHNp
emVpLCBHQzNEc2l6ZWksIEdDM0RpbnQpCitERUxFR0FURV9UT19JTVBMXzgoY29weVRleFN1Yklt
YWdlMkQsIEdDM0RlbnVtLCBHQzNEaW50LCBHQzNEaW50LCBHQzNEaW50LCBHQzNEaW50LCBHQzNE
aW50LCBHQzNEc2l6ZWksIEdDM0RzaXplaSkKK0RFTEVHQVRFX1RPX0lNUExfMShjdWxsRmFjZSwg
R0MzRGVudW0pCitERUxFR0FURV9UT19JTVBMXzEoZGVwdGhGdW5jLCBHQzNEZW51bSkKK0RFTEVH
QVRFX1RPX0lNUExfMShkZXB0aE1hc2ssIEdDM0Rib29sZWFuKQorREVMRUdBVEVfVE9fSU1QTF8y
KGRlcHRoUmFuZ2UsIEdDM0RjbGFtcGYsIEdDM0RjbGFtcGYpCiBERUxFR0FURV9UT19JTVBMXzIo
ZGV0YWNoU2hhZGVyLCBQbGF0Zm9ybTNET2JqZWN0LCBQbGF0Zm9ybTNET2JqZWN0KQotREVMRUdB
VEVfVE9fSU1QTF8xKGRpc2FibGUsIHVuc2lnbmVkIGxvbmcpCi1ERUxFR0FURV9UT19JTVBMXzEo
ZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5LCB1bnNpZ25lZCBsb25nKQotREVMRUdBVEVfVE9fSU1Q
TF8zKGRyYXdBcnJheXMsIHVuc2lnbmVkIGxvbmcsIGxvbmcsIGxvbmcpCi1ERUxFR0FURV9UT19J
TVBMXzQoZHJhd0VsZW1lbnRzLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25l
ZCBsb25nLCBsb25nKQorREVMRUdBVEVfVE9fSU1QTF8xKGRpc2FibGUsIEdDM0RlbnVtKQorREVM
RUdBVEVfVE9fSU1QTF8xKGRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSwgR0MzRHVpbnQpCitERUxF
R0FURV9UT19JTVBMXzMoZHJhd0FycmF5cywgR0MzRGVudW0sIEdDM0RpbnQsIEdDM0RzaXplaSkK
K0RFTEVHQVRFX1RPX0lNUExfNChkcmF3RWxlbWVudHMsIEdDM0RlbnVtLCBHQzNEc2l6ZWksIEdD
M0RlbnVtLCBHQzNEc2l6ZWlwdHIpCiAKLURFTEVHQVRFX1RPX0lNUExfMShlbmFibGUsIHVuc2ln
bmVkIGxvbmcpCi1ERUxFR0FURV9UT19JTVBMXzEoZW5hYmxlVmVydGV4QXR0cmliQXJyYXksIHVu
c2lnbmVkIGxvbmcpCitERUxFR0FURV9UT19JTVBMXzEoZW5hYmxlLCBHQzNEZW51bSkKK0RFTEVH
QVRFX1RPX0lNUExfMShlbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSwgR0MzRHVpbnQpCiBERUxFR0FU
RV9UT19JTVBMKGZpbmlzaCkKIERFTEVHQVRFX1RPX0lNUEwoZmx1c2gpCi1ERUxFR0FURV9UT19J
TVBMXzQoZnJhbWVidWZmZXJSZW5kZXJidWZmZXIsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxv
bmcsIHVuc2lnbmVkIGxvbmcsIFBsYXRmb3JtM0RPYmplY3QpCi1ERUxFR0FURV9UT19JTVBMXzUo
ZnJhbWVidWZmZXJUZXh0dXJlMkQsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIHVuc2ln
bmVkIGxvbmcsIFBsYXRmb3JtM0RPYmplY3QsIGxvbmcpCi1ERUxFR0FURV9UT19JTVBMXzEoZnJv
bnRGYWNlLCB1bnNpZ25lZCBsb25nKQotREVMRUdBVEVfVE9fSU1QTF8xKGdlbmVyYXRlTWlwbWFw
LCB1bnNpZ25lZCBsb25nKQorREVMRUdBVEVfVE9fSU1QTF80KGZyYW1lYnVmZmVyUmVuZGVyYnVm
ZmVyLCBHQzNEZW51bSwgR0MzRGVudW0sIEdDM0RlbnVtLCBQbGF0Zm9ybTNET2JqZWN0KQorREVM
RUdBVEVfVE9fSU1QTF81KGZyYW1lYnVmZmVyVGV4dHVyZTJELCBHQzNEZW51bSwgR0MzRGVudW0s
IEdDM0RlbnVtLCBQbGF0Zm9ybTNET2JqZWN0LCBHQzNEaW50KQorREVMRUdBVEVfVE9fSU1QTF8x
KGZyb250RmFjZSwgR0MzRGVudW0pCitERUxFR0FURV9UT19JTVBMXzEoZ2VuZXJhdGVNaXBtYXAs
IEdDM0RlbnVtKQogCi1ib29sIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmdldEFjdGl2ZUF0
dHJpYihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIHVuc2lnbmVkIGxvbmcgaW5kZXgsIEFjdGl2
ZUluZm8mIGluZm8pCitib29sIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmdldEFjdGl2ZUF0
dHJpYihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIEdDM0R1aW50IGluZGV4LCBBY3RpdmVJbmZv
JiBpbmZvKQogewogICAgIFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0Q6OkFjdGl2ZUluZm8g
d2ViSW5mbzsKICAgICBpZiAoIW1faW1wbC0+Z2V0QWN0aXZlQXR0cmliKHByb2dyYW0sIGluZGV4
LCB3ZWJJbmZvKSkKQEAgLTQ0OCw3ICs0NDgsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNESW50
ZXJuYWw6OmdldEFjdGl2CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgR3JhcGhpY3NDb250
ZXh0M0RJbnRlcm5hbDo6Z2V0QWN0aXZlVW5pZm9ybShQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0s
IHVuc2lnbmVkIGxvbmcgaW5kZXgsIEFjdGl2ZUluZm8mIGluZm8pCitib29sIEdyYXBoaWNzQ29u
dGV4dDNESW50ZXJuYWw6OmdldEFjdGl2ZVVuaWZvcm0oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFt
LCBHQzNEdWludCBpbmRleCwgQWN0aXZlSW5mbyYgaW5mbykKIHsKICAgICBXZWJLaXQ6OldlYkdy
YXBoaWNzQ29udGV4dDNEOjpBY3RpdmVJbmZvIHdlYkluZm87CiAgICAgaWYgKCFtX2ltcGwtPmdl
dEFjdGl2ZVVuaWZvcm0ocHJvZ3JhbSwgaW5kZXgsIHdlYkluZm8pKQpAQCAtNDU5LDE2ICs0NTks
MTYgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpnZXRBY3RpdgogICAgIHJldHVy
biB0cnVlOwogfQogCi1ERUxFR0FURV9UT19JTVBMXzQoZ2V0QXR0YWNoZWRTaGFkZXJzLCBQbGF0
Zm9ybTNET2JqZWN0LCBpbnQsIGludCosIHVuc2lnbmVkIGludCopCitERUxFR0FURV9UT19JTVBM
XzQoZ2V0QXR0YWNoZWRTaGFkZXJzLCBQbGF0Zm9ybTNET2JqZWN0LCBHQzNEc2l6ZWksIEdDM0Rz
aXplaSosIFBsYXRmb3JtM0RPYmplY3QqKQogCi1pbnQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5h
bDo6Z2V0QXR0cmliTG9jYXRpb24oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBjb25zdCBTdHJp
bmcmIG5hbWUpCitHQzNEaW50IEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmdldEF0dHJpYkxv
Y2F0aW9uKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgY29uc3QgU3RyaW5nJiBuYW1lKQogewog
ICAgIHJldHVybiBtX2ltcGwtPmdldEF0dHJpYkxvY2F0aW9uKHByb2dyYW0sIG5hbWUudXRmOCgp
LmRhdGEoKSk7CiB9CiAKLURFTEVHQVRFX1RPX0lNUExfMihnZXRCb29sZWFudiwgdW5zaWduZWQg
bG9uZywgdW5zaWduZWQgY2hhciopCitERUxFR0FURV9UT19JTVBMXzIoZ2V0Qm9vbGVhbnYsIEdD
M0RlbnVtLCBHQzNEYm9vbGVhbiopCiAKLURFTEVHQVRFX1RPX0lNUExfMyhnZXRCdWZmZXJQYXJh
bWV0ZXJpdiwgdW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZywgaW50KikKK0RFTEVHQVRFX1RP
X0lNUExfMyhnZXRCdWZmZXJQYXJhbWV0ZXJpdiwgR0MzRGVudW0sIEdDM0RlbnVtLCBHQzNEaW50
KikKIAogR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgR3JhcGhpY3NDb250ZXh0M0RJbnRl
cm5hbDo6Z2V0Q29udGV4dEF0dHJpYnV0ZXMoKQogewpAQCAtNDgyLDI0ICs0ODIsMjQgQEAgR3Jh
cGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgR3JhcGhpY3NDbwogICAgIHJldHVybiBhdHRyaWJ1
dGVzOwogfQogCi1ERUxFR0FURV9UT19JTVBMX1IoZ2V0RXJyb3IsIHVuc2lnbmVkIGxvbmcpCitE
RUxFR0FURV9UT19JTVBMX1IoZ2V0RXJyb3IsIEdDM0RlbnVtKQogCi1ERUxFR0FURV9UT19JTVBM
XzIoZ2V0RmxvYXR2LCB1bnNpZ25lZCBsb25nLCBmbG9hdCopCitERUxFR0FURV9UT19JTVBMXzIo
Z2V0RmxvYXR2LCBHQzNEZW51bSwgR0MzRGZsb2F0KikKIAotREVMRUdBVEVfVE9fSU1QTF80KGdl
dEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2LCB1bnNpZ25lZCBsb25nLCB1bnNpZ25l
ZCBsb25nLCB1bnNpZ25lZCBsb25nLCBpbnQqKQorREVMRUdBVEVfVE9fSU1QTF80KGdldEZyYW1l
YnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2LCBHQzNEZW51bSwgR0MzRGVudW0sIEdDM0RlbnVt
LCBHQzNEaW50KikKIAotREVMRUdBVEVfVE9fSU1QTF8yKGdldEludGVnZXJ2LCB1bnNpZ25lZCBs
b25nLCBpbnQqKQorREVMRUdBVEVfVE9fSU1QTF8yKGdldEludGVnZXJ2LCBHQzNEZW51bSwgR0Mz
RGludCopCiAKLURFTEVHQVRFX1RPX0lNUExfMyhnZXRQcm9ncmFtaXYsIFBsYXRmb3JtM0RPYmpl
Y3QsIHVuc2lnbmVkIGxvbmcsIGludCopCitERUxFR0FURV9UT19JTVBMXzMoZ2V0UHJvZ3JhbWl2
LCBQbGF0Zm9ybTNET2JqZWN0LCBHQzNEZW51bSwgR0MzRGludCopCiAKIFN0cmluZyBHcmFwaGlj
c0NvbnRleHQzREludGVybmFsOjpnZXRQcm9ncmFtSW5mb0xvZyhQbGF0Zm9ybTNET2JqZWN0IHBy
b2dyYW0pCiB7CiAgICAgcmV0dXJuIG1faW1wbC0+Z2V0UHJvZ3JhbUluZm9Mb2cocHJvZ3JhbSk7
CiB9CiAKLURFTEVHQVRFX1RPX0lNUExfMyhnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdiwgdW5z
aWduZWQgbG9uZywgdW5zaWduZWQgbG9uZywgaW50KikKK0RFTEVHQVRFX1RPX0lNUExfMyhnZXRS
ZW5kZXJidWZmZXJQYXJhbWV0ZXJpdiwgR0MzRGVudW0sIEdDM0RlbnVtLCBHQzNEaW50KikKIAot
REVMRUdBVEVfVE9fSU1QTF8zKGdldFNoYWRlcml2LCBQbGF0Zm9ybTNET2JqZWN0LCB1bnNpZ25l
ZCBsb25nLCBpbnQqKQorREVMRUdBVEVfVE9fSU1QTF8zKGdldFNoYWRlcml2LCBQbGF0Zm9ybTNE
T2JqZWN0LCBHQzNEZW51bSwgR0MzRGludCopCiAKIFN0cmluZyBHcmFwaGljc0NvbnRleHQzRElu
dGVybmFsOjpnZXRTaGFkZXJJbmZvTG9nKFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyKQogewpAQCAt
NTExLDEzOSArNTExLDEzOCBAQCBTdHJpbmcgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Z2V0
U2hhCiAgICAgcmV0dXJuIG1faW1wbC0+Z2V0U2hhZGVyU291cmNlKHNoYWRlcik7CiB9CiAKLVN0
cmluZyBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpnZXRTdHJpbmcodW5zaWduZWQgbG9uZyBu
YW1lKQorU3RyaW5nIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmdldFN0cmluZyhHQzNEZW51
bSBuYW1lKQogewogICAgIHJldHVybiBtX2ltcGwtPmdldFN0cmluZyhuYW1lKTsKIH0KIAotREVM
RUdBVEVfVE9fSU1QTF8zKGdldFRleFBhcmFtZXRlcmZ2LCB1bnNpZ25lZCBsb25nLCB1bnNpZ25l
ZCBsb25nLCBmbG9hdCopCi1ERUxFR0FURV9UT19JTVBMXzMoZ2V0VGV4UGFyYW1ldGVyaXYsIHVu
c2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIGludCopCitERUxFR0FURV9UT19JTVBMXzMoZ2V0
VGV4UGFyYW1ldGVyZnYsIEdDM0RlbnVtLCBHQzNEZW51bSwgR0MzRGZsb2F0KikKK0RFTEVHQVRF
X1RPX0lNUExfMyhnZXRUZXhQYXJhbWV0ZXJpdiwgR0MzRGVudW0sIEdDM0RlbnVtLCBHQzNEaW50
KikKIAotREVMRUdBVEVfVE9fSU1QTF8zKGdldFVuaWZvcm1mdiwgUGxhdGZvcm0zRE9iamVjdCwg
bG9uZywgZmxvYXQqKQotREVMRUdBVEVfVE9fSU1QTF8zKGdldFVuaWZvcm1pdiwgUGxhdGZvcm0z
RE9iamVjdCwgbG9uZywgaW50KikKK0RFTEVHQVRFX1RPX0lNUExfMyhnZXRVbmlmb3JtZnYsIFBs
YXRmb3JtM0RPYmplY3QsIEdDM0RpbnQsIEdDM0RmbG9hdCopCitERUxFR0FURV9UT19JTVBMXzMo
Z2V0VW5pZm9ybWl2LCBQbGF0Zm9ybTNET2JqZWN0LCBHQzNEaW50LCBHQzNEaW50KikKIAotbG9u
ZyBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpnZXRVbmlmb3JtTG9jYXRpb24oUGxhdGZvcm0z
RE9iamVjdCBwcm9ncmFtLCBjb25zdCBTdHJpbmcmIG5hbWUpCitHQzNEaW50IEdyYXBoaWNzQ29u
dGV4dDNESW50ZXJuYWw6OmdldFVuaWZvcm1Mb2NhdGlvbihQbGF0Zm9ybTNET2JqZWN0IHByb2dy
YW0sIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICByZXR1cm4gbV9pbXBsLT5nZXRVbmlmb3Jt
TG9jYXRpb24ocHJvZ3JhbSwgbmFtZS51dGY4KCkuZGF0YSgpKTsKIH0KIAotREVMRUdBVEVfVE9f
SU1QTF8zKGdldFZlcnRleEF0dHJpYmZ2LCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCBm
bG9hdCopCi1ERUxFR0FURV9UT19JTVBMXzMoZ2V0VmVydGV4QXR0cmliaXYsIHVuc2lnbmVkIGxv
bmcsIHVuc2lnbmVkIGxvbmcsIGludCopCitERUxFR0FURV9UT19JTVBMXzMoZ2V0VmVydGV4QXR0
cmliZnYsIEdDM0R1aW50LCBHQzNEZW51bSwgR0MzRGZsb2F0KikKK0RFTEVHQVRFX1RPX0lNUExf
MyhnZXRWZXJ0ZXhBdHRyaWJpdiwgR0MzRHVpbnQsIEdDM0RlbnVtLCBHQzNEaW50KikKIAotREVM
RUdBVEVfVE9fSU1QTF8yUihnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQsIHVuc2lnbmVkIGxvbmcsIHVu
c2lnbmVkIGxvbmcsIGxvbmcpCitERUxFR0FURV9UT19JTVBMXzJSKGdldFZlcnRleEF0dHJpYk9m
ZnNldCwgR0MzRHVpbnQsIEdDM0RlbnVtLCBHQzNEc2l6ZWlwdHIpCiAKLURFTEVHQVRFX1RPX0lN
UExfMihoaW50LCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nKQotREVMRUdBVEVfVE9fSU1Q
TF8xUihpc0J1ZmZlciwgUGxhdGZvcm0zRE9iamVjdCwgYm9vbCkKLURFTEVHQVRFX1RPX0lNUExf
MVIoaXNFbmFibGVkLCB1bnNpZ25lZCBsb25nLCBib29sKQotREVMRUdBVEVfVE9fSU1QTF8xUihp
c0ZyYW1lYnVmZmVyLCBQbGF0Zm9ybTNET2JqZWN0LCBib29sKQotREVMRUdBVEVfVE9fSU1QTF8x
Uihpc1Byb2dyYW0sIFBsYXRmb3JtM0RPYmplY3QsIGJvb2wpCi1ERUxFR0FURV9UT19JTVBMXzFS
KGlzUmVuZGVyYnVmZmVyLCBQbGF0Zm9ybTNET2JqZWN0LCBib29sKQotREVMRUdBVEVfVE9fSU1Q
TF8xUihpc1NoYWRlciwgUGxhdGZvcm0zRE9iamVjdCwgYm9vbCkKLURFTEVHQVRFX1RPX0lNUExf
MVIoaXNUZXh0dXJlLCBQbGF0Zm9ybTNET2JqZWN0LCBib29sKQotREVMRUdBVEVfVE9fSU1QTF8x
KGxpbmVXaWR0aCwgZG91YmxlKQorREVMRUdBVEVfVE9fSU1QTF8yKGhpbnQsIEdDM0RlbnVtLCBH
QzNEZW51bSkKK0RFTEVHQVRFX1RPX0lNUExfMVIoaXNCdWZmZXIsIFBsYXRmb3JtM0RPYmplY3Qs
IEdDM0Rib29sZWFuKQorREVMRUdBVEVfVE9fSU1QTF8xUihpc0VuYWJsZWQsIEdDM0RlbnVtLCBH
QzNEYm9vbGVhbikKK0RFTEVHQVRFX1RPX0lNUExfMVIoaXNGcmFtZWJ1ZmZlciwgUGxhdGZvcm0z
RE9iamVjdCwgR0MzRGJvb2xlYW4pCitERUxFR0FURV9UT19JTVBMXzFSKGlzUHJvZ3JhbSwgUGxh
dGZvcm0zRE9iamVjdCwgR0MzRGJvb2xlYW4pCitERUxFR0FURV9UT19JTVBMXzFSKGlzUmVuZGVy
YnVmZmVyLCBQbGF0Zm9ybTNET2JqZWN0LCBHQzNEYm9vbGVhbikKK0RFTEVHQVRFX1RPX0lNUExf
MVIoaXNTaGFkZXIsIFBsYXRmb3JtM0RPYmplY3QsIEdDM0Rib29sZWFuKQorREVMRUdBVEVfVE9f
SU1QTF8xUihpc1RleHR1cmUsIFBsYXRmb3JtM0RPYmplY3QsIEdDM0Rib29sZWFuKQorREVMRUdB
VEVfVE9fSU1QTF8xKGxpbmVXaWR0aCwgR0MzRGZsb2F0KQogREVMRUdBVEVfVE9fSU1QTF8xKGxp
bmtQcm9ncmFtLCBQbGF0Zm9ybTNET2JqZWN0KQotREVMRUdBVEVfVE9fSU1QTF8yKHBpeGVsU3Rv
cmVpLCB1bnNpZ25lZCBsb25nLCBsb25nKQotREVMRUdBVEVfVE9fSU1QTF8yKHBvbHlnb25PZmZz
ZXQsIGRvdWJsZSwgZG91YmxlKQotREVMRUdBVEVfVE9fSU1QTF83KHJlYWRQaXhlbHMsIGxvbmcs
IGxvbmcsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIHVuc2ln
bmVkIGxvbmcsIHZvaWQqKQorREVMRUdBVEVfVE9fSU1QTF8yKHBpeGVsU3RvcmVpLCBHQzNEZW51
bSwgR0MzRGludCkKK0RFTEVHQVRFX1RPX0lNUExfMihwb2x5Z29uT2Zmc2V0LCBHQzNEZmxvYXQs
IEdDM0RmbG9hdCkKK0RFTEVHQVRFX1RPX0lNUExfNyhyZWFkUGl4ZWxzLCBHQzNEaW50LCBHQzNE
aW50LCBHQzNEc2l6ZWksIEdDM0RzaXplaSwgR0MzRGVudW0sIEdDM0RlbnVtLCB2b2lkKikKIERF
TEVHQVRFX1RPX0lNUEwocmVsZWFzZVNoYWRlckNvbXBpbGVyKQotREVMRUdBVEVfVE9fSU1QTF80
KHJlbmRlcmJ1ZmZlclN0b3JhZ2UsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIHVuc2ln
bmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcpCi1ERUxFR0FURV9UT19JTVBMXzIoc2FtcGxlQ292ZXJh
Z2UsIGRvdWJsZSwgYm9vbCkKLURFTEVHQVRFX1RPX0lNUExfNChzY2lzc29yLCBsb25nLCBsb25n
LCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nKQorREVMRUdBVEVfVE9fSU1QTF80KHJlbmRl
cmJ1ZmZlclN0b3JhZ2UsIEdDM0RlbnVtLCBHQzNEZW51bSwgR0MzRHNpemVpLCBHQzNEc2l6ZWkp
CitERUxFR0FURV9UT19JTVBMXzIoc2FtcGxlQ292ZXJhZ2UsIEdDM0RjbGFtcGYsIEdDM0Rib29s
ZWFuKQorREVMRUdBVEVfVE9fSU1QTF80KHNjaXNzb3IsIEdDM0RpbnQsIEdDM0RpbnQsIEdDM0Rz
aXplaSwgR0MzRHNpemVpKQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnNoYWRl
clNvdXJjZShQbGF0Zm9ybTNET2JqZWN0IHNoYWRlciwgY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7
CiAgICAgbV9pbXBsLT5zaGFkZXJTb3VyY2Uoc2hhZGVyLCBzdHJpbmcudXRmOCgpLmRhdGEoKSk7
CiB9CiAKLURFTEVHQVRFX1RPX0lNUExfMyhzdGVuY2lsRnVuYywgdW5zaWduZWQgbG9uZywgbG9u
ZywgdW5zaWduZWQgbG9uZykKLURFTEVHQVRFX1RPX0lNUExfNChzdGVuY2lsRnVuY1NlcGFyYXRl
LCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCBsb25nLCB1bnNpZ25lZCBsb25nKQotREVM
RUdBVEVfVE9fSU1QTF8xKHN0ZW5jaWxNYXNrLCB1bnNpZ25lZCBsb25nKQotREVMRUdBVEVfVE9f
SU1QTF8yKHN0ZW5jaWxNYXNrU2VwYXJhdGUsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcp
Ci1ERUxFR0FURV9UT19JTVBMXzMoc3RlbmNpbE9wLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBs
b25nLCB1bnNpZ25lZCBsb25nKQotREVMRUdBVEVfVE9fSU1QTF80KHN0ZW5jaWxPcFNlcGFyYXRl
LCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBs
b25nKQorREVMRUdBVEVfVE9fSU1QTF8zKHN0ZW5jaWxGdW5jLCBHQzNEZW51bSwgR0MzRGludCwg
R0MzRHVpbnQpCitERUxFR0FURV9UT19JTVBMXzQoc3RlbmNpbEZ1bmNTZXBhcmF0ZSwgR0MzRGVu
dW0sIEdDM0RlbnVtLCBHQzNEaW50LCBHQzNEdWludCkKK0RFTEVHQVRFX1RPX0lNUExfMShzdGVu
Y2lsTWFzaywgR0MzRHVpbnQpCitERUxFR0FURV9UT19JTVBMXzIoc3RlbmNpbE1hc2tTZXBhcmF0
ZSwgR0MzRGVudW0sIEdDM0R1aW50KQorREVMRUdBVEVfVE9fSU1QTF8zKHN0ZW5jaWxPcCwgR0Mz
RGVudW0sIEdDM0RlbnVtLCBHQzNEZW51bSkKK0RFTEVHQVRFX1RPX0lNUExfNChzdGVuY2lsT3BT
ZXBhcmF0ZSwgR0MzRGVudW0sIEdDM0RlbnVtLCBHQzNEZW51bSwgR0MzRGVudW0pCiAKLWludCBH
cmFwaGljc0NvbnRleHQzREludGVybmFsOjp0ZXhJbWFnZTJEKHVuc2lnbmVkIHRhcmdldCwgdW5z
aWduZWQgbGV2ZWwsIHVuc2lnbmVkIGludGVybmFsZm9ybWF0LCB1bnNpZ25lZCB3aWR0aCwgdW5z
aWduZWQgaGVpZ2h0LCB1bnNpZ25lZCBib3JkZXIsIHVuc2lnbmVkIGZvcm1hdCwgdW5zaWduZWQg
dHlwZSwgdm9pZCogcGl4ZWxzKQorYm9vbCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp0ZXhJ
bWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGVudW0gaW50ZXJuYWxm
b3JtYXQsIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGludCBib3JkZXIs
IEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVudW0gdHlwZSwgY29uc3Qgdm9pZCogcGl4ZWxzKQogewog
ICAgIG1faW1wbC0+dGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lk
dGgsIGhlaWdodCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIHBpeGVscyk7Ci0gICAgcmV0dXJuIDA7
CisgICAgcmV0dXJuIHRydWU7CiB9CiAKLURFTEVHQVRFX1RPX0lNUExfMyh0ZXhQYXJhbWV0ZXJm
LCB1bnNpZ25lZCwgdW5zaWduZWQsIGZsb2F0KQotREVMRUdBVEVfVE9fSU1QTF8zKHRleFBhcmFt
ZXRlcmksIHVuc2lnbmVkLCB1bnNpZ25lZCwgaW50KQorREVMRUdBVEVfVE9fSU1QTF8zKHRleFBh
cmFtZXRlcmYsIEdDM0RlbnVtLCBHQzNEZW51bSwgR0MzRGZsb2F0KQorREVMRUdBVEVfVE9fSU1Q
TF8zKHRleFBhcmFtZXRlcmksIEdDM0RlbnVtLCBHQzNEZW51bSwgR0MzRGludCkKIAotaW50IEdy
YXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnRleFN1YkltYWdlMkQodW5zaWduZWQgdGFyZ2V0LCB1
bnNpZ25lZCBsZXZlbCwgdW5zaWduZWQgeG9mZnNldCwgdW5zaWduZWQgeW9mZnNldCwgdW5zaWdu
ZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCwgdW5zaWduZWQgZm9ybWF0LCB1bnNpZ25lZCB0eXBl
LCB2b2lkKiBwaXhlbHMpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnRleFN1Yklt
YWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEaW50IHhvZmZzZXQsIEdD
M0RpbnQgeW9mZnNldCwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEZW51
bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUsIGNvbnN0IHZvaWQqIHBpeGVscykKIHsKICAgICBtX2lt
cGwtPnRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgs
IGhlaWdodCwgZm9ybWF0LCB0eXBlLCBwaXhlbHMpOwotICAgIHJldHVybiAwOwogfQogCi1ERUxF
R0FURV9UT19JTVBMXzIodW5pZm9ybTFmLCBsb25nLCBmbG9hdCkKK0RFTEVHQVRFX1RPX0lNUExf
Mih1bmlmb3JtMWYsIEdDM0RpbnQsIEdDM0RmbG9hdCkKIAotdm9pZCBHcmFwaGljc0NvbnRleHQz
REludGVybmFsOjp1bmlmb3JtMWZ2KGxvbmcgbG9jYXRpb24sIGZsb2F0KiB2LCBpbnQgc2l6ZSkK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dW5pZm9ybTFmdihHQzNEaW50IGxvY2F0
aW9uLCBHQzNEZmxvYXQqIHYsIEdDM0RzaXplaSBzaXplKQogewogICAgIG1faW1wbC0+dW5pZm9y
bTFmdihsb2NhdGlvbiwgc2l6ZSwgdik7CiB9CiAKLURFTEVHQVRFX1RPX0lNUExfMih1bmlmb3Jt
MWksIGxvbmcsIGludCkKK0RFTEVHQVRFX1RPX0lNUExfMih1bmlmb3JtMWksIEdDM0RpbnQsIEdD
M0RpbnQpCiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dW5pZm9ybTFpdihsb25n
IGxvY2F0aW9uLCBpbnQqIHYsIGludCBzaXplKQordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVy
bmFsOjp1bmlmb3JtMWl2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RpbnQqIHYsIEdDM0RzaXplaSBz
aXplKQogewogICAgIG1faW1wbC0+dW5pZm9ybTFpdihsb2NhdGlvbiwgc2l6ZSwgdik7CiB9CiAK
LURFTEVHQVRFX1RPX0lNUExfMyh1bmlmb3JtMmYsIGxvbmcsIGZsb2F0LCBmbG9hdCkKK0RFTEVH
QVRFX1RPX0lNUExfMyh1bmlmb3JtMmYsIEdDM0RpbnQsIEdDM0RmbG9hdCwgR0MzRGZsb2F0KQog
Ci12b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnVuaWZvcm0yZnYobG9uZyBsb2NhdGlv
biwgZmxvYXQqIHYsIGludCBzaXplKQordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp1
bmlmb3JtMmZ2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RmbG9hdCogdiwgR0MzRHNpemVpIHNpemUp
CiB7CiAgICAgbV9pbXBsLT51bmlmb3JtMmZ2KGxvY2F0aW9uLCBzaXplLCB2KTsKIH0KIAotREVM
RUdBVEVfVE9fSU1QTF8zKHVuaWZvcm0yaSwgbG9uZywgaW50LCBpbnQpCitERUxFR0FURV9UT19J
TVBMXzModW5pZm9ybTJpLCBHQzNEaW50LCBHQzNEaW50LCBHQzNEaW50KQogCi12b2lkIEdyYXBo
aWNzQ29udGV4dDNESW50ZXJuYWw6OnVuaWZvcm0yaXYobG9uZyBsb2NhdGlvbiwgaW50KiB2LCBp
bnQgc2l6ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dW5pZm9ybTJpdihHQzNE
aW50IGxvY2F0aW9uLCBHQzNEaW50KiB2LCBHQzNEc2l6ZWkgc2l6ZSkKIHsKICAgICBtX2ltcGwt
PnVuaWZvcm0yaXYobG9jYXRpb24sIHNpemUsIHYpOwogfQogCi1ERUxFR0FURV9UT19JTVBMXzQo
dW5pZm9ybTNmLCBsb25nLCBmbG9hdCwgZmxvYXQsIGZsb2F0KQorREVMRUdBVEVfVE9fSU1QTF80
KHVuaWZvcm0zZiwgR0MzRGludCwgR0MzRGZsb2F0LCBHQzNEZmxvYXQsIEdDM0RmbG9hdCkKIAot
dm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp1bmlmb3JtM2Z2KGxvbmcgbG9jYXRpb24s
IGZsb2F0KiB2LCBpbnQgc2l6ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dW5p
Zm9ybTNmdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQqIHYsIEdDM0RzaXplaSBzaXplKQog
ewogICAgIG1faW1wbC0+dW5pZm9ybTNmdihsb2NhdGlvbiwgc2l6ZSwgdik7CiB9CiAKLURFTEVH
QVRFX1RPX0lNUExfNCh1bmlmb3JtM2ksIGxvbmcsIGludCwgaW50LCBpbnQpCitERUxFR0FURV9U
T19JTVBMXzQodW5pZm9ybTNpLCBHQzNEaW50LCBHQzNEaW50LCBHQzNEaW50LCBHQzNEaW50KQog
Ci12b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnVuaWZvcm0zaXYobG9uZyBsb2NhdGlv
biwgaW50KiB2LCBpbnQgc2l6ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dW5p
Zm9ybTNpdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEaW50KiB2LCBHQzNEc2l6ZWkgc2l6ZSkKIHsK
ICAgICBtX2ltcGwtPnVuaWZvcm0zaXYobG9jYXRpb24sIHNpemUsIHYpOwogfQogCi1ERUxFR0FU
RV9UT19JTVBMXzUodW5pZm9ybTRmLCBsb25nLCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCkK
K0RFTEVHQVRFX1RPX0lNUExfNSh1bmlmb3JtNGYsIEdDM0RpbnQsIEdDM0RmbG9hdCwgR0MzRGZs
b2F0LCBHQzNEZmxvYXQsIEdDM0RmbG9hdCkKIAotdm9pZCBHcmFwaGljc0NvbnRleHQzREludGVy
bmFsOjp1bmlmb3JtNGZ2KGxvbmcgbG9jYXRpb24sIGZsb2F0KiB2LCBpbnQgc2l6ZSkKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dW5pZm9ybTRmdihHQzNEaW50IGxvY2F0aW9uLCBH
QzNEZmxvYXQqIHYsIEdDM0RzaXplaSBzaXplKQogewogICAgIG1faW1wbC0+dW5pZm9ybTRmdihs
b2NhdGlvbiwgc2l6ZSwgdik7CiB9CiAKLURFTEVHQVRFX1RPX0lNUExfNSh1bmlmb3JtNGksIGxv
bmcsIGludCwgaW50LCBpbnQsIGludCkKK0RFTEVHQVRFX1RPX0lNUExfNSh1bmlmb3JtNGksIEdD
M0RpbnQsIEdDM0RpbnQsIEdDM0RpbnQsIEdDM0RpbnQsIEdDM0RpbnQpCiAKLXZvaWQgR3JhcGhp
Y3NDb250ZXh0M0RJbnRlcm5hbDo6dW5pZm9ybTRpdihsb25nIGxvY2F0aW9uLCBpbnQqIHYsIGlu
dCBzaXplKQordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp1bmlmb3JtNGl2KEdDM0Rp
bnQgbG9jYXRpb24sIEdDM0RpbnQqIHYsIEdDM0RzaXplaSBzaXplKQogewogICAgIG1faW1wbC0+
dW5pZm9ybTRpdihsb2NhdGlvbiwgc2l6ZSwgdik7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0
M0RJbnRlcm5hbDo6dW5pZm9ybU1hdHJpeDJmdihsb25nIGxvY2F0aW9uLCBib29sIHRyYW5zcG9z
ZSwgZmxvYXQqIHZhbHVlLCBpbnQgc2l6ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5h
bDo6dW5pZm9ybU1hdHJpeDJmdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEYm9vbGVhbiB0cmFuc3Bv
c2UsIEdDM0RmbG9hdCogdmFsdWUsIEdDM0RzaXplaSBzaXplKQogewogICAgIG1faW1wbC0+dW5p
Zm9ybU1hdHJpeDJmdihsb2NhdGlvbiwgc2l6ZSwgdHJhbnNwb3NlLCB2YWx1ZSk7CiB9CiAKLXZv
aWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dW5pZm9ybU1hdHJpeDNmdihsb25nIGxvY2F0
aW9uLCBib29sIHRyYW5zcG9zZSwgZmxvYXQqIHZhbHVlLCBpbnQgc2l6ZSkKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0M0RJbnRlcm5hbDo6dW5pZm9ybU1hdHJpeDNmdihHQzNEaW50IGxvY2F0aW9uLCBH
QzNEYm9vbGVhbiB0cmFuc3Bvc2UsIEdDM0RmbG9hdCogdmFsdWUsIEdDM0RzaXplaSBzaXplKQog
ewogICAgIG1faW1wbC0+dW5pZm9ybU1hdHJpeDNmdihsb2NhdGlvbiwgc2l6ZSwgdHJhbnNwb3Nl
LCB2YWx1ZSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dW5pZm9ybU1h
dHJpeDRmdihsb25nIGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgZmxvYXQqIHZhbHVlLCBpbnQg
c2l6ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dW5pZm9ybU1hdHJpeDRmdihH
QzNEaW50IGxvY2F0aW9uLCBHQzNEYm9vbGVhbiB0cmFuc3Bvc2UsIEdDM0RmbG9hdCogdmFsdWUs
IEdDM0RzaXplaSBzaXplKQogewogICAgIG1faW1wbC0+dW5pZm9ybU1hdHJpeDRmdihsb2NhdGlv
biwgc2l6ZSwgdHJhbnNwb3NlLCB2YWx1ZSk7CiB9CkBAIC02NTEsMzMgKzY1MCwzMyBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnVuaWZvcm1NCiBERUxFR0FURV9UT19JTVBMXzEo
dXNlUHJvZ3JhbSwgUGxhdGZvcm0zRE9iamVjdCkKIERFTEVHQVRFX1RPX0lNUExfMSh2YWxpZGF0
ZVByb2dyYW0sIFBsYXRmb3JtM0RPYmplY3QpCiAKLURFTEVHQVRFX1RPX0lNUExfMih2ZXJ0ZXhB
dHRyaWIxZiwgdW5zaWduZWQgbG9uZywgZmxvYXQpCi1ERUxFR0FURV9UT19JTVBMXzIodmVydGV4
QXR0cmliMWZ2LCB1bnNpZ25lZCBsb25nLCBmbG9hdCopCi1ERUxFR0FURV9UT19JTVBMXzModmVy
dGV4QXR0cmliMmYsIHVuc2lnbmVkIGxvbmcsIGZsb2F0LCBmbG9hdCkKLURFTEVHQVRFX1RPX0lN
UExfMih2ZXJ0ZXhBdHRyaWIyZnYsIHVuc2lnbmVkIGxvbmcsIGZsb2F0KikKLURFTEVHQVRFX1RP
X0lNUExfNCh2ZXJ0ZXhBdHRyaWIzZiwgdW5zaWduZWQgbG9uZywgZmxvYXQsIGZsb2F0LCBmbG9h
dCkKLURFTEVHQVRFX1RPX0lNUExfMih2ZXJ0ZXhBdHRyaWIzZnYsIHVuc2lnbmVkIGxvbmcsIGZs
b2F0KikKLURFTEVHQVRFX1RPX0lNUExfNSh2ZXJ0ZXhBdHRyaWI0ZiwgdW5zaWduZWQgbG9uZywg
ZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQpCi1ERUxFR0FURV9UT19JTVBMXzIodmVydGV4QXR0
cmliNGZ2LCB1bnNpZ25lZCBsb25nLCBmbG9hdCopCi1ERUxFR0FURV9UT19JTVBMXzYodmVydGV4
QXR0cmliUG9pbnRlciwgdW5zaWduZWQgbG9uZywgaW50LCBpbnQsIGJvb2wsIHVuc2lnbmVkIGxv
bmcsIHVuc2lnbmVkIGxvbmcpCi0KLURFTEVHQVRFX1RPX0lNUExfNCh2aWV3cG9ydCwgbG9uZywg
bG9uZywgdW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZykKLQotREVMRUdBVEVfVE9fSU1QTF9S
KGNyZWF0ZUJ1ZmZlciwgdW5zaWduZWQpCi1ERUxFR0FURV9UT19JTVBMX1IoY3JlYXRlRnJhbWVi
dWZmZXIsIHVuc2lnbmVkKQotREVMRUdBVEVfVE9fSU1QTF9SKGNyZWF0ZVByb2dyYW0sIHVuc2ln
bmVkKQotREVMRUdBVEVfVE9fSU1QTF9SKGNyZWF0ZVJlbmRlcmJ1ZmZlciwgdW5zaWduZWQpCi1E
RUxFR0FURV9UT19JTVBMXzFSKGNyZWF0ZVNoYWRlciwgdW5zaWduZWQgbG9uZywgdW5zaWduZWQp
Ci1ERUxFR0FURV9UT19JTVBMX1IoY3JlYXRlVGV4dHVyZSwgdW5zaWduZWQpCi0KLURFTEVHQVRF
X1RPX0lNUExfMShkZWxldGVCdWZmZXIsIHVuc2lnbmVkKQotREVMRUdBVEVfVE9fSU1QTF8xKGRl
bGV0ZUZyYW1lYnVmZmVyLCB1bnNpZ25lZCkKLURFTEVHQVRFX1RPX0lNUExfMShkZWxldGVQcm9n
cmFtLCB1bnNpZ25lZCkKLURFTEVHQVRFX1RPX0lNUExfMShkZWxldGVSZW5kZXJidWZmZXIsIHVu
c2lnbmVkKQotREVMRUdBVEVfVE9fSU1QTF8xKGRlbGV0ZVNoYWRlciwgdW5zaWduZWQpCi1ERUxF
R0FURV9UT19JTVBMXzEoZGVsZXRlVGV4dHVyZSwgdW5zaWduZWQpCitERUxFR0FURV9UT19JTVBM
XzIodmVydGV4QXR0cmliMWYsIEdDM0R1aW50LCBHQzNEZmxvYXQpCitERUxFR0FURV9UT19JTVBM
XzIodmVydGV4QXR0cmliMWZ2LCBHQzNEdWludCwgR0MzRGZsb2F0KikKK0RFTEVHQVRFX1RPX0lN
UExfMyh2ZXJ0ZXhBdHRyaWIyZiwgR0MzRHVpbnQsIEdDM0RmbG9hdCwgR0MzRGZsb2F0KQorREVM
RUdBVEVfVE9fSU1QTF8yKHZlcnRleEF0dHJpYjJmdiwgR0MzRHVpbnQsIEdDM0RmbG9hdCopCitE
RUxFR0FURV9UT19JTVBMXzQodmVydGV4QXR0cmliM2YsIEdDM0R1aW50LCBHQzNEZmxvYXQsIEdD
M0RmbG9hdCwgR0MzRGZsb2F0KQorREVMRUdBVEVfVE9fSU1QTF8yKHZlcnRleEF0dHJpYjNmdiwg
R0MzRHVpbnQsIEdDM0RmbG9hdCopCitERUxFR0FURV9UT19JTVBMXzUodmVydGV4QXR0cmliNGYs
IEdDM0R1aW50LCBHQzNEZmxvYXQsIEdDM0RmbG9hdCwgR0MzRGZsb2F0LCBHQzNEZmxvYXQpCitE
RUxFR0FURV9UT19JTVBMXzIodmVydGV4QXR0cmliNGZ2LCBHQzNEdWludCwgR0MzRGZsb2F0KikK
K0RFTEVHQVRFX1RPX0lNUExfNih2ZXJ0ZXhBdHRyaWJQb2ludGVyLCBHQzNEdWludCwgR0MzRGlu
dCwgR0MzRGVudW0sIEdDM0Rib29sZWFuLCBHQzNEc2l6ZWksIEdDM0RzaXplaXB0cikKKworREVM
RUdBVEVfVE9fSU1QTF80KHZpZXdwb3J0LCBHQzNEaW50LCBHQzNEaW50LCBHQzNEc2l6ZWksIEdD
M0RzaXplaSkKKworREVMRUdBVEVfVE9fSU1QTF9SKGNyZWF0ZUJ1ZmZlciwgUGxhdGZvcm0zRE9i
amVjdCkKK0RFTEVHQVRFX1RPX0lNUExfUihjcmVhdGVGcmFtZWJ1ZmZlciwgUGxhdGZvcm0zRE9i
amVjdCkKK0RFTEVHQVRFX1RPX0lNUExfUihjcmVhdGVQcm9ncmFtLCBQbGF0Zm9ybTNET2JqZWN0
KQorREVMRUdBVEVfVE9fSU1QTF9SKGNyZWF0ZVJlbmRlcmJ1ZmZlciwgUGxhdGZvcm0zRE9iamVj
dCkKK0RFTEVHQVRFX1RPX0lNUExfMVIoY3JlYXRlU2hhZGVyLCBHQzNEZW51bSwgUGxhdGZvcm0z
RE9iamVjdCkKK0RFTEVHQVRFX1RPX0lNUExfUihjcmVhdGVUZXh0dXJlLCBQbGF0Zm9ybTNET2Jq
ZWN0KQorCitERUxFR0FURV9UT19JTVBMXzEoZGVsZXRlQnVmZmVyLCBQbGF0Zm9ybTNET2JqZWN0
KQorREVMRUdBVEVfVE9fSU1QTF8xKGRlbGV0ZUZyYW1lYnVmZmVyLCBQbGF0Zm9ybTNET2JqZWN0
KQorREVMRUdBVEVfVE9fSU1QTF8xKGRlbGV0ZVByb2dyYW0sIFBsYXRmb3JtM0RPYmplY3QpCitE
RUxFR0FURV9UT19JTVBMXzEoZGVsZXRlUmVuZGVyYnVmZmVyLCBQbGF0Zm9ybTNET2JqZWN0KQor
REVMRUdBVEVfVE9fSU1QTF8xKGRlbGV0ZVNoYWRlciwgUGxhdGZvcm0zRE9iamVjdCkKK0RFTEVH
QVRFX1RPX0lNUExfMShkZWxldGVUZXh0dXJlLCBQbGF0Zm9ybTNET2JqZWN0KQogCi1ERUxFR0FU
RV9UT19JTVBMXzEoc3ludGhlc2l6ZUdMRXJyb3IsIHVuc2lnbmVkIGxvbmcpCitERUxFR0FURV9U
T19JTVBMXzEoc3ludGhlc2l6ZUdMRXJyb3IsIEdDM0RlbnVtKQogCiBFeHRlbnNpb25zM0QqIEdy
YXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmdldEV4dGVuc2lvbnMoKQogewpAQCAtNzM2LDExICs3
MzUsMTEgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjplbnN1cmVFeAogICAgIHJl
dHVybiBtX2VuYWJsZWRFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpOwogfQogCi1ERUxFR0FURV9U
T19JTVBMXzRSKG1hcEJ1ZmZlclN1YkRhdGFDSFJPTUlVTSwgdW5zaWduZWQsIGludCwgaW50LCB1
bnNpZ25lZCwgdm9pZCopCitERUxFR0FURV9UT19JTVBMXzRSKG1hcEJ1ZmZlclN1YkRhdGFDSFJP
TUlVTSwgR0MzRGVudW0sIEdDM0RzaXplaXB0ciwgR0MzRHNpemVpLCBHQzNEZW51bSwgdm9pZCop
CiBERUxFR0FURV9UT19JTVBMXzEodW5tYXBCdWZmZXJTdWJEYXRhQ0hST01JVU0sIGNvbnN0IHZv
aWQqKQotREVMRUdBVEVfVE9fSU1QTF85UihtYXBUZXhTdWJJbWFnZTJEQ0hST01JVU0sIHVuc2ln
bmVkLCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgdW5zaWduZWQsIHVuc2lnbmVkLCB1bnNpZ25l
ZCwgdm9pZCopCitERUxFR0FURV9UT19JTVBMXzlSKG1hcFRleFN1YkltYWdlMkRDSFJPTUlVTSwg
R0MzRGVudW0sIEdDM0RpbnQsIEdDM0RpbnQsIEdDM0RpbnQsIEdDM0RzaXplaSwgR0MzRHNpemVp
LCBHQzNEZW51bSwgR0MzRGVudW0sIEdDM0RlbnVtLCB2b2lkKikKIERFTEVHQVRFX1RPX0lNUExf
MSh1bm1hcFRleFN1YkltYWdlMkRDSFJPTUlVTSwgY29uc3Qgdm9pZCopCi1ERUxFR0FURV9UT19J
TVBMXzIoY29weVRleHR1cmVUb1BhcmVudFRleHR1cmVDSFJPTUlVTSwgdW5zaWduZWQsIHVuc2ln
bmVkKQorREVMRUdBVEVfVE9fSU1QTF8yKGNvcHlUZXh0dXJlVG9QYXJlbnRUZXh0dXJlQ0hST01J
VU0sIFBsYXRmb3JtM0RPYmplY3QsIFBsYXRmb3JtM0RPYmplY3QpCiAKIC8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQogLy8gR3JhcGhpY3NDb250ZXh0M0QKQEAgLTg0NSw2ICs4NDQsMTIgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6bmFtZSh0MSBhMSwgdDIgYQogICAgIG1faW50ZXJuYWwtPm5hbWUoYTEsIGEy
LCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4KTsgICAgICBcCiB9CiAKKyNkZWZpbmUgREVMRUdBVEVf
VE9fSU5URVJOQUxfOShuYW1lLCB0MSwgdDIsIHQzLCB0NCwgdDUsIHQ2LCB0NywgdDgsIHQ5KSBc
Cit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpuYW1lKHQxIGExLCB0MiBhMiwgdDMgYTMsIHQ0IGE0
LCB0NSBhNSwgdDYgYTYsIHQ3IGE3LCB0OCBhOCwgdDkgYTkpIFwKK3sgXAorICAgIG1faW50ZXJu
YWwtPm5hbWUoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4LCBhOSk7ICAgXAorfQorCiAj
ZGVmaW5lIERFTEVHQVRFX1RPX0lOVEVSTkFMXzlSKG5hbWUsIHQxLCB0MiwgdDMsIHQ0LCB0NSwg
dDYsIHQ3LCB0OCwgdDksIHJ0KSBcCiBydCBHcmFwaGljc0NvbnRleHQzRDo6bmFtZSh0MSBhMSwg
dDIgYTIsIHQzIGEzLCB0NCBhNCwgdDUgYTUsIHQ2IGE2LCB0NyBhNywgdDggYTgsIHQ5IGE5KSBc
CiB7IFwKQEAgLTg5NSwxNzAgKzkwMCwxNTAgQEAgUGxhdGZvcm1MYXllciogR3JhcGhpY3NDb250
ZXh0M0Q6OnBsYXRmbwogI2VuZGlmCiAKIERFTEVHQVRFX1RPX0lOVEVSTkFMKG1ha2VDb250ZXh0
Q3VycmVudCkKLURFTEVHQVRFX1RPX0lOVEVSTkFMXzFSKHNpemVJbkJ5dGVzLCBpbnQsIGludCkK
K0RFTEVHQVRFX1RPX0lOVEVSTkFMXzFSKHNpemVJbkJ5dGVzLCBHQzNEZW51bSwgdW5zaWduZWQg
aW50KQogREVMRUdBVEVfVE9fSU5URVJOQUxfMihyZXNoYXBlLCBpbnQsIGludCkKIERFTEVHQVRF
X1RPX0lOVEVSTkFMX1IoZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUsIEludFNpemUpCiAKLURF
TEVHQVRFX1RPX0lOVEVSTkFMXzEoYWN0aXZlVGV4dHVyZSwgdW5zaWduZWQgbG9uZykKK0RFTEVH
QVRFX1RPX0lOVEVSTkFMXzEoYWN0aXZlVGV4dHVyZSwgR0MzRGVudW0pCiBERUxFR0FURV9UT19J
TlRFUk5BTF8yKGF0dGFjaFNoYWRlciwgUGxhdGZvcm0zRE9iamVjdCwgUGxhdGZvcm0zRE9iamVj
dCkKLURFTEVHQVRFX1RPX0lOVEVSTkFMXzMoYmluZEF0dHJpYkxvY2F0aW9uLCBQbGF0Zm9ybTNE
T2JqZWN0LCB1bnNpZ25lZCBsb25nLCBjb25zdCBTdHJpbmcmKQorREVMRUdBVEVfVE9fSU5URVJO
QUxfMyhiaW5kQXR0cmliTG9jYXRpb24sIFBsYXRmb3JtM0RPYmplY3QsIEdDM0R1aW50LCBjb25z
dCBTdHJpbmcmKQogCi1ERUxFR0FURV9UT19JTlRFUk5BTF8yKGJpbmRCdWZmZXIsIHVuc2lnbmVk
IGxvbmcsIFBsYXRmb3JtM0RPYmplY3QpCi1ERUxFR0FURV9UT19JTlRFUk5BTF8yKGJpbmRGcmFt
ZWJ1ZmZlciwgdW5zaWduZWQgbG9uZywgUGxhdGZvcm0zRE9iamVjdCkKLURFTEVHQVRFX1RPX0lO
VEVSTkFMXzIoYmluZFJlbmRlcmJ1ZmZlciwgdW5zaWduZWQgbG9uZywgUGxhdGZvcm0zRE9iamVj
dCkKLURFTEVHQVRFX1RPX0lOVEVSTkFMXzIoYmluZFRleHR1cmUsIHVuc2lnbmVkIGxvbmcsIFBs
YXRmb3JtM0RPYmplY3QpCi1ERUxFR0FURV9UT19JTlRFUk5BTF80KGJsZW5kQ29sb3IsIGRvdWJs
ZSwgZG91YmxlLCBkb3VibGUsIGRvdWJsZSkKLURFTEVHQVRFX1RPX0lOVEVSTkFMXzEoYmxlbmRF
cXVhdGlvbiwgdW5zaWduZWQgbG9uZykKLURFTEVHQVRFX1RPX0lOVEVSTkFMXzIoYmxlbmRFcXVh
dGlvblNlcGFyYXRlLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nKQotREVMRUdBVEVfVE9f
SU5URVJOQUxfMihibGVuZEZ1bmMsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcpCi1ERUxF
R0FURV9UT19JTlRFUk5BTF80KGJsZW5kRnVuY1NlcGFyYXRlLCB1bnNpZ25lZCBsb25nLCB1bnNp
Z25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nKQotCi1ERUxFR0FURV9UT19J
TlRFUk5BTF8zKGJ1ZmZlckRhdGEsIHVuc2lnbmVkIGxvbmcsIGludCwgdW5zaWduZWQgbG9uZykK
LURFTEVHQVRFX1RPX0lOVEVSTkFMXzQoYnVmZmVyRGF0YSwgdW5zaWduZWQgbG9uZywgaW50LCBj
b25zdCB2b2lkKiwgdW5zaWduZWQgbG9uZykKLURFTEVHQVRFX1RPX0lOVEVSTkFMXzQoYnVmZmVy
U3ViRGF0YSwgdW5zaWduZWQgbG9uZywgbG9uZywgaW50LCBjb25zdCB2b2lkKikKLQotREVMRUdB
VEVfVE9fSU5URVJOQUxfMVIoY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cywgdW5zaWduZWQgbG9uZywg
dW5zaWduZWQgbG9uZykKLURFTEVHQVRFX1RPX0lOVEVSTkFMXzEoY2xlYXIsIHVuc2lnbmVkIGxv
bmcpCi1ERUxFR0FURV9UT19JTlRFUk5BTF80KGNsZWFyQ29sb3IsIGRvdWJsZSwgZG91YmxlLCBk
b3VibGUsIGRvdWJsZSkKLURFTEVHQVRFX1RPX0lOVEVSTkFMXzEoY2xlYXJEZXB0aCwgZG91Ymxl
KQotREVMRUdBVEVfVE9fSU5URVJOQUxfMShjbGVhclN0ZW5jaWwsIGxvbmcpCi1ERUxFR0FURV9U
T19JTlRFUk5BTF80KGNvbG9yTWFzaywgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCkKK0RFTEVHQVRF
X1RPX0lOVEVSTkFMXzIoYmluZEJ1ZmZlciwgR0MzRGVudW0sIFBsYXRmb3JtM0RPYmplY3QpCitE
RUxFR0FURV9UT19JTlRFUk5BTF8yKGJpbmRGcmFtZWJ1ZmZlciwgR0MzRGVudW0sIFBsYXRmb3Jt
M0RPYmplY3QpCitERUxFR0FURV9UT19JTlRFUk5BTF8yKGJpbmRSZW5kZXJidWZmZXIsIEdDM0Rl
bnVtLCBQbGF0Zm9ybTNET2JqZWN0KQorREVMRUdBVEVfVE9fSU5URVJOQUxfMihiaW5kVGV4dHVy
ZSwgR0MzRGVudW0sIFBsYXRmb3JtM0RPYmplY3QpCitERUxFR0FURV9UT19JTlRFUk5BTF80KGJs
ZW5kQ29sb3IsIEdDM0RjbGFtcGYsIEdDM0RjbGFtcGYsIEdDM0RjbGFtcGYsIEdDM0RjbGFtcGYp
CitERUxFR0FURV9UT19JTlRFUk5BTF8xKGJsZW5kRXF1YXRpb24sIEdDM0RlbnVtKQorREVMRUdB
VEVfVE9fSU5URVJOQUxfMihibGVuZEVxdWF0aW9uU2VwYXJhdGUsIEdDM0RlbnVtLCBHQzNEZW51
bSkKK0RFTEVHQVRFX1RPX0lOVEVSTkFMXzIoYmxlbmRGdW5jLCBHQzNEZW51bSwgR0MzRGVudW0p
CitERUxFR0FURV9UT19JTlRFUk5BTF80KGJsZW5kRnVuY1NlcGFyYXRlLCBHQzNEZW51bSwgR0Mz
RGVudW0sIEdDM0RlbnVtLCBHQzNEZW51bSkKKworREVMRUdBVEVfVE9fSU5URVJOQUxfMyhidWZm
ZXJEYXRhLCBHQzNEZW51bSwgR0MzRHNpemVpcHRyLCBHQzNEZW51bSkKK0RFTEVHQVRFX1RPX0lO
VEVSTkFMXzQoYnVmZmVyRGF0YSwgR0MzRGVudW0sIEdDM0RzaXplaXB0ciwgY29uc3Qgdm9pZCos
IEdDM0RlbnVtKQorREVMRUdBVEVfVE9fSU5URVJOQUxfNChidWZmZXJTdWJEYXRhLCBHQzNEZW51
bSwgR0MzRGludHB0ciwgR0MzRHNpemVpcHRyLCBjb25zdCB2b2lkKikKKworREVMRUdBVEVfVE9f
SU5URVJOQUxfMVIoY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cywgR0MzRGVudW0sIEdDM0RlbnVtKQor
REVMRUdBVEVfVE9fSU5URVJOQUxfMShjbGVhciwgR0MzRGJpdGZpZWxkKQorREVMRUdBVEVfVE9f
SU5URVJOQUxfNChjbGVhckNvbG9yLCBHQzNEY2xhbXBmLCBHQzNEY2xhbXBmLCBHQzNEY2xhbXBm
LCBHQzNEY2xhbXBmKQorREVMRUdBVEVfVE9fSU5URVJOQUxfMShjbGVhckRlcHRoLCBHQzNEY2xh
bXBmKQorREVMRUdBVEVfVE9fSU5URVJOQUxfMShjbGVhclN0ZW5jaWwsIEdDM0RpbnQpCitERUxF
R0FURV9UT19JTlRFUk5BTF80KGNvbG9yTWFzaywgR0MzRGJvb2xlYW4sIEdDM0Rib29sZWFuLCBH
QzNEYm9vbGVhbiwgR0MzRGJvb2xlYW4pCiBERUxFR0FURV9UT19JTlRFUk5BTF8xKGNvbXBpbGVT
aGFkZXIsIFBsYXRmb3JtM0RPYmplY3QpCiAKLURFTEVHQVRFX1RPX0lOVEVSTkFMXzgoY29weVRl
eEltYWdlMkQsIHVuc2lnbmVkIGxvbmcsIGxvbmcsIHVuc2lnbmVkIGxvbmcsIGxvbmcsIGxvbmcs
IHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIGxvbmcpCi1ERUxFR0FURV9UT19JTlRFUk5B
TF84KGNvcHlUZXhTdWJJbWFnZTJELCB1bnNpZ25lZCBsb25nLCBsb25nLCBsb25nLCBsb25nLCBs
b25nLCBsb25nLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nKQotREVMRUdBVEVfVE9fSU5U
RVJOQUxfMShjdWxsRmFjZSwgdW5zaWduZWQgbG9uZykKLURFTEVHQVRFX1RPX0lOVEVSTkFMXzEo
ZGVwdGhGdW5jLCB1bnNpZ25lZCBsb25nKQotREVMRUdBVEVfVE9fSU5URVJOQUxfMShkZXB0aE1h
c2ssIGJvb2wpCi1ERUxFR0FURV9UT19JTlRFUk5BTF8yKGRlcHRoUmFuZ2UsIGRvdWJsZSwgZG91
YmxlKQorREVMRUdBVEVfVE9fSU5URVJOQUxfOChjb3B5VGV4SW1hZ2UyRCwgR0MzRGVudW0sIEdD
M0RpbnQsIEdDM0RlbnVtLCBHQzNEaW50LCBHQzNEaW50LCBHQzNEc2l6ZWksIEdDM0RzaXplaSwg
R0MzRGludCkKK0RFTEVHQVRFX1RPX0lOVEVSTkFMXzgoY29weVRleFN1YkltYWdlMkQsIEdDM0Rl
bnVtLCBHQzNEaW50LCBHQzNEaW50LCBHQzNEaW50LCBHQzNEaW50LCBHQzNEaW50LCBHQzNEc2l6
ZWksIEdDM0RzaXplaSkKK0RFTEVHQVRFX1RPX0lOVEVSTkFMXzEoY3VsbEZhY2UsIEdDM0RlbnVt
KQorREVMRUdBVEVfVE9fSU5URVJOQUxfMShkZXB0aEZ1bmMsIEdDM0RlbnVtKQorREVMRUdBVEVf
VE9fSU5URVJOQUxfMShkZXB0aE1hc2ssIEdDM0Rib29sZWFuKQorREVMRUdBVEVfVE9fSU5URVJO
QUxfMihkZXB0aFJhbmdlLCBHQzNEY2xhbXBmLCBHQzNEY2xhbXBmKQogREVMRUdBVEVfVE9fSU5U
RVJOQUxfMihkZXRhY2hTaGFkZXIsIFBsYXRmb3JtM0RPYmplY3QsIFBsYXRmb3JtM0RPYmplY3Qp
Ci1ERUxFR0FURV9UT19JTlRFUk5BTF8xKGRpc2FibGUsIHVuc2lnbmVkIGxvbmcpCi1ERUxFR0FU
RV9UT19JTlRFUk5BTF8xKGRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSwgdW5zaWduZWQgbG9uZykK
LURFTEVHQVRFX1RPX0lOVEVSTkFMXzMoZHJhd0FycmF5cywgdW5zaWduZWQgbG9uZywgbG9uZywg
bG9uZykKLURFTEVHQVRFX1RPX0lOVEVSTkFMXzQoZHJhd0VsZW1lbnRzLCB1bnNpZ25lZCBsb25n
LCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCBsb25nKQorREVMRUdBVEVfVE9fSU5URVJO
QUxfMShkaXNhYmxlLCBHQzNEZW51bSkKK0RFTEVHQVRFX1RPX0lOVEVSTkFMXzEoZGlzYWJsZVZl
cnRleEF0dHJpYkFycmF5LCBHQzNEdWludCkKK0RFTEVHQVRFX1RPX0lOVEVSTkFMXzMoZHJhd0Fy
cmF5cywgR0MzRGVudW0sIEdDM0RpbnQsIEdDM0RzaXplaSkKK0RFTEVHQVRFX1RPX0lOVEVSTkFM
XzQoZHJhd0VsZW1lbnRzLCBHQzNEZW51bSwgR0MzRHNpemVpLCBHQzNEZW51bSwgR0MzRGludHB0
cikKIAotREVMRUdBVEVfVE9fSU5URVJOQUxfMShlbmFibGUsIHVuc2lnbmVkIGxvbmcpCi1ERUxF
R0FURV9UT19JTlRFUk5BTF8xKGVuYWJsZVZlcnRleEF0dHJpYkFycmF5LCB1bnNpZ25lZCBsb25n
KQorREVMRUdBVEVfVE9fSU5URVJOQUxfMShlbmFibGUsIEdDM0RlbnVtKQorREVMRUdBVEVfVE9f
SU5URVJOQUxfMShlbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSwgR0MzRHVpbnQpCiBERUxFR0FURV9U
T19JTlRFUk5BTChmaW5pc2gpCiBERUxFR0FURV9UT19JTlRFUk5BTChmbHVzaCkKLURFTEVHQVRF
X1RPX0lOVEVSTkFMXzQoZnJhbWVidWZmZXJSZW5kZXJidWZmZXIsIHVuc2lnbmVkIGxvbmcsIHVu
c2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIFBsYXRmb3JtM0RPYmplY3QpCi1ERUxFR0FURV9U
T19JTlRFUk5BTF81KGZyYW1lYnVmZmVyVGV4dHVyZTJELCB1bnNpZ25lZCBsb25nLCB1bnNpZ25l
ZCBsb25nLCB1bnNpZ25lZCBsb25nLCBQbGF0Zm9ybTNET2JqZWN0LCBsb25nKQotREVMRUdBVEVf
VE9fSU5URVJOQUxfMShmcm9udEZhY2UsIHVuc2lnbmVkIGxvbmcpCi1ERUxFR0FURV9UT19JTlRF
Uk5BTF8xKGdlbmVyYXRlTWlwbWFwLCB1bnNpZ25lZCBsb25nKQotCi1ERUxFR0FURV9UT19JTlRF
Uk5BTF8zUihnZXRBY3RpdmVBdHRyaWIsIFBsYXRmb3JtM0RPYmplY3QsIHVuc2lnbmVkIGxvbmcs
IEFjdGl2ZUluZm8mLCBib29sKQotREVMRUdBVEVfVE9fSU5URVJOQUxfM1IoZ2V0QWN0aXZlVW5p
Zm9ybSwgUGxhdGZvcm0zRE9iamVjdCwgdW5zaWduZWQgbG9uZywgQWN0aXZlSW5mbyYsIGJvb2wp
Ci0KLURFTEVHQVRFX1RPX0lOVEVSTkFMXzQoZ2V0QXR0YWNoZWRTaGFkZXJzLCBQbGF0Zm9ybTNE
T2JqZWN0LCBpbnQsIGludCosIHVuc2lnbmVkIGludCopCi0KLURFTEVHQVRFX1RPX0lOVEVSTkFM
XzJSKGdldEF0dHJpYkxvY2F0aW9uLCBQbGF0Zm9ybTNET2JqZWN0LCBjb25zdCBTdHJpbmcmLCBp
bnQpCi0KLURFTEVHQVRFX1RPX0lOVEVSTkFMXzIoZ2V0Qm9vbGVhbnYsIHVuc2lnbmVkIGxvbmcs
IHVuc2lnbmVkIGNoYXIqKQotCi1ERUxFR0FURV9UT19JTlRFUk5BTF8zKGdldEJ1ZmZlclBhcmFt
ZXRlcml2LCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCBpbnQqKQotCitERUxFR0FURV9U
T19JTlRFUk5BTF80KGZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyLCBHQzNEZW51bSwgR0MzRGVudW0s
IEdDM0RlbnVtLCBQbGF0Zm9ybTNET2JqZWN0KQorREVMRUdBVEVfVE9fSU5URVJOQUxfNShmcmFt
ZWJ1ZmZlclRleHR1cmUyRCwgR0MzRGVudW0sIEdDM0RlbnVtLCBHQzNEZW51bSwgUGxhdGZvcm0z
RE9iamVjdCwgR0MzRGludCkKK0RFTEVHQVRFX1RPX0lOVEVSTkFMXzEoZnJvbnRGYWNlLCBHQzNE
ZW51bSkKK0RFTEVHQVRFX1RPX0lOVEVSTkFMXzEoZ2VuZXJhdGVNaXBtYXAsIEdDM0RlbnVtKQor
CitERUxFR0FURV9UT19JTlRFUk5BTF8zUihnZXRBY3RpdmVBdHRyaWIsIFBsYXRmb3JtM0RPYmpl
Y3QsIEdDM0R1aW50LCBBY3RpdmVJbmZvJiwgYm9vbCkKK0RFTEVHQVRFX1RPX0lOVEVSTkFMXzNS
KGdldEFjdGl2ZVVuaWZvcm0sIFBsYXRmb3JtM0RPYmplY3QsIEdDM0R1aW50LCBBY3RpdmVJbmZv
JiwgYm9vbCkKK0RFTEVHQVRFX1RPX0lOVEVSTkFMXzQoZ2V0QXR0YWNoZWRTaGFkZXJzLCBQbGF0
Zm9ybTNET2JqZWN0LCBHQzNEc2l6ZWksIEdDM0RzaXplaSosIFBsYXRmb3JtM0RPYmplY3QqKQor
REVMRUdBVEVfVE9fSU5URVJOQUxfMlIoZ2V0QXR0cmliTG9jYXRpb24sIFBsYXRmb3JtM0RPYmpl
Y3QsIGNvbnN0IFN0cmluZyYsIEdDM0RpbnQpCitERUxFR0FURV9UT19JTlRFUk5BTF8yKGdldEJv
b2xlYW52LCBHQzNEZW51bSwgR0MzRGJvb2xlYW4qKQorREVMRUdBVEVfVE9fSU5URVJOQUxfMyhn
ZXRCdWZmZXJQYXJhbWV0ZXJpdiwgR0MzRGVudW0sIEdDM0RlbnVtLCBHQzNEaW50KikKIERFTEVH
QVRFX1RPX0lOVEVSTkFMX1IoZ2V0Q29udGV4dEF0dHJpYnV0ZXMsIEdyYXBoaWNzQ29udGV4dDNE
OjpBdHRyaWJ1dGVzKQotCi1ERUxFR0FURV9UT19JTlRFUk5BTF9SKGdldEVycm9yLCB1bnNpZ25l
ZCBsb25nKQotCi1ERUxFR0FURV9UT19JTlRFUk5BTF8yKGdldEZsb2F0diwgdW5zaWduZWQgbG9u
ZywgZmxvYXQqKQotCi1ERUxFR0FURV9UT19JTlRFUk5BTF80KGdldEZyYW1lYnVmZmVyQXR0YWNo
bWVudFBhcmFtZXRlcml2LCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBs
b25nLCBpbnQqKQotCi1ERUxFR0FURV9UT19JTlRFUk5BTF8yKGdldEludGVnZXJ2LCB1bnNpZ25l
ZCBsb25nLCBpbnQqKQotCi1ERUxFR0FURV9UT19JTlRFUk5BTF8zKGdldFByb2dyYW1pdiwgUGxh
dGZvcm0zRE9iamVjdCwgdW5zaWduZWQgbG9uZywgaW50KikKLQorREVMRUdBVEVfVE9fSU5URVJO
QUxfUihnZXRFcnJvciwgR0MzRGVudW0pCitERUxFR0FURV9UT19JTlRFUk5BTF8yKGdldEZsb2F0
diwgR0MzRGVudW0sIEdDM0RmbG9hdCopCitERUxFR0FURV9UT19JTlRFUk5BTF80KGdldEZyYW1l
YnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2LCBHQzNEZW51bSwgR0MzRGVudW0sIEdDM0RlbnVt
LCBHQzNEaW50KikKK0RFTEVHQVRFX1RPX0lOVEVSTkFMXzIoZ2V0SW50ZWdlcnYsIEdDM0RlbnVt
LCBHQzNEaW50KikKK0RFTEVHQVRFX1RPX0lOVEVSTkFMXzMoZ2V0UHJvZ3JhbWl2LCBQbGF0Zm9y
bTNET2JqZWN0LCBHQzNEZW51bSwgR0MzRGludCopCiBERUxFR0FURV9UT19JTlRFUk5BTF8xUihn
ZXRQcm9ncmFtSW5mb0xvZywgUGxhdGZvcm0zRE9iamVjdCwgU3RyaW5nKQotCi1ERUxFR0FURV9U
T19JTlRFUk5BTF8zKGdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2LCB1bnNpZ25lZCBsb25nLCB1
bnNpZ25lZCBsb25nLCBpbnQqKQotCi1ERUxFR0FURV9UT19JTlRFUk5BTF8zKGdldFNoYWRlcml2
LCBQbGF0Zm9ybTNET2JqZWN0LCB1bnNpZ25lZCBsb25nLCBpbnQqKQotCitERUxFR0FURV9UT19J
TlRFUk5BTF8zKGdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2LCBHQzNEZW51bSwgR0MzRGVudW0s
IEdDM0RpbnQqKQorREVMRUdBVEVfVE9fSU5URVJOQUxfMyhnZXRTaGFkZXJpdiwgUGxhdGZvcm0z
RE9iamVjdCwgR0MzRGVudW0sIEdDM0RpbnQqKQogREVMRUdBVEVfVE9fSU5URVJOQUxfMVIoZ2V0
U2hhZGVySW5mb0xvZywgUGxhdGZvcm0zRE9iamVjdCwgU3RyaW5nKQotCiBERUxFR0FURV9UT19J
TlRFUk5BTF8xUihnZXRTaGFkZXJTb3VyY2UsIFBsYXRmb3JtM0RPYmplY3QsIFN0cmluZykKLURF
TEVHQVRFX1RPX0lOVEVSTkFMXzFSKGdldFN0cmluZywgdW5zaWduZWQgbG9uZywgU3RyaW5nKQot
Ci1ERUxFR0FURV9UT19JTlRFUk5BTF8zKGdldFRleFBhcmFtZXRlcmZ2LCB1bnNpZ25lZCBsb25n
LCB1bnNpZ25lZCBsb25nLCBmbG9hdCopCi1ERUxFR0FURV9UT19JTlRFUk5BTF8zKGdldFRleFBh
cmFtZXRlcml2LCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCBpbnQqKQotCi1ERUxFR0FU
RV9UT19JTlRFUk5BTF8zKGdldFVuaWZvcm1mdiwgUGxhdGZvcm0zRE9iamVjdCwgbG9uZywgZmxv
YXQqKQotREVMRUdBVEVfVE9fSU5URVJOQUxfMyhnZXRVbmlmb3JtaXYsIFBsYXRmb3JtM0RPYmpl
Y3QsIGxvbmcsIGludCopCi0KLURFTEVHQVRFX1RPX0lOVEVSTkFMXzJSKGdldFVuaWZvcm1Mb2Nh
dGlvbiwgUGxhdGZvcm0zRE9iamVjdCwgY29uc3QgU3RyaW5nJiwgbG9uZykKLQotREVMRUdBVEVf
VE9fSU5URVJOQUxfMyhnZXRWZXJ0ZXhBdHRyaWJmdiwgdW5zaWduZWQgbG9uZywgdW5zaWduZWQg
bG9uZywgZmxvYXQqKQotREVMRUdBVEVfVE9fSU5URVJOQUxfMyhnZXRWZXJ0ZXhBdHRyaWJpdiwg
dW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZywgaW50KikKLQotREVMRUdBVEVfVE9fSU5URVJO
QUxfMlIoZ2V0VmVydGV4QXR0cmliT2Zmc2V0LCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25n
LCBsb25nKQotCi1ERUxFR0FURV9UT19JTlRFUk5BTF8yKGhpbnQsIHVuc2lnbmVkIGxvbmcsIHVu
c2lnbmVkIGxvbmcpCi1ERUxFR0FURV9UT19JTlRFUk5BTF8xUihpc0J1ZmZlciwgUGxhdGZvcm0z
RE9iamVjdCwgYm9vbCkKLURFTEVHQVRFX1RPX0lOVEVSTkFMXzFSKGlzRW5hYmxlZCwgdW5zaWdu
ZWQgbG9uZywgYm9vbCkKLURFTEVHQVRFX1RPX0lOVEVSTkFMXzFSKGlzRnJhbWVidWZmZXIsIFBs
YXRmb3JtM0RPYmplY3QsIGJvb2wpCi1ERUxFR0FURV9UT19JTlRFUk5BTF8xUihpc1Byb2dyYW0s
IFBsYXRmb3JtM0RPYmplY3QsIGJvb2wpCi1ERUxFR0FURV9UT19JTlRFUk5BTF8xUihpc1JlbmRl
cmJ1ZmZlciwgUGxhdGZvcm0zRE9iamVjdCwgYm9vbCkKLURFTEVHQVRFX1RPX0lOVEVSTkFMXzFS
KGlzU2hhZGVyLCBQbGF0Zm9ybTNET2JqZWN0LCBib29sKQotREVMRUdBVEVfVE9fSU5URVJOQUxf
MVIoaXNUZXh0dXJlLCBQbGF0Zm9ybTNET2JqZWN0LCBib29sKQotREVMRUdBVEVfVE9fSU5URVJO
QUxfMShsaW5lV2lkdGgsIGRvdWJsZSkKK0RFTEVHQVRFX1RPX0lOVEVSTkFMXzFSKGdldFN0cmlu
ZywgR0MzRGVudW0sIFN0cmluZykKK0RFTEVHQVRFX1RPX0lOVEVSTkFMXzMoZ2V0VGV4UGFyYW1l
dGVyZnYsIEdDM0RlbnVtLCBHQzNEZW51bSwgR0MzRGZsb2F0KikKK0RFTEVHQVRFX1RPX0lOVEVS
TkFMXzMoZ2V0VGV4UGFyYW1ldGVyaXYsIEdDM0RlbnVtLCBHQzNEZW51bSwgR0MzRGludCopCitE
RUxFR0FURV9UT19JTlRFUk5BTF8zKGdldFVuaWZvcm1mdiwgUGxhdGZvcm0zRE9iamVjdCwgR0Mz
RGludCwgR0MzRGZsb2F0KikKK0RFTEVHQVRFX1RPX0lOVEVSTkFMXzMoZ2V0VW5pZm9ybWl2LCBQ
bGF0Zm9ybTNET2JqZWN0LCBHQzNEaW50LCBHQzNEaW50KikKK0RFTEVHQVRFX1RPX0lOVEVSTkFM
XzJSKGdldFVuaWZvcm1Mb2NhdGlvbiwgUGxhdGZvcm0zRE9iamVjdCwgY29uc3QgU3RyaW5nJiwg
R0MzRGludCkKK0RFTEVHQVRFX1RPX0lOVEVSTkFMXzMoZ2V0VmVydGV4QXR0cmliZnYsIEdDM0R1
aW50LCBHQzNEZW51bSwgR0MzRGZsb2F0KikKK0RFTEVHQVRFX1RPX0lOVEVSTkFMXzMoZ2V0VmVy
dGV4QXR0cmliaXYsIEdDM0R1aW50LCBHQzNEZW51bSwgR0MzRGludCopCitERUxFR0FURV9UT19J
TlRFUk5BTF8yUihnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQsIEdDM0R1aW50LCBHQzNEZW51bSwgR0Mz
RHNpemVpcHRyKQorCitERUxFR0FURV9UT19JTlRFUk5BTF8yKGhpbnQsIEdDM0RlbnVtLCBHQzNE
ZW51bSkKK0RFTEVHQVRFX1RPX0lOVEVSTkFMXzFSKGlzQnVmZmVyLCBQbGF0Zm9ybTNET2JqZWN0
LCBHQzNEYm9vbGVhbikKK0RFTEVHQVRFX1RPX0lOVEVSTkFMXzFSKGlzRW5hYmxlZCwgR0MzRGVu
dW0sIEdDM0Rib29sZWFuKQorREVMRUdBVEVfVE9fSU5URVJOQUxfMVIoaXNGcmFtZWJ1ZmZlciwg
UGxhdGZvcm0zRE9iamVjdCwgR0MzRGJvb2xlYW4pCitERUxFR0FURV9UT19JTlRFUk5BTF8xUihp
c1Byb2dyYW0sIFBsYXRmb3JtM0RPYmplY3QsIEdDM0Rib29sZWFuKQorREVMRUdBVEVfVE9fSU5U
RVJOQUxfMVIoaXNSZW5kZXJidWZmZXIsIFBsYXRmb3JtM0RPYmplY3QsIEdDM0Rib29sZWFuKQor
REVMRUdBVEVfVE9fSU5URVJOQUxfMVIoaXNTaGFkZXIsIFBsYXRmb3JtM0RPYmplY3QsIEdDM0Ri
b29sZWFuKQorREVMRUdBVEVfVE9fSU5URVJOQUxfMVIoaXNUZXh0dXJlLCBQbGF0Zm9ybTNET2Jq
ZWN0LCBHQzNEYm9vbGVhbikKK0RFTEVHQVRFX1RPX0lOVEVSTkFMXzEobGluZVdpZHRoLCBHQzNE
ZmxvYXQpCiBERUxFR0FURV9UT19JTlRFUk5BTF8xKGxpbmtQcm9ncmFtLCBQbGF0Zm9ybTNET2Jq
ZWN0KQotREVMRUdBVEVfVE9fSU5URVJOQUxfMihwaXhlbFN0b3JlaSwgdW5zaWduZWQgbG9uZywg
bG9uZykKLURFTEVHQVRFX1RPX0lOVEVSTkFMXzIocG9seWdvbk9mZnNldCwgZG91YmxlLCBkb3Vi
bGUpCitERUxFR0FURV9UT19JTlRFUk5BTF8yKHBpeGVsU3RvcmVpLCBHQzNEZW51bSwgR0MzRGlu
dCkKK0RFTEVHQVRFX1RPX0lOVEVSTkFMXzIocG9seWdvbk9mZnNldCwgR0MzRGZsb2F0LCBHQzNE
ZmxvYXQpCiAKLURFTEVHQVRFX1RPX0lOVEVSTkFMXzcocmVhZFBpeGVscywgbG9uZywgbG9uZywg
dW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9u
Zywgdm9pZCopCitERUxFR0FURV9UT19JTlRFUk5BTF83KHJlYWRQaXhlbHMsIEdDM0RpbnQsIEdD
M0RpbnQsIEdDM0RzaXplaSwgR0MzRHNpemVpLCBHQzNEZW51bSwgR0MzRGVudW0sIHZvaWQqKQog
CiBERUxFR0FURV9UT19JTlRFUk5BTChyZWxlYXNlU2hhZGVyQ29tcGlsZXIpCi1ERUxFR0FURV9U
T19JTlRFUk5BTF80KHJlbmRlcmJ1ZmZlclN0b3JhZ2UsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVk
IGxvbmcsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcpCi1ERUxFR0FURV9UT19JTlRFUk5B
TF8yKHNhbXBsZUNvdmVyYWdlLCBkb3VibGUsIGJvb2wpCi1ERUxFR0FURV9UT19JTlRFUk5BTF80
KHNjaXNzb3IsIGxvbmcsIGxvbmcsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcpCitERUxF
R0FURV9UT19JTlRFUk5BTF80KHJlbmRlcmJ1ZmZlclN0b3JhZ2UsIEdDM0RlbnVtLCBHQzNEZW51
bSwgR0MzRHNpemVpLCBHQzNEc2l6ZWkpCitERUxFR0FURV9UT19JTlRFUk5BTF8yKHNhbXBsZUNv
dmVyYWdlLCBHQzNEY2xhbXBmLCBHQzNEYm9vbGVhbikKK0RFTEVHQVRFX1RPX0lOVEVSTkFMXzQo
c2Npc3NvciwgR0MzRGludCwgR0MzRGludCwgR0MzRHNpemVpLCBHQzNEc2l6ZWkpCiBERUxFR0FU
RV9UT19JTlRFUk5BTF8yKHNoYWRlclNvdXJjZSwgUGxhdGZvcm0zRE9iamVjdCwgY29uc3QgU3Ry
aW5nJikKLURFTEVHQVRFX1RPX0lOVEVSTkFMXzMoc3RlbmNpbEZ1bmMsIHVuc2lnbmVkIGxvbmcs
IGxvbmcsIHVuc2lnbmVkIGxvbmcpCi1ERUxFR0FURV9UT19JTlRFUk5BTF80KHN0ZW5jaWxGdW5j
U2VwYXJhdGUsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIGxvbmcsIHVuc2lnbmVkIGxv
bmcpCi1ERUxFR0FURV9UT19JTlRFUk5BTF8xKHN0ZW5jaWxNYXNrLCB1bnNpZ25lZCBsb25nKQot
REVMRUdBVEVfVE9fSU5URVJOQUxfMihzdGVuY2lsTWFza1NlcGFyYXRlLCB1bnNpZ25lZCBsb25n
LCB1bnNpZ25lZCBsb25nKQotREVMRUdBVEVfVE9fSU5URVJOQUxfMyhzdGVuY2lsT3AsIHVuc2ln
bmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcpCi1ERUxFR0FURV9UT19JTlRF
Uk5BTF80KHN0ZW5jaWxPcFNlcGFyYXRlLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCB1
bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nKQotCi1ERUxFR0FURV9UT19JTlRFUk5BTF85Uih0
ZXhJbWFnZTJELCB1bnNpZ25lZCwgdW5zaWduZWQsIHVuc2lnbmVkLCB1bnNpZ25lZCwgdW5zaWdu
ZWQsIHVuc2lnbmVkLCB1bnNpZ25lZCwgdW5zaWduZWQsIHZvaWQqLCBpbnQpCi1ERUxFR0FURV9U
T19JTlRFUk5BTF8zKHRleFBhcmFtZXRlcmYsIHVuc2lnbmVkLCB1bnNpZ25lZCwgZmxvYXQpCi1E
RUxFR0FURV9UT19JTlRFUk5BTF8zKHRleFBhcmFtZXRlcmksIHVuc2lnbmVkLCB1bnNpZ25lZCwg
aW50KQotREVMRUdBVEVfVE9fSU5URVJOQUxfOVIodGV4U3ViSW1hZ2UyRCwgdW5zaWduZWQsIHVu
c2lnbmVkLCB1bnNpZ25lZCwgdW5zaWduZWQsIHVuc2lnbmVkLCB1bnNpZ25lZCwgdW5zaWduZWQs
IHVuc2lnbmVkLCB2b2lkKiwgaW50KQotCi1ERUxFR0FURV9UT19JTlRFUk5BTF8yKHVuaWZvcm0x
ZiwgbG9uZywgZmxvYXQpCi1ERUxFR0FURV9UT19JTlRFUk5BTF8zKHVuaWZvcm0xZnYsIGxvbmcs
IGZsb2F0KiwgaW50KQotREVMRUdBVEVfVE9fSU5URVJOQUxfMih1bmlmb3JtMWksIGxvbmcsIGlu
dCkKLURFTEVHQVRFX1RPX0lOVEVSTkFMXzModW5pZm9ybTFpdiwgbG9uZywgaW50KiwgaW50KQot
REVMRUdBVEVfVE9fSU5URVJOQUxfMyh1bmlmb3JtMmYsIGxvbmcsIGZsb2F0LCBmbG9hdCkKLURF
TEVHQVRFX1RPX0lOVEVSTkFMXzModW5pZm9ybTJmdiwgbG9uZywgZmxvYXQqLCBpbnQpCi1ERUxF
R0FURV9UT19JTlRFUk5BTF8zKHVuaWZvcm0yaSwgbG9uZywgaW50LCBpbnQpCi1ERUxFR0FURV9U
T19JTlRFUk5BTF8zKHVuaWZvcm0yaXYsIGxvbmcsIGludCosIGludCkKLURFTEVHQVRFX1RPX0lO
VEVSTkFMXzQodW5pZm9ybTNmLCBsb25nLCBmbG9hdCwgZmxvYXQsIGZsb2F0KQotREVMRUdBVEVf
VE9fSU5URVJOQUxfMyh1bmlmb3JtM2Z2LCBsb25nLCBmbG9hdCosIGludCkKLURFTEVHQVRFX1RP
X0lOVEVSTkFMXzQodW5pZm9ybTNpLCBsb25nLCBpbnQsIGludCwgaW50KQotREVMRUdBVEVfVE9f
SU5URVJOQUxfMyh1bmlmb3JtM2l2LCBsb25nLCBpbnQqLCBpbnQpCi1ERUxFR0FURV9UT19JTlRF
Uk5BTF81KHVuaWZvcm00ZiwgbG9uZywgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQpCi1ERUxF
R0FURV9UT19JTlRFUk5BTF8zKHVuaWZvcm00ZnYsIGxvbmcsIGZsb2F0KiwgaW50KQotREVMRUdB
VEVfVE9fSU5URVJOQUxfNSh1bmlmb3JtNGksIGxvbmcsIGludCwgaW50LCBpbnQsIGludCkKLURF
TEVHQVRFX1RPX0lOVEVSTkFMXzModW5pZm9ybTRpdiwgbG9uZywgaW50KiwgaW50KQotREVMRUdB
VEVfVE9fSU5URVJOQUxfNCh1bmlmb3JtTWF0cml4MmZ2LCBsb25nLCBib29sLCBmbG9hdCosIGlu
dCkKLURFTEVHQVRFX1RPX0lOVEVSTkFMXzQodW5pZm9ybU1hdHJpeDNmdiwgbG9uZywgYm9vbCwg
ZmxvYXQqLCBpbnQpCi1ERUxFR0FURV9UT19JTlRFUk5BTF80KHVuaWZvcm1NYXRyaXg0ZnYsIGxv
bmcsIGJvb2wsIGZsb2F0KiwgaW50KQorREVMRUdBVEVfVE9fSU5URVJOQUxfMyhzdGVuY2lsRnVu
YywgR0MzRGVudW0sIEdDM0RpbnQsIEdDM0R1aW50KQorREVMRUdBVEVfVE9fSU5URVJOQUxfNChz
dGVuY2lsRnVuY1NlcGFyYXRlLCBHQzNEZW51bSwgR0MzRGVudW0sIEdDM0RpbnQsIEdDM0R1aW50
KQorREVMRUdBVEVfVE9fSU5URVJOQUxfMShzdGVuY2lsTWFzaywgR0MzRHVpbnQpCitERUxFR0FU
RV9UT19JTlRFUk5BTF8yKHN0ZW5jaWxNYXNrU2VwYXJhdGUsIEdDM0RlbnVtLCBHQzNEdWludCkK
K0RFTEVHQVRFX1RPX0lOVEVSTkFMXzMoc3RlbmNpbE9wLCBHQzNEZW51bSwgR0MzRGVudW0sIEdD
M0RlbnVtKQorREVMRUdBVEVfVE9fSU5URVJOQUxfNChzdGVuY2lsT3BTZXBhcmF0ZSwgR0MzRGVu
dW0sIEdDM0RlbnVtLCBHQzNEZW51bSwgR0MzRGVudW0pCisKK0RFTEVHQVRFX1RPX0lOVEVSTkFM
XzlSKHRleEltYWdlMkQsIEdDM0RlbnVtLCBHQzNEaW50LCBHQzNEZW51bSwgR0MzRHNpemVpLCBH
QzNEc2l6ZWksIEdDM0RpbnQsIEdDM0RlbnVtLCBHQzNEZW51bSwgY29uc3Qgdm9pZCosIGJvb2wp
CitERUxFR0FURV9UT19JTlRFUk5BTF8zKHRleFBhcmFtZXRlcmYsIEdDM0RlbnVtLCBHQzNEZW51
bSwgR0MzRGZsb2F0KQorREVMRUdBVEVfVE9fSU5URVJOQUxfMyh0ZXhQYXJhbWV0ZXJpLCBHQzNE
ZW51bSwgR0MzRGVudW0sIEdDM0RpbnQpCitERUxFR0FURV9UT19JTlRFUk5BTF85KHRleFN1Yklt
YWdlMkQsIEdDM0RlbnVtLCBHQzNEaW50LCBHQzNEaW50LCBHQzNEaW50LCBHQzNEc2l6ZWksIEdD
M0RzaXplaSwgR0MzRGVudW0sIEdDM0RlbnVtLCBjb25zdCB2b2lkKikKKworREVMRUdBVEVfVE9f
SU5URVJOQUxfMih1bmlmb3JtMWYsIEdDM0RpbnQsIEdDM0RmbG9hdCkKK0RFTEVHQVRFX1RPX0lO
VEVSTkFMXzModW5pZm9ybTFmdiwgR0MzRGludCwgR0MzRGZsb2F0KiwgR0MzRHNpemVpKQorREVM
RUdBVEVfVE9fSU5URVJOQUxfMih1bmlmb3JtMWksIEdDM0RpbnQsIEdDM0RpbnQpCitERUxFR0FU
RV9UT19JTlRFUk5BTF8zKHVuaWZvcm0xaXYsIEdDM0RpbnQsIEdDM0RpbnQqLCBHQzNEc2l6ZWkp
CitERUxFR0FURV9UT19JTlRFUk5BTF8zKHVuaWZvcm0yZiwgR0MzRGludCwgR0MzRGZsb2F0LCBH
QzNEZmxvYXQpCitERUxFR0FURV9UT19JTlRFUk5BTF8zKHVuaWZvcm0yZnYsIEdDM0RpbnQsIEdD
M0RmbG9hdCosIEdDM0RzaXplaSkKK0RFTEVHQVRFX1RPX0lOVEVSTkFMXzModW5pZm9ybTJpLCBH
QzNEaW50LCBHQzNEaW50LCBHQzNEaW50KQorREVMRUdBVEVfVE9fSU5URVJOQUxfMyh1bmlmb3Jt
Mml2LCBHQzNEaW50LCBHQzNEaW50KiwgR0MzRHNpemVpKQorREVMRUdBVEVfVE9fSU5URVJOQUxf
NCh1bmlmb3JtM2YsIEdDM0RpbnQsIEdDM0RmbG9hdCwgR0MzRGZsb2F0LCBHQzNEZmxvYXQpCitE
RUxFR0FURV9UT19JTlRFUk5BTF8zKHVuaWZvcm0zZnYsIEdDM0RpbnQsIEdDM0RmbG9hdCosIEdD
M0RzaXplaSkKK0RFTEVHQVRFX1RPX0lOVEVSTkFMXzQodW5pZm9ybTNpLCBHQzNEaW50LCBHQzNE
aW50LCBHQzNEaW50LCBHQzNEaW50KQorREVMRUdBVEVfVE9fSU5URVJOQUxfMyh1bmlmb3JtM2l2
LCBHQzNEaW50LCBHQzNEaW50KiwgR0MzRHNpemVpKQorREVMRUdBVEVfVE9fSU5URVJOQUxfNSh1
bmlmb3JtNGYsIEdDM0RpbnQsIEdDM0RmbG9hdCwgR0MzRGZsb2F0LCBHQzNEZmxvYXQsIEdDM0Rm
bG9hdCkKK0RFTEVHQVRFX1RPX0lOVEVSTkFMXzModW5pZm9ybTRmdiwgR0MzRGludCwgR0MzRGZs
b2F0KiwgR0MzRHNpemVpKQorREVMRUdBVEVfVE9fSU5URVJOQUxfNSh1bmlmb3JtNGksIEdDM0Rp
bnQsIEdDM0RpbnQsIEdDM0RpbnQsIEdDM0RpbnQsIEdDM0RpbnQpCitERUxFR0FURV9UT19JTlRF
Uk5BTF8zKHVuaWZvcm00aXYsIEdDM0RpbnQsIEdDM0RpbnQqLCBHQzNEc2l6ZWkpCitERUxFR0FU
RV9UT19JTlRFUk5BTF80KHVuaWZvcm1NYXRyaXgyZnYsIEdDM0RpbnQsIEdDM0Rib29sZWFuLCBH
QzNEZmxvYXQqLCBHQzNEc2l6ZWkpCitERUxFR0FURV9UT19JTlRFUk5BTF80KHVuaWZvcm1NYXRy
aXgzZnYsIEdDM0RpbnQsIEdDM0Rib29sZWFuLCBHQzNEZmxvYXQqLCBHQzNEc2l6ZWkpCitERUxF
R0FURV9UT19JTlRFUk5BTF80KHVuaWZvcm1NYXRyaXg0ZnYsIEdDM0RpbnQsIEdDM0Rib29sZWFu
LCBHQzNEZmxvYXQqLCBHQzNEc2l6ZWkpCiAKIERFTEVHQVRFX1RPX0lOVEVSTkFMXzEodXNlUHJv
Z3JhbSwgUGxhdGZvcm0zRE9iamVjdCkKIERFTEVHQVRFX1RPX0lOVEVSTkFMXzEodmFsaWRhdGVQ
cm9ncmFtLCBQbGF0Zm9ybTNET2JqZWN0KQogCi1ERUxFR0FURV9UT19JTlRFUk5BTF8yKHZlcnRl
eEF0dHJpYjFmLCB1bnNpZ25lZCBsb25nLCBmbG9hdCkKLURFTEVHQVRFX1RPX0lOVEVSTkFMXzIo
dmVydGV4QXR0cmliMWZ2LCB1bnNpZ25lZCBsb25nLCBmbG9hdCopCi1ERUxFR0FURV9UT19JTlRF
Uk5BTF8zKHZlcnRleEF0dHJpYjJmLCB1bnNpZ25lZCBsb25nLCBmbG9hdCwgZmxvYXQpCi1ERUxF
R0FURV9UT19JTlRFUk5BTF8yKHZlcnRleEF0dHJpYjJmdiwgdW5zaWduZWQgbG9uZywgZmxvYXQq
KQotREVMRUdBVEVfVE9fSU5URVJOQUxfNCh2ZXJ0ZXhBdHRyaWIzZiwgdW5zaWduZWQgbG9uZywg
ZmxvYXQsIGZsb2F0LCBmbG9hdCkKLURFTEVHQVRFX1RPX0lOVEVSTkFMXzIodmVydGV4QXR0cmli
M2Z2LCB1bnNpZ25lZCBsb25nLCBmbG9hdCopCi1ERUxFR0FURV9UT19JTlRFUk5BTF81KHZlcnRl
eEF0dHJpYjRmLCB1bnNpZ25lZCBsb25nLCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCkKLURF
TEVHQVRFX1RPX0lOVEVSTkFMXzIodmVydGV4QXR0cmliNGZ2LCB1bnNpZ25lZCBsb25nLCBmbG9h
dCopCi1ERUxFR0FURV9UT19JTlRFUk5BTF82KHZlcnRleEF0dHJpYlBvaW50ZXIsIHVuc2lnbmVk
IGxvbmcsIGludCwgaW50LCBib29sLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nKQorREVM
RUdBVEVfVE9fSU5URVJOQUxfMih2ZXJ0ZXhBdHRyaWIxZiwgR0MzRHVpbnQsIEdDM0RmbG9hdCkK
K0RFTEVHQVRFX1RPX0lOVEVSTkFMXzIodmVydGV4QXR0cmliMWZ2LCBHQzNEdWludCwgR0MzRGZs
b2F0KikKK0RFTEVHQVRFX1RPX0lOVEVSTkFMXzModmVydGV4QXR0cmliMmYsIEdDM0R1aW50LCBH
QzNEZmxvYXQsIEdDM0RmbG9hdCkKK0RFTEVHQVRFX1RPX0lOVEVSTkFMXzIodmVydGV4QXR0cmli
MmZ2LCBHQzNEdWludCwgR0MzRGZsb2F0KikKK0RFTEVHQVRFX1RPX0lOVEVSTkFMXzQodmVydGV4
QXR0cmliM2YsIEdDM0R1aW50LCBHQzNEZmxvYXQsIEdDM0RmbG9hdCwgR0MzRGZsb2F0KQorREVM
RUdBVEVfVE9fSU5URVJOQUxfMih2ZXJ0ZXhBdHRyaWIzZnYsIEdDM0R1aW50LCBHQzNEZmxvYXQq
KQorREVMRUdBVEVfVE9fSU5URVJOQUxfNSh2ZXJ0ZXhBdHRyaWI0ZiwgR0MzRHVpbnQsIEdDM0Rm
bG9hdCwgR0MzRGZsb2F0LCBHQzNEZmxvYXQsIEdDM0RmbG9hdCkKK0RFTEVHQVRFX1RPX0lOVEVS
TkFMXzIodmVydGV4QXR0cmliNGZ2LCBHQzNEdWludCwgR0MzRGZsb2F0KikKK0RFTEVHQVRFX1RP
X0lOVEVSTkFMXzYodmVydGV4QXR0cmliUG9pbnRlciwgR0MzRHVpbnQsIEdDM0RpbnQsIEdDM0Rl
bnVtLCBHQzNEYm9vbGVhbiwgR0MzRHNpemVpLCBHQzNEaW50cHRyKQogCi1ERUxFR0FURV9UT19J
TlRFUk5BTF80KHZpZXdwb3J0LCBsb25nLCBsb25nLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBs
b25nKQorREVMRUdBVEVfVE9fSU5URVJOQUxfNCh2aWV3cG9ydCwgR0MzRGludCwgR0MzRGludCwg
R0MzRHNpemVpLCBHQzNEc2l6ZWkpCiAKIERFTEVHQVRFX1RPX0lOVEVSTkFMXzEocGFpbnRSZW5k
ZXJpbmdSZXN1bHRzVG9DYW52YXMsIENhbnZhc1JlbmRlcmluZ0NvbnRleHQqKQogCkBAIC0xMDY3
LDIxICsxMDUyLDIxIEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OnBhaW50c0ludG9DYW52YXMK
ICAgICByZXR1cm4gbV9pbnRlcm5hbC0+cGFpbnRzSW50b0NhbnZhc0J1ZmZlcigpOwogfQogCi1E
RUxFR0FURV9UT19JTlRFUk5BTF9SKGNyZWF0ZUJ1ZmZlciwgdW5zaWduZWQpCi1ERUxFR0FURV9U
T19JTlRFUk5BTF9SKGNyZWF0ZUZyYW1lYnVmZmVyLCB1bnNpZ25lZCkKLURFTEVHQVRFX1RPX0lO
VEVSTkFMX1IoY3JlYXRlUHJvZ3JhbSwgdW5zaWduZWQpCi1ERUxFR0FURV9UT19JTlRFUk5BTF9S
KGNyZWF0ZVJlbmRlcmJ1ZmZlciwgdW5zaWduZWQpCi1ERUxFR0FURV9UT19JTlRFUk5BTF8xUihj
cmVhdGVTaGFkZXIsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkKQotREVMRUdBVEVfVE9fSU5URVJO
QUxfUihjcmVhdGVUZXh0dXJlLCB1bnNpZ25lZCkKLQotREVMRUdBVEVfVE9fSU5URVJOQUxfMShk
ZWxldGVCdWZmZXIsIHVuc2lnbmVkKQotREVMRUdBVEVfVE9fSU5URVJOQUxfMShkZWxldGVGcmFt
ZWJ1ZmZlciwgdW5zaWduZWQpCi1ERUxFR0FURV9UT19JTlRFUk5BTF8xKGRlbGV0ZVByb2dyYW0s
IHVuc2lnbmVkKQotREVMRUdBVEVfVE9fSU5URVJOQUxfMShkZWxldGVSZW5kZXJidWZmZXIsIHVu
c2lnbmVkKQotREVMRUdBVEVfVE9fSU5URVJOQUxfMShkZWxldGVTaGFkZXIsIHVuc2lnbmVkKQot
REVMRUdBVEVfVE9fSU5URVJOQUxfMShkZWxldGVUZXh0dXJlLCB1bnNpZ25lZCkKK0RFTEVHQVRF
X1RPX0lOVEVSTkFMX1IoY3JlYXRlQnVmZmVyLCBQbGF0Zm9ybTNET2JqZWN0KQorREVMRUdBVEVf
VE9fSU5URVJOQUxfUihjcmVhdGVGcmFtZWJ1ZmZlciwgUGxhdGZvcm0zRE9iamVjdCkKK0RFTEVH
QVRFX1RPX0lOVEVSTkFMX1IoY3JlYXRlUHJvZ3JhbSwgUGxhdGZvcm0zRE9iamVjdCkKK0RFTEVH
QVRFX1RPX0lOVEVSTkFMX1IoY3JlYXRlUmVuZGVyYnVmZmVyLCBQbGF0Zm9ybTNET2JqZWN0KQor
REVMRUdBVEVfVE9fSU5URVJOQUxfMVIoY3JlYXRlU2hhZGVyLCBHQzNEZW51bSwgUGxhdGZvcm0z
RE9iamVjdCkKK0RFTEVHQVRFX1RPX0lOVEVSTkFMX1IoY3JlYXRlVGV4dHVyZSwgUGxhdGZvcm0z
RE9iamVjdCkKKworREVMRUdBVEVfVE9fSU5URVJOQUxfMShkZWxldGVCdWZmZXIsIFBsYXRmb3Jt
M0RPYmplY3QpCitERUxFR0FURV9UT19JTlRFUk5BTF8xKGRlbGV0ZUZyYW1lYnVmZmVyLCBQbGF0
Zm9ybTNET2JqZWN0KQorREVMRUdBVEVfVE9fSU5URVJOQUxfMShkZWxldGVQcm9ncmFtLCBQbGF0
Zm9ybTNET2JqZWN0KQorREVMRUdBVEVfVE9fSU5URVJOQUxfMShkZWxldGVSZW5kZXJidWZmZXIs
IFBsYXRmb3JtM0RPYmplY3QpCitERUxFR0FURV9UT19JTlRFUk5BTF8xKGRlbGV0ZVNoYWRlciwg
UGxhdGZvcm0zRE9iamVjdCkKK0RFTEVHQVRFX1RPX0lOVEVSTkFMXzEoZGVsZXRlVGV4dHVyZSwg
UGxhdGZvcm0zRE9iamVjdCkKIAotREVMRUdBVEVfVE9fSU5URVJOQUxfMShzeW50aGVzaXplR0xF
cnJvciwgdW5zaWduZWQgbG9uZykKK0RFTEVHQVRFX1RPX0lOVEVSTkFMXzEoc3ludGhlc2l6ZUdM
RXJyb3IsIEdDM0RlbnVtKQogREVMRUdBVEVfVE9fSU5URVJOQUxfUihnZXRFeHRlbnNpb25zLCBF
eHRlbnNpb25zM0QqKQogCiBib29sIEdyYXBoaWNzQ29udGV4dDNEOjppc0dMRVMyQ29tcGxpYW50
KCkgY29uc3QKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0RJbnRl
cm5hbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0
M0RJbnRlcm5hbC5oCShyZXZpc2lvbiA3NDk3MCkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvR3Jh
cGhpY3NDb250ZXh0M0RJbnRlcm5hbC5oCSh3b3JraW5nIGNvcHkpCkBAIC02Miw3ICs2Miw3IEBA
IHB1YmxpYzoKIAogICAgIGJvb2wgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAKLSAgICBpbnQgc2l6
ZUluQnl0ZXMoaW50IHR5cGUpOworICAgIHVuc2lnbmVkIGludCBzaXplSW5CeXRlcyhHQzNEZW51
bSB0eXBlKTsKIAogICAgIHZvaWQgcmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpOwogICAg
IEludFNpemUgZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKTsKQEAgLTc3LDE5MSArNzcsMTY5
IEBAIHB1YmxpYzoKICNlbmRpZgogICAgIGJvb2wgaXNHTEVTMkNvbXBsaWFudCgpIGNvbnN0Owog
CisgICAgdm9pZCByZWxlYXNlU2hhZGVyQ29tcGlsZXIoKTsKKyAgICBib29sIGlzQ29udGV4dExv
c3QoKTsKKwogICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgIC8vIEVudHJ5IHBvaW50cyBmb3IgV2Vi
R0wuCiAgICAgLy8KLSAgICB2b2lkIGFjdGl2ZVRleHR1cmUodW5zaWduZWQgbG9uZyB0ZXh0dXJl
KTsKKyAgICB2b2lkIGFjdGl2ZVRleHR1cmUoR0MzRGVudW0gdGV4dHVyZSk7CiAgICAgdm9pZCBh
dHRhY2hTaGFkZXIoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBQbGF0Zm9ybTNET2JqZWN0IHNo
YWRlcik7Ci0gICAgdm9pZCBiaW5kQXR0cmliTG9jYXRpb24oUGxhdGZvcm0zRE9iamVjdCwgdW5z
aWduZWQgbG9uZyBpbmRleCwgY29uc3QgU3RyaW5nJiBuYW1lKTsKLSAgICB2b2lkIGJpbmRCdWZm
ZXIodW5zaWduZWQgbG9uZyB0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3QpOwotICAgIHZvaWQgYmlu
ZEZyYW1lYnVmZmVyKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBQbGF0Zm9ybTNET2JqZWN0KTsKLSAg
ICB2b2lkIGJpbmRSZW5kZXJidWZmZXIodW5zaWduZWQgbG9uZyB0YXJnZXQsIFBsYXRmb3JtM0RP
YmplY3QpOwotICAgIHZvaWQgYmluZFRleHR1cmUodW5zaWduZWQgbG9uZyB0YXJnZXQsIFBsYXRm
b3JtM0RPYmplY3QgdGV4dHVyZSk7Ci0gICAgdm9pZCBibGVuZENvbG9yKGRvdWJsZSByZWQsIGRv
dWJsZSBncmVlbiwgZG91YmxlIGJsdWUsIGRvdWJsZSBhbHBoYSk7Ci0gICAgdm9pZCBibGVuZEVx
dWF0aW9uKHVuc2lnbmVkIGxvbmcgbW9kZSk7Ci0gICAgdm9pZCBibGVuZEVxdWF0aW9uU2VwYXJh
dGUodW5zaWduZWQgbG9uZyBtb2RlUkdCLCB1bnNpZ25lZCBsb25nIG1vZGVBbHBoYSk7Ci0gICAg
dm9pZCBibGVuZEZ1bmModW5zaWduZWQgbG9uZyBzZmFjdG9yLCB1bnNpZ25lZCBsb25nIGRmYWN0
b3IpOwotICAgIHZvaWQgYmxlbmRGdW5jU2VwYXJhdGUodW5zaWduZWQgbG9uZyBzcmNSR0IsIHVu
c2lnbmVkIGxvbmcgZHN0UkdCLCB1bnNpZ25lZCBsb25nIHNyY0FscGhhLCB1bnNpZ25lZCBsb25n
IGRzdEFscGhhKTsKLQotICAgIHZvaWQgYnVmZmVyRGF0YSh1bnNpZ25lZCBsb25nIHRhcmdldCwg
aW50IHNpemUsIHVuc2lnbmVkIGxvbmcgdXNhZ2UpOwotICAgIHZvaWQgYnVmZmVyRGF0YSh1bnNp
Z25lZCBsb25nIHRhcmdldCwgaW50IHNpemUsIGNvbnN0IHZvaWQqIGRhdGEsIHVuc2lnbmVkIGxv
bmcgdXNhZ2UpOwotICAgIHZvaWQgYnVmZmVyU3ViRGF0YSh1bnNpZ25lZCBsb25nIHRhcmdldCwg
bG9uZyBvZmZzZXQsIGludCBzaXplLCBjb25zdCB2b2lkKiBkYXRhKTsKLQotICAgIHVuc2lnbmVk
IGxvbmcgY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyh1bnNpZ25lZCBsb25nIHRhcmdldCk7Ci0gICAg
dm9pZCBjbGVhcih1bnNpZ25lZCBsb25nIG1hc2spOwotICAgIHZvaWQgY2xlYXJDb2xvcihkb3Vi
bGUgcmVkLCBkb3VibGUgZ3JlZW4sIGRvdWJsZSBibHVlLCBkb3VibGUgYWxwaGEpOwotICAgIHZv
aWQgY2xlYXJEZXB0aChkb3VibGUgZGVwdGgpOwotICAgIHZvaWQgY2xlYXJTdGVuY2lsKGxvbmcg
cyk7Ci0gICAgdm9pZCBjb2xvck1hc2soYm9vbCByZWQsIGJvb2wgZ3JlZW4sIGJvb2wgYmx1ZSwg
Ym9vbCBhbHBoYSk7CisgICAgdm9pZCBiaW5kQXR0cmliTG9jYXRpb24oUGxhdGZvcm0zRE9iamVj
dCwgR0MzRHVpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgbmFtZSk7CisgICAgdm9pZCBiaW5kQnVm
ZmVyKEdDM0RlbnVtIHRhcmdldCwgUGxhdGZvcm0zRE9iamVjdCk7CisgICAgdm9pZCBiaW5kRnJh
bWVidWZmZXIoR0MzRGVudW0gdGFyZ2V0LCBQbGF0Zm9ybTNET2JqZWN0KTsKKyAgICB2b2lkIGJp
bmRSZW5kZXJidWZmZXIoR0MzRGVudW0gdGFyZ2V0LCBQbGF0Zm9ybTNET2JqZWN0KTsKKyAgICB2
b2lkIGJpbmRUZXh0dXJlKEdDM0RlbnVtIHRhcmdldCwgUGxhdGZvcm0zRE9iamVjdCk7CisgICAg
dm9pZCBibGVuZENvbG9yKEdDM0RjbGFtcGYgcmVkLCBHQzNEY2xhbXBmIGdyZWVuLCBHQzNEY2xh
bXBmIGJsdWUsIEdDM0RjbGFtcGYgYWxwaGEpOworICAgIHZvaWQgYmxlbmRFcXVhdGlvbihHQzNE
ZW51bSBtb2RlKTsKKyAgICB2b2lkIGJsZW5kRXF1YXRpb25TZXBhcmF0ZShHQzNEZW51bSBtb2Rl
UkdCLCBHQzNEZW51bSBtb2RlQWxwaGEpOworICAgIHZvaWQgYmxlbmRGdW5jKEdDM0RlbnVtIHNm
YWN0b3IsIEdDM0RlbnVtIGRmYWN0b3IpOworICAgIHZvaWQgYmxlbmRGdW5jU2VwYXJhdGUoR0Mz
RGVudW0gc3JjUkdCLCBHQzNEZW51bSBkc3RSR0IsIEdDM0RlbnVtIHNyY0FscGhhLCBHQzNEZW51
bSBkc3RBbHBoYSk7CisKKyAgICB2b2lkIGJ1ZmZlckRhdGEoR0MzRGVudW0gdGFyZ2V0LCBHQzNE
c2l6ZWlwdHIgc2l6ZSwgR0MzRGVudW0gdXNhZ2UpOworICAgIHZvaWQgYnVmZmVyRGF0YShHQzNE
ZW51bSB0YXJnZXQsIEdDM0RzaXplaXB0ciBzaXplLCBjb25zdCB2b2lkKiBkYXRhLCBHQzNEZW51
bSB1c2FnZSk7CisgICAgdm9pZCBidWZmZXJTdWJEYXRhKEdDM0RlbnVtIHRhcmdldCwgR0MzRGlu
dHB0ciBvZmZzZXQsIEdDM0RzaXplaXB0ciBzaXplLCBjb25zdCB2b2lkKiBkYXRhKTsKKworICAg
IEdDM0RlbnVtIGNoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0MzRGVudW0gdGFyZ2V0KTsKKyAgICB2
b2lkIGNsZWFyKEdDM0RiaXRmaWVsZCBtYXNrKTsKKyAgICB2b2lkIGNsZWFyQ29sb3IoR0MzRGNs
YW1wZiByZWQsIEdDM0RjbGFtcGYgZ3JlZW4sIEdDM0RjbGFtcGYgYmx1ZSwgR0MzRGNsYW1wZiBh
bHBoYSk7CisgICAgdm9pZCBjbGVhckRlcHRoKEdDM0RjbGFtcGYgZGVwdGgpOworICAgIHZvaWQg
Y2xlYXJTdGVuY2lsKEdDM0RpbnQgcyk7CisgICAgdm9pZCBjb2xvck1hc2soR0MzRGJvb2xlYW4g
cmVkLCBHQzNEYm9vbGVhbiBncmVlbiwgR0MzRGJvb2xlYW4gYmx1ZSwgR0MzRGJvb2xlYW4gYWxw
aGEpOwogICAgIHZvaWQgY29tcGlsZVNoYWRlcihQbGF0Zm9ybTNET2JqZWN0KTsKIAotICAgIHZv
aWQgY29weVRleEltYWdlMkQodW5zaWduZWQgbG9uZyB0YXJnZXQsIGxvbmcgbGV2ZWwsIHVuc2ln
bmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQsIGxvbmcgeCwgbG9uZyB5LCB1bnNpZ25lZCBsb25nIHdp
ZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCwgbG9uZyBib3JkZXIpOwotICAgIHZvaWQgY29weVRl
eFN1YkltYWdlMkQodW5zaWduZWQgbG9uZyB0YXJnZXQsIGxvbmcgbGV2ZWwsIGxvbmcgeG9mZnNl
dCwgbG9uZyB5b2Zmc2V0LCBsb25nIHgsIGxvbmcgeSwgdW5zaWduZWQgbG9uZyB3aWR0aCwgdW5z
aWduZWQgbG9uZyBoZWlnaHQpOwotICAgIHZvaWQgY3VsbEZhY2UodW5zaWduZWQgbG9uZyBtb2Rl
KTsKLSAgICB2b2lkIGRlcHRoRnVuYyh1bnNpZ25lZCBsb25nIGZ1bmMpOwotICAgIHZvaWQgZGVw
dGhNYXNrKGJvb2wgZmxhZyk7Ci0gICAgdm9pZCBkZXB0aFJhbmdlKGRvdWJsZSB6TmVhciwgZG91
YmxlIHpGYXIpOworICAgIHZvaWQgY29weVRleEltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNE
aW50IGxldmVsLCBHQzNEZW51bSBpbnRlcm5hbGZvcm1hdCwgR0MzRGludCB4LCBHQzNEaW50IHks
IEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGludCBib3JkZXIpOworICAg
IHZvaWQgY29weVRleFN1YkltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBH
QzNEaW50IHhvZmZzZXQsIEdDM0RpbnQgeW9mZnNldCwgR0MzRGludCB4LCBHQzNEaW50IHksIEdD
M0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCk7CisgICAgdm9pZCBjdWxsRmFjZShHQzNE
ZW51bSBtb2RlKTsKKyAgICB2b2lkIGRlcHRoRnVuYyhHQzNEZW51bSBmdW5jKTsKKyAgICB2b2lk
IGRlcHRoTWFzayhHQzNEYm9vbGVhbiBmbGFnKTsKKyAgICB2b2lkIGRlcHRoUmFuZ2UoR0MzRGNs
YW1wZiB6TmVhciwgR0MzRGNsYW1wZiB6RmFyKTsKICAgICB2b2lkIGRldGFjaFNoYWRlcihQbGF0
Zm9ybTNET2JqZWN0LCBQbGF0Zm9ybTNET2JqZWN0KTsKLSAgICB2b2lkIGRpc2FibGUodW5zaWdu
ZWQgbG9uZyBjYXApOwotICAgIHZvaWQgZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KHVuc2lnbmVk
IGxvbmcgaW5kZXgpOwotICAgIHZvaWQgZHJhd0FycmF5cyh1bnNpZ25lZCBsb25nIG1vZGUsIGxv
bmcgZmlyc3QsIGxvbmcgY291bnQpOwotICAgIHZvaWQgZHJhd0VsZW1lbnRzKHVuc2lnbmVkIGxv
bmcgbW9kZSwgdW5zaWduZWQgbG9uZyBjb3VudCwgdW5zaWduZWQgbG9uZyB0eXBlLCBsb25nIG9m
ZnNldCk7CisgICAgdm9pZCBkaXNhYmxlKEdDM0RlbnVtIGNhcCk7CisgICAgdm9pZCBkaXNhYmxl
VmVydGV4QXR0cmliQXJyYXkoR0MzRHVpbnQgaW5kZXgpOworICAgIHZvaWQgZHJhd0FycmF5cyhH
QzNEZW51bSBtb2RlLCBHQzNEaW50IGZpcnN0LCBHQzNEc2l6ZWkgY291bnQpOworICAgIHZvaWQg
ZHJhd0VsZW1lbnRzKEdDM0RlbnVtIG1vZGUsIEdDM0RzaXplaSBjb3VudCwgR0MzRGVudW0gdHlw
ZSwgR0MzRGludHB0ciBvZmZzZXQpOwogCi0gICAgdm9pZCBlbmFibGUodW5zaWduZWQgbG9uZyBj
YXApOwotICAgIHZvaWQgZW5hYmxlVmVydGV4QXR0cmliQXJyYXkodW5zaWduZWQgbG9uZyBpbmRl
eCk7CisgICAgdm9pZCBlbmFibGUoR0MzRGVudW0gY2FwKTsKKyAgICB2b2lkIGVuYWJsZVZlcnRl
eEF0dHJpYkFycmF5KEdDM0R1aW50IGluZGV4KTsKICAgICB2b2lkIGZpbmlzaCgpOwogICAgIHZv
aWQgZmx1c2goKTsKLSAgICB2b2lkIGZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKHVuc2lnbmVkIGxv
bmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIGF0dGFjaG1lbnQsIHVuc2lnbmVkIGxvbmcgcmVuZGVy
YnVmZmVydGFyZ2V0LCBQbGF0Zm9ybTNET2JqZWN0KTsKLSAgICB2b2lkIGZyYW1lYnVmZmVyVGV4
dHVyZTJEKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIGF0dGFjaG1lbnQsIHVu
c2lnbmVkIGxvbmcgdGV4dGFyZ2V0LCBQbGF0Zm9ybTNET2JqZWN0LCBsb25nIGxldmVsKTsKLSAg
ICB2b2lkIGZyb250RmFjZSh1bnNpZ25lZCBsb25nIG1vZGUpOwotICAgIHZvaWQgZ2VuZXJhdGVN
aXBtYXAodW5zaWduZWQgbG9uZyB0YXJnZXQpOwotCi0gICAgYm9vbCBnZXRBY3RpdmVBdHRyaWIo
UGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCB1bnNpZ25lZCBsb25nIGluZGV4LCBBY3RpdmVJbmZv
Jik7Ci0gICAgYm9vbCBnZXRBY3RpdmVVbmlmb3JtKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwg
dW5zaWduZWQgbG9uZyBpbmRleCwgQWN0aXZlSW5mbyYpOwotCi0gICAgdm9pZCBnZXRBdHRhY2hl
ZFNoYWRlcnMoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBpbnQgbWF4Q291bnQsIGludCogY291
bnQsIHVuc2lnbmVkIGludCogc2hhZGVycyk7Ci0KLSAgICBpbnQgZ2V0QXR0cmliTG9jYXRpb24o
UGxhdGZvcm0zRE9iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lKTsKLQotICAgIHZvaWQgZ2V0Qm9v
bGVhbnYodW5zaWduZWQgbG9uZyBwbmFtZSwgdW5zaWduZWQgY2hhciogdmFsdWUpOwotCi0gICAg
dm9pZCBnZXRCdWZmZXJQYXJhbWV0ZXJpdih1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQg
bG9uZyBwbmFtZSwgaW50KiB2YWx1ZSk7Ci0KKyAgICB2b2lkIGZyYW1lYnVmZmVyUmVuZGVyYnVm
ZmVyKEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gYXR0YWNobWVudCwgR0MzRGVudW0gcmVuZGVy
YnVmZmVydGFyZ2V0LCBQbGF0Zm9ybTNET2JqZWN0KTsKKyAgICB2b2lkIGZyYW1lYnVmZmVyVGV4
dHVyZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gYXR0YWNobWVudCwgR0MzRGVudW0gdGV4
dGFyZ2V0LCBQbGF0Zm9ybTNET2JqZWN0LCBHQzNEaW50IGxldmVsKTsKKyAgICB2b2lkIGZyb250
RmFjZShHQzNEZW51bSBtb2RlKTsKKyAgICB2b2lkIGdlbmVyYXRlTWlwbWFwKEdDM0RlbnVtIHRh
cmdldCk7CisKKyAgICBib29sIGdldEFjdGl2ZUF0dHJpYihQbGF0Zm9ybTNET2JqZWN0IHByb2dy
YW0sIEdDM0R1aW50IGluZGV4LCBBY3RpdmVJbmZvJik7CisgICAgYm9vbCBnZXRBY3RpdmVVbmlm
b3JtKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgR0MzRHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8m
KTsKKyAgICB2b2lkIGdldEF0dGFjaGVkU2hhZGVycyhQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0s
IEdDM0RzaXplaSBtYXhDb3VudCwgR0MzRHNpemVpKiBjb3VudCwgUGxhdGZvcm0zRE9iamVjdCog
c2hhZGVycyk7CisgICAgR0MzRGludCBnZXRBdHRyaWJMb2NhdGlvbihQbGF0Zm9ybTNET2JqZWN0
LCBjb25zdCBTdHJpbmcmIG5hbWUpOworICAgIHZvaWQgZ2V0Qm9vbGVhbnYoR0MzRGVudW0gcG5h
bWUsIEdDM0Rib29sZWFuKiB2YWx1ZSk7CisgICAgdm9pZCBnZXRCdWZmZXJQYXJhbWV0ZXJpdihH
QzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIHBuYW1lLCBHQzNEaW50KiB2YWx1ZSk7CiAgICAgR3Jh
cGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgZ2V0Q29udGV4dEF0dHJpYnV0ZXMoKTsKLQotICAg
IHVuc2lnbmVkIGxvbmcgZ2V0RXJyb3IoKTsKLQotICAgIGJvb2wgaXNDb250ZXh0TG9zdCgpOwot
Ci0gICAgdm9pZCBnZXRGbG9hdHYodW5zaWduZWQgbG9uZyBwbmFtZSwgZmxvYXQqIHZhbHVlKTsK
LQotICAgIHZvaWQgZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYodW5zaWduZWQg
bG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgYXR0YWNobWVudCwgdW5zaWduZWQgbG9uZyBwbmFt
ZSwgaW50KiB2YWx1ZSk7Ci0KLSAgICB2b2lkIGdldEludGVnZXJ2KHVuc2lnbmVkIGxvbmcgcG5h
bWUsIGludCogdmFsdWUpOwotCi0gICAgdm9pZCBnZXRQcm9ncmFtaXYoUGxhdGZvcm0zRE9iamVj
dCBwcm9ncmFtLCB1bnNpZ25lZCBsb25nIHBuYW1lLCBpbnQqIHZhbHVlKTsKLQorICAgIEdDM0Rl
bnVtIGdldEVycm9yKCk7CisgICAgdm9pZCBnZXRGbG9hdHYoR0MzRGVudW0gcG5hbWUsIEdDM0Rm
bG9hdCogdmFsdWUpOworICAgIHZvaWQgZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVy
aXYoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBhdHRhY2htZW50LCBHQzNEZW51bSBwbmFtZSwg
R0MzRGludCogdmFsdWUpOworICAgIHZvaWQgZ2V0SW50ZWdlcnYoR0MzRGVudW0gcG5hbWUsIEdD
M0RpbnQqIHZhbHVlKTsKKyAgICB2b2lkIGdldFByb2dyYW1pdihQbGF0Zm9ybTNET2JqZWN0IHBy
b2dyYW0sIEdDM0RlbnVtIHBuYW1lLCBHQzNEaW50KiB2YWx1ZSk7CiAgICAgU3RyaW5nIGdldFBy
b2dyYW1JbmZvTG9nKFBsYXRmb3JtM0RPYmplY3QpOwotCi0gICAgdm9pZCBnZXRSZW5kZXJidWZm
ZXJQYXJhbWV0ZXJpdih1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSwg
aW50KiB2YWx1ZSk7Ci0KLSAgICB2b2lkIGdldFNoYWRlcml2KFBsYXRmb3JtM0RPYmplY3QsIHVu
c2lnbmVkIGxvbmcgcG5hbWUsIGludCogdmFsdWUpOwotCisgICAgdm9pZCBnZXRSZW5kZXJidWZm
ZXJQYXJhbWV0ZXJpdihHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIHBuYW1lLCBHQzNEaW50KiB2
YWx1ZSk7CisgICAgdm9pZCBnZXRTaGFkZXJpdihQbGF0Zm9ybTNET2JqZWN0LCBHQzNEZW51bSBw
bmFtZSwgR0MzRGludCogdmFsdWUpOwogICAgIFN0cmluZyBnZXRTaGFkZXJJbmZvTG9nKFBsYXRm
b3JtM0RPYmplY3QpOwogCiAgICAgU3RyaW5nIGdldFNoYWRlclNvdXJjZShQbGF0Zm9ybTNET2Jq
ZWN0KTsKLSAgICBTdHJpbmcgZ2V0U3RyaW5nKHVuc2lnbmVkIGxvbmcgbmFtZSk7Ci0KLSAgICB2
b2lkIGdldFRleFBhcmFtZXRlcmZ2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25n
IHBuYW1lLCBmbG9hdCogdmFsdWUpOwotICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVyaXYodW5zaWdu
ZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUsIGludCogdmFsdWUpOwotCi0gICAg
dm9pZCBnZXRVbmlmb3JtZnYoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBsb25nIGxvY2F0aW9u
LCBmbG9hdCogdmFsdWUpOwotICAgIHZvaWQgZ2V0VW5pZm9ybWl2KFBsYXRmb3JtM0RPYmplY3Qg
cHJvZ3JhbSwgbG9uZyBsb2NhdGlvbiwgaW50KiB2YWx1ZSk7Ci0KLSAgICBsb25nIGdldFVuaWZv
cm1Mb2NhdGlvbihQbGF0Zm9ybTNET2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUpOwotCi0gICAg
dm9pZCBnZXRWZXJ0ZXhBdHRyaWJmdih1bnNpZ25lZCBsb25nIGluZGV4LCB1bnNpZ25lZCBsb25n
IHBuYW1lLCBmbG9hdCogdmFsdWUpOwotICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliaXYodW5zaWdu
ZWQgbG9uZyBpbmRleCwgdW5zaWduZWQgbG9uZyBwbmFtZSwgaW50KiB2YWx1ZSk7Ci0KLSAgICBs
b25nIGdldFZlcnRleEF0dHJpYk9mZnNldCh1bnNpZ25lZCBsb25nIGluZGV4LCB1bnNpZ25lZCBs
b25nIHBuYW1lKTsKLQotICAgIHZvaWQgaGludCh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWdu
ZWQgbG9uZyBtb2RlKTsKLSAgICBib29sIGlzQnVmZmVyKFBsYXRmb3JtM0RPYmplY3QpOwotICAg
IGJvb2wgaXNFbmFibGVkKHVuc2lnbmVkIGxvbmcgY2FwKTsKLSAgICBib29sIGlzRnJhbWVidWZm
ZXIoUGxhdGZvcm0zRE9iamVjdCk7Ci0gICAgYm9vbCBpc1Byb2dyYW0oUGxhdGZvcm0zRE9iamVj
dCk7Ci0gICAgYm9vbCBpc1JlbmRlcmJ1ZmZlcihQbGF0Zm9ybTNET2JqZWN0KTsKLSAgICBib29s
IGlzU2hhZGVyKFBsYXRmb3JtM0RPYmplY3QpOwotICAgIGJvb2wgaXNUZXh0dXJlKFBsYXRmb3Jt
M0RPYmplY3QpOwotICAgIHZvaWQgbGluZVdpZHRoKGRvdWJsZSk7CisgICAgU3RyaW5nIGdldFN0
cmluZyhHQzNEZW51bSBuYW1lKTsKKyAgICB2b2lkIGdldFRleFBhcmFtZXRlcmZ2KEdDM0RlbnVt
IHRhcmdldCwgR0MzRGVudW0gcG5hbWUsIEdDM0RmbG9hdCogdmFsdWUpOworICAgIHZvaWQgZ2V0
VGV4UGFyYW1ldGVyaXYoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBwbmFtZSwgR0MzRGludCog
dmFsdWUpOworICAgIHZvaWQgZ2V0VW5pZm9ybWZ2KFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwg
R0MzRGludCBsb2NhdGlvbiwgR0MzRGZsb2F0KiB2YWx1ZSk7CisgICAgdm9pZCBnZXRVbmlmb3Jt
aXYoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBHQzNEaW50IGxvY2F0aW9uLCBHQzNEaW50KiB2
YWx1ZSk7CisgICAgR0MzRGludCBnZXRVbmlmb3JtTG9jYXRpb24oUGxhdGZvcm0zRE9iamVjdCwg
Y29uc3QgU3RyaW5nJiBuYW1lKTsKKyAgICB2b2lkIGdldFZlcnRleEF0dHJpYmZ2KEdDM0R1aW50
IGluZGV4LCBHQzNEZW51bSBwbmFtZSwgR0MzRGZsb2F0KiB2YWx1ZSk7CisgICAgdm9pZCBnZXRW
ZXJ0ZXhBdHRyaWJpdihHQzNEdWludCBpbmRleCwgR0MzRGVudW0gcG5hbWUsIEdDM0RpbnQqIHZh
bHVlKTsKKyAgICBHQzNEc2l6ZWlwdHIgZ2V0VmVydGV4QXR0cmliT2Zmc2V0KEdDM0R1aW50IGlu
ZGV4LCBHQzNEZW51bSBwbmFtZSk7CisKKyAgICB2b2lkIGhpbnQoR0MzRGVudW0gdGFyZ2V0LCBH
QzNEZW51bSBtb2RlKTsKKyAgICBHQzNEYm9vbGVhbiBpc0J1ZmZlcihQbGF0Zm9ybTNET2JqZWN0
KTsKKyAgICBHQzNEYm9vbGVhbiBpc0VuYWJsZWQoR0MzRGVudW0gY2FwKTsKKyAgICBHQzNEYm9v
bGVhbiBpc0ZyYW1lYnVmZmVyKFBsYXRmb3JtM0RPYmplY3QpOworICAgIEdDM0Rib29sZWFuIGlz
UHJvZ3JhbShQbGF0Zm9ybTNET2JqZWN0KTsKKyAgICBHQzNEYm9vbGVhbiBpc1JlbmRlcmJ1ZmZl
cihQbGF0Zm9ybTNET2JqZWN0KTsKKyAgICBHQzNEYm9vbGVhbiBpc1NoYWRlcihQbGF0Zm9ybTNE
T2JqZWN0KTsKKyAgICBHQzNEYm9vbGVhbiBpc1RleHR1cmUoUGxhdGZvcm0zRE9iamVjdCk7Cisg
ICAgdm9pZCBsaW5lV2lkdGgoR0MzRGZsb2F0KTsKICAgICB2b2lkIGxpbmtQcm9ncmFtKFBsYXRm
b3JtM0RPYmplY3QpOwotICAgIHZvaWQgcGl4ZWxTdG9yZWkodW5zaWduZWQgbG9uZyBwbmFtZSwg
bG9uZyBwYXJhbSk7Ci0gICAgdm9pZCBwb2x5Z29uT2Zmc2V0KGRvdWJsZSBmYWN0b3IsIGRvdWJs
ZSB1bml0cyk7CisgICAgdm9pZCBwaXhlbFN0b3JlaShHQzNEZW51bSBwbmFtZSwgR0MzRGludCBw
YXJhbSk7CisgICAgdm9pZCBwb2x5Z29uT2Zmc2V0KEdDM0RmbG9hdCBmYWN0b3IsIEdDM0RmbG9h
dCB1bml0cyk7CiAKLSAgICB2b2lkIHJlYWRQaXhlbHMobG9uZyB4LCBsb25nIHksIHVuc2lnbmVk
IGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0LCB1bnNpZ25lZCBsb25nIGZvcm1hdCwg
dW5zaWduZWQgbG9uZyB0eXBlLCB2b2lkKiBkYXRhKTsKKyAgICB2b2lkIHJlYWRQaXhlbHMoR0Mz
RGludCB4LCBHQzNEaW50IHksIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0Mz
RGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBlLCB2b2lkKiBkYXRhKTsKIAotICAgIHZvaWQgcmVs
ZWFzZVNoYWRlckNvbXBpbGVyKCk7Ci0gICAgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlKHVuc2ln
bmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIGludGVybmFsZm9ybWF0LCB1bnNpZ25lZCBs
b25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCk7Ci0gICAgdm9pZCBzYW1wbGVDb3ZlcmFn
ZShkb3VibGUgdmFsdWUsIGJvb2wgaW52ZXJ0KTsKLSAgICB2b2lkIHNjaXNzb3IobG9uZyB4LCBs
b25nIHksIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0KTsKKyAgICB2
b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2UoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBpbnRlcm5h
bGZvcm1hdCwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0KTsKKyAgICB2b2lkIHNh
bXBsZUNvdmVyYWdlKEdDM0RjbGFtcGYgdmFsdWUsIEdDM0Rib29sZWFuIGludmVydCk7CisgICAg
dm9pZCBzY2lzc29yKEdDM0RpbnQgeCwgR0MzRGludCB5LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0Rz
aXplaSBoZWlnaHQpOwogICAgIHZvaWQgc2hhZGVyU291cmNlKFBsYXRmb3JtM0RPYmplY3QsIGNv
bnN0IFN0cmluZyYgc3RyaW5nKTsKLSAgICB2b2lkIHN0ZW5jaWxGdW5jKHVuc2lnbmVkIGxvbmcg
ZnVuYywgbG9uZyByZWYsIHVuc2lnbmVkIGxvbmcgbWFzayk7Ci0gICAgdm9pZCBzdGVuY2lsRnVu
Y1NlcGFyYXRlKHVuc2lnbmVkIGxvbmcgZmFjZSwgdW5zaWduZWQgbG9uZyBmdW5jLCBsb25nIHJl
ZiwgdW5zaWduZWQgbG9uZyBtYXNrKTsKLSAgICB2b2lkIHN0ZW5jaWxNYXNrKHVuc2lnbmVkIGxv
bmcgbWFzayk7Ci0gICAgdm9pZCBzdGVuY2lsTWFza1NlcGFyYXRlKHVuc2lnbmVkIGxvbmcgZmFj
ZSwgdW5zaWduZWQgbG9uZyBtYXNrKTsKLSAgICB2b2lkIHN0ZW5jaWxPcCh1bnNpZ25lZCBsb25n
IGZhaWwsIHVuc2lnbmVkIGxvbmcgemZhaWwsIHVuc2lnbmVkIGxvbmcgenBhc3MpOwotICAgIHZv
aWQgc3RlbmNpbE9wU2VwYXJhdGUodW5zaWduZWQgbG9uZyBmYWNlLCB1bnNpZ25lZCBsb25nIGZh
aWwsIHVuc2lnbmVkIGxvbmcgemZhaWwsIHVuc2lnbmVkIGxvbmcgenBhc3MpOwotCi0gICAgLy8g
VGhlc2UgbmV4dCBzZXZlcmFsIGZ1bmN0aW9ucyByZXR1cm4gYW4gZXJyb3IgY29kZSAoMCBpZiBu
byBlcnJvcnMpIHJhdGhlciB0aGFuIHVzaW5nIGFuIEV4Y2VwdGlvbkNvZGUuCi0gICAgLy8gQ3Vy
cmVudGx5IHRoZXkgcmV0dXJuIC0xIG9uIGFueSBlcnJvci4KLSAgICBpbnQgdGV4SW1hZ2UyRCh1
bnNpZ25lZCB0YXJnZXQsIHVuc2lnbmVkIGxldmVsLCB1bnNpZ25lZCBpbnRlcm5hbGZvcm1hdCwg
dW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCwgdW5zaWduZWQgYm9yZGVyLCB1bnNpZ25l
ZCBmb3JtYXQsIHVuc2lnbmVkIHR5cGUsIHZvaWQqIHBpeGVscyk7Ci0KLSAgICB2b2lkIHRleFBh
cmFtZXRlcmYodW5zaWduZWQgdGFyZ2V0LCB1bnNpZ25lZCBwbmFtZSwgZmxvYXQgcGFyYW0pOwot
ICAgIHZvaWQgdGV4UGFyYW1ldGVyaSh1bnNpZ25lZCB0YXJnZXQsIHVuc2lnbmVkIHBuYW1lLCBp
bnQgcGFyYW0pOwotCi0gICAgaW50IHRleFN1YkltYWdlMkQodW5zaWduZWQgdGFyZ2V0LCB1bnNp
Z25lZCBsZXZlbCwgdW5zaWduZWQgeG9mZnNldCwgdW5zaWduZWQgeW9mZnNldCwgdW5zaWduZWQg
d2lkdGgsIHVuc2lnbmVkIGhlaWdodCwgdW5zaWduZWQgZm9ybWF0LCB1bnNpZ25lZCB0eXBlLCB2
b2lkKiBwaXhlbHMpOwotCi0gICAgdm9pZCB1bmlmb3JtMWYobG9uZyBsb2NhdGlvbiwgZmxvYXQg
eCk7Ci0gICAgdm9pZCB1bmlmb3JtMWZ2KGxvbmcgbG9jYXRpb24sIGZsb2F0KiB2LCBpbnQgc2l6
ZSk7Ci0gICAgdm9pZCB1bmlmb3JtMWkobG9uZyBsb2NhdGlvbiwgaW50IHgpOwotICAgIHZvaWQg
dW5pZm9ybTFpdihsb25nIGxvY2F0aW9uLCBpbnQqIHYsIGludCBzaXplKTsKLSAgICB2b2lkIHVu
aWZvcm0yZihsb25nIGxvY2F0aW9uLCBmbG9hdCB4LCBmbG9hdCB5KTsKLSAgICB2b2lkIHVuaWZv
cm0yZnYobG9uZyBsb2NhdGlvbiwgZmxvYXQqIHYsIGludCBzaXplKTsKLSAgICB2b2lkIHVuaWZv
cm0yaShsb25nIGxvY2F0aW9uLCBpbnQgeCwgaW50IHkpOwotICAgIHZvaWQgdW5pZm9ybTJpdihs
b25nIGxvY2F0aW9uLCBpbnQqIHYsIGludCBzaXplKTsKLSAgICB2b2lkIHVuaWZvcm0zZihsb25n
IGxvY2F0aW9uLCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KTsKLSAgICB2b2lkIHVuaWZvcm0z
ZnYobG9uZyBsb2NhdGlvbiwgZmxvYXQqIHYsIGludCBzaXplKTsKLSAgICB2b2lkIHVuaWZvcm0z
aShsb25nIGxvY2F0aW9uLCBpbnQgeCwgaW50IHksIGludCB6KTsKLSAgICB2b2lkIHVuaWZvcm0z
aXYobG9uZyBsb2NhdGlvbiwgaW50KiB2LCBpbnQgc2l6ZSk7Ci0gICAgdm9pZCB1bmlmb3JtNGYo
bG9uZyBsb2NhdGlvbiwgZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeiwgZmxvYXQgdyk7Ci0gICAg
dm9pZCB1bmlmb3JtNGZ2KGxvbmcgbG9jYXRpb24sIGZsb2F0KiB2LCBpbnQgc2l6ZSk7Ci0gICAg
dm9pZCB1bmlmb3JtNGkobG9uZyBsb2NhdGlvbiwgaW50IHgsIGludCB5LCBpbnQgeiwgaW50IHcp
OwotICAgIHZvaWQgdW5pZm9ybTRpdihsb25nIGxvY2F0aW9uLCBpbnQqIHYsIGludCBzaXplKTsK
LSAgICB2b2lkIHVuaWZvcm1NYXRyaXgyZnYobG9uZyBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2Us
IGZsb2F0KiB2YWx1ZSwgaW50IHNpemUpOwotICAgIHZvaWQgdW5pZm9ybU1hdHJpeDNmdihsb25n
IGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgZmxvYXQqIHZhbHVlLCBpbnQgc2l6ZSk7Ci0gICAg
dm9pZCB1bmlmb3JtTWF0cml4NGZ2KGxvbmcgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBmbG9h
dCogdmFsdWUsIGludCBzaXplKTsKKyAgICB2b2lkIHN0ZW5jaWxGdW5jKEdDM0RlbnVtIGZ1bmMs
IEdDM0RpbnQgcmVmLCBHQzNEdWludCBtYXNrKTsKKyAgICB2b2lkIHN0ZW5jaWxGdW5jU2VwYXJh
dGUoR0MzRGVudW0gZmFjZSwgR0MzRGVudW0gZnVuYywgR0MzRGludCByZWYsIEdDM0R1aW50IG1h
c2spOworICAgIHZvaWQgc3RlbmNpbE1hc2soR0MzRHVpbnQgbWFzayk7CisgICAgdm9pZCBzdGVu
Y2lsTWFza1NlcGFyYXRlKEdDM0RlbnVtIGZhY2UsIEdDM0R1aW50IG1hc2spOworICAgIHZvaWQg
c3RlbmNpbE9wKEdDM0RlbnVtIGZhaWwsIEdDM0RlbnVtIHpmYWlsLCBHQzNEZW51bSB6cGFzcyk7
CisgICAgdm9pZCBzdGVuY2lsT3BTZXBhcmF0ZShHQzNEZW51bSBmYWNlLCBHQzNEZW51bSBmYWls
LCBHQzNEZW51bSB6ZmFpbCwgR0MzRGVudW0genBhc3MpOworCisgICAgLy8gdGV4SW1hZ2UyRCBy
ZXR1cm4gZmFsc2Ugb24gYW55IGVycm9yIHJhdGhlciB0aGFuIHVzaW5nIGFuIEV4Y2VwdGlvbkNv
ZGUuCisgICAgYm9vbCB0ZXhJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwg
R0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdo
dCwgR0MzRGludCBib3JkZXIsIEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVudW0gdHlwZSwgY29uc3Qg
dm9pZCogcGl4ZWxzKTsKKyAgICB2b2lkIHRleFBhcmFtZXRlcmYoR0MzRGVudW0gdGFyZ2V0LCBH
QzNEZW51bSBwbmFtZSwgR0MzRGZsb2F0IHBhcmFtKTsKKyAgICB2b2lkIHRleFBhcmFtZXRlcmko
R0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBwbmFtZSwgR0MzRGludCBwYXJhbSk7CisgICAgdm9p
ZCB0ZXhTdWJJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGludCB4
b2Zmc2V0LCBHQzNEaW50IHlvZmZzZXQsIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdo
dCwgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBlLCBjb25zdCB2b2lkKiBwaXhlbHMpOwor
CisgICAgdm9pZCB1bmlmb3JtMWYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGZsb2F0IHgpOworICAg
IHZvaWQgdW5pZm9ybTFmdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQqIHYsIEdDM0RzaXpl
aSBzaXplKTsKKyAgICB2b2lkIHVuaWZvcm0xaShHQzNEaW50IGxvY2F0aW9uLCBHQzNEaW50IHgp
OworICAgIHZvaWQgdW5pZm9ybTFpdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEaW50KiB2LCBHQzNE
c2l6ZWkgc2l6ZSk7CisgICAgdm9pZCB1bmlmb3JtMmYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGZs
b2F0IHgsIGZsb2F0IHkpOworICAgIHZvaWQgdW5pZm9ybTJmdihHQzNEaW50IGxvY2F0aW9uLCBH
QzNEZmxvYXQqIHYsIEdDM0RzaXplaSBzaXplKTsKKyAgICB2b2lkIHVuaWZvcm0yaShHQzNEaW50
IGxvY2F0aW9uLCBHQzNEaW50IHgsIEdDM0RpbnQgeSk7CisgICAgdm9pZCB1bmlmb3JtMml2KEdD
M0RpbnQgbG9jYXRpb24sIEdDM0RpbnQqIHYsIEdDM0RzaXplaSBzaXplKTsKKyAgICB2b2lkIHVu
aWZvcm0zZihHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQgeCwgR0MzRGZsb2F0IHksIEdDM0Rm
bG9hdCB6KTsKKyAgICB2b2lkIHVuaWZvcm0zZnYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGZsb2F0
KiB2LCBHQzNEc2l6ZWkgc2l6ZSk7CisgICAgdm9pZCB1bmlmb3JtM2koR0MzRGludCBsb2NhdGlv
biwgR0MzRGludCB4LCBHQzNEaW50IHksIEdDM0RpbnQgeik7CisgICAgdm9pZCB1bmlmb3JtM2l2
KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RpbnQqIHYsIEdDM0RzaXplaSBzaXplKTsKKyAgICB2b2lk
IHVuaWZvcm00ZihHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQgeCwgR0MzRGZsb2F0IHksIEdD
M0RmbG9hdCB6LCBHQzNEZmxvYXQgdyk7CisgICAgdm9pZCB1bmlmb3JtNGZ2KEdDM0RpbnQgbG9j
YXRpb24sIEdDM0RmbG9hdCogdiwgR0MzRHNpemVpIHNpemUpOworICAgIHZvaWQgdW5pZm9ybTRp
KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RpbnQgeCwgR0MzRGludCB5LCBHQzNEaW50IHosIEdDM0Rp
bnQgdyk7CisgICAgdm9pZCB1bmlmb3JtNGl2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RpbnQqIHYs
IEdDM0RzaXplaSBzaXplKTsKKyAgICB2b2lkIHVuaWZvcm1NYXRyaXgyZnYoR0MzRGludCBsb2Nh
dGlvbiwgR0MzRGJvb2xlYW4gdHJhbnNwb3NlLCBHQzNEZmxvYXQqIHZhbHVlLCBHQzNEc2l6ZWkg
c2l6ZSk7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4M2Z2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0Ri
b29sZWFuIHRyYW5zcG9zZSwgR0MzRGZsb2F0KiB2YWx1ZSwgR0MzRHNpemVpIHNpemUpOworICAg
IHZvaWQgdW5pZm9ybU1hdHJpeDRmdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEYm9vbGVhbiB0cmFu
c3Bvc2UsIEdDM0RmbG9hdCogdmFsdWUsIEdDM0RzaXplaSBzaXplKTsKIAogICAgIHZvaWQgdXNl
UHJvZ3JhbShQbGF0Zm9ybTNET2JqZWN0KTsKICAgICB2b2lkIHZhbGlkYXRlUHJvZ3JhbShQbGF0
Zm9ybTNET2JqZWN0KTsKIAotICAgIHZvaWQgdmVydGV4QXR0cmliMWYodW5zaWduZWQgbG9uZyBp
bmR4LCBmbG9hdCB4KTsKLSAgICB2b2lkIHZlcnRleEF0dHJpYjFmdih1bnNpZ25lZCBsb25nIGlu
ZHgsIGZsb2F0KiB2YWx1ZXMpOwotICAgIHZvaWQgdmVydGV4QXR0cmliMmYodW5zaWduZWQgbG9u
ZyBpbmR4LCBmbG9hdCB4LCBmbG9hdCB5KTsKLSAgICB2b2lkIHZlcnRleEF0dHJpYjJmdih1bnNp
Z25lZCBsb25nIGluZHgsIGZsb2F0KiB2YWx1ZXMpOwotICAgIHZvaWQgdmVydGV4QXR0cmliM2Yo
dW5zaWduZWQgbG9uZyBpbmR4LCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KTsKLSAgICB2b2lk
IHZlcnRleEF0dHJpYjNmdih1bnNpZ25lZCBsb25nIGluZHgsIGZsb2F0KiB2YWx1ZXMpOwotICAg
IHZvaWQgdmVydGV4QXR0cmliNGYodW5zaWduZWQgbG9uZyBpbmR4LCBmbG9hdCB4LCBmbG9hdCB5
LCBmbG9hdCB6LCBmbG9hdCB3KTsKLSAgICB2b2lkIHZlcnRleEF0dHJpYjRmdih1bnNpZ25lZCBs
b25nIGluZHgsIGZsb2F0KiB2YWx1ZXMpOwotICAgIHZvaWQgdmVydGV4QXR0cmliUG9pbnRlcih1
bnNpZ25lZCBsb25nIGluZHgsIGludCBzaXplLCBpbnQgdHlwZSwgYm9vbCBub3JtYWxpemVkLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHN0cmlkZSwgdW5zaWdu
ZWQgbG9uZyBvZmZzZXQpOwotCi0gICAgdm9pZCB2aWV3cG9ydChsb25nIHgsIGxvbmcgeSwgdW5z
aWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpOwotCi0gICAgdW5zaWduZWQg
Y3JlYXRlQnVmZmVyKCk7Ci0gICAgdW5zaWduZWQgY3JlYXRlRnJhbWVidWZmZXIoKTsKLSAgICB1
bnNpZ25lZCBjcmVhdGVQcm9ncmFtKCk7Ci0gICAgdW5zaWduZWQgY3JlYXRlUmVuZGVyYnVmZmVy
KCk7Ci0gICAgdW5zaWduZWQgY3JlYXRlU2hhZGVyKHVuc2lnbmVkIGxvbmcpOwotICAgIHVuc2ln
bmVkIGNyZWF0ZVRleHR1cmUoKTsKLQotICAgIHZvaWQgZGVsZXRlQnVmZmVyKHVuc2lnbmVkKTsK
LSAgICB2b2lkIGRlbGV0ZUZyYW1lYnVmZmVyKHVuc2lnbmVkKTsKLSAgICB2b2lkIGRlbGV0ZVBy
b2dyYW0odW5zaWduZWQpOwotICAgIHZvaWQgZGVsZXRlUmVuZGVyYnVmZmVyKHVuc2lnbmVkKTsK
LSAgICB2b2lkIGRlbGV0ZVNoYWRlcih1bnNpZ25lZCk7Ci0gICAgdm9pZCBkZWxldGVUZXh0dXJl
KHVuc2lnbmVkKTsKKyAgICB2b2lkIHZlcnRleEF0dHJpYjFmKEdDM0R1aW50IGluZGV4LCBHQzNE
ZmxvYXQgeCk7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIxZnYoR0MzRHVpbnQgaW5kZXgsIEdDM0Rm
bG9hdCogdmFsdWVzKTsKKyAgICB2b2lkIHZlcnRleEF0dHJpYjJmKEdDM0R1aW50IGluZGV4LCBH
QzNEZmxvYXQgeCwgR0MzRGZsb2F0IHkpOworICAgIHZvaWQgdmVydGV4QXR0cmliMmZ2KEdDM0R1
aW50IGluZGV4LCBHQzNEZmxvYXQqIHZhbHVlcyk7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIzZihH
QzNEdWludCBpbmRleCwgR0MzRGZsb2F0IHgsIEdDM0RmbG9hdCB5LCBHQzNEZmxvYXQgeik7Cisg
ICAgdm9pZCB2ZXJ0ZXhBdHRyaWIzZnYoR0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCogdmFsdWVz
KTsKKyAgICB2b2lkIHZlcnRleEF0dHJpYjRmKEdDM0R1aW50IGluZGV4LCBHQzNEZmxvYXQgeCwg
R0MzRGZsb2F0IHksIEdDM0RmbG9hdCB6LCBHQzNEZmxvYXQgdyk7CisgICAgdm9pZCB2ZXJ0ZXhB
dHRyaWI0ZnYoR0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCogdmFsdWVzKTsKKyAgICB2b2lkIHZl
cnRleEF0dHJpYlBvaW50ZXIoR0MzRHVpbnQgaW5kZXgsIEdDM0RpbnQgc2l6ZSwgR0MzRGVudW0g
dHlwZSwgR0MzRGJvb2xlYW4gbm9ybWFsaXplZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0MzRHNpemVpIHN0cmlkZSwgR0MzRGludHB0ciBvZmZzZXQpOworCisgICAgdm9pZCB2aWV3
cG9ydChHQzNEaW50IHgsIEdDM0RpbnQgeSwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVp
Z2h0KTsKKworICAgIFBsYXRmb3JtM0RPYmplY3QgY3JlYXRlQnVmZmVyKCk7CisgICAgUGxhdGZv
cm0zRE9iamVjdCBjcmVhdGVGcmFtZWJ1ZmZlcigpOworICAgIFBsYXRmb3JtM0RPYmplY3QgY3Jl
YXRlUHJvZ3JhbSgpOworICAgIFBsYXRmb3JtM0RPYmplY3QgY3JlYXRlUmVuZGVyYnVmZmVyKCk7
CisgICAgUGxhdGZvcm0zRE9iamVjdCBjcmVhdGVTaGFkZXIoR0MzRGVudW0pOworICAgIFBsYXRm
b3JtM0RPYmplY3QgY3JlYXRlVGV4dHVyZSgpOworCisgICAgdm9pZCBkZWxldGVCdWZmZXIoUGxh
dGZvcm0zRE9iamVjdCk7CisgICAgdm9pZCBkZWxldGVGcmFtZWJ1ZmZlcihQbGF0Zm9ybTNET2Jq
ZWN0KTsKKyAgICB2b2lkIGRlbGV0ZVByb2dyYW0oUGxhdGZvcm0zRE9iamVjdCk7CisgICAgdm9p
ZCBkZWxldGVSZW5kZXJidWZmZXIoUGxhdGZvcm0zRE9iamVjdCk7CisgICAgdm9pZCBkZWxldGVT
aGFkZXIoUGxhdGZvcm0zRE9iamVjdCk7CisgICAgdm9pZCBkZWxldGVUZXh0dXJlKFBsYXRmb3Jt
M0RPYmplY3QpOwogCi0gICAgdm9pZCBzeW50aGVzaXplR0xFcnJvcih1bnNpZ25lZCBsb25nIGVy
cm9yKTsKKyAgICB2b2lkIHN5bnRoZXNpemVHTEVycm9yKEdDM0RlbnVtIGVycm9yKTsKIAogICAg
IC8vIEV4dGVuc2lvbnMzRCBzdXBwb3J0LgogICAgIEV4dGVuc2lvbnMzRCogZ2V0RXh0ZW5zaW9u
cygpOwpAQCAtMjczLDE0ICsyNTEsMTQgQEAgcHVibGljOgogCiAgICAgLy8gR0xfQ0hST01JVU1f
bWFwX3N1YgogICAgIGJvb2wgc3VwcG9ydHNNYXBTdWJDSFJPTUlVTSgpOwotICAgIHZvaWQqIG1h
cEJ1ZmZlclN1YkRhdGFDSFJPTUlVTSh1bnNpZ25lZCB0YXJnZXQsIGludCBvZmZzZXQsIGludCBz
aXplLCB1bnNpZ25lZCBhY2Nlc3MpOworICAgIHZvaWQqIG1hcEJ1ZmZlclN1YkRhdGFDSFJPTUlV
TShHQzNEZW51bSB0YXJnZXQsIEdDM0RzaXplaXB0ciBvZmZzZXQsIEdDM0RzaXplaSBzaXplLCBH
QzNEZW51bSBhY2Nlc3MpOwogICAgIHZvaWQgdW5tYXBCdWZmZXJTdWJEYXRhQ0hST01JVU0oY29u
c3Qgdm9pZCopOwotICAgIHZvaWQqIG1hcFRleFN1YkltYWdlMkRDSFJPTUlVTSh1bnNpZ25lZCB0
YXJnZXQsIGludCBsZXZlbCwgaW50IHhvZmZzZXQsIGludCB5b2Zmc2V0LCBpbnQgd2lkdGgsIGlu
dCBoZWlnaHQsIHVuc2lnbmVkIGZvcm1hdCwgdW5zaWduZWQgdHlwZSwgdW5zaWduZWQgYWNjZXNz
KTsKKyAgICB2b2lkKiBtYXBUZXhTdWJJbWFnZTJEQ0hST01JVU0oR0MzRGVudW0gdGFyZ2V0LCBH
QzNEaW50IGxldmVsLCBHQzNEaW50IHhvZmZzZXQsIEdDM0RpbnQgeW9mZnNldCwgR0MzRHNpemVp
IHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUs
IEdDM0RlbnVtIGFjY2Vzcyk7CiAgICAgdm9pZCB1bm1hcFRleFN1YkltYWdlMkRDSFJPTUlVTShj
b25zdCB2b2lkKik7CiAKICAgICAvLyBHTF9DSFJPTUlVTV9jb3B5X3RleHR1cmVfdG9fcGFyZW50
X3RleHR1cmUKICAgICBib29sIHN1cHBvcnRzQ29weVRleHR1cmVUb1BhcmVudFRleHR1cmVDSFJP
TUlVTSgpOwotICAgIHZvaWQgY29weVRleHR1cmVUb1BhcmVudFRleHR1cmVDSFJPTUlVTSh1bnNp
Z25lZCB0ZXh0dXJlLCB1bnNpZ25lZCBwYXJlbnRUZXh0dXJlKTsKKyAgICB2b2lkIGNvcHlUZXh0
dXJlVG9QYXJlbnRUZXh0dXJlQ0hST01JVU0oUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlLCBQbGF0
Zm9ybTNET2JqZWN0IHBhcmVudFRleHR1cmUpOwogCiBwcml2YXRlOgogICAgIE93blB0cjxXZWJL
aXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEPiBtX2ltcGw7Cg==
</data>
<flag name="review"
          id="69466"
          type_id="1"
          status="+"
          setter="kbr"
    />
          </attachment>
      

    </bug>

</bugzilla>