<?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>206038</bug_id>
          
          <creation_ts>2020-01-09 14:58:39 -0800</creation_ts>
          <short_desc>[WebGL] Add all remaining WebGL2 implementation functions to GraphicsContextGL</short_desc>
          <delta_ts>2020-01-10 11:00:50 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dean Jackson">dino</reporter>
          <assigned_to name="Dean Jackson">dino</assigned_to>
          <cc>don.olmstead</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>graouts</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>noam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1604880</commentid>
    <comment_count>0</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2020-01-09 14:58:39 -0800</bug_when>
    <thetext>[WebGL] Add all remaining WebGL2 implementation functions to GraphicsContextGL</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604883</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-01-09 14:59:12 -0800</bug_when>
    <thetext>&lt;rdar://problem/58459051&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604885</commentid>
    <comment_count>2</comment_count>
      <attachid>387278</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2020-01-09 15:04:43 -0800</bug_when>
    <thetext>Created attachment 387278
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604890</commentid>
    <comment_count>3</comment_count>
      <attachid>387278</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-01-09 15:10:08 -0800</bug_when>
    <thetext>Comment on attachment 387278
Patch

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

&gt; Source/WebCore/platform/graphics/opengl/GraphicsContextGLOpenGL.h:365
&gt; +    // ========== WebGL 2 entry points.

WebGL2 ?

&gt; Source/WebCore/platform/graphics/opengl/GraphicsContextGLOpenGLCommon.cpp:2580
&gt; +

blank line gasp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604891</commentid>
    <comment_count>4</comment_count>
      <attachid>387278</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2020-01-09 15:12:59 -0800</bug_when>
    <thetext>Comment on attachment 387278
Patch

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

This is fine. Please wait for the EWS

&gt; Source/WebCore/platform/graphics/opengl/GraphicsContextGLOpenGLCommon.cpp:2796
&gt; +GCGLuint GraphicsContextGLOpenGL::getUniformBlockIndex(PlatformGLObject program, const String&amp; uniformBlockName)
&gt; +{
&gt; +    UNUSED_PARAM(program);
&gt; +    UNUSED_PARAM(uniformBlockName);
&gt; +
&gt; +    return 0;
&gt; +}
&gt; +
&gt; +void GraphicsContextGLOpenGL::getActiveUniformBlockiv(PlatformGLObject program, GCGLuint uniformBlockIndex, GCGLenum pname, GCGLint* params)
&gt; +{
&gt; +    UNUSED_PARAM(program);
&gt; +    UNUSED_PARAM(uniformBlockIndex);
&gt; +    UNUSED_PARAM(pname);
&gt; +    UNUSED_PARAM(params);
&gt; +}
&gt; +
&gt; +String GraphicsContextGLOpenGL::getActiveUniformBlockName(PlatformGLObject program, GCGLuint uniformBlockIndex)
&gt; +{
&gt; +    UNUSED_PARAM(program);
&gt; +    UNUSED_PARAM(uniformBlockIndex);
&gt; +
&gt; +    return emptyString();
&gt; +}
&gt; +
&gt; +void GraphicsContextGLOpenGL::uniformBlockBinding(PlatformGLObject program, GCGLuint uniformBlockIndex, GCGLuint uniformBlockBinding)
&gt; +{
&gt; +    UNUSED_PARAM(program);
&gt; +    UNUSED_PARAM(uniformBlockIndex);
&gt; +    UNUSED_PARAM(uniformBlockBinding);
&gt; +}

Even if its just a stub this should be wrapped too with the USE check since uniform block stuff is GL 3.1. Are we going to just assume that if its GL 3 that it has these functions or do we need additional USE checks?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604897</commentid>
    <comment_count>5</comment_count>
      <attachid>387282</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2020-01-09 15:19:50 -0800</bug_when>
    <thetext>Created attachment 387282
EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605184</commentid>
    <comment_count>6</comment_count>
      <attachid>387278</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2020-01-10 10:33:42 -0800</bug_when>
    <thetext>Comment on attachment 387278
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/opengl/GraphicsContextGLOpenGLCommon.cpp:2796
&gt;&gt; +}
&gt; 
&gt; Even if its just a stub this should be wrapped too with the USE check since uniform block stuff is GL 3.1. Are we going to just assume that if its GL 3 that it has these functions or do we need additional USE checks?

I&apos;m not sure what&apos;s best here. If you only have GL 3 and not GL 3.1+, is there any point trying to expose WebGL 2? Can it be emulated?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605185</commentid>
    <comment_count>7</comment_count>
      <attachid>387278</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2020-01-10 10:36:07 -0800</bug_when>
    <thetext>Comment on attachment 387278
Patch

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

&gt;&gt;&gt; Source/WebCore/platform/graphics/opengl/GraphicsContextGLOpenGLCommon.cpp:2796
&gt;&gt;&gt; +}
&gt;&gt; 
&gt;&gt; Even if its just a stub this should be wrapped too with the USE check since uniform block stuff is GL 3.1. Are we going to just assume that if its GL 3 that it has these functions or do we need additional USE checks?
&gt; 
&gt; I&apos;m not sure what&apos;s best here. If you only have GL 3 and not GL 3.1+, is there any point trying to expose WebGL 2? Can it be emulated?

Oh, of course I&apos;d still need the USE check. Sorry.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605187</commentid>
    <comment_count>8</comment_count>
      <attachid>387278</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2020-01-10 10:42:09 -0800</bug_when>
    <thetext>Comment on attachment 387278
Patch

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

&gt;&gt;&gt;&gt; Source/WebCore/platform/graphics/opengl/GraphicsContextGLOpenGLCommon.cpp:2796
&gt;&gt;&gt;&gt; +}
&gt;&gt;&gt; 
&gt;&gt;&gt; Even if its just a stub this should be wrapped too with the USE check since uniform block stuff is GL 3.1. Are we going to just assume that if its GL 3 that it has these functions or do we need additional USE checks?
&gt;&gt; 
&gt;&gt; I&apos;m not sure what&apos;s best here. If you only have GL 3 and not GL 3.1+, is there any point trying to expose WebGL 2? Can it be emulated?
&gt; 
&gt; Oh, of course I&apos;d still need the USE check. Sorry.

The way it is now is confusing.

USE_OPENGL_3 doesn&apos;t differentiate between 3 and 3.1, so it seems we already assume that is good enough.

However, I think there is a difference between USE_OPENGL (which is deciding which backend to actually use) and USE_OPENGL_3 (which is signifying that it exists). I believe it should be HAS_OPENGL_3.

But are there any platforms that we compile to that have OpenGL 3 or below?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605194</commentid>
    <comment_count>9</comment_count>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2020-01-10 10:53:04 -0800</bug_when>
    <thetext>(In reply to Dean Jackson from comment #8)
&gt; Comment on attachment 387278 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=387278&amp;action=review
&gt; 
&gt; &gt;&gt;&gt;&gt; Source/WebCore/platform/graphics/opengl/GraphicsContextGLOpenGLCommon.cpp:2796
&gt; &gt;&gt;&gt;&gt; +}
&gt; &gt;&gt;&gt; 
&gt; &gt;&gt;&gt; Even if its just a stub this should be wrapped too with the USE check since uniform block stuff is GL 3.1. Are we going to just assume that if its GL 3 that it has these functions or do we need additional USE checks?
&gt; &gt;&gt; 
&gt; &gt;&gt; I&apos;m not sure what&apos;s best here. If you only have GL 3 and not GL 3.1+, is there any point trying to expose WebGL 2? Can it be emulated?
&gt; &gt; 
&gt; &gt; Oh, of course I&apos;d still need the USE check. Sorry.
&gt; 
&gt; The way it is now is confusing.
&gt; 
&gt; USE_OPENGL_3 doesn&apos;t differentiate between 3 and 3.1, so it seems we already
&gt; assume that is good enough.
&gt; 
&gt; However, I think there is a difference between USE_OPENGL (which is deciding
&gt; which backend to actually use) and USE_OPENGL_3 (which is signifying that it
&gt; exists). I believe it should be HAS_OPENGL_3.
&gt; 
&gt; But are there any platforms that we compile to that have OpenGL 3 or below?

Yea I agree that its confusing. I felt USE was probably safer because I&apos;m not sure what sort of hardware Igalia was targeting with GTK and especially WPE since the later is embedded hardware and drivers might be crappy.

There&apos;s also the fact that with ANGLE there are backends that don&apos;t have it. Metal and Vulkan appear to be a no from the README. DirectX 9 doesn&apos;t but for Windows we&apos;re just supporting Windows 10 at this point which would have 11.

For our ports WinCairo and PlayStation just assuming OpenGL ES 3 is fine. I&apos;d assume thats the same with Apple ports, minus AppleWin but fine for FTW.

Maybe worth a discussion with Igalians somewhere to get consensus?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605204</commentid>
    <comment_count>10</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2020-01-10 11:00:50 -0800</bug_when>
    <thetext>Committed r254350: &lt;https://trac.webkit.org/changeset/254350&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387278</attachid>
            <date>2020-01-09 15:04:43 -0800</date>
            <delta_ts>2020-01-09 15:10:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206038-20200110100441.patch</filename>
            <type>text/plain</type>
            <size>97316</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0MTUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTQyZDc4ZDU3MjA3MTcy
YzliYWVjYjc1ODhhNTMyMTM3NTYzNjVmYi4uYjkyMDhkOTdlYWI4NTZiMTEwYWNjMjc4OTk5NDZh
N2E5NDVhMzE2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyMyBAQAorMjAyMC0wMS0wOSAgRGVh
biBKYWNrc29uICA8ZGlub0BhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkdMXSBBZGQgYWxsIHJl
bWFpbmluZyBXZWJHTDIgaW1wbGVtZW50YXRpb24gZnVuY3Rpb25zIHRvIEdyYXBoaWNzQ29udGV4
dEdMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDYw
MzgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU4NDU5MDUxPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBzdHVicyBmb3IgYWxsIHRoZSBHcmFw
aGljc0NvbnRleHRHTCBtZXRob2RzIHRoYXQgd2lsbCBiZQorICAgICAgICBuZWNlc3NhcnkgdG8g
aW1wbGVtZW50IFdlYkdMMi4KKworICAgICAgICBXaGlsZSBoZXJlLCByZWFycmFuZ2UgdGhlIGhl
YWRlciBmaWxlIHRvIG1pcnJvciB0aGUgd2F5CisgICAgICAgIFdlYkdMMlJlbmRlcmluZ0NvbnRl
eHQgb3JkZXJzIHRoZSBtZXRob2RzLCBhbmQgbWFyayBhbGwgdGhlCisgICAgICAgIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMIG1ldGhvZHMgYXMgZmluYWwgKHJhdGhlciB0aGFuIG92ZXJyaWRlKS4K
KworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMQ29tbW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpidWZmZXJEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpidWZmZXJTdWJEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpjb3B5QnVmZmVyU3ViRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Z2V0QnVmZmVyU3ViRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6bWFwQnVmZmVyUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnVubWFwQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpibGl0RnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjppbnZhbGlkYXRlRnJhbWVi
dWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmludmFs
aWRhdGVTdWJGcmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6cmVhZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Z2V0SW50ZXJuYWxmb3JtYXRpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhTdG9yYWdlMkQpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRleFN0b3JhZ2UzRCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4SW1hZ2UzRCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4U3ViSW1hZ2UzRCk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y29weVRleFN1Yklt
YWdlM0QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNvbXBy
ZXNzZWRUZXhJbWFnZTNEKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Z2V0RnJhZ0RhdGFMb2NhdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTF1aSk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTJ1aSk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTN1aSk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTR1aSk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTF1aXYpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0ydWl2KToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtM3Vpdik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTR1aXYpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgyeDNmdik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDN4MmZ2
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0
cml4Mng0ZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVu
aWZvcm1NYXRyaXg0eDJmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6dW5pZm9ybU1hdHJpeDN4NGZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4NHgzZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYkk0aSk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliSTRpdik6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliSTR1aSk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliSTR1aXYp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJp
YklQb2ludGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpk
cmF3UmFuZ2VFbGVtZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6ZHJhd0J1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmNsZWFyQnVmZmVyaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmNsZWFyQnVmZmVydWl2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpjbGVhckJ1ZmZlcmZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpjbGVhckJ1ZmZlcmZpKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVRdWVyeSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6ZGVsZXRlUXVlcnkpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmlzUXVlcnkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmJlZ2luUXVlcnkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmVuZFF1ZXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpnZXRRdWVyeSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Z2xHZXRRdWVyeU9iamVjdHVpdik6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlU2FtcGxlcik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZGVsZXRlU2FtcGxlcik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6aXNTYW1wbGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpiaW5kU2FtcGxlcik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6c2FtcGxlclBhcmFtZXRlcmkpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnNhbXBsZXJQYXJhbWV0ZXJmKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1wbGVyUGFy
YW1ldGVyZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dFNhbXBsZXJQYXJhbWV0ZXJpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6ZmVuY2VTeW5jKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjppc1N5bmMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmRlbGV0ZVN5bmMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmNsaWVudFdhaXRTeW5jKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp3YWl0U3luYyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Z2V0U3luY2l2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpjcmVhdGVUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6ZGVsZXRlVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmlzVHJhbnNmb3JtRmVlZGJhY2spOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmJpbmRUcmFuc2Zvcm1GZWVk
YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YmVnaW5U
cmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6ZW5kVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGF1c2VUcmFu
c2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6cmVzdW1lVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmJpbmRCdWZmZXJCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpiaW5kQnVmZmVyUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1JbmRpY2VzKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlmb3Jtcyk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9ybUJsb2NrSW5k
ZXgpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2
ZVVuaWZvcm1CbG9ja2l2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtQmxvY2tCaW5kaW5nKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhJbWFnZTJEKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhTdWJJbWFnZTJEKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjb21wcmVzc2VkVGV4SW1hZ2UyRCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y29tcHJlc3NlZFRleFN1
YkltYWdlMkQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVu
aWZvcm0xZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVu
aWZvcm0yZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVu
aWZvcm0zZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVu
aWZvcm00ZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVu
aWZvcm0xaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVu
aWZvcm0yaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVu
aWZvcm0zaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVu
aWZvcm00aXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVu
aWZvcm1NYXRyaXgyZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnVuaWZvcm1NYXRyaXgzZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXg0ZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHMpOgorCiAyMDIwLTAxLTA4ICBEZWFuIEphY2tzb24g
IDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViR0xdIE1vcmUgR3JhcGhpY3NDb250ZXh0
M0QgdG8gR3JhcGhpY3NDb250ZXh0R0wgcmVuYW1pbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oCmluZGV4IDEyMzg1OTExM2Iy
ZDA5MjhhZWJkZTJmOWVlODQzYTEzNDIyZjE4ZTguLjU2MDgzMThlNjljZWMxNjNhNzVlZDEzZGM2
ODE5NzhiNWZhZGFmMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaApAQCAtNjYxLDYgKzY2MSw5IEBAIHB1YmxpYzoKICAg
ICAgICAgLy8gT3BlbkdMIEVTIDMgY29uc3RhbnRzLgogICAgICAgICBNQVBfUkVBRF9CSVQgPSAw
eDAwMDEsCiAKKyAgICAgICAgLy8gV2ViR0wtc3BlY2lmaWMuCisgICAgICAgIE1BWF9DTElFTlRf
V0FJVF9USU1FT1VUX1dFQkdMID0gMHg5MjQ3LAorCiAgICAgICAgIC8vIE5lY2Vzc2FyeSBkZXNr
dG9wIE9wZW5HTCBjb25zdGFudHMuCiAgICAgICAgIFRFWFRVUkVfUkVDVEFOR0xFX0FSQiA9IDB4
ODRGNQogICAgIH07CkBAIC0xMDU4LDIwICsxMDYxLDE1MCBAQCBwdWJsaWM6CiAKICAgICAvLyA9
PT09PT09PT09IFdlYkdMIDIgZW50cnkgcG9pbnRzLgogCisgICAgdmlydHVhbCB2b2lkIGJ1ZmZl
ckRhdGEoR0NHTGVudW0gdGFyZ2V0LCBjb25zdCB2b2lkKiBkYXRhLCBHQ0dMZW51bSB1c2FnZSwg
R0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBsZW5ndGgpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgYnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgZHN0Qnl0ZU9mZnNl
dCwgY29uc3Qgdm9pZCogc3JjRGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBsZW5n
dGgpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBjb3B5QnVmZmVyU3ViRGF0YShHQ0dMZW51bSBy
ZWFkVGFyZ2V0LCBHQ0dMZW51bSB3cml0ZVRhcmdldCwgR0NHTGludHB0ciByZWFkT2Zmc2V0LCBH
Q0dMaW50cHRyIHdyaXRlT2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgc2l6ZSkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBnZXRCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBzcmNC
eXRlT2Zmc2V0LCBjb25zdCB2b2lkKiBkc3REYXRhLCBHQ0dMdWludCBkc3RPZmZzZXQsIEdDR0x1
aW50IGxlbmd0aCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCogbWFwQnVmZmVyUmFuZ2UoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVpcHRyIGxlbmd0aCwgR0NHTGJp
dGZpZWxkIGFjY2VzcykgPSAwOwogICAgIHZpcnR1YWwgR0NHTGJvb2xlYW4gdW5tYXBCdWZmZXIo
R0NHTGVudW0gdGFyZ2V0KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGNvcHlCdWZmZXJTdWJEYXRh
KEdDR0xlbnVtIHJlYWRUYXJnZXQsIEdDR0xlbnVtIHdyaXRlVGFyZ2V0LCBHQ0dMaW50cHRyIHJl
YWRPZmZzZXQsIEdDR0xpbnRwdHIgd3JpdGVPZmZzZXQsIEdDR0xzaXplaXB0cikgPSAwOworCisg
ICAgdmlydHVhbCB2b2lkIGJsaXRGcmFtZWJ1ZmZlcihHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNy
Y1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50
IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywg
R0NHTGVudW0gZmlsdGVyKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGZyYW1lYnVmZmVyVGV4dHVy
ZUxheWVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgUGxhdGZvcm1HTE9i
amVjdCB0ZXh0dXJlLCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGxheWVyKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIGludmFsaWRhdGVGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIGNvbnN0IFZl
Y3RvcjxHQ0dMZW51bT4mIGF0dGFjaG1lbnRzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGludmFs
aWRhdGVTdWJGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIGNvbnN0IFZlY3RvcjxHQ0dMZW51
bT4mIGF0dGFjaG1lbnRzLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlYWRCdWZmZXIoR0NHTGVu
dW0gc3JjKSA9IDA7CiAKICAgICAvLyBnZXRJbnRlcm5hbEZvcm1hdFBhcmFtZXRlcgogICAgIHZp
cnR1YWwgdm9pZCBnZXRJbnRlcm5hbGZvcm1hdGl2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
aW50ZXJuYWxmb3JtYXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTGlu
dCogcGFyYW1zKSA9IDA7Ci0KICAgICB2aXJ0dWFsIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11
bHRpc2FtcGxlKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGlu
dGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpID0gMDsKIAog
ICAgIHZpcnR1YWwgdm9pZCB0ZXhTdG9yYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkg
bGV2ZWxzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHRleFN0b3JhZ2UzRChHQ0dMZW51bSB0
YXJnZXQsIEdDR0xzaXplaSBsZXZlbHMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCkgPSAwOwogCisgICAg
dmlydHVhbCB2b2lkIHRleEltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBH
Q0dMaW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQs
IEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVu
dW0gdHlwZSwgR0NHTGludHB0ciBwYm9PZmZzZXQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdGV4
SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgaW50ZXJuYWxm
b3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRo
LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBjb25zdCB2
b2lkKiBwaXhlbHMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdGV4SW1hZ2UzRChHQ0dMZW51bSB0
YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwg
R0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBjb25zdCB2b2lkKiBzcmNEYXRhLCBHQ0dM
dWludCBzcmNPZmZzZXQpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCB0ZXhTdWJJbWFnZTNEKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlv
ZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGlu
dHB0ciBwYm9PZmZzZXQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdGV4U3ViSW1hZ2UzRChHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zm
c2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGNvbnN0IHZv
aWQqIHNyY0RhdGEsIEdDR0x1aW50IHNyY09mZnNldCkgPSAwOworCisgICAgdmlydHVhbCB2b2lk
IGNvcHlUZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGlu
dCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTGludCB4LCBH
Q0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgPSAwOworCisgICAg
dmlydHVhbCB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGlt
YWdlU2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcHJl
c3NlZFRleEltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBp
bnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6
ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBjb25zdCB2b2lkKiBzcmNEYXRhLCBHQ0dMdWludCBz
cmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aE92ZXJyaWRlKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZl
bCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVt
IGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6
b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0
aCwgR0NHTGVudW0gZm9ybWF0LCBjb25zdCB2b2lkKiBzcmNEYXRhLCBHQ0dMdWludCBzcmNPZmZz
ZXQsIEdDR0x1aW50IHNyY0xlbmd0aE92ZXJyaWRlKSA9IDA7CisKKyAgICB2aXJ0dWFsIEdDR0xp
bnQgZ2V0RnJhZ0RhdGFMb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0
cmluZyYgbmFtZSkgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHVuaWZvcm0xdWkoR0NHTGludCBs
b2NhdGlvbiwgR0NHTHVpbnQgdjApID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTJ1aShH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCB2MCwgR0NHTHVpbnQgdjEpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgdW5pZm9ybTN1aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCB2MCwgR0NHTHVp
bnQgdjEsIEdDR0x1aW50IHYyKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVuaWZvcm00dWkoR0NH
TGludCBsb2NhdGlvbiwgR0NHTHVpbnQgdjAsIEdDR0x1aW50IHYxLCBHQ0dMdWludCB2MiwgR0NH
THVpbnQgdjMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTF1aXYoR0NHTGludCBsb2Nh
dGlvbiwgY29uc3QgR0NHTHVpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQg
c3JjTGVuZ3RoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVuaWZvcm0ydWl2KEdDR0xpbnQgbG9j
YXRpb24sIGNvbnN0IEdDR0x1aW50KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50
IHNyY0xlbmd0aCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtM3VpdihHQ0dMaW50IGxv
Y2F0aW9uLCBjb25zdCBHQ0dMdWludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWlu
dCBzcmNMZW5ndGgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTR1aXYoR0NHTGludCBs
b2NhdGlvbiwgY29uc3QgR0NHTHVpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVp
bnQgc3JjTGVuZ3RoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVuaWZvcm1NYXRyaXgyeDNmdihH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCog
ZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgdW5pZm9ybU1hdHJpeDN4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29s
ZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQs
IEdDR0x1aW50IHNyY0xlbmd0aCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtTWF0cml4
Mng0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dM
ZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHVuaWZvcm1NYXRyaXg0eDJmdihHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3Jj
T2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5pZm9y
bU1hdHJpeDN4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29u
c3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0
aCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtTWF0cml4NHgzZnYoR0NHTGludCBsb2Nh
dGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1
aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IHZlcnRleEF0dHJpYkk0aShHQ0dMdWludCBpbmRleCwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdD
R0xpbnQgeiwgR0NHTGludCB3KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHZlcnRleEF0dHJpYkk0
aXYoR0NHTHVpbnQgaW5kZXgsIGNvbnN0IEdDR0xpbnQqIHZhbHVlcykgPSAwOworICAgIHZpcnR1
YWwgdm9pZCB2ZXJ0ZXhBdHRyaWJJNHVpKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCB4LCBHQ0dM
dWludCB5LCBHQ0dMdWludCB6LCBHQ0dMdWludCB3KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHZl
cnRleEF0dHJpYkk0dWl2KEdDR0x1aW50IGluZGV4LCBjb25zdCBHQ0dMdWludCogdmFsdWVzKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIHZlcnRleEF0dHJpYklQb2ludGVyKEdDR0x1aW50IGluZGV4
LCBHQ0dMaW50IHNpemUsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBzdHJpZGUsIEdDR0xpbnRw
dHIgb2Zmc2V0KSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd1JhbmdlRWxlbWVudHMoR0NH
TGVudW0gbW9kZSwgR0NHTHVpbnQgc3RhcnQsIEdDR0x1aW50IGVuZCwgR0NHTHNpemVpIGNvdW50
LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkgPSAwOworCisgICAgdmlydHVhbCB2
b2lkIGRyYXdCdWZmZXJzKGNvbnN0IFZlY3RvcjxHQ0dMZW51bT4mIGJ1ZmZlcnMpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgY2xlYXJCdWZmZXJpdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJh
d2J1ZmZlciwgY29uc3QgR0NHTGludCogdmFsdWVzLCBHQ0dMdWludCBzcmNPZmZzZXQpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJCdWZmZXJ1aXYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50
IGRyYXdidWZmZXIsIGNvbnN0IEdDR0x1aW50KiB2YWx1ZXMsIEdDR0x1aW50IHNyY09mZnNldCkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBjbGVhckJ1ZmZlcmZ2KEdDR0xlbnVtIGJ1ZmZlciwgR0NH
TGludCBkcmF3YnVmZmVyLCBjb25zdCBHQ0dMZmxvYXQqIHZhbHVlcywgR0NHTHVpbnQgc3JjT2Zm
c2V0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNsZWFyQnVmZmVyZmkoR0NHTGVudW0gYnVmZmVy
LCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xmbG9hdCBkZXB0aCwgR0NHTGludCBzdGVuY2lsKSA9
IDA7CisKKyAgICB2aXJ0dWFsIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlUXVlcnkoKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIGRlbGV0ZVF1ZXJ5KFBsYXRmb3JtR0xPYmplY3QgcXVlcnkpID0gMDsK
KyAgICB2aXJ0dWFsIEdDR0xib29sZWFuIGlzUXVlcnkoUGxhdGZvcm1HTE9iamVjdCBxdWVyeSkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBiZWdpblF1ZXJ5KEdDR0xlbnVtIHRhcmdldCwgUGxhdGZv
cm1HTE9iamVjdCBxdWVyeSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBlbmRRdWVyeShHQ0dMZW51
bSB0YXJnZXQpID0gMDsKKyAgICB2aXJ0dWFsIFBsYXRmb3JtR0xPYmplY3QgZ2V0UXVlcnkoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkgPSAwOworICAgIC8vIGdldFF1ZXJ5UGFyYW1l
dGVyCisgICAgdmlydHVhbCB2b2lkIGdsR2V0UXVlcnlPYmplY3R1aXYoUGxhdGZvcm1HTE9iamVj
dCBxdWVyeSwgR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50KiB2YWx1ZSkgPSAwOworCisgICAgdmly
dHVhbCBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVNhbXBsZXIoKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGRlbGV0ZVNhbXBsZXIoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyKSA9IDA7CisgICAgdmly
dHVhbCBHQ0dMYm9vbGVhbiBpc1NhbXBsZXIoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGJpbmRTYW1wbGVyKEdDR0x1aW50IHVuaXQsIFBsYXRmb3JtR0xP
YmplY3Qgc2FtcGxlcikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzYW1wbGVyUGFyYW1ldGVyaShQ
bGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50IHBhcmFtKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJmKFBsYXRmb3JtR0xPYmplY3Qg
c2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCBwYXJhbSkgPSAwOworICAgIC8vIGdl
dFNhbXBsZXJQYXJhbWV0ZXIKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcmZ2
KFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCogdmFs
dWUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcml2KFBsYXRmb3Jt
R0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKSA9IDA7CisK
KyAgICB2aXJ0dWFsIFBsYXRmb3JtR0xPYmplY3QgZmVuY2VTeW5jKEdDR0xlbnVtIGNvbmRpdGlv
biwgR0NHTGJpdGZpZWxkIGZsYWdzKSA9IDA7CisgICAgdmlydHVhbCBHQ0dMYm9vbGVhbiBpc1N5
bmMoUGxhdGZvcm1HTE9iamVjdCBzeW5jKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZVN5
bmMoUGxhdGZvcm1HTE9iamVjdCBzeW5jKSA9IDA7CisgICAgdmlydHVhbCBHQ0dMZW51bSBjbGll
bnRXYWl0U3luYyhQbGF0Zm9ybUdMT2JqZWN0IHN5bmMsIEdDR0xiaXRmaWVsZCBmbGFncywgR0NH
THVpbnQ2NCB0aW1lb3V0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHdhaXRTeW5jKFBsYXRmb3Jt
R0xPYmplY3Qgc3luYywgR0NHTGJpdGZpZWxkIGZsYWdzLCBHQ0dMaW50NjQgdGltZW91dCkgPSAw
OworICAgIC8vIGdldFN5bmNQYXJhbWV0ZXIKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0U3luY2l2KFBs
YXRmb3JtR0xPYmplY3Qgc3luYywgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMaW50KiB2YWx1ZSkgPSAwOworCisgICAgdmlydHVhbCBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0
ZVRyYW5zZm9ybUZlZWRiYWNrKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVUcmFuc2Zv
cm1GZWVkYmFjayhQbGF0Zm9ybUdMT2JqZWN0IGlkKSA9IDA7CisgICAgdmlydHVhbCBHQ0dMYm9v
bGVhbiBpc1RyYW5zZm9ybUZlZWRiYWNrKFBsYXRmb3JtR0xPYmplY3QgaWQpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgYmluZFRyYW5zZm9ybUZlZWRiYWNrKEdDR0xlbnVtIHRhcmdldCwgUGxhdGZv
cm1HTE9iamVjdCBpZCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBiZWdpblRyYW5zZm9ybUZlZWRi
YWNrKEdDR0xlbnVtIHByaW1pdGl2ZU1vZGUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZW5kVHJh
bnNmb3JtRmVlZGJhY2soKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHRyYW5zZm9ybUZlZWRiYWNr
VmFyeWluZ3MoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBWZWN0b3I8Y29uc3QgU3Ry
aW5nJj4mIHZhcnlpbmdzLCBHQ0dMZW51bSBidWZmZXJNb2RlKSA9IDA7CisgICAgdmlydHVhbCBQ
bGF0Zm9ybUdMT2JqZWN0IGdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZyhQbGF0Zm9ybUdMT2Jq
ZWN0IHByb2dyYW0sIEdDR0x1aW50IGluZGV4KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBhdXNl
VHJhbnNmb3JtRmVlZGJhY2soKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlc3VtZVRyYW5zZm9y
bUZlZWRiYWNrKCkgPSAwOworCisgICAgdmlydHVhbCB2b2lkIGJpbmRCdWZmZXJCYXNlKEdDR0xl
bnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIFBsYXRmb3JtR0xPYmplY3QgYnVmZmVyKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGJpbmRCdWZmZXJSYW5nZShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1
aW50IGluZGV4LCBQbGF0Zm9ybUdMT2JqZWN0IGJ1ZmZlciwgR0NHTGludHB0ciBvZmZzZXQsIEdD
R0xzaXplaXB0ciBzaXplKSA9IDA7CisgICAgLy8gZ2V0SW5kZXhlZFBhcmFtZXRlciAtPiB1c2Ug
Z2V0UGFyYW1ldGVyIGNhbGxzIGFib3ZlLgorICAgIHZpcnR1YWwgVmVjdG9yPEdDR0x1aW50PiBn
ZXRVbmlmb3JtSW5kaWNlcyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3Rvcjxj
b25zdCBTdHJpbmcmPiYgdW5pZm9ybU5hbWVzKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldEFj
dGl2ZVVuaWZvcm1zKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9yPEdDR0x1
aW50PiYgdW5pZm9ybUluZGljZXMsIEdDR0xlbnVtIHBuYW1lLCBWZWN0b3I8R0NHTGludD4mIHBh
cmFtcykgPSAwOwogCisgICAgdmlydHVhbCBHQ0dMdWludCBnZXRVbmlmb3JtQmxvY2tJbmRleChQ
bGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0cmluZyYgdW5pZm9ybUJsb2NrTmFtZSkg
PSAwOworICAgIC8vIGdldEFjdGl2ZVVuaWZvcm1CbG9ja1BhcmFtZXRlcgorICAgIHZpcnR1YWwg
dm9pZCBnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdD
R0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogcGFyYW1z
KSA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcgZ2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZShQbGF0
Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4KSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIHVuaWZvcm1CbG9ja0JpbmRpbmcoUGxhdGZvcm1HTE9iamVjdCBwcm9n
cmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrQmlu
ZGluZykgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xl
bnVtIHR5cGUsIEdDR0xpbnRwdHIgcGJvT2Zmc2V0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHRl
eEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGludGVybmFs
Zm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVy
LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQqIHNyY0RhdGEsIEdD
R0x1aW50IHNyY09mZnNldCkgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHRleFN1YkltYWdlMkQo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQg
eW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3Jt
YXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgcGJvT2Zmc2V0KSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIHRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dM
aW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQqIHNyY0Rh
dGEsIEdDR0x1aW50IHNyY09mZnNldCkgPSAwOworCisgICAgdmlydHVhbCB2b2lkIGNvbXByZXNz
ZWRUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50
ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBi
b3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zmc2V0KSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIGNvbnN0IHZvaWQqIHNyY0RhdGEsIEdDR0x1aW50
IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoT3ZlcnJpZGUpID0gMDsKKworICAgIHZpcnR1
YWwgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQg
bGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwg
R0NHTGludHB0ciBvZmZzZXQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcHJlc3NlZFRleFN1
YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQs
IEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dM
ZW51bSBmb3JtYXQsIGNvbnN0IHZvaWQqIHNyY0RhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NH
THVpbnQgc3JjTGVuZ3RoT3ZlcnJpZGUpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCB1bmlmb3Jt
MWZ2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3Jj
T2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5pZm9y
bTJmdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNy
Y09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVuaWZv
cm0zZnYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBz
cmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1bmlm
b3JtNGZ2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQg
c3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCB1
bmlmb3JtMWl2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xpbnQqIGRhdGEsIEdDR0x1aW50
IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVu
aWZvcm0yaXYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGludCogZGF0YSwgR0NHTHVpbnQg
c3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5p
Zm9ybTNpdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMaW50KiBkYXRhLCBHQ0dMdWludCBz
cmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1bmlm
b3JtNGl2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xpbnQqIGRhdGEsIEdDR0x1aW50IHNy
Y09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgdW5p
Zm9ybU1hdHJpeDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNv
bnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5n
dGgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybU1hdHJpeDNmdihHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVp
bnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
dW5pZm9ybU1hdHJpeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2Us
IGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNM
ZW5ndGgpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCByZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NH
TGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgcmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQq
IGRzdERhdGEsIEdDR0x1aW50IGRzdE9mZnNldCkgPSAwOworCiAgICAgLy8gPT09PT09PT09PSBO
b24tV2ViR0wgYmFzZWQgZW50cnkgcG9pbnRzLgogCiAgICAgc3RhdGljIHVuc2lnbmVkIGdldENs
ZWFyQml0c0J5QXR0YWNobWVudFR5cGUoR0NHTGVudW0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0wuaAppbmRleCAwNGZiOWI0ZTMyZWJiODQ2ODE3OWU4NjEwYmYzOWNmZDYyMThkNGJm
Li4zZWFmMzI5NDExNzYzZWEwNzVjNDQ3Y2UyNWMwZDU4M2I4MWY2NTc2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuaApAQCAtMTEzLDkgKzExMyw5IEBAIHB1YmxpYzoKICAgICBQ
bGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMQ29uZmlnIHBsYXRmb3JtQ29uZmlnKCkgY29uc3QgeyBy
ZXR1cm4gbV9jb25maWdPYmo7IH0KICNlbmRpZiAvLyBVU0UoQU5HTEUpCiAjZWxzZQotICAgIFBs
YXRmb3JtR3JhcGhpY3NDb250ZXh0R0wgcGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTCgpIGNvbnN0
IG92ZXJyaWRlOwotICAgIFBsYXRmb3JtR0xPYmplY3QgcGxhdGZvcm1UZXh0dXJlKCkgY29uc3Qg
b3ZlcnJpZGU7Ci0gICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IG92ZXJy
aWRlOworICAgIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0wgcGxhdGZvcm1HcmFwaGljc0NvbnRl
eHRHTCgpIGNvbnN0IGZpbmFsOworICAgIFBsYXRmb3JtR0xPYmplY3QgcGxhdGZvcm1UZXh0dXJl
KCkgY29uc3QgZmluYWw7CisgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0
IGZpbmFsOwogI2VuZGlmCiAKICAgICBib29sIG1ha2VDb250ZXh0Q3VycmVudCgpOwpAQCAtMTk2
LDE4MyArMTk2LDMyMCBAQCBwdWJsaWM6CiAgICAgLy8gRW50cnkgcG9pbnRzIGZvciBXZWJHTC4K
ICAgICAvLwogCi0gICAgdm9pZCBhY3RpdmVUZXh0dXJlKEdDR0xlbnVtIHRleHR1cmUpIG92ZXJy
aWRlOwotICAgIHZvaWQgYXR0YWNoU2hhZGVyKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgUGxh
dGZvcm1HTE9iamVjdCBzaGFkZXIpIG92ZXJyaWRlOwotICAgIHZvaWQgYmluZEF0dHJpYkxvY2F0
aW9uKFBsYXRmb3JtR0xPYmplY3QsIEdDR0x1aW50IGluZGV4LCBjb25zdCBTdHJpbmcmIG5hbWUp
IG92ZXJyaWRlOwotICAgIHZvaWQgYmluZEJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3Jt
R0xPYmplY3QpIG92ZXJyaWRlOwotICAgIHZvaWQgYmluZEZyYW1lYnVmZmVyKEdDR0xlbnVtIHRh
cmdldCwgUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBiaW5kUmVuZGVyYnVm
ZmVyKEdDR0xlbnVtIHRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBiaW5kVGV4dHVyZShHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRl
OwotICAgIHZvaWQgYmxlbmRDb2xvcihHQ0dMY2xhbXBmIHJlZCwgR0NHTGNsYW1wZiBncmVlbiwg
R0NHTGNsYW1wZiBibHVlLCBHQ0dMY2xhbXBmIGFscGhhKSBvdmVycmlkZTsKLSAgICB2b2lkIGJs
ZW5kRXF1YXRpb24oR0NHTGVudW0gbW9kZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBibGVuZEVxdWF0
aW9uU2VwYXJhdGUoR0NHTGVudW0gbW9kZVJHQiwgR0NHTGVudW0gbW9kZUFscGhhKSBvdmVycmlk
ZTsKLSAgICB2b2lkIGJsZW5kRnVuYyhHQ0dMZW51bSBzZmFjdG9yLCBHQ0dMZW51bSBkZmFjdG9y
KSBvdmVycmlkZTsKLSAgICB2b2lkIGJsZW5kRnVuY1NlcGFyYXRlKEdDR0xlbnVtIHNyY1JHQiwg
R0NHTGVudW0gZHN0UkdCLCBHQ0dMZW51bSBzcmNBbHBoYSwgR0NHTGVudW0gZHN0QWxwaGEpIG92
ZXJyaWRlOwotCi0gICAgdm9pZCBidWZmZXJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVp
cHRyIHNpemUsIEdDR0xlbnVtIHVzYWdlKSBvdmVycmlkZTsKLSAgICB2b2lkIGJ1ZmZlckRhdGEo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWlwdHIgc2l6ZSwgY29uc3Qgdm9pZCogZGF0YSwgR0NH
TGVudW0gdXNhZ2UpIG92ZXJyaWRlOwotICAgIHZvaWQgYnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgc2l6ZSwgY29uc3Qgdm9pZCog
ZGF0YSkgb3ZlcnJpZGU7Ci0KLSAgICB2b2lkKiBtYXBCdWZmZXJSYW5nZShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgbGVuZ3RoLCBHQ0dMYml0ZmllbGQg
YWNjZXNzKSBvdmVycmlkZTsKLSAgICBHQ0dMYm9vbGVhbiB1bm1hcEJ1ZmZlcihHQ0dMZW51bSB0
YXJnZXQpIG92ZXJyaWRlOwotICAgIHZvaWQgY29weUJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gcmVh
ZFRhcmdldCwgR0NHTGVudW0gd3JpdGVUYXJnZXQsIEdDR0xpbnRwdHIgcmVhZE9mZnNldCwgR0NH
TGludHB0ciB3cml0ZU9mZnNldCwgR0NHTHNpemVpcHRyKSBvdmVycmlkZTsKLQotICAgIHZvaWQg
Z2V0SW50ZXJuYWxmb3JtYXRpdihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGludGVybmFsZm9y
bWF0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xpbnQqIHBhcmFtcykg
b3ZlcnJpZGU7Ci0gICAgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgb3ZlcnJpZGU7Ci0KLSAgICB2b2lkIHRl
eFN0b3JhZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBsZXZlbHMsIEdDR0xlbnVtIGlu
dGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpIG92ZXJyaWRl
OwotICAgIHZvaWQgdGV4U3RvcmFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIGxldmVs
cywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTHNpemVpIGRlcHRoKSBvdmVycmlkZTsKLQotICAgIHZvaWQgZ2V0QWN0aXZlVW5p
Zm9ybXMoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBWZWN0b3I8R0NHTHVpbnQ+JiB1
bmlmb3JtSW5kaWNlcywgR0NHTGVudW0gcG5hbWUsIFZlY3RvcjxHQ0dMaW50PiYgcGFyYW1zKSBv
dmVycmlkZTsKLQotICAgIEdDR0xlbnVtIGNoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0NHTGVudW0g
dGFyZ2V0KSBvdmVycmlkZTsKLSAgICB2b2lkIGNsZWFyKEdDR0xiaXRmaWVsZCBtYXNrKSBvdmVy
cmlkZTsKLSAgICB2b2lkIGNsZWFyQ29sb3IoR0NHTGNsYW1wZiByZWQsIEdDR0xjbGFtcGYgZ3Jl
ZW4sIEdDR0xjbGFtcGYgYmx1ZSwgR0NHTGNsYW1wZiBhbHBoYSkgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBjbGVhckRlcHRoKEdDR0xjbGFtcGYgZGVwdGgpIG92ZXJyaWRlOwotICAgIHZvaWQgY2xlYXJT
dGVuY2lsKEdDR0xpbnQgcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjb2xvck1hc2soR0NHTGJvb2xl
YW4gcmVkLCBHQ0dMYm9vbGVhbiBncmVlbiwgR0NHTGJvb2xlYW4gYmx1ZSwgR0NHTGJvb2xlYW4g
YWxwaGEpIG92ZXJyaWRlOwotICAgIHZvaWQgY29tcGlsZVNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0
KSBvdmVycmlkZTsKLQotICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6
ZSwgY29uc3Qgdm9pZCogZGF0YSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjb21wcmVzc2VkVGV4U3Vi
SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwg
R0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBjb3B5VGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2
ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlcikgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBjb3B5VGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWws
IEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBvdmVycmlkZTsKLSAgICB2b2lkIGN1
bGxGYWNlKEdDR0xlbnVtIG1vZGUpIG92ZXJyaWRlOwotICAgIHZvaWQgZGVwdGhGdW5jKEdDR0xl
bnVtIGZ1bmMpIG92ZXJyaWRlOwotICAgIHZvaWQgZGVwdGhNYXNrKEdDR0xib29sZWFuIGZsYWcp
IG92ZXJyaWRlOwotICAgIHZvaWQgZGVwdGhSYW5nZShHQ0dMY2xhbXBmIHpOZWFyLCBHQ0dMY2xh
bXBmIHpGYXIpIG92ZXJyaWRlOwotICAgIHZvaWQgZGV0YWNoU2hhZGVyKFBsYXRmb3JtR0xPYmpl
Y3QsIFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlzYWJsZShHQ0dMZW51
bSBjYXApIG92ZXJyaWRlOwotICAgIHZvaWQgZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KEdDR0x1
aW50IGluZGV4KSBvdmVycmlkZTsKLSAgICB2b2lkIGRyYXdBcnJheXMoR0NHTGVudW0gbW9kZSwg
R0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50KSBvdmVycmlkZTsKLSAgICB2b2lkIGRyYXdF
bGVtZW50cyhHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdD
R0xpbnRwdHIgb2Zmc2V0KSBvdmVycmlkZTsKLQotICAgIHZvaWQgZW5hYmxlKEdDR0xlbnVtIGNh
cCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBlbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShHQ0dMdWludCBp
bmRleCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBmaW5pc2goKSBvdmVycmlkZTsKLSAgICB2b2lkIGZs
dXNoKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHQ0dMZW51
bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQsIEdDR0xlbnVtIHJlbmRlcmJ1ZmZlcnRhcmdl
dCwgUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBmcmFtZWJ1ZmZlclRleHR1
cmUyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQsIEdDR0xlbnVtIHRleHRh
cmdldCwgUGxhdGZvcm1HTE9iamVjdCwgR0NHTGludCBsZXZlbCkgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBmcm9udEZhY2UoR0NHTGVudW0gbW9kZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZW5lcmF0ZU1p
cG1hcChHQ0dMZW51bSB0YXJnZXQpIG92ZXJyaWRlOwotCi0gICAgYm9vbCBnZXRBY3RpdmVBdHRy
aWIoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCBpbmRleCwgQWN0aXZlSW5mbyYp
IG92ZXJyaWRlOworICAgIHZvaWQgYWN0aXZlVGV4dHVyZShHQ0dMZW51bSB0ZXh0dXJlKSBmaW5h
bDsKKyAgICB2b2lkIGF0dGFjaFNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIFBsYXRm
b3JtR0xPYmplY3Qgc2hhZGVyKSBmaW5hbDsKKyAgICB2b2lkIGJpbmRBdHRyaWJMb2NhdGlvbihQ
bGF0Zm9ybUdMT2JqZWN0LCBHQ0dMdWludCBpbmRleCwgY29uc3QgU3RyaW5nJiBuYW1lKSBmaW5h
bDsKKyAgICB2b2lkIGJpbmRCdWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0
KSBmaW5hbDsKKyAgICB2b2lkIGJpbmRGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIFBsYXRm
b3JtR0xPYmplY3QpIGZpbmFsOworICAgIHZvaWQgYmluZFJlbmRlcmJ1ZmZlcihHQ0dMZW51bSB0
YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QpIGZpbmFsOworICAgIHZvaWQgYmluZFRleHR1cmUoR0NH
TGVudW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0KSBmaW5hbDsKKyAgICB2b2lkIGJsZW5kQ29s
b3IoR0NHTGNsYW1wZiByZWQsIEdDR0xjbGFtcGYgZ3JlZW4sIEdDR0xjbGFtcGYgYmx1ZSwgR0NH
TGNsYW1wZiBhbHBoYSkgZmluYWw7CisgICAgdm9pZCBibGVuZEVxdWF0aW9uKEdDR0xlbnVtIG1v
ZGUpIGZpbmFsOworICAgIHZvaWQgYmxlbmRFcXVhdGlvblNlcGFyYXRlKEdDR0xlbnVtIG1vZGVS
R0IsIEdDR0xlbnVtIG1vZGVBbHBoYSkgZmluYWw7CisgICAgdm9pZCBibGVuZEZ1bmMoR0NHTGVu
dW0gc2ZhY3RvciwgR0NHTGVudW0gZGZhY3RvcikgZmluYWw7CisgICAgdm9pZCBibGVuZEZ1bmNT
ZXBhcmF0ZShHQ0dMZW51bSBzcmNSR0IsIEdDR0xlbnVtIGRzdFJHQiwgR0NHTGVudW0gc3JjQWxw
aGEsIEdDR0xlbnVtIGRzdEFscGhhKSBmaW5hbDsKKworICAgIHZvaWQgYnVmZmVyRGF0YShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xzaXplaXB0ciBzaXplLCBHQ0dMZW51bSB1c2FnZSkgZmluYWw7Cisg
ICAgdm9pZCBidWZmZXJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpcHRyIHNpemUsIGNv
bnN0IHZvaWQqIGRhdGEsIEdDR0xlbnVtIHVzYWdlKSBmaW5hbDsKKyAgICB2b2lkIGJ1ZmZlclN1
YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVpcHRyIHNp
emUsIGNvbnN0IHZvaWQqIGRhdGEpIGZpbmFsOworCisgICAgR0NHTGVudW0gY2hlY2tGcmFtZWJ1
ZmZlclN0YXR1cyhHQ0dMZW51bSB0YXJnZXQpIGZpbmFsOworICAgIHZvaWQgY2xlYXIoR0NHTGJp
dGZpZWxkIG1hc2spIGZpbmFsOworICAgIHZvaWQgY2xlYXJDb2xvcihHQ0dMY2xhbXBmIHJlZCwg
R0NHTGNsYW1wZiBncmVlbiwgR0NHTGNsYW1wZiBibHVlLCBHQ0dMY2xhbXBmIGFscGhhKSBmaW5h
bDsKKyAgICB2b2lkIGNsZWFyRGVwdGgoR0NHTGNsYW1wZiBkZXB0aCkgZmluYWw7CisgICAgdm9p
ZCBjbGVhclN0ZW5jaWwoR0NHTGludCBzKSBmaW5hbDsKKyAgICB2b2lkIGNvbG9yTWFzayhHQ0dM
Ym9vbGVhbiByZWQsIEdDR0xib29sZWFuIGdyZWVuLCBHQ0dMYm9vbGVhbiBibHVlLCBHQ0dMYm9v
bGVhbiBhbHBoYSkgZmluYWw7CisgICAgdm9pZCBjb21waWxlU2hhZGVyKFBsYXRmb3JtR0xPYmpl
Y3QpIGZpbmFsOworCisgICAgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXpl
LCBjb25zdCB2b2lkKiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFn
ZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dM
aW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0g
Zm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCB2b2lkKiBkYXRhKSBmaW5hbDsKKyAg
ICB2b2lkIGNvcHlUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NH
TGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyKSBmaW5hbDsKKyAgICB2b2lkIGNv
cHlUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4
b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpIGZpbmFsOworICAgIHZvaWQgY3VsbEZhY2UoR0NHTGVu
dW0gbW9kZSkgZmluYWw7CisgICAgdm9pZCBkZXB0aEZ1bmMoR0NHTGVudW0gZnVuYykgZmluYWw7
CisgICAgdm9pZCBkZXB0aE1hc2soR0NHTGJvb2xlYW4gZmxhZykgZmluYWw7CisgICAgdm9pZCBk
ZXB0aFJhbmdlKEdDR0xjbGFtcGYgek5lYXIsIEdDR0xjbGFtcGYgekZhcikgZmluYWw7CisgICAg
dm9pZCBkZXRhY2hTaGFkZXIoUGxhdGZvcm1HTE9iamVjdCwgUGxhdGZvcm1HTE9iamVjdCkgZmlu
YWw7CisgICAgdm9pZCBkaXNhYmxlKEdDR0xlbnVtIGNhcCkgZmluYWw7CisgICAgdm9pZCBkaXNh
YmxlVmVydGV4QXR0cmliQXJyYXkoR0NHTHVpbnQgaW5kZXgpIGZpbmFsOworICAgIHZvaWQgZHJh
d0FycmF5cyhHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQpIGZp
bmFsOworICAgIHZvaWQgZHJhd0VsZW1lbnRzKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3Vu
dCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOworCisgICAgdm9pZCBl
bmFibGUoR0NHTGVudW0gY2FwKSBmaW5hbDsKKyAgICB2b2lkIGVuYWJsZVZlcnRleEF0dHJpYkFy
cmF5KEdDR0x1aW50IGluZGV4KSBmaW5hbDsKKyAgICB2b2lkIGZpbmlzaCgpIGZpbmFsOworICAg
IHZvaWQgZmx1c2goKSBmaW5hbDsKKyAgICB2b2lkIGZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgR0NHTGVudW0gcmVuZGVyYnVmZmVy
dGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0KSBmaW5hbDsKKyAgICB2b2lkIGZyYW1lYnVmZmVyVGV4
dHVyZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgR0NHTGVudW0gdGV4
dGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0LCBHQ0dMaW50IGxldmVsKSBmaW5hbDsKKyAgICB2b2lk
IGZyb250RmFjZShHQ0dMZW51bSBtb2RlKSBmaW5hbDsKKyAgICB2b2lkIGdlbmVyYXRlTWlwbWFw
KEdDR0xlbnVtIHRhcmdldCkgZmluYWw7CisKKyAgICBib29sIGdldEFjdGl2ZUF0dHJpYihQbGF0
Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBBY3RpdmVJbmZvJikgZmluYWw7
CiAgICAgYm9vbCBnZXRBY3RpdmVBdHRyaWJJbXBsKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwg
R0NHTHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mKTsKLSAgICBib29sIGdldEFjdGl2ZVVuaWZvcm0o
UGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCBpbmRleCwgQWN0aXZlSW5mbyYpIG92
ZXJyaWRlOworICAgIGJvb2wgZ2V0QWN0aXZlVW5pZm9ybShQbGF0Zm9ybUdMT2JqZWN0IHByb2dy
YW0sIEdDR0x1aW50IGluZGV4LCBBY3RpdmVJbmZvJikgZmluYWw7CiAgICAgYm9vbCBnZXRBY3Rp
dmVVbmlmb3JtSW1wbChQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBB
Y3RpdmVJbmZvJik7Ci0gICAgdm9pZCBnZXRBdHRhY2hlZFNoYWRlcnMoUGxhdGZvcm1HTE9iamVj
dCBwcm9ncmFtLCBHQ0dMc2l6ZWkgbWF4Q291bnQsIEdDR0xzaXplaSogY291bnQsIFBsYXRmb3Jt
R0xPYmplY3QqIHNoYWRlcnMpIG92ZXJyaWRlOwotICAgIEdDR0xpbnQgZ2V0QXR0cmliTG9jYXRp
b24oUGxhdGZvcm1HTE9iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lKSBvdmVycmlkZTsKLSAgICB2
b2lkIGdldEJvb2xlYW52KEdDR0xlbnVtIHBuYW1lLCBHQ0dMYm9vbGVhbiogdmFsdWUpIG92ZXJy
aWRlOwotICAgIHZvaWQgZ2V0QnVmZmVyUGFyYW1ldGVyaXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpIG92ZXJyaWRlOwotICAgIEdDR0xlbnVtIGdldEVy
cm9yKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRGbG9hdHYoR0NHTGVudW0gcG5hbWUsIEdDR0xm
bG9hdCogdmFsdWUpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50
UGFyYW1ldGVyaXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51
bSBwbmFtZSwgR0NHTGludCogdmFsdWUpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0SW50ZWdlcnYo
R0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldElu
dGVnZXI2NHYoR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQ2NCogdmFsdWUpIG92ZXJyaWRlOwotICAg
IHZvaWQgZ2V0UHJvZ3JhbWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGVudW0gcG5h
bWUsIEdDR0xpbnQqIHZhbHVlKSBvdmVycmlkZTsKKyAgICB2b2lkIGdldEF0dGFjaGVkU2hhZGVy
cyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xzaXplaSBtYXhDb3VudCwgR0NHTHNpemVp
KiBjb3VudCwgUGxhdGZvcm1HTE9iamVjdCogc2hhZGVycykgZmluYWw7CisgICAgR0NHTGludCBn
ZXRBdHRyaWJMb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUpIGZp
bmFsOworICAgIHZvaWQgZ2V0Qm9vbGVhbnYoR0NHTGVudW0gcG5hbWUsIEdDR0xib29sZWFuKiB2
YWx1ZSkgZmluYWw7CisgICAgdm9pZCBnZXRCdWZmZXJQYXJhbWV0ZXJpdihHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkgZmluYWw7CisgICAgR0NHTGVudW0g
Z2V0RXJyb3IoKSBmaW5hbDsKKyAgICB2b2lkIGdldEZsb2F0dihHQ0dMZW51bSBwbmFtZSwgR0NH
TGZsb2F0KiB2YWx1ZSkgZmluYWw7CisgICAgdm9pZCBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQ
YXJhbWV0ZXJpdihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkgZmluYWw7CisgICAgdm9pZCBnZXRJbnRlZ2VydihHQ0dM
ZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpIGZpbmFsOworICAgIHZvaWQgZ2V0SW50ZWdlcjY0
dihHQ0dMZW51bSBwbmFtZSwgR0NHTGludDY0KiB2YWx1ZSkgZmluYWw7CisgICAgdm9pZCBnZXRQ
cm9ncmFtaXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGlu
dCogdmFsdWUpIGZpbmFsOwogI2lmICFVU0UoQU5HTEUpCiAgICAgdm9pZCBnZXROb25CdWlsdElu
QWN0aXZlU3ltYm9sQ291bnQoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTGludCogdmFsdWUpOwogI2VuZGlmIC8vICFVU0UoQU5HTEUpCi0gICAgU3RyaW5nIGdl
dFByb2dyYW1JbmZvTG9nKFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOworICAgIFN0cmluZyBn
ZXRQcm9ncmFtSW5mb0xvZyhQbGF0Zm9ybUdMT2JqZWN0KSBmaW5hbDsKICAgICBTdHJpbmcgZ2V0
VW5tYW5nbGVkSW5mb0xvZyhQbGF0Zm9ybUdMT2JqZWN0WzJdLCBHQ0dMc2l6ZWksIGNvbnN0IFN0
cmluZyYpOwotICAgIHZvaWQgZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpIG92ZXJyaWRlOwotICAgIHZvaWQg
Z2V0U2hhZGVyaXYoUGxhdGZvcm1HTE9iamVjdCwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZh
bHVlKSBvdmVycmlkZTsKLSAgICBTdHJpbmcgZ2V0U2hhZGVySW5mb0xvZyhQbGF0Zm9ybUdMT2Jq
ZWN0KSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFNoYWRlclByZWNpc2lvbkZvcm1hdChHQ0dMZW51
bSBzaGFkZXJUeXBlLCBHQ0dMZW51bSBwcmVjaXNpb25UeXBlLCBHQ0dMaW50KiByYW5nZSwgR0NH
TGludCogcHJlY2lzaW9uKSBvdmVycmlkZTsKLSAgICBTdHJpbmcgZ2V0U2hhZGVyU291cmNlKFBs
YXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwotICAgIFN0cmluZyBnZXRTdHJpbmcoR0NHTGVudW0g
bmFtZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRUZXhQYXJhbWV0ZXJmdihHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQqIHZhbHVlKSBvdmVycmlkZTsKLSAgICB2b2lk
IGdldFRleFBhcmFtZXRlcml2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xp
bnQqIHZhbHVlKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFVuaWZvcm1mdihQbGF0Zm9ybUdMT2Jq
ZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCogdmFsdWUpIG92ZXJyaWRl
OwotICAgIHZvaWQgZ2V0VW5pZm9ybWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTGludCogdmFsdWUpIG92ZXJyaWRlOwotICAgIEdDR0xpbnQgZ2V0VW5p
Zm9ybUxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSkgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJmdihHQ0dMdWludCBpbmRleCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xmbG9hdCogdmFsdWUpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VmVydGV4QXR0
cmliaXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkgb3Zl
cnJpZGU7Ci0gICAgR0NHTHNpemVpcHRyIGdldFZlcnRleEF0dHJpYk9mZnNldChHQ0dMdWludCBp
bmRleCwgR0NHTGVudW0gcG5hbWUpIG92ZXJyaWRlOwotCi0gICAgdm9pZCBoaW50KEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gbW9kZSkgb3ZlcnJpZGU7Ci0gICAgR0NHTGJvb2xlYW4gaXNCdWZm
ZXIoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7Ci0gICAgR0NHTGJvb2xlYW4gaXNFbmFibGVk
KEdDR0xlbnVtIGNhcCkgb3ZlcnJpZGU7Ci0gICAgR0NHTGJvb2xlYW4gaXNGcmFtZWJ1ZmZlcihQ
bGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKLSAgICBHQ0dMYm9vbGVhbiBpc1Byb2dyYW0oUGxh
dGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7Ci0gICAgR0NHTGJvb2xlYW4gaXNSZW5kZXJidWZmZXIo
UGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7Ci0gICAgR0NHTGJvb2xlYW4gaXNTaGFkZXIoUGxh
dGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7Ci0gICAgR0NHTGJvb2xlYW4gaXNUZXh0dXJlKFBsYXRm
b3JtR0xPYmplY3QpIG92ZXJyaWRlOwotICAgIHZvaWQgbGluZVdpZHRoKEdDR0xmbG9hdCkgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBsaW5rUHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsK
LSAgICB2b2lkIHBpeGVsU3RvcmVpKEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50IHBhcmFtKSBvdmVy
cmlkZTsKLSAgICB2b2lkIHBvbHlnb25PZmZzZXQoR0NHTGZsb2F0IGZhY3RvciwgR0NHTGZsb2F0
IHVuaXRzKSBvdmVycmlkZTsKLQotICAgIHZvaWQgcmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xp
bnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUsIHZvaWQqIGRhdGEpIG92ZXJyaWRlOworICAgIHZvaWQgZ2V0UmVuZGVy
YnVmZmVyUGFyYW1ldGVyaXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGlu
dCogdmFsdWUpIGZpbmFsOworICAgIHZvaWQgZ2V0U2hhZGVyaXYoUGxhdGZvcm1HTE9iamVjdCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKSBmaW5hbDsKKyAgICBTdHJpbmcgZ2V0U2hh
ZGVySW5mb0xvZyhQbGF0Zm9ybUdMT2JqZWN0KSBmaW5hbDsKKyAgICB2b2lkIGdldFNoYWRlclBy
ZWNpc2lvbkZvcm1hdChHQ0dMZW51bSBzaGFkZXJUeXBlLCBHQ0dMZW51bSBwcmVjaXNpb25UeXBl
LCBHQ0dMaW50KiByYW5nZSwgR0NHTGludCogcHJlY2lzaW9uKSBmaW5hbDsKKyAgICBTdHJpbmcg
Z2V0U2hhZGVyU291cmNlKFBsYXRmb3JtR0xPYmplY3QpIGZpbmFsOworICAgIFN0cmluZyBnZXRT
dHJpbmcoR0NHTGVudW0gbmFtZSkgZmluYWw7CisgICAgdm9pZCBnZXRUZXhQYXJhbWV0ZXJmdihH
Q0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQqIHZhbHVlKSBmaW5hbDsK
KyAgICB2b2lkIGdldFRleFBhcmFtZXRlcml2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xpbnQqIHZhbHVlKSBmaW5hbDsKKyAgICB2b2lkIGdldFVuaWZvcm1mdihQbGF0Zm9y
bUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCogdmFsdWUpIGZp
bmFsOworICAgIHZvaWQgZ2V0VW5pZm9ybWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NH
TGludCBsb2NhdGlvbiwgR0NHTGludCogdmFsdWUpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0VW5p
Zm9ybUxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSkgZmluYWw7
CisgICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJmdihHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xmbG9hdCogdmFsdWUpIGZpbmFsOworICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliaXYo
R0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkgZmluYWw7Cisg
ICAgR0NHTHNpemVpcHRyIGdldFZlcnRleEF0dHJpYk9mZnNldChHQ0dMdWludCBpbmRleCwgR0NH
TGVudW0gcG5hbWUpIGZpbmFsOworCisgICAgdm9pZCBoaW50KEdDR0xlbnVtIHRhcmdldCwgR0NH
TGVudW0gbW9kZSkgZmluYWw7CisgICAgR0NHTGJvb2xlYW4gaXNCdWZmZXIoUGxhdGZvcm1HTE9i
amVjdCkgZmluYWw7CisgICAgR0NHTGJvb2xlYW4gaXNFbmFibGVkKEdDR0xlbnVtIGNhcCkgZmlu
YWw7CisgICAgR0NHTGJvb2xlYW4gaXNGcmFtZWJ1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0KSBmaW5h
bDsKKyAgICBHQ0dMYm9vbGVhbiBpc1Byb2dyYW0oUGxhdGZvcm1HTE9iamVjdCkgZmluYWw7Cisg
ICAgR0NHTGJvb2xlYW4gaXNSZW5kZXJidWZmZXIoUGxhdGZvcm1HTE9iamVjdCkgZmluYWw7Cisg
ICAgR0NHTGJvb2xlYW4gaXNTaGFkZXIoUGxhdGZvcm1HTE9iamVjdCkgZmluYWw7CisgICAgR0NH
TGJvb2xlYW4gaXNUZXh0dXJlKFBsYXRmb3JtR0xPYmplY3QpIGZpbmFsOworICAgIHZvaWQgbGlu
ZVdpZHRoKEdDR0xmbG9hdCkgZmluYWw7CisgICAgdm9pZCBsaW5rUHJvZ3JhbShQbGF0Zm9ybUdM
T2JqZWN0KSBmaW5hbDsKKyAgICB2b2lkIHBpeGVsU3RvcmVpKEdDR0xlbnVtIHBuYW1lLCBHQ0dM
aW50IHBhcmFtKSBmaW5hbDsKKyAgICB2b2lkIHBvbHlnb25PZmZzZXQoR0NHTGZsb2F0IGZhY3Rv
ciwgR0NHTGZsb2F0IHVuaXRzKSBmaW5hbDsKKworICAgIHZvaWQgcmVhZFBpeGVscyhHQ0dMaW50
IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51
bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIHZvaWQqIGRhdGEpIGZpbmFsOwogCiAgICAgdm9pZCBy
ZWxlYXNlU2hhZGVyQ29tcGlsZXIoKTsKIAotICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQpIG92ZXJyaWRlOwotICAgIHZvaWQgc2FtcGxlQ292ZXJhZ2UoR0NH
TGNsYW1wZiB2YWx1ZSwgR0NHTGJvb2xlYW4gaW52ZXJ0KSBvdmVycmlkZTsKLSAgICB2b2lkIHNj
aXNzb3IoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzaGFkZXJTb3VyY2UoUGxhdGZvcm1HTE9iamVjdCwg
Y29uc3QgU3RyaW5nJiBzdHJpbmcpIG92ZXJyaWRlOwotICAgIHZvaWQgc3RlbmNpbEZ1bmMoR0NH
TGVudW0gZnVuYywgR0NHTGludCByZWYsIEdDR0x1aW50IG1hc2spIG92ZXJyaWRlOwotICAgIHZv
aWQgc3RlbmNpbEZ1bmNTZXBhcmF0ZShHQ0dMZW51bSBmYWNlLCBHQ0dMZW51bSBmdW5jLCBHQ0dM
aW50IHJlZiwgR0NHTHVpbnQgbWFzaykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzdGVuY2lsTWFzayhH
Q0dMdWludCBtYXNrKSBvdmVycmlkZTsKLSAgICB2b2lkIHN0ZW5jaWxNYXNrU2VwYXJhdGUoR0NH
TGVudW0gZmFjZSwgR0NHTHVpbnQgbWFzaykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzdGVuY2lsT3Ao
R0NHTGVudW0gZmFpbCwgR0NHTGVudW0gemZhaWwsIEdDR0xlbnVtIHpwYXNzKSBvdmVycmlkZTsK
LSAgICB2b2lkIHN0ZW5jaWxPcFNlcGFyYXRlKEdDR0xlbnVtIGZhY2UsIEdDR0xlbnVtIGZhaWws
IEdDR0xlbnVtIHpmYWlsLCBHQ0dMZW51bSB6cGFzcykgb3ZlcnJpZGU7Ci0KLSAgICBib29sIHRl
eEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5h
bGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRl
ciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBjb25zdCB2b2lkKiBwaXhlbHMpIG92
ZXJyaWRlOwotICAgIHZvaWQgdGV4UGFyYW1ldGVyZihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMZmxvYXQgcGFyYW0pIG92ZXJyaWRlOwotICAgIHZvaWQgdGV4UGFyYW1ldGVy
aShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50IHBhcmFtKSBvdmVycmlk
ZTsKLSAgICB2b2lkIHRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVs
LCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQq
IHBpeGVscykgb3ZlcnJpZGU7Ci0KLSAgICB2b2lkIHVuaWZvcm0xZihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMZmxvYXQgeCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCB1bmlmb3JtMWZ2KEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xzaXplaSwgY29uc3QgR0NHTGZsb2F0KiB2KSBvdmVycmlkZTsKLSAgICB2b2lk
IHVuaWZvcm0xaShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHgpIG92ZXJyaWRlOwotICAgIHZv
aWQgdW5pZm9ybTFpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xpbnQq
IHYpIG92ZXJyaWRlOwotICAgIHZvaWQgdW5pZm9ybTJmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xm
bG9hdCB4LCBHQ0dMZmxvYXQgeSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCB1bmlmb3JtMmZ2KEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xzaXplaSwgY29uc3QgR0NHTGZsb2F0KiB2KSBvdmVycmlkZTsKLSAg
ICB2b2lkIHVuaWZvcm0yaShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSkg
b3ZlcnJpZGU7Ci0gICAgdm9pZCB1bmlmb3JtMml2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXpl
aSwgY29uc3QgR0NHTGludCogdikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB1bmlmb3JtM2YoR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5LCBHQ0dMZmxvYXQgeikgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCB1bmlmb3JtM2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSwgY29u
c3QgR0NHTGZsb2F0KiB2KSBvdmVycmlkZTsKLSAgICB2b2lkIHVuaWZvcm0zaShHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTGludCB6KSBvdmVycmlkZTsKLSAgICB2
b2lkIHVuaWZvcm0zaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpLCBjb25zdCBHQ0dMaW50
KiB2KSBvdmVycmlkZTsKLSAgICB2b2lkIHVuaWZvcm00ZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
ZmxvYXQgeCwgR0NHTGZsb2F0IHksIEdDR0xmbG9hdCB6LCBHQ0dMZmxvYXQgdykgb3ZlcnJpZGU7
Ci0gICAgdm9pZCB1bmlmb3JtNGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSwgY29uc3Qg
R0NHTGZsb2F0KiB2KSBvdmVycmlkZTsKLSAgICB2b2lkIHVuaWZvcm00aShHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTGludCB6LCBHQ0dMaW50IHcpIG92ZXJyaWRl
OwotICAgIHZvaWQgdW5pZm9ybTRpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWksIGNvbnN0
IEdDR0xpbnQqIHYpIG92ZXJyaWRlOwotICAgIHZvaWQgdW5pZm9ybU1hdHJpeDJmdihHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMc2l6ZWksIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZs
b2F0KiB2YWx1ZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCB1bmlmb3JtTWF0cml4M2Z2KEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xzaXplaSwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxv
YXQqIHZhbHVlKSBvdmVycmlkZTsKLSAgICB2b2lkIHVuaWZvcm1NYXRyaXg0ZnYoR0NHTGludCBs
b2NhdGlvbiwgR0NHTHNpemVpLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9h
dCogdmFsdWUpIG92ZXJyaWRlOwotCi0gICAgdm9pZCB1c2VQcm9ncmFtKFBsYXRmb3JtR0xPYmpl
Y3QpIG92ZXJyaWRlOwotICAgIHZvaWQgdmFsaWRhdGVQcm9ncmFtKFBsYXRmb3JtR0xPYmplY3Qp
IG92ZXJyaWRlOworICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQpIGZpbmFsOworICAgIHZvaWQgc2FtcGxlQ292ZXJhZ2UoR0NHTGNsYW1wZiB2YWx1ZSwgR0NH
TGJvb2xlYW4gaW52ZXJ0KSBmaW5hbDsKKyAgICB2b2lkIHNjaXNzb3IoR0NHTGludCB4LCBHQ0dM
aW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgZmluYWw7CisgICAgdm9p
ZCBzaGFkZXJTb3VyY2UoUGxhdGZvcm1HTE9iamVjdCwgY29uc3QgU3RyaW5nJiBzdHJpbmcpIGZp
bmFsOworICAgIHZvaWQgc3RlbmNpbEZ1bmMoR0NHTGVudW0gZnVuYywgR0NHTGludCByZWYsIEdD
R0x1aW50IG1hc2spIGZpbmFsOworICAgIHZvaWQgc3RlbmNpbEZ1bmNTZXBhcmF0ZShHQ0dMZW51
bSBmYWNlLCBHQ0dMZW51bSBmdW5jLCBHQ0dMaW50IHJlZiwgR0NHTHVpbnQgbWFzaykgZmluYWw7
CisgICAgdm9pZCBzdGVuY2lsTWFzayhHQ0dMdWludCBtYXNrKSBmaW5hbDsKKyAgICB2b2lkIHN0
ZW5jaWxNYXNrU2VwYXJhdGUoR0NHTGVudW0gZmFjZSwgR0NHTHVpbnQgbWFzaykgZmluYWw7Cisg
ICAgdm9pZCBzdGVuY2lsT3AoR0NHTGVudW0gZmFpbCwgR0NHTGVudW0gemZhaWwsIEdDR0xlbnVt
IHpwYXNzKSBmaW5hbDsKKyAgICB2b2lkIHN0ZW5jaWxPcFNlcGFyYXRlKEdDR0xlbnVtIGZhY2Us
IEdDR0xlbnVtIGZhaWwsIEdDR0xlbnVtIHpmYWlsLCBHQ0dMZW51bSB6cGFzcykgZmluYWw7CisK
KyAgICBib29sIHRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dM
ZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBH
Q0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBjb25zdCB2b2lk
KiBwaXhlbHMpIGZpbmFsOworICAgIHZvaWQgdGV4UGFyYW1ldGVyZihHQ0dMZW51bSB0YXJnZXQs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQgcGFyYW0pIGZpbmFsOworICAgIHZvaWQgdGV4UGFy
YW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50IHBhcmFtKSBm
aW5hbDsKKyAgICB2b2lkIHRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxl
dmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGNvbnN0IHZv
aWQqIHBpeGVscykgZmluYWw7CisKKyAgICB2b2lkIHVuaWZvcm0xZihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMZmxvYXQgeCkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtMWZ2KEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xzaXplaSwgY29uc3QgR0NHTGZsb2F0KiB2KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZv
cm0xaShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHgpIGZpbmFsOworICAgIHZvaWQgdW5pZm9y
bTFpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xpbnQqIHYpIGZpbmFs
OworICAgIHZvaWQgdW5pZm9ybTJmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB4LCBHQ0dM
ZmxvYXQgeSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtMmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xzaXplaSwgY29uc3QgR0NHTGZsb2F0KiB2KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0yaShH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSkgZmluYWw7CisgICAgdm9pZCB1
bmlmb3JtMml2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSwgY29uc3QgR0NHTGludCogdikg
ZmluYWw7CisgICAgdm9pZCB1bmlmb3JtM2YoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgs
IEdDR0xmbG9hdCB5LCBHQ0dMZmxvYXQgeikgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtM2Z2KEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSwgY29uc3QgR0NHTGZsb2F0KiB2KSBmaW5hbDsKKyAg
ICB2b2lkIHVuaWZvcm0zaShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwg
R0NHTGludCB6KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0zaXYoR0NHTGludCBsb2NhdGlvbiwg
R0NHTHNpemVpLCBjb25zdCBHQ0dMaW50KiB2KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm00ZihH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHksIEdDR0xmbG9hdCB6LCBH
Q0dMZmxvYXQgdykgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtNGZ2KEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xzaXplaSwgY29uc3QgR0NHTGZsb2F0KiB2KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm00
aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTGludCB6LCBHQ0dM
aW50IHcpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTRpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
c2l6ZWksIGNvbnN0IEdDR0xpbnQqIHYpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDJm
dihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWksIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29u
c3QgR0NHTGZsb2F0KiB2YWx1ZSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4M2Z2KEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBH
Q0dMZmxvYXQqIHZhbHVlKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm1NYXRyaXg0ZnYoR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTHNpemVpLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xm
bG9hdCogdmFsdWUpIGZpbmFsOworCisgICAgdm9pZCB1c2VQcm9ncmFtKFBsYXRmb3JtR0xPYmpl
Y3QpIGZpbmFsOworICAgIHZvaWQgdmFsaWRhdGVQcm9ncmFtKFBsYXRmb3JtR0xPYmplY3QpIGZp
bmFsOwogI2lmICFVU0UoQU5HTEUpCiAgICAgYm9vbCBjaGVja1ZhcnlpbmdzUGFja2luZyhQbGF0
Zm9ybUdMT2JqZWN0IHZlcnRleFNoYWRlciwgUGxhdGZvcm1HTE9iamVjdCBmcmFnbWVudFNoYWRl
cikgY29uc3Q7CiAgICAgYm9vbCBwcmVjaXNpb25zTWF0Y2goUGxhdGZvcm1HTE9iamVjdCB2ZXJ0
ZXhTaGFkZXIsIFBsYXRmb3JtR0xPYmplY3QgZnJhZ21lbnRTaGFkZXIpIGNvbnN0OwogI2VuZGlm
CiAKLSAgICB2b2lkIHZlcnRleEF0dHJpYjFmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgeCkg
b3ZlcnJpZGU7Ci0gICAgdm9pZCB2ZXJ0ZXhBdHRyaWIxZnYoR0NHTHVpbnQgaW5kZXgsIGNvbnN0
IEdDR0xmbG9hdCogdmFsdWVzKSBvdmVycmlkZTsKLSAgICB2b2lkIHZlcnRleEF0dHJpYjJmKEdD
R0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHkpIG92ZXJyaWRlOwotICAgIHZv
aWQgdmVydGV4QXR0cmliMmZ2KEdDR0x1aW50IGluZGV4LCBjb25zdCBHQ0dMZmxvYXQqIHZhbHVl
cykgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2ZXJ0ZXhBdHRyaWIzZihHQ0dMdWludCBpbmRleCwgR0NH
TGZsb2F0IHgsIEdDR0xmbG9hdCB5LCBHQ0dMZmxvYXQgeikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2
ZXJ0ZXhBdHRyaWIzZnYoR0NHTHVpbnQgaW5kZXgsIGNvbnN0IEdDR0xmbG9hdCogdmFsdWVzKSBv
dmVycmlkZTsKLSAgICB2b2lkIHZlcnRleEF0dHJpYjRmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxv
YXQgeCwgR0NHTGZsb2F0IHksIEdDR0xmbG9hdCB6LCBHQ0dMZmxvYXQgdykgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCB2ZXJ0ZXhBdHRyaWI0ZnYoR0NHTHVpbnQgaW5kZXgsIGNvbnN0IEdDR0xmbG9hdCog
dmFsdWVzKSBvdmVycmlkZTsKLSAgICB2b2lkIHZlcnRleEF0dHJpYlBvaW50ZXIoR0NHTHVpbnQg
aW5kZXgsIEdDR0xpbnQgc2l6ZSwgR0NHTGVudW0gdHlwZSwgR0NHTGJvb2xlYW4gbm9ybWFsaXpl
ZCwgR0NHTHNpemVpIHN0cmlkZSwgR0NHTGludHB0ciBvZmZzZXQpIG92ZXJyaWRlOworICAgIHZv
aWQgdmVydGV4QXR0cmliMWYoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB4KSBmaW5hbDsKKyAg
ICB2b2lkIHZlcnRleEF0dHJpYjFmdihHQ0dMdWludCBpbmRleCwgY29uc3QgR0NHTGZsb2F0KiB2
YWx1ZXMpIGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0cmliMmYoR0NHTHVpbnQgaW5kZXgsIEdD
R0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSkgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIyZnYo
R0NHTHVpbnQgaW5kZXgsIGNvbnN0IEdDR0xmbG9hdCogdmFsdWVzKSBmaW5hbDsKKyAgICB2b2lk
IHZlcnRleEF0dHJpYjNmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHks
IEdDR0xmbG9hdCB6KSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYjNmdihHQ0dMdWludCBp
bmRleCwgY29uc3QgR0NHTGZsb2F0KiB2YWx1ZXMpIGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0
cmliNGYoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSwgR0NHTGZsb2F0
IHosIEdDR0xmbG9hdCB3KSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYjRmdihHQ0dMdWlu
dCBpbmRleCwgY29uc3QgR0NHTGZsb2F0KiB2YWx1ZXMpIGZpbmFsOworICAgIHZvaWQgdmVydGV4
QXR0cmliUG9pbnRlcihHQ0dMdWludCBpbmRleCwgR0NHTGludCBzaXplLCBHQ0dMZW51bSB0eXBl
LCBHQ0dMYm9vbGVhbiBub3JtYWxpemVkLCBHQ0dMc2l6ZWkgc3RyaWRlLCBHQ0dMaW50cHRyIG9m
ZnNldCkgZmluYWw7CiAKLSAgICB2b2lkIHZpZXdwb3J0KEdDR0xpbnQgeCwgR0NHTGludCB5LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpIG92ZXJyaWRlOworICAgIHZvaWQgdmll
d3BvcnQoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCkgZmluYWw7CiAKICAgICB2b2lkIHJlc2hhcGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsK
IAotICAgIHZvaWQgZHJhd0FycmF5c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZp
cnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpIG92ZXJyaWRlOwotICAg
IHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3Vu
dCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQp
IG92ZXJyaWRlOwotICAgIHZvaWQgdmVydGV4QXR0cmliRGl2aXNvcihHQ0dMdWludCBpbmRleCwg
R0NHTHVpbnQgZGl2aXNvcikgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2Vk
KEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVp
IHByaW1jb3VudCkgZmluYWw7CisgICAgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVu
dW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNl
dCwgR0NHTHNpemVpIHByaW1jb3VudCkgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZp
c29yKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKSBmaW5hbDsKIAogICAgIC8vIFZl
cnRleEFycmF5T2plY3QgY2FsbHMKLSAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVZlcnRleEFy
cmF5KCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkZWxldGVWZXJ0ZXhBcnJheShQbGF0Zm9ybUdMT2Jq
ZWN0KSBvdmVycmlkZTsKLSAgICBHQ0dMYm9vbGVhbiBpc1ZlcnRleEFycmF5KFBsYXRmb3JtR0xP
YmplY3QpIG92ZXJyaWRlOwotICAgIHZvaWQgYmluZFZlcnRleEFycmF5KFBsYXRmb3JtR0xPYmpl
Y3QpIG92ZXJyaWRlOworICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlVmVydGV4QXJyYXkoKSBm
aW5hbDsKKyAgICB2b2lkIGRlbGV0ZVZlcnRleEFycmF5KFBsYXRmb3JtR0xPYmplY3QpIGZpbmFs
OworICAgIEdDR0xib29sZWFuIGlzVmVydGV4QXJyYXkoUGxhdGZvcm1HTE9iamVjdCkgZmluYWw7
CisgICAgdm9pZCBiaW5kVmVydGV4QXJyYXkoUGxhdGZvcm1HTE9iamVjdCkgZmluYWw7CisKKyAg
ICAvLyA9PT09PT09PT09IFdlYkdMIDIgZW50cnkgcG9pbnRzLgorCisgICAgdm9pZCBidWZmZXJE
YXRhKEdDR0xlbnVtIHRhcmdldCwgY29uc3Qgdm9pZCogZGF0YSwgR0NHTGVudW0gdXNhZ2UsIEdD
R0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgbGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIGJ1ZmZl
clN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIGRzdEJ5dGVPZmZzZXQsIGNvbnN0
IHZvaWQqIHNyY0RhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgbGVuZ3RoKSBmaW5h
bDsKKworICAgIHZvaWQgY29weUJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gcmVhZFRhcmdldCwgR0NH
TGVudW0gd3JpdGVUYXJnZXQsIEdDR0xpbnRwdHIgcmVhZE9mZnNldCwgR0NHTGludHB0ciB3cml0
ZU9mZnNldCwgR0NHTHNpemVpcHRyIHNpemUpIGZpbmFsOworICAgIHZvaWQgZ2V0QnVmZmVyU3Vi
RGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgc3JjQnl0ZU9mZnNldCwgY29uc3Qgdm9p
ZCogZHN0RGF0YSwgR0NHTHVpbnQgZHN0T2Zmc2V0LCBHQ0dMdWludCBsZW5ndGgpIGZpbmFsOwor
ICAgIHZvaWQqIG1hcEJ1ZmZlclJhbmdlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZz
ZXQsIEdDR0xzaXplaXB0ciBsZW5ndGgsIEdDR0xiaXRmaWVsZCBhY2Nlc3MpIGZpbmFsOworICAg
IEdDR0xib29sZWFuIHVubWFwQnVmZmVyKEdDR0xlbnVtIHRhcmdldCkgZmluYWw7CisKKyAgICB2
b2lkIGJsaXRGcmFtZWJ1ZmZlcihHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50
IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dM
aW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmls
dGVyKSBmaW5hbDsKKyAgICB2b2lkIGZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgUGxhdGZvcm1HTE9iamVjdCB0ZXh0dXJlLCBHQ0dM
aW50IGxldmVsLCBHQ0dMaW50IGxheWVyKSBmaW5hbDsKKyAgICB2b2lkIGludmFsaWRhdGVGcmFt
ZWJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIGNvbnN0IFZlY3RvcjxHQ0dMZW51bT4mIGF0dGFjaG1l
bnRzKSBmaW5hbDsKKyAgICB2b2lkIGludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0
YXJnZXQsIGNvbnN0IFZlY3RvcjxHQ0dMZW51bT4mIGF0dGFjaG1lbnRzLCBHQ0dMaW50IHgsIEdD
R0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBmaW5hbDsKKyAgICB2
b2lkIHJlYWRCdWZmZXIoR0NHTGVudW0gc3JjKSBmaW5hbDsKKworICAgIC8vIGdldEludGVybmFs
Rm9ybWF0UGFyYW1ldGVyCisgICAgdm9pZCBnZXRJbnRlcm5hbGZvcm1hdGl2KEdDR0xlbnVtIHRh
cmdldCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTGludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0
b3JhZ2VNdWx0aXNhbXBsZShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBHQ0dM
ZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBm
aW5hbDsKKworICAgIHZvaWQgdGV4U3RvcmFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVp
IGxldmVscywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCkgZmluYWw7CisgICAgdm9pZCB0ZXhTdG9yYWdlM0QoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMc2l6ZWkgbGV2ZWxzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgpIGZpbmFsOworCisgICAgdm9p
ZCB0ZXhJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCBpbnRl
cm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkg
ZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdD
R0xpbnRwdHIgcGJvT2Zmc2V0KSBmaW5hbDsKKyAgICB2b2lkIHRleEltYWdlM0QoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIs
IEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgY29uc3Qgdm9pZCogcGl4ZWxzKSBmaW5h
bDsKKyAgICB2b2lkIHRleEltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBH
Q0dMaW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQs
IEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVu
dW0gdHlwZSwgY29uc3Qgdm9pZCogc3JjRGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0KSBmaW5hbDsK
KworICAgIHZvaWQgdGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWws
IEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBm
b3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgcGJvT2Zmc2V0KSBmaW5hbDsKKyAgICB2
b2lkIHRleFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50
IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBH
Q0dMZW51bSB0eXBlLCBjb25zdCB2b2lkKiBzcmNEYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQpIGZp
bmFsOworCisgICAgdm9pZCBjb3B5VGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xp
bnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZz
ZXQsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQpIGZpbmFsOworCisgICAgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdD
R0xzaXplaSBpbWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKKyAgICB2b2lkIGNv
bXByZXNzZWRUZXhJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVu
dW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NH
THNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgY29uc3Qgdm9pZCogc3JjRGF0YSwgR0NHTHVp
bnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGhPdmVycmlkZSkgZmluYWw7CisgICAgdm9p
ZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWws
IEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBm
b3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKKyAg
ICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBs
ZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xl
bnVtIGZvcm1hdCwgY29uc3Qgdm9pZCogc3JjRGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dM
dWludCBzcmNMZW5ndGhPdmVycmlkZSkgZmluYWw7CisKKyAgICBHQ0dMaW50IGdldEZyYWdEYXRh
TG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBTdHJpbmcmIG5hbWUpIGZp
bmFsOworCisgICAgdm9pZCB1bmlmb3JtMXVpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYw
KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0ydWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTHVpbnQg
djAsIEdDR0x1aW50IHYxKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0zdWkoR0NHTGludCBsb2Nh
dGlvbiwgR0NHTHVpbnQgdjAsIEdDR0x1aW50IHYxLCBHQ0dMdWludCB2MikgZmluYWw7CisgICAg
dm9pZCB1bmlmb3JtNHVpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYwLCBHQ0dMdWludCB2
MSwgR0NHTHVpbnQgdjIsIEdDR0x1aW50IHYzKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0xdWl2
KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0x1aW50KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZz
ZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtMnVpdihHQ0dM
aW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMdWludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBH
Q0dMdWludCBzcmNMZW5ndGgpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTN1aXYoR0NHTGludCBs
b2NhdGlvbiwgY29uc3QgR0NHTHVpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVp
bnQgc3JjTGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm00dWl2KEdDR0xpbnQgbG9jYXRp
b24sIGNvbnN0IEdDR0x1aW50KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNy
Y0xlbmd0aCkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4MngzZnYoR0NHTGludCBsb2Nh
dGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1
aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZv
cm1NYXRyaXgzeDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNv
bnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5n
dGgpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDJ4NGZ2KEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBz
cmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtTWF0
cml4NHgyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBH
Q0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSBm
aW5hbDsKKyAgICB2b2lkIHVuaWZvcm1NYXRyaXgzeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
Ym9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zm
c2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDR4
M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZs
b2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgZmluYWw7
CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJNGkoR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQgeCwgR0NH
TGludCB5LCBHQ0dMaW50IHosIEdDR0xpbnQgdykgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRy
aWJJNGl2KEdDR0x1aW50IGluZGV4LCBjb25zdCBHQ0dMaW50KiB2YWx1ZXMpIGZpbmFsOworICAg
IHZvaWQgdmVydGV4QXR0cmliSTR1aShHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgeCwgR0NHTHVp
bnQgeSwgR0NHTHVpbnQgeiwgR0NHTHVpbnQgdykgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRy
aWJJNHVpdihHQ0dMdWludCBpbmRleCwgY29uc3QgR0NHTHVpbnQqIHZhbHVlcykgZmluYWw7Cisg
ICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJUG9pbnRlcihHQ0dMdWludCBpbmRleCwgR0NHTGludCBzaXpl
LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgc3RyaWRlLCBHQ0dMaW50cHRyIG9mZnNldCkgZmlu
YWw7CisKKyAgICB2b2lkIGRyYXdSYW5nZUVsZW1lbnRzKEdDR0xlbnVtIG1vZGUsIEdDR0x1aW50
IHN0YXJ0LCBHQ0dMdWludCBlbmQsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NH
TGludHB0ciBvZmZzZXQpIGZpbmFsOworCisgICAgdm9pZCBkcmF3QnVmZmVycyhjb25zdCBWZWN0
b3I8R0NHTGVudW0+JiBidWZmZXJzKSBmaW5hbDsKKyAgICB2b2lkIGNsZWFyQnVmZmVyaXYoR0NH
TGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIGNvbnN0IEdDR0xpbnQqIHZhbHVlcywg
R0NHTHVpbnQgc3JjT2Zmc2V0KSBmaW5hbDsKKyAgICB2b2lkIGNsZWFyQnVmZmVydWl2KEdDR0xl
bnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBjb25zdCBHQ0dMdWludCogdmFsdWVzLCBH
Q0dMdWludCBzcmNPZmZzZXQpIGZpbmFsOworICAgIHZvaWQgY2xlYXJCdWZmZXJmdihHQ0dMZW51
bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgY29uc3QgR0NHTGZsb2F0KiB2YWx1ZXMsIEdD
R0x1aW50IHNyY09mZnNldCkgZmluYWw7CisgICAgdm9pZCBjbGVhckJ1ZmZlcmZpKEdDR0xlbnVt
IGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBHQ0dMZmxvYXQgZGVwdGgsIEdDR0xpbnQgc3Rl
bmNpbCkgZmluYWw7CisKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVF1ZXJ5KCkgZmluYWw7
CisgICAgdm9pZCBkZWxldGVRdWVyeShQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5KSBmaW5hbDsKKyAg
ICBHQ0dMYm9vbGVhbiBpc1F1ZXJ5KFBsYXRmb3JtR0xPYmplY3QgcXVlcnkpIGZpbmFsOworICAg
IHZvaWQgYmVnaW5RdWVyeShHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgcXVlcnkp
IGZpbmFsOworICAgIHZvaWQgZW5kUXVlcnkoR0NHTGVudW0gdGFyZ2V0KSBmaW5hbDsKKyAgICBQ
bGF0Zm9ybUdMT2JqZWN0IGdldFF1ZXJ5KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUp
IGZpbmFsOworICAgIC8vIGdldFF1ZXJ5UGFyYW1ldGVyCisgICAgdm9pZCBnbEdldFF1ZXJ5T2Jq
ZWN0dWl2KFBsYXRmb3JtR0xPYmplY3QgcXVlcnksIEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCog
dmFsdWUpIGZpbmFsOworCisgICAgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVTYW1wbGVyKCkgZmlu
YWw7CisgICAgdm9pZCBkZWxldGVTYW1wbGVyKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlcikgZmlu
YWw7CisgICAgR0NHTGJvb2xlYW4gaXNTYW1wbGVyKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlcikg
ZmluYWw7CisgICAgdm9pZCBiaW5kU2FtcGxlcihHQ0dMdWludCB1bml0LCBQbGF0Zm9ybUdMT2Jq
ZWN0IHNhbXBsZXIpIGZpbmFsOworICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcmkoUGxhdGZvcm1H
TE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCBwYXJhbSkgZmluYWw7Cisg
ICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVyZihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMZmxvYXQgcGFyYW0pIGZpbmFsOworICAgIC8vIGdldFNhbXBsZXJQYXJh
bWV0ZXIKKyAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJmdihQbGF0Zm9ybUdMT2JqZWN0IHNh
bXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQqIHZhbHVlKSBmaW5hbDsKKyAgICB2b2lk
IGdldFNhbXBsZXJQYXJhbWV0ZXJpdihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkgZmluYWw7CisKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IGZl
bmNlU3luYyhHQ0dMZW51bSBjb25kaXRpb24sIEdDR0xiaXRmaWVsZCBmbGFncykgZmluYWw7Cisg
ICAgR0NHTGJvb2xlYW4gaXNTeW5jKFBsYXRmb3JtR0xPYmplY3Qgc3luYykgZmluYWw7CisgICAg
dm9pZCBkZWxldGVTeW5jKFBsYXRmb3JtR0xPYmplY3Qgc3luYykgZmluYWw7CisgICAgR0NHTGVu
dW0gY2xpZW50V2FpdFN5bmMoUGxhdGZvcm1HTE9iamVjdCBzeW5jLCBHQ0dMYml0ZmllbGQgZmxh
Z3MsIEdDR0x1aW50NjQgdGltZW91dCkgZmluYWw7CisgICAgdm9pZCB3YWl0U3luYyhQbGF0Zm9y
bUdMT2JqZWN0IHN5bmMsIEdDR0xiaXRmaWVsZCBmbGFncywgR0NHTGludDY0IHRpbWVvdXQpIGZp
bmFsOworICAgIC8vIGdldFN5bmNQYXJhbWV0ZXIKKyAgICAvLyBGSVhNRSAtIHRoaXMgY2FuIGJl
IGltcGxlbWVudGVkIGF0IHRoZSBXZWJHTCBsZXZlbCBpZiB3ZSBzaWduYWwgdGhlIFdlYkdMU3lu
YyBvYmplY3QuCisgICAgdm9pZCBnZXRTeW5jaXYoUGxhdGZvcm1HTE9iamVjdCBzeW5jLCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xpbnQgKnZhbHVlKSBmaW5hbDsKKwor
ICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soKSBmaW5hbDsKKyAg
ICB2b2lkIGRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrKFBsYXRmb3JtR0xPYmplY3QgaWQpIGZpbmFs
OworICAgIEdDR0xib29sZWFuIGlzVHJhbnNmb3JtRmVlZGJhY2soUGxhdGZvcm1HTE9iamVjdCBp
ZCkgZmluYWw7CisgICAgdm9pZCBiaW5kVHJhbnNmb3JtRmVlZGJhY2soR0NHTGVudW0gdGFyZ2V0
LCBQbGF0Zm9ybUdMT2JqZWN0IGlkKSBmaW5hbDsKKyAgICB2b2lkIGJlZ2luVHJhbnNmb3JtRmVl
ZGJhY2soR0NHTGVudW0gcHJpbWl0aXZlTW9kZSkgZmluYWw7CisgICAgdm9pZCBlbmRUcmFuc2Zv
cm1GZWVkYmFjaygpIGZpbmFsOworICAgIHZvaWQgdHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyhQ
bGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3Rvcjxjb25zdCBTdHJpbmcmPiYgdmFy
eWluZ3MsIEdDR0xlbnVtIGJ1ZmZlck1vZGUpIGZpbmFsOworICAgIFBsYXRmb3JtR0xPYmplY3Qg
Z2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NH
THVpbnQgaW5kZXgpIGZpbmFsOworICAgIHZvaWQgcGF1c2VUcmFuc2Zvcm1GZWVkYmFjaygpIGZp
bmFsOworICAgIHZvaWQgcmVzdW1lVHJhbnNmb3JtRmVlZGJhY2soKSBmaW5hbDsKKworICAgIHZv
aWQgYmluZEJ1ZmZlckJhc2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgUGxhdGZv
cm1HTE9iamVjdCBidWZmZXIpIGZpbmFsOworICAgIHZvaWQgYmluZEJ1ZmZlclJhbmdlKEdDR0xl
bnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIFBsYXRmb3JtR0xPYmplY3QgYnVmZmVyLCBHQ0dM
aW50cHRyIG9mZnNldCwgR0NHTHNpemVpcHRyIHNpemUpIGZpbmFsOworICAgIC8vIGdldEluZGV4
ZWRQYXJhbWV0ZXIgLT4gdXNlIGdldFBhcmFtZXRlciBjYWxscyBhYm92ZS4KKyAgICBWZWN0b3I8
R0NHTHVpbnQ+IGdldFVuaWZvcm1JbmRpY2VzKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29u
c3QgVmVjdG9yPGNvbnN0IFN0cmluZyY+JiB1bmlmb3JtTmFtZXMpIGZpbmFsOworICAgIHZvaWQg
Z2V0QWN0aXZlVW5pZm9ybXMoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBWZWN0b3I8
R0NHTHVpbnQ+JiB1bmlmb3JtSW5kaWNlcywgR0NHTGVudW0gcG5hbWUsIFZlY3RvcjxHQ0dMaW50
PiYgcGFyYW1zKSBmaW5hbDsKKworICAgIEdDR0x1aW50IGdldFVuaWZvcm1CbG9ja0luZGV4KFBs
YXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgU3RyaW5nJiB1bmlmb3JtQmxvY2tOYW1lKSBm
aW5hbDsKKyAgICAvLyBnZXRBY3RpdmVVbmlmb3JtQmxvY2tQYXJhbWV0ZXIKKyAgICB2b2lkIGdl
dEFjdGl2ZVVuaWZvcm1CbG9ja2l2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQg
dW5pZm9ybUJsb2NrSW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFs
OworICAgIFN0cmluZyBnZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKFBsYXRmb3JtR0xPYmplY3Qg
cHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgpIGZpbmFsOworICAgIHZvaWQgdW5p
Zm9ybUJsb2NrQmluZGluZyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IHVuaWZv
cm1CbG9ja0luZGV4LCBHQ0dMdWludCB1bmlmb3JtQmxvY2tCaW5kaW5nKSBmaW5hbDsKKworICAg
IHZvaWQgdGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQg
aW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGlu
dCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBwYm9P
ZmZzZXQpIGZpbmFsOworICAgIHZvaWQgdGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xp
bnQgbGV2ZWwsIEdDR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlw
ZSwgY29uc3Qgdm9pZCogc3JjRGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0KSBmaW5hbDsKKworICAg
IHZvaWQgdGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xp
bnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBwYm9PZmZz
ZXQpIGZpbmFsOworICAgIHZvaWQgdGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xp
bnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgY29u
c3Qgdm9pZCogc3JjRGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0KSBmaW5hbDsKKworICAgIHZvaWQg
Y29tcHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dM
ZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBH
Q0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpIGZp
bmFsOworICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
aW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgY29uc3Qgdm9pZCogc3JjRGF0YSwgR0NHTHVp
bnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGhPdmVycmlkZSkgZmluYWw7CisKKyAgICB2
b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZl
bCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dM
aW50cHRyIG9mZnNldCkgZmluYWw7CisgICAgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChH
Q0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5
b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1h
dCwgY29uc3Qgdm9pZCogc3JjRGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNM
ZW5ndGhPdmVycmlkZSkgZmluYWw7CisKKyAgICB2b2lkIHVuaWZvcm0xZnYoR0NHTGludCBsb2Nh
dGlvbiwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50
IHNyY0xlbmd0aCkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtMmZ2KEdDR0xpbnQgbG9jYXRpb24s
IGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNM
ZW5ndGgpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTNmdihHQ0dMaW50IGxvY2F0aW9uLCBjb25z
dCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3Ro
KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm00ZnYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NH
TGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgZmlu
YWw7CisKKyAgICB2b2lkIHVuaWZvcm0xaXYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGlu
dCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFsOwor
ICAgIHZvaWQgdW5pZm9ybTJpdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMaW50KiBkYXRh
LCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgZmluYWw7CisgICAgdm9p
ZCB1bmlmb3JtM2l2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xpbnQqIGRhdGEsIEdDR0x1
aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZv
cm00aXYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGludCogZGF0YSwgR0NHTHVpbnQgc3Jj
T2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFsOworCisgICAgdm9pZCB1bmlmb3JtTWF0
cml4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NH
TGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgZmlu
YWw7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29s
ZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQs
IEdDR0x1aW50IHNyY0xlbmd0aCkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4NGZ2KEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBk
YXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgZmluYWw7CisKKyAg
ICB2b2lkIHJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50
cHRyIG9mZnNldCkgZmluYWw7CisgICAgdm9pZCByZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGlu
dCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwg
R0NHTGVudW0gdHlwZSwgY29uc3Qgdm9pZCogZHN0RGF0YSwgR0NHTHVpbnQgZHN0T2Zmc2V0KSBm
aW5hbDsKKworICAgIC8vIEhlbHBlciBtZXRob2RzLgogCiAgICAgdm9pZCBwYWludFRvQ2FudmFz
KGNvbnN0IHVuc2lnbmVkIGNoYXIqIGltYWdlUGl4ZWxzLCBjb25zdCBJbnRTaXplJiBpbWFnZVNp
emUsIGNvbnN0IEludFNpemUmIGNhbnZhc1NpemUsIEdyYXBoaWNzQ29udGV4dCYpOwogCkBAIC0z
OTAsNyArNTI3LDcgQEAgcHVibGljOgogICAgIGJvb2wgcGFpbnRDb21wb3NpdGVkUmVzdWx0c1Rv
Q2FudmFzKEltYWdlQnVmZmVyKik7CiAKICNpZiBVU0UoT1BFTkdMKSAmJiBFTkFCTEUoV0VCR0wy
KQotICAgIHZvaWQgcHJpbWl0aXZlUmVzdGFydEluZGV4KEdDR0x1aW50KSBvdmVycmlkZTsKKyAg
ICB2b2lkIHByaW1pdGl2ZVJlc3RhcnRJbmRleChHQ0dMdWludCkgZmluYWw7CiAjZW5kaWYKIAog
I2lmIFBMQVRGT1JNKENPQ09BKQpAQCAtNDE0LDE5ICs1NTEsMTkgQEAgcHVibGljOgogICAgIEdy
YXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlIHBvd2VyUHJlZmVyZW5jZVVzZWRGb3JDcmVh
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcG93ZXJQcmVmZXJlbmNlVXNlZEZvckNyZWF0aW9uOyB9
CiAKICAgICAvLyBTdXBwb3J0IGZvciBidWZmZXIgY3JlYXRpb24gYW5kIGRlbGV0aW9uCi0gICAg
UGxhdGZvcm1HTE9iamVjdCBjcmVhdGVCdWZmZXIoKSBvdmVycmlkZTsKLSAgICBQbGF0Zm9ybUdM
T2JqZWN0IGNyZWF0ZUZyYW1lYnVmZmVyKCkgb3ZlcnJpZGU7Ci0gICAgUGxhdGZvcm1HTE9iamVj
dCBjcmVhdGVQcm9ncmFtKCkgb3ZlcnJpZGU7Ci0gICAgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVS
ZW5kZXJidWZmZXIoKSBvdmVycmlkZTsKLSAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVNoYWRl
cihHQ0dMZW51bSkgb3ZlcnJpZGU7Ci0gICAgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVUZXh0dXJl
KCkgb3ZlcnJpZGU7Ci0KLSAgICB2b2lkIGRlbGV0ZUJ1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0KSBv
dmVycmlkZTsKLSAgICB2b2lkIGRlbGV0ZUZyYW1lYnVmZmVyKFBsYXRmb3JtR0xPYmplY3QpIG92
ZXJyaWRlOwotICAgIHZvaWQgZGVsZXRlUHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlk
ZTsKLSAgICB2b2lkIGRlbGV0ZVJlbmRlcmJ1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlk
ZTsKLSAgICB2b2lkIGRlbGV0ZVNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKLSAg
ICB2b2lkIGRlbGV0ZVRleHR1cmUoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CisgICAgUGxh
dGZvcm1HTE9iamVjdCBjcmVhdGVCdWZmZXIoKSBmaW5hbDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0
IGNyZWF0ZUZyYW1lYnVmZmVyKCkgZmluYWw7CisgICAgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVQ
cm9ncmFtKCkgZmluYWw7CisgICAgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVSZW5kZXJidWZmZXIo
KSBmaW5hbDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVNoYWRlcihHQ0dMZW51bSkgZmlu
YWw7CisgICAgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVUZXh0dXJlKCkgZmluYWw7CisKKyAgICB2
b2lkIGRlbGV0ZUJ1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0KSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0
ZUZyYW1lYnVmZmVyKFBsYXRmb3JtR0xPYmplY3QpIGZpbmFsOworICAgIHZvaWQgZGVsZXRlUHJv
Z3JhbShQbGF0Zm9ybUdMT2JqZWN0KSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0ZVJlbmRlcmJ1ZmZl
cihQbGF0Zm9ybUdMT2JqZWN0KSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0ZVNoYWRlcihQbGF0Zm9y
bUdMT2JqZWN0KSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0ZVRleHR1cmUoUGxhdGZvcm1HTE9iamVj
dCkgZmluYWw7CiAKICAgICAvLyBTeW50aGVzaXplcyBhbiBPcGVuR0wgZXJyb3Igd2hpY2ggd2ls
bCBiZSByZXR1cm5lZCBmcm9tIGEKICAgICAvLyBsYXRlciBjYWxsIHRvIGdldEVycm9yLiBUaGlz
IGlzIHVzZWQgdG8gZW11bGF0ZSBPcGVuR0wgRVMKQEAgLTQ0Niw3ICs1ODMsNyBAQCBwdWJsaWM6
CiAgICAgLy8gYWxsIG1ldGhvZHMgaXQgY29udGFpbnMgbWF5IG5lY2Vzc2FyaWx5IGJlIHN1cHBv
cnRlZCBvbiB0aGUKICAgICAvLyBjdXJyZW50IGhhcmR3YXJlLiBNdXN0IGNhbGwgRXh0ZW5zaW9u
c0dMOjpzdXBwb3J0cygpIHRvCiAgICAgLy8gZGV0ZXJtaW5lIHRoaXMuCi0gICAgRXh0ZW5zaW9u
c0dMJiBnZXRFeHRlbnNpb25zKCkgb3ZlcnJpZGU7CisgICAgRXh0ZW5zaW9uc0dMJiBnZXRFeHRl
bnNpb25zKCkgZmluYWw7CiAKICAgICBJbnRTaXplIGdldEludGVybmFsRnJhbWVidWZmZXJTaXpl
KCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24u
Y3BwCmluZGV4IDQyMDNmMGNhN2VmOGFkMmJiYjlmOWY1NzRkMGEwNDM5MTdhYzc2ZDUuLmNlM2Ux
YTAyZjJhZDkwNWVjNzRjMTJhNzdkYTUyMjkyMzVkNjFmY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENv
bW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcApAQCAtNTU4LDEwMiArNTU4LDYgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnRwdHIgb2Zmc2V0LAogICAgIDo6Z2xCdWZmZXJTdWJEYXRhKHRhcmdldCwgb2Zmc2V0
LCBzaXplLCBkYXRhKTsKIH0KIAotI2lmIFVTRShPUEVOR0xfMykgfHwgVVNFKE9QRU5HTF9FU18z
KQotdm9pZCogR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om1hcEJ1ZmZlclJhbmdlKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xzaXplaXB0ciBsZW5ndGgsIEdDR0xiaXRm
aWVsZCBhY2Nlc3MpCi17Ci0gICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgcmV0dXJuIDo6
Z2xNYXBCdWZmZXJSYW5nZSh0YXJnZXQsIG9mZnNldCwgbGVuZ3RoLCBhY2Nlc3MpOwotfQotCi1H
Q0dMYm9vbGVhbiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5tYXBCdWZmZXIoR0NHTGVudW0g
dGFyZ2V0KQotewotICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIHJldHVybiA6OmdsVW5t
YXBCdWZmZXIodGFyZ2V0KTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y29w
eUJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gcmVhZFRhcmdldCwgR0NHTGVudW0gd3JpdGVUYXJnZXQs
IEdDR0xpbnRwdHIgcmVhZE9mZnNldCwgR0NHTGludHB0ciB3cml0ZU9mZnNldCwgR0NHTHNpemVp
cHRyIHNpemUpCi17Ci0gICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbENvcHlCdWZm
ZXJTdWJEYXRhKHJlYWRUYXJnZXQsIHdyaXRlVGFyZ2V0LCByZWFkT2Zmc2V0LCB3cml0ZU9mZnNl
dCwgc2l6ZSk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVybmFs
Zm9ybWF0aXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMaW50KiBwYXJhbXMpCi17Ci0jaWYgVVNF
KE9QRU5HTF9FUykKLSAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6OmdsR2V0SW50ZXJu
YWxmb3JtYXRpdih0YXJnZXQsIGludGVybmFsZm9ybWF0LCBwbmFtZSwgYnVmU2l6ZSwgcGFyYW1z
KTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHRhcmdldCk7Ci0gICAgVU5VU0VEX1BBUkFNKGlu
dGVybmFsZm9ybWF0KTsKLSAgICBVTlVTRURfUEFSQU0ocG5hbWUpOwotICAgIFVOVVNFRF9QQVJB
TShidWZTaXplKTsKLSAgICBVTlVTRURfUEFSQU0ocGFyYW1zKTsKLSNlbmRpZgotfQotCi12b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3Jt
YXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKLXsKLSAgICBtYWtlQ29udGV4
dEN1cnJlbnQoKTsKLSAgICA6OmdsUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKHRhcmdl
dCwgc2FtcGxlcywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOwotfQotCi12b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhTdG9yYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
c2l6ZWkgbGV2ZWxzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0KQotewotICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xU
ZXhTdG9yYWdlMkQodGFyZ2V0LCBsZXZlbHMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0
KTsKLSAgICBtX3N0YXRlLnRleHR1cmVTZWVkQ291bnQuYWRkKG1fc3RhdGUuY3VycmVudEJvdW5k
VGV4dHVyZSgpKTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4U3RvcmFn
ZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIGxldmVscywgR0NHTGVudW0gaW50ZXJuYWxm
b3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRo
KQotewotICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xUZXhTdG9yYWdlM0QodGFy
Z2V0LCBsZXZlbHMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCk7Ci0gICAg
bV9zdGF0ZS50ZXh0dXJlU2VlZENvdW50LmFkZChtX3N0YXRlLmN1cnJlbnRCb3VuZFRleHR1cmUo
KSk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1z
KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9yPEdDR0x1aW50PiYgdW5pZm9y
bUluZGljZXMsIEdDR0xlbnVtIHBuYW1lLCBWZWN0b3I8R0NHTGludD4mIHBhcmFtcykKLXsKLSAg
ICBBU1NFUlQocHJvZ3JhbSk7Ci0gICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0KLSAgICA6Omds
R2V0QWN0aXZlVW5pZm9ybXNpdihwcm9ncmFtLCB1bmlmb3JtSW5kaWNlcy5zaXplKCksIHVuaWZv
cm1JbmRpY2VzLmRhdGEoKSwgcG5hbWUsIHBhcmFtcy5kYXRhKCkpOwotfQotI2Vsc2UKLXZvaWQq
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjptYXBCdWZmZXJSYW5nZShHQ0dMZW51bSwgR0NHTGlu
dHB0ciwgR0NHTHNpemVpcHRyLCBHQ0dMYml0ZmllbGQpCi17Ci0gICAgcmV0dXJuIG51bGxwdHI7
Ci19Ci0KLUdDR0xib29sZWFuIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bm1hcEJ1ZmZlcihH
Q0dMZW51bSkKLXsKLSAgICByZXR1cm4gMDsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Y29weUJ1ZmZlclN1YkRhdGEoR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMaW50cHRyLCBH
Q0dMaW50cHRyLCBHQ0dMc2l6ZWlwdHIpCi17Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmdldEludGVybmFsZm9ybWF0aXYoR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMZW51bSwg
R0NHTHNpemVpLCBHQ0dMaW50KikKLXsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdD
R0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSkKLXsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dGV4U3RvcmFnZTJEKEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xlbnVtLCBH
Q0dMc2l6ZWksIEdDR0xzaXplaSkKLXsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6dGV4U3RvcmFnZTNEKEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xlbnVtLCBHQ0dMc2l6ZWks
IEdDR0xzaXplaSwgR0NHTHNpemVpKQotewotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpnZXRBY3RpdmVVbmlmb3JtcyhQbGF0Zm9ybUdMT2JqZWN0LCBjb25zdCBWZWN0b3I8R0NH
THVpbnQ+JiwgR0NHTGVudW0sIFZlY3RvcjxHQ0dMaW50PiYpCi17Ci19Ci0jZW5kaWYgLy8gVVNF
KE9QRU5HTF8zKSB8fCBVU0UoT1BFTkdMX0VTXzMpCi0KIEdDR0xlbnVtIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpjaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdDR0xlbnVtIHRhcmdldCkKIHsKICAg
ICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKQEAgLTIxMTMsNiArMjAxNywxMDA1IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnByaW1pdGl2ZVJlc3RhcnRJbmRleChHQ0dMdWludCBpbmRl
eCkKIH0KICNlbmRpZgogCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpidWZmZXJEYXRh
KEdDR0xlbnVtIHRhcmdldCwgY29uc3Qgdm9pZCogZGF0YSwgR0NHTGVudW0gdXNhZ2UsIEdDR0x1
aW50IHNyY09mZnNldCwgR0NHTHVpbnQgbGVuZ3RoKQoreworICAgIFVOVVNFRF9QQVJBTSh0YXJn
ZXQpOworICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKKyAgICBVTlVTRURfUEFSQU0odXNhZ2UpOwor
ICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOworICAgIFVOVVNFRF9QQVJBTShsZW5ndGgpOwor
fQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpidWZmZXJTdWJEYXRhKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludHB0ciBkc3RCeXRlT2Zmc2V0LCBjb25zdCB2b2lkKiBzcmNEYXRhLCBH
Q0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IGxlbmd0aCkKK3sKKyAgICBVTlVTRURfUEFSQU0o
dGFyZ2V0KTsKKyAgICBVTlVTRURfUEFSQU0oZHN0Qnl0ZU9mZnNldCk7CisgICAgVU5VU0VEX1BB
UkFNKHNyY0RhdGEpOworICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOworICAgIFVOVVNFRF9Q
QVJBTShsZW5ndGgpOworfQorCisjaWYgVVNFKE9QRU5HTF8zKSB8fCBVU0UoT1BFTkdMX0VTXzMp
Cit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjb3B5QnVmZmVyU3ViRGF0YShHQ0dMZW51
bSByZWFkVGFyZ2V0LCBHQ0dMZW51bSB3cml0ZVRhcmdldCwgR0NHTGludHB0ciByZWFkT2Zmc2V0
LCBHQ0dMaW50cHRyIHdyaXRlT2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgc2l6ZSkKK3sKKyAgICBtYWtl
Q29udGV4dEN1cnJlbnQoKTsKKyAgICA6OmdsQ29weUJ1ZmZlclN1YkRhdGEocmVhZFRhcmdldCwg
d3JpdGVUYXJnZXQsIHJlYWRPZmZzZXQsIHdyaXRlT2Zmc2V0LCBzaXplKTsKK30KKyNlbHNlCit2
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjb3B5QnVmZmVyU3ViRGF0YShHQ0dMZW51bSwg
R0NHTGVudW0sIEdDR0xpbnRwdHIsIEdDR0xpbnRwdHIsIEdDR0xzaXplaXB0cikKK3sKK30KKyNl
bmRpZgorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRCdWZmZXJTdWJEYXRhKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBzcmNCeXRlT2Zmc2V0LCBjb25zdCB2b2lkKiBkc3RE
YXRhLCBHQ0dMdWludCBkc3RPZmZzZXQsIEdDR0x1aW50IGxlbmd0aCkKK3sKKyAgICBVTlVTRURf
UEFSQU0odGFyZ2V0KTsKKyAgICBVTlVTRURfUEFSQU0oc3JjQnl0ZU9mZnNldCk7CisgICAgVU5V
U0VEX1BBUkFNKGRzdERhdGEpOworICAgIFVOVVNFRF9QQVJBTShkc3RPZmZzZXQpOworICAgIFVO
VVNFRF9QQVJBTShsZW5ndGgpOworfQorCisjaWYgVVNFKE9QRU5HTF8zKSB8fCBVU0UoT1BFTkdM
X0VTXzMpCit2b2lkKiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6bWFwQnVmZmVyUmFuZ2UoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVpcHRyIGxlbmd0aCwgR0NH
TGJpdGZpZWxkIGFjY2VzcykKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICByZXR1
cm4gOjpnbE1hcEJ1ZmZlclJhbmdlKHRhcmdldCwgb2Zmc2V0LCBsZW5ndGgsIGFjY2Vzcyk7Cit9
CisKK0dDR0xib29sZWFuIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bm1hcEJ1ZmZlcihHQ0dM
ZW51bSB0YXJnZXQpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgcmV0dXJuIDo6
Z2xVbm1hcEJ1ZmZlcih0YXJnZXQpOworfQorI2Vsc2UKK3ZvaWQqIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjptYXBCdWZmZXJSYW5nZShHQ0dMZW51bSwgR0NHTGludHB0ciwgR0NHTHNpemVpcHRy
LCBHQ0dMYml0ZmllbGQpCit7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0dDR0xib29sZWFu
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bm1hcEJ1ZmZlcihHQ0dMZW51bSkKK3sKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisjZW5kaWYKKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
YmxpdEZyYW1lYnVmZmVyKEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3Jj
WDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQg
ZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIp
Cit7CisgICAgVU5VU0VEX1BBUkFNKHNyY1gwKTsKKyAgICBVTlVTRURfUEFSQU0oc3JjWTApOwor
ICAgIFVOVVNFRF9QQVJBTShzcmNYMSk7CisgICAgVU5VU0VEX1BBUkFNKHNyY1kxKTsKKyAgICBV
TlVTRURfUEFSQU0oZHN0WDApOworICAgIFVOVVNFRF9QQVJBTShkc3RZMCk7CisgICAgVU5VU0VE
X1BBUkFNKGRzdFgxKTsKKyAgICBVTlVTRURfUEFSQU0oZHN0WTEpOworICAgIFVOVVNFRF9QQVJB
TShtYXNrKTsKKyAgICBVTlVTRURfUEFSQU0oZmlsdGVyKTsKK30KKwordm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6ZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBhdHRhY2htZW50LCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xpbnQgbGV2
ZWwsIEdDR0xpbnQgbGF5ZXIpCit7CisgICAgVU5VU0VEX1BBUkFNKHRhcmdldCk7CisgICAgVU5V
U0VEX1BBUkFNKGF0dGFjaG1lbnQpOworICAgIFVOVVNFRF9QQVJBTSh0ZXh0dXJlKTsKKyAgICBV
TlVTRURfUEFSQU0obGV2ZWwpOworICAgIFVOVVNFRF9QQVJBTShsYXllcik7Cit9CisKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmludmFsaWRhdGVGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0
YXJnZXQsIGNvbnN0IFZlY3RvcjxHQ0dMZW51bT4mIGF0dGFjaG1lbnRzKQoreworICAgIFVOVVNF
RF9QQVJBTSh0YXJnZXQpOworICAgIFVOVVNFRF9QQVJBTShhdHRhY2htZW50cyk7Cit9CisKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcihHQ0dM
ZW51bSB0YXJnZXQsIGNvbnN0IFZlY3RvcjxHQ0dMZW51bT4mIGF0dGFjaG1lbnRzLCBHQ0dMaW50
IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQoreworICAg
IFVOVVNFRF9QQVJBTSh0YXJnZXQpOworICAgIFVOVVNFRF9QQVJBTShhdHRhY2htZW50cyk7Cisg
ICAgVU5VU0VEX1BBUkFNKHgpOworICAgIFVOVVNFRF9QQVJBTSh5KTsKKyAgICBVTlVTRURfUEFS
QU0od2lkdGgpOworICAgIFVOVVNFRF9QQVJBTShoZWlnaHQpOworfQorCit2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpyZWFkQnVmZmVyKEdDR0xlbnVtIHNyYykKK3sKKyAgICBVTlVTRURf
UEFSQU0oc3JjKTsKK30KKworI2lmIFVTRShPUEVOR0xfMykgfHwgVVNFKE9QRU5HTF9FU18zKQor
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0SW50ZXJuYWxmb3JtYXRpdihHQ0dMZW51
bSB0YXJnZXQsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xpbnQqIHBhcmFtcykKK3sKKyNpZiBVU0UoT1BFTkdMX0VTKQorICAg
IG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIDo6Z2xHZXRJbnRlcm5hbGZvcm1hdGl2KHRhcmdl
dCwgaW50ZXJuYWxmb3JtYXQsIHBuYW1lLCBidWZTaXplLCBwYXJhbXMpOworI2Vsc2UKKyAgICBV
TlVTRURfUEFSQU0odGFyZ2V0KTsKKyAgICBVTlVTRURfUEFSQU0oaW50ZXJuYWxmb3JtYXQpOwor
ICAgIFVOVVNFRF9QQVJBTShwbmFtZSk7CisgICAgVU5VU0VEX1BBUkFNKGJ1ZlNpemUpOworICAg
IFVOVVNFRF9QQVJBTShwYXJhbXMpOworI2VuZGlmCit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xzaXplaSBzYW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAg
IDo6Z2xSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodGFyZ2V0LCBzYW1wbGVzLCBpbnRl
cm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnRleFN0b3JhZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBsZXZlbHMsIEdD
R0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQp
Cit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgOjpnbFRleFN0b3JhZ2UyRCh0YXJn
ZXQsIGxldmVscywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOworICAgIG1fc3RhdGUu
dGV4dHVyZVNlZWRDb3VudC5hZGQobV9zdGF0ZS5jdXJyZW50Qm91bmRUZXh0dXJlKCkpOworfQor
Cit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhTdG9yYWdlM0QoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMc2l6ZWkgbGV2ZWxzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVp
IHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgpCit7CisgICAgbWFrZUNv
bnRleHRDdXJyZW50KCk7CisgICAgOjpnbFRleFN0b3JhZ2UzRCh0YXJnZXQsIGxldmVscywgaW50
ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoKTsKKyAgICBtX3N0YXRlLnRleHR1cmVT
ZWVkQ291bnQuYWRkKG1fc3RhdGUuY3VycmVudEJvdW5kVGV4dHVyZSgpKTsKK30KKyNlbHNlCit2
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlcm5hbGZvcm1hdGl2KEdDR0xlbnVt
LCBHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTGludCopCit7Cit9CisKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZShH
Q0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkpCit7Cit9
CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRleFN0b3JhZ2UyRChHQ0dMZW51bSwg
R0NHTHNpemVpLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkpCit7Cit9CisKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRleFN0b3JhZ2UzRChHQ0dMZW51bSwgR0NHTHNpemVp
LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSkKK3sKK30KKyNlbmRp
ZgorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhJbWFnZTNEKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBH
Q0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgcGJvT2Zmc2V0KQorewor
ICAgIFVOVVNFRF9QQVJBTSh0YXJnZXQpOworICAgIFVOVVNFRF9QQVJBTShsZXZlbCk7CisgICAg
VU5VU0VEX1BBUkFNKGludGVybmFsZm9ybWF0KTsKKyAgICBVTlVTRURfUEFSQU0od2lkdGgpOwor
ICAgIFVOVVNFRF9QQVJBTShoZWlnaHQpOworICAgIFVOVVNFRF9QQVJBTShkZXB0aCk7CisgICAg
VU5VU0VEX1BBUkFNKGJvcmRlcik7CisgICAgVU5VU0VEX1BBUkFNKGZvcm1hdCk7CisgICAgVU5V
U0VEX1BBUkFNKHR5cGUpOworICAgIFVOVVNFRF9QQVJBTShwYm9PZmZzZXQpOworfQorCit2b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGludCBsZXZlbCwgR0NHTGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBm
b3JtYXQsIEdDR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQqIHBpeGVscykKK3sKKyAgICBVTlVTRURf
UEFSQU0odGFyZ2V0KTsKKyAgICBVTlVTRURfUEFSQU0obGV2ZWwpOworICAgIFVOVVNFRF9QQVJB
TShpbnRlcm5hbGZvcm1hdCk7CisgICAgVU5VU0VEX1BBUkFNKHdpZHRoKTsKKyAgICBVTlVTRURf
UEFSQU0oaGVpZ2h0KTsKKyAgICBVTlVTRURfUEFSQU0oZGVwdGgpOworICAgIFVOVVNFRF9QQVJB
TShib3JkZXIpOworICAgIFVOVVNFRF9QQVJBTShmb3JtYXQpOworICAgIFVOVVNFRF9QQVJBTSh0
eXBlKTsKKyAgICBVTlVTRURfUEFSQU0ocGl4ZWxzKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdD
R0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCBjb25zdCB2b2lkKiBzcmNEYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQpCit7CisgICAg
VU5VU0VEX1BBUkFNKHRhcmdldCk7CisgICAgVU5VU0VEX1BBUkFNKGxldmVsKTsKKyAgICBVTlVT
RURfUEFSQU0oaW50ZXJuYWxmb3JtYXQpOworICAgIFVOVVNFRF9QQVJBTSh3aWR0aCk7CisgICAg
VU5VU0VEX1BBUkFNKGhlaWdodCk7CisgICAgVU5VU0VEX1BBUkFNKGRlcHRoKTsKKyAgICBVTlVT
RURfUEFSQU0oYm9yZGVyKTsKKyAgICBVTlVTRURfUEFSQU0oZm9ybWF0KTsKKyAgICBVTlVTRURf
UEFSQU0odHlwZSk7CisgICAgVU5VU0VEX1BBUkFNKHNyY0RhdGEpOworICAgIFVOVVNFRF9QQVJB
TShzcmNPZmZzZXQpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhTdWJJ
bWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBH
Q0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlw
ZSwgR0NHTGludHB0ciBwYm9PZmZzZXQpCit7CisgICAgVU5VU0VEX1BBUkFNKHRhcmdldCk7Cisg
ICAgVU5VU0VEX1BBUkFNKGxldmVsKTsKKyAgICBVTlVTRURfUEFSQU0oeG9mZnNldCk7CisgICAg
VU5VU0VEX1BBUkFNKHlvZmZzZXQpOworICAgIFVOVVNFRF9QQVJBTSh6b2Zmc2V0KTsKKyAgICBV
TlVTRURfUEFSQU0od2lkdGgpOworICAgIFVOVVNFRF9QQVJBTShoZWlnaHQpOworICAgIFVOVVNF
RF9QQVJBTShkZXB0aCk7CisgICAgVU5VU0VEX1BBUkFNKGZvcm1hdCk7CisgICAgVU5VU0VEX1BB
UkFNKHR5cGUpOworICAgIFVOVVNFRF9QQVJBTShwYm9PZmZzZXQpOworfQorCit2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNl
dCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdD
R0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgY29uc3Qgdm9pZCogc3JjRGF0YSwgR0NHTHVp
bnQgc3JjT2Zmc2V0KQoreworICAgIFVOVVNFRF9QQVJBTSh0YXJnZXQpOworICAgIFVOVVNFRF9Q
QVJBTShsZXZlbCk7CisgICAgVU5VU0VEX1BBUkFNKHhvZmZzZXQpOworICAgIFVOVVNFRF9QQVJB
TSh5b2Zmc2V0KTsKKyAgICBVTlVTRURfUEFSQU0oem9mZnNldCk7CisgICAgVU5VU0VEX1BBUkFN
KHdpZHRoKTsKKyAgICBVTlVTRURfUEFSQU0oaGVpZ2h0KTsKKyAgICBVTlVTRURfUEFSQU0oZGVw
dGgpOworICAgIFVOVVNFRF9QQVJBTShmb3JtYXQpOworICAgIFVOVVNFRF9QQVJBTSh0eXBlKTsK
KyAgICBVTlVTRURfUEFSQU0oc3JjRGF0YSk7CisgICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7
Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNvcHlUZXhTdWJJbWFnZTNEKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlv
ZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKK3sKKyAgICBVTlVTRURfUEFSQU0odGFyZ2V0KTsKKyAg
ICBVTlVTRURfUEFSQU0obGV2ZWwpOworICAgIFVOVVNFRF9QQVJBTSh4b2Zmc2V0KTsKKyAgICBV
TlVTRURfUEFSQU0oeW9mZnNldCk7CisgICAgVU5VU0VEX1BBUkFNKHpvZmZzZXQpOworICAgIFVO
VVNFRF9QQVJBTSh4KTsKKyAgICBVTlVTRURfUEFSQU0oeSk7CisgICAgVU5VU0VEX1BBUkFNKHdp
ZHRoKTsKKyAgICBVTlVTRURfUEFSQU0oaGVpZ2h0KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Y29tcHJlc3NlZFRleEltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1h
Z2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICBVTlVTRURfUEFSQU0odGFyZ2V0KTsK
KyAgICBVTlVTRURfUEFSQU0obGV2ZWwpOworICAgIFVOVVNFRF9QQVJBTShpbnRlcm5hbGZvcm1h
dCk7CisgICAgVU5VU0VEX1BBUkFNKHdpZHRoKTsKKyAgICBVTlVTRURfUEFSQU0oaGVpZ2h0KTsK
KyAgICBVTlVTRURfUEFSQU0oZGVwdGgpOworICAgIFVOVVNFRF9QQVJBTShib3JkZXIpOworICAg
IFVOVVNFRF9QQVJBTShpbWFnZVNpemUpOworICAgIFVOVVNFRF9QQVJBTShvZmZzZXQpOworfQor
Cit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjb21wcmVzc2VkVGV4SW1hZ2UzRChHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dM
c2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBi
b3JkZXIsIGNvbnN0IHZvaWQqIHNyY0RhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQg
c3JjTGVuZ3RoT3ZlcnJpZGUpCit7CisgICAgVU5VU0VEX1BBUkFNKHRhcmdldCk7CisgICAgVU5V
U0VEX1BBUkFNKGxldmVsKTsKKyAgICBVTlVTRURfUEFSQU0oaW50ZXJuYWxmb3JtYXQpOworICAg
IFVOVVNFRF9QQVJBTSh3aWR0aCk7CisgICAgVU5VU0VEX1BBUkFNKGhlaWdodCk7CisgICAgVU5V
U0VEX1BBUkFNKGRlcHRoKTsKKyAgICBVTlVTRURfUEFSQU0oYm9yZGVyKTsKKyAgICBVTlVTRURf
UEFSQU0oc3JjRGF0YSk7CisgICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7CisgICAgVU5VU0VE
X1BBUkFNKHNyY0xlbmd0aE92ZXJyaWRlKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Y29tcHJlc3NlZFRleFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxl
dmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVu
dW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkKK3sKKyAg
ICBVTlVTRURfUEFSQU0odGFyZ2V0KTsKKyAgICBVTlVTRURfUEFSQU0obGV2ZWwpOworICAgIFVO
VVNFRF9QQVJBTSh4b2Zmc2V0KTsKKyAgICBVTlVTRURfUEFSQU0oeW9mZnNldCk7CisgICAgVU5V
U0VEX1BBUkFNKHpvZmZzZXQpOworICAgIFVOVVNFRF9QQVJBTSh3aWR0aCk7CisgICAgVU5VU0VE
X1BBUkFNKGhlaWdodCk7CisgICAgVU5VU0VEX1BBUkFNKGRlcHRoKTsKKyAgICBVTlVTRURfUEFS
QU0oZm9ybWF0KTsKKyAgICBVTlVTRURfUEFSQU0oaW1hZ2VTaXplKTsKKyAgICBVTlVTRURfUEFS
QU0ob2Zmc2V0KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y29tcHJlc3Nl
ZFRleFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhv
ZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBjb25z
dCB2b2lkKiBzcmNEYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aE92
ZXJyaWRlKQoreworICAgIFVOVVNFRF9QQVJBTSh0YXJnZXQpOworICAgIFVOVVNFRF9QQVJBTShs
ZXZlbCk7CisgICAgVU5VU0VEX1BBUkFNKHhvZmZzZXQpOworICAgIFVOVVNFRF9QQVJBTSh5b2Zm
c2V0KTsKKyAgICBVTlVTRURfUEFSQU0oem9mZnNldCk7CisgICAgVU5VU0VEX1BBUkFNKHdpZHRo
KTsKKyAgICBVTlVTRURfUEFSQU0oaGVpZ2h0KTsKKyAgICBVTlVTRURfUEFSQU0oZGVwdGgpOwor
ICAgIFVOVVNFRF9QQVJBTShmb3JtYXQpOworICAgIFVOVVNFRF9QQVJBTShzcmNEYXRhKTsKKyAg
ICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsKKyAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoT3Zl
cnJpZGUpOworfQorCitHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRGcmFnRGF0
YUxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgU3RyaW5nJiBuYW1lKQor
eworICAgIFVOVVNFRF9QQVJBTShwcm9ncmFtKTsKKyAgICBVTlVTRURfUEFSQU0obmFtZSk7CisK
KyAgICByZXR1cm4gMDsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9y
bTF1aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCB2MCkKK3sKKyAgICBVTlVTRURfUEFSQU0o
bG9jYXRpb24pOworICAgIFVOVVNFRF9QQVJBTSh2MCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnVuaWZvcm0ydWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTHVpbnQgdjAsIEdD
R0x1aW50IHYxKQoreworICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7CisgICAgVU5VU0VEX1BB
UkFNKHYwKTsKKyAgICBVTlVTRURfUEFSQU0odjEpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjp1bmlmb3JtM3VpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYwLCBHQ0dM
dWludCB2MSwgR0NHTHVpbnQgdjIpCit7CisgICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKKyAg
ICBVTlVTRURfUEFSQU0odjApOworICAgIFVOVVNFRF9QQVJBTSh2MSk7CisgICAgVU5VU0VEX1BB
UkFNKHYyKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTR1aShH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCB2MCwgR0NHTHVpbnQgdjEsIEdDR0x1aW50IHYyLCBH
Q0dMdWludCB2MykKK3sKKyAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOworICAgIFVOVVNFRF9Q
QVJBTSh2MCk7CisgICAgVU5VU0VEX1BBUkFNKHYxKTsKKyAgICBVTlVTRURfUEFSQU0odjIpOwor
ICAgIFVOVVNFRF9QQVJBTSh2Myk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnVuaWZvcm0xdWl2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0x1aW50KiBkYXRhLCBHQ0dM
dWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKK3sKKyAgICBVTlVTRURfUEFSQU0o
bG9jYXRpb24pOworICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKKyAgICBVTlVTRURfUEFSQU0oc3Jj
T2Zmc2V0KTsKKyAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsKK30KKwordm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTJ1aXYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NH
THVpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQorewor
ICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7CisgICAgVU5VU0VEX1BBUkFNKGRhdGEpOworICAg
IFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOworICAgIFVOVVNFRF9QQVJBTShzcmNMZW5ndGgpOwor
fQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtM3VpdihHQ0dMaW50IGxv
Y2F0aW9uLCBjb25zdCBHQ0dMdWludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWlu
dCBzcmNMZW5ndGgpCit7CisgICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKKyAgICBVTlVTRURf
UEFSQU0oZGF0YSk7CisgICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7CisgICAgVU5VU0VEX1BB
UkFNKHNyY0xlbmd0aCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZv
cm00dWl2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0x1aW50KiBkYXRhLCBHQ0dMdWludCBz
cmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKK3sKKyAgICBVTlVTRURfUEFSQU0obG9jYXRp
b24pOworICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKKyAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0
KTsKKyAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDJ4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29s
ZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQs
IEdDR0x1aW50IHNyY0xlbmd0aCkKK3sKKyAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOworICAg
IFVOVVNFRF9QQVJBTSh0cmFuc3Bvc2UpOworICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKKyAgICBV
TlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsKKyAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsKK30K
Kwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDN4MmZ2KEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRh
LCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKK3sKKyAgICBVTlVTRURf
UEFSQU0obG9jYXRpb24pOworICAgIFVOVVNFRF9QQVJBTSh0cmFuc3Bvc2UpOworICAgIFVOVVNF
RF9QQVJBTShkYXRhKTsKKyAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsKKyAgICBVTlVTRURf
UEFSQU0oc3JjTGVuZ3RoKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5p
Zm9ybU1hdHJpeDJ4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwg
Y29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xl
bmd0aCkKK3sKKyAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOworICAgIFVOVVNFRF9QQVJBTSh0
cmFuc3Bvc2UpOworICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKKyAgICBVTlVTRURfUEFSQU0oc3Jj
T2Zmc2V0KTsKKyAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsKK30KKwordm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDR4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNP
ZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKK3sKKyAgICBVTlVTRURfUEFSQU0obG9jYXRpb24p
OworICAgIFVOVVNFRF9QQVJBTSh0cmFuc3Bvc2UpOworICAgIFVOVVNFRF9QQVJBTShkYXRhKTsK
KyAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsKKyAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3Ro
KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDN4NGZ2
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0
KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKK3sKKyAgICBV
TlVTRURfUEFSQU0obG9jYXRpb24pOworICAgIFVOVVNFRF9QQVJBTSh0cmFuc3Bvc2UpOworICAg
IFVOVVNFRF9QQVJBTShkYXRhKTsKKyAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsKKyAgICBV
TlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6dW5pZm9ybU1hdHJpeDR4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5z
cG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50
IHNyY0xlbmd0aCkKK3sKKyAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOworICAgIFVOVVNFRF9Q
QVJBTSh0cmFuc3Bvc2UpOworICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKKyAgICBVTlVTRURfUEFS
QU0oc3JjT2Zmc2V0KTsKKyAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsKK30KKwordm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliSTRpKEdDR0x1aW50IGluZGV4LCBH
Q0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTGludCB6LCBHQ0dMaW50IHcpCit7CisgICAgVU5VU0VE
X1BBUkFNKGluZGV4KTsKKyAgICBVTlVTRURfUEFSQU0oeCk7CisgICAgVU5VU0VEX1BBUkFNKHkp
OworICAgIFVOVVNFRF9QQVJBTSh6KTsKKyAgICBVTlVTRURfUEFSQU0odyk7Cit9CisKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYkk0aXYoR0NHTHVpbnQgaW5kZXgs
IGNvbnN0IEdDR0xpbnQqIHZhbHVlcykKK3sKKyAgICBVTlVTRURfUEFSQU0oaW5kZXgpOworICAg
IFVOVVNFRF9QQVJBTSh2YWx1ZXMpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojp2ZXJ0ZXhBdHRyaWJJNHVpKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCB4LCBHQ0dMdWludCB5
LCBHQ0dMdWludCB6LCBHQ0dMdWludCB3KQoreworICAgIFVOVVNFRF9QQVJBTShpbmRleCk7Cisg
ICAgVU5VU0VEX1BBUkFNKHgpOworICAgIFVOVVNFRF9QQVJBTSh5KTsKKyAgICBVTlVTRURfUEFS
QU0oeik7CisgICAgVU5VU0VEX1BBUkFNKHcpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp2ZXJ0ZXhBdHRyaWJJNHVpdihHQ0dMdWludCBpbmRleCwgY29uc3QgR0NHTHVpbnQq
IHZhbHVlcykKK3sKKyAgICBVTlVTRURfUEFSQU0oaW5kZXgpOworICAgIFVOVVNFRF9QQVJBTSh2
YWx1ZXMpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWJJ
UG9pbnRlcihHQ0dMdWludCBpbmRleCwgR0NHTGludCBzaXplLCBHQ0dMZW51bSB0eXBlLCBHQ0dM
c2l6ZWkgc3RyaWRlLCBHQ0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICBVTlVTRURfUEFSQU0oaW5k
ZXgpOworICAgIFVOVVNFRF9QQVJBTShzaXplKTsKKyAgICBVTlVTRURfUEFSQU0odHlwZSk7Cisg
ICAgVU5VU0VEX1BBUkFNKHN0cmlkZSk7CisgICAgVU5VU0VEX1BBUkFNKG9mZnNldCk7Cit9CisK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRyYXdSYW5nZUVsZW1lbnRzKEdDR0xlbnVt
IG1vZGUsIEdDR0x1aW50IHN0YXJ0LCBHQ0dMdWludCBlbmQsIEdDR0xzaXplaSBjb3VudCwgR0NH
TGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpCit7CisgICAgVU5VU0VEX1BBUkFNKG1vZGUp
OworICAgIFVOVVNFRF9QQVJBTShzdGFydCk7CisgICAgVU5VU0VEX1BBUkFNKGVuZCk7CisgICAg
VU5VU0VEX1BBUkFNKGNvdW50KTsKKyAgICBVTlVTRURfUEFSQU0odHlwZSk7CisgICAgVU5VU0VE
X1BBUkFNKG9mZnNldCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRyYXdC
dWZmZXJzKGNvbnN0IFZlY3RvcjxHQ0dMZW51bT4mIGJ1ZmZlcnMpCit7CisgICAgVU5VU0VEX1BB
UkFNKGJ1ZmZlcnMpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjbGVhckJ1
ZmZlcml2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBjb25zdCBHQ0dMaW50
KiB2YWx1ZXMsIEdDR0x1aW50IHNyY09mZnNldCkKK3sKKyAgICBVTlVTRURfUEFSQU0oYnVmZmVy
KTsKKyAgICBVTlVTRURfUEFSQU0oZHJhd2J1ZmZlcik7CisgICAgVU5VU0VEX1BBUkFNKHZhbHVl
cyk7CisgICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmNsZWFyQnVmZmVydWl2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3
YnVmZmVyLCBjb25zdCBHQ0dMdWludCogdmFsdWVzLCBHQ0dMdWludCBzcmNPZmZzZXQpCit7Cisg
ICAgVU5VU0VEX1BBUkFNKGJ1ZmZlcik7CisgICAgVU5VU0VEX1BBUkFNKGRyYXdidWZmZXIpOwor
ICAgIFVOVVNFRF9QQVJBTSh2YWx1ZXMpOworICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOwor
fQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjbGVhckJ1ZmZlcmZ2KEdDR0xlbnVt
IGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBjb25zdCBHQ0dMZmxvYXQqIHZhbHVlcywgR0NH
THVpbnQgc3JjT2Zmc2V0KQoreworICAgIFVOVVNFRF9QQVJBTShidWZmZXIpOworICAgIFVOVVNF
RF9QQVJBTShkcmF3YnVmZmVyKTsKKyAgICBVTlVTRURfUEFSQU0odmFsdWVzKTsKKyAgICBVTlVT
RURfUEFSQU0oc3JjT2Zmc2V0KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Y2xlYXJCdWZmZXJmaShHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgR0NHTGZs
b2F0IGRlcHRoLCBHQ0dMaW50IHN0ZW5jaWwpCit7CisgICAgVU5VU0VEX1BBUkFNKGJ1ZmZlcik7
CisgICAgVU5VU0VEX1BBUkFNKGRyYXdidWZmZXIpOworICAgIFVOVVNFRF9QQVJBTShkZXB0aCk7
CisgICAgVU5VU0VEX1BBUkFNKHN0ZW5jaWwpOworfQorCitQbGF0Zm9ybUdMT2JqZWN0IEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVRdWVyeSgpCit7CisKKyAgICByZXR1cm4gMDsKK30K
Kwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZGVsZXRlUXVlcnkoUGxhdGZvcm1HTE9i
amVjdCBxdWVyeSkKK3sKKyAgICBVTlVTRURfUEFSQU0ocXVlcnkpOworfQorCitHQ0dMYm9vbGVh
biBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6aXNRdWVyeShQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5
KQoreworICAgIFVOVVNFRF9QQVJBTShxdWVyeSk7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmJlZ2luUXVlcnkoR0NHTGVudW0gdGFyZ2V0
LCBQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5KQoreworICAgIFVOVVNFRF9QQVJBTSh0YXJnZXQpOwor
ICAgIFVOVVNFRF9QQVJBTShxdWVyeSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmVuZFF1ZXJ5KEdDR0xlbnVtIHRhcmdldCkKK3sKKyAgICBVTlVTRURfUEFSQU0odGFyZ2V0
KTsKK30KKworUGxhdGZvcm1HTE9iamVjdCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0UXVl
cnkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkKK3sKKyAgICBVTlVTRURfUEFSQU0o
dGFyZ2V0KTsKKyAgICBVTlVTRURfUEFSQU0ocG5hbWUpOworCisgICAgcmV0dXJuIDA7Cit9CisK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdsR2V0UXVlcnlPYmplY3R1aXYoUGxhdGZv
cm1HTE9iamVjdCBxdWVyeSwgR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50KiB2YWx1ZSkKK3sKKyAg
ICBVTlVTRURfUEFSQU0ocXVlcnkpOworICAgIFVOVVNFRF9QQVJBTShwbmFtZSk7CisgICAgVU5V
U0VEX1BBUkFNKHZhbHVlKTsKK30KKworUGxhdGZvcm1HTE9iamVjdCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Y3JlYXRlU2FtcGxlcigpCit7CisKKyAgICByZXR1cm4gMDsKK30KKwordm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZGVsZXRlU2FtcGxlcihQbGF0Zm9ybUdMT2JqZWN0IHNh
bXBsZXIpCit7CisgICAgVU5VU0VEX1BBUkFNKHNhbXBsZXIpOworfQorCitHQ0dMYm9vbGVhbiBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6aXNTYW1wbGVyKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxl
cikKK3sKKyAgICBVTlVTRURfUEFSQU0oc2FtcGxlcik7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmJpbmRTYW1wbGVyKEdDR0x1aW50IHVu
aXQsIFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlcikKK3sKKyAgICBVTlVTRURfUEFSQU0odW5pdCk7
CisgICAgVU5VU0VEX1BBUkFNKHNhbXBsZXIpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpzYW1wbGVyUGFyYW1ldGVyaShQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMaW50IHBhcmFtKQoreworICAgIFVOVVNFRF9QQVJBTShzYW1wbGVyKTsK
KyAgICBVTlVTRURfUEFSQU0ocG5hbWUpOworICAgIFVOVVNFRF9QQVJBTShwYXJhbSk7Cit9CisK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnNhbXBsZXJQYXJhbWV0ZXJmKFBsYXRmb3Jt
R0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCBwYXJhbSkKK3sKKyAg
ICBVTlVTRURfUEFSQU0oc2FtcGxlcik7CisgICAgVU5VU0VEX1BBUkFNKHBuYW1lKTsKKyAgICBV
TlVTRURfUEFSQU0ocGFyYW0pOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpn
ZXRTYW1wbGVyUGFyYW1ldGVyZnYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBw
bmFtZSwgR0NHTGZsb2F0KiB2YWx1ZSkKK3sKKyAgICBVTlVTRURfUEFSQU0oc2FtcGxlcik7Cisg
ICAgVU5VU0VEX1BBUkFNKHBuYW1lKTsKKyAgICBVTlVTRURfUEFSQU0odmFsdWUpOworfQorCit2
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1wbGVyUGFyYW1ldGVyaXYoUGxhdGZv
cm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpCit7Cisg
ICAgVU5VU0VEX1BBUkFNKHNhbXBsZXIpOworICAgIFVOVVNFRF9QQVJBTShwbmFtZSk7CisgICAg
VU5VU0VEX1BBUkFNKHZhbHVlKTsKK30KKworUGxhdGZvcm1HTE9iamVjdCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6ZmVuY2VTeW5jKEdDR0xlbnVtIGNvbmRpdGlvbiwgR0NHTGJpdGZpZWxkIGZs
YWdzKQoreworICAgIFVOVVNFRF9QQVJBTShjb25kaXRpb24pOworICAgIFVOVVNFRF9QQVJBTShm
bGFncyk7CisKKyAgICByZXR1cm4gMDsKK30KKworR0NHTGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmlzU3luYyhQbGF0Zm9ybUdMT2JqZWN0IHN5bmMpCit7CisgICAgVU5VU0VEX1BB
UkFNKHN5bmMpOworCisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpkZWxldGVTeW5jKFBsYXRmb3JtR0xPYmplY3Qgc3luYykKK3sKKyAgICBVTlVT
RURfUEFSQU0oc3luYyk7Cit9CisKK0dDR0xlbnVtIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpj
bGllbnRXYWl0U3luYyhQbGF0Zm9ybUdMT2JqZWN0IHN5bmMsIEdDR0xiaXRmaWVsZCBmbGFncywg
R0NHTHVpbnQ2NCB0aW1lb3V0KQoreworICAgIFVOVVNFRF9QQVJBTShzeW5jKTsKKyAgICBVTlVT
RURfUEFSQU0oZmxhZ3MpOworICAgIFVOVVNFRF9QQVJBTSh0aW1lb3V0KTsKKworICAgIHJldHVy
biAwOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp3YWl0U3luYyhQbGF0Zm9y
bUdMT2JqZWN0IHN5bmMsIEdDR0xiaXRmaWVsZCBmbGFncywgR0NHTGludDY0IHRpbWVvdXQpCit7
CisgICAgVU5VU0VEX1BBUkFNKHN5bmMpOworICAgIFVOVVNFRF9QQVJBTShmbGFncyk7CisgICAg
VU5VU0VEX1BBUkFNKHRpbWVvdXQpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpnZXRTeW5jaXYoUGxhdGZvcm1HTE9iamVjdCBzeW5jLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xpbnQgKnZhbHVlKQoreworICAgIFVOVVNFRF9QQVJBTShzeW5jKTsK
KyAgICBVTlVTRURfUEFSQU0ocG5hbWUpOworICAgIFVOVVNFRF9QQVJBTShidWZTaXplKTsKKyAg
ICBVTlVTRURfUEFSQU0odmFsdWUpOworfQorCitQbGF0Zm9ybUdMT2JqZWN0IEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpjcmVhdGVUcmFuc2Zvcm1GZWVkYmFjaygpCit7CisgICAgcmV0dXJuIDA7
Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRlbGV0ZVRyYW5zZm9ybUZlZWRi
YWNrKFBsYXRmb3JtR0xPYmplY3QgaWQpCit7CisgICAgVU5VU0VEX1BBUkFNKGlkKTsKK30KKwor
R0NHTGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmlzVHJhbnNmb3JtRmVlZGJhY2so
UGxhdGZvcm1HTE9iamVjdCBpZCkKK3sKKyAgICBVTlVTRURfUEFSQU0oaWQpOworCisgICAgcmV0
dXJuIGZhbHNlOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpiaW5kVHJhbnNm
b3JtRmVlZGJhY2soR0NHTGVudW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGlkKQoreworICAg
IFVOVVNFRF9QQVJBTSh0YXJnZXQpOworICAgIFVOVVNFRF9QQVJBTShpZCk7Cit9CisKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmJlZ2luVHJhbnNmb3JtRmVlZGJhY2soR0NHTGVudW0g
cHJpbWl0aXZlTW9kZSkKK3sKKyAgICBVTlVTRURfUEFSQU0ocHJpbWl0aXZlTW9kZSk7Cit9CisK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmVuZFRyYW5zZm9ybUZlZWRiYWNrKCkKK3sK
K30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dHJhbnNmb3JtRmVlZGJhY2tWYXJ5
aW5ncyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3Rvcjxjb25zdCBTdHJpbmcm
PiYgdmFyeWluZ3MsIEdDR0xlbnVtIGJ1ZmZlck1vZGUpCit7CisgICAgVU5VU0VEX1BBUkFNKHBy
b2dyYW0pOworICAgIFVOVVNFRF9QQVJBTSh2YXJ5aW5ncyk7CisgICAgVU5VU0VEX1BBUkFNKGJ1
ZmZlck1vZGUpOworfQorCitQbGF0Zm9ybUdMT2JqZWN0IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpnZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmcoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBH
Q0dMdWludCBpbmRleCkKK3sKKyAgICBVTlVTRURfUEFSQU0ocHJvZ3JhbSk7CisgICAgVU5VU0VE
X1BBUkFNKGluZGV4KTsKKworICAgIHJldHVybiAwOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpwYXVzZVRyYW5zZm9ybUZlZWRiYWNrKCkKK3sKK30KKwordm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6cmVzdW1lVHJhbnNmb3JtRmVlZGJhY2soKQoreworfQorCit2b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpiaW5kQnVmZmVyQmFzZShHQ0dMZW51bSB0YXJnZXQs
IEdDR0x1aW50IGluZGV4LCBQbGF0Zm9ybUdMT2JqZWN0IGJ1ZmZlcikKK3sKKyAgICBVTlVTRURf
UEFSQU0odGFyZ2V0KTsKKyAgICBVTlVTRURfUEFSQU0oaW5kZXgpOworICAgIFVOVVNFRF9QQVJB
TShidWZmZXIpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpiaW5kQnVmZmVy
UmFuZ2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgUGxhdGZvcm1HTE9iamVjdCBi
dWZmZXIsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgc2l6ZSkKK3sKKyAgICBVTlVT
RURfUEFSQU0odGFyZ2V0KTsKKyAgICBVTlVTRURfUEFSQU0oaW5kZXgpOworICAgIFVOVVNFRF9Q
QVJBTShidWZmZXIpOworICAgIFVOVVNFRF9QQVJBTShvZmZzZXQpOworICAgIFVOVVNFRF9QQVJB
TShzaXplKTsKK30KKworVmVjdG9yPEdDR0x1aW50PiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Z2V0VW5pZm9ybUluZGljZXMoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBWZWN0b3I8
Y29uc3QgU3RyaW5nJj4mIHVuaWZvcm1OYW1lcykKK3sKKyAgICBVTlVTRURfUEFSQU0ocHJvZ3Jh
bSk7CisgICAgVU5VU0VEX1BBUkFNKHVuaWZvcm1OYW1lcyk7CisKKyAgICByZXR1cm4geyB9Owor
fQorCisjaWYgVVNFKE9QRU5HTF8zKSB8fCBVU0UoT1BFTkdMX0VTXzMpCit2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlmb3JtcyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dy
YW0sIGNvbnN0IFZlY3RvcjxHQ0dMdWludD4mIHVuaWZvcm1JbmRpY2VzLCBHQ0dMZW51bSBwbmFt
ZSwgVmVjdG9yPEdDR0xpbnQ+JiBwYXJhbXMpCit7CisgICAgQVNTRVJUKHByb2dyYW0pOworICAg
IG1ha2VDb250ZXh0Q3VycmVudCgpOworCisgICAgOjpnbEdldEFjdGl2ZVVuaWZvcm1zaXYocHJv
Z3JhbSwgdW5pZm9ybUluZGljZXMuc2l6ZSgpLCB1bmlmb3JtSW5kaWNlcy5kYXRhKCksIHBuYW1l
LCBwYXJhbXMuZGF0YSgpKTsKK30KKyNlbHNlCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpnZXRBY3RpdmVVbmlmb3JtcyhQbGF0Zm9ybUdMT2JqZWN0LCBjb25zdCBWZWN0b3I8R0NHTHVp
bnQ+JiwgR0NHTGVudW0sIFZlY3RvcjxHQ0dMaW50PiYpCit7Cit9CisjZW5kaWYKKworR0NHTHVp
bnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1CbG9ja0luZGV4KFBsYXRmb3Jt
R0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgU3RyaW5nJiB1bmlmb3JtQmxvY2tOYW1lKQoreworICAg
IFVOVVNFRF9QQVJBTShwcm9ncmFtKTsKKyAgICBVTlVTRURfUEFSQU0odW5pZm9ybUJsb2NrTmFt
ZSk7CisKKyAgICByZXR1cm4gMDsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Z2V0QWN0aXZlVW5pZm9ybUJsb2NraXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWlu
dCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHBhcmFtcykKK3sK
KyAgICBVTlVTRURfUEFSQU0ocHJvZ3JhbSk7CisgICAgVU5VU0VEX1BBUkFNKHVuaWZvcm1CbG9j
a0luZGV4KTsKKyAgICBVTlVTRURfUEFSQU0ocG5hbWUpOworICAgIFVOVVNFRF9QQVJBTShwYXJh
bXMpOworfQorCitTdHJpbmcgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZv
cm1CbG9ja05hbWUoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxv
Y2tJbmRleCkKK3sKKyAgICBVTlVTRURfUEFSQU0ocHJvZ3JhbSk7CisgICAgVU5VU0VEX1BBUkFN
KHVuaWZvcm1CbG9ja0luZGV4KTsKKworICAgIHJldHVybiBlbXB0eVN0cmluZygpOworfQorCit2
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtQmxvY2tCaW5kaW5nKFBsYXRmb3Jt
R0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0x1aW50IHVu
aWZvcm1CbG9ja0JpbmRpbmcpCit7CisgICAgVU5VU0VEX1BBUkFNKHByb2dyYW0pOworICAgIFVO
VVNFRF9QQVJBTSh1bmlmb3JtQmxvY2tJbmRleCk7CisgICAgVU5VU0VEX1BBUkFNKHVuaWZvcm1C
bG9ja0JpbmRpbmcpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhJbWFn
ZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCBpbnRlcm5hbGZvcm1h
dCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NH
TGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIHBib09mZnNldCkKK3sKKyAg
ICBVTlVTRURfUEFSQU0odGFyZ2V0KTsKKyAgICBVTlVTRURfUEFSQU0obGV2ZWwpOworICAgIFVO
VVNFRF9QQVJBTShpbnRlcm5hbGZvcm1hdCk7CisgICAgVU5VU0VEX1BBUkFNKHdpZHRoKTsKKyAg
ICBVTlVTRURfUEFSQU0oaGVpZ2h0KTsKKyAgICBVTlVTRURfUEFSQU0oYm9yZGVyKTsKKyAgICBV
TlVTRURfUEFSQU0oZm9ybWF0KTsKKyAgICBVTlVTRURfUEFSQU0odHlwZSk7CisgICAgVU5VU0VE
X1BBUkFNKHBib09mZnNldCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRl
eEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGludGVybmFs
Zm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVy
LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQqIHNyY0RhdGEsIEdD
R0x1aW50IHNyY09mZnNldCkKK3sKKyAgICBVTlVTRURfUEFSQU0odGFyZ2V0KTsKKyAgICBVTlVT
RURfUEFSQU0obGV2ZWwpOworICAgIFVOVVNFRF9QQVJBTShpbnRlcm5hbGZvcm1hdCk7CisgICAg
VU5VU0VEX1BBUkFNKHdpZHRoKTsKKyAgICBVTlVTRURfUEFSQU0oaGVpZ2h0KTsKKyAgICBVTlVT
RURfUEFSQU0oYm9yZGVyKTsKKyAgICBVTlVTRURfUEFSQU0oZm9ybWF0KTsKKyAgICBVTlVTRURf
UEFSQU0odHlwZSk7CisgICAgVU5VU0VEX1BBUkFNKHNyY0RhdGEpOworICAgIFVOVVNFRF9QQVJB
TShzcmNPZmZzZXQpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhTdWJJ
bWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBH
Q0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVu
dW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIHBib09mZnNldCkKK3sKKyAgICBV
TlVTRURfUEFSQU0odGFyZ2V0KTsKKyAgICBVTlVTRURfUEFSQU0obGV2ZWwpOworICAgIFVOVVNF
RF9QQVJBTSh4b2Zmc2V0KTsKKyAgICBVTlVTRURfUEFSQU0oeW9mZnNldCk7CisgICAgVU5VU0VE
X1BBUkFNKHdpZHRoKTsKKyAgICBVTlVTRURfUEFSQU0oaGVpZ2h0KTsKKyAgICBVTlVTRURfUEFS
QU0oZm9ybWF0KTsKKyAgICBVTlVTRURfUEFSQU0odHlwZSk7CisgICAgVU5VU0VEX1BBUkFNKHBi
b09mZnNldCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRleFN1YkltYWdl
MkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xp
bnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBm
b3JtYXQsIEdDR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQqIHNyY0RhdGEsIEdDR0x1aW50IHNyY09m
ZnNldCkKK3sKKyAgICBVTlVTRURfUEFSQU0odGFyZ2V0KTsKKyAgICBVTlVTRURfUEFSQU0obGV2
ZWwpOworICAgIFVOVVNFRF9QQVJBTSh4b2Zmc2V0KTsKKyAgICBVTlVTRURfUEFSQU0oeW9mZnNl
dCk7CisgICAgVU5VU0VEX1BBUkFNKHdpZHRoKTsKKyAgICBVTlVTRURfUEFSQU0oaGVpZ2h0KTsK
KyAgICBVTlVTRURfUEFSQU0oZm9ybWF0KTsKKyAgICBVTlVTRURfUEFSQU0odHlwZSk7CisgICAg
VU5VU0VEX1BBUkFNKHNyY0RhdGEpOworICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOworfQor
Cit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjb21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dM
c2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkg
aW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICBVTlVTRURfUEFSQU0odGFyZ2V0
KTsKKyAgICBVTlVTRURfUEFSQU0obGV2ZWwpOworICAgIFVOVVNFRF9QQVJBTShpbnRlcm5hbGZv
cm1hdCk7CisgICAgVU5VU0VEX1BBUkFNKHdpZHRoKTsKKyAgICBVTlVTRURfUEFSQU0oaGVpZ2h0
KTsKKyAgICBVTlVTRURfUEFSQU0oYm9yZGVyKTsKKyAgICBVTlVTRURfUEFSQU0oaW1hZ2VTaXpl
KTsKKyAgICBVTlVTRURfUEFSQU0ob2Zmc2V0KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Y29tcHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxl
dmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgY29uc3Qgdm9pZCogc3JjRGF0YSwgR0NHTHVpbnQgc3Jj
T2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGhPdmVycmlkZSkKK3sKKyAgICBVTlVTRURfUEFSQU0o
dGFyZ2V0KTsKKyAgICBVTlVTRURfUEFSQU0obGV2ZWwpOworICAgIFVOVVNFRF9QQVJBTShpbnRl
cm5hbGZvcm1hdCk7CisgICAgVU5VU0VEX1BBUkFNKHdpZHRoKTsKKyAgICBVTlVTRURfUEFSQU0o
aGVpZ2h0KTsKKyAgICBVTlVTRURfUEFSQU0oYm9yZGVyKTsKKyAgICBVTlVTRURfUEFSQU0oc3Jj
RGF0YSk7CisgICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7CisgICAgVU5VU0VEX1BBUkFNKHNy
Y0xlbmd0aE92ZXJyaWRlKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y29t
cHJlc3NlZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dM
aW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xpbnRwdHIg
b2Zmc2V0KQoreworICAgIFVOVVNFRF9QQVJBTSh0YXJnZXQpOworICAgIFVOVVNFRF9QQVJBTShs
ZXZlbCk7CisgICAgVU5VU0VEX1BBUkFNKHhvZmZzZXQpOworICAgIFVOVVNFRF9QQVJBTSh5b2Zm
c2V0KTsKKyAgICBVTlVTRURfUEFSQU0od2lkdGgpOworICAgIFVOVVNFRF9QQVJBTShoZWlnaHQp
OworICAgIFVOVVNFRF9QQVJBTShmb3JtYXQpOworICAgIFVOVVNFRF9QQVJBTShpbWFnZVNpemUp
OworICAgIFVOVVNFRF9QQVJBTShvZmZzZXQpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQg
bGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgY29uc3Qgdm9pZCogc3JjRGF0YSwg
R0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGhPdmVycmlkZSkKK3sKKyAgICBV
TlVTRURfUEFSQU0odGFyZ2V0KTsKKyAgICBVTlVTRURfUEFSQU0obGV2ZWwpOworICAgIFVOVVNF
RF9QQVJBTSh4b2Zmc2V0KTsKKyAgICBVTlVTRURfUEFSQU0oeW9mZnNldCk7CisgICAgVU5VU0VE
X1BBUkFNKHdpZHRoKTsKKyAgICBVTlVTRURfUEFSQU0oaGVpZ2h0KTsKKyAgICBVTlVTRURfUEFS
QU0oZm9ybWF0KTsKKyAgICBVTlVTRURfUEFSQU0oc3JjRGF0YSk7CisgICAgVU5VU0VEX1BBUkFN
KHNyY09mZnNldCk7CisgICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aE92ZXJyaWRlKTsKK30KKwor
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTFmdihHQ0dMaW50IGxvY2F0aW9u
LCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3Jj
TGVuZ3RoKQoreworICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7CisgICAgVU5VU0VEX1BBUkFN
KGRhdGEpOworICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOworICAgIFVOVVNFRF9QQVJBTShz
cmNMZW5ndGgpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMmZ2
KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zm
c2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit7CisgICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsK
KyAgICBVTlVTRURfUEFSQU0oZGF0YSk7CisgICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7Cisg
ICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnVuaWZvcm0zZnYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGZsb2F0KiBkYXRh
LCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKK3sKKyAgICBVTlVTRURf
UEFSQU0obG9jYXRpb24pOworICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKKyAgICBVTlVTRURfUEFS
QU0oc3JjT2Zmc2V0KTsKKyAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsKK30KKwordm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTRmdihHQ0dMaW50IGxvY2F0aW9uLCBjb25z
dCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3Ro
KQoreworICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7CisgICAgVU5VU0VEX1BBUkFNKGRhdGEp
OworICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOworICAgIFVOVVNFRF9QQVJBTShzcmNMZW5n
dGgpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMWl2KEdDR0xp
bnQgbG9jYXRpb24sIGNvbnN0IEdDR0xpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NH
THVpbnQgc3JjTGVuZ3RoKQoreworICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7CisgICAgVU5V
U0VEX1BBUkFNKGRhdGEpOworICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOworICAgIFVOVVNF
RF9QQVJBTShzcmNMZW5ndGgpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1
bmlmb3JtMml2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xpbnQqIGRhdGEsIEdDR0x1aW50
IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQoreworICAgIFVOVVNFRF9QQVJBTShsb2Nh
dGlvbik7CisgICAgVU5VU0VEX1BBUkFNKGRhdGEpOworICAgIFVOVVNFRF9QQVJBTShzcmNPZmZz
ZXQpOworICAgIFVOVVNFRF9QQVJBTShzcmNMZW5ndGgpOworfQorCit2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjp1bmlmb3JtM2l2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xpbnQq
IGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQoreworICAgIFVO
VVNFRF9QQVJBTShsb2NhdGlvbik7CisgICAgVU5VU0VEX1BBUkFNKGRhdGEpOworICAgIFVOVVNF
RF9QQVJBTShzcmNPZmZzZXQpOworICAgIFVOVVNFRF9QQVJBTShzcmNMZW5ndGgpOworfQorCit2
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtNGl2KEdDR0xpbnQgbG9jYXRpb24s
IGNvbnN0IEdDR0xpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVu
Z3RoKQoreworICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7CisgICAgVU5VU0VEX1BBUkFNKGRh
dGEpOworICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOworICAgIFVOVVNFRF9QQVJBTShzcmNM
ZW5ndGgpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4
MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZs
b2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKK3sKKyAg
ICBVTlVTRURfUEFSQU0obG9jYXRpb24pOworICAgIFVOVVNFRF9QQVJBTSh0cmFuc3Bvc2UpOwor
ICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKKyAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsKKyAg
ICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6dW5pZm9ybU1hdHJpeDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFu
c3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWlu
dCBzcmNMZW5ndGgpCit7CisgICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKKyAgICBVTlVTRURf
UEFSQU0odHJhbnNwb3NlKTsKKyAgICBVTlVTRURfUEFSQU0oZGF0YSk7CisgICAgVU5VU0VEX1BB
UkFNKHNyY09mZnNldCk7CisgICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7Cit9CisKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXg0ZnYoR0NHTGludCBsb2NhdGlv
biwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50
IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQoreworICAgIFVOVVNFRF9QQVJBTShsb2Nh
dGlvbik7CisgICAgVU5VU0VEX1BBUkFNKHRyYW5zcG9zZSk7CisgICAgVU5VU0VEX1BBUkFNKGRh
dGEpOworICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOworICAgIFVOVVNFRF9QQVJBTShzcmNM
ZW5ndGgpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzKEdD
R0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdD
R0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpCit7CisgICAg
VU5VU0VEX1BBUkFNKHgpOworICAgIFVOVVNFRF9QQVJBTSh5KTsKKyAgICBVTlVTRURfUEFSQU0o
d2lkdGgpOworICAgIFVOVVNFRF9QQVJBTShoZWlnaHQpOworICAgIFVOVVNFRF9QQVJBTShmb3Jt
YXQpOworICAgIFVOVVNFRF9QQVJBTSh0eXBlKTsKKyAgICBVTlVTRURfUEFSQU0ob2Zmc2V0KTsK
K30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVscyhHQ0dMaW50IHgs
IEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBm
b3JtYXQsIEdDR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQqIGRzdERhdGEsIEdDR0x1aW50IGRzdE9m
ZnNldCkKK3sKKyAgICBVTlVTRURfUEFSQU0oeCk7CisgICAgVU5VU0VEX1BBUkFNKHkpOworICAg
IFVOVVNFRF9QQVJBTSh3aWR0aCk7CisgICAgVU5VU0VEX1BBUkFNKGhlaWdodCk7CisgICAgVU5V
U0VEX1BBUkFNKGZvcm1hdCk7CisgICAgVU5VU0VEX1BBUkFNKHR5cGUpOworICAgIFVOVVNFRF9Q
QVJBTShkc3REYXRhKTsKKyAgICBVTlVTRURfUEFSQU0oZHN0T2Zmc2V0KTsKK30KKworCiB9CiAK
ICNlbmRpZiAvLyBFTkFCTEUoR1JBUEhJQ1NfQ09OVEVYVF9HTCkgJiYgKFVTRShPUEVOR0wpIHx8
IFVTRShPUEVOR0xfRVMpKQo=
</data>
<flag name="review"
          id="403068"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387282</attachid>
            <date>2020-01-09 15:19:50 -0800</date>
            <delta_ts>2020-01-09 15:19:50 -0800</delta_ts>
            <desc>EWS</desc>
            <filename>bug-206038-20200110101949.patch</filename>
            <type>text/plain</type>
            <size>97274</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0MTUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTQyZDc4ZDU3MjA3MTcy
YzliYWVjYjc1ODhhNTMyMTM3NTYzNjVmYi4uYjkyMDhkOTdlYWI4NTZiMTEwYWNjMjc4OTk5NDZh
N2E5NDVhMzE2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyMyBAQAorMjAyMC0wMS0wOSAgRGVh
biBKYWNrc29uICA8ZGlub0BhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkdMXSBBZGQgYWxsIHJl
bWFpbmluZyBXZWJHTDIgaW1wbGVtZW50YXRpb24gZnVuY3Rpb25zIHRvIEdyYXBoaWNzQ29udGV4
dEdMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDYw
MzgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU4NDU5MDUxPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBzdHVicyBmb3IgYWxsIHRoZSBHcmFw
aGljc0NvbnRleHRHTCBtZXRob2RzIHRoYXQgd2lsbCBiZQorICAgICAgICBuZWNlc3NhcnkgdG8g
aW1wbGVtZW50IFdlYkdMMi4KKworICAgICAgICBXaGlsZSBoZXJlLCByZWFycmFuZ2UgdGhlIGhl
YWRlciBmaWxlIHRvIG1pcnJvciB0aGUgd2F5CisgICAgICAgIFdlYkdMMlJlbmRlcmluZ0NvbnRl
eHQgb3JkZXJzIHRoZSBtZXRob2RzLCBhbmQgbWFyayBhbGwgdGhlCisgICAgICAgIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMIG1ldGhvZHMgYXMgZmluYWwgKHJhdGhlciB0aGFuIG92ZXJyaWRlKS4K
KworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMQ29tbW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpidWZmZXJEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpidWZmZXJTdWJEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpjb3B5QnVmZmVyU3ViRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Z2V0QnVmZmVyU3ViRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6bWFwQnVmZmVyUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnVubWFwQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpibGl0RnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjppbnZhbGlkYXRlRnJhbWVi
dWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmludmFs
aWRhdGVTdWJGcmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6cmVhZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Z2V0SW50ZXJuYWxmb3JtYXRpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhTdG9yYWdlMkQpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRleFN0b3JhZ2UzRCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4SW1hZ2UzRCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4U3ViSW1hZ2UzRCk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y29weVRleFN1Yklt
YWdlM0QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNvbXBy
ZXNzZWRUZXhJbWFnZTNEKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Z2V0RnJhZ0RhdGFMb2NhdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTF1aSk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTJ1aSk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTN1aSk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTR1aSk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTF1aXYpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0ydWl2KToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtM3Vpdik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTR1aXYpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgyeDNmdik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDN4MmZ2
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0
cml4Mng0ZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVu
aWZvcm1NYXRyaXg0eDJmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6dW5pZm9ybU1hdHJpeDN4NGZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4NHgzZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYkk0aSk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliSTRpdik6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliSTR1aSk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliSTR1aXYp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJp
YklQb2ludGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpk
cmF3UmFuZ2VFbGVtZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6ZHJhd0J1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmNsZWFyQnVmZmVyaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmNsZWFyQnVmZmVydWl2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpjbGVhckJ1ZmZlcmZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpjbGVhckJ1ZmZlcmZpKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVRdWVyeSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6ZGVsZXRlUXVlcnkpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmlzUXVlcnkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmJlZ2luUXVlcnkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmVuZFF1ZXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpnZXRRdWVyeSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Z2xHZXRRdWVyeU9iamVjdHVpdik6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlU2FtcGxlcik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZGVsZXRlU2FtcGxlcik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6aXNTYW1wbGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpiaW5kU2FtcGxlcik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6c2FtcGxlclBhcmFtZXRlcmkpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnNhbXBsZXJQYXJhbWV0ZXJmKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1wbGVyUGFy
YW1ldGVyZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dFNhbXBsZXJQYXJhbWV0ZXJpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6ZmVuY2VTeW5jKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjppc1N5bmMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmRlbGV0ZVN5bmMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmNsaWVudFdhaXRTeW5jKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp3YWl0U3luYyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Z2V0U3luY2l2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpjcmVhdGVUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6ZGVsZXRlVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmlzVHJhbnNmb3JtRmVlZGJhY2spOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmJpbmRUcmFuc2Zvcm1GZWVk
YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YmVnaW5U
cmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6ZW5kVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGF1c2VUcmFu
c2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6cmVzdW1lVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmJpbmRCdWZmZXJCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpiaW5kQnVmZmVyUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1JbmRpY2VzKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlmb3Jtcyk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9ybUJsb2NrSW5k
ZXgpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2
ZVVuaWZvcm1CbG9ja2l2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtQmxvY2tCaW5kaW5nKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhJbWFnZTJEKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhTdWJJbWFnZTJEKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjb21wcmVzc2VkVGV4SW1hZ2UyRCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y29tcHJlc3NlZFRleFN1
YkltYWdlMkQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVu
aWZvcm0xZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVu
aWZvcm0yZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVu
aWZvcm0zZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVu
aWZvcm00ZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVu
aWZvcm0xaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVu
aWZvcm0yaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVu
aWZvcm0zaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVu
aWZvcm00aXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVu
aWZvcm1NYXRyaXgyZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnVuaWZvcm1NYXRyaXgzZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXg0ZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHMpOgorCiAyMDIwLTAxLTA4ICBEZWFuIEphY2tzb24g
IDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViR0xdIE1vcmUgR3JhcGhpY3NDb250ZXh0
M0QgdG8gR3JhcGhpY3NDb250ZXh0R0wgcmVuYW1pbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oCmluZGV4IDEyMzg1OTExM2Iy
ZDA5MjhhZWJkZTJmOWVlODQzYTEzNDIyZjE4ZTguLmYxZWFhNGZjZTE0OTU5MTlmMjY3ZDA4YTVh
ZTllNTk5NTIyNGI4YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaApAQCAtNjYxLDYgKzY2MSw5IEBAIHB1YmxpYzoKICAg
ICAgICAgLy8gT3BlbkdMIEVTIDMgY29uc3RhbnRzLgogICAgICAgICBNQVBfUkVBRF9CSVQgPSAw
eDAwMDEsCiAKKyAgICAgICAgLy8gV2ViR0wtc3BlY2lmaWMuCisgICAgICAgIE1BWF9DTElFTlRf
V0FJVF9USU1FT1VUX1dFQkdMID0gMHg5MjQ3LAorCiAgICAgICAgIC8vIE5lY2Vzc2FyeSBkZXNr
dG9wIE9wZW5HTCBjb25zdGFudHMuCiAgICAgICAgIFRFWFRVUkVfUkVDVEFOR0xFX0FSQiA9IDB4
ODRGNQogICAgIH07CkBAIC0xMDU4LDIwICsxMDYxLDE1MCBAQCBwdWJsaWM6CiAKICAgICAvLyA9
PT09PT09PT09IFdlYkdMIDIgZW50cnkgcG9pbnRzLgogCisgICAgdmlydHVhbCB2b2lkIGJ1ZmZl
ckRhdGEoR0NHTGVudW0gdGFyZ2V0LCBjb25zdCB2b2lkKiBkYXRhLCBHQ0dMZW51bSB1c2FnZSwg
R0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBsZW5ndGgpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgYnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgZHN0Qnl0ZU9mZnNl
dCwgY29uc3Qgdm9pZCogc3JjRGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBsZW5n
dGgpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBjb3B5QnVmZmVyU3ViRGF0YShHQ0dMZW51bSBy
ZWFkVGFyZ2V0LCBHQ0dMZW51bSB3cml0ZVRhcmdldCwgR0NHTGludHB0ciByZWFkT2Zmc2V0LCBH
Q0dMaW50cHRyIHdyaXRlT2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgc2l6ZSkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBnZXRCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBzcmNC
eXRlT2Zmc2V0LCBjb25zdCB2b2lkKiBkc3REYXRhLCBHQ0dMdWludCBkc3RPZmZzZXQsIEdDR0x1
aW50IGxlbmd0aCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCogbWFwQnVmZmVyUmFuZ2UoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVpcHRyIGxlbmd0aCwgR0NHTGJp
dGZpZWxkIGFjY2VzcykgPSAwOwogICAgIHZpcnR1YWwgR0NHTGJvb2xlYW4gdW5tYXBCdWZmZXIo
R0NHTGVudW0gdGFyZ2V0KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGNvcHlCdWZmZXJTdWJEYXRh
KEdDR0xlbnVtIHJlYWRUYXJnZXQsIEdDR0xlbnVtIHdyaXRlVGFyZ2V0LCBHQ0dMaW50cHRyIHJl
YWRPZmZzZXQsIEdDR0xpbnRwdHIgd3JpdGVPZmZzZXQsIEdDR0xzaXplaXB0cikgPSAwOworCisg
ICAgdmlydHVhbCB2b2lkIGJsaXRGcmFtZWJ1ZmZlcihHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNy
Y1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50
IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywg
R0NHTGVudW0gZmlsdGVyKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGZyYW1lYnVmZmVyVGV4dHVy
ZUxheWVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgUGxhdGZvcm1HTE9i
amVjdCB0ZXh0dXJlLCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGxheWVyKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIGludmFsaWRhdGVGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIGNvbnN0IFZl
Y3RvcjxHQ0dMZW51bT4mIGF0dGFjaG1lbnRzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGludmFs
aWRhdGVTdWJGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIGNvbnN0IFZlY3RvcjxHQ0dMZW51
bT4mIGF0dGFjaG1lbnRzLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlYWRCdWZmZXIoR0NHTGVu
dW0gc3JjKSA9IDA7CiAKICAgICAvLyBnZXRJbnRlcm5hbEZvcm1hdFBhcmFtZXRlcgogICAgIHZp
cnR1YWwgdm9pZCBnZXRJbnRlcm5hbGZvcm1hdGl2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
aW50ZXJuYWxmb3JtYXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTGlu
dCogcGFyYW1zKSA9IDA7Ci0KICAgICB2aXJ0dWFsIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11
bHRpc2FtcGxlKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGlu
dGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpID0gMDsKIAog
ICAgIHZpcnR1YWwgdm9pZCB0ZXhTdG9yYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkg
bGV2ZWxzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHRleFN0b3JhZ2UzRChHQ0dMZW51bSB0
YXJnZXQsIEdDR0xzaXplaSBsZXZlbHMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCkgPSAwOwogCisgICAg
dmlydHVhbCB2b2lkIHRleEltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBH
Q0dMaW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQs
IEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVu
dW0gdHlwZSwgR0NHTGludHB0ciBwYm9PZmZzZXQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdGV4
SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgaW50ZXJuYWxm
b3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRo
LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBjb25zdCB2
b2lkKiBwaXhlbHMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdGV4SW1hZ2UzRChHQ0dMZW51bSB0
YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwg
R0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBjb25zdCB2b2lkKiBzcmNEYXRhLCBHQ0dM
dWludCBzcmNPZmZzZXQpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCB0ZXhTdWJJbWFnZTNEKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlv
ZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGlu
dHB0ciBwYm9PZmZzZXQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdGV4U3ViSW1hZ2UzRChHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zm
c2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGNvbnN0IHZv
aWQqIHNyY0RhdGEsIEdDR0x1aW50IHNyY09mZnNldCkgPSAwOworCisgICAgdmlydHVhbCB2b2lk
IGNvcHlUZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGlu
dCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTGludCB4LCBH
Q0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgPSAwOworCisgICAg
dmlydHVhbCB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGlt
YWdlU2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcHJl
c3NlZFRleEltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBp
bnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6
ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBjb25zdCB2b2lkKiBzcmNEYXRhLCBHQ0dMdWludCBz
cmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aE92ZXJyaWRlKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZl
bCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVt
IGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6
b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0
aCwgR0NHTGVudW0gZm9ybWF0LCBjb25zdCB2b2lkKiBzcmNEYXRhLCBHQ0dMdWludCBzcmNPZmZz
ZXQsIEdDR0x1aW50IHNyY0xlbmd0aE92ZXJyaWRlKSA9IDA7CisKKyAgICB2aXJ0dWFsIEdDR0xp
bnQgZ2V0RnJhZ0RhdGFMb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0
cmluZyYgbmFtZSkgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHVuaWZvcm0xdWkoR0NHTGludCBs
b2NhdGlvbiwgR0NHTHVpbnQgdjApID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTJ1aShH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCB2MCwgR0NHTHVpbnQgdjEpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgdW5pZm9ybTN1aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCB2MCwgR0NHTHVp
bnQgdjEsIEdDR0x1aW50IHYyKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVuaWZvcm00dWkoR0NH
TGludCBsb2NhdGlvbiwgR0NHTHVpbnQgdjAsIEdDR0x1aW50IHYxLCBHQ0dMdWludCB2MiwgR0NH
THVpbnQgdjMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTF1aXYoR0NHTGludCBsb2Nh
dGlvbiwgY29uc3QgR0NHTHVpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQg
c3JjTGVuZ3RoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVuaWZvcm0ydWl2KEdDR0xpbnQgbG9j
YXRpb24sIGNvbnN0IEdDR0x1aW50KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50
IHNyY0xlbmd0aCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtM3VpdihHQ0dMaW50IGxv
Y2F0aW9uLCBjb25zdCBHQ0dMdWludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWlu
dCBzcmNMZW5ndGgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTR1aXYoR0NHTGludCBs
b2NhdGlvbiwgY29uc3QgR0NHTHVpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVp
bnQgc3JjTGVuZ3RoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVuaWZvcm1NYXRyaXgyeDNmdihH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCog
ZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgdW5pZm9ybU1hdHJpeDN4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29s
ZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQs
IEdDR0x1aW50IHNyY0xlbmd0aCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtTWF0cml4
Mng0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dM
ZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHVuaWZvcm1NYXRyaXg0eDJmdihHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3Jj
T2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5pZm9y
bU1hdHJpeDN4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29u
c3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0
aCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtTWF0cml4NHgzZnYoR0NHTGludCBsb2Nh
dGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1
aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IHZlcnRleEF0dHJpYkk0aShHQ0dMdWludCBpbmRleCwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdD
R0xpbnQgeiwgR0NHTGludCB3KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHZlcnRleEF0dHJpYkk0
aXYoR0NHTHVpbnQgaW5kZXgsIGNvbnN0IEdDR0xpbnQqIHZhbHVlcykgPSAwOworICAgIHZpcnR1
YWwgdm9pZCB2ZXJ0ZXhBdHRyaWJJNHVpKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCB4LCBHQ0dM
dWludCB5LCBHQ0dMdWludCB6LCBHQ0dMdWludCB3KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHZl
cnRleEF0dHJpYkk0dWl2KEdDR0x1aW50IGluZGV4LCBjb25zdCBHQ0dMdWludCogdmFsdWVzKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIHZlcnRleEF0dHJpYklQb2ludGVyKEdDR0x1aW50IGluZGV4
LCBHQ0dMaW50IHNpemUsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBzdHJpZGUsIEdDR0xpbnRw
dHIgb2Zmc2V0KSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd1JhbmdlRWxlbWVudHMoR0NH
TGVudW0gbW9kZSwgR0NHTHVpbnQgc3RhcnQsIEdDR0x1aW50IGVuZCwgR0NHTHNpemVpIGNvdW50
LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkgPSAwOworCisgICAgdmlydHVhbCB2
b2lkIGRyYXdCdWZmZXJzKGNvbnN0IFZlY3RvcjxHQ0dMZW51bT4mIGJ1ZmZlcnMpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgY2xlYXJCdWZmZXJpdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJh
d2J1ZmZlciwgY29uc3QgR0NHTGludCogdmFsdWVzLCBHQ0dMdWludCBzcmNPZmZzZXQpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJCdWZmZXJ1aXYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50
IGRyYXdidWZmZXIsIGNvbnN0IEdDR0x1aW50KiB2YWx1ZXMsIEdDR0x1aW50IHNyY09mZnNldCkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBjbGVhckJ1ZmZlcmZ2KEdDR0xlbnVtIGJ1ZmZlciwgR0NH
TGludCBkcmF3YnVmZmVyLCBjb25zdCBHQ0dMZmxvYXQqIHZhbHVlcywgR0NHTHVpbnQgc3JjT2Zm
c2V0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNsZWFyQnVmZmVyZmkoR0NHTGVudW0gYnVmZmVy
LCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xmbG9hdCBkZXB0aCwgR0NHTGludCBzdGVuY2lsKSA9
IDA7CisKKyAgICB2aXJ0dWFsIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlUXVlcnkoKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIGRlbGV0ZVF1ZXJ5KFBsYXRmb3JtR0xPYmplY3QgcXVlcnkpID0gMDsK
KyAgICB2aXJ0dWFsIEdDR0xib29sZWFuIGlzUXVlcnkoUGxhdGZvcm1HTE9iamVjdCBxdWVyeSkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBiZWdpblF1ZXJ5KEdDR0xlbnVtIHRhcmdldCwgUGxhdGZv
cm1HTE9iamVjdCBxdWVyeSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBlbmRRdWVyeShHQ0dMZW51
bSB0YXJnZXQpID0gMDsKKyAgICB2aXJ0dWFsIFBsYXRmb3JtR0xPYmplY3QgZ2V0UXVlcnkoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkgPSAwOworICAgIC8vIGdldFF1ZXJ5UGFyYW1l
dGVyCisgICAgdmlydHVhbCB2b2lkIGdsR2V0UXVlcnlPYmplY3R1aXYoUGxhdGZvcm1HTE9iamVj
dCBxdWVyeSwgR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50KiB2YWx1ZSkgPSAwOworCisgICAgdmly
dHVhbCBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVNhbXBsZXIoKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGRlbGV0ZVNhbXBsZXIoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyKSA9IDA7CisgICAgdmly
dHVhbCBHQ0dMYm9vbGVhbiBpc1NhbXBsZXIoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGJpbmRTYW1wbGVyKEdDR0x1aW50IHVuaXQsIFBsYXRmb3JtR0xP
YmplY3Qgc2FtcGxlcikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzYW1wbGVyUGFyYW1ldGVyaShQ
bGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50IHBhcmFtKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJmKFBsYXRmb3JtR0xPYmplY3Qg
c2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCBwYXJhbSkgPSAwOworICAgIC8vIGdl
dFNhbXBsZXJQYXJhbWV0ZXIKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcmZ2
KFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCogdmFs
dWUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcml2KFBsYXRmb3Jt
R0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKSA9IDA7CisK
KyAgICB2aXJ0dWFsIFBsYXRmb3JtR0xPYmplY3QgZmVuY2VTeW5jKEdDR0xlbnVtIGNvbmRpdGlv
biwgR0NHTGJpdGZpZWxkIGZsYWdzKSA9IDA7CisgICAgdmlydHVhbCBHQ0dMYm9vbGVhbiBpc1N5
bmMoUGxhdGZvcm1HTE9iamVjdCBzeW5jKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZVN5
bmMoUGxhdGZvcm1HTE9iamVjdCBzeW5jKSA9IDA7CisgICAgdmlydHVhbCBHQ0dMZW51bSBjbGll
bnRXYWl0U3luYyhQbGF0Zm9ybUdMT2JqZWN0IHN5bmMsIEdDR0xiaXRmaWVsZCBmbGFncywgR0NH
THVpbnQ2NCB0aW1lb3V0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHdhaXRTeW5jKFBsYXRmb3Jt
R0xPYmplY3Qgc3luYywgR0NHTGJpdGZpZWxkIGZsYWdzLCBHQ0dMaW50NjQgdGltZW91dCkgPSAw
OworICAgIC8vIGdldFN5bmNQYXJhbWV0ZXIKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0U3luY2l2KFBs
YXRmb3JtR0xPYmplY3Qgc3luYywgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMaW50KiB2YWx1ZSkgPSAwOworCisgICAgdmlydHVhbCBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0
ZVRyYW5zZm9ybUZlZWRiYWNrKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVUcmFuc2Zv
cm1GZWVkYmFjayhQbGF0Zm9ybUdMT2JqZWN0IGlkKSA9IDA7CisgICAgdmlydHVhbCBHQ0dMYm9v
bGVhbiBpc1RyYW5zZm9ybUZlZWRiYWNrKFBsYXRmb3JtR0xPYmplY3QgaWQpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgYmluZFRyYW5zZm9ybUZlZWRiYWNrKEdDR0xlbnVtIHRhcmdldCwgUGxhdGZv
cm1HTE9iamVjdCBpZCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBiZWdpblRyYW5zZm9ybUZlZWRi
YWNrKEdDR0xlbnVtIHByaW1pdGl2ZU1vZGUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZW5kVHJh
bnNmb3JtRmVlZGJhY2soKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHRyYW5zZm9ybUZlZWRiYWNr
VmFyeWluZ3MoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
dmFyeWluZ3MsIEdDR0xlbnVtIGJ1ZmZlck1vZGUpID0gMDsKKyAgICB2aXJ0dWFsIFBsYXRmb3Jt
R0xPYmplY3QgZ2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nKFBsYXRmb3JtR0xPYmplY3QgcHJv
Z3JhbSwgR0NHTHVpbnQgaW5kZXgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcGF1c2VUcmFuc2Zv
cm1GZWVkYmFjaygpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVzdW1lVHJhbnNmb3JtRmVlZGJh
Y2soKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgYmluZEJ1ZmZlckJhc2UoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMdWludCBpbmRleCwgUGxhdGZvcm1HTE9iamVjdCBidWZmZXIpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgYmluZEJ1ZmZlclJhbmdlKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5k
ZXgsIFBsYXRmb3JtR0xPYmplY3QgYnVmZmVyLCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVp
cHRyIHNpemUpID0gMDsKKyAgICAvLyBnZXRJbmRleGVkUGFyYW1ldGVyIC0+IHVzZSBnZXRQYXJh
bWV0ZXIgY2FsbHMgYWJvdmUuCisgICAgdmlydHVhbCBWZWN0b3I8R0NHTHVpbnQ+IGdldFVuaWZv
cm1JbmRpY2VzKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9yPFN0cmluZz4m
IHVuaWZvcm1OYW1lcykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRBY3RpdmVVbmlmb3JtcyhQ
bGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxHQ0dMdWludD4mIHVuaWZvcm1J
bmRpY2VzLCBHQ0dMZW51bSBwbmFtZSwgVmVjdG9yPEdDR0xpbnQ+JiBwYXJhbXMpID0gMDsKIAor
ICAgIHZpcnR1YWwgR0NHTHVpbnQgZ2V0VW5pZm9ybUJsb2NrSW5kZXgoUGxhdGZvcm1HTE9iamVj
dCBwcm9ncmFtLCBjb25zdCBTdHJpbmcmIHVuaWZvcm1CbG9ja05hbWUpID0gMDsKKyAgICAvLyBn
ZXRBY3RpdmVVbmlmb3JtQmxvY2tQYXJhbWV0ZXIKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0QWN0aXZl
VW5pZm9ybUJsb2NraXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3Jt
QmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHBhcmFtcykgPSAwOworICAgIHZp
cnR1YWwgU3RyaW5nIGdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUoUGxhdGZvcm1HTE9iamVjdCBw
cm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCB1bmlmb3JtQmxvY2tCaW5kaW5nKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQg
dW5pZm9ybUJsb2NrSW5kZXgsIEdDR0x1aW50IHVuaWZvcm1CbG9ja0JpbmRpbmcpID0gMDsKKwor
ICAgIHZpcnR1YWwgdm9pZCB0ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZl
bCwgR0NHTGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dM
aW50cHRyIHBib09mZnNldCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB0ZXhJbWFnZTJEKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCBjb25zdCB2b2lkKiBzcmNEYXRhLCBHQ0dMdWludCBzcmNPZmZz
ZXQpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCB0ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0
eXBlLCBHQ0dMaW50cHRyIHBib09mZnNldCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB0ZXhTdWJJ
bWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBH
Q0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVu
dW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBjb25zdCB2b2lkKiBzcmNEYXRhLCBHQ0dMdWludCBz
cmNPZmZzZXQpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UyRChH
Q0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6
ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBj
b21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xl
bnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdD
R0xpbnQgYm9yZGVyLCBjb25zdCB2b2lkKiBzcmNEYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdD
R0x1aW50IHNyY0xlbmd0aE92ZXJyaWRlKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgY29tcHJl
c3NlZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50
IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zm
c2V0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZz
ZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBj
b25zdCB2b2lkKiBzcmNEYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0
aE92ZXJyaWRlKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTFmdihHQ0dMaW50IGxv
Y2F0aW9uLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVp
bnQgc3JjTGVuZ3RoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVuaWZvcm0yZnYoR0NHTGludCBs
b2NhdGlvbiwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1
aW50IHNyY0xlbmd0aCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtM2Z2KEdDR0xpbnQg
bG9jYXRpb24sIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dM
dWludCBzcmNMZW5ndGgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTRmdihHQ0dMaW50
IGxvY2F0aW9uLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NH
THVpbnQgc3JjTGVuZ3RoKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTFpdihHQ0dM
aW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMaW50KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdD
R0x1aW50IHNyY0xlbmd0aCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtMml2KEdDR0xp
bnQgbG9jYXRpb24sIGNvbnN0IEdDR0xpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NH
THVpbnQgc3JjTGVuZ3RoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVuaWZvcm0zaXYoR0NHTGlu
dCBsb2NhdGlvbiwgY29uc3QgR0NHTGludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dM
dWludCBzcmNMZW5ndGgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTRpdihHQ0dMaW50
IGxvY2F0aW9uLCBjb25zdCBHQ0dMaW50KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1
aW50IHNyY0xlbmd0aCkgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHVuaWZvcm1NYXRyaXgyZnYo
R0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQq
IGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHVuaWZvcm1NYXRyaXgzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xl
YW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwg
R0NHTHVpbnQgc3JjTGVuZ3RoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVuaWZvcm1NYXRyaXg0
ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxv
YXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSA9IDA7CisK
KyAgICB2aXJ0dWFsIHZvaWQgcmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5
cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlYWRQaXhlbHMo
R0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBjb25zdCB2b2lkKiBkc3REYXRhLCBHQ0dM
dWludCBkc3RPZmZzZXQpID0gMDsKKwogICAgIC8vID09PT09PT09PT0gTm9uLVdlYkdMIGJhc2Vk
IGVudHJ5IHBvaW50cy4KIAogICAgIHN0YXRpYyB1bnNpZ25lZCBnZXRDbGVhckJpdHNCeUF0dGFj
aG1lbnRUeXBlKEdDR0xlbnVtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKaW5k
ZXggMDRmYjliNGUzMmViYjg0NjgxNzllODYxMGJmMzljZmQ2MjE4ZDRiZi4uYWMxNjIxYzAwMDE3
YTk4YzRhOGE0OTVhOWY2ZmU0NDM2NGY5NDc5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMLmgKQEAgLTExMyw5ICsxMTMsOSBAQCBwdWJsaWM6CiAgICAgUGxhdGZvcm1HcmFwaGlj
c0NvbnRleHRHTENvbmZpZyBwbGF0Zm9ybUNvbmZpZygpIGNvbnN0IHsgcmV0dXJuIG1fY29uZmln
T2JqOyB9CiAjZW5kaWYgLy8gVVNFKEFOR0xFKQogI2Vsc2UKLSAgICBQbGF0Zm9ybUdyYXBoaWNz
Q29udGV4dEdMIHBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0woKSBjb25zdCBvdmVycmlkZTsKLSAg
ICBQbGF0Zm9ybUdMT2JqZWN0IHBsYXRmb3JtVGV4dHVyZSgpIGNvbnN0IG92ZXJyaWRlOwotICAg
IFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBvdmVycmlkZTsKKyAgICBQbGF0
Zm9ybUdyYXBoaWNzQ29udGV4dEdMIHBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0woKSBjb25zdCBm
aW5hbDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IHBsYXRmb3JtVGV4dHVyZSgpIGNvbnN0IGZpbmFs
OworICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBmaW5hbDsKICNlbmRp
ZgogCiAgICAgYm9vbCBtYWtlQ29udGV4dEN1cnJlbnQoKTsKQEAgLTE5NiwxODMgKzE5NiwzMjAg
QEAgcHVibGljOgogICAgIC8vIEVudHJ5IHBvaW50cyBmb3IgV2ViR0wuCiAgICAgLy8KIAotICAg
IHZvaWQgYWN0aXZlVGV4dHVyZShHQ0dMZW51bSB0ZXh0dXJlKSBvdmVycmlkZTsKLSAgICB2b2lk
IGF0dGFjaFNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIFBsYXRmb3JtR0xPYmplY3Qg
c2hhZGVyKSBvdmVycmlkZTsKLSAgICB2b2lkIGJpbmRBdHRyaWJMb2NhdGlvbihQbGF0Zm9ybUdM
T2JqZWN0LCBHQ0dMdWludCBpbmRleCwgY29uc3QgU3RyaW5nJiBuYW1lKSBvdmVycmlkZTsKLSAg
ICB2b2lkIGJpbmRCdWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0KSBvdmVy
cmlkZTsKLSAgICB2b2lkIGJpbmRGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3Jt
R0xPYmplY3QpIG92ZXJyaWRlOwotICAgIHZvaWQgYmluZFJlbmRlcmJ1ZmZlcihHQ0dMZW51bSB0
YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwotICAgIHZvaWQgYmluZFRleHR1cmUo
R0NHTGVudW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKLSAgICB2b2lkIGJs
ZW5kQ29sb3IoR0NHTGNsYW1wZiByZWQsIEdDR0xjbGFtcGYgZ3JlZW4sIEdDR0xjbGFtcGYgYmx1
ZSwgR0NHTGNsYW1wZiBhbHBoYSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBibGVuZEVxdWF0aW9uKEdD
R0xlbnVtIG1vZGUpIG92ZXJyaWRlOwotICAgIHZvaWQgYmxlbmRFcXVhdGlvblNlcGFyYXRlKEdD
R0xlbnVtIG1vZGVSR0IsIEdDR0xlbnVtIG1vZGVBbHBoYSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBi
bGVuZEZ1bmMoR0NHTGVudW0gc2ZhY3RvciwgR0NHTGVudW0gZGZhY3Rvcikgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBibGVuZEZ1bmNTZXBhcmF0ZShHQ0dMZW51bSBzcmNSR0IsIEdDR0xlbnVtIGRzdFJH
QiwgR0NHTGVudW0gc3JjQWxwaGEsIEdDR0xlbnVtIGRzdEFscGhhKSBvdmVycmlkZTsKLQotICAg
IHZvaWQgYnVmZmVyRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaXB0ciBzaXplLCBHQ0dM
ZW51bSB1c2FnZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBidWZmZXJEYXRhKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTHNpemVpcHRyIHNpemUsIGNvbnN0IHZvaWQqIGRhdGEsIEdDR0xlbnVtIHVzYWdlKSBv
dmVycmlkZTsKLSAgICB2b2lkIGJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
cHRyIG9mZnNldCwgR0NHTHNpemVpcHRyIHNpemUsIGNvbnN0IHZvaWQqIGRhdGEpIG92ZXJyaWRl
OwotCi0gICAgdm9pZCogbWFwQnVmZmVyUmFuZ2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRy
IG9mZnNldCwgR0NHTHNpemVpcHRyIGxlbmd0aCwgR0NHTGJpdGZpZWxkIGFjY2Vzcykgb3ZlcnJp
ZGU7Ci0gICAgR0NHTGJvb2xlYW4gdW5tYXBCdWZmZXIoR0NHTGVudW0gdGFyZ2V0KSBvdmVycmlk
ZTsKLSAgICB2b2lkIGNvcHlCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHJlYWRUYXJnZXQsIEdDR0xl
bnVtIHdyaXRlVGFyZ2V0LCBHQ0dMaW50cHRyIHJlYWRPZmZzZXQsIEdDR0xpbnRwdHIgd3JpdGVP
ZmZzZXQsIEdDR0xzaXplaXB0cikgb3ZlcnJpZGU7Ci0KLSAgICB2b2lkIGdldEludGVybmFsZm9y
bWF0aXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMaW50KiBwYXJhbXMpIG92ZXJyaWRlOwotICAg
IHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKEdDR0xlbnVtIHRhcmdldCwgR0NH
THNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQpIG92ZXJyaWRlOwotCi0gICAgdm9pZCB0ZXhTdG9yYWdlMkQoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgbGV2ZWxzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBvdmVycmlkZTsKLSAgICB2b2lkIHRl
eFN0b3JhZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBsZXZlbHMsIEdDR0xlbnVtIGlu
dGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXpl
aSBkZXB0aCkgb3ZlcnJpZGU7Ci0KLSAgICB2b2lkIGdldEFjdGl2ZVVuaWZvcm1zKFBsYXRmb3Jt
R0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9yPEdDR0x1aW50PiYgdW5pZm9ybUluZGljZXMs
IEdDR0xlbnVtIHBuYW1lLCBWZWN0b3I8R0NHTGludD4mIHBhcmFtcykgb3ZlcnJpZGU7Ci0KLSAg
ICBHQ0dMZW51bSBjaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdDR0xlbnVtIHRhcmdldCkgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBjbGVhcihHQ0dMYml0ZmllbGQgbWFzaykgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBjbGVhckNvbG9yKEdDR0xjbGFtcGYgcmVkLCBHQ0dMY2xhbXBmIGdyZWVuLCBHQ0dMY2xhbXBm
IGJsdWUsIEdDR0xjbGFtcGYgYWxwaGEpIG92ZXJyaWRlOwotICAgIHZvaWQgY2xlYXJEZXB0aChH
Q0dMY2xhbXBmIGRlcHRoKSBvdmVycmlkZTsKLSAgICB2b2lkIGNsZWFyU3RlbmNpbChHQ0dMaW50
IHMpIG92ZXJyaWRlOwotICAgIHZvaWQgY29sb3JNYXNrKEdDR0xib29sZWFuIHJlZCwgR0NHTGJv
b2xlYW4gZ3JlZW4sIEdDR0xib29sZWFuIGJsdWUsIEdDR0xib29sZWFuIGFscGhhKSBvdmVycmlk
ZTsKLSAgICB2b2lkIGNvbXBpbGVTaGFkZXIoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7Ci0K
LSAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBs
ZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IHZvaWQq
IGRhdGEpIG92ZXJyaWRlOwotICAgIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNl
dCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdD
R0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IHZvaWQqIGRhdGEpIG92ZXJyaWRlOwotICAgIHZvaWQg
Y29weVRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBp
bnRlcm5hbGZvcm1hdCwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIpIG92ZXJyaWRlOwotICAgIHZvaWQgY29weVRl
eFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZz
ZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjdWxsRmFjZShHQ0dMZW51
bSBtb2RlKSBvdmVycmlkZTsKLSAgICB2b2lkIGRlcHRoRnVuYyhHQ0dMZW51bSBmdW5jKSBvdmVy
cmlkZTsKLSAgICB2b2lkIGRlcHRoTWFzayhHQ0dMYm9vbGVhbiBmbGFnKSBvdmVycmlkZTsKLSAg
ICB2b2lkIGRlcHRoUmFuZ2UoR0NHTGNsYW1wZiB6TmVhciwgR0NHTGNsYW1wZiB6RmFyKSBvdmVy
cmlkZTsKLSAgICB2b2lkIGRldGFjaFNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0LCBQbGF0Zm9ybUdM
T2JqZWN0KSBvdmVycmlkZTsKLSAgICB2b2lkIGRpc2FibGUoR0NHTGVudW0gY2FwKSBvdmVycmlk
ZTsKLSAgICB2b2lkIGRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShHQ0dMdWludCBpbmRleCkgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBkcmF3QXJyYXlzKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3Qs
IEdDR0xzaXplaSBjb3VudCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkcmF3RWxlbWVudHMoR0NHTGVu
dW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNl
dCkgb3ZlcnJpZGU7Ci0KLSAgICB2b2lkIGVuYWJsZShHQ0dMZW51bSBjYXApIG92ZXJyaWRlOwot
ICAgIHZvaWQgZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoR0NHTHVpbnQgaW5kZXgpIG92ZXJyaWRl
OwotICAgIHZvaWQgZmluaXNoKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBmbHVzaCgpIG92ZXJyaWRl
OwotICAgIHZvaWQgZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
ZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSByZW5kZXJidWZmZXJ0YXJnZXQsIFBsYXRmb3JtR0xP
YmplY3QpIG92ZXJyaWRlOwotICAgIHZvaWQgZnJhbWVidWZmZXJUZXh0dXJlMkQoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSB0ZXh0YXJnZXQsIFBsYXRmb3Jt
R0xPYmplY3QsIEdDR0xpbnQgbGV2ZWwpIG92ZXJyaWRlOwotICAgIHZvaWQgZnJvbnRGYWNlKEdD
R0xlbnVtIG1vZGUpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2VuZXJhdGVNaXBtYXAoR0NHTGVudW0g
dGFyZ2V0KSBvdmVycmlkZTsKLQotICAgIGJvb2wgZ2V0QWN0aXZlQXR0cmliKFBsYXRmb3JtR0xP
YmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGFjdGl2ZVRleHR1cmUoR0NHTGVudW0gdGV4dHVyZSkgZmluYWw7CisgICAgdm9pZCBh
dHRhY2hTaGFkZXIoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBQbGF0Zm9ybUdMT2JqZWN0IHNo
YWRlcikgZmluYWw7CisgICAgdm9pZCBiaW5kQXR0cmliTG9jYXRpb24oUGxhdGZvcm1HTE9iamVj
dCwgR0NHTHVpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgbmFtZSkgZmluYWw7CisgICAgdm9pZCBi
aW5kQnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCkgZmluYWw7CisgICAg
dm9pZCBiaW5kRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0KSBm
aW5hbDsKKyAgICB2b2lkIGJpbmRSZW5kZXJidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBQbGF0Zm9y
bUdMT2JqZWN0KSBmaW5hbDsKKyAgICB2b2lkIGJpbmRUZXh0dXJlKEdDR0xlbnVtIHRhcmdldCwg
UGxhdGZvcm1HTE9iamVjdCkgZmluYWw7CisgICAgdm9pZCBibGVuZENvbG9yKEdDR0xjbGFtcGYg
cmVkLCBHQ0dMY2xhbXBmIGdyZWVuLCBHQ0dMY2xhbXBmIGJsdWUsIEdDR0xjbGFtcGYgYWxwaGEp
IGZpbmFsOworICAgIHZvaWQgYmxlbmRFcXVhdGlvbihHQ0dMZW51bSBtb2RlKSBmaW5hbDsKKyAg
ICB2b2lkIGJsZW5kRXF1YXRpb25TZXBhcmF0ZShHQ0dMZW51bSBtb2RlUkdCLCBHQ0dMZW51bSBt
b2RlQWxwaGEpIGZpbmFsOworICAgIHZvaWQgYmxlbmRGdW5jKEdDR0xlbnVtIHNmYWN0b3IsIEdD
R0xlbnVtIGRmYWN0b3IpIGZpbmFsOworICAgIHZvaWQgYmxlbmRGdW5jU2VwYXJhdGUoR0NHTGVu
dW0gc3JjUkdCLCBHQ0dMZW51bSBkc3RSR0IsIEdDR0xlbnVtIHNyY0FscGhhLCBHQ0dMZW51bSBk
c3RBbHBoYSkgZmluYWw7CisKKyAgICB2b2lkIGJ1ZmZlckRhdGEoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMc2l6ZWlwdHIgc2l6ZSwgR0NHTGVudW0gdXNhZ2UpIGZpbmFsOworICAgIHZvaWQgYnVmZmVy
RGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaXB0ciBzaXplLCBjb25zdCB2b2lkKiBkYXRh
LCBHQ0dMZW51bSB1c2FnZSkgZmluYWw7CisgICAgdm9pZCBidWZmZXJTdWJEYXRhKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xzaXplaXB0ciBzaXplLCBjb25zdCB2b2lk
KiBkYXRhKSBmaW5hbDsKKworICAgIEdDR0xlbnVtIGNoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0NH
TGVudW0gdGFyZ2V0KSBmaW5hbDsKKyAgICB2b2lkIGNsZWFyKEdDR0xiaXRmaWVsZCBtYXNrKSBm
aW5hbDsKKyAgICB2b2lkIGNsZWFyQ29sb3IoR0NHTGNsYW1wZiByZWQsIEdDR0xjbGFtcGYgZ3Jl
ZW4sIEdDR0xjbGFtcGYgYmx1ZSwgR0NHTGNsYW1wZiBhbHBoYSkgZmluYWw7CisgICAgdm9pZCBj
bGVhckRlcHRoKEdDR0xjbGFtcGYgZGVwdGgpIGZpbmFsOworICAgIHZvaWQgY2xlYXJTdGVuY2ls
KEdDR0xpbnQgcykgZmluYWw7CisgICAgdm9pZCBjb2xvck1hc2soR0NHTGJvb2xlYW4gcmVkLCBH
Q0dMYm9vbGVhbiBncmVlbiwgR0NHTGJvb2xlYW4gYmx1ZSwgR0NHTGJvb2xlYW4gYWxwaGEpIGZp
bmFsOworICAgIHZvaWQgY29tcGlsZVNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0KSBmaW5hbDsKKwor
ICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxl
dmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgY29uc3Qgdm9pZCog
ZGF0YSkgZmluYWw7CisgICAgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0
YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNp
emVpIGltYWdlU2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkgZmluYWw7CisgICAgdm9pZCBjb3B5VGV4
SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFs
Zm9ybWF0LCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0LCBHQ0dMaW50IGJvcmRlcikgZmluYWw7CisgICAgdm9pZCBjb3B5VGV4U3ViSW1hZ2Uy
RChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGlu
dCB5b2Zmc2V0LCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0KSBmaW5hbDsKKyAgICB2b2lkIGN1bGxGYWNlKEdDR0xlbnVtIG1vZGUpIGZpbmFs
OworICAgIHZvaWQgZGVwdGhGdW5jKEdDR0xlbnVtIGZ1bmMpIGZpbmFsOworICAgIHZvaWQgZGVw
dGhNYXNrKEdDR0xib29sZWFuIGZsYWcpIGZpbmFsOworICAgIHZvaWQgZGVwdGhSYW5nZShHQ0dM
Y2xhbXBmIHpOZWFyLCBHQ0dMY2xhbXBmIHpGYXIpIGZpbmFsOworICAgIHZvaWQgZGV0YWNoU2hh
ZGVyKFBsYXRmb3JtR0xPYmplY3QsIFBsYXRmb3JtR0xPYmplY3QpIGZpbmFsOworICAgIHZvaWQg
ZGlzYWJsZShHQ0dMZW51bSBjYXApIGZpbmFsOworICAgIHZvaWQgZGlzYWJsZVZlcnRleEF0dHJp
YkFycmF5KEdDR0x1aW50IGluZGV4KSBmaW5hbDsKKyAgICB2b2lkIGRyYXdBcnJheXMoR0NHTGVu
dW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50KSBmaW5hbDsKKyAgICB2b2lk
IGRyYXdFbGVtZW50cyhHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5
cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKKworICAgIHZvaWQgZW5hYmxlKEdDR0xlbnVt
IGNhcCkgZmluYWw7CisgICAgdm9pZCBlbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShHQ0dMdWludCBp
bmRleCkgZmluYWw7CisgICAgdm9pZCBmaW5pc2goKSBmaW5hbDsKKyAgICB2b2lkIGZsdXNoKCkg
ZmluYWw7CisgICAgdm9pZCBmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQs
IEdDR0xlbnVtIGF0dGFjaG1lbnQsIEdDR0xlbnVtIHJlbmRlcmJ1ZmZlcnRhcmdldCwgUGxhdGZv
cm1HTE9iamVjdCkgZmluYWw7CisgICAgdm9pZCBmcmFtZWJ1ZmZlclRleHR1cmUyRChHQ0dMZW51
bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQsIEdDR0xlbnVtIHRleHRhcmdldCwgUGxhdGZv
cm1HTE9iamVjdCwgR0NHTGludCBsZXZlbCkgZmluYWw7CisgICAgdm9pZCBmcm9udEZhY2UoR0NH
TGVudW0gbW9kZSkgZmluYWw7CisgICAgdm9pZCBnZW5lcmF0ZU1pcG1hcChHQ0dMZW51bSB0YXJn
ZXQpIGZpbmFsOworCisgICAgYm9vbCBnZXRBY3RpdmVBdHRyaWIoUGxhdGZvcm1HTE9iamVjdCBw
cm9ncmFtLCBHQ0dMdWludCBpbmRleCwgQWN0aXZlSW5mbyYpIGZpbmFsOwogICAgIGJvb2wgZ2V0
QWN0aXZlQXR0cmliSW1wbChQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IGluZGV4
LCBBY3RpdmVJbmZvJik7Ci0gICAgYm9vbCBnZXRBY3RpdmVVbmlmb3JtKFBsYXRmb3JtR0xPYmpl
Y3QgcHJvZ3JhbSwgR0NHTHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mKSBvdmVycmlkZTsKKyAgICBi
b29sIGdldEFjdGl2ZVVuaWZvcm0oUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCBp
bmRleCwgQWN0aXZlSW5mbyYpIGZpbmFsOwogICAgIGJvb2wgZ2V0QWN0aXZlVW5pZm9ybUltcGwo
UGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCBpbmRleCwgQWN0aXZlSW5mbyYpOwot
ICAgIHZvaWQgZ2V0QXR0YWNoZWRTaGFkZXJzKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NH
THNpemVpIG1heENvdW50LCBHQ0dMc2l6ZWkqIGNvdW50LCBQbGF0Zm9ybUdMT2JqZWN0KiBzaGFk
ZXJzKSBvdmVycmlkZTsKLSAgICBHQ0dMaW50IGdldEF0dHJpYkxvY2F0aW9uKFBsYXRmb3JtR0xP
YmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRCb29sZWFu
dihHQ0dMZW51bSBwbmFtZSwgR0NHTGJvb2xlYW4qIHZhbHVlKSBvdmVycmlkZTsKLSAgICB2b2lk
IGdldEJ1ZmZlclBhcmFtZXRlcml2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdD
R0xpbnQqIHZhbHVlKSBvdmVycmlkZTsKLSAgICBHQ0dMZW51bSBnZXRFcnJvcigpIG92ZXJyaWRl
OwotICAgIHZvaWQgZ2V0RmxvYXR2KEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQqIHZhbHVlKSBv
dmVycmlkZTsKLSAgICB2b2lkIGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KEdD
R0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgR0NHTGVudW0gcG5hbWUsIEdDR0xp
bnQqIHZhbHVlKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldEludGVnZXJ2KEdDR0xlbnVtIHBuYW1l
LCBHQ0dMaW50KiB2YWx1ZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRJbnRlZ2VyNjR2KEdDR0xl
bnVtIHBuYW1lLCBHQ0dMaW50NjQqIHZhbHVlKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFByb2dy
YW1pdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2
YWx1ZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBnZXRBdHRhY2hlZFNoYWRlcnMoUGxhdGZvcm1HTE9i
amVjdCBwcm9ncmFtLCBHQ0dMc2l6ZWkgbWF4Q291bnQsIEdDR0xzaXplaSogY291bnQsIFBsYXRm
b3JtR0xPYmplY3QqIHNoYWRlcnMpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0QXR0cmliTG9jYXRp
b24oUGxhdGZvcm1HTE9iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lKSBmaW5hbDsKKyAgICB2b2lk
IGdldEJvb2xlYW52KEdDR0xlbnVtIHBuYW1lLCBHQ0dMYm9vbGVhbiogdmFsdWUpIGZpbmFsOwor
ICAgIHZvaWQgZ2V0QnVmZmVyUGFyYW1ldGVyaXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBw
bmFtZSwgR0NHTGludCogdmFsdWUpIGZpbmFsOworICAgIEdDR0xlbnVtIGdldEVycm9yKCkgZmlu
YWw7CisgICAgdm9pZCBnZXRGbG9hdHYoR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCogdmFsdWUp
IGZpbmFsOworICAgIHZvaWQgZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGlu
dCogdmFsdWUpIGZpbmFsOworICAgIHZvaWQgZ2V0SW50ZWdlcnYoR0NHTGVudW0gcG5hbWUsIEdD
R0xpbnQqIHZhbHVlKSBmaW5hbDsKKyAgICB2b2lkIGdldEludGVnZXI2NHYoR0NHTGVudW0gcG5h
bWUsIEdDR0xpbnQ2NCogdmFsdWUpIGZpbmFsOworICAgIHZvaWQgZ2V0UHJvZ3JhbWl2KFBsYXRm
b3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKSBmaW5h
bDsKICNpZiAhVVNFKEFOR0xFKQogICAgIHZvaWQgZ2V0Tm9uQnVpbHRJbkFjdGl2ZVN5bWJvbENv
dW50KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZh
bHVlKTsKICNlbmRpZiAvLyAhVVNFKEFOR0xFKQotICAgIFN0cmluZyBnZXRQcm9ncmFtSW5mb0xv
ZyhQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKKyAgICBTdHJpbmcgZ2V0UHJvZ3JhbUluZm9M
b2coUGxhdGZvcm1HTE9iamVjdCkgZmluYWw7CiAgICAgU3RyaW5nIGdldFVubWFuZ2xlZEluZm9M
b2coUGxhdGZvcm1HTE9iamVjdFsyXSwgR0NHTHNpemVpLCBjb25zdCBTdHJpbmcmKTsKLSAgICB2
b2lkIGdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xpbnQqIHZhbHVlKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFNoYWRlcml2KFBs
YXRmb3JtR0xPYmplY3QsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkgb3ZlcnJpZGU7
Ci0gICAgU3RyaW5nIGdldFNoYWRlckluZm9Mb2coUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBnZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoR0NHTGVudW0gc2hhZGVyVHlwZSwg
R0NHTGVudW0gcHJlY2lzaW9uVHlwZSwgR0NHTGludCogcmFuZ2UsIEdDR0xpbnQqIHByZWNpc2lv
bikgb3ZlcnJpZGU7Ci0gICAgU3RyaW5nIGdldFNoYWRlclNvdXJjZShQbGF0Zm9ybUdMT2JqZWN0
KSBvdmVycmlkZTsKLSAgICBTdHJpbmcgZ2V0U3RyaW5nKEdDR0xlbnVtIG5hbWUpIG92ZXJyaWRl
OwotICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVyZnYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBw
bmFtZSwgR0NHTGZsb2F0KiB2YWx1ZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRUZXhQYXJhbWV0
ZXJpdihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBnZXRVbmlmb3JtZnYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQqIHZhbHVlKSBvdmVycmlkZTsKLSAgICB2b2lkIGdl
dFVuaWZvcm1pdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xpbnQqIHZhbHVlKSBvdmVycmlkZTsKLSAgICBHQ0dMaW50IGdldFVuaWZvcm1Mb2NhdGlvbihQ
bGF0Zm9ybUdMT2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUpIG92ZXJyaWRlOwotICAgIHZvaWQg
Z2V0VmVydGV4QXR0cmliZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxv
YXQqIHZhbHVlKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFZlcnRleEF0dHJpYml2KEdDR0x1aW50
IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpIG92ZXJyaWRlOwotICAgIEdD
R0xzaXplaXB0ciBnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVt
IHBuYW1lKSBvdmVycmlkZTsKLQotICAgIHZvaWQgaGludChHQ0dMZW51bSB0YXJnZXQsIEdDR0xl
bnVtIG1vZGUpIG92ZXJyaWRlOwotICAgIEdDR0xib29sZWFuIGlzQnVmZmVyKFBsYXRmb3JtR0xP
YmplY3QpIG92ZXJyaWRlOwotICAgIEdDR0xib29sZWFuIGlzRW5hYmxlZChHQ0dMZW51bSBjYXAp
IG92ZXJyaWRlOwotICAgIEdDR0xib29sZWFuIGlzRnJhbWVidWZmZXIoUGxhdGZvcm1HTE9iamVj
dCkgb3ZlcnJpZGU7Ci0gICAgR0NHTGJvb2xlYW4gaXNQcm9ncmFtKFBsYXRmb3JtR0xPYmplY3Qp
IG92ZXJyaWRlOwotICAgIEdDR0xib29sZWFuIGlzUmVuZGVyYnVmZmVyKFBsYXRmb3JtR0xPYmpl
Y3QpIG92ZXJyaWRlOwotICAgIEdDR0xib29sZWFuIGlzU2hhZGVyKFBsYXRmb3JtR0xPYmplY3Qp
IG92ZXJyaWRlOwotICAgIEdDR0xib29sZWFuIGlzVGV4dHVyZShQbGF0Zm9ybUdMT2JqZWN0KSBv
dmVycmlkZTsKLSAgICB2b2lkIGxpbmVXaWR0aChHQ0dMZmxvYXQpIG92ZXJyaWRlOwotICAgIHZv
aWQgbGlua1Byb2dyYW0oUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBwaXhl
bFN0b3JlaShHQ0dMZW51bSBwbmFtZSwgR0NHTGludCBwYXJhbSkgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBwb2x5Z29uT2Zmc2V0KEdDR0xmbG9hdCBmYWN0b3IsIEdDR0xmbG9hdCB1bml0cykgb3ZlcnJp
ZGU7Ci0KLSAgICB2b2lkIHJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBl
LCB2b2lkKiBkYXRhKSBvdmVycmlkZTsKKyAgICB2b2lkIGdldFJlbmRlcmJ1ZmZlclBhcmFtZXRl
cml2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKSBmaW5h
bDsKKyAgICB2b2lkIGdldFNoYWRlcml2KFBsYXRmb3JtR0xPYmplY3QsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMaW50KiB2YWx1ZSkgZmluYWw7CisgICAgU3RyaW5nIGdldFNoYWRlckluZm9Mb2coUGxh
dGZvcm1HTE9iamVjdCkgZmluYWw7CisgICAgdm9pZCBnZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQo
R0NHTGVudW0gc2hhZGVyVHlwZSwgR0NHTGVudW0gcHJlY2lzaW9uVHlwZSwgR0NHTGludCogcmFu
Z2UsIEdDR0xpbnQqIHByZWNpc2lvbikgZmluYWw7CisgICAgU3RyaW5nIGdldFNoYWRlclNvdXJj
ZShQbGF0Zm9ybUdMT2JqZWN0KSBmaW5hbDsKKyAgICBTdHJpbmcgZ2V0U3RyaW5nKEdDR0xlbnVt
IG5hbWUpIGZpbmFsOworICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVyZnYoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0KiB2YWx1ZSkgZmluYWw7CisgICAgdm9pZCBnZXRU
ZXhQYXJhbWV0ZXJpdihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2
YWx1ZSkgZmluYWw7CisgICAgdm9pZCBnZXRVbmlmb3JtZnYoUGxhdGZvcm1HTE9iamVjdCBwcm9n
cmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQqIHZhbHVlKSBmaW5hbDsKKyAgICB2b2lk
IGdldFVuaWZvcm1pdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xpbnQqIHZhbHVlKSBmaW5hbDsKKyAgICBHQ0dMaW50IGdldFVuaWZvcm1Mb2NhdGlvbihQ
bGF0Zm9ybUdMT2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUpIGZpbmFsOworICAgIHZvaWQgZ2V0
VmVydGV4QXR0cmliZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQq
IHZhbHVlKSBmaW5hbDsKKyAgICB2b2lkIGdldFZlcnRleEF0dHJpYml2KEdDR0x1aW50IGluZGV4
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpIGZpbmFsOworICAgIEdDR0xzaXplaXB0
ciBnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lKSBm
aW5hbDsKKworICAgIHZvaWQgaGludChHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIG1vZGUpIGZp
bmFsOworICAgIEdDR0xib29sZWFuIGlzQnVmZmVyKFBsYXRmb3JtR0xPYmplY3QpIGZpbmFsOwor
ICAgIEdDR0xib29sZWFuIGlzRW5hYmxlZChHQ0dMZW51bSBjYXApIGZpbmFsOworICAgIEdDR0xi
b29sZWFuIGlzRnJhbWVidWZmZXIoUGxhdGZvcm1HTE9iamVjdCkgZmluYWw7CisgICAgR0NHTGJv
b2xlYW4gaXNQcm9ncmFtKFBsYXRmb3JtR0xPYmplY3QpIGZpbmFsOworICAgIEdDR0xib29sZWFu
IGlzUmVuZGVyYnVmZmVyKFBsYXRmb3JtR0xPYmplY3QpIGZpbmFsOworICAgIEdDR0xib29sZWFu
IGlzU2hhZGVyKFBsYXRmb3JtR0xPYmplY3QpIGZpbmFsOworICAgIEdDR0xib29sZWFuIGlzVGV4
dHVyZShQbGF0Zm9ybUdMT2JqZWN0KSBmaW5hbDsKKyAgICB2b2lkIGxpbmVXaWR0aChHQ0dMZmxv
YXQpIGZpbmFsOworICAgIHZvaWQgbGlua1Byb2dyYW0oUGxhdGZvcm1HTE9iamVjdCkgZmluYWw7
CisgICAgdm9pZCBwaXhlbFN0b3JlaShHQ0dMZW51bSBwbmFtZSwgR0NHTGludCBwYXJhbSkgZmlu
YWw7CisgICAgdm9pZCBwb2x5Z29uT2Zmc2V0KEdDR0xmbG9hdCBmYWN0b3IsIEdDR0xmbG9hdCB1
bml0cykgZmluYWw7CisKKyAgICB2b2lkIHJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHks
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dM
ZW51bSB0eXBlLCB2b2lkKiBkYXRhKSBmaW5hbDsKIAogICAgIHZvaWQgcmVsZWFzZVNoYWRlckNv
bXBpbGVyKCk7CiAKLSAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2UoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0KSBvdmVycmlkZTsKLSAgICB2b2lkIHNhbXBsZUNvdmVyYWdlKEdDR0xjbGFtcGYgdmFsdWUs
IEdDR0xib29sZWFuIGludmVydCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzY2lzc29yKEdDR0xpbnQg
eCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpIG92ZXJyaWRl
OwotICAgIHZvaWQgc2hhZGVyU291cmNlKFBsYXRmb3JtR0xPYmplY3QsIGNvbnN0IFN0cmluZyYg
c3RyaW5nKSBvdmVycmlkZTsKLSAgICB2b2lkIHN0ZW5jaWxGdW5jKEdDR0xlbnVtIGZ1bmMsIEdD
R0xpbnQgcmVmLCBHQ0dMdWludCBtYXNrKSBvdmVycmlkZTsKLSAgICB2b2lkIHN0ZW5jaWxGdW5j
U2VwYXJhdGUoR0NHTGVudW0gZmFjZSwgR0NHTGVudW0gZnVuYywgR0NHTGludCByZWYsIEdDR0x1
aW50IG1hc2spIG92ZXJyaWRlOwotICAgIHZvaWQgc3RlbmNpbE1hc2soR0NHTHVpbnQgbWFzaykg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBzdGVuY2lsTWFza1NlcGFyYXRlKEdDR0xlbnVtIGZhY2UsIEdD
R0x1aW50IG1hc2spIG92ZXJyaWRlOwotICAgIHZvaWQgc3RlbmNpbE9wKEdDR0xlbnVtIGZhaWws
IEdDR0xlbnVtIHpmYWlsLCBHQ0dMZW51bSB6cGFzcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzdGVu
Y2lsT3BTZXBhcmF0ZShHQ0dMZW51bSBmYWNlLCBHQ0dMZW51bSBmYWlsLCBHQ0dMZW51bSB6ZmFp
bCwgR0NHTGVudW0genBhc3MpIG92ZXJyaWRlOwotCi0gICAgYm9vbCB0ZXhJbWFnZTJEKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZv
cm1hdCwgR0NHTGVudW0gdHlwZSwgY29uc3Qgdm9pZCogcGl4ZWxzKSBvdmVycmlkZTsKLSAgICB2
b2lkIHRleFBhcmFtZXRlcmYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZs
b2F0IHBhcmFtKSBvdmVycmlkZTsKLSAgICB2b2lkIHRleFBhcmFtZXRlcmkoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCBwYXJhbSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCB0
ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zm
c2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBjb25zdCB2b2lkKiBwaXhlbHMpIG92ZXJy
aWRlOwotCi0gICAgdm9pZCB1bmlmb3JtMWYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgp
IG92ZXJyaWRlOwotICAgIHZvaWQgdW5pZm9ybTFmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6
ZWksIGNvbnN0IEdDR0xmbG9hdCogdikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB1bmlmb3JtMWkoR0NH
TGludCBsb2NhdGlvbiwgR0NHTGludCB4KSBvdmVycmlkZTsKLSAgICB2b2lkIHVuaWZvcm0xaXYo
R0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpLCBjb25zdCBHQ0dMaW50KiB2KSBvdmVycmlkZTsK
LSAgICB2b2lkIHVuaWZvcm0yZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgeCwgR0NHTGZs
b2F0IHkpIG92ZXJyaWRlOwotICAgIHZvaWQgdW5pZm9ybTJmdihHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMc2l6ZWksIGNvbnN0IEdDR0xmbG9hdCogdikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB1bmlmb3Jt
MmkoR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB4LCBHQ0dMaW50IHkpIG92ZXJyaWRlOwotICAg
IHZvaWQgdW5pZm9ybTJpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xp
bnQqIHYpIG92ZXJyaWRlOwotICAgIHZvaWQgdW5pZm9ybTNmKEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSwgR0NHTGZsb2F0IHopIG92ZXJyaWRlOwotICAgIHZvaWQg
dW5pZm9ybTNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xmbG9hdCog
dikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB1bmlmb3JtM2koR0NHTGludCBsb2NhdGlvbiwgR0NHTGlu
dCB4LCBHQ0dMaW50IHksIEdDR0xpbnQgeikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB1bmlmb3JtM2l2
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSwgY29uc3QgR0NHTGludCogdikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCB1bmlmb3JtNGYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgsIEdDR0xm
bG9hdCB5LCBHQ0dMZmxvYXQgeiwgR0NHTGZsb2F0IHcpIG92ZXJyaWRlOwotICAgIHZvaWQgdW5p
Zm9ybTRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xmbG9hdCogdikg
b3ZlcnJpZGU7Ci0gICAgdm9pZCB1bmlmb3JtNGkoR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB4
LCBHQ0dMaW50IHksIEdDR0xpbnQgeiwgR0NHTGludCB3KSBvdmVycmlkZTsKLSAgICB2b2lkIHVu
aWZvcm00aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpLCBjb25zdCBHQ0dMaW50KiB2KSBv
dmVycmlkZTsKLSAgICB2b2lkIHVuaWZvcm1NYXRyaXgyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NH
THNpemVpLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogdmFsdWUpIG92
ZXJyaWRlOwotICAgIHZvaWQgdW5pZm9ybU1hdHJpeDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
c2l6ZWksIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiB2YWx1ZSkgb3Zl
cnJpZGU7Ci0gICAgdm9pZCB1bmlmb3JtTWF0cml4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xz
aXplaSwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIHZhbHVlKSBvdmVy
cmlkZTsKLQotICAgIHZvaWQgdXNlUHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsK
LSAgICB2b2lkIHZhbGlkYXRlUHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKKyAg
ICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRl
cm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBmaW5hbDsKKyAg
ICB2b2lkIHNhbXBsZUNvdmVyYWdlKEdDR0xjbGFtcGYgdmFsdWUsIEdDR0xib29sZWFuIGludmVy
dCkgZmluYWw7CisgICAgdm9pZCBzY2lzc29yKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpIGZpbmFsOworICAgIHZvaWQgc2hhZGVyU291cmNl
KFBsYXRmb3JtR0xPYmplY3QsIGNvbnN0IFN0cmluZyYgc3RyaW5nKSBmaW5hbDsKKyAgICB2b2lk
IHN0ZW5jaWxGdW5jKEdDR0xlbnVtIGZ1bmMsIEdDR0xpbnQgcmVmLCBHQ0dMdWludCBtYXNrKSBm
aW5hbDsKKyAgICB2b2lkIHN0ZW5jaWxGdW5jU2VwYXJhdGUoR0NHTGVudW0gZmFjZSwgR0NHTGVu
dW0gZnVuYywgR0NHTGludCByZWYsIEdDR0x1aW50IG1hc2spIGZpbmFsOworICAgIHZvaWQgc3Rl
bmNpbE1hc2soR0NHTHVpbnQgbWFzaykgZmluYWw7CisgICAgdm9pZCBzdGVuY2lsTWFza1NlcGFy
YXRlKEdDR0xlbnVtIGZhY2UsIEdDR0x1aW50IG1hc2spIGZpbmFsOworICAgIHZvaWQgc3RlbmNp
bE9wKEdDR0xlbnVtIGZhaWwsIEdDR0xlbnVtIHpmYWlsLCBHQ0dMZW51bSB6cGFzcykgZmluYWw7
CisgICAgdm9pZCBzdGVuY2lsT3BTZXBhcmF0ZShHQ0dMZW51bSBmYWNlLCBHQ0dMZW51bSBmYWls
LCBHQ0dMZW51bSB6ZmFpbCwgR0NHTGVudW0genBhc3MpIGZpbmFsOworCisgICAgYm9vbCB0ZXhJ
bWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxm
b3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIs
IEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgY29uc3Qgdm9pZCogcGl4ZWxzKSBmaW5h
bDsKKyAgICB2b2lkIHRleFBhcmFtZXRlcmYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTGZsb2F0IHBhcmFtKSBmaW5hbDsKKyAgICB2b2lkIHRleFBhcmFtZXRlcmkoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCBwYXJhbSkgZmluYWw7CisgICAgdm9p
ZCB0ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4
b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBjb25zdCB2b2lkKiBwaXhlbHMpIGZp
bmFsOworCisgICAgdm9pZCB1bmlmb3JtMWYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgp
IGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTFmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWks
IGNvbnN0IEdDR0xmbG9hdCogdikgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtMWkoR0NHTGludCBs
b2NhdGlvbiwgR0NHTGludCB4KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0xaXYoR0NHTGludCBs
b2NhdGlvbiwgR0NHTHNpemVpLCBjb25zdCBHQ0dMaW50KiB2KSBmaW5hbDsKKyAgICB2b2lkIHVu
aWZvcm0yZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHkpIGZpbmFs
OworICAgIHZvaWQgdW5pZm9ybTJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWksIGNvbnN0
IEdDR0xmbG9hdCogdikgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtMmkoR0NHTGludCBsb2NhdGlv
biwgR0NHTGludCB4LCBHQ0dMaW50IHkpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTJpdihHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xpbnQqIHYpIGZpbmFsOworICAgIHZv
aWQgdW5pZm9ybTNmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSwg
R0NHTGZsb2F0IHopIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTNmdihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xmbG9hdCogdikgZmluYWw7CisgICAgdm9pZCB1bmlmb3Jt
M2koR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xpbnQgeikgZmlu
YWw7CisgICAgdm9pZCB1bmlmb3JtM2l2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSwgY29u
c3QgR0NHTGludCogdikgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtNGYoR0NHTGludCBsb2NhdGlv
biwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5LCBHQ0dMZmxvYXQgeiwgR0NHTGZsb2F0IHcpIGZp
bmFsOworICAgIHZvaWQgdW5pZm9ybTRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWksIGNv
bnN0IEdDR0xmbG9hdCogdikgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtNGkoR0NHTGludCBsb2Nh
dGlvbiwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xpbnQgeiwgR0NHTGludCB3KSBmaW5hbDsK
KyAgICB2b2lkIHVuaWZvcm00aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpLCBjb25zdCBH
Q0dMaW50KiB2KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm1NYXRyaXgyZnYoR0NHTGludCBsb2Nh
dGlvbiwgR0NHTHNpemVpLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCog
dmFsdWUpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDNmdihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMc2l6ZWksIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiB2YWx1
ZSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xzaXplaSwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIHZhbHVlKSBm
aW5hbDsKKworICAgIHZvaWQgdXNlUHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0KSBmaW5hbDsKKyAg
ICB2b2lkIHZhbGlkYXRlUHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0KSBmaW5hbDsKICNpZiAhVVNF
KEFOR0xFKQogICAgIGJvb2wgY2hlY2tWYXJ5aW5nc1BhY2tpbmcoUGxhdGZvcm1HTE9iamVjdCB2
ZXJ0ZXhTaGFkZXIsIFBsYXRmb3JtR0xPYmplY3QgZnJhZ21lbnRTaGFkZXIpIGNvbnN0OwogICAg
IGJvb2wgcHJlY2lzaW9uc01hdGNoKFBsYXRmb3JtR0xPYmplY3QgdmVydGV4U2hhZGVyLCBQbGF0
Zm9ybUdMT2JqZWN0IGZyYWdtZW50U2hhZGVyKSBjb25zdDsKICNlbmRpZgogCi0gICAgdm9pZCB2
ZXJ0ZXhBdHRyaWIxZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHgpIG92ZXJyaWRlOwotICAg
IHZvaWQgdmVydGV4QXR0cmliMWZ2KEdDR0x1aW50IGluZGV4LCBjb25zdCBHQ0dMZmxvYXQqIHZh
bHVlcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2ZXJ0ZXhBdHRyaWIyZihHQ0dMdWludCBpbmRleCwg
R0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5KSBvdmVycmlkZTsKLSAgICB2b2lkIHZlcnRleEF0dHJp
YjJmdihHQ0dMdWludCBpbmRleCwgY29uc3QgR0NHTGZsb2F0KiB2YWx1ZXMpIG92ZXJyaWRlOwot
ICAgIHZvaWQgdmVydGV4QXR0cmliM2YoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB4LCBHQ0dM
ZmxvYXQgeSwgR0NHTGZsb2F0IHopIG92ZXJyaWRlOwotICAgIHZvaWQgdmVydGV4QXR0cmliM2Z2
KEdDR0x1aW50IGluZGV4LCBjb25zdCBHQ0dMZmxvYXQqIHZhbHVlcykgb3ZlcnJpZGU7Ci0gICAg
dm9pZCB2ZXJ0ZXhBdHRyaWI0ZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHgsIEdDR0xmbG9h
dCB5LCBHQ0dMZmxvYXQgeiwgR0NHTGZsb2F0IHcpIG92ZXJyaWRlOwotICAgIHZvaWQgdmVydGV4
QXR0cmliNGZ2KEdDR0x1aW50IGluZGV4LCBjb25zdCBHQ0dMZmxvYXQqIHZhbHVlcykgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCB2ZXJ0ZXhBdHRyaWJQb2ludGVyKEdDR0x1aW50IGluZGV4LCBHQ0dMaW50
IHNpemUsIEdDR0xlbnVtIHR5cGUsIEdDR0xib29sZWFuIG5vcm1hbGl6ZWQsIEdDR0xzaXplaSBz
dHJpZGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBvdmVycmlkZTsKKyAgICB2b2lkIHZlcnRleEF0dHJp
YjFmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgeCkgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhB
dHRyaWIxZnYoR0NHTHVpbnQgaW5kZXgsIGNvbnN0IEdDR0xmbG9hdCogdmFsdWVzKSBmaW5hbDsK
KyAgICB2b2lkIHZlcnRleEF0dHJpYjJmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgeCwgR0NH
TGZsb2F0IHkpIGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0cmliMmZ2KEdDR0x1aW50IGluZGV4
LCBjb25zdCBHQ0dMZmxvYXQqIHZhbHVlcykgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIz
ZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5LCBHQ0dMZmxvYXQgeikg
ZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIzZnYoR0NHTHVpbnQgaW5kZXgsIGNvbnN0IEdD
R0xmbG9hdCogdmFsdWVzKSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYjRmKEdDR0x1aW50
IGluZGV4LCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHksIEdDR0xmbG9hdCB6LCBHQ0dMZmxvYXQg
dykgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWI0ZnYoR0NHTHVpbnQgaW5kZXgsIGNvbnN0
IEdDR0xmbG9hdCogdmFsdWVzKSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYlBvaW50ZXIo
R0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQgc2l6ZSwgR0NHTGVudW0gdHlwZSwgR0NHTGJvb2xlYW4g
bm9ybWFsaXplZCwgR0NHTHNpemVpIHN0cmlkZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOwog
Ci0gICAgdm9pZCB2aWV3cG9ydChHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0KSBvdmVycmlkZTsKKyAgICB2b2lkIHZpZXdwb3J0KEdDR0xpbnQg
eCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpIGZpbmFsOwog
CiAgICAgdm9pZCByZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCk7CiAKLSAgICB2b2lkIGRy
YXdBcnJheXNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVp
IGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsKLSAgICB2b2lkIGRyYXdFbGVt
ZW50c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5
cGUsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsKLSAg
ICB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3IoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlz
b3IpIG92ZXJyaWRlOworICAgIHZvaWQgZHJhd0FycmF5c0luc3RhbmNlZChHQ0dMZW51bSBtb2Rl
LCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpIGZp
bmFsOworICAgIHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xz
aXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xzaXplaSBw
cmltY291bnQpIGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0cmliRGl2aXNvcihHQ0dMdWludCBp
bmRleCwgR0NHTHVpbnQgZGl2aXNvcikgZmluYWw7CiAKICAgICAvLyBWZXJ0ZXhBcnJheU9qZWN0
IGNhbGxzCi0gICAgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVWZXJ0ZXhBcnJheSgpIG92ZXJyaWRl
OwotICAgIHZvaWQgZGVsZXRlVmVydGV4QXJyYXkoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7
Ci0gICAgR0NHTGJvb2xlYW4gaXNWZXJ0ZXhBcnJheShQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlk
ZTsKLSAgICB2b2lkIGJpbmRWZXJ0ZXhBcnJheShQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsK
KyAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVZlcnRleEFycmF5KCkgZmluYWw7CisgICAgdm9p
ZCBkZWxldGVWZXJ0ZXhBcnJheShQbGF0Zm9ybUdMT2JqZWN0KSBmaW5hbDsKKyAgICBHQ0dMYm9v
bGVhbiBpc1ZlcnRleEFycmF5KFBsYXRmb3JtR0xPYmplY3QpIGZpbmFsOworICAgIHZvaWQgYmlu
ZFZlcnRleEFycmF5KFBsYXRmb3JtR0xPYmplY3QpIGZpbmFsOworCisgICAgLy8gPT09PT09PT09
PSBXZWJHTCAyIGVudHJ5IHBvaW50cy4KKworICAgIHZvaWQgYnVmZmVyRGF0YShHQ0dMZW51bSB0
YXJnZXQsIGNvbnN0IHZvaWQqIGRhdGEsIEdDR0xlbnVtIHVzYWdlLCBHQ0dMdWludCBzcmNPZmZz
ZXQsIEdDR0x1aW50IGxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBidWZmZXJTdWJEYXRhKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludHB0ciBkc3RCeXRlT2Zmc2V0LCBjb25zdCB2b2lkKiBzcmNEYXRh
LCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IGxlbmd0aCkgZmluYWw7CisKKyAgICB2b2lk
IGNvcHlCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHJlYWRUYXJnZXQsIEdDR0xlbnVtIHdyaXRlVGFy
Z2V0LCBHQ0dMaW50cHRyIHJlYWRPZmZzZXQsIEdDR0xpbnRwdHIgd3JpdGVPZmZzZXQsIEdDR0xz
aXplaXB0ciBzaXplKSBmaW5hbDsKKyAgICB2b2lkIGdldEJ1ZmZlclN1YkRhdGEoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMaW50cHRyIHNyY0J5dGVPZmZzZXQsIGNvbnN0IHZvaWQqIGRzdERhdGEsIEdD
R0x1aW50IGRzdE9mZnNldCwgR0NHTHVpbnQgbGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkKiBtYXBC
dWZmZXJSYW5nZShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWlw
dHIgbGVuZ3RoLCBHQ0dMYml0ZmllbGQgYWNjZXNzKSBmaW5hbDsKKyAgICBHQ0dMYm9vbGVhbiB1
bm1hcEJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQpIGZpbmFsOworCisgICAgdm9pZCBibGl0RnJhbWVi
dWZmZXIoR0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGludCBzcmNYMSwgR0NHTGlu
dCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NHTGludCBkc3RYMSwgR0NH
TGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRlcikgZmluYWw7Cisg
ICAgdm9pZCBmcmFtZWJ1ZmZlclRleHR1cmVMYXllcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVt
IGF0dGFjaG1lbnQsIFBsYXRmb3JtR0xPYmplY3QgdGV4dHVyZSwgR0NHTGludCBsZXZlbCwgR0NH
TGludCBsYXllcikgZmluYWw7CisgICAgdm9pZCBpbnZhbGlkYXRlRnJhbWVidWZmZXIoR0NHTGVu
dW0gdGFyZ2V0LCBjb25zdCBWZWN0b3I8R0NHTGVudW0+JiBhdHRhY2htZW50cykgZmluYWw7Cisg
ICAgdm9pZCBpbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBjb25zdCBW
ZWN0b3I8R0NHTGVudW0+JiBhdHRhY2htZW50cywgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgZmluYWw7CisgICAgdm9pZCByZWFkQnVmZmVy
KEdDR0xlbnVtIHNyYykgZmluYWw7CisKKyAgICAvLyBnZXRJbnRlcm5hbEZvcm1hdFBhcmFtZXRl
cgorICAgIHZvaWQgZ2V0SW50ZXJuYWxmb3JtYXRpdihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVt
IGludGVybmFsZm9ybWF0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xp
bnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1w
bGUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxm
b3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgZmluYWw7CisKKyAgICB2
b2lkIHRleFN0b3JhZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBsZXZlbHMsIEdDR0xl
bnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpIGZp
bmFsOworICAgIHZvaWQgdGV4U3RvcmFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIGxl
dmVscywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCwgR0NHTHNpemVpIGRlcHRoKSBmaW5hbDsKKworICAgIHZvaWQgdGV4SW1hZ2UzRChH
Q0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50
IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIHBib09m
ZnNldCkgZmluYWw7CisgICAgdm9pZCB0ZXhJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dCBsZXZlbCwgR0NHTGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3Jt
YXQsIEdDR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQqIHBpeGVscykgZmluYWw7CisgICAgdm9pZCB0
ZXhJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCBpbnRlcm5h
bGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVw
dGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGNvbnN0
IHZvaWQqIHNyY0RhdGEsIEdDR0x1aW50IHNyY09mZnNldCkgZmluYWw7CisKKyAgICB2b2lkIHRl
eFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZz
ZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCBHQ0dMaW50cHRyIHBib09mZnNldCkgZmluYWw7CisgICAgdm9pZCB0ZXhTdWJJbWFn
ZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dM
aW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwg
Y29uc3Qgdm9pZCogc3JjRGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0KSBmaW5hbDsKKworICAgIHZv
aWQgY29weVRleFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dM
aW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMaW50IHgs
IEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBmaW5hbDsKKwor
ICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxl
dmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VT
aXplLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7CisgICAgdm9pZCBjb21wcmVzc2VkVGV4SW1h
Z2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9y
bWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwg
R0NHTGludCBib3JkZXIsIGNvbnN0IHZvaWQqIHNyY0RhdGEsIEdDR0x1aW50IHNyY09mZnNldCwg
R0NHTHVpbnQgc3JjTGVuZ3RoT3ZlcnJpZGUpIGZpbmFsOworICAgIHZvaWQgY29tcHJlc3NlZFRl
eFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZz
ZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6
ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7CisgICAgdm9pZCBjb21wcmVz
c2VkVGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQg
eG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIGNv
bnN0IHZvaWQqIHNyY0RhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3Ro
T3ZlcnJpZGUpIGZpbmFsOworCisgICAgR0NHTGludCBnZXRGcmFnRGF0YUxvY2F0aW9uKFBsYXRm
b3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgU3RyaW5nJiBuYW1lKSBmaW5hbDsKKworICAgIHZv
aWQgdW5pZm9ybTF1aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCB2MCkgZmluYWw7CisgICAg
dm9pZCB1bmlmb3JtMnVpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYwLCBHQ0dMdWludCB2
MSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtM3VpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50
IHYwLCBHQ0dMdWludCB2MSwgR0NHTHVpbnQgdjIpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTR1
aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCB2MCwgR0NHTHVpbnQgdjEsIEdDR0x1aW50IHYy
LCBHQ0dMdWludCB2MykgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtMXVpdihHQ0dMaW50IGxvY2F0
aW9uLCBjb25zdCBHQ0dMdWludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBz
cmNMZW5ndGgpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTJ1aXYoR0NHTGludCBsb2NhdGlvbiwg
Y29uc3QgR0NHTHVpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVu
Z3RoKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0zdWl2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0
IEdDR0x1aW50KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkg
ZmluYWw7CisgICAgdm9pZCB1bmlmb3JtNHVpdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dM
dWludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFs
OworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDJ4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29s
ZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQs
IEdDR0x1aW50IHNyY0xlbmd0aCkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4M3gyZnYo
R0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQq
IGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSBmaW5hbDsKKyAg
ICB2b2lkIHVuaWZvcm1NYXRyaXgyeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0
cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dM
dWludCBzcmNMZW5ndGgpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDR4MmZ2KEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRh
LCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgZmluYWw7CisgICAgdm9p
ZCB1bmlmb3JtTWF0cml4M3g0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNw
b3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQg
c3JjTGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm1NYXRyaXg0eDNmdihHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NH
THVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFsOworICAgIHZvaWQgdmVy
dGV4QXR0cmliSTRpKEdDR0x1aW50IGluZGV4LCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTGlu
dCB6LCBHQ0dMaW50IHcpIGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0cmliSTRpdihHQ0dMdWlu
dCBpbmRleCwgY29uc3QgR0NHTGludCogdmFsdWVzKSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0
dHJpYkk0dWkoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IHgsIEdDR0x1aW50IHksIEdDR0x1aW50
IHosIEdDR0x1aW50IHcpIGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0cmliSTR1aXYoR0NHTHVp
bnQgaW5kZXgsIGNvbnN0IEdDR0x1aW50KiB2YWx1ZXMpIGZpbmFsOworICAgIHZvaWQgdmVydGV4
QXR0cmliSVBvaW50ZXIoR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQgc2l6ZSwgR0NHTGVudW0gdHlw
ZSwgR0NHTHNpemVpIHN0cmlkZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOworCisgICAgdm9p
ZCBkcmF3UmFuZ2VFbGVtZW50cyhHQ0dMZW51bSBtb2RlLCBHQ0dMdWludCBzdGFydCwgR0NHTHVp
bnQgZW5kLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0
KSBmaW5hbDsKKworICAgIHZvaWQgZHJhd0J1ZmZlcnMoY29uc3QgVmVjdG9yPEdDR0xlbnVtPiYg
YnVmZmVycykgZmluYWw7CisgICAgdm9pZCBjbGVhckJ1ZmZlcml2KEdDR0xlbnVtIGJ1ZmZlciwg
R0NHTGludCBkcmF3YnVmZmVyLCBjb25zdCBHQ0dMaW50KiB2YWx1ZXMsIEdDR0x1aW50IHNyY09m
ZnNldCkgZmluYWw7CisgICAgdm9pZCBjbGVhckJ1ZmZlcnVpdihHQ0dMZW51bSBidWZmZXIsIEdD
R0xpbnQgZHJhd2J1ZmZlciwgY29uc3QgR0NHTHVpbnQqIHZhbHVlcywgR0NHTHVpbnQgc3JjT2Zm
c2V0KSBmaW5hbDsKKyAgICB2b2lkIGNsZWFyQnVmZmVyZnYoR0NHTGVudW0gYnVmZmVyLCBHQ0dM
aW50IGRyYXdidWZmZXIsIGNvbnN0IEdDR0xmbG9hdCogdmFsdWVzLCBHQ0dMdWludCBzcmNPZmZz
ZXQpIGZpbmFsOworICAgIHZvaWQgY2xlYXJCdWZmZXJmaShHQ0dMZW51bSBidWZmZXIsIEdDR0xp
bnQgZHJhd2J1ZmZlciwgR0NHTGZsb2F0IGRlcHRoLCBHQ0dMaW50IHN0ZW5jaWwpIGZpbmFsOwor
CisgICAgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVRdWVyeSgpIGZpbmFsOworICAgIHZvaWQgZGVs
ZXRlUXVlcnkoUGxhdGZvcm1HTE9iamVjdCBxdWVyeSkgZmluYWw7CisgICAgR0NHTGJvb2xlYW4g
aXNRdWVyeShQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5KSBmaW5hbDsKKyAgICB2b2lkIGJlZ2luUXVl
cnkoR0NHTGVudW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5KSBmaW5hbDsKKyAgICB2
b2lkIGVuZFF1ZXJ5KEdDR0xlbnVtIHRhcmdldCkgZmluYWw7CisgICAgUGxhdGZvcm1HTE9iamVj
dCBnZXRRdWVyeShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICAv
LyBnZXRRdWVyeVBhcmFtZXRlcgorICAgIHZvaWQgZ2xHZXRRdWVyeU9iamVjdHVpdihQbGF0Zm9y
bUdMT2JqZWN0IHF1ZXJ5LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQqIHZhbHVlKSBmaW5hbDsK
KworICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlU2FtcGxlcigpIGZpbmFsOworICAgIHZvaWQg
ZGVsZXRlU2FtcGxlcihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIpIGZpbmFsOworICAgIEdDR0xi
b29sZWFuIGlzU2FtcGxlcihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIpIGZpbmFsOworICAgIHZv
aWQgYmluZFNhbXBsZXIoR0NHTHVpbnQgdW5pdCwgUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyKSBm
aW5hbDsKKyAgICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJpKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxl
ciwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQgcGFyYW0pIGZpbmFsOworICAgIHZvaWQgc2FtcGxl
clBhcmFtZXRlcmYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NH
TGZsb2F0IHBhcmFtKSBmaW5hbDsKKyAgICAvLyBnZXRTYW1wbGVyUGFyYW1ldGVyCisgICAgdm9p
ZCBnZXRTYW1wbGVyUGFyYW1ldGVyZnYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51
bSBwbmFtZSwgR0NHTGZsb2F0KiB2YWx1ZSkgZmluYWw7CisgICAgdm9pZCBnZXRTYW1wbGVyUGFy
YW1ldGVyaXYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGlu
dCogdmFsdWUpIGZpbmFsOworCisgICAgUGxhdGZvcm1HTE9iamVjdCBmZW5jZVN5bmMoR0NHTGVu
dW0gY29uZGl0aW9uLCBHQ0dMYml0ZmllbGQgZmxhZ3MpIGZpbmFsOworICAgIEdDR0xib29sZWFu
IGlzU3luYyhQbGF0Zm9ybUdMT2JqZWN0IHN5bmMpIGZpbmFsOworICAgIHZvaWQgZGVsZXRlU3lu
YyhQbGF0Zm9ybUdMT2JqZWN0IHN5bmMpIGZpbmFsOworICAgIEdDR0xlbnVtIGNsaWVudFdhaXRT
eW5jKFBsYXRmb3JtR0xPYmplY3Qgc3luYywgR0NHTGJpdGZpZWxkIGZsYWdzLCBHQ0dMdWludDY0
IHRpbWVvdXQpIGZpbmFsOworICAgIHZvaWQgd2FpdFN5bmMoUGxhdGZvcm1HTE9iamVjdCBzeW5j
LCBHQ0dMYml0ZmllbGQgZmxhZ3MsIEdDR0xpbnQ2NCB0aW1lb3V0KSBmaW5hbDsKKyAgICAvLyBn
ZXRTeW5jUGFyYW1ldGVyCisgICAgLy8gRklYTUUgLSB0aGlzIGNhbiBiZSBpbXBsZW1lbnRlZCBh
dCB0aGUgV2ViR0wgbGV2ZWwgaWYgd2Ugc2lnbmFsIHRoZSBXZWJHTFN5bmMgb2JqZWN0LgorICAg
IHZvaWQgZ2V0U3luY2l2KFBsYXRmb3JtR0xPYmplY3Qgc3luYywgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMaW50ICp2YWx1ZSkgZmluYWw7CisKKyAgICBQbGF0Zm9ybUdM
T2JqZWN0IGNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKCkgZmluYWw7CisgICAgdm9pZCBkZWxldGVU
cmFuc2Zvcm1GZWVkYmFjayhQbGF0Zm9ybUdMT2JqZWN0IGlkKSBmaW5hbDsKKyAgICBHQ0dMYm9v
bGVhbiBpc1RyYW5zZm9ybUZlZWRiYWNrKFBsYXRmb3JtR0xPYmplY3QgaWQpIGZpbmFsOworICAg
IHZvaWQgYmluZFRyYW5zZm9ybUZlZWRiYWNrKEdDR0xlbnVtIHRhcmdldCwgUGxhdGZvcm1HTE9i
amVjdCBpZCkgZmluYWw7CisgICAgdm9pZCBiZWdpblRyYW5zZm9ybUZlZWRiYWNrKEdDR0xlbnVt
IHByaW1pdGl2ZU1vZGUpIGZpbmFsOworICAgIHZvaWQgZW5kVHJhbnNmb3JtRmVlZGJhY2soKSBm
aW5hbDsKKyAgICB2b2lkIHRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MoUGxhdGZvcm1HTE9iamVj
dCBwcm9ncmFtLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdmFyeWluZ3MsIEdDR0xlbnVtIGJ1ZmZl
ck1vZGUpIGZpbmFsOworICAgIFBsYXRmb3JtR0xPYmplY3QgZ2V0VHJhbnNmb3JtRmVlZGJhY2tW
YXJ5aW5nKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgaW5kZXgpIGZpbmFsOwor
ICAgIHZvaWQgcGF1c2VUcmFuc2Zvcm1GZWVkYmFjaygpIGZpbmFsOworICAgIHZvaWQgcmVzdW1l
VHJhbnNmb3JtRmVlZGJhY2soKSBmaW5hbDsKKworICAgIHZvaWQgYmluZEJ1ZmZlckJhc2UoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgUGxhdGZvcm1HTE9iamVjdCBidWZmZXIpIGZp
bmFsOworICAgIHZvaWQgYmluZEJ1ZmZlclJhbmdlKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQg
aW5kZXgsIFBsYXRmb3JtR0xPYmplY3QgYnVmZmVyLCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNp
emVpcHRyIHNpemUpIGZpbmFsOworICAgIC8vIGdldEluZGV4ZWRQYXJhbWV0ZXIgLT4gdXNlIGdl
dFBhcmFtZXRlciBjYWxscyBhYm92ZS4KKyAgICBWZWN0b3I8R0NHTHVpbnQ+IGdldFVuaWZvcm1J
bmRpY2VzKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHVu
aWZvcm1OYW1lcykgZmluYWw7CisgICAgdm9pZCBnZXRBY3RpdmVVbmlmb3JtcyhQbGF0Zm9ybUdM
T2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxHQ0dMdWludD4mIHVuaWZvcm1JbmRpY2VzLCBH
Q0dMZW51bSBwbmFtZSwgVmVjdG9yPEdDR0xpbnQ+JiBwYXJhbXMpIGZpbmFsOworCisgICAgR0NH
THVpbnQgZ2V0VW5pZm9ybUJsb2NrSW5kZXgoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25z
dCBTdHJpbmcmIHVuaWZvcm1CbG9ja05hbWUpIGZpbmFsOworICAgIC8vIGdldEFjdGl2ZVVuaWZv
cm1CbG9ja1BhcmFtZXRlcgorICAgIHZvaWQgZ2V0QWN0aXZlVW5pZm9ybUJsb2NraXYoUGxhdGZv
cm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xpbnQqIHBhcmFtcykgZmluYWw7CisgICAgU3RyaW5nIGdldEFjdGl2ZVVuaWZv
cm1CbG9ja05hbWUoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxv
Y2tJbmRleCkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtQmxvY2tCaW5kaW5nKFBsYXRmb3JtR0xP
YmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0x1aW50IHVuaWZv
cm1CbG9ja0JpbmRpbmcpIGZpbmFsOworCisgICAgdm9pZCB0ZXhJbWFnZTJEKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBH
Q0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIHBib09mZnNldCkgZmluYWw7CisgICAgdm9pZCB0ZXhJ
bWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCBpbnRlcm5hbGZv
cm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwg
R0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBjb25zdCB2b2lkKiBzcmNEYXRhLCBHQ0dM
dWludCBzcmNPZmZzZXQpIGZpbmFsOworCisgICAgdm9pZCB0ZXhTdWJJbWFnZTJEKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQs
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dM
ZW51bSB0eXBlLCBHQ0dMaW50cHRyIHBib09mZnNldCkgZmluYWw7CisgICAgdm9pZCB0ZXhTdWJJ
bWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBH
Q0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVu
dW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBjb25zdCB2b2lkKiBzcmNEYXRhLCBHQ0dMdWludCBz
cmNPZmZzZXQpIGZpbmFsOworCisgICAgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51
bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1h
Z2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7CisgICAgdm9pZCBjb21wcmVzc2VkVGV4
SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFs
Zm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVy
LCBjb25zdCB2b2lkKiBzcmNEYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xl
bmd0aE92ZXJyaWRlKSBmaW5hbDsKKworICAgIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlMkQo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQg
eW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3Jt
YXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKKyAgICB2
b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZl
bCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBjb25zdCB2b2lkKiBzcmNEYXRhLCBHQ0dM
dWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aE92ZXJyaWRlKSBmaW5hbDsKKworICAg
IHZvaWQgdW5pZm9ybTFmdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEs
IEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lk
IHVuaWZvcm0yZnYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dM
dWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgZmluYWw7CisgICAgdm9pZCB1bmlm
b3JtM2Z2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQg
c3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTRm
dihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09m
ZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSBmaW5hbDsKKworICAgIHZvaWQgdW5pZm9ybTFpdihH
Q0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMaW50KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQs
IEdDR0x1aW50IHNyY0xlbmd0aCkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtMml2KEdDR0xpbnQg
bG9jYXRpb24sIGNvbnN0IEdDR0xpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVp
bnQgc3JjTGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0zaXYoR0NHTGludCBsb2NhdGlv
biwgY29uc3QgR0NHTGludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNM
ZW5ndGgpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTRpdihHQ0dMaW50IGxvY2F0aW9uLCBjb25z
dCBHQ0dMaW50KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkg
ZmluYWw7CisKKyAgICB2b2lkIHVuaWZvcm1NYXRyaXgyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NH
TGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09m
ZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm1NYXRyaXgz
ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxv
YXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSBmaW5hbDsK
KyAgICB2b2lkIHVuaWZvcm1NYXRyaXg0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4g
dHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NH
THVpbnQgc3JjTGVuZ3RoKSBmaW5hbDsKKworICAgIHZvaWQgcmVhZFBpeGVscyhHQ0dMaW50IHgs
IEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBm
b3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKKyAgICB2b2lk
IHJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBjb25zdCB2b2lkKiBk
c3REYXRhLCBHQ0dMdWludCBkc3RPZmZzZXQpIGZpbmFsOworCisgICAgLy8gSGVscGVyIG1ldGhv
ZHMuCiAKICAgICB2b2lkIHBhaW50VG9DYW52YXMoY29uc3QgdW5zaWduZWQgY2hhciogaW1hZ2VQ
aXhlbHMsIGNvbnN0IEludFNpemUmIGltYWdlU2l6ZSwgY29uc3QgSW50U2l6ZSYgY2FudmFzU2l6
ZSwgR3JhcGhpY3NDb250ZXh0Jik7CiAKQEAgLTM5MCw3ICs1MjcsNyBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIqKTsKIAogI2lm
IFVTRShPUEVOR0wpICYmIEVOQUJMRShXRUJHTDIpCi0gICAgdm9pZCBwcmltaXRpdmVSZXN0YXJ0
SW5kZXgoR0NHTHVpbnQpIG92ZXJyaWRlOworICAgIHZvaWQgcHJpbWl0aXZlUmVzdGFydEluZGV4
KEdDR0x1aW50KSBmaW5hbDsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCkBAIC00MTQs
MTkgKzU1MSwxOSBAQCBwdWJsaWM6CiAgICAgR3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVu
Y2UgcG93ZXJQcmVmZXJlbmNlVXNlZEZvckNyZWF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wb3dl
clByZWZlcmVuY2VVc2VkRm9yQ3JlYXRpb247IH0KIAogICAgIC8vIFN1cHBvcnQgZm9yIGJ1ZmZl
ciBjcmVhdGlvbiBhbmQgZGVsZXRpb24KLSAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZUJ1ZmZl
cigpIG92ZXJyaWRlOwotICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlRnJhbWVidWZmZXIoKSBv
dmVycmlkZTsKLSAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVByb2dyYW0oKSBvdmVycmlkZTsK
LSAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVJlbmRlcmJ1ZmZlcigpIG92ZXJyaWRlOwotICAg
IFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlU2hhZGVyKEdDR0xlbnVtKSBvdmVycmlkZTsKLSAgICBQ
bGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVRleHR1cmUoKSBvdmVycmlkZTsKLQotICAgIHZvaWQgZGVs
ZXRlQnVmZmVyKFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwotICAgIHZvaWQgZGVsZXRlRnJh
bWVidWZmZXIoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkZWxldGVQcm9n
cmFtKFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwotICAgIHZvaWQgZGVsZXRlUmVuZGVyYnVm
ZmVyKFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwotICAgIHZvaWQgZGVsZXRlU2hhZGVyKFBs
YXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwotICAgIHZvaWQgZGVsZXRlVGV4dHVyZShQbGF0Zm9y
bUdMT2JqZWN0KSBvdmVycmlkZTsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZUJ1ZmZlcigp
IGZpbmFsOworICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlRnJhbWVidWZmZXIoKSBmaW5hbDsK
KyAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVByb2dyYW0oKSBmaW5hbDsKKyAgICBQbGF0Zm9y
bUdMT2JqZWN0IGNyZWF0ZVJlbmRlcmJ1ZmZlcigpIGZpbmFsOworICAgIFBsYXRmb3JtR0xPYmpl
Y3QgY3JlYXRlU2hhZGVyKEdDR0xlbnVtKSBmaW5hbDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IGNy
ZWF0ZVRleHR1cmUoKSBmaW5hbDsKKworICAgIHZvaWQgZGVsZXRlQnVmZmVyKFBsYXRmb3JtR0xP
YmplY3QpIGZpbmFsOworICAgIHZvaWQgZGVsZXRlRnJhbWVidWZmZXIoUGxhdGZvcm1HTE9iamVj
dCkgZmluYWw7CisgICAgdm9pZCBkZWxldGVQcm9ncmFtKFBsYXRmb3JtR0xPYmplY3QpIGZpbmFs
OworICAgIHZvaWQgZGVsZXRlUmVuZGVyYnVmZmVyKFBsYXRmb3JtR0xPYmplY3QpIGZpbmFsOwor
ICAgIHZvaWQgZGVsZXRlU2hhZGVyKFBsYXRmb3JtR0xPYmplY3QpIGZpbmFsOworICAgIHZvaWQg
ZGVsZXRlVGV4dHVyZShQbGF0Zm9ybUdMT2JqZWN0KSBmaW5hbDsKIAogICAgIC8vIFN5bnRoZXNp
emVzIGFuIE9wZW5HTCBlcnJvciB3aGljaCB3aWxsIGJlIHJldHVybmVkIGZyb20gYQogICAgIC8v
IGxhdGVyIGNhbGwgdG8gZ2V0RXJyb3IuIFRoaXMgaXMgdXNlZCB0byBlbXVsYXRlIE9wZW5HTCBF
UwpAQCAtNDQ2LDcgKzU4Myw3IEBAIHB1YmxpYzoKICAgICAvLyBhbGwgbWV0aG9kcyBpdCBjb250
YWlucyBtYXkgbmVjZXNzYXJpbHkgYmUgc3VwcG9ydGVkIG9uIHRoZQogICAgIC8vIGN1cnJlbnQg
aGFyZHdhcmUuIE11c3QgY2FsbCBFeHRlbnNpb25zR0w6OnN1cHBvcnRzKCkgdG8KICAgICAvLyBk
ZXRlcm1pbmUgdGhpcy4KLSAgICBFeHRlbnNpb25zR0wmIGdldEV4dGVuc2lvbnMoKSBvdmVycmlk
ZTsKKyAgICBFeHRlbnNpb25zR0wmIGdldEV4dGVuc2lvbnMoKSBmaW5hbDsKIAogICAgIEludFNp
emUgZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
cmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1vbi5jcHAKaW5kZXggNDIwM2YwY2E3ZWY4YWQyYmJi
OWY5ZjU3NGQwYTA0MzkxN2FjNzZkNS4uM2JhMTI5Y2NhYWMyMmQ2OGNjZjA4ZGZjMzRlMDExZTAx
MDQ2OWEyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24u
Y3BwCkBAIC01NTgsMTAyICs1NTgsNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpi
dWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQsCiAgICAgOjpn
bEJ1ZmZlclN1YkRhdGEodGFyZ2V0LCBvZmZzZXQsIHNpemUsIGRhdGEpOwogfQogCi0jaWYgVVNF
KE9QRU5HTF8zKSB8fCBVU0UoT1BFTkdMX0VTXzMpCi12b2lkKiBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6bWFwQnVmZmVyUmFuZ2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwg
R0NHTHNpemVpcHRyIGxlbmd0aCwgR0NHTGJpdGZpZWxkIGFjY2VzcykKLXsKLSAgICBtYWtlQ29u
dGV4dEN1cnJlbnQoKTsKLSAgICByZXR1cm4gOjpnbE1hcEJ1ZmZlclJhbmdlKHRhcmdldCwgb2Zm
c2V0LCBsZW5ndGgsIGFjY2Vzcyk7Ci19Ci0KLUdDR0xib29sZWFuIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp1bm1hcEJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQpCi17Ci0gICAgbWFrZUNvbnRleHRD
dXJyZW50KCk7Ci0gICAgcmV0dXJuIDo6Z2xVbm1hcEJ1ZmZlcih0YXJnZXQpOwotfQotCi12b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjb3B5QnVmZmVyU3ViRGF0YShHQ0dMZW51bSByZWFk
VGFyZ2V0LCBHQ0dMZW51bSB3cml0ZVRhcmdldCwgR0NHTGludHB0ciByZWFkT2Zmc2V0LCBHQ0dM
aW50cHRyIHdyaXRlT2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgc2l6ZSkKLXsKLSAgICBtYWtlQ29udGV4
dEN1cnJlbnQoKTsKLSAgICA6OmdsQ29weUJ1ZmZlclN1YkRhdGEocmVhZFRhcmdldCwgd3JpdGVU
YXJnZXQsIHJlYWRPZmZzZXQsIHdyaXRlT2Zmc2V0LCBzaXplKTsKLX0KLQotdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Z2V0SW50ZXJuYWxmb3JtYXRpdihHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xpbnQqIHBhcmFtcykKLXsKLSNpZiBVU0UoT1BFTkdMX0VTKQotICAgIG1ha2VDb250ZXh0
Q3VycmVudCgpOwotICAgIDo6Z2xHZXRJbnRlcm5hbGZvcm1hdGl2KHRhcmdldCwgaW50ZXJuYWxm
b3JtYXQsIHBuYW1lLCBidWZTaXplLCBwYXJhbXMpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0o
dGFyZ2V0KTsKLSAgICBVTlVTRURfUEFSQU0oaW50ZXJuYWxmb3JtYXQpOwotICAgIFVOVVNFRF9Q
QVJBTShwbmFtZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGJ1ZlNpemUpOwotICAgIFVOVVNFRF9QQVJB
TShwYXJhbXMpOwotI2VuZGlmCi19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJl
bmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBz
YW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0KQotewotICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xSZW5kZXJi
dWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodGFyZ2V0LCBzYW1wbGVzLCBpbnRlcm5hbGZvcm1hdCwg
d2lkdGgsIGhlaWdodCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRleFN0
b3JhZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBsZXZlbHMsIEdDR0xlbnVtIGludGVy
bmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCi17Ci0gICAgbWFr
ZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbFRleFN0b3JhZ2UyRCh0YXJnZXQsIGxldmVscywg
aW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOwotICAgIG1fc3RhdGUudGV4dHVyZVNlZWRD
b3VudC5hZGQobV9zdGF0ZS5jdXJyZW50Qm91bmRUZXh0dXJlKCkpOwotfQotCi12b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhTdG9yYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6
ZWkgbGV2ZWxzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgpCi17Ci0gICAgbWFrZUNvbnRleHRDdXJyZW50
KCk7Ci0gICAgOjpnbFRleFN0b3JhZ2UzRCh0YXJnZXQsIGxldmVscywgaW50ZXJuYWxmb3JtYXQs
IHdpZHRoLCBoZWlnaHQsIGRlcHRoKTsKLSAgICBtX3N0YXRlLnRleHR1cmVTZWVkQ291bnQuYWRk
KG1fc3RhdGUuY3VycmVudEJvdW5kVGV4dHVyZSgpKTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Z2V0QWN0aXZlVW5pZm9ybXMoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBj
b25zdCBWZWN0b3I8R0NHTHVpbnQ+JiB1bmlmb3JtSW5kaWNlcywgR0NHTGVudW0gcG5hbWUsIFZl
Y3RvcjxHQ0dMaW50PiYgcGFyYW1zKQotewotICAgIEFTU0VSVChwcm9ncmFtKTsKLSAgICBtYWtl
Q29udGV4dEN1cnJlbnQoKTsKLQotICAgIDo6Z2xHZXRBY3RpdmVVbmlmb3Jtc2l2KHByb2dyYW0s
IHVuaWZvcm1JbmRpY2VzLnNpemUoKSwgdW5pZm9ybUluZGljZXMuZGF0YSgpLCBwbmFtZSwgcGFy
YW1zLmRhdGEoKSk7Ci19Ci0jZWxzZQotdm9pZCogR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om1h
cEJ1ZmZlclJhbmdlKEdDR0xlbnVtLCBHQ0dMaW50cHRyLCBHQ0dMc2l6ZWlwdHIsIEdDR0xiaXRm
aWVsZCkKLXsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQotR0NHTGJvb2xlYW4gR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnVubWFwQnVmZmVyKEdDR0xlbnVtKQotewotICAgIHJldHVybiAwOwot
fQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjb3B5QnVmZmVyU3ViRGF0YShHQ0dM
ZW51bSwgR0NHTGVudW0sIEdDR0xpbnRwdHIsIEdDR0xpbnRwdHIsIEdDR0xzaXplaXB0cikKLXsK
LX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0SW50ZXJuYWxmb3JtYXRpdihH
Q0dMZW51bSwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xpbnQqKQotewotfQot
Ci12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlz
YW1wbGUoR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVp
KQotewotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhTdG9yYWdlMkQoR0NH
TGVudW0sIEdDR0xzaXplaSwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpKQotewotfQot
Ci12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhTdG9yYWdlM0QoR0NHTGVudW0sIEdD
R0xzaXplaSwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkpCi17Ci19
Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1zKFBsYXRm
b3JtR0xPYmplY3QsIGNvbnN0IFZlY3RvcjxHQ0dMdWludD4mLCBHQ0dMZW51bSwgVmVjdG9yPEdD
R0xpbnQ+JikKLXsKLX0KLSNlbmRpZiAvLyBVU0UoT1BFTkdMXzMpIHx8IFVTRShPUEVOR0xfRVNf
MykKLQogR0NHTGVudW0gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNoZWNrRnJhbWVidWZmZXJT
dGF0dXMoR0NHTGVudW0gdGFyZ2V0KQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwpAQCAt
MjExMyw2ICsyMDE3LDEwMDUgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cHJpbWl0
aXZlUmVzdGFydEluZGV4KEdDR0x1aW50IGluZGV4KQogfQogI2VuZGlmCiAKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmJ1ZmZlckRhdGEoR0NHTGVudW0gdGFyZ2V0LCBjb25zdCB2b2lk
KiBkYXRhLCBHQ0dMZW51bSB1c2FnZSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBsZW5n
dGgpCit7CisgICAgVU5VU0VEX1BBUkFNKHRhcmdldCk7CisgICAgVU5VU0VEX1BBUkFNKGRhdGEp
OworICAgIFVOVVNFRF9QQVJBTSh1c2FnZSk7CisgICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7
CisgICAgVU5VU0VEX1BBUkFNKGxlbmd0aCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIGRzdEJ5dGVP
ZmZzZXQsIGNvbnN0IHZvaWQqIHNyY0RhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQg
bGVuZ3RoKQoreworICAgIFVOVVNFRF9QQVJBTSh0YXJnZXQpOworICAgIFVOVVNFRF9QQVJBTShk
c3RCeXRlT2Zmc2V0KTsKKyAgICBVTlVTRURfUEFSQU0oc3JjRGF0YSk7CisgICAgVU5VU0VEX1BB
UkFNKHNyY09mZnNldCk7CisgICAgVU5VU0VEX1BBUkFNKGxlbmd0aCk7Cit9CisKKyNpZiBVU0Uo
T1BFTkdMXzMpIHx8IFVTRShPUEVOR0xfRVNfMykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmNvcHlCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHJlYWRUYXJnZXQsIEdDR0xlbnVtIHdyaXRl
VGFyZ2V0LCBHQ0dMaW50cHRyIHJlYWRPZmZzZXQsIEdDR0xpbnRwdHIgd3JpdGVPZmZzZXQsIEdD
R0xzaXplaXB0ciBzaXplKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIDo6Z2xD
b3B5QnVmZmVyU3ViRGF0YShyZWFkVGFyZ2V0LCB3cml0ZVRhcmdldCwgcmVhZE9mZnNldCwgd3Jp
dGVPZmZzZXQsIHNpemUpOworfQorI2Vsc2UKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmNvcHlCdWZmZXJTdWJEYXRhKEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTGludHB0ciwgR0NHTGlu
dHB0ciwgR0NHTHNpemVpcHRyKQoreworfQorI2VuZGlmCisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldEJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIHNy
Y0J5dGVPZmZzZXQsIGNvbnN0IHZvaWQqIGRzdERhdGEsIEdDR0x1aW50IGRzdE9mZnNldCwgR0NH
THVpbnQgbGVuZ3RoKQoreworICAgIFVOVVNFRF9QQVJBTSh0YXJnZXQpOworICAgIFVOVVNFRF9Q
QVJBTShzcmNCeXRlT2Zmc2V0KTsKKyAgICBVTlVTRURfUEFSQU0oZHN0RGF0YSk7CisgICAgVU5V
U0VEX1BBUkFNKGRzdE9mZnNldCk7CisgICAgVU5VU0VEX1BBUkFNKGxlbmd0aCk7Cit9CisKKyNp
ZiBVU0UoT1BFTkdMXzMpIHx8IFVTRShPUEVOR0xfRVNfMykKK3ZvaWQqIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjptYXBCdWZmZXJSYW5nZShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zm
c2V0LCBHQ0dMc2l6ZWlwdHIgbGVuZ3RoLCBHQ0dMYml0ZmllbGQgYWNjZXNzKQoreworICAgIG1h
a2VDb250ZXh0Q3VycmVudCgpOworICAgIHJldHVybiA6OmdsTWFwQnVmZmVyUmFuZ2UodGFyZ2V0
LCBvZmZzZXQsIGxlbmd0aCwgYWNjZXNzKTsKK30KKworR0NHTGJvb2xlYW4gR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnVubWFwQnVmZmVyKEdDR0xlbnVtIHRhcmdldCkKK3sKKyAgICBtYWtlQ29u
dGV4dEN1cnJlbnQoKTsKKyAgICByZXR1cm4gOjpnbFVubWFwQnVmZmVyKHRhcmdldCk7Cit9Cisj
ZWxzZQordm9pZCogR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om1hcEJ1ZmZlclJhbmdlKEdDR0xl
bnVtLCBHQ0dMaW50cHRyLCBHQ0dMc2l6ZWlwdHIsIEdDR0xiaXRmaWVsZCkKK3sKKyAgICByZXR1
cm4gbnVsbHB0cjsKK30KKworR0NHTGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVu
bWFwQnVmZmVyKEdDR0xlbnVtKQoreworICAgIHJldHVybiBmYWxzZTsKK30KKyNlbmRpZgorCit2
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpibGl0RnJhbWVidWZmZXIoR0NHTGludCBzcmNY
MCwgR0NHTGludCBzcmNZMCwgR0NHTGludCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGludCBk
c3RYMCwgR0NHTGludCBkc3RZMCwgR0NHTGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NHTGJp
dGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRlcikKK3sKKyAgICBVTlVTRURfUEFSQU0oc3JjWDAp
OworICAgIFVOVVNFRF9QQVJBTShzcmNZMCk7CisgICAgVU5VU0VEX1BBUkFNKHNyY1gxKTsKKyAg
ICBVTlVTRURfUEFSQU0oc3JjWTEpOworICAgIFVOVVNFRF9QQVJBTShkc3RYMCk7CisgICAgVU5V
U0VEX1BBUkFNKGRzdFkwKTsKKyAgICBVTlVTRURfUEFSQU0oZHN0WDEpOworICAgIFVOVVNFRF9Q
QVJBTShkc3RZMSk7CisgICAgVU5VU0VEX1BBUkFNKG1hc2spOworICAgIFVOVVNFRF9QQVJBTShm
aWx0ZXIpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpmcmFtZWJ1ZmZlclRl
eHR1cmVMYXllcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQsIFBsYXRmb3Jt
R0xPYmplY3QgdGV4dHVyZSwgR0NHTGludCBsZXZlbCwgR0NHTGludCBsYXllcikKK3sKKyAgICBV
TlVTRURfUEFSQU0odGFyZ2V0KTsKKyAgICBVTlVTRURfUEFSQU0oYXR0YWNobWVudCk7CisgICAg
VU5VU0VEX1BBUkFNKHRleHR1cmUpOworICAgIFVOVVNFRF9QQVJBTShsZXZlbCk7CisgICAgVU5V
U0VEX1BBUkFNKGxheWVyKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6aW52
YWxpZGF0ZUZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgY29uc3QgVmVjdG9yPEdDR0xlbnVt
PiYgYXR0YWNobWVudHMpCit7CisgICAgVU5VU0VEX1BBUkFNKHRhcmdldCk7CisgICAgVU5VU0VE
X1BBUkFNKGF0dGFjaG1lbnRzKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
aW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgY29uc3QgVmVjdG9yPEdD
R0xlbnVtPiYgYXR0YWNobWVudHMsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQpCit7CisgICAgVU5VU0VEX1BBUkFNKHRhcmdldCk7CisgICAg
VU5VU0VEX1BBUkFNKGF0dGFjaG1lbnRzKTsKKyAgICBVTlVTRURfUEFSQU0oeCk7CisgICAgVU5V
U0VEX1BBUkFNKHkpOworICAgIFVOVVNFRF9QQVJBTSh3aWR0aCk7CisgICAgVU5VU0VEX1BBUkFN
KGhlaWdodCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRCdWZmZXIo
R0NHTGVudW0gc3JjKQoreworICAgIFVOVVNFRF9QQVJBTShzcmMpOworfQorCisjaWYgVVNFKE9Q
RU5HTF8zKSB8fCBVU0UoT1BFTkdMX0VTXzMpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpnZXRJbnRlcm5hbGZvcm1hdGl2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gaW50ZXJuYWxm
b3JtYXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTGludCogcGFyYW1z
KQoreworI2lmIFVTRShPUEVOR0xfRVMpCisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAg
OjpnbEdldEludGVybmFsZm9ybWF0aXYodGFyZ2V0LCBpbnRlcm5hbGZvcm1hdCwgcG5hbWUsIGJ1
ZlNpemUsIHBhcmFtcyk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTSh0YXJnZXQpOworICAgIFVO
VVNFRF9QQVJBTShpbnRlcm5hbGZvcm1hdCk7CisgICAgVU5VU0VEX1BBUkFNKHBuYW1lKTsKKyAg
ICBVTlVTRURfUEFSQU0oYnVmU2l6ZSk7CisgICAgVU5VU0VEX1BBUkFNKHBhcmFtcyk7CisjZW5k
aWYKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVuZGVyYnVmZmVyU3RvcmFn
ZU11bHRpc2FtcGxlKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVt
IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCit7Cisg
ICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgOjpnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0
aXNhbXBsZSh0YXJnZXQsIHNhbXBsZXMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsK
K30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4U3RvcmFnZTJEKEdDR0xlbnVt
IHRhcmdldCwgR0NHTHNpemVpIGxldmVscywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQo
KTsKKyAgICA6OmdsVGV4U3RvcmFnZTJEKHRhcmdldCwgbGV2ZWxzLCBpbnRlcm5hbGZvcm1hdCwg
d2lkdGgsIGhlaWdodCk7CisgICAgbV9zdGF0ZS50ZXh0dXJlU2VlZENvdW50LmFkZChtX3N0YXRl
LmN1cnJlbnRCb3VuZFRleHR1cmUoKSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnRleFN0b3JhZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBsZXZlbHMsIEdDR0xl
bnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdD
R0xzaXplaSBkZXB0aCkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICA6OmdsVGV4
U3RvcmFnZTNEKHRhcmdldCwgbGV2ZWxzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwg
ZGVwdGgpOworICAgIG1fc3RhdGUudGV4dHVyZVNlZWRDb3VudC5hZGQobV9zdGF0ZS5jdXJyZW50
Qm91bmRUZXh0dXJlKCkpOworfQorI2Vsc2UKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmdldEludGVybmFsZm9ybWF0aXYoR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNp
emVpLCBHQ0dMaW50KikKK3sKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVu
ZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xlbnVt
LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSkKK3sKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6dGV4U3RvcmFnZTJEKEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xlbnVtLCBHQ0dMc2l6
ZWksIEdDR0xzaXplaSkKK3sKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4
U3RvcmFnZTNEKEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xz
aXplaSwgR0NHTHNpemVpKQoreworfQorI2VuZGlmCisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnRleEltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50
IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xz
aXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlw
ZSwgR0NHTGludHB0ciBwYm9PZmZzZXQpCit7CisgICAgVU5VU0VEX1BBUkFNKHRhcmdldCk7Cisg
ICAgVU5VU0VEX1BBUkFNKGxldmVsKTsKKyAgICBVTlVTRURfUEFSQU0oaW50ZXJuYWxmb3JtYXQp
OworICAgIFVOVVNFRF9QQVJBTSh3aWR0aCk7CisgICAgVU5VU0VEX1BBUkFNKGhlaWdodCk7Cisg
ICAgVU5VU0VEX1BBUkFNKGRlcHRoKTsKKyAgICBVTlVTRURfUEFSQU0oYm9yZGVyKTsKKyAgICBV
TlVTRURfUEFSQU0oZm9ybWF0KTsKKyAgICBVTlVTRURfUEFSQU0odHlwZSk7CisgICAgVU5VU0VE
X1BBUkFNKHBib09mZnNldCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRl
eEltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGludGVybmFs
Zm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0
aCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgY29uc3Qg
dm9pZCogcGl4ZWxzKQoreworICAgIFVOVVNFRF9QQVJBTSh0YXJnZXQpOworICAgIFVOVVNFRF9Q
QVJBTShsZXZlbCk7CisgICAgVU5VU0VEX1BBUkFNKGludGVybmFsZm9ybWF0KTsKKyAgICBVTlVT
RURfUEFSQU0od2lkdGgpOworICAgIFVOVVNFRF9QQVJBTShoZWlnaHQpOworICAgIFVOVVNFRF9Q
QVJBTShkZXB0aCk7CisgICAgVU5VU0VEX1BBUkFNKGJvcmRlcik7CisgICAgVU5VU0VEX1BBUkFN
KGZvcm1hdCk7CisgICAgVU5VU0VEX1BBUkFNKHR5cGUpOworICAgIFVOVVNFRF9QQVJBTShwaXhl
bHMpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhJbWFnZTNEKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9y
ZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQqIHNyY0RhdGEs
IEdDR0x1aW50IHNyY09mZnNldCkKK3sKKyAgICBVTlVTRURfUEFSQU0odGFyZ2V0KTsKKyAgICBV
TlVTRURfUEFSQU0obGV2ZWwpOworICAgIFVOVVNFRF9QQVJBTShpbnRlcm5hbGZvcm1hdCk7Cisg
ICAgVU5VU0VEX1BBUkFNKHdpZHRoKTsKKyAgICBVTlVTRURfUEFSQU0oaGVpZ2h0KTsKKyAgICBV
TlVTRURfUEFSQU0oZGVwdGgpOworICAgIFVOVVNFRF9QQVJBTShib3JkZXIpOworICAgIFVOVVNF
RF9QQVJBTShmb3JtYXQpOworICAgIFVOVVNFRF9QQVJBTSh0eXBlKTsKKyAgICBVTlVTRURfUEFS
QU0oc3JjRGF0YSk7CisgICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7Cit9CisKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnRleFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
aW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zm
c2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwg
R0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIHBib09mZnNldCkKK3sK
KyAgICBVTlVTRURfUEFSQU0odGFyZ2V0KTsKKyAgICBVTlVTRURfUEFSQU0obGV2ZWwpOworICAg
IFVOVVNFRF9QQVJBTSh4b2Zmc2V0KTsKKyAgICBVTlVTRURfUEFSQU0oeW9mZnNldCk7CisgICAg
VU5VU0VEX1BBUkFNKHpvZmZzZXQpOworICAgIFVOVVNFRF9QQVJBTSh3aWR0aCk7CisgICAgVU5V
U0VEX1BBUkFNKGhlaWdodCk7CisgICAgVU5VU0VEX1BBUkFNKGRlcHRoKTsKKyAgICBVTlVTRURf
UEFSQU0oZm9ybWF0KTsKKyAgICBVTlVTRURfUEFSQU0odHlwZSk7CisgICAgVU5VU0VEX1BBUkFN
KHBib09mZnNldCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRleFN1Yklt
YWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdD
R0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBl
LCBjb25zdCB2b2lkKiBzcmNEYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQpCit7CisgICAgVU5VU0VE
X1BBUkFNKHRhcmdldCk7CisgICAgVU5VU0VEX1BBUkFNKGxldmVsKTsKKyAgICBVTlVTRURfUEFS
QU0oeG9mZnNldCk7CisgICAgVU5VU0VEX1BBUkFNKHlvZmZzZXQpOworICAgIFVOVVNFRF9QQVJB
TSh6b2Zmc2V0KTsKKyAgICBVTlVTRURfUEFSQU0od2lkdGgpOworICAgIFVOVVNFRF9QQVJBTSho
ZWlnaHQpOworICAgIFVOVVNFRF9QQVJBTShkZXB0aCk7CisgICAgVU5VU0VEX1BBUkFNKGZvcm1h
dCk7CisgICAgVU5VU0VEX1BBUkFNKHR5cGUpOworICAgIFVOVVNFRF9QQVJBTShzcmNEYXRhKTsK
KyAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Y29weVRleFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVs
LCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dM
aW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQorewor
ICAgIFVOVVNFRF9QQVJBTSh0YXJnZXQpOworICAgIFVOVVNFRF9QQVJBTShsZXZlbCk7CisgICAg
VU5VU0VEX1BBUkFNKHhvZmZzZXQpOworICAgIFVOVVNFRF9QQVJBTSh5b2Zmc2V0KTsKKyAgICBV
TlVTRURfUEFSQU0oem9mZnNldCk7CisgICAgVU5VU0VEX1BBUkFNKHgpOworICAgIFVOVVNFRF9Q
QVJBTSh5KTsKKyAgICBVTlVTRURfUEFSQU0od2lkdGgpOworICAgIFVOVVNFRF9QQVJBTShoZWln
aHQpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjb21wcmVzc2VkVGV4SW1h
Z2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9y
bWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwg
R0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zmc2V0KQor
eworICAgIFVOVVNFRF9QQVJBTSh0YXJnZXQpOworICAgIFVOVVNFRF9QQVJBTShsZXZlbCk7Cisg
ICAgVU5VU0VEX1BBUkFNKGludGVybmFsZm9ybWF0KTsKKyAgICBVTlVTRURfUEFSQU0od2lkdGgp
OworICAgIFVOVVNFRF9QQVJBTShoZWlnaHQpOworICAgIFVOVVNFRF9QQVJBTShkZXB0aCk7Cisg
ICAgVU5VU0VEX1BBUkFNKGJvcmRlcik7CisgICAgVU5VU0VEX1BBUkFNKGltYWdlU2l6ZSk7Cisg
ICAgVU5VU0VEX1BBUkFNKG9mZnNldCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmNvbXByZXNzZWRUZXhJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwg
R0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgY29uc3Qgdm9pZCogc3JjRGF0YSwg
R0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGhPdmVycmlkZSkKK3sKKyAgICBV
TlVTRURfUEFSQU0odGFyZ2V0KTsKKyAgICBVTlVTRURfUEFSQU0obGV2ZWwpOworICAgIFVOVVNF
RF9QQVJBTShpbnRlcm5hbGZvcm1hdCk7CisgICAgVU5VU0VEX1BBUkFNKHdpZHRoKTsKKyAgICBV
TlVTRURfUEFSQU0oaGVpZ2h0KTsKKyAgICBVTlVTRURfUEFSQU0oZGVwdGgpOworICAgIFVOVVNF
RF9QQVJBTShib3JkZXIpOworICAgIFVOVVNFRF9QQVJBTShzcmNEYXRhKTsKKyAgICBVTlVTRURf
UEFSQU0oc3JjT2Zmc2V0KTsKKyAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoT3ZlcnJpZGUpOwor
fQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjb21wcmVzc2VkVGV4U3ViSW1hZ2Uz
RChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGlu
dCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNp
emUsIEdDR0xpbnRwdHIgb2Zmc2V0KQoreworICAgIFVOVVNFRF9QQVJBTSh0YXJnZXQpOworICAg
IFVOVVNFRF9QQVJBTShsZXZlbCk7CisgICAgVU5VU0VEX1BBUkFNKHhvZmZzZXQpOworICAgIFVO
VVNFRF9QQVJBTSh5b2Zmc2V0KTsKKyAgICBVTlVTRURfUEFSQU0oem9mZnNldCk7CisgICAgVU5V
U0VEX1BBUkFNKHdpZHRoKTsKKyAgICBVTlVTRURfUEFSQU0oaGVpZ2h0KTsKKyAgICBVTlVTRURf
UEFSQU0oZGVwdGgpOworICAgIFVOVVNFRF9QQVJBTShmb3JtYXQpOworICAgIFVOVVNFRF9QQVJB
TShpbWFnZVNpemUpOworICAgIFVOVVNFRF9QQVJBTShvZmZzZXQpOworfQorCit2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dM
aW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVp
IGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIGNvbnN0IHZvaWQqIHNyY0RhdGEsIEdDR0x1aW50IHNy
Y09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoT3ZlcnJpZGUpCit7CisgICAgVU5VU0VEX1BBUkFN
KHRhcmdldCk7CisgICAgVU5VU0VEX1BBUkFNKGxldmVsKTsKKyAgICBVTlVTRURfUEFSQU0oeG9m
ZnNldCk7CisgICAgVU5VU0VEX1BBUkFNKHlvZmZzZXQpOworICAgIFVOVVNFRF9QQVJBTSh6b2Zm
c2V0KTsKKyAgICBVTlVTRURfUEFSQU0od2lkdGgpOworICAgIFVOVVNFRF9QQVJBTShoZWlnaHQp
OworICAgIFVOVVNFRF9QQVJBTShkZXB0aCk7CisgICAgVU5VU0VEX1BBUkFNKGZvcm1hdCk7Cisg
ICAgVU5VU0VEX1BBUkFNKHNyY0RhdGEpOworICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOwor
ICAgIFVOVVNFRF9QQVJBTShzcmNMZW5ndGhPdmVycmlkZSk7Cit9CisKK0dDR0xpbnQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldEZyYWdEYXRhTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCBw
cm9ncmFtLCBjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgVU5VU0VEX1BBUkFNKHByb2dyYW0p
OworICAgIFVOVVNFRF9QQVJBTShuYW1lKTsKKworICAgIHJldHVybiAwOworfQorCit2b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMXVpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1
aW50IHYwKQoreworICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7CisgICAgVU5VU0VEX1BBUkFN
KHYwKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTJ1aShHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMdWludCB2MCwgR0NHTHVpbnQgdjEpCit7CisgICAgVU5VU0VEX1BB
UkFNKGxvY2F0aW9uKTsKKyAgICBVTlVTRURfUEFSQU0odjApOworICAgIFVOVVNFRF9QQVJBTSh2
MSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0zdWkoR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTHVpbnQgdjAsIEdDR0x1aW50IHYxLCBHQ0dMdWludCB2MikKK3sKKyAg
ICBVTlVTRURfUEFSQU0obG9jYXRpb24pOworICAgIFVOVVNFRF9QQVJBTSh2MCk7CisgICAgVU5V
U0VEX1BBUkFNKHYxKTsKKyAgICBVTlVTRURfUEFSQU0odjIpOworfQorCit2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjp1bmlmb3JtNHVpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYw
LCBHQ0dMdWludCB2MSwgR0NHTHVpbnQgdjIsIEdDR0x1aW50IHYzKQoreworICAgIFVOVVNFRF9Q
QVJBTShsb2NhdGlvbik7CisgICAgVU5VU0VEX1BBUkFNKHYwKTsKKyAgICBVTlVTRURfUEFSQU0o
djEpOworICAgIFVOVVNFRF9QQVJBTSh2Mik7CisgICAgVU5VU0VEX1BBUkFNKHYzKTsKK30KKwor
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTF1aXYoR0NHTGludCBsb2NhdGlv
biwgY29uc3QgR0NHTHVpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3Jj
TGVuZ3RoKQoreworICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7CisgICAgVU5VU0VEX1BBUkFN
KGRhdGEpOworICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOworICAgIFVOVVNFRF9QQVJBTShz
cmNMZW5ndGgpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMnVp
dihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMdWludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zm
c2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit7CisgICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsK
KyAgICBVTlVTRURfUEFSQU0oZGF0YSk7CisgICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7Cisg
ICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnVuaWZvcm0zdWl2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0x1aW50KiBkYXRh
LCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKK3sKKyAgICBVTlVTRURf
UEFSQU0obG9jYXRpb24pOworICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKKyAgICBVTlVTRURfUEFS
QU0oc3JjT2Zmc2V0KTsKKyAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsKK30KKwordm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTR1aXYoR0NHTGludCBsb2NhdGlvbiwgY29u
c3QgR0NHTHVpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3Ro
KQoreworICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7CisgICAgVU5VU0VEX1BBUkFNKGRhdGEp
OworICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOworICAgIFVOVVNFRF9QQVJBTShzcmNMZW5n
dGgpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4Mngz
ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxv
YXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQoreworICAg
IFVOVVNFRF9QQVJBTShsb2NhdGlvbik7CisgICAgVU5VU0VEX1BBUkFNKHRyYW5zcG9zZSk7Cisg
ICAgVU5VU0VEX1BBUkFNKGRhdGEpOworICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOworICAg
IFVOVVNFRF9QQVJBTShzcmNMZW5ndGgpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjp1bmlmb3JtTWF0cml4M3gyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJh
bnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVp
bnQgc3JjTGVuZ3RoKQoreworICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7CisgICAgVU5VU0VE
X1BBUkFNKHRyYW5zcG9zZSk7CisgICAgVU5VU0VEX1BBUkFNKGRhdGEpOworICAgIFVOVVNFRF9Q
QVJBTShzcmNPZmZzZXQpOworICAgIFVOVVNFRF9QQVJBTShzcmNMZW5ndGgpOworfQorCit2b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4Mng0ZnYoR0NHTGludCBsb2Nh
dGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1
aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQoreworICAgIFVOVVNFRF9QQVJBTShs
b2NhdGlvbik7CisgICAgVU5VU0VEX1BBUkFNKHRyYW5zcG9zZSk7CisgICAgVU5VU0VEX1BBUkFN
KGRhdGEpOworICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOworICAgIFVOVVNFRF9QQVJBTShz
cmNMZW5ndGgpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0
cml4NHgyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBH
Q0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQor
eworICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7CisgICAgVU5VU0VEX1BBUkFNKHRyYW5zcG9z
ZSk7CisgICAgVU5VU0VEX1BBUkFNKGRhdGEpOworICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQp
OworICAgIFVOVVNFRF9QQVJBTShzcmNMZW5ndGgpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4M3g0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xl
YW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwg
R0NHTHVpbnQgc3JjTGVuZ3RoKQoreworICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7CisgICAg
VU5VU0VEX1BBUkFNKHRyYW5zcG9zZSk7CisgICAgVU5VU0VEX1BBUkFNKGRhdGEpOworICAgIFVO
VVNFRF9QQVJBTShzcmNPZmZzZXQpOworICAgIFVOVVNFRF9QQVJBTShzcmNMZW5ndGgpOworfQor
Cit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4NHgzZnYoR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEs
IEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQoreworICAgIFVOVVNFRF9Q
QVJBTShsb2NhdGlvbik7CisgICAgVU5VU0VEX1BBUkFNKHRyYW5zcG9zZSk7CisgICAgVU5VU0VE
X1BBUkFNKGRhdGEpOworICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOworICAgIFVOVVNFRF9Q
QVJBTShzcmNMZW5ndGgpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0
ZXhBdHRyaWJJNGkoR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMaW50
IHosIEdDR0xpbnQgdykKK3sKKyAgICBVTlVTRURfUEFSQU0oaW5kZXgpOworICAgIFVOVVNFRF9Q
QVJBTSh4KTsKKyAgICBVTlVTRURfUEFSQU0oeSk7CisgICAgVU5VU0VEX1BBUkFNKHopOworICAg
IFVOVVNFRF9QQVJBTSh3KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVy
dGV4QXR0cmliSTRpdihHQ0dMdWludCBpbmRleCwgY29uc3QgR0NHTGludCogdmFsdWVzKQorewor
ICAgIFVOVVNFRF9QQVJBTShpbmRleCk7CisgICAgVU5VU0VEX1BBUkFNKHZhbHVlcyk7Cit9CisK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYkk0dWkoR0NHTHVpbnQg
aW5kZXgsIEdDR0x1aW50IHgsIEdDR0x1aW50IHksIEdDR0x1aW50IHosIEdDR0x1aW50IHcpCit7
CisgICAgVU5VU0VEX1BBUkFNKGluZGV4KTsKKyAgICBVTlVTRURfUEFSQU0oeCk7CisgICAgVU5V
U0VEX1BBUkFNKHkpOworICAgIFVOVVNFRF9QQVJBTSh6KTsKKyAgICBVTlVTRURfUEFSQU0odyk7
Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYkk0dWl2KEdD
R0x1aW50IGluZGV4LCBjb25zdCBHQ0dMdWludCogdmFsdWVzKQoreworICAgIFVOVVNFRF9QQVJB
TShpbmRleCk7CisgICAgVU5VU0VEX1BBUkFNKHZhbHVlcyk7Cit9CisKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYklQb2ludGVyKEdDR0x1aW50IGluZGV4LCBHQ0dM
aW50IHNpemUsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBzdHJpZGUsIEdDR0xpbnRwdHIgb2Zm
c2V0KQoreworICAgIFVOVVNFRF9QQVJBTShpbmRleCk7CisgICAgVU5VU0VEX1BBUkFNKHNpemUp
OworICAgIFVOVVNFRF9QQVJBTSh0eXBlKTsKKyAgICBVTlVTRURfUEFSQU0oc3RyaWRlKTsKKyAg
ICBVTlVTRURfUEFSQU0ob2Zmc2V0KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6ZHJhd1JhbmdlRWxlbWVudHMoR0NHTGVudW0gbW9kZSwgR0NHTHVpbnQgc3RhcnQsIEdDR0x1
aW50IGVuZCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNl
dCkKK3sKKyAgICBVTlVTRURfUEFSQU0obW9kZSk7CisgICAgVU5VU0VEX1BBUkFNKHN0YXJ0KTsK
KyAgICBVTlVTRURfUEFSQU0oZW5kKTsKKyAgICBVTlVTRURfUEFSQU0oY291bnQpOworICAgIFVO
VVNFRF9QQVJBTSh0eXBlKTsKKyAgICBVTlVTRURfUEFSQU0ob2Zmc2V0KTsKK30KKwordm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZHJhd0J1ZmZlcnMoY29uc3QgVmVjdG9yPEdDR0xlbnVt
PiYgYnVmZmVycykKK3sKKyAgICBVTlVTRURfUEFSQU0oYnVmZmVycyk7Cit9CisKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmNsZWFyQnVmZmVyaXYoR0NHTGVudW0gYnVmZmVyLCBHQ0dM
aW50IGRyYXdidWZmZXIsIGNvbnN0IEdDR0xpbnQqIHZhbHVlcywgR0NHTHVpbnQgc3JjT2Zmc2V0
KQoreworICAgIFVOVVNFRF9QQVJBTShidWZmZXIpOworICAgIFVOVVNFRF9QQVJBTShkcmF3YnVm
ZmVyKTsKKyAgICBVTlVTRURfUEFSQU0odmFsdWVzKTsKKyAgICBVTlVTRURfUEFSQU0oc3JjT2Zm
c2V0KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y2xlYXJCdWZmZXJ1aXYo
R0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIGNvbnN0IEdDR0x1aW50KiB2YWx1
ZXMsIEdDR0x1aW50IHNyY09mZnNldCkKK3sKKyAgICBVTlVTRURfUEFSQU0oYnVmZmVyKTsKKyAg
ICBVTlVTRURfUEFSQU0oZHJhd2J1ZmZlcik7CisgICAgVU5VU0VEX1BBUkFNKHZhbHVlcyk7Cisg
ICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmNsZWFyQnVmZmVyZnYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIs
IGNvbnN0IEdDR0xmbG9hdCogdmFsdWVzLCBHQ0dMdWludCBzcmNPZmZzZXQpCit7CisgICAgVU5V
U0VEX1BBUkFNKGJ1ZmZlcik7CisgICAgVU5VU0VEX1BBUkFNKGRyYXdidWZmZXIpOworICAgIFVO
VVNFRF9QQVJBTSh2YWx1ZXMpOworICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOworfQorCit2
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjbGVhckJ1ZmZlcmZpKEdDR0xlbnVtIGJ1ZmZl
ciwgR0NHTGludCBkcmF3YnVmZmVyLCBHQ0dMZmxvYXQgZGVwdGgsIEdDR0xpbnQgc3RlbmNpbCkK
K3sKKyAgICBVTlVTRURfUEFSQU0oYnVmZmVyKTsKKyAgICBVTlVTRURfUEFSQU0oZHJhd2J1ZmZl
cik7CisgICAgVU5VU0VEX1BBUkFNKGRlcHRoKTsKKyAgICBVTlVTRURfUEFSQU0oc3RlbmNpbCk7
Cit9CisKK1BsYXRmb3JtR0xPYmplY3QgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZVF1
ZXJ5KCkKK3sKKworICAgIHJldHVybiAwOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpkZWxldGVRdWVyeShQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5KQoreworICAgIFVOVVNFRF9Q
QVJBTShxdWVyeSk7Cit9CisKK0dDR0xib29sZWFuIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpp
c1F1ZXJ5KFBsYXRmb3JtR0xPYmplY3QgcXVlcnkpCit7CisgICAgVU5VU0VEX1BBUkFNKHF1ZXJ5
KTsKKworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6YmVnaW5RdWVyeShHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgcXVlcnkpCit7
CisgICAgVU5VU0VEX1BBUkFNKHRhcmdldCk7CisgICAgVU5VU0VEX1BBUkFNKHF1ZXJ5KTsKK30K
Kwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZW5kUXVlcnkoR0NHTGVudW0gdGFyZ2V0
KQoreworICAgIFVOVVNFRF9QQVJBTSh0YXJnZXQpOworfQorCitQbGF0Zm9ybUdMT2JqZWN0IEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRRdWVyeShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVt
IHBuYW1lKQoreworICAgIFVOVVNFRF9QQVJBTSh0YXJnZXQpOworICAgIFVOVVNFRF9QQVJBTShw
bmFtZSk7CisKKyAgICByZXR1cm4gMDsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Z2xHZXRRdWVyeU9iamVjdHVpdihQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5LCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHVpbnQqIHZhbHVlKQoreworICAgIFVOVVNFRF9QQVJBTShxdWVyeSk7CisgICAg
VU5VU0VEX1BBUkFNKHBuYW1lKTsKKyAgICBVTlVTRURfUEFSQU0odmFsdWUpOworfQorCitQbGF0
Zm9ybUdMT2JqZWN0IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVTYW1wbGVyKCkKK3sK
KworICAgIHJldHVybiAwOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkZWxl
dGVTYW1wbGVyKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlcikKK3sKKyAgICBVTlVTRURfUEFSQU0o
c2FtcGxlcik7Cit9CisKK0dDR0xib29sZWFuIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjppc1Nh
bXBsZXIoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyKQoreworICAgIFVOVVNFRF9QQVJBTShzYW1w
bGVyKTsKKworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6YmluZFNhbXBsZXIoR0NHTHVpbnQgdW5pdCwgUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVy
KQoreworICAgIFVOVVNFRF9QQVJBTSh1bml0KTsKKyAgICBVTlVTRURfUEFSQU0oc2FtcGxlcik7
Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnNhbXBsZXJQYXJhbWV0ZXJpKFBs
YXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQgcGFyYW0pCit7
CisgICAgVU5VU0VEX1BBUkFNKHNhbXBsZXIpOworICAgIFVOVVNFRF9QQVJBTShwbmFtZSk7Cisg
ICAgVU5VU0VEX1BBUkFNKHBhcmFtKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6c2FtcGxlclBhcmFtZXRlcmYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBw
bmFtZSwgR0NHTGZsb2F0IHBhcmFtKQoreworICAgIFVOVVNFRF9QQVJBTShzYW1wbGVyKTsKKyAg
ICBVTlVTRURfUEFSQU0ocG5hbWUpOworICAgIFVOVVNFRF9QQVJBTShwYXJhbSk7Cit9CisKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNhbXBsZXJQYXJhbWV0ZXJmdihQbGF0Zm9y
bUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQqIHZhbHVlKQorewor
ICAgIFVOVVNFRF9QQVJBTShzYW1wbGVyKTsKKyAgICBVTlVTRURfUEFSQU0ocG5hbWUpOworICAg
IFVOVVNFRF9QQVJBTSh2YWx1ZSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmdldFNhbXBsZXJQYXJhbWV0ZXJpdihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkKK3sKKyAgICBVTlVTRURfUEFSQU0oc2FtcGxlcik7Cisg
ICAgVU5VU0VEX1BBUkFNKHBuYW1lKTsKKyAgICBVTlVTRURfUEFSQU0odmFsdWUpOworfQorCitQ
bGF0Zm9ybUdMT2JqZWN0IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpmZW5jZVN5bmMoR0NHTGVu
dW0gY29uZGl0aW9uLCBHQ0dMYml0ZmllbGQgZmxhZ3MpCit7CisgICAgVU5VU0VEX1BBUkFNKGNv
bmRpdGlvbik7CisgICAgVU5VU0VEX1BBUkFNKGZsYWdzKTsKKworICAgIHJldHVybiAwOworfQor
CitHQ0dMYm9vbGVhbiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6aXNTeW5jKFBsYXRmb3JtR0xP
YmplY3Qgc3luYykKK3sKKyAgICBVTlVTRURfUEFSQU0oc3luYyk7CisKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRlbGV0ZVN5bmMoUGxhdGZv
cm1HTE9iamVjdCBzeW5jKQoreworICAgIFVOVVNFRF9QQVJBTShzeW5jKTsKK30KKworR0NHTGVu
dW0gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNsaWVudFdhaXRTeW5jKFBsYXRmb3JtR0xPYmpl
Y3Qgc3luYywgR0NHTGJpdGZpZWxkIGZsYWdzLCBHQ0dMdWludDY0IHRpbWVvdXQpCit7CisgICAg
VU5VU0VEX1BBUkFNKHN5bmMpOworICAgIFVOVVNFRF9QQVJBTShmbGFncyk7CisgICAgVU5VU0VE
X1BBUkFNKHRpbWVvdXQpOworCisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OndhaXRTeW5jKFBsYXRmb3JtR0xPYmplY3Qgc3luYywgR0NHTGJpdGZpZWxk
IGZsYWdzLCBHQ0dMaW50NjQgdGltZW91dCkKK3sKKyAgICBVTlVTRURfUEFSQU0oc3luYyk7Cisg
ICAgVU5VU0VEX1BBUkFNKGZsYWdzKTsKKyAgICBVTlVTRURfUEFSQU0odGltZW91dCk7Cit9CisK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFN5bmNpdihQbGF0Zm9ybUdMT2JqZWN0
IHN5bmMsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTGludCAqdmFsdWUp
Cit7CisgICAgVU5VU0VEX1BBUkFNKHN5bmMpOworICAgIFVOVVNFRF9QQVJBTShwbmFtZSk7Cisg
ICAgVU5VU0VEX1BBUkFNKGJ1ZlNpemUpOworICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7Cit9CisK
K1BsYXRmb3JtR0xPYmplY3QgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZVRyYW5zZm9y
bUZlZWRiYWNrKCkKK3sKKyAgICByZXR1cm4gMDsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6ZGVsZXRlVHJhbnNmb3JtRmVlZGJhY2soUGxhdGZvcm1HTE9iamVjdCBpZCkKK3sK
KyAgICBVTlVTRURfUEFSQU0oaWQpOworfQorCitHQ0dMYm9vbGVhbiBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6aXNUcmFuc2Zvcm1GZWVkYmFjayhQbGF0Zm9ybUdMT2JqZWN0IGlkKQoreworICAg
IFVOVVNFRF9QQVJBTShpZCk7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmJpbmRUcmFuc2Zvcm1GZWVkYmFjayhHQ0dMZW51bSB0YXJnZXQs
IFBsYXRmb3JtR0xPYmplY3QgaWQpCit7CisgICAgVU5VU0VEX1BBUkFNKHRhcmdldCk7CisgICAg
VU5VU0VEX1BBUkFNKGlkKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YmVn
aW5UcmFuc2Zvcm1GZWVkYmFjayhHQ0dMZW51bSBwcmltaXRpdmVNb2RlKQoreworICAgIFVOVVNF
RF9QQVJBTShwcmltaXRpdmVNb2RlKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6ZW5kVHJhbnNmb3JtRmVlZGJhY2soKQoreworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3Jh
bSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHZhcnlpbmdzLCBHQ0dMZW51bSBidWZmZXJNb2RlKQor
eworICAgIFVOVVNFRF9QQVJBTShwcm9ncmFtKTsKKyAgICBVTlVTRURfUEFSQU0odmFyeWluZ3Mp
OworICAgIFVOVVNFRF9QQVJBTShidWZmZXJNb2RlKTsKK30KKworUGxhdGZvcm1HTE9iamVjdCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nKFBsYXRm
b3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgaW5kZXgpCit7CisgICAgVU5VU0VEX1BBUkFN
KHByb2dyYW0pOworICAgIFVOVVNFRF9QQVJBTShpbmRleCk7CisKKyAgICByZXR1cm4gMDsKK30K
Kwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGF1c2VUcmFuc2Zvcm1GZWVkYmFjaygp
Cit7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc3VtZVRyYW5zZm9ybUZl
ZWRiYWNrKCkKK3sKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YmluZEJ1ZmZl
ckJhc2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgUGxhdGZvcm1HTE9iamVjdCBi
dWZmZXIpCit7CisgICAgVU5VU0VEX1BBUkFNKHRhcmdldCk7CisgICAgVU5VU0VEX1BBUkFNKGlu
ZGV4KTsKKyAgICBVTlVTRURfUEFSQU0oYnVmZmVyKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6YmluZEJ1ZmZlclJhbmdlKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5k
ZXgsIFBsYXRmb3JtR0xPYmplY3QgYnVmZmVyLCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVp
cHRyIHNpemUpCit7CisgICAgVU5VU0VEX1BBUkFNKHRhcmdldCk7CisgICAgVU5VU0VEX1BBUkFN
KGluZGV4KTsKKyAgICBVTlVTRURfUEFSQU0oYnVmZmVyKTsKKyAgICBVTlVTRURfUEFSQU0ob2Zm
c2V0KTsKKyAgICBVTlVTRURfUEFSQU0oc2l6ZSk7Cit9CisKK1ZlY3RvcjxHQ0dMdWludD4gR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1JbmRpY2VzKFBsYXRmb3JtR0xPYmplY3Qg
cHJvZ3JhbSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHVuaWZvcm1OYW1lcykKK3sKKyAgICBVTlVT
RURfUEFSQU0ocHJvZ3JhbSk7CisgICAgVU5VU0VEX1BBUkFNKHVuaWZvcm1OYW1lcyk7CisKKyAg
ICByZXR1cm4geyB9OworfQorCisjaWYgVVNFKE9QRU5HTF8zKSB8fCBVU0UoT1BFTkdMX0VTXzMp
Cit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlmb3JtcyhQbGF0Zm9y
bUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxHQ0dMdWludD4mIHVuaWZvcm1JbmRpY2Vz
LCBHQ0dMZW51bSBwbmFtZSwgVmVjdG9yPEdDR0xpbnQ+JiBwYXJhbXMpCit7CisgICAgQVNTRVJU
KHByb2dyYW0pOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworCisgICAgOjpnbEdldEFjdGl2
ZVVuaWZvcm1zaXYocHJvZ3JhbSwgdW5pZm9ybUluZGljZXMuc2l6ZSgpLCB1bmlmb3JtSW5kaWNl
cy5kYXRhKCksIHBuYW1lLCBwYXJhbXMuZGF0YSgpKTsKK30KKyNlbHNlCit2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlmb3JtcyhQbGF0Zm9ybUdMT2JqZWN0LCBjb25z
dCBWZWN0b3I8R0NHTHVpbnQ+JiwgR0NHTGVudW0sIFZlY3RvcjxHQ0dMaW50PiYpCit7Cit9Cisj
ZW5kaWYKKworR0NHTHVpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1CbG9j
a0luZGV4KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgU3RyaW5nJiB1bmlmb3JtQmxv
Y2tOYW1lKQoreworICAgIFVOVVNFRF9QQVJBTShwcm9ncmFtKTsKKyAgICBVTlVTRURfUEFSQU0o
dW5pZm9ybUJsb2NrTmFtZSk7CisKKyAgICByZXR1cm4gMDsKK30KKwordm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NraXYoUGxhdGZvcm1HTE9iamVjdCBw
cm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xp
bnQqIHBhcmFtcykKK3sKKyAgICBVTlVTRURfUEFSQU0ocHJvZ3JhbSk7CisgICAgVU5VU0VEX1BB
UkFNKHVuaWZvcm1CbG9ja0luZGV4KTsKKyAgICBVTlVTRURfUEFSQU0ocG5hbWUpOworICAgIFVO
VVNFRF9QQVJBTShwYXJhbXMpOworfQorCitTdHJpbmcgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dM
dWludCB1bmlmb3JtQmxvY2tJbmRleCkKK3sKKyAgICBVTlVTRURfUEFSQU0ocHJvZ3JhbSk7Cisg
ICAgVU5VU0VEX1BBUkFNKHVuaWZvcm1CbG9ja0luZGV4KTsKKworICAgIHJldHVybiBlbXB0eVN0
cmluZygpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtQmxvY2tC
aW5kaW5nKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5k
ZXgsIEdDR0x1aW50IHVuaWZvcm1CbG9ja0JpbmRpbmcpCit7CisgICAgVU5VU0VEX1BBUkFNKHBy
b2dyYW0pOworICAgIFVOVVNFRF9QQVJBTSh1bmlmb3JtQmxvY2tJbmRleCk7CisgICAgVU5VU0VE
X1BBUkFNKHVuaWZvcm1CbG9ja0JpbmRpbmcpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp0ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGlu
dCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dM
aW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIHBi
b09mZnNldCkKK3sKKyAgICBVTlVTRURfUEFSQU0odGFyZ2V0KTsKKyAgICBVTlVTRURfUEFSQU0o
bGV2ZWwpOworICAgIFVOVVNFRF9QQVJBTShpbnRlcm5hbGZvcm1hdCk7CisgICAgVU5VU0VEX1BB
UkFNKHdpZHRoKTsKKyAgICBVTlVTRURfUEFSQU0oaGVpZ2h0KTsKKyAgICBVTlVTRURfUEFSQU0o
Ym9yZGVyKTsKKyAgICBVTlVTRURfUEFSQU0oZm9ybWF0KTsKKyAgICBVTlVTRURfUEFSQU0odHlw
ZSk7CisgICAgVU5VU0VEX1BBUkFNKHBib09mZnNldCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBH
Q0dMaW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQs
IEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGNvbnN0IHZv
aWQqIHNyY0RhdGEsIEdDR0x1aW50IHNyY09mZnNldCkKK3sKKyAgICBVTlVTRURfUEFSQU0odGFy
Z2V0KTsKKyAgICBVTlVTRURfUEFSQU0obGV2ZWwpOworICAgIFVOVVNFRF9QQVJBTShpbnRlcm5h
bGZvcm1hdCk7CisgICAgVU5VU0VEX1BBUkFNKHdpZHRoKTsKKyAgICBVTlVTRURfUEFSQU0oaGVp
Z2h0KTsKKyAgICBVTlVTRURfUEFSQU0oYm9yZGVyKTsKKyAgICBVTlVTRURfUEFSQU0oZm9ybWF0
KTsKKyAgICBVTlVTRURfUEFSQU0odHlwZSk7CisgICAgVU5VU0VEX1BBUkFNKHNyY0RhdGEpOwor
ICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp0ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NH
TGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIHBib09m
ZnNldCkKK3sKKyAgICBVTlVTRURfUEFSQU0odGFyZ2V0KTsKKyAgICBVTlVTRURfUEFSQU0obGV2
ZWwpOworICAgIFVOVVNFRF9QQVJBTSh4b2Zmc2V0KTsKKyAgICBVTlVTRURfUEFSQU0oeW9mZnNl
dCk7CisgICAgVU5VU0VEX1BBUkFNKHdpZHRoKTsKKyAgICBVTlVTRURfUEFSQU0oaGVpZ2h0KTsK
KyAgICBVTlVTRURfUEFSQU0oZm9ybWF0KTsKKyAgICBVTlVTRURfUEFSQU0odHlwZSk7CisgICAg
VU5VU0VEX1BBUkFNKHBib09mZnNldCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50
IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQqIHNyY0RhdGEs
IEdDR0x1aW50IHNyY09mZnNldCkKK3sKKyAgICBVTlVTRURfUEFSQU0odGFyZ2V0KTsKKyAgICBV
TlVTRURfUEFSQU0obGV2ZWwpOworICAgIFVOVVNFRF9QQVJBTSh4b2Zmc2V0KTsKKyAgICBVTlVT
RURfUEFSQU0oeW9mZnNldCk7CisgICAgVU5VU0VEX1BBUkFNKHdpZHRoKTsKKyAgICBVTlVTRURf
UEFSQU0oaGVpZ2h0KTsKKyAgICBVTlVTRURfUEFSQU0oZm9ybWF0KTsKKyAgICBVTlVTRURfUEFS
QU0odHlwZSk7CisgICAgVU5VU0VEX1BBUkFNKHNyY0RhdGEpOworICAgIFVOVVNFRF9QQVJBTShz
cmNPZmZzZXQpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjb21wcmVzc2Vk
VGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVy
bmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9y
ZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICBVTlVT
RURfUEFSQU0odGFyZ2V0KTsKKyAgICBVTlVTRURfUEFSQU0obGV2ZWwpOworICAgIFVOVVNFRF9Q
QVJBTShpbnRlcm5hbGZvcm1hdCk7CisgICAgVU5VU0VEX1BBUkFNKHdpZHRoKTsKKyAgICBVTlVT
RURfUEFSQU0oaGVpZ2h0KTsKKyAgICBVTlVTRURfUEFSQU0oYm9yZGVyKTsKKyAgICBVTlVTRURf
UEFSQU0oaW1hZ2VTaXplKTsKKyAgICBVTlVTRURfUEFSQU0ob2Zmc2V0KTsKK30KKwordm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y29tcHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgY29uc3Qgdm9pZCogc3JjRGF0
YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGhPdmVycmlkZSkKK3sKKyAg
ICBVTlVTRURfUEFSQU0odGFyZ2V0KTsKKyAgICBVTlVTRURfUEFSQU0obGV2ZWwpOworICAgIFVO
VVNFRF9QQVJBTShpbnRlcm5hbGZvcm1hdCk7CisgICAgVU5VU0VEX1BBUkFNKHdpZHRoKTsKKyAg
ICBVTlVTRURfUEFSQU0oaGVpZ2h0KTsKKyAgICBVTlVTRURfUEFSQU0oYm9yZGVyKTsKKyAgICBV
TlVTRURfUEFSQU0oc3JjRGF0YSk7CisgICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7CisgICAg
VU5VU0VEX1BBUkFNKHNyY0xlbmd0aE92ZXJyaWRlKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
aW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNp
emUsIEdDR0xpbnRwdHIgb2Zmc2V0KQoreworICAgIFVOVVNFRF9QQVJBTSh0YXJnZXQpOworICAg
IFVOVVNFRF9QQVJBTShsZXZlbCk7CisgICAgVU5VU0VEX1BBUkFNKHhvZmZzZXQpOworICAgIFVO
VVNFRF9QQVJBTSh5b2Zmc2V0KTsKKyAgICBVTlVTRURfUEFSQU0od2lkdGgpOworICAgIFVOVVNF
RF9QQVJBTShoZWlnaHQpOworICAgIFVOVVNFRF9QQVJBTShmb3JtYXQpOworICAgIFVOVVNFRF9Q
QVJBTShpbWFnZVNpemUpOworICAgIFVOVVNFRF9QQVJBTShvZmZzZXQpOworfQorCit2b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0
YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgY29uc3Qg
dm9pZCogc3JjRGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGhPdmVy
cmlkZSkKK3sKKyAgICBVTlVTRURfUEFSQU0odGFyZ2V0KTsKKyAgICBVTlVTRURfUEFSQU0obGV2
ZWwpOworICAgIFVOVVNFRF9QQVJBTSh4b2Zmc2V0KTsKKyAgICBVTlVTRURfUEFSQU0oeW9mZnNl
dCk7CisgICAgVU5VU0VEX1BBUkFNKHdpZHRoKTsKKyAgICBVTlVTRURfUEFSQU0oaGVpZ2h0KTsK
KyAgICBVTlVTRURfUEFSQU0oZm9ybWF0KTsKKyAgICBVTlVTRURfUEFSQU0oc3JjRGF0YSk7Cisg
ICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7CisgICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aE92
ZXJyaWRlKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTFmdihH
Q0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNl
dCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQoreworICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7Cisg
ICAgVU5VU0VEX1BBUkFNKGRhdGEpOworICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOworICAg
IFVOVVNFRF9QQVJBTShzcmNMZW5ndGgpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjp1bmlmb3JtMmZ2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwg
R0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit7CisgICAgVU5VU0VEX1BB
UkFNKGxvY2F0aW9uKTsKKyAgICBVTlVTRURfUEFSQU0oZGF0YSk7CisgICAgVU5VU0VEX1BBUkFN
KHNyY09mZnNldCk7CisgICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7Cit9CisKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0zZnYoR0NHTGludCBsb2NhdGlvbiwgY29uc3Qg
R0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkK
K3sKKyAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOworICAgIFVOVVNFRF9QQVJBTShkYXRhKTsK
KyAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsKKyAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3Ro
KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTRmdihHQ0dMaW50
IGxvY2F0aW9uLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NH
THVpbnQgc3JjTGVuZ3RoKQoreworICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7CisgICAgVU5V
U0VEX1BBUkFNKGRhdGEpOworICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOworICAgIFVOVVNF
RF9QQVJBTShzcmNMZW5ndGgpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1
bmlmb3JtMWl2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xpbnQqIGRhdGEsIEdDR0x1aW50
IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQoreworICAgIFVOVVNFRF9QQVJBTShsb2Nh
dGlvbik7CisgICAgVU5VU0VEX1BBUkFNKGRhdGEpOworICAgIFVOVVNFRF9QQVJBTShzcmNPZmZz
ZXQpOworICAgIFVOVVNFRF9QQVJBTShzcmNMZW5ndGgpOworfQorCit2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjp1bmlmb3JtMml2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xpbnQq
IGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQoreworICAgIFVO
VVNFRF9QQVJBTShsb2NhdGlvbik7CisgICAgVU5VU0VEX1BBUkFNKGRhdGEpOworICAgIFVOVVNF
RF9QQVJBTShzcmNPZmZzZXQpOworICAgIFVOVVNFRF9QQVJBTShzcmNMZW5ndGgpOworfQorCit2
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtM2l2KEdDR0xpbnQgbG9jYXRpb24s
IGNvbnN0IEdDR0xpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVu
Z3RoKQoreworICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7CisgICAgVU5VU0VEX1BBUkFNKGRh
dGEpOworICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOworICAgIFVOVVNFRF9QQVJBTShzcmNM
ZW5ndGgpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtNGl2KEdD
R0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwg
R0NHTHVpbnQgc3JjTGVuZ3RoKQoreworICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7CisgICAg
VU5VU0VEX1BBUkFNKGRhdGEpOworICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOworICAgIFVO
VVNFRF9QQVJBTShzcmNMZW5ndGgpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojp1bmlmb3JtTWF0cml4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9z
ZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNy
Y0xlbmd0aCkKK3sKKyAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOworICAgIFVOVVNFRF9QQVJB
TSh0cmFuc3Bvc2UpOworICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKKyAgICBVTlVTRURfUEFSQU0o
c3JjT2Zmc2V0KTsKKyAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsKK30KKwordm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDNmdihHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3Jj
T2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit7CisgICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9u
KTsKKyAgICBVTlVTRURfUEFSQU0odHJhbnNwb3NlKTsKKyAgICBVTlVTRURfUEFSQU0oZGF0YSk7
CisgICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7CisgICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0
aCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXg0ZnYo
R0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQq
IGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQoreworICAgIFVO
VVNFRF9QQVJBTShsb2NhdGlvbik7CisgICAgVU5VU0VEX1BBUkFNKHRyYW5zcG9zZSk7CisgICAg
VU5VU0VEX1BBUkFNKGRhdGEpOworICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOworICAgIFVO
VVNFRF9QQVJBTShzcmNMZW5ndGgpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpyZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBv
ZmZzZXQpCit7CisgICAgVU5VU0VEX1BBUkFNKHgpOworICAgIFVOVVNFRF9QQVJBTSh5KTsKKyAg
ICBVTlVTRURfUEFSQU0od2lkdGgpOworICAgIFVOVVNFRF9QQVJBTShoZWlnaHQpOworICAgIFVO
VVNFRF9QQVJBTShmb3JtYXQpOworICAgIFVOVVNFRF9QQVJBTSh0eXBlKTsKKyAgICBVTlVTRURf
UEFSQU0ob2Zmc2V0KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBp
eGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQqIGRzdERhdGEs
IEdDR0x1aW50IGRzdE9mZnNldCkKK3sKKyAgICBVTlVTRURfUEFSQU0oeCk7CisgICAgVU5VU0VE
X1BBUkFNKHkpOworICAgIFVOVVNFRF9QQVJBTSh3aWR0aCk7CisgICAgVU5VU0VEX1BBUkFNKGhl
aWdodCk7CisgICAgVU5VU0VEX1BBUkFNKGZvcm1hdCk7CisgICAgVU5VU0VEX1BBUkFNKHR5cGUp
OworICAgIFVOVVNFRF9QQVJBTShkc3REYXRhKTsKKyAgICBVTlVTRURfUEFSQU0oZHN0T2Zmc2V0
KTsKK30KKworCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoR1JBUEhJQ1NfQ09OVEVYVF9HTCkgJiYg
KFVTRShPUEVOR0wpIHx8IFVTRShPUEVOR0xfRVMpKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>